tx · CCtCwWhdVoZjmrWaHbCr2eTybmoNQLBEtqueQZ1Ssd4U

3N9KXr9JbnPwrN9oacmFjc3qB4tYrzvxWss:  -0.02900000 Waves

2022.10.26 11:07 [2289132] smart account 3N9KXr9JbnPwrN9oacmFjc3qB4tYrzvxWss > SELF 0.00000000 Waves

{ "type": 13, "id": "CCtCwWhdVoZjmrWaHbCr2eTybmoNQLBEtqueQZ1Ssd4U", "fee": 2900000, "feeAssetId": null, "timestamp": 1666771683367, "version": 1, "sender": "3N9KXr9JbnPwrN9oacmFjc3qB4tYrzvxWss", "senderPublicKey": "CuH6mrgac4GztriBQFELtAx7gw4diUcD94EVLt78E1kt", "proofs": [ "5VvrkDP8MehtcQMrH7fpUKbUV8fUsM74UiEV5AyCtvgkuSeRgKyWvesKRptveMtJ7wqP2B865ZR2wF9NuUb1mUQZ" ], "script": "base64:BgKfJwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBAoCCAgSABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzU0Mzc3MDkiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhBwcml2YXRlQ2FsY1ByaWNlIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiDmFtdEFzc2V0QW10WDE4IhBwcmljZUFzc2V0QW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIgthbXRBc3NldERjbSINcHJpY2VBc3NldERjbSIIcHJpY2VYMTgiCGxwQW10WDE4IhNscFByaWNlSW5BbUFzc2V0WDE4IhNscFByaWNlSW5QckFzc2V0WDE4Ig9jYWxjdWxhdGVQcmljZXMiBnByaWNlcyIUZXN0aW1hdGVHZXRPcGVyYXRpb24iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiCWxwQXNzZXRJZCIJYW1Bc3NldElkIglwckFzc2V0SWQiCnBvb2xTdGF0dXMiCmxwRW1pc3Npb24iCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCINbHBFbWlzc2lvblgxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIg1vcmRlckFtdEFzc2V0IhBvcmRlckFtdEFzc2V0U3RyIg9vcmRlclByaWNlQXNzZXQiEm9yZGVyUHJpY2VBc3NldFN0ciIKb3JkZXJQcmljZSIIcHJpY2VEY20iEGNhc3RlZE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIg0kdDAyMjIzMjIyNDEwIgtwb29sQWRkcmVzcyINYW1vdW50QXNzZXRJZCITYW1vdW50QXNzZXREZWNpbWFscyIScHJpY2VBc3NldERlY2ltYWxzIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAyMjc0MDIzMDMzIhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDIzMDM3MjMxODYiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3IhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjMzMDgyMzM2NyINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCILcHJpY2VJbXBhY3QiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCINJHQwMjUxODkyNTM1MCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjY0MjUyNjQ3NSILdG90YWxBbW91bnQiDSR0MDI2NDc5MjY3MDUiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgttdXN0TWFuYWdlciICcGQiAnBrIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiILbWF4U2xpcHBhZ2UiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDAzMTA1NzMxMTg0IhNlbWl0QW1vdW50RXN0aW1hdGVkIgVib251cyIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDMxOTEzMzIwNDgiDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDMyNjM2MzI3NjgiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwMzM0MDMzMzU0MSINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwMzQxNDkzNDI3OSIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciINcG9vbExQQmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hiAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWQBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBTwEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFQAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFSAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFTAAIRJXMlc19fcHJpY2VfX2xhc3QBAVQCAVUBVgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVUJAMwIAgkApAMBBQFWBQNuaWwFAWoBAVcCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVgCAl9fBQFZAQFaAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFYAgJfXwUBWQECYWEAAg8lc19fYW1vdW50QXNzZXQBAmFiAAIOJXNfX3ByaWNlQXNzZXQAAmFjAgclc19fZmVlAAJhZAkAawMABQUBYgCQTgACYWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWMFAmFkAQJhZgACESVzX19mYWN0b3J5Q29uZmlnAQJhZwACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYWgBAmFpCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFpAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYWoCAmFrAmFsCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhawICX18FAmFsAghfX2NvbmZpZwECYW0BAmFuCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFuAQJhbwACDCVzX19zaHV0ZG93bgECYXABAmFxCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXEBAmFyAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFzAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXQDAmF1AmF2AmF3CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhdQINIHNlbmRlclZhbGlkPQkApQMBBQJhdgIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYXcBAmF4AgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFBAgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFCAQJhQwkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhQwUDbmlsAgEgAAJhRAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUEdGhpcwkBAVAAAAJhRQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUCYUQFAmFzAQJhRgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUQJAQJhbwAHAQJhRwAJANkEAQkBAmF4AgUCYUQJAQJhZwABAmFIAAQCYUkJAQJheAIFBHRoaXMJAQJhYQAEAmFKCQECYXgCBQR0aGlzCQECYWIABAJhbAkBAmFBAgUCYUQJAQJhbQEFAmFKBAJhawkBAmFBAgUCYUQJAQJhbQEFAmFJCQC1CQIJAQJheAIFAmFECQECYWoCCQCkAwEFAmFrCQCkAwEFAmFsBQFqAQJhSwECYUwDCQAAAgUCYUwFAWkFBHVuaXQJANkEAQUCYUwBAmFNAQJhTAMJAAACBQJhTAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhTAECYU4BAmFPCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYU8FAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBcAkA2QQBCQCRAwIFAmFPBQFxCQECYUsBCQCRAwIFAmFPBQFyCQECYUsBCQCRAwIFAmFPBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU8FAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBdQACYVAJAQJhTgEJAQJhSAAAAmFRBQJhUAACYVIIBQJhUQJfMQACYVMIBQJhUQJfMgACYVQIBQJhUQJfMwACYVUIBQJhUQJfNAACYVYIBQJhUQJfNQACYVcIBQJhUQJfNgACYVgIBQJhUQJfNwECYVkACQC1CQIJAQJheAIFAmFECQECYWYABQFqAAJhWgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFZAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJhWQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJiCgJiYwJiZAJiZQJiZgJiZwJiaAJiaQJiagJiawJibAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmMJAMwIAgkApAMBBQJiZAkAzAgCCQCkAwEFAmJlCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiZwkAzAgCCQCkAwEFAmJoCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJrCQDMCAIJAKQDAQUCYmwFA25pbAUBagECYm0GAmJuAmJvAmJwAmJmAmJpAmJqCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqBQNuaWwFAWoBAmJxAQJicgMJAAACBQJicgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnIBAmJzAgJidAJidQkAvAIDBQJidAUBZAUCYnUBAmJ2BAJidwJieAJieQJiegQCYkEJAQFEAgUCYnkFAmJ3BAJiQgkBAUQCBQJiegUCYngJAQJicwIFAmJCBQJiQQECYkMDAmJ5AmJ6AmJEBAJiRQkBAmFIAAQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYkgJAQJidgQFAmJGBQJiRwUCYnkFAmJ6BAJidQkBAUQCBQJieQUCYkYEAmJ0CQEBRAIFAmJ6BQJiRwQCYkkJAQFEAgUCYkQFAWIEAmJKCQECYnMCBQJidQUCYkkEAmJLCQECYnMCBQJidAUCYkkJAMwIAgUCYkgJAMwIAgUCYkoJAMwIAgUCYksFA25pbAECYkwDAmJ5AmJ6AmJEBAJiTQkBAmJDAwUCYnkFAmJ6BQJiRAkAzAgCCQEBRwIJAJEDAgUCYk0AAAUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAQUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAgUBYgUDbmlsAQJiTgQCYk8CYlACYlEBWAQCYkUJAQJhSAAEAmJSCQCRAwIFAmJFBQFxBAJiUwkAkQMCBQJiRQUBcgQCYlQJAJEDAgUCYkUFAXMEAmJ3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJ4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJiVggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiUgUCYlAJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmJXCQECYnEBBQJiUwQCYlgJAQFEAgUCYlcFAmJ3BAJiWQkBAmJxAQUCYlQEAmJaCQEBRAIFAmJZBQJieAQCY2EJAQJicwIFAmJaBQJiWAQCY2IJAQFHAgUCY2EFAWIEAmNjCQEBRAIFAmJRBQFiBAJjZAkBAUQCBQJiVgUBYgQCY2UJALwCAwUCYlgFAmNjBQJjZAQCY2YJALwCAwUCYloFAmNjBQJjZAQCY2cJAQFHAgUCY2UFAmJ3BAJjaAkBAUcCBQJjZgUCYngEAmNpAwkAAAIFAmJPAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjZwMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY2gDCQAAAgUCYlQCBVdBVkVTBQR1bml0CQDZBAEFAmJUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQFYBQJiTwkBAmJtBgUCY2cFAmNoBQJiUQUCY2IFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2IFA25pbAkAnAoKBQJjZwUCY2gFAmJTBQJiVAUCYlcFAmJZBQJiVgUCY2EFAmJVBQJjaQECY2oJAmJPAmNrAmNsAmNtAmNuAmNvAVgCY3ACY3EEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjcgkAkQMCBQJiRQUBcgQCY3MJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmJWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY3YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY20JANkEAQIFV0FWRVMEAmN3CQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNvCQDZBAECBVdBVkVTAwMJAQIhPQIFAmNyBQJjdgYJAQIhPQIFAmNzBQJjdwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmJXAwUCY3AJAQJicQEFAmNyCQBlAgkBAmJxAQUCY3IFAmNsBAJiWQMFAmNwCQECYnEBBQJjcwkAZQIJAQJicQEFAmNzBQJjbgQCY3gJAQFEAgUCY2wFAmJGBAJjeQkBAUQCBQJjbgUCYkcEAmN6CQECYnMCBQJjeQUCY3gEAmJYCQEBRAIFAmJXBQJiRgQCYloJAQFEAgUCYlkFAmJHBAJjQQMJAAACBQJiVgAABAJjYQUBZQQCY0IFAWUEAmJJCQB2BgkAuQICBQJjeAUCY3kAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkkFAWIJAQFHAgUCY3gFAmJGCQEBRwIFAmN5BQJiRwkBAmJzAgkAtwICBQJiWgUCY3kJALcCAgUCYlgFAmN4BQJjQgQCY2EJAQJicwIFAmJaBQJiWAQCY0IJALwCAwkBAU8BCQC4AgIFAmNhBQJjegUBZAUCY2EEAmNDCQEBRAIFAmNrBQFiAwMJAQIhPQIFAmNhBQFlCQC/AgIFAmNCBQJjQwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0ICHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjQwQCY2QJAQFEAgUCYlYFAWIEAmNECQC8AgMFAmN4BQJjYQUBZAQCY0UJALwCAwUCY3kFAWQFAmNhBAJjRgMJAL8CAgUCY0QFAmN5CQCUCgIFAmNFBQJjeQkAlAoCBQJjeAUCY0QEAmNHCAUCY0YCXzEEAmNICAUCY0YCXzIEAmJJCQC8AgMFAmNkBQJjSAUCYloJAJcKBQkBAUcCBQJiSQUBYgkBAUcCBQJjRwUCYkYJAQFHAgUCY0gFAmJHBQJjYQUCY0IEAmNJCAUCY0ECXzEEAmNKCAUCY0ECXzIEAmNLCAUCY0ECXzMEAmNiCQEBRwIIBQJjQQJfNAUBYgQCY0wJAQFHAggFAmNBAl81BQFiAwkAZwIAAAUCY0kJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNNAwkBASEBBQJjcQAABQJjSQQCY04JAGUCBQJjbAUCY0oEAmNPCQBlAgUCY24FAmNLBAJjUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAVgFAmJPCQECYmIKBQJjSgUCY0sFAmNNBQJjYgUCY2sFAmNMBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTgUCY08FA25pbAkAnwoNBQJjSQUCY00FAmNiBQJiVwUCYlkFAmJWBQJiUgUCYlUFAmNQBQJjTgUCY08FAmNtBQJjbwECY1EBAmNSBAJiRQkBAmFIAAQCY1MJAJEDAgUCYkUFAXIEAmNUCQCRAwIFAmJFBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQFwBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCY2EDCQAAAggFAmNSCW9yZGVyVHlwZQUDQnV5CQECYnYEBQJiRgUCYkcJAGQCBQJjVQgFAmNSBmFtb3VudAUCY1YJAQJidgQFAmJGBQJiRwkAZQIFAmNVCAUCY1IGYW1vdW50BQJjVgQCY2IJAQFHAgUCY2EFAWIDAwMJAQJhRgAGCQAAAgUCYlUFAW0GCQAAAgUCYlUFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkBAJjVwgIBQJjUglhc3NldFBhaXILYW1vdW50QXNzZXQEAmNYAwkAAAIFAmNXBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjVwQCY1kICAUCY1IJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmNaAwkAAAIFAmNZBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjWQMDCQECIT0CBQJjWAUCY1MGCQECIT0CBQJjWgUCY1QJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkYQgFAmNSBXByaWNlBAJkYgkAawMFAWIFAmJHBQJiRgQCZGMJAQFKAwUCZGEFAWIFAmRiBAJkZAMJAAACCAUCY1IJb3JkZXJUeXBlBQNCdXkJAGcCBQJjYgUCZGMJAGcCBQJkYwUCY2IGAQJkZQECZGYDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRnCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwAABAJiUAkBBXZhbHVlAQgFAmRnB2Fzc2V0SWQEAmRoCAUCZGcGYW1vdW50BAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUAUCZGgIBQJkZgZjYWxsZXIEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTADAwkBAmFGAAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUJAJcKBQUCY2cFAmNoBQJkaAUCYlAFAmNpAQJkaQMCZGYCY2sCY3EDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZGoJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAAEAmRrCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwABBAJkbAkBAmNqCQkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAUCY2sIBQJkagZhbW91bnQIBQJkagdhc3NldElkCAUCZGsGYW1vdW50CAUCZGsHYXNzZXRJZAkApQgBCAUCZGYGY2FsbGVyBwUCY3EEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJkbAJfOAMDAwkBAmFGAAYJAAACBQJiVQUBbAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUFAmRsAQJkbQECZG4EAmRvCQD8BwQFAmFEAgRlbWl0CQDMCAIFAmRuBQNuaWwFA25pbAMJAAACBQJkbwUCZG8EAmRwBAJkcQUCZG8DCQABAgUCZHECB0FkZHJlc3MEAmRyBQJkcQkA/AcEBQJkcgIEZW1pdAkAzAgCBQJkbgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHAFAmRwBQJkbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZHMBAmRuBAJkdAkAawMFAmRuBQJhZQUBYgkAlAoCCQBlAgUCZG4FAmR0BQJkdAECZHUEAmR2AmR3AVgBWQQCZHgJAAACBQFZBQR1bml0BAJkeQkBAmFOAQkBAmFIAAQCZHoIBQJkeQJfMQQCYlUIBQJkeQJfMgQCYlIIBQJkeQJfMwQCZEEIBQJkeQJfNAQCY1QIBQJkeQJfNQQCZEIIBQJkeQJfNgQCZEMIBQJkeQJfNwQCZEQJAQJicQEJAQJhTQEFAmRBBAJkRQkBAmJxAQkBAmFNAQUCY1QEAmRGAwkAAAIFAmR3BQJkQQYDCQAAAgUCZHcFAmNUBwkBAmFCAQINaW52YWxpZCBhc3NldAQCZEcDBQJkeAkAlAoCBQJkRAUCZEUDBQJkRgkAlAoCCQBlAgUCZEQFAmR2BQJkRQkAlAoCBQJkRAkAZQIFAmRFBQJkdgQCZEgIBQJkRwJfMQQCZEkIBQJkRwJfMgQCZEoDBQJkRgkAlAoCBQJkdgAACQCUCgIAAAUCZHYEAmRLCAUCZEoCXzEEAmRMCAUCZEoCXzIEAmRNCAkBAmRzAQUCZEsCXzEEAmROCAkBAmRzAQUCZEwCXzEEAmRPCQECZHMBBQJkdgQCZFAIBQJkTwJfMQQCZHQIBQJkTwJfMgQCZFEJAGQCBQJkSAUCZE0EAmRSCQBkAgUCZEkFAmROBAJkUwkBAmJzAgkBAUQCBQJkUgUCZEMJAQFEAgUCZFEFAmRCBAJkVAkBAUcCBQJkUwUBYgQCZFUDBQJkRgUCZEgFAmRJBAJkVgkAtgIBBQJkVQQCZFcJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRYAwkAvwICBQJkVwUBZgYJAQJhQgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZFgFAmRYBAJkWQkAtgIBBQJkUAQCZFoJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZFcJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJkWQUBZAUCZFYAEgASBQRET1dOBQFkBQFkBQNuaWwEAmNQAwUCZHgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkVAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYmIKBQJkSwUCZEwFAmRaBQJkVAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmVhCQECYnMCCQEBRAIFAmRJBQJkQwkBAUQCBQJkSAUCZEIEAmViCQEBRwIFAmVhBQFiBAJlYwkBAU4BCQBpAgkAaAIJAGUCBQJkVAUCZWIFAWIFAmViCQCWCgQFAmRaBQJjUAUCZHQFAmVjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlZAUCZWUCZFACZHcBWAFZBAJkeAkAAAIFAVkFBHVuaXQEAmVmCQECYU4BCQECYUgABAJkeggFAmVmAl8xBAJiVQgFAmVmAl8yBAJiUggFAmVmAl8zBAJkQQgFAmVmAl80BAJjVAgFAmVmAl81BAJlZwgFAmVmAl82BAJlaAgFAmVmAl83BAJlaQkAzAgCAwkAAAIFAmR3BQJiUgYJAQJhQgECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJlaQUCZWkEAmVqAwkAAAIFAmVlBQJkQQYDCQAAAgUCZWUFAmNUBwkBAmFCAQINaW52YWxpZCBhc3NldAQCZWsDBQJlagkAtgIBCQECYnEBCQECYU0BBQJkQQkAtgIBCQECYnEBCQECYU0BBQJjVAQCZWwJAQJicQEJAQJhTQEFAmRBBAJlbQkBAmJxAQkBAmFNAQUCY1QEAmVuAwUCZWoFAmVsBQJlbQQCZW8JALYCAQUCZW4EAmRXCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlcAkAtgIBBQJkUAQCZXEJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZWsJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmVwBQFkBQJkVwASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJlcgkBAmRzAQUCZXEEAmVzCAUCZXICXzEEAmR0CAUCZXICXzIEAmV0AwUCZWoJAJYKBAUCZXMAAAkAZQIFAmVsBQJlcQUCZW0JAJYKBAAABQJlcwUCZWwJAGUCBQJlbQUCZXEEAmV1CAUCZXQCXzEEAmV2CAUCZXQCXzIEAmV3CAUCZXQCXzMEAmV4CAUCZXQCXzQEAmRTCQECYnMCCQEBRAIFAmV4BQJlaAkBAUQCBQJldwUCZWcEAmRUCQEBRwIFAmRTBQFiBAJjUAMFAmR4BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEJAQV2YWx1ZQEFAVgJANgEAQkBBXZhbHVlAQUBWQkBAmJtBgUCZXUFAmV2BQJkUAUCZFQFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZFQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZFQFA25pbAQCZWEJAQJicwIJAQFEAgUCZW0FAmVoCQEBRAIFAmVsBQJlZwQCZWIJAQFHAgUCZWEFAWIEAmVjCQEBTgEJAGkCCQBoAgkAZQIFAmRUBQJlYgUBYgUCZWIJAJYKBAUCZXMFAmNQBQJkdAUCZWMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmV5AAQCZHEJAKIIAQkBAVEAAwkAAQIFAmRxAgZTdHJpbmcEAmV6BQJkcQkA2QQBBQJlegMJAAECBQJkcQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlQQAEAmRxCQCiCAEJAQFSAAMJAAECBQJkcQIGU3RyaW5nBAJlegUCZHEJANkEAQUCZXoDCQABAgUCZHECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZUIBAmRmBAJlQwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJkcQkBAmV5AAMJAAECBQJkcQIKQnl0ZVZlY3RvcgQCZUQFAmRxAwkAAAIIBQJkZg9jYWxsZXJQdWJsaWNLZXkFAmVEBgUCZUMDCQABAgUCZHECBFVuaXQDCQAAAggFAmRmBmNhbGxlcgUEdGhpcwYFAmVDCQACAQILTWF0Y2ggZXJyb3IZAmRmAQpzZXRNYW5hZ2VyAQJlRQQCZUYJAQJlQgEFAmRmAwkAAAIFAmVGBQJlRgQCZUcJANkEAQUCZUUDCQAAAgUCZUcFAmVHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAAUCZUUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEOY29uZmlybU1hbmFnZXIABAJlSAkBAmVBAAQCZUkDCQEJaXNEZWZpbmVkAQUCZUgGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVJBQJlSQQCZUoDCQAAAggFAmRmD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZUgGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVKBQJlSgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQAJANgEAQkBBXZhbHVlAQUCZUgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVIABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBA3B1dAICY2sCZUsDCQBmAgAABQJjawkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJkbAkBAmRpAwUCZGYFAmNrBgQCY00IBQJkbAJfMgQCYlIIBQJkbAJfNwQCY2kIBQJkbAJfOQQCY04IBQJkbANfMTAEAmNPCAUCZGwDXzExBAJlTAgFAmRsA18xMgQCZU0IBQJkbANfMTMEAmRvCQD8BwQFAmFEAgRlbWl0CQDMCAIFAmNNBQNuaWwFA25pbAMJAAACBQJkbwUCZG8EAmRwBAJkcQUCZG8DCQABAgUCZHECB0FkZHJlc3MEAmRyBQJkcQkA/AcEBQJkcgIEZW1pdAkAzAgCBQJjTQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHAFAmRwBAJlTgMJAGYCBQJjTgAACQD8BwQFAmJhAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZUwFAmNOBQNuaWwFA25pbAMJAAACBQJlTgUCZU4EAmVPAwkAZgIFAmNPAAAJAPwHBAUCYmECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlTQUCY08FA25pbAUDbmlsAwkAAAIFAmVPBQJlTwQCZVADBQJlSwQCZVEJAPwHBAUCYVoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjTQUDbmlsAwkAAAIFAmVRBQJlUQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkZgZjYWxsZXIFAmNNBQJiUgUDbmlsCQDOCAIFAmNpBQJlUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEKcHV0Rm9yRnJlZQECZVIDCQBmAgAABQJlUgkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkbAkBAmRpAwUCZGYFAmVSBwgFAmRsAl85AmRmAQlwdXRPbmVUa24CAmVTAmVUBAJlVQMDCQECYUYABgkAAAIFAmFTBQFsBgkAAAIFAmFTBQFuBAJlaQkAzAgCAwkBASEBBQJlVQYJAQJhQgECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAEGCQECYUIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlaQUCZWkEAmVWCQCRAwIIBQJkZghwYXltZW50cwAABAJkdwgFAmVWB2Fzc2V0SWQEAmR2CAUCZVYGYW1vdW50BAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZVcJAQJkdQQFAmR2BQJkdwUBWAUBWQQCZVgIBQJlVwJfMQQCY1AIBQJlVwJfMgQCZHQIBQJlVwJfMwQCZVkIBQJlVwJfNAQCZVoDAwkAZgIFAmVTAAAJAGYCBQJlUwUCZVgHCQECYUIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVTBQNuaWwCAAUCZVgEAmRvCQECZG0BBQJlWgMJAAACBQJkbwUCZG8EAmVQAwUCZVQEAmZhCQD8BwQFAmFaAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhVAUCZVoFA25pbAMJAAACBQJmYQUCZmEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGYGY2FsbGVyBQJlWgUCYVQFA25pbAQCZmIDCQBmAgUCZHQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCZHQFAmR3BQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmVQBQJmYgUCZVoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBEXB1dE9uZVRrblJFQURPTkxZAgJkdwJkdgQCZmMJAQJkdQQFAmR2CQECYUsBBQJkdwUEdW5pdAUEdW5pdAQCZVgIBQJmYwJfMQQCY1AIBQJmYwJfMgQCZHQIBQJmYwJfMwQCZVkIBQJmYwJfNAkAlAoCBQNuaWwJAJUKAwUCZVgFAmR0BQJlWQJkZgEJZ2V0T25lVGtuAgJmZAJlUwQCZmUDCQECYUYABgkAAAIFAmFTBQFuBAJlaQkAzAgCAwkBASEBBQJmZQYJAQJhQgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAEGCQECYUIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlaQUCZWkEAmVlCQECYUsBBQJmZAQCZVYJAJEDAggFAmRmCHBheW1lbnRzAAAEAmR3CAUCZVYHYXNzZXRJZAQCZFAIBQJlVgZhbW91bnQEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJmZgkBAmVkBQUCZWUFAmRQBQJkdwUBWAUBWQQCZmcIBQJmZgJfMQQCY1AIBQJmZgJfMgQCZHQIBQJmZgJfMwQCZVkIBQJmZgJfNAQCZG4DAwkAZgIFAmVTAAAJAGYCBQJlUwUCZmcHCQECYUIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVTBQNuaWwCAAUCZmcEAmZoCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRQBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR3BQJkUAUDbmlsAwkAAAIFAmZoBQJmaAQCZmkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCZG4FAmVlBQNuaWwEAmZiAwkAZgIFAmR0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmR0BQJlZQUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmaQUCZmIFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmARFnZXRPbmVUa25SRUFET05MWQICZWUCZFAEAmZqCQECZWQFCQECYUsBBQJlZQUCZFAFAmFUBQR1bml0BQR1bml0BAJmZwgFAmZqAl8xBAJjUAgFAmZqAl8yBAJkdAgFAmZqAl8zBAJlWQgFAmZqAl80CQCUCgIFA25pbAkAlQoDBQJmZwUCZHQFAmVZAmRmARN1bnN0YWtlQW5kR2V0T25lVGtuAwJmawJmZAJlUwQCZmUDCQECYUYABgkAAAIFAmFTBQFuBAJlaQkAzAgCAwkBASEBBQJmZQYJAQJhQgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAAGCQECYUIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlaQUCZWkEAmVlCQECYUsBBQJmZAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmZsCQD8BwQFAmFaAgd1bnN0YWtlCQDMCAIJANgEAQUCYVQJAMwIAgUCZmsFA25pbAUDbmlsAwkAAAIFAmZsBQJmbAQCZm0JAQJlZAUFAmVlBQJmawUCYVQFAVgFAVkEAmZnCAUCZm0CXzEEAmNQCAUCZm0CXzIEAmR0CAUCZm0CXzMEAmVZCAUCZm0CXzQEAmRuAwMJAGYCBQJlUwAACQBmAgUCZVMFAmZnBwkBAmFCAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlUwUDbmlsAgAFAmZnBAJmaAkA/AcEBQJhRAIEYnVybgkAzAgCBQJmawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhVAUCZmsFA25pbAMJAAACBQJmaAUCZmgEAmZpCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkZgZjYWxsZXIFAmRuBQJlZQUDbmlsBAJmYgMJAGYCBQJkdAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFFBQJkdAUCZWUFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjUAUCZmkFAmZiBQJkbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEDZ2V0AAQCY0EJAQJkZQEFAmRmBAJmbggFAmNBAl8xBAJjaAgFAmNBAl8yBAJkaAgFAmNBAl8zBAJiUAgFAmNBAl80BAJjaQgFAmNBAl81BAJmbwkA/AcEBQJhRAIEYnVybgkAzAgCBQJkaAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUAUCZGgFA25pbAMJAAACBQJmbwUCZm8FAmNpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQlnZXROb0xlc3MCAmZwAmZxBAJjQQkBAmRlAQUCZGYEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmRoCAUCY0ECXzMEAmJQCAUCY0ECXzQEAmNpCAUCY0ECXzUDCQBmAgUCZnAFAmNnCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjZwIDIDwgCQCkAwEFAmZwAwkAZgIFAmZxBQJjaAkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmNoAgMgPCAJAKQDAQUCZnEEAmZvCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJkaAUDbmlsAwkAAAIFAmZvBQJmbwUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBDXVuc3Rha2VBbmRHZXQBAmRuBAJmcgMJAQIhPQIJAJADAQgFAmRmCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmZyBQJmcgQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmZsCQD8BwQFAmFaAgd1bnN0YWtlCQDMCAIJANgEAQUCYlIJAMwIAgUCZG4FA25pbAUDbmlsAwkAAAIFAmZsBQJmbAQCY0EJAQJiTgQJANgEAQgFAmRmDXRyYW5zYWN0aW9uSWQJANgEAQUCYlIFAmRuCAUCZGYGY2FsbGVyBAJiVQkBDXBhcnNlSW50VmFsdWUBCAUCY0ECXzkEAmNpCAUCY0EDXzEwBAJmcwMDCQECYUYABgkAAAIFAmJVBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVQYDCQAAAgUCZnMFAmZzBAJmbwkA/AcEBQJhRAIEYnVybgkAzAgCBQJkbgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUgUCZG4FA25pbAMJAAACBQJmbwUCZm8FAmNpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQhhY3RpdmF0ZQICZnQCZnUDCQECIT0CCQClCAEIBQJkZgZjYWxsZXIJAKUIAQUCYUQJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJmdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJmdQUDbmlsAgdzdWNjZXNzAmRmARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhSAACZGYBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJyCQCUCgIFA25pbAkBAmJxAQUCYnICZGYBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJ5AmJ6AmJEBAJiTQkBAmJDAwUCYnkFAmJ6BQJiRAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJNAAAJAMwIAgkApgMBCQCRAwIFAmJNAAEJAMwIAgkApgMBCQCRAwIFAmJNAAIFA25pbAJkZgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRmARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFIAUkJAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUBSQJkZgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJidAJidQkAlAoCBQNuaWwJAKYDAQkBAmJzAgkApwMBBQJidAkApwMBBQJidQJkZgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJPAmNrAmNsAmNtAmNuAmNvAVgCY3ACY3EJAJQKAgUDbmlsCQECY2oJBQJiTwUCY2sFAmNsBQJjbQUCY24FAmNvBQFYBQJjcAUCY3ECZGYBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiTwJiUAJiUQFYBAJjQQkBAmJOBAUCYk8FAmJQBQJiUQkBEUBleHRyTmF0aXZlKDEwNjIpAQUBWAkAlAoCBQNuaWwJAJwKCggFAmNBAl8xCAUCY0ECXzIIBQJjQQJfMwgFAmNBAl80CAUCY0ECXzUIBQJjQQJfNggFAmNBAl83CQCmAwEIBQJjQQJfOAgFAmNBAl85CAUCY0EDXzEwAmRmAQ1zdGF0c1JFQURPTkxZAAQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNTCQCRAwIFAmJFBQFyBAJjVAkAkQMCBQJiRQUBcwQCY3QJAJEDAgUCYkUFAXYEAmN1CQCRAwIFAmJFBQF3BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJmdggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNVCQECYnEBBQJjUwQCY1YJAQJicQEFAmNUBAJmdwMJAAACBQJmdgAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiQwMFAmNVBQJjVgUCZnYEAmNiAAAEAmZ4CQEBRwIJAJEDAgUCZncAAQUBYgQCZnkJAQFHAgkAkQMCBQJmdwACBQFiBAJmegkBBXZhbHVlAQkAmggCBQJhRAkBAmFwAQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1UJAMwIAgkApAMBBQJjVgkAzAgCCQCkAwEFAmZ2CQDMCAIJAKQDAQUCY2IJAMwIAgkApAMBBQJmeAkAzAgCCQCkAwEFAmZ5CQDMCAIJAKQDAQUCZnoFA25pbAUBagJkZgEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmNsBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCY3IJAJEDAgUCYkUFAXIEAmJTCQDZBAEFAmNyBAJjcwkAkQMCBQJiRQUBcwQCYlQJANkEAQUCY3MEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJmdggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNVCQECYnEBBQJjcgQCY1YJAQJicQEFAmNzBAJiQQkBAUQCBQJjVQUCYkYEAmJCCQEBRAIFAmNWBQJiRwQCY2EDCQAAAgUCZnYAAAUBZQkBAmJzAgUCYkIFAmJBBAJjeAkBAUQCBQJjbAUCYkYEAmN5CQC8AgMFAmN4BQJjYQUBZAQCY24JAQFHAgUCY3kFAmJHBAJkbAkBAmNqCQIAAKDCHgUCY2wFAmJTBQJjbgUCYlQCAAYHBAJjSQgFAmRsAl8xBAJmQQgFAmRsAl8zBAJiVwgFAmRsAl80BAJiWQgFAmRsAl81BAJiVggFAmRsAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjSQkAzAgCCQCkAwEJAQFHAgUCY2EFAWIJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgUCYlUJAMwIAgkApAMBBQJjbAkAzAgCCQCkAwEFAmNuBQNuaWwFAWoCZGYBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmNuBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCY3IJAJEDAgUCYkUFAXIEAmJTCQDZBAEFAmNyBAJjcwkAkQMCBQJiRQUBcwQCYlQJANkEAQUCY3MEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJmdggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZCCQECYnEBBQJjcgQCZkMJAQJicQEFAmNzBAJmRAkBAUQCBQJmQgUCYkYEAmZFCQEBRAIFAmZDBQJiRwQCY2EDCQAAAgUCZnYAAAUBZQkBAmJzAgUCZkUFAmZEBAJjeQkBAUQCBQJjbgUCYkcEAmN4CQC8AgMFAmN5BQFkBQJjYQQCY2wJAQFHAgUCY3gFAmJGBAJkbAkBAmNqCQIAAKDCHgUCY2wFAmJTBQJjbgUCYlQCAAYHBAJjSQgFAmRsAl8xBAJmQQgFAmRsAl8zBAJiVwgFAmRsAl80BAJiWQgFAmRsAl81BAJiVggFAmRsAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjSQkAzAgCCQCkAwEJAQFHAgUCY2EFAWIJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgUCYlUJAMwIAgkApAMBBQJjbAkAzAgCCQCkAwEFAmNuBQNuaWwFAWoCZGYBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmZGAmZHBAJjQQkBAmJOBAIABQJmRgUCZkcFBHRoaXMEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmJXCAUCY0ECXzUEAmJZCAUCY0ECXzYEAmJWCAUCY0ECXzcEAmNiCAUCY0ECXzgEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNnCQDMCAIJAKQDAQUCY2gJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgkApgMBBQJjYgkAzAgCCQCkAwEFAmJVBQNuaWwFAWoBAmZIAQJmSQAEAmZKBAJkcQkBAmV5AAMJAAECBQJkcQIKQnl0ZVZlY3RvcgQCZUQFAmRxBQJlRAMJAAECBQJkcQIEVW5pdAgFAmZID3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkcQUCZkgDCQABAgUCZHECBU9yZGVyBAJjUgUCZHEEAmZLCQECYUcABAJhdQkBAmNRAQUCY1IEAmF2CQD0AwMIBQJjUglib2R5Qnl0ZXMJAJEDAggFAmNSBnByb29mcwAACAUCY1IPc2VuZGVyUHVibGljS2V5BAJhdwkA9AMDCAUCY1IJYm9keUJ5dGVzCQCRAwIIBQJjUgZwcm9vZnMAAQUCZksDAwMFAmF1BQJhdgcFAmF3BwYJAQJhdAMFAmF1BQJhdgUCYXcDCQABAgUCZHECFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlegUCZHEEAmZMCQD2AwEJAQV2YWx1ZQEIBQJlegZzY3JpcHQEAmZNCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUQJAQJhcgAEAmZOCQDxBwEFBHRoaXMDAwkAAAIFAmZNBQJmTAkBAiE9AgUCZk4FAmZMBwYJAPQDAwgFAmZICWJvZHlCeXRlcwkAkQMCCAUCZkgGcHJvb2ZzAAAFAmZKCQD0AwMIBQJmSAlib2R5Qnl0ZXMJAJEDAggFAmZIBnByb29mcwAABQJmSnyyoeo=", "chainId": 84, "height": 2289132, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4VznJpTZQsF5GkguqRPq8HasZvx8Z2PbMXynauasnUGG Next: 8n8jddJVHRNPknR29pKGsNRQJQrdhzghcos9HCwZtDSQ Diff:
OldNewDifferences
865865 if ((ei == ei))
866866 then {
867867 let ee = aK(fd)
868+ let X = df.caller
869+ let Y = df.transactionId
868870 let fl = invoke(aZ, "unstake", [toBase58String(aT), fk], nil)
869871 if ((fl == fl))
870872 then {
871- let fm = ed(ee, fk, aT, unit, unit)
873+ let fm = ed(ee, fk, aT, X, Y)
872874 let fg = fm._1
873875 let cP = fm._2
874876 let dt = fm._3
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(5, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 func af () = "%s__factoryConfig"
115115
116116
117117 func ag () = "%s%s__matcher__publicKey"
118118
119119
120120 func ah (ai) = (("%s%s%s__" + ai) + "__mappings__poolContract2LpAsset")
121121
122122
123123 func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
124124
125125
126126 func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
127127
128128
129129 func ao () = "%s__shutdown"
130130
131131
132132 func ap (aq) = ("%s%s__poolWeight__" + aq)
133133
134134
135135 func ar () = "%s__allowedLpScriptHash"
136136
137137
138138 let as = "%s__feeCollectorAddress"
139139
140140 func at (au,av,aw) = throw(((((("order validation failed: orderValid=" + toString(au)) + " senderValid=") + toString(av)) + " matcherValid=") + toString(aw)))
141141
142142
143143 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
144144
145145
146146 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
147147
148148
149149 func aB (aC) = throw(makeString(["lp.ride:", aC], " "))
150150
151151
152152 let aD = addressFromStringValue(ax(this, P()))
153153
154154 let aE = addressFromStringValue(ax(aD, as))
155155
156156 func aF () = valueOrElse(getBoolean(aD, ao()), false)
157157
158158
159159 func aG () = fromBase58String(ax(aD, ag()))
160160
161161
162162 func aH () = {
163163 let aI = ax(this, aa())
164164 let aJ = ax(this, ab())
165165 let al = aA(aD, am(aJ))
166166 let ak = aA(aD, am(aI))
167167 split(ax(aD, aj(toString(ak), toString(al))), j)
168168 }
169169
170170
171171 func aK (aL) = if ((aL == i))
172172 then unit
173173 else fromBase58String(aL)
174174
175175
176176 func aM (aL) = if ((aL == unit))
177177 then i
178178 else toBase58String(value(aL))
179179
180180
181181 func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
182182
183183
184184 let aP = aN(aH())
185185
186186 let aQ = aP
187187
188188 let aR = aQ._1
189189
190190 let aS = aQ._2
191191
192192 let aT = aQ._3
193193
194194 let aU = aQ._4
195195
196196 let aV = aQ._5
197197
198198 let aW = aQ._6
199199
200200 let aX = aQ._7
201201
202202 func aY () = split(ax(aD, af()), j)
203203
204204
205205 let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
206206
207207 let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
208208
209209 func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
210210
211211
212212 func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
213213
214214
215215 func bq (br) = if ((br == "WAVES"))
216216 then wavesBalance(this).available
217217 else assetBalance(this, fromBase58String(br))
218218
219219
220220 func bs (bt,bu) = fraction(bt, d, bu)
221221
222222
223223 func bv (bw,bx,by,bz) = {
224224 let bA = D(by, bw)
225225 let bB = D(bz, bx)
226226 bs(bB, bA)
227227 }
228228
229229
230230 func bC (by,bz,bD) = {
231231 let bE = aH()
232232 let bF = parseIntValue(bE[t])
233233 let bG = parseIntValue(bE[u])
234234 let bH = bv(bF, bG, by, bz)
235235 let bu = D(by, bF)
236236 let bt = D(bz, bG)
237237 let bI = D(bD, b)
238238 let bJ = bs(bu, bI)
239239 let bK = bs(bt, bI)
240240 [bH, bJ, bK]
241241 }
242242
243243
244244 func bL (by,bz,bD) = {
245245 let bM = bC(by, bz, bD)
246246 [G(bM[0], b), G(bM[1], b), G(bM[2], b)]
247247 }
248248
249249
250250 func bN (bO,bP,bQ,X) = {
251251 let bE = aH()
252252 let bR = bE[q]
253253 let bS = bE[r]
254254 let bT = bE[s]
255255 let bw = parseIntValue(bE[t])
256256 let bx = parseIntValue(bE[u])
257257 let bU = bE[p]
258258 let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
259259 if ((bR != bP))
260260 then throw("Invalid asset passed.")
261261 else {
262262 let bW = bq(bS)
263263 let bX = D(bW, bw)
264264 let bY = bq(bT)
265265 let bZ = D(bY, bx)
266266 let ca = bs(bZ, bX)
267267 let cb = G(ca, b)
268268 let cc = D(bQ, b)
269269 let cd = D(bV, b)
270270 let ce = fraction(bX, cc, cd)
271271 let cf = fraction(bZ, cc, cd)
272272 let cg = G(ce, bw)
273273 let ch = G(cf, bx)
274274 let ci = if ((bO == ""))
275275 then nil
276276 else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
277277 then unit
278278 else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
279279 then unit
280280 else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
281281 $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
282282 }
283283 }
284284
285285
286286 func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
287287 let bE = aH()
288288 let bR = fromBase58String(bE[q])
289289 let cr = bE[r]
290290 let cs = bE[s]
291291 let ct = bE[v]
292292 let cu = bE[w]
293293 let bF = parseIntValue(bE[t])
294294 let bG = parseIntValue(bE[u])
295295 let bU = bE[p]
296296 let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
297297 let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
298298 let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
299299 if (if ((cr != cv))
300300 then true
301301 else (cs != cw))
302302 then throw("Invalid amt or price asset passed.")
303303 else {
304304 let bW = if (cp)
305305 then bq(cr)
306306 else (bq(cr) - cl)
307307 let bY = if (cp)
308308 then bq(cs)
309309 else (bq(cs) - cn)
310310 let cx = D(cl, bF)
311311 let cy = D(cn, bG)
312312 let cz = bs(cy, cx)
313313 let bX = D(bW, bF)
314314 let bZ = D(bY, bG)
315315 let cA = if ((bV == 0))
316316 then {
317317 let ca = e
318318 let cB = e
319319 let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
320320 $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
321321 }
322322 else {
323323 let ca = bs(bZ, bX)
324324 let cB = fraction(O((ca - cz)), d, ca)
325325 let cC = D(ck, b)
326326 if (if ((ca != e))
327327 then (cB > cC)
328328 else false)
329329 then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
330330 else {
331331 let cd = D(bV, b)
332332 let cD = fraction(cx, ca, d)
333333 let cE = fraction(cy, d, ca)
334334 let cF = if ((cD > cy))
335335 then $Tuple2(cE, cy)
336336 else $Tuple2(cx, cD)
337337 let cG = cF._1
338338 let cH = cF._2
339339 let bI = fraction(cd, cH, bZ)
340340 $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
341341 }
342342 }
343343 let cI = cA._1
344344 let cJ = cA._2
345345 let cK = cA._3
346346 let cb = G(cA._4, b)
347347 let cL = G(cA._5, b)
348348 if ((0 >= cI))
349349 then throw("Invalid calculations. LP calculated is less than zero.")
350350 else {
351351 let cM = if (!(cq))
352352 then 0
353353 else cI
354354 let cN = (cl - cJ)
355355 let cO = (cn - cK)
356356 let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
357357 $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
358358 }
359359 }
360360 }
361361
362362
363363 func cQ (cR) = {
364364 let bE = aH()
365365 let cS = bE[r]
366366 let cT = bE[s]
367367 let bU = parseIntValue(bE[p])
368368 let bF = parseIntValue(bE[t])
369369 let bG = parseIntValue(bE[u])
370370 let cU = bq(cS)
371371 let cV = bq(cT)
372372 let ca = if ((cR.orderType == Buy))
373373 then bv(bF, bG, (cU + cR.amount), cV)
374374 else bv(bF, bG, (cU - cR.amount), cV)
375375 let cb = G(ca, b)
376376 if (if (if (aF())
377377 then true
378378 else (bU == m))
379379 then true
380380 else (bU == n))
381381 then throw("Exchange operations disabled")
382382 else {
383383 let cW = cR.assetPair.amountAsset
384384 let cX = if ((cW == unit))
385385 then "WAVES"
386386 else toBase58String(value(cW))
387387 let cY = cR.assetPair.priceAsset
388388 let cZ = if ((cY == unit))
389389 then "WAVES"
390390 else toBase58String(value(cY))
391391 if (if ((cX != cS))
392392 then true
393393 else (cZ != cT))
394394 then throw("Wrong order assets.")
395395 else {
396396 let da = cR.price
397397 let db = fraction(b, bG, bF)
398398 let dc = J(da, b, db)
399399 let dd = if ((cR.orderType == Buy))
400400 then (cb >= dc)
401401 else (dc >= cb)
402402 true
403403 }
404404 }
405405 }
406406
407407
408408 func de (df) = if ((size(df.payments) != 1))
409409 then throw("exactly 1 payment is expected")
410410 else {
411411 let dg = value(df.payments[0])
412412 let bP = value(dg.assetId)
413413 let dh = dg.amount
414414 let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
415415 let cg = cA._1
416416 let ch = cA._2
417417 let bU = parseIntValue(cA._9)
418418 let ci = cA._10
419419 if (if (aF())
420420 then true
421421 else (bU == n))
422422 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
423423 else $Tuple5(cg, ch, dh, bP, ci)
424424 }
425425
426426
427427 func di (df,ck,cq) = if ((size(df.payments) != 2))
428428 then throw("exactly 2 payments are expected")
429429 else {
430430 let dj = value(df.payments[0])
431431 let dk = value(df.payments[1])
432432 let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
433433 let bU = parseIntValue(dl._8)
434434 if (if (if (aF())
435435 then true
436436 else (bU == l))
437437 then true
438438 else (bU == n))
439439 then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
440440 else dl
441441 }
442442
443443
444444 func dm (dn) = {
445445 let do = invoke(aD, "emit", [dn], nil)
446446 if ((do == do))
447447 then {
448448 let dp = {
449449 let dq = do
450450 if ($isInstanceOf(dq, "Address"))
451451 then {
452452 let dr = dq
453453 invoke(dr, "emit", [dn], nil)
454454 }
455455 else unit
456456 }
457457 if ((dp == dp))
458458 then dn
459459 else throw("Strict value is not equal to itself.")
460460 }
461461 else throw("Strict value is not equal to itself.")
462462 }
463463
464464
465465 func ds (dn) = {
466466 let dt = fraction(dn, ae, b)
467467 $Tuple2((dn - dt), dt)
468468 }
469469
470470
471471 func du (dv,dw,X,Y) = {
472472 let dx = (Y == unit)
473473 let dy = aN(aH())
474474 let dz = dy._1
475475 let bU = dy._2
476476 let bR = dy._3
477477 let dA = dy._4
478478 let cT = dy._5
479479 let dB = dy._6
480480 let dC = dy._7
481481 let dD = bq(aM(dA))
482482 let dE = bq(aM(cT))
483483 let dF = if ((dw == dA))
484484 then true
485485 else if ((dw == cT))
486486 then false
487487 else aB("invalid asset")
488488 let dG = if (dx)
489489 then $Tuple2(dD, dE)
490490 else if (dF)
491491 then $Tuple2((dD - dv), dE)
492492 else $Tuple2(dD, (dE - dv))
493493 let dH = dG._1
494494 let dI = dG._2
495495 let dJ = if (dF)
496496 then $Tuple2(dv, 0)
497497 else $Tuple2(0, dv)
498498 let dK = dJ._1
499499 let dL = dJ._2
500500 let dM = ds(dK)._1
501501 let dN = ds(dL)._1
502502 let dO = ds(dv)
503503 let dP = dO._1
504504 let dt = dO._2
505505 let dQ = (dH + dM)
506506 let dR = (dI + dN)
507507 let dS = bs(D(dR, dC), D(dQ, dB))
508508 let dT = G(dS, b)
509509 let dU = if (dF)
510510 then dH
511511 else dI
512512 let dV = toBigInt(dU)
513513 let dW = toBigInt(valueOrErrorMessage(assetInfo(bR), (("asset " + toBase58String(bR)) + " doesn't exist")).quantity)
514514 let dX = if ((dW > f))
515515 then true
516516 else aB("initial deposit requires all coins")
517517 if ((dX == dX))
518518 then {
519519 let dY = toBigInt(dP)
520520 let dZ = max([0, toInt(((dW * (sqrtBigInt((d + ((dY * d) / dV)), 18, 18, DOWN) - d)) / d))])
521521 let cP = if (dx)
522522 then nil
523523 else [IntegerEntry(S(), dT), IntegerEntry(T(height, lastBlock.timestamp), dT), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dK, dL, dZ, dT, 0, 0, height, lastBlock.timestamp, 0, 0))]
524524 let ea = bs(D(dI, dC), D(dH, dB))
525525 let eb = G(ea, b)
526526 let ec = N((((dT - eb) * b) / eb))
527527 $Tuple4(dZ, cP, dt, ec)
528528 }
529529 else throw("Strict value is not equal to itself.")
530530 }
531531
532532
533533 func ed (ee,dP,dw,X,Y) = {
534534 let dx = (Y == unit)
535535 let ef = aN(aH())
536536 let dz = ef._1
537537 let bU = ef._2
538538 let bR = ef._3
539539 let dA = ef._4
540540 let cT = ef._5
541541 let eg = ef._6
542542 let eh = ef._7
543543 let ei = [if ((dw == bR))
544544 then true
545545 else aB("invalid lp asset")]
546546 if ((ei == ei))
547547 then {
548548 let ej = if ((ee == dA))
549549 then true
550550 else if ((ee == cT))
551551 then false
552552 else aB("invalid asset")
553553 let ek = if (ej)
554554 then toBigInt(bq(aM(dA)))
555555 else toBigInt(bq(aM(cT)))
556556 let el = bq(aM(dA))
557557 let em = bq(aM(cT))
558558 let en = if (ej)
559559 then el
560560 else em
561561 let eo = toBigInt(en)
562562 let dW = toBigInt(valueOrErrorMessage(assetInfo(bR), (("asset " + toBase58String(bR)) + " doesn't exist")).quantity)
563563 let ep = toBigInt(dP)
564564 let eq = max([0, toInt(((ek * (d - pow((d - ((ep * d) / dW)), 18, h, 0, 18, DOWN))) / d))])
565565 let er = ds(eq)
566566 let es = er._1
567567 let dt = er._2
568568 let et = if (ej)
569569 then $Tuple4(es, 0, (el - eq), em)
570570 else $Tuple4(0, es, el, (em - eq))
571571 let eu = et._1
572572 let ev = et._2
573573 let ew = et._3
574574 let ex = et._4
575575 let dS = bs(D(ex, eh), D(ew, eg))
576576 let dT = G(dS, b)
577577 let cP = if (dx)
578578 then nil
579579 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eu, ev, dP, dT, height, lastBlock.timestamp)), IntegerEntry(S(), dT), IntegerEntry(T(height, lastBlock.timestamp), dT)]
580580 let ea = bs(D(em, eh), D(el, eg))
581581 let eb = G(ea, b)
582582 let ec = N((((dT - eb) * b) / eb))
583583 $Tuple4(es, cP, dt, ec)
584584 }
585585 else throw("Strict value is not equal to itself.")
586586 }
587587
588588
589589 func ey () = {
590590 let dq = getString(Q())
591591 if ($isInstanceOf(dq, "String"))
592592 then {
593593 let ez = dq
594594 fromBase58String(ez)
595595 }
596596 else if ($isInstanceOf(dq, "Unit"))
597597 then unit
598598 else throw("Match error")
599599 }
600600
601601
602602 func eA () = {
603603 let dq = getString(R())
604604 if ($isInstanceOf(dq, "String"))
605605 then {
606606 let ez = dq
607607 fromBase58String(ez)
608608 }
609609 else if ($isInstanceOf(dq, "Unit"))
610610 then unit
611611 else throw("Match error")
612612 }
613613
614614
615615 func eB (df) = {
616616 let eC = throw("Permission denied")
617617 let dq = ey()
618618 if ($isInstanceOf(dq, "ByteVector"))
619619 then {
620620 let eD = dq
621621 if ((df.callerPublicKey == eD))
622622 then true
623623 else eC
624624 }
625625 else if ($isInstanceOf(dq, "Unit"))
626626 then if ((df.caller == this))
627627 then true
628628 else eC
629629 else throw("Match error")
630630 }
631631
632632
633633 @Callable(df)
634634 func setManager (eE) = {
635635 let eF = eB(df)
636636 if ((eF == eF))
637637 then {
638638 let eG = fromBase58String(eE)
639639 if ((eG == eG))
640640 then [StringEntry(R(), eE)]
641641 else throw("Strict value is not equal to itself.")
642642 }
643643 else throw("Strict value is not equal to itself.")
644644 }
645645
646646
647647
648648 @Callable(df)
649649 func confirmManager () = {
650650 let eH = eA()
651651 let eI = if (isDefined(eH))
652652 then true
653653 else throw("No pending manager")
654654 if ((eI == eI))
655655 then {
656656 let eJ = if ((df.callerPublicKey == value(eH)))
657657 then true
658658 else throw("You are not pending manager")
659659 if ((eJ == eJ))
660660 then [StringEntry(Q(), toBase58String(value(eH))), DeleteEntry(R())]
661661 else throw("Strict value is not equal to itself.")
662662 }
663663 else throw("Strict value is not equal to itself.")
664664 }
665665
666666
667667
668668 @Callable(df)
669669 func put (ck,eK) = if ((0 > ck))
670670 then throw("Invalid slippageTolerance passed")
671671 else {
672672 let dl = di(df, ck, true)
673673 let cM = dl._2
674674 let bR = dl._7
675675 let ci = dl._9
676676 let cN = dl._10
677677 let cO = dl._11
678678 let eL = dl._12
679679 let eM = dl._13
680680 let do = invoke(aD, "emit", [cM], nil)
681681 if ((do == do))
682682 then {
683683 let dp = {
684684 let dq = do
685685 if ($isInstanceOf(dq, "Address"))
686686 then {
687687 let dr = dq
688688 invoke(dr, "emit", [cM], nil)
689689 }
690690 else unit
691691 }
692692 if ((dp == dp))
693693 then {
694694 let eN = if ((cN > 0))
695695 then invoke(ba, "put", nil, [AttachedPayment(eL, cN)])
696696 else nil
697697 if ((eN == eN))
698698 then {
699699 let eO = if ((cO > 0))
700700 then invoke(ba, "put", nil, [AttachedPayment(eM, cO)])
701701 else nil
702702 if ((eO == eO))
703703 then {
704704 let eP = if (eK)
705705 then {
706706 let eQ = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
707707 if ((eQ == eQ))
708708 then nil
709709 else throw("Strict value is not equal to itself.")
710710 }
711711 else [ScriptTransfer(df.caller, cM, bR)]
712712 (ci ++ eP)
713713 }
714714 else throw("Strict value is not equal to itself.")
715715 }
716716 else throw("Strict value is not equal to itself.")
717717 }
718718 else throw("Strict value is not equal to itself.")
719719 }
720720 else throw("Strict value is not equal to itself.")
721721 }
722722
723723
724724
725725 @Callable(df)
726726 func putForFree (eR) = if ((0 > eR))
727727 then throw("Invalid value passed")
728728 else {
729729 let dl = di(df, eR, false)
730730 dl._9
731731 }
732732
733733
734734
735735 @Callable(df)
736736 func putOneTkn (eS,eT) = {
737737 let eU = if (if (aF())
738738 then true
739739 else (aS == l))
740740 then true
741741 else (aS == n)
742742 let ei = [if (!(eU))
743743 then true
744744 else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
745745 then true
746746 else aB("exactly 1 payment are expected")]
747747 if ((ei == ei))
748748 then {
749749 let eV = df.payments[0]
750750 let dw = eV.assetId
751751 let dv = eV.amount
752752 let X = df.caller
753753 let Y = df.transactionId
754754 let eW = du(dv, dw, X, Y)
755755 let eX = eW._1
756756 let cP = eW._2
757757 let dt = eW._3
758758 let eY = eW._4
759759 let eZ = if (if ((eS > 0))
760760 then (eS > eX)
761761 else false)
762762 then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
763763 else eX
764764 let do = dm(eZ)
765765 if ((do == do))
766766 then {
767767 let eP = if (eT)
768768 then {
769769 let fa = invoke(aZ, "stake", nil, [AttachedPayment(aT, eZ)])
770770 if ((fa == fa))
771771 then nil
772772 else throw("Strict value is not equal to itself.")
773773 }
774774 else [ScriptTransfer(df.caller, eZ, aT)]
775775 let fb = if ((dt > 0))
776776 then [ScriptTransfer(aE, dt, dw)]
777777 else nil
778778 $Tuple2(((cP ++ eP) ++ fb), eZ)
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784
785785
786786
787787 @Callable(df)
788788 func putOneTknREADONLY (dw,dv) = {
789789 let fc = du(dv, aK(dw), unit, unit)
790790 let eX = fc._1
791791 let cP = fc._2
792792 let dt = fc._3
793793 let eY = fc._4
794794 $Tuple2(nil, $Tuple3(eX, dt, eY))
795795 }
796796
797797
798798
799799 @Callable(df)
800800 func getOneTkn (fd,eS) = {
801801 let fe = if (aF())
802802 then true
803803 else (aS == n)
804804 let ei = [if (!(fe))
805805 then true
806806 else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
807807 then true
808808 else aB("exactly 1 payment are expected")]
809809 if ((ei == ei))
810810 then {
811811 let ee = aK(fd)
812812 let eV = df.payments[0]
813813 let dw = eV.assetId
814814 let dP = eV.amount
815815 let X = df.caller
816816 let Y = df.transactionId
817817 let ff = ed(ee, dP, dw, X, Y)
818818 let fg = ff._1
819819 let cP = ff._2
820820 let dt = ff._3
821821 let eY = ff._4
822822 let dn = if (if ((eS > 0))
823823 then (eS > fg)
824824 else false)
825825 then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
826826 else fg
827827 let fh = invoke(aD, "burn", [dP], [AttachedPayment(dw, dP)])
828828 if ((fh == fh))
829829 then {
830830 let fi = [ScriptTransfer(X, dn, ee)]
831831 let fb = if ((dt > 0))
832832 then [ScriptTransfer(aE, dt, ee)]
833833 else nil
834834 $Tuple2(((cP ++ fi) ++ fb), dn)
835835 }
836836 else throw("Strict value is not equal to itself.")
837837 }
838838 else throw("Strict value is not equal to itself.")
839839 }
840840
841841
842842
843843 @Callable(df)
844844 func getOneTknREADONLY (ee,dP) = {
845845 let fj = ed(aK(ee), dP, aT, unit, unit)
846846 let fg = fj._1
847847 let cP = fj._2
848848 let dt = fj._3
849849 let eY = fj._4
850850 $Tuple2(nil, $Tuple3(fg, dt, eY))
851851 }
852852
853853
854854
855855 @Callable(df)
856856 func unstakeAndGetOneTkn (fk,fd,eS) = {
857857 let fe = if (aF())
858858 then true
859859 else (aS == n)
860860 let ei = [if (!(fe))
861861 then true
862862 else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
863863 then true
864864 else aB("no payments are expected")]
865865 if ((ei == ei))
866866 then {
867867 let ee = aK(fd)
868+ let X = df.caller
869+ let Y = df.transactionId
868870 let fl = invoke(aZ, "unstake", [toBase58String(aT), fk], nil)
869871 if ((fl == fl))
870872 then {
871- let fm = ed(ee, fk, aT, unit, unit)
873+ let fm = ed(ee, fk, aT, X, Y)
872874 let fg = fm._1
873875 let cP = fm._2
874876 let dt = fm._3
875877 let eY = fm._4
876878 let dn = if (if ((eS > 0))
877879 then (eS > fg)
878880 else false)
879881 then aB(makeString(["amount to receive is less than ", toString(eS)], ""))
880882 else fg
881883 let fh = invoke(aD, "burn", [fk], [AttachedPayment(aT, fk)])
882884 if ((fh == fh))
883885 then {
884886 let fi = [ScriptTransfer(df.caller, dn, ee)]
885887 let fb = if ((dt > 0))
886888 then [ScriptTransfer(aE, dt, ee)]
887889 else nil
888890 $Tuple2(((cP ++ fi) ++ fb), dn)
889891 }
890892 else throw("Strict value is not equal to itself.")
891893 }
892894 else throw("Strict value is not equal to itself.")
893895 }
894896 else throw("Strict value is not equal to itself.")
895897 }
896898
897899
898900
899901 @Callable(df)
900902 func get () = {
901903 let cA = de(df)
902904 let fn = cA._1
903905 let ch = cA._2
904906 let dh = cA._3
905907 let bP = cA._4
906908 let ci = cA._5
907909 let fo = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
908910 if ((fo == fo))
909911 then ci
910912 else throw("Strict value is not equal to itself.")
911913 }
912914
913915
914916
915917 @Callable(df)
916918 func getNoLess (fp,fq) = {
917919 let cA = de(df)
918920 let cg = cA._1
919921 let ch = cA._2
920922 let dh = cA._3
921923 let bP = cA._4
922924 let ci = cA._5
923925 if ((fp > cg))
924926 then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fp)))
925927 else if ((fq > ch))
926928 then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fq)))
927929 else {
928930 let fo = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
929931 if ((fo == fo))
930932 then ci
931933 else throw("Strict value is not equal to itself.")
932934 }
933935 }
934936
935937
936938
937939 @Callable(df)
938940 func unstakeAndGet (dn) = {
939941 let fr = if ((size(df.payments) != 0))
940942 then throw("No payments are expected")
941943 else true
942944 if ((fr == fr))
943945 then {
944946 let bE = aH()
945947 let bR = fromBase58String(bE[q])
946948 let fl = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
947949 if ((fl == fl))
948950 then {
949951 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
950952 let bU = parseIntValue(cA._9)
951953 let ci = cA._10
952954 let fs = if (if (aF())
953955 then true
954956 else (bU == n))
955957 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
956958 else true
957959 if ((fs == fs))
958960 then {
959961 let fo = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
960962 if ((fo == fo))
961963 then ci
962964 else throw("Strict value is not equal to itself.")
963965 }
964966 else throw("Strict value is not equal to itself.")
965967 }
966968 else throw("Strict value is not equal to itself.")
967969 }
968970 else throw("Strict value is not equal to itself.")
969971 }
970972
971973
972974
973975 @Callable(df)
974976 func activate (ft,fu) = if ((toString(df.caller) != toString(aD)))
975977 then throw("permissions denied")
976978 else $Tuple2([StringEntry(aa(), ft), StringEntry(ab(), fu)], "success")
977979
978980
979981
980982 @Callable(df)
981983 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
982984
983985
984986
985987 @Callable(df)
986988 func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
987989
988990
989991
990992 @Callable(df)
991993 func calcPricesWrapperREADONLY (by,bz,bD) = {
992994 let bM = bC(by, bz, bD)
993995 $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
994996 }
995997
996998
997999
9981000 @Callable(df)
9991001 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
10001002
10011003
10021004
10031005 @Callable(df)
10041006 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
10051007
10061008
10071009
10081010 @Callable(df)
10091011 func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
10101012
10111013
10121014
10131015 @Callable(df)
10141016 func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
10151017
10161018
10171019
10181020 @Callable(df)
10191021 func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
10201022 let cA = bN(bO, bP, bQ, addressFromStringValue(X))
10211023 $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
10221024 }
10231025
10241026
10251027
10261028 @Callable(df)
10271029 func statsREADONLY () = {
10281030 let bE = aH()
10291031 let bR = fromBase58String(bE[q])
10301032 let cS = bE[r]
10311033 let cT = bE[s]
10321034 let ct = bE[v]
10331035 let cu = bE[w]
10341036 let bF = parseIntValue(bE[t])
10351037 let bG = parseIntValue(bE[u])
10361038 let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10371039 let cU = bq(cS)
10381040 let cV = bq(cT)
10391041 let fw = if ((fv == 0))
10401042 then [e, e, e]
10411043 else bC(cU, cV, fv)
10421044 let cb = 0
10431045 let fx = G(fw[1], b)
10441046 let fy = G(fw[2], b)
10451047 let fz = value(getInteger(aD, ap(toString(this))))
10461048 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fv), toString(cb), toString(fx), toString(fy), toString(fz)], j))
10471049 }
10481050
10491051
10501052
10511053 @Callable(df)
10521054 func evaluatePutByAmountAssetREADONLY (cl) = {
10531055 let bE = aH()
10541056 let bR = fromBase58String(bE[q])
10551057 let cr = bE[r]
10561058 let bS = fromBase58String(cr)
10571059 let cs = bE[s]
10581060 let bT = fromBase58String(cs)
10591061 let bF = parseIntValue(bE[t])
10601062 let bG = parseIntValue(bE[u])
10611063 let bU = bE[p]
10621064 let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10631065 let cU = bq(cr)
10641066 let cV = bq(cs)
10651067 let bA = D(cU, bF)
10661068 let bB = D(cV, bG)
10671069 let ca = if ((fv == 0))
10681070 then e
10691071 else bs(bB, bA)
10701072 let cx = D(cl, bF)
10711073 let cy = fraction(cx, ca, d)
10721074 let cn = G(cy, bG)
10731075 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
10741076 let cI = dl._1
10751077 let fA = dl._3
10761078 let bW = dl._4
10771079 let bY = dl._5
10781080 let bV = dl._6
10791081 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
10801082 }
10811083
10821084
10831085
10841086 @Callable(df)
10851087 func evaluatePutByPriceAssetREADONLY (cn) = {
10861088 let bE = aH()
10871089 let bR = fromBase58String(bE[q])
10881090 let cr = bE[r]
10891091 let bS = fromBase58String(cr)
10901092 let cs = bE[s]
10911093 let bT = fromBase58String(cs)
10921094 let bF = parseIntValue(bE[t])
10931095 let bG = parseIntValue(bE[u])
10941096 let bU = bE[p]
10951097 let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10961098 let fB = bq(cr)
10971099 let fC = bq(cs)
10981100 let fD = D(fB, bF)
10991101 let fE = D(fC, bG)
11001102 let ca = if ((fv == 0))
11011103 then e
11021104 else bs(fE, fD)
11031105 let cy = D(cn, bG)
11041106 let cx = fraction(cy, d, ca)
11051107 let cl = G(cx, bF)
11061108 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11071109 let cI = dl._1
11081110 let fA = dl._3
11091111 let bW = dl._4
11101112 let bY = dl._5
11111113 let bV = dl._6
11121114 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
11131115 }
11141116
11151117
11161118
11171119 @Callable(df)
11181120 func evaluateGetREADONLY (fF,fG) = {
11191121 let cA = bN("", fF, fG, this)
11201122 let cg = cA._1
11211123 let ch = cA._2
11221124 let bW = cA._5
11231125 let bY = cA._6
11241126 let bV = cA._7
11251127 let cb = cA._8
11261128 let bU = parseIntValue(cA._9)
11271129 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
11281130 }
11291131
11301132
11311133 @Verifier(fH)
11321134 func fI () = {
11331135 let fJ = {
11341136 let dq = ey()
11351137 if ($isInstanceOf(dq, "ByteVector"))
11361138 then {
11371139 let eD = dq
11381140 eD
11391141 }
11401142 else if ($isInstanceOf(dq, "Unit"))
11411143 then fH.senderPublicKey
11421144 else throw("Match error")
11431145 }
11441146 let dq = fH
11451147 if ($isInstanceOf(dq, "Order"))
11461148 then {
11471149 let cR = dq
11481150 let fK = aG()
11491151 let au = cQ(cR)
11501152 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
11511153 let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fK)
11521154 if (if (if (au)
11531155 then av
11541156 else false)
11551157 then aw
11561158 else false)
11571159 then true
11581160 else at(au, av, aw)
11591161 }
11601162 else if ($isInstanceOf(dq, "SetScriptTransaction"))
11611163 then {
11621164 let ez = dq
11631165 let fL = blake2b256(value(ez.script))
11641166 let fM = fromBase64String(value(getString(aD, ar())))
11651167 let fN = scriptHash(this)
11661168 if (if ((fM == fL))
11671169 then (fN != fL)
11681170 else false)
11691171 then true
11701172 else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
11711173 }
11721174 else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
11731175 }
11741176

github/deemru/w8io/873ac7e 
110.93 ms