tx · EEJHDL9B6XWDh3Cqpg1DyVvLxpjxJUVxoWhTQgE3GKyT

3N3nfqFcxXfd3T18V9icDdh58MJ9wQ2k2xx:  -0.01600000 Waves

2023.09.22 21:28 [2766949] smart account 3N3nfqFcxXfd3T18V9icDdh58MJ9wQ2k2xx > SELF 0.00000000 Waves

{ "type": 13, "id": "EEJHDL9B6XWDh3Cqpg1DyVvLxpjxJUVxoWhTQgE3GKyT", "fee": 1600000, "feeAssetId": null, "timestamp": 1695407315292, "version": 2, "chainId": 84, "sender": "3N3nfqFcxXfd3T18V9icDdh58MJ9wQ2k2xx", "senderPublicKey": "UGqkWsCpv7xRVXkQRXyLd6pWPDtYGXmPip7FxSd1pAu", "proofs": [ "4Htzp9WhTRxvvWCjCrqGv6xRX9hvLjobU1dMs1m8b4kQupF7BycQeXHjExwCuSDnCwJLb4NhqXs75RXSmjpcc36L" ], "script": "base64:BgIlCAISCAoGAQEBAQEBEgASABIECgIIARIDCgEBEgMKAQESAwoBCDsAD0RFRkFVTFRMT0NBVElPTgIPQWZyaWNhX0ZfQWZyaWNhAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBE2tleVNjb3JlQm9hcmRCeVRvdXIBA3RJZAkArAICAhIlcyVkX19zY29yZUJvYXJkX18JAKQDAQUDdElkARJrZXlTdW1TY29yZXNCeVRvdXIBA3RJZAkArAICAhElcyVkX19zdW1TY29yZXNfXwkApAMBBQN0SWQBFmtleVVucGFpZFJld2FyZHNCeVRvdXIBA3RJZAkArAICAhUlcyVkX191bnBhaWRSZXdhcmRzX18JAKQDAQUDdElkARtrZXlMYXN0UmVnaXN0ZXJlZFRvdXJCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICICVzJXNfX2xhc3RSZWdpc3RlcmVkVG91ckJ5RHVja19fBQtkdWNrQXNzZXRJZAEca2V5SXNSZWdpc3RlcmVkQnlUb3VyQW5kRHVjawIDdElkC2R1Y2tBc3NldElkCQC5CQIJAMwIAgIhJXMlZCVzX19pc1JlZ2lzdGVyZWRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fARlrZXlJc0F3YXJkZWRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh4lcyVkJXNfX2lzQXdhcmRlZEJ5VG91ckFuZER1Y2sJAMwIAgkApAMBBQN0SWQJAMwIAgULZHVja0Fzc2V0SWQFA25pbAICX18BG2tleUxhc3RBdHRlbXB0QnlUb3VyQW5kRHVjawIDdElkC2R1Y2tBc3NldElkCQC5CQIJAMwIAgIgJXMlZCVzX19sYXN0QXR0ZW1wdEJ5VG91ckFuZER1Y2sJAMwIAgkApAMBBQN0SWQJAMwIAgULZHVja0Fzc2V0SWQFA25pbAICX18BGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fARZrZXlCZXN0VHhCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAhslcyVkJXNfX2Jlc3RUeEJ5VG91ckFuZER1Y2sJAMwIAgkApAMBBQN0SWQJAMwIAgULZHVja0Fzc2V0SWQFA25pbAICX18ACWlkeFN0YXRpYwAAAAppZHhEeW5hbWljAAEAE3RTdGF0aWNSZWdpc3RlckNvc3QAAgASdFN0YXRpY0F0dGVtcHRDb3N0AAMADHRTdGF0aWNTdGFydAAFAAp0U3RhdGljRW5kAAYAEHRTdGF0aWNOdW1HcmFuZHMABwAQdFN0YXRpY1ByaXplRnVuZAAIAA50RHluYW1pY1N0YXR1cwABAA90RHluYW1pY0xlYWRlcnMAAgARdER5bmFtaWNXaW5SZXN1bHQAAwAVdER5bmFtaWNUb3RhbFJlZ0NvdW50AAQAFXREeW5hbWljVG90YWxBdHRlbXB0cwAFAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC8CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAQ5pc0luVG91cm5hbWVudAIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABAA1JZHhDZmdXbGdEYXBwAAQBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBBHBhZEwCA3ZhbANsZW4EBHZhbFMJAKQDAQUDdmFsBAZ6ZXJvZXMJALACAgkApAMBCQBsBgAKAAAJAGUCBQNsZW4JALECAQUEdmFsUwAAAAAFBERPV04AAQkArAICBQZ6ZXJvZXMFBHZhbFMAE01BWFRPVVJOQU1FTlRMRU5HVEgAgJj/zQEABEhPVVIAgN3bAQAKYWRtaW5zTGlzdAkAzAgCCQClCAEFBHRoaXMJAMwIAgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BFZTJSRUxVSENGQ0JzbVNDTmNCSjhOM1VSTFZRZW5kZTcDCQAAAgEBVAUHJG1hdGNoMAIjM010QmdKVGFMeFBCM0M3VUpEMVVFOHFqa0h0aGZLdkZRWVkJAAIBAg1Vbmtub3duIGNoYWluBQNuaWwBCnN0YXRpY0RhdGEIBHR4SWQMcmVnaXN0ZXJDb3N0C2F0dGVtcHRDb3N0DGNyZWF0aW9uVGltZQlzdGFydFRpbWUHZW5kVGltZQludW1HcmFuZHMJcHJpemVGdW5kCQC5CQIJAMwIAgIQJXMlZCVkJWQlZCVkJWQlZAkAzAgCBQR0eElkCQDMCAIJAKQDAQUMcmVnaXN0ZXJDb3N0CQDMCAIJAKQDAQULYXR0ZW1wdENvc3QJAMwIAgkApAMBBQxjcmVhdGlvblRpbWUJAMwIAgkApAMBBQlzdGFydFRpbWUJAMwIAgkApAMBBQdlbmRUaW1lCQDMCAIJAKQDAQUJbnVtR3JhbmRzCQDMCAIJAKQDAQUJcHJpemVGdW5kBQNuaWwFA1NFUAELZHluYW1pY0RhdGEFBnN0YXR1cwdsZWFkZXJzCXdpblJlc3VsdAl0b3RhbFJlZ3MNdG90YWxBdHRlbXB0cwkAugkCCQDMCAICCiVzJXMlZCVkJWQJAMwIAgUGc3RhdHVzCQDMCAIFB2xlYWRlcnMJAMwIAgkApAMBBQl3aW5SZXN1bHQJAMwIAgkApAMBBQl0b3RhbFJlZ3MJAMwIAgkApAMBBQ10b3RhbEF0dGVtcHRzBQNuaWwFA1NFUAEGcHJvbG9nAAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCCnNhdmVMYXN0VHgFA25pbAUDbmlsAQxkdWNrQnlDYWxsZXIBBmNhbGxlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBBQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQHAWkBEGNyZWF0ZVRvdXJuYW1lbnQGCXN0YXJ0VGltZQdlbmRUaW1lDHJlZ2lzdGVyQ29zdAthdHRlbXB0Q29zdAludW1HcmFuZHMJcHJpemVGdW5kBAZjYWxsZXIJAKUIAQgFAWkGY2FsbGVyAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUKYWRtaW5zTGlzdAUGY2FsbGVyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEBmxhc3RJZAkAnwgBBQ1sYXN0VG91cklkS2V5BAN0SWQDCQEJaXNEZWZpbmVkAQUGbGFzdElkBApsYXN0VG91cklkCQEFdmFsdWUBBQZsYXN0SWQEB2R5bmFtaWMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFCmxhc3RUb3VySWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFCmxhc3RUb3VySWQCBSBkYXRhBAZzdGF0dXMJAJEDAgkAtQkCBQdkeW5hbWljBQNTRVAFDnREeW5hbWljU3RhdHVzAwMJAQIhPQIFBnN0YXR1cwIIQVJDSElWRUQJAQIhPQIFBnN0YXR1cwIKUFJPQ0VTU0lORwcJAAIBCQCsAgICLEN1cnJlbnQgdG91cm5lbWVudCBpcyBub3QgY29tcGxldGVkLCBzdGF0dXM9BQZzdGF0dXMJAGQCBQpsYXN0VG91cklkAAEAAQQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAGYCBQNub3cFCXN0YXJ0VGltZQkAAgEJAKwCAgkArAICCQCsAgICCnN0YXJ0VGltZT0JAKQDAQUJc3RhcnRUaW1lAhAgPCBjcmVhdGlvblRpbWU9CQCkAwEFA25vdwMJAGYCBQlzdGFydFRpbWUFB2VuZFRpbWUJAAIBCQCsAgIJAKwCAgkArAICAghlbmRUaW1lPQkApAMBBQdlbmRUaW1lAg0gPCBzdGFydFRpbWU9CQCkAwEFCXN0YXJ0VGltZQMJAGYCCQBlAgUHZW5kVGltZQUJc3RhcnRUaW1lBRNNQVhUT1VSTkFNRU5UTEVOR1RICQACAQkArAICCQCsAgIJAKwCAgIfVG91cm5hbWVudCBwZXJpb2QgZXhjZWVkcyBtYXg6IAkApAMBCQBlAgUHZW5kVGltZQUJc3RhcnRUaW1lAgMgPiAJAKQDAQUTTUFYVE9VUk5BTUVOVExFTkdUSAMDCQBmAgAABQxyZWdpc3RlckNvc3QGCQBmAgAABQthdHRlbXB0Q29zdAkAAgEJAKwCAgkArAICCQCsAgICJENvc3Qgc2hvdWxkIGJlIHBvc2l0aXZlLCBidXQgcGFzc2VkIAkApAMBBQxyZWdpc3RlckNvc3QCBSBhbmQgCQCkAwEFC2F0dGVtcHRDb3N0AwkAZgIAAAUJbnVtR3JhbmRzCQACAQItTnVtYmVyIG9mIEdyYW5kIFByaXplcyBzaG91bGQgYmUgbm9uLW5lZ2F0aXZlAwkAZgIAAAUJcHJpemVGdW5kCQACAQIhUHJpemUgRnVuZCBzaG91bGQgYmUgbm9uLW5lZ2F0aXZlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFDWxhc3RUb3VySWRLZXkFA3RJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQEKc3RhdGljRGF0YQgJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUMcmVnaXN0ZXJDb3N0BQthdHRlbXB0Q29zdAUDbm93BQlzdGFydFRpbWUFB2VuZFRpbWUFCW51bUdyYW5kcwUJcHJpemVGdW5kCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQELZHluYW1pY0RhdGEFAgdDUkVBVEVEAgEgAAAAAAAABQNuaWwFA3RJZAFpAQhyZWdpc3RlcgAEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEBmxhc3RJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFDWxhc3RUb3VySWRLZXkCFU5vIGFjdGl2ZSB0b3VybmFtZW50cwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFBHRoaXMFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEBnN0YXR1cwkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwMJAQEhAQMDAwkAAAIFBnN0YXR1cwIHQ1JFQVRFRAkAZgIFA25vdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUMdFN0YXRpY1N0YXJ0BwkAZgIJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQRIT1VSBQNub3cHBgMJAAACBQZzdGF0dXMCCklOUFJPR1JFU1MJAGYCCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUESE9VUgUDbm93BwkAAgECE0Nhbm5vdCByZWdpc3RlciBub3cEB3JlZ0Nvc3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFE3RTdGF0aWNSZWdpc3RlckNvc3QEBndsZ0FtdAMJAGYCBQdyZWdDb3N0AAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEIBQNwbXQGYW1vdW50AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQAAAMJAQIhPQIFBndsZ0FtdAUHcmVnQ29zdAkAAgEJAKwCAgkArAICAhBOZWVkIHBheW1lbnQgb2YgCQEKZml4ZWRQb2ludAIFB3JlZ0Nvc3QACAIHIFdMR09MRAQLZHVja0Fzc2V0SWQJAQxkdWNrQnlDYWxsZXIBCAUBaQxvcmlnaW5DYWxsZXIECHNjb3JlS2V5CQETa2V5U2NvcmVCb2FyZEJ5VG91cgEFBmxhc3RJZAQNb2xkU2NvcmVCb2FyZAkBC3ZhbHVlT3JFbHNlAgkAoggBBQhzY29yZUtleQIAAwMJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBHGtleUlzUmVnaXN0ZXJlZEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkBwYJAQhjb250YWlucwIFDW9sZFNjb3JlQm9hcmQFC2R1Y2tBc3NldElkCQACAQkArAICCQCsAgIJAKwCAgIKWW91ciBkdWNrIAULZHVja0Fzc2V0SWQCJSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYXQgdG91cm5hbWVudCAJAKQDAQUGbGFzdElkBBJ1cGRhdGVkRHluYW1pY0RhdGEJAQtkeW5hbWljRGF0YQUCCklOUFJPR1JFU1MJAJEDAgUHZHluYW1pYwUPdER5bmFtaWNMZWFkZXJzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHZHluYW1pYwURdER5bmFtaWNXaW5SZXN1bHQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHZHluYW1pYwUVdER5bmFtaWNUb3RhbFJlZ0NvdW50AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkeW5hbWljBRV0RHluYW1pY1RvdGFsQXR0ZW1wdHMJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG2tleUxhc3RSZWdpc3RlcmVkVG91ckJ5RHVjawEFC2R1Y2tBc3NldElkBQZsYXN0SWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJARxrZXlJc1JlZ2lzdGVyZWRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAYJAMwIAgkBC1N0cmluZ0VudHJ5AgUIc2NvcmVLZXkDCQAAAgUNb2xkU2NvcmVCb2FyZAIACQCsAgIFC2R1Y2tBc3NldElkAgQ6MDAwCQCsAgIJAKwCAgkArAICBQ1vbGRTY29yZUJvYXJkAgFfBQtkdWNrQXNzZXRJZAIEOjAwMAkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFBmxhc3RJZAUSdXBkYXRlZER5bmFtaWNEYXRhBQNuaWwFDHByb2xvZ1Jlc3VsdAFpAQpuZXdBdHRlbXB0AAQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAQLZHVja0Fzc2V0SWQJAQxkdWNrQnlDYWxsZXIBCAUBaQxvcmlnaW5DYWxsZXIEBmxhc3RJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFDWxhc3RUb3VySWRLZXkCFU5vIGFjdGl2ZSB0b3VybmFtZW50cwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFBHRoaXMFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEBnN0YXR1cwkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwMJAQEhAQMJAAACBQZzdGF0dXMCCklOUFJPR1JFU1MJAGYCCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUESE9VUgUDbm93BwkAAgECF0F0dGVtcHQgaXMgbm90IHBvc3NpYmxlAwkBASEBCQELdmFsdWVPckVsc2UCCQCgCAEJARxrZXlJc1JlZ2lzdGVyZWRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAcJAAIBCQCsAgIJAKwCAgkArAICAgpZb3VyIGR1Y2sgBQtkdWNrQXNzZXRJZAIhIGlzIG5vdCByZWdpc3RlcmVkIGF0IHRvdXJuYW1lbnQgCQCkAwEFBmxhc3RJZAQTYXR0ZW1wdHNJdGVyYXRvcktleQkBG2tleUxhc3RBdHRlbXB0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQEC2xhc3RBdHRlbXB0CQCfCAEFE2F0dGVtcHRzSXRlcmF0b3JLZXkECyR0MDYzNzU2OTY2AwkBASEBCQEJaXNEZWZpbmVkAQULbGFzdEF0dGVtcHQJAJQKAgAAAAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEEB2F0dENvc3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFEnRTdGF0aWNBdHRlbXB0Q29zdAMJAQIhPQIFBndsZ0FtdAUHYXR0Q29zdAkAAgEJAKwCAgkArAICAhBOZWVkIHBheW1lbnQgb2YgCQEKZml4ZWRQb2ludAIFB2F0dENvc3QACAIHIFdMR09MRAkAlAoCCQBkAgkBBXZhbHVlAQULbGFzdEF0dGVtcHQAAQABBA1wYXllZEF0dGVtcHRzCAULJHQwNjM3NTY5NjYCXzEECWluY3JlbWVudAgFCyR0MDYzNzU2OTY2Al8yBBJ1cGRhdGVkRHluYW1pY0RhdGEJAQtkeW5hbWljRGF0YQUCCklOUFJPR1JFU1MJAJEDAgUHZHluYW1pYwUPdER5bmFtaWNMZWFkZXJzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHZHluYW1pYwURdER5bmFtaWNXaW5SZXN1bHQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkeW5hbWljBRV0RHluYW1pY1RvdGFsUmVnQ291bnQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHZHluYW1pYwUVdER5bmFtaWNUb3RhbEF0dGVtcHRzBQlpbmNyZW1lbnQEB3RvdXJMb2MJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhNpbml0RHVja1RvdXJBdHRlbXB0CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNhdHRlbXB0c0l0ZXJhdG9yS2V5BQ1wYXllZEF0dGVtcHRzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUGbGFzdElkBRJ1cGRhdGVkRHluYW1pY0RhdGEFA25pbAkAzAgCBQxwcm9sb2dSZXN1bHQJAMwIAgUNcGF5ZWRBdHRlbXB0cwkAzAgCBQd0b3VyTG9jBQNuaWwBaQEOc2F2ZUR1Y2tSZXN1bHQCC2R1Y2tBc3NldElkC2R1Y2tOZXdCZXN0AwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAZsYXN0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQ1sYXN0VG91cklkS2V5AhVObyBhY3RpdmUgdG91cm5hbWVudHMEBXREYXRhCQELZ2V0VG91ckRhdGECBQR0aGlzBQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBA1iZXN0UmVzdWx0S2V5CQEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkBAxzdW1TY29yZXNLZXkJARJrZXlTdW1TY29yZXNCeVRvdXIBBQZsYXN0SWQEDG9sZFN1bVNjb3JlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQxzdW1TY29yZXNLZXkAAAMJAQ5pc0luVG91cm5hbWVudAIFBHRoaXMFC2N1ckxvY2F0aW9uBAtkdWNrT2xkQmVzdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1iZXN0UmVzdWx0S2V5AAAECHNjb3JlS2V5CQETa2V5U2NvcmVCb2FyZEJ5VG91cgEFBmxhc3RJZAQNb2xkU2NvcmVCb2FyZAkBC3ZhbHVlT3JFbHNlAgkAoggBBQhzY29yZUtleQIABAskdDA4NDU5OTYyMAMJAGYCBQtkdWNrTmV3QmVzdAULZHVja09sZEJlc3QDCQEBIQEJAQhjb250YWlucwIFDW9sZFNjb3JlQm9hcmQFC2R1Y2tBc3NldElkCQACAQkArAICAhxzY29yZUJvYXJkIGRvZXMgbm90IGNvbnRhaW4gBQtkdWNrQXNzZXRJZAQHb2xkQmVzdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2R5bmFtaWMFEXREeW5hbWljV2luUmVzdWx0BAdsZWFkZXJzCQCRAwIFB2R5bmFtaWMFD3REeW5hbWljTGVhZGVycwQOb2xkTGVhZGVyc0xpc3QDAwkAAAIFB2xlYWRlcnMCAAYJAAACBQdsZWFkZXJzAgEgBQNuaWwJALwJAgUHbGVhZGVycwIBLAQObmV3TGVhZGVyc0xpc3QDCQBmAgULZHVja05ld0Jlc3QFB29sZEJlc3QJAMwIAgULZHVja0Fzc2V0SWQFA25pbAMDCQBmAgUHb2xkQmVzdAULZHVja05ld0Jlc3QGCQEPY29udGFpbnNFbGVtZW50AgUOb2xkTGVhZGVyc0xpc3QFC2R1Y2tBc3NldElkBQ5vbGRMZWFkZXJzTGlzdAkAzQgCBQ5vbGRMZWFkZXJzTGlzdAULZHVja0Fzc2V0SWQEEnVwZGF0ZWREeW5hbWljRGF0YQkBC2R5bmFtaWNEYXRhBQIKSU5QUk9HUkVTUwkAugkCBQ5uZXdMZWFkZXJzTGlzdAIBLAkAlgMBCQDMCAIFC2R1Y2tOZXdCZXN0CQDMCAIFB29sZEJlc3QFA25pbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2R5bmFtaWMFFXREeW5hbWljVG90YWxSZWdDb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2R5bmFtaWMFFXREeW5hbWljVG90YWxBdHRlbXB0cwQFcGFydHMJAL0JAgUNb2xkU2NvcmVCb2FyZAULZHVja0Fzc2V0SWQJAJUKAwkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFBXBhcnRzAAAFC2R1Y2tBc3NldElkAgE6CQEEcGFkTAIFC2R1Y2tOZXdCZXN0AAMJALACAgkAkQMCBQVwYXJ0cwABAAQJAGUCCQBkAgUMb2xkU3VtU2NvcmVzBQtkdWNrTmV3QmVzdAULZHVja09sZEJlc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQZsYXN0SWQFEnVwZGF0ZWREeW5hbWljRGF0YQUDbmlsCQCVCgMFDW9sZFNjb3JlQm9hcmQFDG9sZFN1bVNjb3JlcwUDbmlsBA1uZXdTY29yZUJvYXJkCAULJHQwODQ1OTk2MjACXzEEDG5ld1N1bVNjb3JlcwgFCyR0MDg0NTk5NjIwAl8yBA1nbG9iYWxBY3Rpb25zCAULJHQwODQ1OTk2MjACXzMJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1iZXN0UmVzdWx0S2V5CQCWAwEJAMwIAgULZHVja09sZEJlc3QJAMwIAgULZHVja05ld0Jlc3QFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMc3VtU2NvcmVzS2V5BQxuZXdTdW1TY29yZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleUJlc3RUeEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUIc2NvcmVLZXkFDW5ld1Njb3JlQm9hcmQFA25pbAUNZ2xvYmFsQWN0aW9ucwAACQCUCgIFA25pbAAAAWkBEXByb2Nlc3NUb3VybmFtZW50AQN0SWQEBmNhbGxlcgkApQgBCAUBaQZjYWxsZXIDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQphZG1pbnNMaXN0BQZjYWxsZXIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFBHRoaXMFA3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEBnN0YXR1cwkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwQNcmVnaXN0cmF0aW9ucwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2R5bmFtaWMFFXREeW5hbWljVG90YWxSZWdDb3VudAQMcGFpZEF0dGVtcHRzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHZHluYW1pYwUVdER5bmFtaWNUb3RhbEF0dGVtcHRzBAdyZWdDb3N0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBRN0U3RhdGljUmVnaXN0ZXJDb3N0BAdhdHRDb3N0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBRJ0U3RhdGljQXR0ZW1wdENvc3QDCQAAAgUGc3RhdHVzAghBUkNISVZFRAkAAgEJAKwCAgkArAICAgtUb3VybmFtZW50IAkApAMBBQN0SWQCFCBpcyBhbHJlYWR5IEFSQ0hJVkVEAwMJAAACBQZzdGF0dXMCCklOUFJPR1JFU1MJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQkArAICCQCsAgICC1RvdXJuYW1lbnQgCQCkAwEFA3RJZAIQIGlzIG5vdCBvdmVyIHlldAQSdXBkYXRlZER5bmFtaWNEYXRhCQELZHluYW1pY0RhdGEFAgpQUk9DRVNTSU5HCQCRAwIFB2R5bmFtaWMFD3REeW5hbWljTGVhZGVycwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2R5bmFtaWMFEXREeW5hbWljV2luUmVzdWx0BQ1yZWdpc3RyYXRpb25zBQxwYWlkQXR0ZW1wdHMJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAUSdXBkYXRlZER5bmFtaWNEYXRhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5VW5wYWlkUmV3YXJkc0J5VG91cgEFA3RJZAkAaQIJAGQCCQBoAgUNcmVnaXN0cmF0aW9ucwUHcmVnQ29zdAkAaAIFDHBhaWRBdHRlbXB0cwUHYXR0Q29zdAACBQNuaWwAAAFpAQpjbGFpbVByaXplAQN0SWQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFBHRoaXMFA3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEBnN0YXR1cwkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwMJAQIhPQIFBnN0YXR1cwIKUFJPQ0VTU0lORwkAAgEJAKwCAgkArAICAgtUb3VybmFtZW50IAkApAMBBQN0SWQCEiBpcyBub3QgUFJPQ0VTU0lORwQNcmVnaXN0cmF0aW9ucwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2R5bmFtaWMFFXREeW5hbWljVG90YWxSZWdDb3VudAQMcGFpZEF0dGVtcHRzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHZHluYW1pYwUVdER5bmFtaWNUb3RhbEF0dGVtcHRzBAdyZWdDb3N0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBRN0U3RhdGljUmVnaXN0ZXJDb3N0BAdhdHRDb3N0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBRJ0U3RhdGljQXR0ZW1wdENvc3QECXByaXplRnVuZAMJAGYCCQCQAwEFBnN0YXRpYwUQdFN0YXRpY1ByaXplRnVuZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUQdFN0YXRpY1ByaXplRnVuZAAABAphd2FyZEZ1bmRzCQBkAgkAaQIJAGQCCQBoAgUNcmVnaXN0cmF0aW9ucwUHcmVnQ29zdAkAaAIFDHBhaWRBdHRlbXB0cwUHYXR0Q29zdAACBQlwcml6ZUZ1bmQECXVucGFpZEtleQkBFmtleVVucGFpZFJld2FyZHNCeVRvdXIBBQN0SWQEC3VucGFpZEZ1bmRzCQELdmFsdWVPckVsc2UCCQCfCAEFCXVucGFpZEtleQAABAtkdWNrQXNzZXRJZAkBDGR1Y2tCeUNhbGxlcgEIBQFpDG9yaWdpbkNhbGxlcgMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEca2V5SXNSZWdpc3RlcmVkQnlUb3VyQW5kRHVjawIFA3RJZAULZHVja0Fzc2V0SWQHCQACAQkArAICCQCsAgIJAKwCAgIKWW91ciBkdWNrIAULZHVja0Fzc2V0SWQCISBpcyBub3QgcmVnaXN0ZXJlZCBhdCB0b3VybmFtZW50IAkApAMBBQN0SWQEDWJlc3RSZXN1bHRLZXkJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFA3RJZAULZHVja0Fzc2V0SWQECGR1Y2tCZXN0CQELdmFsdWVPckVsc2UCCQCfCAEFDWJlc3RSZXN1bHRLZXkAAAMJAAACBQhkdWNrQmVzdAAACQACAQIYWW91ciBkdWNrIGdvdCB6ZXJvIHNjb3JlBAphd2FyZGVkS2V5CQEZa2V5SXNBd2FyZGVkQnlUb3VyQW5kRHVjawIFA3RJZAULZHVja0Fzc2V0SWQDCQELdmFsdWVPckVsc2UCCQCgCAEFCmF3YXJkZWRLZXkHCQACAQkArAICCQCsAgIJAKwCAgIKWW91ciBkdWNrIAULZHVja0Fzc2V0SWQCIiBpcyBhbHJlYWR5IGF3YXJkZWQgYXQgdG91cm5hbWVudCAJAKQDAQUDdElkBAxzdW1TY29yZXNLZXkJARJrZXlTdW1TY29yZXNCeVRvdXIBBQN0SWQECXN1bVNjb3JlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQxzdW1TY29yZXNLZXkAAAQHbGVhZGVycwkAkQMCBQdkeW5hbWljBQ90RHluYW1pY0xlYWRlcnMEC2xlYWRlcnNMaXN0AwMJAAACBQdsZWFkZXJzAgAGCQAAAgUHbGVhZGVycwIBIAUDbmlsCQC8CQIFB2xlYWRlcnMCASwECm51bUxlYWRlcnMJAJADAQULbGVhZGVyc0xpc3QDCQAAAgUKbnVtTGVhZGVycwAACQACAQkArAICAhlObyBsZWFkZXJzIGF0IHRvdXJuYW1lbnQgCQCkAwEFA3RJZAQJbnVtR3JhbmRzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBRB0U3RhdGljTnVtR3JhbmRzBAl3aW5SZXN1bHQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkeW5hbWljBRF0RHluYW1pY1dpblJlc3VsdAQPc3VtTGVhZGVyU2NvcmVzAwkAZgIFCm51bUxlYWRlcnMFCW51bUdyYW5kcwAAAwkBD2NvbnRhaW5zRWxlbWVudAIFC2xlYWRlcnNMaXN0BQtkdWNrQXNzZXRJZAkAAgECMEFzIG9uZSBvZiB3aW5uZXJzLCB5b3Ugd2lsbCBiZSBhd2FyZGVkIGJ5IGFkbWlucwkAaAIFCm51bUxlYWRlcnMFCXdpblJlc3VsdAQKeW91ckFtb3VudAkAlwMBCQDMCAIJAGsDBQhkdWNrQmVzdAUKYXdhcmRGdW5kcwkAZQIFCXN1bVNjb3JlcwUPc3VtTGVhZGVyU2NvcmVzCQDMCAIFC3VucGFpZEZ1bmRzBQNuaWwED25ld1VucGFpZEFtb3VudAkAZQIFC3VucGFpZEZ1bmRzBQp5b3VyQW1vdW50BBJ1cGRhdGVkRHluYW1pY0RhdGEJAQtkeW5hbWljRGF0YQUCCEFSQ0hJVkVECQCRAwIFB2R5bmFtaWMFD3REeW5hbWljTGVhZGVycwUJd2luUmVzdWx0BQ1yZWdpc3RyYXRpb25zBQxwYWlkQXR0ZW1wdHMEDWFyY2hpdmVBY3Rpb24DCQBnAgAABQ9uZXdVbnBhaWRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQFEnVwZGF0ZWREeW5hbWljRGF0YQUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUKeW91ckFtb3VudAUKd2xnQXNzZXRJZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgUKYXdhcmRlZEtleQYJAMwIAgkBDEludGVnZXJFbnRyeQIFCXVucGFpZEtleQUPbmV3VW5wYWlkQW1vdW50BQNuaWwFDWFyY2hpdmVBY3Rpb24AAAFpAQlhd2FyZExhbmQBDXdpbm5lckFkZHJlc3MEBmNhbGxlcgkApQgBCAUBaQZjYWxsZXIDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQphZG1pbnNMaXN0BQZjYWxsZXIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQLbGFuZEFzc2V0SWQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Agphd2FyZFNMYW5kCQDMCAIFDXdpbm5lckFkZHJlc3MFA25pbAUDbmlsCQCUCgIFA25pbAULbGFuZEFzc2V0SWQAexqZnQ==", "height": 2766949, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HQoL3jmGUiXMZ24Bxu2H4HQ6d6YtGvXzdqEiuqZwtY1w Next: 3Akgkya7mbtZzHNhGEdPQxGeA2JsFs6HiMuTV4pBMN2a Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "Africa_F_Africa"
55
66 let b = 0
77
88 let c = 1
99
1010 func d (e) = ("stakedDuckByOwner_" + e)
1111
1212
1313 func f (g) = ("duckLocation_" + g)
1414
1515
1616 let h = "%s__lastTourId"
1717
1818 func i (j) = ("%s%d__tourStaticData__" + toString(j))
1919
2020
2121 func k (j) = ("%s%d__tourDynamicData__" + toString(j))
2222
2323
2424 func l (j) = ("%s%d__scoreBoard__" + toString(j))
2525
2626
2727 func m (j) = ("%s%d__sumScores__" + toString(j))
2828
2929
3030 func n (j) = ("%s%d__unpaidRewards__" + toString(j))
3131
3232
3333 func o (g) = ("%s%s__lastRegisteredTourByDuck__" + g)
3434
3535
3636 func p (j,g) = makeString(["%s%d%s__isRegisteredByTourAndDuck", toString(j), g], "__")
3737
3838
3939 func q (j,g) = makeString(["%s%d%s__isAwardedByTourAndDuck", toString(j), g], "__")
4040
4141
4242 func r (j,g) = makeString(["%s%d%s__lastAttemptByTourAndDuck", toString(j), g], "__")
4343
4444
4545 func s (j,g) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(j), g], "__")
4646
4747
4848 func t (j,g) = makeString(["%s%d%s__bestTxByTourAndDuck", toString(j), g], "__")
4949
5050
5151 let u = 0
5252
5353 let v = 1
5454
5555 let w = 2
5656
5757 let x = 3
5858
5959 let y = 5
6060
6161 let z = 6
6262
6363 let A = 7
6464
6565 let B = 8
6666
6767 let C = 1
6868
6969 let D = 2
7070
7171 let E = 3
7272
7373 let F = 4
7474
7575 let G = 5
7676
7777 func H (I,j) = {
7878 let J = split(valueOrErrorMessage(getString(I, i(j)), (("Error reading tournament " + toString(j)) + " data")), "__")
7979 let K = split_4C(valueOrErrorMessage(getString(I, k(j)), (("Error reading tournament " + toString(j)) + " data")), "__")
8080 [J, K]
8181 }
8282
8383
8484 func L (I,M) = {
8585 let N = valueOrElse(getInteger(I, h), 0)
8686 let O = split(M, "_")
8787 let P = lastBlock.timestamp
8888 let Q = H(I, N)
8989 let J = Q[u]
9090 let K = Q[v]
9191 if (if (if ((O[c] == "T"))
9292 then (parseIntValue(O[b]) == N)
9393 else false)
9494 then (K[C] == "INPROGRESS")
9595 else false)
9696 then (parseIntValue(J[z]) > P)
9797 else false
9898 }
9999
100100
101101 let R = take(drop(this.bytes, 1), 1)
102102
103103 let S = {
104104 let T = R
105105 if ((base58'2W' == T))
106106 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
107107 else if ((base58'2T' == T))
108108 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
109109 else throw("Unknown chain")
110110 }
111111
112112 let U = "__"
113113
114114 func V (W,X) = valueOrErrorMessage(getString(W, X), makeString(["mandatory ", toString(W), ".", X, " is not defined"], ""))
115115
116116
117117 let Y = 1
118118
119119 let Z = 4
120120
121121 func aa () = "%s__restConfig"
122122
123123
124124 func ab () = "%s__restAddr"
125125
126126
127127 func ac (ad) = split_4C(V(ad, aa()), U)
128128
129129
130130 func ae (af,ag) = valueOrErrorMessage(addressFromString(af[ag]), ("Rest cfg doesn't contain address at index " + toString(ag)))
131131
132132
133133 let ah = addressFromStringValue(valueOrElse(getString(this, ab()), S))
134134
135135 let af = ac(ah)
136136
137137 let ai = ae(af, Y)
138138
139139 let aj = ae(af, Z)
140140
141141 let ak = "wlg_assetId"
142142
143143 let al = valueOrErrorMessage(getBinary(aj, ak), "WLGOLD is not issued yet")
144144
145145 func am (an) = {
146146 let T = an
147147 if ($isInstanceOf(T, "String"))
148148 then {
149149 let ao = T
150150 ao
151151 }
152152 else throw("fail to cast into String")
153153 }
154154
155155
156156 func ap (an) = {
157157 let T = an
158158 if ($isInstanceOf(T, "Int"))
159159 then {
160160 let aq = T
161161 aq
162162 }
163163 else throw("fail to cast into Int")
164164 }
165165
166166
167167 func ar (as,at) = {
168168 let au = pow(10, 0, at, 0, 0, DOWN)
169169 let av = toString((as % au))
170170 let aw = drop(toString(au), (1 + size(av)))
171171 (((toString((as / au)) + ".") + aw) + av)
172172 }
173173
174174
175175 func ax (as,ay) = {
176176 let az = toString(as)
177177 let aw = drop(toString(pow(10, 0, (ay - size(az)), 0, 0, DOWN)), 1)
178178 (aw + az)
179179 }
180180
181181
182182 let aA = 432000000
183183
184184 let aB = 3600000
185185
186186 let aC = [toString(this), {
187187 let T = R
188188 if ((base58'2W' == T))
189189 then "3PEe2RELUHCFCBsmSCNcBJ8N3URLVQende7"
190190 else if ((base58'2T' == T))
191191 then "3MtBgJTaLxPB3C7UJD1UE8qjkHthfKvFQYY"
192192 else throw("Unknown chain")
193193 }]
194194
195195 func aD (aE,aF,aG,aH,aI,aJ,aK,aL) = makeString(["%s%d%d%d%d%d%d%d", aE, toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL)], U)
196196
197197
198198 func aM (aN,aO,aP,aQ,aR) = makeString_2C(["%s%s%d%d%d", aN, aO, toString(aP), toString(aQ), toString(aR)], U)
199199
200200
201201 func aS () = ap(invoke(ai, "saveLastTx", nil, nil))
202202
203203
204204 func aT (aU) = valueOrErrorMessage(getString(ai, d(toString(aU))), "You don't have a duck staked")
205205
206206
207207 @Callable(aV)
208208 func createTournament (aI,aJ,aF,aG,aK,aL) = {
209209 let aU = toString(aV.caller)
210210 if (!(containsElement(aC, aU)))
211211 then throw("Permission denied")
212212 else {
213213 let N = getInteger(h)
214214 let j = if (isDefined(N))
215215 then {
216216 let aW = value(N)
217217 let K = valueOrErrorMessage(getString(k(aW)), (("Error reading tournament " + toString(aW)) + " data"))
218218 let aN = split(K, U)[C]
219219 if (if ((aN != "ARCHIVED"))
220220 then (aN != "PROCESSING")
221221 else false)
222222 then throw(("Current tournement is not completed, status=" + aN))
223223 else (aW + 1)
224224 }
225225 else 1
226226 let P = lastBlock.timestamp
227227 if ((P > aI))
228228 then throw(((("startTime=" + toString(aI)) + " < creationTime=") + toString(P)))
229229 else if ((aI > aJ))
230230 then throw(((("endTime=" + toString(aJ)) + " < startTime=") + toString(aI)))
231231 else if (((aJ - aI) > aA))
232232 then throw(((("Tournament period exceeds max: " + toString((aJ - aI))) + " > ") + toString(aA)))
233233 else if (if ((0 > aF))
234234 then true
235235 else (0 > aG))
236236 then throw(((("Cost should be positive, but passed " + toString(aF)) + " and ") + toString(aG)))
237237 else if ((0 > aK))
238238 then throw("Number of Grand Prizes should be non-negative")
239239 else if ((0 > aL))
240240 then throw("Prize Fund should be non-negative")
241241 else $Tuple2([IntegerEntry(h, j), StringEntry(i(j), aD(toBase58String(aV.transactionId), aF, aG, P, aI, aJ, aK, aL)), StringEntry(k(j), aM("CREATED", " ", 0, 0, 0))], j)
242242 }
243243 }
244244
245245
246246
247247 @Callable(aV)
248248 func register () = {
249249 let aX = aS()
250250 let N = valueOrErrorMessage(getInteger(h), "No active tournaments")
251251 let P = lastBlock.timestamp
252252 let Q = H(this, N)
253253 let J = Q[u]
254254 let K = Q[v]
255255 let aN = K[C]
256256 if (!(if (if (if ((aN == "CREATED"))
257257 then (P > parseIntValue(J[y]))
258258 else false)
259259 then ((parseIntValue(J[z]) - aB) > P)
260260 else false)
261261 then true
262262 else if ((aN == "INPROGRESS"))
263263 then ((parseIntValue(J[z]) - aB) > P)
264264 else false))
265265 then throw("Cannot register now")
266266 else {
267267 let aY = parseIntValue(J[w])
268268 let aZ = if ((aY > 0))
269269 then if ((size(aV.payments) != 1))
270270 then throw("exactly 1 payment must be attached")
271271 else {
272272 let ba = aV.payments[0]
273273 if (if (!(isDefined(ba.assetId)))
274274 then true
275275 else (value(ba.assetId) != al))
276276 then throw("WLGOLD payments only!")
277277 else ba.amount
278278 }
279279 else if ((size(aV.payments) != 0))
280280 then throw("No payments required")
281281 else 0
282282 if ((aZ != aY))
283283 then throw((("Need payment of " + ar(aY, 8)) + " WLGOLD"))
284284 else {
285285 let g = aT(aV.originCaller)
286286 let bb = l(N)
287287 let bc = valueOrElse(getString(bb), "")
288288 if (if (valueOrElse(getBoolean(p(N, g)), false))
289289 then true
290290 else contains(bc, g))
291291 then throw(((("Your duck " + g) + " is already registered at tournament ") + toString(N)))
292292 else {
293293 let bd = aM("INPROGRESS", K[D], parseIntValue(K[E]), (parseIntValue(K[F]) + 1), parseIntValue(K[G]))
294294 $Tuple2([IntegerEntry(o(g), N), BooleanEntry(p(N, g), true), StringEntry(bb, if ((bc == ""))
295295 then (g + ":000")
296296 else (((bc + "_") + g) + ":000")), StringEntry(k(N), bd)], aX)
297297 }
298298 }
299299 }
300300 }
301301
302302
303303
304304 @Callable(aV)
305305 func newAttempt () = {
306306 let aX = aS()
307307 let g = aT(aV.originCaller)
308308 let N = valueOrErrorMessage(getInteger(h), "No active tournaments")
309309 let P = lastBlock.timestamp
310310 let Q = H(this, N)
311311 let J = Q[u]
312312 let K = Q[v]
313313 let aN = K[C]
314314 if (!(if ((aN == "INPROGRESS"))
315315 then ((parseIntValue(J[z]) - aB) > P)
316316 else false))
317317 then throw("Attempt is not possible")
318318 else if (!(valueOrElse(getBoolean(p(N, g)), false)))
319319 then throw(((("Your duck " + g) + " is not registered at tournament ") + toString(N)))
320320 else {
321321 let be = r(N, g)
322322 let bf = getInteger(be)
323323 let bg = if (!(isDefined(bf)))
324324 then $Tuple2(0, 0)
325325 else if ((size(aV.payments) != 1))
326326 then throw("exactly 1 payment must be attached")
327327 else {
328328 let ba = aV.payments[0]
329329 let aZ = ba.amount
330330 if (if (!(isDefined(ba.assetId)))
331331 then true
332332 else (value(ba.assetId) != al))
333333 then throw("WLGOLD payments only!")
334334 else {
335335 let bh = parseIntValue(J[x])
336336 if ((aZ != bh))
337337 then throw((("Need payment of " + ar(bh, 8)) + " WLGOLD"))
338338 else $Tuple2((value(bf) + 1), 1)
339339 }
340340 }
341341 let bi = bg._1
342342 let bj = bg._2
343343 let bd = aM("INPROGRESS", K[D], parseIntValue(K[E]), parseIntValue(K[F]), (parseIntValue(K[G]) + bj))
344344 let bk = am(invoke(ai, "initDuckTourAttempt", [g], nil))
345345 $Tuple2([IntegerEntry(be, bi), StringEntry(k(N), bd)], [aX, bi, bk])
346346 }
347347 }
348348
349349
350350
351351 @Callable(aV)
352352 func saveDuckResult (g,bl) = if ((aV.caller != ai))
353353 then throw("Access denied")
354354 else {
355355 let N = valueOrErrorMessage(getInteger(h), "No active tournaments")
356356 let Q = H(this, N)
357357 let J = Q[u]
358358 let K = Q[v]
359359 let bm = valueOrElse(getString(ai, f(g)), a)
360360 let bn = s(N, g)
361361 let bo = m(N)
362362 let bp = valueOrElse(getInteger(bo), 0)
363363 if (L(this, bm))
364364 then {
365365 let bq = valueOrElse(getInteger(bn), 0)
366366 let bb = l(N)
367367 let bc = valueOrElse(getString(bb), "")
368368 let br = if ((bl > bq))
369369 then if (!(contains(bc, g)))
370370 then throw(("scoreBoard does not contain " + g))
371371 else {
372372 let bs = parseIntValue(K[E])
373373 let aO = K[D]
374374 let bt = if (if ((aO == ""))
375375 then true
376376 else (aO == " "))
377377 then nil
378378 else split_4C(aO, ",")
379379 let bu = if ((bl > bs))
380380 then [g]
381381 else if (if ((bs > bl))
382382 then true
383383 else containsElement(bt, g))
384384 then bt
385385 else (bt :+ g)
386386 let bd = aM("INPROGRESS", makeString_2C(bu, ","), max([bl, bs]), parseIntValue(K[F]), parseIntValue(K[G]))
387387 let bv = split_51C(bc, g)
388388 $Tuple3(((((bv[0] + g) + ":") + ax(bl, 3)) + drop(bv[1], 4)), ((bp + bl) - bq), [StringEntry(k(N), bd)])
389389 }
390390 else $Tuple3(bc, bp, nil)
391391 let bw = br._1
392392 let bx = br._2
393393 let by = br._3
394394 $Tuple2(([IntegerEntry(bn, max([bq, bl])), IntegerEntry(bo, bx), StringEntry(t(N, g), toBase58String(aV.transactionId)), StringEntry(bb, bw)] ++ by), 0)
395395 }
396396 else $Tuple2(nil, 0)
397397 }
398398
399399
400400
401401 @Callable(aV)
402402 func processTournament (j) = {
403403 let aU = toString(aV.caller)
404404 if (!(containsElement(aC, aU)))
405405 then throw("Permission denied")
406406 else {
407407 let P = lastBlock.timestamp
408408 let Q = H(this, j)
409409 let J = Q[u]
410410 let K = Q[v]
411411 let aN = K[C]
412412 let bz = parseIntValue(K[F])
413413 let bA = parseIntValue(K[G])
414414 let aY = parseIntValue(J[w])
415415 let bh = parseIntValue(J[x])
416416 if ((aN == "ARCHIVED"))
417417 then throw((("Tournament " + toString(j)) + " is already ARCHIVED"))
418418 else if (if ((aN == "INPROGRESS"))
419419 then (parseIntValue(J[z]) > P)
420420 else false)
421421 then throw((("Tournament " + toString(j)) + " is not over yet"))
422422 else {
423423 let bd = aM("PROCESSING", K[D], parseIntValue(K[E]), bz, bA)
424424 $Tuple2([StringEntry(k(j), bd), IntegerEntry(n(j), (((bz * aY) + (bA * bh)) / 2))], 0)
425425 }
426426 }
427427 }
428428
429429
430430
431431 @Callable(aV)
432432 func claimPrize (j) = {
433433 let aX = aS()
434434 if ((size(aV.payments) != 0))
435435 then throw("No payments required")
436436 else {
437437 let Q = H(this, j)
438438 let J = Q[u]
439439 let K = Q[v]
440440 let aN = K[C]
441441 if ((aN != "PROCESSING"))
442442 then throw((("Tournament " + toString(j)) + " is not PROCESSING"))
443443 else {
444444 let bz = parseIntValue(K[F])
445445 let bA = parseIntValue(K[G])
446446 let aY = parseIntValue(J[w])
447447 let bh = parseIntValue(J[x])
448448 let aL = if ((size(J) > B))
449449 then parseIntValue(J[B])
450450 else 0
451451 let bB = ((((bz * aY) + (bA * bh)) / 2) + aL)
452452 let bC = n(j)
453453 let bD = valueOrElse(getInteger(bC), 0)
454454 let g = aT(aV.originCaller)
455455 if (!(valueOrElse(getBoolean(p(j, g)), false)))
456456 then throw(((("Your duck " + g) + " is not registered at tournament ") + toString(j)))
457457 else {
458458 let bn = s(j, g)
459459 let bE = valueOrElse(getInteger(bn), 0)
460460 if ((bE == 0))
461461 then throw("Your duck got zero score")
462462 else {
463463 let bF = q(j, g)
464464 if (valueOrElse(getBoolean(bF), false))
465465 then throw(((("Your duck " + g) + " is already awarded at tournament ") + toString(j)))
466466 else {
467467 let bo = m(j)
468468 let bG = valueOrElse(getInteger(bo), 0)
469469 let aO = K[D]
470470 let bH = if (if ((aO == ""))
471471 then true
472472 else (aO == " "))
473473 then nil
474474 else split_4C(aO, ",")
475475 let bI = size(bH)
476476 if ((bI == 0))
477477 then throw(("No leaders at tournament " + toString(j)))
478478 else {
479479 let aK = parseIntValue(J[A])
480480 let aP = parseIntValue(K[E])
481481 let bJ = if ((bI > aK))
482482 then 0
483483 else if (containsElement(bH, g))
484484 then throw("As one of winners, you will be awarded by admins")
485485 else (bI * aP)
486486 let bK = min([fraction(bE, bB, (bG - bJ)), bD])
487487 let bL = (bD - bK)
488488 let bd = aM("ARCHIVED", K[D], aP, bz, bA)
489489 let bM = if ((0 >= bL))
490490 then [StringEntry(k(j), bd)]
491491 else nil
492492 $Tuple2(([ScriptTransfer(aV.caller, bK, al), BooleanEntry(bF, true), IntegerEntry(bC, bL)] ++ bM), 0)
493493 }
494494 }
495495 }
496496 }
497497 }
498498 }
499499 }
500500
501501
502502
503503 @Callable(aV)
504504 func awardLand (bN) = {
505505 let aU = toString(aV.caller)
506506 if (!(containsElement(aC, aU)))
507507 then throw("Permission denied")
508508 else {
509509 let bO = am(invoke(ai, "awardSLand", [bN], nil))
510510 $Tuple2(nil, bO)
511511 }
512512 }
513513
514514

github/deemru/w8io/169f3d6 
106.23 ms