tx · 6UsuFaZNWUaeRdn9gxRU2Mid97XP6sfp36AXoGZaqY2C

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03100000 Waves

2022.09.19 15:39 [2236023] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "6UsuFaZNWUaeRdn9gxRU2Mid97XP6sfp36AXoGZaqY2C", "fee": 3100000, "feeAssetId": null, "timestamp": 1663591218994, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "5mbyCmbNLq1RjkqN4jcSx2DBwDnLusWaGKki5t1shb5NBfaTUYf96VpJYkL3iu6kHnUWsPXgTi9fNeXwpc6atk7" ], "script": "base64:BgLSHggCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIIdGhvdXNhbmQiCnplcm9CaWdJbnQiCW9uZUJpZ0ludCIKc2xpcHBhZ2U0RCIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiEmZlZVBlcm1pbGxlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIg5rZXlGZWVQZXJtaWxsZSILZmVlUGVybWlsbGUiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIDZmNhIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIDdmFkIgJBMSICQTIiCHNsaXBwYWdlIgRkaWZmIgRwYXNzIgJ2ZCICRDEiAkQwIgRzbHBnIgRmYWlsIgNwY3AiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCILYW10QXNBbXRYMTgiCnByQXNBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IgNmZWUiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAxNjI3MTE2NjE2Igp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIDbW9hIgVvcmRlciIHYW10QXNJZCIGcHJBc0lkIg9hY2NBbXRBc0JhbGFuY2UiDmFjY1ByQXNCYWxhbmNlIgpvckFtdEFzc2V0IgpvckFtdEFzU3RyIglvclByQXNzZXQiCW9yUHJBc1N0ciIKb3JkZXJQcmljZSIOY2FzdE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgJjZyIBaSIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10IhNlc3RpbWF0ZVB1dE9uZVRrblYyIglwbXRBbXRSYXciCnBvb2xDb25maWciDSR0MDIwOTQyMjA5ODciCWZlZUFtb3VudCINJHQwMjA5OTEyMTQ1MiIMYW1CYWxhbmNlTm93IgxwckJhbGFuY2VOb3ciDSR0MDIxNDU2MjE1OTAiEGFtQmFsYW5jZUZvckNhbGMiEHByQmFsYW5jZUZvckNhbGMiCnhQcmVjaXNpb24iBnJlc3VsdCIBQCINJHQwMjIwNTkyMjE1NSILYW1Bc3NldFBhcnQiC3ByQXNzZXRQYXJ0IgZlc3RQdXQiB2VzdGltTFAiCWxwQXNzZXRJZCIBbSIBcyICcG0iAnBkIgJtbSICcGsiAWMiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgFlIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyIFb3V0THAiB2d3eENudHIiB3Bvb2xDZmciBWFkZG9uIhBwYXltZW50QW1vdW50UmF3Ig0kdDAyNzEyNTI3MTc3Ig0kdDAyNzMzNzI3OTUzIgx2aXJ0U3dhcEluQW0iDXZpcnRTd2FwT3V0UHIiDHZpcnRTd2FwSW5QciINdmlydFN3YXBPdXRBbSIGRDB2c0QxIglscENhbGNSZXMiEHNlbmRGZWVUb01hdGNoZXIiDG1pbk91dEFtb3VudCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyINcGF5bWVudEFtb3VudCIOcGF5bWVudEFzc2V0SWQiD2xwQXNzZXRFbWlzc2lvbiINJHQwMzI3ODAzMzA4OSIQcHJpY2VBc3NldEFtb3VudCIRYW1vdW50QXNzZXRBbW91bnQiCWxwQW10Qm90aCIPbHBBc3NldFByaWNlT25lIhBscEFzc2V0UHJpY2VCb3RoIgVib251cyIHbWF4U2xwZyIJb3V0QW10QW10IgFiIgpleGNoUmVzdWx0Igdub3RVc2VkIglvdXRBbW91bnQiCm91dEFzc2V0SWQiCmVzdGltQW1BbXQiCmVzdGltUHJBbXQiDSR0MDM2MzcwMzY4MzAiC3RvdGFsR2V0UmF3Igh0b3RhbEdldCIIZmluYWxSZXMiDSR0MDM3NTc3Mzc2ODEiBW91dEFtIgVvdXRQciILdG90YWxBbW91bnQiEW91dEFzc2V0SWRPcldhdmVzIghjdXJQclgxOCIFY3VyUHIiBGJ1cm4iCnBvb2xTdGF0dXMiDSR0MDM5Nzc1Mzk4NjIiDWxwQXNzZXRBbW91bnQiDSR0MDQwOTU2NDEyMjciFGFtb3VudEJhbGFuY2VGb3JTd2FwIhNwcmljZUJhbGFuY2VGb3JTd2FwIgxhbW91bnRUb1N3YXAiCnlQcmVjaXNpb24iDSR0MDQxNzk5NDE4NDgiDSR0MDQyMTkyNDIzMDciEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINdW5zdGFrZUFtb3VudCIPb3V0QW1vdW50UmVzdWx0IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hXAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkAOgHAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFoAgMxMDAAAWkCATEAAWoCAl9fAAFrAgAAAWwAAQABbQACAAFuAAMAAW8ABAABcAABAAFxAAIAAXIAAwABcwAEAAF0AAUAAXUABgABdgAHAAF3AAgAAXgACQABeQABAAF6AAcAAUEACgABQgAAAQFDAgFEAUUJALwCAwkAtgIBBQFEBQFjCQC2AgEFAUUBAUYCAUcBSAkAoAMBCQC8AgMFAUcJALYCAQUBSAUBYwEBSQMBSgFLAUwJAGsDBQFKBQFLBQFMAQFNAQFHAwkAvwICBQFlBQFHCQC+AgEFAUcFAUcBAU4AAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFPAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVAAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVEAAhElcyVzX19wcmljZV9fbGFzdAEBUgIBUwFUCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBUwkAzAgCCQCkAwEFAVQFA25pbAUBagEBVQIBVgFXCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBVgICX18FAVcBAVgCAVYBVwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVYCAl9fBQFXAQFZAAIPJXNfX2Ftb3VudEFzc2V0AQFaAAIOJXNfX3ByaWNlQXNzZXQBAmFhAAIHJXNfX2FtcAECYWIAAg0lc19fYWRkb25BZGRyAAJhYwIPJXNfX2ZlZVBlcm1pbGxlAAJhZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhYwUBQgECYWUAAhElc19fZmFjdG9yeUNvbmZpZwECYWYAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFnAgJhaAJhaQkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWgCAl9fBQJhaQIIX19jb25maWcBAmFqAQJhawkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhawECYWwAAgwlc19fc2h1dGRvd24BAmFtAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFuAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFvAwJhcAJhcQJhcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhcAILIHNuZHJWYWxpZD0JAKUDAQUCYXECDCBtdGNoclZhbGlkPQkApQMBBQJhcgECYXMBAUcEAmF0BQFHAwkAAQIFAmF0AgZTdHJpbmcEAmF1BQJhdAUCYXUJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQJhdgICYXcCYXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhdwUCYXgJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXcJAMwIAgIBLgkAzAgCBQJheAkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJheQICYXcCYXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhdwUCYXgJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXcJAMwIAgIBLgkAzAgCBQJheAkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAAJhegkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF2AgUEdGhpcwkBAU4AAAJhQQkBAmF2AgUEdGhpcwkBAmFhAAECYUIACQELdmFsdWVPckVsc2UCCQCbCAIFAmF6CQECYWwABwECYUMACQDZBAEJAQJhdgIFAmF6CQECYWYAAAJhRAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF2AgUCYXoJAQJhbgABAmFFAAQCYUYJAQJhdgIFBHRoaXMJAQFZAAQCYUcJAQJhdgIFBHRoaXMJAQFaAAQCYUgJAQJheQIFAmF6CQECYWoBBQJhRwQCYWgJAQJheQIFAmF6CQECYWoBBQJhRgkAtQkCCQECYXYCBQJhegkBAmFnAgkApAMBBQJhaAkApAMBBQJhSAUBagECYUkACQC1CQIJAQJhdgIFAmF6CQECYWUABQFqAAJhSgkBAmFJAAACYUsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFKBQF5AiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYUwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFKBQF6AiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYU0JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFKBQFBAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJhTgoCYU8CYVACYVECYVICYVMCYVQCYVUCYVYCYVcCYVgJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmFPCQDMCAIJAKQDAQUCYVAJAMwIAgkApAMBBQJhUQkAzAgCCQCkAwEFAmFSCQDMCAIJAKQDAQUCYVMJAMwIAgkApAMBBQJhVAkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYVYJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYBQNuaWwFAWoBAmFZBgJhWgJiYQJiYgJhUgJhVQJhVgkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmFaCQDMCAIJAKQDAQUCYmEJAMwIAgkApAMBBQJiYgkAzAgCCQCkAwEFAmFSCQDMCAIJAKQDAQUCYVUJAMwIAgkApAMBBQJhVgUDbmlsBQFqAQJiYwECYmQDCQAAAgUCYmQCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJkAQJiZQICYmYCYmcJALwCAwUCYmYFAWMFAmJnAQJiaAMCYmkCYmoCYmsEAmJsCQC8AgMJALgCAgUCYmkFAmJqBQFiBQJiagQCYm0JAL8CAgkAuAICBQJiawkBAU0BBQJibAUBZQMJAQEhAQUCYm0JAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYmwJAJQKAgUCYm0JAJkDAQkAzAgCBQJiaQkAzAgCBQJiagUDbmlsAQJibgMCYm8CYnACYnEEAmJsCQC8AgMFAmJwBQFiBQJibwQCYnIJAL8CAgUCYnEFAmJsAwMFAmJyBgkAvwICBQJicAUCYm8JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJwAgEgCQCmAwEFAmJvAgEgCQCmAwEFAmJsAgEgCQCmAwEFAmJxBQJicgECYnMEAmJ0AmJ1AmJ2AmJ3BAJieAkBAUMCBQJidgUCYnQEAmJ5CQEBQwIFAmJ3BQJidQkBAmJlAgUCYnkFAmJ4AQJiegMCYnYCYncCYkEEAmJCCQECYUUABAJiQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQF1BAJiRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQF2BAJiRQkBAmJzBAUCYkMFAmJEBQJidgUCYncEAmJnCQEBQwIFAmJ2BQJiQwQCYmYJAQFDAgUCYncFAmJEBAJiRgkBAUMCBQJiQQUBYQQCYkcJAQJiZQIFAmJnBQJiRgQCYkgJAQJiZQIFAmJmBQJiRgkAzAgCBQJiRQkAzAgCBQJiRwkAzAgCBQJiSAUDbmlsAQJiSQMCYnYCYncCYkEEAmJKCQECYnoDBQJidgUCYncFAmJBCQDMCAIJAQFGAgkAkQMCBQJiSgAABQFhCQDMCAIJAQFGAgkAkQMCBQJiSgABBQFhCQDMCAIJAQFGAgkAkQMCBQJiSgACBQFhBQNuaWwBAmJLAQJiTAQCYk0JAGsDBQJiTAUCYWQFAWQJAJQKAgkAZQIFAmJMBQJiTQUCYk0BAmJOBAJiTwJiUAJiUQJiUgQCYkIJAQJhRQAEAmJTCQCRAwIFAmJCBQFyBAJiVAkAkQMCBQJiQgUBcwQCYlUJAJEDAgUCYkIFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkIFAXUEAmJXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkIFAXYEAmJYCQCRAwIFAmJCBQFxBAJiWQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJTAgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmJTBQJiUAkAAgECD1dyb25nIHBtdCBhc3NldAQCYloJAQJiYwEFAmJUBAJjYQkBAUMCBQJiWgUCYlYEAmNiCQECYmMBBQJiVQQCY2MJAQFDAgUCY2IFAmJXBAJjZAkBAmJlAgUCY2MFAmNhBAJjZQkBAUYCBQJjZAUBYQQCY2YJAQFDAgUCYlEFAWEEAmNnCQEBQwIFAmJZBQFhBAJjaAkAvAIDBQJjYQUCY2YFAmNnBAJjaQkAvAIDBQJjYwUCY2YFAmNnBAJjagkBAUYCBQJjaAUCYlYEAmNrCQEBRgIFAmNpBQJiVwQCY2wDCQAAAgUCYk8CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJSBQJjagMJAAACBQJiVAIFV0FWRVMFBHVuaXQJANkEAQUCYlQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlIFAmNrAwkAAAIFAmJVAgVXQVZFUwUEdW5pdAkA2QQBBQJiVQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWAIJAKUIAQUCYlIFAmJPCQECYVkGBQJjagUCY2sFAmJRBQJjZQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVEABQJjZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVICBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZQUDbmlsCQCcCgoFAmNqBQJjawUCYlQFAmJVBQJiWgUCY2IFAmJZBQJjZAUCYlgFAmNsAQJjbQ0CYk8CYmsCY24CY28CY3ACY3ECYlICY3ICY3MCY3QCY3UCY3YCY3cEAmJCCQECYUUABAJiUwkA2QQBCQCRAwIFAmJCBQFyBAJjeAkAkQMCBQJiQgUBcwQCY3kJAJEDAgUCYkIFAXQEAmN6CQCRAwIFAmJCBQF3BAJjQQkAkQMCBQJiQgUBeAQCY0IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQgUBdQQCY0MJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQgUBdgQCYlgJAJEDAgUCYkIFAXEEAmNECAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJTAghXciBscCBhcwhxdWFudGl0eQQCYloDBQJjcgkBAmJjAQUCY3gDAwUCY3QJAAACBQJjdwUCY3gHCQBlAgkBAmJjAQUCY3gFAmN2AwUCY3QJAQJiYwEFAmN4CQBlAgkBAmJjAQUCY3gFAmNuBAJjYgMFAmNyCQECYmMBBQJjeQMDBQJjdAkAAAIFAmN3BQJjeQcJAGUCCQECYmMBBQJjeQUCY3YDBQJjdAkBAmJjAQUCY3kJAGUCCQECYmMBBQJjeQUCY3AEAmNFCQEBQwIFAmNuBQJjQgQCY0YJAQFDAgUCY3AFAmNDBAJjRwkBAmJlAgUCY0YFAmNFBAJjYQkBAUMCBQJiWgUCY0IEAmNjCQEBQwIFAmNiBQJjQwQCY0gDCQAAAgUCY0QAAAQCY2QFAWUEAmNJBQFlBAJiRgkAdgYJALkCAgUCY0UFAmNGAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRgIFAmJGBQFhCQEBRgIFAmNFBQJjQgkBAUYCBQJjRgUCY0MJAQJiZQIJALcCAgUCY2MFAmNGCQC3AgIFAmNhBQJjRQUCY0kEAmNkCQECYmUCBQJjYwUCY2EEAmNKCQC8AgMJAQFNAQkAuAICBQJjZAUCY0cFAWMFAmNkBAJjSQkBAUMCBQJiawUBYQMDAwUCY3UJAQIhPQIFAmNkBQFlBwkAvwICBQJjSgUCY0kHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNKAgMgPiAJAKYDAQUCY0kEAmNLCQEBQwIFAmNEBQFhBAJjTAkAvAIDBQJjRQUCY2QFAWMEAmNNCQC8AgMFAmNGBQFjBQJjZAQCY04DCQC/AgIFAmNMBQJjRgkAlAoCBQJjTQUCY0YJAJQKAgUCY0UFAmNMBAJjTwgFAmNOAl8xBAJjUAgFAmNOAl8yBAJiRgkAvAIDBQJjSwUCY1AFAmNjCQCXCgUJAQFGAgUCYkYFAWEJAQFGAgUCY08FAmNCCQEBRgIFAmNQBQJjQwUCY2QFAmNJBAJjUQgFAmNIAl8xBAJjUggFAmNIAl8yBAJjUwgFAmNIAl8zBAJjZQkBAUYCCAUCY0gCXzQFAWEEAmNUCQEBRgIIBQJjSAJfNQUBYQMJAGcCAAAFAmNRCQACAQIHTFAgPD0gMAQCY1UDCQEBIQEFAmNzAAAFAmNRBAJjVgkAZQIFAmNuBQJjUgQCY1cJAGUCBQJjcAUCY1MEAmNYAwMFAmN0CQAAAgUCY3cFAmN4BwkAlAoCBQJjdgAAAwMFAmN0CQAAAgUCY3cFAmN5BwkAlAoCAAAFAmN2CQCUCgIFAmNSBQJjUwQCY1kIBQJjWAJfMQQCY1oIBQJjWAJfMgQCZGEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAAUCY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQJiUgUCYk8JAQJhTgoFAmNZBQJjWgUCY1UFAmNlBQJiawUCY1QFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNWBQJjVwUDbmlsCQCfCg0FAmNRBQJjVQUCY2UFAmJaBQJjYgUCY0QFAmJTBQJiWAUCZGEFAmNWBQJjVwUCY28FAmNxAQJkYgECZGMEAmJCCQECYUUABAJkZAkAkQMCBQJiQgUBcwQCZGUJAJEDAgUCYkIFAXQEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkIFAXEEAmJDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkIFAXUEAmJECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkIFAXYEAmRmCQECYmMBBQJkZAQCZGcJAQJiYwEFAmRlBAJjZAMJAAACCAUCZGMJb3JkZXJUeXBlBQNCdXkJAQJicwQFAmJDBQJiRAkAZAIFAmRmCAUCZGMGYW1vdW50BQJkZwkBAmJzBAUCYkMFAmJECQBlAgUCZGYIBQJkYwZhbW91bnQFAmRnBAJjZQkBAUYCBQJjZAUBYQMDAwkBAmFCAAYJAAACBQJiWAUBbgYJAAACBQJiWAUBbwkAAgECDUFkbWluIGJsb2NrZWQEAmRoCAgFAmRjCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZGkDCQAAAgUCZGgFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRoBAJkaggIBQJkYwlhc3NldFBhaXIKcHJpY2VBc3NldAQCZGsDCQAAAgUCZGoFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRqAwMJAQIhPQIFAmRpBQJkZAYJAQIhPQIFAmRrBQJkZQkAAgECCVdyIGFzc2V0cwQCZGwIBQJkYwVwcmljZQQCY0MJAGsDBQFhBQJiRAUCYkMEAmRtCQEBSQMFAmRsBQFhBQJjQwQCZG4DCQAAAggFAmRjCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2UFAmRtCQBnAgUCZG0FAmNlBgECZG8BAmRwAwkBAiE9AgkAkAMBCAUCZHAIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmRxCQEFdmFsdWUBCQCRAwIIBQJkcAhwYXltZW50cwAABAJiUAkBBXZhbHVlAQgFAmRxB2Fzc2V0SWQEAmN2CAUCZHEGYW1vdW50BAJjSAkBAmJOBAkA2AQBCAUCZHANdHJhbnNhY3Rpb25JZAkA2AQBBQJiUAUCY3YIBQJkcAZjYWxsZXIEAmNqCAUCY0gCXzEEAmNrCAUCY0gCXzIEAmJYCQENcGFyc2VJbnRWYWx1ZQEIBQJjSAJfOQQCY2wIBQJjSANfMTADAwkBAmFCAAYJAAACBQJiWAUBbwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmJYCQCXCgUFAmNqBQJjawUCY3YFAmJQBQJjbAECZHIKAmRzAVcCZHQCZHUCYmsCY3MCY3QCY3UCY3YCY3cEAmNICQECY20NBQFXBQJiawgJAQV2YWx1ZQEFAmR0BmFtb3VudAgJAQV2YWx1ZQEFAmR0B2Fzc2V0SWQICQEFdmFsdWUBBQJkdQZhbW91bnQICQEFdmFsdWUBBQJkdQdhc3NldElkBQJkcwcFAmNzBQJjdAUCY3UFAmN2BQJjdwQCYlgJAQ1wYXJzZUludFZhbHVlAQgFAmNIAl84AwMDCQECYUIABgkAAAIFAmJYBQFtBgkAAAIFAmJYBQFvCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJiWAUCY0gBAmR2BAJkdwJiUAJiUgFXBAJkeAkBAmFFAAQCYlQJAJEDAgUCZHgFAXMEAmJVCQCRAwIFAmR4BQF0BAJiWgkBAmJjAQUCYlQEAmNiCQECYmMBBQJiVQQCZHkJAQJiSwEFAmR3BAJjdggFAmR5Al8xBAJkeggFAmR5Al8yBAJkQQMJAAACBQFXAgAJAJQKAgUCYloFAmNiAwkAAAIFAmJQBQJiVAMJAGYCBQJkdwUCYloJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJiWgUCZHcFAmNiAwkAAAIFAmJQBQJiVQMJAGYCBQJkdwUCY2IJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmJaCQBlAgUCY2IFAmR3CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZEIIBQJkQQJfMQQCZEMIBQJkQQJfMgQCZEQDCQAAAgUCYlAFAmJUCQCUCgIFAmRCBQJkQwkAlAoCBQJkQwUCZEIEAmRFCAUCZEQCXzEEAmRGCAUCZEQCXzIEAmRHAAEEAmRICgACZEkJAPwHBAUCYU0CDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN2CQDMCAIJAKQDAQUCZEUJAMwIAgkApAMBBQJkRgkAzAgCAgAJAMwIAgUCYUEJAMwIAgUBaAkAzAgCCQCkAwEFAmRHCQDMCAIFAWkFA25pbAUDbmlsAwkAAQIFAmRJAgooSW50LCBJbnQpBQJkSQkAAgEJAKwCAgkAAwEJAPwHBAUCYU0CDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN2CQDMCAIJAKQDAQUCZEUJAMwIAgkApAMBBQJkRgkAzAgCAgAJAMwIAgUCYUEJAMwIAgUBaAkAzAgCCQCkAwEFAmRHCQDMCAIFAWkFA25pbAUDbmlsAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJkSgMJAAACBQJiUAUCYlQFAmRICQCUCgIIBQJkSAJfMggFAmRIAl8xBAJkSwgFAmRKAl8xBAJkTAgFAmRKAl8yBAJkTQkBAmRyCgUCYlIFAVcJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJUBQJkSwkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlUFAmRMAAAGBgcFAmN2BQJiUAQCZE4IBQJkTQJfMgQCZE8IBQJkTQJfNwQCY2wIBQJkTQJfOQQCY1YIBQJkTQNfMTAEAmNXCAUCZE0DXzExBQJkTQECZFAABAJhdAkAoggBCQEBTwADCQABAgUCYXQCBlN0cmluZwQCZFEFAmF0CQDZBAEFAmRRAwkAAQIFAmF0AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmRSAAQCYXQJAKIIAQkBAVAAAwkAAQIFAmF0AgZTdHJpbmcEAmRRBQJhdAkA2QQBBQJkUQMJAAECBQJhdAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJkUwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJkVAECZHAEAmF0CQECZFAAAwkAAQIFAmF0AgpCeXRlVmVjdG9yBAJkVQUCYXQDCQAAAggFAmRwD2NhbGxlclB1YmxpY0tleQUCZFUGBQJkUwMJAAECBQJhdAIEVW5pdAMJAAACCAUCZHAGY2FsbGVyBQR0aGlzBgUCZFMJAAIBAgtNYXRjaCBlcnJvchwCZHABC2NvbnN0cnVjdG9yAQFOBAJkVgkBAmRUAQUCZHADCQAAAgUCZFYFAmRWCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAAUBTgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwAQpzZXRNYW5hZ2VyAQJkVwQCZFYJAQJkVAEFAmRwAwkAAAIFAmRWBQJkVgQCZFgJANkEAQUCZFcDCQAAAgUCZFgFAmRYCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFQAAUCZFcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcAEOY29uZmlybU1hbmFnZXIABAJiSgkBAmRSAAQCZFkDCQEJaXNEZWZpbmVkAQUCYkoGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmRZBQJkWQQCZFoDCQAAAggFAmRwD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCYkoGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmRaBQJkWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBTwAJANgEAQkBBXZhbHVlAQUCYkoJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVAABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABA3B1dAICZWECZWIEAmVjCQECYUkABAJlZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZWMFAXkCCldyIHN0IGFkZHIEAmVlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJlYwUBegIKV3Igc2wgYWRkcgMJAGYCAAAFAmVhCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkcAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJlZgkBAmRyCgkApQgBCAUCZHAGY2FsbGVyCQDYBAEIBQJkcA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRwCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRwCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkcAhwYXltZW50cwABBQJlYQYHBgAAAgAEAmNVCAUCZWYCXzIEAmRPCAUCZWYCXzcEAmNsCAUCZWYCXzkEAmNWCAUCZWYDXzEwBAJjVwgFAmVmA18xMQQCYlQIBQJlZgNfMTIEAmJVCAUCZWYDXzEzBAJjSAkA/AcEBQJhegIEZW1pdAkAzAgCBQJjVQUDbmlsBQNuaWwDCQAAAgUCY0gFAmNIBAJlZwQCYXQFAmNIAwkAAQIFAmF0AgdBZGRyZXNzBAJlaAUCYXQJAPwHBAUCZWgCBGVtaXQJAMwIAgUCY1UFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVnBQJlZwQCZWkDCQBmAgUCY1YAAAkA/AcEBQJlZQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJUBQJjVgUDbmlsBQNuaWwDCQAAAgUCZWkFAmVpBAJlagMJAGYCBQJjVwAACQD8BwQFAmVlAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlUFAmNXBQNuaWwFA25pbAMJAAACBQJlagUCZWoEAmVrAwUCZWIEAmVsCQD8BwQFAmVkAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTwUCY1UFA25pbAMJAAACBQJlbAUCZWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHAGY2FsbGVyBQJjVQUCZE8FA25pbAkAzggCBQJjbAUCZWsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABCXB1dE9uZVRrbgUCZEsCZEwCZW0CYmsCZWIEAmJCCQECYUkABAJlZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkIFAXkCCldyIHN0IGFkZHIEAmVlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiQgUBegIKV3Igc2wgYWRkcgQCZW4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJCBQFBAgtXciBnd3ggYWRkcgQCZW8JAQJhRQAEAmJUCQCRAwIFAmVvBQFzBAJiVQkAkQMCBQJlbwUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlbwUBdQQCYlcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlbwUBdgQCZXAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmFiAAIABAJiUgMJAAACBQJlcAkApQgBCAUCZHAGY2FsbGVyCAUCZHAMb3JpZ2luQ2FsbGVyCAUCZHAGY2FsbGVyAwMDAwkAZwIAAAUCYmsGCQBnAgAABQJkSwYJAGcCAAAFAmRMBgkAZwIAAAUCZW0JAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CCQCQAwEIBQJkcAhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmRxCQEFdmFsdWUBCQCRAwIIBQJkcAhwYXltZW50cwAABAJiUAkA2AQBCQEFdmFsdWUBCAUCZHEHYXNzZXRJZAQCZXEIBQJkcQZhbW91bnQEAmVyCQECYksBBQJlcQQCY3YIBQJlcgJfMQQCZHoIBQJlcgJfMgMJAGYCAICt4gQFAmVxCQACAQINV3JvbmcgcG10IGFtdAQCYloJAQJiYwEFAmJUBAJjYgkBAmJjAQUCYlUEAmVzAwkAAAIFAmJQBQJiVAMDCQBmAgUCZXEFAmJaBgkAZgIFAmRLBQJjdgkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFAmJaBQJlcQUCY2IJAGUCBQJjdgUCZEsFAmRMAAAAAAMJAAACBQJiUAUCYlUDAwkAZgIFAmVxBQJjYgYJAGYCBQJkTAUCY3YJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYFAmJaCQBlAgUCY2IFAmVxAAAAAAkAZQIFAmN2BQJkTAUCZEsJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJkQggFAmVzAl8xBAJkQwgFAmVzAl8yBAJldAgFAmVzAl8zBAJldQgFAmVzAl80BAJldggFAmVzAl81BAJldwgFAmVzAl82BAJicAkA/AcEBQJlbgIFY2FsY0QJAMwIAgkApAMBBQJkQgkAzAgCCQCkAwEFAmRDCQDMCAIFAmFBCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmJvCQD8BwQFAmVuAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQJkQgUCZXQFAmV3CQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmRDBQJldgUCZXUJAMwIAgUCYUEJAMwIAgUBaAkAzAgCBQFpBQNuaWwFA25pbAQCZXgJAQJibgMJAKcDAQkBAmFzAQUCYm8JAKcDAQkBAmFzAQUCYnAFAWcDCQAAAgUCZXgFAmV4BAJkTQkBAmRyCgkApQgBCAUCZHAGY2FsbGVyCQDYBAEIBQJkcA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVAUCZEsJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJVBQJkTAUCYmsGBgYFAmN2BQJiUAQCZE4IBQJkTQJfMgQCZE8IBQJkTQJfNwQCY2wIBQJkTQJfOQQCY1YIBQJkTQNfMTAEAmNXCAUCZE0DXzExBAJleQkBAmJoAwkAtgIBBQJkTgkAtgIBBQJlbQkAtgIBBQJiawQCY1UJAKADAQgFAmV5Al8yBAJlZgkA/AcEBQJhegIEZW1pdAkAzAgCBQJjVQUDbmlsBQNuaWwDCQAAAgUCZWYFAmVmBAJlZwQCYXQFAmVmAwkAAQIFAmF0AgdBZGRyZXNzBAJlaAUCYXQJAPwHBAUCZWgCBGVtaXQJAMwIAgUCY1UFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVnBQJlZwQCZWkDCQBmAgUCY1YAAAkA/AcEBQJlZQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmNWBQNuaWwFA25pbAMJAAACBQJlaQUCZWkEAmVqAwkAZgIFAmNXAAAJAPwHBAUCZWUCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJVBQJjVwUDbmlsBQNuaWwDCQAAAgUCZWoFAmVqBAJlawMFAmViBAJlbAkA/AcEBQJlZAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZE8FAmNVBQNuaWwDCQAAAgUCZWwFAmVsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRwBmNhbGxlcgUCY1UFAmRPBQNuaWwEAmV6AwkAZgIFAmR6AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUQFAmR6CQDZBAEFAmJQBQNuaWwFA25pbAkAzggCCQDOCAIFAmNsBQJlawUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABC3B1dE9uZVRrblYyAgJlQQJlYgMJAQIhPQIJAJADAQgFAmRwCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHgJAQJhRQAEAmJUCQCRAwIFAmR4BQFzBAJiVQkAkQMCBQJkeAUBdAQCZUIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkeAUBdQQCZUMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkeAUBdgQCYlIDCQAAAggFAmRwBmNhbGxlcgUEdGhpcwgFAmRwDG9yaWdpbkNhbGxlcggFAmRwBmNhbGxlcgQCZHEJAQV2YWx1ZQEJAJEDAggFAmRwCHBheW1lbnRzAAAEAmJQCQDYBAEJAQV2YWx1ZQEIBQJkcQdhc3NldElkBAJjdggFAmRxBmFtb3VudAMJAGYCAICt4gQFAmN2CQACAQINV3JvbmcgcG10IGFtdAQCY0gJAQJkdgQFAmN2BQJiUAkApQgBBQJiUgkA2AQBCAUCZHANdHJhbnNhY3Rpb25JZAQCZE4IBQJjSAJfMgQCZE8IBQJjSAJfNwQCY2wIBQJjSAJfOQQCY1YIBQJjSANfMTAEAmNXCAUCY0gDXzExBAJjVQMDCQBmAgUCZUEAAAkAZgIFAmVBBQJkTgcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVBBQNuaWwCAAUCZE4EAmVmCQD8BwQFAmF6AgRlbWl0CQDMCAIFAmNVBQNuaWwFA25pbAMJAAACBQJlZgUCZWYEAmVnBAJhdAUCZWYDCQABAgUCYXQCB0FkZHJlc3MEAmVoBQJhdAkA/AcEBQJlaAIEZW1pdAkAzAgCBQJjVQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWcFAmVnBAJlaQMJAGYCBQJjVgAACQD8BwQFAmFMAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVAUCY1YFA25pbAUDbmlsAwkAAAIFAmVpBQJlaQQCZWoDCQBmAgUCY1cAAAkA/AcEBQJhTAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlUFAmNXBQNuaWwFA25pbAMJAAACBQJlagUCZWoEAmVrAwUCZWIEAmVsCQD8BwQFAmFLAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTwUCY1UFA25pbAMJAAACBQJlbAUCZWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHAGY2FsbGVyBQJjVQUCZE8FA25pbAkAlAoCCQDOCAIFAmNsBQJlawUCY1UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABE3B1dE9uZVRrblYyUkVBRE9OTFkCAmVEAmVFBAJjSAkBAmR2BAUCZUQFAmVFAgACAAQCZE4IBQJjSAJfMgQCZE8IBQJjSAJfNwQCY2wIBQJjSAJfOQQCY1YIBQJjSANfMTAEAmNXCAUCY0gDXzExCQCUCgIFA25pbAUCZE4CZHABHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmVEAmVFBAJkeAkBAmFFAAQCYlQJAJEDAgUCZHgFAXMEAmJVCQCRAwIFAmR4BQF0BAJiWgkBAmJjAQUCYlQEAmNiCQECYmMBBQJiVQQCY0gJAQJkdgQFAmVEBQJlRQIAAgAEAmROCAUCY0gCXzIEAmNlCAUCY0gCXzMEAmVGCAUCY0gCXzYEAmRPCAUCY0gCXzcEAmVHAwkAAAIFAmVFBQJiVAQCZUgJAGsDBQJlRAUCY2UFAWEJAJQKAgUCZUQFAmVIBAJlSQkAawMFAmVEBQFhBQJjZQkAlAoCBQJlSQUCZUQEAmVJCAUCZUcCXzEEAmVICAUCZUcCXzIEAmVKCQBrAwUCZUYFAmVIBQJjYgQCZUsDCQAAAgUCZUUFAmJUCQBrAwUCZUkFAWEFAmROCQBrAwUCZUgFAWEFAmROBAJlTAkAawMJAGQCBQJlSAUCZUkFAWEFAmVKBAJlTQkAawMJAGUCBQJlTAUCZUsFAWEFAmVLBAJkeggJAQJiSwEFAmVEAl8yCQCUCgIFA25pbAkAlQoDBQJkTgUCZHoFAmVNAmRwAQpwdXRGb3JGcmVlAQJlTgMJAGYCAAAFAmVOCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRwCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmRNCQECZHIKCQClCAEIBQJkcAZjYWxsZXIJANgEAQgFAmRwDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHAIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHAIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRwCHBheW1lbnRzAAEFAmVOBwcGAAACAAgFAmRNAl85AmRwAQNnZXQABAJjSAkBAmRvAQUCZHAEAmVPCAUCY0gCXzEEAmNrCAUCY0gCXzIEAmN2CAUCY0gCXzMEAmJQCAUCY0gCXzQEAmNsCAUCY0gCXzUEAmVQCQD8BwQFAmF6AgRidXJuCQDMCAIFAmN2BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJjdgUDbmlsAwkAAAIFAmVQBQJlUAUCY2wJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABCWdldE9uZVRrbgUCZVECZVICZVMCZVQCYmsDCQECIT0CCQCQAwEIBQJkcAhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmJCCQECYUUABAJiUwkAkQMCBQJiQgUBcgQCYlQJAJEDAgUCYkIFAXMEAmJVCQCRAwIFAmJCBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQF1BAJiVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQF2BAJiWAkAkQMCBQJiQgUBcQQCZWMJAQJhSQAEAmVuCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJlYwUBQQIKV3Igc2wgYWRkcgQCZHEJAQV2YWx1ZQEJAJEDAggFAmRwCHBheW1lbnRzAAAEAmVwCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhYgACAAQCYlIDCQAAAgUCZXAJAKUIAQgFAmRwBmNhbGxlcggFAmRwDG9yaWdpbkNhbGxlcggFAmRwBmNhbGxlcgQCYk8JANgEAQgFAmRwDXRyYW5zYWN0aW9uSWQEAmJQCQEFdmFsdWUBCAUCZHEHYXNzZXRJZAQCY3YIBQJkcQZhbW91bnQDCQBmAgCAlOvcAwUCY3YJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQJiawYJAGYCAAAFAmVRBgkAZgIAAAUCZVMJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQJiUwkA2AQBBQJiUAkAAgECCFdyb25nIExQBAJjSAkBAmJOBAkA2AQBCAUCZHANdHJhbnNhY3Rpb25JZAkA2AQBBQJiUAUCY3YIBQJkcAZjYWxsZXIEAmVVCAUCY0gCXzEEAmVWCAUCY0gCXzIEAmJaCQECYmMBBQJiVAQCY2IJAQJiYwEFAmJVBAJlVwMJAAACBQJlVAUCYlQJAJkKBwkAZQIFAmJaBQJlVQkAZQIFAmNiBQJlVgUCZVEFAmVWAAAAAAkAZAIFAmVVBQJlUQMJAAACBQJlVAUCYlUJAJkKBwkAZQIFAmJaBQJlVQkAZQIFAmNiBQJlVgAAAAAFAmVRBQJlVQkAZAIFAmVWBQJlUQkAAgECEHdyb25nIG91dEFzc2V0SWQEAmRCCAUCZVcCXzEEAmRDCAUCZVcCXzIEAmV0CAUCZVcCXzMEAmV1CAUCZVcCXzQEAmV2CAUCZVcCXzUEAmV3CAUCZVcCXzYEAmVYCAUCZVcCXzcDAwkAZgIAAAUCZXQGCQBmAgAABQJldgkAAgECCldyb25nIGNhbGMEAmJwCQD8BwQFAmVuAgVjYWxjRAkAzAgCCQCkAwEFAmRCCQDMCAIJAKQDAQUCZEMJAMwIAgUCYUEJAMwIAgUBaAkAzAgCBQFpBQNuaWwFA25pbAQCYm8JAPwHBAUCZW4CBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQJkQgUCZXQFAmV3CQDMCAIJAKQDAQkAZQIJAGQCBQJkQwUCZXUFAmV2CQDMCAIFAmFBCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmV4CQECYm4DCQCnAwEJAQJhcwEFAmJvCQCnAwEJAQJhcwEFAmJwBQFnAwkAAAIFAmV4BQJleAQCZVkICQECYksBBQJlWAJfMQQCZVoJAQJiaAMJALYCAQUCZVkJALYCAQUCZVMJALYCAQUCYmsDCQAAAgUCZVoFAmVaBAJmYQMJAAACBQJlVAUCYlQJAJQKAgkAoAMBCAUCZVoCXzIAAAkAlAoCAAAJAKADAQgFAmVaAl8yBAJmYggFAmZhAl8xBAJmYwgFAmZhAl8yBAJmZAkAZAIFAmZiBQJmYwQCZHoJAGUCBQJlWAUCZVkEAmZlAwkAAAIFAmVUAgVXQVZFUwUEdW5pdAkA2QQBBQJlVAQCZXoDCQBmAgUCZHoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRAUCZHoFAmZlBQNuaWwFA25pbAQCZmYJAQJiZQIJAQFDAgUCY2IFAmJXCQEBQwIFAmJaBQJiVgQCZmcJAQFGAgUCZmYFAWEEAmNsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJSBQJmZAUCZmUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgCCQClCAEFAmJSBQJiTwkBAmFZBgUCZmIFAmZjBQJjdgUCZmcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAAUCZmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZmcFA25pbAMJAAACBQJjbAUCY2wEAmZoCQD8BwQFAmF6AgRidXJuCQDMCAIFAmN2BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJjdgUDbmlsAwkAAAIFAmZoBQJmaAkAzggCBQJjbAUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABC2dldE9uZVRrblYyAgJlVAJlQQMJAQIhPQIJAJADAQgFAmRwCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHgJAQJhRQAEAmJTCQCRAwIFAmR4BQFyBAJiVAkAkQMCBQJkeAUBcwQCYlUJAJEDAgUCZHgFAXQEAmVCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHgFAXUEAmVDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHgFAXYEAmZpCQCRAwIFAmR4BQFxBAJiUgMJAAACCAUCZHAGY2FsbGVyBQR0aGlzCAUCZHAMb3JpZ2luQ2FsbGVyCAUCZHAGY2FsbGVyBAJkcQkBBXZhbHVlAQkAkQMCCAUCZHAIcGF5bWVudHMAAAQCYlAJAQV2YWx1ZQEIBQJkcQdhc3NldElkBAJjdggFAmRxBmFtb3VudAMJAGYCAICU69wDBQJjdgkAAgECDU1pbiBwbXQgMTAgTFAEAmJPCQDYBAEIBQJkcA10cmFuc2FjdGlvbklkAwkBAiE9AgUCYlMJANgEAQUCYlAJAAIBAghXcm9uZyBMUAQCYloJAQJiYwEFAmJUBAJjYgkBAmJjAQUCYlUEAmVZCgACZEkJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJlVAkAzAgCBQJjdgUDbmlsBQNuaWwDCQABAgUCZEkCA0ludAUCZEkJAAIBCQCsAgIJAAMBCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZVQJAMwIAgUCY3YFA25pbAUDbmlsAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmZkAwMJAGYCBQJlQQAACQBmAgUCZUEFAmVZBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZUEFA25pbAIABQJlWQQCZmoDCQAAAgUCZVQFAmJUCQCUCgIFAmZkAAAJAJQKAgAABQJmZAQCZmIIBQJmagJfMQQCZmMIBQJmagJfMgQCZmYJAQJiZQIJAQFDAgUCY2IFAmVDCQEBQwIFAmJaBQJlQgQCZmcJAQFGAgUCZmYFAWEEAmNsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJSBQJmZAMJAAACBQJlVAIFV0FWRVMFBHVuaXQJANkEAQUCZVQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgCCQClCAEFAmJSBQJiTwkBAmFZBgUCZmIFAmZjBQJjdgUCZmcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAAUCZmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZmcFA25pbAMJAAACBQJjbAUCY2wEAmZoCQD8BwQFAmF6AgRidXJuCQDMCAIFAmN2BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJjdgUDbmlsAwkAAAIFAmZoBQJmaAkAlAoCBQJjbAUCZmQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABE2dldE9uZVRrblYyUkVBRE9OTFkCAmVUAmZrBAJkeAkBAmFFAAQCYlMJAJEDAgUCZHgFAXIEAmJUCQCRAwIFAmR4BQFzBAJiVQkAkQMCBQJkeAUBdAQCY0gJAQJiTgQCAAUCYlMFAmZrBQR0aGlzBAJlVQgFAmNIAl8xBAJlVggFAmNIAl8yBAJiWgkBAmJjAQUCYlQEAmNiCQECYmMBBQJiVQQCZEIJAGUCBQJiWgUCZVUEAmRDCQBlAgUCY2IFAmVWBAJmbAMJAAACBQJlVAUCYlQJAJUKAwUCZEMFAmRCBQJlVgMJAAACBQJlVAUCYlUJAJUKAwUCZEIFAmRDBQJlVQkAAgECEHdyb25nIG91dEFzc2V0SWQEAmZtCAUCZmwCXzEEAmZuCAUCZmwCXzIEAmZvCAUCZmwCXzMEAmZwAAEEAmVRCgACZEkJAPwHBAUCYU0CDGNhbGNTd2FwWFRvWQkAzAgCCQCkAwEFAmZvCQDMCAIJAKQDAQUCZm0JAMwIAgkApAMBBQJmbgkAzAgCAgAJAMwIAgUCYUEJAMwIAgUBaAkAzAgCCQCkAwEFAmZwCQDMCAIFAWkFA25pbAUDbmlsAwkAAQIFAmRJAgNJbnQFAmRJCQACAQkArAICCQADAQkA/AcEBQJhTQIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUCZm8JAMwIAgkApAMBBQJmbQkAzAgCCQCkAwEFAmZuCQDMCAICAAkAzAgCBQJhQQkAzAgCBQFoCQDMCAIJAKQDAQUCZnAJAMwIAgUBaQUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCZVgJAGQCBQJlUQMJAAACBQJlVAUCYlQFAmVVBQJlVgQCZnEJAQJiSwEFAmVYBAJlWQgFAmZxAl8xBAJkeggFAmZxAl8yCQCUCgIFA25pbAkAlAoCBQJlWQUCZHoCZHABHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmVUAmZrBAJkeAkBAmFFAAQCYlQJAJEDAgUCZHgFAXMEAmJVCQCRAwIFAmR4BQF0BAJiUwkAkQMCBQJkeAUBcgQCYloJAQJiYwEFAmJUBAJjYgkBAmJjAQUCYlUEAmZyCgACZEkJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJlVAkAzAgCBQJmawUDbmlsBQNuaWwDCQABAgUCZEkCCihJbnQsIEludCkFAmRJCQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmVUCQDMCAIFAmZrBQNuaWwFA25pbAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZVkIBQJmcgJfMQQCZHoIBQJmcgJfMgQCY0gJAQJiTgQCAAUCYlMFAmZrBQR0aGlzBAJjaggFAmNIAl8xBAJjawgFAmNIAl8yBAJlSwkAawMFAmVZBQFhBQJmawQCZUwJAGsDCQBkAgUCY2oFAmNrBQFhBQJmawQCZU0JAGsDCQBlAgUCZUsFAmVMBQFhBQJlTAkAlAoCBQNuaWwJAJUKAwUCZVkFAmR6BQJlTQJkcAEJZ2V0Tm9MZXNzAgJmcwJmdAQCY0gJAQJkbwEFAmRwBAJjaggFAmNIAl8xBAJjawgFAmNIAl8yBAJjdggFAmNIAl8zBAJiUAgFAmNIAl80BAJjbAgFAmNIAl81AwkAZgIFAmZzBQJjagkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjagIDIDwgCQCkAwEFAmZzAwkAZgIFAmZ0BQJjawkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNrAgMgPCAJAKQDAQUCZnQEAmZ1CQD8BwQFAmF6AgRidXJuCQDMCAIFAmN2BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJjdgUDbmlsAwkAAAIFAmZ1BQJmdQUCY2wJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABDXVuc3Rha2VBbmRHZXQBAmJMBAJmdgMJAQIhPQIJAJADAQgFAmRwCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJmdgUCZnYEAmJCCQECYUUABAJmdwkBAmFJAAQCZE8JANkEAQkAkQMCBQJiQgUBcgQCZngJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZ3BQF5AgpXciBzdCBhZGRyBAJmeQkA/AcEBQJmeAIHdW5zdGFrZQkAzAgCCQDYBAEFAmRPCQDMCAIFAmJMBQNuaWwFA25pbAMJAAACBQJmeQUCZnkEAmNICQECYk4ECQDYBAEIBQJkcA10cmFuc2FjdGlvbklkCQDYBAEFAmRPBQJiTAgFAmRwBmNhbGxlcgQCYlgJAQ1wYXJzZUludFZhbHVlAQgFAmNIAl85BAJjbAgFAmNIA18xMAQCZnoDAwkBAmFCAAYJAAACBQJiWAUBbwkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmJYBgMJAAACBQJmegUCZnoEAmZBCQD8BwQFAmF6AgRidXJuCQDMCAIFAmJMBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRPBQJiTAUDbmlsAwkAAAIFAmZBBQJmQQUCY2wJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZCAmVUAmVBBAJmdgMJAQIhPQIJAJADAQgFAmRwCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJmdgUCZnYEAmJCCQECYUUABAJmdwkBAmFJAAQCZE8JANkEAQkAkQMCBQJiQgUBcgQCZngJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZ3BQF5AgpXciBzdCBhZGRyBAJmeQkA/AcEBQJmeAIHdW5zdGFrZQkAzAgCCQDYBAEFAmRPCQDMCAIFAmZCBQNuaWwFA25pbAMJAAACBQJmeQUCZnkEAmZDCgACZEkJAPwHBAUEdGhpcwILZ2V0T25lVGtuVjIJAMwIAgUCZVQJAMwIAgUCZUEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZE8FAmZCBQNuaWwDCQABAgUCZEkCA0ludAUCZEkFBHVuaXQDCQAAAgUCZkMFAmZDCQCUCgIFA25pbAUCZkMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABCGFjdGl2YXRlAgJmRAJmRQMJAQIhPQIJAKUIAQgFAmRwBmNhbGxlcgkApQgBBQJhegkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAAUCZkQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoABQJmRQUDbmlsAgdzdWNjZXNzAmRwAQRzZXRTAgJmRgJmegMJAQIhPQIJAKUIAQgFAmRwBmNhbGxlcgkBAmF2AgUEdGhpcwkBAmFiAAUCZFMJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZkYFAmZ6BQNuaWwCZHABBHNldEkCAmZGAmZ6AwkBAiE9AgkApQgBCAUCZHAGY2FsbGVyCQECYXYCBQR0aGlzCQECYWIABQJkUwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZkYFAmZ6BQNuaWwCZHABHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFFAAJkcAEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYmQJAJQKAgUDbmlsCQECYmMBBQJiZAJkcAEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYnYCYncCYkEEAmZHCQECYnoDBQJidgUCYncFAmJBCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZkcAAAkAzAgCCQCmAwEJAJEDAgUCZkcAAQkAzAgCCQCmAwEJAJEDAgUCZkcAAgUDbmlsAmRwARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFHAmZICQCUCgIFA25pbAkBAUYCCQCnAwEFAUcFAmZIAmRwARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRAFFCQCUCgIFA25pbAkApgMBCQEBQwIFAUQFAUUCZHABHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYmYCYmcJAJQKAgUDbmlsCQCmAwEJAQJiZQIJAKcDAQUCYmYJAKcDAQUCYmcCZHABI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiTwJiawJjbgJjbwJjcAJjcQJmSQJjcgJjcwkAlAoCBQNuaWwJAQJjbQ0FAmJPBQJiawUCY24FAmNvBQJjcAUCY3EFAmZJBQJjcgUCY3MGBwAAAgACZHABI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiTwJmSgJiUQJmSQQCY0gJAQJiTgQFAmJPBQJmSgUCYlEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZJCQCUCgIFA25pbAkAnAoKCAUCY0gCXzEIBQJjSAJfMggFAmNIAl8zCAUCY0gCXzQIBQJjSAJfNQgFAmNIAl82CAUCY0gCXzcJAKYDAQgFAmNIAl84CAUCY0gCXzkIBQJjSANfMTABAmZLAQJmTAAEAmZNBAJhdAkBAmRQAAMJAAECBQJhdAIKQnl0ZVZlY3RvcgQCZFUFAmF0BQJkVQMJAAECBQJhdAIEVW5pdAgFAmZLD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhdAUCZksDCQABAgUCYXQCBU9yZGVyBAJkYwUCYXQEAmZOCQECYUMABAJmTwkBAmRiAQUCZGMEAmZQCQD0AwMIBQJkYwlib2R5Qnl0ZXMJAJEDAggFAmRjBnByb29mcwAACAUCZGMPc2VuZGVyUHVibGljS2V5BAJmUQkA9AMDCAUCZGMJYm9keUJ5dGVzCQCRAwIIBQJkYwZwcm9vZnMAAQUCZk4DAwMFAmZPBQJmUAcFAmZRBwYJAQJhbwMFAmZPBQJmUAUCZlEDCQABAgUCYXQCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkUQUCYXQEAmZSCQD2AwEJAQV2YWx1ZQEIBQJkUQZzY3JpcHQEAmZTCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYXoJAQJhbQAEAmZUCQDxBwEFBHRoaXMDAwkAAAIFAmZTBQJmUgkBAiE9AgUCZlQFAmZSBwYJAPQDAwgFAmZLCWJvZHlCeXRlcwkAkQMCCAUCZksGcHJvb2ZzAAAFAmZNCQD0AwMIBQJmSwlib2R5Qnl0ZXMJAJEDAggFAmZLBnByb29mcwAABQJmTW8KRcs=", "chainId": 84, "height": 2236023, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8QM9tca9vsupr8qCpWhjN6t68CQuNDTfTTrJy6maZRww Next: 5zTPWyCLnD9C55xa6GVjAY1fZe5LmqXs57bKZCvaJtoq Diff:
OldNewDifferences
12151215
12161216
12171217 @Callable(dp)
1218-func unstakeAndGetOneTkn (bL,eS,eT,bk) = {
1218+func unstakeAndGetOneTkn (fB,eT,eA) = {
12191219 let fv = if ((size(dp.payments) != 0))
12201220 then throw("No pmnts expd")
12211221 else true
12251225 let fw = aI()
12261226 let dO = fromBase58String(bB[r])
12271227 let fx = valueOrErrorMessage(addressFromString(fw[y]), "Wr st addr")
1228- let fy = invoke(fx, "unstake", [toBase58String(dO), bL], nil)
1228+ let fy = invoke(fx, "unstake", [toBase58String(dO), fB], nil)
12291229 if ((fy == fy))
12301230 then {
1231- let fB = {
1232- let dI = invoke(this, "getOneTknV2", [eS, eT, bk], [AttachedPayment(dO, bL)])
1231+ let fC = {
1232+ let dI = invoke(this, "getOneTknV2", [eT, eA], [AttachedPayment(dO, fB)])
12331233 if ($isInstanceOf(dI, "Int"))
12341234 then dI
12351235 else unit
12361236 }
1237- if ((fB == fB))
1238- then $Tuple2(nil, fB)
1237+ if ((fC == fC))
1238+ then $Tuple2(nil, fC)
12391239 else throw("Strict value is not equal to itself.")
12401240 }
12411241 else throw("Strict value is not equal to itself.")
12461246
12471247
12481248 @Callable(dp)
1249-func activate (fC,fD) = if ((toString(dp.caller) != toString(az)))
1249+func activate (fD,fE) = if ((toString(dp.caller) != toString(az)))
12501250 then throw("denied")
1251- else $Tuple2([StringEntry(Y(), fC), StringEntry(Z(), fD)], "success")
1251+ else $Tuple2([StringEntry(Y(), fD), StringEntry(Z(), fE)], "success")
12521252
12531253
12541254
12551255 @Callable(dp)
1256-func setS (fE,fz) = if ((toString(dp.caller) != av(this, ab())))
1256+func setS (fF,fz) = if ((toString(dp.caller) != av(this, ab())))
12571257 then dS
1258- else [StringEntry(fE, fz)]
1258+ else [StringEntry(fF, fz)]
12591259
12601260
12611261
12621262 @Callable(dp)
1263-func setI (fE,fz) = if ((toString(dp.caller) != av(this, ab())))
1263+func setI (fF,fz) = if ((toString(dp.caller) != av(this, ab())))
12641264 then dS
1265- else [IntegerEntry(fE, fz)]
1265+ else [IntegerEntry(fF, fz)]
12661266
12671267
12681268
12781278
12791279 @Callable(dp)
12801280 func calcPricesWrapperREADONLY (bv,bw,bA) = {
1281- let fF = bz(bv, bw, bA)
1282- $Tuple2(nil, [toString(fF[0]), toString(fF[1]), toString(fF[2])])
1281+ let fG = bz(bv, bw, bA)
1282+ $Tuple2(nil, [toString(fG[0]), toString(fG[1]), toString(fG[2])])
12831283 }
12841284
12851285
12861286
12871287 @Callable(dp)
1288-func fromX18WrapperREADONLY (G,fG) = $Tuple2(nil, F(parseBigIntValue(G), fG))
1288+func fromX18WrapperREADONLY (G,fH) = $Tuple2(nil, F(parseBigIntValue(G), fH))
12891289
12901290
12911291
13001300
13011301
13021302 @Callable(dp)
1303-func estimatePutOperationWrapperREADONLY (bO,bk,cn,co,cp,cq,fH,cr,cs) = $Tuple2(nil, cm(bO, bk, cn, co, cp, cq, fH, cr, cs, true, false, 0, ""))
1303+func estimatePutOperationWrapperREADONLY (bO,bk,cn,co,cp,cq,fI,cr,cs) = $Tuple2(nil, cm(bO, bk, cn, co, cp, cq, fI, cr, cs, true, false, 0, ""))
13041304
13051305
13061306
13071307 @Callable(dp)
1308-func estimateGetOperationWrapperREADONLY (bO,fI,bQ,fH) = {
1309- let cH = bN(bO, fI, bQ, addressFromStringValue(fH))
1308+func estimateGetOperationWrapperREADONLY (bO,fJ,bQ,fI) = {
1309+ let cH = bN(bO, fJ, bQ, addressFromStringValue(fI))
13101310 $Tuple2(nil, $Tuple10(cH._1, cH._2, cH._3, cH._4, cH._5, cH._6, cH._7, toString(cH._8), cH._9, cH._10))
13111311 }
13121312
13131313
1314-@Verifier(fJ)
1315-func fK () = {
1316- let fL = {
1314+@Verifier(fK)
1315+func fL () = {
1316+ let fM = {
13171317 let at = dP()
13181318 if ($isInstanceOf(at, "ByteVector"))
13191319 then {
13211321 dU
13221322 }
13231323 else if ($isInstanceOf(at, "Unit"))
1324- then fJ.senderPublicKey
1324+ then fK.senderPublicKey
13251325 else throw("Match error")
13261326 }
1327- let at = fJ
1327+ let at = fK
13281328 if ($isInstanceOf(at, "Order"))
13291329 then {
13301330 let dc = at
1331- let fM = aC()
1332- let fN = db(dc)
1333- let fO = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1334- let fP = sigVerify(dc.bodyBytes, dc.proofs[1], fM)
1335- if (if (if (fN)
1336- then fO
1337- else false)
1331+ let fN = aC()
1332+ let fO = db(dc)
1333+ let fP = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1334+ let fQ = sigVerify(dc.bodyBytes, dc.proofs[1], fN)
1335+ if (if (if (fO)
13381336 then fP
13391337 else false)
1338+ then fQ
1339+ else false)
13401340 then true
1341- else ao(fN, fO, fP)
1341+ else ao(fO, fP, fQ)
13421342 }
13431343 else if ($isInstanceOf(at, "SetScriptTransaction"))
13441344 then {
13451345 let dQ = at
1346- let fQ = blake2b256(value(dQ.script))
1347- let fR = fromBase64String(value(getString(az, am())))
1348- let fS = scriptHash(this)
1349- if (if ((fR == fQ))
1350- then (fS != fQ)
1346+ let fR = blake2b256(value(dQ.script))
1347+ let fS = fromBase64String(value(getString(az, am())))
1348+ let fT = scriptHash(this)
1349+ if (if ((fS == fR))
1350+ then (fT != fR)
13511351 else false)
13521352 then true
1353- else sigVerify(fJ.bodyBytes, fJ.proofs[0], fL)
1353+ else sigVerify(fK.bodyBytes, fK.proofs[0], fM)
13541354 }
1355- else sigVerify(fJ.bodyBytes, fJ.proofs[0], fL)
1355+ else sigVerify(fK.bodyBytes, fK.proofs[0], fM)
13561356 }
13571357
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = 1000
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt((a - ((a * 1) / a)))
1717
1818 let h = "100"
1919
2020 let i = "1"
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 5
4343
4444 let u = 6
4545
4646 let v = 7
4747
4848 let w = 8
4949
5050 let x = 9
5151
5252 let y = 1
5353
5454 let z = 7
5555
5656 let A = 10
5757
5858 let B = 0
5959
6060 func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
6161
6262
6363 func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6464
6565
6666 func I (J,K,L) = fraction(J, K, L)
6767
6868
6969 func M (G) = if ((e > G))
7070 then -(G)
7171 else G
7272
7373
7474 func N () = "%s__factoryContract"
7575
7676
7777 func O () = "%s__managerPublicKey"
7878
7979
8080 func P () = "%s__pendingManagerPublicKey"
8181
8282
8383 func Q () = "%s%s__price__last"
8484
8585
8686 func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8787
8888
8989 func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
9090
9191
9292 func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9393
9494
9595 func Y () = "%s__amountAsset"
9696
9797
9898 func Z () = "%s__priceAsset"
9999
100100
101101 func aa () = "%s__amp"
102102
103103
104104 func ab () = "%s__addonAddr"
105105
106106
107107 let ac = "%s__feePermille"
108108
109109 let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129129 func an () = "%s__feeCollectorAddress"
130130
131131
132132 func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
133133
134134
135135 func as (G) = {
136136 let at = G
137137 if ($isInstanceOf(at, "String"))
138138 then {
139139 let au = at
140140 au
141141 }
142142 else throw("fail cast to String")
143143 }
144144
145145
146146 func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
147147
148148
149149 func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
150150
151151
152152 let az = addressFromStringValue(av(this, N()))
153153
154154 let aA = av(this, aa())
155155
156156 func aB () = valueOrElse(getBoolean(az, al()), false)
157157
158158
159159 func aC () = fromBase58String(av(az, af()))
160160
161161
162162 let aD = addressFromStringValue(av(az, an()))
163163
164164 func aE () = {
165165 let aF = av(this, Y())
166166 let aG = av(this, Z())
167167 let aH = ay(az, aj(aG))
168168 let ah = ay(az, aj(aF))
169169 split(av(az, ag(toString(ah), toString(aH))), j)
170170 }
171171
172172
173173 func aI () = split(av(az, ae()), j)
174174
175175
176176 let aJ = aI()
177177
178178 let aK = valueOrErrorMessage(addressFromString(aJ[y]), "Invalid staking contract address")
179179
180180 let aL = valueOrErrorMessage(addressFromString(aJ[z]), "Invalid slipage contract address")
181181
182182 let aM = valueOrErrorMessage(addressFromString(aJ[A]), "Invalid gwx contract address")
183183
184184 func aN (aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX)], j)
185185
186186
187187 func aY (aZ,ba,bb,aR,aU,aV) = makeString(["%d%d%d%d%d%d", toString(aZ), toString(ba), toString(bb), toString(aR), toString(aU), toString(aV)], j)
188188
189189
190190 func bc (bd) = if ((bd == "WAVES"))
191191 then wavesBalance(this).available
192192 else assetBalance(this, fromBase58String(bd))
193193
194194
195195 func be (bf,bg) = fraction(bf, c, bg)
196196
197197
198198 func bh (bi,bj,bk) = {
199199 let bl = fraction((bi - bj), b, bj)
200200 let bm = ((bk - M(bl)) > e)
201201 if (!(bm))
202202 then throw(("Big slpg: " + toString(bl)))
203203 else $Tuple2(bm, min([bi, bj]))
204204 }
205205
206206
207207 func bn (bo,bp,bq) = {
208208 let bl = fraction(bp, b, bo)
209209 let br = (bq > bl)
210210 if (if (br)
211211 then true
212212 else (bp > bo))
213213 then throw(((((((toString(bp) + " ") + toString(bo)) + " ") + toString(bl)) + " ") + toString(bq)))
214214 else br
215215 }
216216
217217
218218 func bs (bt,bu,bv,bw) = {
219219 let bx = C(bv, bt)
220220 let by = C(bw, bu)
221221 be(by, bx)
222222 }
223223
224224
225225 func bz (bv,bw,bA) = {
226226 let bB = aE()
227227 let bC = parseIntValue(bB[u])
228228 let bD = parseIntValue(bB[v])
229229 let bE = bs(bC, bD, bv, bw)
230230 let bg = C(bv, bC)
231231 let bf = C(bw, bD)
232232 let bF = C(bA, a)
233233 let bG = be(bg, bF)
234234 let bH = be(bf, bF)
235235 [bE, bG, bH]
236236 }
237237
238238
239239 func bI (bv,bw,bA) = {
240240 let bJ = bz(bv, bw, bA)
241241 [F(bJ[0], a), F(bJ[1], a), F(bJ[2], a)]
242242 }
243243
244244
245245 func bK (bL) = {
246246 let bM = fraction(bL, ad, d)
247247 $Tuple2((bL - bM), bM)
248248 }
249249
250250
251251 func bN (bO,bP,bQ,bR) = {
252252 let bB = aE()
253253 let bS = bB[r]
254254 let bT = bB[s]
255255 let bU = bB[t]
256256 let bV = parseIntValue(bB[u])
257257 let bW = parseIntValue(bB[v])
258258 let bX = bB[q]
259259 let bY = valueOrErrorMessage(assetInfo(fromBase58String(bS)), "Wrong LP id").quantity
260260 if ((bS != bP))
261261 then throw("Wrong pmt asset")
262262 else {
263263 let bZ = bc(bT)
264264 let ca = C(bZ, bV)
265265 let cb = bc(bU)
266266 let cc = C(cb, bW)
267267 let cd = be(cc, ca)
268268 let ce = F(cd, a)
269269 let cf = C(bQ, a)
270270 let cg = C(bY, a)
271271 let ch = fraction(ca, cf, cg)
272272 let ci = fraction(cc, cf, cg)
273273 let cj = F(ch, bV)
274274 let ck = F(ci, bW)
275275 let cl = if ((bO == ""))
276276 then nil
277277 else [ScriptTransfer(bR, cj, if ((bT == "WAVES"))
278278 then unit
279279 else fromBase58String(bT)), ScriptTransfer(bR, ck, if ((bU == "WAVES"))
280280 then unit
281281 else fromBase58String(bU)), StringEntry(X(toString(bR), bO), aY(cj, ck, bQ, ce, height, lastBlock.timestamp)), IntegerEntry(Q(), ce), IntegerEntry(R(height, lastBlock.timestamp), ce)]
282282 $Tuple10(cj, ck, bT, bU, bZ, cb, bY, cd, bX, cl)
283283 }
284284 }
285285
286286
287287 func cm (bO,bk,cn,co,cp,cq,bR,cr,cs,ct,cu,cv,cw) = {
288288 let bB = aE()
289289 let bS = fromBase58String(bB[r])
290290 let cx = bB[s]
291291 let cy = bB[t]
292292 let cz = bB[w]
293293 let cA = bB[x]
294294 let cB = parseIntValue(bB[u])
295295 let cC = parseIntValue(bB[v])
296296 let bX = bB[q]
297297 let cD = valueOrErrorMessage(assetInfo(bS), "Wr lp as").quantity
298298 let bZ = if (cr)
299299 then bc(cx)
300300 else if (if (ct)
301301 then (cw == cx)
302302 else false)
303303 then (bc(cx) - cv)
304304 else if (ct)
305305 then bc(cx)
306306 else (bc(cx) - cn)
307307 let cb = if (cr)
308308 then bc(cy)
309309 else if (if (ct)
310310 then (cw == cy)
311311 else false)
312312 then (bc(cy) - cv)
313313 else if (ct)
314314 then bc(cy)
315315 else (bc(cy) - cp)
316316 let cE = C(cn, cB)
317317 let cF = C(cp, cC)
318318 let cG = be(cF, cE)
319319 let ca = C(bZ, cB)
320320 let cc = C(cb, cC)
321321 let cH = if ((cD == 0))
322322 then {
323323 let cd = e
324324 let cI = e
325325 let bF = pow((cE * cF), 0, toBigInt(5), 1, 0, DOWN)
326326 $Tuple5(F(bF, a), F(cE, cB), F(cF, cC), be((cc + cF), (ca + cE)), cI)
327327 }
328328 else {
329329 let cd = be(cc, ca)
330330 let cJ = fraction(M((cd - cG)), c, cd)
331331 let cI = C(bk, a)
332332 if (if (if (cu)
333333 then (cd != e)
334334 else false)
335335 then (cJ > cI)
336336 else false)
337337 then throw(((("Price slippage " + toString(cJ)) + " > ") + toString(cI)))
338338 else {
339339 let cK = C(cD, a)
340340 let cL = fraction(cE, cd, c)
341341 let cM = fraction(cF, c, cd)
342342 let cN = if ((cL > cF))
343343 then $Tuple2(cM, cF)
344344 else $Tuple2(cE, cL)
345345 let cO = cN._1
346346 let cP = cN._2
347347 let bF = fraction(cK, cP, cc)
348348 $Tuple5(F(bF, a), F(cO, cB), F(cP, cC), cd, cI)
349349 }
350350 }
351351 let cQ = cH._1
352352 let cR = cH._2
353353 let cS = cH._3
354354 let ce = F(cH._4, a)
355355 let cT = F(cH._5, a)
356356 if ((0 >= cQ))
357357 then throw("LP <= 0")
358358 else {
359359 let cU = if (!(cs))
360360 then 0
361361 else cQ
362362 let cV = (cn - cR)
363363 let cW = (cp - cS)
364364 let cX = if (if (ct)
365365 then (cw == cx)
366366 else false)
367367 then $Tuple2(cv, 0)
368368 else if (if (ct)
369369 then (cw == cy)
370370 else false)
371371 then $Tuple2(0, cv)
372372 else $Tuple2(cR, cS)
373373 let cY = cX._1
374374 let cZ = cX._2
375375 let da = [IntegerEntry(Q(), ce), IntegerEntry(R(height, lastBlock.timestamp), ce), StringEntry(U(bR, bO), aN(cY, cZ, cU, ce, bk, cT, height, lastBlock.timestamp, cV, cW))]
376376 $Tuple13(cQ, cU, ce, bZ, cb, cD, bS, bX, da, cV, cW, co, cq)
377377 }
378378 }
379379
380380
381381 func db (dc) = {
382382 let bB = aE()
383383 let dd = bB[s]
384384 let de = bB[t]
385385 let bX = parseIntValue(bB[q])
386386 let bC = parseIntValue(bB[u])
387387 let bD = parseIntValue(bB[v])
388388 let df = bc(dd)
389389 let dg = bc(de)
390390 let cd = if ((dc.orderType == Buy))
391391 then bs(bC, bD, (df + dc.amount), dg)
392392 else bs(bC, bD, (df - dc.amount), dg)
393393 let ce = F(cd, a)
394394 if (if (if (aB())
395395 then true
396396 else (bX == n))
397397 then true
398398 else (bX == o))
399399 then throw("Admin blocked")
400400 else {
401401 let dh = dc.assetPair.amountAsset
402402 let di = if ((dh == unit))
403403 then "WAVES"
404404 else toBase58String(value(dh))
405405 let dj = dc.assetPair.priceAsset
406406 let dk = if ((dj == unit))
407407 then "WAVES"
408408 else toBase58String(value(dj))
409409 if (if ((di != dd))
410410 then true
411411 else (dk != de))
412412 then throw("Wr assets")
413413 else {
414414 let dl = dc.price
415415 let cC = fraction(a, bD, bC)
416416 let dm = I(dl, a, cC)
417417 let dn = if ((dc.orderType == Buy))
418418 then (ce >= dm)
419419 else (dm >= ce)
420420 true
421421 }
422422 }
423423 }
424424
425425
426426 func do (dp) = if ((size(dp.payments) != 1))
427427 then throw("1 pmnt exp")
428428 else {
429429 let dq = value(dp.payments[0])
430430 let bP = value(dq.assetId)
431431 let cv = dq.amount
432432 let cH = bN(toBase58String(dp.transactionId), toBase58String(bP), cv, dp.caller)
433433 let cj = cH._1
434434 let ck = cH._2
435435 let bX = parseIntValue(cH._9)
436436 let cl = cH._10
437437 if (if (aB())
438438 then true
439439 else (bX == o))
440440 then throw(("Admin blocked: " + toString(bX)))
441441 else $Tuple5(cj, ck, cv, bP, cl)
442442 }
443443
444444
445445 func dr (ds,W,dt,du,bk,cs,ct,cu,cv,cw) = {
446446 let cH = cm(W, bk, value(dt).amount, value(dt).assetId, value(du).amount, value(du).assetId, ds, false, cs, ct, cu, cv, cw)
447447 let bX = parseIntValue(cH._8)
448448 if (if (if (aB())
449449 then true
450450 else (bX == m))
451451 then true
452452 else (bX == o))
453453 then throw(("Blocked:" + toString(bX)))
454454 else cH
455455 }
456456
457457
458458 func dv (dw,bP,bR,W) = {
459459 let dx = aE()
460460 let bT = dx[s]
461461 let bU = dx[t]
462462 let bZ = bc(bT)
463463 let cb = bc(bU)
464464 let dy = bK(dw)
465465 let cv = dy._1
466466 let dz = dy._2
467467 let dA = if ((W == ""))
468468 then $Tuple2(bZ, cb)
469469 else if ((bP == bT))
470470 then if ((dw > bZ))
471471 then throw("invalid payment amount")
472472 else $Tuple2((bZ - dw), cb)
473473 else if ((bP == bU))
474474 then if ((dw > cb))
475475 then throw("invalid payment amount")
476476 else $Tuple2(bZ, (cb - dw))
477477 else throw("wrong pmtAssetId")
478478 let dB = dA._1
479479 let dC = dA._2
480480 let dD = if ((bP == bT))
481481 then $Tuple2(dB, dC)
482482 else $Tuple2(dC, dB)
483483 let dE = dD._1
484484 let dF = dD._2
485485 let dG = 1
486486 let dH = {
487487 let dI = invoke(aM, "calcPutXOnly", [toString(cv), toString(dE), toString(dF), "", aA, h, toString(dG), i], nil)
488488 if ($isInstanceOf(dI, "(Int, Int)"))
489489 then dI
490490 else throw(($getType(invoke(aM, "calcPutXOnly", [toString(cv), toString(dE), toString(dF), "", aA, h, toString(dG), i], nil)) + " couldn't be cast to (Int, Int)"))
491491 }
492492 let dJ = if ((bP == bT))
493493 then dH
494494 else $Tuple2(dH._2, dH._1)
495495 let dK = dJ._1
496496 let dL = dJ._2
497497 let dM = dr(bR, W, AttachedPayment(fromBase58String(bT), dK), AttachedPayment(fromBase58String(bU), dL), 0, true, true, false, cv, bP)
498498 let dN = dM._2
499499 let dO = dM._7
500500 let cl = dM._9
501501 let cV = dM._10
502502 let cW = dM._11
503503 dM
504504 }
505505
506506
507507 func dP () = {
508508 let at = getString(O())
509509 if ($isInstanceOf(at, "String"))
510510 then {
511511 let dQ = at
512512 fromBase58String(dQ)
513513 }
514514 else if ($isInstanceOf(at, "Unit"))
515515 then unit
516516 else throw("Match error")
517517 }
518518
519519
520520 func dR () = {
521521 let at = getString(P())
522522 if ($isInstanceOf(at, "String"))
523523 then {
524524 let dQ = at
525525 fromBase58String(dQ)
526526 }
527527 else if ($isInstanceOf(at, "Unit"))
528528 then unit
529529 else throw("Match error")
530530 }
531531
532532
533533 let dS = throw("Permission denied")
534534
535535 func dT (dp) = {
536536 let at = dP()
537537 if ($isInstanceOf(at, "ByteVector"))
538538 then {
539539 let dU = at
540540 if ((dp.callerPublicKey == dU))
541541 then true
542542 else dS
543543 }
544544 else if ($isInstanceOf(at, "Unit"))
545545 then if ((dp.caller == this))
546546 then true
547547 else dS
548548 else throw("Match error")
549549 }
550550
551551
552552 @Callable(dp)
553553 func constructor (N) = {
554554 let dV = dT(dp)
555555 if ((dV == dV))
556556 then [StringEntry(N(), N)]
557557 else throw("Strict value is not equal to itself.")
558558 }
559559
560560
561561
562562 @Callable(dp)
563563 func setManager (dW) = {
564564 let dV = dT(dp)
565565 if ((dV == dV))
566566 then {
567567 let dX = fromBase58String(dW)
568568 if ((dX == dX))
569569 then [StringEntry(P(), dW)]
570570 else throw("Strict value is not equal to itself.")
571571 }
572572 else throw("Strict value is not equal to itself.")
573573 }
574574
575575
576576
577577 @Callable(dp)
578578 func confirmManager () = {
579579 let bJ = dR()
580580 let dY = if (isDefined(bJ))
581581 then true
582582 else throw("No pending manager")
583583 if ((dY == dY))
584584 then {
585585 let dZ = if ((dp.callerPublicKey == value(bJ)))
586586 then true
587587 else throw("You are not pending manager")
588588 if ((dZ == dZ))
589589 then [StringEntry(O(), toBase58String(value(bJ))), DeleteEntry(P())]
590590 else throw("Strict value is not equal to itself.")
591591 }
592592 else throw("Strict value is not equal to itself.")
593593 }
594594
595595
596596
597597 @Callable(dp)
598598 func put (ea,eb) = {
599599 let ec = aI()
600600 let ed = valueOrErrorMessage(addressFromString(ec[y]), "Wr st addr")
601601 let ee = valueOrErrorMessage(addressFromString(ec[z]), "Wr sl addr")
602602 if ((0 > ea))
603603 then throw("Wrong slippage")
604604 else if ((size(dp.payments) != 2))
605605 then throw("2 pmnts expd")
606606 else {
607607 let ef = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], ea, true, false, true, 0, "")
608608 let cU = ef._2
609609 let dO = ef._7
610610 let cl = ef._9
611611 let cV = ef._10
612612 let cW = ef._11
613613 let bT = ef._12
614614 let bU = ef._13
615615 let cH = invoke(az, "emit", [cU], nil)
616616 if ((cH == cH))
617617 then {
618618 let eg = {
619619 let at = cH
620620 if ($isInstanceOf(at, "Address"))
621621 then {
622622 let eh = at
623623 invoke(eh, "emit", [cU], nil)
624624 }
625625 else unit
626626 }
627627 if ((eg == eg))
628628 then {
629629 let ei = if ((cV > 0))
630630 then invoke(ee, "put", nil, [AttachedPayment(bT, cV)])
631631 else nil
632632 if ((ei == ei))
633633 then {
634634 let ej = if ((cW > 0))
635635 then invoke(ee, "put", nil, [AttachedPayment(bU, cW)])
636636 else nil
637637 if ((ej == ej))
638638 then {
639639 let ek = if (eb)
640640 then {
641641 let el = invoke(ed, "stake", nil, [AttachedPayment(dO, cU)])
642642 if ((el == el))
643643 then nil
644644 else throw("Strict value is not equal to itself.")
645645 }
646646 else [ScriptTransfer(dp.caller, cU, dO)]
647647 (cl ++ ek)
648648 }
649649 else throw("Strict value is not equal to itself.")
650650 }
651651 else throw("Strict value is not equal to itself.")
652652 }
653653 else throw("Strict value is not equal to itself.")
654654 }
655655 else throw("Strict value is not equal to itself.")
656656 }
657657 }
658658
659659
660660
661661 @Callable(dp)
662662 func putOneTkn (dK,dL,em,bk,eb) = {
663663 let bB = aI()
664664 let ed = valueOrErrorMessage(addressFromString(bB[y]), "Wr st addr")
665665 let ee = valueOrErrorMessage(addressFromString(bB[z]), "Wr sl addr")
666666 let en = valueOrErrorMessage(addressFromString(bB[A]), "Wr gwx addr")
667667 let eo = aE()
668668 let bT = eo[s]
669669 let bU = eo[t]
670670 let bV = parseIntValue(eo[u])
671671 let bW = parseIntValue(eo[v])
672672 let ep = valueOrElse(getString(this, ab()), "")
673673 let bR = if ((ep == toString(dp.caller)))
674674 then dp.originCaller
675675 else dp.caller
676676 if (if (if (if ((0 >= bk))
677677 then true
678678 else (0 >= dK))
679679 then true
680680 else (0 >= dL))
681681 then true
682682 else (0 >= em))
683683 then throw("Wrong params")
684684 else if ((size(dp.payments) != 1))
685685 then throw("1 pmnt expd")
686686 else {
687687 let dq = value(dp.payments[0])
688688 let bP = toBase58String(value(dq.assetId))
689689 let eq = dq.amount
690690 let er = bK(eq)
691691 let cv = er._1
692692 let dz = er._2
693693 if ((10000000 > eq))
694694 then throw("Wrong pmt amt")
695695 else {
696696 let bZ = bc(bT)
697697 let cb = bc(bU)
698698 let es = if ((bP == bT))
699699 then if (if ((eq > bZ))
700700 then true
701701 else (dK > cv))
702702 then throw("invalid payment amount")
703703 else $Tuple6((bZ - eq), cb, (cv - dK), dL, 0, 0)
704704 else if ((bP == bU))
705705 then if (if ((eq > cb))
706706 then true
707707 else (dL > cv))
708708 then throw("invalid payment amount")
709709 else $Tuple6(bZ, (cb - eq), 0, 0, (cv - dL), dK)
710710 else throw("wrong pmtAssetId")
711711 let dB = es._1
712712 let dC = es._2
713713 let et = es._3
714714 let eu = es._4
715715 let ev = es._5
716716 let ew = es._6
717717 let bp = invoke(en, "calcD", [toString(dB), toString(dC), aA, h, i], nil)
718718 let bo = invoke(en, "calcD", [toString(toBigInt(((dB + et) - ew))), toString(toBigInt(((dC + ev) - eu))), aA, h, i], nil)
719719 let ex = bn(parseBigIntValue(as(bo)), parseBigIntValue(as(bp)), g)
720720 if ((ex == ex))
721721 then {
722722 let dM = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bT), dK), AttachedPayment(fromBase58String(bU), dL), bk, true, true, true, cv, bP)
723723 let dN = dM._2
724724 let dO = dM._7
725725 let cl = dM._9
726726 let cV = dM._10
727727 let cW = dM._11
728728 let ey = bh(toBigInt(dN), toBigInt(em), toBigInt(bk))
729729 let cU = toInt(ey._2)
730730 let ef = invoke(az, "emit", [cU], nil)
731731 if ((ef == ef))
732732 then {
733733 let eg = {
734734 let at = ef
735735 if ($isInstanceOf(at, "Address"))
736736 then {
737737 let eh = at
738738 invoke(eh, "emit", [cU], nil)
739739 }
740740 else unit
741741 }
742742 if ((eg == eg))
743743 then {
744744 let ei = if ((cV > 0))
745745 then invoke(ee, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
746746 else nil
747747 if ((ei == ei))
748748 then {
749749 let ej = if ((cW > 0))
750750 then invoke(ee, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
751751 else nil
752752 if ((ej == ej))
753753 then {
754754 let ek = if (eb)
755755 then {
756756 let el = invoke(ed, "stake", nil, [AttachedPayment(dO, cU)])
757757 if ((el == el))
758758 then nil
759759 else throw("Strict value is not equal to itself.")
760760 }
761761 else [ScriptTransfer(dp.caller, cU, dO)]
762762 let ez = if ((dz > 0))
763763 then [ScriptTransfer(aD, dz, fromBase58String(bP))]
764764 else nil
765765 ((cl ++ ek) ++ ez)
766766 }
767767 else throw("Strict value is not equal to itself.")
768768 }
769769 else throw("Strict value is not equal to itself.")
770770 }
771771 else throw("Strict value is not equal to itself.")
772772 }
773773 else throw("Strict value is not equal to itself.")
774774 }
775775 else throw("Strict value is not equal to itself.")
776776 }
777777 }
778778 }
779779
780780
781781
782782 @Callable(dp)
783783 func putOneTknV2 (eA,eb) = if ((size(dp.payments) != 1))
784784 then throw("1 pmnt expd")
785785 else {
786786 let dx = aE()
787787 let bT = dx[s]
788788 let bU = dx[t]
789789 let eB = parseIntValue(dx[u])
790790 let eC = parseIntValue(dx[v])
791791 let bR = if ((dp.caller == this))
792792 then dp.originCaller
793793 else dp.caller
794794 let dq = value(dp.payments[0])
795795 let bP = toBase58String(value(dq.assetId))
796796 let cv = dq.amount
797797 if ((10000000 > cv))
798798 then throw("Wrong pmt amt")
799799 else {
800800 let cH = dv(cv, bP, toString(bR), toBase58String(dp.transactionId))
801801 let dN = cH._2
802802 let dO = cH._7
803803 let cl = cH._9
804804 let cV = cH._10
805805 let cW = cH._11
806806 let cU = if (if ((eA > 0))
807807 then (eA > dN)
808808 else false)
809809 then throw(makeString(["amount to receive is less than ", toString(eA)], ""))
810810 else dN
811811 let ef = invoke(az, "emit", [cU], nil)
812812 if ((ef == ef))
813813 then {
814814 let eg = {
815815 let at = ef
816816 if ($isInstanceOf(at, "Address"))
817817 then {
818818 let eh = at
819819 invoke(eh, "emit", [cU], nil)
820820 }
821821 else unit
822822 }
823823 if ((eg == eg))
824824 then {
825825 let ei = if ((cV > 0))
826826 then invoke(aL, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
827827 else nil
828828 if ((ei == ei))
829829 then {
830830 let ej = if ((cW > 0))
831831 then invoke(aL, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
832832 else nil
833833 if ((ej == ej))
834834 then {
835835 let ek = if (eb)
836836 then {
837837 let el = invoke(aK, "stake", nil, [AttachedPayment(dO, cU)])
838838 if ((el == el))
839839 then nil
840840 else throw("Strict value is not equal to itself.")
841841 }
842842 else [ScriptTransfer(dp.caller, cU, dO)]
843843 $Tuple2((cl ++ ek), cU)
844844 }
845845 else throw("Strict value is not equal to itself.")
846846 }
847847 else throw("Strict value is not equal to itself.")
848848 }
849849 else throw("Strict value is not equal to itself.")
850850 }
851851 else throw("Strict value is not equal to itself.")
852852 }
853853 }
854854
855855
856856
857857 @Callable(dp)
858858 func putOneTknV2READONLY (eD,eE) = {
859859 let cH = dv(eD, eE, "", "")
860860 let dN = cH._2
861861 let dO = cH._7
862862 let cl = cH._9
863863 let cV = cH._10
864864 let cW = cH._11
865865 $Tuple2(nil, dN)
866866 }
867867
868868
869869
870870 @Callable(dp)
871871 func putOneTknV2WithBonusREADONLY (eD,eE) = {
872872 let dx = aE()
873873 let bT = dx[s]
874874 let bU = dx[t]
875875 let bZ = bc(bT)
876876 let cb = bc(bU)
877877 let cH = dv(eD, eE, "", "")
878878 let dN = cH._2
879879 let ce = cH._3
880880 let eF = cH._6
881881 let dO = cH._7
882882 let eG = if ((eE == bT))
883883 then {
884884 let eH = fraction(eD, ce, a)
885885 $Tuple2(eD, eH)
886886 }
887887 else {
888888 let eI = fraction(eD, a, ce)
889889 $Tuple2(eI, eD)
890890 }
891891 let eI = eG._1
892892 let eH = eG._2
893893 let eJ = fraction(eF, eH, cb)
894894 let eK = if ((eE == bT))
895895 then fraction(eI, a, dN)
896896 else fraction(eH, a, dN)
897897 let eL = fraction((eH + eI), a, eJ)
898898 let eM = fraction((eL - eK), a, eK)
899899 let dz = bK(eD)._2
900900 $Tuple2(nil, $Tuple3(dN, dz, eM))
901901 }
902902
903903
904904
905905 @Callable(dp)
906906 func putForFree (eN) = if ((0 > eN))
907907 then throw("Wrong slpg")
908908 else if ((size(dp.payments) != 2))
909909 then throw("2 pmnts expd")
910910 else {
911911 let dM = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], eN, false, false, true, 0, "")
912912 dM._9
913913 }
914914
915915
916916
917917 @Callable(dp)
918918 func get () = {
919919 let cH = do(dp)
920920 let eO = cH._1
921921 let ck = cH._2
922922 let cv = cH._3
923923 let bP = cH._4
924924 let cl = cH._5
925925 let eP = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
926926 if ((eP == eP))
927927 then cl
928928 else throw("Strict value is not equal to itself.")
929929 }
930930
931931
932932
933933 @Callable(dp)
934934 func getOneTkn (eQ,eR,eS,eT,bk) = if ((size(dp.payments) != 1))
935935 then throw("1 pmnt expd")
936936 else {
937937 let bB = aE()
938938 let bS = bB[r]
939939 let bT = bB[s]
940940 let bU = bB[t]
941941 let bV = parseIntValue(bB[u])
942942 let bW = parseIntValue(bB[v])
943943 let bX = bB[q]
944944 let ec = aI()
945945 let en = valueOrErrorMessage(addressFromString(ec[A]), "Wr sl addr")
946946 let dq = value(dp.payments[0])
947947 let ep = valueOrElse(getString(this, ab()), "")
948948 let bR = if ((ep == toString(dp.caller)))
949949 then dp.originCaller
950950 else dp.caller
951951 let bO = toBase58String(dp.transactionId)
952952 let bP = value(dq.assetId)
953953 let cv = dq.amount
954954 if ((1000000000 > cv))
955955 then throw("Min pmt 10 LP")
956956 else if (if (if ((0 > bk))
957957 then true
958958 else (0 > eQ))
959959 then true
960960 else (0 > eS))
961961 then throw("Wrong params")
962962 else if ((bS != toBase58String(bP)))
963963 then throw("Wrong LP")
964964 else {
965965 let cH = bN(toBase58String(dp.transactionId), toBase58String(bP), cv, dp.caller)
966966 let eU = cH._1
967967 let eV = cH._2
968968 let bZ = bc(bT)
969969 let cb = bc(bU)
970970 let eW = if ((eT == bT))
971971 then $Tuple7((bZ - eU), (cb - eV), eQ, eV, 0, 0, (eU + eQ))
972972 else if ((eT == bU))
973973 then $Tuple7((bZ - eU), (cb - eV), 0, 0, eQ, eU, (eV + eQ))
974974 else throw("wrong outAssetId")
975975 let dB = eW._1
976976 let dC = eW._2
977977 let et = eW._3
978978 let eu = eW._4
979979 let ev = eW._5
980980 let ew = eW._6
981981 let eX = eW._7
982982 if (if ((0 > et))
983983 then true
984984 else (0 > ev))
985985 then throw("Wrong calc")
986986 else {
987987 let bp = invoke(en, "calcD", [toString(dB), toString(dC), aA, h, i], nil)
988988 let bo = invoke(en, "calcD", [toString(((dB - et) + ew)), toString(((dC + eu) - ev)), aA, h, i], nil)
989989 let ex = bn(parseBigIntValue(as(bo)), parseBigIntValue(as(bp)), g)
990990 if ((ex == ex))
991991 then {
992992 let eY = bK(eX)._1
993993 let eZ = bh(toBigInt(eY), toBigInt(eS), toBigInt(bk))
994994 if ((eZ == eZ))
995995 then {
996996 let fa = if ((eT == bT))
997997 then $Tuple2(toInt(eZ._2), 0)
998998 else $Tuple2(0, toInt(eZ._2))
999999 let fb = fa._1
10001000 let fc = fa._2
10011001 let fd = (fb + fc)
10021002 let dz = (eX - eY)
10031003 let fe = if ((eT == "WAVES"))
10041004 then unit
10051005 else fromBase58String(eT)
10061006 let ez = if ((dz > 0))
10071007 then [ScriptTransfer(aD, dz, fe)]
10081008 else nil
10091009 let ff = be(C(cb, bW), C(bZ, bV))
10101010 let fg = F(ff, a)
10111011 let cl = [ScriptTransfer(bR, fd, fe), StringEntry(X(toString(bR), bO), aY(fb, fc, cv, fg, height, lastBlock.timestamp)), IntegerEntry(Q(), fg), IntegerEntry(R(height, lastBlock.timestamp), fg)]
10121012 if ((cl == cl))
10131013 then {
10141014 let fh = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
10151015 if ((fh == fh))
10161016 then (cl ++ ez)
10171017 else throw("Strict value is not equal to itself.")
10181018 }
10191019 else throw("Strict value is not equal to itself.")
10201020 }
10211021 else throw("Strict value is not equal to itself.")
10221022 }
10231023 else throw("Strict value is not equal to itself.")
10241024 }
10251025 }
10261026 }
10271027
10281028
10291029
10301030 @Callable(dp)
10311031 func getOneTknV2 (eT,eA) = if ((size(dp.payments) != 1))
10321032 then throw("1 pmnt expd")
10331033 else {
10341034 let dx = aE()
10351035 let bS = dx[r]
10361036 let bT = dx[s]
10371037 let bU = dx[t]
10381038 let eB = parseIntValue(dx[u])
10391039 let eC = parseIntValue(dx[v])
10401040 let fi = dx[q]
10411041 let bR = if ((dp.caller == this))
10421042 then dp.originCaller
10431043 else dp.caller
10441044 let dq = value(dp.payments[0])
10451045 let bP = value(dq.assetId)
10461046 let cv = dq.amount
10471047 if ((1000000000 > cv))
10481048 then throw("Min pmt 10 LP")
10491049 else {
10501050 let bO = toBase58String(dp.transactionId)
10511051 if ((bS != toBase58String(bP)))
10521052 then throw("Wrong LP")
10531053 else {
10541054 let bZ = bc(bT)
10551055 let cb = bc(bU)
10561056 let eY = {
10571057 let dI = invoke(this, "getOneTknV2READONLY", [eT, cv], nil)
10581058 if ($isInstanceOf(dI, "Int"))
10591059 then dI
10601060 else throw(($getType(invoke(this, "getOneTknV2READONLY", [eT, cv], nil)) + " couldn't be cast to Int"))
10611061 }
10621062 let fd = if (if ((eA > 0))
10631063 then (eA > eY)
10641064 else false)
10651065 then throw(makeString(["amount to receive is less than ", toString(eA)], ""))
10661066 else eY
10671067 let fj = if ((eT == bT))
10681068 then $Tuple2(fd, 0)
10691069 else $Tuple2(0, fd)
10701070 let fb = fj._1
10711071 let fc = fj._2
10721072 let ff = be(C(cb, eC), C(bZ, eB))
10731073 let fg = F(ff, a)
10741074 let cl = [ScriptTransfer(bR, fd, if ((eT == "WAVES"))
10751075 then unit
10761076 else fromBase58String(eT)), StringEntry(X(toString(bR), bO), aY(fb, fc, cv, fg, height, lastBlock.timestamp)), IntegerEntry(Q(), fg), IntegerEntry(R(height, lastBlock.timestamp), fg)]
10771077 if ((cl == cl))
10781078 then {
10791079 let fh = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
10801080 if ((fh == fh))
10811081 then $Tuple2(cl, fd)
10821082 else throw("Strict value is not equal to itself.")
10831083 }
10841084 else throw("Strict value is not equal to itself.")
10851085 }
10861086 }
10871087 }
10881088
10891089
10901090
10911091 @Callable(dp)
10921092 func getOneTknV2READONLY (eT,fk) = {
10931093 let dx = aE()
10941094 let bS = dx[r]
10951095 let bT = dx[s]
10961096 let bU = dx[t]
10971097 let cH = bN("", bS, fk, this)
10981098 let eU = cH._1
10991099 let eV = cH._2
11001100 let bZ = bc(bT)
11011101 let cb = bc(bU)
11021102 let dB = (bZ - eU)
11031103 let dC = (cb - eV)
11041104 let fl = if ((eT == bT))
11051105 then $Tuple3(dC, dB, eV)
11061106 else if ((eT == bU))
11071107 then $Tuple3(dB, dC, eU)
11081108 else throw("wrong outAssetId")
11091109 let fm = fl._1
11101110 let fn = fl._2
11111111 let fo = fl._3
11121112 let fp = 1
11131113 let eQ = {
11141114 let dI = invoke(aM, "calcSwapXToY", [toString(fo), toString(fm), toString(fn), "", aA, h, toString(fp), i], nil)
11151115 if ($isInstanceOf(dI, "Int"))
11161116 then dI
11171117 else throw(($getType(invoke(aM, "calcSwapXToY", [toString(fo), toString(fm), toString(fn), "", aA, h, toString(fp), i], nil)) + " couldn't be cast to Int"))
11181118 }
11191119 let eX = (eQ + (if ((eT == bT))
11201120 then eU
11211121 else eV))
11221122 let fq = bK(eX)
11231123 let eY = fq._1
11241124 let dz = fq._2
11251125 $Tuple2(nil, $Tuple2(eY, dz))
11261126 }
11271127
11281128
11291129
11301130 @Callable(dp)
11311131 func getOneTknV2WithBonusREADONLY (eT,fk) = {
11321132 let dx = aE()
11331133 let bT = dx[s]
11341134 let bU = dx[t]
11351135 let bS = dx[r]
11361136 let bZ = bc(bT)
11371137 let cb = bc(bU)
11381138 let fr = {
11391139 let dI = invoke(this, "getOneTknV2READONLY", [eT, fk], nil)
11401140 if ($isInstanceOf(dI, "(Int, Int)"))
11411141 then dI
11421142 else throw(($getType(invoke(this, "getOneTknV2READONLY", [eT, fk], nil)) + " couldn't be cast to (Int, Int)"))
11431143 }
11441144 let eY = fr._1
11451145 let dz = fr._2
11461146 let cH = bN("", bS, fk, this)
11471147 let cj = cH._1
11481148 let ck = cH._2
11491149 let eK = fraction(eY, a, fk)
11501150 let eL = fraction((cj + ck), a, fk)
11511151 let eM = fraction((eK - eL), a, eL)
11521152 $Tuple2(nil, $Tuple3(eY, dz, eM))
11531153 }
11541154
11551155
11561156
11571157 @Callable(dp)
11581158 func getNoLess (fs,ft) = {
11591159 let cH = do(dp)
11601160 let cj = cH._1
11611161 let ck = cH._2
11621162 let cv = cH._3
11631163 let bP = cH._4
11641164 let cl = cH._5
11651165 if ((fs > cj))
11661166 then throw(((("Failed: " + toString(cj)) + " < ") + toString(fs)))
11671167 else if ((ft > ck))
11681168 then throw(((("Failed: " + toString(ck)) + " < ") + toString(ft)))
11691169 else {
11701170 let fu = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
11711171 if ((fu == fu))
11721172 then cl
11731173 else throw("Strict value is not equal to itself.")
11741174 }
11751175 }
11761176
11771177
11781178
11791179 @Callable(dp)
11801180 func unstakeAndGet (bL) = {
11811181 let fv = if ((size(dp.payments) != 0))
11821182 then throw("No pmnts expd")
11831183 else true
11841184 if ((fv == fv))
11851185 then {
11861186 let bB = aE()
11871187 let fw = aI()
11881188 let dO = fromBase58String(bB[r])
11891189 let fx = valueOrErrorMessage(addressFromString(fw[y]), "Wr st addr")
11901190 let fy = invoke(fx, "unstake", [toBase58String(dO), bL], nil)
11911191 if ((fy == fy))
11921192 then {
11931193 let cH = bN(toBase58String(dp.transactionId), toBase58String(dO), bL, dp.caller)
11941194 let bX = parseIntValue(cH._9)
11951195 let cl = cH._10
11961196 let fz = if (if (aB())
11971197 then true
11981198 else (bX == o))
11991199 then throw(("Blocked: " + toString(bX)))
12001200 else true
12011201 if ((fz == fz))
12021202 then {
12031203 let fA = invoke(az, "burn", [bL], [AttachedPayment(dO, bL)])
12041204 if ((fA == fA))
12051205 then cl
12061206 else throw("Strict value is not equal to itself.")
12071207 }
12081208 else throw("Strict value is not equal to itself.")
12091209 }
12101210 else throw("Strict value is not equal to itself.")
12111211 }
12121212 else throw("Strict value is not equal to itself.")
12131213 }
12141214
12151215
12161216
12171217 @Callable(dp)
1218-func unstakeAndGetOneTkn (bL,eS,eT,bk) = {
1218+func unstakeAndGetOneTkn (fB,eT,eA) = {
12191219 let fv = if ((size(dp.payments) != 0))
12201220 then throw("No pmnts expd")
12211221 else true
12221222 if ((fv == fv))
12231223 then {
12241224 let bB = aE()
12251225 let fw = aI()
12261226 let dO = fromBase58String(bB[r])
12271227 let fx = valueOrErrorMessage(addressFromString(fw[y]), "Wr st addr")
1228- let fy = invoke(fx, "unstake", [toBase58String(dO), bL], nil)
1228+ let fy = invoke(fx, "unstake", [toBase58String(dO), fB], nil)
12291229 if ((fy == fy))
12301230 then {
1231- let fB = {
1232- let dI = invoke(this, "getOneTknV2", [eS, eT, bk], [AttachedPayment(dO, bL)])
1231+ let fC = {
1232+ let dI = invoke(this, "getOneTknV2", [eT, eA], [AttachedPayment(dO, fB)])
12331233 if ($isInstanceOf(dI, "Int"))
12341234 then dI
12351235 else unit
12361236 }
1237- if ((fB == fB))
1238- then $Tuple2(nil, fB)
1237+ if ((fC == fC))
1238+ then $Tuple2(nil, fC)
12391239 else throw("Strict value is not equal to itself.")
12401240 }
12411241 else throw("Strict value is not equal to itself.")
12421242 }
12431243 else throw("Strict value is not equal to itself.")
12441244 }
12451245
12461246
12471247
12481248 @Callable(dp)
1249-func activate (fC,fD) = if ((toString(dp.caller) != toString(az)))
1249+func activate (fD,fE) = if ((toString(dp.caller) != toString(az)))
12501250 then throw("denied")
1251- else $Tuple2([StringEntry(Y(), fC), StringEntry(Z(), fD)], "success")
1251+ else $Tuple2([StringEntry(Y(), fD), StringEntry(Z(), fE)], "success")
12521252
12531253
12541254
12551255 @Callable(dp)
1256-func setS (fE,fz) = if ((toString(dp.caller) != av(this, ab())))
1256+func setS (fF,fz) = if ((toString(dp.caller) != av(this, ab())))
12571257 then dS
1258- else [StringEntry(fE, fz)]
1258+ else [StringEntry(fF, fz)]
12591259
12601260
12611261
12621262 @Callable(dp)
1263-func setI (fE,fz) = if ((toString(dp.caller) != av(this, ab())))
1263+func setI (fF,fz) = if ((toString(dp.caller) != av(this, ab())))
12641264 then dS
1265- else [IntegerEntry(fE, fz)]
1265+ else [IntegerEntry(fF, fz)]
12661266
12671267
12681268
12691269 @Callable(dp)
12701270 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
12711271
12721272
12731273
12741274 @Callable(dp)
12751275 func getAccBalanceWrapperREADONLY (bd) = $Tuple2(nil, bc(bd))
12761276
12771277
12781278
12791279 @Callable(dp)
12801280 func calcPricesWrapperREADONLY (bv,bw,bA) = {
1281- let fF = bz(bv, bw, bA)
1282- $Tuple2(nil, [toString(fF[0]), toString(fF[1]), toString(fF[2])])
1281+ let fG = bz(bv, bw, bA)
1282+ $Tuple2(nil, [toString(fG[0]), toString(fG[1]), toString(fG[2])])
12831283 }
12841284
12851285
12861286
12871287 @Callable(dp)
1288-func fromX18WrapperREADONLY (G,fG) = $Tuple2(nil, F(parseBigIntValue(G), fG))
1288+func fromX18WrapperREADONLY (G,fH) = $Tuple2(nil, F(parseBigIntValue(G), fH))
12891289
12901290
12911291
12921292 @Callable(dp)
12931293 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
12941294
12951295
12961296
12971297 @Callable(dp)
12981298 func calcPriceBigIntWrapperREADONLY (bf,bg) = $Tuple2(nil, toString(be(parseBigIntValue(bf), parseBigIntValue(bg))))
12991299
13001300
13011301
13021302 @Callable(dp)
1303-func estimatePutOperationWrapperREADONLY (bO,bk,cn,co,cp,cq,fH,cr,cs) = $Tuple2(nil, cm(bO, bk, cn, co, cp, cq, fH, cr, cs, true, false, 0, ""))
1303+func estimatePutOperationWrapperREADONLY (bO,bk,cn,co,cp,cq,fI,cr,cs) = $Tuple2(nil, cm(bO, bk, cn, co, cp, cq, fI, cr, cs, true, false, 0, ""))
13041304
13051305
13061306
13071307 @Callable(dp)
1308-func estimateGetOperationWrapperREADONLY (bO,fI,bQ,fH) = {
1309- let cH = bN(bO, fI, bQ, addressFromStringValue(fH))
1308+func estimateGetOperationWrapperREADONLY (bO,fJ,bQ,fI) = {
1309+ let cH = bN(bO, fJ, bQ, addressFromStringValue(fI))
13101310 $Tuple2(nil, $Tuple10(cH._1, cH._2, cH._3, cH._4, cH._5, cH._6, cH._7, toString(cH._8), cH._9, cH._10))
13111311 }
13121312
13131313
1314-@Verifier(fJ)
1315-func fK () = {
1316- let fL = {
1314+@Verifier(fK)
1315+func fL () = {
1316+ let fM = {
13171317 let at = dP()
13181318 if ($isInstanceOf(at, "ByteVector"))
13191319 then {
13201320 let dU = at
13211321 dU
13221322 }
13231323 else if ($isInstanceOf(at, "Unit"))
1324- then fJ.senderPublicKey
1324+ then fK.senderPublicKey
13251325 else throw("Match error")
13261326 }
1327- let at = fJ
1327+ let at = fK
13281328 if ($isInstanceOf(at, "Order"))
13291329 then {
13301330 let dc = at
1331- let fM = aC()
1332- let fN = db(dc)
1333- let fO = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1334- let fP = sigVerify(dc.bodyBytes, dc.proofs[1], fM)
1335- if (if (if (fN)
1336- then fO
1337- else false)
1331+ let fN = aC()
1332+ let fO = db(dc)
1333+ let fP = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1334+ let fQ = sigVerify(dc.bodyBytes, dc.proofs[1], fN)
1335+ if (if (if (fO)
13381336 then fP
13391337 else false)
1338+ then fQ
1339+ else false)
13401340 then true
1341- else ao(fN, fO, fP)
1341+ else ao(fO, fP, fQ)
13421342 }
13431343 else if ($isInstanceOf(at, "SetScriptTransaction"))
13441344 then {
13451345 let dQ = at
1346- let fQ = blake2b256(value(dQ.script))
1347- let fR = fromBase64String(value(getString(az, am())))
1348- let fS = scriptHash(this)
1349- if (if ((fR == fQ))
1350- then (fS != fQ)
1346+ let fR = blake2b256(value(dQ.script))
1347+ let fS = fromBase64String(value(getString(az, am())))
1348+ let fT = scriptHash(this)
1349+ if (if ((fS == fR))
1350+ then (fT != fR)
13511351 else false)
13521352 then true
1353- else sigVerify(fJ.bodyBytes, fJ.proofs[0], fL)
1353+ else sigVerify(fK.bodyBytes, fK.proofs[0], fM)
13541354 }
1355- else sigVerify(fJ.bodyBytes, fJ.proofs[0], fL)
1355+ else sigVerify(fK.bodyBytes, fK.proofs[0], fM)
13561356 }
13571357

github/deemru/w8io/873ac7e 
142.42 ms