tx · 8yBi9ULgn4jyeywRT41spXRUyDbgWET2BT9nmWYGjEhZ

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.09100000 Waves

2023.08.23 14:20 [2723216] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "8yBi9ULgn4jyeywRT41spXRUyDbgWET2BT9nmWYGjEhZ", "fee": 9100000, "feeAssetId": null, "timestamp": 1692789639052, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "5xidgUz2o2sLjhk6YzHoosn6PzTCzsG6aubxFVeQaekGzQWtcujWDcmYAcKPeLYZtcUcSjGmJ8yrPogNu9a4Ko51" ], "script": "base64:BgLBAQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIDCgEIEgQKAggIEgMKARgSBAoCCAgSBAoCCAgSAwoBCBIDCgEYEgMKAQgSBQoDCAgIEgQKAggIEgcKBQEBAQEBEgMKAQESBQoDAQEIEgMKAQgSAwoBCBIAEgQKAggBEgQKAggBEgMKAQgSBAoCCAgSAwoBCBIAEgMKAQj0AQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBCnJhdGlvbkJ1ZmYBBWxldmVsAwMJAGYCAAEFBWxldmVsBgkAZgIFBWxldmVsAAMJAAIBCQCsAgICFkludmFsaWQgcmF0aW9uIGxldmVsOiAJAKQDAQUFbGV2ZWwEBWJ1ZmZzCQDMCAIAAgkAzAgCAAQJAMwIAgAIBQNuaWwJAJEDAgUFYnVmZnMJAGUCBQVsZXZlbAABAQxnZXREdWNrU3RhdHMDD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAxmb3JjZUJ1ZmZMZXYEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwEBWJ1ZmZzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoCQDMCAIDCQBmAgUMZm9yY2VCdWZmTGV2AAAJAQpyYXRpb25CdWZmAQUMZm9yY2VCdWZmTGV2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFYnVmZnMFDGNoYXJTdHJlbmd0aAkAzAgCAwkAZgIFDGZvcmNlQnVmZkxldgAACQEKcmF0aW9uQnVmZgEFDGZvcmNlQnVmZkxldgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgMJAGYCBQxmb3JjZUJ1ZmZMZXYAAAkBCnJhdGlvbkJ1ZmYBBQxmb3JjZUJ1ZmZMZXYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVidWZmcwUNY2hhckludGVsbGVjdAkAzAgCAwkAZgIFDGZvcmNlQnVmZkxldgAACQEKcmF0aW9uQnVmZgEFDGZvcmNlQnVmZkxldgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWJ1ZmZzBQ1jaGFyRW5kdXJhbmNlCQDMCAIDCQBmAgUMZm9yY2VCdWZmTGV2AAAJAQpyYXRpb25CdWZmAQUMZm9yY2VCdWZmTGV2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFYnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfNTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF83MF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYAEHJJZHhSZXF1aXJlbWVudHMACQAJcklkeFNsb3RzAAoADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIJbmZ0T3duZXJfBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhsYW5kQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILc3Rha2VkVGltZV8FB2Fzc2V0SWQBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILaW5mcmFMZXZlbF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAg1sYW5kQXJ0U3RhdHVzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIgc3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcl8FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgp3YXJlSG91c2VfBQtsYW5kQXNzZXRJZAEXa2V5Rm9ydGlmaWNhdGlvbnNCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICD2ZvcnRpZmljYXRpb25zXwULbGFuZEFzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBC2R1Y2tBc3NldElkCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2tfBQtkdWNrQXNzZXRJZAEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEEYWRkcgkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkRHVja0J5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMADWxhc3RUb3VySWRLZXkCDiVzX19sYXN0VG91cklkARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABABF0RHluYW1pY1dpblJlc3VsdAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUABJLU19BTExPV19YUF9MRVZFTFMGABJLU19TRVBBUkFURV9QVUJMSUMHABhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UHAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDIr6AlAwkAAAIBAVQFByRtYXRjaDAAgMLXLwkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIC4mSkDCQAAAgEBVAUHJG1hdGNoMADg1AMJAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQABUlURVI2CQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1RvdXJuYW1lbnREYXBwAAcBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFEktTX1NFUEFSQVRFX1BVQkxJQwEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgAIbWVkS2l0SHAJAMwIAgAeCQDMCAIAPAkAzAgCAHgFA25pbAARRklWRU1JTlVURVNNSUxMSVMA4KcSAAxSRU5BTUlOR0NPU1QAwJaxAgAKTUFYTkFNRUxFTgAyABVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQAgK3iBAAMRVhQTUFURVJJQUxTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAKbdgu2rBwMJAAACAQFUBQckbWF0Y2gwAKqngbMJCQACAQINVW5rbm93biBjaGFpbgAHRVhQVVNEVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA5Zp3AwkAAAIBAVQFByRtYXRjaDAAgOWadwkAAgECDVVua25vd24gY2hhaW4ABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgxsYW5kVG9Bc3NldF8FB2xhbmROdW0BGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWxhbmRCeUN1c3RvbU5hbWVfBQRuYW1lAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICAhxpbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXJfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICCmxhbmRPd25lcl8FB2xhbmROdW0BGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWR1Y2tCeUN1c3RvbU5hbWVfBQRuYW1lARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQRuYW1lCQCsAgICFGFjY291bnRCeUN1c3RvbU5hbWVfBQRuYW1lAQlrZXlPbGRpZXMAAgpvbGRpZXNMaXN0AAtjbGFpbU1vZGVXaAAAAA1jbGFpbU1vZGVEdWNrAAEAE2NsYWltTW9kZVdoVGhlbkR1Y2sAAgAIZmxIZWFsdGgAAAALZmxUaW1lc3RhbXAABQAHZmxCb251cwAGAAtmbFByb2RzVXNlZAAHAQduZnROYW1lAgdsYW5kTnVtCGxhbmRTaXplCQCsAgIJAKwCAgUKTEFORFBSRUZJWAUHbGFuZE51bQUIbGFuZFNpemUBCHRvVm9sdW1lAgZhbW91bnQHcGtnU2l6ZQQEcGtncwMJAGcCBQZhbW91bnQAAAkAaQIJAGUCCQBkAgUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAQEtAQkAaQIJAGUCCQBkAgkBAS0BBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkAaAIFBHBrZ3MFBU1VTFQ4ARNkaXN0cmlidXRlQnlXZWlnaHRzAgV0b3RhbAd3ZWlnaHRzBANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAkQMCBQd3ZWlnaHRzAAAJAJEDAgUHd2VpZ2h0cwABCQCRAwIFB3dlaWdodHMAAgkAkQMCBQd3ZWlnaHRzAAMJAJEDAgUHd2VpZ2h0cwAECQCRAwIFB3dlaWdodHMABQMJAGcCAAAFA3N1bQkAAgECEFplcm8gd2VpZ2h0cyBzdW0EBW5vcm02CQBrAwUFdG90YWwFBU1VTFQ2BQNzdW0KAQpub3JtYWxpemVyAgNhY2MEZWxlbQkAzQgCBQNhY2MJAGsDBQRlbGVtBQVub3JtNgUFTVVMVDYKAAIkbAUHd2VpZ2h0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbm9ybWFsaXplcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgESZ2V0TmVlZGVkTWF0ZXJpYWxzAQV0b3RhbAQFcHJvcHMJALUJAgkBBXZhbHVlAQkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgFfAwkBAiE9AgkAkAMBBQVwcm9wcwUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQQBcgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABQUDbmlsCQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFBXRvdGFsBQFyARFzdWJ0cmFjdE1hdGVyaWFscwMMc2hvdWxkVXNlTWF0A2hhcwl0b3RhbE5lZWQEBG5lZWQJARJnZXROZWVkZWRNYXRlcmlhbHMBBQl0b3RhbE5lZWQKAQpzdWJ0cmFjdG9yAgNhY2MDaWR4BAZyZXN1bHQJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaGFzBQNpZHgJAJEDAgUEbmVlZAUDaWR4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGE5vdCBlbm91Z2ggbWF0ZXJpYWwgaWR4PQkApAMBBQNpZHgCCywgeW91IGhhdmUgCQCRAwIFA2hhcwUDaWR4AgssIGJ1dCBuZWVkIAkApAMBCQCRAwIFBG5lZWQFA2lkeAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0AwUMc2hvdWxkVXNlTWF0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpzdWJ0cmFjdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBQNoYXMBEXN1YnRyYWN0RXF1aXBtZW50AgVvbGRFcQVwVXNlZAMJAAACBQVwVXNlZAIABQVvbGRFcQoBB3N1YlVzZWQCA2FjYwZpZHhBbXQEBXBhcnRzCQC1CQIFBmlkeEFtdAIBLAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleCxhbW91bnQEA2lkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAADAwkAZgIAAAUDaWR4BgkAZwIFA2lkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAQDYW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQHZXFQYXJ0cwkAtQkCBQNhY2MJAKwCAgkAkQMCBQVwYXJ0cwAAAgE6AwkBAiE9AgkAkAMBBQdlcVBhcnRzAAIJAAIBCQCsAgIJAKwCAgIPWW91IGRvbid0IGhhdmUgCQCRAwIFCXByb2RUeXBlcwUDaWR4AgkgZXF1aXBwZWQEA3RtcAkAkQMCBQdlcVBhcnRzAAEEBm51bUxlbgMJAQdpc0RpZ2l0AQkArwICCQCwAgIFA3RtcAABAAEAAgABBARjdXJyCQENcGFyc2VJbnRWYWx1ZQEJAK8CAgUDdG1wBQZudW1MZW4EBHRhaWwJALACAgUDdG1wBQZudW1MZW4EBm5ld0FtdAMJAGcCBQRjdXJyBQNhbXQJAGUCBQRjdXJyBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINWW91IGVxdWlwcGVkIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUDaWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFA2FtdAkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFB2VxUGFydHMAAAkAkQMCBQVwYXJ0cwAAAgE6CQCkAwEFBm5ld0FtdAUEdGFpbAoAAiRsCQC1CQIFBXBVc2VkAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAUFb2xkRXEKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3N1YlVzZWQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBDnByb2RTdHJUb0J5dGVzAQdwcm9kU3RyBAVwTGlzdAMJAAACBQdwcm9kU3RyAgAFA25pbAkAvAkCBQdwcm9kU3RyAgFfCgEEdG9CVgIDYWNjBnJlY2lwZQQBagkAaQIJAMgBAQUDYWNjAAgEBGN1cnIDCQBmAgkAkAMBBQVwTGlzdAUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBMaXN0BQFqAAAJAMsBAgUDYWNjCQCa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YW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJUKAwUFcExpc3QFCG9jY3VwaWVkBQRmcmVlBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQEBm5ld0FtdAMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHCQBlAgUEY3VycgUFY291bnQJAGQCBQRjdXJyBQVjb3VudAQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCBQZuZXdBbXQFDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQRjdXJyBQ5QUk9EVUNUUEtHU0laRQkAlQoDCQDLAQIJAMsBAgUEaGVhZAkAmgMBBQZuZXdBbXQFBHRhaWwJAGQCBQhvY2N1cGllZAUIZGVsdGFWb2wJAGUCBQRmcmVlBQhkZWx0YVZvbAEIYWRkUHJvZEIHBmlkeENudAVwTGlzdAppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eARzbG90CWR1Y2tTdGF0cwQFcGFydHMJALUJAgUGaWR4Q250AgE6AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4OmFtb3VudAMDCQEBIQEFCmlzUG9zaXRpdmUJAQIhPQIJALECAQkAkQMCBQVwYXJ0cwAAAAIHCQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlAoCBQVwTGlzdAcEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQJaXNCaWdJdGVtAwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcEBmNvbXBhdAkAkQMCBQZyZWNpcGUFCXJJZHhTbG90cwMJAAACBQZjb21wYXQCAAkAAgECF0l0ZW0gY2Fubm90IGJlIGVxdWlwcGVkBAFjCQENcGFyc2VJbnRWYWx1ZQEFBmNvbXBhdAQEY1NlZwkAaQIFAWMAZAMJAQIhPQIFB3NlZ21lbnQFBGNTZWcJAAIBAhRTZWdtZW50IGluY29tcGF0aWJsZQQIY01haW5BdXgJAGkCCQBqAgUBYwBkAAoDCQECIT0CBQdtYWluQXV4BQhjTWFpbkF1eAkAAgECEVNsb3QgaW5jb21wYXRpYmxlBAljTnVtU2xvdHMJAGoCBQFjAAoDAwkBAiE9AgUEc2xvdAAACQBmAgUJY051bVNsb3RzAAEHCQACAQIeQmlnIGl0ZW1zIHNob3VsZCBvY2N1cHkgc2xvdCAwCQBmAgUJY051bVNsb3RzAAEHCQCUCgIJAMsBAgkAywECBQRoZWFkCQCaAwEJAGQCBQRjdXJyAwUKaXNQb3NpdGl2ZQUFY291bnQJAQEtAQUFY291bnQFBHRhaWwFCWlzQmlnSXRlbQELc2xvdHNHcm91cEIGAWcEYnBJbgppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eAVzdGF0cwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBXN0YXRzCQCUCgIFBGJwSW4HAwkBAiE9AgUCczECAAMIBQV0bXBTMAJfMgkAAgECHkJpZyBpdGVtIGFscmVhZHkgb2NjdXBpZXMgc2xvdAgJAQhhZGRQcm9kQgcFAnMxCAUFdG1wUzACXzEFCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAQUFc3RhdHMCXzEIBQV0bXBTMAJfMQUEYnBJbgEGZHJlc3NCBAdzZWdMaXN0BnBC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YQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoA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MF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkAugICCAUDYWNjAl8yBQhUV0VOVFk1WAQBdAoAAiRsCQDMCAIAAQkA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eFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkB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bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALUJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEQZXhwZWRpdGlvbkNvbW1vbgQGY2FsbGVyBHR4SWQHbWVzc2FnZQNzaWcECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCAUBZgJfMgQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBgUFbUxpc3QFDEVYUE1BVEVSSUFMUwIBXwQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEBW5ld0VxCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81AwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAABAFlCQESZXhwZWRpdGlvbkludGVybmFsAgUGY2FsbGVyBQR0eElkBAJpZAgIBQFlAl8yAl8xCQCVCgMJAM0IAgkAzQgCCQDNCAIJAM0IAggFAWUCXzEJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDMyNzk1MzMzMzQDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzI3OTUzMzMzNAJfMQQGZHVja0lkCAUNJHQwMzI3OTUzMzMzNAJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzNTcwODM2NTc5AwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzNTcwODM2NTc5Al8xBAVicFJlcwgFDSR0MDM1NzA4MzY1NzkCXzIEBWxvZnRPCAUNJHQwMzU3MDgzNjU3OQJfMwQFbG9mdEYIBQ0kdDAzNTcwODM2NTc5Al80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQEhAQUSS1NfQUxMT1dfWFBfTEVWRUxTCQCUCgIFA25pbAAABAZsdmxLZXkJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAQFeHBLZXkJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQAwkBASEBBRJLU19BTExPV19YUF9MRVZFTFMJAJQKAgUDbmlsAAAEBmx2bEtleQkBDGtleVVzZXJMZXZlbAEFBGFkZHIEBXhwS2V5CQEJa2V5VXNlclhQAQUEYWRkcgQCeHAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcEBnJlc3VsdAMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAPwHBAUEdGhpcwIWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUGcmVzdWx0BQZyZXN1bHQHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQmAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDNCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAIBXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5CQBkAgUJb2xkUGllY2VzBQZwaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAFkCAUBYwJfMwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5nb3ZSZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQ5nb3ZSZWxlYXNlVGltZQUDbm93CQACAQkArAICAjlZb3VyIGdXTCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOZ292UmVsZWFzZVRpbWUEDmFyYlJlbGVhc2VUaW1lCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcgAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQUDbm93CQACAQkArAICAj9Zb3VyIHN0YWtlZCBsYW5kcyB0b29rIHBhcnQgaW4gYXJiaXRyYWdlLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECW5ld1BpZWNlcwMJAGYCBQZwaWVjZXMFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzBQZwaWVjZXMECXdsZ1Jlc3VsdAkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKRFVDS1BSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFDWluY3ViYXRvckFkZHIJAQIhPQIIBQVhc3NldAZpc3N1ZXIFC2JyZWVkZXJBZGRyBwkAAgEJAKwCAgkArAICAhJVbmtub3duIGlzc3VlciBvZiAFCkRVQ0tQUkVGSVgCBiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkRVQ0tQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpEVUNLUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQKYXNzZXRJZFN0cgkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQDCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICAh1Zb3UgYWxyZWFkeSBzdGFrZWQgb25lIGR1Y2s6IAgFBWFzc2V0BG5hbWUDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECGXN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIECGxvY2F0aW9uCQCiCAEFBmxvY0tleQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFCmFzc2V0SWRTdHIECGJhY2twYWNrCQCiCAEFBWJwS2V5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFCmFzc2V0SWRTdHIFA25pbAMJAQlpc0RlZmluZWQBBQhsb2NhdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04FA25pbAMJAQlpc0RlZmluZWQBBQhiYWNrcGFjawUDbmlsCQDNCAIJAM0IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoFA25pbAkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJY3VySGVhbHRoBQxwcm9sb2dBY3Rpb24BaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUMcHJvbG9nQWN0aW9uCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAtuZXdMb2NhdGlvbggFAWYCXzQEBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQDAwkBASEBBQZpc1RvdXIJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAcJAAIBAhZmbGlnaHRfY2hlY2tUb3VybmFtZW50BAl0b3VyU3R1ZmYDBQZpc1RvdXIEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMDAwkBAiE9AgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQGCQECIT0CCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBgkAZgIFA25vdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUEdW5pdAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBApnbG9iYWxCZXN0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHZHluYW1pYwURdER5bmFtaWNXaW5SZXN1bHQDCQBnAgUKZ2xvYmFsQmVzdAUFc2NvcmUFBHVuaXQJAPwHBAUSdG91cm5hbWVudENvbnRyYWN0AhF1cGRhdGVEeW5hbWljRGF0YQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVzY29yZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUJdG91clN0dWZmBQl0b3VyU3R1ZmYEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQFbmV3RXEJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQMJAGYCCAUBZgJfMQAABQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCAUBZgJfMQkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIIBQFmAl8xAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBoZWFsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQtpdGVyYXRlUHJvZAIDYWNjC2lnbm9yZWRJdGVtBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQCRAwIFCG1lZEtpdEhwBQFuBQFxCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBBQF4CQBkAgUBbgABCAUDYWNjAl8zBAZyZXN1bHQKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQELaXRlcmF0ZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQJbmV3SGVhbHRoCQCXAwEJAMwIAgUFbWF4SFAJAMwIAgkAZAIFCW9sZEhlYWx0aAgFBnJlc3VsdAJfMwUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALkJAggFBnJlc3VsdAJfMQIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQCRAwIFCG1lZEtpdEhwAAAEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM0IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDHByb2xvZ0FjdGlvbgULZmluaXNoQmxvY2sBaQEIYnV5U0xhbmQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAkAlAoCCQDNCAIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDHByb2xvZ0FjdGlvbggIBQZyZXN1bHQCXzICXzEBaQEKZXhwZWRpdGlvbgIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQEQZXhwZWRpdGlvbkNvbW1vbgQIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQJAJQKAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUKeHBOZXdTTGFuZAJfMQUMcHJvbG9nQWN0aW9uCQCUCgIIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMBaQEMdXBncmFkZUluZnJhAQtsYW5kQXNzZXRJZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQUMcHJvbG9nQWN0aW9uCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQ54cFVwZ3JhZGVJbmZyYQgFBnJlc3VsdAJfMwUFTVVMVDgCXzEIBQZyZXN1bHQCXzIBaQEQYWN0aXZhdGVBcnRpZmFjdAIHYXJ0TmFtZQ5sYW5kQXNzZXRJZE9wdAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQGcmVzdWx0BAckbWF0Y2gwBQdhcnROYW1lAwkAAAICB1BSRVNBTEUFByRtYXRjaDAJARJhY3RpdmF0ZVByZXNhbGVBcnQCBQRhZGRyBQ5sYW5kQXNzZXRJZE9wdAMJAAACAgdPTkJPQVJEBQckbWF0Y2gwCQESYWN0aXZhdGVPbmJvYXJkQXJ0AQUEYWRkcgkAAgECEFVua25vd24gYXJ0aWZhY3QJAM0IAgUGcmVzdWx0BQxwcm9sb2dBY3Rpb24BaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBC21lcmdlQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIFDGxhbmRBc3NldElkcwkAlAoCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQUMcHJvbG9nQWN0aW9uCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUHeHBNZXJnZQJfMQgFBnJlc3VsdAJfMgFpAQ1jYXJnb0V4Y2hhbmdlAgxjYXJnb0xpc3RTdHILbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQZyZXN1bHQCXzQJAMwIAggFBnJlc3VsdAJfNQkAzAgCCAUGcmVzdWx0Al82BQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAggFBnJlc3VsdAJfMQkAzAgCCAUGcmVzdWx0Al8yCQDMCAIIBQZyZXN1bHQCXzMJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAIBOgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAFpAQ1zYXZlV2FyZWhvdXNlAgV3aFN0cgtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJALwJAgUFd2hTdHICAToDCQECIT0CCQCQAwEFAndoAAUJAAIBAjB3YXJlaG91c2Ugc3RyaW5nIHNob3VsZCBjb250YWluIDQgJzonIHNlcGFyYXRvcnMEBWxvZnRMCQCRAwIJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAkBDXBhcnNlSW50VmFsdWUBBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQESZml4V2FyZWhvdXNlRm9ybWF0AQtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFbG9mdEwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhpyZWNhbGNMb2NrZWRWb2x1bWVSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAkAzAgCBQJ3aAUDbmlsBQNuaWwEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkApAMBBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQEXZml4Q29udGluZW50UHJvcG9ydGlvbnMBDGxhbmRBc3NldElkcwMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAoBCGdldFByb3BzAgNhY2MEY29udAkAzQgCBQNhY2MJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQRjb250AgswXzBfMF8wXzBfMAQBcAoAAiRsBQpjb250aW5lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhnZXRQcm9wcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUKAQlwcm9jZXNzb3ICA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBQVTU0laRQQEY29udAkAkQMCBQFkBQxyZWNDb250aW5lbnQEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQMY29udGluZW50SWR4CQEFdmFsdWUBCQDPCAIFCmNvbnRpbmVudHMFBGNvbnQECWNvbnRQcm9wcwkAtQkCCQCRAwIFA2FjYwUMY29udGluZW50SWR4AgFfBAd1cGRhdGVkCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQHJG1hdGNoMAUEY29udAMJAAACAghB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TgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAghBbWVyaWNhcwkAkQMCBQFyAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgZFdXJvcGUJAJEDAgUBcgABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIEQXNpYQkAkQMCBQFyAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgZBZnJpY2EJAJEDAgUBcgADCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIHT2NlYW5pYQkAkQMCBQFyAAQFA25pbAAAAWkBD2ZpeFN0YWtlZFBpZWNlcwEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMc3Rha2VkUGllY2VzAwkAAAIFB2FkZHJlc3MCAAAABAhsYW5kc1N0cgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAhsYW5kU2l6ZQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUJAGQCBQNhY2MJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQoAAiRsBQVsYW5kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHb25lTGFuZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBQxzdGFrZWRQaWVjZXMFA25pbAUMc3Rha2VkUGllY2VzAWkBDXNldEN1c3RvbU5hbWUDB2Fzc2V0SWQKY3VzdG9tTmFtZQR0eXBlBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUMUkVOQU1JTkdDT1NUCQACAQkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAKQDAQUMUkVOQU1JTkdDT1NUAwkBCGNvbnRhaW5zAgUKY3VzdG9tTmFtZQICX18JAAIBCQCsAgICHk5hbWUgc2hvdWxkIG5vdCBjb250YWluICdfXyc6IAUKY3VzdG9tTmFtZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUNYWRkclRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUEYWRkcggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBExBTkQFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgREVUNLBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkGCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkRVQ0tQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQdhc3NldElkBQx4cEN1c3RvbU5hbWUCXzEJAAIBAhNVbmtub3duIGVudGl0eSB0eXBlCQCUCgIJAM0IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUMcHJvbG9nQWN0aW9uAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQlvbGRQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQlvbGRQbGF5ZXIDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW5ld1BsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW5ld1BsYXllcgQHb2xkc0tleQkBCWtleU9sZGllcwAEBG9sZHMJAKIIAQUHb2xkc0tleQQGb2xkaWVzAwkBCWlzRGVmaW5lZAEFBG9sZHMJALwJAgkBBXZhbHVlAQUEb2xkcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJbmV3UGxheWVyCQACAQkArAICBQluZXdQbGF5ZXICJiBpcyBub3QgbmV3YmllIChhbHJlYWR5IGhhcyByZWZlcnJhbHMpBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCW5ld1BsYXllcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDAwkBCWlzRGVmaW5lZAEFBXJlZkJ5CQEJaXNEZWZpbmVkAQkApggBCQEFdmFsdWUBBQVyZWZCeQcJAAIBCQCsAgIJAKwCAgUJbmV3UGxheWVyAhQgYWxyZWFkeSBoYXMgcmVmQnk6IAkBBXZhbHVlAQUFcmVmQnkEB3JlZnNLZXkJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUJb2xkUGxheWVyBARyZWZzCQCiCAEFB3JlZnNLZXkECXJlZnNBcnJheQMJAQlpc0RlZmluZWQBBQRyZWZzCQC8CQIJAQV2YWx1ZQEFBHJlZnMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgkAAgEJAKwCAgkArAICCQCsAgIFCW9sZFBsYXllcgISIGFscmVhZHkgY29udGFpbnMgBQluZXdQbGF5ZXICESB3aXRoaW4gcmVmZXJyYWxzBAduZXdSZWZzCQC6CQIJAM0IAgUJcmVmc0FycmF5BQluZXdQbGF5ZXICAV8EB25ld09sZHMDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQlvbGRQbGF5ZXIJAQV2YWx1ZQEFBG9sZHMJALoJAgkAzQgCBQZvbGRpZXMFCW9sZFBsYXllcgIBXwkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAAABaQEQZGlzdHJpYnV0ZVBvaW50cwUIc3RyZW5ndGgIYWNjdXJhY3kJaW50ZWxsZWN0CWVuZHVyYW5jZQlkZXh0ZXJpdHkEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQKZnJlZUtleUFjYwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgQNZnJlZVBvaW50c0FjYwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFCmZyZWVLZXlBY2MAAAQLZnJlZUtleUR1Y2sJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBA5mcmVlUG9pbnRzRHVjawkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhjaGFyc0tleQIJMF8wXzBfMF8wAgFfBAZuZXdBY2MJAGUCBQ1mcmVlUG9pbnRzQWNjBQ9zdW1Ub0Rpc3RyaWJ1dGUJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKZnJlZUtleUFjYwMJAGYCAAAFBm5ld0FjYwAABQZuZXdBY2MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2ZyZWVLZXlEdWNrAwkAZgIAAAUGbmV3QWNjCQBkAgUOZnJlZVBvaW50c0R1Y2sFBm5ld0FjYwUOZnJlZVBvaW50c0R1Y2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUIY2hhcnNLZXkJALkJAgkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAUIc3RyZW5ndGgJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kFCGFjY3VyYWN5CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAUJaW50ZWxsZWN0CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQUJZW5kdXJhbmNlCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQUJZGV4dGVyaXR5BQNuaWwCAV8JAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZAQZhbW91bnQJAJQKAgUDbmlsCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUGYW1vdW50AWkBJHNwbGl0QnlHbG9iYWxBbmRMb2NhbFdlaWdodHNSRUFET05MWQMJbWF0QW1vdW50CXJlc0Ftb3VudAh0ZXJyYWlucwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBBQh0ZXJyYWlucwkAlAoCBQNuaWwJAJQKAgkBEmdldE5lZWRlZE1hdGVyaWFscwEFCW1hdEFtb3VudAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQlyZXNBbW91bnQFDXRlcnJhaW5Db3VudHMBaQETZ2V0QmFja3BhY2tSRUFET05MWQELZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQC5CQIJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkAgE6AWkBFGdldFdhcmVob3VzZVJFQURPTkxZAQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAJAJQKAgUDbmlsCQC6CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAIBOgFpAQpzYXZlTGFzdFR4AAQGY2FsbGVyCAUBaQZjYWxsZXIDAwMJAQIhPQIFBmNhbGxlcgULd2xnQ29udHJhY3QJAQIhPQIFBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0BwkBAiE9AgUGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QHCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQDMCAIJAQZwcm9sb2cBBQFpBQNuaWwAKgFpAQ91cGRhdGVEdWNrU3RhdHMCC2R1Y2tBc3NldElkB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQdkZWx0YVhQAWkBDnVwZGF0ZUFjY1N0YXRzAgRhZGRyB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUHZGVsdGFYUAFpAQllcXVpcER1Y2sBCWVxdWlwbWVudAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIZZXF1aXBEdWNrX2NoZWNrVG91cm5hbWVudAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQtjdXJyZW50U2VncwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUFbmV3RXEFC3NlZ0JhY2twYWNrAgE7AAEECGhhc0J1ZmZzAwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQBlAgkBDXBhcnNlSW50VmFsdWUBBQNpZHgABQAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwMFBHRoaXMFC2R1Y2tBc3NldElkBQhoYXNCdWZmcwQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAECWR1Y2tTdGF0cwkBDGdldER1Y2tTdGF0cwMFBHRoaXMFC2R1Y2tBc3NldElkAAAEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA0kdDA5MjU2NjkyNjgxCQEFZm9ydEIGBQxjdXJyZW50Rm9ydHMJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgUCd2gFCXdoSWR4UHJvZAUEY3VyTwUEY3VyRgYFA25pbAQJdGVtcFByb2RCCAUNJHQwOTI1NjY5MjY4MQJfMQQFdGVtcE8IBQ0kdDA5MjU2NjkyNjgxAl8yBAV0ZW1wRggFDSR0MDkyNTY2OTI2ODECXzMEDSR0MDkyNjg0OTI3ODAJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ0kdDA5MjY4NDkyNzgwAl8xBARuZXdPCAUNJHQwOTI2ODQ5Mjc4MAJfMgQEbmV3RggFDSR0MDkyNjg0OTI3ODACXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgUMcHJvbG9nQWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQ9leGl0VG91cm5hbWVudHMABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgUDbmlsBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAAAAH+J8TM=", "height": 2723216, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3iC7Rvy9tWWmqdqvwvEXBVy5AKEko9jHJWoaGagYNY6B Next: EPehuPFhgStfmrQBUvLrbvvi4MRHyDE8RryK3iCaKDkE Diff:
OldNewDifferences
139139
140140 let ah = 6
141141
142-let ai = 3456000
143-
144-let aj = 86400000
145-
146-let ak = 10000000000
147-
148-let al = "Africa_F_Africa"
149-
150-let am = 39637
151-
152-let an = 10
153-
154-let ao = ["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"]
155-
156-let ap = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
157-
158-let aq = 10000000
159-
160-let ar = [15, 16, 17, 18, 19, 20]
161-
162-let as = ["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_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_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_"]
163-
164-let at = 6
165-
166-let au = 9
167-
168-let av = 10
142+let ai = 25
143+
144+let aj = 3456000
145+
146+let ak = 86400000
147+
148+let al = 10000000000
149+
150+let am = "Africa_F_Africa"
151+
152+let an = 39637
153+
154+let ao = 10
155+
156+let ap = ["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"]
157+
158+let aq = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
159+
160+let ar = 10000000
161+
162+let as = [15, 16, 17, 18, 19, 20]
163+
164+let at = ["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_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_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_"]
165+
166+let au = 6
167+
168+let av = 9
169169
170170 let aw = 10
171171
172-let ax = 0
173-
174-let ay = 1
175-
176-let az = 2
177-
178-let aA = 3
179-
180-let aB = 4
181-
182-let aC = 0
183-
184-let aD = 1
185-
186-let aE = 2
187-
188-let aF = 3
189-
190-let aG = 0
191-
192-let aH = 1
193-
194-let aI = 2
195-
196-let aJ = 3
197-
198-func aK (b) = ("lastTxIdByUser_" + b)
199-
200-
201-func aL (aM) = ("nftOwner_" + aM)
202-
203-
204-func aN (aM) = ("landCustomNameByAssetId_" + aM)
205-
206-
207-func aO (aM) = ("stakedTime_" + aM)
208-
209-
210-func aP (aM) = ("infraLevel_" + aM)
211-
212-
213-func aQ (aR,aM) = makeString(["landArtStatus", aR, aM], "_")
214-
215-
216-func aS (aT,aM,aU) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aT) + "_") + aM) + "_") + aU)
217-
218-
219-func aV (aW) = ("wareHouse_" + aW)
220-
221-
222-func aX (aW) = ("fortifications_" + aW)
223-
224-
225-func aY (aM) = ("duckCustomNameByAssetId_" + aM)
226-
227-
228-func aZ (b) = ("accountCustomNameByAddr_" + b)
229-
230-
231-func ba (b) = ("accRefBy_" + b)
232-
233-
234-func bb (s) = ("onboardArtActivatedOnDuck_" + s)
235-
236-
237-func bc (b) = ("onboardArtActivatedDuckBy_" + b)
238-
239-
240-func bd (b) = ("accReferrals_" + b)
241-
242-
243-func be (aM) = ("duckOwner_" + aM)
244-
245-
246-func bf (aU) = ("stakedDuckByOwner_" + aU)
247-
248-
249-func bg (s) = ("backPack_" + s)
250-
251-
252-func bh (s) = ("duckLocation_" + s)
253-
254-
255-func bi () = "contractsBlocked"
256-
257-
258-func bj (bk) = ("%s%s__userGwlReleaseTime__" + bk)
259-
260-
261-func bl () = "emergencyWarehouseProducts"
262-
263-
264-let bm = "%s__lastTourId"
265-
266-func bn (bo) = ("%s%d__tourStaticData__" + toString(bo))
267-
268-
269-func bp (bo) = ("%s%d__tourDynamicData__" + toString(bo))
270-
271-
272-let bq = 0
273-
274-let br = 1
275-
276-func bs (bt,bo) = {
277- let bu = split(valueOrErrorMessage(getString(bt, bn(bo)), (("Error reading tournament " + toString(bo)) + " data")), "__")
278- let bv = split(valueOrErrorMessage(getString(bt, bp(bo)), (("Error reading tournament " + toString(bo)) + " data")), "__")
279-[bu, bv]
280- }
281-
282-
283-let bw = 6
284-
285-let bx = 1
286-
287-let by = 3
288-
289-let bz = 0
290-
291-let bA = 1
292-
293-let bB = 2
294-
295-func bC (bD) = (parseIntValue(bD[at]) * aq)
296-
297-
298-let bE = true
299-
300-let bF = false
172+let ax = 10
173+
174+let ay = 0
175+
176+let az = 1
177+
178+let aA = 2
179+
180+let aB = 3
181+
182+let aC = 4
183+
184+let aD = 0
185+
186+let aE = 1
187+
188+let aF = 2
189+
190+let aG = 3
191+
192+let aH = 0
193+
194+let aI = 1
195+
196+let aJ = 2
197+
198+let aK = 3
199+
200+func aL (b) = ("lastTxIdByUser_" + b)
201+
202+
203+func aM (aN) = ("nftOwner_" + aN)
204+
205+
206+func aO (aN) = ("landCustomNameByAssetId_" + aN)
207+
208+
209+func aP (aN) = ("stakedTime_" + aN)
210+
211+
212+func aQ (aN) = ("infraLevel_" + aN)
213+
214+
215+func aR (aS,aN) = makeString(["landArtStatus", aS, aN], "_")
216+
217+
218+func aT (aU,aN,aV) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aU) + "_") + aN) + "_") + aV)
219+
220+
221+func aW (aX) = ("wareHouse_" + aX)
222+
223+
224+func aY (aX) = ("fortifications_" + aX)
225+
226+
227+func aZ (aN) = ("duckCustomNameByAssetId_" + aN)
228+
229+
230+func ba (b) = ("accountCustomNameByAddr_" + b)
231+
232+
233+func bb (b) = ("accRefBy_" + b)
234+
235+
236+func bc (s) = ("onboardArtActivatedOnDuck_" + s)
237+
238+
239+func bd (b) = ("onboardArtActivatedDuckBy_" + b)
240+
241+
242+func be (b) = ("accReferrals_" + b)
243+
244+
245+func bf (aN) = ("duckOwner_" + aN)
246+
247+
248+func bg (aV) = ("stakedDuckByOwner_" + aV)
249+
250+
251+func bh (s) = ("backPack_" + s)
252+
253+
254+func bi (s) = ("duckLocation_" + s)
255+
256+
257+func bj () = "contractsBlocked"
258+
259+
260+func bk (bl) = ("%s%s__userGwlReleaseTime__" + bl)
261+
262+
263+func bm () = "emergencyWarehouseProducts"
264+
265+
266+let bn = "%s__lastTourId"
267+
268+func bo (bp) = ("%s%d__tourStaticData__" + toString(bp))
269+
270+
271+func bq (bp) = ("%s%d__tourDynamicData__" + toString(bp))
272+
273+
274+let br = 0
275+
276+let bs = 1
277+
278+func bt (bu,bp) = {
279+ let bv = split(valueOrErrorMessage(getString(bu, bo(bp)), (("Error reading tournament " + toString(bp)) + " data")), "__")
280+ let bw = split(valueOrErrorMessage(getString(bu, bq(bp)), (("Error reading tournament " + toString(bp)) + " data")), "__")
281+[bv, bw]
282+ }
283+
284+
285+let bx = 6
286+
287+let by = 1
288+
289+let bz = 3
290+
291+let bA = 0
292+
293+let bB = 1
294+
295+let bC = 2
296+
297+func bD (bE) = (parseIntValue(bE[au]) * ar)
298+
299+
300+let bF = true
301301
302302 let bG = false
303303
304-let bH = take(drop(this.bytes, 1), 1)
305-
306-let bI = {
307- let bJ = bH
308- if ((base58'2W' == bJ))
304+let bH = false
305+
306+let bI = take(drop(this.bytes, 1), 1)
307+
308+let bJ = {
309+ let bK = bI
310+ if ((base58'2W' == bK))
309311 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
310- else if ((base58'2T' == bJ))
312+ else if ((base58'2T' == bK))
311313 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
312314 else throw("Unknown chain")
313315 }
314316
315-let bK = {
316- let bJ = bH
317- if ((base58'2W' == bJ))
317+let bL = {
318+ let bK = bI
319+ if ((base58'2W' == bK))
318320 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
319- else if ((base58'2T' == bJ))
321+ else if ((base58'2T' == bK))
320322 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
321323 else throw("Unknown chain")
322324 }
323325
324-let bL = {
325- let bJ = bH
326- if ((base58'2W' == bJ))
326+let bM = {
327+ let bK = bI
328+ if ((base58'2W' == bK))
327329 then 10000000000
328- else if ((base58'2T' == bJ))
330+ else if ((base58'2T' == bK))
329331 then 100000000
330332 else throw("Unknown chain")
331333 }
332334
333-let bM = {
334- let bJ = bH
335- if ((base58'2W' == bJ))
335+let bN = {
336+ let bK = bI
337+ if ((base58'2W' == bK))
336338 then 86400000
337- else if ((base58'2T' == bJ))
339+ else if ((base58'2T' == bK))
338340 then 60000
339341 else throw("Unknown chain")
340342 }
341343
342-let bN = "__"
343-
344-let bO = 1000000
345-
346-let bP = 100000000
347-
348-let bQ = 25
349-
350-let bR = 100
351-
352-let bS = 225
353-
354-let bT = 400
355-
356-let bU = 625
357-
358-let bV = [0, 1, 2, 3, 4, 5]
359-
360-func bW (bX,bY) = valueOrErrorMessage(getString(bX, bY), makeString(["mandatory ", toString(bX), ".", bY, " is not defined"], ""))
361-
362-
363-let bZ = 1
364-
365-let ca = 2
366-
367-let cb = 3
368-
369-let cc = 4
370-
371-let cd = 7
372-
373-func ce () = "%s__restConfig"
374-
375-
376-func cf () = "%s__restAddr"
377-
378-
379-func cg (ch) = split_4C(bW(ch, ce()), bN)
380-
381-
382-func ci (cj,ck) = valueOrErrorMessage(addressFromString(cj[ck]), ("Rest cfg doesn't contain address at index " + toString(ck)))
383-
384-
385-let cl = addressFromStringValue(valueOrElse(getString(this, cf()), bK))
386-
387-let cj = cg(cl)
388-
389-let Z = ci(cj, bZ)
390-
391-let cm = ci(cj, ca)
392-
393-let cn = ci(cj, cb)
394-
395-let co = ci(cj, cc)
396-
397-let cp = ci(cj, cd)
398-
399-let cq = 0
400-
401-let cr = 1
402-
403-let cs = 2
404-
405-let ct = 3
406-
407-let cu = 2
408-
409-func cv (bX) = ("finishBlockForAddr_" + bX)
410-
411-
412-func cw () = "resTypesProportions"
413-
414-
415-func cx (cy) = ("resTypesByContinent_" + cy)
416-
417-
418-func cz (aU) = ("stakedLandsByOwner_" + aU)
419-
420-
421-func cA (aU) = ("stakedPiecesByOwner_" + aU)
422-
423-
424-func cB (cC) = {
425- let bJ = cC
426- if ($isInstanceOf(bJ, "String"))
344+let bO = "__"
345+
346+let bP = 1000000
347+
348+let bQ = 100000000
349+
350+let bR = 25
351+
352+let bS = 100
353+
354+let bT = 225
355+
356+let bU = 400
357+
358+let bV = 625
359+
360+let bW = [0, 1, 2, 3, 4, 5]
361+
362+func bX (bY,bZ) = valueOrErrorMessage(getString(bY, bZ), makeString(["mandatory ", toString(bY), ".", bZ, " is not defined"], ""))
363+
364+
365+let ca = 1
366+
367+let cb = 2
368+
369+let cc = 3
370+
371+let cd = 4
372+
373+let ce = 7
374+
375+func cf () = "%s__restConfig"
376+
377+
378+func cg () = "%s__restAddr"
379+
380+
381+func ch (ci) = split_4C(bX(ci, cf()), bO)
382+
383+
384+func cj (ck,cl) = valueOrErrorMessage(addressFromString(ck[cl]), ("Rest cfg doesn't contain address at index " + toString(cl)))
385+
386+
387+let cm = addressFromStringValue(valueOrElse(getString(this, cg()), bL))
388+
389+let ck = ch(cm)
390+
391+let Z = cj(ck, ca)
392+
393+let cn = cj(ck, cb)
394+
395+let co = cj(ck, cc)
396+
397+let cp = cj(ck, cd)
398+
399+let cq = cj(ck, ce)
400+
401+let cr = 0
402+
403+let cs = 1
404+
405+let ct = 2
406+
407+let cu = 3
408+
409+let cv = 2
410+
411+func cw (bY) = ("finishBlockForAddr_" + bY)
412+
413+
414+func cx () = "resTypesProportions"
415+
416+
417+func cy (cz) = ("resTypesByContinent_" + cz)
418+
419+
420+func cA (aV) = ("stakedLandsByOwner_" + aV)
421+
422+
423+func cB (aV) = ("stakedPiecesByOwner_" + aV)
424+
425+
426+func cC (cD) = {
427+ let bK = cD
428+ if ($isInstanceOf(bK, "String"))
427429 then {
428- let cD = bJ
429- cD
430+ let cE = bK
431+ cE
430432 }
431433 else throw("fail to cast into String")
432434 }
433435
434436
435-func cE (cC) = {
436- let bJ = cC
437- if ($isInstanceOf(bJ, "Int"))
437+func cF (cD) = {
438+ let bK = cD
439+ if ($isInstanceOf(bK, "Int"))
438440 then {
439- let cF = bJ
440- cF
441+ let cG = bK
442+ cG
441443 }
442444 else throw("fail to cast into Int")
443445 }
444446
445447
446-func cG (cH) = {
447- let bJ = cH
448- if (("S" == bJ))
449- then bQ
450- else if (("M" == bJ))
451- then bR
452- else if (("L" == bJ))
453- then bS
454- else if (("XL" == bJ))
455- then bT
456- else if (("XXL" == bJ))
457- then bU
448+func cH (cI) = {
449+ let bK = cI
450+ if (("S" == bK))
451+ then bR
452+ else if (("M" == bK))
453+ then bS
454+ else if (("L" == bK))
455+ then bT
456+ else if (("XL" == bK))
457+ then bU
458+ else if (("XXL" == bK))
459+ then bV
458460 else throw("Unknown land size")
459461 }
460462
461463
462-func cI (cD) = isDefined(parseInt(cD))
463-
464-
465-let cJ = {
466- let bJ = bH
467- if ((base58'2W' == bJ))
464+func cJ (cE) = isDefined(parseInt(cE))
465+
466+
467+let cK = {
468+ let bK = bI
469+ if ((base58'2W' == bK))
468470 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
469- else if ((base58'2T' == bJ))
471+ else if ((base58'2T' == bK))
470472 then this
471473 else throw("Unknown chain")
472474 }
473475
474-let cK = {
475- let bJ = bH
476- if ((base58'2W' == bJ))
476+let cL = {
477+ let bK = bI
478+ if ((base58'2W' == bK))
477479 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
478- else if ((base58'2T' == bJ))
480+ else if ((base58'2T' == bK))
479481 then this
480482 else throw("Unknown chain")
481483 }
482484
483-let cL = {
484- let bJ = bH
485- if ((base58'2W' == bJ))
486- then if (bF)
485+let cM = {
486+ let bK = bI
487+ if ((base58'2W' == bK))
488+ then if (bG)
487489 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
488490 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
489- else if ((base58'2T' == bJ))
491+ else if ((base58'2T' == bK))
490492 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
491493 else throw("Unknown chain")
492494 }
493495
494-let cM = [30, 60, 120]
495-
496-let cN = 300000
497-
498-let cO = 5000000
499-
500-let cP = 50
501-
502-let cQ = 10000000
503-
504-let cR = {
505- let bJ = bH
506- if ((base58'2W' == bJ))
496+let cN = [30, 60, 120]
497+
498+let cO = 300000
499+
500+let cP = 5000000
501+
502+let cQ = 50
503+
504+let cR = 10000000
505+
506+let cS = {
507+ let bK = bI
508+ if ((base58'2W' == bK))
507509 then 252289527462
508- else if ((base58'2T' == bJ))
510+ else if ((base58'2T' == bK))
509511 then 2522895274
510512 else throw("Unknown chain")
511513 }
512514
513-let cS = {
514- let bJ = bH
515- if ((base58'2W' == bJ))
515+let cT = {
516+ let bK = bI
517+ if ((base58'2W' == bK))
516518 then 250000000
517- else if ((base58'2T' == bJ))
519+ else if ((base58'2T' == bK))
518520 then 250000000
519521 else throw("Unknown chain")
520522 }
521523
522-let cT = toBigInt(5)
523-
524-let cU = toBigInt(20)
525-
526-let cV = toBigInt((20 * 20))
527-
528-let cW = toBigInt(((20 * 20) * 20))
529-
530-let cX = toBigInt((((20 * 20) * 20) * 20))
531-
532-let cY = toBigInt(((((20 * 20) * 20) * 20) * 20))
533-
534-let cZ = 500
535-
536-func da () = "nextLandNum"
537-
538-
539-func db (dc) = ("landToAsset_" + dc)
540-
541-
542-func dd (de) = ("landByCustomName_" + de)
543-
544-
545-func df (aM,aU) = ((("infraLevelByAssetIdAndOwner_" + aM) + "_") + aU)
546-
547-
548-func dg (aR,aM,aU) = makeString(["landArtStatusByTypeAssetIdAndOwner", aR, aM, aU], "_")
549-
550-
551-func dh (dc) = ("landOwner_" + dc)
552-
553-
554-func di (de) = ("duckByCustomName_" + de)
555-
556-
557-func dj (de) = ("accountByCustomName_" + de)
524+let cU = toBigInt(5)
525+
526+let cV = toBigInt(20)
527+
528+let cW = toBigInt((20 * 20))
529+
530+let cX = toBigInt(((20 * 20) * 20))
531+
532+let cY = toBigInt((((20 * 20) * 20) * 20))
533+
534+let cZ = toBigInt(((((20 * 20) * 20) * 20) * 20))
535+
536+let da = 500
537+
538+func db () = "nextLandNum"
539+
540+
541+func dc (dd) = ("landToAsset_" + dd)
542+
543+
544+func de (df) = ("landByCustomName_" + df)
545+
546+
547+func dg (aN,aV) = ((("infraLevelByAssetIdAndOwner_" + aN) + "_") + aV)
548+
549+
550+func dh (dd) = ("landOwner_" + dd)
551+
552+
553+func di (df) = ("duckByCustomName_" + df)
554+
555+
556+func dj (df) = ("accountByCustomName_" + df)
558557
559558
560559 func dk () = "oldiesList"
574573
575574 let dr = 7
576575
577-func ds (dc,cH) = ((ae + dc) + cH)
576+func ds (dd,cI) = ((ae + dd) + cI)
578577
579578
580579 func dt (du,dv) = {
581580 let dw = if ((du >= 0))
582581 then (((du + dv) - 1) / dv)
583582 else -((((-(du) + dv) - 1) / dv))
584- (dw * bP)
583+ (dw * bQ)
585584 }
586585
587586
590589 if ((0 >= dA))
591590 then throw("Zero weights sum")
592591 else {
593- let dB = fraction(dy, bO, dA)
594- func dC (dD,dE) = (dD :+ fraction(dE, dB, bO))
592+ let dB = fraction(dy, bP, dA)
593+ func dC (dD,dE) = (dD :+ fraction(dE, dB, bP))
595594
596595 let dF = dz
597596 let dG = size(dF)
610609
611610
612611 func dM (dy) = {
613- let dN = split(value(getString(cw())), "_")
612+ let dN = split(value(getString(cx())), "_")
614613 if ((size(dN) != ah))
615614 then throw("Wrong proportions data")
616615 else {
622621
623622 func dP (dQ,dR,dS) = {
624623 let dT = dM(dS)
625- func dU (dD,ck) = {
626- let dV = (parseIntValue(dR[ck]) - dT[ck])
624+ func dU (dD,cl) = {
625+ let dV = (parseIntValue(dR[cl]) - dT[cl])
627626 if ((0 > dV))
628- then throw(((((("Not enough material idx=" + toString(ck)) + ", you have ") + dR[ck]) + ", but need ") + toString(dT[ck])))
627+ then throw(((((("Not enough material idx=" + toString(cl)) + ", you have ") + dR[cl]) + ", but need ") + toString(dT[cl])))
629628 else (dD :+ toString(dV))
630629 }
631630
632631 if (dQ)
633632 then {
634- let dF = bV
633+ let dF = bW
635634 let dG = size(dF)
636635 let dH = nil
637636 func dI (dJ,dK) = if ((dK >= dG))
656655 if ((size(eb) != 2))
657656 then throw("Incorrect format, should be index,amount")
658657 else {
659- let ck = parseIntValue(eb[0])
660- if (if ((0 > ck))
658+ let cl = parseIntValue(eb[0])
659+ if (if ((0 > cl))
661660 then true
662- else (ck >= size(as)))
661+ else (cl >= size(at)))
663662 then throw("Unknown product idx")
664663 else {
665664 let ec = parseIntValue(eb[1])
666665 let ed = split(dD, (eb[0] + ":"))
667666 if ((size(ed) != 2))
668- then throw((("You don't have " + ao[ck]) + " equipped"))
667+ then throw((("You don't have " + ap[cl]) + " equipped"))
669668 else {
670669 let ee = ed[1]
671- let ef = if (cI(take(drop(ee, 1), 1)))
670+ let ef = if (cJ(take(drop(ee, 1), 1)))
672671 then 2
673672 else 1
674673 let eg = parseIntValue(take(ee, ef))
675674 let eh = drop(ee, ef)
676675 let ei = if ((eg >= ec))
677676 then (eg - ec)
678- else throw(((((("You equipped " + toString(eg)) + " of ") + ao[ck]) + ", but tried to use ") + toString(ec)))
677+ else throw(((((("You equipped " + toString(eg)) + " of ") + ap[cl]) + ", but tried to use ") + toString(ec)))
679678 ((((ed[0] + eb[0]) + ":") + toString(ei)) + eh)
680679 }
681680 }
701700 let el = if ((ek == ""))
702701 then nil
703702 else split_4C(ek, "_")
704- func em (dD,bD) = {
703+ func em (dD,bE) = {
705704 let en = (size(dD) / 8)
706705 let eg = if ((size(el) > en))
707706 then parseIntValue(el[en])
709708 (dD + toBytes(eg))
710709 }
711710
712- let dF = as
711+ let dF = at
713712 let dG = size(dF)
714713 let dH = base58''
715714 func dI (dJ,dK) = if ((dK >= dG))
725724
726725
727726 func eo (ep) = {
728- func eq (dD,bD) = {
727+ func eq (dD,bE) = {
729728 let en = size(dD)
730729 let er = take(drop(ep, (8 * en)), 8)
731730 (dD :+ toString(toInt(er)))
732731 }
733732
734733 makeString_2C({
735- let dF = as
734+ let dF = at
736735 let dG = size(dF)
737736 let dH = nil
738737 func dI (dJ,dK) = if ((dK >= dG))
784783 else {
785784 let eC = parseIntValue(eb[0])
786785 let eD = parseIntValue(eb[1])
787- if (!(containsElement(ar, eC)))
788- then throw((("Product '" + ao[eC]) + "' cannot be used for land defense"))
786+ if (!(containsElement(as, eC)))
787+ then throw((("Product '" + ap[eC]) + "' cannot be used for land defense"))
789788 else if ((0 > eD))
790789 then throw("Count can't be negative")
791790 else if ((eD > q))
792- then throw(((("Can't put more than " + toString(q)) + " of ") + ao[eC]))
791+ then throw(((("Can't put more than " + toString(q)) + " of ") + ap[eC]))
793792 else if ((eD == 0))
794793 then $Tuple3(el, eA, eB)
795794 else {
796795 let eE = take(el, (8 * eC))
797796 let eg = toInt(take(drop(el, (8 * eC)), 8))
798797 let eh = drop(el, (8 * (eC + 1)))
799- let bD = split(as[eC], "_")
798+ let bE = split(at[eC], "_")
800799 if (if (!(ez))
801800 then (eD > eg)
802801 else false)
803- then throw(((((("You have " + toString(eg)) + " of ") + ao[eC]) + ", but tried to use ") + toString(eD)))
802+ then throw(((((("You have " + toString(eg)) + " of ") + ap[eC]) + ", but tried to use ") + toString(eD)))
804803 else {
805804 let ei = if (if (!(ez))
806- then es(et, split(bD[au], ","))
805+ then es(et, split(bE[av], ","))
807806 else false)
808807 then (eg - eD)
809808 else (eg + eD)
810- let eF = (dt(ei, aw) - dt(eg, aw))
809+ let eF = (dt(ei, ax) - dt(eg, ax))
811810 $Tuple3(((eE + toBytes(ei)) + eh), (eA + eF), (eB - eF))
812811 }
813812 }
828827 let eD = parseIntValue(eb[1])
829828 if (if ((0 > eC))
830829 then true
831- else (eC >= size(as)))
830+ else (eC >= size(at)))
832831 then throw("Unknown product idx")
833832 else if ((0 > eD))
834833 then throw("Count can't be negative")
835834 else if ((eD > q))
836- then throw(((("Can't put more than " + toString(q)) + " of ") + ao[eC]))
835+ then throw(((("Can't put more than " + toString(q)) + " of ") + ap[eC]))
837836 else if ((eD == 0))
838837 then $Tuple2(el, false)
839838 else {
840839 let eE = take(el, (8 * eC))
841840 let eg = toInt(take(drop(el, (8 * eC)), 8))
842841 let eh = drop(el, (8 * (eC + 1)))
843- let bD = split(as[eC], "_")
842+ let bE = split(at[eC], "_")
844843 if (if (!(ez))
845844 then (eD > eg)
846845 else false)
847- then throw(((((("You have " + toString(eg)) + " of ") + ao[eC]) + ", but tried to use ") + toString(eD)))
846+ then throw(((((("You have " + toString(eg)) + " of ") + ap[eC]) + ", but tried to use ") + toString(eD)))
848847 else {
849848 let eK = if (if (!(ez))
850- then es(et, split(bD[au], ","))
849+ then es(et, split(bE[av], ","))
851850 else false)
852851 then {
853- let eL = bD[av]
852+ let eL = bE[aw]
854853 if ((eL == ""))
855854 then throw("Item cannot be equipped")
856855 else {
988987 else (dD :+ toString(dV))
989988 }
990989
991- let dF = bV
990+ let dF = bW
992991 let dG = size(dF)
993992 let dH = nil
994993 func dI (dJ,dK) = if ((dK >= dG))
10041003
10051004
10061005 func fp (fk,fl,fm) = {
1007- let fj = split(valueOrElse(getString(cw()), "0_0_0_0_0_0"), "_")
1006+ let fj = split(valueOrElse(getString(cx()), "0_0_0_0_0_0"), "_")
10081007 makeString(fi(fj, fk, fl, fm), "_")
10091008 }
10101009
10141013
10151014 func fs (ft,fk,fu,fl,fv) = {
10161015 func fw (dD,fo) = {
1017- let fx = ((fraction(fu, fv, aj) * fk[fo]) * fl)
1016+ let fx = ((fraction(fu, fv, ak) * fk[fo]) * fl)
10181017 (dD :+ toString((parseIntValue(ft[fo]) + fx)))
10191018 }
10201019
10211020 let dO = {
1022- let dF = bV
1021+ let dF = bW
10231022 let dG = size(dF)
10241023 let dH = nil
10251024 func dI (dJ,dK) = if ((dK >= dG))
10381037
10391038 func fy (fk,fu,fl,fv) = {
10401039 func fw (dD,fo) = {
1041- let fx = ((fraction(fu, fv, aj) * fk[fo]) * fl)
1040+ let fx = ((fraction(fu, fv, ak) * fk[fo]) * fl)
10421041 $Tuple2((dD._1 :+ fx), (dD._2 + fx))
10431042 }
10441043
1045- let dF = bV
1044+ let dF = bW
10461045 let dG = size(dF)
10471046 let dH = $Tuple2(nil, 0)
10481047 func dI (dJ,dK) = if ((dK >= dG))
10671066 func fG (dD,fo) = (dD :+ toString((parseIntValue(fA[fo]) + fE[fo])))
10681067
10691068 let dO = {
1070- let dF = bV
1069+ let dF = bW
10711070 let dG = size(dF)
10721071 let dH = nil
10731072 func dI (dJ,dK) = if ((dK >= dG))
10891088 }
10901089
10911090 let dO = {
1092- let dF = bV
1091+ let dF = bW
10931092 let dG = size(dF)
10941093 let dH = $Tuple2(nil, nil)
10951094 func dI (dJ,dK) = if ((dK >= dG))
11141113
11151114 let fL = [[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]]
11161115
1117-func fM (cF,fN) = {
1118- let fO = toInt((cF % cU))
1116+func fM (cG,fN) = {
1117+ let fO = toInt((cG % cV))
11191118 let fP = if ((fN[0] > fO))
11201119 then "A"
11211120 else if ((fN[1] > fO))
11331132
11341133 func fQ (fR,fS) = {
11351134 let fT = fL[fS]
1136- func fU (dD,dE) = $Tuple2((((((dD._1 + fM(dD._2, fT)) + fM((dD._2 / cU), fT)) + fM((dD._2 / cV), fT)) + fM((dD._2 / cW), fT)) + fM((dD._2 / cX), fT)), (dD._2 / cY))
1135+ func fU (dD,dE) = $Tuple2((((((dD._1 + fM(dD._2, fT)) + fM((dD._2 / cV), fT)) + fM((dD._2 / cW), fT)) + fM((dD._2 / cX), fT)) + fM((dD._2 / cY), fT)), (dD._2 / cZ))
11371136
11381137 let fh = {
11391138 let dF = [1, 2, 3, 4, 5]
11401139 let dG = size(dF)
1141- let dH = $Tuple2("", (fR / cT))
1140+ let dH = $Tuple2("", (fR / cU))
11421141 func dI (dJ,dK) = if ((dK >= dG))
11431142 then dJ
11441143 else fU(dJ, dF[dK])
11581157 let fW = ["A", "B", "C", "D", "E", "F"]
11591158
11601159 func fX (fY,fl) = {
1161- func fZ (dD,cD) = {
1160+ func fZ (dD,cE) = {
11621161 let en = dD._2
1163- let ga = parseIntValue(cD)
1162+ let ga = parseIntValue(cE)
11641163 let fK = if ((ga == 0))
11651164 then 0
11661165 else if ((ga >= (4 * fl)))
11881187 let gb = fh._1
11891188 let gc = value(indexOf(gb, max(gb)))
11901189 let gd = (fh._3 - 25)
1191- func ge (dD,ck) = {
1192- let gf = if ((ck == gc))
1193- then (gb[ck] - gd)
1194- else gb[ck]
1190+ func ge (dD,cl) = {
1191+ let gf = if ((cl == gc))
1192+ then (gb[cl] - gd)
1193+ else gb[cl]
11951194 let gg = if ((gf == 0))
11961195 then nil
11971196 else split(drop(toString(pow(10, 0, gf, 0, 0, DOWN)), 1), "")
1198- let eM = fW[ck]
1197+ let eM = fW[cl]
11991198 func gh (gi,gj) = (gi :+ eM)
12001199
12011200 let gk = {
12161215 }
12171216
12181217 let dO = {
1219- let dF = bV
1218+ let dF = bW
12201219 let dG = size(dF)
12211220 let dH = nil
12221221 func gl (dJ,dK) = if ((dK >= dG))
12481247
12491248 func gq (gr) = {
12501249 let fg = split(valueOrElse(getString(gr), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1251-[toString(valueOrElse(parseInt(fg[aG]), 0)), if ((size(split(fg[aH], "_")) == ah))
1252- then fg[aH]
1253- else "0_0_0_0_0_0", if ((size(split(fg[aI], "_")) == ah))
1250+[toString(valueOrElse(parseInt(fg[aH]), 0)), if ((size(split(fg[aI], "_")) == ah))
12541251 then fg[aI]
1255- else "0_0_0_0_0_0", fg[aJ]]
1252+ else "0_0_0_0_0_0", if ((size(split(fg[aJ], "_")) == ah))
1253+ then fg[aJ]
1254+ else "0_0_0_0_0_0", fg[aK]]
12561255 }
12571256
12581257
12591258 func gs (gt) = {
12601259 let eb = split(gt, "_")
1261- ((ak * (parseIntValue(eb[1]) + 1)) * parseIntValue(eb[0]))
1260+ ((al * (parseIntValue(eb[1]) + 1)) * parseIntValue(eb[0]))
12621261 }
12631262
12641263
12651264 func gu (gv) = {
1266- let gw = gv[aA]
1265+ let gw = gv[aB]
12671266 func gx (dD,gy) = (dD + parseIntValue(gy))
12681267
12691268 func gz (dD,gy) = {
1270- let ck = dD._1
1271- let dw = (((parseIntValue(gy) + aw) - 1) / aw)
1272- $Tuple2((ck + 1), (dD._2 + (dw * bP)))
1269+ let cl = dD._1
1270+ let dw = (((parseIntValue(gy) + ax) - 1) / ax)
1271+ $Tuple2((cl + 1), (dD._2 + (dw * bQ)))
12731272 }
12741273
12751274 let gA = {
1276- let dF = split(gv[ay], "_")
1275+ let dF = split(gv[az], "_")
12771276 let dG = size(dF)
12781277 let dH = 0
12791278 func dI (dJ,dK) = if ((dK >= dG))
12871286 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
12881287 }
12891288 let gB = {
1290- let dF = split(gv[az], "_")
1289+ let dF = split(gv[aA], "_")
12911290 let dG = size(dF)
12921291 let dH = 0
12931292 func gl (dJ,dK) = if ((dK >= dG))
13271326 let gL = if ((5 > size(gJ)))
13281327 then makeString(["0", toString(gK), toString((gH - gK)), toString(gH)], "_")
13291328 else {
1330- let gM = split(gJ[aB], "_")
1331- let gN = parseIntValue(gM[aC])
1329+ let gM = split(gJ[aC], "_")
1330+ let gN = parseIntValue(gM[aD])
13321331 let gO = if ((size(gM) > 1))
1333- then parseIntValue(gM[aD])
1332+ then parseIntValue(gM[aE])
13341333 else gK
13351334 makeString([toString(gN), toString(gO), toString(((gH - gN) - gO)), toString(gH)], "_")
13361335 }
1337-[gJ[ax], if ((size(split(gJ[ay], "_")) == ah))
1338- then gJ[ay]
1339- else "0_0_0_0_0_0", if ((size(split(gJ[az], "_")) == ah))
1336+[gJ[ay], if ((size(split(gJ[az], "_")) == ah))
13401337 then gJ[az]
1341- else "0_0_0_0_0_0", gJ[aA], gL]
1338+ else "0_0_0_0_0_0", if ((size(split(gJ[aA], "_")) == ah))
1339+ then gJ[aA]
1340+ else "0_0_0_0_0_0", gJ[aB], gL]
13421341 }
13431342
13441343
13451344 func gP (gv) = {
13461345 let gQ = gu(gv)
1347- let gR = parseIntValue(split(gv[aB], "_")[aC])
1348- ((gs(gv[ax]) - gQ) - gR)
1346+ let gR = parseIntValue(split(gv[aC], "_")[aD])
1347+ ((gs(gv[ay]) - gQ) - gR)
13491348 }
13501349
13511350
13631362 then throw("All 6 materials should be passed")
13641363 else {
13651364 let fD = gP(gv)
1366- let gY = split(gv[ay], "_")
1367- let gZ = split(gv[az], "_")
1368- let ha = if ((gv[aA] == ""))
1365+ let gY = split(gv[az], "_")
1366+ let gZ = split(gv[aA], "_")
1367+ let ha = if ((gv[aB] == ""))
13691368 then nil
1370- else split_4C(gv[aA], "_")
1371- let fB = split(gU[aH], "_")
1372- let hb = split(gU[aI], "_")
1373- let hc = if ((gU[aJ] == ""))
1369+ else split_4C(gv[aB], "_")
1370+ let fB = split(gU[aI], "_")
1371+ let hb = split(gU[aJ], "_")
1372+ let hc = if ((gU[aK] == ""))
13741373 then nil
1375- else split_4C(gU[aJ], "_")
1374+ else split_4C(gU[aK], "_")
13761375 func hd (dD,gy) = {
13771376 let fo = dD._1
13781377 let he = parseIntValue(gy)
14481447 then if ((he > hm))
14491448 then throw((((("Attempt to take " + gy) + " from backpack, but only ") + toString(hm)) + " available"))
14501449 else {
1451- let eF = (dt((hl + he), aw) - dt(hl, aw))
1450+ let eF = (dt((hl + he), ax) - dt(hl, ax))
14521451 $Tuple4((fo + 1), (dD._2 :+ toString((hl + he))), (dD._3 :+ toString((hm - he))), (dD._4 + eF))
14531452 }
14541453 else if ((-(he) > hl))
14551454 then throw((((("Attempt to take " + toString(-(he))) + " from warehouse, but only ") + toString(hl)) + " available"))
14561455 else {
1457- let eF = (dt((hl + he), aw) - dt(hl, aw))
1456+ let eF = (dt((hl + he), ax) - dt(hl, ax))
14581457 $Tuple4((fo + 1), (dD._2 :+ toString((hl + he))), (dD._3 :+ toString((hm - he))), (dD._4 + eF))
14591458 }
14601459 }
14841483
14851484
14861485 func ho (hp,hq) = {
1487- let bk = toString(hp)
1486+ let bl = toString(hp)
14881487 let hr = fJ(toBigInt(hq))
1489- let hs = valueOrElse(getInteger(da()), (cZ + 1))
1490- let dc = toString(hs)
1491- let fS = toInt((hr % cT))
1488+ let hs = valueOrElse(getInteger(db()), (da + 1))
1489+ let dd = toString(hs)
1490+ let fS = toInt((hr % cU))
14921491 let fr = fQ(hr, fS)
1493- let cy = ap[fS]
1494- let ht = Issue(ds(dc, "S"), makeString([dc, "S", fr, cy], "_"), 1, 0, false)
1495- let aM = calculateAssetId(ht)
1496- let hu = toBase58String(aM)
1497- $Tuple2([IntegerEntry(da(), (hs + 1)), ht, StringEntry(db(dc), hu), StringEntry(aL(hu), bk), StringEntry(dh(dc), bk), IntegerEntry(aP(hu), 0), IntegerEntry(df(hu, bk), 0), ScriptTransfer(hp, 1, aM)], $Tuple2(hu, cy))
1498- }
1499-
1500-
1501-func hv (bk,hw,hx) = if (!(sigVerify_8Kb(hw, hx, cL)))
1492+ let cz = aq[fS]
1493+ let ht = Issue(ds(dd, "S"), makeString([dd, "S", fr, cz], "_"), 1, 0, false)
1494+ let aN = calculateAssetId(ht)
1495+ let hu = toBase58String(aN)
1496+ $Tuple2([IntegerEntry(db(), (hs + 1)), ht, StringEntry(dc(dd), hu), StringEntry(aM(hu), bl), StringEntry(dh(dd), bl), IntegerEntry(aQ(hu), 0), IntegerEntry(dg(hu, bl), 0), ScriptTransfer(hp, 1, aN)], $Tuple2(hu, cz))
1497+ }
1498+
1499+
1500+func hv (bl,hw,hx) = if (!(sigVerify_8Kb(hw, hx, cM)))
15021501 then throw("signature does not match")
15031502 else {
15041503 let eb = split(toUtf8String(hw), ";")
15091508 let hC = split(eb[1], ":")
15101509 let hD = hC[0]
15111510 let hE = parseIntValue(hy[dp])
1512- if (if ((hE > (lastBlock.timestamp + cN)))
1511+ if (if ((hE > (lastBlock.timestamp + cO)))
15131512 then true
1514- else ((lastBlock.timestamp - cN) > hE))
1513+ else ((lastBlock.timestamp - cO) > hE))
15151514 then throw(((("signature outdated: logTime=" + toString(hE)) + ", bcTime=") + toString(lastBlock.timestamp)))
15161515 else {
15171516 let hF = hC[1]
1518- let hG = valueOrElse(getString(aK(bk)), "")
1517+ let hG = valueOrElse(getString(aL(bl)), "")
15191518 if ((hG != hF))
15201519 then throw(((("Tx ids don't match! In state: " + hG) + ", in msg: ") + hF))
15211520 else {
1522- let s = valueOrErrorMessage(getString(bf(bk)), "You don't have a duck staked")
1521+ let s = valueOrErrorMessage(getString(bg(bl)), "You don't have a duck staked")
15231522 let hH = r(s)
15241523 let hI = Q(valueOrElse(getInteger(v(s)), 0))
15251524 let hJ = valueOrElse(getInteger(hH), hI)
15371536 let hM = if (if ((hB > 0))
15381537 then (hK == "$")
15391538 else false)
1540- then cE(invoke(cl, "sendUsdtPrize", [bk], nil))
1539+ then cF(invoke(cm, "sendUsdtPrize", [bl], nil))
15411540 else 0
15421541 $Tuple5(hB, s, hM, hD, hL)
15431542 }
15471546
15481547
15491548 func hN (hp,hq,hw,hx) = {
1550- let bk = toString(hp)
1551- let fT = hv(bk, hw, hx)
1549+ let bl = toString(hp)
1550+ let fT = hv(bl, hw, hx)
15521551 let s = fT._2
15531552 let hH = r(s)
1554- let gr = bg(s)
1553+ let gr = bh(s)
15551554 let gU = gq(gr)
1556- let hO = split(gU[aI], "_")
1557- let hP = makeString(dP(true, hO, cR), "_")
1555+ let hO = split(gU[aJ], "_")
1556+ let hP = makeString(dP(true, hO, cS), "_")
15581557 let hQ = x(s)
15591558 let hR = valueOrElse(getString(hQ), ",;,_,;,_,;,_,;,_,;,_,;,")
15601559 let hS = dW(hR, fT._5)
15631562 else {
15641563 let hT = ho(hp, hq)
15651564 let hu = hT._2._1
1566- $Tuple3(((((hT._1 :+ StringEntry(bh(s), makeString([hT._2._2, "L", hu], "_"))) :+ IntegerEntry(hH, fT._1)) :+ StringEntry(hQ, hS)) :+ StringEntry(gr, makeString([gU[aG], gU[aH], hP, gU[aJ]], ":"))), hu, fT._3)
1567- }
1568- }
1569-
1570-
1571-func hU (aW,hV) = {
1572- let gG = valueOrElse(getInteger(aP(aW)), 0)
1573- let hW = valueOrElse(getInteger(aQ(ag, aW)), 0)
1565+ $Tuple3(((((hT._1 :+ StringEntry(bi(s), makeString([hT._2._2, "L", hu], "_"))) :+ IntegerEntry(hH, fT._1)) :+ StringEntry(hQ, hS)) :+ StringEntry(gr, makeString([gU[aH], gU[aI], hP, gU[aK]], ":"))), hu, fT._3)
1566+ }
1567+ }
1568+
1569+
1570+func hU (aX,hV) = {
1571+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
1572+ let hW = valueOrElse(getInteger(aR(ag, aX)), 0)
15741573 let hX = (gG / 6)
15751574 let hY = (gG / 7)
1576- ((ai + fraction(ai, ((gG + hX) + (2 * hY)), 5)) + fraction(ai, hW, (hV * 5)))
1575+ ((aj + fraction(aj, ((gG + hX) + (2 * hY)), 5)) + fraction(aj, hW, (hV * 5)))
15771576 }
15781577
15791578
15801579 func hZ (b,ia,ib) = {
15811580 let ic = if ((ia == dl))
1582- then $Tuple2(ib, valueOrElse(getString(bf(b)), ""))
1581+ then $Tuple2(ib, valueOrElse(getString(bg(b)), ""))
15831582 else {
1584- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
1585- let id = valueOrElse(getString(bh(s)), al)
1583+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
1584+ let id = valueOrElse(getString(bi(s)), am)
15861585 let ie = split(value(id), "_")
1587- if ((ie[bA] != "L"))
1588- then throw((("Duck location type is " + ie[bA]) + ", but should be L"))
1589- else $Tuple2(ie[bB], s)
1590- }
1591- let aW = ic._1
1586+ if ((ie[bB] != "L"))
1587+ then throw((("Duck location type is " + ie[bB]) + ", but should be L"))
1588+ else $Tuple2(ie[bC], s)
1589+ }
1590+ let aX = ic._1
15921591 let if = ic._2
1593- let ig = value(assetInfo(fromBase58String(aW)))
1594- let ih = aO(aW)
1592+ let ig = value(assetInfo(fromBase58String(aX)))
1593+ let ih = aP(aX)
15951594 let ii = valueOrErrorMessage(getInteger(ih), (("Land " + ig.name) + " is not staked"))
1596- let ij = valueOrErrorMessage(getString(aL(aW)), (("NFT " + ig.name) + " is orphaned"))
1595+ let ij = valueOrErrorMessage(getString(aM(aX)), (("NFT " + ig.name) + " is orphaned"))
15971596 if ((ij != b))
15981597 then throw((ae + " is not yours"))
15991598 else {
16001599 let ik = split(ig.description, "_")
1601- $Tuple4(if, aW, ik, ii)
1600+ $Tuple4(if, aX, ik, ii)
16021601 }
16031602 }
16041603
16071606 then throw("Negative amount")
16081607 else {
16091608 let eM = hZ(b, ia, ib)
1610- let cH = eM._3[cr]
1611- let fk = fq(eM._3[cs])
1609+ let cI = eM._3[cs]
1610+ let fk = fq(eM._3[ct])
16121611 let fu = (lastBlock.timestamp - eM._4)
16131612 if ((0 > fu))
16141613 then throw(((("Saved timestamp is in future, saved = " + toString(eM._4)) + ", current = ") + toString(lastBlock.timestamp)))
16151614 else {
1616- let hV = cG(cH)
1615+ let hV = cH(cI)
16171616 let im = hU(eM._2, hV)
1618- let in = fraction(fu, (im * hV), aj)
1617+ let in = fraction(fu, (im * hV), ak)
16191618 if ((du > in))
16201619 then throw(((("Not enough resources, available = " + toString(in)) + ", requested = ") + toString(du)))
16211620 else {
1622- let io = fraction((in - du), aj, (im * hV))
1621+ let io = fraction((in - du), ak, (im * hV))
16231622 let ip = (lastBlock.timestamp - io)
1624- let gF = (hV / bQ)
1623+ let gF = (hV / bR)
16251624 let fC = fy(fk, (fu - io), gF, im)
1626- let gE = aV(eM._2)
1627- let gG = valueOrElse(getInteger(aP(eM._2)), 0)
1625+ let gE = aW(eM._2)
1626+ let gG = valueOrElse(getInteger(aQ(eM._2)), 0)
16281627 let gv = gD(gE, gF, gG)
1629- let gM = split(gv[aB], "_")
1630- let fD = parseIntValue(gM[aE])
1628+ let gM = split(gv[aC], "_")
1629+ let fD = parseIntValue(gM[aF])
16311630 if (if ((ia == dl))
16321631 then (du > fD)
16331632 else false)
16341633 then throw((("Only " + toString(fD)) + " space left in warehouse"))
16351634 else {
1636- let gr = bg(eM._1)
1635+ let gr = bh(eM._1)
16371636 let gU = gq(gr)
1638- let fB = split(gU[aH], "_")
1639- let fA = split(gv[ay], "_")
1637+ let fB = split(gU[aI], "_")
1638+ let fA = split(gv[az], "_")
16401639 let iq = if ((ia == dl))
1641- then $Tuple4(fs(fA, fk, (fu - io), gF, im), gU[aH], (parseIntValue(gM[aD]) + fC._2), (parseIntValue(gM[aE]) - fC._2))
1640+ then $Tuple4(fs(fA, fk, (fu - io), gF, im), gU[aI], (parseIntValue(gM[aE]) + fC._2), (parseIntValue(gM[aF]) - fC._2))
16421641 else if ((ia == dm))
1643- then $Tuple4(gv[ay], fs(fB, fk, (fu - io), gF, im), parseIntValue(gM[aD]), parseIntValue(gM[aE]))
1642+ then $Tuple4(gv[az], fs(fB, fk, (fu - io), gF, im), parseIntValue(gM[aE]), parseIntValue(gM[aF]))
16441643 else {
16451644 let ir = fz(fA, fB, fC, fD)
1646- let is = min([parseIntValue(gM[aE]), fC._2])
1647- $Tuple4(ir._1, ir._2, (parseIntValue(gM[aD]) + is), (parseIntValue(gM[aE]) - is))
1645+ let is = min([parseIntValue(gM[aF]), fC._2])
1646+ $Tuple4(ir._1, ir._2, (parseIntValue(gM[aE]) + is), (parseIntValue(gM[aF]) - is))
16481647 }
16491648 let it = iq._1
16501649 let iu = iq._2
16511650 let iv = iq._3
16521651 let iw = iq._4
1653- $Tuple5([IntegerEntry(aO(eM._2), ip), IntegerEntry(aS(ae, eM._2, b), ip)], gr, [gU[aG], iu, gU[aI], gU[aJ]], gE, [gv[ax], it, gv[az], gv[aA], makeString([gM[aC], toString(iv), toString(iw), gM[aF]], "_")])
1652+ $Tuple5([IntegerEntry(aP(eM._2), ip), IntegerEntry(aT(ae, eM._2, b), ip)], gr, [gU[aH], iu, gU[aJ], gU[aK]], gE, [gv[ay], it, gv[aA], gv[aB], makeString([gM[aD], toString(iv), toString(iw), gM[aG]], "_")])
16541653 }
16551654 }
16561655 }
16571656 }
16581657
16591658
1660-func ix (b,aW,hV,ia) = {
1661- let ih = aO(aW)
1659+func ix (b,aX,hV,ia) = {
1660+ let ih = aP(aX)
16621661 let ii = value(getInteger(ih))
1663- let in = (fraction((lastBlock.timestamp - ii), hU(aW, hV), aj) * hV)
1664- il(b, in, ia, aW)
1665- }
1666-
1667-
1668-func iy (dQ,hp,iz,aW) = {
1662+ let in = (fraction((lastBlock.timestamp - ii), hU(aX, hV), ak) * hV)
1663+ il(b, in, ia, aX)
1664+ }
1665+
1666+
1667+func iy (dQ,hp,iz,aX) = {
16691668 let b = toString(hp)
1670- let eM = hZ(b, dn, aW)
1671- let hV = cG(eM._3[cr])
1672- let iA = aP(eM._2)
1669+ let eM = hZ(b, dn, aX)
1670+ let hV = cH(eM._3[cs])
1671+ let iA = aQ(eM._2)
16731672 let iB = valueOrElse(getInteger(iA), 0)
1674- if (if (!(bG))
1673+ if (if (!(bH))
16751674 then (iB >= 3)
16761675 else false)
16771676 then throw("Currently max infrastructure level = 3")
16781677 else {
16791678 let iC = ((sqrt(hV, 0, 0, DOWN) / 5) + 2)
16801679 let V = (iB + 1)
1681- if (if (bG)
1680+ if (if (bH)
16821681 then (V > iC)
16831682 else false)
16841683 then throw(("Currently max infrastructure level = " + toString(iC)))
16851684 else {
1686- let iD = fraction(cQ, (hV * V), bQ)
1685+ let iD = fraction(cR, (hV * V), bR)
16871686 if (if (!(dQ))
16881687 then (iz != iD)
16891688 else false)
16901689 then throw(("Payment attached should be " + toString(iD)))
16911690 else {
1692- let gr = bg(eM._1)
1691+ let gr = bh(eM._1)
16931692 let gU = gq(gr)
1694- let hO = split(gU[aI], "_")
1695- let iE = fraction(bL, (hV * V), bQ)
1693+ let hO = split(gU[aJ], "_")
1694+ let iE = fraction(bM, (hV * V), bR)
16961695 let hP = makeString(dP(dQ, hO, iE), "_")
16971696 let iF = ix(b, eM._2, hV, dn)
16981697 let iG = iF._5
1699- let iH = gs(iG[ax])
1700- let iI = makeString([split(iG[ax], "_")[0], toString(V)], "_")
1698+ let iH = gs(iG[ay])
1699+ let iI = makeString([split(iG[ay], "_")[0], toString(V)], "_")
17011700 let iJ = gs(iI)
1702- let gM = split(iG[aB], "_")
1703- let iK = makeString([gM[aC], gM[aD], toString(((parseIntValue(gM[aE]) + iJ) - iH)), toString(iJ)], "_")
1704- $Tuple3(([IntegerEntry(iA, V), IntegerEntry(df(eM._2, b), V), StringEntry(gr, makeString([gU[aG], iF._3[aH], hP, gU[aJ]], ":")), StringEntry(iF._4, makeString([iI, iG[ay], iG[az], iG[aA], iK], ":"))] ++ iF._1), V, iE)
1701+ let gM = split(iG[aC], "_")
1702+ let iK = makeString([gM[aD], gM[aE], toString(((parseIntValue(gM[aF]) + iJ) - iH)), toString(iJ)], "_")
1703+ $Tuple3(([IntegerEntry(iA, V), IntegerEntry(dg(eM._2, b), V), StringEntry(gr, makeString([gU[aH], iF._3[aI], hP, gU[aK]], ":")), StringEntry(iF._4, makeString([iI, iG[az], iG[aA], iG[aB], iK], ":"))] ++ iF._1), V, iE)
17051704 }
17061705 }
17071706 }
17081707 }
17091708
17101709
1711-func iL (s,iM) = if (!(bE))
1710+func iL (s,iM) = if (!(bF))
17121711 then $Tuple2(nil, 0)
17131712 else {
17141713 let iN = v(s)
17211720 }
17221721
17231722
1724-func iR (b,iM) = if (!(bE))
1723+func iR (b,iM) = if (!(bF))
17251724 then $Tuple2(nil, 0)
17261725 else {
17271726 let iN = z(b)
17351734
17361735
17371736 func iS (b) = {
1738- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
1739- let iT = ba(b)
1737+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
1738+ let iT = bb(b)
17401739 let iU = getString(iT)
17411740 if (!(isDefined(iU)))
17421741 then throw("You are not eligible for ONBOARD artifact")
17431742 else {
1744- let iV = bc(b)
1743+ let iV = bd(b)
17451744 let iW = getString(iV)
17461745 if (isDefined(iW))
17471746 then throw(("You already used your ONBOARD artifact on duck " + value(iW)))
17481747 else {
1749- let iX = bb(s)
1748+ let iX = bc(s)
17501749 let iY = getString(iX)
17511750 if (isDefined(iY))
17521751 then throw(((("The duck " + s) + " already got points from ONBOARD artifact from user ") + value(iY)))
17581757
17591758 func iZ (b,ib) = {
17601759 let eM = hZ(b, dn, ib)
1761- let aW = eM._2
1762- let hV = cG(eM._3[cr])
1763- let ja = aQ(ag, aW)
1760+ let aX = eM._2
1761+ let hV = cH(eM._3[cs])
1762+ let ja = aR(ag, aX)
17641763 if ((valueOrElse(getInteger(ja), 0) > 0))
17651764 then throw("Presale artifact is already activated")
1766- else if ((parseIntValue(eM._3[cq]) > cZ))
1767- then throw((((ae + " ") + aW) + " is not eligible for presale artifact"))
1765+ else if ((parseIntValue(eM._3[cr]) > da))
1766+ then throw((((ae + " ") + aX) + " is not eligible for presale artifact"))
17681767 else {
1769- let iF = ix(b, aW, hV, dn)
1770- ((((iF._1 :+ IntegerEntry(ja, hV)) :+ IntegerEntry(dg(ag, aW, b), hV)) :+ StringEntry(iF._2, makeString(iF._3, ":"))) :+ StringEntry(iF._4, makeString(iF._5, ":")))
1768+ let iF = ix(b, aX, hV, dn)
1769+ (((iF._1 :+ IntegerEntry(ja, hV)) :+ StringEntry(iF._2, makeString(iF._3, ":"))) :+ StringEntry(iF._4, makeString(iF._5, ":")))
17711770 }
17721771 }
17731772
17741773
17751774 func jb (s) = {
1776- let jc = valueOrElse(getInteger(cp, bm), 0)
1777- let id = split(valueOrElse(getString(bh(s)), al), "_")
1775+ let jc = valueOrElse(getInteger(cq, bn), 0)
1776+ let id = split(valueOrElse(getString(bi(s)), am), "_")
17781777 let jd = lastBlock.timestamp
1779- let je = bs(cp, jc)
1780- let bu = je[bq]
1778+ let je = bt(cq, jc)
17811779 let bv = je[br]
1782- if ((id[bA] != "T"))
1780+ let bw = je[bs]
1781+ if ((id[bB] != "T"))
17831782 then false
17841783 else {
1785- let dV = if (if (if ((parseIntValue(id[bz]) == jc))
1786- then (bv[bx] == "INPROGRESS")
1784+ let dV = if (if (if ((parseIntValue(id[bA]) == jc))
1785+ then (bw[by] == "INPROGRESS")
17871786 else false)
1788- then (parseIntValue(bu[bw]) > jd)
1787+ then (parseIntValue(bv[bx]) > jd)
17891788 else false)
17901789 then throw("Your duck is taking part in the tournament")
17911790 else invoke(this, "exitTournamentInternal", [s], nil)
17971796
17981797
17991798 func jf (jg,V,jh,b,ji,jj) = {
1800- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
1799+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
18011800 if (jb(s))
18021801 then throw("mergeInternal_checkTournament")
18031802 else {
1804- func jk (dD,aW) = {
1805- let ig = value(assetInfo(fromBase58String(aW)))
1806- let ih = aO(aW)
1803+ func jk (dD,aX) = {
1804+ let ig = value(assetInfo(fromBase58String(aX)))
1805+ let ih = aP(aX)
18071806 let ii = valueOrErrorMessage(getInteger(ih), (("NFT " + ig.name) + " is not staked"))
1808- let ij = valueOrErrorMessage(getString(aL(aW)), (("NFT " + ig.name) + " is orphaned"))
1807+ let ij = valueOrErrorMessage(getString(aM(aX)), (("NFT " + ig.name) + " is orphaned"))
18091808 if ((ij != b))
18101809 then throw((ae + " is not yours"))
18111810 else {
18121811 let ik = split(ig.description, "_")
1813- let cy = ik[ct]
1812+ let cz = ik[cu]
18141813 if (if ((dD._3 != ""))
1815- then (dD._3 != cy)
1814+ then (dD._3 != cz)
18161815 else false)
18171816 then throw("Lands should be on the same continent to merge")
18181817 else {
1819- let cH = ik[cr]
1818+ let cI = ik[cs]
18201819 let jl = dD._1
1821- let fo = valueOrErrorMessage(indexOf(jl, cH), "You haven't passed all the lands needed")
1820+ let fo = valueOrErrorMessage(indexOf(jl, cI), "You haven't passed all the lands needed")
18221821 let jm = (take(jl, fo) + drop(jl, (fo + 1)))
1823- let hV = cG(cH)
1824- let jn = (dD._2 + valueOrElse(getInteger(aQ(ag, aW)), 0))
1825- let gG = valueOrElse(getInteger(aP(aW)), 0)
1822+ let hV = cH(cI)
1823+ let jn = (dD._2 + valueOrElse(getInteger(aR(ag, aX)), 0))
1824+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
18261825 let jo = {
1827- let bJ = cH
1828- if (("S" == bJ))
1826+ let bK = cI
1827+ if (("S" == bK))
18291828 then 3
1830- else if (("M" == bJ))
1829+ else if (("M" == bK))
18311830 then 4
1832- else if (("L" == bJ))
1831+ else if (("L" == bK))
18331832 then 5
1834- else if (("XL" == bJ))
1833+ else if (("XL" == bK))
18351834 then 6
18361835 else throw("Only S, M, L, XL can merge")
18371836 }
18381837 if ((gG != jo))
18391838 then throw("All lands should be maxed to merge")
18401839 else {
1841- let dc = ik[cq]
1842- let fk = fq(ik[cs])
1840+ let dd = ik[cr]
1841+ let fk = fq(ik[ct])
18431842 let fu = (lastBlock.timestamp - ii)
18441843 if ((0 > fu))
18451844 then throw(((("Saved timestamp is in future, saved = " + toString(ii)) + ", current = ") + toString(lastBlock.timestamp)))
18461845 else {
1847- let im = hU(aW, hV)
1848- let gF = (hV / bQ)
1846+ let im = hU(aX, hV)
1847+ let gF = (hV / bR)
18491848 let iu = fs(split(dD._4, "_"), fk, fu, gF, im)
18501849 let dN = fi(dD._6, fk, gF, -1)
18511850 let jp = fi(dD._10, fk, gF, -1)
18521851 let fY = fi(dD._9, fk, gF, 1)
18531852 let jq = dD._7
1854- let ck = indexOf(jq, aW)
1855- if (!(isDefined(ck)))
1856- then throw(("Your staked lands don't contain " + aW))
1853+ let cl = indexOf(jq, aX)
1854+ if (!(isDefined(cl)))
1855+ then throw(("Your staked lands don't contain " + aX))
18571856 else {
1858- let jr = aN(aW)
1857+ let jr = aO(aX)
18591858 let js = valueOrElse(getString(jr), "")
1860- $Tuple10(jm, jn, cy, iu, (((((((((((((dD._5 :+ DeleteEntry(aO(aW))) :+ DeleteEntry(aS(ae, aW, b))) :+ DeleteEntry(db(dc))) :+ DeleteEntry(aL(aW))) :+ DeleteEntry(aP(aW))) :+ DeleteEntry(df(aW, b))) :+ DeleteEntry(aQ(ag, aW))) :+ DeleteEntry(dg(ag, aW, b))) :+ DeleteEntry(dh(dc))) :+ DeleteEntry(aV(aW))) :+ DeleteEntry(jr)) :+ Burn(fromBase58String(aW), 1)) ++ (if ((js != ""))
1861- then [DeleteEntry(dd(js))]
1862- else nil)), dN, removeByIndex(jq, value(ck)), (dD._8 + hV), fY, jp)
1859+ $Tuple10(jm, jn, cz, iu, ((((((((((((dD._5 :+ DeleteEntry(aP(aX))) :+ DeleteEntry(aT(ae, aX, b))) :+ DeleteEntry(dc(dd))) :+ DeleteEntry(aM(aX))) :+ DeleteEntry(aQ(aX))) :+ DeleteEntry(dg(aX, b))) :+ DeleteEntry(aR(ag, aX))) :+ DeleteEntry(dh(dd))) :+ DeleteEntry(aW(aX))) :+ DeleteEntry(jr)) :+ Burn(fromBase58String(aX), 1)) ++ (if ((js != ""))
1860+ then [DeleteEntry(de(js))]
1861+ else nil)), dN, removeByIndex(jq, value(cl)), (dD._8 + hV), fY, jp)
18631862 }
18641863 }
18651864 }
18671866 }
18681867 }
18691868
1870- let gr = bg(s)
1869+ let gr = bh(s)
18711870 let gU = gq(gr)
1872- let fj = split(valueOrElse(getString(cw()), "0_0_0_0_0_0"), "_")
1873- let jt = cz(b)
1871+ let fj = split(valueOrElse(getString(cx()), "0_0_0_0_0_0"), "_")
1872+ let jt = cA(b)
18741873 let ju = getString(jt)
18751874 let jv = if (isDefined(ju))
18761875 then split_51C(value(ju), "_")
18771876 else nil
1878- let jw = split(value(assetInfo(fromBase58String(ji[0]))).description, "_")[ct]
1879- let jx = split(valueOrElse(getString(cx(jw)), "0_0_0_0_0_0"), "_")
1877+ let jw = split(value(assetInfo(fromBase58String(ji[0]))).description, "_")[cu]
1878+ let jx = split(valueOrElse(getString(cy(jw)), "0_0_0_0_0_0"), "_")
18801879 let dO = {
18811880 let dF = ji
18821881 let dG = size(dF)
1883- let dH = $Tuple10(jh, 0, "", gU[aH], nil, fj, jv, 0, split("0_0_0_0_0_0", "_"), jx)
1882+ let dH = $Tuple10(jh, 0, "", gU[aI], nil, fj, jv, 0, split("0_0_0_0_0_0", "_"), jx)
18841883 func dI (dJ,dK) = if ((dK >= dG))
18851884 then dJ
18861885 else jk(dJ, dF[dK])
18911890
18921891 dL(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5)
18931892 }
1894- let cy = dO._3
1895- let fS = valueOrErrorMessage(indexOf(ap, cy), ("Unknown continent: " + cy))
1896- let fr = fX(dO._9, (cG(jg) / bQ))
1897- let hs = valueOrElse(getInteger(da()), (cZ + 1))
1893+ let cz = dO._3
1894+ let fS = valueOrErrorMessage(indexOf(aq, cz), ("Unknown continent: " + cz))
1895+ let fr = fX(dO._9, (cH(jg) / bR))
1896+ let hs = valueOrElse(getInteger(db()), (da + 1))
18981897 let jy = toString(hs)
1899- let ht = Issue(ds(jy, jg), makeString([jy, jg, fr, cy], "_"), 1, 0, false)
1900- let aM = calculateAssetId(ht)
1901- let jz = toBase58String(aM)
1902- let hP = makeString(dP((jj > 0), split(gU[aI], "_"), jj), "_")
1903- let jA = cA(b)
1898+ let ht = Issue(ds(jy, jg), makeString([jy, jg, fr, cz], "_"), 1, 0, false)
1899+ let aN = calculateAssetId(ht)
1900+ let jz = toBase58String(aN)
1901+ let hP = makeString(dP((jj > 0), split(gU[aJ], "_"), jj), "_")
1902+ let jA = cB(b)
19041903 let jB = valueOrElse(getInteger(jA), 0)
1905- $Tuple2(((((((((((((((((dO._5 :+ (if ((size(dO._7) > 0))
1904+ $Tuple2((((((((((((((((dO._5 :+ (if ((size(dO._7) > 0))
19061905 then StringEntry(jt, makeString_11C(dO._7, "_"))
19071906 else DeleteEntry(jt))) :+ IntegerEntry(jA, if ((dO._8 > jB))
19081907 then 0
1909- else (jB - dO._8))) :+ IntegerEntry(da(), (hs + 1))) :+ ht) :+ StringEntry(db(jy), jz)) :+ StringEntry(aL(jz), b)) :+ StringEntry(dh(jy), b)) :+ IntegerEntry(aQ(ag, jz), dO._2)) :+ IntegerEntry(dg(ag, jz, b), dO._2)) :+ IntegerEntry(aP(jz), V)) :+ IntegerEntry(df(jz, b), V)) :+ StringEntry(gr, makeString([gU[aG], dO._4, hP, gU[aJ]], ":"))) :+ StringEntry(cw(), makeString(dO._6, "_"))) :+ StringEntry(cx(cy), makeString(dO._10, "_"))) :+ StringEntry(bh(s), makeString([cy, "L", jz], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aM)), jz)
1908+ else (jB - dO._8))) :+ IntegerEntry(db(), (hs + 1))) :+ ht) :+ StringEntry(dc(jy), jz)) :+ StringEntry(aM(jz), b)) :+ StringEntry(dh(jy), b)) :+ IntegerEntry(aR(ag, jz), dO._2)) :+ IntegerEntry(aQ(jz), V)) :+ IntegerEntry(dg(jz, b), V)) :+ StringEntry(gr, makeString([gU[aH], dO._4, hP, gU[aK]], ":"))) :+ StringEntry(cx(), makeString(dO._6, "_"))) :+ StringEntry(cy(cz), makeString(dO._10, "_"))) :+ StringEntry(bi(s), makeString([cz, "L", jz], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aN)), jz)
19101909 }
19111910 }
19121911
19141913 func jC (b,ji) = jf("M", 3, "SSSS", b, ji, 0)
19151914
19161915
1917-func jD (b,ji) = jf("L", 4, "SMM", b, ji, (bL * 4))
1918-
1919-
1920-func jE (b,ji) = jf("XL", 5, "SSSML", b, ji, (bL * 47))
1921-
1922-
1923-func jF (b,ji) = jf("XXL", 6, "LXL", b, ji, (bL * 54))
1916+func jD (b,ji) = jf("L", 4, "SMM", b, ji, (bM * 4))
1917+
1918+
1919+func jE (b,ji) = jf("XL", 5, "SSSML", b, ji, (bM * 47))
1920+
1921+
1922+func jF (b,ji) = jf("XXL", 6, "LXL", b, ji, (bM * 54))
19241923
19251924
19261925 func jG (b,ji) = {
1927- let bJ = size(ji)
1928- if ((4 == bJ))
1926+ let bK = size(ji)
1927+ if ((4 == bK))
19291928 then jC(b, ji)
1930- else if ((3 == bJ))
1929+ else if ((3 == bK))
19311930 then jD(b, ji)
1932- else if ((5 == bJ))
1931+ else if ((5 == bK))
19331932 then jE(b, ji)
1934- else if ((2 == bJ))
1933+ else if ((2 == bK))
19351934 then jF(b, ji)
19361935 else throw("Unknown merge")
19371936 }
19381937
19391938
1940-func jH (fo) = if (if ((fo.originCaller != cl))
1941- then valueOrElse(getBoolean(bi()), false)
1939+func jH (fo) = if (if ((fo.originCaller != cm))
1940+ then valueOrElse(getBoolean(bj()), false)
19421941 else false)
19431942 then throw("Contracts are under maintenance")
1944- else StringEntry(aK(toString(fo.originCaller)), toBase58String(fo.transactionId))
1943+ else StringEntry(aL(toString(fo.originCaller)), toBase58String(fo.transactionId))
19451944
19461945
19471946 @Callable(fo)
19481947 func constructorV1 (jI) = if ((fo.caller != this))
19491948 then throw("Permission denied")
1950- else [StringEntry(cf(), jI)]
1949+ else [StringEntry(cg(), jI)]
19511950
19521951
19531952
19541953 @Callable(fo)
19551954 func setBlocked (jJ) = if ((fo.caller != this))
19561955 then throw("permission denied")
1957- else [BooleanEntry(bi(), jJ)]
1956+ else [BooleanEntry(bj(), jJ)]
19581957
19591958
19601959
19651964 then throw("Exactly one payment required")
19661965 else {
19671966 let jL = value(fo.payments[0])
1968- let aM = value(jL.assetId)
1969- let bX = toString(fo.caller)
1967+ let aN = value(jL.assetId)
1968+ let bY = toString(fo.caller)
19701969 if ((jL.amount != 1))
19711970 then throw((("NFT " + ae) + " token should be attached as payment"))
19721971 else {
1973- let ig = value(assetInfo(aM))
1972+ let ig = value(assetInfo(aN))
19741973 if ((ig.issuer != this))
19751974 then throw("Unknown issuer of token")
19761975 else if (!(contains(ig.name, ae)))
19771976 then throw((("Only NFT " + ae) + " tokens are accepted"))
19781977 else {
19791978 let jM = drop(ig.name, 4)
1980- let dc = if (contains(jM, "XXL"))
1979+ let dd = if (contains(jM, "XXL"))
19811980 then dropRight(jM, 3)
19821981 else if (contains(jM, "XL"))
19831982 then dropRight(jM, 2)
19841983 else dropRight(jM, 1)
1985- if (!(isDefined(parseInt(dc))))
1984+ if (!(isDefined(parseInt(dd))))
19861985 then throw(("Cannot parse land number from " + ig.name))
19871986 else {
1988- let aW = toBase58String(aM)
1989- let ih = aO(aW)
1987+ let aX = toBase58String(aN)
1988+ let ih = aP(aX)
19901989 if (isDefined(getInteger(ih)))
19911990 then throw((("NFT " + ig.name) + " is already staked"))
19921991 else {
19931992 let ik = split(ig.description, "_")
1994- let fk = fq(ik[cs])
1995- let hV = cG(ik[cr])
1996- let gF = (hV / bQ)
1993+ let fk = fq(ik[ct])
1994+ let hV = cH(ik[cs])
1995+ let gF = (hV / bR)
19971996 let dN = fp(fk, gF, 1)
1998- let jN = cx(ik[ct])
1997+ let jN = cy(ik[cu])
19991998 let jx = split(valueOrElse(getString(jN), "0_0_0_0_0_0"), "_")
20001999 let jO = makeString(fi(jx, fk, gF, 1), "_")
2001- let hW = valueOrElse(getInteger(aQ(ag, aW)), 0)
2002- let jt = cz(bX)
2000+ let jt = cA(bY)
20032001 let ju = getString(jt)
20042002 let jq = if (isDefined(ju))
20052003 then split_51C(value(ju), "_")
20062004 else nil
2007- if (containsElement(jq, aW))
2008- then throw(("Your staked lands already contain " + aW))
2009- else {
2010- let gG = valueOrElse(getInteger(aP(aW)), 0)
2011- let jA = cA(bX)
2012- let jP = valueOrElse(getInteger(jA), 0)
2013- let jQ = cE(invoke(co, "onStakeUnstakeLand", [bX], nil))
2014- $Tuple2([IntegerEntry(ih, lastBlock.timestamp), IntegerEntry(aS(ae, aW, bX), lastBlock.timestamp), StringEntry(jt, makeString_11C((jq :+ aW), "_")), IntegerEntry(jA, (jP + hV)), StringEntry(aL(aW), bX), StringEntry(dh(dc), bX), IntegerEntry(dg(ag, aW, bX), hW), IntegerEntry(df(aW, bX), gG), StringEntry(cw(), dN), StringEntry(jN, jO), jK], jQ)
2015- }
2005+ if (containsElement(jq, aX))
2006+ then throw(("Your staked lands already contain " + aX))
2007+ else if ((size(jq) >= ai))
2008+ then throw((("Your already staked max (" + toString(ai)) + ") lands"))
2009+ else {
2010+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
2011+ let jA = cB(bY)
2012+ let jP = valueOrElse(getInteger(jA), 0)
2013+ let jQ = cF(invoke(cp, "onStakeUnstakeLand", [bY], nil))
2014+ $Tuple2([IntegerEntry(ih, lastBlock.timestamp), IntegerEntry(aT(ae, aX, bY), lastBlock.timestamp), StringEntry(jt, makeString_11C((jq :+ aX), "_")), IntegerEntry(jA, (jP + hV)), StringEntry(aM(aX), bY), StringEntry(dh(dd), bY), IntegerEntry(dg(aX, bY), gG), StringEntry(cx(), dN), StringEntry(jN, jO), jK], jQ)
2015+ }
20162016 }
20172017 }
20182018 }
20302030 else {
20312031 let b = toString(fo.caller)
20322032 let eM = hZ(b, dm, ib)
2033- let aW = eM._2
2033+ let aX = eM._2
20342034 let ik = eM._3
2035- let jt = cz(b)
2036- let fk = fq(ik[cs])
2037- let hV = cG(ik[cr])
2038- let gF = (hV / bQ)
2035+ let jt = cA(b)
2036+ let fk = fq(ik[ct])
2037+ let hV = cH(ik[cs])
2038+ let gF = (hV / bR)
20392039 let dN = fp(fk, gF, -1)
2040- let jN = cx(ik[ct])
2040+ let jN = cy(ik[cu])
20412041 let jx = split(valueOrElse(getString(jN), "0_0_0_0_0_0"), "_")
20422042 let jO = makeString(fi(jx, fk, gF, -1), "_")
2043- let iF = ix(b, aW, hV, dm)
2043+ let iF = ix(b, aX, hV, dm)
20442044 let jq = split_51C(valueOrElse(getString(jt), ""), "_")
2045- let ck = indexOf(jq, aW)
2046- if (!(isDefined(ck)))
2047- then throw(("Your staked lands don't contain " + aW))
2045+ let cl = indexOf(jq, aX)
2046+ if (!(isDefined(cl)))
2047+ then throw(("Your staked lands don't contain " + aX))
20482048 else {
20492049 let jd = lastBlock.timestamp
2050- let jR = valueOrElse(getInteger(cn, bj(b)), 0)
2050+ let jR = valueOrElse(getInteger(co, bk(b)), 0)
20512051 if ((jR >= jd))
20522052 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(jR)))
20532053 else {
2054- let jS = (valueOrElse(getInteger(co, a(b)), 0) + bM)
2054+ let jS = (valueOrElse(getInteger(cp, a(b)), 0) + bN)
20552055 if ((jS > jd))
20562056 then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(jS)))
20572057 else {
2058- let jA = cA(b)
2058+ let jA = cB(b)
20592059 let jB = valueOrElse(getInteger(jA), 0)
20602060 let jT = if ((hV > jB))
20612061 then 0
20622062 else (jB - hV)
2063- let jQ = cE(invoke(co, "onStakeUnstakeLand", [b], nil))
2064- $Tuple2([ScriptTransfer(fo.caller, 1, fromBase58String(aW)), DeleteEntry(aO(aW)), DeleteEntry(aS(ae, aW, b)), StringEntry(cw(), dN), StringEntry(jN, jO), StringEntry(iF._2, makeString(iF._3, ":")), if ((size(jq) > 1))
2065- then StringEntry(jt, makeString_11C(removeByIndex(jq, value(ck)), "_"))
2063+ let jQ = cF(invoke(cp, "onStakeUnstakeLand", [b], nil))
2064+ $Tuple2([ScriptTransfer(fo.caller, 1, fromBase58String(aX)), DeleteEntry(aP(aX)), DeleteEntry(aT(ae, aX, b)), StringEntry(cx(), dN), StringEntry(jN, jO), StringEntry(iF._2, makeString(iF._3, ":")), if ((size(jq) > 1))
2065+ then StringEntry(jt, makeString_11C(removeByIndex(jq, value(cl)), "_"))
20662066 else DeleteEntry(jt), IntegerEntry(jA, jT), jK], jQ)
20672067 }
20682068 }
20792079 then throw("Exactly one payment required")
20802080 else {
20812081 let jL = value(fo.payments[0])
2082- let aM = value(jL.assetId)
2083- let bX = toString(fo.caller)
2082+ let aN = value(jL.assetId)
2083+ let bY = toString(fo.caller)
20842084 if ((jL.amount != 1))
20852085 then throw((("NFT " + af) + " token should be attached as payment"))
20862086 else {
2087- let ig = value(assetInfo(aM))
2088- if (if ((ig.issuer != cJ))
2089- then (ig.issuer != cK)
2087+ let ig = value(assetInfo(aN))
2088+ if (if ((ig.issuer != cK))
2089+ then (ig.issuer != cL)
20902090 else false)
20912091 then throw((("Unknown issuer of " + af) + " token"))
20922092 else if (!(contains(ig.name, af)))
20932093 then throw((("Only NFT " + af) + " tokens are accepted"))
20942094 else {
2095- let jU = toBase58String(aM)
2096- let ih = aO(jU)
2095+ let jU = toBase58String(aN)
2096+ let ih = aP(jU)
20972097 if (isDefined(getInteger(ih)))
20982098 then throw((("NFT " + ig.name) + " is already staked"))
2099- else if (isDefined(getString(bf(bX))))
2099+ else if (isDefined(getString(bg(bY))))
21002100 then throw(("You already staked one duck: " + ig.name))
21012101 else if (jb(jU))
21022102 then throw("stakeDuck_checkTournament")
21032103 else {
2104- let jV = bh(jU)
2104+ let jV = bi(jU)
21052105 let jW = getString(jV)
2106- let gr = bg(jU)
2106+ let gr = bh(jU)
21072107 let jX = getString(gr)
21082108 let hH = r(jU)
21092109 let hI = Q(valueOrElse(getInteger(v(jU)), 0))
21102110 let jY = valueOrElse(getInteger(hH), hI)
2111- ([IntegerEntry(ih, lastBlock.timestamp), IntegerEntry(aS(af, toBase58String(aM), bX), lastBlock.timestamp), StringEntry(be(jU), bX), StringEntry(bf(bX), jU)] ++ (if (isDefined(jW))
2111+ ([IntegerEntry(ih, lastBlock.timestamp), IntegerEntry(aT(af, toBase58String(aN), bY), lastBlock.timestamp), StringEntry(bf(jU), bY), StringEntry(bg(bY), jU)] ++ (if (isDefined(jW))
21122112 then nil
2113- else ([StringEntry(jV, al)] ++ (if (isDefined(jX))
2113+ else ([StringEntry(jV, am)] ++ (if (isDefined(jX))
21142114 then nil
21152115 else (([StringEntry(gr, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(hH, jY)) :+ jK)))))
21162116 }
21272127 if ((size(fo.payments) != 0))
21282128 then throw("No payments required")
21292129 else {
2130- let aM = fromBase58String(jU)
2131- let bX = toString(fo.caller)
2132- let ig = value(assetInfo(aM))
2133- let ih = aO(jU)
2130+ let aN = fromBase58String(jU)
2131+ let bY = toString(fo.caller)
2132+ let ig = value(assetInfo(aN))
2133+ let ih = aP(jU)
21342134 if (!(isDefined(getInteger(ih))))
21352135 then throw((("NFT " + ig.name) + " is not staked"))
2136- else if (!(isDefined(getString(bf(bX)))))
2136+ else if (!(isDefined(getString(bg(bY)))))
21372137 then throw((("The duck " + ig.name) + " is not staked"))
21382138 else {
2139- let ij = valueOrErrorMessage(getString(be(jU)), (("NFT " + ig.name) + " is orphaned"))
2140- if ((ij != bX))
2139+ let ij = valueOrErrorMessage(getString(bf(jU)), (("NFT " + ig.name) + " is orphaned"))
2140+ if ((ij != bY))
21412141 then throw("Staked NFT is not yours")
21422142 else if (jb(jU))
21432143 then throw("unstakeDuck_checkTournament")
21472147 let ad = valueOrElse(getInteger(hH), hI)
21482148 if ((hI > ad))
21492149 then throw((("Please heal your duck to " + toString(hI)) + "hp before unstaking"))
2150- else [ScriptTransfer(fo.caller, 1, aM), DeleteEntry(ih), DeleteEntry(hH), DeleteEntry(bh(jU)), DeleteEntry(be(jU)), DeleteEntry(aS(af, jU, bX)), DeleteEntry(bf(bX)), jK]
2150+ else [ScriptTransfer(fo.caller, 1, aN), DeleteEntry(ih), DeleteEntry(hH), DeleteEntry(bi(jU)), DeleteEntry(bf(jU)), DeleteEntry(aT(af, jU, bY)), DeleteEntry(bg(bY)), jK]
21512151 }
21522152 }
21532153 }
21632163 else {
21642164 let b = toString(fo.originCaller)
21652165 let dV = il(b, du, dm, jZ)
2166- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
2167- $Tuple2(((((dV._1 ++ iL(s, fraction(E, du, bP))._1) :+ StringEntry(dV._2, makeString(dV._3, ":"))) :+ StringEntry(dV._4, makeString(dV._5, ":"))) :+ jK), dV._3[aH])
2166+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
2167+ $Tuple2(((((dV._1 ++ iL(s, fraction(E, du, bQ))._1) :+ StringEntry(dV._2, makeString(dV._3, ":"))) :+ StringEntry(dV._4, makeString(dV._5, ":"))) :+ jK), dV._3[aI])
21682168 }
21692169 }
21702170
21782178 else {
21792179 let b = toString(fo.originCaller)
21802180 let dV = il(b, du, dl, jZ)
2181- $Tuple2(((((dV._1 ++ iR(b, fraction(E, du, bP))._1) :+ StringEntry(dV._2, makeString(dV._3, ":"))) :+ StringEntry(dV._4, makeString(dV._5, ":"))) :+ jK), dV._5[ay])
2181+ $Tuple2(((((dV._1 ++ iR(b, fraction(E, du, bQ))._1) :+ StringEntry(dV._2, makeString(dV._3, ":"))) :+ StringEntry(dV._4, makeString(dV._5, ":"))) :+ jK), dV._5[az])
21822182 }
21832183 }
21842184
21902190 if ((size(fo.payments) != 0))
21912191 then throw("No payments required")
21922192 else {
2193- let bk = toString(fo.caller)
2194- let fT = hv(bk, hw, hx)
2193+ let bl = toString(fo.caller)
2194+ let fT = hv(bl, hw, hx)
21952195 let s = fT._2
21962196 let hD = fT._4
21972197 let ka = split(hD, "_")
2198- let kb = (ka[bA] == "T")
2198+ let kb = (ka[bB] == "T")
21992199 if (if (!(kb))
22002200 then jb(s)
22012201 else false)
22032203 else {
22042204 let kc = if (kb)
22052205 then {
2206- let jc = valueOrElse(getInteger(cp, bm), 0)
2206+ let jc = valueOrElse(getInteger(cq, bn), 0)
22072207 let jd = lastBlock.timestamp
2208- let je = bs(cp, jc)
2209- let bu = je[bq]
2208+ let je = bt(cq, jc)
22102209 let bv = je[br]
2211- if (if (if ((parseIntValue(ka[bz]) != jc))
2210+ let bw = je[bs]
2211+ if (if (if ((parseIntValue(ka[bA]) != jc))
22122212 then true
2213- else (bv[bx] != "INPROGRESS"))
2213+ else (bw[by] != "INPROGRESS"))
22142214 then true
2215- else (jd > parseIntValue(bu[bw])))
2215+ else (jd > parseIntValue(bv[bx])))
22162216 then unit
22172217 else {
2218- let kd = parseIntValue(ka[bB])
2219- let ke = parseIntValue(bv[by])
2218+ let kd = parseIntValue(ka[bC])
2219+ let ke = parseIntValue(bw[bz])
22202220 if ((ke >= kd))
22212221 then unit
2222- else invoke(cp, "updateDynamicData", [s, kd], nil)
2222+ else invoke(cq, "updateDynamicData", [s, kd], nil)
22232223 }
22242224 }
22252225 else unit
22262226 if ((kc == kc))
22272227 then {
2228- let jV = bh(s)
2229- let id = valueOrElse(getString(jV), al)
2228+ let jV = bi(s)
2229+ let id = valueOrElse(getString(jV), am)
22302230 if ((hD == id))
22312231 then throw("You can't fly to the same location")
22322232 else {
22572257 else (0 > kh))
22582258 then throw("Quantity cannot be negative")
22592259 else {
2260- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
2260+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
22612261 if (jb(s))
22622262 then throw("heal_checkTournament")
22632263 else {
22682268 if ((kj >= hI))
22692269 then throw((("HP should be < " + toString(hI)) + " to heal"))
22702270 else {
2271- let gr = bg(s)
2271+ let gr = bh(s)
22722272 let gU = gq(gr)
2273- let kk = if ((gU[aJ] == ""))
2273+ let kk = if ((gU[aK] == ""))
22742274 then nil
2275- else split_4C(gU[aJ], "_")
2275+ else split_4C(gU[aK], "_")
22762276 func kl (dD,km) = {
2277- let cF = dD._2
2278- let fK = if ((size(kk) > cF))
2279- then parseIntValue(kk[cF])
2277+ let cG = dD._2
2278+ let fK = if ((size(kk) > cG))
2279+ then parseIntValue(kk[cG])
22802280 else 0
2281- if ((3 > cF))
2281+ if ((3 > cG))
22822282 then {
2283- let kn = ki[cF]
2283+ let kn = ki[cG]
22842284 if ((kn > fK))
2285- then throw(((("You have only " + toString(fK)) + " of ") + ao[cF]))
2286- else $Tuple3((dD._1 :+ toString((fK - kn))), (cF + 1), (dD._3 + (cM[cF] * kn)))
2285+ then throw(((("You have only " + toString(fK)) + " of ") + ap[cG]))
2286+ else $Tuple3((dD._1 :+ toString((fK - kn))), (cG + 1), (dD._3 + (cN[cG] * kn)))
22872287 }
2288- else $Tuple3((dD._1 :+ toString(fK)), (cF + 1), dD._3)
2288+ else $Tuple3((dD._1 :+ toString(fK)), (cG + 1), dD._3)
22892289 }
22902290
22912291 let dV = {
2292- let dF = as
2292+ let dF = at
22932293 let dG = size(dF)
22942294 let dH = $Tuple3(nil, 0, 0)
22952295 func dI (dJ,dK) = if ((dK >= dG))
23032303 dL(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dH, 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)
23042304 }
23052305 let ko = min([hI, (kj + dV._3)])
2306- $Tuple2(([IntegerEntry(hH, ko), StringEntry(gr, makeString_2C([gU[aG], gU[aH], gU[aI], makeString(dV._1, "_")], ":")), jK] ++ iL(s, (N * ((kf + kg) + kh)))._1), ko)
2306+ $Tuple2(([IntegerEntry(hH, ko), StringEntry(gr, makeString_2C([gU[aH], gU[aI], gU[aJ], makeString(dV._1, "_")], ":")), jK] ++ iL(s, (N * ((kf + kg) + kh)))._1), ko)
23072307 }
23082308 }
23092309 }
23182318 then throw("Exactly one payment required")
23192319 else {
23202320 let jL = value(fo.payments[0])
2321- if ((jL.assetId != bI))
2321+ if ((jL.assetId != bJ))
23222322 then throw("Allowed USDT payment only!")
23232323 else {
2324- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
2324+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
23252325 if (jb(s))
23262326 then throw("healES_checkTournament")
23272327 else {
23312331 if ((kj > 0))
23322332 then throw("HP should be 0 to call Emergency Service")
23332333 else {
2334- let gr = bg(s)
2334+ let gr = bh(s)
23352335 let gU = gq(gr)
2336- let kk = if ((gU[aJ] == ""))
2336+ let kk = if ((gU[aK] == ""))
23372337 then nil
2338- else split_4C(gU[aJ], "_")
2338+ else split_4C(gU[aK], "_")
23392339 let kp = if ((size(kk) > 0))
23402340 then parseIntValue(kk[0])
23412341 else 0
23522352 else (kr > 0))
23532353 then throw("You have to use own Medical Kit")
23542354 else {
2355- let ks = getString(cm, bl())
2355+ let ks = getString(cn, bm())
23562356 let kt = if (isDefined(ks))
23572357 then split_4C(value(ks), "_")
23582358 else nil
23622362 if ((0 >= ku))
23632363 then throw("There are no Medical Kits L1 at Emergency Service storage")
23642364 else {
2365- let ko = (kj + cM[0])
2365+ let ko = (kj + cN[0])
23662366 let kv = makeString([toString((ku - 1)), removeByIndex(kt, 0)], "_")
2367- let bD = split(as[0], "_")
2368- let kw = bC(bD)
2369- let kx = fraction((kw * an), am, (bP * aw))
2367+ let bE = split(at[0], "_")
2368+ let kw = bD(bE)
2369+ let kx = fraction((kw * ao), an, (bQ * ax))
23702370 if ((jL.amount != kx))
23712371 then throw(("Payment attached should be " + toString(kx)))
23722372 else {
2373- let dV = cB(invoke(cm, "updateEsStorage", [kv], [AttachedPayment(bI, kx)]))
2373+ let dV = cC(invoke(cn, "updateEsStorage", [kv], [AttachedPayment(bJ, kx)]))
23742374 $Tuple2(([IntegerEntry(hH, ko), jK] ++ iL(s, H)._1), dV)
23752375 }
23762376 }
23842384
23852385
23862386 @Callable(fo)
2387-func updateBackpack (s,ky) = if ((fo.caller != cm))
2387+func updateBackpack (s,ky) = if ((fo.caller != cn))
23882388 then throw("permission denied")
2389- else $Tuple2([StringEntry(bg(s), ky)], ky)
2389+ else $Tuple2([StringEntry(bh(s), ky)], ky)
23902390
23912391
23922392
23932393 @Callable(fo)
23942394 func commitForRandom () = {
23952395 let jK = jH(fo)
2396- let kz = (height + cu)
2396+ let kz = (height + cv)
23972397 let b = toString(fo.caller)
2398- $Tuple2(([IntegerEntry(cv(b), kz)] :+ jK), kz)
2398+ $Tuple2(([IntegerEntry(cw(b), kz)] :+ jK), kz)
23992399 }
24002400
24012401
24072407 then throw("Exactly one payment required")
24082408 else {
24092409 let jL = value(fo.payments[0])
2410- if ((jL.assetId != bI))
2410+ if ((jL.assetId != bJ))
24112411 then throw("Allowed USDT payment only!")
2412- else if ((jL.amount != cS))
2413- then throw(("Payment attached should be " + toString(cS)))
2412+ else if ((jL.amount != cT))
2413+ then throw(("Payment attached should be " + toString(cT)))
24142414 else {
24152415 let dV = ho(fo.caller, fo.transactionId)
2416- $Tuple2((((dV._1 :+ ScriptTransfer(cm, jL.amount, bI)) ++ iR(toString(fo.caller), J)._1) :+ jK), dV._2._1)
2416+ $Tuple2((((dV._1 :+ ScriptTransfer(cn, jL.amount, bJ)) ++ iR(toString(fo.caller), J)._1) :+ jK), dV._2._1)
24172417 }
24182418 }
24192419 }
24272427 then throw("No payments required")
24282428 else {
24292429 let dV = hN(fo.caller, fo.transactionId, hw, hx)
2430- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
2430+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
24312431 if (jb(s))
24322432 then throw("expedition_checkTournament")
24332433 else $Tuple2(((dV._1 ++ iL(s, J)._1) :+ jK), $Tuple2(dV._2, dV._3))
24372437
24382438
24392439 @Callable(fo)
2440-func upgradeInfra (aW) = {
2440+func upgradeInfra (aX) = {
24412441 let jK = jH(fo)
24422442 if ((size(fo.payments) != 0))
24432443 then throw("No payments required")
24442444 else {
2445- let dV = iy(true, fo.caller, 0, aW)
2446- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
2447- $Tuple2(((dV._1 :+ jK) ++ iL(s, fraction(K, dV._3, bP))._1), dV._2)
2445+ let dV = iy(true, fo.caller, 0, aX)
2446+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
2447+ $Tuple2(((dV._1 :+ jK) ++ iL(s, fraction(K, dV._3, bQ))._1), dV._2)
24482448 }
24492449 }
24502450
24582458 else {
24592459 let b = toString(fo.caller)
24602460 let dV = {
2461- let bJ = kA
2462- if (("PRESALE" == bJ))
2461+ let bK = kA
2462+ if (("PRESALE" == bK))
24632463 then iZ(b, kB)
2464- else if (("ONBOARD" == bJ))
2464+ else if (("ONBOARD" == bK))
24652465 then iS(b)
24662466 else throw("Unknown artifact")
24672467 }
24852485
24862486
24872487 @Callable(fo)
2488-func cargoExchange (kC,aW) = {
2488+func cargoExchange (kC,aX) = {
24892489 let jK = jH(fo)
24902490 if ((size(fo.payments) != 0))
24912491 then throw("No payments required")
24922492 else {
24932493 let gT = split_4C(kC, ":")
24942494 let b = toString(fo.originCaller)
2495- let ig = value(assetInfo(fromBase58String(aW)))
2496- let ih = aO(aW)
2495+ let ig = value(assetInfo(fromBase58String(aX)))
2496+ let ih = aP(aX)
24972497 if (!(isDefined(getInteger(ih))))
24982498 then throw((ig.name + " is not staked"))
24992499 else {
2500- let ij = valueOrErrorMessage(getString(aL(aW)), (("NFT " + ig.name) + " is orphaned"))
2500+ let ij = valueOrErrorMessage(getString(aM(aX)), (("NFT " + ig.name) + " is orphaned"))
25012501 if ((ij != b))
25022502 then throw((ae + " is not yours"))
25032503 else {
2504- let gF = (cG(split(ig.description, "_")[cr]) / bQ)
2505- let gG = valueOrElse(getInteger(aP(aW)), 0)
2506- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
2507- let id = valueOrElse(getString(bh(s)), al)
2504+ let gF = (cH(split(ig.description, "_")[cs]) / bR)
2505+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
2506+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
2507+ let id = valueOrElse(getString(bi(s)), am)
25082508 let ie = split(value(id), "_")
2509- if ((ie[bA] != "L"))
2510- then throw((("Duck location type is " + ie[bA]) + ", but should be L"))
2511- else if ((ie[bB] != aW))
2512- then throw(("Duck should be on the land " + aW))
2509+ if ((ie[bB] != "L"))
2510+ then throw((("Duck location type is " + ie[bB]) + ", but should be L"))
2511+ else if ((ie[bC] != aX))
2512+ then throw(("Duck should be on the land " + aX))
25132513 else {
2514- let gE = aV(aW)
2514+ let gE = aW(aX)
25152515 let gv = gD(gE, gF, gG)
2516- let gr = bg(s)
2516+ let gr = bh(s)
25172517 let gU = gq(gr)
25182518 let dV = gS(gT, gv, gU)
2519- let gM = split(gv[aB], "_")
2520- let iv = (parseIntValue(gM[aD]) + dV._7)
2521- let iw = (parseIntValue(gM[aE]) - dV._7)
2522-[StringEntry(gr, makeString_2C([gU[aG], dV._4, dV._5, dV._6], ":")), StringEntry(gE, makeString_2C([gv[ax], dV._1, dV._2, dV._3, makeString([gM[aC], toString(iv), toString(iw), gM[aF]], "_")], ":")), jK]
2519+ let gM = split(gv[aC], "_")
2520+ let iv = (parseIntValue(gM[aE]) + dV._7)
2521+ let iw = (parseIntValue(gM[aF]) - dV._7)
2522+[StringEntry(gr, makeString_2C([gU[aH], dV._4, dV._5, dV._6], ":")), StringEntry(gE, makeString_2C([gv[ay], dV._1, dV._2, dV._3, makeString([gM[aD], toString(iv), toString(iw), gM[aG]], "_")], ":")), jK]
25232523 }
25242524 }
25252525 }
25292529
25302530
25312531 @Callable(fo)
2532-func saveWarehouse (gI,aW) = if ((fo.caller != cm))
2532+func saveWarehouse (gI,aX) = if ((fo.caller != cn))
25332533 then throw("Access denied")
25342534 else {
2535- let gE = aV(aW)
2535+ let gE = aW(aX)
25362536 let gJ = split_4C(gI, ":")
25372537 if ((size(gJ) != 5))
25382538 then throw("warehouse string should contain 4 ':' separators")
25392539 else {
2540- let kD = split(gJ[aB], "_")[aC]
2540+ let kD = split(gJ[aC], "_")[aD]
25412541 let iv = gu(gJ)
2542- let kE = gs(gJ[ax])
2542+ let kE = gs(gJ[ay])
25432543 let iw = ((kE - parseIntValue(kD)) - iv)
2544- let kF = makeString_2C([gJ[ax], gJ[ay], gJ[az], gJ[aA], makeString([kD, toString(iv), toString(iw), toString(kE)], "_")], ":")
2544+ let kF = makeString_2C([gJ[ay], gJ[az], gJ[aA], gJ[aB], makeString([kD, toString(iv), toString(iw), toString(kE)], "_")], ":")
25452545 $Tuple2([StringEntry(gE, kF)], kF)
25462546 }
25472547 }
25492549
25502550
25512551 @Callable(fo)
2552-func fixWarehouseFormat (aW) = if ((fo.caller != cl))
2552+func fixWarehouseFormat (aX) = if ((fo.caller != cm))
25532553 then throw("Access denied")
25542554 else {
2555- let gE = aV(aW)
2556- let ig = value(assetInfo(fromBase58String(aW)))
2557- let gF = (cG(split(ig.description, "_")[cr]) / bQ)
2558- let gG = valueOrElse(getInteger(aP(aW)), 0)
2555+ let gE = aW(aX)
2556+ let ig = value(assetInfo(fromBase58String(aX)))
2557+ let gF = (cH(split(ig.description, "_")[cs]) / bR)
2558+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
25592559 let gJ = gD(gE, gF, gG)
2560- let kD = cE(invoke(cm, "recalcLockedVolumeREADONLY", [aW, gJ], nil))
2560+ let kD = cF(invoke(cn, "recalcLockedVolumeREADONLY", [aX, gJ], nil))
25612561 let iv = gu(gJ)
2562- let kE = gs(gJ[ax])
2562+ let kE = gs(gJ[ay])
25632563 let iw = ((kE - kD) - iv)
2564- let kF = makeString_2C([gJ[ax], gJ[ay], gJ[az], gJ[aA], makeString([toString(kD), toString(iv), toString(iw), toString(kE)], "_")], ":")
2564+ let kF = makeString_2C([gJ[ay], gJ[az], gJ[aA], gJ[aB], makeString([toString(kD), toString(iv), toString(iw), toString(kE)], "_")], ":")
25652565 $Tuple2([StringEntry(gE, kF)], kF)
25662566 }
25672567
25682568
25692569
25702570 @Callable(fo)
2571-func fixContinentProportions (ji) = if ((fo.caller != cl))
2571+func fixContinentProportions (ji) = if ((fo.caller != cm))
25722572 then throw("Access denied")
25732573 else {
2574- func kG (dD,kH) = (dD :+ valueOrElse(getString(cx(kH)), "0_0_0_0_0_0"))
2574+ func kG (dD,kH) = (dD :+ valueOrElse(getString(cy(kH)), "0_0_0_0_0_0"))
25752575
25762576 let fg = {
2577- let dF = ap
2577+ let dF = aq
25782578 let dG = size(dF)
25792579 let dH = nil
25802580 func dI (dJ,dK) = if ((dK >= dG))
25872587
25882588 dL(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5)
25892589 }
2590- func kI (dD,aW) = {
2591- let ig = value(assetInfo(fromBase58String(aW)))
2590+ func kI (dD,aX) = {
2591+ let ig = value(assetInfo(fromBase58String(aX)))
25922592 let ik = split(ig.description, "_")
2593- let gF = (cG(ik[cr]) / bQ)
2594- let kH = ik[ct]
2595- let fk = fq(ik[cs])
2596- let fS = value(indexOf(ap, kH))
2593+ let gF = (cH(ik[cs]) / bR)
2594+ let kH = ik[cu]
2595+ let fk = fq(ik[ct])
2596+ let fS = value(indexOf(aq, kH))
25972597 let jx = split(dD[fS], "_")
25982598 let kJ = makeString(fi(jx, fk, gF, 1), "_")
2599- let bJ = kH
2600- if (("Americas" == bJ))
2599+ let bK = kH
2600+ if (("Americas" == bK))
26012601 then [kJ, dD[1], dD[2], dD[3], dD[4]]
2602- else if (("Europe" == bJ))
2602+ else if (("Europe" == bK))
26032603 then [dD[0], kJ, dD[2], dD[3], dD[4]]
2604- else if (("Asia" == bJ))
2604+ else if (("Asia" == bK))
26052605 then [dD[0], dD[1], kJ, dD[3], dD[4]]
2606- else if (("Africa" == bJ))
2606+ else if (("Africa" == bK))
26072607 then [dD[0], dD[1], dD[2], kJ, dD[4]]
2608- else if (("Oceania" == bJ))
2608+ else if (("Oceania" == bK))
26092609 then [dD[0], dD[1], dD[2], dD[3], kJ]
26102610 else throw("wrong continent")
26112611 }
26242624
26252625 gm(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(dH, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
26262626 }
2627- $Tuple2([StringEntry(cx("Americas"), dO[0]), StringEntry(cx("Europe"), dO[1]), StringEntry(cx("Asia"), dO[2]), StringEntry(cx("Africa"), dO[3]), StringEntry(cx("Oceania"), dO[4])], 0)
2628- }
2629-
2630-
2631-
2632-@Callable(fo)
2633-func fixStakedPieces (bX) = if ((fo.caller != cl))
2627+ $Tuple2([StringEntry(cy("Americas"), dO[0]), StringEntry(cy("Europe"), dO[1]), StringEntry(cy("Asia"), dO[2]), StringEntry(cy("Africa"), dO[3]), StringEntry(cy("Oceania"), dO[4])], 0)
2628+ }
2629+
2630+
2631+
2632+@Callable(fo)
2633+func fixStakedPieces (bY) = if ((fo.caller != cm))
26342634 then throw("Access denied")
26352635 else {
2636- let jB = if ((bX == ""))
2636+ let jB = if ((bY == ""))
26372637 then 0
26382638 else {
2639- let ju = getString(Z, cz(bX))
2639+ let ju = getString(Z, cA(bY))
26402640 let jq = if (isDefined(ju))
26412641 then split_51C(value(ju), "_")
26422642 else nil
2643- func kK (dD,aW) = {
2644- let ig = value(assetInfo(fromBase58String(aW)))
2645- let cH = split(ig.description, "_")[cr]
2646- (dD + cG(cH))
2643+ func kK (dD,aX) = {
2644+ let ig = value(assetInfo(fromBase58String(aX)))
2645+ let cI = split(ig.description, "_")[cs]
2646+ (dD + cH(cI))
26472647 }
26482648
26492649 let dF = jq
26592659
26602660 dL(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dH, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
26612661 }
2662- $Tuple2([IntegerEntry(cA(bX), jB)], jB)
2663- }
2664-
2665-
2666-
2667-@Callable(fo)
2668-func setCustomName (aM,js,aR) = {
2662+ $Tuple2([IntegerEntry(cB(bY), jB)], jB)
2663+ }
2664+
2665+
2666+
2667+@Callable(fo)
2668+func setCustomName (aN,js,aS) = {
26692669 let jK = jH(fo)
26702670 if ((size(fo.payments) != 1))
26712671 then throw("Exactly one payment required")
26722672 else {
26732673 let jL = value(fo.payments[0])
2674- if ((jL.assetId != bI))
2674+ if ((jL.assetId != bJ))
26752675 then throw("Allowed USDT payment only!")
2676- else if ((jL.amount != cO))
2677- then throw(("Payment should be " + toString(cO)))
2676+ else if ((jL.amount != cP))
2677+ then throw(("Payment should be " + toString(cP)))
26782678 else if (contains(js, "__"))
26792679 then throw(("Name should not contain '__': " + js))
2680- else if ((size(js) > cP))
2681- then throw(("Name too long, maxLength=" + toString(cP)))
2680+ else if ((size(js) > cQ))
2681+ then throw(("Name too long, maxLength=" + toString(cQ)))
26822682 else {
26832683 let b = toString(fo.originCaller)
26842684 let kL = {
2685- let bJ = aR
2686- if (("ACCOUNT" == bJ))
2685+ let bK = aS
2686+ if (("ACCOUNT" == bK))
26872687 then {
26882688 let kM = dj(js)
26892689 let kN = getString(kM)
26902690 if (isDefined(kN))
26912691 then throw(("Name already registered: " + js))
26922692 else {
2693- let kO = aZ(b)
2693+ let kO = ba(b)
26942694 let kP = getString(kO)
26952695 let kQ = if (isDefined(kP))
26962696 then [DeleteEntry(dj(value(kP)))]
26982698 (((kQ :+ StringEntry(kO, js)) :+ StringEntry(kM, b)) ++ iR(b, I)._1)
26992699 }
27002700 }
2701- else if (("LAND" == bJ))
2701+ else if (("LAND" == bK))
27022702 then {
2703- let ig = value(assetInfo(fromBase58String(aM)))
2704- let ih = aO(aM)
2703+ let ig = value(assetInfo(fromBase58String(aN)))
2704+ let ih = aP(aN)
27052705 if (!(isDefined(getInteger(ih))))
27062706 then throw((ig.name + " is not staked"))
27072707 else {
2708- let ij = valueOrErrorMessage(getString(aL(aM)), (("NFT " + ig.name) + " is orphaned"))
2708+ let ij = valueOrErrorMessage(getString(aM(aN)), (("NFT " + ig.name) + " is orphaned"))
27092709 if ((ij != b))
27102710 then throw((ae + " is not yours"))
27112711 else {
2712- let kM = dd(js)
2712+ let kM = de(js)
27132713 let kN = getString(kM)
27142714 if (isDefined(kN))
27152715 then throw(("Name already registered: " + js))
27162716 else {
2717- let kR = aN(aM)
2717+ let kR = aO(aN)
27182718 let kP = getString(kR)
27192719 let kQ = if (isDefined(kP))
2720- then [DeleteEntry(dd(value(kP)))]
2720+ then [DeleteEntry(de(value(kP)))]
27212721 else nil
2722- (((kQ :+ StringEntry(kR, js)) :+ StringEntry(kM, aM)) ++ iR(b, I)._1)
2722+ (((kQ :+ StringEntry(kR, js)) :+ StringEntry(kM, aN)) ++ iR(b, I)._1)
27232723 }
27242724 }
27252725 }
27262726 }
2727- else if (("DUCK" == bJ))
2727+ else if (("DUCK" == bK))
27282728 then {
2729- let ig = value(assetInfo(fromBase58String(aM)))
2730- let ih = aO(aM)
2729+ let ig = value(assetInfo(fromBase58String(aN)))
2730+ let ih = aP(aN)
27312731 if (if (!(isDefined(getInteger(ih))))
27322732 then true
2733- else !(isDefined(getString(bf(b)))))
2733+ else !(isDefined(getString(bg(b)))))
27342734 then throw((ig.name + " is not staked"))
27352735 else {
2736- let ij = valueOrErrorMessage(getString(be(aM)), (("NFT " + ig.name) + " is orphaned"))
2736+ let ij = valueOrErrorMessage(getString(bf(aN)), (("NFT " + ig.name) + " is orphaned"))
27372737 if ((ij != b))
27382738 then throw((af + " is not yours"))
27392739 else {
27422742 if (isDefined(kN))
27432743 then throw(("Name already registered: " + js))
27442744 else {
2745- let kR = aY(aM)
2745+ let kR = aZ(aN)
27462746 let kP = getString(kR)
27472747 let kQ = if (isDefined(kP))
27482748 then [DeleteEntry(di(value(kP)))]
27492749 else nil
2750- (((kQ :+ StringEntry(kR, js)) :+ StringEntry(kM, aM)) ++ iL(aM, I)._1)
2750+ (((kQ :+ StringEntry(kR, js)) :+ StringEntry(kM, aN)) ++ iL(aN, I)._1)
27512751 }
27522752 }
27532753 }
27542754 }
27552755 else throw("Unknown entity type")
27562756 }
2757- $Tuple2(((kL :+ ScriptTransfer(cm, jL.amount, bI)) :+ jK), 0)
2757+ $Tuple2(((kL :+ ScriptTransfer(cn, jL.amount, bJ)) :+ jK), 0)
27582758 }
27592759 }
27602760 }
27622762
27632763
27642764 @Callable(fo)
2765-func setReferrals (kS,kT) = if ((fo.callerPublicKey != cL))
2765+func setReferrals (kS,kT) = if ((fo.callerPublicKey != cM))
27662766 then throw("Permission denied")
27672767 else {
27682768 let jK = jH(fo)
27812781 if (containsElement(kW, kT))
27822782 then throw((kT + " is not newbie (already has referrals)"))
27832783 else {
2784- let iT = ba(kT)
2784+ let iT = bb(kT)
27852785 let iU = getString(iT)
27862786 if (if (isDefined(iU))
27872787 then isDefined(addressFromString(value(iU)))
27882788 else false)
27892789 then throw(((kT + " already has refBy: ") + value(iU)))
27902790 else {
2791- let kX = bd(kS)
2791+ let kX = be(kS)
27922792 let kY = getString(kX)
27932793 let kZ = if (isDefined(kY))
27942794 then split_4C(value(kY), "_")
28162816 then throw("No payments required")
28172817 else {
28182818 let b = toString(fo.originCaller)
2819- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
2819+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
28202820 let lh = A(b)
28212821 let li = valueOrElse(getInteger(Z, lh), 0)
28222822 let lj = w(s)
28542854
28552855
28562856 @Callable(fo)
2857-func getBackpackREADONLY (s) = $Tuple2(nil, makeString(gq(bg(s)), ":"))
2858-
2859-
2860-
2861-@Callable(fo)
2862-func getWarehouseREADONLY (aW) = {
2863- let ig = value(assetInfo(fromBase58String(aW)))
2864- let gF = (cG(split(ig.description, "_")[cr]) / bQ)
2865- let gG = valueOrElse(getInteger(aP(aW)), 0)
2866- $Tuple2(nil, makeString_2C(gD(aV(aW), gF, gG), ":"))
2857+func getBackpackREADONLY (s) = $Tuple2(nil, makeString(gq(bh(s)), ":"))
2858+
2859+
2860+
2861+@Callable(fo)
2862+func getWarehouseREADONLY (aX) = {
2863+ let ig = value(assetInfo(fromBase58String(aX)))
2864+ let gF = (cH(split(ig.description, "_")[cs]) / bR)
2865+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
2866+ $Tuple2(nil, makeString_2C(gD(aW(aX), gF, gG), ":"))
28672867 }
28682868
28692869
28712871 @Callable(fo)
28722872 func saveLastTx () = {
28732873 let hp = fo.caller
2874- if (if (if ((hp != co))
2875- then (hp != cm)
2874+ if (if (if ((hp != cp))
2875+ then (hp != cn)
28762876 else false)
2877- then (hp != cp)
2877+ then (hp != cq)
28782878 else false)
28792879 then throw("Access denied")
28802880 else $Tuple2([jH(fo)], 42)
28832883
28842884
28852885 @Callable(fo)
2886-func updateDuckStats (s,iM) = if ((fo.caller != cm))
2886+func updateDuckStats (s,iM) = if ((fo.caller != cn))
28872887 then throw("Access denied")
28882888 else iL(s, iM)
28892889
28902890
28912891
28922892 @Callable(fo)
2893-func updateAccStats (b,iM) = if ((fo.caller != cm))
2893+func updateAccStats (b,iM) = if ((fo.caller != cn))
28942894 then throw("Access denied")
28952895 else iR(b, iM)
28962896
29032903 then throw("No payments required")
29042904 else {
29052905 let b = toString(fo.originCaller)
2906- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
2906+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
29072907 if (jb(s))
29082908 then throw("equipDuck_checkTournament")
29092909 else {
29102910 let hQ = x(s)
29112911 let ls = split(valueOrElse(getString(hQ), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2912- let gr = bg(s)
2912+ let gr = bh(s)
29132913 let gU = gq(gr)
29142914 let hS = split(lr, "_")
29152915 if ((size(hS) != n))
29162916 then throw("Wrong equipment string")
29172917 else {
2918- let lt = eY(ls, ej(gU[aJ]), true, nil)
2918+ let lt = eY(ls, ej(gU[aK]), true, nil)
29192919 let lu = split(hS[m], ";")[1]
29202920 let lv = if ((lu == ""))
29212921 then 0
29252925 then 0
29262926 else {
29272927 let ey = split(lw, ":")
2928- let ck = ey[0]
2928+ let cl = ey[0]
29292929 let lx = ey[1]
2930- if (if (if (if (if ((ck == "06"))
2930+ if (if (if (if (if ((cl == "06"))
29312931 then true
2932- else (ck == "07"))
2932+ else (cl == "07"))
29332933 then true
2934- else (ck == "08"))
2934+ else (cl == "08"))
29352935 then (lx != "")
29362936 else false)
29372937 then (parseIntValue(lx) > 0)
29382938 else false)
2939- then (parseIntValue(ck) - 5)
2939+ then (parseIntValue(cl) - 5)
29402940 else 0
29412941 }
29422942 }
29432943 let eT = Y(this, s, lv)
29442944 let ly = eY(hS, lt, false, eT)
29452945 let lz = eo(ly)
2946- $Tuple2([StringEntry(hQ, lr), StringEntry(gr, makeString_2C([gU[aG], gU[aH], gU[aI], lz], ":")), jK], 0)
2946+ $Tuple2([StringEntry(hQ, lr), StringEntry(gr, makeString_2C([gU[aH], gU[aI], gU[aJ], lz], ":")), jK], 0)
29472947 }
29482948 }
29492949 }
29522952
29532953
29542954 @Callable(fo)
2955-func fortificateLand (aW,lA) = {
2955+func fortificateLand (aX,lA) = {
29562956 let jK = jH(fo)
29572957 if ((size(fo.payments) != 0))
29582958 then throw("No payments required")
29592959 else {
29602960 let b = toString(fo.originCaller)
2961- let s = valueOrElse(getString(bf(b)), "")
2961+ let s = valueOrElse(getString(bg(b)), "")
29622962 let et = Y(this, s, 0)
2963- let lB = aX(aW)
2963+ let lB = aY(aX)
29642964 let lC = split(valueOrElse(getString(lB), ":0_15:0_18:0"), "_")
2965- let ig = value(assetInfo(fromBase58String(aW)))
2966- let gF = (cG(split(ig.description, "_")[cr]) / bQ)
2967- let gG = valueOrElse(getInteger(aP(aW)), 0)
2968- let gE = aV(aW)
2965+ let ig = value(assetInfo(fromBase58String(aX)))
2966+ let gF = (cH(split(ig.description, "_")[cs]) / bR)
2967+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
2968+ let gE = aW(aX)
29692969 let gJ = gD(gE, gF, gG)
2970- let lD = split(gJ[aB], "_")
2971- let lE = parseIntValue(lD[aD])
2972- let lF = parseIntValue(lD[aE])
2970+ let lD = split(gJ[aC], "_")
2971+ let lE = parseIntValue(lD[aE])
2972+ let lF = parseIntValue(lD[aF])
29732973 let lG = split(lA, "_")
2974- let lH = ff(lC, ej(gJ[aA]), lE, lF, true, nil)
2974+ let lH = ff(lC, ej(gJ[aB]), lE, lF, true, nil)
29752975 let lt = lH._1
29762976 let lI = lH._2
29772977 let lJ = lH._3
29802980 let lL = lK._2
29812981 let lM = lK._3
29822982 let lz = eo(ly)
2983- let iK = makeString([lD[aC], toString(lL), toString(lM), lD[aF]], "_")
2984- $Tuple2([StringEntry(lB, lA), StringEntry(gE, makeString_2C([gJ[ax], gJ[ay], gJ[az], lz, iK], ":")), jK], 0)
2985- }
2986- }
2987-
2988-
2989-
2990-@Callable(fo)
2991-func initDuckTourAttempt (s) = if ((fo.caller != cp))
2983+ let iK = makeString([lD[aD], toString(lL), toString(lM), lD[aG]], "_")
2984+ $Tuple2([StringEntry(lB, lA), StringEntry(gE, makeString_2C([gJ[ay], gJ[az], gJ[aA], lz, iK], ":")), jK], 0)
2985+ }
2986+ }
2987+
2988+
2989+
2990+@Callable(fo)
2991+func initDuckTourAttempt (s) = if ((fo.caller != cq))
29922992 then throw("Access denied")
29932993 else {
29942994 let jK = jH(fo)
29952995 let hH = r(s)
29962996 let hI = Q(valueOrElse(getInteger(v(s)), 0))
29972997 let jY = valueOrElse(getInteger(hH), hI)
2998- let lN = bh(s)
2999- let id = valueOrElse(getString(lN), al)
3000- let jc = valueOrElse(getInteger(cp, bm), 0)
2998+ let lN = bi(s)
2999+ let id = valueOrElse(getString(lN), am)
3000+ let jc = valueOrElse(getInteger(cq, bn), 0)
30013001 let lO = (toString(jc) + "_T_0")
30023002 $Tuple2([jK, IntegerEntry(B(s), jY), IntegerEntry(hH, hI), StringEntry(C(s), id), StringEntry(lN, lO)], lO)
30033003 }
30073007 @Callable(fo)
30083008 func exitTournaments () = {
30093009 let jK = jH(fo)
3010- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
3011- let lN = bh(s)
3012- let id = valueOrElse(getString(lN), al)
3013- if ((split(id, "_")[bA] != "T"))
3010+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
3011+ let lN = bi(s)
3012+ let id = valueOrElse(getString(lN), am)
3013+ if ((split(id, "_")[bB] != "T"))
30143014 then throw("Your duck is not in the tournament")
30153015 else {
30163016 let lP = getIntegerValue(B(s))
30273027 else {
30283028 let lP = getIntegerValue(B(s))
30293029 let lQ = getStringValue(C(s))
3030- $Tuple2([IntegerEntry(r(s), lP), StringEntry(bh(s), lQ)], 0)
3030+ $Tuple2([IntegerEntry(r(s), lP), StringEntry(bi(s), lQ)], 0)
30313031 }
30323032
30333033
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = ("lastArbTimeUser_" + b)
55
66
77 let c = 100000000
88
99 let d = 3200
1010
1111 let e = 4000
1212
1313 let f = 3
1414
1515 let g = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
1616
1717 let h = 0
1818
1919 let i = 1
2020
2121 let j = 2
2222
2323 let k = 3
2424
2525 let l = 4
2626
2727 let m = 0
2828
2929 let n = 6
3030
3131 let o = 2
3232
3333 let p = 2
3434
3535 let q = 30
3636
3737 func r (s) = ("duckHealth_" + s)
3838
3939
4040 func t (s) = ("duckChars_" + s)
4141
4242
4343 func u (s) = ("duckXP_" + s)
4444
4545
4646 func v (s) = ("duckLevel_" + s)
4747
4848
4949 func w (s) = ("duckFreePoints_" + s)
5050
5151
5252 func x (s) = ("duckEquipment_" + s)
5353
5454
5555 func y (b) = ("userXP_" + b)
5656
5757
5858 func z (b) = ("userLevel_" + b)
5959
6060
6161 func A (b) = ("userFreePoints_" + b)
6262
6363
6464 func B (s) = ("savedHealth_" + s)
6565
6666
6767 func C (s) = ("savedLocation_" + s)
6868
6969
7070 func D (s) = ("duckBuffs_" + s)
7171
7272
7373 let E = 10000
7474
7575 let F = 10000
7676
7777 let G = 2000
7878
7979 let H = 100000
8080
8181 let I = 1000000
8282
8383 let J = 5000000
8484
8585 let K = 10000
8686
8787 let L = 1000000
8888
8989 let M = 1000000
9090
9191 let N = 10000
9292
9393 func O (P) = fraction(d, pow(P, 4, e, 4, 4, DOWN), c)
9494
9595
9696 func Q (R) = (100 + R)
9797
9898
9999 func S (T,U) = {
100100 let V = O(U)
101101 [V, (f * (V - T))]
102102 }
103103
104104
105105 func W (R) = if (if ((1 > R))
106106 then true
107107 else (R > 3))
108108 then throw(("Invalid ration level: " + toString(R)))
109109 else {
110110 let X = [2, 4, 8]
111111 X[(R - 1)]
112112 }
113113
114114
115115 func Y (Z,s,aa) = {
116116 let ab = split(valueOrElse(getString(Z, t(s)), "0_0_0_0_0"), "_")
117117 let ac = valueOrElse(getInteger(Z, v(s)), 0)
118118 let ad = valueOrElse(getInteger(Z, r(s)), Q(ac))
119119 let X = split(valueOrElse(getString(Z, D(s)), "0_0_0_0_0"), "_")
120120 [parseIntValue(ab[h]), parseIntValue(ab[i]), parseIntValue(ab[j]), parseIntValue(ab[k]), parseIntValue(ab[l]), ac, ad, if ((aa > 0))
121121 then W(aa)
122122 else parseIntValue(X[h]), if ((aa > 0))
123123 then W(aa)
124124 else parseIntValue(X[i]), if ((aa > 0))
125125 then W(aa)
126126 else parseIntValue(X[j]), if ((aa > 0))
127127 then W(aa)
128128 else parseIntValue(X[k]), if ((aa > 0))
129129 then W(aa)
130130 else parseIntValue(X[l])]
131131 }
132132
133133
134134 let ae = "LAND"
135135
136136 let af = "DUCK"
137137
138138 let ag = "PRESALE"
139139
140140 let ah = 6
141141
142-let ai = 3456000
143-
144-let aj = 86400000
145-
146-let ak = 10000000000
147-
148-let al = "Africa_F_Africa"
149-
150-let am = 39637
151-
152-let an = 10
153-
154-let ao = ["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"]
155-
156-let ap = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
157-
158-let aq = 10000000
159-
160-let ar = [15, 16, 17, 18, 19, 20]
161-
162-let as = ["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_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_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_"]
163-
164-let at = 6
165-
166-let au = 9
167-
168-let av = 10
142+let ai = 25
143+
144+let aj = 3456000
145+
146+let ak = 86400000
147+
148+let al = 10000000000
149+
150+let am = "Africa_F_Africa"
151+
152+let an = 39637
153+
154+let ao = 10
155+
156+let ap = ["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"]
157+
158+let aq = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
159+
160+let ar = 10000000
161+
162+let as = [15, 16, 17, 18, 19, 20]
163+
164+let at = ["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_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_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_"]
165+
166+let au = 6
167+
168+let av = 9
169169
170170 let aw = 10
171171
172-let ax = 0
173-
174-let ay = 1
175-
176-let az = 2
177-
178-let aA = 3
179-
180-let aB = 4
181-
182-let aC = 0
183-
184-let aD = 1
185-
186-let aE = 2
187-
188-let aF = 3
189-
190-let aG = 0
191-
192-let aH = 1
193-
194-let aI = 2
195-
196-let aJ = 3
197-
198-func aK (b) = ("lastTxIdByUser_" + b)
199-
200-
201-func aL (aM) = ("nftOwner_" + aM)
202-
203-
204-func aN (aM) = ("landCustomNameByAssetId_" + aM)
205-
206-
207-func aO (aM) = ("stakedTime_" + aM)
208-
209-
210-func aP (aM) = ("infraLevel_" + aM)
211-
212-
213-func aQ (aR,aM) = makeString(["landArtStatus", aR, aM], "_")
214-
215-
216-func aS (aT,aM,aU) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aT) + "_") + aM) + "_") + aU)
217-
218-
219-func aV (aW) = ("wareHouse_" + aW)
220-
221-
222-func aX (aW) = ("fortifications_" + aW)
223-
224-
225-func aY (aM) = ("duckCustomNameByAssetId_" + aM)
226-
227-
228-func aZ (b) = ("accountCustomNameByAddr_" + b)
229-
230-
231-func ba (b) = ("accRefBy_" + b)
232-
233-
234-func bb (s) = ("onboardArtActivatedOnDuck_" + s)
235-
236-
237-func bc (b) = ("onboardArtActivatedDuckBy_" + b)
238-
239-
240-func bd (b) = ("accReferrals_" + b)
241-
242-
243-func be (aM) = ("duckOwner_" + aM)
244-
245-
246-func bf (aU) = ("stakedDuckByOwner_" + aU)
247-
248-
249-func bg (s) = ("backPack_" + s)
250-
251-
252-func bh (s) = ("duckLocation_" + s)
253-
254-
255-func bi () = "contractsBlocked"
256-
257-
258-func bj (bk) = ("%s%s__userGwlReleaseTime__" + bk)
259-
260-
261-func bl () = "emergencyWarehouseProducts"
262-
263-
264-let bm = "%s__lastTourId"
265-
266-func bn (bo) = ("%s%d__tourStaticData__" + toString(bo))
267-
268-
269-func bp (bo) = ("%s%d__tourDynamicData__" + toString(bo))
270-
271-
272-let bq = 0
273-
274-let br = 1
275-
276-func bs (bt,bo) = {
277- let bu = split(valueOrErrorMessage(getString(bt, bn(bo)), (("Error reading tournament " + toString(bo)) + " data")), "__")
278- let bv = split(valueOrErrorMessage(getString(bt, bp(bo)), (("Error reading tournament " + toString(bo)) + " data")), "__")
279-[bu, bv]
280- }
281-
282-
283-let bw = 6
284-
285-let bx = 1
286-
287-let by = 3
288-
289-let bz = 0
290-
291-let bA = 1
292-
293-let bB = 2
294-
295-func bC (bD) = (parseIntValue(bD[at]) * aq)
296-
297-
298-let bE = true
299-
300-let bF = false
172+let ax = 10
173+
174+let ay = 0
175+
176+let az = 1
177+
178+let aA = 2
179+
180+let aB = 3
181+
182+let aC = 4
183+
184+let aD = 0
185+
186+let aE = 1
187+
188+let aF = 2
189+
190+let aG = 3
191+
192+let aH = 0
193+
194+let aI = 1
195+
196+let aJ = 2
197+
198+let aK = 3
199+
200+func aL (b) = ("lastTxIdByUser_" + b)
201+
202+
203+func aM (aN) = ("nftOwner_" + aN)
204+
205+
206+func aO (aN) = ("landCustomNameByAssetId_" + aN)
207+
208+
209+func aP (aN) = ("stakedTime_" + aN)
210+
211+
212+func aQ (aN) = ("infraLevel_" + aN)
213+
214+
215+func aR (aS,aN) = makeString(["landArtStatus", aS, aN], "_")
216+
217+
218+func aT (aU,aN,aV) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aU) + "_") + aN) + "_") + aV)
219+
220+
221+func aW (aX) = ("wareHouse_" + aX)
222+
223+
224+func aY (aX) = ("fortifications_" + aX)
225+
226+
227+func aZ (aN) = ("duckCustomNameByAssetId_" + aN)
228+
229+
230+func ba (b) = ("accountCustomNameByAddr_" + b)
231+
232+
233+func bb (b) = ("accRefBy_" + b)
234+
235+
236+func bc (s) = ("onboardArtActivatedOnDuck_" + s)
237+
238+
239+func bd (b) = ("onboardArtActivatedDuckBy_" + b)
240+
241+
242+func be (b) = ("accReferrals_" + b)
243+
244+
245+func bf (aN) = ("duckOwner_" + aN)
246+
247+
248+func bg (aV) = ("stakedDuckByOwner_" + aV)
249+
250+
251+func bh (s) = ("backPack_" + s)
252+
253+
254+func bi (s) = ("duckLocation_" + s)
255+
256+
257+func bj () = "contractsBlocked"
258+
259+
260+func bk (bl) = ("%s%s__userGwlReleaseTime__" + bl)
261+
262+
263+func bm () = "emergencyWarehouseProducts"
264+
265+
266+let bn = "%s__lastTourId"
267+
268+func bo (bp) = ("%s%d__tourStaticData__" + toString(bp))
269+
270+
271+func bq (bp) = ("%s%d__tourDynamicData__" + toString(bp))
272+
273+
274+let br = 0
275+
276+let bs = 1
277+
278+func bt (bu,bp) = {
279+ let bv = split(valueOrErrorMessage(getString(bu, bo(bp)), (("Error reading tournament " + toString(bp)) + " data")), "__")
280+ let bw = split(valueOrErrorMessage(getString(bu, bq(bp)), (("Error reading tournament " + toString(bp)) + " data")), "__")
281+[bv, bw]
282+ }
283+
284+
285+let bx = 6
286+
287+let by = 1
288+
289+let bz = 3
290+
291+let bA = 0
292+
293+let bB = 1
294+
295+let bC = 2
296+
297+func bD (bE) = (parseIntValue(bE[au]) * ar)
298+
299+
300+let bF = true
301301
302302 let bG = false
303303
304-let bH = take(drop(this.bytes, 1), 1)
305-
306-let bI = {
307- let bJ = bH
308- if ((base58'2W' == bJ))
304+let bH = false
305+
306+let bI = take(drop(this.bytes, 1), 1)
307+
308+let bJ = {
309+ let bK = bI
310+ if ((base58'2W' == bK))
309311 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
310- else if ((base58'2T' == bJ))
312+ else if ((base58'2T' == bK))
311313 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
312314 else throw("Unknown chain")
313315 }
314316
315-let bK = {
316- let bJ = bH
317- if ((base58'2W' == bJ))
317+let bL = {
318+ let bK = bI
319+ if ((base58'2W' == bK))
318320 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
319- else if ((base58'2T' == bJ))
321+ else if ((base58'2T' == bK))
320322 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
321323 else throw("Unknown chain")
322324 }
323325
324-let bL = {
325- let bJ = bH
326- if ((base58'2W' == bJ))
326+let bM = {
327+ let bK = bI
328+ if ((base58'2W' == bK))
327329 then 10000000000
328- else if ((base58'2T' == bJ))
330+ else if ((base58'2T' == bK))
329331 then 100000000
330332 else throw("Unknown chain")
331333 }
332334
333-let bM = {
334- let bJ = bH
335- if ((base58'2W' == bJ))
335+let bN = {
336+ let bK = bI
337+ if ((base58'2W' == bK))
336338 then 86400000
337- else if ((base58'2T' == bJ))
339+ else if ((base58'2T' == bK))
338340 then 60000
339341 else throw("Unknown chain")
340342 }
341343
342-let bN = "__"
343-
344-let bO = 1000000
345-
346-let bP = 100000000
347-
348-let bQ = 25
349-
350-let bR = 100
351-
352-let bS = 225
353-
354-let bT = 400
355-
356-let bU = 625
357-
358-let bV = [0, 1, 2, 3, 4, 5]
359-
360-func bW (bX,bY) = valueOrErrorMessage(getString(bX, bY), makeString(["mandatory ", toString(bX), ".", bY, " is not defined"], ""))
361-
362-
363-let bZ = 1
364-
365-let ca = 2
366-
367-let cb = 3
368-
369-let cc = 4
370-
371-let cd = 7
372-
373-func ce () = "%s__restConfig"
374-
375-
376-func cf () = "%s__restAddr"
377-
378-
379-func cg (ch) = split_4C(bW(ch, ce()), bN)
380-
381-
382-func ci (cj,ck) = valueOrErrorMessage(addressFromString(cj[ck]), ("Rest cfg doesn't contain address at index " + toString(ck)))
383-
384-
385-let cl = addressFromStringValue(valueOrElse(getString(this, cf()), bK))
386-
387-let cj = cg(cl)
388-
389-let Z = ci(cj, bZ)
390-
391-let cm = ci(cj, ca)
392-
393-let cn = ci(cj, cb)
394-
395-let co = ci(cj, cc)
396-
397-let cp = ci(cj, cd)
398-
399-let cq = 0
400-
401-let cr = 1
402-
403-let cs = 2
404-
405-let ct = 3
406-
407-let cu = 2
408-
409-func cv (bX) = ("finishBlockForAddr_" + bX)
410-
411-
412-func cw () = "resTypesProportions"
413-
414-
415-func cx (cy) = ("resTypesByContinent_" + cy)
416-
417-
418-func cz (aU) = ("stakedLandsByOwner_" + aU)
419-
420-
421-func cA (aU) = ("stakedPiecesByOwner_" + aU)
422-
423-
424-func cB (cC) = {
425- let bJ = cC
426- if ($isInstanceOf(bJ, "String"))
344+let bO = "__"
345+
346+let bP = 1000000
347+
348+let bQ = 100000000
349+
350+let bR = 25
351+
352+let bS = 100
353+
354+let bT = 225
355+
356+let bU = 400
357+
358+let bV = 625
359+
360+let bW = [0, 1, 2, 3, 4, 5]
361+
362+func bX (bY,bZ) = valueOrErrorMessage(getString(bY, bZ), makeString(["mandatory ", toString(bY), ".", bZ, " is not defined"], ""))
363+
364+
365+let ca = 1
366+
367+let cb = 2
368+
369+let cc = 3
370+
371+let cd = 4
372+
373+let ce = 7
374+
375+func cf () = "%s__restConfig"
376+
377+
378+func cg () = "%s__restAddr"
379+
380+
381+func ch (ci) = split_4C(bX(ci, cf()), bO)
382+
383+
384+func cj (ck,cl) = valueOrErrorMessage(addressFromString(ck[cl]), ("Rest cfg doesn't contain address at index " + toString(cl)))
385+
386+
387+let cm = addressFromStringValue(valueOrElse(getString(this, cg()), bL))
388+
389+let ck = ch(cm)
390+
391+let Z = cj(ck, ca)
392+
393+let cn = cj(ck, cb)
394+
395+let co = cj(ck, cc)
396+
397+let cp = cj(ck, cd)
398+
399+let cq = cj(ck, ce)
400+
401+let cr = 0
402+
403+let cs = 1
404+
405+let ct = 2
406+
407+let cu = 3
408+
409+let cv = 2
410+
411+func cw (bY) = ("finishBlockForAddr_" + bY)
412+
413+
414+func cx () = "resTypesProportions"
415+
416+
417+func cy (cz) = ("resTypesByContinent_" + cz)
418+
419+
420+func cA (aV) = ("stakedLandsByOwner_" + aV)
421+
422+
423+func cB (aV) = ("stakedPiecesByOwner_" + aV)
424+
425+
426+func cC (cD) = {
427+ let bK = cD
428+ if ($isInstanceOf(bK, "String"))
427429 then {
428- let cD = bJ
429- cD
430+ let cE = bK
431+ cE
430432 }
431433 else throw("fail to cast into String")
432434 }
433435
434436
435-func cE (cC) = {
436- let bJ = cC
437- if ($isInstanceOf(bJ, "Int"))
437+func cF (cD) = {
438+ let bK = cD
439+ if ($isInstanceOf(bK, "Int"))
438440 then {
439- let cF = bJ
440- cF
441+ let cG = bK
442+ cG
441443 }
442444 else throw("fail to cast into Int")
443445 }
444446
445447
446-func cG (cH) = {
447- let bJ = cH
448- if (("S" == bJ))
449- then bQ
450- else if (("M" == bJ))
451- then bR
452- else if (("L" == bJ))
453- then bS
454- else if (("XL" == bJ))
455- then bT
456- else if (("XXL" == bJ))
457- then bU
448+func cH (cI) = {
449+ let bK = cI
450+ if (("S" == bK))
451+ then bR
452+ else if (("M" == bK))
453+ then bS
454+ else if (("L" == bK))
455+ then bT
456+ else if (("XL" == bK))
457+ then bU
458+ else if (("XXL" == bK))
459+ then bV
458460 else throw("Unknown land size")
459461 }
460462
461463
462-func cI (cD) = isDefined(parseInt(cD))
463-
464-
465-let cJ = {
466- let bJ = bH
467- if ((base58'2W' == bJ))
464+func cJ (cE) = isDefined(parseInt(cE))
465+
466+
467+let cK = {
468+ let bK = bI
469+ if ((base58'2W' == bK))
468470 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
469- else if ((base58'2T' == bJ))
471+ else if ((base58'2T' == bK))
470472 then this
471473 else throw("Unknown chain")
472474 }
473475
474-let cK = {
475- let bJ = bH
476- if ((base58'2W' == bJ))
476+let cL = {
477+ let bK = bI
478+ if ((base58'2W' == bK))
477479 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
478- else if ((base58'2T' == bJ))
480+ else if ((base58'2T' == bK))
479481 then this
480482 else throw("Unknown chain")
481483 }
482484
483-let cL = {
484- let bJ = bH
485- if ((base58'2W' == bJ))
486- then if (bF)
485+let cM = {
486+ let bK = bI
487+ if ((base58'2W' == bK))
488+ then if (bG)
487489 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
488490 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
489- else if ((base58'2T' == bJ))
491+ else if ((base58'2T' == bK))
490492 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
491493 else throw("Unknown chain")
492494 }
493495
494-let cM = [30, 60, 120]
495-
496-let cN = 300000
497-
498-let cO = 5000000
499-
500-let cP = 50
501-
502-let cQ = 10000000
503-
504-let cR = {
505- let bJ = bH
506- if ((base58'2W' == bJ))
496+let cN = [30, 60, 120]
497+
498+let cO = 300000
499+
500+let cP = 5000000
501+
502+let cQ = 50
503+
504+let cR = 10000000
505+
506+let cS = {
507+ let bK = bI
508+ if ((base58'2W' == bK))
507509 then 252289527462
508- else if ((base58'2T' == bJ))
510+ else if ((base58'2T' == bK))
509511 then 2522895274
510512 else throw("Unknown chain")
511513 }
512514
513-let cS = {
514- let bJ = bH
515- if ((base58'2W' == bJ))
515+let cT = {
516+ let bK = bI
517+ if ((base58'2W' == bK))
516518 then 250000000
517- else if ((base58'2T' == bJ))
519+ else if ((base58'2T' == bK))
518520 then 250000000
519521 else throw("Unknown chain")
520522 }
521523
522-let cT = toBigInt(5)
523-
524-let cU = toBigInt(20)
525-
526-let cV = toBigInt((20 * 20))
527-
528-let cW = toBigInt(((20 * 20) * 20))
529-
530-let cX = toBigInt((((20 * 20) * 20) * 20))
531-
532-let cY = toBigInt(((((20 * 20) * 20) * 20) * 20))
533-
534-let cZ = 500
535-
536-func da () = "nextLandNum"
537-
538-
539-func db (dc) = ("landToAsset_" + dc)
540-
541-
542-func dd (de) = ("landByCustomName_" + de)
543-
544-
545-func df (aM,aU) = ((("infraLevelByAssetIdAndOwner_" + aM) + "_") + aU)
546-
547-
548-func dg (aR,aM,aU) = makeString(["landArtStatusByTypeAssetIdAndOwner", aR, aM, aU], "_")
549-
550-
551-func dh (dc) = ("landOwner_" + dc)
552-
553-
554-func di (de) = ("duckByCustomName_" + de)
555-
556-
557-func dj (de) = ("accountByCustomName_" + de)
524+let cU = toBigInt(5)
525+
526+let cV = toBigInt(20)
527+
528+let cW = toBigInt((20 * 20))
529+
530+let cX = toBigInt(((20 * 20) * 20))
531+
532+let cY = toBigInt((((20 * 20) * 20) * 20))
533+
534+let cZ = toBigInt(((((20 * 20) * 20) * 20) * 20))
535+
536+let da = 500
537+
538+func db () = "nextLandNum"
539+
540+
541+func dc (dd) = ("landToAsset_" + dd)
542+
543+
544+func de (df) = ("landByCustomName_" + df)
545+
546+
547+func dg (aN,aV) = ((("infraLevelByAssetIdAndOwner_" + aN) + "_") + aV)
548+
549+
550+func dh (dd) = ("landOwner_" + dd)
551+
552+
553+func di (df) = ("duckByCustomName_" + df)
554+
555+
556+func dj (df) = ("accountByCustomName_" + df)
558557
559558
560559 func dk () = "oldiesList"
561560
562561
563562 let dl = 0
564563
565564 let dm = 1
566565
567566 let dn = 2
568567
569568 let do = 0
570569
571570 let dp = 5
572571
573572 let dq = 6
574573
575574 let dr = 7
576575
577-func ds (dc,cH) = ((ae + dc) + cH)
576+func ds (dd,cI) = ((ae + dd) + cI)
578577
579578
580579 func dt (du,dv) = {
581580 let dw = if ((du >= 0))
582581 then (((du + dv) - 1) / dv)
583582 else -((((-(du) + dv) - 1) / dv))
584- (dw * bP)
583+ (dw * bQ)
585584 }
586585
587586
588587 func dx (dy,dz) = {
589588 let dA = (((((dz[0] + dz[1]) + dz[2]) + dz[3]) + dz[4]) + dz[5])
590589 if ((0 >= dA))
591590 then throw("Zero weights sum")
592591 else {
593- let dB = fraction(dy, bO, dA)
594- func dC (dD,dE) = (dD :+ fraction(dE, dB, bO))
592+ let dB = fraction(dy, bP, dA)
593+ func dC (dD,dE) = (dD :+ fraction(dE, dB, bP))
595594
596595 let dF = dz
597596 let dG = size(dF)
598597 let dH = nil
599598 func dI (dJ,dK) = if ((dK >= dG))
600599 then dJ
601600 else dC(dJ, dF[dK])
602601
603602 func dL (dJ,dK) = if ((dK >= dG))
604603 then dJ
605604 else throw("List size exceeds 6")
606605
607606 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
608607 }
609608 }
610609
611610
612611 func dM (dy) = {
613- let dN = split(value(getString(cw())), "_")
612+ let dN = split(value(getString(cx())), "_")
614613 if ((size(dN) != ah))
615614 then throw("Wrong proportions data")
616615 else {
617616 let dO = [parseIntValue(dN[0]), parseIntValue(dN[1]), parseIntValue(dN[2]), parseIntValue(dN[3]), parseIntValue(dN[4]), parseIntValue(dN[5])]
618617 dx(dy, dO)
619618 }
620619 }
621620
622621
623622 func dP (dQ,dR,dS) = {
624623 let dT = dM(dS)
625- func dU (dD,ck) = {
626- let dV = (parseIntValue(dR[ck]) - dT[ck])
624+ func dU (dD,cl) = {
625+ let dV = (parseIntValue(dR[cl]) - dT[cl])
627626 if ((0 > dV))
628- then throw(((((("Not enough material idx=" + toString(ck)) + ", you have ") + dR[ck]) + ", but need ") + toString(dT[ck])))
627+ then throw(((((("Not enough material idx=" + toString(cl)) + ", you have ") + dR[cl]) + ", but need ") + toString(dT[cl])))
629628 else (dD :+ toString(dV))
630629 }
631630
632631 if (dQ)
633632 then {
634- let dF = bV
633+ let dF = bW
635634 let dG = size(dF)
636635 let dH = nil
637636 func dI (dJ,dK) = if ((dK >= dG))
638637 then dJ
639638 else dU(dJ, dF[dK])
640639
641640 func dL (dJ,dK) = if ((dK >= dG))
642641 then dJ
643642 else throw("List size exceeds 6")
644643
645644 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
646645 }
647646 else dR
648647 }
649648
650649
651650 func dW (dX,dY) = if ((dY == ""))
652651 then dX
653652 else {
654653 func dZ (dD,ea) = {
655654 let eb = split(ea, ",")
656655 if ((size(eb) != 2))
657656 then throw("Incorrect format, should be index,amount")
658657 else {
659- let ck = parseIntValue(eb[0])
660- if (if ((0 > ck))
658+ let cl = parseIntValue(eb[0])
659+ if (if ((0 > cl))
661660 then true
662- else (ck >= size(as)))
661+ else (cl >= size(at)))
663662 then throw("Unknown product idx")
664663 else {
665664 let ec = parseIntValue(eb[1])
666665 let ed = split(dD, (eb[0] + ":"))
667666 if ((size(ed) != 2))
668- then throw((("You don't have " + ao[ck]) + " equipped"))
667+ then throw((("You don't have " + ap[cl]) + " equipped"))
669668 else {
670669 let ee = ed[1]
671- let ef = if (cI(take(drop(ee, 1), 1)))
670+ let ef = if (cJ(take(drop(ee, 1), 1)))
672671 then 2
673672 else 1
674673 let eg = parseIntValue(take(ee, ef))
675674 let eh = drop(ee, ef)
676675 let ei = if ((eg >= ec))
677676 then (eg - ec)
678- else throw(((((("You equipped " + toString(eg)) + " of ") + ao[ck]) + ", but tried to use ") + toString(ec)))
677+ else throw(((((("You equipped " + toString(eg)) + " of ") + ap[cl]) + ", but tried to use ") + toString(ec)))
679678 ((((ed[0] + eb[0]) + ":") + toString(ei)) + eh)
680679 }
681680 }
682681 }
683682 }
684683
685684 let dF = split(dY, "_")
686685 let dG = size(dF)
687686 let dH = dX
688687 func dI (dJ,dK) = if ((dK >= dG))
689688 then dJ
690689 else dZ(dJ, dF[dK])
691690
692691 func dL (dJ,dK) = if ((dK >= dG))
693692 then dJ
694693 else throw("List size exceeds 10")
695694
696695 dL(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
697696 }
698697
699698
700699 func ej (ek) = {
701700 let el = if ((ek == ""))
702701 then nil
703702 else split_4C(ek, "_")
704- func em (dD,bD) = {
703+ func em (dD,bE) = {
705704 let en = (size(dD) / 8)
706705 let eg = if ((size(el) > en))
707706 then parseIntValue(el[en])
708707 else 0
709708 (dD + toBytes(eg))
710709 }
711710
712- let dF = as
711+ let dF = at
713712 let dG = size(dF)
714713 let dH = base58''
715714 func dI (dJ,dK) = if ((dK >= dG))
716715 then dJ
717716 else em(dJ, dF[dK])
718717
719718 func dL (dJ,dK) = if ((dK >= dG))
720719 then dJ
721720 else throw("List size exceeds 50")
722721
723722 dL(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dH, 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)
724723 }
725724
726725
727726 func eo (ep) = {
728- func eq (dD,bD) = {
727+ func eq (dD,bE) = {
729728 let en = size(dD)
730729 let er = take(drop(ep, (8 * en)), 8)
731730 (dD :+ toString(toInt(er)))
732731 }
733732
734733 makeString_2C({
735- let dF = as
734+ let dF = at
736735 let dG = size(dF)
737736 let dH = nil
738737 func dI (dJ,dK) = if ((dK >= dG))
739738 then dJ
740739 else eq(dJ, dF[dK])
741740
742741 func dL (dJ,dK) = if ((dK >= dG))
743742 then dJ
744743 else throw("List size exceeds 50")
745744
746745 dL(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dH, 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)
747746 }, "_")
748747 }
749748
750749
751750 func es (et,eu) = {
752751 func ev (dD,en) = {
753752 let ew = if ((size(et) > (7 + en)))
754753 then et[(7 + en)]
755754 else 0
756755 if ((parseIntValue(eu[en]) > (et[en] + ew)))
757756 then throw(("Requirement not satisfied: " + g[en]))
758757 else true
759758 }
760759
761760 let dF = [0, 1, 2, 3, 4, 5, 6]
762761 let dG = size(dF)
763762 let dH = false
764763 func dI (dJ,dK) = if ((dK >= dG))
765764 then dJ
766765 else ev(dJ, dF[dK])
767766
768767 func dL (dJ,dK) = if ((dK >= dG))
769768 then dJ
770769 else throw("List size exceeds 7")
771770
772771 dL(dI(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6), 7)
773772 }
774773
775774
776775 func ex (ey,el,ez,et,eA,eB) = {
777776 let eb = split(ey, ":")
778777 if ((size(eb) != 2))
779778 then throw("Incorrect format, should be index:amount")
780779 else if (if (!(ez))
781780 then (size(eb[0]) != 2)
782781 else false)
783782 then throw("Product idx should be 2 digits, zero padded")
784783 else {
785784 let eC = parseIntValue(eb[0])
786785 let eD = parseIntValue(eb[1])
787- if (!(containsElement(ar, eC)))
788- then throw((("Product '" + ao[eC]) + "' cannot be used for land defense"))
786+ if (!(containsElement(as, eC)))
787+ then throw((("Product '" + ap[eC]) + "' cannot be used for land defense"))
789788 else if ((0 > eD))
790789 then throw("Count can't be negative")
791790 else if ((eD > q))
792- then throw(((("Can't put more than " + toString(q)) + " of ") + ao[eC]))
791+ then throw(((("Can't put more than " + toString(q)) + " of ") + ap[eC]))
793792 else if ((eD == 0))
794793 then $Tuple3(el, eA, eB)
795794 else {
796795 let eE = take(el, (8 * eC))
797796 let eg = toInt(take(drop(el, (8 * eC)), 8))
798797 let eh = drop(el, (8 * (eC + 1)))
799- let bD = split(as[eC], "_")
798+ let bE = split(at[eC], "_")
800799 if (if (!(ez))
801800 then (eD > eg)
802801 else false)
803- then throw(((((("You have " + toString(eg)) + " of ") + ao[eC]) + ", but tried to use ") + toString(eD)))
802+ then throw(((((("You have " + toString(eg)) + " of ") + ap[eC]) + ", but tried to use ") + toString(eD)))
804803 else {
805804 let ei = if (if (!(ez))
806- then es(et, split(bD[au], ","))
805+ then es(et, split(bE[av], ","))
807806 else false)
808807 then (eg - eD)
809808 else (eg + eD)
810- let eF = (dt(ei, aw) - dt(eg, aw))
809+ let eF = (dt(ei, ax) - dt(eg, ax))
811810 $Tuple3(((eE + toBytes(ei)) + eh), (eA + eF), (eB - eF))
812811 }
813812 }
814813 }
815814 }
816815
817816
818817 func eG (ey,el,ez,eH,eI,eJ,et) = {
819818 let eb = split(ey, ":")
820819 if ((size(eb) != 2))
821820 then throw("Incorrect format, should be index:amount")
822821 else if (if (!(ez))
823822 then (size(eb[0]) != 2)
824823 else false)
825824 then throw("Product idx should be 2 digits, zero padded")
826825 else {
827826 let eC = parseIntValue(eb[0])
828827 let eD = parseIntValue(eb[1])
829828 if (if ((0 > eC))
830829 then true
831- else (eC >= size(as)))
830+ else (eC >= size(at)))
832831 then throw("Unknown product idx")
833832 else if ((0 > eD))
834833 then throw("Count can't be negative")
835834 else if ((eD > q))
836- then throw(((("Can't put more than " + toString(q)) + " of ") + ao[eC]))
835+ then throw(((("Can't put more than " + toString(q)) + " of ") + ap[eC]))
837836 else if ((eD == 0))
838837 then $Tuple2(el, false)
839838 else {
840839 let eE = take(el, (8 * eC))
841840 let eg = toInt(take(drop(el, (8 * eC)), 8))
842841 let eh = drop(el, (8 * (eC + 1)))
843- let bD = split(as[eC], "_")
842+ let bE = split(at[eC], "_")
844843 if (if (!(ez))
845844 then (eD > eg)
846845 else false)
847- then throw(((((("You have " + toString(eg)) + " of ") + ao[eC]) + ", but tried to use ") + toString(eD)))
846+ then throw(((((("You have " + toString(eg)) + " of ") + ap[eC]) + ", but tried to use ") + toString(eD)))
848847 else {
849848 let eK = if (if (!(ez))
850- then es(et, split(bD[au], ","))
849+ then es(et, split(bE[av], ","))
851850 else false)
852851 then {
853- let eL = bD[av]
852+ let eL = bE[aw]
854853 if ((eL == ""))
855854 then throw("Item cannot be equipped")
856855 else {
857856 let eM = parseIntValue(eL)
858857 let eN = (eM / 100)
859858 if ((eH != eN))
860859 then throw("Segment incompatible")
861860 else {
862861 let eO = ((eM % 100) / 10)
863862 if ((eI != eO))
864863 then throw("Slot incompatible")
865864 else {
866865 let eP = (eM % 10)
867866 if (if ((eJ != 0))
868867 then (eP > 1)
869868 else false)
870869 then throw("Big items should occupy slot 0")
871870 else (eP > 1)
872871 }
873872 }
874873 }
875874 }
876875 else false
877876 $Tuple2(((eE + toBytes((eg + (if (ez)
878877 then eD
879878 else -(eD))))) + eh), eK)
880879 }
881880 }
882881 }
883882 }
884883
885884
886885 func eQ (eR,eS,ez,eH,eI,eT) = if ((eR != ""))
887886 then {
888887 let eU = split(eR, ",")
889888 if ((size(eU) > p))
890889 then throw("Wrong slots format")
891890 else {
892891 let eV = eU[0]
893892 let eW = if ((size(eU) > 1))
894893 then eU[1]
895894 else ""
896895 if (if ((eV == ""))
897896 then (eW == "")
898897 else false)
899898 then eS
900899 else {
901900 let eX = if ((eV != ""))
902901 then eG(eV, eS, ez, eH, eI, 0, eT)
903902 else $Tuple2(eS, false)
904903 if ((eW != ""))
905904 then if (eX._2)
906905 then throw("Big item already occupies slot")
907906 else eG(eW, eX._1, ez, eH, eI, 1, eT)._1
908907 else eX._1
909908 }
910909 }
911910 }
912911 else eS
913912
914913
915914 func eY (eZ,fa,ez,eT) = {
916915 func eH (dD,fb) = {
917916 let en = dD._1
918917 let eI = split(fb, ";")
919918 if ((size(eI) != o))
920919 then throw("Wrong segment format")
921920 else {
922921 let fc = eI[0]
923922 let fd = eI[1]
924923 if (if ((fc == ""))
925924 then (fd == "")
926925 else false)
927926 then $Tuple2((en + 1), dD._2)
928927 else {
929928 let fe = eQ(fc, dD._2, ez, en, 0, eT)
930929 $Tuple2((en + 1), eQ(fd, fe, ez, en, 1, eT))
931930 }
932931 }
933932 }
934933
935934 ( let dF = eZ
936935 let dG = size(dF)
937936 let dH = $Tuple2(0, fa)
938937 func dI (dJ,dK) = if ((dK >= dG))
939938 then dJ
940939 else eH(dJ, dF[dK])
941940
942941 func dL (dJ,dK) = if ((dK >= dG))
943942 then dJ
944943 else throw("List size exceeds 6")
945944
946945 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6))._2
947946 }
948947
949948
950949 func ff (eZ,fa,eA,eB,ez,et) = if ((3 > size(eZ)))
951950 then throw("At least duck, mines and traps parts are required")
952951 else {
953952 func eH (dD,fb) = {
954953 let en = dD._1
955954 if ((en == 0))
956955 then $Tuple4((en + 1), dD._2, dD._3, dD._4)
957956 else {
958957 let fg = ex(fb, dD._2, ez, et, dD._3, dD._4)
959958 $Tuple4((en + 1), fg._1, fg._2, fg._3)
960959 }
961960 }
962961
963962 let fh = {
964963 let dF = eZ
965964 let dG = size(dF)
966965 let dH = $Tuple4(0, fa, eA, eB)
967966 func dI (dJ,dK) = if ((dK >= dG))
968967 then dJ
969968 else eH(dJ, dF[dK])
970969
971970 func dL (dJ,dK) = if ((dK >= dG))
972971 then dJ
973972 else throw("List size exceeds 10")
974973
975974 dL(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
976975 }
977976 $Tuple3(fh._2, fh._3, fh._4)
978977 }
979978
980979
981980 func fi (fj,fk,fl,fm) = if ((size(fj) != ah))
982981 then throw("Wrong proportions data")
983982 else {
984983 func fn (dD,fo) = {
985984 let dV = (parseIntValue(fj[fo]) + ((fm * fk[fo]) * fl))
986985 if ((0 > dV))
987986 then throw(((((((("Panic! Pieces of type=" + toString(fo)) + ", sign=") + toString(fm)) + ", terrainCounts[i]=") + toString(fk[fo])) + ", landSizeIndex=") + toString(fl)))
988987 else (dD :+ toString(dV))
989988 }
990989
991- let dF = bV
990+ let dF = bW
992991 let dG = size(dF)
993992 let dH = nil
994993 func dI (dJ,dK) = if ((dK >= dG))
995994 then dJ
996995 else fn(dJ, dF[dK])
997996
998997 func dL (dJ,dK) = if ((dK >= dG))
999998 then dJ
1000999 else throw("List size exceeds 6")
10011000
10021001 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
10031002 }
10041003
10051004
10061005 func fp (fk,fl,fm) = {
1007- let fj = split(valueOrElse(getString(cw()), "0_0_0_0_0_0"), "_")
1006+ let fj = split(valueOrElse(getString(cx()), "0_0_0_0_0_0"), "_")
10081007 makeString(fi(fj, fk, fl, fm), "_")
10091008 }
10101009
10111010
10121011 func fq (fr) = [(size(split(fr, "A")) - 1), (size(split(fr, "B")) - 1), (size(split(fr, "C")) - 1), (size(split(fr, "D")) - 1), (size(split(fr, "E")) - 1), (size(split(fr, "F")) - 1)]
10131012
10141013
10151014 func fs (ft,fk,fu,fl,fv) = {
10161015 func fw (dD,fo) = {
1017- let fx = ((fraction(fu, fv, aj) * fk[fo]) * fl)
1016+ let fx = ((fraction(fu, fv, ak) * fk[fo]) * fl)
10181017 (dD :+ toString((parseIntValue(ft[fo]) + fx)))
10191018 }
10201019
10211020 let dO = {
1022- let dF = bV
1021+ let dF = bW
10231022 let dG = size(dF)
10241023 let dH = nil
10251024 func dI (dJ,dK) = if ((dK >= dG))
10261025 then dJ
10271026 else fw(dJ, dF[dK])
10281027
10291028 func dL (dJ,dK) = if ((dK >= dG))
10301029 then dJ
10311030 else throw("List size exceeds 6")
10321031
10331032 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
10341033 }
10351034 makeString(dO, "_")
10361035 }
10371036
10381037
10391038 func fy (fk,fu,fl,fv) = {
10401039 func fw (dD,fo) = {
1041- let fx = ((fraction(fu, fv, aj) * fk[fo]) * fl)
1040+ let fx = ((fraction(fu, fv, ak) * fk[fo]) * fl)
10421041 $Tuple2((dD._1 :+ fx), (dD._2 + fx))
10431042 }
10441043
1045- let dF = bV
1044+ let dF = bW
10461045 let dG = size(dF)
10471046 let dH = $Tuple2(nil, 0)
10481047 func dI (dJ,dK) = if ((dK >= dG))
10491048 then dJ
10501049 else fw(dJ, dF[dK])
10511050
10521051 func dL (dJ,dK) = if ((dK >= dG))
10531052 then dJ
10541053 else throw("List size exceeds 6")
10551054
10561055 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
10571056 }
10581057
10591058
10601059 func fz (fA,fB,fC,fD) = {
10611060 let fE = fC._1
10621061 let fF = fC._2
10631062 if ((fF == 0))
10641063 then $Tuple2(makeString(fA, "_"), makeString(fB, "_"))
10651064 else if ((fD >= fF))
10661065 then {
10671066 func fG (dD,fo) = (dD :+ toString((parseIntValue(fA[fo]) + fE[fo])))
10681067
10691068 let dO = {
1070- let dF = bV
1069+ let dF = bW
10711070 let dG = size(dF)
10721071 let dH = nil
10731072 func dI (dJ,dK) = if ((dK >= dG))
10741073 then dJ
10751074 else fG(dJ, dF[dK])
10761075
10771076 func dL (dJ,dK) = if ((dK >= dG))
10781077 then dJ
10791078 else throw("List size exceeds 6")
10801079
10811080 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
10821081 }
10831082 $Tuple2(makeString(dO, "_"), makeString(fB, "_"))
10841083 }
10851084 else {
10861085 func fH (dD,fo) = {
10871086 let fI = fraction(fE[fo], fD, fF)
10881087 $Tuple2((dD._1 :+ toString((parseIntValue(fA[fo]) + fI))), (dD._2 :+ toString(((parseIntValue(fB[fo]) + fE[fo]) - fI))))
10891088 }
10901089
10911090 let dO = {
1092- let dF = bV
1091+ let dF = bW
10931092 let dG = size(dF)
10941093 let dH = $Tuple2(nil, nil)
10951094 func dI (dJ,dK) = if ((dK >= dG))
10961095 then dJ
10971096 else fH(dJ, dF[dK])
10981097
10991098 func dL (dJ,dK) = if ((dK >= dG))
11001099 then dJ
11011100 else throw("List size exceeds 6")
11021101
11031102 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
11041103 }
11051104 $Tuple2(makeString(dO._1, "_"), makeString(dO._2, "_"))
11061105 }
11071106 }
11081107
11091108
11101109 func fJ (fK) = if ((fK >= toBigInt(0)))
11111110 then fK
11121111 else -(fK)
11131112
11141113
11151114 let fL = [[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]]
11161115
1117-func fM (cF,fN) = {
1118- let fO = toInt((cF % cU))
1116+func fM (cG,fN) = {
1117+ let fO = toInt((cG % cV))
11191118 let fP = if ((fN[0] > fO))
11201119 then "A"
11211120 else if ((fN[1] > fO))
11221121 then "B"
11231122 else if ((fN[2] > fO))
11241123 then "C"
11251124 else if ((fN[3] > fO))
11261125 then "D"
11271126 else if ((fN[4] > fO))
11281127 then "E"
11291128 else "F"
11301129 fP
11311130 }
11321131
11331132
11341133 func fQ (fR,fS) = {
11351134 let fT = fL[fS]
1136- func fU (dD,dE) = $Tuple2((((((dD._1 + fM(dD._2, fT)) + fM((dD._2 / cU), fT)) + fM((dD._2 / cV), fT)) + fM((dD._2 / cW), fT)) + fM((dD._2 / cX), fT)), (dD._2 / cY))
1135+ func fU (dD,dE) = $Tuple2((((((dD._1 + fM(dD._2, fT)) + fM((dD._2 / cV), fT)) + fM((dD._2 / cW), fT)) + fM((dD._2 / cX), fT)) + fM((dD._2 / cY), fT)), (dD._2 / cZ))
11371136
11381137 let fh = {
11391138 let dF = [1, 2, 3, 4, 5]
11401139 let dG = size(dF)
1141- let dH = $Tuple2("", (fR / cT))
1140+ let dH = $Tuple2("", (fR / cU))
11421141 func dI (dJ,dK) = if ((dK >= dG))
11431142 then dJ
11441143 else fU(dJ, dF[dK])
11451144
11461145 func dL (dJ,dK) = if ((dK >= dG))
11471146 then dJ
11481147 else throw("List size exceeds 5")
11491148
11501149 dL(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5)
11511150 }
11521151 fh._1
11531152 }
11541153
11551154
11561155 let fV = [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]
11571156
11581157 let fW = ["A", "B", "C", "D", "E", "F"]
11591158
11601159 func fX (fY,fl) = {
1161- func fZ (dD,cD) = {
1160+ func fZ (dD,cE) = {
11621161 let en = dD._2
1163- let ga = parseIntValue(cD)
1162+ let ga = parseIntValue(cE)
11641163 let fK = if ((ga == 0))
11651164 then 0
11661165 else if ((ga >= (4 * fl)))
11671166 then (ga / fl)
11681167 else if ((ga > (3 * fl)))
11691168 then 3
11701169 else (((ga - 1) / fl) + 1)
11711170 $Tuple3((dD._1 :+ fK), (dD._2 + 1), (dD._3 + fK))
11721171 }
11731172
11741173 let fh = {
11751174 let dF = fY
11761175 let dG = size(dF)
11771176 let dH = $Tuple3(nil, 0, 0)
11781177 func dI (dJ,dK) = if ((dK >= dG))
11791178 then dJ
11801179 else fZ(dJ, dF[dK])
11811180
11821181 func dL (dJ,dK) = if ((dK >= dG))
11831182 then dJ
11841183 else throw("List size exceeds 6")
11851184
11861185 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
11871186 }
11881187 let gb = fh._1
11891188 let gc = value(indexOf(gb, max(gb)))
11901189 let gd = (fh._3 - 25)
1191- func ge (dD,ck) = {
1192- let gf = if ((ck == gc))
1193- then (gb[ck] - gd)
1194- else gb[ck]
1190+ func ge (dD,cl) = {
1191+ let gf = if ((cl == gc))
1192+ then (gb[cl] - gd)
1193+ else gb[cl]
11951194 let gg = if ((gf == 0))
11961195 then nil
11971196 else split(drop(toString(pow(10, 0, gf, 0, 0, DOWN)), 1), "")
1198- let eM = fW[ck]
1197+ let eM = fW[cl]
11991198 func gh (gi,gj) = (gi :+ eM)
12001199
12011200 let gk = {
12021201 let dF = gg
12031202 let dG = size(dF)
12041203 let dH = nil
12051204 func gl (dJ,dK) = if ((dK >= dG))
12061205 then dJ
12071206 else gh(dJ, dF[dK])
12081207
12091208 func gm (dJ,dK) = if ((dK >= dG))
12101209 then dJ
12111210 else throw("List size exceeds 25")
12121211
12131212 gm(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(dH, 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)
12141213 }
12151214 (dD ++ gk)
12161215 }
12171216
12181217 let dO = {
1219- let dF = bV
1218+ let dF = bW
12201219 let dG = size(dF)
12211220 let dH = nil
12221221 func gl (dJ,dK) = if ((dK >= dG))
12231222 then dJ
12241223 else ge(dJ, dF[dK])
12251224
12261225 func gm (dJ,dK) = if ((dK >= dG))
12271226 then dJ
12281227 else throw("List size exceeds 6")
12291228
12301229 gm(gl(gl(gl(gl(gl(gl(dH, 0), 1), 2), 3), 4), 5), 6)
12311230 }
12321231 func gn (dD,en) = (dD + dO[en])
12331232
12341233 let dF = fV
12351234 let dG = size(dF)
12361235 let dH = ""
12371236 func go (dJ,dK) = if ((dK >= dG))
12381237 then dJ
12391238 else gn(dJ, dF[dK])
12401239
12411240 func gp (dJ,dK) = if ((dK >= dG))
12421241 then dJ
12431242 else throw("List size exceeds 25")
12441243
12451244 gp(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(dH, 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)
12461245 }
12471246
12481247
12491248 func gq (gr) = {
12501249 let fg = split(valueOrElse(getString(gr), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1251-[toString(valueOrElse(parseInt(fg[aG]), 0)), if ((size(split(fg[aH], "_")) == ah))
1252- then fg[aH]
1253- else "0_0_0_0_0_0", if ((size(split(fg[aI], "_")) == ah))
1250+[toString(valueOrElse(parseInt(fg[aH]), 0)), if ((size(split(fg[aI], "_")) == ah))
12541251 then fg[aI]
1255- else "0_0_0_0_0_0", fg[aJ]]
1252+ else "0_0_0_0_0_0", if ((size(split(fg[aJ], "_")) == ah))
1253+ then fg[aJ]
1254+ else "0_0_0_0_0_0", fg[aK]]
12561255 }
12571256
12581257
12591258 func gs (gt) = {
12601259 let eb = split(gt, "_")
1261- ((ak * (parseIntValue(eb[1]) + 1)) * parseIntValue(eb[0]))
1260+ ((al * (parseIntValue(eb[1]) + 1)) * parseIntValue(eb[0]))
12621261 }
12631262
12641263
12651264 func gu (gv) = {
1266- let gw = gv[aA]
1265+ let gw = gv[aB]
12671266 func gx (dD,gy) = (dD + parseIntValue(gy))
12681267
12691268 func gz (dD,gy) = {
1270- let ck = dD._1
1271- let dw = (((parseIntValue(gy) + aw) - 1) / aw)
1272- $Tuple2((ck + 1), (dD._2 + (dw * bP)))
1269+ let cl = dD._1
1270+ let dw = (((parseIntValue(gy) + ax) - 1) / ax)
1271+ $Tuple2((cl + 1), (dD._2 + (dw * bQ)))
12731272 }
12741273
12751274 let gA = {
1276- let dF = split(gv[ay], "_")
1275+ let dF = split(gv[az], "_")
12771276 let dG = size(dF)
12781277 let dH = 0
12791278 func dI (dJ,dK) = if ((dK >= dG))
12801279 then dJ
12811280 else gx(dJ, dF[dK])
12821281
12831282 func dL (dJ,dK) = if ((dK >= dG))
12841283 then dJ
12851284 else throw("List size exceeds 6")
12861285
12871286 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
12881287 }
12891288 let gB = {
1290- let dF = split(gv[az], "_")
1289+ let dF = split(gv[aA], "_")
12911290 let dG = size(dF)
12921291 let dH = 0
12931292 func gl (dJ,dK) = if ((dK >= dG))
12941293 then dJ
12951294 else gx(dJ, dF[dK])
12961295
12971296 func gm (dJ,dK) = if ((dK >= dG))
12981297 then dJ
12991298 else throw("List size exceeds 6")
13001299
13011300 gm(gl(gl(gl(gl(gl(gl(dH, 0), 1), 2), 3), 4), 5), 6)
13021301 }
13031302 let gC = if ((gw == ""))
13041303 then 0
13051304 else ( let dF = split_4C(gw, "_")
13061305 let dG = size(dF)
13071306 let dH = $Tuple2(0, 0)
13081307 func go (dJ,dK) = if ((dK >= dG))
13091308 then dJ
13101309 else gz(dJ, dF[dK])
13111310
13121311 func gp (dJ,dK) = if ((dK >= dG))
13131312 then dJ
13141313 else throw("List size exceeds 50")
13151314
13161315 gp(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(dH, 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
13171316 ((gA + gB) + gC)
13181317 }
13191318
13201319
13211320 func gD (gE,gF,gG) = {
13221321 let gt = ((toString(gF) + "_") + toString(gG))
13231322 let gH = gs(gt)
13241323 let gI = valueOrElse(getString(gE), (gt + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
13251324 let gJ = split_4C(gI, ":")
13261325 let gK = gu(gJ)
13271326 let gL = if ((5 > size(gJ)))
13281327 then makeString(["0", toString(gK), toString((gH - gK)), toString(gH)], "_")
13291328 else {
1330- let gM = split(gJ[aB], "_")
1331- let gN = parseIntValue(gM[aC])
1329+ let gM = split(gJ[aC], "_")
1330+ let gN = parseIntValue(gM[aD])
13321331 let gO = if ((size(gM) > 1))
1333- then parseIntValue(gM[aD])
1332+ then parseIntValue(gM[aE])
13341333 else gK
13351334 makeString([toString(gN), toString(gO), toString(((gH - gN) - gO)), toString(gH)], "_")
13361335 }
1337-[gJ[ax], if ((size(split(gJ[ay], "_")) == ah))
1338- then gJ[ay]
1339- else "0_0_0_0_0_0", if ((size(split(gJ[az], "_")) == ah))
1336+[gJ[ay], if ((size(split(gJ[az], "_")) == ah))
13401337 then gJ[az]
1341- else "0_0_0_0_0_0", gJ[aA], gL]
1338+ else "0_0_0_0_0_0", if ((size(split(gJ[aA], "_")) == ah))
1339+ then gJ[aA]
1340+ else "0_0_0_0_0_0", gJ[aB], gL]
13421341 }
13431342
13441343
13451344 func gP (gv) = {
13461345 let gQ = gu(gv)
1347- let gR = parseIntValue(split(gv[aB], "_")[aC])
1348- ((gs(gv[ax]) - gQ) - gR)
1346+ let gR = parseIntValue(split(gv[aC], "_")[aD])
1347+ ((gs(gv[ay]) - gQ) - gR)
13491348 }
13501349
13511350
13521351 func gS (gT,gv,gU) = if ((size(gT) != 3))
13531352 then throw("cargoListStr should contain exactly 2 ':' separators")
13541353 else {
13551354 let gV = split(gT[0], "_")
13561355 let gW = split(gT[1], "_")
13571356 let gX = if ((gT[2] == ""))
13581357 then nil
13591358 else split_4C(gT[2], "_")
13601359 if ((size(gV) != ah))
13611360 then throw("All 6 resources should be passed")
13621361 else if ((size(gW) != ah))
13631362 then throw("All 6 materials should be passed")
13641363 else {
13651364 let fD = gP(gv)
1366- let gY = split(gv[ay], "_")
1367- let gZ = split(gv[az], "_")
1368- let ha = if ((gv[aA] == ""))
1365+ let gY = split(gv[az], "_")
1366+ let gZ = split(gv[aA], "_")
1367+ let ha = if ((gv[aB] == ""))
13691368 then nil
1370- else split_4C(gv[aA], "_")
1371- let fB = split(gU[aH], "_")
1372- let hb = split(gU[aI], "_")
1373- let hc = if ((gU[aJ] == ""))
1369+ else split_4C(gv[aB], "_")
1370+ let fB = split(gU[aI], "_")
1371+ let hb = split(gU[aJ], "_")
1372+ let hc = if ((gU[aK] == ""))
13741373 then nil
1375- else split_4C(gU[aJ], "_")
1374+ else split_4C(gU[aK], "_")
13761375 func hd (dD,gy) = {
13771376 let fo = dD._1
13781377 let he = parseIntValue(gy)
13791378 let hf = parseIntValue(gY[fo])
13801379 let hg = parseIntValue(fB[fo])
13811380 if ((he == 0))
13821381 then $Tuple4((fo + 1), (dD._2 :+ gY[fo]), (dD._3 :+ fB[fo]), dD._4)
13831382 else if ((he > 0))
13841383 then if ((he > hg))
13851384 then throw((((("Attempt to take " + gy) + " from backpack, but only ") + toString(hg)) + " available"))
13861385 else $Tuple4((fo + 1), (dD._2 :+ toString((hf + he))), (dD._3 :+ toString((hg - he))), (dD._4 + he))
13871386 else if ((-(he) > hf))
13881387 then throw((((("Attempt to take " + toString(-(he))) + " from warehouse, but only ") + toString(hf)) + " available"))
13891388 else $Tuple4((fo + 1), (dD._2 :+ toString((hf + he))), (dD._3 :+ toString((hg - he))), (dD._4 + he))
13901389 }
13911390
13921391 let dO = {
13931392 let dF = gV
13941393 let dG = size(dF)
13951394 let dH = $Tuple4(0, nil, nil, 0)
13961395 func dI (dJ,dK) = if ((dK >= dG))
13971396 then dJ
13981397 else hd(dJ, dF[dK])
13991398
14001399 func dL (dJ,dK) = if ((dK >= dG))
14011400 then dJ
14021401 else throw("List size exceeds 6")
14031402
14041403 dL(dI(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5), 6)
14051404 }
14061405 func hh (dD,gy) = {
14071406 let fo = dD._1
14081407 let he = parseIntValue(gy)
14091408 let hi = parseIntValue(gZ[fo])
14101409 let hj = parseIntValue(hb[fo])
14111410 if ((he == 0))
14121411 then $Tuple4((fo + 1), (dD._2 :+ gZ[fo]), (dD._3 :+ hb[fo]), dD._4)
14131412 else if ((he > 0))
14141413 then if ((he > hj))
14151414 then throw((((("Attempt to take " + gy) + " from backpack, but only ") + toString(hj)) + " available"))
14161415 else $Tuple4((fo + 1), (dD._2 :+ toString((hi + he))), (dD._3 :+ toString((hj - he))), (dD._4 + he))
14171416 else if ((-(he) > hi))
14181417 then throw((((("Attempt to take " + toString(-(he))) + " from warehouse, but only ") + toString(hi)) + " available"))
14191418 else $Tuple4((fo + 1), (dD._2 :+ toString((hi + he))), (dD._3 :+ toString((hj - he))), (dD._4 + he))
14201419 }
14211420
14221421 let fc = {
14231422 let dF = gW
14241423 let dG = size(dF)
14251424 let dH = $Tuple4(0, nil, nil, dO._4)
14261425 func gl (dJ,dK) = if ((dK >= dG))
14271426 then dJ
14281427 else hh(dJ, dF[dK])
14291428
14301429 func gm (dJ,dK) = if ((dK >= dG))
14311430 then dJ
14321431 else throw("List size exceeds 6")
14331432
14341433 gm(gl(gl(gl(gl(gl(gl(dH, 0), 1), 2), 3), 4), 5), 6)
14351434 }
14361435 func hk (dD,gy) = {
14371436 let fo = dD._1
14381437 let he = parseIntValue(gy)
14391438 let hl = if ((size(ha) > fo))
14401439 then parseIntValue(ha[fo])
14411440 else 0
14421441 let hm = if ((size(hc) > fo))
14431442 then parseIntValue(hc[fo])
14441443 else 0
14451444 if ((he == 0))
14461445 then $Tuple4((fo + 1), (dD._2 :+ toString(hl)), (dD._3 :+ toString(hm)), dD._4)
14471446 else if ((he > 0))
14481447 then if ((he > hm))
14491448 then throw((((("Attempt to take " + gy) + " from backpack, but only ") + toString(hm)) + " available"))
14501449 else {
1451- let eF = (dt((hl + he), aw) - dt(hl, aw))
1450+ let eF = (dt((hl + he), ax) - dt(hl, ax))
14521451 $Tuple4((fo + 1), (dD._2 :+ toString((hl + he))), (dD._3 :+ toString((hm - he))), (dD._4 + eF))
14531452 }
14541453 else if ((-(he) > hl))
14551454 then throw((((("Attempt to take " + toString(-(he))) + " from warehouse, but only ") + toString(hl)) + " available"))
14561455 else {
1457- let eF = (dt((hl + he), aw) - dt(hl, aw))
1456+ let eF = (dt((hl + he), ax) - dt(hl, ax))
14581457 $Tuple4((fo + 1), (dD._2 :+ toString((hl + he))), (dD._3 :+ toString((hm - he))), (dD._4 + eF))
14591458 }
14601459 }
14611460
14621461 let fg = if ((size(gX) != 0))
14631462 then {
14641463 let dF = gX
14651464 let dG = size(dF)
14661465 let dH = $Tuple4(0, nil, nil, fc._4)
14671466 func go (dJ,dK) = if ((dK >= dG))
14681467 then dJ
14691468 else hk(dJ, dF[dK])
14701469
14711470 func gp (dJ,dK) = if ((dK >= dG))
14721471 then dJ
14731472 else throw("List size exceeds 50")
14741473
14751474 gp(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(go(dH, 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)
14761475 }
14771476 else $Tuple4(0, ha, hc, fc._4)
14781477 let hn = fg._4
14791478 if ((hn > fD))
14801479 then throw((((("Attempt to put total " + toString(hn)) + " stuff, but only ") + toString(fD)) + " warehouse space left"))
14811480 else $Tuple7(makeString(dO._2, "_"), makeString(fc._2, "_"), makeString_2C(fg._2, "_"), makeString(dO._3, "_"), makeString(fc._3, "_"), makeString_2C(fg._3, "_"), hn)
14821481 }
14831482 }
14841483
14851484
14861485 func ho (hp,hq) = {
1487- let bk = toString(hp)
1486+ let bl = toString(hp)
14881487 let hr = fJ(toBigInt(hq))
1489- let hs = valueOrElse(getInteger(da()), (cZ + 1))
1490- let dc = toString(hs)
1491- let fS = toInt((hr % cT))
1488+ let hs = valueOrElse(getInteger(db()), (da + 1))
1489+ let dd = toString(hs)
1490+ let fS = toInt((hr % cU))
14921491 let fr = fQ(hr, fS)
1493- let cy = ap[fS]
1494- let ht = Issue(ds(dc, "S"), makeString([dc, "S", fr, cy], "_"), 1, 0, false)
1495- let aM = calculateAssetId(ht)
1496- let hu = toBase58String(aM)
1497- $Tuple2([IntegerEntry(da(), (hs + 1)), ht, StringEntry(db(dc), hu), StringEntry(aL(hu), bk), StringEntry(dh(dc), bk), IntegerEntry(aP(hu), 0), IntegerEntry(df(hu, bk), 0), ScriptTransfer(hp, 1, aM)], $Tuple2(hu, cy))
1498- }
1499-
1500-
1501-func hv (bk,hw,hx) = if (!(sigVerify_8Kb(hw, hx, cL)))
1492+ let cz = aq[fS]
1493+ let ht = Issue(ds(dd, "S"), makeString([dd, "S", fr, cz], "_"), 1, 0, false)
1494+ let aN = calculateAssetId(ht)
1495+ let hu = toBase58String(aN)
1496+ $Tuple2([IntegerEntry(db(), (hs + 1)), ht, StringEntry(dc(dd), hu), StringEntry(aM(hu), bl), StringEntry(dh(dd), bl), IntegerEntry(aQ(hu), 0), IntegerEntry(dg(hu, bl), 0), ScriptTransfer(hp, 1, aN)], $Tuple2(hu, cz))
1497+ }
1498+
1499+
1500+func hv (bl,hw,hx) = if (!(sigVerify_8Kb(hw, hx, cM)))
15021501 then throw("signature does not match")
15031502 else {
15041503 let eb = split(toUtf8String(hw), ";")
15051504 let hy = split(eb[0], "|")
15061505 let hz = split(hy[do], "_")
15071506 let hA = parseIntValue(hz[0])
15081507 let hB = parseIntValue(hz[1])
15091508 let hC = split(eb[1], ":")
15101509 let hD = hC[0]
15111510 let hE = parseIntValue(hy[dp])
1512- if (if ((hE > (lastBlock.timestamp + cN)))
1511+ if (if ((hE > (lastBlock.timestamp + cO)))
15131512 then true
1514- else ((lastBlock.timestamp - cN) > hE))
1513+ else ((lastBlock.timestamp - cO) > hE))
15151514 then throw(((("signature outdated: logTime=" + toString(hE)) + ", bcTime=") + toString(lastBlock.timestamp)))
15161515 else {
15171516 let hF = hC[1]
1518- let hG = valueOrElse(getString(aK(bk)), "")
1517+ let hG = valueOrElse(getString(aL(bl)), "")
15191518 if ((hG != hF))
15201519 then throw(((("Tx ids don't match! In state: " + hG) + ", in msg: ") + hF))
15211520 else {
1522- let s = valueOrErrorMessage(getString(bf(bk)), "You don't have a duck staked")
1521+ let s = valueOrErrorMessage(getString(bg(bl)), "You don't have a duck staked")
15231522 let hH = r(s)
15241523 let hI = Q(valueOrElse(getInteger(v(s)), 0))
15251524 let hJ = valueOrElse(getInteger(hH), hI)
15261525 if ((hJ != hA))
15271526 then throw(((("oldHealth=" + toString(hJ)) + " from state does not match one from flight log=") + toString(hA)))
15281527 else if ((0 >= hA))
15291528 then throw("You can't fly with zero health")
15301529 else {
15311530 let hK = if ((size(hy) > dq))
15321531 then hy[dq]
15331532 else ""
15341533 let hL = if ((size(hy) > dr))
15351534 then hy[dr]
15361535 else ""
15371536 let hM = if (if ((hB > 0))
15381537 then (hK == "$")
15391538 else false)
1540- then cE(invoke(cl, "sendUsdtPrize", [bk], nil))
1539+ then cF(invoke(cm, "sendUsdtPrize", [bl], nil))
15411540 else 0
15421541 $Tuple5(hB, s, hM, hD, hL)
15431542 }
15441543 }
15451544 }
15461545 }
15471546
15481547
15491548 func hN (hp,hq,hw,hx) = {
1550- let bk = toString(hp)
1551- let fT = hv(bk, hw, hx)
1549+ let bl = toString(hp)
1550+ let fT = hv(bl, hw, hx)
15521551 let s = fT._2
15531552 let hH = r(s)
1554- let gr = bg(s)
1553+ let gr = bh(s)
15551554 let gU = gq(gr)
1556- let hO = split(gU[aI], "_")
1557- let hP = makeString(dP(true, hO, cR), "_")
1555+ let hO = split(gU[aJ], "_")
1556+ let hP = makeString(dP(true, hO, cS), "_")
15581557 let hQ = x(s)
15591558 let hR = valueOrElse(getString(hQ), ",;,_,;,_,;,_,;,_,;,_,;,")
15601559 let hS = dW(hR, fT._5)
15611560 if ((0 >= fT._1))
15621561 then $Tuple3([IntegerEntry(hH, 0), StringEntry(hQ, hS)], "", 0)
15631562 else {
15641563 let hT = ho(hp, hq)
15651564 let hu = hT._2._1
1566- $Tuple3(((((hT._1 :+ StringEntry(bh(s), makeString([hT._2._2, "L", hu], "_"))) :+ IntegerEntry(hH, fT._1)) :+ StringEntry(hQ, hS)) :+ StringEntry(gr, makeString([gU[aG], gU[aH], hP, gU[aJ]], ":"))), hu, fT._3)
1567- }
1568- }
1569-
1570-
1571-func hU (aW,hV) = {
1572- let gG = valueOrElse(getInteger(aP(aW)), 0)
1573- let hW = valueOrElse(getInteger(aQ(ag, aW)), 0)
1565+ $Tuple3(((((hT._1 :+ StringEntry(bi(s), makeString([hT._2._2, "L", hu], "_"))) :+ IntegerEntry(hH, fT._1)) :+ StringEntry(hQ, hS)) :+ StringEntry(gr, makeString([gU[aH], gU[aI], hP, gU[aK]], ":"))), hu, fT._3)
1566+ }
1567+ }
1568+
1569+
1570+func hU (aX,hV) = {
1571+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
1572+ let hW = valueOrElse(getInteger(aR(ag, aX)), 0)
15741573 let hX = (gG / 6)
15751574 let hY = (gG / 7)
1576- ((ai + fraction(ai, ((gG + hX) + (2 * hY)), 5)) + fraction(ai, hW, (hV * 5)))
1575+ ((aj + fraction(aj, ((gG + hX) + (2 * hY)), 5)) + fraction(aj, hW, (hV * 5)))
15771576 }
15781577
15791578
15801579 func hZ (b,ia,ib) = {
15811580 let ic = if ((ia == dl))
1582- then $Tuple2(ib, valueOrElse(getString(bf(b)), ""))
1581+ then $Tuple2(ib, valueOrElse(getString(bg(b)), ""))
15831582 else {
1584- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
1585- let id = valueOrElse(getString(bh(s)), al)
1583+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
1584+ let id = valueOrElse(getString(bi(s)), am)
15861585 let ie = split(value(id), "_")
1587- if ((ie[bA] != "L"))
1588- then throw((("Duck location type is " + ie[bA]) + ", but should be L"))
1589- else $Tuple2(ie[bB], s)
1590- }
1591- let aW = ic._1
1586+ if ((ie[bB] != "L"))
1587+ then throw((("Duck location type is " + ie[bB]) + ", but should be L"))
1588+ else $Tuple2(ie[bC], s)
1589+ }
1590+ let aX = ic._1
15921591 let if = ic._2
1593- let ig = value(assetInfo(fromBase58String(aW)))
1594- let ih = aO(aW)
1592+ let ig = value(assetInfo(fromBase58String(aX)))
1593+ let ih = aP(aX)
15951594 let ii = valueOrErrorMessage(getInteger(ih), (("Land " + ig.name) + " is not staked"))
1596- let ij = valueOrErrorMessage(getString(aL(aW)), (("NFT " + ig.name) + " is orphaned"))
1595+ let ij = valueOrErrorMessage(getString(aM(aX)), (("NFT " + ig.name) + " is orphaned"))
15971596 if ((ij != b))
15981597 then throw((ae + " is not yours"))
15991598 else {
16001599 let ik = split(ig.description, "_")
1601- $Tuple4(if, aW, ik, ii)
1600+ $Tuple4(if, aX, ik, ii)
16021601 }
16031602 }
16041603
16051604
16061605 func il (b,du,ia,ib) = if ((0 > du))
16071606 then throw("Negative amount")
16081607 else {
16091608 let eM = hZ(b, ia, ib)
1610- let cH = eM._3[cr]
1611- let fk = fq(eM._3[cs])
1609+ let cI = eM._3[cs]
1610+ let fk = fq(eM._3[ct])
16121611 let fu = (lastBlock.timestamp - eM._4)
16131612 if ((0 > fu))
16141613 then throw(((("Saved timestamp is in future, saved = " + toString(eM._4)) + ", current = ") + toString(lastBlock.timestamp)))
16151614 else {
1616- let hV = cG(cH)
1615+ let hV = cH(cI)
16171616 let im = hU(eM._2, hV)
1618- let in = fraction(fu, (im * hV), aj)
1617+ let in = fraction(fu, (im * hV), ak)
16191618 if ((du > in))
16201619 then throw(((("Not enough resources, available = " + toString(in)) + ", requested = ") + toString(du)))
16211620 else {
1622- let io = fraction((in - du), aj, (im * hV))
1621+ let io = fraction((in - du), ak, (im * hV))
16231622 let ip = (lastBlock.timestamp - io)
1624- let gF = (hV / bQ)
1623+ let gF = (hV / bR)
16251624 let fC = fy(fk, (fu - io), gF, im)
1626- let gE = aV(eM._2)
1627- let gG = valueOrElse(getInteger(aP(eM._2)), 0)
1625+ let gE = aW(eM._2)
1626+ let gG = valueOrElse(getInteger(aQ(eM._2)), 0)
16281627 let gv = gD(gE, gF, gG)
1629- let gM = split(gv[aB], "_")
1630- let fD = parseIntValue(gM[aE])
1628+ let gM = split(gv[aC], "_")
1629+ let fD = parseIntValue(gM[aF])
16311630 if (if ((ia == dl))
16321631 then (du > fD)
16331632 else false)
16341633 then throw((("Only " + toString(fD)) + " space left in warehouse"))
16351634 else {
1636- let gr = bg(eM._1)
1635+ let gr = bh(eM._1)
16371636 let gU = gq(gr)
1638- let fB = split(gU[aH], "_")
1639- let fA = split(gv[ay], "_")
1637+ let fB = split(gU[aI], "_")
1638+ let fA = split(gv[az], "_")
16401639 let iq = if ((ia == dl))
1641- then $Tuple4(fs(fA, fk, (fu - io), gF, im), gU[aH], (parseIntValue(gM[aD]) + fC._2), (parseIntValue(gM[aE]) - fC._2))
1640+ then $Tuple4(fs(fA, fk, (fu - io), gF, im), gU[aI], (parseIntValue(gM[aE]) + fC._2), (parseIntValue(gM[aF]) - fC._2))
16421641 else if ((ia == dm))
1643- then $Tuple4(gv[ay], fs(fB, fk, (fu - io), gF, im), parseIntValue(gM[aD]), parseIntValue(gM[aE]))
1642+ then $Tuple4(gv[az], fs(fB, fk, (fu - io), gF, im), parseIntValue(gM[aE]), parseIntValue(gM[aF]))
16441643 else {
16451644 let ir = fz(fA, fB, fC, fD)
1646- let is = min([parseIntValue(gM[aE]), fC._2])
1647- $Tuple4(ir._1, ir._2, (parseIntValue(gM[aD]) + is), (parseIntValue(gM[aE]) - is))
1645+ let is = min([parseIntValue(gM[aF]), fC._2])
1646+ $Tuple4(ir._1, ir._2, (parseIntValue(gM[aE]) + is), (parseIntValue(gM[aF]) - is))
16481647 }
16491648 let it = iq._1
16501649 let iu = iq._2
16511650 let iv = iq._3
16521651 let iw = iq._4
1653- $Tuple5([IntegerEntry(aO(eM._2), ip), IntegerEntry(aS(ae, eM._2, b), ip)], gr, [gU[aG], iu, gU[aI], gU[aJ]], gE, [gv[ax], it, gv[az], gv[aA], makeString([gM[aC], toString(iv), toString(iw), gM[aF]], "_")])
1652+ $Tuple5([IntegerEntry(aP(eM._2), ip), IntegerEntry(aT(ae, eM._2, b), ip)], gr, [gU[aH], iu, gU[aJ], gU[aK]], gE, [gv[ay], it, gv[aA], gv[aB], makeString([gM[aD], toString(iv), toString(iw), gM[aG]], "_")])
16541653 }
16551654 }
16561655 }
16571656 }
16581657
16591658
1660-func ix (b,aW,hV,ia) = {
1661- let ih = aO(aW)
1659+func ix (b,aX,hV,ia) = {
1660+ let ih = aP(aX)
16621661 let ii = value(getInteger(ih))
1663- let in = (fraction((lastBlock.timestamp - ii), hU(aW, hV), aj) * hV)
1664- il(b, in, ia, aW)
1665- }
1666-
1667-
1668-func iy (dQ,hp,iz,aW) = {
1662+ let in = (fraction((lastBlock.timestamp - ii), hU(aX, hV), ak) * hV)
1663+ il(b, in, ia, aX)
1664+ }
1665+
1666+
1667+func iy (dQ,hp,iz,aX) = {
16691668 let b = toString(hp)
1670- let eM = hZ(b, dn, aW)
1671- let hV = cG(eM._3[cr])
1672- let iA = aP(eM._2)
1669+ let eM = hZ(b, dn, aX)
1670+ let hV = cH(eM._3[cs])
1671+ let iA = aQ(eM._2)
16731672 let iB = valueOrElse(getInteger(iA), 0)
1674- if (if (!(bG))
1673+ if (if (!(bH))
16751674 then (iB >= 3)
16761675 else false)
16771676 then throw("Currently max infrastructure level = 3")
16781677 else {
16791678 let iC = ((sqrt(hV, 0, 0, DOWN) / 5) + 2)
16801679 let V = (iB + 1)
1681- if (if (bG)
1680+ if (if (bH)
16821681 then (V > iC)
16831682 else false)
16841683 then throw(("Currently max infrastructure level = " + toString(iC)))
16851684 else {
1686- let iD = fraction(cQ, (hV * V), bQ)
1685+ let iD = fraction(cR, (hV * V), bR)
16871686 if (if (!(dQ))
16881687 then (iz != iD)
16891688 else false)
16901689 then throw(("Payment attached should be " + toString(iD)))
16911690 else {
1692- let gr = bg(eM._1)
1691+ let gr = bh(eM._1)
16931692 let gU = gq(gr)
1694- let hO = split(gU[aI], "_")
1695- let iE = fraction(bL, (hV * V), bQ)
1693+ let hO = split(gU[aJ], "_")
1694+ let iE = fraction(bM, (hV * V), bR)
16961695 let hP = makeString(dP(dQ, hO, iE), "_")
16971696 let iF = ix(b, eM._2, hV, dn)
16981697 let iG = iF._5
1699- let iH = gs(iG[ax])
1700- let iI = makeString([split(iG[ax], "_")[0], toString(V)], "_")
1698+ let iH = gs(iG[ay])
1699+ let iI = makeString([split(iG[ay], "_")[0], toString(V)], "_")
17011700 let iJ = gs(iI)
1702- let gM = split(iG[aB], "_")
1703- let iK = makeString([gM[aC], gM[aD], toString(((parseIntValue(gM[aE]) + iJ) - iH)), toString(iJ)], "_")
1704- $Tuple3(([IntegerEntry(iA, V), IntegerEntry(df(eM._2, b), V), StringEntry(gr, makeString([gU[aG], iF._3[aH], hP, gU[aJ]], ":")), StringEntry(iF._4, makeString([iI, iG[ay], iG[az], iG[aA], iK], ":"))] ++ iF._1), V, iE)
1701+ let gM = split(iG[aC], "_")
1702+ let iK = makeString([gM[aD], gM[aE], toString(((parseIntValue(gM[aF]) + iJ) - iH)), toString(iJ)], "_")
1703+ $Tuple3(([IntegerEntry(iA, V), IntegerEntry(dg(eM._2, b), V), StringEntry(gr, makeString([gU[aH], iF._3[aI], hP, gU[aK]], ":")), StringEntry(iF._4, makeString([iI, iG[az], iG[aA], iG[aB], iK], ":"))] ++ iF._1), V, iE)
17051704 }
17061705 }
17071706 }
17081707 }
17091708
17101709
1711-func iL (s,iM) = if (!(bE))
1710+func iL (s,iM) = if (!(bF))
17121711 then $Tuple2(nil, 0)
17131712 else {
17141713 let iN = v(s)
17151714 let iO = u(s)
17161715 let P = valueOrElse(getInteger(Z, iO), 0)
17171716 let U = (P + iM)
17181717 let iP = S(valueOrElse(getInteger(Z, iN), 0), U)
17191718 let iQ = w(s)
17201719 $Tuple2([IntegerEntry(iN, iP[0]), IntegerEntry(iO, U), IntegerEntry(iQ, (valueOrElse(getInteger(iQ), 0) + iP[1]))], U)
17211720 }
17221721
17231722
1724-func iR (b,iM) = if (!(bE))
1723+func iR (b,iM) = if (!(bF))
17251724 then $Tuple2(nil, 0)
17261725 else {
17271726 let iN = z(b)
17281727 let iO = y(b)
17291728 let P = valueOrElse(getInteger(Z, iO), 0)
17301729 let U = (P + iM)
17311730 let iP = S(valueOrElse(getInteger(Z, iN), 0), U)
17321731 let iQ = A(b)
17331732 $Tuple2([IntegerEntry(iN, iP[0]), IntegerEntry(iO, U), IntegerEntry(iQ, (valueOrElse(getInteger(iQ), 0) + iP[1]))], U)
17341733 }
17351734
17361735
17371736 func iS (b) = {
1738- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
1739- let iT = ba(b)
1737+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
1738+ let iT = bb(b)
17401739 let iU = getString(iT)
17411740 if (!(isDefined(iU)))
17421741 then throw("You are not eligible for ONBOARD artifact")
17431742 else {
1744- let iV = bc(b)
1743+ let iV = bd(b)
17451744 let iW = getString(iV)
17461745 if (isDefined(iW))
17471746 then throw(("You already used your ONBOARD artifact on duck " + value(iW)))
17481747 else {
1749- let iX = bb(s)
1748+ let iX = bc(s)
17501749 let iY = getString(iX)
17511750 if (isDefined(iY))
17521751 then throw(((("The duck " + s) + " already got points from ONBOARD artifact from user ") + value(iY)))
17531752 else ([StringEntry(iV, s), StringEntry(iX, b)] ++ iL(s, M)._1)
17541753 }
17551754 }
17561755 }
17571756
17581757
17591758 func iZ (b,ib) = {
17601759 let eM = hZ(b, dn, ib)
1761- let aW = eM._2
1762- let hV = cG(eM._3[cr])
1763- let ja = aQ(ag, aW)
1760+ let aX = eM._2
1761+ let hV = cH(eM._3[cs])
1762+ let ja = aR(ag, aX)
17641763 if ((valueOrElse(getInteger(ja), 0) > 0))
17651764 then throw("Presale artifact is already activated")
1766- else if ((parseIntValue(eM._3[cq]) > cZ))
1767- then throw((((ae + " ") + aW) + " is not eligible for presale artifact"))
1765+ else if ((parseIntValue(eM._3[cr]) > da))
1766+ then throw((((ae + " ") + aX) + " is not eligible for presale artifact"))
17681767 else {
1769- let iF = ix(b, aW, hV, dn)
1770- ((((iF._1 :+ IntegerEntry(ja, hV)) :+ IntegerEntry(dg(ag, aW, b), hV)) :+ StringEntry(iF._2, makeString(iF._3, ":"))) :+ StringEntry(iF._4, makeString(iF._5, ":")))
1768+ let iF = ix(b, aX, hV, dn)
1769+ (((iF._1 :+ IntegerEntry(ja, hV)) :+ StringEntry(iF._2, makeString(iF._3, ":"))) :+ StringEntry(iF._4, makeString(iF._5, ":")))
17711770 }
17721771 }
17731772
17741773
17751774 func jb (s) = {
1776- let jc = valueOrElse(getInteger(cp, bm), 0)
1777- let id = split(valueOrElse(getString(bh(s)), al), "_")
1775+ let jc = valueOrElse(getInteger(cq, bn), 0)
1776+ let id = split(valueOrElse(getString(bi(s)), am), "_")
17781777 let jd = lastBlock.timestamp
1779- let je = bs(cp, jc)
1780- let bu = je[bq]
1778+ let je = bt(cq, jc)
17811779 let bv = je[br]
1782- if ((id[bA] != "T"))
1780+ let bw = je[bs]
1781+ if ((id[bB] != "T"))
17831782 then false
17841783 else {
1785- let dV = if (if (if ((parseIntValue(id[bz]) == jc))
1786- then (bv[bx] == "INPROGRESS")
1784+ let dV = if (if (if ((parseIntValue(id[bA]) == jc))
1785+ then (bw[by] == "INPROGRESS")
17871786 else false)
1788- then (parseIntValue(bu[bw]) > jd)
1787+ then (parseIntValue(bv[bx]) > jd)
17891788 else false)
17901789 then throw("Your duck is taking part in the tournament")
17911790 else invoke(this, "exitTournamentInternal", [s], nil)
17921791 if ((dV == dV))
17931792 then false
17941793 else throw("Strict value is not equal to itself.")
17951794 }
17961795 }
17971796
17981797
17991798 func jf (jg,V,jh,b,ji,jj) = {
1800- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
1799+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
18011800 if (jb(s))
18021801 then throw("mergeInternal_checkTournament")
18031802 else {
1804- func jk (dD,aW) = {
1805- let ig = value(assetInfo(fromBase58String(aW)))
1806- let ih = aO(aW)
1803+ func jk (dD,aX) = {
1804+ let ig = value(assetInfo(fromBase58String(aX)))
1805+ let ih = aP(aX)
18071806 let ii = valueOrErrorMessage(getInteger(ih), (("NFT " + ig.name) + " is not staked"))
1808- let ij = valueOrErrorMessage(getString(aL(aW)), (("NFT " + ig.name) + " is orphaned"))
1807+ let ij = valueOrErrorMessage(getString(aM(aX)), (("NFT " + ig.name) + " is orphaned"))
18091808 if ((ij != b))
18101809 then throw((ae + " is not yours"))
18111810 else {
18121811 let ik = split(ig.description, "_")
1813- let cy = ik[ct]
1812+ let cz = ik[cu]
18141813 if (if ((dD._3 != ""))
1815- then (dD._3 != cy)
1814+ then (dD._3 != cz)
18161815 else false)
18171816 then throw("Lands should be on the same continent to merge")
18181817 else {
1819- let cH = ik[cr]
1818+ let cI = ik[cs]
18201819 let jl = dD._1
1821- let fo = valueOrErrorMessage(indexOf(jl, cH), "You haven't passed all the lands needed")
1820+ let fo = valueOrErrorMessage(indexOf(jl, cI), "You haven't passed all the lands needed")
18221821 let jm = (take(jl, fo) + drop(jl, (fo + 1)))
1823- let hV = cG(cH)
1824- let jn = (dD._2 + valueOrElse(getInteger(aQ(ag, aW)), 0))
1825- let gG = valueOrElse(getInteger(aP(aW)), 0)
1822+ let hV = cH(cI)
1823+ let jn = (dD._2 + valueOrElse(getInteger(aR(ag, aX)), 0))
1824+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
18261825 let jo = {
1827- let bJ = cH
1828- if (("S" == bJ))
1826+ let bK = cI
1827+ if (("S" == bK))
18291828 then 3
1830- else if (("M" == bJ))
1829+ else if (("M" == bK))
18311830 then 4
1832- else if (("L" == bJ))
1831+ else if (("L" == bK))
18331832 then 5
1834- else if (("XL" == bJ))
1833+ else if (("XL" == bK))
18351834 then 6
18361835 else throw("Only S, M, L, XL can merge")
18371836 }
18381837 if ((gG != jo))
18391838 then throw("All lands should be maxed to merge")
18401839 else {
1841- let dc = ik[cq]
1842- let fk = fq(ik[cs])
1840+ let dd = ik[cr]
1841+ let fk = fq(ik[ct])
18431842 let fu = (lastBlock.timestamp - ii)
18441843 if ((0 > fu))
18451844 then throw(((("Saved timestamp is in future, saved = " + toString(ii)) + ", current = ") + toString(lastBlock.timestamp)))
18461845 else {
1847- let im = hU(aW, hV)
1848- let gF = (hV / bQ)
1846+ let im = hU(aX, hV)
1847+ let gF = (hV / bR)
18491848 let iu = fs(split(dD._4, "_"), fk, fu, gF, im)
18501849 let dN = fi(dD._6, fk, gF, -1)
18511850 let jp = fi(dD._10, fk, gF, -1)
18521851 let fY = fi(dD._9, fk, gF, 1)
18531852 let jq = dD._7
1854- let ck = indexOf(jq, aW)
1855- if (!(isDefined(ck)))
1856- then throw(("Your staked lands don't contain " + aW))
1853+ let cl = indexOf(jq, aX)
1854+ if (!(isDefined(cl)))
1855+ then throw(("Your staked lands don't contain " + aX))
18571856 else {
1858- let jr = aN(aW)
1857+ let jr = aO(aX)
18591858 let js = valueOrElse(getString(jr), "")
1860- $Tuple10(jm, jn, cy, iu, (((((((((((((dD._5 :+ DeleteEntry(aO(aW))) :+ DeleteEntry(aS(ae, aW, b))) :+ DeleteEntry(db(dc))) :+ DeleteEntry(aL(aW))) :+ DeleteEntry(aP(aW))) :+ DeleteEntry(df(aW, b))) :+ DeleteEntry(aQ(ag, aW))) :+ DeleteEntry(dg(ag, aW, b))) :+ DeleteEntry(dh(dc))) :+ DeleteEntry(aV(aW))) :+ DeleteEntry(jr)) :+ Burn(fromBase58String(aW), 1)) ++ (if ((js != ""))
1861- then [DeleteEntry(dd(js))]
1862- else nil)), dN, removeByIndex(jq, value(ck)), (dD._8 + hV), fY, jp)
1859+ $Tuple10(jm, jn, cz, iu, ((((((((((((dD._5 :+ DeleteEntry(aP(aX))) :+ DeleteEntry(aT(ae, aX, b))) :+ DeleteEntry(dc(dd))) :+ DeleteEntry(aM(aX))) :+ DeleteEntry(aQ(aX))) :+ DeleteEntry(dg(aX, b))) :+ DeleteEntry(aR(ag, aX))) :+ DeleteEntry(dh(dd))) :+ DeleteEntry(aW(aX))) :+ DeleteEntry(jr)) :+ Burn(fromBase58String(aX), 1)) ++ (if ((js != ""))
1860+ then [DeleteEntry(de(js))]
1861+ else nil)), dN, removeByIndex(jq, value(cl)), (dD._8 + hV), fY, jp)
18631862 }
18641863 }
18651864 }
18661865 }
18671866 }
18681867 }
18691868
1870- let gr = bg(s)
1869+ let gr = bh(s)
18711870 let gU = gq(gr)
1872- let fj = split(valueOrElse(getString(cw()), "0_0_0_0_0_0"), "_")
1873- let jt = cz(b)
1871+ let fj = split(valueOrElse(getString(cx()), "0_0_0_0_0_0"), "_")
1872+ let jt = cA(b)
18741873 let ju = getString(jt)
18751874 let jv = if (isDefined(ju))
18761875 then split_51C(value(ju), "_")
18771876 else nil
1878- let jw = split(value(assetInfo(fromBase58String(ji[0]))).description, "_")[ct]
1879- let jx = split(valueOrElse(getString(cx(jw)), "0_0_0_0_0_0"), "_")
1877+ let jw = split(value(assetInfo(fromBase58String(ji[0]))).description, "_")[cu]
1878+ let jx = split(valueOrElse(getString(cy(jw)), "0_0_0_0_0_0"), "_")
18801879 let dO = {
18811880 let dF = ji
18821881 let dG = size(dF)
1883- let dH = $Tuple10(jh, 0, "", gU[aH], nil, fj, jv, 0, split("0_0_0_0_0_0", "_"), jx)
1882+ let dH = $Tuple10(jh, 0, "", gU[aI], nil, fj, jv, 0, split("0_0_0_0_0_0", "_"), jx)
18841883 func dI (dJ,dK) = if ((dK >= dG))
18851884 then dJ
18861885 else jk(dJ, dF[dK])
18871886
18881887 func dL (dJ,dK) = if ((dK >= dG))
18891888 then dJ
18901889 else throw("List size exceeds 5")
18911890
18921891 dL(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5)
18931892 }
1894- let cy = dO._3
1895- let fS = valueOrErrorMessage(indexOf(ap, cy), ("Unknown continent: " + cy))
1896- let fr = fX(dO._9, (cG(jg) / bQ))
1897- let hs = valueOrElse(getInteger(da()), (cZ + 1))
1893+ let cz = dO._3
1894+ let fS = valueOrErrorMessage(indexOf(aq, cz), ("Unknown continent: " + cz))
1895+ let fr = fX(dO._9, (cH(jg) / bR))
1896+ let hs = valueOrElse(getInteger(db()), (da + 1))
18981897 let jy = toString(hs)
1899- let ht = Issue(ds(jy, jg), makeString([jy, jg, fr, cy], "_"), 1, 0, false)
1900- let aM = calculateAssetId(ht)
1901- let jz = toBase58String(aM)
1902- let hP = makeString(dP((jj > 0), split(gU[aI], "_"), jj), "_")
1903- let jA = cA(b)
1898+ let ht = Issue(ds(jy, jg), makeString([jy, jg, fr, cz], "_"), 1, 0, false)
1899+ let aN = calculateAssetId(ht)
1900+ let jz = toBase58String(aN)
1901+ let hP = makeString(dP((jj > 0), split(gU[aJ], "_"), jj), "_")
1902+ let jA = cB(b)
19041903 let jB = valueOrElse(getInteger(jA), 0)
1905- $Tuple2(((((((((((((((((dO._5 :+ (if ((size(dO._7) > 0))
1904+ $Tuple2((((((((((((((((dO._5 :+ (if ((size(dO._7) > 0))
19061905 then StringEntry(jt, makeString_11C(dO._7, "_"))
19071906 else DeleteEntry(jt))) :+ IntegerEntry(jA, if ((dO._8 > jB))
19081907 then 0
1909- else (jB - dO._8))) :+ IntegerEntry(da(), (hs + 1))) :+ ht) :+ StringEntry(db(jy), jz)) :+ StringEntry(aL(jz), b)) :+ StringEntry(dh(jy), b)) :+ IntegerEntry(aQ(ag, jz), dO._2)) :+ IntegerEntry(dg(ag, jz, b), dO._2)) :+ IntegerEntry(aP(jz), V)) :+ IntegerEntry(df(jz, b), V)) :+ StringEntry(gr, makeString([gU[aG], dO._4, hP, gU[aJ]], ":"))) :+ StringEntry(cw(), makeString(dO._6, "_"))) :+ StringEntry(cx(cy), makeString(dO._10, "_"))) :+ StringEntry(bh(s), makeString([cy, "L", jz], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aM)), jz)
1908+ else (jB - dO._8))) :+ IntegerEntry(db(), (hs + 1))) :+ ht) :+ StringEntry(dc(jy), jz)) :+ StringEntry(aM(jz), b)) :+ StringEntry(dh(jy), b)) :+ IntegerEntry(aR(ag, jz), dO._2)) :+ IntegerEntry(aQ(jz), V)) :+ IntegerEntry(dg(jz, b), V)) :+ StringEntry(gr, makeString([gU[aH], dO._4, hP, gU[aK]], ":"))) :+ StringEntry(cx(), makeString(dO._6, "_"))) :+ StringEntry(cy(cz), makeString(dO._10, "_"))) :+ StringEntry(bi(s), makeString([cz, "L", jz], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aN)), jz)
19101909 }
19111910 }
19121911
19131912
19141913 func jC (b,ji) = jf("M", 3, "SSSS", b, ji, 0)
19151914
19161915
1917-func jD (b,ji) = jf("L", 4, "SMM", b, ji, (bL * 4))
1918-
1919-
1920-func jE (b,ji) = jf("XL", 5, "SSSML", b, ji, (bL * 47))
1921-
1922-
1923-func jF (b,ji) = jf("XXL", 6, "LXL", b, ji, (bL * 54))
1916+func jD (b,ji) = jf("L", 4, "SMM", b, ji, (bM * 4))
1917+
1918+
1919+func jE (b,ji) = jf("XL", 5, "SSSML", b, ji, (bM * 47))
1920+
1921+
1922+func jF (b,ji) = jf("XXL", 6, "LXL", b, ji, (bM * 54))
19241923
19251924
19261925 func jG (b,ji) = {
1927- let bJ = size(ji)
1928- if ((4 == bJ))
1926+ let bK = size(ji)
1927+ if ((4 == bK))
19291928 then jC(b, ji)
1930- else if ((3 == bJ))
1929+ else if ((3 == bK))
19311930 then jD(b, ji)
1932- else if ((5 == bJ))
1931+ else if ((5 == bK))
19331932 then jE(b, ji)
1934- else if ((2 == bJ))
1933+ else if ((2 == bK))
19351934 then jF(b, ji)
19361935 else throw("Unknown merge")
19371936 }
19381937
19391938
1940-func jH (fo) = if (if ((fo.originCaller != cl))
1941- then valueOrElse(getBoolean(bi()), false)
1939+func jH (fo) = if (if ((fo.originCaller != cm))
1940+ then valueOrElse(getBoolean(bj()), false)
19421941 else false)
19431942 then throw("Contracts are under maintenance")
1944- else StringEntry(aK(toString(fo.originCaller)), toBase58String(fo.transactionId))
1943+ else StringEntry(aL(toString(fo.originCaller)), toBase58String(fo.transactionId))
19451944
19461945
19471946 @Callable(fo)
19481947 func constructorV1 (jI) = if ((fo.caller != this))
19491948 then throw("Permission denied")
1950- else [StringEntry(cf(), jI)]
1949+ else [StringEntry(cg(), jI)]
19511950
19521951
19531952
19541953 @Callable(fo)
19551954 func setBlocked (jJ) = if ((fo.caller != this))
19561955 then throw("permission denied")
1957- else [BooleanEntry(bi(), jJ)]
1956+ else [BooleanEntry(bj(), jJ)]
19581957
19591958
19601959
19611960 @Callable(fo)
19621961 func stakeLand () = {
19631962 let jK = jH(fo)
19641963 if ((size(fo.payments) != 1))
19651964 then throw("Exactly one payment required")
19661965 else {
19671966 let jL = value(fo.payments[0])
1968- let aM = value(jL.assetId)
1969- let bX = toString(fo.caller)
1967+ let aN = value(jL.assetId)
1968+ let bY = toString(fo.caller)
19701969 if ((jL.amount != 1))
19711970 then throw((("NFT " + ae) + " token should be attached as payment"))
19721971 else {
1973- let ig = value(assetInfo(aM))
1972+ let ig = value(assetInfo(aN))
19741973 if ((ig.issuer != this))
19751974 then throw("Unknown issuer of token")
19761975 else if (!(contains(ig.name, ae)))
19771976 then throw((("Only NFT " + ae) + " tokens are accepted"))
19781977 else {
19791978 let jM = drop(ig.name, 4)
1980- let dc = if (contains(jM, "XXL"))
1979+ let dd = if (contains(jM, "XXL"))
19811980 then dropRight(jM, 3)
19821981 else if (contains(jM, "XL"))
19831982 then dropRight(jM, 2)
19841983 else dropRight(jM, 1)
1985- if (!(isDefined(parseInt(dc))))
1984+ if (!(isDefined(parseInt(dd))))
19861985 then throw(("Cannot parse land number from " + ig.name))
19871986 else {
1988- let aW = toBase58String(aM)
1989- let ih = aO(aW)
1987+ let aX = toBase58String(aN)
1988+ let ih = aP(aX)
19901989 if (isDefined(getInteger(ih)))
19911990 then throw((("NFT " + ig.name) + " is already staked"))
19921991 else {
19931992 let ik = split(ig.description, "_")
1994- let fk = fq(ik[cs])
1995- let hV = cG(ik[cr])
1996- let gF = (hV / bQ)
1993+ let fk = fq(ik[ct])
1994+ let hV = cH(ik[cs])
1995+ let gF = (hV / bR)
19971996 let dN = fp(fk, gF, 1)
1998- let jN = cx(ik[ct])
1997+ let jN = cy(ik[cu])
19991998 let jx = split(valueOrElse(getString(jN), "0_0_0_0_0_0"), "_")
20001999 let jO = makeString(fi(jx, fk, gF, 1), "_")
2001- let hW = valueOrElse(getInteger(aQ(ag, aW)), 0)
2002- let jt = cz(bX)
2000+ let jt = cA(bY)
20032001 let ju = getString(jt)
20042002 let jq = if (isDefined(ju))
20052003 then split_51C(value(ju), "_")
20062004 else nil
2007- if (containsElement(jq, aW))
2008- then throw(("Your staked lands already contain " + aW))
2009- else {
2010- let gG = valueOrElse(getInteger(aP(aW)), 0)
2011- let jA = cA(bX)
2012- let jP = valueOrElse(getInteger(jA), 0)
2013- let jQ = cE(invoke(co, "onStakeUnstakeLand", [bX], nil))
2014- $Tuple2([IntegerEntry(ih, lastBlock.timestamp), IntegerEntry(aS(ae, aW, bX), lastBlock.timestamp), StringEntry(jt, makeString_11C((jq :+ aW), "_")), IntegerEntry(jA, (jP + hV)), StringEntry(aL(aW), bX), StringEntry(dh(dc), bX), IntegerEntry(dg(ag, aW, bX), hW), IntegerEntry(df(aW, bX), gG), StringEntry(cw(), dN), StringEntry(jN, jO), jK], jQ)
2015- }
2005+ if (containsElement(jq, aX))
2006+ then throw(("Your staked lands already contain " + aX))
2007+ else if ((size(jq) >= ai))
2008+ then throw((("Your already staked max (" + toString(ai)) + ") lands"))
2009+ else {
2010+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
2011+ let jA = cB(bY)
2012+ let jP = valueOrElse(getInteger(jA), 0)
2013+ let jQ = cF(invoke(cp, "onStakeUnstakeLand", [bY], nil))
2014+ $Tuple2([IntegerEntry(ih, lastBlock.timestamp), IntegerEntry(aT(ae, aX, bY), lastBlock.timestamp), StringEntry(jt, makeString_11C((jq :+ aX), "_")), IntegerEntry(jA, (jP + hV)), StringEntry(aM(aX), bY), StringEntry(dh(dd), bY), IntegerEntry(dg(aX, bY), gG), StringEntry(cx(), dN), StringEntry(jN, jO), jK], jQ)
2015+ }
20162016 }
20172017 }
20182018 }
20192019 }
20202020 }
20212021 }
20222022
20232023
20242024
20252025 @Callable(fo)
20262026 func unstakeLand (ib) = {
20272027 let jK = jH(fo)
20282028 if ((size(fo.payments) != 0))
20292029 then throw("No payments required")
20302030 else {
20312031 let b = toString(fo.caller)
20322032 let eM = hZ(b, dm, ib)
2033- let aW = eM._2
2033+ let aX = eM._2
20342034 let ik = eM._3
2035- let jt = cz(b)
2036- let fk = fq(ik[cs])
2037- let hV = cG(ik[cr])
2038- let gF = (hV / bQ)
2035+ let jt = cA(b)
2036+ let fk = fq(ik[ct])
2037+ let hV = cH(ik[cs])
2038+ let gF = (hV / bR)
20392039 let dN = fp(fk, gF, -1)
2040- let jN = cx(ik[ct])
2040+ let jN = cy(ik[cu])
20412041 let jx = split(valueOrElse(getString(jN), "0_0_0_0_0_0"), "_")
20422042 let jO = makeString(fi(jx, fk, gF, -1), "_")
2043- let iF = ix(b, aW, hV, dm)
2043+ let iF = ix(b, aX, hV, dm)
20442044 let jq = split_51C(valueOrElse(getString(jt), ""), "_")
2045- let ck = indexOf(jq, aW)
2046- if (!(isDefined(ck)))
2047- then throw(("Your staked lands don't contain " + aW))
2045+ let cl = indexOf(jq, aX)
2046+ if (!(isDefined(cl)))
2047+ then throw(("Your staked lands don't contain " + aX))
20482048 else {
20492049 let jd = lastBlock.timestamp
2050- let jR = valueOrElse(getInteger(cn, bj(b)), 0)
2050+ let jR = valueOrElse(getInteger(co, bk(b)), 0)
20512051 if ((jR >= jd))
20522052 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(jR)))
20532053 else {
2054- let jS = (valueOrElse(getInteger(co, a(b)), 0) + bM)
2054+ let jS = (valueOrElse(getInteger(cp, a(b)), 0) + bN)
20552055 if ((jS > jd))
20562056 then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(jS)))
20572057 else {
2058- let jA = cA(b)
2058+ let jA = cB(b)
20592059 let jB = valueOrElse(getInteger(jA), 0)
20602060 let jT = if ((hV > jB))
20612061 then 0
20622062 else (jB - hV)
2063- let jQ = cE(invoke(co, "onStakeUnstakeLand", [b], nil))
2064- $Tuple2([ScriptTransfer(fo.caller, 1, fromBase58String(aW)), DeleteEntry(aO(aW)), DeleteEntry(aS(ae, aW, b)), StringEntry(cw(), dN), StringEntry(jN, jO), StringEntry(iF._2, makeString(iF._3, ":")), if ((size(jq) > 1))
2065- then StringEntry(jt, makeString_11C(removeByIndex(jq, value(ck)), "_"))
2063+ let jQ = cF(invoke(cp, "onStakeUnstakeLand", [b], nil))
2064+ $Tuple2([ScriptTransfer(fo.caller, 1, fromBase58String(aX)), DeleteEntry(aP(aX)), DeleteEntry(aT(ae, aX, b)), StringEntry(cx(), dN), StringEntry(jN, jO), StringEntry(iF._2, makeString(iF._3, ":")), if ((size(jq) > 1))
2065+ then StringEntry(jt, makeString_11C(removeByIndex(jq, value(cl)), "_"))
20662066 else DeleteEntry(jt), IntegerEntry(jA, jT), jK], jQ)
20672067 }
20682068 }
20692069 }
20702070 }
20712071 }
20722072
20732073
20742074
20752075 @Callable(fo)
20762076 func stakeDuck () = {
20772077 let jK = jH(fo)
20782078 if ((size(fo.payments) != 1))
20792079 then throw("Exactly one payment required")
20802080 else {
20812081 let jL = value(fo.payments[0])
2082- let aM = value(jL.assetId)
2083- let bX = toString(fo.caller)
2082+ let aN = value(jL.assetId)
2083+ let bY = toString(fo.caller)
20842084 if ((jL.amount != 1))
20852085 then throw((("NFT " + af) + " token should be attached as payment"))
20862086 else {
2087- let ig = value(assetInfo(aM))
2088- if (if ((ig.issuer != cJ))
2089- then (ig.issuer != cK)
2087+ let ig = value(assetInfo(aN))
2088+ if (if ((ig.issuer != cK))
2089+ then (ig.issuer != cL)
20902090 else false)
20912091 then throw((("Unknown issuer of " + af) + " token"))
20922092 else if (!(contains(ig.name, af)))
20932093 then throw((("Only NFT " + af) + " tokens are accepted"))
20942094 else {
2095- let jU = toBase58String(aM)
2096- let ih = aO(jU)
2095+ let jU = toBase58String(aN)
2096+ let ih = aP(jU)
20972097 if (isDefined(getInteger(ih)))
20982098 then throw((("NFT " + ig.name) + " is already staked"))
2099- else if (isDefined(getString(bf(bX))))
2099+ else if (isDefined(getString(bg(bY))))
21002100 then throw(("You already staked one duck: " + ig.name))
21012101 else if (jb(jU))
21022102 then throw("stakeDuck_checkTournament")
21032103 else {
2104- let jV = bh(jU)
2104+ let jV = bi(jU)
21052105 let jW = getString(jV)
2106- let gr = bg(jU)
2106+ let gr = bh(jU)
21072107 let jX = getString(gr)
21082108 let hH = r(jU)
21092109 let hI = Q(valueOrElse(getInteger(v(jU)), 0))
21102110 let jY = valueOrElse(getInteger(hH), hI)
2111- ([IntegerEntry(ih, lastBlock.timestamp), IntegerEntry(aS(af, toBase58String(aM), bX), lastBlock.timestamp), StringEntry(be(jU), bX), StringEntry(bf(bX), jU)] ++ (if (isDefined(jW))
2111+ ([IntegerEntry(ih, lastBlock.timestamp), IntegerEntry(aT(af, toBase58String(aN), bY), lastBlock.timestamp), StringEntry(bf(jU), bY), StringEntry(bg(bY), jU)] ++ (if (isDefined(jW))
21122112 then nil
2113- else ([StringEntry(jV, al)] ++ (if (isDefined(jX))
2113+ else ([StringEntry(jV, am)] ++ (if (isDefined(jX))
21142114 then nil
21152115 else (([StringEntry(gr, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(hH, jY)) :+ jK)))))
21162116 }
21172117 }
21182118 }
21192119 }
21202120 }
21212121
21222122
21232123
21242124 @Callable(fo)
21252125 func unstakeDuck (jU) = {
21262126 let jK = jH(fo)
21272127 if ((size(fo.payments) != 0))
21282128 then throw("No payments required")
21292129 else {
2130- let aM = fromBase58String(jU)
2131- let bX = toString(fo.caller)
2132- let ig = value(assetInfo(aM))
2133- let ih = aO(jU)
2130+ let aN = fromBase58String(jU)
2131+ let bY = toString(fo.caller)
2132+ let ig = value(assetInfo(aN))
2133+ let ih = aP(jU)
21342134 if (!(isDefined(getInteger(ih))))
21352135 then throw((("NFT " + ig.name) + " is not staked"))
2136- else if (!(isDefined(getString(bf(bX)))))
2136+ else if (!(isDefined(getString(bg(bY)))))
21372137 then throw((("The duck " + ig.name) + " is not staked"))
21382138 else {
2139- let ij = valueOrErrorMessage(getString(be(jU)), (("NFT " + ig.name) + " is orphaned"))
2140- if ((ij != bX))
2139+ let ij = valueOrErrorMessage(getString(bf(jU)), (("NFT " + ig.name) + " is orphaned"))
2140+ if ((ij != bY))
21412141 then throw("Staked NFT is not yours")
21422142 else if (jb(jU))
21432143 then throw("unstakeDuck_checkTournament")
21442144 else {
21452145 let hH = r(jU)
21462146 let hI = Q(valueOrElse(getInteger(v(jU)), 0))
21472147 let ad = valueOrElse(getInteger(hH), hI)
21482148 if ((hI > ad))
21492149 then throw((("Please heal your duck to " + toString(hI)) + "hp before unstaking"))
2150- else [ScriptTransfer(fo.caller, 1, aM), DeleteEntry(ih), DeleteEntry(hH), DeleteEntry(bh(jU)), DeleteEntry(be(jU)), DeleteEntry(aS(af, jU, bX)), DeleteEntry(bf(bX)), jK]
2150+ else [ScriptTransfer(fo.caller, 1, aN), DeleteEntry(ih), DeleteEntry(hH), DeleteEntry(bi(jU)), DeleteEntry(bf(jU)), DeleteEntry(aT(af, jU, bY)), DeleteEntry(bg(bY)), jK]
21512151 }
21522152 }
21532153 }
21542154 }
21552155
21562156
21572157
21582158 @Callable(fo)
21592159 func claimRes (du,jZ) = {
21602160 let jK = jH(fo)
21612161 if ((size(fo.payments) != 0))
21622162 then throw("No payments required")
21632163 else {
21642164 let b = toString(fo.originCaller)
21652165 let dV = il(b, du, dm, jZ)
2166- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
2167- $Tuple2(((((dV._1 ++ iL(s, fraction(E, du, bP))._1) :+ StringEntry(dV._2, makeString(dV._3, ":"))) :+ StringEntry(dV._4, makeString(dV._5, ":"))) :+ jK), dV._3[aH])
2166+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
2167+ $Tuple2(((((dV._1 ++ iL(s, fraction(E, du, bQ))._1) :+ StringEntry(dV._2, makeString(dV._3, ":"))) :+ StringEntry(dV._4, makeString(dV._5, ":"))) :+ jK), dV._3[aI])
21682168 }
21692169 }
21702170
21712171
21722172
21732173 @Callable(fo)
21742174 func claimResToWH (du,jZ) = {
21752175 let jK = jH(fo)
21762176 if ((size(fo.payments) != 0))
21772177 then throw("No payments required")
21782178 else {
21792179 let b = toString(fo.originCaller)
21802180 let dV = il(b, du, dl, jZ)
2181- $Tuple2(((((dV._1 ++ iR(b, fraction(E, du, bP))._1) :+ StringEntry(dV._2, makeString(dV._3, ":"))) :+ StringEntry(dV._4, makeString(dV._5, ":"))) :+ jK), dV._5[ay])
2181+ $Tuple2(((((dV._1 ++ iR(b, fraction(E, du, bQ))._1) :+ StringEntry(dV._2, makeString(dV._3, ":"))) :+ StringEntry(dV._4, makeString(dV._5, ":"))) :+ jK), dV._5[az])
21822182 }
21832183 }
21842184
21852185
21862186
21872187 @Callable(fo)
21882188 func flight (hw,hx) = {
21892189 let jK = jH(fo)
21902190 if ((size(fo.payments) != 0))
21912191 then throw("No payments required")
21922192 else {
2193- let bk = toString(fo.caller)
2194- let fT = hv(bk, hw, hx)
2193+ let bl = toString(fo.caller)
2194+ let fT = hv(bl, hw, hx)
21952195 let s = fT._2
21962196 let hD = fT._4
21972197 let ka = split(hD, "_")
2198- let kb = (ka[bA] == "T")
2198+ let kb = (ka[bB] == "T")
21992199 if (if (!(kb))
22002200 then jb(s)
22012201 else false)
22022202 then throw("flight_checkTournament")
22032203 else {
22042204 let kc = if (kb)
22052205 then {
2206- let jc = valueOrElse(getInteger(cp, bm), 0)
2206+ let jc = valueOrElse(getInteger(cq, bn), 0)
22072207 let jd = lastBlock.timestamp
2208- let je = bs(cp, jc)
2209- let bu = je[bq]
2208+ let je = bt(cq, jc)
22102209 let bv = je[br]
2211- if (if (if ((parseIntValue(ka[bz]) != jc))
2210+ let bw = je[bs]
2211+ if (if (if ((parseIntValue(ka[bA]) != jc))
22122212 then true
2213- else (bv[bx] != "INPROGRESS"))
2213+ else (bw[by] != "INPROGRESS"))
22142214 then true
2215- else (jd > parseIntValue(bu[bw])))
2215+ else (jd > parseIntValue(bv[bx])))
22162216 then unit
22172217 else {
2218- let kd = parseIntValue(ka[bB])
2219- let ke = parseIntValue(bv[by])
2218+ let kd = parseIntValue(ka[bC])
2219+ let ke = parseIntValue(bw[bz])
22202220 if ((ke >= kd))
22212221 then unit
2222- else invoke(cp, "updateDynamicData", [s, kd], nil)
2222+ else invoke(cq, "updateDynamicData", [s, kd], nil)
22232223 }
22242224 }
22252225 else unit
22262226 if ((kc == kc))
22272227 then {
2228- let jV = bh(s)
2229- let id = valueOrElse(getString(jV), al)
2228+ let jV = bi(s)
2229+ let id = valueOrElse(getString(jV), am)
22302230 if ((hD == id))
22312231 then throw("You can't fly to the same location")
22322232 else {
22332233 let hQ = x(s)
22342234 let hR = valueOrElse(getString(hQ), ",;,_,;,_,;,_,;,_,;,_,;,")
22352235 let hS = dW(hR, fT._5)
22362236 $Tuple2(([StringEntry(jV, if ((fT._1 > 0))
22372237 then hD
22382238 else id), StringEntry(hQ, hS), IntegerEntry(r(s), fT._1), jK] ++ iL(s, if ((fT._1 > 0))
22392239 then F
22402240 else G)._1), fT._3)
22412241 }
22422242 }
22432243 else throw("Strict value is not equal to itself.")
22442244 }
22452245 }
22462246 }
22472247
22482248
22492249
22502250 @Callable(fo)
22512251 func heal (kf,kg,kh) = {
22522252 let jK = jH(fo)
22532253 if (if (if ((0 > kf))
22542254 then true
22552255 else (0 > kg))
22562256 then true
22572257 else (0 > kh))
22582258 then throw("Quantity cannot be negative")
22592259 else {
2260- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
2260+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
22612261 if (jb(s))
22622262 then throw("heal_checkTournament")
22632263 else {
22642264 let ki = [kf, kg, kh]
22652265 let hH = r(s)
22662266 let hI = Q(valueOrElse(getInteger(v(s)), 0))
22672267 let kj = valueOrElse(getInteger(hH), hI)
22682268 if ((kj >= hI))
22692269 then throw((("HP should be < " + toString(hI)) + " to heal"))
22702270 else {
2271- let gr = bg(s)
2271+ let gr = bh(s)
22722272 let gU = gq(gr)
2273- let kk = if ((gU[aJ] == ""))
2273+ let kk = if ((gU[aK] == ""))
22742274 then nil
2275- else split_4C(gU[aJ], "_")
2275+ else split_4C(gU[aK], "_")
22762276 func kl (dD,km) = {
2277- let cF = dD._2
2278- let fK = if ((size(kk) > cF))
2279- then parseIntValue(kk[cF])
2277+ let cG = dD._2
2278+ let fK = if ((size(kk) > cG))
2279+ then parseIntValue(kk[cG])
22802280 else 0
2281- if ((3 > cF))
2281+ if ((3 > cG))
22822282 then {
2283- let kn = ki[cF]
2283+ let kn = ki[cG]
22842284 if ((kn > fK))
2285- then throw(((("You have only " + toString(fK)) + " of ") + ao[cF]))
2286- else $Tuple3((dD._1 :+ toString((fK - kn))), (cF + 1), (dD._3 + (cM[cF] * kn)))
2285+ then throw(((("You have only " + toString(fK)) + " of ") + ap[cG]))
2286+ else $Tuple3((dD._1 :+ toString((fK - kn))), (cG + 1), (dD._3 + (cN[cG] * kn)))
22872287 }
2288- else $Tuple3((dD._1 :+ toString(fK)), (cF + 1), dD._3)
2288+ else $Tuple3((dD._1 :+ toString(fK)), (cG + 1), dD._3)
22892289 }
22902290
22912291 let dV = {
2292- let dF = as
2292+ let dF = at
22932293 let dG = size(dF)
22942294 let dH = $Tuple3(nil, 0, 0)
22952295 func dI (dJ,dK) = if ((dK >= dG))
22962296 then dJ
22972297 else kl(dJ, dF[dK])
22982298
22992299 func dL (dJ,dK) = if ((dK >= dG))
23002300 then dJ
23012301 else throw("List size exceeds 50")
23022302
23032303 dL(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dH, 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)
23042304 }
23052305 let ko = min([hI, (kj + dV._3)])
2306- $Tuple2(([IntegerEntry(hH, ko), StringEntry(gr, makeString_2C([gU[aG], gU[aH], gU[aI], makeString(dV._1, "_")], ":")), jK] ++ iL(s, (N * ((kf + kg) + kh)))._1), ko)
2306+ $Tuple2(([IntegerEntry(hH, ko), StringEntry(gr, makeString_2C([gU[aH], gU[aI], gU[aJ], makeString(dV._1, "_")], ":")), jK] ++ iL(s, (N * ((kf + kg) + kh)))._1), ko)
23072307 }
23082308 }
23092309 }
23102310 }
23112311
23122312
23132313
23142314 @Callable(fo)
23152315 func healES () = {
23162316 let jK = jH(fo)
23172317 if ((size(fo.payments) != 1))
23182318 then throw("Exactly one payment required")
23192319 else {
23202320 let jL = value(fo.payments[0])
2321- if ((jL.assetId != bI))
2321+ if ((jL.assetId != bJ))
23222322 then throw("Allowed USDT payment only!")
23232323 else {
2324- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
2324+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
23252325 if (jb(s))
23262326 then throw("healES_checkTournament")
23272327 else {
23282328 let hH = r(s)
23292329 let hI = Q(valueOrElse(getInteger(v(s)), 0))
23302330 let kj = valueOrElse(getInteger(hH), hI)
23312331 if ((kj > 0))
23322332 then throw("HP should be 0 to call Emergency Service")
23332333 else {
2334- let gr = bg(s)
2334+ let gr = bh(s)
23352335 let gU = gq(gr)
2336- let kk = if ((gU[aJ] == ""))
2336+ let kk = if ((gU[aK] == ""))
23372337 then nil
2338- else split_4C(gU[aJ], "_")
2338+ else split_4C(gU[aK], "_")
23392339 let kp = if ((size(kk) > 0))
23402340 then parseIntValue(kk[0])
23412341 else 0
23422342 let kq = if ((size(kk) > 1))
23432343 then parseIntValue(kk[1])
23442344 else 0
23452345 let kr = if ((size(kk) > 2))
23462346 then parseIntValue(kk[2])
23472347 else 0
23482348 if (if (if ((kp > 0))
23492349 then true
23502350 else (kq > 0))
23512351 then true
23522352 else (kr > 0))
23532353 then throw("You have to use own Medical Kit")
23542354 else {
2355- let ks = getString(cm, bl())
2355+ let ks = getString(cn, bm())
23562356 let kt = if (isDefined(ks))
23572357 then split_4C(value(ks), "_")
23582358 else nil
23592359 let ku = if ((size(kt) > 0))
23602360 then parseIntValue(kt[0])
23612361 else 0
23622362 if ((0 >= ku))
23632363 then throw("There are no Medical Kits L1 at Emergency Service storage")
23642364 else {
2365- let ko = (kj + cM[0])
2365+ let ko = (kj + cN[0])
23662366 let kv = makeString([toString((ku - 1)), removeByIndex(kt, 0)], "_")
2367- let bD = split(as[0], "_")
2368- let kw = bC(bD)
2369- let kx = fraction((kw * an), am, (bP * aw))
2367+ let bE = split(at[0], "_")
2368+ let kw = bD(bE)
2369+ let kx = fraction((kw * ao), an, (bQ * ax))
23702370 if ((jL.amount != kx))
23712371 then throw(("Payment attached should be " + toString(kx)))
23722372 else {
2373- let dV = cB(invoke(cm, "updateEsStorage", [kv], [AttachedPayment(bI, kx)]))
2373+ let dV = cC(invoke(cn, "updateEsStorage", [kv], [AttachedPayment(bJ, kx)]))
23742374 $Tuple2(([IntegerEntry(hH, ko), jK] ++ iL(s, H)._1), dV)
23752375 }
23762376 }
23772377 }
23782378 }
23792379 }
23802380 }
23812381 }
23822382 }
23832383
23842384
23852385
23862386 @Callable(fo)
2387-func updateBackpack (s,ky) = if ((fo.caller != cm))
2387+func updateBackpack (s,ky) = if ((fo.caller != cn))
23882388 then throw("permission denied")
2389- else $Tuple2([StringEntry(bg(s), ky)], ky)
2389+ else $Tuple2([StringEntry(bh(s), ky)], ky)
23902390
23912391
23922392
23932393 @Callable(fo)
23942394 func commitForRandom () = {
23952395 let jK = jH(fo)
2396- let kz = (height + cu)
2396+ let kz = (height + cv)
23972397 let b = toString(fo.caller)
2398- $Tuple2(([IntegerEntry(cv(b), kz)] :+ jK), kz)
2398+ $Tuple2(([IntegerEntry(cw(b), kz)] :+ jK), kz)
23992399 }
24002400
24012401
24022402
24032403 @Callable(fo)
24042404 func buySLand () = {
24052405 let jK = jH(fo)
24062406 if ((size(fo.payments) != 1))
24072407 then throw("Exactly one payment required")
24082408 else {
24092409 let jL = value(fo.payments[0])
2410- if ((jL.assetId != bI))
2410+ if ((jL.assetId != bJ))
24112411 then throw("Allowed USDT payment only!")
2412- else if ((jL.amount != cS))
2413- then throw(("Payment attached should be " + toString(cS)))
2412+ else if ((jL.amount != cT))
2413+ then throw(("Payment attached should be " + toString(cT)))
24142414 else {
24152415 let dV = ho(fo.caller, fo.transactionId)
2416- $Tuple2((((dV._1 :+ ScriptTransfer(cm, jL.amount, bI)) ++ iR(toString(fo.caller), J)._1) :+ jK), dV._2._1)
2416+ $Tuple2((((dV._1 :+ ScriptTransfer(cn, jL.amount, bJ)) ++ iR(toString(fo.caller), J)._1) :+ jK), dV._2._1)
24172417 }
24182418 }
24192419 }
24202420
24212421
24222422
24232423 @Callable(fo)
24242424 func expedition (hw,hx) = {
24252425 let jK = jH(fo)
24262426 if ((size(fo.payments) != 0))
24272427 then throw("No payments required")
24282428 else {
24292429 let dV = hN(fo.caller, fo.transactionId, hw, hx)
2430- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
2430+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
24312431 if (jb(s))
24322432 then throw("expedition_checkTournament")
24332433 else $Tuple2(((dV._1 ++ iL(s, J)._1) :+ jK), $Tuple2(dV._2, dV._3))
24342434 }
24352435 }
24362436
24372437
24382438
24392439 @Callable(fo)
2440-func upgradeInfra (aW) = {
2440+func upgradeInfra (aX) = {
24412441 let jK = jH(fo)
24422442 if ((size(fo.payments) != 0))
24432443 then throw("No payments required")
24442444 else {
2445- let dV = iy(true, fo.caller, 0, aW)
2446- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
2447- $Tuple2(((dV._1 :+ jK) ++ iL(s, fraction(K, dV._3, bP))._1), dV._2)
2445+ let dV = iy(true, fo.caller, 0, aX)
2446+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
2447+ $Tuple2(((dV._1 :+ jK) ++ iL(s, fraction(K, dV._3, bQ))._1), dV._2)
24482448 }
24492449 }
24502450
24512451
24522452
24532453 @Callable(fo)
24542454 func activateArtifact (kA,kB) = {
24552455 let jK = jH(fo)
24562456 if ((size(fo.payments) != 0))
24572457 then throw("No payments required")
24582458 else {
24592459 let b = toString(fo.caller)
24602460 let dV = {
2461- let bJ = kA
2462- if (("PRESALE" == bJ))
2461+ let bK = kA
2462+ if (("PRESALE" == bK))
24632463 then iZ(b, kB)
2464- else if (("ONBOARD" == bJ))
2464+ else if (("ONBOARD" == bK))
24652465 then iS(b)
24662466 else throw("Unknown artifact")
24672467 }
24682468 (dV :+ jK)
24692469 }
24702470 }
24712471
24722472
24732473
24742474 @Callable(fo)
24752475 func mergeLands (ji) = {
24762476 let jK = jH(fo)
24772477 if ((size(fo.payments) != 0))
24782478 then throw("No payments required")
24792479 else {
24802480 let dV = jG(toString(fo.caller), ji)
24812481 $Tuple2(((dV._1 :+ jK) ++ iR(toString(fo.caller), L)._1), dV._2)
24822482 }
24832483 }
24842484
24852485
24862486
24872487 @Callable(fo)
2488-func cargoExchange (kC,aW) = {
2488+func cargoExchange (kC,aX) = {
24892489 let jK = jH(fo)
24902490 if ((size(fo.payments) != 0))
24912491 then throw("No payments required")
24922492 else {
24932493 let gT = split_4C(kC, ":")
24942494 let b = toString(fo.originCaller)
2495- let ig = value(assetInfo(fromBase58String(aW)))
2496- let ih = aO(aW)
2495+ let ig = value(assetInfo(fromBase58String(aX)))
2496+ let ih = aP(aX)
24972497 if (!(isDefined(getInteger(ih))))
24982498 then throw((ig.name + " is not staked"))
24992499 else {
2500- let ij = valueOrErrorMessage(getString(aL(aW)), (("NFT " + ig.name) + " is orphaned"))
2500+ let ij = valueOrErrorMessage(getString(aM(aX)), (("NFT " + ig.name) + " is orphaned"))
25012501 if ((ij != b))
25022502 then throw((ae + " is not yours"))
25032503 else {
2504- let gF = (cG(split(ig.description, "_")[cr]) / bQ)
2505- let gG = valueOrElse(getInteger(aP(aW)), 0)
2506- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
2507- let id = valueOrElse(getString(bh(s)), al)
2504+ let gF = (cH(split(ig.description, "_")[cs]) / bR)
2505+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
2506+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
2507+ let id = valueOrElse(getString(bi(s)), am)
25082508 let ie = split(value(id), "_")
2509- if ((ie[bA] != "L"))
2510- then throw((("Duck location type is " + ie[bA]) + ", but should be L"))
2511- else if ((ie[bB] != aW))
2512- then throw(("Duck should be on the land " + aW))
2509+ if ((ie[bB] != "L"))
2510+ then throw((("Duck location type is " + ie[bB]) + ", but should be L"))
2511+ else if ((ie[bC] != aX))
2512+ then throw(("Duck should be on the land " + aX))
25132513 else {
2514- let gE = aV(aW)
2514+ let gE = aW(aX)
25152515 let gv = gD(gE, gF, gG)
2516- let gr = bg(s)
2516+ let gr = bh(s)
25172517 let gU = gq(gr)
25182518 let dV = gS(gT, gv, gU)
2519- let gM = split(gv[aB], "_")
2520- let iv = (parseIntValue(gM[aD]) + dV._7)
2521- let iw = (parseIntValue(gM[aE]) - dV._7)
2522-[StringEntry(gr, makeString_2C([gU[aG], dV._4, dV._5, dV._6], ":")), StringEntry(gE, makeString_2C([gv[ax], dV._1, dV._2, dV._3, makeString([gM[aC], toString(iv), toString(iw), gM[aF]], "_")], ":")), jK]
2519+ let gM = split(gv[aC], "_")
2520+ let iv = (parseIntValue(gM[aE]) + dV._7)
2521+ let iw = (parseIntValue(gM[aF]) - dV._7)
2522+[StringEntry(gr, makeString_2C([gU[aH], dV._4, dV._5, dV._6], ":")), StringEntry(gE, makeString_2C([gv[ay], dV._1, dV._2, dV._3, makeString([gM[aD], toString(iv), toString(iw), gM[aG]], "_")], ":")), jK]
25232523 }
25242524 }
25252525 }
25262526 }
25272527 }
25282528
25292529
25302530
25312531 @Callable(fo)
2532-func saveWarehouse (gI,aW) = if ((fo.caller != cm))
2532+func saveWarehouse (gI,aX) = if ((fo.caller != cn))
25332533 then throw("Access denied")
25342534 else {
2535- let gE = aV(aW)
2535+ let gE = aW(aX)
25362536 let gJ = split_4C(gI, ":")
25372537 if ((size(gJ) != 5))
25382538 then throw("warehouse string should contain 4 ':' separators")
25392539 else {
2540- let kD = split(gJ[aB], "_")[aC]
2540+ let kD = split(gJ[aC], "_")[aD]
25412541 let iv = gu(gJ)
2542- let kE = gs(gJ[ax])
2542+ let kE = gs(gJ[ay])
25432543 let iw = ((kE - parseIntValue(kD)) - iv)
2544- let kF = makeString_2C([gJ[ax], gJ[ay], gJ[az], gJ[aA], makeString([kD, toString(iv), toString(iw), toString(kE)], "_")], ":")
2544+ let kF = makeString_2C([gJ[ay], gJ[az], gJ[aA], gJ[aB], makeString([kD, toString(iv), toString(iw), toString(kE)], "_")], ":")
25452545 $Tuple2([StringEntry(gE, kF)], kF)
25462546 }
25472547 }
25482548
25492549
25502550
25512551 @Callable(fo)
2552-func fixWarehouseFormat (aW) = if ((fo.caller != cl))
2552+func fixWarehouseFormat (aX) = if ((fo.caller != cm))
25532553 then throw("Access denied")
25542554 else {
2555- let gE = aV(aW)
2556- let ig = value(assetInfo(fromBase58String(aW)))
2557- let gF = (cG(split(ig.description, "_")[cr]) / bQ)
2558- let gG = valueOrElse(getInteger(aP(aW)), 0)
2555+ let gE = aW(aX)
2556+ let ig = value(assetInfo(fromBase58String(aX)))
2557+ let gF = (cH(split(ig.description, "_")[cs]) / bR)
2558+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
25592559 let gJ = gD(gE, gF, gG)
2560- let kD = cE(invoke(cm, "recalcLockedVolumeREADONLY", [aW, gJ], nil))
2560+ let kD = cF(invoke(cn, "recalcLockedVolumeREADONLY", [aX, gJ], nil))
25612561 let iv = gu(gJ)
2562- let kE = gs(gJ[ax])
2562+ let kE = gs(gJ[ay])
25632563 let iw = ((kE - kD) - iv)
2564- let kF = makeString_2C([gJ[ax], gJ[ay], gJ[az], gJ[aA], makeString([toString(kD), toString(iv), toString(iw), toString(kE)], "_")], ":")
2564+ let kF = makeString_2C([gJ[ay], gJ[az], gJ[aA], gJ[aB], makeString([toString(kD), toString(iv), toString(iw), toString(kE)], "_")], ":")
25652565 $Tuple2([StringEntry(gE, kF)], kF)
25662566 }
25672567
25682568
25692569
25702570 @Callable(fo)
2571-func fixContinentProportions (ji) = if ((fo.caller != cl))
2571+func fixContinentProportions (ji) = if ((fo.caller != cm))
25722572 then throw("Access denied")
25732573 else {
2574- func kG (dD,kH) = (dD :+ valueOrElse(getString(cx(kH)), "0_0_0_0_0_0"))
2574+ func kG (dD,kH) = (dD :+ valueOrElse(getString(cy(kH)), "0_0_0_0_0_0"))
25752575
25762576 let fg = {
2577- let dF = ap
2577+ let dF = aq
25782578 let dG = size(dF)
25792579 let dH = nil
25802580 func dI (dJ,dK) = if ((dK >= dG))
25812581 then dJ
25822582 else kG(dJ, dF[dK])
25832583
25842584 func dL (dJ,dK) = if ((dK >= dG))
25852585 then dJ
25862586 else throw("List size exceeds 5")
25872587
25882588 dL(dI(dI(dI(dI(dI(dH, 0), 1), 2), 3), 4), 5)
25892589 }
2590- func kI (dD,aW) = {
2591- let ig = value(assetInfo(fromBase58String(aW)))
2590+ func kI (dD,aX) = {
2591+ let ig = value(assetInfo(fromBase58String(aX)))
25922592 let ik = split(ig.description, "_")
2593- let gF = (cG(ik[cr]) / bQ)
2594- let kH = ik[ct]
2595- let fk = fq(ik[cs])
2596- let fS = value(indexOf(ap, kH))
2593+ let gF = (cH(ik[cs]) / bR)
2594+ let kH = ik[cu]
2595+ let fk = fq(ik[ct])
2596+ let fS = value(indexOf(aq, kH))
25972597 let jx = split(dD[fS], "_")
25982598 let kJ = makeString(fi(jx, fk, gF, 1), "_")
2599- let bJ = kH
2600- if (("Americas" == bJ))
2599+ let bK = kH
2600+ if (("Americas" == bK))
26012601 then [kJ, dD[1], dD[2], dD[3], dD[4]]
2602- else if (("Europe" == bJ))
2602+ else if (("Europe" == bK))
26032603 then [dD[0], kJ, dD[2], dD[3], dD[4]]
2604- else if (("Asia" == bJ))
2604+ else if (("Asia" == bK))
26052605 then [dD[0], dD[1], kJ, dD[3], dD[4]]
2606- else if (("Africa" == bJ))
2606+ else if (("Africa" == bK))
26072607 then [dD[0], dD[1], dD[2], kJ, dD[4]]
2608- else if (("Oceania" == bJ))
2608+ else if (("Oceania" == bK))
26092609 then [dD[0], dD[1], dD[2], dD[3], kJ]
26102610 else throw("wrong continent")
26112611 }
26122612
26132613 let dO = {
26142614 let dF = ji
26152615 let dG = size(dF)
26162616 let dH = fg
26172617 func gl (dJ,dK) = if ((dK >= dG))
26182618 then dJ
26192619 else kI(dJ, dF[dK])
26202620
26212621 func gm (dJ,dK) = if ((dK >= dG))
26222622 then dJ
26232623 else throw("List size exceeds 100")
26242624
26252625 gm(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(gl(dH, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
26262626 }
2627- $Tuple2([StringEntry(cx("Americas"), dO[0]), StringEntry(cx("Europe"), dO[1]), StringEntry(cx("Asia"), dO[2]), StringEntry(cx("Africa"), dO[3]), StringEntry(cx("Oceania"), dO[4])], 0)
2628- }
2629-
2630-
2631-
2632-@Callable(fo)
2633-func fixStakedPieces (bX) = if ((fo.caller != cl))
2627+ $Tuple2([StringEntry(cy("Americas"), dO[0]), StringEntry(cy("Europe"), dO[1]), StringEntry(cy("Asia"), dO[2]), StringEntry(cy("Africa"), dO[3]), StringEntry(cy("Oceania"), dO[4])], 0)
2628+ }
2629+
2630+
2631+
2632+@Callable(fo)
2633+func fixStakedPieces (bY) = if ((fo.caller != cm))
26342634 then throw("Access denied")
26352635 else {
2636- let jB = if ((bX == ""))
2636+ let jB = if ((bY == ""))
26372637 then 0
26382638 else {
2639- let ju = getString(Z, cz(bX))
2639+ let ju = getString(Z, cA(bY))
26402640 let jq = if (isDefined(ju))
26412641 then split_51C(value(ju), "_")
26422642 else nil
2643- func kK (dD,aW) = {
2644- let ig = value(assetInfo(fromBase58String(aW)))
2645- let cH = split(ig.description, "_")[cr]
2646- (dD + cG(cH))
2643+ func kK (dD,aX) = {
2644+ let ig = value(assetInfo(fromBase58String(aX)))
2645+ let cI = split(ig.description, "_")[cs]
2646+ (dD + cH(cI))
26472647 }
26482648
26492649 let dF = jq
26502650 let dG = size(dF)
26512651 let dH = 0
26522652 func dI (dJ,dK) = if ((dK >= dG))
26532653 then dJ
26542654 else kK(dJ, dF[dK])
26552655
26562656 func dL (dJ,dK) = if ((dK >= dG))
26572657 then dJ
26582658 else throw("List size exceeds 100")
26592659
26602660 dL(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dI(dH, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
26612661 }
2662- $Tuple2([IntegerEntry(cA(bX), jB)], jB)
2663- }
2664-
2665-
2666-
2667-@Callable(fo)
2668-func setCustomName (aM,js,aR) = {
2662+ $Tuple2([IntegerEntry(cB(bY), jB)], jB)
2663+ }
2664+
2665+
2666+
2667+@Callable(fo)
2668+func setCustomName (aN,js,aS) = {
26692669 let jK = jH(fo)
26702670 if ((size(fo.payments) != 1))
26712671 then throw("Exactly one payment required")
26722672 else {
26732673 let jL = value(fo.payments[0])
2674- if ((jL.assetId != bI))
2674+ if ((jL.assetId != bJ))
26752675 then throw("Allowed USDT payment only!")
2676- else if ((jL.amount != cO))
2677- then throw(("Payment should be " + toString(cO)))
2676+ else if ((jL.amount != cP))
2677+ then throw(("Payment should be " + toString(cP)))
26782678 else if (contains(js, "__"))
26792679 then throw(("Name should not contain '__': " + js))
2680- else if ((size(js) > cP))
2681- then throw(("Name too long, maxLength=" + toString(cP)))
2680+ else if ((size(js) > cQ))
2681+ then throw(("Name too long, maxLength=" + toString(cQ)))
26822682 else {
26832683 let b = toString(fo.originCaller)
26842684 let kL = {
2685- let bJ = aR
2686- if (("ACCOUNT" == bJ))
2685+ let bK = aS
2686+ if (("ACCOUNT" == bK))
26872687 then {
26882688 let kM = dj(js)
26892689 let kN = getString(kM)
26902690 if (isDefined(kN))
26912691 then throw(("Name already registered: " + js))
26922692 else {
2693- let kO = aZ(b)
2693+ let kO = ba(b)
26942694 let kP = getString(kO)
26952695 let kQ = if (isDefined(kP))
26962696 then [DeleteEntry(dj(value(kP)))]
26972697 else nil
26982698 (((kQ :+ StringEntry(kO, js)) :+ StringEntry(kM, b)) ++ iR(b, I)._1)
26992699 }
27002700 }
2701- else if (("LAND" == bJ))
2701+ else if (("LAND" == bK))
27022702 then {
2703- let ig = value(assetInfo(fromBase58String(aM)))
2704- let ih = aO(aM)
2703+ let ig = value(assetInfo(fromBase58String(aN)))
2704+ let ih = aP(aN)
27052705 if (!(isDefined(getInteger(ih))))
27062706 then throw((ig.name + " is not staked"))
27072707 else {
2708- let ij = valueOrErrorMessage(getString(aL(aM)), (("NFT " + ig.name) + " is orphaned"))
2708+ let ij = valueOrErrorMessage(getString(aM(aN)), (("NFT " + ig.name) + " is orphaned"))
27092709 if ((ij != b))
27102710 then throw((ae + " is not yours"))
27112711 else {
2712- let kM = dd(js)
2712+ let kM = de(js)
27132713 let kN = getString(kM)
27142714 if (isDefined(kN))
27152715 then throw(("Name already registered: " + js))
27162716 else {
2717- let kR = aN(aM)
2717+ let kR = aO(aN)
27182718 let kP = getString(kR)
27192719 let kQ = if (isDefined(kP))
2720- then [DeleteEntry(dd(value(kP)))]
2720+ then [DeleteEntry(de(value(kP)))]
27212721 else nil
2722- (((kQ :+ StringEntry(kR, js)) :+ StringEntry(kM, aM)) ++ iR(b, I)._1)
2722+ (((kQ :+ StringEntry(kR, js)) :+ StringEntry(kM, aN)) ++ iR(b, I)._1)
27232723 }
27242724 }
27252725 }
27262726 }
2727- else if (("DUCK" == bJ))
2727+ else if (("DUCK" == bK))
27282728 then {
2729- let ig = value(assetInfo(fromBase58String(aM)))
2730- let ih = aO(aM)
2729+ let ig = value(assetInfo(fromBase58String(aN)))
2730+ let ih = aP(aN)
27312731 if (if (!(isDefined(getInteger(ih))))
27322732 then true
2733- else !(isDefined(getString(bf(b)))))
2733+ else !(isDefined(getString(bg(b)))))
27342734 then throw((ig.name + " is not staked"))
27352735 else {
2736- let ij = valueOrErrorMessage(getString(be(aM)), (("NFT " + ig.name) + " is orphaned"))
2736+ let ij = valueOrErrorMessage(getString(bf(aN)), (("NFT " + ig.name) + " is orphaned"))
27372737 if ((ij != b))
27382738 then throw((af + " is not yours"))
27392739 else {
27402740 let kM = di(js)
27412741 let kN = getString(kM)
27422742 if (isDefined(kN))
27432743 then throw(("Name already registered: " + js))
27442744 else {
2745- let kR = aY(aM)
2745+ let kR = aZ(aN)
27462746 let kP = getString(kR)
27472747 let kQ = if (isDefined(kP))
27482748 then [DeleteEntry(di(value(kP)))]
27492749 else nil
2750- (((kQ :+ StringEntry(kR, js)) :+ StringEntry(kM, aM)) ++ iL(aM, I)._1)
2750+ (((kQ :+ StringEntry(kR, js)) :+ StringEntry(kM, aN)) ++ iL(aN, I)._1)
27512751 }
27522752 }
27532753 }
27542754 }
27552755 else throw("Unknown entity type")
27562756 }
2757- $Tuple2(((kL :+ ScriptTransfer(cm, jL.amount, bI)) :+ jK), 0)
2757+ $Tuple2(((kL :+ ScriptTransfer(cn, jL.amount, bJ)) :+ jK), 0)
27582758 }
27592759 }
27602760 }
27612761
27622762
27632763
27642764 @Callable(fo)
2765-func setReferrals (kS,kT) = if ((fo.callerPublicKey != cL))
2765+func setReferrals (kS,kT) = if ((fo.callerPublicKey != cM))
27662766 then throw("Permission denied")
27672767 else {
27682768 let jK = jH(fo)
27692769 if ((size(fo.payments) != 0))
27702770 then throw("No payments required")
27712771 else if (!(isDefined(addressFromString(kS))))
27722772 then throw(("Invalid address: " + kS))
27732773 else if (!(isDefined(addressFromString(kT))))
27742774 then throw(("Invalid address: " + kT))
27752775 else {
27762776 let kU = dk()
27772777 let kV = getString(kU)
27782778 let kW = if (isDefined(kV))
27792779 then split_4C(value(kV), "_")
27802780 else nil
27812781 if (containsElement(kW, kT))
27822782 then throw((kT + " is not newbie (already has referrals)"))
27832783 else {
2784- let iT = ba(kT)
2784+ let iT = bb(kT)
27852785 let iU = getString(iT)
27862786 if (if (isDefined(iU))
27872787 then isDefined(addressFromString(value(iU)))
27882788 else false)
27892789 then throw(((kT + " already has refBy: ") + value(iU)))
27902790 else {
2791- let kX = bd(kS)
2791+ let kX = be(kS)
27922792 let kY = getString(kX)
27932793 let kZ = if (isDefined(kY))
27942794 then split_4C(value(kY), "_")
27952795 else nil
27962796 if (containsElement(kZ, kT))
27972797 then throw((((kS + " already contains ") + kT) + " within referrals"))
27982798 else {
27992799 let la = makeString_2C((kZ :+ kT), "_")
28002800 let lb = if (containsElement(kW, kS))
28012801 then value(kV)
28022802 else makeString_2C((kW :+ kS), "_")
28032803 $Tuple2([StringEntry(iT, kS), StringEntry(kX, la), StringEntry(kU, lb), jK], 0)
28042804 }
28052805 }
28062806 }
28072807 }
28082808 }
28092809
28102810
28112811
28122812 @Callable(fo)
28132813 func distributePoints (lc,ld,le,lf,lg) = {
28142814 let jK = jH(fo)
28152815 if ((size(fo.payments) != 0))
28162816 then throw("No payments required")
28172817 else {
28182818 let b = toString(fo.originCaller)
2819- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
2819+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
28202820 let lh = A(b)
28212821 let li = valueOrElse(getInteger(Z, lh), 0)
28222822 let lj = w(s)
28232823 let lk = valueOrElse(getInteger(Z, lj), 0)
28242824 let ll = (li + lk)
28252825 let lm = ((((lc + ld) + le) + lf) + lg)
28262826 if ((lm > ll))
28272827 then throw((("There are only " + toString(ll)) + " free points to distribute"))
28282828 else {
28292829 let ln = t(s)
28302830 let ab = split(valueOrElse(getString(Z, ln), "0_0_0_0_0"), "_")
28312831 let lo = (li - lm)
28322832 $Tuple2([IntegerEntry(lh, if ((0 > lo))
28332833 then 0
28342834 else lo), IntegerEntry(lj, if ((0 > lo))
28352835 then (lk + lo)
28362836 else lk), StringEntry(ln, makeString([toString((parseIntValue(ab[h]) + lc)), toString((parseIntValue(ab[i]) + ld)), toString((parseIntValue(ab[j]) + le)), toString((parseIntValue(ab[k]) + lf)), toString((parseIntValue(ab[l]) + lg))], "_")), jK], 0)
28372837 }
28382838 }
28392839 }
28402840
28412841
28422842
28432843 @Callable(fo)
28442844 func splitByGlobalWeightsREADONLY (du) = $Tuple2(nil, dM(du))
28452845
28462846
28472847
28482848 @Callable(fo)
28492849 func splitByGlobalAndLocalWeightsREADONLY (lp,lq,fr) = {
28502850 let fk = fq(fr)
28512851 $Tuple2(nil, $Tuple2(dM(lp), dx(lq, fk)))
28522852 }
28532853
28542854
28552855
28562856 @Callable(fo)
2857-func getBackpackREADONLY (s) = $Tuple2(nil, makeString(gq(bg(s)), ":"))
2858-
2859-
2860-
2861-@Callable(fo)
2862-func getWarehouseREADONLY (aW) = {
2863- let ig = value(assetInfo(fromBase58String(aW)))
2864- let gF = (cG(split(ig.description, "_")[cr]) / bQ)
2865- let gG = valueOrElse(getInteger(aP(aW)), 0)
2866- $Tuple2(nil, makeString_2C(gD(aV(aW), gF, gG), ":"))
2857+func getBackpackREADONLY (s) = $Tuple2(nil, makeString(gq(bh(s)), ":"))
2858+
2859+
2860+
2861+@Callable(fo)
2862+func getWarehouseREADONLY (aX) = {
2863+ let ig = value(assetInfo(fromBase58String(aX)))
2864+ let gF = (cH(split(ig.description, "_")[cs]) / bR)
2865+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
2866+ $Tuple2(nil, makeString_2C(gD(aW(aX), gF, gG), ":"))
28672867 }
28682868
28692869
28702870
28712871 @Callable(fo)
28722872 func saveLastTx () = {
28732873 let hp = fo.caller
2874- if (if (if ((hp != co))
2875- then (hp != cm)
2874+ if (if (if ((hp != cp))
2875+ then (hp != cn)
28762876 else false)
2877- then (hp != cp)
2877+ then (hp != cq)
28782878 else false)
28792879 then throw("Access denied")
28802880 else $Tuple2([jH(fo)], 42)
28812881 }
28822882
28832883
28842884
28852885 @Callable(fo)
2886-func updateDuckStats (s,iM) = if ((fo.caller != cm))
2886+func updateDuckStats (s,iM) = if ((fo.caller != cn))
28872887 then throw("Access denied")
28882888 else iL(s, iM)
28892889
28902890
28912891
28922892 @Callable(fo)
2893-func updateAccStats (b,iM) = if ((fo.caller != cm))
2893+func updateAccStats (b,iM) = if ((fo.caller != cn))
28942894 then throw("Access denied")
28952895 else iR(b, iM)
28962896
28972897
28982898
28992899 @Callable(fo)
29002900 func equipDuck (lr) = {
29012901 let jK = jH(fo)
29022902 if ((size(fo.payments) != 0))
29032903 then throw("No payments required")
29042904 else {
29052905 let b = toString(fo.originCaller)
2906- let s = valueOrErrorMessage(getString(bf(b)), "You don't have a duck staked")
2906+ let s = valueOrErrorMessage(getString(bg(b)), "You don't have a duck staked")
29072907 if (jb(s))
29082908 then throw("equipDuck_checkTournament")
29092909 else {
29102910 let hQ = x(s)
29112911 let ls = split(valueOrElse(getString(hQ), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2912- let gr = bg(s)
2912+ let gr = bh(s)
29132913 let gU = gq(gr)
29142914 let hS = split(lr, "_")
29152915 if ((size(hS) != n))
29162916 then throw("Wrong equipment string")
29172917 else {
2918- let lt = eY(ls, ej(gU[aJ]), true, nil)
2918+ let lt = eY(ls, ej(gU[aK]), true, nil)
29192919 let lu = split(hS[m], ";")[1]
29202920 let lv = if ((lu == ""))
29212921 then 0
29222922 else {
29232923 let lw = split(lu, ",")[0]
29242924 if ((lw == ""))
29252925 then 0
29262926 else {
29272927 let ey = split(lw, ":")
2928- let ck = ey[0]
2928+ let cl = ey[0]
29292929 let lx = ey[1]
2930- if (if (if (if (if ((ck == "06"))
2930+ if (if (if (if (if ((cl == "06"))
29312931 then true
2932- else (ck == "07"))
2932+ else (cl == "07"))
29332933 then true
2934- else (ck == "08"))
2934+ else (cl == "08"))
29352935 then (lx != "")
29362936 else false)
29372937 then (parseIntValue(lx) > 0)
29382938 else false)
2939- then (parseIntValue(ck) - 5)
2939+ then (parseIntValue(cl) - 5)
29402940 else 0
29412941 }
29422942 }
29432943 let eT = Y(this, s, lv)
29442944 let ly = eY(hS, lt, false, eT)
29452945 let lz = eo(ly)
2946- $Tuple2([StringEntry(hQ, lr), StringEntry(gr, makeString_2C([gU[aG], gU[aH], gU[aI], lz], ":")), jK], 0)
2946+ $Tuple2([StringEntry(hQ, lr), StringEntry(gr, makeString_2C([gU[aH], gU[aI], gU[aJ], lz], ":")), jK], 0)
29472947 }
29482948 }
29492949 }
29502950 }
29512951
29522952
29532953
29542954 @Callable(fo)
2955-func fortificateLand (aW,lA) = {
2955+func fortificateLand (aX,lA) = {
29562956 let jK = jH(fo)
29572957 if ((size(fo.payments) != 0))
29582958 then throw("No payments required")
29592959 else {
29602960 let b = toString(fo.originCaller)
2961- let s = valueOrElse(getString(bf(b)), "")
2961+ let s = valueOrElse(getString(bg(b)), "")
29622962 let et = Y(this, s, 0)
2963- let lB = aX(aW)
2963+ let lB = aY(aX)
29642964 let lC = split(valueOrElse(getString(lB), ":0_15:0_18:0"), "_")
2965- let ig = value(assetInfo(fromBase58String(aW)))
2966- let gF = (cG(split(ig.description, "_")[cr]) / bQ)
2967- let gG = valueOrElse(getInteger(aP(aW)), 0)
2968- let gE = aV(aW)
2965+ let ig = value(assetInfo(fromBase58String(aX)))
2966+ let gF = (cH(split(ig.description, "_")[cs]) / bR)
2967+ let gG = valueOrElse(getInteger(aQ(aX)), 0)
2968+ let gE = aW(aX)
29692969 let gJ = gD(gE, gF, gG)
2970- let lD = split(gJ[aB], "_")
2971- let lE = parseIntValue(lD[aD])
2972- let lF = parseIntValue(lD[aE])
2970+ let lD = split(gJ[aC], "_")
2971+ let lE = parseIntValue(lD[aE])
2972+ let lF = parseIntValue(lD[aF])
29732973 let lG = split(lA, "_")
2974- let lH = ff(lC, ej(gJ[aA]), lE, lF, true, nil)
2974+ let lH = ff(lC, ej(gJ[aB]), lE, lF, true, nil)
29752975 let lt = lH._1
29762976 let lI = lH._2
29772977 let lJ = lH._3
29782978 let lK = ff(lG, lt, lI, lJ, false, et)
29792979 let ly = lK._1
29802980 let lL = lK._2
29812981 let lM = lK._3
29822982 let lz = eo(ly)
2983- let iK = makeString([lD[aC], toString(lL), toString(lM), lD[aF]], "_")
2984- $Tuple2([StringEntry(lB, lA), StringEntry(gE, makeString_2C([gJ[ax], gJ[ay], gJ[az], lz, iK], ":")), jK], 0)
2985- }
2986- }
2987-
2988-
2989-
2990-@Callable(fo)
2991-func initDuckTourAttempt (s) = if ((fo.caller != cp))
2983+ let iK = makeString([lD[aD], toString(lL), toString(lM), lD[aG]], "_")
2984+ $Tuple2([StringEntry(lB, lA), StringEntry(gE, makeString_2C([gJ[ay], gJ[az], gJ[aA], lz, iK], ":")), jK], 0)
2985+ }
2986+ }
2987+
2988+
2989+
2990+@Callable(fo)
2991+func initDuckTourAttempt (s) = if ((fo.caller != cq))
29922992 then throw("Access denied")
29932993 else {
29942994 let jK = jH(fo)
29952995 let hH = r(s)
29962996 let hI = Q(valueOrElse(getInteger(v(s)), 0))
29972997 let jY = valueOrElse(getInteger(hH), hI)
2998- let lN = bh(s)
2999- let id = valueOrElse(getString(lN), al)
3000- let jc = valueOrElse(getInteger(cp, bm), 0)
2998+ let lN = bi(s)
2999+ let id = valueOrElse(getString(lN), am)
3000+ let jc = valueOrElse(getInteger(cq, bn), 0)
30013001 let lO = (toString(jc) + "_T_0")
30023002 $Tuple2([jK, IntegerEntry(B(s), jY), IntegerEntry(hH, hI), StringEntry(C(s), id), StringEntry(lN, lO)], lO)
30033003 }
30043004
30053005
30063006
30073007 @Callable(fo)
30083008 func exitTournaments () = {
30093009 let jK = jH(fo)
3010- let s = valueOrErrorMessage(getString(bf(toString(fo.caller))), "You don't have a duck staked")
3011- let lN = bh(s)
3012- let id = valueOrElse(getString(lN), al)
3013- if ((split(id, "_")[bA] != "T"))
3010+ let s = valueOrErrorMessage(getString(bg(toString(fo.caller))), "You don't have a duck staked")
3011+ let lN = bi(s)
3012+ let id = valueOrElse(getString(lN), am)
3013+ if ((split(id, "_")[bB] != "T"))
30143014 then throw("Your duck is not in the tournament")
30153015 else {
30163016 let lP = getIntegerValue(B(s))
30173017 let lQ = getStringValue(C(s))
30183018 $Tuple2([jK, IntegerEntry(r(s), lP), StringEntry(lN, lQ)], id)
30193019 }
30203020 }
30213021
30223022
30233023
30243024 @Callable(fo)
30253025 func exitTournamentInternal (s) = if ((fo.caller != this))
30263026 then throw("Access denied")
30273027 else {
30283028 let lP = getIntegerValue(B(s))
30293029 let lQ = getStringValue(C(s))
3030- $Tuple2([IntegerEntry(r(s), lP), StringEntry(bh(s), lQ)], 0)
3030+ $Tuple2([IntegerEntry(r(s), lP), StringEntry(bi(s), lQ)], 0)
30313031 }
30323032
30333033

github/deemru/w8io/026f985 
628.54 ms