tx · 9nRW1gbRLEhAyztEGAEh3EA3EFvarUzAiV5NSqxZa4tE

3NBPnEADc6KRTGyLYu277UVBVpATKuLStoo:  -0.03800000 Waves

2022.11.07 02:38 [2305940] smart account 3NBPnEADc6KRTGyLYu277UVBVpATKuLStoo > SELF 0.00000000 Waves

{ "type": 13, "id": "9nRW1gbRLEhAyztEGAEh3EA3EFvarUzAiV5NSqxZa4tE", "fee": 3800000, "feeAssetId": null, "timestamp": 1667777938915, "version": 2, "chainId": 84, "sender": "3NBPnEADc6KRTGyLYu277UVBVpATKuLStoo", "senderPublicKey": "aYCXwWE5HwK514PYuUxDBtXjyL3M32iEF6ria6Uh1iV", "proofs": [ "zeipwu4suJD7XnZo1p2RdNKyX28UEEMtJDZmUnS9n2iNPAMbX9hfxtp1mAn21xoaAWkgkbEXKN6XRZwVg9amEqb" ], "script": "base64:BgJWCAISAwoBCBIDCgEIEgMKAQgSBQoDCAEBEgUKAwEIERIFCgMBCBESBgoEAQgBERIDCgEIEgASFwoVCAgIAQEBARgICAgICAgIGBgYGBgYEgQKAggIEgANABRuZnRfY3JlYXRpb25fYWRkcmVzcwkBB0FkZHJlc3MBARoBVNfUIRkzMMsUuy4VRRry35ft/Ha30v/0nQAVcHJpY2VfaW5jcmVhc2VfcGVyaW9kAAoAD21pbnRfY29sbGVjdGlvbgISQ2xlZiBnZW5lc2lzIHNvbmdzABBtaW50X2Rlc2NyaXB0aW9uAmRHZW5lc2lzIENsZWYgc29uZy4gVGhpcyBtZWxvZHkgaXMgY3JhZnRlZCB0byBiZWNvbWUgeW91ciBlbGVjdHJvbmljIGphbS4gVXNlIGl0IG9uIGNsZWYub25lIPCfkprwn6SNABFoeWJyaWRfY29sbGVjdGlvbgIKQ2xlZiBtaXhlcwASaHlicmlkX2Rlc2NyaXB0aW9uAldDbGVmIG1peC4gVGhpcyBtZWxvZHkgd2FzIGNyZWF0ZWQgYnkgYW4gYWxnb3JpdGhtLiBFbmpveSB0aGlzIGphbSBvciB1c2UgaXQgb24gY2xlZi5vbmUBBnRvX2tleQEBbgkA2AQBCQCaAwEFAW4BDHVuaXF1ZV9ieXRlcwEBaQkAywECCQDLAQIJAMsBAgkAywECCAUBaQ10cmFuc2FjdGlvbklkCAUBaQ9jYWxsZXJQdWJsaWNLZXkIBQlsYXN0QmxvY2sTZ2VuZXJhdGlvblNpZ25hdHVyZQkAmgMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAmgMBCAUJbGFzdEJsb2NrBmhlaWdodAELcmFuZG9tX3VpbnQCBWJ5dGVzBW5vbmNlBAFuCQCxCQEJANQWAQkAywECBQVieXRlcwkAmgMBBQVub25jZQMJAGYCAAAFAW4JAQEtAQUBbgUBbgEIcGlja19vbmUEBWtleV8wBWtleV8xCHJhbmRfaW50CWJpdF9wb3dlcgMJAAACCQBqAgkAaQIFCHJhbmRfaW50BQliaXRfcG93ZXIAAgAABQVrZXlfMAUFa2V5XzEBF2h5YnJpZF9jYWxjdWxhdGVfY2hhbmdlAwFpBXRva2VuBmFtb3VudAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQD///////////8BBAFwCQCRAwIIBQFpCHBheW1lbnRzAAAEB3BfdG9rZW4EByRtYXRjaDAIBQFwB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJANgEAQUCaWQCAAMJAQIhPQIFB3BfdG9rZW4FBXRva2VuAP///////////wEJAGUCCAUBcAZhbW91bnQFBmFtb3VudAEObWFrZV9oeWJyaWRfdHgDAWkGc29uZ18wBnNvbmdfMQQBbgQHJG1hdGNoMAkAnwgBAgVjb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQKbmFtZV9zaG9ydAkArwICCQCsAgICBUNsZWYgCQCkAwEFAW4AEAQLZGVzY3JpcHRpb24FEmh5YnJpZF9kZXNjcmlwdGlvbgQKY29sbGVjdGlvbgURaHlicmlkX2NvbGxlY3Rpb24EAmlkBAckbWF0Y2gwCQD8BwQFFG5mdF9jcmVhdGlvbl9hZGRyZXNzAgljcmVhdGVORlQJAMwIAgUKbmFtZV9zaG9ydAkAzAgCBQtkZXNjcmlwdGlvbgkAzAgCCQERQGV4dHJOYXRpdmUoMTA1OCkBAhFtYXJrZXRfaW1hZ2VfbGluawkAzAgCBQpjb2xsZWN0aW9uBQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgJAAIBAhNORlQgY3JlYXRpb24gZmFpbGVkAwkAAAIFAmlkBQJpZAQEaWRfYgkA2QQBBQJpZAQDa2V5CQEGdG9fa2V5AQUBbgQFYnl0ZXMJAQx1bmlxdWVfYnl0ZXMBBQFpBAZyYW5kXzAJAQtyYW5kb21fdWludAIFBWJ5dGVzAAAEBnJhbmRfMQkBC3JhbmRvbV91aW50AgUFYnl0ZXMAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgIFY291bnQJAGQCBQFuAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgUCaWQFA2tleQkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFAmlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQICX0cJAGQCCQCWAwEJAMwIAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICBQZzb25nXzACAl9HCQDMCAIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAKwCAgUGc29uZ18xAgJfRwUDbmlsAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19TTAIACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIDX1NOBQZyYW5kXzAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TUDAFBnNvbmdfMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NQMQUGc29uZ18xCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIEX1NCMAkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAAECBF9TQjAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfU0IxCQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAAgIEX1NCMQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9TQjIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMAAEAgRfU0IyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIDX1NUCQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAACAIDX1NUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAEAIEX1NDMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDMQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wACACBF9TQzEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMABAAgRfU0MyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgAECBF9TQzMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACABAIEX1NDNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDNQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAIAIAgRfU0M1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M2CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgBACBF9TQzYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAIAIEX1NDNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIDX1NBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgEACA19TQQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAAQIEX1NJMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAAgIEX1NJMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICABAIEX1NJMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICACAIEX1NJMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJNAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAEAIEX1NJNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJNQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAIAIEX1NJNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgEACBV9TSTUwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1MQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgAECBV9TSTUxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1MgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgAICBV9TSTUyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1MwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgAQCBV9TSTUzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1NAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgAgCBV9TSTU0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1NQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgBACBV9TSTU1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1NgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgCACBV9TSTU2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1NwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgEACBV9TSTU3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwMAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgIABAgVfU0kwMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgICAAgIFX1NJMDEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAgAQCBV9TSTAyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwMwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgIAIAgVfU0kwMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgICAEAIFX1NJMDQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTA1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAgCACBV9TSTA1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAAECBV9TSTA2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAAICBV9TSTA3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxMAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAAQCBV9TSTEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxMQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAAgCBV9TSTExCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxMgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xABACBV9TSTEyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxMwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xACACBV9TSTEzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAEACBV9TSTE0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAIABAgVfU0kxNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAAgIFX1NJMTYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTE3CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgAQCBV9TSTE3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyMAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAIAIAgVfU0kyMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAEAIFX1NJMjEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgCACBV9TSTIyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyMwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAIBAAgVfU0kyMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgAECBV9TSTI0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyNQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAAgIFX1NJMjUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTI2CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgIAEAgVfU0kyNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgAgCBV9TSTI3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAEAIFX1NJMzAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTMxCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgIAgAgVfU0kzMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgEACBV9TSTMyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgAECBV9TSTMzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzNAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgAICBV9TSTM0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzNQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgAQCBV9TSTM1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzNgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgAgCBV9TSTM2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzNwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgBACBV9TSTM3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0MAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgCACBV9TSTQwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0MQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgEACBV9TSTQxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0MgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgIABAgVfU0k0MgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgICAAgIFX1NJNDMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQ0CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAgAQCBV9TSTQ0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgIAIAgVfU0k0NQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgICAEAIFX1NJNDYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQ3CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAgCACBV9TSTQ3CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwABBQRpZF9iBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BD2NoZWNrX3doaXRlbGlzdAEGY2FsbGVyAwkAAAIFBHRoaXMFBmNhbGxlcgYEByRtYXRjaDAJAKAIAQkArAICAgJXXwkA2AQBCAUGY2FsbGVyBWJ5dGVzAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHDAFpAQ13aGl0ZWxpc3RfYWRkAQR1c2VyAwkBAiE9AgUEdGhpcwgFAWkGY2FsbGVyCQACAQIYQ2FsbGVyIGlzIG5vdCBkQXBwIG93bmVyCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgICV18FBHVzZXIGBQNuaWwFBHVuaXQBaQEQd2hpdGVsaXN0X3JlbW92ZQEEdXNlcgMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAAgECGENhbGxlciBpcyBub3QgZEFwcCBvd25lcgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgICV18FBHVzZXIFA25pbAUEdW5pdAFpARBzZXRfbWFya2V0X2ltYWdlAQN1cmwDCQEBIQEJAQ9jaGVja193aGl0ZWxpc3QBCAUBaQZjYWxsZXIJAAIBAhdDYWxsZXIgbm90IGluIHdoaXRlbGlzdAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQICEW1hcmtldF9pbWFnZV9saW5rBQN1cmwFA25pbAUEdW5pdAFpARBzZXRfcHJpY2VfaHlicmlkAwV0b2tlbgZhbW91bnQJaW5jcmVtZW50AwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCAhJwcmljZV9oeWJyaWRfdG9rZW4FBXRva2VuCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhNwcmljZV9oeWJyaWRfYW1vdW50BQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICFnByaWNlX2h5YnJpZF9pbmNyZW1lbnQFCWluY3JlbWVudAUDbmlsBQR1bml0AWkBCm1pbnRfY2hvcmQDBWluZGV4BG5hbWUFbm90ZXMDCQEBIQEJAQ9jaGVja193aGl0ZWxpc3QBCAUBaQZjYWxsZXIJAAIBAhdDYWxsZXIgbm90IGluIHdoaXRlbGlzdAMJAQIhPQIJAJADAQUFbm90ZXMABQkAAgECEFdyb25nIG5vdGVzIHNpemUEAW4EByRtYXRjaDAJAJ8IAQIFY291bnQDCQABAgUHJG1hdGNoMAIDSW50BAFqBQckbWF0Y2gwBQFqAAAEA2tleQkBBnRvX2tleQEFBWluZGV4CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQICBWNvdW50CQCWAwEJAMwIAgkAZAIFBWluZGV4AAEJAMwIAgUBbgUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfQ0wFBG5hbWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfQzAJAJEDAgUFbm90ZXMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19DMQkAkQMCBQVub3RlcwABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIDX0MyCQCRAwIFBW5vdGVzAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfQzMJAJEDAgUFbm90ZXMAAwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19DNAkAkQMCBQVub3RlcwAEBQNuaWwFBHVuaXQBaQENbWludF9hcnBlZ2dpbwMFaW5kZXgEbmFtZQVub3RlcwMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0AwkBAiE9AgkAkAMBBQVub3RlcwAQCQACAQIQV3Jvbmcgbm90ZXMgc2l6ZQQBbgQHJG1hdGNoMAkAnwgBAgVjb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQDa2V5CQEGdG9fa2V5AQUFaW5kZXgJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgIFY291bnQJAJYDAQkAzAgCCQBkAgUFaW5kZXgAAQkAzAgCBQFuBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19BTAUEbmFtZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDAJAJEDAgUFbm90ZXMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDEJAJEDAgUFbm90ZXMAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDIJAJEDAgUFbm90ZXMAAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDMJAJEDAgUFbm90ZXMAAwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDQJAJEDAgUFbm90ZXMABAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDUJAJEDAgUFbm90ZXMABQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDYJAJEDAgUFbm90ZXMABgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDcJAJEDAgUFbm90ZXMABwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDgJAJEDAgUFbm90ZXMACAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMDkJAJEDAgUFbm90ZXMACQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMTAJAJEDAgUFbm90ZXMACgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMTEJAJEDAgUFbm90ZXMACwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMTIJAJEDAgUFbm90ZXMADAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMTMJAJEDAgUFbm90ZXMADQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMTQJAJEDAgUFbm90ZXMADgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9BMTUJAJEDAgUFbm90ZXMADwUDbmlsBQR1bml0AWkBC21pbnRfcmh5dGhtBAVpbmRleARuYW1lBXNjYWxlBW5vdGVzAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QDCQECIT0CCQCQAwEFBW5vdGVzABAJAAIBAhBXcm9uZyBub3RlcyBzaXplBAFuBAckbWF0Y2gwCQCfCAECBWNvdW50AwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAABANrZXkJAQZ0b19rZXkBBQVpbmRleAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVjb3VudAkAlgMBCQDMCAIJAGQCBQVpbmRleAABCQDMCAIFAW4FA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIDX1JMBQRuYW1lCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIDX1JTBQVzY2FsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDAJAJEDAgUFbm90ZXMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDEJAJEDAgUFbm90ZXMAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDIJAJEDAgUFbm90ZXMAAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDMJAJEDAgUFbm90ZXMAAwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDQJAJEDAgUFbm90ZXMABAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDUJAJEDAgUFbm90ZXMABQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDYJAJEDAgUFbm90ZXMABgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDcJAJEDAgUFbm90ZXMABwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDgJAJEDAgUFbm90ZXMACAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMDkJAJEDAgUFbm90ZXMACQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMTAJAJEDAgUFbm90ZXMACgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMTEJAJEDAgUFbm90ZXMACwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMTIJAJEDAgUFbm90ZXMADAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMTMJAJEDAgUFbm90ZXMADQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMTQJAJEDAgUFbm90ZXMADgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9SMTUJAJEDAgUFbm90ZXMADwUDbmlsBQR1bml0AWkBDWJ1cm5faW50ZXJuYWwBCGFzc2V0X2lkAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QEBWJ1cm4wCQD8BwQFFG5mdF9jcmVhdGlvbl9hZGRyZXNzAgdidXJuTkZUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUIYXNzZXRfaWQAAQUDbmlsAwkAAAIFBWJ1cm4wBQVidXJuMAkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEYnVybgADCQEBIQEJAQ9jaGVja193aGl0ZWxpc3QBCAUBaQZjYWxsZXIJAAIBAhdDYWxsZXIgbm90IGluIHdoaXRlbGlzdAQFYnVybjAJAPwHBAUUbmZ0X2NyZWF0aW9uX2FkZHJlc3MCB2J1cm5ORlQFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAACBQVidXJuMAUFYnVybjAJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCW1pbnRfc29uZxUEbmFtZQhwYXJlbnRfMAhwYXJlbnRfMQNicG0IYmFyX3NpemUJYmVhdF9zaXplCHRvbmFsaXR5BmNob3JkcwhhcnBlZ2dpbw9raWNrX2luc3RydW1lbnQQc25hcmVfaW5zdHJ1bWVudBBoaWhhdF9pbnN0cnVtZW50D2Jhc3NfaW5zdHJ1bWVudA9iYWNrX2luc3RydW1lbnQPbGVhZF9pbnN0cnVtZW50DGtpY2tfcmh5dGhtcw1zbmFyZV9yaHl0aG1zDWhpaGF0X3JoeXRobXMMYmFzc19yaHl0aG1zDGJhY2tfcmh5dGhtcwxsZWFkX3JoeXRobXMDCQEBIQEJAQ9jaGVja193aGl0ZWxpc3QBCAUBaQZjYWxsZXIJAAIBAhdDYWxsZXIgbm90IGluIHdoaXRlbGlzdAMJAQIhPQIJAJADAQUGY2hvcmRzAAgJAAIBAhFXcm9uZyBjaG9yZHMgc2l6ZQMJAQIhPQIJAJADAQUMa2lja19yaHl0aG1zAAgJAAIBAhdXcm9uZyBraWNrIHJoeXRobXMgc2l6ZQMJAQIhPQIJAJADAQUNc25hcmVfcmh5dGhtcwAICQACAQIYV3Jvbmcgc25hcmUgcmh5dGhtcyBzaXplAwkBAiE9AgkAkAMBBQ1oaWhhdF9yaHl0aG1zAAgJAAIBAhhXcm9uZyBoaWhhdCByaHl0aG1zIHNpemUDCQECIT0CCQCQAwEFDGJhc3Nfcmh5dGhtcwAICQACAQIXV3JvbmcgYmFzcyByaHl0aG1zIHNpemUDCQECIT0CCQCQAwEFDGJhY2tfcmh5dGhtcwAICQACAQIXV3JvbmcgYmFjayByaHl0aG1zIHNpemUDCQECIT0CCQCQAwEFDGxlYWRfcmh5dGhtcwAICQACAQIXV3JvbmcgbGVhZCByaHl0aG1zIHNpemUEAW4EByRtYXRjaDAJAJ8IAQIFY291bnQDCQABAgUHJG1hdGNoMAIDSW50BAFqBQckbWF0Y2gwBQFqAAAECm5hbWVfc2hvcnQJAK8CAgUEbmFtZQAQBAtkZXNjcmlwdGlvbgUQbWludF9kZXNjcmlwdGlvbgQKY29sbGVjdGlvbgUPbWludF9jb2xsZWN0aW9uBAJpZAQHJG1hdGNoMAkA/AcEBRRuZnRfY3JlYXRpb25fYWRkcmVzcwIJY3JlYXRlTkZUCQDMCAIFCm5hbWVfc2hvcnQJAMwIAgULZGVzY3JpcHRpb24JAMwIAgkBEUBleHRyTmF0aXZlKDEwNTgpAQIRbWFya2V0X2ltYWdlX2xpbmsJAMwIAgUKY29sbGVjdGlvbgUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAF4BQckbWF0Y2gwBQF4CQACAQITTkZUIGNyZWF0aW9uIGZhaWxlZAMJAAACBQJpZAUCaWQEA2tleQkBBnRvX2tleQEFAW4EC3R4X3RyYW5zZmVyAwkBAiE9AgUEdGhpcwgFAWkGY2FsbGVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwABCQDZBAEFAmlkBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQICBWNvdW50CQBkAgUBbgABCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmlkBQNrZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQJpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCAl9HAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19TTAUEbmFtZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19TTgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU1AwBQhwYXJlbnRfMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NQMQUIcGFyZW50XzEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfU0IwBQNicG0JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfU0IxBQhiYXJfc2l6ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9TQjIFCWJlYXRfc2l6ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19TVAUIdG9uYWxpdHkJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzAJAJEDAgUGY2hvcmRzAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzEJAJEDAgUGY2hvcmRzAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzIJAJEDAgUGY2hvcmRzAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzMJAJEDAgUGY2hvcmRzAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzQJAJEDAgUGY2hvcmRzAAQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzUJAJEDAgUGY2hvcmRzAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzYJAJEDAgUGY2hvcmRzAAYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzcJAJEDAgUGY2hvcmRzAAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19TQQUIYXJwZWdnaW8JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTAFD2tpY2tfaW5zdHJ1bWVudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMQUQc25hcmVfaW5zdHJ1bWVudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMgUQaGloYXRfaW5zdHJ1bWVudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMwUPYmFzc19pbnN0cnVtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0k0BQ9iYWNrX2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTUFD2xlYWRfaW5zdHJ1bWVudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDAJAJEDAgUMa2lja19yaHl0aG1zAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAxCQCRAwIFDGtpY2tfcmh5dGhtcwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwMgkAkQMCBQxraWNrX3JoeXRobXMAAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDMJAJEDAgUMa2lja19yaHl0aG1zAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTA0CQCRAwIFDGtpY2tfcmh5dGhtcwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNQkAkQMCBQxraWNrX3JoeXRobXMABQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDYJAJEDAgUMa2lja19yaHl0aG1zAAYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTA3CQCRAwIFDGtpY2tfcmh5dGhtcwAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxMAkAkQMCBQ1zbmFyZV9yaHl0aG1zAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTExCQCRAwIFDXNuYXJlX3JoeXRobXMAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTIJAJEDAgUNc25hcmVfcmh5dGhtcwACCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxMwkAkQMCBQ1zbmFyZV9yaHl0aG1zAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTE0CQCRAwIFDXNuYXJlX3JoeXRobXMABAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTUJAJEDAgUNc25hcmVfcmh5dGhtcwAFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNgkAkQMCBQ1zbmFyZV9yaHl0aG1zAAYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTE3CQCRAwIFDXNuYXJlX3JoeXRobXMABwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjAJAJEDAgUNaGloYXRfcmh5dGhtcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyMQkAkQMCBQ1oaWhhdF9yaHl0aG1zAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIyCQCRAwIFDWhpaGF0X3JoeXRobXMAAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjMJAJEDAgUNaGloYXRfcmh5dGhtcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyNAkAkQMCBQ1oaWhhdF9yaHl0aG1zAAQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTI1CQCRAwIFDWhpaGF0X3JoeXRobXMABQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjYJAJEDAgUNaGloYXRfcmh5dGhtcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyNwkAkQMCBQ1oaWhhdF9yaHl0aG1zAAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTMwCQCRAwIFDGJhc3Nfcmh5dGhtcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMQkAkQMCBQxiYXNzX3JoeXRobXMAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzIJAJEDAgUMYmFzc19yaHl0aG1zAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTMzCQCRAwIFDGJhc3Nfcmh5dGhtcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzNAkAkQMCBQxiYXNzX3JoeXRobXMABAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzUJAJEDAgUMYmFzc19yaHl0aG1zAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTM2CQCRAwIFDGJhc3Nfcmh5dGhtcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzNwkAkQMCBQxiYXNzX3JoeXRobXMABwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDAJAJEDAgUMYmFja19yaHl0aG1zAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQxCQCRAwIFDGJhY2tfcmh5dGhtcwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0MgkAkQMCBQxiYWNrX3JoeXRobXMAAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDMJAJEDAgUMYmFja19yaHl0aG1zAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQ0CQCRAwIFDGJhY2tfcmh5dGhtcwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NQkAkQMCBQxiYWNrX3JoeXRobXMABQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDYJAJEDAgUMYmFja19yaHl0aG1zAAYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQ3CQCRAwIFDGJhY2tfcmh5dGhtcwAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1MAkAkQMCBQxsZWFkX3JoeXRobXMAAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTEJAJEDAgUMbGVhZF9yaHl0aG1zAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTUyCQCRAwIFDGxlYWRfcmh5dGhtcwACCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1MwkAkQMCBQxsZWFkX3JoeXRobXMAAwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTQJAJEDAgUMbGVhZF9yaHl0aG1zAAQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU1CQCRAwIFDGxlYWRfcmh5dGhtcwAFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1NgkAkQMCBQxsZWFkX3JoeXRobXMABgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTcJAJEDAgUMbGVhZF9yaHl0aG1zAAcFA25pbAULdHhfdHJhbnNmZXIFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELbWludF9oeWJyaWQCBnNvbmdfMAZzb25nXzEEC2NhbGxlcl9hZGRyCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMECXNvbmdfMF9pZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1OCkBBQZzb25nXzAECXNvbmdfMV9pZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1OCkBBQZzb25nXzEEDHByaWNlX2Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQITcHJpY2VfaHlicmlkX2Ftb3VudAQLcHJpY2VfdG9rZW4JARFAZXh0ck5hdGl2ZSgxMDU4KQECEnByaWNlX2h5YnJpZF90b2tlbgQMcHJpY2VfY2hhbmdlCQEXaHlicmlkX2NhbGN1bGF0ZV9jaGFuZ2UDBQFpBQtwcmljZV90b2tlbgUMcHJpY2VfYW1vdW50AwkAZgIAAAUMcHJpY2VfY2hhbmdlCQACAQINV3JvbmcgcGF5bWVudAMJAAACBQlzb25nXzBfaWQFCXNvbmdfMV9pZAkAAgECGVNvbmdzIHNob3VsZCBiZSBkaWZmZXJlbnQDCQBmAgABCQDwBwIFC2NhbGxlcl9hZGRyBQlzb25nXzBfaWQJAAIBAhxDYWxsZXIgZG8gbm90IG93biBmaXJzdCBzb25nAwkAZgIAAQkA8AcCBQtjYWxsZXJfYWRkcgUJc29uZ18xX2lkCQACAQIdQ2FsbGVyIGRvIG5vdCBvd24gc2Vjb25kIHNvbmcECm1pbnRfY291bnQEByRtYXRjaDAJAJ8IAQIKbWludF9jb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQPcHJpY2VfY291bnRfaW5jCQEMSW50ZWdlckVudHJ5AgIKbWludF9jb3VudAkAZAIFCm1pbnRfY291bnQAAQQOcHJpY2VfaW5jcmVhc2UDCQAAAgkAagIFCm1pbnRfY291bnQFFXByaWNlX2luY3JlYXNlX3BlcmlvZAkAZQIFFXByaWNlX2luY3JlYXNlX3BlcmlvZAABCQDMCAIFD3ByaWNlX2NvdW50X2luYwkAzAgCCQEMSW50ZWdlckVudHJ5AgITcHJpY2VfaHlicmlkX2Ftb3VudAkAZAIFDHByaWNlX2Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQIWcHJpY2VfaHlicmlkX2luY3JlbWVudAUDbmlsCQDMCAIFD3ByaWNlX2NvdW50X2luYwUDbmlsAwkAZgIFDHByaWNlX2NoYW5nZQAACQCUCgIJAM4IAgkAzggCCQEObWFrZV9oeWJyaWRfdHgDBQFpBQZzb25nXzAFBnNvbmdfMQUOcHJpY2VfaW5jcmVhc2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzBQxwcmljZV9jaGFuZ2UDCQAAAgULcHJpY2VfdG9rZW4CAAUEdW5pdAkA2QQBBQtwcmljZV90b2tlbgUDbmlsBQR1bml0CQCUCgIJAM4IAgkBDm1ha2VfaHlicmlkX3R4AwUBaQUGc29uZ18wBQZzb25nXzEFDnByaWNlX2luY3JlYXNlBQR1bml0AWkBFG1pbnRfaHlicmlkX2FuZF9idXJuAAMDAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACBgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50AAEJAAIBAg1Xcm9uZyBwYXltZW50BAlzb25nXzBfaWQEByRtYXRjaDAICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwBQFiCQACAQINV3JvbmcgcGF5bWVudAQJc29uZ18xX2lkBAckbWF0Y2gwCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAUBYgkAAgECDVdyb25nIHBheW1lbnQDCQAAAgUJc29uZ18wX2lkBQlzb25nXzFfaWQJAAIBAhlTb25ncyBzaG91bGQgYmUgZGlmZmVyZW50BAZzb25nXzAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJANgEAQUJc29uZ18wX2lkBAZzb25nXzEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJANgEAQUJc29uZ18xX2lkBAVidXJuMAkA/AcEBRRuZnRfY3JlYXRpb25fYWRkcmVzcwIHYnVybk5GVAUDbmlsCQDMCAIJAJEDAggFAWkIcGF5bWVudHMAAAUDbmlsAwkAAAIFBWJ1cm4wBQVidXJuMAQFYnVybjEJAPwHBAUUbmZ0X2NyZWF0aW9uX2FkZHJlc3MCB2J1cm5ORlQFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAEFA25pbAMJAAACBQVidXJuMQUFYnVybjEJAJQKAgkBDm1ha2VfaHlicmlkX3R4AwUBaQUGc29uZ18wBQZzb25nXzEFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AEaJS2Q==", "height": 2305940, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FTu3oLFd66Wc2PFPbvJXRRwGJY3c3qwXhJuNQJpGYy62 Next: FHCbrQ9aFy2exrNF76P2XbdFFCAniBt5XCACDP9sQyte Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let nft_creation_address = Address(base58'3MvjjKrBojVDj5tKCNS7mvtk3BjNd9PMJia')
4+let nft_creation_address = Address(base58'3N9bHBAZKai5SwrywMPLQpKmNePRQiHhW9S')
55
66 let price_increase_period = 10
7+
8+let mint_collection = "Clef genesis songs"
9+
10+let mint_description = "Genesis Clef song. This melody is crafted to become your electronic jam. Use it on clef.one 💚🤍"
11+
12+let hybrid_collection = "Clef mixes"
13+
14+let hybrid_description = "Clef mix. This melody was created by an algorithm. Enjoy this jam or use it on clef.one"
715
816 func to_key (n) = toBase58String(toBytes(n))
917
4856 0
4957 }
5058 let name_short = take(("Clef " + toString(n)), 16)
51- let description = "Clef song"
52- let collection = ""
59+ let description = hybrid_description
60+ let collection = hybrid_collection
5361 let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
5462 case x: String =>
5563 x
162170
163171
164172 @Callable(i)
173+func burn_internal (asset_id) = if (!(check_whitelist(i.caller)))
174+ then throw("Caller not in whitelist")
175+ else {
176+ let burn0 = invoke(nft_creation_address, "burnNFT", nil, [AttachedPayment(fromBase58String(asset_id), 1)])
177+ if ((burn0 == burn0))
178+ then $Tuple2(nil, unit)
179+ else throw("Strict value is not equal to itself.")
180+ }
181+
182+
183+
184+@Callable(i)
185+func burn () = if (!(check_whitelist(i.caller)))
186+ then throw("Caller not in whitelist")
187+ else {
188+ let burn0 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[0]])
189+ if ((burn0 == burn0))
190+ then $Tuple2(nil, unit)
191+ else throw("Strict value is not equal to itself.")
192+ }
193+
194+
195+
196+@Callable(i)
165197 func mint_song (name,parent_0,parent_1,bpm,bar_size,beat_size,tonality,chords,arpeggio,kick_instrument,snare_instrument,hihat_instrument,bass_instrument,back_instrument,lead_instrument,kick_rhythms,snare_rhythms,hihat_rhythms,bass_rhythms,back_rhythms,lead_rhythms) = if (!(check_whitelist(i.caller)))
166198 then throw("Caller not in whitelist")
167199 else if ((size(chords) != 8))
186218 0
187219 }
188220 let name_short = take(name, 16)
189- let description = "Clef song"
190- let collection = ""
221+ let description = mint_description
222+ let collection = mint_collection
191223 let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
192224 case x: String =>
193225 x
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let nft_creation_address = Address(base58'3MvjjKrBojVDj5tKCNS7mvtk3BjNd9PMJia')
4+let nft_creation_address = Address(base58'3N9bHBAZKai5SwrywMPLQpKmNePRQiHhW9S')
55
66 let price_increase_period = 10
7+
8+let mint_collection = "Clef genesis songs"
9+
10+let mint_description = "Genesis Clef song. This melody is crafted to become your electronic jam. Use it on clef.one 💚🤍"
11+
12+let hybrid_collection = "Clef mixes"
13+
14+let hybrid_description = "Clef mix. This melody was created by an algorithm. Enjoy this jam or use it on clef.one"
715
816 func to_key (n) = toBase58String(toBytes(n))
917
1018
1119 func unique_bytes (i) = ((((i.transactionId + i.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
1220
1321
1422 func random_uint (bytes,nonce) = {
1523 let n = toInt(sha256_16Kb((bytes + toBytes(nonce))))
1624 if ((0 > n))
1725 then -(n)
1826 else n
1927 }
2028
2129
2230 func pick_one (key_0,key_1,rand_int,bit_power) = if ((((rand_int / bit_power) % 2) == 0))
2331 then key_0
2432 else key_1
2533
2634
2735 func hybrid_calculate_change (i,token,amount) = if ((size(i.payments) != 1))
2836 then -1
2937 else {
3038 let p = i.payments[0]
3139 let p_token = match p.assetId {
3240 case id: ByteVector =>
3341 toBase58String(id)
3442 case _ =>
3543 ""
3644 }
3745 if ((p_token != token))
3846 then -1
3947 else (p.amount - amount)
4048 }
4149
4250
4351 func make_hybrid_tx (i,song_0,song_1) = {
4452 let n = match getInteger("count") {
4553 case j: Int =>
4654 j
4755 case _ =>
4856 0
4957 }
5058 let name_short = take(("Clef " + toString(n)), 16)
51- let description = "Clef song"
52- let collection = ""
59+ let description = hybrid_description
60+ let collection = hybrid_collection
5361 let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
5462 case x: String =>
5563 x
5664 case _ =>
5765 throw("NFT creation failed")
5866 }
5967 if ((id == id))
6068 then {
6169 let id_b = fromBase58String(id)
6270 let key = to_key(n)
6371 let bytes = unique_bytes(i)
6472 let rand_0 = random_uint(bytes, 0)
6573 let rand_1 = random_uint(bytes, 1)
6674 [IntegerEntry("count", (n + 1)), StringEntry(id, key), StringEntry(key, id), IntegerEntry((key + "_G"), (max([getIntegerValue((song_0 + "_G")), getIntegerValue((song_1 + "_G"))]) + 1)), StringEntry((key + "_SL"), ""), IntegerEntry((key + "_SN"), rand_0), StringEntry((key + "_SP0"), song_0), StringEntry((key + "_SP1"), song_1), IntegerEntry((key + "_SB0"), getIntegerValue((pick_one(song_0, song_1, rand_0, 1) + "_SB0"))), IntegerEntry((key + "_SB1"), getIntegerValue((pick_one(song_0, song_1, rand_0, 2) + "_SB1"))), IntegerEntry((key + "_SB2"), getIntegerValue((pick_one(song_0, song_1, rand_0, 4) + "_SB2"))), IntegerEntry((key + "_ST"), getIntegerValue((pick_one(song_0, song_1, rand_0, 8) + "_ST"))), StringEntry((key + "_SC0"), getStringValue((pick_one(song_0, song_1, rand_0, 16) + "_SC0"))), StringEntry((key + "_SC1"), getStringValue((pick_one(song_0, song_1, rand_0, 32) + "_SC1"))), StringEntry((key + "_SC2"), getStringValue((pick_one(song_0, song_1, rand_0, 64) + "_SC2"))), StringEntry((key + "_SC3"), getStringValue((pick_one(song_0, song_1, rand_0, 128) + "_SC3"))), StringEntry((key + "_SC4"), getStringValue((pick_one(song_0, song_1, rand_0, 512) + "_SC4"))), StringEntry((key + "_SC5"), getStringValue((pick_one(song_0, song_1, rand_0, 1024) + "_SC5"))), StringEntry((key + "_SC6"), getStringValue((pick_one(song_0, song_1, rand_0, 2048) + "_SC6"))), StringEntry((key + "_SC7"), getStringValue((pick_one(song_0, song_1, rand_0, 4096) + "_SC7"))), StringEntry((key + "_SA"), getStringValue((pick_one(song_0, song_1, rand_0, 8192) + "_SA"))), StringEntry((key + "_SI0"), getStringValue((pick_one(song_0, song_1, rand_0, 16384) + "_SI0"))), StringEntry((key + "_SI1"), getStringValue((pick_one(song_0, song_1, rand_0, 32768) + "_SI1"))), StringEntry((key + "_SI2"), getStringValue((pick_one(song_0, song_1, rand_0, 65536) + "_SI2"))), StringEntry((key + "_SI3"), getStringValue((pick_one(song_0, song_1, rand_0, 131072) + "_SI3"))), StringEntry((key + "_SI4"), getStringValue((pick_one(song_0, song_1, rand_0, 262144) + "_SI4"))), StringEntry((key + "_SI5"), getStringValue((pick_one(song_0, song_1, rand_0, 524288) + "_SI5"))), StringEntry((key + "_SI50"), getStringValue((pick_one(song_0, song_1, rand_0, 1048576) + "_SI50"))), StringEntry((key + "_SI51"), getStringValue((pick_one(song_0, song_1, rand_0, 2097152) + "_SI51"))), StringEntry((key + "_SI52"), getStringValue((pick_one(song_0, song_1, rand_0, 4194304) + "_SI52"))), StringEntry((key + "_SI53"), getStringValue((pick_one(song_0, song_1, rand_0, 8388608) + "_SI53"))), StringEntry((key + "_SI54"), getStringValue((pick_one(song_0, song_1, rand_0, 16777216) + "_SI54"))), StringEntry((key + "_SI55"), getStringValue((pick_one(song_0, song_1, rand_0, 33554432) + "_SI55"))), StringEntry((key + "_SI56"), getStringValue((pick_one(song_0, song_1, rand_0, 67108864) + "_SI56"))), StringEntry((key + "_SI57"), getStringValue((pick_one(song_0, song_1, rand_0, 134217728) + "_SI57"))), StringEntry((key + "_SI00"), getStringValue((pick_one(song_0, song_1, rand_0, 268435456) + "_SI00"))), StringEntry((key + "_SI01"), getStringValue((pick_one(song_0, song_1, rand_0, 536870912) + "_SI01"))), StringEntry((key + "_SI02"), getStringValue((pick_one(song_0, song_1, rand_0, 1073741824) + "_SI02"))), StringEntry((key + "_SI03"), getStringValue((pick_one(song_0, song_1, rand_0, 2147483648) + "_SI03"))), StringEntry((key + "_SI04"), getStringValue((pick_one(song_0, song_1, rand_0, 4294967296) + "_SI04"))), StringEntry((key + "_SI05"), getStringValue((pick_one(song_0, song_1, rand_0, 8589934592) + "_SI05"))), StringEntry((key + "_SI06"), getStringValue((pick_one(song_0, song_1, rand_1, 1) + "_SI06"))), StringEntry((key + "_SI07"), getStringValue((pick_one(song_0, song_1, rand_1, 2) + "_SI07"))), StringEntry((key + "_SI10"), getStringValue((pick_one(song_0, song_1, rand_1, 4) + "_SI10"))), StringEntry((key + "_SI11"), getStringValue((pick_one(song_0, song_1, rand_1, 8) + "_SI11"))), StringEntry((key + "_SI12"), getStringValue((pick_one(song_0, song_1, rand_1, 16) + "_SI12"))), StringEntry((key + "_SI13"), getStringValue((pick_one(song_0, song_1, rand_1, 32) + "_SI13"))), StringEntry((key + "_SI14"), getStringValue((pick_one(song_0, song_1, rand_1, 64) + "_SI14"))), StringEntry((key + "_SI15"), getStringValue((pick_one(song_0, song_1, rand_1, 128) + "_SI15"))), StringEntry((key + "_SI16"), getStringValue((pick_one(song_0, song_1, rand_1, 256) + "_SI16"))), StringEntry((key + "_SI17"), getStringValue((pick_one(song_0, song_1, rand_1, 512) + "_SI17"))), StringEntry((key + "_SI20"), getStringValue((pick_one(song_0, song_1, rand_1, 1024) + "_SI20"))), StringEntry((key + "_SI21"), getStringValue((pick_one(song_0, song_1, rand_1, 2048) + "_SI21"))), StringEntry((key + "_SI22"), getStringValue((pick_one(song_0, song_1, rand_1, 4096) + "_SI22"))), StringEntry((key + "_SI23"), getStringValue((pick_one(song_0, song_1, rand_1, 8192) + "_SI23"))), StringEntry((key + "_SI24"), getStringValue((pick_one(song_0, song_1, rand_1, 16384) + "_SI24"))), StringEntry((key + "_SI25"), getStringValue((pick_one(song_0, song_1, rand_1, 32768) + "_SI25"))), StringEntry((key + "_SI26"), getStringValue((pick_one(song_0, song_1, rand_1, 65536) + "_SI26"))), StringEntry((key + "_SI27"), getStringValue((pick_one(song_0, song_1, rand_1, 131072) + "_SI27"))), StringEntry((key + "_SI30"), getStringValue((pick_one(song_0, song_1, rand_1, 262144) + "_SI30"))), StringEntry((key + "_SI31"), getStringValue((pick_one(song_0, song_1, rand_1, 524288) + "_SI31"))), StringEntry((key + "_SI32"), getStringValue((pick_one(song_0, song_1, rand_1, 1048576) + "_SI32"))), StringEntry((key + "_SI33"), getStringValue((pick_one(song_0, song_1, rand_1, 2097152) + "_SI33"))), StringEntry((key + "_SI34"), getStringValue((pick_one(song_0, song_1, rand_1, 4194304) + "_SI34"))), StringEntry((key + "_SI35"), getStringValue((pick_one(song_0, song_1, rand_1, 8388608) + "_SI35"))), StringEntry((key + "_SI36"), getStringValue((pick_one(song_0, song_1, rand_1, 16777216) + "_SI36"))), StringEntry((key + "_SI37"), getStringValue((pick_one(song_0, song_1, rand_1, 33554432) + "_SI37"))), StringEntry((key + "_SI40"), getStringValue((pick_one(song_0, song_1, rand_1, 67108864) + "_SI40"))), StringEntry((key + "_SI41"), getStringValue((pick_one(song_0, song_1, rand_1, 134217728) + "_SI41"))), StringEntry((key + "_SI42"), getStringValue((pick_one(song_0, song_1, rand_1, 268435456) + "_SI42"))), StringEntry((key + "_SI43"), getStringValue((pick_one(song_0, song_1, rand_1, 536870912) + "_SI43"))), StringEntry((key + "_SI44"), getStringValue((pick_one(song_0, song_1, rand_1, 1073741824) + "_SI44"))), StringEntry((key + "_SI45"), getStringValue((pick_one(song_0, song_1, rand_1, 2147483648) + "_SI45"))), StringEntry((key + "_SI46"), getStringValue((pick_one(song_0, song_1, rand_1, 4294967296) + "_SI46"))), StringEntry((key + "_SI47"), getStringValue((pick_one(song_0, song_1, rand_1, 8589934592) + "_SI47"))), ScriptTransfer(Address(i.caller.bytes), 1, id_b)]
6775 }
6876 else throw("Strict value is not equal to itself.")
6977 }
7078
7179
7280 func check_whitelist (caller) = if ((this == caller))
7381 then true
7482 else match getBoolean(("W_" + toBase58String(caller.bytes))) {
7583 case x: Boolean =>
7684 x
7785 case _ =>
7886 false
7987 }
8088
8189
8290 @Callable(i)
8391 func whitelist_add (user) = if ((this != i.caller))
8492 then throw("Caller is not dApp owner")
8593 else $Tuple2([BooleanEntry(("W_" + user), true)], unit)
8694
8795
8896
8997 @Callable(i)
9098 func whitelist_remove (user) = if ((this != i.caller))
9199 then throw("Caller is not dApp owner")
92100 else $Tuple2([DeleteEntry(("W_" + user))], unit)
93101
94102
95103
96104 @Callable(i)
97105 func set_market_image (url) = if (!(check_whitelist(i.caller)))
98106 then throw("Caller not in whitelist")
99107 else $Tuple2([StringEntry("market_image_link", url)], unit)
100108
101109
102110
103111 @Callable(i)
104112 func set_price_hybrid (token,amount,increment) = if (!(check_whitelist(i.caller)))
105113 then throw("Caller not in whitelist")
106114 else $Tuple2([StringEntry("price_hybrid_token", token), IntegerEntry("price_hybrid_amount", amount), IntegerEntry("price_hybrid_increment", increment)], unit)
107115
108116
109117
110118 @Callable(i)
111119 func mint_chord (index,name,notes) = if (!(check_whitelist(i.caller)))
112120 then throw("Caller not in whitelist")
113121 else if ((size(notes) != 5))
114122 then throw("Wrong notes size")
115123 else {
116124 let n = match getInteger("count") {
117125 case j: Int =>
118126 j
119127 case _ =>
120128 0
121129 }
122130 let key = to_key(index)
123131 $Tuple2([IntegerEntry("count", max([(index + 1), n])), StringEntry((key + "_CL"), name), IntegerEntry((key + "_C0"), notes[0]), IntegerEntry((key + "_C1"), notes[1]), IntegerEntry((key + "_C2"), notes[2]), IntegerEntry((key + "_C3"), notes[3]), IntegerEntry((key + "_C4"), notes[4])], unit)
124132 }
125133
126134
127135
128136 @Callable(i)
129137 func mint_arpeggio (index,name,notes) = if (!(check_whitelist(i.caller)))
130138 then throw("Caller not in whitelist")
131139 else if ((size(notes) != 16))
132140 then throw("Wrong notes size")
133141 else {
134142 let n = match getInteger("count") {
135143 case j: Int =>
136144 j
137145 case _ =>
138146 0
139147 }
140148 let key = to_key(index)
141149 $Tuple2([IntegerEntry("count", max([(index + 1), n])), StringEntry((key + "_AL"), name), IntegerEntry((key + "_A00"), notes[0]), IntegerEntry((key + "_A01"), notes[1]), IntegerEntry((key + "_A02"), notes[2]), IntegerEntry((key + "_A03"), notes[3]), IntegerEntry((key + "_A04"), notes[4]), IntegerEntry((key + "_A05"), notes[5]), IntegerEntry((key + "_A06"), notes[6]), IntegerEntry((key + "_A07"), notes[7]), IntegerEntry((key + "_A08"), notes[8]), IntegerEntry((key + "_A09"), notes[9]), IntegerEntry((key + "_A10"), notes[10]), IntegerEntry((key + "_A11"), notes[11]), IntegerEntry((key + "_A12"), notes[12]), IntegerEntry((key + "_A13"), notes[13]), IntegerEntry((key + "_A14"), notes[14]), IntegerEntry((key + "_A15"), notes[15])], unit)
142150 }
143151
144152
145153
146154 @Callable(i)
147155 func mint_rhythm (index,name,scale,notes) = if (!(check_whitelist(i.caller)))
148156 then throw("Caller not in whitelist")
149157 else if ((size(notes) != 16))
150158 then throw("Wrong notes size")
151159 else {
152160 let n = match getInteger("count") {
153161 case j: Int =>
154162 j
155163 case _ =>
156164 0
157165 }
158166 let key = to_key(index)
159167 $Tuple2([IntegerEntry("count", max([(index + 1), n])), StringEntry((key + "_RL"), name), IntegerEntry((key + "_RS"), scale), IntegerEntry((key + "_R00"), notes[0]), IntegerEntry((key + "_R01"), notes[1]), IntegerEntry((key + "_R02"), notes[2]), IntegerEntry((key + "_R03"), notes[3]), IntegerEntry((key + "_R04"), notes[4]), IntegerEntry((key + "_R05"), notes[5]), IntegerEntry((key + "_R06"), notes[6]), IntegerEntry((key + "_R07"), notes[7]), IntegerEntry((key + "_R08"), notes[8]), IntegerEntry((key + "_R09"), notes[9]), IntegerEntry((key + "_R10"), notes[10]), IntegerEntry((key + "_R11"), notes[11]), IntegerEntry((key + "_R12"), notes[12]), IntegerEntry((key + "_R13"), notes[13]), IntegerEntry((key + "_R14"), notes[14]), IntegerEntry((key + "_R15"), notes[15])], unit)
160168 }
161169
162170
163171
164172 @Callable(i)
173+func burn_internal (asset_id) = if (!(check_whitelist(i.caller)))
174+ then throw("Caller not in whitelist")
175+ else {
176+ let burn0 = invoke(nft_creation_address, "burnNFT", nil, [AttachedPayment(fromBase58String(asset_id), 1)])
177+ if ((burn0 == burn0))
178+ then $Tuple2(nil, unit)
179+ else throw("Strict value is not equal to itself.")
180+ }
181+
182+
183+
184+@Callable(i)
185+func burn () = if (!(check_whitelist(i.caller)))
186+ then throw("Caller not in whitelist")
187+ else {
188+ let burn0 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[0]])
189+ if ((burn0 == burn0))
190+ then $Tuple2(nil, unit)
191+ else throw("Strict value is not equal to itself.")
192+ }
193+
194+
195+
196+@Callable(i)
165197 func mint_song (name,parent_0,parent_1,bpm,bar_size,beat_size,tonality,chords,arpeggio,kick_instrument,snare_instrument,hihat_instrument,bass_instrument,back_instrument,lead_instrument,kick_rhythms,snare_rhythms,hihat_rhythms,bass_rhythms,back_rhythms,lead_rhythms) = if (!(check_whitelist(i.caller)))
166198 then throw("Caller not in whitelist")
167199 else if ((size(chords) != 8))
168200 then throw("Wrong chords size")
169201 else if ((size(kick_rhythms) != 8))
170202 then throw("Wrong kick rhythms size")
171203 else if ((size(snare_rhythms) != 8))
172204 then throw("Wrong snare rhythms size")
173205 else if ((size(hihat_rhythms) != 8))
174206 then throw("Wrong hihat rhythms size")
175207 else if ((size(bass_rhythms) != 8))
176208 then throw("Wrong bass rhythms size")
177209 else if ((size(back_rhythms) != 8))
178210 then throw("Wrong back rhythms size")
179211 else if ((size(lead_rhythms) != 8))
180212 then throw("Wrong lead rhythms size")
181213 else {
182214 let n = match getInteger("count") {
183215 case j: Int =>
184216 j
185217 case _ =>
186218 0
187219 }
188220 let name_short = take(name, 16)
189- let description = "Clef song"
190- let collection = ""
221+ let description = mint_description
222+ let collection = mint_collection
191223 let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
192224 case x: String =>
193225 x
194226 case _ =>
195227 throw("NFT creation failed")
196228 }
197229 if ((id == id))
198230 then {
199231 let key = to_key(n)
200232 let tx_transfer = if ((this != i.caller))
201233 then [ScriptTransfer(Address(i.caller.bytes), 1, fromBase58String(id))]
202234 else nil
203235 $Tuple2(([IntegerEntry("count", (n + 1)), StringEntry(id, key), StringEntry(key, id), IntegerEntry((key + "_G"), 1), StringEntry((key + "_SL"), name), IntegerEntry((key + "_SN"), 0), StringEntry((key + "_SP0"), parent_0), StringEntry((key + "_SP1"), parent_1), IntegerEntry((key + "_SB0"), bpm), IntegerEntry((key + "_SB1"), bar_size), IntegerEntry((key + "_SB2"), beat_size), IntegerEntry((key + "_ST"), tonality), StringEntry((key + "_SC0"), chords[0]), StringEntry((key + "_SC1"), chords[1]), StringEntry((key + "_SC2"), chords[2]), StringEntry((key + "_SC3"), chords[3]), StringEntry((key + "_SC4"), chords[4]), StringEntry((key + "_SC5"), chords[5]), StringEntry((key + "_SC6"), chords[6]), StringEntry((key + "_SC7"), chords[7]), StringEntry((key + "_SA"), arpeggio), StringEntry((key + "_SI0"), kick_instrument), StringEntry((key + "_SI1"), snare_instrument), StringEntry((key + "_SI2"), hihat_instrument), StringEntry((key + "_SI3"), bass_instrument), StringEntry((key + "_SI4"), back_instrument), StringEntry((key + "_SI5"), lead_instrument), StringEntry((key + "_SI00"), kick_rhythms[0]), StringEntry((key + "_SI01"), kick_rhythms[1]), StringEntry((key + "_SI02"), kick_rhythms[2]), StringEntry((key + "_SI03"), kick_rhythms[3]), StringEntry((key + "_SI04"), kick_rhythms[4]), StringEntry((key + "_SI05"), kick_rhythms[5]), StringEntry((key + "_SI06"), kick_rhythms[6]), StringEntry((key + "_SI07"), kick_rhythms[7]), StringEntry((key + "_SI10"), snare_rhythms[0]), StringEntry((key + "_SI11"), snare_rhythms[1]), StringEntry((key + "_SI12"), snare_rhythms[2]), StringEntry((key + "_SI13"), snare_rhythms[3]), StringEntry((key + "_SI14"), snare_rhythms[4]), StringEntry((key + "_SI15"), snare_rhythms[5]), StringEntry((key + "_SI16"), snare_rhythms[6]), StringEntry((key + "_SI17"), snare_rhythms[7]), StringEntry((key + "_SI20"), hihat_rhythms[0]), StringEntry((key + "_SI21"), hihat_rhythms[1]), StringEntry((key + "_SI22"), hihat_rhythms[2]), StringEntry((key + "_SI23"), hihat_rhythms[3]), StringEntry((key + "_SI24"), hihat_rhythms[4]), StringEntry((key + "_SI25"), hihat_rhythms[5]), StringEntry((key + "_SI26"), hihat_rhythms[6]), StringEntry((key + "_SI27"), hihat_rhythms[7]), StringEntry((key + "_SI30"), bass_rhythms[0]), StringEntry((key + "_SI31"), bass_rhythms[1]), StringEntry((key + "_SI32"), bass_rhythms[2]), StringEntry((key + "_SI33"), bass_rhythms[3]), StringEntry((key + "_SI34"), bass_rhythms[4]), StringEntry((key + "_SI35"), bass_rhythms[5]), StringEntry((key + "_SI36"), bass_rhythms[6]), StringEntry((key + "_SI37"), bass_rhythms[7]), StringEntry((key + "_SI40"), back_rhythms[0]), StringEntry((key + "_SI41"), back_rhythms[1]), StringEntry((key + "_SI42"), back_rhythms[2]), StringEntry((key + "_SI43"), back_rhythms[3]), StringEntry((key + "_SI44"), back_rhythms[4]), StringEntry((key + "_SI45"), back_rhythms[5]), StringEntry((key + "_SI46"), back_rhythms[6]), StringEntry((key + "_SI47"), back_rhythms[7]), StringEntry((key + "_SI50"), lead_rhythms[0]), StringEntry((key + "_SI51"), lead_rhythms[1]), StringEntry((key + "_SI52"), lead_rhythms[2]), StringEntry((key + "_SI53"), lead_rhythms[3]), StringEntry((key + "_SI54"), lead_rhythms[4]), StringEntry((key + "_SI55"), lead_rhythms[5]), StringEntry((key + "_SI56"), lead_rhythms[6]), StringEntry((key + "_SI57"), lead_rhythms[7])] ++ tx_transfer), unit)
204236 }
205237 else throw("Strict value is not equal to itself.")
206238 }
207239
208240
209241
210242 @Callable(i)
211243 func mint_hybrid (song_0,song_1) = {
212244 let caller_addr = Address(i.caller.bytes)
213245 let song_0_id = fromBase58String(getStringValue(song_0))
214246 let song_1_id = fromBase58String(getStringValue(song_1))
215247 let price_amount = getIntegerValue("price_hybrid_amount")
216248 let price_token = getStringValue("price_hybrid_token")
217249 let price_change = hybrid_calculate_change(i, price_token, price_amount)
218250 if ((0 > price_change))
219251 then throw("Wrong payment")
220252 else if ((song_0_id == song_1_id))
221253 then throw("Songs should be different")
222254 else if ((1 > assetBalance(caller_addr, song_0_id)))
223255 then throw("Caller do not own first song")
224256 else if ((1 > assetBalance(caller_addr, song_1_id)))
225257 then throw("Caller do not own second song")
226258 else {
227259 let mint_count = match getInteger("mint_count") {
228260 case j: Int =>
229261 j
230262 case _ =>
231263 0
232264 }
233265 let price_count_inc = IntegerEntry("mint_count", (mint_count + 1))
234266 let price_increase = if (((mint_count % price_increase_period) == (price_increase_period - 1)))
235267 then [price_count_inc, IntegerEntry("price_hybrid_amount", (price_amount + getIntegerValue("price_hybrid_increment")))]
236268 else [price_count_inc]
237269 if ((price_change > 0))
238270 then $Tuple2(((make_hybrid_tx(i, song_0, song_1) ++ price_increase) ++ [ScriptTransfer(Address(i.caller.bytes), price_change, if ((price_token == ""))
239271 then unit
240272 else fromBase58String(price_token))]), unit)
241273 else $Tuple2((make_hybrid_tx(i, song_0, song_1) ++ price_increase), unit)
242274 }
243275 }
244276
245277
246278
247279 @Callable(i)
248280 func mint_hybrid_and_burn () = if (if (if ((size(i.payments) != 2))
249281 then true
250282 else (i.payments[0].amount != 1))
251283 then true
252284 else (i.payments[1].amount != 1))
253285 then throw("Wrong payment")
254286 else {
255287 let song_0_id = match i.payments[0].assetId {
256288 case b: ByteVector =>
257289 b
258290 case _ =>
259291 throw("Wrong payment")
260292 }
261293 let song_1_id = match i.payments[1].assetId {
262294 case b: ByteVector =>
263295 b
264296 case _ =>
265297 throw("Wrong payment")
266298 }
267299 if ((song_0_id == song_1_id))
268300 then throw("Songs should be different")
269301 else {
270302 let song_0 = getStringValue(toBase58String(song_0_id))
271303 let song_1 = getStringValue(toBase58String(song_1_id))
272304 let burn0 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[0]])
273305 if ((burn0 == burn0))
274306 then {
275307 let burn1 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[1]])
276308 if ((burn1 == burn1))
277309 then $Tuple2(make_hybrid_tx(i, song_0, song_1), unit)
278310 else throw("Strict value is not equal to itself.")
279311 }
280312 else throw("Strict value is not equal to itself.")
281313 }
282314 }
283315
284316

github/deemru/w8io/169f3d6 
90.93 ms