tx · C9wvppKJz23u8PPEUYHJsVqj6nnFTQ75KJCqFtickoxc

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.03600000 Waves

2023.08.31 19:27 [2735094] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

{ "type": 13, "id": "C9wvppKJz23u8PPEUYHJsVqj6nnFTQ75KJCqFtickoxc", "fee": 3600000, "feeAssetId": null, "timestamp": 1693499259458, "version": 2, "chainId": 84, "sender": "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep", "senderPublicKey": "7v5L7QkXxfkirALdyqmox38QCsa9jtfAtgUfHTh34eWq", "proofs": [ "4XPTjaDza4mx2g5CN81U5MnndUPj8T9SWFEHCRxTbx1mSW4LrRANQ9n1UXTLFzzLFUz9H41C4ZmPbJ8UQmcC8ceB" ], "script": "base64:BgI7CAISBAoCCBgSAwoBCBIECgIRERIECgIRERIDCgEREgQKAgEBEgQKAggIEgUKAwgICBIDCgEREgMKAQhTAAd4cFRyYWRlAJBOAAd4cENyYWZ0AJBOAAp4cFNlbGxUb0VzAJBOAAZ4cFNob3AAkE4ACkxBTkRQUkVGSVgCBExBTkQABk5VTVJFUwAGAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAQUkVTT1VSQ0VQUklDRU1JTgDVtQIADUVTTUFYUEFDS0FHRVMAAwAJRVNCVVlDT0VGAAQACHJlc1R5cGVzCQDMCAICA09pbAkAzAgCAgNPcmUJAMwIAgIEV29vZAkAzAgCAgRTYW5kCQDMCAICBENsYXkJAMwIAgIHT3JnYW5pYwUDbmlsAAhtYXRUeXBlcwkAzAgCAgRGdWVsCQDMCAICBU1ldGFsCQDMCAICBVBsYW5rCQDMCAICBUdsYXNzCQDMCAICB1BsYXN0aWMJAMwIAgIHUHJvdGVpbgUDbmlsAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgANcklkeENvbnRpbmVudAAHAApSRUNJUEVTSVpFAAsADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgluZnRPd25lcl8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILc3Rha2VkVGltZV8FB2Fzc2V0SWQBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEOa2V5T3JkZXJCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCmxhbmRPcmRlcl8FC2xhbmRBc3NldElkAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAGTVVMVDEwAIDIr6AlAA5NSU5TSE9QUEFZTUVOVACgjQYABUlURVI2CQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQAE0ZBQ1RPUllNQVhXQVJFSE9VU0UAgMivoCUADlNFTExNVUxUSVBMSUVSAMgBAA1CVVlNVUxUSVBMSUVSAKwCAApBVUNUSU9ORkVFAJBOAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCCWZhY3RvcnlJZAdyZXNUeXBlCQCsAgIJAKwCAgkArAICAhtmYWN0b3J5V2hCeUNvbnRpbmVudEFuZFJlc18FCWZhY3RvcnlJZAIBXwkApAMBBQdyZXNUeXBlAAlvcmRJZHhSZXMAAAAJb3JkSWR4TWF0AAEACm9yZElkeFByb2QAAgEIZ2V0T3JkZXIBBm9yZEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBm9yZEtleQIwMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6MEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6AgE6CQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUJb3JkSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUBcAUJb3JkSWR4UmVzAhcwQDBfMEAwXzBAMF8wQDBfMEAwXzBAMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCW9yZElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAXAFCW9yZElkeE1hdAIXMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDAJAMwIAgkAkQMCBQFwBQpvcmRJZHhQcm9kBQNuaWwBCHRvVm9sdW1lAwZhbW91bnQHcGtnU2l6ZQlpc1Byb2R1Y3QDBQlpc1Byb2R1Y3QEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAUGYW1vdW50AQxzZWxsSW50ZXJuYWwEBWxvY0lkB3Jlc1R5cGUGYW1vdW50CG1pblByaWNlBAV3aEtleQkBHmtleUZhY3RvcnlXYXJlaG91c2VCeUlkQW5kVHlwZQIFBWxvY0lkBQdyZXNUeXBlBAJ3MAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV3aEtleQAABAJyMAMJAGYCBQJ3MAUTRkFDVE9SWU1BWFdBUkVIT1VTRQAAAwkAZgIJAGQCBQJ3MAUGYW1vdW50BRNGQUNUT1JZTUFYV0FSRUhPVVNFCQBlAgUTRkFDVE9SWU1BWFdBUkVIT1VTRQUCdzAFBmFtb3VudAQMdXNkdFJlY2VpdmVkCQBkAgkAawMFAnIwCQBlAgkAaAIFDlNFTExNVUxUSVBMSUVSBRBSRVNPVVJDRVBSSUNFTUlOCQBrAwkAZAIJAGgCAGQFAncwCQBoAgAyBQJyMAUQUkVTT1VSQ0VQUklDRU1JTgUTRkFDVE9SWU1BWFdBUkVIT1VTRQUGTVVMVDEwCQBrAwkAZQIFBmFtb3VudAUCcjAFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BAVtaW45OQkAZQIFCG1pblByaWNlCQBpAgUIbWluUHJpY2UAZAMJAGYCCQBoAgUFbWluOTkFBmFtb3VudAkAaAIFDHVzZHRSZWNlaXZlZAUFTVVMVDgJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0FjdHVhbCBwcmljZSA9IAkApAMBBQx1c2R0UmVjZWl2ZWQCAyAvIAkApAMBBQZhbW91bnQCDiA8IG1pblByaWNlID0gCQCkAwEFCG1pblByaWNlAgMsICgFBWxvY0lkAgIsIAkAkQMCBQhyZXNUeXBlcwUHcmVzVHlwZQIBKQkAlAoCCQEMSW50ZWdlckVudHJ5AgUFd2hLZXkJAGQCBQJ3MAUGYW1vdW50BQx1c2R0UmVjZWl2ZWQBC2J1eUludGVybmFsBAVsb2NJZAdtYXRUeXBlBmFtb3VudAhtYXhQcmljZQQFd2hLZXkJAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCBQVsb2NJZAUHbWF0VHlwZQQCdzAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFd2hLZXkAAAQCbTEDCQBmAgUCdzAFE0ZBQ1RPUllNQVhXQVJFSE9VU0UJAJcDAQkAzAgCBQZhbW91bnQJAMwIAgkAZQIFAncwBRNGQUNUT1JZTUFYV0FSRUhPVVNFBQNuaWwAAAQCbTAJAJcDAQkAzAgCBQJ3MAkAzAgCCQBlAgUGYW1vdW50BQJtMQUDbmlsBAFtCQBkAgUCbTAFAm0xBAl1c2R0U3BlbnQJAGQCCQBrAwUCbTAJAGUCCQBoAgUNQlVZTVVMVElQTElFUgUQUkVTT1VSQ0VQUklDRU1JTgkAawMJAGUCCQBoAgBkBQJ3MAkAaAIAMgUCbTAFEFJFU09VUkNFUFJJQ0VNSU4FE0ZBQ1RPUllNQVhXQVJFSE9VU0UFBk1VTFQxMAkAawMFAm0xCQBoAgACBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAQGbWF4MTAxCQBkAgUIbWF4UHJpY2UJAGkCBQhtYXhQcmljZQBkAwkAZgIJAGgCBQl1c2R0U3BlbnQFBU1VTFQ4CQBoAgUGbWF4MTAxBQFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9BY3R1YWwgcHJpY2UgPSAJAKQDAQUJdXNkdFNwZW50AgMgLyAJAKQDAQUBbQIOID4gbWF4UHJpY2UgPSAJAKQDAQUIbWF4UHJpY2UCAywgKAUFbG9jSWQCAiwgCQCRAwIFCG1hdFR5cGVzBQdtYXRUeXBlAgEpCQCVCgMJAQxJbnRlZ2VyRW50cnkCBQV3aEtleQkAZQIFAncwBQFtBQl1c2R0U3BlbnQFAW0BC2dldEJhY2twYWNrAQVicEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6AgE6CQDMCAIJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIFAXAFCmJwSWR4TGV2ZWwAAAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeE1hdAILMF8wXzBfMF8wXzAJAMwIAgkAkQMCBQFwBQlicElkeFByb2QFA25pbAEMY2hlY2tCbG9ja2VkAAMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUPc3Rha2luZ0NvbnRyYWN0CQEKa2V5QmxvY2tlZAAHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQUEdW5pdAEGcHJvbG9nAAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCCnNhdmVMYXN0VHgFA25pbAUDbmlsAQlzZXRDb21tb24CA2FjYwRpdGVtBAFqCAUDYWNjAl8xBAZpc1Byb2QIBQNhY2MCXzgECWl0ZW1QYXJ0cwkAtQkCBQRpdGVtAgFAAwkBAiE9AgkAkAMBBQlpdGVtUGFydHMAAgkAAgECLkluY29ycmVjdCBvcmRlciBmb3JtYXQsIHNob3VsZCBiZSBhbW91bnRAcHJpY2UECG5ld09yZEFtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJaXRlbVBhcnRzAAAECG5ld09yZFByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJaXRlbVBhcnRzAAEECW5ld09yZFVzZAkAawMFCG5ld09yZEFtBQhuZXdPcmRQcgUFTVVMVDgECW5ld09yZFZvbAkBCHRvVm9sdW1lAwUIbmV3T3JkQW0FDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QEBndoSW5pdAMJAGYCCQCQAwEIBQNhY2MCXzYFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUDYWNjAl82BQFqAAAEC2N1ck9yZFBhcnRzCQC1CQIDCQBmAgkAkAMBCAUDYWNjAl83BQFqCQCRAwIIBQNhY2MCXzcFAWoCAzBAMAIBQAQIY3VyT3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJPcmRQYXJ0cwAABAhjdXJPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ck9yZFBhcnRzAAEDAwkAZgIAAAUIY3VyT3JkUHIGCQBmAgAABQhuZXdPcmRQcgkAAgECF1ByaWNlIGNhbid0IGJlIG5lZ2F0aXZlBAljdXJPcmRVc2QJAGsDBQhjdXJPcmRBbQUIY3VyT3JkUHIFBU1VTFQ4AwkAAAIFCG5ld09yZEFtAAADCQBmAgUIY3VyT3JkQW0AAAkAmwoJCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQUGd2hJbml0CAUDYWNjAl8zCAUDYWNjAl80CQBlAggFA2FjYwJfNQUJY3VyT3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAGQCCAUDYWNjAl85CQEIdG9Wb2x1bWUDBQZ3aEluaXQFDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QJAJsKCQkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQZ3aEluaXQFCGN1ck9yZEFtCAUDYWNjAl8zCAUDYWNjAl80CAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAGQCCAUDYWNjAl85CQEIdG9Wb2x1bWUDCQBlAgUGd2hJbml0BQhjdXJPcmRBbQUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAMJAGYCBQhuZXdPcmRBbQAAAwkAZgIAAAUIY3VyT3JkQW0JAJsKCQkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQZ3aEluaXQFCGN1ck9yZEFtCQBkAggFA2FjYwJfMwUJbmV3T3JkVm9sCAUDYWNjAl80CQBkAggFA2FjYwJfNQUJbmV3T3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGUCBQZ3aEluaXQFCGN1ck9yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kCQCbCgkJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBBQZ3aEluaXQJAGQCCAUDYWNjAl8zBQluZXdPcmRWb2wIBQNhY2MCXzQJAGUCCQBkAggFA2FjYwJfNQUJbmV3T3JkVXNkBQljdXJPcmRVc2QIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkBCHRvVm9sdW1lAwUGd2hJbml0BQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kAwkAZgIAAAUIY3VyT3JkQW0EBmFtRGlmZgkAZQIFCGN1ck9yZEFtBQhuZXdPcmRBbQMJAGYCAAAJAGUCBQZ3aEluaXQFBmFtRGlmZgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBBQZhbURpZmYCGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFBndoSW5pdAIKIGF2YWlsYWJsZQkAmwoJCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIFBndoSW5pdAUGYW1EaWZmCAUDYWNjAl8zCQBlAggFA2FjYwJfNAUJbmV3T3JkVm9sCAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGUCBQZ3aEluaXQFBmFtRGlmZgUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAMJAGYCAAAJAGQCBQZ3aEluaXQFCG5ld09yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUIbmV3T3JkQW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFBndoSW5pdAIKIGF2YWlsYWJsZQkAmwoJCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFBndoSW5pdAUIbmV3T3JkQW0IBQNhY2MCXzMJAGUCCAUDYWNjAl80BQluZXdPcmRWb2wJAGUCCAUDYWNjAl81BQljdXJPcmRVc2QIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkBCHRvVm9sdW1lAwkAZAIFBndoSW5pdAUIbmV3T3JkQW0FDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QBC3NldEludGVybmFsAwljdXJyZW50V2gKY3VycmVudE9yZAZuZXdPcmQECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQNY3VycmVudE9yZFJlcwkAtQkCCQCRAwIFCmN1cnJlbnRPcmQFCW9yZElkeFJlcwIBXwQNY3VycmVudE9yZE1hdAkAtQkCCQCRAwIFCmN1cnJlbnRPcmQFCW9yZElkeE1hdAIBXwQOY3VycmVudE9yZFByb2QDCQAAAgkAkQMCBQpjdXJyZW50T3JkBQpvcmRJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCmN1cnJlbnRPcmQFCm9yZElkeFByb2QCAV8DCQECIT0CCQCQAwEFBm5ld09yZAADCQACAQIzbmV3T3JkZXJTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhyZXNQYXJ0cwkAtQkCCQCRAwIFBm5ld09yZAAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFBm5ld09yZAABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQZuZXdPcmQAAgIABQNuaWwJALwJAgkAkQMCBQZuZXdPcmQAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUg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cmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJwT3JkUGFydHMAAAQHYnBPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJwT3JkUGFydHMAAQMJAGYCAAAFB2JwT3JkUHIJAAIBAhdQcmljZSBjYW4ndCBiZSBuZWdhdGl2ZQQIYnBPcmRVc2QJAGsDBQdicE9yZEFtBQdicE9yZFByBQVNVUxUOAQGYnBJbml0AwkAZgIJAJADAQgFA2FjYwJfOAUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQNhY2MCXzgFAWoAAAQGd2hJbml0AwkAZgIJAJADAQgFA2FjYwJfOQUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQNhY2MCXzkFAWoAAAQJd2hPcmRJbml0AwkAZgIJAJADAQgFA2FjYwNfMTAFAWoJAJEDAggFA2FjYwNfMTAFAWoCAzBAMAQKd2hPcmRQYXJ0cwkAtQkCBQl3aE9yZEluaXQCAUAEB3doT3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQp3aE9yZFBhcnRzAAAEB3doT3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQp3aE9yZFBhcnRzAAEDAwkBAiE9AgUHYnBPcmRBbQAACQECIT0CBQdicE9yZFByBQd3aE9yZFByBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgpQcmljZXMgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhcgZG9uJ3QgbWF0Y2ghIFdIIHByaWNlPQkApAMBBQd3aE9yZFByAg0sIHlvdXIgcHJpY2U9CQCkAwEFB2JwT3JkUHIECHdoT3JkVXNkCQBrAwUHd2hPcmRBbQUHd2hPcmRQcgUFTVVMVDgECGRlbHRhVm9sCQEIdG9Wb2x1bWUDBQdicE9yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kAwkAAAIFB2JwT3JkQW0AAAkAnwoNCQDNCAIIBQNhY2MCXzEJAKQDAQUGd2hJbml0CQDNCAIIBQNhY2MCXzIFCXdoT3JkSW5pdAkAzQgCCAUDYWNjAl8zCQCkAwEFBmJwSW5pdAgFA2FjYwJfNAgFA2FjYwJfNQgFA2FjYwJfNgkAZAIIBQNhY2MCXzcAAQgFA2FjYwJfOAgFA2FjYwJfOQgFA2FjYwNfMTAIBQNhY2MDXzExBQZpc1Byb2QIBQNhY2MDXzEzAwkAZgIFB2JwT3JkQW0AAAMJAGYCAAAFB3doT3JkQW0DCQBmAgUHYnBPcmRBbQkBAS0BBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0F0dGVtcHQgdG8gYnV5IAkApAMBBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhssIGJ1dCB3YXJlaG91c2Ugb25seSBzZWxscyAJAKQDAQkBAS0BBQd3aE9yZEFtCQCfCg0JAM0IAggFA2FjYwJfMQkApAMBBQZ3aEluaXQJAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAgFA2FjYwJfNQkAZAIIBQNhY2MCXzYFCGJwT3JkVXNkCQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAZAIIBQNhY2MDXzEzAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUFTVVMVDgFB2JwT3JkQW0JAAIBCQCsAgIJAKwCAgIPQXR0ZW1wdCB0byBidXkgCQCRAwIIBQNhY2MDXzExBQFqAiAgd2hpbGUgd2FyZWhvdXNlIGRvZXNuJ3Qgc2VsbCBpdAMJAGYCBQd3aE9yZEFtAAADCQBmAgkBAS0BBQdicE9yZEFtBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhosIGJ1dCB3YXJlaG91c2Ugb25seSBidXlzIAkApAMBBQd3aE9yZEFtAwkAZgIJAQEtAQUHYnBPcmRBbQUGYnBJbml0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAhQsIGJ1dCB5b3Ugb25seSBoYXZlIAkApAMBBQZicEluaXQCBCBvZiAJAJEDAggFA2FjYwNfMTEFAWoJAJ8KDQkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQZ3aEluaXQFB2JwT3JkQW0JAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGUCCAUDYWNjAl80BQhkZWx0YVZvbAkAZQIIBQNhY2MCXzUFCGJwT3JkVXNkCAUDYWNjAl82CQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAZQIIBQNhY2MDXzEzAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUFTVVMVDgFB2JwT3JkQW0JAAIBCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkAkQMCCAUDYWNjA18xMQUBagIfIHdoaWxlIHdhcmVob3VzZSBkb2Vzbid0IGJ1eSBpdAoBaQEacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkCC2xhbmRBc3NldElkAndoBApjdXJyZW50T3JkCQEIZ2V0T3JkZXIBCQEOa2V5T3JkZXJCeUxhbmQBBQtsYW5kQXNzZXRJZAQBegkBC3NldEludGVybmFsAwUCd2gFCmN1cnJlbnRPcmQFCmN1cnJlbnRPcmQJAJQKAgUDbmlsCQBkAggFAXoCXzQIBQF6Al81AWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQ1zZWxsUmVzb3VyY2VzAgdhbW91bnRzCW1pblByaWNlcwQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIqc2VsbFJlc291cmNlcyBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnRzBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFGCQACAQkArAICAi1EdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIEZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEBWxvY0lkCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfCgEFYWRkZXICA2FjYwFqAwkAZgIJAJEDAgUHYW1vdW50cwUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Jlc0xpc3QFAWoJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCRAwIFB3Jlc0xpc3QFAWoCBCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCFCwgYnV0IHRyaWVkIHRvIHNlbGwgCQCkAwEJAJEDAgUHYW1vdW50cwUBagMJAGYCAAAJAJEDAgUHYW1vdW50cwUBagkAAgEJAKwCAgkArAICCQCsAgICJVlvdSB0cmllZCB0byBzZWxsIG5lZ2F0aXZlIGFtb3VudCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCAjogCQCkAwEJAJEDAgUHYW1vdW50cwUBagMJAGYCCQCRAwIFB2Ftb3VudHMFAWoAAAQBYgkBDHNlbGxJbnRlcm5hbAQFBWxvY0lkBQFqCQCRAwIFB2Ftb3VudHMFAWoJAJEDAgUJbWluUHJpY2VzBQFqCQCWCgQJAM0IAggFA2FjYwJfMQgFAWICXzEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Jlc0xpc3QFAWoJAJEDAgUHYW1vdW50cwUBagkAZAIIBQNhY2MCXzMIBQFiAl8yCQBkAggFA2FjYwJfNAkAkQMCBQdhbW91bnRzBQFqCQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdyZXNMaXN0BQFqCAUDYWNjAl8zCAUDYWNjAl80BAZtZXJnZWQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQFA25pbAUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAggFBm1lcmdlZAJfMgIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlCAUGbWVyZ2VkAl80BQVNVUxUOAUDbmlsBQNuaWwJAJQKAgkAzQgCCAUGbWVyZ2VkAl8xCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIIBQZtZXJnZWQCXzMFC3VzZHRBc3NldElkCQCVCgMFBnJlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAQxidXlNYXRlcmlhbHMCB2Ftb3VudHMJbWF4UHJpY2VzBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCHldBVkVTIGNhbid0IGJlIHVzZWQgYXMgcGF5bWVudAMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAVsb2NJZAkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHbWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwoBCG1VcGRhdGVyAgNhY2MBagMJAGYCAAAJAJEDAgUHYW1vdW50cwUBagkAAgEJAKwCAgkArAICCQCsAgICJFlvdSB0cmllZCB0byBidXkgbmVnYXRpdmUgYW1vdW50IG9mIAkAkQMCBQhtYXRUeXBlcwUBagICOiAJAKQDAQkAkQMCBQdhbW91bnRzBQFqAwkAZgIJAJEDAgUHYW1vdW50cwUBagAABAFiCQELYnV5SW50ZXJuYWwEBQVsb2NJZAUBagkAkQMCBQdhbW91bnRzBQFqCQCRAwIFCW1heFByaWNlcwUBagkAlgoECQDNCAIIBQNhY2MCXzEIBQFiAl8xCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdtYXRMaXN0BQFqCAUBYgJfMwkAZAIIBQNhY2MCXzMIBQFiAl8yCQBkAggFA2FjYwJfNAkAkQMCBQdhbW91bnRzBQFqCQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdtYXRMaXN0BQFqCAUDYWNjAl8zCAUDYWNjAl80BAZtZXJnZWQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQFA25pbAUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIbVVwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYDCQBmAggFBm1lcmdlZAJfMwUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkApAMBBQNhbXQCCywgcmVxdWlyZWQ9CQCkAwEIBQZtZXJnZWQCXzMEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJALkJAggFBm1lcmdlZAJfMgIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEBHJlc3QDCQBmAgkAZQIFA2FtdAgFBm1lcmdlZAJfMwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAgFBm1lcmdlZAJfMwULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAggFBm1lcmdlZAJfMwBkBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBUcmFkZQgFBm1lcmdlZAJfNAUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCCAUGbWVyZ2VkAl8xBQRyZXN0CQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQCVCgMFBnJlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpARFleGNoYW5nZVJlc291cmNlcwEHYW1vdW50cwQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAh5XQVZFUyBjYW4ndCBiZSB1c2VkIGFzIHBheW1lbnQDCQECIT0CBQpwbXRBc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUYJAAIBCQCsAgICLUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgRmFjdG9yeSwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQFbG9jSWQJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB3Jlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8KAQlleGNoYW5nZXICA2FjYwFqBAV3aEtleQkBHmtleUZhY3RvcnlXYXJlaG91c2VCeUlkQW5kVHlwZQIFBWxvY0lkBQFqBAJ3MAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV3aEtleQAABANhbWoJAJEDAgUHYW1vdW50cwUBagMJAGYCBQNhbWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkAkQMCBQdyZXNMaXN0BQFqAgQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAhgsIGJ1dCB0cmllZCB0byBleGNoYW5nZSAJAKQDAQUDYW1qAwkAZgIAAAUDYW1qCQACAQkArAICCQCsAgIJAKwCAgIpWW91IHRyaWVkIHRvIGV4Y2hhbmdlIG5lZ2F0aXZlIGFtb3VudCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCAjogCQCkAwEFA2FtagMJAGYCBQNhbWoAAAkAlwoFCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqBQNhbWoJAM0IAggFA2FjYwJfMgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB21hdExpc3QFAWoFA2FtagkAZAIIBQNhY2MCXzMJAGsDBQNhbWoFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4CQDNCAIIBQNhY2MCXzQJAQxJbnRlZ2VyRW50cnkCBQV3aEtleQUCdzAJAGQCCAUDYWNjAl81BQNhbWoJAJcKBQkAzQgCCAUDYWNjAl8xCQCRAwIFB3Jlc0xpc3QFAWoJAM0IAggFA2FjYwJfMgkAkQMCBQdtYXRMaXN0BQFqCAUDYWNjAl8zCAUDYWNjAl80CAUDYWNjAl81BAZtZXJnZWQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCXCgUFA25pbAUDbmlsAAAFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlleGNoYW5nZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYDCQBmAggFBm1lcmdlZAJfMwUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkApAMBBQNhbXQCCywgcmVxdWlyZWQ9CQCkAwEIBQZtZXJnZWQCXzMEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAggFBm1lcmdlZAJfMQIBXwkAzAgCCQC5CQIIBQZtZXJnZWQCXzICAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBARyZXN0AwkAZgIJAGUCBQNhbXQIBQZtZXJnZWQCXzMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQIBQZtZXJnZWQCXzMFC3VzZHRBc3NldElkBQNuaWwFA25pbAQQYWN0aXZpdGllc0Ftb3VudAkAaQIIBQZtZXJnZWQCXzMAZAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwVHJhZGUIBQZtZXJnZWQCXzUFBU1VTFQ4BQNuaWwFA25pbAkAlAoCCQDNCAIJAM4IAgUEcmVzdAgFBm1lcmdlZAJfNAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkAlQoDBQZyZXN1bHQFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQBaQEKY3JhZnRHb29kcwIKcHJvZHVjdElkeAhxdWFudGl0eQQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQVNVUxUNgkAAgECKmV4YWN0bHkgMSBVU0RUIG11c3QgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAMJAGcCAAAFCHF1YW50aXR5CQACAQIbUXVhbnRpdHkgc2hvdWxkIGJlIHBvc2l0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAU0JAAIBCQCsAgICMUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgTWFudWZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEBGNvbnQJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQkArAICAhRVbmtub3duIHByb2R1Y3QgaWR4PQkApAMBBQpwcm9kdWN0SWR4BAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwkBAiE9AgkAkAMBBQZyZWNpcGUFClJFQ0lQRVNJWkUJAAIBCQCsAgICF0ZhdGFsOiB1bmtub3duIHJlY2lwZTogCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgEDnByb2R1Y3RDb250SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQ1ySWR4Q29udGluZW50AwkBAiE9AgkAkQMCBQpjb250aW5lbnRzBQ5wcm9kdWN0Q29udElkeAUEY29udAkAAgEJAKwCAgkArAICCQCsAgICHVRoaXMg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AQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJALkJAggFBm1lcmdlZAJfMQIBXwkAzAgCCQC6CQIFBmJwUHJvZAIBXwUDbmlsAgE6BAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwQ3JhZnQIBQZtZXJnZWQCXzIFBU1VTFQ4BQNuaWwFA25pbAkAlAoCBQNuaWwJAJUKAwUGcmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0AWkBEXNldFdhcmVob3VzZU9yZGVyAgtuZXdPcmRlclN0cgtsYW5kQXNzZXRJZAQEdXNlcggFAWkMb3JpZ2luQ2FsbGVyBARhZGRyCQClCAEFBHVzZXIEBnJlc3VsdAMJAQIhPQIFBHVzZXIFDHJlc3RDb250cmFjdAkBDGNoZWNrQmxvY2tlZAAHBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMDCQECIT0CBQR1c2VyBQxyZXN0Q29udHJhY3QJAQIhPQIFBW93bmVyBQRhZGRyBwkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQIbmV3T3JkZXIJALwJAgULbmV3T3JkZXJTdHICAToEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQHd2hUb3RhbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFCHZvbFRvdGFsBAZvcmRLZXkJAQ5rZXlPcmRlckJ5TGFuZAEFC2xhbmRBc3NldElkBApjdXJyZW50T3JkCQEIZ2V0T3JkZXIBBQZvcmRLZXkEAXoJAQtzZXRJbnRlcm5hbAMFCWN1cnJlbnRXaAUKY3VycmVudE9yZAUIbmV3T3JkZXIEC2J1eVZvbFNhbGRvCAUBegJfNAQMc2VsbFZvbFNhbGRvCAUBegJfNQQKd2hPY2N1cGllZAgFAXoCXzcECHdoTG9ja2VkCQBkAgULYnV5Vm9sU2FsZG8FDHNlbGxWb2xTYWxkbwQGd2hGcmVlCQBlAgkAZQIFB3doVG90YWwFCndoT2NjdXBpZWQFCHdoTG9ja2VkAwkAZgIAAAUGd2hGcmVlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgITQXR0ZW1wdCB0byByZXNlcnZlIAkApAMBBQtidXlWb2xTYWxkbwIbIHNwYWNlIGZvciBidXkgb3JkZXJzLCBhbmQgCQCkAwEFDHNlbGxWb2xTYWxkbwIlIHNwYWNlIGZvciBzZWxsIG9yZGVycyAoYW5kIG9jY3VwaWVkPQkApAMBBQp3aE9jY3VwaWVkAh8pLCBsZWFkcyB0byBuZWdhdGl2ZSBmcmVlIHNwYWNlBAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQC5CQIIBQF6Al8xAgFfCQDMCAIJALkJAggFAXoCXzICAV8JAMwIAgkAugkCCAUBegJfMwIBXwkAzAgCCQCkAwEFCHdoTG9ja2VkBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAh1c2RTYWxkbwgFAXoCXzYEB2FjdGlvbnMDCQBmAgUIdXNkU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQh1c2RTYWxkbwkAAgEJAKwCAgISUGF5bWVudCBuZWVkZWQgaXMgCQCkAwEFCHVzZFNhbGRvCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3T3JkZXJTdHIFA25pbAMJAAACBQh1c2RTYWxkbwAAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3T3JkZXJTdHIFA25pbAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECEk5vIHBheW1lbnRzIG5lZWRlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQVvd25lcgkBAS0BBQh1c2RTYWxkbwULdXNkdEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUGb3JkS2V5BQtuZXdPcmRlclN0cgUDbmlsCQCUCgIFB2FjdGlvbnMJAJQKAgUGcmVzdWx0BQZ3aFNhdmUBaQEUYWNjZXB0V2FyZWhvdXNlT3JkZXIDCmJwT3JkZXJTdHILbGFuZEFzc2V0SWQLZHVja0Fzc2V0SWQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBApjYWxsZXJBZGRyCQClCAEFBmNhbGxlcgQRc3Rha2VkRHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCmNhbGxlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFEXN0YWtlZER1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIFEXN0YWtlZER1Y2tBc3NldElkBQtkdWNrQXNzZXRJZAkAAgEJAKwCAgkArAICCQCsAgICFFlvdXIgc3Rha2VkIGR1Y2sgaXMgBRFzdGFrZWREdWNrQXNzZXRJZAINLCBidXQgcGFzc2VkIAULZHVja0Fzc2V0SWQECWxhbmRBc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFCWxhbmRBc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQJbGFuZE93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUJbGFuZEFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAAACBQlsYW5kT3duZXIFCmNhbGxlckFkZHIJAAIBAh5Zb3UgY2Fubm90IHRyYWRlIHdpdGggeW91cnNlbGYEDGJwT3JkZXJQYXJ0cwkAvAkCBQpicE9yZGVyU3RyAgE6AwkBAiE9AgkAkAMBBQxicE9yZGVyUGFydHMAAwkAAgECMmJwT3JkZXJTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhicE9yZFJlcwkAtQkCCQCRAwIFDGJwT3JkZXJQYXJ0cwAAAgFfBAhicE9yZE1hdAkAtQkCCQCRAwIFDGJwT3JkZXJQYXJ0cwABAgFfBAlicE9yZFByb2QDCQAAAgkAkQMCBQxicE9yZGVyUGFydHMAAgIABQNuaWwJALwJAgkAkQMCBQxicE9yZGVyUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIYnBPcmRSZXMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhicE9yZE1hdAUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQPY3VycldoTG9ja2VkVm9sCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWJwS2V5CQERa2V5QmFj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Y2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUIbmV3QnBTdHIFA25pbAUDbmlsBA9kdWNrU3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFBnhwU2hvcAgFAXADXzEzBQVNVUxUOAUDbmlsBQNuaWwEDmFjY1N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQWNjU3RhdHMJAMwIAgUJbGFuZE93bmVyCQDMCAIJAGsDBQZ4cFNob3AIBQFwA18xMwUFTVVMVDgFA25pbAUDbmlsBAdhY3Rpb25zCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3V2hPcmRTdHIFA25pbAQNdXNkV2gyQnBTYWxkbwgFAXACXzUECGFjdGlvbnMxAwkAZgIFDXVzZFdoMkJwU2FsZG8AAAQLdXNkV2gyQnBGZWUJAGsDCAUBcAJfNQUKQVVDVElPTkZFRQUFTVVMVDYECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUKY2FsbGVyQWRkcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQMJAQlpc0RlZmluZWQBBQVyZWZCeQkAzQgCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBlAggFAXACXzUJAGgCAAMFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQt1c2RXaDJCcEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFBXJlZkJ5BQt1c2RXaDJCcEZlZQULdXNkdEFzc2V0SWQJAM0IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAGUCCAUBcAJfNQkAaAIAAwULdXNkV2gyQnBGZWUFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAUHYWN0aW9ucwQNdXNkQnAyV2hTYWxkbwgFAXACXzYECGFjdGlvbnMyAwkAZgIFDXVzZEJwMldoU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQ11c2RCcDJXaFNhbGRvCQACAQkArAICAhJQYXltZW50IG5lZWRlZCBpcyAJAKQDAQUNdXNkQnAyV2hTYWxkbwMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUDYW10CQACAQkArAICAhtQYXltZW50IHNob3VsZCBiZSBhdCBsZWFzdCAJAKQDAQUOTUlOU0hPUFBBWU1FTlQEC3VzZEJwMldoRmVlCQBrAwgFAXACXzYFCkFVQ1RJT05GRUUFBU1VTFQ2BAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCWxhbmRPd25lcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQMJAQlpc0RlZmluZWQBBQVyZWZCeQkAzQgCCQDNCAIJAM0IAgUIYWN0aW9uczEJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWxhbmRPd25lcgkAZQIIBQFwAl82CQBoAgADBQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQVyZWZCeQULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkCQDNCAIJAM0IAgUIYWN0aW9uczEJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWxhbmRPd25lcgkAZQIIBQFwAl82CQBoAgADBQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkBQhhY3Rpb25zMQkAlAoCBQhhY3Rpb25zMgkAlwoFBQxwcm9sb2dSZXN1bHQFBndoU2F2ZQUGYnBTYXZlBQ9kdWNrU3RhdHNSZXN1bHQFDmFjY1N0YXRzUmVzdWx0AWkBEHNlbGxQcm9kdWN0c1RvRVMBB2Ftb3VudHMEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBQQkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBBaXJwb3J0LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBAVlc0tleQkBDmtleUVzV2FyZWhvdXNlAAQIZXhpc3RTdHIJAKIIAQUFZXNLZXkEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAtQkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsCgEIbW92ZVByb2QCA2FjYwlyZWNpcGVTdHIEAWoIBQNhY2MCXzEECHF1YW50aXR5AwkAZgIJAJADAQUHYW1vdW50cwUBagkAkQMCBQdhbW91bnRzBQFqAAADCQBmAgAABQhxdWFudGl0eQkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQGcmVjaXBlCQC1CQIFCXJlY2lwZVN0cgIBXwMJAQIhPQIJAJADAQUGcmVjaXBlBQpSRUNJUEVTSVpFCQACAQkArAICAhdGYXRhbDogdW5rbm93biByZWNpcGU6IAUJcmVjaXBlU3RyBAltYXhBbW91bnQJAGgCBQ1FU01BWFBBQ0tBR0VTBQ5QUk9EVUNUUEtHU0laRQQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMFAWoAAAQGY2FuQnV5CQBlAgUJbWF4QW1vdW50BQtleGlzdEFtb3VudAMJAGYCBQhxdWFudGl0eQUGY2FuQnV5CQACAQkArAICCQCsAgIJAKwCAgIXV2FyZWhvdXNlIGNhbiBidXkgb25seSAJAKQDAQUGY2FuQnV5AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBagQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXVuaXRQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUJRVNCVVlDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFBAxicFByb2RBbW91bnQDCQBmAgkAkAMBBQhwcm9kTGlzdAUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFqAAADCQBmAgUIcXVhbnRpdHkFDGJwUHJvZEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFDGJwUHJvZEFtb3VudAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAWoJAJcKBQkAZAIFAWoAAQkAZAIIBQNhY2MCXzIJAGgCBQl1bml0UHJpY2UFCHF1YW50aXR5CQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFDGJwUHJvZEFtb3VudAUIcXVhbnRpdHkJAM0IAggFA2FjYwJfNAkApAMBCQBkAgULZXhpc3RBbW91bnQFCHF1YW50aXR5CQBkAggFA2FjYwJfNQkAaAIFCHRvdGFsTWF0BQhxdWFudGl0eQQGbWVyZ2VkCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCXCgUAAAAABQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhtb3ZlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAhuZXdCcFN0cgkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAugkCCAUGbWVyZ2VkAl8zAgFfBQNuaWwCAToEBmJwU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFCG5ld0JwU3RyBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFCnhwU2VsbFRvRXMIBQZtZXJnZWQCXzUJAGgCBQVNVUxUOAAKBQNuaWwFA25pbAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVzS2V5CQC5CQIIBQZtZXJnZWQCXzQCAV8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCAUGbWVyZ2VkAl8yBQt1c2R0QXNzZXRJZAUDbmlsCQCVCgMFBmJwU2F2ZQUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAQ91cGRhdGVFc1N0b3JhZ2UBCm5ld1N0b3JhZ2UDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUVzV2FyZWhvdXNlAAUKbmV3U3RvcmFnZQUDbmlsBQpuZXdTdG9yYWdlAI6BpKg=", "height": 2735094, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8krYeZAZurwDydaEFngzMomvEk1RpN61rcisAtrVupwY Next: 8NByfqanwCqdiaefVdpq4Zjij92Tj4hLAJLNhPphwPhV Diff:
OldNewDifferences
3131
3232 let o = 10000000
3333
34-let p = ["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_"]
34+let p = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
3535
3636 let q = 6
3737
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 10000
55
66 let b = 10000
77
88 let c = 10000
99
1010 let d = 10000
1111
1212 let e = "LAND"
1313
1414 let f = 6
1515
1616 let g = "Africa_F_Africa"
1717
1818 let h = 39637
1919
2020 let i = 3
2121
2222 let j = 4
2323
2424 let k = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
2525
2626 let l = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
2727
2828 let m = ["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"]
2929
3030 let n = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
3131
3232 let o = 10000000
3333
34-let p = ["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_"]
34+let p = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
3535
3636 let q = 6
3737
3838 let r = 7
3939
4040 let s = 11
4141
4242 let t = 10
4343
4444 let u = 0
4545
4646 let v = 1
4747
4848 let w = 2
4949
5050 let x = 3
5151
5252 let y = 4
5353
5454 let z = 0
5555
5656 let A = 3
5757
5858 let B = 0
5959
6060 let C = 1
6161
6262 let D = 2
6363
6464 let E = 3
6565
6666 func F (G) = ("nftOwner_" + G)
6767
6868
6969 func H (G) = ("stakedTime_" + G)
7070
7171
7272 func I (J) = ("accRefBy_" + J)
7373
7474
7575 func K (L) = ("stakedDuckByOwner_" + L)
7676
7777
7878 func M (N) = ("backPack_" + N)
7979
8080
8181 func O (N) = ("duckLocation_" + N)
8282
8383
8484 func P () = "contractsBlocked"
8585
8686
8787 func Q (R) = ("landOrder_" + R)
8888
8989
9090 func S () = "emergencyWarehouseProducts"
9191
9292
9393 let T = 0
9494
9595 let U = 1
9696
9797 let V = 2
9898
9999 func W (X) = (parseIntValue(X[q]) * o)
100100
101101
102102 let Y = take(drop(this.bytes, 1), 1)
103103
104104 let Z = {
105105 let aa = Y
106106 if ((base58'2W' == aa))
107107 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
108108 else if ((base58'2T' == aa))
109109 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
110110 else throw("Unknown chain")
111111 }
112112
113113 let ab = {
114114 let aa = Y
115115 if ((base58'2W' == aa))
116116 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
117117 else if ((base58'2T' == aa))
118118 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
119119 else throw("Unknown chain")
120120 }
121121
122122 let ac = "__"
123123
124124 let ad = 1000000
125125
126126 let ae = 100000000
127127
128128 let af = 10000000000
129129
130130 let ag = 100000
131131
132132 let ah = [0, 1, 2, 3, 4, 5]
133133
134134 func ai (aj,ak) = valueOrErrorMessage(getString(aj, ak), makeString(["mandatory ", toString(aj), ".", ak, " is not defined"], ""))
135135
136136
137137 let al = 1
138138
139139 func am () = "%s__restConfig"
140140
141141
142142 func an () = "%s__restAddr"
143143
144144
145145 func ao (ap) = split_4C(ai(ap, am()), ac)
146146
147147
148148 func aq (ar,as) = valueOrErrorMessage(addressFromString(ar[as]), ("Rest cfg doesn't contain address at index " + toString(as)))
149149
150150
151151 let at = addressFromStringValue(valueOrElse(getString(this, an()), ab))
152152
153153 let ar = ao(at)
154154
155155 let au = aq(ar, al)
156156
157157 func av (aw) = {
158158 let aa = aw
159159 if ($isInstanceOf(aa, "String"))
160160 then {
161161 let ax = aa
162162 ax
163163 }
164164 else throw("fail to cast into String")
165165 }
166166
167167
168168 func ay (aw) = {
169169 let aa = aw
170170 if ($isInstanceOf(aa, "Int"))
171171 then {
172172 let az = aa
173173 az
174174 }
175175 else throw("fail to cast into Int")
176176 }
177177
178178
179179 func aA (aB,aC) = {
180180 let aD = pow(10, 0, aC, 0, 0, DOWN)
181181 let aE = toString((aB % aD))
182182 let aF = drop(toString(aD), (1 + size(aE)))
183183 (((toString((aB / aD)) + ".") + aF) + aE)
184184 }
185185
186186
187187 let aG = 10000000000
188188
189189 let aH = 200
190190
191191 let aI = 300
192192
193193 let aJ = 10000
194194
195195 func aK (aL,aM) = ((("factoryWhByContinentAndRes_" + aL) + "_") + toString(aM))
196196
197197
198198 let aN = 0
199199
200200 let aO = 1
201201
202202 let aP = 2
203203
204204 func aQ (aR) = {
205205 let aS = split(valueOrElse(getString(aR), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"), ":")
206206 [if ((size(split(aS[aN], "_")) == f))
207207 then aS[aN]
208208 else "0@0_0@0_0@0_0@0_0@0_0@0", if ((size(split(aS[aO], "_")) == f))
209209 then aS[aO]
210210 else "0@0_0@0_0@0_0@0_0@0_0@0", aS[aP]]
211211 }
212212
213213
214214 func aT (aU,aV,aW) = if (aW)
215215 then {
216216 let aX = if ((aU >= 0))
217217 then (((aU + aV) - 1) / aV)
218218 else -((((-(aU) + aV) - 1) / aV))
219219 (aX * ae)
220220 }
221221 else aU
222222
223223
224224 func aY (aZ,aM,aU,ba) = {
225225 let bb = aK(aZ, aM)
226226 let bc = valueOrElse(getInteger(bb), 0)
227227 let bd = if ((bc > aG))
228228 then 0
229229 else if (((bc + aU) > aG))
230230 then (aG - bc)
231231 else aU
232232 let be = (fraction(bd, ((aH * h) - fraction(((100 * bc) + (50 * bd)), h, aG)), af) + fraction((aU - bd), h, ae))
233233 let bf = (ba - (ba / 100))
234234 if (((bf * aU) > (be * ae)))
235235 then throw((((((((((("Actual price = " + toString(be)) + " / ") + toString(aU)) + " < minPrice = ") + toString(ba)) + ", (") + aZ) + ", ") + k[aM]) + ")"))
236236 else $Tuple2(IntegerEntry(bb, (bc + aU)), be)
237237 }
238238
239239
240240 func bg (aZ,bh,aU,bi) = {
241241 let bb = aK(aZ, bh)
242242 let bc = valueOrElse(getInteger(bb), 0)
243243 let bj = if ((bc > aG))
244244 then min([aU, (bc - aG)])
245245 else 0
246246 let bk = min([bc, (aU - bj)])
247247 let bl = (bk + bj)
248248 let bm = (fraction(bk, ((aI * h) - fraction(((100 * bc) - (50 * bk)), h, aG)), af) + fraction(bj, (2 * h), ae))
249249 let bn = (bi + (bi / 100))
250250 if (((bm * ae) > (bn * bl)))
251251 then throw((((((((((("Actual price = " + toString(bm)) + " / ") + toString(bl)) + " > maxPrice = ") + toString(bi)) + ", (") + aZ) + ", ") + l[bh]) + ")"))
252252 else $Tuple3(IntegerEntry(bb, (bc - bl)), bm, bl)
253253 }
254254
255255
256256 func bo (bp) = {
257257 let aS = split(valueOrElse(getString(au, bp), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
258258 [toString(valueOrElse(parseInt(aS[B]), 0)), if ((size(split(aS[C], "_")) == f))
259259 then aS[C]
260260 else "0_0_0_0_0_0", if ((size(split(aS[D], "_")) == f))
261261 then aS[D]
262262 else "0_0_0_0_0_0", aS[E]]
263263 }
264264
265265
266266 func bq () = if (valueOrElse(getBoolean(au, P()), false))
267267 then throw("Contracts are under maintenance")
268268 else unit
269269
270270
271271 func br () = ay(invoke(au, "saveLastTx", nil, nil))
272272
273273
274274 func bs (bt,bu) = {
275275 let bv = bt._1
276276 let bw = bt._8
277277 let bx = split(bu, "@")
278278 if ((size(bx) != 2))
279279 then throw("Incorrect order format, should be amount@price")
280280 else {
281281 let by = parseIntValue(bx[0])
282282 let bz = parseIntValue(bx[1])
283283 let bA = fraction(by, bz, ae)
284284 let bB = aT(by, t, bw)
285285 let bC = if ((size(bt._6) > bv))
286286 then parseIntValue(bt._6[bv])
287287 else 0
288288 let bD = split(if ((size(bt._7) > bv))
289289 then bt._7[bv]
290290 else "0@0", "@")
291291 let bE = parseIntValue(bD[0])
292292 let bF = parseIntValue(bD[1])
293293 if (if ((0 > bF))
294294 then true
295295 else (0 > bz))
296296 then throw("Price can't be negative")
297297 else {
298298 let bG = fraction(bE, bF, ae)
299299 if ((by == 0))
300300 then if ((bE > 0))
301301 then $Tuple9((bv + 1), (bt._2 :+ toString(bC)), bt._3, bt._4, (bt._5 - bG), bt._6, bt._7, bw, (bt._9 + aT(bC, t, bw)))
302302 else $Tuple9((bv + 1), (bt._2 :+ toString((bC - bE))), bt._3, bt._4, bt._5, bt._6, bt._7, bw, (bt._9 + aT((bC - bE), t, bw)))
303303 else if ((by > 0))
304304 then if ((0 > bE))
305305 then $Tuple9((bv + 1), (bt._2 :+ toString((bC - bE))), (bt._3 + bB), bt._4, (bt._5 + bA), bt._6, bt._7, bw, aT((bC - bE), t, bw))
306306 else $Tuple9((bv + 1), (bt._2 :+ toString(bC)), (bt._3 + bB), bt._4, ((bt._5 + bA) - bG), bt._6, bt._7, bw, aT(bC, t, bw))
307307 else if ((0 > bE))
308308 then {
309309 let bH = (bE - by)
310310 if ((0 > (bC - bH)))
311311 then throw((((("Attempt to take " + toString(bH)) + " from warehouse, but only ") + toString(bC)) + " available"))
312312 else $Tuple9((bv + 1), (bt._2 :+ toString((bC - bH))), bt._3, (bt._4 - bB), bt._5, bt._6, bt._7, bw, aT((bC - bH), t, bw))
313313 }
314314 else if ((0 > (bC + by)))
315315 then throw((((("Attempt to take " + toString(-(by))) + " from warehouse, but only ") + toString(bC)) + " available"))
316316 else $Tuple9((bv + 1), (bt._2 :+ toString((bC + by))), bt._3, (bt._4 - bB), (bt._5 - bG), bt._6, bt._7, bw, aT((bC + by), t, bw))
317317 }
318318 }
319319 }
320320
321321
322322 func bI (bJ,bK,bL) = {
323323 let bM = split(bJ[v], "_")
324324 let bN = split(bJ[w], "_")
325325 let bO = if ((bJ[x] == ""))
326326 then nil
327327 else split_4C(bJ[x], "_")
328328 let bP = split(bK[aN], "_")
329329 let bQ = split(bK[aO], "_")
330330 let bR = if ((bK[aP] == ""))
331331 then nil
332332 else split_4C(bK[aP], "_")
333333 if ((size(bL) != 3))
334334 then throw("newOrderStr should contain exactly 2 ':' separators")
335335 else {
336336 let bS = split(bL[0], "_")
337337 let bT = split(bL[1], "_")
338338 let bU = if ((bL[2] == ""))
339339 then nil
340340 else split_4C(bL[2], "_")
341341 if ((size(bS) != f))
342342 then throw("All 6 resources should be passed")
343343 else if ((size(bT) != f))
344344 then throw("All 6 materials should be passed")
345345 else {
346346 let bV = {
347347 let bW = bS
348348 let bX = size(bW)
349349 let bY = $Tuple9(0, nil, 0, 0, 0, bM, bP, false, 0)
350350 func bZ (ca,cb) = if ((cb >= bX))
351351 then ca
352352 else bs(ca, bW[cb])
353353
354354 func cc (ca,cb) = if ((cb >= bX))
355355 then ca
356356 else throw("List size exceeds 6")
357357
358358 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
359359 }
360360 let bl = {
361361 let bW = bT
362362 let bX = size(bW)
363363 let bY = $Tuple9(0, nil, bV._3, bV._4, bV._5, bN, bQ, false, bV._9)
364364 func cd (ca,cb) = if ((cb >= bX))
365365 then ca
366366 else bs(ca, bW[cb])
367367
368368 func ce (ca,cb) = if ((cb >= bX))
369369 then ca
370370 else throw("List size exceeds 6")
371371
372372 ce(cd(cd(cd(cd(cd(cd(bY, 0), 1), 2), 3), 4), 5), 6)
373373 }
374374 let aS = if ((size(bU) != 0))
375375 then {
376376 let bW = bU
377377 let bX = size(bW)
378378 let bY = $Tuple9(0, nil, bl._3, bl._4, bl._5, bO, bR, true, bl._9)
379379 func cf (ca,cb) = if ((cb >= bX))
380380 then ca
381381 else bs(ca, bW[cb])
382382
383383 func cg (ca,cb) = if ((cb >= bX))
384384 then ca
385385 else throw("List size exceeds 50")
386386
387387 cg(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(bY, 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)
388388 }
389389 else $Tuple9(0, bO, bl._3, bl._4, bl._5, bO, bR, true, bl._9)
390390 $Tuple7(bV._2, bl._2, aS._2, aS._3, aS._4, aS._5, aS._9)
391391 }
392392 }
393393 }
394394
395395
396396 func ch (bt,ci) = {
397397 let bv = bt._7
398398 let bw = bt._12
399399 let cj = split(ci, "@")
400400 if ((size(cj) != 2))
401401 then throw("Incorrect order format, should be amount@price")
402402 else {
403403 let ck = parseIntValue(cj[0])
404404 let cl = parseIntValue(cj[1])
405405 if ((0 > cl))
406406 then throw("Price can't be negative")
407407 else {
408408 let cm = fraction(ck, cl, ae)
409409 let cn = if ((size(bt._8) > bv))
410410 then parseIntValue(bt._8[bv])
411411 else 0
412412 let bC = if ((size(bt._9) > bv))
413413 then parseIntValue(bt._9[bv])
414414 else 0
415415 let co = if ((size(bt._10) > bv))
416416 then bt._10[bv]
417417 else "0@0"
418418 let cp = split(co, "@")
419419 let cq = parseIntValue(cp[0])
420420 let cr = parseIntValue(cp[1])
421421 if (if ((ck != 0))
422422 then (cl != cr)
423423 else false)
424424 then throw(((((("Prices of " + bt._11[bv]) + " don't match! WH price=") + toString(cr)) + ", your price=") + toString(cl)))
425425 else {
426426 let cs = fraction(cq, cr, ae)
427427 let ct = aT(ck, t, bw)
428428 if ((ck == 0))
429429 then $Tuple13((bt._1 :+ toString(bC)), (bt._2 :+ co), (bt._3 :+ toString(cn)), bt._4, bt._5, bt._6, (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, bt._13)
430430 else if ((ck > 0))
431431 then if ((0 > cq))
432432 then if ((ck > -(cq)))
433433 then throw(((((("Attempt to buy " + toString(ck)) + " of ") + bt._11[bv]) + ", but warehouse only sells ") + toString(-(cq))))
434434 else $Tuple13((bt._1 :+ toString(bC)), (bt._2 :+ ((toString((cq + ck)) + "@") + toString(cr))), (bt._3 :+ toString((cn + ck))), (bt._4 + ct), bt._5, (bt._6 + cm), (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, (bt._13 + (if (bw)
435435 then (ck * ae)
436436 else ck)))
437437 else throw((("Attempt to buy " + bt._11[bv]) + " while warehouse doesn't sell it"))
438438 else if ((cq > 0))
439439 then if ((-(ck) > cq))
440440 then throw(((((("Attempt to sell " + toString(-(ck))) + " of ") + bt._11[bv]) + ", but warehouse only buys ") + toString(cq)))
441441 else if ((-(ck) > cn))
442442 then throw(((((("Attempt to sell " + toString(-(ck))) + ", but you only have ") + toString(cn)) + " of ") + bt._11[bv]))
443443 else $Tuple13((bt._1 :+ toString((bC - ck))), (bt._2 :+ ((toString((cq + ck)) + "@") + toString(cr))), (bt._3 :+ toString((cn + ck))), (bt._4 - ct), (bt._5 - cm), bt._6, (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, (bt._13 - (if (bw)
444444 then (ck * ae)
445445 else ck)))
446446 else throw((("Attempt to sell " + bt._11[bv]) + " while warehouse doesn't buy it"))
447447 }
448448 }
449449 }
450450 }
451451
452452
453453 @Callable(cu)
454454 func recalcLockedVolumeREADONLY (R,cv) = {
455455 let bK = aQ(Q(R))
456456 let cw = bI(cv, bK, bK)
457457 $Tuple2(nil, (cw._4 + cw._5))
458458 }
459459
460460
461461
462462 @Callable(cu)
463463 func constructorV1 (cx) = if ((cu.caller != this))
464464 then throw("Permission denied")
465465 else [StringEntry(an(), cx)]
466466
467467
468468
469469 @Callable(cu)
470470 func sellResources (cy,cz) = {
471471 let cA = br()
472472 let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
473473 if ((size(cu.payments) != 0))
474474 then throw("sellResources doesn't require any payments")
475475 else {
476476 let cB = split(valueOrElse(getString(au, O(N)), g), "_")
477477 if ((cB[U] != "F"))
478478 then throw(("Duck location type should be Factory, but is " + cB[U]))
479479 else {
480480 let aZ = cB[V]
481481 let cC = bo(M(N))
482482 let cD = split(cC[C], "_")
483483 func cE (bt,bv) = if ((cy[bv] > parseIntValue(cD[bv])))
484484 then throw(((((("You have " + cD[bv]) + " of ") + k[bv]) + ", but tried to sell ") + toString(cy[bv])))
485485 else if ((0 > cy[bv]))
486486 then throw(((("You tried to sell negative amount of " + k[bv]) + ": ") + toString(cy[bv])))
487487 else if ((cy[bv] > 0))
488488 then {
489489 let cF = aY(aZ, bv, cy[bv], cz[bv])
490490 $Tuple4((bt._1 :+ cF._1), (bt._2 :+ toString((parseIntValue(cD[bv]) - cy[bv]))), (bt._3 + cF._2), (bt._4 + cy[bv]))
491491 }
492492 else $Tuple4(bt._1, (bt._2 :+ cD[bv]), bt._3, bt._4)
493493
494494 let cG = {
495495 let bW = ah
496496 let bX = size(bW)
497497 let bY = $Tuple4(nil, nil, 0, 0)
498498 func bZ (ca,cb) = if ((cb >= bX))
499499 then ca
500500 else cE(ca, bW[cb])
501501
502502 func cc (ca,cb) = if ((cb >= bX))
503503 then ca
504504 else throw("List size exceeds 6")
505505
506506 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
507507 }
508508 let cH = makeString([cC[B], makeString(cG._2, "_"), cC[D], cC[E]], ":")
509509 let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
510510 let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._4, ae)], nil))
511511 $Tuple2((cG._1 :+ ScriptTransfer(cu.caller, cG._3, Z)), $Tuple3(cI, cA, cJ))
512512 }
513513 }
514514 }
515515
516516
517517
518518 @Callable(cu)
519519 func buyMaterials (cy,cK) = {
520520 let cA = br()
521521 let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
522522 if ((size(cu.payments) != 1))
523523 then throw("exactly 1 payment must be attached")
524524 else {
525525 let cL = cu.payments[0]
526526 let cM = cL.amount
527527 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
528528 if ((cN != Z))
529529 then throw("USDT payments only!")
530530 else {
531531 let cB = split(valueOrElse(getString(au, O(N)), g), "_")
532532 if ((cB[U] != "F"))
533533 then throw(("Duck location type should be Factory, but is " + cB[U]))
534534 else {
535535 let aZ = cB[V]
536536 let cC = bo(M(N))
537537 let cO = split(cC[D], "_")
538538 func cP (bt,bv) = if ((0 > cy[bv]))
539539 then throw(((("You tried to buy negative amount of " + l[bv]) + ": ") + toString(cy[bv])))
540540 else if ((cy[bv] > 0))
541541 then {
542542 let cF = bg(aZ, bv, cy[bv], cK[bv])
543543 $Tuple4((bt._1 :+ cF._1), (bt._2 :+ toString((parseIntValue(cO[bv]) + cF._3))), (bt._3 + cF._2), (bt._4 + cy[bv]))
544544 }
545545 else $Tuple4(bt._1, (bt._2 :+ cO[bv]), bt._3, bt._4)
546546
547547 let cG = {
548548 let bW = ah
549549 let bX = size(bW)
550550 let bY = $Tuple4(nil, nil, 0, 0)
551551 func bZ (ca,cb) = if ((cb >= bX))
552552 then ca
553553 else cP(ca, bW[cb])
554554
555555 func cc (ca,cb) = if ((cb >= bX))
556556 then ca
557557 else throw("List size exceeds 6")
558558
559559 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
560560 }
561561 if ((cG._3 > cM))
562562 then throw(((("Insufficient payment! Attached=" + toString(cM)) + ", required=") + toString(cG._3)))
563563 else {
564564 let cH = makeString([cC[B], cC[C], makeString(cG._2, "_"), cC[E]], ":")
565565 let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
566566 let ap = if (((cM - cG._3) > 0))
567567 then [ScriptTransfer(cu.caller, (cM - cG._3), Z)]
568568 else nil
569569 let cQ = (cG._3 / 100)
570570 let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._4, ae)], nil))
571571 $Tuple2(((cG._1 ++ ap) :+ ScriptTransfer(at, cQ, Z)), $Tuple3(cI, cA, cJ))
572572 }
573573 }
574574 }
575575 }
576576 }
577577
578578
579579
580580 @Callable(cu)
581581 func exchangeResources (cy) = {
582582 let cA = br()
583583 let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
584584 if ((size(cu.payments) != 1))
585585 then throw("exactly 1 payment must be attached")
586586 else {
587587 let cL = cu.payments[0]
588588 let cM = cL.amount
589589 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
590590 if ((cN != Z))
591591 then throw("USDT payments only!")
592592 else {
593593 let cB = split(valueOrElse(getString(au, O(N)), g), "_")
594594 if ((cB[U] != "F"))
595595 then throw(("Duck location type should be Factory, but is " + cB[U]))
596596 else {
597597 let aZ = cB[V]
598598 let cC = bo(M(N))
599599 let cD = split(cC[C], "_")
600600 let cO = split(cC[D], "_")
601601 func cR (bt,bv) = {
602602 let bb = aK(aZ, bv)
603603 let bc = valueOrElse(getInteger(bb), 0)
604604 let cS = cy[bv]
605605 if ((cS > parseIntValue(cD[bv])))
606606 then throw(((((("You have " + cD[bv]) + " of ") + k[bv]) + ", but tried to exchange ") + toString(cS)))
607607 else if ((0 > cS))
608608 then throw(((("You tried to exchange negative amount of " + k[bv]) + ": ") + toString(cS)))
609609 else if ((cS > 0))
610610 then $Tuple5((bt._1 :+ toString((parseIntValue(cD[bv]) - cS))), (bt._2 :+ toString((parseIntValue(cO[bv]) + cS))), (bt._3 + fraction(cS, h, ae)), (bt._4 :+ IntegerEntry(bb, bc)), (bt._5 + cS))
611611 else $Tuple5((bt._1 :+ cD[bv]), (bt._2 :+ cO[bv]), bt._3, bt._4, bt._5)
612612 }
613613
614614 let cG = {
615615 let bW = ah
616616 let bX = size(bW)
617617 let bY = $Tuple5(nil, nil, 0, nil, 0)
618618 func bZ (ca,cb) = if ((cb >= bX))
619619 then ca
620620 else cR(ca, bW[cb])
621621
622622 func cc (ca,cb) = if ((cb >= bX))
623623 then ca
624624 else throw("List size exceeds 6")
625625
626626 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
627627 }
628628 if ((cG._3 > cM))
629629 then throw(((("Insufficient payment! Attached=" + toString(cM)) + ", required=") + toString(cG._3)))
630630 else {
631631 let cH = makeString([cC[B], makeString(cG._1, "_"), makeString(cG._2, "_"), cC[E]], ":")
632632 let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
633633 let ap = if (((cM - cG._3) > 0))
634634 then [ScriptTransfer(cu.caller, (cM - cG._3), Z)]
635635 else nil
636636 let cQ = (cG._3 / 100)
637637 let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._5, ae)], nil))
638638 $Tuple2(((ap ++ cG._4) :+ ScriptTransfer(at, cQ, Z)), $Tuple3(cI, cA, cJ))
639639 }
640640 }
641641 }
642642 }
643643 }
644644
645645
646646
647647 @Callable(cu)
648648 func craftGoods (cT,cU) = {
649649 let cA = br()
650650 if ((size(cu.payments) != 1))
651651 then throw("exactly 1 payment must be attached")
652652 else {
653653 let cL = cu.payments[0]
654654 let cM = cL.amount
655655 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
656656 if ((cN != Z))
657657 then throw("USDT payments only!")
658658 else if ((cM != ad))
659659 then throw("exactly 1 USDT must be attached as payment")
660660 else if ((0 >= cU))
661661 then throw("Quantity should be positive")
662662 else {
663663 let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
664664 let cB = split(valueOrElse(getString(au, O(N)), g), "_")
665665 if ((cB[U] != "M"))
666666 then throw(("Duck location type should be Manufactory, but is " + cB[U]))
667667 else {
668668 let cV = cB[T]
669669 let cC = bo(M(N))
670670 let cO = split(cC[D], "_")
671671 if (if ((0 > cT))
672672 then true
673673 else (cT >= size(p)))
674674 then throw(("Unknown product idx=" + toString(cT)))
675675 else {
676676 let X = split(p[cT], "_")
677677 if ((size(X) != s))
678678 then throw(("Fatal: unknown recipe: " + p[cT]))
679679 else {
680680 let cW = parseIntValue(X[r])
681681 if ((n[cW] != cV))
682682 then throw(((("This product is available in " + n[cW]) + ", but you are in ") + cV))
683683 else {
684684 let cX = if ((cC[E] == ""))
685685 then nil
686686 else split_4C(cC[E], "_")
687687 func cY (bt,cZ) = {
688688 let az = bt._2
689689 let da = if ((size(cX) > az))
690690 then cX[az]
691691 else "0"
692692 let db = parseIntValue(da)
693693 let aU = (cU * t)
694694 let dc = if ((az == cT))
695695 then toString((db + aU))
696696 else da
697697 $Tuple2((bt._1 :+ dc), (az + 1))
698698 }
699699
700700 let dd = ( let bW = p
701701 let bX = size(bW)
702702 let bY = $Tuple2(nil, 0)
703703 func bZ (ca,cb) = if ((cb >= bX))
704704 then ca
705705 else cY(ca, bW[cb])
706706
707707 func cc (ca,cb) = if ((cb >= bX))
708708 then ca
709709 else throw("List size exceeds 50")
710710
711711 cc(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bY, 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))._1
712712 func de (bt,bv) = {
713713 let df = ((parseIntValue(X[bv]) * ad) * cU)
714714 let dg = parseIntValue(cO[bv])
715715 if ((df > dg))
716716 then throw(((((((("You have " + aA(dg, 8)) + " of ") + l[bv]) + ", but recipe requires ") + aA(df, 8)) + " for quantity ") + toString(cU)))
717717 else if ((df > 0))
718718 then $Tuple2((bt._1 :+ toString((dg - df))), (bt._2 + df))
719719 else $Tuple2((bt._1 :+ cO[bv]), bt._2)
720720 }
721721
722722 let cG = {
723723 let bW = ah
724724 let bX = size(bW)
725725 let bY = $Tuple2(nil, 0)
726726 func cd (ca,cb) = if ((cb >= bX))
727727 then ca
728728 else de(ca, bW[cb])
729729
730730 func ce (ca,cb) = if ((cb >= bX))
731731 then ca
732732 else throw("List size exceeds 6")
733733
734734 ce(cd(cd(cd(cd(cd(cd(bY, 0), 1), 2), 3), 4), 5), 6)
735735 }
736736 let cH = makeString([cC[B], cC[C], makeString(cG._1, "_"), makeString_2C(dd, "_")], ":")
737737 let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
738738 let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(b, cG._2, ae)], nil))
739739 $Tuple2(nil, $Tuple3(cI, cA, cJ))
740740 }
741741 }
742742 }
743743 }
744744 }
745745 }
746746 }
747747
748748
749749
750750 @Callable(cu)
751751 func setWarehouseOrder (dh,R) = {
752752 let di = cu.originCaller
753753 let J = toString(di)
754754 let cI = if ((di != at))
755755 then bq()
756756 else false
757757 let dj = value(assetInfo(fromBase58String(R)))
758758 if (!(isDefined(getInteger(au, H(R)))))
759759 then throw((("NFT " + dj.name) + " is not staked"))
760760 else {
761761 let dk = valueOrErrorMessage(getString(au, F(R)), (("NFT " + dj.name) + " is orphaned"))
762762 if (if ((di != at))
763763 then (dk != J)
764764 else false)
765765 then throw((e + " is not yours"))
766766 else {
767767 let dl = split_4C(dh, ":")
768768 let cv = av(invoke(au, "getWarehouseREADONLY", [R], nil))
769769 let bJ = split_4C(cv, ":")
770770 let dm = split(bJ[y], "_")
771771 let dn = parseIntValue(dm[A])
772772 let aR = Q(R)
773773 let bK = aQ(aR)
774774 let cw = bI(bJ, bK, dl)
775775 let do = cw._4
776776 let dp = cw._5
777777 let dq = cw._7
778778 let dr = (do + dp)
779779 let ds = ((dn - dq) - dr)
780780 if ((0 > ds))
781781 then throw((((((("Attempt to reserve " + toString(do)) + " space for buy orders, and ") + toString(dp)) + " space for sell orders (and occupied=") + toString(dq)) + "), leads to negative free space"))
782782 else {
783783 let dt = makeString_2C([bJ[u], makeString(cw._1, "_"), makeString(cw._2, "_"), makeString_2C(cw._3, "_"), toString(dr)], ":")
784784 let du = av(invoke(au, "saveWarehouse", [dt, R], nil))
785785 let dv = cw._6
786786 let dw = if ((dv > 0))
787787 then if ((size(cu.payments) != 1))
788788 then throw("exactly 1 payment must be attached")
789789 else {
790790 let cL = cu.payments[0]
791791 let cM = cL.amount
792792 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
793793 if ((cN != Z))
794794 then throw("USDT payments only!")
795795 else if ((cM != dv))
796796 then throw(("Payment needed is " + toString(dv)))
797797 else [StringEntry(aR, dh)]
798798 }
799799 else if ((dv == 0))
800800 then if ((size(cu.payments) != 0))
801801 then throw("No payments needed")
802802 else [StringEntry(aR, dh)]
803803 else if ((size(cu.payments) != 0))
804804 then throw("No payments needed")
805805 else [ScriptTransfer(addressFromStringValue(dk), -(dv), Z), StringEntry(aR, dh)]
806806 $Tuple2(dw, $Tuple2(cI, du))
807807 }
808808 }
809809 }
810810 }
811811
812812
813813
814814 @Callable(cu)
815815 func acceptWarehouseOrder (dx,R,N) = {
816816 let cA = br()
817817 let dy = cu.originCaller
818818 let dz = toString(dy)
819819 let dA = valueOrErrorMessage(getString(au, K(dz)), "You don't have a duck staked")
820820 let cB = valueOrElse(getString(au, O(dA)), g)
821821 let dB = split(value(cB), "_")
822822 if ((dB[U] != "L"))
823823 then throw((("Duck location type is " + dB[U]) + ", but should be L"))
824824 else if ((dA != N))
825825 then throw(((("Your staked duck is " + dA) + ", but passed ") + N))
826826 else {
827827 let dC = value(assetInfo(fromBase58String(R)))
828828 if (!(isDefined(getInteger(au, H(R)))))
829829 then throw((("NFT " + dC.name) + " is not staked"))
830830 else {
831831 let dD = valueOrErrorMessage(getString(au, F(R)), (("NFT " + dC.name) + " is orphaned"))
832832 if ((dD == dz))
833833 then throw("You cannot trade with yourself")
834834 else {
835835 let dE = split_4C(dx, ":")
836836 if ((size(dE) != 3))
837837 then throw("bpOrderStr should contain exactly 2 ':' separators")
838838 else {
839839 let dF = split(dE[0], "_")
840840 let dG = split(dE[1], "_")
841841 let dH = if ((dE[2] == ""))
842842 then nil
843843 else split_4C(dE[2], "_")
844844 if ((size(dF) != f))
845845 then throw("All 6 resources should be passed")
846846 else if ((size(dG) != f))
847847 then throw("All 6 materials should be passed")
848848 else {
849849 let cv = av(invoke(au, "getWarehouseREADONLY", [R], nil))
850850 let bJ = split_4C(cv, ":")
851851 let bM = split(bJ[v], "_")
852852 let bN = split(bJ[w], "_")
853853 let bO = if ((bJ[x] == ""))
854854 then nil
855855 else split_4C(bJ[x], "_")
856856 let dI = parseIntValue(split(bJ[y], "_")[z])
857857 let bp = M(N)
858858 let cC = bo(bp)
859859 let dJ = split(cC[C], "_")
860860 let dK = split(cC[D], "_")
861861 let dL = if ((cC[E] == ""))
862862 then nil
863863 else split_4C(cC[E], "_")
864864 let aR = Q(R)
865865 let dM = aQ(aR)
866866 let dN = split(dM[aN], "_")
867867 let dO = split(dM[aO], "_")
868868 let dP = if ((dM[aP] == ""))
869869 then nil
870870 else split_4C(dM[aP], "_")
871871 let bV = {
872872 let bW = dF
873873 let bX = size(bW)
874874 let bY = $Tuple13(nil, nil, nil, 0, 0, 0, 0, dJ, bM, dN, k, false, 0)
875875 func bZ (ca,cb) = if ((cb >= bX))
876876 then ca
877877 else ch(ca, bW[cb])
878878
879879 func cc (ca,cb) = if ((cb >= bX))
880880 then ca
881881 else throw("List size exceeds 6")
882882
883883 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
884884 }
885885 let bl = {
886886 let bW = dG
887887 let bX = size(bW)
888888 let bY = $Tuple13(nil, nil, nil, bV._4, bV._5, bV._6, 0, dK, bN, dO, l, false, bV._13)
889889 func cd (ca,cb) = if ((cb >= bX))
890890 then ca
891891 else ch(ca, bW[cb])
892892
893893 func ce (ca,cb) = if ((cb >= bX))
894894 then ca
895895 else throw("List size exceeds 6")
896896
897897 ce(cd(cd(cd(cd(cd(cd(bY, 0), 1), 2), 3), 4), 5), 6)
898898 }
899899 let aS = if ((size(dH) != 0))
900900 then {
901901 let bW = dH
902902 let bX = size(bW)
903903 let bY = $Tuple13(nil, nil, nil, bl._4, bl._5, bl._6, 0, dL, bO, dP, m, true, bl._13)
904904 func cf (ca,cb) = if ((cb >= bX))
905905 then ca
906906 else ch(ca, bW[cb])
907907
908908 func cg (ca,cb) = if ((cb >= bX))
909909 then ca
910910 else throw("List size exceeds 50")
911911
912912 cg(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(bY, 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)
913913 }
914914 else $Tuple13(bO, dP, dL, bl._4, bl._5, bl._6, 0, dL, bO, dP, m, true, bl._13)
915915 let dQ = aS._4
916916 let dR = if ((0 > (dI - dQ)))
917917 then 0
918918 else (dI - dQ)
919919 let dt = makeString_2C([bJ[u], makeString(bV._1, "_"), makeString(bl._1, "_"), makeString_2C(aS._1, "_"), toString(dR)], ":")
920920 let dS = makeString_2C([makeString(bV._2, "_"), makeString(bl._2, "_"), makeString_2C(aS._2, "_")], ":")
921921 let dT = makeString_2C([cC[B], makeString(bV._3, "_"), makeString(bl._3, "_"), makeString_2C(aS._3, "_")], ":")
922922 let du = av(invoke(au, "saveWarehouse", [dt, R], nil))
923923 let dU = av(invoke(au, "updateBackpack", [N, dT], nil))
924924 let dV = ay(invoke(au, "updateDuckStats", [N, fraction(d, aS._13, ae)], nil))
925925 let dW = ay(invoke(au, "updateAccStats", [dD, fraction(d, aS._13, ae)], nil))
926926 let dw = [StringEntry(aR, dS)]
927927 let dX = aS._5
928928 let dY = if ((dX > 0))
929929 then {
930930 let dZ = fraction(aS._5, aJ, ad)
931931 let ea = I(dz)
932932 let eb = getString(au, ea)
933933 if (isDefined(eb))
934934 then (((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Z)) :+ ScriptTransfer(at, dZ, Z)) :+ ScriptTransfer(addressFromStringValue(value(eb)), dZ, Z))
935935 else ((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Z)) :+ ScriptTransfer(at, dZ, Z))
936936 }
937937 else dw
938938 let ec = aS._6
939939 let ed = if ((ec > 0))
940940 then if ((size(cu.payments) != 1))
941941 then throw("exactly 1 payment must be attached")
942942 else {
943943 let cL = cu.payments[0]
944944 let cM = cL.amount
945945 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
946946 if ((cN != Z))
947947 then throw("USDT payments only!")
948948 else if ((cM != ec))
949949 then throw(("Payment needed is " + toString(ec)))
950950 else if ((ag > cM))
951951 then throw(("Payment should be at least " + toString(ag)))
952952 else {
953953 let ee = fraction(aS._6, aJ, ad)
954954 let ea = I(dD)
955955 let eb = getString(au, ea)
956956 if (isDefined(eb))
957957 then (((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Z)) :+ ScriptTransfer(at, ee, Z)) :+ ScriptTransfer(addressFromStringValue(value(eb)), ee, Z))
958958 else ((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Z)) :+ ScriptTransfer(at, ee, Z))
959959 }
960960 }
961961 else if ((size(cu.payments) != 0))
962962 then throw("No payments needed")
963963 else dY
964964 $Tuple2(ed, $Tuple5(cA, du, dU, dV, dW))
965965 }
966966 }
967967 }
968968 }
969969 }
970970 }
971971
972972
973973
974974 @Callable(cu)
975975 func sellProductsToES (cy) = {
976976 let cA = br()
977977 if ((size(cu.payments) != 0))
978978 then throw("No payments needed")
979979 else {
980980 let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
981981 let cB = split(valueOrElse(getString(au, O(N)), g), "_")
982982 if ((cB[U] != "A"))
983983 then throw(("Duck location type should be Airport, but is " + cB[U]))
984984 else {
985985 let cC = bo(M(N))
986986 let cX = if ((cC[E] == ""))
987987 then nil
988988 else split_4C(cC[E], "_")
989989 let ef = S()
990990 let eg = getString(ef)
991991 let eh = if (isDefined(eg))
992992 then split(value(eg), "_")
993993 else nil
994994 func ei (bt,ej) = {
995995 let bv = bt._1
996996 let cU = if ((size(cy) > bv))
997997 then cy[bv]
998998 else 0
999999 if ((0 > cU))
10001000 then throw("Quantity cannot be negative")
10011001 else {
10021002 let X = split(ej, "_")
10031003 if ((size(X) != s))
10041004 then throw(("Fatal: unknown recipe: " + ej))
10051005 else {
10061006 let ek = (i * t)
10071007 let el = if ((size(eh) > bv))
10081008 then parseIntValue(eh[bv])
10091009 else 0
10101010 let em = (ek - el)
10111011 if ((cU > em))
10121012 then throw(((("Warehouse can buy only " + toString(em)) + " of ") + m[bv]))
10131013 else {
10141014 let en = W(X)
10151015 let eo = fraction((en * j), h, (ae * t))
10161016 let ep = if ((size(cX) > bv))
10171017 then parseIntValue(cX[bv])
10181018 else 0
10191019 if ((cU > ep))
10201020 then throw(((("You have only " + toString(ep)) + " of ") + m[bv]))
10211021 else $Tuple5((bv + 1), (bt._2 + (eo * cU)), (bt._3 :+ toString((ep - cU))), (bt._4 :+ toString((el + cU))), (bt._5 + (en * cU)))
10221022 }
10231023 }
10241024 }
10251025 }
10261026
10271027 let cG = {
10281028 let bW = p
10291029 let bX = size(bW)
10301030 let bY = $Tuple5(0, 0, nil, nil, 0)
10311031 func bZ (ca,cb) = if ((cb >= bX))
10321032 then ca
10331033 else ei(ca, bW[cb])
10341034
10351035 func cc (ca,cb) = if ((cb >= bX))
10361036 then ca
10371037 else throw("List size exceeds 50")
10381038
10391039 cc(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bY, 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)
10401040 }
10411041 let dT = makeString_2C([cC[B], cC[C], cC[D], makeString_2C(cG._3, "_")], ":")
10421042 let dU = av(invoke(au, "updateBackpack", [N, dT], nil))
10431043 let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(c, cG._5, (ae * 10))], nil))
10441044 $Tuple2([StringEntry(ef, makeString(cG._4, "_")), ScriptTransfer(cu.caller, cG._2, Z)], $Tuple3(dU, cA, cJ))
10451045 }
10461046 }
10471047 }
10481048
10491049
10501050
10511051 @Callable(cu)
10521052 func updateEsStorage (eq) = if ((cu.caller != au))
10531053 then throw("Permission denied")
10541054 else $Tuple2([StringEntry(S(), eq)], eq)
10551055
10561056

github/deemru/w8io/169f3d6 
212.48 ms