tx · BTjj2HzjwULfLsSin79MGwb6KqW4Z5jqfuNDsGwTCX6E

3N4XDqsd3iMrXb6kS7R7Wwd4azMsqUXMvfe:  -0.03800000 Waves

2023.03.01 00:14 [2470085] smart account 3N4XDqsd3iMrXb6kS7R7Wwd4azMsqUXMvfe > SELF 0.00000000 Waves

{ "type": 13, "id": "BTjj2HzjwULfLsSin79MGwb6KqW4Z5jqfuNDsGwTCX6E", "fee": 3800000, "feeAssetId": null, "timestamp": 1677618912482, "version": 2, "chainId": 84, "sender": "3N4XDqsd3iMrXb6kS7R7Wwd4azMsqUXMvfe", "senderPublicKey": "C2mzHuEYRUgN9aEFza8tUYr6jfSWEgS6WvPmA54fejJk", "proofs": [ "44QUKbeFuiX4Wmzo2zBuMcqSJNGyjcy1tk1tGZhR3fZLHi1qHt1nB2pUcX5wEhXC8CNUCDWdq7vJkYcrMf9sbEQ8" ], "script": "base64:BgJ1CAISAwoBCBIDCgEIEgMKAQgSBAoCGBESAwoBCBIGCgQIAQEBEgQKAggBEgUKAwEIERIFCgMBCBESBgoEAQgBERIDCgEIEgASFwoVCAgIAQEBARgICAgICAgIGBgYGBgYEgQKAggIEgASBgoECAEIARIDCgEIEQAUbmZ0X2NyZWF0aW9uX2FkZHJlc3MJAQdBZGRyZXNzAQEaAVT41FeGPD5KjgZPF8mEEGujcKbOtd2qtCwAFXByaWNlX2luY3JlYXNlX3BlcmlvZAABAA9taW50X2NvbGxlY3Rpb24CEkNsZWYgZ2VuZXNpcyBzb25ncwAQbWludF9kZXNjcmlwdGlvbgJkR2VuZXNpcyBDbGVmIHNvbmcuIFRoaXMgbWVsb2R5IGlzIGNyYWZ0ZWQgdG8gYmVjb21lIHlvdXIgZWxlY3Ryb25pYyBqYW0uIFVzZSBpdCBvbiBjbGVmLm9uZSDwn5Ka8J+kjQARaHlicmlkX2NvbGxlY3Rpb24CCkNsZWYgbWl4ZXMAEmh5YnJpZF9kZXNjcmlwdGlvbgJXQ2xlZiBtaXguIFRoaXMgbWVsb2R5IHdhcyBjcmVhdGVkIGJ5IGFuIGFsZ29yaXRobS4gRW5qb3kgdGhpcyBqYW0gb3IgdXNlIGl0IG9uIGNsZWYub25lAAppbmRpY2VzXzIwCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMFA25pbAEGdG9fa2V5AQFuCQDYBAEJAJoDAQUBbgEMdW5pcXVlX2J5dGVzAQFpCQDLAQIJAMsBAgkAywECCQDLAQIIBQFpDXRyYW5zYWN0aW9uSWQIBQFpD2NhbGxlclB1YmxpY0tleQgFCWxhc3RCbG9jaxNnZW5lcmF0aW9uU2lnbmF0dXJlCQCaAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQCaAwEIBQlsYXN0QmxvY2sGaGVpZ2h0AQtyYW5kb21fdWludAIFYnl0ZXMFbm9uY2UEAW4JALEJAQkA1BYBCQDLAQIFBWJ5dGVzCQCaAwEFBW5vbmNlAwkAZgIAAAUBbgkBAS0BBQFuBQFuAQhwaWNrX29uZQQFa2V5XzAFa2V5XzEIcmFuZF9pbnQJYml0X3Bvd2VyAwkAAAIJAGoCCQBpAgUIcmFuZF9pbnQFCWJpdF9wb3dlcgACAAAFBWtleV8wBQVrZXlfMQEXaHlicmlkX2NhbGN1bGF0ZV9jaGFuZ2UDAWkFdG9rZW4GYW1vdW50AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABAP///////////wEEAXAJAJEDAggFAWkIcGF5bWVudHMAAAQHcF90b2tlbgQHJG1hdGNoMAgFAXAHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA2AQBBQJpZAIAAwkBAiE9AgUHcF90b2tlbgUFdG9rZW4A////////////AQkAZQIIBQFwBmFtb3VudAUGYW1vdW50AQ5tYWtlX2h5YnJpZF90eAMBaQZzb25nXzAGc29uZ18xBAFuBAckbWF0Y2gwCQCfCAECBWNvdW50AwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAABApuYW1lX3Nob3J0CQCvAgIJAKwCAgIFQ2xlZiAJAKQDAQUBbgAQBAtkZXNjcmlwdGlvbgUSaHlicmlkX2Rlc2NyaXB0aW9uBApjb2xsZWN0aW9uBRFoeWJyaWRfY29sbGVjdGlvbgQCaWQEByRtYXRjaDAJAPwHBAUUbmZ0X2NyZWF0aW9uX2FkZHJlc3MCCWNyZWF0ZU5GVAkAzAgCBQpuYW1lX3Nob3J0CQDMCAIFC2Rlc2NyaXB0aW9uCQDMCAIJARFAZXh0ck5hdGl2ZSgxMDU4KQECEW1hcmtldF9pbWFnZV9saW5rCQDMCAIFCmNvbGxlY3Rpb24FA25pbAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECE05GVCBjcmVhdGlvbiBmYWlsZWQDCQAAAgUCaWQFAmlkBARpZF9iCQDZBAEFAmlkBANrZXkJAQZ0b19rZXkBBQFuBAVieXRlcwkBDHVuaXF1ZV9ieXRlcwEFAWkEBnJhbmRfMAkBC3JhbmRvbV91aW50AgUFYnl0ZXMAAAQGcmFuZF8xCQELcmFuZG9tX3VpbnQCBQVieXRlcwABCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVjb3VudAkAZAIFAW4AAQkAzAgCCQELU3RyaW5nRW50cnkCBQJpZAUDa2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUCaWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgJfRwkAZAIJAJYDAQkAzAgCCQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgIFBnNvbmdfMAICX0cJAMwIAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICBQZzb25nXzECAl9HBQNuaWwAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIDX1NMAgAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfU04FBnJhbmRfMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NQMAUGc29uZ18wCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU1AxBQZzb25nXzEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfU0IwCQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAAQIEX1NCMAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9TQjEJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMAACAgRfU0IxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIEX1NCMgkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAAQCBF9TQjIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfU1QJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMAAIAgNfU1QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMAAQAgRfU0MwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MxCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAIAIEX1NDMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDMgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAEACBF9TQzIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAAQIEX1NDMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDNAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAIAEAgRfU0M0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgAgCBF9TQzUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAEAIEX1NDNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDNwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAIAgAgRfU0M3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfU0EJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAQAIDX1NBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0kwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgIABAgRfU0kwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0kxCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgIACAgRfU0kxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0kyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgIAEAgRfU0kyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0kzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgIAIAgRfU0kzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0k0CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgIAQAgRfU0k0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0k1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgIAgAgRfU0k1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1MAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAQAIFX1NJNTAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTUxCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAAQIFX1NJNTEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTUyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAAgIFX1NJNTIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTUzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICABAIFX1NJNTMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU0CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICACAIFX1NJNTQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAEAIFX1NJNTUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU2CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAIAIFX1NJNTYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU3CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAQAIFX1NJNTcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAgAECBV9TSTAwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwMQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgIACAgVfU0kwMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgICABAIFX1NJMDIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAgAgCBV9TSTAzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgIAQAgVfU0kwNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgICAIAIFX1NJMDUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTA2CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAAQIFX1NJMDYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTA3CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAAgIFX1NJMDcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTEwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEABAIFX1NJMTAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTExCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEACAIFX1NJMTEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTEyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAEAIFX1NJMTIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTEzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAIAIFX1NJMTMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTE0CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAQAIFX1NJMTQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTE1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgAECBV9TSTE1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAIACAgVfU0kxNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCABAIFX1NJMTcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgAgCBV9TSTIwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyMQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAIAQAgVfU0kyMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAIAIFX1NJMjIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgEACBV9TSTIzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyNAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAAQIFX1NJMjQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTI1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgIACAgVfU0kyNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgAQCBV9TSTI2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyNwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICACAIFX1NJMjcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTMwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgIAQAgVfU0kzMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgCACBV9TSTMxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAQAIFX1NJMzIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTMzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAAQIFX1NJMzMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTM0CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAAgIFX1NJMzQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTM1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICABAIFX1NJMzUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTM2CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICACAIFX1NJMzYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTM3CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAEAIFX1NJMzcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAIAIFX1NJNDAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQxCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAQAIFX1NJNDEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAgAECBV9TSTQyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0MwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgIACAgVfU0k0MwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgICABAIFX1NJNDQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQ1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAgAgCBV9TSTQ1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgIAQAgVfU0k0NgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgICAIAIFX1NJNDcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAAEFBGlkX2IFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEQbWludF9oeWJyaWRfcGFpZAMBaQZzb25nXzAGc29uZ18xBAtjYWxsZXJfYWRkcgkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzBAlzb25nXzBfaWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUGc29uZ18wBAlzb25nXzFfaWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUGc29uZ18xBAxwcmljZV9hbW91bnQJARFAZXh0ck5hdGl2ZSgxMDU1KQECE3ByaWNlX2h5YnJpZF9hbW91bnQEC3ByaWNlX2xpbWl0CQERQGV4dHJOYXRpdmUoMTA1NSkBAhJwcmljZV9oeWJyaWRfbGltaXQEC3ByaWNlX3Rva2VuCQERQGV4dHJOYXRpdmUoMTA1OCkBAhJwcmljZV9oeWJyaWRfdG9rZW4EDHByaWNlX2NoYW5nZQkBF2h5YnJpZF9jYWxjdWxhdGVfY2hhbmdlAwUBaQULcHJpY2VfdG9rZW4FDHByaWNlX2Ftb3VudAMJAGYCAAAFDHByaWNlX2NoYW5nZQkAAgECDVdyb25nIHBheW1lbnQDCQAAAgUJc29uZ18wX2lkBQlzb25nXzFfaWQJAAIBAhlTb25ncyBzaG91bGQgYmUgZGlmZmVyZW50AwkAZgIAAQkA8AcCBQtjYWxsZXJfYWRkcgUJc29uZ18wX2lkCQACAQIcQ2FsbGVyIGRvIG5vdCBvd24gZmlyc3Qgc29uZwMJAGYCAAEJAPAHAgULY2FsbGVyX2FkZHIFCXNvbmdfMV9pZAkAAgECHUNhbGxlciBkbyBub3Qgb3duIHNlY29uZCBzb25nBAptaW50X2NvdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBAgptaW50X2NvdW50BAlwcmljZV9pbmMJARFAZXh0ck5hdGl2ZSgxMDU1KQECFnByaWNlX2h5YnJpZF9pbmNyZW1lbnQED3ByaWNlX2NvdW50X2luYwkBDEludGVnZXJFbnRyeQICCm1pbnRfY291bnQJAGQCBQptaW50X2NvdW50AAEEDnByaWNlX2luY3JlYXNlAwMJAAACCQBqAgUKbWludF9jb3VudAUVcHJpY2VfaW5jcmVhc2VfcGVyaW9kCQBlAgUVcHJpY2VfaW5jcmVhc2VfcGVyaW9kAAEJAGYCBQtwcmljZV9saW1pdAkAZAIFDHByaWNlX2Ftb3VudAUJcHJpY2VfaW5jBwkAzAgCBQ9wcmljZV9jb3VudF9pbmMJAMwIAgkBDEludGVnZXJFbnRyeQICE3ByaWNlX2h5YnJpZF9hbW91bnQJAGQCBQxwcmljZV9hbW91bnQFCXByaWNlX2luYwUDbmlsCQDMCAIFD3ByaWNlX2NvdW50X2luYwUDbmlsAwkAZgIFDHByaWNlX2NoYW5nZQAACQCUCgIJAM4IAgkAzggCCQEObWFrZV9oeWJyaWRfdHgDBQFpBQZzb25nXzAFBnNvbmdfMQUOcHJpY2VfaW5jcmVhc2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULY2FsbGVyX2FkZHIFDHByaWNlX2NoYW5nZQMJAAACBQtwcmljZV90b2tlbgIABQR1bml0CQDZBAEFC3ByaWNlX3Rva2VuBQNuaWwFBHVuaXQJAJQKAgkAzggCCQEObWFrZV9oeWJyaWRfdHgDBQFpBQZzb25nXzAFBnNvbmdfMQUOcHJpY2VfaW5jcmVhc2UFBHVuaXQBEG1pbnRfaHlicmlkX2ZyZWUDAWkGc29uZ18wBnNvbmdfMQQLY2FsbGVyX2FkZHIJAQdBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwQJc29uZ18wX2lkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFBnNvbmdfMAQJc29uZ18xX2lkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFBnNvbmdfMQMJAAACBQlzb25nXzBfaWQFCXNvbmdfMV9pZAkAAgECGVNvbmdzIHNob3VsZCBiZSBkaWZmZXJlbnQDCQBmAgABCQDwBwIFC2NhbGxlcl9hZGRyBQlzb25nXzBfaWQJAAIBAhxDYWxsZXIgZG8gbm90IG93biBmaXJzdCBzb25nAwkAZgIAAQkA8AcCBQtjYWxsZXJfYWRkcgUJc29uZ18xX2lkCQACAQIdQ2FsbGVyIGRvIG5vdCBvd24gc2Vjb25kIHNvbmcJAJQKAgkBDm1ha2VfaHlicmlkX3R4AwUBaQUGc29uZ18wBQZzb25nXzEFBHVuaXQBD2NoZWNrX3doaXRlbGlzdAEGY2FsbGVyAwkAAAIFBHRoaXMFBmNhbGxlcgYEByRtYXRjaDAJAKAIAQkArAICAgJXXwkA2AQBCAUGY2FsbGVyBWJ5dGVzAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHAQ9mb2xkX3NldF9yYXJpdHkCBWFjY3VtBWluZGV4BA0kdDAxMjE1MDEyMTg3BQVhY2N1bQQHZW50cmllcwgFDSR0MDEyMTUwMTIxODcCXzEEBmFzc2V0cwgFDSR0MDEyMTUwMTIxODcCXzIEBnZhbHVlcwgFDSR0MDEyMTUwMTIxODcCXzMDCQBnAgUFaW5kZXgJAJADAQUGYXNzZXRzBQVhY2N1bQMDCQBmAgAACQCRAwIFBnZhbHVlcwUFaW5kZXgGCQBmAgkAkQMCBQZ2YWx1ZXMFBWluZGV4AGQJAAIBAjVJbnZhbGlkIHJhcml0eSB2YWx1ZSAobXVzdCBiZSBpbiByYW5nZSBmcm9tIDAgdG8gMTAwKQkAlQoDCQDNCAIFB2VudHJpZXMJAQxJbnRlZ2VyRW50cnkCCQCsAgICB3Jhcml0eV8JAJEDAgUGYXNzZXRzBQVpbmRleAkAkQMCBQZ2YWx1ZXMFBWluZGV4BQZhc3NldHMFBnZhbHVlcxEBaQENd2hpdGVsaXN0X2FkZAEEdXNlcgMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAAgECGENhbGxlciBpcyBub3QgZEFwcCBvd25lcgkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgICAldfBQR1c2VyBgUDbmlsBQR1bml0AWkBEHdoaXRlbGlzdF9yZW1vdmUBBHVzZXIDCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAhhDYWxsZXIgaXMgbm90IGRBcHAgb3duZXIJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICAldfBQR1c2VyBQNuaWwFBHVuaXQBaQEKc2V0X2RhZW1vbgEHYWRkcmVzcwMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAAgECGENhbGxlciBpcyBub3QgZEFwcCBvd25lcgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQICBmRhZW1vbgUHYWRkcmVzcwUDbmlsBQR1bml0AWkBCnNldF9yYXJpdHkCBmFzc2V0cwZ2YWx1ZXMDBAckbWF0Y2gwCQCiCAECBmRhZW1vbgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAJAQIhPQIFAXgJANgEAQgIBQFpBmNhbGxlcgVieXRlcwYJAAIBAhRDYWxsZXIgaXMgbm90IGRhZW1vbgMJAAACCQCQAwEFBmFzc2V0cwAACQACAQIJTm8gYXNzZXRzAwkAZgIJAJADAQUGYXNzZXRzABQJAAIBAihUbyBtYW55IGFzc2V0cyAobXVzdCBiZSBubyBtb3JlIHRoYW4gMjApAwkBAiE9AgkAkAMBBQZhc3NldHMJAJADAQUGdmFsdWVzCQACAQIkQXNzZXRzIGFuZCB2YWx1ZXMgbGlzdCBzaXplIG1pc21hdGNoBA0kdDAxMzQ5MDEzNTg1CgACJGwFCmluZGljZXNfMjAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAUGYXNzZXRzBQZ2YWx1ZXMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBD2ZvbGRfc2V0X3Jhcml0eQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAdlbnRyaWVzCAUNJHQwMTM0OTAxMzU4NQJfMQQHYXNzZXRzXwgFDSR0MDEzNDkwMTM1ODUCXzIEB3ZhbHVlc18IBQ0kdDAxMzQ5MDEzNTg1Al8zCQCUCgIFB2VudHJpZXMFBHVuaXQBaQEQc2V0X21hcmtldF9pbWFnZQEDdXJsAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCAhFtYXJrZXRfaW1hZ2VfbGluawUDdXJsBQNuaWwFBHVuaXQBaQEQc2V0X3ByaWNlX2h5YnJpZAQFdG9rZW4GYW1vdW50BWxpbWl0CWluY3JlbWVudAMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQICCm1pbnRfY291bnQAAAkAzAgCCQELU3RyaW5nRW50cnkCAhJwcmljZV9oeWJyaWRfdG9rZW4FBXRva2VuCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhNwcmljZV9oeWJyaWRfYW1vdW50BQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICEnByaWNlX2h5YnJpZF9saW1pdAUFbGltaXQJAMwIAgkBDEludGVnZXJFbnRyeQICFnByaWNlX2h5YnJpZF9pbmNyZW1lbnQFCWluY3JlbWVudAUDbmlsBQR1bml0AWkBEnNldF9mcmVlX21peF90b2tlbgIFdG9rZW4GYW1vdW50AwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCAg5mcmVlX21peF90b2tlbgUFdG9rZW4JAMwIAgkBDEludGVnZXJFbnRyeQICD2ZyZWVfbWl4X2Ftb3VudAUGYW1vdW50BQNuaWwFBHVuaXQBaQEKbWludF9jaG9yZAMFaW5kZXgEbmFtZQVub3RlcwMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0AwkBAiE9AgkAkAMBBQVub3RlcwAQCQACAQIQV3Jvbmcgbm90ZXMgc2l6ZQQBbgQHJG1hdGNoMAkAnwgBAgVjb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQDa2V5CQEGdG9fa2V5AQUFaW5kZXgJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgIFY291bnQJAJYDAQkAzAgCCQBkAgUFaW5kZXgAAQkAzAgCBQFuBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19DTAUEbmFtZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDAJAJEDAgUFbm90ZXMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDEJAJEDAgUFbm90ZXMAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDIJAJEDAgUFbm90ZXMAAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDMJAJEDAgUFbm90ZXMAAwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDQJAJEDAgUFbm90ZXMABAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDUJAJEDAgUFbm90ZXMABQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDYJAJEDAgUFbm90ZXMABgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDcJAJEDAgUFbm90ZXMABwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDgJAJEDAgUFbm90ZXMACAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMDkJAJEDAgUFbm90ZXMACQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMTAJAJEDAgUFbm90ZXMACgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMTEJAJEDAgUFbm90ZXMACwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMTIJAJEDAgUFbm90ZXMADAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMTMJAJEDAgUFbm90ZXMADQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMTQJAJEDAgUFbm90ZXMADgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9DMTUJAJEDAgUFbm90ZXMADwUDbmlsBQR1bml0AWkBDW1pbnRfYXJwZWdnaW8DBWluZGV4BG5hbWUFbm90ZXMDCQEBIQEJAQ9jaGVja193aGl0ZWxpc3QBCAUBaQZjYWxsZXIJAAIBAhdDYWxsZXIgbm90IGluIHdoaXRlbGlzdAMJAQIhPQIJAJADAQUFbm90ZXMAEAkAAgECEFdyb25nIG5vdGVzIHNpemUEAW4EByRtYXRjaDAJAJ8IAQIFY291bnQDCQABAgUHJG1hdGNoMAIDSW50BAFqBQckbWF0Y2gwBQFqAAAEA2tleQkBBnRvX2tleQEFBWluZGV4CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQICBWNvdW50CQCWAwEJAMwIAgkAZAIFBWluZGV4AAEJAMwIAgUBbgUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfQUwFBG5hbWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTAwCQCRAwIFBW5vdGVzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTAxCQCRAwIFBW5vdGVzAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTAyCQCRAwIFBW5vdGVzAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTAzCQCRAwIFBW5vdGVzAAMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA0CQCRAwIFBW5vdGVzAAQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA1CQCRAwIFBW5vdGVzAAUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA2CQCRAwIFBW5vdGVzAAYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA3CQCRAwIFBW5vdGVzAAcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA4CQCRAwIFBW5vdGVzAAgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA5CQCRAwIFBW5vdGVzAAkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTEwCQCRAwIFBW5vdGVzAAoJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTExCQCRAwIFBW5vdGVzAAsJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTEyCQCRAwIFBW5vdGVzAAwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTEzCQCRAwIFBW5vdGVzAA0JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTE0CQCRAwIFBW5vdGVzAA4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTE1CQCRAwIFBW5vdGVzAA8FA25pbAUEdW5pdAFpAQttaW50X3JoeXRobQQFaW5kZXgEbmFtZQVzY2FsZQVub3RlcwMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0AwkBAiE9AgkAkAMBBQVub3RlcwAQCQACAQIQV3Jvbmcgbm90ZXMgc2l6ZQQBbgQHJG1hdGNoMAkAnwgBAgVjb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQDa2V5CQEGdG9fa2V5AQUFaW5kZXgJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgIFY291bnQJAJYDAQkAzAgCCQBkAgUFaW5kZXgAAQkAzAgCBQFuBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19STAUEbmFtZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19SUwUFc2NhbGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjAwCQCRAwIFBW5vdGVzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjAxCQCRAwIFBW5vdGVzAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjAyCQCRAwIFBW5vdGVzAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjAzCQCRAwIFBW5vdGVzAAMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA0CQCRAwIFBW5vdGVzAAQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA1CQCRAwIFBW5vdGVzAAUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA2CQCRAwIFBW5vdGVzAAYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA3CQCRAwIFBW5vdGVzAAcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA4CQCRAwIFBW5vdGVzAAgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA5CQCRAwIFBW5vdGVzAAkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjEwCQCRAwIFBW5vdGVzAAoJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjExCQCRAwIFBW5vdGVzAAsJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjEyCQCRAwIFBW5vdGVzAAwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjEzCQCRAwIFBW5vdGVzAA0JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjE0CQCRAwIFBW5vdGVzAA4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjE1CQCRAwIFBW5vdGVzAA8FA25pbAUEdW5pdAFpAQ1idXJuX2ludGVybmFsAQhhc3NldF9pZAMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0BAVidXJuMAkA/AcEBRRuZnRfY3JlYXRpb25fYWRkcmVzcwIHYnVybk5GVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFCGFzc2V0X2lkAAEFA25pbAMJAAACBQVidXJuMAUFYnVybjAJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBGJ1cm4AAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QEBWJ1cm4wCQD8BwQFFG5mdF9jcmVhdGlvbl9hZGRyZXNzAgdidXJuTkZUBQNuaWwJAMwIAgkAkQMCCAUBaQhwYXltZW50cwAABQNuaWwDCQAAAgUFYnVybjAFBWJ1cm4wCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQltaW50X3NvbmcVBG5hbWUIcGFyZW50XzAIcGFyZW50XzEDYnBtCGJhcl9zaXplCWJlYXRfc2l6ZQh0b25hbGl0eQZjaG9yZHMIYXJwZWdnaW8Pa2lja19pbnN0cnVtZW50EHNuYXJlX2luc3RydW1lbnQQaGloYXRfaW5zdHJ1bWVudA9iYXNzX2luc3RydW1lbnQPYmFja19pbnN0cnVtZW50D2xlYWRfaW5zdHJ1bWVudAxraWNrX3JoeXRobXMNc25hcmVfcmh5dGhtcw1oaWhhdF9yaHl0aG1zDGJhc3Nfcmh5dGhtcwxiYWNrX3JoeXRobXMMbGVhZF9yaHl0aG1zAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QDCQECIT0CCQCQAwEFBmNob3JkcwAICQACAQIRV3JvbmcgY2hvcmRzIHNpemUDCQECIT0CCQCQAwEFDGtpY2tfcmh5dGhtcwAICQACAQIXV3Jvbmcga2ljayByaHl0aG1zIHNpemUDCQECIT0CCQCQAwEFDXNuYXJlX3JoeXRobXMACAkAAgECGFdyb25nIHNuYXJlIHJoeXRobXMgc2l6ZQMJAQIhPQIJAJADAQUNaGloYXRfcmh5dGhtcwAICQACAQIYV3JvbmcgaGloYXQgcmh5dGhtcyBzaXplAwkBAiE9AgkAkAMBBQxiYXNzX3JoeXRobXMACAkAAgECF1dyb25nIGJhc3Mgcmh5dGhtcyBzaXplAwkBAiE9AgkAkAMBBQxiYWNrX3JoeXRobXMACAkAAgECF1dyb25nIGJhY2sgcmh5dGhtcyBzaXplAwkBAiE9AgkAkAMBBQxsZWFkX3JoeXRobXMACAkAAgECF1dyb25nIGxlYWQgcmh5dGhtcyBzaXplBAFuBAckbWF0Y2gwCQCfCAECBWNvdW50AwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAABApuYW1lX3Nob3J0CQCvAgIFBG5hbWUAEAQLZGVzY3JpcHRpb24FEG1pbnRfZGVzY3JpcHRpb24ECmNvbGxlY3Rpb24FD21pbnRfY29sbGVjdGlvbgQCaWQEByRtYXRjaDAJAPwHBAUUbmZ0X2NyZWF0aW9uX2FkZHJlc3MCCWNyZWF0ZU5GVAkAzAgCBQpuYW1lX3Nob3J0CQDMCAIFC2Rlc2NyaXB0aW9uCQDMCAIJARFAZXh0ck5hdGl2ZSgxMDU4KQECEW1hcmtldF9pbWFnZV9saW5rCQDMCAIFCmNvbGxlY3Rpb24FA25pbAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECE05GVCBjcmVhdGlvbiBmYWlsZWQDCQAAAgUCaWQFAmlkBANrZXkJAQZ0b19rZXkBBQFuBAt0eF90cmFuc2ZlcgMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMAAQkA2QQBBQJpZAUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVjb3VudAkAZAIFAW4AAQkAzAgCCQELU3RyaW5nRW50cnkCBQJpZAUDa2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUCaWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgJfRwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfU0wFBG5hbWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfU04AAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NQMAUIcGFyZW50XzAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TUDEFCHBhcmVudF8xCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIEX1NCMAUDYnBtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIEX1NCMQUIYmFyX3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfU0IyBQliZWF0X3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfU1QFCHRvbmFsaXR5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MwCQCRAwIFBmNob3JkcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MxCQCRAwIFBmNob3JkcwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MyCQCRAwIFBmNob3JkcwACCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MzCQCRAwIFBmNob3JkcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M0CQCRAwIFBmNob3JkcwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M1CQCRAwIFBmNob3JkcwAFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M2CQCRAwIFBmNob3JkcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M3CQCRAwIFBmNob3JkcwAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfU0EFCGFycGVnZ2lvCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0kwBQ9raWNrX2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTEFEHNuYXJlX2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTIFEGhpaGF0X2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTMFD2Jhc3NfaW5zdHJ1bWVudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJNAUPYmFja19pbnN0cnVtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0k1BQ9sZWFkX2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAwCQCRAwIFDGtpY2tfcmh5dGhtcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwMQkAkQMCBQxraWNrX3JoeXRobXMAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDIJAJEDAgUMa2lja19yaHl0aG1zAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAzCQCRAwIFDGtpY2tfcmh5dGhtcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNAkAkQMCBQxraWNrX3JoeXRobXMABAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDUJAJEDAgUMa2lja19yaHl0aG1zAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTA2CQCRAwIFDGtpY2tfcmh5dGhtcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNwkAkQMCBQxraWNrX3JoeXRobXMABwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTAJAJEDAgUNc25hcmVfcmh5dGhtcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxMQkAkQMCBQ1zbmFyZV9yaHl0aG1zAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTEyCQCRAwIFDXNuYXJlX3JoeXRobXMAAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTMJAJEDAgUNc25hcmVfcmh5dGhtcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNAkAkQMCBQ1zbmFyZV9yaHl0aG1zAAQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTE1CQCRAwIFDXNuYXJlX3JoeXRobXMABQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTYJAJEDAgUNc25hcmVfcmh5dGhtcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNwkAkQMCBQ1zbmFyZV9yaHl0aG1zAAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIwCQCRAwIFDWhpaGF0X3JoeXRobXMAAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjEJAJEDAgUNaGloYXRfcmh5dGhtcwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyMgkAkQMCBQ1oaWhhdF9yaHl0aG1zAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIzCQCRAwIFDWhpaGF0X3JoeXRobXMAAwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjQJAJEDAgUNaGloYXRfcmh5dGhtcwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyNQkAkQMCBQ1oaWhhdF9yaHl0aG1zAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTI2CQCRAwIFDWhpaGF0X3JoeXRobXMABgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjcJAJEDAgUNaGloYXRfcmh5dGhtcwAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMAkAkQMCBQxiYXNzX3JoeXRobXMAAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzEJAJEDAgUMYmFzc19yaHl0aG1zAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTMyCQCRAwIFDGJhc3Nfcmh5dGhtcwACCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMwkAkQMCBQxiYXNzX3JoeXRobXMAAwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzQJAJEDAgUMYmFzc19yaHl0aG1zAAQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTM1CQCRAwIFDGJhc3Nfcmh5dGhtcwAFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzNgkAkQMCBQxiYXNzX3JoeXRobXMABgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzcJAJEDAgUMYmFzc19yaHl0aG1zAAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQwCQCRAwIFDGJhY2tfcmh5dGhtcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0MQkAkQMCBQxiYWNrX3JoeXRobXMAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDIJAJEDAgUMYmFja19yaHl0aG1zAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQzCQCRAwIFDGJhY2tfcmh5dGhtcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NAkAkQMCBQxiYWNrX3JoeXRobXMABAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDUJAJEDAgUMYmFja19yaHl0aG1zAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQ2CQCRAwIFDGJhY2tfcmh5dGhtcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NwkAkQMCBQxiYWNrX3JoeXRobXMABwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTAJAJEDAgUMbGVhZF9yaHl0aG1zAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTUxCQCRAwIFDGxlYWRfcmh5dGhtcwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1MgkAkQMCBQxsZWFkX3JoeXRobXMAAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTMJAJEDAgUMbGVhZF9yaHl0aG1zAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU0CQCRAwIFDGxlYWRfcmh5dGhtcwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1NQkAkQMCBQxsZWFkX3JoeXRobXMABQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTYJAJEDAgUMbGVhZF9yaHl0aG1zAAYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU3CQCRAwIFDGxlYWRfcmh5dGhtcwAHBQNuaWwFC3R4X3RyYW5zZmVyBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC21pbnRfaHlicmlkAgZzb25nXzAGc29uZ18xAwMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQAAAgkBEUBleHRyTmF0aXZlKDEwNTgpAQIOZnJlZV9taXhfdG9rZW4EByRtYXRjaDAICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICAAcJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQIPZnJlZV9taXhfYW1vdW50BwkBEG1pbnRfaHlicmlkX2ZyZWUDBQFpBQZzb25nXzAFBnNvbmdfMQkBEG1pbnRfaHlicmlkX3BhaWQDBQFpBQZzb25nXzAFBnNvbmdfMQFpARRtaW50X2h5YnJpZF9hbmRfYnVybgADAwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAABCQACAQINV3JvbmcgcGF5bWVudAQJc29uZ18wX2lkBAckbWF0Y2gwCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAUBYgkAAgECDVdyb25nIHBheW1lbnQECXNvbmdfMV9pZAQHJG1hdGNoMAgJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAFAWIJAAIBAg1Xcm9uZyBwYXltZW50AwkAAAIFCXNvbmdfMF9pZAUJc29uZ18xX2lkCQACAQIZU29uZ3Mgc2hvdWxkIGJlIGRpZmZlcmVudAQGc29uZ18wCQERQGV4dHJOYXRpdmUoMTA1OCkBCQDYBAEFCXNvbmdfMF9pZAQGc29uZ18xCQERQGV4dHJOYXRpdmUoMTA1OCkBCQDYBAEFCXNvbmdfMV9pZAQFYnVybjAJAPwHBAUUbmZ0X2NyZWF0aW9uX2FkZHJlc3MCB2J1cm5ORlQFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAACBQVidXJuMAUFYnVybjAEBWJ1cm4xCQD8BwQFFG5mdF9jcmVhdGlvbl9hZGRyZXNzAgdidXJuTkZUBQNuaWwJAMwIAgkAkQMCCAUBaQhwYXltZW50cwABBQNuaWwDCQAAAgUFYnVybjEFBWJ1cm4xCQCUCgIJAQ5tYWtlX2h5YnJpZF90eAMFAWkFBnNvbmdfMAUGc29uZ18xBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnN0b3JlX2FkZF9zb25nBAhhc3NldF9pZAZhbW91bnQOcHJpY2VfYXNzZXRfaWQMcHJpY2VfYW1vdW50AwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QEDmluaXRpYWxfYW1vdW50BAckbWF0Y2gwCQCfCAEJAKwCAgIDU0FfBQhhc3NldF9pZAMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgAAAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICA1NBXwUIYXNzZXRfaWQJAGQCBQ5pbml0aWFsX2Ftb3VudAUGYW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIDU1RfBQhhc3NldF9pZAUOcHJpY2VfYXNzZXRfaWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIDU1BfBQhhc3NldF9pZAUMcHJpY2VfYW1vdW50BQNuaWwFBHVuaXQBaQEPc3RvcmVfbWludF9zb25nAQhhc3NldF9pZAQGYW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgICA1NBXwUIYXNzZXRfaWQEDGtleV9vcmlnaW5hbAkBEUBleHRyTmF0aXZlKDEwNTgpAQUIYXNzZXRfaWQEBG5hbWUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgNfU0wDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhJXcm9uZyBwYXltZW50IHNpemUDCQECIT0CCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgICA1NUXwUIYXNzZXRfaWQEByRtYXRjaDAICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICAAkAAgECE1dyb25nIHBheW1lbnQgYXNzZXQDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICAgNTUF8FCGFzc2V0X2lkCQACAQIUV3JvbmcgcGF5bWVudCBhbW91bnQDCQBnAgAABQZhbW91bnQJAAIBAhJObyBzb25ncyBhdmFpbGFibGUDCQAAAgUEbmFtZQIACQACAQINSW52YWxpZCBhc3NldAQBbgQHJG1hdGNoMAkAnwgBAgVjb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQKbmFtZV9zaG9ydAkArwICBQRuYW1lABAEC2Rlc2NyaXB0aW9uBRBtaW50X2Rlc2NyaXB0aW9uBApjb2xsZWN0aW9uBQ9taW50X2NvbGxlY3Rpb24EAmlkBAckbWF0Y2gwCQD8BwQFFG5mdF9jcmVhdGlvbl9hZGRyZXNzAgljcmVhdGVORlQJAMwIAgUKbmFtZV9zaG9ydAkAzAgCBQtkZXNjcmlwdGlvbgkAzAgCCQERQGV4dHJOYXRpdmUoMTA1OCkBAhFtYXJrZXRfaW1hZ2VfbGluawkAzAgCBQpjb2xsZWN0aW9uBQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgJAAIBAhNORlQgY3JlYXRpb24gZmFpbGVkAwkAAAIFAmlkBQJpZAQEaWRfYgkA2QQBBQJpZAQDa2V5CQEGdG9fa2V5AQUBbgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVjb3VudAkAZAIFAW4AAQkAzAgCCQELU3RyaW5nRW50cnkCBQJpZAUDa2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUCaWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgJfRwkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICBQxrZXlfb3JpZ2luYWwCAl9HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfU0wFBG5hbWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfU04AAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NQMAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICBQxrZXlfb3JpZ2luYWwCBF9TUDAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TUDEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgRfU1AxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIEX1NCMAkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICBQxrZXlfb3JpZ2luYWwCBF9TQjAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfU0IxCQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgIFDGtleV9vcmlnaW5hbAIEX1NCMQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9TQjIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAKwCAgUMa2V5X29yaWdpbmFsAgRfU0IyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIDX1NUCQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgIFDGtleV9vcmlnaW5hbAIDX1NUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIFDGtleV9vcmlnaW5hbAIEX1NDMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDMQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICBQxrZXlfb3JpZ2luYWwCBF9TQzEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgRfU0MyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIFDGtleV9vcmlnaW5hbAIEX1NDMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDNAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICBQxrZXlfb3JpZ2luYWwCBF9TQzQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgRfU0M1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M2CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIFDGtleV9vcmlnaW5hbAIEX1NDNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDNwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICBQxrZXlfb3JpZ2luYWwCBF9TQzcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19TQQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICBQxrZXlfb3JpZ2luYWwCA19TQQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICBQxrZXlfb3JpZ2luYWwCBF9TSTAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgRfU0kxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0kyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIFDGtleV9vcmlnaW5hbAIEX1NJMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJMwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICBQxrZXlfb3JpZ2luYWwCBF9TSTMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgRfU0k0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0k1CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIFDGtleV9vcmlnaW5hbAIEX1NJNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k1MAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k1MQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k1MgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k1MwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k1NAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k1NQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k1NgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k1NwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kwMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kwMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kwMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kwMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kwNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kwNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kwNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kwNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kxMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kxMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kxMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kxMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kxNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kxNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kxNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kxNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kyMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kyMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kyMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kyMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kyNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kyNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kyNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kyNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kzMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kzMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kzMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kzMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kzNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kzNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kzNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0kzNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k0MAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k0MQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k0MgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k0MwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k0NAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k0NQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k0NgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgUMa2V5X29yaWdpbmFsAgVfU0k0NwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMAAQUEaWRfYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAgNTQV8FCGFzc2V0X2lkCQBlAgUGYW1vdW50AAEFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAHJi8x", "height": 2470085, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 39aJpSPJa1z3HMgnmGpTcRJaDriytfsrXzrGpX7cpkPh Next: none Diff:
OldNewDifferences
409409 }
410410
411411
412+
413+@Callable(i)
414+func store_add_song (asset_id,amount,price_asset_id,price_amount) = if (!(check_whitelist(i.caller)))
415+ then throw("Caller not in whitelist")
416+ else {
417+ let initial_amount = match getInteger(("SA_" + asset_id)) {
418+ case x: Int =>
419+ x
420+ case _ =>
421+ 0
422+ }
423+ $Tuple2([IntegerEntry(("SA_" + asset_id), (initial_amount + amount)), StringEntry(("ST_" + asset_id), price_asset_id), IntegerEntry(("SP_" + asset_id), price_amount)], unit)
424+ }
425+
426+
427+
428+@Callable(i)
429+func store_mint_song (asset_id) = {
430+ let amount = getIntegerValue(("SA_" + asset_id))
431+ let key_original = getStringValue(asset_id)
432+ let name = getStringValue((key_original + "_SL"))
433+ if ((size(i.payments) != 1))
434+ then throw("Wrong payment size")
435+ else if ((getStringValue(("ST_" + asset_id)) != match i.payments[0].assetId {
436+ case b: ByteVector =>
437+ toBase58String(b)
438+ case _ =>
439+ ""
440+ }))
441+ then throw("Wrong payment asset")
442+ else if ((i.payments[0].amount != getIntegerValue(("SP_" + asset_id))))
443+ then throw("Wrong payment amount")
444+ else if ((0 >= amount))
445+ then throw("No songs available")
446+ else if ((name == ""))
447+ then throw("Invalid asset")
448+ else {
449+ let n = match getInteger("count") {
450+ case j: Int =>
451+ j
452+ case _ =>
453+ 0
454+ }
455+ let name_short = take(name, 16)
456+ let description = mint_description
457+ let collection = mint_collection
458+ let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
459+ case x: String =>
460+ x
461+ case _ =>
462+ throw("NFT creation failed")
463+ }
464+ if ((id == id))
465+ then {
466+ let id_b = fromBase58String(id)
467+ let key = to_key(n)
468+ $Tuple2([IntegerEntry("count", (n + 1)), StringEntry(id, key), StringEntry(key, id), IntegerEntry((key + "_G"), getIntegerValue((key_original + "_G"))), StringEntry((key + "_SL"), name), IntegerEntry((key + "_SN"), 0), StringEntry((key + "_SP0"), getStringValue((key_original + "_SP0"))), StringEntry((key + "_SP1"), getStringValue((key_original + "_SP1"))), IntegerEntry((key + "_SB0"), getIntegerValue((key_original + "_SB0"))), IntegerEntry((key + "_SB1"), getIntegerValue((key_original + "_SB1"))), IntegerEntry((key + "_SB2"), getIntegerValue((key_original + "_SB2"))), IntegerEntry((key + "_ST"), getIntegerValue((key_original + "_ST"))), StringEntry((key + "_SC0"), getStringValue((key_original + "_SC0"))), StringEntry((key + "_SC1"), getStringValue((key_original + "_SC1"))), StringEntry((key + "_SC2"), getStringValue((key_original + "_SC2"))), StringEntry((key + "_SC3"), getStringValue((key_original + "_SC3"))), StringEntry((key + "_SC4"), getStringValue((key_original + "_SC4"))), StringEntry((key + "_SC5"), getStringValue((key_original + "_SC5"))), StringEntry((key + "_SC6"), getStringValue((key_original + "_SC6"))), StringEntry((key + "_SC7"), getStringValue((key_original + "_SC7"))), StringEntry((key + "_SA"), getStringValue((key_original + "_SA"))), StringEntry((key + "_SI0"), getStringValue((key_original + "_SI0"))), StringEntry((key + "_SI1"), getStringValue((key_original + "_SI1"))), StringEntry((key + "_SI2"), getStringValue((key_original + "_SI2"))), StringEntry((key + "_SI3"), getStringValue((key_original + "_SI3"))), StringEntry((key + "_SI4"), getStringValue((key_original + "_SI4"))), StringEntry((key + "_SI5"), getStringValue((key_original + "_SI5"))), StringEntry((key + "_SI50"), getStringValue((key_original + "_SI50"))), StringEntry((key + "_SI51"), getStringValue((key_original + "_SI51"))), StringEntry((key + "_SI52"), getStringValue((key_original + "_SI52"))), StringEntry((key + "_SI53"), getStringValue((key_original + "_SI53"))), StringEntry((key + "_SI54"), getStringValue((key_original + "_SI54"))), StringEntry((key + "_SI55"), getStringValue((key_original + "_SI55"))), StringEntry((key + "_SI56"), getStringValue((key_original + "_SI56"))), StringEntry((key + "_SI57"), getStringValue((key_original + "_SI57"))), StringEntry((key + "_SI00"), getStringValue((key_original + "_SI00"))), StringEntry((key + "_SI01"), getStringValue((key_original + "_SI01"))), StringEntry((key + "_SI02"), getStringValue((key_original + "_SI02"))), StringEntry((key + "_SI03"), getStringValue((key_original + "_SI03"))), StringEntry((key + "_SI04"), getStringValue((key_original + "_SI04"))), StringEntry((key + "_SI05"), getStringValue((key_original + "_SI05"))), StringEntry((key + "_SI06"), getStringValue((key_original + "_SI06"))), StringEntry((key + "_SI07"), getStringValue((key_original + "_SI07"))), StringEntry((key + "_SI10"), getStringValue((key_original + "_SI10"))), StringEntry((key + "_SI11"), getStringValue((key_original + "_SI11"))), StringEntry((key + "_SI12"), getStringValue((key_original + "_SI12"))), StringEntry((key + "_SI13"), getStringValue((key_original + "_SI13"))), StringEntry((key + "_SI14"), getStringValue((key_original + "_SI14"))), StringEntry((key + "_SI15"), getStringValue((key_original + "_SI15"))), StringEntry((key + "_SI16"), getStringValue((key_original + "_SI16"))), StringEntry((key + "_SI17"), getStringValue((key_original + "_SI17"))), StringEntry((key + "_SI20"), getStringValue((key_original + "_SI20"))), StringEntry((key + "_SI21"), getStringValue((key_original + "_SI21"))), StringEntry((key + "_SI22"), getStringValue((key_original + "_SI22"))), StringEntry((key + "_SI23"), getStringValue((key_original + "_SI23"))), StringEntry((key + "_SI24"), getStringValue((key_original + "_SI24"))), StringEntry((key + "_SI25"), getStringValue((key_original + "_SI25"))), StringEntry((key + "_SI26"), getStringValue((key_original + "_SI26"))), StringEntry((key + "_SI27"), getStringValue((key_original + "_SI27"))), StringEntry((key + "_SI30"), getStringValue((key_original + "_SI30"))), StringEntry((key + "_SI31"), getStringValue((key_original + "_SI31"))), StringEntry((key + "_SI32"), getStringValue((key_original + "_SI32"))), StringEntry((key + "_SI33"), getStringValue((key_original + "_SI33"))), StringEntry((key + "_SI34"), getStringValue((key_original + "_SI34"))), StringEntry((key + "_SI35"), getStringValue((key_original + "_SI35"))), StringEntry((key + "_SI36"), getStringValue((key_original + "_SI36"))), StringEntry((key + "_SI37"), getStringValue((key_original + "_SI37"))), StringEntry((key + "_SI40"), getStringValue((key_original + "_SI40"))), StringEntry((key + "_SI41"), getStringValue((key_original + "_SI41"))), StringEntry((key + "_SI42"), getStringValue((key_original + "_SI42"))), StringEntry((key + "_SI43"), getStringValue((key_original + "_SI43"))), StringEntry((key + "_SI44"), getStringValue((key_original + "_SI44"))), StringEntry((key + "_SI45"), getStringValue((key_original + "_SI45"))), StringEntry((key + "_SI46"), getStringValue((key_original + "_SI46"))), StringEntry((key + "_SI47"), getStringValue((key_original + "_SI47"))), ScriptTransfer(Address(i.caller.bytes), 1, id_b), IntegerEntry(("SA_" + asset_id), (amount - 1))], unit)
469+ }
470+ else throw("Strict value is not equal to itself.")
471+ }
472+ }
473+
474+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let nft_creation_address = Address(base58'3NCbmjGV7YHKdkHEfWkfGhmZyXsJbymQ5Z5')
55
66 let price_increase_period = 1
77
88 let mint_collection = "Clef genesis songs"
99
1010 let mint_description = "Genesis Clef song. This melody is crafted to become your electronic jam. Use it on clef.one 💚🤍"
1111
1212 let hybrid_collection = "Clef mixes"
1313
1414 let hybrid_description = "Clef mix. This melody was created by an algorithm. Enjoy this jam or use it on clef.one"
1515
1616 let indices_20 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
1717
1818 func to_key (n) = toBase58String(toBytes(n))
1919
2020
2121 func unique_bytes (i) = ((((i.transactionId + i.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
2222
2323
2424 func random_uint (bytes,nonce) = {
2525 let n = toInt(sha256_16Kb((bytes + toBytes(nonce))))
2626 if ((0 > n))
2727 then -(n)
2828 else n
2929 }
3030
3131
3232 func pick_one (key_0,key_1,rand_int,bit_power) = if ((((rand_int / bit_power) % 2) == 0))
3333 then key_0
3434 else key_1
3535
3636
3737 func hybrid_calculate_change (i,token,amount) = if ((size(i.payments) != 1))
3838 then -1
3939 else {
4040 let p = i.payments[0]
4141 let p_token = match p.assetId {
4242 case id: ByteVector =>
4343 toBase58String(id)
4444 case _ =>
4545 ""
4646 }
4747 if ((p_token != token))
4848 then -1
4949 else (p.amount - amount)
5050 }
5151
5252
5353 func make_hybrid_tx (i,song_0,song_1) = {
5454 let n = match getInteger("count") {
5555 case j: Int =>
5656 j
5757 case _ =>
5858 0
5959 }
6060 let name_short = take(("Clef " + toString(n)), 16)
6161 let description = hybrid_description
6262 let collection = hybrid_collection
6363 let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
6464 case x: String =>
6565 x
6666 case _ =>
6767 throw("NFT creation failed")
6868 }
6969 if ((id == id))
7070 then {
7171 let id_b = fromBase58String(id)
7272 let key = to_key(n)
7373 let bytes = unique_bytes(i)
7474 let rand_0 = random_uint(bytes, 0)
7575 let rand_1 = random_uint(bytes, 1)
7676 [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)]
7777 }
7878 else throw("Strict value is not equal to itself.")
7979 }
8080
8181
8282 func mint_hybrid_paid (i,song_0,song_1) = {
8383 let caller_addr = Address(i.caller.bytes)
8484 let song_0_id = fromBase58String(getStringValue(song_0))
8585 let song_1_id = fromBase58String(getStringValue(song_1))
8686 let price_amount = getIntegerValue("price_hybrid_amount")
8787 let price_limit = getIntegerValue("price_hybrid_limit")
8888 let price_token = getStringValue("price_hybrid_token")
8989 let price_change = hybrid_calculate_change(i, price_token, price_amount)
9090 if ((0 > price_change))
9191 then throw("Wrong payment")
9292 else if ((song_0_id == song_1_id))
9393 then throw("Songs should be different")
9494 else if ((1 > assetBalance(caller_addr, song_0_id)))
9595 then throw("Caller do not own first song")
9696 else if ((1 > assetBalance(caller_addr, song_1_id)))
9797 then throw("Caller do not own second song")
9898 else {
9999 let mint_count = getIntegerValue("mint_count")
100100 let price_inc = getIntegerValue("price_hybrid_increment")
101101 let price_count_inc = IntegerEntry("mint_count", (mint_count + 1))
102102 let price_increase = if (if (((mint_count % price_increase_period) == (price_increase_period - 1)))
103103 then (price_limit > (price_amount + price_inc))
104104 else false)
105105 then [price_count_inc, IntegerEntry("price_hybrid_amount", (price_amount + price_inc))]
106106 else [price_count_inc]
107107 if ((price_change > 0))
108108 then $Tuple2(((make_hybrid_tx(i, song_0, song_1) ++ price_increase) ++ [ScriptTransfer(caller_addr, price_change, if ((price_token == ""))
109109 then unit
110110 else fromBase58String(price_token))]), unit)
111111 else $Tuple2((make_hybrid_tx(i, song_0, song_1) ++ price_increase), unit)
112112 }
113113 }
114114
115115
116116 func mint_hybrid_free (i,song_0,song_1) = {
117117 let caller_addr = Address(i.caller.bytes)
118118 let song_0_id = fromBase58String(getStringValue(song_0))
119119 let song_1_id = fromBase58String(getStringValue(song_1))
120120 if ((song_0_id == song_1_id))
121121 then throw("Songs should be different")
122122 else if ((1 > assetBalance(caller_addr, song_0_id)))
123123 then throw("Caller do not own first song")
124124 else if ((1 > assetBalance(caller_addr, song_1_id)))
125125 then throw("Caller do not own second song")
126126 else $Tuple2(make_hybrid_tx(i, song_0, song_1), unit)
127127 }
128128
129129
130130 func check_whitelist (caller) = if ((this == caller))
131131 then true
132132 else match getBoolean(("W_" + toBase58String(caller.bytes))) {
133133 case x: Boolean =>
134134 x
135135 case _ =>
136136 false
137137 }
138138
139139
140140 func fold_set_rarity (accum,index) = {
141141 let $t01215012187 = accum
142142 let entries = $t01215012187._1
143143 let assets = $t01215012187._2
144144 let values = $t01215012187._3
145145 if ((index >= size(assets)))
146146 then accum
147147 else if (if ((0 > values[index]))
148148 then true
149149 else (values[index] > 100))
150150 then throw("Invalid rarity value (must be in range from 0 to 100)")
151151 else $Tuple3((entries :+ IntegerEntry(("rarity_" + assets[index]), values[index])), assets, values)
152152 }
153153
154154
155155 @Callable(i)
156156 func whitelist_add (user) = if ((this != i.caller))
157157 then throw("Caller is not dApp owner")
158158 else $Tuple2([BooleanEntry(("W_" + user), true)], unit)
159159
160160
161161
162162 @Callable(i)
163163 func whitelist_remove (user) = if ((this != i.caller))
164164 then throw("Caller is not dApp owner")
165165 else $Tuple2([DeleteEntry(("W_" + user))], unit)
166166
167167
168168
169169 @Callable(i)
170170 func set_daemon (address) = if ((this != i.caller))
171171 then throw("Caller is not dApp owner")
172172 else $Tuple2([StringEntry("daemon", address)], unit)
173173
174174
175175
176176 @Callable(i)
177177 func set_rarity (assets,values) = if (match getString("daemon") {
178178 case x: String =>
179179 (x != toBase58String(i.caller.bytes))
180180 case _ =>
181181 true
182182 })
183183 then throw("Caller is not daemon")
184184 else if ((size(assets) == 0))
185185 then throw("No assets")
186186 else if ((size(assets) > 20))
187187 then throw("To many assets (must be no more than 20)")
188188 else if ((size(assets) != size(values)))
189189 then throw("Assets and values list size mismatch")
190190 else {
191191 let $t01349013585 = {
192192 let $l = indices_20
193193 let $s = size($l)
194194 let $acc0 = $Tuple3(nil, assets, values)
195195 func $f0_1 ($a,$i) = if (($i >= $s))
196196 then $a
197197 else fold_set_rarity($a, $l[$i])
198198
199199 func $f0_2 ($a,$i) = if (($i >= $s))
200200 then $a
201201 else throw("List size exceeds 20")
202202
203203 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
204204 }
205205 let entries = $t01349013585._1
206206 let assets_ = $t01349013585._2
207207 let values_ = $t01349013585._3
208208 $Tuple2(entries, unit)
209209 }
210210
211211
212212
213213 @Callable(i)
214214 func set_market_image (url) = if (!(check_whitelist(i.caller)))
215215 then throw("Caller not in whitelist")
216216 else $Tuple2([StringEntry("market_image_link", url)], unit)
217217
218218
219219
220220 @Callable(i)
221221 func set_price_hybrid (token,amount,limit,increment) = if (!(check_whitelist(i.caller)))
222222 then throw("Caller not in whitelist")
223223 else $Tuple2([IntegerEntry("mint_count", 0), StringEntry("price_hybrid_token", token), IntegerEntry("price_hybrid_amount", amount), IntegerEntry("price_hybrid_limit", limit), IntegerEntry("price_hybrid_increment", increment)], unit)
224224
225225
226226
227227 @Callable(i)
228228 func set_free_mix_token (token,amount) = if (!(check_whitelist(i.caller)))
229229 then throw("Caller not in whitelist")
230230 else $Tuple2([StringEntry("free_mix_token", token), IntegerEntry("free_mix_amount", amount)], unit)
231231
232232
233233
234234 @Callable(i)
235235 func mint_chord (index,name,notes) = if (!(check_whitelist(i.caller)))
236236 then throw("Caller not in whitelist")
237237 else if ((size(notes) != 16))
238238 then throw("Wrong notes size")
239239 else {
240240 let n = match getInteger("count") {
241241 case j: Int =>
242242 j
243243 case _ =>
244244 0
245245 }
246246 let key = to_key(index)
247247 $Tuple2([IntegerEntry("count", max([(index + 1), n])), StringEntry((key + "_CL"), name), IntegerEntry((key + "_C00"), notes[0]), IntegerEntry((key + "_C01"), notes[1]), IntegerEntry((key + "_C02"), notes[2]), IntegerEntry((key + "_C03"), notes[3]), IntegerEntry((key + "_C04"), notes[4]), IntegerEntry((key + "_C05"), notes[5]), IntegerEntry((key + "_C06"), notes[6]), IntegerEntry((key + "_C07"), notes[7]), IntegerEntry((key + "_C08"), notes[8]), IntegerEntry((key + "_C09"), notes[9]), IntegerEntry((key + "_C10"), notes[10]), IntegerEntry((key + "_C11"), notes[11]), IntegerEntry((key + "_C12"), notes[12]), IntegerEntry((key + "_C13"), notes[13]), IntegerEntry((key + "_C14"), notes[14]), IntegerEntry((key + "_C15"), notes[15])], unit)
248248 }
249249
250250
251251
252252 @Callable(i)
253253 func mint_arpeggio (index,name,notes) = if (!(check_whitelist(i.caller)))
254254 then throw("Caller not in whitelist")
255255 else if ((size(notes) != 16))
256256 then throw("Wrong notes size")
257257 else {
258258 let n = match getInteger("count") {
259259 case j: Int =>
260260 j
261261 case _ =>
262262 0
263263 }
264264 let key = to_key(index)
265265 $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)
266266 }
267267
268268
269269
270270 @Callable(i)
271271 func mint_rhythm (index,name,scale,notes) = if (!(check_whitelist(i.caller)))
272272 then throw("Caller not in whitelist")
273273 else if ((size(notes) != 16))
274274 then throw("Wrong notes size")
275275 else {
276276 let n = match getInteger("count") {
277277 case j: Int =>
278278 j
279279 case _ =>
280280 0
281281 }
282282 let key = to_key(index)
283283 $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)
284284 }
285285
286286
287287
288288 @Callable(i)
289289 func burn_internal (asset_id) = if (!(check_whitelist(i.caller)))
290290 then throw("Caller not in whitelist")
291291 else {
292292 let burn0 = invoke(nft_creation_address, "burnNFT", nil, [AttachedPayment(fromBase58String(asset_id), 1)])
293293 if ((burn0 == burn0))
294294 then $Tuple2(nil, unit)
295295 else throw("Strict value is not equal to itself.")
296296 }
297297
298298
299299
300300 @Callable(i)
301301 func burn () = if (!(check_whitelist(i.caller)))
302302 then throw("Caller not in whitelist")
303303 else {
304304 let burn0 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[0]])
305305 if ((burn0 == burn0))
306306 then $Tuple2(nil, unit)
307307 else throw("Strict value is not equal to itself.")
308308 }
309309
310310
311311
312312 @Callable(i)
313313 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)))
314314 then throw("Caller not in whitelist")
315315 else if ((size(chords) != 8))
316316 then throw("Wrong chords size")
317317 else if ((size(kick_rhythms) != 8))
318318 then throw("Wrong kick rhythms size")
319319 else if ((size(snare_rhythms) != 8))
320320 then throw("Wrong snare rhythms size")
321321 else if ((size(hihat_rhythms) != 8))
322322 then throw("Wrong hihat rhythms size")
323323 else if ((size(bass_rhythms) != 8))
324324 then throw("Wrong bass rhythms size")
325325 else if ((size(back_rhythms) != 8))
326326 then throw("Wrong back rhythms size")
327327 else if ((size(lead_rhythms) != 8))
328328 then throw("Wrong lead rhythms size")
329329 else {
330330 let n = match getInteger("count") {
331331 case j: Int =>
332332 j
333333 case _ =>
334334 0
335335 }
336336 let name_short = take(name, 16)
337337 let description = mint_description
338338 let collection = mint_collection
339339 let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
340340 case x: String =>
341341 x
342342 case _ =>
343343 throw("NFT creation failed")
344344 }
345345 if ((id == id))
346346 then {
347347 let key = to_key(n)
348348 let tx_transfer = if ((this != i.caller))
349349 then [ScriptTransfer(Address(i.caller.bytes), 1, fromBase58String(id))]
350350 else nil
351351 $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)
352352 }
353353 else throw("Strict value is not equal to itself.")
354354 }
355355
356356
357357
358358 @Callable(i)
359359 func mint_hybrid (song_0,song_1) = if (if (if ((size(i.payments) == 1))
360360 then (getStringValue("free_mix_token") == match i.payments[0].assetId {
361361 case b: ByteVector =>
362362 toBase58String(b)
363363 case _ =>
364364 ""
365365 })
366366 else false)
367367 then (i.payments[0].amount == getIntegerValue("free_mix_amount"))
368368 else false)
369369 then mint_hybrid_free(i, song_0, song_1)
370370 else mint_hybrid_paid(i, song_0, song_1)
371371
372372
373373
374374 @Callable(i)
375375 func mint_hybrid_and_burn () = if (if (if ((size(i.payments) != 2))
376376 then true
377377 else (i.payments[0].amount != 1))
378378 then true
379379 else (i.payments[1].amount != 1))
380380 then throw("Wrong payment")
381381 else {
382382 let song_0_id = match i.payments[0].assetId {
383383 case b: ByteVector =>
384384 b
385385 case _ =>
386386 throw("Wrong payment")
387387 }
388388 let song_1_id = match i.payments[1].assetId {
389389 case b: ByteVector =>
390390 b
391391 case _ =>
392392 throw("Wrong payment")
393393 }
394394 if ((song_0_id == song_1_id))
395395 then throw("Songs should be different")
396396 else {
397397 let song_0 = getStringValue(toBase58String(song_0_id))
398398 let song_1 = getStringValue(toBase58String(song_1_id))
399399 let burn0 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[0]])
400400 if ((burn0 == burn0))
401401 then {
402402 let burn1 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[1]])
403403 if ((burn1 == burn1))
404404 then $Tuple2(make_hybrid_tx(i, song_0, song_1), unit)
405405 else throw("Strict value is not equal to itself.")
406406 }
407407 else throw("Strict value is not equal to itself.")
408408 }
409409 }
410410
411411
412+
413+@Callable(i)
414+func store_add_song (asset_id,amount,price_asset_id,price_amount) = if (!(check_whitelist(i.caller)))
415+ then throw("Caller not in whitelist")
416+ else {
417+ let initial_amount = match getInteger(("SA_" + asset_id)) {
418+ case x: Int =>
419+ x
420+ case _ =>
421+ 0
422+ }
423+ $Tuple2([IntegerEntry(("SA_" + asset_id), (initial_amount + amount)), StringEntry(("ST_" + asset_id), price_asset_id), IntegerEntry(("SP_" + asset_id), price_amount)], unit)
424+ }
425+
426+
427+
428+@Callable(i)
429+func store_mint_song (asset_id) = {
430+ let amount = getIntegerValue(("SA_" + asset_id))
431+ let key_original = getStringValue(asset_id)
432+ let name = getStringValue((key_original + "_SL"))
433+ if ((size(i.payments) != 1))
434+ then throw("Wrong payment size")
435+ else if ((getStringValue(("ST_" + asset_id)) != match i.payments[0].assetId {
436+ case b: ByteVector =>
437+ toBase58String(b)
438+ case _ =>
439+ ""
440+ }))
441+ then throw("Wrong payment asset")
442+ else if ((i.payments[0].amount != getIntegerValue(("SP_" + asset_id))))
443+ then throw("Wrong payment amount")
444+ else if ((0 >= amount))
445+ then throw("No songs available")
446+ else if ((name == ""))
447+ then throw("Invalid asset")
448+ else {
449+ let n = match getInteger("count") {
450+ case j: Int =>
451+ j
452+ case _ =>
453+ 0
454+ }
455+ let name_short = take(name, 16)
456+ let description = mint_description
457+ let collection = mint_collection
458+ let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
459+ case x: String =>
460+ x
461+ case _ =>
462+ throw("NFT creation failed")
463+ }
464+ if ((id == id))
465+ then {
466+ let id_b = fromBase58String(id)
467+ let key = to_key(n)
468+ $Tuple2([IntegerEntry("count", (n + 1)), StringEntry(id, key), StringEntry(key, id), IntegerEntry((key + "_G"), getIntegerValue((key_original + "_G"))), StringEntry((key + "_SL"), name), IntegerEntry((key + "_SN"), 0), StringEntry((key + "_SP0"), getStringValue((key_original + "_SP0"))), StringEntry((key + "_SP1"), getStringValue((key_original + "_SP1"))), IntegerEntry((key + "_SB0"), getIntegerValue((key_original + "_SB0"))), IntegerEntry((key + "_SB1"), getIntegerValue((key_original + "_SB1"))), IntegerEntry((key + "_SB2"), getIntegerValue((key_original + "_SB2"))), IntegerEntry((key + "_ST"), getIntegerValue((key_original + "_ST"))), StringEntry((key + "_SC0"), getStringValue((key_original + "_SC0"))), StringEntry((key + "_SC1"), getStringValue((key_original + "_SC1"))), StringEntry((key + "_SC2"), getStringValue((key_original + "_SC2"))), StringEntry((key + "_SC3"), getStringValue((key_original + "_SC3"))), StringEntry((key + "_SC4"), getStringValue((key_original + "_SC4"))), StringEntry((key + "_SC5"), getStringValue((key_original + "_SC5"))), StringEntry((key + "_SC6"), getStringValue((key_original + "_SC6"))), StringEntry((key + "_SC7"), getStringValue((key_original + "_SC7"))), StringEntry((key + "_SA"), getStringValue((key_original + "_SA"))), StringEntry((key + "_SI0"), getStringValue((key_original + "_SI0"))), StringEntry((key + "_SI1"), getStringValue((key_original + "_SI1"))), StringEntry((key + "_SI2"), getStringValue((key_original + "_SI2"))), StringEntry((key + "_SI3"), getStringValue((key_original + "_SI3"))), StringEntry((key + "_SI4"), getStringValue((key_original + "_SI4"))), StringEntry((key + "_SI5"), getStringValue((key_original + "_SI5"))), StringEntry((key + "_SI50"), getStringValue((key_original + "_SI50"))), StringEntry((key + "_SI51"), getStringValue((key_original + "_SI51"))), StringEntry((key + "_SI52"), getStringValue((key_original + "_SI52"))), StringEntry((key + "_SI53"), getStringValue((key_original + "_SI53"))), StringEntry((key + "_SI54"), getStringValue((key_original + "_SI54"))), StringEntry((key + "_SI55"), getStringValue((key_original + "_SI55"))), StringEntry((key + "_SI56"), getStringValue((key_original + "_SI56"))), StringEntry((key + "_SI57"), getStringValue((key_original + "_SI57"))), StringEntry((key + "_SI00"), getStringValue((key_original + "_SI00"))), StringEntry((key + "_SI01"), getStringValue((key_original + "_SI01"))), StringEntry((key + "_SI02"), getStringValue((key_original + "_SI02"))), StringEntry((key + "_SI03"), getStringValue((key_original + "_SI03"))), StringEntry((key + "_SI04"), getStringValue((key_original + "_SI04"))), StringEntry((key + "_SI05"), getStringValue((key_original + "_SI05"))), StringEntry((key + "_SI06"), getStringValue((key_original + "_SI06"))), StringEntry((key + "_SI07"), getStringValue((key_original + "_SI07"))), StringEntry((key + "_SI10"), getStringValue((key_original + "_SI10"))), StringEntry((key + "_SI11"), getStringValue((key_original + "_SI11"))), StringEntry((key + "_SI12"), getStringValue((key_original + "_SI12"))), StringEntry((key + "_SI13"), getStringValue((key_original + "_SI13"))), StringEntry((key + "_SI14"), getStringValue((key_original + "_SI14"))), StringEntry((key + "_SI15"), getStringValue((key_original + "_SI15"))), StringEntry((key + "_SI16"), getStringValue((key_original + "_SI16"))), StringEntry((key + "_SI17"), getStringValue((key_original + "_SI17"))), StringEntry((key + "_SI20"), getStringValue((key_original + "_SI20"))), StringEntry((key + "_SI21"), getStringValue((key_original + "_SI21"))), StringEntry((key + "_SI22"), getStringValue((key_original + "_SI22"))), StringEntry((key + "_SI23"), getStringValue((key_original + "_SI23"))), StringEntry((key + "_SI24"), getStringValue((key_original + "_SI24"))), StringEntry((key + "_SI25"), getStringValue((key_original + "_SI25"))), StringEntry((key + "_SI26"), getStringValue((key_original + "_SI26"))), StringEntry((key + "_SI27"), getStringValue((key_original + "_SI27"))), StringEntry((key + "_SI30"), getStringValue((key_original + "_SI30"))), StringEntry((key + "_SI31"), getStringValue((key_original + "_SI31"))), StringEntry((key + "_SI32"), getStringValue((key_original + "_SI32"))), StringEntry((key + "_SI33"), getStringValue((key_original + "_SI33"))), StringEntry((key + "_SI34"), getStringValue((key_original + "_SI34"))), StringEntry((key + "_SI35"), getStringValue((key_original + "_SI35"))), StringEntry((key + "_SI36"), getStringValue((key_original + "_SI36"))), StringEntry((key + "_SI37"), getStringValue((key_original + "_SI37"))), StringEntry((key + "_SI40"), getStringValue((key_original + "_SI40"))), StringEntry((key + "_SI41"), getStringValue((key_original + "_SI41"))), StringEntry((key + "_SI42"), getStringValue((key_original + "_SI42"))), StringEntry((key + "_SI43"), getStringValue((key_original + "_SI43"))), StringEntry((key + "_SI44"), getStringValue((key_original + "_SI44"))), StringEntry((key + "_SI45"), getStringValue((key_original + "_SI45"))), StringEntry((key + "_SI46"), getStringValue((key_original + "_SI46"))), StringEntry((key + "_SI47"), getStringValue((key_original + "_SI47"))), ScriptTransfer(Address(i.caller.bytes), 1, id_b), IntegerEntry(("SA_" + asset_id), (amount - 1))], unit)
469+ }
470+ else throw("Strict value is not equal to itself.")
471+ }
472+ }
473+
474+

github/deemru/w8io/873ac7e 
82.34 ms