tx · 9yvQJSP7pkWYTYc6GqmxDprZXS6EZQX8siYrMQ32QHs9

3MwdVPEmiBfThXqW5m7PPeTu76owGHSKWGW:  -0.01000000 Waves

2021.09.23 10:24 [1715403] smart account 3MwdVPEmiBfThXqW5m7PPeTu76owGHSKWGW > SELF 0.00000000 Waves

{ "type": 13, "id": "9yvQJSP7pkWYTYc6GqmxDprZXS6EZQX8siYrMQ32QHs9", "fee": 1000000, "feeAssetId": null, "timestamp": 1632381896239, "version": 2, "chainId": 84, "sender": "3MwdVPEmiBfThXqW5m7PPeTu76owGHSKWGW", "senderPublicKey": "PtZqqoQyDy4ianR1QDfaWUknBktWWkQPpyPdG2aYbKr", "proofs": [ "62zQZZd4gDPwYNZSXyMz2ZWjgrZJwqrHwLgBgAzFJejvEBZ2igJU1uKJpveVPGEdeie3awbn1MCdjByYHjjo7P72" ], "script": "base64:AAIFAAAAAAAAAFIIAhINCgsICAgICAgICAgICBIMCgoICAgICAgICAgIEgYKBAgICAgSBAoCCAgSBwoFCAEBCAESBAoCCAgSBAoCCAgSBgoECAgICBIGCgQICAgIAAAARQAAAAAIdW5pdFRlc3QGAAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAACHNpZ25EYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAtmZWVSZWNlaXZlcgIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAACHVzZXJEYXBwAwUAAAAIdW5pdFRlc3QJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM044eFhhWWpFMjdBYTc5ZDVoSHJoSHU5SGFGb1RCbWhERWoAAAAADXdoaXRlbGlzdERhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM042QmFWMWRDQjR6ZzQzZ29OTkhhQ3R2UjEzQmN5SjVHc3EAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAALdXNkbkFzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAx3YXZlc0Fzc2V0SWQBAAAAAAAAAAAFY2hyaXMCAAAAIzNNc0c2alBOQ3JWSlV0WUI3WEpCeFM3dXRXc1hBZjRuOVZwAAAAAARqb2VwAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAHc2lnbkN1dAAAAAAAAAAABwAAAAALdXNkbldhdmVDdXQAAAAAAAAAAAoAAAAADmRlZmF1bHRMaWNlbmNlAgAAAEdiYWZ5YmVpZnV5bzRwcXU1NGlzbXFndGI2ZTRoNmtrdmd4N3pnNHUzemliaDJyN3k2bWI2NGk3Ynp6YS9saWNlbmNlLnBkZgAAAAASZGVmYXVsdEhhc2hMaWNlbmNlAgAAAEBhODc3NThjMzU0ZTMwYTllNzhmYjg0ZmEzYTAwMTBhNTA5MGFiMjBkZjBiZTExYWQ0NWI1NzIwY2MxODdlNjM5AAAAAAtkYXBwUnVubmluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9kYXBwX2lzX3J1bm5pbmcGAAAAAA5tYWludGVuYW5jZU1TRwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9tYWludGVuYW5jZV9tc2cCAAAAAAAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAAQdXNlclVucmVnaXN0ZXJlZAIAAAAMVU5SRUdJU1RFUkVEAAAAAAt1c2VyQWxsb3dlZAIAAAAHQUxMT1dFRAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkCAAAAAAEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAJb3JhY2xlRmVlBQAAAANrZXkCAAAAH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBAAAAD2dldEludGVnZXJCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAAOY2hlY2tXaGl0ZWxpc3QAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAA13aGl0ZWxpc3REYXBwBQAAAANrZXkAAAAAAAAAAAABAAAAD2dldEJvb2xlYW5CeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcAAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQkAASwAAAACAgAAABJjZXJ0aWZpY2F0aW9uX2ZlZV8JAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQBAAAAFGNoZWNrU2lnbkNlcnRpZmljYXRlAAAAAwAAAAZzaWduSUQAAAAFT3duZXIAAAAKc2hhMjU2SGFzaAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAhzaWduRGFwcAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIZGF0YV9mY18FAAAABnNpZ25JRAIAAAABXwUAAAAFT3duZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAMJAQAAAAhjb250YWlucwAAAAIFAAAAAWEFAAAACnNoYTI1Nkhhc2gGBwcBAAAAC3ZhbGlkYXRlQ0lEAAAAAQAAAANjaWQDCQEAAAAIY29udGFpbnMAAAACBQAAAANjaWQCAAAAAS8DAwkAAGYAAAACAAAAAAAAAABMCQABMQAAAAEFAAAAA2NpZAkAAAAAAAACCQABMQAAAAEJAAGRAAAAAgkABLUAAAACBQAAAANjaWQCAAAAAS8AAAAAAAAAAAAAAAAAAAAAADsHCQAAZgAAAAIAAAAAAAAAABAJAAExAAAAAQkAAZEAAAACCQAEtQAAAAIFAAAAA2NpZAIAAAABLwAAAAAAAAAAAQcHAQAAAAx2YWxpZGF0ZUhhc2gAAAABAAAABGhhc2gJAAAAAAAAAgkAATEAAAABBQAAAARoYXNoAAAAAAAAAABAAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAAZjYWxsZXIBAAAAB2tleURhdGUAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X2RhdGVfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAdrZXlOYW1lAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9uYW1lXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAHa2V5RGVzYwAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZGVzY18FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAADWtleURpc3BsYXlDaWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAQYXJ0X2Rpc3BsYXlfY2lkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAANa2V5RXhwb3J0SGFzaAAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABBhcnRfZXhwb3J0X2hhc2hfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAxrZXlFeHBvcnRDaWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPYXJ0X2V4cG9ydF9jaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAprZXlNYXhNaW50AAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADGFydF9tYXhtaW50XwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAJa2V5U2lnbklEAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC2FydF9zaWduaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAlrZXlJc3N1ZWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALYXJ0X2lzc3VlZF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAACWtleU9uU2FsZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAthcnRfb25zYWxlXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAOa2V5TGljZW5jZUhhc2gAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAARYXJ0X2xpY2VuY2VfaGFzaF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAADWtleUxpY2VuY2VDaWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAQYXJ0X2xpY2VuY2VfY2lkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAHa2V5VGFncwAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfdGFnc18FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAB2tleVR5cGUAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X3R5cGVfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAhrZXlQcmljZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAphcnRfcHJpY2VfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAprZXlFbmRTYWxlAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADGFydF9lbmRzYWxlXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAASa2V5QXNzZXRJZEFjY2VwdGVkAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmFydF9hc3NldEFjY2VwdGVkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAHa2V5RmxhZwAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZmxhZ18FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAEWtleUhhc2hCeVR4aWRBZGRyAAAAAgAAAAZjYWxsZXIAAAAEdHhpZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAATZ2V0X2hhc2hieXR4aWRhZGRyXwUAAAAEdHhpZAIAAAABXwUAAAAGY2FsbGVyAQAAAA5rZXlPd25lckJ5SGFzaAAAAAEAAAAKc2hhMjU2SGFzaAkAASwAAAACAgAAABJnZXRfb3duZXJfYnlfaGFzaF8FAAAACnNoYTI1Nkhhc2gBAAAADWtleWlkQnlTaWduaWQAAAACAAAABmNhbGxlcgAAAAZzaWduSWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmdldF9hcnRpZGJ5c2lnbmlkXwUAAAAGc2lnbklkAgAAAAFfBQAAAAZjYWxsZXIBAAAAEmtleVR4aWRCeUhhc2hPd25lcgAAAAIAAAAKc2hhMjU2SGFzaAAAAAZjYWxsZXIJAAEsAAAAAgIAAAAXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JAAJYAAAAAQkAC1QAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyAQAAAA52YWxpZGF0ZUFsbENJRAAAAAMAAAAKY2lkRGlzcGxheQAAAAljaWRFeHBvcnQAAAAKY2lkTGljZW5jZQMJAQAAAAEhAAAAAQkBAAAAC3ZhbGlkYXRlQ0lEAAAAAQUAAAAKY2lkRGlzcGxheQkAAAIAAAABAgAAABFXcm9uZyBEaXNwbGF5IENJRAMJAQAAAAEhAAAAAQkBAAAAC3ZhbGlkYXRlQ0lEAAAAAQUAAAAJY2lkRXhwb3J0CQAAAgAAAAECAAAAEFdyb25nIEV4cG9ydCBDSUQDAwkBAAAAAiE9AAAAAgUAAAAKY2lkTGljZW5jZQIAAAAACQEAAAABIQAAAAEJAQAAAAt2YWxpZGF0ZUNJRAAAAAEFAAAACmNpZExpY2VuY2UHCQAAAgAAAAECAAAAEVdyb25nIExpY2VuY2UgQ0lEBgEAAAAPdmFsaWRhdGVBbGxIYXNoAAAAAgAAAAxzaGEyNTZFeHBvcnQAAAANc2hhMjU2TGljZW5jZQMJAQAAAAEhAAAAAQkBAAAADHZhbGlkYXRlSGFzaAAAAAEFAAAADHNoYTI1NkV4cG9ydAkAAAIAAAABAgAAABhFeHBvcnQgSGFzaCA2NCBjaGFyLiBtYXgDCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAA1zaGEyNTZMaWNlbmNlCQAAAgAAAAECAAAAGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQAAAA52YWxpZGF0ZVN0cmluZwAAAAIAAAADc3RyAAAAA21heAMJAAAAAAAAAgkAATEAAAABBQAAAANzdHIAAAAAAAAAAAAJAAACAAAAAQIAAAAYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAA3N0cgUAAAADbWF4CQAAAgAAAAEJAAEsAAAAAgUAAAADc3RyAgAAAAwgaXMgdG9vIGxvbmcGAQAAAAx2YWxpZGF0ZVVzZXIAAAABAAAABmNhbGxlcgQAAAAKdXNlclN0YXR1cwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAZjYWxsZXIFAAAAEHVzZXJVbnJlZ2lzdGVyZWQDAwkAAAAAAAACBQAAAAp1c2VyU3RhdHVzBQAAABB1c2VyVW5yZWdpc3RlcmVkBgkAAAAAAAACBQAAAAp1c2VyU3RhdHVzBQAAAAt1c2VyQWxsb3dlZAIAAAAuUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGZpcnN0IHdpdGggIkFjY291bnQiIHRhYgMJAAAAAAAAAgUAAAAKdXNlclN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAIAAAARQWNjb3VudCBzdXNwZW5kZWQDCQAAAAAAAAIFAAAACnVzZXJTdGF0dXMFAAAAC3VzZXJSZW1vdmVkAgAAAA9BY2NvdW50IHJlbW92ZWQCAAAAAAEAAAAKc2V0TEljZW5jZQAAAAIAAAAKY2lkTGljZW5jZQAAAA1zaGEyNTZMaWNlbmNlBAAAAANjaWQDCQAAAAAAAAIJAAExAAAAAQUAAAAKY2lkTGljZW5jZQAAAAAAAAAAAAUAAAAOZGVmYXVsdExpY2VuY2UFAAAACmNpZExpY2VuY2UEAAAABGhhc2gDCQAAAAAAAAIJAAExAAAAAQUAAAANc2hhMjU2TGljZW5jZQAAAAAAAAAAAAUAAAASZGVmYXVsdEhhc2hMaWNlbmNlBQAAAA1zaGEyNTZMaWNlbmNlCQAFFAAAAAIFAAAAA2NpZAUAAAAEaGFzaAEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAkAAAAGY2FsbGVyAAAACmNpZERpc3BsYXkAAAAJY2lkRXhwb3J0AAAACmxpY2VuY2VDSUQAAAAMc2hhMjU2RXhwb3J0AAAAC2xpY2VuY2VIYXNoAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAEdGFncwQAAAAJY2hlY2tVc2VyCQEAAAAMdmFsaWRhdGVVc2VyAAAAAQUAAAAGY2FsbGVyAwkBAAAAAiE9AAAAAgUAAAAJY2hlY2tVc2VyAgAAAAAJAAACAAAAAQUAAAAJY2hlY2tVc2VyAwkAAAAAAAACCQABMQAAAAEFAAAACmNpZERpc3BsYXkAAAAAAAAAAAAJAAACAAAAAQIAAAAbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVBbGxDSUQAAAADBQAAAApjaWREaXNwbGF5BQAAAAljaWRFeHBvcnQFAAAACmxpY2VuY2VDSUQJAAACAAAAAQIAAAAQUHJvYmxlbSB3aXRoIENJRAMJAQAAAAEhAAAAAQkBAAAAD3ZhbGlkYXRlQWxsSGFzaAAAAAIFAAAADHNoYTI1NkV4cG9ydAUAAAALbGljZW5jZUhhc2gJAAACAAAAAQIAAAATUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQAAAAEhAAAAAQkBAAAADnZhbGlkYXRlU3RyaW5nAAAAAgUAAAAEbmFtZQAAAAAAAAAAZAkAAAIAAAABAgAAABIxMDAgQ2hhci4gbWF4IG5hbWUDCQEAAAABIQAAAAEJAQAAAA52YWxpZGF0ZVN0cmluZwAAAAIFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAPoCQAAAgAAAAECAAAAGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwkAAGYAAAACCQABkAAAAAEJAAS1AAAAAgUAAAAEdGFncwIAAAABLAAAAAAAAAAABQkAAAIAAAABAgAAAAs1IHRhZ3MgbWF4LgIAAAAAAQAAAAlpc1BheW1lbnQAAAABAAAAAWkDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAATTm8gcGF5bWVudCBhdHRhY2hlZAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAGYW1vdW50CQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAZhbW91bnQJAAUUAAAAAgUAAAAHcGF5bWVudAUAAAAGYW1vdW50AQAAAA92YWxpZGF0ZVBheW1lbnQAAAABAAAAAWkEAAAACyR0MDkzMDc5MzQzCQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAACyR0MDkzMDc5MzQzAAAAAl8xBAAAAAZhbW91bnQIBQAAAAskdDA5MzA3OTM0MwAAAAJfMgQAAAAHYXNzZXRJZAMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAAAAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAtzaWduQXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAArT25seSBTSUdOIHRva2VuIGFjY2VwdGVkIGFzIHRyYW5zYWN0aW9uIGZlZQMJAQAAAAIhPQAAAAIFAAAABmFtb3VudAUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkAAAIAAAABCQABLAAAAAICAAAAGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAAGkAAAAAQUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkABRQAAAACBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQBAAAAC2lzQXJ0TWludGVkAAAAAgAAAAlhZGRyVG9Vc2UAAAAFYXJ0SWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAACWtleUlzc3VlZAAAAAIFAAAACWFkZHJUb1VzZQUAAAAFYXJ0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAQAAAAIhPQAAAAIFAAAAAWIAAAAAAAAAAAAGBwcBAAAAFHZhbGlkYXRlUHJpY2VBc3NldElkAAAAAwAAAAFpAAAADHByaWNlQXNzZXRJZAAAAAxhcnR3b3JrUHJpY2UEAAAACyR0MDk5NTA5OTg2CQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAACyR0MDk5NTA5OTg2AAAAAl8xBAAAAAZhbW91bnQIBQAAAAskdDA5OTUwOTk4NgAAAAJfMgQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAABHVuaXQDAwkAAGYAAAACCQABMQAAAAEFAAAADHByaWNlQXNzZXRJZAAAAAAAAAAAAAkAAAAAAAACCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAADHByaWNlQXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAR1bml0CQEAAAACIT0AAAACBQAAAAxwcmljZUFzc2V0SWQCAAAAAAcJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDCQEAAAACIT0AAAACBQAAAAxhcnR3b3JrUHJpY2UFAAAABmFtb3VudAkAAAIAAAABAgAAABNQYXltZW50IGRvbid0IG1hdGNoCQAFFAAAAAIFAAAABmFtb3VudAUAAAAHYXNzZXRJZAEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEAAAAHYXNzZXRJZAMDAwMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAAMd2F2ZXNBc3NldElkBwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMHCQEAAAACIT0AAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3VzZG5Bc3NldElkBwkAAAIAAAABAgAAACFPbmx5IFNJR04sIFVTRE4gb3IgV0FWRVMgYWNjZXB0ZWQGAQAAAA92YWxpZGF0ZU1pblNlbGwAAAACAAAAB2Fzc2V0SWQAAAAFcHJpY2UEAAAADG1pblNlbGxXYXZlcwMFAAAACHVuaXRUZXN0AAAAAAAAAAAKCQEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAECAAAADndhdmVzX21pbl9zZWxsBAAAAAttaW5TZWxsVXNkbgAAAAAAAA9CQAQAAAALbWluU2VsbFNpZ24DBQAAAAh1bml0VGVzdAAAAAAAAAAAAQkAAGgAAAACBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlAAAAAAAAAAACAwMDAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAt1c2RuQXNzZXRJZAkAAGYAAAACBQAAAAttaW5TZWxsVXNkbgUAAAAFcHJpY2UHCQEAAAACIT0AAAACBQAAAAVwcmljZQAAAAAAAAAAAAcGAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAtzaWduQXNzZXRJZAkAAGYAAAACBQAAAAttaW5TZWxsU2lnbgUAAAAFcHJpY2UHCQEAAAACIT0AAAACBQAAAAVwcmljZQAAAAAAAAAAAAcGAwMDCQAAAAAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAAMd2F2ZXNBc3NldElkBgkAAAAAAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwkAAGYAAAACBQAAAAxtaW5TZWxsV2F2ZXMFAAAABXByaWNlBwkBAAAAAiE9AAAAAgUAAAAFcHJpY2UAAAAAAAAAAAAHCQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQYBAAAADWdldEJpZEFzc2V0SWQAAAABAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAB2Fzc2V0SWQBAAAAFmdldFByaWNlQXNzZXRJZEZyb21CaWQAAAABAAAACmJpZERhdGFLZXkEAAAAB2JpZERhdGEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAFX09QRU4DCQAAAAAAAAIFAAAAB2JpZERhdGECAAAAAAkAAAIAAAABAgAAAA1CaWQgbm90IGZvdW5kBAAAAApiaWREYXRhQXJyCQAEtQAAAAIFAAAAB2JpZERhdGECAAAAAV8EAAAACWJpZEFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAEEAAAACmJpZEFzc2V0SWQJAQAAAA1nZXRCaWRBc3NldElkAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAAAAwkAAGcAAAACAAAAAAAAAAAABQAAAAliaWRBbW91bnQJAAACAAAAAQIAAAAMV3JvbmcgYW1vdW50CQAFFAAAAAIFAAAACWJpZEFtb3VudAUAAAAKYmlkQXNzZXRJZAEAAAAMaWRDYWxsZXJEYXRlAAAAAQAAAAFpAwkBAAAAASEAAAABBQAAAAtkYXBwUnVubmluZwkAAAIAAAABBQAAAA5tYWludGVuYW5jZU1TRwkABRUAAAADCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXABAAAAB2J1eU1pbnQAAAAFAAAAAWkAAAAFYXJ0SWQAAAAGaXNzdWVyAAAABWJpZElkAAAACGJpZE93bmVyBAAAAA0kdDAxMjI1MzEyMzEzCQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxMjI1MzEyMzEzAAAAAl8xBAAAAAZjYWxsZXIIBQAAAA0kdDAxMjI1MzEyMzEzAAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTIyNTMxMjMxMwAAAAJfMwQAAAAFaXNCaWQDAwMJAAAAAAAAAgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBQAAAAZpc3N1ZXIJAQAAAAIhPQAAAAIFAAAACGJpZE93bmVyAgAAAAAHCQEAAAACIT0AAAACBQAAAAViaWRJZAIAAAAABwYHBAAAAAhibG9ja0VuZAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAprZXlFbmRTYWxlAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAMDAwkBAAAAAiE9AAAAAgUAAAAIYmxvY2tFbmQAAAAAAAAAAAAJAABnAAAAAgUAAAAGaGVpZ2h0BQAAAAhibG9ja0VuZAcJAQAAAAEhAAAAAQUAAAAFaXNCaWQHCQAAAgAAAAECAAAAC1NhbGUgZW5kZWQuBAAAAA5jYWxsZXJJc0lzc3VlcgkAAAAAAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAABmlzc3VlcgQAAAAIdG90YWxORlQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAgAAABB0b3RhbF9uZnRfaXNzdWVkBAAAAAZzaWduSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAlrZXlTaWduSUQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAthcnR3b3JrTmFtZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleU5hbWUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthcnR3b3JrTmFtZQIAAAAACQAAAgAAAAECAAAAEUFydCBkb2Vzbid0IGV4aXN0BAAAAAhpc09uU2FsZQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAAAlrZXlPblNhbGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACWtleUlzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGFydHdvcmtQcmljZQMFAAAADmNhbGxlcklzSXNzdWVyCQAAaAAAAAIFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAAAAAAAAAAIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAIa2V5UHJpY2UAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxwcmljZUFzc2V0SWQDBQAAAA5jYWxsZXJJc0lzc3VlcgkAAlgAAAABBQAAAAtzaWduQXNzZXRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleUFzc2V0SWRBY2NlcHRlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACm1heENhblNlbGwJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAKa2V5TWF4TWludAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDAwMJ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AAAFaXNCaWQJAARMAAAAAgUAAAAIc29sZERhdGEJAARMAAAAAgUAAAAJYmlkVXBkYXRlCQAETAAAAAIFAAAACWJpZERlbE9sZAUAAAAGYnV5UmVzCQAETAAAAAIFAAAACHNvbGREYXRhBQAAAAZidXlSZXMAAAAJAAAAAWkBAAAACmFkZEFydHdvcmsAAAALAAAACnNoYTI1Nkhhc2gAAAAGc2lnbklEAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAEdGFncwAAAAR0eXBlAAAACmNpZERpc3BsYXkAAAAMc2hhMjU2RXhwb3J0AAAACWNpZEV4cG9ydAAAAA1zaGEyNTZMaWNlbmNlAAAACmNpZExpY2VuY2UEAAAADSR0MDE2OTA4MTY5NDkJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAVhcnRJZAgFAAAADSR0MDE2OTA4MTY5NDkAAAACXzEEAAAABmNhbGxlcggFAAAADSR0MDE2OTA4MTY5NDkAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxNjkwODE2OTQ5AAAAAl8zAwkBAAAAASEAAAABCQEAAAAMdmFsaWRhdGVIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAkAAAIAAAABAgAAACRIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0EAAAADSR0MDE3MDU0MTcxMjMJAQAAAApzZXRMSWNlbmNlAAAAAgUAAAAKY2lkTGljZW5jZQUAAAANc2hhMjU2TGljZW5jZQQAAAAKbGljZW5jZUNJRAgFAAAADSR0MDE3MDU0MTcxMjMAAAACXzEEAAAAC2xpY2VuY2VIYXNoCAUAAAANJHQwMTcwNTQxNzEyMwAAAAJfMgQAAAAPdmFsaWRhdGVBcnR3b3JrCQEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAkFAAAABmNhbGxlcgUAAAAKY2lkRGlzcGxheQUAAAAJY2lkRXhwb3J0BQAAAApsaWNlbmNlQ0lEBQAAAAxzaGEyNTZFeHBvcnQFAAAAC2xpY2VuY2VIYXNoBQAAAARuYW1lBQAAAAtkZXNjcmlwdGlvbgUAAAAEdGFncwMJAQAAAAIhPQAAAAIFAAAAD3ZhbGlkYXRlQXJ0d29yawIAAAAACQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nIQQAAAANJHQwMTczNDcxNzM4OQkBAAAAD3ZhbGlkYXRlUGF5bWVudAAAAAEFAAAAAWkEAAAABmFtb3VudAgFAAAADSR0MDE3MzQ3MTczODkAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAA0kdDAxNzM0NzE3Mzg5AAAAAl8yAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAGYW1vdW50CQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAASa2V5VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyAwkBAAAAAiE9AAAAAgUAAAAKZW50cnlFeGlzdAIAAAAACQAAAgAAAAECAAAAFFlvdSBhbHJlYWR5IGFkZGVkIGl0BAAAAAloYXNoRXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA5rZXlPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gDCQEAAAACIT0AAAACBQAAAAloYXNoRXhpc3QCAAAAAAkAAAIAAAABAgAAABdIYXNoIGFscmVhZHkgcmVnaXN0ZXJlZAQAAAAPaXNTaWduQ2VydGlmaWVkCQEAAAAUY2hlY2tTaWduQ2VydGlmaWNhdGUAAAADBQAAAAZzaWduSUQFAAAABmNhbGxlcgUAAAAKc2hhMjU2SGFzaAMJAQAAAAEhAAAAAQUAAAAPaXNTaWduQ2VydGlmaWVkCQAAAgAAAAECAAAALFNpZ24gQ2VydGlmaWNhdGUgbm90IGZvdW5kIGZvciB0aGlzIGFkZHJlc3MuCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gFAAAABmNhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyBQAAAAVhcnRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAB2tleURhdGUAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAARkYXRlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlOYW1lAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5RGVzYwAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlEaXNwbGF5Q2lkAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAKY2lkRGlzcGxheQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5RXhwb3J0Q2lkAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAJY2lkRXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlFeHBvcnRIYXNoAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAMc2hhMjU2RXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlMaWNlbmNlSGFzaAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAC2xpY2VuY2VIYXNoCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlMaWNlbmNlQ2lkAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAKbGljZW5jZUNJRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5VHlwZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABHR5cGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleVRhZ3MAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAR0YWdzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAKa2V5TWF4TWludAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQAAAAAAAAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACWtleVNpZ25JRAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABnNpZ25JRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACWtleUlzc3VlZAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAlrZXlPblNhbGUAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5aWRCeVNpZ25pZAAAAAIFAAAABmNhbGxlcgUAAAAGc2lnbklEBQAAAAVhcnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5SGFzaEJ5VHhpZEFkZHIAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAApzaGEyNTZIYXNoCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtmZWVSZWNlaXZlcgUAAAAGYW1vdW50BQAAAAdhc3NldElkBQAAAANuaWwAAAABaQEAAAANdXBkYXRlQXJ0d29yawAAAAoAAAAEdHhpZAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABHRhZ3MAAAAEdHlwZQAAAApjaWREaXNwbGF5AAAADHNoYTI1NkV4cG9ydAAAAAljaWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlAwkBAAAAASEAAAABBQAAAAtkYXBwUnVubmluZwkAAAIAAAABBQAAAA5tYWludGVuYW5jZU1TRwQAAAAGY2FsbGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADSR0MDIwMDc2MjAxNDUJAQAAAApzZXRMSWNlbmNlAAAAAgUAAAAKY2lkTGljZW5jZQUAAAANc2hhMjU2TGljZW5jZQQAAAAKbGljZW5jZUNJRAgFAAAADSR0MDIwMDc2MjAxNDUAAAACXzEEAAAAC2xpY2VuY2VIYXNoCAUAAAANJHQwMjAwNzYyMDE0NQAAAAJfMgQAAAAPdmFsaWRhdGVBcnR3b3JrCQEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAkFAAAABmNhbGxlcgUAAAAKY2lkRGlzcGxheQUAAAAJY2lkRXhwb3J0BQAAAApsaWNlbmNlQ0lEBQAAAAxzaGEyNTZFeHBvcnQFAAAAC2xpY2VuY2VIYXNoBQAAAARuYW1lBQAAAAtkZXNjcmlwdGlvbgUAAAAEdGFncwMJAQAAAAIhPQAAAAIFAAAAD3ZhbGlkYXRlQXJ0d29yawIAAAAACQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nIQQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleU5hbWUAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQDCQAAAAAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAAA9FbnRyeSBub3QgZm91bmQEAAAABGZsYWcJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAdrZXlGbGFnAAAAAgUAAAAGY2FsbGVyBQAAAAR0eGlkAwkAAAAAAAACBQAAAARmbGFnAgAAAAdJTExFR0FMCQAAAgAAAAECAAAAHUNhbm5vdCB1cGRhdGUgSUxMRUdBTCBhcnR3b3JrAwkBAAAAASEAAAABCQEAAAALaXNBcnRNaW50ZWQAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleU5hbWUAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleURlc2MAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlEaXNwbGF5Q2lkAAAAAgUAAAAGY2FsbGVyBQAAAAR0eGlkBQAAAApjaWREaXNwbGF5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlFeHBvcnRDaWQAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQFAAAACWNpZEV4cG9ydAkABEwA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", "height": 1715403, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let unitTest = true
5+
6+let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
7+
8+let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
9+
10+let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
11+
12+let userDapp = if (unitTest)
13+ then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
14+ else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
15+
16+let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
17+
18+let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
19+
20+let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
21+
22+let wavesAssetId = base58''
23+
24+let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
25+
26+let joep = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
27+
28+let signCut = 7
29+
30+let usdnWaveCut = 10
31+
32+let defaultLicence = "bafybeifuyo4pqu54ismqgtb6e4h6kkvgx7zg4u3zibh2r7y6mb64i7bzza/licence.pdf"
33+
34+let defaultHashLicence = "a87758c354e30a9e78fb84fa3a0010a5090ab20df0be11ad45b5720cc187e639"
35+
36+let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
37+
38+let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
39+
40+let userSuspended = "SUSPENDED"
41+
42+let userRemoved = "REMOVED"
43+
44+let userUnregistered = "UNREGISTERED"
45+
46+let userAllowed = "ALLOWED"
47+
48+func getStringByKey (key) = valueOrElse(getString(this, key), "")
49+
50+
51+func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
52+
53+
54+func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
55+
56+
57+func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
58+
59+
60+func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
61+
62+
63+let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(signAssetId)))
64+
65+func checkSignCertificate (signID,Owner,sha256Hash) = match getString(signDapp, ((("data_fc_" + signID) + "_") + Owner)) {
66+ case a: String =>
67+ if (contains(a, sha256Hash))
68+ then true
69+ else false
70+ case _ =>
71+ false
72+}
73+
74+
75+func validateCID (cid) = if (contains(cid, "/"))
76+ then if (if ((76 > size(cid)))
77+ then (size(split(cid, "/")[0]) == 59)
78+ else false)
79+ then (16 > size(split(cid, "/")[1]))
80+ else false
81+ else false
82+
83+
84+func validateHash (hash) = (size(hash) == 64)
85+
86+
87+func keyUserStatus (caller) = ("user_status_" + caller)
88+
89+
90+func keyDate (caller,artId) = ((("art_date_" + artId) + "_") + caller)
91+
92+
93+func keyName (caller,artId) = ((("art_name_" + artId) + "_") + caller)
94+
95+
96+func keyDesc (caller,artId) = ((("art_desc_" + artId) + "_") + caller)
97+
98+
99+func keyDisplayCid (caller,artId) = ((("art_display_cid_" + artId) + "_") + caller)
100+
101+
102+func keyExportHash (caller,artId) = ((("art_export_hash_" + artId) + "_") + caller)
103+
104+
105+func keyExportCid (caller,artId) = ((("art_export_cid_" + artId) + "_") + caller)
106+
107+
108+func keyMaxMint (caller,artId) = ((("art_maxmint_" + artId) + "_") + caller)
109+
110+
111+func keySignID (caller,artId) = ((("art_signid_" + artId) + "_") + caller)
112+
113+
114+func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
115+
116+
117+func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
118+
119+
120+func keyLicenceHash (caller,artId) = ((("art_licence_hash_" + artId) + "_") + caller)
121+
122+
123+func keyLicenceCid (caller,artId) = ((("art_licence_cid_" + artId) + "_") + caller)
124+
125+
126+func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
127+
128+
129+func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
130+
131+
132+func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
133+
134+
135+func keyEndSale (caller,artId) = ((("art_endsale_" + artId) + "_") + caller)
136+
137+
138+func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
139+
140+
141+func keyFlag (caller,artId) = ((("art_flag_" + artId) + "_") + caller)
142+
143+
144+func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
145+
146+
147+func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
148+
149+
150+func keyidBySignid (caller,signId) = ((("get_artidbysignid_" + signId) + "_") + caller)
151+
152+
153+func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
154+
155+
156+func validateAllCID (cidDisplay,cidExport,cidLicence) = if (!(validateCID(cidDisplay)))
157+ then throw("Wrong Display CID")
158+ else if (!(validateCID(cidExport)))
159+ then throw("Wrong Export CID")
160+ else if (if ((cidLicence != ""))
161+ then !(validateCID(cidLicence))
162+ else false)
163+ then throw("Wrong Licence CID")
164+ else true
165+
166+
167+func validateAllHash (sha256Export,sha256Licence) = if (!(validateHash(sha256Export)))
168+ then throw("Export Hash 64 char. max")
169+ else if (!(validateHash(sha256Licence)))
170+ then throw("Licence Hash 64 char. max")
171+ else true
172+
173+
174+func validateString (str,max) = if ((size(str) == 0))
175+ then throw("Field cannot be is empty")
176+ else if ((size(str) > max))
177+ then throw((str + " is too long"))
178+ else true
179+
180+
181+func validateUser (caller) = {
182+ let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
183+ if (if ((userStatus == userUnregistered))
184+ then true
185+ else (userStatus == userAllowed))
186+ then "Register this account first with \"Account\" tab"
187+ else if ((userStatus == userSuspended))
188+ then "Account suspended"
189+ else if ((userStatus == userRemoved))
190+ then "Account removed"
191+ else ""
192+ }
193+
194+
195+func setLIcence (cidLicence,sha256Licence) = {
196+ let cid = if ((size(cidLicence) == 0))
197+ then defaultLicence
198+ else cidLicence
199+ let hash = if ((size(sha256Licence) == 0))
200+ then defaultHashLicence
201+ else sha256Licence
202+ $Tuple2(cid, hash)
203+ }
204+
205+
206+func validateArtworkData (caller,cidDisplay,cidExport,licenceCID,sha256Export,licenceHash,name,description,tags) = {
207+ let checkUser = validateUser(caller)
208+ if ((checkUser != ""))
209+ then throw(checkUser)
210+ else if ((size(cidDisplay) == 0))
211+ then throw("Display CID cannot be empty")
212+ else if (!(validateAllCID(cidDisplay, cidExport, licenceCID)))
213+ then throw("Problem with CID")
214+ else if (!(validateAllHash(sha256Export, licenceHash)))
215+ then throw("Problem with Hashes")
216+ else if (!(validateString(name, 100)))
217+ then throw("100 Char. max name")
218+ else if (!(validateString(description, 1000)))
219+ then throw("1000 Char. max description")
220+ else if ((size(split(tags, ",")) > 5))
221+ then throw("5 tags max.")
222+ else ""
223+ }
224+
225+
226+func isPayment (i) = if ((size(i.payments) == 0))
227+ then throw("No payment attached")
228+ else {
229+ let payment = value(i.payments[0])
230+ let amount = value(payment.amount)
231+ $Tuple2(payment, amount)
232+ }
233+
234+
235+func validatePayment (i) = {
236+ let $t093079343 = isPayment(i)
237+ let payment = $t093079343._1
238+ let amount = $t093079343._2
239+ let assetId = if (if (isDefined(payment.assetId))
240+ then (payment.assetId == signAssetId)
241+ else false)
242+ then payment.assetId
243+ else throw("Only SIGN token accepted as transaction fee")
244+ if ((amount != currentCertificationPrice))
245+ then throw(("Payment amount should be " + toString(currentCertificationPrice)))
246+ else $Tuple2(amount, assetId)
247+ }
248+
249+
250+func isArtMinted (addrToUse,artId) = match getInteger(this, keyIssued(addrToUse, artId)) {
251+ case b: Int =>
252+ if ((b != 0))
253+ then true
254+ else false
255+ case _ =>
256+ false
257+}
258+
259+
260+func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
261+ let $t099509986 = isPayment(i)
262+ let payment = $t099509986._1
263+ let amount = $t099509986._2
264+ let assetId = if (!(isDefined(payment.assetId)))
265+ then unit
266+ else if (if ((size(priceAssetId) > 0))
267+ then (toBase58String(value(payment.assetId)) == priceAssetId)
268+ else false)
269+ then payment.assetId
270+ else throw("Wrong asset id")
271+ if (if ((assetId == unit))
272+ then (priceAssetId != "")
273+ else false)
274+ then throw("Wrong asset id")
275+ else if ((artworkPrice != amount))
276+ then throw("Payment don't match")
277+ else $Tuple2(amount, assetId)
278+ }
279+
280+
281+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
282+ then (assetId != toBase58String(wavesAssetId))
283+ else false)
284+ then (assetId != "WAVES")
285+ else false)
286+ then (assetId != toBase58String(usdnAssetId))
287+ else false)
288+ then throw("Only SIGN, USDN or WAVES accepted")
289+ else true
290+
291+
292+func validateMinSell (assetId,price) = {
293+ let minSellWaves = if (unitTest)
294+ then 10
295+ else getIntegerByKeyFromOracle("waves_min_sell")
296+ let minSellUsdn = 1000000
297+ let minSellSign = if (unitTest)
298+ then 1
299+ else (currentCertificationPrice * 2)
300+ if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
301+ then (minSellUsdn > price)
302+ else false)
303+ then (price != 0)
304+ else false)
305+ then true
306+ else if (if ((assetId == toBase58String(signAssetId)))
307+ then (minSellSign > price)
308+ else false)
309+ then (price != 0)
310+ else false)
311+ then true
312+ else if (if (if ((assetId == toBase58String(wavesAssetId)))
313+ then true
314+ else (assetId == "WAVES"))
315+ then (minSellWaves > price)
316+ else false)
317+ then (price != 0)
318+ else false)
319+ then throw("Wrong minimum sell price")
320+ else true
321+ }
322+
323+
324+func getBidAssetId (assetId) = if ((assetId == "WAVES"))
325+ then unit
326+ else fromBase58String(assetId)
327+
328+
329+func getPriceAssetIdFromBid (bidDataKey) = {
330+ let bidData = getStringByKey((bidDataKey + "_OPEN"))
331+ if ((bidData == ""))
332+ then throw("Bid not found")
333+ else {
334+ let bidDataArr = split(bidData, "_")
335+ let bidAmount = parseIntValue(bidDataArr[1])
336+ let bidAssetId = getBidAssetId(bidDataArr[0])
337+ if ((0 >= bidAmount))
338+ then throw("Wrong amount")
339+ else $Tuple2(bidAmount, bidAssetId)
340+ }
341+ }
342+
343+
344+func idCallerDate (i) = if (!(dappRunning))
345+ then throw(maintenanceMSG)
346+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
347+
348+
349+func buyMint (i,artId,issuer,bidId,bidOwner) = {
350+ let $t01225312313 = idCallerDate(i)
351+ let id = $t01225312313._1
352+ let caller = $t01225312313._2
353+ let date = $t01225312313._3
354+ let isBid = if (if (if ((toBase58String(i.caller.bytes) == issuer))
355+ then (bidOwner != "")
356+ else false)
357+ then (bidId != "")
358+ else false)
359+ then true
360+ else false
361+ let blockEnd = getIntegerByKey(keyEndSale(caller, artId))
362+ if (if (if ((blockEnd != 0))
363+ then (height >= blockEnd)
364+ else false)
365+ then !(isBid)
366+ else false)
367+ then throw("Sale ended.")
368+ else {
369+ let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
370+ let totalNFT = getIntegerByKey("total_nft_issued")
371+ let signID = getStringByKey(keySignID(issuer, artId))
372+ let artworkName = getStringByKey(keyName(issuer, artId))
373+ if ((artworkName == ""))
374+ then throw("Art doesn't exist")
375+ else {
376+ let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
377+ let amountSold = getIntegerByKey(keyIssued(issuer, artId))
378+ let artworkPrice = if (callerIsIssuer)
379+ then (currentCertificationPrice * 2)
380+ else getIntegerByKey(keyPrice(issuer, artId))
381+ let priceAssetId = if (callerIsIssuer)
382+ then toBase58String(signAssetId)
383+ else getStringByKey(keyAssetIdAccepted(issuer, artId))
384+ let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
385+ if (if (if (!(isBid))
386+ then !(callerIsIssuer)
387+ else false)
388+ then if (if ((0 >= artworkPrice))
389+ then true
390+ else !(isOnSale))
391+ then true
392+ else (0 >= maxCanSell)
393+ else false)
394+ then throw("Art not for sale")
395+ else if (if (if (!(isBid))
396+ then callerIsIssuer
397+ else false)
398+ then (0 >= maxCanSell)
399+ else false)
400+ then throw("Max issuable not set")
401+ else {
402+ let checkUser = validateUser(issuer)
403+ if (if (isBid)
404+ then (checkUser != "")
405+ else false)
406+ then throw(checkUser)
407+ else {
408+ let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
409+ let $t01409214251 = if (isBid)
410+ then getPriceAssetIdFromBid(bidDataKey)
411+ else validatePriceAssetId(i, priceAssetId, artworkPrice)
412+ let amount = $t01409214251._1
413+ let assetId = $t01409214251._2
414+ let isWhitelisted = checkWhitelist(issuer)
415+ let cut = if ((isWhitelisted > height))
416+ then 0
417+ else if ((assetId == signAssetId))
418+ then signCut
419+ else usdnWaveCut
420+ let amountForSign = fraction(amount, cut, 100)
421+ let amountForCreator = (amount - amountForSign)
422+ if ((amountSold == maxCanSell))
423+ then throw("Art sold out")
424+ else {
425+ let newAmountSold = (amountSold + 1)
426+ let issueMeta = ((((((((((("Creator: " + issuer) + ",
427+ ArtID: ") + artId) + ",
428+ SignID: ") + signID) + ",
429+ Artwork name: ") + artworkName) + ",
430+ Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
431+ let issueNFT = Issue(("SA_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
432+ let idNFT = calculateAssetId(issueNFT)
433+ let sellStatus = if (if ((newAmountSold == maxCanSell))
434+ then true
435+ else !(isOnSale))
436+ then false
437+ else true
438+ let receiveNFT = if (if (if ((caller == issuer))
439+ then (bidOwner != "")
440+ else false)
441+ then (bidId != "")
442+ else false)
443+ then addressFromStringValue(bidOwner)
444+ else i.caller
445+ let assetIdBid = if (!(isDefined(assetId)))
446+ then "WAVES"
447+ else toBase58String(value(assetId))
448+ let bidData = getStringByKey((bidDataKey + "_OPEN"))
449+ let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
450+ let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
451+ let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
452+ let soldValue = if (!(isBid))
453+ then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
454+ else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
455+ let soldData = StringEntry(soldKey, soldValue)
456+ let buyRes = [IntegerEntry(keyIssued(issuer, artId), newAmountSold), StringEntry(("nft_" + toBase58String(idNFT)), soldKey), IntegerEntry("total_nft_issued", (totalNFT + 1)), IntegerEntry(keyEndSale(issuer, artId), 0), BooleanEntry(keyOnSale(issuer, artId), sellStatus), issueNFT, ScriptTransfer(Address(fromBase58String(issuer)), amountForCreator, assetId), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId), ScriptTransfer(receiveNFT, 1, idNFT)]
457+ if (isBid)
458+ then [soldData, bidUpdate, bidDelOld] :: buyRes
459+ else soldData :: buyRes
460+ }
461+ }
462+ }
463+ }
464+ }
465+ }
466+
467+
468+@Callable(i)
469+func addArtwork (sha256Hash,signID,name,description,tags,type,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = {
470+ let $t01690816949 = idCallerDate(i)
471+ let artId = $t01690816949._1
472+ let caller = $t01690816949._2
473+ let date = $t01690816949._3
474+ if (!(validateHash(sha256Hash)))
475+ then throw("Hash should be 64 characters maximum")
476+ else {
477+ let $t01705417123 = setLIcence(cidLicence, sha256Licence)
478+ let licenceCID = $t01705417123._1
479+ let licenceHash = $t01705417123._2
480+ let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
481+ if ((validateArtwork != ""))
482+ then throw("Something went wrong!")
483+ else {
484+ let $t01734717389 = validatePayment(i)
485+ let amount = $t01734717389._1
486+ let assetId = $t01734717389._2
487+ if (!(isDefined(amount)))
488+ then throw("Something went wrong")
489+ else {
490+ let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
491+ if ((entryExist != ""))
492+ then throw("You already added it")
493+ else {
494+ let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
495+ if ((hashExist != ""))
496+ then throw("Hash already registered")
497+ else {
498+ let isSignCertified = checkSignCertificate(signID, caller, sha256Hash)
499+ if (!(isSignCertified))
500+ then throw("Sign Certificate not found for this address.")
501+ else [StringEntry(keyOwnerByHash(sha256Hash), caller), StringEntry(keyTxidByHashOwner(sha256Hash, caller), artId), IntegerEntry(keyDate(caller, artId), date), StringEntry(keyName(caller, artId), name), StringEntry(keyDesc(caller, artId), description), StringEntry(keyDisplayCid(caller, artId), cidDisplay), StringEntry(keyExportCid(caller, artId), cidExport), StringEntry(keyExportHash(caller, artId), sha256Export), StringEntry(keyLicenceHash(caller, artId), licenceHash), StringEntry(keyLicenceCid(caller, artId), licenceCID), StringEntry(keyType(caller, artId), type), StringEntry(keyTags(caller, artId), tags), IntegerEntry(keyMaxMint(caller, artId), 0), StringEntry(keySignID(caller, artId), signID), IntegerEntry(keyIssued(caller, artId), 0), BooleanEntry(keyOnSale(caller, artId), false), StringEntry(keyidBySignid(caller, signID), artId), StringEntry(keyHashByTxidAddr(caller, artId), sha256Hash), ScriptTransfer(Address(fromBase58String(feeReceiver)), amount, assetId)]
502+ }
503+ }
504+ }
505+ }
506+ }
507+ }
508+
509+
510+
511+@Callable(i)
512+func updateArtwork (txid,name,description,tags,type,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = if (!(dappRunning))
513+ then throw(maintenanceMSG)
514+ else {
515+ let caller = toBase58String(i.caller.bytes)
516+ let $t02007620145 = setLIcence(cidLicence, sha256Licence)
517+ let licenceCID = $t02007620145._1
518+ let licenceHash = $t02007620145._2
519+ let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
520+ if ((validateArtwork != ""))
521+ then throw("Something went wrong!")
522+ else {
523+ let entryExist = getStringByKey(keyName(caller, txid))
524+ if ((entryExist == ""))
525+ then throw("Entry not found")
526+ else {
527+ let flag = getStringByKey(keyFlag(caller, txid))
528+ if ((flag == "ILLEGAL"))
529+ then throw("Cannot update ILLEGAL artwork")
530+ else if (!(isArtMinted(caller, txid)))
531+ then [StringEntry(keyName(caller, txid), name), StringEntry(keyDesc(caller, txid), description), StringEntry(keyDisplayCid(caller, txid), cidDisplay), StringEntry(keyExportCid(caller, txid), cidExport), StringEntry(keyExportHash(caller, txid), sha256Export), StringEntry(keyLicenceCid(caller, txid), licenceCID), StringEntry(keyLicenceHash(caller, txid), licenceHash), StringEntry(keyTags(caller, txid), tags), StringEntry(keyType(caller, txid), type)]
532+ else throw("Already minted")
533+ }
534+ }
535+ }
536+
537+
538+
539+@Callable(i)
540+func flagArtwork (artId,addr,flag,note) = {
541+ let $t02152621559 = idCallerDate(i)
542+ let id = $t02152621559._1
543+ let caller = $t02152621559._2
544+ if (containsElement([chris, toString(this)], caller))
545+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], flag))
546+ then [StringEntry(keyFlag(addr, artId), flag), StringEntry(((("art_note_" + artId) + "_") + addr), note)]
547+ else throw(("Unknow status " + flag))
548+ else throw("You are not allowed")
549+ }
550+
551+
552+
553+@Callable(i)
554+func deleteArtwork (artId,addr) = {
555+ let $t02201522048 = idCallerDate(i)
556+ let id = $t02201522048._1
557+ let caller = $t02201522048._2
558+ let addrToUse = if (containsElement([chris, joep, toString(this)], caller))
559+ then addr
560+ else caller
561+ let entryExist = valueOrErrorMessage(getStringByKey(keyName(addrToUse, artId)), "No art matching for this address")
562+ if ((entryExist == ""))
563+ then throw("No art matching for this address")
564+ else {
565+ let sha256Hash = getStringByKey(keyHashByTxidAddr(addrToUse, artId))
566+ if ((sha256Hash == ""))
567+ then throw("No art hash matching for this address")
568+ else {
569+ let signID = getStringByKey(keySignID(addrToUse, artId))
570+ if ((signID == ""))
571+ then throw("No SIGN ID matching")
572+ else {
573+ let dataToDelete = [DeleteEntry(keyDate(addrToUse, artId)), DeleteEntry(keyName(addrToUse, artId)), DeleteEntry(keyDesc(addrToUse, artId)), DeleteEntry(keyDisplayCid(addrToUse, artId)), DeleteEntry(keyExportCid(addrToUse, artId)), DeleteEntry(keyExportHash(addrToUse, artId)), DeleteEntry(keyLicenceHash(addrToUse, artId)), DeleteEntry(keyLicenceCid(addrToUse, artId)), DeleteEntry(keyType(addrToUse, artId)), DeleteEntry(keyTags(addrToUse, artId)), DeleteEntry(keyMaxMint(addrToUse, artId)), DeleteEntry(keySignID(addrToUse, artId)), DeleteEntry(keyIssued(addrToUse, artId)), DeleteEntry(keyOnSale(addrToUse, artId)), DeleteEntry(keyFlag(addr, artId)), DeleteEntry(keyPrice(addr, artId)), DeleteEntry(keyAssetIdAccepted(addr, artId)), DeleteEntry(keyOwnerByHash(sha256Hash)), DeleteEntry(keyidBySignid(addrToUse, signID)), DeleteEntry(keyTxidByHashOwner(sha256Hash, addrToUse)), DeleteEntry(keyEndSale(addrToUse, artId))]
574+ if (!(isArtMinted(addrToUse, artId)))
575+ then if (!(dappRunning))
576+ then throw(maintenanceMSG)
577+ else dataToDelete
578+ else if (containsElement([chris, toString(this)], caller))
579+ then dataToDelete
580+ else throw("Art already minted, you cannot delete it")
581+ }
582+ }
583+ }
584+ }
585+
586+
587+
588+@Callable(i)
589+func sellArtwork (artId,price,maxMint,assetId,blockEnd) = {
590+ let $t02475924792 = idCallerDate(i)
591+ let id = $t02475924792._1
592+ let caller = $t02475924792._2
593+ let artworkName = getStringByKey(keyName(caller, artId))
594+ if ((artworkName == ""))
595+ then throw("This art doesn't match your account")
596+ else {
597+ let flag = getStringByKey(keyFlag(caller, artId))
598+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], flag))
599+ then throw("Flagged artwork")
600+ else {
601+ let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
602+ if ((0 > blockEnd))
603+ then throw("Negative end")
604+ else if (if ((blockEnd > 0))
605+ then if ((maxMint != 1))
606+ then true
607+ else (price != 0)
608+ else false)
609+ then throw("Timed offer only allowed for unique edition and offer only")
610+ else {
611+ let baseHeight = if ((blockEnd == 0))
612+ then 0
613+ else height
614+ if (!(acceptedAssetIds(assetId)))
615+ then throw("Something went wrong!")
616+ else if (!(validateMinSell(assetId, price)))
617+ then throw("Something went wrong!")
618+ else {
619+ let checkUser = validateUser(caller)
620+ if ((checkUser != ""))
621+ then throw(checkUser)
622+ else {
623+ let amountSold = getIntegerByKey(keyIssued(caller, artId))
624+ let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
625+ if ((maxMint > 100))
626+ then throw("100 editions max per artwork")
627+ else if (if ((amountSold != 0))
628+ then (amountSold == maxCanSell)
629+ else false)
630+ then throw("Max edition reached.")
631+ else if (if ((amountSold > 0))
632+ then (maxCanSell != maxMint)
633+ else false)
634+ then throw("Cannot change maximum issuable anymore")
635+ else if (if ((bidNbr > 0))
636+ then (maxCanSell != maxMint)
637+ else false)
638+ then throw("Cannot change maximum issuable with active orders")
639+ else {
640+ let sellStatus = if (if ((price > 0))
641+ then (maxMint > 0)
642+ else false)
643+ then true
644+ else false
645+[BooleanEntry(keyOnSale(caller, artId), sellStatus), IntegerEntry(keyPrice(caller, artId), price), IntegerEntry(keyMaxMint(caller, artId), maxMint), StringEntry(keyAssetIdAccepted(caller, artId), assetId), IntegerEntry(keyEndSale(caller, artId), (baseHeight + blockEnd))]
646+ }
647+ }
648+ }
649+ }
650+ }
651+ }
652+ }
653+
654+
655+
656+@Callable(i)
657+func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "")
658+
659+
660+
661+@Callable(i)
662+func setBid (artId,issuer) = {
663+ let $t02710227140 = idCallerDate(i)
664+ let id = $t02710227140._1
665+ let caller = $t02710227140._2
666+ let date = $t02710227140._3
667+ let $t02714627182 = isPayment(i)
668+ let payment = $t02714627182._1
669+ let amount = $t02714627182._2
670+ let assetId = if (!(isDefined(payment.assetId)))
671+ then "WAVES"
672+ else toBase58String(value(payment.assetId))
673+ let blockEnd = getIntegerByKey(keyEndSale(issuer, artId))
674+ if (if ((blockEnd != 0))
675+ then (height >= blockEnd)
676+ else false)
677+ then throw("Sale ended.")
678+ else {
679+ let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
680+ if (!(acceptedAssetIds(assetId)))
681+ then throw("asset not accepted")
682+ else if (!(validateMinSell(assetId, amount)))
683+ then throw("Wrong min sell")
684+ else {
685+ let amountSold = getIntegerByKey(keyIssued(issuer, artId))
686+ let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
687+ if ((0 >= maxCanSell))
688+ then throw("No max edition set for this artwork")
689+ else if ((amountSold >= maxCanSell))
690+ then throw("Sold out, you cannot bid")
691+ else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
692+ }
693+ }
694+ }
695+
696+
697+
698+@Callable(i)
699+func acceptBid (artId,issuer,bidId,bidOwner) = {
700+ let caller = toBase58String(i.caller.bytes)
701+ if ((caller != issuer))
702+ then throw("You cannot do this action")
703+ else buyMint(i, artId, issuer, bidId, bidOwner)
704+ }
705+
706+
707+
708+@Callable(i)
709+func cancelBid (artId,issuer,bidId,bidOwner) = {
710+ let $t02864228702 = idCallerDate(i)
711+ let id = $t02864228702._1
712+ let caller = $t02864228702._2
713+ let date = $t02864228702._3
714+ if (if ((caller != bidOwner))
715+ then (caller != issuer)
716+ else false)
717+ then throw("You cannot do this action")
718+ else {
719+ let returnMoneyTo = if ((caller == issuer))
720+ then bidOwner
721+ else caller
722+ let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
723+ let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
724+ let bidData = getStringByKey((bidDataKey + "_OPEN"))
725+ if ((bidData == ""))
726+ then throw("Bid not found")
727+ else {
728+ let bidDataArr = split(bidData, "_")
729+ let assetId = getBidAssetId(bidDataArr[0])
730+ let bidStatus = "CANCELED"
731+[DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(returnMoneyTo)), parseIntValue(bidDataArr[1]), assetId)]
732+ }
733+ }
734+ }
735+
736+

github/deemru/w8io/3ef1775 
61.03 ms