tx · 76cVVS89iDxMMpVJw42VMqWT7rkrwQwLppHpv91jWsba 3MvJDKBFzztnd7KCU78zgJ8qUuzVux4c9yw: -0.02600000 Waves 2022.10.24 15:07 [2286472] smart account 3MvJDKBFzztnd7KCU78zgJ8qUuzVux4c9yw > SELF 0.00000000 Waves
{ "type": 13, "id": "76cVVS89iDxMMpVJw42VMqWT7rkrwQwLppHpv91jWsba", "fee": 2600000, "feeAssetId": null, "timestamp": 1666613323339, "version": 2, "chainId": 84, "sender": "3MvJDKBFzztnd7KCU78zgJ8qUuzVux4c9yw", "senderPublicKey": "9gVuyFNzke49pnadJxJ312ZWhYudDhdcqP5hsm5pGQw6", "proofs": [ "4F59urdvweq66NzPgBvtVQ89madggRpZVgJtPCTTmERzpiA3hYQfgCXMuWHeFe2GonAYiCKP9qVqCQhG1YQsMhoV" ], "script": "base64:BgJCCAISAwoBCBIDCgEIEgYKBAgBAQgSBQoDCAEIEgUKAwgIARIECgIIARIDCgEIEgMKAQgSABIECgIIBBIECgIIBBIANAAJdW5kZWZpbmVkAgl1bmRlZmluZWQACXNlcGFyYXRvcgIBOwAQY29uZmlnQWRkcmVzc0tleQIGY29uZmlnABNjb2xsZWN0b3JBZGRyZXNzS2V5AhFjb2xsZWN0b3JfYWRkcmVzcwARaGlzdG9yeUFkZHJlc3NLZXkCD2hpc3RvcnlfYWRkcmVzcwAScGF5bWFrZXJBZGRyZXNzS2V5AhBwYXltYWtlcl9hZGRyZXNzAAlhZG1pbnNLZXkCBmFkbWlucwANY29uZmlnQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUQY29uZmlnQWRkcmVzc0tleQAQY29sbGVjdG9yQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUNY29uZmlnQWRkcmVzcwUTY29sbGVjdG9yQWRkcmVzc0tleQAOaGlzdG9yeUFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDWNvbmZpZ0FkZHJlc3MFEWhpc3RvcnlBZGRyZXNzS2V5AA9wYXltYWtlckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDWNvbmZpZ0FkZHJlc3MFEnBheW1ha2VyQWRkcmVzc0tleQEHaXNBZG1pbgEGY2FsbGVyBAZhZG1Sb3cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwUJYWRtaW5zS2V5AgADAwkAAAIFBmNhbGxlcgUEdGhpcwYJAQhjb250YWlucwIFBmFkbVJvdwkApQgBBQZjYWxsZXIGBwENZ2V0Q2hlY2tlcktleQEHY2hlY2tlcgkArAICAghjaGVja2VyXwUHY2hlY2tlcgEJaXNDaGVja2VyAQdjaGVja2VyBAhpc0V4aXN0cwkBCWlzRGVmaW5lZAEJAJsIAgUNY29uZmlnQWRkcmVzcwkBDWdldENoZWNrZXJLZXkBBQdjaGVja2VyBQhpc0V4aXN0cwAEVVNETgEgGGZ0QdDy2SHIR4lDSQpxrV4T1zujQWaCMAUlxPMvs9AACW1pbkFtb3VudACAreIEAAxmZWVOdW1lcmF0b3IABQAOZmVlRGVub21pbmF0b3IAZAAObWF4QmV0c09uUHJpY2UAAwANZmlyc3RFdmVudEtleQILZmlyc3RfZXZlbnQADGxhc3RFdmVudEtleQIKbGFzdF9ldmVudAAVZmlzcnRGaW5pc2hlZEV2ZW50S2V5AhRmaXJzdF9maW5pc2hlZF9ldmVudAAUbGFzdEZpbmlzaGVkRXZlbnRLZXkCE2xhc3RfZmluaXNoZWRfZXZlbnQAE2Zpc3J0QWN0aXZlRXZlbnRLZXkCEmZpcnN0X2FjdGl2ZV9ldmVudAASbGFzdEFjdGl2ZUV2ZW50S2V5AhFsYXN0X2FjdGl2ZV9ldmVudAEQZ2V0U3RhcnRCbG9ja0tleQEHZXZlbnRJZAkArAICBQdldmVudElkAgxfc3RhcnRfYmxvY2sBDmdldEVuZEJsb2NrS2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCCl9lbmRfYmxvY2sBDmdldEZpbmlzaEF0S2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCEF9maW5pc2hfYXRfYmxvY2sBCGdldElkS2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCA19pZAEMZ2V0U3RhdHVzS2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCB19zdGF0dXMBCmdldERlc2NLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAIMX2Rlc2NyaXB0aW9uAQ9nZXRQcmV2RXZlbnRLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAILX3ByZXZfZXZlbnQBD2dldE5leHRFdmVudEtleQEHZXZlbnRJZAkArAICBQdldmVudElkAgtfbmV4dF9ldmVudAENZ2V0QXNzZXRJZEtleQEHZXZlbnRJZAkArAICBQdldmVudElkAglfYXNzZXRfaWQBEWdldFRvdGFsQW1vdW50S2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCDV90b3RhbF9hbW91bnQBF2dldFByaWNlc0dyb3Vwc0NvdW50S2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCE19wcmljZXNfZ3JvdXBfY291bnQBFmdldFByaWNlc0xpc3RzQ291bnRLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAISX3ByaWNlc19saXN0X2NvdW50ARFnZXRQcmljZXNMaXN0TktleQIHZXZlbnRJZAFuCQCsAgIJAKwCAgUHZXZlbnRJZAINX3ByaWNlc19saXN0XwkApAMBBQFuARFnZXRQcmljZUJldHNDb3VudAIHZXZlbnRJZAVwcmljZQkArAICCQCsAgIJAKwCAgUHZXZlbnRJZAIBXwkApAMBBQVwcmljZQILX2JldHNfY291bnQBEmdldFByaWNlQWRkcmVzc0tleQIHZXZlbnRJZAdhZGRyZXNzCQCsAgIJAKwCAgkArAICBQdldmVudElkAgFfBQdhZGRyZXNzAgZfcHJpY2UBEWdldFJlc3VsdFByaWNlS2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCDV9wcmljZV9yZXN1bHQBE2dldFRlbXBXaW5QcmljZXNLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAIQX3ByaWNlc193aW5fdGVtcAEPZ2V0V2luUHJpY2VzS2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCC19wcmljZXNfd2luARhnZXRXaW5QcmljZXNDb21wbGV0ZWRLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAIVX3ByaWNlc193aW5fY29tcGxldGVkASBnZXRQcmljZXNHcm91cHNDb21wbGV0ZWRDb3VudEtleQEHZXZlbnRJZAkArAICBQdldmVudElkAh1fcHJpY2VzX2dyb3VwX2NvbXBsZXRlZF9jb3VudAEYZ2V0V2luUHJpY2VQZXJjZW50YWdlS2V5AgdldmVudElkBXByaWNlCQCsAgIJAKwCAgkArAICBQdldmVudElkAgVfd2luXwkApAMBBQVwcmljZQILX3BlcmNlbnRhZ2UBEmdldFBlcmNlbnRhZ2VDb3VudAIHZXZlbnRJZAdwZXJjZW50CQCsAgIJAKwCAgkArAICBQdldmVudElkAgFfCQCkAwEFB3BlcmNlbnQCDl9wZXJjZW50X2NvdW50AQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgEAXQFByRtYXRjaDAJAAIBAgQjZXJyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgJAAIBAgQjZXJyAQxnZXRBc3NldEluZm8BCGFzc2V0U3RyBAdhc3NldElkCQDZBAEFCGFzc2V0U3RyBAF4BAckbWF0Y2gwCQDsBwEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCQCUCgIFCGFzc2V0U3RyCAUFYXNzZXQIZGVjaW1hbHMJAJQKAgIFV0FWRVMAAAUBeAEJZ2V0U3RhdHVzAQdldmVudElkBAZzdGF0dXMJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAQxnZXRTdGF0dXNLZXkBBQdldmVudElkAwMDCQAAAgUGc3RhdHVzAghmaW5pc2hlZAYJAAACBQZzdGF0dXMCASMGCQAAAgUGc3RhdHVzAgVlbmRlZAUGc3RhdHVzBAhmaW5pc2hBdAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDmdldEZpbmlzaEF0S2V5AQUHZXZlbnRJZAQKc3RhcnRCbG9jawkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBEGdldFN0YXJ0QmxvY2tLZXkBBQdldmVudElkBAhlbmRCbG9jawkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDmdldEVuZEJsb2NrS2V5AQUHZXZlbnRJZAMJAGYCBQpzdGFydEJsb2NrBQZoZWlnaHQCCGF3YWl0aW5nAwMJAGcCBQZoZWlnaHQFCnN0YXJ0QmxvY2sJAGcCBQhlbmRCbG9jawUGaGVpZ2h0BwIGYWN0aXZlAwMJAGYCBQZoZWlnaHQFCGVuZEJsb2NrCQBnAgUIZmluaXNoQXQFBmhlaWdodAcCDGNvbmZpcm1hdGlvbgMJAGYCBQZoZWlnaHQFCGZpbmlzaEF0AghmaW5pc2hlZAkAAgECDnVua25vd24gc3RhdHVzAQ1yZWdpc3RlckV2ZW50BgR0eGlkBGRlc2MKc3RhcnRCbG9jawhlbmRCbG9jawhmaW5pc2hBdAhhc3NldFN0cgQHZXZlbnRJZAUEdHhpZAQGaW5zZXJ0CQD8BwQFBHRoaXMCDGluc2VydFRvTGlzdAkAzAgCBQdldmVudElkCQDMCAIGBQNuaWwFA25pbAMJAAACBQZpbnNlcnQFBmluc2VydAQGY29uY2F0CQD8BwQFBHRoaXMCC2NvbmNhdExpc3RzBQNuaWwFA25pbAMJAAACBQZjb25jYXQFBmNvbmNhdAQLJHQwNTQ0MDU0OTMJAQxnZXRBc3NldEluZm8BBQhhc3NldFN0cgQHYXNzZXRJZAgFCyR0MDU0NDA1NDkzAl8xBA1hc3NldERlY2ltYWxzCAULJHQwNTQ0MDU0OTMCXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJARBnZXRTdGFydEJsb2NrS2V5AQUHZXZlbnRJZAUKc3RhcnRCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmdldEVuZEJsb2NrS2V5AQUHZXZlbnRJZAUIZW5kQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5nZXRGaW5pc2hBdEtleQEFB2V2ZW50SWQFCGZpbmlzaEF0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQpnZXREZXNjS2V5AQUHZXZlbnRJZAUEZGVzYwkAzAgCCQELU3RyaW5nRW50cnkCCQEMZ2V0U3RhdHVzS2V5AQUHZXZlbnRJZAIDbmV3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQhnZXRJZEtleQEFB2V2ZW50SWQFB2V2ZW50SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWdldEFzc2V0SWRLZXkBBQdldmVudElkBQdhc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4MAWkBBGluaXQBBmNvbmZpZwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEG9ubHkgbWFpbiBjYW4gZG8ECGlzRXhpc3RzCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBRBjb25maWdBZGRyZXNzS2V5AwkBASEBBQhpc0V4aXN0cwkAzAgCCQELU3RyaW5nRW50cnkCBRBjb25maWdBZGRyZXNzS2V5BQZjb25maWcFA25pbAkAAgECDmFscmVhZHkgaW5pdGVkAWkBDWFwcGVuZEV2ZW50ZXIBBGRlc2MDCQEBIQEJAQdpc0FkbWluAQgFAWkGY2FsbGVyCQACAQIRb25seSBhZG1pbiBjYW4gZG8EA2ludgkA/AcEBQ1jb25maWdBZGRyZXNzAgpzZXRFdmVudGVyCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQRkZXNjBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWZ1bGxSZWdpc3RlckV2ZW50BARkZXNjCnN0YXJ0QmxvY2sIZHVyYXRpb24IYXNzZXRTdHIEDW5ld1N0YXJ0QmxvY2sDCQAAAgUKc3RhcnRCbG9jawAABQZoZWlnaHQFCnN0YXJ0QmxvY2sECGVuZEJsb2NrCQBkAgUNbmV3U3RhcnRCbG9jawUIZHVyYXRpb24ECGZpbmlzaEF0CQBkAgUIZW5kQmxvY2sAoAsDCQEBIQEJAQdpc0FkbWluAQgFAWkGY2FsbGVyCQACAQIRb25seSBhZG1pbiBjYW4gZG8EBHR4aWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBDXJlZ2lzdGVyRXZlbnQGBQR0eGlkBQRkZXNjBQ1uZXdTdGFydEJsb2NrBQhlbmRCbG9jawUIZmluaXNoQXQFCGFzc2V0U3RyAWkBBmNob2ljZQMHZXZlbnRJZAVwcmljZQdhZGRyZXNzBAZzdGF0dXMJAQlnZXRTdGF0dXMBBQdldmVudElkAwkAAAIFBnN0YXR1cwIGYWN0aXZlBAxuZWVkZWRBbW91bnQAgK3iBAQLbmVlZGVkQXNzZXQFBFVTRE4DAwMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFC25lZWRlZEFzc2V0BwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQxuZWVkZWRBbW91bnQHBAlpbnZBcHBlbmQJAPwHBAUEdGhpcwIOYXBwZW5kQmV0c0xpc3QJAMwIAgUHZXZlbnRJZAkAzAgCBQdhZGRyZXNzCQDMCAIFBXByaWNlBQNuaWwFA25pbAMJAAACBQlpbnZBcHBlbmQFCWludkFwcGVuZAQMY3VycmVudFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARFnZXRUb3RhbEFtb3VudEtleQEFB2V2ZW50SWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWdldFRvdGFsQW1vdW50S2V5AQUHZXZlbnRJZAkAZAIFDGN1cnJlbnRUb3RhbAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC0JhZCBwYXltZW50CQACAQIPWW91IGNhbmB0IGRvIGl0AWkBDmFwcGVuZEJldHNMaXN0AwdldmVudElkCmFkZHJlc3NTdHIFcHJpY2UDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhBvbmx5IG1haW4gY2FuIGRvAwkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkBEmdldFByaWNlQWRkcmVzc0tleQIFB2V2ZW50SWQFCmFkZHJlc3NTdHIJAAIBAiNiZXR0aW5nIGZyb20gdGhpcyBhZGRyZXNzIGlzIGV4aXN0cwQOY291bnRCZXRzUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBEWdldFByaWNlQmV0c0NvdW50AgUHZXZlbnRJZAUFcHJpY2UAAAMJAGcCBQ5jb3VudEJldHNQcmljZQUObWF4QmV0c09uUHJpY2UJAAIBAgx0byBtYW55IGJldHMECWxpc3RJbmRleAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWZ2V0UHJpY2VzTGlzdHNDb3VudEtleQEFB2V2ZW50SWQAAQQNY3VycmVudFByaWNlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQERZ2V0UHJpY2VzTGlzdE5LZXkCBQdldmVudElkBQlsaXN0SW5kZXgCAAQRY3VycmVudFByaWNlc0xpc3QJALwJAgUNY3VycmVudFByaWNlcwUJc2VwYXJhdG9yBAhsaXN0U2l6ZQkAkAMBBRFjdXJyZW50UHJpY2VzTGlzdAQJbmV3UHJpY2VzAwkAAAIFDmNvdW50QmV0c1ByaWNlAAADCQBmAgBkBQhsaXN0U2l6ZQMJAAACCQCxAgEFDWN1cnJlbnRQcmljZXMAAAkApAMBBQVwcmljZQkArAICCQCsAgIFDWN1cnJlbnRQcmljZXMFCXNlcGFyYXRvcgkApAMBBQVwcmljZQkApAMBBQVwcmljZQUNY3VycmVudFByaWNlcwQMbmV3TGlzdEluZGV4AwMJAGcCBQhsaXN0U2l6ZQBkCQAAAgUOY291bnRCZXRzUHJpY2UAAAcJAGQCBQlsaXN0SW5kZXgAAQUJbGlzdEluZGV4BA5uZXdHcm91cHNDb3VudAkAZAIJAGkCCQBlAgUMbmV3TGlzdEluZGV4AAEACgABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESZ2V0UHJpY2VBZGRyZXNzS2V5AgUHZXZlbnRJZAUKYWRkcmVzc1N0cgUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZnZXRQcmljZXNMaXN0c0NvdW50S2V5AQUHZXZlbnRJZAUMbmV3TGlzdEluZGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXZ2V0UHJpY2VzR3JvdXBzQ291bnRLZXkBBQdldmVudElkBQ5uZXdHcm91cHNDb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWdldFByaWNlQmV0c0NvdW50AgUHZXZlbnRJZAUFcHJpY2UJAGQCBQ5jb3VudEJldHNQcmljZQABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQFDG5ld0xpc3RJbmRleAUJbmV3UHJpY2VzBQNuaWwBaQELc2V0V2luUHJpY2UCB2V2ZW50SWQFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARFnZXRSZXN1bHRQcmljZUtleQEFB2V2ZW50SWQFBXByaWNlBQNuaWwBaQEQdmFsaWRhdGVCZXRzTGlzdAEHZXZlbnRJZAQLcmVzdWx0UHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQERZ2V0UmVzdWx0UHJpY2VLZXkBBQdldmVudElkAhRSZXN1bHQgcHJpY2Ugbm90IHNldAQPZ3JvdXBzQ29tcGxldGVkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJASBnZXRQcmljZXNHcm91cHNDb21wbGV0ZWRDb3VudEtleQEFB2V2ZW50SWQAAAQOc3RhcnRMaXN0SW5kZXgJAGQCCQBoAgUPZ3JvdXBzQ29tcGxldGVkAAoAAQQEbHN0MQkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAAAAgAFCXNlcGFyYXRvcgQEbHN0MgkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAABAgAFCXNlcGFyYXRvcgQEbHN0MwkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAACAgAFCXNlcGFyYXRvcgQEbHN0NAkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAADAgAFCXNlcGFyYXRvcgQEbHN0NQkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAAEAgAFCXNlcGFyYXRvcgQEbHN0NgkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAAFAgAFCXNlcGFyYXRvcgQEbHN0NwkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAAGAgAFCXNlcGFyYXRvcgQEbHN0OAkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAAHAgAFCXNlcGFyYXRvcgQEbHN0OQkAvAkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFnZXRQcmljZXNMaXN0TktleQIFB2V2ZW50SWQJAGQCBQ5zdGFydExpc3RJbmRleAAIAgAFCXNlcGFyYXRvcgQFbHN0MTAJALwJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQERZ2V0UHJpY2VzTGlzdE5LZXkCBQdldmVudElkCQBkAgUOc3RhcnRMaXN0SW5kZXgACQIABQlzZXBhcmF0b3IEA2xzdAkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgUEbHN0MQUEbHN0MgUEbHN0MwUEbHN0NAUEbHN0NQUEbHN0NgUEbHN0NwUEbHN0OAUEbHN0OQUFbHN0MTAJAAIBCQC6CQIFA2xzdAUJc2VwYXJhdG9yAWkBCnNldFdpbm5lcnMBB2V2ZW50SWQEC2dyb3Vwc0NvdW50CQCaCAIFBHRoaXMJARdnZXRQcmljZXNHcm91cHNDb3VudEtleQEFB2V2ZW50SWQED2dyb3Vwc0NvbXBsZXRlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEgZ2V0UHJpY2VzR3JvdXBzQ29tcGxldGVkQ291bnRLZXkBBQdldmVudElkAAADCQECIT0CBQ9ncm91cHNDb21wbGV0ZWQFC2dyb3Vwc0NvdW50CQACAQIYdmFsaWRhdGUgaXMgbm90IGNvbXBsZXRlBAtyZXN1bHRQcmljZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJARFnZXRSZXN1bHRQcmljZUtleQEFB2V2ZW50SWQCFFJlc3VsdCBwcmljZSBub3Qgc2V0BA10ZW1wV2luUHJpY2VzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkBE2dldFRlbXBXaW5QcmljZXNLZXkBBQdldmVudElkAhl0ZW1wIHdpbiBwcmljZXMgbm90IGZvdW5kBBB0ZW1wV2luUHJpY2VzTHN0CQC8CQIFDXRlbXBXaW5QcmljZXMFCXNlcGFyYXRvcgoBCWZvbGRUb0ludAIFYWNjdW0EbmV4dAQDdmFsCQENcGFyc2VJbnRWYWx1ZQEFBG5leHQJAM0IAgUFYWNjdW0FA3ZhbAQTdGVtcFdpblByaWNlc0xzdEludAoAAiRsBRB0ZW1wV2luUHJpY2VzTHN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlmb2xkVG9JbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFkxpc3Qgc2l6ZSBleGNlZWRzIDEwMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUk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eQIJARJnZXRQZXJjZW50YWdlQ291bnQCBQdldmVudElkBQpwZXJjZW50YWdlCQBkAgkAZAIFA2luZAUJYmV0c0NvdW50AAEFA25pbAQJbmV3TmV3THN0CQDNCAIFBm5ld0xzdAULcmVzdWx0UHJpY2UJAJYKBAUKbmV3SW5pdExzdAUJbmV3TmV3THN0BQluZXdTdGF0ZXMJAGQCBQNpbmQFCWJldHNDb3VudAQKcEJldHNDb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQERZ2V0UHJpY2VCZXRzQ291bnQCBQdldmVudElkCQBkAgULcmVzdWx0UHJpY2UFBWRlbHRhAAAECm5CZXRzQ291bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBEWdldFByaWNlQmV0c0NvdW50AgUHZXZlbnRJZAkAZQIFC3Jlc3VsdFByaWNlBQVkZWx0YQAABAluZXdTdGF0ZXMJAM4IAgUGc3RhdGVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYZ2V0V2luUHJpY2VQZXJjZW50YWdlS2V5AgUHZXZlbnRJZAULcmVzdWx0UHJpY2UFCnBlcmNlbnRhZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRQZXJjZW50YWdlQ291bnQCBQdldmVudElkBQpwZXJjZW50YWdlCQBkAgkAZAIJAGQCBQNpbmQFCnBCZXRzQ291bnQFCm5CZXRzQ291bnQAAQUDbmlsBAluZXdOZXdMc3QJAM0IAgUGbmV3THN0BQtyZXN1bHRQcmljZQkAlgoEBQpuZXdJbml0THN0BQluZXdOZXdMc3QFCW5ld1N0YXRlcwkAZAIJAGQCBQNpbmQFCnBCZXRzQ291bnQFCm5CZXRzQ291bnQJAJYKBAUKbmV3SW5pdExzdAUGbmV3THN0BQZzdGF0ZXMFA2luZAQUZm9sZEdldFdpbm5lcnNSZXN1bHQKAAIkbAUTdGVtcFdpblByaWNlc0xzdEludAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUTdGVtcFdpblByaWNlc0xzdEludAUDbmlsBQNuaWwAAAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEOZm9sZEdldFdpbm5lcnMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAZzdGF0ZXMIBRRmb2xkR2V0V2lubmVyc1Jlc3VsdAJfMwQJd2luUHJpY2VzCQC6CQIIBRRmb2xkR2V0V2lubmVyc1Jlc3VsdAJfMgUJc2VwYXJhdG9yBAluZXdTdGF0ZXMJAM4IAgUGc3RhdGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9nZXRXaW5QcmljZXNLZXkBBQdldmVudElkBQl3aW5QcmljZXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIJARhnZXRXaW5QcmljZXNDb21wbGV0ZWRLZXkBBQdldmVudElkBgUDbmlsBQluZXdTdGF0ZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcmVzZXRMaXN0AAMJAQEhAQkBB2lzQWRtaW4BCAUBaQZjYWxsZXIJAAIBAhFvbmx5IGFkbWluIGNhbiBkbwkAzAgCCQELU3RyaW5nRW50cnkCBQ1maXJzdEV2ZW50S2V5BQl1bmRlZmluZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUMbGFzdEV2ZW50S2V5BQl1bmRlZmluZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUTZmlzcnRBY3RpdmVFdmVudEtleQUJdW5kZWZpbmVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEmxhc3RBY3RpdmVFdmVudEtleQUJdW5kZWZpbmVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFWZpc3J0RmluaXNoZWRFdmVudEtleQUJdW5kZWZpbmVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFGxhc3RGaW5pc2hlZEV2ZW50S2V5BQl1bmRlZmluZWQFA25pbAFpAQxpbnNlcnRUb0xpc3QCB2V2ZW50SWQIaXNBY3RpdmUDCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAhBvbmx5IG1haW4gY2FuIGRvBAdsYXN0S2V5AwUIaXNBY3RpdmUFEmxhc3RBY3RpdmVFdmVudEtleQUUbGFzdEZpbmlzaGVkRXZlbnRLZXkECGZpcnN0S2V5AwUIaXNBY3RpdmUFE2Zpc3J0QWN0aXZlRXZlbnRLZXkFFWZpc3J0RmluaXNoZWRFdmVudEtleQQKZmlyc3RFdmVudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQhmaXJzdEtleQUJdW5kZWZpbmVkBAlsYXN0RXZlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUHbGFzdEtleQUJdW5kZWZpbmVkBBBuZXdMYXN0T3JQcmV2S2V5AwkAAAIFCWxhc3RFdmVudAUJdW5kZWZpbmVkBQdsYXN0S2V5CQEPZ2V0UHJldkV2ZW50S2V5AQUKZmlyc3RFdmVudAkAzAgCCQELU3RyaW5nRW50cnkCBQhmaXJzdEtleQUHZXZlbnRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBuZXdMYXN0T3JQcmV2S2V5BQdldmVudElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9nZXROZXh0RXZlbnRLZXkBBQdldmVudElkBQpmaXJzdEV2ZW50BQNuaWwBaQEOZGVsZXRlRnJvbUxpc3QCB2V2ZW50SWQIaXNBY3RpdmUDCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAhBvbmx5IG1haW4gY2FuIGRvBAdsYXN0S2V5AwUIaXNBY3RpdmUFEmxhc3RBY3RpdmVFdmVudEtleQUUbGFzdEZpbmlzaGVkRXZlbnRLZXkECGZpcnN0S2V5AwUIaXNBY3RpdmUFE2Zpc3J0QWN0aXZlRXZlbnRLZXkFFWZpc3J0RmluaXNoZWRFdmVudEtleQQKZmlyc3RFdmVudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQhmaXJzdEtleQUJdW5kZWZpbmVkBAlsYXN0RXZlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUHbGFzdEtleQUJdW5kZWZpbmVkBA1wcmV2RXZlbnRUZW1wCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ9nZXRQcmV2RXZlbnRLZXkBBQdldmVudElkBQl1bmRlZmluZWQEDW5leHRFdmVudFRlbXAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2dldE5leHRFdmVudEtleQEFB2V2ZW50SWQFCXVuZGVmaW5lZAQJcHJldkV2ZW50AwkAAAIFB2V2ZW50SWQFCmZpcnN0RXZlbnQFCXVuZGVmaW5lZAUNcHJldkV2ZW50VGVtcAQJbmV4dEV2ZW50AwkAAAIFB2V2ZW50SWQFCWxhc3RFdmVudAUJdW5kZWZpbmVkBQ1uZXh0RXZlbnRUZW1wAwMJAAACBQlwcmV2RXZlbnQFCXVuZGVmaW5lZAkAAAIFCW5leHRFdmVudAUJdW5kZWZpbmVkBwkAzAgCCQELU3RyaW5nRW50cnkCBQhmaXJzdEtleQUJdW5kZWZpbmVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2xhc3RLZXkFCXVuZGVmaW5lZAUDbmlsAwMJAQIhPQIFCXByZXZFdmVudAUJdW5kZWZpbmVkCQECIT0CBQluZXh0RXZlbnQFCXVuZGVmaW5lZAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2dldFByZXZFdmVudEtleQEFCW5leHRFdmVudAUJcHJldkV2ZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9nZXROZXh0RXZlbnRLZXkBBQlwcmV2RXZlbnQFCW5leHRFdmVudAUDbmlsAwkBAiE9AgUJcHJldkV2ZW50BQl1bmRlZmluZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUHbGFzdEtleQUJcHJldkV2ZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9nZXROZXh0RXZlbnRLZXkBBQlwcmV2RXZlbnQFCXVuZGVmaW5lZAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGZpcnN0S2V5BQluZXh0RXZlbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2dldFByZXZFdmVudEtleQEFCW5leHRFdmVudAUJdW5kZWZpbmVkBQNuaWwBaQELY29uY2F0TGlzdHMAAwkBASEBCQEHaXNBZG1pbgEIBQFpBmNhbGxlcgkAAgECEW9ubHkgYWRtaW4gY2FuIGRvBBBmaXJzdEFjdGl2ZUV2ZW50CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFE2Zpc3J0QWN0aXZlRXZlbnRLZXkFCXVuZGVmaW5lZAQPbGFzdEFjdGl2ZUV2ZW50CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFEmxhc3RBY3RpdmVFdmVudEtleQUJdW5kZWZpbmVkBBJmaXJzdEZpbmlzaGVkRXZlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUVZmlzcnRGaW5pc2hlZEV2ZW50S2V5BQl1bmRlZmluZWQEEWxhc3RGaW5pc2hlZEV2ZW50CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFFGxhc3RGaW5pc2hlZEV2ZW50S2V5BQl1bmRlZmluZWQECmZpcnN0RXZlbnQDCQECIT0CBRBmaXJzdEFjdGl2ZUV2ZW50BQl1bmRlZmluZWQFEGZpcnN0QWN0aXZlRXZlbnQFEmZpcnN0RmluaXNoZWRFdmVudAQJbGFzdEV2ZW50AwkBAiE9AgURbGFzdEZpbmlzaGVkRXZlbnQFCXVuZGVmaW5lZAURbGFzdEZpbmlzaGVkRXZlbnQFD2xhc3RBY3RpdmVFdmVudAMDCQECIT0CBRJmaXJzdEZpbmlzaGVkRXZlbnQFCXVuZGVmaW5lZAkBAiE9AgUPbGFzdEFjdGl2ZUV2ZW50BQl1bmRlZmluZWQHCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWZpcnN0RXZlbnRLZXkFCmZpcnN0RXZlbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUMbGFzdEV2ZW50S2V5BQlsYXN0RXZlbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2dldE5leHRFdmVudEtleQEFD2xhc3RBY3RpdmVFdmVudAUSZmlyc3RGaW5pc2hlZEV2ZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9nZXRQcmV2RXZlbnRLZXkBBRJmaXJzdEZpbmlzaGVkRXZlbnQFD2xhc3RBY3RpdmVFdmVudAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWZpcnN0RXZlbnRLZXkFCmZpcnN0RXZlbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUMbGFzdEV2ZW50S2V5BQlsYXN0RXZlbnQFA25pbADWVE1I", "height": 2286472, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4n8s95tBrs6Wx1NnHoZutEfWbZ3GtePoRebaXCYcMVmB Next: GS64ErGyPgqVLj6DS9hKd16J2zoZUXoHTr4zcyLdgDER Diff:
Old | New | Differences | |
---|---|---|---|
329 | 329 | let lst9 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 8))), ""), separator) | |
330 | 330 | let lst10 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 9))), ""), separator) | |
331 | 331 | let lst = (((((((((lst1 ++ lst2) ++ lst3) ++ lst4) ++ lst5) ++ lst6) ++ lst7) ++ lst8) ++ lst9) ++ lst10) | |
332 | - | func foldValidate (accum,next) = { | |
333 | - | let val = parseIntValue(next) | |
334 | - | let delta = if ((val >= resultPrice)) | |
335 | - | then (val - resultPrice) | |
336 | - | else (resultPrice - val) | |
337 | - | if (containsElement(accum, delta)) | |
338 | - | then accum | |
339 | - | else (accum :+ delta) | |
340 | - | } | |
341 | - | ||
342 | - | let foldValidateResult = { | |
343 | - | let $l = lst | |
344 | - | let $s = size($l) | |
345 | - | let $acc0 = nil | |
346 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
347 | - | then $a | |
348 | - | else foldValidate($a, $l[$i]) | |
349 | - | ||
350 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
351 | - | then $a | |
352 | - | else throw("List size exceeds 1000") | |
353 | - | ||
354 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 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), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120), 121), 122), 123), 124), 125), 126), 127), 128), 129), 130), 131), 132), 133), 134), 135), 136), 137), 138), 139), 140), 141), 142), 143), 144), 145), 146), 147), 148), 149), 150), 151), 152), 153), 154), 155), 156), 157), 158), 159), 160), 161), 162), 163), 164), 165), 166), 167), 168), 169), 170), 171), 172), 173), 174), 175), 176), 177), 178), 179), 180), 181), 182), 183), 184), 185), 186), 187), 188), 189), 190), 191), 192), 193), 194), 195), 196), 197), 198), 199), 200), 201), 202), 203), 204), 205), 206), 207), 208), 209), 210), 211), 212), 213), 214), 215), 216), 217), 218), 219), 220), 221), 222), 223), 224), 225), 226), 227), 228), 229), 230), 231), 232), 233), 234), 235), 236), 237), 238), 239), 240), 241), 242), 243), 244), 245), 246), 247), 248), 249), 250), 251), 252), 253), 254), 255), 256), 257), 258), 259), 260), 261), 262), 263), 264), 265), 266), 267), 268), 269), 270), 271), 272), 273), 274), 275), 276), 277), 278), 279), 280), 281), 282), 283), 284), 285), 286), 287), 288), 289), 290), 291), 292), 293), 294), 295), 296), 297), 298), 299), 300), 301), 302), 303), 304), 305), 306), 307), 308), 309), 310), 311), 312), 313), 314), 315), 316), 317), 318), 319), 320), 321), 322), 323), 324), 325), 326), 327), 328), 329), 330), 331), 332), 333), 334), 335), 336), 337), 338), 339), 340), 341), 342), 343), 344), 345), 346), 347), 348), 349), 350), 351), 352), 353), 354), 355), 356), 357), 358), 359), 360), 361), 362), 363), 364), 365), 366), 367), 368), 369), 370), 371), 372), 373), 374), 375), 376), 377), 378), 379), 380), 381), 382), 383), 384), 385), 386), 387), 388), 389), 390), 391), 392), 393), 394), 395), 396), 397), 398), 399), 400), 401), 402), 403), 404), 405), 406), 407), 408), 409), 410), 411), 412), 413), 414), 415), 416), 417), 418), 419), 420), 421), 422), 423), 424), 425), 426), 427), 428), 429), 430), 431), 432), 433), 434), 435), 436), 437), 438), 439), 440), 441), 442), 443), 444), 445), 446), 447), 448), 449), 450), 451), 452), 453), 454), 455), 456), 457), 458), 459), 460), 461), 462), 463), 464), 465), 466), 467), 468), 469), 470), 471), 472), 473), 474), 475), 476), 477), 478), 479), 480), 481), 482), 483), 484), 485), 486), 487), 488), 489), 490), 491), 492), 493), 494), 495), 496), 497), 498), 499), 500), 501), 502), 503), 504), 505), 506), 507), 508), 509), 510), 511), 512), 513), 514), 515), 516), 517), 518), 519), 520), 521), 522), 523), 524), 525), 526), 527), 528), 529), 530), 531), 532), 533), 534), 535), 536), 537), 538), 539), 540), 541), 542), 543), 544), 545), 546), 547), 548), 549), 550), 551), 552), 553), 554), 555), 556), 557), 558), 559), 560), 561), 562), 563), 564), 565), 566), 567), 568), 569), 570), 571), 572), 573), 574), 575), 576), 577), 578), 579), 580), 581), 582), 583), 584), 585), 586), 587), 588), 589), 590), 591), 592), 593), 594), 595), 596), 597), 598), 599), 600), 601), 602), 603), 604), 605), 606), 607), 608), 609), 610), 611), 612), 613), 614), 615), 616), 617), 618), 619), 620), 621), 622), 623), 624), 625), 626), 627), 628), 629), 630), 631), 632), 633), 634), 635), 636), 637), 638), 639), 640), 641), 642), 643), 644), 645), 646), 647), 648), 649), 650), 651), 652), 653), 654), 655), 656), 657), 658), 659), 660), 661), 662), 663), 664), 665), 666), 667), 668), 669), 670), 671), 672), 673), 674), 675), 676), 677), 678), 679), 680), 681), 682), 683), 684), 685), 686), 687), 688), 689), 690), 691), 692), 693), 694), 695), 696), 697), 698), 699), 700), 701), 702), 703), 704), 705), 706), 707), 708), 709), 710), 711), 712), 713), 714), 715), 716), 717), 718), 719), 720), 721), 722), 723), 724), 725), 726), 727), 728), 729), 730), 731), 732), 733), 734), 735), 736), 737), 738), 739), 740), 741), 742), 743), 744), 745), 746), 747), 748), 749), 750), 751), 752), 753), 754), 755), 756), 757), 758), 759), 760), 761), 762), 763), 764), 765), 766), 767), 768), 769), 770), 771), 772), 773), 774), 775), 776), 777), 778), 779), 780), 781), 782), 783), 784), 785), 786), 787), 788), 789), 790), 791), 792), 793), 794), 795), 796), 797), 798), 799), 800), 801), 802), 803), 804), 805), 806), 807), 808), 809), 810), 811), 812), 813), 814), 815), 816), 817), 818), 819), 820), 821), 822), 823), 824), 825), 826), 827), 828), 829), 830), 831), 832), 833), 834), 835), 836), 837), 838), 839), 840), 841), 842), 843), 844), 845), 846), 847), 848), 849), 850), 851), 852), 853), 854), 855), 856), 857), 858), 859), 860), 861), 862), 863), 864), 865), 866), 867), 868), 869), 870), 871), 872), 873), 874), 875), 876), 877), 878), 879), 880), 881), 882), 883), 884), 885), 886), 887), 888), 889), 890), 891), 892), 893), 894), 895), 896), 897), 898), 899), 900), 901), 902), 903), 904), 905), 906), 907), 908), 909), 910), 911), 912), 913), 914), 915), 916), 917), 918), 919), 920), 921), 922), 923), 924), 925), 926), 927), 928), 929), 930), 931), 932), 933), 934), 935), 936), 937), 938), 939), 940), 941), 942), 943), 944), 945), 946), 947), 948), 949), 950), 951), 952), 953), 954), 955), 956), 957), 958), 959), 960), 961), 962), 963), 964), 965), 966), 967), 968), 969), 970), 971), 972), 973), 974), 975), 976), 977), 978), 979), 980), 981), 982), 983), 984), 985), 986), 987), 988), 989), 990), 991), 992), 993), 994), 995), 996), 997), 998), 999), 1000) | |
355 | - | } | |
356 | - | func foldSort (accum,next) = { | |
357 | - | let $t01154911580 = accum | |
358 | - | let initList = $t01154911580._1 | |
359 | - | let newList = $t01154911580._2 | |
360 | - | let minValue = min(initList) | |
361 | - | $Tuple2(removeByIndex(initList, asInt(indexOf(initList, minValue))), (newList :+ minValue)) | |
362 | - | } | |
363 | - | ||
364 | - | let foldSortResult = { | |
365 | - | let $l = foldValidateResult | |
366 | - | let $s = size($l) | |
367 | - | let $acc0 = $Tuple2(foldValidateResult, nil) | |
368 | - | func $f1_1 ($a,$i) = if (($i >= $s)) | |
369 | - | then $a | |
370 | - | else foldSort($a, $l[$i]) | |
371 | - | ||
372 | - | func $f1_2 ($a,$i) = if (($i >= $s)) | |
373 | - | then $a | |
374 | - | else throw("List size exceeds 15") | |
375 | - | ||
376 | - | $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15) | |
377 | - | } | |
378 | - | let minLst = foldSortResult._2 | |
379 | - | let tempWinPrices = valueOrElse(getString(this, getTempWinPricesKey(eventId)), "") | |
380 | - | let newTempWinPrices = if ((size(tempWinPrices) == 0)) | |
381 | - | then makeString_2C(minLst, separator) | |
382 | - | else ((tempWinPrices + separator) + makeString_2C(minLst, separator)) | |
383 | - | [IntegerEntry(getPricesGroupsCompletedCountKey(eventId), (groupsCompleted + 1)), StringEntry(getTempWinPricesKey(eventId), newTempWinPrices)] | |
332 | + | throw(makeString_2C(lst, separator)) | |
384 | 333 | } | |
385 | 334 | ||
386 | 335 | ||
417 | 366 | if ((tempWinPricesLstInt == tempWinPricesLstInt)) | |
418 | 367 | then { | |
419 | 368 | func foldGetWinners (accum,next) = { | |
420 | - | let $ | |
421 | - | let initLst = $ | |
422 | - | let newLst = $ | |
423 | - | let states = $ | |
424 | - | let ind = $ | |
369 | + | let $t01212312165 = accum | |
370 | + | let initLst = $t01212312165._1 | |
371 | + | let newLst = $t01212312165._2 | |
372 | + | let states = $t01212312165._3 | |
373 | + | let ind = $t01212312165._4 | |
425 | 374 | let delta = min(initLst) | |
426 | 375 | let newInitLst = removeByIndex(initLst, asInt(indexOf(initLst, delta))) | |
427 | 376 | if ((13 > ind)) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let undefined = "undefined" | |
5 | 5 | ||
6 | 6 | let separator = ";" | |
7 | 7 | ||
8 | 8 | let configAddressKey = "config" | |
9 | 9 | ||
10 | 10 | let collectorAddressKey = "collector_address" | |
11 | 11 | ||
12 | 12 | let historyAddressKey = "history_address" | |
13 | 13 | ||
14 | 14 | let paymakerAddressKey = "paymaker_address" | |
15 | 15 | ||
16 | 16 | let adminsKey = "admins" | |
17 | 17 | ||
18 | 18 | let configAddress = addressFromStringValue(getStringValue(this, configAddressKey)) | |
19 | 19 | ||
20 | 20 | let collectorAddress = addressFromStringValue(getStringValue(configAddress, collectorAddressKey)) | |
21 | 21 | ||
22 | 22 | let historyAddress = addressFromStringValue(getStringValue(configAddress, historyAddressKey)) | |
23 | 23 | ||
24 | 24 | let paymakerAddress = addressFromStringValue(getStringValue(configAddress, paymakerAddressKey)) | |
25 | 25 | ||
26 | 26 | func isAdmin (caller) = { | |
27 | 27 | let admRow = valueOrElse(getString(configAddress, adminsKey), "") | |
28 | 28 | if (if ((caller == this)) | |
29 | 29 | then true | |
30 | 30 | else contains(admRow, toString(caller))) | |
31 | 31 | then true | |
32 | 32 | else false | |
33 | 33 | } | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func getCheckerKey (checker) = ("checker_" + checker) | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | func isChecker (checker) = { | |
40 | 40 | let isExists = isDefined(getBoolean(configAddress, getCheckerKey(checker))) | |
41 | 41 | isExists | |
42 | 42 | } | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | let USDN = base58'2eFPx8M5qwNFRbW91pzsyBKMz1FZmYMUW3BVZzTQmbFD' | |
46 | 46 | ||
47 | 47 | let minAmount = 10000000 | |
48 | 48 | ||
49 | 49 | let feeNumerator = 5 | |
50 | 50 | ||
51 | 51 | let feeDenominator = 100 | |
52 | 52 | ||
53 | 53 | let maxBetsOnPrice = 3 | |
54 | 54 | ||
55 | 55 | let firstEventKey = "first_event" | |
56 | 56 | ||
57 | 57 | let lastEventKey = "last_event" | |
58 | 58 | ||
59 | 59 | let fisrtFinishedEventKey = "first_finished_event" | |
60 | 60 | ||
61 | 61 | let lastFinishedEventKey = "last_finished_event" | |
62 | 62 | ||
63 | 63 | let fisrtActiveEventKey = "first_active_event" | |
64 | 64 | ||
65 | 65 | let lastActiveEventKey = "last_active_event" | |
66 | 66 | ||
67 | 67 | func getStartBlockKey (eventId) = (eventId + "_start_block") | |
68 | 68 | ||
69 | 69 | ||
70 | 70 | func getEndBlockKey (eventId) = (eventId + "_end_block") | |
71 | 71 | ||
72 | 72 | ||
73 | 73 | func getFinishAtKey (eventId) = (eventId + "_finish_at_block") | |
74 | 74 | ||
75 | 75 | ||
76 | 76 | func getIdKey (eventId) = (eventId + "_id") | |
77 | 77 | ||
78 | 78 | ||
79 | 79 | func getStatusKey (eventId) = (eventId + "_status") | |
80 | 80 | ||
81 | 81 | ||
82 | 82 | func getDescKey (eventId) = (eventId + "_description") | |
83 | 83 | ||
84 | 84 | ||
85 | 85 | func getPrevEventKey (eventId) = (eventId + "_prev_event") | |
86 | 86 | ||
87 | 87 | ||
88 | 88 | func getNextEventKey (eventId) = (eventId + "_next_event") | |
89 | 89 | ||
90 | 90 | ||
91 | 91 | func getAssetIdKey (eventId) = (eventId + "_asset_id") | |
92 | 92 | ||
93 | 93 | ||
94 | 94 | func getTotalAmountKey (eventId) = (eventId + "_total_amount") | |
95 | 95 | ||
96 | 96 | ||
97 | 97 | func getPricesGroupsCountKey (eventId) = (eventId + "_prices_group_count") | |
98 | 98 | ||
99 | 99 | ||
100 | 100 | func getPricesListsCountKey (eventId) = (eventId + "_prices_list_count") | |
101 | 101 | ||
102 | 102 | ||
103 | 103 | func getPricesListNKey (eventId,n) = ((eventId + "_prices_list_") + toString(n)) | |
104 | 104 | ||
105 | 105 | ||
106 | 106 | func getPriceBetsCount (eventId,price) = (((eventId + "_") + toString(price)) + "_bets_count") | |
107 | 107 | ||
108 | 108 | ||
109 | 109 | func getPriceAddressKey (eventId,address) = (((eventId + "_") + address) + "_price") | |
110 | 110 | ||
111 | 111 | ||
112 | 112 | func getResultPriceKey (eventId) = (eventId + "_price_result") | |
113 | 113 | ||
114 | 114 | ||
115 | 115 | func getTempWinPricesKey (eventId) = (eventId + "_prices_win_temp") | |
116 | 116 | ||
117 | 117 | ||
118 | 118 | func getWinPricesKey (eventId) = (eventId + "_prices_win") | |
119 | 119 | ||
120 | 120 | ||
121 | 121 | func getWinPricesCompletedKey (eventId) = (eventId + "_prices_win_completed") | |
122 | 122 | ||
123 | 123 | ||
124 | 124 | func getPricesGroupsCompletedCountKey (eventId) = (eventId + "_prices_group_completed_count") | |
125 | 125 | ||
126 | 126 | ||
127 | 127 | func getWinPricePercentageKey (eventId,price) = (((eventId + "_win_") + toString(price)) + "_percentage") | |
128 | 128 | ||
129 | 129 | ||
130 | 130 | func getPercentageCount (eventId,percent) = (((eventId + "_") + toString(percent)) + "_percent_count") | |
131 | 131 | ||
132 | 132 | ||
133 | 133 | func asInt (v) = match v { | |
134 | 134 | case x: Int => | |
135 | 135 | x | |
136 | 136 | case t => | |
137 | 137 | throw("#err") | |
138 | 138 | } | |
139 | 139 | ||
140 | 140 | ||
141 | 141 | func asString (v) = match v { | |
142 | 142 | case x: String => | |
143 | 143 | x | |
144 | 144 | case _ => | |
145 | 145 | throw("#err") | |
146 | 146 | } | |
147 | 147 | ||
148 | 148 | ||
149 | 149 | func getAssetInfo (assetStr) = { | |
150 | 150 | let assetId = fromBase58String(assetStr) | |
151 | 151 | let x = match assetInfo(assetId) { | |
152 | 152 | case asset: Asset => | |
153 | 153 | $Tuple2(assetStr, asset.decimals) | |
154 | 154 | case _ => | |
155 | 155 | $Tuple2("WAVES", 0) | |
156 | 156 | } | |
157 | 157 | x | |
158 | 158 | } | |
159 | 159 | ||
160 | 160 | ||
161 | 161 | func getStatus (eventId) = { | |
162 | 162 | let status = getStringValue(this, getStatusKey(eventId)) | |
163 | 163 | if (if (if ((status == "finished")) | |
164 | 164 | then true | |
165 | 165 | else (status == "#")) | |
166 | 166 | then true | |
167 | 167 | else (status == "ended")) | |
168 | 168 | then status | |
169 | 169 | else { | |
170 | 170 | let finishAt = getIntegerValue(this, getFinishAtKey(eventId)) | |
171 | 171 | let startBlock = getIntegerValue(this, getStartBlockKey(eventId)) | |
172 | 172 | let endBlock = getIntegerValue(this, getEndBlockKey(eventId)) | |
173 | 173 | if ((startBlock > height)) | |
174 | 174 | then "awaiting" | |
175 | 175 | else if (if ((height >= startBlock)) | |
176 | 176 | then (endBlock >= height) | |
177 | 177 | else false) | |
178 | 178 | then "active" | |
179 | 179 | else if (if ((height > endBlock)) | |
180 | 180 | then (finishAt >= height) | |
181 | 181 | else false) | |
182 | 182 | then "confirmation" | |
183 | 183 | else if ((height > finishAt)) | |
184 | 184 | then "finished" | |
185 | 185 | else throw("unknown status") | |
186 | 186 | } | |
187 | 187 | } | |
188 | 188 | ||
189 | 189 | ||
190 | 190 | func registerEvent (txid,desc,startBlock,endBlock,finishAt,assetStr) = { | |
191 | 191 | let eventId = txid | |
192 | 192 | let insert = invoke(this, "insertToList", [eventId, true], nil) | |
193 | 193 | if ((insert == insert)) | |
194 | 194 | then { | |
195 | 195 | let concat = invoke(this, "concatLists", nil, nil) | |
196 | 196 | if ((concat == concat)) | |
197 | 197 | then { | |
198 | 198 | let $t054405493 = getAssetInfo(assetStr) | |
199 | 199 | let assetId = $t054405493._1 | |
200 | 200 | let assetDecimals = $t054405493._2 | |
201 | 201 | [IntegerEntry(getStartBlockKey(eventId), startBlock), IntegerEntry(getEndBlockKey(eventId), endBlock), IntegerEntry(getFinishAtKey(eventId), finishAt), StringEntry(getDescKey(eventId), desc), StringEntry(getStatusKey(eventId), "new"), StringEntry(getIdKey(eventId), eventId), StringEntry(getAssetIdKey(eventId), assetId)] | |
202 | 202 | } | |
203 | 203 | else throw("Strict value is not equal to itself.") | |
204 | 204 | } | |
205 | 205 | else throw("Strict value is not equal to itself.") | |
206 | 206 | } | |
207 | 207 | ||
208 | 208 | ||
209 | 209 | @Callable(i) | |
210 | 210 | func init (config) = if ((i.caller != this)) | |
211 | 211 | then throw("only main can do") | |
212 | 212 | else { | |
213 | 213 | let isExists = isDefined(getString(this, configAddressKey)) | |
214 | 214 | if (!(isExists)) | |
215 | 215 | then [StringEntry(configAddressKey, config)] | |
216 | 216 | else throw("already inited") | |
217 | 217 | } | |
218 | 218 | ||
219 | 219 | ||
220 | 220 | ||
221 | 221 | @Callable(i) | |
222 | 222 | func appendEventer (desc) = if (!(isAdmin(i.caller))) | |
223 | 223 | then throw("only admin can do") | |
224 | 224 | else { | |
225 | 225 | let inv = invoke(configAddress, "setEventer", [toString(this), desc], nil) | |
226 | 226 | if ((inv == inv)) | |
227 | 227 | then nil | |
228 | 228 | else throw("Strict value is not equal to itself.") | |
229 | 229 | } | |
230 | 230 | ||
231 | 231 | ||
232 | 232 | ||
233 | 233 | @Callable(i) | |
234 | 234 | func fullRegisterEvent (desc,startBlock,duration,assetStr) = { | |
235 | 235 | let newStartBlock = if ((startBlock == 0)) | |
236 | 236 | then height | |
237 | 237 | else startBlock | |
238 | 238 | let endBlock = (newStartBlock + duration) | |
239 | 239 | let finishAt = (endBlock + 1440) | |
240 | 240 | if (!(isAdmin(i.caller))) | |
241 | 241 | then throw("only admin can do") | |
242 | 242 | else { | |
243 | 243 | let txid = toBase58String(i.transactionId) | |
244 | 244 | registerEvent(txid, desc, newStartBlock, endBlock, finishAt, assetStr) | |
245 | 245 | } | |
246 | 246 | } | |
247 | 247 | ||
248 | 248 | ||
249 | 249 | ||
250 | 250 | @Callable(i) | |
251 | 251 | func choice (eventId,price,address) = { | |
252 | 252 | let status = getStatus(eventId) | |
253 | 253 | if ((status == "active")) | |
254 | 254 | then { | |
255 | 255 | let neededAmount = 10000000 | |
256 | 256 | let neededAsset = USDN | |
257 | 257 | if (if (if ((size(i.payments) == 1)) | |
258 | 258 | then (i.payments[0].assetId == neededAsset) | |
259 | 259 | else false) | |
260 | 260 | then (i.payments[0].amount == neededAmount) | |
261 | 261 | else false) | |
262 | 262 | then { | |
263 | 263 | let invAppend = invoke(this, "appendBetsList", [eventId, address, price], nil) | |
264 | 264 | if ((invAppend == invAppend)) | |
265 | 265 | then { | |
266 | 266 | let currentTotal = valueOrElse(getInteger(this, getTotalAmountKey(eventId)), 0) | |
267 | 267 | [IntegerEntry(getTotalAmountKey(eventId), (currentTotal + i.payments[0].amount))] | |
268 | 268 | } | |
269 | 269 | else throw("Strict value is not equal to itself.") | |
270 | 270 | } | |
271 | 271 | else throw("Bad payment") | |
272 | 272 | } | |
273 | 273 | else throw("You can`t do it") | |
274 | 274 | } | |
275 | 275 | ||
276 | 276 | ||
277 | 277 | ||
278 | 278 | @Callable(i) | |
279 | 279 | func appendBetsList (eventId,addressStr,price) = if ((i.caller != this)) | |
280 | 280 | then throw("only main can do") | |
281 | 281 | else if (isDefined(getInteger(this, getPriceAddressKey(eventId, addressStr)))) | |
282 | 282 | then throw("betting from this address is exists") | |
283 | 283 | else { | |
284 | 284 | let countBetsPrice = valueOrElse(getInteger(this, getPriceBetsCount(eventId, price)), 0) | |
285 | 285 | if ((countBetsPrice >= maxBetsOnPrice)) | |
286 | 286 | then throw("to many bets") | |
287 | 287 | else { | |
288 | 288 | let listIndex = valueOrElse(getInteger(this, getPricesListsCountKey(eventId)), 1) | |
289 | 289 | let currentPrices = valueOrElse(getString(this, getPricesListNKey(eventId, listIndex)), "") | |
290 | 290 | let currentPricesList = split_4C(currentPrices, separator) | |
291 | 291 | let listSize = size(currentPricesList) | |
292 | 292 | let newPrices = if ((countBetsPrice == 0)) | |
293 | 293 | then if ((100 > listSize)) | |
294 | 294 | then if ((size(currentPrices) == 0)) | |
295 | 295 | then toString(price) | |
296 | 296 | else ((currentPrices + separator) + toString(price)) | |
297 | 297 | else toString(price) | |
298 | 298 | else currentPrices | |
299 | 299 | let newListIndex = if (if ((listSize >= 100)) | |
300 | 300 | then (countBetsPrice == 0) | |
301 | 301 | else false) | |
302 | 302 | then (listIndex + 1) | |
303 | 303 | else listIndex | |
304 | 304 | let newGroupsCount = (((newListIndex - 1) / 10) + 1) | |
305 | 305 | [IntegerEntry(getPriceAddressKey(eventId, addressStr), price), IntegerEntry(getPricesListsCountKey(eventId), newListIndex), IntegerEntry(getPricesGroupsCountKey(eventId), newGroupsCount), IntegerEntry(getPriceBetsCount(eventId, price), (countBetsPrice + 1)), StringEntry(getPricesListNKey(eventId, newListIndex), newPrices)] | |
306 | 306 | } | |
307 | 307 | } | |
308 | 308 | ||
309 | 309 | ||
310 | 310 | ||
311 | 311 | @Callable(i) | |
312 | 312 | func setWinPrice (eventId,price) = [IntegerEntry(getResultPriceKey(eventId), price)] | |
313 | 313 | ||
314 | 314 | ||
315 | 315 | ||
316 | 316 | @Callable(i) | |
317 | 317 | func validateBetsList (eventId) = { | |
318 | 318 | let resultPrice = valueOrErrorMessage(getInteger(this, getResultPriceKey(eventId)), "Result price not set") | |
319 | 319 | let groupsCompleted = valueOrElse(getInteger(this, getPricesGroupsCompletedCountKey(eventId)), 0) | |
320 | 320 | let startListIndex = ((groupsCompleted * 10) + 1) | |
321 | 321 | let lst1 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 0))), ""), separator) | |
322 | 322 | let lst2 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 1))), ""), separator) | |
323 | 323 | let lst3 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 2))), ""), separator) | |
324 | 324 | let lst4 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 3))), ""), separator) | |
325 | 325 | let lst5 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 4))), ""), separator) | |
326 | 326 | let lst6 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 5))), ""), separator) | |
327 | 327 | let lst7 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 6))), ""), separator) | |
328 | 328 | let lst8 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 7))), ""), separator) | |
329 | 329 | let lst9 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 8))), ""), separator) | |
330 | 330 | let lst10 = split_4C(valueOrElse(getString(this, getPricesListNKey(eventId, (startListIndex + 9))), ""), separator) | |
331 | 331 | let lst = (((((((((lst1 ++ lst2) ++ lst3) ++ lst4) ++ lst5) ++ lst6) ++ lst7) ++ lst8) ++ lst9) ++ lst10) | |
332 | - | func foldValidate (accum,next) = { | |
333 | - | let val = parseIntValue(next) | |
334 | - | let delta = if ((val >= resultPrice)) | |
335 | - | then (val - resultPrice) | |
336 | - | else (resultPrice - val) | |
337 | - | if (containsElement(accum, delta)) | |
338 | - | then accum | |
339 | - | else (accum :+ delta) | |
340 | - | } | |
341 | - | ||
342 | - | let foldValidateResult = { | |
343 | - | let $l = lst | |
344 | - | let $s = size($l) | |
345 | - | let $acc0 = nil | |
346 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
347 | - | then $a | |
348 | - | else foldValidate($a, $l[$i]) | |
349 | - | ||
350 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
351 | - | then $a | |
352 | - | else throw("List size exceeds 1000") | |
353 | - | ||
354 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 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), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120), 121), 122), 123), 124), 125), 126), 127), 128), 129), 130), 131), 132), 133), 134), 135), 136), 137), 138), 139), 140), 141), 142), 143), 144), 145), 146), 147), 148), 149), 150), 151), 152), 153), 154), 155), 156), 157), 158), 159), 160), 161), 162), 163), 164), 165), 166), 167), 168), 169), 170), 171), 172), 173), 174), 175), 176), 177), 178), 179), 180), 181), 182), 183), 184), 185), 186), 187), 188), 189), 190), 191), 192), 193), 194), 195), 196), 197), 198), 199), 200), 201), 202), 203), 204), 205), 206), 207), 208), 209), 210), 211), 212), 213), 214), 215), 216), 217), 218), 219), 220), 221), 222), 223), 224), 225), 226), 227), 228), 229), 230), 231), 232), 233), 234), 235), 236), 237), 238), 239), 240), 241), 242), 243), 244), 245), 246), 247), 248), 249), 250), 251), 252), 253), 254), 255), 256), 257), 258), 259), 260), 261), 262), 263), 264), 265), 266), 267), 268), 269), 270), 271), 272), 273), 274), 275), 276), 277), 278), 279), 280), 281), 282), 283), 284), 285), 286), 287), 288), 289), 290), 291), 292), 293), 294), 295), 296), 297), 298), 299), 300), 301), 302), 303), 304), 305), 306), 307), 308), 309), 310), 311), 312), 313), 314), 315), 316), 317), 318), 319), 320), 321), 322), 323), 324), 325), 326), 327), 328), 329), 330), 331), 332), 333), 334), 335), 336), 337), 338), 339), 340), 341), 342), 343), 344), 345), 346), 347), 348), 349), 350), 351), 352), 353), 354), 355), 356), 357), 358), 359), 360), 361), 362), 363), 364), 365), 366), 367), 368), 369), 370), 371), 372), 373), 374), 375), 376), 377), 378), 379), 380), 381), 382), 383), 384), 385), 386), 387), 388), 389), 390), 391), 392), 393), 394), 395), 396), 397), 398), 399), 400), 401), 402), 403), 404), 405), 406), 407), 408), 409), 410), 411), 412), 413), 414), 415), 416), 417), 418), 419), 420), 421), 422), 423), 424), 425), 426), 427), 428), 429), 430), 431), 432), 433), 434), 435), 436), 437), 438), 439), 440), 441), 442), 443), 444), 445), 446), 447), 448), 449), 450), 451), 452), 453), 454), 455), 456), 457), 458), 459), 460), 461), 462), 463), 464), 465), 466), 467), 468), 469), 470), 471), 472), 473), 474), 475), 476), 477), 478), 479), 480), 481), 482), 483), 484), 485), 486), 487), 488), 489), 490), 491), 492), 493), 494), 495), 496), 497), 498), 499), 500), 501), 502), 503), 504), 505), 506), 507), 508), 509), 510), 511), 512), 513), 514), 515), 516), 517), 518), 519), 520), 521), 522), 523), 524), 525), 526), 527), 528), 529), 530), 531), 532), 533), 534), 535), 536), 537), 538), 539), 540), 541), 542), 543), 544), 545), 546), 547), 548), 549), 550), 551), 552), 553), 554), 555), 556), 557), 558), 559), 560), 561), 562), 563), 564), 565), 566), 567), 568), 569), 570), 571), 572), 573), 574), 575), 576), 577), 578), 579), 580), 581), 582), 583), 584), 585), 586), 587), 588), 589), 590), 591), 592), 593), 594), 595), 596), 597), 598), 599), 600), 601), 602), 603), 604), 605), 606), 607), 608), 609), 610), 611), 612), 613), 614), 615), 616), 617), 618), 619), 620), 621), 622), 623), 624), 625), 626), 627), 628), 629), 630), 631), 632), 633), 634), 635), 636), 637), 638), 639), 640), 641), 642), 643), 644), 645), 646), 647), 648), 649), 650), 651), 652), 653), 654), 655), 656), 657), 658), 659), 660), 661), 662), 663), 664), 665), 666), 667), 668), 669), 670), 671), 672), 673), 674), 675), 676), 677), 678), 679), 680), 681), 682), 683), 684), 685), 686), 687), 688), 689), 690), 691), 692), 693), 694), 695), 696), 697), 698), 699), 700), 701), 702), 703), 704), 705), 706), 707), 708), 709), 710), 711), 712), 713), 714), 715), 716), 717), 718), 719), 720), 721), 722), 723), 724), 725), 726), 727), 728), 729), 730), 731), 732), 733), 734), 735), 736), 737), 738), 739), 740), 741), 742), 743), 744), 745), 746), 747), 748), 749), 750), 751), 752), 753), 754), 755), 756), 757), 758), 759), 760), 761), 762), 763), 764), 765), 766), 767), 768), 769), 770), 771), 772), 773), 774), 775), 776), 777), 778), 779), 780), 781), 782), 783), 784), 785), 786), 787), 788), 789), 790), 791), 792), 793), 794), 795), 796), 797), 798), 799), 800), 801), 802), 803), 804), 805), 806), 807), 808), 809), 810), 811), 812), 813), 814), 815), 816), 817), 818), 819), 820), 821), 822), 823), 824), 825), 826), 827), 828), 829), 830), 831), 832), 833), 834), 835), 836), 837), 838), 839), 840), 841), 842), 843), 844), 845), 846), 847), 848), 849), 850), 851), 852), 853), 854), 855), 856), 857), 858), 859), 860), 861), 862), 863), 864), 865), 866), 867), 868), 869), 870), 871), 872), 873), 874), 875), 876), 877), 878), 879), 880), 881), 882), 883), 884), 885), 886), 887), 888), 889), 890), 891), 892), 893), 894), 895), 896), 897), 898), 899), 900), 901), 902), 903), 904), 905), 906), 907), 908), 909), 910), 911), 912), 913), 914), 915), 916), 917), 918), 919), 920), 921), 922), 923), 924), 925), 926), 927), 928), 929), 930), 931), 932), 933), 934), 935), 936), 937), 938), 939), 940), 941), 942), 943), 944), 945), 946), 947), 948), 949), 950), 951), 952), 953), 954), 955), 956), 957), 958), 959), 960), 961), 962), 963), 964), 965), 966), 967), 968), 969), 970), 971), 972), 973), 974), 975), 976), 977), 978), 979), 980), 981), 982), 983), 984), 985), 986), 987), 988), 989), 990), 991), 992), 993), 994), 995), 996), 997), 998), 999), 1000) | |
355 | - | } | |
356 | - | func foldSort (accum,next) = { | |
357 | - | let $t01154911580 = accum | |
358 | - | let initList = $t01154911580._1 | |
359 | - | let newList = $t01154911580._2 | |
360 | - | let minValue = min(initList) | |
361 | - | $Tuple2(removeByIndex(initList, asInt(indexOf(initList, minValue))), (newList :+ minValue)) | |
362 | - | } | |
363 | - | ||
364 | - | let foldSortResult = { | |
365 | - | let $l = foldValidateResult | |
366 | - | let $s = size($l) | |
367 | - | let $acc0 = $Tuple2(foldValidateResult, nil) | |
368 | - | func $f1_1 ($a,$i) = if (($i >= $s)) | |
369 | - | then $a | |
370 | - | else foldSort($a, $l[$i]) | |
371 | - | ||
372 | - | func $f1_2 ($a,$i) = if (($i >= $s)) | |
373 | - | then $a | |
374 | - | else throw("List size exceeds 15") | |
375 | - | ||
376 | - | $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15) | |
377 | - | } | |
378 | - | let minLst = foldSortResult._2 | |
379 | - | let tempWinPrices = valueOrElse(getString(this, getTempWinPricesKey(eventId)), "") | |
380 | - | let newTempWinPrices = if ((size(tempWinPrices) == 0)) | |
381 | - | then makeString_2C(minLst, separator) | |
382 | - | else ((tempWinPrices + separator) + makeString_2C(minLst, separator)) | |
383 | - | [IntegerEntry(getPricesGroupsCompletedCountKey(eventId), (groupsCompleted + 1)), StringEntry(getTempWinPricesKey(eventId), newTempWinPrices)] | |
332 | + | throw(makeString_2C(lst, separator)) | |
384 | 333 | } | |
385 | 334 | ||
386 | 335 | ||
387 | 336 | ||
388 | 337 | @Callable(i) | |
389 | 338 | func setWinners (eventId) = { | |
390 | 339 | let groupsCount = getInteger(this, getPricesGroupsCountKey(eventId)) | |
391 | 340 | let groupsCompleted = valueOrElse(getInteger(this, getPricesGroupsCompletedCountKey(eventId)), 0) | |
392 | 341 | if ((groupsCompleted != groupsCount)) | |
393 | 342 | then throw("validate is not complete") | |
394 | 343 | else { | |
395 | 344 | let resultPrice = valueOrErrorMessage(getInteger(this, getResultPriceKey(eventId)), "Result price not set") | |
396 | 345 | let tempWinPrices = valueOrErrorMessage(getString(this, getTempWinPricesKey(eventId)), "temp win prices not found") | |
397 | 346 | let tempWinPricesLst = split_4C(tempWinPrices, separator) | |
398 | 347 | func foldToInt (accum,next) = { | |
399 | 348 | let val = parseIntValue(next) | |
400 | 349 | (accum :+ val) | |
401 | 350 | } | |
402 | 351 | ||
403 | 352 | let tempWinPricesLstInt = { | |
404 | 353 | let $l = tempWinPricesLst | |
405 | 354 | let $s = size($l) | |
406 | 355 | let $acc0 = nil | |
407 | 356 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
408 | 357 | then $a | |
409 | 358 | else foldToInt($a, $l[$i]) | |
410 | 359 | ||
411 | 360 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
412 | 361 | then $a | |
413 | 362 | else throw("List size exceeds 1000") | |
414 | 363 | ||
415 | 364 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 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), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120), 121), 122), 123), 124), 125), 126), 127), 128), 129), 130), 131), 132), 133), 134), 135), 136), 137), 138), 139), 140), 141), 142), 143), 144), 145), 146), 147), 148), 149), 150), 151), 152), 153), 154), 155), 156), 157), 158), 159), 160), 161), 162), 163), 164), 165), 166), 167), 168), 169), 170), 171), 172), 173), 174), 175), 176), 177), 178), 179), 180), 181), 182), 183), 184), 185), 186), 187), 188), 189), 190), 191), 192), 193), 194), 195), 196), 197), 198), 199), 200), 201), 202), 203), 204), 205), 206), 207), 208), 209), 210), 211), 212), 213), 214), 215), 216), 217), 218), 219), 220), 221), 222), 223), 224), 225), 226), 227), 228), 229), 230), 231), 232), 233), 234), 235), 236), 237), 238), 239), 240), 241), 242), 243), 244), 245), 246), 247), 248), 249), 250), 251), 252), 253), 254), 255), 256), 257), 258), 259), 260), 261), 262), 263), 264), 265), 266), 267), 268), 269), 270), 271), 272), 273), 274), 275), 276), 277), 278), 279), 280), 281), 282), 283), 284), 285), 286), 287), 288), 289), 290), 291), 292), 293), 294), 295), 296), 297), 298), 299), 300), 301), 302), 303), 304), 305), 306), 307), 308), 309), 310), 311), 312), 313), 314), 315), 316), 317), 318), 319), 320), 321), 322), 323), 324), 325), 326), 327), 328), 329), 330), 331), 332), 333), 334), 335), 336), 337), 338), 339), 340), 341), 342), 343), 344), 345), 346), 347), 348), 349), 350), 351), 352), 353), 354), 355), 356), 357), 358), 359), 360), 361), 362), 363), 364), 365), 366), 367), 368), 369), 370), 371), 372), 373), 374), 375), 376), 377), 378), 379), 380), 381), 382), 383), 384), 385), 386), 387), 388), 389), 390), 391), 392), 393), 394), 395), 396), 397), 398), 399), 400), 401), 402), 403), 404), 405), 406), 407), 408), 409), 410), 411), 412), 413), 414), 415), 416), 417), 418), 419), 420), 421), 422), 423), 424), 425), 426), 427), 428), 429), 430), 431), 432), 433), 434), 435), 436), 437), 438), 439), 440), 441), 442), 443), 444), 445), 446), 447), 448), 449), 450), 451), 452), 453), 454), 455), 456), 457), 458), 459), 460), 461), 462), 463), 464), 465), 466), 467), 468), 469), 470), 471), 472), 473), 474), 475), 476), 477), 478), 479), 480), 481), 482), 483), 484), 485), 486), 487), 488), 489), 490), 491), 492), 493), 494), 495), 496), 497), 498), 499), 500), 501), 502), 503), 504), 505), 506), 507), 508), 509), 510), 511), 512), 513), 514), 515), 516), 517), 518), 519), 520), 521), 522), 523), 524), 525), 526), 527), 528), 529), 530), 531), 532), 533), 534), 535), 536), 537), 538), 539), 540), 541), 542), 543), 544), 545), 546), 547), 548), 549), 550), 551), 552), 553), 554), 555), 556), 557), 558), 559), 560), 561), 562), 563), 564), 565), 566), 567), 568), 569), 570), 571), 572), 573), 574), 575), 576), 577), 578), 579), 580), 581), 582), 583), 584), 585), 586), 587), 588), 589), 590), 591), 592), 593), 594), 595), 596), 597), 598), 599), 600), 601), 602), 603), 604), 605), 606), 607), 608), 609), 610), 611), 612), 613), 614), 615), 616), 617), 618), 619), 620), 621), 622), 623), 624), 625), 626), 627), 628), 629), 630), 631), 632), 633), 634), 635), 636), 637), 638), 639), 640), 641), 642), 643), 644), 645), 646), 647), 648), 649), 650), 651), 652), 653), 654), 655), 656), 657), 658), 659), 660), 661), 662), 663), 664), 665), 666), 667), 668), 669), 670), 671), 672), 673), 674), 675), 676), 677), 678), 679), 680), 681), 682), 683), 684), 685), 686), 687), 688), 689), 690), 691), 692), 693), 694), 695), 696), 697), 698), 699), 700), 701), 702), 703), 704), 705), 706), 707), 708), 709), 710), 711), 712), 713), 714), 715), 716), 717), 718), 719), 720), 721), 722), 723), 724), 725), 726), 727), 728), 729), 730), 731), 732), 733), 734), 735), 736), 737), 738), 739), 740), 741), 742), 743), 744), 745), 746), 747), 748), 749), 750), 751), 752), 753), 754), 755), 756), 757), 758), 759), 760), 761), 762), 763), 764), 765), 766), 767), 768), 769), 770), 771), 772), 773), 774), 775), 776), 777), 778), 779), 780), 781), 782), 783), 784), 785), 786), 787), 788), 789), 790), 791), 792), 793), 794), 795), 796), 797), 798), 799), 800), 801), 802), 803), 804), 805), 806), 807), 808), 809), 810), 811), 812), 813), 814), 815), 816), 817), 818), 819), 820), 821), 822), 823), 824), 825), 826), 827), 828), 829), 830), 831), 832), 833), 834), 835), 836), 837), 838), 839), 840), 841), 842), 843), 844), 845), 846), 847), 848), 849), 850), 851), 852), 853), 854), 855), 856), 857), 858), 859), 860), 861), 862), 863), 864), 865), 866), 867), 868), 869), 870), 871), 872), 873), 874), 875), 876), 877), 878), 879), 880), 881), 882), 883), 884), 885), 886), 887), 888), 889), 890), 891), 892), 893), 894), 895), 896), 897), 898), 899), 900), 901), 902), 903), 904), 905), 906), 907), 908), 909), 910), 911), 912), 913), 914), 915), 916), 917), 918), 919), 920), 921), 922), 923), 924), 925), 926), 927), 928), 929), 930), 931), 932), 933), 934), 935), 936), 937), 938), 939), 940), 941), 942), 943), 944), 945), 946), 947), 948), 949), 950), 951), 952), 953), 954), 955), 956), 957), 958), 959), 960), 961), 962), 963), 964), 965), 966), 967), 968), 969), 970), 971), 972), 973), 974), 975), 976), 977), 978), 979), 980), 981), 982), 983), 984), 985), 986), 987), 988), 989), 990), 991), 992), 993), 994), 995), 996), 997), 998), 999), 1000) | |
416 | 365 | } | |
417 | 366 | if ((tempWinPricesLstInt == tempWinPricesLstInt)) | |
418 | 367 | then { | |
419 | 368 | func foldGetWinners (accum,next) = { | |
420 | - | let $ | |
421 | - | let initLst = $ | |
422 | - | let newLst = $ | |
423 | - | let states = $ | |
424 | - | let ind = $ | |
369 | + | let $t01212312165 = accum | |
370 | + | let initLst = $t01212312165._1 | |
371 | + | let newLst = $t01212312165._2 | |
372 | + | let states = $t01212312165._3 | |
373 | + | let ind = $t01212312165._4 | |
425 | 374 | let delta = min(initLst) | |
426 | 375 | let newInitLst = removeByIndex(initLst, asInt(indexOf(initLst, delta))) | |
427 | 376 | if ((13 > ind)) | |
428 | 377 | then { | |
429 | 378 | let percentage = if ((3 > ind)) | |
430 | 379 | then 65 | |
431 | 380 | else 10 | |
432 | 381 | if ((delta == 0)) | |
433 | 382 | then { | |
434 | 383 | let betsCount = getIntegerValue(this, getPriceBetsCount(eventId, resultPrice)) | |
435 | 384 | let newStates = (states ++ [IntegerEntry(getWinPricePercentageKey(eventId, resultPrice), percentage), IntegerEntry(getPercentageCount(eventId, percentage), ((ind + betsCount) + 1))]) | |
436 | 385 | let newNewLst = (newLst :+ resultPrice) | |
437 | 386 | $Tuple4(newInitLst, newNewLst, newStates, (ind + betsCount)) | |
438 | 387 | } | |
439 | 388 | else { | |
440 | 389 | let pBetsCount = valueOrElse(getInteger(this, getPriceBetsCount(eventId, (resultPrice + delta))), 0) | |
441 | 390 | let nBetsCount = valueOrElse(getInteger(this, getPriceBetsCount(eventId, (resultPrice - delta))), 0) | |
442 | 391 | let newStates = (states ++ [IntegerEntry(getWinPricePercentageKey(eventId, resultPrice), percentage), IntegerEntry(getPercentageCount(eventId, percentage), (((ind + pBetsCount) + nBetsCount) + 1))]) | |
443 | 392 | let newNewLst = (newLst :+ resultPrice) | |
444 | 393 | $Tuple4(newInitLst, newNewLst, newStates, ((ind + pBetsCount) + nBetsCount)) | |
445 | 394 | } | |
446 | 395 | } | |
447 | 396 | else $Tuple4(newInitLst, newLst, states, ind) | |
448 | 397 | } | |
449 | 398 | ||
450 | 399 | let foldGetWinnersResult = { | |
451 | 400 | let $l = tempWinPricesLstInt | |
452 | 401 | let $s = size($l) | |
453 | 402 | let $acc0 = $Tuple4(tempWinPricesLstInt, nil, nil, 0) | |
454 | 403 | func $f1_1 ($a,$i) = if (($i >= $s)) | |
455 | 404 | then $a | |
456 | 405 | else foldGetWinners($a, $l[$i]) | |
457 | 406 | ||
458 | 407 | func $f1_2 ($a,$i) = if (($i >= $s)) | |
459 | 408 | then $a | |
460 | 409 | else throw("List size exceeds 15") | |
461 | 410 | ||
462 | 411 | $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15) | |
463 | 412 | } | |
464 | 413 | let states = foldGetWinnersResult._3 | |
465 | 414 | let winPrices = makeString_2C(foldGetWinnersResult._2, separator) | |
466 | 415 | let newStates = (states ++ [StringEntry(getWinPricesKey(eventId), winPrices), BooleanEntry(getWinPricesCompletedKey(eventId), true)]) | |
467 | 416 | newStates | |
468 | 417 | } | |
469 | 418 | else throw("Strict value is not equal to itself.") | |
470 | 419 | } | |
471 | 420 | } | |
472 | 421 | ||
473 | 422 | ||
474 | 423 | ||
475 | 424 | @Callable(i) | |
476 | 425 | func resetList () = if (!(isAdmin(i.caller))) | |
477 | 426 | then throw("only admin can do") | |
478 | 427 | else [StringEntry(firstEventKey, undefined), StringEntry(lastEventKey, undefined), StringEntry(fisrtActiveEventKey, undefined), StringEntry(lastActiveEventKey, undefined), StringEntry(fisrtFinishedEventKey, undefined), StringEntry(lastFinishedEventKey, undefined)] | |
479 | 428 | ||
480 | 429 | ||
481 | 430 | ||
482 | 431 | @Callable(i) | |
483 | 432 | func insertToList (eventId,isActive) = if ((this != i.caller)) | |
484 | 433 | then throw("only main can do") | |
485 | 434 | else { | |
486 | 435 | let lastKey = if (isActive) | |
487 | 436 | then lastActiveEventKey | |
488 | 437 | else lastFinishedEventKey | |
489 | 438 | let firstKey = if (isActive) | |
490 | 439 | then fisrtActiveEventKey | |
491 | 440 | else fisrtFinishedEventKey | |
492 | 441 | let firstEvent = valueOrElse(getString(this, firstKey), undefined) | |
493 | 442 | let lastEvent = valueOrElse(getString(this, lastKey), undefined) | |
494 | 443 | let newLastOrPrevKey = if ((lastEvent == undefined)) | |
495 | 444 | then lastKey | |
496 | 445 | else getPrevEventKey(firstEvent) | |
497 | 446 | [StringEntry(firstKey, eventId), StringEntry(newLastOrPrevKey, eventId), StringEntry(getNextEventKey(eventId), firstEvent)] | |
498 | 447 | } | |
499 | 448 | ||
500 | 449 | ||
501 | 450 | ||
502 | 451 | @Callable(i) | |
503 | 452 | func deleteFromList (eventId,isActive) = if ((this != i.caller)) | |
504 | 453 | then throw("only main can do") | |
505 | 454 | else { | |
506 | 455 | let lastKey = if (isActive) | |
507 | 456 | then lastActiveEventKey | |
508 | 457 | else lastFinishedEventKey | |
509 | 458 | let firstKey = if (isActive) | |
510 | 459 | then fisrtActiveEventKey | |
511 | 460 | else fisrtFinishedEventKey | |
512 | 461 | let firstEvent = valueOrElse(getString(this, firstKey), undefined) | |
513 | 462 | let lastEvent = valueOrElse(getString(this, lastKey), undefined) | |
514 | 463 | let prevEventTemp = valueOrElse(getString(this, getPrevEventKey(eventId)), undefined) | |
515 | 464 | let nextEventTemp = valueOrElse(getString(this, getNextEventKey(eventId)), undefined) | |
516 | 465 | let prevEvent = if ((eventId == firstEvent)) | |
517 | 466 | then undefined | |
518 | 467 | else prevEventTemp | |
519 | 468 | let nextEvent = if ((eventId == lastEvent)) | |
520 | 469 | then undefined | |
521 | 470 | else nextEventTemp | |
522 | 471 | if (if ((prevEvent == undefined)) | |
523 | 472 | then (nextEvent == undefined) | |
524 | 473 | else false) | |
525 | 474 | then [StringEntry(firstKey, undefined), StringEntry(lastKey, undefined)] | |
526 | 475 | else if (if ((prevEvent != undefined)) | |
527 | 476 | then (nextEvent != undefined) | |
528 | 477 | else false) | |
529 | 478 | then [StringEntry(getPrevEventKey(nextEvent), prevEvent), StringEntry(getNextEventKey(prevEvent), nextEvent)] | |
530 | 479 | else if ((prevEvent != undefined)) | |
531 | 480 | then [StringEntry(lastKey, prevEvent), StringEntry(getNextEventKey(prevEvent), undefined)] | |
532 | 481 | else [StringEntry(firstKey, nextEvent), StringEntry(getPrevEventKey(nextEvent), undefined)] | |
533 | 482 | } | |
534 | 483 | ||
535 | 484 | ||
536 | 485 | ||
537 | 486 | @Callable(i) | |
538 | 487 | func concatLists () = if (!(isAdmin(i.caller))) | |
539 | 488 | then throw("only admin can do") | |
540 | 489 | else { | |
541 | 490 | let firstActiveEvent = valueOrElse(getString(this, fisrtActiveEventKey), undefined) | |
542 | 491 | let lastActiveEvent = valueOrElse(getString(this, lastActiveEventKey), undefined) | |
543 | 492 | let firstFinishedEvent = valueOrElse(getString(this, fisrtFinishedEventKey), undefined) | |
544 | 493 | let lastFinishedEvent = valueOrElse(getString(this, lastFinishedEventKey), undefined) | |
545 | 494 | let firstEvent = if ((firstActiveEvent != undefined)) | |
546 | 495 | then firstActiveEvent | |
547 | 496 | else firstFinishedEvent | |
548 | 497 | let lastEvent = if ((lastFinishedEvent != undefined)) | |
549 | 498 | then lastFinishedEvent | |
550 | 499 | else lastActiveEvent | |
551 | 500 | if (if ((firstFinishedEvent != undefined)) | |
552 | 501 | then (lastActiveEvent != undefined) | |
553 | 502 | else false) | |
554 | 503 | then [StringEntry(firstEventKey, firstEvent), StringEntry(lastEventKey, lastEvent), StringEntry(getNextEventKey(lastActiveEvent), firstFinishedEvent), StringEntry(getPrevEventKey(firstFinishedEvent), lastActiveEvent)] | |
555 | 504 | else [StringEntry(firstEventKey, firstEvent), StringEntry(lastEventKey, lastEvent)] | |
556 | 505 | } | |
557 | 506 | ||
558 | 507 |
github/deemru/w8io/fabc49c 162.11 ms ◑