tx · 46ntvNZBvMjcy5ZtsLp8fvkfRprp3jwbzyVAs4CpZcA4

3N9be2mwrA52WJho6DiesZkk4351GvpnWuj:  -0.04100000 Waves

2023.03.01 18:28 [2471180] smart account 3N9be2mwrA52WJho6DiesZkk4351GvpnWuj > SELF 0.00000000 Waves

{ "type": 13, "id": "46ntvNZBvMjcy5ZtsLp8fvkfRprp3jwbzyVAs4CpZcA4", "fee": 4100000, "feeAssetId": null, "timestamp": 1677684516735, "version": 2, "chainId": 84, "sender": "3N9be2mwrA52WJho6DiesZkk4351GvpnWuj", "senderPublicKey": "6mzmbCza9iqbzxMEELcEA4Xc9NeF4CYpbTtz1zMK3C7x", "proofs": [ "5Zw84p7CAgFERJSFQFoVRuvkyh7fdLQzhzpfCn5YigBMszGtbJgiBBbRQcdJGMAW1QyuURe6DzCxv6ipLYya3mKX", "3mkE97DM7ckaPQyqDaLR8qPfmrjctNZyy2kE1vwFQTt84tC7aBhBU7JY7WDBZrEPgaesDGjvo8LoNtyKoJgDcsmi", "3y58WSyD7AZ5bDCXq43vEqbP2vSfscbg1Z5nnjUG18BT4wFgsxYsfNqhVqXoAQFmjGZH7h1iVBTpcmmHYA2Gp2Mw" ], "script": "base64:BgJjCAISDgoMCAgICAgIAQEBAQEBEgUKAwgIARIHCgUYAQEBARIAEgASBAoCCAESBQoDCAEIEgMKAQESBAoCAQgSABIFCgMIAQESBAoCAQESBAoCCAESBgoECAEBCBIGCgQICAEBswEBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQVsY2FsYwEBbAkAuQgBBQFsAQ5nZXROdW1iZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAQxnZXRCb29sQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHARhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkCB2FkZHJlc3MDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQAAARhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkCB2FkZHJlc3MDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MFA2tleQIAARZnZXRCb29sQnlBZGRyZXNzQW5kS2V5AgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQdhZGRyZXNzBQNrZXkHAQlhc0FueUxpc3QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFsBQckbWF0Y2gwBQFsCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBaQUHJG1hdGNoMAUBaQkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEHYXNCeXRlcwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQHdmFsQnl0ZQUHJG1hdGNoMAUHdmFsQnl0ZQkAAgECHGZhaWwgdG8gY2FzdCBpbnRvIEJ5dGVWZWN0b3IBCWFzUGF5bWVudAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAg9BdHRhY2hlZFBheW1lbnQEAXAFByRtYXRjaDAFAXAJAAIBAiFmYWlsIHRvIGNhc3QgaW50byBBdHRhY2hlZFBheW1lbnQBEmFzU3dhcFBhcmFtc1NUUlVDVAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAiMoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50KQQGc3RydWN0BQckbWF0Y2gwBQZzdHJ1Y3QJAAIBAh1mYWlsIHRvIGNhc3QgaW50byBUdXBsZTUgaW50cwADU0VQAgJfXwAHTElTVFNFUAIBOgAFTVVMVDgAgMLXLwAFTVVMVDYAwIQ9AA5ERUZBVUxUU1dBUEZFRQCgnAEAC0JSUFJPVEVDVEVEAKCNBgAHV0FWRVNJRAEEE6vZMwAPbk1ldHJpY0lkeFByaWNlAAAAG25NZXRyaWNJZHhVc2RuTG9ja2VkQmFsYW5jZQABABxuTWV0cmljSWR4V2F2ZXNMb2NrZWRCYWxhbmNlAAIAEW5NZXRyaWNJZHhSZXNlcnZlAAMAF25NZXRyaWNJZHhSZXNlcnZlSW5Vc2RuAAQAFG5NZXRyaWNJZHhVc2RuU3VwcGx5AAUAEW5NZXRyaWNJZHhTdXJwbHVzAAYAGG5NZXRyaWNJZHhTdXJwbHVzUGVyY2VudAAHAAxuTWV0cmljSWR4QlIACAAUbk1ldHJpY0lkeE5zYnRTdXBwbHkACQAXbk1ldHJpY0lkeE1heE5zYnRTdXBwbHkACgAUbk1ldHJpY0lkeFN1cmZTdXBwbHkACwASbk1ldHJpY1VzZG5Vc2R0UGVnAAwAFm5NZXRyaWNDdXJyZW50UHJpY2VBZGoADQARbk1ldHJpY0Jhc2tldEluZm8ADgAUbk1ldHJpY1dlaWdodGVkUHJpY2UADwAXbk1ldHJpY1RvdGFsUmVzZXJ2ZXNVc2QAEAAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAABABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAgAUSWR4Q29udHJvbENmZ1JwZERhcHAAAwAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAQAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAABQAVSWR4Q29udHJvbENmZ1Jlc3REYXBwAAYAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAcAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAACAAZSWR4Q29udHJvbENmZ01lZGlhdG9yRGFwcAAJABxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAAoAIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAAsAF0lkeENvbnRyb2xDZmdSZXN0VjJEYXBwAAwAG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAANARFrZXlDb250cm9sQWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBDWtleUNvbnRyb2xDZmcAAhElc19fY29udHJvbENvbmZpZwEUcmVhZENvbnRyb2xDZmdPckZhaWwBB2NvbnRyb2wJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFB2NvbnRyb2wJAQ1rZXlDb250cm9sQ2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCmNvbnRyb2xDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpjb250cm9sQ2ZnBQNpZHgJAKwCAgItQ29udHJvbCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAPY29udHJvbENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFrZXlDb250cm9sQWRkcmVzcwACIzNONE5TN2Q0Sm85YTZGMTRMaUZVS0tZVmRVa2tmMmVQNFp4AApjb250cm9sQ2ZnCQEUcmVhZENvbnRyb2xDZmdPckZhaWwBBQ9jb250cm9sQ29udHJhY3QADG1hdGhDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFFUlkeENvbnRyb2xDZmdNYXRoRGFwcAATbnNidFN0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAAE3N1cmZTdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwABdnbnNidENvbnRyb2xsZXJDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAA9hdWN0aW9uQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAFG5vZGVSZWdpc3RyeUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUbSWR4Q29udHJvbENmZ0dvdmVybmFuY2VEYXBwABJOZXV0cmlub0Fzc2V0SWRLZXkCEW5ldXRyaW5vX2Fzc2V0X2lkAA5Cb25kQXNzZXRJZEtleQINYm9uZF9hc3NldF9pZAASQXVjdGlvbkNvbnRyYWN0S2V5AhBhdWN0aW9uX2NvbnRyYWN0ABZOc2J0U3Rha2luZ0NvbnRyYWN0S2V5AhNuc2J0U3Rha2luZ0NvbnRyYWN0ABZMaXF1aWRhdGlvbkNvbnRyYWN0S2V5AhRsaXF1aWRhdGlvbl9jb250cmFjdAAOUlBEQ29udHJhY3RLZXkCDHJwZF9jb250cmFjdAARQ29udG9sQ29udHJhY3RLZXkCEGNvbnRyb2xfY29udHJhY3QAD01hdGhDb250cmFjdEtleQINbWF0aF9jb250cmFjdAAbQmFsYW5jZVdhdmVzTG9ja0ludGVydmFsS2V5AhtiYWxhbmNlX3dhdmVzX2xvY2tfaW50ZXJ2YWwAHkJhbGFuY2VOZXV0cmlub0xvY2tJbnRlcnZhbEtleQIeYmFsYW5jZV9uZXV0cmlub19sb2NrX2ludGVydmFsARVNaW5Ub2tlblN3YXBBbW91bnRLZXkBB2Fzc2V0SWQJAKwCAgIcbWluX291dE5ldXRyaW5vX3N3YXBfYW1vdW50XwUHYXNzZXRJZAAYTWluTmV1dHJpbm9Td2FwQW1vdW50S2V5AhhtaW5fb3V0TXVsdGlfc3dhcF9hbW91bnQAHkxlZ2FjeU1pbk5ldXRyaW5vU3dhcEFtb3VudEtleQIYbWluX25ldXRyaW5vX3N3YXBfYW1vdW50ABtOb2RlT3JhY2xlUHJvdmlkZXJQdWJLZXlLZXkCFG5vZGVfb3JhY2xlX3Byb3ZpZGVyABVOZXV0cmlub091dEZlZVBhcnRLZXkCGG5ldXRyaW5vT3V0X3N3YXBfZmVlUGFydAASV2F2ZXNPdXRGZWVQYXJ0S2V5AhV3YXZlc091dF9zd2FwX2ZlZVBhcnQBD2tleU5vZGVSZWdpc3RyeQEHYWRkcmVzcwkArAICAgQlc19fBQdhZGRyZXNzAAhQcmljZUtleQIFcHJpY2UADVByaWNlSW5kZXhLZXkCC3ByaWNlX2luZGV4AAxJc0Jsb2NrZWRLZXkCCmlzX2Jsb2NrZWQBEmdldFByaWNlSGlzdG9yeUtleQEFYmxvY2sJAKwCAgkArAICBQhQcmljZUtleQIBXwkApAMBBQVibG9jawEYZ2V0SGVpZ2h0UHJpY2VCeUluZGV4S2V5AQVpbmRleAkArAICCQCsAgIFDVByaWNlSW5kZXhLZXkCAV8JAKQDAQUFaW5kZXgBFWdldFN0YWtpbmdOb2RlQnlJbmRleAEDaWR4CQEOZ2V0U3RyaW5nQnlLZXkBCQC5CQIJAMwIAgIGJXMlZCVzCQDMCAICBWxlYXNlCQDMCAIJAKQDAQUDaWR4CQDMCAICC25vZGVBZGRyZXNzBQNuaWwFA1NFUAEcZ2V0U3Rha2luZ05vZGVBZGRyZXNzQnlJbmRleAEDaWR4CQERQGV4dHJOYXRpdmUoMTA2MikBCQEVZ2V0U3Rha2luZ05vZGVCeUluZGV4AQUDaWR4AR9nZXRSZXNlcnZlZEFtb3VudEZvclNwb25zb3JzaGlwAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVsZWFzZQkAzAgCAhdzcG9uc29yc2hpcFdhdmVzUmVzZXJ2ZQUDbmlsBQNTRVAJAGgCAOgHBQVNVUxUOAEYZ2V0QmFsYW5jZVVubG9ja0Jsb2NrS2V5AQVvd25lcgkArAICAhViYWxhbmNlX3VubG9ja19ibG9ja18FBW93bmVyAQ1nZXRMZWFzZUlkS2V5AQlub2RlSW5kZXgJALkJAgkAzAgCAgYlcyVkJXMJAMwIAgIFbGVhc2UJAMwIAgkApAMBBQlub2RlSW5kZXgJAMwIAgICaWQFA25pbAUDU0VQARZnZXRMZWFzZUlkQnlBZGRyZXNzS2V5AQtub2RlQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAg5sZWFzZUJ5QWRkcmVzcwkAzAgCBQtub2RlQWRkcmVzcwkAzAgCAgJpZAUDbmlsBQNTRVABEWdldExlYXNlQW1vdW50S2V5AQlub2RlSW5kZXgJALkJAgkAzAgCAgYlcyVkJXMJAMwIAgIFbGVhc2UJAMwIAgkApAMBBQlub2RlSW5kZXgJAMwIAgIGYW1vdW50BQNuaWwFA1NFUAEaZ2V0TGVhc2VBbW91bnRCeUFkZHJlc3NLZXkBC25vZGVBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICDmxlYXNlQnlBZGRyZXNzCQDMCAIFC25vZGVBZGRyZXNzCQDMCAICBmFtb3VudAUDbmlsBQNTRVABGGdldExlYXNlR3JvdXBOb2RlTGlzdEtleQEIZ3JvdXBOdW0JALkJAgkAzAgCAgYlcyVkJXMJAMwIAgIKbGVhc2VHcm91cAkAzAgCCQCkAwEFCGdyb3VwTnVtCQDMCAICCG5vZGVMaXN0BQNuaWwFA1NFUAEQbWluU3dhcEFtb3VudEtFWQEIc3dhcFR5cGUJAKwCAgkArAICAgRtaW5fBQhzd2FwVHlwZQIMX3N3YXBfYW1vdW50AQ50b3RhbExvY2tlZEtFWQIIc3dhcFR5cGUHYXNzZXRJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtiYWxhbmNlTG9jawkAzAgCBQhzd2FwVHlwZQkAzAgCBQdhc3NldElkBQNuaWwFA1NFUAEUdG90YWxMb2NrZWRCeVVzZXJLRVkDCHN3YXBUeXBlBW93bmVyB2Fzc2V0SWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAgtiYWxhbmNlTG9jawkAzAgCBQhzd2FwVHlwZQkAzAgCBQVvd25lcgkAzAgCBQdhc3NldElkBQNuaWwCAV8BFmJhbGFuY2VMb2NrSW50ZXJ2YWxLRVkBCHN3YXBUeXBlAwkAAAIFCHN3YXBUeXBlAghvdXRNdWx0aQUeQmFsYW5jZU5ldXRyaW5vTG9ja0ludGVydmFsS2V5BRtCYWxhbmNlV2F2ZXNMb2NrSW50ZXJ2YWxLZXkBGm5vZGVCYWxhbmNlTG9ja0ludGVydmFsS0VZAAIaYmFsYW5jZV9ub2RlX2xvY2tfaW50ZXJ2YWwBEXN3YXBzVGltZWZyYW1lS0VZAAIPc3dhcHNfdGltZWZyYW1lAQ5iclByb3RlY3RlZEtFWQACF21pbl9CUl9wcm90ZWN0aW9uX2xldmVsAQ9iYXNrZXRBc3NldHNLZXkAAholcyVzX19jb21tb25fX2Jhc2tldEFzc2V0cwEKYmFza2V0REtleQACFSVzJXNfX2NvbW1vbl9fYmFza2V0RAEKYmFza2V0S0tleQACFSVzJXNfX2NvbW1vbl9fYmFza2V0SwEKYmFza2V0QktleQACFSVzJXNfX2NvbW1vbl9fYmFza2V0QgESYmFza2V0TG9nYkRlbHRhS2V5AAIdJXMlc19fY29tbW9uX19iYXNrZXRMb2diRGVsdGEBFmJhc2tldFdlaWdodEJ5QXNzZXRLZXkBB2Fzc2V0SWQJAKwCAgIfJXMlcyVzX19jb21tb25fX3dlaWdodEJ5QXNzZXRfXwUHYXNzZXRJZAEPa2V5UHJpY2VCeUFzc2V0AQdhc3NldElkCQCsAgICHiVzJXMlc19fY29tbW9uX19wcmljZUJ5QXNzZXRfXwUHYXNzZXRJZAERbWluU3dhcEFtb3VudFJFQUQCCHN3YXBUeXBlB2Fzc2V0SWQDCQAAAgUIc3dhcFR5cGUCCG91dE11bHRpCQELdmFsdWVPckVsc2UCCQCfCAEFGE1pbk5ldXRyaW5vU3dhcEFtb3VudEtleQkBDmdldE51bWJlckJ5S2V5AQUeTGVnYWN5TWluTmV1dHJpbm9Td2FwQW1vdW50S2V5CQEOZ2V0TnVtYmVyQnlLZXkBCQEVTWluVG9rZW5Td2FwQW1vdW50S2V5AQUHYXNzZXRJZAESc3dhcHNUaW1lZnJhbWVSRUFEAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQERc3dhcHNUaW1lZnJhbWVLRVkAAKALAQ90b3RhbExvY2tlZFJFQUQCCHN3YXBUeXBlB2Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvdGFsTG9ja2VkS0VZAgUIc3dhcFR5cGUFB2Fzc2V0SWQAAAEVdG90YWxMb2NrZWRCeVVzZXJSRUFEAwhzd2FwVHlwZQVvd25lcgdhc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARR0b3RhbExvY2tlZEJ5VXNlcktFWQMFCHN3YXBUeXBlBQVvd25lcgUHYXNzZXRJZAAAARdiYWxhbmNlTG9ja0ludGVydmFsUkVBRAEIc3dhcFR5cGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFmJhbGFuY2VMb2NrSW50ZXJ2YWxLRVkBBQhzd2FwVHlwZQCgCwEbbm9kZUJhbGFuY2VMb2NrSW50ZXJ2YWxSRUFEAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEabm9kZUJhbGFuY2VMb2NrSW50ZXJ2YWxLRVkAAAEBGGtleVN3YXBVc2VyU3BlbnRJblBlcmlvZAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICFXN3YXBVc2VyU3BlbnRJblBlcmlvZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABFWtleVVzZXJMYXN0U3dhcEhlaWdodAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICEnVzZXJMYXN0U3dhcEhlaWdodAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABFmNvbnZlcnROZXV0cmlub1RvV2F2ZXMCBmFtb3VudAVwcmljZQkAawMFBmFtb3VudAUFTVVMVDgFBXByaWNlARFjb252ZXJ0VG9rZW5Ub1VzZAIGYW1vdW50BXByaWNlCQBrAwUGYW1vdW50BQVwcmljZQUFTVVMVDgBFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8CBmFtb3VudAVwcmljZQkAawMFBmFtb3VudAUFcHJpY2UFBU1VTFQ4ARJjb252ZXJ0V2F2ZXNUb0JvbmQCBmFtb3VudAVwcmljZQkBEWNvbnZlcnRUb2tlblRvVXNkAgUGYW1vdW50BQVwcmljZQEWY29udmVydEpzb25BcnJheVRvTGlzdAEJanNvbkFycmF5CQC1CQIFCWpzb25BcnJheQIBLAEbY29udmVydEJhc2tldEl0ZW1Ub05ldXRyaW5vBAhpbkFtb3VudAdpbkFzc2V0DWJhc2tldEluZm9TdHINbmV1dHJpbm9QcmljZQQKYmFza2V0SW5mbwkAvAkCBQ1iYXNrZXRJbmZvU3RyAgFfCgEIZmluZEl0ZW0CA2FjYwRpdGVtBAViSXRlbQkAtQkCBQRpdGVtBQdMSVNUU0VQAwkAAAIJAJEDAgUFYkl0ZW0AAAUHaW5Bc3NldAUFYkl0ZW0FA2FjYwQCaXQKAAIkbAUKYmFza2V0SW5mbwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZmluZEl0ZW0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEBWRsb2c2CQEFdmFsdWUBCQCfCAEJARJiYXNrZXRMb2diRGVsdGFLZXkABAJkNgkBBXZhbHVlAQkAnwgBCQEKYmFza2V0REtleQAEAmI2CQEFdmFsdWUBCQCfCAEJAQpiYXNrZXRCS2V5AAQCdzYJAQV2YWx1ZQEJAJ8IAQkBFmJhc2tldFdlaWdodEJ5QXNzZXRLZXkBBQdpbkFzc2V0BAJwNgkAZAIJAGUCBQVkbG9nNgUCdzYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJpdAABBANwcDYJAGwGBQJiNgAGBQJwNgAGAAYFBkhBTEZVUAQOb3V0QW1vdW50R3Jvc3MJAGsDBQhpbkFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAml0AAIDCQAAAgUNbmV1dHJpbm9QcmljZQAABQVNVUxUOAkAaAIFDW5ldXRyaW5vUHJpY2UAZAQKbXVsdGlwbGllcgkAZQIJAGQCBQVNVUxUNgUCZDYFA3BwNgQJbmV0QW1vdW50CQBrAwUOb3V0QW1vdW50R3Jvc3MFCm11bHRpcGxpZXIFBU1VTFQ2BAlmZWVBbW91bnQDCQBnAgUJbmV0QW1vdW50BQ5vdXRBbW91bnRHcm9zcwAACQBlAgUOb3V0QW1vdW50R3Jvc3MFCW5ldEFtb3VudAkAzAgCBQ5vdXRBbW91bnRHcm9zcwkAzAgCBQluZXRBbW91bnQJAMwIAgUJZmVlQW1vdW50BQNuaWwBF2NvbnZlcnROZXV0cmlub1RvQmFza2V0AwZhbW91bnQNYmFza2V0SW5mb1N0cg5uZXV0cmlub1N1cHBseQQKYmFza2V0SW5mbwkAvAkCBQ1iYXNrZXRJbmZvU3RyAgFfCgEEY29udgIDYWNjBGl0ZW0EBXBhcnRzCQC1CQIFBGl0ZW0FB0xJU1RTRVAEB2Fzc2V0SWQJAJEDAgUFcGFydHMAAAQFc2hhcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABBAVwcmljZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAIEBnJlc2VydgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAMDCQAAAgUObmV1dHJpbm9TdXBwbHkAAAkAAgECJ0F0dGVtcHQgdG8gYnVybiBuZXV0cmlubyBhdCB6ZXJvIHN1cHBseQQJb3V0QW1vdW50CQBrAwUGYW1vdW50BQZyZXNlcnYFDm5ldXRyaW5vU3VwcGx5BAp3YXZlc1R1cGxlAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCQCUCgIFCW91dEFtb3VudAUFcHJpY2UJAJQKAggFA2FjYwJfMggFA2FjYwJfMwkAlQoDCQDNCAIIBQNhY2MCXzEJAJYKBAUHYXNzZXRJZAUJb3V0QW1vdW50BQVwcmljZQUFc2hhcmUIBQp3YXZlc1R1cGxlAl8xCAUKd2F2ZXNUdXBsZQJfMgoAAiRsBQpiYXNrZXRJbmZvCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjb252AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARFtaW5Td2FwQW1vdW50RkFJTAIIc3dhcFR5cGUNbWluU3dhcEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICGFRoZSBzcGVjaWZpZWQgYW1vdW50IGluIAUIc3dhcFR5cGUCKyBzd2FwIGlzIGxlc3MgdGhhbiB0aGUgcmVxdWlyZWQgbWluaW11bSBvZiAJAKQDAQUNbWluU3dhcEFtb3VudAEVZW1lcmdlbmN5U2h1dGRvd25GQUlMAAkAAgECWmNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWxsIHJlYWN0aXZhdGlvbiBieSBlbWVyZ2VuY3kgb3JhY2xlcwEOcHJpY2VJbmRleEZBSUwFBWluZGV4CnByaWNlSW5kZXgLaW5kZXhIZWlnaHQMdW5sb2NrSGVpZ2h0D3ByZXZJbmRleEhlaWdodAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICI2ludmFsaWQgcHJpY2UgaGlzdG9yeSBpbmRleDogaW5kZXg9CQCkAwEFBWluZGV4AgwgcHJpY2VJbmRleD0JAKQDAQUKcHJpY2VJbmRleAINIGluZGV4SGVpZ2h0PQkApAMBBQtpbmRleEhlaWdodAIOIHVubG9ja0hlaWdodD0JAKQDAQUMdW5sb2NrSGVpZ2h0AhEgcHJldkluZGV4SGVpZ2h0PQkApAMBBQ9wcmV2SW5kZXhIZWlnaHQAD25ldXRyaW5vQXNzZXRJZAkA2QQBCQEOZ2V0U3RyaW5nQnlLZXkBBRJOZXV0cmlub0Fzc2V0SWRLZXkACnByaWNlSW5kZXgJARhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkCBQ9jb250cm9sQ29udHJhY3QFDVByaWNlSW5kZXhLZXkACWlzQmxvY2tlZAkBFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkCBQ9jb250cm9sQ29udHJhY3QFDElzQmxvY2tlZEtleQAYbm9kZU9yYWNsZVByb3ZpZGVyUHViS2V5CQDZBAEJAQ5nZXRTdHJpbmdCeUtleQEFG05vZGVPcmFjbGVQcm92aWRlclB1YktleUtleQALYm9uZEFzc2V0SWQJANkEAQIsRjNpYXh6cnVGZUt1amZWZllTWkVrZWpwamg2N3dtUmZQQ1JIaU5tV0twM1oAFWRlcHJlY2F0ZWRCb25kQXNzZXRJZAkA2QQBAiw5NzVha1pCZm5NajUxM1U3TVphSEt6UXJtc0V4NWFFM3dkV0tUckhCaGJqRgAQbmV1dHJpbm9Db250cmFjdAUEdGhpcwAMY3VycmVudFByaWNlCQEYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AgUPY29udHJvbENvbnRyYWN0BQhQcmljZUtleQEbY2hlY2tJc1ZhbGlkTWluU3BvbnNvcmVkRmVlAQJ0eAQOTUlOVFJBTlNGRVJGRUUAoI0GBBZTcG9uc29yZWRGZWVVcHBlckJvdW5kAOgHBA9yZWFsTmV1dHJpbm9GZWUJARFjb252ZXJ0VG9rZW5Ub1VzZAIFDk1JTlRSQU5TRkVSRkVFBQxjdXJyZW50UHJpY2UEDm1pbk5ldXRyaW5vRmVlCQBoAgUPcmVhbE5ldXRyaW5vRmVlAAIEDm1heE5ldXRyaW5vRmVlCQBrAwUPcmVhbE5ldXRyaW5vRmVlBRZTcG9uc29yZWRGZWVVcHBlckJvdW5kAGQECGlucHV0RmVlCQEFdmFsdWUBCAUCdHgUbWluU3BvbnNvcmVkQXNzZXRGZWUDAwkAZwIFCGlucHV0RmVlBQ5taW5OZXV0cmlub0ZlZQkAZwIFDm1heE5ldXRyaW5vRmVlBQhpbnB1dEZlZQcJAAACCAUCdHgHYXNzZXRJZAUPbmV1dHJpbm9Bc3NldElkBwEPZ2V0UHJpY2VIaXN0b3J5AQVibG9jawkBGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQIFD2NvbnRyb2xDb250cmFjdAkBEmdldFByaWNlSGlzdG9yeUtleQEFBWJsb2NrARVnZXRIZWlnaHRQcmljZUJ5SW5kZXgBBWluZGV4CQEYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AgUPY29udHJvbENvbnRyYWN0CQEYZ2V0SGVpZ2h0UHJpY2VCeUluZGV4S2V5AQUFaW5kZXgBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC3BhcmFtQnlVc2VyCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAICBmFtb3VudAUDbmlsBQNTRVAADHNJZHhTd2FwVHlwZQABAApzSWR4U3RhdHVzAAIADHNJZHhJbkFtb3VudAADAA9zSWR4U3RhcnRIZWlnaHQABwASc0lkeFN0YXJ0VGltZXN0YW1wAAgAFHNJZHhTZWxmVW5sb2NrSGVpZ2h0AAsAC3NJZHhNaW5SYW5kAA8AC3NJZHhNYXhSYW5kABAAC3NJZHhJbkFzc2V0ABQBB3N3YXBLRVkCC3VzZXJBZGRyZXNzBHR4SWQJALkJAgkAzAgCAgQlcyVzCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFBHR4SWQFA25pbAUDU0VQAQtzdHJTd2FwREFUQRQIc3dhcFR5cGUGc3RhdHVzCGluQW1vdW50BXByaWNlDG91dE5ldEFtb3VudAxvdXRGZWVBbW91bnQLc3RhcnRIZWlnaHQOc3RhcnRUaW1lc3RhbXAJZW5kSGVpZ2h0DGVuZFRpbWVzdGFtcBBzZWxmVW5sb2NrSGVpZ2h0EHJhbmRVbmxvY2tIZWlnaHQFaW5kZXgMd2l0aGRyYXdUeElkB3JhbmRNaW4HcmFuZE1heApvdXRTdXJmQW10AmJyCmJhc2tldERhdGEHaW5Bc3NldAkAugkCCQDMCAICKCVzJXMlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJXMlZCVkJWQlZCVzJXMJAMwIAgUIc3dhcFR5cGUJAMwIAgUGc3RhdHVzCQDMCAIFCGluQW1vdW50CQDMCAIFBXByaWNlCQDMCAIFDG91dE5ldEFtb3VudAkAzAgCBQxvdXRGZWVBbW91bnQJAMwIAgULc3RhcnRIZWlnaHQJAMwIAgUOc3RhcnRUaW1lc3RhbXAJAMwIAgUJZW5kSGVpZ2h0CQDMCAIFDGVuZFRpbWVzdGFtcAkAzAgCBRBzZWxmVW5sb2NrSGVpZ2h0CQDMCAIFEHJhbmRVbmxvY2tIZWlnaHQJAMwIAgUFaW5kZXgJAMwIAgUMd2l0aGRyYXdUeElkCQDMCAIFB3JhbmRNaW4JAMwIAgUHcmFuZE1heAkAzAgCBQpvdXRTdXJmQW10CQDMCAIFAmJyCQDMCAIFCmJhc2tldERhdGEJAMwIAgUHaW5Bc3NldAUDbmlsBQNTRVABD3BlbmRpbmdTd2FwREFUQQQIc3dhcFR5cGUNaW5Bc3NldEFtb3VudBBzZWxmVW5sb2NrSGVpZ2h0B2luQXNzZXQJAQtzdHJTd2FwREFUQRQFCHN3YXBUeXBlAgdQRU5ESU5HCQCkAwEFDWluQXNzZXRBbW91bnQCATACATACATAJAKQDAQUGaGVpZ2h0CQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wAgEwAgEwCQCkAwEFEHNlbGZVbmxvY2tIZWlnaHQCATACATACBE5VTEwCATACATACATACATACAAUHaW5Bc3NldAEOZmluaXNoU3dhcERBVEELCWRhdGFBcnJheQVwcmljZQxvdXROZXRBbW91bnQMb3V0RmVlQW1vdW50EHJhbmRVbmxvY2tIZWlnaHQFaW5kZXgMd2l0aGRyYXdUeElkCm91dFN1cmZBbXQCYnIKYmFza2V0RGF0YQdpbkFzc2V0CQELc3RyU3dhcERBVEEUCQCRAwIFCWRhdGFBcnJheQUMc0lkeFN3YXBUeXBlAghGSU5JU0hFRAkAkQMCBQlkYXRhQXJyYXkFDHNJZHhJbkFtb3VudAkApAMBBQVwcmljZQkApAMBBQxvdXROZXRBbW91bnQJAKQDAQUMb3V0RmVlQW1vdW50CQCRAwIFCWRhdGFBcnJheQUPc0lkeFN0YXJ0SGVpZ2h0CQCRAwIFCWRhdGFBcnJheQUSc0lkeFN0YXJ0VGltZXN0YW1wCQCkAwEFBmhlaWdodAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAkQMCBQlkYXRhQXJyYXkFFHNJZHhTZWxmVW5sb2NrSGVpZ2h0CQCkAwEFEHJhbmRVbmxvY2tIZWlnaHQJAKQDAQUFaW5kZXgFDHdpdGhkcmF3VHhJZAkAkQMCBQlkYXRhQXJyYXkFC3NJZHhNaW5SYW5kCQCRAwIFCWRhdGFBcnJheQULc0lkeE1heFJhbmQJAKQDAQUKb3V0U3VyZkFtdAkApAMBBQJicgUKYmFza2V0RGF0YQUHaW5Bc3NldAESc3dhcERhdGFGYWlsT3JSRUFEAgt1c2VyQWRkcmVzcwhzd2FwVHhJZAQHc3dhcEtleQkBB3N3YXBLRVkCBQt1c2VyQWRkcmVzcwUIc3dhcFR4SWQJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFB3N3YXBLZXkJAKwCAgIRbm8gc3dhcCBkYXRhIGZvciAFB3N3YXBLZXkFA1NFUAEJYXBwbHlGZWVzAw5hbW91bnRPdXRHcm9zcwtpbkFtdFRvU1VSRgdmZWVQYXJ0BAlmZWVBbW91bnQJAGsDBQ5hbW91bnRPdXRHcm9zcwUHZmVlUGFydAUFTVVMVDYJAMwIAgkAZQIFDmFtb3VudE91dEdyb3NzBQlmZWVBbW91bnQJAMwIAgUJZmVlQW1vdW50BQNuaWwBD2FwcGx5RmVlc0Jhc2tldAEJYmFza2V0T3V0BAJrNgkBBXZhbHVlAQkAnwgBCQEKYmFza2V0S0tleQAEAmQ2CQEFdmFsdWUBCQCfCAEJAQpiYXNrZXRES2V5AAQHZmVlUGFydAkAawMFAms2BQJkNgUFTVVMVDYKAQpmZWVBcHBsaWVyAgNhY2MEaXRlbQQJZmVlQW1vdW50CQBrAwgFBGl0ZW0CXzIFB2ZlZVBhcnQFBU1VTFQ2CQDNCAIFA2FjYwkAuQkCCQDMCAIIBQRpdGVtAl8xCQDMCAIJAKQDAQgFBGl0ZW0CXzMJAMwIAgkApAMBCQBlAggFBGl0ZW0CXzIFCWZlZUFtb3VudAkAzAgCCQCkAwEFCWZlZUFtb3VudAkAzAgCCQCkAwEIBQRpdGVtAl80BQNuaWwFB0xJU1RTRVAEAWEKAAIkbAUJYmFza2V0T3V0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpmZWVBcHBsaWVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQC6CQIFAWECAV8BA2FicwEBeAMJAGYCAAAFAXgJAQEtAQUBeAUBeAEKc2VsZWN0Tm9kZQENdW5sZWFzZUFtb3VudAQNYW1vdW50VG9MZWFzZQkAZQIJAGUCCAkA7wcBBRBuZXV0cmlub0NvbnRyYWN0CWF2YWlsYWJsZQUNdW5sZWFzZUFtb3VudAkBH2dldFJlc2VydmVkQW1vdW50Rm9yU3BvbnNvcnNoaXAABApvbGRMZWFzZWQwCQEOZ2V0TnVtYmVyQnlLZXkBCQERZ2V0TGVhc2VBbW91bnRLZXkBAAAECm9sZExlYXNlZDEJAQ5nZXROdW1iZXJCeUtleQEJARFnZXRMZWFzZUFtb3VudEtleQEAAQQKbmV3TGVhc2VkMAkAZAIFDWFtb3VudFRvTGVhc2UFCm9sZExlYXNlZDAECm5ld0xlYXNlZDEJAGQCBQ1hbW91bnRUb0xlYXNlBQpvbGRMZWFzZWQxAwMJAGYCBQpuZXdMZWFzZWQwAAAGCQBmAgUKbmV3TGVhc2VkMQAABAZkZWx0YTAJAQNhYnMBCQBlAgUKbmV3TGVhc2VkMAUKb2xkTGVhc2VkMQQGZGVsdGExCQEDYWJzAQkAZQIFCm5ld0xlYXNlZDEFCm9sZExlYXNlZDADCQBnAgUGZGVsdGExBQZkZWx0YTAJAJQKAgAABQpuZXdMZWFzZWQwCQCUCgIAAQUKbmV3TGVhc2VkMQkAlAoCAP///////////wEAAAEIdGhpc09ubHkBAWkDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAi1QZXJtaXNzaW9uIGRlbmllZDogdGhpcyBjb250cmFjdCBvbmx5IGFsbG93ZWQGARZwcmVwYXJlVW5sZWFzZUFuZExlYXNlAQ11bmxlYXNlQW1vdW50BAlub2RlVHVwbGUJAQpzZWxlY3ROb2RlAQUNdW5sZWFzZUFtb3VudAQJbm9kZUluZGV4CAUJbm9kZVR1cGxlAl8xBA5uZXdMZWFzZUFtb3VudAgFCW5vZGVUdXBsZQJfMgMJAGYCBQ5uZXdMZWFzZUFtb3VudAAABApsZWFzZUlkS2V5CQENZ2V0TGVhc2VJZEtleQEFCW5vZGVJbmRleAQIb2xkTGVhc2UJAJwIAgUEdGhpcwUKbGVhc2VJZEtleQQOdW5sZWFzZU9yRW1wdHkDCQEJaXNEZWZpbmVkAQUIb2xkTGVhc2UJAMwIAgkBC0xlYXNlQ2FuY2VsAQkBBXZhbHVlAQUIb2xkTGVhc2UFA25pbAUDbmlsBA5sZWFzZUFtb3VudEtleQkBEWdldExlYXNlQW1vdW50S2V5AQUJbm9kZUluZGV4BAVsZWFzZQkAxAgCCQEcZ2V0U3Rha2luZ05vZGVBZGRyZXNzQnlJbmRleAEFCW5vZGVJbmRleAUObmV3TGVhc2VBbW91bnQJAM4IAgUOdW5sZWFzZU9yRW1wdHkJAMwIAgUFbGVhc2UJAMwIAgkBC0JpbmFyeUVudHJ5AgUKbGVhc2VJZEtleQkBBWxjYWxjAQUFbGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARFnZXRMZWFzZUFtb3VudEtleQEFCW5vZGVJbmRleAUObmV3TGVhc2VBbW91bnQFA25pbAUDbmlsAQxyZWFkTm9kZUluZm8BB25vZGVJZHgEC25vZGVBZGRyZXNzCQEcZ2V0U3Rha2luZ05vZGVBZGRyZXNzQnlJbmRleAEFB25vZGVJZHgEDGxlYXNlZEFtdEtFWQkBEWdldExlYXNlQW1vdW50S2V5AQUHbm9kZUlkeAQJbGVhc2VkQW10CQEOZ2V0TnVtYmVyQnlLZXkBBQxsZWFzZWRBbXRLRVkECmxlYXNlSWRLRVkJAQ1nZXRMZWFzZUlkS2V5AQUHbm9kZUlkeAQHbGVhc2VJZAkBBXZhbHVlAQkAnAgCBQR0aGlzBQpsZWFzZUlkS0VZCQCXCgUFC25vZGVBZGRyZXNzBQxsZWFzZWRBbXRLRVkFCWxlYXNlZEFtdAUKbGVhc2VJZEtFWQUHbGVhc2VJZAEKY29tbW9uU3dhcAUIc3dhcFR5cGUJcG10QW1vdW50B2luQXNzZXQOdXNlckFkZHJlc3NTdHIGdHhJZDU4BBBzd2FwUGFyYW1zU1RSVUNUCQESYXNTd2FwUGFyYW1zU1RSVUNUAQkA/AcEBQR0aGlzAhtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgAABQNuaWwFA25pbAQRdG9rZW5Td2FwTGltaXRVc2QIBRBzd2FwUGFyYW1zU1RSVUNUAl8xBA5zd2FwTGltaXRTcGVudAgFEHN3YXBQYXJhbXNTVFJVQ1QCXzIEDmJsY2tzMkxtdFJlc2V0CAUQc3dhcFBhcmFtc1NUUlVDVAJfMwQQdXNkblN3YXBMaW1pdE1heAgFEHN3YXBQYXJhbXNTVFJVQ1QCXzcEDW1pblN3YXBBbW91bnQJARFtaW5Td2FwQW1vdW50UkVBRAIFCHN3YXBUeXBlBQdpbkFzc2V0BBF0b3RhbExvY2tlZEJ5VXNlcgkBFXRvdGFsTG9ja2VkQnlVc2VyUkVBRAMFCHN3YXBUeXBlBQ51c2VyQWRkcmVzc1N0cgUHaW5Bc3NldAQLbm9kZUFkZHJlc3MJARVnZXRTdGFraW5nTm9kZUJ5SW5kZXgBAAAEDGlzU3dhcEJ5Tm9kZQkAAAIFC25vZGVBZGRyZXNzBQ51c2VyQWRkcmVzc1N0cgQWYmFsYW5jZUxvY2tNYXhJbnRlcnZhbAMFDGlzU3dhcEJ5Tm9kZQkBG25vZGVCYWxhbmNlTG9ja0ludGVydmFsUkVBRAAJARdiYWxhbmNlTG9ja0ludGVydmFsUkVBRAEFCHN3YXBUeXBlBBBzZWxmVW5sb2NrSGVpZ2h0CQBkAgUGaGVpZ2h0BRZiYWxhbmNlTG9ja01heEludGVydmFsBAJwcgkBBXZhbHVlAQkAmggCBQ9jb250cm9sQ29udHJhY3QJAQ9rZXlQcmljZUJ5QXNzZXQBBQdpbkFzc2V0BA5zd2FwVXNkblZvbHVtZQMJAAACBQhzd2FwVHlwZQILb3V0TmV1dHJpbm8JARFjb252ZXJ0VG9rZW5Ub1VzZAIFCXBtdEFtb3VudAUCcHIFCXBtdEFtb3VudAQMc3dhcExpbWl0TWF4AwkAAAIFCHN3YXBUeXBlAgtvdXROZXV0cmlubwURdG9rZW5Td2FwTGltaXRVc2QFEHVzZG5Td2FwTGltaXRNYXgDCQBmAgUNbWluU3dhcEFtb3VudAUJcG10QW1vdW50CQERbWluU3dhcEFtb3VudEZBSUwCBQhzd2FwVHlwZQUNbWluU3dhcEFtb3VudAMDCQEBIQEFDGlzU3dhcEJ5Tm9kZQkAZgIFDnN3YXBMaW1pdFNwZW50AAAHCQACAQkArAICAjpZb3UgaGF2ZSBleGNlZWRlZCBzd2FwIGxpbWl0ISBOZXh0IGFsbG93ZWQgc3dhcCBoZWlnaHQgaXMgCQCkAwEJAGQCBQZoZWlnaHQFDmJsY2tzMkxtdFJlc2V0AwMJAQEhAQUMaXNTd2FwQnlOb2RlCQBmAgUOc3dhcFVzZG5Wb2x1bWUFDHN3YXBMaW1pdE1heAcJAAIBCQCsAgIJAKwCAgkArAICAi5Zb3UgaGF2ZSBleGNlZWRlZCB5b3VyIHN3YXAgbGltaXQhIFJlcXVlc3RlZDogCQCkAwEFDnN3YXBVc2RuVm9sdW1lAg0sIGF2YWlsYWJsZTogCQCkAwEFDHN3YXBMaW1pdE1heAMFCWlzQmxvY2tlZAkBFWVtZXJnZW5jeVNodXRkb3duRkFJTAAED25ldXRyaW5vTWV0cmljcwkBCWFzQW55TGlzdAEJAPwHBAUMbWF0aENvbnRyYWN0AhpjYWxjTmV1dGlub01ldHJpY3NSRUFET05MWQUDbmlsBQNuaWwECmJhc2tldEluZm8JAQhhc1N0cmluZwEJAJEDAgUPbmV1dHJpbm9NZXRyaWNzBRFuTWV0cmljQmFza2V0SW5mbwQNd2VpZ2h0ZWRQcmljZQkBBWFzSW50AQkAkQMCBQ9uZXV0cmlub01ldHJpY3MFFG5NZXRyaWNXZWlnaHRlZFByaWNlBANvdXQJARtjb252ZXJ0QmFza2V0SXRlbVRvTmV1dHJpbm8EBQlwbXRBbW91bnQFB2luQXNzZXQFCmJhc2tldEluZm8FDXdlaWdodGVkUHJpY2UDAwkAAAIFCHN3YXBUeXBlAgtvdXROZXV0cmlubwkAZwIAAAkAkQMCBQNvdXQAAQcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAj5OZXQgYW1vdW50IGlzIG5vbi1wb3NpdGl2ZSwgY2Fubm90IHN3YXAuIChncm9zcywgbmV0LCBmZWUpID0gKAkApAMBCQCRAwIFA291dAAAAgIsIAkApAMBCQCRAwIFA291dAABAgIsIAkApAMBCQCRAwIFA291dAACAgEpBAlsZWFzZVBhcnQDAwkAAAIFCHN3YXBUeXBlAgtvdXROZXV0cmlubwkAAAIFB2luQXNzZXQCBVdBVkVTBwkBFnByZXBhcmVVbmxlYXNlQW5kTGVhc2UBAAAFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlTd2FwVXNlclNwZW50SW5QZXJpb2QBBQ51c2VyQWRkcmVzc1N0cgUOc3dhcFVzZG5Wb2x1bWUJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlVc2VyTGFzdFN3YXBIZWlnaHQBBQ51c2VyQWRkcmVzc1N0cgUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUdG90YWxMb2NrZWRCeVVzZXJLRVkDBQhzd2FwVHlwZQUOdXNlckFkZHJlc3NTdHIFB2luQXNzZXQJAGQCBRF0b3RhbExvY2tlZEJ5VXNlcgUJcG10QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYZ2V0QmFsYW5jZVVubG9ja0Jsb2NrS2V5AQUOdXNlckFkZHJlc3NTdHIFEHNlbGZVbmxvY2tIZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB3N3YXBLRVkCBQ51c2VyQWRkcmVzc1N0cgUGdHhJZDU4CQEPcGVuZGluZ1N3YXBEQVRBBAUIc3dhcFR5cGUFCXBtdEFtb3VudAUQc2VsZlVubG9ja0hlaWdodAUHaW5Bc3NldAUDbmlsBQlsZWFzZVBhcnQFBHVuaXQADGJGdW5jSWR4U3VyZgAAAA1iRnVuY0lkeFdhdmVzAAEADGJGdW5jSWR4VXNkbgACABRiRnVuY0lkeFJlc2VydmVTdGFydAADABNiRnVuY0lkeFN1cHBseVN0YXJ0AAQAD2JGdW5jSWR4QlJTdGFydAAFABJiRnVuY0lkeFJlc2VydmVFbmQABgARYkZ1bmNJZHhTdXBwbHlFbmQABwANYkZ1bmNJZHhCUkVuZAAIAAxiRnVuY0lkeFJlc3QACQASYkZ1bmNJZHhXYXZlc1ByaWNlAAoBD2NhbGNXaXRoZHJhd1QyVQQIaW5BbW91bnQHaW5Bc3NldApiYXNrZXRJbmZvDXdlaWdodGVkUHJpY2UEBm91dEFtdAkBG2NvbnZlcnRCYXNrZXRJdGVtVG9OZXV0cmlubwQFCGluQW1vdW50BQdpbkFzc2V0BQpiYXNrZXRJbmZvBQ13ZWlnaHRlZFByaWNlCQCeCgwJAJEDAgUGb3V0QW10AAAFD25ldXRyaW5vQXNzZXRJZAAABQdpbkFzc2V0AAAFDXdlaWdodGVkUHJpY2UFCGluQW1vdW50AAAAAAAABQNuaWwJAMwIAgkAkQMCBQZvdXRBbXQAAQkAzAgCCQCRAwIFBm91dEFtdAACBQNuaWwBFGNhbGNXaXRoZHJhd1UyQmFza2V0AwZ1c2RuSW4KYmFza2V0SW5mbw5uZXV0cmlub1N1cHBseQQLb3V0QW10R3Jvc3MJARdjb252ZXJ0TmV1dHJpbm9Ub0Jhc2tldAMFBnVzZG5JbgUKYmFza2V0SW5mbwUObmV1dHJpbm9TdXBwbHkJAJ4KDAgFC291dEFtdEdyb3NzAl8yBQR1bml0AAAFD25ldXRyaW5vQXNzZXRJZAgFC291dEFtdEdyb3NzAl8yCAULb3V0QW10R3Jvc3MCXzMFBnVzZG5JbgUObmV1dHJpbm9TdXBwbHkFBnVzZG5JbgAACAULb3V0QW10R3Jvc3MCXzEFA25pbAEMY2FsY1dpdGhkcmF3BQhzd2FwVHlwZQhpbkFtb3VudAVwcmljZQ9uZXV0cmlub01ldHJpY3MHaW5Bc3NldAQObmV1dHJpbm9TdXBwbHkJAQVhc0ludAEJAJEDAgUPbmV1dHJpbm9NZXRyaWNzBRRuTWV0cmljSWR4VXNkblN1cHBseQQKYmFza2V0SW5mbwkBCGFzU3RyaW5nAQkAkQMCBQ9uZXV0cmlub01ldHJpY3MFEW5NZXRyaWNCYXNrZXRJbmZvBA13ZWlnaHRlZFByaWNlCQEFYXNJbnQBCQCRAwIFD25ldXRyaW5vTWV0cmljcwUUbk1ldHJpY1dlaWdodGVkUHJpY2UEDG91dERhdGFUdXBsZQMJAAACBQhzd2FwVHlwZQILb3V0TmV1dHJpbm8JAQ9jYWxjV2l0aGRyYXdUMlUEBQhpbkFtb3VudAUHaW5Bc3NldAUKYmFza2V0SW5mbwUNd2VpZ2h0ZWRQcmljZQMJAAACBQhzd2FwVHlwZQIIb3V0TXVsdGkJARRjYWxjV2l0aGRyYXdVMkJhc2tldAMFCGluQW1vdW50BQpiYXNrZXRJbmZvBQ5uZXV0cmlub1N1cHBseQkAAgEJAKwCAgIWVW5zdXBwb3J0ZWQgc3dhcCB0eXBlIAUIc3dhcFR5cGUEC291dEFtdEdyb3NzCAUMb3V0RGF0YVR1cGxlAl8xBApvdXRBc3NldElkCAUMb3V0RGF0YVR1cGxlAl8yBA9pbkFtdFRvU3VyZlBhcnQIBQxvdXREYXRhVHVwbGUCXzMECWluQXNzZXRJZAgFDG91dERhdGFUdXBsZQJfNAQKdW5sZWFzZUFtdAgFDG91dERhdGFUdXBsZQJfNQQNd2l0aGRyYXdQcmljZQgFDG91dERhdGFUdXBsZQJfNgQKYmFza2V0RGF0YQgFDG91dERhdGFUdXBsZQNfMTEECm5ldEZlZURhdGEIBQxvdXREYXRhVHVwbGUDXzEyBAlvdXROZXRBbXQDCQAAAgUIc3dhcFR5cGUCC291dE5ldXRyaW5vCQCRAwIFCm5ldEZlZURhdGEAAAAABAlvdXRGZWVBbXQDCQAAAgUIc3dhcFR5cGUCC291dE5ldXRyaW5vCQCRAwIFCm5ldEZlZURhdGEAAQAABApvdXRTdXJmQW10AwkAZwIAAAUPaW5BbXRUb1N1cmZQYXJ0AAAJAQVhc0ludAEJAJEDAgkBCWFzQW55TGlzdAEJAPwHBAUMbWF0aENvbnRyYWN0AhRzdXJmRnVuY3Rpb25SRUFET05MWQkAzAgCBQ9pbkFtdFRvU3VyZlBhcnQJAMwIAgUJaW5Bc3NldElkBQNuaWwFA25pbAUMYkZ1bmNJZHhTdXJmBA53aXRoZHJhd0Jhc2tldAMJAAACBQhzd2FwVHlwZQIIb3V0TXVsdGkJAQ9hcHBseUZlZXNCYXNrZXQBBQpiYXNrZXREYXRhAgAJAJsKCQUJb3V0TmV0QW10BQpvdXRBc3NldElkBQpvdXRTdXJmQW10BQ9pbkFtdFRvU3VyZlBhcnQFCnVubGVhc2VBbXQFCW91dEZlZUFtdAULb3V0QW10R3Jvc3MFDXdpdGhkcmF3UHJpY2UFDndpdGhkcmF3QmFza2V0ARJrZXlBcHBseUluUHJvZ3Jlc3MAAhMlc19fYXBwbHlJblByb2dyZXNzARNrZXlQcm9wb3NhbERhdGFCeUlkAQpwcm9wb3NhbElkCQCsAgICFCVzJWRfX3Byb3Bvc2FsRGF0YV9fCQCkAwEFCnByb3Bvc2FsSWQAC2dvdklkeFR4SWRzAAkBDnZhbGlkYXRlVXBkYXRlAQJ0eAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIFT3JkZXIEAW8FByRtYXRjaDAJAAIBAhVPcmRlcnMgYXJlbid0IGFsbG93ZWQDAwkAAQIFByRtYXRjaDACD0RhdGFUcmFuc2FjdGlvbgYDCQABAgUHJG1hdGNoMAIVU3BvbnNvckZlZVRyYW5zYWN0aW9uBgMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgYDCQABAgUHJG1hdGNoMAIWQ3JlYXRlQWxpYXNUcmFuc2FjdGlvbgYDCQABAgUHJG1hdGNoMAIWTGVhc2VDYW5jZWxUcmFuc2FjdGlvbgYDCQABAgUHJG1hdGNoMAIQTGVhc2VUcmFuc2FjdGlvbgYDCQABAgUHJG1hdGNoMAIQSXNzdWVUcmFuc2FjdGlvbgYDCQABAgUHJG1hdGNoMAIbSW52b2tlRXhwcmVzc2lvblRyYW5zYWN0aW9uBgMJAAECBQckbWF0Y2gwAhpVcGRhdGVBc3NldEluZm9UcmFuc2FjdGlvbgYDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24GAwkAAQIFByRtYXRjaDACGVNldEFzc2V0U2NyaXB0VHJhbnNhY3Rpb24GAwkAAQIFByRtYXRjaDACE1RyYW5zZmVyVHJhbnNhY3Rpb24GAwkAAQIFByRtYXRjaDACE0V4Y2hhbmdlVHJhbnNhY3Rpb24GAwkAAQIFByRtYXRjaDACF01hc3NUcmFuc2ZlclRyYW5zYWN0aW9uBgMJAAECBQckbWF0Y2gwAg9CdXJuVHJhbnNhY3Rpb24GCQABAgUHJG1hdGNoMAISUmVpc3N1ZVRyYW5zYWN0aW9uBAF0BQckbWF0Y2gwBAR0eElkCQDYBAEIBQF0AmlkBApwcm9wb3NhbElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgULZ292Q29udHJhY3QJARJrZXlBcHBseUluUHJvZ3Jlc3MAAhZBcHBseSBpcyBub3QgaGFwcGVuaW5nBAZ0eExpc3QJALUJAgkAkQMCCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQtnb3ZDb250cmFjdAkBE2tleVByb3Bvc2FsRGF0YUJ5SWQBBQpwcm9wb3NhbElkBQNTRVAFC2dvdklkeFR4SWRzBQdMSVNUU0VQAwkBASEBCQEJaXNEZWZpbmVkAQkAzwgCBQZ0eExpc3QFBHR4SWQJAAIBCQCsAgIJAKwCAgkArAICAg5Vbmtub3duIHR4SWQ6IAUEdHhJZAIQIGZvciBwcm9wb3NhbElkPQkApAMBBQpwcm9wb3NhbElkBgkAAgECC01hdGNoIGVycm9yDwFpAQ1jb25zdHJ1Y3RvclYxDBJuZXV0cmlub0Fzc2V0SWRQcm0OYm9uZEFzc2V0SWRQcm0SYXVjdGlvbkNvbnRyYWN0UHJtFmxpcXVpZGF0aW9uQ29udHJhY3RQcm0OcnBkQ29udHJhY3RQcm0bbm9kZU9yYWNsZVByb3ZpZGVyUHViS2V5UHJtG2JhbGFuY2VXYXZlc0xvY2tJbnRlcnZhbFBybR5iYWxhbmNlTmV1dHJpbm9Mb2NrSW50ZXJ2YWxQcm0VbWluV2F2ZXNTd2FwQW1vdW50UHJtGG1pbk5ldXRyaW5vU3dhcEFtb3VudFBybRVuZXV0cmlub091dEZlZVBhcnRQcm0Sd2F2ZXNPdXRGZWVQYXJ0UHJtBAtjaGVja0NhbGxlcgkBCHRoaXNPbmx5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNubyBwYXltZW50cyBhbGxvd2VkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEk5ldXRyaW5vQXNzZXRJZEtleQUSbmV1dHJpbm9Bc3NldElkUHJtCQDMCAIJAQtTdHJpbmdFbnRyeQIFDkJvbmRBc3NldElkS2V5BQ5ib25kQXNzZXRJZFBybQkAzAgCCQELU3RyaW5nRW50cnkCBRJBdWN0aW9uQ29udHJhY3RLZXkFEmF1Y3Rpb25Db250cmFjdFBybQkAzAgCCQELU3RyaW5nRW50cnkCBRZMaXF1aWRhdGlvbkNvbnRyYWN0S2V5BRZsaXF1aWRhdGlvbkNvbnRyYWN0UHJtCQDMCAIJAQtTdHJpbmdFbnRyeQIFDlJQRENvbnRyYWN0S2V5BQ5ycGRDb250cmFjdFBybQkAzAgCCQELU3RyaW5nRW50cnkCBRtOb2RlT3JhY2xlUHJvdmlkZXJQdWJLZXlLZXkFG25vZGVPcmFjbGVQcm92aWRlclB1YktleVBybQkAzAgCCQEMSW50ZWdlckVudHJ5AgUbQmFsYW5jZVdhdmVzTG9ja0ludGVydmFsS2V5BRtiYWxhbmNlV2F2ZXNMb2NrSW50ZXJ2YWxQcm0JAMwIAgkBDEludGVnZXJFbnRyeQIFHkJhbGFuY2VOZXV0cmlub0xvY2tJbnRlcnZhbEtleQUeYmFsYW5jZU5ldXRyaW5vTG9ja0ludGVydmFsUHJtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVTWluVG9rZW5Td2FwQW1vdW50S2V5AQIFV0FWRVMFFW1pbldhdmVzU3dhcEFtb3VudFBybQkAzAgCCQEMSW50ZWdlckVudHJ5AgUYTWluTmV1dHJpbm9Td2FwQW1vdW50S2V5BRhtaW5OZXV0cmlub1N3YXBBbW91bnRQcm0JAMwIAgkBDEludGVnZXJFbnRyeQIFFU5ldXRyaW5vT3V0RmVlUGFydEtleQUVbmV1dHJpbm9PdXRGZWVQYXJ0UHJtCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJXYXZlc091dEZlZVBhcnRLZXkFEndhdmVzT3V0RmVlUGFydFBybQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjIDDG1hdGhDb250cmFjdBNuc2J0U3Rha2luZ0NvbnRyYWN0FHN3YXBzVGltZWZyYW1lQmxvY2tzBAtjaGVja0NhbGxlcgkBCHRoaXNPbmx5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNubyBwYXltZW50cyBhbGxvd2VkCQDMCAIJAQtTdHJpbmdFbnRyeQIFD01hdGhDb250cmFjdEtleQUMbWF0aENvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFFk5zYnRTdGFraW5nQ29udHJhY3RLZXkFE25zYnRTdGFraW5nQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIJARFzd2Fwc1RpbWVmcmFtZUtFWQAFFHN3YXBzVGltZWZyYW1lQmxvY2tzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWMwURYXNzZXRzV2VpZ2h0c01pbnMGZFBhcmFtBmtQYXJhbQZiUGFyYW0KZGVsdGFQYXJhbQQLY2hlY2tDYWxsZXIJAQh0aGlzT25seQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQITbm8gcGF5bWVudHMgYWxsb3dlZAoBB3ByZXBhcmUCA2FjYwRpdGVtBAVwYXJ0cwkAtQkCBQRpdGVtAgFfBAdhc3NldElkCQCRAwIFBXBhcnRzAAAEBndlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEBm1pblZhbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAIJAJQKAgkAzQgCCAUDYWNjAl8xBQdhc3NldElkCQDNCAIJAM0IAggFA2FjYwJfMgkBDEludGVnZXJFbnRyeQIJARZiYXNrZXRXZWlnaHRCeUFzc2V0S2V5AQUHYXNzZXRJZAUGd2VpZ2h0CQEMSW50ZWdlckVudHJ5AgkBFU1pblRva2VuU3dhcEFtb3VudEtleQEFB2Fzc2V0SWQFBm1pblZhbAQBcgoAAiRsBRFhc3NldHNXZWlnaHRzTWlucwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3ByZXBhcmUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJAQpiYXNrZXRES2V5AAUGZFBhcmFtCQEMSW50ZWdlckVudHJ5AgkBCmJhc2tldEtLZXkABQZrUGFyYW0JAQxJbnRlZ2VyRW50cnkCCQEKYmFza2V0QktleQAFBmJQYXJhbQkBDEludGVnZXJFbnRyeQIJARJiYXNrZXRMb2diRGVsdGFLZXkACQBtBgUKZGVsdGFQYXJhbQAGBQZiUGFyYW0ABgAGBQZIQUxGVVAJAQtTdHJpbmdFbnRyeQIJAQ9iYXNrZXRBc3NldHNLZXkACQC5CQIIBQFyAl8xBQNTRVAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETc3dhcFRva2VuVG9OZXV0cmlubwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAixzd2FwVG9rZW5Ub05ldXRyaW5vIHJlcXVpcmUgb25seSBvbmUgcGF5bWVudAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEDGJhc2tldEFzc2V0cwkBBXZhbHVlAQkAoggBCQEPYmFza2V0QXNzZXRzS2V5AAQNcG10QXNzZXRJZFN0cgkA2AQBCQELdmFsdWVPckVsc2UCCAUDcG10B2Fzc2V0SWQFB1dBVkVTSUQDCQEBIQEJAQhjb250YWlucwIFDGJhc2tldEFzc2V0cwUNcG10QXNzZXRJZFN0cgkAAgEJAKwCAgkArAICBQ1wbXRBc3NldElkU3RyAh0gaXMgbm90IG9uZSBvZiBiYXNrZXQgdG9rZW5zOgUMYmFza2V0QXNzZXRzBAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBnR4SWQ1OAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAt0b3RhbExvY2tlZAkBD3RvdGFsTG9ja2VkUkVBRAICC291dE5ldXRyaW5vBQ1wbXRBc3NldElkU3RyBAlwbXRBbW91bnQIBQNwbXQGYW1vdW50BA9zYXZlVG90YWxMb2NrZWQJAPwHBAUEdGhpcwITaW50ZXJuYWxTYXZlSW50ZWdlcgkAzAgCCQEOdG90YWxMb2NrZWRLRVkCAgtvdXROZXV0cmlubwUNcG10QXNzZXRJZFN0cgkAzAgCCQBkAgULdG90YWxMb2NrZWQFCXBtdEFtb3VudAUDbmlsBQNuaWwDCQAAAgUPc2F2ZVRvdGFsTG9ja2VkBQ9zYXZlVG90YWxMb2NrZWQJAQpjb21tb25Td2FwBQILb3V0TmV1dHJpbm8FCXBtdEFtb3VudAUNcG10QXNzZXRJZFN0cgULdXNlckFkZHJlc3MFBnR4SWQ1OAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARRzd2FwTmV1dHJpbm9Ub0Jhc2tldAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAi1zd2FwTmV1dHJpbm9Ub0Jhc2tldCByZXF1aXJlIG9ubHkgb25lIHBheW1lbnQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQ9uZXV0cmlub0Fzc2V0SWQJAAIBAjpPbmx5IGFwcHJvcHJpYXRlIE5ldXRyaW5vIHRva2VucyBhcmUgYWxsb3dlZCBmb3Igc3dhcHBpbmcuBAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBnR4SWQ1OAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBBJuZXV0cmlub0Fzc2V0SWRTdHIJANgEAQUPbmV1dHJpbm9Bc3NldElkBAt0b3RhbExvY2tlZAkBD3RvdGFsTG9ja2VkUkVBRAICCG91dE11bHRpBRJuZXV0cmlub0Fzc2V0SWRTdHIECXBtdEFtb3VudAgFA3BtdAZhbW91bnQED3NhdmVUb3RhbExvY2tlZAkA/AcEBQR0aGlzAhNpbnRlcm5hbFNhdmVJbnRlZ2VyCQDMCAIJAQ50b3RhbExvY2tlZEtFWQICCG91dE11bHRpBRJuZXV0cmlub0Fzc2V0SWRTdHIJAMwIAgkAZAIFC3RvdGFsTG9ja2VkBQlwbXRBbW91bnQFA25pbAUDbmlsAwkAAAIFD3NhdmVUb3RhbExvY2tlZAUPc2F2ZVRvdGFsTG9ja2VkCQEKY29tbW9uU3dhcAUCCG91dE11bHRpCAUDcG10BmFtb3VudAUSbmV1dHJpbm9Bc3NldElkU3RyBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2ludGVybmFsU2F2ZUludGVnZXICA2tleQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAihpbnRlcm5hbFNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCHdpdGhkcmF3AwdhY2NvdW50BWluZGV4CHN3YXBUeElkBAR0eElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNubyBwYXltZW50cyBhbGxvd2VkBA9uZXV0cmlub01ldHJpY3MJAQlhc0FueUxpc3QBCQD8BwQFDG1hdGhDb250cmFjdAIaY2FsY05ldXRpbm9NZXRyaWNzUkVBRE9OTFkFA25pbAUDbmlsBAJCUgkBBWFzSW50AQkAkQMCBQ9uZXV0cmlub01ldHJpY3MFDG5NZXRyaWNJZHhCUgQLdXNlckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FjY291bnQECWRhdGFBcnJheQkBEnN3YXBEYXRhRmFpbE9yUkVBRAIFB2FjY291bnQFCHN3YXBUeElkBBBzZWxmVW5sb2NrSGVpZ2h0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGF0YUFycmF5BRRzSWR4U2VsZlVubG9ja0hlaWdodAQIc3dhcFR5cGUJAJEDAgUJZGF0YUFycmF5BQxzSWR4U3dhcFR5cGUECGluQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGF0YUFycmF5BQxzSWR4SW5BbW91bnQECnN3YXBTdGF0dXMJAJEDAgUJZGF0YUFycmF5BQpzSWR4U3RhdHVzBAtzdGFydEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRhdGFBcnJheQUPc0lkeFN0YXJ0SGVpZ2h0BAdpbkFzc2V0CQCRAwIFCWRhdGFBcnJheQULc0lkeEluQXNzZXQEC3RvdGFsTG9ja2VkCQEPdG90YWxMb2NrZWRSRUFEAgUIc3dhcFR5cGUFB2luQXNzZXQEEXRvdGFsTG9ja2VkQnlVc2VyCQEVdG90YWxMb2NrZWRCeVVzZXJSRUFEAwUIc3dhcFR5cGUFB2FjY291bnQFB2luQXNzZXQEDHVubG9ja0hlaWdodAUQc2VsZlVubG9ja0hlaWdodAQLaW5kZXhIZWlnaHQJARVnZXRIZWlnaHRQcmljZUJ5SW5kZXgBBQVpbmRleAQPcHJldkluZGV4SGVpZ2h0CQEVZ2V0SGVpZ2h0UHJpY2VCeUluZGV4AQkAZQIFBWluZGV4AAEEDHByaWNlQnlJbmRleAkBD2dldFByaWNlSGlzdG9yeQEFC2luZGV4SGVpZ2h0AwUJaXNCbG9ja2VkCQEVZW1lcmdlbmN5U2h1dGRvd25GQUlMAAMJAQIhPQIFCnN3YXBTdGF0dXMCB1BFTkRJTkcJAAIBAh9zd2FwIGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkAwkAZgIFDHVubG9ja0hlaWdodAUGaGVpZ2h0CQACAQkArAICCQCsAgICEXBsZWFzZSB3YWl0IGZvcjogCQCkAwEFDHVubG9ja0hlaWdodAIfIGJsb2NrIGhlaWdodCB0byB3aXRoZHJhdyBmdW5kcwMDAwkAZgIFBWluZGV4BQpwcmljZUluZGV4BgkAZgIFDHVubG9ja0hlaWdodAULaW5kZXhIZWlnaHQGAwkBAiE9AgUPcHJldkluZGV4SGVpZ2h0AAAJAGcCBQ9wcmV2SW5kZXhIZWlnaHQFDHVubG9ja0hlaWdodAcJAQ5wcmljZUluZGV4RkFJTAUFBWluZGV4BQpwcmljZUluZGV4BQtpbmRleEhlaWdodAUMdW5sb2NrSGVpZ2h0BQ9wcmV2SW5kZXhIZWlnaHQEDXdpdGhkcmF3VHVwbGUJAQxjYWxjV2l0aGRyYXcFBQhzd2FwVHlwZQUIaW5BbW91bnQFDHByaWNlQnlJbmRleAUPbmV1dHJpbm9NZXRyaWNzBQdpbkFzc2V0BAxvdXROZXRBbW91bnQIBQ13aXRoZHJhd1R1cGxlAl8xBApvdXRBc3NldElkCAUNd2l0aGRyYXdUdXBsZQJfMgQKb3V0U3VyZkFtdAgFDXdpdGhkcmF3VHVwbGUCXzMECnVubGVhc2VBbXQIBQ13aXRoZHJhd1R1cGxlAl81BAxvdXRGZWVBbW91bnQIBQ13aXRoZHJhd1R1cGxlAl82BAtvdXRBbXRHcm9zcwgFDXdpdGhkcmF3VHVwbGUCXzcEDXdpdGhkcmF3UHJpY2UIBQ13aXRoZHJhd1R1cGxlAl84BA53aXRoZHJhd0Jhc2tldAgFDXdpdGhkcmF3VHVwbGUCXzkDAwkAAAIFCHN3YXBUeXBlAgtvdXROZXV0cmlubwkAZwIAAAULb3V0QW10R3Jvc3MHCQACAQITYmFsYW5jZSBlcXVhbHMgemVybwQNc3VyZkNvbmRpdGlvbgMJAGYCBQpvdXRTdXJmQW10AAAEC2lzc3VlUmVzdWx0CQD8BwQFD2F1Y3Rpb25Db250cmFjdAIJaXNzdWVTdXJmCQDMCAIFCm91dFN1cmZBbXQJAMwIAgUHYWNjb3VudAUDbmlsBQNuaWwDCQAAAgULaXNzdWVSZXN1bHQFC2lzc3VlUmVzdWx0AAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAMJAAACBQ1zdXJmQ29uZGl0aW9uBQ1zdXJmQ29uZGl0aW9uBBF1bmxlYXNlSW52T3JFbXB0eQkA/AcEBQR0aGlzAhdpbnRlcm5hbFVubGVhc2VBbmRMZWFzZQkAzAgCBQp1bmxlYXNlQW10BQNuaWwFA25pbAMJAAACBRF1bmxlYXNlSW52T3JFbXB0eQURdW5sZWFzZUludk9yRW1wdHkECWduc2J0RGF0YQkBCWFzQW55TGlzdAEJAPwHBAUXZ25zYnRDb250cm9sbGVyQ29udHJhY3QCFGduc2J0SW5mb1NZU1JFQURPTkxZCQDMCAICAAkAzAgCAAAJAMwIAgAABQNuaWwFA25pbAQNZ25zYnRBbXRUb3RhbAkBBWFzSW50AQkAkQMCBQlnbnNidERhdGEAAQQVZ25zYnRBbXRGcm9tU3VyZlRvdGFsCQEFYXNJbnQBCQCRAwIJAQlhc0FueUxpc3QBCQCRAwIFCWduc2J0RGF0YQADAAMEDWNvbW1vbkFjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIJARR0b3RhbExvY2tlZEJ5VXNlcktFWQMFCHN3YXBUeXBlBQdhY2NvdW50BQdpbkFzc2V0CQBlAgURdG90YWxMb2NrZWRCeVVzZXIFCGluQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG90YWxMb2NrZWRLRVkCBQhzd2FwVHlwZQUHaW5Bc3NldAkAZQIFC3RvdGFsTG9ja2VkBQhpbkFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEHc3dhcEtFWQIFB2FjY291bnQFCHN3YXBUeElkCQEOZmluaXNoU3dhcERBVEELBQlkYXRhQXJyYXkFDXdpdGhkcmF3UHJpY2UFDG91dE5ldEFtb3VudAUMb3V0RmVlQW1vdW50BQx1bmxvY2tIZWlnaHQFBWluZGV4BQR0eElkBQpvdXRTdXJmQW10BQJCUgUOd2l0aGRyYXdCYXNrZXQFB2luQXNzZXQFA25pbAoBCGRlcG9zaXRzBAhzdXJmRmVlcwhuc2J0RmVlcwxzdXJmUGF5bWVudHMMbnNidFBheW1lbnRzBAtzdXJmRGVwb3NpdAMJAGYCBQhzdXJmRmVlcwAACQEFYXNJbnQBCQD8BwQFE3N1cmZTdGFraW5nQ29udHJhY3QCB2RlcG9zaXQFA25pbAUMc3VyZlBheW1lbnRzAAAEC25zYnREZXBvc2l0AwkAZgIFCG5zYnRGZWVzAAAJAQVhc0ludAEJAPwHBAUTbnNidFN0YWtpbmdDb250cmFjdAIHZGVwb3NpdAUDbmlsBQxuc2J0UGF5bWVudHMAAAkAZAIFC3N1cmZEZXBvc2l0BQtuc2J0RGVwb3NpdAoBCmRpdmlkZUZlZXMBCWZlZUFtb3VudAQIc3VyZkFtdDEDCQECIT0CBQ1nbnNidEFtdFRvdGFsAAAJAGsDBQlmZWVBbW91bnQFFWduc2J0QW10RnJvbVN1cmZUb3RhbAUNZ25zYnRBbXRUb3RhbAAABAhzdXJmQW10MgMJAQIhPQIFDWduc2J0QW10VG90YWwAAAkAawMFCWZlZUFtb3VudAkAZQIFBU1VTFQ2BQJCUgUFTVVMVDYAAAQHc3VyZkFtdAkAlgMBCQDMCAIFCHN1cmZBbXQxCQDMCAIFCHN1cmZBbXQyBQNuaWwEB25zYnRBbXQJAGUCBQlmZWVBbW91bnQFB3N1cmZBbXQJAMwIAgUHc3VyZkFtdAkAzAgCBQduc2J0QW10BQNuaWwECXRyYW5zZmVycwMJAAACBQhzd2FwVHlwZQIIb3V0TXVsdGkEBmJhc2tldAkAvAkCBQ53aXRoZHJhd0Jhc2tldAIBXwoBBmxvb3BlcgIDYWNjBGl0ZW0EAml0CQC1CQIFBGl0ZW0FB0xJU1RTRVAEC3RlbXBBc3NldElkCQDZBAEJAJEDAgUCaXQAAAQHYXNzZXRJZAMJAAACBQt0ZW1wQXNzZXRJZAUHV0FWRVNJRAUEdW5pdAULdGVtcEFzc2V0SWQECW5ldEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAml0AAIECWZlZUFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAml0AAMEBGZlZXMJAQpkaXZpZGVGZWVzAQUJZmVlQW1vdW50CQCXCgUJAM0IAggFA2FjYwJfMQkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCW5ldEFtb3VudAUHYXNzZXRJZAkAzQgCCAUDYWNjAl8yCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJZAkAkQMCBQRmZWVzAAAJAM0IAggFA2FjYwJfMwkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQJAJEDAgUEZmVlcwABCQBkAggFA2FjYwJfNAkAkQMCBQRmZWVzAAAJAGQCCAUDYWNjAl81CQCRAwIFBGZlZXMAAQQBcgoAAiRsBQZiYXNrZXQKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCXCgUFA25pbAUDbmlsBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZsb29wZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoECmRlcG9SZXN1bHQJAQhkZXBvc2l0cwQIBQFyAl80CAUBcgJfNQgFAXICXzIIBQFyAl8zCQCUCgIIBQFyAl8xBQpkZXBvUmVzdWx0BARmZWVzCQEKZGl2aWRlRmVlcwEFDG91dEZlZUFtb3VudAQKZGVwb1Jlc3VsdAkBCGRlcG9zaXRzBAkAkQMCBQRmZWVzAAAJAJEDAgUEZmVlcwABCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpvdXRBc3NldElkCQCRAwIFBGZlZXMAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpvdXRBc3NldElkCQCRAwIFBGZlZXMAAQUDbmlsCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFDG91dE5ldEFtb3VudAUKb3V0QXNzZXRJZAUDbmlsBQpkZXBvUmVzdWx0CQCUCgIJAM4IAgUNY29tbW9uQWN0aW9ucwgFCXRyYW5zZmVycwJfMQgFCXRyYW5zZmVycwJfMgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARdpbnRlcm5hbFVubGVhc2VBbmRMZWFzZQENdW5sZWFzZUFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECLGludGVybmFsVW5sZWFzZUFuZExlYXNlIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQEWcHJlcGFyZVVubGVhc2VBbmRMZWFzZQEFDXVubGVhc2VBbW91bnQBaQESdHJhbnNmZXJVc2RuVG9Vc2VyAgZhbW91bnQEYWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUPYXVjdGlvbkNvbnRyYWN0CQACAQIjT25seSBhdWN0aW9uIGNvbnRyYWN0IGlzIGF1dGhvcml6ZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgUGYW1vdW50BQ9uZXV0cmlub0Fzc2V0SWQFA25pbAFpAQthY2NlcHRXYXZlcwADAwkBAiE9AggFAWkGY2FsbGVyBQ9hdWN0aW9uQ29udHJhY3QJAQIhPQIIBQFpBmNhbGxlcgULZ292Q29udHJhY3QHCQACAQJDQ3VycmVudGx5IG9ubHkgYXVjdGlvbiBhbmQgZ292ZXJuYW5jZSBjb250cmFjdHMgYXJlIGFsbG93ZWQgdG8gY2FsbAkAlAoCCQEWcHJlcGFyZVVubGVhc2VBbmRMZWFzZQEAAAIHc3VjY2VzcwFpAQ9hcHByb3ZlTGVhc2luZ3MDBm5MaXN0Uwhncm91cE51bQRsQW10BAVuSWR4cwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHBQNuaWwEB21uZ1B1YlMJAQt2YWx1ZU9yRWxzZQIJAKIIAQIcJXMlc19fY2ZnX19sZWFzaW5nTWFuYWdlclB1YgIsN0FVTVg1NHVrWU1ZdlBtbWE3eW9GZjVOalpoczRCdTVuejNFejlFVjhzdXIEBm1uZ1B1YgkA2QQBBQdtbmdQdWJTBA5ub2RlUmVnQWRkclN0cgkBC3ZhbHVlT3JFbHNlAgkAoggBAh8lcyVzX19jZmdfX25vZGVzUmVnaXN0cnlBZGRyZXNzAiMzUDl2S3FRS2pVZG1wWEFmaVdhdThrclJFWUFZMVhyNjlwRQQLbm9kZVJlZ0FkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDm5vZGVSZWdBZGRyU3RyBBFsR3JvdXBOb2RlTGlzdEtFWQkBGGdldExlYXNlR3JvdXBOb2RlTGlzdEtleQEFCGdyb3VwTnVtBApsR3JOb2RlT3B0CQCdCAIFBHRoaXMFEWxHcm91cE5vZGVMaXN0S0VZAwkBCWlzRGVmaW5lZAEFCmxHck5vZGVPcHQJAAIBCQCsAgIJAKwCAgIGZ3JvdXAgCQCkAwEFCGdyb3VwTnVtAhQgYWxyZWFkeSBpbml0aWFsaXplZAQFbkxpc3QJALUJAgUGbkxpc3RTBQNTRVAECGV4cENvdW50CQCQAwEFBW5JZHhzAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQZtbmdQdWIJAAIBAh5hcHByb3ZlTGVhc2luZ3Mgbm90IGF1dGhvcml6ZWQEDSR0MDQ0NDI1NDQ0ODcJAQxyZWFkTm9kZUluZm8BAAAEBm5BZGRyMAgFDSR0MDQ0NDI1NDQ0ODcCXzEECGxBbXRLRVkwCAUNJHQwNDQ0MjU0NDQ4NwJfMgQFbEFtdDAIBQ0kdDA0NDQyNTQ0NDg3Al8zBAdsSWRLRVkwCAUNJHQwNDQ0MjU0NDQ4NwJfNAQEbElkMAgFDSR0MDQ0NDI1NDQ0ODcCXzUEBW5ld0wwCQDECAIFBm5BZGRyMAkAZQIFBWxBbXQwCQBoAgUEbEFtdAUIZXhwQ291bnQECnZhbGlkYXRpb24JAPwHBAULbm9kZVJlZ0FkZHICGnZhbGlkYXRlQW5kQXBwcm92ZUxlYXNpbmdzCQDMCAIFBm5MaXN0UwUDbmlsBQNuaWwDCQAAAgUKdmFsaWRhdGlvbgUKdmFsaWRhdGlvbgoBI2ZvckVhY2hOb2RlVmFsaWRhdGVBbmRHZW5lcmF0ZUxlYXNlAgFhAWkEBG5vZGUJAJEDAgUFbkxpc3QFAWkEAmxhCQDECAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBG5vZGUFBGxBbXQJAM4IAgUBYQkAzAgCBQJsYQkAzAgCCQELQmluYXJ5RW50cnkCCQEWZ2V0TGVhc2VJZEJ5QWRkcmVzc0tleQEFBG5vZGUJAQVsY2FsYwEFAmxhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaZ2V0TGVhc2VBbW91bnRCeUFkZHJlc3NLZXkBBQRub2RlBQRsQW10BQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBRFsR3JvdXBOb2RlTGlzdEtFWQUGbkxpc3RTCQDMCAIJAQtCaW5hcnlFbnRyeQIFB2xJZEtFWTAJAQVsY2FsYwEFBW5ld0wwCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhsQW10S0VZMAgFBW5ld0wwBmFtb3VudAkAzAgCCQELTGVhc2VDYW5jZWwBBQRsSWQwCQDMCAIFBW5ld0wwBQNuaWwKAAIkbAUFbklkeHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBI2ZvckVhY2hOb2RlVmFsaWRhdGVBbmRHZW5lcmF0ZUxlYXNlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA4CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFyZWJhbGFuY2VMZWFzaW5ncwIGYW1vdW50CGdyb3VwTnVtBAVuSWR4cwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHBQNuaWwEB21uZ1B1YlMJAQt2YWx1ZU9yRWxzZQIJAKIIAQIcJXMlc19fY2ZnX19sZWFzaW5nTWFuYWdlclB1YgIsN0FVTVg1NHVrWU1ZdlBtbWE3eW9GZjVOalpoczRCdTVuejNFejlFVjhzdXIEBm1uZ1B1YgkA2QQBBQdtbmdQdWJTBBFsR3JvdXBOb2RlTGlzdEtFWQkBGGdldExlYXNlR3JvdXBOb2RlTGlzdEtleQEFCGdyb3VwTnVtBAZuTGlzdFMJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzBRFsR3JvdXBOb2RlTGlzdEtFWQQFbkxpc3QJALUJAgUGbkxpc3RTBQNTRVADCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBm1uZ1B1YgkAAgECIHJlYmFsYW5jZUxlYXNpbmdzIG5vdCBhdXRob3JpemVkBAp1bmxlYXNlQW10CQBkAgkAaQIFBmFtb3VudAkAkAMBBQVuTGlzdAABBA0kdDA0NTcyNzQ1Nzg5CQEMcmVhZE5vZGVJbmZvAQAABAZuQWRkcjAIBQ0kdDA0NTcyNzQ1Nzg5Al8xBAhsQW10S0VZMAgFDSR0MDQ1NzI3NDU3ODkCXzIEBWxBbXQwCAUNJHQwNDU3Mjc0NTc4OQJfMwQHbElkS0VZMAgFDSR0MDQ1NzI3NDU3ODkCXzQEBGxJZDAIBQ0kdDA0NTcyNzQ1Nzg5Al81BAVuZXdMMAkAxAgCBQZuQWRkcjAJAGQCBQVsQW10MAkAaAIFCnVubGVhc2VBbXQJAJADAQUFbkxpc3QKARRmb3JFYWNoTm9kZURvVW5sZWFzZQIBYQFpBARub2RlCQCRAwIFBW5MaXN0BQFpBAZsSWRLRVkJARZnZXRMZWFzZUlkQnlBZGRyZXNzS2V5AQUEbm9kZQQDbElkCQERQGV4dHJOYXRpdmUoMTA1MikCBQR0aGlzBQZsSWRLRVkEB2xBbXRLRVkJARpnZXRMZWFzZUFtb3VudEJ5QWRkcmVzc0tleQEFBG5vZGUEBGxBbXQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFB2xBbXRLRVkEA3VsYQkBC0xlYXNlQ2FuY2VsAQkBBXZhbHVlAQUDbElkBAJsYQkAxAgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQRub2RlCQBlAgUEbEFtdAUKdW5sZWFzZUFtdAkAzggCBQFhCQDMCAIJAQtMZWFzZUNhbmNlbAEJAQV2YWx1ZQEFA2xJZAkAzAgCBQJsYQkAzAgCCQELQmluYXJ5RW50cnkCBQZsSWRLRVkJAQVsY2FsYwEFAmxhCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQdsQW10S0VZCAUCbGEGYW1vdW50BQNuaWwJAM4IAgoAAiRsBQVuSWR4cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEUZm9yRWFjaE5vZGVEb1VubGVhc2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDgJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAICQDMCAIJAQtCaW5hcnlFbnRyeQIFB2xJZEtFWTAJAQVsY2FsYwEFBW5ld0wwCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhsQW10S0VZMAgFBW5ld0wwBmFtb3VudAkAzAgCCQELTGVhc2VDYW5jZWwBBQRsSWQwCQDMCAIFBW5ld0wwBQNuaWwBaQEbc3dhcFBhcmFtc0J5VXNlclNZU1JFQURPTkxZAg51c2VyQWRkcmVzc1N0cglnbnNidERpZmYECWduc2J0RGF0YQkBCWFzQW55TGlzdAEJAPwHBAUXZ25zYnRDb250cm9sbGVyQ29udHJhY3QCFGduc2J0SW5mb1NZU1JFQURPTkxZCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIAAAkAzAgCAAAFA25pbAUDbmlsBAhnbnNidEFtdAkAZAIJAQVhc0ludAEJAJEDAgUJZ25zYnREYXRhAAAFCWduc2J0RGlmZgQNZ25zYnRBbXRUb3RhbAkAZAIJAQVhc0ludAEJAJEDAgUJZ25zYnREYXRhAAEFCWduc2J0RGlmZgQNc3dhcExpbWl0RGF0YQkBCWFzQW55TGlzdAEJAPwHBAUMbWF0aENvbnRyYWN0AhVjYWxjU3dhcExpbWl0UkVBRE9OTFkJAMwIAgUIZ25zYnRBbXQFA25pbAUDbmlsBBZ0b2tlblN3YXBMaW1pdEluVXNkTWF4CQEFYXNJbnQBCQCRAwIFDXN3YXBMaW1pdERhdGEAAAQQdXNkblN3YXBMaW1pdE1heAkBBWFzSW50AQkAkQMCBQ1zd2FwTGltaXREYXRhAAIEDmxhc3RTd2FwSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARVrZXlVc2VyTGFzdFN3YXBIZWlnaHQBBQ51c2VyQWRkcmVzc1N0cgAABBdzd2FwTGltaXRUaW1lbGlmZUJsb2NrcwkBEnN3YXBzVGltZWZyYW1lUkVBRAAEGXBhc3NlZEJsb2Nrc0FmdGVyTGFzdFN3YXAJAGUCBQZoZWlnaHQFDmxhc3RTd2FwSGVpZ2h0BBFpc1N3YXBUaW1lbGlmZU5ldwkAZwIFGXBhc3NlZEJsb2Nrc0FmdGVyTGFzdFN3YXAFF3N3YXBMaW1pdFRpbWVsaWZlQmxvY2tzBBRzd2FwTGltaXRTcGVudEluVXNkbgMFEWlzU3dhcFRpbWVsaWZlTmV3AAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGGtleVN3YXBVc2VyU3BlbnRJblBlcmlvZAEFDnVzZXJBZGRyZXNzU3RyAAAEDmJsY2tzMkxtdFJlc2V0AwURaXNTd2FwVGltZWxpZmVOZXcAAAkAZQIFF3N3YXBMaW1pdFRpbWVsaWZlQmxvY2tzBRlwYXNzZWRCbG9ja3NBZnRlckxhc3RTd2FwCQCUCgIFA25pbAkAmQoHBRZ0b2tlblN3YXBMaW1pdEluVXNkTWF4BRRzd2FwTGltaXRTcGVudEluVXNkbgUOYmxja3MyTG10UmVzZXQFCGduc2J0QW10BQ1nbnNidEFtdFRvdGFsAAAFEHVzZG5Td2FwTGltaXRNYXgBaQEdY2FsY1dpdGhkcmF3UmVzdWx0U1lTUkVBRE9OTFkECHN3YXBUeXBlCGluQW1vdW50BXByaWNlB2luQXNzZXQED25ldXRyaW5vTWV0cmljcwkBCWFzQW55TGlzdAEJAPwHBAUMbWF0aENvbnRyYWN0AhpjYWxjTmV1dGlub01ldHJpY3NSRUFET05MWQUDbmlsBQNuaWwJAJQKAgUDbmlsCQEMY2FsY1dpdGhkcmF3BQUIc3dhcFR5cGUFCGluQW1vdW50BQVwcmljZQUPbmV1dHJpbm9NZXRyaWNzBQdpbkFzc2V0AWkBFHJlcGxhY2VDb21tdW5pdHlOb2RlBApvbGRBZGRyU3RyCm5ld0FkZHJTdHIIZ3JvdXBOdW0NcGVuYWx0eUFtb3VudAQHbW5nUHViUwkBC3ZhbHVlT3JFbHNlAgkAoggBAhwlcyVzX19jZmdfX2xlYXNpbmdNYW5hZ2VyUHViAiw3QVVNWDU0dWtZTVl2UG1tYTd5b0ZmNU5qWmhzNEJ1NW56M0V6OUVWOHN1cgQGbW5nUHViCQDZBAEFB21uZ1B1YlMDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBm1uZ1B1YgkAAgECI3JlcGxhY2VDb21tdW5pdHlOb2RlIG5vdCBhdXRob3JpemVkBAhncm91cEtleQkBGGdldExlYXNlR3JvdXBOb2RlTGlzdEtleQEFCGdyb3VwTnVtBA5ncm91cE5vZGVMaXN0UwkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMFCGdyb3VwS2V5AwkBASEBCQEIY29udGFpbnMCBQ5ncm91cE5vZGVMaXN0UwUKb2xkQWRkclN0cgkAAgEJAKwCAgkArAICCQCsAgICBkdyb3VwIAkApAMBBQhncm91cE51bQIaIGRvZXMgbm90IGNvbnRhaW4gYWRkcmVzcyAFCm9sZEFkZHJTdHIECWRvUmVwbGFjZQkA/AcEBRRub2RlUmVnaXN0cnlDb250cmFjdAITcmVwbGFjZUFwcHJvdmVkTm9kZQkAzAgCBQpvbGRBZGRyU3RyCQDMCAIFCm5ld0FkZHJTdHIJAMwIAgUIZ3JvdXBOdW0JAMwIAgUNcGVuYWx0eUFtb3VudAUDbmlsBQNuaWwDCQAAAgUJZG9SZXBsYWNlBQlkb1JlcGxhY2UEDW9sZExlYXNlSWRLZXkJARZnZXRMZWFzZUlkQnlBZGRyZXNzS2V5AQUKb2xkQWRkclN0cgQOb2xkTGVhc2VBbXRLZXkJARpnZXRMZWFzZUFtb3VudEJ5QWRkcmVzc0tleQEFCm9sZEFkZHJTdHIECGxlYXNlQW10CQERQGV4dHJOYXRpdmUoMTA1NSkBBQ5vbGRMZWFzZUFtdEtleQQNbmV3TGVhc2VJZEtleQkBFmdldExlYXNlSWRCeUFkZHJlc3NLZXkBBQpuZXdBZGRyU3RyBA5uZXdMZWFzZUFtdEtleQkBGmdldExlYXNlQW1vdW50QnlBZGRyZXNzS2V5AQUKbmV3QWRkclN0cgQIbmV3TGVhc2UJAMQIAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUKbmV3QWRkclN0cgUIbGVhc2VBbXQEFXVwZGF0ZWRHcm91cE5vZGVMaXN0UwkAuQkCCQC1CQIFDmdyb3VwTm9kZUxpc3RTBQpvbGRBZGRyU3RyBQpuZXdBZGRyU3RyCQCUCgIJAMwIAgkBC0xlYXNlQ2FuY2VsAQkBEUBleHRyTmF0aXZlKDEwNTcpAQUNb2xkTGVhc2VJZEtleQkAzAgCCQELRGVsZXRlRW50cnkBBQ1vbGRMZWFzZUlkS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFDm9sZExlYXNlQW10S2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFCGdyb3VwS2V5BRV1cGRhdGVkR3JvdXBOb2RlTGlzdFMJAMwIAgUIbmV3TGVhc2UJAMwIAgkBC0JpbmFyeUVudHJ5AgUNbmV3TGVhc2VJZEtleQkBBWxjYWxjAQUIbmV3TGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIFDm5ld0xlYXNlQW10S2V5BQhsZWFzZUFtdAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQTcHViS2V5QWRtaW5zTGlzdFN0cgkAuQkCCQDMCAICLEV4dEVFSzE5bm1LajltQ3BuV3l2RUVKRllBVExNY1ZFTXZvaGhVSGt5SE5tCQDMCAICLEV2NXB5NUZmQlFYOWNacFlLbmZRclRCNDlCeWY4UW1wWldlRFZSaW00eVY3CQDMCAICLERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSCQDMCAICLERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSBQNuaWwFA1NFUAQQcHViS2V5QWRtaW5zTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD2NvbnRyb2xDb250cmFjdAIMJXNfX211bHRpc2lnBRNwdWJLZXlBZG1pbnNMaXN0U3RyBQNTRVAEBWNvdW50CQBkAgkAZAIJAGQCAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAAABAAADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABCQDZBAEJAJEDAgUQcHViS2V5QWRtaW5zTGlzdAABAAEAAAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIJANkEAQkAkQMCBRBwdWJLZXlBZG1pbnNMaXN0AAIAAQAAAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAwkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAwACAAADAwUJaXNCbG9ja2VkCQAAAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUPY29udHJvbENvbnRyYWN0AhFpc19ibG9ja2VkX2NhbGxlcgkApQgBBQtnb3ZDb250cmFjdAcJAQ52YWxpZGF0ZVVwZGF0ZQEFAnR4BAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhVTcG9uc29yRmVlVHJhbnNhY3Rpb24ECXNwb25zb3JUeAUHJG1hdGNoMAMJARtjaGVja0lzVmFsaWRNaW5TcG9uc29yZWRGZWUBBQlzcG9uc29yVHgJAGcCBQVjb3VudAADBwkAZwIFBWNvdW50AAPjRafG", "height": 2471180, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EBgZWGytK72wKvEPqzpkp6om5531cv2UcZYCUkUeQbLC Next: 5SCn7iV7KEbqt5TrKx39Kxsox49yM92aEtpL1qhmD3Ag Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = valueOrErrorMessage(getString(b, c), makeString(["mandatory ", toString(b), ".", c, " is not defined"], ""))
55
66
77 func d (e) = calculateLeaseId(e)
88
99
1010 func f (c) = valueOrElse(getInteger(this, c), 0)
1111
1212
1313 func g (c) = valueOrElse(getString(this, c), "")
1414
1515
1616 func h (c) = valueOrElse(getBoolean(this, c), false)
1717
1818
1919 func i (b,c) = valueOrElse(getInteger(b, c), 0)
2020
2121
2222 func j (b,c) = valueOrElse(getString(addressFromStringValue(b), c), "")
2323
2424
2525 func k (b,c) = valueOrElse(getBoolean(b, c), false)
2626
2727
2828 func l (m) = {
2929 let n = m
3030 if ($isInstanceOf(n, "List[Any]"))
3131 then {
3232 let e = n
3333 e
3434 }
3535 else throw("fail to cast into List[Any]")
3636 }
3737
3838
3939 func o (m) = {
4040 let n = m
4141 if ($isInstanceOf(n, "String"))
4242 then {
4343 let p = n
4444 p
4545 }
4646 else throw("fail to cast into String")
4747 }
4848
4949
5050 func q (m) = {
5151 let n = m
5252 if ($isInstanceOf(n, "Int"))
5353 then {
5454 let r = n
5555 r
5656 }
5757 else throw("fail to cast into Int")
5858 }
5959
6060
6161 func s (t) = {
6262 let n = t
6363 if ($isInstanceOf(n, "ByteVector"))
6464 then {
6565 let u = n
6666 u
6767 }
6868 else throw("fail to cast into ByteVector")
6969 }
7070
7171
7272 func v (m) = {
7373 let n = m
7474 if ($isInstanceOf(n, "AttachedPayment"))
7575 then {
7676 let w = n
7777 w
7878 }
7979 else throw("fail to cast into AttachedPayment")
8080 }
8181
8282
8383 func x (m) = {
8484 let n = m
8585 if ($isInstanceOf(n, "(Int, Int, Int, Int, Int, Int, Int)"))
8686 then {
8787 let y = n
8888 y
8989 }
9090 else throw("fail to cast into Tuple5 ints")
9191 }
9292
9393
9494 let z = "__"
9595
9696 let A = ":"
9797
9898 let B = 100000000
9999
100100 let C = 1000000
101101
102102 let D = 20000
103103
104104 let E = 100000
105105
106106 let F = base58'WAVES'
107107
108108 let G = 0
109109
110110 let H = 1
111111
112112 let I = 2
113113
114114 let J = 3
115115
116116 let K = 4
117117
118118 let L = 5
119119
120120 let M = 6
121121
122122 let N = 7
123123
124124 let O = 8
125125
126126 let P = 9
127127
128128 let Q = 10
129129
130130 let R = 11
131131
132132 let S = 12
133133
134134 let T = 13
135135
136136 let U = 14
137137
138138 let V = 15
139139
140140 let W = 16
141141
142142 let X = 1
143143
144144 let Y = 2
145145
146146 let Z = 3
147147
148148 let aa = 4
149149
150150 let ab = 5
151151
152152 let ac = 6
153153
154154 let ad = 7
155155
156156 let ae = 8
157157
158158 let af = 9
159159
160160 let ag = 10
161161
162162 let ah = 11
163163
164164 let ai = 12
165165
166166 let aj = 13
167167
168168 func ak () = "%s%s__config__controlAddress"
169169
170170
171171 func al () = "%s__controlConfig"
172172
173173
174174 func am (an) = split_4C(a(an, al()), z)
175175
176176
177177 func ao (ap,aq) = valueOrErrorMessage(addressFromString(ap[aq]), ("Control cfg doesn't contain address at index " + toString(aq)))
178178
179179
180180 let ar = addressFromStringValue(valueOrElse(getString(this, ak()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
181181
182182 let ap = am(ar)
183183
184184 let as = ao(ap, aa)
185185
186186 let at = ao(ap, ae)
187187
188188 let au = ao(ap, ag)
189189
190190 let av = ao(ap, ah)
191191
192192 let aw = ao(ap, Y)
193193
194194 let ax = ao(ap, ad)
195195
196196 let ay = ao(ap, aj)
197197
198198 let az = "neutrino_asset_id"
199199
200200 let aA = "bond_asset_id"
201201
202202 let aB = "auction_contract"
203203
204204 let aC = "nsbtStakingContract"
205205
206206 let aD = "liquidation_contract"
207207
208208 let aE = "rpd_contract"
209209
210210 let aF = "control_contract"
211211
212212 let aG = "math_contract"
213213
214214 let aH = "balance_waves_lock_interval"
215215
216216 let aI = "balance_neutrino_lock_interval"
217217
218218 func aJ (aK) = ("min_outNeutrino_swap_amount_" + aK)
219219
220220
221221 let aL = "min_outMulti_swap_amount"
222222
223223 let aM = "min_neutrino_swap_amount"
224224
225225 let aN = "node_oracle_provider"
226226
227227 let aO = "neutrinoOut_swap_feePart"
228228
229229 let aP = "wavesOut_swap_feePart"
230230
231231 func aQ (b) = ("%s__" + b)
232232
233233
234234 let aR = "price"
235235
236236 let aS = "price_index"
237237
238238 let aT = "is_blocked"
239239
240240 func aU (aV) = ((aR + "_") + toString(aV))
241241
242242
243243 func aW (aX) = ((aS + "_") + toString(aX))
244244
245245
246246 func aY (aq) = g(makeString(["%s%d%s", "lease", toString(aq), "nodeAddress"], z))
247247
248248
249249 func aZ (aq) = addressFromStringValue(aY(aq))
250250
251251
252252 func ba () = valueOrElse(getInteger(this, makeString(["%s%s", "lease", "sponsorshipWavesReserve"], z)), (1000 * B))
253253
254254
255255 func bb (bc) = ("balance_unlock_block_" + bc)
256256
257257
258258 func bd (be) = makeString(["%s%d%s", "lease", toString(be), "id"], z)
259259
260260
261261 func bf (bg) = makeString(["%s%s%s", "leaseByAddress", bg, "id"], z)
262262
263263
264264 func bh (be) = makeString(["%s%d%s", "lease", toString(be), "amount"], z)
265265
266266
267267 func bi (bg) = makeString(["%s%s%s", "leaseByAddress", bg, "amount"], z)
268268
269269
270270 func bj (bk) = makeString(["%s%d%s", "leaseGroup", toString(bk), "nodeList"], z)
271271
272272
273273 func bl (bm) = (("min_" + bm) + "_swap_amount")
274274
275275
276276 func bn (bm,aK) = makeString(["%s%s%s", "balanceLock", bm, aK], z)
277277
278278
279279 func bo (bm,bc,aK) = makeString(["%s%s%s%s", "balanceLock", bm, bc, aK], "_")
280280
281281
282282 func bp (bm) = if ((bm == "outMulti"))
283283 then aI
284284 else aH
285285
286286
287287 func bq () = "balance_node_lock_interval"
288288
289289
290290 func br () = "swaps_timeframe"
291291
292292
293293 func bs () = "min_BR_protection_level"
294294
295295
296296 func bt () = "%s%s__common__basketAssets"
297297
298298
299299 func bu () = "%s%s__common__basketD"
300300
301301
302302 func bv () = "%s%s__common__basketK"
303303
304304
305305 func bw () = "%s%s__common__basketB"
306306
307307
308308 func bx () = "%s%s__common__basketLogbDelta"
309309
310310
311311 func by (aK) = ("%s%s%s__common__weightByAsset__" + aK)
312312
313313
314314 func bz (aK) = ("%s%s%s__common__priceByAsset__" + aK)
315315
316316
317317 func bA (bm,aK) = if ((bm == "outMulti"))
318318 then valueOrElse(getInteger(aL), f(aM))
319319 else f(aJ(aK))
320320
321321
322322 func bB () = valueOrElse(getInteger(this, br()), 1440)
323323
324324
325325 func bC (bm,aK) = valueOrElse(getInteger(this, bn(bm, aK)), 0)
326326
327327
328328 func bD (bm,bc,aK) = valueOrElse(getInteger(this, bo(bm, bc, aK)), 0)
329329
330330
331331 func bE (bm) = valueOrElse(getInteger(this, bp(bm)), 1440)
332332
333333
334334 func bF () = valueOrElse(getInteger(this, bq()), 1)
335335
336336
337337 func bG (bH) = makeString(["%s%s", "swapUserSpentInPeriod", bH], z)
338338
339339
340340 func bI (bH) = makeString(["%s%s", "userLastSwapHeight", bH], z)
341341
342342
343343 func bJ (bK,bL) = fraction(bK, B, bL)
344344
345345
346346 func bM (bK,bL) = fraction(bK, bL, B)
347347
348348
349349 func bN (bK,bL) = fraction(bK, bL, B)
350350
351351
352352 func bO (bK,bL) = bM(bK, bL)
353353
354354
355355 func bP (bQ) = split(bQ, ",")
356356
357357
358358 func bR (bS,bT,bU,bV) = {
359359 let bW = split_4C(bU, "_")
360360 func bX (bY,bZ) = {
361361 let ca = split(bZ, A)
362362 if ((ca[0] == bT))
363363 then ca
364364 else bY
365365 }
366366
367367 let cb = {
368368 let cc = bW
369369 let cd = size(cc)
370370 let ce = nil
371371 func cf (cg,ch) = if ((ch >= cd))
372372 then cg
373373 else bX(cg, cc[ch])
374374
375375 func ci (cg,ch) = if ((ch >= cd))
376376 then cg
377377 else throw("List size exceeds 10")
378378
379379 ci(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(ce, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
380380 }
381381 let cj = value(getInteger(bx()))
382382 let ck = value(getInteger(bu()))
383383 let cl = value(getInteger(bw()))
384384 let cm = value(getInteger(by(bT)))
385385 let cn = ((cj - cm) + parseIntValue(cb[1]))
386386 let co = pow(cl, 6, cn, 6, 6, HALFUP)
387387 let cp = fraction(bS, parseIntValue(cb[2]), if ((bV == 0))
388388 then B
389389 else (bV * 100))
390390 let cq = ((C + ck) - co)
391391 let cr = fraction(cp, cq, C)
392392 let cs = if ((cr >= cp))
393393 then 0
394394 else (cp - cr)
395395 [cp, cr, cs]
396396 }
397397
398398
399399 func ct (bK,bU,cu) = {
400400 let bW = split_4C(bU, "_")
401401 func cv (bY,bZ) = {
402402 let cw = split(bZ, A)
403403 let aK = cw[0]
404404 let cx = parseIntValue(cw[1])
405405 let bL = parseIntValue(cw[2])
406406 let cy = parseIntValue(cw[3])
407407 if ((cu == 0))
408408 then throw("Attempt to burn neutrino at zero supply")
409409 else {
410410 let cz = fraction(bK, cy, cu)
411411 let cA = if ((aK == "WAVES"))
412412 then $Tuple2(cz, bL)
413413 else $Tuple2(bY._2, bY._3)
414414 $Tuple3((bY._1 :+ $Tuple4(aK, cz, bL, cx)), cA._1, cA._2)
415415 }
416416 }
417417
418418 let cc = bW
419419 let cd = size(cc)
420420 let ce = $Tuple3(nil, 0, 0)
421421 func cf (cg,ch) = if ((ch >= cd))
422422 then cg
423423 else cv(cg, cc[ch])
424424
425425 func ci (cg,ch) = if ((ch >= cd))
426426 then cg
427427 else throw("List size exceeds 10")
428428
429429 ci(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(ce, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
430430 }
431431
432432
433433 func cB (bm,cC) = throw(((("The specified amount in " + bm) + " swap is less than the required minimum of ") + toString(cC)))
434434
435435
436436 func cD () = throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
437437
438438
439439 func cE (aX,cF,cG,cH,cI) = throw(((((((((("invalid price history index: index=" + toString(aX)) + " priceIndex=") + toString(cF)) + " indexHeight=") + toString(cG)) + " unlockHeight=") + toString(cH)) + " prevIndexHeight=") + toString(cI)))
440440
441441
442442 let cJ = fromBase58String(g(az))
443443
444444 let cF = i(ar, aS)
445445
446446 let cK = k(ar, aT)
447447
448448 let cL = fromBase58String(g(aN))
449449
450450 let cM = fromBase58String("F3iaxzruFeKujfVfYSZEkejpjh67wmRfPCRHiNmWKp3Z")
451451
452452 let cN = fromBase58String("975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF")
453453
454454 let cO = this
455455
456456 let cP = i(ar, aR)
457457
458458 func cQ (cR) = {
459459 let cS = 100000
460460 let cT = 1000
461461 let cU = bM(cS, cP)
462462 let cV = (cU * 2)
463463 let cW = fraction(cU, cT, 100)
464464 let cX = value(cR.minSponsoredAssetFee)
465465 if (if ((cX >= cV))
466466 then (cW >= cX)
467467 else false)
468468 then (cR.assetId == cJ)
469469 else false
470470 }
471471
472472
473473 func cY (aV) = i(ar, aU(aV))
474474
475475
476476 func cZ (aX) = i(ar, aW(aX))
477477
478478
479479 func da (bH) = makeString(["%s%s%s", "paramByUser", bH, "amount"], z)
480480
481481
482482 let db = 1
483483
484484 let dc = 2
485485
486486 let dd = 3
487487
488488 let de = 7
489489
490490 let df = 8
491491
492492 let dg = 11
493493
494494 let dh = 15
495495
496496 let di = 16
497497
498498 let dj = 20
499499
500500 func dk (bH,dl) = makeString(["%s%s", bH, dl], z)
501501
502502
503503 func dm (bm,dn,bS,bL,do,dp,dq,dr,ds,dt,du,dv,aX,dw,dx,dy,dz,dA,dB,bT) = makeString_2C(["%s%s%d%d%d%d%d%d%d%d%d%d%d%s%d%d%d%d%s%s", bm, dn, bS, bL, do, dp, dq, dr, ds, dt, du, dv, aX, dw, dx, dy, dz, dA, dB, bT], z)
504504
505505
506506 func dC (bm,dD,du,bT) = dm(bm, "PENDING", toString(dD), "0", "0", "0", toString(height), toString(lastBlock.timestamp), "0", "0", toString(du), "0", "0", "NULL", "0", "0", "0", "0", "", bT)
507507
508508
509509 func dE (dF,bL,do,dp,dv,aX,dw,dz,dA,dB,bT) = dm(dF[db], "FINISHED", dF[dd], toString(bL), toString(do), toString(dp), dF[de], dF[df], toString(height), toString(lastBlock.timestamp), dF[dg], toString(dv), toString(aX), dw, dF[dh], dF[di], toString(dz), toString(dA), dB, bT)
510510
511511
512512 func dG (bH,dH) = {
513513 let dI = dk(bH, dH)
514514 split_4C(valueOrErrorMessage(getString(dI), ("no swap data for " + dI)), z)
515515 }
516516
517517
518518 func dJ (dK,dL,dM) = {
519519 let cs = fraction(dK, dM, C)
520520 [(dK - cs), cs]
521521 }
522522
523523
524524 func dN (dO) = {
525525 let dP = value(getInteger(bv()))
526526 let ck = value(getInteger(bu()))
527527 let dM = fraction(dP, ck, C)
528528 func dQ (bY,bZ) = {
529529 let cs = fraction(bZ._2, dM, C)
530530 (bY :+ makeString([bZ._1, toString(bZ._3), toString((bZ._2 - cs)), toString(cs), toString(bZ._4)], A))
531531 }
532532
533533 let dR = {
534534 let cc = dO
535535 let cd = size(cc)
536536 let ce = nil
537537 func cf (cg,ch) = if ((ch >= cd))
538538 then cg
539539 else dQ(cg, cc[ch])
540540
541541 func ci (cg,ch) = if ((ch >= cd))
542542 then cg
543543 else throw("List size exceeds 10")
544544
545545 ci(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(ce, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
546546 }
547547 makeString_2C(dR, "_")
548548 }
549549
550550
551551 func dS (dT) = if ((0 > dT))
552552 then -(dT)
553553 else dT
554554
555555
556556 func dU (dV) = {
557557 let dW = ((wavesBalance(cO).available - dV) - ba())
558558 let dX = f(bh(0))
559559 let dY = f(bh(1))
560560 let dZ = (dW + dX)
561561 let ea = (dW + dY)
562562 if (if ((dZ > 0))
563563 then true
564564 else (ea > 0))
565565 then {
566566 let eb = dS((dZ - dY))
567567 let ec = dS((ea - dX))
568568 if ((ec >= eb))
569569 then $Tuple2(0, dZ)
570570 else $Tuple2(1, ea)
571571 }
572572 else $Tuple2(-1, 0)
573573 }
574574
575575
576576 func ed (r) = if ((r.caller != this))
577577 then throw("Permission denied: this contract only allowed")
578578 else true
579579
580580
581581 func ee (dV) = {
582582 let ef = dU(dV)
583583 let be = ef._1
584584 let eg = ef._2
585585 if ((eg > 0))
586586 then {
587587 let eh = bd(be)
588588 let ei = getBinary(this, eh)
589589 let ej = if (isDefined(ei))
590590 then [LeaseCancel(value(ei))]
591591 else nil
592592 let ek = bh(be)
593593 let el = Lease(aZ(be), eg)
594594 (ej ++ [el, BinaryEntry(eh, d(el)), IntegerEntry(bh(be), eg)])
595595 }
596596 else nil
597597 }
598598
599599
600600 func em (en) = {
601601 let bg = aZ(en)
602602 let eo = bh(en)
603603 let ep = f(eo)
604604 let eq = bd(en)
605605 let er = value(getBinary(this, eq))
606606 $Tuple5(bg, eo, ep, eq, er)
607607 }
608608
609609
610610 func es (bm,et,bT,eu,ev) = {
611611 let ew = x(invoke(this, "swapParamsByUserSYSREADONLY", [eu, 0], nil))
612612 let ex = ew._1
613613 let ey = ew._2
614614 let ez = ew._3
615615 let eA = ew._7
616616 let cC = bA(bm, bT)
617617 let eB = bD(bm, eu, bT)
618618 let bg = aY(0)
619619 let eC = (bg == eu)
620620 let eD = if (eC)
621621 then bF()
622622 else bE(bm)
623623 let du = (height + eD)
624624 let eE = value(getInteger(ar, bz(bT)))
625625 let eF = if ((bm == "outNeutrino"))
626626 then bM(et, eE)
627627 else et
628628 let eG = if ((bm == "outNeutrino"))
629629 then ex
630630 else eA
631631 if ((cC > et))
632632 then cB(bm, cC)
633633 else if (if (!(eC))
634634 then (ey > 0)
635635 else false)
636636 then throw(("You have exceeded swap limit! Next allowed swap height is " + toString((height + ez))))
637637 else if (if (!(eC))
638638 then (eF > eG)
639639 else false)
640640 then throw(((("You have exceeded your swap limit! Requested: " + toString(eF)) + ", available: ") + toString(eG)))
641641 else if (cK)
642642 then cD()
643643 else {
644644 let eH = l(invoke(as, "calcNeutinoMetricsREADONLY", nil, nil))
645645 let bW = o(eH[U])
646646 let eI = q(eH[V])
647647 let eJ = bR(et, bT, bW, eI)
648648 if (if ((bm == "outNeutrino"))
649649 then (0 >= eJ[1])
650650 else false)
651651 then throw((((((("Net amount is non-positive, cannot swap. (gross, net, fee) = (" + toString(eJ[0])) + ", ") + toString(eJ[1])) + ", ") + toString(eJ[2])) + ")"))
652652 else {
653653 let eK = if (if ((bm == "outNeutrino"))
654654 then (bT == "WAVES")
655655 else false)
656656 then ee(0)
657657 else nil
658658 $Tuple2(([IntegerEntry(bG(eu), eF), IntegerEntry(bI(eu), height), IntegerEntry(bo(bm, eu, bT), (eB + et)), IntegerEntry(bb(eu), du), StringEntry(dk(eu, ev), dC(bm, et, du, bT))] ++ eK), unit)
659659 }
660660 }
661661 }
662662
663663
664664 let eL = 0
665665
666666 let eM = 1
667667
668668 let eN = 2
669669
670670 let eO = 3
671671
672672 let eP = 4
673673
674674 let eQ = 5
675675
676676 let eR = 6
677677
678678 let eS = 7
679679
680680 let eT = 8
681681
682682 let eU = 9
683683
684684 let eV = 10
685685
686686 func eW (bS,bT,bW,eI) = {
687687 let eX = bR(bS, bT, bW, eI)
688688 $Tuple12(eX[0], cJ, 0, bT, 0, eI, bS, 0, 0, 0, nil, [eX[1], eX[2]])
689689 }
690690
691691
692692 func eY (eZ,bW,cu) = {
693693 let fa = ct(eZ, bW, cu)
694694 $Tuple12(fa._2, unit, 0, cJ, fa._2, fa._3, eZ, cu, eZ, 0, fa._1, nil)
695695 }
696696
697697
698698 func fb (bm,bS,bL,eH,bT) = {
699699 let cu = q(eH[L])
700700 let bW = o(eH[U])
701701 let eI = q(eH[V])
702702 let fc = if ((bm == "outNeutrino"))
703703 then eW(bS, bT, bW, eI)
704704 else if ((bm == "outMulti"))
705705 then eY(bS, bW, cu)
706706 else throw(("Unsupported swap type " + bm))
707707 let fa = fc._1
708708 let fd = fc._2
709709 let fe = fc._3
710710 let ff = fc._4
711711 let fg = fc._5
712712 let fh = fc._6
713713 let dB = fc._11
714714 let fi = fc._12
715715 let fj = if ((bm == "outNeutrino"))
716716 then fi[0]
717717 else 0
718718 let fk = if ((bm == "outNeutrino"))
719719 then fi[1]
720720 else 0
721721 let dz = if ((0 >= fe))
722722 then 0
723723 else q(l(invoke(as, "surfFunctionREADONLY", [fe, ff], nil))[eL])
724724 let fl = if ((bm == "outMulti"))
725725 then dN(dB)
726726 else ""
727727 $Tuple9(fj, fd, dz, fe, fg, fk, fa, fh, fl)
728728 }
729729
730730
731731 func fm () = "%s__applyInProgress"
732732
733733
734734 func fn (fo) = ("%s%d__proposalData__" + toString(fo))
735735
736736
737737 let fp = 9
738738
739739 func fq (cR) = {
740740 let n = cR
741741 if ($isInstanceOf(n, "Order"))
742742 then {
743743 let fr = n
744744 throw("Orders aren't allowed")
745745 }
746746 else if (if ($isInstanceOf(n, "DataTransaction"))
747747 then true
748748 else if ($isInstanceOf(n, "SponsorFeeTransaction"))
749749 then true
750750 else if ($isInstanceOf(n, "SetScriptTransaction"))
751751 then true
752752 else if ($isInstanceOf(n, "CreateAliasTransaction"))
753753 then true
754754 else if ($isInstanceOf(n, "LeaseCancelTransaction"))
755755 then true
756756 else if ($isInstanceOf(n, "LeaseTransaction"))
757757 then true
758758 else if ($isInstanceOf(n, "IssueTransaction"))
759759 then true
760760 else if ($isInstanceOf(n, "InvokeExpressionTransaction"))
761761 then true
762762 else if ($isInstanceOf(n, "UpdateAssetInfoTransaction"))
763763 then true
764764 else if ($isInstanceOf(n, "InvokeScriptTransaction"))
765765 then true
766766 else if ($isInstanceOf(n, "SetAssetScriptTransaction"))
767767 then true
768768 else if ($isInstanceOf(n, "TransferTransaction"))
769769 then true
770770 else if ($isInstanceOf(n, "ExchangeTransaction"))
771771 then true
772772 else if ($isInstanceOf(n, "MassTransferTransaction"))
773773 then true
774774 else if ($isInstanceOf(n, "BurnTransaction"))
775775 then true
776776 else $isInstanceOf(n, "ReissueTransaction"))
777777 then {
778778 let fs = n
779779 let dl = toBase58String(fs.id)
780780 let fo = valueOrErrorMessage(getInteger(ay, fm()), "Apply is not happening")
781781 let ft = split(split(a(ay, fn(fo)), z)[fp], A)
782782 if (!(isDefined(indexOf(ft, dl))))
783783 then throw(((("Unknown txId: " + dl) + " for proposalId=") + toString(fo)))
784784 else true
785785 }
786786 else throw("Match error")
787787 }
788788
789789
790790 @Callable(r)
791791 func constructorV1 (fu,fv,fw,fx,fy,fz,fA,fB,fC,fD,fE,fF) = {
792792 let fG = ed(r)
793793 if ((fG == fG))
794794 then if ((size(r.payments) != 0))
795795 then throw("no payments allowed")
796796 else [StringEntry(az, fu), StringEntry(aA, fv), StringEntry(aB, fw), StringEntry(aD, fx), StringEntry(aE, fy), StringEntry(aN, fz), IntegerEntry(aH, fA), IntegerEntry(aI, fB), IntegerEntry(aJ("WAVES"), fC), IntegerEntry(aL, fD), IntegerEntry(aO, fE), IntegerEntry(aP, fF)]
797797 else throw("Strict value is not equal to itself.")
798798 }
799799
800800
801801
802802 @Callable(r)
803803 func constructorV2 (as,at,fH) = {
804804 let fG = ed(r)
805805 if ((fG == fG))
806806 then if ((size(r.payments) != 0))
807807 then throw("no payments allowed")
808808 else [StringEntry(aG, as), StringEntry(aC, at), IntegerEntry(br(), fH)]
809809 else throw("Strict value is not equal to itself.")
810810 }
811811
812812
813813
814814 @Callable(r)
815815 func constructorV3 (fI,fJ,fK,fL,fM) = {
816816 let fG = ed(r)
817817 if ((fG == fG))
818818 then if ((size(r.payments) != 0))
819819 then throw("no payments allowed")
820820 else {
821821 func fN (bY,bZ) = {
822822 let cw = split(bZ, "_")
823823 let aK = cw[0]
824824 let fO = parseIntValue(cw[1])
825825 let fP = parseIntValue(cw[2])
826826 $Tuple2((bY._1 :+ aK), ((bY._2 :+ IntegerEntry(by(aK), fO)) :+ IntegerEntry(aJ(aK), fP)))
827827 }
828828
829829 let fQ = {
830830 let cc = fI
831831 let cd = size(cc)
832832 let ce = $Tuple2(nil, nil)
833833 func cf (cg,ch) = if ((ch >= cd))
834834 then cg
835835 else fN(cg, cc[ch])
836836
837837 func ci (cg,ch) = if ((ch >= cd))
838838 then cg
839839 else throw("List size exceeds 10")
840840
841841 ci(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(ce, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
842842 }
843843 (((((fQ._2 :+ IntegerEntry(bu(), fJ)) :+ IntegerEntry(bv(), fK)) :+ IntegerEntry(bw(), fL)) :+ IntegerEntry(bx(), log(fM, 6, fL, 6, 6, HALFUP))) :+ StringEntry(bt(), makeString(fQ._1, z)))
844844 }
845845 else throw("Strict value is not equal to itself.")
846846 }
847847
848848
849849
850850 @Callable(r)
851851 func swapTokenToNeutrino () = if ((size(r.payments) != 1))
852852 then throw("swapTokenToNeutrino require only one payment")
853853 else {
854854 let fR = value(r.payments[0])
855855 let fS = value(getString(bt()))
856856 let fT = toBase58String(valueOrElse(fR.assetId, F))
857857 if (!(contains(fS, fT)))
858858 then throw(((fT + " is not one of basket tokens:") + fS))
859859 else {
860860 let bH = toString(r.caller)
861861 let ev = toBase58String(r.transactionId)
862862 let fU = bC("outNeutrino", fT)
863863 let et = fR.amount
864864 let fV = invoke(this, "internalSaveInteger", [bn("outNeutrino", fT), (fU + et)], nil)
865865 if ((fV == fV))
866866 then es("outNeutrino", et, fT, bH, ev)
867867 else throw("Strict value is not equal to itself.")
868868 }
869869 }
870870
871871
872872
873873 @Callable(r)
874874 func swapNeutrinoToBasket () = if ((size(r.payments) != 1))
875875 then throw("swapNeutrinoToBasket require only one payment")
876876 else {
877877 let fR = value(r.payments[0])
878878 if ((fR.assetId != cJ))
879879 then throw("Only appropriate Neutrino tokens are allowed for swapping.")
880880 else {
881881 let bH = toString(r.caller)
882882 let ev = toBase58String(r.transactionId)
883883 let fW = toBase58String(cJ)
884884 let fU = bC("outMulti", fW)
885885 let et = fR.amount
886886 let fV = invoke(this, "internalSaveInteger", [bn("outMulti", fW), (fU + et)], nil)
887887 if ((fV == fV))
888888 then es("outMulti", fR.amount, fW, bH, ev)
889889 else throw("Strict value is not equal to itself.")
890890 }
891891 }
892892
893893
894894
895895 @Callable(r)
896896 func internalSaveInteger (c,bK) = if ((r.caller != this))
897897 then throw("internalSaveInteger is not public method")
898898 else [IntegerEntry(c, bK)]
899899
900900
901901
902902 @Callable(r)
903903 func withdraw (fX,aX,dH) = {
904904 let dl = toBase58String(r.transactionId)
905905 if ((size(r.payments) != 0))
906906 then throw("no payments allowed")
907907 else {
908908 let eH = l(invoke(as, "calcNeutinoMetricsREADONLY", nil, nil))
909909 let fY = q(eH[O])
910910 let bH = addressFromStringValue(fX)
911911 let dF = dG(fX, dH)
912912 let du = parseIntValue(dF[dg])
913913 let bm = dF[db]
914914 let bS = parseIntValue(dF[dd])
915915 let fZ = dF[dc]
916916 let dq = parseIntValue(dF[de])
917917 let bT = dF[dj]
918918 let fU = bC(bm, bT)
919919 let eB = bD(bm, fX, bT)
920920 let cH = du
921921 let cG = cZ(aX)
922922 let cI = cZ((aX - 1))
923923 let ga = cY(cG)
924924 if (cK)
925925 then cD()
926926 else if ((fZ != "PENDING"))
927927 then throw("swap has been already processed")
928928 else if ((cH > height))
929929 then throw((("please wait for: " + toString(cH)) + " block height to withdraw funds"))
930930 else if (if (if ((aX > cF))
931931 then true
932932 else (cH > cG))
933933 then true
934934 else if ((cI != 0))
935935 then (cI >= cH)
936936 else false)
937937 then cE(aX, cF, cG, cH, cI)
938938 else {
939939 let gb = fb(bm, bS, ga, eH, bT)
940940 let do = gb._1
941941 let fd = gb._2
942942 let dz = gb._3
943943 let fg = gb._5
944944 let dp = gb._6
945945 let fa = gb._7
946946 let fh = gb._8
947947 let fl = gb._9
948948 if (if ((bm == "outNeutrino"))
949949 then (0 >= fa)
950950 else false)
951951 then throw("balance equals zero")
952952 else {
953953 let gc = if ((dz > 0))
954954 then {
955955 let gd = invoke(aw, "issueSurf", [dz, fX], nil)
956956 if ((gd == gd))
957957 then 0
958958 else throw("Strict value is not equal to itself.")
959959 }
960960 else 0
961961 if ((gc == gc))
962962 then {
963963 let ge = invoke(this, "internalUnleaseAndLease", [fg], nil)
964964 if ((ge == ge))
965965 then {
966966 let gf = l(invoke(av, "gnsbtInfoSYSREADONLY", ["", 0, 0], nil))
967967 let gg = q(gf[1])
968968 let gh = q(l(gf[3])[3])
969969 let gi = [IntegerEntry(bo(bm, fX, bT), (eB - bS)), IntegerEntry(bn(bm, bT), (fU - bS)), StringEntry(dk(fX, dH), dE(dF, fh, do, dp, cH, aX, dl, dz, fY, fl, bT))]
970970 func gj (gk,gl,gm,gn) = {
971971 let go = if ((gk > 0))
972972 then q(invoke(au, "deposit", nil, gm))
973973 else 0
974974 let gp = if ((gl > 0))
975975 then q(invoke(at, "deposit", nil, gn))
976976 else 0
977977 (go + gp)
978978 }
979979
980980 func gq (cs) = {
981981 let gr = if ((gg != 0))
982982 then fraction(cs, gh, gg)
983983 else 0
984984 let gs = if ((gg != 0))
985985 then fraction(cs, (C - fY), C)
986986 else 0
987987 let gt = max([gr, gs])
988988 let gu = (cs - gt)
989989 [gt, gu]
990990 }
991991
992992 let gv = if ((bm == "outMulti"))
993993 then {
994994 let gw = split_4C(fl, "_")
995995 func gx (bY,bZ) = {
996996 let cb = split(bZ, A)
997997 let gy = fromBase58String(cb[0])
998998 let aK = if ((gy == F))
999999 then unit
10001000 else gy
10011001 let cr = parseIntValue(cb[2])
10021002 let cs = parseIntValue(cb[3])
10031003 let gz = gq(cs)
10041004 $Tuple5((bY._1 :+ ScriptTransfer(bH, cr, aK)), (bY._2 :+ AttachedPayment(aK, gz[0])), (bY._3 :+ AttachedPayment(aK, gz[1])), (bY._4 + gz[0]), (bY._5 + gz[1]))
10051005 }
10061006
10071007 let fQ = {
10081008 let cc = gw
10091009 let cd = size(cc)
10101010 let ce = $Tuple5(nil, nil, nil, 0, 0)
10111011 func cf (cg,ch) = if ((ch >= cd))
10121012 then cg
10131013 else gx(cg, cc[ch])
10141014
10151015 func ci (cg,ch) = if ((ch >= cd))
10161016 then cg
10171017 else throw("List size exceeds 10")
10181018
10191019 ci(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(ce, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10201020 }
10211021 let gA = gj(fQ._4, fQ._5, fQ._2, fQ._3)
10221022 $Tuple2(fQ._1, gA)
10231023 }
10241024 else {
10251025 let gz = gq(dp)
10261026 let gA = gj(gz[0], gz[1], [AttachedPayment(fd, gz[0])], [AttachedPayment(fd, gz[1])])
10271027 $Tuple2([ScriptTransfer(bH, do, fd)], gA)
10281028 }
10291029 $Tuple2((gi ++ gv._1), gv._2)
10301030 }
10311031 else throw("Strict value is not equal to itself.")
10321032 }
10331033 else throw("Strict value is not equal to itself.")
10341034 }
10351035 }
10361036 }
10371037 }
10381038
10391039
10401040
10411041 @Callable(r)
10421042 func internalUnleaseAndLease (dV) = if ((r.caller != this))
10431043 then throw("internalUnleaseAndLease is not public method")
10441044 else ee(dV)
10451045
10461046
10471047
10481048 @Callable(r)
10491049 func transferUsdnToUser (bK,gB) = if ((r.caller != aw))
10501050 then throw("Only auction contract is authorized")
10511051 else [ScriptTransfer(addressFromStringValue(gB), bK, cJ)]
10521052
10531053
10541054
10551055 @Callable(r)
10561056 func acceptWaves () = if (if ((r.caller != aw))
10571057 then (r.caller != ay)
10581058 else false)
10591059 then throw("Currently only auction and governance contracts are allowed to call")
10601060 else $Tuple2(ee(0), "success")
10611061
10621062
10631063
10641064 @Callable(r)
10651065 func approveLeasings (gC,bk,gD) = {
10661066 let gE = [0, 1, 2, 3, 4, 5, 6, 7]
10671067 let gF = valueOrElse(getString("%s%s__cfg__leasingManagerPub"), "7AUMX54ukYMYvPmma7yoFf5NjZhs4Bu5nz3Ez9EV8sur")
10681068 let gG = fromBase58String(gF)
10691069 let gH = valueOrElse(getString("%s%s__cfg__nodesRegistryAddress"), "3P9vKqQKjUdmpXAfiWau8krREYAY1Xr69pE")
10701070 let gI = addressFromStringValue(gH)
10711071 let gJ = bj(bk)
10721072 let gK = getString(this, gJ)
10731073 if (isDefined(gK))
10741074 then throw((("group " + toString(bk)) + " already initialized"))
10751075 else {
10761076 let gL = split(gC, z)
10771077 let gM = size(gE)
10781078 if ((r.callerPublicKey != gG))
10791079 then throw("approveLeasings not authorized")
10801080 else {
10811081 let gN = em(0)
10821082 let gO = gN._1
10831083 let gP = gN._2
10841084 let gQ = gN._3
10851085 let gR = gN._4
10861086 let gS = gN._5
10871087 let gT = Lease(gO, (gQ - (gD * gM)))
10881088 let gU = invoke(gI, "validateAndApproveLeasings", [gC], nil)
10891089 if ((gU == gU))
10901090 then {
10911091 func gV (dR,r) = {
10921092 let gW = gL[r]
10931093 let gX = Lease(addressFromStringValue(gW), gD)
10941094 (dR ++ [gX, BinaryEntry(bf(gW), d(gX)), IntegerEntry(bi(gW), gD)])
10951095 }
10961096
10971097 ([StringEntry(gJ, gC), BinaryEntry(gR, d(gT)), IntegerEntry(gP, gT.amount), LeaseCancel(gS), gT] ++ {
10981098 let cc = gE
10991099 let cd = size(cc)
11001100 let ce = nil
11011101 func cf (cg,ch) = if ((ch >= cd))
11021102 then cg
11031103 else gV(cg, cc[ch])
11041104
11051105 func ci (cg,ch) = if ((ch >= cd))
11061106 then cg
11071107 else throw("List size exceeds 8")
11081108
11091109 ci(cf(cf(cf(cf(cf(cf(cf(cf(ce, 0), 1), 2), 3), 4), 5), 6), 7), 8)
11101110 })
11111111 }
11121112 else throw("Strict value is not equal to itself.")
11131113 }
11141114 }
11151115 }
11161116
11171117
11181118
11191119 @Callable(r)
11201120 func rebalanceLeasings (bK,bk) = {
11211121 let gE = [0, 1, 2, 3, 4, 5, 6, 7]
11221122 let gF = valueOrElse(getString("%s%s__cfg__leasingManagerPub"), "7AUMX54ukYMYvPmma7yoFf5NjZhs4Bu5nz3Ez9EV8sur")
11231123 let gG = fromBase58String(gF)
11241124 let gJ = bj(bk)
11251125 let gC = a(this, gJ)
11261126 let gL = split(gC, z)
11271127 if ((r.callerPublicKey != gG))
11281128 then throw("rebalanceLeasings not authorized")
11291129 else {
11301130 let fg = ((bK / size(gL)) + 1)
11311131 let gY = em(0)
11321132 let gO = gY._1
11331133 let gP = gY._2
11341134 let gQ = gY._3
11351135 let gR = gY._4
11361136 let gS = gY._5
11371137 let gT = Lease(gO, (gQ + (fg * size(gL))))
11381138 func gZ (dR,r) = {
11391139 let gW = gL[r]
11401140 let ha = bf(gW)
11411141 let hb = getBinaryValue(this, ha)
11421142 let hc = bi(gW)
11431143 let gD = getIntegerValue(this, hc)
11441144 let hd = LeaseCancel(value(hb))
11451145 let gX = Lease(addressFromStringValue(gW), (gD - fg))
11461146 (dR ++ [LeaseCancel(value(hb)), gX, BinaryEntry(ha, d(gX)), IntegerEntry(hc, gX.amount)])
11471147 }
11481148
11491149 ({
11501150 let cc = gE
11511151 let cd = size(cc)
11521152 let ce = nil
11531153 func cf (cg,ch) = if ((ch >= cd))
11541154 then cg
11551155 else gZ(cg, cc[ch])
11561156
11571157 func ci (cg,ch) = if ((ch >= cd))
11581158 then cg
11591159 else throw("List size exceeds 8")
11601160
11611161 ci(cf(cf(cf(cf(cf(cf(cf(cf(ce, 0), 1), 2), 3), 4), 5), 6), 7), 8)
11621162 } ++ [BinaryEntry(gR, d(gT)), IntegerEntry(gP, gT.amount), LeaseCancel(gS), gT])
11631163 }
11641164 }
11651165
11661166
11671167
11681168 @Callable(r)
11691169 func swapParamsByUserSYSREADONLY (eu,he) = {
11701170 let gf = l(invoke(av, "gnsbtInfoSYSREADONLY", [eu, 0, 0], nil))
11711171 let hf = (q(gf[0]) + he)
11721172 let gg = (q(gf[1]) + he)
11731173 let hg = l(invoke(as, "calcSwapLimitREADONLY", [hf], nil))
11741174 let hh = q(hg[0])
11751175 let eA = q(hg[2])
11761176 let hi = valueOrElse(getInteger(this, bI(eu)), 0)
11771177 let hj = bB()
11781178 let hk = (height - hi)
11791179 let hl = (hk >= hj)
11801180 let hm = if (hl)
11811181 then 0
11821182 else valueOrElse(getInteger(this, bG(eu)), 0)
11831183 let ez = if (hl)
11841184 then 0
11851185 else (hj - hk)
11861186 $Tuple2(nil, $Tuple7(hh, hm, ez, hf, gg, 0, eA))
11871187 }
11881188
11891189
11901190
11911191 @Callable(r)
11921192 func calcWithdrawResultSYSREADONLY (bm,bS,bL,bT) = {
11931193 let eH = l(invoke(as, "calcNeutinoMetricsREADONLY", nil, nil))
11941194 $Tuple2(nil, fb(bm, bS, bL, eH, bT))
11951195 }
11961196
11971197
11981198
11991199 @Callable(r)
12001200 func replaceCommunityNode (hn,ho,bk,hp) = {
12011201 let gF = valueOrElse(getString("%s%s__cfg__leasingManagerPub"), "7AUMX54ukYMYvPmma7yoFf5NjZhs4Bu5nz3Ez9EV8sur")
12021202 let gG = fromBase58String(gF)
12031203 if ((r.callerPublicKey != gG))
12041204 then throw("replaceCommunityNode not authorized")
12051205 else {
12061206 let hq = bj(bk)
12071207 let hr = a(this, hq)
12081208 if (!(contains(hr, hn)))
12091209 then throw(((("Group " + toString(bk)) + " does not contain address ") + hn))
12101210 else {
12111211 let hs = invoke(ax, "replaceApprovedNode", [hn, ho, bk, hp], nil)
12121212 if ((hs == hs))
12131213 then {
12141214 let ht = bf(hn)
12151215 let hu = bi(hn)
12161216 let hv = getIntegerValue(hu)
12171217 let hw = bf(ho)
12181218 let hx = bi(ho)
12191219 let hy = Lease(addressFromStringValue(ho), hv)
12201220 let hz = makeString(split(hr, hn), ho)
12211221 $Tuple2([LeaseCancel(getBinaryValue(ht)), DeleteEntry(ht), DeleteEntry(hu), StringEntry(hq, hz), hy, BinaryEntry(hw, d(hy)), IntegerEntry(hx, hv)], unit)
12221222 }
12231223 else throw("Strict value is not equal to itself.")
12241224 }
12251225 }
12261226 }
12271227
12281228
12291229 @Verifier(cR)
12301230 func hA () = {
12311231 let hB = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], z)
12321232 let hC = split(valueOrElse(getString(ar, "%s__multisig"), hB), z)
12331233 let hD = ((((if (sigVerify(cR.bodyBytes, cR.proofs[0], fromBase58String(hC[0])))
12341234 then 1
12351235 else 0) + (if (sigVerify(cR.bodyBytes, cR.proofs[1], fromBase58String(hC[1])))
12361236 then 1
12371237 else 0)) + (if (sigVerify(cR.bodyBytes, cR.proofs[2], fromBase58String(hC[2])))
12381238 then 1
12391239 else 0)) + (if (sigVerify(cR.bodyBytes, cR.proofs[3], fromBase58String(hC[3])))
12401240 then 2
12411241 else 0))
12421242 if (if (cK)
12431243 then (getStringValue(ar, "is_blocked_caller") == toString(ay))
12441244 else false)
12451245 then fq(cR)
12461246 else {
12471247 let n = cR
12481248 if ($isInstanceOf(n, "SponsorFeeTransaction"))
12491249 then {
12501250 let hE = n
12511251 if (cQ(hE))
12521252 then (hD >= 3)
12531253 else false
12541254 }
12551255 else (hD >= 3)
12561256 }
12571257 }
12581258

github/deemru/w8io/026f985 
109.55 ms