tx · 9VSHrRNTXcDKkqhrprMjNGh8puKBGagDp9Vd8KrtwQyN

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02600000 Waves

2023.02.03 05:55 [2432865] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "9VSHrRNTXcDKkqhrprMjNGh8puKBGagDp9Vd8KrtwQyN", "fee": 2600000, "feeAssetId": null, "timestamp": 1675391756015, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "3TZsW5QfFhrGh6r2fiXvpdnrENRW1L7o7LgJiFUiUW3cyX7S8chWANRwW9AxuoJHSosqaJRi6EWgCAUznq1fgwVf" ], "script": "base64:BgJfCAISBAoCCAgSEAoOCAgICAgICAgICAgIAQgSDwoNCAgICAgICAgICAgBCBIGCgQICAgIEgQKAggIEggKBggBAQgBCBIECgIICBIECgIICBIGCgQICAgIEgYKBAgICAhQAAdWRVJTSU9OAgYxLjEuMTABDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgAACHVuaXRUZXN0BwAJb3JhY2xlRmVlCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECD2NvbmZfb3JhY2xlX2ZlZQAIc2lnbkRhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9zaWdud2ViX2RhcHAAC2ZlZVJlY2VpdmVyCQEOZ2V0U3RyaW5nQnlLZXkBAhFjb25mX2ZlZV9yZWNlaXZlcgAIdXNlckRhcHADBQh1bml0VGVzdAkBBXZhbHVlAQkApggBAiMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX3VzZXJzX2RhcHAADXdoaXRlbGlzdERhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQITY29uZl93aGl0ZWxpc3RfZGFwcAALc2lnbkFzc2V0SWQJANkEAQkBDmdldFN0cmluZ0J5S2V5AQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAt1c2RuQXNzZXRJZAkA2QQBCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRE4AC3VzZHRBc3NldElkCQDZBAEJAQ5nZXRTdHJpbmdCeUtleQECGGNvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEVAAMd2F2ZXNBc3NldElkAQAABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEOY2hlY2tXaGl0ZWxpc3QBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ13aGl0ZWxpc3REYXBwBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwAHc2lnbkN1dAAHAAt1c2RuV2F2ZUN1dAAKAA5kZWZhdWx0TGljZW5jZQkBDmdldFN0cmluZ0J5S2V5AQIUY29uZl9kZWZhdWx0X2xpY2VuY2UAEmRlZmF1bHRIYXNoTGljZW5jZQkBDmdldFN0cmluZ0J5S2V5AQIZY29uZl9kZWZhdWx0X2xpY2VuY2VfaGFzaAALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUIdXNlckRhcHACFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHACFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQAEHVzZXJVbnJlZ2lzdGVyZWQCDFVOUkVHSVNURVJFRAALdXNlckFsbG93ZWQCB0FMTE9XRUQAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQkArAICAhJjZXJ0aWZpY2F0aW9uX2ZlZV8JANgEAQULc2lnbkFzc2V0SWQBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkA6AcBFGNoZWNrU2lnbkNlcnRpZmljYXRlAwZzaWduSUQFT3duZXIKc2hhMjU2SGFzaAQHJG1hdGNoMAkAnQgCBQhzaWduRGFwcAkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18FBnNpZ25JRAIBXwUFT3duZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkBCGNvbnRhaW5zAgUBYQUKc2hhMjU2SGFzaAYHBwELdmFsaWRhdGVDSUQBA2NpZAMJAQhjb250YWlucwIFA2NpZAIBLwMDCQBmAgBMCQCxAgEFA2NpZAkAAAIJALECAQkAkQMCCQC1CQIFA2NpZAIBLwAAADsHCQBmAgAQCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAQcHAQx2YWxpZGF0ZUhhc2gBBGhhc2gJAAACCQCxAgEFBGhhc2gAQAENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyAQdrZXlEYXRlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5TmFtZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleURlc2MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlEaXNwbGF5Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDWtleUV4cG9ydEhhc2gCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUFYXJ0SWQCAV8FBmNhbGxlcgEMa2V5RXhwb3J0Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICD2FydF9leHBvcnRfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5TWF4TWludAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfbWF4bWludF8FBWFydElkAgFfBQZjYWxsZXIBCWtleVNpZ25JRAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfc2lnbmlkXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5SXNzdWVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlPblNhbGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X29uc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBDmtleUxpY2VuY2VIYXNoAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlMaWNlbmNlQ2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9saWNlbmNlX2NpZF8FBWFydElkAgFfBQZjYWxsZXIBB2tleVRhZ3MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X3RhZ3NfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUeXBlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5Tm90ZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbm90ZV8FBWFydElkAgFfBQZjYWxsZXIBCmtleUNyYXdsZXICBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2NyYXdsZXJfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEMa2V5Um95YWx0aWVzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDmFydF9yb3lhbHRpZXNfBQVhcnRJZAIBXwUGY2FsbGVyAQhrZXlQcmljZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgphcnRfcHJpY2VfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlFbmRTYWxlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDGFydF9lbmRzYWxlXwUFYXJ0SWQCAV8FBmNhbGxlcgESa2V5QXNzZXRJZEFjY2VwdGVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEmFydF9hc3NldEFjY2VwdGVkXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5RmxhZwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZmxhZ18FBWFydElkAgFfBQZjYWxsZXIBEmtleUFydGlzdEFnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAg1hcnRpc3RfYWdlbnRfBQphcnRpc3RBZGRyARRrZXlQcmltYXJ5U2hhcmVBZ2VudAEKYXJ0aXN0QWRkcgkArAICAhVhcnRpc3RfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBGGtleUFydGlzdFB1YmxpY0FnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAhRhcnRpc3RfcHVibGljX2FnZW50XwUKYXJ0aXN0QWRkcgEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIcYXJ0aXN0X3B1YmxpY19hZ2VudF9wcmltYXJ5XwUKYXJ0aXN0QWRkcgERa2V5SGFzaEJ5VHhpZEFkZHICBmNhbGxlcgR0eGlkCQCsAgIJAKwCAgkArAICAhNnZXRfaGFzaGJ5dHhpZGFkZHJfBQR0eGlkAgFfBQZjYWxsZXIBDmtleU93bmVyQnlIYXNoAQpzaGEyNTZIYXNoCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUKc2hhMjU2SGFzaAENa2V5aWRCeVNpZ25pZAIGY2FsbGVyBnNpZ25JZAkArAICCQCsAgIJAKwCAgISZ2V0X2FydGlkYnlzaWduaWRfBQZzaWduSWQCAV8FBmNhbGxlcgESa2V5VHhpZEJ5SGFzaE93bmVyAgpzaGEyNTZIYXNoBmNhbGxlcgkArAICAhdnZXRfdHhpZF9ieV9oYXNoX293bmVyXwkA2AQBCQDUFgEJAJsDAQkArAICBQpzaGEyNTZIYXNoBQZjYWxsZXIBDnZhbGlkYXRlQWxsQ0lEAwpjaWREaXNwbGF5CWNpZEV4cG9ydApjaWRMaWNlbmNlAwkBASEBCQELdmFsaWRhdGVDSUQBBQpjaWREaXNwbGF5CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCWNpZEV4cG9ydAkAAgECEFdyb25nIEV4cG9ydCBDSUQDAwkBAiE9AgUKY2lkTGljZW5jZQIACQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZExpY2VuY2UHCQACAQIRV3JvbmcgTGljZW5jZSBDSUQGAQ92YWxpZGF0ZUFsbEhhc2gCDHNoYTI1NkV4cG9ydA1zaGEyNTZMaWNlbmNlAwkBASEBCQEMdmFsaWRhdGVIYXNoAQUMc2hhMjU2RXhwb3J0CQACAQIYRXhwb3J0IEhhc2ggNjQgY2hhci4gbWF4AwkBASEBCQEMdmFsaWRhdGVIYXNoAQUNc2hhMjU2TGljZW5jZQkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQ52YWxpZGF0ZVN0cmluZwIDc3RyA21heAMJAAACCQCxAgEFA3N0cgAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUDc3RyBQNtYXgJAAIBCQCsAgIFA3N0cgIMIGlzIHRvbyBsb25nBgEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwMJAAACBQp1c2VyU3RhdHVzBRB1c2VyVW5yZWdpc3RlcmVkBgkAAAIFCnVzZXJTdGF0dXMFC3VzZXJBbGxvd2VkAi5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAIFCnVzZXJTdGF0dXMFDXVzZXJTdXNwZW5kZWQCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFCnVzZXJTdGF0dXMFC3VzZXJSZW1vdmVkAg9BY2NvdW50IHJlbW92ZWQCAAEKc2V0TEljZW5jZQIKY2lkTGljZW5jZQ1zaGEyNTZMaWNlbmNlBANjaWQDCQAAAgkAsQIBBQpjaWRMaWNlbmNlAAAFDmRlZmF1bHRMaWNlbmNlBQpjaWRMaWNlbmNlBARoYXNoAwkAAAIJALECAQUNc2hhMjU2TGljZW5jZQAABRJkZWZhdWx0SGFzaExpY2VuY2UFDXNoYTI1NkxpY2VuY2UJAJQKAgUDY2lkBQRoYXNoARN2YWxpZGF0ZUFydHdvcmtEYXRhCgZjYWxsZXIKY2lkRGlzcGxheQljaWRFeHBvcnQKbGljZW5jZUNJRAxzaGEyNTZFeHBvcnQLbGljZW5jZUhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzCXJveWFsdGllcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQ52YWxpZGF0ZUFsbENJRAMFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAkAAgECEFByb2JsZW0gd2l0aCBDSUQDCQEBIQEJAQ92YWxpZGF0ZUFsbEhhc2gCBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQBkCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUDCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguAgABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEPdmFsaWRhdGVQYXltZW50AQFpBAskdDA5MTgwOTIxNgkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQskdDA5MTgwOTIxNgJfMQQGYW1vdW50CAULJHQwOTE4MDkyMTYCXzIEB2Fzc2V0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAACCAUHcGF5bWVudAdhc3NldElkBQtzaWduQXNzZXRJZAcIBQdwYXltZW50B2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUGYW1vdW50BRljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQACAQkArAICAhlQYXltZW50IGFtb3VudCBzaG91bGQgYmUgCQCkAwEFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAJQKAgUGYW1vdW50BQdhc3NldElkAQtpc0FydE1pbnRlZAIJYWRkclRvVXNlBWFydElkBAckbWF0Y2gwCQCaCAIFBHRoaXMJAQlrZXlJc3N1ZWQCBQlhZGRyVG9Vc2UFBWFydElkAwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAMJAQIhPQIFAWIAAAYHBwEUdmFsaWRhdGVQcmljZUFzc2V0SWQDAWkMcHJpY2VBc3NldElkDGFydHdvcmtQcmljZQQLJHQwOTgwNDk4NDAJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAULJHQwOTgwNDk4NDACXzEEBmFtb3VudAgFCyR0MDk4MDQ5ODQwAl8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAUEdW5pdAMDCQBmAgkAsQIBBQxwcmljZUFzc2V0SWQAAAkAAAIJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAUMcHJpY2VBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECDldyb25nIGFzc2V0IGlkAwMJAAACBQdhc3NldElkBQR1bml0CQECIT0CBQxwcmljZUFzc2V0SWQCAAcJAAIBAg5Xcm9uZyBhc3NldCBpZAMJAQIhPQIFDGFydHdvcmtQcmljZQUGYW1vdW50CQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQZhbW91bnQFB2Fzc2V0SWQBEGFjY2VwdGVkQXNzZXRJZHMBB2Fzc2V0SWQDAwMDAwkBAiE9AgUHYXNzZXRJZAkA2AQBBQtzaWduQXNzZXRJZAkBAiE9AgUHYXNzZXRJZAkA2AQBBQx3YXZlc0Fzc2V0SWQHCQECIT0CBQdhc3NldElkAgVXQVZFUwcJAQIhPQIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQHCQECIT0CBQdhc3NldElkCQDYBAEFC3VzZHRBc3NldElkBwkAAgECJk9ubHkgU0lHTiwgVVNETixVU0RUIG9yIFdBVkVTIGFjY2VwdGVkBgEPdmFsaWRhdGVNaW5TZWxsAgdhc3NldElkBXByaWNlBAxtaW5TZWxsV2F2ZXMDBQh1bml0VGVzdAAKCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQECDndhdmVzX21pbl9zZWxsBAttaW5TZWxsVXNkbgDAhD0EC21pblNlbGxTaWduAwUIdW5pdFRlc3QAAQkAaAIFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAgMDAwMDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkdEFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULc2lnbkFzc2V0SWQJAGYCBQttaW5TZWxsU2lnbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwMJAAACBQdhc3NldElkCQDYBAEFDHdhdmVzQXNzZXRJZAYJAAACBQdhc3NldElkAgVXQVZFUwkAZgIFDG1pblNlbGxXYXZlcwUFcHJpY2UHCQECIT0CBQVwcmljZQAABwkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEKYmlkRGF0YUtleQQHYmlkRGF0YQkBDmdldFN0cmluZ0J5S2V5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg1CaWQgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8ECWJpZEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQQKYmlkQXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAAMJAGcCAAAFCWJpZEFtb3VudAkAAgECDFdyb25nIGFtb3VudAkAlAoCBQliaWRBbW91bnQFCmJpZEFzc2V0SWQBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIBaQZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEC2lzU3BvbnNvcmVkAwkBAiE9AgUGcHViS2V5AgAJAQt2YWx1ZU9yRWxzZQIJAQ5jaGVja1doaXRlbGlzdAEJAKwCAgkApQgBCQCnCAEJANkEAQUGcHViS2V5AglfZnJlZV90eHMAAAAABAZjYWxsZXIDAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgULaXNTcG9uc29yZWQAAAcJAKUIAQkApwgBCQDZBAEFBnB1YktleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBNnZXRfc3BvbnNvcmVkX3dhdmVzAwMJAQIhPQIFBnB1YktleQIACQBmAgULaXNTcG9uc29yZWQAAAcJAPwHBAUNd2hpdGVsaXN0RGFwcAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFBnB1YktleQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUTZ2V0X3Nwb25zb3JlZF93YXZlcwUTZ2V0X3Nwb25zb3JlZF93YXZlcwkAlgoECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFBmNhbGxlcggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAGYCBQtpc1Nwb25zb3JlZAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQdidXlNaW50BQFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMTI5NzcxMzAzNgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTI5NzcxMzAzNgJfMQQGY2FsbGVyCAUNJHQwMTI5NzcxMzAzNgJfMgQEZGF0ZQgFDSR0MDEyOTc3MTMwMzYCXzMEBWlzQmlkAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwYHBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAMDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQEBIQEFBWlzQmlkBwkAAgECC1NhbGUgZW5kZWQuBA5jYWxsZXJJc0lzc3VlcgkAAAIFBmNhbGxlcgUGaXNzdWVyBAh0b3RhbE5GVAkBD2dldEludGVnZXJCeUtleQECEHRvdGFsX25mdF9pc3N1ZWQEBnNpZ25JRAkBDmdldFN0cmluZ0J5S2V5AQkBCWtleVNpZ25JRAIFBmlzc3VlcgUFYXJ0SWQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAhpc09uU2FsZQkBD2dldEJvb2xlYW5CeUtleQEJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQEDGFydHdvcmtQcmljZQMFDmNhbGxlcklzSXNzdWVyCQBoAgUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQACCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCGtleVByaWNlAgUGaXNzdWVyBQVhcnRJZAQMcHJpY2VBc3NldElkAwUOY2FsbGVySXNJc3N1ZXIJANgEAQULc2lnbkFzc2V0SWQJAQ5nZXRTdHJpbmdCeUtleQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZpc3N1ZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZpc3N1ZXIFBWFydElkAwMDCQEBIQEFBWlzQmlkCQEBIQEFDmNhbGxlcklzSXNzdWVyBwMDCQBnAgAABQxhcnR3b3JrUHJpY2UGCQEBIQEFCGlzT25TYWxlBgkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFBWlzQmlkBQ5jYWxsZXJJc0lzc3VlcgcJAGcCAAAFCm1heENhblNlbGwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmlzc3VlcgMDBQVpc0JpZAkBAiE9AgUJY2hlY2tVc2VyAgAHCQACAQUJY2hlY2tVc2VyBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQNJHQwMTQ1NTUxNDc0NwMFBWlzQmlkCQEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEFCmJpZERhdGFLZXkJARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMFAWkFDHByaWNlQXNzZXRJZAUMYXJ0d29ya1ByaWNlBAZhbW91bnQIBQ0kdDAxNDU1NTE0NzQ3Al8xBAdhc3NldElkCAUNJHQwMTQ1NTUxNDc0NwJfMgQFYWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBBQZpc3N1ZXIAAAQLcHVibGljQWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBBBwdWJsaWNBZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBBQZpc3N1ZXIAAAQNaXNXaGl0ZWxpc3RlZAkBDmNoZWNrV2hpdGVsaXN0AQUGaXNzdWVyBANjdXQDCQBmAgUNaXNXaGl0ZWxpc3RlZAUGaGVpZ2h0AAADCQAAAgUHYXNzZXRJZAULc2lnbkFzc2V0SWQFB3NpZ25DdXQFC3VzZG5XYXZlQ3V0BA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQNjdXQAZAQOYW1vdW50Rm9yQWdlbnQDAwMJAQIhPQIFBWFnZW50BQtmZWVSZWNlaXZlcgkAZgIFCmFnZW50U2hhcmUAAAcJAGYCBQZoZWlnaHQFDWlzV2hpdGVsaXN0ZWQHCQBrAwUGYW1vdW50BQphZ2VudFNoYXJlAGQAAAQUYW1vdW50Rm9yUHVibGljQWdlbnQDAwMJAQIhPQIFC3B1YmxpY0FnZW50BQtmZWVSZWNlaXZlcgkAZgIFEHB1YmxpY0FnZW50U2hhcmUAAAcJAGYCBQZoZWlnaHQFDWlzV2hpdGVsaXN0ZWQHCQBrAwUGYW1vdW50BRBwdWJsaWNBZ2VudFNoYXJlAGQAAAQQYW1vdW50Rm9yQ3JlYXRvcgkAZQIJAGUCBQZhbW91bnQFDWFtb3VudEZvclNpZ24FFGFtb3VudEZvclB1YmxpY0FnZW50AwkAAAIFCmFtb3VudFNvbGQFCm1heENhblNlbGwJAAIBAgxBcnQgc29sZCBvdXQEDW5ld0Ftb3VudFNvbGQJAGQCBQphbW91bnRTb2xkAAEECWlzc3VlTWV0YQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUGaXNzdWVyAgosCiBBcnRJRDogBQVhcnRJZAILLAogU2lnbklEOiAFBnNpZ25JRAIRLAogQXJ0d29yayBuYW1lOiAFC2FydHdvcmtOYW1lAgosCiBJc3N1ZTogCQCkAwEFDW5ld0Ftb3VudFNvbGQCAS8JAKQDAQUKbWF4Q2FuU2VsbAQIaXNzdWVORlQJAMIIBQkArAICAgNTQV8JAKQDAQkAZAIFCHRvdGFsTkZUAAEFCWlzc3VlTWV0YQABAAAHBAVpZE5GVAkAuAgBBQhpc3N1ZU5GVAQKc2VsbFN0YXR1cwMDCQAAAgUNbmV3QW1vdW50U29sZAUKbWF4Q2FuU2VsbAYJAQEhAQUIaXNPblNhbGUHBgQKcmVjZWl2ZU5GVAMDAwkAAAIFBmNhbGxlcgUGaXNzdWVyCQECIT0CBQhiaWRPd25lcgIABwkBAiE9AgUFYmlkSWQCAAcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGJpZE93bmVyCAUBaQZjYWxsZXIECmFzc2V0SWRCaWQDCQEBIQEJAQlpc0RlZmluZWQBBQdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBBQdhc3NldElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWREZWxPbGQJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4ECWJpZFVwZGF0ZQkBC1N0cmluZ0VudHJ5AgkArAICBQpiaWREYXRhS2V5AgdfQ0xPU0VECQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlBAdzb2xkS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQ1uZXdBbW91bnRTb2xkAgRfb2ZfCQCkAwEFCm1heENhblNlbGwCAV8FBWFydElkAgFfBQZpc3N1ZXIECXNvbGRWYWx1ZQMJAQEhAQUFaXNCaWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUGY2FsbGVyAgFfCQCkAwEFBGRhdGUCAV8FAmlkAgFfCQCkAwEFDGFydHdvcmtQcmljZQIBXwUMcHJpY2VBc3NldElkAgFfCQDYBAEFBWlkTkZUCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUKcmVjZWl2ZU5GVAIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQZhbW91bnQCAV8FCmFzc2V0SWRCaWQCAV8JANgEAQUFaWRORlQECHNvbGREYXRhCQELU3RyaW5nRW50cnkCBQdzb2xkS2V5BQlzb2xkVmFsdWUEFGNvbW1pc3Npb25zV2l0aEFnZW50AwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUFYWdlbnQFDmFtb3VudEZvckFnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQ1hbW91bnRGb3JTaWduBQdhc3NldElkBQNuaWwEGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50AwkBAiE9AgUUYW1vdW50Rm9yUHVibGljQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULcHVibGljQWdlbnQFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIJAGUCBRBhbW91bnRGb3JDcmVhdG9yBRRhbW91bnRGb3JQdWJsaWNBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIFEGFtb3VudEZvckNyZWF0b3IFB2Fzc2V0SWQFA25pbAQGYnV5UmVzCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQFDW5ld0Ftb3VudFNvbGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRuZnRfCQDYBAEFBWlkTkZUBQdzb2xkS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUIdG90YWxORlQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIFCGlzc3VlTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCnJlY2VpdmVORlQAAQUFaWRORlQFA25pbAUUY29tbWlzc2lvbnNXaXRoQWdlbnQFGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50AwUFaXNCaWQJAMwIAgUIc29sZERhdGEJAMwIAgUJYmlkVXBkYXRlCQDMCAIFCWJpZERlbE9sZAUGYnV5UmVzCQDMCAIFCHNvbGREYXRhBQZidXlSZXMBCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAoGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBCmFkZEFydHdvcmsOCnNoYTI1Nkhhc2gGc2lnbklEBG5hbWULZGVzY3JpcHRpb24EdGFncwR0eXBlCmNpZERpc3BsYXkMc2hhMjU2RXhwb3J0CWNpZEV4cG9ydA1zaGEyNTZMaWNlbmNlCmNpZExpY2VuY2UHY3Jhd2xlcglyb3lhbHRpZXMGcHViS2V5BA0kdDAxOTY3NjE5NzQ5CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAVhcnRJZAgFDSR0MDE5Njc2MTk3NDkCXzEEBmNhbGxlcggFDSR0MDE5Njc2MTk3NDkCXzIEBGRhdGUIBQ0kdDAxOTY3NjE5NzQ5Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDE5Njc2MTk3NDkCXzQDCQEBIQEJAQx2YWxpZGF0ZUhhc2gBBQpzaGEyNTZIYXNoCQACAQIkSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBA0kdDAxOTg1MDE5OTE5CQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAxOTg1MDE5OTE5Al8xBAtsaWNlbmNlSGFzaAgFDSR0MDE5ODUwMTk5MTkCXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBBB3aGl0ZWxpc3RlZF9kcm9wCQBmAgkBDmNoZWNrV2hpdGVsaXN0AQkArAICBQZjYWxsZXICC19mcmVlX2Ryb3BzAAAEDSR0MDIwMjE4MjAzMDIDBRB3aGl0ZWxpc3RlZF9kcm9wCQCUCgIAAAUGc2lnbklECQEPdmFsaWRhdGVQYXltZW50AQUBaQQGYW1vdW50CAUNJHQwMjAyMTgyMDMwMgJfMQQHYXNzZXRJZAgFDSR0MDIwMjE4MjAzMDICXzIDCQEBIQEJAQlpc0RlZmluZWQBBQZhbW91bnQJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQKZW50cnlFeGlzdAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleVR4aWRCeUhhc2hPd25lcgIFCnNoYTI1Nkhhc2gFBmNhbGxlcgMJAQIhPQIFCmVudHJ5RXhpc3QCAAkAAgECFFlvdSBhbHJlYWR5IGFkZGVkIGl0BAloYXNoRXhpc3QJAQ5nZXRTdHJpbmdCeUtleQEJAQ5rZXlPd25lckJ5SGFzaAEFCnNoYTI1Nkhhc2gDCQECIT0CBQloYXNoRXhpc3QCAAkAAgECF0hhc2ggYWxyZWFkeSByZWdpc3RlcmVkBA9pc1NpZ25DZXJ0aWZpZWQJARRjaGVja1NpZ25DZXJ0aWZpY2F0ZQMFBnNpZ25JRAUGY2FsbGVyBQpzaGEyNTZIYXNoAwkBASEBBQ9pc1NpZ25DZXJ0aWZpZWQJAAIBAixTaWduIENlcnRpZmljYXRlIG5vdCBmb3VuZCBmb3IgdGhpcyBhZGRyZXNzLgQXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3ADBRB3aGl0ZWxpc3RlZF9kcm9wCQD8BwQFDXdoaXRlbGlzdERhcHACC3VzZUZyZWVEcm9wCQDMCAIFBmNhbGxlcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AFF2RlY3JlYXNlX3doaXRlbGlzdF9kcm9wBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlPd25lckJ5SGFzaAEFCnNoYTI1Nkhhc2gFBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5VHhpZEJ5SGFzaE93bmVyAgUKc2hhMjU2SGFzaAUGY2FsbGVyBQVhcnRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleURhdGUCBQZjYWxsZXIFBWFydElkBQRkYXRlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQVhcnRJZAUEbmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5RGVzYwIFBmNhbGxlcgUFYXJ0SWQFC2Rlc2NyaXB0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlEaXNwbGF5Q2lkAgUGY2FsbGVyBQVhcnRJZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQVhcnRJZAUJY2lkRXhwb3J0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlFeHBvcnRIYXNoAgUGY2FsbGVyBQVhcnRJZAUMc2hhMjU2RXhwb3J0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlMaWNlbmNlSGFzaAIFBmNhbGxlcgUFYXJ0SWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlMaWNlbmNlQ2lkAgUGY2FsbGVyBQVhcnRJZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5VHlwZQIFBmNhbGxlcgUFYXJ0SWQFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVRhZ3MCBQZjYWxsZXIFBWFydElkBQR0YWdzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEJa2V5U2lnbklEAgUGY2FsbGVyBQVhcnRJZAUGc2lnbklECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5SXNzdWVkAgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGY2FsbGVyBQVhcnRJZAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleWlkQnlTaWduaWQCBQZjYWxsZXIFBnNpZ25JRAUFYXJ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUhhc2hCeVR4aWRBZGRyAgUGY2FsbGVyBQVhcnRJZAUKc2hhMjU2SGFzaAkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5Q3Jhd2xlcgIFBmNhbGxlcgUFYXJ0SWQFB2NyYXdsZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlSb3lhbHRpZXMCBQZjYWxsZXIFBWFydElkBQlyb3lhbHRpZXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQZhbW91bnQFC3NpZ25Bc3NldElkBQNuaWwFCnR4VG9DYWxsZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdXBkYXRlQXJ0d29yaw0EdHhpZARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MEdHlwZQpjaWREaXNwbGF5DHNoYTI1NkV4cG9ydAljaWRFeHBvcnQNc2hhMjU2TGljZW5jZQpjaWRMaWNlbmNlB2NyYXdsZXIJcm95YWx0aWVzBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQNJHQwMjMzMzYyMzQwNgkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyMzMzNjIzNDA2Al8xBAZjYWxsZXIIBQ0kdDAyMzMzNjIzNDA2Al8yBARkYXRlCAUNJHQwMjMzMzYyMzQwNgJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyMzMzNjIzNDA2Al80BA0kdDAyMzQxNjIzNDg1CQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAyMzQxNjIzNDg1Al8xBAtsaWNlbmNlSGFzaAgFDSR0MDIzNDE2MjM0ODUCXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUEdHhpZAMJAAACBQplbnRyeUV4aXN0AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQR0eGlkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBC2lzQXJ0TWludGVkAgUGY2FsbGVyBQR0eGlkBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQR0eGlkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUEdHhpZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQR0eGlkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBHR4aWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUEdHhpZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBHR4aWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQR0eGlkBQR0YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQR0eGlkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQR0eGlkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQR0eGlkBQlyb3lhbHRpZXMFA25pbAUKdHhUb0NhbGxlcgkAAgECDkFscmVhZHkgbWludGVkAWkBC2ZsYWdBcnR3b3JrBAVhcnRJZARhZGRyBGZsYWcEbm90ZQQNJHQwMjUxMTIyNTE0NgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjUxMTIyNTE0NgJfMQQGY2FsbGVyCAUNJHQwMjUxMTIyNTE0NgJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleUZsYWcCBQRhZGRyBQVhcnRJZAUEZmxhZwkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5Tm90ZQIFBGFkZHIFBWFydElkBQRub3RlBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQRmbGFnCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQ1kZWxldGVBcnR3b3JrAgVhcnRJZARhZGRyBA0kdDAyNTU4MjI1NjE2CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyNTU4MjI1NjE2Al8xBAZjYWxsZXIIBQ0kdDAyNTU4MjI1NjE2Al8yBAlhZGRyVG9Vc2UDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBQRhZGRyBQZjYWxsZXIECmVudHJ5RXhpc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQlhZGRyVG9Vc2UFBWFydElkAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQplbnRyeUV4aXN0AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQKc2hhMjU2SGFzaAkBDmdldFN0cmluZ0J5S2V5AQkBEWtleUhhc2hCeVR4aWRBZGRyAgUJYWRkclRvVXNlBQVhcnRJZAMJAAACBQpzaGEyNTZIYXNoAgAJAAIBAiVObyBhcnQgaGFzaCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAZzaWduSUQJAQ5nZXRTdHJpbmdCeUtleQEJAQlrZXlTaWduSUQCBQlhZGRyVG9Vc2UFBWFydElkAwkAAAIFBnNpZ25JRAIACQACAQITTm8gU0lHTiBJRCBtYXRjaGluZwQMZGF0YVRvRGVsZXRlCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlEYXRlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5TmFtZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleURlc2MCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlEaXNwbGF5Q2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEMa2V5RXhwb3J0Q2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5RXhwb3J0SGFzaAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleUxpY2VuY2VIYXNoAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5TGljZW5jZUNpZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVR5cGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlUYWdzAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5TWF4TWludAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleVNpZ25JRAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleU9uU2FsZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleUZsYWcCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQhrZXlQcmljZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUFzc2V0SWRBY2NlcHRlZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5aWRCeVNpZ25pZAIFCWFkZHJUb1VzZQUGc2lnbklECQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlUeGlkQnlIYXNoT3duZXICBQpzaGEyNTZIYXNoBQlhZGRyVG9Vc2UJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleUVuZFNhbGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlOb3RlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5Q3Jhd2xlcgIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleVJveWFsdGllcwIFCWFkZHJUb1VzZQUFYXJ0SWQFA25pbAMJAQEhAQkBC2lzQXJ0TWludGVkAgUJYWRkclRvVXNlBQVhcnRJZAMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwUMZGF0YVRvRGVsZXRlAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgUMZGF0YVRvRGVsZXRlCQACAQIoQXJ0IGFscmVhZHkgbWludGVkLCB5b3UgY2Fubm90IGRlbGV0ZSBpdAFpAQtzZWxsQXJ0d29yawYFYXJ0SWQFcHJpY2UHbWF4TWludAdhc3NldElkCGJsb2NrRW5kBnB1YktleQQNJHQwMjg0NTIyODUyMgkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyODQ1MjI4NTIyAl8xBAZjYWxsZXIIBQ0kdDAyODQ1MjI4NTIyAl8yBARkYXRlCAUNJHQwMjg0NTIyODUyMgJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyODQ1MjI4NTIyAl80BAthcnR3b3JrTmFtZQkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkAwkAAAIFC2FydHdvcmtOYW1lAgAJAAIBAiNUaGlzIGFydCBkb2Vzbid0IG1hdGNoIHlvdXIgYWNjb3VudAQEZmxhZwkBDmdldFN0cmluZ0J5S2V5AQkBB2tleUZsYWcCBQZjYWxsZXIFBWFydElkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQRmbGFnCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQBmAgAABQhibG9ja0VuZAkAAgECDE5lZ2F0aXZlIGVuZAMDCQBmAgUIYmxvY2tFbmQAAAMJAQIhPQIFB21heE1pbnQAAQYJAQIhPQIFBXByaWNlAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQKYmFzZUhlaWdodAMJAAACBQhibG9ja0VuZAAAAAAFBmhlaWdodAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUHYXNzZXRJZAUFcHJpY2UJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmNhbGxlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQDCQBmAgUHbWF4TWludABkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQphbW91bnRTb2xkAAAJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQphbW91bnRTb2xkAAAJAQIhPQIFCm1heENhblNlbGwFB21heE1pbnQHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFBmJpZE5icgAACQECIT0CBQptYXhDYW5TZWxsBQdtYXhNaW50BwkAAgECMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMECnNlbGxTdGF0dXMDAwkAZgIFBXByaWNlAAAJAGYCBQdtYXhNaW50AAAHBgcECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEIa2V5UHJpY2UCBQZjYWxsZXIFBWFydElkBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkBQdtYXhNaW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZjYWxsZXIFBWFydElkBQdhc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5RW5kU2FsZQIFBmNhbGxlcgUFYXJ0SWQJAGQCBQpiYXNlSGVpZ2h0BQhibG9ja0VuZAUDbmlsBQp0eFRvQ2FsbGVyAWkBCmJ1eUFydHdvcmsCBWFydElkBmlzc3VlcgkBB2J1eU1pbnQFBQFpBQVhcnRJZAUGaXNzdWVyAgACAAFpAQZzZXRCaWQCBWFydElkBmlzc3VlcgQNJHQwMzA5MDAzMDk0MAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzA5MDAzMDk0MAJfMQQGY2FsbGVyCAUNJHQwMzA5MDAzMDk0MAJfMgQEZGF0ZQgFDSR0MDMwOTAwMzA5NDACXzMEDSR0MDMwOTQ1MzA5ODEJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMzA5NDUzMDk4MQJfMQQGYW1vdW50CAUNJHQwMzA5NDUzMDk4MQJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQECGJsb2NrRW5kCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAwMJAQIhPQIFCGJsb2NrRW5kAAAJAGcCBQZoZWlnaHQFCGJsb2NrRW5kBwkAAgECC1NhbGUgZW5kZWQuBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAIFB2Fzc2V0SWQFBmFtb3VudAkAAgECDldyb25nIG1pbiBzZWxsBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDCQBnAgAABQptYXhDYW5TZWxsCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUGY2FsbGVyAgFfBQJpZAIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgUHYXNzZXRJZAIBXwkApAMBBQZhbW91bnQCAV8JAKQDAQUEZGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkCQBkAgUGYmlkTmJyAAEFA25pbAFpAQlhY2NlcHRCaWQEBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMzIxMzkzMjE3OQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzIxMzkzMjE3OQJfMQQGY2FsbGVyCAUNJHQwMzIxMzkzMjE3OQJfMgQEZGF0ZQgFDSR0MDMyMTM5MzIxNzkCXzMDCQECIT0CBQZjYWxsZXIFBmlzc3VlcgkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24JAQdidXlNaW50BQUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQFCGJpZE93bmVyAWkBCWNhbmNlbEJpZAQFYXJ0SWQGaXNzdWVyBWJpZElkCGJpZE93bmVyBA0kdDAzMjQwNTMyNDY2CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAzMjQwNTMyNDY2Al8xBAZjYWxsZXIIBQ0kdDAzMjQwNTMyNDY2Al8yBARkYXRlCAUNJHQwMzI0MDUzMjQ2NgJfMwMDCQECIT0CBQZjYWxsZXIFCGJpZE93bmVyCQECIT0CBQZjYWxsZXIFBmlzc3VlcgcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBA1yZXR1cm5Nb25leVRvAwkAAAIFBmNhbGxlcgUGaXNzdWVyBQhiaWRPd25lcgUGY2FsbGVyBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQECmJpZERhdGFLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUIYmlkT3duZXICAV8FBWJpZElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAAQJYmlkU3RhdHVzAghDQU5DRUxFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQpiaWREYXRhS2V5AgFfBQliaWRTdGF0dXMJAKwCAgkArAICBQdiaWREYXRhAgFfCQCkAwEFBGRhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAkAZQIFBmJpZE5icgABCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQ1yZXR1cm5Nb25leVRvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwBAnR4AQh2ZXJpZmllcgAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDADAwMDCQAAAggFA2ludghmdW5jdGlvbgIKYWRkQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwANAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CDXVwZGF0ZUFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MADAMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAgtzZWxsQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAFCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5OnQiMQ==", "height": 2432865, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DXnmo71TY1882JhgNw62Xx3aiYWPCEjVtcK4fTuDCF4F Next: 5vjAnsL7J8xXk5hvPcnWpjerCnWuHxAkaiFGQ9LJN8vF Diff:
OldNewDifferences
164164 func ao (an) = ("artist_agent_primary_" + an)
165165
166166
167-func ap (P,aq) = ((("get_hashbytxidaddr_" + aq) + "_") + P)
167+func ap (an) = ("artist_public_agent_" + an)
168168
169169
170-func ar (H) = ("get_owner_by_hash_" + H)
170+func aq (an) = ("artist_public_agent_primary_" + an)
171171
172172
173-func as (P,at) = ((("get_artidbysignid_" + at) + "_") + P)
173+func ar (P,as) = ((("get_hashbytxidaddr_" + as) + "_") + P)
174174
175175
176-func au (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
176+func at (H) = ("get_owner_by_hash_" + H)
177177
178178
179-func av (aw,ax,ay) = if (!(K(aw)))
179+func au (P,av) = ((("get_artidbysignid_" + av) + "_") + P)
180+
181+
182+func aw (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
183+
184+
185+func ax (ay,az,aA) = if (!(K(ay)))
180186 then throw("Wrong Display CID")
181- else if (!(K(ax)))
187+ else if (!(K(az)))
182188 then throw("Wrong Export CID")
183- else if (if ((ay != ""))
184- then !(K(ay))
189+ else if (if ((aA != ""))
190+ then !(K(aA))
185191 else false)
186192 then throw("Wrong Licence CID")
187193 else true
188194
189195
190-func az (aA,aB) = if (!(M(aA)))
196+func aB (aC,aD) = if (!(M(aC)))
191197 then throw("Export Hash 64 char. max")
192- else if (!(M(aB)))
198+ else if (!(M(aD)))
193199 then throw("Licence Hash 64 char. max")
194200 else true
195201
196202
197-func aC (aD,aE) = if ((size(aD) == 0))
203+func aE (aF,aG) = if ((size(aF) == 0))
198204 then throw("Field cannot be is empty")
199- else if ((size(aD) > aE))
200- then throw((aD + " is too long"))
205+ else if ((size(aF) > aG))
206+ then throw((aF + " is too long"))
201207 else true
202208
203209
204-func aF (P) = {
205- let aG = valueOrElse(getString(h, O(P)), A)
206- if (if ((aG == A))
210+func aH (P) = {
211+ let aI = valueOrElse(getString(h, O(P)), A)
212+ if (if ((aI == A))
207213 then true
208- else (aG == B))
214+ else (aI == B))
209215 then "Register this account first with \"Account\" tab"
210- else if ((aG == y))
216+ else if ((aI == y))
211217 then "Account suspended"
212- else if ((aG == z))
218+ else if ((aI == z))
213219 then "Account removed"
214220 else ""
215221 }
216222
217223
218-func aH (ay,aB) = {
219- let L = if ((size(ay) == 0))
224+func aJ (aA,aD) = {
225+ let L = if ((size(aA) == 0))
220226 then u
221- else ay
222- let N = if ((size(aB) == 0))
227+ else aA
228+ let N = if ((size(aD) == 0))
223229 then v
224- else aB
230+ else aD
225231 $Tuple2(L, N)
226232 }
227233
228234
229-func aI (P,aw,ax,aJ,aA,aK,aL,aM,aN,aO) = {
230- let aP = aF(P)
231- if ((aP != ""))
232- then throw(aP)
233- else if ((size(aw) == 0))
235+func aK (P,ay,az,aL,aC,aM,aN,aO,aP,aQ) = {
236+ let aR = aH(P)
237+ if ((aR != ""))
238+ then throw(aR)
239+ else if ((size(ay) == 0))
234240 then throw("Display CID cannot be empty")
235- else if (!(av(aw, ax, aJ)))
241+ else if (!(ax(ay, az, aL)))
236242 then throw("Problem with CID")
237- else if (!(az(aA, aK)))
243+ else if (!(aB(aC, aM)))
238244 then throw("Problem with Hashes")
239- else if (!(aC(aL, 100)))
245+ else if (!(aE(aN, 100)))
240246 then throw("100 Char. max name")
241- else if (!(aC(aM, 1000)))
247+ else if (!(aE(aO, 1000)))
242248 then throw("1000 Char. max description")
243- else if (if ((0 > aO))
249+ else if (if ((0 > aQ))
244250 then true
245- else (aO > 1000))
251+ else (aQ > 1000))
246252 then throw("Royalties cannot be less than 0% or higher than 10%")
247- else if ((size(split(aN, ",")) > 5))
253+ else if ((size(split(aP, ",")) > 5))
248254 then throw("5 tags max.")
249255 else ""
250256 }
251257
252258
253-func aQ (aR) = if ((size(aR.payments) == 0))
259+func aS (aT) = if ((size(aT.payments) == 0))
254260 then throw("No payment attached")
255261 else {
256- let aS = value(aR.payments[0])
257- let aT = value(aS.amount)
258- $Tuple2(aS, aT)
262+ let aU = value(aT.payments[0])
263+ let aV = value(aU.amount)
264+ $Tuple2(aU, aV)
259265 }
260266
261267
262-func aU (aR) = {
263- let aV = aQ(aR)
264- let aS = aV._1
265- let aT = aV._2
266- let aW = if (if (isDefined(aS.assetId))
267- then (aS.assetId == j)
268+func aW (aT) = {
269+ let aX = aS(aT)
270+ let aU = aX._1
271+ let aV = aX._2
272+ let aY = if (if (isDefined(aU.assetId))
273+ then (aU.assetId == j)
268274 else false)
269- then aS.assetId
275+ then aU.assetId
270276 else throw("Only SIGN token accepted as transaction fee")
271- if ((aT != C))
277+ if ((aV != C))
272278 then throw(("Payment amount should be " + toString(C)))
273- else $Tuple2(aT, aW)
279+ else $Tuple2(aV, aY)
274280 }
275281
276282
277-func aX (aY,R) = {
278- let I = getInteger(this, Z(aY, R))
283+func aZ (ba,R) = {
284+ let I = getInteger(this, Z(ba, R))
279285 if ($isInstanceOf(I, "Int"))
280286 then {
281- let aZ = I
282- if ((aZ != 0))
287+ let bb = I
288+ if ((bb != 0))
283289 then true
284290 else false
285291 }
287293 }
288294
289295
290-func ba (aR,bb,bc) = {
291- let bd = aQ(aR)
292- let aS = bd._1
293- let aT = bd._2
294- let aW = if (!(isDefined(aS.assetId)))
296+func bc (aT,bd,be) = {
297+ let bf = aS(aT)
298+ let aU = bf._1
299+ let aV = bf._2
300+ let aY = if (!(isDefined(aU.assetId)))
295301 then unit
296- else if (if ((size(bb) > 0))
297- then (toBase58String(value(aS.assetId)) == bb)
302+ else if (if ((size(bd) > 0))
303+ then (toBase58String(value(aU.assetId)) == bd)
298304 else false)
299- then aS.assetId
305+ then aU.assetId
300306 else throw("Wrong asset id")
301- if (if ((aW == unit))
302- then (bb != "")
307+ if (if ((aY == unit))
308+ then (bd != "")
303309 else false)
304310 then throw("Wrong asset id")
305- else if ((bc != aT))
311+ else if ((be != aV))
306312 then throw("Payment don't match")
307- else $Tuple2(aT, aW)
313+ else $Tuple2(aV, aY)
308314 }
309315
310316
311-func be (aW) = if (if (if (if (if ((aW != toBase58String(j)))
312- then (aW != toBase58String(m))
317+func bg (aY) = if (if (if (if (if ((aY != toBase58String(j)))
318+ then (aY != toBase58String(m))
313319 else false)
314- then (aW != "WAVES")
320+ then (aY != "WAVES")
315321 else false)
316- then (aW != toBase58String(k))
322+ then (aY != toBase58String(k))
317323 else false)
318- then (aW != toBase58String(l))
324+ then (aY != toBase58String(l))
319325 else false)
320326 then throw("Only SIGN, USDN,USDT or WAVES accepted")
321327 else true
322328
323329
324-func bf (aW,bg) = {
325- let bh = if (d)
330+func bh (aY,bi) = {
331+ let bj = if (d)
326332 then 10
327333 else o("waves_min_sell")
328- let bi = 1000000
329- let bj = if (d)
334+ let bk = 1000000
335+ let bl = if (d)
330336 then 1
331337 else (C * 2)
332- if (if (if (if (if (if ((aW == toBase58String(k)))
333- then (bi > bg)
338+ if (if (if (if (if (if ((aY == toBase58String(k)))
339+ then (bk > bi)
334340 else false)
335- then (bg != 0)
341+ then (bi != 0)
336342 else false)
337343 then true
338- else if (if ((aW == toBase58String(l)))
339- then (bi > bg)
344+ else if (if ((aY == toBase58String(l)))
345+ then (bk > bi)
340346 else false)
341- then (bg != 0)
347+ then (bi != 0)
342348 else false)
343349 then true
344- else if (if ((aW == toBase58String(j)))
345- then (bj > bg)
350+ else if (if ((aY == toBase58String(j)))
351+ then (bl > bi)
346352 else false)
347- then (bg != 0)
353+ then (bi != 0)
348354 else false)
349355 then true
350- else if (if (if ((aW == toBase58String(m)))
356+ else if (if (if ((aY == toBase58String(m)))
351357 then true
352- else (aW == "WAVES"))
353- then (bh > bg)
358+ else (aY == "WAVES"))
359+ then (bj > bi)
354360 else false)
355- then (bg != 0)
361+ then (bi != 0)
356362 else false)
357363 then throw("Wrong minimum sell price")
358364 else true
359365 }
360366
361367
362-func bk (aW) = if ((aW == "WAVES"))
368+func bm (aY) = if ((aY == "WAVES"))
363369 then unit
364- else fromBase58String(aW)
370+ else fromBase58String(aY)
365371
366372
367-func bl (bm) = {
368- let bn = b((bm + "_OPEN"))
369- if ((bn == ""))
373+func bn (bo) = {
374+ let bp = b((bo + "_OPEN"))
375+ if ((bp == ""))
370376 then throw("Bid not found")
371377 else {
372- let bo = split(bn, "_")
373- let bp = parseIntValue(bo[1])
374- let bq = bk(bo[0])
375- if ((0 >= bp))
378+ let bq = split(bp, "_")
379+ let br = parseIntValue(bq[1])
380+ let bs = bm(bq[0])
381+ if ((0 >= br))
376382 then throw("Wrong amount")
377- else $Tuple2(bp, bq)
383+ else $Tuple2(br, bs)
378384 }
379385 }
380386
381387
382-func br (aR,bs) = if (!(w))
388+func bt (aT,bu) = if (!(w))
383389 then throw(x)
384390 else {
385- let bt = if ((bs != ""))
386- then valueOrElse(q((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
391+ let bv = if ((bu != ""))
392+ then valueOrElse(q((toString(addressFromPublicKey(fromBase58String(bu))) + "_free_txs")), 0)
387393 else 0
388- let P = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
389- then (bt > 0)
394+ let P = if (if ((toBase58String(aT.caller.bytes) == toString(this)))
395+ then (bv > 0)
390396 else false)
391- then toString(addressFromPublicKey(fromBase58String(bs)))
392- else toBase58String(aR.caller.bytes)
393- let bu = if (if ((bs != ""))
394- then (bt > 0)
397+ then toString(addressFromPublicKey(fromBase58String(bu)))
398+ else toBase58String(aT.caller.bytes)
399+ let bw = if (if ((bu != ""))
400+ then (bv > 0)
395401 else false)
396- then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
402+ then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bu)))], nil)
397403 else unit
398- if ((bu == bu))
399- then $Tuple4(toBase58String(aR.transactionId), P, lastBlock.timestamp, (bt > 0))
404+ if ((bw == bw))
405+ then $Tuple4(toBase58String(aT.transactionId), P, lastBlock.timestamp, (bv > 0))
400406 else throw("Strict value is not equal to itself.")
401407 }
402408
403409
404-func bv (aR) = if (!(w))
410+func bx (aT) = if (!(w))
405411 then throw(x)
406- else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
412+ else $Tuple3(toBase58String(aT.transactionId), toBase58String(aT.caller.bytes), lastBlock.timestamp)
407413
408414
409-func bw (aR,R,bx,by,bz) = {
410- let bA = bv(aR)
411- let bB = bA._1
412- let P = bA._2
413- let bC = bA._3
414- let bD = if (if (if ((P == bx))
415- then (bz != "")
415+func by (aT,R,bz,bA,bB) = {
416+ let bC = bx(aT)
417+ let bD = bC._1
418+ let P = bC._2
419+ let bE = bC._3
420+ let bF = if (if (if ((P == bz))
421+ then (bB != "")
416422 else false)
417- then (by != "")
423+ then (bA != "")
418424 else false)
419425 then true
420426 else false
421- let bE = p(aj(P, R))
422- if (if (if ((bE != 0))
423- then (height >= bE)
427+ let bG = p(aj(P, R))
428+ if (if (if ((bG != 0))
429+ then (height >= bG)
424430 else false)
425- then !(bD)
431+ then !(bF)
426432 else false)
427433 then throw("Sale ended.")
428434 else {
429- let bF = (P == bx)
430- let bG = p("total_nft_issued")
431- let F = b(Y(bx, R))
432- let bH = b(S(bx, R))
433- if ((bH == ""))
435+ let bH = (P == bz)
436+ let bI = p("total_nft_issued")
437+ let F = b(Y(bz, R))
438+ let bJ = b(S(bz, R))
439+ if ((bJ == ""))
434440 then throw("Art doesn't exist")
435441 else {
436- let bI = r(aa(bx, R))
437- let bJ = p(Z(bx, R))
438- let bc = if (bF)
442+ let bK = r(aa(bz, R))
443+ let bL = p(Z(bz, R))
444+ let be = if (bH)
439445 then (C * 2)
440- else p(ai(bx, R))
441- let bb = if (bF)
446+ else p(ai(bz, R))
447+ let bd = if (bH)
442448 then toBase58String(j)
443- else b(ak(bx, R))
444- let bK = p(X(bx, R))
445- if (if (if (!(bD))
446- then !(bF)
449+ else b(ak(bz, R))
450+ let bM = p(X(bz, R))
451+ if (if (if (!(bF))
452+ then !(bH)
447453 else false)
448- then if (if ((0 >= bc))
454+ then if (if ((0 >= be))
449455 then true
450- else !(bI))
456+ else !(bK))
451457 then true
452- else (0 >= bK)
458+ else (0 >= bM)
453459 else false)
454460 then throw("Art not for sale")
455- else if (if (if (!(bD))
456- then bF
461+ else if (if (if (!(bF))
462+ then bH
457463 else false)
458- then (0 >= bK)
464+ then (0 >= bM)
459465 else false)
460466 then throw("Max issuable not set")
461467 else {
462- let aP = aF(bx)
463- if (if (bD)
464- then (aP != "")
468+ let aR = aH(bz)
469+ if (if (bF)
470+ then (aR != "")
465471 else false)
466- then throw(aP)
472+ then throw(aR)
467473 else {
468- let bm = ((((((("bid_" + R) + "_") + bx) + "_") + bz) + "_") + by)
469- let bL = if (bD)
470- then bl(bm)
471- else ba(aR, bb, bc)
472- let aT = bL._1
473- let aW = bL._2
474- let bM = valueOrElse(getString(h, am(bx)), g)
475- let bN = valueOrElse(getInteger(h, ao(bx)), 0)
476- let bO = q(bx)
477- let bP = if ((bO > height))
474+ let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
475+ let bN = if (bF)
476+ then bn(bo)
477+ else bc(aT, bd, be)
478+ let aV = bN._1
479+ let aY = bN._2
480+ let bO = valueOrElse(getString(h, am(bz)), g)
481+ let bP = valueOrElse(getInteger(h, ao(bz)), 0)
482+ let bQ = valueOrElse(getString(h, ap(bz)), g)
483+ let bR = valueOrElse(getInteger(h, aq(bz)), 0)
484+ let bS = q(bz)
485+ let bT = if ((bS > height))
478486 then 0
479- else if ((aW == j))
487+ else if ((aY == j))
480488 then s
481489 else t
482- let bQ = fraction(aT, bP, 100)
483- let bR = if (if (if ((bM != g))
484- then (bN > 0)
490+ let bU = fraction(aV, bT, 100)
491+ let bV = if (if (if ((bO != g))
492+ then (bP > 0)
485493 else false)
486- then (height > bO)
494+ then (height > bS)
487495 else false)
488- then fraction(aT, bN, 100)
496+ then fraction(aV, bP, 100)
489497 else 0
490- let bS = (aT - bQ)
491- if ((bJ == bK))
498+ let bW = if (if (if ((bQ != g))
499+ then (bR > 0)
500+ else false)
501+ then (height > bS)
502+ else false)
503+ then fraction(aV, bR, 100)
504+ else 0
505+ let bX = ((aV - bU) - bW)
506+ if ((bL == bM))
492507 then throw("Art sold out")
493508 else {
494- let bT = (bJ + 1)
495- let bU = ((((((((((("Creator: " + bx) + ",
509+ let bY = (bL + 1)
510+ let bZ = ((((((((((("Creator: " + bz) + ",
496511 ArtID: ") + R) + ",
497512 SignID: ") + F) + ",
498- Artwork name: ") + bH) + ",
499- Issue: ") + toString(bT)) + "/") + toString(bK))
500- let bV = Issue(("SA_" + toString((bG + 1))), bU, 1, 0, false)
501- let bW = calculateAssetId(bV)
502- let bX = if (if ((bT == bK))
513+ Artwork name: ") + bJ) + ",
514+ Issue: ") + toString(bY)) + "/") + toString(bM))
515+ let ca = Issue(("SA_" + toString((bI + 1))), bZ, 1, 0, false)
516+ let cb = calculateAssetId(ca)
517+ let cc = if (if ((bY == bM))
503518 then true
504- else !(bI))
519+ else !(bK))
505520 then false
506521 else true
507- let bY = if (if (if ((P == bx))
508- then (bz != "")
522+ let cd = if (if (if ((P == bz))
523+ then (bB != "")
509524 else false)
510- then (by != "")
525+ then (bA != "")
511526 else false)
512- then addressFromStringValue(bz)
513- else aR.caller
514- let bZ = if (!(isDefined(aW)))
527+ then addressFromStringValue(bB)
528+ else aT.caller
529+ let ce = if (!(isDefined(aY)))
515530 then "WAVES"
516- else toBase58String(value(aW))
517- let bn = b((bm + "_OPEN"))
518- let ca = DeleteEntry((bm + "_OPEN"))
519- let cb = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
520- let cc = ((((((("art_sold_" + toString(bT)) + "_of_") + toString(bK)) + "_") + R) + "_") + bx)
521- let cd = if (!(bD))
522- then ((((((((((P + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bW))
523- else ((((((((((toString(bY) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + bZ) + "_") + toBase58String(bW))
524- let ce = StringEntry(cc, cd)
525- let cf = if ((bR != 0))
526- then [ScriptTransfer(Address(fromBase58String(g)), (bQ - bR), aW), ScriptTransfer(Address(fromBase58String(bM)), bR, aW)]
527- else [ScriptTransfer(Address(fromBase58String(g)), bQ, aW)]
528- let cg = ([IntegerEntry(Z(bx, R), bT), StringEntry(("nft_" + toBase58String(bW)), cc), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(aj(bx, R), 0), BooleanEntry(aa(bx, R), bX), bV, ScriptTransfer(Address(fromBase58String(bx)), bS, aW), ScriptTransfer(bY, 1, bW)] ++ cf)
529- if (bD)
530- then [ce, cb, ca] :: cg
531- else ce :: cg
531+ else toBase58String(value(aY))
532+ let bp = b((bo + "_OPEN"))
533+ let cf = DeleteEntry((bo + "_OPEN"))
534+ let cg = StringEntry((bo + "_CLOSED"), ((bp + "_") + toString(bE)))
535+ let ch = ((((((("art_sold_" + toString(bY)) + "_of_") + toString(bM)) + "_") + R) + "_") + bz)
536+ let ci = if (!(bF))
537+ then ((((((((((P + "_") + toString(bE)) + "_") + bD) + "_") + toString(be)) + "_") + bd) + "_") + toBase58String(cb))
538+ else ((((((((((toString(cd) + "_") + toString(bE)) + "_") + bD) + "_") + toString(aV)) + "_") + ce) + "_") + toBase58String(cb))
539+ let cj = StringEntry(ch, ci)
540+ let ck = if ((bV != 0))
541+ then [ScriptTransfer(Address(fromBase58String(g)), (bU - bV), aY), ScriptTransfer(Address(fromBase58String(bO)), bV, aY)]
542+ else [ScriptTransfer(Address(fromBase58String(g)), bU, aY)]
543+ let cl = if ((bW != 0))
544+ then [ScriptTransfer(Address(fromBase58String(bQ)), bW, aY), ScriptTransfer(Address(fromBase58String(bz)), (bX - bW), aY)]
545+ else [ScriptTransfer(Address(fromBase58String(bz)), bX, aY)]
546+ let cm = (([IntegerEntry(Z(bz, R), bY), StringEntry(("nft_" + toBase58String(cb)), ch), IntegerEntry("total_nft_issued", (bI + 1)), IntegerEntry(aj(bz, R), 0), BooleanEntry(aa(bz, R), cc), ca, ScriptTransfer(cd, 1, cb)] ++ ck) ++ cl)
547+ if (bF)
548+ then [cj, cg, cf] :: cm
549+ else cj :: cm
532550 }
533551 }
534552 }
537555 }
538556
539557
540-func ch (ci) = {
541- let I = ci
558+func cn (co) = {
559+ let I = co
542560 if ($isInstanceOf(I, "String"))
543561 then {
544- let cj = I
545- cj
562+ let cp = I
563+ cp
546564 }
547565 else throw("Sponsored Public Key String expected")
548566 }
549567
550568
551-@Callable(ck)
552-func setConf (c,cl) = {
553- let P = toString(ck.caller)
569+@Callable(cq)
570+func setConf (c,cr) = {
571+ let P = toString(cq.caller)
554572 if (containsElement([n, toString(this)], P))
555573 then if (contains(c, "conf_"))
556- then [StringEntry(c, cl)]
574+ then [StringEntry(c, cr)]
557575 else throw("Entries starting with conf_ only")
558576 else throw("You are not allowed to change this")
559577 }
560578
561579
562580
563-@Callable(aR)
564-func addArtwork (H,F,aL,aM,aN,cm,aw,aA,ax,aB,ay,cn,aO,bs) = {
565- let co = br(aR, bs)
566- let R = co._1
567- let P = co._2
568- let bC = co._3
569- let bt = co._4
581+@Callable(aT)
582+func addArtwork (H,F,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = {
583+ let cu = bt(aT, bu)
584+ let R = cu._1
585+ let P = cu._2
586+ let bE = cu._3
587+ let bv = cu._4
570588 if (!(M(H)))
571589 then throw("Hash should be 64 characters maximum")
572590 else {
573- let cp = aH(ay, aB)
574- let aJ = cp._1
575- let aK = cp._2
576- let cq = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
577- if ((cq != ""))
591+ let cv = aJ(aA, aD)
592+ let aL = cv._1
593+ let aM = cv._2
594+ let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
595+ if ((cw != ""))
578596 then throw("Something went wrong!")
579597 else {
580- let cr = (q((P + "_free_drops")) > 0)
581- let cs = if (cr)
598+ let cx = (q((P + "_free_drops")) > 0)
599+ let cy = if (cx)
582600 then $Tuple2(0, F)
583- else aU(aR)
584- let aT = cs._1
585- let aW = cs._2
586- if (!(isDefined(aT)))
601+ else aW(aT)
602+ let aV = cy._1
603+ let aY = cy._2
604+ if (!(isDefined(aV)))
587605 then throw("Something went wrong")
588606 else {
589- let ct = b(au(H, P))
590- if ((ct != ""))
607+ let cz = b(aw(H, P))
608+ if ((cz != ""))
591609 then throw("You already added it")
592610 else {
593- let cu = b(ar(H))
594- if ((cu != ""))
611+ let cA = b(at(H))
612+ if ((cA != ""))
595613 then throw("Hash already registered")
596614 else {
597- let cv = E(F, P, H)
598- if (!(cv))
615+ let cB = E(F, P, H)
616+ if (!(cB))
599617 then throw("Sign Certificate not found for this address.")
600618 else {
601- let cw = if (cr)
619+ let cC = if (cx)
602620 then invoke(i, "useFreeDrop", [P], nil)
603621 else unit
604- if ((cw == cw))
622+ if ((cC == cC))
605623 then {
606- let cx = if (bt)
624+ let cD = if (bv)
607625 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
608626 else nil
609- ([StringEntry(ar(H), P), StringEntry(au(H, P), R), IntegerEntry(Q(P, R), bC), StringEntry(S(P, R), aL), StringEntry(T(P, R), aM), StringEntry(U(P, R), aw), StringEntry(W(P, R), ax), StringEntry(V(P, R), aA), StringEntry(ab(P, R), aK), StringEntry(ac(P, R), aJ), StringEntry(ae(P, R), cm), StringEntry(ad(P, R), aN), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(as(P, F), R), StringEntry(ap(P, R), H), StringEntry(ag(P, R), cn), IntegerEntry(ah(P, R), aO), ScriptTransfer(Address(fromBase58String(g)), aT, j)] ++ cx)
627+ ([StringEntry(at(H), P), StringEntry(aw(H, P), R), IntegerEntry(Q(P, R), bE), StringEntry(S(P, R), aN), StringEntry(T(P, R), aO), StringEntry(U(P, R), ay), StringEntry(W(P, R), az), StringEntry(V(P, R), aC), StringEntry(ab(P, R), aM), StringEntry(ac(P, R), aL), StringEntry(ae(P, R), cs), StringEntry(ad(P, R), aP), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(au(P, F), R), StringEntry(ar(P, R), H), StringEntry(ag(P, R), ct), IntegerEntry(ah(P, R), aQ), ScriptTransfer(Address(fromBase58String(g)), aV, j)] ++ cD)
610628 }
611629 else throw("Strict value is not equal to itself.")
612630 }
619637
620638
621639
622-@Callable(aR)
623-func updateArtwork (aq,aL,aM,aN,cm,aw,aA,ax,aB,ay,cn,aO,bs) = if (!(w))
640+@Callable(aT)
641+func updateArtwork (as,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = if (!(w))
624642 then throw(x)
625643 else {
626- let cy = br(aR, bs)
627- let bB = cy._1
628- let P = cy._2
629- let bC = cy._3
630- let bt = cy._4
631- let cz = aH(ay, aB)
632- let aJ = cz._1
633- let aK = cz._2
634- let cq = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
635- if ((cq != ""))
644+ let cE = bt(aT, bu)
645+ let bD = cE._1
646+ let P = cE._2
647+ let bE = cE._3
648+ let bv = cE._4
649+ let cF = aJ(aA, aD)
650+ let aL = cF._1
651+ let aM = cF._2
652+ let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
653+ if ((cw != ""))
636654 then throw("Something went wrong!")
637655 else {
638- let ct = b(S(P, aq))
639- if ((ct == ""))
656+ let cz = b(S(P, as))
657+ if ((cz == ""))
640658 then throw("Entry not found")
641659 else {
642- let cA = b(al(P, aq))
643- if ((cA == "ILLEGAL"))
660+ let cG = b(al(P, as))
661+ if ((cG == "ILLEGAL"))
644662 then throw("Cannot update ILLEGAL artwork")
645- else if (!(aX(P, aq)))
663+ else if (!(aZ(P, as)))
646664 then {
647- let cx = if (bt)
665+ let cD = if (bv)
648666 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
649667 else nil
650- ([StringEntry(S(P, aq), aL), StringEntry(T(P, aq), aM), StringEntry(U(P, aq), aw), StringEntry(W(P, aq), ax), StringEntry(V(P, aq), aA), StringEntry(ac(P, aq), aJ), StringEntry(ab(P, aq), aK), StringEntry(ad(P, aq), aN), StringEntry(ae(P, aq), cm), StringEntry(ag(P, aq), cn), IntegerEntry(ah(P, aq), aO)] ++ cx)
668+ ([StringEntry(S(P, as), aN), StringEntry(T(P, as), aO), StringEntry(U(P, as), ay), StringEntry(W(P, as), az), StringEntry(V(P, as), aC), StringEntry(ac(P, as), aL), StringEntry(ab(P, as), aM), StringEntry(ad(P, as), aP), StringEntry(ae(P, as), cs), StringEntry(ag(P, as), ct), IntegerEntry(ah(P, as), aQ)] ++ cD)
651669 }
652670 else throw("Already minted")
653671 }
656674
657675
658676
659-@Callable(aR)
660-func flagArtwork (R,cB,cA,cC) = {
661- let cD = bv(aR)
662- let bB = cD._1
663- let P = cD._2
677+@Callable(aT)
678+func flagArtwork (R,cH,cG,cI) = {
679+ let cJ = bx(aT)
680+ let bD = cJ._1
681+ let P = cJ._2
664682 if (containsElement([n, toString(this)], P))
665- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cA))
666- then [StringEntry(al(cB, R), cA), StringEntry(af(cB, R), cC)]
667- else throw(("Unknow status " + cA))
683+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
684+ then [StringEntry(al(cH, R), cG), StringEntry(af(cH, R), cI)]
685+ else throw(("Unknow status " + cG))
668686 else throw("You are not allowed")
669687 }
670688
671689
672690
673-@Callable(aR)
674-func deleteArtwork (R,cB) = {
675- let cE = bv(aR)
676- let bB = cE._1
677- let P = cE._2
678- let aY = if (containsElement([n, toString(this)], P))
679- then cB
691+@Callable(aT)
692+func deleteArtwork (R,cH) = {
693+ let cK = bx(aT)
694+ let bD = cK._1
695+ let P = cK._2
696+ let ba = if (containsElement([n, toString(this)], P))
697+ then cH
680698 else P
681- let ct = valueOrErrorMessage(b(S(aY, R)), "No art matching for this address")
682- if ((ct == ""))
699+ let cz = valueOrErrorMessage(b(S(ba, R)), "No art matching for this address")
700+ if ((cz == ""))
683701 then throw("No art matching for this address")
684702 else {
685- let H = b(ap(aY, R))
703+ let H = b(ar(ba, R))
686704 if ((H == ""))
687705 then throw("No art hash matching for this address")
688706 else {
689- let F = b(Y(aY, R))
707+ let F = b(Y(ba, R))
690708 if ((F == ""))
691709 then throw("No SIGN ID matching")
692710 else {
693- let cF = [DeleteEntry(Q(aY, R)), DeleteEntry(S(aY, R)), DeleteEntry(T(aY, R)), DeleteEntry(U(aY, R)), DeleteEntry(W(aY, R)), DeleteEntry(V(aY, R)), DeleteEntry(ab(aY, R)), DeleteEntry(ac(aY, R)), DeleteEntry(ae(aY, R)), DeleteEntry(ad(aY, R)), DeleteEntry(X(aY, R)), DeleteEntry(Y(aY, R)), DeleteEntry(Z(aY, R)), DeleteEntry(aa(aY, R)), DeleteEntry(al(aY, R)), DeleteEntry(ai(aY, R)), DeleteEntry(ak(aY, R)), DeleteEntry(ar(H)), DeleteEntry(as(aY, F)), DeleteEntry(au(H, aY)), DeleteEntry(aj(aY, R)), DeleteEntry(af(aY, R)), DeleteEntry(ag(aY, R)), DeleteEntry(ah(aY, R))]
694- if (!(aX(aY, R)))
711+ let cL = [DeleteEntry(Q(ba, R)), DeleteEntry(S(ba, R)), DeleteEntry(T(ba, R)), DeleteEntry(U(ba, R)), DeleteEntry(W(ba, R)), DeleteEntry(V(ba, R)), DeleteEntry(ab(ba, R)), DeleteEntry(ac(ba, R)), DeleteEntry(ae(ba, R)), DeleteEntry(ad(ba, R)), DeleteEntry(X(ba, R)), DeleteEntry(Y(ba, R)), DeleteEntry(Z(ba, R)), DeleteEntry(aa(ba, R)), DeleteEntry(al(ba, R)), DeleteEntry(ai(ba, R)), DeleteEntry(ak(ba, R)), DeleteEntry(at(H)), DeleteEntry(au(ba, F)), DeleteEntry(aw(H, ba)), DeleteEntry(aj(ba, R)), DeleteEntry(af(ba, R)), DeleteEntry(ag(ba, R)), DeleteEntry(ah(ba, R))]
712+ if (!(aZ(ba, R)))
695713 then if (!(w))
696714 then throw(x)
697- else cF
715+ else cL
698716 else if (containsElement([n, toString(this)], P))
699- then cF
717+ then cL
700718 else throw("Art already minted, you cannot delete it")
701719 }
702720 }
705723
706724
707725
708-@Callable(aR)
709-func sellArtwork (R,bg,cG,aW,bE,bs) = {
710- let cH = br(aR, bs)
711- let bB = cH._1
712- let P = cH._2
713- let bC = cH._3
714- let bt = cH._4
715- let bH = b(S(P, R))
716- if ((bH == ""))
726+@Callable(aT)
727+func sellArtwork (R,bi,cM,aY,bG,bu) = {
728+ let cN = bt(aT, bu)
729+ let bD = cN._1
730+ let P = cN._2
731+ let bE = cN._3
732+ let bv = cN._4
733+ let bJ = b(S(P, R))
734+ if ((bJ == ""))
717735 then throw("This art doesn't match your account")
718736 else {
719- let cA = b(al(P, R))
720- if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cA))
737+ let cG = b(al(P, R))
738+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
721739 then throw("Flagged artwork")
722740 else {
723- let cI = p(("current_bidamount_" + R))
724- if ((0 > bE))
741+ let cO = p(("current_bidamount_" + R))
742+ if ((0 > bG))
725743 then throw("Negative end")
726- else if (if ((bE > 0))
727- then if ((cG != 1))
744+ else if (if ((bG > 0))
745+ then if ((cM != 1))
728746 then true
729- else (bg != 0)
747+ else (bi != 0)
730748 else false)
731749 then throw("Timed offer only allowed for unique edition and offer only")
732750 else {
733- let cJ = if ((bE == 0))
751+ let cP = if ((bG == 0))
734752 then 0
735753 else height
736- if (!(be(aW)))
754+ if (!(bg(aY)))
737755 then throw("Something went wrong!")
738- else if (!(bf(aW, bg)))
756+ else if (!(bh(aY, bi)))
739757 then throw("Something went wrong!")
740758 else {
741- let aP = aF(P)
742- if ((aP != ""))
743- then throw(aP)
759+ let aR = aH(P)
760+ if ((aR != ""))
761+ then throw(aR)
744762 else {
745- let bJ = p(Z(P, R))
746- let bK = p(X(P, R))
747- if ((cG > 100))
763+ let bL = p(Z(P, R))
764+ let bM = p(X(P, R))
765+ if ((cM > 100))
748766 then throw("100 editions max per artwork")
749- else if (if ((bJ != 0))
750- then (bJ == bK)
767+ else if (if ((bL != 0))
768+ then (bL == bM)
751769 else false)
752770 then throw("Max edition reached.")
753- else if (if ((bJ > 0))
754- then (bK != cG)
771+ else if (if ((bL > 0))
772+ then (bM != cM)
755773 else false)
756774 then throw("Cannot change maximum issuable anymore")
757- else if (if ((cI > 0))
758- then (bK != cG)
775+ else if (if ((cO > 0))
776+ then (bM != cM)
759777 else false)
760778 then throw("Cannot change maximum issuable with active orders")
761779 else {
762- let bX = if (if ((bg > 0))
763- then (cG > 0)
780+ let cc = if (if ((bi > 0))
781+ then (cM > 0)
764782 else false)
765783 then true
766784 else false
767- let cx = if (bt)
785+ let cD = if (bv)
768786 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
769787 else nil
770- ([BooleanEntry(aa(P, R), bX), IntegerEntry(ai(P, R), bg), IntegerEntry(X(P, R), cG), StringEntry(ak(P, R), aW), IntegerEntry(aj(P, R), (cJ + bE))] ++ cx)
788+ ([BooleanEntry(aa(P, R), cc), IntegerEntry(ai(P, R), bi), IntegerEntry(X(P, R), cM), StringEntry(ak(P, R), aY), IntegerEntry(aj(P, R), (cP + bG))] ++ cD)
771789 }
772790 }
773791 }
778796
779797
780798
781-@Callable(aR)
782-func buyArtwork (R,bx) = bw(aR, R, bx, "", "")
799+@Callable(aT)
800+func buyArtwork (R,bz) = by(aT, R, bz, "", "")
783801
784802
785803
786-@Callable(aR)
787-func setBid (R,bx) = {
788- let cK = bv(aR)
789- let bB = cK._1
790- let P = cK._2
791- let bC = cK._3
792- let cL = aQ(aR)
793- let aS = cL._1
794- let aT = cL._2
795- let aW = if (!(isDefined(aS.assetId)))
804+@Callable(aT)
805+func setBid (R,bz) = {
806+ let cQ = bx(aT)
807+ let bD = cQ._1
808+ let P = cQ._2
809+ let bE = cQ._3
810+ let cR = aS(aT)
811+ let aU = cR._1
812+ let aV = cR._2
813+ let aY = if (!(isDefined(aU.assetId)))
796814 then "WAVES"
797- else toBase58String(value(aS.assetId))
798- let bE = p(aj(bx, R))
799- if (if ((bE != 0))
800- then (height >= bE)
815+ else toBase58String(value(aU.assetId))
816+ let bG = p(aj(bz, R))
817+ if (if ((bG != 0))
818+ then (height >= bG)
801819 else false)
802820 then throw("Sale ended.")
803821 else {
804- let cI = p(("current_bidamount_" + R))
805- if (!(be(aW)))
822+ let cO = p(("current_bidamount_" + R))
823+ if (!(bg(aY)))
806824 then throw("asset not accepted")
807- else if (!(bf(aW, aT)))
825+ else if (!(bh(aY, aV)))
808826 then throw("Wrong min sell")
809827 else {
810- let bJ = p(Z(bx, R))
811- let bK = p(X(bx, R))
812- if ((0 >= bK))
828+ let bL = p(Z(bz, R))
829+ let bM = p(X(bz, R))
830+ if ((0 >= bM))
813831 then throw("No max edition set for this artwork")
814- else if ((bJ >= bK))
832+ else if ((bL >= bM))
815833 then throw("Sold out, you cannot bid")
816- else [StringEntry((((((((("bid_" + R) + "_") + bx) + "_") + P) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cI + 1))]
834+ else [StringEntry((((((((("bid_" + R) + "_") + bz) + "_") + P) + "_") + bD) + "_OPEN"), ((((aY + "_") + toString(aV)) + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cO + 1))]
817835 }
818836 }
819837 }
820838
821839
822840
823-@Callable(aR)
824-func acceptBid (R,bx,by,bz) = {
825- let cM = bv(aR)
826- let bB = cM._1
827- let P = cM._2
828- let bC = cM._3
829- if ((P != bx))
841+@Callable(aT)
842+func acceptBid (R,bz,bA,bB) = {
843+ let cS = bx(aT)
844+ let bD = cS._1
845+ let P = cS._2
846+ let bE = cS._3
847+ if ((P != bz))
830848 then throw("You cannot do this action")
831- else bw(aR, R, bx, by, bz)
849+ else by(aT, R, bz, bA, bB)
832850 }
833851
834852
835853
836-@Callable(aR)
837-func cancelBid (R,bx,by,bz) = {
838- let cN = bv(aR)
839- let bB = cN._1
840- let P = cN._2
841- let bC = cN._3
842- if (if ((P != bz))
843- then (P != bx)
854+@Callable(aT)
855+func cancelBid (R,bz,bA,bB) = {
856+ let cT = bx(aT)
857+ let bD = cT._1
858+ let P = cT._2
859+ let bE = cT._3
860+ if (if ((P != bB))
861+ then (P != bz)
844862 else false)
845863 then throw("You cannot do this action")
846864 else {
847- let cO = if ((P == bx))
848- then bz
865+ let cU = if ((P == bz))
866+ then bB
849867 else P
850- let cI = p(("current_bidamount_" + R))
851- let bm = ((((((("bid_" + R) + "_") + bx) + "_") + bz) + "_") + by)
852- let bn = b((bm + "_OPEN"))
853- if ((bn == ""))
868+ let cO = p(("current_bidamount_" + R))
869+ let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
870+ let bp = b((bo + "_OPEN"))
871+ if ((bp == ""))
854872 then throw("Bid not found")
855873 else {
856- let bo = split(bn, "_")
857- let aW = bk(bo[0])
858- let cP = "CANCELED"
859-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cP), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cI - 1)), ScriptTransfer(Address(fromBase58String(cO)), parseIntValue(bo[1]), aW)]
874+ let bq = split(bp, "_")
875+ let aY = bm(bq[0])
876+ let cV = "CANCELED"
877+[DeleteEntry((bo + "_OPEN")), StringEntry(((bo + "_") + cV), ((bp + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cO - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bq[1]), aY)]
860878 }
861879 }
862880 }
863881
864882
865-@Verifier(cQ)
866-func cR () = {
867- let I = cQ
883+@Verifier(cW)
884+func cX () = {
885+ let I = cW
868886 if ($isInstanceOf(I, "InvokeScriptTransaction"))
869887 then {
870- let cS = I
871- if (if (if (if ((cS.function == "addArtwork"))
872- then (cS.dApp == this)
888+ let cY = I
889+ if (if (if (if ((cY.function == "addArtwork"))
890+ then (cY.dApp == this)
873891 else false)
874- then (cS.fee == 500000)
892+ then (cY.fee == 500000)
875893 else false)
876- then (cS.feeAssetId == unit)
894+ then (cY.feeAssetId == unit)
877895 else false)
878- then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[13])))
879- else if (if (if (if ((cS.function == "updateArtwork"))
880- then (cS.dApp == this)
896+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
897+ else if (if (if (if ((cY.function == "updateArtwork"))
898+ then (cY.dApp == this)
881899 else false)
882- then (cS.fee == 500000)
900+ then (cY.fee == 500000)
883901 else false)
884- then (cS.feeAssetId == unit)
902+ then (cY.feeAssetId == unit)
885903 else false)
886- then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[12])))
887- else if (if (if (if ((cS.function == "sellArtwork"))
888- then (cS.dApp == this)
904+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
905+ else if (if (if (if ((cY.function == "sellArtwork"))
906+ then (cY.dApp == this)
889907 else false)
890- then (cS.fee == 500000)
908+ then (cY.fee == 500000)
891909 else false)
892- then (cS.feeAssetId == unit)
910+ then (cY.feeAssetId == unit)
893911 else false)
894- then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[5])))
895- else sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
912+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
913+ else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
896914 }
897- else sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
915+ else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
898916 }
899917
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.1.10"
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 = fromBase58String(b("conf_accepted_asset_SIGN"))
2424
2525 let k = fromBase58String(b("conf_accepted_asset_USDN"))
2626
2727 let l = fromBase58String(b("conf_accepted_asset_USDT"))
2828
2929 let m = base58''
3030
3131 let n = b("conf_admin_1")
3232
3333 func o (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
3434
3535
3636 func p (c) = valueOrElse(getInteger(this, c), 0)
3737
3838
3939 func q (c) = valueOrElse(getInteger(i, c), 0)
4040
4141
4242 func r (c) = valueOrElse(getBoolean(this, c), false)
4343
4444
4545 let s = 7
4646
4747 let t = 10
4848
4949 let u = b("conf_default_licence")
5050
5151 let v = b("conf_default_licence_hash")
5252
5353 let w = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
5454
5555 let x = valueOrElse(getString(h, "conf_maintenance_msg"), "")
5656
5757 let y = "SUSPENDED"
5858
5959 let z = "REMOVED"
6060
6161 let A = "UNREGISTERED"
6262
6363 let B = "ALLOWED"
6464
6565 let C = o(("certification_fee_" + toBase58String(j)))
6666
6767 func D (c) = valueOrElse(getInteger(this, c), 1000)
6868
6969
7070 func E (F,G,H) = {
7171 let I = getString(f, ((("data_fc_" + F) + "_") + G))
7272 if ($isInstanceOf(I, "String"))
7373 then {
7474 let J = I
7575 if (contains(J, H))
7676 then true
7777 else false
7878 }
7979 else false
8080 }
8181
8282
8383 func K (L) = if (contains(L, "/"))
8484 then if (if ((76 > size(L)))
8585 then (size(split(L, "/")[0]) == 59)
8686 else false)
8787 then (16 > size(split(L, "/")[1]))
8888 else false
8989 else false
9090
9191
9292 func M (N) = (size(N) == 64)
9393
9494
9595 func O (P) = ("user_status_" + P)
9696
9797
9898 func Q (P,R) = ((("art_date_" + R) + "_") + P)
9999
100100
101101 func S (P,R) = ((("art_name_" + R) + "_") + P)
102102
103103
104104 func T (P,R) = ((("art_desc_" + R) + "_") + P)
105105
106106
107107 func U (P,R) = ((("art_display_cid_" + R) + "_") + P)
108108
109109
110110 func V (P,R) = ((("art_export_hash_" + R) + "_") + P)
111111
112112
113113 func W (P,R) = ((("art_export_cid_" + R) + "_") + P)
114114
115115
116116 func X (P,R) = ((("art_maxmint_" + R) + "_") + P)
117117
118118
119119 func Y (P,R) = ((("art_signid_" + R) + "_") + P)
120120
121121
122122 func Z (P,R) = ((("art_issued_" + R) + "_") + P)
123123
124124
125125 func aa (P,R) = ((("art_onsale_" + R) + "_") + P)
126126
127127
128128 func ab (P,R) = ((("art_licence_hash_" + R) + "_") + P)
129129
130130
131131 func ac (P,R) = ((("art_licence_cid_" + R) + "_") + P)
132132
133133
134134 func ad (P,R) = ((("art_tags_" + R) + "_") + P)
135135
136136
137137 func ae (P,R) = ((("art_type_" + R) + "_") + P)
138138
139139
140140 func af (P,R) = ((("art_note_" + R) + "_") + P)
141141
142142
143143 func ag (P,R) = ((("art_crawler_cid_" + R) + "_") + P)
144144
145145
146146 func ah (P,R) = ((("art_royalties_" + R) + "_") + P)
147147
148148
149149 func ai (P,R) = ((("art_price_" + R) + "_") + P)
150150
151151
152152 func aj (P,R) = ((("art_endsale_" + R) + "_") + P)
153153
154154
155155 func ak (P,R) = ((("art_assetAccepted_" + R) + "_") + P)
156156
157157
158158 func al (P,R) = ((("art_flag_" + R) + "_") + P)
159159
160160
161161 func am (an) = ("artist_agent_" + an)
162162
163163
164164 func ao (an) = ("artist_agent_primary_" + an)
165165
166166
167-func ap (P,aq) = ((("get_hashbytxidaddr_" + aq) + "_") + P)
167+func ap (an) = ("artist_public_agent_" + an)
168168
169169
170-func ar (H) = ("get_owner_by_hash_" + H)
170+func aq (an) = ("artist_public_agent_primary_" + an)
171171
172172
173-func as (P,at) = ((("get_artidbysignid_" + at) + "_") + P)
173+func ar (P,as) = ((("get_hashbytxidaddr_" + as) + "_") + P)
174174
175175
176-func au (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
176+func at (H) = ("get_owner_by_hash_" + H)
177177
178178
179-func av (aw,ax,ay) = if (!(K(aw)))
179+func au (P,av) = ((("get_artidbysignid_" + av) + "_") + P)
180+
181+
182+func aw (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
183+
184+
185+func ax (ay,az,aA) = if (!(K(ay)))
180186 then throw("Wrong Display CID")
181- else if (!(K(ax)))
187+ else if (!(K(az)))
182188 then throw("Wrong Export CID")
183- else if (if ((ay != ""))
184- then !(K(ay))
189+ else if (if ((aA != ""))
190+ then !(K(aA))
185191 else false)
186192 then throw("Wrong Licence CID")
187193 else true
188194
189195
190-func az (aA,aB) = if (!(M(aA)))
196+func aB (aC,aD) = if (!(M(aC)))
191197 then throw("Export Hash 64 char. max")
192- else if (!(M(aB)))
198+ else if (!(M(aD)))
193199 then throw("Licence Hash 64 char. max")
194200 else true
195201
196202
197-func aC (aD,aE) = if ((size(aD) == 0))
203+func aE (aF,aG) = if ((size(aF) == 0))
198204 then throw("Field cannot be is empty")
199- else if ((size(aD) > aE))
200- then throw((aD + " is too long"))
205+ else if ((size(aF) > aG))
206+ then throw((aF + " is too long"))
201207 else true
202208
203209
204-func aF (P) = {
205- let aG = valueOrElse(getString(h, O(P)), A)
206- if (if ((aG == A))
210+func aH (P) = {
211+ let aI = valueOrElse(getString(h, O(P)), A)
212+ if (if ((aI == A))
207213 then true
208- else (aG == B))
214+ else (aI == B))
209215 then "Register this account first with \"Account\" tab"
210- else if ((aG == y))
216+ else if ((aI == y))
211217 then "Account suspended"
212- else if ((aG == z))
218+ else if ((aI == z))
213219 then "Account removed"
214220 else ""
215221 }
216222
217223
218-func aH (ay,aB) = {
219- let L = if ((size(ay) == 0))
224+func aJ (aA,aD) = {
225+ let L = if ((size(aA) == 0))
220226 then u
221- else ay
222- let N = if ((size(aB) == 0))
227+ else aA
228+ let N = if ((size(aD) == 0))
223229 then v
224- else aB
230+ else aD
225231 $Tuple2(L, N)
226232 }
227233
228234
229-func aI (P,aw,ax,aJ,aA,aK,aL,aM,aN,aO) = {
230- let aP = aF(P)
231- if ((aP != ""))
232- then throw(aP)
233- else if ((size(aw) == 0))
235+func aK (P,ay,az,aL,aC,aM,aN,aO,aP,aQ) = {
236+ let aR = aH(P)
237+ if ((aR != ""))
238+ then throw(aR)
239+ else if ((size(ay) == 0))
234240 then throw("Display CID cannot be empty")
235- else if (!(av(aw, ax, aJ)))
241+ else if (!(ax(ay, az, aL)))
236242 then throw("Problem with CID")
237- else if (!(az(aA, aK)))
243+ else if (!(aB(aC, aM)))
238244 then throw("Problem with Hashes")
239- else if (!(aC(aL, 100)))
245+ else if (!(aE(aN, 100)))
240246 then throw("100 Char. max name")
241- else if (!(aC(aM, 1000)))
247+ else if (!(aE(aO, 1000)))
242248 then throw("1000 Char. max description")
243- else if (if ((0 > aO))
249+ else if (if ((0 > aQ))
244250 then true
245- else (aO > 1000))
251+ else (aQ > 1000))
246252 then throw("Royalties cannot be less than 0% or higher than 10%")
247- else if ((size(split(aN, ",")) > 5))
253+ else if ((size(split(aP, ",")) > 5))
248254 then throw("5 tags max.")
249255 else ""
250256 }
251257
252258
253-func aQ (aR) = if ((size(aR.payments) == 0))
259+func aS (aT) = if ((size(aT.payments) == 0))
254260 then throw("No payment attached")
255261 else {
256- let aS = value(aR.payments[0])
257- let aT = value(aS.amount)
258- $Tuple2(aS, aT)
262+ let aU = value(aT.payments[0])
263+ let aV = value(aU.amount)
264+ $Tuple2(aU, aV)
259265 }
260266
261267
262-func aU (aR) = {
263- let aV = aQ(aR)
264- let aS = aV._1
265- let aT = aV._2
266- let aW = if (if (isDefined(aS.assetId))
267- then (aS.assetId == j)
268+func aW (aT) = {
269+ let aX = aS(aT)
270+ let aU = aX._1
271+ let aV = aX._2
272+ let aY = if (if (isDefined(aU.assetId))
273+ then (aU.assetId == j)
268274 else false)
269- then aS.assetId
275+ then aU.assetId
270276 else throw("Only SIGN token accepted as transaction fee")
271- if ((aT != C))
277+ if ((aV != C))
272278 then throw(("Payment amount should be " + toString(C)))
273- else $Tuple2(aT, aW)
279+ else $Tuple2(aV, aY)
274280 }
275281
276282
277-func aX (aY,R) = {
278- let I = getInteger(this, Z(aY, R))
283+func aZ (ba,R) = {
284+ let I = getInteger(this, Z(ba, R))
279285 if ($isInstanceOf(I, "Int"))
280286 then {
281- let aZ = I
282- if ((aZ != 0))
287+ let bb = I
288+ if ((bb != 0))
283289 then true
284290 else false
285291 }
286292 else false
287293 }
288294
289295
290-func ba (aR,bb,bc) = {
291- let bd = aQ(aR)
292- let aS = bd._1
293- let aT = bd._2
294- let aW = if (!(isDefined(aS.assetId)))
296+func bc (aT,bd,be) = {
297+ let bf = aS(aT)
298+ let aU = bf._1
299+ let aV = bf._2
300+ let aY = if (!(isDefined(aU.assetId)))
295301 then unit
296- else if (if ((size(bb) > 0))
297- then (toBase58String(value(aS.assetId)) == bb)
302+ else if (if ((size(bd) > 0))
303+ then (toBase58String(value(aU.assetId)) == bd)
298304 else false)
299- then aS.assetId
305+ then aU.assetId
300306 else throw("Wrong asset id")
301- if (if ((aW == unit))
302- then (bb != "")
307+ if (if ((aY == unit))
308+ then (bd != "")
303309 else false)
304310 then throw("Wrong asset id")
305- else if ((bc != aT))
311+ else if ((be != aV))
306312 then throw("Payment don't match")
307- else $Tuple2(aT, aW)
313+ else $Tuple2(aV, aY)
308314 }
309315
310316
311-func be (aW) = if (if (if (if (if ((aW != toBase58String(j)))
312- then (aW != toBase58String(m))
317+func bg (aY) = if (if (if (if (if ((aY != toBase58String(j)))
318+ then (aY != toBase58String(m))
313319 else false)
314- then (aW != "WAVES")
320+ then (aY != "WAVES")
315321 else false)
316- then (aW != toBase58String(k))
322+ then (aY != toBase58String(k))
317323 else false)
318- then (aW != toBase58String(l))
324+ then (aY != toBase58String(l))
319325 else false)
320326 then throw("Only SIGN, USDN,USDT or WAVES accepted")
321327 else true
322328
323329
324-func bf (aW,bg) = {
325- let bh = if (d)
330+func bh (aY,bi) = {
331+ let bj = if (d)
326332 then 10
327333 else o("waves_min_sell")
328- let bi = 1000000
329- let bj = if (d)
334+ let bk = 1000000
335+ let bl = if (d)
330336 then 1
331337 else (C * 2)
332- if (if (if (if (if (if ((aW == toBase58String(k)))
333- then (bi > bg)
338+ if (if (if (if (if (if ((aY == toBase58String(k)))
339+ then (bk > bi)
334340 else false)
335- then (bg != 0)
341+ then (bi != 0)
336342 else false)
337343 then true
338- else if (if ((aW == toBase58String(l)))
339- then (bi > bg)
344+ else if (if ((aY == toBase58String(l)))
345+ then (bk > bi)
340346 else false)
341- then (bg != 0)
347+ then (bi != 0)
342348 else false)
343349 then true
344- else if (if ((aW == toBase58String(j)))
345- then (bj > bg)
350+ else if (if ((aY == toBase58String(j)))
351+ then (bl > bi)
346352 else false)
347- then (bg != 0)
353+ then (bi != 0)
348354 else false)
349355 then true
350- else if (if (if ((aW == toBase58String(m)))
356+ else if (if (if ((aY == toBase58String(m)))
351357 then true
352- else (aW == "WAVES"))
353- then (bh > bg)
358+ else (aY == "WAVES"))
359+ then (bj > bi)
354360 else false)
355- then (bg != 0)
361+ then (bi != 0)
356362 else false)
357363 then throw("Wrong minimum sell price")
358364 else true
359365 }
360366
361367
362-func bk (aW) = if ((aW == "WAVES"))
368+func bm (aY) = if ((aY == "WAVES"))
363369 then unit
364- else fromBase58String(aW)
370+ else fromBase58String(aY)
365371
366372
367-func bl (bm) = {
368- let bn = b((bm + "_OPEN"))
369- if ((bn == ""))
373+func bn (bo) = {
374+ let bp = b((bo + "_OPEN"))
375+ if ((bp == ""))
370376 then throw("Bid not found")
371377 else {
372- let bo = split(bn, "_")
373- let bp = parseIntValue(bo[1])
374- let bq = bk(bo[0])
375- if ((0 >= bp))
378+ let bq = split(bp, "_")
379+ let br = parseIntValue(bq[1])
380+ let bs = bm(bq[0])
381+ if ((0 >= br))
376382 then throw("Wrong amount")
377- else $Tuple2(bp, bq)
383+ else $Tuple2(br, bs)
378384 }
379385 }
380386
381387
382-func br (aR,bs) = if (!(w))
388+func bt (aT,bu) = if (!(w))
383389 then throw(x)
384390 else {
385- let bt = if ((bs != ""))
386- then valueOrElse(q((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
391+ let bv = if ((bu != ""))
392+ then valueOrElse(q((toString(addressFromPublicKey(fromBase58String(bu))) + "_free_txs")), 0)
387393 else 0
388- let P = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
389- then (bt > 0)
394+ let P = if (if ((toBase58String(aT.caller.bytes) == toString(this)))
395+ then (bv > 0)
390396 else false)
391- then toString(addressFromPublicKey(fromBase58String(bs)))
392- else toBase58String(aR.caller.bytes)
393- let bu = if (if ((bs != ""))
394- then (bt > 0)
397+ then toString(addressFromPublicKey(fromBase58String(bu)))
398+ else toBase58String(aT.caller.bytes)
399+ let bw = if (if ((bu != ""))
400+ then (bv > 0)
395401 else false)
396- then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
402+ then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bu)))], nil)
397403 else unit
398- if ((bu == bu))
399- then $Tuple4(toBase58String(aR.transactionId), P, lastBlock.timestamp, (bt > 0))
404+ if ((bw == bw))
405+ then $Tuple4(toBase58String(aT.transactionId), P, lastBlock.timestamp, (bv > 0))
400406 else throw("Strict value is not equal to itself.")
401407 }
402408
403409
404-func bv (aR) = if (!(w))
410+func bx (aT) = if (!(w))
405411 then throw(x)
406- else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
412+ else $Tuple3(toBase58String(aT.transactionId), toBase58String(aT.caller.bytes), lastBlock.timestamp)
407413
408414
409-func bw (aR,R,bx,by,bz) = {
410- let bA = bv(aR)
411- let bB = bA._1
412- let P = bA._2
413- let bC = bA._3
414- let bD = if (if (if ((P == bx))
415- then (bz != "")
415+func by (aT,R,bz,bA,bB) = {
416+ let bC = bx(aT)
417+ let bD = bC._1
418+ let P = bC._2
419+ let bE = bC._3
420+ let bF = if (if (if ((P == bz))
421+ then (bB != "")
416422 else false)
417- then (by != "")
423+ then (bA != "")
418424 else false)
419425 then true
420426 else false
421- let bE = p(aj(P, R))
422- if (if (if ((bE != 0))
423- then (height >= bE)
427+ let bG = p(aj(P, R))
428+ if (if (if ((bG != 0))
429+ then (height >= bG)
424430 else false)
425- then !(bD)
431+ then !(bF)
426432 else false)
427433 then throw("Sale ended.")
428434 else {
429- let bF = (P == bx)
430- let bG = p("total_nft_issued")
431- let F = b(Y(bx, R))
432- let bH = b(S(bx, R))
433- if ((bH == ""))
435+ let bH = (P == bz)
436+ let bI = p("total_nft_issued")
437+ let F = b(Y(bz, R))
438+ let bJ = b(S(bz, R))
439+ if ((bJ == ""))
434440 then throw("Art doesn't exist")
435441 else {
436- let bI = r(aa(bx, R))
437- let bJ = p(Z(bx, R))
438- let bc = if (bF)
442+ let bK = r(aa(bz, R))
443+ let bL = p(Z(bz, R))
444+ let be = if (bH)
439445 then (C * 2)
440- else p(ai(bx, R))
441- let bb = if (bF)
446+ else p(ai(bz, R))
447+ let bd = if (bH)
442448 then toBase58String(j)
443- else b(ak(bx, R))
444- let bK = p(X(bx, R))
445- if (if (if (!(bD))
446- then !(bF)
449+ else b(ak(bz, R))
450+ let bM = p(X(bz, R))
451+ if (if (if (!(bF))
452+ then !(bH)
447453 else false)
448- then if (if ((0 >= bc))
454+ then if (if ((0 >= be))
449455 then true
450- else !(bI))
456+ else !(bK))
451457 then true
452- else (0 >= bK)
458+ else (0 >= bM)
453459 else false)
454460 then throw("Art not for sale")
455- else if (if (if (!(bD))
456- then bF
461+ else if (if (if (!(bF))
462+ then bH
457463 else false)
458- then (0 >= bK)
464+ then (0 >= bM)
459465 else false)
460466 then throw("Max issuable not set")
461467 else {
462- let aP = aF(bx)
463- if (if (bD)
464- then (aP != "")
468+ let aR = aH(bz)
469+ if (if (bF)
470+ then (aR != "")
465471 else false)
466- then throw(aP)
472+ then throw(aR)
467473 else {
468- let bm = ((((((("bid_" + R) + "_") + bx) + "_") + bz) + "_") + by)
469- let bL = if (bD)
470- then bl(bm)
471- else ba(aR, bb, bc)
472- let aT = bL._1
473- let aW = bL._2
474- let bM = valueOrElse(getString(h, am(bx)), g)
475- let bN = valueOrElse(getInteger(h, ao(bx)), 0)
476- let bO = q(bx)
477- let bP = if ((bO > height))
474+ let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
475+ let bN = if (bF)
476+ then bn(bo)
477+ else bc(aT, bd, be)
478+ let aV = bN._1
479+ let aY = bN._2
480+ let bO = valueOrElse(getString(h, am(bz)), g)
481+ let bP = valueOrElse(getInteger(h, ao(bz)), 0)
482+ let bQ = valueOrElse(getString(h, ap(bz)), g)
483+ let bR = valueOrElse(getInteger(h, aq(bz)), 0)
484+ let bS = q(bz)
485+ let bT = if ((bS > height))
478486 then 0
479- else if ((aW == j))
487+ else if ((aY == j))
480488 then s
481489 else t
482- let bQ = fraction(aT, bP, 100)
483- let bR = if (if (if ((bM != g))
484- then (bN > 0)
490+ let bU = fraction(aV, bT, 100)
491+ let bV = if (if (if ((bO != g))
492+ then (bP > 0)
485493 else false)
486- then (height > bO)
494+ then (height > bS)
487495 else false)
488- then fraction(aT, bN, 100)
496+ then fraction(aV, bP, 100)
489497 else 0
490- let bS = (aT - bQ)
491- if ((bJ == bK))
498+ let bW = if (if (if ((bQ != g))
499+ then (bR > 0)
500+ else false)
501+ then (height > bS)
502+ else false)
503+ then fraction(aV, bR, 100)
504+ else 0
505+ let bX = ((aV - bU) - bW)
506+ if ((bL == bM))
492507 then throw("Art sold out")
493508 else {
494- let bT = (bJ + 1)
495- let bU = ((((((((((("Creator: " + bx) + ",
509+ let bY = (bL + 1)
510+ let bZ = ((((((((((("Creator: " + bz) + ",
496511 ArtID: ") + R) + ",
497512 SignID: ") + F) + ",
498- Artwork name: ") + bH) + ",
499- Issue: ") + toString(bT)) + "/") + toString(bK))
500- let bV = Issue(("SA_" + toString((bG + 1))), bU, 1, 0, false)
501- let bW = calculateAssetId(bV)
502- let bX = if (if ((bT == bK))
513+ Artwork name: ") + bJ) + ",
514+ Issue: ") + toString(bY)) + "/") + toString(bM))
515+ let ca = Issue(("SA_" + toString((bI + 1))), bZ, 1, 0, false)
516+ let cb = calculateAssetId(ca)
517+ let cc = if (if ((bY == bM))
503518 then true
504- else !(bI))
519+ else !(bK))
505520 then false
506521 else true
507- let bY = if (if (if ((P == bx))
508- then (bz != "")
522+ let cd = if (if (if ((P == bz))
523+ then (bB != "")
509524 else false)
510- then (by != "")
525+ then (bA != "")
511526 else false)
512- then addressFromStringValue(bz)
513- else aR.caller
514- let bZ = if (!(isDefined(aW)))
527+ then addressFromStringValue(bB)
528+ else aT.caller
529+ let ce = if (!(isDefined(aY)))
515530 then "WAVES"
516- else toBase58String(value(aW))
517- let bn = b((bm + "_OPEN"))
518- let ca = DeleteEntry((bm + "_OPEN"))
519- let cb = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
520- let cc = ((((((("art_sold_" + toString(bT)) + "_of_") + toString(bK)) + "_") + R) + "_") + bx)
521- let cd = if (!(bD))
522- then ((((((((((P + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bW))
523- else ((((((((((toString(bY) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + bZ) + "_") + toBase58String(bW))
524- let ce = StringEntry(cc, cd)
525- let cf = if ((bR != 0))
526- then [ScriptTransfer(Address(fromBase58String(g)), (bQ - bR), aW), ScriptTransfer(Address(fromBase58String(bM)), bR, aW)]
527- else [ScriptTransfer(Address(fromBase58String(g)), bQ, aW)]
528- let cg = ([IntegerEntry(Z(bx, R), bT), StringEntry(("nft_" + toBase58String(bW)), cc), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(aj(bx, R), 0), BooleanEntry(aa(bx, R), bX), bV, ScriptTransfer(Address(fromBase58String(bx)), bS, aW), ScriptTransfer(bY, 1, bW)] ++ cf)
529- if (bD)
530- then [ce, cb, ca] :: cg
531- else ce :: cg
531+ else toBase58String(value(aY))
532+ let bp = b((bo + "_OPEN"))
533+ let cf = DeleteEntry((bo + "_OPEN"))
534+ let cg = StringEntry((bo + "_CLOSED"), ((bp + "_") + toString(bE)))
535+ let ch = ((((((("art_sold_" + toString(bY)) + "_of_") + toString(bM)) + "_") + R) + "_") + bz)
536+ let ci = if (!(bF))
537+ then ((((((((((P + "_") + toString(bE)) + "_") + bD) + "_") + toString(be)) + "_") + bd) + "_") + toBase58String(cb))
538+ else ((((((((((toString(cd) + "_") + toString(bE)) + "_") + bD) + "_") + toString(aV)) + "_") + ce) + "_") + toBase58String(cb))
539+ let cj = StringEntry(ch, ci)
540+ let ck = if ((bV != 0))
541+ then [ScriptTransfer(Address(fromBase58String(g)), (bU - bV), aY), ScriptTransfer(Address(fromBase58String(bO)), bV, aY)]
542+ else [ScriptTransfer(Address(fromBase58String(g)), bU, aY)]
543+ let cl = if ((bW != 0))
544+ then [ScriptTransfer(Address(fromBase58String(bQ)), bW, aY), ScriptTransfer(Address(fromBase58String(bz)), (bX - bW), aY)]
545+ else [ScriptTransfer(Address(fromBase58String(bz)), bX, aY)]
546+ let cm = (([IntegerEntry(Z(bz, R), bY), StringEntry(("nft_" + toBase58String(cb)), ch), IntegerEntry("total_nft_issued", (bI + 1)), IntegerEntry(aj(bz, R), 0), BooleanEntry(aa(bz, R), cc), ca, ScriptTransfer(cd, 1, cb)] ++ ck) ++ cl)
547+ if (bF)
548+ then [cj, cg, cf] :: cm
549+ else cj :: cm
532550 }
533551 }
534552 }
535553 }
536554 }
537555 }
538556
539557
540-func ch (ci) = {
541- let I = ci
558+func cn (co) = {
559+ let I = co
542560 if ($isInstanceOf(I, "String"))
543561 then {
544- let cj = I
545- cj
562+ let cp = I
563+ cp
546564 }
547565 else throw("Sponsored Public Key String expected")
548566 }
549567
550568
551-@Callable(ck)
552-func setConf (c,cl) = {
553- let P = toString(ck.caller)
569+@Callable(cq)
570+func setConf (c,cr) = {
571+ let P = toString(cq.caller)
554572 if (containsElement([n, toString(this)], P))
555573 then if (contains(c, "conf_"))
556- then [StringEntry(c, cl)]
574+ then [StringEntry(c, cr)]
557575 else throw("Entries starting with conf_ only")
558576 else throw("You are not allowed to change this")
559577 }
560578
561579
562580
563-@Callable(aR)
564-func addArtwork (H,F,aL,aM,aN,cm,aw,aA,ax,aB,ay,cn,aO,bs) = {
565- let co = br(aR, bs)
566- let R = co._1
567- let P = co._2
568- let bC = co._3
569- let bt = co._4
581+@Callable(aT)
582+func addArtwork (H,F,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = {
583+ let cu = bt(aT, bu)
584+ let R = cu._1
585+ let P = cu._2
586+ let bE = cu._3
587+ let bv = cu._4
570588 if (!(M(H)))
571589 then throw("Hash should be 64 characters maximum")
572590 else {
573- let cp = aH(ay, aB)
574- let aJ = cp._1
575- let aK = cp._2
576- let cq = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
577- if ((cq != ""))
591+ let cv = aJ(aA, aD)
592+ let aL = cv._1
593+ let aM = cv._2
594+ let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
595+ if ((cw != ""))
578596 then throw("Something went wrong!")
579597 else {
580- let cr = (q((P + "_free_drops")) > 0)
581- let cs = if (cr)
598+ let cx = (q((P + "_free_drops")) > 0)
599+ let cy = if (cx)
582600 then $Tuple2(0, F)
583- else aU(aR)
584- let aT = cs._1
585- let aW = cs._2
586- if (!(isDefined(aT)))
601+ else aW(aT)
602+ let aV = cy._1
603+ let aY = cy._2
604+ if (!(isDefined(aV)))
587605 then throw("Something went wrong")
588606 else {
589- let ct = b(au(H, P))
590- if ((ct != ""))
607+ let cz = b(aw(H, P))
608+ if ((cz != ""))
591609 then throw("You already added it")
592610 else {
593- let cu = b(ar(H))
594- if ((cu != ""))
611+ let cA = b(at(H))
612+ if ((cA != ""))
595613 then throw("Hash already registered")
596614 else {
597- let cv = E(F, P, H)
598- if (!(cv))
615+ let cB = E(F, P, H)
616+ if (!(cB))
599617 then throw("Sign Certificate not found for this address.")
600618 else {
601- let cw = if (cr)
619+ let cC = if (cx)
602620 then invoke(i, "useFreeDrop", [P], nil)
603621 else unit
604- if ((cw == cw))
622+ if ((cC == cC))
605623 then {
606- let cx = if (bt)
624+ let cD = if (bv)
607625 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
608626 else nil
609- ([StringEntry(ar(H), P), StringEntry(au(H, P), R), IntegerEntry(Q(P, R), bC), StringEntry(S(P, R), aL), StringEntry(T(P, R), aM), StringEntry(U(P, R), aw), StringEntry(W(P, R), ax), StringEntry(V(P, R), aA), StringEntry(ab(P, R), aK), StringEntry(ac(P, R), aJ), StringEntry(ae(P, R), cm), StringEntry(ad(P, R), aN), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(as(P, F), R), StringEntry(ap(P, R), H), StringEntry(ag(P, R), cn), IntegerEntry(ah(P, R), aO), ScriptTransfer(Address(fromBase58String(g)), aT, j)] ++ cx)
627+ ([StringEntry(at(H), P), StringEntry(aw(H, P), R), IntegerEntry(Q(P, R), bE), StringEntry(S(P, R), aN), StringEntry(T(P, R), aO), StringEntry(U(P, R), ay), StringEntry(W(P, R), az), StringEntry(V(P, R), aC), StringEntry(ab(P, R), aM), StringEntry(ac(P, R), aL), StringEntry(ae(P, R), cs), StringEntry(ad(P, R), aP), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(au(P, F), R), StringEntry(ar(P, R), H), StringEntry(ag(P, R), ct), IntegerEntry(ah(P, R), aQ), ScriptTransfer(Address(fromBase58String(g)), aV, j)] ++ cD)
610628 }
611629 else throw("Strict value is not equal to itself.")
612630 }
613631 }
614632 }
615633 }
616634 }
617635 }
618636 }
619637
620638
621639
622-@Callable(aR)
623-func updateArtwork (aq,aL,aM,aN,cm,aw,aA,ax,aB,ay,cn,aO,bs) = if (!(w))
640+@Callable(aT)
641+func updateArtwork (as,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = if (!(w))
624642 then throw(x)
625643 else {
626- let cy = br(aR, bs)
627- let bB = cy._1
628- let P = cy._2
629- let bC = cy._3
630- let bt = cy._4
631- let cz = aH(ay, aB)
632- let aJ = cz._1
633- let aK = cz._2
634- let cq = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
635- if ((cq != ""))
644+ let cE = bt(aT, bu)
645+ let bD = cE._1
646+ let P = cE._2
647+ let bE = cE._3
648+ let bv = cE._4
649+ let cF = aJ(aA, aD)
650+ let aL = cF._1
651+ let aM = cF._2
652+ let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
653+ if ((cw != ""))
636654 then throw("Something went wrong!")
637655 else {
638- let ct = b(S(P, aq))
639- if ((ct == ""))
656+ let cz = b(S(P, as))
657+ if ((cz == ""))
640658 then throw("Entry not found")
641659 else {
642- let cA = b(al(P, aq))
643- if ((cA == "ILLEGAL"))
660+ let cG = b(al(P, as))
661+ if ((cG == "ILLEGAL"))
644662 then throw("Cannot update ILLEGAL artwork")
645- else if (!(aX(P, aq)))
663+ else if (!(aZ(P, as)))
646664 then {
647- let cx = if (bt)
665+ let cD = if (bv)
648666 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
649667 else nil
650- ([StringEntry(S(P, aq), aL), StringEntry(T(P, aq), aM), StringEntry(U(P, aq), aw), StringEntry(W(P, aq), ax), StringEntry(V(P, aq), aA), StringEntry(ac(P, aq), aJ), StringEntry(ab(P, aq), aK), StringEntry(ad(P, aq), aN), StringEntry(ae(P, aq), cm), StringEntry(ag(P, aq), cn), IntegerEntry(ah(P, aq), aO)] ++ cx)
668+ ([StringEntry(S(P, as), aN), StringEntry(T(P, as), aO), StringEntry(U(P, as), ay), StringEntry(W(P, as), az), StringEntry(V(P, as), aC), StringEntry(ac(P, as), aL), StringEntry(ab(P, as), aM), StringEntry(ad(P, as), aP), StringEntry(ae(P, as), cs), StringEntry(ag(P, as), ct), IntegerEntry(ah(P, as), aQ)] ++ cD)
651669 }
652670 else throw("Already minted")
653671 }
654672 }
655673 }
656674
657675
658676
659-@Callable(aR)
660-func flagArtwork (R,cB,cA,cC) = {
661- let cD = bv(aR)
662- let bB = cD._1
663- let P = cD._2
677+@Callable(aT)
678+func flagArtwork (R,cH,cG,cI) = {
679+ let cJ = bx(aT)
680+ let bD = cJ._1
681+ let P = cJ._2
664682 if (containsElement([n, toString(this)], P))
665- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cA))
666- then [StringEntry(al(cB, R), cA), StringEntry(af(cB, R), cC)]
667- else throw(("Unknow status " + cA))
683+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
684+ then [StringEntry(al(cH, R), cG), StringEntry(af(cH, R), cI)]
685+ else throw(("Unknow status " + cG))
668686 else throw("You are not allowed")
669687 }
670688
671689
672690
673-@Callable(aR)
674-func deleteArtwork (R,cB) = {
675- let cE = bv(aR)
676- let bB = cE._1
677- let P = cE._2
678- let aY = if (containsElement([n, toString(this)], P))
679- then cB
691+@Callable(aT)
692+func deleteArtwork (R,cH) = {
693+ let cK = bx(aT)
694+ let bD = cK._1
695+ let P = cK._2
696+ let ba = if (containsElement([n, toString(this)], P))
697+ then cH
680698 else P
681- let ct = valueOrErrorMessage(b(S(aY, R)), "No art matching for this address")
682- if ((ct == ""))
699+ let cz = valueOrErrorMessage(b(S(ba, R)), "No art matching for this address")
700+ if ((cz == ""))
683701 then throw("No art matching for this address")
684702 else {
685- let H = b(ap(aY, R))
703+ let H = b(ar(ba, R))
686704 if ((H == ""))
687705 then throw("No art hash matching for this address")
688706 else {
689- let F = b(Y(aY, R))
707+ let F = b(Y(ba, R))
690708 if ((F == ""))
691709 then throw("No SIGN ID matching")
692710 else {
693- let cF = [DeleteEntry(Q(aY, R)), DeleteEntry(S(aY, R)), DeleteEntry(T(aY, R)), DeleteEntry(U(aY, R)), DeleteEntry(W(aY, R)), DeleteEntry(V(aY, R)), DeleteEntry(ab(aY, R)), DeleteEntry(ac(aY, R)), DeleteEntry(ae(aY, R)), DeleteEntry(ad(aY, R)), DeleteEntry(X(aY, R)), DeleteEntry(Y(aY, R)), DeleteEntry(Z(aY, R)), DeleteEntry(aa(aY, R)), DeleteEntry(al(aY, R)), DeleteEntry(ai(aY, R)), DeleteEntry(ak(aY, R)), DeleteEntry(ar(H)), DeleteEntry(as(aY, F)), DeleteEntry(au(H, aY)), DeleteEntry(aj(aY, R)), DeleteEntry(af(aY, R)), DeleteEntry(ag(aY, R)), DeleteEntry(ah(aY, R))]
694- if (!(aX(aY, R)))
711+ let cL = [DeleteEntry(Q(ba, R)), DeleteEntry(S(ba, R)), DeleteEntry(T(ba, R)), DeleteEntry(U(ba, R)), DeleteEntry(W(ba, R)), DeleteEntry(V(ba, R)), DeleteEntry(ab(ba, R)), DeleteEntry(ac(ba, R)), DeleteEntry(ae(ba, R)), DeleteEntry(ad(ba, R)), DeleteEntry(X(ba, R)), DeleteEntry(Y(ba, R)), DeleteEntry(Z(ba, R)), DeleteEntry(aa(ba, R)), DeleteEntry(al(ba, R)), DeleteEntry(ai(ba, R)), DeleteEntry(ak(ba, R)), DeleteEntry(at(H)), DeleteEntry(au(ba, F)), DeleteEntry(aw(H, ba)), DeleteEntry(aj(ba, R)), DeleteEntry(af(ba, R)), DeleteEntry(ag(ba, R)), DeleteEntry(ah(ba, R))]
712+ if (!(aZ(ba, R)))
695713 then if (!(w))
696714 then throw(x)
697- else cF
715+ else cL
698716 else if (containsElement([n, toString(this)], P))
699- then cF
717+ then cL
700718 else throw("Art already minted, you cannot delete it")
701719 }
702720 }
703721 }
704722 }
705723
706724
707725
708-@Callable(aR)
709-func sellArtwork (R,bg,cG,aW,bE,bs) = {
710- let cH = br(aR, bs)
711- let bB = cH._1
712- let P = cH._2
713- let bC = cH._3
714- let bt = cH._4
715- let bH = b(S(P, R))
716- if ((bH == ""))
726+@Callable(aT)
727+func sellArtwork (R,bi,cM,aY,bG,bu) = {
728+ let cN = bt(aT, bu)
729+ let bD = cN._1
730+ let P = cN._2
731+ let bE = cN._3
732+ let bv = cN._4
733+ let bJ = b(S(P, R))
734+ if ((bJ == ""))
717735 then throw("This art doesn't match your account")
718736 else {
719- let cA = b(al(P, R))
720- if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cA))
737+ let cG = b(al(P, R))
738+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
721739 then throw("Flagged artwork")
722740 else {
723- let cI = p(("current_bidamount_" + R))
724- if ((0 > bE))
741+ let cO = p(("current_bidamount_" + R))
742+ if ((0 > bG))
725743 then throw("Negative end")
726- else if (if ((bE > 0))
727- then if ((cG != 1))
744+ else if (if ((bG > 0))
745+ then if ((cM != 1))
728746 then true
729- else (bg != 0)
747+ else (bi != 0)
730748 else false)
731749 then throw("Timed offer only allowed for unique edition and offer only")
732750 else {
733- let cJ = if ((bE == 0))
751+ let cP = if ((bG == 0))
734752 then 0
735753 else height
736- if (!(be(aW)))
754+ if (!(bg(aY)))
737755 then throw("Something went wrong!")
738- else if (!(bf(aW, bg)))
756+ else if (!(bh(aY, bi)))
739757 then throw("Something went wrong!")
740758 else {
741- let aP = aF(P)
742- if ((aP != ""))
743- then throw(aP)
759+ let aR = aH(P)
760+ if ((aR != ""))
761+ then throw(aR)
744762 else {
745- let bJ = p(Z(P, R))
746- let bK = p(X(P, R))
747- if ((cG > 100))
763+ let bL = p(Z(P, R))
764+ let bM = p(X(P, R))
765+ if ((cM > 100))
748766 then throw("100 editions max per artwork")
749- else if (if ((bJ != 0))
750- then (bJ == bK)
767+ else if (if ((bL != 0))
768+ then (bL == bM)
751769 else false)
752770 then throw("Max edition reached.")
753- else if (if ((bJ > 0))
754- then (bK != cG)
771+ else if (if ((bL > 0))
772+ then (bM != cM)
755773 else false)
756774 then throw("Cannot change maximum issuable anymore")
757- else if (if ((cI > 0))
758- then (bK != cG)
775+ else if (if ((cO > 0))
776+ then (bM != cM)
759777 else false)
760778 then throw("Cannot change maximum issuable with active orders")
761779 else {
762- let bX = if (if ((bg > 0))
763- then (cG > 0)
780+ let cc = if (if ((bi > 0))
781+ then (cM > 0)
764782 else false)
765783 then true
766784 else false
767- let cx = if (bt)
785+ let cD = if (bv)
768786 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
769787 else nil
770- ([BooleanEntry(aa(P, R), bX), IntegerEntry(ai(P, R), bg), IntegerEntry(X(P, R), cG), StringEntry(ak(P, R), aW), IntegerEntry(aj(P, R), (cJ + bE))] ++ cx)
788+ ([BooleanEntry(aa(P, R), cc), IntegerEntry(ai(P, R), bi), IntegerEntry(X(P, R), cM), StringEntry(ak(P, R), aY), IntegerEntry(aj(P, R), (cP + bG))] ++ cD)
771789 }
772790 }
773791 }
774792 }
775793 }
776794 }
777795 }
778796
779797
780798
781-@Callable(aR)
782-func buyArtwork (R,bx) = bw(aR, R, bx, "", "")
799+@Callable(aT)
800+func buyArtwork (R,bz) = by(aT, R, bz, "", "")
783801
784802
785803
786-@Callable(aR)
787-func setBid (R,bx) = {
788- let cK = bv(aR)
789- let bB = cK._1
790- let P = cK._2
791- let bC = cK._3
792- let cL = aQ(aR)
793- let aS = cL._1
794- let aT = cL._2
795- let aW = if (!(isDefined(aS.assetId)))
804+@Callable(aT)
805+func setBid (R,bz) = {
806+ let cQ = bx(aT)
807+ let bD = cQ._1
808+ let P = cQ._2
809+ let bE = cQ._3
810+ let cR = aS(aT)
811+ let aU = cR._1
812+ let aV = cR._2
813+ let aY = if (!(isDefined(aU.assetId)))
796814 then "WAVES"
797- else toBase58String(value(aS.assetId))
798- let bE = p(aj(bx, R))
799- if (if ((bE != 0))
800- then (height >= bE)
815+ else toBase58String(value(aU.assetId))
816+ let bG = p(aj(bz, R))
817+ if (if ((bG != 0))
818+ then (height >= bG)
801819 else false)
802820 then throw("Sale ended.")
803821 else {
804- let cI = p(("current_bidamount_" + R))
805- if (!(be(aW)))
822+ let cO = p(("current_bidamount_" + R))
823+ if (!(bg(aY)))
806824 then throw("asset not accepted")
807- else if (!(bf(aW, aT)))
825+ else if (!(bh(aY, aV)))
808826 then throw("Wrong min sell")
809827 else {
810- let bJ = p(Z(bx, R))
811- let bK = p(X(bx, R))
812- if ((0 >= bK))
828+ let bL = p(Z(bz, R))
829+ let bM = p(X(bz, R))
830+ if ((0 >= bM))
813831 then throw("No max edition set for this artwork")
814- else if ((bJ >= bK))
832+ else if ((bL >= bM))
815833 then throw("Sold out, you cannot bid")
816- else [StringEntry((((((((("bid_" + R) + "_") + bx) + "_") + P) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cI + 1))]
834+ else [StringEntry((((((((("bid_" + R) + "_") + bz) + "_") + P) + "_") + bD) + "_OPEN"), ((((aY + "_") + toString(aV)) + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cO + 1))]
817835 }
818836 }
819837 }
820838
821839
822840
823-@Callable(aR)
824-func acceptBid (R,bx,by,bz) = {
825- let cM = bv(aR)
826- let bB = cM._1
827- let P = cM._2
828- let bC = cM._3
829- if ((P != bx))
841+@Callable(aT)
842+func acceptBid (R,bz,bA,bB) = {
843+ let cS = bx(aT)
844+ let bD = cS._1
845+ let P = cS._2
846+ let bE = cS._3
847+ if ((P != bz))
830848 then throw("You cannot do this action")
831- else bw(aR, R, bx, by, bz)
849+ else by(aT, R, bz, bA, bB)
832850 }
833851
834852
835853
836-@Callable(aR)
837-func cancelBid (R,bx,by,bz) = {
838- let cN = bv(aR)
839- let bB = cN._1
840- let P = cN._2
841- let bC = cN._3
842- if (if ((P != bz))
843- then (P != bx)
854+@Callable(aT)
855+func cancelBid (R,bz,bA,bB) = {
856+ let cT = bx(aT)
857+ let bD = cT._1
858+ let P = cT._2
859+ let bE = cT._3
860+ if (if ((P != bB))
861+ then (P != bz)
844862 else false)
845863 then throw("You cannot do this action")
846864 else {
847- let cO = if ((P == bx))
848- then bz
865+ let cU = if ((P == bz))
866+ then bB
849867 else P
850- let cI = p(("current_bidamount_" + R))
851- let bm = ((((((("bid_" + R) + "_") + bx) + "_") + bz) + "_") + by)
852- let bn = b((bm + "_OPEN"))
853- if ((bn == ""))
868+ let cO = p(("current_bidamount_" + R))
869+ let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
870+ let bp = b((bo + "_OPEN"))
871+ if ((bp == ""))
854872 then throw("Bid not found")
855873 else {
856- let bo = split(bn, "_")
857- let aW = bk(bo[0])
858- let cP = "CANCELED"
859-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cP), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + R), (cI - 1)), ScriptTransfer(Address(fromBase58String(cO)), parseIntValue(bo[1]), aW)]
874+ let bq = split(bp, "_")
875+ let aY = bm(bq[0])
876+ let cV = "CANCELED"
877+[DeleteEntry((bo + "_OPEN")), StringEntry(((bo + "_") + cV), ((bp + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cO - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bq[1]), aY)]
860878 }
861879 }
862880 }
863881
864882
865-@Verifier(cQ)
866-func cR () = {
867- let I = cQ
883+@Verifier(cW)
884+func cX () = {
885+ let I = cW
868886 if ($isInstanceOf(I, "InvokeScriptTransaction"))
869887 then {
870- let cS = I
871- if (if (if (if ((cS.function == "addArtwork"))
872- then (cS.dApp == this)
888+ let cY = I
889+ if (if (if (if ((cY.function == "addArtwork"))
890+ then (cY.dApp == this)
873891 else false)
874- then (cS.fee == 500000)
892+ then (cY.fee == 500000)
875893 else false)
876- then (cS.feeAssetId == unit)
894+ then (cY.feeAssetId == unit)
877895 else false)
878- then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[13])))
879- else if (if (if (if ((cS.function == "updateArtwork"))
880- then (cS.dApp == this)
896+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
897+ else if (if (if (if ((cY.function == "updateArtwork"))
898+ then (cY.dApp == this)
881899 else false)
882- then (cS.fee == 500000)
900+ then (cY.fee == 500000)
883901 else false)
884- then (cS.feeAssetId == unit)
902+ then (cY.feeAssetId == unit)
885903 else false)
886- then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[12])))
887- else if (if (if (if ((cS.function == "sellArtwork"))
888- then (cS.dApp == this)
904+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
905+ else if (if (if (if ((cY.function == "sellArtwork"))
906+ then (cY.dApp == this)
889907 else false)
890- then (cS.fee == 500000)
908+ then (cY.fee == 500000)
891909 else false)
892- then (cS.feeAssetId == unit)
910+ then (cY.feeAssetId == unit)
893911 else false)
894- then sigVerify(cQ.bodyBytes, cQ.proofs[0], fromBase58String(ch(cS.args[5])))
895- else sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
912+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
913+ else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
896914 }
897- else sigVerify(cQ.bodyBytes, cQ.proofs[0], cQ.senderPublicKey)
915+ else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
898916 }
899917

github/deemru/w8io/873ac7e 
329.60 ms