tx · 9bxRgqbELnnbmS5r9QgNxikCPBdzV8mwJDKqP55sPT83

3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p:  -0.01700000 Waves

2023.10.10 12:21 [2792340] smart account 3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p > SELF 0.00000000 Waves

{ "type": 13, "id": "9bxRgqbELnnbmS5r9QgNxikCPBdzV8mwJDKqP55sPT83", "fee": 1700000, "feeAssetId": null, "timestamp": 1696929754055, "version": 2, "chainId": 84, "sender": "3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p", "senderPublicKey": "Hh3eFP2XFetZSfTxQiM1Ps96f68zi8Zh5ghhCZdjgdFs", "proofs": [ "5hqj41JjaP2SeWNTsiMfFcMpC3ipRSb1RpeB9w9S9yC3k9NzG4h2qz2xSJZQFBiuJ3W5bB6PZCYxsjs7yR4FYTi4" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgIRwAHVkVSU0lPTgIFMi4wLjABCWdldFN0ckJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1bml0VGVzdAcACW9yYWNsZUZlZQkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQIPY29uZl9vcmFjbGVfZmVlAAhzaWduRGFwcAkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQIRY29uZl9zaWdud2ViX2RhcHAAC2ZlZVJlY2VpdmVyCQEJZ2V0U3RyQnlLAQIRY29uZl9mZWVfcmVjZWl2ZXIADGFydHdvcmtzRGFwcAkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQISY29uZl9hcnR3b3Jrc19kYXBwAAh1c2VyRGFwcAMFCHVuaXRUZXN0CQEFdmFsdWUBCQCmCAECIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEFdmFsdWUBCQCmCAEJAQlnZXRTdHJCeUsBAg9jb25mX3VzZXJzX2RhcHAADXdoaXRlbGlzdERhcHAJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECE2NvbmZfd2hpdGVsaXN0X2RhcHAAD3B1enpsZV9hcnRfcG9vbAkBCWdldFN0ckJ5SwECFGNvbmZfcHV6emxlX2FydF9wb29sABF1c2R0UFBBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEVF9QUAAOYXJ0QXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhdjb25mX2FjY2VwdGVkX2Fzc2V0X0FSVAARdXNkY1BQQXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhtjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRENfUFAAD2Vhc3RBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECGGNvbmZfYWNjZXB0ZWRfYXNzZXRfRUFTVAARcHV6emxlQXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X1BVWlpMRQAQZXRoUFBBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECGmNvbmZfYWNjZXB0ZWRfYXNzZXRfRVRIX1BQABB3YXZlc0Fzc2V0SWRfc3RyAgVXQVZFUwANdXNkdFBQQXNzZXRJZAkA2QQBBRF1c2R0UFBBc3NldElkX3N0cgAKYXJ0QXNzZXRJZAkA2QQBBQ5hcnRBc3NldElkX3N0cgANdXNkY1BQQXNzZXRJZAkA2QQBBRF1c2RjUFBBc3NldElkX3N0cgALZWFzdEFzc2V0SWQJANkEAQUPZWFzdEFzc2V0SWRfc3RyAA1wdXp6bGVBc3NldElkCQDZBAEFEXB1enpsZUFzc2V0SWRfc3RyAAxldGhQUEFzc2V0SWQJANkEAQUQZXRoUFBBc3NldElkX3N0cgAMd2F2ZXNBc3NldElkAQAAE2FsbF9hY2NlcHRlZF9hc3NldHMJAMwIAgURdXNkdFBQQXNzZXRJZF9zdHIJAMwIAgUOYXJ0QXNzZXRJZF9zdHIJAMwIAgURdXNkY1BQQXNzZXRJZF9zdHIJAMwIAgUPZWFzdEFzc2V0SWRfc3RyCQDMCAIFEXB1enpsZUFzc2V0SWRfc3RyCQDMCAIFEHdhdmVzQXNzZXRJZF9zdHIJAMwIAgUQZXRoUFBBc3NldElkX3N0cgUDbmlsAAVjaHJpcwkBCWdldFN0ckJ5SwECDGNvbmZfYWRtaW5fMQAOY29tbWlzc2lvbl9mZWUAAwANdXNlclN1c3BlbmRlZAIJU1VTUEVOREVEAAt1c2VyUmVtb3ZlZAIHUkVNT1ZFRAAKYXJ0SWxsZWdhbAIHSUxMRUdBTAAMYXJ0U3VzcGVuZGVkAglTVVNQRU5ERUQADmRhcHBSdW5uaW5nS2V5AhRjb25mX2RhcHBfaXNfcnVubmluZwARbWFpbnRlbmFuY2VNU0dLZXkCFGNvbmZfbWFpbnRlbmFuY2VfbXNnAAtkYXBwUnVubmluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ5kYXBwUnVubmluZ0tleQYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFEW1haW50ZW5hbmNlTVNHS2V5AgAACW51bVNhbGVzSwIJbnVtX3NhbGVzAQ1nZXRVc2VyU3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAFA2tleQIFRXJyb3IBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxhcnR3b3Jrc0RhcHAFA2tleQDoBwEMZ2V0QXJ0U3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUMYXJ0d29ya3NEYXBwBQNrZXkCAAEJZ2V0SW50QnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABDWtleVVzZXJTdGF0dXMBBGFkZHIJAKwCAgIMdXNlcl9zdGF0dXNfBQRhZGRyARNrZXlBcnR3b3JrUm95YWx0aWVzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDmFydF9yb3lhbHRpZXNfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlTaWduSUQCCmFydGlzdEFkZHIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQVhcnRJZAIBXwUKYXJ0aXN0QWRkcgEHa2V5RmxhZwIKYXJ0aXN0QWRkcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2ZsYWdfBQVhcnRJZAIBXwUKYXJ0aXN0QWRkcgEKa2V5TkZURGF0YQECaWQJAKwCAgIEbmZ0XwUCaWQBCmdldFNhbGVLZXkEBmNhbGxlcgVuZnRJZAVhcnRJZAtjcmVhdG9yQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1zYWxlMm5kX2luZm9fBQZjYWxsZXICAV8FBW5mdElkAgFfBQVhcnRJZAIBXwULY3JlYXRvckFkZHIBCWdldEJpZEtleQQKb2ZmZXJPd25lcgVuZnRJZAlzYWxlT3duZXIHb2ZmZXJJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglvZmZlcjJuZF8FCm9mZmVyT3duZXICAV8FBW5mdElkAgFfBQlzYWxlT3duZXICAV8FB29mZmVySWQBE2dldEludEJ5S0Zyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQETZ2V0SW50QnlLRnJvbU9yYWNsZQEJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEFCmFydEFzc2V0SWQBEmtleUFydGlzdEFnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAg1hcnRpc3RfYWdlbnRfBQphcnRpc3RBZGRyARZrZXlTZWNvbmRhcnlTaGFyZUFnZW50AQphcnRpc3RBZGRyCQCsAgICF2FydGlzdF9hZ2VudF9zZWNvbmRhcnlfBQphcnRpc3RBZGRyARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgIUYXJ0aXN0X3B1YmxpY19hZ2VudF8FCmFydGlzdEFkZHIBHGtleVNlY29uZGFyeVNoYXJlUHVibGljQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIeYXJ0aXN0X3B1YmxpY19hZ2VudF9zZWNvbmRhcnlfBQphcnRpc3RBZGRyAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQlpc1BheW1lbnQBAWkDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAkAlAoCBQdwYXltZW50BQZhbW91bnQBDGFzc2V0SXNWYWxpZAEMYXNzZXREZXRhaWxzAwMDCQAAAggFDGFzc2V0RGV0YWlscwhxdWFudGl0eQABCQAAAggFDGFzc2V0RGV0YWlscwhkZWNpbWFscwAABwkAAAIIBQxhc3NldERldGFpbHMKcmVpc3N1YWJsZQcHCQAAAggFDGFzc2V0RGV0YWlscwZpc3N1ZXIFDGFydHdvcmtzRGFwcAcBDGlzU2lnbkFydE5GVAECaWQEDGFzc2V0RGV0YWlscwkBBXZhbHVlAQkA7AcBBQJpZAkBDGFzc2V0SXNWYWxpZAEFDGFzc2V0RGV0YWlscwEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFE2FsbF9hY2NlcHRlZF9hc3NldHMFB2Fzc2V0SWQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkBgENZ2V0QmlkQXNzZXRJZAEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBW5mdGlkBAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdGlkAwkAAAIJALECAQUJc2FsZU93bmVyAAAJAAIBAg1ORlQgbm90IGZvdW5kBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQlzYWxlT3duZXICAV8FBW5mdGlkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECEE5GVCBub3QgZm9yIHNhbGUFCXNhbGVPd25lcgEKZ2V0QmlkRGF0YQEDa2V5BAdiaWREYXRhCQEJZ2V0U3RyQnlLAQkArAICBQNrZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECD09mZmVyIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAdhc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgACCQCVCgMFCmJpZERhdGFBcnIFB2Fzc2V0SWQFB2JpZERhdGEBCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA8AcCBQR0aGlzBQFiCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQEKYXJ0SXNWYWxpZAEJYXJ0U3RhdHVzAwkBAiE9AgUJYXJ0U3RhdHVzBQphcnRJbGxlZ2FsCQECIT0CBQlhcnRTdGF0dXMFDGFydFN1c3BlbmRlZAcBDmNoZWNrQXJ0U3RhdHVzAgRhZGRyAmlkBAlhcnRTdGF0dXMJAQxnZXRBcnRTdHJCeUsBCQEHa2V5RmxhZwIFBGFkZHIFAmlkAwkBCmFydElzVmFsaWQBBQlhcnRTdGF0dXMGCQACAQkArAICAhxPcmlnaW5hbCBBcnR3b3JrIGZsYWdnZWQgYXMgBQlhcnRTdGF0dXMBEWNoZWNrQXJ0aXN0U3RhdHVzAQRhZGRyBAxhcnRpc3RTdGF0dXMJAQ1nZXRVc2VyU3RyQnlLAQkBDWtleVVzZXJTdGF0dXMBBQRhZGRyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUNdXNlclN1c3BlbmRlZAkAzAgCBQt1c2VyUmVtb3ZlZAUDbmlsBQxhcnRpc3RTdGF0dXMJAAIBCQCsAgICEE9yaWdpbmFsIEFydGlzdCAFDGFydGlzdFN0YXR1cwYBDGNoZWNrTkZUSW5mbwEHYXNzZXRJZAQHbmZ0RGF0YQkAtQkCCQEMZ2V0QXJ0U3RyQnlLAQkBCmtleU5GVERhdGEBBQdhc3NldElkAgFfBAlhcnRTaWduSUQJAQxnZXRBcnRTdHJCeUsBCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8JAJEDAgUHbmZ0RGF0YQAFAgFfCQCRAwIFB25mdERhdGEABgMDCQEBIQEJAQ5jaGVja0FydFN0YXR1cwIJAJEDAgUHbmZ0RGF0YQAGCQCRAwIFB25mdERhdGEABQkBASEBCQERY2hlY2tBcnRpc3RTdGF0dXMBCQCRAwIFB25mdERhdGEABgcJAJYKBAcJAJEDAgUHbmZ0RGF0YQAFCQCRAwIFB25mdERhdGEABgUJYXJ0U2lnbklECQCWCgQGCQCRAwIFB25mdERhdGEABQkAkQMCBQduZnREYXRhAAYFCWFydFNpZ25JRAENY2hlY2tBUlRFeGlzdAIFYXJ0SWQLY3JlYXRvckFkZHIECWFydFNpZ25JRAkBDGdldEFydFN0ckJ5SwEJAQlrZXlTaWduSUQCBQtjcmVhdG9yQWRkcgUFYXJ0SWQDCQAAAgkAsQIBBQlhcnRTaWduSUQAAAkAAgECHUFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0AwMJAQEhAQkBDmNoZWNrQXJ0U3RhdHVzAgULY3JlYXRvckFkZHIFBWFydElkCQEBIQEJARFjaGVja0FydGlzdFN0YXR1cwEFC2NyZWF0b3JBZGRyBwcGAQxzZXRUcmFuc2ZlcnMHBmFtb3VudAdhc3NldElkBW5mdGlkC2NyZWF0b3JBZGRyCXNhbGVPd25lcgZjYWxsZXIFYXJ0SWQECmNyZWF0b3JDdXQJARNnZXRBcnR3b3JrUm95YWx0aWVzAQkBE2tleUFydHdvcmtSb3lhbHRpZXMCBQtjcmVhdG9yQWRkcgUFYXJ0SWQEBWFnZW50CQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwCQESa2V5QXJ0aXN0QWdlbnRBZGRyAQULY3JlYXRvckFkZHIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEWa2V5U2Vjb25kYXJ5U2hhcmVBZ2VudAEFC2NyZWF0b3JBZGRyAAAEC3B1YmxpY0FnZW50CQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwCQEYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyAQULY3JlYXRvckFkZHIFC2ZlZVJlY2VpdmVyBBBwdWJsaWNBZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEca2V5U2Vjb25kYXJ5U2hhcmVQdWJsaWNBZ2VudAEFC2NyZWF0b3JBZGRyAAAEDWFtb3VudEZvclNpZ24JAGsDBQZhbW91bnQFDmNvbW1pc3Npb25fZmVlAGQEEGFtb3VudEZvckNyZWF0b3IJAGsDBQZhbW91bnQFCmNyZWF0b3JDdXQAkE4EDmFtb3VudEZvck93bmVyCQBlAgUGYW1vdW50CQBkAgUNYW1vdW50Rm9yU2lnbgUQYW1vdW50Rm9yQ3JlYXRvcgQOYW1vdW50Rm9yQWdlbnQDAwkBAiE9AgUFYWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUKYWdlbnRTaGFyZQAABwkAawMFBmFtb3VudAUKYWdlbnRTaGFyZQCQTgAABBRhbW91bnRGb3JQdWJsaWNBZ2VudAMDCQECIT0CBQtwdWJsaWNBZ2VudAULZmVlUmVjZWl2ZXIJAGYCBRBwdWJsaWNBZ2VudFNoYXJlAAAHCQBrAwUGYW1vdW50BRBwdWJsaWNBZ2VudFNoYXJlAJBOAAAEImFtb3VudF9jb21taXNzaW9uX2Zvcl9zaWduX3RvX3N3YXADCQECIT0CBQ5hbW91bnRGb3JBZ2VudAAACQBlAgUNYW1vdW50Rm9yU2lnbgUOYW1vdW50Rm9yQWdlbnQFDWFtb3VudEZvclNpZ24EEWFtb3VudF9hcnRfYmVmb3JlCQEKZ2V0QmFsYW5jZQEFCmFydEFzc2V0SWQDCQAAAgURYW1vdW50X2FydF9iZWZvcmUFEWFtb3VudF9hcnRfYmVmb3JlBA9zd2FwX2ZlZV90b19hcnQDCQECIT0CBQdhc3NldElkBQphcnRBc3NldElkCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQ9wdXp6bGVfYXJ0X3Bvb2wCBHN3YXAJAMwIAgUOYXJ0QXNzZXRJZF9zdHIJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQFImFtb3VudF9jb21taXNzaW9uX2Zvcl9zaWduX3RvX3N3YXAFA25pbAUEdW5pdAMJAAACBQ9zd2FwX2ZlZV90b19hcnQFD3N3YXBfZmVlX3RvX2FydAQQYW1vdW50X2FydF9hZnRlcgkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEGFtb3VudF9hcnRfYWZ0ZXIFEGFtb3VudF9hcnRfYWZ0ZXIEC2NvbW1pc3Npb25zAwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIDCQAAAgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50CQBlAgUQYW1vdW50X2FydF9hZnRlcgURYW1vdW50X2FydF9iZWZvcmUFCmFydEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBWFnZW50BQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgMJAAACBQdhc3NldElkBQphcnRBc3NldElkBQ1hbW91bnRGb3JTaWduCQBlAgUQYW1vdW50X2FydF9hZnRlcgURYW1vdW50X2FydF9iZWZvcmUFCmFydEFzc2V0SWQFA25pbAQKY3JlYXRvckZlZQMJAQIhPQIFFGFtb3VudEZvclB1YmxpY0FnZW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC3B1YmxpY0FnZW50BRRhbW91bnRGb3JQdWJsaWNBZ2VudAUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULY3JlYXRvckFkZHIJAGUCBRBhbW91bnRGb3JDcmVhdG9yBRRhbW91bnRGb3JQdWJsaWNBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtjcmVhdG9yQWRkcgUQYW1vdW50Rm9yQ3JlYXRvcgUHYXNzZXRJZAUDbmlsBAhvd25lckZlZQkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFCXNhbGVPd25lcgUOYW1vdW50Rm9yT3duZXIFB2Fzc2V0SWQEDGNvbGxlY3Rvck5GVAkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgABCQDZBAEFBW5mdGlkCQCWCgQFC2NvbW1pc3Npb25zBQpjcmVhdG9yRmVlBQhvd25lckZlZQUMY29sbGVjdG9yTkZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ92YWxpZGF0ZU1pblNlbGwBBXByaWNlAwkAZwIAAAUFcHJpY2UJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQ9wcm92aWRlQmFzZURhdGECAWkFbmZ0SWQEDSR0MDEyMTM1MTIxNzUJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEyMTM1MTIxNzUCXzEEBmNhbGxlcggFDSR0MDEyMTM1MTIxNzUCXzIEBGRhdGUIBQ0kdDAxMjEzNTEyMTc1Al8zBA0kdDAxMjE3ODEyMjQ3CQEMY2hlY2tORlRJbmZvAQUFbmZ0SWQECmlzVmFsaWRORlQIBQ0kdDAxMjE3ODEyMjQ3Al8xBAVhcnRJZAgFDSR0MDEyMTc4MTIyNDcCXzIEC2NyZWF0b3JBZGRyCAUNJHQwMTIxNzgxMjI0NwJfMwQJYXJ0U2lnbklECAUNJHQwMTIxNzgxMjI0NwJfNAkAmQoHBQJpZAUGY2FsbGVyBQRkYXRlBQppc1ZhbGlkTkZUBQVhcnRJZAULY3JlYXRvckFkZHIFCWFydFNpZ25JRAEOdXBkYXRlTnVtU2FsZXMABAhudW1TYWxlcwkBCWdldEludEJ5SwEFCW51bVNhbGVzSwkBDEludGVnZXJFbnRyeQIFCW51bVNhbGVzSwkAZAIFCG51bVNhbGVzAAEJBmludm9rZQEHc2V0Q29uZgIDa2V5A3ZhbAQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMJAQhjb250YWlucwIFA2tleQIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBCmFwcFJ1bm5pbmcCBmlzTGl2ZQdtZXNzYWdlBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEAmlkCQDYBAEIBQZpbnZva2UNdHJhbnNhY3Rpb25JZAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDmRhcHBSdW5uaW5nS2V5BQZpc0xpdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgURbWFpbnRlbmFuY2VNU0dLZXkFB21lc3NhZ2UFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEHc2VsbE5GVAIFcHJpY2UFYXNzZXQEDSR0MDEzMzEyMTMzNDgJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTMzMTIxMzM0OAJfMQQGYW1vdW50CAUNJHQwMTMzMTIxMzM0OAJfMgMJAQIhPQIFBmFtb3VudAABCQACAQIPTm8gTkZUIGF0dGFjaGVkBAVuZnRJZAMDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkBDGlzU2lnbkFydE5GVAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQHCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhtPbmx5IFNJR04gQXJ0IE5GVCBhY2NlcHRlZC4EDSR0MDEzNTgyMTM2NzUJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMzU4MjEzNjc1Al8xBAZjYWxsZXIIBQ0kdDAxMzU4MjEzNjc1Al8yBARkYXRlCAUNJHQwMTM1ODIxMzY3NQJfMwQKaXNWYWxpZE5GVAgFDSR0MDEzNTgyMTM2NzUCXzQEBWFydElkCAUNJHQwMTM1ODIxMzY3NQJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxMzU4MjEzNjc1Al82BAlhcnRTaWduSUQIBQ0kdDAxMzU4MjEzNjc1Al83AwkAAAIJALECAQUJYXJ0U2lnbklEAAAJAAIBAh1BcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydAMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQVhc3NldAkAAgECJ09ubHkgU0lHTiwgVVNETiwgVVNEVCBvciBXQVZFUyBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkBCmdldFNhbGVLZXkEBQZjYWxsZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHICBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFBGRhdGUCAV8JAKQDAQUFcHJpY2UCAV8FBWFzc2V0AgFfBQVuZnRJZAIBXwUFYXJ0SWQCAV8FC2NyZWF0b3JBZGRyAgFfBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQCBE9QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAUGY2FsbGVyBQNuaWwBaQEPdXBkYXRlU2FsZVByaWNlAwVuZnRJZAVwcmljZQVhc3NldAQNJHQwMTQ1NTIxNDY0NQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDE0NTUyMTQ2NDUCXzEEBmNhbGxlcggFDSR0MDE0NTUyMTQ2NDUCXzIEBGRhdGUIBQ0kdDAxNDU1MjE0NjQ1Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTQ1NTIxNDY0NQJfNAQFYXJ0SWQIBQ0kdDAxNDU1MjE0NjQ1Al81BAtjcmVhdG9yQWRkcggFDSR0MDE0NTUyMTQ2NDUCXzYECWFydFNpZ25JRAgFDSR0MDE0NTUyMTQ2NDUCXzcDCQAAAgkAsQIBBQlhcnRTaWduSUQAAAkAAgECMEFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0LCBjYW5jZWwgeW91ciBzYWxlLgMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAMJAQIhPQIFCXNhbGVPd25lcgUGY2FsbGVyCQACAQIWWW91IGRvbid0IG93biB0aGlzIE5GVAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAg9TYWxlIG5vdCBhY3RpdmUDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUFYXNzZXQJAAIBAidPbmx5IFNJR04sIFVTRE4sIFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQVwcmljZQkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQZjYWxsZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQC1CQIJAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOAgFfCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHc2FsZUtleQIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUIc2FsZUluZm8AAAIBXwkApAMBBQVwcmljZQIBXwUFYXNzZXQCAV8JAJEDAgUIc2FsZUluZm8AAwIBXwkAkQMCBQhzYWxlSW5mbwAEAgFfCQCRAwIFCHNhbGVJbmZvAAUCAV8JAJEDAgUIc2FsZUluZm8ABgUDbmlsAWkBCmNhbmNlbFNhbGUBBW5mdElkBA0kdDAxNTc4NjE2MDI3CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTU3ODYxNjAyNwJfMQQGY2FsbGVyCAUNJHQwMTU3ODYxNjAyNwJfMgQEZGF0ZQgFDSR0MDE1Nzg2MTYwMjcCXzMECmlzVmFsaWRORlQIBQ0kdDAxNTc4NjE2MDI3Al80BAVhcnRJZAgFDSR0MDE1Nzg2MTYwMjcCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTU3ODYxNjAyNwJfNgQJYXJ0U2lnbklECAUNJHQwMTU3ODYxNjAyNwJfNwQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAMJAQIhPQIFCXNhbGVPd25lcgUGY2FsbGVyCQACAQIWWW91IGRvbid0IG93biB0aGlzIE5GVAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAg9TYWxlIG5vdCBhY3RpdmUEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BAUGY2FsbGVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIKX0NBTkNFTExFRAkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgABCQDZBAEFBW5mdElkBQNuaWwBaQEGYnV5TkZUAQVuZnRJZAQNJHQwMTY4NTgxNjk1MQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDE2ODU4MTY5NTECXzEEBmNhbGxlcggFDSR0MDE2ODU4MTY5NTECXzIEBGRhdGUIBQ0kdDAxNjg1ODE2OTUxAl8zBAppc1ZhbGlkTkZUCAUNJHQwMTY4NTgxNjk1MQJfNAQFYXJ0SWQIBQ0kdDAxNjg1ODE2OTUxAl81BAtjcmVhdG9yQWRkcggFDSR0MDE2ODU4MTY5NTECXzYECWFydFNpZ25JRAgFDSR0MDE2ODU4MTY5NTECXzcDCQAAAgkAsQIBBQlhcnRTaWduSUQAAAkAAgECMEFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0LCBjYW5jZWwgeW91ciBzYWxlLgMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BAUJc2FsZU93bmVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4DCQAAAgkAsQIBBQhzYWxlSW5mbwAACQACAQIPU2FsZSBOb3QgZm91bmQhBA1zYWxlSW5mb0FycmF5CQC1CQIFCHNhbGVJbmZvAgFfAwkAAAIJALYJAQkAkQMCBQ1zYWxlSW5mb0FycmF5AAEAAAkAAgECCk9mZmVyIG9ubHkEDSR0MDE3NDQ4MTc0ODQJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTc0NDgxNzQ4NAJfMQQGYW1vdW50CAUNJHQwMTc0NDgxNzQ4NAJfMgQPcGF5bWVudEFzc2V0U3RyAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAIAAwMJAQIhPQIJAJEDAgUNc2FsZUluZm9BcnJheQABCQCkAwEFBmFtb3VudAYJAQIhPQIJAJEDAgUNc2FsZUluZm9BcnJheQACBQ9wYXltZW50QXNzZXRTdHIJAAIBAhpQYXltZW50IGluZm9zIGRvbid0IG1hdGNoLgQNJHQwMTc5OTcxODEzNgkBDHNldFRyYW5zZmVycwcFBmFtb3VudAgFB3BheW1lbnQHYXNzZXRJZAUFbmZ0SWQFC2NyZWF0b3JBZGRyBQlzYWxlT3duZXIFBmNhbGxlcgUFYXJ0SWQEC2NvbW1pc3Npb25zCAUNJHQwMTc5OTcxODEzNgJfMQQKY3JlYXRvckZlZQgFDSR0MDE3OTk3MTgxMzYCXzIECG93bmVyRmVlCAUNJHQwMTc5OTcxODEzNgJfMwQMY29sbGVjdG9yTkZUCAUNJHQwMTc5OTcxODEzNgJfNAkAzggCCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUIc2FsZUluZm8CCF9DTE9TRURfCQCkAwEFBGRhdGUCAV8FAmlkAgFfBQZjYWxsZXIJAMwIAgkBDnVwZGF0ZU51bVNhbGVzAAkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQFA25pbAUKY3JlYXRvckZlZQULY29tbWlzc2lvbnMBaQEIc2V0T2ZmZXIBBW5mdElkBA0kdDAxODU0NzE4NjQ0CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTg1NDcxODY0NAJfMQQKb2ZmZXJPd25lcggFDSR0MDE4NTQ3MTg2NDQCXzIEBGRhdGUIBQ0kdDAxODU0NzE4NjQ0Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTg1NDcxODY0NAJfNAQFYXJ0SWQIBQ0kdDAxODU0NzE4NjQ0Al81BAtjcmVhdG9yQWRkcggFDSR0MDE4NTQ3MTg2NDQCXzYECWFydFNpZ25JRAgFDSR0MDE4NTQ3MTg2NDQCXzcDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQEDSR0MDE4NzA1MTg3NDEJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTg3MDUxODc0MQJfMQQGYW1vdW50CAUNJHQwMTg3MDUxODc0MQJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAAACBQZhbW91bnQAAAkAAgECFk9mZmVyIG9mIDAgbm90IGFsbG93ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQZhbW91bnQJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UECXNhbGVPd25lcgkBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFAmlkAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUEZGF0ZQIBXwkApAMBBQZhbW91bnQCAV8FB2Fzc2V0SWQCAV8FBW5mdElkAgFfBQVhcnRJZAIBXwULY3JlYXRvckFkZHICAV8FCm9mZmVyT3duZXICAV8FAmlkBQNuaWwBaQELYWNjZXB0T2ZmZXIDBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcgQNJHQwMTk1MzQxOTYyNwkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDE5NTM0MTk2MjcCXzEEBmNhbGxlcggFDSR0MDE5NTM0MTk2MjcCXzIEBGRhdGUIBQ0kdDAxOTUzNDE5NjI3Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTk1MzQxOTYyNwJfNAQFYXJ0SWQIBQ0kdDAxOTUzNDE5NjI3Al81BAtjcmVhdG9yQWRkcggFDSR0MDE5NTM0MTk2MjcCXzYECWFydFNpZ25JRAgFDSR0MDE5NTM0MTk2MjcCXzcDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQECXNhbGVPd25lcgkBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFBW5mdElkAwkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIJAAIBAiBPbmx5IHNhbGUgb3duZXIgY2FuIGFjY2VwdCBvZmZlcgQGYmlkS2V5CQEJZ2V0QmlkS2V5BAUKb2ZmZXJPd25lcgUFbmZ0SWQFCXNhbGVPd25lcgUHb2ZmZXJJZAQNJHQwMTk4ODExOTkzNgkBCmdldEJpZERhdGEBBQZiaWRLZXkECmJpZERhdGFBcnIIBQ0kdDAxOTg4MTE5OTM2Al8xBAdhc3NldElkCAUNJHQwMTk4ODExOTkzNgJfMgQHYmlkRGF0YQgFDSR0MDE5ODgxMTk5MzYCXzMEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BAUJc2FsZU93bmVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4DCQAAAgkAsQIBBQhzYWxlSW5mbwAACQACAQIPU2FsZSBOb3QgZm91bmQhBAZhbW91bnQJAQV2YWx1ZQEJALYJAQkAkQMCBQpiaWREYXRhQXJyAAEEDSR0MDIwMTcyMjAzMTAJAQxzZXRUcmFuc2ZlcnMHBQZhbW91bnQFB2Fzc2V0SWQFBW5mdElkBQtjcmVhdG9yQWRkcgUJc2FsZU93bmVyCQCRAwIFCmJpZERhdGFBcnIABgUFYXJ0SWQEC2NvbW1pc3Npb25zCAUNJHQwMjAxNzIyMDMxMAJfMQQKY3JlYXRvckZlZQgFDSR0MDIwMTcyMjAzMTACXzIECG93bmVyRmVlCAUNJHQwMjAxNzIyMDMxMAJfMwQMY29sbGVjdG9yTkZUCAUNJHQwMjAxNzIyMDMxMAJfNAQKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQdhc3NldElkCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQCBVdBVkVTCQDOCAIJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIOX0NMT1NFRC1PRkZFUl8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FCm9mZmVyT3duZXICAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkU3RyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUBQNuaWwFCmNyZWF0b3JGZWUFC2NvbW1pc3Npb25zAWkBC2NhbmNlbE9mZmVyBAVuZnRJZAdvZmZlcklkCm9mZmVyT3duZXIJc2FsZU93bmVyBA0kdDAyMTExMDIxMTg0CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyMTExMDIxMTg0Al8xBAZjYWxsZXIIBQ0kdDAyMTExMDIxMTg0Al8yBARkYXRlCAUNJHQwMjExMTAyMTE4NAJfMwMDCQECIT0CBQZjYWxsZXIFCm9mZmVyT3duZXIJAQIhPQIFBmNhbGxlcgUJc2FsZU93bmVyBwkAAgECHVlvdSBjYW5ub3QgY2FuY2VsIHRoaXMgb2ZmZXIuBAZiaWRLZXkJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQdvZmZlcklkBA0kdDAyMTM1NjIxNDExCQEKZ2V0QmlkRGF0YQEFBmJpZEtleQQKYmlkRGF0YUFycggFDSR0MDIxMzU2MjE0MTECXzEEB2Fzc2V0SWQIBQ0kdDAyMTM1NjIxNDExAl8yBAdiaWREYXRhCAUNJHQwMjEzNTYyMTQxMQJfMwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBmJpZEtleQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQZiaWRLZXkCCl9DQU5DRUxMRUQJAKwCAgkArAICCQCsAgIJAKwCAgUHYmlkRGF0YQILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQUHYXNzZXRJZAUDbmlsAOPsipk=", "height": 2792340, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2u5sHiaMmydfZDL3tV6RstoJv4f1ZcBhRtbv8qyCanCD Next: 9YzeBqXEw9wMZ8SzXZxsKSEXkgQwoU4GUZAXkMVLbvT7 Diff:
OldNewDifferences
224224
225225 func aL (av) = {
226226 let aM = split(N(X(av)), "_")
227- let aN = b(((("art_name_" + aM[5]) + "_") + aM[6]))
227+ let aN = N(((("art_name_" + aM[5]) + "_") + aM[6]))
228228 if (if (!(aI(aM[6], aM[5])))
229229 then !(aJ(aM[6]))
230230 else false)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.0.0"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 let d = false
1010
1111 let e = value(addressFromString(b("conf_oracle_fee")))
1212
1313 let f = value(addressFromString(b("conf_signweb_dapp")))
1414
1515 let g = b("conf_fee_receiver")
1616
1717 let h = value(addressFromString(b("conf_artworks_dapp")))
1818
1919 let i = if (d)
2020 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
2121 else value(addressFromString(b("conf_users_dapp")))
2222
2323 let j = value(addressFromString(b("conf_whitelist_dapp")))
2424
2525 let k = b("conf_puzzle_art_pool")
2626
2727 let l = b("conf_accepted_asset_USDT_PP")
2828
2929 let m = b("conf_accepted_asset_ART")
3030
3131 let n = b("conf_accepted_asset_USDC_PP")
3232
3333 let o = b("conf_accepted_asset_EAST")
3434
3535 let p = b("conf_accepted_asset_PUZZLE")
3636
3737 let q = b("conf_accepted_asset_ETH_PP")
3838
3939 let r = "WAVES"
4040
4141 let s = fromBase58String(l)
4242
4343 let t = fromBase58String(m)
4444
4545 let u = fromBase58String(n)
4646
4747 let v = fromBase58String(o)
4848
4949 let w = fromBase58String(p)
5050
5151 let x = fromBase58String(q)
5252
5353 let y = base58''
5454
5555 let z = [l, m, n, o, p, r, q]
5656
5757 let A = b("conf_admin_1")
5858
5959 let B = 3
6060
6161 let C = "SUSPENDED"
6262
6363 let D = "REMOVED"
6464
6565 let E = "ILLEGAL"
6666
6767 let F = "SUSPENDED"
6868
6969 let G = "conf_dapp_is_running"
7070
7171 let H = "conf_maintenance_msg"
7272
7373 let I = valueOrElse(getBoolean(this, G), true)
7474
7575 let J = valueOrElse(getString(this, H), "")
7676
7777 let K = "num_sales"
7878
7979 func L (c) = valueOrElse(getString(i, c), "Error")
8080
8181
8282 func M (c) = valueOrElse(getInteger(h, c), 1000)
8383
8484
8585 func N (c) = valueOrElse(getString(h, c), "")
8686
8787
8888 func O (c) = valueOrElse(getInteger(this, c), 0)
8989
9090
9191 func P (Q) = ("user_status_" + Q)
9292
9393
9494 func R (S,T) = ((("art_royalties_" + T) + "_") + S)
9595
9696
9797 func U (V,T) = ((("art_signid_" + T) + "_") + V)
9898
9999
100100 func W (V,T) = ((("art_flag_" + T) + "_") + V)
101101
102102
103103 func X (Y) = ("nft_" + Y)
104104
105105
106106 func Z (S,aa,T,ab) = ((((((("sale2nd_info_" + S) + "_") + aa) + "_") + T) + "_") + ab)
107107
108108
109109 func ac (ad,aa,ae,af) = ((((((("offer2nd_" + ad) + "_") + aa) + "_") + ae) + "_") + af)
110110
111111
112112 func ag (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
113113
114114
115115 let ah = ag(("certification_fee_" + toBase58String(t)))
116116
117117 func ai (V) = ("artist_agent_" + V)
118118
119119
120120 func aj (V) = ("artist_agent_secondary_" + V)
121121
122122
123123 func ak (V) = ("artist_public_agent_" + V)
124124
125125
126126 func al (V) = ("artist_public_agent_secondary_" + V)
127127
128128
129129 func am (an) = if (!(I))
130130 then throw(J)
131131 else $Tuple3(toBase58String(an.transactionId), toBase58String(an.caller.bytes), lastBlock.timestamp)
132132
133133
134134 func ao (an) = if ((size(an.payments) == 0))
135135 then throw("No payment attached")
136136 else {
137137 let ap = value(an.payments[0])
138138 let aq = value(ap.amount)
139139 $Tuple2(ap, aq)
140140 }
141141
142142
143143 func ar (as) = if (if (if ((as.quantity == 1))
144144 then (as.decimals == 0)
145145 else false)
146146 then (as.reissuable == false)
147147 else false)
148148 then (as.issuer == h)
149149 else false
150150
151151
152152 func at (Y) = {
153153 let as = value(assetInfo(Y))
154154 ar(as)
155155 }
156156
157157
158158 func au (av) = if (!(containsElement(z, av)))
159159 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
160160 else true
161161
162162
163163 func aw (av) = if ((av == "WAVES"))
164164 then unit
165165 else fromBase58String(av)
166166
167167
168168 func ax (ay) = {
169169 let ae = b(("current_owner_on_dapp_" + ay))
170170 if ((size(ae) == 0))
171171 then throw("NFT not found")
172172 else {
173173 let az = b(((("sale2nd_status_" + ae) + "_") + ay))
174174 if ((az != "OPEN"))
175175 then throw("NFT not for sale")
176176 else ae
177177 }
178178 }
179179
180180
181181 func aA (c) = {
182182 let aB = b((c + "_OPEN"))
183183 if ((aB == ""))
184184 then throw("Offer not found")
185185 else {
186186 let aC = split(aB, "_")
187187 let av = aw(aC[2])
188188 $Tuple3(aC, av, aB)
189189 }
190190 }
191191
192192
193193 func aD (av) = {
194194 let aE = av
195195 if ($isInstanceOf(aE, "ByteVector"))
196196 then {
197197 let aF = aE
198198 assetBalance(this, aF)
199199 }
200200 else wavesBalance(this).available
201201 }
202202
203203
204204 func aG (aH) = if ((aH != E))
205205 then (aH != F)
206206 else false
207207
208208
209209 func aI (Q,Y) = {
210210 let aH = N(W(Q, Y))
211211 if (aG(aH))
212212 then true
213213 else throw(("Original Artwork flagged as " + aH))
214214 }
215215
216216
217217 func aJ (Q) = {
218218 let aK = L(P(Q))
219219 if (containsElement([C, D], aK))
220220 then throw(("Original Artist " + aK))
221221 else true
222222 }
223223
224224
225225 func aL (av) = {
226226 let aM = split(N(X(av)), "_")
227- let aN = b(((("art_name_" + aM[5]) + "_") + aM[6]))
227+ let aN = N(((("art_name_" + aM[5]) + "_") + aM[6]))
228228 if (if (!(aI(aM[6], aM[5])))
229229 then !(aJ(aM[6]))
230230 else false)
231231 then $Tuple4(false, aM[5], aM[6], aN)
232232 else $Tuple4(true, aM[5], aM[6], aN)
233233 }
234234
235235
236236 func aO (T,ab) = {
237237 let aN = N(U(ab, T))
238238 if ((size(aN) == 0))
239239 then throw("Artwork not found on SIGN Art")
240240 else if (if (!(aI(ab, T)))
241241 then !(aJ(ab))
242242 else false)
243243 then false
244244 else true
245245 }
246246
247247
248248 func aP (aq,av,ay,ab,ae,S,T) = {
249249 let aQ = M(R(ab, T))
250250 let aR = valueOrElse(getString(i, ai(ab)), g)
251251 let aS = valueOrElse(getInteger(i, aj(ab)), 0)
252252 let aT = valueOrElse(getString(i, ak(ab)), g)
253253 let aU = valueOrElse(getInteger(i, al(ab)), 0)
254254 let aV = fraction(aq, B, 100)
255255 let aW = fraction(aq, aQ, 10000)
256256 let aX = (aq - (aV + aW))
257257 let aY = if (if ((aR != g))
258258 then (aS > 0)
259259 else false)
260260 then fraction(aq, aS, 10000)
261261 else 0
262262 let aZ = if (if ((aT != g))
263263 then (aU > 0)
264264 else false)
265265 then fraction(aq, aU, 10000)
266266 else 0
267267 let ba = if ((aY != 0))
268268 then (aV - aY)
269269 else aV
270270 let bb = aD(t)
271271 if ((bb == bb))
272272 then {
273273 let bc = if ((av != t))
274274 then invoke(Address(fromBase58String(k)), "swap", [m, 1], [AttachedPayment(av, ba)])
275275 else unit
276276 if ((bc == bc))
277277 then {
278278 let bd = aD(t)
279279 if ((bd == bd))
280280 then {
281281 let be = if ((aY != 0))
282282 then [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
283283 then (aV - aY)
284284 else (bd - bb), t), ScriptTransfer(Address(fromBase58String(aR)), aY, av)]
285285 else [ScriptTransfer(Address(fromBase58String(g)), if ((av == t))
286286 then aV
287287 else (bd - bb), t)]
288288 let bf = if ((aZ != 0))
289289 then [ScriptTransfer(Address(fromBase58String(aT)), aZ, av), ScriptTransfer(Address(fromBase58String(ab)), (aW - aZ), av)]
290290 else [ScriptTransfer(Address(fromBase58String(ab)), aW, av)]
291291 let bg = ScriptTransfer(Address(fromBase58String(ae)), aX, av)
292292 let bh = ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(ay))
293293 $Tuple4(be, bf, bg, bh)
294294 }
295295 else throw("Strict value is not equal to itself.")
296296 }
297297 else throw("Strict value is not equal to itself.")
298298 }
299299 else throw("Strict value is not equal to itself.")
300300 }
301301
302302
303303 func bi (bj) = if ((0 >= bj))
304304 then throw("Wrong minimum sell price")
305305 else true
306306
307307
308308 func bk (an,aa) = {
309309 let bl = am(an)
310310 let Y = bl._1
311311 let S = bl._2
312312 let bm = bl._3
313313 let bn = aL(aa)
314314 let bo = bn._1
315315 let T = bn._2
316316 let ab = bn._3
317317 let aN = bn._4
318318 $Tuple7(Y, S, bm, bo, T, ab, aN)
319319 }
320320
321321
322322 func bp () = {
323323 let bq = O(K)
324324 IntegerEntry(K, (bq + 1))
325325 }
326326
327327
328328 @Callable(br)
329329 func setConf (c,bs) = {
330330 let S = toString(br.caller)
331331 if (containsElement([A, toString(this)], S))
332332 then if (contains(c, "conf_"))
333333 then [StringEntry(c, bs)]
334334 else throw("Entries starting with conf_ only")
335335 else throw("You are not allowed to change this")
336336 }
337337
338338
339339
340340 @Callable(br)
341341 func appRunning (bt,bu) = {
342342 let S = toString(br.caller)
343343 let Y = toBase58String(br.transactionId)
344344 if (containsElement([A, toString(this)], S))
345345 then [BooleanEntry(G, bt), StringEntry(H, bu)]
346346 else throw("You are not allowed to change this")
347347 }
348348
349349
350350
351351 @Callable(an)
352352 func sellNFT (bj,bv) = {
353353 let bw = ao(an)
354354 let ap = bw._1
355355 let aq = bw._2
356356 if ((aq != 1))
357357 then throw("No NFT attached")
358358 else {
359359 let aa = if (if (isDefined(ap.assetId))
360360 then at(value(ap.assetId))
361361 else false)
362362 then toBase58String(value(ap.assetId))
363363 else throw("Only SIGN Art NFT accepted.")
364364 let bx = bk(an, aa)
365365 let Y = bx._1
366366 let S = bx._2
367367 let bm = bx._3
368368 let bo = bx._4
369369 let T = bx._5
370370 let ab = bx._6
371371 let aN = bx._7
372372 if ((size(aN) == 0))
373373 then throw("Artwork not found on SIGN Art")
374374 else if (!(bo))
375375 then throw("Not a valid nft")
376376 else if (!(au(bv)))
377377 then throw("Only SIGN, USDN, USDT or WAVES accepted")
378378 else if (!(bi(bj)))
379379 then throw("Wrong minimum sell price")
380380 else [StringEntry((Z(S, aa, T, ab) + "_OPEN"), ((((((((((((toString(bm) + "_") + toString(bj)) + "_") + bv) + "_") + aa) + "_") + T) + "_") + ab) + "_") + Y)), StringEntry(((("sale2nd_status_" + S) + "_") + aa), "OPEN"), StringEntry(("current_owner_on_dapp_" + aa), S)]
381381 }
382382 }
383383
384384
385385
386386 @Callable(an)
387387 func updateSalePrice (aa,bj,bv) = {
388388 let by = bk(an, aa)
389389 let Y = by._1
390390 let S = by._2
391391 let bm = by._3
392392 let bo = by._4
393393 let T = by._5
394394 let ab = by._6
395395 let aN = by._7
396396 if ((size(aN) == 0))
397397 then throw("Artwork not found on SIGN Art, cancel your sale.")
398398 else if (!(bo))
399399 then throw("Not a valid nft")
400400 else {
401401 let ae = b(("current_owner_on_dapp_" + aa))
402402 if ((ae != S))
403403 then throw("You don't own this NFT")
404404 else {
405405 let az = b(((("sale2nd_status_" + S) + "_") + aa))
406406 if ((az != "OPEN"))
407407 then throw("Sale not active")
408408 else if (!(au(bv)))
409409 then throw("Only SIGN, USDN, USDT or WAVES accepted")
410410 else if (!(bi(bj)))
411411 then throw("Wrong minimum sell price")
412412 else {
413413 let bz = Z(S, aa, T, ab)
414414 let bA = split(b((bz + "_OPEN")), "_")
415415 [StringEntry((bz + "_OPEN"), ((((((((((((bA[0] + "_") + toString(bj)) + "_") + bv) + "_") + bA[3]) + "_") + bA[4]) + "_") + bA[5]) + "_") + bA[6]))]
416416 }
417417 }
418418 }
419419 }
420420
421421
422422
423423 @Callable(an)
424424 func cancelSale (aa) = {
425425 let bB = bk(an, aa)
426426 let Y = bB._1
427427 let S = bB._2
428428 let bm = bB._3
429429 let bo = bB._4
430430 let T = bB._5
431431 let ab = bB._6
432432 let aN = bB._7
433433 let ae = b(("current_owner_on_dapp_" + aa))
434434 if ((ae != S))
435435 then throw("You don't own this NFT")
436436 else {
437437 let az = b(((("sale2nd_status_" + S) + "_") + aa))
438438 if ((az != "OPEN"))
439439 then throw("Sale not active")
440440 else {
441441 let bz = Z(S, aa, T, ab)
442442 let bA = b((bz + "_OPEN"))
443443 [DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + S) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CANCELLED"), ((((bA + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), 1, fromBase58String(aa))]
444444 }
445445 }
446446 }
447447
448448
449449
450450 @Callable(an)
451451 func buyNFT (aa) = {
452452 let bC = bk(an, aa)
453453 let Y = bC._1
454454 let S = bC._2
455455 let bm = bC._3
456456 let bo = bC._4
457457 let T = bC._5
458458 let ab = bC._6
459459 let aN = bC._7
460460 if ((size(aN) == 0))
461461 then throw("Artwork not found on SIGN Art, cancel your sale.")
462462 else if (!(bo))
463463 then throw("Not a valid nft")
464464 else {
465465 let ae = ax(aa)
466466 let bz = Z(ae, aa, T, ab)
467467 let bA = b((bz + "_OPEN"))
468468 if ((size(bA) == 0))
469469 then throw("Sale Not found!")
470470 else {
471471 let bD = split(bA, "_")
472472 if ((parseInt(bD[1]) == 0))
473473 then throw("Offer only")
474474 else {
475475 let bE = ao(an)
476476 let ap = bE._1
477477 let aq = bE._2
478478 let bF = if (isDefined(ap.assetId))
479479 then toBase58String(value(ap.assetId))
480480 else ""
481481 if (if ((bD[1] != toString(aq)))
482482 then true
483483 else (bD[2] != bF))
484484 then throw("Payment infos don't match.")
485485 else {
486486 let bG = aP(aq, ap.assetId, aa, ab, ae, S, T)
487487 let be = bG._1
488488 let bf = bG._2
489489 let bg = bG._3
490490 let bh = bG._4
491491 (([DeleteEntry((bz + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((bA + "_CLOSED_") + toString(bm)) + "_") + Y) + "_") + S)), bp(), bg, bh] ++ bf) ++ be)
492492 }
493493 }
494494 }
495495 }
496496 }
497497
498498
499499
500500 @Callable(an)
501501 func setOffer (aa) = {
502502 let bH = bk(an, aa)
503503 let Y = bH._1
504504 let ad = bH._2
505505 let bm = bH._3
506506 let bo = bH._4
507507 let T = bH._5
508508 let ab = bH._6
509509 let aN = bH._7
510510 if (!(bo))
511511 then throw("Not a valid nft")
512512 else {
513513 let bI = ao(an)
514514 let ap = bI._1
515515 let aq = bI._2
516516 let av = if (!(isDefined(ap.assetId)))
517517 then "WAVES"
518518 else toBase58String(value(ap.assetId))
519519 if (!(au(av)))
520520 then throw("asset not accepted")
521521 else if ((aq == 0))
522522 then throw("Offer of 0 not allowed")
523523 else if (!(bi(aq)))
524524 then throw("Wrong minimum sell price")
525525 else {
526526 let ae = ax(aa)
527527 [StringEntry((ac(ad, aa, ae, Y) + "_OPEN"), ((((((((((((((toString(bm) + "_") + toString(aq)) + "_") + av) + "_") + aa) + "_") + T) + "_") + ab) + "_") + ad) + "_") + Y))]
528528 }
529529 }
530530 }
531531
532532
533533
534534 @Callable(an)
535535 func acceptOffer (aa,af,ad) = {
536536 let bJ = bk(an, aa)
537537 let Y = bJ._1
538538 let S = bJ._2
539539 let bm = bJ._3
540540 let bo = bJ._4
541541 let T = bJ._5
542542 let ab = bJ._6
543543 let aN = bJ._7
544544 if (!(bo))
545545 then throw("Not a valid nft")
546546 else {
547547 let ae = ax(aa)
548548 if ((S != ae))
549549 then throw("Only sale owner can accept offer")
550550 else {
551551 let bK = ac(ad, aa, ae, af)
552552 let bL = aA(bK)
553553 let aC = bL._1
554554 let av = bL._2
555555 let aB = bL._3
556556 let bz = Z(ae, aa, T, ab)
557557 let bA = b((bz + "_OPEN"))
558558 if ((size(bA) == 0))
559559 then throw("Sale Not found!")
560560 else {
561561 let aq = value(parseInt(aC[1]))
562562 let bM = aP(aq, av, aa, ab, ae, aC[6], T)
563563 let be = bM._1
564564 let bf = bM._2
565565 let bg = bM._3
566566 let bh = bM._4
567567 let bN = if (isDefined(av))
568568 then toBase58String(value(av))
569569 else "WAVES"
570570 (([DeleteEntry((bz + "_OPEN")), DeleteEntry((bK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + ae) + "_") + aa)), DeleteEntry(("current_owner_on_dapp_" + aa)), StringEntry((bK + "_CLOSED"), ((((aB + "_CLOSED_") + toString(bm)) + "_") + Y)), StringEntry((((bz + "_") + Y) + "_CLOSED"), ((((((((((bA + "_CLOSED-OFFER_") + toString(bm)) + "_") + Y) + "_") + ad) + "_") + toString(aq)) + "_") + bN)), bp(), bg, bh] ++ bf) ++ be)
571571 }
572572 }
573573 }
574574 }
575575
576576
577577
578578 @Callable(an)
579579 func cancelOffer (aa,af,ad,ae) = {
580580 let bO = am(an)
581581 let Y = bO._1
582582 let S = bO._2
583583 let bm = bO._3
584584 if (if ((S != ad))
585585 then (S != ae)
586586 else false)
587587 then throw("You cannot cancel this offer.")
588588 else {
589589 let bK = ac(ad, aa, ae, af)
590590 let bP = aA(bK)
591591 let aC = bP._1
592592 let av = bP._2
593593 let aB = bP._3
594594 [DeleteEntry((bK + "_OPEN")), StringEntry((bK + "_CANCELLED"), ((((aB + "_CANCELLED_") + toString(bm)) + "_") + Y)), ScriptTransfer(Address(fromBase58String(S)), parseIntValue(aC[1]), av)]
595595 }
596596 }
597597
598598

github/deemru/w8io/3ef1775 
404.66 ms