tx · DXTNpodtsUc25pZtwKYtocxkwX2r6zmvEX8AxdTNjwxj

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10100000 Waves

2024.09.13 04:39 [3281205] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "DXTNpodtsUc25pZtwKYtocxkwX2r6zmvEX8AxdTNjwxj", "fee": 10100000, "feeAssetId": null, "timestamp": 1726191575233, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3a9RPMUAKbScpRha54XNmfZh7Upi1Q25qRxifgkZi2baACVkpUX6NyFdEfbADrCeyWnavJCjcSWA7H8pNgPibEwT" ], "script": "base64:BgLlAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSBAoCCAgSBAoCCAgSAwoBCBIAEgMKAQgSBAoCCAgSBAoCCAgSBAoCAQgSBAoCAQgSBAoCAgISBQoDAQEBEgASBAoCCAgSABIDCgEBEgASBAoCAgISABIDCgEIEgQKAggIEgMKARgSBAoCCAgSBAoCCAgSBQoDCAgIEgQKAggIEgcKBQEBAQEBEgMKAQESBQoDAQEIEgMKAQgSAwoBCBIAEgQKAggBEgQKAggBEgMKAQgSAwoBCBIAEgASAwoBCBIDCgEIEgQKAgICEgCeAgAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAE0tTX0FMTE9XX1JPQk9fRFVDS1MHAApEQVlfTUlMTElTAIC4mSkABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAANwdWIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDADBRZLU19TRVBBUkFURV9QVUJMSUNfS0VZASCrF1ePFWfjWVRBsNZy62abxKPTZl7VmYZQ35g3H7IJCAEgT1PiGj9UqNadUk4THUYnVb2zU/Mse8lUVLD/Q8G0FCgDCQAAAgEBVAUHJG1hdGNoMAEgT1PiGj9UqNadUk4THUYnVb2zU/Mse8lUVLD/Q8G0FCgJAAIBAg1Vbmtub3duIGNoYWluAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgAQYWNyZXMyQWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1A0VUgzVDluWHBNTnBVbVNtUWpQbUV6M0c4NXQzem42ZUEDCQAAAgEBVAUHJG1hdGNoMAIjM05CUHgxRmNpdTNKUU5FR1oyMWpTblRkdXRMTkdHQlVTWGgJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAUKREFZX01JTExJUwMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgIPZmluaXNoQmxvY2tGb3JfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQRzYWx0B2VudHJvcHkDCQBnAgAABQhtYXhWYWx1ZQkAAgECFm1heFZhbHVlIHNob3VsZCBiZSA+IDAECnJhbmRvbUhhc2gJAPcDAQkAywECBQRzYWx0BQdlbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQEJZmluYWxUaW1lAAkAlwMBCQDMCAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIAmNCBq6QyBQNuaWwACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sAC1JPQk9fUFJFRklYAgRST0JPAApBUlRQUkVTQUxFAgdQUkVTQUxFAAZOVU1SRVMABgAYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSABkAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAxXSE1VTFRJUExJRVIAgMivoCUAD0RFRkFVTFRMT0NBVElPTgIPQWZyaWNhX0ZfQWZyaWNhABBSRVNPVVJDRVBSSUNFTUlOANW1AgAKRVNTRUxMQ09FRgAKABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABVVU0RUMkFDUkVTX01VTFRJUExJRVIACgASTUlOX1dMR09MRF9ST0JCRVJZAIDC1y8AFkFMTE9XRURfRlJFRV9ST0JCRVJJRVMAAAAZQUNSRVNfRk9SX1JPQkJFUllfQVRURU1QVACAhK9fABdBTExPV0VEX0ZSRUVfREVMSVZFUklFUwAAABpBQ1JFU19GT1JfREVMSVZFUllfQVRURU1QVACAhK9fAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMJAMwIAgILQm9vbS1Eb2cgTDEJAMwIAgILQm9vbS1Eb2cgTDIJAMwIAgILQm9vbS1Eb2cgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwkAzAgCAicyM18yM181XzIwXzIzXzZfMzVfMl8xMDBfMCwwLDAsMCwwLDAsMF8JAMwIAgInMjNfMjNfNV8yMF8yM182XzcwXzJfMTUwXzAsMCwwLDAsMCwwLDBfCQDMCAICKDIzXzIzXzVfMjBfMjNfNl8xMDVfMl8yMDBfMCwwLDAsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhkdWNrQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQtkdWNrQXNzZXRJZAkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrXwULZHVja0Fzc2V0SWQBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBGFkZHIJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZER1Y2tCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2RlbGl2ZXJ5RnVuZEtleQIMZGVsaXZlcnlGdW5kAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARNrZXlEdWNrUm9iYmVyeUNvdW50AQtkdWNrQXNzZXRJZAkArAICAhh0b3RhbFJvYmJlcnlDb3VudEJ5RHVja18FC2R1Y2tBc3NldElkARNrZXlVc2VyUm9iYmVyeUNvdW50AQRhZGRyCQCsAgICEXVzZXJSb2JiZXJ5Q291bnRfBQRhZGRyARVrZXlVc2VyTGFzdFJvYmJlcnlEYXkBBGFkZHIJAKwCAgITdXNlckxhc3RSb2JiZXJ5RGF5XwUEYWRkcgEUa2V5RHVja0RlbGl2ZXJ5Q291bnQBC2R1Y2tBc3NldElkCQCsAgICGXRvdGFsRGVsaXZlcnlDb3VudEJ5RHVja18FC2R1Y2tBc3NldElkARRrZXlVc2VyRGVsaXZlcnlDb3VudAEEYWRkcgkArAICAhJ1c2VyRGVsaXZlcnlDb3VudF8FBGFkZHIBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBGFkZHIJAKwCAgIUdXNlckxhc3REZWxpdmVyeURheV8FBGFkZHIAB3hwQ2xhaW0AkE4AD3hwU3VjY2Vzc0ZsaWdodACQTgAMeHBGYWlsRmxpZ2h0ANAPAAx4cFN1Y2Nlc3NSb2IAkE4ACXhwRmFpbFJvYgDQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBDGdldER1Y2tTdGF0cwQPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkCmJ1ZmZFZmZlY3QKZm9yY2VCdWZmcwQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAQKc3RhdGVCdWZmcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8JAM4IAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwDBQpmb3JjZUJ1ZmZzCQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAUDbmlsCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckRleHRlcml0eQUDbmlsAAlEQVlNSUxMSVMAgLiZKQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyAA1pbmN1YmF0b3JBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEVrdFZ1eDJSaGNoU042M0RzRG80YjRtejRRcXpLU2VEdgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgALYnJlZWRlckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRFZ1VTQ1SDdFaDVkbXROYm5STlJTdEd3VUxBN05ZNkhiAwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluABFGSVZFTUlOVVRFU01JTExJUwDgpxIADFJFTkFNSU5HQ09TVADAlrECAApNQVhOQU1FTEVOADIAFUluZnJhVXBncmFkZUNvc3RTVXNkdACAreIEAAxFWFBNQVRFUklBTFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAApt2C7asHAwkAAAIBAVQFByRtYXRjaDAAqqeBswkJAAIBAg1Vbmtub3duIGNoYWluAAdFWFBVU0RUBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDlmncDCQAAAgEBVAUHJG1hdGNoMACA5Zp3CQACAQINVW5rbm93biBjaGFpbgAOUk9CT19EVUNLX1VTRFQAoI0GAAxTX0NPU1RfQUNSRVMAgPKLqAkABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIEbGNuXwUEbmFtZQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QBD2tleU5leHRSb2JvRHVjawACDG5leHRSb2JvRHVjawALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwAIcmxIZWFsdGgAAAALcmxQcm9kc1VzZWQAAQAGcmxUeXBlAAAACHJsTGFzdFR4AAIAC3JsVGltZXN0YW1wAAMBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlhbCBpZHg9CQCkAwEFA2lkeAILLCB5b3UgaGF2ZSAJAJEDAgUDaGFzBQNpZHgCCywgYnV0IG5lZWQgCQCkAwEJAJEDAgUEbmVlZAUDaWR4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQDBQxzaG91bGRVc2VNYXQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnN1YnRyYWN0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYFA2hhcwERc3VidHJhY3RFcXVpcG1lbnQCBW9sZEVxBXBVc2VkAwkAAAIFBXBVc2VkAgAJAJUKAwUFb2xkRXEHBwoBB3N1YlVzZWQCA2FjYwZpZHhBbXQEBXBhcnRzCQC1CQIFBmlkeEFtdAIBLAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleCxhbW91bnQEA2lkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAADAwkAZgIAAAUDaWR4BgkAZwIFA2lkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAQDYW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQHZXFQYXJ0cwkAtQkCCAUDYWNjAl8xCQCsAgIJAJEDAgUFcGFydHMAAAIBOgMJAQIhPQIJAJADAQUHZXFQYXJ0cwACCQACAQkArAICCQCsAgICD1lvdSBkb24ndCBoYXZlIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAIJIGVxdWlwcGVkBAN0bXAJAJEDAgUHZXFQYXJ0cwABBAZudW1MZW4DCQEHaXNEaWdpdAEJAK8CAgkAsAICBQN0bXAAAQABAAIAAQQEY3VycgkBDXBhcnNlSW50VmFsdWUBCQCvAgIFA3RtcAUGbnVtTGVuBAR0YWlsCQCwAgIFA3RtcAUGbnVtTGVuBAZuZXdBbXQDCQBnAgUEY3VycgUDYW10CQBlAgUEY3VycgUDYW10CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDVlvdSBlcXVpcHBlZCAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQNhbXQJAJUKAwkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFB2VxUGFydHMAAAkAkQMCBQVwYXJ0cwAAAgE6CQCkAwEFBm5ld0FtdAUEdGFpbAMIBQNhY2MCXzIGAwMJAGcCBQNpZHgABgkAZwIACAUDaWR4BwkAAAIFBm5ld0FtdAAABwMIBQNhY2MCXzMGAwMJAGcCBQNpZHgAAwkAZwIABQUDaWR4BwkAZgIFA2FtdAAABwoAAiRsCQC1CQIFBXBVc2VkAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQVvbGRFcQcHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJED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CQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlAoCBQVwTGlzdAcEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQJaXNCaWdJdGVtAwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcEBmNvbXBhdAkAkQMCBQZyZWNpcGUFCXJJZHhTbG90cwMJAAACBQZjb21wYXQCAAkAAgECF0l0ZW0gY2Fubm90IGJlIGVxdWlwcGVkBAFjCQENcGFyc2VJbnRWYWx1ZQEFBmNvbXBhdAQEY1NlZwkAaQIFAWMAZAMJAQIhPQIFB3NlZ21lbnQFBGNTZWcJAAIBAhRTZWdtZW50IGluY29tcGF0aWJsZQQIY01haW5BdXgJAGkCCQBqAgUBYwBkAAoDCQECIT0CBQdtYWluQXV4BQhjTWFpbkF1eAkAAgECEVNsb3QgaW5jb21wYXRpYmxlBAljTnVtU2xvdHMJAGoCBQFjAAoDAwkBAiE9AgUEc2xvdAAACQBmAgUJY051bVNsb3RzAAEHCQACAQIeQmlnIGl0ZW1zIHNob3VsZCBvY2N1cHkgc2xvdCAwCQBmAgUJY051bVNsb3RzAAEHCQCUCgIJAMsBAgkAywECBQRoZWFkCQCaAwEJAGQCBQRjdXJyAwUKaXNQb3NpdGl2ZQUFY291bnQJAQEtAQUFY291bnQFBHRhaWwFCWlzQmlnSXRlbQELc2xvdHNHcm91cEIGAWcEYnBJbgppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eAVzdGF0cwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBXN0YXRzCQCUCgIFBGJwSW4HAwkBAiE9AgUCczECAAMIBQV0bXBTMAJfMgkAAgECHkJpZyBpdGVtIGFscmVhZHkgb2NjdXBpZXMgc2xvdAgJAQhhZGRQcm9kQgcFAnMxCAUFdG1wUzACXzEFCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAQUFc3RhdHMCXzEIBQV0bXBTMAJfMQUEYnBJbgEGZHJlc3NCBAdzZWdMaXN0BnBCeXRlcwppc1Bvc2l0aXZlBXN0YXRzCgEHc2VnbWVudAIDYWNjA3Nl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AWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BD3ZpcnRDbGFpbUFkZFJlcwUKY3VycmVudFJlcw10ZXJyYWluQ291bnRzCWRlbHRhVGltZQ1sYW5kU2l6ZUluZGV4F2RhaWx5QnlQaWVjZVdpdGhCb251c2VzCgEFYWRkZXICA2FjYwFpBAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4BAx0b3RhbFJlc1R5cGUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycmVudFJlcwUBaQUJcmVzT2ZUeXBlCQCUCgIJAM0IAggFA2FjYwJfMQUMdG90YWxSZXNUeXBlCQBkAggFA2FjYwJfMgUMdG90YWxSZXNUeXBlCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MMdGVycmFpbkNvdW50BAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwUMdGVycmFpbkNvdW50BQ1sYW5kU2l6ZUluZGV4CQCUCgIJAM0IAggFA2FjYwJfMQUJcmVzT2ZUeXBlCQBkAggFA2FjYwJfMgUJcmVzT2ZUeXBlCgACJGwFDXRlcnJhaW5Db3VudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgENZGlzdHJpYnV0ZVJlcwQMY3VycmVudFdoUmVzDmN1cnJlbnRQYWNrUmVzCnJlc1RvQ2xhaW0Ld2hTcGFjZUxlZnQEDnJlc0xpc3RUb0NsYWltCAUKcmVzVG9DbGFpbQJfMQQMcmVzQW1Ub0NsYWltCAUKcmVzVG9DbGFpbQJfMgMJAAACBQxyZXNBbVRvQ2xhaW0AAAkAlAoCCQC5CQIFDGN1cnJlbnRXaFJlcwIBXwkAuQkCBQ5jdXJyZW50UGFja1JlcwIBXwMJAGcCBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCgEIYWRkTGlzdHMCA2FjYwFpCQDNCAIFA2FjYwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIYWRkTGlzdHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJAJQKAgkAuQkCBQFyAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfCgEMYWRkUGFydExpc3RzAgNhY2MBaQQGd2hQYXJ0CQBrAwkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQULd2hTcGFjZUxlZnQFDHJlc0FtVG9DbGFpbQkAlAoCCQDNCAIIBQNhY2MCXzEJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxjdXJyZW50V2hSZXMFAWkFBndoUGFydAkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQZ3aFBhcnQEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxhZGRQYXJ0TGlzdHMCBQIkYQkAkQMC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XzBfMF8wXzBfMDowXzBfMF8wXzBfMDoCAToJAMwIAgkApAMBCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgUBcAUKYnBJZHhMZXZlbAAACQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAXAFCWJwSWR4UHJvZAUDbmlsARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJdm9sUHJlZml4BAVwYXJ0cwkAtQkCBQl2b2xQcmVmaXgCAV8JAGgCCQBoAgUMV0hNVUxUSVBMSUVSCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAABF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQljdXJyZW50V2gEBWdvb2RzCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCgEJc3VtUmVzTWF0AgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtCgEHc3VtUHJvZAIDYWNjBGl0ZW0EA2lkeAgFA2FjYwJfMQQEcGtncwkAaQIJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBQ5QUk9EVUNUUEtHU0laRQABBQ5QUk9EVUNUUEtHU0laRQkAlAoCCQBkAgUDaWR4AAEJAGQCCAUDYWNjAl8yCQBoAgUEcGtncwUFTVVMVDgECHdoUmVzVm9sCgACJGwJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlzdW1SZXNNYXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJ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a2VkBQNvY2MJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8JAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAvAkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hSZXMFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnByAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJ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UwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkBASEBCQEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFkVxdWlwbWVudCBpbmNvbXBhdGlibGUEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDM0MTUzMzQ2OTIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzQxNTMzNDY5MgJfMQQGZHVja0lkCAUNJHQwMzQxNTMzNDY5MgJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAgkBCWZpbmFsVGltZQAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCCiwgZmluYWwgPSAJAKQDAQkBCWZpbmFsVGltZQAEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAggFAWMCXzIFBnBpZWNlcwQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQZhbW91bnQFCGF2YWlsUmVzCQACAQkArAICCQCsAgIJAKwCAgIiTm90IGVub3VnaCByZXNvdXJjZXMsIGF2YWlsYWJsZSA9IAkApAMBBQhhdmFpbFJlcwIOLCByZXF1ZXN0ZWQgPSAJAKQDAQUGYW1vdW50BAxuZXdEZWx0YVRpbWUJAGsDCQBlAgUIYXZhaWxSZXMFBmFtb3VudAUJREFZTUlMTElTCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBAxuZXdUaW1lc3RhbXAJAGUCCQEJZmluYWxUaW1lAAUMbmV3RGVsdGFUaW1lBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBApyZXNUb0NsYWltCQEJdmlydENsYWltBAUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQgFAWMCXzIECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgAABAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EC3doU3BhY2VMZWZ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQMDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAZgIFBmFtb3VudAULd2hTcGFjZUxlZnQHCQACAQkArAICCQCsAgICBU9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0Ahggc3BhY2UgbGVmdCBpbiB3YXJlaG91c2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQMY3VycmVudFdoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzcwNjIzNzkzMwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCWCgQJAQZhZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFCnJlc1RvQ2xhaW0CXzIJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUJY2xhaW1Nb2RlBQ1jbGFpbU1vZGVEdWNrCQCWCgQJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkBBmFkZFJlcwUFDmN1cnJlbnRQYWNrUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQQFZGlzdHIJAQ1kaXN0cmlidXRlUmVzBAUMY3VycmVudFdoUmVzBQ5jdXJyZW50UGFja1JlcwUKcmVzVG9DbGFpbQULd2hTcGFjZUxlZnQEBHdoQW0JAJcDAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQkAzAgCCAUKcmVzVG9DbGFpbQJfMgUDbmlsCQCWCgQIBQVkaXN0cgJfMQgFBWRpc3RyAl8yCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQR3aEFtCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBHdoQW0EBXdoUmVzCAUNJHQwMzcwNjIzNzkzMwJfMQQFYnBSZXMIBQ0kdDAzNzA2MjM3OTMzAl8yBAVsb2Z0TwgFDSR0MDM3MDYyMzc5MzMCXzMEBWxvZnRGCAUNJHQwMzcwNjIzNzkzMwJfNAkAlwoFCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEIBQFjAl8yBQxuZXdUaW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAgFAWMCXzIFBGFkZHIFDG5ld1RpbWVzdGFtcAUDbmlsBQVicEtleQkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIFBWJwUmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsBQV3aEtleQkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgUFd2hSZXMJAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAEIY2xhaW1BbGwEBGFkZHILbGFuZEFzc2V0SWQGcGllY2VzCWNsYWltTW9kZQQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQEFdmFsdWUBCQCfCAEFB3RpbWVLZXkECGF2YWlsUmVzCQBoAgkAawMJAGUCCQEJZmluYWxUaW1lAAUJc2F2ZWRUaW1lCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwUJREFZTUlMTElTBQZwaWVjZXMJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUIYXZhaWxSZXMFCWNsYWltTW9kZQULbGFuZEFzc2V0SWQBDXVwSW5mcmFDb21tb24EDHNob3VsZFVzZU1hdAZjYWxsZXINcGF5bWVudEFtb3VudAtsYW5kQXNzZXRJZAQEYWRkcgkApQgBBQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFC2xhbmRBc3NldElkBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQIaW5mcmFLZXkJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIECGN1ckxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEFCGluZnJhS2V5AAADAwkBASEBBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGcCBQhjdXJMZXZlbAADBwkAAgECJkN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAzBAhtYXhJbmZyYQkAZAIJAGkCCQEEc3FydAQFBnBpZWNlcwAAAAAFBERPV04ABQACBAhuZXdMZXZlbAkAZAIFCGN1ckxldmVsAAEDAwUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBmAgUIbmV3TGV2ZWwFCG1heEluZnJhBwkAAgEJAKwCAgIlQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IAkApAMBBQhtYXhJbmZyYQQEY29zdAkAawMFFUluZnJhVXBncmFkZUNvc3RTVXNkdAkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFAwMJAQEhAQUMc2hvdWxkVXNlTWF0CQECIT0CBQ1wYXltZW50QW1vdW50BQRjb3N0BwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFBGNvc3QEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQHbWF0VXNlZAkAawMFEUluZnJhVXBncmFkZUNvc3RTCQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBQxzaG91bGRVc2VNYXQFBW1MaXN0BQdtYXRVc2VkAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcggFAWMCXzIFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawQGd2hEYXRhCAULY2xhaW1SZXN1bHQCXzUEBm9sZFZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzBApuZXdWb2xEYXRhCQC5CQIJAMwIAgkAkQMCCQC1CQIJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwIBXwAACQDMCAIJAKQDAQUIbmV3TGV2ZWwFA25pbAIBXwQGbmV3Vm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQpuZXdWb2xEYXRhBARsb2Z0CQC1CQIJAJEDAgUGd2hEYXRhBQl3aElkeExPRlQCAV8ECm5ld0xvZnRTdHIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQDMCAIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUGbmV3Vm9sBQZvbGRWb2wJAMwIAgkApAMBBQZuZXdWb2wFA25pbAIBXwkAlQoDCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGluZnJhS2V5BQhuZXdMZXZlbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIIBQFjAl8yBQRhZGRyBQhuZXdMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCCAULY2xhaW1SZXN1bHQCXzMFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAgkAzAgCBQpuZXdWb2xEYXRhCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeFJlcwkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhNYXQJAMwIAgkAkQMCBQZ3aERhdGEFCXdoSWR4UHJvZAkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAgFC2NsYWltUmVzdWx0Al8xBQhuZXdMZXZlbAUHbWF0VXNlZAETdXBkYXRlU3RhdHNJbnRlcm5hbAQGbHZsS2V5BXhwS2V5CXBvaW50c0tleQdkZWx0YVhQBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQZsdmxLZXkAAAUFbmV3WFAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBvaW50c0tleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcG9pbnRzS2V5AAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2R1Y2tBc3NldElkBARhZGRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDAwMFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzBwkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFC1JPQk9fUFJFRklYBwkBE3VwZGF0ZVN0YXRzSW50ZXJuYWwECQEMa2V5VXNlckxldmVsAQUEYWRkcgkBCWtleVVzZXJYUAEFBGFkZHIJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIFB2RlbHRhWFAJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkCQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBQdkZWx0YVhQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQlrZXlVc2VyWFABBQRhZGRyCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBQdkZWx0YVhQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENbWVyZ2VJbnRlcm5hbAYLbmV3TGFuZFNpemUIbmV3TGV2ZWwHZm9ybXVsYQRhZGRyDGxhbmRBc3NldElkcwduZWVkTWF0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh1tZXJnZUludGVybmFsX2NoZWNrVG91cm5hbWVudAoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlAQZwcm9sb2cBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQxyZXN0Q29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBCmtleUJsb2NrZWQABwcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFA25pbAETdW5zdGFrZUxhbmRJbnRlcm5hbAIEYWRkcgtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQIbGFuZEluZm8JALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAtkZXNjcmlwdGlvbgIBXwQIbGFuZFNpemUJAJEDAgUIbGFuZEluZm8FC3JlY0xhbmRTaXplBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQhsYW5kSW5mbwULcmVjVGVycmFpbnMECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBEUBleHRyTmF0aXZlKDEwNTUpAQUHdGltZUtleQQJZGVsdGFUaW1lCQBlAgkBCWZpbmFsVGltZQAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIKLCBmaW5hbCA9IAkApAMBCQEJZmluYWxUaW1lAAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMEDXJlc0FmdGVyQ2xhaW0JAQ92aXJ0Q2xhaW1BZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQPYWNyZXNGcm9tUGllY2VzCQBkAgkAaAIFBnBpZWNlcwUFTVVMVDgJAGkCCQBoAgkAZAIJAGgCBQZwaWVjZXMFCmluZnJhTGV2ZWwFCWFydFBpZWNlcwUFTVVMVDgABQQMYWNyZXNGcm9tUmVzCQBoAgkAawMIBQ1yZXNBZnRlckNsYWltAl8yBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSCgEGc3VtTWF0AgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAV3aE1hdAoAAiRsCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGc3VtTWF0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAxhY3Jlc0Zyb21NYXQJAGgCCQBrAwUFd2hNYXQJAGgCAAIFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BRVVU0RUMkFDUkVTX01VTFRJUExJRVIEBXByb2RzAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8KAQdzdW1Qcm9kAgNhY2MEaXRlbQQBaggFA2FjYwJfMgQLcmVjaXBlQ29lZmYJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUBagIBXwUJcklkeENvZWZmCQCUCgIJAGQCCAUDYWNjAl8xCQBoAgkAaAIJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQULcmVjaXBlQ29lZmYFBU1VTFQ2CQBkAgUBagABBAZ3aFByb2QKAAIkbAUFcHJvZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdW1Qcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyNAkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAQNYWNyZXNGcm9tUHJvZAkAaAIJAGsDCAUGd2hQcm9kAl8xCQBoAgACBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSCQCWCgQFD2FjcmVzRnJvbVBpZWNlcwUMYWNyZXNGcm9tUmVzBQxhY3Jlc0Zyb21NYXQFDWFjcmVzRnJvbVByb2QBE3Vuc3Rha2VEdWNrSW50ZXJuYWwCBGFkZHILZHVja0Fzc2V0SWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1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Z2VyAgNrZXkGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIgc2F2ZUludGVnZXIgaXMgbm90IHB1YmxpYyBtZXRob2QJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQUGYW1vdW50BQNuaWwBaQEKc2V0QmxvY2tlZAEJaXNCbG9ja2VkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQprZXlCbG9ja2VkAAUJaXNCbG9ja2VkBQNuaWwBaQEJc3Rha2VMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQDCQBnAgkAkAMBBQVsYW5kcwUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSCQACAQkArAICCQCsAgICGVlvdXIgYWxyZWFkeSBzdGFrZWQgbWF4ICgJAKQDAQUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSAgcpIGxhbmRzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MECW9sZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkAzQgCBQVsYW5kcwULbGFuZEFzc2V0SWQCAV8JAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQkAZAIFCW9sZFBpZWNlcwUGcGllY2VzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFB2FkZHJlc3MFCmluZnJhTGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFDWNsYWltTW9kZUR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQBZAgFAWMCXzMECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wECAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBQ1jbGFpbU1vZGVEdWNrBAVsYW5kcwkAvQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGxhbmRzS2V5AgACAV8EA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQOZ292UmVsZWFzZVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgULZ292Q29udHJhY3QJARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBBQRhZGRyAAADCQBnAgUOZ292UmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI5WW91ciBnV0wgYXJlIHRha2luZyBwYXJ0IGluIHZvdGluZywgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmdvdlJlbGVhc2VUaW1lBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIAAAUOYXJiaXRyYWdlRGVsYXkDCQBmAgUOYXJiUmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI/WW91ciBzdGFrZWQgbGFuZHMgdG9vayBwYXJ0IGluIGFyYml0cmFnZSwgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmFyYlJlbGVhc2VUaW1lBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAluZXdQaWVjZXMDCQBmAgUGcGllY2VzBQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwUGcGllY2VzBAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQRhZGRyBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQETdW5zdGFrZUxhbmRDYWxsYmFjawILbGFuZEFzc2V0SWQEYWRkcgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyBRBhY3JlczJBZGRyZXNzU3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXVuc3Rha2VSZXN1bHQJARN1bnN0YWtlTGFuZEludGVybmFsAgUEYWRkcgULbGFuZEFzc2V0SWQECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgUDbmlsCQCXCgUIBQ11bnN0YWtlUmVzdWx0Al8xCAUNdW5zdGFrZVJlc3VsdAJfMggFDXVuc3Rha2VSZXN1bHQCXzMIBQ11bnN0YWtlUmVzdWx0Al80BQl3bGdSZXN1bHQBaQETdW5zdGFrZUxhbmRSRUFET05MWQILbGFuZEFzc2V0SWQEYWRkcgQNdW5zdGFrZVJlc3VsdAkBE3Vuc3Rha2VMYW5kSW50ZXJuYWwCBQRhZGRyBQtsYW5kQXNzZXRJZAkAlAoCBQNuaWwFDXVuc3Rha2VSZXN1bHQBaQEcdW5zdGFrZUxhbmRzRmluYWxpemVDYWxsYmFjawEEYWRkcgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyBRBhY3JlczJBZGRyZXNzU3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIFA25pbAAAAWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQGaXNSb2JvAwMFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzBwkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFC1JPQk9fUFJFRklYBwMDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQEBIQEFBmlzUm9ibwcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIEIG9yIAULUk9CT19QUkVGSVgCBiB0b2tlbgMDCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQEBIQEFBmlzUm9ibwcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIEIG9yIAULUk9CT19QUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM4IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDXByb2xvZ0FjdGlvbnMBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpARN1bnN0YWtlRHVja0NhbGxiYWNrAgtkdWNrQXNzZXRJZARhZGRyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIFEGFjcmVzMkFkZHJlc3NTdHIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNdW5zdGFrZVJlc3VsdAkBE3Vuc3Rha2VEdWNrSW50ZXJuYWwCBQRhZGRyBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQkA2QQBBQtkdWNrQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2R1Y2tBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQtkdWNrQXNzZXRJZAUEYWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyBQNuaWwFDXVuc3Rha2VSZXN1bHQBaQETdW5zdGFrZUR1Y2tSRUFET05MWQILZHVja0Fzc2V0SWQEYWRkcgQNdW5zdGFrZVJlc3VsdAkBE3Vuc3Rha2VEdWNrSW50ZXJuYWwCBQRhZGRyBQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwFDXVuc3Rha2VSZXN1bHQBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFDWNsYWltTW9kZUR1Y2sFDmxhbmRBc3NldElkU3RyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al81BQh3aElkeFJlcwFpAQZmbGlnaHQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAVuZXdIUAgFAWYCXzEEC2R1Y2tBc3NldElkCAUBZgJfMgQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAtuZXdMb2NhdGlvbggFAWYCXzQDCQAAAgULbmV3TG9jYXRpb24FC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQGbmV3TG9jCQC1CQIFC25ld0xvY2F0aW9uAgFfBAZpc1RvdXIJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBVAQHaXNEZWxpdgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFEBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNzI1MzA3MjYzNgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA3MjUzMDcyNjM2Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA3MjUzMDcyNjM2Al8yBAdpZ25vcmVkCAUNJHQwNzI1MzA3MjYzNgJfMwQNJHQwNzI2Mzk3NDQ3MQMJAQEhAQkBCW9uTWlzc2lvbgIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DBQZpc1RvdXIJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAQEhAQUHaXNEZWxpdgMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkAZgIFBW5ld0hQAAAEAXMJAPwHBAUEdGhpcwIPcHJvY2Vzc0RlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQFzBQFzCQCUCgIFC2N1ckxvY2F0aW9uBQVuZXdIUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAAJAAIBCQCsAgICFFVua25vd24gY3VyTG9jYXRpb246BQtjdXJMb2NhdGlvbgQJbG9jVG9TYXZlCAUNJHQwNzI2Mzk3NDQ3MQJfMQQIaHBUb1NhdmUIBQ0kdDA3MjYzOTc0NDcxAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQhocFRvU2F2ZQUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAg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bnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2ZpbmlzaEJsb2NrAWkBDHJldmVhbFJhbmRvbQEIbWF4VmFsdWUEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBARhZGRyCQClCAEIBQFpBmNhbGxlcgQJZmluaXNoS2V5CQEJa2V5Q29tbWl0AQUEYWRkcgQLZmluaXNoQmxvY2sJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQlmaW5pc2hLZXkCJFlvdSBoYXZlIHRvIGNvbW1pdEZvclJhbmRvbSgpIGZpcnN0IQMJAGYCBQtmaW5pc2hCbG9jawUGaGVpZ2h0CQACAQkArAICAjRSYW5kb20gbnVtYmVyIGlzIG5vdCByZWFkeSB5ZXQsIHdhaXQgdW50aWwgaGVpZ2h0ID0gCQCkAwEFC2ZpbmlzaEJsb2NrBAdlbnRyb3B5CQEFdmFsdWUBCAkBBXZhbHVlAQkA7QcBBQtmaW5pc2hCbG9jawN2cmYEBHNhbHQJAJsDAQkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQRhZGRyAgAEBHJhbmQJAQ9nZXRSYW5kb21OdW1iZXIDBQhtYXhWYWx1ZQUEc2FsdAUHZW50cm9weQkAlAoCCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJZmluaXNoS2V5BQNuaWwFDXByb2xvZ0FjdGlvbnMFBHJhbmQBaQEIYnV5U0xhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEKZXhwZWRpdGlvbgIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCAUBZgJfMgQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBgUFbUxpc3QFDEVYUE1BVEVSSUFMUwIBXwQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDgyMzkxODI0OTcJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwODIzOTE4MjQ5NwJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwODIzOTE4MjQ5NwJfMgQHaWdub3JlZAgFDSR0MDgyMzkxODI0OTcCXzMEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEAmlkCAgFAWUCXzICXzEEBnJlc3VsdAMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAkAlQoDCQDOCAIIBQFlAl8xAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwJAM0IAgkAzQgCCQDNCAIJAM0IAgUDbmlsCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlQoDCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zBQthY3Jlc1Jlc3VsdAFpARBidXlTTGFuZEZvckFjcmVzAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQxTX0NPU1RfQUNSRVMJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQxTX0NPU1RfQUNSRVMEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxhY3Jlc0Fzc2V0SWQFA2FtdAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUNcHJvbG9nQWN0aW9ucwkAlAoCCAgFBnJlc3VsdAJfMgJfMQULYWNyZXNSZXN1bHQBaQEMdXBncmFkZUluZnJhAQtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQGcmVzdWx0BAckbWF0Y2gwBQdhcnROYW1lAwkAAAICB1BSRVNBTEUFByRtYXRjaDAJARJhY3RpdmF0ZVByZXNhbGVBcnQCBQRhZGRyBQ5sYW5kQXNzZXRJZE9wdAMJAAACAgdPTkJPQVJEBQckbWF0Y2gwCQESYWN0aXZhdGVPbmJvYXJkQXJ0AQUEYWRkcgkAAgECEFVua25vd24gYXJ0aWZhY3QJAM4IAgUGcmVzdWx0BQ1wcm9sb2dBY3Rpb25zAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUHeHBNZXJnZQJfMQgFBnJlc3VsdAJfMgFpAQ1jYXJnb0V4Y2hhbmdlAgxjYXJnb0xpc3RTdHILbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECmNhcmdvUGFydHMJALwJAgUMY2FyZ29MaXN0U3RyAgE6BARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIJAJEDAgUDbG9jBQhsb2NJZHhJZAULbGFuZEFzc2V0SWQJAAIBCQCsAgICG0R1Y2sgc2hvdWxkIGJlIG9uIHRoZSBsYW5kIAULbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAZyZXN1bHQJAQltb3ZlU3R1ZmYDBQpjYXJnb1BhcnRzBQljdXJyZW50V2gFC2N1cnJlbnRQYWNrBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EBWxvZnRPCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUGcmVzdWx0Al83BAVsb2Z0RgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUGcmVzdWx0Al83CQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQZyZXN1bHQCXzQJAMwIAggFBnJlc3VsdAJfNQkAzAgCCAUGcmVzdWx0Al82BQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAggFBnJlc3VsdAJfMQkAzAgCCAUGcmVzdWx0Al8yCQDMCAIIBQZyZXN1bHQCXzMJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwMJAGYCAAAFBWxvZnRGCQACAQIwT3BlcmF0aW9uIGxlYWRzIHRvIG5lZ2F0aXZlIGZyZWUgd2FyZWhvdXNlIHNwYWNlBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBDXNldEN1c3RvbU5hbWUDB2Fzc2V0SWQKY3VzdG9tTmFtZQR0eXBlBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDFJFTkFNSU5HQ09TVAkAAgEJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQCkAwEFDFJFTkFNSU5HQ09TVAMJAQhjb250YWlucwIFCmN1c3RvbU5hbWUCAl9fCQACAQkArAICAh5OYW1lIHNob3VsZCBub3QgY29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDOCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDXByb2xvZ0FjdGlvbnMAAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQlvbGRQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQlvbGRQbGF5ZXIECm5ld2JpZUFkZHIJAKYIAQUJbmV3UGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQUKbmV3YmllQWRkcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW5ld1BsYXllcgQJb2xkTGFzdFR4CQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEFCW9sZExhc3RUeAkAAgECIm9sZFBsYXllciBkaWRuJ3QgZG8gYW55IHR4IGluIGdhbWUDCQBnAgAACAkA7wcBCQEFdmFsdWUBBQpuZXdiaWVBZGRyCWF2YWlsYWJsZQkAAgECFm5ld1BsYXllciBoYXMgbm8gV0FWRVMEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk4MzA5OTg2OTkDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk4MzA5OTg2OTkCXzEECndsZ0FjdGlvbnMIBQ0kdDA5ODMwOTk4Njk5Al8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEUYnJlYWtBdHRlbXB0Q2FsbGJhY2sAAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUDbmlsAhRicmVha0F0dGVtcHRDYWxsYmFjawFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAcBaQEPcHJvY2Vzc0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFCWZ1bmRUb3RhbAkAAgEJAKwCAgIgRGVsaXZlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZD0JAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQRhZGRyBAdsYXN0RGF5CQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQUEYWRkcgAABAV0b2RheQkAaQIFA25vdwUJREFZTUlMTElTBAVjb3VudAMJAAACBQdsYXN0RGF5BQV0b2RheQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhjb3VudEtleQAAAAAEBWFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFBGFkZHIAAAQRYWxsb3dlZERlbGl2ZXJpZXMJAGQCBRdBTExPV0VEX0ZSRUVfREVMSVZFUklFUwkAaQIFBWFjcmVzBRpBQ1JFU19GT1JfREVMSVZFUllfQVRURU1QVAMJAGcCBQVjb3VudAURYWxsb3dlZERlbGl2ZXJpZXMJAAIBCQCsAgIJAKwCAgIRWW91IGFscmVhZHkgdXNlZCAJAKQDAQURYWxsb3dlZERlbGl2ZXJpZXMCHCBkZWxpdmVyeSBhdHRlbXB0cyBmb3IgdG9kYXkEDmdsb2JhbENvdW50S2V5CQEUa2V5RHVja0RlbGl2ZXJ5Q291bnQBBQtkdWNrQXNzZXRJZAQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGNvdW50S2V5CQBkAgUFY291bnQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQRhZGRyBQV0b2RheQkAzAgCCQEMSW50ZWdlckVudHJ5AgUOZ2xvYmFsQ291bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFDmdsb2JhbENvdW50S2V5AAAAAQUDbmlsBQZyZXdhcmQBaQEHcm9iTGFuZAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUGd2xnQW10BRJNSU5fV0xHT0xEX1JPQkJFUlkJAAIBCQCsAgIJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFEk1JTl9XTEdPTERfUk9CQkVSWQAIAgcgV0xHT0xEBARhZGRyCQClCAEIBQFpBmNhbGxlcgMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAZyb2JMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFBnJvYkxvZwUIcmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAhwcm9kVXNlZAkAkQMCBQZyb2JMb2cFC3JsUHJvZHNVc2VkBAhsYXN0UGFydAkAtQkCCQCRAwIFBXBhcnRzAAECAXwEB3JvYlR5cGUJAJEDAgUIbGFzdFBhcnQFBnJsVHlwZQMJAQIhPQIFB3JvYlR5cGUCAUIJAAIBAh5Pbmx5IGJhbmsgcm9iYmVyeSBpcyBzdXBwb3J0ZWQEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhsYXN0UGFydAULcmxUaW1lc3RhbXADAwkAZgIFBHRpbWUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMGCQBmAgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwUEdGltZQkAAgEJAKwCAgkArAICCQCsAgICHHNpZ25hdHVyZSBvdXRkYXRlZDogbG9nVGltZT0JAKQDAQUEdGltZQIJLCBiY1RpbWU9CQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAl0eEZyb21Nc2cJAJEDAgUIbGFzdFBhcnQFCHJsTGFzdFR4BAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUEYWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA8kdDAxMTU4NzcxMTU5ODgJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQUIcHJvZFVzZWQEBW5ld0VxCAUPJHQwMTE1ODc3MTE1OTg4Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ8kdDAxMTU4NzcxMTU5ODgCXzIECGlzQnBVc2VkCAUPJHQwMTE1ODc3MTE1OTg4Al8zBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGNvdW50S2V5CQETa2V5VXNlclJvYmJlcnlDb3VudAEFBGFkZHIEB2xhc3REYXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWtleVVzZXJMYXN0Um9iYmVyeURheQEFBGFkZHIAAAQFdG9kYXkJAGkCBQNub3cFCURBWU1JTExJUwQFY291bnQDCQAAAgUHbGFzdERheQUFdG9kYXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIY291bnRLZXkAAAAABAVhY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1hY3Jlc0NvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEEGFsbG93ZWRSb2JiZXJpZXMJAGQCBRZBTExPV0VEX0ZSRUVfUk9CQkVSSUVTCQBpAgUFYWNyZXMFGUFDUkVTX0ZPUl9ST0JCRVJZX0FUVEVNUFQDCQBnAgUFY291bnQFEGFsbG93ZWRSb2JiZXJpZXMJAAIBCQCsAgIJAKwCAgIRWW91IGFscmVhZHkgdXNlZCAJAKQDAQUQYWxsb3dlZFJvYmJlcmllcwIbIHJvYmJlcnkgYXR0ZW1wdHMgZm9yIHRvZGF5BA5nbG9iYWxDb3VudEtleQkBE2tleUR1Y2tSb2JiZXJ5Q291bnQBBQtkdWNrQXNzZXRJZAQEbG9vdAMJAGYCBQVuZXdIUAAABAlmdW5kVG90YWwJAPAHAgUEdGhpcwUKd2xnQXNzZXRJZAQFcHJpemUDBQhpc0JwVXNlZAkAaAIAAgUSTUlOX1dMR09MRF9ST0JCRVJZCQBoAgAFBRJNSU5fV0xHT0xEX1JPQkJFUlkDCQBmAgUFcHJpemUFCWZ1bmRUb3RhbAkAAgEJAKwCAgkArAICCQCsAgICIlJvYmJlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZHMgPSAJAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAgCFCBXTEdPTEQsIHJlcXVpcmVkID0gCQEKZml4ZWRQb2ludAIFBXByaXplAAgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQVwcml6ZQUKd2xnQXNzZXRJZAUDbmlsBQNuaWwJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzggCCQDOCAIJAM4IAgUNcHJvbG9nQWN0aW9ucwUEbG9vdAMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCBQVuZXdIUAAABQx4cFN1Y2Nlc3NSb2IFCXhwRmFpbFJvYgJfMQkBDEludGVnZXJFbnRyeQIJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAUDbm93CQEMSW50ZWdlckVudHJ5AgUIY291bnRLZXkJAGQCBQVjb3VudAABCQEMSW50ZWdlckVudHJ5AgkBFWtleVVzZXJMYXN0Um9iYmVyeURheQEFBGFkZHIFBXRvZGF5CQEMSW50ZWdlckVudHJ5AgUOZ2xvYmFsQ291bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFDmdsb2JhbENvdW50S2V5AAAAAQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkAlgMBCQDMCAIFBW5ld0hQCQDMCAIAAAUDbmlsAAABaQELYnV5Um9ib0R1Y2sAAwkBASEBBRNLU19BTExPV19ST0JPX0RVQ0tTCQACAQIVRmVhdHVyZSBpcyB0dXJuZWQgb2ZmBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDlJPQk9fRFVDS19VU0RUCQACAQkArAICCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkBCmZpeGVkUG9pbnQCBQ5ST0JPX0RVQ0tfVVNEVAAGAgUgVVNEVAQHbmV4dE51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPa2V5TmV4dFJvYm9EdWNrAAAABAVieXRlegkAmgMBBQduZXh0TnVtBARuYW1lCQCsAgIJAKwCAgULUk9CT19QUkVGSVgCAS0JALICAgkA3AQBBQVieXRlegAIBAVjb2xvcgkAsgICCQDcBAEJANQWAQUFYnl0ZXoABgQFaXNzdWUJAMIIBQUEbmFtZQkArAICAjdSb2JvIER1Y2sgTkZUIGZvciBXYXZlc0xhbmRzIGdhbWUsIGJhY2tncm91bmQgY29sb3IgPSAjBQVjb2xvcgABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlCQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJAQ9rZXlOZXh0Um9ib0R1Y2sACQBkAgUHbmV4dE51bQABBQVpc3N1ZQkBDlNjcmlwdFRyYW5zZmVyAwgFAWkMb3JpZ2luQ2FsbGVyAAEFB2Fzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCQCUCgIJANgEAQUHYXNzZXRJZAUFY29sb3IArUgx8A==", "height": 3281205, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7YtfLVRpbiGN3Dc1uuTqV9RS47mUbvj6fWrGgoCDQrSV Next: 8B2fhS4Zq69gjGusVTnD4w3eLioHdYYZYHMc6q1rNf34 Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = false
77
88 let c = false
99
1010 let d = 86400000
1111
1212 let e = take(drop(this.bytes, 1), 1)
1313
1414 let f = {
1515 let g = e
1616 if ((base58'2W' == g))
1717 then if (a)
1818 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
1919 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
2020 else if ((base58'2T' == g))
2121 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
2222 else throw("Unknown chain")
2323 }
2424
2525 let h = {
2626 let g = e
2727 if ((base58'2W' == g))
2828 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
2929 else if ((base58'2T' == g))
3030 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
3131 else throw("Unknown chain")
3232 }
3333
3434 let i = {
3535 let g = e
3636 if ((base58'2W' == g))
3737 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
3838 else if ((base58'2T' == g))
3939 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
4040 else throw("Unknown chain")
4141 }
4242
4343 let j = {
4444 let g = e
4545 if ((base58'2W' == g))
4646 then "3P4UH3T9nXpMNpUmSmQjPmEz3G85t3zn6eA"
4747 else if ((base58'2T' == g))
4848 then "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh"
4949 else throw("Unknown chain")
5050 }
5151
5252 let k = {
5353 let g = e
5454 if ((base58'2W' == g))
5555 then 10000000000
5656 else if ((base58'2T' == g))
5757 then 100000000
5858 else throw("Unknown chain")
5959 }
6060
6161 let l = {
6262 let g = e
6363 if ((base58'2W' == g))
6464 then d
6565 else if ((base58'2T' == g))
6666 then 60000
6767 else throw("Unknown chain")
6868 }
6969
7070 let m = "__"
7171
7272 let n = 1000000
7373
7474 let o = 100000000
7575
7676 let p = 25
7777
7878 let q = 100
7979
8080 let r = 225
8181
8282 let s = 400
8383
8484 let t = 625
8585
8686 let u = [0, 1, 2, 3, 4, 5]
8787
8888 func v (w,x) = valueOrErrorMessage(getString(w, x), makeString(["mandatory ", toString(w), ".", x, " is not defined"], ""))
8989
9090
9191 let y = 1
9292
9393 let z = 2
9494
9595 let A = 3
9696
9797 let B = 4
9898
9999 let C = 7
100100
101101 let D = 8
102102
103103 func E () = "%s__restConfig"
104104
105105
106106 func F () = "%s__restAddr"
107107
108108
109109 func G (H) = split_4C(v(H, E()), m)
110110
111111
112112 func I (J,K) = valueOrErrorMessage(addressFromString(J[K]), ("Rest cfg doesn't contain address at index " + toString(K)))
113113
114114
115115 let L = addressFromStringValue(valueOrElse(getString(this, F()), i))
116116
117117 let J = G(L)
118118
119119 let M = I(J, y)
120120
121121 let N = I(J, z)
122122
123123 let O = I(J, A)
124124
125125 let P = I(J, B)
126126
127127 let Q = I(J, C)
128128
129129 let R = I(J, D)
130130
131131 let S = 0
132132
133133 let T = 1
134134
135135 let U = 2
136136
137137 let V = 3
138138
139139 let W = "wlg_assetId"
140140
141141 let X = valueOrErrorMessage(getBinary(P, W), "WLGOLD is not issued yet")
142142
143143 let Y = "acresAssetId"
144144
145145 let Z = valueOrErrorMessage(getBinary(R, Y), "ACRES is not issued yet")
146146
147147 let aa = 2
148148
149149 func ab (w) = ("finishBlockFor_" + w)
150150
151151
152152 func ac () = "resTypesProportions"
153153
154154
155155 func ad (ae) = ("resTypesByContinent_" + ae)
156156
157157
158158 func af (ag) = ("stakedLandsByOwner_" + ag)
159159
160160
161161 func ah (ag) = ("stakedPiecesByOwner_" + ag)
162162
163163
164164 func ai (aj) = {
165165 let g = aj
166166 if ($isInstanceOf(g, "String"))
167167 then {
168168 let ak = g
169169 ak
170170 }
171171 else throw("fail to cast into String")
172172 }
173173
174174
175175 func al (aj) = {
176176 let g = aj
177177 if ($isInstanceOf(g, "Int"))
178178 then {
179179 let am = g
180180 am
181181 }
182182 else throw("fail to cast into Int")
183183 }
184184
185185
186186 func an (aj) = {
187187 let g = aj
188188 if ($isInstanceOf(g, "List[Any]"))
189189 then {
190190 let ao = g
191191 ao
192192 }
193193 else throw("fail to cast into List[Any]")
194194 }
195195
196196
197197 func ap (aj) = {
198198 let g = aj
199199 if ($isInstanceOf(g, "Boolean"))
200200 then {
201201 let ak = g
202202 ak
203203 }
204204 else throw("fail to cast into Boolean")
205205 }
206206
207207
208208 func aq (ar) = {
209209 let g = ar
210210 if (("S" == g))
211211 then p
212212 else if (("M" == g))
213213 then q
214214 else if (("L" == g))
215215 then r
216216 else if (("XL" == g))
217217 then s
218218 else if (("XXL" == g))
219219 then t
220220 else throw("Unknown land size")
221221 }
222222
223223
224224 func as (ak) = isDefined(parseInt(ak))
225225
226226
227227 func at () = "contractsBlocked"
228228
229229
230230 func au (av) = ("lastTxIdByUser_" + av)
231231
232232
233233 func aw (ax,ay) = {
234234 let az = pow(10, 0, ay, 0, 0, DOWN)
235235 let aA = toString((ax % az))
236236 let aB = drop(toString(az), (1 + size(aA)))
237237 (((toString((ax / az)) + ".") + aB) + aA)
238238 }
239239
240240
241241 func aC (aD,aE,aF) = if ((0 >= aD))
242242 then throw("maxValue should be > 0")
243243 else {
244244 let aG = sha256((aE + aF))
245245 (toInt(aG) % aD)
246246 }
247247
248248
249249 func aH () = min([lastBlock.timestamp, 1727740799000])
250250
251251
252252 let aI = "LAND"
253253
254254 let aJ = "DUCK"
255255
256256 let aK = "ROBO"
257257
258258 let aL = "PRESALE"
259259
260260 let aM = 6
261261
262262 let aN = 25
263263
264264 let aO = 3456000
265265
266266 let aP = 10000000000
267267
268268 let aQ = "Africa_F_Africa"
269269
270270 let aR = 39637
271271
272272 let aS = 10
273273
274274 let aT = 50000
275275
276276 let aU = 10
277277
278278 let aV = 100000000
279279
280280 let aW = 0
281281
282282 let aX = 200000000
283283
284284 let aY = 0
285285
286286 let aZ = 200000000
287287
288288 let ba = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"]
289289
290290 let bb = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
291291
292292 let bc = 10000000
293293
294294 let bd = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"]
295295
296296 let be = 6
297297
298298 let bf = 8
299299
300300 let bg = 9
301301
302302 let bh = 10
303303
304304 let bi = 10
305305
306306 let bj = 0
307307
308308 let bk = 1
309309
310310 let bl = 2
311311
312312 let bm = 3
313313
314314 let bn = 4
315315
316316 let bo = 0
317317
318318 let bp = 1
319319
320320 let bq = 2
321321
322322 let br = 3
323323
324324 let bs = 0
325325
326326 let bt = 1
327327
328328 let bu = 2
329329
330330 let bv = 3
331331
332332 let bw = 0
333333
334334 let bx = 1
335335
336336 let by = 2
337337
338338 func bz (bA) = ("no_" + bA)
339339
340340
341341 func bB (bA) = ("lcna_" + bA)
342342
343343
344344 func bC (bA) = ("st_" + bA)
345345
346346
347347 func bD (bE,bA) = makeString(["las", bE, bA], "_")
348348
349349
350350 func bF (bG,bA,ag) = ((((("sttao_" + bG) + "_") + bA) + "_") + ag)
351351
352352
353353 func bH (bI) = ("wh_" + bI)
354354
355355
356356 func bJ (bA) = ("infraLevel_" + bA)
357357
358358
359359 func bK (bA) = ("duckCustomNameByAssetId_" + bA)
360360
361361
362362 func bL (av) = ("accountCustomNameByAddr_" + av)
363363
364364
365365 func bM (av) = ("accRefBy_" + av)
366366
367367
368368 func bN (bO) = ("onboardArtActivatedOnDuck_" + bO)
369369
370370
371371 func bP (av) = ("onboardArtActivatedDuckBy_" + av)
372372
373373
374374 func bQ (av) = ("accReferrals_" + av)
375375
376376
377377 func bR (bA) = ("duckOwner_" + bA)
378378
379379
380380 func bS (ag) = ("stakedDuckByOwner_" + ag)
381381
382382
383383 func bT (bO) = ("backPack_" + bO)
384384
385385
386386 func bU (bO) = ("duckLocation_" + bO)
387387
388388
389389 func bV (bW) = ("%s%s__userGwlReleaseTime__" + bW)
390390
391391
392392 func bX () = "emergencyWarehouseProducts"
393393
394394
395395 let bY = "deliveryFund"
396396
397397 let bZ = "%s__lastTourId"
398398
399399 func ca (cb) = ("%s%d__tourStaticData__" + toString(cb))
400400
401401
402402 func cc (cb) = ("%s%d__tourDynamicData__" + toString(cb))
403403
404404
405405 func cd (cb,bO) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(cb), bO], "__")
406406
407407
408408 let ce = 0
409409
410410 let cf = 1
411411
412412 let cg = 6
413413
414414 let ch = 1
415415
416416 func ci (cj,cb) = {
417417 let ck = split(valueOrErrorMessage(getString(cj, ca(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__")
418418 let cl = split_4C(valueOrErrorMessage(getString(cj, cc(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__")
419419 [ck, cl]
420420 }
421421
422422
423423 func cm (cj,cn) = {
424424 let co = valueOrElse(getInteger(cj, bZ), 0)
425425 let cp = split(cn, "_")
426426 let cq = lastBlock.timestamp
427427 let cr = ci(cj, co)
428428 let ck = cr[ce]
429429 let cl = cr[cf]
430430 if (if (if ((cp[bx] == "T"))
431431 then (parseIntValue(cp[bw]) == co)
432432 else false)
433433 then (cl[ch] == "INPROGRESS")
434434 else false)
435435 then (parseIntValue(ck[cg]) > cq)
436436 else false
437437 }
438438
439439
440440 func cs (cj,cn) = {
441441 let co = valueOrElse(getInteger(cj, bZ), 0)
442442 let cp = split(cn, "_")
443443 let cq = lastBlock.timestamp
444444 let cr = ci(cj, co)
445445 let ck = cr[ce]
446446 let cl = cr[cf]
447447 let ct = cp[bx]
448448 if (if (if ((cp[bx] == "T"))
449449 then (parseIntValue(cp[bw]) == co)
450450 else false)
451451 then (cl[ch] == "INPROGRESS")
452452 else false)
453453 then (parseIntValue(ck[cg]) > cq)
454454 else false
455455 }
456456
457457
458458 func cu (cv) = (parseIntValue(cv[be]) * bc)
459459
460460
461461 func cw (cx,cy,cz) = throw(((((("Cheat attempt: oldLoc=" + cx) + ", newLoc=") + cy) + ", case=") + toString(cz)))
462462
463463
464464 let cA = 100000000
465465
466466 let cB = 3200
467467
468468 let cC = 4000
469469
470470 let cD = 3
471471
472472 let cE = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
473473
474474 let cF = 0
475475
476476 let cG = 1
477477
478478 let cH = 2
479479
480480 let cI = 3
481481
482482 let cJ = 4
483483
484484 let cK = 0
485485
486486 let cL = 6
487487
488488 let cM = 2
489489
490490 let cN = 2
491491
492492 let cO = 30
493493
494494 func cP (bO) = ("duckHealth_" + bO)
495495
496496
497497 func cQ (bO) = ("duckChars_" + bO)
498498
499499
500500 func cR (bO) = ("duckXP_" + bO)
501501
502502
503503 func cS (bO) = ("duckLevel_" + bO)
504504
505505
506506 func cT (bO) = ("duckFreePoints_" + bO)
507507
508508
509509 func cU (bO) = ("duckEquipment_" + bO)
510510
511511
512512 func cV (av) = ("userXP_" + av)
513513
514514
515515 func cW (av) = ("userLevel_" + av)
516516
517517
518518 func cX (av) = ("userFreePoints_" + av)
519519
520520
521521 func cY (bO) = ("savedHealth_" + bO)
522522
523523
524524 func cZ (bO) = ("savedLocation_" + bO)
525525
526526
527527 func da (bO) = ("duckBuffs_" + bO)
528528
529529
530530 func db (bO) = ("lastRobberyTime_" + bO)
531531
532532
533533 func dc (bO) = ("totalRobberyCountByDuck_" + bO)
534534
535535
536536 func dd (av) = ("userRobberyCount_" + av)
537537
538538
539539 func de (av) = ("userLastRobberyDay_" + av)
540540
541541
542542 func df (bO) = ("totalDeliveryCountByDuck_" + bO)
543543
544544
545545 func dg (av) = ("userDeliveryCount_" + av)
546546
547547
548548 func dh (av) = ("userLastDeliveryDay_" + av)
549549
550550
551551 let di = 10000
552552
553553 let dj = 10000
554554
555555 let dk = 2000
556556
557557 let dl = 10000
558558
559559 let dm = 2000
560560
561561 let dn = 100000
562562
563563 let do = 1000000
564564
565565 let dp = 5000000
566566
567567 let dq = 10000
568568
569569 let dr = 1000000
570570
571571 let ds = 1000000
572572
573573 let dt = 10000
574574
575575 func du (dv) = fraction(cB, pow(dv, 4, cC, 4, 4, DOWN), cA)
576576
577577
578578 func dw (dx) = (100 + dx)
579579
580580
581581 func dy (dz,dA) = {
582582 let dB = du(dA)
583583 [dB, (cD * (dB - dz))]
584584 }
585585
586586
587587 func dC (M,bO,dD,dE) = {
588588 let dF = split(valueOrElse(getString(M, cQ(bO)), "0_0_0_0_0"), "_")
589589 let dG = valueOrElse(getInteger(M, cS(bO)), 0)
590590 let dH = valueOrElse(getInteger(M, cP(bO)), dw(dG))
591591 let dI = split(valueOrElse(getString(M, da(bO)), "0_0_0_0_0"), "_")
592592 ([parseIntValue(dF[cF]), parseIntValue(dF[cG]), parseIntValue(dF[cH]), parseIntValue(dF[cI]), parseIntValue(dF[cJ]), dG, dH] ++ (if (dE)
593593 then [dD, dD, dD, dD, dD]
594594 else [parseIntValue(dI[cF]), parseIntValue(dI[cG]), parseIntValue(dI[cH]), parseIntValue(dI[cI]), parseIntValue(dI[cJ])]))
595595 }
596596
597597
598598 let dJ = 86400000
599599
600600 func dK (av) = ("lastArbTimeUser_" + av)
601601
602602
603603 func dL (av) = ("acresStakedAmountByUser_" + av)
604604
605605
606606 let dM = {
607607 let g = e
608608 if ((base58'2W' == g))
609609 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
610610 else if ((base58'2T' == g))
611611 then this
612612 else throw("Unknown chain")
613613 }
614614
615615 let dN = {
616616 let g = e
617617 if ((base58'2W' == g))
618618 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
619619 else if ((base58'2T' == g))
620620 then this
621621 else throw("Unknown chain")
622622 }
623623
624624 let dO = 300000
625625
626626 let dP = 5000000
627627
628628 let dQ = 50
629629
630630 let dR = 10000000
631631
632632 let dS = {
633633 let g = e
634634 if ((base58'2W' == g))
635635 then 252289527462
636636 else if ((base58'2T' == g))
637637 then 2522895274
638638 else throw("Unknown chain")
639639 }
640640
641641 let dT = {
642642 let g = e
643643 if ((base58'2W' == g))
644644 then 250000000
645645 else if ((base58'2T' == g))
646646 then 250000000
647647 else throw("Unknown chain")
648648 }
649649
650650 let dU = 100000
651651
652652 let dV = 2500000000
653653
654654 let dW = toBigInt(5)
655655
656656 let dX = toBigInt(20)
657657
658658 let dY = toBigInt((20 * 20))
659659
660660 let dZ = toBigInt(((20 * 20) * 20))
661661
662662 let ea = toBigInt((((20 * 20) * 20) * 20))
663663
664664 let eb = toBigInt(((((20 * 20) * 20) * 20) * 20))
665665
666666 let ec = 500
667667
668668 func ed () = "nextLandNum"
669669
670670
671671 func ee (ef) = ("lcn_" + ef)
672672
673673
674674 func eg (eh) = ("la_" + eh)
675675
676676
677677 func ei (bA,ag) = ((("ilao_" + bA) + "_") + ag)
678678
679679
680680 func ej (eh) = ("lo_" + eh)
681681
682682
683683 func ek (ef) = ("duckByCustomName_" + ef)
684684
685685
686686 func el (ef) = ("accountByCustomName_" + ef)
687687
688688
689689 func em () = "oldiesList"
690690
691691
692692 func en () = "nextRoboDuck"
693693
694694
695695 let eo = 0
696696
697697 let ep = 1
698698
699699 let eq = 2
700700
701701 let er = 0
702702
703703 let es = 5
704704
705705 let et = 6
706706
707707 let eu = 7
708708
709709 let ev = 0
710710
711711 let ew = 1
712712
713713 let ex = 0
714714
715715 let ey = 2
716716
717717 let ez = 3
718718
719719 func eA (eh,ar) = ((aI + eh) + ar)
720720
721721
722722 func eB (eC,eD) = {
723723 let eE = if ((eC >= 0))
724724 then (((eC + eD) - 1) / eD)
725725 else -((((-(eC) + eD) - 1) / eD))
726726 (eE * o)
727727 }
728728
729729
730730 func eF (eG,eH) = {
731731 let eI = (((((eH[0] + eH[1]) + eH[2]) + eH[3]) + eH[4]) + eH[5])
732732 if ((0 >= eI))
733733 then throw("Zero weights sum")
734734 else {
735735 let eJ = fraction(eG, n, eI)
736736 func eK (eL,eM) = (eL :+ fraction(eM, eJ, n))
737737
738738 let eN = eH
739739 let eO = size(eN)
740740 let eP = nil
741741 func eQ (eR,eS) = if ((eS >= eO))
742742 then eR
743743 else eK(eR, eN[eS])
744744
745745 func eT (eR,eS) = if ((eS >= eO))
746746 then eR
747747 else throw("List size exceeds 6")
748748
749749 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
750750 }
751751 }
752752
753753
754754 func eU (eG) = {
755755 let eV = split(value(getString(ac())), "_")
756756 if ((size(eV) != aM))
757757 then throw("Wrong proportions data")
758758 else {
759759 let eW = [parseIntValue(eV[0]), parseIntValue(eV[1]), parseIntValue(eV[2]), parseIntValue(eV[3]), parseIntValue(eV[4]), parseIntValue(eV[5])]
760760 eF(eG, eW)
761761 }
762762 }
763763
764764
765765 func eX (eY,eZ,fa) = {
766766 let fb = eU(fa)
767767 func fc (eL,K) = {
768768 let fd = (parseIntValue(eZ[K]) - fb[K])
769769 if ((0 > fd))
770770 then throw(((((("Not enough material idx=" + toString(K)) + ", you have ") + eZ[K]) + ", but need ") + toString(fb[K])))
771771 else (eL :+ toString(fd))
772772 }
773773
774774 if (eY)
775775 then {
776776 let eN = u
777777 let eO = size(eN)
778778 let eP = nil
779779 func eQ (eR,eS) = if ((eS >= eO))
780780 then eR
781781 else fc(eR, eN[eS])
782782
783783 func eT (eR,eS) = if ((eS >= eO))
784784 then eR
785785 else throw("List size exceeds 6")
786786
787787 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
788788 }
789789 else eZ
790790 }
791791
792792
793793 func fe (ff,fg) = if ((fg == ""))
794794 then $Tuple3(ff, false, false)
795795 else {
796796 func fh (eL,fi) = {
797797 let fj = split(fi, ",")
798798 if ((size(fj) != 2))
799799 then throw("Incorrect format, should be index,amount")
800800 else {
801801 let K = parseIntValue(fj[0])
802802 if (if ((0 > K))
803803 then true
804804 else (K >= size(bd)))
805805 then throw("Unknown product idx")
806806 else {
807807 let fk = parseIntValue(fj[1])
808808 let fl = split(eL._1, (fj[0] + ":"))
809809 if ((size(fl) != 2))
810810 then throw((("You don't have " + ba[K]) + " equipped"))
811811 else {
812812 let fm = fl[1]
813813 let fn = if (as(take(drop(fm, 1), 1)))
814814 then 2
815815 else 1
816816 let fo = parseIntValue(take(fm, fn))
817817 let fp = drop(fm, fn)
818818 let fq = if ((fo >= fk))
819819 then (fo - fk)
820820 else throw(((((("You equipped " + toString(fo)) + " of ") + ba[K]) + ", but tried to use ") + toString(fk)))
821821 $Tuple3(((((fl[0] + fj[0]) + ":") + toString(fq)) + fp), if (eL._2)
822822 then true
823823 else if (if ((K >= 6))
824824 then (8 >= K)
825825 else false)
826826 then (fq == 0)
827827 else false, if (eL._3)
828828 then true
829829 else if (if ((K >= 3))
830830 then (5 >= K)
831831 else false)
832832 then (fk > 0)
833833 else false)
834834 }
835835 }
836836 }
837837 }
838838
839839 let eN = split(fg, "_")
840840 let eO = size(eN)
841841 let eP = $Tuple3(ff, false, false)
842842 func eQ (eR,eS) = if ((eS >= eO))
843843 then eR
844844 else fh(eR, eN[eS])
845845
846846 func eT (eR,eS) = if ((eS >= eO))
847847 then eR
848848 else throw("List size exceeds 10")
849849
850850 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
851851 }
852852
853853
854854 func fr (fs) = {
855855 let ft = if ((fs == ""))
856856 then nil
857857 else split_4C(fs, "_")
858858 func fu (eL,cv) = {
859859 let fv = (size(eL) / 8)
860860 let fo = if ((size(ft) > fv))
861861 then parseIntValue(ft[fv])
862862 else 0
863863 (eL + toBytes(fo))
864864 }
865865
866866 let eN = bd
867867 let eO = size(eN)
868868 let eP = base58''
869869 func eQ (eR,eS) = if ((eS >= eO))
870870 then eR
871871 else fu(eR, eN[eS])
872872
873873 func eT (eR,eS) = if ((eS >= eO))
874874 then eR
875875 else throw("List size exceeds 50")
876876
877877 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
878878 }
879879
880880
881881 func fw (fx) = {
882882 func fy (eL,cv) = {
883883 let fv = size(eL)
884884 let fz = take(drop(fx, (8 * fv)), 8)
885885 (eL :+ toString(toInt(fz)))
886886 }
887887
888888 makeString_2C({
889889 let eN = bd
890890 let eO = size(eN)
891891 let eP = nil
892892 func eQ (eR,eS) = if ((eS >= eO))
893893 then eR
894894 else fy(eR, eN[eS])
895895
896896 func eT (eR,eS) = if ((eS >= eO))
897897 then eR
898898 else throw("List size exceeds 50")
899899
900900 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
901901 }, "_")
902902 }
903903
904904
905905 func fA (fB,fC) = {
906906 func fD (eL,fv) = {
907907 let fE = if ((size(fB) > (7 + fv)))
908908 then fB[(7 + fv)]
909909 else 0
910910 if ((parseIntValue(fC[fv]) > (fB[fv] + fE)))
911911 then throw(("Requirement not satisfied: " + cE[fv]))
912912 else true
913913 }
914914
915915 let eN = [0, 1, 2, 3, 4, 5, 6]
916916 let eO = size(eN)
917917 let eP = false
918918 func eQ (eR,eS) = if ((eS >= eO))
919919 then eR
920920 else fD(eR, eN[eS])
921921
922922 func eT (eR,eS) = if ((eS >= eO))
923923 then eR
924924 else throw("List size exceeds 7")
925925
926926 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7)
927927 }
928928
929929
930930 func fF (fG,ft,fH,fI,fJ,fK,fB) = {
931931 let fj = split(fG, ":")
932932 if ((size(fj) != 2))
933933 then throw("Incorrect format, should be index:amount")
934934 else if (if (!(fH))
935935 then (size(fj[0]) != 2)
936936 else false)
937937 then throw("Product idx should be 2 digits, zero padded")
938938 else {
939939 let fL = parseIntValue(fj[0])
940940 let fM = parseIntValue(fj[1])
941941 if (if ((0 > fL))
942942 then true
943943 else (fL >= size(bd)))
944944 then throw("Unknown product idx")
945945 else if ((0 > fM))
946946 then throw("Count can't be negative")
947947 else if ((fM > cO))
948948 then throw(((("Can't put more than " + toString(cO)) + " of ") + ba[fL]))
949949 else if ((fM == 0))
950950 then $Tuple2(ft, false)
951951 else {
952952 let fN = take(ft, (8 * fL))
953953 let fo = toInt(take(drop(ft, (8 * fL)), 8))
954954 let fp = drop(ft, (8 * (fL + 1)))
955955 let cv = split(bd[fL], "_")
956956 if (if (!(fH))
957957 then (fM > fo)
958958 else false)
959959 then throw(((((("You have " + toString(fo)) + " of ") + ba[fL]) + ", but tried to use ") + toString(fM)))
960960 else {
961961 let fO = if (if (!(fH))
962962 then fA(fB, split(cv[bg], ","))
963963 else false)
964964 then {
965965 let fP = cv[bh]
966966 if ((fP == ""))
967967 then throw("Item cannot be equipped")
968968 else {
969969 let fQ = parseIntValue(fP)
970970 let fR = (fQ / 100)
971971 if ((fI != fR))
972972 then throw("Segment incompatible")
973973 else {
974974 let fS = ((fQ % 100) / 10)
975975 if ((fJ != fS))
976976 then throw("Slot incompatible")
977977 else {
978978 let fT = (fQ % 10)
979979 if (if ((fK != 0))
980980 then (fT > 1)
981981 else false)
982982 then throw("Big items should occupy slot 0")
983983 else (fT > 1)
984984 }
985985 }
986986 }
987987 }
988988 else false
989989 $Tuple2(((fN + toBytes((fo + (if (fH)
990990 then fM
991991 else -(fM))))) + fp), fO)
992992 }
993993 }
994994 }
995995 }
996996
997997
998998 func fU (fV,fW,fH,fI,fJ,fX) = if ((fV != ""))
999999 then {
10001000 let fY = split(fV, ",")
10011001 if ((size(fY) > cN))
10021002 then throw("Wrong slots format")
10031003 else {
10041004 let fZ = fY[0]
10051005 let ga = if ((size(fY) > 1))
10061006 then fY[1]
10071007 else ""
10081008 if (if ((fZ == ""))
10091009 then (ga == "")
10101010 else false)
10111011 then fW
10121012 else {
10131013 let gb = if ((fZ != ""))
10141014 then fF(fZ, fW, fH, fI, fJ, 0, fX)
10151015 else $Tuple2(fW, false)
10161016 if ((ga != ""))
10171017 then if (gb._2)
10181018 then throw("Big item already occupies slot")
10191019 else fF(ga, gb._1, fH, fI, fJ, 1, fX)._1
10201020 else gb._1
10211021 }
10221022 }
10231023 }
10241024 else fW
10251025
10261026
10271027 func gc (gd,ge,fH,fX) = {
10281028 func fI (eL,gf) = {
10291029 let fv = eL._1
10301030 let fJ = split(gf, ";")
10311031 if ((size(fJ) != cM))
10321032 then throw("Wrong segment format")
10331033 else {
10341034 let gg = fJ[0]
10351035 let gh = fJ[1]
10361036 if (if ((gg == ""))
10371037 then (gh == "")
10381038 else false)
10391039 then $Tuple2((fv + 1), eL._2)
10401040 else {
10411041 let gi = fU(gg, eL._2, fH, fv, 0, fX)
10421042 $Tuple2((fv + 1), fU(gh, gi, fH, fv, 1, fX))
10431043 }
10441044 }
10451045 }
10461046
10471047 ( let eN = gd
10481048 let eO = size(eN)
10491049 let eP = $Tuple2(0, ge)
10501050 func eQ (eR,eS) = if ((eS >= eO))
10511051 then eR
10521052 else fI(eR, eN[eS])
10531053
10541054 func eT (eR,eS) = if ((eS >= eO))
10551055 then eR
10561056 else throw("List size exceeds 6")
10571057
10581058 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6))._2
10591059 }
10601060
10611061
10621062 func gj (bO) = {
10631063 let gk = cU(bO)
10641064 let gl = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
10651065 let gm = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
10661066 let gn = gc(gl, gm, true, nil)
10671067 let go = split(gl[cK], ";")[1]
10681068 let dD = if ((go == ""))
10691069 then 0
10701070 else {
10711071 let gp = split(go, ",")[0]
10721072 if ((gp == ""))
10731073 then 0
10741074 else {
10751075 let fG = split(gp, ":")
10761076 let K = fG[0]
10771077 let gq = fG[1]
10781078 if (if (if (if (if ((K == "06"))
10791079 then true
10801080 else (K == "07"))
10811081 then true
10821082 else (K == "08"))
10831083 then (gq != "")
10841084 else false)
10851085 then (parseIntValue(gq) > 0)
10861086 else false)
10871087 then parseIntValue(split(bd[parseIntValue(K)], "_")[bf])
10881088 else 0
10891089 }
10901090 }
10911091 let fX = dC(this, bO, dD, true)
10921092 let gr = gc(gl, gn, false, fX)
10931093 (gr == gr)
10941094 }
10951095
10961096
10971097 func gs (gt,gu,gv,gw) = if ((size(gt) != aM))
10981098 then throw("Wrong proportions data")
10991099 else {
11001100 func gx (eL,gy) = {
11011101 let fd = (parseIntValue(gt[gy]) + ((gw * gu[gy]) * gv))
11021102 if ((0 > fd))
11031103 then throw(((((((("Panic! Pieces of type=" + toString(gy)) + ", sign=") + toString(gw)) + ", terrainCounts[i]=") + toString(gu[gy])) + ", landSizeIndex=") + toString(gv)))
11041104 else (eL :+ toString(fd))
11051105 }
11061106
11071107 let eN = u
11081108 let eO = size(eN)
11091109 let eP = nil
11101110 func eQ (eR,eS) = if ((eS >= eO))
11111111 then eR
11121112 else gx(eR, eN[eS])
11131113
11141114 func eT (eR,eS) = if ((eS >= eO))
11151115 then eR
11161116 else throw("List size exceeds 6")
11171117
11181118 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
11191119 }
11201120
11211121
11221122 func gz (gu,gv,gw) = {
11231123 let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_")
11241124 makeString(gs(gt, gu, gv, gw), "_")
11251125 }
11261126
11271127
11281128 func gA (gB) = [(size(split(gB, "A")) - 1), (size(split(gB, "B")) - 1), (size(split(gB, "C")) - 1), (size(split(gB, "D")) - 1), (size(split(gB, "E")) - 1), (size(split(gB, "F")) - 1)]
11291129
11301130
11311131 func gC (gD,gu,gE,gv,gF) = {
11321132 func gG (eL,gy) = {
11331133 let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv)
11341134 (eL :+ toString((parseIntValue(gD[gy]) + gH)))
11351135 }
11361136
11371137 let eW = {
11381138 let eN = u
11391139 let eO = size(eN)
11401140 let eP = nil
11411141 func eQ (eR,eS) = if ((eS >= eO))
11421142 then eR
11431143 else gG(eR, eN[eS])
11441144
11451145 func eT (eR,eS) = if ((eS >= eO))
11461146 then eR
11471147 else throw("List size exceeds 6")
11481148
11491149 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
11501150 }
11511151 makeString(eW, "_")
11521152 }
11531153
11541154
11551155 func gI (gD,gu,gE,gv,gF) = {
11561156 func gG (eL,gy) = {
11571157 let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv)
11581158 let gJ = (parseIntValue(gD[gy]) + gH)
11591159 $Tuple2((eL._1 :+ gJ), (eL._2 + gJ))
11601160 }
11611161
11621162 let eN = u
11631163 let eO = size(eN)
11641164 let eP = $Tuple2(nil, 0)
11651165 func eQ (eR,eS) = if ((eS >= eO))
11661166 then eR
11671167 else gG(eR, eN[eS])
11681168
11691169 func eT (eR,eS) = if ((eS >= eO))
11701170 then eR
11711171 else throw("List size exceeds 6")
11721172
11731173 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
11741174 }
11751175
11761176
11771177 func gK (gu,gE,gv,gF) = {
11781178 func gG (eL,gL) = {
11791179 let gH = ((fraction(gE, gF, dJ) * gL) * gv)
11801180 $Tuple2((eL._1 :+ gH), (eL._2 + gH))
11811181 }
11821182
11831183 let eN = gu
11841184 let eO = size(eN)
11851185 let eP = $Tuple2(nil, 0)
11861186 func eQ (eR,eS) = if ((eS >= eO))
11871187 then eR
11881188 else gG(eR, eN[eS])
11891189
11901190 func eT (eR,eS) = if ((eS >= eO))
11911191 then eR
11921192 else throw("List size exceeds 6")
11931193
11941194 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
11951195 }
11961196
11971197
11981198 func gM (gN,gO,gP,gQ) = {
11991199 let gR = gP._1
12001200 let gS = gP._2
12011201 if ((gS == 0))
12021202 then $Tuple2(makeString(gN, "_"), makeString(gO, "_"))
12031203 else if ((gQ >= gS))
12041204 then {
12051205 func gT (eL,gy) = (eL :+ toString((parseIntValue(gN[gy]) + gR[gy])))
12061206
12071207 let eW = {
12081208 let eN = u
12091209 let eO = size(eN)
12101210 let eP = nil
12111211 func eQ (eR,eS) = if ((eS >= eO))
12121212 then eR
12131213 else gT(eR, eN[eS])
12141214
12151215 func eT (eR,eS) = if ((eS >= eO))
12161216 then eR
12171217 else throw("List size exceeds 6")
12181218
12191219 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
12201220 }
12211221 $Tuple2(makeString(eW, "_"), makeString(gO, "_"))
12221222 }
12231223 else {
12241224 func gU (eL,gy) = {
12251225 let gV = fraction(gR[gy], gQ, gS)
12261226 $Tuple2((eL._1 :+ toString((parseIntValue(gN[gy]) + gV))), (eL._2 :+ toString(((parseIntValue(gO[gy]) + gR[gy]) - gV))))
12271227 }
12281228
12291229 let eW = {
12301230 let eN = u
12311231 let eO = size(eN)
12321232 let eP = $Tuple2(nil, nil)
12331233 func eQ (eR,eS) = if ((eS >= eO))
12341234 then eR
12351235 else gU(eR, eN[eS])
12361236
12371237 func eT (eR,eS) = if ((eS >= eO))
12381238 then eR
12391239 else throw("List size exceeds 6")
12401240
12411241 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
12421242 }
12431243 $Tuple2(makeString(eW._1, "_"), makeString(eW._2, "_"))
12441244 }
12451245 }
12461246
12471247
12481248 func gW (gX) = if ((gX >= toBigInt(0)))
12491249 then gX
12501250 else -(gX)
12511251
12521252
12531253 let gY = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
12541254
12551255 func gZ (am,ha) = {
12561256 let hb = toInt((am % dX))
12571257 let hc = if ((ha[0] > hb))
12581258 then "A"
12591259 else if ((ha[1] > hb))
12601260 then "B"
12611261 else if ((ha[2] > hb))
12621262 then "C"
12631263 else if ((ha[3] > hb))
12641264 then "D"
12651265 else if ((ha[4] > hb))
12661266 then "E"
12671267 else "F"
12681268 hc
12691269 }
12701270
12711271
12721272 func hd (he,hf) = {
12731273 let hg = gY[hf]
12741274 func hh (eL,eM) = $Tuple2((((((eL._1 + gZ(eL._2, hg)) + gZ((eL._2 / dX), hg)) + gZ((eL._2 / dY), hg)) + gZ((eL._2 / dZ), hg)) + gZ((eL._2 / ea), hg)), (eL._2 / eb))
12751275
12761276 let hi = {
12771277 let eN = [1, 2, 3, 4, 5]
12781278 let eO = size(eN)
12791279 let eP = $Tuple2("", (he / dW))
12801280 func eQ (eR,eS) = if ((eS >= eO))
12811281 then eR
12821282 else hh(eR, eN[eS])
12831283
12841284 func eT (eR,eS) = if ((eS >= eO))
12851285 then eR
12861286 else throw("List size exceeds 5")
12871287
12881288 eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5)
12891289 }
12901290 hi._1
12911291 }
12921292
12931293
12941294 let hj = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14]
12951295
12961296 let hk = ["A", "B", "C", "D", "E", "F"]
12971297
12981298 func hl (hm,gv) = {
12991299 func hn (eL,ak) = {
13001300 let fv = eL._2
13011301 let ho = parseIntValue(ak)
13021302 let gX = if ((ho == 0))
13031303 then 0
13041304 else if ((ho >= (4 * gv)))
13051305 then (ho / gv)
13061306 else if ((ho > (3 * gv)))
13071307 then 3
13081308 else (((ho - 1) / gv) + 1)
13091309 $Tuple3((eL._1 :+ gX), (eL._2 + 1), (eL._3 + gX))
13101310 }
13111311
13121312 let hi = {
13131313 let eN = hm
13141314 let eO = size(eN)
13151315 let eP = $Tuple3(nil, 0, 0)
13161316 func eQ (eR,eS) = if ((eS >= eO))
13171317 then eR
13181318 else hn(eR, eN[eS])
13191319
13201320 func eT (eR,eS) = if ((eS >= eO))
13211321 then eR
13221322 else throw("List size exceeds 6")
13231323
13241324 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
13251325 }
13261326 let hp = hi._1
13271327 let hq = value(indexOf(hp, max(hp)))
13281328 let hr = (hi._3 - 25)
13291329 func hs (eL,K) = {
13301330 let ax = if ((K == hq))
13311331 then (hp[K] - hr)
13321332 else hp[K]
13331333 let aB = if ((ax == 0))
13341334 then nil
13351335 else split(drop(toString(pow(10, 0, ax, 0, 0, DOWN)), 1), "")
13361336 let fQ = hk[K]
13371337 func ht (hu,hv) = (hu :+ fQ)
13381338
13391339 let hw = {
13401340 let eN = aB
13411341 let eO = size(eN)
13421342 let eP = nil
13431343 func hx (eR,eS) = if ((eS >= eO))
13441344 then eR
13451345 else ht(eR, eN[eS])
13461346
13471347 func hy (eR,eS) = if ((eS >= eO))
13481348 then eR
13491349 else throw("List size exceeds 25")
13501350
13511351 hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
13521352 }
13531353 (eL ++ hw)
13541354 }
13551355
13561356 let eW = {
13571357 let eN = u
13581358 let eO = size(eN)
13591359 let eP = nil
13601360 func hx (eR,eS) = if ((eS >= eO))
13611361 then eR
13621362 else hs(eR, eN[eS])
13631363
13641364 func hy (eR,eS) = if ((eS >= eO))
13651365 then eR
13661366 else throw("List size exceeds 6")
13671367
13681368 hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
13691369 }
13701370 func hz (eL,fv) = (eL + eW[fv])
13711371
13721372 let eN = hj
13731373 let eO = size(eN)
13741374 let eP = ""
13751375 func hA (eR,eS) = if ((eS >= eO))
13761376 then eR
13771377 else hz(eR, eN[eS])
13781378
13791379 func hB (eR,eS) = if ((eS >= eO))
13801380 then eR
13811381 else throw("List size exceeds 25")
13821382
13831383 hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
13841384 }
13851385
13861386
13871387 func hC (hD) = {
13881388 let hE = split(valueOrElse(getString(hD), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
13891389 [toString(valueOrElse(parseInt(hE[bs]), 0)), if ((size(split(hE[bt], "_")) == aM))
13901390 then hE[bt]
13911391 else "0_0_0_0_0_0", if ((size(split(hE[bu], "_")) == aM))
13921392 then hE[bu]
13931393 else "0_0_0_0_0_0", hE[bv]]
13941394 }
13951395
13961396
13971397 func hF (hG) = {
13981398 let fj = split(hG, "_")
13991399 ((aP * (parseIntValue(fj[1]) + 1)) * parseIntValue(fj[0]))
14001400 }
14011401
14021402
14031403 func hH (hI) = {
14041404 let hJ = hI[bm]
14051405 func hK (eL,hL) = (eL + parseIntValue(hL))
14061406
14071407 func hM (eL,hL) = {
14081408 let K = eL._1
14091409 let eE = (((parseIntValue(hL) + bi) - 1) / bi)
14101410 $Tuple2((K + 1), (eL._2 + (eE * o)))
14111411 }
14121412
14131413 let hN = {
14141414 let eN = split(hI[bk], "_")
14151415 let eO = size(eN)
14161416 let eP = 0
14171417 func eQ (eR,eS) = if ((eS >= eO))
14181418 then eR
14191419 else hK(eR, eN[eS])
14201420
14211421 func eT (eR,eS) = if ((eS >= eO))
14221422 then eR
14231423 else throw("List size exceeds 6")
14241424
14251425 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
14261426 }
14271427 let hO = {
14281428 let eN = split(hI[bl], "_")
14291429 let eO = size(eN)
14301430 let eP = 0
14311431 func hx (eR,eS) = if ((eS >= eO))
14321432 then eR
14331433 else hK(eR, eN[eS])
14341434
14351435 func hy (eR,eS) = if ((eS >= eO))
14361436 then eR
14371437 else throw("List size exceeds 6")
14381438
14391439 hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
14401440 }
14411441 let hP = if ((hJ == ""))
14421442 then 0
14431443 else ( let eN = split_4C(hJ, "_")
14441444 let eO = size(eN)
14451445 let eP = $Tuple2(0, 0)
14461446 func hA (eR,eS) = if ((eS >= eO))
14471447 then eR
14481448 else hM(eR, eN[eS])
14491449
14501450 func hB (eR,eS) = if ((eS >= eO))
14511451 then eR
14521452 else throw("List size exceeds 50")
14531453
14541454 hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2
14551455 ((hN + hO) + hP)
14561456 }
14571457
14581458
14591459 func hQ (hR,hS,hT) = {
14601460 let hG = ((toString(hS) + "_") + toString(hT))
14611461 let hU = hF(hG)
14621462 let hV = valueOrElse(getString(hR), (hG + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
14631463 let hW = split_4C(hV, ":")
14641464 let hX = hH(hW)
14651465 let hY = if ((5 > size(hW)))
14661466 then makeString(["0", toString(hX), toString((hU - hX)), toString(hU)], "_")
14671467 else {
14681468 let hZ = split(hW[bn], "_")
14691469 let ia = parseIntValue(hZ[bo])
14701470 let ib = if ((size(hZ) > 1))
14711471 then parseIntValue(hZ[bp])
14721472 else hX
14731473 makeString([toString(ia), toString(ib), toString(((hU - ia) - ib)), toString(hU)], "_")
14741474 }
14751475 [hW[bj], if ((size(split(hW[bk], "_")) == aM))
14761476 then hW[bk]
14771477 else "0_0_0_0_0_0", if ((size(split(hW[bl], "_")) == aM))
14781478 then hW[bl]
14791479 else "0_0_0_0_0_0", hW[bm], hY]
14801480 }
14811481
14821482
14831483 func ic (hI) = {
14841484 let id = hH(hI)
14851485 let ie = parseIntValue(split(hI[bn], "_")[bo])
14861486 ((hF(hI[bj]) - id) - ie)
14871487 }
14881488
14891489
14901490 func if (ig,hI,ih) = if ((size(ig) != 3))
14911491 then throw("cargoListStr should contain exactly 2 ':' separators")
14921492 else {
14931493 let ii = split(ig[0], "_")
14941494 let ij = split(ig[1], "_")
14951495 let ik = if ((ig[2] == ""))
14961496 then nil
14971497 else split_4C(ig[2], "_")
14981498 if ((size(ii) != aM))
14991499 then throw("All 6 resources should be passed")
15001500 else if ((size(ij) != aM))
15011501 then throw("All 6 materials should be passed")
15021502 else {
15031503 let gQ = ic(hI)
15041504 let il = split(hI[bk], "_")
15051505 let im = split(hI[bl], "_")
15061506 let in = if ((hI[bm] == ""))
15071507 then nil
15081508 else split_4C(hI[bm], "_")
15091509 let gO = split(ih[bt], "_")
15101510 let io = split(ih[bu], "_")
15111511 let ip = if ((ih[bv] == ""))
15121512 then nil
15131513 else split_4C(ih[bv], "_")
15141514 func iq (eL,hL) = {
15151515 let gy = eL._1
15161516 let ir = parseIntValue(hL)
15171517 let is = parseIntValue(il[gy])
15181518 let it = parseIntValue(gO[gy])
15191519 if ((ir == 0))
15201520 then $Tuple4((gy + 1), (eL._2 :+ il[gy]), (eL._3 :+ gO[gy]), eL._4)
15211521 else if ((ir > 0))
15221522 then if ((ir > it))
15231523 then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(it)) + " available"))
15241524 else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir))
15251525 else if ((-(ir) > is))
15261526 then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(is)) + " available"))
15271527 else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir))
15281528 }
15291529
15301530 let eW = {
15311531 let eN = ii
15321532 let eO = size(eN)
15331533 let eP = $Tuple4(0, nil, nil, 0)
15341534 func eQ (eR,eS) = if ((eS >= eO))
15351535 then eR
15361536 else iq(eR, eN[eS])
15371537
15381538 func eT (eR,eS) = if ((eS >= eO))
15391539 then eR
15401540 else throw("List size exceeds 6")
15411541
15421542 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
15431543 }
15441544 func iu (eL,hL) = {
15451545 let gy = eL._1
15461546 let ir = parseIntValue(hL)
15471547 let iv = parseIntValue(im[gy])
15481548 let iw = parseIntValue(io[gy])
15491549 if ((ir == 0))
15501550 then $Tuple4((gy + 1), (eL._2 :+ im[gy]), (eL._3 :+ io[gy]), eL._4)
15511551 else if ((ir > 0))
15521552 then if ((ir > iw))
15531553 then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iw)) + " available"))
15541554 else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir))
15551555 else if ((-(ir) > iv))
15561556 then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iv)) + " available"))
15571557 else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir))
15581558 }
15591559
15601560 let gg = {
15611561 let eN = ij
15621562 let eO = size(eN)
15631563 let eP = $Tuple4(0, nil, nil, eW._4)
15641564 func hx (eR,eS) = if ((eS >= eO))
15651565 then eR
15661566 else iu(eR, eN[eS])
15671567
15681568 func hy (eR,eS) = if ((eS >= eO))
15691569 then eR
15701570 else throw("List size exceeds 6")
15711571
15721572 hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
15731573 }
15741574 func ix (eL,hL) = {
15751575 let gy = eL._1
15761576 let ir = parseIntValue(hL)
15771577 let iy = if ((size(in) > gy))
15781578 then parseIntValue(in[gy])
15791579 else 0
15801580 let iz = if ((size(ip) > gy))
15811581 then parseIntValue(ip[gy])
15821582 else 0
15831583 if ((ir == 0))
15841584 then $Tuple4((gy + 1), (eL._2 :+ toString(iy)), (eL._3 :+ toString(iz)), eL._4)
15851585 else if ((ir > 0))
15861586 then if ((ir > iz))
15871587 then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iz)) + " available"))
15881588 else {
15891589 let iA = (eB((iy + ir), bi) - eB(iy, bi))
15901590 $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA))
15911591 }
15921592 else if ((-(ir) > iy))
15931593 then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iy)) + " available"))
15941594 else {
15951595 let iA = (eB((iy + ir), bi) - eB(iy, bi))
15961596 $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA))
15971597 }
15981598 }
15991599
16001600 let hE = if ((size(ik) != 0))
16011601 then {
16021602 let eN = ik
16031603 let eO = size(eN)
16041604 let eP = $Tuple4(0, nil, nil, gg._4)
16051605 func hA (eR,eS) = if ((eS >= eO))
16061606 then eR
16071607 else ix(eR, eN[eS])
16081608
16091609 func hB (eR,eS) = if ((eS >= eO))
16101610 then eR
16111611 else throw("List size exceeds 50")
16121612
16131613 hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
16141614 }
16151615 else $Tuple4(0, in, ip, gg._4)
16161616 let iB = hE._4
16171617 if ((iB > gQ))
16181618 then throw((((("Attempt to put total " + toString(iB)) + " stuff, but only ") + toString(gQ)) + " warehouse space left"))
16191619 else $Tuple7(makeString(eW._2, "_"), makeString(gg._2, "_"), makeString_2C(hE._2, "_"), makeString(eW._3, "_"), makeString(gg._3, "_"), makeString_2C(hE._3, "_"), iB)
16201620 }
16211621 }
16221622
16231623
16241624 func iC (iD,iE) = {
16251625 let bW = toString(iD)
16261626 let iF = gW(toBigInt(iE))
16271627 let iG = valueOrElse(getInteger(ed()), (ec + 1))
16281628 let eh = toString(iG)
16291629 let hf = toInt((iF % dW))
16301630 let gB = hd(iF, hf)
16311631 let ae = bb[hf]
16321632 let iH = Issue(eA(eh, "S"), makeString([eh, "S", gB, ae], "_"), 1, 0, false)
16331633 let bA = calculateAssetId(iH)
16341634 let iI = toBase58String(bA)
16351635 $Tuple2([IntegerEntry(ed(), (iG + 1)), iH, StringEntry(eg(eh), iI), StringEntry(bz(iI), bW), StringEntry(ej(eh), bW), IntegerEntry(bJ(iI), 0), IntegerEntry(ei(iI, bW), 0), ScriptTransfer(iD, 1, bA)], $Tuple2(iI, ae))
16361636 }
16371637
16381638
16391639 func iJ (bW,iK,iL) = if (!(sigVerify_8Kb(iK, iL, f)))
16401640 then throw("signature does not match")
16411641 else {
16421642 let fj = split_4C(toUtf8String(iK), ";")
16431643 let iM = split_4C(fj[0], "|")
16441644 let iN = split(iM[er], "_")
16451645 let iO = parseIntValue(iN[0])
16461646 let iP = parseIntValue(iN[1])
16471647 let iQ = split(fj[1], ":")
16481648 let iR = iQ[0]
16491649 let iS = parseIntValue(iM[es])
16501650 if (if ((iS > (lastBlock.timestamp + dO)))
16511651 then true
16521652 else ((lastBlock.timestamp - dO) > iS))
16531653 then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
16541654 else {
16551655 let iT = iQ[1]
16561656 let iU = valueOrElse(getString(au(bW)), "")
16571657 if ((iU != iT))
16581658 then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
16591659 else {
16601660 let bO = valueOrErrorMessage(getString(bS(bW)), "You don't have a duck staked")
16611661 let iV = cP(bO)
16621662 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
16631663 let iX = valueOrElse(getInteger(iV), iW)
16641664 if ((iX != iO))
16651665 then throw(((("oldHealth=" + toString(iX)) + " from state does not match one from flight log=") + toString(iO)))
16661666 else if ((0 >= iO))
16671667 then throw("You can't fly with zero health")
16681668 else if (!(gj(bO)))
16691669 then throw("Equipment incompatible")
16701670 else {
16711671 let iY = if ((size(iM) > et))
16721672 then iM[et]
16731673 else ""
16741674 let iZ = if ((size(iM) > eu))
16751675 then iM[eu]
16761676 else ""
16771677 let ja = if (if ((iP > 0))
16781678 then (iY == "$")
16791679 else false)
16801680 then al(invoke(L, "sendUsdtPrize", [bW], nil))
16811681 else 0
16821682 $Tuple5(iP, bO, ja, iR, iZ)
16831683 }
16841684 }
16851685 }
16861686 }
16871687
16881688
16891689 func jb (bI,jc) = {
16901690 let hT = valueOrElse(getInteger(bJ(bI)), 0)
16911691 let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
16921692 let je = (hT / 6)
16931693 let jf = (hT / 7)
16941694 ((aO + fraction(aO, ((hT + je) + (2 * jf)), 5)) + fraction(aO, jd, (jc * 5)))
16951695 }
16961696
16971697
16981698 func jg (av,jh,ji) = {
16991699 let jj = if ((jh == eo))
17001700 then $Tuple2(ji, valueOrElse(getString(bS(av)), ""))
17011701 else {
17021702 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
17031703 let jk = valueOrElse(getString(bU(bO)), aQ)
17041704 let cp = split(value(jk), "_")
17051705 if ((cp[bx] != "L"))
17061706 then throw((("Duck location type is " + cp[bx]) + ", but should be L"))
17071707 else $Tuple2(cp[by], bO)
17081708 }
17091709 let bI = jj._1
17101710 let jl = jj._2
17111711 let jm = value(assetInfo(fromBase58String(bI)))
17121712 let jn = bC(bI)
17131713 let jo = valueOrErrorMessage(getInteger(jn), (("Land " + jm.name) + " is not staked"))
17141714 let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
17151715 if ((jp != av))
17161716 then throw((aI + " is not yours"))
17171717 else {
17181718 let jq = split(jm.description, "_")
17191719 $Tuple4(jl, bI, jq, jo)
17201720 }
17211721 }
17221722
17231723
17241724 func jr (av,eC,jh,ji) = if ((0 > eC))
17251725 then throw("Negative amount")
17261726 else {
17271727 let fQ = jg(av, jh, ji)
17281728 let ar = fQ._3[T]
17291729 let gu = gA(fQ._3[U])
17301730 let gE = (aH() - fQ._4)
17311731 if ((0 > gE))
17321732 then throw(((("Saved timestamp is in future, saved = " + toString(fQ._4)) + ", final = ") + toString(aH())))
17331733 else {
17341734 let jc = aq(ar)
17351735 let js = jb(fQ._2, jc)
17361736 let jt = fraction(gE, (js * jc), dJ)
17371737 if ((eC > jt))
17381738 then throw(((("Not enough resources, available = " + toString(jt)) + ", requested = ") + toString(eC)))
17391739 else {
17401740 let ju = fraction((jt - eC), dJ, (js * jc))
17411741 let jv = (aH() - ju)
17421742 let hS = (jc / p)
17431743 let gP = gK(gu, (gE - ju), hS, js)
17441744 let hR = bH(fQ._2)
17451745 let hT = valueOrElse(getInteger(bJ(fQ._2)), 0)
17461746 let hI = hQ(hR, hS, hT)
17471747 let hZ = split(hI[bn], "_")
17481748 let gQ = parseIntValue(hZ[bq])
17491749 if (if ((jh == eo))
17501750 then (eC > gQ)
17511751 else false)
17521752 then throw((("Only " + toString(gQ)) + " space left in warehouse"))
17531753 else {
17541754 let hD = bT(fQ._1)
17551755 let ih = hC(hD)
17561756 let gO = split(ih[bt], "_")
17571757 let gN = split(hI[bk], "_")
17581758 let jw = if ((jh == eo))
17591759 then $Tuple4(gC(gN, gu, (gE - ju), hS, js), ih[bt], (parseIntValue(hZ[bp]) + gP._2), (parseIntValue(hZ[bq]) - gP._2))
17601760 else if ((jh == ep))
17611761 then $Tuple4(hI[bk], gC(gO, gu, (gE - ju), hS, js), parseIntValue(hZ[bp]), parseIntValue(hZ[bq]))
17621762 else {
17631763 let jx = gM(gN, gO, gP, gQ)
17641764 let jy = min([parseIntValue(hZ[bq]), gP._2])
17651765 $Tuple4(jx._1, jx._2, (parseIntValue(hZ[bp]) + jy), (parseIntValue(hZ[bq]) - jy))
17661766 }
17671767 let jz = jw._1
17681768 let jA = jw._2
17691769 let jB = jw._3
17701770 let jC = jw._4
17711771 $Tuple5([IntegerEntry(bC(fQ._2), jv), IntegerEntry(bF(aI, fQ._2, av), jv)], hD, [ih[bs], jA, ih[bu], ih[bv]], hR, [hI[bj], jz, hI[bl], hI[bm], makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")])
17721772 }
17731773 }
17741774 }
17751775 }
17761776
17771777
17781778 func jD (av,bI,jc,jh) = {
17791779 let jn = bC(bI)
17801780 let jo = value(getInteger(jn))
17811781 let jt = (fraction((aH() - jo), jb(bI, jc), dJ) * jc)
17821782 jr(av, jt, jh, bI)
17831783 }
17841784
17851785
17861786 func jE (eY,iD,jF,bI) = {
17871787 let av = toString(iD)
17881788 let fQ = jg(av, eq, bI)
17891789 let jc = aq(fQ._3[T])
17901790 let jG = bJ(fQ._2)
17911791 let jH = valueOrElse(getInteger(jG), 0)
17921792 if (if (!(b))
17931793 then (jH >= 3)
17941794 else false)
17951795 then throw("Currently max infrastructure level = 3")
17961796 else {
17971797 let jI = ((sqrt(jc, 0, 0, DOWN) / 5) + 2)
17981798 let dB = (jH + 1)
17991799 if (if (b)
18001800 then (dB > jI)
18011801 else false)
18021802 then throw(("Currently max infrastructure level = " + toString(jI)))
18031803 else {
18041804 let jJ = fraction(dR, (jc * dB), p)
18051805 if (if (!(eY))
18061806 then (jF != jJ)
18071807 else false)
18081808 then throw(("Payment attached should be " + toString(jJ)))
18091809 else {
18101810 let hD = bT(fQ._1)
18111811 let ih = hC(hD)
18121812 let jK = split(ih[bu], "_")
18131813 let jL = fraction(k, (jc * dB), p)
18141814 let jM = makeString(eX(eY, jK, jL), "_")
18151815 let jN = jD(av, fQ._2, jc, eq)
18161816 let jO = jN._5
18171817 let jP = hF(jO[bj])
18181818 let jQ = makeString([split(jO[bj], "_")[0], toString(dB)], "_")
18191819 let jR = hF(jQ)
18201820 let hZ = split(jO[bn], "_")
18211821 let jS = makeString([hZ[bo], hZ[bp], toString(((parseIntValue(hZ[bq]) + jR) - jP)), toString(jR)], "_")
18221822 $Tuple3(([IntegerEntry(jG, dB), IntegerEntry(ei(fQ._2, av), dB), StringEntry(hD, makeString([ih[bs], jN._3[bt], jM, ih[bv]], ":")), StringEntry(jN._4, makeString([jQ, jO[bk], jO[bl], jO[bm], jS], ":"))] ++ jN._1), dB, jL)
18231823 }
18241824 }
18251825 }
18261826 }
18271827
18281828
18291829 func jT (jU,jV,jW,jX) = {
18301830 let dv = valueOrElse(getInteger(jV), 0)
18311831 let dA = (dv + jX)
18321832 let jY = dy(valueOrElse(getInteger(jU), 0), dA)
18331833 $Tuple2([IntegerEntry(jU, jY[0]), IntegerEntry(jV, dA), IntegerEntry(jW, (valueOrElse(getInteger(jW), 0) + jY[1]))], dA)
18341834 }
18351835
18361836
18371837 func jZ (bO,jX) = {
18381838 let jm = value(assetInfo(fromBase58String(bO)))
18391839 let av = valueOrErrorMessage(getString(bR(bO)), (("NFT " + jm.name) + " is orphaned"))
18401840 if (if (if (c)
18411841 then (jm.issuer == this)
18421842 else false)
18431843 then contains(jm.name, aK)
18441844 else false)
18451845 then jT(cW(av), cV(av), cX(av), jX)
18461846 else jT(cS(bO), cR(bO), cT(bO), jX)
18471847 }
18481848
18491849
18501850 func ka (av,jX) = jT(cW(av), cV(av), cX(av), jX)
18511851
18521852
18531853 func kb (av) = {
18541854 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
18551855 let kc = bM(av)
18561856 let kd = getString(kc)
18571857 if (!(isDefined(kd)))
18581858 then throw("You are not eligible for ONBOARD artifact")
18591859 else {
18601860 let ke = bP(av)
18611861 let kf = getString(ke)
18621862 if (isDefined(kf))
18631863 then throw(("You already used your ONBOARD artifact on duck " + value(kf)))
18641864 else {
18651865 let kg = bN(bO)
18661866 let kh = getString(kg)
18671867 if (isDefined(kh))
18681868 then throw(((("The duck " + bO) + " already got points from ONBOARD artifact from user ") + value(kh)))
18691869 else ([StringEntry(ke, bO), StringEntry(kg, av)] ++ jZ(bO, ds)._1)
18701870 }
18711871 }
18721872 }
18731873
18741874
18751875 func ki (av,ji) = {
18761876 let fQ = jg(av, eq, ji)
18771877 let bI = fQ._2
18781878 let jc = aq(fQ._3[T])
18791879 let kj = bD(aL, bI)
18801880 if ((valueOrElse(getInteger(kj), 0) > 0))
18811881 then throw("Presale artifact is already activated")
18821882 else if ((parseIntValue(fQ._3[S]) > ec))
18831883 then throw((((aI + " ") + bI) + " is not eligible for presale artifact"))
18841884 else {
18851885 let jN = jD(av, bI, jc, eq)
18861886 (((jN._1 :+ IntegerEntry(kj, jc)) :+ StringEntry(jN._2, makeString(jN._3, ":"))) :+ StringEntry(jN._4, makeString(jN._5, ":")))
18871887 }
18881888 }
18891889
18901890
18911891 func kk (bO) = {
18921892 let co = valueOrElse(getInteger(Q, bZ), 0)
18931893 let jk = split(valueOrElse(getString(bU(bO)), aQ), "_")
18941894 let cq = lastBlock.timestamp
18951895 let cr = ci(Q, co)
18961896 let ck = cr[ce]
18971897 let cl = cr[cf]
18981898 if ((jk[bx] != "T"))
18991899 then false
19001900 else if (if (if ((parseIntValue(jk[bw]) == co))
19011901 then (cl[ch] == "INPROGRESS")
19021902 else false)
19031903 then (parseIntValue(ck[cg]) > cq)
19041904 else false)
19051905 then throw("Your duck is taking part in the tournament")
19061906 else ap(invoke(this, "exitTournamentInternal", [bO], nil))
19071907 }
19081908
19091909
19101910 func kl (km,dB,kn,av,ko,kp) = {
19111911 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
19121912 if (kk(bO))
19131913 then throw("mergeInternal_checkTournament")
19141914 else {
19151915 func kq (eL,bI) = {
19161916 let jm = value(assetInfo(fromBase58String(bI)))
19171917 let jn = bC(bI)
19181918 let jo = valueOrErrorMessage(getInteger(jn), (("NFT " + jm.name) + " is not staked"))
19191919 let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
19201920 if ((jp != av))
19211921 then throw((aI + " is not yours"))
19221922 else {
19231923 let jq = split(jm.description, "_")
19241924 let ae = jq[V]
19251925 if (if ((eL._3 != ""))
19261926 then (eL._3 != ae)
19271927 else false)
19281928 then throw("Lands should be on the same continent to merge")
19291929 else {
19301930 let ar = jq[T]
19311931 let kr = eL._1
19321932 let gy = valueOrErrorMessage(indexOf(kr, ar), "You haven't passed all the lands needed")
19331933 let ks = (take(kr, gy) + drop(kr, (gy + 1)))
19341934 let jc = aq(ar)
19351935 let kt = (eL._2 + valueOrElse(getInteger(bD(aL, bI)), 0))
19361936 let hT = valueOrElse(getInteger(bJ(bI)), 0)
19371937 let ku = {
19381938 let g = ar
19391939 if (("S" == g))
19401940 then 3
19411941 else if (("M" == g))
19421942 then 4
19431943 else if (("L" == g))
19441944 then 5
19451945 else if (("XL" == g))
19461946 then 6
19471947 else throw("Only S, M, L, XL can merge")
19481948 }
19491949 if ((hT != ku))
19501950 then throw("All lands should be maxed to merge")
19511951 else {
19521952 let eh = jq[S]
19531953 let gu = gA(jq[U])
19541954 let gE = (lastBlock.timestamp - jo)
19551955 if ((0 > gE))
19561956 then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", current = ") + toString(lastBlock.timestamp)))
19571957 else {
19581958 let js = jb(bI, jc)
19591959 let hS = (jc / p)
19601960 let jA = gC(split(eL._4, "_"), gu, gE, hS, js)
19611961 let eV = gs(eL._6, gu, hS, -1)
19621962 let kv = gs(eL._10, gu, hS, -1)
19631963 let hm = gs(eL._9, gu, hS, 1)
19641964 let kw = eL._7
19651965 let K = indexOf(kw, bI)
19661966 if (!(isDefined(K)))
19671967 then throw(("Your staked lands don't contain " + bI))
19681968 else {
19691969 let kx = bB(bI)
19701970 let ky = valueOrElse(getString(kx), "")
19711971 $Tuple10(ks, kt, ae, jA, ((((((((((((eL._5 :+ DeleteEntry(bC(bI))) :+ DeleteEntry(bF(aI, bI, av))) :+ DeleteEntry(eg(eh))) :+ DeleteEntry(bz(bI))) :+ DeleteEntry(bJ(bI))) :+ DeleteEntry(ei(bI, av))) :+ DeleteEntry(bD(aL, bI))) :+ DeleteEntry(ej(eh))) :+ DeleteEntry(bH(bI))) :+ DeleteEntry(kx)) :+ Burn(fromBase58String(bI), 1)) ++ (if ((ky != ""))
19721972 then [DeleteEntry(ee(ky))]
19731973 else nil)), eV, removeByIndex(kw, value(K)), (eL._8 + jc), hm, kv)
19741974 }
19751975 }
19761976 }
19771977 }
19781978 }
19791979 }
19801980
19811981 let hD = bT(bO)
19821982 let ih = hC(hD)
19831983 let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_")
19841984 let kz = af(av)
19851985 let kA = getString(kz)
19861986 let kB = if (isDefined(kA))
19871987 then split_51C(value(kA), "_")
19881988 else nil
19891989 let kC = split(value(assetInfo(fromBase58String(ko[0]))).description, "_")[V]
19901990 let kD = split(valueOrElse(getString(ad(kC)), "0_0_0_0_0_0"), "_")
19911991 let eW = {
19921992 let eN = ko
19931993 let eO = size(eN)
19941994 let eP = $Tuple10(kn, 0, "", ih[bt], nil, gt, kB, 0, split("0_0_0_0_0_0", "_"), kD)
19951995 func eQ (eR,eS) = if ((eS >= eO))
19961996 then eR
19971997 else kq(eR, eN[eS])
19981998
19991999 func eT (eR,eS) = if ((eS >= eO))
20002000 then eR
20012001 else throw("List size exceeds 5")
20022002
20032003 eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5)
20042004 }
20052005 let ae = eW._3
20062006 let hf = valueOrErrorMessage(indexOf(bb, ae), ("Unknown continent: " + ae))
20072007 let gB = hl(eW._9, (aq(km) / p))
20082008 let iG = valueOrElse(getInteger(ed()), (ec + 1))
20092009 let kE = toString(iG)
20102010 let iH = Issue(eA(kE, km), makeString([kE, km, gB, ae], "_"), 1, 0, false)
20112011 let bA = calculateAssetId(iH)
20122012 let kF = toBase58String(bA)
20132013 let jM = makeString(eX((kp > 0), split(ih[bu], "_"), kp), "_")
20142014 let kG = ah(av)
20152015 let kH = valueOrElse(getInteger(kG), 0)
20162016 $Tuple2((((((((((((((((eW._5 :+ (if ((size(eW._7) > 0))
20172017 then StringEntry(kz, makeString_11C(eW._7, "_"))
20182018 else DeleteEntry(kz))) :+ IntegerEntry(kG, if ((eW._8 > kH))
20192019 then 0
20202020 else (kH - eW._8))) :+ IntegerEntry(ed(), (iG + 1))) :+ iH) :+ StringEntry(eg(kE), kF)) :+ StringEntry(bz(kF), av)) :+ StringEntry(ej(kE), av)) :+ IntegerEntry(bD(aL, kF), eW._2)) :+ IntegerEntry(bJ(kF), dB)) :+ IntegerEntry(ei(kF, av), dB)) :+ StringEntry(hD, makeString([ih[bs], eW._4, jM, ih[bv]], ":"))) :+ StringEntry(ac(), makeString(eW._6, "_"))) :+ StringEntry(ad(ae), makeString(eW._10, "_"))) :+ StringEntry(bU(bO), makeString([ae, "L", kF], "_"))) :+ ScriptTransfer(addressFromStringValue(av), 1, bA)), kF)
20212021 }
20222022 }
20232023
20242024
20252025 func kI (av,ko) = kl("M", 3, "SSSS", av, ko, 0)
20262026
20272027
20282028 func kJ (av,ko) = kl("L", 4, "SMM", av, ko, (k * 4))
20292029
20302030
20312031 func kK (av,ko) = kl("XL", 5, "SSSML", av, ko, (k * 47))
20322032
20332033
20342034 func kL (av,ko) = kl("XXL", 6, "LXL", av, ko, (k * 54))
20352035
20362036
20372037 func kM (av,ko) = {
20382038 let g = size(ko)
20392039 if ((4 == g))
20402040 then kI(av, ko)
20412041 else if ((3 == g))
20422042 then kJ(av, ko)
20432043 else if ((5 == g))
20442044 then kK(av, ko)
20452045 else if ((2 == g))
20462046 then kL(av, ko)
20472047 else throw("Unknown merge")
20482048 }
20492049
20502050
20512051 func kN (gy) = if (if ((gy.originCaller != L))
20522052 then valueOrElse(getBoolean(at()), false)
20532053 else false)
20542054 then throw("Contracts are under maintenance")
20552055 else [StringEntry(au(toString(gy.originCaller)), toBase58String(gy.transactionId))]
20562056
20572057
20582058 func kO (av,bI) = {
20592059 let hR = bH(bI)
20602060 let kP = split(value(assetInfo(fromBase58String(bI))).description, "_")
20612061 let ar = kP[T]
20622062 let jc = aq(ar)
20632063 let hT = valueOrElse(getInteger(bJ(bI)), 0)
20642064 let hS = (jc / p)
20652065 let gu = gA(kP[U])
20662066 let hI = hQ(hR, hS, hT)
20672067 let gN = split(hI[bk], "_")
20682068 let jn = bC(bI)
20692069 let jo = getIntegerValue(jn)
20702070 let gE = (aH() - jo)
20712071 if ((0 > gE))
20722072 then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", final = ") + toString(aH())))
20732073 else {
20742074 let js = jb(bI, jc)
20752075 let kQ = gI(gN, gu, gE, hS, js)
20762076 let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
20772077 let kR = ((jc * o) + ((((jc * hT) + jd) * o) / 5))
20782078 let kS = (fraction(kQ._2, aR, o) * aU)
20792079 func kT (eL,hL) = (eL + parseIntValue(hL))
20802080
20812081 let kU = {
20822082 let eN = split(hI[bl], "_")
20832083 let eO = size(eN)
20842084 let eP = 0
20852085 func eQ (eR,eS) = if ((eS >= eO))
20862086 then eR
20872087 else kT(eR, eN[eS])
20882088
20892089 func eT (eR,eS) = if ((eS >= eO))
20902090 then eR
20912091 else throw("List size exceeds 6")
20922092
20932093 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
20942094 }
20952095 let kV = (fraction(kU, (2 * aR), o) * aU)
20962096 let kW = if ((hI[bm] == ""))
20972097 then nil
20982098 else split_4C(hI[bm], "_")
20992099 func hM (eL,hL) = {
21002100 let fv = eL._2
21012101 let kX = parseIntValue(split(bd[fv], "_")[be])
21022102 $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1))
21032103 }
21042104
21052105 let kY = {
21062106 let eN = kW
21072107 let eO = size(eN)
21082108 let eP = $Tuple2(0, 0)
21092109 func hx (eR,eS) = if ((eS >= eO))
21102110 then eR
21112111 else hM(eR, eN[eS])
21122112
21132113 func hy (eR,eS) = if ((eS >= eO))
21142114 then eR
21152115 else throw("List size exceeds 24")
21162116
21172117 hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24)
21182118 }
21192119 let kZ = (fraction(kY._1, (2 * aR), o) * aU)
21202120 $Tuple4(kR, kS, kV, kZ)
21212121 }
21222122 }
21232123
21242124
21252125 func la (av,bO) = {
21262126 let gk = cU(bO)
21272127 let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
21282128 let hD = bT(bO)
21292129 let ih = hC(hD)
21302130 let gn = gc(lb, fr(ih[bv]), true, nil)
21312131 let lc = fw(gn)
21322132 func hK (eL,hL) = (eL + parseIntValue(hL))
21332133
21342134 let jA = {
21352135 let eN = split(ih[bt], "_")
21362136 let eO = size(eN)
21372137 let eP = 0
21382138 func eQ (eR,eS) = if ((eS >= eO))
21392139 then eR
21402140 else hK(eR, eN[eS])
21412141
21422142 func eT (eR,eS) = if ((eS >= eO))
21432143 then eR
21442144 else throw("List size exceeds 6")
21452145
21462146 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
21472147 }
21482148 let kS = (fraction(jA, aR, o) * aU)
21492149 let ld = {
21502150 let eN = split(ih[bu], "_")
21512151 let eO = size(eN)
21522152 let eP = 0
21532153 func hx (eR,eS) = if ((eS >= eO))
21542154 then eR
21552155 else hK(eR, eN[eS])
21562156
21572157 func hy (eR,eS) = if ((eS >= eO))
21582158 then eR
21592159 else throw("List size exceeds 6")
21602160
21612161 hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
21622162 }
21632163 let kV = (fraction(ld, (2 * aR), o) * aU)
21642164 let kW = if ((lc == ""))
21652165 then nil
21662166 else split_4C(lc, "_")
21672167 func hM (eL,hL) = {
21682168 let fv = eL._2
21692169 let kX = parseIntValue(split(bd[fv], "_")[be])
21702170 $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1))
21712171 }
21722172
21732173 let le = {
21742174 let eN = kW
21752175 let eO = size(eN)
21762176 let eP = $Tuple2(0, 0)
21772177 func hA (eR,eS) = if ((eS >= eO))
21782178 then eR
21792179 else hM(eR, eN[eS])
21802180
21812181 func hB (eR,eS) = if ((eS >= eO))
21822182 then eR
21832183 else throw("List size exceeds 24")
21842184
21852185 hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24)
21862186 }
21872187 let kZ = (fraction(le._1, (2 * aR), o) * aU)
21882188 $Tuple3(kS, kV, kZ)
21892189 }
21902190
21912191
21922192 @Callable(gy)
21932193 func constructorV1 (lf) = if ((gy.caller != this))
21942194 then throw("Permission denied")
21952195 else [StringEntry(F(), lf)]
21962196
21972197
21982198
21992199 @Callable(gy)
22002200 func saveInteger (x,eC) = if ((gy.caller != this))
22012201 then throw("saveInteger is not public method")
22022202 else [IntegerEntry(x, eC)]
22032203
22042204
22052205
22062206 @Callable(gy)
22072207 func setBlocked (lg) = if ((gy.caller != this))
22082208 then throw("permission denied")
22092209 else [BooleanEntry(at(), lg)]
22102210
22112211
22122212
22132213 @Callable(gy)
22142214 func stakeLand () = {
22152215 let lh = kN(gy)
22162216 if ((size(gy.payments) != 1))
22172217 then throw("Exactly one payment required")
22182218 else {
22192219 let li = value(gy.payments[0])
22202220 let bA = value(li.assetId)
22212221 let w = toString(gy.caller)
22222222 if ((li.amount != 1))
22232223 then throw((("NFT " + aI) + " token should be attached as payment"))
22242224 else {
22252225 let jm = value(assetInfo(bA))
22262226 if ((jm.issuer != this))
22272227 then throw("Unknown issuer of token")
22282228 else if (!(contains(jm.name, aI)))
22292229 then throw((("Only NFT " + aI) + " tokens are accepted"))
22302230 else {
22312231 let lj = drop(jm.name, 4)
22322232 let eh = if (contains(lj, "XXL"))
22332233 then dropRight(lj, 3)
22342234 else if (contains(lj, "XL"))
22352235 then dropRight(lj, 2)
22362236 else dropRight(lj, 1)
22372237 if (!(isDefined(parseInt(eh))))
22382238 then throw(("Cannot parse land number from " + jm.name))
22392239 else {
22402240 let bI = toBase58String(bA)
22412241 let jn = bC(bI)
22422242 if (isDefined(getInteger(jn)))
22432243 then throw((("NFT " + jm.name) + " is already staked"))
22442244 else {
22452245 let jq = split(jm.description, "_")
22462246 let gu = gA(jq[U])
22472247 let jc = aq(jq[T])
22482248 let hS = (jc / p)
22492249 let eV = gz(gu, hS, 1)
22502250 let lk = ad(jq[V])
22512251 let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_")
22522252 let ll = makeString(gs(kD, gu, hS, 1), "_")
22532253 let kz = af(w)
22542254 let kA = getString(kz)
22552255 let kw = if (isDefined(kA))
22562256 then split_51C(value(kA), "_")
22572257 else nil
22582258 if (containsElement(kw, bI))
22592259 then throw(("Your staked lands already contain " + bI))
22602260 else if ((size(kw) >= aN))
22612261 then throw((("Your already staked max (" + toString(aN)) + ") lands"))
22622262 else {
22632263 let hT = valueOrElse(getInteger(bJ(bI)), 0)
22642264 let kG = ah(w)
22652265 let lm = valueOrElse(getInteger(kG), 0)
22662266 let ln = invoke(P, "onStakeUnstakeLand", [w], nil)
22672267 $Tuple2(([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aI, bI, w), lastBlock.timestamp), StringEntry(kz, makeString_11C((kw :+ bI), "_")), IntegerEntry(kG, (lm + jc)), StringEntry(bz(bI), w), StringEntry(ej(eh), w), IntegerEntry(ei(bI, w), hT), StringEntry(ac(), eV), StringEntry(lk, ll)] ++ lh), ln)
22682268 }
22692269 }
22702270 }
22712271 }
22722272 }
22732273 }
22742274 }
22752275
22762276
22772277
22782278 @Callable(gy)
22792279 func unstakeLand (ji) = {
22802280 let lh = kN(gy)
22812281 if ((size(gy.payments) != 0))
22822282 then throw("No payments required")
22832283 else {
22842284 let av = toString(gy.caller)
22852285 let fQ = jg(av, ep, ji)
22862286 let bI = fQ._2
22872287 let jq = fQ._3
22882288 let kz = af(av)
22892289 let gu = gA(jq[U])
22902290 let jc = aq(jq[T])
22912291 let hS = (jc / p)
22922292 let eV = gz(gu, hS, -1)
22932293 let lk = ad(jq[V])
22942294 let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_")
22952295 let ll = makeString(gs(kD, gu, hS, -1), "_")
22962296 let jN = jD(av, bI, jc, ep)
22972297 let kw = split_51C(valueOrElse(getString(kz), ""), "_")
22982298 let K = indexOf(kw, bI)
22992299 if (!(isDefined(K)))
23002300 then throw(("Your staked lands don't contain " + bI))
23012301 else {
23022302 let cq = lastBlock.timestamp
23032303 let lo = valueOrElse(getInteger(O, bV(av)), 0)
23042304 if ((lo >= cq))
23052305 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lo)))
23062306 else {
23072307 let lp = (valueOrElse(getInteger(P, dK(av)), 0) + l)
23082308 if ((lp > cq))
23092309 then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lp)))
23102310 else {
23112311 let kG = ah(av)
23122312 let kH = valueOrElse(getInteger(kG), 0)
23132313 let lq = if ((jc > kH))
23142314 then 0
23152315 else (kH - jc)
23162316 let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
23172317 $Tuple2(([ScriptTransfer(gy.caller, 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av)), StringEntry(ac(), eV), StringEntry(lk, ll), StringEntry(jN._2, makeString(jN._3, ":")), if ((size(kw) > 1))
23182318 then StringEntry(kz, makeString_11C(removeByIndex(kw, value(K)), "_"))
23192319 else DeleteEntry(kz), IntegerEntry(kG, lq)] ++ lh), ln)
23202320 }
23212321 }
23222322 }
23232323 }
23242324 }
23252325
23262326
23272327
23282328 @Callable(gy)
23292329 func unstakeLandCallback (bI,av) = if ((toString(gy.caller) != j))
23302330 then throw("Permission denied")
23312331 else {
23322332 let lr = kO(av, bI)
23332333 let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
23342334 $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln))
23352335 }
23362336
23372337
23382338
23392339 @Callable(gy)
23402340 func unstakeLandREADONLY (bI,av) = {
23412341 let lr = kO(av, bI)
23422342 $Tuple2(nil, lr)
23432343 }
23442344
23452345
23462346
23472347 @Callable(gy)
23482348 func unstakeLandsFinalizeCallback (av) = if ((toString(gy.caller) != j))
23492349 then throw("Permission denied")
23502350 else $Tuple2([DeleteEntry(af(av)), DeleteEntry(ah(av))], 0)
23512351
23522352
23532353
23542354 @Callable(gy)
23552355 func stakeDuck () = {
23562356 let lh = kN(gy)
23572357 if ((size(gy.payments) != 1))
23582358 then throw("Exactly one payment required")
23592359 else {
23602360 let li = value(gy.payments[0])
23612361 let bA = value(li.assetId)
23622362 let w = toString(gy.caller)
23632363 if ((li.amount != 1))
23642364 then throw((("NFT " + aJ) + " token should be attached as payment"))
23652365 else {
23662366 let jm = value(assetInfo(bA))
23672367 let ls = if (if (c)
23682368 then (jm.issuer == this)
23692369 else false)
23702370 then contains(jm.name, aK)
23712371 else false
23722372 if (if (if ((jm.issuer != dM))
23732373 then (jm.issuer != dN)
23742374 else false)
23752375 then !(ls)
23762376 else false)
23772377 then throw((((("Unknown issuer of " + aJ) + " or ") + aK) + " token"))
23782378 else if (if (!(contains(jm.name, aJ)))
23792379 then !(ls)
23802380 else false)
23812381 then throw((((("Only NFT " + aJ) + " or ") + aK) + " tokens are accepted"))
23822382 else {
23832383 let lt = toBase58String(bA)
23842384 let jn = bC(lt)
23852385 if (isDefined(getInteger(jn)))
23862386 then throw((("NFT " + jm.name) + " is already staked"))
23872387 else if (isDefined(getString(bS(w))))
23882388 then throw(("You already staked one duck: " + jm.name))
23892389 else {
23902390 let lu = bU(lt)
23912391 let cn = getString(lu)
23922392 let hD = bT(lt)
23932393 let lv = getString(hD)
23942394 let iV = cP(lt)
23952395 let iW = dw(valueOrElse(getInteger(cS(lt)), 0))
23962396 let lw = valueOrElse(getInteger(iV), iW)
23972397 ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lt), w), StringEntry(bS(w), lt)] ++ (if (isDefined(cn))
23982398 then nil
23992399 else ([StringEntry(lu, aQ)] ++ (if (isDefined(lv))
24002400 then nil
24012401 else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lw)) ++ lh)))))
24022402 }
24032403 }
24042404 }
24052405 }
24062406 }
24072407
24082408
24092409
24102410 @Callable(gy)
24112411 func unstakeDuck (lt) = {
24122412 let lh = kN(gy)
24132413 if ((size(gy.payments) != 0))
24142414 then throw("No payments required")
24152415 else {
24162416 let bA = fromBase58String(lt)
24172417 let w = toString(gy.caller)
24182418 let jm = value(assetInfo(bA))
24192419 let jn = bC(lt)
24202420 if (!(isDefined(getInteger(jn))))
24212421 then throw((("NFT " + jm.name) + " is not staked"))
24222422 else if (!(isDefined(getString(bS(w)))))
24232423 then throw((("The duck " + jm.name) + " is not staked"))
24242424 else {
24252425 let jp = valueOrErrorMessage(getString(bR(lt)), (("NFT " + jm.name) + " is orphaned"))
24262426 if ((jp != w))
24272427 then throw("Staked NFT is not yours")
24282428 else if (kk(lt))
24292429 then throw("unstakeDuck_checkTournament")
24302430 else {
24312431 let iV = cP(lt)
24322432 let iW = dw(valueOrElse(getInteger(cS(lt)), 0))
24332433 let dH = valueOrElse(getInteger(iV), iW)
24342434 if ((iW > dH))
24352435 then throw((("Please heal your duck to " + toString(iW)) + "hp before unstaking"))
24362436 else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lt)), DeleteEntry(bR(lt)), DeleteEntry(bF(aJ, lt, w)), DeleteEntry(bS(w))] ++ lh)
24372437 }
24382438 }
24392439 }
24402440 }
24412441
24422442
24432443
24442444 @Callable(gy)
24452445 func unstakeDuckCallback (bO,av) = if ((toString(gy.caller) != j))
24462446 then throw("Permission denied")
24472447 else {
24482448 let lr = la(av, bO)
24492449 $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bO)), DeleteEntry(bC(bO)), DeleteEntry(bR(bO)), DeleteEntry(bF(aJ, bO, av)), DeleteEntry(bS(av))], lr)
24502450 }
24512451
24522452
24532453
24542454 @Callable(gy)
24552455 func unstakeDuckREADONLY (bO,av) = {
24562456 let lr = la(av, bO)
24572457 $Tuple2(nil, lr)
24582458 }
24592459
24602460
24612461
24622462 @Callable(gy)
24632463 func claimRes (eC,lx) = {
24642464 let lh = kN(gy)
24652465 if ((size(gy.payments) != 0))
24662466 then throw("No payments required")
24672467 else {
24682468 let av = toString(gy.originCaller)
24692469 let fd = jr(av, eC, ep, lx)
24702470 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
24712471 $Tuple2(((((fd._1 ++ jZ(bO, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._3[bt])
24722472 }
24732473 }
24742474
24752475
24762476
24772477 @Callable(gy)
24782478 func claimResToWH (eC,lx) = {
24792479 let lh = kN(gy)
24802480 if ((size(gy.payments) != 0))
24812481 then throw("No payments required")
24822482 else {
24832483 let av = toString(gy.originCaller)
24842484 let fd = jr(av, eC, eo, lx)
24852485 $Tuple2(((((fd._1 ++ ka(av, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._5[bk])
24862486 }
24872487 }
24882488
24892489
24902490
24912491 @Callable(gy)
24922492 func flight (iK,iL) = {
24932493 let lh = kN(gy)
24942494 if ((size(gy.payments) != 0))
24952495 then throw("No payments required")
24962496 else {
24972497 let bW = toString(gy.caller)
24982498 let hg = iJ(bW, iK, iL)
24992499 let iP = hg._1
25002500 let bO = hg._2
25012501 let lu = bU(bO)
25022502 let jk = valueOrElse(getString(lu), aQ)
25032503 let iR = hg._4
25042504 if ((iR == jk))
25052505 then throw("You can't fly to the same location")
25062506 else {
25072507 let cy = split(iR, "_")
25082508 let ly = (cy[bx] == "T")
25092509 let lz = (cy[bx] == "D")
25102510 let gk = cU(bO)
25112511 let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
25122512 let lB = fe(lA, hg._5)
25132513 let lC = lB._1
25142514 let lD = lB._2
25152515 let hv = lB._3
25162516 let lE = if (!(cs(Q, jk)))
25172517 then if (ly)
25182518 then cw(jk, iR, 5)
25192519 else if (!(lz))
25202520 then if ((iP > 0))
25212521 then $Tuple2(iR, iP)
25222522 else $Tuple2(jk, 0)
25232523 else if ((iP > 0))
25242524 then {
25252525 let ak = invoke(this, "processDelivery", [bO], nil)
25262526 if ((ak == ak))
25272527 then $Tuple2(jk, iP)
25282528 else throw("Strict value is not equal to itself.")
25292529 }
25302530 else $Tuple2(jk, 0)
25312531 else if (cm(Q, jk))
25322532 then if (!(cm(Q, iR)))
25332533 then throw("Your duck is taking part in the tournament")
25342534 else {
25352535 let lF = parseIntValue(cy[by])
25362536 let lG = split(jk, "_")
25372537 let co = valueOrElse(getInteger(Q, bZ), 0)
25382538 if ((lF != (parseIntValue(lG[by]) + 1)))
25392539 then cw(jk, iR, 7)
25402540 else if ((iP > 0))
25412541 then {
25422542 let lH = valueOrElse(getInteger(Q, cd(co, bO)), 0)
25432543 let lI = if ((lF > lH))
25442544 then invoke(Q, "saveDuckResult", [bO, lF], nil)
25452545 else unit
25462546 if ((lI == lI))
25472547 then $Tuple2(iR, iP)
25482548 else throw("Strict value is not equal to itself.")
25492549 }
25502550 else $Tuple2(jk, 0)
25512551 }
25522552 else throw(("Unknown curLocation:" + jk))
25532553 let lJ = lE._1
25542554 let lK = lE._2
25552555 $Tuple2(((([StringEntry(lu, lJ), StringEntry(gk, lC), IntegerEntry(cP(bO), lK)] ++ lh) ++ (if (lD)
25562556 then [StringEntry(da(bO), "0_0_0_0_0")]
25572557 else nil)) ++ jZ(bO, if ((iP > 0))
25582558 then dj
25592559 else dk)._1), hg._3)
25602560 }
25612561 }
25622562 }
25632563
25642564
25652565
25662566 @Callable(gy)
25672567 func heal (lL,lM,lN) = {
25682568 let lh = kN(gy)
25692569 if (if (if ((0 > lL))
25702570 then true
25712571 else (0 > lM))
25722572 then true
25732573 else (0 > lN))
25742574 then throw("Quantity cannot be negative")
25752575 else {
25762576 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
25772577 if (kk(bO))
25782578 then throw("heal_checkTournament")
25792579 else {
25802580 let lO = [lL, lM, lN]
25812581 let iV = cP(bO)
25822582 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
25832583 let lP = valueOrElse(getInteger(iV), iW)
25842584 if ((lP >= iW))
25852585 then throw((("HP should be < " + toString(iW)) + " to heal"))
25862586 else {
25872587 let hD = bT(bO)
25882588 let ih = hC(hD)
25892589 let lQ = if ((ih[bv] == ""))
25902590 then nil
25912591 else split_4C(ih[bv], "_")
25922592 func lR (eL,cv) = {
25932593 let am = eL._2
25942594 let gX = if ((size(lQ) > am))
25952595 then parseIntValue(lQ[am])
25962596 else 0
25972597 if ((3 > am))
25982598 then {
25992599 let lS = lO[am]
26002600 if ((lS > gX))
26012601 then throw(((("You have only " + toString(gX)) + " of ") + ba[am]))
26022602 else $Tuple3((eL._1 :+ toString((gX - lS))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lS)))
26032603 }
26042604 else $Tuple3((eL._1 :+ toString(gX)), (am + 1), eL._3)
26052605 }
26062606
26072607 let fd = {
26082608 let eN = bd
26092609 let eO = size(eN)
26102610 let eP = $Tuple3(nil, 0, 0)
26112611 func eQ (eR,eS) = if ((eS >= eO))
26122612 then eR
26132613 else lR(eR, eN[eS])
26142614
26152615 func eT (eR,eS) = if ((eS >= eO))
26162616 then eR
26172617 else throw("List size exceeds 50")
26182618
26192619 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
26202620 }
26212621 let lT = min([iW, (lP + fd._3)])
26222622 $Tuple2((([IntegerEntry(iV, lT), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lL + lM) + lN)))._1), lT)
26232623 }
26242624 }
26252625 }
26262626 }
26272627
26282628
26292629
26302630 @Callable(gy)
26312631 func healES () = {
26322632 let lh = kN(gy)
26332633 if ((size(gy.payments) != 1))
26342634 then throw("Exactly one payment required")
26352635 else {
26362636 let li = value(gy.payments[0])
26372637 if ((li.assetId != h))
26382638 then throw("Allowed USDT payment only!")
26392639 else {
26402640 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
26412641 if (kk(bO))
26422642 then throw("healES_checkTournament")
26432643 else {
26442644 let iV = cP(bO)
26452645 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
26462646 let lP = valueOrElse(getInteger(iV), iW)
26472647 if ((lP > 0))
26482648 then throw("HP should be 0 to call Emergency Service")
26492649 else {
26502650 let hD = bT(bO)
26512651 let ih = hC(hD)
26522652 let lQ = if ((ih[bv] == ""))
26532653 then nil
26542654 else split_4C(ih[bv], "_")
26552655 let lU = if ((size(lQ) > 0))
26562656 then parseIntValue(lQ[0])
26572657 else 0
26582658 let lV = if ((size(lQ) > 1))
26592659 then parseIntValue(lQ[1])
26602660 else 0
26612661 let lW = if ((size(lQ) > 2))
26622662 then parseIntValue(lQ[2])
26632663 else 0
26642664 if (if (if ((lU > 0))
26652665 then true
26662666 else (lV > 0))
26672667 then true
26682668 else (lW > 0))
26692669 then throw("You have to use own Medical Kit")
26702670 else {
26712671 let lX = getString(N, bX())
26722672 let lY = if (isDefined(lX))
26732673 then split_4C(value(lX), "_")
26742674 else nil
26752675 let lZ = if ((size(lY) > 0))
26762676 then parseIntValue(lY[0])
26772677 else 0
26782678 if ((0 >= lZ))
26792679 then throw("There are no Medical Kits L1 at Emergency Service storage")
26802680 else {
26812681 let lT = (lP + parseIntValue(split(bd[0], "_")[bf]))
26822682 let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_")
26832683 let cv = split(bd[0], "_")
26842684 let mb = cu(cv)
26852685 let mc = fraction((mb * aS), aR, (o * bi))
26862686 if ((li.amount != mc))
26872687 then throw(("Payment attached should be " + toString(mc)))
26882688 else {
26892689 let fd = ai(invoke(N, "updateEsStorage", [ma], [AttachedPayment(h, mc)]))
26902690 $Tuple2(((lh :+ IntegerEntry(iV, lT)) ++ jZ(bO, dn)._1), fd)
26912691 }
26922692 }
26932693 }
26942694 }
26952695 }
26962696 }
26972697 }
26982698 }
26992699
27002700
27012701
27022702 @Callable(gy)
27032703 func updateBackpack (bO,md) = if ((gy.caller != N))
27042704 then throw("permission denied")
27052705 else $Tuple2([StringEntry(bT(bO), md)], md)
27062706
27072707
27082708
27092709 @Callable(gy)
27102710 func commitForRandom () = {
27112711 let lh = kN(gy)
27122712 let me = (height + aa)
27132713 let av = toString(gy.caller)
27142714 $Tuple2(([IntegerEntry(ab(av), me)] ++ lh), me)
27152715 }
27162716
27172717
27182718
27192719 @Callable(gy)
27202720 func revealRandom (aD) = {
27212721 let lh = kN(gy)
27222722 let av = toString(gy.caller)
27232723 let mf = ab(av)
27242724 let me = valueOrErrorMessage(getInteger(mf), "You have to commitForRandom() first!")
27252725 if ((me > height))
27262726 then throw(("Random number is not ready yet, wait until height = " + toString(me)))
27272727 else {
27282728 let aF = value(value(blockInfoByHeight(me)).vrf)
27292729 let aE = toBytes(valueOrElse(getString(au(av)), ""))
27302730 let mg = aC(aD, aE, aF)
27312731 $Tuple2(([DeleteEntry(mf)] ++ lh), mg)
27322732 }
27332733 }
27342734
27352735
27362736
27372737 @Callable(gy)
27382738 func buySLand () = {
27392739 let lh = kN(gy)
27402740 if ((size(gy.payments) != 1))
27412741 then throw("Exactly one payment required")
27422742 else {
27432743 let li = value(gy.payments[0])
27442744 if ((li.assetId != h))
27452745 then throw("Allowed USDT payment only!")
27462746 else if ((li.amount != dT))
27472747 then throw(("Payment attached should be " + toString(dT)))
27482748 else {
27492749 let fd = iC(gy.caller, gy.transactionId)
27502750 let mh = al(invoke(R, "burnAcres", [dV], nil))
27512751 $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh))
27522752 }
27532753 }
27542754 }
27552755
27562756
27572757
27582758 @Callable(gy)
27592759 func expedition (iK,iL) = {
27602760 let lh = kN(gy)
27612761 if ((size(gy.payments) != 0))
27622762 then throw("No payments required")
27632763 else {
27642764 let bW = toString(gy.caller)
27652765 let hg = iJ(bW, iK, iL)
27662766 let bO = hg._2
27672767 let iV = cP(bO)
27682768 let hD = bT(bO)
27692769 let ih = hC(hD)
27702770 let jK = split(ih[bu], "_")
27712771 let jM = makeString(eX(true, jK, dS), "_")
27722772 let gk = cU(bO)
27732773 let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
27742774 let mi = fe(lA, hg._5)
27752775 let lC = mi._1
27762776 let lD = mi._2
27772777 let hv = mi._3
27782778 let mj = iC(gy.caller, gy.transactionId)
27792779 let iI = mj._2._1
27802780 let fd = if ((0 >= hg._1))
27812781 then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lC)], "", 0)
27822782 else $Tuple3((mj._1 ++ (if (lD)
27832783 then [StringEntry(da(bO), "0_0_0_0_0")]
27842784 else ((((nil :+ StringEntry(bU(bO), makeString([mj._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lC)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3)
27852785 if (kk(bO))
27862786 then throw("expedition_checkTournament")
27872787 else {
27882788 let mh = al(invoke(R, "burnAcres", [dV], nil))
27892789 $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mh))
27902790 }
27912791 }
27922792 }
27932793
27942794
27952795
27962796 @Callable(gy)
27972797 func buySLandForAcres () = {
27982798 let lh = kN(gy)
27992799 if ((size(gy.payments) != 1))
28002800 then throw("exactly 1 payment must be attached")
28012801 else {
28022802 let li = gy.payments[0]
28032803 let fk = li.amount
28042804 if (if (!(isDefined(li.assetId)))
28052805 then true
28062806 else (value(li.assetId) != Z))
28072807 then throw("ACRES payments only!")
28082808 else if ((fk != dV))
28092809 then throw(("Payment attached should be " + toString(dV)))
28102810 else {
28112811 let fd = iC(gy.caller, gy.transactionId)
28122812 let mh = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)]))
28132813 $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh))
28142814 }
28152815 }
28162816 }
28172817
28182818
28192819
28202820 @Callable(gy)
28212821 func upgradeInfra (bI) = {
28222822 let lh = kN(gy)
28232823 if ((size(gy.payments) != 0))
28242824 then throw("No payments required")
28252825 else {
28262826 let fd = jE(true, gy.caller, 0, bI)
28272827 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
28282828 $Tuple2(((fd._1 ++ lh) ++ jZ(bO, fraction(dq, fd._3, o))._1), fd._2)
28292829 }
28302830 }
28312831
28322832
28332833
28342834 @Callable(gy)
28352835 func activateArtifact (mk,ml) = {
28362836 let lh = kN(gy)
28372837 if ((size(gy.payments) != 0))
28382838 then throw("No payments required")
28392839 else {
28402840 let av = toString(gy.caller)
28412841 let fd = {
28422842 let g = mk
28432843 if (("PRESALE" == g))
28442844 then ki(av, ml)
28452845 else if (("ONBOARD" == g))
28462846 then kb(av)
28472847 else throw("Unknown artifact")
28482848 }
28492849 (fd ++ lh)
28502850 }
28512851 }
28522852
28532853
28542854
28552855 @Callable(gy)
28562856 func mergeLands (ko) = {
28572857 let lh = kN(gy)
28582858 if ((size(gy.payments) != 0))
28592859 then throw("No payments required")
28602860 else {
28612861 let fd = kM(toString(gy.caller), ko)
28622862 $Tuple2(((fd._1 ++ lh) ++ ka(toString(gy.caller), dr)._1), fd._2)
28632863 }
28642864 }
28652865
28662866
28672867
28682868 @Callable(gy)
28692869 func cargoExchange (mm,bI) = {
28702870 let lh = kN(gy)
28712871 if ((size(gy.payments) != 0))
28722872 then throw("No payments required")
28732873 else {
28742874 let ig = split_4C(mm, ":")
28752875 let av = toString(gy.originCaller)
28762876 let jm = value(assetInfo(fromBase58String(bI)))
28772877 let jn = bC(bI)
28782878 if (!(isDefined(getInteger(jn))))
28792879 then throw((jm.name + " is not staked"))
28802880 else {
28812881 let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
28822882 if ((jp != av))
28832883 then throw((aI + " is not yours"))
28842884 else {
28852885 let hS = (aq(split(jm.description, "_")[T]) / p)
28862886 let hT = valueOrElse(getInteger(bJ(bI)), 0)
28872887 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
28882888 let jk = valueOrElse(getString(bU(bO)), aQ)
28892889 let cp = split(value(jk), "_")
28902890 if ((cp[bx] != "L"))
28912891 then throw((("Duck location type is " + cp[bx]) + ", but should be L"))
28922892 else if ((cp[by] != bI))
28932893 then throw(("Duck should be on the land " + bI))
28942894 else {
28952895 let hR = bH(bI)
28962896 let hI = hQ(hR, hS, hT)
28972897 let hD = bT(bO)
28982898 let ih = hC(hD)
28992899 let fd = if(ig, hI, ih)
29002900 let hZ = split(hI[bn], "_")
29012901 let jB = (parseIntValue(hZ[bp]) + fd._7)
29022902 let jC = (parseIntValue(hZ[bq]) - fd._7)
29032903 ([StringEntry(hD, makeString_2C([ih[bs], fd._4, fd._5, fd._6], ":")), StringEntry(hR, makeString_2C([hI[bj], fd._1, fd._2, fd._3, makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")], ":"))] ++ lh)
29042904 }
29052905 }
29062906 }
29072907 }
29082908 }
29092909
29102910
29112911
29122912 @Callable(gy)
29132913 func saveWarehouse (hV,bI) = if ((gy.caller != N))
29142914 then throw("Access denied")
29152915 else {
29162916 let hR = bH(bI)
29172917 let hW = split_4C(hV, ":")
29182918 if ((size(hW) != 5))
29192919 then throw("warehouse string should contain 4 ':' separators")
29202920 else {
29212921 let mn = split(hW[bn], "_")[bo]
29222922 let jB = hH(hW)
29232923 let mo = hF(hW[bj])
29242924 let jC = ((mo - parseIntValue(mn)) - jB)
29252925 if ((0 > jC))
29262926 then throw("Operation leads to negative free warehouse space")
29272927 else {
29282928 let mp = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mn, toString(jB), toString(jC), toString(mo)], "_")], ":")
29292929 $Tuple2([StringEntry(hR, mp)], mp)
29302930 }
29312931 }
29322932 }
29332933
29342934
29352935
29362936 @Callable(gy)
29372937 func setCustomName (bA,ky,bE) = {
29382938 let lh = kN(gy)
29392939 if ((size(gy.payments) != 1))
29402940 then throw("Exactly one payment required")
29412941 else {
29422942 let li = value(gy.payments[0])
29432943 if ((li.assetId != h))
29442944 then throw("Allowed USDT payment only!")
29452945 else if ((li.amount != dP))
29462946 then throw(("Payment should be " + toString(dP)))
29472947 else if (contains(ky, "__"))
29482948 then throw(("Name should not contain '__': " + ky))
29492949 else if ((size(ky) > dQ))
29502950 then throw(("Name too long, maxLength=" + toString(dQ)))
29512951 else {
29522952 let av = toString(gy.originCaller)
29532953 let mq = {
29542954 let g = bE
29552955 if (("ACCOUNT" == g))
29562956 then {
29572957 let mr = el(ky)
29582958 let ms = getString(mr)
29592959 if (isDefined(ms))
29602960 then throw(("Name already registered: " + ky))
29612961 else {
29622962 let mt = bL(av)
29632963 let mu = getString(mt)
29642964 let mv = if (isDefined(mu))
29652965 then [DeleteEntry(el(value(mu)))]
29662966 else nil
29672967 (((mv :+ StringEntry(mt, ky)) :+ StringEntry(mr, av)) ++ ka(av, do)._1)
29682968 }
29692969 }
29702970 else if (("LAND" == g))
29712971 then {
29722972 let jm = value(assetInfo(fromBase58String(bA)))
29732973 let jn = bC(bA)
29742974 if (!(isDefined(getInteger(jn))))
29752975 then throw((jm.name + " is not staked"))
29762976 else {
29772977 let jp = valueOrErrorMessage(getString(bz(bA)), (("NFT " + jm.name) + " is orphaned"))
29782978 if ((jp != av))
29792979 then throw((aI + " is not yours"))
29802980 else {
29812981 let mr = ee(ky)
29822982 let ms = getString(mr)
29832983 if (isDefined(ms))
29842984 then throw(("Name already registered: " + ky))
29852985 else {
29862986 let mw = bB(bA)
29872987 let mu = getString(mw)
29882988 let mv = if (isDefined(mu))
29892989 then [DeleteEntry(ee(value(mu)))]
29902990 else nil
29912991 (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ ka(av, do)._1)
29922992 }
29932993 }
29942994 }
29952995 }
29962996 else if (("DUCK" == g))
29972997 then {
29982998 let jm = value(assetInfo(fromBase58String(bA)))
29992999 let jn = bC(bA)
30003000 if (if (!(isDefined(getInteger(jn))))
30013001 then true
30023002 else !(isDefined(getString(bS(av)))))
30033003 then throw((jm.name + " is not staked"))
30043004 else {
30053005 let jp = valueOrErrorMessage(getString(bR(bA)), (("NFT " + jm.name) + " is orphaned"))
30063006 if ((jp != av))
30073007 then throw((aJ + " is not yours"))
30083008 else {
30093009 let mr = ek(ky)
30103010 let ms = getString(mr)
30113011 if (isDefined(ms))
30123012 then throw(("Name already registered: " + ky))
30133013 else {
30143014 let mw = bK(bA)
30153015 let mu = getString(mw)
30163016 let mv = if (isDefined(mu))
30173017 then [DeleteEntry(ek(value(mu)))]
30183018 else nil
30193019 (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ jZ(bA, do)._1)
30203020 }
30213021 }
30223022 }
30233023 }
30243024 else throw("Unknown entity type")
30253025 }
30263026 $Tuple2(((mq :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0)
30273027 }
30283028 }
30293029 }
30303030
30313031
30323032
30333033 @Callable(gy)
30343034 func setReferrals (mx,my) = if ((gy.callerPublicKey != f))
30353035 then throw("Permission denied")
30363036 else {
30373037 let lh = kN(gy)
30383038 if ((size(gy.payments) != 0))
30393039 then throw("No payments required")
30403040 else if (!(isDefined(addressFromString(mx))))
30413041 then throw(("Invalid address: " + mx))
30423042 else {
30433043 let mz = addressFromString(my)
30443044 if (!(isDefined(mz)))
30453045 then throw(("Invalid address: " + my))
30463046 else {
30473047 let mA = getString(au(mx))
30483048 if (!(isDefined(mA)))
30493049 then throw("oldPlayer didn't do any tx in game")
30503050 else if ((0 >= wavesBalance(value(mz)).available))
30513051 then throw("newPlayer has no WAVES")
30523052 else {
30533053 let mB = em()
30543054 let mC = getString(mB)
30553055 let mD = if (isDefined(mC))
30563056 then split_4C(value(mC), "_")
30573057 else nil
30583058 if (containsElement(mD, my))
30593059 then throw((my + " is not newbie (already has referrals)"))
30603060 else {
30613061 let kc = bM(my)
30623062 let kd = getString(kc)
30633063 if (if (isDefined(kd))
30643064 then isDefined(addressFromString(value(kd)))
30653065 else false)
30663066 then throw(((my + " already has refBy: ") + value(kd)))
30673067 else {
30683068 let mE = bQ(mx)
30693069 let mF = getString(mE)
30703070 let mG = if (isDefined(mF))
30713071 then split_4C(value(mF), "_")
30723072 else nil
30733073 if (containsElement(mG, my))
30743074 then throw((((mx + " already contains ") + my) + " within referrals"))
30753075 else {
30763076 let mH = makeString_2C((mG :+ my), "_")
30773077 let mI = if (containsElement(mD, mx))
30783078 then value(mC)
30793079 else makeString_2C((mD :+ mx), "_")
30803080 $Tuple2(([StringEntry(kc, mx), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lh), 0)
30813081 }
30823082 }
30833083 }
30843084 }
30853085 }
30863086 }
30873087 }
30883088
30893089
30903090
30913091 @Callable(gy)
30923092 func distributePoints (mJ,mK,mL,mM,mN) = {
30933093 let lh = kN(gy)
30943094 if ((size(gy.payments) != 0))
30953095 then throw("No payments required")
30963096 else {
30973097 let av = toString(gy.originCaller)
30983098 let mO = an(invoke(P, "checkWlgXpREADONLY", [av], nil))
30993099 let mP = al(mO[1])
31003100 let mQ = if ((0 >= mP))
31013101 then $Tuple2(0, nil)
31023102 else {
31033103 let jX = al(invoke(P, "takeWlgXp", [av], nil))
31043104 if ((jX == jX))
31053105 then $Tuple2(mP, [IntegerEntry(cW(av), al(mO[0])), IntegerEntry(cV(av), al(mO[2]))])
31063106 else throw("Strict value is not equal to itself.")
31073107 }
31083108 let mR = mQ._1
31093109 let mS = mQ._2
31103110 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
31113111 let mT = cX(av)
31123112 let mU = (valueOrElse(getInteger(mT), 0) + mR)
31133113 let mV = cT(bO)
31143114 let mW = valueOrElse(getInteger(mV), 0)
31153115 let mX = (mU + mW)
31163116 let mY = ((((mJ + mK) + mL) + mM) + mN)
31173117 if ((mY > mX))
31183118 then throw((("There are only " + toString(mX)) + " free points to distribute"))
31193119 else {
31203120 let mZ = cQ(bO)
31213121 let dF = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_")
31223122 let na = (mU - mY)
31233123 $Tuple2((([IntegerEntry(mT, if ((0 > na))
31243124 then 0
31253125 else na), IntegerEntry(mV, if ((0 > na))
31263126 then (mW + na)
31273127 else mW), StringEntry(mZ, makeString([toString((parseIntValue(dF[cF]) + mJ)), toString((parseIntValue(dF[cG]) + mK)), toString((parseIntValue(dF[cH]) + mL)), toString((parseIntValue(dF[cI]) + mM)), toString((parseIntValue(dF[cJ]) + mN))], "_"))] ++ lh) ++ mS), 0)
31283128 }
31293129 }
31303130 }
31313131
31323132
31333133
31343134 @Callable(gy)
31353135 func splitByGlobalWeightsREADONLY (eC) = $Tuple2(nil, eU(eC))
31363136
31373137
31383138
31393139 @Callable(gy)
31403140 func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gB) = {
31413141 let gu = gA(gB)
31423142 $Tuple2(nil, $Tuple2(eU(nb), eF(nc, gu)))
31433143 }
31443144
31453145
31463146
31473147 @Callable(gy)
31483148 func getBackpackREADONLY (bO) = $Tuple2(nil, makeString(hC(bT(bO)), ":"))
31493149
31503150
31513151
31523152 @Callable(gy)
31533153 func getWarehouseREADONLY (bI) = {
31543154 let jm = value(assetInfo(fromBase58String(bI)))
31553155 let hS = (aq(split(jm.description, "_")[T]) / p)
31563156 let hT = valueOrElse(getInteger(bJ(bI)), 0)
31573157 $Tuple2(nil, makeString_2C(hQ(bH(bI), hS, hT), ":"))
31583158 }
31593159
31603160
31613161
31623162 @Callable(gy)
31633163 func saveLastTx () = if (!(containsElement([P, N, Q, R], gy.caller)))
31643164 then throw("Access denied")
31653165 else $Tuple2(kN(gy), 42)
31663166
31673167
31683168
31693169 @Callable(gy)
31703170 func updateDuckStats (bO,jX) = if ((gy.caller != N))
31713171 then throw("Access denied")
31723172 else jZ(bO, jX)
31733173
31743174
31753175
31763176 @Callable(gy)
31773177 func updateAccStats (av,jX) = if (!(containsElement([P, N, R], gy.caller)))
31783178 then throw("Access denied")
31793179 else ka(av, jX)
31803180
31813181
31823182
31833183 @Callable(gy)
31843184 func equipDuck (nd) = {
31853185 let lh = kN(gy)
31863186 if ((size(gy.payments) != 0))
31873187 then throw("No payments required")
31883188 else {
31893189 let av = toString(gy.originCaller)
31903190 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
31913191 if (kk(bO))
31923192 then throw("equipDuck_checkTournament")
31933193 else {
31943194 let gk = cU(bO)
31953195 let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
31963196 let hD = bT(bO)
31973197 let ih = hC(hD)
31983198 let lC = split(nd, "_")
31993199 if ((size(lC) != cL))
32003200 then throw("Wrong equipment string")
32013201 else {
32023202 let gn = gc(lb, fr(ih[bv]), true, nil)
32033203 let go = split(lC[cK], ";")[1]
32043204 let dD = if ((go == ""))
32053205 then 0
32063206 else {
32073207 let gp = split(go, ",")[0]
32083208 if ((gp == ""))
32093209 then 0
32103210 else {
32113211 let fG = split(gp, ":")
32123212 let K = fG[0]
32133213 let gq = fG[1]
32143214 if (if (if (if (if ((K == "06"))
32153215 then true
32163216 else (K == "07"))
32173217 then true
32183218 else (K == "08"))
32193219 then (gq != "")
32203220 else false)
32213221 then (parseIntValue(gq) > 0)
32223222 else false)
32233223 then parseIntValue(split(bd[parseIntValue(K)], "_")[bf])
32243224 else 0
32253225 }
32263226 }
32273227 let fX = dC(this, bO, dD, true)
32283228 let gr = gc(lC, gn, false, fX)
32293229 let lc = fw(gr)
32303230 $Tuple2(([StringEntry(gk, nd), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0)
32313231 }
32323232 }
32333233 }
32343234 }
32353235
32363236
32373237
32383238 @Callable(gy)
32393239 func initDuckTourAttempt (bO) = if ((gy.caller != Q))
32403240 then throw("Access denied")
32413241 else {
32423242 let iV = cP(bO)
32433243 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
32443244 let lw = valueOrElse(getInteger(iV), iW)
32453245 let ne = bU(bO)
32463246 let jk = valueOrElse(getString(ne), aQ)
32473247 let co = valueOrElse(getInteger(Q, bZ), 0)
32483248 let nf = (toString(co) + "_T_0")
32493249 $Tuple2([IntegerEntry(cY(bO), lw), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(ne, nf)], nf)
32503250 }
32513251
32523252
32533253
32543254 @Callable(gy)
32553255 func breakAttempt () = {
32563256 let lh = kN(gy)
32573257 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
32583258 let ne = bU(bO)
32593259 let jk = valueOrElse(getString(ne), aQ)
32603260 if ((split(jk, "_")[bx] != "T"))
32613261 then throw("Your duck is not in the tournament")
32623262 else {
32633263 let ng = getIntegerValue(cY(bO))
32643264 let nh = getStringValue(cZ(bO))
32653265 $Tuple2(((lh :+ IntegerEntry(cP(bO), ng)) :+ StringEntry(ne, nh)), jk)
32663266 }
32673267 }
32683268
32693269
32703270
32713271 @Callable(gy)
32723272 func breakAttemptCallback () = if ((gy.caller != Q))
32733273 then throw("Access denied")
32743274 else {
32753275 let bO = valueOrErrorMessage(getString(bS(toString(gy.originCaller))), "You don't have a duck staked")
32763276 $Tuple2([IntegerEntry(cP(bO), getIntegerValue(cY(bO))), StringEntry(bU(bO), getStringValue(cZ(bO)))], "breakAttemptCallback")
32773277 }
32783278
32793279
32803280
32813281 @Callable(gy)
32823282 func exitTournamentInternal (bO) = if ((gy.caller != this))
32833283 then throw("Access denied")
32843284 else {
32853285 let ng = getIntegerValue(cY(bO))
32863286 let nh = getStringValue(cZ(bO))
32873287 $Tuple2([IntegerEntry(cP(bO), ng), StringEntry(bU(bO), nh)], false)
32883288 }
32893289
32903290
32913291
32923292 @Callable(gy)
32933293 func processDelivery (bO) = if ((gy.caller != this))
32943294 then throw("Access denied")
32953295 else {
32963296 let av = toString(gy.originCaller)
32973297 let ni = valueOrElse(getInteger(N, bY), 0)
32983298 if ((aT > ni))
32993299 then throw(("Delivery is not available, fund=" + aw(ni, 6)))
33003300 else {
33013301 let cq = lastBlock.timestamp
33023302 let nj = dg(av)
33033303 let nk = valueOrElse(getInteger(dh(av)), 0)
33043304 let nl = (cq / dJ)
33053305 let fM = if ((nk == nl))
33063306 then valueOrElse(getInteger(nj), 0)
33073307 else 0
33083308 let nm = valueOrElse(getInteger(R, dL(av)), 0)
33093309 let nn = (aY + (nm / aZ))
33103310 if ((fM >= nn))
33113311 then throw((("You already used " + toString(nn)) + " delivery attempts for today"))
33123312 else {
33133313 let no = df(bO)
33143314 let np = invoke(N, "sendDeliveryReward", [av], nil)
33153315 $Tuple2([IntegerEntry(nj, (fM + 1)), IntegerEntry(dh(av), nl), IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))], np)
33163316 }
33173317 }
33183318 }
33193319
33203320
33213321
33223322 @Callable(gy)
33233323 func robLand (iK,iL) = {
33243324 let lh = kN(gy)
33253325 if ((size(gy.payments) != 1))
33263326 then throw("exactly 1 payment must be attached")
33273327 else {
33283328 let li = gy.payments[0]
33293329 let nq = li.amount
33303330 if (if (!(isDefined(li.assetId)))
33313331 then true
33323332 else (value(li.assetId) != X))
33333333 then throw("WLGOLD payments only!")
33343334 else if ((nq != aV))
33353335 then throw((("Payment should be " + aw(aV, 8)) + " WLGOLD"))
33363336 else {
33373337 let av = toString(gy.caller)
33383338 if (!(sigVerify_8Kb(iK, iL, f)))
33393339 then throw("signature does not match")
33403340 else {
33413341 let fj = split_4C(toUtf8String(iK), ";")
33423342 let nr = split_4C(fj[0], "|")
33433343 let iN = split(nr[ev], "_")
33443344 let iO = parseIntValue(iN[0])
33453345 let iP = parseIntValue(iN[1])
33463346 let iZ = nr[ew]
33473347 let ns = split(fj[1], "|")
33483348 let nt = ns[ex]
33493349 if ((nt != "B"))
33503350 then throw("Only bank robbery is supported")
33513351 else {
33523352 let iS = parseIntValue(ns[ez])
33533353 if (if ((iS > (lastBlock.timestamp + dO)))
33543354 then true
33553355 else ((lastBlock.timestamp - dO) > iS))
33563356 then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
33573357 else {
33583358 let iT = ns[ey]
33593359 let iU = valueOrElse(getString(au(av)), "")
33603360 if ((iU != iT))
33613361 then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
33623362 else {
33633363 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
33643364 let gk = cU(bO)
33653365 let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
33663366 let nu = fe(lA, iZ)
33673367 let lC = nu._1
33683368 let lD = nu._2
33693369 let nv = nu._3
33703370 let jk = valueOrElse(getString(bU(bO)), aQ)
33713371 if (cm(Q, jk))
33723372 then throw("Your duck is taking part in the tournament")
33733373 else {
33743374 let cq = lastBlock.timestamp
33753375 let nj = dd(av)
33763376 let nk = valueOrElse(getInteger(de(av)), 0)
33773377 let nl = (cq / dJ)
33783378 let fM = if ((nk == nl))
33793379 then valueOrElse(getInteger(nj), 0)
33803380 else 0
33813381 let nm = valueOrElse(getInteger(R, dL(av)), 0)
33823382 let nw = (aW + (nm / aX))
33833383 if ((fM >= nw))
33843384 then throw((("You already used " + toString(nw)) + " robbery attempts for today"))
33853385 else {
33863386 let no = dc(bO)
33873387 let nx = if ((iP > 0))
33883388 then {
33893389 let ni = assetBalance(this, X)
33903390 let ny = if (nv)
33913391 then (2 * aV)
33923392 else (5 * aV)
33933393 if ((ny > ni))
33943394 then throw(((("Robbery is not available, funds = " + aw(ni, 8)) + " WLGOLD, required = ") + aw(ny, 8)))
33953395 else [ScriptTransfer(gy.caller, ny, X)]
33963396 }
33973397 else nil
33983398 $Tuple2((((((((((lh ++ nx) ++ (if (lD)
33993399 then [StringEntry(da(bO), "0_0_0_0_0")]
34003400 else nil)) ++ jZ(bO, if ((iP > 0))
34013401 then dl
34023402 else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nj, (fM + 1))) :+ IntegerEntry(de(av), nl)) :+ IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))) :+ StringEntry(gk, lC)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0)
34033403 }
34043404 }
34053405 }
34063406 }
34073407 }
34083408 }
34093409 }
34103410 }
34113411 }
34123412
34133413
34143414
34153415 @Callable(gy)
34163416 func buyRoboDuck () = if (!(c))
34173417 then throw("Feature is turned off")
34183418 else {
34193419 let lh = kN(gy)
34203420 if ((size(gy.payments) != 1))
34213421 then throw("Exactly one payment required")
34223422 else {
34233423 let li = value(gy.payments[0])
34243424 if ((li.assetId != h))
34253425 then throw("Allowed USDT payment only!")
34263426 else if ((li.amount != dU))
34273427 then throw((("Payment attached should be " + aw(dU, 6)) + " USDT"))
34283428 else {
34293429 let nz = valueOrElse(getInteger(en()), 0)
34303430 let nA = toBytes(nz)
34313431 let ef = ((aK + "-") + takeRight(toBase16String(nA), 8))
34323432 let nB = takeRight(toBase16String(sha256_16Kb(nA)), 6)
34333433 let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nB), 1, 0, false)
34343434 let bA = calculateAssetId(iH)
34353435 $Tuple2(((((lh :+ IntegerEntry(en(), (nz + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nB))
34363436 }
34373437 }
34383438 }
34393439
34403440

github/deemru/w8io/169f3d6 
276.43 ms