tx · 2PrT7sb6ScjaLZkSsDDKhQTivEHmNGR22ZiPJ765xLNv

3N7LWLXDtaXAyrzFjxhPPLBfV5DepLY4JQT:  -0.02100000 Waves

2022.12.02 15:12 [2342716] smart account 3N7LWLXDtaXAyrzFjxhPPLBfV5DepLY4JQT > SELF 0.00000000 Waves

{ "type": 13, "id": "2PrT7sb6ScjaLZkSsDDKhQTivEHmNGR22ZiPJ765xLNv", "fee": 2100000, "feeAssetId": null, "timestamp": 1669983179572, "version": 2, "chainId": 84, "sender": "3N7LWLXDtaXAyrzFjxhPPLBfV5DepLY4JQT", "senderPublicKey": "Dua5JUgjDoKiGQvqvHFw2EcHUMTEH2zYWs8T2usUxu1S", "proofs": [ "bksVqAKbA87rKGUREyqRN3pE3xSiSQq6Wk43yw9FDX3PbRa37n9rdHtkgPhbps68HVMqPtmwtTfqM23CuxH9e6R" ], "script": "base64:AAIFAAAAAAAAAFAIAhILCgkBAQEBAQgBAQgSAwoBARIDCgEIEgUKAwEICBIECgIBCBIGCgQBCAECEgcKBQgBCAECEgQKAgEYEgUKAwgIARIECgIBCBIECgIBAQAAAD0BAAAAEWdldEludGVnZXJPclRocm93AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMQ2FuJ3QgcmVhZCAnBQAAAANrZXkCAAAADScgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAAHYWRkcmVzcwEAAAAQZ2V0U3RyaW5nT3JUaHJvdwAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADENhbid0IHJlYWQgJwUAAAADa2V5AgAAAA0nIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAB2FkZHJlc3MBAAAAE2dldEludGVnZXJPckRlZmF1bHQAAAADAAAAB2FkZHJlc3MAAAADa2V5AAAAB2RlZmF1bHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5BQAAAAdkZWZhdWx0AQAAAA9wYXJzZUludE9yVGhyb3cAAAABAAAACG1heWJlSW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAS2AAAAAQUAAAAIbWF5YmVJbnQJAAEsAAAAAgkAASwAAAACAgAAABpDYW4ndCBwYXJzZSBpbnRlZ2VyIGZyb20gJwUAAAAIbWF5YmVJbnQCAAAAAScBAAAAE3BhcnNlQWRkcmVzc09yVGhyb3cAAAABAAAADG1heWJlQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEFAAAADG1heWJlQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAGkNhbid0IHBhcnNlIGFkZHJlc3MgZnJvbSAnBQAAAAxtYXliZUFkZHJlc3MCAAAAAScBAAAAEXBhcnNlSW50T3JEZWZhdWx0AAAAAgAAAAhtYXliZUludAAAAAdkZWZhdWx0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEtgAAAAEFAAAACG1heWJlSW50BQAAAAdkZWZhdWx0AQAAAAprZXlfZW50aXR5AAAAAwAAAARuYW1lAAAAAnBrAAAACHByb3BlcnR5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABG5hbWUCAAAAAV8FAAAAAnBrAgAAAAFfBQAAAAhwcm9wZXJ0eQEAAAAHa2V5X3RvcAAAAAEAAAAEbmFtZQkAASwAAAACAgAAAARUb3BfBQAAAARuYW1lAQAAAAhrZXlfdG9wMgAAAAEAAAAEbmFtZQkAASwAAAACAgAAAAVUb3AyXwUAAAAEbmFtZQEAAAAOa2V5X2JpZGRlckhhc2gAAAADAAAACWF1Y3Rpb25JZAAAAAdhZGRyZXNzAAAABGhhc2gJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAJYXVjdGlvbklkAgAAAAFfBQAAAAdhZGRyZXNzAgAAAAFfBQAAAARoYXNoAQAAAAdrZXlfYmlkAAAAAQAAAApiaWRkZXJIYXNoCQABLAAAAAICAAAABEJpZF8FAAAACmJpZGRlckhhc2gBAAAACmtleV9yZXZlYWwAAAABAAAACmJpZGRlckhhc2gJAAEsAAAAAgIAAAAHUmV2ZWFsXwUAAAAKYmlkZGVySGFzaAEAAAAMa2V5X3JlZmVycmVyAAAAAQAAAApiaWRkZXJIYXNoCQABLAAAAAICAAAACVJlZmVycmVyXwUAAAAKYmlkZGVySGFzaAEAAAATa2V5X3JlZmVycmVyQWRkcmVzcwAAAAEAAAAEbmFtZQkAASwAAAACCQABLAAAAAICAAAACVJlZmVycmVyXwUAAAAEbmFtZQIAAAAIX2FkZHJlc3MBAAAAE2tleV9yZWZlcnJlclBlcmNlbnQAAAABAAAABG5hbWUJAAEsAAAAAgkAASwAAAACAgAAAAlSZWZlcnJlcl8FAAAABG5hbWUCAAAACF9wZXJjZW50AQAAAA9rZXlfbGVuZ3RoUHJpY2UAAAABAAAABmxlbmd0aAkAASwAAAACAgAAAAdMZW5ndGhfCQABpAAAAAEFAAAABmxlbmd0aAAAAAARa2V5X2luaXRUaW1lc3RhbXACAAAADWluaXRUaW1lc3RhbXAAAAAAD2tleV9iaWREdXJhdGlvbgIAAAALYmlkRHVyYXRpb24AAAAAEmtleV9yZXZlYWxEdXJhdGlvbgIAAAAOcmV2ZWFsRHVyYXRpb24AAAAADGtleV9lcnJvckZlZQIAAAAIZXJyb3JGZWUAAAAADmtleV9taW5pbWFsQmlkAgAAAAptaW5pbWFsQmlkAAAAABRrZXlfcmVnaXN0cmFyQWRkcmVzcwIAAAAQcmVnaXN0cmFyQWRkcmVzcwAAAAAVa2V5X25hbWVNaW5pbWFsTGVuZ3RoAgAAABFuYW1lTWluaW1hbExlbmd0aAAAAAAPa2V5X3BlcmNlbnRSYXRlAgAAAAtwZXJjZW50UmF0ZQAAAAAUa2V5X2NvbGxlY3RvckFkZHJlc3MCAAAAEGNvbGxlY3RvckFkZHJlc3MAAAAAGWtleV9uZXh0TmFtZU1pbmltYWxMZW5ndGgCAAAAFW5leHROYW1lTWluaW1hbExlbmd0aAAAAAAQa2V5X2xlbmd0aFByaWNlcwIAAAAMbGVuZ3RoUHJpY2VzAAAAAAxhdWN0aW9uU3RhcnQJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAEWtleV9pbml0VGltZXN0YW1wAAAAAAtiaWREdXJhdGlvbgkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAPa2V5X2JpZER1cmF0aW9uAAAAAA5yZXZlYWxEdXJhdGlvbgkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAASa2V5X3JldmVhbER1cmF0aW9uAAAAAA9hdWN0aW9uRHVyYXRpb24JAABkAAAAAgUAAAALYmlkRHVyYXRpb24FAAAADnJldmVhbER1cmF0aW9uAAAAAAhlcnJvckZlZQkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAMa2V5X2Vycm9yRmVlAAAAAAptaW5pbWFsQmlkCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAAA5rZXlfbWluaW1hbEJpZAAAAAARbmFtZU1pbmltYWxMZW5ndGgJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAFWtleV9uYW1lTWluaW1hbExlbmd0aAAAAAALcGVyY2VudFJhdGUJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAD2tleV9wZXJjZW50UmF0ZQAAAAAQcmVnaXN0cmFyQWRkcmVzcwkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAR0aGlzBQAAABRrZXlfcmVnaXN0cmFyQWRkcmVzcwAAAAAJcmVnaXN0cmFyCQEAAAATcGFyc2VBZGRyZXNzT3JUaHJvdwAAAAEFAAAAEHJlZ2lzdHJhckFkZHJlc3MAAAAAEGNvbGxlY3RvckFkZHJlc3MJAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwUAAAAUa2V5X2NvbGxlY3RvckFkZHJlc3MAAAAACWNvbGxlY3RvcgkBAAAAE3BhcnNlQWRkcmVzc09yVGhyb3cAAAABBQAAABBjb2xsZWN0b3JBZGRyZXNzAQAAABBfZ2V0UmVmZXJyZXJEYXRhAAAAAQAAAAxyZWZlcnJlck5hbWUEAAAACnJlZkFkZHJlc3MJAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAR0aGlzCQEAAAATa2V5X3JlZmVycmVyQWRkcmVzcwAAAAEFAAAADHJlZmVycmVyTmFtZQQAAAAKcmVmUGVyY2VudAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAATa2V5X3JlZmVycmVyUGVyY2VudAAAAAEFAAAADHJlZmVycmVyTmFtZQUAAAALcGVyY2VudFJhdGUDAwkAAGYAAAACAAAAAAAAAAAABQAAAApyZWZQZXJjZW50BgkAAGYAAAACBQAAAApyZWZQZXJjZW50AAAAAAAAAABkCQAAAgAAAAECAAAAFkluY29ycmVjdCBwZXJjZW50IHJhdGUJAAUUAAAAAgUAAAAKcmVmQWRkcmVzcwUAAAAKcmVmUGVyY2VudAEAAAAYX3JlZmVycmVyUGVyY2VudFRyYW5zZmVyAAAAAgAAAA1iaWRk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aW5pbWFsTGVuZ3RoAgAAAAEsCQAFFAAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAZ2YWx1ZXMAAAAAAAAAAAAJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAZ2YWx1ZXMAAAAAAAAAAAEEAAAADW5leHRBdWN0aW9uSWQIBQAAAAskdDA1NTYyNTc0NwAAAAJfMQQAAAARbmV4dE1pbmltYWxMZW5naHQIBQAAAAskdDA1NTYyNTc0NwAAAAJfMgMJAABnAAAAAgUAAAAJYXVjdGlvbklkBQAAAA1uZXh0QXVjdGlvbklkBQAAABFuZXh0TWluaW1hbExlbmdodAUAAAARbmFtZU1pbmltYWxMZW5ndGgFAAAAEW5hbWVNaW5pbWFsTGVuZ3RoAQAAAA9fZ2V0QXVjdGlvbkJ5SWQAAAABAAAACWF1Y3Rpb25JZAQAAAAIYmlkU3RhcnQJAABkAAAAAgUAAAAMYXVjdGlvblN0YXJ0CQAAaAAAAAIJAABlAAAAAgUAAAAJYXVjdGlvbklkAAAAAAAAAAABBQAAAA9hdWN0aW9uRHVyYXRpb24EAAAAC3JldmVhbFN0YXJ0CQAAZAAAAAIFAAAACGJpZFN0YXJ0BQAAAAtiaWREdXJhdGlvbgQAAAAKYXVjdGlvbkVuZAkAAGQAAAACBQAAAAtyZXZlYWxTdGFydAUAAAAOcmV2ZWFsRHVyYXRpb24EAAAABXBoYXNlAwkAAGYAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAALcmV2ZWFsU3RhcnQFAAAADFBIQVNFX1JFVkVBTAUAAAAJUEhBU0VfQklEBAAAAA1taW5pbWFsTGVuZ3RoCQEAAAARX2dldE1pbmltYWxMZW5ndGgAAAABBQAAAAlhdWN0aW9uSWQEAAAABnByaWNlcwkBAAAADV9nZXRBbGxQcmljZXMAAAAACQAFGQAAAAcFAAAACWF1Y3Rpb25JZAUAAAAFcGhhc2UFAAAACGJpZFN0YXJ0BQAAAAtyZXZlYWxTdGFydAUAAAAKYXVjdGlvbkVuZAUAAAANbWluaW1hbExlbmd0aAUAAAAGcHJpY2VzAQAAAApnZXRBdWN0aW9uAAAAAAQAAAAJYXVjdGlvbklkCQAAZAAAAAIJAABpAAAAAgkAAGUAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAMYXVjdGlvblN0YXJ0BQAAAA9hdWN0aW9uRHVyYXRpb24AAAAAAAAAAAEJAQAAAA9fZ2V0QXVjdGlvbkJ5SWQAAAABBQAAAAlhdWN0aW9uSWQBAAAAD2dldEF1Y3Rpb25QaGFzZQAAAAAEAAAAB2F1Y3Rpb24JAQAAAApnZXRBdWN0aW9uAAAAAAQAAAAJYXVjdGlvbklkCAUAAAAHYXVjdGlvbgAAAAJfMQQAAAAFcGhhc2UIBQAAAAdhdWN0aW9uAAAAAl8yCQAFFAAAAAIFAAAACWF1Y3Rpb25JZAUAAAAFcGhhc2UBAAAAC2lzVmFsaWROYW1lAAAAAQAAAARuYW1lBAAAAAdpc1ZhbGlkBAAAAAckbWF0Y2gwCQAD/AAAAAQFAAAACXJlZ2lzdHJhcgIAAAAHaXNWYWxpZAkABEwAAAACBQAAAARuYW1lBQAAAANuaWwFAAAAA25pbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAACVVbnN1cHBvcnRlZCByZXN1bHQgZm9ybWF0IChhdmFpbGFibGUpBAAAAA1taW5pbWFsTGVuZ2h0CAkBAAAACmdldEF1Y3Rpb24AAAAAAAAAAl82AwUAAAAHaXNWYWxpZAkAAGcAAAACCQABMQAAAAEFAAAABG5hbWUFAAAADW1pbmltYWxMZW5naHQHAQAAABFpc1JlZ2lzdHJhYmxlTmFtZQAAAAEAAAAEbmFtZQQAAAAHJG1hdGNoMAkAA/wAAAAEBQAAAAlyZWdpc3RyYXICAAAAC2lzQXZhaWxhYmxlCQAETAAAAAIFAAAABG5hbWUFAAAAA25pbAUAAAADbmlsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhCQAAAgAAAAECAAAAJVVuc3VwcG9ydGVkIHJlc3VsdCBmb3JtYXQgKGF2YWlsYWJsZSkBAAAADmlzV2lubmFibGVOYW1lAAAAAQAAAARuYW1lBAAAAAlyZXZlYWxLZXkJAAQdAAAAAgUAAAAEdGhpcwkBAAAAB2tleV90b3AAAAABBQAAAARuYW1lAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAJcmV2ZWFsS2V5BgQAAAAOY3VycmVudEF1Y3Rpb24ICQEAAAAPZ2V0QXVjdGlvblBoYXNlAAAAAAAAAAJfMQQAAAAMdG9wQXVjdGlvbklkCQABkQAAAAIJAAS1AAAAAgkBAAAABXZhbHVlAAAAAQUAAAAJcmV2ZWFsS2V5AgAAAAFfAAAAAAAAAAABBAAAAAlhdWN0aW9uSWQJAQAAABFwYXJzZUludE9yRGVmYXVsdAAAAAIFAAAADHRvcEF1Y3Rpb25JZAAAAAAAAAAAAAkAAAAAAAACBQAAAAlhdWN0aW9uSWQFAAAADmN1cnJlbnRBdWN0aW9uAQAAAA9pc0F2YWlsYWJsZU5hbWUAAAABAAAABG5hbWUDAwkBAAAAEWlzUmVnaXN0cmFibGVOYW1lAAAAAQUAAAAEbmFtZQkBAAAADmlzV2lubmFibGVOYW1lAAAAAQUAAAAEbmFtZQcJAQAAAAtpc1ZhbGlkTmFtZQAAAAEFAAAABG5hbWUHAQAAAARfYmlkAAAAAwAAAANpbnYAAAAJYXVjdGlvbklkAAAABGhhc2gEAAAAA3BtdAMDCQAAAAAAAAIJAAGQAAAAAQgFAAAAA2ludgAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAAAAAACCAkAAZEAAAACCAUAAAADaW52AAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAABHVuaXQHCAkAAZEAAAACCAUAAAADaW52AAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAkAAAIAAAABAgAAABdTaW5nbGUgcGF5bWVudCByZXF1aXJlZAQAAAAJY2hlY2tIYXNoCQACWQAAAAEFAAAABGhhc2gDCQAAAAAAAAIFAAAACWNoZWNrSGFzaAUAAAAJY2hlY2tIYXNoBAAAAA1jYWxsZXJBZGRyZXNzCQAEJQAAAAEIBQAAAANpbnYAAAAGY2FsbGVyBAAAAAZiaWRLZXkJAQAAAAdrZXlfYmlkAAAAAQkBAAAADmtleV9iaWRkZXJIYXNoAAAAAwkAAaQAAAABBQAAAAlhdWN0aW9uSWQFAAAADWNhbGxlckFkZHJlc3MFAAAABGhhc2gEAAAACyR0MDgxMDg4MTY1CQEAAAAPZ2V0QXVjdGlvblBoYXNlAAAAAAQAAAAQY3VycmVudEF1Y3Rpb25JZAgFAAAACyR0MDgxMDg4MTY1AAAAAl8xBAAAAA1jdXJyZW50UGVyaW9kCAUAAAALJHQwODEwODgxNjUAAAACXzIDCQEAAAACIT0AAAACBQAAABBjdXJyZW50QXVjdGlvbklkBQAAAAlhdWN0aW9uSWQJAAACAAAAAQIAAAAYQXVjdGlvbnMgaXMgYWxyZWFkeSBvdmVyAwkBAAAAAiE9AAAAAgUAAAANY3VycmVudFBlcmlvZAUAAAAJUEhBU0VfQklECQAAAgAAAAECAAAAEkJpZCBwZXJpb2QgaXMgb3ZlcgMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAABmJpZEtleQkAAAIAAAABAgAAACdCaWQgd2l0aCBleGFjdCBhbW91bnQgYWxyZWFkeSBwcmVzZW50ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAABmJpZEtleQUAAAADcG10BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAAAdfcmV2ZWFsAAAABQAAAAZiaWRkZXIAAAAJYXVjdGlvbklkAAAABG5hbWUAAAAJYmlkQW1vdW50AAAABnNlY3JldAQAAAANYmlkZGVyQWRkcmVzcwkABCUAAAABBQAAAAZiaWRkZXIEAAAABGhhc2gJAQAAAAhjYWxjSGFzaAAAAAQFAAAABG5hbWUFAAAACWJpZEFtb3VudAUAAAANYmlkZGVyQWRkcmVzcwUAAAAGc2VjcmV0BAAAAA1iaWRkZXJIYXNoS2V5CQEAAAAOa2V5X2JpZGRlckhhc2gAAAADCQABpAAAAAEFAAAACWF1Y3Rpb25JZAUAAAANYmlkZGVyQWRkcmVzcwUAAAAEaGFzaAQAAAAJcmV2ZWFsS2V5CQEAAAAKa2V5X3JldmVhbAAAAAEFAAAADWJpZGRlckhhc2hLZXkEAAAACyR0MDg4NTA4OTA3CQEAAAAPZ2V0QXVjdGlvblBoYXNlAAAAAAQAAAAQY3VycmVudEF1Y3Rpb25JZAgFAAAACyR0MDg4NTA4OTA3AAAAAl8xBAAAAA1jdXJyZW50UGVyaW9kCAUAAAALJHQwODg1MDg5MDcAAAACXzIDCQEAAAACIT0AAAACBQAAABBjdXJyZW50QXVjdGlvbklkBQAAAAlhdWN0aW9uSWQJAAACAAAAAQIAAAAYQXVjdGlvbnMgaXMgYWxyZWFkeSBvdmVyAwkBAAAAAiE9AAAAAgUAAAANY3VycmVudFBlcmlvZAUAAAAMUEhBU0VfUkVWRUFMCQAAAgAAAAECAAAAFVJldmVhbCBwZXJpb2QgaXMgb3ZlcgMJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMFAAAACXJldmVhbEtleQkAAAIAAAABAgAAABdCaWQgaXMgYWxyZWFkeSByZXZlYWxlZAQAAAAGYmlkS2V5CQEAAAAHa2V5X2JpZAAAAAEFAAAADWJpZGRlckhhc2hLZXkEAAAAB2RlcG9zaXQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAAZiaWRLZXkJAAEsAAAAAgIAAAATQmlkIGRvZXNuJ3QgZXhpc3RzIAUAAAAEaGFzaAQAAAAGdG9wS2V5CQEAAAAHa2V5X3RvcAAAAAEFAAAABG5hbWUEAAAACnRvcEtleURhdGEJAAQdAAAAAgUAAAAEdGhpcwUAAAAGdG9wS2V5BAAAAAptaW5CaWROYW1lCQEAAAASX2dldFByaWNlRm9yTGVuZ3RoAAAAAQkAATEAAAABBQAAAARuYW1lBAAAAAppc1ZhbGlkQmlkAwMJAABnAAAAAgUAAAAJYmlkQW1vdW50BQAAAAptaW5CaWROYW1lCQAAZwAAAAIFAAAAB2RlcG9zaXQFAAAACWJpZEFtb3VudAcJAQAAAA9pc0F2YWlsYWJsZU5hbWUAAAABBQAAAARuYW1lBwQAAAALcmV2ZWFsZWRCaWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJcmV2ZWFsS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHZGVwb3NpdAIAAAABLAkAAaQAAAABBQAAAAliaWRBbW91bnQCAAAAASwFAAAABG5hbWUFAAAAA25pbAMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZEJpZAQAAAAJZmVlQW1vdW50CQAAawAAAAMFAAAAB2RlcG9zaXQAAAAAAAAAAAoAAAAAAAAAAGQEAAAAI3JldHVybkRlcG9zaXRXaXRob3V0RmVlQW5kRGVsZXRlQmlkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABmJpZGRlcgkAAGUAAAACBQAAAAdkZXBvc2l0BQAAAAlmZWVBbW91bnQFAAAABHVuaXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAJY29sbGVjdG9yBQAAAAlmZWVBbW91bnQFAAAABHVuaXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAGYmlkS2V5BQAAAANuaWwFAAAAI3JldHVybkRlcG9zaXRXaXRob3V0RmVlQW5kRGVsZXRlQmlkAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAACnRvcEtleURhdGEEAAAADSR0MDEwMTIxMTAzMDAEAAAACXRvcFZhbHVlcwkABLUAAAACCQEAAAAFdmFsdWUAAAABBQAAAAp0b3BLZXlEYXRhAgAAAAEsCQAFFAAAAAIJAAGRAAAAAgUAAAAJdG9wVmFsdWVzAAAAAAAAAAAACQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJdG9wVmFsdWVzAAAAAAAAAAABBAAAAAx0b3BSZXZlYWxLZXkIBQAAAA0kdDAxMDEyMTEwMzAwAAAAAl8xBAAAABJzZWNvbmRUb3BCaWRBbW91bnQIBQAAAA0kdDAxMDEyMTEwMzAwAAAAAl8yBAAAAAxyZXZlYWxlZERhdGEJAQAAAAV2YWx1ZQAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAMdG9wUmV2ZWFsS2V5BAAAAAx0b3BCaWRBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACCQAEtQAAAAIFAAAADHJldmVhbGVkRGF0YQIAAAABLAAAAAAAAAAAAQQAAAANJHQwMTA0NTcxMDc1NQMJAABmAAAAAgUAAAAJYmlkQW1vdW50BQAAAAx0b3BCaWRBbW91bnQJAAUUAAAAAgUAAAAJcmV2ZWFsS2V5BQAAAAx0b3BCaWRBbW91bnQDCQAAZgAAAAIFAAAACWJpZEFtb3VudAUAAAASc2Vjb25kVG9wQmlkQW1vdW50CQAFFAAAAAIFAAAADHRvcFJldmVhbEtleQUAAAAJYmlkQW1vdW50CQAFFAAAAAIFAAAABHVuaXQFAAAABHVuaXQEAAAAD25ld1RvcFJldmVhbEtleQgFAAAADSR0MDEwNDU3MTA3NTUAAAACXzEEAAAAEm5ld1NlY29uZEJpZEFtb3VudAgFAAAADSR0MDEwNDU3MTA3NTUAAAACXzIEAAAADHVwZGF0ZVRvcEtleQQAAAAHJG1hdGNoMAkABRQAAAACBQAAAA9uZXdUb3BSZXZlYWxLZXkFAAAAEm5ld1NlY29uZEJpZEFtb3VudAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAANKFN0cmluZywgSW50KQQAAAAKbmV3VG9wRGF0YQUAAAAHJG1hdGNoMAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAZ0b3BLZXkJAAEsAAAAAgkAASwAAAACCAUAAAAKbmV3VG9wRGF0YQAAAAJfMQIAAAABLAkAAaQAAAABCAUAAAAKbmV3VG9wRGF0YQAAAAJfMgUAAAADbmlsBQAAAANuaWwJAAROAAAAAgUAAAALcmV2ZWFsZWRCaWQFAAAADHVwZGF0ZVRvcEtleQQAAAAMbmV3VG9wQmlkZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAABnRvcEtleQkAASwAAAACCQABLAAAAAIFAAAACXJldmVhbEtleQIAAAABLAkAAaQAAAABBQAAAAptaW5pbWFsQmlkBQAAAANuaWwJAAROAAAAAgUAAAALcmV2ZWFsZWRCaWQFAAAADG5ld1RvcEJpZGRlcgAAAAsAAAADaW52AQAAAARpbml0AAAACQAAAAl0aW1lc3RhbXAAAAALYmlkRHVyYXRpb24AAAAOcmV2ZWFsRHVyYXRpb24AAAAIZXJyb3JGZWUAAAAKbWluaW1hbEJpZAAAABByZWdpc3RyYXJBZGRyZXNzAAAAEW5hbWVNaW5pbWFsTGVuZ3RoAAAAC3BlcmNlbnRSYXRlAAAAEGNvbGxlY3RvckFkZHJlc3MJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAAltb2RpZmllcnMAAAABCQAETAAAAAIJAQAAAAlvbmx5QWRtaW4AAAABBQAAAANpbnYJAARMAAAAAgMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAEdGhpcwUAAAARa2V5X2luaXRUaW1lc3RhbXAFAAAABHVuaXQJAAACAAAAAQIAAAAkQXVjdGlvbiBhbHJlYWR5IGhhcyBiZWVuIGluaXRpYWxpemVkCQAETAAAAAIJAQAAABBvbmx5VmFsaWRBZGRyZXNzAAAAAQUAAAAQcmVnaXN0cmFyQWRkcmVzcwkABEwAAAACCQEAAAAQb25seVZhbGlkQWRkcmVzcwAAAAEFAAAAEGNvbGxlY3RvckFkZHJlc3MJAARMAAAAAgkBAAAAD29ubHlQb3NpdGl2ZUludAAAAAIFAAAAC2JpZER1cmF0aW9uAgAAAAxCaWQgZHVyYXRpb24JAARMAAAAAgkBAAAAD29ubHlQb3NpdGl2ZUludAAAAAIFAAAADnJldmVhbER1cmF0aW9uAgAAAA9SZXZlYWwgZHVyYXRpb24JAARMAAAAAgkBAAAAD29ubHlQb3NpdGl2ZUludAAAAAIFAAAACGVycm9yRmVlAgAAAAlFcnJvciBmZWUJAARMAAAAAgkBAAAAD29ubHlQb3NpdGl2ZUludAAAAAIFAAAACm1pbmltYWxCaWQCAAAAC01pbmltYWwgYmlkCQAETAAAAAIJAQAAAA9vbmx5UG9zaXRpdmVJbnQAAAACBQAAAAtwZXJjZW50UmF0ZQIAAAAMUGVyY2VudCByYXRlCQAETAAAAAIDCQAAZgAAAAIFAAAAEW5hbWVNaW5pbWFsTGVuZ3RoAAAAAAAAAAADBQAAAAR1bml0CQAAAgAAAAECAAAAJ01pbmltYWwgbmFtZSBsZW5ndGggbXVzdCBiZSBtb3JlIHRoYW4gMwUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrZXlfaW5pdFRpbWVzdGFtcAUAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlfYmlkRHVyYXRpb24FAAAAC2JpZER1cmF0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlfcmV2ZWFsRHVyYXRpb24FAAAADnJldmVhbER1cmF0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrZXlfZXJyb3JGZWUFAAAACGVycm9yRmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5rZXlfbWluaW1hbEJpZAUAAAAKbWluaW1hbEJpZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABRrZXlfcmVnaXN0cmFyQWRkcmVzcwUAAAAQcmVnaXN0cmFyQWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVa2V5X25hbWVNaW5pbWFsTGVuZ3RoBQAAABFuYW1lTWluaW1hbExlbmd0aAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5X3BlcmNlbnRSYXRlBQAAAAtwZXJjZW50UmF0ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABRrZXlfY29sbGVjdG9yQWRkcmVzcwUAAAAQY29sbGVjdG9yQWRkcmVzcwUAAAADbmlsAAAAA2ludgEAAAAOZ2V0QXVjdGlvbkJ5SWQAAAABAAAACWF1Y3Rpb25JZAkABRQAAAACBQAAAANuaWwJAQAAAA9fZ2V0QXVjdGlvbkJ5SWQAAAABBQAAAAlhdWN0aW9uSWQAAAADaW52AQAAAAtpc0F2YWlsYWJsZQAAAAEAAAAEbmFtZQkABRQAAAACBQAAAANuaWwJAQAAAA9pc0F2YWlsYWJsZU5hbWUAAAABBQAAAARuYW1lAAAAA2ludgEAAAAPYmlkV2l0aFJlZmVycmVyAAAAAwAAAAlhdWN0aW9uSWQAAAAEaGFzaAAAAAxyZWZlcnJlck5hbWUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAAltb2RpZmllcnMAAAABCQAETAAAAAIDCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzCQEAAAATa2V5X3JlZmVycmVyQWRkcmVzcwAAAAEFAAAADHJlZmVycmVyTmFtZQUAAAAEdW5pdAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAKUmVmZXJyZXIgYAUAAAAMcmVmZXJyZXJOYW1lAgAAAAtgIG5v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AAANJHQwMTQ2MTcxNDkxOAAAAAJfMwQAAAAGdG9wS2V5CQEAAAAHa2V5X3RvcAAAAAEFAAAABG5hbWUEAAAACnRvcEtleURhdGEJAAQdAAAAAgUAAAAEdGhpcwUAAAAGdG9wS2V5BAAAAA0kdDAxNTAxMTE1MTc5BAAAAAl0b3BWYWx1ZXMJAAS1AAAAAgkBAAAABXZhbHVlAAAAAQUAAAAKdG9wS2V5RGF0YQIAAAABLAkABRQAAAACCQABkQAAAAIFAAAACXRvcFZhbHVlcwAAAAAAAAAAAAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACXRvcFZhbHVlcwAAAAAAAAAAAQQAAAAMdG9wUmV2ZWFsS2V5CAUAAAANJHQwMTUwMTExNTE3OQAAAAJfMQQAAAASc2Vjb25kVG9wQmlkQW1vdW50CAUAAAANJHQwMTUwMTExNTE3OQAAAAJfMgQAAAANJHQwMTUxODkxNTM1MQQAAAAKd2lubmVySW5mbwkABLUAAAACBQAAAAx0b3BSZXZlYWxLZXkCAAAAAV8JAAUUAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACndpbm5lckluZm8AAAAAAAAAAAEJAAGRAAAAAgUAAAAKd2lubmVySW5mbwAAAAAAAAAAAgQAAAAPd2lubmVyQXVjdGlvbklkCAUAAAANJHQwMTUxODkxNTM1MQAAAAJfMQQAAAANd2lubmVyQWRkcmVzcwgFAAAADSR0MDE1MTg5MTUzNTEAAAACXzIEAAAADWRlbGV0ZUVudHJpZXMJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAJcmV2ZWFsS2V5CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAABmJpZEtleQUAAAADbmlsBAAAABZ0cmFuc2ZlckFuZERlbGV0ZUVudHJ5AwkAAAAAAAACBQAAAAx0b3BSZXZlYWxLZXkFAAAACXJldmVhbEtleQQAAAANJHQwMTU1NTMxNTY1NAkBAAAAGF9yZWZlcnJlclBlcmNlbnRUcmFuc2ZlcgAAAAIFAAAADWJpZGRlckhhc2hLZXkFAAAAEnNlY29uZFRvcEJpZEFtb3VudAQAAAAQcmVmZXJyZXJUcmFuc2ZlcggF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DHJlZmVycmVyTmFtZQAAAAAAAAAAAAUAAAAEdW5pdAkAAAIAAAABAgAAAB1SZWZlcnJlciBuYW1lIGNhbm5vdCBiZSBlbXB0eQUAAAADbmlsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABNrZXlfcmVmZXJyZXJBZGRyZXNzAAAAAQUAAAAMcmVmZXJyZXJOYW1lBQAAAA9yZWZlcnJlckFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABNrZXlfcmVmZXJyZXJQZXJjZW50AAAAAQUAAAAMcmVmZXJyZXJOYW1lBQAAAAdwZXJjZW50BQAAAANuaWwAAAADaW52AQAAAAlyZXZva2VCaWQAAAACAAAACWF1Y3Rpb25JZAAAAARoYXNoBAAAAAZjYWxsZXIIBQAAAANpbnYAAAAGY2FsbGVyBAAAAAljYWxsZXJTdHIJAAQlAAAAAQUAAAAGY2FsbGVyBAAAAAljaGVja0hhc2gJAAJZAAAAAQUAAAAEaGFzaAMJAAAAAAAAAgUAAAAJY2hlY2tIYXNoBQAAAAljaGVja0hhc2gEAAAADWJpZGRlckhhc2hLZXkJAQAAAA5rZXlfYmlkZGVySGFzaAAAAAMJAAGkAAAAAQUAAAAJYXVjdGlvbklkBQAAAAljYWxsZXJTdHIFAAAABGhhc2gEAAAABmJpZEtleQkBAAAAB2tleV9iaWQAAAABBQAAAA1iaWRkZXJIYXNoS2V5BAAAAANiaWQJAAQaAAAAAgUAAAAEdGhpcwUAAAAGYmlkS2V5BAAAAA0kdDAxNzEwNzE3MTY0CQEAAAAPZ2V0QXVjdGlvblBoYXNlAAAAAAQAAAAQY3VycmVudEF1Y3Rpb25JZAgFAAAADSR0MDE3MTA3MTcxNjQAAAACXzEEAAAADWN1cnJlbnRQZXJpb2QIBQAAAA0kdDAxNzEwNzE3MTY0AAAAAl8yAwkBAAAAAiE9AAAAAgUAAAAQY3VycmVudEF1Y3Rpb25JZAUAAAAJYXVjdGlvbklkCQAAAgAAAAECAAAAF0F1Y3Rpb24gaXMgYWxyZWFkeSBvdmVyAwkBAAAAAiE9AAAAAgUAAAANY3VycmVudFBlcmlvZAUAAAAJUEhBU0VfQklECQAAAgAAAAECAAAAGkJpZCBwZXJpb2QgaXMgYWxyZWFkeSBvdmVyAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAADYmlkCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAlCaWQgd2l0aCAFAAAABGhhc2gCAAAACiBub3QgZm91bmQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAGY2FsbGVyCQEAAAAFdmFsdWUAAAABBQAAAANiaWQFAAAABHVuaXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAGYmlkS2V5BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAA2ludgEAAAAUc2V0TmV4dE1pbmltYWxMZW5ndGgAAAACAAAACWF1Y3Rpb25JZAAAAA1taW5pbWFsTGVuZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAAJbW9kaWZpZXJzAAAAAQkABEwAAAACCQEAAAAJb25seUFkbWluAAAAAQUAAAADaW52BQAAAANuaWwEAAAAEW5leHRNaW5pbWFsTGVuZ3RoCQAEHQAAAAIFAAAABHRoaXMFAAAAGWtleV9uZXh0TmFtZU1pbmltYWxMZW5ndGgDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAARbmV4dE1pbmltYWxMZW5ndGgEAAAADSR0MDE3Nzg0MTc5NjUEAAAABnZhbHVlcwkABLUAAAACCQEAAAAFdmFsdWUAAAABBQAAABFuZXh0TWluaW1hbExlbmd0aAIAAAABLAkABRQAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAGdmFsdWVzAAAAAAAAAAAACQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAGdmFsdWVzAAAAAAAAAAABBAAAAA1uZXh0QXVjdGlvbklkCAUAAAANJHQwMTc3ODQxNzk2NQAAAAJfMQQAAAARbmV4dE1pbmltYWxMZW5naHQIBQAAAA0kdDAxNzc4NDE3OTY1AAAAAl8yCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlfbmFtZU1pbmltYWxMZW5ndGgFAAAAEW5leHRNaW5pbWFsTGVuZ2h0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAGWtleV9uZXh0TmFtZU1pbmltYWxMZW5ndGgJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAACWF1Y3Rpb25JZAIAAAABLAkAAaQAAAABBQAAAA1taW5pbWFsTGVuZ2h0BQAAAANuaWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAZa2V5X25leHROYW1lTWluaW1hbExlbmd0aAkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAJYXVjdGlvbklkAgAAAAEsCQABpAAAAAEFAAAADW1pbmltYWxMZW5naHQFAAAAA25pbAAAAACHMvBt", "height": 2342716, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Fo6g4422nH9WwGmwxpcm5VyCW3wPq3k4SMu2aEuuFg7U Next: 7GGyHkZKoitSErQsNkje4RgfvNGfiyRWMGE83hHJW7GR Diff:
OldNewDifferences
4646 func z (m) = (("Referrer_" + m) + "_percent")
4747
4848
49-let A = "initTimestamp"
49+func A (B) = ("Length_" + toString(B))
5050
51-let B = "bidDuration"
5251
53-let C = "revealDuration"
52+let C = "initTimestamp"
5453
55-let D = "errorFee"
54+let D = "bidDuration"
5655
57-let E = "minimalBid"
56+let E = "revealDuration"
5857
59-let F = "registrarAddress"
58+let F = "errorFee"
6059
61-let G = "nameMinimalLength"
60+let G = "minimalBid"
6261
63-let H = "percentRate"
62+let H = "registrarAddress"
6463
65-let I = "collectorAddress"
64+let I = "nameMinimalLength"
6665
67-let J = a(this, A)
66+let J = "percentRate"
6867
69-let K = a(this, B)
68+let K = "collectorAddress"
7069
71-let L = a(this, C)
70+let L = "nextNameMinimalLength"
7271
73-let M = (K + L)
72+let M = "lengthPrices"
7473
75-let N = a(this, D)
74+let N = a(this, C)
7675
77-let O = a(this, E)
76+let O = a(this, D)
7877
79-let P = a(this, G)
78+let P = a(this, E)
8079
81-let Q = a(this, H)
80+let Q = (O + P)
8281
83-let R = d(this, F)
82+let R = a(this, F)
8483
85-let S = i(R)
84+let S = a(this, G)
8685
87-let T = d(this, I)
86+let T = a(this, I)
8887
89-let U = i(T)
88+let U = a(this, J)
9089
91-func V (W) = {
92- let X = i(d(this, y(W)))
93- let Y = valueOrElse(getInteger(this, z(W)), Q)
94- if (if ((0 > Y))
90+let V = d(this, H)
91+
92+let W = i(V)
93+
94+let X = d(this, K)
95+
96+let Y = i(X)
97+
98+func Z (aa) = {
99+ let ab = i(d(this, y(aa)))
100+ let ac = valueOrElse(getInteger(this, z(aa)), U)
101+ if (if ((0 > ac))
95102 then true
96- else (Y > 100))
103+ else (ac > 100))
97104 then throw("Incorrect percent rate")
98- else $Tuple2(X, Y)
105+ else $Tuple2(ab, ac)
99106 }
100107
101108
102-func Z (aa,ab) = {
103- let ac = x(aa)
104- let ad = getString(this, ac)
105- if (isDefined(ad))
109+func ad (ae,af) = {
110+ let ag = x(ae)
111+ let ah = getString(this, ag)
112+ if (isDefined(ah))
106113 then {
107- let ae = V(value(ad))
108- let af = ae._1
109- let ag = ae._2
110- let ah = fraction(ab, ag, 100)
111- $Tuple2([ScriptTransfer(af, ah, unit), DeleteEntry(ac)], ah)
114+ let ai = Z(value(ah))
115+ let aj = ai._1
116+ let ak = ai._2
117+ let al = fraction(af, ak, 100)
118+ $Tuple2([ScriptTransfer(aj, al, unit), DeleteEntry(ag)], al)
112119 }
113120 else $Tuple2(nil, 0)
114121 }
115122
116123
117-func ai (m,aj,ak,al) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(aj)) + fromBase58String(ak)) + al))))
124+func am (m,an,ao,ap) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(an)) + fromBase58String(ao)) + ap))))
118125
119126
120-func am (an) = unit
127+func aq (ar) = unit
121128
122129
123-func ao (ap) = (ap.caller == this)
130+func as (at) = (at.caller == this)
124131
125132
126-func aq (ap) = if (ao(ap))
133+func au (at) = if (as(at))
127134 then unit
128135 else throw("Permission denied")
129136
130137
131-func ar (j) = if (isDefined(addressFromString(j)))
138+func av (j) = if (isDefined(addressFromString(j)))
132139 then unit
133140 else throw((j + " is not a valid address"))
134141
135142
136-func as (at,au) = if ((at > 0))
143+func aw (ax,ay) = if ((ax > 0))
137144 then unit
138- else throw((au + " must be greter than 0"))
145+ else throw((ay + " must be greter than 0"))
139146
140147
141-let av = "BID"
148+let az = "BID"
142149
143-let aw = "REVEAL"
150+let aA = "REVEAL"
144151
145-func ax (s) = {
146- let ay = (J + (s * M))
147- let az = (ay + K)
148- let aA = (az + L)
149- let aB = if ((lastBlock.timestamp > az))
150- then aw
151- else av
152- $Tuple5(s, aB, ay, az, aA)
153- }
154-
155-
156-func aC () = {
157- let s = ((lastBlock.timestamp - J) / M)
158- ax(s)
152+func aB (B) = {
153+ let aC = getInteger(this, A(B))
154+ if (isDefined(aC))
155+ then value(aC)
156+ else S
159157 }
160158
161159
162160 func aD () = {
163- let aE = aC()
164- if ($isInstanceOf(aE, "(Int, String, Int, Int, Int)"))
165- then {
166- let aF = aE
167- let s = aF._1
168- let aB = aF._2
169- $Tuple2(s, aB)
170- }
171- else throw("Invalid auction info")
161+ let aE = getInteger(this, A(6))
162+ let aF = getInteger(this, A(5))
163+ let aG = getInteger(this, A(4))
164+ let aH = getInteger(this, A(3))
165+ let aI = getInteger(this, A(2))
166+ let aJ = getInteger(this, A(1))
167+ ([S] ++ (if (isDefined(aE))
168+ then [value(aE)]
169+ else (nil ++ (if (isDefined(aF))
170+ then [value(aF)]
171+ else (nil ++ (if (isDefined(aG))
172+ then [value(aG)]
173+ else (nil ++ (if (isDefined(aH))
174+ then [value(aH)]
175+ else (nil ++ (if (isDefined(aI))
176+ then [value(aI)]
177+ else (nil ++ (if (isDefined(aJ))
178+ then [value(aJ)]
179+ else nil))))))))))))
172180 }
173181
174182
175-func aG (m) = {
176- let aH = {
177- let aE = invoke(S, "isValid", [m], nil)
178- if ($isInstanceOf(aE, "Boolean"))
183+func aK (s) = {
184+ let aL = getString(this, L)
185+ if (!(isDefined(aL)))
186+ then {
187+ let aM = {
188+ let aN = split(value(aL), ",")
189+ $Tuple2(parseIntValue(aN[0]), parseIntValue(aN[1]))
190+ }
191+ let aO = aM._1
192+ let aP = aM._2
193+ if ((s >= aO))
194+ then aP
195+ else T
196+ }
197+ else T
198+ }
199+
200+
201+func aQ (s) = {
202+ let aR = (N + ((s - 1) * Q))
203+ let aS = (aR + O)
204+ let aT = (aS + P)
205+ let aU = if ((lastBlock.timestamp > aS))
206+ then aA
207+ else az
208+ let aV = aK(s)
209+ let aW = aD()
210+ $Tuple7(s, aU, aR, aS, aT, aV, aW)
211+ }
212+
213+
214+func aX () = {
215+ let s = (((lastBlock.timestamp - N) / Q) + 1)
216+ aQ(s)
217+ }
218+
219+
220+func aY () = {
221+ let aZ = aX()
222+ let s = aZ._1
223+ let aU = aZ._2
224+ $Tuple2(s, aU)
225+ }
226+
227+
228+func ba (m) = {
229+ let bb = {
230+ let bc = invoke(W, "isValid", [m], nil)
231+ if ($isInstanceOf(bc, "Boolean"))
179232 then {
180- let aI = aE
181- aI
233+ let bd = bc
234+ bd
182235 }
183236 else throw("Unsupported result format (available)")
184237 }
185- if (aH)
186- then (size(m) >= P)
238+ let be = aX()._6
239+ if (bb)
240+ then (size(m) >= be)
187241 else false
188242 }
189243
190244
191-func aJ (m) = {
192- let aE = invoke(S, "isAvailable", [m], nil)
193- if ($isInstanceOf(aE, "Boolean"))
245+func bf (m) = {
246+ let bc = invoke(W, "isAvailable", [m], nil)
247+ if ($isInstanceOf(bc, "Boolean"))
194248 then {
195- let aI = aE
196- aI
249+ let bd = bc
250+ bd
197251 }
198252 else throw("Unsupported result format (available)")
199253 }
200254
201255
202-func aK (m) = {
203- let aL = getString(this, p(m))
204- if (!(isDefined(aL)))
256+func bg (m) = {
257+ let bh = getString(this, p(m))
258+ if (!(isDefined(bh)))
205259 then true
206260 else {
207- let aM = aD()._1
208- let aN = split(value(aL), "_")[1]
209- let s = k(aN, 0)
210- (s == aM)
261+ let bi = aY()._1
262+ let bj = split(value(bh), "_")[1]
263+ let s = k(bj, 0)
264+ (s == bi)
211265 }
212266 }
213267
214268
215-func aO (m) = if (if (aJ(m))
216- then aK(m)
269+func bk (m) = if (if (bf(m))
270+ then bg(m)
217271 else false)
218- then aG(m)
272+ then ba(m)
219273 else false
220274
221275
222-func aP (ap,s,t) = {
223- let aQ = if (if ((size(ap.payments) == 1))
224- then (ap.payments[0].assetId == unit)
276+func bl (at,s,t) = {
277+ let bm = if (if ((size(at.payments) == 1))
278+ then (at.payments[0].assetId == unit)
225279 else false)
226- then ap.payments[0].amount
280+ then at.payments[0].amount
227281 else throw("Single payment required")
228- let aR = toString(ap.caller)
229- let aS = u(r(toString(s), aR, t))
230- let aT = aD()
231- let aU = aT._1
232- let aV = aT._2
233- if ((aU != s))
234- then throw("Auctions is already over")
235- else if ((aV != av))
236- then throw("Bid period is over")
237- else if (isDefined(getInteger(this, aS)))
238- then throw("Bid with exact amount already presented")
239- else [IntegerEntry(aS, aQ)]
282+ let bn = fromBase58String(t)
283+ if ((bn == bn))
284+ then {
285+ let bo = toString(at.caller)
286+ let bp = u(r(toString(s), bo, t))
287+ let bq = aY()
288+ let br = bq._1
289+ let bs = bq._2
290+ if ((br != s))
291+ then throw("Auctions is already over")
292+ else if ((bs != az))
293+ then throw("Bid period is over")
294+ else if (isDefined(getInteger(this, bp)))
295+ then throw("Bid with exact amount already presented")
296+ else [IntegerEntry(bp, bm)]
297+ }
298+ else throw("Strict value is not equal to itself.")
240299 }
241300
242301
243-@Callable(ap)
244-func init (aW,K,L,N,O,R,P,Q,T) = valueOrElse(am([aq(ap), if (!(isDefined(getInteger(this, A))))
245- then unit
246- else throw("Auction already has been initialized"), ar(R), ar(T), as(K, "Bid duration"), as(L, "Reveal duration"), as(N, "Error fee"), as(O, "Minimal bid"), as(Q, "Percent rate"), if ((P > 3))
247- then unit
248- else throw("Minimal name length must be more than 3")]), [IntegerEntry(A, aW), IntegerEntry(B, K), IntegerEntry(C, L), IntegerEntry(D, N), IntegerEntry(E, O), StringEntry(F, R), IntegerEntry(G, P), IntegerEntry(H, Q), StringEntry(I, T)])
249-
250-
251-
252-@Callable(ap)
253-func getAuctionById (s) = $Tuple2(nil, ax(s))
254-
255-
256-
257-@Callable(ap)
258-func isAvailable (m) = $Tuple2(nil, aO(m))
259-
260-
261-
262-@Callable(ap)
263-func bidWithReferrer (s,t,W) = valueOrElse(am([if (isDefined(getString(this, y(W))))
264- then unit
265- else throw((("Referrer `" + W) + "` not found"))]), {
266- let aX = aP(ap, s, t)
267- let aY = [StringEntry(x(r(toString(s), toString(ap.caller), t)), W)]
268- (aX ++ aY)
269- })
270-
271-
272-
273-@Callable(ap)
274-func bid (s,t) = aP(ap, s, t)
275-
276-
277-
278-@Callable(ap)
279-func reveal (s,m,ab,al) = {
280- let aZ = ap.caller
281- let aR = toString(aZ)
282- let t = ai(m, ab, aR, al)
283- let aa = r(toString(s), aR, t)
284- let aL = w(aa)
285- let ba = aD()
286- let aU = ba._1
287- let aV = ba._2
288- if ((aU != s))
302+func bt (bu,s,m,af,ap) = {
303+ let bv = toString(bu)
304+ let t = am(m, af, bv, ap)
305+ let ae = r(toString(s), bv, t)
306+ let bh = w(ae)
307+ let bw = aY()
308+ let br = bw._1
309+ let bs = bw._2
310+ if ((br != s))
289311 then throw("Auctions is already over")
290- else if ((aV != aw))
312+ else if ((bs != aA))
291313 then throw("Reveal period is over")
292- else if (isDefined(getString(this, aL)))
314+ else if (isDefined(getString(this, bh)))
293315 then throw("Bid is already revealed")
294316 else {
295- let aS = u(aa)
296- let bb = valueOrErrorMessage(getInteger(this, aS), ("Bid doesn't exists " + t))
297- let bc = p(m)
298- let bd = getString(this, bc)
299- let be = if (if ((ab >= O))
300- then (bb >= ab)
317+ let bp = u(ae)
318+ let bx = valueOrErrorMessage(getInteger(this, bp), ("Bid doesn't exists " + t))
319+ let by = p(m)
320+ let bz = getString(this, by)
321+ let bA = aB(size(m))
322+ let bB = if (if ((af >= bA))
323+ then (bx >= af)
301324 else false)
302- then aO(m)
325+ then bk(m)
303326 else false
304- let bf = [StringEntry(aL, ((((toString(bb) + ",") + toString(ab)) + ",") + m))]
305- if (!(be))
327+ let bC = [StringEntry(bh, ((((toString(bx) + ",") + toString(af)) + ",") + m))]
328+ if (!(bB))
306329 then {
307- let bg = fraction(bb, 10, 100)
308- let bh = [ScriptTransfer(aZ, (bb - bg), unit), ScriptTransfer(U, bg, unit), DeleteEntry(aS)]
309- bh
330+ let bD = fraction(bx, 10, 100)
331+ let bE = [ScriptTransfer(bu, (bx - bD), unit), ScriptTransfer(Y, bD, unit), DeleteEntry(bp)]
332+ bE
310333 }
311- else if (isDefined(bd))
334+ else if (isDefined(bz))
312335 then {
313- let bi = {
314- let bj = split(value(bd), ",")
315- $Tuple2(bj[0], parseIntValue(bj[1]))
336+ let bF = {
337+ let bG = split(value(bz), ",")
338+ $Tuple2(bG[0], parseIntValue(bG[1]))
316339 }
317- let bk = bi._1
318- let bl = bi._2
319- let bm = value(getString(this, bk))
320- let bn = parseIntValue(split(bm, ",")[1])
321- let bo = if ((ab > bn))
322- then $Tuple2(aL, bn)
323- else if ((ab > bl))
324- then $Tuple2(bk, ab)
340+ let bH = bF._1
341+ let bI = bF._2
342+ let bJ = value(getString(this, bH))
343+ let bK = parseIntValue(split(bJ, ",")[1])
344+ let bL = if ((af > bK))
345+ then $Tuple2(bh, bK)
346+ else if ((af > bI))
347+ then $Tuple2(bH, af)
325348 else $Tuple2(unit, unit)
326- let bp = bo._1
327- let bq = bo._2
328- let br = {
329- let aE = $Tuple2(bp, bq)
330- if ($isInstanceOf(aE, "(String, Int)"))
349+ let bM = bL._1
350+ let bN = bL._2
351+ let bO = {
352+ let bc = $Tuple2(bM, bN)
353+ if ($isInstanceOf(bc, "(String, Int)"))
331354 then {
332- let bs = aE
333-[StringEntry(bc, ((bs._1 + ",") + toString(bs._2)))]
355+ let bP = bc
356+[StringEntry(by, ((bP._1 + ",") + toString(bP._2)))]
334357 }
335358 else nil
336359 }
337- (bf ++ br)
360+ (bC ++ bO)
338361 }
339362 else {
340- let bt = [StringEntry(bc, ((aL + ",") + toString(O)))]
341- (bf ++ bt)
363+ let bQ = [StringEntry(by, ((bh + ",") + toString(S)))]
364+ (bC ++ bQ)
342365 }
343366 }
344367 }
345368
346369
370+@Callable(at)
371+func init (bR,O,P,R,S,V,T,U,X) = valueOrElse(aq([au(at), if (!(isDefined(getInteger(this, C))))
372+ then unit
373+ else throw("Auction already has been initialized"), av(V), av(X), aw(O, "Bid duration"), aw(P, "Reveal duration"), aw(R, "Error fee"), aw(S, "Minimal bid"), aw(U, "Percent rate"), if ((T > 3))
374+ then unit
375+ else throw("Minimal name length must be more than 3")]), [IntegerEntry(C, bR), IntegerEntry(D, O), IntegerEntry(E, P), IntegerEntry(F, R), IntegerEntry(G, S), StringEntry(H, V), IntegerEntry(I, T), IntegerEntry(J, U), StringEntry(K, X)])
347376
348-@Callable(ap)
349-func finalize (s,bu) = {
350- let aA = ax(s)._5
351- let bv = if ((lastBlock.timestamp > aA))
377+
378+
379+@Callable(at)
380+func getAuctionById (s) = $Tuple2(nil, aQ(s))
381+
382+
383+
384+@Callable(at)
385+func isAvailable (m) = $Tuple2(nil, bk(m))
386+
387+
388+
389+@Callable(at)
390+func bidWithReferrer (s,t,aa) = valueOrElse(aq([if (isDefined(getString(this, y(aa))))
391+ then unit
392+ else throw((("Referrer `" + aa) + "` not found"))]), {
393+ let bS = bl(at, s, t)
394+ let bT = [StringEntry(x(r(toString(s), toString(at.caller), t)), aa)]
395+ (bS ++ bT)
396+ })
397+
398+
399+
400+@Callable(at)
401+func bid (s,t) = bl(at, s, t)
402+
403+
404+
405+@Callable(at)
406+func reveal (s,m,af,ap) = bt(at.caller, s, m, af, ap)
407+
408+
409+
410+@Callable(at)
411+func revealForBidder (bu,s,m,af,ap) = bt(valueOrErrorMessage(addressFromString(bu), "Bidder must be valid address"), s, m, af, ap)
412+
413+
414+
415+@Callable(at)
416+func finalize (s,bU) = {
417+ let aT = aQ(s)._5
418+ let bV = if ((lastBlock.timestamp > aT))
352419 then unit
353420 else throw("Cannot finalize auction that has not ended")
354- if ((bv == bv))
421+ if ((bV == bV))
355422 then {
356- let aZ = ap.caller
357- let aR = toString(aZ)
358- func bw (bx,t) = {
359- let aa = r(toString(s), aR, t)
360- let aS = u(aa)
361- let aL = w(aa)
362- let bf = getString(this, aL)
363- let by = {
364- let bz = split(valueOrErrorMessage(bf, (("Bid with hash " + t) + " not found")), ",")
365- $Tuple3(parseIntValue(bz[0]), parseIntValue(bz[1]), bz[2])
366- }
367- let bb = by._1
368- let ab = by._2
369- let m = by._3
370- let bc = p(m)
371- let bd = getString(this, bc)
372- let bA = {
373- let bj = split(value(bd), ",")
374- $Tuple2(bj[0], parseIntValue(bj[1]))
375- }
376- let bk = bA._1
377- let bl = bA._2
378- let bB = {
379- let bC = split(bk, "_")
380- $Tuple2(parseIntValue(bC[1]), bC[2])
381- }
382- let bD = bB._1
383- let bE = bB._2
384- let bF = [DeleteEntry(aL), DeleteEntry(aS)]
385- let bG = if ((bk == aL))
423+ let bW = at.caller
424+ let bo = toString(bW)
425+ func bX (bY,t) = {
426+ let bn = fromBase58String(t)
427+ if ((bn == bn))
386428 then {
387- let bH = Z(aa, bl)
388- let bI = bH._1
389- let ag = bH._2
390- let bJ = invoke(S, "register", [m, bE, aA], nil)
391- if ((bJ == bJ))
429+ let ae = r(toString(s), bo, t)
430+ let bp = u(ae)
431+ let bh = w(ae)
432+ let bC = getString(this, bh)
433+ let bZ = {
434+ let ca = split(valueOrErrorMessage(bC, (("Bid with hash " + t) + " not found")), ",")
435+ $Tuple3(parseIntValue(ca[0]), parseIntValue(ca[1]), ca[2])
436+ }
437+ let bx = bZ._1
438+ let af = bZ._2
439+ let m = bZ._3
440+ let by = p(m)
441+ let bz = getString(this, by)
442+ let cb = {
443+ let bG = split(value(bz), ",")
444+ $Tuple2(bG[0], parseIntValue(bG[1]))
445+ }
446+ let bH = cb._1
447+ let bI = cb._2
448+ let cc = {
449+ let cd = split(bH, "_")
450+ $Tuple2(parseIntValue(cd[1]), cd[2])
451+ }
452+ let ce = cc._1
453+ let cf = cc._2
454+ let cg = [DeleteEntry(bh), DeleteEntry(bp)]
455+ let ch = if ((bH == bh))
392456 then {
393- let bK = [ScriptTransfer(aZ, (bb - bl), unit), ScriptTransfer(U, (bl - ag), unit)]
394- (bI ++ bK)
457+ let ci = ad(ae, bI)
458+ let cj = ci._1
459+ let ak = ci._2
460+ let ck = invoke(W, "register", [m, cf, aT], nil)
461+ if ((ck == ck))
462+ then {
463+ let cl = (bx - bI)
464+ let cm = if ((cl > 0))
465+ then [ScriptTransfer(bW, cl, unit)]
466+ else nil
467+ let cn = [ScriptTransfer(Y, (bI - ak), unit)]
468+ ((cj ++ cn) ++ cm)
469+ }
470+ else throw("Strict value is not equal to itself.")
395471 }
396- else throw("Strict value is not equal to itself.")
472+ else [ScriptTransfer(bW, bx, unit)]
473+ ((bY ++ cg) ++ ch)
397474 }
398- else [ScriptTransfer(aZ, bb, unit)]
399- ((bx ++ bF) ++ bG)
475+ else throw("Strict value is not equal to itself.")
400476 }
401477
402- let bL = bu
403- let bM = size(bL)
404- let bN = nil
405- func bO (bP,bQ) = if ((bQ >= bM))
406- then bP
407- else bw(bP, bL[bQ])
478+ let co = bU
479+ let cp = size(co)
480+ let cq = nil
481+ func cr (cs,ct) = if ((ct >= cp))
482+ then cs
483+ else bX(cs, co[ct])
408484
409- func bR (bP,bQ) = if ((bQ >= bM))
410- then bP
485+ func cu (cs,ct) = if ((ct >= cp))
486+ then cs
411487 else throw("List size exceeds 10")
412488
413- bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
489+ cu(cr(cr(cr(cr(cr(cr(cr(cr(cr(cr(cq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
414490 }
415491 else throw("Strict value is not equal to itself.")
416492 }
417493
418494
419495
420-@Callable(ap)
421-func addReferrer (W,bS,bT) = valueOrElse(am([aq(ap), ar(bS), if (if ((bT > 0))
422- then (100 > bT)
496+@Callable(at)
497+func addReferrer (aa,cv,cw) = valueOrElse(aq([au(at), av(cv), if (if ((cw > 0))
498+ then (100 > cw)
423499 else false)
424500 then unit
425- else throw("Percent must be between 0 and 100"), if ((size(W) > 0))
501+ else throw("Percent must be between 0 and 100"), if ((size(aa) > 0))
426502 then unit
427- else throw("Referrer name cannot be empty")]), [StringEntry(y(W), bS), IntegerEntry(z(W), bT)])
503+ else throw("Referrer name cannot be empty")]), [StringEntry(y(aa), cv), IntegerEntry(z(aa), cw)])
428504
429505
430506
431-@Callable(ap)
507+@Callable(at)
432508 func revokeBid (s,t) = {
433- let aZ = ap.caller
434- let bU = toString(aZ)
435- let aa = r(toString(s), bU, t)
436- let aS = u(aa)
437- let aX = getInteger(this, aS)
438- let bV = aD()
439- let aU = bV._1
440- let aV = bV._2
441- if ((aU != s))
442- then throw("Auction is already over")
443- else if ((aV != av))
444- then throw("Bid period is already over")
445- else if (!(isDefined(aX)))
446- then throw((("Bid with " + t) + " not found"))
447- else [ScriptTransfer(aZ, value(aX), unit), DeleteEntry(aS)]
509+ let bW = at.caller
510+ let cx = toString(bW)
511+ let bn = fromBase58String(t)
512+ if ((bn == bn))
513+ then {
514+ let ae = r(toString(s), cx, t)
515+ let bp = u(ae)
516+ let bS = getInteger(this, bp)
517+ let cy = aY()
518+ let br = cy._1
519+ let bs = cy._2
520+ if ((br != s))
521+ then throw("Auction is already over")
522+ else if ((bs != az))
523+ then throw("Bid period is already over")
524+ else if (!(isDefined(bS)))
525+ then throw((("Bid with " + t) + " not found"))
526+ else [ScriptTransfer(bW, value(bS), unit), DeleteEntry(bp)]
527+ }
528+ else throw("Strict value is not equal to itself.")
448529 }
530+
531+
532+
533+@Callable(at)
534+func setNextMinimalLength (s,be) = valueOrElse(aq([au(at)]), {
535+ let cz = getString(this, L)
536+ if (isDefined(cz))
537+ then {
538+ let cA = {
539+ let aN = split(value(cz), ",")
540+ $Tuple2(parseIntValue(aN[0]), parseIntValue(aN[1]))
541+ }
542+ let aO = cA._1
543+ let aP = cA._2
544+[IntegerEntry(I, aP), StringEntry(L, ((toString(s) + ",") + toString(be)))]
545+ }
546+ else [StringEntry(L, ((toString(s) + ",") + toString(be)))]
547+ })
449548
450549
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = valueOrErrorMessage(getInteger(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
55
66
77 func d (b,c) = valueOrErrorMessage(getString(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
88
99
1010 func e (b,c,f) = valueOrElse(getInteger(b, c), f)
1111
1212
1313 func g (h) = valueOrErrorMessage(parseInt(h), (("Can't parse integer from '" + h) + "'"))
1414
1515
1616 func i (j) = valueOrErrorMessage(addressFromString(j), (("Can't parse address from '" + j) + "'"))
1717
1818
1919 func k (h,f) = valueOrElse(parseInt(h), f)
2020
2121
2222 func l (m,n,o) = ((((m + "_") + n) + "_") + o)
2323
2424
2525 func p (m) = ("Top_" + m)
2626
2727
2828 func q (m) = ("Top2_" + m)
2929
3030
3131 func r (s,b,t) = ((((s + "_") + b) + "_") + t)
3232
3333
3434 func u (v) = ("Bid_" + v)
3535
3636
3737 func w (v) = ("Reveal_" + v)
3838
3939
4040 func x (v) = ("Referrer_" + v)
4141
4242
4343 func y (m) = (("Referrer_" + m) + "_address")
4444
4545
4646 func z (m) = (("Referrer_" + m) + "_percent")
4747
4848
49-let A = "initTimestamp"
49+func A (B) = ("Length_" + toString(B))
5050
51-let B = "bidDuration"
5251
53-let C = "revealDuration"
52+let C = "initTimestamp"
5453
55-let D = "errorFee"
54+let D = "bidDuration"
5655
57-let E = "minimalBid"
56+let E = "revealDuration"
5857
59-let F = "registrarAddress"
58+let F = "errorFee"
6059
61-let G = "nameMinimalLength"
60+let G = "minimalBid"
6261
63-let H = "percentRate"
62+let H = "registrarAddress"
6463
65-let I = "collectorAddress"
64+let I = "nameMinimalLength"
6665
67-let J = a(this, A)
66+let J = "percentRate"
6867
69-let K = a(this, B)
68+let K = "collectorAddress"
7069
71-let L = a(this, C)
70+let L = "nextNameMinimalLength"
7271
73-let M = (K + L)
72+let M = "lengthPrices"
7473
75-let N = a(this, D)
74+let N = a(this, C)
7675
77-let O = a(this, E)
76+let O = a(this, D)
7877
79-let P = a(this, G)
78+let P = a(this, E)
8079
81-let Q = a(this, H)
80+let Q = (O + P)
8281
83-let R = d(this, F)
82+let R = a(this, F)
8483
85-let S = i(R)
84+let S = a(this, G)
8685
87-let T = d(this, I)
86+let T = a(this, I)
8887
89-let U = i(T)
88+let U = a(this, J)
9089
91-func V (W) = {
92- let X = i(d(this, y(W)))
93- let Y = valueOrElse(getInteger(this, z(W)), Q)
94- if (if ((0 > Y))
90+let V = d(this, H)
91+
92+let W = i(V)
93+
94+let X = d(this, K)
95+
96+let Y = i(X)
97+
98+func Z (aa) = {
99+ let ab = i(d(this, y(aa)))
100+ let ac = valueOrElse(getInteger(this, z(aa)), U)
101+ if (if ((0 > ac))
95102 then true
96- else (Y > 100))
103+ else (ac > 100))
97104 then throw("Incorrect percent rate")
98- else $Tuple2(X, Y)
105+ else $Tuple2(ab, ac)
99106 }
100107
101108
102-func Z (aa,ab) = {
103- let ac = x(aa)
104- let ad = getString(this, ac)
105- if (isDefined(ad))
109+func ad (ae,af) = {
110+ let ag = x(ae)
111+ let ah = getString(this, ag)
112+ if (isDefined(ah))
106113 then {
107- let ae = V(value(ad))
108- let af = ae._1
109- let ag = ae._2
110- let ah = fraction(ab, ag, 100)
111- $Tuple2([ScriptTransfer(af, ah, unit), DeleteEntry(ac)], ah)
114+ let ai = Z(value(ah))
115+ let aj = ai._1
116+ let ak = ai._2
117+ let al = fraction(af, ak, 100)
118+ $Tuple2([ScriptTransfer(aj, al, unit), DeleteEntry(ag)], al)
112119 }
113120 else $Tuple2(nil, 0)
114121 }
115122
116123
117-func ai (m,aj,ak,al) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(aj)) + fromBase58String(ak)) + al))))
124+func am (m,an,ao,ap) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(an)) + fromBase58String(ao)) + ap))))
118125
119126
120-func am (an) = unit
127+func aq (ar) = unit
121128
122129
123-func ao (ap) = (ap.caller == this)
130+func as (at) = (at.caller == this)
124131
125132
126-func aq (ap) = if (ao(ap))
133+func au (at) = if (as(at))
127134 then unit
128135 else throw("Permission denied")
129136
130137
131-func ar (j) = if (isDefined(addressFromString(j)))
138+func av (j) = if (isDefined(addressFromString(j)))
132139 then unit
133140 else throw((j + " is not a valid address"))
134141
135142
136-func as (at,au) = if ((at > 0))
143+func aw (ax,ay) = if ((ax > 0))
137144 then unit
138- else throw((au + " must be greter than 0"))
145+ else throw((ay + " must be greter than 0"))
139146
140147
141-let av = "BID"
148+let az = "BID"
142149
143-let aw = "REVEAL"
150+let aA = "REVEAL"
144151
145-func ax (s) = {
146- let ay = (J + (s * M))
147- let az = (ay + K)
148- let aA = (az + L)
149- let aB = if ((lastBlock.timestamp > az))
150- then aw
151- else av
152- $Tuple5(s, aB, ay, az, aA)
153- }
154-
155-
156-func aC () = {
157- let s = ((lastBlock.timestamp - J) / M)
158- ax(s)
152+func aB (B) = {
153+ let aC = getInteger(this, A(B))
154+ if (isDefined(aC))
155+ then value(aC)
156+ else S
159157 }
160158
161159
162160 func aD () = {
163- let aE = aC()
164- if ($isInstanceOf(aE, "(Int, String, Int, Int, Int)"))
165- then {
166- let aF = aE
167- let s = aF._1
168- let aB = aF._2
169- $Tuple2(s, aB)
170- }
171- else throw("Invalid auction info")
161+ let aE = getInteger(this, A(6))
162+ let aF = getInteger(this, A(5))
163+ let aG = getInteger(this, A(4))
164+ let aH = getInteger(this, A(3))
165+ let aI = getInteger(this, A(2))
166+ let aJ = getInteger(this, A(1))
167+ ([S] ++ (if (isDefined(aE))
168+ then [value(aE)]
169+ else (nil ++ (if (isDefined(aF))
170+ then [value(aF)]
171+ else (nil ++ (if (isDefined(aG))
172+ then [value(aG)]
173+ else (nil ++ (if (isDefined(aH))
174+ then [value(aH)]
175+ else (nil ++ (if (isDefined(aI))
176+ then [value(aI)]
177+ else (nil ++ (if (isDefined(aJ))
178+ then [value(aJ)]
179+ else nil))))))))))))
172180 }
173181
174182
175-func aG (m) = {
176- let aH = {
177- let aE = invoke(S, "isValid", [m], nil)
178- if ($isInstanceOf(aE, "Boolean"))
183+func aK (s) = {
184+ let aL = getString(this, L)
185+ if (!(isDefined(aL)))
186+ then {
187+ let aM = {
188+ let aN = split(value(aL), ",")
189+ $Tuple2(parseIntValue(aN[0]), parseIntValue(aN[1]))
190+ }
191+ let aO = aM._1
192+ let aP = aM._2
193+ if ((s >= aO))
194+ then aP
195+ else T
196+ }
197+ else T
198+ }
199+
200+
201+func aQ (s) = {
202+ let aR = (N + ((s - 1) * Q))
203+ let aS = (aR + O)
204+ let aT = (aS + P)
205+ let aU = if ((lastBlock.timestamp > aS))
206+ then aA
207+ else az
208+ let aV = aK(s)
209+ let aW = aD()
210+ $Tuple7(s, aU, aR, aS, aT, aV, aW)
211+ }
212+
213+
214+func aX () = {
215+ let s = (((lastBlock.timestamp - N) / Q) + 1)
216+ aQ(s)
217+ }
218+
219+
220+func aY () = {
221+ let aZ = aX()
222+ let s = aZ._1
223+ let aU = aZ._2
224+ $Tuple2(s, aU)
225+ }
226+
227+
228+func ba (m) = {
229+ let bb = {
230+ let bc = invoke(W, "isValid", [m], nil)
231+ if ($isInstanceOf(bc, "Boolean"))
179232 then {
180- let aI = aE
181- aI
233+ let bd = bc
234+ bd
182235 }
183236 else throw("Unsupported result format (available)")
184237 }
185- if (aH)
186- then (size(m) >= P)
238+ let be = aX()._6
239+ if (bb)
240+ then (size(m) >= be)
187241 else false
188242 }
189243
190244
191-func aJ (m) = {
192- let aE = invoke(S, "isAvailable", [m], nil)
193- if ($isInstanceOf(aE, "Boolean"))
245+func bf (m) = {
246+ let bc = invoke(W, "isAvailable", [m], nil)
247+ if ($isInstanceOf(bc, "Boolean"))
194248 then {
195- let aI = aE
196- aI
249+ let bd = bc
250+ bd
197251 }
198252 else throw("Unsupported result format (available)")
199253 }
200254
201255
202-func aK (m) = {
203- let aL = getString(this, p(m))
204- if (!(isDefined(aL)))
256+func bg (m) = {
257+ let bh = getString(this, p(m))
258+ if (!(isDefined(bh)))
205259 then true
206260 else {
207- let aM = aD()._1
208- let aN = split(value(aL), "_")[1]
209- let s = k(aN, 0)
210- (s == aM)
261+ let bi = aY()._1
262+ let bj = split(value(bh), "_")[1]
263+ let s = k(bj, 0)
264+ (s == bi)
211265 }
212266 }
213267
214268
215-func aO (m) = if (if (aJ(m))
216- then aK(m)
269+func bk (m) = if (if (bf(m))
270+ then bg(m)
217271 else false)
218- then aG(m)
272+ then ba(m)
219273 else false
220274
221275
222-func aP (ap,s,t) = {
223- let aQ = if (if ((size(ap.payments) == 1))
224- then (ap.payments[0].assetId == unit)
276+func bl (at,s,t) = {
277+ let bm = if (if ((size(at.payments) == 1))
278+ then (at.payments[0].assetId == unit)
225279 else false)
226- then ap.payments[0].amount
280+ then at.payments[0].amount
227281 else throw("Single payment required")
228- let aR = toString(ap.caller)
229- let aS = u(r(toString(s), aR, t))
230- let aT = aD()
231- let aU = aT._1
232- let aV = aT._2
233- if ((aU != s))
234- then throw("Auctions is already over")
235- else if ((aV != av))
236- then throw("Bid period is over")
237- else if (isDefined(getInteger(this, aS)))
238- then throw("Bid with exact amount already presented")
239- else [IntegerEntry(aS, aQ)]
282+ let bn = fromBase58String(t)
283+ if ((bn == bn))
284+ then {
285+ let bo = toString(at.caller)
286+ let bp = u(r(toString(s), bo, t))
287+ let bq = aY()
288+ let br = bq._1
289+ let bs = bq._2
290+ if ((br != s))
291+ then throw("Auctions is already over")
292+ else if ((bs != az))
293+ then throw("Bid period is over")
294+ else if (isDefined(getInteger(this, bp)))
295+ then throw("Bid with exact amount already presented")
296+ else [IntegerEntry(bp, bm)]
297+ }
298+ else throw("Strict value is not equal to itself.")
240299 }
241300
242301
243-@Callable(ap)
244-func init (aW,K,L,N,O,R,P,Q,T) = valueOrElse(am([aq(ap), if (!(isDefined(getInteger(this, A))))
245- then unit
246- else throw("Auction already has been initialized"), ar(R), ar(T), as(K, "Bid duration"), as(L, "Reveal duration"), as(N, "Error fee"), as(O, "Minimal bid"), as(Q, "Percent rate"), if ((P > 3))
247- then unit
248- else throw("Minimal name length must be more than 3")]), [IntegerEntry(A, aW), IntegerEntry(B, K), IntegerEntry(C, L), IntegerEntry(D, N), IntegerEntry(E, O), StringEntry(F, R), IntegerEntry(G, P), IntegerEntry(H, Q), StringEntry(I, T)])
249-
250-
251-
252-@Callable(ap)
253-func getAuctionById (s) = $Tuple2(nil, ax(s))
254-
255-
256-
257-@Callable(ap)
258-func isAvailable (m) = $Tuple2(nil, aO(m))
259-
260-
261-
262-@Callable(ap)
263-func bidWithReferrer (s,t,W) = valueOrElse(am([if (isDefined(getString(this, y(W))))
264- then unit
265- else throw((("Referrer `" + W) + "` not found"))]), {
266- let aX = aP(ap, s, t)
267- let aY = [StringEntry(x(r(toString(s), toString(ap.caller), t)), W)]
268- (aX ++ aY)
269- })
270-
271-
272-
273-@Callable(ap)
274-func bid (s,t) = aP(ap, s, t)
275-
276-
277-
278-@Callable(ap)
279-func reveal (s,m,ab,al) = {
280- let aZ = ap.caller
281- let aR = toString(aZ)
282- let t = ai(m, ab, aR, al)
283- let aa = r(toString(s), aR, t)
284- let aL = w(aa)
285- let ba = aD()
286- let aU = ba._1
287- let aV = ba._2
288- if ((aU != s))
302+func bt (bu,s,m,af,ap) = {
303+ let bv = toString(bu)
304+ let t = am(m, af, bv, ap)
305+ let ae = r(toString(s), bv, t)
306+ let bh = w(ae)
307+ let bw = aY()
308+ let br = bw._1
309+ let bs = bw._2
310+ if ((br != s))
289311 then throw("Auctions is already over")
290- else if ((aV != aw))
312+ else if ((bs != aA))
291313 then throw("Reveal period is over")
292- else if (isDefined(getString(this, aL)))
314+ else if (isDefined(getString(this, bh)))
293315 then throw("Bid is already revealed")
294316 else {
295- let aS = u(aa)
296- let bb = valueOrErrorMessage(getInteger(this, aS), ("Bid doesn't exists " + t))
297- let bc = p(m)
298- let bd = getString(this, bc)
299- let be = if (if ((ab >= O))
300- then (bb >= ab)
317+ let bp = u(ae)
318+ let bx = valueOrErrorMessage(getInteger(this, bp), ("Bid doesn't exists " + t))
319+ let by = p(m)
320+ let bz = getString(this, by)
321+ let bA = aB(size(m))
322+ let bB = if (if ((af >= bA))
323+ then (bx >= af)
301324 else false)
302- then aO(m)
325+ then bk(m)
303326 else false
304- let bf = [StringEntry(aL, ((((toString(bb) + ",") + toString(ab)) + ",") + m))]
305- if (!(be))
327+ let bC = [StringEntry(bh, ((((toString(bx) + ",") + toString(af)) + ",") + m))]
328+ if (!(bB))
306329 then {
307- let bg = fraction(bb, 10, 100)
308- let bh = [ScriptTransfer(aZ, (bb - bg), unit), ScriptTransfer(U, bg, unit), DeleteEntry(aS)]
309- bh
330+ let bD = fraction(bx, 10, 100)
331+ let bE = [ScriptTransfer(bu, (bx - bD), unit), ScriptTransfer(Y, bD, unit), DeleteEntry(bp)]
332+ bE
310333 }
311- else if (isDefined(bd))
334+ else if (isDefined(bz))
312335 then {
313- let bi = {
314- let bj = split(value(bd), ",")
315- $Tuple2(bj[0], parseIntValue(bj[1]))
336+ let bF = {
337+ let bG = split(value(bz), ",")
338+ $Tuple2(bG[0], parseIntValue(bG[1]))
316339 }
317- let bk = bi._1
318- let bl = bi._2
319- let bm = value(getString(this, bk))
320- let bn = parseIntValue(split(bm, ",")[1])
321- let bo = if ((ab > bn))
322- then $Tuple2(aL, bn)
323- else if ((ab > bl))
324- then $Tuple2(bk, ab)
340+ let bH = bF._1
341+ let bI = bF._2
342+ let bJ = value(getString(this, bH))
343+ let bK = parseIntValue(split(bJ, ",")[1])
344+ let bL = if ((af > bK))
345+ then $Tuple2(bh, bK)
346+ else if ((af > bI))
347+ then $Tuple2(bH, af)
325348 else $Tuple2(unit, unit)
326- let bp = bo._1
327- let bq = bo._2
328- let br = {
329- let aE = $Tuple2(bp, bq)
330- if ($isInstanceOf(aE, "(String, Int)"))
349+ let bM = bL._1
350+ let bN = bL._2
351+ let bO = {
352+ let bc = $Tuple2(bM, bN)
353+ if ($isInstanceOf(bc, "(String, Int)"))
331354 then {
332- let bs = aE
333-[StringEntry(bc, ((bs._1 + ",") + toString(bs._2)))]
355+ let bP = bc
356+[StringEntry(by, ((bP._1 + ",") + toString(bP._2)))]
334357 }
335358 else nil
336359 }
337- (bf ++ br)
360+ (bC ++ bO)
338361 }
339362 else {
340- let bt = [StringEntry(bc, ((aL + ",") + toString(O)))]
341- (bf ++ bt)
363+ let bQ = [StringEntry(by, ((bh + ",") + toString(S)))]
364+ (bC ++ bQ)
342365 }
343366 }
344367 }
345368
346369
370+@Callable(at)
371+func init (bR,O,P,R,S,V,T,U,X) = valueOrElse(aq([au(at), if (!(isDefined(getInteger(this, C))))
372+ then unit
373+ else throw("Auction already has been initialized"), av(V), av(X), aw(O, "Bid duration"), aw(P, "Reveal duration"), aw(R, "Error fee"), aw(S, "Minimal bid"), aw(U, "Percent rate"), if ((T > 3))
374+ then unit
375+ else throw("Minimal name length must be more than 3")]), [IntegerEntry(C, bR), IntegerEntry(D, O), IntegerEntry(E, P), IntegerEntry(F, R), IntegerEntry(G, S), StringEntry(H, V), IntegerEntry(I, T), IntegerEntry(J, U), StringEntry(K, X)])
347376
348-@Callable(ap)
349-func finalize (s,bu) = {
350- let aA = ax(s)._5
351- let bv = if ((lastBlock.timestamp > aA))
377+
378+
379+@Callable(at)
380+func getAuctionById (s) = $Tuple2(nil, aQ(s))
381+
382+
383+
384+@Callable(at)
385+func isAvailable (m) = $Tuple2(nil, bk(m))
386+
387+
388+
389+@Callable(at)
390+func bidWithReferrer (s,t,aa) = valueOrElse(aq([if (isDefined(getString(this, y(aa))))
391+ then unit
392+ else throw((("Referrer `" + aa) + "` not found"))]), {
393+ let bS = bl(at, s, t)
394+ let bT = [StringEntry(x(r(toString(s), toString(at.caller), t)), aa)]
395+ (bS ++ bT)
396+ })
397+
398+
399+
400+@Callable(at)
401+func bid (s,t) = bl(at, s, t)
402+
403+
404+
405+@Callable(at)
406+func reveal (s,m,af,ap) = bt(at.caller, s, m, af, ap)
407+
408+
409+
410+@Callable(at)
411+func revealForBidder (bu,s,m,af,ap) = bt(valueOrErrorMessage(addressFromString(bu), "Bidder must be valid address"), s, m, af, ap)
412+
413+
414+
415+@Callable(at)
416+func finalize (s,bU) = {
417+ let aT = aQ(s)._5
418+ let bV = if ((lastBlock.timestamp > aT))
352419 then unit
353420 else throw("Cannot finalize auction that has not ended")
354- if ((bv == bv))
421+ if ((bV == bV))
355422 then {
356- let aZ = ap.caller
357- let aR = toString(aZ)
358- func bw (bx,t) = {
359- let aa = r(toString(s), aR, t)
360- let aS = u(aa)
361- let aL = w(aa)
362- let bf = getString(this, aL)
363- let by = {
364- let bz = split(valueOrErrorMessage(bf, (("Bid with hash " + t) + " not found")), ",")
365- $Tuple3(parseIntValue(bz[0]), parseIntValue(bz[1]), bz[2])
366- }
367- let bb = by._1
368- let ab = by._2
369- let m = by._3
370- let bc = p(m)
371- let bd = getString(this, bc)
372- let bA = {
373- let bj = split(value(bd), ",")
374- $Tuple2(bj[0], parseIntValue(bj[1]))
375- }
376- let bk = bA._1
377- let bl = bA._2
378- let bB = {
379- let bC = split(bk, "_")
380- $Tuple2(parseIntValue(bC[1]), bC[2])
381- }
382- let bD = bB._1
383- let bE = bB._2
384- let bF = [DeleteEntry(aL), DeleteEntry(aS)]
385- let bG = if ((bk == aL))
423+ let bW = at.caller
424+ let bo = toString(bW)
425+ func bX (bY,t) = {
426+ let bn = fromBase58String(t)
427+ if ((bn == bn))
386428 then {
387- let bH = Z(aa, bl)
388- let bI = bH._1
389- let ag = bH._2
390- let bJ = invoke(S, "register", [m, bE, aA], nil)
391- if ((bJ == bJ))
429+ let ae = r(toString(s), bo, t)
430+ let bp = u(ae)
431+ let bh = w(ae)
432+ let bC = getString(this, bh)
433+ let bZ = {
434+ let ca = split(valueOrErrorMessage(bC, (("Bid with hash " + t) + " not found")), ",")
435+ $Tuple3(parseIntValue(ca[0]), parseIntValue(ca[1]), ca[2])
436+ }
437+ let bx = bZ._1
438+ let af = bZ._2
439+ let m = bZ._3
440+ let by = p(m)
441+ let bz = getString(this, by)
442+ let cb = {
443+ let bG = split(value(bz), ",")
444+ $Tuple2(bG[0], parseIntValue(bG[1]))
445+ }
446+ let bH = cb._1
447+ let bI = cb._2
448+ let cc = {
449+ let cd = split(bH, "_")
450+ $Tuple2(parseIntValue(cd[1]), cd[2])
451+ }
452+ let ce = cc._1
453+ let cf = cc._2
454+ let cg = [DeleteEntry(bh), DeleteEntry(bp)]
455+ let ch = if ((bH == bh))
392456 then {
393- let bK = [ScriptTransfer(aZ, (bb - bl), unit), ScriptTransfer(U, (bl - ag), unit)]
394- (bI ++ bK)
457+ let ci = ad(ae, bI)
458+ let cj = ci._1
459+ let ak = ci._2
460+ let ck = invoke(W, "register", [m, cf, aT], nil)
461+ if ((ck == ck))
462+ then {
463+ let cl = (bx - bI)
464+ let cm = if ((cl > 0))
465+ then [ScriptTransfer(bW, cl, unit)]
466+ else nil
467+ let cn = [ScriptTransfer(Y, (bI - ak), unit)]
468+ ((cj ++ cn) ++ cm)
469+ }
470+ else throw("Strict value is not equal to itself.")
395471 }
396- else throw("Strict value is not equal to itself.")
472+ else [ScriptTransfer(bW, bx, unit)]
473+ ((bY ++ cg) ++ ch)
397474 }
398- else [ScriptTransfer(aZ, bb, unit)]
399- ((bx ++ bF) ++ bG)
475+ else throw("Strict value is not equal to itself.")
400476 }
401477
402- let bL = bu
403- let bM = size(bL)
404- let bN = nil
405- func bO (bP,bQ) = if ((bQ >= bM))
406- then bP
407- else bw(bP, bL[bQ])
478+ let co = bU
479+ let cp = size(co)
480+ let cq = nil
481+ func cr (cs,ct) = if ((ct >= cp))
482+ then cs
483+ else bX(cs, co[ct])
408484
409- func bR (bP,bQ) = if ((bQ >= bM))
410- then bP
485+ func cu (cs,ct) = if ((ct >= cp))
486+ then cs
411487 else throw("List size exceeds 10")
412488
413- bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
489+ cu(cr(cr(cr(cr(cr(cr(cr(cr(cr(cr(cq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
414490 }
415491 else throw("Strict value is not equal to itself.")
416492 }
417493
418494
419495
420-@Callable(ap)
421-func addReferrer (W,bS,bT) = valueOrElse(am([aq(ap), ar(bS), if (if ((bT > 0))
422- then (100 > bT)
496+@Callable(at)
497+func addReferrer (aa,cv,cw) = valueOrElse(aq([au(at), av(cv), if (if ((cw > 0))
498+ then (100 > cw)
423499 else false)
424500 then unit
425- else throw("Percent must be between 0 and 100"), if ((size(W) > 0))
501+ else throw("Percent must be between 0 and 100"), if ((size(aa) > 0))
426502 then unit
427- else throw("Referrer name cannot be empty")]), [StringEntry(y(W), bS), IntegerEntry(z(W), bT)])
503+ else throw("Referrer name cannot be empty")]), [StringEntry(y(aa), cv), IntegerEntry(z(aa), cw)])
428504
429505
430506
431-@Callable(ap)
507+@Callable(at)
432508 func revokeBid (s,t) = {
433- let aZ = ap.caller
434- let bU = toString(aZ)
435- let aa = r(toString(s), bU, t)
436- let aS = u(aa)
437- let aX = getInteger(this, aS)
438- let bV = aD()
439- let aU = bV._1
440- let aV = bV._2
441- if ((aU != s))
442- then throw("Auction is already over")
443- else if ((aV != av))
444- then throw("Bid period is already over")
445- else if (!(isDefined(aX)))
446- then throw((("Bid with " + t) + " not found"))
447- else [ScriptTransfer(aZ, value(aX), unit), DeleteEntry(aS)]
509+ let bW = at.caller
510+ let cx = toString(bW)
511+ let bn = fromBase58String(t)
512+ if ((bn == bn))
513+ then {
514+ let ae = r(toString(s), cx, t)
515+ let bp = u(ae)
516+ let bS = getInteger(this, bp)
517+ let cy = aY()
518+ let br = cy._1
519+ let bs = cy._2
520+ if ((br != s))
521+ then throw("Auction is already over")
522+ else if ((bs != az))
523+ then throw("Bid period is already over")
524+ else if (!(isDefined(bS)))
525+ then throw((("Bid with " + t) + " not found"))
526+ else [ScriptTransfer(bW, value(bS), unit), DeleteEntry(bp)]
527+ }
528+ else throw("Strict value is not equal to itself.")
448529 }
530+
531+
532+
533+@Callable(at)
534+func setNextMinimalLength (s,be) = valueOrElse(aq([au(at)]), {
535+ let cz = getString(this, L)
536+ if (isDefined(cz))
537+ then {
538+ let cA = {
539+ let aN = split(value(cz), ",")
540+ $Tuple2(parseIntValue(aN[0]), parseIntValue(aN[1]))
541+ }
542+ let aO = cA._1
543+ let aP = cA._2
544+[IntegerEntry(I, aP), StringEntry(L, ((toString(s) + ",") + toString(be)))]
545+ }
546+ else [StringEntry(L, ((toString(s) + ",") + toString(be)))]
547+ })
449548
450549

github/deemru/w8io/169f3d6 
112.41 ms