tx · J7m1LbaTwf6FUAVRhpAVcFYH8M2SAYEUrGr5mZp9ssrM

3NBxLzUPfiPbCtHzPFa4praXxPaiACyjPJm:  -0.08000000 Waves

2022.12.07 19:49 [2350176] smart account 3NBxLzUPfiPbCtHzPFa4praXxPaiACyjPJm > SELF 0.00000000 Waves

{ "type": 13, "id": "J7m1LbaTwf6FUAVRhpAVcFYH8M2SAYEUrGr5mZp9ssrM", "fee": 8000000, "feeAssetId": null, "timestamp": 1670431828103, "version": 2, "chainId": 84, "sender": "3NBxLzUPfiPbCtHzPFa4praXxPaiACyjPJm", "senderPublicKey": "3yVAHyimipVe9faj21nV1BmUdP7tHgttiWJM758YzUo6", "proofs": [ "3G8897LdWpANZhbaEErKfGwLB2tsYf3F8Uh9n46eTnWUtPKFQDLk1BkpWHMxRB7L84yJQNLJDuZfE2pDs7pePpUj" ], "script": "base64:BgJtCAISABIAEgMKAQESAwoBARILCgkBAQEBAQEBAQESEAoOAQEBAQEBAQgICAEBAQESAwoBARIFCgMBAQESBgoEAQEBCBIAEgMKAQESABIDCgEIEgASABIDCgEIEgMKAQgSAwoBARIAEgASAwoBCLABAAlrX29yYV9rZXkCCWtfb3JhX2tleQAPa19vcmFfYmxvY2tfa2V5Ag9rX29yYV9ibG9ja19rZXkABWtfb3JhAgVrX29yYQAJa19iYWxhbmNlAglrX2JhbGFuY2UADmtfcG9zaXRpb25TaXplAg5rX3Bvc2l0aW9uU2l6ZQAQa19wb3NpdGlvbk1hcmdpbgIQa19wb3NpdGlvbk1hcmdpbgAWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAIWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAAua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgISa19wb3NpdGlvbkZyYWN0aW9uABRrX3Bvc2l0aW9uQ2xvc2VkRGF0ZQIUa19wb3NpdGlvbkNsb3NlZERhdGUAD2tfcG9zaXRpb25Bc3NldAIPa19wb3NpdGlvbkFzc2V0AA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkAAhrX3BhdXNlZAIIa19wYXVzZWQABWtfZmVlAgVrX2ZlZQAPa19mdW5kaW5nUGVyaW9kAg9rX2Z1bmRpbmdQZXJpb2QAEWtfaW5pdE1hcmdpblJhdGlvAhFrX2luaXRNYXJnaW5SYXRpbwAYa19tYWludGVuYW5jZU1hcmdpblJhdGlvAgVrX21tcgAVa19saXF1aWRhdGlvbkZlZVJhdGlvAhVrX2xpcXVpZGF0aW9uRmVlUmF0aW8AGWtfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8CFmtfcGFydExpcXVpZGF0aW9uUmF0aW8ADWtfc3ByZWFkTGltaXQCDWtfc3ByZWFkTGltaXQAEGtfbWF4UHJpY2VJbXBhY3QCEGtfbWF4UHJpY2VJbXBhY3QAEGtfbWF4UHJpY2VTcHJlYWQCEGtfbWF4UHJpY2VTcHJlYWQADWtfbGFzdERhdGFTdHICDWtfbGFzdERhdGFTdHIADmtfbGFzdE1pbnV0ZUlkAg5rX2xhc3RNaW51dGVJZAAda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlABNrX3R3YXBEYXRhTGFzdFByaWNlAhNrX3R3YXBEYXRhTGFzdFByaWNlABprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAIaa190d2FwRGF0YVByZXZpb3VzTWludXRlSWQAJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CG2tfbGF0ZXN0TG9uZ1ByZW1pdW1GcmFjdGlvbgAma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CHGtfbGF0ZXN0U2hvcnRQcmVtaXVtRnJhY3Rpb24AEmtfbmV4dEZ1bmRpbmdCbG9jawIea19uZXh0RnVuZGluZ0Jsb2NrTWluVGltZXN0YW1wABFrX2xvbmdGdW5kaW5nUmF0ZQIRa19sb25nRnVuZGluZ1JhdGUAEmtfc2hvcnRGdW5kaW5nUmF0ZQISa19zaG9ydEZ1bmRpbmdSYXRlABNrX3F1b3RlQXNzZXRSZXNlcnZlAghrX3F0QXN0UgASa19iYXNlQXNzZXRSZXNlcnZlAghrX2JzQXN0UgASa19xdW90ZUFzc2V0V2VpZ2h0AghrX3F0QXN0VwARa19iYXNlQXNzZXRXZWlnaHQCCGtfYnNBc3RXABNrX3RvdGFsUG9zaXRpb25TaXplAhNrX3RvdGFsUG9zaXRpb25TaXplABdrX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIXa190b3RhbExvbmdQb3NpdGlvblNpemUAGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIYa190b3RhbFNob3J0UG9zaXRpb25TaXplABRrX2N1bXVsYXRpdmVOb3Rpb25hbAIUa19jdW11bGF0aXZlTm90aW9uYWwAFmtfb3BlbkludGVyZXN0Tm90aW9uYWwCFmtfb3BlbkludGVyZXN0Tm90aW9uYWwAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwAPa192YXVsdF9hZGRyZXNzAg9rX3ZhdWx0X2FkZHJlc3MAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19xdW90ZV9zdGFraW5nAg9rX3F1b3RlX3N0YWtpbmcAEWtfc3Rha2luZ19hZGRyZXNzAhFrX3N0YWtpbmdfYWRkcmVzcwAPa19taW5lcl9hZGRyZXNzAg9rX21pbmVyX2FkZHJlc3MAEGtfb3JkZXJzX2FkZHJlc3MCEGtfb3JkZXJzX2FkZHJlc3MAEmtfcmVmZXJyYWxfYWRkcmVzcwISa19yZWZlcnJhbF9hZGRyZXNzABFrX21hbmFnZXJfYWRkcmVzcwIRa19tYW5hZ2VyX2FkZHJlc3MAFGtfY29sbGF0ZXJhbF9hZGRyZXNzAhRrX2NvbGxhdGVyYWxfYWRkcmVzcwASa19leGNoYW5nZV9hZGRyZXNzAhJrX2V4Y2hhbmdlX2FkZHJlc3MAFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwIVa19uZnRfbWFuYWdlcl9hZGRyZXNzACBrX3RyYWRlcl9tYXJrZXRfYXNzZXRfY29sbGF0ZXJhbAIga190cmFkZXJfbWFya2V0X2Fzc2V0X2NvbGxhdGVyYWwBDnRvQ29tcG9zaXRlS2V5AgRfa2V5CF9hZGRyZXNzCQCsAgIJAKwCAgUEX2tleQIBXwUIX2FkZHJlc3MBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhNDb29yZGluYXRvciBub3Qgc2V0AQxhZG1pbkFkZHJlc3MACQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwEOYWRtaW5QdWJsaWNLZXkACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEmtfYWRtaW5fcHVibGljX2tleQEKcXVvdGVBc3NldAAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUNa19xdW90ZV9hc3NldAERcXVvdGVBc3NldFN0YWtpbmcACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19xdW90ZV9zdGFraW5nAhtRdW90ZSBhc3NldCBzdGFraW5nIG5vdCBzZXQBDnN0YWtpbmdBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEWtfc3Rha2luZ19hZGRyZXNzAg9TdGFraW5nIG5vdCBzZXQBDHZhdWx0QWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX3ZhdWx0X2FkZHJlc3MCDVZhdWx0IG5vdCBzZXQBDG1pbmVyQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX21pbmVyX2FkZHJlc3MCDU1pbmVyIG5vdCBzZXQBDW9yZGVyc0FkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUQa19vcmRlcnNfYWRkcmVzcwIOT3JkZXJzIG5vdCBzZXQBD3JlZmVycmFsQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRJrX3JlZmVycmFsX2FkZHJlc3MCEFJlZmVycmFsIG5vdCBzZXQBEW5mdE1hbmFnZXJBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwITTkZUIE1hbmFnZXIgbm90IHNldAERY29sbGF0ZXJhbEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUUa19jb2xsYXRlcmFsX2FkZHJlc3MCGkNvbGxhdGVyYWwgTWFuYWdlciBub3Qgc2V0AQtzd2FwQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUSa19leGNoYW5nZV9hZGRyZXNzAg9ObyBzd2FwIGFkZHJlc3MCFEludmFsaWQgc3dhcCBhZGRyZXNzABFrX3doaXRlbGlzdF9hc3NldAIRa193aGl0ZWxpc3RfYXNzZXQBEGlzV2hpdGVsaXN0QXNzZXQBCF9hc3NldElkCQELdmFsdWVPckVsc2UCCQCbCAIJARFjb2xsYXRlcmFsQWRkcmVzcwAJAQ50b0NvbXBvc2l0ZUtleQIFEWtfd2hpdGVsaXN0X2Fzc2V0BQhfYXNzZXRJZAcADWtfdG9rZW5fcGFyYW0CDWtfdG9rZW5fcGFyYW0ADGtfdG9rZW5fdHlwZQIMa190b2tlbl90eXBlABhGRUVfUkVEVUNUSU9OX1RPS0VOX1RZUEUCDWZlZV9yZWR1Y3Rpb24ACERJUl9MT05HAAEACURJUl9TSE9SVAACAA1UV0FQX0lOVEVSVkFMAA8AD09SQUNMRV9JTlRFUlZBTAAPAAdTRUNPTkRTAOgHAA9ERUNJTUFMX05VTUJFUlMABgAMREVDSU1BTF9VTklUCQBoAgABCQBoAgkAaAIJAGgCCQBoAgkAaAIACgAKAAoACgAKAAoAB09ORV9EQVkJAGgCAICjBQUMREVDSU1BTF9VTklUAAhBTExfRkVFUwBkAA9QTkxfT1BUSU9OX1NQT1QAAQARUE5MX09QVElPTl9PUkFDTEUAAgEBcwECX3gJAKwCAgkApAMBBQJfeAIBLAEEZGl2ZAICX3gCX3kJAG4EBQJfeAUMREVDSU1BTF9VTklUBQJfeQUISEFMRkVWRU4BBG11bGQCAl94Al95CQBuBAUCX3gFAl95BQxERUNJTUFMX1VOSVQFCEhBTEZFVkVOAQVzcXJ0ZAECX3gJAQRzcXJ0BAUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEEcG93ZAICX3gCX3kJAGwGBQJfeAUPREVDSU1BTF9OVU1CRVJTBQJfeQUPREVDSU1BTF9OVU1CRVJTBQ9ERUNJTUFMX05VTUJFUlMFCEhBTEZFVkVOAQViZGl2ZAICX3gCX3kJAL0CBAUCX3gJALYCAQUMREVDSU1BTF9VTklUBQJfeQUISEFMRkVWRU4BBWJtdWxkAgJfeAJfeQkAvQIEBQJfeAUCX3kJALYCAQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEGYnNxcnRkAQJfeAkBCnNxcnRCaWdJbnQEBQJfeAUPREVDSU1BTF9OVU1CRVJTBQ9ERUNJTUFMX05VTUJFUlMFCEhBTEZFVkVOAQVicG93ZAICX3gCX3kJAHYGBQJfeAUPREVDSU1BTF9OVU1CRVJTBQJfeQUPREVDSU1BTF9OVU1CRVJTBQ9ERUNJTUFMX05VTUJFUlMFCEhBTEZFVkVOAQNhYnMBAl94AwkAZgIFAl94AAAFAl94CQEBLQEFAl94AQR2bWF4AgJfeAJfeQMJAGcCBQJfeAUCX3kFAl94BQJfeQEJbGlzdFRvU3RyAQVfbGlzdAoBBV9qb2luAgthY2N1bXVsYXRvcgN2YWwJAKwCAgkArAICBQthY2N1bXVsYXRvcgUDdmFsAgEsBApuZXdMaXN0U3RyCgACJGwFBV9saXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVfam9pbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAtuZXdMaXN0U3RyVQkAswICBQpuZXdMaXN0U3RyAAEEC25ld0xpc3RTdHJSAwkAAAIJAK8CAgULbmV3TGlzdFN0clUAAQIBLAkAsAICBQtuZXdMaXN0U3RyVQABBQtuZXdMaXN0U3RyVQULbmV3TGlzdFN0clIBCXN0clRvTGlzdAEEX3N0cgkAtQkCBQRfc3RyAgEsAQtwdXNoVG9RdWV1ZQMFX2xpc3QIX21heFNpemUGX3ZhbHVlAwkAZgIJAJADAQUFX2xpc3QFCF9tYXhTaXplCQDNCAIJANEIAgUFX2xpc3QAAAUGX3ZhbHVlCQDNCAIFBV9saXN0BQZfdmFsdWUBA2ludAEBawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAWsJAKwCAgINbm8gdmFsdWUgZm9yIAUBawEFaW50T3ICAWsDZGVmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsFA2RlZgEEc3RyQQIIX2FkZHJlc3MEX2tleQQDdmFsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIX2FkZHJlc3MFBF9rZXkJAKwCAgIRTm8gdmFsdWUgZm9yIGtleSAFBF9rZXkFA3ZhbAEEaW50QQIIX2FkZHJlc3MEX2tleQQDdmFsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIX2FkZHJlc3MFBF9rZXkJAKwCAgIRTm8gdmFsdWUgZm9yIGtleSAFBF9rZXkFA3ZhbAEIY2JhbGFuY2UACQEDaW50AQUJa19iYWxhbmNlAQNmZWUACQEDaW50AQUFa19mZWUBD2luaXRNYXJnaW5SYXRpbwAJAQNpbnQBBRFrX2luaXRNYXJnaW5SYXRpbwEGcXRBc3RSAAkBA2ludAEFE2tfcXVvdGVBc3NldFJlc2VydmUBBmJzQXN0UgAJAQNpbnQBBRJrX2Jhc2VBc3NldFJlc2VydmUBBnF0QXN0VwAJAQVpbnRPcgIFEmtfcXVvdGVBc3NldFdlaWdodAUMREVDSU1BTF9VTklUAQZic0FzdFcACQEFaW50T3ICBRFrX2Jhc2VBc3NldFdlaWdodAUMREVDSU1BTF9VTklUARF0b3RhbFBvc2l0aW9uU2l6ZQAJAQNpbnQBBRNrX3RvdGFsUG9zaXRpb25TaXplARJjdW11bGF0aXZlTm90aW9uYWwACQEDaW50AQUUa19jdW11bGF0aXZlTm90aW9uYWwBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAkBA2ludAEFFmtfb3BlbkludGVyZXN0Tm90aW9uYWwBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAACQEDaW50AQUSa19uZXh0RnVuZGluZ0Jsb2NrARBmdW5kaW5nUGVyaW9kUmF3AAkBA2ludAEFD2tfZnVuZGluZ1BlcmlvZAEUZnVuZGluZ1BlcmlvZERlY2ltYWwACQBoAgkBEGZ1bmRpbmdQZXJpb2RSYXcABQxERUNJTUFMX1VOSVQBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUHU0VDT05EUwEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAJAQNpbnQBBRhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8BE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEDaW50AQUVa19saXF1aWRhdGlvbkZlZVJhdGlvARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAJAQNpbnQBBRlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAQtzcHJlYWRMaW1pdAAJAQNpbnQBBQ1rX3NwcmVhZExpbWl0AQ5tYXhQcmljZUltcGFjdAAJAQNpbnQBBRBrX21heFByaWNlSW1wYWN0AQ5tYXhQcmljZVNwcmVhZAAJAQNpbnQBBRBrX21heFByaWNlU3ByZWFkASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJAQNpbnQBBSVrX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEDaW50AQUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQEDaW50AQUYa190b3RhbFNob3J0UG9zaXRpb25TaXplARV0b3RhbExvbmdQb3NpdGlvblNpemUACQEDaW50AQUXa190b3RhbExvbmdQb3NpdGlvblNpemUBD2dldEFjdHVhbENhbGxlcgEBaQkBC3ZhbHVlT3JFbHNlAgkAnQgCCQENb3JkZXJzQWRkcmVzcwACCGtfc2VuZGVyCQClCAEIBQFpBmNhbGxlcgEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMMX21hcmdpblJhdGlvEF9iYXNlTWFyZ2luUmF0aW8UX2xhcmdlclRoYW5PckVxdWFsVG8EFHJlbWFpbmluZ01hcmdpblJhdGlvCQBlAgUMX21hcmdpblJhdGlvBRBfYmFzZU1hcmdpblJhdGlvAwMFFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQBmAgAABRRyZW1haW5pbmdNYXJnaW5SYXRpbwcJAAIBAg5JbnZhbGlkIG1hcmdpbgMDCQEBIQEFFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQBnAgUUcmVtYWluaW5nTWFyZ2luUmF0aW8AAAcJAAIBAg5JbnZhbGlkIG1hcmdpbgYBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BDV9wb3NpdGlvblNpemUDCQAAAgUNX3Bvc2l0aW9uU2l6ZQAACQACAQIsU2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCBfcG9zaXRpb25TaXplID09IDADCQBmAgUNX3Bvc2l0aW9uU2l6ZQAACQEjbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAELZ2V0UG9zaXRpb24BB190cmFkZXIED3Bvc2l0aW9uU2l6ZU9wdAkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBQ5rX3Bvc2l0aW9uU2l6ZQUHX3RyYWRlcgQHJG1hdGNoMAUPcG9zaXRpb25TaXplT3B0AwkAAQIFByRtYXRjaDACA0ludAQMcG9zaXRpb25TaXplBQckbWF0Y2gwCQCWCgQFDHBvc2l0aW9uU2l6ZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUQa19wb3NpdGlvbk1hcmdpbgUHX3RyYWRlcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAUHX3RyYWRlcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUHX3RyYWRlcgkAlgoEAAAAAAAAAAABEGdldFBvc2l0aW9uQXNzZXQBB190cmFkZXIEEHBvc2l0aW9uQXNzZXRPcHQJAJ0IAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUPa19wb3NpdGlvbkFzc2V0BQdfdHJhZGVyBAckbWF0Y2gwBRBwb3NpdGlvbkFzc2V0T3B0AwkAAQIFByRtYXRjaDACBlN0cmluZwQNcG9zaXRpb25Bc3NldAUHJG1hdGNoMAUNcG9zaXRpb25Bc3NldAkA2AQBCQEKcXVvdGVBc3NldAABE3JlcXVpcmVPcGVuUG9zaXRpb24BB190cmFkZXIDCQAAAggJAQtnZXRQb3NpdGlvbgEFB190cmFkZXICXzEAAAkAAgECEE5vIG9wZW4gcG9zaXRpb24GAQtpbml0aWFsaXplZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUNa19pbml0aWFsaXplZAcBBnBhdXNlZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUIa19wYXVzZWQHAQ11cGRhdGVSZXNlcnZlAwZfaXNBZGQRX3F1b3RlQXNzZXRBbW91bnQQX2Jhc2VBc3NldEFtb3VudAMFBl9pc0FkZAQHbmV3QmFzZQkAZQIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50AwkAZwIAAAUHbmV3QmFzZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBhc3NldCByZXNlcnZlIDw9IDAsIHJldmVydAkAlgoECQBkAgkBBnF0QXN0UgAFEV9xdW90ZUFzc2V0QW1vdW50BQduZXdCYXNlCQBkAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAkAZAIJARJjdW11bGF0aXZlTm90aW9uYWwABRFfcXVvdGVBc3NldEFtb3VudAQIbmV3UXVvdGUJAGUCCQEGcXRBc3RSAAURX3F1b3RlQXNzZXRBbW91bnQDCQBnAgAABQhuZXdRdW90ZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBxdW90ZSByZXNlcnZlIDw9IDAsIHJldmVydAkAlgoEBQhuZXdRdW90ZQkAZAIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50CQBlAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAkAZQIJARJjdW11bGF0aXZlTm90aW9uYWwABRFfcXVvdGVBc3NldEFtb3VudAENY2FsY0ludmFyaWFudAQHX3F0QXN0UgdfcXRBc3RXB19ic0FzdFIHX2JzQXN0VwkBBG11bGQCCQEEbXVsZAIFB19xdEFzdFIFB19xdEFzdFcJAQRtdWxkAgUHX2JzQXN0UgUHX2JzQXN0VwEJc3dhcElucHV0AgZfaXNBZGQRX3F1b3RlQXNzZXRBbW91bnQEB19xdEFzdFIJAQZxdEFzdFIABAdfYnNBc3RSCQEGYnNBc3RSAAQHX3F0QXN0VwkBBnF0QXN0VwAEB19ic0FzdFcJAQZic0FzdFcABAFrCQENY2FsY0ludmFyaWFudAQFB19xdEFzdFIFB19xdEFzdFcFB19ic0FzdFIFB19ic0FzdFcEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIDBQZfaXNBZGQJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAkAZQIFB19xdEFzdFIFEV9xdW90ZUFzc2V0QW1vdW50BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIJAQRkaXZkAgUBawkBBG11bGQCBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBQdfcXRBc3RXBBhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMJAQRkaXZkAgkBA2FicwEJAGUCBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFB19ic0FzdFIFB19xdEFzdFcEFWFtb3VudEJhc2VBc3NldEJvdWdodAMFBl9pc0FkZAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEBLQEFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwQNJHQwMTYzMzMxNjUyNgkBDXVwZGF0ZVJlc2VydmUDBQZfaXNBZGQFEV9xdW90ZUFzc2V0QW1vdW50BRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTYzMzMxNjUyNgJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE2MzMzMTY1MjYCXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTYzMzMxNjUyNgJfMwQYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCAUNJHQwMTYzMzMxNjUyNgJfNAQLcHJpY2VCZWZvcmUJAQRkaXZkAgkBBG11bGQCBQdfcXRBc3RSBQdfcXRBc3RXCQEEbXVsZAIFB19ic0FzdFIFB19ic0FzdFcEC21hcmtldFByaWNlCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMECXByaWNlRGlmZgkBA2FicwEJAGUCBQtwcmljZUJlZm9yZQULbWFya2V0UHJpY2UEC3ByaWNlSW1wYWN0CQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIFC3ByaWNlQmVmb3JlCQBkAgULcHJpY2VCZWZvcmUFCXByaWNlRGlmZgQTbWF4UHJpY2VJbXBhY3RWYWx1ZQkBDm1heFByaWNlSW1wYWN0AAMJAGYCBQtwcmljZUltcGFjdAUTbWF4UHJpY2VJbXBhY3RWYWx1ZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINUHJpY2UgaW1wYWN0IAkApAMBBQtwcmljZUltcGFjdAIUID4gbWF4IHByaWNlIGltcGFjdCAJAKQDAQUTbWF4UHJpY2VJbXBhY3RWYWx1ZQIVIGJlZm9yZSBxdW90ZSBhc3NldDogCQCkAwEFB19xdEFzdFICFCBiZWZvcmUgYmFzZSBhc3NldDogCQCkAwEFB19ic0FzdFICISBxdW90ZSBhc3NldCBhbW91bnQgdG8gZXhjaGFuZ2U6IAkApAMBBRFfcXVvdGVBc3NldEFtb3VudAIPIHByaWNlIGJlZm9yZTogCQCkAwEFC3ByaWNlQmVmb3JlAg4gbWFya2V0UHJpY2U6IAkApAMBBQttYXJrZXRQcmljZQkAlwoFBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQFF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxBRZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxBRd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQUYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BBBfb2xkUG9zaXRpb25TaXplEl9vbGRQb3NpdGlvbk1hcmdpbiVfb2xkUG9zaXRpb25DdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uDF9tYXJnaW5EZWx0YQQOZnVuZGluZ1BheW1lbnQDCQECIT0CBRBfb2xkUG9zaXRpb25TaXplAAAEIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFEF9vbGRQb3NpdGlvblNpemUJAQRtdWxkAgkAZQIFIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBSVfb2xkUG9zaXRpb25DdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBRBfb2xkUG9zaXRpb25TaXplAAAEDHNpZ25lZE1hcmdpbgkAZAIJAGUCBQxfbWFyZ2luRGVsdGEFDmZ1bmRpbmdQYXltZW50BRJfb2xkUG9zaXRpb25NYXJnaW4EDSR0MDE4MDQ1MTgxNzIDCQBmAgAABQxzaWduZWRNYXJnaW4JAJQKAgAACQEDYWJzAQUMc2lnbmVkTWFyZ2luCQCUCgIJAQNhYnMBBQxzaWduZWRNYXJnaW4AAAQMcmVtYWluTWFyZ2luCAUNJHQwMTgwNDUxODE3MgJfMQQHYmFkRGVidAgFDSR0MDE4MDQ1MTgxNzICXzIJAJUKAwUMcmVtYWluTWFyZ2luBQdiYWREZWJ0BQ5mdW5kaW5nUGF5bWVudAEWc3dhcE91dHB1dFdpdGhSZXNlcnZlcwcGX2lzQWRkEF9iYXNlQXNzZXRBbW91bnQUX2NoZWNrTWF4UHJpY2VJbXBhY3QSX3F1b3RlQXNzZXRSZXNlcnZlEV9xdW90ZUFzc2V0V2VpZ2h0EV9iYXNlQXNzZXRSZXNlcnZlEF9iYXNlQXNzZXRXZWlnaHQEC3ByaWNlQmVmb3JlCQEEZGl2ZAIJAQRtdWxkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfcXVvdGVBc3NldFdlaWdodAkBBG11bGQCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAMJAAACBRBfYmFzZUFzc2V0QW1vdW50AAAJAAIBAhlJbnZhbGlkIGJhc2UgYXNzZXQgYW1vdW50BAFrCQENY2FsY0ludmFyaWFudAQFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX3F1b3RlQXNzZXRXZWlnaHQFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0V2VpZ2h0BBhiYXNlQXNzZXRQb29sQW1vdW50QWZ0ZXIDBQZfaXNBZGQJAGQCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldEFtb3VudAkAZQIFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0QW1vdW50BA9xdW90ZUFzc2V0QWZ0ZXIJAQRkaXZkAgUBawkBBG11bGQCBRhiYXNlQXNzZXRQb29sQW1vdW50QWZ0ZXIFEF9iYXNlQXNzZXRXZWlnaHQEDnF1b3RlQXNzZXRTb2xkCQEDYWJzAQkAZQIFD3F1b3RlQXNzZXRBZnRlcgkBBG11bGQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BBNtYXhQcmljZUltcGFjdFZhbHVlCQEObWF4UHJpY2VJbXBhY3QABA0kdDAxOTM0MDE5NTMzCQENdXBkYXRlUmVzZXJ2ZQMJAQEhAQUGX2lzQWRkBQ5xdW90ZUFzc2V0U29sZAUQX2Jhc2VBc3NldEFtb3VudAQXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxOTM0MDE5NTMzAl8xBBZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTkzNDAxOTUzMwJfMgQXdG90YWxQb3NpdGlvblNpemVBZnRlcjEIBQ0kdDAxOTM0MDE5NTMzAl8zBBhjdW11bGF0aXZlTm90aW9uYWxBZnRlcjEIBQ0kdDAxOTM0MDE5NTMzAl80BAttYXJrZXRQcmljZQkBBGRpdmQCBQ5xdW90ZUFzc2V0U29sZAUQX2Jhc2VBc3NldEFtb3VudAQJcHJpY2VEaWZmCQEDYWJzAQkAZQIFC3ByaWNlQmVmb3JlBQttYXJrZXRQcmljZQQLcHJpY2VJbXBhY3QJAGUCBQxERUNJTUFMX1VOSVQJAQRkaXZkAgULcHJpY2VCZWZvcmUJAGQCBQtwcmljZUJlZm9yZQUJcHJpY2VEaWZmAwMJAGYCBQtwcmljZUltcGFjdAUTbWF4UHJpY2VJbXBhY3RWYWx1ZQUUX2NoZWNrTWF4UHJpY2VJbXBhY3QHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1QcmljZSBpbXBhY3QgCQCkAwEFC3ByaWNlSW1wYWN0AhQgPiBtYXggcHJpY2UgaW1wYWN0IAkApAMBBRNtYXhQcmljZUltcGFjdFZhbHVlAhUgYmVmb3JlIHF1b3RlIGFzc2V0OiAJAKQDAQUSX3F1b3RlQXNzZXRSZXNlcnZlAhQgYmVmb3JlIGJhc2UgYXNzZXQ6IAkApAMBBRFfYmFzZUFzc2V0UmVzZXJ2ZQIgIGJhc2UgYXNzZXQgYW1vdW50IHRvIGV4Y2hhbmdlOiAJAKQDAQUQX2Jhc2VBc3NldEFtb3VudAIPIHByaWNlIGJlZm9yZTogCQCkAwEFC3ByaWNlQmVmb3JlAg8gbWFya2V0IHByaWNlOiAJAKQDAQULbWFya2V0UHJpY2UJAJoKCAUOcXVvdGVBc3NldFNvbGQFF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxBRZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxBRd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQUYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADBQZfaXNBZGQJAQNhYnMBBRBfYmFzZUFzc2V0QW1vdW50AAAJAGUCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQEBIQEFBl9pc0FkZAkBA2FicwEFEF9iYXNlQXNzZXRBbW91bnQAAAULcHJpY2VJbXBhY3QBCnN3YXBPdXRwdXQDBl9pc0FkZBBfYmFzZUFzc2V0QW1vdW50FF9jaGVja01heFByaWNlSW1wYWN0CQEWc3dhcE91dHB1dFdpdGhSZXNlcnZlcwcFBl9pc0FkZAUQX2Jhc2VBc3NldEFtb3VudAUUX2NoZWNrTWF4UHJpY2VJbXBhY3QJAQZxdEFzdFIACQEGcXRBc3RXAAkBBmJzQXN0UgAJAQZic0FzdFcAARJnZXRPcmFjbGVUd2FwUHJpY2UABAZvcmFjbGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQVrX29yYQIABAhwcmljZUtleQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUJa19vcmFfa2V5BAhibG9ja0tleQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUPa19vcmFfYmxvY2tfa2V5BAlsYXN0VmFsdWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQZvcmFjbGUFCHByaWNlS2V5CQCsAgIJAKwCAgkArAICAiJDYW4gbm90IGdldCBvcmFjbGUgcHJpY2UuIE9yYWNsZTogCQClCAEFBm9yYWNsZQIGIGtleTogBQhwcmljZUtleQUJbGFzdFZhbHVlARlyZXF1aXJlTm90T3ZlclNwcmVhZExpbWl0AhJfcXVvdGVBc3NldFJlc2VydmURX2Jhc2VBc3NldFJlc2VydmUEC29yYWNsZVByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQKcHJpY2VBZnRlcgkBBGRpdmQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9iYXNlQXNzZXRSZXNlcnZlBAxhdmVyYWdlUHJpY2UJAQRkaXZkAgkAZAIFC29yYWNsZVByaWNlBQpwcmljZUFmdGVyCQBoAgACBQxERUNJTUFMX1VOSVQEDGFic1ByaWNlRGlmZgkBBGRpdmQCCQEDYWJzAQkAZQIFC29yYWNsZVByaWNlBQpwcmljZUFmdGVyBQxhdmVyYWdlUHJpY2UDCQBmAgUMYWJzUHJpY2VEaWZmCQEObWF4UHJpY2VTcHJlYWQACQACAQkArAICCQCsAgIJAKwCAgINUHJpY2Ugc3ByZWFkIAkApAMBBQxhYnNQcmljZURpZmYCFCA+IG1heCBwcmljZSBzcHJlYWQgCQCkAwEJAQ5tYXhQcmljZVNwcmVhZAAGAQxnZXRTcG90UHJpY2UABBJfcXVvdGVBc3NldFJlc2VydmUJAQZxdEFzdFIABBFfYmFzZUFzc2V0UmVzZXJ2ZQkBBmJzQXN0UgAEB19xdEFzdFcJAQZxdEFzdFcABAdfYnNBc3RXCQEGYnNBc3RXAAkBBGRpdmQCCQEEbXVsZAIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQUHX3F0QXN0VwkBBG11bGQCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUHX2JzQXN0VwEWaXNPdmVyRmx1Y3R1YXRpb25MaW1pdAAEC29yYWNsZVByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQMY3VycmVudFByaWNlCQEMZ2V0U3BvdFByaWNlAAkAZgIJAQRkaXZkAgkBA2FicwEJAGUCBQtvcmFjbGVQcmljZQUMY3VycmVudFByaWNlBQtvcmFjbGVQcmljZQkBC3NwcmVhZExpbWl0AAEfZ2V0UG9zaXRpb25BZGp1c3RlZE9wZW5Ob3Rpb25hbAYNX3Bvc2l0aW9uU2l6ZQdfb3B0aW9uEl9xdW90ZUFzc2V0UmVzZXJ2ZRFfcXVvdGVBc3NldFdlaWdodBFfYmFzZUFzc2V0UmVzZXJ2ZRBfYmFzZUFzc2V0V2VpZ2h0BA9wb3NpdGlvblNpemVBYnMJAQNhYnMBBQ1fcG9zaXRpb25TaXplBAdpc1Nob3J0CQBmAgAABQ1fcG9zaXRpb25TaXplBBBwb3NpdGlvbk5vdGlvbmFsAwkAAAIFB19vcHRpb24FD1BOTF9PUFRJT05fU1BPVAQNJHQwMjI5MDgyMzEyOAkBFnN3YXBPdXRwdXRXaXRoUmVzZXJ2ZXMHCQEBIQEFB2lzU2hvcnQFD3Bvc2l0aW9uU2l6ZUFicwcFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX3F1b3RlQXNzZXRXZWlnaHQFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0V2VpZ2h0BBNvdXRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwMjI5MDgyMzEyOAJfMQQCeDEIBQ0kdDAyMjkwODIzMTI4Al8yBAJ4MggFDSR0MDIyOTA4MjMxMjgCXzMEAngzCAUNJHQwMjI5MDgyMzEyOAJfNAUTb3V0UG9zaXRpb25Ob3Rpb25hbAkBBG11bGQCBQ9wb3NpdGlvblNpemVBYnMJARJnZXRPcmFjbGVUd2FwUHJpY2UABRBwb3NpdGlvbk5vdGlvbmFsAStnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubEJ5VmFsdWVzBw1fcG9zaXRpb25TaXplFV9wb3NpdGlvbk9wZW5Ob3Rpb25hbBJfcXVvdGVBc3NldFJlc2VydmURX3F1b3RlQXNzZXRXZWlnaHQRX2Jhc2VBc3NldFJlc2VydmUQX2Jhc2VBc3NldFdlaWdodAdfb3B0aW9uAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAAgECFUludmFsaWQgcG9zaXRpb24gc2l6ZQQHaXNTaG9ydAkAZgIAAAUNX3Bvc2l0aW9uU2l6ZQQQcG9zaXRpb25Ob3Rpb25hbAkBH2dldFBvc2l0aW9uQWRqdXN0ZWRPcGVuTm90aW9uYWwGBQ1fcG9zaXRpb25TaXplBQdfb3B0aW9uBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAQNdW5yZWFsaXplZFBubAMFB2lzU2hvcnQJAGUCBRVfcG9zaXRpb25PcGVuTm90aW9uYWwFEHBvc2l0aW9uTm90aW9uYWwJAGUCBRBwb3NpdGlvbk5vdGlvbmFsBRVfcG9zaXRpb25PcGVuTm90aW9uYWwJAJQKAgUQcG9zaXRpb25Ob3Rpb25hbAUNdW5yZWFsaXplZFBubAEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCB190cmFkZXIHX29wdGlvbgQNJHQwMjQ1NTMyNDY4MQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMjQ1NTMyNDY4MQJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAyNDU1MzI0NjgxAl8yBBRwb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDI0NTUzMjQ2ODECXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMjQ1NTMyNDY4MQJfNAkBK2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sQnlWYWx1ZXMHBQxwb3NpdGlvblNpemUFFHBvc2l0aW9uT3Blbk5vdGlvbmFsCQEGcXRBc3RSAAkBBnF0QXN0VwAJAQZic0FzdFIACQEGYnNBc3RXAAUHX29wdGlvbgEPY2FsY01hcmdpblJhdGlvAw1fcmVtYWluTWFyZ2luCF9iYWREZWJ0EV9wb3NpdGlvbk5vdGlvbmFsCQEEZGl2ZAIJAGUCBQ1fcmVtYWluTWFyZ2luBQhfYmFkRGVidAURX3Bvc2l0aW9uTm90aW9uYWwBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CB190cmFkZXIHX29wdGlvbgQNJHQwMjUxOTQyNTMwNQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMjUxOTQyNTMwNQJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAyNTE5NDI1MzA1Al8yBANwb24IBQ0kdDAyNTE5NDI1MzA1Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDI1MTk0MjUzMDUCXzQEDSR0MDI1MzExMjU0MDQJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFB19vcHRpb24EEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDAyNTMxMTI1NDA0Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwMjUzMTEyNTQwNAJfMgQNJHQwMjU0MDkyNTU3NQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMjU0MDkyNTU3NQJfMQQHYmFkRGVidAgFDSR0MDI1NDA5MjU1NzUCXzIJAQ9jYWxjTWFyZ2luUmF0aW8DBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFEHBvc2l0aW9uTm90aW9uYWwBDmdldE1hcmdpblJhdGlvAQdfdHJhZGVyCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAEbZ2V0UGFydGlhbExpcXVpZGF0aW9uQW1vdW50AgdfdHJhZGVyDV9wb3NpdGlvblNpemUEDG1heGltdW1SYXRpbwkBBHZtYXgCCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ACQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIJARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAQYbWF4RXhjaGFuZ2VkUG9zaXRpb25TaXplCQEEbXVsZAIJAQNhYnMBBQ1fcG9zaXRpb25TaXplBQxtYXhpbXVtUmF0aW8ECnN3YXBSZXN1bHQJAQpzd2FwT3V0cHV0AwkAZgIFDV9wb3NpdGlvblNpemUAAAUYbWF4RXhjaGFuZ2VkUG9zaXRpb25TaXplBwQcbWF4RXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFCnN3YXBSZXN1bHQCXzEEC3ByaWNlSW1wYWN0CAUKc3dhcFJlc3VsdAJfOAMJAGYCCQEObWF4UHJpY2VJbXBhY3QABQtwcmljZUltcGFjdAUcbWF4RXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEEbXVsZAIJAQNhYnMBBQ1fcG9zaXRpb25TaXplCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ABBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAkBCnN3YXBPdXRwdXQDCQBmAgUNX3Bvc2l0aW9uU2l6ZQAABRVleGNoYW5nZWRQb3NpdGlvblNpemUHAl8xBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50ARVpbnRlcm5hbENsb3NlUG9zaXRpb24CB190cmFkZXIUX2NoZWNrTWF4UHJpY2VJbXBhY3QEDSR0MDI2ODA4MjY5MzYJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDI2ODA4MjY5MzYCXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwMjY4MDgyNjkzNgJfMgQUcG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAyNjgwODI2OTM2Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDI2ODA4MjY5MzYCXzQEDXVucmVhbGl6ZWRQbmwICQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QCXzIEDSR0MDI3MDMxMjcxOTkJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDI3MDMxMjcxOTkCXzEEB2JhZERlYnQIBQ0kdDAyNzAzMTI3MTk5Al8yBBVleGNoYW5nZWRQb3NpdGlvblNpemUJAQEtAQUMcG9zaXRpb25TaXplBAtyZWFsaXplZFBubAUNdW5yZWFsaXplZFBubAQNbWFyZ2luVG9WYXVsdAkBAS0BBQxyZW1haW5NYXJnaW4EDSR0MDI3MzI2Mjc2MzEJAQpzd2FwT3V0cHV0AwkAZgIFDHBvc2l0aW9uU2l6ZQAACQEDYWJzAQUMcG9zaXRpb25TaXplBRRfY2hlY2tNYXhQcmljZUltcGFjdAQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDI3MzI2Mjc2MzECXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyNzMyNjI3NjMxAl8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyNzMyNjI3NjMxAl8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwMjczMjYyNzYzMQJfNAQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDAyNzMyNjI3NjMxAl81BA50b3RhbExvbmdBZnRlcggFDSR0MDI3MzI2Mjc2MzECXzYED3RvdGFsU2hvcnRBZnRlcggFDSR0MDI3MzI2Mjc2MzECXzcEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABRRwb3NpdGlvbk9wZW5Ob3Rpb25hbAkAngoMBRVleGNoYW5nZWRQb3NpdGlvblNpemUFB2JhZERlYnQFC3JlYWxpemVkUG5sBQ1tYXJnaW5Ub1ZhdWx0BRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyARBnZXRUd2FwU3BvdFByaWNlAAQIbWludXRlSWQJAGkCCQBpAggFCWxhc3RCbG9jawl0aW1lc3RhbXAA6AcAPAQNc3RhcnRNaW51dGVJZAkAZQIFCG1pbnV0ZUlkBQ1UV0FQX0lOVEVSVkFMBAdsaXN0U3RyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFDWtfbGFzdERhdGFTdHICAAQEbGlzdAkAtQkCBQdsaXN0U3RyAgEsCgEIZmlsdGVyRm4CC2FjY3VtdWxhdG9yBG5leHQDCQBnAgUNc3RhcnRNaW51dGVJZAkBDXBhcnNlSW50VmFsdWUBBQRuZXh0CQDNCAIFC2FjY3VtdWxhdG9yCQENcGFyc2VJbnRWYWx1ZQEFBG5leHQFC2FjY3VtdWxhdG9yBAVsaXN0RgoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmaWx0ZXJGbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAhtYXhJbmRleAMJAGYCCQCQAwEFBWxpc3RGAAAJAJYDAQUFbGlzdEYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsaXN0AAAEDGxhc3RNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rX2xhc3RNaW51dGVJZAAABBZlbmRMYXN0Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIBXwkApAMBBQxsYXN0TWludXRlSWQAAAQMZW5kTGFzdFByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFDGxhc3RNaW51dGVJZAAABBJub3dDdW11bGF0aXZlUHJpY2UJAGQCBRZlbmRMYXN0Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBQxsYXN0TWludXRlSWQFDGVuZExhc3RQcmljZQQYc3RhcnRMYXN0Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIBXwkApAMBBQhtYXhJbmRleAAABA5zdGFydExhc3RQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBQhtYXhJbmRleAAABBRzdGFydEN1bXVsYXRpdmVQcmljZQkAZAIFGHN0YXJ0TGFzdEN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQ1zdGFydE1pbnV0ZUlkBQhtYXhJbmRleAUOc3RhcnRMYXN0UHJpY2UJAGkCCQBlAgUSbm93Q3VtdWxhdGl2ZVByaWNlBRRzdGFydEN1bXVsYXRpdmVQcmljZQUNVFdBUF9JTlRFUlZBTAETZ2V0VGVybWluYWxBbW1TdGF0ZQAEDV9wb3NpdGlvblNpemUJARF0b3RhbFBvc2l0aW9uU2l6ZQADCQAAAgUNX3Bvc2l0aW9uU2l6ZQAACQCUCgIJAQZxdEFzdFIACQEGYnNBc3RSAAQJZGlyZWN0aW9uCQBmAgUNX3Bvc2l0aW9uU2l6ZQAABA0kdDAyOTYxODI5Nzk3CQEKc3dhcE91dHB1dAMFCWRpcmVjdGlvbgkBA2FicwEFDV9wb3NpdGlvblNpemUHBBVjdXJyZW50TmV0TWFya2V0VmFsdWUIBQ0kdDAyOTYxODI5Nzk3Al8xBBl0ZXJtaW5hbFF1b3RlQXNzZXRSZXNlcnZlCAUNJHQwMjk2MTgyOTc5NwJfMgQYdGVybWluYWxCYXNlQXNzZXRSZXNlcnZlCAUNJHQwMjk2MTgyOTc5NwJfMwkAlAoCBRl0ZXJtaW5hbFF1b3RlQXNzZXRSZXNlcnZlBRh0ZXJtaW5hbEJhc2VBc3NldFJlc2VydmUBE2dldFF1b3RlQXNzZXRXZWlnaHQEEGJhc2VBc3NldFJlc2VydmURdG90YWxQb3NpdGlvblNpemURcXVvdGVBc3NldFJlc2VydmULdGFyZ2V0UHJpY2UEAWIJALYCAQUQYmFzZUFzc2V0UmVzZXJ2ZQQCc3oJALYCAQURdG90YWxQb3NpdGlvblNpemUEAXEJALYCAQURcXVvdGVBc3NldFJlc2VydmUEAXAJALYCAQULdGFyZ2V0UHJpY2UEA2JzMgkBBWJwb3dkAgkAtwICBQFiBQJzegkAtgIBCQBoAgACBQxERUNJTUFMX1VOSVQEBHFiczIJAQVibXVsZAIFAXEFA2JzMgQDcHM0CQC5AgIJALYCAQAECQEFYm11bGQCBQFwBQJzegQDc3FyCQEGYnNxcnRkAQkBBWJtdWxkAgUEcWJzMgkAuAICBQFxBQNwczQEAmJxCQEFYm11bGQCBQFiBQFxBAJxcwkBBWJtdWxkAgUBcQUCc3oEA3RvcAkAtwICCQC3AgIJAL4CAQUDc3FyBQJicQUCcXMEA2JvdAkAuQICCQC2AgEAAgkBBWJtdWxkAgUBcQUCc3oEBnJlc3VsdAkBBWJkaXZkAgUDdG9wBQNib3QJAKADAQUGcmVzdWx0ARRnZXRTeW5jVGVybWluYWxQcmljZQEOX3Rlcm1pbmFsUHJpY2UEDV9wb3NpdGlvblNpemUJARF0b3RhbFBvc2l0aW9uU2l6ZQADCQAAAgUNX3Bvc2l0aW9uU2l6ZQAABAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAECW5ld1F0QXN0VwkBBGRpdmQCCQEEbXVsZAIFDl90ZXJtaW5hbFByaWNlBQdfYnNBc3RSBQdfcXRBc3RSCQCVCgMFCW5ld1F0QXN0VwUMREVDSU1BTF9VTklUAAAECWRpcmVjdGlvbgkAZgIFDV9wb3NpdGlvblNpemUAAAQVY3VycmVudE5ldE1hcmtldFZhbHVlCAkBCnN3YXBPdXRwdXQDBQlkaXJlY3Rpb24JAQNhYnMBBQ1fcG9zaXRpb25TaXplBwJfMQQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAluZXdRdEFzdFcJARNnZXRRdW90ZUFzc2V0V2VpZ2h0BAUHX2JzQXN0UgUNX3Bvc2l0aW9uU2l6ZQUHX3F0QXN0UgUOX3Rlcm1pbmFsUHJpY2UECW5ld0JzQXN0VwUMREVDSU1BTF9VTklUBA1tYXJnaW5Ub1ZhdWx0CAkBK2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sQnlWYWx1ZXMHBQ1fcG9zaXRpb25TaXplBRVjdXJyZW50TmV0TWFya2V0VmFsdWUFB19xdEFzdFIFCW5ld1F0QXN0VwUHX2JzQXN0UgUJbmV3QnNBc3RXBQ9QTkxfT1BUSU9OX1NQT1QCXzIJAJUKAwUJbmV3UXRBc3RXBQluZXdCc0FzdFcFDW1hcmdpblRvVmF1bHQBCmdldEZ1bmRpbmcABA91bmRlcmx5aW5nUHJpY2UJARJnZXRPcmFjbGVUd2FwUHJpY2UABA1zcG90VHdhcFByaWNlCQEQZ2V0VHdhcFNwb3RQcmljZQAEB3ByZW1pdW0JAGUCBQ1zcG90VHdhcFByaWNlBQ91bmRlcmx5aW5nUHJpY2UDAwkAAAIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAAABgkAAAIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAAAJAJQKAgAAAAADCQBmAgAABQdwcmVtaXVtBBRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFB3ByZW1pdW0JARRmdW5kaW5nUGVyaW9kRGVjaW1hbAAFB09ORV9EQVkEE2xvbmdQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQEVdG90YWxMb25nUG9zaXRpb25TaXplAAkAlAoCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgQTbG9uZ1ByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFB3ByZW1pdW0JARRmdW5kaW5nUGVyaW9kRGVjaW1hbAAFB09ORV9EQVkEFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAkAlAoCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgEOZ2V0QWRqdXN0ZWRGZWUCAWkQX2Jhc2VGZWVEaXNjb3VudAQKYmFzZUZlZVJhdwkBA2ZlZQAEB2Jhc2VGZWUJAQRtdWxkAgUKYmFzZUZlZVJhdwUQX2Jhc2VGZWVEaXNjb3VudAQNJHQwMzI4OTAzMzQ5OAMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAEECmFydGlmYWN0SWQJANgEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQCGUludmFsaWQgYXR0YWNoZWQgYXJ0aWZhY3QEDGFydGlmYWN0S2luZAkBBHN0ckECCQERbmZ0TWFuYWdlckFkZHJlc3MACQEOdG9Db21wb3NpdGVLZXkCBQxrX3Rva2VuX3R5cGUFCmFydGlmYWN0SWQDCQAAAgUMYXJ0aWZhY3RLaW5kBRhGRUVfUkVEVUNUSU9OX1RPS0VOX1RZUEUECXJlZHVjdGlvbgkBBGludEECCQERbmZ0TWFuYWdlckFkZHJlc3MACQEOdG9Db21wb3NpdGVLZXkCBQ1rX3Rva2VuX3BhcmFtBQphcnRpZmFjdElkBAthZGp1c3RlZEZlZQkBBG11bGQCBQdiYXNlRmVlBQlyZWR1Y3Rpb24JAJQKAgULYWRqdXN0ZWRGZWUGCQACAQIZSW52YWxpZCBhdHRhY2hlZCBhcnRpZmFjdAkAlAoCBQdiYXNlRmVlBwQLYWRqdXN0ZWRGZWUIBQ0kdDAzMjg5MDMzNDk4Al8xBAxidXJuQXJ0aWZhY3QIBQ0kdDAzMjg5MDMzNDk4Al8yCQCUCgIFC2FkanVzdGVkRmVlBQxidXJuQXJ0aWZhY3QBDnVwZGF0ZVNldHRpbmdzCRBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8OX2Z1bmRpbmdQZXJpb2QEX2ZlZQxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0GF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbw9fbWF4UHJpY2VTcHJlYWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtfaW5pdE1hcmdpblJhdGlvBRBfaW5pdE1hcmdpblJhdGlvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8FBF9tbXIJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtfbGlxdWlkYXRpb25GZWVSYXRpbwUUX2xpcXVpZGF0aW9uRmVlUmF0aW8JAMwIAgkBDEludGVnZXJFbnRyeQIFD2tfZnVuZGluZ1BlcmlvZAUOX2Z1bmRpbmdQZXJpb2QJAMwIAgkBDEludGVnZXJFbnRyeQIFBWtfZmVlBQRfZmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rX3NwcmVhZExpbWl0BQxfc3ByZWFkTGltaXQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtfbWF4UHJpY2VJbXBhY3QFD19tYXhQcmljZUltcGFjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZa19wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwUYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrX21heFByaWNlU3ByZWFkBQ9fbWF4UHJpY2VTcHJlYWQFA25pbAENdXBkYXRlRnVuZGluZwURX25leHRGdW5kaW5nQmxvY2skX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24QX2xvbmdGdW5kaW5nUmF0ZRFfc2hvcnRGdW5kaW5nUmF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa19uZXh0RnVuZGluZ0Jsb2NrBRFfbmV4dEZ1bmRpbmdCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgUla19sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUkX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCBSZrX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUlX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19sb25nRnVuZGluZ1JhdGUFEF9sb25nRnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfc2hvcnRGdW5kaW5nUmF0ZQURX3Nob3J0RnVuZGluZ1JhdGUFA25pbAETdXBkYXRlUG9zaXRpb25Bc3NldAIIX2FkZHJlc3MIX2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUPa19wb3NpdGlvbkFzc2V0BQhfYWRkcmVzcwUIX2Fzc2V0SWQFA25pbAEOdXBkYXRlUG9zaXRpb24FCF9hZGRyZXNzBV9zaXplB19tYXJnaW4NX29wZW5Ob3Rpb25hbCBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFCF9hZGRyZXNzBQVfc2l6ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUQa19wb3NpdGlvbk1hcmdpbgUIX2FkZHJlc3MFB19tYXJnaW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFCF9hZGRyZXNzBQ1fb3Blbk5vdGlvbmFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQhfYWRkcmVzcwUgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FA25pbAEKYXBwZW5kVHdhcAEFcHJpY2UECG1pbnV0ZUlkCQBpAgkAaQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wAOgHADwEEHByZXZpb3VzTWludXRlSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUOa19sYXN0TWludXRlSWQAAAMJAGYCBRBwcmV2aW91c01pbnV0ZUlkBQhtaW51dGVJZAkAAgECEVRXQVAgb3V0LW9mLW9yZGVyBAxsYXN0TWludXRlSWQDCQAAAgUQcHJldmlvdXNNaW51dGVJZAAABQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAMJAGYCBQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAQTcHJldkN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUQcHJldmlvdXNNaW51dGVJZAAABAlwcmV2UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFE2tfdHdhcERhdGFMYXN0UHJpY2UCAV8JAKQDAQUQcHJldmlvdXNNaW51dGVJZAUFcHJpY2UEE2xhc3RDdW11bGF0aXZlUHJpY2UJAGQCBRNwcmV2Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBQxsYXN0TWludXRlSWQFCXByZXZQcmljZQQEbGlzdAkBC3B1c2hUb1F1ZXVlAwkBCXN0clRvTGlzdAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUNa19sYXN0RGF0YVN0cgIABQ1UV0FQX0lOVEVSVkFMCQCkAwEFCG1pbnV0ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQkApAMBBQhtaW51dGVJZAUTbGFzdEN1bXVsYXRpdmVQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBQhtaW51dGVJZAUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQCkAwEFCG1pbnV0ZUlkBRBwcmV2aW91c01pbnV0ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rX2xhc3RNaW51dGVJZAUIbWludXRlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUNa19sYXN0RGF0YVN0cgkBCWxpc3RUb1N0cgEFBGxpc3QFA25pbAQYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQCkAwEFCG1pbnV0ZUlkAAAEE3ByZXZDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkAAAECXByZXZQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAUFcHJpY2UEE2xhc3RDdW11bGF0aXZlUHJpY2UJAGQCBRNwcmV2Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBRh0d2FwRGF0YVByZXZpb3VzTWludXRlSWQFCXByZXZQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUIbWludXRlSWQFE2xhc3RDdW11bGF0aXZlUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFE2tfdHdhcERhdGFMYXN0UHJpY2UJAKQDAQUIbWludXRlSWQFBXByaWNlBQNuaWwBEXVwZGF0ZUFtbVJlc2VydmVzAgdfcXRBc3RSB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfcXVvdGVBc3NldFJlc2VydmUFB19xdEFzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfYmFzZUFzc2V0UmVzZXJ2ZQUHX2JzQXN0UgUDbmlsARB1cGRhdGVBbW1XZWlnaHRzAgdfcXRBc3RXB19ic0FzdFcJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfcXVvdGVBc3NldFdlaWdodAUHX3F0QXN0VwkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19iYXNlQXNzZXRXZWlnaHQFB19ic0FzdFcFA25pbAEJdXBkYXRlQW1tBwdfcXRBc3RSB19ic0FzdFIXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyFV9vcGVuSW50ZXJlc3ROb3Rpb25hbBZfdG90YWxMb25nUG9zaXRpb25TaXplF190b3RhbFNob3J0UG9zaXRpb25TaXplBAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwADCQECIT0CCQBlAgUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQUXX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGEludmFsaWQgQU1NIHN0YXRlIGRhdGE6IAkApAMBBRZfdG90YWxMb25nUG9zaXRpb25TaXplAgQgKyAgCQCkAwEFF190b3RhbFNob3J0UG9zaXRpb25TaXplAgQgIT0gCQCkAwEFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQDOCAIJAM4IAgkBEXVwZGF0ZUFtbVJlc2VydmVzAgUHX3F0QXN0UgUHX2JzQXN0UgkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa190b3RhbFBvc2l0aW9uU2l6ZQUXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtfY3VtdWxhdGl2ZU5vdGlvbmFsBRhfY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFFmtfb3BlbkludGVyZXN0Tm90aW9uYWwFFV9vcGVuSW50ZXJlc3ROb3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXa190b3RhbExvbmdQb3NpdGlvblNpemUFFl90b3RhbExvbmdQb3NpdGlvblNpemUJAMwIAgkBDEludGVnZXJFbnRyeQIFGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQUXX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFA25pbAkBCmFwcGVuZFR3YXABCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXAQ5kZWxldGVQb3NpdGlvbgEIX2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFLmtfcG9zaXRpb25MYXN0VXBkYXRlZEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFD2tfcG9zaXRpb25Bc3NldAUIX2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFFGtfcG9zaXRpb25DbG9zZWREYXRlBQhfYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAFA25pbAEId2l0aGRyYXcCCF9hZGRyZXNzB19hbW91bnQEB2JhbGFuY2UJAPAHAgUEdGhpcwkBCnF1b3RlQXNzZXQAAwkAZgIFB19hbW91bnQFB2JhbGFuY2UJAAIBCQCsAgIJAKwCAgkArAICAhNVbmFibGUgdG8gd2l0aGRyYXcgCQCkAwEFB19hbW91bnQCFyBmcm9tIGNvbnRyYWN0IGJhbGFuY2UgCQCkAwEFB2JhbGFuY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIX2FkZHJlc3MFB19hbW91bnQJAQpxdW90ZUFzc2V0AAUDbmlsAQ11cGRhdGVCYWxhbmNlAQFpAwkAZgIAAAUBaQkAAgECB0JhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtfYmFsYW5jZQUBaQUDbmlsAQt0cmFuc2ZlckZlZQEBaQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEOc3Rha2luZ0FkZHJlc3MABQFpCQEKcXVvdGVBc3NldAAFA25pbAEOZG9CdXJuQXJ0aWZhY3QCDV9idXJuQXJ0aWZhY3QBaQMFDV9idXJuQXJ0aWZhY3QJAMwIAgkBBEJ1cm4CCQETdmFsdWVPckVycm9yTWVzc2FnZQIICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAIQSW52YWxpZCBhcnRpZmFjdAABBQNuaWwFA25pbAEXaXNTYW1lQXNzZXRPck5vUG9zaXRpb24CB190cmFkZXIIX2Fzc2V0SWQED29sZFBvc2l0aW9uU2l6ZQgJAQtnZXRQb3NpdGlvbgEFB190cmFkZXICXzEDCQAAAgUPb2xkUG9zaXRpb25TaXplAAAGCQAAAgkBEGdldFBvc2l0aW9uQXNzZXQBBQdfdHJhZGVyBQhfYXNzZXRJZAELaXNTYW1lQXNzZXQCB190cmFkZXIIX2Fzc2V0SWQJAAACCQEQZ2V0UG9zaXRpb25Bc3NldAEFB190cmFkZXIFCF9hc3NldElkAR5nZXRCb3Jyb3dlZEJ5VHJhZGVySW5NYXJrZXRLZXkDBF9hbW0IX2Fzc2V0SWQHX3RyYWRlcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUga190cmFkZXJfbWFya2V0X2Fzc2V0X2NvbGxhdGVyYWwCAV8FBF9hbW0CAV8FCF9hc3NldElkAgFfBQdfdHJhZGVyARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQdfdHJhZGVyBA1wb3NpdGlvbkFzc2V0CQEQZ2V0UG9zaXRpb25Bc3NldAEFB190cmFkZXIDCQAAAgUNcG9zaXRpb25Bc3NldAkA2AQBCQEKcXVvdGVBc3NldAAJAJQKAgAABQ1wb3NpdGlvbkFzc2V0BANrZXkJAR5nZXRCb3Jyb3dlZEJ5VHJhZGVySW5NYXJrZXRLZXkDCQClCAEFBHRoaXMFDXBvc2l0aW9uQXNzZXQFB190cmFkZXIEBmJvcnJvdwkBC3ZhbHVlT3JFbHNlAgkAmggCCQERY29sbGF0ZXJhbEFkZHJlc3MABQNrZXkAAAkAlAoCBQZib3Jyb3cFDXBvc2l0aW9uQXNzZXQVAWkBBXBhdXNlAAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhpJbnZhbGlkIHRvZ2dsZVBhdXNlIHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIa19wYXVzZWQGBQNuaWwBaQEHdW5wYXVzZQADCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIaSW52YWxpZCB0b2dnbGVQYXVzZSBwYXJhbXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCGtfcGF1c2VkBwUDbmlsAWkBDGFkZExpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIbSW52YWxpZCBhZGRMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEB19xdEFzdFcJAQZxdEFzdFcABAdfYnNBc3RXCQEGYnNBc3RXAAQFcHJpY2UJAQRkaXZkAgkBBG11bGQCBQdfcXRBc3RSBQdfcXRBc3RXCQEEbXVsZAIFB19ic0FzdFIFB19ic0FzdFcEFGJhc2VBc3NldEFtb3VudFRvQWRkCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGQCBQdfYnNBc3RSBRRiYXNlQXNzZXRBbW91bnRUb0FkZAkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBD3JlbW92ZUxpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIeSW52YWxpZCByZW1vdmVMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEB19xdEFzdFcJAQZxdEFzdFcABAdfYnNBc3RXCQEGYnNBc3RXAAQFcHJpY2UJAQRkaXZkAgkBBG11bGQCBQdfcXRBc3RSBQdfcXRBc3RXCQEEbXVsZAIFB19ic0FzdFIFB19ic0FzdFcEF2Jhc2VBc3NldEFtb3VudFRvUmVtb3ZlCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGUCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGUCBQdfYnNBc3RSBRdiYXNlQXNzZXRBbW91bnRUb1JlbW92ZQkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBDmNoYW5nZVNldHRpbmdzCRBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8OX2Z1bmRpbmdQZXJpb2QEX2ZlZQxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0GF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbw9fbWF4UHJpY2VTcHJlYWQDCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIdSW52YWxpZCBjaGFuZ2VTZXR0aW5ncyBwYXJhbXMJAQ51cGRhdGVTZXR0aW5ncwkFEF9pbml0TWFyZ2luUmF0aW8FBF9tbXIFFF9saXF1aWRhdGlvbkZlZVJhdGlvBQ5fZnVuZGluZ1BlcmlvZAUEX2ZlZQUMX3NwcmVhZExpbWl0BQ9fbWF4UHJpY2VJbXBhY3QFGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwUPX21heFByaWNlU3ByZWFkAWkBCmluaXRpYWxpemUOB19xdEFzdFIHX2JzQXN0Ug5fZnVuZGluZ1BlcmlvZBBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8EX2ZlZQdfb3JhY2xlCl9vcmFjbGVLZXkMX2Nvb3JkaW5hdG9yDF9zcHJlYWRMaW1pdA9fbWF4UHJpY2VJbXBhY3QYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvD19tYXhQcmljZVNwcmVhZAMDAwMDAwMDAwMDAwkAZwIAAAUHX3F0QXN0UgYJAGcCAAAFB19ic0FzdFIGCQBnAgAABQ5fZnVuZGluZ1BlcmlvZAYJAGcCAAAFEF9pbml0TWFyZ2luUmF0aW8GCQBnAgAABQRfbW1yBgkAZwIAAAUUX2xpcXVpZGF0aW9uRmVlUmF0aW8GCQBnAgAABQRfZmVlBgkAZwIAAAUMX3NwcmVhZExpbWl0BgkAZwIAAAUPX21heFByaWNlSW1wYWN0BgkAZwIAAAUYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBgkAZwIAAAUPX21heFByaWNlU3ByZWFkBgkBC2luaXRpYWxpemVkAAkAAgECHUludmFsaWQgaW5pdGlhbGl6ZSBwYXJhbWV0ZXJzCQDOCAIJAM4IAgkAzggCCQDOCAIJAQl1cGRhdGVBbW0HBQdfcXRBc3RSBQdfYnNBc3RSAAAAAAAAAAAAAAkBDnVwZGF0ZVNldHRpbmdzCQUQX2luaXRNYXJnaW5SYXRpbwUEX21tcgUUX2xpcXVpZGF0aW9uRmVlUmF0aW8FDl9mdW5kaW5nUGVyaW9kBQRfZmVlBQxfc3ByZWFkTGltaXQFD19tYXhQcmljZUltcGFjdAUYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBQ9fbWF4UHJpY2VTcHJlYWQJAQ11cGRhdGVGdW5kaW5nBQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQ5fZnVuZGluZ1BlcmlvZAAAAAAAAAAACQENdXBkYXRlQmFsYW5jZQEAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa19pbml0aWFsaXplZAYJAMwIAgkBC1N0cmluZ0VudHJ5AgUFa19vcmEFB19vcmFjbGUJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa19vcmFfa2V5BQpfb3JhY2xlS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzBQxfY29vcmRpbmF0b3IFA25pbAFpARJzZXRJbml0TWFyZ2luUmF0aW8BEF9pbml0TWFyZ2luUmF0aW8DAwkAZwIAAAUQX2luaXRNYXJnaW5SYXRpbwYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECJUludmFsaWQgc2V0SW5pdE1hcmdpblJhdGlvIHBhcmFtZXRlcnMJAQ51cGRhdGVTZXR0aW5ncwkFEF9pbml0TWFyZ2luUmF0aW8JARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEQZnVuZGluZ1BlcmlvZFJhdwAJAQNmZWUACQELc3ByZWFkTGltaXQACQEObWF4UHJpY2VJbXBhY3QACQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ACQEObWF4UHJpY2VTcHJlYWQAAWkBEGRlY3JlYXNlUG9zaXRpb24DB19hbW91bnQJX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwMDAwMDCQBnAgAABQdfYW1vdW50BgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMJAQRkaXZkAgUMREVDSU1BTF9VTklUBQlfbGV2ZXJhZ2UJAQ9pbml0TWFyZ2luUmF0aW8ABgYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQZwYXVzZWQACQACAQIjSW52YWxpZCBkZWNyZWFzZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDQ1NDc4NDU2MzAJAQtnZXRQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA0NTQ3ODQ1NjMwAl8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDQ1NDc4NDU2MzACXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNDU0Nzg0NTYzMAJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA0NTQ3ODQ1NjMwAl80BApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDA0NTgwMzQ1OTE5CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCCQClCAEIBQFpBmNhbGxlcgUPUE5MX09QVElPTl9TUE9UBBNvbGRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwNDU4MDM0NTkxOQJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDQ1ODAzNDU5MTkCXzIEDSR0MDQ1OTI1NDg0NzQDCQBmAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsBA0kdDA0NjMwMjQ2NTIxCQEJc3dhcElucHV0AgUFaXNBZGQFDG9wZW5Ob3Rpb25hbAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCAUNJHQwNDYzMDI0NjUyMQJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDQ2MzAyNDY1MjECXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDQ2MzAyNDY1MjECXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA0NjMwMjQ2NTIxAl80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDQ2MzAyNDY1MjECXzUEGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50BRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMHCQACAQkArAICCQCsAgIJAKwCAgIlVG9vIGxpdHRsZSBiYXNlIGFzc2V0IGV4Y2hhbmdlZCwgZ290IAkApAMBBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMCCiBleHBlY3RlZCAJAKQDAQUTX21pbkJhc2VBc3NldEFtb3VudAQLcmVhbGl6ZWRQbmwJAQRkaXZkAgkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUEDSR0MDQ2OTU4NDcyMDMJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC3JlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDA0Njk1ODQ3MjAzAl8xBAdiYWREZWJ0CAUNJHQwNDY5NTg0NzIwMwJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDA0Njk1ODQ3MjAzAl8zBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQxvcGVuTm90aW9uYWwEEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIFDXVucmVhbGl6ZWRQbmwFC3JlYWxpemVkUG5sBBJyZW1haW5PcGVuTm90aW9uYWwDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQBlAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkAZAIFEnVucmVhbGl6ZWRQbmxBZnRlcgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUJAJ0KCwUPbmV3UG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4JAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUMb3Blbk5vdGlvbmFsCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQACAQIUQ2xvc2UgcG9zaXRpb24gZmlyc3QED25ld1Bvc2l0aW9uU2l6ZQgFDSR0MDQ1OTI1NDg0NzQCXzEEF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luCAUNJHQwNDU5MjU0ODQ3NAJfMgQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA0NTkyNTQ4NDc0Al8zBBRuZXdQb3NpdGlvbkxhdGVzdENQRggFDSR0MDQ1OTI1NDg0NzQCXzQEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDQ1OTI1NDg0NzQCXzUEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0NTkyNTQ4NDc0Al82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNDU5MjU0ODQ3NAJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA0NTkyNTQ4NDc0Al84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNDU5MjU0ODQ3NAJfOQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA0NTkyNTQ4NDc0A18xMAQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNDU5MjU0ODQ3NANfMTEEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9uZXdQb3NpdGlvblNpemUFF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25MYXRlc3RDUEYJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGluY3JlYXNlUG9zaXRpb24ECl9kaXJlY3Rpb24JX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQIX3JlZkxpbmsEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkApQgBCAUBaQZjYWxsZXIECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAhfYXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtfYXNzZXRJZFN0cgkA2AQBCQEFdmFsdWUBBQhfYXNzZXRJZAQMaXNRdW90ZUFzc2V0CQAAAgUIX2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAQRaXNDb2xsYXRlcmFsQXNzZXQJARBpc1doaXRlbGlzdEFzc2V0AQULX2Fzc2V0SWRTdHIDAwMDAwMDAwkBAiE9AgUKX2RpcmVjdGlvbgUIRElSX0xPTkcJAQIhPQIFCl9kaXJlY3Rpb24FCURJUl9TSE9SVAcGCQBnAgAABQpfcmF3QW1vdW50BgkBASEBCQELaW5pdGlhbGl6ZWQABgMJAQEhAQUMaXNRdW90ZUFzc2V0CQEBIQEFEWlzQ29sbGF0ZXJhbEFzc2V0BwYJAQEhAQkBF2lzU2FtZUFzc2V0T3JOb1Bvc2l0aW9uAgUHX3RyYWRlcgULX2Fzc2V0SWRTdHIGCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwkBBGRpdmQCBQxERUNJTUFMX1VOSVQFCV9sZXZlcmFnZQkBD2luaXRNYXJnaW5SYXRpbwAGBgkBBnBhdXNlZAAJAAIBAiNJbnZhbGlkIGluY3JlYXNlUG9zaXRpb24gcGFyYW1ldGVycwQQZG9HZXRGZWVEaXNjb3VudAkA/AcECQEMbWluZXJBZGRyZXNzAAISY29tcHV0ZUZlZURpc2NvdW50CQDMCAIFB190cmFkZXIFA25pbAUDbmlsAwkAAAIFEGRvR2V0RmVlRGlzY291bnQFEGRvR2V0RmVlRGlzY291bnQEC2ZlZURpc2NvdW50BAckbWF0Y2gwBRBkb0dldEZlZURpc2NvdW50AwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAkAAgECIUludmFsaWQgY29tcHV0ZUZlZURpc2NvdW50IHJlc3VsdAQNJHQwNTAxMzc1MDIwMQkBDmdldEFkanVzdGVkRmVlAgUBaQULZmVlRGlzY291bnQEC2FkanVzdGVkRmVlCAUNJHQwNTAxMzc1MDIwMQJfMQQMYnVybkFydGlmYWN0CAUNJHQwNTAxMzc1MDIwMQJfMgQMcmF3RmVlQW1vdW50CQEEbXVsZAIFCl9yYXdBbW91bnQFC2FkanVzdGVkRmVlBAdfYW1vdW50CQBlAgUKX3Jhd0Ftb3VudAUMcmF3RmVlQW1vdW50BBNkaXN0cmlidXRlRmVlQW1vdW50AwURaXNDb2xsYXRlcmFsQXNzZXQECGRvQm9ycm93CQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACBmJvcnJvdwkAzAgCBQdfdHJhZGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCF9hc3NldElkBQdfYW1vdW50BQNuaWwDCQAAAgUIZG9Cb3Jyb3cFCGRvQm9ycm93BA1iYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAAACBQ1iYWxhbmNlQmVmb3JlBQ1iYWxhbmNlQmVmb3JlBAZkb1N3YXAJAPwHBAkBC3N3YXBBZGRyZXNzAAIEc3dhcAkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIX2Fzc2V0SWQFDHJhd0ZlZUFtb3VudAUDbmlsAwkAAAIFBmRvU3dhcAUGZG9Td2FwBAxiYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwkBCnF1b3RlQXNzZXQAAwkAAAIFDGJhbGFuY2VBZnRlcgUMYmFsYW5jZUFmdGVyBA9leGNoYW5nZWRBbW91bnQJAGUCBQxiYWxhbmNlQWZ0ZXIFDWJhbGFuY2VCZWZvcmUDCQAAAgUPZXhjaGFuZ2VkQW1vdW50BQ9leGNoYW5nZWRBbW91bnQFD2V4Y2hhbmdlZEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUMcmF3RmVlQW1vdW50AwkAAAIFE2Rpc3RyaWJ1dGVGZWVBbW91bnQFE2Rpc3RyaWJ1dGVGZWVBbW91bnQEDnJlZmVycmVyRmVlQW55CQD8BwQJAQ9yZWZlcnJhbEFkZHJlc3MAAhVhY2NlcHRQYXltZW50V2l0aExpbmsJAMwIAgUHX3RyYWRlcgkAzAgCBQhfcmVmTGluawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFE2Rpc3RyaWJ1dGVGZWVBbW91bnQFA25pbAMJAAACBQ5yZWZlcnJlckZlZUFueQUOcmVmZXJyZXJGZWVBbnkEC3JlZmVycmVyRmVlBAckbWF0Y2gwBQ5yZWZlcnJlckZlZUFueQMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgJAAIBAhNJbnZhbGlkIHJlZmVycmVyRmVlBAlmZWVBbW91bnQJAGUCBRNkaXN0cmlidXRlRmVlQW1vdW50BQtyZWZlcnJlckZlZQQNJHQwNTE1MTc1MTY1NwkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNTE1MTc1MTY1NwJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA1MTUxNzUxNjU3Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDUxNTE3NTE2NTcCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNTE1MTc1MTY1NwJfNAQNaXNOZXdQb3NpdGlvbgkAAAIFD29sZFBvc2l0aW9uU2l6ZQAABA9pc1NhbWVEaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAAACBQpfZGlyZWN0aW9uBQhESVJfTE9ORwkAAAIFCl9kaXJlY3Rpb24FCURJUl9TSE9SVAQOZXhwYW5kRXhpc3RpbmcDCQEBIQEFDWlzTmV3UG9zaXRpb24FD2lzU2FtZURpcmVjdGlvbgcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEDSR0MDUxOTQ2NTQ1MzEDAwUNaXNOZXdQb3NpdGlvbgYFDmV4cGFuZEV4aXN0aW5nBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDA1MjM3MDUyNTc2CQEJc3dhcElucHV0AgUFaXNBZGQFDG9wZW5Ob3Rpb25hbAQVYW1vdW50QmFzZUFzc2V0Qm91Z2h0CAUNJHQwNTIzNzA1MjU3NgJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDUyMzcwNTI1NzYCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDUyMzcwNTI1NzYCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA1MjM3MDUyNTc2Al80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDUyMzcwNTI1NzYCXzUDAwkBAiE9AgUTX21pbkJhc2VBc3NldEFtb3VudAAACQBmAgUTX21pbkJhc2VBc3NldEFtb3VudAkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAcJAAIBCQCsAgIJAKwCAgkArAICAg1MaW1pdCBlcnJvcjogCQCkAwEJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQCAyA8IAkApAMBBRNfbWluQmFzZUFzc2V0QW1vdW50BA9uZXdQb3NpdGlvblNpemUJAGQCBQ9vbGRQb3NpdGlvblNpemUFFWFtb3VudEJhc2VBc3NldEJvdWdodAQZaW5jcmVhc2VNYXJnaW5SZXF1aXJlbWVudAkBBGRpdmQCBQxvcGVuTm90aW9uYWwFCV9sZXZlcmFnZQQNJHQwNTI5NTc1MzE5NgkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgUZaW5jcmVhc2VNYXJnaW5SZXF1aXJlbWVudAQMcmVtYWluTWFyZ2luCAUNJHQwNTI5NTc1MzE5NgJfMQQCeDEIBQ0kdDA1Mjk1NzUzMTk2Al8yBAJ4MggFDSR0MDUyOTU3NTMxOTYCXzMDCQEBIQEJARlyZXF1aXJlTm90T3ZlclNwcmVhZExpbWl0AgUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCQACAQIVT3ZlciBtYXggc3ByZWFkIGxpbWl0CQCdCgsFD25ld1Bvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luCQBkAgUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9uZXdQb3NpdGlvblNpemUFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIJAGQCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABQxvcGVuTm90aW9uYWwJAGQCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAAACQBkAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplCQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AAAEDG9wZW5Ob3Rpb25hbAkBBG11bGQCBQdfYW1vdW50BQlfbGV2ZXJhZ2UEDSR0MDU0MjI0NTQzNDAJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIJAKUIAQgFAWkGY2FsbGVyBQ9QTkxfT1BUSU9OX1NQT1QEE29sZFBvc2l0aW9uTm90aW9uYWwIBQ0kdDA1NDIyNDU0MzQwAl8xBA11bnJlYWxpemVkUG5sCAUNJHQwNTQyMjQ1NDM0MAJfMgMJAGYCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBQxvcGVuTm90aW9uYWwJAAIBAi5Vc2UgZGVjcmVhc2VQb3NpdGlvbiB0byBkZWNyZWFzZSBwb3NpdGlvbiBzaXplCQACAQIUQ2xvc2UgcG9zaXRpb24gZmlyc3QED25ld1Bvc2l0aW9uU2l6ZQgFDSR0MDUxOTQ2NTQ1MzECXzEEF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luCAUNJHQwNTE5NDY1NDUzMQJfMgQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA1MTk0NjU0NTMxAl8zBBRuZXdQb3NpdGlvbkxhdGVzdENQRggFDSR0MDUxOTQ2NTQ1MzECXzQEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDUxOTQ2NTQ1MzECXzUEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1MTk0NjU0NTMxAl82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTE5NDY1NDUzMQJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA1MTk0NjU0NTMxAl84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNTE5NDY1NDUzMQJfOQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA1MTk0NjU0NTMxA18xMAQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNTE5NDY1NDUzMQNfMTEEDGZlZVRvU3Rha2VycwkAaQIFCWZlZUFtb3VudAACBA5mZWVUb0luc3VyYW5jZQkAZQIFCWZlZUFtb3VudAUMZmVlVG9TdGFrZXJzBAVzdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIJYWRkTG9ja2VkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUHX2Ftb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIHYWRkRnJlZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFDmZlZVRvSW5zdXJhbmNlBQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQJbm90aWZ5RmVlCQD8BwQJAQxtaW5lckFkZHJlc3MAAgpub3RpZnlGZWVzCQDMCAIFB190cmFkZXIJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBQlub3RpZnlGZWUFCW5vdGlmeUZlZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD25ld1Bvc2l0aW9uU2l6ZQUXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxhdGVzdENQRgkBE3VwZGF0ZVBvc2l0aW9uQXNzZXQCBQdfdHJhZGVyBQtfYXNzZXRJZFN0cgkBCXVwZGF0ZUFtbQcFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIJAQt0cmFuc2ZlckZlZQEFDGZlZVRvU3Rha2VycwkBDXVwZGF0ZUJhbGFuY2UBCQBkAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkBDmRvQnVybkFydGlmYWN0AgUMYnVybkFydGlmYWN0BQFpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWFkZE1hcmdpbgAEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkApQgBCAUBaQZjYWxsZXIECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAhfYXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtfYXNzZXRJZFN0cgkA2AQBCQEFdmFsdWUBBQhfYXNzZXRJZAQMaXNRdW90ZUFzc2V0CQAAAgUIX2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAQRaXNDb2xsYXRlcmFsQXNzZXQJARBpc1doaXRlbGlzdEFzc2V0AQULX2Fzc2V0SWRTdHIDAwMDAwMJAQEhAQUMaXNRdW90ZUFzc2V0CQEBIQEFEWlzQ29sbGF0ZXJhbEFzc2V0BwYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQEhAQkBC2lzU2FtZUFzc2V0AgUHX3RyYWRlcgULX2Fzc2V0SWRTdHIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgECHEludmFsaWQgYWRkTWFyZ2luIHBhcmFtZXRlcnMEEGRvR2V0RmVlRGlzY291bnQJAPwHBAkBDG1pbmVyQWRkcmVzcwACEmNvbXB1dGVGZWVEaXNjb3VudAkAzAgCBQdfdHJhZGVyBQNuaWwFA25pbAMJAAACBRBkb0dldEZlZURpc2NvdW50BRBkb0dldEZlZURpc2NvdW50BAtmZWVEaXNjb3VudAQHJG1hdGNoMAUQZG9HZXRGZWVEaXNjb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgJAAIBAiFJbnZhbGlkIGNvbXB1dGVGZWVEaXNjb3VudCByZXN1bHQEDSR0MDU2NjA4NTY2NzIJAQ5nZXRBZGp1c3RlZEZlZQIFAWkFC2ZlZURpc2NvdW50BAthZGp1c3RlZEZlZQgFDSR0MDU2NjA4NTY2NzICXzEEDGJ1cm5BcnRpZmFjdAgFDSR0MDU2NjA4NTY2NzICXzIEDHJhd0ZlZUFtb3VudAkBBG11bGQCBQpfcmF3QW1vdW50BQthZGp1c3RlZEZlZQQHX2Ftb3VudAkAZQIFCl9yYXdBbW91bnQFDHJhd0ZlZUFtb3VudAQTZGlzdHJpYnV0ZUZlZUFtb3VudAMFEWlzQ29sbGF0ZXJhbEFzc2V0BAhkb0JvcnJvdwkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAgZib3Jyb3cJAMwIAgUHX3RyYWRlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhfYXNzZXRJZAUHX2Ftb3VudAUDbmlsAwkAAAIFCGRvQm9ycm93BQhkb0JvcnJvdwQNYmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQAAAgUNYmFsYW5jZUJlZm9yZQUNYmFsYW5jZUJlZm9yZQQGZG9Td2FwCQD8BwQJAQtzd2FwQWRkcmVzcwACBHN3YXAJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCF9hc3NldElkBQxyYXdGZWVBbW91bnQFA25pbAMJAAACBQZkb1N3YXAFBmRvU3dhcAQMYmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAAACBQxiYWxhbmNlQWZ0ZXIFDGJhbGFuY2VBZnRlcgQPZXhjaGFuZ2VkQW1vdW50CQBlAgUMYmFsYW5jZUFmdGVyBQ1iYWxhbmNlQmVmb3JlAwkAAAIFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50BQ9leGNoYW5nZWRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FDHJhd0ZlZUFtb3VudAMJAAACBRNkaXN0cmlidXRlRmVlQW1vdW50BRNkaXN0cmlidXRlRmVlQW1vdW50BA5yZWZlcnJlckZlZUFueQkA/AcECQEPcmVmZXJyYWxBZGRyZXNzAAINYWNjZXB0UGF5bWVudAkAzAgCBQdfdHJhZGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUTZGlzdHJpYnV0ZUZlZUFtb3VudAUDbmlsAwkAAAIFDnJlZmVycmVyRmVlQW55BQ5yZWZlcnJlckZlZUFueQQLcmVmZXJyZXJGZWUEByRtYXRjaDAFDnJlZmVycmVyRmVlQW55AwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAkAAgECE0ludmFsaWQgcmVmZXJyZXJGZWUECWZlZUFtb3VudAkAZQIFE2Rpc3RyaWJ1dGVGZWVBbW91bnQFC3JlZmVycmVyRmVlBA0kdDA1Nzk3MTU4MTExCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA1Nzk3MTU4MTExAl8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDU3OTcxNTgxMTECXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNTc5NzE1ODExMQJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA1Nzk3MTU4MTExAl80BAxmZWVUb1N0YWtlcnMJAGkCBQlmZWVBbW91bnQAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBQlmZWVBbW91bnQFDGZlZVRvU3Rha2VycwQFc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACCWFkZExvY2tlZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UECW5vdGlmeUZlZQkA/AcECQEMbWluZXJBZGRyZXNzAAIKbm90aWZ5RmVlcwkAzAgCBQdfdHJhZGVyCQDMCAIFCWZlZUFtb3VudAUDbmlsBQNuaWwDCQAAAgUJbm90aWZ5RmVlBQlub3RpZnlGZWUJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD29sZFBvc2l0aW9uU2l6ZQkAZAIFEW9sZFBvc2l0aW9uTWFyZ2luBQdfYW1vdW50BRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUb2xkUG9zaXRpb25Mc3RVcGRDUEYJAQt0cmFuc2ZlckZlZQEFDGZlZVRvU3Rha2VycwkBDXVwZGF0ZUJhbGFuY2UBCQBkAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkBDmRvQnVybkFydGlmYWN0AgUMYnVybkFydGlmYWN0BQFpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDHJlbW92ZU1hcmdpbgEHX2Ftb3VudAQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBAdfdHJhZGVyCQClCAEIBQFpBmNhbGxlcgMDAwMJAGcCAAAFB19hbW91bnQGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUHX3RyYWRlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQIfSW52YWxpZCByZW1vdmVNYXJnaW4gcGFyYW1ldGVycwQNJHQwNTkyMTc1OTM1NwkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNTkyMTc1OTM1NwJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA1OTIxNzU5MzU3Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDU5MjE3NTkzNTcCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNTkyMTc1OTM1NwJfNAQLbWFyZ2luRGVsdGEJAQEtAQUHX2Ftb3VudAQNJHQwNTkzOTQ1OTU3MwkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULbWFyZ2luRGVsdGEEDHJlbWFpbk1hcmdpbggFDSR0MDU5Mzk0NTk1NzMCXzEEB2JhZERlYnQIBQ0kdDA1OTM5NDU5NTczAl8yAwkBAiE9AgUHYmFkRGVidAAACQACAQIdSW52YWxpZCByZW1vdmVkIG1hcmdpbiBhbW91bnQEC21hcmdpblJhdGlvCQEPY2FsY01hcmdpblJhdGlvAwUMcmVtYWluTWFyZ2luBQdiYWREZWJ0BRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAMJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DBQttYXJnaW5SYXRpbwkBD2luaXRNYXJnaW5SYXRpbwAGCQACAQkArAICCQCsAgIJAKwCAgIZVG9vIG11Y2ggbWFyZ2luIHJlbW92ZWQ6IAkApAMBBQttYXJnaW5SYXRpbwIDIDwgCQCkAwEJAQ9pbml0TWFyZ2luUmF0aW8ABA1xdW90ZUFzc2V0U3RyCQDYBAEJAQpxdW90ZUFzc2V0AAQNJHQwNjAwMTc2MDA3MQkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDYwMDE3NjAwNzECXzEEB2Fzc2V0SWQIBQ0kdDA2MDAxNzYwMDcxAl8yBAd0b1JlcGF5AwkAZgIFB19hbW91bnQFCGJvcnJvd2VkBQhib3Jyb3dlZAUHX2Ftb3VudAQKdG9XaXRoZHJhdwMJAGYCBQhib3Jyb3dlZAUHX2Ftb3VudAAACQBlAgUHX2Ftb3VudAUIYm9ycm93ZWQEC2ZpbmFsQm9ycm93CQBlAgUIYm9ycm93ZWQFB3RvUmVwYXkEFXN3aXRjaFBvc2l0aW9uVG9RdW90ZQMJAGYCBQtmaW5hbEJvcnJvdwAABQNuaWwJARN1cGRhdGVQb3NpdGlvbkFzc2V0AgUHX3RyYWRlcgUNcXVvdGVBc3NldFN0cgQNZG9TYW5pdHlDaGVjawMJAQIhPQIJAGQCBQd0b1JlcGF5BQp0b1dpdGhkcmF3BQdfYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCHRvUmVwYXk9CQCkAwEFB3RvUmVwYXkCDiArIHRvV2l0aGRyYXc9CQCkAwEFCnRvV2l0aGRyYXcCBCAhPSAJAKQDAQUHX2Ftb3VudAUDbmlsAwkAAAIFDWRvU2FuaXR5Q2hlY2sFDWRvU2FuaXR5Q2hlY2sECWRvVW5zdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIOd2l0aGRyYXdMb2NrZWQJAMwIAgUHX2Ftb3VudAUDbmlsBQNuaWwDCQAAAgUJZG9VbnN0YWtlBQlkb1Vuc3Rha2UEFnJldHVybkNvbGxhdGVyYWxBY3Rpb24DCQBmAgUHdG9SZXBheQAABAdkb1JlcGF5CQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACBXJlcGF5CQDMCAIFB190cmFkZXIJAMwIAgUHYXNzZXRJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB3RvUmVwYXkFA25pbAMJAAACBQdkb1JlcGF5BQdkb1JlcGF5CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9SZXBheQkA2QQBBQdhc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBRZyZXR1cm5Db2xsYXRlcmFsQWN0aW9uBRZyZXR1cm5Db2xsYXRlcmFsQWN0aW9uCQDOCAIJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD29sZFBvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luBRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9vbGRQb3NpdGlvblNpemUDCQBmAgUKdG9XaXRoZHJhdwAACQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFCnRvV2l0aGRyYXcFA25pbAkBDXVwZGF0ZUJhbGFuY2UBCQBlAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAUVc3dpdGNoUG9zaXRpb25Ub1F1b3RlBRZyZXR1cm5Db2xsYXRlcmFsQWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNsb3NlUG9zaXRpb24ABARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEB190cmFkZXIJAQ9nZXRBY3R1YWxDYWxsZXIBBQFpBA5fdHJhZGVyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFB190cmFkZXICDkludmFsaWQgY2FsbGVyAwMDCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUHX3RyYWRlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQIgSW52YWxpZCBjbG9zZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDYyMzIxNjI2OTkJARVpbnRlcm5hbENsb3NlUG9zaXRpb24CBQdfdHJhZGVyBgQCeDEIBQ0kdDA2MjMyMTYyNjk5Al8xBA9wb3NpdGlvbkJhZERlYnQIBQ0kdDA2MjMyMTYyNjk5Al8yBAtyZWFsaXplZFBubAgFDSR0MDYyMzIxNjI2OTkCXzMEDW1hcmdpblRvVmF1bHQIBQ0kdDA2MjMyMTYyNjk5Al80BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNjIzMjE2MjY5OQJfNQQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNjIzMjE2MjY5OQJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDYyMzIxNjI2OTkCXzcEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwNjIzMjE2MjY5OQJfOAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDYyMzIxNjI2OTkCXzkEAngyCAUNJHQwNjIzMjE2MjY5OQNfMTAEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNjIzMjE2MjY5OQNfMTEED3RvdGFsU2hvcnRBZnRlcggFDSR0MDYyMzIxNjI2OTkDXzEyAwkAZgIFD3Bvc2l0aW9uQmFkRGVidAAACQACAQImVW5hYmxlIHRvIGNsb3NlIHBvc2l0aW9uIHdpdGggYmFkIGRlYnQEDndpdGhkcmF3QW1vdW50CQEDYWJzAQUNbWFyZ2luVG9WYXVsdAQKYW1tQmFsYW5jZQkAZQIJAQhjYmFsYW5jZQAFDndpdGhkcmF3QW1vdW50BA0kdDA2MzAyMzYzNTM4AwkAZgIAAAUKYW1tQmFsYW5jZQkAlAoCAAAJAQNhYnMBBQphbW1CYWxhbmNlCQCUCgIFCmFtbUJhbGFuY2UAAAQNYW1tTmV3QmFsYW5jZQgFDSR0MDYzMDIzNjM1MzgCXzEEA3gxMQgFDSR0MDYzMDIzNjM1MzgCXzIEB3Vuc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACDndpdGhkcmF3TG9ja2VkCQDMCAIFDndpdGhkcmF3QW1vdW50BQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBA0kdDA2Mzc1MDYzODA0CQETZ2V0Qm9ycm93ZWRCeVRyYWRlcgEFB190cmFkZXIECGJvcnJvd2VkCAUNJHQwNjM3NTA2MzgwNAJfMQQHYXNzZXRJZAgFDSR0MDYzNzUwNjM4MDQCXzIEDSR0MDYzODE5NjQ3MzYDCQBmAgUIYm9ycm93ZWQAAAMJAGcCBQ53aXRoZHJhd0Ftb3VudAUIYm9ycm93ZWQEB2RvUmVwYXkJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIFcmVwYXkJAMwIAgUHX3RyYWRlcgkAzAgCBQdhc3NldElkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUIYm9ycm93ZWQFA25pbAMJAAACBQdkb1JlcGF5BQdkb1JlcGF5CQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOX3RyYWRlckFkZHJlc3MFCGJvcnJvd2VkCQDZBAEFB2Fzc2V0SWQFA25pbAkAZQIFDndpdGhkcmF3QW1vdW50BQhib3Jyb3dlZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQPcmVhbGl6ZUFuZENsb3NlCQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACGHJlYWxpemVQYXJ0aWFsbHlBbmRDbG9zZQkAzAgCBQdfdHJhZGVyCQDMCAIFB2Fzc2V0SWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ53aXRoZHJhd0Ftb3VudAUDbmlsAwkAAAIFD3JlYWxpemVBbmRDbG9zZQUPcmVhbGl6ZUFuZENsb3NlCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOX3RyYWRlckFkZHJlc3MFDndpdGhkcmF3QW1vdW50CQDZBAEFB2Fzc2V0SWQFA25pbAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFA25pbAUOd2l0aGRyYXdBbW91bnQDCQAAAgUNJHQwNjM4MTk2NDczNgUNJHQwNjM4MTk2NDczNgQTcXVvdGVXaXRoZHJhd0Ftb3VudAgFDSR0MDYzODE5NjQ3MzYCXzIEFHNlbmRDb2xsYXRlcmFsQWN0aW9uCAUNJHQwNjM4MTk2NDczNgJfMQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAM4IAgkBDmRlbGV0ZVBvc2l0aW9uAQUHX3RyYWRlcgkBCXVwZGF0ZUFtbQcFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIDCQBmAgUTcXVvdGVXaXRoZHJhd0Ftb3VudAAACQEId2l0aGRyYXcCBQ5fdHJhZGVyQWRkcmVzcwUTcXVvdGVXaXRoZHJhd0Ftb3VudAUDbmlsCQENdXBkYXRlQmFsYW5jZQEFDWFtbU5ld0JhbGFuY2UFFHNlbmRDb2xsYXRlcmFsQWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWxpcXVpZGF0ZQEHX3RyYWRlcgQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBA9zcG90TWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBAttYXJnaW5SYXRpbwMJARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQRb3JhY2xlTWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgURUE5MX09QVElPTl9PUkFDTEUJAQR2bWF4AgUPc3BvdE1hcmdpblJhdGlvBRFvcmFjbGVNYXJnaW5SYXRpbwUPc3BvdE1hcmdpblJhdGlvAwMDAwkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMFC21hcmdpblJhdGlvCQEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAHBgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEFB190cmFkZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgECE1VuYWJsZSB0byBsaXF1aWRhdGUDAwMJAGYCBQ9zcG90TWFyZ2luUmF0aW8JARNsaXF1aWRhdGlvbkZlZVJhdGlvAAkAZgIJARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAAAAcJAGYCBQxERUNJTUFMX1VOSVQJARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAHBA0kdDA2NjUwNDY2NjU0CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA2NjUwNDY2NjU0Al8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDY2NTA0NjY2NTQCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNjY1MDQ2NjY1NAJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA2NjUwNDY2NjU0Al80BApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CQEbZ2V0UGFydGlhbExpcXVpZGF0aW9uQW1vdW50AgUHX3RyYWRlcgUPb2xkUG9zaXRpb25TaXplBA0kdDA2Njg3OTY2OTgzCQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEE29sZFBvc2l0aW9uTm90aW9uYWwIBQ0kdDA2Njg3OTY2OTgzAl8xBA11bnJlYWxpemVkUG5sCAUNJHQwNjY4Nzk2Njk4MwJfMgQNJHQwNjY5OTE2NzIyMwkBCXN3YXBJbnB1dAIFBWlzQWRkBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BBVleGNoYW5nZWRQb3NpdGlvblNpemUIBQ0kdDA2Njk5MTY3MjIzAl8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNjY5OTE2NzIyMwJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNjY5OTE2NzIyMwJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDY2OTkxNjcyMjMCXzQEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwNjY5OTE2NzIyMwJfNQQQbGlxdWlkYXRpb25SYXRpbwkBBGRpdmQCCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEDYWJzAQUPb2xkUG9zaXRpb25TaXplBAtyZWFsaXplZFBubAkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRBsaXF1aWRhdGlvblJhdGlvBA0kdDA2NzUxMjY3NzQ1CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBQtyZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwNjc1MTI2Nzc0NQJfMQQHYmFkRGVidAgFDSR0MDY3NTEyNjc3NDUCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwNjc1MTI2Nzc0NQJfMwQSdW5yZWFsaXplZFBubEFmdGVyCQBlAgUNdW5yZWFsaXplZFBubAULcmVhbGl6ZWRQbmwEEnJlbWFpbk9wZW5Ob3Rpb25hbAMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkAZQIJAGUCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BRJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCCQBkAgUSdW5yZWFsaXplZFBubEFmdGVyBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BBJsaXF1aWRhdGlvblBlbmFsdHkJAQRtdWxkAgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ABA9mZWVUb0xpcXVpZGF0b3IJAGkCBRJsaXF1aWRhdGlvblBlbmFsdHkAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBRJsaXF1aWRhdGlvblBlbmFsdHkFD2ZlZVRvTGlxdWlkYXRvcgQRbmV3UG9zaXRpb25NYXJnaW4JAGUCBQxyZW1haW5NYXJnaW4FEmxpcXVpZGF0aW9uUGVuYWx0eQQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUEF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsCQEDYWJzAQUScmVtYWluT3Blbk5vdGlvbmFsBBRuZXdQb3NpdGlvbkxzdFVwZENQRgkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9uZXdQb3NpdGlvblNpemUEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BAphbW1CYWxhbmNlCQBlAgkBCGNiYWxhbmNlAAUSbGlxdWlkYXRpb25QZW5hbHR5BA0kdDA2ODkxODY5MDQ3AwkAZgIAAAUKYW1tQmFsYW5jZQkAlAoCAAAJAQNhYnMBBQphbW1CYWxhbmNlCQCUCgIFCmFtbUJhbGFuY2UAAAQNbmV3QW1tQmFsYW5jZQgFDSR0MDY4OTE4NjkwNDcCXzEEA3gxMQgFDSR0MDY4OTE4NjkwNDcCXzIEDSR0MDY5MDU1NjkxMDkJARNnZXRCb3Jyb3dlZEJ5VHJhZGVyAQUHX3RyYWRlcgQIYm9ycm93ZWQIBQ0kdDA2OTA1NTY5MTA5Al8xBAdhc3NldElkCAUNJHQwNjkwNTU2OTEwOQJfMgQVZG9MaXF1aWRhdGVDb2xsYXRlcmFsAwkAZgIFCGJvcnJvd2VkAAAEEGNvbGxhdGVyYWxUb1NlbGwJAQRtdWxkAgUIYm9ycm93ZWQFEGxpcXVpZGF0aW9uUmF0aW8ED3JlYWxpemVBbmRDbG9zZQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAhByZWFsaXplUGFydGlhbGx5CQDMCAIFB190cmFkZXIJAMwIAgUHYXNzZXRJZAkAzAgCBRBjb2xsYXRlcmFsVG9TZWxsBQNuaWwFA25pbAMJAAACBQ9yZWFsaXplQW5kQ2xvc2UFD3JlYWxpemVBbmRDbG9zZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUVZG9MaXF1aWRhdGVDb2xsYXRlcmFsBRVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwEB3Vuc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACDndpdGhkcmF3TG9ja2VkCQDMCAIFEmxpcXVpZGF0aW9uUGVuYWx0eQUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIHYWRkRnJlZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFDmZlZVRvSW5zdXJhbmNlBQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPbmV3UG9zaXRpb25TaXplBRFuZXdQb3NpdGlvbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCQEJdXBkYXRlQW1tBwUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQ9mZWVUb0xpcXVpZGF0b3IJAQ11cGRhdGVCYWxhbmNlAQUNbmV3QW1tQmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNJHQwNzA5MTQ3MTM2OQkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgIFB190cmFkZXIHBAJ4MQgFDSR0MDcwOTE0NzEzNjkCXzEEB2JhZERlYnQIBQ0kdDA3MDkxNDcxMzY5Al8yBAJ4MggFDSR0MDcwOTE0NzEzNjkCXzMEAngzCAUNJHQwNzA5MTQ3MTM2OQJfNAQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDcwOTE0NzEzNjkCXzUEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDcwOTE0NzEzNjkCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA3MDkxNDcxMzY5Al83BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDcwOTE0NzEzNjkCXzgEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDA3MDkxNDcxMzY5Al85BBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUNJHQwNzA5MTQ3MTM2OQNfMTAEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNzA5MTQ3MTM2OQNfMTEED3RvdGFsU2hvcnRBZnRlcggFDSR0MDcwOTE0NzEzNjkDXzEyBBJsaXF1aWRhdGlvblBlbmFsdHkJAQRtdWxkAgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ABA9mZWVUb0xpcXVpZGF0b3IJAGkCBRJsaXF1aWRhdGlvblBlbmFsdHkAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBRJsaXF1aWRhdGlvblBlbmFsdHkFD2ZlZVRvTGlxdWlkYXRvcgQKYW1tQmFsYW5jZQkAZQIJAQhjYmFsYW5jZQAFEmxpcXVpZGF0aW9uUGVuYWx0eQQNJHQwNzE3ODE3MTkxMAMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDW5ld0FtbUJhbGFuY2UIBQ0kdDA3MTc4MTcxOTEwAl8xBAN4MTEIBQ0kdDA3MTc4MTcxOTEwAl8yBA0kdDA3MTkxODcxOTcyCQETZ2V0Qm9ycm93ZWRCeVRyYWRlcgEFB190cmFkZXIECGJvcnJvd2VkCAUNJHQwNzE5MTg3MTk3MgJfMQQHYXNzZXRJZAgFDSR0MDcxOTE4NzE5NzICXzIEFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAMJAGYCBQhib3Jyb3dlZAAABA9yZWFsaXplQW5kQ2xvc2UJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIYcmVhbGl6ZVBhcnRpYWxseUFuZENsb3NlCQDMCAIFB190cmFkZXIJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUPcmVhbGl6ZUFuZENsb3NlBQ9yZWFsaXplQW5kQ2xvc2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAUVZG9MaXF1aWRhdGVDb2xsYXRlcmFsBAF4AwkAZgIFB2JhZERlYnQAAAQLbG9ja0JhZERlYnQJAPwHBAkBDHZhdWx0QWRkcmVzcwACFWV4Y2hhbmdlRnJlZUFuZExvY2tlZAkAzAgCBQdiYWREZWJ0BQNuaWwFA25pbAMJAAACBQtsb2NrQmFkRGVidAULbG9ja0JhZERlYnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFAXgFAXgEB3Vuc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACDndpdGhkcmF3TG9ja2VkCQDMCAIFEmxpcXVpZGF0aW9uUGVuYWx0eQUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIHYWRkRnJlZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFDmZlZVRvSW5zdXJhbmNlBQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ5kZWxldGVQb3NpdGlvbgEFB190cmFkZXIJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFD2ZlZVRvTGlxdWlkYXRvcgkBDXVwZGF0ZUJhbGFuY2UBBQ1uZXdBbW1CYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnBheUZ1bmRpbmcABBVmdW5kaW5nQmxvY2tUaW1lc3RhbXAJARluZXh0RnVuZGluZ0Jsb2NrVGltZXN0YW1wAAMDAwkAZgIFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXAGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgEJAKwCAgkArAICCQCsAgICIUludmFsaWQgZnVuZGluZyBibG9jayB0aW1lc3RhbXA6IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAIDIDwgCQCkAwEFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAQPdW5kZXJseWluZ1ByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQNJHQwNzM5OTk3NDA2MQkBCmdldEZ1bmRpbmcABBRzaG9ydFByZW1pdW1GcmFjdGlvbggFDSR0MDczOTk5NzQwNjECXzEEE2xvbmdQcmVtaXVtRnJhY3Rpb24IBQ0kdDA3Mzk5OTc0MDYxAl8yCQENdXBkYXRlRnVuZGluZwUJAGQCBRVmdW5kaW5nQmxvY2tUaW1lc3RhbXAJARRmdW5kaW5nUGVyaW9kU2Vjb25kcwAJAGQCCQEjbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ABRNsb25nUHJlbWl1bUZyYWN0aW9uCQBkAgkBJGxhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAFFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIFE2xvbmdQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQkBBGRpdmQCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlAWkBGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUABA0kdDA3NDQ0Mzc0NTY0CQEUZ2V0U3luY1Rlcm1pbmFsUHJpY2UBCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQTbmV3UXVvdGVBc3NldFdlaWdodAgFDSR0MDc0NDQzNzQ1NjQCXzEEEm5ld0Jhc2VBc3NldFdlaWdodAgFDSR0MDc0NDQzNzQ1NjQCXzIEDW1hcmdpblRvVmF1bHQIBQ0kdDA3NDQ0Mzc0NTY0Al8zCQEQdXBkYXRlQW1tV2VpZ2h0cwIFE25ld1F1b3RlQXNzZXRXZWlnaHQFEm5ld0Jhc2VBc3NldFdlaWdodAFpAQV2X2dldAEHX3RyYWRlcgQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBA0kdDA3NDc0Mjc0ODAyCQEVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAgUHX3RyYWRlcgcEAngxCAUNJHQwNzQ3NDI3NDgwMgJfMQQCeDIIBQ0kdDA3NDc0Mjc0ODAyAl8yBAJ4MwgFDSR0MDc0NzQyNzQ4MDICXzMEAng0CAUNJHQwNzQ3NDI3NDgwMgJfNAkAAgEJAKwCAgkArAICCQCsAgIJAQFzAQUCeDIJAQFzAQUCeDMJAQFzAQUCeDQJAQFzAQkBDmdldE1hcmdpblJhdGlvAQUHX3RyYWRlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpASd2aWV3X2NhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQBB190cmFkZXIEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQNJHQwNzUwMTM3NTExNAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwNzUwMTM3NTExNAJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDA3NTAxMzc1MTE0Al8yBANwb24IBQ0kdDA3NTAxMzc1MTE0Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDc1MDEzNzUxMTQCXzQEDSR0MDc1MTE3NzUyMTgJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQQcG9zaXRpb25Ob3Rpb25hbAgFDSR0MDc1MTE3NzUyMTgCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA3NTExNzc1MjE4Al8yBA0kdDA3NTIyMTc1MzkzCQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFDHBvc2l0aW9uU2l6ZQUOcG9zaXRpb25NYXJnaW4FEXBvc2l0aW9uTHN0VXBkQ1BGBQ11bnJlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDA3NTIyMTc1MzkzAl8xBAdiYWREZWJ0CAUNJHQwNzUyMjE3NTM5MwJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDA3NTIyMTc1MzkzAl8zCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAQFzAQUMcmVtYWluTWFyZ2luCQEBcwEFDmZ1bmRpbmdQYXltZW50CQEBcwEJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIJAQFzAQUNdW5yZWFsaXplZFBubAkBAXMBBQdiYWREZWJ0CQEBcwEFEHBvc2l0aW9uTm90aW9uYWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVdmlld19nZXRQZWdBZGp1c3RDb3N0AQZfcHJpY2UEBnJlc3VsdAkBFGdldFN5bmNUZXJtaW5hbFByaWNlAQUGX3ByaWNlCQACAQkApAMBCAUGcmVzdWx0Al8zAWkBGHZpZXdfZ2V0VGVybWluYWxBbW1QcmljZQAEDSR0MDc1NzQwNzU4MjEJARNnZXRUZXJtaW5hbEFtbVN0YXRlAAQZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQgFDSR0MDc1NzQwNzU4MjECXzEEGHRlcm1pbmFsQmFzZUFzc2V0UmVzZXJ2ZQgFDSR0MDc1NzQwNzU4MjECXzIEBXByaWNlCQEEZGl2ZAIJAQRtdWxkAgUZdGVybWluYWxRdW90ZUFzc2V0UmVzZXJ2ZQkBBnF0QXN0VwAJAQRtdWxkAgUYdGVybWluYWxCYXNlQXNzZXRSZXNlcnZlCQEGYnNBc3RXAAkAAgEJAKQDAQUFcHJpY2UBaQEPdmlld19nZXRGdW5kaW5nAAQPdW5kZXJseWluZ1ByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQNJHQwNzYwNDA3NjEwMgkBCmdldEZ1bmRpbmcABBRzaG9ydFByZW1pdW1GcmFjdGlvbggFDSR0MDc2MDQwNzYxMDICXzEEE2xvbmdQcmVtaXVtRnJhY3Rpb24IBQ0kdDA3NjA0MDc2MTAyAl8yBAtsb25nRnVuZGluZwkBBGRpdmQCBRNsb25nUHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UEDHNob3J0RnVuZGluZwkBBGRpdmQCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlCQACAQkArAICCQCsAgIJAKwCAgkBAXMBBQtsb25nRnVuZGluZwkBAXMBBQxzaG9ydEZ1bmRpbmcJAQFzAQkBEGdldFR3YXBTcG90UHJpY2UACQEBcwEJARJnZXRPcmFjbGVUd2FwUHJpY2UAAWkBGHZpZXdfZ2V0Qm9ycm93ZWRCeVRyYWRlcgEHX3RyYWRlcgQNJHQwNzYzOTI3NjQ0NgkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDc2MzkyNzY0NDYCXzEEB2Fzc2V0SWQIBQ0kdDA3NjM5Mjc2NDQ2Al8yCQACAQkArAICCQEBcwEFCGJvcnJvd2VkBQdhc3NldElkAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkBDmFkbWluUHVibGljS2V5AOSlq+E=", "height": 2350176, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "k_ora_key"
5+
6+let b = "k_ora_block_key"
7+
8+let c = "k_ora"
9+
10+let d = "k_balance"
11+
12+let e = "k_positionSize"
13+
14+let f = "k_positionMargin"
15+
16+let g = "k_positionOpenNotional"
17+
18+let h = "k_positionFraction"
19+
20+let i = "k_positionClosedDate"
21+
22+let j = "k_positionAsset"
23+
24+let k = "k_initialized"
25+
26+let l = "k_paused"
27+
28+let m = "k_fee"
29+
30+let n = "k_fundingPeriod"
31+
32+let o = "k_initMarginRatio"
33+
34+let p = "k_mmr"
35+
36+let q = "k_liquidationFeeRatio"
37+
38+let r = "k_partLiquidationRatio"
39+
40+let s = "k_spreadLimit"
41+
42+let t = "k_maxPriceImpact"
43+
44+let u = "k_maxPriceSpread"
45+
46+let v = "k_lastDataStr"
47+
48+let w = "k_lastMinuteId"
49+
50+let x = "k_twapDataLastCumulativePrice"
51+
52+let y = "k_twapDataLastPrice"
53+
54+let z = "k_twapDataPreviousMinuteId"
55+
56+let A = "k_latestLongPremiumFraction"
57+
58+let B = "k_latestShortPremiumFraction"
59+
60+let C = "k_nextFundingBlockMinTimestamp"
61+
62+let D = "k_longFundingRate"
63+
64+let E = "k_shortFundingRate"
65+
66+let F = "k_qtAstR"
67+
68+let G = "k_bsAstR"
69+
70+let H = "k_qtAstW"
71+
72+let I = "k_bsAstW"
73+
74+let J = "k_totalPositionSize"
75+
76+let K = "k_totalLongPositionSize"
77+
78+let L = "k_totalShortPositionSize"
79+
80+let M = "k_cumulativeNotional"
81+
82+let N = "k_openInterestNotional"
83+
84+let O = "k_coordinatorAddress"
85+
86+let P = "k_vault_address"
87+
88+let Q = "k_admin_address"
89+
90+let R = "k_admin_public_key"
91+
92+let S = "k_quote_asset"
93+
94+let T = "k_quote_staking"
95+
96+let U = "k_staking_address"
97+
98+let V = "k_miner_address"
99+
100+let W = "k_orders_address"
101+
102+let X = "k_referral_address"
103+
104+let Y = "k_manager_address"
105+
106+let Z = "k_collateral_address"
107+
108+let aa = "k_exchange_address"
109+
110+let ab = "k_nft_manager_address"
111+
112+let ac = "k_trader_market_asset_collateral"
113+
114+func ad (ae,af) = ((ae + "_") + af)
115+
116+
117+func ag () = valueOrErrorMessage(addressFromString(getStringValue(this, O)), "Coordinator not set")
118+
119+
120+func ah () = addressFromString(getStringValue(ag(), Q))
121+
122+
123+func ai () = fromBase58String(getStringValue(ag(), R))
124+
125+
126+func aj () = fromBase58String(getStringValue(ag(), S))
127+
128+
129+func ak () = valueOrErrorMessage(addressFromString(getStringValue(ag(), T)), "Quote asset staking not set")
130+
131+
132+func al () = valueOrErrorMessage(addressFromString(getStringValue(ag(), U)), "Staking not set")
133+
134+
135+func am () = valueOrErrorMessage(addressFromString(getStringValue(ag(), P)), "Vault not set")
136+
137+
138+func an () = valueOrErrorMessage(addressFromString(getStringValue(ag(), V)), "Miner not set")
139+
140+
141+func ao () = valueOrErrorMessage(addressFromString(getStringValue(ag(), W)), "Orders not set")
142+
143+
144+func ap () = valueOrErrorMessage(addressFromString(getStringValue(ag(), X)), "Referral not set")
145+
146+
147+func aq () = valueOrErrorMessage(addressFromString(getStringValue(ag(), ab)), "NFT Manager not set")
148+
149+
150+func ar () = valueOrErrorMessage(addressFromString(getStringValue(ag(), Z)), "Collateral Manager not set")
151+
152+
153+func as () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(ag(), aa), "No swap address")), "Invalid swap address")
154+
155+
156+let at = "k_whitelist_asset"
157+
158+func au (av) = valueOrElse(getBoolean(ar(), ad(at, av)), false)
159+
160+
161+let aw = "k_token_param"
162+
163+let ax = "k_token_type"
164+
165+let ay = "fee_reduction"
166+
167+let az = 1
168+
169+let aA = 2
170+
171+let aB = 15
172+
173+let aC = 15
174+
175+let aD = 1000
176+
177+let aE = 6
178+
179+let aF = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
180+
181+let aG = (86400 * aF)
182+
183+let aH = 100
184+
185+let aI = 1
186+
187+let aJ = 2
188+
189+func aK (aL) = (toString(aL) + ",")
190+
191+
192+func aM (aL,aN) = fraction(aL, aF, aN, HALFEVEN)
193+
194+
195+func aO (aL,aN) = fraction(aL, aN, aF, HALFEVEN)
196+
197+
198+func aP (aL) = sqrt(aL, aE, aE, HALFEVEN)
199+
200+
201+func aQ (aL,aN) = pow(aL, aE, aN, aE, aE, HALFEVEN)
202+
203+
204+func aR (aL,aN) = fraction(aL, toBigInt(aF), aN, HALFEVEN)
205+
206+
207+func aS (aL,aN) = fraction(aL, aN, toBigInt(aF), HALFEVEN)
208+
209+
210+func aT (aL) = sqrtBigInt(aL, aE, aE, HALFEVEN)
211+
212+
213+func aU (aL,aN) = pow(aL, aE, aN, aE, aE, HALFEVEN)
214+
215+
216+func aV (aL) = if ((aL > 0))
217+ then aL
218+ else -(aL)
219+
220+
221+func aW (aL,aN) = if ((aL >= aN))
222+ then aL
223+ else aN
224+
225+
226+func aX (aY) = {
227+ func aZ (ba,bb) = ((ba + bb) + ",")
228+
229+ let bc = {
230+ let bd = aY
231+ let be = size(bd)
232+ let bf = ""
233+ func bg (bh,bi) = if ((bi >= be))
234+ then bh
235+ else aZ(bh, bd[bi])
236+
237+ func bj (bh,bi) = if ((bi >= be))
238+ then bh
239+ else throw("List size exceeds 20")
240+
241+ bj(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
242+ }
243+ let bk = dropRight(bc, 1)
244+ let bl = if ((take(bk, 1) == ","))
245+ then drop(bk, 1)
246+ else bk
247+ bl
248+ }
249+
250+
251+func bm (bn) = split(bn, ",")
252+
253+
254+func bo (aY,bp,bq) = if ((size(aY) > bp))
255+ then (removeByIndex(aY, 0) :+ bq)
256+ else (aY :+ bq)
257+
258+
259+func br (bs) = valueOrErrorMessage(getInteger(this, bs), ("no value for " + bs))
260+
261+
262+func bt (bs,bu) = valueOrElse(getInteger(this, bs), bu)
263+
264+
265+func bv (af,ae) = {
266+ let bb = valueOrErrorMessage(getString(af, ae), ("No value for key " + ae))
267+ bb
268+ }
269+
270+
271+func bw (af,ae) = {
272+ let bb = valueOrErrorMessage(getInteger(af, ae), ("No value for key " + ae))
273+ bb
274+ }
275+
276+
277+func bx () = br(d)
278+
279+
280+func by () = br(m)
281+
282+
283+func bz () = br(o)
284+
285+
286+func bA () = br(F)
287+
288+
289+func bB () = br(G)
290+
291+
292+func bC () = bt(H, aF)
293+
294+
295+func bD () = bt(I, aF)
296+
297+
298+func bE () = br(J)
299+
300+
301+func bF () = br(M)
302+
303+
304+func bG () = br(N)
305+
306+
307+func bH () = br(C)
308+
309+
310+func bI () = br(n)
311+
312+
313+func bJ () = (bI() * aF)
314+
315+
316+func bK () = (bI() * aD)
317+
318+
319+func bL () = br(p)
320+
321+
322+func bM () = br(q)
323+
324+
325+func bN () = br(r)
326+
327+
328+func bO () = br(s)
329+
330+
331+func bP () = br(t)
332+
333+
334+func bQ () = br(u)
335+
336+
337+func bR () = br(A)
338+
339+
340+func bS () = br(B)
341+
342+
343+func bT () = br(L)
344+
345+
346+func bU () = br(K)
347+
348+
349+func bV (bW) = valueOrElse(getString(ao(), "k_sender"), toString(bW.caller))
350+
351+
352+func bX (bY,bZ,ca) = {
353+ let cb = (bY - bZ)
354+ if (if (ca)
355+ then (0 > cb)
356+ else false)
357+ then throw("Invalid margin")
358+ else if (if (!(ca))
359+ then (cb >= 0)
360+ else false)
361+ then throw("Invalid margin")
362+ else true
363+ }
364+
365+
366+func cc (cd) = if ((cd == 0))
367+ then throw("Should not be called with _positionSize == 0")
368+ else if ((cd > 0))
369+ then bR()
370+ else bS()
371+
372+
373+func ce (cf) = {
374+ let cg = getInteger(this, ad(e, cf))
375+ let ch = cg
376+ if ($isInstanceOf(ch, "Int"))
377+ then {
378+ let ci = ch
379+ $Tuple4(ci, getIntegerValue(this, ad(f, cf)), getIntegerValue(this, ad(g, cf)), getIntegerValue(this, ad(h, cf)))
380+ }
381+ else $Tuple4(0, 0, 0, 0)
382+ }
383+
384+
385+func cj (cf) = {
386+ let ck = getString(this, ad(j, cf))
387+ let ch = ck
388+ if ($isInstanceOf(ch, "String"))
389+ then {
390+ let cl = ch
391+ cl
392+ }
393+ else toBase58String(aj())
394+ }
395+
396+
397+func cm (cf) = if ((ce(cf)._1 == 0))
398+ then throw("No open position")
399+ else true
400+
401+
402+func cn () = valueOrElse(getBoolean(this, k), false)
403+
404+
405+func co () = valueOrElse(getBoolean(this, l), false)
406+
407+
408+func cp (cq,cr,cs) = if (cq)
409+ then {
410+ let ct = (bB() - cs)
411+ if ((0 >= ct))
412+ then throw("Tx lead to base asset reserve <= 0, revert")
413+ else $Tuple4((bA() + cr), ct, (bE() + cs), (bF() + cr))
414+ }
415+ else {
416+ let cu = (bA() - cr)
417+ if ((0 >= cu))
418+ then throw("Tx lead to base quote reserve <= 0, revert")
419+ else $Tuple4(cu, (bB() + cs), (bE() - cs), (bF() - cr))
420+ }
421+
422+
423+func cv (cw,cx,cy,cz) = aO(aO(cw, cx), aO(cy, cz))
424+
425+
426+func cA (cq,cr) = {
427+ let cw = bA()
428+ let cy = bB()
429+ let cx = bC()
430+ let cz = bD()
431+ let bs = cv(cw, cx, cy, cz)
432+ let cB = if (cq)
433+ then (cw + cr)
434+ else (cw - cr)
435+ let cC = aM(bs, aO(cB, cx))
436+ let cD = aM(aV((cC - cy)), cx)
437+ let cE = if (cq)
438+ then cD
439+ else -(cD)
440+ let cF = cp(cq, cr, cD)
441+ let cG = cF._1
442+ let cH = cF._2
443+ let cI = cF._3
444+ let cJ = cF._4
445+ let cK = aM(aO(cw, cx), aO(cy, cz))
446+ let cL = aM(cr, cD)
447+ let cM = aV((cK - cL))
448+ let cN = (aF - aM(cK, (cK + cM)))
449+ let cO = bP()
450+ if ((cN > cO))
451+ then throw(((((((((((((("Price impact " + toString(cN)) + " > max price impact ") + toString(cO)) + " before quote asset: ") + toString(cw)) + " before base asset: ") + toString(cy)) + " quote asset amount to exchange: ") + toString(cr)) + " price before: ") + toString(cK)) + " marketPrice: ") + toString(cL)))
452+ else $Tuple5(cE, cG, cH, cI, cJ)
453+ }
454+
455+
456+func cP (cQ,cR,cS,cT) = {
457+ let cU = if ((cQ != 0))
458+ then {
459+ let cV = cc(cQ)
460+ aO((cV - cS), cQ)
461+ }
462+ else 0
463+ let cW = ((cT - cU) + cR)
464+ let cX = if ((0 > cW))
465+ then $Tuple2(0, aV(cW))
466+ else $Tuple2(aV(cW), 0)
467+ let cY = cX._1
468+ let cZ = cX._2
469+ $Tuple3(cY, cZ, cU)
470+ }
471+
472+
473+func da (cq,cs,db,dc,dd,de,df) = {
474+ let cK = aM(aO(dc, dd), aO(de, df))
475+ if ((cs == 0))
476+ then throw("Invalid base asset amount")
477+ else {
478+ let bs = cv(dc, dd, de, df)
479+ let dg = if (cq)
480+ then (de + cs)
481+ else (de - cs)
482+ let dh = aM(bs, aO(dg, df))
483+ let di = aV((dh - aO(dc, dd)))
484+ let cO = bP()
485+ let dj = cp(!(cq), di, cs)
486+ let cG = dj._1
487+ let cH = dj._2
488+ let cI = dj._3
489+ let cJ = dj._4
490+ let cL = aM(di, cs)
491+ let cM = aV((cK - cL))
492+ let cN = (aF - aM(cK, (cK + cM)))
493+ if (if ((cN > cO))
494+ then db
495+ else false)
496+ then throw(((((((((((((("Price impact " + toString(cN)) + " > max price impact ") + toString(cO)) + " before quote asset: ") + toString(dc)) + " before base asset: ") + toString(de)) + " base asset amount to exchange: ") + toString(cs)) + " price before: ") + toString(cK)) + " market price: ") + toString(cL)))
497+ else $Tuple8(di, cG, cH, cI, cJ, (bU() - (if (cq)
498+ then aV(cs)
499+ else 0)), (bT() - (if (!(cq))
500+ then aV(cs)
501+ else 0)), cN)
502+ }
503+ }
504+
505+
506+func dk (cq,cs,db) = da(cq, cs, db, bA(), bC(), bB(), bD())
507+
508+
509+func dl () = {
510+ let dm = valueOrErrorMessage(addressFromString(getStringValue(this, c)), "")
511+ let dn = getStringValue(this, a)
512+ let do = getStringValue(this, b)
513+ let dp = valueOrErrorMessage(getInteger(dm, dn), ((("Can not get oracle price. Oracle: " + toString(dm)) + " key: ") + dn))
514+ dp
515+ }
516+
517+
518+func dq (dc,de) = {
519+ let dr = dl()
520+ let ds = aM(dc, de)
521+ let dt = aM((dr + ds), (2 * aF))
522+ let du = aM(aV((dr - ds)), dt)
523+ if ((du > bQ()))
524+ then throw(((("Price spread " + toString(du)) + " > max price spread ") + toString(bQ())))
525+ else true
526+ }
527+
528+
529+func dv () = {
530+ let dc = bA()
531+ let de = bB()
532+ let cx = bC()
533+ let cz = bD()
534+ aM(aO(dc, cx), aO(de, cz))
535+ }
536+
537+
538+func dw () = {
539+ let dr = dl()
540+ let dx = dv()
541+ (aM(aV((dr - dx)), dr) > bO())
542+ }
543+
544+
545+func dy (cd,dz,dc,dd,de,df) = {
546+ let dA = aV(cd)
547+ let dB = (0 > cd)
548+ let dC = if ((dz == aI))
549+ then {
550+ let dD = da(!(dB), dA, false, dc, dd, de, df)
551+ let dE = dD._1
552+ let dF = dD._2
553+ let dG = dD._3
554+ let dH = dD._4
555+ dE
556+ }
557+ else aO(dA, dl())
558+ dC
559+ }
560+
561+
562+func dI (cd,dJ,dc,dd,de,df,dz) = if ((cd == 0))
563+ then throw("Invalid position size")
564+ else {
565+ let dB = (0 > cd)
566+ let dC = dy(cd, dz, dc, dd, de, df)
567+ let dK = if (dB)
568+ then (dJ - dC)
569+ else (dC - dJ)
570+ $Tuple2(dC, dK)
571+ }
572+
573+
574+func dL (cf,dz) = {
575+ let dM = ce(cf)
576+ let ci = dM._1
577+ let dN = dM._2
578+ let dO = dM._3
579+ let dP = dM._4
580+ dI(ci, dO, bA(), bC(), bB(), bD(), dz)
581+ }
582+
583+
584+func dQ (dR,dS,dT) = aM((dR - dS), dT)
585+
586+
587+func dU (cf,dz) = {
588+ let dV = ce(cf)
589+ let ci = dV._1
590+ let dN = dV._2
591+ let dW = dV._3
592+ let dP = dV._4
593+ let dX = dL(cf, dz)
594+ let dC = dX._1
595+ let dK = dX._2
596+ let dY = cP(ci, dN, dP, dK)
597+ let cY = dY._1
598+ let cZ = dY._2
599+ dQ(cY, cZ, dC)
600+ }
601+
602+
603+func dZ (cf) = dU(cf, aI)
604+
605+
606+func ea (cf,cd) = {
607+ let eb = aW(bN(), (aF - aM(dZ(cf), bL())))
608+ let ec = aO(aV(cd), eb)
609+ let ed = dk((cd > 0), ec, false)
610+ let ee = ed._1
611+ let cN = ed._8
612+ if ((bP() > cN))
613+ then ee
614+ else {
615+ let ef = aO(aV(cd), bN())
616+ let eg = dk((cd > 0), ef, false)._1
617+ eg
618+ }
619+ }
620+
621+
622+func eh (cf,db) = {
623+ let ei = ce(cf)
624+ let ci = ei._1
625+ let dN = ei._2
626+ let dO = ei._3
627+ let dP = ei._4
628+ let dK = dL(cf, aI)._2
629+ let ej = cP(ci, dN, dP, dK)
630+ let cY = ej._1
631+ let cZ = ej._2
632+ let ef = -(ci)
633+ let ek = dK
634+ let el = -(cY)
635+ let em = dk((ci > 0), aV(ci), db)
636+ let eg = em._1
637+ let cB = em._2
638+ let cC = em._3
639+ let en = em._4
640+ let eo = em._5
641+ let ep = em._6
642+ let eq = em._7
643+ let er = (bG() - dO)
644+ $Tuple12(ef, cZ, ek, el, cB, cC, en, eo, er, eg, ep, eq)
645+ }
646+
647+
648+func es () = {
649+ let et = ((lastBlock.timestamp / 1000) / 60)
650+ let eu = (et - aB)
651+ let ev = valueOrElse(getString(this, v), "")
652+ let ew = split(ev, ",")
653+ func ex (ba,ey) = if ((eu >= parseIntValue(ey)))
654+ then (ba :+ parseIntValue(ey))
655+ else ba
656+
657+ let ez = {
658+ let bd = ew
659+ let be = size(bd)
660+ let bf = nil
661+ func bg (bh,bi) = if ((bi >= be))
662+ then bh
663+ else ex(bh, bd[bi])
664+
665+ func bj (bh,bi) = if ((bi >= be))
666+ then bh
667+ else throw("List size exceeds 20")
668+
669+ bj(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
670+ }
671+ let eA = if ((size(ez) > 0))
672+ then max(ez)
673+ else parseIntValue(ew[0])
674+ let eB = valueOrElse(getInteger(this, w), 0)
675+ let eC = valueOrElse(getInteger(this, ((x + "_") + toString(eB))), 0)
676+ let eD = valueOrElse(getInteger(this, ((y + "_") + toString(eB))), 0)
677+ let eE = (eC + ((et - eB) * eD))
678+ let eF = valueOrElse(getInteger(this, ((x + "_") + toString(eA))), 0)
679+ let eG = valueOrElse(getInteger(this, ((y + "_") + toString(eA))), 0)
680+ let eH = (eF + ((eu - eA) * eG))
681+ ((eE - eH) / aB)
682+ }
683+
684+
685+func eI () = {
686+ let cd = bE()
687+ if ((cd == 0))
688+ then $Tuple2(bA(), bB())
689+ else {
690+ let eJ = (cd > 0)
691+ let eK = dk(eJ, aV(cd), false)
692+ let eL = eK._1
693+ let eM = eK._2
694+ let eN = eK._3
695+ $Tuple2(eM, eN)
696+ }
697+ }
698+
699+
700+func eO (eP,bE,eQ,eR) = {
701+ let eS = toBigInt(eP)
702+ let eT = toBigInt(bE)
703+ let eU = toBigInt(eQ)
704+ let eV = toBigInt(eR)
705+ let eW = aU((eS + eT), toBigInt((2 * aF)))
706+ let eX = aS(eU, eW)
707+ let eY = (toBigInt(4) * aS(eV, eT))
708+ let eZ = aT(aS(eX, (eU - eY)))
709+ let fa = aS(eS, eU)
710+ let fb = aS(eU, eT)
711+ let fc = ((-(eZ) + fa) + fb)
712+ let fd = (toBigInt(2) * aS(eU, eT))
713+ let fe = aR(fc, fd)
714+ toInt(fe)
715+ }
716+
717+
718+func ff (fg) = {
719+ let cd = bE()
720+ if ((cd == 0))
721+ then {
722+ let cw = bA()
723+ let cy = bB()
724+ let fh = aM(aO(fg, cy), cw)
725+ $Tuple3(fh, aF, 0)
726+ }
727+ else {
728+ let eJ = (cd > 0)
729+ let eL = dk(eJ, aV(cd), false)._1
730+ let cw = bA()
731+ let cy = bB()
732+ let fh = eO(cy, cd, cw, fg)
733+ let fi = aF
734+ let el = dI(cd, eL, cw, fh, cy, fi, aI)._2
735+ $Tuple3(fh, fi, el)
736+ }
737+ }
738+
739+
740+func fj () = {
741+ let fk = dl()
742+ let fl = es()
743+ let fm = (fl - fk)
744+ if (if ((bT() == 0))
745+ then true
746+ else (bU() == 0))
747+ then $Tuple2(0, 0)
748+ else if ((0 > fm))
749+ then {
750+ let fn = aM(aO(fm, bJ()), aG)
751+ let fo = aM(aO(fn, bT()), bU())
752+ $Tuple2(fn, fo)
753+ }
754+ else {
755+ let fo = aM(aO(fm, bJ()), aG)
756+ let fn = aM(aO(fo, bU()), bT())
757+ $Tuple2(fn, fo)
758+ }
759+ }
760+
761+
762+func fp (bW,fq) = {
763+ let fr = by()
764+ let fs = aO(fr, fq)
765+ let ft = if ((size(bW.payments) > 1))
766+ then {
767+ let fu = toBase58String(valueOrErrorMessage(bW.payments[1].assetId, "Invalid attached artifact"))
768+ let fv = bv(aq(), ad(ax, fu))
769+ if ((fv == ay))
770+ then {
771+ let fw = bw(aq(), ad(aw, fu))
772+ let fx = aO(fs, fw)
773+ $Tuple2(fx, true)
774+ }
775+ else throw("Invalid attached artifact")
776+ }
777+ else $Tuple2(fs, false)
778+ let fx = ft._1
779+ let fy = ft._2
780+ $Tuple2(fx, fy)
781+ }
782+
783+
784+func fz (fA,fB,fC,fD,fE,fF,fG,fH,fI) = [IntegerEntry(o, fA), IntegerEntry(p, fB), IntegerEntry(q, fC), IntegerEntry(n, fD), IntegerEntry(m, fE), IntegerEntry(s, fF), IntegerEntry(t, fG), IntegerEntry(r, fH), IntegerEntry(u, fI)]
785+
786+
787+func fJ (fK,fL,fM,fN,fO) = [IntegerEntry(C, fK), IntegerEntry(A, fL), IntegerEntry(B, fM), IntegerEntry(D, fN), IntegerEntry(E, fO)]
788+
789+
790+func fP (af,av) = [StringEntry(ad(j, af), av)]
791+
792+
793+func fQ (af,fR,fS,fT,cV) = [IntegerEntry(ad(e, af), fR), IntegerEntry(ad(f, af), fS), IntegerEntry(ad(g, af), fT), IntegerEntry(ad(h, af), cV)]
794+
795+
796+func fU (fV) = {
797+ let et = ((lastBlock.timestamp / 1000) / 60)
798+ let fW = valueOrElse(getInteger(this, w), 0)
799+ if ((fW > et))
800+ then throw("TWAP out-of-order")
801+ else {
802+ let eB = if ((fW == 0))
803+ then et
804+ else fW
805+ if ((et > fW))
806+ then {
807+ let fX = valueOrElse(getInteger(this, ((x + "_") + toString(fW))), 0)
808+ let fY = valueOrElse(getInteger(this, ((y + "_") + toString(fW))), fV)
809+ let fZ = (fX + ((et - eB) * fY))
810+ let ew = bo(bm(valueOrElse(getString(this, v), "")), aB, toString(et))
811+[IntegerEntry(ad(x, toString(et)), fZ), IntegerEntry(ad(y, toString(et)), fV), IntegerEntry(ad(z, toString(et)), fW), IntegerEntry(w, et), StringEntry(v, aX(ew))]
812+ }
813+ else {
814+ let ga = valueOrElse(getInteger(this, ad(z, toString(et))), 0)
815+ let fX = valueOrElse(getInteger(this, ad(x, toString(ga))), 0)
816+ let fY = valueOrElse(getInteger(this, ad(y, toString(ga))), fV)
817+ let fZ = (fX + ((et - ga) * fY))
818+[IntegerEntry(ad(x, toString(et)), fZ), IntegerEntry(ad(y, toString(et)), fV)]
819+ }
820+ }
821+ }
822+
823+
824+func gb (cw,cy) = [IntegerEntry(F, cw), IntegerEntry(G, cy)]
825+
826+
827+func gc (cx,cz) = [IntegerEntry(H, cx), IntegerEntry(I, cz)]
828+
829+
830+func gd (cw,cy,ge,gf,gg,gh,gi) = {
831+ let cx = bC()
832+ let cz = bD()
833+ if (((gh - gi) != ge))
834+ then throw(((((("Invalid AMM state data: " + toString(gh)) + " + ") + toString(gi)) + " != ") + toString(ge)))
835+ else ((gb(cw, cy) ++ [IntegerEntry(J, ge), IntegerEntry(M, gf), IntegerEntry(N, gg), IntegerEntry(K, gh), IntegerEntry(L, gi)]) ++ fU(aM(aO(cw, cx), aO(cy, cz))))
836+ }
837+
838+
839+func gj (af) = [DeleteEntry(ad(e, af)), DeleteEntry(ad(f, af)), DeleteEntry(ad(g, af)), DeleteEntry(ad(h, af)), DeleteEntry(ad(j, af)), IntegerEntry(ad(i, af), lastBlock.timestamp)]
840+
841+
842+func gk (af,gl) = {
843+ let gm = assetBalance(this, aj())
844+ if ((gl > gm))
845+ then throw(((("Unable to withdraw " + toString(gl)) + " from contract balance ") + toString(gm)))
846+ else [ScriptTransfer(af, gl, aj())]
847+ }
848+
849+
850+func gn (bW) = if ((0 > bW))
851+ then throw("Balance")
852+ else [IntegerEntry(d, bW)]
853+
854+
855+func go (bW) = [ScriptTransfer(al(), bW, aj())]
856+
857+
858+func gp (gq,bW) = if (gq)
859+ then [Burn(valueOrErrorMessage(bW.payments[1].assetId, "Invalid artifact"), 1)]
860+ else nil
861+
862+
863+func gr (cf,av) = {
864+ let gs = ce(cf)._1
865+ if ((gs == 0))
866+ then true
867+ else (cj(cf) == av)
868+ }
869+
870+
871+func gt (cf,av) = (cj(cf) == av)
872+
873+
874+func gu (gv,av,cf) = ((((((ac + "_") + gv) + "_") + av) + "_") + cf)
875+
876+
877+func gw (cf) = {
878+ let cl = cj(cf)
879+ if ((cl == toBase58String(aj())))
880+ then $Tuple2(0, cl)
881+ else {
882+ let gx = gu(toString(this), cl, cf)
883+ let gy = valueOrElse(getInteger(ar(), gx), 0)
884+ $Tuple2(gy, cl)
885+ }
886+ }
887+
888+
889+@Callable(bW)
890+func pause () = if ((bW.caller != ah()))
891+ then throw("Invalid togglePause params")
892+ else [BooleanEntry(l, true)]
893+
894+
895+
896+@Callable(bW)
897+func unpause () = if ((bW.caller != ah()))
898+ then throw("Invalid togglePause params")
899+ else [BooleanEntry(l, false)]
900+
901+
902+
903+@Callable(bW)
904+func addLiquidity (cr) = if (if ((bW.caller != ah()))
905+ then true
906+ else (0 >= cr))
907+ then throw("Invalid addLiquidity params")
908+ else {
909+ let cw = bA()
910+ let cy = bB()
911+ let cx = bC()
912+ let cz = bD()
913+ let fV = aM(aO(cw, cx), aO(cy, cz))
914+ let gz = aM(cr, fV)
915+ let gA = (cw + cr)
916+ let gB = (cy + gz)
917+ gb(gA, gB)
918+ }
919+
920+
921+
922+@Callable(bW)
923+func removeLiquidity (cr) = if (if ((bW.caller != ah()))
924+ then true
925+ else (0 >= cr))
926+ then throw("Invalid removeLiquidity params")
927+ else {
928+ let cw = bA()
929+ let cy = bB()
930+ let cx = bC()
931+ let cz = bD()
932+ let fV = aM(aO(cw, cx), aO(cy, cz))
933+ let gC = aM(cr, fV)
934+ let gA = (cw - cr)
935+ let gB = (cy - gC)
936+ gb(gA, gB)
937+ }
938+
939+
940+
941+@Callable(bW)
942+func changeSettings (fA,fB,fC,fD,fE,fF,fG,fH,fI) = if ((bW.caller != ah()))
943+ then throw("Invalid changeSettings params")
944+ else fz(fA, fB, fC, fD, fE, fF, fG, fH, fI)
945+
946+
947+
948+@Callable(bW)
949+func initialize (cw,cy,fD,fA,fB,fC,fE,gD,gE,gF,fF,fG,fH,fI) = if (if (if (if (if (if (if (if (if (if (if (if ((0 >= cw))
950+ then true
951+ else (0 >= cy))
952+ then true
953+ else (0 >= fD))
954+ then true
955+ else (0 >= fA))
956+ then true
957+ else (0 >= fB))
958+ then true
959+ else (0 >= fC))
960+ then true
961+ else (0 >= fE))
962+ then true
963+ else (0 >= fF))
964+ then true
965+ else (0 >= fG))
966+ then true
967+ else (0 >= fH))
968+ then true
969+ else (0 >= fI))
970+ then true
971+ else cn())
972+ then throw("Invalid initialize parameters")
973+ else ((((gd(cw, cy, 0, 0, 0, 0, 0) ++ fz(fA, fB, fC, fD, fE, fF, fG, fH, fI)) ++ fJ((lastBlock.timestamp + fD), 0, 0, 0, 0)) ++ gn(0)) ++ [BooleanEntry(k, true), StringEntry(c, gD), StringEntry(a, gE), StringEntry(O, gF)])
974+
975+
976+
977+@Callable(bW)
978+func setInitMarginRatio (fA) = if (if ((0 >= fA))
979+ then true
980+ else !(cn()))
981+ then throw("Invalid setInitMarginRatio parameters")
982+ else fz(fA, bL(), bM(), bI(), by(), bO(), bP(), bN(), bQ())
983+
984+
985+
986+@Callable(bW)
987+func decreasePosition (gl,gG,gH) = {
988+ let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
989+ if ((gI == gI))
990+ then if (if (if (if (if ((0 >= gl))
991+ then true
992+ else !(cn()))
993+ then true
994+ else !(bX(aM(aF, gG), bz(), true)))
995+ then true
996+ else !(cm(toString(bW.caller))))
997+ then true
998+ else co())
999+ then throw("Invalid decreasePosition parameters")
1000+ else {
1001+ let gJ = ce(toString(bW.caller))
1002+ let gs = gJ._1
1003+ let gK = gJ._2
1004+ let gL = gJ._3
1005+ let gM = gJ._4
1006+ let gN = if ((gs > 0))
1007+ then aA
1008+ else az
1009+ let gO = (gN == az)
1010+ let gP = aO(gl, gG)
1011+ let gQ = dL(toString(bW.caller), aI)
1012+ let gR = gQ._1
1013+ let dK = gQ._2
1014+ let gS = if ((gR > gP))
1015+ then {
1016+ let gT = cA(gO, gP)
1017+ let ef = gT._1
1018+ let cB = gT._2
1019+ let cC = gT._3
1020+ let en = gT._4
1021+ let eo = gT._5
1022+ let gU = aV(ef)
1023+ if (if ((gH != 0))
1024+ then (gH > gU)
1025+ else false)
1026+ then throw(((("Too little base asset exchanged, got " + toString(gU)) + " expected ") + toString(gH)))
1027+ else {
1028+ let ek = aM(aO(dK, gU), aV(gs))
1029+ let gV = cP(gs, gK, gM, ek)
1030+ let cY = gV._1
1031+ let cZ = gV._2
1032+ let cU = gV._3
1033+ let eg = gP
1034+ let gW = (dK - ek)
1035+ let gX = if ((gs > 0))
1036+ then ((gR - eg) - gW)
1037+ else ((gW + gR) - eg)
1038+ let gY = (gs + ef)
1039+ $Tuple11(gY, cY, aV(gX), cc(gY), cC, cB, en, eo, (bG() - gP), (bU() - (if ((gY > 0))
1040+ then aV(ef)
1041+ else 0)), (bT() - (if ((0 > gY))
1042+ then aV(ef)
1043+ else 0)))
1044+ }
1045+ }
1046+ else throw("Close position first")
1047+ let gY = gS._1
1048+ let gZ = gS._2
1049+ let ha = gS._3
1050+ let hb = gS._4
1051+ let cC = gS._5
1052+ let cB = gS._6
1053+ let en = gS._7
1054+ let eo = gS._8
1055+ let er = gS._9
1056+ let ep = gS._10
1057+ let eq = gS._11
1058+ let hc = invoke(an(), "notifyNotional", [toString(bW.caller), ha], nil)
1059+ if ((hc == hc))
1060+ then (fQ(toString(bW.caller), gY, gZ, ha, hb) ++ gd(cB, cC, en, eo, er, ep, eq))
1061+ else throw("Strict value is not equal to itself.")
1062+ }
1063+ else throw("Strict value is not equal to itself.")
1064+ }
1065+
1066+
1067+
1068+@Callable(bW)
1069+func increasePosition (gN,gG,gH,hd) = {
1070+ let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
1071+ if ((gI == gI))
1072+ then {
1073+ let cf = toString(bW.caller)
1074+ let he = bW.payments[0].amount
1075+ let av = bW.payments[0].assetId
1076+ let hf = toBase58String(value(av))
1077+ let hg = (av == aj())
1078+ let hh = au(hf)
1079+ if (if (if (if (if (if (if (if ((gN != az))
1080+ then (gN != aA)
1081+ else false)
1082+ then true
1083+ else (0 >= he))
1084+ then true
1085+ else !(cn()))
1086+ then true
1087+ else if (!(hg))
1088+ then !(hh)
1089+ else false)
1090+ then true
1091+ else !(gr(cf, hf)))
1092+ then true
1093+ else !(bX(aM(aF, gG), bz(), true)))
1094+ then true
1095+ else co())
1096+ then throw("Invalid increasePosition parameters")
1097+ else {
1098+ let hi = invoke(an(), "computeFeeDiscount", [cf], nil)
1099+ if ((hi == hi))
1100+ then {
1101+ let hj = {
1102+ let ch = hi
1103+ if ($isInstanceOf(ch, "Int"))
1104+ then {
1105+ let hk = ch
1106+ hk
1107+ }
1108+ else throw("Invalid computeFeeDiscount result")
1109+ }
1110+ let hl = fp(bW, hj)
1111+ let fx = hl._1
1112+ let fy = hl._2
1113+ let hm = aO(he, fx)
1114+ let gl = (he - hm)
1115+ let hn = if (hh)
1116+ then {
1117+ let ho = invoke(ar(), "borrow", [cf], [AttachedPayment(av, gl)])
1118+ if ((ho == ho))
1119+ then {
1120+ let hp = assetBalance(this, aj())
1121+ if ((hp == hp))
1122+ then {
1123+ let hq = invoke(as(), "swap", [toBase58String(aj()), 0], [AttachedPayment(av, hm)])
1124+ if ((hq == hq))
1125+ then {
1126+ let hr = assetBalance(this, aj())
1127+ if ((hr == hr))
1128+ then {
1129+ let hs = (hr - hp)
1130+ if ((hs == hs))
1131+ then hs
1132+ else throw("Strict value is not equal to itself.")
1133+ }
1134+ else throw("Strict value is not equal to itself.")
1135+ }
1136+ else throw("Strict value is not equal to itself.")
1137+ }
1138+ else throw("Strict value is not equal to itself.")
1139+ }
1140+ else throw("Strict value is not equal to itself.")
1141+ }
1142+ else hm
1143+ if ((hn == hn))
1144+ then {
1145+ let ht = invoke(ap(), "acceptPaymentWithLink", [cf, hd], [AttachedPayment(aj(), hn)])
1146+ if ((ht == ht))
1147+ then {
1148+ let hu = {
1149+ let ch = ht
1150+ if ($isInstanceOf(ch, "Int"))
1151+ then {
1152+ let hk = ch
1153+ hk
1154+ }
1155+ else throw("Invalid referrerFee")
1156+ }
1157+ let hv = (hn - hu)
1158+ let hw = ce(cf)
1159+ let gs = hw._1
1160+ let gK = hw._2
1161+ let gL = hw._3
1162+ let gM = hw._4
1163+ let hx = (gs == 0)
1164+ let hy = if ((gs > 0))
1165+ then (gN == az)
1166+ else (gN == aA)
1167+ let hz = if (!(hx))
1168+ then hy
1169+ else false
1170+ let gO = (gN == az)
1171+ let hA = if (if (hx)
1172+ then true
1173+ else hz)
1174+ then {
1175+ let gP = aO(gl, gG)
1176+ let hB = cA(gO, gP)
1177+ let cE = hB._1
1178+ let cB = hB._2
1179+ let cC = hB._3
1180+ let en = hB._4
1181+ let eo = hB._5
1182+ if (if ((gH != 0))
1183+ then (gH > aV(cE))
1184+ else false)
1185+ then throw(((("Limit error: " + toString(aV(cE))) + " < ") + toString(gH)))
1186+ else {
1187+ let gY = (gs + cE)
1188+ let hC = aM(gP, gG)
1189+ let hD = cP(gs, gK, gM, hC)
1190+ let cY = hD._1
1191+ let dF = hD._2
1192+ let dG = hD._3
1193+ if (!(dq(cB, cC)))
1194+ then throw("Over max spread limit")
1195+ else $Tuple11(gY, cY, (gL + gP), cc(gY), cC, cB, en, eo, (bG() + gP), (bU() + (if ((gY > 0))
1196+ then aV(cE)
1197+ else 0)), (bT() + (if ((0 > gY))
1198+ then aV(cE)
1199+ else 0)))
1200+ }
1201+ }
1202+ else {
1203+ let gP = aO(gl, gG)
1204+ let hE = dL(toString(bW.caller), aI)
1205+ let gR = hE._1
1206+ let dK = hE._2
1207+ if ((gR > gP))
1208+ then throw("Use decreasePosition to decrease position size")
1209+ else throw("Close position first")
1210+ }
1211+ let gY = hA._1
1212+ let gZ = hA._2
1213+ let ha = hA._3
1214+ let hb = hA._4
1215+ let cC = hA._5
1216+ let cB = hA._6
1217+ let en = hA._7
1218+ let eo = hA._8
1219+ let er = hA._9
1220+ let ep = hA._10
1221+ let eq = hA._11
1222+ let hF = (hv / 2)
1223+ let hG = (hv - hF)
1224+ let hH = invoke(am(), "addLocked", nil, [AttachedPayment(aj(), gl)])
1225+ if ((hH == hH))
1226+ then {
1227+ let hI = invoke(am(), "addFree", nil, [AttachedPayment(aj(), hG)])
1228+ if ((hI == hI))
1229+ then {
1230+ let hJ = invoke(an(), "notifyFees", [cf, hv], nil)
1231+ if ((hJ == hJ))
1232+ then {
1233+ let hc = invoke(an(), "notifyNotional", [cf, ha], nil)
1234+ if ((hc == hc))
1235+ then (((((fQ(cf, gY, gZ, ha, hb) ++ fP(cf, hf)) ++ gd(cB, cC, en, eo, er, ep, eq)) ++ go(hF)) ++ gn((bx() + gl))) ++ gp(fy, bW))
1236+ else throw("Strict value is not equal to itself.")
1237+ }
1238+ else throw("Strict value is not equal to itself.")
1239+ }
1240+ else throw("Strict value is not equal to itself.")
1241+ }
1242+ else throw("Strict value is not equal to itself.")
1243+ }
1244+ else throw("Strict value is not equal to itself.")
1245+ }
1246+ else throw("Strict value is not equal to itself.")
1247+ }
1248+ else throw("Strict value is not equal to itself.")
1249+ }
1250+ }
1251+ else throw("Strict value is not equal to itself.")
1252+ }
1253+
1254+
1255+
1256+@Callable(bW)
1257+func addMargin () = {
1258+ let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
1259+ if ((gI == gI))
1260+ then {
1261+ let cf = toString(bW.caller)
1262+ let he = bW.payments[0].amount
1263+ let av = bW.payments[0].assetId
1264+ let hf = toBase58String(value(av))
1265+ let hg = (av == aj())
1266+ let hh = au(hf)
1267+ if (if (if (if (if (if (!(hg))
1268+ then !(hh)
1269+ else false)
1270+ then true
1271+ else !(cm(toString(bW.caller))))
1272+ then true
1273+ else !(gt(cf, hf)))
1274+ then true
1275+ else !(cn()))
1276+ then true
1277+ else co())
1278+ then throw("Invalid addMargin parameters")
1279+ else {
1280+ let hi = invoke(an(), "computeFeeDiscount", [cf], nil)
1281+ if ((hi == hi))
1282+ then {
1283+ let hj = {
1284+ let ch = hi
1285+ if ($isInstanceOf(ch, "Int"))
1286+ then {
1287+ let hk = ch
1288+ hk
1289+ }
1290+ else throw("Invalid computeFeeDiscount result")
1291+ }
1292+ let hK = fp(bW, hj)
1293+ let fx = hK._1
1294+ let fy = hK._2
1295+ let hm = aO(he, fx)
1296+ let gl = (he - hm)
1297+ let hn = if (hh)
1298+ then {
1299+ let ho = invoke(ar(), "borrow", [cf], [AttachedPayment(av, gl)])
1300+ if ((ho == ho))
1301+ then {
1302+ let hp = assetBalance(this, aj())
1303+ if ((hp == hp))
1304+ then {
1305+ let hq = invoke(as(), "swap", [toBase58String(aj()), 0], [AttachedPayment(av, hm)])
1306+ if ((hq == hq))
1307+ then {
1308+ let hr = assetBalance(this, aj())
1309+ if ((hr == hr))
1310+ then {
1311+ let hs = (hr - hp)
1312+ if ((hs == hs))
1313+ then hs
1314+ else throw("Strict value is not equal to itself.")
1315+ }
1316+ else throw("Strict value is not equal to itself.")
1317+ }
1318+ else throw("Strict value is not equal to itself.")
1319+ }
1320+ else throw("Strict value is not equal to itself.")
1321+ }
1322+ else throw("Strict value is not equal to itself.")
1323+ }
1324+ else hm
1325+ if ((hn == hn))
1326+ then {
1327+ let ht = invoke(ap(), "acceptPayment", [cf], [AttachedPayment(aj(), hn)])
1328+ if ((ht == ht))
1329+ then {
1330+ let hu = {
1331+ let ch = ht
1332+ if ($isInstanceOf(ch, "Int"))
1333+ then {
1334+ let hk = ch
1335+ hk
1336+ }
1337+ else throw("Invalid referrerFee")
1338+ }
1339+ let hv = (hn - hu)
1340+ let hL = ce(cf)
1341+ let gs = hL._1
1342+ let gK = hL._2
1343+ let gL = hL._3
1344+ let gM = hL._4
1345+ let hF = (hv / 2)
1346+ let hG = (hv - hF)
1347+ let hH = invoke(am(), "addLocked", nil, [AttachedPayment(aj(), gl)])
1348+ if ((hH == hH))
1349+ then {
1350+ let hI = invoke(am(), "addFree", nil, [AttachedPayment(aj(), hG)])
1351+ if ((hI == hI))
1352+ then {
1353+ let hJ = invoke(an(), "notifyFees", [cf, hv], nil)
1354+ if ((hJ == hJ))
1355+ then (((fQ(cf, gs, (gK + gl), gL, gM) ++ go(hF)) ++ gn((bx() + gl))) ++ gp(fy, bW))
1356+ else throw("Strict value is not equal to itself.")
1357+ }
1358+ else throw("Strict value is not equal to itself.")
1359+ }
1360+ else throw("Strict value is not equal to itself.")
1361+ }
1362+ else throw("Strict value is not equal to itself.")
1363+ }
1364+ else throw("Strict value is not equal to itself.")
1365+ }
1366+ else throw("Strict value is not equal to itself.")
1367+ }
1368+ }
1369+ else throw("Strict value is not equal to itself.")
1370+ }
1371+
1372+
1373+
1374+@Callable(bW)
1375+func removeMargin (gl) = {
1376+ let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
1377+ if ((gI == gI))
1378+ then {
1379+ let cf = toString(bW.caller)
1380+ if (if (if (if ((0 >= gl))
1381+ then true
1382+ else !(cm(cf)))
1383+ then true
1384+ else !(cn()))
1385+ then true
1386+ else co())
1387+ then throw("Invalid removeMargin parameters")
1388+ else {
1389+ let hM = ce(cf)
1390+ let gs = hM._1
1391+ let gK = hM._2
1392+ let gL = hM._3
1393+ let gM = hM._4
1394+ let hN = -(gl)
1395+ let hO = cP(gs, gK, gM, hN)
1396+ let cY = hO._1
1397+ let cZ = hO._2
1398+ if ((cZ != 0))
1399+ then throw("Invalid removed margin amount")
1400+ else {
1401+ let hP = dQ(cY, cZ, gL)
1402+ if (!(bX(hP, bz(), true)))
1403+ then throw(((("Too much margin removed: " + toString(hP)) + " < ") + toString(bz())))
1404+ else {
1405+ let hQ = toBase58String(aj())
1406+ let hR = gw(cf)
1407+ let hS = hR._1
1408+ let hT = hR._2
1409+ let hU = if ((gl > hS))
1410+ then hS
1411+ else gl
1412+ let hV = if ((hS > gl))
1413+ then 0
1414+ else (gl - hS)
1415+ let hW = (hS - hU)
1416+ let hX = if ((hW > 0))
1417+ then nil
1418+ else fP(cf, hQ)
1419+ let hY = if (((hU + hV) != gl))
1420+ then throw(((((("toRepay=" + toString(hU)) + " + toWithdraw=") + toString(hV)) + " != ") + toString(gl)))
1421+ else nil
1422+ if ((hY == hY))
1423+ then {
1424+ let hZ = invoke(am(), "withdrawLocked", [gl], nil)
1425+ if ((hZ == hZ))
1426+ then {
1427+ let ia = if ((hU > 0))
1428+ then {
1429+ let ib = invoke(ar(), "repay", [cf, hT], [AttachedPayment(aj(), hU)])
1430+ if ((ib == ib))
1431+ then [ScriptTransfer(bW.caller, hU, fromBase58String(hT))]
1432+ else throw("Strict value is not equal to itself.")
1433+ }
1434+ else nil
1435+ if ((ia == ia))
1436+ then ((((fQ(cf, gs, cY, gL, cc(gs)) ++ (if ((hV > 0))
1437+ then gk(bW.caller, hV)
1438+ else nil)) ++ gn((bx() - gl))) ++ hX) ++ ia)
1439+ else throw("Strict value is not equal to itself.")
1440+ }
1441+ else throw("Strict value is not equal to itself.")
1442+ }
1443+ else throw("Strict value is not equal to itself.")
1444+ }
1445+ }
1446+ }
1447+ }
1448+ else throw("Strict value is not equal to itself.")
1449+ }
1450+
1451+
1452+
1453+@Callable(bW)
1454+func closePosition () = {
1455+ let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
1456+ if ((gI == gI))
1457+ then {
1458+ let cf = bV(bW)
1459+ let ic = valueOrErrorMessage(addressFromString(cf), "Invalid caller")
1460+ if (if (if (!(cm(cf)))
1461+ then true
1462+ else !(cn()))
1463+ then true
1464+ else co())
1465+ then throw("Invalid closePosition parameters")
1466+ else {
1467+ let id = eh(cf, true)
1468+ let dF = id._1
1469+ let ie = id._2
1470+ let ek = id._3
1471+ let el = id._4
1472+ let cB = id._5
1473+ let cC = id._6
1474+ let en = id._7
1475+ let eo = id._8
1476+ let er = id._9
1477+ let dG = id._10
1478+ let ep = id._11
1479+ let eq = id._12
1480+ if ((ie > 0))
1481+ then throw("Unable to close position with bad debt")
1482+ else {
1483+ let if = aV(el)
1484+ let ig = (bx() - if)
1485+ let ih = if ((0 > ig))
1486+ then $Tuple2(0, aV(ig))
1487+ else $Tuple2(ig, 0)
1488+ let ii = ih._1
1489+ let ij = ih._2
1490+ let ik = invoke(am(), "withdrawLocked", [if], nil)
1491+ if ((ik == ik))
1492+ then {
1493+ let il = gw(cf)
1494+ let hS = il._1
1495+ let hT = il._2
1496+ let im = if ((hS > 0))
1497+ then if ((if >= hS))
1498+ then {
1499+ let ib = invoke(ar(), "repay", [cf, hT], [AttachedPayment(aj(), hS)])
1500+ if ((ib == ib))
1501+ then $Tuple2([ScriptTransfer(ic, hS, fromBase58String(hT))], (if - hS))
1502+ else throw("Strict value is not equal to itself.")
1503+ }
1504+ else {
1505+ let in = invoke(ar(), "realizePartiallyAndClose", [cf, hT], [AttachedPayment(aj(), if)])
1506+ if ((in == in))
1507+ then $Tuple2([ScriptTransfer(ic, if, fromBase58String(hT))], 0)
1508+ else throw("Strict value is not equal to itself.")
1509+ }
1510+ else $Tuple2(nil, if)
1511+ if ((im == im))
1512+ then {
1513+ let io = im._2
1514+ let ip = im._1
1515+ let hc = invoke(an(), "notifyNotional", [cf, 0], nil)
1516+ if ((hc == hc))
1517+ then ((((gj(cf) ++ gd(cB, cC, en, eo, er, ep, eq)) ++ (if ((io > 0))
1518+ then gk(ic, io)
1519+ else nil)) ++ gn(ii)) ++ ip)
1520+ else throw("Strict value is not equal to itself.")
1521+ }
1522+ else throw("Strict value is not equal to itself.")
1523+ }
1524+ else throw("Strict value is not equal to itself.")
1525+ }
1526+ }
1527+ }
1528+ else throw("Strict value is not equal to itself.")
1529+ }
1530+
1531+
1532+
1533+@Callable(bW)
1534+func liquidate (cf) = {
1535+ let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
1536+ if ((gI == gI))
1537+ then {
1538+ let iq = dU(cf, aI)
1539+ let hP = if (dw())
1540+ then {
1541+ let ir = dU(cf, aJ)
1542+ aW(iq, ir)
1543+ }
1544+ else iq
1545+ if (if (if (if (!(bX(hP, bL(), false)))
1546+ then true
1547+ else !(cm(cf)))
1548+ then true
1549+ else !(cn()))
1550+ then true
1551+ else co())
1552+ then throw("Unable to liquidate")
1553+ else if (if (if ((iq > bM()))
1554+ then (bN() > 0)
1555+ else false)
1556+ then (aF > bN())
1557+ else false)
1558+ then {
1559+ let is = ce(cf)
1560+ let gs = is._1
1561+ let gK = is._2
1562+ let gL = is._3
1563+ let gM = is._4
1564+ let gN = if ((gs > 0))
1565+ then aA
1566+ else az
1567+ let gO = (gN == az)
1568+ let eg = ea(cf, gs)
1569+ let it = dL(cf, aI)
1570+ let gR = it._1
1571+ let dK = it._2
1572+ let iu = cA(gO, eg)
1573+ let ef = iu._1
1574+ let cB = iu._2
1575+ let cC = iu._3
1576+ let en = iu._4
1577+ let eo = iu._5
1578+ let iv = aM(aV(ef), aV(gs))
1579+ let ek = aO(dK, iv)
1580+ let iw = cP(gs, gK, gM, ek)
1581+ let cY = iw._1
1582+ let cZ = iw._2
1583+ let cU = iw._3
1584+ let gW = (dK - ek)
1585+ let gX = if ((gs > 0))
1586+ then ((gR - eg) - gW)
1587+ else ((gW + gR) - eg)
1588+ let ix = aO(eg, bM())
1589+ let iy = (ix / 2)
1590+ let hG = (ix - iy)
1591+ let iz = (cY - ix)
1592+ let gY = (gs + ef)
1593+ let ha = aV(gX)
1594+ let iA = cc(gY)
1595+ let er = (bG() - eg)
1596+ let ig = (bx() - ix)
1597+ let iB = if ((0 > ig))
1598+ then $Tuple2(0, aV(ig))
1599+ else $Tuple2(ig, 0)
1600+ let iC = iB._1
1601+ let ij = iB._2
1602+ let iD = gw(cf)
1603+ let hS = iD._1
1604+ let hT = iD._2
1605+ let iE = if ((hS > 0))
1606+ then {
1607+ let iF = aO(hS, iv)
1608+ let in = invoke(ar(), "realizePartially", [cf, hT, iF], nil)
1609+ if ((in == in))
1610+ then nil
1611+ else throw("Strict value is not equal to itself.")
1612+ }
1613+ else nil
1614+ if ((iE == iE))
1615+ then {
1616+ let ik = invoke(am(), "withdrawLocked", [ix], nil)
1617+ if ((ik == ik))
1618+ then {
1619+ let hI = invoke(am(), "addFree", nil, [AttachedPayment(aj(), hG)])
1620+ if ((hI == hI))
1621+ then {
1622+ let hc = invoke(an(), "notifyNotional", [cf, ha], nil)
1623+ if ((hc == hc))
1624+ then (((fQ(cf, gY, iz, ha, iA) ++ gd(cB, cC, en, eo, er, (bU() - (if ((gY > 0))
1625+ then aV(ef)
1626+ else 0)), (bT() - (if ((0 > gY))
1627+ then aV(ef)
1628+ else 0)))) ++ gk(bW.caller, iy)) ++ gn(iC))
1629+ else throw("Strict value is not equal to itself.")
1630+ }
1631+ else throw("Strict value is not equal to itself.")
1632+ }
1633+ else throw("Strict value is not equal to itself.")
1634+ }
1635+ else throw("Strict value is not equal to itself.")
1636+ }
1637+ else {
1638+ let iG = eh(cf, false)
1639+ let dF = iG._1
1640+ let cZ = iG._2
1641+ let dG = iG._3
1642+ let dH = iG._4
1643+ let cB = iG._5
1644+ let cC = iG._6
1645+ let en = iG._7
1646+ let eo = iG._8
1647+ let er = iG._9
1648+ let eg = iG._10
1649+ let ep = iG._11
1650+ let eq = iG._12
1651+ let ix = aO(eg, bM())
1652+ let iy = (ix / 2)
1653+ let hG = (ix - iy)
1654+ let ig = (bx() - ix)
1655+ let iH = if ((0 > ig))
1656+ then $Tuple2(0, aV(ig))
1657+ else $Tuple2(ig, 0)
1658+ let iC = iH._1
1659+ let ij = iH._2
1660+ let iI = gw(cf)
1661+ let hS = iI._1
1662+ let hT = iI._2
1663+ let iE = if ((hS > 0))
1664+ then {
1665+ let in = invoke(ar(), "realizePartiallyAndClose", [cf, hT], nil)
1666+ if ((in == in))
1667+ then nil
1668+ else throw("Strict value is not equal to itself.")
1669+ }
1670+ else nil
1671+ if ((iE == iE))
1672+ then {
1673+ let hk = if ((cZ > 0))
1674+ then {
1675+ let iJ = invoke(am(), "exchangeFreeAndLocked", [cZ], nil)
1676+ if ((iJ == iJ))
1677+ then nil
1678+ else throw("Strict value is not equal to itself.")
1679+ }
1680+ else nil
1681+ if ((hk == hk))
1682+ then {
1683+ let ik = invoke(am(), "withdrawLocked", [ix], nil)
1684+ if ((ik == ik))
1685+ then {
1686+ let hI = invoke(am(), "addFree", nil, [AttachedPayment(aj(), hG)])
1687+ if ((hI == hI))
1688+ then {
1689+ let hc = invoke(an(), "notifyNotional", [cf, 0], nil)
1690+ if ((hc == hc))
1691+ then (((gj(cf) ++ gd(cB, cC, en, eo, er, ep, eq)) ++ gk(bW.caller, iy)) ++ gn(iC))
1692+ else throw("Strict value is not equal to itself.")
1693+ }
1694+ else throw("Strict value is not equal to itself.")
1695+ }
1696+ else throw("Strict value is not equal to itself.")
1697+ }
1698+ else throw("Strict value is not equal to itself.")
1699+ }
1700+ else throw("Strict value is not equal to itself.")
1701+ }
1702+ }
1703+ else throw("Strict value is not equal to itself.")
1704+ }
1705+
1706+
1707+
1708+@Callable(bW)
1709+func payFunding () = {
1710+ let iK = bH()
1711+ if (if (if ((iK > lastBlock.timestamp))
1712+ then true
1713+ else !(cn()))
1714+ then true
1715+ else co())
1716+ then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(iK)))
1717+ else {
1718+ let fk = dl()
1719+ let iL = fj()
1720+ let fn = iL._1
1721+ let fo = iL._2
1722+ fJ((iK + bK()), (bR() + fo), (bS() + fn), aM(fo, fk), aM(fn, fk))
1723+ }
1724+ }
1725+
1726+
1727+
1728+@Callable(bW)
1729+func syncTerminalPriceToOracle () = {
1730+ let iM = ff(dl())
1731+ let iN = iM._1
1732+ let iO = iM._2
1733+ let el = iM._3
1734+ gc(iN, iO)
1735+ }
1736+
1737+
1738+
1739+@Callable(bW)
1740+func v_get (cf) = {
1741+ let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
1742+ if ((gI == gI))
1743+ then {
1744+ let iP = eh(cf, false)
1745+ let dF = iP._1
1746+ let dG = iP._2
1747+ let dH = iP._3
1748+ let iQ = iP._4
1749+ throw((((aK(dG) + aK(dH)) + aK(iQ)) + aK(dZ(cf))))
1750+ }
1751+ else throw("Strict value is not equal to itself.")
1752+ }
1753+
1754+
1755+
1756+@Callable(bW)
1757+func view_calcRemainMarginWithFundingPayment (cf) = {
1758+ let gI = invoke(this, "syncTerminalPriceToOracle", nil, nil)
1759+ if ((gI == gI))
1760+ then {
1761+ let iR = ce(cf)
1762+ let ci = iR._1
1763+ let dN = iR._2
1764+ let dW = iR._3
1765+ let dP = iR._4
1766+ let iS = dL(cf, aI)
1767+ let dC = iS._1
1768+ let dK = iS._2
1769+ let iT = cP(ci, dN, dP, dK)
1770+ let cY = iT._1
1771+ let cZ = iT._2
1772+ let cU = iT._3
1773+ throw((((((aK(cY) + aK(cU)) + aK(dZ(cf))) + aK(dK)) + aK(cZ)) + aK(dC)))
1774+ }
1775+ else throw("Strict value is not equal to itself.")
1776+ }
1777+
1778+
1779+
1780+@Callable(bW)
1781+func view_getPegAdjustCost (iU) = {
1782+ let fe = ff(iU)
1783+ throw(toString(fe._3))
1784+ }
1785+
1786+
1787+
1788+@Callable(bW)
1789+func view_getTerminalAmmPrice () = {
1790+ let iV = eI()
1791+ let eM = iV._1
1792+ let eN = iV._2
1793+ let fV = aM(aO(eM, bC()), aO(eN, bD()))
1794+ throw(toString(fV))
1795+ }
1796+
1797+
1798+
1799+@Callable(bW)
1800+func view_getFunding () = {
1801+ let fk = dl()
1802+ let iW = fj()
1803+ let fn = iW._1
1804+ let fo = iW._2
1805+ let iX = aM(fo, fk)
1806+ let iY = aM(fn, fk)
1807+ throw((((aK(iX) + aK(iY)) + aK(es())) + aK(dl())))
1808+ }
1809+
1810+
1811+
1812+@Callable(bW)
1813+func view_getBorrowedByTrader (cf) = {
1814+ let iZ = gw(cf)
1815+ let hS = iZ._1
1816+ let hT = iZ._2
1817+ throw((aK(hS) + hT))
1818+ }
1819+
1820+
1821+@Verifier(ja)
1822+func jb () = sigVerify(ja.bodyBytes, ja.proofs[0], ai())
1823+

github/deemru/w8io/169f3d6 
96.97 ms