tx · 9auSb7mq1i7KcWQ95rZhZbh39kdENqw3ofeUsHtcH5dm

3N6HSS7Toat1RhyEsyqVGgVSRzH19W1FTbP:  -0.03700000 Waves

2025.01.10 16:48 [3453142] smart account 3N6HSS7Toat1RhyEsyqVGgVSRzH19W1FTbP > SELF 0.00000000 Waves

{ "type": 13, "id": "9auSb7mq1i7KcWQ95rZhZbh39kdENqw3ofeUsHtcH5dm", "fee": 3700000, "feeAssetId": null, "timestamp": 1736516949242, "version": 2, "chainId": 84, "sender": "3N6HSS7Toat1RhyEsyqVGgVSRzH19W1FTbP", "senderPublicKey": "AoKo4segKHU4DeJnxXQYJj2u7J6XJeux6r8KLW52cd2Q", "proofs": [ "BQmKP74zo6jNF4tTGhPVXkkjQ22xxT86Qe72zC8gCxnCwFCXrFQzL4Hs3YNB34MeyMpao3nCmGuPsFJzzjzzSj8" ], "script": "base64:BwJHCAISABIDCgECEgcKBQIBAQEBEgYKBAEBAQESAwoBAhIDCgECEgQKAgICEgQKAgIIEgQKAgIYEgQKAgIIEgQKAgIYEgMKAQJIAANTRVACAl9fAA1DT05UUkFDVF9OQU1FAg9jYWxjdWxhdG9yLnJpZGUABlNDQUxFOACAwtcvAAdQRU5ESU5HAgdQRU5ESU5HAAVXQVZFUwIFV0FWRVMAHGJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemVNYXgACgEHd3JhcEVycgEBcwkArAICCQCsAgIFDUNPTlRSQUNUX05BTUUCAjogBQFzAQh0aHJvd0VycgEBcwkAAgEJAQd3cmFwRXJyAQUBcwEPYXNzZXRJZFRvU3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgMJAAECBQckbWF0Y2gwAgRVbml0BQVXQVZFUwkAAgECC01hdGNoIGVycm9yAQ9zdHJpbmdUb0Fzc2V0SWQBAXMDCQAAAgUBcwUFV0FWRVMFBHVuaXQJANkEAQUBcwEDYWJzAQFuAwkAZgIAAAUBbgkBAS0BBQFuBQFuARFrZXlGYWN0b3J5QWRkcmVzcwAJALkJAgkAzAgCAgIlcwkAzAgCAgdmYWN0b3J5BQNuaWwFA1NFUAETa2V5TWFuYWdlclB1YmxpY0tleQAJALkJAgkAzAgCAgIlcwkAzAgCAhBtYW5hZ2VyUHVibGljS2V5BQNuaWwFA1NFUAEMa2V5THBBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICCWxwQXNzZXRJZAUDbmlsBQNTRVABF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDXByb3h5VHJlYXN1cnkFA25pbAUDU0VQARZrZXlNYWluVHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDG1haW5UcmVhc3VyeQUDbmlsBQNTRVABGmtleUJ1c2luZXNzVHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICEGJ1c2luZXNzVHJlYXN1cnkFA25pbAUDU0VQAR1rZXlUcnVzdGVkRmluYWxpemVBZGRyZXNzTGlzdAAJALkJAgkAzAgCAgIlcwkAzAgCAhJ0cnVzdGVkQWRkcmVzc0xpc3QFA25pbAUDU0VQARdrZXlCdXNpbmVzc1RyZWFzdXJ5UGFydAAJALkJAgkAzAgCAgIlcwkAzAgCAhRidXNpbmVzc1RyZWFzdXJ5UGFydAUDbmlsBQNTRVABF2tleVBvd2VyQ29udHJhY3RBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDXBvd2VyQ29udHJhY3QFA25pbAUDU0VQARJrZXlQb3dlclNoYXJlUmF0aW8ACQC5CQIJAMwIAgICJXMJAMwIAgIPcG93ZXJTaGFyZVJhdGlvBQNuaWwFA1NFUAEPa2V5UG93ZXJBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICDHBvd2VyQXNzZXRJZAUDbmlsBQNTRVABDmtleUwybXBBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICC2wybXBBc3NldElkBQNuaWwFA1NFUAETa2V5TDJtcFByb3h5QWRkcmVzcwAJALkJAgkAzAgCAgIlcwkAzAgCAglsMm1wUHJveHkFA25pbAUDU0VQAQtrZXlJbnZlc3RlZAEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIIaW52ZXN0ZWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFB2Fzc2V0SWQFA25pbAUDU0VQAQprZXlEb25hdGVkAQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgdkb25hdGVkCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQdhc3NldElkBQNuaWwFA1NFUAEMa2V5QXZhaWxhYmxlAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIJYXZhaWxhYmxlCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDU0VQAQprZXlDbGFpbWVkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIHY2xhaW1lZAkAzAgCCQClCAEFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEQa2V5Q3VycmVudFBlcmlvZAAJALkJAgkAzAgCAgIlcwkAzAgCAg1jdXJyZW50UGVyaW9kBQNuaWwFA1NFUAERa2V5UHJpY2VGb3JQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICBCVzJWQJAMwIAgIFcHJpY2UJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQAQ5rZXlTdGFydEhlaWdodAEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABFGtleVBvd2VyTWFuYWdlckJvbnVzAQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICEXBvd2VyTWFuYWdlckJvbnVzCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAETa2V5Q2xhaW1XYXZlc0Ftb3VudAEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhBjbGFpbVdhdmVzQW1vdW50CQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEPa2V5UGVyaW9kTGVuZ3RoAAIQJXNfX3BlcmlvZExlbmd0aAEVa2V5SW52ZXN0UGVyaW9kTGVuZ3RoAAIWJXNfX2ludmVzdFBlcmlvZExlbmd0aAEYa2V5QmxvY2tQcm9jZXNzaW5nUmV3YXJkAAIZJXNfX2Jsb2NrUHJvY2Vzc2luZ1Jld2FyZAEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAIWJXNfX25leHRCbG9ja1RvUHJvY2VzcwERa2V5QmxvY2tQcm9jZXNzZWQBBmhlaWdodAkAuQkCCQDMCAICBCVzJWQJAMwIAgIOYmxvY2tQcm9jZXNzZWQJAMwIAgkApAMBBQZoZWlnaHQFA25pbAUDU0VQAQ1rZXlXaXRoZHJhd2FsAAIOJXNfX3dpdGhkcmF3YWwBE2tleVdpdGhkcmF3YWxQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICBCVzJWQJAMwIAgIQd2l0aGRyYXdhbFBlcmlvZAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABFGtleVdpdGhkcmF3YWxSZXF1ZXN0Agt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCndpdGhkcmF3YWwJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCCQDYBAEFBHR4SWQFA25pbAUDU0VQARZ2YWx1ZVdpdGhkcmF3YWxSZXF1ZXN0BAZzdGF0dXMNbHBBc3NldEFtb3VudAx0YXJnZXRQZXJpb2QJY2xhaW1UeElkBAxjbGFpbVR4SWRTdHIEByRtYXRjaDAFCWNsYWltVHhJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIDCQABAgUHJG1hdGNoMAIEVW5pdAIEU09PTgkAAgECC01hdGNoIGVycm9yCQC5CQIJAMwIAgIIJXMlZCVkJXMJAMwIAgUGc3RhdHVzCQDMCAIJAKQDAQUNbHBBc3NldEFtb3VudAkAzAgCCQCkAwEFDHRhcmdldFBlcmlvZAkAzAgCBQxjbGFpbVR4SWRTdHIFA25pbAUDU0VQARRrZXlXaXRoZHJhd2FsSGlzdG9yeQILdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAhF3aXRoZHJhd2FsSGlzdG9yeQkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQNTRVABG2tleVBlcmlvZFdpdGhkcmF3YWxBc3NldElkcwEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgxwZXJpb2RSZXdhcmQJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARprZXlQZXJpb2RXaXRoZHJhd2FsQW1vdW50cwEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhJwZXJpb2RSZXdhcmRBbW91bnQJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQASFwYXJzZVdpdGhkcmF3YWxSZXF1ZXN0VmFsdWVPckZhaWwBAXMEBXBhcnRzCQC1CQIFAXMFA1NFUAMJAAACCQCQAwEFBXBhcnRzAAUEBnN0YXR1cwkAkQMCBQVwYXJ0cwABBA1scEFzc2V0QW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwACCQEHd3JhcEVycgECFWludmFsaWQgbHBBc3NldEFtb3VudAQMdGFyZ2V0UGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwADCQEHd3JhcEVycgECFGludmFsaWQgdGFyZ2V0UGVyaW9kBAljbGFpbVR4SWQJAJEDAgUFcGFydHMABAkAlgoEBQZzdGF0dXMFDWxwQXNzZXRBbW91bnQFDHRhcmdldFBlcmlvZAUJY2xhaW1UeElkCQEIdGhyb3dFcnIBAiBpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCB2YWx1ZQAUZmFjdG9yeUFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBEWtleUZhY3RvcnlBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFFGZhY3RvcnlBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECF2ludmFsaWQgZmFjdG9yeSBhZGRyZXNzAA9scEFzc2V0SWRPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBDGtleUxwQXNzZXRJZAADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQDZBAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAPbHBBc3NldElkT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFD2xwQXNzZXRJZE9wdGlvbgkBB3dyYXBFcnIBAhFpbnZhbGlkIGxwQXNzZXRJZAAacHJveHlUcmVhc3VyeUFkZHJlc3NPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEAXMFByRtYXRjaDEJAKYIAQUBcwMJAAECBQckbWF0Y2gxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABpwcm94eVRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRpwcm94eVRyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh5pbnZhbGlkIHByb3h5IHRyZWFzdXJ5IGFkZHJlc3MAGW1haW5UcmVhc3VyeUFkZHJlc3NPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBFmtleU1haW5UcmVhc3VyeUFkZHJlc3MAAwkAAQIFByRtYXRjaDECBlN0cmluZwQBcwUHJG1hdGNoMQkApggBBQFzAwkAAQIFByRtYXRjaDECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAHWJ1c2luZXNzVHJlYXN1cnlBZGRyZXNzT3B0aW9uBAckbWF0Y2gwBRRmYWN0b3J5QWRkcmVzc09wdGlvbgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBAckbWF0Y2gxCQCdCAIFAWEJARprZXlCdXNpbmVzc1RyZWFzdXJ5QWRkcmVzcwADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQCmCAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAZbWFpblRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRltYWluVHJlYXN1cnlBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECHWludmFsaWQgbWFpbiB0cmVhc3VyeSBhZGRyZXNzAB1idXNpbmVzc1RyZWFzdXJ5QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBR1idXNpbmVzc1RyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAiFpbnZhbGlkIGJ1c2luZXNzIHRyZWFzdXJ5IGFkZHJlc3MAGnBvd2VyQ29udHJhY3RBZGRyZXNzT3B0aW9uBAckbWF0Y2gwBRRmYWN0b3J5QWRkcmVzc09wdGlvbgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBAckbWF0Y2gxCQCdCAIFAWEJARdrZXlQb3dlckNvbnRyYWN0QWRkcmVzcwADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQCmCAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAacG93ZXJDb250cmFjdEFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUacG93ZXJDb250cmFjdEFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIeaW52YWxpZCBwb3dlciBjb250cmFjdCBhZGRyZXNzABhwb3dlckFzc2V0SWRTdHJpbmdPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBD2tleVBvd2VyQXNzZXRJZAAJAQd3cmFwRXJyAQIYcG93ZXIgYXNzZXQgaWQgbm90IGZvdW5kABZsMm1wUHJveHlBZGRyZXNzT3B0aW9uBAckbWF0Y2gwBRRmYWN0b3J5QWRkcmVzc09wdGlvbgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBAckbWF0Y2gxCQCdCAIFAWEJARNrZXlMMm1wUHJveHlBZGRyZXNzAAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEAXMFByRtYXRjaDEJAKYIAQUBcwMJAAECBQckbWF0Y2gxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABZsMm1wUHJveHlBZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFFmwybXBQcm94eUFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIaaW52YWxpZCBsMm1wIHByb3h5IGFkZHJlc3MAF2wybXBBc3NldElkU3RyaW5nT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ5rZXlMMm1wQXNzZXRJZAAJAQd3cmFwRXJyAQIXbDJtcCBhc3NldCBpZCBub3QgZm91bmQBGWdldE1hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwBRRmYWN0b3J5QWRkcmVzc09wdGlvbgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAJmYQUHJG1hdGNoMAQHJG1hdGNoMQkAnQgCBQJmYQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDECBlN0cmluZwQDcHViBQckbWF0Y2gxCQDZBAEFA3B1YgUEdW5pdAUEdW5pdAELb25seUFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAELb25seUZhY3RvcnkBAWkJAQtvbmx5QWRkcmVzcwIFAWkFFGZhY3RvcnlBZGRyZXNzT3JGYWlsARBpc1RydXN0ZWRBZGRyZXNzAQFpBApsaXN0U3RyaW5nCQELdmFsdWVPckVsc2UCCQCdCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEda2V5VHJ1c3RlZEZpbmFsaXplQWRkcmVzc0xpc3QAAgAEC2FkZHJlc3NMaXN0CQC1CQIFCmxpc3RTdHJpbmcFA1NFUAkBD2NvbnRhaW5zRWxlbWVudAIFC2FkZHJlc3NMaXN0CQClCAEIBQFpDG9yaWdpbkNhbGxlcgEPcmV3YXJkRm9yT3B0aW9uAgdyZXdhcmRzBnRhcmdldAQBcwkAkAMBBQdyZXdhcmRzBAskdDA3NzAwNzcyNQkAkQMCBQdyZXdhcmRzAAAEAmEwCAULJHQwNzcwMDc3MjUCXzEEAnIwCAULJHQwNzcwMDc3MjUCXzIECyR0MDc3Mjg3NzUzCQCRAwIFB3Jld2FyZHMAAQQCYTEIBQskdDA3NzI4Nzc1MwJfMQQCcjEIBQskdDA3NzI4Nzc1MwJfMgQLJHQwNzc1Njc3ODEJAJEDAgUHcmV3YXJkcwACBAJhMggFCyR0MDc3NTY3NzgxAl8xBAJyMggFCyR0MDc3NTY3NzgxAl8yAwMJAGYCBQFzAAAJAAACBQJhMAUGdGFyZ2V0BwUCcjADAwkAZgIFAXMAAQkAAAIFAmExBQZ0YXJnZXQHBQJyMQMDCQBmAgUBcwACCQAAAgUCYTIFBnRhcmdldAcFAnIyBQR1bml0AQ5jYWxjdWxhdGVQcmljZQENbHBQYXJ0SW5XYXZlcwQTbHBBc3NldEFtb3VudFRvQnVybgkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBDWtleVdpdGhkcmF3YWwAAAAED2xwQXNzZXRRdWFudGl0eQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQ9scEFzc2V0SWRPckZhaWwJAQd3cmFwRXJyAQIUaW52YWxpZCBscEFzc2V0IGluZm8IcXVhbnRpdHkECG5ld1ByaWNlCQBrAwUNbHBQYXJ0SW5XYXZlcwUGU0NBTEU4CQBlAgUPbHBBc3NldFF1YW50aXR5BRNscEFzc2V0QW1vdW50VG9CdXJuBBNjaGVja0lmUHJpY2VOb3RaZXJvAwkBAiE9AgUIbmV3UHJpY2UAAAYJAQh0aHJvd0VycgECFExQIHByaWNlIGNhbm5vdCBiZSAwAwkAAAIFE2NoZWNrSWZQcmljZU5vdFplcm8FE2NoZWNrSWZQcmljZU5vdFplcm8EFGxwQXNzZXRGaW5hbFF1YW50aXR5CQBlAgUPbHBBc3NldFF1YW50aXR5BRNscEFzc2V0QW1vdW50VG9CdXJuCQCVCgMFCG5ld1ByaWNlBRNscEFzc2V0QW1vdW50VG9CdXJuBRRscEFzc2V0RmluYWxRdWFudGl0eQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEXY2xhaW1Db2xsYXRlcmFsSU5URVJOQUwCEHVzZXJBZGRyZXNzQnl0ZXMEdHhJZAQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEF3dpdGhkcmF3YWxSZXF1ZXN0T3B0aW9uCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARRrZXlXaXRoZHJhd2FsUmVxdWVzdAIFC3VzZXJBZGRyZXNzBQR0eElkCQEHd3JhcEVycgECGmludmFsaWQgd2l0aGRyYXdhbCByZXF1ZXN0BAskdDA4OTQ4OTA2MQkBIXBhcnNlV2l0aGRyYXdhbFJlcXVlc3RWYWx1ZU9yRmFpbAEFF3dpdGhkcmF3YWxSZXF1ZXN0T3B0aW9uBAZzdGF0dXMIBQskdDA4OTQ4OTA2MQJfMQQNbHBBc3NldEFtb3VudAgFCyR0MDg5NDg5MDYxAl8yBAx1bmxvY2tQZXJpb2QIBQskdDA4OTQ4OTA2MQJfMwQJY2xhaW1UeElkCAULJHQwODk0ODkwNjECXzQDCQBmAgUMdW5sb2NrUGVyaW9kBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEIdGhyb3dFcnIBAiFpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCBwZXJpb2QEC3ByaWNlT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARFrZXlQcmljZUZvclBlcmlvZAEFDHVubG9ja1BlcmlvZAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBAt3YXZlc0Ftb3VudAMJAGYCBQtwcmljZU9yRmFpbAAACQBrAwUNbHBBc3NldEFtb3VudAULcHJpY2VPckZhaWwFBlNDQUxFOAAABAx0YXJnZXRQZXJpb2QJAGUCBQx1bmxvY2tQZXJpb2QAAQQMYXNzZXRzU3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1MykCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBG2tleVBlcmlvZFdpdGhkcmF3YWxBc3NldElkcwEFDHRhcmdldFBlcmlvZAQNYW1vdW50c1N0cmluZwkBEUBleHRyTmF0aXZlKDEwNTMpAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARprZXlQZXJpb2RXaXRoZHJhd2FsQW1vdW50cwEFDHRhcmdldFBlcmlvZAQVdG90YWxMcEFtb3VudEluUGVyaW9kCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQETa2V5V2l0aGRyYXdhbFBlcmlvZAEFDHRhcmdldFBlcmlvZAAABA51c2VyUGFydFNDQUxFOAMJAAACBRV0b3RhbExwQW1vdW50SW5QZXJpb2QAAAAACQBrAwUNbHBBc3NldEFtb3VudAUGU0NBTEU4BRV0b3RhbExwQW1vdW50SW5QZXJpb2QKARJnZXRVc2VyUGFydEFtb3VudHMCDGN1cnJlbnRTdGF0ZQZhbW91bnQEDnVzZXJQYXJ0QW1vdW50CQBrAwkBDXBhcnNlSW50VmFsdWUBBQZhbW91bnQFDnVzZXJQYXJ0U0NBTEU4BQZTQ0FMRTgJAM0IAgUMY3VycmVudFN0YXRlCQCkAwEFDnVzZXJQYXJ0QW1vdW50BAthbW91bnRzTGlzdAkAvQkCBQ1hbW91bnRzU3RyaW5nBQNTRVAEDWFtb3VudHNQcmVmaXgJAQV2YWx1ZQEJAJEDAgULYW1vdW50c0xpc3QAAAQYYW1vdW50c0xpc3RXaXRob3V0UHJlZml4CQDRCAIJAL0JAgUNYW1vdW50c1N0cmluZwUDU0VQAAAED3VzZXJQYXJ0QW1vdW50cwoAAiRsBRhhbW91bnRzTGlzdFdpdGhvdXRQcmVmaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdldFVzZXJQYXJ0QW1vdW50cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQVdXNlclBhcnRBbW91bnRzU3RyaW5nCQC5CQIJAMwIAgUNYW1vdW50c1ByZWZpeAkAzAgCCQC5CQIFD3VzZXJQYXJ0QW1vdW50cwUDU0VQBQNuaWwFA1NFUAkAmAoGBQt1c2VyQWRkcmVzcwUNbHBBc3NldEFtb3VudAUMdGFyZ2V0UGVyaW9kBQt3YXZlc0Ftb3VudAUMYXNzZXRzU3RyaW5nBRV1c2VyUGFydEFtb3VudHNTdHJpbmcBJWNsYWltQ29sbGF0ZXJhbFJFQURPTkxZU3RyaW5nUmVzcG9uc2UCEHVzZXJBZGRyZXNzQnl0ZXMEdHhJZAQNJHQwMTA3NTAxMDkxNgkBF2NsYWltQ29sbGF0ZXJhbElOVEVSTkFMAgUQdXNlckFkZHJlc3NCeXRlcwUEdHhJZAQLdXNlckFkZHJlc3MIBQ0kdDAxMDc1MDEwOTE2Al8xBA1scEFzc2V0QW1vdW50CAUNJHQwMTA3NTAxMDkxNgJfMgQMdGFyZ2V0UGVyaW9kCAUNJHQwMTA3NTAxMDkxNgJfMwQLd2F2ZXNBbW91bnQIBQ0kdDAxMDc1MDEwOTE2Al80BAxhc3NldHNTdHJpbmcIBQ0kdDAxMDc1MDEwOTE2Al81BA1hbW91bnRzU3RyaW5nCAUNJHQwMTA3NTAxMDkxNgJfNgQGYXNzZXRzCQC5CQIJANEIAgkAvQkCBQxhc3NldHNTdHJpbmcFA1NFUAAAAgE6BAdhbW91bnRzCQC5CQIJANEIAgkAvQkCBQ1hbW91bnRzU3RyaW5nBQNTRVAAAAIBOgkAuQkCCQDMCAICBiVkJXMlcwkAzAgCCQCkAwEFC3dhdmVzQW1vdW50CQDMCAIFBmFzc2V0cwkAzAgCBQdhbW91bnRzBQNuaWwFA1NFUAEOZ2V0UmV3YXJkU3BsaXQBFWdlbmVyYXRvclJld2FyZEFtb3VudAQPcG93ZXJTaGFyZVJhdGlvCQCWAwEJAMwIAgAACQDMCAIJAJcDAQkAzAgCCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQESa2V5UG93ZXJTaGFyZVJhdGlvAAAACQDMCAIFBlNDQUxFOAUDbmlsBQNuaWwEEWJ1c2luZXNzUGFydFJhdGlvCQCWAwEJAMwIAgAACQDMCAIJAJcDAQkAzAgCCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEXa2V5QnVzaW5lc3NUcmVhc3VyeVBhcnQAAAAJAMwIAgUGU0NBTEU4BQNuaWwFA25pbAQRYW1vdW50VG9Qb3dlclBhcnQJAGsDBRVnZW5lcmF0b3JSZXdhcmRBbW91bnQFD3Bvd2VyU2hhcmVSYXRpbwUGU0NBTEU4BBpidXNpbmVzc1RyZWFzdXJ5QW1vdW50UGFydAkAawMFFWdlbmVyYXRvclJld2FyZEFtb3VudAURYnVzaW5lc3NQYXJ0UmF0aW8FBlNDQUxFOAQPcmV3YXJkUmVtYWluZGVyCQBlAgkAZQIFFWdlbmVyYXRvclJld2FyZEFtb3VudAURYW1vdW50VG9Qb3dlclBhcnQFGmJ1c2luZXNzVHJlYXN1cnlBbW91bnRQYXJ0AwkAZgIFD3Jld2FyZFJlbWFpbmRlcgAACQCVCgMFEWFtb3VudFRvUG93ZXJQYXJ0BRpidXNpbmVzc1RyZWFzdXJ5QW1vdW50UGFydAUPcmV3YXJkUmVtYWluZGVyCQEIdGhyb3dFcnIBAiphbW91bnQgdG8gbWFpbiB0cmVhc3VyeSBjYW5ub3QgYmUgbmVnYXRpdmUBGGNhbGNSZXdhcmRTcGxpdEZvckFtb3VudAEGYW1vdW50BA0kdDAxMjAxNTEyMTA4CQEOZ2V0UmV3YXJkU3BsaXQBBQZhbW91bnQEEWFtb3VudFRvUG93ZXJQYXJ0CAUNJHQwMTIwMTUxMjEwOAJfMQQaYnVzaW5lc3NUcmVhc3VyeUFtb3VudFBhcnQIBQ0kdDAxMjAxNTEyMTA4Al8yBA9yZXdhcmRSZW1haW5kZXIIBQ0kdDAxMjAxNTEyMTA4Al8zBBVibG9ja1Byb2Nlc3NpbmdSZXdhcmQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBGGtleUJsb2NrUHJvY2Vzc2luZ1Jld2FyZAAJAQd3cmFwRXJyAQIfaW52YWxpZCBibG9jayBwcm9jZXNzaW5nIHJld2FyZAQgYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3IJAGkCBRVibG9ja1Byb2Nlc3NpbmdSZXdhcmQFHGJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemVNYXgECnRvTHBBbW91bnQJAGUCBQ9yZXdhcmRSZW1haW5kZXIFFWJsb2NrUHJvY2Vzc2luZ1Jld2FyZAkAlwoFBRFhbW91bnRUb1Bvd2VyUGFydAUaYnVzaW5lc3NUcmVhc3VyeUFtb3VudFBhcnQFFWJsb2NrUHJvY2Vzc2luZ1Jld2FyZAUKdG9McEFtb3VudAUGYW1vdW50DAFpARNyZXdhcmRTcGxpdFJFQURPTkxZAAQRdGFyZ2V0QmxvY2tIZWlnaHQJAGUCBQZoZWlnaHQAAQQPdGFyZ2V0QmxvY2tJbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAO0HAQURdGFyZ2V0QmxvY2tIZWlnaHQJAQd3cmFwRXJyAQISaW52YWxpZCBibG9jayBpbmZvBBR0cmVhc3VyeVJld2FyZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEPcmV3YXJkRm9yT3B0aW9uAggFD3RhcmdldEJsb2NrSW5mbwdyZXdhcmRzBRpwcm94eVRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBB3dyYXBFcnIBCQCsAgICI2ludmFsaWQgdHJlYXN1cnkgcmV3YXJkIGZvciBoZWlnaHQgCQCkAwEFEXRhcmdldEJsb2NrSGVpZ2h0CQCUCgIFA25pbAkBGGNhbGNSZXdhcmRTcGxpdEZvckFtb3VudAEFFHRyZWFzdXJ5UmV3YXJkT3JGYWlsAWkBB2NsYWltTFABEHVzZXJBZGRyZXNzQnl0ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQJYXZhaWxhYmxlCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEMa2V5QXZhaWxhYmxlAQULdXNlckFkZHJlc3MAAAQHY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBCmtleUNsYWltZWQBBQt1c2VyQWRkcmVzcwAABA5mYWN0b3J5QWN0aW9ucwMJAGYCBQlhdmFpbGFibGUAAAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAg10cmFuc2ZlckFzc2V0CQDMCAIFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgUJYXZhaWxhYmxlCQDMCAIFD2xwQXNzZXRJZE9yRmFpbAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJAQxrZXlBdmFpbGFibGUBBQt1c2VyQWRkcmVzcwkAzAgCAAAFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEKa2V5Q2xhaW1lZAEFC3VzZXJBZGRyZXNzCQDMCAIJAGQCBQdjbGFpbWVkBQlhdmFpbGFibGUFA25pbAUDbmlsBQNuaWwJAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0JAJQKAgUDbmlsBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGl6ZQUQdXNlckFkZHJlc3NCeXRlcxNkb25hdGlvblBhcnRJbldhdmVzDWxwUGFydEluV2F2ZXMQY2xhaW1QYXJ0SW5XYXZlcxVwb3dlclN0YWtlUGFydEluV2F2ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEDHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEPa2V5UGVyaW9kTGVuZ3RoAAkBB3dyYXBFcnIBAhVpbnZhbGlkIHBlcmlvZCBsZW5ndGgEEmN1cnJlbnRTdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEOa2V5U3RhcnRIZWlnaHQBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECFGludmFsaWQgc3RhcnQgaGVpZ2h0BBJjdXJyZW50UHJpY2VPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEWtleVByaWNlRm9yUGVyaW9kAQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBBJuZXh0QmxvY2tUb1Byb2Nlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAQd3cmFwRXJyAQIdaW52YWxpZCBuZXh0IGJsb2NrIHRvIHByb2Nlc3MED3BlcmlvZEVuZEhlaWdodAkAZQIJAGQCBRJjdXJyZW50U3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAABBAZjaGVja3MJAMwIAgMDCQEQaXNUcnVzdGVkQWRkcmVzcwEFAWkGCQAAAggFAWkMb3JpZ2luQ2FsbGVyBRltYWluVHJlYXN1cnlBZGRyZXNzT3JGYWlsBgkBCHRocm93RXJyAQIccGVybWlzc2lvbiBkZW5pZWQgKGZpbmFsaXplKQkAzAgCAwkAZgIFEm5leHRCbG9ja1RvUHJvY2VzcwUPcGVyaW9kRW5kSGVpZ2h0BgkBCHRocm93RXJyAQISdW5wcm9jZXNzZWQgYmxvY2tzCQDMCAIDCQBnAgUTZG9uYXRpb25QYXJ0SW5XYXZlcwAABgkBCHRocm93RXJyAQIVaW52YWxpZCBkb25hdGlvbiBwYXJ0CQDMCAIDCQBnAgUNbHBQYXJ0SW5XYXZlcwAABgkBCHRocm93RXJyAQIPaW52YWxpZCBscCBwYXJ0CQDMCAIDCQBnAgUQY2xhaW1QYXJ0SW5XYXZlcwAABgkBCHRocm93RXJyAQISaW52YWxpZCBjbGFpbSBwYXJ0CQDMCAIDCQBnAgUVcG93ZXJTdGFrZVBhcnRJbldhdmVzAAAGCQEIdGhyb3dFcnIBAhZpbnZhbGlkIFBXUiBzdGFrZSBwYXJ0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDE1NDgxMTU1ODYJAQ5jYWxjdWxhdGVQcmljZQEFDWxwUGFydEluV2F2ZXMECG5ld1ByaWNlCAUNJHQwMTU0ODExNTU4NgJfMQQTbHBBc3NldEFtb3VudFRvQnVybggFDSR0MDE1NDgxMTU1ODYCXzIEFGxwQXNzZXRGaW5hbFF1YW50aXR5CAUNJHQwMTU0ODExNTU4NgJfMwQJbmV3UGVyaW9kCQBkAgUTY3VycmVudFBlcmlvZE9yRmFpbAABCgEMYWRkTmV3QWN0aW9uAgdhY3Rpb25zB3BheW1lbnQEDSR0MDE1NzM0MTU3OTYFB2FjdGlvbnMED3NjcmlwdFRyYW5zZmVycwgFDSR0MDE1NzM0MTU3OTYCXzEEDmFzc2V0SWRzU3RyaW5nCAUNJHQwMTU3MzQxNTc5NgJfMgQNYW1vdW50c1N0cmluZwgFDSR0MDE1NzM0MTU3OTYCXzMEDXBheW1lbnRBbW91bnQIBQdwYXltZW50BmFtb3VudAQOcGF5bWVudEFzc2V0SWQIBQdwYXltZW50B2Fzc2V0SWQDCQAAAgkBD2Fzc2V0SWRUb1N0cmluZwEFDnBheW1lbnRBc3NldElkBRdsMm1wQXNzZXRJZFN0cmluZ09yRmFpbAQTdHJhbnNmZXJUb0wybXBQcm94eQkBDlNjcmlwdFRyYW5zZmVyAwUWbDJtcFByb3h5QWRkcmVzc09yRmFpbAUNcGF5bWVudEFtb3VudAUOcGF5bWVudEFzc2V0SWQJAJUKAwkAzQgCBQ9zY3JpcHRUcmFuc2ZlcnMFE3RyYW5zZmVyVG9MMm1wUHJveHkFDmFzc2V0SWRzU3RyaW5nBQ1hbW91bnRzU3RyaW5nBBFuZXdBc3NldElkc1N0cmluZwkArAICAgIlcwkAuQkCCQDMCAIFDmFzc2V0SWRzU3RyaW5nCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQ5wYXltZW50QXNzZXRJZAUDbmlsBQNTRVAEEG5ld0Ftb3VudHNTdHJpbmcJAKwCAgICJWQJALkJAgkAzAgCBQ1hbW91bnRzU3RyaW5nCQDMCAIJAKQDAQUNcGF5bWVudEFtb3VudAUDbmlsBQNTRVAEEW5ld1NjcmlwdFRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDBRRmYWN0b3J5QWRkcmVzc09yRmFpbAUNcGF5bWVudEFtb3VudAUOcGF5bWVudEFzc2V0SWQJAJUKAwkAzQgCBQ9zY3JpcHRUcmFuc2ZlcnMFEW5ld1NjcmlwdFRyYW5zZmVyBRFuZXdBc3NldElkc1N0cmluZwUQbmV3QW1vdW50c1N0cmluZwQNJHQwMTY1OTAxNjY4MQoAAiRsCAUBaQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAgACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMYWRkTmV3QWN0aW9uAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBA9zY3JpcHRUcmFuc2ZlcnMIBQ0kdDAxNjU5MDE2NjgxAl8xBAhBc3NldElkcwgFDSR0MDE2NTkwMTY2ODECXzIEB0Ftb3VudHMIBQ0kdDAxNjU5MDE2NjgxAl8zBA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBFGtleVBvd2VyTWFuYWdlckJvbnVzAQUTY3VycmVudFBlcmlvZE9yRmFpbAkAzAgCBRVwb3dlclN0YWtlUGFydEluV2F2ZXMFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQETa2V5Q2xhaW1XYXZlc0Ftb3VudAEFE2N1cnJlbnRQZXJpb2RPckZhaWwJAMwIAgUQY2xhaW1QYXJ0SW5XYXZlcwUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJARBrZXlDdXJyZW50UGVyaW9kAAkAzAgCBQluZXdQZXJpb2QFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQERa2V5UHJpY2VGb3JQZXJpb2QBBQluZXdQZXJpb2QJAMwIAgUIbmV3UHJpY2UFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEOa2V5U3RhcnRIZWlnaHQBBQluZXdQZXJpb2QJAMwIAgkAZAIFD3BlcmlvZEVuZEhlaWdodAABBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgRidXJuCQDMCAIFE2xwQXNzZXRBbW91bnRUb0J1cm4FA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQENa2V5V2l0aGRyYXdhbAAJAMwIAgAABQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBE2tleVdpdGhkcmF3YWxQZXJpb2QBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQDMCAIFE2xwQXNzZXRBbW91bnRUb0J1cm4FA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQELa2V5SW52ZXN0ZWQBBQR1bml0CQDMCAIFDWxwUGFydEluV2F2ZXMFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEKa2V5RG9uYXRlZAEFBHVuaXQJAMwIAgUTZG9uYXRpb25QYXJ0SW5XYXZlcwUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAILc3RyaW5nRW50cnkJAMwIAgkBG2tleVBlcmlvZFdpdGhkcmF3YWxBc3NldElkcwEFE2N1cnJlbnRQZXJpb2RPckZhaWwJAMwIAgUIQXNzZXRJZHMFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC3N0cmluZ0VudHJ5CQDMCAIJARprZXlQZXJpb2RXaXRoZHJhd2FsQW1vdW50cwEFE2N1cnJlbnRQZXJpb2RPckZhaWwJAMwIAgUHQW1vdW50cwUDbmlsBQNuaWwFA25pbAkAlAoCBQ9zY3JpcHRUcmFuc2ZlcnMFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGZpbmFsaXplUkVBRE9OTFkEE2RvbmF0aW9uUGFydEluV2F2ZXMNbHBQYXJ0SW5XYXZlcxBjbGFpbVBhcnRJbldhdmVzFXBvd2VyU3Rha2VQYXJ0SW5XYXZlcwQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEDHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEPa2V5UGVyaW9kTGVuZ3RoAAkBB3dyYXBFcnIBAhVpbnZhbGlkIHBlcmlvZCBsZW5ndGgEEmN1cnJlbnRTdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEOa2V5U3RhcnRIZWlnaHQBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECFGludmFsaWQgc3RhcnQgaGVpZ2h0BBJjdXJyZW50UHJpY2VPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEWtleVByaWNlRm9yUGVyaW9kAQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBBJuZXh0QmxvY2tUb1Byb2Nlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAQd3cmFwRXJyAQIdaW52YWxpZCBuZXh0IGJsb2NrIHRvIHByb2Nlc3MED3BlcmlvZEVuZEhlaWdodAkAZQIJAGQCBRJjdXJyZW50U3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAABBAZjaGVja3MJAMwIAgMJAGYCBRJuZXh0QmxvY2tUb1Byb2Nlc3MFD3BlcmlvZEVuZEhlaWdodAYJAQh0aHJvd0VycgECEnVucHJvY2Vzc2VkIGJsb2NrcwkAzAgCAwkAZwIFE2RvbmF0aW9uUGFydEluV2F2ZXMAAAYJAQh0aHJvd0VycgECFWludmFsaWQgZG9uYXRpb24gcGFydAkAzAgCAwkAZwIFDWxwUGFydEluV2F2ZXMAAAYJAQh0aHJvd0VycgECD2ludmFsaWQgbHAgcGFydAkAzAgCAwkAZwIFEGNsYWltUGFydEluV2F2ZXMAAAYJAQh0aHJvd0VycgECEmludmFsaWQgY2xhaW0gcGFydAkAzAgCAwkAZwIFFXBvd2VyU3Rha2VQYXJ0SW5XYXZlcwAABgkBCHRocm93RXJyAQIWaW52YWxpZCBQV1Igc3Rha2UgcGFydAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA0kdDAxOTY5ODE5ODAzCQEOY2FsY3VsYXRlUHJpY2UBBQ1scFBhcnRJbldhdmVzBAhuZXdQcmljZQgFDSR0MDE5Njk4MTk4MDMCXzEEE2xwQXNzZXRBbW91bnRUb0J1cm4IBQ0kdDAxOTY5ODE5ODAzAl8yBBRscEFzc2V0RmluYWxRdWFudGl0eQgFDSR0MDE5Njk4MTk4MDMCXzMJAJQKAgUDbmlsCQCYCgYFEGNsYWltUGFydEluV2F2ZXMFDWxwUGFydEluV2F2ZXMFE2RvbmF0aW9uUGFydEluV2F2ZXMFCG5ld1ByaWNlBRNscEFzc2V0QW1vdW50VG9CdXJuBRRscEFzc2V0RmluYWxRdWFudGl0eQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZpbnZlc3QBEHVzZXJBZGRyZXNzQnl0ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEEmN1cnJlbnRTdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEOa2V5U3RhcnRIZWlnaHQBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECFGludmFsaWQgc3RhcnQgaGVpZ2h0BBJpbnZlc3RQZXJpb2RMZW5ndGgJARFAZXh0ck5hdGl2ZSgxMDUwKQIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEVa2V5SW52ZXN0UGVyaW9kTGVuZ3RoAAQLaGVpZ2h0Q2hlY2sDCQBmAgkAZAIFEmN1cnJlbnRTdGFydEhlaWdodAUSaW52ZXN0UGVyaW9kTGVuZ3RoBQZoZWlnaHQGCQEIdGhyb3dFcnIBAiF0b28gbGF0ZSB0byBpbnZlc3QgaW4gdGhpcyBwZXJpb2QDCQAAAgULaGVpZ2h0Q2hlY2sFC2hlaWdodENoZWNrBBJjdXJyZW50UHJpY2VPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEWtleVByaWNlRm9yUGVyaW9kAQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBAdwYXltZW50AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBAhBpbnZhbGlkIHBheW1lbnRzBA0kdDAyMDkxMjIxMDg5AwMJAAACCAUHcGF5bWVudAdhc3NldElkBQR1bml0CQBmAggFB3BheW1lbnQGYW1vdW50AAAHCQCUCgIIBQdwYXltZW50BmFtb3VudAgFB3BheW1lbnQHYXNzZXRJZAkBCHRocm93RXJyAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAQNcGF5bWVudEFtb3VudAgFDSR0MDIwOTEyMjEwODkCXzEEDnBheW1lbnRBc3NldElkCAUNJHQwMjA5MTIyMTA4OQJfMgQMdHJlYXN1cnlQYXJ0CQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEXa2V5QnVzaW5lc3NUcmVhc3VyeVBhcnQAAAAEG3BheW1lbnRzV2l0aG91dFRyZWFzdXJ5UGFydAkAawMFDXBheW1lbnRBbW91bnQJAGUCBQZTQ0FMRTgFDHRyZWFzdXJ5UGFydAUGU0NBTEU4BA1scEFzc2V0QW1vdW50AwkAZgIFEmN1cnJlbnRQcmljZU9yRmFpbAAACQBrAwUbcGF5bWVudHNXaXRob3V0VHJlYXN1cnlQYXJ0BQZTQ0FMRTgFEmN1cnJlbnRQcmljZU9yRmFpbAAABAhpbnZlc3RlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBC2tleUludmVzdGVkAQUEdW5pdAAABAdhY3Rpb25zCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFGW1haW5UcmVhc3VyeUFkZHJlc3NPckZhaWwFG3BheW1lbnRzV2l0aG91dFRyZWFzdXJ5UGFydAUOcGF5bWVudEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUdYnVzaW5lc3NUcmVhc3VyeUFkZHJlc3NPckZhaWwFDHRyZWFzdXJ5UGFydAUOcGF5bWVudEFzc2V0SWQFA25pbAQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJAQtrZXlJbnZlc3RlZAEFBHVuaXQJAMwIAgkAZAIFCGludmVzdGVkBRtwYXltZW50c1dpdGhvdXRUcmVhc3VyeVBhcnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCB3JlaXNzdWUJAMwIAgUNbHBBc3NldEFtb3VudAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAINdHJhbnNmZXJBc3NldAkAzAgCBRB1c2VyQWRkcmVzc0J5dGVzCQDMCAIFDWxwQXNzZXRBbW91bnQJAMwIAgUPbHBBc3NldElkT3JGYWlsBQNuaWwFA25pbAUDbmlsCQCUCgIFB2FjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3ARB1c2VyQWRkcmVzc0J5dGVzBAtjaGVja0NhbGxlcgkBC29ubHlGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3VzZXJBZGRyZXNzCQEHQWRkcmVzcwEFEHVzZXJBZGRyZXNzQnl0ZXMEE2N1cnJlbnRQZXJpb2RPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEGtleUN1cnJlbnRQZXJpb2QACQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kBAxwZXJpb2RMZW5ndGgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBD2tleVBlcmlvZExlbmd0aAAJAQd3cmFwRXJyAQIVaW52YWxpZCBwZXJpb2QgbGVuZ3RoBBJjdXJyZW50U3RhcnRIZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBDmtleVN0YXJ0SGVpZ2h0AQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAhRpbnZhbGlkIHN0YXJ0IGhlaWdodAQLaGVpZ2h0Q2hlY2sDCQBmAgkAZAIFEmN1cnJlbnRTdGFydEhlaWdodAUMcGVyaW9kTGVuZ3RoBQZoZWlnaHQGCQEIdGhyb3dFcnIBAiN0b28gbGF0ZSB0byB3aXRoZHJhdyBpbiB0aGlzIHBlcmlvZAMJAAACBQtoZWlnaHRDaGVjawULaGVpZ2h0Q2hlY2sEB3BheW1lbnQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAQh0aHJvd0VycgEJAQd3cmFwRXJyAQIQaW52YWxpZCBwYXltZW50cwQOcGF5bWVudEFzc2V0SWQDCQAAAggFB3BheW1lbnQHYXNzZXRJZAUPbHBBc3NldElkT3JGYWlsBQ9scEFzc2V0SWRPckZhaWwJAQh0aHJvd0VycgECFWludmFsaWQgcGF5bWVudCBhc3NldAQNcGF5bWVudEFtb3VudAMJAGYCCAUHcGF5bWVudAZhbW91bnQAAAgFB3BheW1lbnQGYW1vdW50CQEIdGhyb3dFcnIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50BAp3aXRoZHJhd2FsCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQENa2V5V2l0aGRyYXdhbAAAAAQHYWN0aW9ucwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRRmYWN0b3J5QWRkcmVzc09yRmFpbAUNcGF5bWVudEFtb3VudAUOcGF5bWVudEFzc2V0SWQFA25pbAQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJAQ1rZXlXaXRoZHJhd2FsAAkAzAgCCQBkAgUKd2l0aGRyYXdhbAUNcGF5bWVudEFtb3VudAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAILc3RyaW5nRW50cnkJAMwIAgkBFGtleVdpdGhkcmF3YWxSZXF1ZXN0AgULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQJAMwIAgkBFnZhbHVlV2l0aGRyYXdhbFJlcXVlc3QEBQdQRU5ESU5HBQ1wYXltZW50QW1vdW50CQBkAgUTY3VycmVudFBlcmlvZE9yRmFpbAABBQR1bml0BQNuaWwFA25pbAUDbmlsAwkAAAIFDmZhY3RvcnlBY3Rpb25zBQ5mYWN0b3J5QWN0aW9ucwkAlAoCBQdhY3Rpb25zBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jYW5jZWxXaXRoZHJhdwIQdXNlckFkZHJlc3NCeXRlcwR0eElkBAtjaGVja0NhbGxlcgkBC29ubHlGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAQh0aHJvd0VycgECHGNhbmNlbFdpdGhkcmF3IGlzIGRlcHJlY2F0ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPY2xhaW1Db2xsYXRlcmFsAhB1c2VyQWRkcmVzc0J5dGVzBHR4SWQEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQNJHQwMjQwNTYyNDI0MQkBF2NsYWltQ29sbGF0ZXJhbElOVEVSTkFMAgUQdXNlckFkZHJlc3NCeXRlcwkA2QQBBQR0eElkBAt1c2VyQWRkcmVzcwgFDSR0MDI0MDU2MjQyNDECXzEEDWxwQXNzZXRBbW91bnQIBQ0kdDAyNDA1NjI0MjQxAl8yBAx0YXJnZXRQZXJpb2QIBQ0kdDAyNDA1NjI0MjQxAl8zBAt3YXZlc0Ftb3VudAgFDSR0MDI0MDU2MjQyNDECXzQEDGFzc2V0c1N0cmluZwgFDSR0MDI0MDU2MjQyNDECXzUEDWFtb3VudHNTdHJpbmcIBQ0kdDAyNDA1NjI0MjQxAl82BAphc3NldHNMaXN0CQDRCAIJAL0JAgUMYXNzZXRzU3RyaW5nBQNTRVAAAAQLYW1vdW50c0xpc3QJANEIAgkAvQkCBQ1hbW91bnRzU3RyaW5nBQNTRVAAAAQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAILZGVsZXRlRW50cnkJAMwIAgkBFGtleVdpdGhkcmF3YWxSZXF1ZXN0AgULdXNlckFkZHJlc3MJANkEAQUEdHhJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJARRrZXlXaXRoZHJhd2FsSGlzdG9yeQIFC3VzZXJBZGRyZXNzCQDZBAEFBHR4SWQJAMwIAgUNbHBBc3NldEFtb3VudAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIOdHJhbnNmZXJBc3NldHMJAMwIAgUQdXNlckFkZHJlc3NCeXRlcwkAzAgCBQphc3NldHNMaXN0CQDMCAIFC2Ftb3VudHNMaXN0BQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETY2xhaW1Db2xsYXRlcmFsQnVsawIQdXNlckFkZHJlc3NCeXRlcwV0eElkcwQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCgEMYWRkTmV3QWN0aW9uAgVzdGF0ZQR0eElkBA0kdDAyNDk5NzI1MTk2CQEXY2xhaW1Db2xsYXRlcmFsSU5URVJOQUwCBRB1c2VyQWRkcmVzc0J5dGVzCQDZBAEFBHR4SWQEC3VzZXJBZGRyZXNzCAUNJHQwMjQ5OTcyNTE5NgJfMQQNbHBBc3NldEFtb3VudAgFDSR0MDI0OTk3MjUxOTYCXzIEDHRhcmdldFBlcmlvZAgFDSR0MDI0OTk3MjUxOTYCXzMEC3dhdmVzQW1vdW50CAUNJHQwMjQ5OTcyNTE5NgJfNAQMYXNzZXRzU3RyaW5nCAUNJHQwMjQ5OTcyNTE5NgJfNQQNYW1vdW50c1N0cmluZwgFDSR0MDI0OTk3MjUxOTYCXzYECmFzc2V0c0xpc3QJANEIAgkAvQkCBQxhc3NldHNTdHJpbmcFA1NFUAAABAthbW91bnRzTGlzdAkA0QgCCQC9CQIFDWFtb3VudHNTdHJpbmcFA1NFUAAABApuZXdBY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC2RlbGV0ZUVudHJ5CQDMCAIJARRrZXlXaXRoZHJhd2FsUmVxdWVzdAIFC3VzZXJBZGRyZXNzCQDZBAEFBHR4SWQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEUa2V5V2l0aGRyYXdhbEhpc3RvcnkCBQt1c2VyQWRkcmVzcwkA2QQBBQR0eElkCQDMCAIFDWxwQXNzZXRBbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDnRyYW5zZmVyQXNzZXRzCQDMCAIFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgUKYXNzZXRzTGlzdAkAzAgCBQthbW91bnRzTGlzdAUDbmlsBQNuaWwFA25pbAkAzggCBQVzdGF0ZQUKbmV3QWN0aW9ucwQRYWxsRmFjdG9yeUFjdGlvbnMKAAIkbAUFdHhJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZE5ld0FjdGlvbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlAoCBQNuaWwFEWFsbEZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF2NsYWltQ29sbGF0ZXJhbFJFQURPTkxZAhB1c2VyQWRkcmVzc0J5dGVzBHR4SWQECHJlc3BvbnNlCQElY2xhaW1Db2xsYXRlcmFsUkVBRE9OTFlTdHJpbmdSZXNwb25zZQIFEHVzZXJBZGRyZXNzQnl0ZXMJANkEAQUEdHhJZAkAlAoCBQNuaWwFCHJlc3BvbnNlAWkBG2NsYWltQ29sbGF0ZXJhbEJ1bGtSRUFET05MWQIQdXNlckFkZHJlc3NCeXRlcwV0eElkcwoBC3Byb2Nlc3NUeElkAgVzdGF0ZQR0eElkBAhyZXNwb25zZQkBJWNsYWltQ29sbGF0ZXJhbFJFQURPTkxZU3RyaW5nUmVzcG9uc2UCBRB1c2VyQWRkcmVzc0J5dGVzCQDZBAEFBHR4SWQJAM0IAgUFc3RhdGUFCHJlc3BvbnNlBAxhbGxSZXNwb25zZXMKAAIkbAUFdHhJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBC3Byb2Nlc3NUeElkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCUCgIFA25pbAUMYWxsUmVzcG9uc2VzAWkBDXByb2Nlc3NCbG9ja3MBEHVzZXJBZGRyZXNzQnl0ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEDHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEPa2V5UGVyaW9kTGVuZ3RoAAkBB3dyYXBFcnIBAhVpbnZhbGlkIHBlcmlvZCBsZW5ndGgEEmN1cnJlbnRTdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEOa2V5U3RhcnRIZWlnaHQBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECFGludmFsaWQgc3RhcnQgaGVpZ2h0BBJjdXJyZW50UHJpY2VPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEWtleVByaWNlRm9yUGVyaW9kAQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBBJuZXh0QmxvY2tUb1Byb2Nlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAQd3cmFwRXJyAQIdaW52YWxpZCBuZXh0IGJsb2NrIHRvIHByb2Nlc3MED3BlcmlvZEVuZEhlaWdodAkAZQIJAGQCBRJjdXJyZW50U3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAABBBlibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplAwMDCQBnAgUGaGVpZ2h0BRJuZXh0QmxvY2tUb1Byb2Nlc3MDCQBnAgUSbmV4dEJsb2NrVG9Qcm9jZXNzBRJjdXJyZW50U3RhcnRIZWlnaHQGCQAAAgUTY3VycmVudFBlcmlvZE9yRmFpbAAABwkAZwIFD3BlcmlvZEVuZEhlaWdodAUSbmV4dEJsb2NrVG9Qcm9jZXNzBwkAlwMBCQDMCAIJAGQCCQBlAgUPcGVyaW9kRW5kSGVpZ2h0BRJuZXh0QmxvY2tUb1Byb2Nlc3MAAQkAzAgCBRxibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplTWF4BQNuaWwJAQh0aHJvd0VycgEJAQd3cmFwRXJyAQIUaW52YWxpZCB0YXJnZXQgYmxvY2sEFWJsb2NrUHJvY2Vzc2luZ1Jld2FyZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEYa2V5QmxvY2tQcm9jZXNzaW5nUmV3YXJkAAkBB3dyYXBFcnIBAh9pbnZhbGlkIGJsb2NrIHByb2Nlc3NpbmcgcmV3YXJkBCBibG9ja1Byb2Nlc3NpbmdSZXdhcmRCeUdlbmVyYXRvcgkAaQIFFWJsb2NrUHJvY2Vzc2luZ1Jld2FyZAUZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQQpYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3JSZW1haW5kZXIJAGUCBRVibG9ja1Byb2Nlc3NpbmdSZXdhcmQJAGgCBSBibG9ja1Byb2Nlc3NpbmdSZXdhcmRCeUdlbmVyYXRvcgUZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQoBA21hcAIDYWNjA2luYwMJAGcCBQNpbmMFGWJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemUFA2FjYwQRdGFyZ2V0QmxvY2tIZWlnaHQJAGQCBRJuZXh0QmxvY2tUb1Byb2Nlc3MFA2luYwQPdGFyZ2V0QmxvY2tJbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAO0HAQURdGFyZ2V0QmxvY2tIZWlnaHQJAQd3cmFwRXJyAQISaW52YWxpZCBibG9jayBpbmZvBBR0cmVhc3VyeVJld2FyZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEPcmV3YXJkRm9yT3B0aW9uAggFD3RhcmdldEJsb2NrSW5mbwdyZXdhcmRzBRpwcm94eVRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBB3dyYXBFcnIBCQCsAgICI2ludmFsaWQgdHJlYXN1cnkgcmV3YXJkIGZvciBoZWlnaHQgCQCkAwEFEXRhcmdldEJsb2NrSGVpZ2h0BAlnZW5lcmF0b3IIBQ90YXJnZXRCbG9ja0luZm8JZ2VuZXJhdG9yBAlhdmFpbGFibGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQxrZXlBdmFpbGFibGUBBQlnZW5lcmF0b3IAAAQMY2FsbGVyUmV3YXJkAwkAAAIFA2luYwkAZQIFGWJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemUAAQkAZAIFIGJsb2NrUHJvY2Vzc2luZ1Jld2FyZEJ5R2VuZXJhdG9yBSlibG9ja1Byb2Nlc3NpbmdSZXdhcmRCeUdlbmVyYXRvclJlbWFpbmRlcgUgYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3IEDSR0MDI5MDk2MjkyMDQJAQ5nZXRSZXdhcmRTcGxpdAEFFHRyZWFzdXJ5UmV3YXJkT3JGYWlsBBJzaGFyZUFtb3VudFRvUG93ZXIIBQ0kdDAyOTA5NjI5MjA0Al8xBBpidXNpbmVzc1RyZWFzdXJ5QW1vdW50UGFydAgFDSR0MDI5MDk2MjkyMDQCXzIED3Jld2FyZFJlbWFpbmRlcggFDSR0MDI5MDk2MjkyMDQCXzMEDWxwQXNzZXRBbW91bnQDCQBmAgUSY3VycmVudFByaWNlT3JGYWlsAAAJAGsDCQBlAgUPcmV3YXJkUmVtYWluZGVyBQxjYWxsZXJSZXdhcmQFBlNDQUxFOAUSY3VycmVudFByaWNlT3JGYWlsAAAEFGZhY3RvcnlBY3Rpb25zU2luZ2xlCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC3N0cmluZ0VudHJ5CQDMCAIJARFrZXlCbG9ja1Byb2Nlc3NlZAEFEXRhcmdldEJsb2NrSGVpZ2h0CQDMCAIJALkJAgkAzAgCCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAMwIAgkApAMBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQDMCAIJAKUIAQUJZ2VuZXJhdG9yCQDMCAIJANgEAQUQdXNlckFkZHJlc3NCeXRlcwkAzAgCCQCkAwEFFHRyZWFzdXJ5UmV3YXJkT3JGYWlsCQDMCAIJAKQDAQUMY2FsbGVyUmV3YXJkCQDMCAIJAKQDAQUNbHBBc3NldEFtb3VudAkAzAgCCQCkAwEFEnNoYXJlQW1vdW50VG9Qb3dlcgUDbmlsBQNTRVAFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEMa2V5QXZhaWxhYmxlAQUJZ2VuZXJhdG9yCQDMCAIJAGQCBQlhdmFpbGFibGUFDWxwQXNzZXRBbW91bnQFA25pbAUDbmlsBQNuaWwDCQAAAgUUZmFjdG9yeUFjdGlvbnNTaW5nbGUFFGZhY3RvcnlBY3Rpb25zU2luZ2xlBA0kdDAzMDA1MjMwMTI3BQNhY2MECmxwQXNzZXRBY2MIBQ0kdDAzMDA1MjMwMTI3Al8xBAlyZXdhcmRBY2MIBQ0kdDAzMDA1MjMwMTI3Al8yBBNidXNpbmVzc1RyZWFzdXJ5QWNjCAUNJHQwMzAwNTIzMDEyNwJfMwQTcG93ZXJTaGFyZURhdGFUdXBsZQgFDSR0MDMwMDUyMzAxMjcCXzQEDSR0MDMwMTM0MzAyMDAFE3Bvd2VyU2hhcmVEYXRhVHVwbGUEDXBvd2VyU2hhcmVBY2MIBQ0kdDAzMDEzNDMwMjAwAl8xBBdnZW5lcmF0b3JQb3dlclNoYXJlTGlzdAgFDSR0MDMwMTM0MzAyMDACXzIEGm5ld0dlbmVyYXRvclBvd2VyU2hhcmVMaXN0CQDNCAIFF2dlbmVyYXRvclBvd2VyU2hhcmVMaXN0CQCUCgIJAKUIAQUJZ2VuZXJhdG9yBRJzaGFyZUFtb3VudFRvUG93ZXIJAJYKBAkAZAIFCmxwQXNzZXRBY2MFDWxwQXNzZXRBbW91bnQJAGQCBQlyZXdhcmRBY2MFFHRyZWFzdXJ5UmV3YXJkT3JGYWlsCQBkAgUTYnVzaW5lc3NUcmVhc3VyeUFjYwUaYnVzaW5lc3NUcmVhc3VyeUFtb3VudFBhcnQJAJQKAgkAZAIFDXBvd2VyU2hhcmVBY2MFEnNoYXJlQW1vdW50VG9Qb3dlcgUabmV3R2VuZXJhdG9yUG93ZXJTaGFyZUxpc3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EBGxpc3QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4JAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwUDbmlsBA0kdDAzMDY0ODMwODEwCgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAAAAAAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA21hcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUAwkAAAIFDSR0MDMwNjQ4MzA4MTAFDSR0MDMwNjQ4MzA4MTAEE3Bvd2VyU2hhcmVEYXRhVHVwbGUIBQ0kdDAzMDY0ODMwODEwAl80BB5yZXdhcmRUb0J1c2luZXNzVHJlYXN1cnlBbW91bnQIBQ0kdDAzMDY0ODMwODEwAl8zBBFyZXdhcmRBbW91bnRUb3RhbAgFDSR0MDMwNjQ4MzA4MTACXzIEEmxwQXNzZXRBbW91bnRUb3RhbAgFDSR0MDMwNjQ4MzA4MTACXzEEDSR0MDMwODE0MzA4ODMFE3Bvd2VyU2hhcmVEYXRhVHVwbGUEEmFtb3VudFRvUG93ZXJUb3RhbAgFDSR0MDMwODE0MzA4ODMCXzEEFXBvd2VyU2hhcmVBbW91bnRzTGlzdAgFDSR0MDMwODE0MzA4ODMCXzIEGnJld2FyZFRvTWFpblRyZWFzdXJ5QW1vdW50CQBlAgkAZQIJAGUCBRFyZXdhcmRBbW91bnRUb3RhbAUecmV3YXJkVG9CdXNpbmVzc1RyZWFzdXJ5QW1vdW50BRVibG9ja1Byb2Nlc3NpbmdSZXdhcmQFEmFtb3VudFRvUG93ZXJUb3RhbAQIaW52ZXN0ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQtrZXlJbnZlc3RlZAEFBHVuaXQAAAQRcG93ZXJTaGFyZUFjdGlvbnMDCQBmAgUSYW1vdW50VG9Qb3dlclRvdGFsAAAEDnRyYW5zZmVyQWN0aW9uCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCGXRyYW5zZmVyRnJvbVByb3h5VHJlYXN1cnkJAMwIAggFFGZhY3RvcnlBZGRyZXNzT3JGYWlsBWJ5dGVzCQDMCAIFEmFtb3VudFRvUG93ZXJUb3RhbAUDbmlsBQNuaWwFA25pbAMJAAACBQ50cmFuc2ZlckFjdGlvbgUOdHJhbnNmZXJBY3Rpb24EEHRvdGFsUG93ZXJBbW91bnQJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCBHN3YXAJAMwIAgUYcG93ZXJBc3NldElkU3RyaW5nT3JGYWlsCQDMCAIFBVdBVkVTCQDMCAIFEmFtb3VudFRvUG93ZXJUb3RhbAUDbmlsBQNuaWwDCQAAAgUQdG90YWxQb3dlckFtb3VudAUQdG90YWxQb3dlckFtb3VudAQTdG90YWxQb3dlckFtb3VudEludAQHJG1hdGNoMAUQdG90YWxQb3dlckFtb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEB3BBbW91bnQFByRtYXRjaDAFB3BBbW91bnQAAAoBEHN0YWtlUG93ZXJJbnZva2UCA2FjYwRuZXh0BA0kdDAzMTc1NzMxNzkyBQRuZXh0BAlnZW5lcmF0b3IIBQ0kdDAzMTc1NzMxNzkyAl8xBAtzaGFyZUFtb3VudAgFDSR0MDMxNzU3MzE3OTICXzIDCQBmAgUSYW1vdW50VG9Qb3dlclRvdGFsAAAEC3Bvd2VyQW1vdW50CQBrAwULc2hhcmVBbW91bnQFE3RvdGFsUG93ZXJBbW91bnRJbnQFEmFtb3VudFRvUG93ZXJUb3RhbAQDaW52CQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgpwb3dlclN0YWtlCQDMCAIJANkEAQUJZ2VuZXJhdG9yCQDMCAIJANkEAQUYcG93ZXJBc3NldElkU3RyaW5nT3JGYWlsCQDMCAIFC3Bvd2VyQW1vdW50BQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwEEnBvd2VyU3Rha2VzQWN0aW9ucwoAAiRsBRVwb3dlclNoYXJlQW1vdW50c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEHN0YWtlUG93ZXJJbnZva2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAMJAAACBRJwb3dlclN0YWtlc0FjdGlvbnMFEnBvd2VyU3Rha2VzQWN0aW9ucwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgURcG93ZXJTaGFyZUFjdGlvbnMFEXBvd2VyU2hhcmVBY3Rpb25zBAdhY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCB3JlaXNzdWUJAMwIAgUSbHBBc3NldEFtb3VudFRvdGFsBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAMwIAgkAZAIFEm5leHRCbG9ja1RvUHJvY2VzcwUZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIZdHJhbnNmZXJGcm9tUHJveHlUcmVhc3VyeQkAzAgCCAUZbWFpblRyZWFzdXJ5QWRkcmVzc09yRmFpbAVieXRlcwkAzAgCBRpyZXdhcmRUb01haW5UcmVhc3VyeUFtb3VudAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIZdHJhbnNmZXJGcm9tUHJveHlUcmVhc3VyeQkAzAgCBRB1c2VyQWRkcmVzc0J5dGVzCQDMCAIFFWJsb2NrUHJvY2Vzc2luZ1Jld2FyZAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIZdHJhbnNmZXJGcm9tUHJveHlUcmVhc3VyeQkAzAgCCAUdYnVzaW5lc3NUcmVhc3VyeUFkZHJlc3NPckZhaWwFYnl0ZXMJAMwIAgUecmV3YXJkVG9CdXNpbmVzc1RyZWFzdXJ5QW1vdW50BQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBC2tleUludmVzdGVkAQUEdW5pdAkAzAgCCQBkAgUIaW52ZXN0ZWQFGnJld2FyZFRvTWFpblRyZWFzdXJ5QW1vdW50BQNuaWwFA25pbAUDbmlsAwkAAAIFB2FjdGlvbnMFB2FjdGlvbnMJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQJcHVibGljS2V5BAckbWF0Y2gwCQEZZ2V0TWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQDcHViBQckbWF0Y2gwBQNwdWIIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCXB1YmxpY0tledgJ0HQ=", "height": 3453142, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ELMGPbmq8Bk27E9DeTv38ndrSBJVdWMZ8Qp54rm374WL Next: E4WgVHUj1Dz2VTcm3YVhgTPDpa54V3htkWGSyk6HC8u4 Diff:
OldNewDifferences
528528 then true
529529 else (aF.originCaller == at))
530530 then true
531- else i("permission denied"), if ((cj > ck))
531+ else i("permission denied (finalize)"), if ((cj > ck))
532532 then true
533533 else i("unprocessed blocks"), if ((cd >= 0))
534534 then true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "calculator.ride"
77
88 let c = 100000000
99
1010 let d = "PENDING"
1111
1212 let e = "WAVES"
1313
1414 let f = 10
1515
1616 func g (h) = ((b + ": ") + h)
1717
1818
1919 func i (h) = throw(g(h))
2020
2121
2222 func j (k) = {
2323 let l = k
2424 if ($isInstanceOf(l, "ByteVector"))
2525 then {
2626 let m = l
2727 toBase58String(m)
2828 }
2929 else if ($isInstanceOf(l, "Unit"))
3030 then e
3131 else throw("Match error")
3232 }
3333
3434
3535 func n (h) = if ((h == e))
3636 then unit
3737 else fromBase58String(h)
3838
3939
4040 func o (p) = if ((0 > p))
4141 then -(p)
4242 else p
4343
4444
4545 func q () = makeString(["%s", "factory"], a)
4646
4747
4848 func r () = makeString(["%s", "managerPublicKey"], a)
4949
5050
5151 func s () = makeString(["%s", "lpAssetId"], a)
5252
5353
5454 func t () = makeString(["%s", "proxyTreasury"], a)
5555
5656
5757 func u () = makeString(["%s", "mainTreasury"], a)
5858
5959
6060 func v () = makeString(["%s", "businessTreasury"], a)
6161
6262
6363 func w () = makeString(["%s", "trustedAddressList"], a)
6464
6565
6666 func x () = makeString(["%s", "businessTreasuryPart"], a)
6767
6868
6969 func y () = makeString(["%s", "powerContract"], a)
7070
7171
7272 func z () = makeString(["%s", "powerShareRatio"], a)
7373
7474
7575 func A () = makeString(["%s", "powerAssetId"], a)
7676
7777
7878 func B () = makeString(["%s", "l2mpAssetId"], a)
7979
8080
8181 func C () = makeString(["%s", "l2mpProxy"], a)
8282
8383
8484 func D (k) = makeString(["%s%s", "invested", j(k)], a)
8585
8686
8787 func E (k) = makeString(["%s%s", "donated", j(k)], a)
8888
8989
9090 func F (G) = makeString(["%s%s", "available", toString(G)], a)
9191
9292
9393 func H (G) = makeString(["%s%s", "claimed", toString(G)], a)
9494
9595
9696 func I () = makeString(["%s", "currentPeriod"], a)
9797
9898
9999 func J (K) = makeString(["%s%d", "price", toString(K)], a)
100100
101101
102102 func L (K) = makeString(["%s%d", "startHeight", toString(K)], a)
103103
104104
105105 func M (K) = makeString(["%s%d", "powerManagerBonus", toString(K)], a)
106106
107107
108108 func N (K) = makeString(["%s%d", "claimWavesAmount", toString(K)], a)
109109
110110
111111 func O () = "%s__periodLength"
112112
113113
114114 func P () = "%s__investPeriodLength"
115115
116116
117117 func Q () = "%s__blockProcessingReward"
118118
119119
120120 func R () = "%s__nextBlockToProcess"
121121
122122
123123 func S (T) = makeString(["%s%d", "blockProcessed", toString(T)], a)
124124
125125
126126 func U () = "%s__withdrawal"
127127
128128
129129 func V (K) = makeString(["%s%d", "withdrawalPeriod", toString(K)], a)
130130
131131
132132 func W (G,X) = makeString(["%s%s%s", "withdrawal", toString(G), toBase58String(X)], a)
133133
134134
135135 func Y (Z,aa,ab,ac) = {
136136 let ad = {
137137 let l = ac
138138 if ($isInstanceOf(l, "ByteVector"))
139139 then {
140140 let m = l
141141 toBase58String(m)
142142 }
143143 else if ($isInstanceOf(l, "Unit"))
144144 then "SOON"
145145 else throw("Match error")
146146 }
147147 makeString(["%s%d%d%s", Z, toString(aa), toString(ab), ad], a)
148148 }
149149
150150
151151 func ae (G,X) = makeString(["%s%s%s", "withdrawalHistory", toString(G), toBase58String(X)], a)
152152
153153
154154 func af (K) = makeString(["%s%d", "periodReward", toString(K)], a)
155155
156156
157157 func ag (K) = makeString(["%s%d", "periodRewardAmount", toString(K)], a)
158158
159159
160160 func ah (h) = {
161161 let ai = split(h, a)
162162 if ((size(ai) == 5))
163163 then {
164164 let Z = ai[1]
165165 let aa = valueOrErrorMessage(parseInt(ai[2]), g("invalid lpAssetAmount"))
166166 let ab = valueOrErrorMessage(parseInt(ai[3]), g("invalid targetPeriod"))
167167 let ac = ai[4]
168168 $Tuple4(Z, aa, ab, ac)
169169 }
170170 else i("invalid withdrawal request value")
171171 }
172172
173173
174174 let aj = {
175175 let l = getString(this, q())
176176 if ($isInstanceOf(l, "String"))
177177 then {
178178 let h = l
179179 addressFromString(h)
180180 }
181181 else if ($isInstanceOf(l, "Unit"))
182182 then unit
183183 else throw("Match error")
184184 }
185185
186186 let ak = valueOrErrorMessage(aj, g("invalid factory address"))
187187
188188 let al = {
189189 let l = aj
190190 if ($isInstanceOf(l, "Address"))
191191 then {
192192 let am = l
193193 let an = getString(am, s())
194194 if ($isInstanceOf(an, "String"))
195195 then {
196196 let h = an
197197 fromBase58String(h)
198198 }
199199 else if ($isInstanceOf(an, "Unit"))
200200 then unit
201201 else throw("Match error")
202202 }
203203 else if ($isInstanceOf(l, "Unit"))
204204 then unit
205205 else throw("Match error")
206206 }
207207
208208 let ao = valueOrErrorMessage(al, g("invalid lpAssetId"))
209209
210210 let ap = {
211211 let l = aj
212212 if ($isInstanceOf(l, "Address"))
213213 then {
214214 let am = l
215215 let an = getString(am, t())
216216 if ($isInstanceOf(an, "String"))
217217 then {
218218 let h = an
219219 addressFromString(h)
220220 }
221221 else if ($isInstanceOf(an, "Unit"))
222222 then unit
223223 else throw("Match error")
224224 }
225225 else if ($isInstanceOf(l, "Unit"))
226226 then unit
227227 else throw("Match error")
228228 }
229229
230230 let aq = valueOrErrorMessage(ap, g("invalid proxy treasury address"))
231231
232232 let ar = {
233233 let l = aj
234234 if ($isInstanceOf(l, "Address"))
235235 then {
236236 let am = l
237237 let an = getString(am, u())
238238 if ($isInstanceOf(an, "String"))
239239 then {
240240 let h = an
241241 addressFromString(h)
242242 }
243243 else if ($isInstanceOf(an, "Unit"))
244244 then unit
245245 else throw("Match error")
246246 }
247247 else if ($isInstanceOf(l, "Unit"))
248248 then unit
249249 else throw("Match error")
250250 }
251251
252252 let as = {
253253 let l = aj
254254 if ($isInstanceOf(l, "Address"))
255255 then {
256256 let am = l
257257 let an = getString(am, v())
258258 if ($isInstanceOf(an, "String"))
259259 then {
260260 let h = an
261261 addressFromString(h)
262262 }
263263 else if ($isInstanceOf(an, "Unit"))
264264 then unit
265265 else throw("Match error")
266266 }
267267 else if ($isInstanceOf(l, "Unit"))
268268 then unit
269269 else throw("Match error")
270270 }
271271
272272 let at = valueOrErrorMessage(ar, g("invalid main treasury address"))
273273
274274 let au = valueOrErrorMessage(as, g("invalid business treasury address"))
275275
276276 let av = {
277277 let l = aj
278278 if ($isInstanceOf(l, "Address"))
279279 then {
280280 let am = l
281281 let an = getString(am, y())
282282 if ($isInstanceOf(an, "String"))
283283 then {
284284 let h = an
285285 addressFromString(h)
286286 }
287287 else if ($isInstanceOf(an, "Unit"))
288288 then unit
289289 else throw("Match error")
290290 }
291291 else if ($isInstanceOf(l, "Unit"))
292292 then unit
293293 else throw("Match error")
294294 }
295295
296296 let aw = valueOrErrorMessage(av, g("invalid power contract address"))
297297
298298 let ax = valueOrErrorMessage(getString(ak, A()), g("power asset id not found"))
299299
300300 let ay = {
301301 let l = aj
302302 if ($isInstanceOf(l, "Address"))
303303 then {
304304 let am = l
305305 let an = getString(am, C())
306306 if ($isInstanceOf(an, "String"))
307307 then {
308308 let h = an
309309 addressFromString(h)
310310 }
311311 else if ($isInstanceOf(an, "Unit"))
312312 then unit
313313 else throw("Match error")
314314 }
315315 else if ($isInstanceOf(l, "Unit"))
316316 then unit
317317 else throw("Match error")
318318 }
319319
320320 let az = valueOrErrorMessage(ay, g("invalid l2mp proxy address"))
321321
322322 let aA = valueOrErrorMessage(getString(ak, B()), g("l2mp asset id not found"))
323323
324324 func aB () = {
325325 let l = aj
326326 if ($isInstanceOf(l, "Address"))
327327 then {
328328 let aC = l
329329 let an = getString(aC, r())
330330 if ($isInstanceOf(an, "String"))
331331 then {
332332 let aD = an
333333 fromBase58String(aD)
334334 }
335335 else unit
336336 }
337337 else unit
338338 }
339339
340340
341341 func aE (aF,aG) = if ((aF.caller == aG))
342342 then true
343343 else i("permission denied")
344344
345345
346346 func aH (aF) = aE(aF, ak)
347347
348348
349349 func aI (aF) = {
350350 let aJ = valueOrElse(getString(ak, w()), "")
351351 let aK = split(aJ, a)
352352 containsElement(aK, toString(aF.originCaller))
353353 }
354354
355355
356356 func aL (aM,aN) = {
357357 let h = size(aM)
358358 let aO = aM[0]
359359 let aP = aO._1
360360 let aQ = aO._2
361361 let aR = aM[1]
362362 let aS = aR._1
363363 let aT = aR._2
364364 let aU = aM[2]
365365 let aV = aU._1
366366 let aW = aU._2
367367 if (if ((h > 0))
368368 then (aP == aN)
369369 else false)
370370 then aQ
371371 else if (if ((h > 1))
372372 then (aS == aN)
373373 else false)
374374 then aT
375375 else if (if ((h > 2))
376376 then (aV == aN)
377377 else false)
378378 then aW
379379 else unit
380380 }
381381
382382
383383 func aX (aY) = {
384384 let aZ = valueOrElse(getInteger(ak, U()), 0)
385385 let ba = valueOrErrorMessage(assetInfo(ao), g("invalid lpAsset info")).quantity
386386 let bb = fraction(aY, c, (ba - aZ))
387387 let bc = if ((bb != 0))
388388 then true
389389 else i("LP price cannot be 0")
390390 if ((bc == bc))
391391 then {
392392 let bd = (ba - aZ)
393393 $Tuple3(bb, aZ, bd)
394394 }
395395 else throw("Strict value is not equal to itself.")
396396 }
397397
398398
399399 func be (bf,X) = {
400400 let G = Address(bf)
401401 let bg = valueOrErrorMessage(getInteger(ak, I()), g("invalid period"))
402402 let bh = valueOrErrorMessage(getString(ak, W(G, X)), g("invalid withdrawal request"))
403403 let bi = ah(bh)
404404 let Z = bi._1
405405 let aa = bi._2
406406 let bj = bi._3
407407 let ac = bi._4
408408 if ((bj > bg))
409409 then i("invalid withdrawal request period")
410410 else {
411411 let bk = valueOrErrorMessage(getInteger(ak, J(bj)), g("invalid price"))
412412 let bl = if ((bk > 0))
413413 then fraction(aa, bk, c)
414414 else 0
415415 let ab = (bj - 1)
416416 let bm = getStringValue(ak, af(ab))
417417 let bn = getStringValue(ak, ag(ab))
418418 let bo = valueOrElse(getInteger(ak, V(ab)), 0)
419419 let bp = if ((bo == 0))
420420 then 0
421421 else fraction(aa, c, bo)
422422 func bq (br,bs) = {
423423 let bt = fraction(parseIntValue(bs), bp, c)
424424 (br :+ toString(bt))
425425 }
426426
427427 let bu = split_51C(bn, a)
428428 let bv = value(bu[0])
429429 let bw = removeByIndex(split_51C(bn, a), 0)
430430 let bx = {
431431 let by = bw
432432 let bz = size(by)
433433 let bA = nil
434434 func bB (bC,bD) = if ((bD >= bz))
435435 then bC
436436 else bq(bC, by[bD])
437437
438438 func bE (bC,bD) = if ((bD >= bz))
439439 then bC
440440 else throw("List size exceeds 10")
441441
442442 bE(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
443443 }
444444 let bF = makeString([bv, makeString(bx, a)], a)
445445 $Tuple6(G, aa, ab, bl, bm, bF)
446446 }
447447 }
448448
449449
450450 func bG (bf,X) = {
451451 let bH = be(bf, X)
452452 let G = bH._1
453453 let aa = bH._2
454454 let ab = bH._3
455455 let bl = bH._4
456456 let bm = bH._5
457457 let bn = bH._6
458458 let bI = makeString(removeByIndex(split_51C(bm, a), 0), ":")
459459 let bJ = makeString(removeByIndex(split_51C(bn, a), 0), ":")
460460 makeString(["%d%s%s", toString(bl), bI, bJ], a)
461461 }
462462
463463
464464 func bK (bL) = {
465465 let bM = max([0, min([valueOrElse(getInteger(ak, z()), 0), c])])
466466 let bN = max([0, min([valueOrElse(getInteger(ak, x()), 0), c])])
467467 let bO = fraction(bL, bM, c)
468468 let bP = fraction(bL, bN, c)
469469 let bQ = ((bL - bO) - bP)
470470 if ((bQ > 0))
471471 then $Tuple3(bO, bP, bQ)
472472 else i("amount to main treasury cannot be negative")
473473 }
474474
475475
476476 func bR (bs) = {
477477 let bS = bK(bs)
478478 let bO = bS._1
479479 let bP = bS._2
480480 let bQ = bS._3
481481 let bT = valueOrErrorMessage(getInteger(ak, Q()), g("invalid block processing reward"))
482482 let bU = (bT / f)
483483 let bV = (bQ - bT)
484484 $Tuple5(bO, bP, bT, bV, bs)
485485 }
486486
487487
488488 @Callable(aF)
489489 func rewardSplitREADONLY () = {
490490 let bW = (height - 1)
491491 let bX = valueOrErrorMessage(blockInfoByHeight(bW), g("invalid block info"))
492492 let bY = valueOrErrorMessage(aL(bX.rewards, aq), g(("invalid treasury reward for height " + toString(bW))))
493493 $Tuple2(nil, bR(bY))
494494 }
495495
496496
497497
498498 @Callable(aF)
499499 func claimLP (bf) = {
500500 let bZ = aH(aF)
501501 if ((bZ == bZ))
502502 then {
503503 let G = Address(bf)
504504 let ca = valueOrElse(getInteger(ak, F(G)), 0)
505505 let cb = valueOrElse(getInteger(ak, H(G)), 0)
506506 let cc = if ((ca > 0))
507507 then [invoke(ak, "transferAsset", [bf, ca, ao], nil), invoke(ak, "integerEntry", [F(G), 0], nil), invoke(ak, "integerEntry", [H(G), (cb + ca)], nil)]
508508 else i("nothing to claim")
509509 $Tuple2(nil, cc)
510510 }
511511 else throw("Strict value is not equal to itself.")
512512 }
513513
514514
515515
516516 @Callable(aF)
517517 func finalize (bf,cd,aY,ce,cf) = {
518518 let bZ = aH(aF)
519519 if ((bZ == bZ))
520520 then {
521521 let bg = valueOrErrorMessage(getInteger(ak, I()), g("invalid period"))
522522 let cg = valueOrErrorMessage(getInteger(ak, O()), g("invalid period length"))
523523 let ch = valueOrErrorMessage(getInteger(ak, L(bg)), g("invalid start height"))
524524 let ci = valueOrErrorMessage(getInteger(ak, J(bg)), g("invalid price"))
525525 let cj = valueOrErrorMessage(getInteger(ak, R()), g("invalid next block to process"))
526526 let ck = ((ch + cg) - 1)
527527 let cl = [if (if (aI(aF))
528528 then true
529529 else (aF.originCaller == at))
530530 then true
531- else i("permission denied"), if ((cj > ck))
531+ else i("permission denied (finalize)"), if ((cj > ck))
532532 then true
533533 else i("unprocessed blocks"), if ((cd >= 0))
534534 then true
535535 else i("invalid donation part"), if ((aY >= 0))
536536 then true
537537 else i("invalid lp part"), if ((ce >= 0))
538538 then true
539539 else i("invalid claim part"), if ((cf >= 0))
540540 then true
541541 else i("invalid PWR stake part")]
542542 if ((cl == cl))
543543 then {
544544 let cm = aX(aY)
545545 let bb = cm._1
546546 let aZ = cm._2
547547 let bd = cm._3
548548 let cn = (bg + 1)
549549 func co (cp,cq) = {
550550 let cr = cp
551551 let cs = cr._1
552552 let ct = cr._2
553553 let bn = cr._3
554554 let cu = cq.amount
555555 let cv = cq.assetId
556556 if ((j(cv) == aA))
557557 then {
558558 let cw = ScriptTransfer(az, cu, cv)
559559 $Tuple3((cs :+ cw), ct, bn)
560560 }
561561 else {
562562 let cx = ("%s" + makeString([ct, j(cv)], a))
563563 let cy = ("%d" + makeString([bn, toString(cu)], a))
564564 let cz = ScriptTransfer(ak, cu, cv)
565565 $Tuple3((cs :+ cz), cx, cy)
566566 }
567567 }
568568
569569 let cA = {
570570 let by = aF.payments
571571 let bz = size(by)
572572 let bA = $Tuple3(nil, "", "")
573573 func bB (bC,bD) = if ((bD >= bz))
574574 then bC
575575 else co(bC, by[bD])
576576
577577 func bE (bC,bD) = if ((bD >= bz))
578578 then bC
579579 else throw("List size exceeds 10")
580580
581581 bE(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
582582 }
583583 let cs = cA._1
584584 let cB = cA._2
585585 let cC = cA._3
586586 let cc = [invoke(ak, "integerEntry", [M(bg), cf], nil), invoke(ak, "integerEntry", [N(bg), ce], nil), invoke(ak, "integerEntry", [I(), cn], nil), invoke(ak, "integerEntry", [J(cn), bb], nil), invoke(ak, "integerEntry", [L(cn), (ck + 1)], nil), invoke(ak, "burn", [aZ], nil), invoke(ak, "integerEntry", [U(), 0], nil), invoke(ak, "integerEntry", [V(bg), aZ], nil), invoke(ak, "integerEntry", [D(unit), aY], nil), invoke(ak, "integerEntry", [E(unit), cd], nil), invoke(ak, "stringEntry", [af(bg), cB], nil), invoke(ak, "stringEntry", [ag(bg), cC], nil)]
587587 $Tuple2(cs, cc)
588588 }
589589 else throw("Strict value is not equal to itself.")
590590 }
591591 else throw("Strict value is not equal to itself.")
592592 }
593593
594594
595595
596596 @Callable(aF)
597597 func finalizeREADONLY (cd,aY,ce,cf) = {
598598 let bg = valueOrErrorMessage(getInteger(ak, I()), g("invalid period"))
599599 let cg = valueOrErrorMessage(getInteger(ak, O()), g("invalid period length"))
600600 let ch = valueOrErrorMessage(getInteger(ak, L(bg)), g("invalid start height"))
601601 let ci = valueOrErrorMessage(getInteger(ak, J(bg)), g("invalid price"))
602602 let cj = valueOrErrorMessage(getInteger(ak, R()), g("invalid next block to process"))
603603 let ck = ((ch + cg) - 1)
604604 let cl = [if ((cj > ck))
605605 then true
606606 else i("unprocessed blocks"), if ((cd >= 0))
607607 then true
608608 else i("invalid donation part"), if ((aY >= 0))
609609 then true
610610 else i("invalid lp part"), if ((ce >= 0))
611611 then true
612612 else i("invalid claim part"), if ((cf >= 0))
613613 then true
614614 else i("invalid PWR stake part")]
615615 if ((cl == cl))
616616 then {
617617 let cD = aX(aY)
618618 let bb = cD._1
619619 let aZ = cD._2
620620 let bd = cD._3
621621 $Tuple2(nil, $Tuple6(ce, aY, cd, bb, aZ, bd))
622622 }
623623 else throw("Strict value is not equal to itself.")
624624 }
625625
626626
627627
628628 @Callable(aF)
629629 func invest (bf) = {
630630 let bZ = aH(aF)
631631 if ((bZ == bZ))
632632 then {
633633 let G = Address(bf)
634634 let bg = valueOrErrorMessage(getInteger(ak, I()), g("invalid period"))
635635 let ch = valueOrErrorMessage(getInteger(ak, L(bg)), g("invalid start height"))
636636 let cE = getIntegerValue(ak, P())
637637 let cF = if (((ch + cE) > height))
638638 then true
639639 else i("too late to invest in this period")
640640 if ((cF == cF))
641641 then {
642642 let ci = valueOrErrorMessage(getInteger(ak, J(bg)), g("invalid price"))
643643 let cq = if ((size(aF.payments) == 1))
644644 then aF.payments[0]
645645 else i("invalid payments")
646646 let cG = if (if ((cq.assetId == unit))
647647 then (cq.amount > 0)
648648 else false)
649649 then $Tuple2(cq.amount, cq.assetId)
650650 else i("invalid payment amount")
651651 let cu = cG._1
652652 let cv = cG._2
653653 let cH = valueOrElse(getInteger(ak, x()), 0)
654654 let cI = fraction(cu, (c - cH), c)
655655 let aa = if ((ci > 0))
656656 then fraction(cI, c, ci)
657657 else 0
658658 let cJ = valueOrElse(getInteger(ak, D(unit)), 0)
659659 let cp = [ScriptTransfer(at, cI, cv), ScriptTransfer(au, cH, cv)]
660660 let cc = [invoke(ak, "integerEntry", [D(unit), (cJ + cI)], nil), invoke(ak, "reissue", [aa], nil), invoke(ak, "transferAsset", [bf, aa, ao], nil)]
661661 $Tuple2(cp, cc)
662662 }
663663 else throw("Strict value is not equal to itself.")
664664 }
665665 else throw("Strict value is not equal to itself.")
666666 }
667667
668668
669669
670670 @Callable(aF)
671671 func withdraw (bf) = {
672672 let bZ = aH(aF)
673673 if ((bZ == bZ))
674674 then {
675675 let G = Address(bf)
676676 let bg = valueOrErrorMessage(getInteger(ak, I()), g("invalid period"))
677677 let cg = valueOrErrorMessage(getInteger(ak, O()), g("invalid period length"))
678678 let ch = valueOrErrorMessage(getInteger(ak, L(bg)), g("invalid start height"))
679679 let cF = if (((ch + cg) > height))
680680 then true
681681 else i("too late to withdraw in this period")
682682 if ((cF == cF))
683683 then {
684684 let cq = if ((size(aF.payments) == 1))
685685 then aF.payments[0]
686686 else i(g("invalid payments"))
687687 let cv = if ((cq.assetId == ao))
688688 then ao
689689 else i("invalid payment asset")
690690 let cu = if ((cq.amount > 0))
691691 then cq.amount
692692 else i("invalid payment amount")
693693 let cK = valueOrElse(getInteger(ak, U()), 0)
694694 let cp = [ScriptTransfer(ak, cu, cv)]
695695 let cc = [invoke(ak, "integerEntry", [U(), (cK + cu)], nil), invoke(ak, "stringEntry", [W(G, aF.transactionId), Y(d, cu, (bg + 1), unit)], nil)]
696696 if ((cc == cc))
697697 then $Tuple2(cp, cc)
698698 else throw("Strict value is not equal to itself.")
699699 }
700700 else throw("Strict value is not equal to itself.")
701701 }
702702 else throw("Strict value is not equal to itself.")
703703 }
704704
705705
706706
707707 @Callable(aF)
708708 func cancelWithdraw (bf,X) = {
709709 let bZ = aH(aF)
710710 if ((bZ == bZ))
711711 then i("cancelWithdraw is deprecated")
712712 else throw("Strict value is not equal to itself.")
713713 }
714714
715715
716716
717717 @Callable(aF)
718718 func claimCollateral (bf,X) = {
719719 let bZ = aH(aF)
720720 if ((bZ == bZ))
721721 then {
722722 let cL = be(bf, fromBase58String(X))
723723 let G = cL._1
724724 let aa = cL._2
725725 let ab = cL._3
726726 let bl = cL._4
727727 let bm = cL._5
728728 let bn = cL._6
729729 let cM = removeByIndex(split_51C(bm, a), 0)
730730 let bu = removeByIndex(split_51C(bn, a), 0)
731731 let cc = [invoke(ak, "deleteEntry", [W(G, fromBase58String(X))], nil), invoke(ak, "integerEntry", [ae(G, fromBase58String(X)), aa], nil), invoke(ak, "transferAssets", [bf, cM, bu], nil)]
732732 $Tuple2(nil, cc)
733733 }
734734 else throw("Strict value is not equal to itself.")
735735 }
736736
737737
738738
739739 @Callable(aF)
740740 func claimCollateralBulk (bf,cN) = {
741741 let bZ = aH(aF)
742742 if ((bZ == bZ))
743743 then {
744744 func co (cO,X) = {
745745 let cP = be(bf, fromBase58String(X))
746746 let G = cP._1
747747 let aa = cP._2
748748 let ab = cP._3
749749 let bl = cP._4
750750 let bm = cP._5
751751 let bn = cP._6
752752 let cM = removeByIndex(split_51C(bm, a), 0)
753753 let bu = removeByIndex(split_51C(bn, a), 0)
754754 let cQ = [invoke(ak, "deleteEntry", [W(G, fromBase58String(X))], nil), invoke(ak, "integerEntry", [ae(G, fromBase58String(X)), aa], nil), invoke(ak, "transferAssets", [bf, cM, bu], nil)]
755755 (cO ++ cQ)
756756 }
757757
758758 let cR = {
759759 let by = cN
760760 let bz = size(by)
761761 let bA = nil
762762 func bB (bC,bD) = if ((bD >= bz))
763763 then bC
764764 else co(bC, by[bD])
765765
766766 func bE (bC,bD) = if ((bD >= bz))
767767 then bC
768768 else throw("List size exceeds 10")
769769
770770 bE(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
771771 }
772772 $Tuple2(nil, cR)
773773 }
774774 else throw("Strict value is not equal to itself.")
775775 }
776776
777777
778778
779779 @Callable(aF)
780780 func claimCollateralREADONLY (bf,X) = {
781781 let cS = bG(bf, fromBase58String(X))
782782 $Tuple2(nil, cS)
783783 }
784784
785785
786786
787787 @Callable(aF)
788788 func claimCollateralBulkREADONLY (bf,cN) = {
789789 func cT (cO,X) = {
790790 let cS = bG(bf, fromBase58String(X))
791791 (cO :+ cS)
792792 }
793793
794794 let cU = {
795795 let by = cN
796796 let bz = size(by)
797797 let bA = nil
798798 func bB (bC,bD) = if ((bD >= bz))
799799 then bC
800800 else cT(bC, by[bD])
801801
802802 func bE (bC,bD) = if ((bD >= bz))
803803 then bC
804804 else throw("List size exceeds 10")
805805
806806 bE(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
807807 }
808808 $Tuple2(nil, cU)
809809 }
810810
811811
812812
813813 @Callable(aF)
814814 func processBlocks (bf) = {
815815 let bZ = aH(aF)
816816 if ((bZ == bZ))
817817 then {
818818 let G = Address(bf)
819819 let bg = valueOrErrorMessage(getInteger(ak, I()), g("invalid period"))
820820 let cg = valueOrErrorMessage(getInteger(ak, O()), g("invalid period length"))
821821 let ch = valueOrErrorMessage(getInteger(ak, L(bg)), g("invalid start height"))
822822 let ci = valueOrErrorMessage(getInteger(ak, J(bg)), g("invalid price"))
823823 let cj = valueOrErrorMessage(getInteger(ak, R()), g("invalid next block to process"))
824824 let ck = ((ch + cg) - 1)
825825 let cV = if (if (if ((height >= cj))
826826 then if ((cj >= ch))
827827 then true
828828 else (bg == 0)
829829 else false)
830830 then (ck >= cj)
831831 else false)
832832 then min([((ck - cj) + 1), f])
833833 else i(g("invalid target block"))
834834 let bT = valueOrErrorMessage(getInteger(ak, Q()), g("invalid block processing reward"))
835835 let bU = (bT / cV)
836836 let cW = (bT - (bU * cV))
837837 func cX (cY,cZ) = if ((cZ >= cV))
838838 then cY
839839 else {
840840 let bW = (cj + cZ)
841841 let bX = valueOrErrorMessage(blockInfoByHeight(bW), g("invalid block info"))
842842 let bY = valueOrErrorMessage(aL(bX.rewards, aq), g(("invalid treasury reward for height " + toString(bW))))
843843 let da = bX.generator
844844 let ca = valueOrElse(getInteger(ak, F(da)), 0)
845845 let db = if ((cZ == (cV - 1)))
846846 then (bU + cW)
847847 else bU
848848 let dc = bK(bY)
849849 let dd = dc._1
850850 let bP = dc._2
851851 let bQ = dc._3
852852 let aa = if ((ci > 0))
853853 then fraction((bQ - db), c, ci)
854854 else 0
855855 let de = [invoke(ak, "stringEntry", [S(bW), makeString([toBase58String(aF.transactionId), toString(bg), toString(da), toBase58String(bf), toString(bY), toString(db), toString(aa), toString(dd)], a)], nil), invoke(ak, "integerEntry", [F(da), (ca + aa)], nil)]
856856 if ((de == de))
857857 then {
858858 let df = cY
859859 let dg = df._1
860860 let dh = df._2
861861 let di = df._3
862862 let dj = df._4
863863 let dk = dj
864864 let dl = dk._1
865865 let dm = dk._2
866866 let dn = (dm :+ $Tuple2(toString(da), dd))
867867 $Tuple4((dg + aa), (dh + bY), (di + bP), $Tuple2((dl + dd), dn))
868868 }
869869 else throw("Strict value is not equal to itself.")
870870 }
871871
872872 let do = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
873873 let dp = {
874874 let by = do
875875 let bz = size(by)
876876 let bA = $Tuple4(0, 0, 0, $Tuple2(0, nil))
877877 func bB (bC,bD) = if ((bD >= bz))
878878 then bC
879879 else cX(bC, by[bD])
880880
881881 func bE (bC,bD) = if ((bD >= bz))
882882 then bC
883883 else throw("List size exceeds 20")
884884
885885 bE(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bB(bA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
886886 }
887887 if ((dp == dp))
888888 then {
889889 let dj = dp._4
890890 let dq = dp._3
891891 let dr = dp._2
892892 let ds = dp._1
893893 let dt = dj
894894 let du = dt._1
895895 let dv = dt._2
896896 let dw = (((dr - dq) - bT) - du)
897897 let cJ = valueOrElse(getInteger(ak, D(unit)), 0)
898898 let dx = if ((du > 0))
899899 then {
900900 let dy = [invoke(ak, "transferFromProxyTreasury", [ak.bytes, du], nil)]
901901 if ((dy == dy))
902902 then {
903903 let dz = invoke(ak, "swap", [ax, e, du], nil)
904904 if ((dz == dz))
905905 then {
906906 let dA = {
907907 let l = dz
908908 if ($isInstanceOf(l, "Int"))
909909 then {
910910 let dB = l
911911 dB
912912 }
913913 else 0
914914 }
915915 func dC (cY,dD) = {
916916 let dE = dD
917917 let da = dE._1
918918 let dF = dE._2
919919 if ((du > 0))
920920 then {
921921 let dG = fraction(dF, dA, du)
922922 let dH = invoke(ak, "powerStake", [fromBase58String(da), fromBase58String(ax), dG], nil)
923923 if ((dH == dH))
924924 then nil
925925 else throw("Strict value is not equal to itself.")
926926 }
927927 else nil
928928 }
929929
930930 let dI = {
931931 let by = dv
932932 let bz = size(by)
933933 let bA = 0
934934 func dJ (bC,bD) = if ((bD >= bz))
935935 then bC
936936 else dC(bC, by[bD])
937937
938938 func dK (bC,bD) = if ((bD >= bz))
939939 then bC
940940 else throw("List size exceeds 20")
941941
942942 dK(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(dJ(bA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
943943 }
944944 if ((dI == dI))
945945 then nil
946946 else throw("Strict value is not equal to itself.")
947947 }
948948 else throw("Strict value is not equal to itself.")
949949 }
950950 else throw("Strict value is not equal to itself.")
951951 }
952952 else nil
953953 if ((dx == dx))
954954 then {
955955 let cp = [invoke(ak, "reissue", [ds], nil), invoke(ak, "integerEntry", [R(), (cj + cV)], nil), invoke(ak, "transferFromProxyTreasury", [at.bytes, dw], nil), invoke(ak, "transferFromProxyTreasury", [bf, bT], nil), invoke(ak, "transferFromProxyTreasury", [au.bytes, dq], nil), invoke(ak, "integerEntry", [D(unit), (cJ + dw)], nil)]
956956 if ((cp == cp))
957957 then $Tuple2(nil, unit)
958958 else throw("Strict value is not equal to itself.")
959959 }
960960 else throw("Strict value is not equal to itself.")
961961 }
962962 else throw("Strict value is not equal to itself.")
963963 }
964964 else throw("Strict value is not equal to itself.")
965965 }
966966
967967
968968 @Verifier(dL)
969969 func dM () = {
970970 let dN = {
971971 let l = aB()
972972 if ($isInstanceOf(l, "ByteVector"))
973973 then {
974974 let aD = l
975975 aD
976976 }
977977 else dL.senderPublicKey
978978 }
979979 sigVerify(dL.bodyBytes, dL.proofs[0], dN)
980980 }
981981

github/deemru/w8io/169f3d6 
124.04 ms