tx · 98ZUVjDaiPWp71DQnBEQ9aicCu5DqRWQiE6FhBvtBuLS

3MudYAdb2aRxJGx7YHraAtN7v6dXCVHUFKx:  -0.04500000 Waves

2023.08.07 13:05 [2700029] smart account 3MudYAdb2aRxJGx7YHraAtN7v6dXCVHUFKx > SELF 0.00000000 Waves

{ "type": 13, "id": "98ZUVjDaiPWp71DQnBEQ9aicCu5DqRWQiE6FhBvtBuLS", "fee": 4500000, "feeAssetId": null, "timestamp": 1691402826001, "version": 2, "chainId": 84, "sender": "3MudYAdb2aRxJGx7YHraAtN7v6dXCVHUFKx", "senderPublicKey": "FGk4k1DFjx16u4CWSy96FFccU9X7X6Q4sw1NhmDv3Vr4", "proofs": [ "5cApvWhbexyS7fHQby7LiqwpEoT3p7JX5F8KyQeJHm1gNri99eAwV6fwJhJ3Z98YXFcZTqNcSd1xsLXcbcBD4SkB", "62wYMrsb3xNHZv6KmmeCBn4Dw1G3Gtkg7wJhbW9Rs7FtX4HWAxTxLAHTN9etsZs9qqjoGrUGTGQN355Gqp4PYbe2" ], "script": "base64:BgJiCAISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERJYAAd2ZXJzaW9uAgUxLjAuMAAIa1ZlcnNpb24CB3ZlcnNpb24AB2tBY3RpdmUCBmFjdGl2ZQALa0RlcHJlY2F0ZWQCC2RlcHJlY2F0ZWRfAAlrQXNzZXRJZEECCkFfYXNzZXRfaWQACWtBc3NldElkQgIKQl9hc3NldF9pZAAJa0JhbGFuY2VBAg9BX2Fzc2V0X2JhbGFuY2UACWtCYWxhbmNlQgIPQl9hc3NldF9iYWxhbmNlAA1rQmFsYW5jZUluaXRBAgxBX2Fzc2V0X2luaXQADWtCYWxhbmNlSW5pdEICDEJfYXNzZXRfaW5pdAANa1NoYXJlQXNzZXRJZAIOc2hhcmVfYXNzZXRfaWQAEWtTaGFyZUFzc2V0U3VwcGx5AhJzaGFyZV9hc3NldF9zdXBwbHkABGtGZWUCCmNvbW1pc3Npb24ABmtDYXVzZQIOc2h1dGRvd25fY2F1c2UADWtGaXJzdEhhcnZlc3QCDWZpcnN0X2hhcnZlc3QAE2tGaXJzdEhhcnZlc3RIZWlnaHQCFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAtrU2hhcmVMaW1pdAIcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAALa0Jhc2VQZXJpb2QCC2Jhc2VfcGVyaW9kAA1rUGVyaW9kTGVuZ3RoAg1wZXJpb2RfbGVuZ3RoAAxrU3RhcnRIZWlnaHQCDHN0YXJ0X2hlaWdodAAMa1VTRE5BZGRyZXNzAhhzdGFraW5nX3VzZG5uc2J0X2FkZHJlc3MADGtFVVJOQWRkcmVzcwIUc3Rha2luZ19ldXJuX2FkZHJlc3MADmtMZWFzaW5nQW1vdW50Ag5sZWFzaW5nX2Ftb3VudAAMa1VTRE5Bc3NldElkAg11c2RuX2Fzc2V0X2lkAAxrRVVSTkFzc2V0SWQCDWV1cm5fYXNzZXRfaWQADGtMMk1QQXNzZXRJZAINbDJtcF9hc3NldF9pZAAOa1N0YWtpbmdBc3NldHMCDnN0YWtpbmdfYXNzZXRzAA1rT3JhY2xlQWN0aXZlAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAKa0Rpc2NvdW50cwIJZGlzY291bnRzAA9rRGlzY291bnRWYWx1ZXMCD2Rpc2NvdW50X3ZhbHVlcwAPa1VzZXJHU3dvcEluR292Ag1fR1N3b3BfYW1vdW50AA5rVXNlclN3b3BJbkdvdgIMX1NXT1BfYW1vdW50AAtrT3JhY2xlUG9vbAIFcG9vbF8ADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgAQa01vbmV5Qm94QWRkcmVzcwIRbW9uZXlfYm94X2FkZHJlc3MAD2tUZWFtQm94QWRkcmVzcwIQdGVhbV9ib3hfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzAA9rRmFybWluZ0FkZHJlc3MCD2Zhcm1pbmdfYWRkcmVzcwAMa0wyTVBBZGRyZXNzAhRzdGFraW5nX2wybXBfYWRkcmVzcwAGb3JhY2xlCQEHQWRkcmVzcwEBGgFUSBOXDMDTM8wlMoC2KfenZGiAq+PMe0uZARNnZXRCYXNlNThGcm9tT3JhY2xlAQNrZXkEByRtYXRjaDAJAJ0IAgUGb3JhY2xlBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJANkEAQUGc3RyaW5nBAdub3RoaW5nBQckbWF0Y2gwCQACAQkArAICBQNrZXkCCGlzIGVtcHR5AAxhZG1pblB1YktleTEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MQAMYWRtaW5QdWJLZXkyCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTIADGFkbWluUHViS2V5MwkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkzABFhZG1pbkludm9rZVB1YktleQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAD21vbmV5Qm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEGtNb25leUJveEFkZHJlc3MADnRlYW1Cb3hBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUPa1RlYW1Cb3hBZGRyZXNzAA12b3RpbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUOa1ZvdGluZ0FkZHJlc3MACmdvdkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrR292QWRkcmVzcwAOZmFybWluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ9rRmFybWluZ0FkZHJlc3MABFVTRE4JARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa1VTRE5Bc3NldElkAARFVVJOCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtFVVJOQXNzZXRJZAAETDJNUAkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrTDJNUEFzc2V0SWQADXN0YWtpbmdBc3NldHMJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUOa1N0YWtpbmdBc3NldHMAEnN0YWtpbmdVU0ROQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtVU0ROQWRkcmVzcwASc3Rha2luZ0VVUk5BZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0VVUk5BZGRyZXNzABJzdGFraW5nTDJNUEFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrTDJNUEFkZHJlc3MACmJhc2VQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ12b3RpbmdBZGRyZXNzBQtrQmFzZVBlcmlvZAIRRW1wdHkga0Jhc2VQZXJpb2QAC3N0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNdm90aW5nQWRkcmVzcwUMa1N0YXJ0SGVpZ2h0AhJFbXB0eSBrU3RhcnRIZWlnaHQADHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MFDWtQZXJpb2RMZW5ndGgCE0VtcHR5IGtQZXJpb2RMZW5ndGgAFWZpcnN0SGFydmVzdEVuZFBlcmlvZAkAZAIJAGQCBQpiYXNlUGVyaW9kCQBpAgkAZQIFBmhlaWdodAULc3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAADAAZhY3RpdmUJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBm9yYWNsZQUNa09yYWNsZUFjdGl2ZQAJZmVlU2NhbGU2AMCEPQAGc2NhbGU4AIDC1y8AB3NjYWxlMTYJALYCAQCAgIT+pt7hEQEOYWNjb3VudEJhbGFuY2UCB2Fzc2V0SWQEcG9vbAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA8AcCBQRwb29sBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAgJAO8HAQUEcG9vbAlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgEMc3Rha2VkQW1vdW50Agdhc3NldElkBHBvb2wEFnN0YWtlZEFtb3VudENhbGN1bGF0ZWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQDYUlkBQckbWF0Y2gwAwkAAAIFA2FJZAUEVVNETgkAmggCBRJzdGFraW5nVVNETkFkZHJlc3MJAKwCAgkArAICCQCsAgICDHJwZF9iYWxhbmNlXwkA2AQBBQNhSWQCAV8JAKUIAQUEcG9vbAMJAAACBQNhSWQFBEVVUk4JAJoIAgUSc3Rha2luZ0VVUk5BZGRyZXNzCQCsAgIJAKwCAgkArAICAhglcyVzJXNfX3N0YWtpbmdCYWxhbmNlX18JANgEAQUDYUlkAgJfXwkApQgBBQRwb29sAwkAAAIFA2FJZAUETDJNUAQJYXZhaWxhYmxlCgABQAkA/AcEBRJzdGFraW5nTDJNUEFkZHJlc3MCFWdldFVzZXJBc3NldHNSRUFET05MWQkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAECBQFAAhkoSW50LCBJbnQsIEludCwgSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIuIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50LCBJbnQsIEludCwgSW50KQMJAAACBQlhdmFpbGFibGUFCWF2YWlsYWJsZQgFCWF2YWlsYWJsZQJfMgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAwkAAQIFByRtYXRjaDACBFVuaXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEcG9vbAUOa0xlYXNpbmdBbW91bnQAAAkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBRZzdGFrZWRBbW91bnRDYWxjdWxhdGVkAwkAAQIFByRtYXRjaDACA0ludAQBaQUHJG1hdGNoMAUBaQAAAQxnZXRBc3NldEluZm8BB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDAwkAAQIFByRtYXRjaDACBlN0cmluZwYJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAQLJHQwNDQ2NjQ2MzgEByRtYXRjaDEFAmlkAwkAAQIFByRtYXRjaDECCkJ5dGVWZWN0b3IEA2FJZAUHJG1hdGNoMQkAlAoCCQDYBAEFA2FJZAUDYUlkAwkAAQIFByRtYXRjaDECBlN0cmluZwQDYUlkBQckbWF0Y2gxCQCUCgIFA2FJZAkA2QQBBQNhSWQJAAIBAgtNYXRjaCBlcnJvcgQIc3RyaW5nSWQIBQskdDA0NDY2NDYzOAJfMQQHYnl0ZXNJZAgFCyR0MDQ0NjY0NjM4Al8yBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUHYnl0ZXNJZAkArAICCQCsAgICBkFzc2V0IAUIc3RyaW5nSWQCDiBkb2Vzbid0IGV4aXN0CQCVCgMFCHN0cmluZ0lkCAUEaW5mbwRuYW1lCAUEaW5mbwhkZWNpbWFscwMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAkAlQoDAgVXQVZFUwIFV0FWRVMACAkAAgECC01hdGNoIGVycm9yAQdzdXNwZW5kAQVjYXVzZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQcJAMwIAgkBC1N0cmluZ0VudHJ5AgUGa0NhdXNlBQVjYXVzZQUDbmlsARRjYWxjdWxhdGVGZWVEaXNjb3VudAEIdXNlckFkZHIECnN3b3BBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEFCHVzZXJBZGRyBQ5rVXNlclN3b3BJbkdvdgAABAtnU3dvcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQpnb3ZBZGRyZXNzCQCsAgIJAKUIAQUIdXNlckFkZHIFD2tVc2VyR1N3b3BJbkdvdgUKc3dvcEFtb3VudAQOZGlzY291bnRWYWx1ZXMJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUGb3JhY2xlBQ9rRGlzY291bnRWYWx1ZXMCASwECWRpc2NvdW50cwkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQZvcmFjbGUFCmtEaXNjb3VudHMCASwDAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAAkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwABBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAAMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwABCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAIFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwABAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAIJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAwULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAIDAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwAEBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAQJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMABAUJZmVlU2NhbGU2AQ1jYWxjdWxhdGVGZWVzBwlwbXRBbW91bnQSbWluQW1vdW50VG9SZWNlaXZlCXRva2VuRnJvbQd0b2tlblRvA2ZlZQZmZWVHb3YHZmVlVGVhbQQQYW1vdW50V2l0aG91dEZlZQkAawMFB3Rva2VuVG8FCXBtdEFtb3VudAkAZAIFCXBtdEFtb3VudAUJdG9rZW5Gcm9tBA1hbW91bnRXaXRoRmVlCQBrAwUQYW1vdW50V2l0aG91dEZlZQkAZQIFCWZlZVNjYWxlNgUDZmVlBQlmZWVTY2FsZTYEEGdvdmVybmFuY2VSZXdhcmQJAGsDBRBhbW91bnRXaXRob3V0RmVlBQZmZWVHb3YFCWZlZVNjYWxlNgQKdGVhbVJld2FyZAkAawMFEGFtb3VudFdpdGhvdXRGZWUFB2ZlZVRlYW0FCWZlZVNjYWxlNgMJAGYCBRJtaW5BbW91bnRUb1JlY2VpdmUFDWFtb3VudFdpdGhGZWUJAAIBCQCsAgIJAKwCAgkArAICAh1DYWxjdWxhdGVkIGFtb3VudCB0byByZWNlaXZlIAkApAMBBQ1hbW91bnRXaXRoRmVlAiAgaXMgbGVzcyB0aGFuIHNwZWNpZmllZCBtaW5pbXVtIAkApAMBBRJtaW5BbW91bnRUb1JlY2VpdmUJAJYKBAUQYW1vdW50V2l0aG91dEZlZQUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAEQY2FsY3VsYXRlVmlydFBheQMJcG10QW1vdW50B2JhbGFuY2UDZmVlBAFGCQBlAgUJZmVlU2NhbGU2BQNmZWUEAWsJAGsDBQNmZWUANwBkBAFhCQBkAgUGc2NhbGU4CQBrAwkAaAIFAUYFAWsFBnNjYWxlOAkAaAIFCWZlZVNjYWxlNgUJZmVlU2NhbGU2BAFiCQBlAgkAZQIJAGQCCQBkAgUHYmFsYW5jZQkAawMFB2JhbGFuY2UFAUYFCWZlZVNjYWxlNgkAawMFCXBtdEFtb3VudAUBRgUJZmVlU2NhbGU2BQlwbXRBbW91bnQJAGsDBQlwbXRBbW91bnQJAGgCBQFGBQFrCQBoAgUJZmVlU2NhbGU2BQlmZWVTY2FsZTYEAWMJALkCAgkAvgIBCQC2AgEFB2JhbGFuY2UJALYCAQUJcG10QW1vdW50BAFECQC4AgIJALkCAgkAtgIBBQFiCQC2AgEFAWIJALwCAwkAuQICCQC2AgEABAUBYwkAtgIBBQFhCQC2AgEFBnNjYWxlOAkAoAMBCQC8AgMJALcCAgkAvgIBCQC2AgEFAWIJAQpzcXJ0QmlnSW50BAUBRAAAAAAFBERPV04JALYCAQUGc2NhbGU4CQC2AgEJAGgCAAIFAWEBEXBhcnNlUGF5bWVudEFzc2V0AQdhc3NldElkAwkAAAIFB2Fzc2V0SWQBAAUEdW5pdAUHYXNzZXRJZAERc3VzcGVuZFN1c3BpY2lvdXMGD2FjY291bnRCYWxhbmNlQQ9hY2NvdW50QmFsYW5jZUIIYmFsYW5jZUEIYmFsYW5jZUIIYXNzZXRJZEEIYXNzZXRJZEIJAQdzdXNwZW5kAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIjU3VzcGljaW91cyBzdGF0ZS4gQWN0dWFsIGJhbGFuY2VzOiAJAKQDAQUPYWNjb3VudEJhbGFuY2VBAgEgBQhhc3NldElkQQICLCAJAKQDAQUPYWNjb3VudEJhbGFuY2VCAgEgBQhhc3NldElkQgIJLiBTdGF0ZTogCQCkAwEFCGJhbGFuY2VBAgEgBQhhc3NldElkQQICLCAJAKQDAQUIYmFsYW5jZUICASAFCGFzc2V0SWRCAQhpc0FjdGl2ZQADBQZhY3RpdmUFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AQxpc09yYWNsZVBvb2wBC3Bvb2xBZGRyZXNzAwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFC2tPcmFjbGVQb29sBQtwb29sQWRkcmVzcwUEdW5pdAkAAgECG0RBcHAgaXMgbm90IHJlZ2lzdGVyZWQgcG9vbAEMaXNEZXByaWNhdGVkAQtwb29sQWRkcmVzcwMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUJAKwCAgULa0RlcHJlY2F0ZWQFC3Bvb2xBZGRyZXNzBwUEdW5pdAkAAgECMVBvb2wgaXMgZGVwcmVjYXRlZC4gT25seSB3aXRoZHJhdyBhY3Rpb24gYWxsb3dlZC4BD2dldFBvb2xCYWxhbmNlcwMEcG9vbAhhc3NldElkQQhhc3NldElkQgQIYmFsYW5jZUEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFCWtCYWxhbmNlQQQIYmFsYW5jZUIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFCWtCYWxhbmNlQgQNc3Rha2VkQW1vdW50QQkBDHN0YWtlZEFtb3VudAIFCGFzc2V0SWRBBQRwb29sBA1zdGFrZWRBbW91bnRCCQEMc3Rha2VkQW1vdW50AgUIYXNzZXRJZEIFBHBvb2wED2FjY291bnRCYWxhbmNlQQkAZAIJAQ5hY2NvdW50QmFsYW5jZQIFCGFzc2V0SWRBBQRwb29sBQ1zdGFrZWRBbW91bnRBBA9hY2NvdW50QmFsYW5jZUIJAGQCCQEOYWNjb3VudEJhbGFuY2UCBQhhc3NldElkQgUEcG9vbAUNc3Rha2VkQW1vdW50QgkAmAoGBQhiYWxhbmNlQQUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQ1zdGFrZWRBbW91bnRBBQ1zdGFrZWRBbW91bnRCAQtnZXRMcFN1cHBseQEEcG9vbAkBEUBleHRyTmF0aXZlKDEwNTApAgUEcG9vbAURa1NoYXJlQXNzZXRTdXBwbHkBDWdldFBvb2xBc3NldHMBBHBvb2wEC3N0ckFzc2V0SWRBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRwb29sBQlrQXNzZXRJZEEEC3N0ckFzc2V0SWRCCQERQGV4dHJOYXRpdmUoMTA1MykCBQRwb29sBQlrQXNzZXRJZEIECGFzc2V0SWRBAwkAAAIFC3N0ckFzc2V0SWRBAgVXQVZFUwUEdW5pdAkA2QQBBQtzdHJBc3NldElkQQQIYXNzZXRJZEIDCQAAAgULc3RyQXNzZXRJZEICBVdBVkVTBQR1bml0CQDZBAEFC3N0ckFzc2V0SWRCBAxzaGFyZUFzc2V0SWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEcG9vbAUNa1NoYXJlQXNzZXRJZAkAlwoFBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIFCGFzc2V0SWRBBQhhc3NldElkQgUMc2hhcmVBc3NldElkAQxnZXRGZWVQYXJhbXMCBHBvb2wGY2FsbGVyBAtmZWVEaXNjb3VudAkBFGNhbGN1bGF0ZUZlZURpc2NvdW50AQUGY2FsbGVyBANmZWUJAG4ECQERQGV4dHJOYXRpdmUoMTA1MCkCBQRwb29sBQRrRmVlBQtmZWVEaXNjb3VudAUJZmVlU2NhbGU2BQdDRUlMSU5HBAZnb3ZGZWUJAGsDBQNmZWUAIwBkBAd0ZWFtRmVlCQBrAwUDZmVlAAoAZAkAlQoDBQNmZWUFBmdvdkZlZQUHdGVhbUZlZQEfY2FsY0xQQW1vdW50UmVwbGVuc2lzaFR3b1Rva2VucwcEcG10QQRwbXRCBnBtdElkQQZwbXRJZEIEYmFsQQRiYWxCEHNoYXJlQXNzZXRTdXBwbHkEDCR0MDk5NzkxMDA1MQkBDGdldEFzc2V0SW5mbwEFBnBtdElkQQQOcG10U3RyQXNzZXRJZEEIBQwkdDA5OTc5MTAwNTECXzEEDXBtdEFzc2V0TmFtZUEIBQwkdDA5OTc5MTAwNTECXzIEDHBtdERlY2ltYWxzQQgFDCR0MDk5NzkxMDA1MQJfMwQNJHQwMTAwNTYxMDEyOAkBDGdldEFzc2V0SW5mbwEFBnBtdElkQgQOcG10U3RyQXNzZXRJZEIIBQ0kdDAxMDA1NjEwMTI4Al8xBA1wbXRBc3NldE5hbWVCCAUNJHQwMTAwNTYxMDEyOAJfMgQMcG10RGVjaW1hbHNCCAUNJHQwMTAwNTYxMDEyOAJfMwQHaW5pdGlhbAkAAAIJAGQCBQRiYWxBBQRiYWxCAAAEDSR0MDEwMTcxMTA4MzADBQdpbml0aWFsCQCXCgUFBHBtdEEFBHBtdEIAAAUGcG10SWRBCQC2AgEAAQQTcmF0aW9TaGFyZVRva2Vuc0luQQkAvAIDBQdzY2FsZTE2CQC2AgEFBHBtdEEJALYCAQUEYmFsQQQTcmF0aW9TaGFyZVRva2Vuc0luQgkAvAIDBQdzY2FsZTE2CQC2AgEFBHBtdEIJALYCAQUEYmFsQgMJAL8CAgUTcmF0aW9TaGFyZVRva2Vuc0luQgUTcmF0aW9TaGFyZVRva2Vuc0luQQQDcG10CQBrAwUEcG10QQUEYmFsQgUEYmFsQQkAlwoFBQRwbXRBBQNwbXQJAGUCBQRwbXRCBQNwbXQFBnBtdElkQgUTcmF0aW9TaGFyZVRva2Vuc0luQQQDcG10CQBrAwUEcG10QgUEYmFsQQUEYmFsQgkAlwoFBQNwbXQFBHBtdEIJAGUCBQRwbXRBBQNwbXQFBnBtdElkQQUTcmF0aW9TaGFyZVRva2Vuc0luQgQKcG10QW1vdW50QQgFDSR0MDEwMTcxMTA4MzACXzEECnBtdEFtb3VudEIIBQ0kdDAxMDE3MTEwODMwAl8yBAZjaGFuZ2UIBQ0kdDAxMDE3MTEwODMwAl8zBA1jaGFuZ2VBc3NldElkCAUNJHQwMTAxNzExMDgzMAJfNAQPc2hhcmVUb2tlblJhdGlvCAUNJHQwMTAxNzExMDgzMAJfNQQVc2hhcmVUb2tlblRvUGF5QW1vdW50AwUHaW5pdGlhbAQNc2hhcmVEZWNpbWFscwkAaQIJAGQCBQxwbXREZWNpbWFsc0EFDHBtdERlY2ltYWxzQgACCQBrAwkAbAYFCnBtdEFtb3VudEEFDHBtdERlY2ltYWxzQQAFAAEFDHBtdERlY2ltYWxzQQUERE9XTgkAbAYFCnBtdEFtb3VudEIFDHBtdERlY2ltYWxzQgAFAAEFDHBtdERlY2ltYWxzQgUERE9XTgkAbAYACgAABQ1zaGFyZURlY2ltYWxzAAAAAAUERE9XTgkAoAMBCQC8AgMFD3NoYXJlVG9rZW5SYXRpbwkAtgIBBRBzaGFyZUFzc2V0U3VwcGx5BQdzY2FsZTE2CQCXCgUFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUGY2hhbmdlBQ1jaGFuZ2VBc3NldElkBQpwbXRBbW91bnRBBQpwbXRBbW91bnRCAR1jYWxjTFBBbW91bnRSZXBsZW5pc2hPbmVUb2tlbgsJcG10QW1vdW50CnBtdEFzc2V0SWQDYUlkA2JJZARiYWxBBGJhbEIIbHBTdXBwbHkDZmVlBmdvdkZlZQd0ZWFtRmVlEHZpcnRHZXRNaW5BbW91bnQDCQAAAgUKcG10QXNzZXRJZAUDYUlkBA12aXJ0UGF5QW1vdW50CQEQY2FsY3VsYXRlVmlydFBheQMFCXBtdEFtb3VudAUEYmFsQQUDZmVlBA0kdDAxMTY5NDExODQxCQENY2FsY3VsYXRlRmVlcwcFDXZpcnRQYXlBbW91bnQFEHZpcnRHZXRNaW5BbW91bnQFBGJhbEEFBGJhbEIFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMTE2OTQxMTg0MQJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDExNjk0MTE4NDECXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAxMTY5NDExODQxAl8zBAd0UmV3YXJkCAUNJHQwMTE2OTQxMTg0MQJfNAQMYmFsYW5jZUFWaXJ0CQBkAgUEYmFsQQUNdmlydFBheUFtb3VudAQMYmFsYW5jZUJWaXJ0CQBlAgkAZQIJAGQCBQRiYWxCBRBhbW91bnRXaXRob3V0RmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBAtuZXdCYWxhbmNlQQkAZAIFBGJhbEEFCXBtdEFtb3VudAQLbmV3QmFsYW5jZUIJAGUCCQBlAgUEYmFsQgUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQTcmF0aW9TaGFyZVRva2Vuc0luQQkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUMYmFsYW5jZUFWaXJ0BBNyYXRpb1NoYXJlVG9rZW5zSW5CCQC8AgMJALYCAQUNYW1vdW50V2l0aEZlZQUHc2NhbGUxNgkAtgIBBQxiYWxhbmNlQlZpcnQEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAoAMBCQC8AgMJAJkDAQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5BCQDMCAIFE3JhdGlvU2hhcmVUb2tlbnNJbkIFA25pbAkAtgIBBQhscFN1cHBseQUHc2NhbGUxNgQbc2hhcmVUb2tlblRvUGF5QW1vdW50SW5Cb3RoCQCgAwEJALwCAwkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUEYmFsQQkAtgIBBQhscFN1cHBseQUHc2NhbGUxNgQEbG9zcwkAawMJAGUCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFG3NoYXJlVG9rZW5Ub1BheUFtb3VudEluQm90aAUGc2NhbGU4BRtzaGFyZVRva2VuVG9QYXlBbW91bnRJbkJvdGgJAJkKBwUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQtuZXdCYWxhbmNlQQULbmV3QmFsYW5jZUIFEGdvdmVybmFuY2VSZXdhcmQFB3RSZXdhcmQFA2JJZAUEbG9zcwQNdmlydFBheUFtb3VudAkBEGNhbGN1bGF0ZVZpcnRQYXkDBQlwbXRBbW91bnQFBGJhbEIFA2ZlZQQNJHQwMTI4ODUxMzAzMgkBDWNhbGN1bGF0ZUZlZXMHBQ12aXJ0UGF5QW1vdW50BRB2aXJ0R2V0TWluQW1vdW50BQRiYWxCBQRiYWxBBQNmZWUFBmdvdkZlZQUHdGVhbUZlZQQQYW1vdW50V2l0aG91dEZlZQgFDSR0MDEyODg1MTMwMzICXzEEDWFtb3VudFdpdGhGZWUIBQ0kdDAxMjg4NTEzMDMyAl8yBBBnb3Zlcm5hbmNlUmV3YXJkCAUNJHQwMTI4ODUxMzAzMgJfMwQHdFJld2FyZAgFDSR0MDEyODg1MTMwMzICXzQEDGJhbGFuY2VBVmlydAkAZQIJAGUCCQBkAgUEYmFsQQUQYW1vdW50V2l0aG91dEZlZQUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQMYmFsYW5jZUJWaXJ0CQBkAgUEYmFsQgUNdmlydFBheUFtb3VudAQLbmV3QmFsYW5jZUEJAGUCCQBlAgUEYmFsQQUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQLbmV3QmFsYW5jZUIJAGQCBQRiYWxCBQlwbXRBbW91bnQEE3JhdGlvU2hhcmVUb2tlbnNJbkEJALwCAwkAtgIBBQ1hbW91bnRXaXRoRmVlBQdzY2FsZTE2CQC2AgEFDGJhbGFuY2VBVmlydAQTcmF0aW9TaGFyZVRva2Vuc0luQgkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUMYmFsYW5jZUJWaXJ0BBVzaGFyZVRva2VuVG9QYXlBbW91bnQJAKADAQkAvAIDCQCZAwEJAMwIAgUTcmF0aW9TaGFyZVRva2Vuc0luQQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5CBQNuaWwJALYCAQUIbHBTdXBwbHkFB3NjYWxlMTYEG3NoYXJlVG9rZW5Ub1BheUFtb3VudEluQm90aAkAoAMBCQC8AgMJALwCAwkAtgIBCQBlAgUJcG10QW1vdW50BQ12aXJ0UGF5QW1vdW50BQdzY2FsZTE2CQC2AgEFBGJhbEIJALYCAQUIbHBTdXBwbHkFB3NjYWxlMTYEBGxvc3MJAGsDCQBlAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BRtzaGFyZVRva2VuVG9QYXlBbW91bnRJbkJvdGgFBnNjYWxlOAUbc2hhcmVUb2tlblRvUGF5QW1vdW50SW5Cb3RoCQCZCgcFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAULbmV3QmFsYW5jZUEFC25ld0JhbGFuY2VCBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBQNhSWQFBGxvc3MBF2NhbGNMUFJlcGxlbmlzaERpZmZQcm9wCwRwbXRBBHBtdEIGcG10SWRBBnBtdElkQgRiYWxBBGJhbEIIbHBTdXBwbHkDZmVlBmdvdkZlZQd0ZWFtRmVlEHZpcnRHZXRNaW5BbW91bnQEDSR0MDE0MTk5MTQzNDcJAR9jYWxjTFBBbW91bnRSZXBsZW5zaXNoVHdvVG9rZW5zBwUEcG10QQUEcG10QgUGcG10SWRBBQZwbXRJZEIFBGJhbEEFBGJhbEIFCGxwU3VwcGx5BAtscFR3b0Ftb3VudAgFDSR0MDE0MTk5MTQzNDcCXzEEBmNoYW5nZQgFDSR0MDE0MTk5MTQzNDcCXzIEDWNoYW5nZUFzc2V0SWQIBQ0kdDAxNDE5OTE0MzQ3Al8zBApwbXRBbW91bnRBCAUNJHQwMTQxOTkxNDM0NwJfNAQKcG10QW1vdW50QggFDSR0MDE0MTk5MTQzNDcCXzUDCQBmAgUGY2hhbmdlAAAEDSR0MDE0Mzc5MTQ2MTMJAR1jYWxjTFBBbW91bnRSZXBsZW5pc2hPbmVUb2tlbgsFBmNoYW5nZQUNY2hhbmdlQXNzZXRJZAUGcG10SWRBBQZwbXRJZEIJAGQCBQRiYWxBBQpwbXRBbW91bnRBCQBkAgUEYmFsQgUKcG10QW1vdW50QgUIbHBTdXBwbHkFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBRB2aXJ0R2V0TWluQW1vdW50BAVscE9uZQgFDSR0MDE0Mzc5MTQ2MTMCXzEEC25ld0JhbGFuY2VBCAUNJHQwMTQzNzkxNDYxMwJfMgQLbmV3QmFsYW5jZUIIBQ0kdDAxNDM3OTE0NjEzAl8zBBBnb3Zlcm5hbmNlUmV3YXJkCAUNJHQwMTQzNzkxNDYxMwJfNAQHdFJld2FyZAgFDSR0MDE0Mzc5MTQ2MTMCXzUEA2dJZAgFDSR0MDE0Mzc5MTQ2MTMCXzYEBGxvc3MIBQ0kdDAxNDM3OTE0NjEzAl83CQCZCgcJAGQCBQtscFR3b0Ftb3VudAUFbHBPbmUFBGxvc3MFC25ld0JhbGFuY2VBBQtuZXdCYWxhbmNlQgUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAUDZ0lkCQCZCgcFC2xwVHdvQW1vdW50AAAJAGQCBQRiYWxBBQpwbXRBbW91bnRBCQBkAgUEYmFsQgUKcG10QW1vdW50QgAAAAAFBHVuaXQMAWkBH2NhbGNMUFJlcGxlbmlzaERpZmZQcm9wUkVBRE9OTFkEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBA0kdDAxNDk0OTE1MDM5CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAxNDk0OTE1MDM5Al8xBAtzdHJBc3NldElkQggFDSR0MDE0OTQ5MTUwMzkCXzIECGFzc2V0SWRBCAUNJHQwMTQ5NDkxNTAzOQJfMwQIYXNzZXRJZEIIBQ0kdDAxNDk0OTE1MDM5Al80BAxzaGFyZUFzc2V0SWQIBQ0kdDAxNDk0OTE1MDM5Al81BA0kdDAxNTA0NDE1MTI2CQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIEBGJhbEEIBQ0kdDAxNTA0NDE1MTI2Al8xBARiYWxCCAUNJHQwMTUwNDQxNTEyNgJfMgQHYWNjQmFsQQgFDSR0MDE1MDQ0MTUxMjYCXzMEB2FjY0JhbEIIBQ0kdDAxNTA0NDE1MTI2Al80BAhscFN1cHBseQkBC2dldExwU3VwcGx5AQgFAWkGY2FsbGVyBARwbXRBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABARwbXRCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwABBBB2aXJ0R2V0TWluQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwACBA0kdDAxNTMwMTE1MzY4CQEMZ2V0RmVlUGFyYW1zAggFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEA2ZlZQgFDSR0MDE1MzAxMTUzNjgCXzEEBmdvdkZlZQgFDSR0MDE1MzAxMTUzNjgCXzIEB3RlYW1GZWUIBQ0kdDAxNTMwMTE1MzY4Al8zBA0kdDAxNTM3MzE1NTY1CQEXY2FsY0xQUmVwbGVuaXNoRGlmZlByb3ALBQRwbXRBBQRwbXRCBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFCGxwU3VwcGx5BQNmZWUFBmdvdkZlZQUHdGVhbUZlZQUQdmlydEdldE1pbkFtb3VudAQCbHAIBQ0kdDAxNTM3MzE1NTY1Al8xBARsb3NzCAUNJHQwMTUzNzMxNTU2NQJfMgQLbmV3QmFsYW5jZUEIBQ0kdDAxNTM3MzE1NTY1Al8zBAtuZXdCYWxhbmNlQggFDSR0MDE1MzczMTU1NjUCXzQEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAxNTM3MzE1NTY1Al81BAd0UmV3YXJkCAUNJHQwMTUzNzMxNTU2NQJfNgQDYUlkCAUNJHQwMTUzNzMxNTU2NQJfNwkAlAoCBQNuaWwJAJQKAgUDbmlsCQDMCAIFAmxwCQDMCAIFBGxvc3MJAMwIAgULbmV3QmFsYW5jZUEJAMwIAgULbmV3QmFsYW5jZUIJAMwIAgUQZ292ZXJuYW5jZVJld2FyZAkAzAgCBQd0UmV3YXJkCQDMCAIFA2FJZAUDbmlsAWkBIGNhbGNMUFJlcGxlbmlzaFR3b1Rva2Vuc1JFQURPTkxZBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwQNJHQwMTU4MDgxNTg5OAkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMTU4MDgxNTg5OAJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAxNTgwODE1ODk4Al8yBAhhc3NldElkQQgFDSR0MDE1ODA4MTU4OTgCXzMECGFzc2V0SWRCCAUNJHQwMTU4MDgxNTg5OAJfNAQMc2hhcmVBc3NldElkCAUNJHQwMTU4MDgxNTg5OAJfNQQNJHQwMTU5MDMxNTk4NQkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBARiYWxBCAUNJHQwMTU5MDMxNTk4NQJfMQQEYmFsQggFDSR0MDE1OTAzMTU5ODUCXzIEB2FjY0JhbEEIBQ0kdDAxNTkwMzE1OTg1Al8zBAdhY2NCYWxCCAUNJHQwMTU5MDMxNTk4NQJfNAQIbHBTdXBwbHkJAQtnZXRMcFN1cHBseQEIBQFpBmNhbGxlcgQEcG10QQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAAQEcG10QgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQQNJHQwMTYxMDkxNjI1MgkBH2NhbGNMUEFtb3VudFJlcGxlbnNpc2hUd29Ub2tlbnMHBQRwbXRBBQRwbXRCBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFCGxwU3VwcGx5BAJscAgFDSR0MDE2MTA5MTYyNTICXzEEBmNoYW5nZQgFDSR0MDE2MTA5MTYyNTICXzIEDWNoYW5nZUFzc2V0SWQIBQ0kdDAxNjEwOTE2MjUyAl8zBApwbXRBbW91bnRBCAUNJHQwMTYxMDkxNjI1MgJfNAQKcG10QW1vdW50QggFDSR0MDE2MTA5MTYyNTICXzUJAJQKAgUDbmlsCQCUCgIFA25pbAkAzAgCBQJscAkAzAgCBQZjaGFuZ2UJAMwIAgUNY2hhbmdlQXNzZXRJZAkAzAgCBQpwbXRBbW91bnRBCQDMCAIFCnBtdEFtb3VudEIFA25pbAFpARB3aXRoZHJhd1JFQURPTkxZBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwQNJHQwMTY0NjMxNjU1MwkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMTY0NjMxNjU1MwJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAxNjQ2MzE2NTUzAl8yBAhhc3NldElkQQgFDSR0MDE2NDYzMTY1NTMCXzMECGFzc2V0SWRCCAUNJHQwMTY0NjMxNjU1MwJfNAQMc2hhcmVBc3NldElkCAUNJHQwMTY0NjMxNjU1MwJfNQQNJHQwMTY1NTgxNjY2NAkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDE2NTU4MTY2NjQCXzEECGJhbGFuY2VCCAUNJHQwMTY1NTgxNjY2NAJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMTY1NTgxNjY2NAJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMTY1NTgxNjY2NAJfNAQQc2hhcmVBc3NldFN1cHBseQkBC2dldExwU3VwcGx5AQgFAWkGY2FsbGVyBA53aXRoZHJhd0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAAQNJHQwMTY3NjcxNjkyOQMJAAACCQCQAwEFBGFyZ3MAAwkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwACCQCUCgIFCGJhbGFuY2VBBQhiYWxhbmNlQgQEYmFsQQgFDSR0MDE2NzY3MTY5MjkCXzEEBGJhbEIIBQ0kdDAxNjc2NzE2OTI5Al8yBAxhbW91bnRUb1BheUEJAGsDBQ53aXRoZHJhd0Ftb3VudAUEYmFsQQUQc2hhcmVBc3NldFN1cHBseQQMYW1vdW50VG9QYXlCCQBrAwUOd2l0aGRyYXdBbW91bnQFBGJhbEIFEHNoYXJlQXNzZXRTdXBwbHkJAJQKAgUDbmlsCQCUCgIFA25pbAkAzAgCBQxhbW91bnRUb1BheUEJAMwIAgUMYW1vdW50VG9QYXlCBQNuaWwBaQEEaW5pdAQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMEBmNhbGxlcgkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwQNJHQwMTcyODQxNzM2MgkAlAoCCQCRAwIFCHBBbW91bnRzAAAJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAAECnBtdEFtb3VudEEIBQ0kdDAxNzI4NDE3MzYyAl8xBAtwbXRBc3NldElkQQgFDSR0MDE3Mjg0MTczNjICXzIEDSR0MDE3MzY3MTc0NDUJAJQKAgkAkQMCBQhwQW1vdW50cwABCQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwABBApwbXRBbW91bnRCCAUNJHQwMTczNjcxNzQ0NQJfMQQLcG10QXNzZXRJZEIIBQ0kdDAxNzM2NzE3NDQ1Al8yAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwkAzAgCBRFhZG1pbkludm9rZVB1YktleQUDbmlsCAUBaRVvcmlnaW5DYWxsZXJQdWJsaWNLZXkJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DCQECIT0CCQCQAwEFBGFyZ3MAAQkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMJAQlpc0RlZmluZWQBCQCbCAIFBmNhbGxlcgUHa0FjdGl2ZQkAAgECFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUDCQAAAgULcG10QXNzZXRJZEEFC3BtdEFzc2V0SWRCCQACAQIYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BA0kdDAxNzg4MDE3OTU3CQEMZ2V0QXNzZXRJbmZvAQULcG10QXNzZXRJZEEEDnBtdFN0ckFzc2V0SWRBCAUNJHQwMTc4ODAxNzk1NwJfMQQNcG10QXNzZXROYW1lQQgFDSR0MDE3ODgwMTc5NTcCXzIEDHBtdERlY2ltYWxzQQgFDSR0MDE3ODgwMTc5NTcCXzMEDSR0MDE3OTY2MTgwNDMJAQxnZXRBc3NldEluZm8BBQtwbXRBc3NldElkQgQOcG10U3RyQXNzZXRJZEIIBQ0kdDAxNzk2NjE4MDQzAl8xBA1wbXRBc3NldE5hbWVCCAUNJHQwMTc5NjYxODA0MwJfMgQMcG10RGVjaW1hbHNCCAUNJHQwMTc5NjYxODA0MwJfMwQMZmlyc3RIYXJ2ZXN0CQAAAgkAkQMCBQRhcmdzAAACBHRydWUECXNoYXJlTmFtZQkArAICCQCsAgIJAKwCAgIBcwkArwICBQ1wbXRBc3NldE5hbWVBAAcCAV8JAK8CAgUNcG10QXNzZXROYW1lQgAHBBBzaGFyZURlc2NyaXB0aW9uCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUNcG10QXNzZXROYW1lQQIFIGFuZCAFDXBtdEFzc2V0TmFtZUICDCBhdCBhZGRyZXNzIAkApQgBBQR0aGlzBA1zaGFyZURlY2ltYWxzCQBpAgkAZAIFDHBtdERlY2ltYWxzQQUMcG10RGVjaW1hbHNCAAIEBGFyZzEJAGwGBQpwbXRBbW91bnRBBQxwbXREZWNpbWFsc0EABQABBQxwbXREZWNpbWFsc0EFBERPV04EBGFyZzIJAGwGBQpwbXRBbW91bnRCBQxwbXREZWNpbWFsc0IABQABBQxwbXREZWNpbWFsc0IFBERPV04EBGFyZzMJAGwGAAoAAAUNc2hhcmVEZWNpbWFscwAAAAAFBERPV04EEnNoYXJlSW5pdGlhbFN1cHBseQkAawMFBGFyZzEFBGFyZzIFBGFyZzMECnNoYXJlSXNzdWUJAMIIBQUJc2hhcmVOYW1lBRBzaGFyZURlc2NyaXB0aW9uBRJzaGFyZUluaXRpYWxTdXBwbHkFDXNoYXJlRGVjaW1hbHMGBAxzaGFyZUlzc3VlSWQJALgIAQUKc2hhcmVJc3N1ZQQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwUOcG10U3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUKcG10QW1vdW50QQkAzAgCBQ5wbXRTdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwUOcG10U3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUKcG10QW1vdW50QgkAzAgCBQ5wbXRTdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgQJYmFzZUVudHJ5CQDMCAIJAQtTdHJpbmdFbnRyeQIFCGtWZXJzaW9uBQd2ZXJzaW9uCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXNzZXRJZEEFDnBtdFN0ckFzc2V0SWRBCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtBc3NldElkQgUOcG10U3RyQXNzZXRJZEIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQUKcG10QW1vdW50QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCBQpwbXRBbW91bnRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQRrRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQZvcmFjbGUCDWJhc2VfZmVlX2NwbW0JAMwIAgUKc2hhcmVJc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQ1rU2hhcmVBc3NldElkCQDYBAEFDHNoYXJlSXNzdWVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkFEnNoYXJlSW5pdGlhbFN1cHBseQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFEnNoYXJlSW5pdGlhbFN1cHBseQUMc2hhcmVJc3N1ZUlkBQNuaWwDBQxmaXJzdEhhcnZlc3QJAJQKAgUDbmlsCQCUCgIJAM4IAgUJYmFzZUVudHJ5CQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rRmlyc3RIYXJ2ZXN0BQxmaXJzdEhhcnZlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tGaXJzdEhhcnZlc3RIZWlnaHQJAGQCBQtzdGFydEhlaWdodAkAaAIFFWZpcnN0SGFydmVzdEVuZFBlcmlvZAUMcGVyaW9kTGVuZ3RoBQNuaWwFA25pbAkAlAoCBQNuaWwJAJQKAgUJYmFzZUVudHJ5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERaW5pdFdpdGhJbml0UmF0aW8EC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDIwMjY0MjA0NjQJAJcKBQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQkAkQMCBQRhcmdzAAIJAJEDAgUEYXJncwADCQAAAgkAkQMCBQRhcmdzAAQCBHRydWUECWFtdEFzc2V0QQgFDSR0MDIwMjY0MjA0NjQCXzEECWFtdEFzc2V0QggFDSR0MDIwMjY0MjA0NjQCXzIEC2Fzc2V0SWRBU3RyCAUNJHQwMjAyNjQyMDQ2NAJfMwQLYXNzZXRJZEJTdHIIBQ0kdDAyMDI2NDIwNDY0Al80BAxmaXJzdEhhcnZlc3QIBQ0kdDAyMDI2NDIwNDY0Al81AwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwkAzAgCBRFhZG1pbkludm9rZVB1YktleQUDbmlsCAUBaRVvcmlnaW5DYWxsZXJQdWJsaWNLZXkJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DCQECIT0CCQCQAwEFBGFyZ3MABQkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMJAQlpc0RlZmluZWQBCQCbCAIFBmNhbGxlcgUHa0FjdGl2ZQkAAgECFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUDCQAAAgULYXNzZXRJZEFTdHIFC2Fzc2V0SWRCU3RyCQACAQIYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BA0kdDAyMDg5OTIwOTc2CQEMZ2V0QXNzZXRJbmZvAQULYXNzZXRJZEFTdHIEDnBtdFN0ckFzc2V0SWRBCAUNJHQwMjA4OTkyMDk3NgJfMQQNcG10QXNzZXROYW1lQQgFDSR0MDIwODk5MjA5NzYCXzIEDHBtdERlY2ltYWxzQQgFDSR0MDIwODk5MjA5NzYCXzMEDSR0MDIwOTg1MjEwNjIJAQxnZXRBc3NldEluZm8BBQthc3NldElkQlN0cgQOcG10U3RyQXNzZXRJZEIIBQ0kdDAyMDk4NTIxMDYyAl8xBA1wbXRBc3NldE5hbWVCCAUNJHQwMjA5ODUyMTA2MgJfMgQMcG10RGVjaW1hbHNCCAUNJHQwMjA5ODUyMTA2MgJfMwQJc2hhcmVOYW1lCQCsAgIJAKwCAgkArAICAgFzCQCvAgIFDXBtdEFzc2V0TmFtZUEABwIBXwkArwICBQ1wbXRBc3NldE5hbWVCAAcEEHNoYXJlRGVzY3JpcHRpb24JAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiJTaGFyZVRva2VuIG9mIFN3b3BGaSBwcm90b2NvbCBmb3IgBQ1wbXRBc3NldE5hbWVBAgUgYW5kIAUNcG10QXNzZXROYW1lQgIMIGF0IGFkZHJlc3MgCQClCAEFBHRoaXMEDXNoYXJlRGVjaW1hbHMJAGkCCQBkAgUMcG10RGVjaW1hbHNBBQxwbXREZWNpbWFsc0IAAgQSc2hhcmVJbml0aWFsU3VwcGx5AAAECnNoYXJlSXNzdWUJAMIIBQUJc2hhcmVOYW1lBRBzaGFyZURlc2NyaXB0aW9uBRJzaGFyZUluaXRpYWxTdXBwbHkFDXNoYXJlRGVjaW1hbHMGBAxzaGFyZUlzc3VlSWQJALgIAQUKc2hhcmVJc3N1ZQQJYmFzZUVudHJ5CQDMCAIJAQtTdHJpbmdFbnRyeQIFCGtWZXJzaW9uBQd2ZXJzaW9uCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXNzZXRJZEEFDnBtdFN0ckFzc2V0SWRBCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtBc3NldElkQgUOcG10U3RyQXNzZXRJZEIJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtCYWxhbmNlSW5pdEEFCWFtdEFzc2V0QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa0JhbGFuY2VJbml0QgUJYW10QXNzZXRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBGtGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBm9yYWNsZQINYmFzZV9mZWVfY3BtbQkAzAgCBQpzaGFyZUlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtTaGFyZUFzc2V0SWQJANgEAQUMc2hhcmVJc3N1ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQUSc2hhcmVJbml0aWFsU3VwcGx5BQNuaWwDBQxmaXJzdEhhcnZlc3QJAJQKAgUDbmlsCQCUCgIJAM4IAgUJYmFzZUVudHJ5CQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rRmlyc3RIYXJ2ZXN0BQxmaXJzdEhhcnZlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tGaXJzdEhhcnZlc3RIZWlnaHQJAGQCBQtzdGFydEhlaWdodAkAaAIFFWZpcnN0SGFydmVzdEVuZFBlcmlvZAUMcGVyaW9kTGVuZ3RoBQNuaWwFA25pbAkAlAoCBQNuaWwJAJQKAgUJYmFzZUVudHJ5BQNuaWwBaQEYa2VlcExpbWl0Rm9yRmlyc3RIYXJ2ZXN0BAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwkAzAgCBRFhZG1pbkludm9rZVB1YktleQUDbmlsCAUBaRVvcmlnaW5DYWxsZXJQdWJsaWNLZXkJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DCQECIT0CCQCQAwEFBGFyZ3MAAQkAAgECD1dyb25nIGFyZ3Mgc2l6ZQQKc2hhcmVMaW1pdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAAkAlAoCBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa1NoYXJlTGltaXQFCnNoYXJlTGltaXQFA25pbAUDbmlsAWkBCGV4Y2hhbmdlBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEMaXNEZXByaWNhdGVkAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBmNhbGxlcgkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwQNJHQwMjM0ODgyMzU2NAkAlAoCCQCRAwIFCHBBbW91bnRzAAAJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAAECXBtdEFtb3VudAgFDSR0MDIzNDg4MjM1NjQCXzEECnBtdEFzc2V0SWQIBQ0kdDAyMzQ4ODIzNTY0Al8yBBJtaW5BbW91bnRUb1JlY2VpdmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAEDSR0MDIzNjI5MjM3MDUJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDIzNjI5MjM3MDUCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMjM2MjkyMzcwNQJfMgQIYXNzZXRJZEEIBQ0kdDAyMzYyOTIzNzA1Al8zBAhhc3NldElkQggFDSR0MDIzNjI5MjM3MDUCXzQEDSR0MDIzNzE0MjM4MjAJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAyMzcxNDIzODIwAl8xBAhiYWxhbmNlQggFDSR0MDIzNzE0MjM4MjACXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDIzNzE0MjM4MjACXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDIzNzE0MjM4MjACXzQDCQECIT0CCQCQAwEFBGFyZ3MAAQkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMDCQAAAgUIYmFsYW5jZUEAAAYJAAACBQhiYWxhbmNlQgAACQACAQIgQ2FuJ3QgZXhjaGFuZ2Ugd2l0aCB6ZXJvIGJhbGFuY2UDCQBnAgAABRJtaW5BbW91bnRUb1JlY2VpdmUJAAIBCQCsAgICNE1pbmltYWwgYW1vdW50IHRvIHJlY2VpdmUgbXVzdCBiZSBwb3NpdGl2ZS4gQWN0dWFsOiAJAKQDAQUSbWluQW1vdW50VG9SZWNlaXZlAwkBAiE9AgkAkAMBBQhwQW1vdW50cwABCQACAQIdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFCGFzc2V0SWRBCQDMCAIFCGFzc2V0SWRCBQNuaWwFCnBtdEFzc2V0SWQJAAIBCQCsAgIJAKwCAgkArAICAiRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAFC3N0ckFzc2V0SWRBAgQgb3IgBQtzdHJBc3NldElkQgMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJcG10QW1vdW50BQpwbXRBc3NldElkBQNuaWwJARFzdXNwZW5kU3VzcGljaW91cwYFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQQUIYmFsYW5jZUIFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQNJHQwMjQ3MjAyNDc4NwkBDGdldEZlZVBhcmFtcwIIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBANmZWUIBQ0kdDAyNDcyMDI0Nzg3Al8xBAZnb3ZGZWUIBQ0kdDAyNDcyMDI0Nzg3Al8yBAd0ZWFtRmVlCAUNJHQwMjQ3MjAyNDc4NwJfMwQNJHQwMjQ4MDAyNTE1MQMJAAACBQpwbXRBc3NldElkBQhhc3NldElkQQkBDWNhbGN1bGF0ZUZlZXMHBQlwbXRBbW91bnQFEm1pbkFtb3VudFRvUmVjZWl2ZQUIYmFsYW5jZUEFCGJhbGFuY2VCBQNmZWUFBmdvdkZlZQUHdGVhbUZlZQkBDWNhbGN1bGF0ZUZlZXMHBQlwbXRBbW91bnQFEm1pbkFtb3VudFRvUmVjZWl2ZQUIYmFsYW5jZUIFCGJhbGFuY2VBBQNmZWUFBmdvdkZlZQUHdGVhbUZlZQQQYW1vdW50V2l0aG91dEZlZQgFDSR0MDI0ODAwMjUxNTECXzEEDWFtb3VudFdpdGhGZWUIBQ0kdDAyNDgwMDI1MTUxAl8yBBBnb3Zlcm5hbmNlUmV3YXJkCAUNJHQwMjQ4MDAyNTE1MQJfMwQKdGVhbVJld2FyZAgFDSR0MDI0ODAwMjUxNTECXzQEDSR0MDI1MTY1MjU1MDADCQAAAgUKcG10QXNzZXRJZAUIYXNzZXRJZEEJAJUKAwkAZAIFCGJhbGFuY2VBBQlwbXRBbW91bnQJAGUCCQBlAgkAZQIFCGJhbGFuY2VCBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkBQhhc3NldElkQgkAlQoDCQBlAgkAZQIJAGUCBQhiYWxhbmNlQQUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAkAZAIFCGJhbGFuY2VCBQlwbXRBbW91bnQFCGFzc2V0SWRBBAtuZXdCYWxhbmNlQQgFDSR0MDI1MTY1MjU1MDACXzEEC25ld0JhbGFuY2VCCAUNJHQwMjUxNjUyNTUwMAJfMgQLYXNzZXRJZFNlbmQIBQ0kdDAyNTE2NTI1NTAwAl8zBA0kdDAyNTUxNDI1Nzc0AwkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQCUCgIFCXBtdEFtb3VudAkAZAIJAGQCBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkCQCUCgIJAGQCCQBkAgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAUJcG10QW1vdW50BAxzdGFrZUFtb3VudEEIBQ0kdDAyNTUxNDI1Nzc0Al8xBAxzdGFrZUFtb3VudEIIBQ0kdDAyNTUxNDI1Nzc0Al8yBAZzdGFrZTEDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQQkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCCQAAAgUKcG10QXNzZXRJZAUIYXNzZXRJZEEJAMwIAgUMc3Rha2VBbW91bnRBCQDMCAIFC3N0ckFzc2V0SWRBBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCCQAAAgUKcG10QXNzZXRJZAUIYXNzZXRJZEIJAMwIAgUMc3Rha2VBbW91bnRCCQDMCAIFC3N0ckFzc2V0SWRCBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMgUGc3Rha2UyCQCUCgIFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEFC25ld0JhbGFuY2VBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIFC25ld0JhbGFuY2VCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUNYW1vdW50V2l0aEZlZQULYXNzZXRJZFNlbmQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzBRBnb3Zlcm5hbmNlUmV3YXJkBQthc3NldElkU2VuZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ50ZWFtQm94QWRkcmVzcwUKdGVhbVJld2FyZAULYXNzZXRJZFNlbmQFA25pbAkAzAgCBQ1hbW91bnRXaXRoRmVlCQDMCAIFC2Fzc2V0SWRTZW5kBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBDGlzRGVwcmljYXRlZAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEC3BtdEFzc2V0SWRBCQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAABAtwbXRBc3NldElkQgkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAQQMc3Rha2VGYXJtaW5nCQAAAgkAkQMCBQRhcmdzAAACBHRydWUECGxvY2tUeXBlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwABBA0kdDAyNzA4OTI3MTc5CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAyNzA4OTI3MTc5Al8xBAtzdHJBc3NldElkQggFDSR0MDI3MDg5MjcxNzkCXzIECGFzc2V0SWRBCAUNJHQwMjcwODkyNzE3OQJfMwQIYXNzZXRJZEIIBQ0kdDAyNzA4OTI3MTc5Al80BAxzaGFyZUFzc2V0SWQIBQ0kdDAyNzA4OTI3MTc5Al81BA0kdDAyNzE4ODI3Mjk0CQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMjcxODgyNzI5NAJfMQQIYmFsYW5jZUIIBQ0kdDAyNzE4ODI3Mjk0Al8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAyNzE4ODI3Mjk0Al8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAyNzE4ODI3Mjk0Al80BBBzaGFyZUFzc2V0U3VwcGx5CQELZ2V0THBTdXBwbHkBCAUBaQZjYWxsZXIDCQECIT0CCQCQAwEFBGFyZ3MAAgkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMDCQECIT0CCQCQAwEFCHBBbW91bnRzAAIJAQIhPQIJAJADAQUIcEFtb3VudHMAAwcJAAIBAh5Ud28gb3IgdGhyZWUgcGF5bWVudHMgZXhwZWN0ZWQDAwkBAiE9AgULcG10QXNzZXRJZEEFCGFzc2V0SWRBBgkBAiE9AgULcG10QXNzZXRJZEIFCGFzc2V0SWRCCQACAQkArAICCQCsAgIJAKwCAgIlSW5jb3JyZWN0IGFzc2V0cyBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAULc3RyQXNzZXRJZEECBSBhbmQgBQtzdHJBc3NldElkQgMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAkQMCBQhwQW1vdW50cwAABQtwbXRBc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAJEDAgUIcEFtb3VudHMAAQULcG10QXNzZXRJZEIFA25pbAMJAAACCQCQAwEFCHBBbW91bnRzAAMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIDCQAAAgkAkQMCBQlwQXNzZXRJZHMAAgEABQR1bml0CQCRAwIFCXBBc3NldElkcwACCQCRAwIFCHBBbW91bnRzAAIFA25pbAkAzggCBQNuaWwJARFzdXNwZW5kU3VzcGljaW91cwYFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQQUIYmFsYW5jZUIFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQNJHQwMjgyODMyODQ4MQkBH2NhbGNMUEFtb3VudFJlcGxlbnNpc2hUd29Ub2tlbnMHCQCRAwIFCHBBbW91bnRzAAAJAJEDAgUIcEFtb3VudHMAAQULcG10QXNzZXRJZEEFC3BtdEFzc2V0SWRCBQhiYWxhbmNlQQUIYmFsYW5jZUIFEHNoYXJlQXNzZXRTdXBwbHkEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAgFDSR0MDI4MjgzMjg0ODECXzEEBmNoYW5nZQgFDSR0MDI4MjgzMjg0ODECXzIEDWNoYW5nZUFzc2V0SWQIBQ0kdDAyODI4MzI4NDgxAl8zBApwbXRBbW91bnRBCAUNJHQwMjgyODMyODQ4MQJfNAQKcG10QW1vdW50QggFDSR0MDI4MjgzMjg0ODECXzUDCQAAAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAJAAIBAh1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAGYCAAAFBmNoYW5nZQkAAgECCkNoYW5nZSA8IDAEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEEJAMwIAgULc3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEIJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIEDHNoYXJlVG9rZW5TVAMFDHN0YWtlRmFybWluZwQKc3RQYXltZW50cwkAzggCCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxzaGFyZUFzc2V0SWQFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwACAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAIJAJEDAgUIcEFtb3VudHMAAgUDbmlsBQNuaWwEB3JlaXNzdWUJAPwHBAgFAWkGY2FsbGVyAhFyZWlzc3VlU2hhcmVUb2tlbgkAzAgCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFA25pbAUDbmlsAwkAAAIFB3JlaXNzdWUFB3JlaXNzdWUEBnN0YWtlMwkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIXbG9ja1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUIbG9ja1R5cGUFA25pbAUKc3RQYXltZW50cwMJAAACBQZzdGFrZTMFBnN0YWtlMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQdSZWlzc3VlAwUMc2hhcmVBc3NldElkBRVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEJAGQCBQhiYWxhbmNlQQUKcG10QW1vdW50QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCCQBkAgUIYmFsYW5jZUIFCnBtdEFtb3VudEIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBkAgUQc2hhcmVBc3NldFN1cHBseQUVc2hhcmVUb2tlblRvUGF5QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUGY2hhbmdlBQ1jaGFuZ2VBc3NldElkBQNuaWwFDHNoYXJlVG9rZW5TVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXJlcGxlbmlzaFdpdGhPbmVUb2tlbgQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBDGlzRGVwcmljYXRlZAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMECnBtdEFzc2V0SWQJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAAECXBtdEFtb3VudAkAkQMCBQhwQW1vdW50cwAABBB2aXJ0R2V0TWluQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABAxzdGFrZUZhcm1pbmcJAAACCQCRAwIFBGFyZ3MAAQIEdHJ1ZQQIbG9ja1R5cGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAIEDSR0MDMwNzQwMzA4MzAJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDMwNzQwMzA4MzACXzEEC3N0ckFzc2V0SWRCCAUNJHQwMzA3NDAzMDgzMAJfMgQIYXNzZXRJZEEIBQ0kdDAzMDc0MDMwODMwAl8zBAhhc3NldElkQggFDSR0MDMwNzQwMzA4MzACXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDMwNzQwMzA4MzACXzUEDSR0MDMwODM1MzA5NDEJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAzMDgzNTMwOTQxAl8xBAhiYWxhbmNlQggFDSR0MDMwODM1MzA5NDECXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDMwODM1MzA5NDECXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDMwODM1MzA5NDECXzQEEHNoYXJlQXNzZXRTdXBwbHkJAQtnZXRMcFN1cHBseQEIBQFpBmNhbGxlcgQHaW5pdGlhbAkAAAIJAGQCBQhiYWxhbmNlQQUIYmFsYW5jZUIAAAMJAQIhPQIJAJADAQUEYXJncwADCQACAQIPV3JvbmcgYXJncyBzaXplAwMJAQIhPQIJAJADAQUIcEFtb3VudHMAAQkBAiE9AgkAkAMBBQhwQW1vdW50cwACBwkAAgECI1R3byBvciBvbmUgYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkAwMJAQIhPQIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQECIT0CBQpwbXRBc3NldElkBQhhc3NldElkQgcJAAIBCQCsAgIJAKwCAgkArAICAiRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAFC3N0ckFzc2V0SWRBAgQgb3IgBQtzdHJBc3NldElkQgMFB2luaXRpYWwJAAIBAjBGb3IgaW5pdGlhbCBleGNoYW5nZXIgeW91IG5lZWQgdG8gdXNlIHR3byB0b2tlbnMDAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwACAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAIJAJEDAgUIcEFtb3VudHMAAgUDbmlsCQDOCAIFA25pbAkBEXN1c3BlbmRTdXNwaWNpb3VzBgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VBBQhiYWxhbmNlQgULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBA0kdDAzMTkwMjMxOTY5CQEMZ2V0RmVlUGFyYW1zAggFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEA2ZlZQgFDSR0MDMxOTAyMzE5NjkCXzEEBmdvdkZlZQgFDSR0MDMxOTAyMzE5NjkCXzIEB3RlYW1GZWUIBQ0kdDAzMTkwMjMxOTY5Al8zBA0kdDAzMTk3ODMyMDQwCQEMZ2V0QXNzZXRJbmZvAQUKcG10QXNzZXRJZAQNcG10QXNzZXRJZFN0cggFDSR0MDMxOTc4MzIwNDACXzEEDnBtdEFzc2V0SWROYW1lCAUNJHQwMzE5NzgzMjA0MAJfMgQNJHQwMzIwNTgzMjMwMwkBHWNhbGNMUEFtb3VudFJlcGxlbmlzaE9uZVRva2VuCwUJcG10QW1vdW50BQpwbXRBc3NldElkBQhhc3NldElkQQUIYXNzZXRJZEIFCGJhbGFuY2VBBQhiYWxhbmNlQgUQc2hhcmVBc3NldFN1cHBseQUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUFEHZpcnRHZXRNaW5BbW91bnQEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAgFDSR0MDMyMDU4MzIzMDMCXzEEC25ld0JhbGFuY2VBCAUNJHQwMzIwNTgzMjMwMwJfMgQLbmV3QmFsYW5jZUIIBQ0kdDAzMjA1ODMyMzAzAl8zBAlnb3ZSZXdhcmQIBQ0kdDAzMjA1ODMyMzAzAl80BAp0ZWFtUmV3YXJkCAUNJHQwMzIwNTgzMjMwMwJfNQQOZ292UmV3YXJkQXNzZXQIBQ0kdDAzMjA1ODMyMzAzAl82BBFnb3ZSZXdhcmRBc3NldFN0cgMJAAACBQ5nb3ZSZXdhcmRBc3NldAUIYXNzZXRJZEEFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgMJAAACBRVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAkAAgECHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoBAZzdGFrZTEDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQ1wbXRBc3NldElkU3RyCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCXBtdEFtb3VudAkAzAgCBQ1wbXRBc3NldElkU3RyBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBRFnb3ZSZXdhcmRBc3NldFN0cgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBwkAzAgCCQBkAgUJZ292UmV3YXJkBQp0ZWFtUmV3YXJkCQDMCAIFEWdvdlJld2FyZEFzc2V0U3RyBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMgUGc3Rha2UyBAxzaGFyZVRva2VuU1QDBQxzdGFrZUZhcm1pbmcECnN0UGF5bWVudHMJAM4IAgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMc2hhcmVBc3NldElkBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFA25pbAMJAAACCQCQAwEFCHBBbW91bnRzAAIJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIDCQAAAgkAkQMCBQlwQXNzZXRJZHMAAQEABQR1bml0CQCRAwIFCXBBc3NldElkcwABCQCRAwIFCHBBbW91bnRzAAEFA25pbAUDbmlsBAdyZWlzc3VlCQD8BwQIBQFpBmNhbGxlcgIRcmVpc3N1ZVNoYXJlVG9rZW4JAMwIAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQNuaWwFA25pbAMJAAACBQdyZWlzc3VlBQdyZWlzc3VlBAZzdGFrZTMJAPwHBAUOZmFybWluZ0FkZHJlc3MCF2xvY2tTaGFyZVRva2Vuc0Zyb21Qb29sCQDMCAIFC2NhbGxlckJ5dGVzCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFCGxvY2tUeXBlBQNuaWwFCnN0UGF5bWVudHMDCQAAAgUGc3Rha2UzBQZzdGFrZTMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEHUmVpc3N1ZQMFDHNoYXJlQXNzZXRJZAUVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUMc2hhcmVBc3NldElkBQNuaWwJAJQKAgUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBBQtuZXdCYWxhbmNlQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCBQtuZXdCYWxhbmNlQgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkJAGQCBRBzaGFyZUFzc2V0U3VwcGx5BRVzaGFyZVRva2VuVG9QYXlBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzBQlnb3ZSZXdhcmQFDmdvdlJld2FyZEFzc2V0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBQ5nb3ZSZXdhcmRBc3NldAUDbmlsBQxzaGFyZVRva2VuU1QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA0kdDAzNDM3MTM0NDYxCQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAzNDM3MTM0NDYxAl8xBAtzdHJBc3NldElkQggFDSR0MDM0MzcxMzQ0NjECXzIECGFzc2V0SWRBCAUNJHQwMzQzNzEzNDQ2MQJfMwQIYXNzZXRJZEIIBQ0kdDAzNDM3MTM0NDYxAl80BAxzaGFyZUFzc2V0SWQIBQ0kdDAzNDM3MTM0NDYxAl81BA0kdDAzNDQ3MDM0NTc2CQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMzQ0NzAzNDU3NgJfMQQIYmFsYW5jZUIIBQ0kdDAzNDQ3MDM0NTc2Al8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAzNDQ3MDM0NTc2Al8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAzNDQ3MDM0NTc2Al80BBBzaGFyZUFzc2V0U3VwcGx5CQELZ2V0THBTdXBwbHkBCAUBaQZjYWxsZXIEDSR0MDM0NjM4MzUwMTgDCQAAAgkAkAMBBQhwQW1vdW50cwABBAZwQXNzZXQJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAADCQECIT0CBQZwQXNzZXQFDHNoYXJlQXNzZXRJZAkAAgEJAKwCAgIkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQDYBAEFDHNoYXJlQXNzZXRJZAkAlAoCCQCRAwIFCHBBbW91bnRzAAAFBnBBc3NldAkAlAoCAAAFDHNoYXJlQXNzZXRJZAQJcG10QW1vdW50CAUNJHQwMzQ2MzgzNTAxOAJfMQQKcG10QXNzZXRJZAgFDSR0MDM0NjM4MzUwMTgCXzIDCQECIT0CCQCQAwEFBGFyZ3MAAQkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMJAGYCCQCQAwEFCHBBbW91bnRzAAEJAAIBAh1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJcG10QW1vdW50BQpwbXRBc3NldElkBQNuaWwJARFzdXNwZW5kU3VzcGljaW91cwYFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQQUIYmFsYW5jZUIFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQMdW5sb2NrQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAQt2YWx1ZU9yRWxzZQIJAJEDAgUEYXJncwAAAgEwBAZ1bmxvY2sDCQBmAgUMdW5sb2NrQW1vdW50AAAJAPwHBAUOZmFybWluZ0FkZHJlc3MCG3dpdGhkcmF3U2hhcmVUb2tlbnNGcm9tUG9vbAkAzAgCBQtjYWxsZXJCeXRlcwkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQx1bmxvY2tBbW91bnQFA25pbAUDbmlsAAADCQAAAgUGdW5sb2NrBQZ1bmxvY2sEDndpdGhkcmF3QW1vdW50CQBkAgUJcG10QW1vdW50BQx1bmxvY2tBbW91bnQEDGFtb3VudFRvUGF5QQkAawMFDndpdGhkcmF3QW1vdW50BQhiYWxhbmNlQQUQc2hhcmVBc3NldFN1cHBseQQMYW1vdW50VG9QYXlCCQBrAwUOd2l0aGRyYXdBbW91bnQFCGJhbGFuY2VCBRBzaGFyZUFzc2V0U3VwcGx5BAZzdGFrZTEDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQQkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBwkAzAgCBQxhbW91bnRUb1BheUEJAMwIAgULc3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIHCQDMCAIFDGFtb3VudFRvUGF5QgkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMdW5sb2NrQW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEJAGUCBQhiYWxhbmNlQQUMYW1vdW50VG9QYXlBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIJAGUCBQhiYWxhbmNlQgUMYW1vdW50VG9QYXlCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQkAZQIFEHNoYXJlQXNzZXRTdXBwbHkFDndpdGhkcmF3QW1vdW50CQDMCAIJAQRCdXJuAgUMc2hhcmVBc3NldElkBQ53aXRoZHJhd0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFDGFtb3VudFRvUGF5QQUIYXNzZXRJZEEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQxhbW91bnRUb1BheUIFCGFzc2V0SWRCBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARB3aXRoZHJhd09uZVRva2VuBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEMaXNEZXByaWNhdGVkAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBmNhbGxlcgkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwQNd2l0aGRyYXdBc3NldAMJAAACCQCRAwIFBGFyZ3MAAAIABQR1bml0CQDZBAEJAJEDAgUEYXJncwAABA0kdDAzNzIzNjM3MzI2CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAzNzIzNjM3MzI2Al8xBAtzdHJBc3NldElkQggFDSR0MDM3MjM2MzczMjYCXzIECGFzc2V0SWRBCAUNJHQwMzcyMzYzNzMyNgJfMwQIYXNzZXRJZEIIBQ0kdDAzNzIzNjM3MzI2Al80BAxzaGFyZUFzc2V0SWQIBQ0kdDAzNzIzNjM3MzI2Al81BA0kdDAzNzMzNTM3NDQxCQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMzczMzUzNzQ0MQJfMQQIYmFsYW5jZUIIBQ0kdDAzNzMzNTM3NDQxAl8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAzNzMzNTM3NDQxAl8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAzNzMzNTM3NDQxAl80BBBzaGFyZUFzc2V0U3VwcGx5CQELZ2V0THBTdXBwbHkBCAUBaQZjYWxsZXIEDSR0MDM3NTAzMzc4NTUDCQAAAgkAkAMBBQhwQW1vdW50cwABBAZwQXNzZXQJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAADCQECIT0CBQZwQXNzZXQFDHNoYXJlQXNzZXRJZAkAAgEJAKwCAgIkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQDYBAEFDHNoYXJlQXNzZXRJZAkAlAoCCQCRAwIFCHBBbW91bnRzAAAFBnBBc3NldAkAlAoCAAAFDHNoYXJlQXNzZXRJZAQJcG10QW1vdW50CAUNJHQwMzc1MDMzNzg1NQJfMQQKcG10QXNzZXRJZAgFDSR0MDM3NTAzMzc4NTUCXzIED3ZpcnRNaW5Ub1JlY2l2ZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQMJAQIhPQIJAJADAQUEYXJncwADCQACAQIPV3JvbmcgYXJncyBzaXplAwkAZgIJAJADAQUIcEFtb3VudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAiE9AgUKcG10QXNzZXRJZAUMc2hhcmVBc3NldElkCQACAQkArAICAiRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJANgEAQUMc2hhcmVBc3NldElkAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhc3NldElkQQkAzAgCBQhhc3NldElkQgUDbmlsBQ13aXRoZHJhd0Fzc2V0CQACAQIZSW5jb3JyZWN0IHdpdGhkcmF3IGFzc2V0LgMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJcG10QW1vdW50BQpwbXRBc3NldElkBQNuaWwJARFzdXNwZW5kU3VzcGljaW91cwYFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQQUIYmFsYW5jZUIFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQMdW5sb2NrQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAQt2YWx1ZU9yRWxzZQIJAJEDAgUEYXJncwACAgEwBAZ1bmxvY2sDCQBmAgUMdW5sb2NrQW1vdW50AAAJAPwHBAUOZmFybWluZ0FkZHJlc3MCG3dpdGhkcmF3U2hhcmVUb2tlbnNGcm9tUG9vbAkAzAgCBQtjYWxsZXJCeXRlcwkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQx1bmxvY2tBbW91bnQFA25pbAUDbmlsAAADCQAAAgUGdW5sb2NrBQZ1bmxvY2sEDndpdGhkcmF3QW1vdW50CQBkAgUJcG10QW1vdW50BQx1bmxvY2tBbW91bnQEDGFtb3VudFRvUGF5QQkAawMFDndpdGhkcmF3QW1vdW50BQhiYWxhbmNlQQUQc2hhcmVBc3NldFN1cHBseQQMYW1vdW50VG9QYXlCCQBrAwUOd2l0aGRyYXdBbW91bnQFCGJhbGFuY2VCBRBzaGFyZUFzc2V0U3VwcGx5BA0kdDAzOTEyMjM5MTg5CQEMZ2V0RmVlUGFyYW1zAggFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEA2ZlZQgFDSR0MDM5MTIyMzkxODkCXzEEBmdvdkZlZQgFDSR0MDM5MTIyMzkxODkCXzIEB3RlYW1GZWUIBQ0kdDAzOTEyMjM5MTg5Al8zBA0kdDAzOTIwMjM5NjE2AwkAAAIFDXdpdGhkcmF3QXNzZXQFCGFzc2V0SWRBCQENY2FsY3VsYXRlRmVlcwcFDGFtb3VudFRvUGF5QgUPdmlydE1pblRvUmVjaXZlCQBlAgUIYmFsYW5jZUIFDGFtb3VudFRvUGF5QgkAZQIFCGJhbGFuY2VBBQxhbW91bnRUb1BheUEFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlCQENY2FsY3VsYXRlRmVlcwcFDGFtb3VudFRvUGF5QQUPdmlydE1pblRvUmVjaXZlCQBlAgUIYmFsYW5jZUEFDGFtb3VudFRvUGF5QQkAZQIFCGJhbGFuY2VCBQxhbW91bnRUb1BheUIFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMzkyMDIzOTYxNgJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDM5MjAyMzk2MTYCXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAzOTIwMjM5NjE2Al8zBAp0ZWFtUmV3YXJkCAUNJHQwMzkyMDIzOTYxNgJfNAQNJHQwMzk2Mjk0MDkzOQMJAAACBQ13aXRoZHJhd0Fzc2V0BQhhc3NldElkQQQHdW5zdGFrZQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIHCQDMCAIJAGQCCQBkAgkAZAIFDGFtb3VudFRvUGF5QQUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQCWCgQJAGUCCQBlAgkAZQIJAGUCBQhiYWxhbmNlQQUMYW1vdW50VG9QYXlBBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkBQhiYWxhbmNlQgUIYXNzZXRJZEEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBkAgUMYW1vdW50VG9QYXlBBQ1hbW91bnRXaXRoRmVlBQhhc3NldElkQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAd1bnN0YWtlAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgkAZAIJAGQCCQBkAgUMYW1vdW50VG9QYXlCBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkCQDMCAIFC3N0ckFzc2V0SWRCBQNuaWwFA25pbAAAAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAJYKBAUIYmFsYW5jZUEJAGUCCQBlAgkAZQIJAGUCBQhiYWxhbmNlQgUMYW1vdW50VG9QYXlCBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkBQhhc3NldElkQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAGQCBQxhbW91bnRUb1BheUIFDWFtb3VudFdpdGhGZWUFCGFzc2V0SWRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EC25ld0JhbGFuY2VBCAUNJHQwMzk2Mjk0MDkzOQJfMQQLbmV3QmFsYW5jZUIIBQ0kdDAzOTYyOTQwOTM5Al8yBBBnb3ZSZXdhcmRBc3NldElkCAUNJHQwMzk2Mjk0MDkzOQJfMwQMdXNlclRyYW5zZmVyCAUNJHQwMzk2Mjk0MDkzOQJfNAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMdW5sb2NrQW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQULbmV3QmFsYW5jZUEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgULbmV3QmFsYW5jZUIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBlAgUQc2hhcmVBc3NldFN1cHBseQUOd2l0aGRyYXdBbW91bnQJAMwIAgkBBEJ1cm4CBQxzaGFyZUFzc2V0SWQFDndpdGhkcmF3QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwUQZ292ZXJuYW5jZVJld2FyZAUQZ292UmV3YXJkQXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ50ZWFtQm94QWRkcmVzcwUKdGVhbVJld2FyZAUQZ292UmV3YXJkQXNzZXRJZAUDbmlsBQx1c2VyVHJhbnNmZXIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARl0YWtlSW50b0FjY291bnRFeHRyYUZ1bmRzBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA0kdDA0MTY5OTQxNzc1CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDA0MTY5OTQxNzc1Al8xBAtzdHJBc3NldElkQggFDSR0MDQxNjk5NDE3NzUCXzIECGFzc2V0SWRBCAUNJHQwNDE2OTk0MTc3NQJfMwQIYXNzZXRJZEIIBQ0kdDA0MTY5OTQxNzc1Al80BAVjbGFpbQMDCQAAAgUIYXNzZXRJZEEFBFVTRE4GCQAAAgUIYXNzZXRJZEIFBFVTRE4JAPwHBAgFAWkGY2FsbGVyAhNjbGFpbU5ldHJpbm9SZXdhcmRzBQNuaWwFA25pbAUDbmlsAwkAAAIFBWNsYWltBQVjbGFpbQQNJHQwNDE5NTk0MjA5NQkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDQxOTU5NDIwOTUCXzEECGJhbGFuY2VCCAUNJHQwNDE5NTk0MjA5NQJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwNDE5NTk0MjA5NQJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwNDE5NTk0MjA5NQJfNAQNc3Rha2VkQW1vdW50QQgFDSR0MDQxOTU5NDIwOTUCXzUEDXN0YWtlZEFtb3VudEIIBQ0kdDA0MTk1OTQyMDk1Al82BA1hbW91bnRFbnJvbGxBCQBlAgUPYWNjb3VudEJhbGFuY2VBBQhiYWxhbmNlQQQNYW1vdW50RW5yb2xsQgkAZQIFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUIEDSR0MDQyMjE1NDI1MjkDCQAAAgUIYXNzZXRJZEEFBEwyTVAJAJQKAgkAZQIFD2FjY291bnRCYWxhbmNlQQUNc3Rha2VkQW1vdW50QQUNYW1vdW50RW5yb2xsQgMJAAACBQhhc3NldElkQgUETDJNUAkAlAoCBQ1hbW91bnRFbnJvbGxBCQBlAgUPYWNjb3VudEJhbGFuY2VCBQ1zdGFrZWRBbW91bnRCCQCUCgIFDWFtb3VudEVucm9sbEEFDWFtb3VudEVucm9sbEIEDmFtb3VudFRvU3Rha2VBCAUNJHQwNDIyMTU0MjUyOQJfMQQOYW1vdW50VG9TdGFrZUIIBQ0kdDA0MjIxNTQyNTI5Al8yAwkBAiE9AgkAkAMBBQRhcmdzAAAJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQECIT0CBQ9tb25leUJveEFkZHJlc3MIBQFpDG9yaWdpbkNhbGxlcgkAAgECJk9ubHkgdGhlIHdhbGxldCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwMJAGYCAAAFDWFtb3VudEVucm9sbEEGCQBmAgAABQ1hbW91bnRFbnJvbGxCCQEHc3VzcGVuZAECFkVucm9sbCBhbW91bnQgbmVnYXRpdmUDAwkAAAIFDWFtb3VudEVucm9sbEEAAAkAAAIFDWFtb3VudEVucm9sbEIAAAcJAAIBAhBObyBtb25leSB0byB0YWtlBAZzdGFrZTEDAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAGYCBQ5hbW91bnRUb1N0YWtlQQAABwkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBgkAzAgCBQ5hbW91bnRUb1N0YWtlQQkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRCCQBmAgUOYW1vdW50VG9TdGFrZUIAAAcJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUOYW1vdW50VG9TdGFrZUIJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIJAJQKAgUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQkAZAIFCGJhbGFuY2VBBQ1hbW91bnRFbnJvbGxBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIJAGQCBQhiYWxhbmNlQgUNYW1vdW50RW5yb2xsQgUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABBNtdWx0aVNpZ25lZEJ5QWRtaW5zBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAIFE211bHRpU2lnbmVkQnlBZG1pbnPdxt/T", "height": 2700029, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GtyEW4kTgYB5RNo65QhbodL8E3HfUgtbsjM8mfMtRZxW Next: Ah2TwbVLgDyvgvXroG4QKQaLDcQgyioyp7Wtsm1AFGpX Diff:
OldNewDifferences
186186 else throw(($getType(aE) + " couldn't be cast to (Int, Int, Int, Int, Int)"))
187187 }
188188 if ((aD == aD))
189- then aD
189+ then aD._2
190190 else throw("Strict value is not equal to itself.")
191191 }
192192 else 0
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "deprecated_"
1111
1212 let e = "A_asset_id"
1313
1414 let f = "B_asset_id"
1515
1616 let g = "A_asset_balance"
1717
1818 let h = "B_asset_balance"
1919
2020 let i = "A_asset_init"
2121
2222 let j = "B_asset_init"
2323
2424 let k = "share_asset_id"
2525
2626 let l = "share_asset_supply"
2727
2828 let m = "commission"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "staking_usdnnsbt_address"
4545
4646 let v = "staking_eurn_address"
4747
4848 let w = "leasing_amount"
4949
5050 let x = "usdn_asset_id"
5151
5252 let y = "eurn_asset_id"
5353
5454 let z = "l2mp_asset_id"
5555
5656 let A = "staking_assets"
5757
5858 let B = "active_all_contracts"
5959
6060 let C = "discounts"
6161
6262 let D = "discount_values"
6363
6464 let E = "_GSwop_amount"
6565
6666 let F = "_SWOP_amount"
6767
6868 let G = "pool_"
6969
7070 let H = "admin_pub_1"
7171
7272 let I = "admin_pub_2"
7373
7474 let J = "admin_pub_3"
7575
7676 let K = "admin_invoke_pub"
7777
7878 let L = "money_box_address"
7979
8080 let M = "team_box_address"
8181
8282 let N = "voting_address"
8383
8484 let O = "governance_address"
8585
8686 let P = "farming_address"
8787
8888 let Q = "staking_l2mp_address"
8989
9090 let R = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9191
9292 func S (T) = {
9393 let U = getString(R, T)
9494 if ($isInstanceOf(U, "String"))
9595 then {
9696 let V = U
9797 fromBase58String(V)
9898 }
9999 else {
100100 let W = U
101101 throw((T + "is empty"))
102102 }
103103 }
104104
105105
106106 let X = S(H)
107107
108108 let Y = S(I)
109109
110110 let Z = S(J)
111111
112112 let aa = S(K)
113113
114114 let ab = Address(S(L))
115115
116116 let ac = Address(S(M))
117117
118118 let ad = Address(S(N))
119119
120120 let ae = Address(S(O))
121121
122122 let af = Address(S(P))
123123
124124 let ag = S(x)
125125
126126 let ah = S(y)
127127
128128 let ai = S(z)
129129
130130 let aj = getStringValue(R, A)
131131
132132 let ak = Address(S(u))
133133
134134 let al = Address(S(v))
135135
136136 let am = Address(S(Q))
137137
138138 let an = valueOrErrorMessage(getInteger(ad, r), "Empty kBasePeriod")
139139
140140 let ao = valueOrErrorMessage(getInteger(ad, t), "Empty kStartHeight")
141141
142142 let ap = valueOrErrorMessage(getInteger(ad, s), "Empty kPeriodLength")
143143
144144 let aq = ((an + ((height - ao) / ap)) + 3)
145145
146146 let ar = getBooleanValue(R, B)
147147
148148 let as = 1000000
149149
150150 let at = 100000000
151151
152152 let au = toBigInt(10000000000000000)
153153
154154 func av (aw,ax) = {
155155 let U = aw
156156 if ($isInstanceOf(U, "ByteVector"))
157157 then {
158158 let ay = U
159159 assetBalance(ax, ay)
160160 }
161161 else if ($isInstanceOf(U, "Unit"))
162162 then {
163163 let az = U
164164 wavesBalance(ax).available
165165 }
166166 else throw("Match error")
167167 }
168168
169169
170170 func aA (aw,ax) = {
171171 let aB = {
172172 let U = aw
173173 if ($isInstanceOf(U, "ByteVector"))
174174 then {
175175 let aC = U
176176 if ((aC == ag))
177177 then getInteger(ak, ((("rpd_balance_" + toBase58String(aC)) + "_") + toString(ax)))
178178 else if ((aC == ah))
179179 then getInteger(al, ((("%s%s%s__stakingBalance__" + toBase58String(aC)) + "__") + toString(ax)))
180180 else if ((aC == ai))
181181 then {
182182 let aD = {
183183 let aE = invoke(am, "getUserAssetsREADONLY", [ax], nil)
184184 if ($isInstanceOf(aE, "(Int, Int, Int, Int, Int)"))
185185 then aE
186186 else throw(($getType(aE) + " couldn't be cast to (Int, Int, Int, Int, Int)"))
187187 }
188188 if ((aD == aD))
189- then aD
189+ then aD._2
190190 else throw("Strict value is not equal to itself.")
191191 }
192192 else 0
193193 }
194194 else if ($isInstanceOf(U, "Unit"))
195195 then valueOrElse(getInteger(ax, w), 0)
196196 else throw("Match error")
197197 }
198198 let U = aB
199199 if ($isInstanceOf(U, "Int"))
200200 then {
201201 let aF = U
202202 aF
203203 }
204204 else 0
205205 }
206206
207207
208208 func aG (aw) = {
209209 let U = aw
210210 if (if ($isInstanceOf(U, "String"))
211211 then true
212212 else $isInstanceOf(U, "ByteVector"))
213213 then {
214214 let ay = U
215215 let aH = {
216216 let aI = ay
217217 if ($isInstanceOf(aI, "ByteVector"))
218218 then {
219219 let aC = aI
220220 $Tuple2(toBase58String(aC), aC)
221221 }
222222 else if ($isInstanceOf(aI, "String"))
223223 then {
224224 let aC = aI
225225 $Tuple2(aC, fromBase58String(aC))
226226 }
227227 else throw("Match error")
228228 }
229229 let aJ = aH._1
230230 let aK = aH._2
231231 let aL = valueOrErrorMessage(assetInfo(aK), (("Asset " + aJ) + " doesn't exist"))
232232 $Tuple3(aJ, aL.name, aL.decimals)
233233 }
234234 else if ($isInstanceOf(U, "Unit"))
235235 then {
236236 let az = U
237237 $Tuple3("WAVES", "WAVES", 8)
238238 }
239239 else throw("Match error")
240240 }
241241
242242
243243 func aM (aN) = [BooleanEntry(c, false), StringEntry(n, aN)]
244244
245245
246246 func aO (aP) = {
247247 let aQ = valueOrElse(getInteger(ae, (toString(aP) + F)), 0)
248248 let aR = valueOrElse(getInteger(ae, (toString(aP) + E)), aQ)
249249 let aS = split(getStringValue(R, D), ",")
250250 let aT = split(getStringValue(R, C), ",")
251251 if (if ((aR >= parseIntValue(aS[0])))
252252 then (parseIntValue(aS[1]) > aR)
253253 else false)
254254 then (as - parseIntValue(aT[0]))
255255 else if (if ((aR >= parseIntValue(aS[1])))
256256 then (parseIntValue(aS[2]) > aR)
257257 else false)
258258 then (as - parseIntValue(aT[1]))
259259 else if (if ((aR >= parseIntValue(aS[2])))
260260 then (parseIntValue(aS[3]) > aR)
261261 else false)
262262 then (as - parseIntValue(aT[2]))
263263 else if (if ((aR >= parseIntValue(aS[3])))
264264 then (parseIntValue(aS[4]) > aR)
265265 else false)
266266 then (as - parseIntValue(aT[3]))
267267 else if ((aR >= parseIntValue(aS[4])))
268268 then (as - parseIntValue(aT[4]))
269269 else as
270270 }
271271
272272
273273 func aU (aV,aW,aX,aY,aZ,ba,bb) = {
274274 let bc = fraction(aY, aV, (aV + aX))
275275 let bd = fraction(bc, (as - aZ), as)
276276 let be = fraction(bc, ba, as)
277277 let bf = fraction(bc, bb, as)
278278 if ((aW > bd))
279279 then throw(((("Calculated amount to receive " + toString(bd)) + " is less than specified minimum ") + toString(aW)))
280280 else $Tuple4(bc, bd, be, bf)
281281 }
282282
283283
284284 func bg (aV,bh,aZ) = {
285285 let bi = (as - aZ)
286286 let bj = fraction(aZ, 55, 100)
287287 let bk = (at + fraction((bi * bj), at, (as * as)))
288288 let bl = ((((bh + fraction(bh, bi, as)) + fraction(aV, bi, as)) - aV) - fraction(aV, (bi * bj), (as * as)))
289289 let bm = (-(toBigInt(bh)) * toBigInt(aV))
290290 let bn = ((toBigInt(bl) * toBigInt(bl)) - fraction((toBigInt(4) * bm), toBigInt(bk), toBigInt(at)))
291291 toInt(fraction((-(toBigInt(bl)) + sqrtBigInt(bn, 0, 0, DOWN)), toBigInt(at), toBigInt((2 * bk))))
292292 }
293293
294294
295295 func bo (aw) = if ((aw == base58''))
296296 then unit
297297 else aw
298298
299299
300300 func bp (bq,br,bs,bt,bu,bv) = aM(((((((((((((((("Suspicious state. Actual balances: " + toString(bq)) + " ") + bu) + ", ") + toString(br)) + " ") + bv) + ". State: ") + toString(bs)) + " ") + bu) + ", ") + toString(bt)) + " ") + bv))
301301
302302
303303 func bw () = if (ar)
304304 then unit
305305 else throw("DApp is inactive at this moment")
306306
307307
308308 func bx (by) = if (isDefined(getString(R, (G + by))))
309309 then unit
310310 else throw("DApp is not registered pool")
311311
312312
313313 func bz (by) = if (!(valueOrElse(getBoolean(R, (d + by)), false)))
314314 then unit
315315 else throw("Pool is deprecated. Only withdraw action allowed.")
316316
317317
318318 func bA (ax,bu,bv) = {
319319 let bs = getIntegerValue(ax, g)
320320 let bt = getIntegerValue(ax, h)
321321 let bB = aA(bu, ax)
322322 let bC = aA(bv, ax)
323323 let bq = (av(bu, ax) + bB)
324324 let br = (av(bv, ax) + bC)
325325 $Tuple6(bs, bt, bq, br, bB, bC)
326326 }
327327
328328
329329 func bD (ax) = getIntegerValue(ax, l)
330330
331331
332332 func bE (ax) = {
333333 let bF = getStringValue(ax, e)
334334 let bG = getStringValue(ax, f)
335335 let bu = if ((bF == "WAVES"))
336336 then unit
337337 else fromBase58String(bF)
338338 let bv = if ((bG == "WAVES"))
339339 then unit
340340 else fromBase58String(bG)
341341 let bH = fromBase58String(getStringValue(ax, k))
342342 $Tuple5(bF, bG, bu, bv, bH)
343343 }
344344
345345
346346 func bI (ax,bJ) = {
347347 let bK = aO(bJ)
348348 let aZ = fraction(getIntegerValue(ax, m), bK, as, CEILING)
349349 let bL = fraction(aZ, 35, 100)
350350 let bM = fraction(aZ, 10, 100)
351351 $Tuple3(aZ, bL, bM)
352352 }
353353
354354
355355 func bN (bO,bP,bQ,bR,bS,bT,bU) = {
356356 let bV = aG(bQ)
357357 let bW = bV._1
358358 let bX = bV._2
359359 let bY = bV._3
360360 let bZ = aG(bR)
361361 let ca = bZ._1
362362 let cb = bZ._2
363363 let cc = bZ._3
364364 let cd = ((bS + bT) == 0)
365365 let ce = if (cd)
366366 then $Tuple5(bO, bP, 0, bQ, toBigInt(1))
367367 else {
368368 let cf = fraction(au, toBigInt(bO), toBigInt(bS))
369369 let cg = fraction(au, toBigInt(bP), toBigInt(bT))
370370 if ((cg > cf))
371371 then {
372372 let ch = fraction(bO, bT, bS)
373373 $Tuple5(bO, ch, (bP - ch), bR, cf)
374374 }
375375 else {
376376 let ch = fraction(bP, bS, bT)
377377 $Tuple5(ch, bP, (bO - ch), bQ, cg)
378378 }
379379 }
380380 let ci = ce._1
381381 let cj = ce._2
382382 let ck = ce._3
383383 let cl = ce._4
384384 let cm = ce._5
385385 let cn = if (cd)
386386 then {
387387 let co = ((bY + cc) / 2)
388388 fraction(pow(ci, bY, 5, 1, bY, DOWN), pow(cj, cc, 5, 1, cc, DOWN), pow(10, 0, co, 0, 0, DOWN))
389389 }
390390 else toInt(fraction(cm, toBigInt(bU), au))
391391 $Tuple5(cn, ck, cl, ci, cj)
392392 }
393393
394394
395395 func cp (aV,cq,aC,cr,bS,bT,cs,aZ,bL,bM,ct) = if ((cq == aC))
396396 then {
397397 let cu = bg(aV, bS, aZ)
398398 let cv = aU(cu, ct, bS, bT, aZ, bL, bM)
399399 let bc = cv._1
400400 let bd = cv._2
401401 let be = cv._3
402402 let cw = cv._4
403403 let cx = (bS + cu)
404404 let cy = (((bT + bc) - be) - cw)
405405 let cz = (bS + aV)
406406 let cA = ((bT - be) - cw)
407407 let cf = fraction(toBigInt((aV - cu)), au, toBigInt(cx))
408408 let cg = fraction(toBigInt(bd), au, toBigInt(cy))
409409 let cn = toInt(fraction(min([cf, cg]), toBigInt(cs), au))
410410 let cB = toInt(fraction(fraction(toBigInt((aV - cu)), au, toBigInt(bS)), toBigInt(cs), au))
411411 let cC = fraction((cn - cB), at, cB)
412412 $Tuple7(cn, cz, cA, be, cw, cr, cC)
413413 }
414414 else {
415415 let cu = bg(aV, bT, aZ)
416416 let cD = aU(cu, ct, bT, bS, aZ, bL, bM)
417417 let bc = cD._1
418418 let bd = cD._2
419419 let be = cD._3
420420 let cw = cD._4
421421 let cx = (((bS + bc) - be) - cw)
422422 let cy = (bT + cu)
423423 let cz = ((bS - be) - cw)
424424 let cA = (bT + aV)
425425 let cf = fraction(toBigInt(bd), au, toBigInt(cx))
426426 let cg = fraction(toBigInt((aV - cu)), au, toBigInt(cy))
427427 let cn = toInt(fraction(min([cf, cg]), toBigInt(cs), au))
428428 let cB = toInt(fraction(fraction(toBigInt((aV - cu)), au, toBigInt(bT)), toBigInt(cs), au))
429429 let cC = fraction((cn - cB), at, cB)
430430 $Tuple7(cn, cz, cA, be, cw, aC, cC)
431431 }
432432
433433
434434 func cE (bO,bP,bQ,bR,bS,bT,cs,aZ,bL,bM,ct) = {
435435 let cF = bN(bO, bP, bQ, bR, bS, bT, cs)
436436 let cG = cF._1
437437 let ck = cF._2
438438 let cl = cF._3
439439 let ci = cF._4
440440 let cj = cF._5
441441 if ((ck > 0))
442442 then {
443443 let cH = cp(ck, cl, bQ, bR, (bS + ci), (bT + cj), cs, aZ, bL, bM, ct)
444444 let cI = cH._1
445445 let cz = cH._2
446446 let cA = cH._3
447447 let be = cH._4
448448 let cw = cH._5
449449 let cJ = cH._6
450450 let cC = cH._7
451451 $Tuple7((cG + cI), cC, cz, cA, be, cw, cJ)
452452 }
453453 else $Tuple7(cG, 0, (bS + ci), (bT + cj), 0, 0, unit)
454454 }
455455
456456
457457 @Callable(aF)
458458 func calcLPReplenishDiffPropREADONLY (cK,cL,cM,cN) = {
459459 let cO = bE(aF.caller)
460460 let bF = cO._1
461461 let bG = cO._2
462462 let bu = cO._3
463463 let bv = cO._4
464464 let bH = cO._5
465465 let cP = bA(aF.caller, bu, bv)
466466 let bS = cP._1
467467 let bT = cP._2
468468 let cQ = cP._3
469469 let cR = cP._4
470470 let cs = bD(aF.caller)
471471 let bO = parseIntValue(cL[0])
472472 let bP = parseIntValue(cL[1])
473473 let ct = parseIntValue(cL[2])
474474 let cS = bI(aF.caller, aF.originCaller)
475475 let aZ = cS._1
476476 let bL = cS._2
477477 let bM = cS._3
478478 let cT = cE(bO, bP, bu, bv, bS, bT, cs, aZ, bL, bM, ct)
479479 let cU = cT._1
480480 let cC = cT._2
481481 let cz = cT._3
482482 let cA = cT._4
483483 let be = cT._5
484484 let cw = cT._6
485485 let aC = cT._7
486486 $Tuple2(nil, $Tuple2(nil, [cU, cC, cz, cA, be, cw, aC]))
487487 }
488488
489489
490490
491491 @Callable(aF)
492492 func calcLPReplenishTwoTokensREADONLY (cK,cL,cM,cN) = {
493493 let cV = bE(aF.caller)
494494 let bF = cV._1
495495 let bG = cV._2
496496 let bu = cV._3
497497 let bv = cV._4
498498 let bH = cV._5
499499 let cW = bA(aF.caller, bu, bv)
500500 let bS = cW._1
501501 let bT = cW._2
502502 let cQ = cW._3
503503 let cR = cW._4
504504 let cs = bD(aF.caller)
505505 let bO = parseIntValue(cL[0])
506506 let bP = parseIntValue(cL[1])
507507 let cX = bN(bO, bP, bu, bv, bS, bT, cs)
508508 let cU = cX._1
509509 let ck = cX._2
510510 let cl = cX._3
511511 let ci = cX._4
512512 let cj = cX._5
513513 $Tuple2(nil, $Tuple2(nil, [cU, ck, cl, ci, cj]))
514514 }
515515
516516
517517
518518 @Callable(aF)
519519 func withdrawREADONLY (cK,cL,cM,cN) = {
520520 let cY = bE(aF.caller)
521521 let bF = cY._1
522522 let bG = cY._2
523523 let bu = cY._3
524524 let bv = cY._4
525525 let bH = cY._5
526526 let cZ = bA(aF.caller, bu, bv)
527527 let bs = cZ._1
528528 let bt = cZ._2
529529 let bq = cZ._3
530530 let br = cZ._4
531531 let bU = bD(aF.caller)
532532 let da = parseIntValue(cL[0])
533533 let db = if ((size(cL) == 3))
534534 then $Tuple2(parseIntValue(cL[1]), parseIntValue(cL[2]))
535535 else $Tuple2(bs, bt)
536536 let bS = db._1
537537 let bT = db._2
538538 let dc = fraction(da, bS, bU)
539539 let dd = fraction(da, bT, bU)
540540 $Tuple2(nil, $Tuple2(nil, [dc, dd]))
541541 }
542542
543543
544544
545545 @Callable(aF)
546546 func init (cK,cL,cM,cN) = {
547547 let bJ = Address(cK)
548548 let de = $Tuple2(cM[0], bo(cN[0]))
549549 let ci = de._1
550550 let df = de._2
551551 let dg = $Tuple2(cM[1], bo(cN[1]))
552552 let cj = dg._1
553553 let dh = dg._2
554554 if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
555555 then throw("Only admin can call this function")
556556 else if ((size(cL) != 1))
557557 then throw("Wrong args size")
558558 else if (isDefined(getBoolean(bJ, c)))
559559 then throw("DApp is already active")
560560 else if ((df == dh))
561561 then throw("Assets must be different")
562562 else {
563563 let di = aG(df)
564564 let bW = di._1
565565 let bX = di._2
566566 let bY = di._3
567567 let dj = aG(dh)
568568 let ca = dj._1
569569 let cb = dj._2
570570 let cc = dj._3
571571 let dk = (cL[0] == "true")
572572 let dl = ((("s" + take(bX, 7)) + "_") + take(cb, 7))
573573 let dm = ((((("ShareToken of SwopFi protocol for " + bX) + " and ") + cb) + " at address ") + toString(this))
574574 let co = ((bY + cc) / 2)
575575 let dn = pow(ci, bY, 5, 1, bY, DOWN)
576576 let do = pow(cj, cc, 5, 1, cc, DOWN)
577577 let dp = pow(10, 0, co, 0, 0, DOWN)
578578 let dq = fraction(dn, do, dp)
579579 let dr = Issue(dl, dm, dq, co, true)
580580 let ds = calculateAssetId(dr)
581581 let dt = if (contains(aj, bW))
582582 then invoke(aF.caller, "stakeUnstake", [true, ci, bW], nil)
583583 else 0
584584 if ((dt == dt))
585585 then {
586586 let du = if (contains(aj, ca))
587587 then invoke(aF.caller, "stakeUnstake", [true, cj, ca], nil)
588588 else 0
589589 if ((du == du))
590590 then {
591591 let dv = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bW), StringEntry(f, ca), IntegerEntry(g, ci), IntegerEntry(h, cj), IntegerEntry(m, getIntegerValue(R, "base_fee_cpmm")), dr, StringEntry(k, toBase58String(ds)), IntegerEntry(l, dq), ScriptTransfer(bJ, dq, ds)]
592592 if (dk)
593593 then $Tuple2(nil, $Tuple2((dv ++ [BooleanEntry(o, dk), IntegerEntry(p, (ao + (aq * ap)))]), nil))
594594 else $Tuple2(nil, $Tuple2(dv, nil))
595595 }
596596 else throw("Strict value is not equal to itself.")
597597 }
598598 else throw("Strict value is not equal to itself.")
599599 }
600600 }
601601
602602
603603
604604 @Callable(aF)
605605 func initWithInitRatio (cK,cL,cM,cN) = {
606606 let bJ = Address(cK)
607607 let dw = $Tuple5(parseIntValue(cL[0]), parseIntValue(cL[1]), cL[2], cL[3], (cL[4] == "true"))
608608 let dx = dw._1
609609 let dy = dw._2
610610 let dz = dw._3
611611 let dA = dw._4
612612 let dk = dw._5
613613 if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
614614 then throw("Only admin can call this function")
615615 else if ((size(cL) != 5))
616616 then throw("Wrong args size")
617617 else if (isDefined(getBoolean(bJ, c)))
618618 then throw("DApp is already active")
619619 else if ((dz == dA))
620620 then throw("Assets must be different")
621621 else {
622622 let dB = aG(dz)
623623 let bW = dB._1
624624 let bX = dB._2
625625 let bY = dB._3
626626 let dC = aG(dA)
627627 let ca = dC._1
628628 let cb = dC._2
629629 let cc = dC._3
630630 let dl = ((("s" + take(bX, 7)) + "_") + take(cb, 7))
631631 let dm = ((((("ShareToken of SwopFi protocol for " + bX) + " and ") + cb) + " at address ") + toString(this))
632632 let co = ((bY + cc) / 2)
633633 let dq = 0
634634 let dr = Issue(dl, dm, dq, co, true)
635635 let ds = calculateAssetId(dr)
636636 let dv = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bW), StringEntry(f, ca), IntegerEntry(i, dx), IntegerEntry(j, dy), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(R, "base_fee_cpmm")), dr, StringEntry(k, toBase58String(ds)), IntegerEntry(l, dq)]
637637 if (dk)
638638 then $Tuple2(nil, $Tuple2((dv ++ [BooleanEntry(o, dk), IntegerEntry(p, (ao + (aq * ap)))]), nil))
639639 else $Tuple2(nil, $Tuple2(dv, nil))
640640 }
641641 }
642642
643643
644644
645645 @Callable(aF)
646646 func keepLimitForFirstHarvest (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
647647 then throw("Only admin can call this function")
648648 else if ((size(cL) != 1))
649649 then throw("Wrong args size")
650650 else {
651651 let dD = parseIntValue(cL[0])
652652 $Tuple2(nil, $Tuple2([IntegerEntry(q, dD)], nil))
653653 }))
654654
655655
656656
657657 @Callable(aF)
658658 func exchange (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
659659 let bJ = Address(cK)
660660 let dE = $Tuple2(cM[0], bo(cN[0]))
661661 let aV = dE._1
662662 let cq = dE._2
663663 let aW = parseIntValue(cL[0])
664664 let dF = bE(aF.caller)
665665 let bF = dF._1
666666 let bG = dF._2
667667 let bu = dF._3
668668 let bv = dF._4
669669 let dG = bA(aF.caller, bu, bv)
670670 let bs = dG._1
671671 let bt = dG._2
672672 let bq = dG._3
673673 let br = dG._4
674674 if ((size(cL) != 1))
675675 then throw("Wrong args size")
676676 else if (if ((bs == 0))
677677 then true
678678 else (bt == 0))
679679 then throw("Can't exchange with zero balance")
680680 else if ((0 >= aW))
681681 then throw(("Minimal amount to receive must be positive. Actual: " + toString(aW)))
682682 else if ((size(cM) != 1))
683683 then throw("One attached payment expected")
684684 else if (!(containsElement([bu, bv], cq)))
685685 then throw(((("Incorrect asset attached. Expected: " + bF) + " or ") + bG))
686686 else if (if ((bs > bq))
687687 then true
688688 else (bt > br))
689689 then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
690690 else {
691691 let dH = bI(aF.caller, aF.originCaller)
692692 let aZ = dH._1
693693 let bL = dH._2
694694 let bM = dH._3
695695 let dI = if ((cq == bu))
696696 then aU(aV, aW, bs, bt, aZ, bL, bM)
697697 else aU(aV, aW, bt, bs, aZ, bL, bM)
698698 let bc = dI._1
699699 let bd = dI._2
700700 let be = dI._3
701701 let bf = dI._4
702702 let dJ = if ((cq == bu))
703703 then $Tuple3((bs + aV), (((bt - bd) - be) - bf), bv)
704704 else $Tuple3((((bs - bd) - be) - bf), (bt + aV), bu)
705705 let cz = dJ._1
706706 let cA = dJ._2
707707 let dK = dJ._3
708708 let dL = if ((cq == bu))
709709 then $Tuple2(aV, ((bd + be) + bf))
710710 else $Tuple2(((bd + be) + bf), aV)
711711 let dM = dL._1
712712 let dN = dL._2
713713 let dt = if (contains(aj, bF))
714714 then invoke(aF.caller, "stakeUnstake", [(cq == bu), dM, bF], nil)
715715 else 0
716716 if ((dt == dt))
717717 then {
718718 let du = if (contains(aj, bG))
719719 then invoke(aF.caller, "stakeUnstake", [(cq == bv), dN, bG], nil)
720720 else 0
721721 if ((du == du))
722722 then $Tuple2(nil, $Tuple2([IntegerEntry(g, cz), IntegerEntry(h, cA), ScriptTransfer(bJ, bd, dK), ScriptTransfer(ab, be, dK), ScriptTransfer(ac, bf, dK)], [bd, dK]))
723723 else throw("Strict value is not equal to itself.")
724724 }
725725 else throw("Strict value is not equal to itself.")
726726 }
727727 })))
728728
729729
730730
731731 @Callable(aF)
732732 func replenishWithTwoTokens (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
733733 let bJ = Address(cK)
734734 let df = bo(cN[0])
735735 let dh = bo(cN[1])
736736 let dO = (cL[0] == "true")
737737 let dP = parseIntValue(cL[1])
738738 let dQ = bE(aF.caller)
739739 let bF = dQ._1
740740 let bG = dQ._2
741741 let bu = dQ._3
742742 let bv = dQ._4
743743 let bH = dQ._5
744744 let dR = bA(aF.caller, bu, bv)
745745 let bs = dR._1
746746 let bt = dR._2
747747 let bq = dR._3
748748 let br = dR._4
749749 let bU = bD(aF.caller)
750750 if ((size(cL) != 2))
751751 then throw("Wrong args size")
752752 else if (if ((size(cM) != 2))
753753 then (size(cM) != 3)
754754 else false)
755755 then throw("Two or three payments expected")
756756 else if (if ((df != bu))
757757 then true
758758 else (dh != bv))
759759 then throw(((("Incorrect assets attached. Expected: " + bF) + " and ") + bG))
760760 else if (if ((bs > bq))
761761 then true
762762 else (bt > br))
763763 then $Tuple2(nil, ([ScriptTransfer(bJ, cM[0], df), ScriptTransfer(bJ, cM[1], dh)] ++ (if ((size(cM) == 3))
764764 then [AttachedPayment(if ((cN[2] == base58''))
765765 then unit
766766 else cN[2], cM[2])]
767767 else (nil ++ bp(bq, br, bs, bt, bF, bG)))))
768768 else {
769769 let dS = bN(cM[0], cM[1], df, dh, bs, bt, bU)
770770 let cn = dS._1
771771 let ck = dS._2
772772 let cl = dS._3
773773 let ci = dS._4
774774 let cj = dS._5
775775 if ((cn == 0))
776776 then throw("Too small amount to replenish")
777777 else if ((0 > ck))
778778 then throw("Change < 0")
779779 else {
780780 let dt = if (contains(aj, bF))
781781 then invoke(aF.caller, "stakeUnstake", [true, ci, bF], nil)
782782 else 0
783783 if ((dt == dt))
784784 then {
785785 let du = if (contains(aj, bG))
786786 then invoke(aF.caller, "stakeUnstake", [true, cj, bG], nil)
787787 else 0
788788 if ((du == du))
789789 then {
790790 let dT = if (dO)
791791 then {
792792 let dU = ([AttachedPayment(bH, cn)] ++ (if ((size(cM) == 3))
793793 then [AttachedPayment(if ((cN[2] == base58''))
794794 then unit
795795 else cN[2], cM[2])]
796796 else nil))
797797 let dV = invoke(aF.caller, "reissueShareToken", [cn], nil)
798798 if ((dV == dV))
799799 then {
800800 let dW = invoke(af, "lockShareTokensFromPool", [cK, toString(aF.caller), dP], dU)
801801 if ((dW == dW))
802802 then nil
803803 else throw("Strict value is not equal to itself.")
804804 }
805805 else throw("Strict value is not equal to itself.")
806806 }
807807 else [Reissue(bH, cn, true), ScriptTransfer(bJ, cn, bH)]
808808 $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bs + ci)), IntegerEntry(h, (bt + cj)), IntegerEntry(l, (bU + cn)), ScriptTransfer(bJ, ck, cl)] ++ dT), nil))
809809 }
810810 else throw("Strict value is not equal to itself.")
811811 }
812812 else throw("Strict value is not equal to itself.")
813813 }
814814 }
815815 })))
816816
817817
818818
819819 @Callable(aF)
820820 func replenishWithOneToken (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
821821 let bJ = Address(cK)
822822 let cq = bo(cN[0])
823823 let aV = cM[0]
824824 let ct = parseIntValue(cL[0])
825825 let dO = (cL[1] == "true")
826826 let dP = parseIntValue(cL[2])
827827 let dX = bE(aF.caller)
828828 let bF = dX._1
829829 let bG = dX._2
830830 let bu = dX._3
831831 let bv = dX._4
832832 let bH = dX._5
833833 let dY = bA(aF.caller, bu, bv)
834834 let bs = dY._1
835835 let bt = dY._2
836836 let bq = dY._3
837837 let br = dY._4
838838 let bU = bD(aF.caller)
839839 let cd = ((bs + bt) == 0)
840840 if ((size(cL) != 3))
841841 then throw("Wrong args size")
842842 else if (if ((size(cM) != 1))
843843 then (size(cM) != 2)
844844 else false)
845845 then throw("Two or one attached assets expected")
846846 else if (if ((cq != bu))
847847 then (cq != bv)
848848 else false)
849849 then throw(((("Incorrect asset attached. Expected: " + bF) + " or ") + bG))
850850 else if (cd)
851851 then throw("For initial exchanger you need to use two tokens")
852852 else if (if ((bs > bq))
853853 then true
854854 else (bt > br))
855855 then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ (if ((size(cM) == 2))
856856 then [AttachedPayment(if ((cN[2] == base58''))
857857 then unit
858858 else cN[2], cM[2])]
859859 else (nil ++ bp(bq, br, bs, bt, bF, bG)))))
860860 else {
861861 let dZ = bI(aF.caller, aF.originCaller)
862862 let aZ = dZ._1
863863 let bL = dZ._2
864864 let bM = dZ._3
865865 let ea = aG(cq)
866866 let eb = ea._1
867867 let ec = ea._2
868868 let ed = cp(aV, cq, bu, bv, bs, bt, bU, aZ, bL, bM, ct)
869869 let cn = ed._1
870870 let cz = ed._2
871871 let cA = ed._3
872872 let ee = ed._4
873873 let bf = ed._5
874874 let ef = ed._6
875875 let eg = if ((ef == bu))
876876 then bF
877877 else bG
878878 if ((cn == 0))
879879 then throw("Too small amount to replenish")
880880 else {
881881 let dt = if (contains(aj, eb))
882882 then invoke(aF.caller, "stakeUnstake", [true, aV, eb], nil)
883883 else 0
884884 if ((dt == dt))
885885 then {
886886 let du = if (contains(aj, eg))
887887 then invoke(aF.caller, "stakeUnstake", [false, (ee + bf), eg], nil)
888888 else 0
889889 if ((du == du))
890890 then {
891891 let dT = if (dO)
892892 then {
893893 let dU = ([AttachedPayment(bH, cn)] ++ (if ((size(cM) == 2))
894894 then [AttachedPayment(if ((cN[1] == base58''))
895895 then unit
896896 else cN[1], cM[1])]
897897 else nil))
898898 let dV = invoke(aF.caller, "reissueShareToken", [cn], nil)
899899 if ((dV == dV))
900900 then {
901901 let dW = invoke(af, "lockShareTokensFromPool", [cK, toString(aF.caller), dP], dU)
902902 if ((dW == dW))
903903 then nil
904904 else throw("Strict value is not equal to itself.")
905905 }
906906 else throw("Strict value is not equal to itself.")
907907 }
908908 else [Reissue(bH, cn, true), ScriptTransfer(bJ, cn, bH)]
909909 $Tuple2(nil, $Tuple2(([IntegerEntry(g, cz), IntegerEntry(h, cA), IntegerEntry(l, (bU + cn)), ScriptTransfer(ab, ee, ef), ScriptTransfer(ac, bf, ef)] ++ dT), nil))
910910 }
911911 else throw("Strict value is not equal to itself.")
912912 }
913913 else throw("Strict value is not equal to itself.")
914914 }
915915 }
916916 })))
917917
918918
919919
920920 @Callable(aF)
921921 func withdraw (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), {
922922 let bJ = Address(cK)
923923 let eh = bE(aF.caller)
924924 let bF = eh._1
925925 let bG = eh._2
926926 let bu = eh._3
927927 let bv = eh._4
928928 let bH = eh._5
929929 let ei = bA(aF.caller, bu, bv)
930930 let bs = ei._1
931931 let bt = ei._2
932932 let bq = ei._3
933933 let br = ei._4
934934 let bU = bD(aF.caller)
935935 let ej = if ((size(cM) == 1))
936936 then {
937937 let ek = bo(cN[0])
938938 if ((ek != bH))
939939 then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
940940 else $Tuple2(cM[0], ek)
941941 }
942942 else $Tuple2(0, bH)
943943 let aV = ej._1
944944 let cq = ej._2
945945 if ((size(cL) != 1))
946946 then throw("Wrong args size")
947947 else if ((size(cM) > 1))
948948 then throw("One attached payment expected")
949949 else if (if ((bs > bq))
950950 then true
951951 else (bt > br))
952952 then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
953953 else {
954954 let el = parseIntValue(valueOrElse(cL[0], "0"))
955955 let em = if ((el > 0))
956956 then invoke(af, "withdrawShareTokensFromPool", [cK, toString(aF.caller), el], nil)
957957 else 0
958958 if ((em == em))
959959 then {
960960 let da = (aV + el)
961961 let dc = fraction(da, bs, bU)
962962 let dd = fraction(da, bt, bU)
963963 let dt = if (contains(aj, bF))
964964 then invoke(aF.caller, "stakeUnstake", [false, dc, bF], nil)
965965 else 0
966966 if ((dt == dt))
967967 then {
968968 let du = if (contains(aj, bG))
969969 then invoke(aF.caller, "stakeUnstake", [false, dd, bG], nil)
970970 else 0
971971 if ((du == du))
972972 then $Tuple2([ScriptTransfer(aF.caller, el, bH)], $Tuple2([IntegerEntry(g, (bs - dc)), IntegerEntry(h, (bt - dd)), IntegerEntry(l, (bU - da)), Burn(bH, da), ScriptTransfer(bJ, dc, bu), ScriptTransfer(bJ, dd, bv)], nil))
973973 else throw("Strict value is not equal to itself.")
974974 }
975975 else throw("Strict value is not equal to itself.")
976976 }
977977 else throw("Strict value is not equal to itself.")
978978 }
979979 }))
980980
981981
982982
983983 @Callable(aF)
984984 func withdrawOneToken (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
985985 let bJ = Address(cK)
986986 let en = if ((cL[0] == ""))
987987 then unit
988988 else fromBase58String(cL[0])
989989 let eo = bE(aF.caller)
990990 let bF = eo._1
991991 let bG = eo._2
992992 let bu = eo._3
993993 let bv = eo._4
994994 let bH = eo._5
995995 let ep = bA(aF.caller, bu, bv)
996996 let bs = ep._1
997997 let bt = ep._2
998998 let bq = ep._3
999999 let br = ep._4
10001000 let bU = bD(aF.caller)
10011001 let eq = if ((size(cM) == 1))
10021002 then {
10031003 let ek = bo(cN[0])
10041004 if ((ek != bH))
10051005 then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
10061006 else $Tuple2(cM[0], ek)
10071007 }
10081008 else $Tuple2(0, bH)
10091009 let aV = eq._1
10101010 let cq = eq._2
10111011 let er = parseIntValue(cL[1])
10121012 if ((size(cL) != 3))
10131013 then throw("Wrong args size")
10141014 else if ((size(cM) > 1))
10151015 then throw("One attached payment expected")
10161016 else if ((cq != bH))
10171017 then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
10181018 else if (!(containsElement([bu, bv], en)))
10191019 then throw("Incorrect withdraw asset.")
10201020 else if (if ((bs > bq))
10211021 then true
10221022 else (bt > br))
10231023 then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
10241024 else {
10251025 let el = parseIntValue(valueOrElse(cL[2], "0"))
10261026 let em = if ((el > 0))
10271027 then invoke(af, "withdrawShareTokensFromPool", [cK, toString(aF.caller), el], nil)
10281028 else 0
10291029 if ((em == em))
10301030 then {
10311031 let da = (aV + el)
10321032 let dc = fraction(da, bs, bU)
10331033 let dd = fraction(da, bt, bU)
10341034 let es = bI(aF.caller, aF.originCaller)
10351035 let aZ = es._1
10361036 let bL = es._2
10371037 let bM = es._3
10381038 let et = if ((en == bu))
10391039 then aU(dd, er, (bt - dd), (bs - dc), aZ, bL, bM)
10401040 else aU(dc, er, (bs - dc), (bt - dd), aZ, bL, bM)
10411041 let bc = et._1
10421042 let bd = et._2
10431043 let be = et._3
10441044 let bf = et._4
10451045 let eu = if ((en == bu))
10461046 then {
10471047 let ev = if (contains(aj, bF))
10481048 then invoke(aF.caller, "stakeUnstake", [false, (((dc + bd) + be) + bf), bF], nil)
10491049 else 0
10501050 if ((ev == ev))
10511051 then $Tuple4(((((bs - dc) - bd) - be) - bf), bt, bu, [ScriptTransfer(bJ, (dc + bd), bu)])
10521052 else throw("Strict value is not equal to itself.")
10531053 }
10541054 else {
10551055 let ev = if (contains(aj, bG))
10561056 then invoke(aF.caller, "stakeUnstake", [false, (((dd + bd) + be) + bf), bG], nil)
10571057 else 0
10581058 if ((ev == ev))
10591059 then $Tuple4(bs, ((((bt - dd) - bd) - be) - bf), bv, [ScriptTransfer(bJ, (dd + bd), bv)])
10601060 else throw("Strict value is not equal to itself.")
10611061 }
10621062 let cz = eu._1
10631063 let cA = eu._2
10641064 let ew = eu._3
10651065 let ex = eu._4
10661066 $Tuple2([ScriptTransfer(aF.caller, el, bH)], $Tuple2(([IntegerEntry(g, cz), IntegerEntry(h, cA), IntegerEntry(l, (bU - da)), Burn(bH, da), ScriptTransfer(ab, be, ew), ScriptTransfer(ac, bf, ew)] ++ ex), nil))
10671067 }
10681068 else throw("Strict value is not equal to itself.")
10691069 }
10701070 })))
10711071
10721072
10731073
10741074 @Callable(aF)
10751075 func takeIntoAccountExtraFunds (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), {
10761076 let ey = bE(aF.caller)
10771077 let bF = ey._1
10781078 let bG = ey._2
10791079 let bu = ey._3
10801080 let bv = ey._4
10811081 let ez = if (if ((bu == ag))
10821082 then true
10831083 else (bv == ag))
10841084 then invoke(aF.caller, "claimNetrinoRewards", nil, nil)
10851085 else nil
10861086 if ((ez == ez))
10871087 then {
10881088 let eA = bA(aF.caller, bu, bv)
10891089 let bs = eA._1
10901090 let bt = eA._2
10911091 let bq = eA._3
10921092 let br = eA._4
10931093 let bB = eA._5
10941094 let bC = eA._6
10951095 let eB = (bq - bs)
10961096 let eC = (br - bt)
10971097 let eD = if ((bu == ai))
10981098 then $Tuple2((bq - bB), eC)
10991099 else if ((bv == ai))
11001100 then $Tuple2(eB, (br - bC))
11011101 else $Tuple2(eB, eC)
11021102 let eE = eD._1
11031103 let eF = eD._2
11041104 if ((size(cL) != 0))
11051105 then throw("Wrong args size")
11061106 else if ((ab != aF.originCaller))
11071107 then throw("Only the wallet can call this function")
11081108 else if (if ((0 > eB))
11091109 then true
11101110 else (0 > eC))
11111111 then aM("Enroll amount negative")
11121112 else if (if ((eB == 0))
11131113 then (eC == 0)
11141114 else false)
11151115 then throw("No money to take")
11161116 else {
11171117 let dt = if (if (contains(aj, bF))
11181118 then (eE > 0)
11191119 else false)
11201120 then invoke(aF.caller, "stakeUnstake", [true, eE, bF], nil)
11211121 else 0
11221122 if ((dt == dt))
11231123 then {
11241124 let du = if (if (contains(aj, bG))
11251125 then (eF > 0)
11261126 else false)
11271127 then invoke(aF.caller, "stakeUnstake", [true, eF, bG], nil)
11281128 else 0
11291129 if ((du == du))
11301130 then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bs + eB)), IntegerEntry(h, (bt + eC))], nil))
11311131 else throw("Strict value is not equal to itself.")
11321132 }
11331133 else throw("Strict value is not equal to itself.")
11341134 }
11351135 }
11361136 else throw("Strict value is not equal to itself.")
11371137 }))
11381138
11391139
11401140 @Verifier(eG)
11411141 func eH () = {
11421142 let eI = {
11431143 let eJ = if (sigVerify(eG.bodyBytes, eG.proofs[0], X))
11441144 then 1
11451145 else 0
11461146 let eK = if (sigVerify(eG.bodyBytes, eG.proofs[1], Y))
11471147 then 1
11481148 else 0
11491149 let eL = if (sigVerify(eG.bodyBytes, eG.proofs[2], Z))
11501150 then 1
11511151 else 0
11521152 (((eJ + eK) + eL) >= 2)
11531153 }
11541154 eI
11551155 }
11561156

github/deemru/w8io/169f3d6 
109.46 ms