tx · 41jdPLYHrx2AT2e4vcendgFc4xTjTs7AGAGgNuE4fes7

3N8G95pEaYEhZ4U3m3UrzpEzwBFn5vvXsZH:  -0.05100000 Waves

2022.08.11 21:04 [2180165] smart account 3N8G95pEaYEhZ4U3m3UrzpEzwBFn5vvXsZH > SELF 0.00000000 Waves

{ "type": 13, "id": "41jdPLYHrx2AT2e4vcendgFc4xTjTs7AGAGgNuE4fes7", "fee": 5100000, "feeAssetId": null, "timestamp": 1660241093533, "version": 2, "chainId": 84, "sender": "3N8G95pEaYEhZ4U3m3UrzpEzwBFn5vvXsZH", "senderPublicKey": "Hj6oyH6As5UWo8fZ1K4hPsEY7nxH3MvhBqDD6axiwjXs", "proofs": [ "3iQGNKgt4ouySbztBcoDTo2aaoivALBHQGabj3KA2hNAKTFHwJxdSmTiphYBL1CupHoptvMWxQZv12Em5Gz2x1oP" ], "script": "base64:BgJZCAISABIAEgMKAQESAwoBARIJCgcBAQEBAQEBEg4KDAEBAQEBAQEICAgBARIFCgMBAQESBQoDAQEBEgASAwoBARIAEgMKAQgSABIDCgEIEgMKAQgSBAoCCAF3AAlrX29yYV9rZXkCCWtfb3JhX2tleQAPa19vcmFfYmxvY2tfa2V5Ag9rX29yYV9ibG9ja19rZXkABWtfb3JhAgVrX29yYQAJa19iYWxhbmNlAglrX2JhbGFuY2UADmtfcG9zaXRpb25TaXplAg5rX3Bvc2l0aW9uU2l6ZQAQa19wb3NpdGlvbk1hcmdpbgIQa19wb3NpdGlvbk1hcmdpbgAWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAIWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAAua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgISa19wb3NpdGlvbkZyYWN0aW9uAA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkAAhrX3BhdXNlZAIIa19wYXVzZWQABWtfZmVlAgVrX2ZlZQAPa19mdW5kaW5nUGVyaW9kAg9rX2Z1bmRpbmdQZXJpb2QAEWtfaW5pdE1hcmdpblJhdGlvAhFrX2luaXRNYXJnaW5SYXRpbwAYa19tYWludGVuYW5jZU1hcmdpblJhdGlvAgVrX21tcgAVa19saXF1aWRhdGlvbkZlZVJhdGlvAhVrX2xpcXVpZGF0aW9uRmVlUmF0aW8ADWtfc3ByZWFkTGltaXQCDWtfc3ByZWFkTGltaXQAEGtfbWF4UHJpY2VJbXBhY3QCEGtfbWF4UHJpY2VJbXBhY3QADWtfbGFzdERhdGFTdHICDWtfbGFzdERhdGFTdHIADmtfbGFzdE1pbnV0ZUlkAg5rX2xhc3RNaW51dGVJZAAda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlABNrX3R3YXBEYXRhTGFzdFByaWNlAhNrX3R3YXBEYXRhTGFzdFByaWNlABprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAIaa190d2FwRGF0YVByZXZpb3VzTWludXRlSWQAJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CG2tfbGF0ZXN0TG9uZ1ByZW1pdW1GcmFjdGlvbgAma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CHGtfbGF0ZXN0U2hvcnRQcmVtaXVtRnJhY3Rpb24AEmtfbmV4dEZ1bmRpbmdCbG9jawIea19uZXh0RnVuZGluZ0Jsb2NrTWluVGltZXN0YW1wABFrX2xvbmdGdW5kaW5nUmF0ZQIRa19sb25nRnVuZGluZ1JhdGUAEmtfc2hvcnRGdW5kaW5nUmF0ZQISa19zaG9ydEZ1bmRpbmdSYXRlABNrX3F1b3RlQXNzZXRSZXNlcnZlAghrX3F0QXN0UgASa19iYXNlQXNzZXRSZXNlcnZlAghrX2JzQXN0UgATa190b3RhbFBvc2l0aW9uU2l6ZQITa190b3RhbFBvc2l0aW9uU2l6ZQAXa190b3RhbExvbmdQb3NpdGlvblNpemUCF2tfdG90YWxMb25nUG9zaXRpb25TaXplABhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUCGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAUa19jdW11bGF0aXZlTm90aW9uYWwCFGtfY3VtdWxhdGl2ZU5vdGlvbmFsABZrX29wZW5JbnRlcmVzdE5vdGlvbmFsAhZrX29wZW5JbnRlcmVzdE5vdGlvbmFsABRrX2Nvb3JkaW5hdG9yQWRkcmVzcwIUa19jb29yZGluYXRvckFkZHJlc3MAE2tfaW5zdXJhbmNlX2FkZHJlc3MCE2tfaW5zdXJhbmNlX2FkZHJlc3MAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19xdW90ZV9zdGFraW5nAg9rX3F1b3RlX3N0YWtpbmcAEWtfc3Rha2luZ19hZGRyZXNzAhFrX3N0YWtpbmdfYWRkcmVzcwAPa19taW5lcl9hZGRyZXNzAg9rX21pbmVyX2FkZHJlc3MBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhNDb29yZGluYXRvciBub3Qgc2V0AQxhZG1pbkFkZHJlc3MACQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwEOYWRtaW5QdWJsaWNLZXkACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEmtfYWRtaW5fcHVibGljX2tleQEKcXVvdGVBc3NldAAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUNa19xdW90ZV9hc3NldAERcXVvdGVBc3NldFN0YWtpbmcACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19xdW90ZV9zdGFraW5nAhtRdW90ZSBhc3NldCBzdGFraW5nIG5vdCBzZXQBDnN0YWtpbmdBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEWtfc3Rha2luZ19hZGRyZXNzAhFJbnN1cmFuY2Ugbm90IHNldAEQaW5zdXJhbmNlQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRNrX2luc3VyYW5jZV9hZGRyZXNzAhFJbnN1cmFuY2Ugbm90IHNldAEMbWluZXJBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfbWluZXJfYWRkcmVzcwIRSW5zdXJhbmNlIG5vdCBzZXQACERJUl9MT05HAAEACURJUl9TSE9SVAACAA1UV0FQX0lOVEVSVkFMAA8AD09SQUNMRV9JTlRFUlZBTAAPAAdTRUNPTkRTAOgHAAxERUNJTUFMX1VOSVQJAGgCAAEJAGgCCQBoAgkAaAIJAGgCCQBoAgAKAAoACgAKAAoACgAHT05FX0RBWQkAaAIAgKMFBQxERUNJTUFMX1VOSVQACEFMTF9GRUVTAGQAD1BOTF9PUFRJT05fU1BPVAABABFQTkxfT1BUSU9OX09SQUNMRQACAQFzAQJfeAkArAICCQCkAwEFAl94AgEsAQRkaXZkAgJfeAJfeQkAbgQFAl94BQxERUNJTUFMX1VOSVQFAl95BQhIQUxGRVZFTgEEbXVsZAICX3gCX3kJAG4EBQJfeAUCX3kFDERFQ0lNQUxfVU5JVAUISEFMRkVWRU4BA2FicwECX3gDCQBmAgUCX3gAAAUCX3gJAQEtAQUCX3gBBHZtYXgCAl94Al95AwkAZwIFAl94BQJfeQUCX3gFAl95AQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQlsaXN0VG9TdHIBBV9saXN0CgEFX2pvaW4CC2FjY3VtdWxhdG9yA3ZhbAkArAICCQCsAgIFC2FjY3VtdWxhdG9yBQN2YWwCASwECm5ld0xpc3RTdHIKAAIkbAUFX2xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBV9qb2luAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEC25ld0xpc3RTdHJVCQCzAgIFCm5ld0xpc3RTdHIAAQQLbmV3TGlzdFN0clIDCQAAAgkArwICBQtuZXdMaXN0U3RyVQABAgEsCQCwAgIFC25ld0xpc3RTdHJVAAEFC25ld0xpc3RTdHJVBQtuZXdMaXN0U3RyUgEJc3RyVG9MaXN0AQRfc3RyCQC1CQIFBF9zdHICASwBC3B1c2hUb1F1ZXVlAwVfbGlzdAhfbWF4U2l6ZQZfdmFsdWUDCQBmAgkAkAMBBQVfbGlzdAUIX21heFNpemUJAM0IAgkA0QgCBQVfbGlzdAAABQZfdmFsdWUJAM0IAgUFX2xpc3QFBl92YWx1ZQEDaW50AQFrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUBawkArAICAg1ubyB2YWx1ZSBmb3IgBQFrAQhjYmFsYW5jZQAJAQNpbnQBBQlrX2JhbGFuY2UBA2ZlZQAJAQNpbnQBBQVrX2ZlZQEPaW5pdE1hcmdpblJhdGlvAAkBA2ludAEFEWtfaW5pdE1hcmdpblJhdGlvAQZxdEFzdFIACQEDaW50AQUTa19xdW90ZUFzc2V0UmVzZXJ2ZQEGYnNBc3RSAAkBA2ludAEFEmtfYmFzZUFzc2V0UmVzZXJ2ZQERdG90YWxQb3NpdGlvblNpemUACQEDaW50AQUTa190b3RhbFBvc2l0aW9uU2l6ZQESY3VtdWxhdGl2ZU5vdGlvbmFsAAkBA2ludAEFFGtfY3VtdWxhdGl2ZU5vdGlvbmFsARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAJAQNpbnQBBRZrX29wZW5JbnRlcmVzdE5vdGlvbmFsARluZXh0RnVuZGluZ0Jsb2NrVGltZXN0YW1wAAkBA2ludAEFEmtfbmV4dEZ1bmRpbmdCbG9jawEQZnVuZGluZ1BlcmlvZFJhdwAJAQNpbnQBBQ9rX2Z1bmRpbmdQZXJpb2QBFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUMREVDSU1BTF9VTklUARRmdW5kaW5nUGVyaW9kU2Vjb25kcwAJAGgCCQEQZnVuZGluZ1BlcmlvZFJhdwAFB1NFQ09ORFMBFm1haW50ZW5hbmNlTWFyZ2luUmF0aW8ACQEDaW50AQUYa19tYWludGVuYW5jZU1hcmdpblJhdGlvARNsaXF1aWRhdGlvbkZlZVJhdGlvAAkBA2ludAEFFWtfbGlxdWlkYXRpb25GZWVSYXRpbwELc3ByZWFkTGltaXQACQEDaW50AQUNa19zcHJlYWRMaW1pdAEObWF4UHJpY2VJbXBhY3QACQEDaW50AQUQa19tYXhQcmljZUltcGFjdAEjbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEDaW50AQUla19sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAkBA2ludAEFJmtfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAkBA2ludAEFGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQEVdG90YWxMb25nUG9zaXRpb25TaXplAAkBA2ludAEFF2tfdG90YWxMb25nUG9zaXRpb25TaXplARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwxfbWFyZ2luUmF0aW8QX2Jhc2VNYXJnaW5SYXRpbxRfbGFyZ2VyVGhhbk9yRXF1YWxUbwQUcmVtYWluaW5nTWFyZ2luUmF0aW8JAGUCBQxfbWFyZ2luUmF0aW8FEF9iYXNlTWFyZ2luUmF0aW8DAwUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGYCAAAFFHJlbWFpbmluZ01hcmdpblJhdGlvBwkAAgECDkludmFsaWQgbWFyZ2luAwMJAQEhAQUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGcCBRRyZW1haW5pbmdNYXJnaW5SYXRpbwAABwkAAgECDkludmFsaWQgbWFyZ2luBgEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgENX3Bvc2l0aW9uU2l6ZQMJAAACBQ1fcG9zaXRpb25TaXplAAAJAAIBAixTaG91bGQgbm90IGJlIGNhbGxlZCB3aXRoIF9wb3NpdGlvblNpemUgPT0gMAMJAGYCBQ1fcG9zaXRpb25TaXplAAAJASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAQtnZXRQb3NpdGlvbgEHX3RyYWRlcgQPcG9zaXRpb25TaXplT3B0CQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQdfdHJhZGVyBAckbWF0Y2gwBQ9wb3NpdGlvblNpemVPcHQDCQABAgUHJG1hdGNoMAIDSW50BAxwb3NpdGlvblNpemUFByRtYXRjaDAJAJYKBAUMcG9zaXRpb25TaXplCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRBrX3Bvc2l0aW9uTWFyZ2luBQdfdHJhZGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQdfdHJhZGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQdfdHJhZGVyCQCWCgQAAAAAAAAAAAETcmVxdWlyZU9wZW5Qb3NpdGlvbgEHX3RyYWRlcgMJAAACCAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgJfMQAACQACAQIQTm8gb3BlbiBwb3NpdGlvbgYBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwEGcGF1c2VkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQhrX3BhdXNlZAcBDXVwZGF0ZVJlc2VydmUDBl9pc0FkZBFfcXVvdGVBc3NldEFtb3VudBBfYmFzZUFzc2V0QW1vdW50AwUGX2lzQWRkBAduZXdCYXNlCQBlAgkBBmJzQXN0UgAFEF9iYXNlQXNzZXRBbW91bnQDCQBnAgAABQduZXdCYXNlCQACAQIqVHggbGVhZCB0byBiYXNlIGFzc2V0IHJlc2VydmUgPD0gMCwgcmV2ZXJ0CQCWCgQJAGQCCQEGcXRBc3RSAAURX3F1b3RlQXNzZXRBbW91bnQFB25ld0Jhc2UJAGQCCQERdG90YWxQb3NpdGlvblNpemUABRBfYmFzZUFzc2V0QW1vdW50CQBkAgkBEmN1bXVsYXRpdmVOb3Rpb25hbAAFEV9xdW90ZUFzc2V0QW1vdW50BAhuZXdRdW90ZQkAZQIJAQZxdEFzdFIABRFfcXVvdGVBc3NldEFtb3VudAMJAGcCAAAFCG5ld1F1b3RlCQACAQIqVHggbGVhZCB0byBiYXNlIHF1b3RlIHJlc2VydmUgPD0gMCwgcmV2ZXJ0CQCWCgQFCG5ld1F1b3RlCQBkAgkBBmJzQXN0UgAFEF9iYXNlQXNzZXRBbW91bnQJAGUCCQERdG90YWxQb3NpdGlvblNpemUABRBfYmFzZUFzc2V0QW1vdW50CQBlAgkBEmN1bXVsYXRpdmVOb3Rpb25hbAAFEV9xdW90ZUFzc2V0QW1vdW50AQlzd2FwSW5wdXQCBl9pc0FkZBFfcXVvdGVBc3NldEFtb3VudAQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAtwcmljZUJlZm9yZQkBBGRpdmQCBQdfcXRBc3RSBQdfYnNBc3RSBCdhbW91bnRCYXNlQXNzZXRCb3VnaHRXaXRob3V0UHJpY2VJbXBhY3QJAQRkaXZkAgURX3F1b3RlQXNzZXRBbW91bnQFC3ByaWNlQmVmb3JlBAFrCQEEbXVsZAIFB19xdEFzdFIFB19ic0FzdFIEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIDBQZfaXNBZGQJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAkAZQIFB19xdEFzdFIFEV9xdW90ZUFzc2V0QW1vdW50BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIJAQRkaXZkAgUBawUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgQYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEDYWJzAQkAZQIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUHX2JzQXN0UgQVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AwUGX2lzQWRkBRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMJAQEtAQUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBAtwcmljZUltcGFjdAkBBGRpdmQCCQBlAgUnYW1vdW50QmFzZUFzc2V0Qm91Z2h0V2l0aG91dFByaWNlSW1wYWN0BRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMFJ2Ftb3VudEJhc2VBc3NldEJvdWdodFdpdGhvdXRQcmljZUltcGFjdAQTbWF4UHJpY2VJbXBhY3RWYWx1ZQkBDm1heFByaWNlSW1wYWN0AAMJAGYCBQtwcmljZUltcGFjdAUTbWF4UHJpY2VJbXBhY3RWYWx1ZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINUHJpY2UgaW1wYWN0IAkApAMBBQtwcmljZUltcGFjdAIUID4gbWF4IHByaWNlIGltcGFjdCAJAKQDAQUTbWF4UHJpY2VJbXBhY3RWYWx1ZQIVIGJlZm9yZSBxdW90ZSBhc3NldDogCQCkAwEFB19xdEFzdFICFCBiZWZvcmUgYmFzZSBhc3NldDogCQCkAwEFB19ic0FzdFICICBxdW90ZSBhc3NldCBhbW91bnQgdG8geGNoYW5nZTogCQCkAwEFEV9xdW90ZUFzc2V0QW1vdW50AhIgaWRlYWwgcHJpY2UgYnV5OiAJAKQDAQUnYW1vdW50QmFzZUFzc2V0Qm91Z2h0V2l0aG91dFByaWNlSW1wYWN0AhEgcmVhbCBwcmljZSBidXk6IAkApAMBBRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEDSR0MDEyNjQwMTI4NDMJAQ11cGRhdGVSZXNlcnZlAwUGX2lzQWRkBRFfcXVvdGVBc3NldEFtb3VudAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBBdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDEyNjQwMTI4NDMCXzEEFmJhc2VBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxMjY0MDEyODQzAl8yBBd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQgFDSR0MDEyNjQwMTI4NDMCXzMEGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQgFDSR0MDEyNjQwMTI4NDMCXzQJAJcKBQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEFGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQQX29sZFBvc2l0aW9uU2l6ZRJfb2xkUG9zaXRpb25NYXJnaW4lX29sZFBvc2l0aW9uQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgxfbWFyZ2luRGVsdGEEDmZ1bmRpbmdQYXltZW50AwkBAiE9AgUQX29sZFBvc2l0aW9uU2l6ZQAABCBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBRBfb2xkUG9zaXRpb25TaXplCQEEbXVsZAIJAGUCBSBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUlX29sZFBvc2l0aW9uQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUQX29sZFBvc2l0aW9uU2l6ZQAABAxzaWduZWRNYXJnaW4JAGQCCQBlAgUMX21hcmdpbkRlbHRhBQ5mdW5kaW5nUGF5bWVudAUSX29sZFBvc2l0aW9uTWFyZ2luBA0kdDAxMzU5MDEzNzE3AwkAZgIAAAUMc2lnbmVkTWFyZ2luCQCUCgIAAAkBA2FicwEFDHNpZ25lZE1hcmdpbgkAlAoCCQEDYWJzAQUMc2lnbmVkTWFyZ2luAAAEDHJlbWFpbk1hcmdpbggFDSR0MDEzNTkwMTM3MTcCXzEEB2JhZERlYnQIBQ0kdDAxMzU5MDEzNzE3Al8yCQCVCgMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUOZnVuZGluZ1BheW1lbnQBCnN3YXBPdXRwdXQCBl9pc0FkZBBfYmFzZUFzc2V0QW1vdW50BBJfcXVvdGVBc3NldFJlc2VydmUJAQZxdEFzdFIABBFfYmFzZUFzc2V0UmVzZXJ2ZQkBBmJzQXN0UgADCQAAAgUQX2Jhc2VBc3NldEFtb3VudAAACQACAQIZSW52YWxpZCBiYXNlIGFzc2V0IGFtb3VudAQBawkBBG11bGQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9iYXNlQXNzZXRSZXNlcnZlBBhiYXNlQXNzZXRQb29sQW1vdW50QWZ0ZXIDBQZfaXNBZGQJAGQCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldEFtb3VudAkAZQIFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0QW1vdW50BA9xdW90ZUFzc2V0QWZ0ZXIJAQRkaXZkAgUBawUYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyBA5xdW90ZUFzc2V0U29sZAkBA2FicwEJAGUCBQ9xdW90ZUFzc2V0QWZ0ZXIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQQNJHQwMTQ1NTUxNDc0OAkBDXVwZGF0ZVJlc2VydmUDCQEBIQEFBl9pc0FkZAUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTQ1NTUxNDc0OAJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE0NTU1MTQ3NDgCXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTQ1NTUxNDc0OAJfMwQYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCAUNJHQwMTQ1NTUxNDc0OAJfNAkAmQoHBQ5xdW90ZUFzc2V0U29sZAUXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEFFmJhc2VBc3NldFJlc2VydmVBZnRlcjEFF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxBRhjdW11bGF0aXZlTm90aW9uYWxBZnRlcjEJAGUCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMFBl9pc0FkZAkBA2FicwEFEF9iYXNlQXNzZXRBbW91bnQAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAQEhAQUGX2lzQWRkCQEDYWJzAQUQX2Jhc2VBc3NldEFtb3VudAAAARJnZXRPcmFjbGVUd2FwUHJpY2UABAZvcmFjbGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQVrX29yYQIABAhwcmljZUtleQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUJa19vcmFfa2V5BAhibG9ja0tleQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUPa19vcmFfYmxvY2tfa2V5BAlsYXN0VmFsdWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQZvcmFjbGUFCHByaWNlS2V5CQCsAgIJAKwCAgkArAICAiJDYW4gbm90IGdldCBvcmFjbGUgcHJpY2UuIE9yYWNsZTogCQClCAEFBm9yYWNsZQIGIGtleTogBQhwcmljZUtleQUJbGFzdFZhbHVlAQxnZXRTcG90UHJpY2UABBJfcXVvdGVBc3NldFJlc2VydmUJAQZxdEFzdFIABBFfYmFzZUFzc2V0UmVzZXJ2ZQkBBmJzQXN0UgAJAQRkaXZkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfYmFzZUFzc2V0UmVzZXJ2ZQEWaXNPdmVyRmx1Y3R1YXRpb25MaW1pdAAEC29yYWNsZVByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQMY3VycmVudFByaWNlCQEMZ2V0U3BvdFByaWNlAAkAZgIJAQRkaXZkAgkBA2FicwEJAGUCBQtvcmFjbGVQcmljZQUMY3VycmVudFByaWNlBQtvcmFjbGVQcmljZQkBC3NwcmVhZExpbWl0AAEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCB190cmFkZXIHX29wdGlvbgQNJHQwMTY0NzUxNjYwMwkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMTY0NzUxNjYwMwJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAxNjQ3NTE2NjAzAl8yBBRwb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDE2NDc1MTY2MDMCXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMTY0NzUxNjYwMwJfNAQPcG9zaXRpb25TaXplQWJzCQEDYWJzAQUMcG9zaXRpb25TaXplAwkAAAIFD3Bvc2l0aW9uU2l6ZUFicwAACQACAQIVSW52YWxpZCBwb3NpdGlvbiBzaXplBAdpc1Nob3J0CQBmAgAABQxwb3NpdGlvblNpemUEEHBvc2l0aW9uTm90aW9uYWwDCQAAAgUHX29wdGlvbgUPUE5MX09QVElPTl9TUE9UBA0kdDAxNjg1MDE2OTU3CQEKc3dhcE91dHB1dAIJAQEhAQUHaXNTaG9ydAUPcG9zaXRpb25TaXplQWJzBBNvdXRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwMTY4NTAxNjk1NwJfMQQCeDEIBQ0kdDAxNjg1MDE2OTU3Al8yBAJ4MggFDSR0MDE2ODUwMTY5NTcCXzMEAngzCAUNJHQwMTY4NTAxNjk1NwJfNAUTb3V0UG9zaXRpb25Ob3Rpb25hbAkBBG11bGQCBQ9wb3NpdGlvblNpemVBYnMJARJnZXRPcmFjbGVUd2FwUHJpY2UABA11bnJlYWxpemVkUG5sAwUHaXNTaG9ydAkAZQIFFHBvc2l0aW9uT3Blbk5vdGlvbmFsBRBwb3NpdGlvbk5vdGlvbmFsCQBlAgUQcG9zaXRpb25Ob3Rpb25hbAUUcG9zaXRpb25PcGVuTm90aW9uYWwJAJQKAgUQcG9zaXRpb25Ob3Rpb25hbAUNdW5yZWFsaXplZFBubAEPY2FsY01hcmdpblJhdGlvAw1fcmVtYWluTWFyZ2luCF9iYWREZWJ0EV9wb3NpdGlvbk5vdGlvbmFsCQEEZGl2ZAIJAGUCBQ1fcmVtYWluTWFyZ2luBQhfYmFkRGVidAURX3Bvc2l0aW9uTm90aW9uYWwBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CB190cmFkZXIHX29wdGlvbgQNJHQwMTc2MjcxNzczOAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMTc2MjcxNzczOAJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAxNzYyNzE3NzM4Al8yBANwb24IBQ0kdDAxNzYyNzE3NzM4Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDE3NjI3MTc3MzgCXzQEDSR0MDE3NzQ0MTc4MzcJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFB19vcHRpb24EEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDAxNzc0NDE3ODM3Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwMTc3NDQxNzgzNwJfMgQNJHQwMTc4NDIxODAwOAkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMTc4NDIxODAwOAJfMQQHYmFkRGVidAgFDSR0MDE3ODQyMTgwMDgCXzIJAQ9jYWxjTWFyZ2luUmF0aW8DBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFEHBvc2l0aW9uTm90aW9uYWwBDmdldE1hcmdpblJhdGlvAQdfdHJhZGVyCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAEVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAQdfdHJhZGVyBA0kdDAxODMyNDE4NDUyCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDAxODMyNDE4NDUyAl8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDE4MzI0MTg0NTICXzIEFHBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMTgzMjQxODQ1MgJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAxODMyNDE4NDUyAl80BA0kdDAxODQ1ODE4NTQ1CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEAngxCAUNJHQwMTg0NTgxODU0NQJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDE4NDU4MTg1NDUCXzIEDSR0MDE4NTUwMTg3MTgJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDE4NTUwMTg3MTgCXzEEB2JhZERlYnQIBQ0kdDAxODU1MDE4NzE4Al8yBBVleGNoYW5nZWRQb3NpdGlvblNpemUJAQEtAQUMcG9zaXRpb25TaXplBAtyZWFsaXplZFBubAUNdW5yZWFsaXplZFBubAQNbWFyZ2luVG9WYXVsdAkBAS0BBQxyZW1haW5NYXJnaW4EDSR0MDE4ODQ1MTkxMjYJAQpzd2FwT3V0cHV0AgkAZgIFDHBvc2l0aW9uU2l6ZQAACQEDYWJzAQUMcG9zaXRpb25TaXplBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUNJHQwMTg4NDUxOTEyNgJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDE4ODQ1MTkxMjYCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDE4ODQ1MTkxMjYCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAxODg0NTE5MTI2Al80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDE4ODQ1MTkxMjYCXzUEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwMTg4NDUxOTEyNgJfNgQPdG90YWxTaG9ydEFmdGVyCAUNJHQwMTg4NDUxOTEyNgJfNwQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFFHBvc2l0aW9uT3Blbk5vdGlvbmFsCQCeCgwFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQUHYmFkRGVidAULcmVhbGl6ZWRQbmwFDW1hcmdpblRvVmF1bHQFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIBEGdldFR3YXBTcG90UHJpY2UABAhtaW51dGVJZAkAaQIJAGkCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcADoBwA8BA1zdGFydE1pbnV0ZUlkCQBlAgUIbWludXRlSWQFDVRXQVBfSU5URVJWQUwEB2xpc3RTdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUNa19sYXN0RGF0YVN0cgIABARsaXN0CQC1CQIFB2xpc3RTdHICASwKAQhmaWx0ZXJGbgILYWNjdW11bGF0b3IEbmV4dAMJAGcCBQ1zdGFydE1pbnV0ZUlkCQENcGFyc2VJbnRWYWx1ZQEFBG5leHQJAM0IAgULYWNjdW11bGF0b3IJAQ1wYXJzZUludFZhbHVlAQUEbmV4dAULYWNjdW11bGF0b3IEBWxpc3RGCgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZpbHRlckZuAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQECG1heEluZGV4AwkAZgIJAJADAQUFbGlzdEYAAAkAlgMBBQVsaXN0RgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxpc3QAAAQMbGFzdE1pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtfbGFzdE1pbnV0ZUlkAAAEFmVuZExhc3RDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFDGxhc3RNaW51dGVJZAAABAxlbmRMYXN0UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFE2tfdHdhcERhdGFMYXN0UHJpY2UCAV8JAKQDAQUMbGFzdE1pbnV0ZUlkAAAEEm5vd0N1bXVsYXRpdmVQcmljZQkAZAIFFmVuZExhc3RDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUIbWludXRlSWQFDGxhc3RNaW51dGVJZAUMZW5kTGFzdFByaWNlBBhzdGFydExhc3RDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFCG1heEluZGV4AAAEDnN0YXJ0TGFzdFByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFCG1heEluZGV4AAAEFHN0YXJ0Q3VtdWxhdGl2ZVByaWNlCQBkAgUYc3RhcnRMYXN0Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFDXN0YXJ0TWludXRlSWQFCG1heEluZGV4BQ5zdGFydExhc3RQcmljZQkAaQIJAGUCBRJub3dDdW11bGF0aXZlUHJpY2UFFHN0YXJ0Q3VtdWxhdGl2ZVByaWNlBQ1UV0FQX0lOVEVSVkFMAQ51cGRhdGVTZXR0aW5ncwcQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19pbml0TWFyZ2luUmF0aW8FEF9pbml0TWFyZ2luUmF0aW8JAMwIAgkBDEludGVnZXJFbnRyeQIFGGtfbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwUEX21tcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa19saXF1aWRhdGlvbkZlZVJhdGlvBRRfbGlxdWlkYXRpb25GZWVSYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa19mdW5kaW5nUGVyaW9kBQ5fZnVuZGluZ1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFa19mZWUFBF9mZWUJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfc3ByZWFkTGltaXQFDF9zcHJlYWRMaW1pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa19tYXhQcmljZUltcGFjdAUPX21heFByaWNlSW1wYWN0BQNuaWwBDXVwZGF0ZUZ1bmRpbmcFEV9uZXh0RnVuZGluZ0Jsb2NrJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbiVfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uEF9sb25nRnVuZGluZ1JhdGURX3Nob3J0RnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfbmV4dEZ1bmRpbmdCbG9jawURX25leHRGdW5kaW5nQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFEWtfbG9uZ0Z1bmRpbmdSYXRlBRBfbG9uZ0Z1bmRpbmdSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX3Nob3J0RnVuZGluZ1JhdGUFEV9zaG9ydEZ1bmRpbmdSYXRlBQNuaWwBDnVwZGF0ZVBvc2l0aW9uBQhfYWRkcmVzcwVfc2l6ZQdfbWFyZ2luDV9vcGVuTm90aW9uYWwgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwUFX3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzBQdfbWFyZ2luCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwUNX29wZW5Ob3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUIX2FkZHJlc3MFIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQNuaWwBCmFwcGVuZFR3YXABBXByaWNlBAhtaW51dGVJZAkAaQIJAGkCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcADoBwA8BBBwcmV2aW91c01pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtfbGFzdE1pbnV0ZUlkAAADCQBmAgUQcHJldmlvdXNNaW51dGVJZAUIbWludXRlSWQJAAIBAhFUV0FQIG91dC1vZi1vcmRlcgQMbGFzdE1pbnV0ZUlkAwkAAAIFEHByZXZpb3VzTWludXRlSWQAAAUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQDCQBmAgUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQEE3ByZXZDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQAAAQJcHJldlByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQFBXByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUMbGFzdE1pbnV0ZUlkBQlwcmV2UHJpY2UEBGxpc3QJAQtwdXNoVG9RdWV1ZQMJAQlzdHJUb0xpc3QBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFDWtfbGFzdERhdGFTdHICAAUNVFdBUF9JTlRFUlZBTAkApAMBBQhtaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUIbWludXRlSWQFE2xhc3RDdW11bGF0aXZlUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFE2tfdHdhcERhdGFMYXN0UHJpY2UJAKQDAQUIbWludXRlSWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19sYXN0TWludXRlSWQFCG1pbnV0ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtfbGFzdERhdGFTdHIJAQlsaXN0VG9TdHIBBQRsaXN0BQNuaWwEGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAAABBNwcmV2Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAAABAlwcmV2UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBRh0d2FwRGF0YVByZXZpb3VzTWludXRlSWQFBXByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkBQlwcmV2UHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFCG1pbnV0ZUlkBRNsYXN0Q3VtdWxhdGl2ZVByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFCG1pbnV0ZUlkBQVwcmljZQUDbmlsARF1cGRhdGVBbW1SZXNlcnZlcwIHX3F0QXN0UgdfYnNBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrX3F1b3RlQXNzZXRSZXNlcnZlBQdfcXRBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX2Jhc2VBc3NldFJlc2VydmUFB19ic0FzdFIFA25pbAEJdXBkYXRlQW1tBwdfcXRBc3RSB19ic0FzdFIXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyFV9vcGVuSW50ZXJlc3ROb3Rpb25hbBZfdG90YWxMb25nUG9zaXRpb25TaXplF190b3RhbFNob3J0UG9zaXRpb25TaXplAwkBAiE9AgkAZQIFFl90b3RhbExvbmdQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhJbnZhbGlkIEFNTSBzdGF0ZSBkYXRhOiAJAKQDAQUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIEICsgIAkApAMBBRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIEICE9IAkApAMBBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAzggCCQDOCAIJARF1cGRhdGVBbW1SZXNlcnZlcwIFB19xdEFzdFIFB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfdG90YWxQb3NpdGlvblNpemUFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrX2N1bXVsYXRpdmVOb3Rpb25hbAUYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrX29wZW5JbnRlcmVzdE5vdGlvbmFsBRVfb3BlbkludGVyZXN0Tm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFF2tfdG90YWxMb25nUG9zaXRpb25TaXplBRZfdG90YWxMb25nUG9zaXRpb25TaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBQNuaWwJAQphcHBlbmRUd2FwAQkBBGRpdmQCBQdfcXRBc3RSBQdfYnNBc3RSAQ5kZWxldGVQb3NpdGlvbgEIX2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFLmtfcG9zaXRpb25MYXN0VXBkYXRlZEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FCF9hZGRyZXNzBQNuaWwBCHdpdGhkcmF3AghfYWRkcmVzcwdfYW1vdW50BAdiYWxhbmNlCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAGYCBQdfYW1vdW50BQdiYWxhbmNlCQACAQkArAICCQCsAgIJAKwCAgITVW5hYmxlIHRvIHdpdGhkcmF3IAkApAMBBQdfYW1vdW50AhcgZnJvbSBjb250cmFjdCBiYWxhbmNlIAkApAMBBQdiYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCF9hZGRyZXNzBQdfYW1vdW50CQEKcXVvdGVBc3NldAAFA25pbAENdXBkYXRlQmFsYW5jZQEBaQMJAGYCAAAFAWkJAAIBAgdCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrX2JhbGFuY2UFAWkFA25pbAELdHJhbnNmZXJGZWUBAWkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBDnN0YWtpbmdBZGRyZXNzAAUBaQkBCnF1b3RlQXNzZXQABQNuaWwQAWkBBXBhdXNlAAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhpJbnZhbGlkIHRvZ2dsZVBhdXNlIHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIa19wYXVzZWQGBQNuaWwBaQEHdW5wYXVzZQADCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIaSW52YWxpZCB0b2dnbGVQYXVzZSBwYXJhbXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCGtfcGF1c2VkBwUDbmlsAWkBDGFkZExpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIbSW52YWxpZCBhZGRMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEBXByaWNlCQEEZGl2ZAIFB19xdEFzdFIFB19ic0FzdFIEFGJhc2VBc3NldEFtb3VudFRvQWRkCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGQCBQdfYnNBc3RSBRRiYXNlQXNzZXRBbW91bnRUb0FkZAkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBD3JlbW92ZUxpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIeSW52YWxpZCByZW1vdmVMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEBXByaWNlCQEEZGl2ZAIFB19xdEFzdFIFB19ic0FzdFIEF2Jhc2VBc3NldEFtb3VudFRvUmVtb3ZlCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGUCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGUCBQdfYnNBc3RSBRdiYXNlQXNzZXRBbW91bnRUb1JlbW92ZQkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBDmNoYW5nZVNldHRpbmdzBxBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8OX2Z1bmRpbmdQZXJpb2QEX2ZlZQxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0AwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECHUludmFsaWQgY2hhbmdlU2V0dGluZ3MgcGFyYW1zCQEOdXBkYXRlU2V0dGluZ3MHBRBfaW5pdE1hcmdpblJhdGlvBQRfbW1yBRRfbGlxdWlkYXRpb25GZWVSYXRpbwUOX2Z1bmRpbmdQZXJpb2QFBF9mZWUFDF9zcHJlYWRMaW1pdAUPX21heFByaWNlSW1wYWN0AWkBCmluaXRpYWxpemUMB19xdEFzdFIHX2JzQXN0Ug5fZnVuZGluZ1BlcmlvZBBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8EX2ZlZQdfb3JhY2xlCl9vcmFjbGVLZXkMX2Nvb3JkaW5hdG9yDF9zcHJlYWRMaW1pdA9fbWF4UHJpY2VJbXBhY3QDAwMDAwMDAwMDCQBnAgAABQdfcXRBc3RSBgkAZwIAAAUHX2JzQXN0UgYJAGcCAAAFDl9mdW5kaW5nUGVyaW9kBgkAZwIAAAUQX2luaXRNYXJnaW5SYXRpbwYJAGcCAAAFBF9tbXIGCQBnAgAABRRfbGlxdWlkYXRpb25GZWVSYXRpbwYJAGcCAAAFBF9mZWUGCQBnAgAABQxfc3ByZWFkTGltaXQGCQBnAgAABQ9fbWF4UHJpY2VJbXBhY3QGCQELaW5pdGlhbGl6ZWQACQACAQIdSW52YWxpZCBpbml0aWFsaXplIHBhcmFtZXRlcnMJAM4IAgkAzggCCQDOCAIJAM4IAgkBCXVwZGF0ZUFtbQcFB19xdEFzdFIFB19ic0FzdFIAAAAAAAAAAAAACQEOdXBkYXRlU2V0dGluZ3MHBRBfaW5pdE1hcmdpblJhdGlvBQRfbW1yBRRfbGlxdWlkYXRpb25GZWVSYXRpbwUOX2Z1bmRpbmdQZXJpb2QFBF9mZWUFDF9zcHJlYWRMaW1pdAUPX21heFByaWNlSW1wYWN0CQENdXBkYXRlRnVuZGluZwUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUOX2Z1bmRpbmdQZXJpb2QAAAAAAAAAAAkBDXVwZGF0ZUJhbGFuY2UBAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWtfb3JhBQdfb3JhY2xlCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtfb3JhX2tleQUKX29yYWNsZUtleQkAzAgCCQELU3RyaW5nRW50cnkCBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwUMX2Nvb3JkaW5hdG9yBQNuaWwBaQEQZGVjcmVhc2VQb3NpdGlvbgMHX2Ftb3VudAlfbGV2ZXJhZ2UTX21pbkJhc2VBc3NldEFtb3VudAMDAwMDCQBnAgAABQdfYW1vdW50BgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMJAQRkaXZkAgUMREVDSU1BTF9VTklUBQlfbGV2ZXJhZ2UJAQ9pbml0TWFyZ2luUmF0aW8ABgYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQZwYXVzZWQACQACAQIjSW52YWxpZCBkZWNyZWFzZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDMwMDM1MzAxODcJAQtnZXRQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDAzMDAzNTMwMTg3Al8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDMwMDM1MzAxODcCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMzAwMzUzMDE4NwJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAzMDAzNTMwMTg3Al80BApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDAzMDM2MDMwNDc2CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCCQClCAEIBQFpBmNhbGxlcgUPUE5MX09QVElPTl9TUE9UBBNvbGRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwMzAzNjAzMDQ3NgJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDMwMzYwMzA0NzYCXzIEDSR0MDMwNDgyMzMwMzEDCQBmAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsBA0kdDAzMDg1OTMxMDc4CQEJc3dhcElucHV0AgUFaXNBZGQFDG9wZW5Ob3Rpb25hbAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCAUNJHQwMzA4NTkzMTA3OAJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDMwODU5MzEwNzgCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDMwODU5MzEwNzgCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAzMDg1OTMxMDc4Al80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDMwODU5MzEwNzgCXzUEGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50BRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMHCQACAQkArAICCQCsAgIJAKwCAgIlVG9vIGxpdHRsZSBiYXNlIGFzc2V0IGV4Y2hhbmdlZCwgZ290IAkApAMBBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMCCiBleHBlY3RlZCAJAKQDAQUTX21pbkJhc2VBc3NldEFtb3VudAQLcmVhbGl6ZWRQbmwJAQRkaXZkAgkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUEDSR0MDMxNTE1MzE3NjAJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC3JlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDAzMTUxNTMxNzYwAl8xBAdiYWREZWJ0CAUNJHQwMzE1MTUzMTc2MAJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDAzMTUxNTMxNzYwAl8zBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQxvcGVuTm90aW9uYWwEEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIFDXVucmVhbGl6ZWRQbmwFC3JlYWxpemVkUG5sBBJyZW1haW5PcGVuTm90aW9uYWwDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQBlAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkAZAIFEnVucmVhbGl6ZWRQbmxBZnRlcgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUJAJ0KCwUPbmV3UG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4JAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUMb3Blbk5vdGlvbmFsCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQACAQIUQ2xvc2UgcG9zaXRpb24gZmlyc3QED25ld1Bvc2l0aW9uU2l6ZQgFDSR0MDMwNDgyMzMwMzECXzEEF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luCAUNJHQwMzA0ODIzMzAzMQJfMgQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAzMDQ4MjMzMDMxAl8zBBRuZXdQb3NpdGlvbkxhdGVzdENQRggFDSR0MDMwNDgyMzMwMzECXzQEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDMwNDgyMzMwMzECXzUEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAzMDQ4MjMzMDMxAl82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwMzA0ODIzMzAzMQJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDAzMDQ4MjMzMDMxAl84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwMzA0ODIzMzAzMQJfOQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDAzMDQ4MjMzMDMxA18xMAQPdG90YWxTaG9ydEFmdGVyCAUNJHQwMzA0ODIzMzAzMQNfMTEEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9uZXdQb3NpdGlvblNpemUFF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25MYXRlc3RDUEYJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGluY3JlYXNlUG9zaXRpb24DCl9kaXJlY3Rpb24JX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwMDAwMDAwkBAiE9AgUKX2RpcmVjdGlvbgUIRElSX0xPTkcJAQIhPQIFCl9kaXJlY3Rpb24FCURJUl9TSE9SVAcGCQBnAgAABQpfcmF3QW1vdW50BgkBASEBCQELaW5pdGlhbGl6ZWQABgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEKcXVvdGVBc3NldAAGCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwkBBGRpdmQCBQxERUNJTUFMX1VOSVQFCV9sZXZlcmFnZQkBD2luaXRNYXJnaW5SYXRpbwAGBgkBBnBhdXNlZAAJAAIBAiNJbnZhbGlkIGluY3JlYXNlUG9zaXRpb24gcGFyYW1ldGVycwQJZmVlQW1vdW50CQEEbXVsZAIFCl9yYXdBbW91bnQJAQNmZWUABAdfYW1vdW50CQBlAgUKX3Jhd0Ftb3VudAUJZmVlQW1vdW50BA0kdDAzNDE0OTM0MzAxCQELZ2V0UG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwMzQxNDkzNDMwMQJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDAzNDE0OTM0MzAxAl8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDM0MTQ5MzQzMDECXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMzQxNDkzNDMwMQJfNAQNaXNOZXdQb3NpdGlvbgkAAAIFD29sZFBvc2l0aW9uU2l6ZQAABA9pc1NhbWVEaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAAACBQpfZGlyZWN0aW9uBQhESVJfTE9ORwkAAAIFCl9kaXJlY3Rpb24FCURJUl9TSE9SVAQOZXhwYW5kRXhpc3RpbmcDCQEBIQEFDWlzTmV3UG9zaXRpb24FD2lzU2FtZURpcmVjdGlvbgcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEDSR0MDM0NTkwMzY5NzkDAwUNaXNOZXdQb3NpdGlvbgYFDmV4cGFuZEV4aXN0aW5nBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDAzNTAxNDM1MjIwCQEJc3dhcElucHV0AgUFaXNBZGQFDG9wZW5Ob3Rpb25hbAQVYW1vdW50QmFzZUFzc2V0Qm91Z2h0CAUNJHQwMzUwMTQzNTIyMAJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDM1MDE0MzUyMjACXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDM1MDE0MzUyMjACXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAzNTAxNDM1MjIwAl80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDM1MDE0MzUyMjACXzUDAwkBAiE9AgUTX21pbkJhc2VBc3NldEFtb3VudAAACQBmAgUTX21pbkJhc2VBc3NldEFtb3VudAkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAcJAAIBCQCsAgIJAKwCAgkArAICAg1MaW1pdCBlcnJvcjogCQCkAwEJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQCAyA8IAkApAMBBRNfbWluQmFzZUFzc2V0QW1vdW50BA9uZXdQb3NpdGlvblNpemUJAGQCBQ9vbGRQb3NpdGlvblNpemUFFWFtb3VudEJhc2VBc3NldEJvdWdodAQZaW5jcmVhc2VNYXJnaW5SZXF1aXJlbWVudAkBBGRpdmQCBQxvcGVuTm90aW9uYWwFCV9sZXZlcmFnZQQNJHQwMzU2MDEzNTg0MAkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgUZaW5jcmVhc2VNYXJnaW5SZXF1aXJlbWVudAQMcmVtYWluTWFyZ2luCAUNJHQwMzU2MDEzNTg0MAJfMQQCeDEIBQ0kdDAzNTYwMTM1ODQwAl8yBAJ4MggFDSR0MDM1NjAxMzU4NDACXzMJAJ0KCwUPbmV3UG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4JAGQCBRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgkAZAIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFDG9wZW5Ob3Rpb25hbAkAZAIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AAAJAGQCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQAAAQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwMzY2NzIzNjc4OAkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgkApQgBCAUBaQZjYWxsZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDM2NjcyMzY3ODgCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDAzNjY3MjM2Nzg4Al8yAwkAZgIFE29sZFBvc2l0aW9uTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAkAAgECLlVzZSBkZWNyZWFzZVBvc2l0aW9uIHRvIGRlY3JlYXNlIHBvc2l0aW9uIHNpemUJAAIBAhRDbG9zZSBwb3NpdGlvbiBmaXJzdAQPbmV3UG9zaXRpb25TaXplCAUNJHQwMzQ1OTAzNjk3OQJfMQQXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4IBQ0kdDAzNDU5MDM2OTc5Al8yBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDM0NTkwMzY5NzkCXzMEFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCAUNJHQwMzQ1OTAzNjk3OQJfNAQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMzQ1OTAzNjk3OQJfNQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDM0NTkwMzY5NzkCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAzNDU5MDM2OTc5Al83BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDM0NTkwMzY5NzkCXzgEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDAzNDU5MDM2OTc5Al85BA50b3RhbExvbmdBZnRlcggFDSR0MDM0NTkwMzY5NzkDXzEwBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDAzNDU5MDM2OTc5A18xMQQMZmVlVG9TdGFrZXJzCQBpAgUJZmVlQW1vdW50AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUJZmVlQW1vdW50BQxmZWVUb1N0YWtlcnMEBXN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDmxvY2tOZXV0cmlub1NQCQDMCAIJAKUIAQkBDnN0YWtpbmdBZGRyZXNzAAkAzAgCBQhBTExfRkVFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBEGluc3VyYW5jZUFkZHJlc3MAAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUOZmVlVG9JbnN1cmFuY2UFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBAlub3RpZnlGZWUJAPwHBAkBDG1pbmVyQWRkcmVzcwACCm5vdGlmeUZlZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBQlub3RpZnlGZWUFCW5vdGlmeUZlZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9uZXdQb3NpdGlvblNpemUFF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25MYXRlc3RDUEYJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJYWRkTWFyZ2luAAQKX3Jhd0Ftb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQIcSW52YWxpZCBhZGRNYXJnaW4gcGFyYW1ldGVycwQJZmVlQW1vdW50CQEEbXVsZAIFCl9yYXdBbW91bnQJAQNmZWUABAdfYW1vdW50CQBlAgUKX3Jhd0Ftb3VudAUJZmVlQW1vdW50BA0kdDAzODUzNTM4Njg3CQELZ2V0UG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwMzg1MzUzODY4NwJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDAzODUzNTM4Njg3Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDM4NTM1Mzg2ODcCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMzg1MzUzODY4NwJfNAQMZmVlVG9TdGFrZXJzCQBpAgUJZmVlQW1vdW50AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUJZmVlQW1vdW50BQxmZWVUb1N0YWtlcnMEBXN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDmxvY2tOZXV0cmlub1NQCQDMCAIJAKUIAQkBDnN0YWtpbmdBZGRyZXNzAAkAzAgCBQhBTExfRkVFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBEGluc3VyYW5jZUFkZHJlc3MAAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUOZmVlVG9JbnN1cmFuY2UFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBAlub3RpZnlGZWUJAPwHBAkBDG1pbmVyQWRkcmVzcwACCm5vdGlmeUZlZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBQlub3RpZnlGZWUFCW5vdGlmeUZlZQkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9vbGRQb3NpdGlvblNpemUJAGQCBRFvbGRQb3NpdGlvbk1hcmdpbgUHX2Ftb3VudAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMcmVtb3ZlTWFyZ2luAQdfYW1vdW50AwMDAwkAZwIAAAUHX2Ftb3VudAYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQIfSW52YWxpZCByZW1vdmVNYXJnaW4gcGFyYW1ldGVycwQNJHQwMzk3MzYzOTg4OAkBC2dldFBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDM5NzM2Mzk4ODgCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwMzk3MzYzOTg4OAJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAzOTczNjM5ODg4Al8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDM5NzM2Mzk4ODgCXzQEC21hcmdpbkRlbHRhCQEBLQEFB19hbW91bnQEDSR0MDM5OTI1NDAxMDQJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC21hcmdpbkRlbHRhBAxyZW1haW5NYXJnaW4IBQ0kdDAzOTkyNTQwMTA0Al8xBAdiYWREZWJ0CAUNJHQwMzk5MjU0MDEwNAJfMgMJAQIhPQIFB2JhZERlYnQAAAkAAgECHUludmFsaWQgcmVtb3ZlZCBtYXJnaW4gYW1vdW50BAttYXJnaW5SYXRpbwkBD2NhbGNNYXJnaW5SYXRpbwMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwDCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwULbWFyZ2luUmF0aW8JAQ9pbml0TWFyZ2luUmF0aW8ABgkAAgEJAKwCAgkArAICCQCsAgICGVRvbyBtdWNoIG1hcmdpbiByZW1vdmVkOiAJAKQDAQULbWFyZ2luUmF0aW8CAyA8IAkApAMBCQEPaW5pdE1hcmdpblJhdGlvAAQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCBQdfYW1vdW50CQDMCAIJANgEAQkBCnF1b3RlQXNzZXQABQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQkApQgBCAUBaQZjYWxsZXIFD29sZFBvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luBRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9vbGRQb3NpdGlvblNpemUJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUHX2Ftb3VudAkBDXVwZGF0ZUJhbGFuY2UBCQBlAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jbG9zZVBvc2l0aW9uAAMDAwkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBAiBJbnZhbGlkIGNsb3NlUG9zaXRpb24gcGFyYW1ldGVycwQNJHQwNDEyMDA0MTU4NAkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBAJ4MQgFDSR0MDQxMjAwNDE1ODQCXzEED3Bvc2l0aW9uQmFkRGVidAgFDSR0MDQxMjAwNDE1ODQCXzIEC3JlYWxpemVkUG5sCAUNJHQwNDEyMDA0MTU4NAJfMwQNbWFyZ2luVG9WYXVsdAgFDSR0MDQxMjAwNDE1ODQCXzQEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0MTIwMDQxNTg0Al81BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0MTIwMDQxNTg0Al82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNDEyMDA0MTU4NAJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA0MTIwMDQxNTg0Al84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNDEyMDA0MTU4NAJfOQQCeDIIBQ0kdDA0MTIwMDQxNTg0A18xMAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA0MTIwMDQxNTg0A18xMQQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNDEyMDA0MTU4NANfMTIDCQBmAgUPcG9zaXRpb25CYWREZWJ0AAAJAAIBAiZVbmFibGUgdG8gY2xvc2UgcG9zaXRpb24gd2l0aCBiYWQgZGVidAQOd2l0aGRyYXdBbW91bnQJAQNhYnMBBQ1tYXJnaW5Ub1ZhdWx0BAphbW1CYWxhbmNlCQBlAgkBCGNiYWxhbmNlAAUOd2l0aGRyYXdBbW91bnQEDSR0MDQxNzkzNDE5MzUDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1hbW1OZXdCYWxhbmNlCAUNJHQwNDE3OTM0MTkzNQJfMQQQZ2V0RnJvbUluc3VyYW5jZQgFDSR0MDQxNzkzNDE5MzUCXzIEAXgDCQBmAgUQZ2V0RnJvbUluc3VyYW5jZQAABBF3aXRoZHJhd0luc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACCHdpdGhkcmF3CQDMCAIFEGdldEZyb21JbnN1cmFuY2UFA25pbAUDbmlsAwkAAAIFEXdpdGhkcmF3SW5zdXJhbmNlBRF3aXRoZHJhd0luc3VyYW5jZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUBeAUBeAQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCCQBlAgUOd2l0aGRyYXdBbW91bnQFEGdldEZyb21JbnN1cmFuY2UJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkBDmRlbGV0ZVBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFDndpdGhkcmF3QW1vdW50CQENdXBkYXRlQmFsYW5jZQEFDWFtbU5ld0JhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJbGlxdWlkYXRlAQdfdHJhZGVyBA9zcG90TWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBAttYXJnaW5SYXRpbwMJARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQRb3JhY2xlTWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgURUE5MX09QVElPTl9PUkFDTEUJAQR2bWF4AgUPc3BvdE1hcmdpblJhdGlvBRFvcmFjbGVNYXJnaW5SYXRpbwUPc3BvdE1hcmdpblJhdGlvAwMDAwkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMFC21hcmdpblJhdGlvCQEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAHBgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEFB190cmFkZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgECE1VuYWJsZSB0byBsaXF1aWRhdGUEDSR0MDQzNjI1NDQwNDEJARVpbnRlcm5hbENsb3NlUG9zaXRpb24BBQdfdHJhZGVyBAJ4MQgFDSR0MDQzNjI1NDQwNDECXzEEB2JhZERlYnQIBQ0kdDA0MzYyNTQ0MDQxAl8yBAJ4MggFDSR0MDQzNjI1NDQwNDECXzMEAngzCAUNJHQwNDM2MjU0NDA0MQJfNAQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDQzNjI1NDQwNDECXzUEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDQzNjI1NDQwNDECXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA0MzYyNTQ0MDQxAl83BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDQzNjI1NDQwNDECXzgEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDA0MzYyNTQ0MDQxAl85BBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUNJHQwNDM2MjU0NDA0MQNfMTAEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNDM2MjU0NDA0MQNfMTEED3RvdGFsU2hvcnRBZnRlcggFDSR0MDQzNjI1NDQwNDEDXzEyBBJsaXF1aWRhdGlvblBlbmFsdHkJAQRtdWxkAgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ABA9mZWVUb0xpcXVpZGF0b3IJAGkCBRJsaXF1aWRhdGlvblBlbmFsdHkAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBRJsaXF1aWRhdGlvblBlbmFsdHkFD2ZlZVRvTGlxdWlkYXRvcgQKYW1tQmFsYW5jZQkAZQIJAQhjYmFsYW5jZQAFEmxpcXVpZGF0aW9uUGVuYWx0eQQNJHQwNDQ0Mzk0NDU3NAMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDW5ld0FtbUJhbGFuY2UIBQ0kdDA0NDQzOTQ0NTc0Al8xBBF0YWtlRnJvbUluc3VyYW5jZQgFDSR0MDQ0NDM5NDQ1NzQCXzIEAXgDCQBmAgURdGFrZUZyb21JbnN1cmFuY2UAAAQRd2l0aGRyYXdJbnN1cmFuY2UJAPwHBAkBEGluc3VyYW5jZUFkZHJlc3MAAgh3aXRoZHJhdwkAzAgCBRF0YWtlRnJvbUluc3VyYW5jZQUDbmlsBQNuaWwDCQAAAgURd2l0aGRyYXdJbnN1cmFuY2UFEXdpdGhkcmF3SW5zdXJhbmNlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQF4BQF4BAd1bnN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDnVubG9ja05ldXRyaW5vCQDMCAIJAGUCBRJsaXF1aWRhdGlvblBlbmFsdHkFEXRha2VGcm9tSW5zdXJhbmNlCQDMCAIJANgEAQkBCnF1b3RlQXNzZXQABQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBBBkZXBvc2l0SW5zdXJhbmNlCQD8BwQJARBpbnN1cmFuY2VBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFDmZlZVRvSW5zdXJhbmNlBQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ5kZWxldGVQb3NpdGlvbgEFB190cmFkZXIJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFD2ZlZVRvTGlxdWlkYXRvcgkBDXVwZGF0ZUJhbGFuY2UBBQ1uZXdBbW1CYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnBheUZ1bmRpbmcABBVmdW5kaW5nQmxvY2tUaW1lc3RhbXAJARluZXh0RnVuZGluZ0Jsb2NrVGltZXN0YW1wAAMDAwkAZgIFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXAGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgEJAKwCAgkArAICCQCsAgICIUludmFsaWQgZnVuZGluZyBibG9jayB0aW1lc3RhbXA6IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAIDIDwgCQCkAwEFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAQPdW5kZXJseWluZ1ByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQNc3BvdFR3YXBQcmljZQkBEGdldFR3YXBTcG90UHJpY2UABAdwcmVtaXVtCQBlAgUNc3BvdFR3YXBQcmljZQUPdW5kZXJseWluZ1ByaWNlBA0kdDA0NjA2ODQ3NDAzAwMJAAACCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAYJAAACCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAAACQCUCgIAAAAAAwkAZgIAAAUHcHJlbWl1bQQUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBQdwcmVtaXVtCQEUZnVuZGluZ1BlcmlvZERlY2ltYWwABQdPTkVfREFZBBNsb25nUHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24JARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJAJQKAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FE2xvbmdQcmVtaXVtRnJhY3Rpb24EE2xvbmdQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBQdwcmVtaXVtCQEUZnVuZGluZ1BlcmlvZERlY2ltYWwABQdPTkVfREFZBBRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFE2xvbmdQcmVtaXVtRnJhY3Rpb24JARV0b3RhbExvbmdQb3NpdGlvblNpemUACQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJAJQKAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FE2xvbmdQcmVtaXVtRnJhY3Rpb24EFHNob3J0UHJlbWl1bUZyYWN0aW9uCAUNJHQwNDYwNjg0NzQwMwJfMQQTbG9uZ1ByZW1pdW1GcmFjdGlvbggFDSR0MDQ2MDY4NDc0MDMCXzIJAQ11cGRhdGVGdW5kaW5nBQkAZAIFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAkBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAZAIJASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAFE2xvbmdQcmVtaXVtRnJhY3Rpb24JAGQCCQEkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAUUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlCQEEZGl2ZAIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UBaQEFdl9nZXQBB190cmFkZXIEDSR0MDQ3Nzc4NDc4MzEJARVpbnRlcm5hbENsb3NlUG9zaXRpb24BBQdfdHJhZGVyBAJ4MQgFDSR0MDQ3Nzc4NDc4MzECXzEEAngyCAUNJHQwNDc3Nzg0NzgzMQJfMgQCeDMIBQ0kdDA0Nzc3ODQ3ODMxAl8zBAJ4NAgFDSR0MDQ3Nzc4NDc4MzECXzQJAAIBCQCsAgIJAKwCAgkArAICCQEBcwEFAngyCQEBcwEFAngzCQEBcwEFAng0CQEBcwEJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIBaQEndmlld19jYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50AQdfdHJhZGVyBA0kdDA0Nzk3ODQ4MDg5CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDA0Nzk3ODQ4MDg5Al8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDQ3OTc4NDgwODkCXzIEA3BvbggFDSR0MDQ3OTc4NDgwODkCXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNDc5Nzg0ODA4OQJfNAQNJHQwNDgwOTQ0ODE5NQkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBBBwb3NpdGlvbk5vdGlvbmFsCAUNJHQwNDgwOTQ0ODE5NQJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDQ4MDk0NDgxOTUCXzIEDSR0MDQ4MjAwNDgzODIJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDQ4MjAwNDgzODICXzEEB2JhZERlYnQIBQ0kdDA0ODIwMDQ4MzgyAl8yBA5mdW5kaW5nUGF5bWVudAgFDSR0MDQ4MjAwNDgzODICXzMJAAIBCQCsAgIJAKwCAgkBAXMBBQxyZW1haW5NYXJnaW4JAQFzAQUOZnVuZGluZ1BheW1lbnQJAQFzAQkBDmdldE1hcmdpblJhdGlvAQUHX3RyYWRlcgFpAQ5mb3JjZU1vdmVBc3NldAIHX3RyYWRlcgdfYW1vdW50AwMJAQIhPQIJAKcIAQkBDmFkbWluUHVibGljS2V5AAgFAWkGY2FsbGVyBgkAZgIAAAUHX2Ftb3VudAkAAgECIUludmFsaWQgZm9yY2VNb3ZlQXNzZXQgcGFyYW1ldGVycwQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCBQdfYW1vdW50CQDMCAIJANgEAQkBCnF1b3RlQXNzZXQABQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQDOCAIJAQh3aXRoZHJhdwIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB190cmFkZXIFB19hbW91bnQJAQ11cGRhdGVCYWxhbmNlAQkAZQIJAQhjYmFsYW5jZQAFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQEOYWRtaW5QdWJsaWNLZXkASsfwIg==", "height": 2180165, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Hyg4k1nHU9kVZGkZrZHmnTTHyWSpT53YFdPCc1c9rtqZ Next: 7hfbd4x2SSk2vaXCZj6dWmxfaGkTUnKeaALkGDn6qjXC Diff:
OldNewDifferences
310310 let bE = aR()
311311 let bF = aS()
312312 let bG = ak(bE, bF)
313- let bH = am(bz, bG)
313+ let bH = ak(bz, bG)
314314 let aN = am(bE, bF)
315315 let bI = if (by)
316316 then (bE + bz)
323323 let bM = ak((bH - bK), bH)
324324 let bN = bd()
325325 if ((bM > bN))
326- then throw(((((((((((((("Price impact " + toString(bM)) + " > max price impact ") + toString(bN)) + " before quote asset: ") + toString(bE)) + " before base asset: ") + toString(bF)) + " quote asset amount to xchange: ") + toString(bz)) + " idel price buy: ") + toString(bH)) + " real price buy: ") + toString(bK)))
326+ then throw(((((((((((((("Price impact " + toString(bM)) + " > max price impact ") + toString(bN)) + " before quote asset: ") + toString(bE)) + " before base asset: ") + toString(bF)) + " quote asset amount to xchange: ") + toString(bz)) + " ideal price buy: ") + toString(bH)) + " real price buy: ") + toString(bK)))
327327 else {
328328 let bO = bx(by, bz, bK)
329329 let bP = bO._1
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_ora_key"
55
66 let b = "k_ora_block_key"
77
88 let c = "k_ora"
99
1010 let d = "k_balance"
1111
1212 let e = "k_positionSize"
1313
1414 let f = "k_positionMargin"
1515
1616 let g = "k_positionOpenNotional"
1717
1818 let h = "k_positionFraction"
1919
2020 let i = "k_initialized"
2121
2222 let j = "k_paused"
2323
2424 let k = "k_fee"
2525
2626 let l = "k_fundingPeriod"
2727
2828 let m = "k_initMarginRatio"
2929
3030 let n = "k_mmr"
3131
3232 let o = "k_liquidationFeeRatio"
3333
3434 let p = "k_spreadLimit"
3535
3636 let q = "k_maxPriceImpact"
3737
3838 let r = "k_lastDataStr"
3939
4040 let s = "k_lastMinuteId"
4141
4242 let t = "k_twapDataLastCumulativePrice"
4343
4444 let u = "k_twapDataLastPrice"
4545
4646 let v = "k_twapDataPreviousMinuteId"
4747
4848 let w = "k_latestLongPremiumFraction"
4949
5050 let x = "k_latestShortPremiumFraction"
5151
5252 let y = "k_nextFundingBlockMinTimestamp"
5353
5454 let z = "k_longFundingRate"
5555
5656 let A = "k_shortFundingRate"
5757
5858 let B = "k_qtAstR"
5959
6060 let C = "k_bsAstR"
6161
6262 let D = "k_totalPositionSize"
6363
6464 let E = "k_totalLongPositionSize"
6565
6666 let F = "k_totalShortPositionSize"
6767
6868 let G = "k_cumulativeNotional"
6969
7070 let H = "k_openInterestNotional"
7171
7272 let I = "k_coordinatorAddress"
7373
7474 let J = "k_insurance_address"
7575
7676 let K = "k_admin_address"
7777
7878 let L = "k_admin_public_key"
7979
8080 let M = "k_quote_asset"
8181
8282 let N = "k_quote_staking"
8383
8484 let O = "k_staking_address"
8585
8686 let P = "k_miner_address"
8787
8888 func Q () = valueOrErrorMessage(addressFromString(getStringValue(this, I)), "Coordinator not set")
8989
9090
9191 func R () = addressFromString(getStringValue(Q(), K))
9292
9393
9494 func S () = fromBase58String(getStringValue(Q(), L))
9595
9696
9797 func T () = fromBase58String(getStringValue(Q(), M))
9898
9999
100100 func U () = valueOrErrorMessage(addressFromString(getStringValue(Q(), N)), "Quote asset staking not set")
101101
102102
103103 func V () = valueOrErrorMessage(addressFromString(getStringValue(Q(), O)), "Insurance not set")
104104
105105
106106 func W () = valueOrErrorMessage(addressFromString(getStringValue(Q(), J)), "Insurance not set")
107107
108108
109109 func X () = valueOrErrorMessage(addressFromString(getStringValue(Q(), P)), "Insurance not set")
110110
111111
112112 let Y = 1
113113
114114 let Z = 2
115115
116116 let aa = 15
117117
118118 let ab = 15
119119
120120 let ac = 1000
121121
122122 let ad = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
123123
124124 let ae = (86400 * ad)
125125
126126 let af = 100
127127
128128 let ag = 1
129129
130130 let ah = 2
131131
132132 func ai (aj) = (toString(aj) + ",")
133133
134134
135135 func ak (aj,al) = fraction(aj, ad, al, HALFEVEN)
136136
137137
138138 func am (aj,al) = fraction(aj, al, ad, HALFEVEN)
139139
140140
141141 func an (aj) = if ((aj > 0))
142142 then aj
143143 else -(aj)
144144
145145
146146 func ao (aj,al) = if ((aj >= al))
147147 then aj
148148 else al
149149
150150
151151 func ap (aq,ar) = ((aq + "_") + ar)
152152
153153
154154 func as (at) = {
155155 func au (av,aw) = ((av + aw) + ",")
156156
157157 let ax = {
158158 let ay = at
159159 let az = size(ay)
160160 let aA = ""
161161 func aB (aC,aD) = if ((aD >= az))
162162 then aC
163163 else au(aC, ay[aD])
164164
165165 func aE (aC,aD) = if ((aD >= az))
166166 then aC
167167 else throw("List size exceeds 20")
168168
169169 aE(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
170170 }
171171 let aF = dropRight(ax, 1)
172172 let aG = if ((take(aF, 1) == ","))
173173 then drop(aF, 1)
174174 else aF
175175 aG
176176 }
177177
178178
179179 func aH (aI) = split(aI, ",")
180180
181181
182182 func aJ (at,aK,aL) = if ((size(at) > aK))
183183 then (removeByIndex(at, 0) :+ aL)
184184 else (at :+ aL)
185185
186186
187187 func aM (aN) = valueOrErrorMessage(getInteger(this, aN), ("no value for " + aN))
188188
189189
190190 func aO () = aM(d)
191191
192192
193193 func aP () = aM(k)
194194
195195
196196 func aQ () = aM(m)
197197
198198
199199 func aR () = aM(B)
200200
201201
202202 func aS () = aM(C)
203203
204204
205205 func aT () = aM(D)
206206
207207
208208 func aU () = aM(G)
209209
210210
211211 func aV () = aM(H)
212212
213213
214214 func aW () = aM(y)
215215
216216
217217 func aX () = aM(l)
218218
219219
220220 func aY () = (aX() * ad)
221221
222222
223223 func aZ () = (aX() * ac)
224224
225225
226226 func ba () = aM(n)
227227
228228
229229 func bb () = aM(o)
230230
231231
232232 func bc () = aM(p)
233233
234234
235235 func bd () = aM(q)
236236
237237
238238 func be () = aM(w)
239239
240240
241241 func bf () = aM(x)
242242
243243
244244 func bg () = aM(F)
245245
246246
247247 func bh () = aM(E)
248248
249249
250250 func bi (bj,bk,bl) = {
251251 let bm = (bj - bk)
252252 if (if (bl)
253253 then (0 > bm)
254254 else false)
255255 then throw("Invalid margin")
256256 else if (if (!(bl))
257257 then (bm >= 0)
258258 else false)
259259 then throw("Invalid margin")
260260 else true
261261 }
262262
263263
264264 func bn (bo) = if ((bo == 0))
265265 then throw("Should not be called with _positionSize == 0")
266266 else if ((bo > 0))
267267 then be()
268268 else bf()
269269
270270
271271 func bp (bq) = {
272272 let br = getInteger(this, ap(e, bq))
273273 let bs = br
274274 if ($isInstanceOf(bs, "Int"))
275275 then {
276276 let bt = bs
277277 $Tuple4(bt, getIntegerValue(this, ap(f, bq)), getIntegerValue(this, ap(g, bq)), getIntegerValue(this, ap(h, bq)))
278278 }
279279 else $Tuple4(0, 0, 0, 0)
280280 }
281281
282282
283283 func bu (bq) = if ((bp(bq)._1 == 0))
284284 then throw("No open position")
285285 else true
286286
287287
288288 func bv () = valueOrElse(getBoolean(this, i), false)
289289
290290
291291 func bw () = valueOrElse(getBoolean(this, j), false)
292292
293293
294294 func bx (by,bz,bA) = if (by)
295295 then {
296296 let bB = (aS() - bA)
297297 if ((0 >= bB))
298298 then throw("Tx lead to base asset reserve <= 0, revert")
299299 else $Tuple4((aR() + bz), bB, (aT() + bA), (aU() + bz))
300300 }
301301 else {
302302 let bC = (aR() - bz)
303303 if ((0 >= bC))
304304 then throw("Tx lead to base quote reserve <= 0, revert")
305305 else $Tuple4(bC, (aS() + bA), (aT() - bA), (aU() - bz))
306306 }
307307
308308
309309 func bD (by,bz) = {
310310 let bE = aR()
311311 let bF = aS()
312312 let bG = ak(bE, bF)
313- let bH = am(bz, bG)
313+ let bH = ak(bz, bG)
314314 let aN = am(bE, bF)
315315 let bI = if (by)
316316 then (bE + bz)
317317 else (bE - bz)
318318 let bJ = ak(aN, bI)
319319 let bK = an((bJ - bF))
320320 let bL = if (by)
321321 then bK
322322 else -(bK)
323323 let bM = ak((bH - bK), bH)
324324 let bN = bd()
325325 if ((bM > bN))
326- then throw(((((((((((((("Price impact " + toString(bM)) + " > max price impact ") + toString(bN)) + " before quote asset: ") + toString(bE)) + " before base asset: ") + toString(bF)) + " quote asset amount to xchange: ") + toString(bz)) + " idel price buy: ") + toString(bH)) + " real price buy: ") + toString(bK)))
326+ then throw(((((((((((((("Price impact " + toString(bM)) + " > max price impact ") + toString(bN)) + " before quote asset: ") + toString(bE)) + " before base asset: ") + toString(bF)) + " quote asset amount to xchange: ") + toString(bz)) + " ideal price buy: ") + toString(bH)) + " real price buy: ") + toString(bK)))
327327 else {
328328 let bO = bx(by, bz, bK)
329329 let bP = bO._1
330330 let bQ = bO._2
331331 let bR = bO._3
332332 let bS = bO._4
333333 $Tuple5(bL, bP, bQ, bR, bS)
334334 }
335335 }
336336
337337
338338 func bT (bU,bV,bW,bX) = {
339339 let bY = if ((bU != 0))
340340 then {
341341 let bZ = bn(bU)
342342 am((bZ - bW), bU)
343343 }
344344 else 0
345345 let ca = ((bX - bY) + bV)
346346 let cb = if ((0 > ca))
347347 then $Tuple2(0, an(ca))
348348 else $Tuple2(an(ca), 0)
349349 let cc = cb._1
350350 let cd = cb._2
351351 $Tuple3(cc, cd, bY)
352352 }
353353
354354
355355 func ce (by,bA) = {
356356 let cf = aR()
357357 let cg = aS()
358358 if ((bA == 0))
359359 then throw("Invalid base asset amount")
360360 else {
361361 let aN = am(cf, cg)
362362 let ch = if (by)
363363 then (cg + bA)
364364 else (cg - bA)
365365 let ci = ak(aN, ch)
366366 let cj = an((ci - cf))
367367 let ck = bx(!(by), cj, bA)
368368 let bP = ck._1
369369 let bQ = ck._2
370370 let bR = ck._3
371371 let bS = ck._4
372372 $Tuple7(cj, bP, bQ, bR, bS, (bh() - (if (by)
373373 then an(bA)
374374 else 0)), (bg() - (if (!(by))
375375 then an(bA)
376376 else 0)))
377377 }
378378 }
379379
380380
381381 func cl () = {
382382 let cm = valueOrErrorMessage(addressFromString(getStringValue(this, c)), "")
383383 let cn = getStringValue(this, a)
384384 let co = getStringValue(this, b)
385385 let cp = valueOrErrorMessage(getInteger(cm, cn), ((("Can not get oracle price. Oracle: " + toString(cm)) + " key: ") + cn))
386386 cp
387387 }
388388
389389
390390 func cq () = {
391391 let cf = aR()
392392 let cg = aS()
393393 ak(cf, cg)
394394 }
395395
396396
397397 func cr () = {
398398 let cs = cl()
399399 let ct = cq()
400400 (ak(an((cs - ct)), cs) > bc())
401401 }
402402
403403
404404 func cu (bq,cv) = {
405405 let cw = bp(bq)
406406 let bt = cw._1
407407 let cx = cw._2
408408 let cy = cw._3
409409 let cz = cw._4
410410 let cA = an(bt)
411411 if ((cA == 0))
412412 then throw("Invalid position size")
413413 else {
414414 let cB = (0 > bt)
415415 let cC = if ((cv == ag))
416416 then {
417417 let cD = ce(!(cB), cA)
418418 let cE = cD._1
419419 let cF = cD._2
420420 let cG = cD._3
421421 let cH = cD._4
422422 cE
423423 }
424424 else am(cA, cl())
425425 let cI = if (cB)
426426 then (cy - cC)
427427 else (cC - cy)
428428 $Tuple2(cC, cI)
429429 }
430430 }
431431
432432
433433 func cJ (cK,cL,cM) = ak((cK - cL), cM)
434434
435435
436436 func cN (bq,cv) = {
437437 let cO = bp(bq)
438438 let bt = cO._1
439439 let cx = cO._2
440440 let cP = cO._3
441441 let cz = cO._4
442442 let cQ = cu(bq, cv)
443443 let cC = cQ._1
444444 let cI = cQ._2
445445 let cR = bT(bt, cx, cz, cI)
446446 let cc = cR._1
447447 let cd = cR._2
448448 cJ(cc, cd, cC)
449449 }
450450
451451
452452 func cS (bq) = cN(bq, ag)
453453
454454
455455 func cT (bq) = {
456456 let cU = bp(bq)
457457 let bt = cU._1
458458 let cx = cU._2
459459 let cy = cU._3
460460 let cz = cU._4
461461 let cV = cu(bq, ag)
462462 let cF = cV._1
463463 let cI = cV._2
464464 let cW = bT(bt, cx, cz, cI)
465465 let cc = cW._1
466466 let cd = cW._2
467467 let cX = -(bt)
468468 let cY = cI
469469 let cZ = -(cc)
470470 let da = ce((bt > 0), an(bt))
471471 let db = da._1
472472 let bI = da._2
473473 let bJ = da._3
474474 let dc = da._4
475475 let dd = da._5
476476 let de = da._6
477477 let df = da._7
478478 let dg = (aV() - cy)
479479 $Tuple12(cX, cd, cY, cZ, bI, bJ, dc, dd, dg, db, de, df)
480480 }
481481
482482
483483 func dh () = {
484484 let di = ((lastBlock.timestamp / 1000) / 60)
485485 let dj = (di - aa)
486486 let dk = valueOrElse(getString(this, r), "")
487487 let dl = split(dk, ",")
488488 func dm (av,dn) = if ((dj >= parseIntValue(dn)))
489489 then (av :+ parseIntValue(dn))
490490 else av
491491
492492 let do = {
493493 let ay = dl
494494 let az = size(ay)
495495 let aA = nil
496496 func aB (aC,aD) = if ((aD >= az))
497497 then aC
498498 else dm(aC, ay[aD])
499499
500500 func aE (aC,aD) = if ((aD >= az))
501501 then aC
502502 else throw("List size exceeds 20")
503503
504504 aE(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
505505 }
506506 let dp = if ((size(do) > 0))
507507 then max(do)
508508 else parseIntValue(dl[0])
509509 let dq = valueOrElse(getInteger(this, s), 0)
510510 let dr = valueOrElse(getInteger(this, ((t + "_") + toString(dq))), 0)
511511 let ds = valueOrElse(getInteger(this, ((u + "_") + toString(dq))), 0)
512512 let dt = (dr + ((di - dq) * ds))
513513 let du = valueOrElse(getInteger(this, ((t + "_") + toString(dp))), 0)
514514 let dv = valueOrElse(getInteger(this, ((u + "_") + toString(dp))), 0)
515515 let dw = (du + ((dj - dp) * dv))
516516 ((dt - dw) / aa)
517517 }
518518
519519
520520 func dx (dy,dz,dA,dB,dC,dD,dE) = [IntegerEntry(m, dy), IntegerEntry(n, dz), IntegerEntry(o, dA), IntegerEntry(l, dB), IntegerEntry(k, dC), IntegerEntry(p, dD), IntegerEntry(q, dE)]
521521
522522
523523 func dF (dG,dH,dI,dJ,dK) = [IntegerEntry(y, dG), IntegerEntry(w, dH), IntegerEntry(x, dI), IntegerEntry(z, dJ), IntegerEntry(A, dK)]
524524
525525
526526 func dL (ar,dM,dN,dO,bZ) = [IntegerEntry(ap(e, ar), dM), IntegerEntry(ap(f, ar), dN), IntegerEntry(ap(g, ar), dO), IntegerEntry(ap(h, ar), bZ)]
527527
528528
529529 func dP (dQ) = {
530530 let di = ((lastBlock.timestamp / 1000) / 60)
531531 let dR = valueOrElse(getInteger(this, s), 0)
532532 if ((dR > di))
533533 then throw("TWAP out-of-order")
534534 else {
535535 let dq = if ((dR == 0))
536536 then di
537537 else dR
538538 if ((di > dR))
539539 then {
540540 let dS = valueOrElse(getInteger(this, ((t + "_") + toString(dR))), 0)
541541 let dT = valueOrElse(getInteger(this, ((u + "_") + toString(dR))), dQ)
542542 let dU = (dS + ((di - dq) * dT))
543543 let dl = aJ(aH(valueOrElse(getString(this, r), "")), aa, toString(di))
544544 [IntegerEntry(ap(t, toString(di)), dU), IntegerEntry(ap(u, toString(di)), dQ), IntegerEntry(ap(v, toString(di)), dR), IntegerEntry(s, di), StringEntry(r, as(dl))]
545545 }
546546 else {
547547 let dV = valueOrElse(getInteger(this, ap(v, toString(di))), 0)
548548 let dS = valueOrElse(getInteger(this, ap(t, toString(dV))), 0)
549549 let dT = valueOrElse(getInteger(this, ap(u, toString(dV))), dQ)
550550 let dU = (dS + ((di - dV) * dT))
551551 [IntegerEntry(ap(t, toString(di)), dU), IntegerEntry(ap(u, toString(di)), dQ)]
552552 }
553553 }
554554 }
555555
556556
557557 func dW (bE,bF) = [IntegerEntry(B, bE), IntegerEntry(C, bF)]
558558
559559
560560 func dX (bE,bF,dY,dZ,ea,eb,ec) = if (((eb - ec) != dY))
561561 then throw(((((("Invalid AMM state data: " + toString(eb)) + " + ") + toString(ec)) + " != ") + toString(dY)))
562562 else ((dW(bE, bF) ++ [IntegerEntry(D, dY), IntegerEntry(G, dZ), IntegerEntry(H, ea), IntegerEntry(E, eb), IntegerEntry(F, ec)]) ++ dP(ak(bE, bF)))
563563
564564
565565 func ed (ar) = [DeleteEntry(ap(e, ar)), DeleteEntry(ap(f, ar)), DeleteEntry(ap(g, ar)), DeleteEntry(ap(h, ar))]
566566
567567
568568 func ee (ar,ef) = {
569569 let eg = assetBalance(this, T())
570570 if ((ef > eg))
571571 then throw(((("Unable to withdraw " + toString(ef)) + " from contract balance ") + toString(eg)))
572572 else [ScriptTransfer(ar, ef, T())]
573573 }
574574
575575
576576 func eh (ei) = if ((0 > ei))
577577 then throw("Balance")
578578 else [IntegerEntry(d, ei)]
579579
580580
581581 func ej (ei) = [ScriptTransfer(V(), ei, T())]
582582
583583
584584 @Callable(ei)
585585 func pause () = if ((ei.caller != R()))
586586 then throw("Invalid togglePause params")
587587 else [BooleanEntry(j, true)]
588588
589589
590590
591591 @Callable(ei)
592592 func unpause () = if ((ei.caller != R()))
593593 then throw("Invalid togglePause params")
594594 else [BooleanEntry(j, false)]
595595
596596
597597
598598 @Callable(ei)
599599 func addLiquidity (bz) = if (if ((ei.caller != R()))
600600 then true
601601 else (0 >= bz))
602602 then throw("Invalid addLiquidity params")
603603 else {
604604 let bE = aR()
605605 let bF = aS()
606606 let dQ = ak(bE, bF)
607607 let ek = ak(bz, dQ)
608608 let el = (bE + bz)
609609 let em = (bF + ek)
610610 dW(el, em)
611611 }
612612
613613
614614
615615 @Callable(ei)
616616 func removeLiquidity (bz) = if (if ((ei.caller != R()))
617617 then true
618618 else (0 >= bz))
619619 then throw("Invalid removeLiquidity params")
620620 else {
621621 let bE = aR()
622622 let bF = aS()
623623 let dQ = ak(bE, bF)
624624 let en = ak(bz, dQ)
625625 let el = (bE - bz)
626626 let em = (bF - en)
627627 dW(el, em)
628628 }
629629
630630
631631
632632 @Callable(ei)
633633 func changeSettings (dy,dz,dA,dB,dC,dD,dE) = if ((ei.caller != R()))
634634 then throw("Invalid changeSettings params")
635635 else dx(dy, dz, dA, dB, dC, dD, dE)
636636
637637
638638
639639 @Callable(ei)
640640 func initialize (bE,bF,dB,dy,dz,dA,dC,eo,ep,eq,dD,dE) = if (if (if (if (if (if (if (if (if (if ((0 >= bE))
641641 then true
642642 else (0 >= bF))
643643 then true
644644 else (0 >= dB))
645645 then true
646646 else (0 >= dy))
647647 then true
648648 else (0 >= dz))
649649 then true
650650 else (0 >= dA))
651651 then true
652652 else (0 >= dC))
653653 then true
654654 else (0 >= dD))
655655 then true
656656 else (0 >= dE))
657657 then true
658658 else bv())
659659 then throw("Invalid initialize parameters")
660660 else ((((dX(bE, bF, 0, 0, 0, 0, 0) ++ dx(dy, dz, dA, dB, dC, dD, dE)) ++ dF((lastBlock.timestamp + dB), 0, 0, 0, 0)) ++ eh(0)) ++ [BooleanEntry(i, true), StringEntry(c, eo), StringEntry(a, ep), StringEntry(I, eq)])
661661
662662
663663
664664 @Callable(ei)
665665 func decreasePosition (ef,er,es) = if (if (if (if (if ((0 >= ef))
666666 then true
667667 else !(bv()))
668668 then true
669669 else !(bi(ak(ad, er), aQ(), true)))
670670 then true
671671 else !(bu(toString(ei.caller))))
672672 then true
673673 else bw())
674674 then throw("Invalid decreasePosition parameters")
675675 else {
676676 let et = bp(toString(ei.caller))
677677 let eu = et._1
678678 let ev = et._2
679679 let ew = et._3
680680 let ex = et._4
681681 let ey = if ((eu > 0))
682682 then Z
683683 else Y
684684 let ez = (ey == Y)
685685 let eA = am(ef, er)
686686 let eB = cu(toString(ei.caller), ag)
687687 let eC = eB._1
688688 let cI = eB._2
689689 let eD = if ((eC > eA))
690690 then {
691691 let eE = bD(ez, eA)
692692 let cX = eE._1
693693 let bI = eE._2
694694 let bJ = eE._3
695695 let dc = eE._4
696696 let dd = eE._5
697697 let eF = an(cX)
698698 if (if ((es != 0))
699699 then (es > eF)
700700 else false)
701701 then throw(((("Too little base asset exchanged, got " + toString(eF)) + " expected ") + toString(es)))
702702 else {
703703 let cY = ak(am(cI, eF), an(eu))
704704 let eG = bT(eu, ev, ex, cY)
705705 let cc = eG._1
706706 let cd = eG._2
707707 let bY = eG._3
708708 let db = eA
709709 let eH = (cI - cY)
710710 let eI = if ((eu > 0))
711711 then ((eC - db) - eH)
712712 else ((eH + eC) - db)
713713 let eJ = (eu + cX)
714714 $Tuple11(eJ, cc, an(eI), bn(eJ), bJ, bI, dc, dd, (aV() - eA), (bh() - (if ((eJ > 0))
715715 then an(cX)
716716 else 0)), (bg() - (if ((0 > eJ))
717717 then an(cX)
718718 else 0)))
719719 }
720720 }
721721 else throw("Close position first")
722722 let eJ = eD._1
723723 let eK = eD._2
724724 let eL = eD._3
725725 let eM = eD._4
726726 let bJ = eD._5
727727 let bI = eD._6
728728 let dc = eD._7
729729 let dd = eD._8
730730 let dg = eD._9
731731 let de = eD._10
732732 let df = eD._11
733733 let eN = invoke(X(), "notifyNotional", [toString(ei.caller), eL], nil)
734734 if ((eN == eN))
735735 then (dL(toString(ei.caller), eJ, eK, eL, eM) ++ dX(bI, bJ, dc, dd, dg, de, df))
736736 else throw("Strict value is not equal to itself.")
737737 }
738738
739739
740740
741741 @Callable(ei)
742742 func increasePosition (ey,er,es) = {
743743 let eO = ei.payments[0].amount
744744 if (if (if (if (if (if (if ((ey != Y))
745745 then (ey != Z)
746746 else false)
747747 then true
748748 else (0 >= eO))
749749 then true
750750 else !(bv()))
751751 then true
752752 else (ei.payments[0].assetId != T()))
753753 then true
754754 else !(bi(ak(ad, er), aQ(), true)))
755755 then true
756756 else bw())
757757 then throw("Invalid increasePosition parameters")
758758 else {
759759 let eP = am(eO, aP())
760760 let ef = (eO - eP)
761761 let eQ = bp(toString(ei.caller))
762762 let eu = eQ._1
763763 let ev = eQ._2
764764 let ew = eQ._3
765765 let ex = eQ._4
766766 let eR = (eu == 0)
767767 let eS = if ((eu > 0))
768768 then (ey == Y)
769769 else (ey == Z)
770770 let eT = if (!(eR))
771771 then eS
772772 else false
773773 let ez = (ey == Y)
774774 let eU = if (if (eR)
775775 then true
776776 else eT)
777777 then {
778778 let eA = am(ef, er)
779779 let eV = bD(ez, eA)
780780 let bL = eV._1
781781 let bI = eV._2
782782 let bJ = eV._3
783783 let dc = eV._4
784784 let dd = eV._5
785785 if (if ((es != 0))
786786 then (es > an(bL))
787787 else false)
788788 then throw(((("Limit error: " + toString(an(bL))) + " < ") + toString(es)))
789789 else {
790790 let eJ = (eu + bL)
791791 let eW = ak(eA, er)
792792 let eX = bT(eu, ev, ex, eW)
793793 let cc = eX._1
794794 let cF = eX._2
795795 let cG = eX._3
796796 $Tuple11(eJ, cc, (ew + eA), bn(eJ), bJ, bI, dc, dd, (aV() + eA), (bh() + (if ((eJ > 0))
797797 then an(bL)
798798 else 0)), (bg() + (if ((0 > eJ))
799799 then an(bL)
800800 else 0)))
801801 }
802802 }
803803 else {
804804 let eA = am(ef, er)
805805 let eY = cu(toString(ei.caller), ag)
806806 let eC = eY._1
807807 let cI = eY._2
808808 if ((eC > eA))
809809 then throw("Use decreasePosition to decrease position size")
810810 else throw("Close position first")
811811 }
812812 let eJ = eU._1
813813 let eK = eU._2
814814 let eL = eU._3
815815 let eM = eU._4
816816 let bJ = eU._5
817817 let bI = eU._6
818818 let dc = eU._7
819819 let dd = eU._8
820820 let dg = eU._9
821821 let de = eU._10
822822 let df = eU._11
823823 let eZ = (eP / 2)
824824 let fa = (eP - eZ)
825825 let fb = invoke(U(), "lockNeutrinoSP", [toString(V()), af], [AttachedPayment(T(), ef)])
826826 if ((fb == fb))
827827 then {
828828 let fc = invoke(W(), "deposit", nil, [AttachedPayment(T(), fa)])
829829 if ((fc == fc))
830830 then {
831831 let fd = invoke(X(), "notifyFees", [toString(ei.caller), eP], nil)
832832 if ((fd == fd))
833833 then {
834834 let eN = invoke(X(), "notifyNotional", [toString(ei.caller), eL], nil)
835835 if ((eN == eN))
836836 then (((dL(toString(ei.caller), eJ, eK, eL, eM) ++ dX(bI, bJ, dc, dd, dg, de, df)) ++ ej(eZ)) ++ eh((aO() + ef)))
837837 else throw("Strict value is not equal to itself.")
838838 }
839839 else throw("Strict value is not equal to itself.")
840840 }
841841 else throw("Strict value is not equal to itself.")
842842 }
843843 else throw("Strict value is not equal to itself.")
844844 }
845845 }
846846
847847
848848
849849 @Callable(ei)
850850 func addMargin () = {
851851 let eO = ei.payments[0].amount
852852 if (if (if (if ((ei.payments[0].assetId != T()))
853853 then true
854854 else !(bu(toString(ei.caller))))
855855 then true
856856 else !(bv()))
857857 then true
858858 else bw())
859859 then throw("Invalid addMargin parameters")
860860 else {
861861 let eP = am(eO, aP())
862862 let ef = (eO - eP)
863863 let fe = bp(toString(ei.caller))
864864 let eu = fe._1
865865 let ev = fe._2
866866 let ew = fe._3
867867 let ex = fe._4
868868 let eZ = (eP / 2)
869869 let fa = (eP - eZ)
870870 let fb = invoke(U(), "lockNeutrinoSP", [toString(V()), af], [AttachedPayment(T(), ef)])
871871 if ((fb == fb))
872872 then {
873873 let fc = invoke(W(), "deposit", nil, [AttachedPayment(T(), fa)])
874874 if ((fc == fc))
875875 then {
876876 let fd = invoke(X(), "notifyFees", [toString(ei.caller), eP], nil)
877877 if ((fd == fd))
878878 then ((dL(toString(ei.caller), eu, (ev + ef), ew, ex) ++ ej(eZ)) ++ eh((aO() + ef)))
879879 else throw("Strict value is not equal to itself.")
880880 }
881881 else throw("Strict value is not equal to itself.")
882882 }
883883 else throw("Strict value is not equal to itself.")
884884 }
885885 }
886886
887887
888888
889889 @Callable(ei)
890890 func removeMargin (ef) = if (if (if (if ((0 >= ef))
891891 then true
892892 else !(bu(toString(ei.caller))))
893893 then true
894894 else !(bv()))
895895 then true
896896 else bw())
897897 then throw("Invalid removeMargin parameters")
898898 else {
899899 let ff = bp(toString(ei.caller))
900900 let eu = ff._1
901901 let ev = ff._2
902902 let ew = ff._3
903903 let ex = ff._4
904904 let fg = -(ef)
905905 let fh = bT(eu, ev, ex, fg)
906906 let cc = fh._1
907907 let cd = fh._2
908908 if ((cd != 0))
909909 then throw("Invalid removed margin amount")
910910 else {
911911 let fi = cJ(cc, cd, ew)
912912 if (!(bi(fi, aQ(), true)))
913913 then throw(((("Too much margin removed: " + toString(fi)) + " < ") + toString(aQ())))
914914 else {
915915 let fj = invoke(U(), "unlockNeutrino", [ef, toBase58String(T())], nil)
916916 if ((fj == fj))
917917 then ((dL(toString(ei.caller), eu, cc, ew, bn(eu)) ++ ee(ei.caller, ef)) ++ eh((aO() - ef)))
918918 else throw("Strict value is not equal to itself.")
919919 }
920920 }
921921 }
922922
923923
924924
925925 @Callable(ei)
926926 func closePosition () = if (if (if (!(bu(toString(ei.caller))))
927927 then true
928928 else !(bv()))
929929 then true
930930 else bw())
931931 then throw("Invalid closePosition parameters")
932932 else {
933933 let fk = cT(toString(ei.caller))
934934 let cF = fk._1
935935 let fl = fk._2
936936 let cY = fk._3
937937 let cZ = fk._4
938938 let bI = fk._5
939939 let bJ = fk._6
940940 let dc = fk._7
941941 let dd = fk._8
942942 let dg = fk._9
943943 let cG = fk._10
944944 let de = fk._11
945945 let df = fk._12
946946 if ((fl > 0))
947947 then throw("Unable to close position with bad debt")
948948 else {
949949 let fm = an(cZ)
950950 let fn = (aO() - fm)
951951 let fo = if ((0 > fn))
952952 then $Tuple2(0, an(fn))
953953 else $Tuple2(fn, 0)
954954 let fp = fo._1
955955 let fq = fo._2
956956 let fr = if ((fq > 0))
957957 then {
958958 let fs = invoke(W(), "withdraw", [fq], nil)
959959 if ((fs == fs))
960960 then nil
961961 else throw("Strict value is not equal to itself.")
962962 }
963963 else nil
964964 if ((fr == fr))
965965 then {
966966 let fj = invoke(U(), "unlockNeutrino", [(fm - fq), toBase58String(T())], nil)
967967 if ((fj == fj))
968968 then {
969969 let eN = invoke(X(), "notifyNotional", [toString(ei.caller), 0], nil)
970970 if ((eN == eN))
971971 then (((ed(toString(ei.caller)) ++ dX(bI, bJ, dc, dd, dg, de, df)) ++ ee(ei.caller, fm)) ++ eh(fp))
972972 else throw("Strict value is not equal to itself.")
973973 }
974974 else throw("Strict value is not equal to itself.")
975975 }
976976 else throw("Strict value is not equal to itself.")
977977 }
978978 }
979979
980980
981981
982982 @Callable(ei)
983983 func liquidate (bq) = {
984984 let ft = cN(bq, ag)
985985 let fi = if (cr())
986986 then {
987987 let fu = cN(bq, ah)
988988 ao(ft, fu)
989989 }
990990 else ft
991991 if (if (if (if (!(bi(fi, ba(), false)))
992992 then true
993993 else !(bu(bq)))
994994 then true
995995 else !(bv()))
996996 then true
997997 else bw())
998998 then throw("Unable to liquidate")
999999 else {
10001000 let fv = cT(bq)
10011001 let cF = fv._1
10021002 let cd = fv._2
10031003 let cG = fv._3
10041004 let cH = fv._4
10051005 let bI = fv._5
10061006 let bJ = fv._6
10071007 let dc = fv._7
10081008 let dd = fv._8
10091009 let dg = fv._9
10101010 let db = fv._10
10111011 let de = fv._11
10121012 let df = fv._12
10131013 let fw = am(db, bb())
10141014 let fx = (fw / 2)
10151015 let fa = (fw - fx)
10161016 let fn = (aO() - fw)
10171017 let fy = if ((0 > fn))
10181018 then $Tuple2(0, an(fn))
10191019 else $Tuple2(fn, 0)
10201020 let fz = fy._1
10211021 let fA = fy._2
10221022 let fr = if ((fA > 0))
10231023 then {
10241024 let fs = invoke(W(), "withdraw", [fA], nil)
10251025 if ((fs == fs))
10261026 then nil
10271027 else throw("Strict value is not equal to itself.")
10281028 }
10291029 else nil
10301030 if ((fr == fr))
10311031 then {
10321032 let fj = invoke(U(), "unlockNeutrino", [(fw - fA), toBase58String(T())], nil)
10331033 if ((fj == fj))
10341034 then {
10351035 let fc = invoke(W(), "deposit", nil, [AttachedPayment(T(), fa)])
10361036 if ((fc == fc))
10371037 then {
10381038 let eN = invoke(X(), "notifyNotional", [bq, 0], nil)
10391039 if ((eN == eN))
10401040 then (((ed(bq) ++ dX(bI, bJ, dc, dd, dg, de, df)) ++ ee(ei.caller, fx)) ++ eh(fz))
10411041 else throw("Strict value is not equal to itself.")
10421042 }
10431043 else throw("Strict value is not equal to itself.")
10441044 }
10451045 else throw("Strict value is not equal to itself.")
10461046 }
10471047 else throw("Strict value is not equal to itself.")
10481048 }
10491049 }
10501050
10511051
10521052
10531053 @Callable(ei)
10541054 func payFunding () = {
10551055 let fB = aW()
10561056 if (if (if ((fB > lastBlock.timestamp))
10571057 then true
10581058 else !(bv()))
10591059 then true
10601060 else bw())
10611061 then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(fB)))
10621062 else {
10631063 let fC = cl()
10641064 let fD = dh()
10651065 let fE = (fD - fC)
10661066 let fF = if (if ((bg() == 0))
10671067 then true
10681068 else (bh() == 0))
10691069 then $Tuple2(0, 0)
10701070 else if ((0 > fE))
10711071 then {
10721072 let fG = ak(am(fE, aY()), ae)
10731073 let fH = ak(am(fG, bg()), bh())
10741074 $Tuple2(fG, fH)
10751075 }
10761076 else {
10771077 let fH = ak(am(fE, aY()), ae)
10781078 let fG = ak(am(fH, bh()), bg())
10791079 $Tuple2(fG, fH)
10801080 }
10811081 let fG = fF._1
10821082 let fH = fF._2
10831083 dF((fB + aZ()), (be() + fH), (bf() + fG), ak(fH, fC), ak(fG, fC))
10841084 }
10851085 }
10861086
10871087
10881088
10891089 @Callable(ei)
10901090 func v_get (bq) = {
10911091 let fI = cT(bq)
10921092 let cF = fI._1
10931093 let cG = fI._2
10941094 let cH = fI._3
10951095 let fJ = fI._4
10961096 throw((((ai(cG) + ai(cH)) + ai(fJ)) + ai(cS(bq))))
10971097 }
10981098
10991099
11001100
11011101 @Callable(ei)
11021102 func view_calcRemainMarginWithFundingPayment (bq) = {
11031103 let fK = bp(bq)
11041104 let bt = fK._1
11051105 let cx = fK._2
11061106 let cP = fK._3
11071107 let cz = fK._4
11081108 let fL = cu(bq, ag)
11091109 let cC = fL._1
11101110 let cI = fL._2
11111111 let fM = bT(bt, cx, cz, cI)
11121112 let cc = fM._1
11131113 let cd = fM._2
11141114 let bY = fM._3
11151115 throw(((ai(cc) + ai(bY)) + ai(cS(bq))))
11161116 }
11171117
11181118
11191119
11201120 @Callable(ei)
11211121 func forceMoveAsset (bq,ef) = if (if ((addressFromPublicKey(S()) != ei.caller))
11221122 then true
11231123 else (0 > ef))
11241124 then throw("Invalid forceMoveAsset parameters")
11251125 else {
11261126 let fj = invoke(U(), "unlockNeutrino", [ef, toBase58String(T())], nil)
11271127 if ((fj == fj))
11281128 then (ee(addressFromStringValue(bq), ef) ++ eh((aO() - ef)))
11291129 else throw("Strict value is not equal to itself.")
11301130 }
11311131
11321132
11331133 @Verifier(fN)
11341134 func fO () = sigVerify(fN.bodyBytes, fN.proofs[0], S())
11351135

github/deemru/w8io/169f3d6 
116.00 ms