tx · Bfj4CGcSBE6igtCWTR6bWoFAzFFfUhGeYxT3zqhdtWz2

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02600000 Waves

2023.10.11 06:31 [2793426] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "Bfj4CGcSBE6igtCWTR6bWoFAzFFfUhGeYxT3zqhdtWz2", "fee": 2600000, "feeAssetId": null, "timestamp": 1696995071924, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "3NesUcRzxD48J2Fuk8Nod7Lb6mj5PNWexSgVP1UnnmMvHVFWctYkqSxhE2epupy2rvnh9LnFvCF4DhB1VNVXkuiN" ], "script": "base64:BgJeCAISBAoCCAgSDgoMCAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICFsAB1ZFUlNJT04CBTIuMC4wAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1bml0VGVzdAcACW9yYWNsZUZlZQkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX29yYWNsZV9mZWUACHNpZ25EYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECEWNvbmZfc2lnbndlYl9kYXBwAAtmZWVSZWNlaXZlcgkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9mZWVfcmVjZWl2ZXIACHVzZXJEYXBwAwUIdW5pdFRlc3QJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIPY29uZl91c2Vyc19kYXBwAA13aGl0ZWxpc3REYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECE2NvbmZfd2hpdGVsaXN0X2RhcHAAD3B1enpsZV9hcnRfcG9vbAkBDmdldFN0cmluZ0J5S2V5AQIUY29uZl9wdXp6bGVfYXJ0X3Bvb2wAEXVzZHRQUEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhtjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRFRfUFAADmFydEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhdjb25mX2FjY2VwdGVkX2Fzc2V0X0FSVAARdXNkY1BQQXNzZXRJZF9zdHIJAQ5nZXRTdHJpbmdCeUtleQECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEQ19QUAAPZWFzdEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X0VBU1QAEXB1enpsZUFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X1BVWlpMRQAQZXRoUFBBc3NldElkX3N0cgkBDmdldFN0cmluZ0J5S2V5AQIaY29uZl9hY2NlcHRlZF9hc3NldF9FVEhfUFAAEHdhdmVzQXNzZXRJZF9zdHICBVdBVkVTAA11c2R0UFBBc3NldElkCQDZBAEFEXVzZHRQUEFzc2V0SWRfc3RyAAphcnRBc3NldElkCQDZBAEFDmFydEFzc2V0SWRfc3RyAA11c2RjUFBBc3NldElkCQDZBAEFEXVzZGNQUEFzc2V0SWRfc3RyAAtlYXN0QXNzZXRJZAkA2QQBBQ9lYXN0QXNzZXRJZF9zdHIADXB1enpsZUFzc2V0SWQJANkEAQURcHV6emxlQXNzZXRJZF9zdHIADGV0aFBQQXNzZXRJZAkA2QQBBRBldGhQUEFzc2V0SWRfc3RyAAx3YXZlc0Fzc2V0SWQBAAATYWxsX2FjY2VwdGVkX2Fzc2V0cwkAzAgCBRF1c2R0UFBBc3NldElkX3N0cgkAzAgCBQ5hcnRBc3NldElkX3N0cgkAzAgCBRF1c2RjUFBBc3NldElkX3N0cgkAzAgCBQ9lYXN0QXNzZXRJZF9zdHIJAMwIAgURcHV6emxlQXNzZXRJZF9zdHIJAMwIAgUQd2F2ZXNBc3NldElkX3N0cgkAzAgCBRBldGhQUEFzc2V0SWRfc3RyBQNuaWwABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEOY2hlY2tXaGl0ZWxpc3QBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ13aGl0ZWxpc3REYXBwBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwAOY29tbWlzc2lvbl9mZWUACAAOZGVmYXVsdExpY2VuY2UJAQ5nZXRTdHJpbmdCeUtleQECFGNvbmZfZGVmYXVsdF9saWNlbmNlABJkZWZhdWx0SGFzaExpY2VuY2UJAQ5nZXRTdHJpbmdCeUtleQECGWNvbmZfZGVmYXVsdF9saWNlbmNlX2hhc2gAC2RhcHBSdW5uaW5nCQELdmFsdWVPckVsc2UCCQCbCAIFCHVzZXJEYXBwAhRjb25mX2RhcHBfaXNfcnVubmluZwYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwAhRjb25mX21haW50ZW5hbmNlX21zZwIAAA11c2VyU3VzcGVuZGVkAglTVVNQRU5ERUQAC3VzZXJSZW1vdmVkAgdSRU1PVkVEABB1c2VyVW5yZWdpc3RlcmVkAgxVTlJFR0lTVEVSRUQAC3VzZXJBbGxvd2VkAgdBTExPV0VEABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEFCmFydEFzc2V0SWQACG1pbnRfZmVlCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEJAKwCAgIJbWludF9mZWVfCQDYBAEFCmFydEFzc2V0SWQBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkA6AcBC3ZhbGlkYXRlQ0lEAQNjaWQDCQEIY29udGFpbnMCBQNjaWQCAS8DAwkAZgIATAkAsQIBBQNjaWQJAAACCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAAA7BwkAZgIAEAkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAEHBwEMdmFsaWRhdGVIYXNoAQRoYXNoCQAAAgkAsQIBBQRoYXNoAEABDWtleVVzZXJTdGF0dXMBBmNhbGxlcgkArAICAgx1c2VyX3N0YXR1c18FBmNhbGxlcgEHa2V5RGF0ZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZGF0ZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleU5hbWUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X25hbWVfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlEZXNjAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kZXNjXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5RGlzcGxheUNpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfZGlzcGxheV9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlFeHBvcnRIYXNoAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9leHBvcnRfaGFzaF8FBWFydElkAgFfBQZjYWxsZXIBDGtleUV4cG9ydENpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBCmtleU1heE1pbnQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlTaWduSUQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X3NpZ25pZF8FBWFydElkAgFfBQZjYWxsZXIBCWtleUlzc3VlZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfaXNzdWVkXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5T25TYWxlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQVhcnRJZAIBXwUGY2FsbGVyAQ5rZXlMaWNlbmNlSGFzaAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhFhcnRfbGljZW5jZV9oYXNoXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5TGljZW5jZUNpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUYWdzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90YWdzXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5VHlwZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfdHlwZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleU5vdGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlDcmF3bGVyAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9jcmF3bGVyX2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDGtleVJveWFsdGllcwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUFYXJ0SWQCAV8FBmNhbGxlcgEIa2V5UHJpY2UCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5RW5kU2FsZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfZW5kc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBEmtleUFzc2V0SWRBY2NlcHRlZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FBWFydElkAgFfBQZjYWxsZXIBB2tleUZsYWcCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2ZsYWdfBQVhcnRJZAIBXwUGY2FsbGVyARJrZXlBcnRpc3RBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgINYXJ0aXN0X2FnZW50XwUKYXJ0aXN0QWRkcgEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQphcnRpc3RBZGRyARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgIUYXJ0aXN0X3B1YmxpY19hZ2VudF8FCmFydGlzdEFkZHIBGmtleVByaW1hcnlTaGFyZVB1YmxpY0FnZW50AQphcnRpc3RBZGRyCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBEWtleUhhc2hCeVR4aWRBZGRyAgZjYWxsZXIEdHhpZAkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUEdHhpZAIBXwUGY2FsbGVyAQ5rZXlPd25lckJ5SGFzaAEKc2hhMjU2SGFzaAkArAICAhJnZXRfb3duZXJfYnlfaGFzaF8FCnNoYTI1Nkhhc2gBDWtleWlkQnlTaWduaWQCBmNhbGxlcgZzaWduSWQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUGc2lnbklkAgFfBQZjYWxsZXIBDnZhbGlkYXRlQWxsQ0lEAwpjaWREaXNwbGF5CWNpZEV4cG9ydApjaWRMaWNlbmNlAwkBASEBCQELdmFsaWRhdGVDSUQBBQpjaWREaXNwbGF5CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCWNpZEV4cG9ydAkAAgECEFdyb25nIEV4cG9ydCBDSUQDAwkBAiE9AgUKY2lkTGljZW5jZQIACQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZExpY2VuY2UHCQACAQIRV3JvbmcgTGljZW5jZSBDSUQGAQ92YWxpZGF0ZUFsbEhhc2gCDHNoYTI1NkV4cG9ydA1zaGEyNTZMaWNlbmNlAwkBASEBCQEMdmFsaWRhdGVIYXNoAQUMc2hhMjU2RXhwb3J0CQACAQIYRXhwb3J0IEhhc2ggNjQgY2hhci4gbWF4AwkBASEBCQEMdmFsaWRhdGVIYXNoAQUNc2hhMjU2TGljZW5jZQkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQ52YWxpZGF0ZVN0cmluZwIDc3RyA21heAMJAAACCQCxAgEFA3N0cgAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUDc3RyBQNtYXgJAAIBCQCsAgIFA3N0cgIMIGlzIHRvbyBsb25nBgEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwMJAAACBQp1c2VyU3RhdHVzBRB1c2VyVW5yZWdpc3RlcmVkBgkAAAIFCnVzZXJTdGF0dXMFC3VzZXJBbGxvd2VkAi5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAIFCnVzZXJTdGF0dXMFDXVzZXJTdXNwZW5kZWQCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFCnVzZXJTdGF0dXMFC3VzZXJSZW1vdmVkAg9BY2NvdW50IHJlbW92ZWQCAAEKc2V0TEljZW5jZQIKY2lkTGljZW5jZQ1zaGEyNTZMaWNlbmNlBANjaWQDCQAAAgkAsQIBBQpjaWRMaWNlbmNlAAAFDmRlZmF1bHRMaWNlbmNlBQpjaWRMaWNlbmNlBARoYXNoAwkAAAIJALECAQUNc2hhMjU2TGljZW5jZQAABRJkZWZhdWx0SGFzaExpY2VuY2UFDXNoYTI1NkxpY2VuY2UJAJQKAgUDY2lkBQRoYXNoARN2YWxpZGF0ZUFydHdvcmtEYXRhCgZjYWxsZXIKY2lkRGlzcGxheQljaWRFeHBvcnQKbGljZW5jZUNJRAxzaGEyNTZFeHBvcnQLbGljZW5jZUhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzCXJveWFsdGllcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQ52YWxpZGF0ZUFsbENJRAMFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAkAAgECEFByb2JsZW0gd2l0aCBDSUQDCQEBIQEJAQ92YWxpZGF0ZUFsbEhhc2gCBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQBkCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUDCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguAgABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEPdmFsaWRhdGVQYXltZW50AQFpBA0kdDAxMDE1NjEwMTkyCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwMTU2MTAxOTICXzEEBmFtb3VudAgFDSR0MDEwMTU2MTAxOTICXzIEB2Fzc2V0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAACCAUHcGF5bWVudAdhc3NldElkBQphcnRBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECK09ubHkgU0lHTiB0b2tlbiBhY2NlcHRlZCBhcyB0cmFuc2FjdGlvbiBmZWUDCQECIT0CBQZhbW91bnQFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkAlAoCBQZhbW91bnQFB2Fzc2V0SWQBC2lzQXJ0TWludGVkAglhZGRyVG9Vc2UFYXJ0SWQEByRtYXRjaDAJAJoIAgUEdGhpcwkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwAwkBAiE9AgUBYgAABgcHARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMBaQxwcmljZUFzc2V0SWQMYXJ0d29ya1ByaWNlBA0kdDAxMDc3OTEwODE1CQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwNzc5MTA4MTUCXzEEBmFtb3VudAgFDSR0MDEwNzc5MTA4MTUCXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFDHByaWNlQXNzZXRJZAAACQAAAgkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBQxwcmljZUFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFB2Fzc2V0SWQFBHVuaXQJAQIhPQIFDHByaWNlQXNzZXRJZAIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUMYXJ0d29ya1ByaWNlBQZhbW91bnQJAAIBAhNQYXltZW50IGRvbid0IG1hdGNoCQCUCgIFBmFtb3VudAUHYXNzZXRJZAEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFE2FsbF9hY2NlcHRlZF9hc3NldHMFB2Fzc2V0SWQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkBgEPdmFsaWRhdGVNaW5TZWxsAQVwcmljZQMJAGcCAAAFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBgENZ2V0QmlkQXNzZXRJZAEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAQpiaWREYXRhS2V5BAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQJYmlkQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBApiaWRBc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAAAwkAZwIAAAUJYmlkQW1vdW50CQACAQIMV3JvbmcgYW1vdW50CQCUCgIFCWJpZEFtb3VudAUKYmlkQXNzZXRJZAEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgFpBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQLaXNTcG9uc29yZWQDCQECIT0CBQZwdWJLZXkCAAkBC3ZhbHVlT3JFbHNlAgkBDmNoZWNrV2hpdGVsaXN0AQkArAICCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkCCV9mcmVlX3R4cwAAAAAEBmNhbGxlcgMDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAGYCBQtpc1Nwb25zb3JlZAAABwkApQgBCQCnCAEJANkEAQUGcHViS2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEE2dldF9zcG9uc29yZWRfd2F2ZXMDAwkBAiE9AgUGcHViS2V5AgAJAGYCBQtpc1Nwb25zb3JlZAAABwkA/AcEBQ13aGl0ZWxpc3REYXBwAgl1c2VGcmVlVHgJAMwIAgkApQgBCQCnCAEJANkEAQUGcHViS2V5BQNuaWwFA25pbAUEdW5pdAMJAAACBRNnZXRfc3BvbnNvcmVkX3dhdmVzBRNnZXRfc3BvbnNvcmVkX3dhdmVzCQCWCgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUGY2FsbGVyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZgIFC2lzU3BvbnNvcmVkAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA8AcCBQR0aGlzBQFiCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQEHYnV5TWludAYBaQVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIGcHViS2V5BA0kdDAxMzQyMDEzNTA5CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDEzNDIwMTM1MDkCXzEEBmNhbGxlcggFDSR0MDEzNDIwMTM1MDkCXzIEBGRhdGUIBQ0kdDAxMzQyMDEzNTA5Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDEzNDIwMTM1MDkCXzQEBWlzQmlkAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwYHAwMFBWlzQmlkCQECIT0CBQZjYWxsZXIFBmlzc3VlcgcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAMDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQEBIQEFBWlzQmlkBwkAAgECC1NhbGUgZW5kZWQuBA5jYWxsZXJJc0lzc3VlcgkAAAIFBmNhbGxlcgUGaXNzdWVyBAh0b3RhbE5GVAkBD2dldEludGVnZXJCeUtleQECEHRvdGFsX25mdF9pc3N1ZWQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAhpc09uU2FsZQkBD2dldEJvb2xlYW5CeUtleQEJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQEDGFydHdvcmtQcmljZQMFDmNhbGxlcklzSXNzdWVyBQhtaW50X2ZlZQkBD2dldEludGVnZXJCeUtleQEJAQhrZXlQcmljZQIFBmlzc3VlcgUFYXJ0SWQEDHByaWNlQXNzZXRJZAMFDmNhbGxlcklzSXNzdWVyCQDYBAEFCmFydEFzc2V0SWQJAQ5nZXRTdHJpbmdCeUtleQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZpc3N1ZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZpc3N1ZXIFBWFydElkAwMDCQEBIQEFBWlzQmlkCQEBIQEFDmNhbGxlcklzSXNzdWVyBwMDCQBnAgAABQxhcnR3b3JrUHJpY2UGCQEBIQEFCGlzT25TYWxlBgkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFBWlzQmlkBQ5jYWxsZXJJc0lzc3VlcgcJAGcCAAAFCm1heENhblNlbGwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmlzc3VlcgMDBQVpc0JpZAkBAiE9AgUJY2hlY2tVc2VyAgAHCQACAQUJY2hlY2tVc2VyBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQNJHQwMTUwODYxNTI3OAMFBWlzQmlkCQEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEFCmJpZERhdGFLZXkJARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMFAWkFDHByaWNlQXNzZXRJZAUMYXJ0d29ya1ByaWNlBAZhbW91bnQIBQ0kdDAxNTA4NjE1Mjc4Al8xBAdhc3NldElkCAUNJHQwMTUwODYxNTI3OAJfMgQFYWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBBQZpc3N1ZXIAAAQLcHVibGljQWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBBBwdWJsaWNBZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBBQZpc3N1ZXIAAAQNaXNXaGl0ZWxpc3RlZAkBDmNoZWNrV2hpdGVsaXN0AQUGaXNzdWVyBA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQ5jb21taXNzaW9uX2ZlZQBkBA5hbW91bnRGb3JBZ2VudAMDAwkBAiE9AgUFYWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUKYWdlbnRTaGFyZQAABwkAZgIFBmhlaWdodAUNaXNXaGl0ZWxpc3RlZAcJAGsDBQZhbW91bnQFCmFnZW50U2hhcmUAkE4AAAQUYW1vdW50Rm9yUHVibGljQWdlbnQDAwMJAQIhPQIFC3B1YmxpY0FnZW50BQtmZWVSZWNlaXZlcgkAZgIFEHB1YmxpY0FnZW50U2hhcmUAAAcJAGYCBQZoZWlnaHQFDWlzV2hpdGVsaXN0ZWQHCQBrAwUGYW1vdW50BRBwdWJsaWNBZ2VudFNoYXJlAJBOAAAEEGFtb3VudEZvckNyZWF0b3IJAGUCBQZhbW91bnQFDWFtb3VudEZvclNpZ24DCQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECDEFydCBzb2xkIG91dAQNbmV3QW1vdW50U29sZAkAZAIFCmFtb3VudFNvbGQAAQQJaXNzdWVNZXRhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglDcmVhdG9yOiAFBmlzc3VlcgIKLAogQXJ0SUQ6IAUFYXJ0SWQCESwKIEFydHdvcmsgbmFtZTogBQthcnR3b3JrTmFtZQIKLAogSXNzdWU6IAkApAMBBQ1uZXdBbW91bnRTb2xkAgEvCQCkAwEFCm1heENhblNlbGwECGlzc3VlTkZUCQDCCAUJAKwCAgIDU0FfCQCkAwEJAGQCBQh0b3RhbE5GVAABBQlpc3N1ZU1ldGEAAQAABwQFaWRORlQJALgIAQUIaXNzdWVORlQECnNlbGxTdGF0dXMDAwkAAAIFDW5ld0Ftb3VudFNvbGQFCm1heENhblNlbGwGCQEBIQEFCGlzT25TYWxlBwYECnJlY2VpdmVORlQDAwMJAAACBQZjYWxsZXIFBmlzc3VlcgkBAiE9AgUIYmlkT3duZXICAAcJAQIhPQIFBWJpZElkAgAHCQERQGV4dHJOYXRpdmUoMTA2MikBBQhiaWRPd25lcggFAWkGY2FsbGVyBAphc3NldElkQmlkAwkBASEBCQEJaXNEZWZpbmVkAQUHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQUHYXNzZXRJZAQHYmlkRGF0YQkBDmdldFN0cmluZ0J5S2V5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgQJYmlkRGVsT2xkCQELRGVsZXRlRW50cnkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWRVcGRhdGUJAQtTdHJpbmdFbnRyeQIJAKwCAgUKYmlkRGF0YUtleQIHX0NMT1NFRAkArAICCQCsAgIFB2JpZERhdGECAV8JAKQDAQUEZGF0ZQQHc29sZEtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhcnRfc29sZF8JAKQDAQUNbmV3QW1vdW50U29sZAIEX29mXwkApAMBBQptYXhDYW5TZWxsAgFfBQVhcnRJZAIBXwUGaXNzdWVyBAlzb2xkVmFsdWUDCQEBIQEFBWlzQmlkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBmNhbGxlcgIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQxhcnR3b3JrUHJpY2UCAV8FDHByaWNlQXNzZXRJZAIBXwkA2AQBBQVpZE5GVAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEFCnJlY2VpdmVORlQCAV8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkQmlkAgFfCQDYBAEFBWlkTkZUBAhzb2xkRGF0YQkBC1N0cmluZ0VudHJ5AgUHc29sZEtleQUJc29sZFZhbHVlBCJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwAwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50BQ1hbW91bnRGb3JTaWduBBFhbW91bnRfYXJ0X2JlZm9yZQkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEWFtb3VudF9hcnRfYmVmb3JlBRFhbW91bnRfYXJ0X2JlZm9yZQMJAAACBQdhc3NldElkBQR1bml0CQACAQkApQMBCQEJaXNEZWZpbmVkAQUHYXNzZXRJZAQPc3dhcF9mZWVfdG9fYXJ0AwkBAiE9AgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkA/AcECQEHQWRkcmVzcwEJANkEAQUPcHV6emxlX2FydF9wb29sAgRzd2FwCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBSJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwBQNuaWwFBHVuaXQDCQAAAgUPc3dhcF9mZWVfdG9fYXJ0BQ9zd2FwX2ZlZV90b19hcnQEEGFtb3VudF9hcnRfYWZ0ZXIJAQpnZXRCYWxhbmNlAQUKYXJ0QXNzZXRJZAMJAAACBRBhbW91bnRfYXJ0X2FmdGVyBRBhbW91bnRfYXJ0X2FmdGVyBBRjb21taXNzaW9uc1dpdGhBZ2VudAMJAQIhPQIFDmFtb3VudEZvckFnZW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyAwkAAAIFB2Fzc2V0SWQFCmFydEFzc2V0SWQJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAkAZQIFEGFtb3VudF9hcnRfYWZ0ZXIFEWFtb3VudF9hcnRfYmVmb3JlBQphcnRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQVhZ2VudAUOYW1vdW50Rm9yQWdlbnQFB2Fzc2V0SWQFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIDCQAAAgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAUNYW1vdW50Rm9yU2lnbgkAZQIFEGFtb3VudF9hcnRfYWZ0ZXIFEWFtb3VudF9hcnRfYmVmb3JlBQphcnRBc3NldElkBQNuaWwEGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50AwkBAiE9AgUUYW1vdW50Rm9yUHVibGljQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULcHVibGljQWdlbnQFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIJAGUCBRBhbW91bnRGb3JDcmVhdG9yBRRhbW91bnRGb3JQdWJsaWNBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIFEGFtb3VudEZvckNyZWF0b3IFB2Fzc2V0SWQFA25pbAQKdHhUb0NhbGxlcgMFC2lzU3BvbnNvcmVkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAAUEdW5pdAUDbmlsBQNuaWwEBmJ1eVJlcwkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQFDW5ld0Ftb3VudFNvbGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRuZnRfCQDYBAEFBWlkTkZUBQdzb2xkS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUIdG90YWxORlQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIFCGlzc3VlTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCnJlY2VpdmVORlQAAQUFaWRORlQFA25pbAUUY29tbWlzc2lvbnNXaXRoQWdlbnQFGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50BQp0eFRvQ2FsbGVyAwUFaXNCaWQJAMwIAgUIc29sZERhdGEJAMwIAgUJYmlkVXBkYXRlCQDMCAIFCWJpZERlbE9sZAUGYnV5UmVzCQDMCAIFCHNvbGREYXRhBQZidXlSZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAoGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBCmFkZEFydHdvcmsMBG5hbWULZGVzY3JpcHRpb24EdGFncwR0eXBlCmNpZERpc3BsYXkMc2hhMjU2RXhwb3J0CWNpZEV4cG9ydA1zaGEyNTZMaWNlbmNlCmNpZExpY2VuY2UHY3Jhd2xlcglyb3lhbHRpZXMGcHViS2V5BA0kdDAyMTYxMjIxNjg1CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAVhcnRJZAgFDSR0MDIxNjEyMjE2ODUCXzEEBmNhbGxlcggFDSR0MDIxNjEyMjE2ODUCXzIEBGRhdGUIBQ0kdDAyMTYxMjIxNjg1Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDIxNjEyMjE2ODUCXzQEDSR0MDIxNjk1MjE3NjQJAQpzZXRMSWNlbmNlAgUKY2lkTGljZW5jZQUNc2hhMjU2TGljZW5jZQQKbGljZW5jZUNJRAgFDSR0MDIxNjk1MjE3NjQCXzEEC2xpY2VuY2VIYXNoCAUNJHQwMjE2OTUyMTc2NAJfMgQPdmFsaWRhdGVBcnR3b3JrCQETdmFsaWRhdGVBcnR3b3JrRGF0YQoFBmNhbGxlcgUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lEBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoBQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUJcm95YWx0aWVzAwkBAiE9AgUPdmFsaWRhdGVBcnR3b3JrAgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEEHdoaXRlbGlzdGVkX2Ryb3AJAGYCCQEOY2hlY2tXaGl0ZWxpc3QBCQCsAgIFBmNhbGxlcgILX2ZyZWVfZHJvcHMAAAQNJHQwMjIwNjMyMjE1MQMFEHdoaXRlbGlzdGVkX2Ryb3AJAJQKAgAABQphcnRBc3NldElkCQEPdmFsaWRhdGVQYXltZW50AQUBaQQGYW1vdW50CAUNJHQwMjIwNjMyMjE1MQJfMQQHYXNzZXRJZAgFDSR0MDIyMDYzMjIxNTECXzIDCQEBIQEJAQlpc0RlZmluZWQBBQZhbW91bnQJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3ADBRB3aGl0ZWxpc3RlZF9kcm9wCQD8BwQFDXdoaXRlbGlzdERhcHACC3VzZUZyZWVEcm9wCQDMCAIFBmNhbGxlcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AFF2RlY3JlYXNlX3doaXRlbGlzdF9kcm9wBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5RGF0ZQIFBmNhbGxlcgUFYXJ0SWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQVhcnRJZAULZGVzY3JpcHRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleURpc3BsYXlDaWQCBQZjYWxsZXIFBWFydElkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFeHBvcnRDaWQCBQZjYWxsZXIFBWFydElkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBWFydElkBQxzaGEyNTZFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUxpY2VuY2VIYXNoAgUGY2FsbGVyBQVhcnRJZAULbGljZW5jZUhhc2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUxpY2VuY2VDaWQCBQZjYWxsZXIFBWFydElkBQpsaWNlbmNlQ0lECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQVhcnRJZAUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5VGFncwIFBmNhbGxlcgUFYXJ0SWQFBHRhZ3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5SXNzdWVkAgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGY2FsbGVyBQVhcnRJZAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUNyYXdsZXICBQZjYWxsZXIFBWFydElkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQVhcnRJZAUJcm95YWx0aWVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgUGYW1vdW50BQphcnRBc3NldElkBQNuaWwFCnR4VG9DYWxsZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdXBkYXRlQXJ0d29yaw0EdHhpZARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MEdHlwZQpjaWREaXNwbGF5DHNoYTI1NkV4cG9ydAljaWRFeHBvcnQNc2hhMjU2TGljZW5jZQpjaWRMaWNlbmNlB2NyYXdsZXIJcm95YWx0aWVzBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQNJHQwMjQwNjYyNDEzNgkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyNDA2NjI0MTM2Al8xBAZjYWxsZXIIBQ0kdDAyNDA2NjI0MTM2Al8yBARkYXRlCAUNJHQwMjQwNjYyNDEzNgJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyNDA2NjI0MTM2Al80BA0kdDAyNDE0NjI0MjE1CQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAyNDE0NjI0MjE1Al8xBAtsaWNlbmNlSGFzaAgFDSR0MDI0MTQ2MjQyMTUCXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUEdHhpZAMJAAACBQplbnRyeUV4aXN0AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQR0eGlkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBC2lzQXJ0TWludGVkAgUGY2FsbGVyBQR0eGlkBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQR0eGlkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUEdHhpZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQR0eGlkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBHR4aWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUEdHhpZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBHR4aWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQR0eGlkBQR0YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQR0eGlkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQR0eGlkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQR0eGlkBQlyb3lhbHRpZXMFA25pbAUKdHhUb0NhbGxlcgkAAgECDkFscmVhZHkgbWludGVkAWkBC2ZsYWdBcnR3b3JrBAVhcnRJZARhZGRyBGZsYWcEbm90ZQQNJHQwMjU4NDIyNTg3NgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjU4NDIyNTg3NgJfMQQGY2FsbGVyCAUNJHQwMjU4NDIyNTg3NgJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleUZsYWcCBQRhZGRyBQVhcnRJZAUEZmxhZwkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5Tm90ZQIFBGFkZHIFBWFydElkBQRub3RlBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQRmbGFnCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQ1kZWxldGVBcnR3b3JrAgVhcnRJZARhZGRyBA0kdDAyNjMxMjI2MzQ2CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyNjMxMjI2MzQ2Al8xBAZjYWxsZXIIBQ0kdDAyNjMxMjI2MzQ2Al8yBAlhZGRyVG9Vc2UDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBQRhZGRyBQZjYWxsZXIECmVudHJ5RXhpc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQlhZGRyVG9Vc2UFBWFydElkAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQplbnRyeUV4aXN0AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQKc2hhMjU2SGFzaAkBDmdldFN0cmluZ0J5S2V5AQkBEWtleUhhc2hCeVR4aWRBZGRyAgUJYWRkclRvVXNlBQVhcnRJZAQGc2lnbklEAwkBAiE9AgUKc2hhMjU2SGFzaAIACQEOZ2V0U3RyaW5nQnlLZXkBCQEJa2V5U2lnbklEAgUJYWRkclRvVXNlBQVhcnRJZAIABA1zaWduSURfbGVnYWN5AwkAAAIFBnNpZ25JRAIABQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleWlkQnlTaWduaWQCBQlhZGRyVG9Vc2UFBnNpZ25JRAUDbmlsBAxkYXRhVG9EZWxldGUJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5RGF0ZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleU5hbWUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlEZXNjAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5RGlzcGxheUNpZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleUV4cG9ydENpZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleUV4cG9ydEhhc2gCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ5rZXlMaWNlbmNlSGFzaAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleUxpY2VuY2VDaWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlUeXBlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5VGFncwIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleU1heE1pbnQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlTaWduSUQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlJc3N1ZWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlPblNhbGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlGbGFnAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEIa2V5UHJpY2UCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ5rZXlPd25lckJ5SGFzaAEFCnNoYTI1Nkhhc2gJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleUVuZFNhbGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlOb3RlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5Q3Jhd2xlcgIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleVJveWFsdGllcwIFCWFkZHJUb1VzZQUFYXJ0SWQFA25pbAUNc2lnbklEX2xlZ2FjeQMJAQEhAQkBC2lzQXJ0TWludGVkAgUJYWRkclRvVXNlBQVhcnRJZAMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwUMZGF0YVRvRGVsZXRlAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgUMZGF0YVRvRGVsZXRlCQACAQIoQXJ0IGFscmVhZHkgbWludGVkLCB5b3UgY2Fubm90IGRlbGV0ZSBpdAFpAQtzZWxsQXJ0d29yawYFYXJ0SWQFcHJpY2UHbWF4TWludAdhc3NldElkCGJsb2NrRW5kBnB1YktleQQNJHQwMjkxMjUyOTE5NQkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyOTEyNTI5MTk1Al8xBAZjYWxsZXIIBQ0kdDAyOTEyNTI5MTk1Al8yBARkYXRlCAUNJHQwMjkxMjUyOTE5NQJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyOTEyNTI5MTk1Al80BAthcnR3b3JrTmFtZQkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkAwkAAAIFC2FydHdvcmtOYW1lAgAJAAIBAiNUaGlzIGFydCBkb2Vzbid0IG1hdGNoIHlvdXIgYWNjb3VudAQEZmxhZwkBDmdldFN0cmluZ0J5S2V5AQkBB2tleUZsYWcCBQZjYWxsZXIFBWFydElkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQRmbGFnCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQBmAgAABQhibG9ja0VuZAkAAgECDE5lZ2F0aXZlIGVuZAMDCQBmAgUIYmxvY2tFbmQAAAMJAQIhPQIFB21heE1pbnQAAQYJAQIhPQIFBXByaWNlAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQKYmFzZUhlaWdodAMJAAACBQhibG9ja0VuZAAAAAAFBmhlaWdodAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUFcHJpY2UJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmNhbGxlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQDCQBmAgUHbWF4TWludABkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQphbW91bnRTb2xkAAAJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQphbW91bnRTb2xkAAAJAQIhPQIFCm1heENhblNlbGwFB21heE1pbnQHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFBmJpZE5icgAACQECIT0CBQptYXhDYW5TZWxsBQdtYXhNaW50BwkAAgECMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMECnNlbGxTdGF0dXMDAwkAZgIFBXByaWNlAAAJAGYCBQdtYXhNaW50AAAHBgcECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEIa2V5UHJpY2UCBQZjYWxsZXIFBWFydElkBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkBQdtYXhNaW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZjYWxsZXIFBWFydElkBQdhc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5RW5kU2FsZQIFBmNhbGxlcgUFYXJ0SWQJAGQCBQpiYXNlSGVpZ2h0BQhibG9ja0VuZAUDbmlsBQp0eFRvQ2FsbGVyAWkBCmJ1eUFydHdvcmsCBWFydElkBmlzc3VlcgkBB2J1eU1pbnQGBQFpBQVhcnRJZAUGaXNzdWVyAgACAAIAAWkBBnNldEJpZAIFYXJ0SWQGaXNzdWVyBA0kdDAzMTU2ODMxNjA4CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAzMTU2ODMxNjA4Al8xBAZjYWxsZXIIBQ0kdDAzMTU2ODMxNjA4Al8yBARkYXRlCAUNJHQwMzE1NjgzMTYwOAJfMwQNJHQwMzE2MTMzMTY0OQkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAzMTYxMzMxNjQ5Al8xBAZhbW91bnQIBQ0kdDAzMTYxMzMxNjQ5Al8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQIYmxvY2tFbmQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5RW5kU2FsZQIFBmlzc3VlcgUFYXJ0SWQDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQACAQILU2FsZSBlbmRlZC4EBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUGYW1vdW50CQACAQIOV3JvbmcgbWluIHNlbGwECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAMJAGcCAAAFCm1heENhblNlbGwJAAIBAiNObyBtYXggZWRpdGlvbiBzZXQgZm9yIHRoaXMgYXJ0d29yawMJAGcCBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQZjYWxsZXICAV8FAmlkAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQdhc3NldElkAgFfCQCkAwEFBmFtb3VudAIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGQCBQZiaWROYnIAAQUDbmlsAWkBCWFjY2VwdEJpZAUFYXJ0SWQGaXNzdWVyBWJpZElkCGJpZE93bmVyBnB1YktleQkBB2J1eU1pbnQGBQFpBQVhcnRJZAUGaXNzdWVyBQViaWRJZAUIYmlkT3duZXIFBnB1YktleQFpAQljYW5jZWxCaWQEBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMzI5NzMzMzAzNAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzI5NzMzMzAzNAJfMQQGY2FsbGVyCAUNJHQwMzI5NzMzMzAzNAJfMgQEZGF0ZQgFDSR0MDMyOTczMzMwMzQCXzMDAwkBAiE9AgUGY2FsbGVyBQhiaWRPd25lcgkBAiE9AgUGY2FsbGVyBQZpc3N1ZXIHCQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgQNcmV0dXJuTW9uZXlUbwMJAAACBQZjYWxsZXIFBmlzc3VlcgUIYmlkT3duZXIFBmNhbGxlcgQGYmlkTmJyCQEPZ2V0SW50ZWdlckJ5S2V5AQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQHYmlkRGF0YQkBDmdldFN0cmluZ0J5S2V5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg1CaWQgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8EB2Fzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAAECWJpZFN0YXR1cwIIQ0FOQ0VMRUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUKYmlkRGF0YUtleQIBXwUJYmlkU3RhdHVzCQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGUCBQZiaWROYnIAAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUNcmV0dXJuTW9uZXlUbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQUHYXNzZXRJZAUDbmlsAQJ0eAEIdmVyaWZpZXIABAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQDaW52BQckbWF0Y2gwAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CCmFkZEFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MACwMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAg11cGRhdGVBcnR3b3JrCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAwDAwMDCQAAAggFA2ludghmdW5jdGlvbgILc2VsbEFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MABQMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAglhY2NlcHRCaWQJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAMgTAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MABAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleU90X5Y=", "height": 2793426, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ExxjPm3PpTgxtiDQwf1UASpVBpqznK9wcTCVCXZzWskQ Next: CYdz1npivyr13VFdTAFANfc61i6idSXLZfqTNesn9VH8 Diff:
OldNewDifferences
514514 then ((((((((((V + "_") + toString(bJ)) + "_") + bI) + "_") + toString(bl)) + "_") + bk) + "_") + toBase58String(cf))
515515 else ((((((((((toString(ch) + "_") + toString(bJ)) + "_") + bI) + "_") + toString(bb)) + "_") + ci) + "_") + toBase58String(cf))
516516 let cn = StringEntry(cl, cm)
517- if ((be == unit))
518- then throw(toString(isDefined(be)))
519- else {
520- let co = if ((bZ != 0))
521- then (bY - bZ)
522- else bY
523- let cp = bC(s)
524- if ((cp == cp))
525- then {
526- let cq = if ((be != s))
527- then invoke(Address(fromBase58String(j)), "swap", [l, 1], [AttachedPayment(be, co)])
528- else unit
529- if ((cq == cq))
530- then {
531- let cr = bC(s)
532- if ((cr == cr))
533- then {
534- let cs = if ((bZ != 0))
535- then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
536- then (bY - bZ)
537- else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
538- else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
539- then bY
540- else (cr - cp), s)]
541- let ct = if ((ca != 0))
542- then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
543- else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
544- let cu = if (bz)
545- then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
546- else nil
547- let cv = ((([IntegerEntry(af(bE, X), cc), StringEntry(("nft_" + toBase58String(cf)), cl), IntegerEntry("total_nft_issued", (bN + 1)), IntegerEntry(ap(bE, X), 0), BooleanEntry(ag(bE, X), cg), ce, ScriptTransfer(ch, 1, cf)] ++ cs) ++ ct) ++ cu)
548- if (bK)
549- then [cn, ck, cj] :: cv
550- else cn :: cv
551- }
552- else throw("Strict value is not equal to itself.")
553- }
554- else throw("Strict value is not equal to itself.")
555- }
556- else throw("Strict value is not equal to itself.")
557- }
517+ let co = if ((bZ != 0))
518+ then (bY - bZ)
519+ else bY
520+ let cp = bC(s)
521+ if ((cp == cp))
522+ then if ((be == unit))
523+ then throw(toString(isDefined(be)))
524+ else {
525+ let cq = if ((be != s))
526+ then invoke(Address(fromBase58String(j)), "swap", [l, 1], [AttachedPayment(be, co)])
527+ else unit
528+ if ((cq == cq))
529+ then {
530+ let cr = bC(s)
531+ if ((cr == cr))
532+ then {
533+ let cs = if ((bZ != 0))
534+ then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
535+ then (bY - bZ)
536+ else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
537+ else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
538+ then bY
539+ else (cr - cp), s)]
540+ let ct = if ((ca != 0))
541+ then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
542+ else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
543+ let cu = if (bz)
544+ then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
545+ else nil
546+ let cv = ((([IntegerEntry(af(bE, X), cc), StringEntry(("nft_" + toBase58String(cf)), cl), IntegerEntry("total_nft_issued", (bN + 1)), IntegerEntry(ap(bE, X), 0), BooleanEntry(ag(bE, X), cg), ce, ScriptTransfer(ch, 1, cf)] ++ cs) ++ ct) ++ cu)
547+ if (bK)
548+ then [cn, ck, cj] :: cv
549+ else cn :: cv
550+ }
551+ else throw("Strict value is not equal to itself.")
552+ }
553+ else throw("Strict value is not equal to itself.")
554+ }
555+ else throw("Strict value is not equal to itself.")
558556 }
559557 }
560558 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.0.0"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 let d = false
1010
1111 let e = value(addressFromString(b("conf_oracle_fee")))
1212
1313 let f = value(addressFromString(b("conf_signweb_dapp")))
1414
1515 let g = b("conf_fee_receiver")
1616
1717 let h = if (d)
1818 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1919 else value(addressFromString(b("conf_users_dapp")))
2020
2121 let i = value(addressFromString(b("conf_whitelist_dapp")))
2222
2323 let j = b("conf_puzzle_art_pool")
2424
2525 let k = b("conf_accepted_asset_USDT_PP")
2626
2727 let l = b("conf_accepted_asset_ART")
2828
2929 let m = b("conf_accepted_asset_USDC_PP")
3030
3131 let n = b("conf_accepted_asset_EAST")
3232
3333 let o = b("conf_accepted_asset_PUZZLE")
3434
3535 let p = b("conf_accepted_asset_ETH_PP")
3636
3737 let q = "WAVES"
3838
3939 let r = fromBase58String(k)
4040
4141 let s = fromBase58String(l)
4242
4343 let t = fromBase58String(m)
4444
4545 let u = fromBase58String(n)
4646
4747 let v = fromBase58String(o)
4848
4949 let w = fromBase58String(p)
5050
5151 let x = base58''
5252
5353 let y = [k, l, m, n, o, q, p]
5454
5555 let z = b("conf_admin_1")
5656
5757 func A (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
5858
5959
6060 func B (c) = valueOrElse(getInteger(this, c), 0)
6161
6262
6363 func C (c) = valueOrElse(getInteger(i, c), 0)
6464
6565
6666 func D (c) = valueOrElse(getBoolean(this, c), false)
6767
6868
6969 let E = 8
7070
7171 let F = b("conf_default_licence")
7272
7373 let G = b("conf_default_licence_hash")
7474
7575 let H = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
7676
7777 let I = valueOrElse(getString(h, "conf_maintenance_msg"), "")
7878
7979 let J = "SUSPENDED"
8080
8181 let K = "REMOVED"
8282
8383 let L = "UNREGISTERED"
8484
8585 let M = "ALLOWED"
8686
8787 let N = A(("certification_fee_" + toBase58String(s)))
8888
8989 let O = A(("mint_fee_" + toBase58String(s)))
9090
9191 func P (c) = valueOrElse(getInteger(this, c), 1000)
9292
9393
9494 func Q (R) = if (contains(R, "/"))
9595 then if (if ((76 > size(R)))
9696 then (size(split(R, "/")[0]) == 59)
9797 else false)
9898 then (16 > size(split(R, "/")[1]))
9999 else false
100100 else false
101101
102102
103103 func S (T) = (size(T) == 64)
104104
105105
106106 func U (V) = ("user_status_" + V)
107107
108108
109109 func W (V,X) = ((("art_date_" + X) + "_") + V)
110110
111111
112112 func Y (V,X) = ((("art_name_" + X) + "_") + V)
113113
114114
115115 func Z (V,X) = ((("art_desc_" + X) + "_") + V)
116116
117117
118118 func aa (V,X) = ((("art_display_cid_" + X) + "_") + V)
119119
120120
121121 func ab (V,X) = ((("art_export_hash_" + X) + "_") + V)
122122
123123
124124 func ac (V,X) = ((("art_export_cid_" + X) + "_") + V)
125125
126126
127127 func ad (V,X) = ((("art_maxmint_" + X) + "_") + V)
128128
129129
130130 func ae (V,X) = ((("art_signid_" + X) + "_") + V)
131131
132132
133133 func af (V,X) = ((("art_issued_" + X) + "_") + V)
134134
135135
136136 func ag (V,X) = ((("art_onsale_" + X) + "_") + V)
137137
138138
139139 func ah (V,X) = ((("art_licence_hash_" + X) + "_") + V)
140140
141141
142142 func ai (V,X) = ((("art_licence_cid_" + X) + "_") + V)
143143
144144
145145 func aj (V,X) = ((("art_tags_" + X) + "_") + V)
146146
147147
148148 func ak (V,X) = ((("art_type_" + X) + "_") + V)
149149
150150
151151 func al (V,X) = ((("art_note_" + X) + "_") + V)
152152
153153
154154 func am (V,X) = ((("art_crawler_cid_" + X) + "_") + V)
155155
156156
157157 func an (V,X) = ((("art_royalties_" + X) + "_") + V)
158158
159159
160160 func ao (V,X) = ((("art_price_" + X) + "_") + V)
161161
162162
163163 func ap (V,X) = ((("art_endsale_" + X) + "_") + V)
164164
165165
166166 func aq (V,X) = ((("art_assetAccepted_" + X) + "_") + V)
167167
168168
169169 func ar (V,X) = ((("art_flag_" + X) + "_") + V)
170170
171171
172172 func as (at) = ("artist_agent_" + at)
173173
174174
175175 func au (at) = ("artist_agent_primary_" + at)
176176
177177
178178 func av (at) = ("artist_public_agent_" + at)
179179
180180
181181 func aw (at) = ("artist_public_agent_primary_" + at)
182182
183183
184184 func ax (V,ay) = ((("get_hashbytxidaddr_" + ay) + "_") + V)
185185
186186
187187 func az (aA) = ("get_owner_by_hash_" + aA)
188188
189189
190190 func aB (V,aC) = ((("get_artidbysignid_" + aC) + "_") + V)
191191
192192
193193 func aD (aE,aF,aG) = if (!(Q(aE)))
194194 then throw("Wrong Display CID")
195195 else if (!(Q(aF)))
196196 then throw("Wrong Export CID")
197197 else if (if ((aG != ""))
198198 then !(Q(aG))
199199 else false)
200200 then throw("Wrong Licence CID")
201201 else true
202202
203203
204204 func aH (aI,aJ) = if (!(S(aI)))
205205 then throw("Export Hash 64 char. max")
206206 else if (!(S(aJ)))
207207 then throw("Licence Hash 64 char. max")
208208 else true
209209
210210
211211 func aK (aL,aM) = if ((size(aL) == 0))
212212 then throw("Field cannot be is empty")
213213 else if ((size(aL) > aM))
214214 then throw((aL + " is too long"))
215215 else true
216216
217217
218218 func aN (V) = {
219219 let aO = valueOrElse(getString(h, U(V)), L)
220220 if (if ((aO == L))
221221 then true
222222 else (aO == M))
223223 then "Register this account first with \"Account\" tab"
224224 else if ((aO == J))
225225 then "Account suspended"
226226 else if ((aO == K))
227227 then "Account removed"
228228 else ""
229229 }
230230
231231
232232 func aP (aG,aJ) = {
233233 let R = if ((size(aG) == 0))
234234 then F
235235 else aG
236236 let T = if ((size(aJ) == 0))
237237 then G
238238 else aJ
239239 $Tuple2(R, T)
240240 }
241241
242242
243243 func aQ (V,aE,aF,aR,aI,aS,aT,aU,aV,aW) = {
244244 let aX = aN(V)
245245 if ((aX != ""))
246246 then throw(aX)
247247 else if ((size(aE) == 0))
248248 then throw("Display CID cannot be empty")
249249 else if (!(aD(aE, aF, aR)))
250250 then throw("Problem with CID")
251251 else if (!(aH(aI, aS)))
252252 then throw("Problem with Hashes")
253253 else if (!(aK(aT, 100)))
254254 then throw("100 Char. max name")
255255 else if (!(aK(aU, 1000)))
256256 then throw("1000 Char. max description")
257257 else if (if ((0 > aW))
258258 then true
259259 else (aW > 1000))
260260 then throw("Royalties cannot be less than 0% or higher than 10%")
261261 else if ((size(split(aV, ",")) > 5))
262262 then throw("5 tags max.")
263263 else ""
264264 }
265265
266266
267267 func aY (aZ) = if ((size(aZ.payments) == 0))
268268 then throw("No payment attached")
269269 else {
270270 let ba = value(aZ.payments[0])
271271 let bb = value(ba.amount)
272272 $Tuple2(ba, bb)
273273 }
274274
275275
276276 func bc (aZ) = {
277277 let bd = aY(aZ)
278278 let ba = bd._1
279279 let bb = bd._2
280280 let be = if (if (isDefined(ba.assetId))
281281 then (ba.assetId == s)
282282 else false)
283283 then ba.assetId
284284 else throw("Only SIGN token accepted as transaction fee")
285285 if ((bb != N))
286286 then throw(("Payment amount should be " + toString(N)))
287287 else $Tuple2(bb, be)
288288 }
289289
290290
291291 func bf (bg,X) = {
292292 let bh = getInteger(this, af(bg, X))
293293 if ($isInstanceOf(bh, "Int"))
294294 then {
295295 let bi = bh
296296 if ((bi != 0))
297297 then true
298298 else false
299299 }
300300 else false
301301 }
302302
303303
304304 func bj (aZ,bk,bl) = {
305305 let bm = aY(aZ)
306306 let ba = bm._1
307307 let bb = bm._2
308308 let be = if (!(isDefined(ba.assetId)))
309309 then unit
310310 else if (if ((size(bk) > 0))
311311 then (toBase58String(value(ba.assetId)) == bk)
312312 else false)
313313 then ba.assetId
314314 else throw("Wrong asset id")
315315 if (if ((be == unit))
316316 then (bk != "")
317317 else false)
318318 then throw("Wrong asset id")
319319 else if ((bl != bb))
320320 then throw("Payment don't match")
321321 else $Tuple2(bb, be)
322322 }
323323
324324
325325 func bn (be) = if (!(containsElement(y, be)))
326326 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
327327 else true
328328
329329
330330 func bo (bp) = if ((0 >= bp))
331331 then throw("Wrong minimum sell price")
332332 else true
333333
334334
335335 func bq (be) = if ((be == "WAVES"))
336336 then unit
337337 else fromBase58String(be)
338338
339339
340340 func br (bs) = {
341341 let bt = b((bs + "_OPEN"))
342342 if ((bt == ""))
343343 then throw("Bid not found")
344344 else {
345345 let bu = split(bt, "_")
346346 let bv = parseIntValue(bu[1])
347347 let bw = bq(bu[0])
348348 if ((0 >= bv))
349349 then throw("Wrong amount")
350350 else $Tuple2(bv, bw)
351351 }
352352 }
353353
354354
355355 func bx (aZ,by) = if (!(H))
356356 then throw(I)
357357 else {
358358 let bz = if ((by != ""))
359359 then valueOrElse(C((toString(addressFromPublicKey(fromBase58String(by))) + "_free_txs")), 0)
360360 else 0
361361 let V = if (if ((toBase58String(aZ.caller.bytes) == toString(this)))
362362 then (bz > 0)
363363 else false)
364364 then toString(addressFromPublicKey(fromBase58String(by)))
365365 else toBase58String(aZ.caller.bytes)
366366 let bA = if (if ((by != ""))
367367 then (bz > 0)
368368 else false)
369369 then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(by)))], nil)
370370 else unit
371371 if ((bA == bA))
372372 then $Tuple4(toBase58String(aZ.transactionId), V, lastBlock.timestamp, (bz > 0))
373373 else throw("Strict value is not equal to itself.")
374374 }
375375
376376
377377 func bB (aZ) = if (!(H))
378378 then throw(I)
379379 else $Tuple3(toBase58String(aZ.transactionId), toBase58String(aZ.caller.bytes), lastBlock.timestamp)
380380
381381
382382 func bC (be) = {
383383 let bh = be
384384 if ($isInstanceOf(bh, "ByteVector"))
385385 then {
386386 let bi = bh
387387 assetBalance(this, bi)
388388 }
389389 else wavesBalance(this).available
390390 }
391391
392392
393393 func bD (aZ,X,bE,bF,bG,by) = {
394394 let bH = bx(aZ, by)
395395 let bI = bH._1
396396 let V = bH._2
397397 let bJ = bH._3
398398 let bz = bH._4
399399 let bK = if (if (if ((V == bE))
400400 then (bG != "")
401401 else false)
402402 then (bF != "")
403403 else false)
404404 then true
405405 else false
406406 if (if (bK)
407407 then (V != bE)
408408 else false)
409409 then throw("You cannot do this action")
410410 else {
411411 let bL = B(ap(V, X))
412412 if (if (if ((bL != 0))
413413 then (height >= bL)
414414 else false)
415415 then !(bK)
416416 else false)
417417 then throw("Sale ended.")
418418 else {
419419 let bM = (V == bE)
420420 let bN = B("total_nft_issued")
421421 let bO = b(Y(bE, X))
422422 if ((bO == ""))
423423 then throw("Art doesn't exist")
424424 else {
425425 let bP = D(ag(bE, X))
426426 let bQ = B(af(bE, X))
427427 let bl = if (bM)
428428 then O
429429 else B(ao(bE, X))
430430 let bk = if (bM)
431431 then toBase58String(s)
432432 else b(aq(bE, X))
433433 let bR = B(ad(bE, X))
434434 if (if (if (!(bK))
435435 then !(bM)
436436 else false)
437437 then if (if ((0 >= bl))
438438 then true
439439 else !(bP))
440440 then true
441441 else (0 >= bR)
442442 else false)
443443 then throw("Art not for sale")
444444 else if (if (if (!(bK))
445445 then bM
446446 else false)
447447 then (0 >= bR)
448448 else false)
449449 then throw("Max issuable not set")
450450 else {
451451 let aX = aN(bE)
452452 if (if (bK)
453453 then (aX != "")
454454 else false)
455455 then throw(aX)
456456 else {
457457 let bs = ((((((("bid_" + X) + "_") + bE) + "_") + bG) + "_") + bF)
458458 let bS = if (bK)
459459 then br(bs)
460460 else bj(aZ, bk, bl)
461461 let bb = bS._1
462462 let be = bS._2
463463 let bT = valueOrElse(getString(h, as(bE)), g)
464464 let bU = valueOrElse(getInteger(h, au(bE)), 0)
465465 let bV = valueOrElse(getString(h, av(bE)), g)
466466 let bW = valueOrElse(getInteger(h, aw(bE)), 0)
467467 let bX = C(bE)
468468 let bY = fraction(bb, E, 100)
469469 let bZ = if (if (if ((bT != g))
470470 then (bU > 0)
471471 else false)
472472 then (height > bX)
473473 else false)
474474 then fraction(bb, bU, 10000)
475475 else 0
476476 let ca = if (if (if ((bV != g))
477477 then (bW > 0)
478478 else false)
479479 then (height > bX)
480480 else false)
481481 then fraction(bb, bW, 10000)
482482 else 0
483483 let cb = (bb - bY)
484484 if ((bQ == bR))
485485 then throw("Art sold out")
486486 else {
487487 let cc = (bQ + 1)
488488 let cd = ((((((((("Creator: " + bE) + ",
489489 ArtID: ") + X) + ",
490490 Artwork name: ") + bO) + ",
491491 Issue: ") + toString(cc)) + "/") + toString(bR))
492492 let ce = Issue(("SA_" + toString((bN + 1))), cd, 1, 0, false)
493493 let cf = calculateAssetId(ce)
494494 let cg = if (if ((cc == bR))
495495 then true
496496 else !(bP))
497497 then false
498498 else true
499499 let ch = if (if (if ((V == bE))
500500 then (bG != "")
501501 else false)
502502 then (bF != "")
503503 else false)
504504 then addressFromStringValue(bG)
505505 else aZ.caller
506506 let ci = if (!(isDefined(be)))
507507 then "WAVES"
508508 else toBase58String(value(be))
509509 let bt = b((bs + "_OPEN"))
510510 let cj = DeleteEntry((bs + "_OPEN"))
511511 let ck = StringEntry((bs + "_CLOSED"), ((bt + "_") + toString(bJ)))
512512 let cl = ((((((("art_sold_" + toString(cc)) + "_of_") + toString(bR)) + "_") + X) + "_") + bE)
513513 let cm = if (!(bK))
514514 then ((((((((((V + "_") + toString(bJ)) + "_") + bI) + "_") + toString(bl)) + "_") + bk) + "_") + toBase58String(cf))
515515 else ((((((((((toString(ch) + "_") + toString(bJ)) + "_") + bI) + "_") + toString(bb)) + "_") + ci) + "_") + toBase58String(cf))
516516 let cn = StringEntry(cl, cm)
517- if ((be == unit))
518- then throw(toString(isDefined(be)))
519- else {
520- let co = if ((bZ != 0))
521- then (bY - bZ)
522- else bY
523- let cp = bC(s)
524- if ((cp == cp))
525- then {
526- let cq = if ((be != s))
527- then invoke(Address(fromBase58String(j)), "swap", [l, 1], [AttachedPayment(be, co)])
528- else unit
529- if ((cq == cq))
530- then {
531- let cr = bC(s)
532- if ((cr == cr))
533- then {
534- let cs = if ((bZ != 0))
535- then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
536- then (bY - bZ)
537- else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
538- else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
539- then bY
540- else (cr - cp), s)]
541- let ct = if ((ca != 0))
542- then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
543- else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
544- let cu = if (bz)
545- then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
546- else nil
547- let cv = ((([IntegerEntry(af(bE, X), cc), StringEntry(("nft_" + toBase58String(cf)), cl), IntegerEntry("total_nft_issued", (bN + 1)), IntegerEntry(ap(bE, X), 0), BooleanEntry(ag(bE, X), cg), ce, ScriptTransfer(ch, 1, cf)] ++ cs) ++ ct) ++ cu)
548- if (bK)
549- then [cn, ck, cj] :: cv
550- else cn :: cv
551- }
552- else throw("Strict value is not equal to itself.")
553- }
554- else throw("Strict value is not equal to itself.")
555- }
556- else throw("Strict value is not equal to itself.")
557- }
517+ let co = if ((bZ != 0))
518+ then (bY - bZ)
519+ else bY
520+ let cp = bC(s)
521+ if ((cp == cp))
522+ then if ((be == unit))
523+ then throw(toString(isDefined(be)))
524+ else {
525+ let cq = if ((be != s))
526+ then invoke(Address(fromBase58String(j)), "swap", [l, 1], [AttachedPayment(be, co)])
527+ else unit
528+ if ((cq == cq))
529+ then {
530+ let cr = bC(s)
531+ if ((cr == cr))
532+ then {
533+ let cs = if ((bZ != 0))
534+ then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
535+ then (bY - bZ)
536+ else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
537+ else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
538+ then bY
539+ else (cr - cp), s)]
540+ let ct = if ((ca != 0))
541+ then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
542+ else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
543+ let cu = if (bz)
544+ then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
545+ else nil
546+ let cv = ((([IntegerEntry(af(bE, X), cc), StringEntry(("nft_" + toBase58String(cf)), cl), IntegerEntry("total_nft_issued", (bN + 1)), IntegerEntry(ap(bE, X), 0), BooleanEntry(ag(bE, X), cg), ce, ScriptTransfer(ch, 1, cf)] ++ cs) ++ ct) ++ cu)
547+ if (bK)
548+ then [cn, ck, cj] :: cv
549+ else cn :: cv
550+ }
551+ else throw("Strict value is not equal to itself.")
552+ }
553+ else throw("Strict value is not equal to itself.")
554+ }
555+ else throw("Strict value is not equal to itself.")
558556 }
559557 }
560558 }
561559 }
562560 }
563561 }
564562 }
565563
566564
567565 func cw (cx) = {
568566 let bh = cx
569567 if ($isInstanceOf(bh, "String"))
570568 then {
571569 let cy = bh
572570 cy
573571 }
574572 else throw("Sponsored Public Key String expected")
575573 }
576574
577575
578576 @Callable(cz)
579577 func setConf (c,cA) = {
580578 let V = toString(cz.caller)
581579 if (containsElement([z, toString(this)], V))
582580 then if (contains(c, "conf_"))
583581 then [StringEntry(c, cA)]
584582 else throw("Entries starting with conf_ only")
585583 else throw("You are not allowed to change this")
586584 }
587585
588586
589587
590588 @Callable(aZ)
591589 func addArtwork (aT,aU,aV,cB,aE,aI,aF,aJ,aG,cC,aW,by) = {
592590 let cD = bx(aZ, by)
593591 let X = cD._1
594592 let V = cD._2
595593 let bJ = cD._3
596594 let bz = cD._4
597595 let cE = aP(aG, aJ)
598596 let aR = cE._1
599597 let aS = cE._2
600598 let cF = aQ(V, aE, aF, aR, aI, aS, aT, aU, aV, aW)
601599 if ((cF != ""))
602600 then throw("Something went wrong!")
603601 else {
604602 let cG = (C((V + "_free_drops")) > 0)
605603 let cH = if (cG)
606604 then $Tuple2(0, s)
607605 else bc(aZ)
608606 let bb = cH._1
609607 let be = cH._2
610608 if (!(isDefined(bb)))
611609 then throw("Something went wrong")
612610 else {
613611 let cI = if (cG)
614612 then invoke(i, "useFreeDrop", [V], nil)
615613 else unit
616614 if ((cI == cI))
617615 then {
618616 let cu = if (bz)
619617 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
620618 else nil
621619 ([IntegerEntry(W(V, X), bJ), StringEntry(Y(V, X), aT), StringEntry(Z(V, X), aU), StringEntry(aa(V, X), aE), StringEntry(ac(V, X), aF), StringEntry(ab(V, X), aI), StringEntry(ah(V, X), aS), StringEntry(ai(V, X), aR), StringEntry(ak(V, X), cB), StringEntry(aj(V, X), aV), IntegerEntry(ad(V, X), 0), IntegerEntry(af(V, X), 0), BooleanEntry(ag(V, X), false), StringEntry(am(V, X), cC), IntegerEntry(an(V, X), aW), ScriptTransfer(Address(fromBase58String(g)), bb, s)] ++ cu)
622620 }
623621 else throw("Strict value is not equal to itself.")
624622 }
625623 }
626624 }
627625
628626
629627
630628 @Callable(aZ)
631629 func updateArtwork (ay,aT,aU,aV,cB,aE,aI,aF,aJ,aG,cC,aW,by) = if (!(H))
632630 then throw(I)
633631 else {
634632 let cJ = bx(aZ, by)
635633 let bI = cJ._1
636634 let V = cJ._2
637635 let bJ = cJ._3
638636 let bz = cJ._4
639637 let cK = aP(aG, aJ)
640638 let aR = cK._1
641639 let aS = cK._2
642640 let cF = aQ(V, aE, aF, aR, aI, aS, aT, aU, aV, aW)
643641 if ((cF != ""))
644642 then throw("Something went wrong!")
645643 else {
646644 let cL = b(Y(V, ay))
647645 if ((cL == ""))
648646 then throw("Entry not found")
649647 else {
650648 let cM = b(ar(V, ay))
651649 if ((cM == "ILLEGAL"))
652650 then throw("Cannot update ILLEGAL artwork")
653651 else if (!(bf(V, ay)))
654652 then {
655653 let cu = if (bz)
656654 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
657655 else nil
658656 ([StringEntry(Y(V, ay), aT), StringEntry(Z(V, ay), aU), StringEntry(aa(V, ay), aE), StringEntry(ac(V, ay), aF), StringEntry(ab(V, ay), aI), StringEntry(ai(V, ay), aR), StringEntry(ah(V, ay), aS), StringEntry(aj(V, ay), aV), StringEntry(ak(V, ay), cB), StringEntry(am(V, ay), cC), IntegerEntry(an(V, ay), aW)] ++ cu)
659657 }
660658 else throw("Already minted")
661659 }
662660 }
663661 }
664662
665663
666664
667665 @Callable(aZ)
668666 func flagArtwork (X,cN,cM,cO) = {
669667 let cP = bB(aZ)
670668 let bI = cP._1
671669 let V = cP._2
672670 if (containsElement([z, toString(this)], V))
673671 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cM))
674672 then [StringEntry(ar(cN, X), cM), StringEntry(al(cN, X), cO)]
675673 else throw(("Unknow status " + cM))
676674 else throw("You are not allowed")
677675 }
678676
679677
680678
681679 @Callable(aZ)
682680 func deleteArtwork (X,cN) = {
683681 let cQ = bB(aZ)
684682 let bI = cQ._1
685683 let V = cQ._2
686684 let bg = if (containsElement([z, toString(this)], V))
687685 then cN
688686 else V
689687 let cL = valueOrErrorMessage(b(Y(bg, X)), "No art matching for this address")
690688 if ((cL == ""))
691689 then throw("No art matching for this address")
692690 else {
693691 let aA = b(ax(bg, X))
694692 let cR = if ((aA != ""))
695693 then b(ae(bg, X))
696694 else ""
697695 let cS = if ((cR == ""))
698696 then nil
699697 else [DeleteEntry(aB(bg, cR))]
700698 let cT = ([DeleteEntry(W(bg, X)), DeleteEntry(Y(bg, X)), DeleteEntry(Z(bg, X)), DeleteEntry(aa(bg, X)), DeleteEntry(ac(bg, X)), DeleteEntry(ab(bg, X)), DeleteEntry(ah(bg, X)), DeleteEntry(ai(bg, X)), DeleteEntry(ak(bg, X)), DeleteEntry(aj(bg, X)), DeleteEntry(ad(bg, X)), DeleteEntry(ae(bg, X)), DeleteEntry(af(bg, X)), DeleteEntry(ag(bg, X)), DeleteEntry(ar(bg, X)), DeleteEntry(ao(bg, X)), DeleteEntry(aq(bg, X)), DeleteEntry(az(aA)), DeleteEntry(ap(bg, X)), DeleteEntry(al(bg, X)), DeleteEntry(am(bg, X)), DeleteEntry(an(bg, X))] ++ cS)
701699 if (!(bf(bg, X)))
702700 then if (!(H))
703701 then throw(I)
704702 else cT
705703 else if (containsElement([z, toString(this)], V))
706704 then cT
707705 else throw("Art already minted, you cannot delete it")
708706 }
709707 }
710708
711709
712710
713711 @Callable(aZ)
714712 func sellArtwork (X,bp,cU,be,bL,by) = {
715713 let cV = bx(aZ, by)
716714 let bI = cV._1
717715 let V = cV._2
718716 let bJ = cV._3
719717 let bz = cV._4
720718 let bO = b(Y(V, X))
721719 if ((bO == ""))
722720 then throw("This art doesn't match your account")
723721 else {
724722 let cM = b(ar(V, X))
725723 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cM))
726724 then throw("Flagged artwork")
727725 else {
728726 let cW = B(("current_bidamount_" + X))
729727 if ((0 > bL))
730728 then throw("Negative end")
731729 else if (if ((bL > 0))
732730 then if ((cU != 1))
733731 then true
734732 else (bp != 0)
735733 else false)
736734 then throw("Timed offer only allowed for unique edition and offer only")
737735 else {
738736 let cX = if ((bL == 0))
739737 then 0
740738 else height
741739 if (!(bn(be)))
742740 then throw("Something went wrong!")
743741 else if (!(bo(bp)))
744742 then throw("Something went wrong!")
745743 else {
746744 let aX = aN(V)
747745 if ((aX != ""))
748746 then throw(aX)
749747 else {
750748 let bQ = B(af(V, X))
751749 let bR = B(ad(V, X))
752750 if ((cU > 100))
753751 then throw("100 editions max per artwork")
754752 else if (if ((bQ != 0))
755753 then (bQ == bR)
756754 else false)
757755 then throw("Max edition reached.")
758756 else if (if ((bQ > 0))
759757 then (bR != cU)
760758 else false)
761759 then throw("Cannot change maximum issuable anymore")
762760 else if (if ((cW > 0))
763761 then (bR != cU)
764762 else false)
765763 then throw("Cannot change maximum issuable with active orders")
766764 else {
767765 let cg = if (if ((bp > 0))
768766 then (cU > 0)
769767 else false)
770768 then true
771769 else false
772770 let cu = if (bz)
773771 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
774772 else nil
775773 ([BooleanEntry(ag(V, X), cg), IntegerEntry(ao(V, X), bp), IntegerEntry(ad(V, X), cU), StringEntry(aq(V, X), be), IntegerEntry(ap(V, X), (cX + bL))] ++ cu)
776774 }
777775 }
778776 }
779777 }
780778 }
781779 }
782780 }
783781
784782
785783
786784 @Callable(aZ)
787785 func buyArtwork (X,bE) = bD(aZ, X, bE, "", "", "")
788786
789787
790788
791789 @Callable(aZ)
792790 func setBid (X,bE) = {
793791 let cY = bB(aZ)
794792 let bI = cY._1
795793 let V = cY._2
796794 let bJ = cY._3
797795 let cZ = aY(aZ)
798796 let ba = cZ._1
799797 let bb = cZ._2
800798 let be = if (!(isDefined(ba.assetId)))
801799 then "WAVES"
802800 else toBase58String(value(ba.assetId))
803801 let bL = B(ap(bE, X))
804802 if (if ((bL != 0))
805803 then (height >= bL)
806804 else false)
807805 then throw("Sale ended.")
808806 else {
809807 let cW = B(("current_bidamount_" + X))
810808 if (!(bn(be)))
811809 then throw("asset not accepted")
812810 else if (!(bo(bb)))
813811 then throw("Wrong min sell")
814812 else {
815813 let bQ = B(af(bE, X))
816814 let bR = B(ad(bE, X))
817815 if ((0 >= bR))
818816 then throw("No max edition set for this artwork")
819817 else if ((bQ >= bR))
820818 then throw("Sold out, you cannot bid")
821819 else [StringEntry((((((((("bid_" + X) + "_") + bE) + "_") + V) + "_") + bI) + "_OPEN"), ((((be + "_") + toString(bb)) + "_") + toString(bJ))), IntegerEntry(("current_bidamount_" + X), (cW + 1))]
822820 }
823821 }
824822 }
825823
826824
827825
828826 @Callable(aZ)
829827 func acceptBid (X,bE,bF,bG,by) = bD(aZ, X, bE, bF, bG, by)
830828
831829
832830
833831 @Callable(aZ)
834832 func cancelBid (X,bE,bF,bG) = {
835833 let da = bB(aZ)
836834 let bI = da._1
837835 let V = da._2
838836 let bJ = da._3
839837 if (if ((V != bG))
840838 then (V != bE)
841839 else false)
842840 then throw("You cannot do this action")
843841 else {
844842 let db = if ((V == bE))
845843 then bG
846844 else V
847845 let cW = B(("current_bidamount_" + X))
848846 let bs = ((((((("bid_" + X) + "_") + bE) + "_") + bG) + "_") + bF)
849847 let bt = b((bs + "_OPEN"))
850848 if ((bt == ""))
851849 then throw("Bid not found")
852850 else {
853851 let bu = split(bt, "_")
854852 let be = bq(bu[0])
855853 let dc = "CANCELED"
856854 [DeleteEntry((bs + "_OPEN")), StringEntry(((bs + "_") + dc), ((bt + "_") + toString(bJ))), IntegerEntry(("current_bidamount_" + X), (cW - 1)), ScriptTransfer(Address(fromBase58String(db)), parseIntValue(bu[1]), be)]
857855 }
858856 }
859857 }
860858
861859
862860 @Verifier(dd)
863861 func de () = {
864862 let bh = dd
865863 if ($isInstanceOf(bh, "InvokeScriptTransaction"))
866864 then {
867865 let df = bh
868866 if (if (if (if ((df.function == "addArtwork"))
869867 then (df.dApp == this)
870868 else false)
871869 then (df.fee == 500000)
872870 else false)
873871 then (df.feeAssetId == unit)
874872 else false)
875873 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[11])))
876874 else if (if (if (if ((df.function == "updateArtwork"))
877875 then (df.dApp == this)
878876 else false)
879877 then (df.fee == 500000)
880878 else false)
881879 then (df.feeAssetId == unit)
882880 else false)
883881 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[12])))
884882 else if (if (if (if ((df.function == "sellArtwork"))
885883 then (df.dApp == this)
886884 else false)
887885 then (df.fee == 500000)
888886 else false)
889887 then (df.feeAssetId == unit)
890888 else false)
891889 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[5])))
892890 else if (if (if (if ((df.function == "acceptBid"))
893891 then (df.dApp == this)
894892 else false)
895893 then (df.fee == 500000)
896894 else false)
897895 then (df.feeAssetId == unit)
898896 else false)
899897 then sigVerify_128Kb(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[4])))
900898 else sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
901899 }
902900 else sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
903901 }
904902

github/deemru/w8io/026f985 
79.77 ms