tx · 4JUY7BUs9ztdJthkPXiMsMDdWGhBfiDsCWKbcSHjNbVa

3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE:  -0.02900000 Waves

2022.09.29 15:14 [2250383] smart account 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE > SELF 0.00000000 Waves

{ "type": 13, "id": "4JUY7BUs9ztdJthkPXiMsMDdWGhBfiDsCWKbcSHjNbVa", "fee": 2900000, "feeAssetId": null, "timestamp": 1664453769122, "version": 1, "sender": "3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE", "senderPublicKey": "G349Uq3FTox7dRNLeAfAQeoACvwZ9iEnVSaHcEYn6j8J", "proofs": [ "21p5NfpwMv2siKZyQh7EmsCt9maydxrYNs6rSWJ1678GSqH2x26dz2mbCk61S4T94z2GYcjNvEXxacJNbn3YtFUJ" ], "script": "base64:BgJtCAISBAoCCAESABIDCgEBEgASABIAEgMKAQgSAwoBCBIDCgEIEgUKAwEBARIFCgMBAQESABIDCgEIEgcKBQgICAgIEgoKCAgICAgICAgIEgoKCAgICAgICAgIEgoKCAgICAgICAgIEgMKAQgSAE8AA1NFUAICX18ABVNDQUxFAOgHAAVNVUxUOACAwtcvAAp6ZXJvQmlnSW50CQC2AgEAAAAUcHJvY2Vzc2luZ1N0YWdlVG90YWwAAAAVcHJvY2Vzc2luZ1N0YWdlU2hhcmVzAAEBDmdldE51bWJlckJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABD2dldE51bWJlck9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEOZ2V0U3RyaW5nQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkCAAEPZ2V0U3RyaW5nT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQNrZXkJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQNhYnMBA3ZhbAMJAGYCAAAFA3ZhbAkBAS0BBQN2YWwFA3ZhbAEJYWJzQmlnSW50AQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAALa2V5TWF4RGVwdGgCDCVzX19tYXhEZXB0aAAPbWF4RGVwdGhEZWZhdWx0AB4ACG1heERlcHRoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleU1heERlcHRoBQ9tYXhEZXB0aERlZmF1bHQBEWtleUZhY3RvcnlBZGRyZXNzAAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwARZmFjdG9yeUFkZHJlc3NTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQERa2V5RmFjdG9yeUFkZHJlc3MAAA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEWZhY3RvcnlBZGRyZXNzU3RyARJrZXlFbWlzc2lvbkFkZHJlc3MAAh0lcyVzX19jb25maWdfX2VtaXNzaW9uQWRkcmVzcwETa2V5TnVtVG9Vc2VyTWFwcGluZwEDbnVtCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICB21hcHBpbmcJAMwIAgIIbnVtMnVzZXIJAMwIAgkApAMBBQNudW0FA25pbAUDU0VQABZrZXlSZWZlcnJhbFByb2dyYW1OYW1lCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAgtwcm9ncmFtTmFtZQUDbmlsBQNTRVAAGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0AgZ3eGxvY2sAE3JlZmVycmFsUHJvZ3JhbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZQUacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQAF2tleVJlZmVycmFsTWluR1d4QW1vdW50CQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAgxtaW5HV3hBbW91bnQFA25pbAUDU0VQABtyZWZlcnJhbE1pbkdXeEFtb3VudERlZmF1bHQJAGgCAPQDBQVNVUxUOAAUcmVmZXJyYWxNaW5HV3hBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUXa2V5UmVmZXJyYWxNaW5HV3hBbW91bnQFG3JlZmVycmFsTWluR1d4QW1vdW50RGVmYXVsdAAZa2V5UmVmZXJyZXJSZXdhcmRQZXJtaWxsZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgIWcmVmZXJyZXJSZXdhcmRQZXJtaWxsZQUDbmlsBQNTRVAAHXJlZmVycmVyUmV3YXJkUGVybWlsbGVEZWZhdWx0ADIAFnJlZmVycmVyUmV3YXJkUGVybWlsbGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5UmVmZXJyZXJSZXdhcmRQZXJtaWxsZQUdcmVmZXJyZXJSZXdhcmRQZXJtaWxsZURlZmF1bHQAGWtleVJlZmVycmFsUmV3YXJkUGVybWlsbGUJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICFnJlZmVycmFsUmV3YXJkUGVybWlsbGUFA25pbAUDU0VQAB1yZWZlcnJhbFJld2FyZFBlcm1pbGxlRGVmYXVsdAAyABZyZWZlcnJhbFJld2FyZFBlcm1pbGxlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFGWtleVJlZmVycmFsUmV3YXJkUGVybWlsbGUFHXJlZmVycmFsUmV3YXJkUGVybWlsbGVEZWZhdWx0AQtrZXlSZWZlcnJlcgEPcmVmZXJyYWxBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCHJlZmVycmVyCQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwFA1NFUAEUa2V5VW5jbGFpbWVkUmVmZXJyYWwCC3Byb2dyYW1OYW1lDmNsYWltZXJBZGRyZXNzCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIRdW5jbGFpbWVkUmVmZXJyYWwJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUOY2xhaW1lckFkZHJlc3MFA25pbAUDU0VQABJlbWlzc2lvbkFkZHJlc3NTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQESa2V5RW1pc3Npb25BZGRyZXNzAAAQZW1pc3Npb25Db250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUSZW1pc3Npb25BZGRyZXNzU3RyAA1JZHhDZmdBc3NldElkAAEAFklkeENmZ1BhY2VtYWtlckFkZHJlc3MAAgAWSWR4Q2ZnQm9vc3RpbmdDb250cmFjdAADAA5JZHhDZmdNYXhEZXB0aAAEAQlrZXlDb25maWcAAgolc19fY29uZmlnARVyZWFkQ29uZmlnQXJyYXlPckZhaWwACQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEJa2V5Q29uZmlnAAUDU0VQAQxmb3JtYXRDb25maWcEDHd4QXNzZXRJZFN0chptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0chpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cghtYXhEZXB0aAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAIFDHd4QXNzZXRJZFN0cgkAzAgCBRptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0cgkAzAgCBRpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgkAzAgCCQCkAwEFCG1heERlcHRoBQNuaWwFA1NFUAEWYm9vc3RpbmdDb250cmFjdE9yRmFpbAAECGNmZ0FycmF5CQEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUIY2ZnQXJyYXkFFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QCKGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm90IGRlZmluZWQBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQAAiglcyVzX19nd3hSZXdhcmRFbWlzc2lvblBhcnRfX3N0YXJ0SGVpZ2h0AQ1rZXlVc2Vyc0NvdW50AAIPJXNfX25leHRVc2VyTnVtARZrZXlSYXRlUGVyQmxvY2tDdXJyZW50AAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50ARRrZXlQb29sV2VpZ2h0VmlydHVhbAACICVzJXNfX3Bvb2xXZWlnaHRfX0dXWHZpcnR1YWxQT09MARRrZXlOZXh0UHJvY2Vzc2VkVXNlcgACFSVzX19uZXh0UHJvY2Vzc2VkVXNlcgEPa2V5TGF0ZXN0UGVyaW9kAAIQJXNfX2xhdGVzdFBlcmlvZAENa2V5TmV4dFBlcmlvZAACDiVzX19uZXh0UGVyaW9kARJrZXlQcm9jZXNzaW5nU3RhZ2UAAhMlc19fcHJvY2Vzc2luZ1N0YWdlARZrZXlOZXh0UHJvY2Vzc2VkUGVyaW9kAAIXJXNfX25leHRQcm9jZXNzZWRQZXJpb2QBEGtleVVzZXJVbmNsYWltZWQBCXVzZXJJbmRleAkAuQkCCQDMCAICBCVzJWQJAMwIAgINdXNlclVuY2xhaW1lZAkAzAgCCQCkAwEFCXVzZXJJbmRleAUDbmlsBQNTRVABG2tleU5leHRVbmxhaW1lZFBlcmlvZE9mVXNlcgEJdXNlckluZGV4CQC5CQIJAMwIAgIXJXMlZF9fbmV4dENsYWltZWRQZXJpb2QJAMwIAgkApAMBBQl1c2VySW5kZXgFA25pbAUDU0VQARxrZXlMYXN0UHJvY2Vzc2VkUGVyaW9kT2ZVc2VyAQl1c2VySW5kZXgJALkJAgkAzAgCAhklcyVkX19sYXN0UHJvY2Vzc2VkUGVyaW9kCQDMCAIJAKQDAQUJdXNlckluZGV4BQNuaWwFA1NFUAESa2V5SGVpZ2h0Rm9yUGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAholcyVkX19zdGFydEhlaWdodEZvclBlcmlvZAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABHWtleUF1eEVtaXNzaW9uUmV3YXJkRm9yUGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAhclcyVkX19hdXhFbWlzc2lvblJld2FyZAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABF2tleVRvdGFsQW1vdW50Rm9yUGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAholcyVkX190b3RhbEFtb3VudEZvclBlcmlvZAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABEWtleUxhc3RQYXlvdXRJbmZvAAISJXNfX2xhc3RQYXlvdXRJbmZvARBQZXJpb2RQYXlvdXRJbmZvAwZwZXJpb2QNbWF0Y2hlclJld2FyZA5lbWlzc2lvblJld2FyZAkAuQkCCQDMCAICBiVkJWQlZAkAzAgCCQCkAwEFBnBlcmlvZAkAzAgCCQCkAwEFDW1hdGNoZXJSZXdhcmQJAMwIAgkApAMBBQ5lbWlzc2lvblJld2FyZAUDbmlsBQNTRVABFGtleVBheW91dEhpc3RvcnlJbmZvAQZwZXJpb2QJALkJAgkAzAgCAhglcyVzJWRfX3BheW91dHNfX2hpc3RvcnkJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARdrZXlUb3RhbFdlaWdodEZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIaJXMlZF9fdG90YWxXZWlnaHRGb3JQZXJpb2QJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARZrZXlVc2VyS1ZhbHVlRm9yUGVyaW9kAgZwZXJpb2QJdXNlckluZGV4CQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQl1c2VySW5kZXgJAMwIAgIBawkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABFmtleVVzZXJCVmFsdWVGb3JQZXJpb2QCBnBlcmlvZAl1c2VySW5kZXgJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCCQCkAwEFCXVzZXJJbmRleAkAzAgCAgFiCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEWa2V5VXNlcldlaWdodEZvclBlcmlvZAIGcGVyaW9kCXVzZXJJbmRleAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIJAKQDAQUJdXNlckluZGV4CQDMCAICBndlaWdodAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwAJALkJAgkAzAgCAgQlcyVzCQDMCAICBmNvbmZpZwkAzAgCAhhyZWZlcnJhbHNDb250cmFjdEFkZHJlc3MFA25pbAUDU0VQAB5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwBCQEba2V5UmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzAAEMSGlzdG9yeUVudHJ5BAR0eXBlBHVzZXIGYW1vdW50AWkECmhpc3RvcnlLRVkJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQR0eXBlCQDMCAIFBHVzZXIJAMwIAgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFA1NFUAQLaGlzdG9yeURBVEEJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUGYW1vdW50BQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgUKaGlzdG9yeUtFWQULaGlzdG9yeURBVEEBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkEAnBkCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yAQ5jYWxjVXNlcldlaWdodAQXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MPaGVpZ2h0Rm9yUGVyaW9kBnBlcmlvZAl1c2VySW5kZXgEBWtMYXN0CQEca2V5TGFzdFByb2Nlc3NlZFBlcmlvZE9mVXNlcgEFCXVzZXJJbmRleAQEa0tleQkBFmtleVVzZXJLVmFsdWVGb3JQZXJpb2QCBQZwZXJpb2QFCXVzZXJJbmRleAQEa1JhdwkAmggCBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwUEa0tleQQLa1VzZXJXZWlnaHQJARZrZXlVc2VyV2VpZ2h0Rm9yUGVyaW9kAgUGcGVyaW9kBQl1c2VySW5kZXgDCQEJaXNEZWZpbmVkAQUEa1JhdwQBawkBBXZhbHVlAQUEa1JhdwQBYgkBBXZhbHVlAQkAmggCBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBFmtleVVzZXJCVmFsdWVGb3JQZXJpb2QCBQZwZXJpb2QFCXVzZXJJbmRleAQBdwkAZAIJAGgCBQFrBQ9oZWlnaHRGb3JQZXJpb2QFAWIDCQBmAgUBdwAACQCUCgIJAGkCBQF3BQVTQ0FMRQkAzAgCCQEMSW50ZWdlckVudHJ5AgUFa0xhc3QFBnBlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgULa1VzZXJXZWlnaHQFAXcFA25pbAkAlAoCAAAFA25pbAQBcAkAmggCBQR0aGlzBQVrTGFzdAMDCQEJaXNEZWZpbmVkAQUBcAkAZwIFBnBlcmlvZAkBBXZhbHVlAQUBcAcEAnB2CQEFdmFsdWUBBQFwBAFrCQEFdmFsdWUBCQCaCAIFF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEWa2V5VXNlcktWYWx1ZUZvclBlcmlvZAIFAnB2BQl1c2VySW5kZXgEAWIJAQV2YWx1ZQEJAJoIAgUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJARZrZXlVc2VyQlZhbHVlRm9yUGVyaW9kAgUCcHYFCXVzZXJJbmRleAQBdwkAZAIJAGgCBQFrBQ9oZWlnaHRGb3JQZXJpb2QFAWIDCQBmAgUBdwAACQCUCgIJAGkCBQF3BQVTQ0FMRQkAzAgCCQEMSW50ZWdlckVudHJ5AgULa1VzZXJXZWlnaHQFAXcFA25pbAkAlAoCAAAFA25pbAkAlAoCAAAFA25pbAEWY2FsY1VzZXJXZWlnaHRGb3JDbGFpbQQXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MPaGVpZ2h0Rm9yUGVyaW9kBnBlcmlvZAl1c2VySW5kZXgEC2tVc2VyV2VpZ2h0CQEWa2V5VXNlcldlaWdodEZvclBlcmlvZAIFBnBlcmlvZAUJdXNlckluZGV4BBB1c2VyV2VpZ2h0T3JVbml0CQCfCAEFC2tVc2VyV2VpZ2h0BAckbWF0Y2gwBRB1c2VyV2VpZ2h0T3JVbml0AwkAAQIFByRtYXRjaDACBFVuaXQAAAMJAAECBQckbWF0Y2gwAgNJbnQEAXcFByRtYXRjaDAJAGkCBQF3BQVTQ0FMRQkAAgECC01hdGNoIGVycm9yARVnZXRVc2VySW5kZXhCeUFkZHJlc3MCGmJvb3N0aW5nQ29udHJhY3RBZGRyZXNzU3RyC3VzZXJBZGRyZXNzBANrZXkJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIHbWFwcGluZwkAzAgCAgh1c2VyMm51bQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVAJAQ1wYXJzZUludFZhbHVlAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQdBZGRyZXNzAQkA2QQBBRpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgUDa2V5CQCsAgIJAKwCAgkArAICAg1Vc2VyIGFkZHJlc3MgBQt1c2VyQWRkcmVzcwItIGlzIG5vdCBmb3VuZCBpbiBib29zdGluZyBjb250cmFjdCBkYXRhLCBrZXk9BQNrZXkBCm5leHRQZXJpb2QACQEOZ2V0TnVtYmVyQnlLZXkBCQENa2V5TmV4dFBlcmlvZAABEWNvbW1vbkNsYWltUmV3YXJkAQt1c2VyQWRkcmVzcwQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwABAd1c2VySWR4CQEVZ2V0VXNlckluZGV4QnlBZGRyZXNzAgkAkQMCBQhjZmdBcnJheQUWSWR4Q2ZnQm9vc3RpbmdDb250cmFjdAULdXNlckFkZHJlc3MEE3VzZXJVbmNsYWltZWRPcHRpb24JAJ8IAQkBEGtleVVzZXJVbmNsYWltZWQBBQd1c2VySWR4BAckbWF0Y2gwBRN1c2VyVW5jbGFpbWVkT3B0aW9uAwkAAQIFByRtYXRjaDACBFVuaXQJAJQKAgAABQNuaWwDCQABAgUHJG1hdGNoMAIDSW50BAF1BQckbWF0Y2gwCQCUCgIFAXUJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlVc2VyVW5jbGFpbWVkAQUHdXNlcklkeAAABQNuaWwJAAIBAgtNYXRjaCBlcnJvchMBaQEWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQILdXNlckFkZHJlc3MOZ1d4QW1vdW50U3RhcnQECHJlZmVycmVyCQCdCAIFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAkBC2tleVJlZmVycmVyAQULdXNlckFkZHJlc3MEEWFjdGl2ZVJlZmVycmFsSW52AwkAAAIFCHJlZmVycmVyBQR1bml0BQR1bml0CQD8BwQFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCBRNyZWZlcnJhbFByb2dyYW1OYW1lCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJAGcCBQ5nV3hBbW91bnRTdGFydAUUcmVmZXJyYWxNaW5HV3hBbW91bnQFA25pbAUDbmlsAwkAAAIFEWFjdGl2ZVJlZmVycmFsSW52BRFhY3RpdmVSZWZlcnJhbEludgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOZmluYWxpemVIZWxwZXIABA9wcm9jZXNzaW5nU3RhZ2UJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVByb2Nlc3NpbmdTdGFnZQAFFHByb2Nlc3NpbmdTdGFnZVRvdGFsBA1jdXJyZW50UGVyaW9kCQEOZ2V0TnVtYmVyQnlLZXkBCQEWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZAAEC2N1cnJlbnRVc2VyCQEOZ2V0TnVtYmVyQnlLZXkBCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIABAxsYXRlc3RQZXJpb2QJAQ5nZXROdW1iZXJCeUtleQEJAQ9rZXlMYXRlc3RQZXJpb2QABAp1c2Vyc0NvdW50CQELdmFsdWVPckVsc2UCCQCaCAIJARZib29zdGluZ0NvbnRyYWN0T3JGYWlsAAkBDWtleVVzZXJzQ291bnQAAAAEDnRvdGFsV2VpZ2h0S2V5CQEXa2V5VG90YWxXZWlnaHRGb3JQZXJpb2QBBQ1jdXJyZW50UGVyaW9kBAt0b3RhbFdlaWdodAkBDmdldE51bWJlckJ5S2V5AQkBF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kAQUNY3VycmVudFBlcmlvZAQPaGVpZ2h0Rm9yUGVyaW9kCQEOZ2V0TnVtYmVyQnlLZXkBCQESa2V5SGVpZ2h0Rm9yUGVyaW9kAQUNY3VycmVudFBlcmlvZAMJAGYCBQ1jdXJyZW50UGVyaW9kBQxsYXRlc3RQZXJpb2QJAJQKAgUDbmlsBwMJAAACBQ9wcm9jZXNzaW5nU3RhZ2UFFHByb2Nlc3NpbmdTdGFnZVRvdGFsBA0kdDAxMjA4NDEyMjAwCQEOY2FsY1VzZXJXZWlnaHQECQEWYm9vc3RpbmdDb250cmFjdE9yRmFpbAAFD2hlaWdodEZvclBlcmlvZAUNY3VycmVudFBlcmlvZAULY3VycmVudFVzZXIECnVzZXJXZWlnaHQIBQ0kdDAxMjA4NDEyMjAwAl8xBAt1c2VyQWN0aW9ucwgFDSR0MDEyMDg0MTIyMDACXzIEDnRvdGFsV2VpZ2h0TmV3CQBkAgULdG90YWxXZWlnaHQFCnVzZXJXZWlnaHQEEXByb2Nlc3NpbmdBY3Rpb25zAwkAZgIJAGUCBQp1c2Vyc0NvdW50AAEFC2N1cnJlbnRVc2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIACQBkAgULY3VycmVudFVzZXIAAQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5UHJvY2Vzc2luZ1N0YWdlAAUVcHJvY2Vzc2luZ1N0YWdlU2hhcmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIAAAAFA25pbAkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUOdG90YWxXZWlnaHRLZXkFDnRvdGFsV2VpZ2h0TmV3BQNuaWwFEXByb2Nlc3NpbmdBY3Rpb25zBQt1c2VyQWN0aW9ucwYDCQAAAgUPcHJvY2Vzc2luZ1N0YWdlBRVwcm9jZXNzaW5nU3RhZ2VTaGFyZXMECnVzZXJXZWlnaHQJARZjYWxjVXNlcldlaWdodEZvckNsYWltBAkBFmJvb3N0aW5nQ29udHJhY3RPckZhaWwABQ9oZWlnaHRGb3JQZXJpb2QFDWN1cnJlbnRQZXJpb2QFC2N1cnJlbnRVc2VyBBp1c2VyQW1vdW50TWF0Y2hlckZvclBlcmlvZAkAawMJAQ5nZXROdW1iZXJCeUtleQEJARdrZXlUb3RhbEFtb3VudEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QFCnVzZXJXZWlnaHQFC3RvdGFsV2VpZ2h0BBt1c2VyQW1vdW50RW1pc3Npb25Gb3JQZXJpb2QJAGsDCQEOZ2V0TnVtYmVyQnlLZXkBCQEda2V5QXV4RW1pc3Npb25SZXdhcmRGb3JQZXJpb2QBBQ1jdXJyZW50UGVyaW9kBQp1c2VyV2VpZ2h0BQt0b3RhbFdlaWdodAQPdXNlclRvdGFsQW1vdW50CQBkAgUbdXNlckFtb3VudEVtaXNzaW9uRm9yUGVyaW9kBRp1c2VyQW1vdW50TWF0Y2hlckZvclBlcmlvZAQTdXNlclVuY2xhaW1lZE9wdGlvbgkAnwgBCQEQa2V5VXNlclVuY2xhaW1lZAEFC2N1cnJlbnRVc2VyBAt1c2VyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNTMpAgkBFmJvb3N0aW5nQ29udHJhY3RPckZhaWwACQETa2V5TnVtVG9Vc2VyTWFwcGluZwEFC2N1cnJlbnRVc2VyBAhyZWZlcnJlcgkAnQgCBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwJAQtrZXlSZWZlcnJlcgEFC3VzZXJBZGRyZXNzBBFhY3RpdmVSZWZlcnJhbEludgMJAAACBQhyZWZlcnJlcgUEdW5pdAUEdW5pdAkA/AcEBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQBnAgUKdXNlcldlaWdodAUUcmVmZXJyYWxNaW5HV3hBbW91bnQFA25pbAUDbmlsAwkAAAIFEWFjdGl2ZVJlZmVycmFsSW52BRFhY3RpdmVSZWZlcnJhbEludgQLcmVmZXJyYWxJbnYDAwkAAAIFCHJlZmVycmVyBQR1bml0BgkAZgIFFHJlZmVycmFsTWluR1d4QW1vdW50BQp1c2VyV2VpZ2h0BQR1bml0BA5yZWZlcnJlclJld2FyZAkAawMFD3VzZXJUb3RhbEFtb3VudAUWcmVmZXJyZXJSZXdhcmRQZXJtaWxsZQUFU0NBTEUEDnJlZmVycmFsUmV3YXJkCQBrAwUPdXNlclRvdGFsQW1vdW50BRZyZWZlcnJhbFJld2FyZFBlcm1pbGxlBQVTQ0FMRQkA/AcEBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwCDGluY1VuY2xhaW1lZAkAzAgCBRNyZWZlcnJhbFByb2dyYW1OYW1lCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFDnJlZmVycmVyUmV3YXJkCQDMCAIFDnJlZmVycmFsUmV3YXJkBQNuaWwFA25pbAMJAAACBQtyZWZlcnJhbEludgULcmVmZXJyYWxJbnYEEHVuY2xhaW1lZEFjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlVc2VyVW5jbGFpbWVkAQULY3VycmVudFVzZXIJAGQCCQELdmFsdWVPckVsc2UCBRN1c2VyVW5jbGFpbWVkT3B0aW9uAAAFD3VzZXJUb3RhbEFtb3VudAUDbmlsBBFwcm9jZXNzaW5nQWN0aW9ucwMJAGYCCQBlAgUKdXNlcnNDb3VudAABBQtjdXJyZW50VXNlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleU5leHRQcm9jZXNzZWRVc2VyAAkAZAIFC2N1cnJlbnRVc2VyAAEFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleU5leHRQcm9jZXNzZWRQZXJpb2QACQBkAgUNY3VycmVudFBlcmlvZAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIAAAAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleVByb2Nlc3NpbmdTdGFnZQAFA25pbAkAlAoCCQDOCAIFEHVuY2xhaW1lZEFjdGlvbnMFEXByb2Nlc3NpbmdBY3Rpb25zBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECGGludmFsaWQgcHJvY2Vzc2luZyBzdGFnZQFpAQ9maW5hbGl6ZVdyYXBwZXIBB2NvdW50ZXIEBnJlc3VsdAoAAUAJAPwHBAUEdGhpcwIOZmluYWxpemVIZWxwZXIFA25pbAUDbmlsAwkAAQIFAUACB0Jvb2xlYW4FAUAJAAIBCQCsAgIJAAMBCQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQZyZXN1bHQFBnJlc3VsdAMJAQEhAQUGcmVzdWx0AwkAAAIFB2NvdW50ZXIFCG1heERlcHRoCQACAQISTm90aGluZyB0byBwcm9jZXNzCQCUCgIFA25pbAUEdW5pdAMJAGYCBQdjb3VudGVyAAAJAJQKAgUDbmlsCQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCCQBlAgUHY291bnRlcgABBQNuaWwFA25pbAkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEdcHJvY2Vzc1BlbmRpbmdQZXJpb2RzQW5kVXNlcnMACQCUCgIFA25pbAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgUIbWF4RGVwdGgFA25pbAUDbmlsAWkBB2RlcG9zaXQABAhjZmdBcnJheQkBFXJlYWRDb25maWdBcnJheU9yRmFpbAADCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQkA2QQBCQCRAwIFCGNmZ0FycmF5BRZJZHhDZmdQYWNlbWFrZXJBZGRyZXNzCQACAQIUV3JvbmcgY2FsbGVyIGFkZHJlc3MEB2Fzc2V0SWQJAQV2YWx1ZQEICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMJAQIhPQIFB2Fzc2V0SWQJANkEAQkAkQMCBQhjZmdBcnJheQUNSWR4Q2ZnQXNzZXRJZAkAAgECE1dyb25nIHBheW1lbnQgYXNzZXQEBnBlcmlvZAkBCm5leHRQZXJpb2QABAZkZWx0YUgJAGUCBQZoZWlnaHQJAQ9nZXROdW1iZXJPckZhaWwBCQEfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodAAEDGVtaXNzaW9uUmF0ZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFEGVtaXNzaW9uQ29udHJhY3QJARZrZXlSYXRlUGVyQmxvY2tDdXJyZW50AAkArAICCQCsAgICHG1hbmRhdG9yeSBlbWlzc2lvbl9jb250cmFjdC4JARZrZXlSYXRlUGVyQmxvY2tDdXJyZW50AAIPIGlzIG5vdCBkZWZpbmVkBAZ3ZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ9mYWN0b3J5Q29udHJhY3QJARRrZXlQb29sV2VpZ2h0VmlydHVhbAAJAKwCAgkArAICAhttYW5kYXRvcnkgZmFjdG9yeV9jb250cmFjdC4JARRrZXlQb29sV2VpZ2h0VmlydHVhbAACDyBpcyBub3QgZGVmaW5lZAQJYXV4QW1vdW50CQBrAwkAaAIFBmRlbHRhSAUGd2VpZ2h0BQxlbWlzc2lvblJhdGUFBU1VTFQ4BAJlbQkA/AcEBRBlbWlzc2lvbkNvbnRyYWN0AgRlbWl0CQDMCAIFCWF1eEFtb3VudAUDbmlsBQNuaWwDCQAAAgUCZW0FAmVtBAttYXRjaGVyUGFydAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECnBheW91dEluZm8JARBQZXJpb2RQYXlvdXRJbmZvAwUGcGVyaW9kBQttYXRjaGVyUGFydAUJYXV4QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5TGF0ZXN0UGVyaW9kAAUGcGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5SGVpZ2h0Rm9yUGVyaW9kAQUGcGVyaW9kBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZAEFBnBlcmlvZAUJYXV4QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodAAFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleVRvdGFsQW1vdW50Rm9yUGVyaW9kAQUGcGVyaW9kBQttYXRjaGVyUGFydAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleU5leHRQZXJpb2QACQBkAgUGcGVyaW9kAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RQYXlvdXRJbmZvAAUKcGF5b3V0SW5mbwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5UGF5b3V0SGlzdG9yeUluZm8BBQZwZXJpb2QFCnBheW91dEluZm8FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtjbGFpbVJld2FyZAAECGNmZ0FycmF5CQEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDSR0MDE3NTQyMTc1OTIJARFjb21tb25DbGFpbVJld2FyZAEFB2FkZHJlc3MEBmFtb3VudAgFDSR0MDE3NTQyMTc1OTICXzEEB2FjdGlvbnMIBQ0kdDAxNzU0MjE3NTkyAl8yBAtjaGVja0Ftb3VudAMJAGYCBQZhbW91bnQAAAYJAAIBAhBOb3RoaW5nIHRvIGNsYWltAwkAAAIFC2NoZWNrQW1vdW50BQtjaGVja0Ftb3VudAQSYW1vdW50RnJvbUVtaXNzaW9uAAAED2NsYWltZWRSZWZlcnJhbAoAAUAJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAgVjbGFpbQkAzAgCBRNyZWZlcnJhbFByb2dyYW1OYW1lBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBCQD8BwQFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAIFY2xhaW0JAMwIAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQLdG90YWxBbW91bnQJAGQCBQZhbW91bnQFD2NsYWltZWRSZWZlcnJhbAkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQt0b3RhbEFtb3VudAkA2QQBCQCRAwIFCGNmZ0FycmF5BQ1JZHhDZmdBc3NldElkCQDMCAIJAQxIaXN0b3J5RW50cnkEAgVjbGFpbQUHYWRkcmVzcwUGYW1vdW50BQFpBQNuaWwFB2FjdGlvbnMJAMwIAgULdG90YWxBbW91bnQJAMwIAgUSYW1vdW50RnJvbUVtaXNzaW9uBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETY2xhaW1SZXdhcmRSRUFET05MWQEHYWRkcmVzcwQNJHQwMTgxNjUxODIxNQkBEWNvbW1vbkNsYWltUmV3YXJkAQUHYWRkcmVzcwQGYW1vdW50CAUNJHQwMTgxNjUxODIxNQJfMQQHYWN0aW9ucwgFDSR0MDE4MTY1MTgyMTUCXzIEEXJlZmVycmFsVW5jbGFpbWVkCQELdmFsdWVPckVsc2UCCQCaCAIFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAkBFGtleVVuY2xhaW1lZFJlZmVycmFsAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQUHYWRkcmVzcwAABAt0b3RhbEFtb3VudAkAZAIFBmFtb3VudAURcmVmZXJyYWxVbmNsYWltZWQJAJQKAgUDbmlsBQt0b3RhbEFtb3VudAFpAR1sYXRlc3RGaW5hbGl6ZWRQZXJpb2RSRUFET05MWQEHYWRkcmVzcwkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleUxhdGVzdFBlcmlvZAAA////////////AQFpASFsYXRlc3RGaW5hbGl6ZWRQZXJpb2RJbmZvUkVBRE9OTFkBB2FkZHJlc3MJAJQKAgUDbmlsCQEOZ2V0U3RyaW5nQnlLZXkBCQERa2V5TGFzdFBheW91dEluZm8AAWkBFWNhbGNHd3hQYXJhbXNSRUFET05MWQMOZ3d4QW1vdW50U3RhcnQPbG9ja1N0YXJ0SGVpZ2h0EmxvY2tEdXJhdGlvbkJsb2NrcwQNbG9ja0VuZEhlaWdodAkAZAIFD2xvY2tTdGFydEhlaWdodAUSbG9ja0R1cmF0aW9uQmxvY2tzBAxzY2FsZThQYXJhbUsJAQEtAQkAawMFDmd3eEFtb3VudFN0YXJ0BQVTQ0FMRQUSbG9ja0R1cmF0aW9uQmxvY2tzBAxzY2FsZThQYXJhbUIJAGgCCQBrAwUOZ3d4QW1vdW50U3RhcnQFBVNDQUxFBRJsb2NrRHVyYXRpb25CbG9ja3MFDWxvY2tFbmRIZWlnaHQJAJQKAgUDbmlsCQDMCAIFDHNjYWxlOFBhcmFtSwkAzAgCBQxzY2FsZThQYXJhbUIJAMwIAgkBCm5leHRQZXJpb2QABQNuaWwBaQEaY2FsY0d3eEFtb3VudFN0YXJ0UkVBRE9OTFkDDHd4TG9ja0Ftb3VudAxsb2NrRHVyYXRpb24PbWF4TG9ja0R1cmF0aW9uBAdjb2VmZlg4CQBrAwUMbG9ja0R1cmF0aW9uBQVNVUxUOAUPbWF4TG9ja0R1cmF0aW9uBA5nV3hBbW91bnRTdGFydAkAawMFDHd4TG9ja0Ftb3VudAUHY29lZmZYOAUFTVVMVDgJAJQKAgUDbmlsCQDMCAIFDmdXeEFtb3VudFN0YXJ0BQNuaWwBaQEVb25FbWlzc2lvbkZvckd3eFN0YXJ0AAMJAQIhPQIIBQFpBmNhbGxlcgUPZmFjdG9yeUNvbnRyYWN0CQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodAAFBmhlaWdodAUDbmlsAWkBI2xhdGVzdFBlcmlvZEVtaXNzaW9uUmV3YXJkc1JFQURPTkxZAQdhZGRyZXNzBAZwZXJpb2QJAQpuZXh0UGVyaW9kAAkAlAoCBQNuaWwJAMwIAgkBDmdldE51bWJlckJ5S2V5AQkBHWtleUF1eEVtaXNzaW9uUmV3YXJkRm9yUGVyaW9kAQUGcGVyaW9kBQNuaWwBaQEFY2FsY0QFC3gxQmlnSW50U3RyC3gyQmlnSW50U3RyDGFtcEJpZ0ludFN0chNhUHJlY2lzaW9uQmlnSW50U3RyGHRhcmdldFByZWNpc2lvbkJpZ0ludFN0cgQGbkNvaW5zCQC2AgEAAgQKYVByZWNpc2lvbgkApwMBBRNhUHJlY2lzaW9uQmlnSW50U3RyBA90YXJnZXRQcmVjaXNpb24JAKcDAQUYdGFyZ2V0UHJlY2lzaW9uQmlnSW50U3RyBAJ4MQkApwMBBQt4MUJpZ0ludFN0cgQCeDIJAKcDAQULeDJCaWdJbnRTdHIEA2FtcAkAuQICCQCnAwEFDGFtcEJpZ0ludFN0cgUKYVByZWNpc2lvbgQBcwkAtwICBQJ4MQUCeDIDCQAAAgUBcwUKemVyb0JpZ0ludAkAlAoCBQNuaWwJAKYDAQUKemVyb0JpZ0ludAQDYW5uCQC5AgIFA2FtcAUGbkNvaW5zBANhcnIJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHBQNuaWwKAQRjYWxjAgNhY2MDY3VyBA0kdDAyMDgzODIxMDI3BQNhY2MEAWQIBQ0kdDAyMDgzODIxMDI3Al8xBAVkUHJldggFDSR0MDIwODM4MjEwMjcCXzIEAmRwCQC6AgIJALkCAgkAuQICBQFkBQFkBQFkCQC5AgIJALkCAgkAuQICBQJ4MQUCeDIFBm5Db2lucwUGbkNvaW5zBAVkTmV4dAkAugICCQC5AgIJALcCAgkAugICCQC5AgIFA2FubgUBcwUKYVByZWNpc2lvbgkAuQICBQJkcAUGbkNvaW5zBQFkCQC3AgIJALoCAgkAuQICCQC4AgIFA2FubgUKYVByZWNpc2lvbgUBZAUKYVByZWNpc2lvbgkAuQICCQC3AgIFBm5Db2lucwkAtgIBAAEFAmRwCQCUCgIFBWROZXh0BQFkBA0kdDAyMTI0MDIxMjkwCgACJGwFA2FycgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUBcwUEdW5pdAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEY2FsYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNwkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHBAVkTmV4dAgFDSR0MDIxMjQwMjEyOTACXzEEBWRQcmV2CAUNJHQwMjEyNDAyMTI5MAJfMgQFZERpZmYJAQlhYnNCaWdJbnQBCQC4AgIFBWROZXh0CQEFdmFsdWUBBQVkUHJldgMJAMACAgUPdGFyZ2V0UHJlY2lzaW9uBQVkRGlmZgkAlAoCBQNuaWwJAKYDAQUFZE5leHQJAAIBCQCsAgICHUQgY2FsY3VsYXRpb24gZXJyb3IsIGREaWZmID0gCQCmAwEFBWREaWZmAWkBDGNhbGNQdXRYT25seQgaYW1vdW50QXNzZXRBbW91bnRCaWdJbnRTdHIbYW1vdW50QXNzZXRCYWxhbmNlQmlnSW50U3RyGnByaWNlQXNzZXRCYWxhbmNlQmlnSW50U3RyCmRCaWdJbnRTdHIVYW1wbGlmaWNhdG9yQmlnSW50U3RyHmFtcGxpZmljYXRvclByZWNpc2lvbkJpZ0ludFN0chl0YXJnZXRYUHJlY2lzaW9uQmlnSW50U3RyGXRhcmdldERQcmVjaXNpb25CaWdJbnRTdHIEBm5Db2lucwkAtgIBAAIECmFQcmVjaXNpb24JAKcDAQUeYW1wbGlmaWNhdG9yUHJlY2lzaW9uQmlnSW50U3RyBA90YXJnZXRQcmVjaXNpb24JAKcDAQUZdGFyZ2V0WFByZWNpc2lvbkJpZ0ludFN0cgQBWAkApwMBBRthbW91bnRBc3NldEJhbGFuY2VCaWdJbnRTdHIEAVkJAKcDAQUacHJpY2VBc3NldEJhbGFuY2VCaWdJbnRTdHIEAWQDCQAAAgUKZEJpZ0ludFN0cgIACQCnAwEKAAFACQD8BwQFBHRoaXMCBWNhbGNECQDMCAIFG2Ftb3VudEFzc2V0QmFsYW5jZUJpZ0ludFN0cgkAzAgCBRpwcmljZUFzc2V0QmFsYW5jZUJpZ0ludFN0cgkAzAgCBRVhbXBsaWZpY2F0b3JCaWdJbnRTdHIJAMwIAgUeYW1wbGlmaWNhdG9yUHJlY2lzaW9uQmlnSW50U3RyCQDMCAIFGXRhcmdldERQcmVjaXNpb25CaWdJbnRTdHIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIFY2FsY0QJAMwIAgUbYW1vdW50QXNzZXRCYWxhbmNlQmlnSW50U3RyCQDMCAIFGnByaWNlQXNzZXRCYWxhbmNlQmlnSW50U3RyCQDMCAIFFWFtcGxpZmljYXRvckJpZ0ludFN0cgkAzAgCBR5hbXBsaWZpY2F0b3JQcmVjaXNpb25CaWdJbnRTdHIJAMwIAgUZdGFyZ2V0RFByZWNpc2lvbkJpZ0ludFN0cgUDbmlsBQNuaWwCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwkApwMBBQpkQmlnSW50U3RyBANhbXAJALkCAgkApwMBBRVhbXBsaWZpY2F0b3JCaWdJbnRTdHIFCmFQcmVjaXNpb24EAVMJAKcDAQUaYW1vdW50QXNzZXRBbW91bnRCaWdJbnRTdHIEA2FubgkAuQICBQNhbXAFBm5Db2lucwQDYXJyCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4JAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQFA25pbAoBBGNhbGMCA2FjYwNjdXIEDSR0MDIyODk4MjI5MTgFA2FjYwQBeAgFDSR0MDIyODk4MjI5MTgCXzEEBXhQcmV2CAUNJHQwMjI4OTgyMjkxOAJfMgQEbmV3WAkAuAICCQC3AgIFAVgFAVMFAXgEBG5ld1kJALgCAgUBWQkAugICCQC5AgIFAXgFAVkFAVgEAmRwCQC6AgIJALkCAgkAuQICBQFkBQFkBQFkCQC5AgIJALkCAgkAuQICBQRuZXdYBQRuZXdZBQZuQ29pbnMFBm5Db2lucwQFeE5leHQJALcCAgUBeAkAugICCQC4AgIJALcCAgkAtwICCQC6AgIJALkCAgkAvgIBBQFkBQNhbm4FCmFQcmVjaXNpb24FAWQJALoCAgkAuQICBQNhbm4JALcCAgUEbmV3WAUEbmV3WQUKYVByZWNpc2lvbgUCZHAJALcCAgkAtwICCQC6AgIJALkCAgkAvgIBBQNhbm4JALgCAgkAtgIBAP///////////wEJALoCAgUBWQUBWAUKYVByZWNpc2lvbgkAugICBQJkcAUEbmV3WAkAugICCQC5AgIFAVkFAmRwCQC5AgIFAVgFBG5ld1kJAJQKAgUFeE5leHQFAXgEDSR0MDIzMjIxMjMyODEKAAIkbAUDYXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQp6ZXJvQmlnSW50BQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjYWxjAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEBXhOZXh0CAUNJHQwMjMyMjEyMzI4MQJfMQQFeFByZXYIBQ0kdDAyMzIyMTIzMjgxAl8yBAV4RGlmZgkBCWFic0JpZ0ludAEJALgCAgUFeE5leHQJAQV2YWx1ZQEFBXhQcmV2AwkAwAICBQ90YXJnZXRQcmVjaXNpb24FBXhEaWZmCQCUCgIFA25pbAkAlAoCCQCgAwEFBXhOZXh0CQCgAwEJALwCAwUFeE5leHQFAVkFAVgJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIdWCBjYWxjdWxhdGlvbiBlcnJvciwgeERpZmYgPSAJAKYDAQUFeERpZmYCCiwgeE5leHQgPSAJAKYDAQUFeE5leHQCCiwgeFByZXYgPSAJAKYDAQkBBXZhbHVlAQUFeFByZXYBaQEPY2FsY1N3YXBYVG9ZT2xkCBphbW91bnRBc3NldEFtb3VudEJpZ0ludFN0chthbW91bnRBc3NldEJhbGFuY2VCaWdJbnRTdHIacHJpY2VBc3NldEJhbGFuY2VCaWdJbnRTdHIKZEJpZ0ludFN0chVhbXBsaWZpY2F0b3JCaWdJbnRTdHIeYW1wbGlmaWNhdG9yUHJlY2lzaW9uQmlnSW50U3RyGXRhcmdldFhQcmVjaXNpb25CaWdJbnRTdHIZdGFyZ2V0RFByZWNpc2lvbkJpZ0ludFN0cgQGbkNvaW5zCQC2AgEAAgQKYVByZWNpc2lvbgkApwMBBR5hbXBsaWZpY2F0b3JQcmVjaXNpb25CaWdJbnRTdHIED3RhcmdldFByZWNpc2lvbgkApwMBBRl0YXJnZXRYUHJlY2lzaW9uQmlnSW50U3RyBAFYCQCnAwEFG2Ftb3VudEFzc2V0QmFsYW5jZUJpZ0ludFN0cgQBWQkApwMBBRpwcmljZUFzc2V0QmFsYW5jZUJpZ0ludFN0cgQBeAkApwMBBRphbW91bnRBc3NldEFtb3VudEJpZ0ludFN0cgQBZAMJAAACBQpkQmlnSW50U3RyAgAJAKcDAQoAAUAJAPwHBAUEdGhpcwIFY2FsY0QJAMwIAgUbYW1vdW50QXNzZXRCYWxhbmNlQmlnSW50U3RyCQDMCAIFGnByaWNlQXNzZXRCYWxhbmNlQmlnSW50U3RyCQDMCAIFFWFtcGxpZmljYXRvckJpZ0ludFN0cgkAzAgCBR5hbXBsaWZpY2F0b3JQcmVjaXNpb25CaWdJbnRTdHIJAMwIAgUZdGFyZ2V0RFByZWNpc2lvbkJpZ0ludFN0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAgVjYWxjRAkAzAgCBRthbW91bnRBc3NldEJhbGFuY2VCaWdJbnRTdHIJAMwIAgUacHJpY2VBc3NldEJhbGFuY2VCaWdJbnRTdHIJAMwIAgUVYW1wbGlmaWNhdG9yQmlnSW50U3RyCQDMCAIFHmFtcGxpZmljYXRvclByZWNpc2lvbkJpZ0ludFN0cgkAzAgCBRl0YXJnZXREUHJlY2lzaW9uQmlnSW50U3RyBQNuaWwFA25pbAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQCnAwEFCmRCaWdJbnRTdHIEA2FtcAkAuQICCQCnAwEFFWFtcGxpZmljYXRvckJpZ0ludFN0cgUKYVByZWNpc2lvbgQDYW5uCQC5AgIFA2FtcAUGbkNvaW5zBANhcnIJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQUDbmlsCgEEY2FsYwIDYWNjA2N1cgQNJHQwMjQ5MzAyNDk1MAUDYWNjBAF5CAUNJHQwMjQ5MzAyNDk1MAJfMQQFeVByZXYIBQ0kdDAyNDkzMDI0OTUwAl8yBARuZXdYCQC3AgIFAVgFAXgEBG5ld1kJALgCAgUBWQUBeQQCZHAJALoCAgkAuQICCQC5AgIFAWQFAWQFAWQJALkCAgkAuQICCQC5AgIFBG5ld1gFBG5ld1kFBm5Db2lucwUGbkNvaW5zBAV5TmV4dAkAtwICBQF5CQC6AgIJALgCAgkAtwICCQC3AgIJALoCAgkAuQICCQC+AgEFAWQFA2FubgUKYVByZWNpc2lvbgUBZAkAugICCQC5AgIFA2FubgkAtwICBQRuZXdYBQRuZXdZBQphUHJlY2lzaW9uBQJkcAkAtwICCQC6AgIFA2FubgUKYVByZWNpc2lvbgkAugICBQJkcAUEbmV3WQkAlAoCBQV5TmV4dAUBeQQNJHQwMjUxOTIyNTI0MwoAAiRsBQNhcnIKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFAWQFBHVuaXQKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBGNhbGMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE3CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQQFeU5leHQIBQ0kdDAyNTE5MjI1MjQzAl8xBAV5UHJldggFDSR0MDI1MTkyMjUyNDMCXzIEBXlEaWZmCQEJYWJzQmlnSW50AQkAuAICBQV5TmV4dAkBBXZhbHVlAQUFeVByZXYDCQDAAgIFD3RhcmdldFByZWNpc2lvbgUFeURpZmYJAJQKAgUDbmlsCQCgAwEFBXlOZXh0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICHVkgY2FsY3VsYXRpb24gZXJyb3IsIHlEaWZmID0gCQCmAwEFBXlEaWZmAgosIHlOZXh0ID0gCQCmAwEFBXlOZXh0AgosIHlQcmV2ID0gCQCmAwEJAQV2YWx1ZQEFBXlQcmV2AWkBDGNhbGNTd2FwWFRvWQgaYW1vdW50QXNzZXRBbW91bnRCaWdJbnRTdHIbYW1vdW50QXNzZXRCYWxhbmNlQmlnSW50U3RyGnByaWNlQXNzZXRCYWxhbmNlQmlnSW50U3RyCmRCaWdJbnRTdHIVYW1wbGlmaWNhdG9yQmlnSW50U3RyHmFtcGxpZmljYXRvclByZWNpc2lvbkJpZ0ludFN0chl0YXJnZXRYUHJlY2lzaW9uQmlnSW50U3RyGXRhcmdldERQcmVjaXNpb25CaWdJbnRTdHIEBm5Db2lucwkAtgIBAAIECmFQcmVjaXNpb24JAKcDAQUeYW1wbGlmaWNhdG9yUHJlY2lzaW9uQmlnSW50U3RyBA90YXJnZXRQcmVjaXNpb24JAKcDAQUZdGFyZ2V0WFByZWNpc2lvbkJpZ0ludFN0cgQEb2xkWAkApwMBBRthbW91bnRBc3NldEJhbGFuY2VCaWdJbnRTdHIEAVkJAKcDAQUacHJpY2VBc3NldEJhbGFuY2VCaWdJbnRTdHIEAXgJAKcDAQUaYW1vdW50QXNzZXRBbW91bnRCaWdJbnRTdHIEAVgJALcCAgUEb2xkWAUBeAQBRAMJAAACBQpkQmlnSW50U3RyAgAJAKcDAQoAAUAJAPwHBAUEdGhpcwIFY2FsY0QJAMwIAgUbYW1vdW50QXNzZXRCYWxhbmNlQmlnSW50U3RyCQDMCAIFGnByaWNlQXNzZXRCYWxhbmNlQmlnSW50U3RyCQDMCAIFFWFtcGxpZmljYXRvckJpZ0ludFN0cgkAzAgCBR5hbXBsaWZpY2F0b3JQcmVjaXNpb25CaWdJbnRTdHIJAMwIAgUZdGFyZ2V0RFByZWNpc2lvbkJpZ0ludFN0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAgVjYWxjRAkAzAgCBRthbW91bnRBc3NldEJhbGFuY2VCaWdJbnRTdHIJAMwIAgUacHJpY2VBc3NldEJhbGFuY2VCaWdJbnRTdHIJAMwIAgUVYW1wbGlmaWNhdG9yQmlnSW50U3RyCQDMCAIFHmFtcGxpZmljYXRvclByZWNpc2lvbkJpZ0ludFN0cgkAzAgCBRl0YXJnZXREUHJlY2lzaW9uQmlnSW50U3RyBQNuaWwFA25pbAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQCnAwEFCmRCaWdJbnRTdHIEA2FtcAkAuQICCQCnAwEFFWFtcGxpZmljYXRvckJpZ0ludFN0cgUKYVByZWNpc2lvbgQBUwkAtwICBQFYBQFZBANhbm4JALkCAgUDYW1wBQZuQ29pbnMEAWMJALwCAwkAuQICCQC5AgIJALkCAgUBRAUBRAUBRAUBRAUKYVByZWNpc2lvbgkAuQICCQC5AgIJALkCAgkAuQICCQC5AgIFAVgFAVkFBm5Db2lucwUGbkNvaW5zBQZuQ29pbnMFA2FubgQBYgkAtwICBQFTCQC6AgIJALkCAgUBRAUKYVByZWNpc2lvbgUDYW5uBANhcnIJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8FA25pbAoBBGNhbGMCA2FjYwNjdXIEDSR0MDI2ODQ5MjY4NjkFA2FjYwQBeQgFDSR0MDI2ODQ5MjY4NjkCXzEEBXlQcmV2CAUNJHQwMjY4NDkyNjg2OQJfMgQFeU5leHQJALoCAgkAtwICCQC5AgIFAXkFAXkFAWMJALgCAgkAtwICCQC5AgIJALYCAQACBQF5BQFiBQFECQCUCgIFBXlOZXh0BQF5BA0kdDAyNjk0ODI2OTk5CgACJGwFA2FycgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUBRAUEdW5pdAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEY2FsYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EBXlOZXh0CAUNJHQwMjY5NDgyNjk5OQJfMQQFeVByZXYIBQ0kdDAyNjk0ODI2OTk5Al8yBAV5RGlmZgkBCWFic0JpZ0ludAEJALgCAgUFeU5leHQJAQV2YWx1ZQEFBXlQcmV2AwkAwAICBQ90YXJnZXRQcmVjaXNpb24FBXlEaWZmCQCUCgIFA25pbAkAoAMBCQC4AgIFAVkFBXlOZXh0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICHVkgY2FsY3VsYXRpb24gZXJyb3IsIHlEaWZmID0gCQCmAwEFBXlEaWZmAgosIHlOZXh0ID0gCQCmAwEFBXlOZXh0AgosIHlQcmV2ID0gCQCmAwEJAQV2YWx1ZQEFBXlQcmV2AWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5dc8QTw==", "chainId": 84, "height": 2250383, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: D7JRtBeN5Acyxr3BQ1AHamq57fMFb7m4UGkHRrgSXboB Next: ebqeJFZUEpJvxwjUu8Sv8GopsrLatfHcE5CNqjBoBco Diff:
OldNewDifferences
629629
630630
631631 @Callable(aI)
632-func calcSwapXToY (cT,cU,cV,cW,cX,cY,cZ,da) = {
632+func calcSwapXToYOld (cT,cU,cV,cW,cX,cY,cZ,da) = {
633633 let cu = toBigInt(2)
634634 let cv = parseBigIntValue(cY)
635635 let cw = parseBigIntValue(cZ)
645645 })
646646 else parseBigIntValue(cW)
647647 let cz = (parseBigIntValue(cX) * cv)
648- let dd = parseBigIntValue(cT)
649648 let cA = (cz * cu)
650649 let cB = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
651650 func cC (cD,cE) = {
662661 let dq = {
663662 let cL = cB
664663 let cM = size(cL)
665- let cN = $Tuple2(d, unit)
664+ let cN = $Tuple2(cG, unit)
666665 func cO (cP,cQ) = if ((cQ >= cM))
667666 then cP
668667 else cC(cP, cL[cQ])
675674 }
676675 let dp = dq._1
677676 let do = dq._2
678- let dl = n((dp - value(do)))
679- if ((cw >= dl))
677+ let dr = n((dp - value(do)))
678+ if ((cw >= dr))
680679 then $Tuple2(nil, toInt(dp))
681- else throw(((((("Y calculation error, yDiff = " + toString(dl)) + ", yNext = ") + toString(dp)) + ", yPrev = ") + toString(value(do))))
680+ else throw(((((("Y calculation error, yDiff = " + toString(dr)) + ", yNext = ") + toString(dp)) + ", yPrev = ") + toString(value(do))))
682681 }
683682
684683
685684
686685 @Callable(aI)
687-func setManager (dr) = {
688- let ds = aR(aI)
689- if ((ds == ds))
686+func calcSwapXToY (cT,cU,cV,cW,cX,cY,cZ,da) = {
687+ let cu = toBigInt(2)
688+ let cv = parseBigIntValue(cY)
689+ let cw = parseBigIntValue(cZ)
690+ let ds = parseBigIntValue(cU)
691+ let dc = parseBigIntValue(cV)
692+ let df = parseBigIntValue(cT)
693+ let db = (ds + df)
694+ let dt = if ((cW == ""))
695+ then parseBigIntValue({
696+ let bN = invoke(this, "calcD", [cU, cV, cX, cY, da], nil)
697+ if ($isInstanceOf(bN, "String"))
698+ then bN
699+ else throw(($getType(invoke(this, "calcD", [cU, cV, cX, cY, da], nil)) + " couldn't be cast to String"))
700+ })
701+ else parseBigIntValue(cW)
702+ let cz = (parseBigIntValue(cX) * cv)
703+ let dd = (db + dc)
704+ let cA = (cz * cu)
705+ let du = fraction((((dt * dt) * dt) * dt), cv, (((((db * dc) * cu) * cu) * cu) * cA))
706+ let bc = (dd + ((dt * cv) / cA))
707+ let cB = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
708+ func cC (cD,cE) = {
709+ let dv = cD
710+ let dn = dv._1
711+ let do = dv._2
712+ let dp = (((dn * dn) + du) / (((toBigInt(2) * dn) + bc) - dt))
713+ $Tuple2(dp, dn)
714+ }
715+
716+ let dw = {
717+ let cL = cB
718+ let cM = size(cL)
719+ let cN = $Tuple2(dt, unit)
720+ func cO (cP,cQ) = if ((cQ >= cM))
721+ then cP
722+ else cC(cP, cL[cQ])
723+
724+ func cR (cP,cQ) = if ((cQ >= cM))
725+ then cP
726+ else throw("List size exceeds 15")
727+
728+ cR(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
729+ }
730+ let dp = dw._1
731+ let do = dw._2
732+ let dr = n((dp - value(do)))
733+ if ((cw >= dr))
734+ then $Tuple2(nil, toInt((dc - dp)))
735+ else throw(((((("Y calculation error, yDiff = " + toString(dr)) + ", yNext = ") + toString(dp)) + ", yPrev = ") + toString(value(do))))
736+ }
737+
738+
739+
740+@Callable(aI)
741+func setManager (dx) = {
742+ let dy = aR(aI)
743+ if ((dy == dy))
690744 then {
691- let dt = fromBase58String(dr)
692- if ((dt == dt))
693- then [StringEntry(aM(), dr)]
745+ let dz = fromBase58String(dx)
746+ if ((dz == dz))
747+ then [StringEntry(aM(), dx)]
694748 else throw("Strict value is not equal to itself.")
695749 }
696750 else throw("Strict value is not equal to itself.")
700754
701755 @Callable(aI)
702756 func confirmManager () = {
703- let du = aQ()
704- let dv = if (isDefined(du))
757+ let dA = aQ()
758+ let dB = if (isDefined(dA))
705759 then true
706760 else throw("No pending manager")
707- if ((dv == dv))
761+ if ((dB == dB))
708762 then {
709- let dw = if ((aI.callerPublicKey == value(du)))
763+ let dC = if ((aI.callerPublicKey == value(dA)))
710764 then true
711765 else throw("You are not pending manager")
712- if ((dw == dw))
713- then [StringEntry(aL(), toBase58String(value(du))), DeleteEntry(aM())]
766+ if ((dC == dC))
767+ then [StringEntry(aL(), toBase58String(value(dA))), DeleteEntry(aM())]
714768 else throw("Strict value is not equal to itself.")
715769 }
716770 else throw("Strict value is not equal to itself.")
717771 }
718772
719773
720-@Verifier(dx)
721-func dy () = {
722- let dz = {
774+@Verifier(dD)
775+func dE () = {
776+ let dF = {
723777 let aO = aN()
724778 if ($isInstanceOf(aO, "ByteVector"))
725779 then {
727781 aT
728782 }
729783 else if ($isInstanceOf(aO, "Unit"))
730- then dx.senderPublicKey
784+ then dD.senderPublicKey
731785 else throw("Match error")
732786 }
733- sigVerify(dx.bodyBytes, dx.proofs[0], dz)
787+ sigVerify(dD.bodyBytes, dD.proofs[0], dF)
734788 }
735789
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000
77
88 let c = 100000000
99
1010 let d = toBigInt(0)
1111
1212 let e = 0
1313
1414 let f = 1
1515
1616 func g (h) = valueOrElse(getInteger(this, h), 0)
1717
1818
1919 func i (h) = valueOrErrorMessage(getInteger(this, h), (("mandatory this." + h) + " is not defined"))
2020
2121
2222 func j (h) = valueOrElse(getString(this, h), "")
2323
2424
2525 func k (h) = valueOrErrorMessage(getString(this, h), (("mandatory this." + h) + " is not defined"))
2626
2727
2828 func l (m) = if ((0 > m))
2929 then -(m)
3030 else m
3131
3232
3333 func n (m) = if ((d > m))
3434 then -(m)
3535 else m
3636
3737
3838 let o = "%s__maxDepth"
3939
4040 let p = 30
4141
4242 let q = valueOrElse(getInteger(this, o), p)
4343
4444 func r () = "%s%s__config__factoryAddress"
4545
4646
4747 let s = k(r())
4848
4949 let t = addressFromStringValue(s)
5050
5151 func u () = "%s%s__config__emissionAddress"
5252
5353
5454 func v (w) = makeString(["%s%s%s", "mapping", "num2user", toString(w)], a)
5555
5656
5757 let x = makeString(["%s%s", "referral", "programName"], a)
5858
5959 let y = "wxlock"
6060
6161 let z = valueOrElse(getString(this, x), y)
6262
6363 let A = makeString(["%s%s", "referral", "minGWxAmount"], a)
6464
6565 let B = (500 * c)
6666
6767 let C = valueOrElse(getInteger(this, A), B)
6868
6969 let D = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
7070
7171 let E = 50
7272
7373 let F = valueOrElse(getInteger(this, D), E)
7474
7575 let G = makeString(["%s%s", "referral", "referralRewardPermille"], a)
7676
7777 let H = 50
7878
7979 let I = valueOrElse(getInteger(this, G), H)
8080
8181 func J (K) = makeString(["%s%s%s", "referrer", z, K], a)
8282
8383
8484 func L (M,N) = makeString(["%s%s%s%s", "unclaimedReferral", M, N], a)
8585
8686
8787 let O = k(u())
8888
8989 let P = addressFromStringValue(O)
9090
9191 let Q = 1
9292
9393 let R = 2
9494
9595 let S = 3
9696
9797 let T = 4
9898
9999 func U () = "%s__config"
100100
101101
102102 func V () = split(k(U()), a)
103103
104104
105105 func W (X,Y,Z,q) = makeString(["%s%s%s%d", X, Y, Z, toString(q)], a)
106106
107107
108108 func aa () = {
109109 let ab = V()
110110 valueOrErrorMessage(addressFromString(ab[S]), "boosting contract address is not defined")
111111 }
112112
113113
114114 func ac () = "%s%s__gwxRewardEmissionPart__startHeight"
115115
116116
117117 func ad () = "%s__nextUserNum"
118118
119119
120120 func ae () = "%s%s__ratePerBlock__current"
121121
122122
123123 func af () = "%s%s__poolWeight__GWXvirtualPOOL"
124124
125125
126126 func ag () = "%s__nextProcessedUser"
127127
128128
129129 func ah () = "%s__latestPeriod"
130130
131131
132132 func ai () = "%s__nextPeriod"
133133
134134
135135 func aj () = "%s__processingStage"
136136
137137
138138 func ak () = "%s__nextProcessedPeriod"
139139
140140
141141 func al (am) = makeString(["%s%d", "userUnclaimed", toString(am)], a)
142142
143143
144144 func an (am) = makeString(["%s%d__nextClaimedPeriod", toString(am)], a)
145145
146146
147147 func ao (am) = makeString(["%s%d__lastProcessedPeriod", toString(am)], a)
148148
149149
150150 func ap (aq) = makeString(["%s%d__startHeightForPeriod", toString(aq)], a)
151151
152152
153153 func ar (aq) = makeString(["%s%d__auxEmissionReward", toString(aq)], a)
154154
155155
156156 func as (aq) = makeString(["%s%d__totalAmountForPeriod", toString(aq)], a)
157157
158158
159159 func at () = "%s__lastPayoutInfo"
160160
161161
162162 func au (aq,av,aw) = makeString(["%d%d%d", toString(aq), toString(av), toString(aw)], a)
163163
164164
165165 func ax (aq) = makeString(["%s%s%d__payouts__history", toString(aq)], a)
166166
167167
168168 func ay (aq) = makeString(["%s%d__totalWeightForPeriod", toString(aq)], a)
169169
170170
171171 func az (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "k", toString(aq)], a)
172172
173173
174174 func aA (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "b", toString(aq)], a)
175175
176176
177177 func aB (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "weight", toString(aq)], a)
178178
179179
180180 func aC () = makeString(["%s%s", "config", "referralsContractAddress"], a)
181181
182182
183183 let aD = addressFromStringValue(k(aC()))
184184
185185 func aE (aF,aG,aH,aI) = {
186186 let aJ = makeString(["%s%s%s%s__history", aF, aG, toBase58String(aI.transactionId)], a)
187187 let aK = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH)], a)
188188 StringEntry(aJ, aK)
189189 }
190190
191191
192192 func aL () = "%s__managerPublicKey"
193193
194194
195195 func aM () = "%s__pendingManagerPublicKey"
196196
197197
198198 func aN () = {
199199 let aO = getString(aL())
200200 if ($isInstanceOf(aO, "String"))
201201 then {
202202 let aP = aO
203203 fromBase58String(aP)
204204 }
205205 else if ($isInstanceOf(aO, "Unit"))
206206 then unit
207207 else throw("Match error")
208208 }
209209
210210
211211 func aQ () = {
212212 let aO = getString(aM())
213213 if ($isInstanceOf(aO, "String"))
214214 then {
215215 let aP = aO
216216 fromBase58String(aP)
217217 }
218218 else if ($isInstanceOf(aO, "Unit"))
219219 then unit
220220 else throw("Match error")
221221 }
222222
223223
224224 func aR (aI) = {
225225 let aS = throw("Permission denied")
226226 let aO = aN()
227227 if ($isInstanceOf(aO, "ByteVector"))
228228 then {
229229 let aT = aO
230230 if ((aI.callerPublicKey == aT))
231231 then true
232232 else aS
233233 }
234234 else if ($isInstanceOf(aO, "Unit"))
235235 then if ((aI.caller == this))
236236 then true
237237 else aS
238238 else throw("Match error")
239239 }
240240
241241
242242 func aU (aV,aW,aq,am) = {
243243 let aX = ao(am)
244244 let aY = az(aq, am)
245245 let aZ = getInteger(aV, aY)
246246 let ba = aB(aq, am)
247247 if (isDefined(aZ))
248248 then {
249249 let bb = value(aZ)
250250 let bc = value(getInteger(aV, aA(aq, am)))
251251 let bd = ((bb * aW) + bc)
252252 if ((bd > 0))
253253 then $Tuple2((bd / b), [IntegerEntry(aX, aq), IntegerEntry(ba, bd)])
254254 else $Tuple2(0, nil)
255255 }
256256 else {
257257 let be = getInteger(this, aX)
258258 if (if (isDefined(be))
259259 then (aq >= value(be))
260260 else false)
261261 then {
262262 let bf = value(be)
263263 let bb = value(getInteger(aV, az(bf, am)))
264264 let bc = value(getInteger(aV, aA(bf, am)))
265265 let bd = ((bb * aW) + bc)
266266 if ((bd > 0))
267267 then $Tuple2((bd / b), [IntegerEntry(ba, bd)])
268268 else $Tuple2(0, nil)
269269 }
270270 else $Tuple2(0, nil)
271271 }
272272 }
273273
274274
275275 func bg (aV,aW,aq,am) = {
276276 let ba = aB(aq, am)
277277 let bh = getInteger(ba)
278278 let aO = bh
279279 if ($isInstanceOf(aO, "Unit"))
280280 then 0
281281 else if ($isInstanceOf(aO, "Int"))
282282 then {
283283 let bd = aO
284284 (bd / b)
285285 }
286286 else throw("Match error")
287287 }
288288
289289
290290 func bi (Z,bj) = {
291291 let h = makeString(["%s%s%s", "mapping", "user2num", bj], a)
292292 parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Z)), h), ((("User address " + bj) + " is not found in boosting contract data, key=") + h)))
293293 }
294294
295295
296296 func bk () = g(ai())
297297
298298
299299 func bl (bj) = {
300300 let ab = V()
301301 let bm = bi(ab[S], bj)
302302 let bn = getInteger(al(bm))
303303 let aO = bn
304304 if ($isInstanceOf(aO, "Unit"))
305305 then $Tuple2(0, nil)
306306 else if ($isInstanceOf(aO, "Int"))
307307 then {
308308 let bo = aO
309309 $Tuple2(bo, [IntegerEntry(al(bm), 0)])
310310 }
311311 else throw("Match error")
312312 }
313313
314314
315315 @Callable(aI)
316316 func updateReferralActivity (bj,bp) = {
317317 let bq = getString(aD, J(bj))
318318 let br = if ((bq == unit))
319319 then unit
320320 else invoke(aD, "updateReferralActivity", [z, bj, (bp >= C)], nil)
321321 if ((br == br))
322322 then $Tuple2(nil, unit)
323323 else throw("Strict value is not equal to itself.")
324324 }
325325
326326
327327
328328 @Callable(aI)
329329 func finalizeHelper () = {
330330 let bs = valueOrElse(getInteger(aj()), e)
331331 let bt = g(ak())
332332 let bu = g(ag())
333333 let bv = g(ah())
334334 let bw = valueOrElse(getInteger(aa(), ad()), 0)
335335 let bx = ay(bt)
336336 let by = g(ay(bt))
337337 let aW = g(ap(bt))
338338 if ((bt > bv))
339339 then $Tuple2(nil, false)
340340 else if ((bs == e))
341341 then {
342342 let bz = aU(aa(), aW, bt, bu)
343343 let bA = bz._1
344344 let bB = bz._2
345345 let bC = (by + bA)
346346 let bD = if (((bw - 1) > bu))
347347 then [IntegerEntry(ag(), (bu + 1))]
348348 else [IntegerEntry(aj(), f), IntegerEntry(ag(), 0)]
349349 $Tuple2((([IntegerEntry(bx, bC)] ++ bD) ++ bB), true)
350350 }
351351 else if ((bs == f))
352352 then {
353353 let bA = bg(aa(), aW, bt, bu)
354354 let bE = fraction(g(as(bt)), bA, by)
355355 let bF = fraction(g(ar(bt)), bA, by)
356356 let bG = (bF + bE)
357357 let bn = getInteger(al(bu))
358358 let bj = getStringValue(aa(), v(bu))
359359 let bq = getString(aD, J(bj))
360360 let br = if ((bq == unit))
361361 then unit
362362 else invoke(aD, "updateReferralActivity", [z, bj, (bA >= C)], nil)
363363 if ((br == br))
364364 then {
365365 let bH = if (if ((bq == unit))
366366 then true
367367 else (C > bA))
368368 then unit
369369 else {
370370 let bI = fraction(bG, F, b)
371371 let bJ = fraction(bG, I, b)
372372 invoke(aD, "incUnclaimed", [z, bj, bI, bJ], nil)
373373 }
374374 if ((bH == bH))
375375 then {
376376 let bK = [IntegerEntry(al(bu), (valueOrElse(bn, 0) + bG))]
377377 let bD = if (((bw - 1) > bu))
378378 then [IntegerEntry(ag(), (bu + 1))]
379379 else [IntegerEntry(ak(), (bt + 1)), IntegerEntry(ag(), 0), DeleteEntry(aj())]
380380 $Tuple2((bK ++ bD), true)
381381 }
382382 else throw("Strict value is not equal to itself.")
383383 }
384384 else throw("Strict value is not equal to itself.")
385385 }
386386 else throw("invalid processing stage")
387387 }
388388
389389
390390
391391 @Callable(aI)
392392 func finalizeWrapper (bL) = {
393393 let bM = {
394394 let bN = invoke(this, "finalizeHelper", nil, nil)
395395 if ($isInstanceOf(bN, "Boolean"))
396396 then bN
397397 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
398398 }
399399 if ((bM == bM))
400400 then if (!(bM))
401401 then if ((bL == q))
402402 then throw("Nothing to process")
403403 else $Tuple2(nil, unit)
404404 else if ((bL > 0))
405405 then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bL - 1)], nil))
406406 else $Tuple2(nil, unit)
407407 else throw("Strict value is not equal to itself.")
408408 }
409409
410410
411411
412412 @Callable(aI)
413413 func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [q], nil))
414414
415415
416416
417417 @Callable(aI)
418418 func deposit () = {
419419 let ab = V()
420420 if ((aI.caller != Address(fromBase58String(ab[R]))))
421421 then throw("Wrong caller address")
422422 else {
423423 let bO = value(value(aI.payments[0]).assetId)
424424 if ((bO != fromBase58String(ab[Q])))
425425 then throw("Wrong payment asset")
426426 else {
427427 let aq = bk()
428428 let bP = (height - i(ac()))
429429 let bQ = valueOrErrorMessage(getInteger(P, ae()), (("mandatory emission_contract." + ae()) + " is not defined"))
430430 let bR = valueOrErrorMessage(getInteger(t, af()), (("mandatory factory_contract." + af()) + " is not defined"))
431431 let bS = fraction((bP * bR), bQ, c)
432432 let bT = invoke(P, "emit", [bS], nil)
433433 if ((bT == bT))
434434 then {
435435 let bU = value(aI.payments[0]).amount
436436 let bV = au(aq, bU, bS)
437437 [IntegerEntry(ah(), aq), IntegerEntry(ap(aq), height), IntegerEntry(ar(aq), bS), IntegerEntry(ac(), height), IntegerEntry(as(aq), bU), IntegerEntry(ai(), (aq + 1)), StringEntry(at(), bV), StringEntry(ax(aq), bV)]
438438 }
439439 else throw("Strict value is not equal to itself.")
440440 }
441441 }
442442 }
443443
444444
445445
446446 @Callable(aI)
447447 func claimReward () = {
448448 let ab = V()
449449 let bW = toString(aI.caller)
450450 let bX = bl(bW)
451451 let aH = bX._1
452452 let bY = bX._2
453453 let bZ = if ((aH > 0))
454454 then true
455455 else throw("Nothing to claim")
456456 if ((bZ == bZ))
457457 then {
458458 let ca = 0
459459 let cb = {
460460 let bN = invoke(aD, "claim", [z], nil)
461461 if ($isInstanceOf(bN, "Int"))
462462 then bN
463463 else throw(($getType(invoke(aD, "claim", [z], nil)) + " couldn't be cast to Int"))
464464 }
465465 let cc = (aH + cb)
466466 $Tuple2(([ScriptTransfer(aI.caller, cc, fromBase58String(ab[Q])), aE("claim", bW, aH, aI)] ++ bY), [cc, ca])
467467 }
468468 else throw("Strict value is not equal to itself.")
469469 }
470470
471471
472472
473473 @Callable(aI)
474474 func claimRewardREADONLY (bW) = {
475475 let cd = bl(bW)
476476 let aH = cd._1
477477 let bY = cd._2
478478 let ce = valueOrElse(getInteger(aD, L(z, bW)), 0)
479479 let cc = (aH + ce)
480480 $Tuple2(nil, cc)
481481 }
482482
483483
484484
485485 @Callable(aI)
486486 func latestFinalizedPeriodREADONLY (bW) = $Tuple2(nil, valueOrElse(getInteger(this, ah()), -1))
487487
488488
489489
490490 @Callable(aI)
491491 func latestFinalizedPeriodInfoREADONLY (bW) = $Tuple2(nil, j(at()))
492492
493493
494494
495495 @Callable(aI)
496496 func calcGwxParamsREADONLY (cf,cg,ch) = {
497497 let ci = (cg + ch)
498498 let cj = -(fraction(cf, b, ch))
499499 let ck = (fraction(cf, b, ch) * ci)
500500 $Tuple2(nil, [cj, ck, bk()])
501501 }
502502
503503
504504
505505 @Callable(aI)
506506 func calcGwxAmountStartREADONLY (cl,cm,cn) = {
507507 let co = fraction(cm, c, cn)
508508 let bp = fraction(cl, co, c)
509509 $Tuple2(nil, [bp])
510510 }
511511
512512
513513
514514 @Callable(aI)
515515 func onEmissionForGwxStart () = if ((aI.caller != t))
516516 then throw("permissions denied")
517517 else [IntegerEntry(ac(), height)]
518518
519519
520520
521521 @Callable(aI)
522522 func latestPeriodEmissionRewardsREADONLY (bW) = {
523523 let aq = bk()
524524 $Tuple2(nil, [g(ar(aq))])
525525 }
526526
527527
528528
529529 @Callable(aI)
530530 func calcD (cp,cq,cr,cs,ct) = {
531531 let cu = toBigInt(2)
532532 let cv = parseBigIntValue(cs)
533533 let cw = parseBigIntValue(ct)
534534 let cx = parseBigIntValue(cp)
535535 let cy = parseBigIntValue(cq)
536536 let cz = (parseBigIntValue(cr) * cv)
537537 let aP = (cx + cy)
538538 if ((aP == d))
539539 then $Tuple2(nil, toString(d))
540540 else {
541541 let cA = (cz * cu)
542542 let cB = [1, 2, 3, 4, 5, 6, 7]
543543 func cC (cD,cE) = {
544544 let cF = cD
545545 let cG = cF._1
546546 let cH = cF._2
547547 let cI = (((cG * cG) * cG) / (((cx * cy) * cu) * cu))
548548 let cJ = (((((cA * aP) / cv) + (cI * cu)) * cG) / ((((cA - cv) * cG) / cv) + ((cu + toBigInt(1)) * cI)))
549549 $Tuple2(cJ, cG)
550550 }
551551
552552 let cK = {
553553 let cL = cB
554554 let cM = size(cL)
555555 let cN = $Tuple2(aP, unit)
556556 func cO (cP,cQ) = if ((cQ >= cM))
557557 then cP
558558 else cC(cP, cL[cQ])
559559
560560 func cR (cP,cQ) = if ((cQ >= cM))
561561 then cP
562562 else throw("List size exceeds 7")
563563
564564 cR(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7)
565565 }
566566 let cJ = cK._1
567567 let cH = cK._2
568568 let cS = n((cJ - value(cH)))
569569 if ((cw >= cS))
570570 then $Tuple2(nil, toString(cJ))
571571 else throw(("D calculation error, dDiff = " + toString(cS)))
572572 }
573573 }
574574
575575
576576
577577 @Callable(aI)
578578 func calcPutXOnly (cT,cU,cV,cW,cX,cY,cZ,da) = {
579579 let cu = toBigInt(2)
580580 let cv = parseBigIntValue(cY)
581581 let cw = parseBigIntValue(cZ)
582582 let db = parseBigIntValue(cU)
583583 let dc = parseBigIntValue(cV)
584584 let cG = if ((cW == ""))
585585 then parseBigIntValue({
586586 let bN = invoke(this, "calcD", [cU, cV, cX, cY, da], nil)
587587 if ($isInstanceOf(bN, "String"))
588588 then bN
589589 else throw(($getType(invoke(this, "calcD", [cU, cV, cX, cY, da], nil)) + " couldn't be cast to String"))
590590 })
591591 else parseBigIntValue(cW)
592592 let cz = (parseBigIntValue(cX) * cv)
593593 let dd = parseBigIntValue(cT)
594594 let cA = (cz * cu)
595595 let cB = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
596596 func cC (cD,cE) = {
597597 let de = cD
598598 let df = de._1
599599 let dg = de._2
600600 let dh = ((db + dd) - df)
601601 let di = (dc - ((df * dc) / db))
602602 let cI = (((cG * cG) * cG) / (((dh * di) * cu) * cu))
603603 let dj = (df + ((((((-(cG) * cA) / cv) + cG) + ((cA * (dh + di)) / cv)) - cI) / ((((-(cA) * (toBigInt(-1) - (dc / db))) / cv) + (cI / dh)) + ((dc * cI) / (db * di)))))
604604 $Tuple2(dj, df)
605605 }
606606
607607 let dk = {
608608 let cL = cB
609609 let cM = size(cL)
610610 let cN = $Tuple2(d, unit)
611611 func cO (cP,cQ) = if ((cQ >= cM))
612612 then cP
613613 else cC(cP, cL[cQ])
614614
615615 func cR (cP,cQ) = if ((cQ >= cM))
616616 then cP
617617 else throw("List size exceeds 20")
618618
619619 cR(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
620620 }
621621 let dj = dk._1
622622 let dg = dk._2
623623 let dl = n((dj - value(dg)))
624624 if ((cw >= dl))
625625 then $Tuple2(nil, $Tuple2(toInt(dj), toInt(fraction(dj, dc, db))))
626626 else throw(((((("X calculation error, xDiff = " + toString(dl)) + ", xNext = ") + toString(dj)) + ", xPrev = ") + toString(value(dg))))
627627 }
628628
629629
630630
631631 @Callable(aI)
632-func calcSwapXToY (cT,cU,cV,cW,cX,cY,cZ,da) = {
632+func calcSwapXToYOld (cT,cU,cV,cW,cX,cY,cZ,da) = {
633633 let cu = toBigInt(2)
634634 let cv = parseBigIntValue(cY)
635635 let cw = parseBigIntValue(cZ)
636636 let db = parseBigIntValue(cU)
637637 let dc = parseBigIntValue(cV)
638638 let df = parseBigIntValue(cT)
639639 let cG = if ((cW == ""))
640640 then parseBigIntValue({
641641 let bN = invoke(this, "calcD", [cU, cV, cX, cY, da], nil)
642642 if ($isInstanceOf(bN, "String"))
643643 then bN
644644 else throw(($getType(invoke(this, "calcD", [cU, cV, cX, cY, da], nil)) + " couldn't be cast to String"))
645645 })
646646 else parseBigIntValue(cW)
647647 let cz = (parseBigIntValue(cX) * cv)
648- let dd = parseBigIntValue(cT)
649648 let cA = (cz * cu)
650649 let cB = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
651650 func cC (cD,cE) = {
652651 let dm = cD
653652 let dn = dm._1
654653 let do = dm._2
655654 let dh = (db + df)
656655 let di = (dc - dn)
657656 let cI = (((cG * cG) * cG) / (((dh * di) * cu) * cu))
658657 let dp = (dn + ((((((-(cG) * cA) / cv) + cG) + ((cA * (dh + di)) / cv)) - cI) / ((cA / cv) + (cI / di))))
659658 $Tuple2(dp, dn)
660659 }
661660
662661 let dq = {
663662 let cL = cB
664663 let cM = size(cL)
665- let cN = $Tuple2(d, unit)
664+ let cN = $Tuple2(cG, unit)
666665 func cO (cP,cQ) = if ((cQ >= cM))
667666 then cP
668667 else cC(cP, cL[cQ])
669668
670669 func cR (cP,cQ) = if ((cQ >= cM))
671670 then cP
672671 else throw("List size exceeds 17")
673672
674673 cR(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
675674 }
676675 let dp = dq._1
677676 let do = dq._2
678- let dl = n((dp - value(do)))
679- if ((cw >= dl))
677+ let dr = n((dp - value(do)))
678+ if ((cw >= dr))
680679 then $Tuple2(nil, toInt(dp))
681- else throw(((((("Y calculation error, yDiff = " + toString(dl)) + ", yNext = ") + toString(dp)) + ", yPrev = ") + toString(value(do))))
680+ else throw(((((("Y calculation error, yDiff = " + toString(dr)) + ", yNext = ") + toString(dp)) + ", yPrev = ") + toString(value(do))))
682681 }
683682
684683
685684
686685 @Callable(aI)
687-func setManager (dr) = {
688- let ds = aR(aI)
689- if ((ds == ds))
686+func calcSwapXToY (cT,cU,cV,cW,cX,cY,cZ,da) = {
687+ let cu = toBigInt(2)
688+ let cv = parseBigIntValue(cY)
689+ let cw = parseBigIntValue(cZ)
690+ let ds = parseBigIntValue(cU)
691+ let dc = parseBigIntValue(cV)
692+ let df = parseBigIntValue(cT)
693+ let db = (ds + df)
694+ let dt = if ((cW == ""))
695+ then parseBigIntValue({
696+ let bN = invoke(this, "calcD", [cU, cV, cX, cY, da], nil)
697+ if ($isInstanceOf(bN, "String"))
698+ then bN
699+ else throw(($getType(invoke(this, "calcD", [cU, cV, cX, cY, da], nil)) + " couldn't be cast to String"))
700+ })
701+ else parseBigIntValue(cW)
702+ let cz = (parseBigIntValue(cX) * cv)
703+ let dd = (db + dc)
704+ let cA = (cz * cu)
705+ let du = fraction((((dt * dt) * dt) * dt), cv, (((((db * dc) * cu) * cu) * cu) * cA))
706+ let bc = (dd + ((dt * cv) / cA))
707+ let cB = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
708+ func cC (cD,cE) = {
709+ let dv = cD
710+ let dn = dv._1
711+ let do = dv._2
712+ let dp = (((dn * dn) + du) / (((toBigInt(2) * dn) + bc) - dt))
713+ $Tuple2(dp, dn)
714+ }
715+
716+ let dw = {
717+ let cL = cB
718+ let cM = size(cL)
719+ let cN = $Tuple2(dt, unit)
720+ func cO (cP,cQ) = if ((cQ >= cM))
721+ then cP
722+ else cC(cP, cL[cQ])
723+
724+ func cR (cP,cQ) = if ((cQ >= cM))
725+ then cP
726+ else throw("List size exceeds 15")
727+
728+ cR(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
729+ }
730+ let dp = dw._1
731+ let do = dw._2
732+ let dr = n((dp - value(do)))
733+ if ((cw >= dr))
734+ then $Tuple2(nil, toInt((dc - dp)))
735+ else throw(((((("Y calculation error, yDiff = " + toString(dr)) + ", yNext = ") + toString(dp)) + ", yPrev = ") + toString(value(do))))
736+ }
737+
738+
739+
740+@Callable(aI)
741+func setManager (dx) = {
742+ let dy = aR(aI)
743+ if ((dy == dy))
690744 then {
691- let dt = fromBase58String(dr)
692- if ((dt == dt))
693- then [StringEntry(aM(), dr)]
745+ let dz = fromBase58String(dx)
746+ if ((dz == dz))
747+ then [StringEntry(aM(), dx)]
694748 else throw("Strict value is not equal to itself.")
695749 }
696750 else throw("Strict value is not equal to itself.")
697751 }
698752
699753
700754
701755 @Callable(aI)
702756 func confirmManager () = {
703- let du = aQ()
704- let dv = if (isDefined(du))
757+ let dA = aQ()
758+ let dB = if (isDefined(dA))
705759 then true
706760 else throw("No pending manager")
707- if ((dv == dv))
761+ if ((dB == dB))
708762 then {
709- let dw = if ((aI.callerPublicKey == value(du)))
763+ let dC = if ((aI.callerPublicKey == value(dA)))
710764 then true
711765 else throw("You are not pending manager")
712- if ((dw == dw))
713- then [StringEntry(aL(), toBase58String(value(du))), DeleteEntry(aM())]
766+ if ((dC == dC))
767+ then [StringEntry(aL(), toBase58String(value(dA))), DeleteEntry(aM())]
714768 else throw("Strict value is not equal to itself.")
715769 }
716770 else throw("Strict value is not equal to itself.")
717771 }
718772
719773
720-@Verifier(dx)
721-func dy () = {
722- let dz = {
774+@Verifier(dD)
775+func dE () = {
776+ let dF = {
723777 let aO = aN()
724778 if ($isInstanceOf(aO, "ByteVector"))
725779 then {
726780 let aT = aO
727781 aT
728782 }
729783 else if ($isInstanceOf(aO, "Unit"))
730- then dx.senderPublicKey
784+ then dD.senderPublicKey
731785 else throw("Match error")
732786 }
733- sigVerify(dx.bodyBytes, dx.proofs[0], dz)
787+ sigVerify(dD.bodyBytes, dD.proofs[0], dF)
734788 }
735789

github/deemru/w8io/026f985 
84.31 ms