tx · BG4RC62midFT4Fgi1ByaNowSrwcu7XiHoPiKSp4bLUGe

3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW:  -0.01400000 Waves

2021.05.17 14:04 [1529594] smart account 3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW > SELF 0.00000000 Waves

{ "type": 13, "id": "BG4RC62midFT4Fgi1ByaNowSrwcu7XiHoPiKSp4bLUGe", "fee": 1400000, "feeAssetId": null, "timestamp": 1621249474443, "version": 2, "chainId": 84, "sender": "3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW", "senderPublicKey": "7nc1RVTNTXy1DvKS2F4boNQWQir3Lqpvi8zMoo42M3nP", "proofs": [ "5KNY9K6CHXvY2D9cNpmq6KuGkVX794bB2iwAQhLaeQtWwhMujCdDSUQZLspPwG3obKpnVgXDmhjr6Gh91JFyYTTc" ], "script": "base64:AAIEAAAAAAAAAD4IAhIECgIBCBIDCgEIEgMKAQgSAwoBCBIFCgMICAgSBQoDCAgIEgQKAggIEgUKAwgICBIFCgMICAgSAwoBCAAAACcAAAAACHVuaXRUZXN0BwAAAAAJb3JhY2xlRmVlCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOMnM1UnRhSFBCZW5Dc3gyRUNjb0ZSYllIeDNub1poWFcxAAAAAAhzaWduRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAAMYXJ0d29ya3NEYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQnluZmJYQzJLYXN0VXhodWtjTVVhRTU4SzljQmRCOVVZAAAAAAtmZWVSZWNlaXZlcgIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAACHVzZXJEYXBwAwUAAAAIdW5pdFRlc3QJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM044eFhhWWpFMjdBYTc5ZDVoSHJoSHU5SGFGb1RCbWhERWoAAAAADXdoaXRlbGlzdERhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM042QmFWMWRDQjR6ZzQzZ29OTkhhQ3R2UjEzQmN5SjVHc3EAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAALdXNkbkFzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAx3YXZlc0Fzc2V0SWQBAAAAAAAAAAAFY2hyaXMCAAAAIzNNc0c2alBOQ3JWSlV0WUI3WEpCeFM3dXRXc1hBZjRuOVZwAAAAAARqb2VwAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAHc2lnbkN1dAAAAAAAAAAAAwAAAAAKY3JlYXRvckN1dAAAAAAAAAAACgAAAAALZGFwcFJ1bm5pbmcJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAIdXNlckRhcHACAAAAFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAAAAAObWFpbnRlbmFuY2VNU0cJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAIdXNlckRhcHACAAAAFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAAAAAAAAAADXVzZXJTdXNwZW5kZWQCAAAACVNVU1BFTkRFRAAAAAALdXNlclJlbW92ZWQCAAAAB1JFTU9WRUQAAAAACmFydElsbGVnYWwCAAAAB0lMTEVHQUwAAAAADGFydFN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAQAAAA1nZXRVc2VyU3RyQnlLAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAIdXNlckRhcHAFAAAAA2tleQIAAAAFRXJyb3IBAAAADGdldEFydFN0ckJ5SwAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAADGFydHdvcmtzRGFwcAUAAAADa2V5AgAAAAABAAAACWdldFN0ckJ5SwAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQIAAAAAAQAAAAlnZXRJbnRCeUsAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAADWtleVVzZXJTdGF0dXMAAAABAAAABGFkZHIJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAARhZGRyAQAAAAlrZXlTaWduSUQAAAACAAAACmFydGlzdEFkZHIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC2FydF9zaWduaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAKYXJ0aXN0QWRkcgEAAAAHa2V5RmxhZwAAAAIAAAAKYXJ0aXN0QWRkcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X2ZsYWdfBQAAAAVhcnRJZAIAAAABXwUAAAAKYXJ0aXN0QWRkcgEAAAAKa2V5TkZURGF0YQAAAAEAAAACaWQJAAEsAAAAAgIAAAAEbmZ0XwUAAAACaWQBAAAADGlkQ2FsbGVyRGF0ZQAAAAEAAAABaQMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cJAAUVAAAAAwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAQAAAAlpc1BheW1lbnQAAAABAAAAAWkDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAATTm8gcGF5bWVudCBhdHRhY2hlZAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAGYW1vdW50CQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAZhbW91bnQJAAUUAAAAAgUAAAAHcGF5bWVudAUAAAAGYW1vdW50AQAAAAxpc1NpZ25BcnRORlQAAAABAAAAAmlkBAAAAAxhc3NldERldGFpbHMJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQDAwMDCQEAAAACIT0AAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACHF1YW50aXR5AAAAAAAAAAABBgkBAAAAAiE9AAAAAggFAAAADGFzc2V0RGV0YWlscwAAAAhkZWNpbWFscwAAAAAAAAAAAAYJAQAAAAIhPQAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAKcmVpc3N1YWJsZQcGCQEAAAACIT0AAAACCAUAAAAMYXNzZXREZXRhaWxzAAAABmlzc3VlcgUAAAAMYXJ0d29ya3NEYXBwBwYBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABAAAAB2Fzc2V0SWQDAwMDCQEAAAACIT0AAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkCQEAAAACIT0AAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAADHdhdmVzQXNzZXRJZAcJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTBwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAt1c2RuQXNzZXRJZAcHBgEAAAANZ2V0QmlkQXNzZXRJZAAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAHYXNzZXRJZAEAAAAVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAAAAAQAAAAVuZnRpZAQAAAAJc2FsZU93bmVyCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAMJAAAAAAAAAgkAATEAAAABBQAAAAlzYWxlT3duZXIAAAAAAAAAAAAJAAACAAAAAQIAAAANTkZUIG5vdCBmb3VuZAQAAAAKc2FsZVN0YXR1cwkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD3NhbGUybmRfc3RhdHVzXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAMJAQAAAAIhPQAAAAIFAAAACnNhbGVTdGF0dXMCAAAABE9QRU4JAAACAAAAAQIAAAAQTkZUIG5vdCBmb3Igc2FsZQUAAAAJc2FsZU93bmVyAQAAAApnZXRCaWREYXRhAAAAAQAAAANrZXkEAAAAB2JpZERhdGEJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIFAAAAA2tleQIAAAAFX09QRU4DCQAAAAAAAAIFAAAAB2JpZERhdGECAAAAAAkAAAIAAAABAgAAAA9PZmZlciBub3QgZm91bmQEAAAACmJpZERhdGFBcnIJAAS1AAAAAgUAAAAHYmlkRGF0YQIAAAABXwQAAAAHYXNzZXRJZAkBAAAADWdldEJpZEFzc2V0SWQAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAIJAAUVAAAAAwUAAAAKYmlkRGF0YUFycgUAAAAHYXNzZXRJZAUAAAAHYmlkRGF0YQEAAAAOY2hlY2tBcnRTdGF0dXMAAAACAAAABGFkZHIAAAACaWQEAAAACWFydFN0YXR1cwkBAAAADGdldEFydFN0ckJ5SwAAAAEJAQAAAAdrZXlGbGFnAAAAAgUAAAAEYWRkcgUAAAACaWQDAwkAAAAAAAACBQAAAAlhcnRTdGF0dXMFAAAACmFydElsbGVnYWwGCQAAAAAAAAIFAAAACWFydFN0YXR1cwUAAAAMYXJ0U3VzcGVuZGVkCQAAAgAAAAEJAAEsAAAAAgIAAAAcT3JpZ2luYWwgQXJ0d29yayBmbGFnZ2VkIGFzIAUAAAAJYXJ0U3RhdHVzBgEAAAARY2hlY2tBcnRpc3RTdGF0dXMAAAABAAAABGFkZHIEAAAADGFydGlzdFN0YXR1cwkBAAAADWdldFVzZXJTdHJCeUsAAAABCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAABGFkZHIDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAA11c2VyU3VzcGVuZGVkCQAETAAAAAIFAAAAC3VzZXJSZW1vdmVkBQAAAANuaWwFAAAADGFydGlzdFN0YXR1cwkAAAIAAAABCQABLAAAAAICAAAAEE9yaWdpbmFsIEFydGlzdCAFAAAADGFydGlzdFN0YXR1cwYBAAAADGNoZWNrTkZUSW5mbwAAAAEAAAAHYXNzZXRJZAQAAAAHbmZ0RGF0YQkABLUAAAACCQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAACmtleU5GVERhdGEAAAABBQAAAAdhc3NldElkAgAAAAFfBAAAAAlhcnRTaWduSUQJAQAAAAxnZXRBcnRTdHJCeUsAAAABCQEAAAAJa2V5U2lnbklEAAAAAgkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAGCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAUDCQAAAAAAAAIJAAExAAAAAQUAAAAJYXJ0U2lnbklEAAAAAAAAAAAACQAAAgAAAAECAAAAHUFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0AwMJAQAAAAEhAAAAAQkBAAAADmNoZWNrQXJ0U3RhdHVzAAAAAgkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAGCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAUJAQAAAAEhAAAAAQkBAAAAEWNoZWNrQXJ0aXN0U3RhdHVzAAAAAQkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAGBwkABRQAAAACBwkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAGCQAFFAAAAAIGCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAYBAAAADWNoZWNrQVJURXhpc3QAAAACAAAABWFydElkAAAAC2NyZWF0b3JBZGRyBAAAAAlhcnRTaWduSUQJAQAAAAxnZXRBcnRTdHJCeUsAAAABCQEAAAAJa2V5U2lnbklEAAAAAgUAAAALY3JlYXRvckFkZHIFAAAABWFydElkAwkAAAAAAAACCQABMQAAAAEFAAAACWFydFNpZ25JRAAAAAAAAAAAAAkAAAIAAAABAgAAAB1BcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydAMDCQEAAAABIQAAAAEJAQAAAA5jaGVja0FydFN0YXR1cwAAAAIFAAAAC2NyZWF0b3JBZGRyBQAAAAVhcnRJZAkBAAAAASEAAAABCQEAAAARY2hlY2tBcnRpc3RTdGF0dXMAAAABBQAAAAtjcmVhdG9yQWRkcgcHBgAAAAoAAAABaQEAAAAHc2VsbE5GVAAAAAIAAAAFcHJpY2UAAAAFYXNzZXQEAAAACyR0MDYyOTk2MzM4CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAAskdDA2Mjk5NjMzOAAAAAJfMQQAAAAGY2FsbGVyCAUAAAALJHQwNjI5OTYzMzgAAAACXzIEAAAABGRhdGUIBQAAAAskdDA2Mjk5NjMzOAAAAAJfMwQAAAALJHQwNjM0MzYzNzkJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAALJHQwNjM0MzYzNzkAAAACXzEEAAAABmFtb3VudAgFAAAACyR0MDYzNDM2Mzc5AAAAAl8yBAAAAAdhc3NldElkAwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQEAAAAMaXNTaWduQXJ0TkZUAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAMTm8gTkZUIGZvdW5kAwkBAAAAASEAAAABCQEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEFAAAABWFzc2V0CQAAAgAAAAECAAAAIU9ubHkgU0lHTiwgVVNETiBvciBXQVZFUyBhY2NlcHRlZAQAAAALJHQwNjY0NDY3MjAJAQAAAAxjaGVja05GVEluZm8AAAABCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAB2Fzc2V0SWQEAAAACmlzVmFsaWRORlQIBQAAAAskdDA2NjQ0NjcyMAAAAAJfMQQAAAALY3JlYXRvckFkZHIIBQAAAAskdDA2NjQ0NjcyMAAAAAJfMgMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1zYWxlMm5kX2luZm9fBQAAAAZjYWxsZXICAAAAAV8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAABV9PUEVOCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAVwcmljZQIAAAABXwUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPc2FsZTJuZF9zdGF0dXNfBQAAAAZjYWxsZXICAAAAAV8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAAET1BFTgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAFmN1cnJlbnRfb3duZXJfb25fZGFwcF8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAAGY2FsbGVyBQAAAANuaWwAAAABaQEAAAAKY2FuY2VsU2FsZQAAAAEAAAAFbmZ0aWQEAAAACyR0MDczOTY3NDM1CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAAskdDA3Mzk2NzQzNQAAAAJfMQQAAAAGY2FsbGVyCAUAAAALJHQwNzM5Njc0MzUAAAACXzIEAAAABGRhdGUIBQAAAAskdDA3Mzk2NzQzNQAAAAJfMwQAAAAJc2FsZU93bmVyCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAMJAQAAAAIhPQAAAAIFAAAACXNhbGVPd25lcgUAAAAGY2FsbGVyCQAAAgAAAAECAAAAFllvdSBkb24ndCBvd24gdGhpcyBORlQEAAAACnNhbGVTdGF0dXMJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQDCQEAAAACIT0AAAACBQAAAApzYWxlU3RhdHVzAgAAAARPUEVOCQAAAgAAAAECAAAAD1NhbGUgbm90IGFjdGl2ZQQAAAALY3JlYXRvckFkZHIJAAGRAAAAAgkABLUAAAACCQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAACmtleU5GVERhdGEAAAABBQAAAAVuZnRpZAIAAAABXwAAAAAAAAAABgQAAAAIc2FsZUluZm8JAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAFfBQAAAApzYWxlU3RhdHVzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAVfT1BFTgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAFfCQABpAAAAAEFAAAABGRhdGUCAAAAAV8FAAAAAmlkAgAAAApfQ0FOQ0VMTEVEBQAAAAhzYWxlSW5mbwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAABW5mdGlkBQAAAANuaWwAAAABaQEAAAAGYnV5TkZUAAAAAQAAAAVuZnRpZAQAAAALJHQwODU2NDg2MzUJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAACyR0MDg1NjQ4NjM1AAAAAl8xBAAAAAZjYWxsZXIIBQAAAAskdDA4NTY0ODYzNQAAAAJfMgQAAAAEZGF0ZQgFAAAACyR0MDg1NjQ4NjM1AAAAAl8zBAAAAAlzYWxlT3duZXIJAQAAABVnZXRTYWxlT3duZXJBbmRTdGF0dXMAAAABBQAAAAVuZnRpZAQAAAALJHQwODY5MDg3NDEJAQAAAAxjaGVja05GVEluZm8AAAABBQAAAAVuZnRpZAQAAAAKaXNWYWxpZE5GVAgFAAAACyR0MDg2OTA4NzQxAAAAAl8xBAAAAAtjcmVhdG9yQWRkcggFAAAACyR0MDg2OTA4NzQxAAAAAl8yAwkBAAAAASEAAAABBQAAAAppc1ZhbGlkTkZUCQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nBAAAAAhzYWxlSW5mbwkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAVfT1BFTgMJAAAAAAAAAgkAATEAAAABBQAAAAhzYWxlSW5mbwAAAAAAAAAAAAkAAAIAAAABAgAAAA9TYWxlIE5vdCBmb3VuZCEEAAAADXNhbGVJbmZvQXJyYXkJAAS1AAAAAgUAAAAIc2FsZUluZm8CAAAAAV8DCQAAAAAAAAIJAAS2AAAAAQkAAZEAAAACBQAAAA1zYWxlSW5mb0FycmF5AAAAAAAAAAABAAAAAAAAAAAACQAAAgAAAAECAAAACk9mZmVyIG9ubHkEAAAACyR0MDkwNzc5MTEzCQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAACyR0MDkwNzc5MTEzAAAAAl8xBAAAAAZhbW91bnQIBQAAAAskdDA5MDc3OTExMwAAAAJfMgMDCQEAAAACIT0AAAACCQABkQAAAAIFAAAADXNhbGVJbmZvQXJyYXkAAAAAAAAAAAEJAAGkAAAAAQUAAAAGYW1vdW50BgkBAAAAAiE9AAAAAgkAAZEAAAACBQAAAA1zYWxlSW5mb0FycmF5AAAAAAAAAAACCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAaUGF5bWVudCBpbmZvcyBkb24ndCBtYXRjaC4EAAAADWFtb3VudEZvclNpZ24JAABrAAAAAwUAAAAGYW1vdW50BQAAAAdzaWduQ3V0AAAAAAAAAABkBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAawAAAAMFAAAABmFtb3VudAUAAAAKY3JlYXRvckN1dAAAAAAAAAAAZAQAAAAOYW1vdW50Rm9yT3duZXIJAABlAAAAAgUAAAAGYW1vdW50CQAAZAAAAAIFAAAADWFtb3VudEZvclNpZ24FAAAAEGFtb3VudEZvckNyZWF0b3IJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANc2FsZTJuZF9pbmZvXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAABV9PUEVOCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD3NhbGUybmRfc3RhdHVzXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FAAAABW5mdGlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANc2FsZTJuZF9pbmZvXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQCAAAAB19DTE9TRUQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAAEX3RvXwUAAAAGY2FsbGVyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtmZWVSZWNlaXZlcgUAAAANYW1vdW50Rm9yU2lnbggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALY3JlYXRvckFkZHIFAAAAEGFtb3VudEZvckNyZWF0b3IIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAACXNhbGVPd25lcgUAAAAOYW1vdW50Rm9yT3duZXIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAVuZnRpZAUAAAADbmlsAAAAAWkBAAAACHNldE9mZmVyAAAAAQAAAAVuZnRpZAQAAAANJHQwMTA1NjExMDYwMwkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAANJHQwMTA1NjExMDYwMwAAAAJfMQQAAAAKb2ZmZXJPd25lcggFAAAADSR0MDEwNTYxMTA2MDMAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxMDU2MTEwNjAzAAAAAl8zBAAAAA0kdDAxMDYwODEwNjQ0CQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAADSR0MDEwNjA4MTA2NDQAAAACXzEEAAAABmFtb3VudAgFAAAADSR0MDEwNjA4MTA2NDQAAAACXzIEAAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEFAAAAB2Fzc2V0SWQJAAACAAAAAQIAAAASYXNzZXQgbm90IGFjY2VwdGVkBAAAAA0kdDAxMDgzMDEwODgxCQEAAAAMY2hlY2tORlRJbmZvAAAAAQUAAAAFbmZ0aWQEAAAACmlzVmFsaWRORlQIBQAAAA0kdDAxMDgzMDEwODgxAAAAAl8xBAAAAAtjcmVhdG9yQWRkcggFAAAADSR0MDEwODMwMTA4ODEAAAACXzIDCQEAAAABIQAAAAEFAAAACmlzVmFsaWRORlQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcEAAAACXNhbGVPd25lcgkBAAAAFWdldFNhbGVPd25lckFuZFN0YXR1cwAAAAEFAAAABW5mdGlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlvZmZlcjJuZF8FAAAACm9mZmVyT3duZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAAlzYWxlT3duZXICAAAAAV8FAAAAAmlkAgAAAAVfT1BFTgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8FAAAAB2Fzc2V0SWQCAAAAAV8FAAAACm9mZmVyT3duZXICAAAAAV8FAAAAAmlkBQAAAANuaWwAAAABaQEAAAALYWNjZXB0T2ZmZXIAAAADAAAABW5mdGlkAAAAB29mZmVySWQAAAAKb2ZmZXJPd25lcgQAAAANJHQwMTE1MTIxMTY1MgkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAANJHQwMTE1MTIxMTY1MgAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTE1MTIxMTY1MgAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDExNTEyMTE2NTIAAAACXzMEAAAACXNhbGVPd25lcgkBAAAAFWdldFNhbGVPd25lckFuZFN0YXR1cwAAAAEFAAAABW5mdGlkAwkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAlzYWxlT3duZXIJAAACAAAAAQIAAAAZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgQAAAAKb2ZmZXJFeGlzdAkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlvZmZlcjJuZF8FAAAACm9mZmVyT3duZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAAlzYWxlT3duZXICAAAAAV8FAAAAB29mZmVySWQCAAAABV9PUEVOAwkAAAAAAAACBQAAAApvZmZlckV4aXN0AgAAAAAJAAACAAAAAQIAAAAfT2ZmZXIgbm90IGZvdW5kIG9yIG5vdCBmb3Igc2FsZQQAAAANJHQwMTE5NTcxMjAwOAkBAAAADGNoZWNrTkZUSW5mbwAAAAEFAAAABW5mdGlkBAAAAAppc1ZhbGlkTkZUCAUAAAANJHQwMTE5NTcxMjAwOAAAAAJfMQQAAAALY3JlYXRvckFkZHIIBQAAAA0kdDAxMTk1NzEyMDA4AAAAAl8yAwkBAAAAASEAAAABBQAAAAppc1ZhbGlkTkZUCQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nBAAAAAhzYWxlSW5mbwkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAVfT1BFTgMJAAAAAAAAAgkAATEAAAABBQAAAAhzYWxlSW5mbwAAAAAAAAAAAAkAAAIAAAABAgAAAA9TYWxlIE5vdCBmb3VuZCEEAAAACmJpZERhdGFLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJb2ZmZXIybmRfBQAAAApvZmZlck93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAdvZmZlcklkBAAAAA0kdDAxMjM0NDEyNDAzCQEAAAAKZ2V0QmlkRGF0YQAAAAEFAAAACmJpZERhdGFLZXkEAAAACmJpZERhdGFBcnIIBQAAAA0kdDAxMjM0NDEyNDAzAAAAAl8xBAAAAAdhc3NldElkCAUAAAANJHQwMTIzNDQxMjQwMwAAAAJfMgQAAAAHYmlkRGF0YQgFAAAADSR0MDEyMzQ0MTI0MDMAAAACXzMEAAAABmFtb3VudAkBAAAABXZhbHVlAAAAAQkABLYAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAEEAAAADWFtb3VudEZvclNpZ24JAABrAAAAAwUAAAAGYW1vdW50BQAAAAdzaWduQ3V0AAAAAAAAAABkBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAawAAAAMFAAAABmFtb3VudAUAAAAKY3JlYXRvckN1dAAAAAAAAAAAZAQAAAAOYW1vdW50Rm9yT3duZXIJAABlAAAAAgUAAAAGYW1vdW50CQAAZAAAAAIFAAAADWFtb3VudEZvclNpZ24FAAAAEGFtb3VudEZvckNyZWF0b3IJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANc2FsZTJuZF9pbmZvXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAABV9PUEVOCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAFX09QRU4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPc2FsZTJuZF9zdGF0dXNfBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgIAAAAWY3VycmVudF9vd25lcl9vbl9kYXBwXwUAAAAFbmZ0aWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQCAAAAB19DTE9TRUQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAABGRhdGUCAAAAAV8JAAGkAAAAAQUAAAAGYW1vdW50AgAAAAFfCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAB2Fzc2V0SWQCAAAAAV8FAAAACm9mZmVyT3duZXICAAAAAV8FAAAAB29mZmVySWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1zYWxlMm5kX2luZm9fBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgIAAAABXwkAAaQAAAABBQAAAARkYXRlAgAAAAFfBQAAAAJpZAIAAAAHX0NMT1NFRAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAARkYXRlAgAAAAFfCQABpAAAAAEFAAAABmFtb3VudAIAAAABXwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAdhc3NldElkAgAAAARfdG9fBQAAAApvZmZlck93bmVyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtmZWVSZWNlaXZlcgUAAAANYW1vdW50Rm9yU2lnbgUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALY3JlYXRvckFkZHIFAAAAEGFtb3VudEZvckNyZWF0b3IFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAACXNhbGVPd25lcgUAAAAOYW1vdW50Rm9yT3duZXIFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAAGRAAAAAgUAAAAKYmlkRGF0YUFycgAAAAAAAAAAAwAAAAAAAAAAAQkAAlkAAAABBQAAAAVuZnRpZAUAAAADbmlsAAAAAWkBAAAAC2NhbmNlbE9mZmVyAAAAAwAAAAVuZnRpZAAAAAdvZmZlcklkAAAACXNhbGVPd25lcgQAAAANJHQwMTM3OTMxNDA3NQkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAANJHQwMTM3OTMxNDA3NQAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTM3OTMxNDA3NQAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDEzNzkzMTQwNzUAAAACXzMEAAAACmJpZERhdGFLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJb2ZmZXIybmRfBQAAAAZjYWxsZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAAlzYWxlT3duZXICAAAAAV8FAAAAB29mZmVySWQEAAAADSR0MDE0MTYxMTQyMjAJAQAAAApnZXRCaWREYXRhAAAAAQUAAAAKYmlkRGF0YUtleQQAAAAKYmlkRGF0YUFycggFAAAADSR0MDE0MTYxMTQyMjAAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAA0kdDAxNDE2MTE0MjIwAAAAAl8yBAAAAAdiaWREYXRhCAUAAAANJHQwMTQxNjExNDIyMAAAAAJfMwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAABV9PUEVOCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAApiaWREYXRhS2V5AgAAAAFfCQABpAAAAAEFAAAABGRhdGUCAAAAAV8FAAAAAmlkAgAAAApfQ0FOQ0VMTEVECQABLAAAAAIJAAEsAAAAAgUAAAAHYmlkRGF0YQIAAAABXwkAAaQAAAABBQAAAARkYXRlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAZjYWxsZXIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAABBQAAAAdhc3NldElkBQAAAANuaWwAAAABaQEAAAALbWFrZVJlcXVlc3QAAAACAAAABWFydElkAAAAC2NyZWF0b3JBZGRyBAAAAA0kdDAxNTYxMDE1NjU0CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxNTYxMDE1NjU0AAAAAl8xBAAAAAxyZXF1ZXN0T3duZXIIBQAAAA0kdDAxNTYxMDE1NjU0AAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTU2MTAxNTY1NAAAAAJfMwQAAAANJHQwMTU2NTkxNTY5NQkBAAAACWlzUGF5bWVudAAAAAEFAAAAAWkEAAAAB3BheW1lbnQIBQAAAA0kdDAxNTY1OTE1Njk1AAAAAl8xBAAAAAZhbW91bnQIBQAAAA0kdDAxNTY1OTE1Njk1AAAAAl8yBAAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAAFV0FWRVMJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABBQAAAAdhc3NldElkCQAAAgAAAAECAAAAEmFzc2V0IG5vdCBhY2NlcHRlZAQAAAAKaXNWYWxpZEFSVAkBAAAADWNoZWNrQVJURXhpc3QAAAACBQAAAAVhcnRJZAUAAAALY3JlYXRvckFkZHIDCQEAAAABIQAAAAEFAAAACmlzVmFsaWRBUlQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC3JlcXVlc3QybmRfBQAAAAxyZXF1ZXN0T3duZXICAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAACaWQCAAAABV9PUEVOCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAADHJlcXVlc3RPd25lcgIAAAABXwUAAAACaWQFAAAAA25pbAAAAAFpAQAAAAtmaWxsUmVxdWVzdAAAAAMAAAAFYXJ0SWQAAAAMcmVxdWVzdE93bmVyAAAAB29mZmVySWQEAAAADSR0MDE2NDcwMTY1MTIJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAADSR0MDE2NDcwMTY1MTIAAAACXzEEAAAACXNhbGVPd25lcggFAAAADSR0MDE2NDcwMTY1MTIAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxNjQ3MDE2NTEyAAAAAl8zBAAAAA0kdDAxNjUxNzE2NTYxCQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAADSR0MDE2NTE3MTY1NjEAAAACXzEEAAAADmFtb3VudEF0dGFjaGVkCAUAAAANJHQwMTY1MTcxNjU2MQAAAAJfMgQAAAAHYXNzZXRJZAMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAADGlzU2lnbkFydE5GVAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQHCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAADE5vIE5GVCBmb3VuZAQAAAALYXR0YWNoZWROZnQJAAS1AAAAAgkBAAAADGdldEFydFN0ckJ5SwAAAAEJAAEsAAAAAgIAAAAEbmZ0XwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAdhc3NldElkAgAAAAFfAwkAAAAAAAACCQABkAAAAAEFAAAAC2F0dGFjaGVkTmZ0AAAAAAAAAAAACQAAAgAAAAECAAAADE5vIE5GVCBmb3VuZAQAAAALcmVxdWVzdERhdGEJAAS1AAAAAgkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtyZXF1ZXN0Mm5kXwUAAAAMcmVxdWVzdE93bmVyAgAAAAFfCQABkQAAAAIFAAAAC2F0dGFjaGVkTmZ0AAAAAAAAAAAFAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAAHb2ZmZXJJZAIAAAAFX09QRU4CAAAAAV8DCQAAAAAAAAIJAAGQAAAAAQUAAAALcmVxdWVzdERhdGEAAAAAAAAAAAAJAAACAAAAAQIAAAAQTm8gcmVxdWVzdCBmb3VuZAMJAQAAAAIhPQAAAAIJAAGRAAAAAgUAAAALcmVxdWVzdERhdGEAAAAAAAAAAAMJAAGRAAAAAgUAAAALYXR0YWNoZWROZnQAAAAAAAAAAAUJAAACAAAAAQIAAAAqVGhpcyBORlQgZG9uJ3QgbWF0Y2ggdGhlIHJlcXVlc3RlZCBhcnR3b3JrBAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEJAAS2AAAAAQkAAZEAAAACBQAAAAtyZXF1ZXN0RGF0YQAAAAAAAAAAAQQAAAANYW1vdW50Rm9yU2lnbgkAAGsAAAADBQAAAAZhbW91bnQFAAAAB3NpZ25DdXQAAAAAAAAAAGQEAAAAEGFtb3VudEZvckNyZWF0b3IJAABrAAAAAwUAAAAGYW1vdW50BQAAAApjcmVhdG9yQ3V0AAAAAAAAAABkBAAAAA5hbW91bnRGb3JPd25lcgkAAGUAAAACBQAAAAZhbW91bnQJAABkAAAAAgUAAAANYW1vdW50Rm9yU2lnbgUAAAAQYW1vdW50Rm9yQ3JlYXRvcgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALcmVxdWVzdDJuZF8FAAAADHJlcXVlc3RPd25lcgIAAAABXwkAAZEAAAACBQAAAAthdHRhY2hlZE5mdAAAAAAAAAAABQIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAAB29mZmVySWQCAAAABV9PUEVOCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtyZXF1ZXN0Mm5kXwUAAAAMcmVxdWVzdE93bmVyAgAAAAFfCQABkQAAAAIFAAAAC2F0dGFjaGVkTmZ0AAAAAAAAAAAFAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAAHb2ZmZXJJZAIAAAAHX0NMT1NFRAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAARkYXRlAgAAAAFfCQABpAAAAAEFAAAABmFtb3VudAIAAAABXwkAAZEAAAACBQAAAAtyZXF1ZXN0RGF0YQAAAAAAAAAAAgIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAADHJlcXVlc3RPd25lcgIAAAABXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAJpZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALZmVlUmVjZWl2ZXIFAAAADWFtb3VudEZvclNpZ24FAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAAGRAAAAAgUAAAALYXR0YWNoZWROZnQAAAAAAAAAAAYFAAAAEGFtb3VudEZvckNyZWF0b3IFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAACXNhbGVPd25lcgUAAAAOYW1vdW50Rm9yT3duZXIFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAAGRAAAAAgUAAAALcmVxdWVzdERhdGEAAAAAAAAAAAQAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAA1jYW5jZWxSZXF1ZXN0AAAAAwAAAAVhcnRJZAAAAAtjcmVhdG9yQWRkcgAAAAlyZXF1ZXN0SWQEAAAADSR0MDE4MzMzMTgzNzcJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAADSR0MDE4MzMzMTgzNzcAAAACXzEEAAAADHJlcXVlc3RPd25lcggFAAAADSR0MDE4MzMzMTgzNzcAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxODMzMzE4Mzc3AAAAAl8zBAAAAA1yZXF1ZXNEYXRhS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC3JlcXVlc3QybmRfBQAAAAxyZXF1ZXN0T3duZXICAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAAJcmVxdWVzdElkBAAAAAtyZXF1ZXN0RGF0YQkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgUAAAANcmVxdWVzRGF0YUtleQIAAAAFX09QRU4EAAAADnJlcXVlc3REYXRhQXJyCQAEtQAAAAIJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIFAAAADXJlcXVlc0RhdGFLZXkCAAAABV9PUEVOAgAAAAFfCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAANcmVxdWVzRGF0YUtleQIAAAAFX09QRU4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAADXJlcXVlc0RhdGFLZXkCAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQCAAAACl9DQU5DRUxMRUQJAAEsAAAAAgkAASwAAAACBQAAAAtyZXF1ZXN0RGF0YQIAAAABXwkAAaQAAAABBQAAAARkYXRlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAxyZXF1ZXN0T3duZXIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5yZXF1ZXN0RGF0YUFycgAAAAAAAAAAAQkAAlkAAAABCQABkQAAAAIFAAAADnJlcXVlc3REYXRhQXJyAAAAAAAAAAACBQAAAANuaWwAAAABaQEAAAALZGVsZXRlRW50cnkAAAABAAAABWVudHJ5BAAAAAZjYWxsZXIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5AwkAAAAAAAACBQAAAAZjYWxsZXIFAAAABWNocmlzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAABWVudHJ5BQAAAANuaWwJAAACAAAAAQIAAAACbm8AAAAAwVI4IA==", "height": 1529594, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9H4N7vC4itkAQJPCifni3mLc5o9WDynpUY8kr9UcDptG Next: HV1X4YR7ZEa41RYkfyxBXiVGndUSUFQUV411caGamVUo Diff:
OldNewDifferences
136136 }
137137
138138
139-func Y (P) = {
140- let Z = split(w(F(P)), "_")
141- let aa = w(B(Z[6], Z[5]))
142- if ((size(aa) == 0))
139+func Y (A,G) = {
140+ let Z = w(E(A, G))
141+ if (if ((Z == s))
142+ then true
143+ else (Z == t))
144+ then throw(("Original Artwork flagged as " + Z))
145+ else true
146+ }
147+
148+
149+func aa (A) = {
150+ let ab = u(z(A))
151+ if (containsElement([q, r], ab))
152+ then throw(("Original Artist " + ab))
153+ else true
154+ }
155+
156+
157+func ac (P) = {
158+ let ad = split(w(F(P)), "_")
159+ let ae = w(B(ad[6], ad[5]))
160+ if ((size(ae) == 0))
143161 then throw("Artwork not found on SIGN Art")
144- else {
145- let ab = w(E(Z[6], Z[5]))
146- if (if ((ab == s))
147- then true
148- else (ab == t))
149- then throw(("Original Artwork flagged as " + ab))
150- else {
151- let ac = u(z(Z[6]))
152- if (containsElement([q, r], ac))
153- then throw(("Original Artist " + ac))
154- else $Tuple2(true, Z[6])
155- }
156- }
162+ else if (if (!(Y(ad[6], ad[5])))
163+ then !(aa(ad[6]))
164+ else false)
165+ then $Tuple2(false, ad[6])
166+ else $Tuple2(true, ad[6])
167+ }
168+
169+
170+func af (D,ag) = {
171+ let ae = w(B(ag, D))
172+ if ((size(ae) == 0))
173+ then throw("Artwork not found on SIGN Art")
174+ else if (if (!(Y(ag, D)))
175+ then !(aa(ag))
176+ else false)
177+ then false
178+ else true
157179 }
158180
159181
160182 @Callable(I)
161-func sellNFT (ad,ae) = {
162- let af = H(I)
163- let G = af._1
164- let ag = af._2
165- let ah = af._3
166- let ai = J(I)
167- let K = ai._1
168- let L = ai._2
183+func sellNFT (ah,ai) = {
184+ let aj = H(I)
185+ let G = aj._1
186+ let ak = aj._2
187+ let al = aj._3
188+ let am = J(I)
189+ let K = am._1
190+ let L = am._2
169191 let P = if (if (isDefined(K.assetId))
170192 then M(value(K.assetId))
171193 else false)
172194 then K.assetId
173195 else throw("No NFT found")
174- if (!(O(ae)))
196+ if (!(O(ai)))
175197 then throw("Only SIGN, USDN or WAVES accepted")
176198 else {
177- let aj = Y(toBase58String(value(P)))
178- let ak = aj._1
179- let al = aj._2
180- if (!(ak))
199+ let an = ac(toBase58String(value(P)))
200+ let ao = an._1
201+ let ag = an._2
202+ if (!(ao))
181203 then throw("Something went wrong")
182- else [StringEntry((((((("sale2nd_info_" + ag) + "_") + toBase58String(value(K.assetId))) + "_") + al) + "_OPEN"), ((((toString(ah) + "_") + toString(ad)) + "_") + ae)), StringEntry(((("sale2nd_status_" + ag) + "_") + toBase58String(value(K.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(K.assetId))), ag)]
204+ else [StringEntry((((((("sale2nd_info_" + ak) + "_") + toBase58String(value(K.assetId))) + "_") + ag) + "_OPEN"), ((((toString(al) + "_") + toString(ah)) + "_") + ai)), StringEntry(((("sale2nd_status_" + ak) + "_") + toBase58String(value(K.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(K.assetId))), ak)]
183205 }
184206 }
185207
187209
188210 @Callable(I)
189211 func cancelSale (S) = {
190- let am = H(I)
191- let G = am._1
192- let ag = am._2
193- let ah = am._3
212+ let ap = H(I)
213+ let G = ap._1
214+ let ak = ap._2
215+ let al = ap._3
194216 let T = x(("current_owner_on_dapp_" + S))
195- if ((T != ag))
217+ if ((T != ak))
196218 then throw("You don't own this NFT")
197219 else {
198- let U = x(((("sale2nd_status_" + ag) + "_") + S))
220+ let U = x(((("sale2nd_status_" + ak) + "_") + S))
199221 if ((U != "OPEN"))
200222 then throw("Sale not active")
201223 else {
202- let al = split(w(F(S)), "_")[6]
203- let an = x(((((((("sale2nd_info_" + ag) + "_") + S) + "_") + al) + "_") + U))
204-[DeleteEntry((((((("sale2nd_info_" + ag) + "_") + S) + "_") + al) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ag) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((((("sale2nd_info_" + ag) + "_") + S) + "_") + al) + "_") + toString(ah)) + "_") + G) + "_CANCELLED"), an), ScriptTransfer(Address(fromBase58String(ag)), 1, fromBase58String(S))]
224+ let ag = split(w(F(S)), "_")[6]
225+ let aq = x(((((((("sale2nd_info_" + ak) + "_") + S) + "_") + ag) + "_") + U))
226+[DeleteEntry((((((("sale2nd_info_" + ak) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ak) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((((("sale2nd_info_" + ak) + "_") + S) + "_") + ag) + "_") + toString(al)) + "_") + G) + "_CANCELLED"), aq), ScriptTransfer(Address(fromBase58String(ak)), 1, fromBase58String(S))]
205227 }
206228 }
207229 }
210232
211233 @Callable(I)
212234 func buyNFT (S) = {
213- let ao = H(I)
214- let G = ao._1
215- let ag = ao._2
216- let ah = ao._3
235+ let ar = H(I)
236+ let G = ar._1
237+ let ak = ar._2
238+ let al = ar._3
217239 let T = R(S)
218- let ap = Y(S)
219- let ak = ap._1
220- let al = ap._2
221- if (!(ak))
240+ let as = ac(S)
241+ let ao = as._1
242+ let ag = as._2
243+ if (!(ao))
222244 then throw("Something went wrong")
223245 else {
224- let an = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_OPEN"))
225- if ((size(an) == 0))
246+ let aq = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN"))
247+ if ((size(aq) == 0))
226248 then throw("Sale Not found!")
227249 else {
228- let aq = split(an, "_")
229- if ((parseInt(aq[1]) == 0))
250+ let at = split(aq, "_")
251+ if ((parseInt(at[1]) == 0))
230252 then throw("Offer only")
231253 else {
232- let ar = J(I)
233- let K = ar._1
234- let L = ar._2
235- if (if ((aq[1] != toString(L)))
254+ let au = J(I)
255+ let K = au._1
256+ let L = au._2
257+ if (if ((at[1] != toString(L)))
236258 then true
237- else (aq[2] != toBase58String(value(K.assetId))))
259+ else (at[2] != toBase58String(value(K.assetId))))
238260 then throw("Payment infos don't match.")
239261 else {
240- let as = fraction(L, m, 100)
241- let at = fraction(L, n, 100)
242- let au = (L - (as + at))
243-[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_") + toString(ah)) + "_") + G) + "_CLOSED"), ((((((toString(ah) + "_") + toString(L)) + "_") + toBase58String(value(K.assetId))) + "_to_") + ag)), ScriptTransfer(Address(fromBase58String(e)), as, K.assetId), ScriptTransfer(Address(fromBase58String(al)), at, K.assetId), ScriptTransfer(Address(fromBase58String(T)), au, K.assetId), ScriptTransfer(Address(fromBase58String(ag)), 1, fromBase58String(S))]
262+ let av = fraction(L, m, 100)
263+ let aw = fraction(L, n, 100)
264+ let ax = (L - (av + aw))
265+[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_") + toString(al)) + "_") + G) + "_CLOSED"), ((((((toString(al) + "_") + toString(L)) + "_") + toBase58String(value(K.assetId))) + "_to_") + ak)), ScriptTransfer(Address(fromBase58String(e)), av, K.assetId), ScriptTransfer(Address(fromBase58String(ag)), aw, K.assetId), ScriptTransfer(Address(fromBase58String(T)), ax, K.assetId), ScriptTransfer(Address(fromBase58String(ak)), 1, fromBase58String(S))]
244266 }
245267 }
246268 }
251273
252274 @Callable(I)
253275 func setOffer (S) = {
254- let av = H(I)
255- let G = av._1
256- let aw = av._2
257- let ah = av._3
258- let ax = J(I)
259- let K = ax._1
260- let L = ax._2
276+ let ay = H(I)
277+ let G = ay._1
278+ let az = ay._2
279+ let al = ay._3
280+ let aA = J(I)
281+ let K = aA._1
282+ let L = aA._2
261283 let P = if (!(isDefined(K.assetId)))
262284 then "WAVES"
263285 else toBase58String(value(K.assetId))
264286 if (!(O(P)))
265287 then throw("asset not accepted")
266288 else {
267- let ay = Y(S)
268- let ak = ay._1
269- let al = ay._2
270- if (!(ak))
289+ let aB = ac(S)
290+ let ao = aB._1
291+ let ag = aB._2
292+ if (!(ao))
271293 then throw("Something went wrong")
272294 else {
273295 let T = R(S)
274-[StringEntry((((((((("offer2nd_" + aw) + "_") + S) + "_") + T) + "_") + G) + "_OPEN"), ((((((((toString(ah) + "_") + toString(L)) + "_") + P) + "_") + aw) + "_") + G))]
296+[StringEntry((((((((("offer2nd_" + az) + "_") + S) + "_") + T) + "_") + G) + "_OPEN"), ((((((((toString(al) + "_") + toString(L)) + "_") + P) + "_") + az) + "_") + G))]
275297 }
276298 }
277299 }
279301
280302
281303 @Callable(I)
282-func acceptOffer (S,az,aw) = {
283- let aA = H(I)
284- let G = aA._1
285- let ag = aA._2
286- let ah = aA._3
304+func acceptOffer (S,aC,az) = {
305+ let aD = H(I)
306+ let G = aD._1
307+ let ak = aD._2
308+ let al = aD._3
287309 let T = R(S)
288- if ((ag != T))
310+ if ((ak != T))
289311 then throw("You cannot do this action")
290312 else {
291- let aB = x((((((((("offer2nd_" + aw) + "_") + S) + "_") + T) + "_") + az) + "_OPEN"))
292- if ((aB == ""))
313+ let aE = x((((((((("offer2nd_" + az) + "_") + S) + "_") + T) + "_") + aC) + "_OPEN"))
314+ if ((aE == ""))
293315 then throw("Offer not found or not for sale")
294316 else {
295- let aC = Y(S)
296- let ak = aC._1
297- let al = aC._2
298- if (!(ak))
317+ let aF = ac(S)
318+ let ao = aF._1
319+ let ag = aF._2
320+ if (!(ao))
299321 then throw("Something went wrong")
300322 else {
301- let an = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_OPEN"))
302- if ((size(an) == 0))
323+ let aq = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN"))
324+ if ((size(aq) == 0))
303325 then throw("Sale Not found!")
304326 else {
305- let aD = ((((((("offer2nd_" + aw) + "_") + S) + "_") + T) + "_") + az)
306- let aE = V(aD)
307- let X = aE._1
308- let P = aE._2
309- let W = aE._3
327+ let aG = ((((((("offer2nd_" + az) + "_") + S) + "_") + T) + "_") + aC)
328+ let aH = V(aG)
329+ let X = aH._1
330+ let P = aH._2
331+ let W = aH._3
310332 let L = value(parseInt(X[1]))
311- let as = fraction(L, m, 100)
312- let at = fraction(L, n, 100)
313- let au = (L - (as + at))
314-[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_OPEN")), DeleteEntry((aD + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((aD + "_") + toString(ah)) + "_") + G) + "_CLOSED"), ((((((((toString(ah) + "_") + toString(L)) + "_") + toBase58String(value(P))) + "_") + aw) + "_") + az)), StringEntry((((((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_") + toString(ah)) + "_") + G) + "_CLOSED"), ((((((toString(ah) + "_") + toString(L)) + "_") + toBase58String(value(P))) + "_to_") + aw)), ScriptTransfer(Address(fromBase58String(e)), as, P), ScriptTransfer(Address(fromBase58String(al)), at, P), ScriptTransfer(Address(fromBase58String(T)), au, P), ScriptTransfer(Address(fromBase58String(X[3])), 1, fromBase58String(S))]
333+ let av = fraction(L, m, 100)
334+ let aw = fraction(L, n, 100)
335+ let ax = (L - (av + aw))
336+[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry((aG + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((aG + "_") + toString(al)) + "_") + G) + "_CLOSED"), ((((((((toString(al) + "_") + toString(L)) + "_") + toBase58String(value(P))) + "_") + az) + "_") + aC)), StringEntry((((((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_") + toString(al)) + "_") + G) + "_CLOSED"), ((((((toString(al) + "_") + toString(L)) + "_") + toBase58String(value(P))) + "_to_") + az)), ScriptTransfer(Address(fromBase58String(e)), av, P), ScriptTransfer(Address(fromBase58String(ag)), aw, P), ScriptTransfer(Address(fromBase58String(T)), ax, P), ScriptTransfer(Address(fromBase58String(X[3])), 1, fromBase58String(S))]
315337 }
316338 }
317339 }
321343
322344
323345 @Callable(I)
324-func cancelOffer (S,az,T) = {
325- let aF = H(I)
326- let G = aF._1
327- let ag = aF._2
328- let ah = aF._3
329- let aD = ((((((("offer2nd_" + ag) + "_") + S) + "_") + T) + "_") + az)
330- let aG = V(aD)
331- let X = aG._1
332- let P = aG._2
333- let W = aG._3
334-[DeleteEntry((aD + "_OPEN")), StringEntry((((((aD + "_") + toString(ah)) + "_") + G) + "_CANCELLED"), ((W + "_") + toString(ah))), ScriptTransfer(Address(fromBase58String(ag)), parseIntValue(X[1]), P)]
346+func cancelOffer (S,aC,T) = {
347+ let aI = H(I)
348+ let G = aI._1
349+ let ak = aI._2
350+ let al = aI._3
351+ let aG = ((((((("offer2nd_" + ak) + "_") + S) + "_") + T) + "_") + aC)
352+ let aJ = V(aG)
353+ let X = aJ._1
354+ let P = aJ._2
355+ let W = aJ._3
356+[DeleteEntry((aG + "_OPEN")), StringEntry((((((aG + "_") + toString(al)) + "_") + G) + "_CANCELLED"), ((W + "_") + toString(al))), ScriptTransfer(Address(fromBase58String(ak)), parseIntValue(X[1]), P)]
335357 }
336358
337359
338360
339361 @Callable(I)
340-func deleteEntry (aH) = {
341- let ag = toString(addressFromPublicKey(I.callerPublicKey))
342- if ((ag == k))
343- then [DeleteEntry(aH)]
362+func makeRequest (D,ag) = {
363+ let aK = H(I)
364+ let G = aK._1
365+ let aL = aK._2
366+ let al = aK._3
367+ let aM = J(I)
368+ let K = aM._1
369+ let L = aM._2
370+ let P = if (!(isDefined(K.assetId)))
371+ then "WAVES"
372+ else toBase58String(value(K.assetId))
373+ if (!(O(P)))
374+ then throw("asset not accepted")
375+ else {
376+ let aN = af(D, ag)
377+ if (!(aN))
378+ then throw("Something went wrong")
379+ else [StringEntry((((((((("request2nd_" + aL) + "_") + ag) + "_") + D) + "_") + G) + "_OPEN"), ((((((((((toString(al) + "_") + toString(L)) + "_") + toBase58String(value(K.assetId))) + "_") + D) + "_") + aL) + "_") + G))]
380+ }
381+ }
382+
383+
384+
385+@Callable(I)
386+func fillRequest (D,aL,aC) = {
387+ let aO = H(I)
388+ let G = aO._1
389+ let T = aO._2
390+ let al = aO._3
391+ let aP = J(I)
392+ let K = aP._1
393+ let aQ = aP._2
394+ let P = if (if (isDefined(K.assetId))
395+ then M(value(K.assetId))
396+ else false)
397+ then K.assetId
398+ else throw("No NFT found")
399+ let aR = split(w(("nft_" + toBase58String(value(P)))), "_")
400+ if ((size(aR) == 0))
401+ then throw("No NFT found")
402+ else {
403+ let aS = split(x((((((((("request2nd_" + aL) + "_") + aR[5]) + "_") + D) + "_") + aC) + "_OPEN")), "_")
404+ if ((size(aS) == 0))
405+ then throw("No request found")
406+ else if ((aS[3] != aR[5]))
407+ then throw("This NFT don't match the requested artwork")
408+ else {
409+ let L = value(parseInt(aS[1]))
410+ let av = fraction(L, m, 100)
411+ let aw = fraction(L, n, 100)
412+ let ax = (L - (av + aw))
413+[DeleteEntry((((((((("request2nd_" + aL) + "_") + aR[5]) + "_") + D) + "_") + aC) + "_OPEN")), StringEntry((((((((("request2nd_" + aL) + "_") + aR[5]) + "_") + D) + "_") + aC) + "_CLOSED"), ((((((((((((toString(al) + "_") + toString(L)) + "_") + aS[2]) + "_") + D) + "_") + aL) + "_") + T) + "_") + G)), ScriptTransfer(Address(fromBase58String(e)), av, P), ScriptTransfer(Address(fromBase58String(aR[6])), aw, P), ScriptTransfer(Address(fromBase58String(T)), ax, P), ScriptTransfer(Address(fromBase58String(aS[4])), 1, P)]
414+ }
415+ }
416+ }
417+
418+
419+
420+@Callable(I)
421+func cancelRequest (D,ag,aT) = {
422+ let aU = H(I)
423+ let G = aU._1
424+ let aL = aU._2
425+ let al = aU._3
426+ let aV = ((((((("request2nd_" + aL) + "_") + ag) + "_") + D) + "_") + aT)
427+ let aS = x((aV + "_OPEN"))
428+ let aW = split(x((aV + "_OPEN")), "_")
429+[DeleteEntry((aV + "_OPEN")), StringEntry((((((aV + "_") + toString(al)) + "_") + G) + "_CANCELLED"), ((aS + "_") + toString(al))), ScriptTransfer(Address(fromBase58String(aL)), parseIntValue(aW[1]), fromBase58String(aW[2]))]
430+ }
431+
432+
433+
434+@Callable(I)
435+func deleteEntry (aX) = {
436+ let ak = toString(addressFromPublicKey(I.callerPublicKey))
437+ if ((ak == k))
438+ then [DeleteEntry(aX)]
344439 else throw("no")
345440 }
346441
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
77
88 let c = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
1010 let d = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
1111
1212 let e = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1313
1414 let f = if (a)
1515 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1616 else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
1717
1818 let g = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
1919
2020 let h = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
2121
2222 let i = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
2323
2424 let j = base58''
2525
2626 let k = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2727
2828 let l = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2929
3030 let m = 3
3131
3232 let n = 10
3333
3434 let o = valueOrElse(getBoolean(f, "conf_dapp_is_running"), true)
3535
3636 let p = valueOrElse(getString(f, "conf_maintenance_msg"), "")
3737
3838 let q = "SUSPENDED"
3939
4040 let r = "REMOVED"
4141
4242 let s = "ILLEGAL"
4343
4444 let t = "SUSPENDED"
4545
4646 func u (v) = valueOrElse(getString(f, v), "Error")
4747
4848
4949 func w (v) = valueOrElse(getString(d, v), "")
5050
5151
5252 func x (v) = valueOrElse(getString(this, v), "")
5353
5454
5555 func y (v) = valueOrElse(getInteger(this, v), 0)
5656
5757
5858 func z (A) = ("user_status_" + A)
5959
6060
6161 func B (C,D) = ((("art_signid_" + D) + "_") + C)
6262
6363
6464 func E (C,D) = ((("art_flag_" + D) + "_") + C)
6565
6666
6767 func F (G) = ("nft_" + G)
6868
6969
7070 func H (I) = if (!(o))
7171 then throw(p)
7272 else $Tuple3(toBase58String(I.transactionId), toBase58String(I.caller.bytes), lastBlock.timestamp)
7373
7474
7575 func J (I) = if ((size(I.payments) == 0))
7676 then throw("No payment attached")
7777 else {
7878 let K = value(I.payments[0])
7979 let L = value(K.amount)
8080 $Tuple2(K, L)
8181 }
8282
8383
8484 func M (G) = {
8585 let N = value(assetInfo(G))
8686 if (if (if (if ((N.quantity != 1))
8787 then true
8888 else (N.decimals != 0))
8989 then true
9090 else (N.reissuable != false))
9191 then true
9292 else (N.issuer != d))
9393 then false
9494 else true
9595 }
9696
9797
9898 func O (P) = if (if (if (if ((P != toBase58String(h)))
9999 then (P != toBase58String(j))
100100 else false)
101101 then (P != "WAVES")
102102 else false)
103103 then (P != toBase58String(i))
104104 else false)
105105 then false
106106 else true
107107
108108
109109 func Q (P) = if ((P == "WAVES"))
110110 then unit
111111 else fromBase58String(P)
112112
113113
114114 func R (S) = {
115115 let T = x(("current_owner_on_dapp_" + S))
116116 if ((size(T) == 0))
117117 then throw("NFT not found")
118118 else {
119119 let U = x(((("sale2nd_status_" + T) + "_") + S))
120120 if ((U != "OPEN"))
121121 then throw("NFT not for sale")
122122 else T
123123 }
124124 }
125125
126126
127127 func V (v) = {
128128 let W = x((v + "_OPEN"))
129129 if ((W == ""))
130130 then throw("Offer not found")
131131 else {
132132 let X = split(W, "_")
133133 let P = Q(X[2])
134134 $Tuple3(X, P, W)
135135 }
136136 }
137137
138138
139-func Y (P) = {
140- let Z = split(w(F(P)), "_")
141- let aa = w(B(Z[6], Z[5]))
142- if ((size(aa) == 0))
139+func Y (A,G) = {
140+ let Z = w(E(A, G))
141+ if (if ((Z == s))
142+ then true
143+ else (Z == t))
144+ then throw(("Original Artwork flagged as " + Z))
145+ else true
146+ }
147+
148+
149+func aa (A) = {
150+ let ab = u(z(A))
151+ if (containsElement([q, r], ab))
152+ then throw(("Original Artist " + ab))
153+ else true
154+ }
155+
156+
157+func ac (P) = {
158+ let ad = split(w(F(P)), "_")
159+ let ae = w(B(ad[6], ad[5]))
160+ if ((size(ae) == 0))
143161 then throw("Artwork not found on SIGN Art")
144- else {
145- let ab = w(E(Z[6], Z[5]))
146- if (if ((ab == s))
147- then true
148- else (ab == t))
149- then throw(("Original Artwork flagged as " + ab))
150- else {
151- let ac = u(z(Z[6]))
152- if (containsElement([q, r], ac))
153- then throw(("Original Artist " + ac))
154- else $Tuple2(true, Z[6])
155- }
156- }
162+ else if (if (!(Y(ad[6], ad[5])))
163+ then !(aa(ad[6]))
164+ else false)
165+ then $Tuple2(false, ad[6])
166+ else $Tuple2(true, ad[6])
167+ }
168+
169+
170+func af (D,ag) = {
171+ let ae = w(B(ag, D))
172+ if ((size(ae) == 0))
173+ then throw("Artwork not found on SIGN Art")
174+ else if (if (!(Y(ag, D)))
175+ then !(aa(ag))
176+ else false)
177+ then false
178+ else true
157179 }
158180
159181
160182 @Callable(I)
161-func sellNFT (ad,ae) = {
162- let af = H(I)
163- let G = af._1
164- let ag = af._2
165- let ah = af._3
166- let ai = J(I)
167- let K = ai._1
168- let L = ai._2
183+func sellNFT (ah,ai) = {
184+ let aj = H(I)
185+ let G = aj._1
186+ let ak = aj._2
187+ let al = aj._3
188+ let am = J(I)
189+ let K = am._1
190+ let L = am._2
169191 let P = if (if (isDefined(K.assetId))
170192 then M(value(K.assetId))
171193 else false)
172194 then K.assetId
173195 else throw("No NFT found")
174- if (!(O(ae)))
196+ if (!(O(ai)))
175197 then throw("Only SIGN, USDN or WAVES accepted")
176198 else {
177- let aj = Y(toBase58String(value(P)))
178- let ak = aj._1
179- let al = aj._2
180- if (!(ak))
199+ let an = ac(toBase58String(value(P)))
200+ let ao = an._1
201+ let ag = an._2
202+ if (!(ao))
181203 then throw("Something went wrong")
182- else [StringEntry((((((("sale2nd_info_" + ag) + "_") + toBase58String(value(K.assetId))) + "_") + al) + "_OPEN"), ((((toString(ah) + "_") + toString(ad)) + "_") + ae)), StringEntry(((("sale2nd_status_" + ag) + "_") + toBase58String(value(K.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(K.assetId))), ag)]
204+ else [StringEntry((((((("sale2nd_info_" + ak) + "_") + toBase58String(value(K.assetId))) + "_") + ag) + "_OPEN"), ((((toString(al) + "_") + toString(ah)) + "_") + ai)), StringEntry(((("sale2nd_status_" + ak) + "_") + toBase58String(value(K.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(K.assetId))), ak)]
183205 }
184206 }
185207
186208
187209
188210 @Callable(I)
189211 func cancelSale (S) = {
190- let am = H(I)
191- let G = am._1
192- let ag = am._2
193- let ah = am._3
212+ let ap = H(I)
213+ let G = ap._1
214+ let ak = ap._2
215+ let al = ap._3
194216 let T = x(("current_owner_on_dapp_" + S))
195- if ((T != ag))
217+ if ((T != ak))
196218 then throw("You don't own this NFT")
197219 else {
198- let U = x(((("sale2nd_status_" + ag) + "_") + S))
220+ let U = x(((("sale2nd_status_" + ak) + "_") + S))
199221 if ((U != "OPEN"))
200222 then throw("Sale not active")
201223 else {
202- let al = split(w(F(S)), "_")[6]
203- let an = x(((((((("sale2nd_info_" + ag) + "_") + S) + "_") + al) + "_") + U))
204-[DeleteEntry((((((("sale2nd_info_" + ag) + "_") + S) + "_") + al) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ag) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((((("sale2nd_info_" + ag) + "_") + S) + "_") + al) + "_") + toString(ah)) + "_") + G) + "_CANCELLED"), an), ScriptTransfer(Address(fromBase58String(ag)), 1, fromBase58String(S))]
224+ let ag = split(w(F(S)), "_")[6]
225+ let aq = x(((((((("sale2nd_info_" + ak) + "_") + S) + "_") + ag) + "_") + U))
226+[DeleteEntry((((((("sale2nd_info_" + ak) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ak) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((((("sale2nd_info_" + ak) + "_") + S) + "_") + ag) + "_") + toString(al)) + "_") + G) + "_CANCELLED"), aq), ScriptTransfer(Address(fromBase58String(ak)), 1, fromBase58String(S))]
205227 }
206228 }
207229 }
208230
209231
210232
211233 @Callable(I)
212234 func buyNFT (S) = {
213- let ao = H(I)
214- let G = ao._1
215- let ag = ao._2
216- let ah = ao._3
235+ let ar = H(I)
236+ let G = ar._1
237+ let ak = ar._2
238+ let al = ar._3
217239 let T = R(S)
218- let ap = Y(S)
219- let ak = ap._1
220- let al = ap._2
221- if (!(ak))
240+ let as = ac(S)
241+ let ao = as._1
242+ let ag = as._2
243+ if (!(ao))
222244 then throw("Something went wrong")
223245 else {
224- let an = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_OPEN"))
225- if ((size(an) == 0))
246+ let aq = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN"))
247+ if ((size(aq) == 0))
226248 then throw("Sale Not found!")
227249 else {
228- let aq = split(an, "_")
229- if ((parseInt(aq[1]) == 0))
250+ let at = split(aq, "_")
251+ if ((parseInt(at[1]) == 0))
230252 then throw("Offer only")
231253 else {
232- let ar = J(I)
233- let K = ar._1
234- let L = ar._2
235- if (if ((aq[1] != toString(L)))
254+ let au = J(I)
255+ let K = au._1
256+ let L = au._2
257+ if (if ((at[1] != toString(L)))
236258 then true
237- else (aq[2] != toBase58String(value(K.assetId))))
259+ else (at[2] != toBase58String(value(K.assetId))))
238260 then throw("Payment infos don't match.")
239261 else {
240- let as = fraction(L, m, 100)
241- let at = fraction(L, n, 100)
242- let au = (L - (as + at))
243-[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_") + toString(ah)) + "_") + G) + "_CLOSED"), ((((((toString(ah) + "_") + toString(L)) + "_") + toBase58String(value(K.assetId))) + "_to_") + ag)), ScriptTransfer(Address(fromBase58String(e)), as, K.assetId), ScriptTransfer(Address(fromBase58String(al)), at, K.assetId), ScriptTransfer(Address(fromBase58String(T)), au, K.assetId), ScriptTransfer(Address(fromBase58String(ag)), 1, fromBase58String(S))]
262+ let av = fraction(L, m, 100)
263+ let aw = fraction(L, n, 100)
264+ let ax = (L - (av + aw))
265+[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_") + toString(al)) + "_") + G) + "_CLOSED"), ((((((toString(al) + "_") + toString(L)) + "_") + toBase58String(value(K.assetId))) + "_to_") + ak)), ScriptTransfer(Address(fromBase58String(e)), av, K.assetId), ScriptTransfer(Address(fromBase58String(ag)), aw, K.assetId), ScriptTransfer(Address(fromBase58String(T)), ax, K.assetId), ScriptTransfer(Address(fromBase58String(ak)), 1, fromBase58String(S))]
244266 }
245267 }
246268 }
247269 }
248270 }
249271
250272
251273
252274 @Callable(I)
253275 func setOffer (S) = {
254- let av = H(I)
255- let G = av._1
256- let aw = av._2
257- let ah = av._3
258- let ax = J(I)
259- let K = ax._1
260- let L = ax._2
276+ let ay = H(I)
277+ let G = ay._1
278+ let az = ay._2
279+ let al = ay._3
280+ let aA = J(I)
281+ let K = aA._1
282+ let L = aA._2
261283 let P = if (!(isDefined(K.assetId)))
262284 then "WAVES"
263285 else toBase58String(value(K.assetId))
264286 if (!(O(P)))
265287 then throw("asset not accepted")
266288 else {
267- let ay = Y(S)
268- let ak = ay._1
269- let al = ay._2
270- if (!(ak))
289+ let aB = ac(S)
290+ let ao = aB._1
291+ let ag = aB._2
292+ if (!(ao))
271293 then throw("Something went wrong")
272294 else {
273295 let T = R(S)
274-[StringEntry((((((((("offer2nd_" + aw) + "_") + S) + "_") + T) + "_") + G) + "_OPEN"), ((((((((toString(ah) + "_") + toString(L)) + "_") + P) + "_") + aw) + "_") + G))]
296+[StringEntry((((((((("offer2nd_" + az) + "_") + S) + "_") + T) + "_") + G) + "_OPEN"), ((((((((toString(al) + "_") + toString(L)) + "_") + P) + "_") + az) + "_") + G))]
275297 }
276298 }
277299 }
278300
279301
280302
281303 @Callable(I)
282-func acceptOffer (S,az,aw) = {
283- let aA = H(I)
284- let G = aA._1
285- let ag = aA._2
286- let ah = aA._3
304+func acceptOffer (S,aC,az) = {
305+ let aD = H(I)
306+ let G = aD._1
307+ let ak = aD._2
308+ let al = aD._3
287309 let T = R(S)
288- if ((ag != T))
310+ if ((ak != T))
289311 then throw("You cannot do this action")
290312 else {
291- let aB = x((((((((("offer2nd_" + aw) + "_") + S) + "_") + T) + "_") + az) + "_OPEN"))
292- if ((aB == ""))
313+ let aE = x((((((((("offer2nd_" + az) + "_") + S) + "_") + T) + "_") + aC) + "_OPEN"))
314+ if ((aE == ""))
293315 then throw("Offer not found or not for sale")
294316 else {
295- let aC = Y(S)
296- let ak = aC._1
297- let al = aC._2
298- if (!(ak))
317+ let aF = ac(S)
318+ let ao = aF._1
319+ let ag = aF._2
320+ if (!(ao))
299321 then throw("Something went wrong")
300322 else {
301- let an = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_OPEN"))
302- if ((size(an) == 0))
323+ let aq = x((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN"))
324+ if ((size(aq) == 0))
303325 then throw("Sale Not found!")
304326 else {
305- let aD = ((((((("offer2nd_" + aw) + "_") + S) + "_") + T) + "_") + az)
306- let aE = V(aD)
307- let X = aE._1
308- let P = aE._2
309- let W = aE._3
327+ let aG = ((((((("offer2nd_" + az) + "_") + S) + "_") + T) + "_") + aC)
328+ let aH = V(aG)
329+ let X = aH._1
330+ let P = aH._2
331+ let W = aH._3
310332 let L = value(parseInt(X[1]))
311- let as = fraction(L, m, 100)
312- let at = fraction(L, n, 100)
313- let au = (L - (as + at))
314-[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_OPEN")), DeleteEntry((aD + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((aD + "_") + toString(ah)) + "_") + G) + "_CLOSED"), ((((((((toString(ah) + "_") + toString(L)) + "_") + toBase58String(value(P))) + "_") + aw) + "_") + az)), StringEntry((((((((((("sale2nd_info_" + T) + "_") + S) + "_") + al) + "_") + toString(ah)) + "_") + G) + "_CLOSED"), ((((((toString(ah) + "_") + toString(L)) + "_") + toBase58String(value(P))) + "_to_") + aw)), ScriptTransfer(Address(fromBase58String(e)), as, P), ScriptTransfer(Address(fromBase58String(al)), at, P), ScriptTransfer(Address(fromBase58String(T)), au, P), ScriptTransfer(Address(fromBase58String(X[3])), 1, fromBase58String(S))]
333+ let av = fraction(L, m, 100)
334+ let aw = fraction(L, n, 100)
335+ let ax = (L - (av + aw))
336+[DeleteEntry((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_OPEN")), DeleteEntry((aG + "_OPEN")), DeleteEntry(((("sale2nd_status_" + T) + "_") + S)), DeleteEntry(("current_owner_on_dapp_" + S)), StringEntry((((((aG + "_") + toString(al)) + "_") + G) + "_CLOSED"), ((((((((toString(al) + "_") + toString(L)) + "_") + toBase58String(value(P))) + "_") + az) + "_") + aC)), StringEntry((((((((((("sale2nd_info_" + T) + "_") + S) + "_") + ag) + "_") + toString(al)) + "_") + G) + "_CLOSED"), ((((((toString(al) + "_") + toString(L)) + "_") + toBase58String(value(P))) + "_to_") + az)), ScriptTransfer(Address(fromBase58String(e)), av, P), ScriptTransfer(Address(fromBase58String(ag)), aw, P), ScriptTransfer(Address(fromBase58String(T)), ax, P), ScriptTransfer(Address(fromBase58String(X[3])), 1, fromBase58String(S))]
315337 }
316338 }
317339 }
318340 }
319341 }
320342
321343
322344
323345 @Callable(I)
324-func cancelOffer (S,az,T) = {
325- let aF = H(I)
326- let G = aF._1
327- let ag = aF._2
328- let ah = aF._3
329- let aD = ((((((("offer2nd_" + ag) + "_") + S) + "_") + T) + "_") + az)
330- let aG = V(aD)
331- let X = aG._1
332- let P = aG._2
333- let W = aG._3
334-[DeleteEntry((aD + "_OPEN")), StringEntry((((((aD + "_") + toString(ah)) + "_") + G) + "_CANCELLED"), ((W + "_") + toString(ah))), ScriptTransfer(Address(fromBase58String(ag)), parseIntValue(X[1]), P)]
346+func cancelOffer (S,aC,T) = {
347+ let aI = H(I)
348+ let G = aI._1
349+ let ak = aI._2
350+ let al = aI._3
351+ let aG = ((((((("offer2nd_" + ak) + "_") + S) + "_") + T) + "_") + aC)
352+ let aJ = V(aG)
353+ let X = aJ._1
354+ let P = aJ._2
355+ let W = aJ._3
356+[DeleteEntry((aG + "_OPEN")), StringEntry((((((aG + "_") + toString(al)) + "_") + G) + "_CANCELLED"), ((W + "_") + toString(al))), ScriptTransfer(Address(fromBase58String(ak)), parseIntValue(X[1]), P)]
335357 }
336358
337359
338360
339361 @Callable(I)
340-func deleteEntry (aH) = {
341- let ag = toString(addressFromPublicKey(I.callerPublicKey))
342- if ((ag == k))
343- then [DeleteEntry(aH)]
362+func makeRequest (D,ag) = {
363+ let aK = H(I)
364+ let G = aK._1
365+ let aL = aK._2
366+ let al = aK._3
367+ let aM = J(I)
368+ let K = aM._1
369+ let L = aM._2
370+ let P = if (!(isDefined(K.assetId)))
371+ then "WAVES"
372+ else toBase58String(value(K.assetId))
373+ if (!(O(P)))
374+ then throw("asset not accepted")
375+ else {
376+ let aN = af(D, ag)
377+ if (!(aN))
378+ then throw("Something went wrong")
379+ else [StringEntry((((((((("request2nd_" + aL) + "_") + ag) + "_") + D) + "_") + G) + "_OPEN"), ((((((((((toString(al) + "_") + toString(L)) + "_") + toBase58String(value(K.assetId))) + "_") + D) + "_") + aL) + "_") + G))]
380+ }
381+ }
382+
383+
384+
385+@Callable(I)
386+func fillRequest (D,aL,aC) = {
387+ let aO = H(I)
388+ let G = aO._1
389+ let T = aO._2
390+ let al = aO._3
391+ let aP = J(I)
392+ let K = aP._1
393+ let aQ = aP._2
394+ let P = if (if (isDefined(K.assetId))
395+ then M(value(K.assetId))
396+ else false)
397+ then K.assetId
398+ else throw("No NFT found")
399+ let aR = split(w(("nft_" + toBase58String(value(P)))), "_")
400+ if ((size(aR) == 0))
401+ then throw("No NFT found")
402+ else {
403+ let aS = split(x((((((((("request2nd_" + aL) + "_") + aR[5]) + "_") + D) + "_") + aC) + "_OPEN")), "_")
404+ if ((size(aS) == 0))
405+ then throw("No request found")
406+ else if ((aS[3] != aR[5]))
407+ then throw("This NFT don't match the requested artwork")
408+ else {
409+ let L = value(parseInt(aS[1]))
410+ let av = fraction(L, m, 100)
411+ let aw = fraction(L, n, 100)
412+ let ax = (L - (av + aw))
413+[DeleteEntry((((((((("request2nd_" + aL) + "_") + aR[5]) + "_") + D) + "_") + aC) + "_OPEN")), StringEntry((((((((("request2nd_" + aL) + "_") + aR[5]) + "_") + D) + "_") + aC) + "_CLOSED"), ((((((((((((toString(al) + "_") + toString(L)) + "_") + aS[2]) + "_") + D) + "_") + aL) + "_") + T) + "_") + G)), ScriptTransfer(Address(fromBase58String(e)), av, P), ScriptTransfer(Address(fromBase58String(aR[6])), aw, P), ScriptTransfer(Address(fromBase58String(T)), ax, P), ScriptTransfer(Address(fromBase58String(aS[4])), 1, P)]
414+ }
415+ }
416+ }
417+
418+
419+
420+@Callable(I)
421+func cancelRequest (D,ag,aT) = {
422+ let aU = H(I)
423+ let G = aU._1
424+ let aL = aU._2
425+ let al = aU._3
426+ let aV = ((((((("request2nd_" + aL) + "_") + ag) + "_") + D) + "_") + aT)
427+ let aS = x((aV + "_OPEN"))
428+ let aW = split(x((aV + "_OPEN")), "_")
429+[DeleteEntry((aV + "_OPEN")), StringEntry((((((aV + "_") + toString(al)) + "_") + G) + "_CANCELLED"), ((aS + "_") + toString(al))), ScriptTransfer(Address(fromBase58String(aL)), parseIntValue(aW[1]), fromBase58String(aW[2]))]
430+ }
431+
432+
433+
434+@Callable(I)
435+func deleteEntry (aX) = {
436+ let ak = toString(addressFromPublicKey(I.callerPublicKey))
437+ if ((ak == k))
438+ then [DeleteEntry(aX)]
344439 else throw("no")
345440 }
346441
347442

github/deemru/w8io/169f3d6 
111.60 ms