tx · 7ckUG1Y86C6wyjXAavWeQTRvrQTmzN1aRhPFXJWWhyyB

3N2PpSwSkK98YvLff2xQa6UcZ6LZ4suyFUF:  -0.07500000 Waves

2022.12.28 16:09 [2380171] smart account 3N2PpSwSkK98YvLff2xQa6UcZ6LZ4suyFUF > SELF 0.00000000 Waves

{ "type": 13, "id": "7ckUG1Y86C6wyjXAavWeQTRvrQTmzN1aRhPFXJWWhyyB", "fee": 7500000, "feeAssetId": null, "timestamp": 1672233000896, "version": 2, "chainId": 84, "sender": "3N2PpSwSkK98YvLff2xQa6UcZ6LZ4suyFUF", "senderPublicKey": "F7t5bFSaRPct8VH5ZVsR6Z5ZrmBs8ScAsYtnsNFgwgS3", "proofs": [ "4rRjuqd7s3GFkbDqzioSLXadZ32EheGf6kbW8QS7LHZBXbfx8YNk8czQ4ZFYCE9u3UjpH5EksgAUJqPoiWN2ytpB" ], "script": "base64:BgJ6CAISABIAEgASABIDCgEBEgMKAQESDgoMAQEBAQEBAQEBAQEBEhQKEgEBAQEBAQEICAgIAQEBAQEBARIFCgMBAQESBgoEAQEBCBIAEgMKAQESBAoCAQESAwoBCBIAEgASAwoBCBIDCgEBEgASABIDCgEIEgASBAoCCAjDAQAJa19vcmFfa2V5AglrX29yYV9rZXkAD2tfb3JhX2Jsb2NrX2tleQIPa19vcmFfYmxvY2tfa2V5AA5rX29yYV9vcGVuX2tleQIOa19vcmFfb3Blbl9rZXkABWtfb3JhAgVrX29yYQAJa19iYWxhbmNlAglrX2JhbGFuY2UACmtfc2VxdWVuY2UCCmtfc2VxdWVuY2UADmtfcG9zaXRpb25TaXplAg5rX3Bvc2l0aW9uU2l6ZQAQa19wb3NpdGlvbk1hcmdpbgIQa19wb3NpdGlvbk1hcmdpbgAWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAIWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAAua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgISa19wb3NpdGlvbkZyYWN0aW9uABJrX3Bvc2l0aW9uU2VxdWVuY2UCEmtfcG9zaXRpb25TZXF1ZW5jZQAPa19wb3NpdGlvbkFzc2V0Ag9rX3Bvc2l0aW9uQXNzZXQADWtfaW5pdGlhbGl6ZWQCDWtfaW5pdGlhbGl6ZWQACGtfcGF1c2VkAghrX3BhdXNlZAALa19jbG9zZU9ubHkCC2tfY2xvc2VPbmx5AAVrX2ZlZQIFa19mZWUAD2tfZnVuZGluZ1BlcmlvZAIPa19mdW5kaW5nUGVyaW9kABFrX2luaXRNYXJnaW5SYXRpbwIRa19pbml0TWFyZ2luUmF0aW8AGGtfbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwIFa19tbXIAFWtfbGlxdWlkYXRpb25GZWVSYXRpbwIVa19saXF1aWRhdGlvbkZlZVJhdGlvABlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAhZrX3BhcnRMaXF1aWRhdGlvblJhdGlvAA1rX3NwcmVhZExpbWl0Ag1rX3NwcmVhZExpbWl0ABBrX21heFByaWNlSW1wYWN0AhBrX21heFByaWNlSW1wYWN0ABBrX21heFByaWNlU3ByZWFkAhBrX21heFByaWNlU3ByZWFkABFrX21heE9wZW5Ob3Rpb25hbAIRa19tYXhPcGVuTm90aW9uYWwAFWtfZmVlVG9TdGFrZXJzUGVyY2VudAIVa19mZWVUb1N0YWtlcnNQZXJjZW50ABBrX21heE9yYWNsZURlbGF5AhBrX21heE9yYWNsZURlbGF5AA1rX2xhc3REYXRhU3RyAg1rX2xhc3REYXRhU3RyAA5rX2xhc3RNaW51dGVJZAIOa19sYXN0TWludXRlSWQAHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAh1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQATa190d2FwRGF0YUxhc3RQcmljZQITa190d2FwRGF0YUxhc3RQcmljZQAaa190d2FwRGF0YVByZXZpb3VzTWludXRlSWQCGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkACVrX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhtrX2xhdGVzdExvbmdQcmVtaXVtRnJhY3Rpb24AJmtfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhxrX2xhdGVzdFNob3J0UHJlbWl1bUZyYWN0aW9uABJrX25leHRGdW5kaW5nQmxvY2sCHmtfbmV4dEZ1bmRpbmdCbG9ja01pblRpbWVzdGFtcAARa19sb25nRnVuZGluZ1JhdGUCEWtfbG9uZ0Z1bmRpbmdSYXRlABJrX3Nob3J0RnVuZGluZ1JhdGUCEmtfc2hvcnRGdW5kaW5nUmF0ZQATa19xdW90ZUFzc2V0UmVzZXJ2ZQIIa19xdEFzdFIAEmtfYmFzZUFzc2V0UmVzZXJ2ZQIIa19ic0FzdFIAEmtfcXVvdGVBc3NldFdlaWdodAIIa19xdEFzdFcAEWtfYmFzZUFzc2V0V2VpZ2h0AghrX2JzQXN0VwATa190b3RhbFBvc2l0aW9uU2l6ZQITa190b3RhbFBvc2l0aW9uU2l6ZQAXa190b3RhbExvbmdQb3NpdGlvblNpemUCF2tfdG90YWxMb25nUG9zaXRpb25TaXplABhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUCGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAIWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAATa19vcGVuSW50ZXJlc3RTaG9ydAITa19vcGVuSW50ZXJlc3RTaG9ydAASa19vcGVuSW50ZXJlc3RMb25nAhJrX29wZW5JbnRlcmVzdExvbmcAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwAPa192YXVsdF9hZGRyZXNzAg9rX3ZhdWx0X2FkZHJlc3MAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19xdW90ZV9zdGFraW5nAg9rX3F1b3RlX3N0YWtpbmcAEWtfc3Rha2luZ19hZGRyZXNzAhFrX3N0YWtpbmdfYWRkcmVzcwAPa19taW5lcl9hZGRyZXNzAg9rX21pbmVyX2FkZHJlc3MAEGtfb3JkZXJzX2FkZHJlc3MCEGtfb3JkZXJzX2FkZHJlc3MAEmtfcmVmZXJyYWxfYWRkcmVzcwISa19yZWZlcnJhbF9hZGRyZXNzABRrX2NvbGxhdGVyYWxfYWRkcmVzcwIUa19jb2xsYXRlcmFsX2FkZHJlc3MAEmtfZXhjaGFuZ2VfYWRkcmVzcwISa19leGNoYW5nZV9hZGRyZXNzABVrX25mdF9tYW5hZ2VyX2FkZHJlc3MCFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwAga190cmFkZXJfbWFya2V0X2Fzc2V0X2NvbGxhdGVyYWwCIGtfdHJhZGVyX21hcmtldF9hc3NldF9jb2xsYXRlcmFsAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwITQ29vcmRpbmF0b3Igbm90IHNldAEMYWRtaW5BZGRyZXNzAAkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX2FkbWluX2FkZHJlc3MBDmFkbWluUHVibGljS2V5AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRJrX2FkbWluX3B1YmxpY19rZXkBCnF1b3RlQXNzZXQACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFDWtfcXVvdGVfYXNzZXQBEXF1b3RlQXNzZXRTdGFraW5nAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfcXVvdGVfc3Rha2luZwIbUXVvdGUgYXNzZXQgc3Rha2luZyBub3Qgc2V0AQ5zdGFraW5nQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRFrX3N0YWtpbmdfYWRkcmVzcwIPU3Rha2luZyBub3Qgc2V0AQx2YXVsdEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa192YXVsdF9hZGRyZXNzAg1WYXVsdCBub3Qgc2V0AQxtaW5lckFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19taW5lcl9hZGRyZXNzAg1NaW5lciBub3Qgc2V0AQ1vcmRlcnNBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEGtfb3JkZXJzX2FkZHJlc3MCDk9yZGVycyBub3Qgc2V0AQ9yZWZlcnJhbEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUSa19yZWZlcnJhbF9hZGRyZXNzAhBSZWZlcnJhbCBub3Qgc2V0ARFuZnRNYW5hZ2VyQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRVrX25mdF9tYW5hZ2VyX2FkZHJlc3MCE05GVCBNYW5hZ2VyIG5vdCBzZXQBEWNvbGxhdGVyYWxBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFFGtfY29sbGF0ZXJhbF9hZGRyZXNzAhpDb2xsYXRlcmFsIE1hbmFnZXIgbm90IHNldAELc3dhcEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFEmtfZXhjaGFuZ2VfYWRkcmVzcwIPTm8gc3dhcCBhZGRyZXNzAhRJbnZhbGlkIHN3YXAgYWRkcmVzcwARa193aGl0ZWxpc3RfYXNzZXQCEWtfd2hpdGVsaXN0X2Fzc2V0ARBpc1doaXRlbGlzdEFzc2V0AQhfYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERY29sbGF0ZXJhbEFkZHJlc3MACQEOdG9Db21wb3NpdGVLZXkCBRFrX3doaXRlbGlzdF9hc3NldAUIX2Fzc2V0SWQHAA1rX3Rva2VuX3BhcmFtAg1rX3Rva2VuX3BhcmFtAAxrX3Rva2VuX3R5cGUCDGtfdG9rZW5fdHlwZQAYRkVFX1JFRFVDVElPTl9UT0tFTl9UWVBFAg1mZWVfcmVkdWN0aW9uAAhESVJfTE9ORwABAAlESVJfU0hPUlQAAgANVFdBUF9JTlRFUlZBTAAPAA9PUkFDTEVfSU5URVJWQUwADwAHU0VDT05EUwDoBwAPREVDSU1BTF9OVU1CRVJTAAYADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCAAoACgAKAAoACgAKAAdPTkVfREFZCQBoAgCAowUFDERFQ0lNQUxfVU5JVAAIQUxMX0ZFRVMAZAAPUE5MX09QVElPTl9TUE9UAAEAEVBOTF9PUFRJT05fT1JBQ0xFAAIBAXMBAl94CQCsAgIJAKQDAQUCX3gCASwBBGRpdmQCAl94Al95CQBuBAUCX3gFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQRtdWxkAgJfeAJfeQkAbgQFAl94BQJfeQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEFc3FydGQBAl94CQEEc3FydAQFAl94BQ9ERUNJTUFMX05VTUJFUlMFD0RFQ0lNQUxfTlVNQkVSUwUISEFMRkVWRU4BBHBvd2QCAl94Al95CQBsBgUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUCX3kFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEFYmRpdmQCAl94Al95CQC9AgQFAl94CQC2AgEFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQVibXVsZAICX3gCX3kJAL0CBAUCX3gFAl95CQC2AgEFDERFQ0lNQUxfVU5JVAUISEFMRkVWRU4BBmJzcXJ0ZAECX3gJAQpzcXJ0QmlnSW50BAUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEFYnBvd2QCAl94Al95CQB2BgUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUCX3kFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEDYWJzAQJfeAMJAGYCBQJfeAAABQJfeAkBAS0BBQJfeAEEdm1heAICX3gCX3kDCQBnAgUCX3gFAl95BQJfeAUCX3kBCWxpc3RUb1N0cgEFX2xpc3QKAQVfam9pbgILYWNjdW11bGF0b3IDdmFsCQCsAgIJAKwCAgULYWNjdW11bGF0b3IFA3ZhbAIBLAQKbmV3TGlzdFN0cgoAAiRsBQVfbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFX2pvaW4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQLbmV3TGlzdFN0clUJALMCAgUKbmV3TGlzdFN0cgABBAtuZXdMaXN0U3RyUgMJAAACCQCvAgIFC25ld0xpc3RTdHJVAAECASwJALACAgULbmV3TGlzdFN0clUAAQULbmV3TGlzdFN0clUFC25ld0xpc3RTdHJSAQlzdHJUb0xpc3QBBF9zdHIJALUJAgUEX3N0cgIBLAELcHVzaFRvUXVldWUDBV9saXN0CF9tYXhTaXplBl92YWx1ZQMJAGYCCQCQAwEFBV9saXN0BQhfbWF4U2l6ZQkAzQgCCQDRCAIFBV9saXN0AAAFBl92YWx1ZQkAzQgCBQVfbGlzdAUGX3ZhbHVlAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBBWludE9yAgFrA2RlZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrBQNkZWYBBHN0ckECCF9hZGRyZXNzBF9rZXkEA3ZhbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCF9hZGRyZXNzBQRfa2V5CQCsAgICEU5vIHZhbHVlIGZvciBrZXkgBQRfa2V5BQN2YWwBBGludEECCF9hZGRyZXNzBF9rZXkEA3ZhbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCF9hZGRyZXNzBQRfa2V5CQCsAgICEU5vIHZhbHVlIGZvciBrZXkgBQRfa2V5BQN2YWwBCGNiYWxhbmNlAAkBA2ludAEFCWtfYmFsYW5jZQEDZmVlAAkBA2ludAEFBWtfZmVlAQ9pbml0TWFyZ2luUmF0aW8ACQEDaW50AQURa19pbml0TWFyZ2luUmF0aW8BBnF0QXN0UgAJAQNpbnQBBRNrX3F1b3RlQXNzZXRSZXNlcnZlAQZic0FzdFIACQEDaW50AQUSa19iYXNlQXNzZXRSZXNlcnZlAQZxdEFzdFcACQEFaW50T3ICBRJrX3F1b3RlQXNzZXRXZWlnaHQFDERFQ0lNQUxfVU5JVAEGYnNBc3RXAAkBBWludE9yAgURa19iYXNlQXNzZXRXZWlnaHQFDERFQ0lNQUxfVU5JVAERdG90YWxQb3NpdGlvblNpemUACQEDaW50AQUTa190b3RhbFBvc2l0aW9uU2l6ZQEUb3BlbkludGVyZXN0Tm90aW9uYWwACQEDaW50AQUWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAERb3BlbkludGVyZXN0U2hvcnQACQEDaW50AQUTa19vcGVuSW50ZXJlc3RTaG9ydAEQb3BlbkludGVyZXN0TG9uZwAJAQNpbnQBBRJrX29wZW5JbnRlcmVzdExvbmcBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAACQEDaW50AQUSa19uZXh0RnVuZGluZ0Jsb2NrARBmdW5kaW5nUGVyaW9kUmF3AAkBA2ludAEFD2tfZnVuZGluZ1BlcmlvZAEUZnVuZGluZ1BlcmlvZERlY2ltYWwACQBoAgkBEGZ1bmRpbmdQZXJpb2RSYXcABQxERUNJTUFMX1VOSVQBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUHU0VDT05EUwEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAJAQNpbnQBBRhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8BE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEDaW50AQUVa19saXF1aWRhdGlvbkZlZVJhdGlvARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAJAQNpbnQBBRlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAQtzcHJlYWRMaW1pdAAJAQNpbnQBBQ1rX3NwcmVhZExpbWl0AQ5tYXhQcmljZUltcGFjdAAJAQNpbnQBBRBrX21heFByaWNlSW1wYWN0AQ5tYXhQcmljZVNwcmVhZAAJAQNpbnQBBRBrX21heFByaWNlU3ByZWFkAQ9tYXhPcGVuTm90aW9uYWwACQEDaW50AQURa19tYXhPcGVuTm90aW9uYWwBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAkBA2ludAEFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BJGxhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJAQNpbnQBBSZrX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJAQNpbnQBBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJAQNpbnQBBRdrX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQEMbGFzdFNlcXVlbmNlAAkBBWludE9yAgUKa19zZXF1ZW5jZQAAARNmZWVUb1N0YWtlcnNQZXJjZW50AAkBA2ludAEFFWtfZmVlVG9TdGFrZXJzUGVyY2VudAEObWF4T3JhY2xlRGVsYXkACQEDaW50AQUQa19tYXhPcmFjbGVEZWxheQEPZ2V0QWN0dWFsQ2FsbGVyAQFpCQELdmFsdWVPckVsc2UCCQCdCAIJAQ1vcmRlcnNBZGRyZXNzAAIIa19zZW5kZXIJAKUIAQgFAWkGY2FsbGVyARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwxfbWFyZ2luUmF0aW8QX2Jhc2VNYXJnaW5SYXRpbxRfbGFyZ2VyVGhhbk9yRXF1YWxUbwQUcmVtYWluaW5nTWFyZ2luUmF0aW8JAGUCBQxfbWFyZ2luUmF0aW8FEF9iYXNlTWFyZ2luUmF0aW8DAwUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGYCAAAFFHJlbWFpbmluZ01hcmdpblJhdGlvBwkAAgECDkludmFsaWQgbWFyZ2luAwMJAQEhAQUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGcCBRRyZW1haW5pbmdNYXJnaW5SYXRpbwAABwkAAgECDkludmFsaWQgbWFyZ2luBgEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgENX3Bvc2l0aW9uU2l6ZQMJAAACBQ1fcG9zaXRpb25TaXplAAAJAAIBAixTaG91bGQgbm90IGJlIGNhbGxlZCB3aXRoIF9wb3NpdGlvblNpemUgPT0gMAMJAGYCBQ1fcG9zaXRpb25TaXplAAAJASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAQtnZXRQb3NpdGlvbgEHX3RyYWRlcgQPcG9zaXRpb25TaXplT3B0CQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQdfdHJhZGVyBAckbWF0Y2gwBQ9wb3NpdGlvblNpemVPcHQDCQABAgUHJG1hdGNoMAIDSW50BAxwb3NpdGlvblNpemUFByRtYXRjaDAJAJYKBAUMcG9zaXRpb25TaXplCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRBrX3Bvc2l0aW9uTWFyZ2luBQdfdHJhZGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQdfdHJhZGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQdfdHJhZGVyCQCWCgQAAAAAAAAAAAEQZ2V0UG9zaXRpb25Bc3NldAEHX3RyYWRlcgQQcG9zaXRpb25Bc3NldE9wdAkAnQgCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBQ9rX3Bvc2l0aW9uQXNzZXQFB190cmFkZXIEByRtYXRjaDAFEHBvc2l0aW9uQXNzZXRPcHQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBA1wb3NpdGlvbkFzc2V0BQckbWF0Y2gwBQ1wb3NpdGlvbkFzc2V0CQDYBAEJAQpxdW90ZUFzc2V0AAETcmVxdWlyZU9wZW5Qb3NpdGlvbgEHX3RyYWRlcgMJAAACCAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgJfMQAACQACAQIQTm8gb3BlbiBwb3NpdGlvbgYBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwEGcGF1c2VkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQhrX3BhdXNlZAcBCWNsb3NlT25seQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwULa19jbG9zZU9ubHkHAQ11cGRhdGVSZXNlcnZlAwZfaXNBZGQRX3F1b3RlQXNzZXRBbW91bnQQX2Jhc2VBc3NldEFtb3VudAMFBl9pc0FkZAQHbmV3QmFzZQkAZQIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50AwkAZwIAAAUHbmV3QmFzZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBhc3NldCByZXNlcnZlIDw9IDAsIHJldmVydAkAlQoDCQBkAgkBBnF0QXN0UgAFEV9xdW90ZUFzc2V0QW1vdW50BQduZXdCYXNlCQBkAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAQIbmV3UXVvdGUJAGUCCQEGcXRBc3RSAAURX3F1b3RlQXNzZXRBbW91bnQDCQBnAgAABQhuZXdRdW90ZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBxdW90ZSByZXNlcnZlIDw9IDAsIHJldmVydAkAlQoDBQhuZXdRdW90ZQkAZAIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50CQBlAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAENY2FsY0ludmFyaWFudAQHX3F0QXN0UgdfcXRBc3RXB19ic0FzdFIHX2JzQXN0VwQHYnF0QXN0UgkAtgIBBQdfcXRBc3RSBAdicXRBc3RXCQC2AgEFB19xdEFzdFcEB2Jic0FzdFIJALYCAQUHX2JzQXN0UgQHYmJzQXN0VwkAtgIBBQdfYnNBc3RXCQEFYm11bGQCCQEFYm11bGQCBQdicXRBc3RSBQdicXRBc3RXCQEFYm11bGQCBQdiYnNBc3RSBQdiYnNBc3RXAQlzd2FwSW5wdXQCBl9pc0FkZBFfcXVvdGVBc3NldEFtb3VudAQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAEAWsJAQ1jYWxjSW52YXJpYW50BAUHX3F0QXN0UgUHX3F0QXN0VwUHX2JzQXN0UgUHX2JzQXN0VwQWcXVvdGVBc3NldFJlc2VydmVBZnRlcgMFBl9pc0FkZAkAZAIFB19xdEFzdFIFEV9xdW90ZUFzc2V0QW1vdW50CQBlAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQEFWJhc2VBc3NldFJlc2VydmVBZnRlcgkAoAMBCQEFYmRpdmQCBQFrCQC2AgEJAQRtdWxkAgUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUHX3F0QXN0VwQYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEEZGl2ZAIJAQNhYnMBCQBlAgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQdfYnNBc3RSBQdfcXRBc3RXBBVhbW91bnRCYXNlQXNzZXRCb3VnaHQDBQZfaXNBZGQFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwkBAS0BBRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEDSR0MDE2ODA1MTY5NjgJAQ11cGRhdGVSZXNlcnZlAwUGX2lzQWRkBRFfcXVvdGVBc3NldEFtb3VudAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBBdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE2ODA1MTY5NjgCXzEEFmJhc2VBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxNjgwNTE2OTY4Al8yBBd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQgFDSR0MDE2ODA1MTY5NjgCXzMEC3ByaWNlQmVmb3JlCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXBAttYXJrZXRQcmljZQkBBGRpdmQCBRFfcXVvdGVBc3NldEFtb3VudAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBAlwcmljZURpZmYJAQNhYnMBCQBlAgULcHJpY2VCZWZvcmUFC21hcmtldFByaWNlBAtwcmljZUltcGFjdAkAZQIFDERFQ0lNQUxfVU5JVAkBBGRpdmQCBQtwcmljZUJlZm9yZQkAZAIFC3ByaWNlQmVmb3JlBQlwcmljZURpZmYEE21heFByaWNlSW1wYWN0VmFsdWUJAQ5tYXhQcmljZUltcGFjdAADCQBmAgULcHJpY2VJbXBhY3QFE21heFByaWNlSW1wYWN0VmFsdWUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDVByaWNlIGltcGFjdCAJAKQDAQULcHJpY2VJbXBhY3QCFCA+IG1heCBwcmljZSBpbXBhY3QgCQCkAwEFE21heFByaWNlSW1wYWN0VmFsdWUCFSBiZWZvcmUgcXVvdGUgYXNzZXQ6IAkApAMBBQdfcXRBc3RSAhQgYmVmb3JlIGJhc2UgYXNzZXQ6IAkApAMBBQdfYnNBc3RSAiEgcXVvdGUgYXNzZXQgYW1vdW50IHRvIGV4Y2hhbmdlOiAJAKQDAQURX3F1b3RlQXNzZXRBbW91bnQCDyBwcmljZSBiZWZvcmU6IAkApAMBBQtwcmljZUJlZm9yZQIOIG1hcmtldFByaWNlOiAJAKQDAQULbWFya2V0UHJpY2UJAJYKBAUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEEF9vbGRQb3NpdGlvblNpemUSX29sZFBvc2l0aW9uTWFyZ2luJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24MX21hcmdpbkRlbHRhBA5mdW5kaW5nUGF5bWVudAMJAQIhPQIFEF9vbGRQb3NpdGlvblNpemUAAAQgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUQX29sZFBvc2l0aW9uU2l6ZQkBBG11bGQCCQBlAgUgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FEF9vbGRQb3NpdGlvblNpemUAAAQMc2lnbmVkTWFyZ2luCQBkAgkAZQIFDF9tYXJnaW5EZWx0YQUOZnVuZGluZ1BheW1lbnQFEl9vbGRQb3NpdGlvbk1hcmdpbgQNJHQwMTg0NTUxODU4MgMJAGYCAAAFDHNpZ25lZE1hcmdpbgkAlAoCAAAJAQNhYnMBBQxzaWduZWRNYXJnaW4JAJQKAgkBA2FicwEFDHNpZ25lZE1hcmdpbgAABAxyZW1haW5NYXJnaW4IBQ0kdDAxODQ1NTE4NTgyAl8xBAdiYWREZWJ0CAUNJHQwMTg0NTUxODU4MgJfMgkAlQoDBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFDmZ1bmRpbmdQYXltZW50ARZzd2FwT3V0cHV0V2l0aFJlc2VydmVzBwZfaXNBZGQQX2Jhc2VBc3NldEFtb3VudBRfY2hlY2tNYXhQcmljZUltcGFjdBJfcXVvdGVBc3NldFJlc2VydmURX3F1b3RlQXNzZXRXZWlnaHQRX2Jhc2VBc3NldFJlc2VydmUQX2Jhc2VBc3NldFdlaWdodAQLcHJpY2VCZWZvcmUJAQRkaXZkAgkBBG11bGQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0CQEEbXVsZAIFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0V2VpZ2h0AwkAAAIFEF9iYXNlQXNzZXRBbW91bnQAAAkAAgECGUludmFsaWQgYmFzZSBhc3NldCBhbW91bnQEAWsJAQ1jYWxjSW52YXJpYW50BAUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfcXVvdGVBc3NldFdlaWdodAURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRXZWlnaHQEGGJhc2VBc3NldFBvb2xBbW91bnRBZnRlcgMFBl9pc0FkZAkAZAIFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0QW1vdW50CQBlAgURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRBbW91bnQED3F1b3RlQXNzZXRBZnRlcgkAoAMBCQEFYmRpdmQCBQFrCQC2AgEJAQRtdWxkAgUYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyBRBfYmFzZUFzc2V0V2VpZ2h0BA5xdW90ZUFzc2V0U29sZAkBA2FicwEJAGUCBQ9xdW90ZUFzc2V0QWZ0ZXIJAQRtdWxkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfcXVvdGVBc3NldFdlaWdodAQTbWF4UHJpY2VJbXBhY3RWYWx1ZQkBDm1heFByaWNlSW1wYWN0AAQNJHQwMTk3NzAxOTkzMQkBDXVwZGF0ZVJlc2VydmUDCQEBIQEFBl9pc0FkZAUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTk3NzAxOTkzMQJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE5NzcwMTk5MzECXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTk3NzAxOTkzMQJfMwQLbWFya2V0UHJpY2UJAQRkaXZkAgUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQECXByaWNlRGlmZgkBA2FicwEJAGUCBQtwcmljZUJlZm9yZQULbWFya2V0UHJpY2UEC3ByaWNlSW1wYWN0CQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIFC3ByaWNlQmVmb3JlCQBkAgULcHJpY2VCZWZvcmUFCXByaWNlRGlmZgMDCQBmAgULcHJpY2VJbXBhY3QFE21heFByaWNlSW1wYWN0VmFsdWUFFF9jaGVja01heFByaWNlSW1wYWN0BwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINUHJpY2UgaW1wYWN0IAkApAMBBQtwcmljZUltcGFjdAIUID4gbWF4IHByaWNlIGltcGFjdCAJAKQDAQUTbWF4UHJpY2VJbXBhY3RWYWx1ZQIVIGJlZm9yZSBxdW90ZSBhc3NldDogCQCkAwEFEl9xdW90ZUFzc2V0UmVzZXJ2ZQIUIGJlZm9yZSBiYXNlIGFzc2V0OiAJAKQDAQURX2Jhc2VBc3NldFJlc2VydmUCICBiYXNlIGFzc2V0IGFtb3VudCB0byBleGNoYW5nZTogCQCkAwEFEF9iYXNlQXNzZXRBbW91bnQCDyBwcmljZSBiZWZvcmU6IAkApAMBBQtwcmljZUJlZm9yZQIPIG1hcmtldCBwcmljZTogCQCkAwEFC21hcmtldFByaWNlCQCZCgcFDnF1b3RlQXNzZXRTb2xkBRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEJAGUCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMFBl9pc0FkZAkBA2FicwEFEF9iYXNlQXNzZXRBbW91bnQAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAQEhAQUGX2lzQWRkCQEDYWJzAQUQX2Jhc2VBc3NldEFtb3VudAAABQtwcmljZUltcGFjdAEKc3dhcE91dHB1dAMGX2lzQWRkEF9iYXNlQXNzZXRBbW91bnQUX2NoZWNrTWF4UHJpY2VJbXBhY3QJARZzd2FwT3V0cHV0V2l0aFJlc2VydmVzBwUGX2lzQWRkBRBfYmFzZUFzc2V0QW1vdW50BRRfY2hlY2tNYXhQcmljZUltcGFjdAkBBnF0QXN0UgAJAQZxdEFzdFcACQEGYnNBc3RSAAkBBmJzQXN0VwABDmdldE9yYWNsZVByaWNlAAQGb3JhY2xlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUFa19vcmECAAQIcHJpY2VLZXkJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFCWtfb3JhX2tleQQJbGFzdFZhbHVlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUGb3JhY2xlBQhwcmljZUtleQkArAICCQCsAgIJAKwCAgIiQ2FuIG5vdCBnZXQgb3JhY2xlIHByaWNlLiBPcmFjbGU6IAkApQgBBQZvcmFjbGUCBiBrZXk6IAUIcHJpY2VLZXkECGJsb2NrS2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFD2tfb3JhX2Jsb2NrX2tleQIAAwkBAiE9AgUIYmxvY2tLZXkCAAQMY3VycmVudEJsb2NrCAUJbGFzdEJsb2NrBmhlaWdodAQPbGFzdE9yYWNsZUJsb2NrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUGb3JhY2xlBQhibG9ja0tleQkArAICCQCsAgIJAKwCAgIiQ2FuIG5vdCBnZXQgb3JhY2xlIGJsb2NrLiBPcmFjbGU6IAkApQgBBQZvcmFjbGUCBiBrZXk6IAUIYmxvY2tLZXkDCQBmAgkAZQIFDGN1cnJlbnRCbG9jawUPbGFzdE9yYWNsZUJsb2NrCQEObWF4T3JhY2xlRGVsYXkACQACAQkArAICCQCsAgIJAKwCAgImT3JhY2xlIHN0YWxlIGRhdGEuIExhc3Qgb3JhY2xlIGJsb2NrOiAJAKQDAQUPbGFzdE9yYWNsZUJsb2NrAhAgY3VycmVudCBibG9jazogCQCkAwEFDGN1cnJlbnRCbG9jawUJbGFzdFZhbHVlBQlsYXN0VmFsdWUBDmlzTWFya2V0Q2xvc2VkAAQGb3JhY2xlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUFa19vcmECAAQHb3BlbktleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ5rX29yYV9vcGVuX2tleQIAAwkBAiE9AgUHb3BlbktleQIABAZpc09wZW4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmwgCBQZvcmFjbGUFB29wZW5LZXkJAKwCAgkArAICCQCsAgICK0NhbiBub3QgZ2V0IG9yYWNsZSBpcyBvcGVuL2Nsb3NlZC4gT3JhY2xlOiAJAKUIAQUGb3JhY2xlAgYga2V5OiAFB29wZW5LZXkJAQEhAQUGaXNPcGVuBwEMYWJzUHJpY2VEaWZmBQxfb3JhY2xlUHJpY2USX3F1b3RlQXNzZXRSZXNlcnZlEV9iYXNlQXNzZXRSZXNlcnZlB19xdEFzdFcHX2JzQXN0VwQKcHJpY2VBZnRlcgkBBGRpdmQCCQEEbXVsZAIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQUHX3F0QXN0VwkBBG11bGQCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUHX2JzQXN0VwQMYXZlcmFnZVByaWNlCQEEZGl2ZAIJAGQCBQxfb3JhY2xlUHJpY2UFCnByaWNlQWZ0ZXIJAGgCAAIFDERFQ0lNQUxfVU5JVAQMYWJzUHJpY2VEaWZmCQEEZGl2ZAIJAQNhYnMBCQBlAgUMX29yYWNsZVByaWNlBQpwcmljZUFmdGVyBQxhdmVyYWdlUHJpY2UFDGFic1ByaWNlRGlmZgEZcmVxdWlyZU5vdE92ZXJTcHJlYWRMaW1pdAISX3F1b3RlQXNzZXRSZXNlcnZlEV9iYXNlQXNzZXRSZXNlcnZlBAtvcmFjbGVQcmljZQkBDmdldE9yYWNsZVByaWNlAAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcABBJhYnNQcmljZURpZmZCZWZvcmUJAQxhYnNQcmljZURpZmYFBQtvcmFjbGVQcmljZQkBBnF0QXN0UgAJAQZic0FzdFIABQdfcXRBc3RXBQdfYnNBc3RXBBFhYnNQcmljZURpZmZBZnRlcgkBDGFic1ByaWNlRGlmZgUFC29yYWNsZVByaWNlBRJfcXVvdGVBc3NldFJlc2VydmUFEV9iYXNlQXNzZXRSZXNlcnZlBQdfcXRBc3RXBQdfYnNBc3RXAwMJAGYCBRFhYnNQcmljZURpZmZBZnRlcgkBDm1heFByaWNlU3ByZWFkAAkAZgIFEWFic1ByaWNlRGlmZkFmdGVyBRJhYnNQcmljZURpZmZCZWZvcmUHCQACAQkArAICCQCsAgIJAKwCAgINUHJpY2Ugc3ByZWFkIAkApAMBBRFhYnNQcmljZURpZmZBZnRlcgIUID4gbWF4IHByaWNlIHNwcmVhZCAJAKQDAQkBDm1heFByaWNlU3ByZWFkAAYBHXJlcXVpcmVOb3RPdmVyTWF4T3Blbk5vdGlvbmFsAhFfbG9uZ09wZW5Ob3Rpb25hbBJfc2hvcnRPcGVuTm90aW9uYWwEEF9tYXhPcGVuTm90aW9uYWwJAQ9tYXhPcGVuTm90aW9uYWwAAwkAZgIFEV9sb25nT3Blbk5vdGlvbmFsBRBfbWF4T3Blbk5vdGlvbmFsCQACAQkArAICCQCsAgIJAKwCAgITTG9uZyBvcGVuIG5vdGlvbmFsIAkApAMBBRFfbG9uZ09wZW5Ob3Rpb25hbAIVID4gbWF4IG9wZW4gbm90aW9uYWwgCQCkAwEFEF9tYXhPcGVuTm90aW9uYWwDCQBmAgUSX3Nob3J0T3Blbk5vdGlvbmFsBRBfbWF4T3Blbk5vdGlvbmFsCQACAQkArAICCQCsAgIJAKwCAgIUU2hvcnQgb3BlbiBub3Rpb25hbCAJAKQDAQUSX3Nob3J0T3Blbk5vdGlvbmFsAhUgPiBtYXggb3BlbiBub3Rpb25hbCAJAKQDAQUQX21heE9wZW5Ob3Rpb25hbAYBDGdldFNwb3RQcmljZQAEEl9xdW90ZUFzc2V0UmVzZXJ2ZQkBBnF0QXN0UgAEEV9iYXNlQXNzZXRSZXNlcnZlCQEGYnNBc3RSAAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcACQEEZGl2ZAIJAQRtdWxkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBQdfcXRBc3RXCQEEbXVsZAIFEV9iYXNlQXNzZXRSZXNlcnZlBQdfYnNBc3RXARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQLb3JhY2xlUHJpY2UJAQ5nZXRPcmFjbGVQcmljZQAEDGN1cnJlbnRQcmljZQkBDGdldFNwb3RQcmljZQAJAGYCCQEEZGl2ZAIJAQNhYnMBCQBlAgULb3JhY2xlUHJpY2UFDGN1cnJlbnRQcmljZQULb3JhY2xlUHJpY2UJAQtzcHJlYWRMaW1pdAABH2dldFBvc2l0aW9uQWRqdXN0ZWRPcGVuTm90aW9uYWwGDV9wb3NpdGlvblNpemUHX29wdGlvbhJfcXVvdGVBc3NldFJlc2VydmURX3F1b3RlQXNzZXRXZWlnaHQRX2Jhc2VBc3NldFJlc2VydmUQX2Jhc2VBc3NldFdlaWdodAQPcG9zaXRpb25TaXplQWJzCQEDYWJzAQUNX3Bvc2l0aW9uU2l6ZQQHaXNTaG9ydAkAZgIAAAUNX3Bvc2l0aW9uU2l6ZQQQcG9zaXRpb25Ob3Rpb25hbAMJAAACBQdfb3B0aW9uBQ9QTkxfT1BUSU9OX1NQT1QEDSR0MDI0ODgyMjUxMDIJARZzd2FwT3V0cHV0V2l0aFJlc2VydmVzBwkBASEBBQdpc1Nob3J0BQ9wb3NpdGlvblNpemVBYnMHBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAQTb3V0UG9zaXRpb25Ob3Rpb25hbAgFDSR0MDI0ODgyMjUxMDICXzEEAngxCAUNJHQwMjQ4ODIyNTEwMgJfMgQCeDIIBQ0kdDAyNDg4MjI1MTAyAl8zBAJ4MwgFDSR0MDI0ODgyMjUxMDICXzQFE291dFBvc2l0aW9uTm90aW9uYWwJAQRtdWxkAgUPcG9zaXRpb25TaXplQWJzCQEOZ2V0T3JhY2xlUHJpY2UABRBwb3NpdGlvbk5vdGlvbmFsAStnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubEJ5VmFsdWVzBw1fcG9zaXRpb25TaXplFV9wb3NpdGlvbk9wZW5Ob3Rpb25hbBJfcXVvdGVBc3NldFJlc2VydmURX3F1b3RlQXNzZXRXZWlnaHQRX2Jhc2VBc3NldFJlc2VydmUQX2Jhc2VBc3NldFdlaWdodAdfb3B0aW9uAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAAgECFUludmFsaWQgcG9zaXRpb24gc2l6ZQQHaXNTaG9ydAkAZgIAAAUNX3Bvc2l0aW9uU2l6ZQQQcG9zaXRpb25Ob3Rpb25hbAkBH2dldFBvc2l0aW9uQWRqdXN0ZWRPcGVuTm90aW9uYWwGBQ1fcG9zaXRpb25TaXplBQdfb3B0aW9uBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAQNdW5yZWFsaXplZFBubAMFB2lzU2hvcnQJAGUCBRVfcG9zaXRpb25PcGVuTm90aW9uYWwFEHBvc2l0aW9uTm90aW9uYWwJAGUCBRBwb3NpdGlvbk5vdGlvbmFsBRVfcG9zaXRpb25PcGVuTm90aW9uYWwJAJQKAgUQcG9zaXRpb25Ob3Rpb25hbAUNdW5yZWFsaXplZFBubAEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCB190cmFkZXIHX29wdGlvbgQNJHQwMjY1MjMyNjY1MQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMjY1MjMyNjY1MQJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAyNjUyMzI2NjUxAl8yBBRwb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDI2NTIzMjY2NTECXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMjY1MjMyNjY1MQJfNAkBK2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sQnlWYWx1ZXMHBQxwb3NpdGlvblNpemUFFHBvc2l0aW9uT3Blbk5vdGlvbmFsCQEGcXRBc3RSAAkBBnF0QXN0VwAJAQZic0FzdFIACQEGYnNBc3RXAAUHX29wdGlvbgEPY2FsY01hcmdpblJhdGlvAw1fcmVtYWluTWFyZ2luCF9iYWREZWJ0EV9wb3NpdGlvbk5vdGlvbmFsCQEEZGl2ZAIJAGUCBQ1fcmVtYWluTWFyZ2luBQhfYmFkRGVidAURX3Bvc2l0aW9uTm90aW9uYWwBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CB190cmFkZXIHX29wdGlvbgQNJHQwMjcxNjQyNzI3NQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMjcxNjQyNzI3NQJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAyNzE2NDI3Mjc1Al8yBANwb24IBQ0kdDAyNzE2NDI3Mjc1Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDI3MTY0MjcyNzUCXzQEDSR0MDI3MjgxMjczNzQJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFB19vcHRpb24EEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDAyNzI4MTI3Mzc0Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwMjcyODEyNzM3NAJfMgQNJHQwMjczNzkyNzU0NQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMjczNzkyNzU0NQJfMQQHYmFkRGVidAgFDSR0MDI3Mzc5Mjc1NDUCXzIJAQ9jYWxjTWFyZ2luUmF0aW8DBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFEHBvc2l0aW9uTm90aW9uYWwBDmdldE1hcmdpblJhdGlvAQdfdHJhZGVyCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAEbZ2V0UGFydGlhbExpcXVpZGF0aW9uQW1vdW50AgdfdHJhZGVyDV9wb3NpdGlvblNpemUEDG1heGltdW1SYXRpbwkBBHZtYXgCCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ACQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIJARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAQYbWF4RXhjaGFuZ2VkUG9zaXRpb25TaXplCQEEbXVsZAIJAQNhYnMBBQ1fcG9zaXRpb25TaXplBQxtYXhpbXVtUmF0aW8ECnN3YXBSZXN1bHQJAQpzd2FwT3V0cHV0AwkAZgIFDV9wb3NpdGlvblNpemUAAAUYbWF4RXhjaGFuZ2VkUG9zaXRpb25TaXplBwQcbWF4RXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFCnN3YXBSZXN1bHQCXzEEC3ByaWNlSW1wYWN0CAUKc3dhcFJlc3VsdAJfNwMJAGYCCQEObWF4UHJpY2VJbXBhY3QABQtwcmljZUltcGFjdAUcbWF4RXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEEbXVsZAIJAQNhYnMBBQ1fcG9zaXRpb25TaXplCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ABBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAkBCnN3YXBPdXRwdXQDCQBmAgUNX3Bvc2l0aW9uU2l6ZQAABRVleGNoYW5nZWRQb3NpdGlvblNpemUHAl8xBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50ARVpbnRlcm5hbENsb3NlUG9zaXRpb24CB190cmFkZXIUX2NoZWNrTWF4UHJpY2VJbXBhY3QEDSR0MDI4Nzg1Mjg5MTMJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDI4Nzg1Mjg5MTMCXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwMjg3ODUyODkxMwJfMgQUcG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAyODc4NTI4OTEzAl8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDI4Nzg1Mjg5MTMCXzQEDXVucmVhbGl6ZWRQbmwICQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QCXzIEDSR0MDI5MDA4MjkxNzYJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDI5MDA4MjkxNzYCXzEEB2JhZERlYnQIBQ0kdDAyOTAwODI5MTc2Al8yBBVleGNoYW5nZWRQb3NpdGlvblNpemUJAQEtAQUMcG9zaXRpb25TaXplBAtyZWFsaXplZFBubAUNdW5yZWFsaXplZFBubAQNbWFyZ2luVG9WYXVsdAkBAS0BBQxyZW1haW5NYXJnaW4EDSR0MDI5MzAzMjk1NzcJAQpzd2FwT3V0cHV0AwkAZgIFDHBvc2l0aW9uU2l6ZQAACQEDYWJzAQUMcG9zaXRpb25TaXplBRRfY2hlY2tNYXhQcmljZUltcGFjdAQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDI5MzAzMjk1NzcCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyOTMwMzI5NTc3Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyOTMwMzI5NTc3Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwMjkzMDMyOTU3NwJfNAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDAyOTMwMzI5NTc3Al81BA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDAyOTMwMzI5NTc3Al82BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUUcG9zaXRpb25PcGVuTm90aW9uYWwJAJ8KDQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplBQdiYWREZWJ0BQtyZWFsaXplZFBubAUNbWFyZ2luVG9WYXVsdAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQBlAgkBEG9wZW5JbnRlcmVzdExvbmcAAwkAZgIFDHBvc2l0aW9uU2l6ZQAABRRwb3NpdGlvbk9wZW5Ob3Rpb25hbAAACQBlAgkBEW9wZW5JbnRlcmVzdFNob3J0AAMJAGYCAAAFDHBvc2l0aW9uU2l6ZQUUcG9zaXRpb25PcGVuTm90aW9uYWwAAAEQZ2V0VHdhcFNwb3RQcmljZQAECG1pbnV0ZUlkCQBpAgkAaQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wAOgHADwEDXN0YXJ0TWludXRlSWQJAGUCBQhtaW51dGVJZAUNVFdBUF9JTlRFUlZBTAQHbGlzdFN0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ1rX2xhc3REYXRhU3RyAgAEBGxpc3QJALUJAgUHbGlzdFN0cgIBLAoBCGZpbHRlckZuAgthY2N1bXVsYXRvcgRuZXh0AwkAZwIFDXN0YXJ0TWludXRlSWQJAQ1wYXJzZUludFZhbHVlAQUEbmV4dAkAzQgCBQthY2N1bXVsYXRvcgkBDXBhcnNlSW50VmFsdWUBBQRuZXh0BQthY2N1bXVsYXRvcgQFbGlzdEYKAAIkbAUEbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZmlsdGVyRm4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQIbWF4SW5kZXgDCQBmAgkAkAMBBQVsaXN0RgAACQCWAwEFBWxpc3RGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbGlzdAAABAxsYXN0TWludXRlSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUOa19sYXN0TWludXRlSWQAAAQWZW5kTGFzdEN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUMbGFzdE1pbnV0ZUlkAAAEDGVuZExhc3RQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBQxsYXN0TWludXRlSWQAAAQSbm93Q3VtdWxhdGl2ZVByaWNlCQBkAgUWZW5kTGFzdEN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUMbGFzdE1pbnV0ZUlkBQxlbmRMYXN0UHJpY2UEGHN0YXJ0TGFzdEN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUIbWF4SW5kZXgAAAQOc3RhcnRMYXN0UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFE2tfdHdhcERhdGFMYXN0UHJpY2UCAV8JAKQDAQUIbWF4SW5kZXgAAAQUc3RhcnRDdW11bGF0aXZlUHJpY2UJAGQCBRhzdGFydExhc3RDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUNc3RhcnRNaW51dGVJZAUIbWF4SW5kZXgFDnN0YXJ0TGFzdFByaWNlCQBpAgkAZQIFEm5vd0N1bXVsYXRpdmVQcmljZQUUc3RhcnRDdW11bGF0aXZlUHJpY2UFDVRXQVBfSU5URVJWQUwBE2dldFRlcm1pbmFsQW1tU3RhdGUABA1fcG9zaXRpb25TaXplCQERdG90YWxQb3NpdGlvblNpemUAAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAlAoCCQEGcXRBc3RSAAkBBmJzQXN0UgAECWRpcmVjdGlvbgkAZgIFDV9wb3NpdGlvblNpemUAAAQNJHQwMzE3MDAzMTg3OQkBCnN3YXBPdXRwdXQDBQlkaXJlY3Rpb24JAQNhYnMBBQ1fcG9zaXRpb25TaXplBwQVY3VycmVudE5ldE1hcmtldFZhbHVlCAUNJHQwMzE3MDAzMTg3OQJfMQQZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQgFDSR0MDMxNzAwMzE4NzkCXzIEGHRlcm1pbmFsQmFzZUFzc2V0UmVzZXJ2ZQgFDSR0MDMxNzAwMzE4NzkCXzMJAJQKAgUZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQUYdGVybWluYWxCYXNlQXNzZXRSZXNlcnZlARNnZXRRdW90ZUFzc2V0V2VpZ2h0BBBiYXNlQXNzZXRSZXNlcnZlEXRvdGFsUG9zaXRpb25TaXplEXF1b3RlQXNzZXRSZXNlcnZlC3RhcmdldFByaWNlBAFiCQC2AgEFEGJhc2VBc3NldFJlc2VydmUEAnN6CQC2AgEFEXRvdGFsUG9zaXRpb25TaXplBAFxCQC2AgEFEXF1b3RlQXNzZXRSZXNlcnZlBAFwCQC2AgEFC3RhcmdldFByaWNlBANiczIJAQVicG93ZAIJALcCAgUBYgUCc3oJALYCAQkAaAIAAgUMREVDSU1BTF9VTklUBARxYnMyCQEFYm11bGQCBQFxBQNiczIEA3BzNAkAuQICCQC2AgEABAkBBWJtdWxkAgUBcAUCc3oEA3NxcgkBBmJzcXJ0ZAEJAQVibXVsZAIFBHFiczIJALgCAgUBcQUDcHM0BAJicQkBBWJtdWxkAgUBYgUBcQQCcXMJAQVibXVsZAIFAXEFAnN6BAN0b3AJALcCAgkAtwICCQC+AgEFA3NxcgUCYnEFAnFzBANib3QJALkCAgkAtgIBAAIJAQVibXVsZAIFAXEFAnN6BAZyZXN1bHQJAQViZGl2ZAIFA3RvcAUDYm90CQCgAwEFBnJlc3VsdAEUZ2V0U3luY1Rlcm1pbmFsUHJpY2UDDl90ZXJtaW5hbFByaWNlB19xdEFzdFIHX2JzQXN0UgQNX3Bvc2l0aW9uU2l6ZQkBEXRvdGFsUG9zaXRpb25TaXplAAMJAAACBQ1fcG9zaXRpb25TaXplAAAECW5ld1F0QXN0VwkBBGRpdmQCCQEEbXVsZAIFDl90ZXJtaW5hbFByaWNlBQdfYnNBc3RSBQdfcXRBc3RSCQCVCgMFCW5ld1F0QXN0VwUMREVDSU1BTF9VTklUAAAECWRpcmVjdGlvbgkAZgIFDV9wb3NpdGlvblNpemUAAAQVY3VycmVudE5ldE1hcmtldFZhbHVlCAkBCnN3YXBPdXRwdXQDBQlkaXJlY3Rpb24JAQNhYnMBBQ1fcG9zaXRpb25TaXplBwJfMQQJbmV3UXRBc3RXCQETZ2V0UXVvdGVBc3NldFdlaWdodAQFB19ic0FzdFIFDV9wb3NpdGlvblNpemUFB19xdEFzdFIFDl90ZXJtaW5hbFByaWNlBAluZXdCc0FzdFcFDERFQ0lNQUxfVU5JVAQNbWFyZ2luVG9WYXVsdAgJAStnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubEJ5VmFsdWVzBwUNX3Bvc2l0aW9uU2l6ZQUVY3VycmVudE5ldE1hcmtldFZhbHVlBQdfcXRBc3RSBQluZXdRdEFzdFcFB19ic0FzdFIFCW5ld0JzQXN0VwUPUE5MX09QVElPTl9TUE9UAl8yCQCVCgMFCW5ld1F0QXN0VwUJbmV3QnNBc3RXBQ1tYXJnaW5Ub1ZhdWx0AQpnZXRGdW5kaW5nAAQPdW5kZXJseWluZ1ByaWNlCQEOZ2V0T3JhY2xlUHJpY2UABA1zcG90VHdhcFByaWNlCQEQZ2V0VHdhcFNwb3RQcmljZQAEB3ByZW1pdW0JAGUCBQ1zcG90VHdhcFByaWNlBQ91bmRlcmx5aW5nUHJpY2UDAwMJAAACCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAYJAAACCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAAABgkBDmlzTWFya2V0Q2xvc2VkAAkAlAoCAAAAAAMJAGYCAAAFB3ByZW1pdW0EFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUHcHJlbWl1bQkBFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAUHT05FX0RBWQQTbG9uZ1ByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJARV0b3RhbExvbmdQb3NpdGlvblNpemUACQCUCgIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBRNsb25nUHJlbWl1bUZyYWN0aW9uBBNsb25nUHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUHcHJlbWl1bQkBFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAUHT05FX0RBWQQUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBRNsb25nUHJlbWl1bUZyYWN0aW9uCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQCUCgIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBRNsb25nUHJlbWl1bUZyYWN0aW9uAQ5nZXRBZGp1c3RlZEZlZQILX2FydGlmYWN0SWQQX2Jhc2VGZWVEaXNjb3VudAQKYmFzZUZlZVJhdwkBA2ZlZQAEB2Jhc2VGZWUJAQRtdWxkAgUKYmFzZUZlZVJhdwUQX2Jhc2VGZWVEaXNjb3VudAQNJHQwMzQ5MjczNTQyMgMJAQIhPQIFC19hcnRpZmFjdElkAgAEDGFydGlmYWN0S2luZAkBBHN0ckECCQERbmZ0TWFuYWdlckFkZHJlc3MACQEOdG9Db21wb3NpdGVLZXkCBQxrX3Rva2VuX3R5cGUFC19hcnRpZmFjdElkAwkAAAIFDGFydGlmYWN0S2luZAUYRkVFX1JFRFVDVElPTl9UT0tFTl9UWVBFBAlyZWR1Y3Rpb24JAQRpbnRBAgkBEW5mdE1hbmFnZXJBZGRyZXNzAAkBDnRvQ29tcG9zaXRlS2V5AgUNa190b2tlbl9wYXJhbQULX2FydGlmYWN0SWQEC2FkanVzdGVkRmVlCQEEbXVsZAIFB2Jhc2VGZWUFCXJlZHVjdGlvbgkAlAoCBQthZGp1c3RlZEZlZQYJAAIBAhlJbnZhbGlkIGF0dGFjaGVkIGFydGlmYWN0CQCUCgIFB2Jhc2VGZWUHBAthZGp1c3RlZEZlZQgFDSR0MDM0OTI3MzU0MjICXzEEDGJ1cm5BcnRpZmFjdAgFDSR0MDM0OTI3MzU0MjICXzIJAJQKAgULYWRqdXN0ZWRGZWUFDGJ1cm5BcnRpZmFjdAEXaXNTYW1lQXNzZXRPck5vUG9zaXRpb24CB190cmFkZXIIX2Fzc2V0SWQED29sZFBvc2l0aW9uU2l6ZQgJAQtnZXRQb3NpdGlvbgEFB190cmFkZXICXzEDCQAAAgUPb2xkUG9zaXRpb25TaXplAAAGCQAAAgkBEGdldFBvc2l0aW9uQXNzZXQBBQdfdHJhZGVyBQhfYXNzZXRJZAELaXNTYW1lQXNzZXQCB190cmFkZXIIX2Fzc2V0SWQJAAACCQEQZ2V0UG9zaXRpb25Bc3NldAEFB190cmFkZXIFCF9hc3NldElkAR5nZXRCb3Jyb3dlZEJ5VHJhZGVySW5NYXJrZXRLZXkDBF9hbW0IX2Fzc2V0SWQHX3RyYWRlcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUga190cmFkZXJfbWFya2V0X2Fzc2V0X2NvbGxhdGVyYWwCAV8FBF9hbW0CAV8FCF9hc3NldElkAgFfBQdfdHJhZGVyARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQdfdHJhZGVyBA1wb3NpdGlvbkFzc2V0CQEQZ2V0UG9zaXRpb25Bc3NldAEFB190cmFkZXIDCQAAAgUNcG9zaXRpb25Bc3NldAkA2AQBCQEKcXVvdGVBc3NldAAJAJQKAgAABQ1wb3NpdGlvbkFzc2V0BANrZXkJAR5nZXRCb3Jyb3dlZEJ5VHJhZGVySW5NYXJrZXRLZXkDCQClCAEFBHRoaXMFDXBvc2l0aW9uQXNzZXQFB190cmFkZXIEBmJvcnJvdwkBC3ZhbHVlT3JFbHNlAgkAmggCCQERY29sbGF0ZXJhbEFkZHJlc3MABQNrZXkAAAkAlAoCBQZib3Jyb3cFDXBvc2l0aW9uQXNzZXQBGGdldEZvclRyYWRlcldpdGhBcnRpZmFjdAIHX3RyYWRlcgtfYXJ0aWZhY3RJZAQQZG9HZXRGZWVEaXNjb3VudAkA/AcECQEMbWluZXJBZGRyZXNzAAISY29tcHV0ZUZlZURpc2NvdW50CQDMCAIFB190cmFkZXIFA25pbAUDbmlsAwkAAAIFEGRvR2V0RmVlRGlzY291bnQFEGRvR2V0RmVlRGlzY291bnQEC2ZlZURpc2NvdW50BAckbWF0Y2gwBRBkb0dldEZlZURpc2NvdW50AwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAkAAgECIUludmFsaWQgY29tcHV0ZUZlZURpc2NvdW50IHJlc3VsdAQNJHQwMzY2NTMzNjcyNwkBDmdldEFkanVzdGVkRmVlAgULX2FydGlmYWN0SWQFC2ZlZURpc2NvdW50BAthZGp1c3RlZEZlZQgFDSR0MDM2NjUzMzY3MjcCXzEEDGJ1cm5BcnRpZmFjdAgFDSR0MDM2NjUzMzY3MjcCXzIJAJQKAgULYWRqdXN0ZWRGZWUFDGJ1cm5BcnRpZmFjdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgENZ2V0QXJ0aWZhY3RJZAEBaQQKYXJ0aWZhY3RJZAMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAEJANgEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQCEkludmFsaWQgYXJ0aWZhY3RJZAIABQphcnRpZmFjdElkAQ1kaXN0cmlidXRlRmVlAQpfZmVlQW1vdW50BAxmZWVUb1N0YWtlcnMJAQRtdWxkAgUKX2ZlZUFtb3VudAkBE2ZlZVRvU3Rha2Vyc1BlcmNlbnQABApmZWVUb1ZhdWx0CQBlAgUKX2ZlZUFtb3VudAUMZmVlVG9TdGFrZXJzCQCUCgIFDGZlZVRvU3Rha2VycwUKZmVlVG9WYXVsdAEOdXBkYXRlU2V0dGluZ3MMEF9pbml0TWFyZ2luUmF0aW8EX21tchRfbGlxdWlkYXRpb25GZWVSYXRpbw5fZnVuZGluZ1BlcmlvZARfZmVlDF9zcHJlYWRMaW1pdA9fbWF4UHJpY2VJbXBhY3QYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvD19tYXhQcmljZVNwcmVhZBBfbWF4T3Blbk5vdGlvbmFsFF9mZWVUb1N0YWtlcnNQZXJjZW50D19tYXhPcmFjbGVEZWxheQkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19pbml0TWFyZ2luUmF0aW8FEF9pbml0TWFyZ2luUmF0aW8JAMwIAgkBDEludGVnZXJFbnRyeQIFGGtfbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwUEX21tcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa19saXF1aWRhdGlvbkZlZVJhdGlvBRRfbGlxdWlkYXRpb25GZWVSYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa19mdW5kaW5nUGVyaW9kBQ5fZnVuZGluZ1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFa19mZWUFBF9mZWUJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfc3ByZWFkTGltaXQFDF9zcHJlYWRMaW1pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa19tYXhQcmljZUltcGFjdAUPX21heFByaWNlSW1wYWN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBRhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8JAMwIAgkBDEludGVnZXJFbnRyeQIFEGtfbWF4UHJpY2VTcHJlYWQFD19tYXhQcmljZVNwcmVhZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19tYXhPcGVuTm90aW9uYWwFEF9tYXhPcGVuTm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtfZmVlVG9TdGFrZXJzUGVyY2VudAUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtfbWF4T3JhY2xlRGVsYXkFFF9mZWVUb1N0YWtlcnNQZXJjZW50BQNuaWwBDXVwZGF0ZUZ1bmRpbmcFEV9uZXh0RnVuZGluZ0Jsb2NrJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbiVfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uEF9sb25nRnVuZGluZ1JhdGURX3Nob3J0RnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfbmV4dEZ1bmRpbmdCbG9jawURX25leHRGdW5kaW5nQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFEWtfbG9uZ0Z1bmRpbmdSYXRlBRBfbG9uZ0Z1bmRpbmdSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX3Nob3J0RnVuZGluZ1JhdGUFEV9zaG9ydEZ1bmRpbmdSYXRlBQNuaWwBE3VwZGF0ZVBvc2l0aW9uQXNzZXQCCF9hZGRyZXNzCF9hc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFD2tfcG9zaXRpb25Bc3NldAUIX2FkZHJlc3MFCF9hc3NldElkBQNuaWwBH2luY3JlbWVudFBvc2l0aW9uU2VxdWVuY2VOdW1iZXICDWlzTmV3UG9zaXRpb24IX2FkZHJlc3MDBQ1pc05ld1Bvc2l0aW9uBA9jdXJyZW50U2VxdWVuY2UJAQxsYXN0U2VxdWVuY2UACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRJrX3Bvc2l0aW9uU2VxdWVuY2UFCF9hZGRyZXNzCQBkAgUPY3VycmVudFNlcXVlbmNlAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFCmtfc2VxdWVuY2UJAGQCBQ9jdXJyZW50U2VxdWVuY2UAAQUDbmlsBQNuaWwBDnVwZGF0ZVBvc2l0aW9uBQhfYWRkcmVzcwVfc2l6ZQdfbWFyZ2luDV9vcGVuTm90aW9uYWwgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwUFX3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzBQdfbWFyZ2luCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwUNX29wZW5Ob3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUIX2FkZHJlc3MFIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQNuaWwBCmFwcGVuZFR3YXABBl9wcmljZQQIbWludXRlSWQJAGkCCQBpAggFCWxhc3RCbG9jawl0aW1lc3RhbXAA6AcAPAQQcHJldmlvdXNNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rX2xhc3RNaW51dGVJZAAAAwkAZgIFEHByZXZpb3VzTWludXRlSWQFCG1pbnV0ZUlkCQACAQIRVFdBUCBvdXQtb2Ytb3JkZXIEDGxhc3RNaW51dGVJZAMJAAACBRBwcmV2aW91c01pbnV0ZUlkAAAFCG1pbnV0ZUlkBRBwcmV2aW91c01pbnV0ZUlkAwkAZgIFCG1pbnV0ZUlkBRBwcmV2aW91c01pbnV0ZUlkBBNwcmV2Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIBXwkApAMBBRBwcmV2aW91c01pbnV0ZUlkAAAECXByZXZQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBRBwcmV2aW91c01pbnV0ZUlkBQZfcHJpY2UEE2xhc3RDdW11bGF0aXZlUHJpY2UJAGQCBRNwcmV2Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBQxsYXN0TWludXRlSWQFCXByZXZQcmljZQQEbGlzdAkBC3B1c2hUb1F1ZXVlAwkBCXN0clRvTGlzdAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUNa19sYXN0RGF0YVN0cgIABQ1UV0FQX0lOVEVSVkFMCQCkAwEFCG1pbnV0ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQkApAMBBQhtaW51dGVJZAUTbGFzdEN1bXVsYXRpdmVQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBQhtaW51dGVJZAUGX3ByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19sYXN0TWludXRlSWQFCG1pbnV0ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtfbGFzdERhdGFTdHIJAQlsaXN0VG9TdHIBBQRsaXN0BQNuaWwEGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAAABBNwcmV2Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAAABAlwcmV2UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBRh0d2FwRGF0YVByZXZpb3VzTWludXRlSWQFBl9wcmljZQQTbGFzdEN1bXVsYXRpdmVQcmljZQkAZAIFE3ByZXZDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUIbWludXRlSWQFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAUJcHJldlByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQkApAMBBQhtaW51dGVJZAUTbGFzdEN1bXVsYXRpdmVQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBQhtaW51dGVJZAUGX3ByaWNlBQNuaWwBEXVwZGF0ZUFtbVJlc2VydmVzAgdfcXRBc3RSB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfcXVvdGVBc3NldFJlc2VydmUFB19xdEFzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfYmFzZUFzc2V0UmVzZXJ2ZQUHX2JzQXN0UgUDbmlsARB1cGRhdGVBbW1XZWlnaHRzAgdfcXRBc3RXB19ic0FzdFcJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfcXVvdGVBc3NldFdlaWdodAUHX3F0QXN0VwkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19iYXNlQXNzZXRXZWlnaHQFB19ic0FzdFcFA25pbAEJdXBkYXRlQW1tCAdfcXRBc3RSB19ic0FzdFIXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIVX29wZW5JbnRlcmVzdE5vdGlvbmFsFl90b3RhbExvbmdQb3NpdGlvblNpemUXX3RvdGFsU2hvcnRQb3NpdGlvblNpemUWX3RvdGFsTG9uZ09wZW5Ob3Rpb25hbBdfdG90YWxTaG9ydE9wZW5Ob3Rpb25hbAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcAAwkBAiE9AgkAZQIFFl90b3RhbExvbmdQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhJbnZhbGlkIEFNTSBzdGF0ZSBkYXRhOiAJAKQDAQUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIEICsgIAkApAMBBRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIEICE9IAkApAMBBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAzggCCQDOCAIJARF1cGRhdGVBbW1SZXNlcnZlcwIFB19xdEFzdFIFB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfdG90YWxQb3NpdGlvblNpemUFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrX29wZW5JbnRlcmVzdE5vdGlvbmFsBRVfb3BlbkludGVyZXN0Tm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFF2tfdG90YWxMb25nUG9zaXRpb25TaXplBRZfdG90YWxMb25nUG9zaXRpb25TaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX29wZW5JbnRlcmVzdExvbmcFFl90b3RhbExvbmdPcGVuTm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfb3BlbkludGVyZXN0U2hvcnQFF190b3RhbFNob3J0T3Blbk5vdGlvbmFsBQNuaWwJAQphcHBlbmRUd2FwAQkBBGRpdmQCCQEEbXVsZAIFB19xdEFzdFIFB19xdEFzdFcJAQRtdWxkAgUHX2JzQXN0UgUHX2JzQXN0VwEOZGVsZXRlUG9zaXRpb24BCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBRBrX3Bvc2l0aW9uTWFyZ2luBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBQ9rX3Bvc2l0aW9uQXNzZXQFCF9hZGRyZXNzBQNuaWwBCHdpdGhkcmF3AghfYWRkcmVzcwdfYW1vdW50BAdiYWxhbmNlCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAGYCBQdfYW1vdW50BQdiYWxhbmNlCQACAQkArAICCQCsAgIJAKwCAgITVW5hYmxlIHRvIHdpdGhkcmF3IAkApAMBBQdfYW1vdW50AhcgZnJvbSBjb250cmFjdCBiYWxhbmNlIAkApAMBBQdiYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCF9hZGRyZXNzBQdfYW1vdW50CQEKcXVvdGVBc3NldAAFA25pbAENdXBkYXRlQmFsYW5jZQEBaQMJAGYCAAAFAWkJAAIBAgdCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrX2JhbGFuY2UFAWkFA25pbAELdHJhbnNmZXJGZWUBAWkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBDnN0YWtpbmdBZGRyZXNzAAUBaQkBCnF1b3RlQXNzZXQABQNuaWwBDmRvQnVybkFydGlmYWN0Ag1fYnVybkFydGlmYWN0AWkDBQ1fYnVybkFydGlmYWN0CQDMCAIJAQRCdXJuAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQCEEludmFsaWQgYXJ0aWZhY3QAAQUDbmlsBQNuaWwXAWkBBXBhdXNlAAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhRJbnZhbGlkIHBhdXNlIHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIa19wYXVzZWQGBQNuaWwBaQEHdW5wYXVzZQADCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIWSW52YWxpZCB1bnBhdXNlIHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIa19wYXVzZWQHBQNuaWwBaQEMc2V0Q2xvc2VPbmx5AAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhtJbnZhbGlkIHNldENsb3NlT25seSBwYXJhbXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFC2tfY2xvc2VPbmx5BgUDbmlsAWkBDnVuc2V0Q2xvc2VPbmx5AAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAh1JbnZhbGlkIHVuc2V0Q2xvc2VPbmx5IHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgULa19jbG9zZU9ubHkHBQNuaWwBaQEMYWRkTGlxdWlkaXR5ARFfcXVvdGVBc3NldEFtb3VudAMDCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MABgkAZwIAAAURX3F1b3RlQXNzZXRBbW91bnQJAAIBAhtJbnZhbGlkIGFkZExpcXVpZGl0eSBwYXJhbXMEB19xdEFzdFIJAQZxdEFzdFIABAdfYnNBc3RSCQEGYnNBc3RSAAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcABAVwcmljZQkBBGRpdmQCCQEEbXVsZAIFB19xdEFzdFIFB19xdEFzdFcJAQRtdWxkAgUHX2JzQXN0UgUHX2JzQXN0VwQLcXRBc3RSQWZ0ZXIJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQUYmFzZUFzc2V0QW1vdW50VG9BZGQJAGUCCQEEZGl2ZAIJAQRtdWxkAgULcXRBc3RSQWZ0ZXIFB19xdEFzdFcFBXByaWNlBQdfYnNBc3RSBAtic0FzdFJBZnRlcgkAZAIFB19ic0FzdFIFFGJhc2VBc3NldEFtb3VudFRvQWRkBA0kdDA0NTc0OTQ1OTAwCQEUZ2V0U3luY1Rlcm1pbmFsUHJpY2UDCQEOZ2V0T3JhY2xlUHJpY2UABQtxdEFzdFJBZnRlcgULYnNBc3RSQWZ0ZXIEE25ld1F1b3RlQXNzZXRXZWlnaHQIBQ0kdDA0NTc0OTQ1OTAwAl8xBBJuZXdCYXNlQXNzZXRXZWlnaHQIBQ0kdDA0NTc0OTQ1OTAwAl8yBA1tYXJnaW5Ub1ZhdWx0CAUNJHQwNDU3NDk0NTkwMAJfMwQNZG9FeGNoYW5nZVBuTAMJAQIhPQIFDW1hcmdpblRvVmF1bHQAAAQNZG9FeGNoYW5nZVBuTAkA/AcECQEMdmF1bHRBZGRyZXNzAAIVZXhjaGFuZ2VGcmVlQW5kTG9ja2VkCQDMCAIFDW1hcmdpblRvVmF1bHQFA25pbAUDbmlsAwkAAAIFDWRvRXhjaGFuZ2VQbkwFDWRvRXhjaGFuZ2VQbkwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFDWRvRXhjaGFuZ2VQbkwFDWRvRXhjaGFuZ2VQbkwJAM4IAgkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyCQEQdXBkYXRlQW1tV2VpZ2h0cwIFE25ld1F1b3RlQXNzZXRXZWlnaHQFEm5ld0Jhc2VBc3NldFdlaWdodAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9yZW1vdmVMaXF1aWRpdHkBEV9xdW90ZUFzc2V0QW1vdW50AwMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAGCQBnAgAABRFfcXVvdGVBc3NldEFtb3VudAkAAgECHkludmFsaWQgcmVtb3ZlTGlxdWlkaXR5IHBhcmFtcwQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAEBXByaWNlCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXBBdiYXNlQXNzZXRBbW91bnRUb1JlbW92ZQkBBGRpdmQCBRFfcXVvdGVBc3NldEFtb3VudAUFcHJpY2UEC3F0QXN0UkFmdGVyCQBlAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQEC2JzQXN0UkFmdGVyCQBlAgUHX2JzQXN0UgUXYmFzZUFzc2V0QW1vdW50VG9SZW1vdmUJARF1cGRhdGVBbW1SZXNlcnZlcwIFC3F0QXN0UkFmdGVyBQtic0FzdFJBZnRlcgFpAQ5jaGFuZ2VTZXR0aW5ncwwQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdBhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8PX21heFByaWNlU3ByZWFkEF9tYXhPcGVuTm90aW9uYWwUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQPX21heE9yYWNsZURlbGF5AwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECHUludmFsaWQgY2hhbmdlU2V0dGluZ3MgcGFyYW1zCQEOdXBkYXRlU2V0dGluZ3MMBRBfaW5pdE1hcmdpblJhdGlvBQRfbW1yBRRfbGlxdWlkYXRpb25GZWVSYXRpbwUOX2Z1bmRpbmdQZXJpb2QFBF9mZWUFDF9zcHJlYWRMaW1pdAUPX21heFByaWNlSW1wYWN0BRhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8FD19tYXhQcmljZVNwcmVhZAUQX21heE9wZW5Ob3Rpb25hbAUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQFD19tYXhPcmFjbGVEZWxheQFpAQppbml0aWFsaXplEgdfcXRBc3RSB19ic0FzdFIOX2Z1bmRpbmdQZXJpb2QQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvBF9mZWUHX29yYWNsZQpfb3JhY2xlS2V5D19vcmFjbGVCbG9ja0tleQxfY29vcmRpbmF0b3IMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdBhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8PX21heFByaWNlU3ByZWFkEF9tYXhPcGVuTm90aW9uYWwUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQPX21heE9yYWNsZURlbGF5AwMDAwMDAwMDAwMDAwMDAwkAZwIAAAUHX3F0QXN0UgYJAGcCAAAFB19ic0FzdFIGCQBnAgAABQ5fZnVuZGluZ1BlcmlvZAYJAGcCAAAFEF9pbml0TWFyZ2luUmF0aW8GCQBnAgAABQRfbW1yBgkAZwIAAAUUX2xpcXVpZGF0aW9uRmVlUmF0aW8GCQBnAgAABQRfZmVlBgkAZwIAAAUMX3NwcmVhZExpbWl0BgkAZwIAAAUPX21heFByaWNlSW1wYWN0BgkAZwIAAAUYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBgkAZwIAAAUPX21heFByaWNlU3ByZWFkBgkAZwIAAAUQX21heE9wZW5Ob3Rpb25hbAYJAGcCAAAFFF9mZWVUb1N0YWtlcnNQZXJjZW50BgkAZgIFFF9mZWVUb1N0YWtlcnNQZXJjZW50BQxERUNJTUFMX1VOSVQGCQBnAgAABQ9fbWF4T3JhY2xlRGVsYXkGCQELaW5pdGlhbGl6ZWQACQACAQIdSW52YWxpZCBpbml0aWFsaXplIHBhcmFtZXRlcnMJAM4IAgkAzggCCQDOCAIJAM4IAgkBCXVwZGF0ZUFtbQgFB19xdEFzdFIFB19ic0FzdFIAAAAAAAAAAAAAAAAJAQ51cGRhdGVTZXR0aW5ncwwFEF9pbml0TWFyZ2luUmF0aW8FBF9tbXIFFF9saXF1aWRhdGlvbkZlZVJhdGlvBQ5fZnVuZGluZ1BlcmlvZAUEX2ZlZQUMX3NwcmVhZExpbWl0BQ9fbWF4UHJpY2VJbXBhY3QFGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwUPX21heFByaWNlU3ByZWFkBRBfbWF4T3Blbk5vdGlvbmFsBRRfZmVlVG9TdGFrZXJzUGVyY2VudAUPX21heE9yYWNsZURlbGF5CQENdXBkYXRlRnVuZGluZwUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUOX2Z1bmRpbmdQZXJpb2QAAAAAAAAAAAkBDXVwZGF0ZUJhbGFuY2UBAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWtfb3JhBQdfb3JhY2xlCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtfb3JhX2tleQUKX29yYWNsZUtleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rX29yYV9ibG9ja19rZXkFD19vcmFjbGVCbG9ja0tleQkAzAgCCQELU3RyaW5nRW50cnkCBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwUMX2Nvb3JkaW5hdG9yBQNuaWwBaQEQZGVjcmVhc2VQb3NpdGlvbgMHX2Ftb3VudAlfbGV2ZXJhZ2UTX21pbkJhc2VBc3NldEFtb3VudAQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBAdfdHJhZGVyCQEPZ2V0QWN0dWFsQ2FsbGVyAQUBaQMDAwMDAwkAZwIAAAUHX2Ftb3VudAYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DCQEEZGl2ZAIFDERFQ0lNQUxfVU5JVAUJX2xldmVyYWdlCQEPaW5pdE1hcmdpblJhdGlvAAYGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUHX3RyYWRlcgYJAQZwYXVzZWQABgkBDmlzTWFya2V0Q2xvc2VkAAkAAgECI0ludmFsaWQgZGVjcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDA0OTc2NzQ5OTA3CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA0OTc2NzQ5OTA3Al8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDQ5NzY3NDk5MDcCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNDk3Njc0OTkwNwJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA0OTc2NzQ5OTA3Al80BApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDA1MDA4MDUwMTg0CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEE29sZFBvc2l0aW9uTm90aW9uYWwIBQ0kdDA1MDA4MDUwMTg0Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwNTAwODA1MDE4NAJfMgQNJHQwNTAxOTA1Mjg0OAMJAGYCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBQxvcGVuTm90aW9uYWwEDSR0MDUwNjA1NTA3ODkJAQlzd2FwSW5wdXQCBQVpc0FkZAUMb3Blbk5vdGlvbmFsBBVleGNoYW5nZWRQb3NpdGlvblNpemUIBQ0kdDA1MDYwNTUwNzg5Al8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTA2MDU1MDc4OQJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTA2MDU1MDc4OQJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDUwNjA1NTA3ODkCXzQEGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50BRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMHCQACAQkArAICCQCsAgIJAKwCAgIlVG9vIGxpdHRsZSBiYXNlIGFzc2V0IGV4Y2hhbmdlZCwgZ290IAkApAMBBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMCCiBleHBlY3RlZCAJAKQDAQUTX21pbkJhc2VBc3NldEFtb3VudAQLcmVhbGl6ZWRQbmwJAQRkaXZkAgkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUEDSR0MDUxMjI2NTE0NzEJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC3JlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDA1MTIyNjUxNDcxAl8xBAdiYWREZWJ0CAUNJHQwNTEyMjY1MTQ3MQJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDA1MTIyNjUxNDcxAl8zBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQxvcGVuTm90aW9uYWwEEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIFDXVucmVhbGl6ZWRQbmwFC3JlYWxpemVkUG5sBBJyZW1haW5PcGVuTm90aW9uYWwDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQBlAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkAZAIFEnVucmVhbGl6ZWRQbmxBZnRlcgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUJAJ4KDAUPbmV3UG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4JAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIJAGUCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABQxvcGVuTm90aW9uYWwJAGUCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEQb3BlbkludGVyZXN0TG9uZwADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAFDG9wZW5Ob3Rpb25hbAAACQBlAgkBEW9wZW5JbnRlcmVzdFNob3J0AAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQUMb3Blbk5vdGlvbmFsAAAJAAIBAhRDbG9zZSBwb3NpdGlvbiBmaXJzdAQPbmV3UG9zaXRpb25TaXplCAUNJHQwNTAxOTA1Mjg0OAJfMQQXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4IBQ0kdDA1MDE5MDUyODQ4Al8yBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDUwMTkwNTI4NDgCXzMEFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCAUNJHQwNTAxOTA1Mjg0OAJfNAQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTAxOTA1Mjg0OAJfNQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDUwMTkwNTI4NDgCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA1MDE5MDUyODQ4Al83BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNTAxOTA1Mjg0OAJfOAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA1MDE5MDUyODQ4Al85BA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA1MDE5MDUyODQ4A18xMAQadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA1MDE5MDUyODQ4A18xMQQbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNTAxOTA1Mjg0OANfMTIEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPbmV3UG9zaXRpb25TaXplBRduZXdQb3NpdGlvblJlbWFpbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCQEJdXBkYXRlQW1tCAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyBRp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcgUbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGluY3JlYXNlUG9zaXRpb24ECl9kaXJlY3Rpb24JX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQIX3JlZkxpbmsEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkBD2dldEFjdHVhbENhbGxlcgEFAWkECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAhfYXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtfYXNzZXRJZFN0cgkA2AQBCQEFdmFsdWUBBQhfYXNzZXRJZAQMaXNRdW90ZUFzc2V0CQAAAgUIX2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAQRaXNDb2xsYXRlcmFsQXNzZXQJARBpc1doaXRlbGlzdEFzc2V0AQULX2Fzc2V0SWRTdHIDAwMDAwMDAwMDCQECIT0CBQpfZGlyZWN0aW9uBQhESVJfTE9ORwkBAiE9AgUKX2RpcmVjdGlvbgUJRElSX1NIT1JUBwYJAGcCAAAFCl9yYXdBbW91bnQGCQEBIQEJAQtpbml0aWFsaXplZAAGAwkBASEBBQxpc1F1b3RlQXNzZXQJAQEhAQURaXNDb2xsYXRlcmFsQXNzZXQHBgkBASEBCQEXaXNTYW1lQXNzZXRPck5vUG9zaXRpb24CBQdfdHJhZGVyBQtfYXNzZXRJZFN0cgYJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DCQEEZGl2ZAIFDERFQ0lNQUxfVU5JVAUJX2xldmVyYWdlCQEPaW5pdE1hcmdpblJhdGlvAAYGCQEGcGF1c2VkAAYJAQljbG9zZU9ubHkABgkBDmlzTWFya2V0Q2xvc2VkAAkAAgECI0ludmFsaWQgaW5jcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDA1NDMxMDU0Mzk1CQEYZ2V0Rm9yVHJhZGVyV2l0aEFydGlmYWN0AgUHX3RyYWRlcgkBDWdldEFydGlmYWN0SWQBBQFpBAthZGp1c3RlZEZlZQgFDSR0MDU0MzEwNTQzOTUCXzEEDGJ1cm5BcnRpZmFjdAgFDSR0MDU0MzEwNTQzOTUCXzIEDHJhd0ZlZUFtb3VudAkBBG11bGQCBQpfcmF3QW1vdW50BQthZGp1c3RlZEZlZQQHX2Ftb3VudAkAZQIFCl9yYXdBbW91bnQFDHJhd0ZlZUFtb3VudAQTZGlzdHJpYnV0ZUZlZUFtb3VudAMFEWlzQ29sbGF0ZXJhbEFzc2V0BAhkb0JvcnJvdwkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAgZib3Jyb3cJAMwIAgUHX3RyYWRlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhfYXNzZXRJZAUHX2Ftb3VudAUDbmlsAwkAAAIFCGRvQm9ycm93BQhkb0JvcnJvdwQNYmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQAAAgUNYmFsYW5jZUJlZm9yZQUNYmFsYW5jZUJlZm9yZQQGZG9Td2FwCQD8BwQJAQtzd2FwQWRkcmVzcwACBHN3YXAJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCF9hc3NldElkBQxyYXdGZWVBbW91bnQFA25pbAMJAAACBQZkb1N3YXAFBmRvU3dhcAQMYmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAAACBQxiYWxhbmNlQWZ0ZXIFDGJhbGFuY2VBZnRlcgQPZXhjaGFuZ2VkQW1vdW50CQBlAgUMYmFsYW5jZUFmdGVyBQ1iYWxhbmNlQmVmb3JlAwkAAAIFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50BQ9leGNoYW5nZWRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FDHJhd0ZlZUFtb3VudAMJAAACBRNkaXN0cmlidXRlRmVlQW1vdW50BRNkaXN0cmlidXRlRmVlQW1vdW50BA5yZWZlcnJlckZlZUFueQkA/AcECQEPcmVmZXJyYWxBZGRyZXNzAAIVYWNjZXB0UGF5bWVudFdpdGhMaW5rCQDMCAIFB190cmFkZXIJAMwIAgUIX3JlZkxpbmsFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABRNkaXN0cmlidXRlRmVlQW1vdW50BQNuaWwDCQAAAgUOcmVmZXJyZXJGZWVBbnkFDnJlZmVycmVyRmVlQW55BAtyZWZlcnJlckZlZQQHJG1hdGNoMAUOcmVmZXJyZXJGZWVBbnkDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQITSW52YWxpZCByZWZlcnJlckZlZQQJZmVlQW1vdW50CQBlAgUTZGlzdHJpYnV0ZUZlZUFtb3VudAULcmVmZXJyZXJGZWUEDSR0MDU1NzExNTU4NTEJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDU1NzExNTU4NTECXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNTU3MTE1NTg1MQJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA1NTcxMTU1ODUxAl8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDU1NzExNTU4NTECXzQEDWlzTmV3UG9zaXRpb24JAAACBQ9vbGRQb3NpdGlvblNpemUAAAQPaXNTYW1lRGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcJAAACBQpfZGlyZWN0aW9uBQlESVJfU0hPUlQEDmV4cGFuZEV4aXN0aW5nAwkBASEBBQ1pc05ld1Bvc2l0aW9uBQ9pc1NhbWVEaXJlY3Rpb24HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBA0kdDA1NjE0MDU5MTgxAwMFDWlzTmV3UG9zaXRpb24GBQ5leHBhbmRFeGlzdGluZwQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwNTY2MDI1Njc3NQkBCXN3YXBJbnB1dAIFBWlzQWRkBQxvcGVuTm90aW9uYWwEFWFtb3VudEJhc2VBc3NldEJvdWdodAgFDSR0MDU2NjAyNTY3NzUCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1NjYwMjU2Nzc1Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1NjYwMjU2Nzc1Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTY2MDI1Njc3NQJfNAMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50CQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BwkAAgEJAKwCAgkArAICCQCsAgICDUxpbWl0IGVycm9yOiAJAKQDAQkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAIDIDwgCQCkAwEFE19taW5CYXNlQXNzZXRBbW91bnQED25ld1Bvc2l0aW9uU2l6ZQkAZAIFD29sZFBvc2l0aW9uU2l6ZQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BBp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcgkAZAIJARBvcGVuSW50ZXJlc3RMb25nAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAUMb3Blbk5vdGlvbmFsAAAEG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcgkAZAIJARFvcGVuSW50ZXJlc3RTaG9ydAADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUFDG9wZW5Ob3Rpb25hbAAABBlpbmNyZWFzZU1hcmdpblJlcXVpcmVtZW50CQEEZGl2ZAIFDG9wZW5Ob3Rpb25hbAUJX2xldmVyYWdlBA0kdDA1NzM4MzU3NjIyCQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBRlpbmNyZWFzZU1hcmdpblJlcXVpcmVtZW50BAxyZW1haW5NYXJnaW4IBQ0kdDA1NzM4MzU3NjIyAl8xBAJ4MQgFDSR0MDU3MzgzNTc2MjICXzIEAngyCAUNJHQwNTczODM1NzYyMgJfMwMJAQEhAQkBGXJlcXVpcmVOb3RPdmVyU3ByZWFkTGltaXQCBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIJAAIBAhVPdmVyIG1heCBzcHJlYWQgbGltaXQDCQEBIQEJAR1yZXF1aXJlTm90T3Zlck1heE9wZW5Ob3Rpb25hbAIFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIJAAIBAhZPdmVyIG1heCBvcGVuIG5vdGlvbmFsCQCeCgwFD25ld1Bvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luCQBkAgUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9uZXdQb3NpdGlvblNpemUFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgkAZAIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFDG9wZW5Ob3Rpb25hbAkAZAIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AAAJAGQCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQAAAUadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIFG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcgQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwNTg4ODE1ODk5NwkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgkApQgBCAUBaQZjYWxsZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDU4ODgxNTg5OTcCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA1ODg4MTU4OTk3Al8yAwkAZgIFE29sZFBvc2l0aW9uTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAkAAgECLlVzZSBkZWNyZWFzZVBvc2l0aW9uIHRvIGRlY3JlYXNlIHBvc2l0aW9uIHNpemUJAAIBAhRDbG9zZSBwb3NpdGlvbiBmaXJzdAQPbmV3UG9zaXRpb25TaXplCAUNJHQwNTYxNDA1OTE4MQJfMQQXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4IBQ0kdDA1NjE0MDU5MTgxAl8yBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDU2MTQwNTkxODECXzMEFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCAUNJHQwNTYxNDA1OTE4MQJfNAQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTYxNDA1OTE4MQJfNQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDU2MTQwNTkxODECXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA1NjE0MDU5MTgxAl83BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNTYxNDA1OTE4MQJfOAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA1NjE0MDU5MTgxAl85BA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA1NjE0MDU5MTgxA18xMAQadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA1NjE0MDU5MTgxA18xMQQbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNTYxNDA1OTE4MQNfMTIEDSR0MDU5MTg3NTkyNDQJAQ1kaXN0cmlidXRlRmVlAQUJZmVlQW1vdW50BAxmZWVUb1N0YWtlcnMIBQ0kdDA1OTE4NzU5MjQ0Al8xBApmZWVUb1ZhdWx0CAUNJHQwNTkxODc1OTI0NAJfMgQFc3Rha2UDBQxpc1F1b3RlQXNzZXQEBXN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAglhZGRMb2NrZWQJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQdfYW1vdW50BQNuaWwDCQAAAgUFc3Rha2UFBXN0YWtlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQpmZWVUb1ZhdWx0BQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQJbm90aWZ5RmVlCQD8BwQJAQxtaW5lckFkZHJlc3MAAgpub3RpZnlGZWVzCQDMCAIFB190cmFkZXIJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBQlub3RpZnlGZWUFCW5vdGlmeUZlZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPbmV3UG9zaXRpb25TaXplBRduZXdQb3NpdGlvblJlbWFpbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCQEfaW5jcmVtZW50UG9zaXRpb25TZXF1ZW5jZU51bWJlcgIFDWlzTmV3UG9zaXRpb24FB190cmFkZXIJARN1cGRhdGVQb3NpdGlvbkFzc2V0AgUHX3RyYWRlcgULX2Fzc2V0SWRTdHIJAQl1cGRhdGVBbW0IBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIJAQt0cmFuc2ZlckZlZQEFDGZlZVRvU3Rha2VycwkBDXVwZGF0ZUJhbGFuY2UBCQBkAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkBDmRvQnVybkFydGlmYWN0AgUMYnVybkFydGlmYWN0BQFpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWFkZE1hcmdpbgAEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkApQgBCAUBaQZjYWxsZXIECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAhfYXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtfYXNzZXRJZFN0cgkA2AQBCQEFdmFsdWUBBQhfYXNzZXRJZAQMaXNRdW90ZUFzc2V0CQAAAgUIX2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAQRaXNDb2xsYXRlcmFsQXNzZXQJARBpc1doaXRlbGlzdEFzc2V0AQULX2Fzc2V0SWRTdHIDAwMDAwMDAwkBASEBBQxpc1F1b3RlQXNzZXQJAQEhAQURaXNDb2xsYXRlcmFsQXNzZXQHBgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBgkBASEBCQELaXNTYW1lQXNzZXQCBQdfdHJhZGVyBQtfYXNzZXRJZFN0cgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQABgkBCWNsb3NlT25seQAGCQEOaXNNYXJrZXRDbG9zZWQACQACAQIcSW52YWxpZCBhZGRNYXJnaW4gcGFyYW1ldGVycwQNJHQwNjEyMTY2MTMwMQkBGGdldEZvclRyYWRlcldpdGhBcnRpZmFjdAIFB190cmFkZXIJAQ1nZXRBcnRpZmFjdElkAQUBaQQLYWRqdXN0ZWRGZWUIBQ0kdDA2MTIxNjYxMzAxAl8xBAxidXJuQXJ0aWZhY3QIBQ0kdDA2MTIxNjYxMzAxAl8yBAxyYXdGZWVBbW91bnQJAQRtdWxkAgUKX3Jhd0Ftb3VudAULYWRqdXN0ZWRGZWUEB19hbW91bnQJAGUCBQpfcmF3QW1vdW50BQxyYXdGZWVBbW91bnQEE2Rpc3RyaWJ1dGVGZWVBbW91bnQDBRFpc0NvbGxhdGVyYWxBc3NldAQIZG9Cb3Jyb3cJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIGYm9ycm93CQDMCAIFB190cmFkZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIX2Fzc2V0SWQFB19hbW91bnQFA25pbAMJAAACBQhkb0JvcnJvdwUIZG9Cb3Jyb3cEDWJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwkBCnF1b3RlQXNzZXQAAwkAAAIFDWJhbGFuY2VCZWZvcmUFDWJhbGFuY2VCZWZvcmUEBmRvU3dhcAkA/AcECQELc3dhcEFkZHJlc3MAAgRzd2FwCQDMCAIJANgEAQkBCnF1b3RlQXNzZXQACQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhfYXNzZXRJZAUMcmF3RmVlQW1vdW50BQNuaWwDCQAAAgUGZG9Td2FwBQZkb1N3YXAEDGJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQAAAgUMYmFsYW5jZUFmdGVyBQxiYWxhbmNlQWZ0ZXIED2V4Y2hhbmdlZEFtb3VudAkAZQIFDGJhbGFuY2VBZnRlcgUNYmFsYW5jZUJlZm9yZQMJAAACBQ9leGNoYW5nZWRBbW91bnQFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQxyYXdGZWVBbW91bnQDCQAAAgUTZGlzdHJpYnV0ZUZlZUFtb3VudAUTZGlzdHJpYnV0ZUZlZUFtb3VudAQOcmVmZXJyZXJGZWVBbnkJAPwHBAkBD3JlZmVycmFsQWRkcmVzcwACDWFjY2VwdFBheW1lbnQJAMwIAgUHX3RyYWRlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFE2Rpc3RyaWJ1dGVGZWVBbW91bnQFA25pbAMJAAACBQ5yZWZlcnJlckZlZUFueQUOcmVmZXJyZXJGZWVBbnkEC3JlZmVycmVyRmVlBAckbWF0Y2gwBQ5yZWZlcnJlckZlZUFueQMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgJAAIBAhNJbnZhbGlkIHJlZmVycmVyRmVlBAlmZWVBbW91bnQJAGUCBRNkaXN0cmlidXRlRmVlQW1vdW50BQtyZWZlcnJlckZlZQQNJHQwNjI2MDA2Mjc0MAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNjI2MDA2Mjc0MAJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA2MjYwMDYyNzQwAl8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDYyNjAwNjI3NDACXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNjI2MDA2Mjc0MAJfNAQNJHQwNjI3NDY2MjgwMwkBDWRpc3RyaWJ1dGVGZWUBBQlmZWVBbW91bnQEDGZlZVRvU3Rha2VycwgFDSR0MDYyNzQ2NjI4MDMCXzEECmZlZVRvVmF1bHQIBQ0kdDA2Mjc0NjYyODAzAl8yBAVzdGFrZQMFDGlzUXVvdGVBc3NldAQFc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACCWFkZExvY2tlZAkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIHYWRkRnJlZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFCmZlZVRvVmF1bHQFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBAlub3RpZnlGZWUJAPwHBAkBDG1pbmVyQWRkcmVzcwACCm5vdGlmeUZlZXMJAMwIAgUHX3RyYWRlcgkAzAgCBQlmZWVBbW91bnQFA25pbAUDbmlsAwkAAAIFCW5vdGlmeUZlZQUJbm90aWZ5RmVlCQDOCAIJAM4IAgkAzggCCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUJAGQCBRFvbGRQb3NpdGlvbk1hcmdpbgUHX2Ftb3VudAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAQ5kb0J1cm5BcnRpZmFjdAIFDGJ1cm5BcnRpZmFjdAUBaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxyZW1vdmVNYXJnaW4BB19hbW91bnQEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkApQgBCAUBaQZjYWxsZXIDAwMDAwkAZwIAAAUHX2Ftb3VudAYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BBQdfdHJhZGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAGCQEOaXNNYXJrZXRDbG9zZWQACQACAQIfSW52YWxpZCByZW1vdmVNYXJnaW4gcGFyYW1ldGVycwQNJHQwNjM5Mzk2NDA3OQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNjM5Mzk2NDA3OQJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA2MzkzOTY0MDc5Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDYzOTM5NjQwNzkCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNjM5Mzk2NDA3OQJfNAQLbWFyZ2luRGVsdGEJAQEtAQUHX2Ftb3VudAQNJHQwNjQxMTY2NDI5NQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULbWFyZ2luRGVsdGEEDHJlbWFpbk1hcmdpbggFDSR0MDY0MTE2NjQyOTUCXzEEB2JhZERlYnQIBQ0kdDA2NDExNjY0Mjk1Al8yAwkBAiE9AgUHYmFkRGVidAAACQACAQIdSW52YWxpZCByZW1vdmVkIG1hcmdpbiBhbW91bnQEC21hcmdpblJhdGlvCQEPY2FsY01hcmdpblJhdGlvAwUMcmVtYWluTWFyZ2luBQdiYWREZWJ0BRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAMJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DBQttYXJnaW5SYXRpbwkBD2luaXRNYXJnaW5SYXRpbwAGCQACAQkArAICCQCsAgIJAKwCAgIZVG9vIG11Y2ggbWFyZ2luIHJlbW92ZWQ6IAkApAMBBQttYXJnaW5SYXRpbwIDIDwgCQCkAwEJAQ9pbml0TWFyZ2luUmF0aW8ABA1xdW90ZUFzc2V0U3RyCQDYBAEJAQpxdW90ZUFzc2V0AAQNJHQwNjQ3Mzk2NDc5MwkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDY0NzM5NjQ3OTMCXzEEB2Fzc2V0SWQIBQ0kdDA2NDczOTY0NzkzAl8yBAd0b1JlcGF5AwkAZgIFB19hbW91bnQFCGJvcnJvd2VkBQhib3Jyb3dlZAUHX2Ftb3VudAQKdG9XaXRoZHJhdwMJAGYCBQhib3Jyb3dlZAUHX2Ftb3VudAAACQBlAgUHX2Ftb3VudAUIYm9ycm93ZWQEC2ZpbmFsQm9ycm93CQBlAgUIYm9ycm93ZWQFB3RvUmVwYXkEFXN3aXRjaFBvc2l0aW9uVG9RdW90ZQMJAGYCBQtmaW5hbEJvcnJvdwAABQNuaWwJARN1cGRhdGVQb3NpdGlvbkFzc2V0AgUHX3RyYWRlcgUNcXVvdGVBc3NldFN0cgQNZG9TYW5pdHlDaGVjawMJAQIhPQIJAGQCBQd0b1JlcGF5BQp0b1dpdGhkcmF3BQdfYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCHRvUmVwYXk9CQCkAwEFB3RvUmVwYXkCDiArIHRvV2l0aGRyYXc9CQCkAwEFCnRvV2l0aGRyYXcCBCAhPSAJAKQDAQUHX2Ftb3VudAUDbmlsAwkAAAIFDWRvU2FuaXR5Q2hlY2sFDWRvU2FuaXR5Q2hlY2sECWRvVW5zdGFrZQMJAGYCBQp0b1dpdGhkcmF3AAAECWRvVW5zdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIOd2l0aGRyYXdMb2NrZWQJAMwIAgUKdG9XaXRoZHJhdwUDbmlsBQNuaWwDCQAAAgUJZG9VbnN0YWtlBQlkb1Vuc3Rha2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFCWRvVW5zdGFrZQUJZG9VbnN0YWtlBBZyZXR1cm5Db2xsYXRlcmFsQWN0aW9uAwkAZgIFB3RvUmVwYXkAAAQHZG9SZXBheQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAgVyZXBheQkAzAgCBQdfdHJhZGVyCQDMCAIFB3RvUmVwYXkJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUHZG9SZXBheQUHZG9SZXBheQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvUmVwYXkJANkEAQUHYXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgkAzggCCQDOCAIJAM4IAgkAzggCCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUFDHJlbWFpbk1hcmdpbgUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPb2xkUG9zaXRpb25TaXplAwkAZgIFCnRvV2l0aGRyYXcAAAkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQp0b1dpdGhkcmF3BQNuaWwJAQ11cGRhdGVCYWxhbmNlAQkAZQIJAQhjYmFsYW5jZQAFB19hbW91bnQFFXN3aXRjaFBvc2l0aW9uVG9RdW90ZQUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jbG9zZVBvc2l0aW9uAgVfc2l6ZRRfbWluUXVvdGVBc3NldEFtb3VudAQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBAdfdHJhZGVyCQEPZ2V0QWN0dWFsQ2FsbGVyAQUBaQQOX3RyYWRlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQdfdHJhZGVyAg5JbnZhbGlkIGNhbGxlcgMDAwMDAwkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEFB190cmFkZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAYJAGcCAAAFBV9zaXplBgkAZgIAAAUUX21pblF1b3RlQXNzZXRBbW91bnQGCQEOaXNNYXJrZXRDbG9zZWQACQACAQIgSW52YWxpZCBjbG9zZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDY2OTc3NjcxMTcJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDY2OTc3NjcxMTcCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNjY5Nzc2NzExNwJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA2Njk3NzY3MTE3Al8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDY2OTc3NjcxMTcCXzQEDSR0MDY3MTIzNzIyMDEDCQBmAgkBA2FicwEFD29sZFBvc2l0aW9uU2l6ZQUFX3NpemUECl9kaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAFCURJUl9TSE9SVAUIRElSX0xPTkcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEDSR0MDY3NzE0Njc5MzYJAQpzd2FwT3V0cHV0AwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQVfc2l6ZQYEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQ0kdDA2NzcxNDY3OTM2Al8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNjc3MTQ2NzkzNgJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNjc3MTQ2NzkzNgJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDY3NzE0Njc5MzYCXzQEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkBAS0BBQVfc2l6ZQUFX3NpemUEDSR0MDY4MDI3NjgxODEJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDY4MDI3NjgxODECXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA2ODAyNzY4MTgxAl8yBAJtcgkBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEDXJlYWxpemVkUmF0aW8JAQRkaXZkAgkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQkBA2FicwEFD29sZFBvc2l0aW9uU2l6ZQQLcmVhbGl6ZWRQbmwJAQRtdWxkAgUNdW5yZWFsaXplZFBubAUNcmVhbGl6ZWRSYXRpbwQScmVtYWluTWFyZ2luQmVmb3JlCAkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAJfMQQNJHQwNjg2ODI2ODkyMAkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULcmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDY4NjgyNjg5MjACXzEED3Bvc2l0aW9uQmFkRGVidAgFDSR0MDY4NjgyNjg5MjACXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwNjg2ODI2ODkyMAJfMwQSdW5yZWFsaXplZFBubEFmdGVyCQBlAgUNdW5yZWFsaXplZFBubAULcmVhbGl6ZWRQbmwEEnJlbWFpbk9wZW5Ob3Rpb25hbAMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkAZQIJAGUCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BRJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCCQBkAgUSdW5yZWFsaXplZFBubEFmdGVyBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAkBA2FicwEFEnJlbWFpbk9wZW5Ob3Rpb25hbAQRbmV3UG9zaXRpb25NYXJnaW4DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQEEbXVsZAIJAGQCBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUSdW5yZWFsaXplZFBubEFmdGVyBQJtcgUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkBBG11bGQCCQBlAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFEnVucmVhbGl6ZWRQbmxBZnRlcgUCbXIFEnVucmVhbGl6ZWRQbmxBZnRlcgQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUEFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQDAwkBAiE9AgUUX21pblF1b3RlQXNzZXRBbW91bnQAAAkAZgIFFF9taW5RdW90ZUFzc2V0QW1vdW50BRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BwkAAgEJAKwCAgkArAICCQCsAgICDUxpbWl0IGVycm9yOiAJAKQDAQUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAIDIDwgCQCkAwEFFF9taW5RdW90ZUFzc2V0QW1vdW50CQChCg8FD25ld1Bvc2l0aW9uU2l6ZQURbmV3UG9zaXRpb25NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxzdFVwZENQRgUPcG9zaXRpb25CYWREZWJ0BQtyZWFsaXplZFBubAkAZQIFEnJlbWFpbk1hcmdpbkJlZm9yZQkAZAIFEW5ld1Bvc2l0aW9uTWFyZ2luBRJ1bnJlYWxpemVkUG5sQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARBvcGVuSW50ZXJlc3RMb25nAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAAACQBlAgkBEW9wZW5JbnRlcmVzdFNob3J0AAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAAAAwkAZgIFBV9zaXplCQEDYWJzAQUPb2xkUG9zaXRpb25TaXplCQACAQIgSW52YWxpZCBjbG9zZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDcxMTQyNzE1NjEJARVpbnRlcm5hbENsb3NlUG9zaXRpb24CBQdfdHJhZGVyBgQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDcxMTQyNzE1NjECXzEED3Bvc2l0aW9uQmFkRGVidAgFDSR0MDcxMTQyNzE1NjECXzIEC3JlYWxpemVkUG5sCAUNJHQwNzExNDI3MTU2MQJfMwQNbWFyZ2luVG9WYXVsdAgFDSR0MDcxMTQyNzE1NjECXzQEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3MTE0MjcxNTYxAl81BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3MTE0MjcxNTYxAl82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNzExNDI3MTU2MQJfNwQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDcxMTQyNzE1NjECXzgEAngyCAUNJHQwNzExNDI3MTU2MQJfOQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA3MTE0MjcxNTYxA18xMAQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNzExNDI3MTU2MQNfMTEEGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNzExNDI3MTU2MQNfMTIEG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcggFDSR0MDcxMTQyNzE1NjEDXzEzAwMJAQIhPQIFFF9taW5RdW90ZUFzc2V0QW1vdW50AAAJAGYCBRRfbWluUXVvdGVBc3NldEFtb3VudAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAcJAAIBCQCsAgIJAKwCAgkArAICAg1MaW1pdCBlcnJvcjogCQCkAwEFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQCAyA8IAkApAMBBRRfbWluUXVvdGVBc3NldEFtb3VudAkAoQoPAAAAAAAAAAAFD3Bvc2l0aW9uQmFkRGVidAULcmVhbGl6ZWRQbmwFDW1hcmdpblRvVmF1bHQFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgUadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIFG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcgQPbmV3UG9zaXRpb25TaXplCAUNJHQwNjcxMjM3MjIwMQJfMQQRbmV3UG9zaXRpb25NYXJnaW4IBQ0kdDA2NzEyMzcyMjAxAl8yBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDY3MTIzNzIyMDECXzMEFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNjcxMjM3MjIwMQJfNAQPcG9zaXRpb25CYWREZWJ0CAUNJHQwNjcxMjM3MjIwMQJfNQQLcmVhbGl6ZWRQbmwIBQ0kdDA2NzEyMzcyMjAxAl82BA1tYXJnaW5Ub1ZhdWx0CAUNJHQwNjcxMjM3MjIwMQJfNwQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDY3MTIzNzIyMDECXzgEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDY3MTIzNzIyMDECXzkEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA2NzEyMzcyMjAxA18xMAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDY3MTIzNzIyMDEDXzExBA50b3RhbExvbmdBZnRlcggFDSR0MDY3MTIzNzIyMDEDXzEyBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA2NzEyMzcyMjAxA18xMwQadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA2NzEyMzcyMjAxA18xNAQbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNjcxMjM3MjIwMQNfMTUDCQBmAgUPcG9zaXRpb25CYWREZWJ0AAAJAAIBAiZVbmFibGUgdG8gY2xvc2UgcG9zaXRpb24gd2l0aCBiYWQgZGVidAQOd2l0aGRyYXdBbW91bnQJAQNhYnMBBQ1tYXJnaW5Ub1ZhdWx0BAphbW1CYWxhbmNlCQBlAgkBCGNiYWxhbmNlAAUOd2l0aGRyYXdBbW91bnQEDSR0MDcyNDEwNzI2MTcDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1hbW1OZXdCYWxhbmNlCAUNJHQwNzI0MTA3MjYxNwJfMQQDeDExCAUNJHQwNzI0MTA3MjYxNwJfMgQNJHQwNzI2MjQ3MjY3OAkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDcyNjI0NzI2NzgCXzEEB2Fzc2V0SWQIBQ0kdDA3MjYyNDcyNjc4Al8yBA0kdDA3MjY5MzczNTUyAwkAZgIFCGJvcnJvd2VkAAADCQBnAgUOd2l0aGRyYXdBbW91bnQFCGJvcnJvd2VkBAdkb1JlcGF5CQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACBXJlcGF5CQDMCAIFB190cmFkZXIJAMwIAgUIYm9ycm93ZWQJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUHZG9SZXBheQUHZG9SZXBheQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDl90cmFkZXJBZGRyZXNzBQhib3Jyb3dlZAkA2QQBBQdhc3NldElkBQNuaWwJAGUCBQ53aXRoZHJhd0Ftb3VudAUIYm9ycm93ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ED3JlYWxpemVBbmRDbG9zZQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAhhyZWFsaXplUGFydGlhbGx5QW5kQ2xvc2UJAMwIAgUHX3RyYWRlcgkAzAgCBQ53aXRoZHJhd0Ftb3VudAkAzAgCBQdhc3NldElkBQNuaWwFA25pbAMJAAACBQ9yZWFsaXplQW5kQ2xvc2UFD3JlYWxpemVBbmRDbG9zZQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDl90cmFkZXJBZGRyZXNzBQ53aXRoZHJhd0Ftb3VudAkA2QQBBQdhc3NldElkBQNuaWwAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwFDndpdGhkcmF3QW1vdW50AwkAAAIFDSR0MDcyNjkzNzM1NTIFDSR0MDcyNjkzNzM1NTIEE3F1b3RlV2l0aGRyYXdBbW91bnQIBQ0kdDA3MjY5MzczNTUyAl8yBBRzZW5kQ29sbGF0ZXJhbEFjdGlvbggFDSR0MDcyNjkzNzM1NTICXzEEB3Vuc3Rha2UDCQBmAgUTcXVvdGVXaXRoZHJhd0Ftb3VudAAABAd1bnN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAg53aXRoZHJhd0xvY2tlZAkAzAgCBRNxdW90ZVdpdGhkcmF3QW1vdW50BQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBA5ub3RpZnlOb3Rpb25hbAkA/AcECQEMbWluZXJBZGRyZXNzAAIObm90aWZ5Tm90aW9uYWwJAMwIAgUHX3RyYWRlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkAzggCAwkAAAIFD25ld1Bvc2l0aW9uU2l6ZQAACQEOZGVsZXRlUG9zaXRpb24BBQdfdHJhZGVyCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9uZXdQb3NpdGlvblNpemUFEW5ld1Bvc2l0aW9uTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25Mc3RVcGRDUEYJAQl1cGRhdGVBbW0IBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIDCQBmAgUTcXVvdGVXaXRoZHJhd0Ftb3VudAAACQEId2l0aGRyYXcCBQ5fdHJhZGVyQWRkcmVzcwUTcXVvdGVXaXRoZHJhd0Ftb3VudAUDbmlsCQENdXBkYXRlQmFsYW5jZQEFDWFtbU5ld0JhbGFuY2UFFHNlbmRDb2xsYXRlcmFsQWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWxpcXVpZGF0ZQEHX3RyYWRlcgQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBA9zcG90TWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBAttYXJnaW5SYXRpbwMJARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQRb3JhY2xlTWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgURUE5MX09QVElPTl9PUkFDTEUJAQR2bWF4AgUPc3BvdE1hcmdpblJhdGlvBRFvcmFjbGVNYXJnaW5SYXRpbwUPc3BvdE1hcmdpblJhdGlvAwMDAwMJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DBQttYXJnaW5SYXRpbwkBFm1haW50ZW5hbmNlTWFyZ2luUmF0aW8ABwYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BBQdfdHJhZGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAGCQEOaXNNYXJrZXRDbG9zZWQACQACAQITVW5hYmxlIHRvIGxpcXVpZGF0ZQMDAwkAZgIFD3Nwb3RNYXJnaW5SYXRpbwkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQBmAgkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAAABwkAZgIFDERFQ0lNQUxfVU5JVAkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAcEDSR0MDc1ODczNzYwMjMJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDc1ODczNzYwMjMCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNzU4NzM3NjAyMwJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA3NTg3Mzc2MDIzAl8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDc1ODczNzYwMjMCXzQECl9kaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAFCURJUl9TSE9SVAUIRElSX0xPTkcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQJARtnZXRQYXJ0aWFsTGlxdWlkYXRpb25BbW91bnQCBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUEDSR0MDc2MjQ4NzYzNTIJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDc2MjQ4NzYzNTICXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA3NjI0ODc2MzUyAl8yBA0kdDA3NjM2MDc2NTQ3CQEJc3dhcElucHV0AgUFaXNBZGQFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQgFDSR0MDc2MzYwNzY1NDcCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3NjM2MDc2NTQ3Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3NjM2MDc2NTQ3Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNzYzNjA3NjU0NwJfNAQQbGlxdWlkYXRpb25SYXRpbwkBBGRpdmQCCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEDYWJzAQUPb2xkUG9zaXRpb25TaXplBAtyZWFsaXplZFBubAkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRBsaXF1aWRhdGlvblJhdGlvBA0kdDA3NjgzNjc3MDY5CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBQtyZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwNzY4MzY3NzA2OQJfMQQHYmFkRGVidAgFDSR0MDc2ODM2NzcwNjkCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwNzY4MzY3NzA2OQJfMwQSdW5yZWFsaXplZFBubEFmdGVyCQBlAgUNdW5yZWFsaXplZFBubAULcmVhbGl6ZWRQbmwEEnJlbWFpbk9wZW5Ob3Rpb25hbAMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkAZQIJAGUCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BRJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCCQBkAgUSdW5yZWFsaXplZFBubEFmdGVyBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BBJsaXF1aWRhdGlvblBlbmFsdHkJAQRtdWxkAgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ABA9mZWVUb0xpcXVpZGF0b3IJAGkCBRJsaXF1aWRhdGlvblBlbmFsdHkAAgQKZmVlVG9WYXVsdAkAZQIFEmxpcXVpZGF0aW9uUGVuYWx0eQUPZmVlVG9MaXF1aWRhdG9yBBFuZXdQb3NpdGlvbk1hcmdpbgkAZQIFDHJlbWFpbk1hcmdpbgUSbGlxdWlkYXRpb25QZW5hbHR5BA9uZXdQb3NpdGlvblNpemUJAGQCBQ9vbGRQb3NpdGlvblNpemUFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwJAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwEFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABRJsaXF1aWRhdGlvblBlbmFsdHkEDSR0MDc4MjM4NzgzNjcDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1uZXdBbW1CYWxhbmNlCAUNJHQwNzgyMzg3ODM2NwJfMQQDeDExCAUNJHQwNzgyMzg3ODM2NwJfMgQNJHQwNzgzNzU3ODQyOQkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDc4Mzc1Nzg0MjkCXzEEB2Fzc2V0SWQIBQ0kdDA3ODM3NTc4NDI5Al8yBBVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwDCQBmAgUIYm9ycm93ZWQAAAQQY29sbGF0ZXJhbFRvU2VsbAkBBG11bGQCBQhib3Jyb3dlZAUQbGlxdWlkYXRpb25SYXRpbwQPcmVhbGl6ZUFuZENsb3NlCQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACEHJlYWxpemVQYXJ0aWFsbHkJAMwIAgUHX3RyYWRlcgkAzAgCBQdhc3NldElkCQDMCAIFEGNvbGxhdGVyYWxUb1NlbGwFA25pbAUDbmlsAwkAAAIFD3JlYWxpemVBbmRDbG9zZQUPcmVhbGl6ZUFuZENsb3NlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBRVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwFFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAQHdW5zdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIOd2l0aGRyYXdMb2NrZWQJAMwIAgUSbGlxdWlkYXRpb25QZW5hbHR5BQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBBBkZXBvc2l0SW5zdXJhbmNlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAgdhZGRGcmVlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUKZmVlVG9WYXVsdAUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD25ld1Bvc2l0aW9uU2l6ZQURbmV3UG9zaXRpb25NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxzdFVwZENQRgkBCXVwZGF0ZUFtbQgFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARBvcGVuSW50ZXJlc3RMb25nAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAAACQBlAgkBEW9wZW5JbnRlcmVzdFNob3J0AAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAAACQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFD2ZlZVRvTGlxdWlkYXRvcgkBDXVwZGF0ZUJhbGFuY2UBBQ1uZXdBbW1CYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA0kdDA4MDEyNDgwNjE5CQEVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAgUHX3RyYWRlcgcEAngxCAUNJHQwODAxMjQ4MDYxOQJfMQQHYmFkRGVidAgFDSR0MDgwMTI0ODA2MTkCXzIEAngyCAUNJHQwODAxMjQ4MDYxOQJfMwQCeDMIBQ0kdDA4MDEyNDgwNjE5Al80BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwODAxMjQ4MDYxOQJfNQQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwODAxMjQ4MDYxOQJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDgwMTI0ODA2MTkCXzcEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDA4MDEyNDgwNjE5Al84BBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUNJHQwODAxMjQ4MDYxOQJfOQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA4MDEyNDgwNjE5A18xMAQPdG90YWxTaG9ydEFmdGVyCAUNJHQwODAxMjQ4MDYxOQNfMTEEGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyCAUNJHQwODAxMjQ4MDYxOQNfMTIEG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcggFDSR0MDgwMTI0ODA2MTkDXzEzBBJsaXF1aWRhdGlvblBlbmFsdHkJAQRtdWxkAgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ABA9mZWVUb0xpcXVpZGF0b3IJAGkCBRJsaXF1aWRhdGlvblBlbmFsdHkAAgQKZmVlVG9WYXVsdAkAZQIFEmxpcXVpZGF0aW9uUGVuYWx0eQUPZmVlVG9MaXF1aWRhdG9yBAphbW1CYWxhbmNlCQBlAgkBCGNiYWxhbmNlAAUSbGlxdWlkYXRpb25QZW5hbHR5BA0kdDA4MTAyNzgxMTU2AwkAZgIAAAUKYW1tQmFsYW5jZQkAlAoCAAAJAQNhYnMBBQphbW1CYWxhbmNlCQCUCgIFCmFtbUJhbGFuY2UAAAQNbmV3QW1tQmFsYW5jZQgFDSR0MDgxMDI3ODExNTYCXzEEA3gxMQgFDSR0MDgxMDI3ODExNTYCXzIEDSR0MDgxMTY0ODEyMTgJARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQUHX3RyYWRlcgQIYm9ycm93ZWQIBQ0kdDA4MTE2NDgxMjE4Al8xBAdhc3NldElkCAUNJHQwODExNjQ4MTIxOAJfMgQVZG9MaXF1aWRhdGVDb2xsYXRlcmFsAwkAZgIFCGJvcnJvd2VkAAAED3JlYWxpemVBbmRDbG9zZQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAhhyZWFsaXplUGFydGlhbGx5QW5kQ2xvc2UJAMwIAgUHX3RyYWRlcgkAzAgCAAAJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUPcmVhbGl6ZUFuZENsb3NlBQ9yZWFsaXplQW5kQ2xvc2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAUVZG9MaXF1aWRhdGVDb2xsYXRlcmFsBAF4AwkAZgIFB2JhZERlYnQAAAQLbG9ja0JhZERlYnQJAPwHBAkBDHZhdWx0QWRkcmVzcwACFWV4Y2hhbmdlRnJlZUFuZExvY2tlZAkAzAgCBQdiYWREZWJ0BQNuaWwFA25pbAMJAAACBQtsb2NrQmFkRGVidAULbG9ja0JhZERlYnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFAXgFAXgEB3Vuc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACDndpdGhkcmF3TG9ja2VkCQDMCAIFEmxpcXVpZGF0aW9uUGVuYWx0eQUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIHYWRkRnJlZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFCmZlZVRvVmF1bHQFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBA5ub3RpZnlOb3Rpb25hbAkA/AcECQEMbWluZXJBZGRyZXNzAAIObm90aWZ5Tm90aW9uYWwJAMwIAgUHX3RyYWRlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkBDmRlbGV0ZVBvc2l0aW9uAQUHX3RyYWRlcgkBCXVwZGF0ZUFtbQgFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgUadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIFG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcgkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQ9mZWVUb0xpcXVpZGF0b3IJAQ11cGRhdGVCYWxhbmNlAQUNbmV3QW1tQmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwYXlGdW5kaW5nAAQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBBVmdW5kaW5nQmxvY2tUaW1lc3RhbXAJARluZXh0RnVuZGluZ0Jsb2NrVGltZXN0YW1wAAMDAwkAZgIFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXAGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgEJAKwCAgkArAICCQCsAgICIUludmFsaWQgZnVuZGluZyBibG9jayB0aW1lc3RhbXA6IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAIDIDwgCQCkAwEFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAQPdW5kZXJseWluZ1ByaWNlCQEOZ2V0T3JhY2xlUHJpY2UABA0kdDA4MzA5MDgzMTUyCQEKZ2V0RnVuZGluZwAEFHNob3J0UHJlbWl1bUZyYWN0aW9uCAUNJHQwODMwOTA4MzE1MgJfMQQTbG9uZ1ByZW1pdW1GcmFjdGlvbggFDSR0MDgzMDkwODMxNTICXzIJAQ11cGRhdGVGdW5kaW5nBQkAZAIFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAkBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAZAIJASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAFE2xvbmdQcmVtaXVtRnJhY3Rpb24JAGQCCQEkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAUUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlCQEEZGl2ZAIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQAEB19xdEFzdFIJAQZxdEFzdFIABAdfYnNBc3RSCQEGYnNBc3RSAAQNJHQwODM1ODQ4MzcxOQkBFGdldFN5bmNUZXJtaW5hbFByaWNlAwkBDmdldE9yYWNsZVByaWNlAAUHX3F0QXN0UgUHX2JzQXN0UgQTbmV3UXVvdGVBc3NldFdlaWdodAgFDSR0MDgzNTg0ODM3MTkCXzEEEm5ld0Jhc2VBc3NldFdlaWdodAgFDSR0MDgzNTg0ODM3MTkCXzIEDW1hcmdpblRvVmF1bHQIBQ0kdDA4MzU4NDgzNzE5Al8zBA1kb0V4Y2hhbmdlUG5MAwkBAiE9AgUNbWFyZ2luVG9WYXVsdAAABA1kb0V4Y2hhbmdlUG5MCQD8BwQJAQx2YXVsdEFkZHJlc3MAAhVleGNoYW5nZUZyZWVBbmRMb2NrZWQJAMwIAgUNbWFyZ2luVG9WYXVsdAUDbmlsBQNuaWwDCQAAAgUNZG9FeGNoYW5nZVBuTAUNZG9FeGNoYW5nZVBuTAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUNZG9FeGNoYW5nZVBuTAUNZG9FeGNoYW5nZVBuTAkAzggCCQEQdXBkYXRlQW1tV2VpZ2h0cwIFE25ld1F1b3RlQXNzZXRXZWlnaHQFEm5ld0Jhc2VBc3NldFdlaWdodAkBCmFwcGVuZFR3YXABCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUTbmV3UXVvdGVBc3NldFdlaWdodAkBBG11bGQCBQdfYnNBc3RSBRJuZXdCYXNlQXNzZXRXZWlnaHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEndmlld19jYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50AQdfdHJhZGVyBARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEDSR0MDg0Mjg4ODQzODkJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDg0Mjg4ODQzODkCXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwODQyODg4NDM4OQJfMgQDcG9uCAUNJHQwODQyODg4NDM4OQJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA4NDI4ODg0Mzg5Al80BA0kdDA4NDM5Mjg0NDkzCQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDA4NDM5Mjg0NDkzAl8xBA11bnJlYWxpemVkUG5sCAUNJHQwODQzOTI4NDQ5MwJfMgQNJHQwODQ0OTY4NDY2OAkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwODQ0OTY4NDY2OAJfMQQHYmFkRGVidAgFDSR0MDg0NDk2ODQ2NjgCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwODQ0OTY4NDY2OAJfMwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQEBcwEFDHJlbWFpbk1hcmdpbgkBAXMBBQ5mdW5kaW5nUGF5bWVudAkBAXMBCQEOZ2V0TWFyZ2luUmF0aW8BBQdfdHJhZGVyCQEBcwEFDXVucmVhbGl6ZWRQbmwJAQFzAQUHYmFkRGVidAkBAXMBBRBwb3NpdGlvbk5vdGlvbmFsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXZpZXdfZ2V0UGVnQWRqdXN0Q29zdAEGX3ByaWNlBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEBnJlc3VsdAkBFGdldFN5bmNUZXJtaW5hbFByaWNlAwUGX3ByaWNlBQdfcXRBc3RSBQdfYnNBc3RSCQACAQkApAMBCAUGcmVzdWx0Al8zAWkBGHZpZXdfZ2V0VGVybWluYWxBbW1QcmljZQAEDSR0MDg1MDg0ODUxNjUJARNnZXRUZXJtaW5hbEFtbVN0YXRlAAQZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQgFDSR0MDg1MDg0ODUxNjUCXzEEGHRlcm1pbmFsQmFzZUFzc2V0UmVzZXJ2ZQgFDSR0MDg1MDg0ODUxNjUCXzIEBXByaWNlCQEEZGl2ZAIJAQRtdWxkAgUZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQkBBnF0QXN0VwAJAQRtdWxkAgUYdGVybWluYWxCYXNlQXNzZXRSZXNlcnZlCQEGYnNBc3RXAAkAAgEJAKQDAQUFcHJpY2UBaQEPdmlld19nZXRGdW5kaW5nAAQPdW5kZXJseWluZ1ByaWNlCQEOZ2V0T3JhY2xlUHJpY2UABA0kdDA4NTM4MDg1NDQyCQEKZ2V0RnVuZGluZwAEFHNob3J0UHJlbWl1bUZyYWN0aW9uCAUNJHQwODUzODA4NTQ0MgJfMQQTbG9uZ1ByZW1pdW1GcmFjdGlvbggFDSR0MDg1MzgwODU0NDICXzIEC2xvbmdGdW5kaW5nCQEEZGl2ZAIFE2xvbmdQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQQMc2hvcnRGdW5kaW5nCQEEZGl2ZAIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UJAAIBCQCsAgIJAKwCAgkArAICCQEBcwEFC2xvbmdGdW5kaW5nCQEBcwEFDHNob3J0RnVuZGluZwkBAXMBCQEQZ2V0VHdhcFNwb3RQcmljZQAJAQFzAQkBDmdldE9yYWNsZVByaWNlAAFpARh2aWV3X2dldEJvcnJvd2VkQnlUcmFkZXIBB190cmFkZXIEDSR0MDg1NzI4ODU3ODIJARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQUHX3RyYWRlcgQIYm9ycm93ZWQIBQ0kdDA4NTcyODg1NzgyAl8xBAdhc3NldElkCAUNJHQwODU3Mjg4NTc4MgJfMgkAAgEJAKwCAgkBAXMBBQhib3Jyb3dlZAUHYXNzZXRJZAFpARBjb21wdXRlU3BvdFByaWNlAAQGcmVzdWx0CQEMZ2V0U3BvdFByaWNlAAkAlAoCBQNuaWwFBnJlc3VsdAFpAR9jb21wdXRlRmVlRm9yVHJhZGVyV2l0aEFydGlmYWN0AgdfdHJhZGVyC19hcnRpZmFjdElkBAZyZXN1bHQJARhnZXRGb3JUcmFkZXJXaXRoQXJ0aWZhY3QCBQdfdHJhZGVyBQtfYXJ0aWZhY3RJZAkAlAoCBQNuaWwFBnJlc3VsdAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJAQ5hZG1pblB1YmxpY0tleQCaWBGv", "height": 2380171, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DHq53x9foEDyKBNcE1m6a3s2TLqpyGbFcj3xoXdKx5tY Next: 37W6Tg1wWRgT89QaG9SLweQtV7xzjpCX6BBB4HZo73JE Diff:
OldNewDifferences
16741674 then ((hO - eH) - hT)
16751675 else ((hT + hO) - eH)
16761676 let hX = bb(hU)
1677- let ji = aU(hX, jd)
1677+ let ji = if ((ga > 0))
1678+ then (aU((hX + hT), jd) - hT)
1679+ else (aU((hX - hT), jd) - hT)
16781680 let hV = (ga + eG)
16791681 let jj = cn(hV)
16801682 let eR = (bL() - eH)
16821684 then (iX > eH)
16831685 else false)
16841686 then throw(((("Limit error: " + toString(eH)) + " < ") + toString(iX)))
1685- else $Tuple15(hV, ji, hX, jj, jh, eL, (jf - ji), cR, cS, eO, eR, (cc() - (if ((hV > 0))
1687+ else $Tuple15(hV, ji, hX, jj, jh, eL, (jf - (ji + hT)), cR, cS, eO, eR, (cc() - (if ((hV > 0))
16861688 then bb(eG)
16871689 else 0)), (cb() - (if ((0 > hV))
16881690 then bb(eG)
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_open_key"
99
1010 let d = "k_ora"
1111
1212 let e = "k_balance"
1313
1414 let f = "k_sequence"
1515
1616 let g = "k_positionSize"
1717
1818 let h = "k_positionMargin"
1919
2020 let i = "k_positionOpenNotional"
2121
2222 let j = "k_positionFraction"
2323
2424 let k = "k_positionSequence"
2525
2626 let l = "k_positionAsset"
2727
2828 let m = "k_initialized"
2929
3030 let n = "k_paused"
3131
3232 let o = "k_closeOnly"
3333
3434 let p = "k_fee"
3535
3636 let q = "k_fundingPeriod"
3737
3838 let r = "k_initMarginRatio"
3939
4040 let s = "k_mmr"
4141
4242 let t = "k_liquidationFeeRatio"
4343
4444 let u = "k_partLiquidationRatio"
4545
4646 let v = "k_spreadLimit"
4747
4848 let w = "k_maxPriceImpact"
4949
5050 let x = "k_maxPriceSpread"
5151
5252 let y = "k_maxOpenNotional"
5353
5454 let z = "k_feeToStakersPercent"
5555
5656 let A = "k_maxOracleDelay"
5757
5858 let B = "k_lastDataStr"
5959
6060 let C = "k_lastMinuteId"
6161
6262 let D = "k_twapDataLastCumulativePrice"
6363
6464 let E = "k_twapDataLastPrice"
6565
6666 let F = "k_twapDataPreviousMinuteId"
6767
6868 let G = "k_latestLongPremiumFraction"
6969
7070 let H = "k_latestShortPremiumFraction"
7171
7272 let I = "k_nextFundingBlockMinTimestamp"
7373
7474 let J = "k_longFundingRate"
7575
7676 let K = "k_shortFundingRate"
7777
7878 let L = "k_qtAstR"
7979
8080 let M = "k_bsAstR"
8181
8282 let N = "k_qtAstW"
8383
8484 let O = "k_bsAstW"
8585
8686 let P = "k_totalPositionSize"
8787
8888 let Q = "k_totalLongPositionSize"
8989
9090 let R = "k_totalShortPositionSize"
9191
9292 let S = "k_openInterestNotional"
9393
9494 let T = "k_openInterestShort"
9595
9696 let U = "k_openInterestLong"
9797
9898 let V = "k_coordinatorAddress"
9999
100100 let W = "k_vault_address"
101101
102102 let X = "k_admin_address"
103103
104104 let Y = "k_admin_public_key"
105105
106106 let Z = "k_quote_asset"
107107
108108 let aa = "k_quote_staking"
109109
110110 let ab = "k_staking_address"
111111
112112 let ac = "k_miner_address"
113113
114114 let ad = "k_orders_address"
115115
116116 let ae = "k_referral_address"
117117
118118 let af = "k_collateral_address"
119119
120120 let ag = "k_exchange_address"
121121
122122 let ah = "k_nft_manager_address"
123123
124124 let ai = "k_trader_market_asset_collateral"
125125
126126 func aj (ak,al) = ((ak + "_") + al)
127127
128128
129129 func am () = valueOrErrorMessage(addressFromString(getStringValue(this, V)), "Coordinator not set")
130130
131131
132132 func an () = addressFromString(getStringValue(am(), X))
133133
134134
135135 func ao () = fromBase58String(getStringValue(am(), Y))
136136
137137
138138 func ap () = fromBase58String(getStringValue(am(), Z))
139139
140140
141141 func aq () = valueOrErrorMessage(addressFromString(getStringValue(am(), aa)), "Quote asset staking not set")
142142
143143
144144 func ar () = valueOrErrorMessage(addressFromString(getStringValue(am(), ab)), "Staking not set")
145145
146146
147147 func as () = valueOrErrorMessage(addressFromString(getStringValue(am(), W)), "Vault not set")
148148
149149
150150 func at () = valueOrErrorMessage(addressFromString(getStringValue(am(), ac)), "Miner not set")
151151
152152
153153 func au () = valueOrErrorMessage(addressFromString(getStringValue(am(), ad)), "Orders not set")
154154
155155
156156 func av () = valueOrErrorMessage(addressFromString(getStringValue(am(), ae)), "Referral not set")
157157
158158
159159 func aw () = valueOrErrorMessage(addressFromString(getStringValue(am(), ah)), "NFT Manager not set")
160160
161161
162162 func ax () = valueOrErrorMessage(addressFromString(getStringValue(am(), af)), "Collateral Manager not set")
163163
164164
165165 func ay () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(am(), ag), "No swap address")), "Invalid swap address")
166166
167167
168168 let az = "k_whitelist_asset"
169169
170170 func aA (aB) = valueOrElse(getBoolean(ax(), aj(az, aB)), false)
171171
172172
173173 let aC = "k_token_param"
174174
175175 let aD = "k_token_type"
176176
177177 let aE = "fee_reduction"
178178
179179 let aF = 1
180180
181181 let aG = 2
182182
183183 let aH = 15
184184
185185 let aI = 15
186186
187187 let aJ = 1000
188188
189189 let aK = 6
190190
191191 let aL = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
192192
193193 let aM = (86400 * aL)
194194
195195 let aN = 100
196196
197197 let aO = 1
198198
199199 let aP = 2
200200
201201 func aQ (aR) = (toString(aR) + ",")
202202
203203
204204 func aS (aR,aT) = fraction(aR, aL, aT, HALFEVEN)
205205
206206
207207 func aU (aR,aT) = fraction(aR, aT, aL, HALFEVEN)
208208
209209
210210 func aV (aR) = sqrt(aR, aK, aK, HALFEVEN)
211211
212212
213213 func aW (aR,aT) = pow(aR, aK, aT, aK, aK, HALFEVEN)
214214
215215
216216 func aX (aR,aT) = fraction(aR, toBigInt(aL), aT, HALFEVEN)
217217
218218
219219 func aY (aR,aT) = fraction(aR, aT, toBigInt(aL), HALFEVEN)
220220
221221
222222 func aZ (aR) = sqrtBigInt(aR, aK, aK, HALFEVEN)
223223
224224
225225 func ba (aR,aT) = pow(aR, aK, aT, aK, aK, HALFEVEN)
226226
227227
228228 func bb (aR) = if ((aR > 0))
229229 then aR
230230 else -(aR)
231231
232232
233233 func bc (aR,aT) = if ((aR >= aT))
234234 then aR
235235 else aT
236236
237237
238238 func bd (be) = {
239239 func bf (bg,bh) = ((bg + bh) + ",")
240240
241241 let bi = {
242242 let bj = be
243243 let bk = size(bj)
244244 let bl = ""
245245 func bm (bn,bo) = if ((bo >= bk))
246246 then bn
247247 else bf(bn, bj[bo])
248248
249249 func bp (bn,bo) = if ((bo >= bk))
250250 then bn
251251 else throw("List size exceeds 20")
252252
253253 bp(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bl, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
254254 }
255255 let bq = dropRight(bi, 1)
256256 let br = if ((take(bq, 1) == ","))
257257 then drop(bq, 1)
258258 else bq
259259 br
260260 }
261261
262262
263263 func bs (bt) = split(bt, ",")
264264
265265
266266 func bu (be,bv,bw) = if ((size(be) > bv))
267267 then (removeByIndex(be, 0) :+ bw)
268268 else (be :+ bw)
269269
270270
271271 func bx (by) = valueOrErrorMessage(getInteger(this, by), ("no value for " + by))
272272
273273
274274 func bz (by,bA) = valueOrElse(getInteger(this, by), bA)
275275
276276
277277 func bB (al,ak) = {
278278 let bh = valueOrErrorMessage(getString(al, ak), ("No value for key " + ak))
279279 bh
280280 }
281281
282282
283283 func bC (al,ak) = {
284284 let bh = valueOrErrorMessage(getInteger(al, ak), ("No value for key " + ak))
285285 bh
286286 }
287287
288288
289289 func bD () = bx(e)
290290
291291
292292 func bE () = bx(p)
293293
294294
295295 func bF () = bx(r)
296296
297297
298298 func bG () = bx(L)
299299
300300
301301 func bH () = bx(M)
302302
303303
304304 func bI () = bz(N, aL)
305305
306306
307307 func bJ () = bz(O, aL)
308308
309309
310310 func bK () = bx(P)
311311
312312
313313 func bL () = bx(S)
314314
315315
316316 func bM () = bx(T)
317317
318318
319319 func bN () = bx(U)
320320
321321
322322 func bO () = bx(I)
323323
324324
325325 func bP () = bx(q)
326326
327327
328328 func bQ () = (bP() * aL)
329329
330330
331331 func bR () = (bP() * aJ)
332332
333333
334334 func bS () = bx(s)
335335
336336
337337 func bT () = bx(t)
338338
339339
340340 func bU () = bx(u)
341341
342342
343343 func bV () = bx(v)
344344
345345
346346 func bW () = bx(w)
347347
348348
349349 func bX () = bx(x)
350350
351351
352352 func bY () = bx(y)
353353
354354
355355 func bZ () = bx(G)
356356
357357
358358 func ca () = bx(H)
359359
360360
361361 func cb () = bx(R)
362362
363363
364364 func cc () = bx(Q)
365365
366366
367367 func cd () = bz(f, 0)
368368
369369
370370 func ce () = bx(z)
371371
372372
373373 func cf () = bx(A)
374374
375375
376376 func cg (ch) = valueOrElse(getString(au(), "k_sender"), toString(ch.caller))
377377
378378
379379 func ci (cj,ck,cl) = {
380380 let cm = (cj - ck)
381381 if (if (cl)
382382 then (0 > cm)
383383 else false)
384384 then throw("Invalid margin")
385385 else if (if (!(cl))
386386 then (cm >= 0)
387387 else false)
388388 then throw("Invalid margin")
389389 else true
390390 }
391391
392392
393393 func cn (co) = if ((co == 0))
394394 then throw("Should not be called with _positionSize == 0")
395395 else if ((co > 0))
396396 then bZ()
397397 else ca()
398398
399399
400400 func cp (cq) = {
401401 let cr = getInteger(this, aj(g, cq))
402402 let cs = cr
403403 if ($isInstanceOf(cs, "Int"))
404404 then {
405405 let ct = cs
406406 $Tuple4(ct, getIntegerValue(this, aj(h, cq)), getIntegerValue(this, aj(i, cq)), getIntegerValue(this, aj(j, cq)))
407407 }
408408 else $Tuple4(0, 0, 0, 0)
409409 }
410410
411411
412412 func cu (cq) = {
413413 let cv = getString(this, aj(l, cq))
414414 let cs = cv
415415 if ($isInstanceOf(cs, "String"))
416416 then {
417417 let cw = cs
418418 cw
419419 }
420420 else toBase58String(ap())
421421 }
422422
423423
424424 func cx (cq) = if ((cp(cq)._1 == 0))
425425 then throw("No open position")
426426 else true
427427
428428
429429 func cy () = valueOrElse(getBoolean(this, m), false)
430430
431431
432432 func cz () = valueOrElse(getBoolean(this, n), false)
433433
434434
435435 func cA () = valueOrElse(getBoolean(this, o), false)
436436
437437
438438 func cB (cC,cD,cE) = if (cC)
439439 then {
440440 let cF = (bH() - cE)
441441 if ((0 >= cF))
442442 then throw("Tx lead to base asset reserve <= 0, revert")
443443 else $Tuple3((bG() + cD), cF, (bK() + cE))
444444 }
445445 else {
446446 let cG = (bG() - cD)
447447 if ((0 >= cG))
448448 then throw("Tx lead to base quote reserve <= 0, revert")
449449 else $Tuple3(cG, (bH() + cE), (bK() - cE))
450450 }
451451
452452
453453 func cH (cI,cJ,cK,cL) = {
454454 let cM = toBigInt(cI)
455455 let cN = toBigInt(cJ)
456456 let cO = toBigInt(cK)
457457 let cP = toBigInt(cL)
458458 aY(aY(cM, cN), aY(cO, cP))
459459 }
460460
461461
462462 func cQ (cC,cD) = {
463463 let cI = bG()
464464 let cK = bH()
465465 let cJ = bI()
466466 let cL = bJ()
467467 let by = cH(cI, cJ, cK, cL)
468468 let cR = if (cC)
469469 then (cI + cD)
470470 else (cI - cD)
471471 let cS = toInt(aX(by, toBigInt(aU(cR, cJ))))
472472 let cT = aS(bb((cS - cK)), cJ)
473473 let cU = if (cC)
474474 then cT
475475 else -(cT)
476476 let cV = cB(cC, cD, cT)
477477 let cW = cV._1
478478 let cX = cV._2
479479 let cY = cV._3
480480 let cZ = aS(aU(cI, cJ), aU(cK, cL))
481481 let da = aS(cD, cT)
482482 let db = bb((cZ - da))
483483 let dc = (aL - aS(cZ, (cZ + db)))
484484 let dd = bW()
485485 if ((dc > dd))
486486 then throw(((((((((((((("Price impact " + toString(dc)) + " > max price impact ") + toString(dd)) + " before quote asset: ") + toString(cI)) + " before base asset: ") + toString(cK)) + " quote asset amount to exchange: ") + toString(cD)) + " price before: ") + toString(cZ)) + " marketPrice: ") + toString(da)))
487487 else $Tuple4(cU, cW, cX, cY)
488488 }
489489
490490
491491 func de (df,dg,dh,di) = {
492492 let dj = if ((df != 0))
493493 then {
494494 let dk = cn(df)
495495 aU((dk - dh), df)
496496 }
497497 else 0
498498 let dl = ((di - dj) + dg)
499499 let dm = if ((0 > dl))
500500 then $Tuple2(0, bb(dl))
501501 else $Tuple2(bb(dl), 0)
502502 let dn = dm._1
503503 let do = dm._2
504504 $Tuple3(dn, do, dj)
505505 }
506506
507507
508508 func dp (cC,cE,dq,dr,ds,dt,du) = {
509509 let cZ = aS(aU(dr, ds), aU(dt, du))
510510 if ((cE == 0))
511511 then throw("Invalid base asset amount")
512512 else {
513513 let by = cH(dr, ds, dt, du)
514514 let dv = if (cC)
515515 then (dt + cE)
516516 else (dt - cE)
517517 let dw = toInt(aX(by, toBigInt(aU(dv, du))))
518518 let dx = bb((dw - aU(dr, ds)))
519519 let dd = bW()
520520 let dy = cB(!(cC), dx, cE)
521521 let cW = dy._1
522522 let cX = dy._2
523523 let cY = dy._3
524524 let da = aS(dx, cE)
525525 let db = bb((cZ - da))
526526 let dc = (aL - aS(cZ, (cZ + db)))
527527 if (if ((dc > dd))
528528 then dq
529529 else false)
530530 then throw(((((((((((((("Price impact " + toString(dc)) + " > max price impact ") + toString(dd)) + " before quote asset: ") + toString(dr)) + " before base asset: ") + toString(dt)) + " base asset amount to exchange: ") + toString(cE)) + " price before: ") + toString(cZ)) + " market price: ") + toString(da)))
531531 else $Tuple7(dx, cW, cX, cY, (cc() - (if (cC)
532532 then bb(cE)
533533 else 0)), (cb() - (if (!(cC))
534534 then bb(cE)
535535 else 0)), dc)
536536 }
537537 }
538538
539539
540540 func dz (cC,cE,dq) = dp(cC, cE, dq, bG(), bI(), bH(), bJ())
541541
542542
543543 func dA () = {
544544 let dB = valueOrErrorMessage(addressFromString(getStringValue(this, d)), "")
545545 let dC = getStringValue(this, a)
546546 let dD = valueOrErrorMessage(getInteger(dB, dC), ((("Can not get oracle price. Oracle: " + toString(dB)) + " key: ") + dC))
547547 let dE = valueOrElse(getString(this, b), "")
548548 if ((dE != ""))
549549 then {
550550 let dF = lastBlock.height
551551 let dG = valueOrErrorMessage(getInteger(dB, dE), ((("Can not get oracle block. Oracle: " + toString(dB)) + " key: ") + dE))
552552 if (((dF - dG) > cf()))
553553 then throw(((("Oracle stale data. Last oracle block: " + toString(dG)) + " current block: ") + toString(dF)))
554554 else dD
555555 }
556556 else dD
557557 }
558558
559559
560560 func dH () = {
561561 let dB = valueOrErrorMessage(addressFromString(getStringValue(this, d)), "")
562562 let dI = valueOrElse(getString(this, c), "")
563563 if ((dI != ""))
564564 then {
565565 let dJ = valueOrErrorMessage(getBoolean(dB, dI), ((("Can not get oracle is open/closed. Oracle: " + toString(dB)) + " key: ") + dI))
566566 !(dJ)
567567 }
568568 else false
569569 }
570570
571571
572572 func dK (dL,dr,dt,cJ,cL) = {
573573 let dM = aS(aU(dr, cJ), aU(dt, cL))
574574 let dN = aS((dL + dM), (2 * aL))
575575 let dK = aS(bb((dL - dM)), dN)
576576 dK
577577 }
578578
579579
580580 func dO (dr,dt) = {
581581 let dP = dA()
582582 let cJ = bI()
583583 let cL = bJ()
584584 let dQ = dK(dP, bG(), bH(), cJ, cL)
585585 let dR = dK(dP, dr, dt, cJ, cL)
586586 if (if ((dR > bX()))
587587 then (dR > dQ)
588588 else false)
589589 then throw(((("Price spread " + toString(dR)) + " > max price spread ") + toString(bX())))
590590 else true
591591 }
592592
593593
594594 func dS (dT,dU) = {
595595 let dV = bY()
596596 if ((dT > dV))
597597 then throw(((("Long open notional " + toString(dT)) + " > max open notional ") + toString(dV)))
598598 else if ((dU > dV))
599599 then throw(((("Short open notional " + toString(dU)) + " > max open notional ") + toString(dV)))
600600 else true
601601 }
602602
603603
604604 func dW () = {
605605 let dr = bG()
606606 let dt = bH()
607607 let cJ = bI()
608608 let cL = bJ()
609609 aS(aU(dr, cJ), aU(dt, cL))
610610 }
611611
612612
613613 func dX () = {
614614 let dP = dA()
615615 let dY = dW()
616616 (aS(bb((dP - dY)), dP) > bV())
617617 }
618618
619619
620620 func dZ (co,ea,dr,ds,dt,du) = {
621621 let eb = bb(co)
622622 let ec = (0 > co)
623623 let ed = if ((ea == aO))
624624 then {
625625 let ee = dp(!(ec), eb, false, dr, ds, dt, du)
626626 let ef = ee._1
627627 let eg = ee._2
628628 let eh = ee._3
629629 let ei = ee._4
630630 ef
631631 }
632632 else aU(eb, dA())
633633 ed
634634 }
635635
636636
637637 func ej (co,ek,dr,ds,dt,du,ea) = if ((co == 0))
638638 then throw("Invalid position size")
639639 else {
640640 let ec = (0 > co)
641641 let ed = dZ(co, ea, dr, ds, dt, du)
642642 let el = if (ec)
643643 then (ek - ed)
644644 else (ed - ek)
645645 $Tuple2(ed, el)
646646 }
647647
648648
649649 func em (cq,ea) = {
650650 let en = cp(cq)
651651 let ct = en._1
652652 let eo = en._2
653653 let ep = en._3
654654 let eq = en._4
655655 ej(ct, ep, bG(), bI(), bH(), bJ(), ea)
656656 }
657657
658658
659659 func er (es,et,eu) = aS((es - et), eu)
660660
661661
662662 func ev (cq,ea) = {
663663 let ew = cp(cq)
664664 let ct = ew._1
665665 let eo = ew._2
666666 let ex = ew._3
667667 let eq = ew._4
668668 let ey = em(cq, ea)
669669 let ed = ey._1
670670 let el = ey._2
671671 let ez = de(ct, eo, eq, el)
672672 let dn = ez._1
673673 let do = ez._2
674674 er(dn, do, ed)
675675 }
676676
677677
678678 func eA (cq) = ev(cq, aO)
679679
680680
681681 func eB (cq,co) = {
682682 let eC = bc(bU(), (aL - aS(eA(cq), bS())))
683683 let eD = aU(bb(co), eC)
684684 let eE = dz((co > 0), eD, false)
685685 let eF = eE._1
686686 let dc = eE._7
687687 if ((bW() > dc))
688688 then eF
689689 else {
690690 let eG = aU(bb(co), bU())
691691 let eH = dz((co > 0), eG, false)._1
692692 eH
693693 }
694694 }
695695
696696
697697 func eI (cq,dq) = {
698698 let eJ = cp(cq)
699699 let ct = eJ._1
700700 let eo = eJ._2
701701 let ep = eJ._3
702702 let eq = eJ._4
703703 let el = em(cq, aO)._2
704704 let eK = de(ct, eo, eq, el)
705705 let dn = eK._1
706706 let do = eK._2
707707 let eG = -(ct)
708708 let eL = el
709709 let eM = -(dn)
710710 let eN = dz((ct > 0), bb(ct), dq)
711711 let eH = eN._1
712712 let cR = eN._2
713713 let cS = eN._3
714714 let eO = eN._4
715715 let eP = eN._5
716716 let eQ = eN._6
717717 let eR = (bL() - ep)
718718 $Tuple13(eG, do, eL, eM, cR, cS, eO, eR, eH, eP, eQ, (bN() - (if ((ct > 0))
719719 then ep
720720 else 0)), (bM() - (if ((0 > ct))
721721 then ep
722722 else 0)))
723723 }
724724
725725
726726 func eS () = {
727727 let eT = ((lastBlock.timestamp / 1000) / 60)
728728 let eU = (eT - aH)
729729 let eV = valueOrElse(getString(this, B), "")
730730 let eW = split(eV, ",")
731731 func eX (bg,eY) = if ((eU >= parseIntValue(eY)))
732732 then (bg :+ parseIntValue(eY))
733733 else bg
734734
735735 let eZ = {
736736 let bj = eW
737737 let bk = size(bj)
738738 let bl = nil
739739 func bm (bn,bo) = if ((bo >= bk))
740740 then bn
741741 else eX(bn, bj[bo])
742742
743743 func bp (bn,bo) = if ((bo >= bk))
744744 then bn
745745 else throw("List size exceeds 20")
746746
747747 bp(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bl, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
748748 }
749749 let fa = if ((size(eZ) > 0))
750750 then max(eZ)
751751 else parseIntValue(eW[0])
752752 let fb = valueOrElse(getInteger(this, C), 0)
753753 let fc = valueOrElse(getInteger(this, ((D + "_") + toString(fb))), 0)
754754 let fd = valueOrElse(getInteger(this, ((E + "_") + toString(fb))), 0)
755755 let fe = (fc + ((eT - fb) * fd))
756756 let ff = valueOrElse(getInteger(this, ((D + "_") + toString(fa))), 0)
757757 let fg = valueOrElse(getInteger(this, ((E + "_") + toString(fa))), 0)
758758 let fh = (ff + ((eU - fa) * fg))
759759 ((fe - fh) / aH)
760760 }
761761
762762
763763 func fi () = {
764764 let co = bK()
765765 if ((co == 0))
766766 then $Tuple2(bG(), bH())
767767 else {
768768 let fj = (co > 0)
769769 let fk = dz(fj, bb(co), false)
770770 let fl = fk._1
771771 let fm = fk._2
772772 let fn = fk._3
773773 $Tuple2(fm, fn)
774774 }
775775 }
776776
777777
778778 func fo (fp,bK,fq,fr) = {
779779 let fs = toBigInt(fp)
780780 let ft = toBigInt(bK)
781781 let fu = toBigInt(fq)
782782 let fv = toBigInt(fr)
783783 let fw = ba((fs + ft), toBigInt((2 * aL)))
784784 let fx = aY(fu, fw)
785785 let fy = (toBigInt(4) * aY(fv, ft))
786786 let fz = aZ(aY(fx, (fu - fy)))
787787 let fA = aY(fs, fu)
788788 let fB = aY(fu, ft)
789789 let fC = ((-(fz) + fA) + fB)
790790 let fD = (toBigInt(2) * aY(fu, ft))
791791 let fE = aX(fC, fD)
792792 toInt(fE)
793793 }
794794
795795
796796 func fF (fG,cI,cK) = {
797797 let co = bK()
798798 if ((co == 0))
799799 then {
800800 let fH = aS(aU(fG, cK), cI)
801801 $Tuple3(fH, aL, 0)
802802 }
803803 else {
804804 let fj = (co > 0)
805805 let fl = dz(fj, bb(co), false)._1
806806 let fH = fo(cK, co, cI, fG)
807807 let fI = aL
808808 let eM = ej(co, fl, cI, fH, cK, fI, aO)._2
809809 $Tuple3(fH, fI, eM)
810810 }
811811 }
812812
813813
814814 func fJ () = {
815815 let fK = dA()
816816 let fL = eS()
817817 let fM = (fL - fK)
818818 if (if (if ((cb() == 0))
819819 then true
820820 else (cc() == 0))
821821 then true
822822 else dH())
823823 then $Tuple2(0, 0)
824824 else if ((0 > fM))
825825 then {
826826 let fN = aS(aU(fM, bQ()), aM)
827827 let fO = aS(aU(fN, cb()), cc())
828828 $Tuple2(fN, fO)
829829 }
830830 else {
831831 let fO = aS(aU(fM, bQ()), aM)
832832 let fN = aS(aU(fO, cc()), cb())
833833 $Tuple2(fN, fO)
834834 }
835835 }
836836
837837
838838 func fP (fQ,fR) = {
839839 let fS = bE()
840840 let fT = aU(fS, fR)
841841 let fU = if ((fQ != ""))
842842 then {
843843 let fV = bB(aw(), aj(aD, fQ))
844844 if ((fV == aE))
845845 then {
846846 let fW = bC(aw(), aj(aC, fQ))
847847 let fX = aU(fT, fW)
848848 $Tuple2(fX, true)
849849 }
850850 else throw("Invalid attached artifact")
851851 }
852852 else $Tuple2(fT, false)
853853 let fX = fU._1
854854 let fY = fU._2
855855 $Tuple2(fX, fY)
856856 }
857857
858858
859859 func fZ (cq,aB) = {
860860 let ga = cp(cq)._1
861861 if ((ga == 0))
862862 then true
863863 else (cu(cq) == aB)
864864 }
865865
866866
867867 func gb (cq,aB) = (cu(cq) == aB)
868868
869869
870870 func gc (gd,aB,cq) = ((((((ai + "_") + gd) + "_") + aB) + "_") + cq)
871871
872872
873873 func ge (cq) = {
874874 let cw = cu(cq)
875875 if ((cw == toBase58String(ap())))
876876 then $Tuple2(0, cw)
877877 else {
878878 let gf = gc(toString(this), cw, cq)
879879 let gg = valueOrElse(getInteger(ax(), gf), 0)
880880 $Tuple2(gg, cw)
881881 }
882882 }
883883
884884
885885 func gh (cq,fQ) = {
886886 let gi = invoke(at(), "computeFeeDiscount", [cq], nil)
887887 if ((gi == gi))
888888 then {
889889 let gj = {
890890 let cs = gi
891891 if ($isInstanceOf(cs, "Int"))
892892 then {
893893 let gk = cs
894894 gk
895895 }
896896 else throw("Invalid computeFeeDiscount result")
897897 }
898898 let gl = fP(fQ, gj)
899899 let fX = gl._1
900900 let fY = gl._2
901901 $Tuple2(fX, fY)
902902 }
903903 else throw("Strict value is not equal to itself.")
904904 }
905905
906906
907907 func gm (ch) = {
908908 let gn = if ((size(ch.payments) > 1))
909909 then toBase58String(valueOrErrorMessage(ch.payments[1].assetId, "Invalid artifactId"))
910910 else ""
911911 gn
912912 }
913913
914914
915915 func go (gp) = {
916916 let gq = aU(gp, ce())
917917 let gr = (gp - gq)
918918 $Tuple2(gq, gr)
919919 }
920920
921921
922922 func gs (gt,gu,gv,gw,gx,gy,gz,gA,gB,dV,gC,gD) = [IntegerEntry(r, gt), IntegerEntry(s, gu), IntegerEntry(t, gv), IntegerEntry(q, gw), IntegerEntry(p, gx), IntegerEntry(v, gy), IntegerEntry(w, gz), IntegerEntry(u, gA), IntegerEntry(x, gB), IntegerEntry(y, dV), IntegerEntry(z, gC), IntegerEntry(A, gC)]
923923
924924
925925 func gE (gF,gG,gH,gI,gJ) = [IntegerEntry(I, gF), IntegerEntry(G, gG), IntegerEntry(H, gH), IntegerEntry(J, gI), IntegerEntry(K, gJ)]
926926
927927
928928 func gK (al,aB) = [StringEntry(aj(l, al), aB)]
929929
930930
931931 func gL (gM,al) = if (gM)
932932 then {
933933 let gN = cd()
934934 [IntegerEntry(aj(k, al), (gN + 1)), IntegerEntry(f, (gN + 1))]
935935 }
936936 else nil
937937
938938
939939 func gO (al,gP,gQ,gR,dk) = [IntegerEntry(aj(g, al), gP), IntegerEntry(aj(h, al), gQ), IntegerEntry(aj(i, al), gR), IntegerEntry(aj(j, al), dk)]
940940
941941
942942 func gS (gT) = {
943943 let eT = ((lastBlock.timestamp / 1000) / 60)
944944 let gU = valueOrElse(getInteger(this, C), 0)
945945 if ((gU > eT))
946946 then throw("TWAP out-of-order")
947947 else {
948948 let fb = if ((gU == 0))
949949 then eT
950950 else gU
951951 if ((eT > gU))
952952 then {
953953 let gV = valueOrElse(getInteger(this, ((D + "_") + toString(gU))), 0)
954954 let gW = valueOrElse(getInteger(this, ((E + "_") + toString(gU))), gT)
955955 let gX = (gV + ((eT - fb) * gW))
956956 let eW = bu(bs(valueOrElse(getString(this, B), "")), aH, toString(eT))
957957 [IntegerEntry(aj(D, toString(eT)), gX), IntegerEntry(aj(E, toString(eT)), gT), IntegerEntry(aj(F, toString(eT)), gU), IntegerEntry(C, eT), StringEntry(B, bd(eW))]
958958 }
959959 else {
960960 let gY = valueOrElse(getInteger(this, aj(F, toString(eT))), 0)
961961 let gV = valueOrElse(getInteger(this, aj(D, toString(gY))), 0)
962962 let gW = valueOrElse(getInteger(this, aj(E, toString(gY))), gT)
963963 let gX = (gV + ((eT - gY) * gW))
964964 [IntegerEntry(aj(D, toString(eT)), gX), IntegerEntry(aj(E, toString(eT)), gT)]
965965 }
966966 }
967967 }
968968
969969
970970 func gZ (cI,cK) = [IntegerEntry(L, cI), IntegerEntry(M, cK)]
971971
972972
973973 func ha (cJ,cL) = [IntegerEntry(N, cJ), IntegerEntry(O, cL)]
974974
975975
976976 func hb (cI,cK,hc,hd,he,hf,hg,hh) = {
977977 let cJ = bI()
978978 let cL = bJ()
979979 if (((he - hf) != hc))
980980 then throw(((((("Invalid AMM state data: " + toString(he)) + " + ") + toString(hf)) + " != ") + toString(hc)))
981981 else ((gZ(cI, cK) ++ [IntegerEntry(P, hc), IntegerEntry(S, hd), IntegerEntry(Q, he), IntegerEntry(R, hf), IntegerEntry(U, hg), IntegerEntry(T, hh)]) ++ gS(aS(aU(cI, cJ), aU(cK, cL))))
982982 }
983983
984984
985985 func hi (al) = [DeleteEntry(aj(g, al)), DeleteEntry(aj(h, al)), DeleteEntry(aj(i, al)), DeleteEntry(aj(j, al)), DeleteEntry(aj(l, al))]
986986
987987
988988 func hj (al,hk) = {
989989 let hl = assetBalance(this, ap())
990990 if ((hk > hl))
991991 then throw(((("Unable to withdraw " + toString(hk)) + " from contract balance ") + toString(hl)))
992992 else [ScriptTransfer(al, hk, ap())]
993993 }
994994
995995
996996 func hm (ch) = if ((0 > ch))
997997 then throw("Balance")
998998 else [IntegerEntry(e, ch)]
999999
10001000
10011001 func hn (ch) = [ScriptTransfer(ar(), ch, ap())]
10021002
10031003
10041004 func ho (hp,ch) = if (hp)
10051005 then [Burn(valueOrErrorMessage(ch.payments[1].assetId, "Invalid artifact"), 1)]
10061006 else nil
10071007
10081008
10091009 @Callable(ch)
10101010 func pause () = if ((ch.caller != an()))
10111011 then throw("Invalid pause params")
10121012 else [BooleanEntry(n, true)]
10131013
10141014
10151015
10161016 @Callable(ch)
10171017 func unpause () = if ((ch.caller != an()))
10181018 then throw("Invalid unpause params")
10191019 else [BooleanEntry(n, false)]
10201020
10211021
10221022
10231023 @Callable(ch)
10241024 func setCloseOnly () = if ((ch.caller != an()))
10251025 then throw("Invalid setCloseOnly params")
10261026 else [BooleanEntry(o, true)]
10271027
10281028
10291029
10301030 @Callable(ch)
10311031 func unsetCloseOnly () = if ((ch.caller != an()))
10321032 then throw("Invalid unsetCloseOnly params")
10331033 else [BooleanEntry(o, false)]
10341034
10351035
10361036
10371037 @Callable(ch)
10381038 func addLiquidity (cD) = if (if ((ch.caller != an()))
10391039 then true
10401040 else (0 >= cD))
10411041 then throw("Invalid addLiquidity params")
10421042 else {
10431043 let cI = bG()
10441044 let cK = bH()
10451045 let cJ = bI()
10461046 let cL = bJ()
10471047 let hq = aS(aU(cI, cJ), aU(cK, cL))
10481048 let hr = (cI + cD)
10491049 let hs = (aS(aU(hr, cJ), hq) - cK)
10501050 let ht = (cK + hs)
10511051 let hu = fF(dA(), hr, ht)
10521052 let hv = hu._1
10531053 let hw = hu._2
10541054 let eM = hu._3
10551055 let hx = if ((eM != 0))
10561056 then {
10571057 let hx = invoke(as(), "exchangeFreeAndLocked", [eM], nil)
10581058 if ((hx == hx))
10591059 then nil
10601060 else throw("Strict value is not equal to itself.")
10611061 }
10621062 else nil
10631063 if ((hx == hx))
10641064 then (gZ(hr, ht) ++ ha(hv, hw))
10651065 else throw("Strict value is not equal to itself.")
10661066 }
10671067
10681068
10691069
10701070 @Callable(ch)
10711071 func removeLiquidity (cD) = if (if ((ch.caller != an()))
10721072 then true
10731073 else (0 >= cD))
10741074 then throw("Invalid removeLiquidity params")
10751075 else {
10761076 let cI = bG()
10771077 let cK = bH()
10781078 let cJ = bI()
10791079 let cL = bJ()
10801080 let hq = aS(aU(cI, cJ), aU(cK, cL))
10811081 let hy = aS(cD, hq)
10821082 let hr = (cI - cD)
10831083 let ht = (cK - hy)
10841084 gZ(hr, ht)
10851085 }
10861086
10871087
10881088
10891089 @Callable(ch)
10901090 func changeSettings (gt,gu,gv,gw,gx,gy,gz,gA,gB,dV,gC,gD) = if ((ch.caller != an()))
10911091 then throw("Invalid changeSettings params")
10921092 else gs(gt, gu, gv, gw, gx, gy, gz, gA, gB, dV, gC, gD)
10931093
10941094
10951095
10961096 @Callable(ch)
10971097 func initialize (cI,cK,gw,gt,gu,gv,gx,hz,hA,hB,hC,gy,gz,gA,gB,dV,gC,gD) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if ((0 >= cI))
10981098 then true
10991099 else (0 >= cK))
11001100 then true
11011101 else (0 >= gw))
11021102 then true
11031103 else (0 >= gt))
11041104 then true
11051105 else (0 >= gu))
11061106 then true
11071107 else (0 >= gv))
11081108 then true
11091109 else (0 >= gx))
11101110 then true
11111111 else (0 >= gy))
11121112 then true
11131113 else (0 >= gz))
11141114 then true
11151115 else (0 >= gA))
11161116 then true
11171117 else (0 >= gB))
11181118 then true
11191119 else (0 >= dV))
11201120 then true
11211121 else (0 >= gC))
11221122 then true
11231123 else (gC > aL))
11241124 then true
11251125 else (0 >= gD))
11261126 then true
11271127 else cy())
11281128 then throw("Invalid initialize parameters")
11291129 else ((((hb(cI, cK, 0, 0, 0, 0, 0, 0) ++ gs(gt, gu, gv, gw, gx, gy, gz, gA, gB, dV, gC, gD)) ++ gE((lastBlock.timestamp + gw), 0, 0, 0, 0)) ++ hm(0)) ++ [BooleanEntry(m, true), StringEntry(d, hz), StringEntry(a, hA), StringEntry(b, hB), StringEntry(V, hC)])
11301130
11311131
11321132
11331133 @Callable(ch)
11341134 func decreasePosition (hk,hD,hE) = {
11351135 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
11361136 if ((hF == hF))
11371137 then {
11381138 let cq = cg(ch)
11391139 if (if (if (if (if (if ((0 >= hk))
11401140 then true
11411141 else !(cy()))
11421142 then true
11431143 else !(ci(aS(aL, hD), bF(), true)))
11441144 then true
11451145 else !(cx(cq)))
11461146 then true
11471147 else cz())
11481148 then true
11491149 else dH())
11501150 then throw("Invalid decreasePosition parameters")
11511151 else {
11521152 let hG = cp(cq)
11531153 let ga = hG._1
11541154 let hH = hG._2
11551155 let hI = hG._3
11561156 let hJ = hG._4
11571157 let hK = if ((ga > 0))
11581158 then aG
11591159 else aF
11601160 let hL = (hK == aF)
11611161 let hM = aU(hk, hD)
11621162 let hN = em(cq, aO)
11631163 let hO = hN._1
11641164 let el = hN._2
11651165 let hP = if ((hO > hM))
11661166 then {
11671167 let hQ = cQ(hL, hM)
11681168 let eG = hQ._1
11691169 let cR = hQ._2
11701170 let cS = hQ._3
11711171 let eO = hQ._4
11721172 let hR = bb(eG)
11731173 if (if ((hE != 0))
11741174 then (hE > hR)
11751175 else false)
11761176 then throw(((("Too little base asset exchanged, got " + toString(hR)) + " expected ") + toString(hE)))
11771177 else {
11781178 let eL = aS(aU(el, hR), bb(ga))
11791179 let hS = de(ga, hH, hJ, eL)
11801180 let dn = hS._1
11811181 let do = hS._2
11821182 let dj = hS._3
11831183 let eH = hM
11841184 let hT = (el - eL)
11851185 let hU = if ((ga > 0))
11861186 then ((hO - eH) - hT)
11871187 else ((hT + hO) - eH)
11881188 let hV = (ga + eG)
11891189 $Tuple12(hV, dn, bb(hU), cn(hV), cS, cR, eO, (bL() - hM), (cc() - (if ((hV > 0))
11901190 then bb(eG)
11911191 else 0)), (cb() - (if ((0 > hV))
11921192 then bb(eG)
11931193 else 0)), (bN() - (if ((hV > 0))
11941194 then hM
11951195 else 0)), (bM() - (if ((0 > hV))
11961196 then hM
11971197 else 0)))
11981198 }
11991199 }
12001200 else throw("Close position first")
12011201 let hV = hP._1
12021202 let hW = hP._2
12031203 let hX = hP._3
12041204 let hY = hP._4
12051205 let cS = hP._5
12061206 let cR = hP._6
12071207 let eO = hP._7
12081208 let eR = hP._8
12091209 let eP = hP._9
12101210 let eQ = hP._10
12111211 let hZ = hP._11
12121212 let ia = hP._12
12131213 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
12141214 if ((ib == ib))
12151215 then (gO(cq, hV, hW, hX, hY) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia))
12161216 else throw("Strict value is not equal to itself.")
12171217 }
12181218 }
12191219 else throw("Strict value is not equal to itself.")
12201220 }
12211221
12221222
12231223
12241224 @Callable(ch)
12251225 func increasePosition (hK,hD,hE,ic) = {
12261226 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
12271227 if ((hF == hF))
12281228 then {
12291229 let cq = cg(ch)
12301230 let id = ch.payments[0].amount
12311231 let aB = ch.payments[0].assetId
12321232 let ie = toBase58String(value(aB))
12331233 let if = (aB == ap())
12341234 let ig = aA(ie)
12351235 if (if (if (if (if (if (if (if (if (if ((hK != aF))
12361236 then (hK != aG)
12371237 else false)
12381238 then true
12391239 else (0 >= id))
12401240 then true
12411241 else !(cy()))
12421242 then true
12431243 else if (!(if))
12441244 then !(ig)
12451245 else false)
12461246 then true
12471247 else !(fZ(cq, ie)))
12481248 then true
12491249 else !(ci(aS(aL, hD), bF(), true)))
12501250 then true
12511251 else cz())
12521252 then true
12531253 else cA())
12541254 then true
12551255 else dH())
12561256 then throw("Invalid increasePosition parameters")
12571257 else {
12581258 let ih = gh(cq, gm(ch))
12591259 let fX = ih._1
12601260 let fY = ih._2
12611261 let ii = aU(id, fX)
12621262 let hk = (id - ii)
12631263 let ij = if (ig)
12641264 then {
12651265 let ik = invoke(ax(), "borrow", [cq], [AttachedPayment(aB, hk)])
12661266 if ((ik == ik))
12671267 then {
12681268 let il = assetBalance(this, ap())
12691269 if ((il == il))
12701270 then {
12711271 let im = invoke(ay(), "swap", [toBase58String(ap()), 0], [AttachedPayment(aB, ii)])
12721272 if ((im == im))
12731273 then {
12741274 let in = assetBalance(this, ap())
12751275 if ((in == in))
12761276 then {
12771277 let io = (in - il)
12781278 if ((io == io))
12791279 then io
12801280 else throw("Strict value is not equal to itself.")
12811281 }
12821282 else throw("Strict value is not equal to itself.")
12831283 }
12841284 else throw("Strict value is not equal to itself.")
12851285 }
12861286 else throw("Strict value is not equal to itself.")
12871287 }
12881288 else throw("Strict value is not equal to itself.")
12891289 }
12901290 else ii
12911291 if ((ij == ij))
12921292 then {
12931293 let ip = invoke(av(), "acceptPaymentWithLink", [cq, ic], [AttachedPayment(ap(), ij)])
12941294 if ((ip == ip))
12951295 then {
12961296 let iq = {
12971297 let cs = ip
12981298 if ($isInstanceOf(cs, "Int"))
12991299 then {
13001300 let gk = cs
13011301 gk
13021302 }
13031303 else throw("Invalid referrerFee")
13041304 }
13051305 let ir = (ij - iq)
13061306 let is = cp(cq)
13071307 let ga = is._1
13081308 let hH = is._2
13091309 let hI = is._3
13101310 let hJ = is._4
13111311 let gM = (ga == 0)
13121312 let it = if ((ga > 0))
13131313 then (hK == aF)
13141314 else (hK == aG)
13151315 let iu = if (!(gM))
13161316 then it
13171317 else false
13181318 let hL = (hK == aF)
13191319 let iv = if (if (gM)
13201320 then true
13211321 else iu)
13221322 then {
13231323 let hM = aU(hk, hD)
13241324 let iw = cQ(hL, hM)
13251325 let cU = iw._1
13261326 let cR = iw._2
13271327 let cS = iw._3
13281328 let eO = iw._4
13291329 if (if ((hE != 0))
13301330 then (hE > bb(cU))
13311331 else false)
13321332 then throw(((("Limit error: " + toString(bb(cU))) + " < ") + toString(hE)))
13331333 else {
13341334 let hV = (ga + cU)
13351335 let hZ = (bN() + (if ((hV > 0))
13361336 then hM
13371337 else 0))
13381338 let ia = (bM() + (if ((0 > hV))
13391339 then hM
13401340 else 0))
13411341 let ix = aS(hM, hD)
13421342 let iy = de(ga, hH, hJ, ix)
13431343 let dn = iy._1
13441344 let eg = iy._2
13451345 let eh = iy._3
13461346 if (!(dO(cR, cS)))
13471347 then throw("Over max spread limit")
13481348 else if (!(dS(hZ, ia)))
13491349 then throw("Over max open notional")
13501350 else $Tuple12(hV, dn, (hI + hM), cn(hV), cS, cR, eO, (bL() + hM), (cc() + (if ((hV > 0))
13511351 then bb(cU)
13521352 else 0)), (cb() + (if ((0 > hV))
13531353 then bb(cU)
13541354 else 0)), hZ, ia)
13551355 }
13561356 }
13571357 else {
13581358 let hM = aU(hk, hD)
13591359 let iz = em(toString(ch.caller), aO)
13601360 let hO = iz._1
13611361 let el = iz._2
13621362 if ((hO > hM))
13631363 then throw("Use decreasePosition to decrease position size")
13641364 else throw("Close position first")
13651365 }
13661366 let hV = iv._1
13671367 let hW = iv._2
13681368 let hX = iv._3
13691369 let hY = iv._4
13701370 let cS = iv._5
13711371 let cR = iv._6
13721372 let eO = iv._7
13731373 let eR = iv._8
13741374 let eP = iv._9
13751375 let eQ = iv._10
13761376 let hZ = iv._11
13771377 let ia = iv._12
13781378 let iA = go(ir)
13791379 let gq = iA._1
13801380 let gr = iA._2
13811381 let iB = if (if)
13821382 then {
13831383 let iB = invoke(as(), "addLocked", [false], [AttachedPayment(ap(), hk)])
13841384 if ((iB == iB))
13851385 then nil
13861386 else throw("Strict value is not equal to itself.")
13871387 }
13881388 else nil
13891389 if ((iB == iB))
13901390 then {
13911391 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
13921392 if ((iC == iC))
13931393 then {
13941394 let iD = invoke(at(), "notifyFees", [cq, ir], nil)
13951395 if ((iD == iD))
13961396 then {
13971397 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
13981398 if ((ib == ib))
13991399 then ((((((gO(cq, hV, hW, hX, hY) ++ gL(gM, cq)) ++ gK(cq, ie)) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ hn(gq)) ++ hm((bD() + hk))) ++ ho(fY, ch))
14001400 else throw("Strict value is not equal to itself.")
14011401 }
14021402 else throw("Strict value is not equal to itself.")
14031403 }
14041404 else throw("Strict value is not equal to itself.")
14051405 }
14061406 else throw("Strict value is not equal to itself.")
14071407 }
14081408 else throw("Strict value is not equal to itself.")
14091409 }
14101410 else throw("Strict value is not equal to itself.")
14111411 }
14121412 }
14131413 else throw("Strict value is not equal to itself.")
14141414 }
14151415
14161416
14171417
14181418 @Callable(ch)
14191419 func addMargin () = {
14201420 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
14211421 if ((hF == hF))
14221422 then {
14231423 let cq = toString(ch.caller)
14241424 let id = ch.payments[0].amount
14251425 let aB = ch.payments[0].assetId
14261426 let ie = toBase58String(value(aB))
14271427 let if = (aB == ap())
14281428 let ig = aA(ie)
14291429 if (if (if (if (if (if (if (if (!(if))
14301430 then !(ig)
14311431 else false)
14321432 then true
14331433 else !(cx(toString(ch.caller))))
14341434 then true
14351435 else !(gb(cq, ie)))
14361436 then true
14371437 else !(cy()))
14381438 then true
14391439 else cz())
14401440 then true
14411441 else cA())
14421442 then true
14431443 else dH())
14441444 then throw("Invalid addMargin parameters")
14451445 else {
14461446 let iE = gh(cq, gm(ch))
14471447 let fX = iE._1
14481448 let fY = iE._2
14491449 let ii = aU(id, fX)
14501450 let hk = (id - ii)
14511451 let ij = if (ig)
14521452 then {
14531453 let ik = invoke(ax(), "borrow", [cq], [AttachedPayment(aB, hk)])
14541454 if ((ik == ik))
14551455 then {
14561456 let il = assetBalance(this, ap())
14571457 if ((il == il))
14581458 then {
14591459 let im = invoke(ay(), "swap", [toBase58String(ap()), 0], [AttachedPayment(aB, ii)])
14601460 if ((im == im))
14611461 then {
14621462 let in = assetBalance(this, ap())
14631463 if ((in == in))
14641464 then {
14651465 let io = (in - il)
14661466 if ((io == io))
14671467 then io
14681468 else throw("Strict value is not equal to itself.")
14691469 }
14701470 else throw("Strict value is not equal to itself.")
14711471 }
14721472 else throw("Strict value is not equal to itself.")
14731473 }
14741474 else throw("Strict value is not equal to itself.")
14751475 }
14761476 else throw("Strict value is not equal to itself.")
14771477 }
14781478 else ii
14791479 if ((ij == ij))
14801480 then {
14811481 let ip = invoke(av(), "acceptPayment", [cq], [AttachedPayment(ap(), ij)])
14821482 if ((ip == ip))
14831483 then {
14841484 let iq = {
14851485 let cs = ip
14861486 if ($isInstanceOf(cs, "Int"))
14871487 then {
14881488 let gk = cs
14891489 gk
14901490 }
14911491 else throw("Invalid referrerFee")
14921492 }
14931493 let ir = (ij - iq)
14941494 let iF = cp(cq)
14951495 let ga = iF._1
14961496 let hH = iF._2
14971497 let hI = iF._3
14981498 let hJ = iF._4
14991499 let iG = go(ir)
15001500 let gq = iG._1
15011501 let gr = iG._2
15021502 let iB = if (if)
15031503 then {
15041504 let iB = invoke(as(), "addLocked", [false], [AttachedPayment(ap(), hk)])
15051505 if ((iB == iB))
15061506 then nil
15071507 else throw("Strict value is not equal to itself.")
15081508 }
15091509 else nil
15101510 if ((iB == iB))
15111511 then {
15121512 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
15131513 if ((iC == iC))
15141514 then {
15151515 let iD = invoke(at(), "notifyFees", [cq, ir], nil)
15161516 if ((iD == iD))
15171517 then (((gO(cq, ga, (hH + hk), hI, hJ) ++ hn(gq)) ++ hm((bD() + hk))) ++ ho(fY, ch))
15181518 else throw("Strict value is not equal to itself.")
15191519 }
15201520 else throw("Strict value is not equal to itself.")
15211521 }
15221522 else throw("Strict value is not equal to itself.")
15231523 }
15241524 else throw("Strict value is not equal to itself.")
15251525 }
15261526 else throw("Strict value is not equal to itself.")
15271527 }
15281528 }
15291529 else throw("Strict value is not equal to itself.")
15301530 }
15311531
15321532
15331533
15341534 @Callable(ch)
15351535 func removeMargin (hk) = {
15361536 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
15371537 if ((hF == hF))
15381538 then {
15391539 let cq = toString(ch.caller)
15401540 if (if (if (if (if ((0 >= hk))
15411541 then true
15421542 else !(cx(cq)))
15431543 then true
15441544 else !(cy()))
15451545 then true
15461546 else cz())
15471547 then true
15481548 else dH())
15491549 then throw("Invalid removeMargin parameters")
15501550 else {
15511551 let iH = cp(cq)
15521552 let ga = iH._1
15531553 let hH = iH._2
15541554 let hI = iH._3
15551555 let hJ = iH._4
15561556 let iI = -(hk)
15571557 let iJ = de(ga, hH, hJ, iI)
15581558 let dn = iJ._1
15591559 let do = iJ._2
15601560 if ((do != 0))
15611561 then throw("Invalid removed margin amount")
15621562 else {
15631563 let iK = er(dn, do, hI)
15641564 if (!(ci(iK, bF(), true)))
15651565 then throw(((("Too much margin removed: " + toString(iK)) + " < ") + toString(bF())))
15661566 else {
15671567 let iL = toBase58String(ap())
15681568 let iM = ge(cq)
15691569 let iN = iM._1
15701570 let iO = iM._2
15711571 let iP = if ((hk > iN))
15721572 then iN
15731573 else hk
15741574 let iQ = if ((iN > hk))
15751575 then 0
15761576 else (hk - iN)
15771577 let iR = (iN - iP)
15781578 let iS = if ((iR > 0))
15791579 then nil
15801580 else gK(cq, iL)
15811581 let iT = if (((iP + iQ) != hk))
15821582 then throw(((((("toRepay=" + toString(iP)) + " + toWithdraw=") + toString(iQ)) + " != ") + toString(hk)))
15831583 else nil
15841584 if ((iT == iT))
15851585 then {
15861586 let iU = if ((iQ > 0))
15871587 then {
15881588 let iU = invoke(as(), "withdrawLocked", [iQ], nil)
15891589 if ((iU == iU))
15901590 then nil
15911591 else throw("Strict value is not equal to itself.")
15921592 }
15931593 else nil
15941594 if ((iU == iU))
15951595 then {
15961596 let iV = if ((iP > 0))
15971597 then {
15981598 let iW = invoke(ax(), "repay", [cq, iP, iO], nil)
15991599 if ((iW == iW))
16001600 then [ScriptTransfer(ch.caller, iP, fromBase58String(iO))]
16011601 else throw("Strict value is not equal to itself.")
16021602 }
16031603 else nil
16041604 if ((iV == iV))
16051605 then ((((gO(cq, ga, dn, hI, cn(ga)) ++ (if ((iQ > 0))
16061606 then hj(ch.caller, iQ)
16071607 else nil)) ++ hm((bD() - hk))) ++ iS) ++ iV)
16081608 else throw("Strict value is not equal to itself.")
16091609 }
16101610 else throw("Strict value is not equal to itself.")
16111611 }
16121612 else throw("Strict value is not equal to itself.")
16131613 }
16141614 }
16151615 }
16161616 }
16171617 else throw("Strict value is not equal to itself.")
16181618 }
16191619
16201620
16211621
16221622 @Callable(ch)
16231623 func closePosition (gP,iX) = {
16241624 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
16251625 if ((hF == hF))
16261626 then {
16271627 let cq = cg(ch)
16281628 let iY = valueOrErrorMessage(addressFromString(cq), "Invalid caller")
16291629 if (if (if (if (if (if (!(cx(cq)))
16301630 then true
16311631 else !(cy()))
16321632 then true
16331633 else cz())
16341634 then true
16351635 else (0 >= gP))
16361636 then true
16371637 else (0 > iX))
16381638 then true
16391639 else dH())
16401640 then throw("Invalid closePosition parameters")
16411641 else {
16421642 let iZ = cp(cq)
16431643 let ga = iZ._1
16441644 let hH = iZ._2
16451645 let hI = iZ._3
16461646 let hJ = iZ._4
16471647 let ja = if ((bb(ga) > gP))
16481648 then {
16491649 let hK = if ((ga > 0))
16501650 then aG
16511651 else aF
16521652 let hL = (hK == aF)
16531653 let jb = dz((ga > 0), gP, true)
16541654 let eH = jb._1
16551655 let cR = jb._2
16561656 let cS = jb._3
16571657 let eO = jb._4
16581658 let eG = if ((ga > 0))
16591659 then -(gP)
16601660 else gP
16611661 let jc = em(cq, aO)
16621662 let hO = jc._1
16631663 let el = jc._2
16641664 let jd = ev(cq, aO)
16651665 let je = aS(bb(eG), bb(ga))
16661666 let eL = aU(el, je)
16671667 let jf = de(ga, hH, hJ, el)._1
16681668 let jg = de(ga, hH, hJ, eL)
16691669 let dn = jg._1
16701670 let jh = jg._2
16711671 let dj = jg._3
16721672 let hT = (el - eL)
16731673 let hU = if ((ga > 0))
16741674 then ((hO - eH) - hT)
16751675 else ((hT + hO) - eH)
16761676 let hX = bb(hU)
1677- let ji = aU(hX, jd)
1677+ let ji = if ((ga > 0))
1678+ then (aU((hX + hT), jd) - hT)
1679+ else (aU((hX - hT), jd) - hT)
16781680 let hV = (ga + eG)
16791681 let jj = cn(hV)
16801682 let eR = (bL() - eH)
16811683 if (if ((iX != 0))
16821684 then (iX > eH)
16831685 else false)
16841686 then throw(((("Limit error: " + toString(eH)) + " < ") + toString(iX)))
1685- else $Tuple15(hV, ji, hX, jj, jh, eL, (jf - ji), cR, cS, eO, eR, (cc() - (if ((hV > 0))
1687+ else $Tuple15(hV, ji, hX, jj, jh, eL, (jf - (ji + hT)), cR, cS, eO, eR, (cc() - (if ((hV > 0))
16861688 then bb(eG)
16871689 else 0)), (cb() - (if ((0 > hV))
16881690 then bb(eG)
16891691 else 0)), (bN() - (if ((hV > 0))
16901692 then eH
16911693 else 0)), (bM() - (if ((0 > hV))
16921694 then eH
16931695 else 0)))
16941696 }
16951697 else if ((gP > bb(ga)))
16961698 then throw("Invalid closePosition parameters")
16971699 else {
16981700 let jk = eI(cq, true)
16991701 let eH = jk._1
17001702 let jh = jk._2
17011703 let eL = jk._3
17021704 let eM = jk._4
17031705 let cR = jk._5
17041706 let cS = jk._6
17051707 let eO = jk._7
17061708 let eR = jk._8
17071709 let eh = jk._9
17081710 let eP = jk._10
17091711 let eQ = jk._11
17101712 let hZ = jk._12
17111713 let ia = jk._13
17121714 if (if ((iX != 0))
17131715 then (iX > eH)
17141716 else false)
17151717 then throw(((("Limit error: " + toString(eH)) + " < ") + toString(iX)))
17161718 else $Tuple15(0, 0, 0, 0, jh, eL, eM, cR, cS, eO, eR, eP, eQ, hZ, ia)
17171719 }
17181720 let hV = ja._1
17191721 let ji = ja._2
17201722 let hX = ja._3
17211723 let jj = ja._4
17221724 let jh = ja._5
17231725 let eL = ja._6
17241726 let eM = ja._7
17251727 let cR = ja._8
17261728 let cS = ja._9
17271729 let eO = ja._10
17281730 let eR = ja._11
17291731 let eP = ja._12
17301732 let eQ = ja._13
17311733 let hZ = ja._14
17321734 let ia = ja._15
17331735 if ((jh > 0))
17341736 then throw("Unable to close position with bad debt")
17351737 else {
17361738 let jl = bb(eM)
17371739 let jm = (bD() - jl)
17381740 let jn = if ((0 > jm))
17391741 then $Tuple2(0, bb(jm))
17401742 else $Tuple2(jm, 0)
17411743 let jo = jn._1
17421744 let jp = jn._2
17431745 let jq = ge(cq)
17441746 let iN = jq._1
17451747 let iO = jq._2
17461748 let jr = if ((iN > 0))
17471749 then if ((jl >= iN))
17481750 then {
17491751 let iW = invoke(ax(), "repay", [cq, iN, iO], nil)
17501752 if ((iW == iW))
17511753 then $Tuple2([ScriptTransfer(iY, iN, fromBase58String(iO))], (jl - iN))
17521754 else throw("Strict value is not equal to itself.")
17531755 }
17541756 else {
17551757 let js = invoke(ax(), "realizePartiallyAndClose", [cq, jl, iO], nil)
17561758 if ((js == js))
17571759 then $Tuple2([ScriptTransfer(iY, jl, fromBase58String(iO))], 0)
17581760 else throw("Strict value is not equal to itself.")
17591761 }
17601762 else $Tuple2(nil, jl)
17611763 if ((jr == jr))
17621764 then {
17631765 let jt = jr._2
17641766 let ju = jr._1
17651767 let jv = if ((jt > 0))
17661768 then {
17671769 let jv = invoke(as(), "withdrawLocked", [jt], nil)
17681770 if ((jv == jv))
17691771 then nil
17701772 else throw("Strict value is not equal to itself.")
17711773 }
17721774 else nil
17731775 if ((jv == jv))
17741776 then {
17751777 let ib = invoke(at(), "notifyNotional", [cq, 0], nil)
17761778 if ((ib == ib))
17771779 then (((((if ((hV == 0))
17781780 then hi(cq)
17791781 else gO(cq, hV, ji, hX, jj)) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ (if ((jt > 0))
17801782 then hj(iY, jt)
17811783 else nil)) ++ hm(jo)) ++ ju)
17821784 else throw("Strict value is not equal to itself.")
17831785 }
17841786 else throw("Strict value is not equal to itself.")
17851787 }
17861788 else throw("Strict value is not equal to itself.")
17871789 }
17881790 }
17891791 }
17901792 else throw("Strict value is not equal to itself.")
17911793 }
17921794
17931795
17941796
17951797 @Callable(ch)
17961798 func liquidate (cq) = {
17971799 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
17981800 if ((hF == hF))
17991801 then {
18001802 let jw = ev(cq, aO)
18011803 let iK = if (dX())
18021804 then {
18031805 let jx = ev(cq, aP)
18041806 bc(jw, jx)
18051807 }
18061808 else jw
18071809 if (if (if (if (if (!(ci(iK, bS(), false)))
18081810 then true
18091811 else !(cx(cq)))
18101812 then true
18111813 else !(cy()))
18121814 then true
18131815 else cz())
18141816 then true
18151817 else dH())
18161818 then throw("Unable to liquidate")
18171819 else if (if (if ((jw > bT()))
18181820 then (bU() > 0)
18191821 else false)
18201822 then (aL > bU())
18211823 else false)
18221824 then {
18231825 let jy = cp(cq)
18241826 let ga = jy._1
18251827 let hH = jy._2
18261828 let hI = jy._3
18271829 let hJ = jy._4
18281830 let hK = if ((ga > 0))
18291831 then aG
18301832 else aF
18311833 let hL = (hK == aF)
18321834 let eH = eB(cq, ga)
18331835 let jz = em(cq, aO)
18341836 let hO = jz._1
18351837 let el = jz._2
18361838 let jA = cQ(hL, eH)
18371839 let eG = jA._1
18381840 let cR = jA._2
18391841 let cS = jA._3
18401842 let eO = jA._4
18411843 let jB = aS(bb(eG), bb(ga))
18421844 let eL = aU(el, jB)
18431845 let jC = de(ga, hH, hJ, eL)
18441846 let dn = jC._1
18451847 let do = jC._2
18461848 let dj = jC._3
18471849 let hT = (el - eL)
18481850 let hU = if ((ga > 0))
18491851 then ((hO - eH) - hT)
18501852 else ((hT + hO) - eH)
18511853 let jD = aU(eH, bT())
18521854 let jE = (jD / 2)
18531855 let gr = (jD - jE)
18541856 let ji = (dn - jD)
18551857 let hV = (ga + eG)
18561858 let hX = bb(hU)
18571859 let jj = cn(hV)
18581860 let eR = (bL() - eH)
18591861 let jm = (bD() - jD)
18601862 let jF = if ((0 > jm))
18611863 then $Tuple2(0, bb(jm))
18621864 else $Tuple2(jm, 0)
18631865 let jG = jF._1
18641866 let jp = jF._2
18651867 let jH = ge(cq)
18661868 let iN = jH._1
18671869 let iO = jH._2
18681870 let jI = if ((iN > 0))
18691871 then {
18701872 let jJ = aU(iN, jB)
18711873 let js = invoke(ax(), "realizePartially", [cq, iO, jJ], nil)
18721874 if ((js == js))
18731875 then nil
18741876 else throw("Strict value is not equal to itself.")
18751877 }
18761878 else nil
18771879 if ((jI == jI))
18781880 then {
18791881 let jv = invoke(as(), "withdrawLocked", [jD], nil)
18801882 if ((jv == jv))
18811883 then {
18821884 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
18831885 if ((iC == iC))
18841886 then {
18851887 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
18861888 if ((ib == ib))
18871889 then (((gO(cq, hV, ji, hX, jj) ++ hb(cR, cS, eO, eR, (cc() - (if ((hV > 0))
18881890 then bb(eG)
18891891 else 0)), (cb() - (if ((0 > hV))
18901892 then bb(eG)
18911893 else 0)), (bN() - (if ((hV > 0))
18921894 then eH
18931895 else 0)), (bM() - (if ((0 > hV))
18941896 then eH
18951897 else 0)))) ++ hj(ch.caller, jE)) ++ hm(jG))
18961898 else throw("Strict value is not equal to itself.")
18971899 }
18981900 else throw("Strict value is not equal to itself.")
18991901 }
19001902 else throw("Strict value is not equal to itself.")
19011903 }
19021904 else throw("Strict value is not equal to itself.")
19031905 }
19041906 else {
19051907 let jK = eI(cq, false)
19061908 let eg = jK._1
19071909 let do = jK._2
19081910 let eh = jK._3
19091911 let ei = jK._4
19101912 let cR = jK._5
19111913 let cS = jK._6
19121914 let eO = jK._7
19131915 let eR = jK._8
19141916 let eH = jK._9
19151917 let eP = jK._10
19161918 let eQ = jK._11
19171919 let hZ = jK._12
19181920 let ia = jK._13
19191921 let jD = aU(eH, bT())
19201922 let jE = (jD / 2)
19211923 let gr = (jD - jE)
19221924 let jm = (bD() - jD)
19231925 let jL = if ((0 > jm))
19241926 then $Tuple2(0, bb(jm))
19251927 else $Tuple2(jm, 0)
19261928 let jG = jL._1
19271929 let jp = jL._2
19281930 let jM = ge(cq)
19291931 let iN = jM._1
19301932 let iO = jM._2
19311933 let jI = if ((iN > 0))
19321934 then {
19331935 let js = invoke(ax(), "realizePartiallyAndClose", [cq, 0, iO], nil)
19341936 if ((js == js))
19351937 then nil
19361938 else throw("Strict value is not equal to itself.")
19371939 }
19381940 else nil
19391941 if ((jI == jI))
19401942 then {
19411943 let gk = if ((do > 0))
19421944 then {
19431945 let jN = invoke(as(), "exchangeFreeAndLocked", [do], nil)
19441946 if ((jN == jN))
19451947 then nil
19461948 else throw("Strict value is not equal to itself.")
19471949 }
19481950 else nil
19491951 if ((gk == gk))
19501952 then {
19511953 let jv = invoke(as(), "withdrawLocked", [jD], nil)
19521954 if ((jv == jv))
19531955 then {
19541956 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
19551957 if ((iC == iC))
19561958 then {
19571959 let ib = invoke(at(), "notifyNotional", [cq, 0], nil)
19581960 if ((ib == ib))
19591961 then (((hi(cq) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ hj(ch.caller, jE)) ++ hm(jG))
19601962 else throw("Strict value is not equal to itself.")
19611963 }
19621964 else throw("Strict value is not equal to itself.")
19631965 }
19641966 else throw("Strict value is not equal to itself.")
19651967 }
19661968 else throw("Strict value is not equal to itself.")
19671969 }
19681970 else throw("Strict value is not equal to itself.")
19691971 }
19701972 }
19711973 else throw("Strict value is not equal to itself.")
19721974 }
19731975
19741976
19751977
19761978 @Callable(ch)
19771979 func payFunding () = {
19781980 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
19791981 if ((hF == hF))
19801982 then {
19811983 let jO = bO()
19821984 if (if (if ((jO > lastBlock.timestamp))
19831985 then true
19841986 else !(cy()))
19851987 then true
19861988 else cz())
19871989 then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(jO)))
19881990 else {
19891991 let fK = dA()
19901992 let jP = fJ()
19911993 let fN = jP._1
19921994 let fO = jP._2
19931995 gE((jO + bR()), (bZ() + fO), (ca() + fN), aS(fO, fK), aS(fN, fK))
19941996 }
19951997 }
19961998 else throw("Strict value is not equal to itself.")
19971999 }
19982000
19992001
20002002
20012003 @Callable(ch)
20022004 func syncTerminalPriceToOracle () = {
20032005 let cI = bG()
20042006 let cK = bH()
20052007 let jQ = fF(dA(), cI, cK)
20062008 let hv = jQ._1
20072009 let hw = jQ._2
20082010 let eM = jQ._3
20092011 let hx = if ((eM != 0))
20102012 then {
20112013 let hx = invoke(as(), "exchangeFreeAndLocked", [eM], nil)
20122014 if ((hx == hx))
20132015 then nil
20142016 else throw("Strict value is not equal to itself.")
20152017 }
20162018 else nil
20172019 if ((hx == hx))
20182020 then (ha(hv, hw) ++ gS(aS(aU(cI, hv), aU(cK, hw))))
20192021 else throw("Strict value is not equal to itself.")
20202022 }
20212023
20222024
20232025
20242026 @Callable(ch)
20252027 func view_calcRemainMarginWithFundingPayment (cq) = {
20262028 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
20272029 if ((hF == hF))
20282030 then {
20292031 let jR = cp(cq)
20302032 let ct = jR._1
20312033 let eo = jR._2
20322034 let ex = jR._3
20332035 let eq = jR._4
20342036 let jS = em(cq, aO)
20352037 let ed = jS._1
20362038 let el = jS._2
20372039 let jT = de(ct, eo, eq, el)
20382040 let dn = jT._1
20392041 let do = jT._2
20402042 let dj = jT._3
20412043 throw((((((aQ(dn) + aQ(dj)) + aQ(eA(cq))) + aQ(el)) + aQ(do)) + aQ(ed)))
20422044 }
20432045 else throw("Strict value is not equal to itself.")
20442046 }
20452047
20462048
20472049
20482050 @Callable(ch)
20492051 func view_getPegAdjustCost (gT) = {
20502052 let cI = bG()
20512053 let cK = bH()
20522054 let fE = fF(gT, cI, cK)
20532055 throw(toString(fE._3))
20542056 }
20552057
20562058
20572059
20582060 @Callable(ch)
20592061 func view_getTerminalAmmPrice () = {
20602062 let jU = fi()
20612063 let fm = jU._1
20622064 let fn = jU._2
20632065 let hq = aS(aU(fm, bI()), aU(fn, bJ()))
20642066 throw(toString(hq))
20652067 }
20662068
20672069
20682070
20692071 @Callable(ch)
20702072 func view_getFunding () = {
20712073 let fK = dA()
20722074 let jV = fJ()
20732075 let fN = jV._1
20742076 let fO = jV._2
20752077 let jW = aS(fO, fK)
20762078 let jX = aS(fN, fK)
20772079 throw((((aQ(jW) + aQ(jX)) + aQ(eS())) + aQ(dA())))
20782080 }
20792081
20802082
20812083
20822084 @Callable(ch)
20832085 func view_getBorrowedByTrader (cq) = {
20842086 let jY = ge(cq)
20852087 let iN = jY._1
20862088 let iO = jY._2
20872089 throw((aQ(iN) + iO))
20882090 }
20892091
20902092
20912093
20922094 @Callable(ch)
20932095 func computeSpotPrice () = {
20942096 let fE = dW()
20952097 $Tuple2(nil, fE)
20962098 }
20972099
20982100
20992101
21002102 @Callable(ch)
21012103 func computeFeeForTraderWithArtifact (cq,fQ) = {
21022104 let fE = gh(cq, fQ)
21032105 $Tuple2(nil, fE)
21042106 }
21052107
21062108
21072109 @Verifier(jZ)
21082110 func ka () = sigVerify(jZ.bodyBytes, jZ.proofs[0], ao())
21092111

github/deemru/w8io/03bedc9 
147.24 ms