tx · GEPk3fsgfxh3dpYm2pm3AnEw26hq1CTHyUVTL2E7Gky

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02600000 Waves

2023.10.11 06:39 [2793434] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "GEPk3fsgfxh3dpYm2pm3AnEw26hq1CTHyUVTL2E7Gky", "fee": 2600000, "feeAssetId": null, "timestamp": 1696995658829, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "5CvAT2uZx3gKkuKdWEB9SA8XSpompeEGGb5dahqnZJTL4kVzbSnQbyHmv39SZvfCxFZFYh7SqFPoF5ovLxekoGoy" ], "script": "base64:BgJeCAISBAoCCAgSDgoMCAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICFsAB1ZFUlNJT04CBTIuMC4wAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1bml0VGVzdAcACW9yYWNsZUZlZQkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX29yYWNsZV9mZWUACHNpZ25EYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECEWNvbmZfc2lnbndlYl9kYXBwAAtmZWVSZWNlaXZlcgkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9mZWVfcmVjZWl2ZXIACHVzZXJEYXBwAwUIdW5pdFRlc3QJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIPY29uZl91c2Vyc19kYXBwAA13aGl0ZWxpc3REYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECE2NvbmZfd2hpdGVsaXN0X2RhcHAAD3B1enpsZV9hcnRfcG9vbAkBDmdldFN0cmluZ0J5S2V5AQIUY29uZl9wdXp6bGVfYXJ0X3Bvb2wAEXVzZHRQUEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhtjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRFRfUFAADmFydEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhdjb25mX2FjY2VwdGVkX2Fzc2V0X0FSVAARdXNkY1BQQXNzZXRJZF9zdHIJAQ5nZXRTdHJpbmdCeUtleQECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEQ19QUAAPZWFzdEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X0VBU1QAEXB1enpsZUFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X1BVWlpMRQAQZXRoUFBBc3NldElkX3N0cgkBDmdldFN0cmluZ0J5S2V5AQIaY29uZl9hY2NlcHRlZF9hc3NldF9FVEhfUFAAEHdhdmVzQXNzZXRJZF9zdHICBVdBVkVTAA11c2R0UFBBc3NldElkCQDZBAEFEXVzZHRQUEFzc2V0SWRfc3RyAAphcnRBc3NldElkCQDZBAEFDmFydEFzc2V0SWRfc3RyAA11c2RjUFBBc3NldElkCQDZBAEFEXVzZGNQUEFzc2V0SWRfc3RyAAtlYXN0QXNzZXRJZAkA2QQBBQ9lYXN0QXNzZXRJZF9zdHIADXB1enpsZUFzc2V0SWQJANkEAQURcHV6emxlQXNzZXRJZF9zdHIADGV0aFBQQXNzZXRJZAkA2QQBBRBldGhQUEFzc2V0SWRfc3RyAAx3YXZlc0Fzc2V0SWQBAAATYWxsX2FjY2VwdGVkX2Fzc2V0cwkAzAgCBRF1c2R0UFBBc3NldElkX3N0cgkAzAgCBQ5hcnRBc3NldElkX3N0cgkAzAgCBRF1c2RjUFBBc3NldElkX3N0cgkAzAgCBQ9lYXN0QXNzZXRJZF9zdHIJAMwIAgURcHV6emxlQXNzZXRJZF9zdHIJAMwIAgUQd2F2ZXNBc3NldElkX3N0cgkAzAgCBRBldGhQUEFzc2V0SWRfc3RyBQNuaWwABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEOY2hlY2tXaGl0ZWxpc3QBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ13aGl0ZWxpc3REYXBwBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwAOY29tbWlzc2lvbl9mZWUACAAOZGVmYXVsdExpY2VuY2UJAQ5nZXRTdHJpbmdCeUtleQECFGNvbmZfZGVmYXVsdF9saWNlbmNlABJkZWZhdWx0SGFzaExpY2VuY2UJAQ5nZXRTdHJpbmdCeUtleQECGWNvbmZfZGVmYXVsdF9saWNlbmNlX2hhc2gAC2RhcHBSdW5uaW5nCQELdmFsdWVPckVsc2UCCQCbCAIFCHVzZXJEYXBwAhRjb25mX2RhcHBfaXNfcnVubmluZwYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwAhRjb25mX21haW50ZW5hbmNlX21zZwIAAA11c2VyU3VzcGVuZGVkAglTVVNQRU5ERUQAC3VzZXJSZW1vdmVkAgdSRU1PVkVEABB1c2VyVW5yZWdpc3RlcmVkAgxVTlJFR0lTVEVSRUQAC3VzZXJBbGxvd2VkAgdBTExPV0VEABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEFCmFydEFzc2V0SWQACG1pbnRfZmVlCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEJAKwCAgIJbWludF9mZWVfCQDYBAEFCmFydEFzc2V0SWQBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkA6AcBC3ZhbGlkYXRlQ0lEAQNjaWQDCQEIY29udGFpbnMCBQNjaWQCAS8DAwkAZgIATAkAsQIBBQNjaWQJAAACCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAAA7BwkAZgIAEAkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAEHBwEMdmFsaWRhdGVIYXNoAQRoYXNoCQAAAgkAsQIBBQRoYXNoAEABDWtleVVzZXJTdGF0dXMBBmNhbGxlcgkArAICAgx1c2VyX3N0YXR1c18FBmNhbGxlcgEHa2V5RGF0ZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZGF0ZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleU5hbWUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X25hbWVfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlEZXNjAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kZXNjXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5RGlzcGxheUNpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfZGlzcGxheV9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlFeHBvcnRIYXNoAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9leHBvcnRfaGFzaF8FBWFydElkAgFfBQZjYWxsZXIBDGtleUV4cG9ydENpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBCmtleU1heE1pbnQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlTaWduSUQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X3NpZ25pZF8FBWFydElkAgFfBQZjYWxsZXIBCWtleUlzc3VlZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfaXNzdWVkXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5T25TYWxlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQVhcnRJZAIBXwUGY2FsbGVyAQ5rZXlMaWNlbmNlSGFzaAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhFhcnRfbGljZW5jZV9oYXNoXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5TGljZW5jZUNpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUYWdzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90YWdzXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5VHlwZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfdHlwZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleU5vdGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlDcmF3bGVyAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9jcmF3bGVyX2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDGtleVJveWFsdGllcwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUFYXJ0SWQCAV8FBmNhbGxlcgEIa2V5UHJpY2UCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5RW5kU2FsZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfZW5kc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBEmtleUFzc2V0SWRBY2NlcHRlZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FBWFydElkAgFfBQZjYWxsZXIBB2tleUZsYWcCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2ZsYWdfBQVhcnRJZAIBXwUGY2FsbGVyARJrZXlBcnRpc3RBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgINYXJ0aXN0X2FnZW50XwUKYXJ0aXN0QWRkcgEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQphcnRpc3RBZGRyARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgIUYXJ0aXN0X3B1YmxpY19hZ2VudF8FCmFydGlzdEFkZHIBGmtleVByaW1hcnlTaGFyZVB1YmxpY0FnZW50AQphcnRpc3RBZGRyCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBEWtleUhhc2hCeVR4aWRBZGRyAgZjYWxsZXIEdHhpZAkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUEdHhpZAIBXwUGY2FsbGVyAQ5rZXlPd25lckJ5SGFzaAEKc2hhMjU2SGFzaAkArAICAhJnZXRfb3duZXJfYnlfaGFzaF8FCnNoYTI1Nkhhc2gBDWtleWlkQnlTaWduaWQCBmNhbGxlcgZzaWduSWQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUGc2lnbklkAgFfBQZjYWxsZXIBDnZhbGlkYXRlQWxsQ0lEAwpjaWREaXNwbGF5CWNpZEV4cG9ydApjaWRMaWNlbmNlAwkBASEBCQELdmFsaWRhdGVDSUQBBQpjaWREaXNwbGF5CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCWNpZEV4cG9ydAkAAgECEFdyb25nIEV4cG9ydCBDSUQDAwkBAiE9AgUKY2lkTGljZW5jZQIACQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZExpY2VuY2UHCQACAQIRV3JvbmcgTGljZW5jZSBDSUQGAQ92YWxpZGF0ZUFsbEhhc2gCDHNoYTI1NkV4cG9ydA1zaGEyNTZMaWNlbmNlAwkBASEBCQEMdmFsaWRhdGVIYXNoAQUMc2hhMjU2RXhwb3J0CQACAQIYRXhwb3J0IEhhc2ggNjQgY2hhci4gbWF4AwkBASEBCQEMdmFsaWRhdGVIYXNoAQUNc2hhMjU2TGljZW5jZQkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQ52YWxpZGF0ZVN0cmluZwIDc3RyA21heAMJAAACCQCxAgEFA3N0cgAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUDc3RyBQNtYXgJAAIBCQCsAgIFA3N0cgIMIGlzIHRvbyBsb25nBgEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwMJAAACBQp1c2VyU3RhdHVzBRB1c2VyVW5yZWdpc3RlcmVkBgkAAAIFCnVzZXJTdGF0dXMFC3VzZXJBbGxvd2VkAi5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAIFCnVzZXJTdGF0dXMFDXVzZXJTdXNwZW5kZWQCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFCnVzZXJTdGF0dXMFC3VzZXJSZW1vdmVkAg9BY2NvdW50IHJlbW92ZWQCAAEKc2V0TEljZW5jZQIKY2lkTGljZW5jZQ1zaGEyNTZMaWNlbmNlBANjaWQDCQAAAgkAsQIBBQpjaWRMaWNlbmNlAAAFDmRlZmF1bHRMaWNlbmNlBQpjaWRMaWNlbmNlBARoYXNoAwkAAAIJALECAQUNc2hhMjU2TGljZW5jZQAABRJkZWZhdWx0SGFzaExpY2VuY2UFDXNoYTI1NkxpY2VuY2UJAJQKAgUDY2lkBQRoYXNoARN2YWxpZGF0ZUFydHdvcmtEYXRhCgZjYWxsZXIKY2lkRGlzcGxheQljaWRFeHBvcnQKbGljZW5jZUNJRAxzaGEyNTZFeHBvcnQLbGljZW5jZUhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzCXJveWFsdGllcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQ52YWxpZGF0ZUFsbENJRAMFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAkAAgECEFByb2JsZW0gd2l0aCBDSUQDCQEBIQEJAQ92YWxpZGF0ZUFsbEhhc2gCBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQBkCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUDCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguAgABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEPdmFsaWRhdGVQYXltZW50AQFpBA0kdDAxMDE1NjEwMTkyCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwMTU2MTAxOTICXzEEBmFtb3VudAgFDSR0MDEwMTU2MTAxOTICXzIEB2Fzc2V0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAACCAUHcGF5bWVudAdhc3NldElkBQphcnRBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECK09ubHkgU0lHTiB0b2tlbiBhY2NlcHRlZCBhcyB0cmFuc2FjdGlvbiBmZWUDCQECIT0CBQZhbW91bnQFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkAlAoCBQZhbW91bnQFB2Fzc2V0SWQBC2lzQXJ0TWludGVkAglhZGRyVG9Vc2UFYXJ0SWQEByRtYXRjaDAJAJoIAgUEdGhpcwkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwAwkBAiE9AgUBYgAABgcHARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMBaQxwcmljZUFzc2V0SWQMYXJ0d29ya1ByaWNlBA0kdDAxMDc3OTEwODE1CQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwNzc5MTA4MTUCXzEEBmFtb3VudAgFDSR0MDEwNzc5MTA4MTUCXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFDHByaWNlQXNzZXRJZAAACQAAAgkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBQxwcmljZUFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFB2Fzc2V0SWQFBHVuaXQJAQIhPQIFDHByaWNlQXNzZXRJZAIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUMYXJ0d29ya1ByaWNlBQZhbW91bnQJAAIBAhNQYXltZW50IGRvbid0IG1hdGNoCQCUCgIFBmFtb3VudAUHYXNzZXRJZAEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFE2FsbF9hY2NlcHRlZF9hc3NldHMFB2Fzc2V0SWQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkBgEPdmFsaWRhdGVNaW5TZWxsAQVwcmljZQMJAGcCAAAFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBgENZ2V0QmlkQXNzZXRJZAEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAQpiaWREYXRhS2V5BAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQJYmlkQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBApiaWRBc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAAAwkAZwIAAAUJYmlkQW1vdW50CQACAQIMV3JvbmcgYW1vdW50CQCUCgIFCWJpZEFtb3VudAUKYmlkQXNzZXRJZAEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgFpBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQLaXNTcG9uc29yZWQDCQECIT0CBQZwdWJLZXkCAAkBC3ZhbHVlT3JFbHNlAgkBDmNoZWNrV2hpdGVsaXN0AQkArAICCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkCCV9mcmVlX3R4cwAAAAAEBmNhbGxlcgMDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAGYCBQtpc1Nwb25zb3JlZAAABwkApQgBCQCnCAEJANkEAQUGcHViS2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEE2dldF9zcG9uc29yZWRfd2F2ZXMDAwkBAiE9AgUGcHViS2V5AgAJAGYCBQtpc1Nwb25zb3JlZAAABwkA/AcEBQ13aGl0ZWxpc3REYXBwAgl1c2VGcmVlVHgJAMwIAgkApQgBCQCnCAEJANkEAQUGcHViS2V5BQNuaWwFA25pbAUEdW5pdAMJAAACBRNnZXRfc3BvbnNvcmVkX3dhdmVzBRNnZXRfc3BvbnNvcmVkX3dhdmVzCQCWCgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUGY2FsbGVyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZgIFC2lzU3BvbnNvcmVkAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA8AcCBQR0aGlzBQFiCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQEHYnV5TWludAYBaQVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIGcHViS2V5BA0kdDAxMzQyMDEzNTA5CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDEzNDIwMTM1MDkCXzEEBmNhbGxlcggFDSR0MDEzNDIwMTM1MDkCXzIEBGRhdGUIBQ0kdDAxMzQyMDEzNTA5Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDEzNDIwMTM1MDkCXzQEBWlzQmlkAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwYHAwMFBWlzQmlkCQECIT0CBQZjYWxsZXIFBmlzc3VlcgcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAMDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQEBIQEFBWlzQmlkBwkAAgECC1NhbGUgZW5kZWQuBA5jYWxsZXJJc0lzc3VlcgkAAAIFBmNhbGxlcgUGaXNzdWVyBAh0b3RhbE5GVAkBD2dldEludGVnZXJCeUtleQECEHRvdGFsX25mdF9pc3N1ZWQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAhpc09uU2FsZQkBD2dldEJvb2xlYW5CeUtleQEJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQEDGFydHdvcmtQcmljZQMFDmNhbGxlcklzSXNzdWVyBQhtaW50X2ZlZQkBD2dldEludGVnZXJCeUtleQEJAQhrZXlQcmljZQIFBmlzc3VlcgUFYXJ0SWQEDHByaWNlQXNzZXRJZAMFDmNhbGxlcklzSXNzdWVyCQDYBAEFCmFydEFzc2V0SWQJAQ5nZXRTdHJpbmdCeUtleQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZpc3N1ZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZpc3N1ZXIFBWFydElkAwMDCQEBIQEFBWlzQmlkCQEBIQEFDmNhbGxlcklzSXNzdWVyBwMDCQBnAgAABQxhcnR3b3JrUHJpY2UGCQEBIQEFCGlzT25TYWxlBgkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFBWlzQmlkBQ5jYWxsZXJJc0lzc3VlcgcJAGcCAAAFCm1heENhblNlbGwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmlzc3VlcgMDBQVpc0JpZAkBAiE9AgUJY2hlY2tVc2VyAgAHCQACAQUJY2hlY2tVc2VyBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQNJHQwMTUwODYxNTI3OAMFBWlzQmlkCQEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEFCmJpZERhdGFLZXkJARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMFAWkFDHByaWNlQXNzZXRJZAUMYXJ0d29ya1ByaWNlBAZhbW91bnQIBQ0kdDAxNTA4NjE1Mjc4Al8xBAdhc3NldElkCAUNJHQwMTUwODYxNTI3OAJfMgQFYWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBBQZpc3N1ZXIAAAQLcHVibGljQWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBBBwdWJsaWNBZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBBQZpc3N1ZXIAAAQNaXNXaGl0ZWxpc3RlZAkBDmNoZWNrV2hpdGVsaXN0AQUGaXNzdWVyBA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQ5jb21taXNzaW9uX2ZlZQBkBA5hbW91bnRGb3JBZ2VudAMDAwkBAiE9AgUFYWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUKYWdlbnRTaGFyZQAABwkAZgIFBmhlaWdodAUNaXNXaGl0ZWxpc3RlZAcJAGsDBQZhbW91bnQFCmFnZW50U2hhcmUAkE4AAAQUYW1vdW50Rm9yUHVibGljQWdlbnQDAwMJAQIhPQIFC3B1YmxpY0FnZW50BQtmZWVSZWNlaXZlcgkAZgIFEHB1YmxpY0FnZW50U2hhcmUAAAcJAGYCBQZoZWlnaHQFDWlzV2hpdGVsaXN0ZWQHCQBrAwUGYW1vdW50BRBwdWJsaWNBZ2VudFNoYXJlAJBOAAAEEGFtb3VudEZvckNyZWF0b3IJAGUCBQZhbW91bnQFDWFtb3VudEZvclNpZ24DCQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECDEFydCBzb2xkIG91dAQNbmV3QW1vdW50U29sZAkAZAIFCmFtb3VudFNvbGQAAQQJaXNzdWVNZXRhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglDcmVhdG9yOiAFBmlzc3VlcgIKLAogQXJ0SUQ6IAUFYXJ0SWQCESwKIEFydHdvcmsgbmFtZTogBQthcnR3b3JrTmFtZQIKLAogSXNzdWU6IAkApAMBBQ1uZXdBbW91bnRTb2xkAgEvCQCkAwEFCm1heENhblNlbGwECGlzc3VlTkZUCQDCCAUJAKwCAgIDU0FfCQCkAwEJAGQCBQh0b3RhbE5GVAABBQlpc3N1ZU1ldGEAAQAABwQFaWRORlQJALgIAQUIaXNzdWVORlQECnNlbGxTdGF0dXMDAwkAAAIFDW5ld0Ftb3VudFNvbGQFCm1heENhblNlbGwGCQEBIQEFCGlzT25TYWxlBwYECnJlY2VpdmVORlQDAwMJAAACBQZjYWxsZXIFBmlzc3VlcgkBAiE9AgUIYmlkT3duZXICAAcJAQIhPQIFBWJpZElkAgAHCQERQGV4dHJOYXRpdmUoMTA2MikBBQhiaWRPd25lcggFAWkGY2FsbGVyBAphc3NldElkQmlkAwkBASEBCQEJaXNEZWZpbmVkAQUHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQUHYXNzZXRJZAQHYmlkRGF0YQkBDmdldFN0cmluZ0J5S2V5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgQJYmlkRGVsT2xkCQELRGVsZXRlRW50cnkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWRVcGRhdGUJAQtTdHJpbmdFbnRyeQIJAKwCAgUKYmlkRGF0YUtleQIHX0NMT1NFRAkArAICCQCsAgIFB2JpZERhdGECAV8JAKQDAQUEZGF0ZQQHc29sZEtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhcnRfc29sZF8JAKQDAQUNbmV3QW1vdW50U29sZAIEX29mXwkApAMBBQptYXhDYW5TZWxsAgFfBQVhcnRJZAIBXwUGaXNzdWVyBAlzb2xkVmFsdWUDCQEBIQEFBWlzQmlkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBmNhbGxlcgIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQxhcnR3b3JrUHJpY2UCAV8FDHByaWNlQXNzZXRJZAIBXwkA2AQBBQVpZE5GVAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEFCnJlY2VpdmVORlQCAV8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkQmlkAgFfCQDYBAEFBWlkTkZUBAhzb2xkRGF0YQkBC1N0cmluZ0VudHJ5AgUHc29sZEtleQUJc29sZFZhbHVlBCJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwAwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50BQ1hbW91bnRGb3JTaWduBBFhbW91bnRfYXJ0X2JlZm9yZQkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEWFtb3VudF9hcnRfYmVmb3JlBRFhbW91bnRfYXJ0X2JlZm9yZQQPc3dhcF9mZWVfdG9fYXJ0AwkBAiE9AgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkA/AcECQEHQWRkcmVzcwEJANkEAQUPcHV6emxlX2FydF9wb29sAgRzd2FwCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBSJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwBQNuaWwFBHVuaXQDCQAAAgUPc3dhcF9mZWVfdG9fYXJ0BQ9zd2FwX2ZlZV90b19hcnQEEGFtb3VudF9hcnRfYWZ0ZXIJAQpnZXRCYWxhbmNlAQUKYXJ0QXNzZXRJZAMJAAACBRBhbW91bnRfYXJ0X2FmdGVyBRBhbW91bnRfYXJ0X2FmdGVyBBRjb21taXNzaW9uc1dpdGhBZ2VudAMJAQIhPQIFDmFtb3VudEZvckFnZW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyAwkAAAIFB2Fzc2V0SWQFCmFydEFzc2V0SWQJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAkAZQIFEGFtb3VudF9hcnRfYWZ0ZXIFEWFtb3VudF9hcnRfYmVmb3JlBQphcnRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQVhZ2VudAUOYW1vdW50Rm9yQWdlbnQFB2Fzc2V0SWQFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIDCQAAAgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAUNYW1vdW50Rm9yU2lnbgkAZQIFEGFtb3VudF9hcnRfYWZ0ZXIFEWFtb3VudF9hcnRfYmVmb3JlBQphcnRBc3NldElkBQNuaWwEGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50AwkBAiE9AgUUYW1vdW50Rm9yUHVibGljQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULcHVibGljQWdlbnQFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIJAGUCBRBhbW91bnRGb3JDcmVhdG9yBRRhbW91bnRGb3JQdWJsaWNBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIFEGFtb3VudEZvckNyZWF0b3IFB2Fzc2V0SWQFA25pbAQKdHhUb0NhbGxlcgMFC2lzU3BvbnNvcmVkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAAUEdW5pdAUDbmlsBQNuaWwEBmJ1eVJlcwkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQFDW5ld0Ftb3VudFNvbGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRuZnRfCQDYBAEFBWlkTkZUBQdzb2xkS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUIdG90YWxORlQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIFCGlzc3VlTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCnJlY2VpdmVORlQAAQUFaWRORlQFA25pbAUUY29tbWlzc2lvbnNXaXRoQWdlbnQFGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50BQp0eFRvQ2FsbGVyAwUFaXNCaWQJAMwIAgUIc29sZERhdGEJAMwIAgUJYmlkVXBkYXRlCQDMCAIFCWJpZERlbE9sZAUGYnV5UmVzCQDMCAIFCHNvbGREYXRhBQZidXlSZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAoGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBCmFkZEFydHdvcmsMBG5hbWULZGVzY3JpcHRpb24EdGFncwR0eXBlCmNpZERpc3BsYXkMc2hhMjU2RXhwb3J0CWNpZEV4cG9ydA1zaGEyNTZMaWNlbmNlCmNpZExpY2VuY2UHY3Jhd2xlcglyb3lhbHRpZXMGcHViS2V5BA0kdDAyMTU0NDIxNjE3CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAVhcnRJZAgFDSR0MDIxNTQ0MjE2MTcCXzEEBmNhbGxlcggFDSR0MDIxNTQ0MjE2MTcCXzIEBGRhdGUIBQ0kdDAyMTU0NDIxNjE3Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDIxNTQ0MjE2MTcCXzQEDSR0MDIxNjI3MjE2OTYJAQpzZXRMSWNlbmNlAgUKY2lkTGljZW5jZQUNc2hhMjU2TGljZW5jZQQKbGljZW5jZUNJRAgFDSR0MDIxNjI3MjE2OTYCXzEEC2xpY2VuY2VIYXNoCAUNJHQwMjE2MjcyMTY5NgJfMgQPdmFsaWRhdGVBcnR3b3JrCQETdmFsaWRhdGVBcnR3b3JrRGF0YQoFBmNhbGxlcgUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lEBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoBQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUJcm95YWx0aWVzAwkBAiE9AgUPdmFsaWRhdGVBcnR3b3JrAgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEEHdoaXRlbGlzdGVkX2Ryb3AJAGYCCQEOY2hlY2tXaGl0ZWxpc3QBCQCsAgIFBmNhbGxlcgILX2ZyZWVfZHJvcHMAAAQNJHQwMjE5OTUyMjA4MwMFEHdoaXRlbGlzdGVkX2Ryb3AJAJQKAgAABQphcnRBc3NldElkCQEPdmFsaWRhdGVQYXltZW50AQUBaQQGYW1vdW50CAUNJHQwMjE5OTUyMjA4MwJfMQQHYXNzZXRJZAgFDSR0MDIxOTk1MjIwODMCXzIDCQEBIQEJAQlpc0RlZmluZWQBBQZhbW91bnQJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3ADBRB3aGl0ZWxpc3RlZF9kcm9wCQD8BwQFDXdoaXRlbGlzdERhcHACC3VzZUZyZWVEcm9wCQDMCAIFBmNhbGxlcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AFF2RlY3JlYXNlX3doaXRlbGlzdF9kcm9wBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5RGF0ZQIFBmNhbGxlcgUFYXJ0SWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQVhcnRJZAULZGVzY3JpcHRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleURpc3BsYXlDaWQCBQZjYWxsZXIFBWFydElkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFeHBvcnRDaWQCBQZjYWxsZXIFBWFydElkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBWFydElkBQxzaGEyNTZFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUxpY2VuY2VIYXNoAgUGY2FsbGVyBQVhcnRJZAULbGljZW5jZUhhc2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUxpY2VuY2VDaWQCBQZjYWxsZXIFBWFydElkBQpsaWNlbmNlQ0lECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQVhcnRJZAUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5VGFncwIFBmNhbGxlcgUFYXJ0SWQFBHRhZ3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5SXNzdWVkAgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGY2FsbGVyBQVhcnRJZAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUNyYXdsZXICBQZjYWxsZXIFBWFydElkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQVhcnRJZAUJcm95YWx0aWVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgUGYW1vdW50BQphcnRBc3NldElkBQNuaWwFCnR4VG9DYWxsZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdXBkYXRlQXJ0d29yaw0EdHhpZARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MEdHlwZQpjaWREaXNwbGF5DHNoYTI1NkV4cG9ydAljaWRFeHBvcnQNc2hhMjU2TGljZW5jZQpjaWRMaWNlbmNlB2NyYXdsZXIJcm95YWx0aWVzBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQNJHQwMjM5OTgyNDA2OAkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyMzk5ODI0MDY4Al8xBAZjYWxsZXIIBQ0kdDAyMzk5ODI0MDY4Al8yBARkYXRlCAUNJHQwMjM5OTgyNDA2OAJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyMzk5ODI0MDY4Al80BA0kdDAyNDA3ODI0MTQ3CQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAyNDA3ODI0MTQ3Al8xBAtsaWNlbmNlSGFzaAgFDSR0MDI0MDc4MjQxNDcCXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUEdHhpZAMJAAACBQplbnRyeUV4aXN0AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQR0eGlkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBC2lzQXJ0TWludGVkAgUGY2FsbGVyBQR0eGlkBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQR0eGlkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUEdHhpZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQR0eGlkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBHR4aWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUEdHhpZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBHR4aWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQR0eGlkBQR0YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQR0eGlkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQR0eGlkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQR0eGlkBQlyb3lhbHRpZXMFA25pbAUKdHhUb0NhbGxlcgkAAgECDkFscmVhZHkgbWludGVkAWkBC2ZsYWdBcnR3b3JrBAVhcnRJZARhZGRyBGZsYWcEbm90ZQQNJHQwMjU3NzQyNTgwOAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjU3NzQyNTgwOAJfMQQGY2FsbGVyCAUNJHQwMjU3NzQyNTgwOAJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleUZsYWcCBQRhZGRyBQVhcnRJZAUEZmxhZwkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5Tm90ZQIFBGFkZHIFBWFydElkBQRub3RlBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQRmbGFnCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQ1kZWxldGVBcnR3b3JrAgVhcnRJZARhZGRyBA0kdDAyNjI0NDI2Mjc4CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyNjI0NDI2Mjc4Al8xBAZjYWxsZXIIBQ0kdDAyNjI0NDI2Mjc4Al8yBAlhZGRyVG9Vc2UDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBQRhZGRyBQZjYWxsZXIECmVudHJ5RXhpc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQlhZGRyVG9Vc2UFBWFydElkAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQplbnRyeUV4aXN0AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQKc2hhMjU2SGFzaAkBDmdldFN0cmluZ0J5S2V5AQkBEWtleUhhc2hCeVR4aWRBZGRyAgUJYWRkclRvVXNlBQVhcnRJZAQGc2lnbklEAwkBAiE9AgUKc2hhMjU2SGFzaAIACQEOZ2V0U3RyaW5nQnlLZXkBCQEJa2V5U2lnbklEAgUJYWRkclRvVXNlBQVhcnRJZAIABA1zaWduSURfbGVnYWN5AwkAAAIFBnNpZ25JRAIABQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleWlkQnlTaWduaWQCBQlhZGRyVG9Vc2UFBnNpZ25JRAUDbmlsBAxkYXRhVG9EZWxldGUJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5RGF0ZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleU5hbWUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlEZXNjAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5RGlzcGxheUNpZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleUV4cG9ydENpZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleUV4cG9ydEhhc2gCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ5rZXlMaWNlbmNlSGFzaAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleUxpY2VuY2VDaWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlUeXBlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5VGFncwIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleU1heE1pbnQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlTaWduSUQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlJc3N1ZWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlPblNhbGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlGbGFnAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEIa2V5UHJpY2UCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ5rZXlPd25lckJ5SGFzaAEFCnNoYTI1Nkhhc2gJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleUVuZFNhbGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlOb3RlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5Q3Jhd2xlcgIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleVJveWFsdGllcwIFCWFkZHJUb1VzZQUFYXJ0SWQFA25pbAUNc2lnbklEX2xlZ2FjeQMJAQEhAQkBC2lzQXJ0TWludGVkAgUJYWRkclRvVXNlBQVhcnRJZAMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwUMZGF0YVRvRGVsZXRlAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgUMZGF0YVRvRGVsZXRlCQACAQIoQXJ0IGFscmVhZHkgbWludGVkLCB5b3UgY2Fubm90IGRlbGV0ZSBpdAFpAQtzZWxsQXJ0d29yawYFYXJ0SWQFcHJpY2UHbWF4TWludAdhc3NldElkCGJsb2NrRW5kBnB1YktleQQNJHQwMjkwNTcyOTEyNwkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyOTA1NzI5MTI3Al8xBAZjYWxsZXIIBQ0kdDAyOTA1NzI5MTI3Al8yBARkYXRlCAUNJHQwMjkwNTcyOTEyNwJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyOTA1NzI5MTI3Al80BAthcnR3b3JrTmFtZQkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkAwkAAAIFC2FydHdvcmtOYW1lAgAJAAIBAiNUaGlzIGFydCBkb2Vzbid0IG1hdGNoIHlvdXIgYWNjb3VudAQEZmxhZwkBDmdldFN0cmluZ0J5S2V5AQkBB2tleUZsYWcCBQZjYWxsZXIFBWFydElkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQRmbGFnCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQBmAgAABQhibG9ja0VuZAkAAgECDE5lZ2F0aXZlIGVuZAMDCQBmAgUIYmxvY2tFbmQAAAMJAQIhPQIFB21heE1pbnQAAQYJAQIhPQIFBXByaWNlAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQKYmFzZUhlaWdodAMJAAACBQhibG9ja0VuZAAAAAAFBmhlaWdodAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUFcHJpY2UJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmNhbGxlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQDCQBmAgUHbWF4TWludABkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQphbW91bnRTb2xkAAAJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQphbW91bnRTb2xkAAAJAQIhPQIFCm1heENhblNlbGwFB21heE1pbnQHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFBmJpZE5icgAACQECIT0CBQptYXhDYW5TZWxsBQdtYXhNaW50BwkAAgECMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMECnNlbGxTdGF0dXMDAwkAZgIFBXByaWNlAAAJAGYCBQdtYXhNaW50AAAHBgcECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEIa2V5UHJpY2UCBQZjYWxsZXIFBWFydElkBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkBQdtYXhNaW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZjYWxsZXIFBWFydElkBQdhc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5RW5kU2FsZQIFBmNhbGxlcgUFYXJ0SWQJAGQCBQpiYXNlSGVpZ2h0BQhibG9ja0VuZAUDbmlsBQp0eFRvQ2FsbGVyAWkBCmJ1eUFydHdvcmsCBWFydElkBmlzc3VlcgkBB2J1eU1pbnQGBQFpBQVhcnRJZAUGaXNzdWVyAgACAAIAAWkBBnNldEJpZAIFYXJ0SWQGaXNzdWVyBA0kdDAzMTUwMDMxNTQwCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAzMTUwMDMxNTQwAl8xBAZjYWxsZXIIBQ0kdDAzMTUwMDMxNTQwAl8yBARkYXRlCAUNJHQwMzE1MDAzMTU0MAJfMwQNJHQwMzE1NDUzMTU4MQkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAzMTU0NTMxNTgxAl8xBAZhbW91bnQIBQ0kdDAzMTU0NTMxNTgxAl8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQIYmxvY2tFbmQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5RW5kU2FsZQIFBmlzc3VlcgUFYXJ0SWQDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQACAQILU2FsZSBlbmRlZC4EBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUGYW1vdW50CQACAQIOV3JvbmcgbWluIHNlbGwECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAMJAGcCAAAFCm1heENhblNlbGwJAAIBAiNObyBtYXggZWRpdGlvbiBzZXQgZm9yIHRoaXMgYXJ0d29yawMJAGcCBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQZjYWxsZXICAV8FAmlkAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQdhc3NldElkAgFfCQCkAwEFBmFtb3VudAIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGQCBQZiaWROYnIAAQUDbmlsAWkBCWFjY2VwdEJpZAUFYXJ0SWQGaXNzdWVyBWJpZElkCGJpZE93bmVyBnB1YktleQkBB2J1eU1pbnQGBQFpBQVhcnRJZAUGaXNzdWVyBQViaWRJZAUIYmlkT3duZXIFBnB1YktleQFpAQljYW5jZWxCaWQEBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMzI5MDUzMjk2NgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzI5MDUzMjk2NgJfMQQGY2FsbGVyCAUNJHQwMzI5MDUzMjk2NgJfMgQEZGF0ZQgFDSR0MDMyOTA1MzI5NjYCXzMDAwkBAiE9AgUGY2FsbGVyBQhiaWRPd25lcgkBAiE9AgUGY2FsbGVyBQZpc3N1ZXIHCQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgQNcmV0dXJuTW9uZXlUbwMJAAACBQZjYWxsZXIFBmlzc3VlcgUIYmlkT3duZXIFBmNhbGxlcgQGYmlkTmJyCQEPZ2V0SW50ZWdlckJ5S2V5AQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQHYmlkRGF0YQkBDmdldFN0cmluZ0J5S2V5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg1CaWQgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8EB2Fzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAAECWJpZFN0YXR1cwIIQ0FOQ0VMRUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUKYmlkRGF0YUtleQIBXwUJYmlkU3RhdHVzCQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGUCBQZiaWROYnIAAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUNcmV0dXJuTW9uZXlUbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQUHYXNzZXRJZAUDbmlsAQJ0eAEIdmVyaWZpZXIABAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQDaW52BQckbWF0Y2gwAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CCmFkZEFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MACwMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAg11cGRhdGVBcnR3b3JrCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAwDAwMDCQAAAggFA2ludghmdW5jdGlvbgILc2VsbEFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MABQMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAglhY2NlcHRCaWQJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAMgTAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MABAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleac8hv8=", "height": 2793434, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6diqt1P78YYHi2jTo4LphCSTStrPyqSNRhsUuFPgeszp Next: 9Ujjf3HvnEUzDeRjUJeipCmtCyXnZRwpxJhQj4dvF6Bs Diff:
OldNewDifferences
519519 else bY
520520 let cp = bC(s)
521521 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- }
522+ then {
523+ let cq = if ((be != s))
524+ then invoke(Address(fromBase58String(j)), "swap", [l, 1], [AttachedPayment(be, co)])
525+ else unit
526+ if ((cq == cq))
527+ then {
528+ let cr = bC(s)
529+ if ((cr == cr))
530+ then {
531+ let cs = if ((bZ != 0))
532+ then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
533+ then (bY - bZ)
534+ else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
535+ else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
536+ then bY
537+ else (cr - cp), s)]
538+ let ct = if ((ca != 0))
539+ then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
540+ else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
541+ let cu = if (bz)
542+ then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
543+ else nil
544+ 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)
545+ if (bK)
546+ then [cn, ck, cj] :: cv
547+ else cn :: cv
548+ }
549+ else throw("Strict value is not equal to itself.")
550+ }
551+ else throw("Strict value is not equal to itself.")
552+ }
555553 else throw("Strict value is not equal to itself.")
556554 }
557555 }
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)
517517 let co = if ((bZ != 0))
518518 then (bY - bZ)
519519 else bY
520520 let cp = bC(s)
521521 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- }
522+ then {
523+ let cq = if ((be != s))
524+ then invoke(Address(fromBase58String(j)), "swap", [l, 1], [AttachedPayment(be, co)])
525+ else unit
526+ if ((cq == cq))
527+ then {
528+ let cr = bC(s)
529+ if ((cr == cr))
530+ then {
531+ let cs = if ((bZ != 0))
532+ then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
533+ then (bY - bZ)
534+ else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
535+ else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
536+ then bY
537+ else (cr - cp), s)]
538+ let ct = if ((ca != 0))
539+ then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
540+ else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
541+ let cu = if (bz)
542+ then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
543+ else nil
544+ 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)
545+ if (bK)
546+ then [cn, ck, cj] :: cv
547+ else cn :: cv
548+ }
549+ else throw("Strict value is not equal to itself.")
550+ }
551+ else throw("Strict value is not equal to itself.")
552+ }
555553 else throw("Strict value is not equal to itself.")
556554 }
557555 }
558556 }
559557 }
560558 }
561559 }
562560 }
563561
564562
565563 func cw (cx) = {
566564 let bh = cx
567565 if ($isInstanceOf(bh, "String"))
568566 then {
569567 let cy = bh
570568 cy
571569 }
572570 else throw("Sponsored Public Key String expected")
573571 }
574572
575573
576574 @Callable(cz)
577575 func setConf (c,cA) = {
578576 let V = toString(cz.caller)
579577 if (containsElement([z, toString(this)], V))
580578 then if (contains(c, "conf_"))
581579 then [StringEntry(c, cA)]
582580 else throw("Entries starting with conf_ only")
583581 else throw("You are not allowed to change this")
584582 }
585583
586584
587585
588586 @Callable(aZ)
589587 func addArtwork (aT,aU,aV,cB,aE,aI,aF,aJ,aG,cC,aW,by) = {
590588 let cD = bx(aZ, by)
591589 let X = cD._1
592590 let V = cD._2
593591 let bJ = cD._3
594592 let bz = cD._4
595593 let cE = aP(aG, aJ)
596594 let aR = cE._1
597595 let aS = cE._2
598596 let cF = aQ(V, aE, aF, aR, aI, aS, aT, aU, aV, aW)
599597 if ((cF != ""))
600598 then throw("Something went wrong!")
601599 else {
602600 let cG = (C((V + "_free_drops")) > 0)
603601 let cH = if (cG)
604602 then $Tuple2(0, s)
605603 else bc(aZ)
606604 let bb = cH._1
607605 let be = cH._2
608606 if (!(isDefined(bb)))
609607 then throw("Something went wrong")
610608 else {
611609 let cI = if (cG)
612610 then invoke(i, "useFreeDrop", [V], nil)
613611 else unit
614612 if ((cI == cI))
615613 then {
616614 let cu = if (bz)
617615 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
618616 else nil
619617 ([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)
620618 }
621619 else throw("Strict value is not equal to itself.")
622620 }
623621 }
624622 }
625623
626624
627625
628626 @Callable(aZ)
629627 func updateArtwork (ay,aT,aU,aV,cB,aE,aI,aF,aJ,aG,cC,aW,by) = if (!(H))
630628 then throw(I)
631629 else {
632630 let cJ = bx(aZ, by)
633631 let bI = cJ._1
634632 let V = cJ._2
635633 let bJ = cJ._3
636634 let bz = cJ._4
637635 let cK = aP(aG, aJ)
638636 let aR = cK._1
639637 let aS = cK._2
640638 let cF = aQ(V, aE, aF, aR, aI, aS, aT, aU, aV, aW)
641639 if ((cF != ""))
642640 then throw("Something went wrong!")
643641 else {
644642 let cL = b(Y(V, ay))
645643 if ((cL == ""))
646644 then throw("Entry not found")
647645 else {
648646 let cM = b(ar(V, ay))
649647 if ((cM == "ILLEGAL"))
650648 then throw("Cannot update ILLEGAL artwork")
651649 else if (!(bf(V, ay)))
652650 then {
653651 let cu = if (bz)
654652 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
655653 else nil
656654 ([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)
657655 }
658656 else throw("Already minted")
659657 }
660658 }
661659 }
662660
663661
664662
665663 @Callable(aZ)
666664 func flagArtwork (X,cN,cM,cO) = {
667665 let cP = bB(aZ)
668666 let bI = cP._1
669667 let V = cP._2
670668 if (containsElement([z, toString(this)], V))
671669 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cM))
672670 then [StringEntry(ar(cN, X), cM), StringEntry(al(cN, X), cO)]
673671 else throw(("Unknow status " + cM))
674672 else throw("You are not allowed")
675673 }
676674
677675
678676
679677 @Callable(aZ)
680678 func deleteArtwork (X,cN) = {
681679 let cQ = bB(aZ)
682680 let bI = cQ._1
683681 let V = cQ._2
684682 let bg = if (containsElement([z, toString(this)], V))
685683 then cN
686684 else V
687685 let cL = valueOrErrorMessage(b(Y(bg, X)), "No art matching for this address")
688686 if ((cL == ""))
689687 then throw("No art matching for this address")
690688 else {
691689 let aA = b(ax(bg, X))
692690 let cR = if ((aA != ""))
693691 then b(ae(bg, X))
694692 else ""
695693 let cS = if ((cR == ""))
696694 then nil
697695 else [DeleteEntry(aB(bg, cR))]
698696 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)
699697 if (!(bf(bg, X)))
700698 then if (!(H))
701699 then throw(I)
702700 else cT
703701 else if (containsElement([z, toString(this)], V))
704702 then cT
705703 else throw("Art already minted, you cannot delete it")
706704 }
707705 }
708706
709707
710708
711709 @Callable(aZ)
712710 func sellArtwork (X,bp,cU,be,bL,by) = {
713711 let cV = bx(aZ, by)
714712 let bI = cV._1
715713 let V = cV._2
716714 let bJ = cV._3
717715 let bz = cV._4
718716 let bO = b(Y(V, X))
719717 if ((bO == ""))
720718 then throw("This art doesn't match your account")
721719 else {
722720 let cM = b(ar(V, X))
723721 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cM))
724722 then throw("Flagged artwork")
725723 else {
726724 let cW = B(("current_bidamount_" + X))
727725 if ((0 > bL))
728726 then throw("Negative end")
729727 else if (if ((bL > 0))
730728 then if ((cU != 1))
731729 then true
732730 else (bp != 0)
733731 else false)
734732 then throw("Timed offer only allowed for unique edition and offer only")
735733 else {
736734 let cX = if ((bL == 0))
737735 then 0
738736 else height
739737 if (!(bn(be)))
740738 then throw("Something went wrong!")
741739 else if (!(bo(bp)))
742740 then throw("Something went wrong!")
743741 else {
744742 let aX = aN(V)
745743 if ((aX != ""))
746744 then throw(aX)
747745 else {
748746 let bQ = B(af(V, X))
749747 let bR = B(ad(V, X))
750748 if ((cU > 100))
751749 then throw("100 editions max per artwork")
752750 else if (if ((bQ != 0))
753751 then (bQ == bR)
754752 else false)
755753 then throw("Max edition reached.")
756754 else if (if ((bQ > 0))
757755 then (bR != cU)
758756 else false)
759757 then throw("Cannot change maximum issuable anymore")
760758 else if (if ((cW > 0))
761759 then (bR != cU)
762760 else false)
763761 then throw("Cannot change maximum issuable with active orders")
764762 else {
765763 let cg = if (if ((bp > 0))
766764 then (cU > 0)
767765 else false)
768766 then true
769767 else false
770768 let cu = if (bz)
771769 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
772770 else nil
773771 ([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)
774772 }
775773 }
776774 }
777775 }
778776 }
779777 }
780778 }
781779
782780
783781
784782 @Callable(aZ)
785783 func buyArtwork (X,bE) = bD(aZ, X, bE, "", "", "")
786784
787785
788786
789787 @Callable(aZ)
790788 func setBid (X,bE) = {
791789 let cY = bB(aZ)
792790 let bI = cY._1
793791 let V = cY._2
794792 let bJ = cY._3
795793 let cZ = aY(aZ)
796794 let ba = cZ._1
797795 let bb = cZ._2
798796 let be = if (!(isDefined(ba.assetId)))
799797 then "WAVES"
800798 else toBase58String(value(ba.assetId))
801799 let bL = B(ap(bE, X))
802800 if (if ((bL != 0))
803801 then (height >= bL)
804802 else false)
805803 then throw("Sale ended.")
806804 else {
807805 let cW = B(("current_bidamount_" + X))
808806 if (!(bn(be)))
809807 then throw("asset not accepted")
810808 else if (!(bo(bb)))
811809 then throw("Wrong min sell")
812810 else {
813811 let bQ = B(af(bE, X))
814812 let bR = B(ad(bE, X))
815813 if ((0 >= bR))
816814 then throw("No max edition set for this artwork")
817815 else if ((bQ >= bR))
818816 then throw("Sold out, you cannot bid")
819817 else [StringEntry((((((((("bid_" + X) + "_") + bE) + "_") + V) + "_") + bI) + "_OPEN"), ((((be + "_") + toString(bb)) + "_") + toString(bJ))), IntegerEntry(("current_bidamount_" + X), (cW + 1))]
820818 }
821819 }
822820 }
823821
824822
825823
826824 @Callable(aZ)
827825 func acceptBid (X,bE,bF,bG,by) = bD(aZ, X, bE, bF, bG, by)
828826
829827
830828
831829 @Callable(aZ)
832830 func cancelBid (X,bE,bF,bG) = {
833831 let da = bB(aZ)
834832 let bI = da._1
835833 let V = da._2
836834 let bJ = da._3
837835 if (if ((V != bG))
838836 then (V != bE)
839837 else false)
840838 then throw("You cannot do this action")
841839 else {
842840 let db = if ((V == bE))
843841 then bG
844842 else V
845843 let cW = B(("current_bidamount_" + X))
846844 let bs = ((((((("bid_" + X) + "_") + bE) + "_") + bG) + "_") + bF)
847845 let bt = b((bs + "_OPEN"))
848846 if ((bt == ""))
849847 then throw("Bid not found")
850848 else {
851849 let bu = split(bt, "_")
852850 let be = bq(bu[0])
853851 let dc = "CANCELED"
854852 [DeleteEntry((bs + "_OPEN")), StringEntry(((bs + "_") + dc), ((bt + "_") + toString(bJ))), IntegerEntry(("current_bidamount_" + X), (cW - 1)), ScriptTransfer(Address(fromBase58String(db)), parseIntValue(bu[1]), be)]
855853 }
856854 }
857855 }
858856
859857
860858 @Verifier(dd)
861859 func de () = {
862860 let bh = dd
863861 if ($isInstanceOf(bh, "InvokeScriptTransaction"))
864862 then {
865863 let df = bh
866864 if (if (if (if ((df.function == "addArtwork"))
867865 then (df.dApp == this)
868866 else false)
869867 then (df.fee == 500000)
870868 else false)
871869 then (df.feeAssetId == unit)
872870 else false)
873871 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[11])))
874872 else if (if (if (if ((df.function == "updateArtwork"))
875873 then (df.dApp == this)
876874 else false)
877875 then (df.fee == 500000)
878876 else false)
879877 then (df.feeAssetId == unit)
880878 else false)
881879 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[12])))
882880 else if (if (if (if ((df.function == "sellArtwork"))
883881 then (df.dApp == this)
884882 else false)
885883 then (df.fee == 500000)
886884 else false)
887885 then (df.feeAssetId == unit)
888886 else false)
889887 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[5])))
890888 else if (if (if (if ((df.function == "acceptBid"))
891889 then (df.dApp == this)
892890 else false)
893891 then (df.fee == 500000)
894892 else false)
895893 then (df.feeAssetId == unit)
896894 else false)
897895 then sigVerify_128Kb(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[4])))
898896 else sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
899897 }
900898 else sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
901899 }
902900

github/deemru/w8io/026f985 
107.68 ms