tx · 4xhGkvmrHSYWYJv4Nc5p18RdntSvJd9xbR4UE4TV1ntB

3MtZLxTgC6rE5h4iq9mc51D1dEwXHZroWWj:  -0.07500000 Waves

2022.12.29 12:37 [2381398] smart account 3MtZLxTgC6rE5h4iq9mc51D1dEwXHZroWWj > SELF 0.00000000 Waves

{ "type": 13, "id": "4xhGkvmrHSYWYJv4Nc5p18RdntSvJd9xbR4UE4TV1ntB", "fee": 7500000, "feeAssetId": null, "timestamp": 1672306705303, "version": 2, "chainId": 84, "sender": "3MtZLxTgC6rE5h4iq9mc51D1dEwXHZroWWj", "senderPublicKey": "9LXeFs1PpNBy1oVD8feMHJTasBVFs5sYfTiLmjMrgcwX", "proofs": [ "JiXqbH81yCQZRrEChVxRwnDqEq6bDG1pBfJ6dtc3AV1DPcSspuRnCCFjJ3n97vLb2Nk8eWC6qBFZ6saqpBzTadW" ], "script": "base64:BgJ6CAISABIAEgASABIDCgEBEgMKAQESDgoMAQEBAQEBAQEBAQEBEhQKEgEBAQEBAQEICAgIAQEBAQEBARIFCgMBAQESBgoEAQEBCBIAEgMKAQESBAoCAQESAwoBCBIAEgASAwoBCBIDCgEBEgASABIDCgEIEgASBAoCCAjDAQAJa19vcmFfa2V5AglrX29yYV9rZXkAD2tfb3JhX2Jsb2NrX2tleQIPa19vcmFfYmxvY2tfa2V5AA5rX29yYV9vcGVuX2tleQIOa19vcmFfb3Blbl9rZXkABWtfb3JhAgVrX29yYQAJa19iYWxhbmNlAglrX2JhbGFuY2UACmtfc2VxdWVuY2UCCmtfc2VxdWVuY2UADmtfcG9zaXRpb25TaXplAg5rX3Bvc2l0aW9uU2l6ZQAQa19wb3NpdGlvbk1hcmdpbgIQa19wb3NpdGlvbk1hcmdpbgAWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAIWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAAua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgISa19wb3NpdGlvbkZyYWN0aW9uABJrX3Bvc2l0aW9uU2VxdWVuY2UCEmtfcG9zaXRpb25TZXF1ZW5jZQAPa19wb3NpdGlvbkFzc2V0Ag9rX3Bvc2l0aW9uQXNzZXQADWtfaW5pdGlhbGl6ZWQCDWtfaW5pdGlhbGl6ZWQACGtfcGF1c2VkAghrX3BhdXNlZAALa19jbG9zZU9ubHkCC2tfY2xvc2VPbmx5AAVrX2ZlZQIFa19mZWUAD2tfZnVuZGluZ1BlcmlvZAIPa19mdW5kaW5nUGVyaW9kABFrX2luaXRNYXJnaW5SYXRpbwIRa19pbml0TWFyZ2luUmF0aW8AGGtfbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwIFa19tbXIAFWtfbGlxdWlkYXRpb25GZWVSYXRpbwIVa19saXF1aWRhdGlvbkZlZVJhdGlvABlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAhZrX3BhcnRMaXF1aWRhdGlvblJhdGlvAA1rX3NwcmVhZExpbWl0Ag1rX3NwcmVhZExpbWl0ABBrX21heFByaWNlSW1wYWN0AhBrX21heFByaWNlSW1wYWN0ABBrX21heFByaWNlU3ByZWFkAhBrX21heFByaWNlU3ByZWFkABFrX21heE9wZW5Ob3Rpb25hbAIRa19tYXhPcGVuTm90aW9uYWwAFWtfZmVlVG9TdGFrZXJzUGVyY2VudAIVa19mZWVUb1N0YWtlcnNQZXJjZW50ABBrX21heE9yYWNsZURlbGF5AhBrX21heE9yYWNsZURlbGF5AA1rX2xhc3REYXRhU3RyAg1rX2xhc3REYXRhU3RyAA5rX2xhc3RNaW51dGVJZAIOa19sYXN0TWludXRlSWQAHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAh1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQATa190d2FwRGF0YUxhc3RQcmljZQITa190d2FwRGF0YUxhc3RQcmljZQAaa190d2FwRGF0YVByZXZpb3VzTWludXRlSWQCGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkACVrX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhtrX2xhdGVzdExvbmdQcmVtaXVtRnJhY3Rpb24AJmtfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhxrX2xhdGVzdFNob3J0UHJlbWl1bUZyYWN0aW9uABJrX25leHRGdW5kaW5nQmxvY2sCHmtfbmV4dEZ1bmRpbmdCbG9ja01pblRpbWVzdGFtcAARa19sb25nRnVuZGluZ1JhdGUCEWtfbG9uZ0Z1bmRpbmdSYXRlABJrX3Nob3J0RnVuZGluZ1JhdGUCEmtfc2hvcnRGdW5kaW5nUmF0ZQATa19xdW90ZUFzc2V0UmVzZXJ2ZQIIa19xdEFzdFIAEmtfYmFzZUFzc2V0UmVzZXJ2ZQIIa19ic0FzdFIAEmtfcXVvdGVBc3NldFdlaWdodAIIa19xdEFzdFcAEWtfYmFzZUFzc2V0V2VpZ2h0AghrX2JzQXN0VwATa190b3RhbFBvc2l0aW9uU2l6ZQITa190b3RhbFBvc2l0aW9uU2l6ZQAXa190b3RhbExvbmdQb3NpdGlvblNpemUCF2tfdG90YWxMb25nUG9zaXRpb25TaXplABhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUCGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAIWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAATa19vcGVuSW50ZXJlc3RTaG9ydAITa19vcGVuSW50ZXJlc3RTaG9ydAASa19vcGVuSW50ZXJlc3RMb25nAhJrX29wZW5JbnRlcmVzdExvbmcAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwAPa192YXVsdF9hZGRyZXNzAg9rX3ZhdWx0X2FkZHJlc3MAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19xdW90ZV9zdGFraW5nAg9rX3F1b3RlX3N0YWtpbmcAEWtfc3Rha2luZ19hZGRyZXNzAhFrX3N0YWtpbmdfYWRkcmVzcwAPa19taW5lcl9hZGRyZXNzAg9rX21pbmVyX2FkZHJlc3MAEGtfb3JkZXJzX2FkZHJlc3MCEGtfb3JkZXJzX2FkZHJlc3MAEmtfcmVmZXJyYWxfYWRkcmVzcwISa19yZWZlcnJhbF9hZGRyZXNzABRrX2NvbGxhdGVyYWxfYWRkcmVzcwIUa19jb2xsYXRlcmFsX2FkZHJlc3MAEmtfZXhjaGFuZ2VfYWRkcmVzcwISa19leGNoYW5nZV9hZGRyZXNzABVrX25mdF9tYW5hZ2VyX2FkZHJlc3MCFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwAga190cmFkZXJfbWFya2V0X2Fzc2V0X2NvbGxhdGVyYWwCIGtfdHJhZGVyX21hcmtldF9hc3NldF9jb2xsYXRlcmFsAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwITQ29vcmRpbmF0b3Igbm90IHNldAEMYWRtaW5BZGRyZXNzAAkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX2FkbWluX2FkZHJlc3MBDmFkbWluUHVibGljS2V5AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRJrX2FkbWluX3B1YmxpY19rZXkBCnF1b3RlQXNzZXQACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFDWtfcXVvdGVfYXNzZXQBEXF1b3RlQXNzZXRTdGFraW5nAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfcXVvdGVfc3Rha2luZwIbUXVvdGUgYXNzZXQgc3Rha2luZyBub3Qgc2V0AQ5zdGFraW5nQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRFrX3N0YWtpbmdfYWRkcmVzcwIPU3Rha2luZyBub3Qgc2V0AQx2YXVsdEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa192YXVsdF9hZGRyZXNzAg1WYXVsdCBub3Qgc2V0AQxtaW5lckFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19taW5lcl9hZGRyZXNzAg1NaW5lciBub3Qgc2V0AQ1vcmRlcnNBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEGtfb3JkZXJzX2FkZHJlc3MCDk9yZGVycyBub3Qgc2V0AQ9yZWZlcnJhbEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUSa19yZWZlcnJhbF9hZGRyZXNzAhBSZWZlcnJhbCBub3Qgc2V0ARFuZnRNYW5hZ2VyQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRVrX25mdF9tYW5hZ2VyX2FkZHJlc3MCE05GVCBNYW5hZ2VyIG5vdCBzZXQBEWNvbGxhdGVyYWxBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFFGtfY29sbGF0ZXJhbF9hZGRyZXNzAhpDb2xsYXRlcmFsIE1hbmFnZXIgbm90IHNldAELc3dhcEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFEmtfZXhjaGFuZ2VfYWRkcmVzcwIPTm8gc3dhcCBhZGRyZXNzAhRJbnZhbGlkIHN3YXAgYWRkcmVzcwARa193aGl0ZWxpc3RfYXNzZXQCEWtfd2hpdGVsaXN0X2Fzc2V0ARBpc1doaXRlbGlzdEFzc2V0AQhfYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERY29sbGF0ZXJhbEFkZHJlc3MACQEOdG9Db21wb3NpdGVLZXkCBRFrX3doaXRlbGlzdF9hc3NldAUIX2Fzc2V0SWQHAA1rX3Rva2VuX3BhcmFtAg1rX3Rva2VuX3BhcmFtAAxrX3Rva2VuX3R5cGUCDGtfdG9rZW5fdHlwZQAYRkVFX1JFRFVDVElPTl9UT0tFTl9UWVBFAg1mZWVfcmVkdWN0aW9uAAhESVJfTE9ORwABAAlESVJfU0hPUlQAAgANVFdBUF9JTlRFUlZBTAAPAA9PUkFDTEVfSU5URVJWQUwADwAHU0VDT05EUwDoBwAPREVDSU1BTF9OVU1CRVJTAAYADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCAAoACgAKAAoACgAKAAdPTkVfREFZCQBoAgCAowUFDERFQ0lNQUxfVU5JVAAIQUxMX0ZFRVMAZAAPUE5MX09QVElPTl9TUE9UAAEAEVBOTF9PUFRJT05fT1JBQ0xFAAIBAXMBAl94CQCsAgIJAKQDAQUCX3gCASwBBGRpdmQCAl94Al95CQBuBAUCX3gFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQRtdWxkAgJfeAJfeQkAbgQFAl94BQJfeQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEFc3FydGQBAl94CQEEc3FydAQFAl94BQ9ERUNJTUFMX05VTUJFUlMFD0RFQ0lNQUxfTlVNQkVSUwUISEFMRkVWRU4BBHBvd2QCAl94Al95CQBsBgUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUCX3kFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEFYmRpdmQCAl94Al95CQC9AgQFAl94CQC2AgEFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQVibXVsZAICX3gCX3kJAL0CBAUCX3gFAl95CQC2AgEFDERFQ0lNQUxfVU5JVAUISEFMRkVWRU4BBmJzcXJ0ZAECX3gJAQpzcXJ0QmlnSW50BAUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEFYnBvd2QCAl94Al95CQB2BgUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUCX3kFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEDYWJzAQJfeAMJAGYCBQJfeAAABQJfeAkBAS0BBQJfeAEEdm1heAICX3gCX3kDCQBnAgUCX3gFAl95BQJfeAUCX3kBCWxpc3RUb1N0cgEFX2xpc3QKAQVfam9pbgILYWNjdW11bGF0b3IDdmFsCQCsAgIJAKwCAgULYWNjdW11bGF0b3IFA3ZhbAIBLAQKbmV3TGlzdFN0cgoAAiRsBQVfbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFX2pvaW4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQLbmV3TGlzdFN0clUJALMCAgUKbmV3TGlzdFN0cgABBAtuZXdMaXN0U3RyUgMJAAACCQCvAgIFC25ld0xpc3RTdHJVAAECASwJALACAgULbmV3TGlzdFN0clUAAQULbmV3TGlzdFN0clUFC25ld0xpc3RTdHJSAQlzdHJUb0xpc3QBBF9zdHIJALUJAgUEX3N0cgIBLAELcHVzaFRvUXVldWUDBV9saXN0CF9tYXhTaXplBl92YWx1ZQMJAGYCCQCQAwEFBV9saXN0BQhfbWF4U2l6ZQkAzQgCCQDRCAIFBV9saXN0AAAFBl92YWx1ZQkAzQgCBQVfbGlzdAUGX3ZhbHVlAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBBWludE9yAgFrA2RlZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrBQNkZWYBBHN0ckECCF9hZGRyZXNzBF9rZXkEA3ZhbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCF9hZGRyZXNzBQRfa2V5CQCsAgICEU5vIHZhbHVlIGZvciBrZXkgBQRfa2V5BQN2YWwBBGludEECCF9hZGRyZXNzBF9rZXkEA3ZhbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCF9hZGRyZXNzBQRfa2V5CQCsAgICEU5vIHZhbHVlIGZvciBrZXkgBQRfa2V5BQN2YWwBCGNiYWxhbmNlAAkBA2ludAEFCWtfYmFsYW5jZQEDZmVlAAkBA2ludAEFBWtfZmVlAQ9pbml0TWFyZ2luUmF0aW8ACQEDaW50AQURa19pbml0TWFyZ2luUmF0aW8BBnF0QXN0UgAJAQNpbnQBBRNrX3F1b3RlQXNzZXRSZXNlcnZlAQZic0FzdFIACQEDaW50AQUSa19iYXNlQXNzZXRSZXNlcnZlAQZxdEFzdFcACQEFaW50T3ICBRJrX3F1b3RlQXNzZXRXZWlnaHQFDERFQ0lNQUxfVU5JVAEGYnNBc3RXAAkBBWludE9yAgURa19iYXNlQXNzZXRXZWlnaHQFDERFQ0lNQUxfVU5JVAERdG90YWxQb3NpdGlvblNpemUACQEDaW50AQUTa190b3RhbFBvc2l0aW9uU2l6ZQEUb3BlbkludGVyZXN0Tm90aW9uYWwACQEDaW50AQUWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAERb3BlbkludGVyZXN0U2hvcnQACQEDaW50AQUTa19vcGVuSW50ZXJlc3RTaG9ydAEQb3BlbkludGVyZXN0TG9uZwAJAQNpbnQBBRJrX29wZW5JbnRlcmVzdExvbmcBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAACQEDaW50AQUSa19uZXh0RnVuZGluZ0Jsb2NrARBmdW5kaW5nUGVyaW9kUmF3AAkBA2ludAEFD2tfZnVuZGluZ1BlcmlvZAEUZnVuZGluZ1BlcmlvZERlY2ltYWwACQBoAgkBEGZ1bmRpbmdQZXJpb2RSYXcABQxERUNJTUFMX1VOSVQBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUHU0VDT05EUwEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAJAQNpbnQBBRhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8BE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEDaW50AQUVa19saXF1aWRhdGlvbkZlZVJhdGlvARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAJAQNpbnQBBRlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAQtzcHJlYWRMaW1pdAAJAQNpbnQBBQ1rX3NwcmVhZExpbWl0AQ5tYXhQcmljZUltcGFjdAAJAQNpbnQBBRBrX21heFByaWNlSW1wYWN0AQ5tYXhQcmljZVNwcmVhZAAJAQNpbnQBBRBrX21heFByaWNlU3ByZWFkAQ9tYXhPcGVuTm90aW9uYWwACQEDaW50AQURa19tYXhPcGVuTm90aW9uYWwBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAkBA2ludAEFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BJGxhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJAQNpbnQBBSZrX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJAQNpbnQBBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJAQNpbnQBBRdrX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQEMbGFzdFNlcXVlbmNlAAkBBWludE9yAgUKa19zZXF1ZW5jZQAAARNmZWVUb1N0YWtlcnNQZXJjZW50AAkBA2ludAEFFWtfZmVlVG9TdGFrZXJzUGVyY2VudAEObWF4T3JhY2xlRGVsYXkACQEDaW50AQUQa19tYXhPcmFjbGVEZWxheQEPZ2V0QWN0dWFsQ2FsbGVyAQFpCQELdmFsdWVPckVsc2UCCQCdCAIJAQ1vcmRlcnNBZGRyZXNzAAIIa19zZW5kZXIJAKUIAQgFAWkGY2FsbGVyARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwxfbWFyZ2luUmF0aW8QX2Jhc2VNYXJnaW5SYXRpbxRfbGFyZ2VyVGhhbk9yRXF1YWxUbwQUcmVtYWluaW5nTWFyZ2luUmF0aW8JAGUCBQxfbWFyZ2luUmF0aW8FEF9iYXNlTWFyZ2luUmF0aW8DAwUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGYCAAAFFHJlbWFpbmluZ01hcmdpblJhdGlvBwkAAgECDkludmFsaWQgbWFyZ2luAwMJAQEhAQUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGcCBRRyZW1haW5pbmdNYXJnaW5SYXRpbwAABwkAAgECDkludmFsaWQgbWFyZ2luBgEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgENX3Bvc2l0aW9uU2l6ZQMJAAACBQ1fcG9zaXRpb25TaXplAAAJAAIBAixTaG91bGQgbm90IGJlIGNhbGxlZCB3aXRoIF9wb3NpdGlvblNpemUgPT0gMAMJAGYCBQ1fcG9zaXRpb25TaXplAAAJASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAQtnZXRQb3NpdGlvbgEHX3RyYWRlcgQPcG9zaXRpb25TaXplT3B0CQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQdfdHJhZGVyBAckbWF0Y2gwBQ9wb3NpdGlvblNpemVPcHQDCQABAgUHJG1hdGNoMAIDSW50BAxwb3NpdGlvblNpemUFByRtYXRjaDAJAJYKBAUMcG9zaXRpb25TaXplCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRBrX3Bvc2l0aW9uTWFyZ2luBQdfdHJhZGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQdfdHJhZGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQdfdHJhZGVyCQCWCgQAAAAAAAAAAAEQZ2V0UG9zaXRpb25Bc3NldAEHX3RyYWRlcgQQcG9zaXRpb25Bc3NldE9wdAkAnQgCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBQ9rX3Bvc2l0aW9uQXNzZXQFB190cmFkZXIEByRtYXRjaDAFEHBvc2l0aW9uQXNzZXRPcHQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBA1wb3NpdGlvbkFzc2V0BQckbWF0Y2gwBQ1wb3NpdGlvbkFzc2V0CQDYBAEJAQpxdW90ZUFzc2V0AAETcmVxdWlyZU9wZW5Qb3NpdGlvbgEHX3RyYWRlcgMJAAACCAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgJfMQAACQACAQIQTm8gb3BlbiBwb3NpdGlvbgYBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwEGcGF1c2VkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQhrX3BhdXNlZAcBCWNsb3NlT25seQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwULa19jbG9zZU9ubHkHAQ11cGRhdGVSZXNlcnZlAwZfaXNBZGQRX3F1b3RlQXNzZXRBbW91bnQQX2Jhc2VBc3NldEFtb3VudAMFBl9pc0FkZAQHbmV3QmFzZQkAZQIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50AwkAZwIAAAUHbmV3QmFzZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBhc3NldCByZXNlcnZlIDw9IDAsIHJldmVydAkAlQoDCQBkAgkBBnF0QXN0UgAFEV9xdW90ZUFzc2V0QW1vdW50BQduZXdCYXNlCQBkAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAQIbmV3UXVvdGUJAGUCCQEGcXRBc3RSAAURX3F1b3RlQXNzZXRBbW91bnQDCQBnAgAABQhuZXdRdW90ZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBxdW90ZSByZXNlcnZlIDw9IDAsIHJldmVydAkAlQoDBQhuZXdRdW90ZQkAZAIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50CQBlAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAENY2FsY0ludmFyaWFudAQHX3F0QXN0UgdfcXRBc3RXB19ic0FzdFIHX2JzQXN0VwQHYnF0QXN0UgkAtgIBBQdfcXRBc3RSBAdicXRBc3RXCQC2AgEFB19xdEFzdFcEB2Jic0FzdFIJALYCAQUHX2JzQXN0UgQHYmJzQXN0VwkAtgIBBQdfYnNBc3RXCQEFYm11bGQCCQEFYm11bGQCBQdicXRBc3RSBQdicXRBc3RXCQEFYm11bGQCBQdiYnNBc3RSBQdiYnNBc3RXAQlzd2FwSW5wdXQCBl9pc0FkZBFfcXVvdGVBc3NldEFtb3VudAQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAEAWsJAQ1jYWxjSW52YXJpYW50BAUHX3F0QXN0UgUHX3F0QXN0VwUHX2JzQXN0UgUHX2JzQXN0VwQWcXVvdGVBc3NldFJlc2VydmVBZnRlcgMFBl9pc0FkZAkAZAIFB19xdEFzdFIFEV9xdW90ZUFzc2V0QW1vdW50CQBlAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQEFWJhc2VBc3NldFJlc2VydmVBZnRlcgkAoAMBCQEFYmRpdmQCBQFrCQC2AgEJAQRtdWxkAgUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUHX3F0QXN0VwQYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEEZGl2ZAIJAQNhYnMBCQBlAgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQdfYnNBc3RSBQdfcXRBc3RXBBVhbW91bnRCYXNlQXNzZXRCb3VnaHQDBQZfaXNBZGQFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwkBAS0BBRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEDSR0MDE2ODA1MTY5NjgJAQ11cGRhdGVSZXNlcnZlAwUGX2lzQWRkBRFfcXVvdGVBc3NldEFtb3VudAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBBdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE2ODA1MTY5NjgCXzEEFmJhc2VBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxNjgwNTE2OTY4Al8yBBd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQgFDSR0MDE2ODA1MTY5NjgCXzMEC3ByaWNlQmVmb3JlCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXBAttYXJrZXRQcmljZQkBBGRpdmQCBRFfcXVvdGVBc3NldEFtb3VudAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBAlwcmljZURpZmYJAQNhYnMBCQBlAgULcHJpY2VCZWZvcmUFC21hcmtldFByaWNlBAtwcmljZUltcGFjdAkAZQIFDERFQ0lNQUxfVU5JVAkBBGRpdmQCBQtwcmljZUJlZm9yZQkAZAIFC3ByaWNlQmVmb3JlBQlwcmljZURpZmYEE21heFByaWNlSW1wYWN0VmFsdWUJAQ5tYXhQcmljZUltcGFjdAADCQBmAgULcHJpY2VJbXBhY3QFE21heFByaWNlSW1wYWN0VmFsdWUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDVByaWNlIGltcGFjdCAJAKQDAQULcHJpY2VJbXBhY3QCFCA+IG1heCBwcmljZSBpbXBhY3QgCQCkAwEFE21heFByaWNlSW1wYWN0VmFsdWUCFSBiZWZvcmUgcXVvdGUgYXNzZXQ6IAkApAMBBQdfcXRBc3RSAhQgYmVmb3JlIGJhc2UgYXNzZXQ6IAkApAMBBQdfYnNBc3RSAiEgcXVvdGUgYXNzZXQgYW1vdW50IHRvIGV4Y2hhbmdlOiAJAKQDAQURX3F1b3RlQXNzZXRBbW91bnQCDyBwcmljZSBiZWZvcmU6IAkApAMBBQtwcmljZUJlZm9yZQIOIG1hcmtldFByaWNlOiAJAKQDAQULbWFya2V0UHJpY2UJAJYKBAUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEEF9vbGRQb3NpdGlvblNpemUSX29sZFBvc2l0aW9uTWFyZ2luJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24MX21hcmdpbkRlbHRhBA5mdW5kaW5nUGF5bWVudAMJAQIhPQIFEF9vbGRQb3NpdGlvblNpemUAAAQgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUQX29sZFBvc2l0aW9uU2l6ZQkBBG11bGQCCQBlAgUgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FEF9vbGRQb3NpdGlvblNpemUAAAQMc2lnbmVkTWFyZ2luCQBkAgkAZQIFDF9tYXJnaW5EZWx0YQUOZnVuZGluZ1BheW1lbnQFEl9vbGRQb3NpdGlvbk1hcmdpbgQNJHQwMTg0NTUxODU4MgMJAGYCAAAFDHNpZ25lZE1hcmdpbgkAlAoCAAAJAQNhYnMBBQxzaWduZWRNYXJnaW4JAJQKAgkBA2FicwEFDHNpZ25lZE1hcmdpbgAABAxyZW1haW5NYXJnaW4IBQ0kdDAxODQ1NTE4NTgyAl8xBAdiYWREZWJ0CAUNJHQwMTg0NTUxODU4MgJfMgkAlQoDBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFDmZ1bmRpbmdQYXltZW50ARZzd2FwT3V0cHV0V2l0aFJlc2VydmVzBwZfaXNBZGQQX2Jhc2VBc3NldEFtb3VudBRfY2hlY2tNYXhQcmljZUltcGFjdBJfcXVvdGVBc3NldFJlc2VydmURX3F1b3RlQXNzZXRXZWlnaHQRX2Jhc2VBc3NldFJlc2VydmUQX2Jhc2VBc3NldFdlaWdodAQLcHJpY2VCZWZvcmUJAQRkaXZkAgkBBG11bGQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0CQEEbXVsZAIFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0V2VpZ2h0AwkAAAIFEF9iYXNlQXNzZXRBbW91bnQAAAkAAgECGUludmFsaWQgYmFzZSBhc3NldCBhbW91bnQEAWsJAQ1jYWxjSW52YXJpYW50BAUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfcXVvdGVBc3NldFdlaWdodAURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRXZWlnaHQEGGJhc2VBc3NldFBvb2xBbW91bnRBZnRlcgMFBl9pc0FkZAkAZAIFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0QW1vdW50CQBlAgURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRBbW91bnQED3F1b3RlQXNzZXRBZnRlcgkAoAMBCQEFYmRpdmQCBQFrCQC2AgEJAQRtdWxkAgUYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyBRBfYmFzZUFzc2V0V2VpZ2h0BA5xdW90ZUFzc2V0U29sZAkBA2FicwEJAGUCBQ9xdW90ZUFzc2V0QWZ0ZXIJAQRtdWxkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfcXVvdGVBc3NldFdlaWdodAQTbWF4UHJpY2VJbXBhY3RWYWx1ZQkBDm1heFByaWNlSW1wYWN0AAQNJHQwMTk3NzAxOTkzMQkBDXVwZGF0ZVJlc2VydmUDCQEBIQEFBl9pc0FkZAUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTk3NzAxOTkzMQJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE5NzcwMTk5MzECXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTk3NzAxOTkzMQJfMwQLbWFya2V0UHJpY2UJAQRkaXZkAgUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQECXByaWNlRGlmZgkBA2FicwEJAGUCBQtwcmljZUJlZm9yZQULbWFya2V0UHJpY2UEC3ByaWNlSW1wYWN0CQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIFC3ByaWNlQmVmb3JlCQBkAgULcHJpY2VCZWZvcmUFCXByaWNlRGlmZgMDCQBmAgULcHJpY2VJbXBhY3QFE21heFByaWNlSW1wYWN0VmFsdWUFFF9jaGVja01heFByaWNlSW1wYWN0BwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINUHJpY2UgaW1wYWN0IAkApAMBBQtwcmljZUltcGFjdAIUID4gbWF4IHByaWNlIGltcGFjdCAJAKQDAQUTbWF4UHJpY2VJbXBhY3RWYWx1ZQIVIGJlZm9yZSBxdW90ZSBhc3NldDogCQCkAwEFEl9xdW90ZUFzc2V0UmVzZXJ2ZQIUIGJlZm9yZSBiYXNlIGFzc2V0OiAJAKQDAQURX2Jhc2VBc3NldFJlc2VydmUCICBiYXNlIGFzc2V0IGFtb3VudCB0byBleGNoYW5nZTogCQCkAwEFEF9iYXNlQXNzZXRBbW91bnQCDyBwcmljZSBiZWZvcmU6IAkApAMBBQtwcmljZUJlZm9yZQIPIG1hcmtldCBwcmljZTogCQCkAwEFC21hcmtldFByaWNlCQCZCgcFDnF1b3RlQXNzZXRTb2xkBRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEJAGUCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMFBl9pc0FkZAkBA2FicwEFEF9iYXNlQXNzZXRBbW91bnQAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAQEhAQUGX2lzQWRkCQEDYWJzAQUQX2Jhc2VBc3NldEFtb3VudAAABQtwcmljZUltcGFjdAEKc3dhcE91dHB1dAMGX2lzQWRkEF9iYXNlQXNzZXRBbW91bnQUX2NoZWNrTWF4UHJpY2VJbXBhY3QJARZzd2FwT3V0cHV0V2l0aFJlc2VydmVzBwUGX2lzQWRkBRBfYmFzZUFzc2V0QW1vdW50BRRfY2hlY2tNYXhQcmljZUltcGFjdAkBBnF0QXN0UgAJAQZxdEFzdFcACQEGYnNBc3RSAAkBBmJzQXN0VwABDmdldE9yYWNsZVByaWNlAAQGb3JhY2xlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUFa19vcmECAAQIcHJpY2VLZXkJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFCWtfb3JhX2tleQQJbGFzdFZhbHVlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUGb3JhY2xlBQhwcmljZUtleQkArAICCQCsAgIJAKwCAgIiQ2FuIG5vdCBnZXQgb3JhY2xlIHByaWNlLiBPcmFjbGU6IAkApQgBBQZvcmFjbGUCBiBrZXk6IAUIcHJpY2VLZXkECGJsb2NrS2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFD2tfb3JhX2Jsb2NrX2tleQIAAwkBAiE9AgUIYmxvY2tLZXkCAAQMY3VycmVudEJsb2NrCAUJbGFzdEJsb2NrBmhlaWdodAQPbGFzdE9yYWNsZUJsb2NrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUGb3JhY2xlBQhibG9ja0tleQkArAICCQCsAgIJAKwCAgIiQ2FuIG5vdCBnZXQgb3JhY2xlIGJsb2NrLiBPcmFjbGU6IAkApQgBBQZvcmFjbGUCBiBrZXk6IAUIYmxvY2tLZXkDCQBmAgkAZQIFDGN1cnJlbnRCbG9jawUPbGFzdE9yYWNsZUJsb2NrCQEObWF4T3JhY2xlRGVsYXkACQACAQkArAICCQCsAgIJAKwCAgImT3JhY2xlIHN0YWxlIGRhdGEuIExhc3Qgb3JhY2xlIGJsb2NrOiAJAKQDAQUPbGFzdE9yYWNsZUJsb2NrAhAgY3VycmVudCBibG9jazogCQCkAwEFDGN1cnJlbnRCbG9jawUJbGFzdFZhbHVlBQlsYXN0VmFsdWUBDmlzTWFya2V0Q2xvc2VkAAQGb3JhY2xlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUFa19vcmECAAQHb3BlbktleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ5rX29yYV9vcGVuX2tleQIAAwkBAiE9AgUHb3BlbktleQIABAZpc09wZW4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmwgCBQZvcmFjbGUFB29wZW5LZXkJAKwCAgkArAICCQCsAgICK0NhbiBub3QgZ2V0IG9yYWNsZSBpcyBvcGVuL2Nsb3NlZC4gT3JhY2xlOiAJAKUIAQUGb3JhY2xlAgYga2V5OiAFB29wZW5LZXkJAQEhAQUGaXNPcGVuBwEMYWJzUHJpY2VEaWZmBQxfb3JhY2xlUHJpY2USX3F1b3RlQXNzZXRSZXNlcnZlEV9iYXNlQXNzZXRSZXNlcnZlB19xdEFzdFcHX2JzQXN0VwQKcHJpY2VBZnRlcgkBBGRpdmQCCQEEbXVsZAIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQUHX3F0QXN0VwkBBG11bGQCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUHX2JzQXN0VwQMYXZlcmFnZVByaWNlCQEEZGl2ZAIJAGQCBQxfb3JhY2xlUHJpY2UFCnByaWNlQWZ0ZXIJAGgCAAIFDERFQ0lNQUxfVU5JVAQMYWJzUHJpY2VEaWZmCQEEZGl2ZAIJAQNhYnMBCQBlAgUMX29yYWNsZVByaWNlBQpwcmljZUFmdGVyBQxhdmVyYWdlUHJpY2UFDGFic1ByaWNlRGlmZgEZcmVxdWlyZU5vdE92ZXJTcHJlYWRMaW1pdAISX3F1b3RlQXNzZXRSZXNlcnZlEV9iYXNlQXNzZXRSZXNlcnZlBAtvcmFjbGVQcmljZQkBDmdldE9yYWNsZVByaWNlAAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcABBJhYnNQcmljZURpZmZCZWZvcmUJAQxhYnNQcmljZURpZmYFBQtvcmFjbGVQcmljZQkBBnF0QXN0UgAJAQZic0FzdFIABQdfcXRBc3RXBQdfYnNBc3RXBBFhYnNQcmljZURpZmZBZnRlcgkBDGFic1ByaWNlRGlmZgUFC29yYWNsZVByaWNlBRJfcXVvdGVBc3NldFJlc2VydmUFEV9iYXNlQXNzZXRSZXNlcnZlBQdfcXRBc3RXBQdfYnNBc3RXAwMJAGYCBRFhYnNQcmljZURpZmZBZnRlcgkBDm1heFByaWNlU3ByZWFkAAkAZgIFEWFic1ByaWNlRGlmZkFmdGVyBRJhYnNQcmljZURpZmZCZWZvcmUHCQACAQkArAICCQCsAgIJAKwCAgINUHJpY2Ugc3ByZWFkIAkApAMBBRFhYnNQcmljZURpZmZBZnRlcgIUID4gbWF4IHByaWNlIHNwcmVhZCAJAKQDAQkBDm1heFByaWNlU3ByZWFkAAYBHXJlcXVpcmVOb3RPdmVyTWF4T3Blbk5vdGlvbmFsAhFfbG9uZ09wZW5Ob3Rpb25hbBJfc2hvcnRPcGVuTm90aW9uYWwEEF9tYXhPcGVuTm90aW9uYWwJAQ9tYXhPcGVuTm90aW9uYWwAAwkAZgIFEV9sb25nT3Blbk5vdGlvbmFsBRBfbWF4T3Blbk5vdGlvbmFsCQACAQkArAICCQCsAgIJAKwCAgITTG9uZyBvcGVuIG5vdGlvbmFsIAkApAMBBRFfbG9uZ09wZW5Ob3Rpb25hbAIVID4gbWF4IG9wZW4gbm90aW9uYWwgCQCkAwEFEF9tYXhPcGVuTm90aW9uYWwDCQBmAgUSX3Nob3J0T3Blbk5vdGlvbmFsBRBfbWF4T3Blbk5vdGlvbmFsCQACAQkArAICCQCsAgIJAKwCAgIUU2hvcnQgb3BlbiBub3Rpb25hbCAJAKQDAQUSX3Nob3J0T3Blbk5vdGlvbmFsAhUgPiBtYXggb3BlbiBub3Rpb25hbCAJAKQDAQUQX21heE9wZW5Ob3Rpb25hbAYBDGdldFNwb3RQcmljZQAEEl9xdW90ZUFzc2V0UmVzZXJ2ZQkBBnF0QXN0UgAEEV9iYXNlQXNzZXRSZXNlcnZlCQEGYnNBc3RSAAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcACQEEZGl2ZAIJAQRtdWxkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBQdfcXRBc3RXCQEEbXVsZAIFEV9iYXNlQXNzZXRSZXNlcnZlBQdfYnNBc3RXARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQLb3JhY2xlUHJpY2UJAQ5nZXRPcmFjbGVQcmljZQAEDGN1cnJlbnRQcmljZQkBDGdldFNwb3RQcmljZQAJAGYCCQEEZGl2ZAIJAQNhYnMBCQBlAgULb3JhY2xlUHJpY2UFDGN1cnJlbnRQcmljZQULb3JhY2xlUHJpY2UJAQtzcHJlYWRMaW1pdAABH2dldFBvc2l0aW9uQWRqdXN0ZWRPcGVuTm90aW9uYWwGDV9wb3NpdGlvblNpemUHX29wdGlvbhJfcXVvdGVBc3NldFJlc2VydmURX3F1b3RlQXNzZXRXZWlnaHQRX2Jhc2VBc3NldFJlc2VydmUQX2Jhc2VBc3NldFdlaWdodAQPcG9zaXRpb25TaXplQWJzCQEDYWJzAQUNX3Bvc2l0aW9uU2l6ZQQHaXNTaG9ydAkAZgIAAAUNX3Bvc2l0aW9uU2l6ZQQQcG9zaXRpb25Ob3Rpb25hbAMJAAACBQdfb3B0aW9uBQ9QTkxfT1BUSU9OX1NQT1QEDSR0MDI0ODgyMjUxMDIJARZzd2FwT3V0cHV0V2l0aFJlc2VydmVzBwkBASEBBQdpc1Nob3J0BQ9wb3NpdGlvblNpemVBYnMHBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAQTb3V0UG9zaXRpb25Ob3Rpb25hbAgFDSR0MDI0ODgyMjUxMDICXzEEAngxCAUNJHQwMjQ4ODIyNTEwMgJfMgQCeDIIBQ0kdDAyNDg4MjI1MTAyAl8zBAJ4MwgFDSR0MDI0ODgyMjUxMDICXzQFE291dFBvc2l0aW9uTm90aW9uYWwJAQRtdWxkAgUPcG9zaXRpb25TaXplQWJzCQEOZ2V0T3JhY2xlUHJpY2UABRBwb3NpdGlvbk5vdGlvbmFsAStnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubEJ5VmFsdWVzBw1fcG9zaXRpb25TaXplFV9wb3NpdGlvbk9wZW5Ob3Rpb25hbBJfcXVvdGVBc3NldFJlc2VydmURX3F1b3RlQXNzZXRXZWlnaHQRX2Jhc2VBc3NldFJlc2VydmUQX2Jhc2VBc3NldFdlaWdodAdfb3B0aW9uAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAAgECFUludmFsaWQgcG9zaXRpb24gc2l6ZQQHaXNTaG9ydAkAZgIAAAUNX3Bvc2l0aW9uU2l6ZQQQcG9zaXRpb25Ob3Rpb25hbAkBH2dldFBvc2l0aW9uQWRqdXN0ZWRPcGVuTm90aW9uYWwGBQ1fcG9zaXRpb25TaXplBQdfb3B0aW9uBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAQNdW5yZWFsaXplZFBubAMFB2lzU2hvcnQJAGUCBRVfcG9zaXRpb25PcGVuTm90aW9uYWwFEHBvc2l0aW9uTm90aW9uYWwJAGUCBRBwb3NpdGlvbk5vdGlvbmFsBRVfcG9zaXRpb25PcGVuTm90aW9uYWwJAJQKAgUQcG9zaXRpb25Ob3Rpb25hbAUNdW5yZWFsaXplZFBubAEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCB190cmFkZXIHX29wdGlvbgQNJHQwMjY1MjMyNjY1MQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMjY1MjMyNjY1MQJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAyNjUyMzI2NjUxAl8yBBRwb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDI2NTIzMjY2NTECXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMjY1MjMyNjY1MQJfNAkBK2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sQnlWYWx1ZXMHBQxwb3NpdGlvblNpemUFFHBvc2l0aW9uT3Blbk5vdGlvbmFsCQEGcXRBc3RSAAkBBnF0QXN0VwAJAQZic0FzdFIACQEGYnNBc3RXAAUHX29wdGlvbgEPY2FsY01hcmdpblJhdGlvAw1fcmVtYWluTWFyZ2luCF9iYWREZWJ0EV9wb3NpdGlvbk5vdGlvbmFsCQEEZGl2ZAIJAGUCBQ1fcmVtYWluTWFyZ2luBQhfYmFkRGVidAURX3Bvc2l0aW9uTm90aW9uYWwBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CB190cmFkZXIHX29wdGlvbgQNJHQwMjcxNjQyNzI3NQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMjcxNjQyNzI3NQJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAyNzE2NDI3Mjc1Al8yBANwb24IBQ0kdDAyNzE2NDI3Mjc1Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDI3MTY0MjcyNzUCXzQEDSR0MDI3MjgxMjczNzQJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFB19vcHRpb24EEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDAyNzI4MTI3Mzc0Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwMjcyODEyNzM3NAJfMgQNJHQwMjczNzkyNzU0NQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMjczNzkyNzU0NQJfMQQHYmFkRGVidAgFDSR0MDI3Mzc5Mjc1NDUCXzIJAQ9jYWxjTWFyZ2luUmF0aW8DBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFEHBvc2l0aW9uTm90aW9uYWwBDmdldE1hcmdpblJhdGlvAQdfdHJhZGVyCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAEbZ2V0UGFydGlhbExpcXVpZGF0aW9uQW1vdW50AgdfdHJhZGVyDV9wb3NpdGlvblNpemUEDG1heGltdW1SYXRpbwkBBHZtYXgCCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ACQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIJARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAQYbWF4RXhjaGFuZ2VkUG9zaXRpb25TaXplCQEEbXVsZAIJAQNhYnMBBQ1fcG9zaXRpb25TaXplBQxtYXhpbXVtUmF0aW8ECnN3YXBSZXN1bHQJAQpzd2FwT3V0cHV0AwkAZgIFDV9wb3NpdGlvblNpemUAAAUYbWF4RXhjaGFuZ2VkUG9zaXRpb25TaXplBwQcbWF4RXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFCnN3YXBSZXN1bHQCXzEEC3ByaWNlSW1wYWN0CAUKc3dhcFJlc3VsdAJfNwMJAGYCCQEObWF4UHJpY2VJbXBhY3QABQtwcmljZUltcGFjdAUcbWF4RXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEEbXVsZAIJAQNhYnMBBQ1fcG9zaXRpb25TaXplCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ABBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAkBCnN3YXBPdXRwdXQDCQBmAgUNX3Bvc2l0aW9uU2l6ZQAABRVleGNoYW5nZWRQb3NpdGlvblNpemUHAl8xBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50ARVpbnRlcm5hbENsb3NlUG9zaXRpb24CB190cmFkZXIUX2NoZWNrTWF4UHJpY2VJbXBhY3QEDSR0MDI4Nzg1Mjg5MTMJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDI4Nzg1Mjg5MTMCXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwMjg3ODUyODkxMwJfMgQUcG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAyODc4NTI4OTEzAl8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDI4Nzg1Mjg5MTMCXzQEDXVucmVhbGl6ZWRQbmwICQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QCXzIEDSR0MDI5MDA4MjkxNzYJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDI5MDA4MjkxNzYCXzEEB2JhZERlYnQIBQ0kdDAyOTAwODI5MTc2Al8yBBVleGNoYW5nZWRQb3NpdGlvblNpemUJAQEtAQUMcG9zaXRpb25TaXplBAtyZWFsaXplZFBubAUNdW5yZWFsaXplZFBubAQNbWFyZ2luVG9WYXVsdAkBAS0BBQxyZW1haW5NYXJnaW4EDSR0MDI5MzAzMjk1NzcJAQpzd2FwT3V0cHV0AwkAZgIFDHBvc2l0aW9uU2l6ZQAACQEDYWJzAQUMcG9zaXRpb25TaXplBRRfY2hlY2tNYXhQcmljZUltcGFjdAQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDI5MzAzMjk1NzcCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyOTMwMzI5NTc3Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyOTMwMzI5NTc3Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwMjkzMDMyOTU3NwJfNAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDAyOTMwMzI5NTc3Al81BA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDAyOTMwMzI5NTc3Al82BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUUcG9zaXRpb25PcGVuTm90aW9uYWwJAJ8KDQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplBQdiYWREZWJ0BQtyZWFsaXplZFBubAUNbWFyZ2luVG9WYXVsdAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQBlAgkBEG9wZW5JbnRlcmVzdExvbmcAAwkAZgIFDHBvc2l0aW9uU2l6ZQAABRRwb3NpdGlvbk9wZW5Ob3Rpb25hbAAACQBlAgkBEW9wZW5JbnRlcmVzdFNob3J0AAMJAGYCAAAFDHBvc2l0aW9uU2l6ZQUUcG9zaXRpb25PcGVuTm90aW9uYWwAAAEQZ2V0VHdhcFNwb3RQcmljZQAECG1pbnV0ZUlkCQBpAgkAaQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wAOgHADwEDXN0YXJ0TWludXRlSWQJAGUCBQhtaW51dGVJZAUNVFdBUF9JTlRFUlZBTAQHbGlzdFN0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ1rX2xhc3REYXRhU3RyAgAEBGxpc3QJALUJAgUHbGlzdFN0cgIBLAoBCGZpbHRlckZuAgthY2N1bXVsYXRvcgRuZXh0AwkAZwIFDXN0YXJ0TWludXRlSWQJAQ1wYXJzZUludFZhbHVlAQUEbmV4dAkAzQgCBQthY2N1bXVsYXRvcgkBDXBhcnNlSW50VmFsdWUBBQRuZXh0BQthY2N1bXVsYXRvcgQFbGlzdEYKAAIkbAUEbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZmlsdGVyRm4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQIbWF4SW5kZXgDCQBmAgkAkAMBBQVsaXN0RgAACQCWAwEFBWxpc3RGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbGlzdAAABAxsYXN0TWludXRlSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUOa19sYXN0TWludXRlSWQAAAQWZW5kTGFzdEN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUMbGFzdE1pbnV0ZUlkAAAEDGVuZExhc3RQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBQxsYXN0TWludXRlSWQAAAQSbm93Q3VtdWxhdGl2ZVByaWNlCQBkAgUWZW5kTGFzdEN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUMbGFzdE1pbnV0ZUlkBQxlbmRMYXN0UHJpY2UEGHN0YXJ0TGFzdEN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUIbWF4SW5kZXgAAAQOc3RhcnRMYXN0UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFE2tfdHdhcERhdGFMYXN0UHJpY2UCAV8JAKQDAQUIbWF4SW5kZXgAAAQUc3RhcnRDdW11bGF0aXZlUHJpY2UJAGQCBRhzdGFydExhc3RDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUNc3RhcnRNaW51dGVJZAUIbWF4SW5kZXgFDnN0YXJ0TGFzdFByaWNlCQBpAgkAZQIFEm5vd0N1bXVsYXRpdmVQcmljZQUUc3RhcnRDdW11bGF0aXZlUHJpY2UFDVRXQVBfSU5URVJWQUwBE2dldFRlcm1pbmFsQW1tU3RhdGUABA1fcG9zaXRpb25TaXplCQERdG90YWxQb3NpdGlvblNpemUAAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAlAoCCQEGcXRBc3RSAAkBBmJzQXN0UgAECWRpcmVjdGlvbgkAZgIFDV9wb3NpdGlvblNpemUAAAQNJHQwMzE3MDAzMTg3OQkBCnN3YXBPdXRwdXQDBQlkaXJlY3Rpb24JAQNhYnMBBQ1fcG9zaXRpb25TaXplBwQVY3VycmVudE5ldE1hcmtldFZhbHVlCAUNJHQwMzE3MDAzMTg3OQJfMQQZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQgFDSR0MDMxNzAwMzE4NzkCXzIEGHRlcm1pbmFsQmFzZUFzc2V0UmVzZXJ2ZQgFDSR0MDMxNzAwMzE4NzkCXzMJAJQKAgUZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQUYdGVybWluYWxCYXNlQXNzZXRSZXNlcnZlARNnZXRRdW90ZUFzc2V0V2VpZ2h0BBBiYXNlQXNzZXRSZXNlcnZlEXRvdGFsUG9zaXRpb25TaXplEXF1b3RlQXNzZXRSZXNlcnZlC3RhcmdldFByaWNlBAFiCQC2AgEFEGJhc2VBc3NldFJlc2VydmUEAnN6CQC2AgEFEXRvdGFsUG9zaXRpb25TaXplBAFxCQC2AgEFEXF1b3RlQXNzZXRSZXNlcnZlBAFwCQC2AgEFC3RhcmdldFByaWNlBANiczIJAQVicG93ZAIJALcCAgUBYgUCc3oJALYCAQkAaAIAAgUMREVDSU1BTF9VTklUBARxYnMyCQEFYm11bGQCBQFxBQNiczIEA3BzNAkAuQICCQC2AgEABAkBBWJtdWxkAgUBcAUCc3oEA3NxcgkBBmJzcXJ0ZAEJAQVibXVsZAIFBHFiczIJALgCAgUBcQUDcHM0BAJicQkBBWJtdWxkAgUBYgUBcQQCcXMJAQVibXVsZAIFAXEFAnN6BAN0b3AJALcCAgkAtwICCQC+AgEFA3NxcgUCYnEFAnFzBANib3QJALkCAgkAtgIBAAIJAQVibXVsZAIFAXEFAnN6BAZyZXN1bHQJAQViZGl2ZAIFA3RvcAUDYm90CQCgAwEFBnJlc3VsdAEUZ2V0U3luY1Rlcm1pbmFsUHJpY2UDDl90ZXJtaW5hbFByaWNlB19xdEFzdFIHX2JzQXN0UgQNX3Bvc2l0aW9uU2l6ZQkBEXRvdGFsUG9zaXRpb25TaXplAAMJAAACBQ1fcG9zaXRpb25TaXplAAAECW5ld1F0QXN0VwkBBGRpdmQCCQEEbXVsZAIFDl90ZXJtaW5hbFByaWNlBQdfYnNBc3RSBQdfcXRBc3RSCQCVCgMFCW5ld1F0QXN0VwUMREVDSU1BTF9VTklUAAAECWRpcmVjdGlvbgkAZgIFDV9wb3NpdGlvblNpemUAAAQVY3VycmVudE5ldE1hcmtldFZhbHVlCAkBCnN3YXBPdXRwdXQDBQlkaXJlY3Rpb24JAQNhYnMBBQ1fcG9zaXRpb25TaXplBwJfMQQJbmV3UXRBc3RXCQETZ2V0UXVvdGVBc3NldFdlaWdodAQFB19ic0FzdFIFDV9wb3NpdGlvblNpemUFB19xdEFzdFIFDl90ZXJtaW5hbFByaWNlBAluZXdCc0FzdFcFDERFQ0lNQUxfVU5JVAQNbWFyZ2luVG9WYXVsdAgJAStnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubEJ5VmFsdWVzBwUNX3Bvc2l0aW9uU2l6ZQUVY3VycmVudE5ldE1hcmtldFZhbHVlBQdfcXRBc3RSBQluZXdRdEFzdFcFB19ic0FzdFIFCW5ld0JzQXN0VwUPUE5MX09QVElPTl9TUE9UAl8yCQCVCgMFCW5ld1F0QXN0VwUJbmV3QnNBc3RXBQ1tYXJnaW5Ub1ZhdWx0AQpnZXRGdW5kaW5nAAQPdW5kZXJseWluZ1ByaWNlCQEOZ2V0T3JhY2xlUHJpY2UABA1zcG90VHdhcFByaWNlCQEQZ2V0VHdhcFNwb3RQcmljZQAEB3ByZW1pdW0JAGUCBQ1zcG90VHdhcFByaWNlBQ91bmRlcmx5aW5nUHJpY2UDAwMJAAACCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAYJAAACCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAAABgkBDmlzTWFya2V0Q2xvc2VkAAkAlAoCAAAAAAMJAGYCAAAFB3ByZW1pdW0EFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUHcHJlbWl1bQkBFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAUHT05FX0RBWQQTbG9uZ1ByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJARV0b3RhbExvbmdQb3NpdGlvblNpemUACQCUCgIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBRNsb25nUHJlbWl1bUZyYWN0aW9uBBNsb25nUHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUHcHJlbWl1bQkBFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAUHT05FX0RBWQQUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBRNsb25nUHJlbWl1bUZyYWN0aW9uCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQCUCgIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBRNsb25nUHJlbWl1bUZyYWN0aW9uAQ5nZXRBZGp1c3RlZEZlZQILX2FydGlmYWN0SWQQX2Jhc2VGZWVEaXNjb3VudAQKYmFzZUZlZVJhdwkBA2ZlZQAEB2Jhc2VGZWUJAQRtdWxkAgUKYmFzZUZlZVJhdwUQX2Jhc2VGZWVEaXNjb3VudAQNJHQwMzQ5MjczNTQyMgMJAQIhPQIFC19hcnRpZmFjdElkAgAEDGFydGlmYWN0S2luZAkBBHN0ckECCQERbmZ0TWFuYWdlckFkZHJlc3MACQEOdG9Db21wb3NpdGVLZXkCBQxrX3Rva2VuX3R5cGUFC19hcnRpZmFjdElkAwkAAAIFDGFydGlmYWN0S2luZAUYRkVFX1JFRFVDVElPTl9UT0tFTl9UWVBFBAlyZWR1Y3Rpb24JAQRpbnRBAgkBEW5mdE1hbmFnZXJBZGRyZXNzAAkBDnRvQ29tcG9zaXRlS2V5AgUNa190b2tlbl9wYXJhbQULX2FydGlmYWN0SWQEC2FkanVzdGVkRmVlCQEEbXVsZAIFB2Jhc2VGZWUFCXJlZHVjdGlvbgkAlAoCBQthZGp1c3RlZEZlZQYJAAIBAhlJbnZhbGlkIGF0dGFjaGVkIGFydGlmYWN0CQCUCgIFB2Jhc2VGZWUHBAthZGp1c3RlZEZlZQgFDSR0MDM0OTI3MzU0MjICXzEEDGJ1cm5BcnRpZmFjdAgFDSR0MDM0OTI3MzU0MjICXzIJAJQKAgULYWRqdXN0ZWRGZWUFDGJ1cm5BcnRpZmFjdAEXaXNTYW1lQXNzZXRPck5vUG9zaXRpb24CB190cmFkZXIIX2Fzc2V0SWQED29sZFBvc2l0aW9uU2l6ZQgJAQtnZXRQb3NpdGlvbgEFB190cmFkZXICXzEDCQAAAgUPb2xkUG9zaXRpb25TaXplAAAGCQAAAgkBEGdldFBvc2l0aW9uQXNzZXQBBQdfdHJhZGVyBQhfYXNzZXRJZAELaXNTYW1lQXNzZXQCB190cmFkZXIIX2Fzc2V0SWQJAAACCQEQZ2V0UG9zaXRpb25Bc3NldAEFB190cmFkZXIFCF9hc3NldElkAR5nZXRCb3Jyb3dlZEJ5VHJhZGVySW5NYXJrZXRLZXkDBF9hbW0IX2Fzc2V0SWQHX3RyYWRlcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUga190cmFkZXJfbWFya2V0X2Fzc2V0X2NvbGxhdGVyYWwCAV8FBF9hbW0CAV8FCF9hc3NldElkAgFfBQdfdHJhZGVyARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQdfdHJhZGVyBA1wb3NpdGlvbkFzc2V0CQEQZ2V0UG9zaXRpb25Bc3NldAEFB190cmFkZXIDCQAAAgUNcG9zaXRpb25Bc3NldAkA2AQBCQEKcXVvdGVBc3NldAAJAJQKAgAABQ1wb3NpdGlvbkFzc2V0BANrZXkJAR5nZXRCb3Jyb3dlZEJ5VHJhZGVySW5NYXJrZXRLZXkDCQClCAEFBHRoaXMFDXBvc2l0aW9uQXNzZXQFB190cmFkZXIEBmJvcnJvdwkBC3ZhbHVlT3JFbHNlAgkAmggCCQERY29sbGF0ZXJhbEFkZHJlc3MABQNrZXkAAAkAlAoCBQZib3Jyb3cFDXBvc2l0aW9uQXNzZXQBGGdldEZvclRyYWRlcldpdGhBcnRpZmFjdAIHX3RyYWRlcgtfYXJ0aWZhY3RJZAQQZG9HZXRGZWVEaXNjb3VudAkA/AcECQEMbWluZXJBZGRyZXNzAAISY29tcHV0ZUZlZURpc2NvdW50CQDMCAIFB190cmFkZXIFA25pbAUDbmlsAwkAAAIFEGRvR2V0RmVlRGlzY291bnQFEGRvR2V0RmVlRGlzY291bnQEC2ZlZURpc2NvdW50BAckbWF0Y2gwBRBkb0dldEZlZURpc2NvdW50AwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAkAAgECIUludmFsaWQgY29tcHV0ZUZlZURpc2NvdW50IHJlc3VsdAQNJHQwMzY2NTMzNjcyNwkBDmdldEFkanVzdGVkRmVlAgULX2FydGlmYWN0SWQFC2ZlZURpc2NvdW50BAthZGp1c3RlZEZlZQgFDSR0MDM2NjUzMzY3MjcCXzEEDGJ1cm5BcnRpZmFjdAgFDSR0MDM2NjUzMzY3MjcCXzIJAJQKAgULYWRqdXN0ZWRGZWUFDGJ1cm5BcnRpZmFjdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgENZ2V0QXJ0aWZhY3RJZAEBaQQKYXJ0aWZhY3RJZAMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAEJANgEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQCEkludmFsaWQgYXJ0aWZhY3RJZAIABQphcnRpZmFjdElkAQ1kaXN0cmlidXRlRmVlAQpfZmVlQW1vdW50BAxmZWVUb1N0YWtlcnMJAQRtdWxkAgUKX2ZlZUFtb3VudAkBE2ZlZVRvU3Rha2Vyc1BlcmNlbnQABApmZWVUb1ZhdWx0CQBlAgUKX2ZlZUFtb3VudAUMZmVlVG9TdGFrZXJzCQCUCgIFDGZlZVRvU3Rha2VycwUKZmVlVG9WYXVsdAEOdXBkYXRlU2V0dGluZ3MMEF9pbml0TWFyZ2luUmF0aW8EX21tchRfbGlxdWlkYXRpb25GZWVSYXRpbw5fZnVuZGluZ1BlcmlvZARfZmVlDF9zcHJlYWRMaW1pdA9fbWF4UHJpY2VJbXBhY3QYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvD19tYXhQcmljZVNwcmVhZBBfbWF4T3Blbk5vdGlvbmFsFF9mZWVUb1N0YWtlcnNQZXJjZW50D19tYXhPcmFjbGVEZWxheQkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19pbml0TWFyZ2luUmF0aW8FEF9pbml0TWFyZ2luUmF0aW8JAMwIAgkBDEludGVnZXJFbnRyeQIFGGtfbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwUEX21tcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa19saXF1aWRhdGlvbkZlZVJhdGlvBRRfbGlxdWlkYXRpb25GZWVSYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa19mdW5kaW5nUGVyaW9kBQ5fZnVuZGluZ1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFa19mZWUFBF9mZWUJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfc3ByZWFkTGltaXQFDF9zcHJlYWRMaW1pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa19tYXhQcmljZUltcGFjdAUPX21heFByaWNlSW1wYWN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBRhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8JAMwIAgkBDEludGVnZXJFbnRyeQIFEGtfbWF4UHJpY2VTcHJlYWQFD19tYXhQcmljZVNwcmVhZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19tYXhPcGVuTm90aW9uYWwFEF9tYXhPcGVuTm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtfZmVlVG9TdGFrZXJzUGVyY2VudAUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtfbWF4T3JhY2xlRGVsYXkFFF9mZWVUb1N0YWtlcnNQZXJjZW50BQNuaWwBDXVwZGF0ZUZ1bmRpbmcFEV9uZXh0RnVuZGluZ0Jsb2NrJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbiVfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uEF9sb25nRnVuZGluZ1JhdGURX3Nob3J0RnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfbmV4dEZ1bmRpbmdCbG9jawURX25leHRGdW5kaW5nQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFEWtfbG9uZ0Z1bmRpbmdSYXRlBRBfbG9uZ0Z1bmRpbmdSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX3Nob3J0RnVuZGluZ1JhdGUFEV9zaG9ydEZ1bmRpbmdSYXRlBQNuaWwBE3VwZGF0ZVBvc2l0aW9uQXNzZXQCCF9hZGRyZXNzCF9hc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFD2tfcG9zaXRpb25Bc3NldAUIX2FkZHJlc3MFCF9hc3NldElkBQNuaWwBH2luY3JlbWVudFBvc2l0aW9uU2VxdWVuY2VOdW1iZXICDWlzTmV3UG9zaXRpb24IX2FkZHJlc3MDBQ1pc05ld1Bvc2l0aW9uBA9jdXJyZW50U2VxdWVuY2UJAQxsYXN0U2VxdWVuY2UACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRJrX3Bvc2l0aW9uU2VxdWVuY2UFCF9hZGRyZXNzCQBkAgUPY3VycmVudFNlcXVlbmNlAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFCmtfc2VxdWVuY2UJAGQCBQ9jdXJyZW50U2VxdWVuY2UAAQUDbmlsBQNuaWwBDnVwZGF0ZVBvc2l0aW9uBQhfYWRkcmVzcwVfc2l6ZQdfbWFyZ2luDV9vcGVuTm90aW9uYWwgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwUFX3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzBQdfbWFyZ2luCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwUNX29wZW5Ob3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUIX2FkZHJlc3MFIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQNuaWwBCmFwcGVuZFR3YXABBl9wcmljZQQIbWludXRlSWQJAGkCCQBpAggFCWxhc3RCbG9jawl0aW1lc3RhbXAA6AcAPAQQcHJldmlvdXNNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rX2xhc3RNaW51dGVJZAAAAwkAZgIFEHByZXZpb3VzTWludXRlSWQFCG1pbnV0ZUlkCQACAQIRVFdBUCBvdXQtb2Ytb3JkZXIEDGxhc3RNaW51dGVJZAMJAAACBRBwcmV2aW91c01pbnV0ZUlkAAAFCG1pbnV0ZUlkBRBwcmV2aW91c01pbnV0ZUlkAwkAZgIFCG1pbnV0ZUlkBRBwcmV2aW91c01pbnV0ZUlkBBNwcmV2Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIBXwkApAMBBRBwcmV2aW91c01pbnV0ZUlkAAAECXByZXZQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBRBwcmV2aW91c01pbnV0ZUlkBQZfcHJpY2UEE2xhc3RDdW11bGF0aXZlUHJpY2UJAGQCBRNwcmV2Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBQxsYXN0TWludXRlSWQFCXByZXZQcmljZQQEbGlzdAkBC3B1c2hUb1F1ZXVlAwkBCXN0clRvTGlzdAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUNa19sYXN0RGF0YVN0cgIABQ1UV0FQX0lOVEVSVkFMCQCkAwEFCG1pbnV0ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQkApAMBBQhtaW51dGVJZAUTbGFzdEN1bXVsYXRpdmVQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBQhtaW51dGVJZAUGX3ByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19sYXN0TWludXRlSWQFCG1pbnV0ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtfbGFzdERhdGFTdHIJAQlsaXN0VG9TdHIBBQRsaXN0BQNuaWwEGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAAABBNwcmV2Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAAABAlwcmV2UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBRh0d2FwRGF0YVByZXZpb3VzTWludXRlSWQFBl9wcmljZQQTbGFzdEN1bXVsYXRpdmVQcmljZQkAZAIFE3ByZXZDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUIbWludXRlSWQFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAUJcHJldlByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQkApAMBBQhtaW51dGVJZAUTbGFzdEN1bXVsYXRpdmVQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBQhtaW51dGVJZAUGX3ByaWNlBQNuaWwBEXVwZGF0ZUFtbVJlc2VydmVzAgdfcXRBc3RSB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfcXVvdGVBc3NldFJlc2VydmUFB19xdEFzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfYmFzZUFzc2V0UmVzZXJ2ZQUHX2JzQXN0UgUDbmlsARB1cGRhdGVBbW1XZWlnaHRzAgdfcXRBc3RXB19ic0FzdFcJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfcXVvdGVBc3NldFdlaWdodAUHX3F0QXN0VwkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19iYXNlQXNzZXRXZWlnaHQFB19ic0FzdFcFA25pbAEJdXBkYXRlQW1tCAdfcXRBc3RSB19ic0FzdFIXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIVX29wZW5JbnRlcmVzdE5vdGlvbmFsFl90b3RhbExvbmdQb3NpdGlvblNpemUXX3RvdGFsU2hvcnRQb3NpdGlvblNpemUWX3RvdGFsTG9uZ09wZW5Ob3Rpb25hbBdfdG90YWxTaG9ydE9wZW5Ob3Rpb25hbAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcAAwkBAiE9AgkAZQIFFl90b3RhbExvbmdQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhJbnZhbGlkIEFNTSBzdGF0ZSBkYXRhOiAJAKQDAQUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIEICsgIAkApAMBBRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIEICE9IAkApAMBBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAzggCCQDOCAIJARF1cGRhdGVBbW1SZXNlcnZlcwIFB19xdEFzdFIFB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfdG90YWxQb3NpdGlvblNpemUFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrX29wZW5JbnRlcmVzdE5vdGlvbmFsBRVfb3BlbkludGVyZXN0Tm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFF2tfdG90YWxMb25nUG9zaXRpb25TaXplBRZfdG90YWxMb25nUG9zaXRpb25TaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX29wZW5JbnRlcmVzdExvbmcFFl90b3RhbExvbmdPcGVuTm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfb3BlbkludGVyZXN0U2hvcnQFF190b3RhbFNob3J0T3Blbk5vdGlvbmFsBQNuaWwJAQphcHBlbmRUd2FwAQkBBGRpdmQCCQEEbXVsZAIFB19xdEFzdFIFB19xdEFzdFcJAQRtdWxkAgUHX2JzQXN0UgUHX2JzQXN0VwEOZGVsZXRlUG9zaXRpb24BCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBRBrX3Bvc2l0aW9uTWFyZ2luBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBQ9rX3Bvc2l0aW9uQXNzZXQFCF9hZGRyZXNzBQNuaWwBCHdpdGhkcmF3AghfYWRkcmVzcwdfYW1vdW50BAdiYWxhbmNlCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAGYCBQdfYW1vdW50BQdiYWxhbmNlCQACAQkArAICCQCsAgIJAKwCAgITVW5hYmxlIHRvIHdpdGhkcmF3IAkApAMBBQdfYW1vdW50AhcgZnJvbSBjb250cmFjdCBiYWxhbmNlIAkApAMBBQdiYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCF9hZGRyZXNzBQdfYW1vdW50CQEKcXVvdGVBc3NldAAFA25pbAENdXBkYXRlQmFsYW5jZQEBaQMJAGYCAAAFAWkJAAIBAgdCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrX2JhbGFuY2UFAWkFA25pbAELdHJhbnNmZXJGZWUBAWkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBDnN0YWtpbmdBZGRyZXNzAAUBaQkBCnF1b3RlQXNzZXQABQNuaWwBDmRvQnVybkFydGlmYWN0Ag1fYnVybkFydGlmYWN0AWkDBQ1fYnVybkFydGlmYWN0CQDMCAIJAQRCdXJuAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQCEEludmFsaWQgYXJ0aWZhY3QAAQUDbmlsBQNuaWwXAWkBBXBhdXNlAAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhRJbnZhbGlkIHBhdXNlIHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIa19wYXVzZWQGBQNuaWwBaQEHdW5wYXVzZQADCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIWSW52YWxpZCB1bnBhdXNlIHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIa19wYXVzZWQHBQNuaWwBaQEMc2V0Q2xvc2VPbmx5AAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhtJbnZhbGlkIHNldENsb3NlT25seSBwYXJhbXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFC2tfY2xvc2VPbmx5BgUDbmlsAWkBDnVuc2V0Q2xvc2VPbmx5AAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAh1JbnZhbGlkIHVuc2V0Q2xvc2VPbmx5IHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgULa19jbG9zZU9ubHkHBQNuaWwBaQEMYWRkTGlxdWlkaXR5ARFfcXVvdGVBc3NldEFtb3VudAMDCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MABgkAZwIAAAURX3F1b3RlQXNzZXRBbW91bnQJAAIBAhtJbnZhbGlkIGFkZExpcXVpZGl0eSBwYXJhbXMEB19xdEFzdFIJAQZxdEFzdFIABAdfYnNBc3RSCQEGYnNBc3RSAAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcABAVwcmljZQkBBGRpdmQCCQEEbXVsZAIFB19xdEFzdFIFB19xdEFzdFcJAQRtdWxkAgUHX2JzQXN0UgUHX2JzQXN0VwQLcXRBc3RSQWZ0ZXIJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQUYmFzZUFzc2V0QW1vdW50VG9BZGQJAGUCCQEEZGl2ZAIJAQRtdWxkAgULcXRBc3RSQWZ0ZXIFB19xdEFzdFcFBXByaWNlBQdfYnNBc3RSBAtic0FzdFJBZnRlcgkAZAIFB19ic0FzdFIFFGJhc2VBc3NldEFtb3VudFRvQWRkBA0kdDA0NTc0OTQ1OTAwCQEUZ2V0U3luY1Rlcm1pbmFsUHJpY2UDCQEOZ2V0T3JhY2xlUHJpY2UABQtxdEFzdFJBZnRlcgULYnNBc3RSQWZ0ZXIEE25ld1F1b3RlQXNzZXRXZWlnaHQIBQ0kdDA0NTc0OTQ1OTAwAl8xBBJuZXdCYXNlQXNzZXRXZWlnaHQIBQ0kdDA0NTc0OTQ1OTAwAl8yBA1tYXJnaW5Ub1ZhdWx0CAUNJHQwNDU3NDk0NTkwMAJfMwQNZG9FeGNoYW5nZVBuTAMJAQIhPQIFDW1hcmdpblRvVmF1bHQAAAQNZG9FeGNoYW5nZVBuTAkA/AcECQEMdmF1bHRBZGRyZXNzAAIVZXhjaGFuZ2VGcmVlQW5kTG9ja2VkCQDMCAIFDW1hcmdpblRvVmF1bHQFA25pbAUDbmlsAwkAAAIFDWRvRXhjaGFuZ2VQbkwFDWRvRXhjaGFuZ2VQbkwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFDWRvRXhjaGFuZ2VQbkwFDWRvRXhjaGFuZ2VQbkwJAM4IAgkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyCQEQdXBkYXRlQW1tV2VpZ2h0cwIFE25ld1F1b3RlQXNzZXRXZWlnaHQFEm5ld0Jhc2VBc3NldFdlaWdodAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9yZW1vdmVMaXF1aWRpdHkBEV9xdW90ZUFzc2V0QW1vdW50AwMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAGCQBnAgAABRFfcXVvdGVBc3NldEFtb3VudAkAAgECHkludmFsaWQgcmVtb3ZlTGlxdWlkaXR5IHBhcmFtcwQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAEBXByaWNlCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXBBdiYXNlQXNzZXRBbW91bnRUb1JlbW92ZQkBBGRpdmQCBRFfcXVvdGVBc3NldEFtb3VudAUFcHJpY2UEC3F0QXN0UkFmdGVyCQBlAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQEC2JzQXN0UkFmdGVyCQBlAgUHX2JzQXN0UgUXYmFzZUFzc2V0QW1vdW50VG9SZW1vdmUJARF1cGRhdGVBbW1SZXNlcnZlcwIFC3F0QXN0UkFmdGVyBQtic0FzdFJBZnRlcgFpAQ5jaGFuZ2VTZXR0aW5ncwwQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdBhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8PX21heFByaWNlU3ByZWFkEF9tYXhPcGVuTm90aW9uYWwUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQPX21heE9yYWNsZURlbGF5AwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECHUludmFsaWQgY2hhbmdlU2V0dGluZ3MgcGFyYW1zCQEOdXBkYXRlU2V0dGluZ3MMBRBfaW5pdE1hcmdpblJhdGlvBQRfbW1yBRRfbGlxdWlkYXRpb25GZWVSYXRpbwUOX2Z1bmRpbmdQZXJpb2QFBF9mZWUFDF9zcHJlYWRMaW1pdAUPX21heFByaWNlSW1wYWN0BRhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8FD19tYXhQcmljZVNwcmVhZAUQX21heE9wZW5Ob3Rpb25hbAUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQFD19tYXhPcmFjbGVEZWxheQFpAQppbml0aWFsaXplEgdfcXRBc3RSB19ic0FzdFIOX2Z1bmRpbmdQZXJpb2QQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvBF9mZWUHX29yYWNsZQpfb3JhY2xlS2V5D19vcmFjbGVCbG9ja0tleQxfY29vcmRpbmF0b3IMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdBhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8PX21heFByaWNlU3ByZWFkEF9tYXhPcGVuTm90aW9uYWwUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQPX21heE9yYWNsZURlbGF5AwMDAwMDAwMDAwMDAwMDAwkAZwIAAAUHX3F0QXN0UgYJAGcCAAAFB19ic0FzdFIGCQBnAgAABQ5fZnVuZGluZ1BlcmlvZAYJAGcCAAAFEF9pbml0TWFyZ2luUmF0aW8GCQBnAgAABQRfbW1yBgkAZwIAAAUUX2xpcXVpZGF0aW9uRmVlUmF0aW8GCQBnAgAABQRfZmVlBgkAZwIAAAUMX3NwcmVhZExpbWl0BgkAZwIAAAUPX21heFByaWNlSW1wYWN0BgkAZwIAAAUYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBgkAZwIAAAUPX21heFByaWNlU3ByZWFkBgkAZwIAAAUQX21heE9wZW5Ob3Rpb25hbAYJAGcCAAAFFF9mZWVUb1N0YWtlcnNQZXJjZW50BgkAZgIFFF9mZWVUb1N0YWtlcnNQZXJjZW50BQxERUNJTUFMX1VOSVQGCQBnAgAABQ9fbWF4T3JhY2xlRGVsYXkGCQELaW5pdGlhbGl6ZWQACQACAQIdSW52YWxpZCBpbml0aWFsaXplIHBhcmFtZXRlcnMJAM4IAgkAzggCCQDOCAIJAM4IAgkBCXVwZGF0ZUFtbQgFB19xdEFzdFIFB19ic0FzdFIAAAAAAAAAAAAAAAAJAQ51cGRhdGVTZXR0aW5ncwwFEF9pbml0TWFyZ2luUmF0aW8FBF9tbXIFFF9saXF1aWRhdGlvbkZlZVJhdGlvBQ5fZnVuZGluZ1BlcmlvZAUEX2ZlZQUMX3NwcmVhZExpbWl0BQ9fbWF4UHJpY2VJbXBhY3QFGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwUPX21heFByaWNlU3ByZWFkBRBfbWF4T3Blbk5vdGlvbmFsBRRfZmVlVG9TdGFrZXJzUGVyY2VudAUPX21heE9yYWNsZURlbGF5CQENdXBkYXRlRnVuZGluZwUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUOX2Z1bmRpbmdQZXJpb2QAAAAAAAAAAAkBDXVwZGF0ZUJhbGFuY2UBAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWtfb3JhBQdfb3JhY2xlCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtfb3JhX2tleQUKX29yYWNsZUtleQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rX29yYV9ibG9ja19rZXkFD19vcmFjbGVCbG9ja0tleQkAzAgCCQELU3RyaW5nRW50cnkCBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwUMX2Nvb3JkaW5hdG9yBQNuaWwBaQEQZGVjcmVhc2VQb3NpdGlvbgMHX2Ftb3VudAlfbGV2ZXJhZ2UTX21pbkJhc2VBc3NldEFtb3VudAQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBAdfdHJhZGVyCQEPZ2V0QWN0dWFsQ2FsbGVyAQUBaQMDAwMDAwkAZwIAAAUHX2Ftb3VudAYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DCQEEZGl2ZAIFDERFQ0lNQUxfVU5JVAUJX2xldmVyYWdlCQEPaW5pdE1hcmdpblJhdGlvAAYGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUHX3RyYWRlcgYJAQZwYXVzZWQABgkBDmlzTWFya2V0Q2xvc2VkAAkAAgECI0ludmFsaWQgZGVjcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDA0OTc2NzQ5OTA3CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA0OTc2NzQ5OTA3Al8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDQ5NzY3NDk5MDcCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNDk3Njc0OTkwNwJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA0OTc2NzQ5OTA3Al80BApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDA1MDA4MDUwMTg0CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEE29sZFBvc2l0aW9uTm90aW9uYWwIBQ0kdDA1MDA4MDUwMTg0Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwNTAwODA1MDE4NAJfMgQNJHQwNTAxOTA1MjgzMgMJAGYCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBQxvcGVuTm90aW9uYWwEDSR0MDUwNjA1NTA3ODkJAQlzd2FwSW5wdXQCBQVpc0FkZAUMb3Blbk5vdGlvbmFsBBVleGNoYW5nZWRQb3NpdGlvblNpemUIBQ0kdDA1MDYwNTUwNzg5Al8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTA2MDU1MDc4OQJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTA2MDU1MDc4OQJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDUwNjA1NTA3ODkCXzQEGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50BRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMHCQACAQkArAICCQCsAgIJAKwCAgIlVG9vIGxpdHRsZSBiYXNlIGFzc2V0IGV4Y2hhbmdlZCwgZ290IAkApAMBBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMCCiBleHBlY3RlZCAJAKQDAQUTX21pbkJhc2VBc3NldEFtb3VudAQLcmVhbGl6ZWRQbmwJAQRkaXZkAgkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUEDSR0MDUxMjI2NTE0NTUJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC3JlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDA1MTIyNjUxNDU1Al8xBAdiYWREZWJ0CAUNJHQwNTEyMjY1MTQ1NQJfMgQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUMb3Blbk5vdGlvbmFsBBJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCBQ11bnJlYWxpemVkUG5sBQtyZWFsaXplZFBubAQScmVtYWluT3Blbk5vdGlvbmFsAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQBlAgkAZQIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIJAGQCBRJ1bnJlYWxpemVkUG5sQWZ0ZXIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQED25ld1Bvc2l0aW9uU2l6ZQkAZAIFD29sZFBvc2l0aW9uU2l6ZQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQCeCgwFD25ld1Bvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luCQEDYWJzAQUScmVtYWluT3Blbk5vdGlvbmFsCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUMb3Blbk5vdGlvbmFsCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQBlAgkBEG9wZW5JbnRlcmVzdExvbmcAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAABQxvcGVuTm90aW9uYWwAAAkAZQIJARFvcGVuSW50ZXJlc3RTaG9ydAADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUFDG9wZW5Ob3Rpb25hbAAACQACAQIUQ2xvc2UgcG9zaXRpb24gZmlyc3QED25ld1Bvc2l0aW9uU2l6ZQgFDSR0MDUwMTkwNTI4MzICXzEEF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luCAUNJHQwNTAxOTA1MjgzMgJfMgQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA1MDE5MDUyODMyAl8zBBRuZXdQb3NpdGlvbkxhdGVzdENQRggFDSR0MDUwMTkwNTI4MzICXzQEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDUwMTkwNTI4MzICXzUEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1MDE5MDUyODMyAl82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTAxOTA1MjgzMgJfNwQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDUwMTkwNTI4MzICXzgEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNTAxOTA1MjgzMgJfOQQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNTAxOTA1MjgzMgNfMTAEGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNTAxOTA1MjgzMgNfMTEEG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcggFDSR0MDUwMTkwNTI4MzIDXzEyBA5ub3RpZnlOb3Rpb25hbAkA/AcECQEMbWluZXJBZGRyZXNzAAIObm90aWZ5Tm90aW9uYWwJAMwIAgUHX3RyYWRlcgkAzAgCBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD25ld1Bvc2l0aW9uU2l6ZQUXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxhdGVzdENQRgkBCXVwZGF0ZUFtbQgFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgUadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIFG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBpbmNyZWFzZVBvc2l0aW9uBApfZGlyZWN0aW9uCV9sZXZlcmFnZRNfbWluQmFzZUFzc2V0QW1vdW50CF9yZWZMaW5rBARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEB190cmFkZXIJAQ9nZXRBY3R1YWxDYWxsZXIBBQFpBApfcmF3QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQIX2Fzc2V0SWQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQLX2Fzc2V0SWRTdHIJANgEAQkBBXZhbHVlAQUIX2Fzc2V0SWQEDGlzUXVvdGVBc3NldAkAAAIFCF9hc3NldElkCQEKcXVvdGVBc3NldAAEEWlzQ29sbGF0ZXJhbEFzc2V0CQEQaXNXaGl0ZWxpc3RBc3NldAEFC19hc3NldElkU3RyAwMDAwMDAwMDAwkBAiE9AgUKX2RpcmVjdGlvbgUIRElSX0xPTkcJAQIhPQIFCl9kaXJlY3Rpb24FCURJUl9TSE9SVAcGCQBnAgAABQpfcmF3QW1vdW50BgkBASEBCQELaW5pdGlhbGl6ZWQABgMJAQEhAQUMaXNRdW90ZUFzc2V0CQEBIQEFEWlzQ29sbGF0ZXJhbEFzc2V0BwYJAQEhAQkBF2lzU2FtZUFzc2V0T3JOb1Bvc2l0aW9uAgUHX3RyYWRlcgULX2Fzc2V0SWRTdHIGCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwkBBGRpdmQCBQxERUNJTUFMX1VOSVQFCV9sZXZlcmFnZQkBD2luaXRNYXJnaW5SYXRpbwAGBgkBBnBhdXNlZAAGCQEJY2xvc2VPbmx5AAYJAQ5pc01hcmtldENsb3NlZAAJAAIBAiNJbnZhbGlkIGluY3JlYXNlUG9zaXRpb24gcGFyYW1ldGVycwQNJHQwNTQyOTQ1NDM3OQkBGGdldEZvclRyYWRlcldpdGhBcnRpZmFjdAIFB190cmFkZXIJAQ1nZXRBcnRpZmFjdElkAQUBaQQLYWRqdXN0ZWRGZWUIBQ0kdDA1NDI5NDU0Mzc5Al8xBAxidXJuQXJ0aWZhY3QIBQ0kdDA1NDI5NDU0Mzc5Al8yBAxyYXdGZWVBbW91bnQJAQRtdWxkAgUKX3Jhd0Ftb3VudAULYWRqdXN0ZWRGZWUEB19hbW91bnQJAGUCBQpfcmF3QW1vdW50BQxyYXdGZWVBbW91bnQEE2Rpc3RyaWJ1dGVGZWVBbW91bnQDBRFpc0NvbGxhdGVyYWxBc3NldAQIZG9Cb3Jyb3cJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIGYm9ycm93CQDMCAIFB190cmFkZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIX2Fzc2V0SWQFB19hbW91bnQFA25pbAMJAAACBQhkb0JvcnJvdwUIZG9Cb3Jyb3cEDWJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwkBCnF1b3RlQXNzZXQAAwkAAAIFDWJhbGFuY2VCZWZvcmUFDWJhbGFuY2VCZWZvcmUEBmRvU3dhcAkA/AcECQELc3dhcEFkZHJlc3MAAgRzd2FwCQDMCAIJANgEAQkBCnF1b3RlQXNzZXQACQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhfYXNzZXRJZAUMcmF3RmVlQW1vdW50BQNuaWwDCQAAAgUGZG9Td2FwBQZkb1N3YXAEDGJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQAAAgUMYmFsYW5jZUFmdGVyBQxiYWxhbmNlQWZ0ZXIED2V4Y2hhbmdlZEFtb3VudAkAZQIFDGJhbGFuY2VBZnRlcgUNYmFsYW5jZUJlZm9yZQMJAAACBQ9leGNoYW5nZWRBbW91bnQFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQxyYXdGZWVBbW91bnQDCQAAAgUTZGlzdHJpYnV0ZUZlZUFtb3VudAUTZGlzdHJpYnV0ZUZlZUFtb3VudAQOcmVmZXJyZXJGZWVBbnkJAPwHBAkBD3JlZmVycmFsQWRkcmVzcwACFWFjY2VwdFBheW1lbnRXaXRoTGluawkAzAgCBQdfdHJhZGVyCQDMCAIFCF9yZWZMaW5rBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUTZGlzdHJpYnV0ZUZlZUFtb3VudAUDbmlsAwkAAAIFDnJlZmVycmVyRmVlQW55BQ5yZWZlcnJlckZlZUFueQQLcmVmZXJyZXJGZWUEByRtYXRjaDAFDnJlZmVycmVyRmVlQW55AwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAkAAgECE0ludmFsaWQgcmVmZXJyZXJGZWUECWZlZUFtb3VudAkAZQIFE2Rpc3RyaWJ1dGVGZWVBbW91bnQFC3JlZmVycmVyRmVlBA0kdDA1NTY5NTU1ODM1CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA1NTY5NTU1ODM1Al8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDU1Njk1NTU4MzUCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNTU2OTU1NTgzNQJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA1NTY5NTU1ODM1Al80BA1pc05ld1Bvc2l0aW9uCQAAAgUPb2xkUG9zaXRpb25TaXplAAAED2lzU2FtZURpcmVjdGlvbgMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HCQAAAgUKX2RpcmVjdGlvbgUJRElSX1NIT1JUBA5leHBhbmRFeGlzdGluZwMJAQEhAQUNaXNOZXdQb3NpdGlvbgUPaXNTYW1lRGlyZWN0aW9uBwQFaXNBZGQJAAACBQpfZGlyZWN0aW9uBQhESVJfTE9ORwQNJHQwNTYxMjQ1OTE2NQMDBQ1pc05ld1Bvc2l0aW9uBgUOZXhwYW5kRXhpc3RpbmcEDG9wZW5Ob3Rpb25hbAkBBG11bGQCBQdfYW1vdW50BQlfbGV2ZXJhZ2UEDSR0MDU2NTg2NTY3NTkJAQlzd2FwSW5wdXQCBQVpc0FkZAUMb3Blbk5vdGlvbmFsBBVhbW91bnRCYXNlQXNzZXRCb3VnaHQIBQ0kdDA1NjU4NjU2NzU5Al8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTY1ODY1Njc1OQJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTY1ODY1Njc1OQJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDU2NTg2NTY3NTkCXzQDAwkBAiE9AgUTX21pbkJhc2VBc3NldEFtb3VudAAACQBmAgUTX21pbkJhc2VBc3NldEFtb3VudAkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAcJAAIBCQCsAgIJAKwCAgkArAICAg1MaW1pdCBlcnJvcjogCQCkAwEJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQCAyA8IAkApAMBBRNfbWluQmFzZUFzc2V0QW1vdW50BA9uZXdQb3NpdGlvblNpemUJAGQCBQ9vbGRQb3NpdGlvblNpemUFFWFtb3VudEJhc2VBc3NldEJvdWdodAQadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIJAGQCCQEQb3BlbkludGVyZXN0TG9uZwADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAFDG9wZW5Ob3Rpb25hbAAABBt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIJAGQCCQERb3BlbkludGVyZXN0U2hvcnQAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplBQxvcGVuTm90aW9uYWwAAAQZaW5jcmVhc2VNYXJnaW5SZXF1aXJlbWVudAkBBGRpdmQCBQxvcGVuTm90aW9uYWwFCV9sZXZlcmFnZQQNJHQwNTczNjc1NzYwNgkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgUZaW5jcmVhc2VNYXJnaW5SZXF1aXJlbWVudAQMcmVtYWluTWFyZ2luCAUNJHQwNTczNjc1NzYwNgJfMQQCeDEIBQ0kdDA1NzM2NzU3NjA2Al8yBAJ4MggFDSR0MDU3MzY3NTc2MDYCXzMDCQEBIQEJARlyZXF1aXJlTm90T3ZlclNwcmVhZExpbWl0AgUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCQACAQIVT3ZlciBtYXggc3ByZWFkIGxpbWl0AwkBASEBCQEdcmVxdWlyZU5vdE92ZXJNYXhPcGVuTm90aW9uYWwCBRp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcgUbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCQACAQIWT3ZlciBtYXggb3BlbiBub3Rpb25hbAkAngoMBQ9uZXdQb3NpdGlvblNpemUFDHJlbWFpbk1hcmdpbgkAZAIFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsBQxvcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIJAGQCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABQxvcGVuTm90aW9uYWwJAGQCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAAACQBkAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplCQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AAAFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIEDG9wZW5Ob3Rpb25hbAkBBG11bGQCBQdfYW1vdW50BQlfbGV2ZXJhZ2UEDSR0MDU4ODY1NTg5ODEJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIJAKUIAQgFAWkGY2FsbGVyBQ9QTkxfT1BUSU9OX1NQT1QEE29sZFBvc2l0aW9uTm90aW9uYWwIBQ0kdDA1ODg2NTU4OTgxAl8xBA11bnJlYWxpemVkUG5sCAUNJHQwNTg4NjU1ODk4MQJfMgMJAGYCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBQxvcGVuTm90aW9uYWwJAAIBAi5Vc2UgZGVjcmVhc2VQb3NpdGlvbiB0byBkZWNyZWFzZSBwb3NpdGlvbiBzaXplCQACAQIUQ2xvc2UgcG9zaXRpb24gZmlyc3QED25ld1Bvc2l0aW9uU2l6ZQgFDSR0MDU2MTI0NTkxNjUCXzEEF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luCAUNJHQwNTYxMjQ1OTE2NQJfMgQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA1NjEyNDU5MTY1Al8zBBRuZXdQb3NpdGlvbkxhdGVzdENQRggFDSR0MDU2MTI0NTkxNjUCXzQEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDU2MTI0NTkxNjUCXzUEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1NjEyNDU5MTY1Al82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTYxMjQ1OTE2NQJfNwQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDU2MTI0NTkxNjUCXzgEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNTYxMjQ1OTE2NQJfOQQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNTYxMjQ1OTE2NQNfMTAEGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNTYxMjQ1OTE2NQNfMTEEG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcggFDSR0MDU2MTI0NTkxNjUDXzEyBA0kdDA1OTE3MTU5MjI4CQENZGlzdHJpYnV0ZUZlZQEFCWZlZUFtb3VudAQMZmVlVG9TdGFrZXJzCAUNJHQwNTkxNzE1OTIyOAJfMQQKZmVlVG9WYXVsdAgFDSR0MDU5MTcxNTkyMjgCXzIEBXN0YWtlAwUMaXNRdW90ZUFzc2V0BAVzdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIJYWRkTG9ja2VkCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUHX2Ftb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUFc3Rha2UFBXN0YWtlBBBkZXBvc2l0SW5zdXJhbmNlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAgdhZGRGcmVlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUKZmVlVG9WYXVsdAUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UECW5vdGlmeUZlZQkA/AcECQEMbWluZXJBZGRyZXNzAAIKbm90aWZ5RmVlcwkAzAgCBQdfdHJhZGVyCQDMCAIFCWZlZUFtb3VudAUDbmlsBQNuaWwDCQAAAgUJbm90aWZ5RmVlBQlub3RpZnlGZWUEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD25ld1Bvc2l0aW9uU2l6ZQUXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxhdGVzdENQRgkBH2luY3JlbWVudFBvc2l0aW9uU2VxdWVuY2VOdW1iZXICBQ1pc05ld1Bvc2l0aW9uBQdfdHJhZGVyCQETdXBkYXRlUG9zaXRpb25Bc3NldAIFB190cmFkZXIFC19hc3NldElkU3RyCQEJdXBkYXRlQW1tCAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyBRp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcgUbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAQ5kb0J1cm5BcnRpZmFjdAIFDGJ1cm5BcnRpZmFjdAUBaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlhZGRNYXJnaW4ABARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEB190cmFkZXIJAKUIAQgFAWkGY2FsbGVyBApfcmF3QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQIX2Fzc2V0SWQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQLX2Fzc2V0SWRTdHIJANgEAQkBBXZhbHVlAQUIX2Fzc2V0SWQEDGlzUXVvdGVBc3NldAkAAAIFCF9hc3NldElkCQEKcXVvdGVBc3NldAAEEWlzQ29sbGF0ZXJhbEFzc2V0CQEQaXNXaGl0ZWxpc3RBc3NldAEFC19hc3NldElkU3RyAwMDAwMDAwMJAQEhAQUMaXNRdW90ZUFzc2V0CQEBIQEFEWlzQ29sbGF0ZXJhbEFzc2V0BwYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQEhAQkBC2lzU2FtZUFzc2V0AgUHX3RyYWRlcgULX2Fzc2V0SWRTdHIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAYJAQljbG9zZU9ubHkABgkBDmlzTWFya2V0Q2xvc2VkAAkAAgECHEludmFsaWQgYWRkTWFyZ2luIHBhcmFtZXRlcnMEDSR0MDYxMjAwNjEyODUJARhnZXRGb3JUcmFkZXJXaXRoQXJ0aWZhY3QCBQdfdHJhZGVyCQENZ2V0QXJ0aWZhY3RJZAEFAWkEC2FkanVzdGVkRmVlCAUNJHQwNjEyMDA2MTI4NQJfMQQMYnVybkFydGlmYWN0CAUNJHQwNjEyMDA2MTI4NQJfMgQMcmF3RmVlQW1vdW50CQEEbXVsZAIFCl9yYXdBbW91bnQFC2FkanVzdGVkRmVlBAdfYW1vdW50CQBlAgUKX3Jhd0Ftb3VudAUMcmF3RmVlQW1vdW50BBNkaXN0cmlidXRlRmVlQW1vdW50AwURaXNDb2xsYXRlcmFsQXNzZXQECGRvQm9ycm93CQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACBmJvcnJvdwkAzAgCBQdfdHJhZGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCF9hc3NldElkBQdfYW1vdW50BQNuaWwDCQAAAgUIZG9Cb3Jyb3cFCGRvQm9ycm93BA1iYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAAACBQ1iYWxhbmNlQmVmb3JlBQ1iYWxhbmNlQmVmb3JlBAZkb1N3YXAJAPwHBAkBC3N3YXBBZGRyZXNzAAIEc3dhcAkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIX2Fzc2V0SWQFDHJhd0ZlZUFtb3VudAUDbmlsAwkAAAIFBmRvU3dhcAUGZG9Td2FwBAxiYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwkBCnF1b3RlQXNzZXQAAwkAAAIFDGJhbGFuY2VBZnRlcgUMYmFsYW5jZUFmdGVyBA9leGNoYW5nZWRBbW91bnQJAGUCBQxiYWxhbmNlQWZ0ZXIFDWJhbGFuY2VCZWZvcmUDCQAAAgUPZXhjaGFuZ2VkQW1vdW50BQ9leGNoYW5nZWRBbW91bnQFD2V4Y2hhbmdlZEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUMcmF3RmVlQW1vdW50AwkAAAIFE2Rpc3RyaWJ1dGVGZWVBbW91bnQFE2Rpc3RyaWJ1dGVGZWVBbW91bnQEDnJlZmVycmVyRmVlQW55CQD8BwQJAQ9yZWZlcnJhbEFkZHJlc3MAAg1hY2NlcHRQYXltZW50CQDMCAIFB190cmFkZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABRNkaXN0cmlidXRlRmVlQW1vdW50BQNuaWwDCQAAAgUOcmVmZXJyZXJGZWVBbnkFDnJlZmVycmVyRmVlQW55BAtyZWZlcnJlckZlZQQHJG1hdGNoMAUOcmVmZXJyZXJGZWVBbnkDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQITSW52YWxpZCByZWZlcnJlckZlZQQJZmVlQW1vdW50CQBlAgUTZGlzdHJpYnV0ZUZlZUFtb3VudAULcmVmZXJyZXJGZWUEDSR0MDYyNTg0NjI3MjQJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDYyNTg0NjI3MjQCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNjI1ODQ2MjcyNAJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA2MjU4NDYyNzI0Al8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDYyNTg0NjI3MjQCXzQEDSR0MDYyNzMwNjI3ODcJAQ1kaXN0cmlidXRlRmVlAQUJZmVlQW1vdW50BAxmZWVUb1N0YWtlcnMIBQ0kdDA2MjczMDYyNzg3Al8xBApmZWVUb1ZhdWx0CAUNJHQwNjI3MzA2Mjc4NwJfMgQFc3Rha2UDBQxpc1F1b3RlQXNzZXQEBXN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAglhZGRMb2NrZWQJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQdfYW1vdW50BQNuaWwDCQAAAgUFc3Rha2UFBXN0YWtlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQpmZWVUb1ZhdWx0BQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQJbm90aWZ5RmVlCQD8BwQJAQxtaW5lckFkZHJlc3MAAgpub3RpZnlGZWVzCQDMCAIFB190cmFkZXIJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBQlub3RpZnlGZWUFCW5vdGlmeUZlZQkAzggCCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPb2xkUG9zaXRpb25TaXplCQBkAgURb2xkUG9zaXRpb25NYXJnaW4FB19hbW91bnQFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsBRRvbGRQb3NpdGlvbkxzdFVwZENQRgkBC3RyYW5zZmVyRmVlAQUMZmVlVG9TdGFrZXJzCQENdXBkYXRlQmFsYW5jZQEJAGQCCQEIY2JhbGFuY2UABQdfYW1vdW50CQEOZG9CdXJuQXJ0aWZhY3QCBQxidXJuQXJ0aWZhY3QFAWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMcmVtb3ZlTWFyZ2luAQdfYW1vdW50BARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEB190cmFkZXIJAKUIAQgFAWkGY2FsbGVyAwMDAwMJAGcCAAAFB19hbW91bnQGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUHX3RyYWRlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQABgkBDmlzTWFya2V0Q2xvc2VkAAkAAgECH0ludmFsaWQgcmVtb3ZlTWFyZ2luIHBhcmFtZXRlcnMEDSR0MDYzOTIzNjQwNjMJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDYzOTIzNjQwNjMCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNjM5MjM2NDA2MwJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA2MzkyMzY0MDYzAl8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDYzOTIzNjQwNjMCXzQEC21hcmdpbkRlbHRhCQEBLQEFB19hbW91bnQEDSR0MDY0MTAwNjQyNzkJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC21hcmdpbkRlbHRhBAxyZW1haW5NYXJnaW4IBQ0kdDA2NDEwMDY0Mjc5Al8xBAdiYWREZWJ0CAUNJHQwNjQxMDA2NDI3OQJfMgMJAQIhPQIFB2JhZERlYnQAAAkAAgECHUludmFsaWQgcmVtb3ZlZCBtYXJnaW4gYW1vdW50BAttYXJnaW5SYXRpbwkBD2NhbGNNYXJnaW5SYXRpbwMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwDCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwULbWFyZ2luUmF0aW8JAQ9pbml0TWFyZ2luUmF0aW8ABgkAAgEJAKwCAgkArAICCQCsAgICGVRvbyBtdWNoIG1hcmdpbiByZW1vdmVkOiAJAKQDAQULbWFyZ2luUmF0aW8CAyA8IAkApAMBCQEPaW5pdE1hcmdpblJhdGlvAAQNcXVvdGVBc3NldFN0cgkA2AQBCQEKcXVvdGVBc3NldAAEDSR0MDY0NzIzNjQ3NzcJARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQUHX3RyYWRlcgQIYm9ycm93ZWQIBQ0kdDA2NDcyMzY0Nzc3Al8xBAdhc3NldElkCAUNJHQwNjQ3MjM2NDc3NwJfMgQHdG9SZXBheQMJAGYCBQdfYW1vdW50BQhib3Jyb3dlZAUIYm9ycm93ZWQFB19hbW91bnQECnRvV2l0aGRyYXcDCQBmAgUIYm9ycm93ZWQFB19hbW91bnQAAAkAZQIFB19hbW91bnQFCGJvcnJvd2VkBAtmaW5hbEJvcnJvdwkAZQIFCGJvcnJvd2VkBQd0b1JlcGF5BBVzd2l0Y2hQb3NpdGlvblRvUXVvdGUDCQBmAgULZmluYWxCb3Jyb3cAAAUDbmlsCQETdXBkYXRlUG9zaXRpb25Bc3NldAIFB190cmFkZXIFDXF1b3RlQXNzZXRTdHIEDWRvU2FuaXR5Q2hlY2sDCQECIT0CCQBkAgUHdG9SZXBheQUKdG9XaXRoZHJhdwUHX2Ftb3VudAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgh0b1JlcGF5PQkApAMBBQd0b1JlcGF5Ag4gKyB0b1dpdGhkcmF3PQkApAMBBQp0b1dpdGhkcmF3AgQgIT0gCQCkAwEFB19hbW91bnQFA25pbAMJAAACBQ1kb1Nhbml0eUNoZWNrBQ1kb1Nhbml0eUNoZWNrBAlkb1Vuc3Rha2UDCQBmAgUKdG9XaXRoZHJhdwAABAlkb1Vuc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACDndpdGhkcmF3TG9ja2VkCQDMCAIFCnRvV2l0aGRyYXcFA25pbAUDbmlsAwkAAAIFCWRvVW5zdGFrZQUJZG9VbnN0YWtlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQlkb1Vuc3Rha2UFCWRvVW5zdGFrZQQWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgMJAGYCBQd0b1JlcGF5AAAEB2RvUmVwYXkJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIFcmVwYXkJAMwIAgUHX3RyYWRlcgkAzAgCBQd0b1JlcGF5CQDMCAIFB2Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFB2RvUmVwYXkFB2RvUmVwYXkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b1JlcGF5CQDZBAEFB2Fzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFFnJldHVybkNvbGxhdGVyYWxBY3Rpb24FFnJldHVybkNvbGxhdGVyYWxBY3Rpb24JAM4IAgkAzggCCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPb2xkUG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4FF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD29sZFBvc2l0aW9uU2l6ZQMJAGYCBQp0b1dpdGhkcmF3AAAJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUKdG9XaXRoZHJhdwUDbmlsCQENdXBkYXRlQmFsYW5jZQEJAGUCCQEIY2JhbGFuY2UABQdfYW1vdW50BRVzd2l0Y2hQb3NpdGlvblRvUXVvdGUFFnJldHVybkNvbGxhdGVyYWxBY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY2xvc2VQb3NpdGlvbgIFX3NpemUUX21pblF1b3RlQXNzZXRBbW91bnQEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkBD2dldEFjdHVhbENhbGxlcgEFAWkEDl90cmFkZXJBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUHX3RyYWRlcgIOSW52YWxpZCBjYWxsZXIDAwMDAwMJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BBQdfdHJhZGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAGCQBnAgAABQVfc2l6ZQYJAGYCAAAFFF9taW5RdW90ZUFzc2V0QW1vdW50BgkBDmlzTWFya2V0Q2xvc2VkAAkAAgECIEludmFsaWQgY2xvc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDA2Njk2MTY3MTAxCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA2Njk2MTY3MTAxAl8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDY2OTYxNjcxMDECXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNjY5NjE2NzEwMQJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA2Njk2MTY3MTAxAl80BA0kdDA2NzEwNzcyMjM3AwkAZgIJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUFBV9zaXplBApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBA0kdDA2NzY5ODY3OTIwCQEKc3dhcE91dHB1dAMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAUFX3NpemUGBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUNJHQwNjc2OTg2NzkyMAJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDY3Njk4Njc5MjACXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDY3Njk4Njc5MjACXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA2NzY5ODY3OTIwAl80BBVleGNoYW5nZWRQb3NpdGlvblNpemUDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAQEtAQUFX3NpemUFBV9zaXplBA0kdDA2ODAxMTY4MTY1CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEE29sZFBvc2l0aW9uTm90aW9uYWwIBQ0kdDA2ODAxMTY4MTY1Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwNjgwMTE2ODE2NQJfMgQCbXIJARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBA1yZWFsaXplZFJhdGlvCQEEZGl2ZAIJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUEC3JlYWxpemVkUG5sCQEEbXVsZAIFDXVucmVhbGl6ZWRQbmwFDXJlYWxpemVkUmF0aW8EEnJlbWFpbk1hcmdpbkJlZm9yZQgJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwCXzEEDSR0MDY4NjY2Njg4OTQJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC3JlYWxpemVkUG5sBAJ4MQgFDSR0MDY4NjY2Njg4OTQCXzEED3Bvc2l0aW9uQmFkRGVidAgFDSR0MDY4NjY2Njg4OTQCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwNjg2NjY2ODg5NAJfMwQSdW5yZWFsaXplZFBubEFmdGVyCQBlAgUNdW5yZWFsaXplZFBubAULcmVhbGl6ZWRQbmwEEnJlbWFpbk9wZW5Ob3Rpb25hbAMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkAZQIJAGUCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BRJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCCQBkAgUSdW5yZWFsaXplZFBubEFmdGVyBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAkBA2FicwEFEnJlbWFpbk9wZW5Ob3Rpb25hbAQRbmV3UG9zaXRpb25NYXJnaW4DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQEEbXVsZAIJAGQCBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUSdW5yZWFsaXplZFBubEFmdGVyBQJtcgUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkBBG11bGQCCQBlAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFEnVucmVhbGl6ZWRQbmxBZnRlcgUCbXIFEnVucmVhbGl6ZWRQbmxBZnRlcgQRb3Blbk5vdGlvbmFsRGVsdGEJAGUCBRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwED25ld1Bvc2l0aW9uU2l6ZQkAZAIFD29sZFBvc2l0aW9uU2l6ZQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplBBRuZXdQb3NpdGlvbkxzdFVwZENQRgkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9uZXdQb3NpdGlvblNpemUEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABRFvcGVuTm90aW9uYWxEZWx0YQMDCQECIT0CBRRfbWluUXVvdGVBc3NldEFtb3VudAAACQBmAgUUX21pblF1b3RlQXNzZXRBbW91bnQFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQHCQACAQkArAICCQCsAgIJAKwCAgINTGltaXQgZXJyb3I6IAkApAMBBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50AgMgPCAJAKQDAQUUX21pblF1b3RlQXNzZXRBbW91bnQJAKEKDwUPbmV3UG9zaXRpb25TaXplBRFuZXdQb3NpdGlvbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGBQ9wb3NpdGlvbkJhZERlYnQFC3JlYWxpemVkUG5sCQBlAgUScmVtYWluTWFyZ2luQmVmb3JlCQBkAgURbmV3UG9zaXRpb25NYXJnaW4FEnVucmVhbGl6ZWRQbmxBZnRlcgUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQBlAgkBEG9wZW5JbnRlcmVzdExvbmcAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAABRFvcGVuTm90aW9uYWxEZWx0YQAACQBlAgkBEW9wZW5JbnRlcmVzdFNob3J0AAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQURb3Blbk5vdGlvbmFsRGVsdGEAAAMJAGYCBQVfc2l6ZQkBA2FicwEFD29sZFBvc2l0aW9uU2l6ZQkAAgECIEludmFsaWQgY2xvc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDA3MTE3ODcxNTk3CQEVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAgUHX3RyYWRlcgYEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQ0kdDA3MTE3ODcxNTk3Al8xBA9wb3NpdGlvbkJhZERlYnQIBQ0kdDA3MTE3ODcxNTk3Al8yBAtyZWFsaXplZFBubAgFDSR0MDcxMTc4NzE1OTcCXzMEDW1hcmdpblRvVmF1bHQIBQ0kdDA3MTE3ODcxNTk3Al80BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNzExNzg3MTU5NwJfNQQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNzExNzg3MTU5NwJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDcxMTc4NzE1OTcCXzcEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDA3MTE3ODcxNTk3Al84BAJ4MggFDSR0MDcxMTc4NzE1OTcCXzkEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNzExNzg3MTU5NwNfMTAED3RvdGFsU2hvcnRBZnRlcggFDSR0MDcxMTc4NzE1OTcDXzExBBp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcggFDSR0MDcxMTc4NzE1OTcDXzEyBBt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA3MTE3ODcxNTk3A18xMwMDCQECIT0CBRRfbWluUXVvdGVBc3NldEFtb3VudAAACQBmAgUUX21pblF1b3RlQXNzZXRBbW91bnQFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQHCQACAQkArAICCQCsAgIJAKwCAgINTGltaXQgZXJyb3I6IAkApAMBBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50AgMgPCAJAKQDAQUUX21pblF1b3RlQXNzZXRBbW91bnQJAKEKDwAAAAAAAAAABQ9wb3NpdGlvbkJhZERlYnQFC3JlYWxpemVkUG5sBQ1tYXJnaW5Ub1ZhdWx0BRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIED25ld1Bvc2l0aW9uU2l6ZQgFDSR0MDY3MTA3NzIyMzcCXzEEEW5ld1Bvc2l0aW9uTWFyZ2luCAUNJHQwNjcxMDc3MjIzNwJfMgQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA2NzEwNzcyMjM3Al8zBBRuZXdQb3NpdGlvbkxzdFVwZENQRggFDSR0MDY3MTA3NzIyMzcCXzQED3Bvc2l0aW9uQmFkRGVidAgFDSR0MDY3MTA3NzIyMzcCXzUEC3JlYWxpemVkUG5sCAUNJHQwNjcxMDc3MjIzNwJfNgQNbWFyZ2luVG9WYXVsdAgFDSR0MDY3MTA3NzIyMzcCXzcEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA2NzEwNzcyMjM3Al84BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA2NzEwNzcyMjM3Al85BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNjcxMDc3MjIzNwNfMTAEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDA2NzEwNzcyMjM3A18xMQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA2NzEwNzcyMjM3A18xMgQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNjcxMDc3MjIzNwNfMTMEGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNjcxMDc3MjIzNwNfMTQEG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcggFDSR0MDY3MTA3NzIyMzcDXzE1AwkAZgIFD3Bvc2l0aW9uQmFkRGVidAAACQACAQImVW5hYmxlIHRvIGNsb3NlIHBvc2l0aW9uIHdpdGggYmFkIGRlYnQEDndpdGhkcmF3QW1vdW50CQEDYWJzAQUNbWFyZ2luVG9WYXVsdAQKYW1tQmFsYW5jZQkAZQIJAQhjYmFsYW5jZQAFDndpdGhkcmF3QW1vdW50BA0kdDA3MjQ0NjcyNjUzAwkAZgIAAAUKYW1tQmFsYW5jZQkAlAoCAAAJAQNhYnMBBQphbW1CYWxhbmNlCQCUCgIFCmFtbUJhbGFuY2UAAAQNYW1tTmV3QmFsYW5jZQgFDSR0MDcyNDQ2NzI2NTMCXzEEA3gxMQgFDSR0MDcyNDQ2NzI2NTMCXzIEDSR0MDcyNjYwNzI3MTQJARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQUHX3RyYWRlcgQIYm9ycm93ZWQIBQ0kdDA3MjY2MDcyNzE0Al8xBAdhc3NldElkCAUNJHQwNzI2NjA3MjcxNAJfMgQNJHQwNzI3Mjk3MzU4OAMJAGYCBQhib3Jyb3dlZAAAAwkAZwIFDndpdGhkcmF3QW1vdW50BQhib3Jyb3dlZAQHZG9SZXBheQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAgVyZXBheQkAzAgCBQdfdHJhZGVyCQDMCAIFCGJvcnJvd2VkCQDMCAIFB2Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFB2RvUmVwYXkFB2RvUmVwYXkJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5fdHJhZGVyQWRkcmVzcwUIYm9ycm93ZWQJANkEAQUHYXNzZXRJZAUDbmlsCQBlAgUOd2l0aGRyYXdBbW91bnQFCGJvcnJvd2VkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA9yZWFsaXplQW5kQ2xvc2UJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIYcmVhbGl6ZVBhcnRpYWxseUFuZENsb3NlCQDMCAIFB190cmFkZXIJAMwIAgUOd2l0aGRyYXdBbW91bnQJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUPcmVhbGl6ZUFuZENsb3NlBQ9yZWFsaXplQW5kQ2xvc2UJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5fdHJhZGVyQWRkcmVzcwUOd2l0aGRyYXdBbW91bnQJANkEAQUHYXNzZXRJZAUDbmlsAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUDbmlsBQ53aXRoZHJhd0Ftb3VudAMJAAACBQ0kdDA3MjcyOTczNTg4BQ0kdDA3MjcyOTczNTg4BBNxdW90ZVdpdGhkcmF3QW1vdW50CAUNJHQwNzI3Mjk3MzU4OAJfMgQUc2VuZENvbGxhdGVyYWxBY3Rpb24IBQ0kdDA3MjcyOTczNTg4Al8xBAd1bnN0YWtlAwkAZgIFE3F1b3RlV2l0aGRyYXdBbW91bnQAAAQHdW5zdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIOd2l0aGRyYXdMb2NrZWQJAMwIAgUTcXVvdGVXaXRoZHJhd0Ftb3VudAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAM4IAgMJAAACBQ9uZXdQb3NpdGlvblNpemUAAAkBDmRlbGV0ZVBvc2l0aW9uAQUHX3RyYWRlcgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPbmV3UG9zaXRpb25TaXplBRFuZXdQb3NpdGlvbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCQEJdXBkYXRlQW1tCAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyBRp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcgUbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyAwkAZgIFE3F1b3RlV2l0aGRyYXdBbW91bnQAAAkBCHdpdGhkcmF3AgUOX3RyYWRlckFkZHJlc3MFE3F1b3RlV2l0aGRyYXdBbW91bnQFA25pbAkBDXVwZGF0ZUJhbGFuY2UBBQ1hbW1OZXdCYWxhbmNlBRRzZW5kQ29sbGF0ZXJhbEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlsaXF1aWRhdGUBB190cmFkZXIEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQPc3BvdE1hcmdpblJhdGlvCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQLbWFyZ2luUmF0aW8DCQEWaXNPdmVyRmx1Y3R1YXRpb25MaW1pdAAEEW9yYWNsZU1hcmdpblJhdGlvCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFEVBOTF9PUFRJT05fT1JBQ0xFCQEEdm1heAIFD3Nwb3RNYXJnaW5SYXRpbwURb3JhY2xlTWFyZ2luUmF0aW8FD3Nwb3RNYXJnaW5SYXRpbwMDAwMDCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwULbWFyZ2luUmF0aW8JARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAcGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUHX3RyYWRlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQABgkBDmlzTWFya2V0Q2xvc2VkAAkAAgECE1VuYWJsZSB0byBsaXF1aWRhdGUDAwMJAGYCBQ9zcG90TWFyZ2luUmF0aW8JARNsaXF1aWRhdGlvbkZlZVJhdGlvAAkAZgIJARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAAAAcJAGYCBQxERUNJTUFMX1VOSVQJARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAHBA0kdDA3NTkwOTc2MDU5CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA3NTkwOTc2MDU5Al8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDc1OTA5NzYwNTkCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNzU5MDk3NjA1OQJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA3NTkwOTc2MDU5Al80BApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CQEbZ2V0UGFydGlhbExpcXVpZGF0aW9uQW1vdW50AgUHX3RyYWRlcgUPb2xkUG9zaXRpb25TaXplBA0kdDA3NjI4NDc2Mzg4CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEE29sZFBvc2l0aW9uTm90aW9uYWwIBQ0kdDA3NjI4NDc2Mzg4Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwNzYyODQ3NjM4OAJfMgQNJHQwNzYzOTY3NjU4MwkBCXN3YXBJbnB1dAIFBWlzQWRkBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BBVleGNoYW5nZWRQb3NpdGlvblNpemUIBQ0kdDA3NjM5Njc2NTgzAl8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNzYzOTY3NjU4MwJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNzYzOTY3NjU4MwJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDc2Mzk2NzY1ODMCXzQEEGxpcXVpZGF0aW9uUmF0aW8JAQRkaXZkAgkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQkBA2FicwEFD29sZFBvc2l0aW9uU2l6ZQQLcmVhbGl6ZWRQbmwJAQRtdWxkAgUNdW5yZWFsaXplZFBubAUQbGlxdWlkYXRpb25SYXRpbwQNJHQwNzY4NzI3NzEwNQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULcmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDc2ODcyNzcxMDUCXzEEB2JhZERlYnQIBQ0kdDA3Njg3Mjc3MTA1Al8yBA5mdW5kaW5nUGF5bWVudAgFDSR0MDc2ODcyNzcxMDUCXzMEEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIFDXVucmVhbGl6ZWRQbmwFC3JlYWxpemVkUG5sBBJyZW1haW5PcGVuTm90aW9uYWwDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQBlAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkAZAIFEnVucmVhbGl6ZWRQbmxBZnRlcgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQSbGlxdWlkYXRpb25QZW5hbHR5CQEEbXVsZAIFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQJARNsaXF1aWRhdGlvbkZlZVJhdGlvAAQPZmVlVG9MaXF1aWRhdG9yCQBpAgUSbGlxdWlkYXRpb25QZW5hbHR5AAIECmZlZVRvVmF1bHQJAGUCBRJsaXF1aWRhdGlvblBlbmFsdHkFD2ZlZVRvTGlxdWlkYXRvcgQRbmV3UG9zaXRpb25NYXJnaW4JAGUCBQxyZW1haW5NYXJnaW4FEmxpcXVpZGF0aW9uUGVuYWx0eQQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUEF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsCQEDYWJzAQUScmVtYWluT3Blbk5vdGlvbmFsBBFvcGVuTm90aW9uYWxEZWx0YQkAZQIFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAQUbmV3UG9zaXRpb25Mc3RVcGRDUEYJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAURb3Blbk5vdGlvbmFsRGVsdGEECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABRJsaXF1aWRhdGlvblBlbmFsdHkEDSR0MDc4MzQ2Nzg0NzUDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1uZXdBbW1CYWxhbmNlCAUNJHQwNzgzNDY3ODQ3NQJfMQQDeDExCAUNJHQwNzgzNDY3ODQ3NQJfMgQNJHQwNzg0ODM3ODUzNwkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDc4NDgzNzg1MzcCXzEEB2Fzc2V0SWQIBQ0kdDA3ODQ4Mzc4NTM3Al8yBBVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwDCQBmAgUIYm9ycm93ZWQAAAQQY29sbGF0ZXJhbFRvU2VsbAkBBG11bGQCBQhib3Jyb3dlZAUQbGlxdWlkYXRpb25SYXRpbwQPcmVhbGl6ZUFuZENsb3NlCQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACEHJlYWxpemVQYXJ0aWFsbHkJAMwIAgUHX3RyYWRlcgkAzAgCBQdhc3NldElkCQDMCAIFEGNvbGxhdGVyYWxUb1NlbGwFA25pbAUDbmlsAwkAAAIFD3JlYWxpemVBbmRDbG9zZQUPcmVhbGl6ZUFuZENsb3NlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBRVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwFFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAQHdW5zdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIOd2l0aGRyYXdMb2NrZWQJAMwIAgUSbGlxdWlkYXRpb25QZW5hbHR5BQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBBBkZXBvc2l0SW5zdXJhbmNlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAgdhZGRGcmVlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUKZmVlVG9WYXVsdAUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD25ld1Bvc2l0aW9uU2l6ZQURbmV3UG9zaXRpb25NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxzdFVwZENQRgkBCXVwZGF0ZUFtbQgFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARBvcGVuSW50ZXJlc3RMb25nAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAURb3Blbk5vdGlvbmFsRGVsdGEAAAkAZQIJARFvcGVuSW50ZXJlc3RTaG9ydAADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUFEW9wZW5Ob3Rpb25hbERlbHRhAAAJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUPZmVlVG9MaXF1aWRhdG9yCQENdXBkYXRlQmFsYW5jZQEFDW5ld0FtbUJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDgwMjE2ODA3MTEJARVpbnRlcm5hbENsb3NlUG9zaXRpb24CBQdfdHJhZGVyBwQCeDEIBQ0kdDA4MDIxNjgwNzExAl8xBAdiYWREZWJ0CAUNJHQwODAyMTY4MDcxMQJfMgQCeDIIBQ0kdDA4MDIxNjgwNzExAl8zBAJ4MwgFDSR0MDgwMjE2ODA3MTECXzQEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA4MDIxNjgwNzExAl81BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA4MDIxNjgwNzExAl82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwODAyMTY4MDcxMQJfNwQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDgwMjE2ODA3MTECXzgEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQ0kdDA4MDIxNjgwNzExAl85BA50b3RhbExvbmdBZnRlcggFDSR0MDgwMjE2ODA3MTEDXzEwBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA4MDIxNjgwNzExA18xMQQadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA4MDIxNjgwNzExA18xMgQbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCAUNJHQwODAyMTY4MDcxMQNfMTMEEmxpcXVpZGF0aW9uUGVuYWx0eQkBBG11bGQCBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CQETbGlxdWlkYXRpb25GZWVSYXRpbwAED2ZlZVRvTGlxdWlkYXRvcgkAaQIFEmxpcXVpZGF0aW9uUGVuYWx0eQACBApmZWVUb1ZhdWx0CQBlAgUSbGlxdWlkYXRpb25QZW5hbHR5BQ9mZWVUb0xpcXVpZGF0b3IECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABRJsaXF1aWRhdGlvblBlbmFsdHkEDSR0MDgxMTE5ODEyNDgDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1uZXdBbW1CYWxhbmNlCAUNJHQwODExMTk4MTI0OAJfMQQDeDExCAUNJHQwODExMTk4MTI0OAJfMgQNJHQwODEyNTY4MTMxMAkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDgxMjU2ODEzMTACXzEEB2Fzc2V0SWQIBQ0kdDA4MTI1NjgxMzEwAl8yBBVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwDCQBmAgUIYm9ycm93ZWQAAAQPcmVhbGl6ZUFuZENsb3NlCQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACGHJlYWxpemVQYXJ0aWFsbHlBbmRDbG9zZQkAzAgCBQdfdHJhZGVyCQDMCAIAAAkAzAgCBQdhc3NldElkBQNuaWwFA25pbAMJAAACBQ9yZWFsaXplQW5kQ2xvc2UFD3JlYWxpemVBbmRDbG9zZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUVZG9MaXF1aWRhdGVDb2xsYXRlcmFsBRVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwEAXgDCQBmAgUHYmFkRGVidAAABAtsb2NrQmFkRGVidAkA/AcECQEMdmF1bHRBZGRyZXNzAAIVZXhjaGFuZ2VGcmVlQW5kTG9ja2VkCQDMCAIFB2JhZERlYnQFA25pbAUDbmlsAwkAAAIFC2xvY2tCYWREZWJ0BQtsb2NrQmFkRGVidAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUBeAUBeAQHdW5zdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIOd2l0aGRyYXdMb2NrZWQJAMwIAgUSbGlxdWlkYXRpb25QZW5hbHR5BQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBBBkZXBvc2l0SW5zdXJhbmNlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAgdhZGRGcmVlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUKZmVlVG9WYXVsdAUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAM4IAgkAzggCCQEOZGVsZXRlUG9zaXRpb24BBQdfdHJhZGVyCQEJdXBkYXRlQW1tCAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyBRp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcgUbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFD2ZlZVRvTGlxdWlkYXRvcgkBDXVwZGF0ZUJhbGFuY2UBBQ1uZXdBbW1CYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnBheUZ1bmRpbmcABARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAkBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAAAwMDCQBmAgUVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQkArAICCQCsAgIJAKwCAgIhSW52YWxpZCBmdW5kaW5nIGJsb2NrIHRpbWVzdGFtcDogCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wAgMgPCAJAKQDAQUVZnVuZGluZ0Jsb2NrVGltZXN0YW1wBA91bmRlcmx5aW5nUHJpY2UJAQ5nZXRPcmFjbGVQcmljZQAEDSR0MDgzMTgyODMyNDQJAQpnZXRGdW5kaW5nAAQUc2hvcnRQcmVtaXVtRnJhY3Rpb24IBQ0kdDA4MzE4MjgzMjQ0Al8xBBNsb25nUHJlbWl1bUZyYWN0aW9uCAUNJHQwODMxODI4MzI0NAJfMgkBDXVwZGF0ZUZ1bmRpbmcFCQBkAgUVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCQEUZnVuZGluZ1BlcmlvZFNlY29uZHMACQBkAgkBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAUTbG9uZ1ByZW1pdW1GcmFjdGlvbgkAZAIJASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ABRRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCBRNsb25nUHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UJAQRkaXZkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlAAQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABA0kdDA4MzY3NjgzODExCQEUZ2V0U3luY1Rlcm1pbmFsUHJpY2UDCQEOZ2V0T3JhY2xlUHJpY2UABQdfcXRBc3RSBQdfYnNBc3RSBBNuZXdRdW90ZUFzc2V0V2VpZ2h0CAUNJHQwODM2NzY4MzgxMQJfMQQSbmV3QmFzZUFzc2V0V2VpZ2h0CAUNJHQwODM2NzY4MzgxMQJfMgQNbWFyZ2luVG9WYXVsdAgFDSR0MDgzNjc2ODM4MTECXzMEDWRvRXhjaGFuZ2VQbkwDCQECIT0CBQ1tYXJnaW5Ub1ZhdWx0AAAEDWRvRXhjaGFuZ2VQbkwJAPwHBAkBDHZhdWx0QWRkcmVzcwACFWV4Y2hhbmdlRnJlZUFuZExvY2tlZAkAzAgCBQ1tYXJnaW5Ub1ZhdWx0BQNuaWwFA25pbAMJAAACBQ1kb0V4Y2hhbmdlUG5MBQ1kb0V4Y2hhbmdlUG5MBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQ1kb0V4Y2hhbmdlUG5MBQ1kb0V4Y2hhbmdlUG5MCQDOCAIJARB1cGRhdGVBbW1XZWlnaHRzAgUTbmV3UXVvdGVBc3NldFdlaWdodAUSbmV3QmFzZUFzc2V0V2VpZ2h0CQEKYXBwZW5kVHdhcAEJAQRkaXZkAgkBBG11bGQCBQdfcXRBc3RSBRNuZXdRdW90ZUFzc2V0V2VpZ2h0CQEEbXVsZAIFB19ic0FzdFIFEm5ld0Jhc2VBc3NldFdlaWdodAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpASd2aWV3X2NhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQBB190cmFkZXIEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQNJHQwODQzODA4NDQ4MQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwODQzODA4NDQ4MQJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDA4NDM4MDg0NDgxAl8yBANwb24IBQ0kdDA4NDM4MDg0NDgxAl8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDg0MzgwODQ0ODECXzQEDSR0MDg0NDg0ODQ1ODUJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQQcG9zaXRpb25Ob3Rpb25hbAgFDSR0MDg0NDg0ODQ1ODUCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA4NDQ4NDg0NTg1Al8yBA0kdDA4NDU4ODg0NzYwCQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFDHBvc2l0aW9uU2l6ZQUOcG9zaXRpb25NYXJnaW4FEXBvc2l0aW9uTHN0VXBkQ1BGBQ11bnJlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDA4NDU4ODg0NzYwAl8xBAdiYWREZWJ0CAUNJHQwODQ1ODg4NDc2MAJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDA4NDU4ODg0NzYwAl8zCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAQFzAQUMcmVtYWluTWFyZ2luCQEBcwEFDmZ1bmRpbmdQYXltZW50CQEBcwEJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIJAQFzAQUNdW5yZWFsaXplZFBubAkBAXMBBQdiYWREZWJ0CQEBcwEFEHBvc2l0aW9uTm90aW9uYWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVdmlld19nZXRQZWdBZGp1c3RDb3N0AQZfcHJpY2UEB19xdEFzdFIJAQZxdEFzdFIABAdfYnNBc3RSCQEGYnNBc3RSAAQGcmVzdWx0CQEUZ2V0U3luY1Rlcm1pbmFsUHJpY2UDBQZfcHJpY2UFB19xdEFzdFIFB19ic0FzdFIJAAIBCQCkAwEIBQZyZXN1bHQCXzMBaQEYdmlld19nZXRUZXJtaW5hbEFtbVByaWNlAAQNJHQwODUxNzY4NTI1NwkBE2dldFRlcm1pbmFsQW1tU3RhdGUABBl0ZXJtaW5hbFF1b3RlQXNzZXRSZXNlcnZlCAUNJHQwODUxNzY4NTI1NwJfMQQYdGVybWluYWxCYXNlQXNzZXRSZXNlcnZlCAUNJHQwODUxNzY4NTI1NwJfMgQFcHJpY2UJAQRkaXZkAgkBBG11bGQCBRl0ZXJtaW5hbFF1b3RlQXNzZXRSZXNlcnZlCQEGcXRBc3RXAAkBBG11bGQCBRh0ZXJtaW5hbEJhc2VBc3NldFJlc2VydmUJAQZic0FzdFcACQACAQkApAMBBQVwcmljZQFpAQ92aWV3X2dldEZ1bmRpbmcABA91bmRlcmx5aW5nUHJpY2UJAQ5nZXRPcmFjbGVQcmljZQAEDSR0MDg1NDcyODU1MzQJAQpnZXRGdW5kaW5nAAQUc2hvcnRQcmVtaXVtRnJhY3Rpb24IBQ0kdDA4NTQ3Mjg1NTM0Al8xBBNsb25nUHJlbWl1bUZyYWN0aW9uCAUNJHQwODU0NzI4NTUzNAJfMgQLbG9uZ0Z1bmRpbmcJAQRkaXZkAgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlBAxzaG9ydEZ1bmRpbmcJAQRkaXZkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQkAAgEJAKwCAgkArAICCQCsAgIJAQFzAQULbG9uZ0Z1bmRpbmcJAQFzAQUMc2hvcnRGdW5kaW5nCQEBcwEJARBnZXRUd2FwU3BvdFByaWNlAAkBAXMBCQEOZ2V0T3JhY2xlUHJpY2UAAWkBGHZpZXdfZ2V0Qm9ycm93ZWRCeVRyYWRlcgEHX3RyYWRlcgQNJHQwODU4MjA4NTg3NAkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDg1ODIwODU4NzQCXzEEB2Fzc2V0SWQIBQ0kdDA4NTgyMDg1ODc0Al8yCQACAQkArAICCQEBcwEFCGJvcnJvd2VkBQdhc3NldElkAWkBEGNvbXB1dGVTcG90UHJpY2UABAZyZXN1bHQJAQxnZXRTcG90UHJpY2UACQCUCgIFA25pbAUGcmVzdWx0AWkBH2NvbXB1dGVGZWVGb3JUcmFkZXJXaXRoQXJ0aWZhY3QCB190cmFkZXILX2FydGlmYWN0SWQEBnJlc3VsdAkBGGdldEZvclRyYWRlcldpdGhBcnRpZmFjdAIFB190cmFkZXIFC19hcnRpZmFjdElkCQCUCgIFA25pbAUGcmVzdWx0AQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkBDmFkbWluUHVibGljS2V5AHqiZSg=", "height": 2381398, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7ewuBT7MRXJpdmEj51db6hoPwLAcnd4o3JzHuK6srhmT Next: F7Fmc9ZzKXaZG2poZBc1ofzf5Ai72Ed7G3ciscLJYtui Diff:
OldNewDifferences
11791179 let hS = de(ga, hH, hJ, eL)
11801180 let dn = hS._1
11811181 let do = hS._2
1182- let dj = hS._3
11831182 let eH = hM
11841183 let hT = (el - eL)
11851184 let hU = if ((ga > 0))
16661665 let eL = aU(el, je)
16671666 let jf = de(ga, hH, hJ, el)._1
16681667 let jg = de(ga, hH, hJ, eL)
1669- let dn = jg._1
1668+ let eg = jg._1
16701669 let jh = jg._2
16711670 let dj = jg._3
16721671 let hT = (el - eL)
16771676 let ji = if ((ga > 0))
16781677 then (aU((hX + hT), jd) - hT)
16791678 else (aU((hX - hT), jd) - hT)
1679+ let jj = (hI - hX)
16801680 let hV = (ga + eG)
1681- let jj = cn(hV)
1682- let eR = (bL() - eH)
1681+ let jk = cn(hV)
1682+ let eR = (bL() - jj)
16831683 if (if ((iX != 0))
16841684 then (iX > eH)
16851685 else false)
16861686 then throw(((("Limit error: " + toString(eH)) + " < ") + toString(iX)))
1687- else $Tuple15(hV, ji, hX, jj, jh, eL, (jf - (ji + hT)), cR, cS, eO, eR, (cc() - (if ((hV > 0))
1687+ else $Tuple15(hV, ji, hX, jk, jh, eL, (jf - (ji + hT)), cR, cS, eO, eR, (cc() - (if ((hV > 0))
16881688 then bb(eG)
16891689 else 0)), (cb() - (if ((0 > hV))
16901690 then bb(eG)
16911691 else 0)), (bN() - (if ((hV > 0))
1692- then eH
1692+ then jj
16931693 else 0)), (bM() - (if ((0 > hV))
1694- then eH
1694+ then jj
16951695 else 0)))
16961696 }
16971697 else if ((gP > bb(ga)))
16981698 then throw("Invalid closePosition parameters")
16991699 else {
1700- let jk = eI(cq, true)
1701- let eH = jk._1
1702- let jh = jk._2
1703- let eL = jk._3
1704- let eM = jk._4
1705- let cR = jk._5
1706- let cS = jk._6
1707- let eO = jk._7
1708- let eR = jk._8
1709- let eh = jk._9
1710- let eP = jk._10
1711- let eQ = jk._11
1712- let hZ = jk._12
1713- let ia = jk._13
1700+ let jl = eI(cq, true)
1701+ let eH = jl._1
1702+ let jh = jl._2
1703+ let eL = jl._3
1704+ let eM = jl._4
1705+ let cR = jl._5
1706+ let cS = jl._6
1707+ let eO = jl._7
1708+ let eR = jl._8
1709+ let eh = jl._9
1710+ let eP = jl._10
1711+ let eQ = jl._11
1712+ let hZ = jl._12
1713+ let ia = jl._13
17141714 if (if ((iX != 0))
17151715 then (iX > eH)
17161716 else false)
17201720 let hV = ja._1
17211721 let ji = ja._2
17221722 let hX = ja._3
1723- let jj = ja._4
1723+ let jk = ja._4
17241724 let jh = ja._5
17251725 let eL = ja._6
17261726 let eM = ja._7
17351735 if ((jh > 0))
17361736 then throw("Unable to close position with bad debt")
17371737 else {
1738- let jl = bb(eM)
1739- let jm = (bD() - jl)
1740- let jn = if ((0 > jm))
1741- then $Tuple2(0, bb(jm))
1742- else $Tuple2(jm, 0)
1743- let jo = jn._1
1744- let jp = jn._2
1745- let jq = ge(cq)
1746- let iN = jq._1
1747- let iO = jq._2
1748- let jr = if ((iN > 0))
1749- then if ((jl >= iN))
1738+ let jm = bb(eM)
1739+ let jn = (bD() - jm)
1740+ let jo = if ((0 > jn))
1741+ then $Tuple2(0, bb(jn))
1742+ else $Tuple2(jn, 0)
1743+ let jp = jo._1
1744+ let jq = jo._2
1745+ let jr = ge(cq)
1746+ let iN = jr._1
1747+ let iO = jr._2
1748+ let js = if ((iN > 0))
1749+ then if ((jm >= iN))
17501750 then {
17511751 let iW = invoke(ax(), "repay", [cq, iN, iO], nil)
17521752 if ((iW == iW))
1753- then $Tuple2([ScriptTransfer(iY, iN, fromBase58String(iO))], (jl - iN))
1753+ then $Tuple2([ScriptTransfer(iY, iN, fromBase58String(iO))], (jm - iN))
17541754 else throw("Strict value is not equal to itself.")
17551755 }
17561756 else {
1757- let js = invoke(ax(), "realizePartiallyAndClose", [cq, jl, iO], nil)
1758- if ((js == js))
1759- then $Tuple2([ScriptTransfer(iY, jl, fromBase58String(iO))], 0)
1757+ let jt = invoke(ax(), "realizePartiallyAndClose", [cq, jm, iO], nil)
1758+ if ((jt == jt))
1759+ then $Tuple2([ScriptTransfer(iY, jm, fromBase58String(iO))], 0)
17601760 else throw("Strict value is not equal to itself.")
17611761 }
1762- else $Tuple2(nil, jl)
1763- if ((jr == jr))
1762+ else $Tuple2(nil, jm)
1763+ if ((js == js))
17641764 then {
1765- let jt = jr._2
1766- let ju = jr._1
1767- let jv = if ((jt > 0))
1765+ let ju = js._2
1766+ let jv = js._1
1767+ let jw = if ((ju > 0))
17681768 then {
1769- let jv = invoke(as(), "withdrawLocked", [jt], nil)
1770- if ((jv == jv))
1769+ let jw = invoke(as(), "withdrawLocked", [ju], nil)
1770+ if ((jw == jw))
17711771 then nil
17721772 else throw("Strict value is not equal to itself.")
17731773 }
17741774 else nil
1775- if ((jv == jv))
1775+ if ((jw == jw))
17761776 then {
17771777 let ib = invoke(at(), "notifyNotional", [cq, 0], nil)
17781778 if ((ib == ib))
17791779 then (((((if ((hV == 0))
17801780 then hi(cq)
1781- else gO(cq, hV, ji, hX, jj)) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ (if ((jt > 0))
1782- then hj(iY, jt)
1783- else nil)) ++ hm(jo)) ++ ju)
1781+ else gO(cq, hV, ji, hX, jk)) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ (if ((ju > 0))
1782+ then hj(iY, ju)
1783+ else nil)) ++ hm(jp)) ++ jv)
17841784 else throw("Strict value is not equal to itself.")
17851785 }
17861786 else throw("Strict value is not equal to itself.")
17991799 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
18001800 if ((hF == hF))
18011801 then {
1802- let jw = ev(cq, aO)
1802+ let jx = ev(cq, aO)
18031803 let iK = if (dX())
18041804 then {
1805- let jx = ev(cq, aP)
1806- bc(jw, jx)
1805+ let jy = ev(cq, aP)
1806+ bc(jx, jy)
18071807 }
1808- else jw
1808+ else jx
18091809 if (if (if (if (if (!(ci(iK, bS(), false)))
18101810 then true
18111811 else !(cx(cq)))
18161816 then true
18171817 else dH())
18181818 then throw("Unable to liquidate")
1819- else if (if (if ((jw > bT()))
1819+ else if (if (if ((jx > bT()))
18201820 then (bU() > 0)
18211821 else false)
18221822 then (aL > bU())
18231823 else false)
18241824 then {
1825- let jy = cp(cq)
1826- let ga = jy._1
1827- let hH = jy._2
1828- let hI = jy._3
1829- let hJ = jy._4
1825+ let jz = cp(cq)
1826+ let ga = jz._1
1827+ let hH = jz._2
1828+ let hI = jz._3
1829+ let hJ = jz._4
18301830 let hK = if ((ga > 0))
18311831 then aG
18321832 else aF
18331833 let hL = (hK == aF)
18341834 let eH = eB(cq, ga)
1835- let jz = em(cq, aO)
1836- let hO = jz._1
1837- let el = jz._2
1838- let jA = cQ(hL, eH)
1839- let eG = jA._1
1840- let cR = jA._2
1841- let cS = jA._3
1842- let eO = jA._4
1843- let jB = aS(bb(eG), bb(ga))
1844- let eL = aU(el, jB)
1845- let jC = de(ga, hH, hJ, eL)
1846- let dn = jC._1
1847- let do = jC._2
1848- let dj = jC._3
1835+ let jA = em(cq, aO)
1836+ let hO = jA._1
1837+ let el = jA._2
1838+ let jB = cQ(hL, eH)
1839+ let eG = jB._1
1840+ let cR = jB._2
1841+ let cS = jB._3
1842+ let eO = jB._4
1843+ let jC = aS(bb(eG), bb(ga))
1844+ let eL = aU(el, jC)
1845+ let jD = de(ga, hH, hJ, eL)
1846+ let dn = jD._1
1847+ let do = jD._2
1848+ let dj = jD._3
18491849 let hT = (el - eL)
18501850 let hU = if ((ga > 0))
18511851 then ((hO - eH) - hT)
18521852 else ((hT + hO) - eH)
1853- let jD = aU(eH, bT())
1854- let jE = (jD / 2)
1855- let gr = (jD - jE)
1856- let ji = (dn - jD)
1853+ let jE = aU(eH, bT())
1854+ let jF = (jE / 2)
1855+ let gr = (jE - jF)
1856+ let ji = (dn - jE)
18571857 let hV = (ga + eG)
18581858 let hX = bb(hU)
1859- let jj = cn(hV)
1860- let eR = (bL() - eH)
1861- let jm = (bD() - jD)
1862- let jF = if ((0 > jm))
1863- then $Tuple2(0, bb(jm))
1864- else $Tuple2(jm, 0)
1865- let jG = jF._1
1866- let jp = jF._2
1867- let jH = ge(cq)
1868- let iN = jH._1
1869- let iO = jH._2
1870- let jI = if ((iN > 0))
1859+ let jj = (hI - hX)
1860+ let jk = cn(hV)
1861+ let eR = (bL() - jj)
1862+ let jn = (bD() - jE)
1863+ let jG = if ((0 > jn))
1864+ then $Tuple2(0, bb(jn))
1865+ else $Tuple2(jn, 0)
1866+ let jH = jG._1
1867+ let jq = jG._2
1868+ let jI = ge(cq)
1869+ let iN = jI._1
1870+ let iO = jI._2
1871+ let jJ = if ((iN > 0))
18711872 then {
1872- let jJ = aU(iN, jB)
1873- let js = invoke(ax(), "realizePartially", [cq, iO, jJ], nil)
1874- if ((js == js))
1873+ let jK = aU(iN, jC)
1874+ let jt = invoke(ax(), "realizePartially", [cq, iO, jK], nil)
1875+ if ((jt == jt))
18751876 then nil
18761877 else throw("Strict value is not equal to itself.")
18771878 }
18781879 else nil
1879- if ((jI == jI))
1880+ if ((jJ == jJ))
18801881 then {
1881- let jv = invoke(as(), "withdrawLocked", [jD], nil)
1882- if ((jv == jv))
1882+ let jw = invoke(as(), "withdrawLocked", [jE], nil)
1883+ if ((jw == jw))
18831884 then {
18841885 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
18851886 if ((iC == iC))
18861887 then {
18871888 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
18881889 if ((ib == ib))
1889- then (((gO(cq, hV, ji, hX, jj) ++ hb(cR, cS, eO, eR, (cc() - (if ((hV > 0))
1890+ then (((gO(cq, hV, ji, hX, jk) ++ hb(cR, cS, eO, eR, (cc() - (if ((hV > 0))
18901891 then bb(eG)
18911892 else 0)), (cb() - (if ((0 > hV))
18921893 then bb(eG)
18931894 else 0)), (bN() - (if ((hV > 0))
1894- then eH
1895+ then jj
18951896 else 0)), (bM() - (if ((0 > hV))
1896- then eH
1897- else 0)))) ++ hj(ch.caller, jE)) ++ hm(jG))
1897+ then jj
1898+ else 0)))) ++ hj(ch.caller, jF)) ++ hm(jH))
18981899 else throw("Strict value is not equal to itself.")
18991900 }
19001901 else throw("Strict value is not equal to itself.")
19041905 else throw("Strict value is not equal to itself.")
19051906 }
19061907 else {
1907- let jK = eI(cq, false)
1908- let eg = jK._1
1909- let do = jK._2
1910- let eh = jK._3
1911- let ei = jK._4
1912- let cR = jK._5
1913- let cS = jK._6
1914- let eO = jK._7
1915- let eR = jK._8
1916- let eH = jK._9
1917- let eP = jK._10
1918- let eQ = jK._11
1919- let hZ = jK._12
1920- let ia = jK._13
1921- let jD = aU(eH, bT())
1922- let jE = (jD / 2)
1923- let gr = (jD - jE)
1924- let jm = (bD() - jD)
1925- let jL = if ((0 > jm))
1926- then $Tuple2(0, bb(jm))
1927- else $Tuple2(jm, 0)
1928- let jG = jL._1
1929- let jp = jL._2
1930- let jM = ge(cq)
1931- let iN = jM._1
1932- let iO = jM._2
1933- let jI = if ((iN > 0))
1908+ let jL = eI(cq, false)
1909+ let eg = jL._1
1910+ let do = jL._2
1911+ let eh = jL._3
1912+ let ei = jL._4
1913+ let cR = jL._5
1914+ let cS = jL._6
1915+ let eO = jL._7
1916+ let eR = jL._8
1917+ let eH = jL._9
1918+ let eP = jL._10
1919+ let eQ = jL._11
1920+ let hZ = jL._12
1921+ let ia = jL._13
1922+ let jE = aU(eH, bT())
1923+ let jF = (jE / 2)
1924+ let gr = (jE - jF)
1925+ let jn = (bD() - jE)
1926+ let jM = if ((0 > jn))
1927+ then $Tuple2(0, bb(jn))
1928+ else $Tuple2(jn, 0)
1929+ let jH = jM._1
1930+ let jq = jM._2
1931+ let jN = ge(cq)
1932+ let iN = jN._1
1933+ let iO = jN._2
1934+ let jJ = if ((iN > 0))
19341935 then {
1935- let js = invoke(ax(), "realizePartiallyAndClose", [cq, 0, iO], nil)
1936- if ((js == js))
1936+ let jt = invoke(ax(), "realizePartiallyAndClose", [cq, 0, iO], nil)
1937+ if ((jt == jt))
19371938 then nil
19381939 else throw("Strict value is not equal to itself.")
19391940 }
19401941 else nil
1941- if ((jI == jI))
1942+ if ((jJ == jJ))
19421943 then {
19431944 let gk = if ((do > 0))
19441945 then {
1945- let jN = invoke(as(), "exchangeFreeAndLocked", [do], nil)
1946- if ((jN == jN))
1946+ let jO = invoke(as(), "exchangeFreeAndLocked", [do], nil)
1947+ if ((jO == jO))
19471948 then nil
19481949 else throw("Strict value is not equal to itself.")
19491950 }
19501951 else nil
19511952 if ((gk == gk))
19521953 then {
1953- let jv = invoke(as(), "withdrawLocked", [jD], nil)
1954- if ((jv == jv))
1954+ let jw = invoke(as(), "withdrawLocked", [jE], nil)
1955+ if ((jw == jw))
19551956 then {
19561957 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
19571958 if ((iC == iC))
19581959 then {
19591960 let ib = invoke(at(), "notifyNotional", [cq, 0], nil)
19601961 if ((ib == ib))
1961- then (((hi(cq) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ hj(ch.caller, jE)) ++ hm(jG))
1962+ then (((hi(cq) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ hj(ch.caller, jF)) ++ hm(jH))
19621963 else throw("Strict value is not equal to itself.")
19631964 }
19641965 else throw("Strict value is not equal to itself.")
19801981 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
19811982 if ((hF == hF))
19821983 then {
1983- let jO = bO()
1984- if (if (if ((jO > lastBlock.timestamp))
1984+ let jP = bO()
1985+ if (if (if ((jP > lastBlock.timestamp))
19851986 then true
19861987 else !(cy()))
19871988 then true
19881989 else cz())
1989- then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(jO)))
1990+ then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(jP)))
19901991 else {
19911992 let fK = dA()
1992- let jP = fJ()
1993- let fN = jP._1
1994- let fO = jP._2
1995- gE((jO + bR()), (bZ() + fO), (ca() + fN), aS(fO, fK), aS(fN, fK))
1993+ let jQ = fJ()
1994+ let fN = jQ._1
1995+ let fO = jQ._2
1996+ gE((jP + bR()), (bZ() + fO), (ca() + fN), aS(fO, fK), aS(fN, fK))
19961997 }
19971998 }
19981999 else throw("Strict value is not equal to itself.")
20042005 func syncTerminalPriceToOracle () = {
20052006 let cI = bG()
20062007 let cK = bH()
2007- let jQ = fF(dA(), cI, cK)
2008- let hv = jQ._1
2009- let hw = jQ._2
2010- let eM = jQ._3
2008+ let jR = fF(dA(), cI, cK)
2009+ let hv = jR._1
2010+ let hw = jR._2
2011+ let eM = jR._3
20112012 let hx = if ((eM != 0))
20122013 then {
20132014 let hx = invoke(as(), "exchangeFreeAndLocked", [eM], nil)
20282029 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
20292030 if ((hF == hF))
20302031 then {
2031- let jR = cp(cq)
2032- let ct = jR._1
2033- let eo = jR._2
2034- let ex = jR._3
2035- let eq = jR._4
2036- let jS = em(cq, aO)
2037- let ed = jS._1
2038- let el = jS._2
2039- let jT = de(ct, eo, eq, el)
2040- let dn = jT._1
2041- let do = jT._2
2042- let dj = jT._3
2032+ let jS = cp(cq)
2033+ let ct = jS._1
2034+ let eo = jS._2
2035+ let ex = jS._3
2036+ let eq = jS._4
2037+ let jT = em(cq, aO)
2038+ let ed = jT._1
2039+ let el = jT._2
2040+ let jU = de(ct, eo, eq, el)
2041+ let dn = jU._1
2042+ let do = jU._2
2043+ let dj = jU._3
20432044 throw((((((aQ(dn) + aQ(dj)) + aQ(eA(cq))) + aQ(el)) + aQ(do)) + aQ(ed)))
20442045 }
20452046 else throw("Strict value is not equal to itself.")
20592060
20602061 @Callable(ch)
20612062 func view_getTerminalAmmPrice () = {
2062- let jU = fi()
2063- let fm = jU._1
2064- let fn = jU._2
2063+ let jV = fi()
2064+ let fm = jV._1
2065+ let fn = jV._2
20652066 let hq = aS(aU(fm, bI()), aU(fn, bJ()))
20662067 throw(toString(hq))
20672068 }
20712072 @Callable(ch)
20722073 func view_getFunding () = {
20732074 let fK = dA()
2074- let jV = fJ()
2075- let fN = jV._1
2076- let fO = jV._2
2077- let jW = aS(fO, fK)
2078- let jX = aS(fN, fK)
2079- throw((((aQ(jW) + aQ(jX)) + aQ(eS())) + aQ(dA())))
2075+ let jW = fJ()
2076+ let fN = jW._1
2077+ let fO = jW._2
2078+ let jX = aS(fO, fK)
2079+ let jY = aS(fN, fK)
2080+ throw((((aQ(jX) + aQ(jY)) + aQ(eS())) + aQ(dA())))
20802081 }
20812082
20822083
20832084
20842085 @Callable(ch)
20852086 func view_getBorrowedByTrader (cq) = {
2086- let jY = ge(cq)
2087- let iN = jY._1
2088- let iO = jY._2
2087+ let jZ = ge(cq)
2088+ let iN = jZ._1
2089+ let iO = jZ._2
20892090 throw((aQ(iN) + iO))
20902091 }
20912092
21062107 }
21072108
21082109
2109-@Verifier(jZ)
2110-func ka () = sigVerify(jZ.bodyBytes, jZ.proofs[0], ao())
2110+@Verifier(ka)
2111+func kb () = sigVerify(ka.bodyBytes, ka.proofs[0], ao())
21112112
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
1182- let dj = hS._3
11831182 let eH = hM
11841183 let hT = (el - eL)
11851184 let hU = if ((ga > 0))
11861185 then ((hO - eH) - hT)
11871186 else ((hT + hO) - eH)
11881187 let hV = (ga + eG)
11891188 $Tuple12(hV, dn, bb(hU), cn(hV), cS, cR, eO, (bL() - hM), (cc() - (if ((hV > 0))
11901189 then bb(eG)
11911190 else 0)), (cb() - (if ((0 > hV))
11921191 then bb(eG)
11931192 else 0)), (bN() - (if ((hV > 0))
11941193 then hM
11951194 else 0)), (bM() - (if ((0 > hV))
11961195 then hM
11971196 else 0)))
11981197 }
11991198 }
12001199 else throw("Close position first")
12011200 let hV = hP._1
12021201 let hW = hP._2
12031202 let hX = hP._3
12041203 let hY = hP._4
12051204 let cS = hP._5
12061205 let cR = hP._6
12071206 let eO = hP._7
12081207 let eR = hP._8
12091208 let eP = hP._9
12101209 let eQ = hP._10
12111210 let hZ = hP._11
12121211 let ia = hP._12
12131212 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
12141213 if ((ib == ib))
12151214 then (gO(cq, hV, hW, hX, hY) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia))
12161215 else throw("Strict value is not equal to itself.")
12171216 }
12181217 }
12191218 else throw("Strict value is not equal to itself.")
12201219 }
12211220
12221221
12231222
12241223 @Callable(ch)
12251224 func increasePosition (hK,hD,hE,ic) = {
12261225 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
12271226 if ((hF == hF))
12281227 then {
12291228 let cq = cg(ch)
12301229 let id = ch.payments[0].amount
12311230 let aB = ch.payments[0].assetId
12321231 let ie = toBase58String(value(aB))
12331232 let if = (aB == ap())
12341233 let ig = aA(ie)
12351234 if (if (if (if (if (if (if (if (if (if ((hK != aF))
12361235 then (hK != aG)
12371236 else false)
12381237 then true
12391238 else (0 >= id))
12401239 then true
12411240 else !(cy()))
12421241 then true
12431242 else if (!(if))
12441243 then !(ig)
12451244 else false)
12461245 then true
12471246 else !(fZ(cq, ie)))
12481247 then true
12491248 else !(ci(aS(aL, hD), bF(), true)))
12501249 then true
12511250 else cz())
12521251 then true
12531252 else cA())
12541253 then true
12551254 else dH())
12561255 then throw("Invalid increasePosition parameters")
12571256 else {
12581257 let ih = gh(cq, gm(ch))
12591258 let fX = ih._1
12601259 let fY = ih._2
12611260 let ii = aU(id, fX)
12621261 let hk = (id - ii)
12631262 let ij = if (ig)
12641263 then {
12651264 let ik = invoke(ax(), "borrow", [cq], [AttachedPayment(aB, hk)])
12661265 if ((ik == ik))
12671266 then {
12681267 let il = assetBalance(this, ap())
12691268 if ((il == il))
12701269 then {
12711270 let im = invoke(ay(), "swap", [toBase58String(ap()), 0], [AttachedPayment(aB, ii)])
12721271 if ((im == im))
12731272 then {
12741273 let in = assetBalance(this, ap())
12751274 if ((in == in))
12761275 then {
12771276 let io = (in - il)
12781277 if ((io == io))
12791278 then io
12801279 else throw("Strict value is not equal to itself.")
12811280 }
12821281 else throw("Strict value is not equal to itself.")
12831282 }
12841283 else throw("Strict value is not equal to itself.")
12851284 }
12861285 else throw("Strict value is not equal to itself.")
12871286 }
12881287 else throw("Strict value is not equal to itself.")
12891288 }
12901289 else ii
12911290 if ((ij == ij))
12921291 then {
12931292 let ip = invoke(av(), "acceptPaymentWithLink", [cq, ic], [AttachedPayment(ap(), ij)])
12941293 if ((ip == ip))
12951294 then {
12961295 let iq = {
12971296 let cs = ip
12981297 if ($isInstanceOf(cs, "Int"))
12991298 then {
13001299 let gk = cs
13011300 gk
13021301 }
13031302 else throw("Invalid referrerFee")
13041303 }
13051304 let ir = (ij - iq)
13061305 let is = cp(cq)
13071306 let ga = is._1
13081307 let hH = is._2
13091308 let hI = is._3
13101309 let hJ = is._4
13111310 let gM = (ga == 0)
13121311 let it = if ((ga > 0))
13131312 then (hK == aF)
13141313 else (hK == aG)
13151314 let iu = if (!(gM))
13161315 then it
13171316 else false
13181317 let hL = (hK == aF)
13191318 let iv = if (if (gM)
13201319 then true
13211320 else iu)
13221321 then {
13231322 let hM = aU(hk, hD)
13241323 let iw = cQ(hL, hM)
13251324 let cU = iw._1
13261325 let cR = iw._2
13271326 let cS = iw._3
13281327 let eO = iw._4
13291328 if (if ((hE != 0))
13301329 then (hE > bb(cU))
13311330 else false)
13321331 then throw(((("Limit error: " + toString(bb(cU))) + " < ") + toString(hE)))
13331332 else {
13341333 let hV = (ga + cU)
13351334 let hZ = (bN() + (if ((hV > 0))
13361335 then hM
13371336 else 0))
13381337 let ia = (bM() + (if ((0 > hV))
13391338 then hM
13401339 else 0))
13411340 let ix = aS(hM, hD)
13421341 let iy = de(ga, hH, hJ, ix)
13431342 let dn = iy._1
13441343 let eg = iy._2
13451344 let eh = iy._3
13461345 if (!(dO(cR, cS)))
13471346 then throw("Over max spread limit")
13481347 else if (!(dS(hZ, ia)))
13491348 then throw("Over max open notional")
13501349 else $Tuple12(hV, dn, (hI + hM), cn(hV), cS, cR, eO, (bL() + hM), (cc() + (if ((hV > 0))
13511350 then bb(cU)
13521351 else 0)), (cb() + (if ((0 > hV))
13531352 then bb(cU)
13541353 else 0)), hZ, ia)
13551354 }
13561355 }
13571356 else {
13581357 let hM = aU(hk, hD)
13591358 let iz = em(toString(ch.caller), aO)
13601359 let hO = iz._1
13611360 let el = iz._2
13621361 if ((hO > hM))
13631362 then throw("Use decreasePosition to decrease position size")
13641363 else throw("Close position first")
13651364 }
13661365 let hV = iv._1
13671366 let hW = iv._2
13681367 let hX = iv._3
13691368 let hY = iv._4
13701369 let cS = iv._5
13711370 let cR = iv._6
13721371 let eO = iv._7
13731372 let eR = iv._8
13741373 let eP = iv._9
13751374 let eQ = iv._10
13761375 let hZ = iv._11
13771376 let ia = iv._12
13781377 let iA = go(ir)
13791378 let gq = iA._1
13801379 let gr = iA._2
13811380 let iB = if (if)
13821381 then {
13831382 let iB = invoke(as(), "addLocked", [false], [AttachedPayment(ap(), hk)])
13841383 if ((iB == iB))
13851384 then nil
13861385 else throw("Strict value is not equal to itself.")
13871386 }
13881387 else nil
13891388 if ((iB == iB))
13901389 then {
13911390 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
13921391 if ((iC == iC))
13931392 then {
13941393 let iD = invoke(at(), "notifyFees", [cq, ir], nil)
13951394 if ((iD == iD))
13961395 then {
13971396 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
13981397 if ((ib == ib))
13991398 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))
14001399 else throw("Strict value is not equal to itself.")
14011400 }
14021401 else throw("Strict value is not equal to itself.")
14031402 }
14041403 else throw("Strict value is not equal to itself.")
14051404 }
14061405 else throw("Strict value is not equal to itself.")
14071406 }
14081407 else throw("Strict value is not equal to itself.")
14091408 }
14101409 else throw("Strict value is not equal to itself.")
14111410 }
14121411 }
14131412 else throw("Strict value is not equal to itself.")
14141413 }
14151414
14161415
14171416
14181417 @Callable(ch)
14191418 func addMargin () = {
14201419 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
14211420 if ((hF == hF))
14221421 then {
14231422 let cq = toString(ch.caller)
14241423 let id = ch.payments[0].amount
14251424 let aB = ch.payments[0].assetId
14261425 let ie = toBase58String(value(aB))
14271426 let if = (aB == ap())
14281427 let ig = aA(ie)
14291428 if (if (if (if (if (if (if (if (!(if))
14301429 then !(ig)
14311430 else false)
14321431 then true
14331432 else !(cx(toString(ch.caller))))
14341433 then true
14351434 else !(gb(cq, ie)))
14361435 then true
14371436 else !(cy()))
14381437 then true
14391438 else cz())
14401439 then true
14411440 else cA())
14421441 then true
14431442 else dH())
14441443 then throw("Invalid addMargin parameters")
14451444 else {
14461445 let iE = gh(cq, gm(ch))
14471446 let fX = iE._1
14481447 let fY = iE._2
14491448 let ii = aU(id, fX)
14501449 let hk = (id - ii)
14511450 let ij = if (ig)
14521451 then {
14531452 let ik = invoke(ax(), "borrow", [cq], [AttachedPayment(aB, hk)])
14541453 if ((ik == ik))
14551454 then {
14561455 let il = assetBalance(this, ap())
14571456 if ((il == il))
14581457 then {
14591458 let im = invoke(ay(), "swap", [toBase58String(ap()), 0], [AttachedPayment(aB, ii)])
14601459 if ((im == im))
14611460 then {
14621461 let in = assetBalance(this, ap())
14631462 if ((in == in))
14641463 then {
14651464 let io = (in - il)
14661465 if ((io == io))
14671466 then io
14681467 else throw("Strict value is not equal to itself.")
14691468 }
14701469 else throw("Strict value is not equal to itself.")
14711470 }
14721471 else throw("Strict value is not equal to itself.")
14731472 }
14741473 else throw("Strict value is not equal to itself.")
14751474 }
14761475 else throw("Strict value is not equal to itself.")
14771476 }
14781477 else ii
14791478 if ((ij == ij))
14801479 then {
14811480 let ip = invoke(av(), "acceptPayment", [cq], [AttachedPayment(ap(), ij)])
14821481 if ((ip == ip))
14831482 then {
14841483 let iq = {
14851484 let cs = ip
14861485 if ($isInstanceOf(cs, "Int"))
14871486 then {
14881487 let gk = cs
14891488 gk
14901489 }
14911490 else throw("Invalid referrerFee")
14921491 }
14931492 let ir = (ij - iq)
14941493 let iF = cp(cq)
14951494 let ga = iF._1
14961495 let hH = iF._2
14971496 let hI = iF._3
14981497 let hJ = iF._4
14991498 let iG = go(ir)
15001499 let gq = iG._1
15011500 let gr = iG._2
15021501 let iB = if (if)
15031502 then {
15041503 let iB = invoke(as(), "addLocked", [false], [AttachedPayment(ap(), hk)])
15051504 if ((iB == iB))
15061505 then nil
15071506 else throw("Strict value is not equal to itself.")
15081507 }
15091508 else nil
15101509 if ((iB == iB))
15111510 then {
15121511 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
15131512 if ((iC == iC))
15141513 then {
15151514 let iD = invoke(at(), "notifyFees", [cq, ir], nil)
15161515 if ((iD == iD))
15171516 then (((gO(cq, ga, (hH + hk), hI, hJ) ++ hn(gq)) ++ hm((bD() + hk))) ++ ho(fY, ch))
15181517 else throw("Strict value is not equal to itself.")
15191518 }
15201519 else throw("Strict value is not equal to itself.")
15211520 }
15221521 else throw("Strict value is not equal to itself.")
15231522 }
15241523 else throw("Strict value is not equal to itself.")
15251524 }
15261525 else throw("Strict value is not equal to itself.")
15271526 }
15281527 }
15291528 else throw("Strict value is not equal to itself.")
15301529 }
15311530
15321531
15331532
15341533 @Callable(ch)
15351534 func removeMargin (hk) = {
15361535 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
15371536 if ((hF == hF))
15381537 then {
15391538 let cq = toString(ch.caller)
15401539 if (if (if (if (if ((0 >= hk))
15411540 then true
15421541 else !(cx(cq)))
15431542 then true
15441543 else !(cy()))
15451544 then true
15461545 else cz())
15471546 then true
15481547 else dH())
15491548 then throw("Invalid removeMargin parameters")
15501549 else {
15511550 let iH = cp(cq)
15521551 let ga = iH._1
15531552 let hH = iH._2
15541553 let hI = iH._3
15551554 let hJ = iH._4
15561555 let iI = -(hk)
15571556 let iJ = de(ga, hH, hJ, iI)
15581557 let dn = iJ._1
15591558 let do = iJ._2
15601559 if ((do != 0))
15611560 then throw("Invalid removed margin amount")
15621561 else {
15631562 let iK = er(dn, do, hI)
15641563 if (!(ci(iK, bF(), true)))
15651564 then throw(((("Too much margin removed: " + toString(iK)) + " < ") + toString(bF())))
15661565 else {
15671566 let iL = toBase58String(ap())
15681567 let iM = ge(cq)
15691568 let iN = iM._1
15701569 let iO = iM._2
15711570 let iP = if ((hk > iN))
15721571 then iN
15731572 else hk
15741573 let iQ = if ((iN > hk))
15751574 then 0
15761575 else (hk - iN)
15771576 let iR = (iN - iP)
15781577 let iS = if ((iR > 0))
15791578 then nil
15801579 else gK(cq, iL)
15811580 let iT = if (((iP + iQ) != hk))
15821581 then throw(((((("toRepay=" + toString(iP)) + " + toWithdraw=") + toString(iQ)) + " != ") + toString(hk)))
15831582 else nil
15841583 if ((iT == iT))
15851584 then {
15861585 let iU = if ((iQ > 0))
15871586 then {
15881587 let iU = invoke(as(), "withdrawLocked", [iQ], nil)
15891588 if ((iU == iU))
15901589 then nil
15911590 else throw("Strict value is not equal to itself.")
15921591 }
15931592 else nil
15941593 if ((iU == iU))
15951594 then {
15961595 let iV = if ((iP > 0))
15971596 then {
15981597 let iW = invoke(ax(), "repay", [cq, iP, iO], nil)
15991598 if ((iW == iW))
16001599 then [ScriptTransfer(ch.caller, iP, fromBase58String(iO))]
16011600 else throw("Strict value is not equal to itself.")
16021601 }
16031602 else nil
16041603 if ((iV == iV))
16051604 then ((((gO(cq, ga, dn, hI, cn(ga)) ++ (if ((iQ > 0))
16061605 then hj(ch.caller, iQ)
16071606 else nil)) ++ hm((bD() - hk))) ++ iS) ++ iV)
16081607 else throw("Strict value is not equal to itself.")
16091608 }
16101609 else throw("Strict value is not equal to itself.")
16111610 }
16121611 else throw("Strict value is not equal to itself.")
16131612 }
16141613 }
16151614 }
16161615 }
16171616 else throw("Strict value is not equal to itself.")
16181617 }
16191618
16201619
16211620
16221621 @Callable(ch)
16231622 func closePosition (gP,iX) = {
16241623 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
16251624 if ((hF == hF))
16261625 then {
16271626 let cq = cg(ch)
16281627 let iY = valueOrErrorMessage(addressFromString(cq), "Invalid caller")
16291628 if (if (if (if (if (if (!(cx(cq)))
16301629 then true
16311630 else !(cy()))
16321631 then true
16331632 else cz())
16341633 then true
16351634 else (0 >= gP))
16361635 then true
16371636 else (0 > iX))
16381637 then true
16391638 else dH())
16401639 then throw("Invalid closePosition parameters")
16411640 else {
16421641 let iZ = cp(cq)
16431642 let ga = iZ._1
16441643 let hH = iZ._2
16451644 let hI = iZ._3
16461645 let hJ = iZ._4
16471646 let ja = if ((bb(ga) > gP))
16481647 then {
16491648 let hK = if ((ga > 0))
16501649 then aG
16511650 else aF
16521651 let hL = (hK == aF)
16531652 let jb = dz((ga > 0), gP, true)
16541653 let eH = jb._1
16551654 let cR = jb._2
16561655 let cS = jb._3
16571656 let eO = jb._4
16581657 let eG = if ((ga > 0))
16591658 then -(gP)
16601659 else gP
16611660 let jc = em(cq, aO)
16621661 let hO = jc._1
16631662 let el = jc._2
16641663 let jd = ev(cq, aO)
16651664 let je = aS(bb(eG), bb(ga))
16661665 let eL = aU(el, je)
16671666 let jf = de(ga, hH, hJ, el)._1
16681667 let jg = de(ga, hH, hJ, eL)
1669- let dn = jg._1
1668+ let eg = jg._1
16701669 let jh = jg._2
16711670 let dj = jg._3
16721671 let hT = (el - eL)
16731672 let hU = if ((ga > 0))
16741673 then ((hO - eH) - hT)
16751674 else ((hT + hO) - eH)
16761675 let hX = bb(hU)
16771676 let ji = if ((ga > 0))
16781677 then (aU((hX + hT), jd) - hT)
16791678 else (aU((hX - hT), jd) - hT)
1679+ let jj = (hI - hX)
16801680 let hV = (ga + eG)
1681- let jj = cn(hV)
1682- let eR = (bL() - eH)
1681+ let jk = cn(hV)
1682+ let eR = (bL() - jj)
16831683 if (if ((iX != 0))
16841684 then (iX > eH)
16851685 else false)
16861686 then throw(((("Limit error: " + toString(eH)) + " < ") + toString(iX)))
1687- else $Tuple15(hV, ji, hX, jj, jh, eL, (jf - (ji + hT)), cR, cS, eO, eR, (cc() - (if ((hV > 0))
1687+ else $Tuple15(hV, ji, hX, jk, jh, eL, (jf - (ji + hT)), cR, cS, eO, eR, (cc() - (if ((hV > 0))
16881688 then bb(eG)
16891689 else 0)), (cb() - (if ((0 > hV))
16901690 then bb(eG)
16911691 else 0)), (bN() - (if ((hV > 0))
1692- then eH
1692+ then jj
16931693 else 0)), (bM() - (if ((0 > hV))
1694- then eH
1694+ then jj
16951695 else 0)))
16961696 }
16971697 else if ((gP > bb(ga)))
16981698 then throw("Invalid closePosition parameters")
16991699 else {
1700- let jk = eI(cq, true)
1701- let eH = jk._1
1702- let jh = jk._2
1703- let eL = jk._3
1704- let eM = jk._4
1705- let cR = jk._5
1706- let cS = jk._6
1707- let eO = jk._7
1708- let eR = jk._8
1709- let eh = jk._9
1710- let eP = jk._10
1711- let eQ = jk._11
1712- let hZ = jk._12
1713- let ia = jk._13
1700+ let jl = eI(cq, true)
1701+ let eH = jl._1
1702+ let jh = jl._2
1703+ let eL = jl._3
1704+ let eM = jl._4
1705+ let cR = jl._5
1706+ let cS = jl._6
1707+ let eO = jl._7
1708+ let eR = jl._8
1709+ let eh = jl._9
1710+ let eP = jl._10
1711+ let eQ = jl._11
1712+ let hZ = jl._12
1713+ let ia = jl._13
17141714 if (if ((iX != 0))
17151715 then (iX > eH)
17161716 else false)
17171717 then throw(((("Limit error: " + toString(eH)) + " < ") + toString(iX)))
17181718 else $Tuple15(0, 0, 0, 0, jh, eL, eM, cR, cS, eO, eR, eP, eQ, hZ, ia)
17191719 }
17201720 let hV = ja._1
17211721 let ji = ja._2
17221722 let hX = ja._3
1723- let jj = ja._4
1723+ let jk = ja._4
17241724 let jh = ja._5
17251725 let eL = ja._6
17261726 let eM = ja._7
17271727 let cR = ja._8
17281728 let cS = ja._9
17291729 let eO = ja._10
17301730 let eR = ja._11
17311731 let eP = ja._12
17321732 let eQ = ja._13
17331733 let hZ = ja._14
17341734 let ia = ja._15
17351735 if ((jh > 0))
17361736 then throw("Unable to close position with bad debt")
17371737 else {
1738- let jl = bb(eM)
1739- let jm = (bD() - jl)
1740- let jn = if ((0 > jm))
1741- then $Tuple2(0, bb(jm))
1742- else $Tuple2(jm, 0)
1743- let jo = jn._1
1744- let jp = jn._2
1745- let jq = ge(cq)
1746- let iN = jq._1
1747- let iO = jq._2
1748- let jr = if ((iN > 0))
1749- then if ((jl >= iN))
1738+ let jm = bb(eM)
1739+ let jn = (bD() - jm)
1740+ let jo = if ((0 > jn))
1741+ then $Tuple2(0, bb(jn))
1742+ else $Tuple2(jn, 0)
1743+ let jp = jo._1
1744+ let jq = jo._2
1745+ let jr = ge(cq)
1746+ let iN = jr._1
1747+ let iO = jr._2
1748+ let js = if ((iN > 0))
1749+ then if ((jm >= iN))
17501750 then {
17511751 let iW = invoke(ax(), "repay", [cq, iN, iO], nil)
17521752 if ((iW == iW))
1753- then $Tuple2([ScriptTransfer(iY, iN, fromBase58String(iO))], (jl - iN))
1753+ then $Tuple2([ScriptTransfer(iY, iN, fromBase58String(iO))], (jm - iN))
17541754 else throw("Strict value is not equal to itself.")
17551755 }
17561756 else {
1757- let js = invoke(ax(), "realizePartiallyAndClose", [cq, jl, iO], nil)
1758- if ((js == js))
1759- then $Tuple2([ScriptTransfer(iY, jl, fromBase58String(iO))], 0)
1757+ let jt = invoke(ax(), "realizePartiallyAndClose", [cq, jm, iO], nil)
1758+ if ((jt == jt))
1759+ then $Tuple2([ScriptTransfer(iY, jm, fromBase58String(iO))], 0)
17601760 else throw("Strict value is not equal to itself.")
17611761 }
1762- else $Tuple2(nil, jl)
1763- if ((jr == jr))
1762+ else $Tuple2(nil, jm)
1763+ if ((js == js))
17641764 then {
1765- let jt = jr._2
1766- let ju = jr._1
1767- let jv = if ((jt > 0))
1765+ let ju = js._2
1766+ let jv = js._1
1767+ let jw = if ((ju > 0))
17681768 then {
1769- let jv = invoke(as(), "withdrawLocked", [jt], nil)
1770- if ((jv == jv))
1769+ let jw = invoke(as(), "withdrawLocked", [ju], nil)
1770+ if ((jw == jw))
17711771 then nil
17721772 else throw("Strict value is not equal to itself.")
17731773 }
17741774 else nil
1775- if ((jv == jv))
1775+ if ((jw == jw))
17761776 then {
17771777 let ib = invoke(at(), "notifyNotional", [cq, 0], nil)
17781778 if ((ib == ib))
17791779 then (((((if ((hV == 0))
17801780 then hi(cq)
1781- else gO(cq, hV, ji, hX, jj)) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ (if ((jt > 0))
1782- then hj(iY, jt)
1783- else nil)) ++ hm(jo)) ++ ju)
1781+ else gO(cq, hV, ji, hX, jk)) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ (if ((ju > 0))
1782+ then hj(iY, ju)
1783+ else nil)) ++ hm(jp)) ++ jv)
17841784 else throw("Strict value is not equal to itself.")
17851785 }
17861786 else throw("Strict value is not equal to itself.")
17871787 }
17881788 else throw("Strict value is not equal to itself.")
17891789 }
17901790 }
17911791 }
17921792 else throw("Strict value is not equal to itself.")
17931793 }
17941794
17951795
17961796
17971797 @Callable(ch)
17981798 func liquidate (cq) = {
17991799 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
18001800 if ((hF == hF))
18011801 then {
1802- let jw = ev(cq, aO)
1802+ let jx = ev(cq, aO)
18031803 let iK = if (dX())
18041804 then {
1805- let jx = ev(cq, aP)
1806- bc(jw, jx)
1805+ let jy = ev(cq, aP)
1806+ bc(jx, jy)
18071807 }
1808- else jw
1808+ else jx
18091809 if (if (if (if (if (!(ci(iK, bS(), false)))
18101810 then true
18111811 else !(cx(cq)))
18121812 then true
18131813 else !(cy()))
18141814 then true
18151815 else cz())
18161816 then true
18171817 else dH())
18181818 then throw("Unable to liquidate")
1819- else if (if (if ((jw > bT()))
1819+ else if (if (if ((jx > bT()))
18201820 then (bU() > 0)
18211821 else false)
18221822 then (aL > bU())
18231823 else false)
18241824 then {
1825- let jy = cp(cq)
1826- let ga = jy._1
1827- let hH = jy._2
1828- let hI = jy._3
1829- let hJ = jy._4
1825+ let jz = cp(cq)
1826+ let ga = jz._1
1827+ let hH = jz._2
1828+ let hI = jz._3
1829+ let hJ = jz._4
18301830 let hK = if ((ga > 0))
18311831 then aG
18321832 else aF
18331833 let hL = (hK == aF)
18341834 let eH = eB(cq, ga)
1835- let jz = em(cq, aO)
1836- let hO = jz._1
1837- let el = jz._2
1838- let jA = cQ(hL, eH)
1839- let eG = jA._1
1840- let cR = jA._2
1841- let cS = jA._3
1842- let eO = jA._4
1843- let jB = aS(bb(eG), bb(ga))
1844- let eL = aU(el, jB)
1845- let jC = de(ga, hH, hJ, eL)
1846- let dn = jC._1
1847- let do = jC._2
1848- let dj = jC._3
1835+ let jA = em(cq, aO)
1836+ let hO = jA._1
1837+ let el = jA._2
1838+ let jB = cQ(hL, eH)
1839+ let eG = jB._1
1840+ let cR = jB._2
1841+ let cS = jB._3
1842+ let eO = jB._4
1843+ let jC = aS(bb(eG), bb(ga))
1844+ let eL = aU(el, jC)
1845+ let jD = de(ga, hH, hJ, eL)
1846+ let dn = jD._1
1847+ let do = jD._2
1848+ let dj = jD._3
18491849 let hT = (el - eL)
18501850 let hU = if ((ga > 0))
18511851 then ((hO - eH) - hT)
18521852 else ((hT + hO) - eH)
1853- let jD = aU(eH, bT())
1854- let jE = (jD / 2)
1855- let gr = (jD - jE)
1856- let ji = (dn - jD)
1853+ let jE = aU(eH, bT())
1854+ let jF = (jE / 2)
1855+ let gr = (jE - jF)
1856+ let ji = (dn - jE)
18571857 let hV = (ga + eG)
18581858 let hX = bb(hU)
1859- let jj = cn(hV)
1860- let eR = (bL() - eH)
1861- let jm = (bD() - jD)
1862- let jF = if ((0 > jm))
1863- then $Tuple2(0, bb(jm))
1864- else $Tuple2(jm, 0)
1865- let jG = jF._1
1866- let jp = jF._2
1867- let jH = ge(cq)
1868- let iN = jH._1
1869- let iO = jH._2
1870- let jI = if ((iN > 0))
1859+ let jj = (hI - hX)
1860+ let jk = cn(hV)
1861+ let eR = (bL() - jj)
1862+ let jn = (bD() - jE)
1863+ let jG = if ((0 > jn))
1864+ then $Tuple2(0, bb(jn))
1865+ else $Tuple2(jn, 0)
1866+ let jH = jG._1
1867+ let jq = jG._2
1868+ let jI = ge(cq)
1869+ let iN = jI._1
1870+ let iO = jI._2
1871+ let jJ = if ((iN > 0))
18711872 then {
1872- let jJ = aU(iN, jB)
1873- let js = invoke(ax(), "realizePartially", [cq, iO, jJ], nil)
1874- if ((js == js))
1873+ let jK = aU(iN, jC)
1874+ let jt = invoke(ax(), "realizePartially", [cq, iO, jK], nil)
1875+ if ((jt == jt))
18751876 then nil
18761877 else throw("Strict value is not equal to itself.")
18771878 }
18781879 else nil
1879- if ((jI == jI))
1880+ if ((jJ == jJ))
18801881 then {
1881- let jv = invoke(as(), "withdrawLocked", [jD], nil)
1882- if ((jv == jv))
1882+ let jw = invoke(as(), "withdrawLocked", [jE], nil)
1883+ if ((jw == jw))
18831884 then {
18841885 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
18851886 if ((iC == iC))
18861887 then {
18871888 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
18881889 if ((ib == ib))
1889- then (((gO(cq, hV, ji, hX, jj) ++ hb(cR, cS, eO, eR, (cc() - (if ((hV > 0))
1890+ then (((gO(cq, hV, ji, hX, jk) ++ hb(cR, cS, eO, eR, (cc() - (if ((hV > 0))
18901891 then bb(eG)
18911892 else 0)), (cb() - (if ((0 > hV))
18921893 then bb(eG)
18931894 else 0)), (bN() - (if ((hV > 0))
1894- then eH
1895+ then jj
18951896 else 0)), (bM() - (if ((0 > hV))
1896- then eH
1897- else 0)))) ++ hj(ch.caller, jE)) ++ hm(jG))
1897+ then jj
1898+ else 0)))) ++ hj(ch.caller, jF)) ++ hm(jH))
18981899 else throw("Strict value is not equal to itself.")
18991900 }
19001901 else throw("Strict value is not equal to itself.")
19011902 }
19021903 else throw("Strict value is not equal to itself.")
19031904 }
19041905 else throw("Strict value is not equal to itself.")
19051906 }
19061907 else {
1907- let jK = eI(cq, false)
1908- let eg = jK._1
1909- let do = jK._2
1910- let eh = jK._3
1911- let ei = jK._4
1912- let cR = jK._5
1913- let cS = jK._6
1914- let eO = jK._7
1915- let eR = jK._8
1916- let eH = jK._9
1917- let eP = jK._10
1918- let eQ = jK._11
1919- let hZ = jK._12
1920- let ia = jK._13
1921- let jD = aU(eH, bT())
1922- let jE = (jD / 2)
1923- let gr = (jD - jE)
1924- let jm = (bD() - jD)
1925- let jL = if ((0 > jm))
1926- then $Tuple2(0, bb(jm))
1927- else $Tuple2(jm, 0)
1928- let jG = jL._1
1929- let jp = jL._2
1930- let jM = ge(cq)
1931- let iN = jM._1
1932- let iO = jM._2
1933- let jI = if ((iN > 0))
1908+ let jL = eI(cq, false)
1909+ let eg = jL._1
1910+ let do = jL._2
1911+ let eh = jL._3
1912+ let ei = jL._4
1913+ let cR = jL._5
1914+ let cS = jL._6
1915+ let eO = jL._7
1916+ let eR = jL._8
1917+ let eH = jL._9
1918+ let eP = jL._10
1919+ let eQ = jL._11
1920+ let hZ = jL._12
1921+ let ia = jL._13
1922+ let jE = aU(eH, bT())
1923+ let jF = (jE / 2)
1924+ let gr = (jE - jF)
1925+ let jn = (bD() - jE)
1926+ let jM = if ((0 > jn))
1927+ then $Tuple2(0, bb(jn))
1928+ else $Tuple2(jn, 0)
1929+ let jH = jM._1
1930+ let jq = jM._2
1931+ let jN = ge(cq)
1932+ let iN = jN._1
1933+ let iO = jN._2
1934+ let jJ = if ((iN > 0))
19341935 then {
1935- let js = invoke(ax(), "realizePartiallyAndClose", [cq, 0, iO], nil)
1936- if ((js == js))
1936+ let jt = invoke(ax(), "realizePartiallyAndClose", [cq, 0, iO], nil)
1937+ if ((jt == jt))
19371938 then nil
19381939 else throw("Strict value is not equal to itself.")
19391940 }
19401941 else nil
1941- if ((jI == jI))
1942+ if ((jJ == jJ))
19421943 then {
19431944 let gk = if ((do > 0))
19441945 then {
1945- let jN = invoke(as(), "exchangeFreeAndLocked", [do], nil)
1946- if ((jN == jN))
1946+ let jO = invoke(as(), "exchangeFreeAndLocked", [do], nil)
1947+ if ((jO == jO))
19471948 then nil
19481949 else throw("Strict value is not equal to itself.")
19491950 }
19501951 else nil
19511952 if ((gk == gk))
19521953 then {
1953- let jv = invoke(as(), "withdrawLocked", [jD], nil)
1954- if ((jv == jv))
1954+ let jw = invoke(as(), "withdrawLocked", [jE], nil)
1955+ if ((jw == jw))
19551956 then {
19561957 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
19571958 if ((iC == iC))
19581959 then {
19591960 let ib = invoke(at(), "notifyNotional", [cq, 0], nil)
19601961 if ((ib == ib))
1961- then (((hi(cq) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ hj(ch.caller, jE)) ++ hm(jG))
1962+ then (((hi(cq) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ hj(ch.caller, jF)) ++ hm(jH))
19621963 else throw("Strict value is not equal to itself.")
19631964 }
19641965 else throw("Strict value is not equal to itself.")
19651966 }
19661967 else throw("Strict value is not equal to itself.")
19671968 }
19681969 else throw("Strict value is not equal to itself.")
19691970 }
19701971 else throw("Strict value is not equal to itself.")
19711972 }
19721973 }
19731974 else throw("Strict value is not equal to itself.")
19741975 }
19751976
19761977
19771978
19781979 @Callable(ch)
19791980 func payFunding () = {
19801981 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
19811982 if ((hF == hF))
19821983 then {
1983- let jO = bO()
1984- if (if (if ((jO > lastBlock.timestamp))
1984+ let jP = bO()
1985+ if (if (if ((jP > lastBlock.timestamp))
19851986 then true
19861987 else !(cy()))
19871988 then true
19881989 else cz())
1989- then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(jO)))
1990+ then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(jP)))
19901991 else {
19911992 let fK = dA()
1992- let jP = fJ()
1993- let fN = jP._1
1994- let fO = jP._2
1995- gE((jO + bR()), (bZ() + fO), (ca() + fN), aS(fO, fK), aS(fN, fK))
1993+ let jQ = fJ()
1994+ let fN = jQ._1
1995+ let fO = jQ._2
1996+ gE((jP + bR()), (bZ() + fO), (ca() + fN), aS(fO, fK), aS(fN, fK))
19961997 }
19971998 }
19981999 else throw("Strict value is not equal to itself.")
19992000 }
20002001
20012002
20022003
20032004 @Callable(ch)
20042005 func syncTerminalPriceToOracle () = {
20052006 let cI = bG()
20062007 let cK = bH()
2007- let jQ = fF(dA(), cI, cK)
2008- let hv = jQ._1
2009- let hw = jQ._2
2010- let eM = jQ._3
2008+ let jR = fF(dA(), cI, cK)
2009+ let hv = jR._1
2010+ let hw = jR._2
2011+ let eM = jR._3
20112012 let hx = if ((eM != 0))
20122013 then {
20132014 let hx = invoke(as(), "exchangeFreeAndLocked", [eM], nil)
20142015 if ((hx == hx))
20152016 then nil
20162017 else throw("Strict value is not equal to itself.")
20172018 }
20182019 else nil
20192020 if ((hx == hx))
20202021 then (ha(hv, hw) ++ gS(aS(aU(cI, hv), aU(cK, hw))))
20212022 else throw("Strict value is not equal to itself.")
20222023 }
20232024
20242025
20252026
20262027 @Callable(ch)
20272028 func view_calcRemainMarginWithFundingPayment (cq) = {
20282029 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
20292030 if ((hF == hF))
20302031 then {
2031- let jR = cp(cq)
2032- let ct = jR._1
2033- let eo = jR._2
2034- let ex = jR._3
2035- let eq = jR._4
2036- let jS = em(cq, aO)
2037- let ed = jS._1
2038- let el = jS._2
2039- let jT = de(ct, eo, eq, el)
2040- let dn = jT._1
2041- let do = jT._2
2042- let dj = jT._3
2032+ let jS = cp(cq)
2033+ let ct = jS._1
2034+ let eo = jS._2
2035+ let ex = jS._3
2036+ let eq = jS._4
2037+ let jT = em(cq, aO)
2038+ let ed = jT._1
2039+ let el = jT._2
2040+ let jU = de(ct, eo, eq, el)
2041+ let dn = jU._1
2042+ let do = jU._2
2043+ let dj = jU._3
20432044 throw((((((aQ(dn) + aQ(dj)) + aQ(eA(cq))) + aQ(el)) + aQ(do)) + aQ(ed)))
20442045 }
20452046 else throw("Strict value is not equal to itself.")
20462047 }
20472048
20482049
20492050
20502051 @Callable(ch)
20512052 func view_getPegAdjustCost (gT) = {
20522053 let cI = bG()
20532054 let cK = bH()
20542055 let fE = fF(gT, cI, cK)
20552056 throw(toString(fE._3))
20562057 }
20572058
20582059
20592060
20602061 @Callable(ch)
20612062 func view_getTerminalAmmPrice () = {
2062- let jU = fi()
2063- let fm = jU._1
2064- let fn = jU._2
2063+ let jV = fi()
2064+ let fm = jV._1
2065+ let fn = jV._2
20652066 let hq = aS(aU(fm, bI()), aU(fn, bJ()))
20662067 throw(toString(hq))
20672068 }
20682069
20692070
20702071
20712072 @Callable(ch)
20722073 func view_getFunding () = {
20732074 let fK = dA()
2074- let jV = fJ()
2075- let fN = jV._1
2076- let fO = jV._2
2077- let jW = aS(fO, fK)
2078- let jX = aS(fN, fK)
2079- throw((((aQ(jW) + aQ(jX)) + aQ(eS())) + aQ(dA())))
2075+ let jW = fJ()
2076+ let fN = jW._1
2077+ let fO = jW._2
2078+ let jX = aS(fO, fK)
2079+ let jY = aS(fN, fK)
2080+ throw((((aQ(jX) + aQ(jY)) + aQ(eS())) + aQ(dA())))
20802081 }
20812082
20822083
20832084
20842085 @Callable(ch)
20852086 func view_getBorrowedByTrader (cq) = {
2086- let jY = ge(cq)
2087- let iN = jY._1
2088- let iO = jY._2
2087+ let jZ = ge(cq)
2088+ let iN = jZ._1
2089+ let iO = jZ._2
20892090 throw((aQ(iN) + iO))
20902091 }
20912092
20922093
20932094
20942095 @Callable(ch)
20952096 func computeSpotPrice () = {
20962097 let fE = dW()
20972098 $Tuple2(nil, fE)
20982099 }
20992100
21002101
21012102
21022103 @Callable(ch)
21032104 func computeFeeForTraderWithArtifact (cq,fQ) = {
21042105 let fE = gh(cq, fQ)
21052106 $Tuple2(nil, fE)
21062107 }
21072108
21082109
2109-@Verifier(jZ)
2110-func ka () = sigVerify(jZ.bodyBytes, jZ.proofs[0], ao())
2110+@Verifier(ka)
2111+func kb () = sigVerify(ka.bodyBytes, ka.proofs[0], ao())
21112112

github/deemru/w8io/873ac7e 
256.71 ms