tx · 7tvBSXMDLD5oZYJDWK7b44wzSu8pjAg2Pv93VcXdwd4D

3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt:  -0.06000000 Waves

2023.12.27 12:06 [2904971] smart account 3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt > SELF 0.00000000 Waves

{ "type": 13, "id": "7tvBSXMDLD5oZYJDWK7b44wzSu8pjAg2Pv93VcXdwd4D", "fee": 6000000, "feeAssetId": null, "timestamp": 1703667922668, "version": 2, "chainId": 84, "sender": "3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt", "senderPublicKey": "3fNYAZ872D7hsaic3sPDZd5uAk59U5CiWiA153FUZ6Qv", "proofs": [ "2ZM7L1tmgEACj2VAfAHKyATkPRX9kqsKYbzuW7PnkDpfj1Yyjwg1twxW6USUCXs3gUuut3qQZ5DAhncYw4pck5VP" ], "script": "base64:BgKMAQgCEhAKDhgYAQEICAEBAQEBCAEIEgMKAQESAwoBARIAEgQKAggBEgQKAggBEgMKAQESBAoCCAESAwoBARIECgIIARIFCgMICAESAwoBCBIAEgASAwoBCBIAEgMKAQESAwoBCBIDCgEIEgQKAgEBEgYKBAEBAQESABIAEgASAwoBCBIECgIIARIDCgEIfgADU0VQAgJfXwAFV0FWRVMCBXdhdmVzAAdNQVhfSU5UAP//////////fwAHTUFYX0ZFRQDAhD0ADU1BWF9BTVBMSUZJRVIAwIQ9ABRNQVhfV0VJR0hUX0FNUExJRklFUgDAhD0ACk1BWF9XRUlHSFQAwIQ9AA9GRUVfUkFURV9GQUNUT1IAwIQ9AAtSQVRFX0ZBQ1RPUgDAhD0ADlBFUkNFTlRfRkFDVE9SCQC2AgEAgICQu7rWrfANABdESVNCQWxBTkNFX0NPRUZGX0ZBQ1RPUgkAtgIBAICglKWNHQAQWkVST19JTlRfTElTVF8xMAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAFA25pbAAQWkVST19JTlRfTElTVF8xMQkAzQgCBRBaRVJPX0lOVF9MSVNUXzEwAAAACklOREVYX0xJU1QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJBQNuaWwAC1pFUk9fQklHSU5UCQC2AgEAAAATWkVST19CSUdJTlRfTElTVF8xMQkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAUDbmlsAAxJTlRfREVDSU1BTFMACAAPQklHSU5UX0RFQ0lNQUxTABIAB0xJU1RfNjQJAL0JAgJ/MF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMAIBXwAMS0VZX01VTFRJU0lHAghNVUxUSVNJRwAKS0VZX1NUQVRVUwIGU1RBVFVTAApLRVlfUEFVU0VEAgZQQVVTRUQACktFWV9QQVVTRVICBlBBVVNFUgALS0VZX1NUT1JBR0UCB1NUT1JBR0UACktFWV9BU1NFVFMCBkFTU0VUUwASS0VZX0FTU0VUX0JBTEFOQ0VTAg5BU1NFVF9CQUxBTkNFUwATS0VZX1JFV0FSRF9CQUxBTkNFUwIPUkVXQVJEX0JBTEFOQ0VTABFLRVlfQVNTRVRfV0VJR0hUUwINQVNTRVRfV0VJR0hUUwAKS0VZX0xQX0ZFRQIGTFBfRkVFABBLRVlfUFJPVE9DT0xfRkVFAgxQUk9UT0NPTF9GRUUADUtFWV9QUkVDSVNJT04CCVBSRUNJU0lPTgAUS0VZX1NJR01BX0ZFRV9QRVJfTFACEFNJR01BX0ZFRV9QRVJfTFAAGUtFWV9VU0VSX1NJR01BX0ZFRV9QRVJfTFACFVVTRVJfU0lHTUFfRkVFX1BFUl9MUAALS0VZX1VTRVJfTFACB1VTRVJfTFAADEtFWV9UT1RBTF9MUAIIVE9UQUxfTFAAEEtFWV9VU0VSX1BST0ZJVFMCDFVTRVJfUFJPRklUUwAMS0VZX1dBVENIRE9HAghXQVRDSERPRwATS0VZX1dBVENIRE9HX09GRlNFVAIPV0FUQ0hET0dfT0ZGU0VUABNLRVlfV0FUQ0hET0dfSEVJR0hUAg9XQVRDSERPR19IRUlHSFQBEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQ5fdmFsaWRhdGVBc3NldAIIYXNzZXRJZF8EZXJyXwMJAAACBQhhc3NldElkXwUFV0FWRVMGBAckbWF0Y2gwCQDsBwEJANkEAQUIYXNzZXRJZF8DCQABAgUHJG1hdGNoMAIFQXNzZXQEAWEFByRtYXRjaDAGCQACAQUEZXJyXwEMX3ZhbGlkYXRlSW50BAR2YWxfDmxvd2VyQm91bmRhcnlfDnVwcGVyQm91bmRhcnlfBGVycl8DAwkAZgIFDmxvd2VyQm91bmRhcnlfBQR2YWxfBgkAZgIFBHZhbF8FDnVwcGVyQm91bmRhcnlfCQACAQUEZXJyXwYBDV92YWxpZGF0ZUJvb2wDBHZhbF8HdGFyZ2V0XwRlcnJfAwkBAiE9AgUEdmFsXwUHdGFyZ2V0XwkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdOb3RFcQMFdmFsMV8FdmFsMl8EZXJyXwMJAAACBQV2YWwxXwUFdmFsMl8JAAIBBQRlcnJfBgEQX3ZhbGlkYXRlSW50TGlzdAQEdmFsXw5sb3dlckJvdW5kYXJ5Xw51cHBlckJvdW5kYXJ5XwRlcnJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAckbWF0Y2gwCQC2CQEFBGVsZW0DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwAwUDYWNjCQEMX3ZhbGlkYXRlSW50BAUBYQUObG93ZXJCb3VuZGFyeV8FDnVwcGVyQm91bmRhcnlfBQRlcnJfBwkAAgEFBGVycl8KAAIkbAUEdmFsXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAGCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEPX3ZhbGlkYXRlQXNzZXRzAgdhc3NldHNfBGVycl8KAQhmb2xkRnVuYwIDYWNjBGVsZW0DBQNhY2MJAQ5fdmFsaWRhdGVBc3NldAIFBGVsZW0FBGVycl8HCgACJGwFB2Fzc2V0c18KAAIkcwkAkAMBBQIkbAoABSRhY2MwBgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEl92YWxpZGF0ZUludEVxdWFscwMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GARJfdmFsaWRhdGVUb2tlbk5hbWUCBHZhbF8EZXJyXwMDCQBmAgAECQCxAgEFBHZhbF8GCQBmAgkAsQIBBQR2YWxfABAJAAIBBQRlcnJfBgETX3ZhbGlkYXRlVG9rZW5EZXNjcgIEdmFsXwRlcnJfAwkAZgIJALECAQUEdmFsXwDoBwkAAgEFBGVycl8GARFfdmFsaWRhdGVEZWNpbWFscwIEdmFsXwRlcnJfAwMJAGYCAAAFBHZhbF8GCQBmAgUEdmFsXwAICQACAQUEZXJyXwYBEF92YWxpZGF0ZVBheW1lbnQECHBheW1lbnRfCGFzc2V0SWRfD3JlcXVpcmVkQW1vdW50XwRlcnJfBAckbWF0Y2gwCAUIcGF5bWVudF8HYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFhBQckbWF0Y2gwAwkBAiE9AgUIYXNzZXRJZF8JANgEAQUBYQkAAgEJAKwCAgUEZXJyXwIHOiBhc3NldAMJAGYCBQ9yZXF1aXJlZEFtb3VudF8IBQhwYXltZW50XwZhbW91bnQJAAIBCQCsAgIFBGVycl8CCDogYW1vdW50BgkAAgEJAKwCAgUEZXJyXwIHOiBhc3NldAEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwVsaXN0XwR2YWxfBGVycl8DCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQVsaXN0XwUEdmFsXwkAAgEFBGVycl8GAQtfYXNzZXRUb1N0cgEGYXNzZXRfBAckbWF0Y2gwBQZhc3NldF8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkA2AQBBQFhBQVXQVZFUwELX3N0clRvQXNzZXQBBmFzc2V0XwMDCQAAAgUGYXNzZXRfBQVXQVZFUwYJAAACBQZhc3NldF8CAAUEdW5pdAkA2QQBBQZhc3NldF8BCl9sb2FkUGF1c2UABAckbWF0Y2gwCQCgCAEFCktFWV9QQVVTRUQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYQUHJG1hdGNoMAUBYQcBCl9zYXZlUGF1c2UBCWlzUGF1c2VkXwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUKS0VZX1BBVVNFRAUJaXNQYXVzZWRfBQNuaWwBC19sb2FkUGF1c2VyAAQHJG1hdGNoMAkAoggBBQpLRVlfUEFVU0VSAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABC19zYXZlUGF1c2VyAQdwYXVzZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9QQVVTRVIJAKUIAQUHcGF1c2VyXwUDbmlsAQ1fbG9hZE11bHRpc2lnAAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVNdWx0aXNpZwEJbXVsdGlzaWdfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9NVUxUSVNJRwkApQgBBQltdWx0aXNpZ18FA25pbAEMX2xvYWRTdG9yYWdlAAQHJG1hdGNoMAkAoggBBQtLRVlfU1RPUkFHRQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAEBnN0cnVjdAkAtQkCBQFhBQNTRVAJAJwKCgkA2QQBCQCRAwIFBnN0cnVjdAAACQAAAgkAkQMCBQZzdHJ1Y3QAAQIBMQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAICQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBnN0cnVjdAAJCQCcCgoBAAcAAAAAAAAAAAAAAAAAAAkBB0FkZHJlc3MBAQABDF9zYXZlU3RvcmFnZQEIc3RvcmFnZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgULS0VZX1NUT1JBR0UJALkJAgkAzAgCCQDYBAEIBQhzdG9yYWdlXwJfMQkAzAgCAwgFCHN0b3JhZ2VfAl8yAgExAgEwCQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl8zCQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl80CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl81CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl82CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl83CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl84CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl85CQDMCAIJAKUIAQgFCHN0b3JhZ2VfA18xMAUDbmlsBQNTRVAFA25pbAELX2xvYWRBc3NldHMABAckbWF0Y2gwCQCiCAEFCktFWV9BU1NFVFMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkAZgIJALECAQUBYQAACQC9CQIFAWEFA1NFUAUDbmlsBQNuaWwBC19zYXZlQXNzZXRzAQdhc3NldHNfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9BU1NFVFMJALsJAgUHYXNzZXRzXwUDU0VQBQNuaWwBEl9sb2FkQXNzZXRCYWxhbmNlcwAKAQhmb2xkRnVuYwIDYWNjBGVsZW0EB2JhbGFuY2UJAQ1wYXJzZUludFZhbHVlAQUEZWxlbQkAlAoCCQDNCAIIBQNhY2MCXzEFB2JhbGFuY2UJAGQCCAUD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BGVsZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFEEtFWV9VU0VSX1BST0ZJVFMJAMwIAgkApQgBBQV1c2VyXwUDbmlsBQNTRVAJALsJAgoAAiRsBQR2YWxfCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBQNTRVAFA25pbAENX2xvYWRXYXRjaGRvZwAEByRtYXRjaDAJAKIIAQUMS0VZX1dBVENIRE9HAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABDV9zYXZlV2F0Y2hkb2cBCXdhdGNoZG9nXwkAzAgCCQELU3RyaW5nRW50cnkCBQxLRVlfV0FUQ0hET0cJAKUIAQUJd2F0Y2hkb2dfBQNuaWwBE19sb2FkV2F0Y2hkb2dPZmZzZXQABAckbWF0Y2gwCQCfCAEFE0tFWV9XQVRDSERPR19PRkZTRVQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABE19zYXZlV2F0Y2hkb2dPZmZzZXQBB29mZnNldF8JAMwIAgkBDEludGVnZXJFbnRyeQIFE0tFWV9XQVRDSERPR19PRkZTRVQFB29mZnNldF8FA25pbAERX29ubHlUaGlzQ29udHJhY3QBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfBQR0aGlzCQACAQIZX29ubHlUaGlzQ29udHJhY3Q6IHJldmVydAYBEF93aGVuTXVsdGlzaWdTZXQAAwkAAAIJAQ1fbG9hZE11bHRpc2lnAAkBB0FkZHJlc3MBAQAJAAIBAhhfd2hlbk11bHRpc2lnU2V0OiByZXZlcnQGARNfd2hlbk5vdEluaXRpYWxpemVkAAQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQADCQECIT0CCAUHc3RvcmFnZQJfMQEACQACAQIbX3doZW5Ob3RJbml0aWFsaXplZDogcmV2ZXJ0BgEQX3doZW5Jbml0aWFsaXplZAAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UAAwkAAAIIBQdzdG9yYWdlAl8xAQAJAAIBAhhfd2hlbkluaXRpYWxpemVkOiByZXZlcnQGAQ5fd2hlbk5vdFBhdXNlZAADCQEKX2xvYWRQYXVzZQAJAAIBAhZfd2hlbk5vdFBhdXNlZDogcmV2ZXJ0BgELX3doZW5QYXVzZWQAAwkBASEBCQEKX2xvYWRQYXVzZQAJAAIBAhNfd2hlblBhdXNlZDogcmV2ZXJ0BgELX29ubHlQYXVzZXIBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfCQELX2xvYWRQYXVzZXIACQACAQITX29ubHlQYXVzZXI6IHJldmVydAYBDl9jaGVja1dhdGNoZG9nAAQCd2QEByRtYXRjaDAJAJoIAgkBDV9sb2FkV2F0Y2hkb2cABRNLRVlfV0FUQ0hET0dfSEVJR0hUAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAkAZAIFAWEJARNfbG9hZFdhdGNoZG9nT2Zmc2V0AAAAAwkAZgIFBmhlaWdodAUCd2QJAAIBAhZfY2hlY2tXYXRjaGRvZzogcmV2ZXJ0BgEMX2dldERlY2ltYWxzAQhhc3NldElkXwQHJG1hdGNoMAkA7AcBCQDZBAEFCGFzc2V0SWRfAwkAAQIFByRtYXRjaDACBUFzc2V0BAFhBQckbWF0Y2gwCAUBYQhkZWNpbWFscwkAAgEJAKwCAgIXX2dldERlY2ltYWxzOiBubyBhc3NldD0FCGFzc2V0SWRfARJfbm9ybWFsaXplRGVjaW1hbHMEB2Ftb3VudF8Pc291cmNlRGVjaW1hbHNfD3RhcmdldERlY2ltYWxzXwZyb3VuZF8DCQBnAgUPc291cmNlRGVjaW1hbHNfBQ90YXJnZXREZWNpbWFsc18JAG4EBQdhbW91bnRfAAEJAGwGAAoAAAkAZQIFD3NvdXJjZURl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AwIFCGFtb3VudHNfBQVpbmRleAQKbmV3QmFsYW5jZQkAZAIFBGVsZW0FBmFtb3VudAkAlQoDCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBQpuZXdCYWxhbmNlCQBkAggFA2FjYwJfMwUKbmV3QmFsYW5jZQQGcmVzdWx0CgACJGwFCWJhbGFuY2VzXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwAABQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwEcX2luY3JlbWVudEJhbGFuY2VzQnlQYXltZW50cwUJYmFsYW5jZXNfCXBheW1lbnRzXwdhc3NldHNfCWRlY2ltYWxzXwRlcnJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQHcGF5bWVudAkAkQMCBQlwYXltZW50c18FBWluZGV4BA9wYXltZW50QXNzZXRTdHIJAQtfYXNzZXRUb1N0cgEIBQdwYXltZW50B2Fzc2V0SWQEA2VycgMJAQIhPQIFD3BheW1lbnRBc3NldFN0cgkAkQMCBQdhc3NldHNfBQVpbmRleAkAAgEJAKwCAgkArAICBQRlcnJfAgg6IGluZGV4PQkApAMBBQVpbmRleAUEdW5pdAMJAAACBQNlcnIFA2VycgQNYXNzZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFD3BheW1lbnRBc3NldFN0cgQKbmV3QmFsYW5jZQkAZAIFBGVsZW0JARJfbm9ybWFsaXplRGVjaW1hbHMECAkAkQMCBQlwYXltZW50c18FBWluZGV4BmFtb3VudAUNYXNzZXREZWNpbWFscwUJ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AgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoIBQZyZXN1bHQCXzIBEl9jYWxjdWxhdGVNaW51c0ZlZQUIYmFsYW5jZV8MZXF1aWxpYnJpdW1fCWxwQW1vdW50XxB3ZWlnaHRBbXBsaWZpZXJfEGRpc2JhbGFuY2VDb2VmZl8ECXRocmVzaG9sZAkAawMFDGVxdWlsaWJyaXVtXwkAZQIFFE1BWF9XRUlHSFRfQU1QTElGSUVSBRB3ZWlnaHRBbXBsaWZpZXJfBRRNQVhfV0VJR0hUX0FNUExJRklFUgMJAGYCBQhiYWxhbmNlXwUJdGhyZXNob2xkAAAJAKADAQkAvQIECQC8AgMJALYCAQUJbHBBbW91bnRfCQC2AgEFEGRpc2JhbGFuY2VDb2VmZl8FF0RJU0JBbEFOQ0VfQ09FRkZfRkFDVE9SCQC2AgEJAGUCBQl0aHJlc2hvbGQFCGJhbGFuY2VfCQC2AgEFCXRocmVzaG9sZAUHQ0VJTElORwEXX2NhbGN1bGF0ZU1pbnVzRmVlRGVsdGEGDmJhbGFuY2VCZWZvcmVfDWJhbGFuY2VBZnRlcl8MZXF1aWxpYnJpdW1fCWxwQW1vdW50XxB3ZWlnaHRBbXBsaWZpZXJfEGRpc2JhbGFuY2VDb2VmZl8DCQBmAgUNYmFsYW5jZUFmdGVyXwUOYmFsYW5jZUJlZm9yZV8AAAkAZQIJARJfY2FsY3VsYXRlTWludXNGZWUFBQ1iYWxhbmNlQWZ0ZXJfBQxlcXVpbGlicml1bV8FCWxwQW1vdW50XwUQd2VpZ2h0QW1wbGlmaWVyXwUQZGlzYmFsYW5jZUNvZWZmXwkBEl9jYWxjdWxhdGVNaW51c0ZlZQUFDmJhbGFuY2VCZWZvcmVfBQxlcXVpbGlicml1bV8FCWxwQW1vdW50XwUQd2VpZ2h0QW1wbGlmaWVyXwUQZGlzYmFsYW5jZUNvZWZmXwERX2NhbGN1bGF0ZVBsdXNGZWUDCGJhbGFuY2VfDGVxdWlsaWJyaXVtXw5yZXdhcmRCYWxhbmNlXwMJAGYCBQhiYWxhbmNlXwUMZXF1aWxpYnJpdW1fBQ5yZXdhcmRCYWxhbmNlXwkAbgQFDnJld2FyZEJhbGFuY2VfBQhiYWxhbmNlXwUMZXF1aWxpYnJpdW1fBQVGTE9PUgEWX2NhbGN1bGF0ZVBsdXNGZWVEZWx0YQQOYmFsYW5jZUJlZm9yZV8NYmFsYW5jZUFmdGVyXwxlcXVpbGlicml1bV8OcmV3YXJkQmFsYW5jZV8DCQBmAgUOYmFsYW5jZUJlZm9yZV8FDWJhbGFuY2VBZnRlcl8AAAkAZQIJARFfY2FsY3VsYXRlUGx1c0ZlZQMFDWJhbGFuY2VBZnRlcl8FDGVxdWlsaWJyaXVtXwUOcmV3YXJkQmFsYW5jZV8JARFfY2FsY3VsYXRlUGx1c0ZlZQMFDmJhbGFuY2VCZWZvcmVfBQxlcXVpbGlicml1bV8FDnJld2FyZEJhbGFuY2VfARNfdmFsaWRhdGVBbGxvY2F0aW9uAg5hc3NldEJhbGFuY2VzXw9yZXdhcmRCYWxhbmNlc18ECG1heEluZGV4CQCQAwEFDmFzc2V0QmFsYW5jZXNfCgEIZm9sZEZ1bmMCA2FjYwVpbmRleAMJAGcCBQVpbmRleAUIbWF4SW5kZXgFA2FjYwMJAGYCAAAJAJEDAgUOYXNzZXRCYWxhbmNlc18FBWluZGV4CQACAQIrX3ZhbGlkYXRlQWxsb2NhdGlvbjogbmVnYXRpdmUgYXNzZXRCYWxhbmNlcwMJAGYCAAAJAJEDAgUPcmV3YXJkQmFsYW5jZXNfBQVpbmRleAkAAgECLF92YWxpZGF0ZUFsbG9jYXRpb246IG5lZ2F0aXZlIHJld2FyZEJhbGFuY2VzBQNhY2MKAAIkbAUKSU5ERVhfTElTVAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAGCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgELX2NoZWNrcG9pbnQBBXVzZXJfBAZ1c2VyTHAJAQtfbG9hZFVzZXJMcAEFBXVzZXJfBAt1c2VyUHJvZml0cwkBEF9sb2FkVXNlclByb2ZpdHMBBQV1c2VyXwQNc2lnbWFGZWVQZXJMcAkBEl9sb2FkU2lnbWFGZWVQZXJMcAAEEXVzZXJTaWdtYUZlZVBlckxwCQEWX2xvYWRVc2VyU2lnbWFGZWVQZXJMcAEFBXVzZXJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQNcHJvZml0VXBkYXRlZAkAZAIJAJEDAgULdXNlclByb2ZpdHMFBWluZGV4CQCgAwEJALwCAwkAtgIBBQZ1c2VyTHAJALgCAgkAkQMCBQ1zaWdtYUZlZVBlckxwBQVpbmRleAkAkQMCBRF1c2VyU2lnbWFGZWVQZXJMcAUFaW5kZXgFDlBFUkNFTlRfRkFDVE9SCQCUCgIJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIFDXByb2ZpdFVwZGF0ZWQEDSR0MDIyMzE0MjIzODcKAAIkbAUQWkVST19JTlRfTElTVF8xMQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDIyMzE0MjIzODcCXzEEDnByb2ZpdHNVcGRhdGVkCAUNJHQwMjIzMTQyMjM4NwJfMgkAlAoCCQDOCAIJARBfc2F2ZVVzZXJQcm9maXRzAgUFdXNlcl8FDnByb2ZpdHNVcGRhdGVkCQEWX3NhdmVVc2VyU2lnbWFGZWVQZXJMcAIFBXVzZXJfBQ1zaWdtYUZlZVBlckxwBQ5wcm9maXRzVXBkYXRlZAEUX3VwZGF0ZVNpZ21hRmVlUGVyTHAEDnNpZ21hRmVlUGVyTHBfCHRvdGFsTHBfBmluZGV4XwZscEZlZV8KAQhmb2xkRnVuYwIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBBRzaWdtYUZlZVBlckxwVXBkYXRlZAMJAAACBQZpbmRleF8FBWluZGV4CQC3AgIJAJEDAgUOc2lnbWFGZWVQZXJMcF8FBWluZGV4CQC8AgMJALYCAQUGbHBGZWVfBQ5QRVJDRU5UX0ZBQ1RPUgkAtgIBBQh0b3RhbExwXwkAkQMCBQ5zaWdtYUZlZVBlckxwXwUFaW5kZXgJAJQKAgkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQEDSR0MDIzMDM3MjMxMTYKAAIkbAUQWkVST19JTlRfTElTVF8xMQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDIzMDM3MjMxMTYCXzEEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwMjMwMzcyMzExNgJfMgUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQBG19jYWxjdWxhdGVMcEFuZFByb3RvY29sRmVlcwQLYXNzZXRJbmRleF8HYW1vdW50XwpscEZlZVJhdGVfEHByb3RvY29sRmVlUmF0ZV8EDXNpZ21hRmVlUGVyTHAJARJfbG9hZFNpZ21hRmVlUGVyTHAABAd0b3RhbExwCQEMX2xvYWRUb3RhbExwAAQNJHQwMjMzMzcyMzYxMgMJAAACBQd0b3RhbExwAAAJAJQKAgAACQBrAwUHYW1vdW50XwUQcHJvdG9jb2xGZWVSYXRlXwUHTUFYX0ZFRQkAlAoCCQBrAwUHYW1vdW50XwUKbHBGZWVSYXRlXwUHTUFYX0ZFRQkAawMFB2Ftb3VudF8FEHByb3RvY29sRmVlUmF0ZV8FB01BWF9GRUUEBWxwRmVlCAUNJHQwMjMzMzcyMzYxMgJfMQQLcHJvdG9jb2xGZWUIBQ0kdDAyMzMzNzIzNjEyAl8yBBRzaWdtYUZlZVBlckxwVXBkYXRlZAMJAAACBQVscEZlZQAABQ1zaWdtYUZlZVBlckxwCQEUX3VwZGF0ZVNpZ21hRmVlUGVyTHAEBQ1zaWdtYUZlZVBlckxwBQd0b3RhbExwBQthc3NldEluZGV4XwUFbHBGZWUJAJUKAwUFbHBGZWUFC3Byb3RvY29sRmVlBRRzaWdtYUZlZVBlckxwVXBkYXRlZAELX2RlcG9zaXRBbGwBB2Ftb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQGYXNzZXRzCQELX2xvYWRBc3NldHMABA0kdDAyNDAxODI0MDcxCQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyNDAxODI0MDcxAl8xBAtzaWdtYVdlaWdodAgFDSR0MDI0MDE4MjQwNzECXzIEDSR0MDI0MDc2MjQxNDQJARJfbG9hZEFzc2V0QmFsYW5jZXMABBFwcmV2QXNzZXRCYWxhbmNlcwgFDSR0MDI0MDc2MjQxNDQCXzEEFHByZXZBc3NldFRvdGFsU3VwcGx5CAUNJHQwMjQwNzYyNDE0NAJfMgQNJHQwMjQxNTAyNTM4MAMJAAACBRRwcmV2QXNzZXRUb3RhbFN1cHBseQAACgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkCQBrAwkAkQMCBQxhc3NldFdlaWdodHMFBWluZGV4BQdhbW91bnRfBQtzaWdtYVdlaWdodAkAlAoCCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBRhyZXF1aXJlZEFtb3VudE5vcm1hbGl6ZWQEDSR0MDI0NTkyMjQ2NjYKAAIkbAUGYXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEA2lkeAgFDSR0MDI0NTkyMjQ2NjYCXzEEGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQIBQ0kdDAyNDU5MjI0NjY2Al8yCQCUCgIFB2Ftb3VudF8FGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQEBXJhdGlvCQC8AgMJALYCAQUHYW1vdW50XwUOUEVSQ0VOVF9GQUNUT1IJALYCAQUUcHJldkFzc2V0VG90YWxTdXBwbHkKAQlmb2xkRnVuYzECA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkCQCgAwEJALwCAwUFcmF0aW8JALYCAQkAkQMCBRFwcmV2QXNzZXRCYWxhbmNlcwUFaW5kZXgFDlBFUkNFTlRfRkFDVE9SCQCUCgIJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIFGHJlcXVpcmVkQW1vdW50Tm9ybWFsaXplZAQNJHQwMjUyMDkyNTI4NAoAAiRsBQZhc3NldHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlmb2xkRnVuYzECBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEA2lkeAgFDSR0MDI1MjA5MjUyODQCXzEEGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQIBQ0kdDAyNTIwOTI1Mjg0Al8yCQCUCgIJAGsDBQdhbW91bnRfBQ1scFRvdGFsU3VwcGx5BRRwcmV2QXNzZXRUb3RhbFN1cHBseQUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAQObHBUb2tlbnNUb01pbnQIBQ0kdDAyNDE1MDI1MzgwAl8xBBlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkCAUNJHQwMjQxNTAyNTM4MAJfMgQNJHQwMjUzODYyNTQ5OQkBG19pbmNyZW1lbnRCYWxhbmNlc0J5QW1vdW50cwIFEXByZXZBc3NldEJhbGFuY2VzBRlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkBA1hc3NldEJhbGFuY2VzCAUNJHQwMjUzODYyNTQ5OQJfMQQQYXNzZXRUb3RhbFN1cHBseQgFDSR0MDI1Mzg2MjU0OTkCXzIJAJUKAwUObHBUb2tlbnNUb01pbnQFGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQFDWFzc2V0QmFsYW5jZXMBCF9kZXBvc2l0Aghhc3NldElkXwdhbW91bnRfBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQNbHBUb3RhbFN1cHBseQgFB3N0b3JhZ2UCXzMECWxwRmVlUmF0ZQgFB3N0b3JhZ2UCXzQED3Byb3RvY29sRmVlUmF0ZQgFB3N0b3JhZ2UCXzUEEW1heEFsbG9jQW1wbGlmaWVyCAUHc3RvcmFnZQJfNgQPd2VpZ2h0QW1wbGlmaWVyCAUHc3RvcmFnZQJfNwQGYXNzZXRzCQELX2xvYWRBc3NldHMABA0kdDAyNTg2NTI1OTE4CQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyNTg2NTI1OTE4Al8xBAtzaWdtYVdlaWdodAgFDSR0MDI1ODY1MjU5MTgCXzIEDSR0MDI1OTIzMjU5OTEJARJfbG9hZEFzc2V0QmFsYW5jZXMABBFwcmV2QXNzZXRCYWxhbmNlcwgFDSR0MDI1OTIzMjU5OTECXzEEFHByZXZBc3NldFRvdGFsU3VwcGx5CAUNJHQwMjU5MjMyNTk5MQJfMgQScHJldlJld2FyZEJhbGFuY2VzCQETX2xvYWRSZXdhcmRCYWxhbmNlcwAEA2VycgMDCQAAAgUUcHJldkFzc2V0VG90YWxTdXBwbHkAAAYJAAACBQ1scFRvdGFsU3VwcGx5AAAJAAIBAhRfZGVwb3NpdDogZW1wdHkgcG9vbAYDCQAAAgUDZXJyBQNlcnIEEHNvdXJjZUFzc2V0SW5kZXgJAQV2YWx1ZQEJAM8IAgUGYXNzZXRzBQhhc3NldElkXwQRc291cmNlRXF1aWxpYnJpdW0JAGsDBRRwcmV2QXNzZXRUb3RhbFN1cHBseQkAkQMCBQxhc3NldFdlaWdodHMFEHNvdXJjZUFzc2V0SW5kZXgFC3NpZ21hV2VpZ2h0BBNzb3VyY2VCYWxhbmNlQmVmb3JlCQCRAwIFEXByZXZBc3NldEJhbGFuY2VzBRBzb3VyY2VBc3NldEluZGV4BBNzb3VyY2VSZXdhcmRCYWxhbmNlCQCRAwIFEnByZXZSZXdhcmRCYWxhbmNlcwUQc291cmNlQXNzZXRJbmRleAQSc291cmNlUGx1c0ZlZURlbHRhCQEWX2NhbGN1bGF0ZVBsdXNGZWVEZWx0YQQFE3NvdXJjZUJhbGFuY2VCZWZvcmUJAGQCBRNzb3VyY2VCYWxhbmNlQmVmb3JlBQdhbW91bnRfBRFzb3VyY2VFcXVpbGlicml1bQUTc291cmNlUmV3YXJkQmFsYW5jZQQRbmV3UmV3YXJkQmFsYW5jZXMJARhfZGVjcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRJwcmV2UmV3YXJkQmFsYW5jZXMFEHNvdXJjZUFzc2V0SW5kZXgFEnNvdXJjZVBsdXNGZWVEZWx0YQQQbmV3QXNzZXRCYWxhbmNlcwkBGF9pbmNyZW1lbnRCYWxhbmNlQnlJbmRleAMFEXByZXZBc3NldEJhbGFuY2VzBRBzb3VyY2VBc3NldEluZGV4CQBkAgUHYW1vdW50XwUSc291cmNlUGx1c0ZlZURlbHRhBA5scFRva2Vuc1RvTWludAkAZAIFB2Ftb3VudF8FEnNvdXJjZVBsdXNGZWVEZWx0YQQEZXJyMQkBE192YWxpZGF0ZUFsbG9jYXRpb24CBRBuZXdBc3NldEJhbGFuY2VzBRFuZXdSZXdhcmRCYWxhbmNlcwMJAAACBQRlcnIxBQRlcnIxBA0kdDAyNzA4MTI3MjEyCQEbX2NhbGN1bGF0ZUxwQW5kUHJvdG9jb2xGZWVzBAAABQ5scFRva2Vuc1RvTWludAkAaQIFCWxwRmVlUmF0ZQACCQBpAgUPcHJvdG9jb2xGZWVSYXRlAAIEBWxwRmVlCAUNJHQwMjcwODEyNzIxMgJfMQQLcHJvdG9jb2xGZWUIBQ0kdDAyNzA4MTI3MjEyAl8yBBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDI3MDgxMjcyMTICXzMJAJgKBgUObHBUb2tlbnNUb01pbnQFEG5ld0Fzc2V0QmFsYW5jZXMFEW5ld1Jld2FyZEJhbGFuY2VzBQVscEZlZQULcHJvdG9jb2xGZWUFFHNpZ21hRmVlUGVyTHBVcGRhdGVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxfd2l0aGRyYXdBbGwBB2Ftb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQNJHQwMjc0MjUyNzQ5MwkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjc0MjUyNzQ5MwJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyNzQyNTI3NDkzAl8yBA0kdDAyNzQ5ODI3NTUxCQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyNzQ5ODI3NTUxAl8xBAtzaWdtYVdlaWdodAgFDSR0MDI3NDk4Mjc1NTECXzIEDmxwVG9rZW5zVG9CdXJuBQdhbW91bnRfBANlcnIJAQxfdmFsaWRhdGVJbnQEBQ5scFRva2Vuc1RvQnVybgAABQ1scFRvdGFsU3VwcGx5AiRfd2l0aGRyYXdBbGw6IGludmFsaWQgbHBUb2tlbnNUb0J1cm4DCQAAAgUDZXJyBQNlcnIEDSR0MDI3Njk1Mjc4MjgJARxfZGVjcmVtZW50QmFsYW5jZXNCeUxwQW1vdW50AwURcHJldkFzc2V0QmFsYW5jZXMFDmxwVG9rZW5zVG9CdXJuBQ1scFRvdGFsU3VwcGx5BA1hc3NldEJhbGFuY2VzCAUNJHQwMjc2OTUyNzgyOAJfMQQQYXNzZXRUb3RhbFN1cHBseQgFDSR0MDI3Njk1Mjc4MjgCXzIEDWJhbGFuY2VzVG9QYXkIBQ0kdDAyNzY5NTI3ODI4Al8zCQCVCgMFDmxwVG9rZW5zVG9CdXJuBQ1iYWxhbmNlc1RvUGF5BQ1hc3NldEJhbGFuY2VzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQlfd2l0aGRyYXcCCGFzc2V0SWRfCWxwQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDWxwVG90YWxTdXBwbHkIBQdzdG9yYWdlAl8zBAlscEZlZVJhdGUIBQdzdG9yYWdlAl80BA9wcm90b2NvbEZlZVJhdGUIBQdzdG9yYWdlAl81BBFtYXhBbGxvY0FtcGxpZmllcggFB3N0b3JhZ2UCXzYED3dlaWdodEFtcGxpZmllcggFB3N0b3JhZ2UCXzcED2Rpc2JhbGFuY2VDb2VmZggFB3N0b3JhZ2UCXzgEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQNJHQwMjgyMjIyODI5MAkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjgyMjIyODI5MAJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyODIyMjI4MjkwAl8yBA0kdDAyODI5NTI4MzQ4CQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyODI5NTI4MzQ4Al8xBAtzaWdtYVdlaWdodAgFDSR0MDI4Mjk1MjgzNDgCXzIEEnByZXZSZXdhcmRCYWxhbmNlcwkBE19sb2FkUmV3YXJkQmFsYW5jZXMABBB0YXJnZXRBc3NldEluZGV4CQEFdmFsdWUBCQDPCAIFBmFzc2V0cwUIYXNzZXRJZF8EE3RhcmdldEJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgEEXRhcmdldEVxdWlsaWJyaXVtCQBrAwUUcHJldkFzc2V0VG90YWxTdXBwbHkJAJEDAgUMYXNzZXRXZWlnaHRzBRB0YXJnZXRBc3NldEluZGV4BQtzaWdtYVdlaWdodAQTdGFyZ2V0UmV3YXJkQmFsYW5jZQkAkQMCBRJwcmV2UmV3YXJkQmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgEE3RhcmdldE1pbnVzRmVlRGVsdGEJARdfY2FsY3VsYXRlTWludXNGZWVEZWx0YQYFE3RhcmdldEJhbGFuY2VCZWZvcmUJAGUCBRN0YXJnZXRCYWxhbmNlQmVmb3JlBQlscEFtb3VudF8FEXRhcmdldEVxdWlsaWJyaXVtBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUPd2VpZ2h0QW1wbGlmaWVyBQ9kaXNiYWxhbmNlQ29lZmYEDnJld2FyZEJhbGFuY2VzCQEYX2luY3JlbWVudEJhbGFuY2VCeUluZGV4AwUScHJldlJld2FyZEJhbGFuY2VzBRB0YXJnZXRBc3NldEluZGV4BRN0YXJnZXRNaW51c0ZlZURlbHRhBA1hc3NldEJhbGFuY2VzCQEYX2RlY3JlbWVudEJhbGFuY2VCeUluZGV4AwURcHJldkFzc2V0QmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgFCWxwQW1vdW50XwQMdGFyZ2V0QW1vdW50CQBlAgUJbHBBbW91bnRfBRN0YXJnZXRNaW51c0ZlZURlbHRhBANlcnIJARNfdmFsaWRhdGVBbGxvY2F0aW9uAgUNYXNzZXRCYWxhbmNlcwUOcmV3YXJkQmFsYW5jZXMDCQAAAgUDZXJyBQNlcnIEDSR0MDI5MzM0Mjk0ODIJARtfY2FsY3VsYXRlTHBBbmRQcm90b2NvbEZlZXMECQBkAgUQdGFyZ2V0QXNzZXRJbmRleAABBQx0YXJnZXRBbW91bnQJAGkCBQlscEZlZVJhdGUAAgkAaQIFD3Byb3RvY29sRmVlUmF0ZQACBAVscEZlZQgFDSR0MDI5MzM0Mjk0ODICXzEEC3Byb3RvY29sRmVlCAUNJHQwMjkzMzQyOTQ4MgJfMgQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDAyOTMzNDI5NDgyAl8zCQCYCgYFDHRhcmdldEFtb3VudAUNYXNzZXRCYWxhbmNlcwUOcmV3YXJkQmFsYW5jZXMFBWxwRmVlBQtwcm90b2NvbEZlZQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BBV9zd2FwAxFzb3VyY2VBc3NldEluZGV4XxF0YXJnZXRBc3NldEluZGV4Xw1zb3VyY2VBbW91bnRfBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkBA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQJbHBGZWVSYXRlCAUHc3RvcmFnZQJfNAQPcHJvdG9jb2xGZWVSYXRlCAUHc3RvcmFnZQJfNQQRbWF4QWxsb2NBbXBsaWZpZXIIBQdzdG9yYWdlAl82BA93ZWlnaHRBbXBsaWZpZXIIBQdzdG9yYWdlAl83BA9kaXNiYWxhbmNlQ29lZmYIBQdzdG9yYWdlAl84BA0kdDAzMDAwOTMwMDc3CQESX2xvYWRBc3NldEJhbGFuY2VzAAQRcHJldkFzc2V0QmFsYW5jZXMIBQ0kdDAzMDAwOTMwMDc3Al8xBBRwcmV2QXNzZXRUb3RhbFN1cHBseQgFDSR0MDMwMDA5MzAwNzcCXzIEDSR0MDMwMDgyMzAxMzUJARFfbG9hZEFzc2V0V2VpZ2h0cwAEDGFzc2V0V2VpZ2h0cwgFDSR0MDMwMDgyMzAxMzUCXzEEC3NpZ21hV2VpZ2h0CAUNJHQwMzAwODIzMDEzNQJfMgQScHJldlJld2FyZEJhbGFuY2VzCQETX2xvYWRSZXdhcmRCYWxhbmNlcwAEEXNvdXJjZUVxdWlsaWJyaXVtCQBrAwUUcHJldkFzc2V0VG90YWxTdXBwbHkJAJEDAgUMYXNzZXRXZWlnaHRzBRFzb3VyY2VBc3NldEluZGV4XwULc2lnbWFXZWlnaHQEE3NvdXJjZUJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEXNvdXJjZUFzc2V0SW5kZXhfBBNzb3VyY2VSZXdhcmRCYWxhbmNlCQCRAwIFEnByZXZSZXdhcmRCYWxhbmNlcwURc291cmNlQXNzZXRJbmRleF8EEnNvdXJjZVBsdXNGZWVEZWx0YQkBFl9jYWxjdWxhdGVQbHVzRmVlRGVsdGEEBRNzb3VyY2VCYWxhbmNlQmVmb3JlCQBkAgUTc291cmNlQmFsYW5jZUJlZm9yZQUNc291cmNlQW1vdW50XwURc291cmNlRXF1aWxpYnJpdW0FE3NvdXJjZVJld2FyZEJhbGFuY2UEE3RhcmdldEJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEXRhcmdldEFzc2V0SW5kZXhfBBF0YXJnZXRFcXVpbGlicml1bQkAawMFFHByZXZBc3NldFRvdGFsU3VwcGx5CQCRAwIFDGFzc2V0V2VpZ2h0cwURdGFyZ2V0QXNzZXRJbmRleF8FC3NpZ21hV2VpZ2h0BBN0YXJnZXRSZXdhcmRCYWxhbmNlCQCRAwIFEnByZXZSZXdhcmRCYWxhbmNlcwURdGFyZ2V0QXNzZXRJbmRleF8EE3RhcmdldE1pbnVzRmVlRGVsdGEJARdfY2FsY3VsYXRlTWludXNGZWVEZWx0YQYFE3RhcmdldEJhbGFuY2VCZWZvcmUJAGUCBRN0YXJnZXRCYWxhbmNlQmVmb3JlBQ1zb3VyY2VBbW91bnRfBRF0YXJnZXRFcXVpbGlicml1bQUUcHJldkFzc2V0VG90YWxTdXBwbHkFD3dlaWdodEFtcGxpZmllcgUPZGlzYmFsYW5jZUNvZWZmBBJ0ZW1wUmV3YXJkQmFsYW5jZXMJARhfZGVjcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRJwcmV2UmV3YXJkQmFsYW5jZXMFEXNvdXJjZUFzc2V0SW5kZXhfBRJzb3VyY2VQbHVzRmVlRGVsdGEEEW5ld1Jld2FyZEJhbGFuY2VzCQEYX2luY3JlbWVudEJhbGFuY2VCeUluZGV4AwUSdGVtcFJld2FyZEJhbGFuY2VzBRF0YXJnZXRBc3NldEluZGV4XwUTdGFyZ2V0TWludXNGZWVEZWx0YQQRdGVtcEFzc2V0QmFsYW5jZXMJARhfaW5jcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRFwcmV2QXNzZXRCYWxhbmNlcwURc291cmNlQXNzZXRJbmRleF8JAGQCBQ1zb3VyY2VBbW91bnRfBRJzb3VyY2VQbHVzRmVlRGVsdGEEEG5ld0Fzc2V0QmFsYW5jZXMJARhfZGVjcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRF0ZW1wQXNzZXRCYWxhbmNlcwURdGFyZ2V0QXNzZXRJbmRleF8JAGQCBQ1zb3VyY2VBbW91bnRfBRJzb3VyY2VQbHVzRmVlRGVsdGEEDHRhcmdldEFtb3VudAkAZQIJAGQCBQ1zb3VyY2VBbW91bnRfBRJzb3VyY2VQbHVzRmVlRGVsdGEFE3RhcmdldE1pbnVzRmVlRGVsdGEEA2VycgkBE192YWxpZGF0ZUFsbG9jYXRpb24CBRBuZXdBc3NldEJhbGFuY2VzBRFuZXdSZXdhcmRCYWxhbmNlcwMJAAACBQNlcnIFA2VycgQNJHQwMzE3MTQzMTg1NQkBG19jYWxjdWxhdGVMcEFuZFByb3RvY29sRmVlcwQJAGQCBRF0YXJnZXRBc3NldEluZGV4XwABBQx0YXJnZXRBbW91bnQFCWxwRmVlUmF0ZQUPcHJvdG9jb2xGZWVSYXRlBAVscEZlZQgFDSR0MDMxNzE0MzE4NTUCXzEEC3Byb3RvY29sRmVlCAUNJHQwMzE3MTQzMTg1NQJfMgQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDAzMTcxNDMxODU1Al8zCQCYCgYFDHRhcmdldEFtb3VudAUQbmV3QXNzZXRCYWxhbmNlcwURbmV3UmV3YXJkQmFsYW5jZXMFBWxwRmVlBQtwcm90b2NvbEZlZQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4bAWkBBGluaXQOB2Fzc2V0c18NYXNzZXRXZWlnaHRzXwpscEZlZVJhdGVfEHByb3RvY29sRmVlUmF0ZV8MbHBUb2tlbk5hbWVfDWxwVG9rZW5EZXNjcl8QbHBUb2tlbkRlY2ltYWxzXxdtYXhBbGxvY2F0aW9uQW1wbGlmaWVyXxB3ZWlnaHRBbXBsaWZpZXJfEGRpc2JhbGFuY2VDb2VmZl8LZmVlTWF4UmF0ZV8UcHJvdG9jb2xGZWVDb250cmFjdF8KcHJlY2lzaW9uXwdwYXVzZXJfBANlcnIDAwMDAwMDAwMDAwMDAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQETX3doZW5Ob3RJbml0aWFsaXplZAAHCQEQX3doZW5NdWx0aXNpZ1NldAAHCQEPX3ZhbGlkYXRlQXNzZXRzAgUHYXNzZXRzXwIUaW5pdDogaW52YWxpZCBhc3NldHMHCQEQX3ZhbGlkYXRlSW50TGlzdAQFDWFzc2V0V2VpZ2h0c18AAQUKTUFYX1dFSUdIVAIaaW5pdDogaW52YWxpZCBhc3NldFdlaWdodHMHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBBQdhc3NldHNfCQCQAwEFDWFzc2V0V2VpZ2h0c18CH2luaXQ6IGludmFsaWQgYXNzZXRXZWlnaHRzIHNpemUHCQEMX3ZhbGlkYXRlSW50BAUKbHBGZWVSYXRlXwAABQdNQVhfRkVFAhRpbml0OiBpbnZhbGlkIGxwIGZlZQcJAQxfdmFsaWRhdGVJbnQEBRBwcm90b2NvbEZlZVJhdGVfAAAFB01BWF9GRUUCGmluaXQ6IGludmFsaWQgcHJvdG9jb2wgZmVlBwkBEl92YWxpZGF0ZVRva2VuTmFtZQIFDGxwVG9rZW5OYW1lXwISaW5pdDogaW52YWxpZCBuYW1lBwkBE192YWxpZGF0ZVRva2VuRGVzY3ICBQ1scFRva2VuRGVzY3JfAhNpbml0OiBpbnZhbGlkIGRlc2NyBwkBEV92YWxpZGF0ZURlY2ltYWxzAgUQbHBUb2tlbkRlY2ltYWxzXwIWaW5pdDogaW52YWxpZCBkZWNpbWFscwcJAQxfdmFsaWRhdGVJbnQEBRdtYXhBbGxvY2F0aW9uQW1wbGlmaWVyXwAABQ1NQVhfQU1QTElGSUVSAiRpbml0OiBpbnZhbGlkIG1heEFsbG9jYXRpb25BbXBsaWZpZXIHCQEMX3ZhbGlkYXRlSW50BAUQd2VpZ2h0QW1wbGlmaWVyXwAABRdtYXhBbGxvY2F0aW9uQW1wbGlmaWVyXwIdaW5pdDogaW52YWxpZCB3ZWlnaHRBbXBsaWZpZXIHCQEMX3ZhbGlkYXRlSW50BAUQZGlzYmFsYW5jZUNvZWZmXwAABQdNQVhfSU5UAh1pbml0OiBpbnZhbGlkIGRpc2JhbGFuY2VDb2VmZgcJAQxfdmFsaWRhdGVJbnQEBQtmZWVNYXhSYXRlXwAABQdNQVhfSU5UAhhpbml0OiBpbnZhbGlkIGZlZU1heFJhdGUHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFFHByb3RvY29sRmVlQ29udHJhY3RfAiFpbml0OiBpbnZhbGlkIHByb3RvY29sRmVlQ29udHJhY3QHCQEMX3ZhbGlkYXRlSW50BAUKcHJlY2lzaW9uXwABBQdNQVhfSU5UAhdpbml0OiBpbnZhbGlkIHByZWNpc2lvbgcJARBfdmFsaWRhdGVBZGRyZXNzAgUHcGF1c2VyXwIUaW5pdDogaW52YWxpZCBwYXVzZXIHAwkAAAIFA2VycgUDZXJyBA0kdDAzMzc0NDMzODEzCQEUX3ByZXBhcmVBc3NldFdlaWdodHMBBQ1hc3NldFdlaWdodHNfBAxhc3NldFdlaWdodHMIBQ0kdDAzMzc0NDMzODEzAl8xBAtzaWdtYVdlaWdodAgFDSR0MDMzNzQ0MzM4MTMCXzIEDWFzc2V0QmFsYW5jZXMJARVfcHJlcGFyZUFzc2V0QmFsYW5jZXMBBQdhc3NldHNfBAVpc3N1ZQkAwggFBQxscFRva2VuTmFtZV8FDWxwVG9rZW5EZXNjcl8AAAUQbHBUb2tlbkRlY2ltYWxzXwYECWxwQXNzZXRJZAkAuAgBBQVpc3N1ZQQOc3RvcmFnZVVwZGF0ZWQJAJwKCgUJbHBBc3NldElkBgAABQpscEZlZVJhdGVfBRBwcm90b2NvbEZlZVJhdGVfBRdtYXhBbGxvY2F0aW9uQW1wbGlmaWVyXwUQd2VpZ2h0QW1wbGlmaWVyXwUQZGlzYmFsYW5jZUNvZWZmXwULZmVlTWF4UmF0ZV8JARFAZXh0ck5hdGl2ZSgxMDYyKQEFFHByb3RvY29sRmVlQ29udHJhY3RfCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDMCAIFBWlzc3VlBQNuaWwJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBC19zYXZlQXNzZXRzAQUHYXNzZXRzXwkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFDWFzc2V0QmFsYW5jZXMJARNfc2F2ZVJld2FyZEJhbGFuY2VzAQUNYXNzZXRCYWxhbmNlcwkBEV9zYXZlQXNzZXRXZWlnaHRzAQUMYXNzZXRXZWlnaHRzCQEOX3NhdmVQcmVjaXNpb24BBQpwcmVjaXNpb25fCQESX3NhdmVTaWdtYUZlZVBlckxwAQkBEl9sb2FkU2lnbWFGZWVQZXJMcAAJAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKZGVwb3NpdEFsbAEHYW1vdW50XwQDZXJyAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQxfdmFsaWRhdGVJbnQEBQdhbW91bnRfAAAFB01BWF9JTlQCGmRlcG9zaXRBbGw6IGludmFsaWQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQGYXNzZXRzCQELX2xvYWRBc3NldHMABA0kdDAzNTYxMjM1Njk3CQELX2RlcG9zaXRBbGwBBQdhbW91bnRfBA5scFRva2Vuc1RvTWludAgFDSR0MDM1NjEyMzU2OTcCXzEEGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQIBQ0kdDAzNTYxMjM1Njk3Al8yBA1hc3NldEJhbGFuY2VzCAUNJHQwMzU2MTIzNTY5NwJfMwoBCGZvbGRGdW5jAgNhY2MEZWxlbQQFaW5kZXgIBQNhY2MCXzEED3BheW1lbnRBc3NldFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4B2Fzc2V0SWQEFHBheW1lbnRBc3NldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUPcGF5bWVudEFzc2V0U3RyBBhyZXF1aXJlZEFtb3VudE5vcm1hbGl6ZWQJAJEDAgUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAUFaW5kZXgEDnJlcXVpcmVkQW1vdW50CQESX25vcm1hbGl6ZURlY2ltYWxzBAUYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkBQpscERlY2ltYWxzBRRwYXltZW50QXNzZXREZWNpbWFscwUHQ0VJTElORwQEZXJyMQMJAQIhPQIFD3BheW1lbnRBc3NldFN0cgUEZWxlbQkAAgEJAKwCAgIjZGVwb3NpdEFsbDogaW52YWxpZCBwYXltZW50OiBpbmRleD0JAKQDAQUFaW5kZXgDCQBnAgAABQ5yZXF1aXJlZEFtb3VudAkAAgECJmRlcG9zaXRBbGw6IHRvbyBsaXR0bGUgYW1vdW50IHJlcXVpcmVkBQR1bml0AwkAAAIFBGVycjEFBGVycjEEBmNoYW5nZQMJAGYCCAkAkQMCCAUBaQhwYXltZW50cwUFaW5kZXgGYW1vdW50BQ5yZXF1aXJlZEFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCCAkAkQMCCAUBaQhwYXltZW50cwUFaW5kZXgGYW1vdW50BQ5yZXF1aXJlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4B2Fzc2V0SWQFA25pbAMJAGYCBQ5yZXF1aXJlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4BmFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICKGRlcG9zaXRBbGw6IGluc3VmZmljaWVudCBwYXltZW50LCBpbmRleD0JAKQDAQUFaW5kZXgCCywgcmVxdWlyZWQ9CQCkAwEFDnJlcXVpcmVkQW1vdW50BQNuaWwJAJQKAgkAZAIFBWluZGV4AAEJAM4IAggFA2FjYwJfMgUGY2hhbmdlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA0kdDAzNjg0MDM2OTAyCgACJGwFBmFzc2V0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBANpZHgIBQ0kdDAzNjg0MDM2OTAyAl8xBA1jaGFuZ2VBY3Rpb25zCAUNJHQwMzY4NDAzNjkwMgJfMgQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCQBkAggFB3N0b3JhZ2UCXzMFDmxwVG9rZW5zVG9NaW50CAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUIBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEHUmVpc3N1ZQMFCWxwQXNzZXRJZAUObHBUb2tlbnNUb01pbnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUObHBUb2tlbnNUb01pbnQFCWxwQXNzZXRJZAUDbmlsCQEMX3NhdmVTdG9yYWdlAQUOc3RvcmFnZVVwZGF0ZWQJARJfc2F2ZUFzc2V0QmFsYW5jZXMBBQ1hc3NldEJhbGFuY2VzBQ1jaGFuZ2VBY3Rpb25zBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB2RlcG9zaXQBDG1pbkxwQW1vdW50XwQDZXJyCQEMX3ZhbGlkYXRlSW50BAUMbWluTHBBbW91bnRfAAAFB01BWF9JTlQCHmRlcG9zaXQ6IGludmFsaWQgbWluIGxwIGFtb3VudAMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQUJbHBBc3NldElkBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUMbHBBc3NldElkU3RyBARlcnIxAwMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQ5fY2hlY2tXYXRjaGRvZwAHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAh5kZXBvc2l0OiBpbnZhbGlkIHBheW1lbnRzIHNpemUHCQEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwkBC19sb2FkQXNzZXRzAAkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAh5kZXBvc2l0OiBpbnZhbGlkIHBheW1lbnQgYXNzZXQHCQEMX3ZhbGlkYXRlSW50BAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQUHTUFYX0lOVAIfZGVwb3NpdDogaW52YWxpZCBwYXltZW50IGFtb3VudAcDCQAAAgUEZXJyMQUEZXJyMQQIYXNzZXRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQNYXNzZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFCGFzc2V0U3RyBBBhbW91bnROb3JtYWxpemVkCQESX25vcm1hbGl6ZURlY2ltYWxzBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFDWFzc2V0RGVjaW1hbHMFCmxwRGVjaW1hbHMFBERPV04EDSR0MDM4MzQyMzg0NzQJAQhfZGVwb3NpdAIFCGFzc2V0U3RyBRBhbW91bnROb3JtYWxpemVkBA5scFRva2Vuc1RvTWludAgFDSR0MDM4MzQyMzg0NzQCXzEEDWFzc2V0QmFsYW5jZXMIBQ0kdDAzODM0MjM4NDc0Al8yBA5yZXdhcmRCYWxhbmNlcwgFDSR0MDM4MzQyMzg0NzQCXzMEBWxwRmVlCAUNJHQwMzgzNDIzODQ3NAJfNAQLcHJvdG9jb2xGZWUIBQ0kdDAzODM0MjM4NDc0Al81BBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDM4MzQyMzg0NzQCXzYEDmxwVG9rZW5zVG9TZW5kCQBlAgkAZQIFDmxwVG9rZW5zVG9NaW50BQVscEZlZQULcHJvdG9jb2xGZWUEBGVycjIJAQxfdmFsaWRhdGVJbnQEBQ5scFRva2Vuc1RvU2VuZAUMbWluTHBBbW91bnRfBQdNQVhfSU5UAhZkZXBvc2l0OiBsZXNzIHRoYW4gbWluAwkAAAIFBGVycjIFBGVycjIEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZAIIBQdzdG9yYWdlAl8zBQ5scFRva2Vuc1RvTWludAgFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQlscEFzc2V0SWQFDmxwVG9rZW5zVG9NaW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDmxwVG9rZW5zVG9TZW5kBQlscEFzc2V0SWQFA25pbAkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkCQESX3NhdmVBc3NldEJhbGFuY2VzAQUNYXNzZXRCYWxhbmNlcwkBE19zYXZlUmV3YXJkQmFsYW5jZXMBBQ5yZXdhcmRCYWxhbmNlcwkBCl9zYXZlTHBGZWUCBQxscEFzc2V0SWRTdHIJAGQCBQVscEZlZQkBCl9sb2FkTHBGZWUBBQxscEFzc2V0SWRTdHIJARBfc2F2ZVByb3RvY29sRmVlAgUMbHBBc3NldElkU3RyCQBkAgULcHJvdG9jb2xGZWUJARBfbG9hZFByb3RvY29sRmVlAQUMbHBBc3NldElkU3RyCQESX3NhdmVTaWdtYUZlZVBlckxwAQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELd2l0aGRyYXdBbGwABAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQMbHBBc3NldElkU3RyCQDYBAEFCWxwQXNzZXRJZAQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEFDGxwQXNzZXRJZFN0cgQGYXNzZXRzCQELX2xvYWRBc3NldHMABANlcnIDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBEl92YWxpZGF0ZUludEVxdWFscwMJAJADAQgFAWkIcGF5bWVudHMAAQIid2l0aGRyYXdBbGw6IGludmFsaWQgcGF5bWVudHMgc2l6ZQcJARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAiJ3aXRoZHJhd0FsbDogaW52YWxpZCBwYXltZW50IGFzc2V0BwkBDF92YWxpZGF0ZUludAQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEFB01BWF9JTlQCI3dpdGhkcmF3QWxsOiBpbnZhbGlkIHBheW1lbnQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQNJHQwMzk5ODI0MDA2OQkBDF93aXRoZHJhd0FsbAEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BA5scFRva2Vuc1RvQnVybggFDSR0MDM5OTgyNDAwNjkCXzEEDWJhbGFuY2VzVG9QYXkIBQ0kdDAzOTk4MjQwMDY5Al8yBA1hc3NldEJhbGFuY2VzCAUNJHQwMzk5ODI0MDA2OQJfMwQOcGF5bWVudEFjdGlvbnMJARhfZ2V0UGF5bWVudHNGcm9tQmFsYW5jZXMEBQZhc3NldHMFDWJhbGFuY2VzVG9QYXkIBQFpBmNhbGxlcgUKbHBEZWNpbWFscwQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCQBlAggFB3N0b3JhZ2UCXzMFDmxwVG9rZW5zVG9CdXJuCAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUIBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEEQnVybgIFCWxwQXNzZXRJZAUObHBUb2tlbnNUb0J1cm4FA25pbAUOcGF5bWVudEFjdGlvbnMJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFDWFzc2V0QmFsYW5jZXMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcCCGFzc2V0SWRfCm1pbkFtb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBAxscEFzc2V0SWRTdHIJANgEAQUJbHBBc3NldElkBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUMbHBBc3NldElkU3RyBAZhc3NldHMJAQtfbG9hZEFzc2V0cwAEA2VycgMDAwMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQ5fY2hlY2tXYXRjaGRvZwAHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAh93aXRoZHJhdzogaW52YWxpZCBwYXltZW50cyBzaXplBwkBFF92YWxpZGF0ZVN0cmluZ0VxdWFsAwUMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQCH3dpdGhkcmF3OiBpbnZhbGlkIHBheW1lbnQgYXNzZXQHCQEMX3ZhbGlkYXRlSW50BAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQUHTUFYX0lOVAIgd2l0aGRyYXc6IGludmFsaWQgcGF5bWVudCBhbW91bnQHCQEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwUGYXNzZXRzBQhhc3NldElkXwIZd2l0aGRyYXc6IGludmFsaWQgYXNzZXRJZAcJAQxfdmFsaWRhdGVJbnQEBQptaW5BbW91bnRfAAAFB01BWF9JTlQCG3dpdGhkcmF3OiBpbnZhbGlkIG1pbkFtb3VudAcDCQAAAgUDZXJyBQNlcnIEDSR0MDQxNDIzNDE1NzgJAQlfd2l0aGRyYXcCBQhhc3NldElkXwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQIBQ0kdDA0MTQyMzQxNTc4Al8xBBJmaW5hbEFzc2V0QmFsYW5jZXMIBQ0kdDA0MTQyMzQxNTc4Al8yBBNmaW5hbFJld2FyZEJhbGFuY2VzCAUNJHQwNDE0MjM0MTU3OAJfMwQFbHBGZWUIBQ0kdDA0MTQyMzQxNTc4Al80BAtwcm90b2NvbEZlZQgFDSR0MDQxNDIzNDE1NzgCXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDE0MjM0MTU3OAJfNgQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQhhc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOBARlcnIxCQEMX3ZhbGlkYXRlSW50BAULZmluYWxBbW91bnQFCm1pbkFtb3VudF8FB01BWF9JTlQCF3dpdGhkcmF3OiBsZXNzIHRoYW4gbWluAwkAAAIFBGVycjEFBGVycjEEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZQIIBQdzdG9yYWdlAl8zCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAgFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBBEJ1cm4CBQlscEFzc2V0SWQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULZmluYWxBbW91bnQJAQtfc3RyVG9Bc3NldAEFCGFzc2V0SWRfBQNuaWwJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFEmZpbmFsQXNzZXRCYWxhbmNlcwkBE19zYXZlUmV3YXJkQmFsYW5jZXMBBRNmaW5hbFJld2FyZEJhbGFuY2VzCQEKX3NhdmVMcEZlZQIFCGFzc2V0SWRfCQBkAgUFbHBGZWUJAQpfbG9hZExwRmVlAQUIYXNzZXRJZF8JARBfc2F2ZVByb3RvY29sRmVlAgUIYXNzZXRJZF8JAGQCBQtwcm90b2NvbEZlZQkBEF9sb2FkUHJvdG9jb2xGZWUBBQhhc3NldElkXwkBEl9zYXZlU2lnbWFGZWVQZXJMcAEFFHNpZ21hRmVlUGVyTHBVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBHN3YXACDnRhcmdldEFzc2V0SWRfCm1pbkFtb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQkA2AQBBQlscEFzc2V0SWQEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQOc291cmNlQXNzZXRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQWc291cmNlQW1vdW50Tm9ybWFsaXplZAkBEl9ub3JtYWxpemVEZWNpbWFscwQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQEMX2dldERlY2ltYWxzAQUOc291cmNlQXNzZXRTdHIFCmxwRGVjaW1hbHMFBERPV04EEHNvdXJjZUFzc2V0SW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQZhc3NldHMFDnNvdXJjZUFzc2V0U3RyAhpzd2FwOiBpbnZhbGlkIHNvdXJjZSBhc3NldAMJAAACBRBzb3VyY2VBc3NldEluZGV4BRBzb3VyY2VBc3NldEluZGV4BBB0YXJnZXRBc3NldEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUGYXNzZXRzBQ50YXJnZXRBc3NldElkXwIac3dhcDogaW52YWxpZCB0YXJnZXQgYXNzZXQDCQAAAgUQdGFyZ2V0QXNzZXRJbmRleAUQdGFyZ2V0QXNzZXRJbmRleAQDZXJyAwMDAwMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHCQEOX2NoZWNrV2F0Y2hkb2cABwkBDF92YWxpZGF0ZUludAQFCm1pbkFtb3VudF8AAAUHTUFYX0lOVAIfc3dhcDogaW52YWxpZCBtaW4gdGFyZ2V0IGFtb3VudAcJAQxfdmFsaWRhdGVJbnQEBRZzb3VyY2VBbW91bnROb3JtYWxpemVkAAEFB01BWF9JTlQCG3N3YXA6IGludmFsaWQgc291cmNlIGFtb3VudAcJARRfdmFsaWRhdGVTdHJpbmdOb3RFcQMFDnNvdXJjZUFzc2V0U3RyBQ50YXJnZXRBc3NldElkXwIRc3dhcDogc2FtZSBhc3NldHMHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAhtzd2FwOiBpbnZhbGlkIHBheW1lbnRzIHNpemUHAwkAAAIFA2VycgUDZXJyBA0kdDA0Mzc0MzQzOTIyCQEFX3N3YXADBRBzb3VyY2VBc3NldEluZGV4BRB0YXJnZXRBc3NldEluZGV4BRZzb3VyY2VBbW91bnROb3JtYWxpemVkBBZ0YXJnZXRBbW91bnROb3JtYWxpemVkCAUNJHQwNDM3NDM0MzkyMgJfMQQSZmluYWxBc3NldEJhbGFuY2VzCAUNJHQwNDM3NDM0MzkyMgJfMgQTZmluYWxSZXdhcmRCYWxhbmNlcwgFDSR0MDQzNzQzNDM5MjICXzMEBWxwRmVlCAUNJHQwNDM3NDM0MzkyMgJfNAQLcHJvdG9jb2xGZWUIBQ0kdDA0Mzc0MzQzOTIyAl81BBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDQzNzQzNDM5MjICXzYEFWZpbmFsQW1vdW50Tm9ybWFsaXplZAkAZQIJAGUCBRZ0YXJnZXRBbW91bnROb3JtYWxpemVkBQVscEZlZQULcHJvdG9jb2xGZWUEDnRhcmdldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUOdGFyZ2V0QXNzZXRJZF8EC2ZpbmFsQW1vdW50CQESX25vcm1hbGl6ZURlY2ltYWxzBAUVZmluYWxBbW91bnROb3JtYWxpemVkBQpscERlY2ltYWxzBQ50YXJnZXREZWNpbWFscwUERE9XTgQEZXJyMQkBDF92YWxpZGF0ZUludAQFC2ZpbmFsQW1vdW50BQptaW5BbW91bnRfBQdNQVhfSU5UAhNzd2FwOiBsZXNzIHRoYW4gbWluAwkAAAIFBGVycjEFBGVycjEJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtmaW5hbEFtb3VudAkBC19zdHJUb0Fzc2V0AQUOdGFyZ2V0QXNzZXRJZF8FA25pbAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFEmZpbmFsQXNzZXRCYWxhbmNlcwkBE19zYXZlUmV3YXJkQmFsYW5jZXMBBRNmaW5hbFJld2FyZEJhbGFuY2VzCQEKX3NhdmVMcEZlZQIFDnRhcmdldEFzc2V0SWRfCQBkAgUFbHBGZWUJAQpfbG9hZExwRmVlAQUOdGFyZ2V0QXNzZXRJZF8JARBfc2F2ZVByb3RvY29sRmVlAgUOdGFyZ2V0QXNzZXRJZF8JAGQCBQtwcm90b2NvbEZlZQkBEF9sb2FkUHJvdG9jb2xGZWUBBQ50YXJnZXRBc3NldElkXwkBEl9zYXZlU2lnbWFGZWVQZXJMcAEFFHNpZ21hRmVlUGVyTHBVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWdldERlcG9zaXRBbGwBCWxwQW1vdW50XwQDZXJyCQEMX3ZhbGlkYXRlSW50BAUJbHBBbW91bnRfAAEFB01BWF9JTlQCHWdldERlcG9zaXRBbGw6IGludmFsaWQgYW1vdW50AwkAAAIFA2VycgUDZXJyBA0kdDA0NTA5NDQ1MTgxCQELX2RlcG9zaXRBbGwBBQlscEFtb3VudF8EDmxwVG9rZW5zVG9NaW50CAUNJHQwNDUwOTQ0NTE4MQJfMQQZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAgFDSR0MDQ1MDk0NDUxODECXzIEDWFzc2V0QmFsYW5jZXMIBQ0kdDA0NTA5NDQ1MTgxAl8zCQCUCgIFA25pbAkAlAoCBQ5scFRva2Vuc1RvTWludAUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpnZXREZXBvc2l0Aghhc3NldElkXwdhbW91bnRfBANlcnIDCQEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwkBC19sb2FkQXNzZXRzAAUIYXNzZXRJZF8CGWdldERlcG9zaXQ6IGludmFsaWQgYXNzZXQJAQxfdmFsaWRhdGVJbnQEBQdhbW91bnRfAAEFB01BWF9JTlQCGmdldERlcG9zaXQ6IGludmFsaWQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQNYXNzZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFCGFzc2V0SWRfBBBhbW91bnROb3JtYWxpemVkCQESX25vcm1hbGl6ZURlY2ltYWxzBAUHYW1vdW50XwUNYXNzZXREZWNpbWFscwUKbHBEZWNpbWFscwUERE9XTgQNJHQwNDU5NDA0NjA3MgkBCF9kZXBvc2l0AgUIYXNzZXRJZF8FEGFtb3VudE5vcm1hbGl6ZWQEDmxwVG9rZW5zVG9NaW50CAUNJHQwNDU5NDA0NjA3MgJfMQQNYXNzZXRCYWxhbmNlcwgFDSR0MDQ1OTQwNDYwNzICXzIEDnJld2FyZEJhbGFuY2VzCAUNJHQwNDU5NDA0NjA3MgJfMwQFbHBGZWUIBQ0kdDA0NTk0MDQ2MDcyAl80BAtwcm90b2NvbEZlZQgFDSR0MDQ1OTQwNDYwNzICXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDU5NDA0NjA3MgJfNgQObHBUb2tlbnNUb1NlbmQJAGUCCQBlAgUObHBUb2tlbnNUb01pbnQFBWxwRmVlBQtwcm90b2NvbEZlZQkAlAoCBQNuaWwFDmxwVG9rZW5zVG9TZW5kCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmdldFdpdGhkcmF3QWxsAQlscEFtb3VudF8EA2VycgkBDF92YWxpZGF0ZUludAQFCWxwQW1vdW50XwAABQdNQVhfSU5UAh5nZXRXaXRoZHJhd0FsbDogaW52YWxpZCBhbW91bnQDCQAAAgUDZXJyBQNlcnIEDSR0MDQ2NTExNDY1ODcJAQxfd2l0aGRyYXdBbGwBBQlscEFtb3VudF8EDmxwVG9rZW5zVG9CdXJuCAUNJHQwNDY1MTE0NjU4NwJfMQQNYmFsYW5jZXNUb0dldAgFDSR0MDQ2NTExNDY1ODcCXzIEDWFzc2V0QmFsYW5jZXMIBQ0kdDA0NjUxMTQ2NTg3Al8zCQCUCgIFA25pbAUNYmFsYW5jZXNUb0dldAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtnZXRXaXRoZHJhdwIIYXNzZXRJZF8HYW1vdW50XwQDZXJyAwkBFV92YWxpZGF0ZUxpc3RDb250YWlucwMJAQtfbG9hZEFzc2V0cwAFCGFzc2V0SWRfAhpnZXRXaXRoZHJhdzogaW52YWxpZCBhc3NldAkBDF92YWxpZGF0ZUludAQFB2Ftb3VudF8AAQUHTUFYX0lOVAIbZ2V0V2l0aGRyYXc6IGludmFsaWQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQNJHQwNDcyMzg0NzM3MAkBCV93aXRoZHJhdwIFCGFzc2V0SWRfBQdhbW91bnRfBBZ0YXJnZXRBbW91bnROb3JtYWxpemVkCAUNJHQwNDcyMzg0NzM3MAJfMQQNYXNzZXRCYWxhbmNlcwgFDSR0MDQ3MjM4NDczNzACXzIEDnJld2FyZEJhbGFuY2VzCAUNJHQwNDcyMzg0NzM3MAJfMwQFbHBGZWUIBQ0kdDA0NzIzODQ3MzcwAl80BAtwcm90b2NvbEZlZQgFDSR0MDQ3MjM4NDczNzACXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDcyMzg0NzM3MAJfNgQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQhhc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOCQCUCgIFA25pbAULZmluYWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHZ2V0U3dhcAMOc291cmNlQXNzZXRJZF8OdGFyZ2V0QXNzZXRJZF8Nc291cmNlQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQGYXNzZXRzCQELX2xvYWRBc3NldHMABBBzb3VyY2VBc3NldEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUGYXNzZXRzBQ5zb3VyY2VBc3NldElkXwIac3dhcDogaW52YWxpZCBzb3VyY2UgYXNzZXQDCQAAAgUQc291cmNlQXNzZXRJbmRleAUQc291cmNlQXNzZXRJbmRleAQQdGFyZ2V0QXNzZXRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFBmFzc2V0cwUOdGFyZ2V0QXNzZXRJZF8CGnN3YXA6IGludmFsaWQgdGFyZ2V0IGFzc2V0AwkAAAIFEHRhcmdldEFzc2V0SW5kZXgFEHRhcmdldEFzc2V0SW5kZXgEFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQJARJfbm9ybWFsaXplRGVjaW1hbHMEBQ1zb3VyY2VBbW91bnRfCQEMX2dldERlY2ltYWxzAQUOc291cmNlQXNzZXRJZF8FCmxwRGVjaW1hbHMFBERPV04EA2VycgMJAQxfdmFsaWRhdGVJbnQEBRZzb3VyY2VBbW91bnROb3JtYWxpemVkAAEFB01BWF9JTlQCG3N3YXA6IGludmFsaWQgc291cmNlIGFtb3VudAkBFF92YWxpZGF0ZVN0cmluZ05vdEVxAwUOc291cmNlQXNzZXRJZF8FDnRhcmdldEFzc2V0SWRfAhFzd2FwOiBzYW1lIGFzc2V0cwcDCQAAAgUDZXJyBQNlcnIEDSR0MDQ4NzgwNDg5NTkJAQVfc3dhcAMFEHNvdXJjZUFzc2V0SW5kZXgFEHRhcmdldEFzc2V0SW5kZXgFFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQEFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQIBQ0kdDA0ODc4MDQ4OTU5Al8xBBJmaW5hbEFzc2V0QmFsYW5jZXMIBQ0kdDA0ODc4MDQ4OTU5Al8yBBNmaW5hbFJld2FyZEJhbGFuY2VzCAUNJHQwNDg3ODA0ODk1OQJfMwQFbHBGZWUIBQ0kdDA0ODc4MDQ4OTU5Al80BAtwcm90b2NvbEZlZQgFDSR0MDQ4NzgwNDg5NTkCXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDg3ODA0ODk1OQJfNgQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQ50YXJnZXRBc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOCQCUCgIFA25pbAULZmluYWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIZ2V0Q2xhaW0BBXVzZXJfBAR1c2VyAwkAZgIJALECAQUFdXNlcl8AAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFBXVzZXJfAhZnZXRDbGFpbTogaW52YWxpZCB1c2VyCAUBaQZjYWxsZXIEDSR0MDQ5NjAxNDk2NTcJAQtfY2hlY2twb2ludAEFBHVzZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNDk2MDE0OTY1NwJfMQQLdXNlclByb2ZpdHMIBQ0kdDA0OTYwMTQ5NjU3Al8yCQCUCgIFA25pbAULdXNlclByb2ZpdHMBaQEKZ2V0QXNzZXRJZAAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xCQCUCgIFA25pbAkA2AQBBQlscEFzc2V0SWQBaQELZ2V0RGVjaW1hbHMABAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkCQCUCgIFA25pbAUKbHBEZWNpbWFscwFpAQpjaGVja3BvaW50AQV1c2VyXwQDZXJyAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwMJAAACBQNlcnIFA2VycgQEdXNlcgMJAGYCCQCxAgEFBXVzZXJfAAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQV1c2VyXwIYY2hlY2twb2ludDogaW52YWxpZCB1c2VyCAUBaQZjYWxsZXIJAQtfY2hlY2twb2ludAEFBHVzZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UABANlcnIDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBCAUHc3RvcmFnZQJfMQQEZXJyMQMDCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAhxzdGFrZTogaW52YWxpZCBwYXltZW50cyBzaXplCQEUX3ZhbGlkYXRlU3RyaW5nRXF1YWwDBQxscEFzc2V0SWRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAIcc3Rha2U6IGludmFsaWQgcGF5bWVudCBhc3NldAcJAQxfdmFsaWRhdGVJbnQECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAAABQdNQVhfSU5UAh1zdGFrZTogaW52YWxpZCBwYXltZW50IGFtb3VudAcDCQAAAgUEZXJyMQUEZXJyMQQNJHQwNTA4Njk1MDkyOQkBC19jaGVja3BvaW50AQgFAWkGY2FsbGVyBBFjaGVja3BvaW50QWN0aW9ucwgFDSR0MDUwODY5NTA5MjkCXzEEC3VzZXJQcm9maXRzCAUNJHQwNTA4Njk1MDkyOQJfMgkAlAoCCQDOCAIJAM4IAgURY2hlY2twb2ludEFjdGlvbnMJAQtfc2F2ZVVzZXJMcAIIBQFpBmNhbGxlcgkAZAIJAQtfbG9hZFVzZXJMcAEIBQFpBmNhbGxlcggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAQxfc2F2ZVRvdGFsTHABCQBkAgkBDF9sb2FkVG90YWxMcAAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB3Vuc3Rha2UBB2Ftb3VudF8EA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBAZ1c2VyTHAJAQtfbG9hZFVzZXJMcAEIBQFpBmNhbGxlcgQEZXJyMQkBDF92YWxpZGF0ZUludAQFB2Ftb3VudF8AAAUGdXNlckxwAhd1bnN0YWtlOiBpbnZhbGlkIGFtb3VudAMJAAACBQRlcnIxBQRlcnIxBA0kdDA1MTQ0MDUxNTAwCQELX2NoZWNrcG9pbnQBCAUBaQZjYWxsZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNTE0NDA1MTUwMAJfMQQLdXNlclByb2ZpdHMIBQ0kdDA1MTQ0MDUxNTAwAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnRfBQlscEFzc2V0SWQFA25pbAURY2hlY2twb2ludEFjdGlvbnMJAQtfc2F2ZVVzZXJMcAIIBQFpBmNhbGxlcgkAZQIFBnVzZXJMcAUHYW1vdW50XwkBDF9zYXZlVG90YWxMcAEJAGUCCQEMX2xvYWRUb3RhbExwAAUHYW1vdW50XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVjbGFpbQEFdXNlcl8EA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEBHVzZXIDCQBmAgkAsQIBBQV1c2VyXwAACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUFdXNlcl8CE2NsYWltOiBpbnZhbGlkIHVzZXIIBQFpBmNhbGxlcgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQUJbHBBc3NldElkBAZhc3NldHMJAMwIAgUMbHBBc3NldElkU3RyCQELX2xvYWRBc3NldHMABAhtYXhJbmRleAkAZQIJAJADAQUGYXNzZXRzAAEEDSR0MDUyMTg4NTIyNDQJAQtfY2hlY2twb2ludAEFBHVzZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNTIxODg1MjI0NAJfMQQLdXNlclByb2ZpdHMIBQ0kdDA1MjE4ODUyMjQ0Al8yCgEIZm9sZEZ1bmMCA2FjYwZwcm9maXQEBWluZGV4CAUDYWNjAl8xAwMJAGcCBQhtYXhJbmRleAUFaW5kZXgJAGYCBQZwcm9maXQAAAcEBWFzc2V0CQCRAwIFBmFzc2V0cwUFaW5kZXgJAJUKAwkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgAACQDNCAIIBQNhY2MCXzMJAQ5TY3JpcHRUcmFuc2ZlcgMFBHVzZXIFBnByb2ZpdAkBC19zdHJUb0Fzc2V0AQUFYXNzZXQJAJUKAwkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgUGcHJvZml0CAUDYWNjAl8zBA0kdDA1MjYyMjUyNzEzCgACJGwFC3VzZXJQcm9maXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDAAAFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBANpZHgIBQ0kdDA1MjYyMjUyNzEzAl8xBBJ1c2VyUHJvZml0c1VwZGF0ZWQIBQ0kdDA1MjYyMjUyNzEzAl8yBA1wcm9maXRBY3Rpb25zCAUNJHQwNTI2MjI1MjcxMwJfMwkAlAoCCQDOCAIJAM4IAgUNcHJvZml0QWN0aW9ucwkA0QgCBRFjaGVja3BvaW50QWN0aW9ucwAACQEQX3NhdmVVc2VyUHJvZml0cwIFBHVzZXIFEnVzZXJQcm9maXRzVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhjbGFpbUFsbAEFdXNlcl8EA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEBHVzZXIDCQBmAgkAsQIBBQV1c2VyXwAACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUFdXNlcl8CFmNsYWltQWxsOiBpbnZhbGlkIHVzZXIIBQFpBmNhbGxlcgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQUJbHBBc3NldElkBAZhc3NldHMJAMwIAgUMbHBBc3NldElkU3RyCQELX2xvYWRBc3NldHMABAhtYXhJbmRleAkAZQIJAJADAQUGYXNzZXRzAAEEDSR0MDUzMzQzNTM0MDMJARJfbG9hZEFzc2V0QmFsYW5jZXMABA1hc3NldEJhbGFuY2VzCAUNJHQwNTMzNDM1MzQwMwJfMQQQYXNzZXRUb3RhbFN1cHBseQgFDSR0MDUzMzQzNTM0MDMCXzIEDSR0MDUzNDA5NTM0NjUJAQtfY2hlY2twb2ludAEFBHVzZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNTM0MDk1MzQ2NQJfMQQLdXNlclByb2ZpdHMIBQ0kdDA1MzQwOTUzNDY1Al8yCgEIZm9sZEZ1bmMCA2FjYwZwcm9maXQEBWluZGV4CAUDYWNjAl8xAwkAAAIFBWluZGV4AAAJAJcKBQkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgAACAUDYWNjAl8zCAUDYWNjAl80CQBkAggFA2FjYwJfNQUGcHJvZml0AwMJAGYCBQVpbmRleAAACQBnAgUIbWF4SW5kZXgFBWluZGV4BwQKYXNzZXRJbmRleAkAZQIFBWluZGV4AAEEB2JhbGFuY2UJAJEDAgUNYXNzZXRCYWxhbmNlcwUKYXNzZXRJbmRleAkAlwoFCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yAAAJAM0IAggFA2FjYwJfMwkAZAIFB2JhbGFuY2UFBnByb2ZpdAkAZAIIBQNhY2MCXzQFBnByb2ZpdAgFA2FjYwJfNQkAlwoFCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yAAAIBQNhY2MCXzMIBQNhY2MCXzQIBQNhY2MCXzUEDSR0MDU0MDAxNTQxMzcKAAIkbAULdXNlclByb2ZpdHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCXCgUAAAUDbmlsBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBANpZHgIBQ0kdDA1NDAwMTU0MTM3Al8xBBJ1c2VyUHJvZml0c1VwZGF0ZWQIBQ0kdDA1NDAwMTU0MTM3Al8yBBRhc3NldEJhbGFuY2VzVXBkYXRlZAgFDSR0MDU0MDAxNTQxMzcCXzMEDmxwVG9rZW5zVG9NaW50CAUNJHQwNTQwMDE1NDEzNwJfNAQObHBUb2tlbnNQcm9maXQIBQ0kdDA1NDAwMTU0MTM3Al81BA5zdG9yYWdlVXBkYXRlZAkAnAoKCAUHc3RvcmFnZQJfMQgFB3N0b3JhZ2UCXzIJAGQCCAUHc3RvcmFnZQJfMwUObHBUb2tlbnNUb01pbnQIBQdzdG9yYWdlAl80CAUHc3RvcmFnZQJfNQgFB3N0b3JhZ2UCXzYIBQdzdG9yYWdlAl83CAUHc3RvcmFnZQJfOAgFB3N0b3JhZ2UCXzkIBQdzdG9yYWdlA18xMAkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQlscEFzc2V0SWQFDmxwVG9rZW5zVG9NaW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGQCBQ5scFRva2Vuc1RvTWludAUObHBUb2tlbnNQcm9maXQFCWxwQXNzZXRJZAUDbmlsCQEMX3NhdmVTdG9yYWdlAQUOc3RvcmFnZVVwZGF0ZWQJARJfc2F2ZUFzc2V0QmFsYW5jZXMBBRRhc3NldEJhbGFuY2VzVXBkYXRlZAkA0QgCBRFjaGVja3BvaW50QWN0aW9ucwAACQEQX3NhdmVVc2VyUHJvZml0cwIFBHVzZXIFEnVzZXJQcm9maXRzVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ51cGRhdGVQb29sRmVlcwIKbHBGZWVSYXRlXxBwcm90b2NvbEZlZVJhdGVfBANlcnIDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDF92YWxpZGF0ZUludAQFCmxwRmVlUmF0ZV8AAAUHTUFYX0ZFRQIedXBkYXRlUG9vbEZlZXM6IGludmFsaWQgbHAgZmVlBwkBDF92YWxpZGF0ZUludAQFEHByb3RvY29sRmVlUmF0ZV8AAAUHTUFYX0ZFRQIkdXBkYXRlUG9vbEZlZXM6IGludmFsaWQgcHJvdG9jb2wgZmVlBwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMggFB3N0b3JhZ2UCXzMFCmxwRmVlUmF0ZV8FEHByb3RvY29sRmVlUmF0ZV8IBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEHVwZGF0ZVBvb2xQYXJhbXMEF21heEFsbG9jYXRpb25BbXBsaWZpZXJfEHdlaWdodEFtcGxpZmllcl8QZGlzYmFsYW5jZUNvZWZmXwtmZWVNYXhSYXRlXwQDZXJyAwMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDF92YWxpZGF0ZUludAQFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfAAAFDU1BWF9BTVBMSUZJRVICMHVwZGF0ZVBvb2xQYXJhbXM6IGludmFsaWQgbWF4QWxsb2NhdGlvbkFtcGxpZmllcgcJAQxfdmFsaWRhdGVJbnQEBRB3ZWlnaHRBbXBsaWZpZXJfAAAFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfAil1cGRhdGVQb29sUGFyYW1zOiBpbnZhbGlkIHdlaWdodEFtcGxpZmllcgcJAQxfdmFsaWRhdGVJbnQEBRBkaXNiYWxhbmNlQ29lZmZfAAAFB01BWF9JTlQCKXVwZGF0ZVBvb2xQYXJhbXM6IGludmFsaWQgZGlzYmFsYW5jZUNvZWZmBwkBDF92YWxpZGF0ZUludAQFC2ZlZU1heFJhdGVfAAAFB01BWF9JTlQCJHVwZGF0ZVBvb2xQYXJhbXM6IGludmFsaWQgZmVlTWF4UmF0ZQcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA5zdG9yYWdlVXBkYXRlZAkAnAoKCAUHc3RvcmFnZQJfMQgFB3N0b3JhZ2UCXzIIBQdzdG9yYWdlAl8zCAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfBRB3ZWlnaHRBbXBsaWZpZXJfBRBkaXNiYWxhbmNlQ29lZmZfBQtmZWVNYXhSYXRlXwgFB3N0b3JhZ2UDXzEwCQCUCgIJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9taWdyYXRlQmFsYW5jZXMABANlcnIDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRva2VuU3VwcGx5CAUHc3RvcmFnZQJfMwQNJHQwNTY2NzI1NjczMgkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEDWFzc2V0QmFsYW5jZXMIBQ0kdDA1NjY3MjU2NzMyAl8xBBBhc3NldFRvdGFsU3VwcGx5CAUNJHQwNTY2NzI1NjczMgJfMgQMYmFsYW5jZXNEaWZmCQCWAwEJAMwIAgkAZQIFEGFzc2V0VG90YWxTdXBwbHkFDWxwVG9rZW5TdXBwbHkJAMwIAgAABQNuaWwEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZAIFDWxwVG9rZW5TdXBwbHkFDGJhbGFuY2VzRGlmZggFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVwYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQYFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5wYXVzZQAEA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQtfd2hlblBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdXBkYXRlUGF1c2VyAQdwYXVzZXJfBANlcnIDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB3BhdXNlcl8CHHVwZGF0ZVBhdXNlcjogaW52YWxpZCBwYXVzZXIHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOdXBkYXRlV2F0Y2hkb2cCCXdhdGNoZG9nXwdvZmZzZXRfBANlcnIDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQl3YXRjaGRvZ18CIHVwZGF0ZVdhdGNoZG9nOiBpbnZhbGlkIHdhdGNoZG9nBwkBDF92YWxpZGF0ZUludAQFB29mZnNldF8AAAUHTUFYX0lOVAIedXBkYXRlV2F0Y2hkb2c6IGludmFsaWQgb2Zmc2V0BwMJAAACBQNlcnIFA2VycgkAlAoCCQDOCAIJAQ1fc2F2ZVdhdGNoZG9nAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJd2F0Y2hkb2dfCQETX3NhdmVXYXRjaGRvZ09mZnNldAEFB29mZnNldF8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc2V0TXVsdGlzaWcBCW11bHRpc2lnXwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3ZhbGlkYXRlQWRkcmVzcwIFCW11bHRpc2lnXwIdc2V0TXVsdGlzaWc6IGludmFsaWQgbXVsdGlzaWcHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQ1fc2F2ZU11bHRpc2lnAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJbXVsdGlzaWdfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAhtdWx0aXNpZwUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwkAuQkCCQDMCAIFCktFWV9TVEFUVVMJAMwIAgkApQgBBQR0aGlzCQDMCAIJANgEAQgFAnR4AmlkBQNuaWwFA1NFUAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmKSKyt", "height": 2904971, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FQLP2qeSZzuQDHhme3wgCd5fui21qYsyx7T1Ff2dTdCj Next: CCEsjEDyMYAr8p5aAZo8QmCwU1ZwPJ2qmaNDQHfAFARx Diff:
OldNewDifferences
1919
2020 let i = 1000000
2121
22-let j = 1000000
23-
24-let k = toBigInt(1000000000000000000)
22+let j = toBigInt(1000000000000000000)
23+
24+let k = toBigInt(1000000000000)
2525
2626 let l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2727
2828 let m = (l :+ 0)
2929
30-let n = toBigInt(0)
31-
32-let o = [n, n, n, n, n, n, n, n, n, n, n]
33-
34-let p = 8
35-
36-let q = 18
37-
38-let r = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_")
39-
40-let s = "MULTISIG"
41-
42-let t = "STATUS"
43-
44-let u = "PAUSED"
45-
46-let v = "PAUSER"
47-
48-let w = "STORAGE"
49-
50-let x = "ASSETS"
51-
52-let y = "ASSET_BALANCES"
53-
54-let z = "ASSET_WEIGHTS"
55-
56-let A = "LP_FEE"
57-
58-let B = "PROTOCOL_FEE"
59-
60-let C = "PRECISION"
61-
62-let D = "SIGMA_FEE_PER_LP"
63-
64-let E = "USER_SIGMA_FEE_PER_LP"
65-
66-let F = "USER_LP"
67-
68-let G = "TOTAL_LP"
69-
70-let H = "USER_PROFITS"
71-
72-let I = "WATCHDOG"
73-
74-let J = "WATCHDOG_OFFSET"
75-
76-let K = "WATCHDOG_HEIGHT"
77-
78-func L (M,N) = {
79- let O = addressFromString(M)
80- if ($isInstanceOf(O, "Address"))
81- then {
82- let P = O
30+let n = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
31+
32+let o = toBigInt(0)
33+
34+let p = [o, o, o, o, o, o, o, o, o, o, o]
35+
36+let q = 8
37+
38+let r = 18
39+
40+let s = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_")
41+
42+let t = "MULTISIG"
43+
44+let u = "STATUS"
45+
46+let v = "PAUSED"
47+
48+let w = "PAUSER"
49+
50+let x = "STORAGE"
51+
52+let y = "ASSETS"
53+
54+let z = "ASSET_BALANCES"
55+
56+let A = "REWARD_BALANCES"
57+
58+let B = "ASSET_WEIGHTS"
59+
60+let C = "LP_FEE"
61+
62+let D = "PROTOCOL_FEE"
63+
64+let E = "PRECISION"
65+
66+let F = "SIGMA_FEE_PER_LP"
67+
68+let G = "USER_SIGMA_FEE_PER_LP"
69+
70+let H = "USER_LP"
71+
72+let I = "TOTAL_LP"
73+
74+let J = "USER_PROFITS"
75+
76+let K = "WATCHDOG"
77+
78+let L = "WATCHDOG_OFFSET"
79+
80+let M = "WATCHDOG_HEIGHT"
81+
82+func N (O,P) = {
83+ let Q = addressFromString(O)
84+ if ($isInstanceOf(Q, "Address"))
85+ then {
86+ let R = Q
8387 true
8488 }
85- else throw(N)
86- }
87-
88-
89-func Q (R,N) = if ((R == b))
89+ else throw(P)
90+ }
91+
92+
93+func S (T,P) = if ((T == b))
9094 then true
9195 else {
92- let O = assetInfo(fromBase58String(R))
93- if ($isInstanceOf(O, "Asset"))
96+ let Q = assetInfo(fromBase58String(T))
97+ if ($isInstanceOf(Q, "Asset"))
9498 then {
95- let P = O
99+ let R = Q
96100 true
97101 }
98- else throw(N)
99- }
100-
101-
102-func S (T,U,V,N) = if (if ((U > T))
102+ else throw(P)
103+ }
104+
105+
106+func U (V,W,X,P) = if (if ((W > V))
103107 then true
104- else (T > V))
105- then throw(N)
108+ else (V > X))
109+ then throw(P)
106110 else true
107111
108112
109-func W (T,X,N) = if ((T != X))
110- then throw(N)
113+func Y (V,Z,P) = if ((V != Z))
114+ then throw(P)
111115 else true
112116
113117
114-func Y (Z,aa,N) = if ((Z != aa))
115- then throw(N)
118+func aa (ab,ac,P) = if ((ab != ac))
119+ then throw(P)
116120 else true
117121
118122
119-func ab (Z,aa,N) = if ((Z == aa))
120- then throw(N)
123+func ad (ab,ac,P) = if ((ab == ac))
124+ then throw(P)
121125 else true
122126
123127
124-func ac (T,U,V,N) = {
125- func ad (ae,af) = {
126- let O = parseInt(af)
127- if ($isInstanceOf(O, "Int"))
128+func ae (V,W,X,P) = {
129+ func af (ag,ah) = {
130+ let Q = parseInt(ah)
131+ if ($isInstanceOf(Q, "Int"))
128132 then {
129- let P = O
130- if (ae)
131- then S(P, U, V, N)
133+ let R = Q
134+ if (ag)
135+ then U(R, W, X, P)
132136 else false
133137 }
134- else throw(N)
135- }
136-
137- let ag = T
138- let ah = size(ag)
139- let ai = true
140- func aj (ak,al) = if ((al >= ah))
141- then ak
142- else ad(ak, ag[al])
143-
144- func am (ak,al) = if ((al >= ah))
145- then ak
138+ else throw(P)
139+ }
140+
141+ let ai = V
142+ let aj = size(ai)
143+ let ak = true
144+ func al (am,an) = if ((an >= aj))
145+ then am
146+ else af(am, ai[an])
147+
148+ func ao (am,an) = if ((an >= aj))
149+ then am
146150 else throw("List size exceeds 10")
147151
148- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
149- }
150-
151-
152-func an (ao,N) = {
153- func ad (ae,af) = if (ae)
154- then Q(af, N)
152+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
153+ }
154+
155+
156+func ap (aq,P) = {
157+ func af (ag,ah) = if (ag)
158+ then S(ah, P)
155159 else false
156160
157- let ag = ao
158- let ah = size(ag)
159- let ai = true
160- func aj (ak,al) = if ((al >= ah))
161- then ak
162- else ad(ak, ag[al])
163-
164- func am (ak,al) = if ((al >= ah))
165- then ak
161+ let ai = aq
162+ let aj = size(ai)
163+ let ak = true
164+ func al (am,an) = if ((an >= aj))
165+ then am
166+ else af(am, ai[an])
167+
168+ func ao (am,an) = if ((an >= aj))
169+ then am
166170 else throw("List size exceeds 10")
167171
168- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
169- }
170-
171-
172-func ap (Z,aa,N) = if ((Z != aa))
173- then throw(N)
172+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
173+ }
174+
175+
176+func ar (ab,ac,P) = if ((ab != ac))
177+ then throw(P)
174178 else true
175179
176180
177-func aq (T,N) = if (if ((4 > size(T)))
181+func as (V,P) = if (if ((4 > size(V)))
178182 then true
179- else (size(T) > 16))
180- then throw(N)
183+ else (size(V) > 16))
184+ then throw(P)
181185 else true
182186
183187
184-func ar (T,N) = if ((size(T) > 1000))
185- then throw(N)
188+func at (V,P) = if ((size(V) > 1000))
189+ then throw(P)
186190 else true
187191
188192
189-func as (T,N) = if (if ((0 > T))
193+func au (V,P) = if (if ((0 > V))
190194 then true
191- else (T > 8))
192- then throw(N)
195+ else (V > 8))
196+ then throw(P)
193197 else true
194198
195199
196-func at (au,R,av,N) = {
197- let O = au.assetId
198- if ($isInstanceOf(O, "ByteVector"))
199- then {
200- let P = O
201- if ((R != toBase58String(P)))
202- then throw((N + ": asset"))
203- else if ((av > au.amount))
204- then throw((N + ": amount"))
200+func av (aw,T,ax,P) = {
201+ let Q = aw.assetId
202+ if ($isInstanceOf(Q, "ByteVector"))
203+ then {
204+ let R = Q
205+ if ((T != toBase58String(R)))
206+ then throw((P + ": asset"))
207+ else if ((ax > aw.amount))
208+ then throw((P + ": amount"))
205209 else true
206210 }
207- else throw((N + ": asset"))
208- }
209-
210-
211-func aw (ax,T,N) = if (!(containsElement(ax, T)))
212- then throw(N)
211+ else throw((P + ": asset"))
212+ }
213+
214+
215+func ay (az,V,P) = if (!(containsElement(az, V)))
216+ then throw(P)
213217 else true
214218
215219
216-func ay (az) = {
217- let O = az
218- if ($isInstanceOf(O, "ByteVector"))
219- then {
220- let P = O
221- toBase58String(P)
220+func aA (aB) = {
221+ let Q = aB
222+ if ($isInstanceOf(Q, "ByteVector"))
223+ then {
224+ let R = Q
225+ toBase58String(R)
222226 }
223227 else b
224228 }
225229
226230
227-func aA (az) = if (if ((az == b))
231+func aC (aB) = if (if ((aB == b))
228232 then true
229- else (az == ""))
233+ else (aB == ""))
230234 then unit
231- else fromBase58String(az)
232-
233-
234-func aB () = {
235- let O = getBoolean(u)
236- if ($isInstanceOf(O, "Boolean"))
237- then {
238- let P = O
239- P
235+ else fromBase58String(aB)
236+
237+
238+func aD () = {
239+ let Q = getBoolean(v)
240+ if ($isInstanceOf(Q, "Boolean"))
241+ then {
242+ let R = Q
243+ R
240244 }
241245 else false
242246 }
243247
244248
245-func aC (aD) = [BooleanEntry(u, aD)]
246-
247-
248-func aE () = {
249- let O = getString(v)
250- if ($isInstanceOf(O, "String"))
251- then {
252- let P = O
253- addressFromStringValue(P)
249+func aE (aF) = [BooleanEntry(v, aF)]
250+
251+
252+func aG () = {
253+ let Q = getString(w)
254+ if ($isInstanceOf(Q, "String"))
255+ then {
256+ let R = Q
257+ addressFromStringValue(R)
254258 }
255259 else Address(base58'')
256260 }
257261
258262
259-func aF (aG) = [StringEntry(v, toString(aG))]
260-
261-
262-func aH () = {
263- let O = getString(s)
264- if ($isInstanceOf(O, "String"))
265- then {
266- let P = O
267- addressFromStringValue(P)
263+func aH (aI) = [StringEntry(w, toString(aI))]
264+
265+
266+func aJ () = {
267+ let Q = getString(t)
268+ if ($isInstanceOf(Q, "String"))
269+ then {
270+ let R = Q
271+ addressFromStringValue(R)
268272 }
269273 else Address(base58'')
270274 }
271275
272276
273-func aI (aJ) = [StringEntry(s, toString(aJ))]
274-
275-
276-func aK () = {
277- let O = getString(w)
278- if ($isInstanceOf(O, "String"))
279- then {
280- let P = O
281- let aL = split(P, a)
282- $Tuple10(fromBase58String(aL[0]), (aL[1] == "1"), parseIntValue(aL[2]), parseIntValue(aL[3]), parseIntValue(aL[4]), parseIntValue(aL[5]), parseIntValue(aL[6]), parseIntValue(aL[7]), parseIntValue(aL[8]), addressFromStringValue(aL[9]))
277+func aK (aL) = [StringEntry(t, toString(aL))]
278+
279+
280+func aM () = {
281+ let Q = getString(x)
282+ if ($isInstanceOf(Q, "String"))
283+ then {
284+ let R = Q
285+ let aN = split(R, a)
286+ $Tuple10(fromBase58String(aN[0]), (aN[1] == "1"), parseIntValue(aN[2]), parseIntValue(aN[3]), parseIntValue(aN[4]), parseIntValue(aN[5]), parseIntValue(aN[6]), parseIntValue(aN[7]), parseIntValue(aN[8]), addressFromStringValue(aN[9]))
283287 }
284288 else $Tuple10(base58'', false, 0, 0, 0, 0, 0, 0, 0, Address(base58''))
285289 }
286290
287291
288-func aM (aN) = [StringEntry(w, makeString([toBase58String(aN._1), if (aN._2)
292+func aO (aP) = [StringEntry(x, makeString([toBase58String(aP._1), if (aP._2)
289293 then "1"
290- else "0", toString(aN._3), toString(aN._4), toString(aN._5), toString(aN._6), toString(aN._7), toString(aN._8), toString(aN._9), toString(aN._10)], a))]
291-
292-
293-func aO () = {
294- let O = getString(x)
295- if ($isInstanceOf(O, "String"))
296- then {
297- let P = O
298- if ((size(P) > 0))
299- then split_51C(P, a)
294+ else "0", toString(aP._3), toString(aP._4), toString(aP._5), toString(aP._6), toString(aP._7), toString(aP._8), toString(aP._9), toString(aP._10)], a))]
295+
296+
297+func aQ () = {
298+ let Q = getString(y)
299+ if ($isInstanceOf(Q, "String"))
300+ then {
301+ let R = Q
302+ if ((size(R) > 0))
303+ then split_51C(R, a)
300304 else nil
301305 }
302306 else nil
303307 }
304308
305309
306-func aP (ao) = [StringEntry(x, makeString_11C(ao, a))]
307-
308-
309-func aQ () = {
310- func ad (ae,af) = {
311- let aR = parseIntValue(af)
312- $Tuple2((ae._1 :+ aR), (ae._2 + aR))
313- }
314-
315- let O = getString(y)
316- if ($isInstanceOf(O, "String"))
317- then {
318- let P = O
319- if ((size(P) > 0))
310+func aR (aq) = [StringEntry(y, makeString_11C(aq, a))]
311+
312+
313+func aS () = {
314+ func af (ag,ah) = {
315+ let aT = parseIntValue(ah)
316+ $Tuple2((ag._1 :+ aT), (ag._2 + aT))
317+ }
318+
319+ let Q = getString(z)
320+ if ($isInstanceOf(Q, "String"))
321+ then {
322+ let R = Q
323+ if ((size(R) > 0))
320324 then {
321- let ag = split_51C(P, a)
322- let ah = size(ag)
323- let ai = $Tuple2(nil, 0)
324- func aj (ak,al) = if ((al >= ah))
325- then ak
326- else ad(ak, ag[al])
327-
328- func am (ak,al) = if ((al >= ah))
329- then ak
325+ let ai = split_51C(R, a)
326+ let aj = size(ai)
327+ let ak = $Tuple2(nil, 0)
328+ func al (am,an) = if ((an >= aj))
329+ then am
330+ else af(am, ai[an])
331+
332+ func ao (am,an) = if ((an >= aj))
333+ then am
330334 else throw("List size exceeds 10")
331335
332- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
336+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
333337 }
334338 else $Tuple2(l, 0)
335339 }
337341 }
338342
339343
340-func aS (aT) = {
341- func ad (ae,af) = (ae :+ toString(af))
342-
343-[StringEntry(y, makeString_11C({
344- let ag = aT
345- let ah = size(ag)
346- let ai = nil
347- func aj (ak,al) = if ((al >= ah))
348- then ak
349- else ad(ak, ag[al])
350-
351- func am (ak,al) = if ((al >= ah))
352- then ak
344+func aU (aV) = {
345+ func af (ag,ah) = (ag :+ toString(ah))
346+
347+[StringEntry(z, makeString_11C({
348+ let ai = aV
349+ let aj = size(ai)
350+ let ak = nil
351+ func al (am,an) = if ((an >= aj))
352+ then am
353+ else af(am, ai[an])
354+
355+ func ao (am,an) = if ((an >= aj))
356+ then am
353357 else throw("List size exceeds 10")
354358
355- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
359+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
356360 }, a))]
357361 }
358362
359363
360-func aU () = {
361- func ad (ae,af) = {
362- let aV = parseIntValue(af)
363- $Tuple2((ae._1 :+ aV), (ae._2 + aV))
364- }
365-
366- let O = getString(z)
367- if ($isInstanceOf(O, "String"))
368- then {
369- let P = O
370- if ((size(P) > 0))
364+func aW () = {
365+ func af (ag,ah) = {
366+ let aT = parseIntValue(ah)
367+ (ag :+ aT)
368+ }
369+
370+ let Q = getString(A)
371+ if ($isInstanceOf(Q, "String"))
372+ then {
373+ let R = Q
374+ if ((size(R) > 0))
371375 then {
372- let ag = split_51C(P, a)
373- let ah = size(ag)
374- let ai = $Tuple2(nil, 0)
375- func aj (ak,al) = if ((al >= ah))
376- then ak
377- else ad(ak, ag[al])
378-
379- func am (ak,al) = if ((al >= ah))
380- then ak
376+ let ai = split_51C(R, a)
377+ let aj = size(ai)
378+ let ak = nil
379+ func al (am,an) = if ((an >= aj))
380+ then am
381+ else af(am, ai[an])
382+
383+ func ao (am,an) = if ((an >= aj))
384+ then am
381385 else throw("List size exceeds 10")
382386
383- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
387+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
388+ }
389+ else l
390+ }
391+ else l
392+ }
393+
394+
395+func aX (aV) = {
396+ func af (ag,ah) = (ag :+ toString(ah))
397+
398+[StringEntry(A, makeString_11C({
399+ let ai = aV
400+ let aj = size(ai)
401+ let ak = nil
402+ func al (am,an) = if ((an >= aj))
403+ then am
404+ else af(am, ai[an])
405+
406+ func ao (am,an) = if ((an >= aj))
407+ then am
408+ else throw("List size exceeds 10")
409+
410+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
411+ }, a))]
412+ }
413+
414+
415+func aY () = {
416+ func af (ag,ah) = {
417+ let aZ = parseIntValue(ah)
418+ $Tuple2((ag._1 :+ aZ), (ag._2 + aZ))
419+ }
420+
421+ let Q = getString(B)
422+ if ($isInstanceOf(Q, "String"))
423+ then {
424+ let R = Q
425+ if ((size(R) > 0))
426+ then {
427+ let ai = split_51C(R, a)
428+ let aj = size(ai)
429+ let ak = $Tuple2(nil, 0)
430+ func al (am,an) = if ((an >= aj))
431+ then am
432+ else af(am, ai[an])
433+
434+ func ao (am,an) = if ((an >= aj))
435+ then am
436+ else throw("List size exceeds 10")
437+
438+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
384439 }
385440 else $Tuple2(l, 0)
386441 }
388443 }
389444
390445
391-func aW (aX) = {
392- func ad (ae,af) = (ae :+ toString(af))
393-
394-[StringEntry(z, makeString_11C({
395- let ag = aX
396- let ah = size(ag)
397- let ai = nil
398- func aj (ak,al) = if ((al >= ah))
399- then ak
400- else ad(ak, ag[al])
401-
402- func am (ak,al) = if ((al >= ah))
403- then ak
446+func ba (bb) = {
447+ func af (ag,ah) = (ag :+ toString(ah))
448+
449+[StringEntry(B, makeString_11C({
450+ let ai = bb
451+ let aj = size(ai)
452+ let ak = nil
453+ func al (am,an) = if ((an >= aj))
454+ then am
455+ else af(am, ai[an])
456+
457+ func ao (am,an) = if ((an >= aj))
458+ then am
404459 else throw("List size exceeds 10")
405460
406- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
461+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
407462 }, a))]
408463 }
409464
410465
411-func aY (R) = {
412- let O = getInteger(makeString([A, R], a))
413- if ($isInstanceOf(O, "Int"))
414- then {
415- let P = O
416- P
466+func bc (T) = {
467+ let Q = getInteger(makeString([C, T], a))
468+ if ($isInstanceOf(Q, "Int"))
469+ then {
470+ let R = Q
471+ R
417472 }
418473 else 0
419474 }
420475
421476
422-func aZ (R,T) = [IntegerEntry(makeString([A, R], a), T)]
423-
424-
425-func ba (R) = {
426- let O = getInteger(makeString([B, R], a))
427- if ($isInstanceOf(O, "Int"))
428- then {
429- let P = O
430- P
477+func bd (T,V) = [IntegerEntry(makeString([C, T], a), V)]
478+
479+
480+func be (T) = {
481+ let Q = getInteger(makeString([D, T], a))
482+ if ($isInstanceOf(Q, "Int"))
483+ then {
484+ let R = Q
485+ R
431486 }
432487 else 0
433488 }
434489
435490
436-func bb (R,T) = [IntegerEntry(makeString([B, R], a), T)]
437-
438-
439-func bc () = {
440- let O = getInteger(C)
441- if ($isInstanceOf(O, "Int"))
442- then {
443- let P = O
444- P
491+func bf (T,V) = [IntegerEntry(makeString([D, T], a), V)]
492+
493+
494+func bg () = {
495+ let Q = getInteger(E)
496+ if ($isInstanceOf(Q, "Int"))
497+ then {
498+ let R = Q
499+ R
445500 }
446501 else 0
447502 }
448503
449504
450-func bd (T) = [IntegerEntry(C, T)]
451-
452-
453-func be () = {
454- func ad (ae,af) = (ae :+ parseBigIntValue(af))
455-
456- let O = getString(D)
457- if ($isInstanceOf(O, "String"))
458- then {
459- let P = O
460- if ((size(P) > 0))
505+func bh (V) = [IntegerEntry(E, V)]
506+
507+
508+func bi () = {
509+ func af (ag,ah) = (ag :+ parseBigIntValue(ah))
510+
511+ let Q = getString(F)
512+ if ($isInstanceOf(Q, "String"))
513+ then {
514+ let R = Q
515+ if ((size(R) > 0))
461516 then {
462- let ag = split_51C(P, a)
463- let ah = size(ag)
464- let ai = nil
465- func aj (ak,al) = if ((al >= ah))
466- then ak
467- else ad(ak, ag[al])
468-
469- func am (ak,al) = if ((al >= ah))
470- then ak
517+ let ai = split_51C(R, a)
518+ let aj = size(ai)
519+ let ak = nil
520+ func al (am,an) = if ((an >= aj))
521+ then am
522+ else af(am, ai[an])
523+
524+ func ao (am,an) = if ((an >= aj))
525+ then am
471526 else throw("List size exceeds 11")
472527
473- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
528+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
474529 }
475- else o
476- }
477- else o
478- }
479-
480-
481-func bf (T) = {
482- func ad (ae,af) = (ae :+ toString(af))
483-
484-[StringEntry(D, makeString_11C({
485- let ag = T
486- let ah = size(ag)
487- let ai = nil
488- func aj (ak,al) = if ((al >= ah))
489- then ak
490- else ad(ak, ag[al])
491-
492- func am (ak,al) = if ((al >= ah))
493- then ak
530+ else p
531+ }
532+ else p
533+ }
534+
535+
536+func bj (V) = {
537+ func af (ag,ah) = (ag :+ toString(ah))
538+
539+[StringEntry(F, makeString_11C({
540+ let ai = V
541+ let aj = size(ai)
542+ let ak = nil
543+ func al (am,an) = if ((an >= aj))
544+ then am
545+ else af(am, ai[an])
546+
547+ func ao (am,an) = if ((an >= aj))
548+ then am
494549 else throw("List size exceeds 11")
495550
496- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
551+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
497552 }, a))]
498553 }
499554
500555
501-func bg (bh) = {
502- func ad (ae,af) = (ae :+ parseBigIntValue(af))
503-
504- let O = getString(makeString([E, toString(bh)], a))
505- if ($isInstanceOf(O, "String"))
506- then {
507- let P = O
508- if ((size(P) > 0))
556+func bk (bl) = {
557+ func af (ag,ah) = (ag :+ parseBigIntValue(ah))
558+
559+ let Q = getString(makeString([G, toString(bl)], a))
560+ if ($isInstanceOf(Q, "String"))
561+ then {
562+ let R = Q
563+ if ((size(R) > 0))
509564 then {
510- let ag = split_51C(P, a)
511- let ah = size(ag)
512- let ai = nil
513- func aj (ak,al) = if ((al >= ah))
514- then ak
515- else ad(ak, ag[al])
516-
517- func am (ak,al) = if ((al >= ah))
518- then ak
565+ let ai = split_51C(R, a)
566+ let aj = size(ai)
567+ let ak = nil
568+ func al (am,an) = if ((an >= aj))
569+ then am
570+ else af(am, ai[an])
571+
572+ func ao (am,an) = if ((an >= aj))
573+ then am
519574 else throw("List size exceeds 11")
520575
521- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
576+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
522577 }
523- else o
524- }
525- else o
526- }
527-
528-
529-func bi (bh,T) = {
530- func ad (ae,af) = (ae :+ toString(af))
531-
532-[StringEntry(makeString([E, toString(bh)], a), makeString_11C({
533- let ag = T
534- let ah = size(ag)
535- let ai = nil
536- func aj (ak,al) = if ((al >= ah))
537- then ak
538- else ad(ak, ag[al])
539-
540- func am (ak,al) = if ((al >= ah))
541- then ak
578+ else p
579+ }
580+ else p
581+ }
582+
583+
584+func bm (bl,V) = {
585+ func af (ag,ah) = (ag :+ toString(ah))
586+
587+[StringEntry(makeString([G, toString(bl)], a), makeString_11C({
588+ let ai = V
589+ let aj = size(ai)
590+ let ak = nil
591+ func al (am,an) = if ((an >= aj))
592+ then am
593+ else af(am, ai[an])
594+
595+ func ao (am,an) = if ((an >= aj))
596+ then am
542597 else throw("List size exceeds 11")
543598
544- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
599+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
545600 }, a))]
546601 }
547602
548603
549-func bj (M) = {
550- let O = getInteger(makeString([F, toString(M)], a))
551- if ($isInstanceOf(O, "Int"))
552- then {
553- let P = O
554- P
604+func bn (O) = {
605+ let Q = getInteger(makeString([H, toString(O)], a))
606+ if ($isInstanceOf(Q, "Int"))
607+ then {
608+ let R = Q
609+ R
555610 }
556611 else 0
557612 }
558613
559614
560-func bk (M,T) = [IntegerEntry(makeString([F, toString(M)], a), T)]
561-
562-
563-func bl () = {
564- let O = getInteger(G)
565- if ($isInstanceOf(O, "Int"))
566- then {
567- let P = O
568- P
615+func bo (O,V) = [IntegerEntry(makeString([H, toString(O)], a), V)]
616+
617+
618+func bp () = {
619+ let Q = getInteger(I)
620+ if ($isInstanceOf(Q, "Int"))
621+ then {
622+ let R = Q
623+ R
569624 }
570625 else 0
571626 }
572627
573628
574-func bm (T) = [IntegerEntry(G, T)]
575-
576-
577-func bn (bh) = {
578- func ad (ae,af) = (ae :+ parseIntValue(af))
579-
580- let O = getString(makeString([H, toString(bh)], a))
581- if ($isInstanceOf(O, "String"))
582- then {
583- let P = O
584- if ((size(P) > 0))
629+func bq (V) = [IntegerEntry(I, V)]
630+
631+
632+func br (bl) = {
633+ func af (ag,ah) = (ag :+ parseIntValue(ah))
634+
635+ let Q = getString(makeString([J, toString(bl)], a))
636+ if ($isInstanceOf(Q, "String"))
637+ then {
638+ let R = Q
639+ if ((size(R) > 0))
585640 then {
586- let ag = split_51C(P, a)
587- let ah = size(ag)
588- let ai = nil
589- func aj (ak,al) = if ((al >= ah))
590- then ak
591- else ad(ak, ag[al])
592-
593- func am (ak,al) = if ((al >= ah))
594- then ak
641+ let ai = split_51C(R, a)
642+ let aj = size(ai)
643+ let ak = nil
644+ func al (am,an) = if ((an >= aj))
645+ then am
646+ else af(am, ai[an])
647+
648+ func ao (am,an) = if ((an >= aj))
649+ then am
595650 else throw("List size exceeds 11")
596651
597- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
652+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
598653 }
599654 else m
600655 }
602657 }
603658
604659
605-func bo (bh,T) = {
606- func ad (ae,af) = (ae :+ toString(af))
607-
608-[StringEntry(makeString([H, toString(bh)], a), makeString_11C({
609- let ag = T
610- let ah = size(ag)
611- let ai = nil
612- func aj (ak,al) = if ((al >= ah))
613- then ak
614- else ad(ak, ag[al])
615-
616- func am (ak,al) = if ((al >= ah))
617- then ak
660+func bs (bl,V) = {
661+ func af (ag,ah) = (ag :+ toString(ah))
662+
663+[StringEntry(makeString([J, toString(bl)], a), makeString_11C({
664+ let ai = V
665+ let aj = size(ai)
666+ let ak = nil
667+ func al (am,an) = if ((an >= aj))
668+ then am
669+ else af(am, ai[an])
670+
671+ func ao (am,an) = if ((an >= aj))
672+ then am
618673 else throw("List size exceeds 11")
619674
620- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
675+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
621676 }, a))]
622677 }
623678
624679
625-func bp () = {
626- let O = getString(I)
627- if ($isInstanceOf(O, "String"))
628- then {
629- let P = O
630- addressFromStringValue(P)
680+func bt () = {
681+ let Q = getString(K)
682+ if ($isInstanceOf(Q, "String"))
683+ then {
684+ let R = Q
685+ addressFromStringValue(R)
631686 }
632687 else Address(base58'')
633688 }
634689
635690
636-func bq (br) = [StringEntry(I, toString(br))]
637-
638-
639-func bs () = {
640- let O = getInteger(J)
641- if ($isInstanceOf(O, "Int"))
642- then {
643- let P = O
644- P
691+func bu (bv) = [StringEntry(K, toString(bv))]
692+
693+
694+func bw () = {
695+ let Q = getInteger(L)
696+ if ($isInstanceOf(Q, "Int"))
697+ then {
698+ let R = Q
699+ R
645700 }
646701 else 0
647702 }
648703
649704
650-func bt (bu) = [IntegerEntry(J, bu)]
651-
652-
653-func bv (bw) = if ((bw != this))
705+func bx (by) = [IntegerEntry(L, by)]
706+
707+
708+func bz (bA) = if ((bA != this))
654709 then throw("_onlyThisContract: revert")
655710 else true
656711
657712
658-func bx () = if ((aH() == Address(base58'')))
713+func bB () = if ((aJ() == Address(base58'')))
659714 then throw("_whenMultisigSet: revert")
660715 else true
661716
662717
663-func by () = {
664- let bz = aK()
665- if ((bz._1 != base58''))
718+func bC () = {
719+ let bD = aM()
720+ if ((bD._1 != base58''))
666721 then throw("_whenNotInitialized: revert")
667722 else true
668723 }
669724
670725
671-func bA () = {
672- let bz = aK()
673- if ((bz._1 == base58''))
726+func bE () = {
727+ let bD = aM()
728+ if ((bD._1 == base58''))
674729 then throw("_whenInitialized: revert")
675730 else true
676731 }
677732
678733
679-func bB () = if (aB())
734+func bF () = if (aD())
680735 then throw("_whenNotPaused: revert")
681736 else true
682737
683738
684-func bC () = if (!(aB()))
739+func bG () = if (!(aD()))
685740 then throw("_whenPaused: revert")
686741 else true
687742
688743
689-func bD (bw) = if ((bw != aE()))
744+func bH (bA) = if ((bA != aG()))
690745 then throw("_onlyPauser: revert")
691746 else true
692747
693748
694-func bE () = {
695- let bF = {
696- let O = getInteger(bp(), K)
697- if ($isInstanceOf(O, "Int"))
749+func bI () = {
750+ let bJ = {
751+ let Q = getInteger(bt(), M)
752+ if ($isInstanceOf(Q, "Int"))
698753 then {
699- let P = O
700- (P + bs())
754+ let R = Q
755+ (R + bw())
701756 }
702757 else 0
703758 }
704- if ((height > bF))
759+ if ((height > bJ))
705760 then throw("_checkWatchdog: revert")
706761 else true
707762 }
708763
709764
710-func bG (R) = {
711- let O = assetInfo(fromBase58String(R))
712- if ($isInstanceOf(O, "Asset"))
713- then {
714- let P = O
715- P.decimals
716- }
717- else throw(("_getDecimals: no asset=" + R))
718- }
719-
720-
721-func bH (bI,bJ,bK,bL) = if ((bJ >= bK))
722- then fraction(bI, 1, pow(10, 0, (bJ - bK), 0, 0, DOWN), bL)
723- else (bI * pow(10, 0, (bK - bJ), 0, 0, DOWN))
724-
725-
726-func bM (ao) = {
727- func ad (ae,af) = (ae :+ 0)
728-
729- let ag = ao
730- let ah = size(ag)
731- let ai = nil
732- func aj (ak,al) = if ((al >= ah))
733- then ak
734- else ad(ak, ag[al])
735-
736- func am (ak,al) = if ((al >= ah))
737- then ak
765+func bK (T) = {
766+ let Q = assetInfo(fromBase58String(T))
767+ if ($isInstanceOf(Q, "Asset"))
768+ then {
769+ let R = Q
770+ R.decimals
771+ }
772+ else throw(("_getDecimals: no asset=" + T))
773+ }
774+
775+
776+func bL (bM,bN,bO,bP) = if ((bN >= bO))
777+ then fraction(bM, 1, pow(10, 0, (bN - bO), 0, 0, DOWN), bP)
778+ else (bM * pow(10, 0, (bO - bN), 0, 0, DOWN))
779+
780+
781+func bQ (aq) = {
782+ func af (ag,ah) = (ag :+ 0)
783+
784+ let ai = aq
785+ let aj = size(ai)
786+ let ak = nil
787+ func al (am,an) = if ((an >= aj))
788+ then am
789+ else af(am, ai[an])
790+
791+ func ao (am,an) = if ((an >= aj))
792+ then am
738793 else throw("List size exceeds 10")
739794
740- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
741- }
742-
743-
744-func bN (bO) = {
745- func ad (ae,af) = {
746- let aV = parseIntValue(af)
747- $Tuple2((ae._1 :+ aV), (ae._2 + aV))
748- }
749-
750- let ag = bO
751- let ah = size(ag)
752- let ai = $Tuple2(nil, 0)
753- func aj (ak,al) = if ((al >= ah))
754- then ak
755- else ad(ak, ag[al])
756-
757- func am (ak,al) = if ((al >= ah))
758- then ak
795+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
796+ }
797+
798+
799+func bR (bS) = {
800+ func af (ag,ah) = {
801+ let aZ = parseIntValue(ah)
802+ $Tuple2((ag._1 :+ aZ), (ag._2 + aZ))
803+ }
804+
805+ let ai = bS
806+ let aj = size(ai)
807+ let ak = $Tuple2(nil, 0)
808+ func al (am,an) = if ((an >= aj))
809+ then am
810+ else af(am, ai[an])
811+
812+ func ao (am,an) = if ((an >= aj))
813+ then am
759814 else throw("List size exceeds 10")
760815
761- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
762- }
763-
764-
765-func bP (ao,bQ) = {
766- func ad (ae,af) = {
767- let bR = bG(af)
768- let aR = bH(assetBalance(this, fromBase58String(af)), bR, bQ, DOWN)
769- $Tuple2((ae._1 :+ aR), (ae._2 + aR))
770- }
771-
772- let ag = ao
773- let ah = size(ag)
774- let ai = $Tuple2(nil, 0)
775- func aj (ak,al) = if ((al >= ah))
776- then ak
777- else ad(ak, ag[al])
778-
779- func am (ak,al) = if ((al >= ah))
780- then ak
816+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
817+ }
818+
819+
820+func bT (aq,bU) = {
821+ func af (ag,ah) = {
822+ let bV = bK(ah)
823+ let aT = bL(assetBalance(this, fromBase58String(ah)), bV, bU, DOWN)
824+ $Tuple2((ag._1 :+ aT), (ag._2 + aT))
825+ }
826+
827+ let ai = aq
828+ let aj = size(ai)
829+ let ak = $Tuple2(nil, 0)
830+ func al (am,an) = if ((an >= aj))
831+ then am
832+ else af(am, ai[an])
833+
834+ func ao (am,an) = if ((an >= aj))
835+ then am
781836 else throw("List size exceeds 10")
782837
783- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
784- }
785-
786-
787-func bS (ao) = {
788- func ad (ae,af) = (ae :+ toString(af))
838+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
839+ }
840+
841+
842+func bW (aq) = {
843+ func af (ag,ah) = (ag :+ toString(ah))
789844
790845 makeString({
791- let ag = ao
792- let ah = size(ag)
793- let ai = nil
794- func aj (ak,al) = if ((al >= ah))
795- then ak
796- else ad(ak, ag[al])
797-
798- func am (ak,al) = if ((al >= ah))
799- then ak
846+ let ai = aq
847+ let aj = size(ai)
848+ let ak = nil
849+ func al (am,an) = if ((an >= aj))
850+ then am
851+ else af(am, ai[an])
852+
853+ func ao (am,an) = if ((an >= aj))
854+ then am
800855 else throw("List size exceeds 11")
801856
802- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
857+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
803858 }, a)
804859 }
805860
806861
807-func bT (ao) = {
808- func ad (ae,af) = (ae :+ toString(af))
862+func bX (aq) = {
863+ func af (ag,ah) = (ag :+ toString(ah))
809864
810865 makeString({
811- let ag = ao
812- let ah = size(ag)
813- let ai = nil
814- func aj (ak,al) = if ((al >= ah))
815- then ak
816- else ad(ak, ag[al])
817-
818- func am (ak,al) = if ((al >= ah))
819- then ak
866+ let ai = aq
867+ let aj = size(ai)
868+ let ak = nil
869+ func al (am,an) = if ((an >= aj))
870+ then am
871+ else af(am, ai[an])
872+
873+ func ao (am,an) = if ((an >= aj))
874+ then am
820875 else throw("List size exceeds 11")
821876
822- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
877+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
823878 }, a)
824879 }
825880
826881
827-func bU (bV,aX,bW) = {
828- func ad (ae,af) = (ae :+ fraction(bV, af, bW))
829-
830- let ag = aX
831- let ah = size(ag)
832- let ai = nil
833- func aj (ak,al) = if ((al >= ah))
834- then ak
835- else ad(ak, ag[al])
836-
837- func am (ak,al) = if ((al >= ah))
838- then ak
882+func bY (bZ,bb,ca) = {
883+ func af (ag,ah) = (ag :+ fraction(bZ, ah, ca))
884+
885+ let ai = bb
886+ let aj = size(ai)
887+ let ak = nil
888+ func al (am,an) = if ((an >= aj))
889+ then am
890+ else af(am, ai[an])
891+
892+ func ao (am,an) = if ((an >= aj))
893+ then am
839894 else throw("List size exceeds 10")
840895
841- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
842- }
843-
844-
845-func bX (aT,bY) = {
846- func ad (ae,af) = {
847- let bZ = ae._1
848- let ca = bY[bZ]
849- let cb = (af + ca)
850- $Tuple3((bZ + 1), (ae._2 :+ cb), (ae._3 + cb))
851- }
852-
853- let cc = {
854- let ag = aT
855- let ah = size(ag)
856- let ai = $Tuple3(0, nil, 0)
857- func aj (ak,al) = if ((al >= ah))
858- then ak
859- else ad(ak, ag[al])
860-
861- func am (ak,al) = if ((al >= ah))
862- then ak
896+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
897+ }
898+
899+
900+func cb (aV,cc) = {
901+ func af (ag,ah) = {
902+ let cd = ag._1
903+ let ce = cc[cd]
904+ let cf = (ah + ce)
905+ $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf))
906+ }
907+
908+ let cg = {
909+ let ai = aV
910+ let aj = size(ai)
911+ let ak = $Tuple3(0, nil, 0)
912+ func al (am,an) = if ((an >= aj))
913+ then am
914+ else af(am, ai[an])
915+
916+ func ao (am,an) = if ((an >= aj))
917+ then am
863918 else throw("List size exceeds 10")
864919
865- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
866- }
867- $Tuple2(cc._2, cc._3)
868- }
869-
870-
871-func cd (aT,ce,ao,bQ,N) = {
872- func ad (ae,af) = {
873- let bZ = ae._1
874- let cf = ce[bZ]
875- let cg = ay(cf.assetId)
876- let ch = if ((cg != ao[bZ]))
877- then throw(((N + ": index=") + toString(bZ)))
920+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
921+ }
922+ $Tuple2(cg._2, cg._3)
923+ }
924+
925+
926+func ch (aV,ci,aq,bU,P) = {
927+ func af (ag,ah) = {
928+ let cd = ag._1
929+ let cj = ci[cd]
930+ let ck = aA(cj.assetId)
931+ let cl = if ((ck != aq[cd]))
932+ then throw(((P + ": index=") + toString(cd)))
878933 else unit
879- if ((ch == ch))
934+ if ((cl == cl))
880935 then {
881- let bR = bG(cg)
882- let cb = (af + bH(ce[bZ].amount, bR, bQ, DOWN))
883- $Tuple3((bZ + 1), (ae._2 :+ cb), (ae._3 + cb))
936+ let bV = bK(ck)
937+ let cf = (ah + bL(ci[cd].amount, bV, bU, DOWN))
938+ $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf))
884939 }
885940 else throw("Strict value is not equal to itself.")
886941 }
887942
888- let cc = {
889- let ag = aT
890- let ah = size(ag)
891- let ai = $Tuple3(0, nil, 0)
892- func aj (ak,al) = if ((al >= ah))
893- then ak
894- else ad(ak, ag[al])
895-
896- func am (ak,al) = if ((al >= ah))
897- then ak
943+ let cg = {
944+ let ai = aV
945+ let aj = size(ai)
946+ let ak = $Tuple3(0, nil, 0)
947+ func al (am,an) = if ((an >= aj))
948+ then am
949+ else af(am, ai[an])
950+
951+ func ao (am,an) = if ((an >= aj))
952+ then am
898953 else throw("List size exceeds 10")
899954
900- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
901- }
902- $Tuple2(cc._2, cc._3)
903- }
904-
905-
906-func ci (aT,cj,bI) = {
907- func ad (ae,af) = {
908- let bZ = ae._1
909- if ((bZ == cj))
910- then $Tuple2((bZ + 1), (ae._2 :+ (af + bI)))
911- else $Tuple2((bZ + 1), (ae._2 :+ af))
912- }
913-
914- let cc = {
915- let ag = aT
916- let ah = size(ag)
917- let ai = $Tuple2(0, nil)
918- func aj (ak,al) = if ((al >= ah))
919- then ak
920- else ad(ak, ag[al])
921-
922- func am (ak,al) = if ((al >= ah))
923- then ak
955+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
956+ }
957+ $Tuple2(cg._2, cg._3)
958+ }
959+
960+
961+func cm (aV,cn,bM) = {
962+ func af (ag,ah) = {
963+ let cd = ag._1
964+ if ((cd == cn))
965+ then $Tuple2((cd + 1), (ag._2 :+ (ah + bM)))
966+ else $Tuple2((cd + 1), (ag._2 :+ ah))
967+ }
968+
969+ let cg = {
970+ let ai = aV
971+ let aj = size(ai)
972+ let ak = $Tuple2(0, nil)
973+ func al (am,an) = if ((an >= aj))
974+ then am
975+ else af(am, ai[an])
976+
977+ func ao (am,an) = if ((an >= aj))
978+ then am
924979 else throw("List size exceeds 10")
925980
926- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
927- }
928- cc._2
929- }
930-
931-
932-func ck (aT,cj,bI) = {
933- func ad (ae,af) = {
934- let bZ = ae._1
935- if (if ((bZ == cj))
936- then (bI > af)
981+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
982+ }
983+ cg._2
984+ }
985+
986+
987+func co (aV,cn,bM) = {
988+ func af (ag,ah) = {
989+ let cd = ag._1
990+ if (if ((cd == cn))
991+ then (bM > ah)
937992 else false)
938993 then throw("insufficient balance")
939- else if (if ((bZ == cj))
940- then (af >= bI)
994+ else if (if ((cd == cn))
995+ then (ah >= bM)
941996 else false)
942- then $Tuple2((bZ + 1), (ae._2 :+ (af - bI)))
943- else $Tuple2((bZ + 1), (ae._2 :+ af))
944- }
945-
946- let cc = {
947- let ag = aT
948- let ah = size(ag)
949- let ai = $Tuple2(0, nil)
950- func aj (ak,al) = if ((al >= ah))
951- then ak
952- else ad(ak, ag[al])
953-
954- func am (ak,al) = if ((al >= ah))
955- then ak
997+ then $Tuple2((cd + 1), (ag._2 :+ (ah - bM)))
998+ else $Tuple2((cd + 1), (ag._2 :+ ah))
999+ }
1000+
1001+ let cg = {
1002+ let ai = aV
1003+ let aj = size(ai)
1004+ let ak = $Tuple2(0, nil)
1005+ func al (am,an) = if ((an >= aj))
1006+ then am
1007+ else af(am, ai[an])
1008+
1009+ func ao (am,an) = if ((an >= aj))
1010+ then am
9561011 else throw("List size exceeds 10")
9571012
958- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
959- }
960- cc._2
961- }
962-
963-
964-func cl (aT,bI,cm) = {
965- let cn = fraction((cm - bI), j, cm, CEILING)
966- func ad (ae,af) = {
967- let cb = fraction(af, cn, j, CEILING)
968- let co = (af - cb)
969- if ((0 > co))
1013+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1014+ }
1015+ cg._2
1016+ }
1017+
1018+
1019+func cp (aV,bM,cq) = {
1020+ let cr = fraction((cq - bM), i, cq, CEILING)
1021+ func af (ag,ah) = {
1022+ let cf = fraction(ah, cr, i, CEILING)
1023+ let cs = (ah - cf)
1024+ if ((0 > cs))
9701025 then throw("insufficient delta balance")
971- else $Tuple3((ae._1 :+ cb), (ae._2 + cb), (ae._3 :+ co))
972- }
973-
974- let ag = aT
975- let ah = size(ag)
976- let ai = $Tuple3(nil, 0, nil)
977- func aj (ak,al) = if ((al >= ah))
978- then ak
979- else ad(ak, ag[al])
980-
981- func am (ak,al) = if ((al >= ah))
982- then ak
1026+ else $Tuple3((ag._1 :+ cf), (ag._2 + cf), (ag._3 :+ cs))
1027+ }
1028+
1029+ let ai = aV
1030+ let aj = size(ai)
1031+ let ak = $Tuple3(nil, 0, nil)
1032+ func al (am,an) = if ((an >= aj))
1033+ then am
1034+ else af(am, ai[an])
1035+
1036+ func ao (am,an) = if ((an >= aj))
1037+ then am
9831038 else throw("List size exceeds 10")
9841039
985- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
986- }
987-
988-
989-func cp (ao,aT,cq,bJ) = {
990- func ad (ae,af) = {
991- let bZ = ae._1
992- $Tuple2((bZ + 1), (ae._2 :+ ScriptTransfer(cq, bH(aT[bZ], bJ, bG(af), DOWN), aA(af))))
993- }
994-
995- let cc = {
996- let ag = ao
997- let ah = size(ag)
998- let ai = $Tuple2(0, nil)
999- func aj (ak,al) = if ((al >= ah))
1000- then ak
1001- else ad(ak, ag[al])
1002-
1003- func am (ak,al) = if ((al >= ah))
1004- then ak
1040+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1041+ }
1042+
1043+
1044+func ct (aq,aV,cu,bN) = {
1045+ func af (ag,ah) = {
1046+ let cd = ag._1
1047+ $Tuple2((cd + 1), (ag._2 :+ ScriptTransfer(cu, bL(aV[cd], bN, bK(ah), DOWN), aC(ah))))
1048+ }
1049+
1050+ let cg = {
1051+ let ai = aq
1052+ let aj = size(ai)
1053+ let ak = $Tuple2(0, nil)
1054+ func al (am,an) = if ((an >= aj))
1055+ then am
1056+ else af(am, ai[an])
1057+
1058+ func ao (am,an) = if ((an >= aj))
1059+ then am
10051060 else throw("List size exceeds 10")
10061061
1007- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1008- }
1009- cc._2
1010- }
1011-
1012-
1013-func cr (cs,ct,cu,cv,cw) = if ((ct > cs))
1014- then {
1015- let cx = fraction(ct, (f - cu), f)
1016- if ((cx > cs))
1017- then {
1018- let cy = (cx - cs)
1019- let cz = fraction(fraction(cy, cv, h), i, ct)
1020- if ((cz > cw))
1021- then fraction(cy, cw, i)
1022- else fraction(cy, cz, i)
1062+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1063+ }
1064+ cg._2
1065+ }
1066+
1067+
1068+func cv (cw,cx,cy,cz,cA) = {
1069+ let cB = fraction(cx, (f - cz), f)
1070+ if ((cw > cB))
1071+ then 0
1072+ else toInt(fraction(fraction(toBigInt(cy), toBigInt(cA), k), toBigInt((cB - cw)), toBigInt(cB), CEILING))
1073+ }
1074+
1075+
1076+func cC (cD,cE,cx,cy,cz,cA) = if ((cE > cD))
1077+ then 0
1078+ else (cv(cE, cx, cy, cz, cA) - cv(cD, cx, cy, cz, cA))
1079+
1080+
1081+func cF (cw,cx,cG) = if ((cw > cx))
1082+ then cG
1083+ else fraction(cG, cw, cx, FLOOR)
1084+
1085+
1086+func cH (cD,cE,cx,cG) = if ((cD > cE))
1087+ then 0
1088+ else (cF(cE, cx, cG) - cF(cD, cx, cG))
1089+
1090+
1091+func cI (cJ,cK) = {
1092+ let cL = size(cJ)
1093+ func af (ag,cd) = if ((cd >= cL))
1094+ then ag
1095+ else if ((0 > cJ[cd]))
1096+ then throw("_validateAllocation: negative assetBalances")
1097+ else if ((0 > cK[cd]))
1098+ then throw("_validateAllocation: negative rewardBalances")
1099+ else ag
1100+
1101+ let ai = n
1102+ let aj = size(ai)
1103+ let ak = true
1104+ func al (am,an) = if ((an >= aj))
1105+ then am
1106+ else af(am, ai[an])
1107+
1108+ func ao (am,an) = if ((an >= aj))
1109+ then am
1110+ else throw("List size exceeds 10")
1111+
1112+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1113+ }
1114+
1115+
1116+func cM (bl) = {
1117+ let cN = bn(bl)
1118+ let cO = br(bl)
1119+ let cP = bi()
1120+ let cQ = bk(bl)
1121+ func af (ag,ah) = {
1122+ let cd = ag._1
1123+ let cR = (cO[cd] + toInt(fraction(toBigInt(cN), (cP[cd] - cQ[cd]), j)))
1124+ $Tuple2((cd + 1), (ag._2 :+ cR))
1125+ }
1126+
1127+ let cS = {
1128+ let ai = m
1129+ let aj = size(ai)
1130+ let ak = $Tuple2(0, nil)
1131+ func al (am,an) = if ((an >= aj))
1132+ then am
1133+ else af(am, ai[an])
1134+
1135+ func ao (am,an) = if ((an >= aj))
1136+ then am
1137+ else throw("List size exceeds 11")
1138+
1139+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1140+ }
1141+ let cT = cS._1
1142+ let cU = cS._2
1143+ $Tuple2((bs(bl, cU) ++ bm(bl, cP)), cU)
1144+ }
1145+
1146+
1147+func cV (cW,cX,cn,cY) = {
1148+ func af (ag,ah) = {
1149+ let cd = ag._1
1150+ let cZ = if ((cn == cd))
1151+ then (cW[cd] + fraction(toBigInt(cY), j, toBigInt(cX)))
1152+ else cW[cd]
1153+ $Tuple2((cd + 1), (ag._2 :+ cZ))
1154+ }
1155+
1156+ let da = {
1157+ let ai = m
1158+ let aj = size(ai)
1159+ let ak = $Tuple2(0, nil)
1160+ func al (am,an) = if ((an >= aj))
1161+ then am
1162+ else af(am, ai[an])
1163+
1164+ func ao (am,an) = if ((an >= aj))
1165+ then am
1166+ else throw("List size exceeds 11")
1167+
1168+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1169+ }
1170+ let cT = da._1
1171+ let cZ = da._2
1172+ cZ
1173+ }
1174+
1175+
1176+func db (dc,bM,dd,de) = {
1177+ let cP = bi()
1178+ let df = bp()
1179+ let dg = if ((df == 0))
1180+ then $Tuple2(0, fraction(bM, de, d))
1181+ else $Tuple2(fraction(bM, dd, d), fraction(bM, de, d))
1182+ let dh = dg._1
1183+ let di = dg._2
1184+ let cZ = if ((dh == 0))
1185+ then cP
1186+ else cV(cP, df, dc, dh)
1187+ $Tuple3(dh, di, cZ)
1188+ }
1189+
1190+
1191+func dj (bM) = {
1192+ let bD = aM()
1193+ let dk = bD._3
1194+ let dl = aQ()
1195+ let dm = aY()
1196+ let dn = dm._1
1197+ let do = dm._2
1198+ let dp = aS()
1199+ let dq = dp._1
1200+ let dr = dp._2
1201+ let ds = if ((dr == 0))
1202+ then {
1203+ func af (ag,ah) = {
1204+ let cd = ag._1
1205+ let dt = fraction(dn[cd], bM, do)
1206+ $Tuple2((cd + 1), (ag._2 :+ dt))
10231207 }
1024- else 0
1025- }
1026- else {
1027- let cx = fraction(ct, (f + cu), f)
1028- if ((cs > cx))
1029- then {
1030- let cy = (cs - cx)
1031- let cz = fraction(fraction(cy, cv, h), i, ct)
1032- if ((cz > cw))
1033- then fraction(cy, cw, i)
1034- else fraction(cy, cz, i)
1208+
1209+ let du = {
1210+ let ai = dl
1211+ let aj = size(ai)
1212+ let ak = $Tuple2(0, nil)
1213+ func al (am,an) = if ((an >= aj))
1214+ then am
1215+ else af(am, ai[an])
1216+
1217+ func ao (am,an) = if ((an >= aj))
1218+ then am
1219+ else throw("List size exceeds 10")
1220+
1221+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10351222 }
1036- else 0
1037- }
1038-
1039-
1040-func cA (aT,cB,aX,bW,cu,cv,cw) = 0
1041-
1042-
1043-func cC (cD,cE,cF,cG,cH,cm,bO,bW,cu,cv,cw) = if (if ((cH == 0))
1044- then true
1045- else (cm == 0))
1046- then true
1047- else {
1048- let cI = fraction((cE - cA(cD, cE, bO, bW, cu, cv, cw)), j, cH)
1049- let cJ = fraction((cG - cA(cF, cG, bO, bW, cu, cv, cw)), j, cm)
1050- let cK = (cJ - cI)
1051- if (if ((0 >= cK))
1052- then ((-1 * bc()) > cK)
1053- else false)
1054- then throw(("_validateLiquidityInvariant: revert: diff=" + toString(cK)))
1055- else true
1056- }
1057-
1058-
1059-func cL (cD,cE,cF,cG,bO,bW,cu,cv,cw) = {
1060- let cM = (cE - cA(cD, cE, bO, bW, cu, cv, cw))
1061- let cN = (cG - cA(cF, cG, bO, bW, cu, cv, cw))
1062- let cK = (cN - cM)
1063- if (if ((0 >= cK))
1064- then ((-1 * bc()) > cK)
1065- else false)
1066- then throw(("_validateSwapInvariant: revert: diff=" + toString(cK)))
1067- else true
1068- }
1069-
1070-
1071-func cO (cs,cG,cP,cE,cQ,bW,cR) = {
1072- let cS = fraction(cG, cQ, bW)
1073- let cT = if ((cs > cS))
1074- then (e + cR)
1075- else (e - cR)
1076- let cU = fraction(cS, cT, e)
1077- let cV = fraction(fraction(cE, cQ, bW), cT, e)
1078- if ((cs > cS))
1079- then if ((cs > cU))
1080- then if ((cV > cP))
1081- then throw("_validateAssetAllocation: new up")
1082- else if (((cs - cU) > (cP - cV)))
1083- then throw("_validateAssetAllocation: still up")
1084- else true
1085- else true
1086- else if ((cU > cs))
1087- then if ((cP > cV))
1088- then throw("_validateAssetAllocation: new down")
1089- else if (((cU - cs) > (cV - cP)))
1090- then throw("_validateAssetAllocation: still down")
1091- else true
1092- else true
1093- }
1094-
1095-
1096-func cW (cF,cG,cD,cE,bO,bW,cR) = true
1097-
1098-
1099-func cX (bh) = {
1100- let cY = bj(bh)
1101- let cZ = bn(bh)
1102- let da = be()
1103- let db = bg(bh)
1104- func ad (ae,af) = {
1105- let bZ = ae._1
1106- let dc = (cZ[bZ] + toInt(fraction(toBigInt(cY), (da[bZ] - db[bZ]), k)))
1107- $Tuple2((bZ + 1), (ae._2 :+ dc))
1108- }
1109-
1110- let dd = {
1111- let ag = m
1112- let ah = size(ag)
1113- let ai = $Tuple2(0, nil)
1114- func aj (ak,al) = if ((al >= ah))
1115- then ak
1116- else ad(ak, ag[al])
1117-
1118- func am (ak,al) = if ((al >= ah))
1119- then ak
1120- else throw("List size exceeds 11")
1121-
1122- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1123- }
1124- let de = dd._1
1125- let df = dd._2
1126- $Tuple2((bo(bh, df) ++ bi(bh, da)), df)
1127- }
1128-
1129-
1130-func dg (dh,di,cj,dj) = {
1131- func ad (ae,af) = {
1132- let bZ = ae._1
1133- let dk = if ((cj == bZ))
1134- then (dh[bZ] + fraction(toBigInt(dj), k, toBigInt(di)))
1135- else dh[bZ]
1136- $Tuple2((bZ + 1), (ae._2 :+ dk))
1137- }
1138-
1139- let dl = {
1140- let ag = m
1141- let ah = size(ag)
1142- let ai = $Tuple2(0, nil)
1143- func aj (ak,al) = if ((al >= ah))
1144- then ak
1145- else ad(ak, ag[al])
1146-
1147- func am (ak,al) = if ((al >= ah))
1148- then ak
1149- else throw("List size exceeds 11")
1150-
1151- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1152- }
1153- let de = dl._1
1154- let dk = dl._2
1155- dk
1156- }
1157-
1158-
1159-func dm (dn,bI,do,dp) = {
1160- let da = be()
1161- let dq = bl()
1162- let dr = if ((dq == 0))
1163- then $Tuple2(0, fraction(bI, dp, d))
1164- else $Tuple2(fraction(bI, do, d), fraction(bI, dp, d))
1165- let ds = dr._1
1166- let dt = dr._2
1167- let dk = if ((ds == 0))
1168- then da
1169- else dg(da, dq, dn, ds)
1170- $Tuple3(ds, dt, dk)
1171- }
1172-
1173-
1174-func du (bI) = {
1175- let bz = aK()
1176- let dv = bz._3
1177- let dw = bz._7
1178- let dx = bz._8
1179- let dy = bz._9
1180- let dz = aO()
1181- let dA = aU()
1223+ let cT = du._1
1224+ let dv = du._2
1225+ $Tuple2(bM, dv)
1226+ }
1227+ else {
1228+ let dw = fraction(toBigInt(bM), j, toBigInt(dr))
1229+ func dx (ag,ah) = {
1230+ let cd = ag._1
1231+ let dt = toInt(fraction(dw, toBigInt(dq[cd]), j))
1232+ $Tuple2((cd + 1), (ag._2 :+ dt))
1233+ }
1234+
1235+ let dy = {
1236+ let ai = dl
1237+ let aj = size(ai)
1238+ let ak = $Tuple2(0, nil)
1239+ func al (am,an) = if ((an >= aj))
1240+ then am
1241+ else dx(am, ai[an])
1242+
1243+ func ao (am,an) = if ((an >= aj))
1244+ then am
1245+ else throw("List size exceeds 10")
1246+
1247+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1248+ }
1249+ let cT = dy._1
1250+ let dv = dy._2
1251+ $Tuple2(fraction(bM, dk, dr), dv)
1252+ }
1253+ let dz = ds._1
1254+ let dv = ds._2
1255+ let dA = cb(dq, dv)
11821256 let dB = dA._1
11831257 let dC = dA._2
1184- let dD = aQ()
1185- let dE = dD._1
1186- let dF = dD._2
1187- let dG = if ((dF == 0))
1188- then {
1189- func ad (ae,af) = {
1190- let bZ = ae._1
1191- let dH = fraction(dB[bZ], bI, dC)
1192- $Tuple2((bZ + 1), (ae._2 :+ dH))
1193- }
1194-
1195- let dI = {
1196- let ag = dz
1197- let ah = size(ag)
1198- let ai = $Tuple2(0, nil)
1199- func aj (ak,al) = if ((al >= ah))
1200- then ak
1201- else ad(ak, ag[al])
1202-
1203- func am (ak,al) = if ((al >= ah))
1204- then ak
1205- else throw("List size exceeds 10")
1206-
1207- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1208- }
1209- let de = dI._1
1210- let dJ = dI._2
1211- $Tuple2(bI, dJ)
1212- }
1213- else {
1214- let dK = fraction(toBigInt(bI), k, toBigInt(dF))
1215- func dL (ae,af) = {
1216- let bZ = ae._1
1217- let dH = toInt(fraction(dK, toBigInt(dE[bZ]), k))
1218- $Tuple2((bZ + 1), (ae._2 :+ dH))
1219- }
1220-
1221- let dM = {
1222- let ag = dz
1223- let ah = size(ag)
1224- let ai = $Tuple2(0, nil)
1225- func aj (ak,al) = if ((al >= ah))
1226- then ak
1227- else dL(ak, ag[al])
1228-
1229- func am (ak,al) = if ((al >= ah))
1230- then ak
1231- else throw("List size exceeds 10")
1232-
1233- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1234- }
1235- let de = dM._1
1236- let dJ = dM._2
1237- $Tuple2(fraction(bI, dv, dF), dJ)
1238- }
1239- let dN = dG._1
1240- let dJ = dG._2
1241- let dO = bX(dE, dJ)
1242- let dP = dO._1
1243- let dQ = dO._2
1244- let dR = cC(dE, dF, dP, dQ, dv, (dv + dN), dB, dC, dw, dx, dy)
1245- if ((dR == dR))
1246- then $Tuple3(dN, dJ, dP)
1247- else throw("Strict value is not equal to itself.")
1248- }
1249-
1250-
1251-func dS (R,bI) = {
1252- let bz = aK()
1253- let dv = bz._3
1254- let dT = bz._4
1255- let dU = bz._5
1256- let dV = bz._6
1257- let dw = bz._7
1258- let dx = bz._8
1259- let dy = bz._9
1260- let dz = aO()
1261- let dW = aU()
1262- let dB = dW._1
1263- let dC = dW._2
1264- let dX = aQ()
1265- let dE = dX._1
1266- let dF = dX._2
1267- let dP = ci(dE, value(indexOf(dz, R)), bI)
1268- let dQ = (dF + bI)
1269- let dR = cW(dP, dQ, dE, dF, dB, dC, dV)
1270- if ((dR == dR))
1271- then {
1272- let dY = cA(dE, dF, dB, dC, dw, dx, dy)
1273- let dZ = cA(dP, dQ, dB, dC, dw, dx, dy)
1274- let dN = if ((dv == 0))
1275- then throw("_deposit: empty pool")
1276- else {
1277- let ea = (dQ - dF)
1278- let eb = (dZ - dY)
1279- let ec = fraction((ea - eb), j, (dF - dY))
1280- let ed = fraction(dv, ec, j)
1281- let ee = cC(dE, dF, dP, dQ, dv, (dv + ed), dB, dC, dw, dx, dy)
1282- if ((ee == ee))
1283- then ed
1284- else throw("Strict value is not equal to itself.")
1258+ $Tuple3(dz, dv, dB)
1259+ }
1260+
1261+
1262+func dD (T,bM) = {
1263+ let bD = aM()
1264+ let dk = bD._3
1265+ let dE = bD._4
1266+ let dF = bD._5
1267+ let dG = bD._6
1268+ let dH = bD._7
1269+ let dl = aQ()
1270+ let dI = aY()
1271+ let dn = dI._1
1272+ let do = dI._2
1273+ let dJ = aS()
1274+ let dq = dJ._1
1275+ let dr = dJ._2
1276+ let dK = aW()
1277+ let cl = if (if ((dr == 0))
1278+ then true
1279+ else (dk == 0))
1280+ then throw("_deposit: empty pool")
1281+ else true
1282+ if ((cl == cl))
1283+ then {
1284+ let dL = value(indexOf(dl, T))
1285+ let dM = fraction(dr, dn[dL], do)
1286+ let dN = dq[dL]
1287+ let dO = dK[dL]
1288+ let dP = cH(dN, (dN + bM), dM, dO)
1289+ let dQ = co(dK, dL, dP)
1290+ let dR = cm(dq, dL, (bM + dP))
1291+ let dz = (bM + dP)
1292+ let dS = cI(dR, dQ)
1293+ if ((dS == dS))
1294+ then {
1295+ let dT = db(0, dz, (dE / 2), (dF / 2))
1296+ let dh = dT._1
1297+ let di = dT._2
1298+ let cZ = dT._3
1299+ $Tuple6(dz, dR, dQ, dh, di, cZ)
12851300 }
1286- let ef = dm(0, dN, (dT / 2), (dU / 2))
1287- let ds = ef._1
1288- let dt = ef._2
1289- let dk = ef._3
1290- $Tuple5(dN, dP, ds, dt, dk)
1291- }
1292- else throw("Strict value is not equal to itself.")
1293- }
1294-
1295-
1296-func eg (bI) = {
1297- let bz = aK()
1298- let dv = bz._3
1299- let dV = bz._6
1300- let dw = bz._7
1301- let dx = bz._8
1302- let dy = bz._9
1303- let eh = aQ()
1304- let dE = eh._1
1305- let dF = eh._2
1306- let ei = aU()
1307- let dB = ei._1
1308- let dC = ei._2
1309- let ej = bI
1310- let ch = S(ej, 0, c, "_withdrawAll: lpTokensToBurn less than 0")
1311- if ((ch == ch))
1312- then {
1313- let ek = cl(dE, ej, dv)
1314- let dP = ek._1
1315- let dQ = ek._2
1316- let el = ek._3
1317- let dR = cC(dE, dF, dP, dQ, dv, (dv - ej), dB, dC, dw, dx, dy)
1318- if ((dR == dR))
1319- then $Tuple3(ej, el, dP)
13201301 else throw("Strict value is not equal to itself.")
13211302 }
13221303 else throw("Strict value is not equal to itself.")
13231304 }
13241305
13251306
1326-func em (R,en) = {
1327- let bz = aK()
1328- let dv = bz._3
1329- let dT = bz._4
1330- let dU = bz._5
1331- let dV = bz._6
1332- let dw = bz._7
1333- let dx = bz._8
1334- let dy = bz._9
1335- let eo = bc()
1336- let dz = aO()
1337- let ep = aQ()
1338- let dE = ep._1
1339- let dF = ep._2
1340- let eq = aU()
1341- let dB = eq._1
1342- let dC = eq._2
1343- let er = value(indexOf(dz, R))
1344- let dY = cA(dE, dF, dB, dC, dw, dx, dy)
1345- let es = (dF - dY)
1346- let et = fraction(toBigInt((dv - en)), k, toBigInt(dv))
1347- let eu = toInt(fraction(toBigInt(es), et, k))
1348- let ev = fraction(toBigInt(es), k, toBigInt(dv), CEILING)
1349- func ad (ae,af) = if (ae._1)
1350- then ae
1351- else {
1352- let ew = ae._2
1353- let ex = ae._3
1354- let ey = ((ex + ew) / 2)
1355- let ez = ck(dE, er, ey)
1356- let eA = (dF - ey)
1357- let eB = (eA - cA(ez, eA, dB, dC, dw, dx, dy))
1358- if (if (((eB - eu) > (-1 * eo)))
1359- then (eo > (eB - eu))
1360- else false)
1361- then $Tuple5(true, ew, ex, ey, (eB - eu))
1362- else if ((0 > (eB - eu)))
1363- then $Tuple5(false, ew, ey, ey, (eB - eu))
1364- else $Tuple5(false, ey, ex, ey, (eB - eu))
1365- }
1366-
1367- let eC = {
1368- let eD = toInt(fraction(toBigInt((en + dY)), ev, k, CEILING))
1369- let eE = {
1370- let ag = r
1371- let ah = size(ag)
1372- let ai = $Tuple5(false, 0, eD, 0, 0)
1373- func aj (ak,al) = if ((al >= ah))
1374- then ak
1375- else ad(ak, ag[al])
1376-
1377- func am (ak,al) = if ((al >= ah))
1378- then ak
1379- else throw("List size exceeds 64")
1380-
1381- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64)
1382- }
1383- let eF = eE._1
1384- let eG = eE._2
1385- let eH = eE._3
1386- let eI = eE._4
1387- let eJ = eE._5
1388- if (!(eF))
1389- then throw(((("_withdraw: can't calculate targetAmount=" + toString(eI)) + ",diff=") + toString(eJ)))
1390- else eI
1391- }
1392- let eK = ck(dE, er, eC)
1393- let eL = (dF - eC)
1394- let eM = if (cW(eK, eL, dE, dF, dB, dC, dV))
1395- then cC(dE, dF, eK, eL, dv, (dv - en), dB, dC, dw, dx, dy)
1307+func dU (bM) = {
1308+ let bD = aM()
1309+ let dk = bD._3
1310+ let dV = aS()
1311+ let dq = dV._1
1312+ let dr = dV._2
1313+ let dW = aY()
1314+ let dn = dW._1
1315+ let do = dW._2
1316+ let dX = bM
1317+ let cl = U(dX, 0, dk, "_withdrawAll: invalid lpTokensToBurn")
1318+ if ((cl == cl))
1319+ then {
1320+ let dY = cp(dq, dX, dk)
1321+ let dB = dY._1
1322+ let dC = dY._2
1323+ let dZ = dY._3
1324+ $Tuple3(dX, dZ, dB)
1325+ }
1326+ else throw("Strict value is not equal to itself.")
1327+ }
1328+
1329+
1330+func ea (T,cy) = {
1331+ let bD = aM()
1332+ let dk = bD._3
1333+ let dE = bD._4
1334+ let dF = bD._5
1335+ let dG = bD._6
1336+ let dH = bD._7
1337+ let eb = bD._8
1338+ let dl = aQ()
1339+ let ec = aS()
1340+ let dq = ec._1
1341+ let dr = ec._2
1342+ let ed = aY()
1343+ let dn = ed._1
1344+ let do = ed._2
1345+ let dK = aW()
1346+ let ee = value(indexOf(dl, T))
1347+ let ef = dq[ee]
1348+ let eg = fraction(dr, dn[ee], do)
1349+ let eh = dK[ee]
1350+ let ei = cC(ef, (ef - cy), eg, dr, dH, eb)
1351+ let ej = cm(dK, ee, ei)
1352+ let dB = co(dq, ee, cy)
1353+ let ek = (cy - ei)
1354+ let cl = cI(dB, ej)
1355+ if ((cl == cl))
1356+ then {
1357+ let el = db((ee + 1), ek, (dE / 2), (dF / 2))
1358+ let dh = el._1
1359+ let di = el._2
1360+ let cZ = el._3
1361+ $Tuple6(ek, dB, ej, dh, di, cZ)
1362+ }
1363+ else throw("Strict value is not equal to itself.")
1364+ }
1365+
1366+
1367+func em (en,eo,ep) = {
1368+ let bD = aM()
1369+ let eq = bD._1
1370+ let er = bK(toBase58String(eq))
1371+ let dk = bD._3
1372+ let dE = bD._4
1373+ let dF = bD._5
1374+ let dG = bD._6
1375+ let dH = bD._7
1376+ let eb = bD._8
1377+ let es = aS()
1378+ let dq = es._1
1379+ let dr = es._2
1380+ let et = aY()
1381+ let dn = et._1
1382+ let do = et._2
1383+ let dK = aW()
1384+ let dM = fraction(dr, dn[en], do)
1385+ let dN = dq[en]
1386+ let dO = dK[en]
1387+ let dP = cH(dN, (dN + ep), dM, dO)
1388+ let ef = dq[eo]
1389+ let eg = fraction(dr, dn[eo], do)
1390+ let eh = dK[eo]
1391+ let ei = cC(ef, (ef - ep), eg, dr, dH, eb)
1392+ let eu = co(dK, en, dP)
1393+ let dQ = cm(eu, eo, ei)
1394+ let ev = cm(dq, en, (ep + dP))
1395+ let dR = co(ev, eo, (ep + dP))
1396+ let ek = ((ep + dP) - ei)
1397+ let cl = cI(dR, dQ)
1398+ if ((cl == cl))
1399+ then {
1400+ let ew = db((eo + 1), ek, dE, dF)
1401+ let dh = ew._1
1402+ let di = ew._2
1403+ let cZ = ew._3
1404+ $Tuple6(ek, dR, dQ, dh, di, cZ)
1405+ }
1406+ else throw("Strict value is not equal to itself.")
1407+ }
1408+
1409+
1410+@Callable(ex)
1411+func init (aq,bS,dd,de,ey,ez,eA,eB,cz,cA,eC,eD,eE,aI) = {
1412+ let cl = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bz(ex.caller))
1413+ then bC()
1414+ else false)
1415+ then bB()
1416+ else false)
1417+ then ap(aq, "init: invalid assets")
1418+ else false)
1419+ then ae(bS, 1, g, "init: invalid assetWeights")
1420+ else false)
1421+ then ar(size(aq), size(bS), "init: invalid assetWeights size")
1422+ else false)
1423+ then U(dd, 0, d, "init: invalid lp fee")
1424+ else false)
1425+ then U(de, 0, d, "init: invalid protocol fee")
1426+ else false)
1427+ then as(ey, "init: invalid name")
1428+ else false)
1429+ then at(ez, "init: invalid descr")
1430+ else false)
1431+ then au(eA, "init: invalid decimals")
1432+ else false)
1433+ then U(eB, 0, e, "init: invalid maxAllocationAmplifier")
1434+ else false)
1435+ then U(cz, 0, eB, "init: invalid weightAmplifier")
1436+ else false)
1437+ then U(cA, 0, c, "init: invalid disbalanceCoeff")
1438+ else false)
1439+ then U(eC, 0, c, "init: invalid feeMaxRate")
1440+ else false)
1441+ then N(eD, "init: invalid protocolFeeContract")
1442+ else false)
1443+ then U(eE, 1, c, "init: invalid precision")
1444+ else false)
1445+ then N(aI, "init: invalid pauser")
13961446 else false
1397- if ((eM == eM))
1398- then {
1399- let eN = dm((er + 1), eC, (dT / 2), (dU / 2))
1400- let ds = eN._1
1401- let dt = eN._2
1402- let dk = eN._3
1403- $Tuple5(eC, eK, ds, dt, dk)
1404- }
1405- else throw("Strict value is not equal to itself.")
1406- }
1407-
1408-
1409-func eO (eP,eQ,eR) = {
1410- let bz = aK()
1411- let eS = bz._1
1412- let eT = bG(toBase58String(eS))
1413- let dv = bz._3
1414- let dT = bz._4
1415- let dU = bz._5
1416- let dV = bz._6
1417- let dw = bz._7
1418- let dx = bz._8
1419- let dy = bz._9
1420- let eo = bc()
1421- let eU = aQ()
1422- let dE = eU._1
1423- let dF = eU._2
1424- let eV = aU()
1425- let dB = eV._1
1426- let dC = eV._2
1427- let dP = ci(dE, eP, eR)
1428- let dQ = (dF + eR)
1429- let dY = cA(dE, dF, dB, dC, dw, dx, dy)
1430- let es = (dF - dY)
1431- func ad (ae,af) = if (ae._1)
1432- then ae
1433- else {
1434- let ew = ae._2
1435- let ex = ae._3
1436- let ey = ((ex + ew) / 2)
1437- let ez = ck(dP, eQ, ey)
1438- let eA = (dQ - ey)
1439- let eB = (eA - cA(ez, eA, dB, dC, dw, dx, dy))
1440- if (if (((eB - es) > (-1 * eo)))
1441- then (eo > (eB - es))
1442- else false)
1443- then $Tuple5(true, ew, ex, ey, (eB - es))
1444- else if ((0 > (eB - es)))
1445- then $Tuple5(false, ew, ey, ey, (eB - es))
1446- else $Tuple5(false, ey, ex, ey, (eB - es))
1447- }
1448-
1449- let eC = {
1450- let eC = eR
1451- let ez = ck(dP, eQ, eC)
1452- let eA = (dQ - eC)
1453- let dZ = cA(ez, eA, dB, dC, dw, dx, dy)
1454- let eb = (dZ - dY)
1455- if ((eb == 0))
1456- then eC
1457- else {
1458- let eW = {
1459- let ag = r
1460- let ah = size(ag)
1461- let ai = $Tuple5(false, 0, (eR + dY), 0, 0)
1462- func aj (ak,al) = if ((al >= ah))
1463- then ak
1464- else ad(ak, ag[al])
1465-
1466- func am (ak,al) = if ((al >= ah))
1467- then ak
1468- else throw("List size exceeds 64")
1469-
1470- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64)
1471- }
1472- let eF = eW._1
1473- let eG = eW._2
1474- let eH = eW._3
1475- let eI = eW._4
1476- let eJ = eW._5
1477- if (!(eF))
1478- then throw(((("_swap: can't calculate targetAmount=" + toString(eI)) + ",diff=") + toString(eJ)))
1479- else eI
1480- }
1481- }
1482- let eK = ck(dP, eQ, eC)
1483- let eL = (dQ - eC)
1484- let eM = if (cW(eK, eL, dE, dF, dB, dC, dV))
1485- then cL(dE, dF, eK, eL, dB, dC, dw, dx, dy)
1447+ if ((cl == cl))
1448+ then {
1449+ let eF = bR(bS)
1450+ let dn = eF._1
1451+ let do = eF._2
1452+ let dB = bQ(aq)
1453+ let eG = Issue(ey, ez, 0, eA, true)
1454+ let eq = calculateAssetId(eG)
1455+ let eH = $Tuple10(eq, true, 0, dd, de, eB, cz, cA, eC, addressFromStringValue(eD))
1456+ $Tuple2((((((((([eG] ++ aO(eH)) ++ aR(aq)) ++ aU(dB)) ++ aX(dB)) ++ ba(dn)) ++ bh(eE)) ++ bj(bi())) ++ aH(addressFromStringValue(aI))), unit)
1457+ }
1458+ else throw("Strict value is not equal to itself.")
1459+ }
1460+
1461+
1462+
1463+@Callable(ex)
1464+func depositAll (bM) = {
1465+ let cl = if (if (bE())
1466+ then bF()
1467+ else false)
1468+ then U(bM, 0, c, "depositAll: invalid amount")
14861469 else false
1487- if ((eM == eM))
1488- then {
1489- let eX = dm((eQ + 1), eC, dT, dU)
1490- let ds = eX._1
1491- let dt = eX._2
1492- let dk = eX._3
1493- $Tuple5(eC, eK, ds, dt, dk)
1494- }
1495- else throw("Strict value is not equal to itself.")
1496- }
1497-
1498-
1499-@Callable(eY)
1500-func init (ao,bO,do,dp,eZ,fa,fb,fc,cu,cv,cw,fd,fe,aG) = {
1501- let ch = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bv(eY.caller))
1502- then by()
1503- else false)
1504- then bx()
1505- else false)
1506- then an(ao, "init: invalid assets")
1507- else false)
1508- then ac(bO, 1, g, "init: invalid assetWeights")
1509- else false)
1510- then ap(size(ao), size(bO), "init: invalid assetWeights size")
1511- else false)
1512- then S(do, 0, d, "init: invalid lp fee")
1513- else false)
1514- then S(dp, 0, d, "init: invalid protocol fee")
1515- else false)
1516- then aq(eZ, "init: invalid name")
1517- else false)
1518- then ar(fa, "init: invalid descr")
1519- else false)
1520- then as(fb, "init: invalid decimals")
1521- else false)
1522- then S(fc, 0, e, "init: invalid maxAllocationAmplifier")
1523- else false)
1524- then S(cu, 0, fc, "init: invalid weightAmplifier")
1525- else false)
1526- then S(cv, 0, c, "init: invalid slippageRate")
1527- else false)
1528- then S(cw, 0, c, "init: invalid feeMaxRate")
1529- else false)
1530- then L(fd, "init: invalid protocolFeeContract")
1531- else false)
1532- then S(fe, 1, c, "init: invalid precision")
1533- else false)
1534- then L(aG, "init: invalid pauser")
1535- else false
1536- if ((ch == ch))
1537- then {
1538- let ff = bN(bO)
1539- let dB = ff._1
1540- let dC = ff._2
1541- let dP = bM(ao)
1542- let fg = Issue(eZ, fa, 0, fb, true)
1543- let eS = calculateAssetId(fg)
1544- let fh = $Tuple10(eS, true, 0, do, dp, fc, cu, cv, cw, addressFromStringValue(fd))
1545- $Tuple2(((((((([fg] ++ aM(fh)) ++ aP(ao)) ++ aS(dP)) ++ aW(dB)) ++ bd(fe)) ++ bf(be())) ++ aF(addressFromStringValue(aG))), unit)
1546- }
1547- else throw("Strict value is not equal to itself.")
1548- }
1549-
1550-
1551-
1552-@Callable(eY)
1553-func depositAll (bI) = {
1554- let ch = if (if (bA())
1555- then bB()
1556- else false)
1557- then S(bI, 0, c, "depositAll: invalid amount")
1558- else false
1559- if ((ch == ch))
1560- then {
1561- let bz = aK()
1562- let eS = bz._1
1563- let eT = bG(toBase58String(eS))
1564- let dz = aO()
1565- let fi = du(bI)
1566- let dN = fi._1
1567- let dJ = fi._2
1568- let dP = fi._3
1569- func ad (ae,af) = {
1570- let bZ = ae._1
1571- let cg = ay(eY.payments[bZ].assetId)
1572- let fj = bG(cg)
1573- let dH = dJ[bZ]
1574- let fk = bH(dH, eT, fj, CEILING)
1575- let eM = if ((cg != af))
1576- then throw(("depositAll: invalid payment: index=" + toString(bZ)))
1577- else if ((0 >= fk))
1470+ if ((cl == cl))
1471+ then {
1472+ let bD = aM()
1473+ let eq = bD._1
1474+ let er = bK(toBase58String(eq))
1475+ let dl = aQ()
1476+ let eI = dj(bM)
1477+ let dz = eI._1
1478+ let dv = eI._2
1479+ let dB = eI._3
1480+ func af (ag,ah) = {
1481+ let cd = ag._1
1482+ let ck = aA(ex.payments[cd].assetId)
1483+ let eJ = bK(ck)
1484+ let dt = dv[cd]
1485+ let eK = bL(dt, er, eJ, CEILING)
1486+ let dS = if ((ck != ah))
1487+ then throw(("depositAll: invalid payment: index=" + toString(cd)))
1488+ else if ((0 >= eK))
15781489 then throw("depositAll: too little amount required")
15791490 else unit
1580- if ((eM == eM))
1491+ if ((dS == dS))
15811492 then {
1582- let fl = if ((eY.payments[bZ].amount > fk))
1583- then [ScriptTransfer(eY.caller, (eY.payments[bZ].amount - fk), eY.payments[bZ].assetId)]
1584- else if ((fk > eY.payments[bZ].amount))
1585- then throw(((("depositAll: insufficient payment, index=" + toString(bZ)) + ", required=") + toString(fk)))
1493+ let eL = if ((ex.payments[cd].amount > eK))
1494+ then [ScriptTransfer(ex.caller, (ex.payments[cd].amount - eK), ex.payments[cd].assetId)]
1495+ else if ((eK > ex.payments[cd].amount))
1496+ then throw(((("depositAll: insufficient payment, index=" + toString(cd)) + ", required=") + toString(eK)))
15861497 else nil
1587- $Tuple2((bZ + 1), (ae._2 ++ fl))
1498+ $Tuple2((cd + 1), (ag._2 ++ eL))
15881499 }
15891500 else throw("Strict value is not equal to itself.")
15901501 }
15911502
1592- let fm = {
1593- let ag = dz
1594- let ah = size(ag)
1595- let ai = $Tuple2(0, nil)
1596- func aj (ak,al) = if ((al >= ah))
1597- then ak
1598- else ad(ak, ag[al])
1599-
1600- func am (ak,al) = if ((al >= ah))
1601- then ak
1503+ let eM = {
1504+ let ai = dl
1505+ let aj = size(ai)
1506+ let ak = $Tuple2(0, nil)
1507+ func al (am,an) = if ((an >= aj))
1508+ then am
1509+ else af(am, ai[an])
1510+
1511+ func ao (am,an) = if ((an >= aj))
1512+ then am
16021513 else throw("List size exceeds 10")
16031514
1604- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1515+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
16051516 }
1606- let de = fm._1
1607- let fn = fm._2
1608- let fh = $Tuple10(bz._1, bz._2, (bz._3 + dN), bz._4, bz._5, bz._6, bz._7, bz._8, bz._9, bz._10)
1609- $Tuple2(((([Reissue(eS, dN, true), ScriptTransfer(eY.caller, dN, eS)] ++ aM(fh)) ++ aS(dP)) ++ fn), unit)
1610- }
1611- else throw("Strict value is not equal to itself.")
1612- }
1613-
1614-
1615-
1616-@Callable(eY)
1617-func deposit (fo) = {
1618- let ch = S(fo, 0, c, "deposit: invalid min lp amount")
1619- if ((ch == ch))
1620- then {
1621- let bz = aK()
1622- let eS = bz._1
1623- let fp = ay(eS)
1624- let eT = bG(fp)
1625- let eM = if (if (if (if (if (bA())
1626- then bB()
1517+ let cT = eM._1
1518+ let eN = eM._2
1519+ let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1520+ $Tuple2(((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, dz, eq)] ++ aO(eH)) ++ aU(dB)) ++ eN), unit)
1521+ }
1522+ else throw("Strict value is not equal to itself.")
1523+ }
1524+
1525+
1526+
1527+@Callable(ex)
1528+func deposit (eO) = {
1529+ let cl = U(eO, 0, c, "deposit: invalid min lp amount")
1530+ if ((cl == cl))
1531+ then {
1532+ let bD = aM()
1533+ let eq = bD._1
1534+ let eP = aA(eq)
1535+ let er = bK(eP)
1536+ let dS = if (if (if (if (if (bE())
1537+ then bF()
16271538 else false)
1628- then bE()
1539+ then bI()
16291540 else false)
1630- then ap(size(eY.payments), 1, "deposit: invalid payments size")
1541+ then ar(size(ex.payments), 1, "deposit: invalid payments size")
16311542 else false)
1632- then aw(aO(), ay(eY.payments[0].assetId), "deposit: invalid payment asset")
1543+ then ay(aQ(), aA(ex.payments[0].assetId), "deposit: invalid payment asset")
16331544 else false)
1634- then S(eY.payments[0].amount, 1, c, "deposit: invalid payment amount")
1545+ then U(ex.payments[0].amount, 1, c, "deposit: invalid payment amount")
16351546 else false
1636- if ((eM == eM))
1547+ if ((dS == dS))
16371548 then {
1638- let fq = ay(eY.payments[0].assetId)
1639- let bR = bG(fq)
1640- let fr = bH(eY.payments[0].amount, bR, eT, DOWN)
1641- let fs = dS(fq, fr)
1642- let dN = fs._1
1643- let dP = fs._2
1644- let ds = fs._3
1645- let dt = fs._4
1646- let dk = fs._5
1647- let ft = ((dN - ds) - dt)
1648- let dR = S(ft, fo, c, "deposit: less than min")
1649- if ((dR == dR))
1549+ let eQ = aA(ex.payments[0].assetId)
1550+ let bV = bK(eQ)
1551+ let eR = bL(ex.payments[0].amount, bV, er, DOWN)
1552+ let eS = dD(eQ, eR)
1553+ let dz = eS._1
1554+ let dB = eS._2
1555+ let ej = eS._3
1556+ let dh = eS._4
1557+ let di = eS._5
1558+ let cZ = eS._6
1559+ let eT = ((dz - dh) - di)
1560+ let eU = U(eT, eO, c, "deposit: less than min")
1561+ if ((eU == eU))
16501562 then {
1651- let fh = $Tuple10(bz._1, bz._2, (bz._3 + dN), bz._4, bz._5, bz._6, bz._7, bz._8, bz._9, bz._10)
1652- $Tuple2(((((([Reissue(eS, dN, true), ScriptTransfer(eY.caller, ft, eS)] ++ aM(fh)) ++ aS(dP)) ++ aZ(fp, (ds + aY(fp)))) ++ bb(fp, (dt + ba(fp)))) ++ bf(dk)), unit)
1563+ let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1564+ $Tuple2((((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, eT, eq)] ++ aO(eH)) ++ aU(dB)) ++ aX(ej)) ++ bd(eP, (dh + bc(eP)))) ++ bf(eP, (di + be(eP)))) ++ bj(cZ)), unit)
16531565 }
16541566 else throw("Strict value is not equal to itself.")
16551567 }
16601572
16611573
16621574
1663-@Callable(eY)
1575+@Callable(ex)
16641576 func withdrawAll () = {
1665- let bz = aK()
1666- let eS = bz._1
1667- let fp = toBase58String(eS)
1668- let eT = bG(fp)
1669- let dz = aO()
1670- let ch = if (if (if (bA())
1671- then ap(size(eY.payments), 1, "withdrawAll: invalid payments size")
1672- else false)
1673- then Y(fp, ay(eY.payments[0].assetId), "withdrawAll: invalid payment asset")
1674- else false)
1675- then S(eY.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
1577+ let bD = aM()
1578+ let eq = bD._1
1579+ let eP = toBase58String(eq)
1580+ let er = bK(eP)
1581+ let dl = aQ()
1582+ let cl = if (if (if (bE())
1583+ then ar(size(ex.payments), 1, "withdrawAll: invalid payments size")
1584+ else false)
1585+ then aa(eP, aA(ex.payments[0].assetId), "withdrawAll: invalid payment asset")
1586+ else false)
1587+ then U(ex.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
16761588 else false
1677- if ((ch == ch))
1678- then {
1679- let fu = eg(eY.payments[0].amount)
1680- let ej = fu._1
1681- let el = fu._2
1682- let dP = fu._3
1683- let fv = cp(dz, el, eY.caller, eT)
1684- let fh = $Tuple10(bz._1, bz._2, (bz._3 - ej), bz._4, bz._5, bz._6, bz._7, bz._8, bz._9, bz._10)
1685- $Tuple2(((([Burn(eS, ej)] ++ fv) ++ aM(fh)) ++ aS(dP)), unit)
1686- }
1687- else throw("Strict value is not equal to itself.")
1688- }
1689-
1690-
1691-
1692-@Callable(eY)
1693-func withdraw (R,fw) = {
1694- let bz = aK()
1695- let eS = bz._1
1696- let fp = toBase58String(eS)
1697- let eT = bG(fp)
1698- let dz = aO()
1699- let ch = if (if (if (if (if (if (if (bA())
1700- then bB()
1701- else false)
1702- then bE()
1703- else false)
1704- then ap(size(eY.payments), 1, "withdraw: invalid payments size")
1705- else false)
1706- then Y(fp, ay(eY.payments[0].assetId), "withdraw: invalid payment asset")
1707- else false)
1708- then S(eY.payments[0].amount, 1, c, "withdraw: invalid payment amount")
1709- else false)
1710- then aw(dz, R, "withdraw: invalid assetId")
1711- else false)
1712- then S(fw, 0, c, "withdraw: invalid minAmount")
1589+ if ((cl == cl))
1590+ then {
1591+ let eV = dU(ex.payments[0].amount)
1592+ let dX = eV._1
1593+ let dZ = eV._2
1594+ let dB = eV._3
1595+ let eW = ct(dl, dZ, ex.caller, er)
1596+ let eH = $Tuple10(bD._1, bD._2, (bD._3 - dX), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1597+ $Tuple2(((([Burn(eq, dX)] ++ eW) ++ aO(eH)) ++ aU(dB)), unit)
1598+ }
1599+ else throw("Strict value is not equal to itself.")
1600+ }
1601+
1602+
1603+
1604+@Callable(ex)
1605+func withdraw (T,eX) = {
1606+ let bD = aM()
1607+ let eq = bD._1
1608+ let eP = toBase58String(eq)
1609+ let er = bK(eP)
1610+ let dl = aQ()
1611+ let cl = if (if (if (if (if (if (if (bE())
1612+ then bF()
1613+ else false)
1614+ then bI()
1615+ else false)
1616+ then ar(size(ex.payments), 1, "withdraw: invalid payments size")
1617+ else false)
1618+ then aa(eP, aA(ex.payments[0].assetId), "withdraw: invalid payment asset")
1619+ else false)
1620+ then U(ex.payments[0].amount, 1, c, "withdraw: invalid payment amount")
1621+ else false)
1622+ then ay(dl, T, "withdraw: invalid assetId")
1623+ else false)
1624+ then U(eX, 0, c, "withdraw: invalid minAmount")
17131625 else false
1714- if ((ch == ch))
1715- then {
1716- let fx = em(R, eY.payments[0].amount)
1717- let fy = fx._1
1718- let eK = fx._2
1719- let ds = fx._3
1720- let dt = fx._4
1721- let dk = fx._5
1722- let fz = ((fy - ds) - dt)
1723- let fA = bG(R)
1724- let fB = bH(fz, eT, fA, DOWN)
1725- let eM = S(fB, fw, c, "withdraw: less than min")
1726- if ((eM == eM))
1626+ if ((cl == cl))
1627+ then {
1628+ let eY = ea(T, ex.payments[0].amount)
1629+ let eZ = eY._1
1630+ let fa = eY._2
1631+ let fb = eY._3
1632+ let dh = eY._4
1633+ let di = eY._5
1634+ let cZ = eY._6
1635+ let fc = ((eZ - dh) - di)
1636+ let fd = bK(T)
1637+ let fe = bL(fc, er, fd, DOWN)
1638+ let dS = U(fe, eX, c, "withdraw: less than min")
1639+ if ((dS == dS))
17271640 then {
1728- let fh = $Tuple10(bz._1, bz._2, (bz._3 - eY.payments[0].amount), bz._4, bz._5, bz._6, bz._7, bz._8, bz._9, bz._10)
1729- $Tuple2(((((([Burn(eS, eY.payments[0].amount), ScriptTransfer(eY.caller, fB, aA(R))] ++ aM(fh)) ++ aS(eK)) ++ aZ(R, (ds + aY(R)))) ++ bb(R, (dt + ba(R)))) ++ bf(dk)), unit)
1641+ let eH = $Tuple10(bD._1, bD._2, (bD._3 - ex.payments[0].amount), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1642+ $Tuple2((((((([Burn(eq, ex.payments[0].amount), ScriptTransfer(ex.caller, fe, aC(T))] ++ aO(eH)) ++ aU(fa)) ++ aX(fb)) ++ bd(T, (dh + bc(T)))) ++ bf(T, (di + be(T)))) ++ bj(cZ)), unit)
17301643 }
17311644 else throw("Strict value is not equal to itself.")
17321645 }
17351648
17361649
17371650
1738-@Callable(eY)
1739-func swap (fC,fw) = {
1740- let bz = aK()
1741- let eS = bz._1
1742- let eT = bG(toBase58String(eS))
1743- let dz = aO()
1744- let fD = ay(eY.payments[0].assetId)
1745- let fE = bH(eY.payments[0].amount, bG(fD), eT, DOWN)
1746- let fF = valueOrErrorMessage(indexOf(dz, fD), "swap: invalid source asset")
1747- if ((fF == fF))
1748- then {
1749- let er = valueOrErrorMessage(indexOf(dz, fC), "swap: invalid target asset")
1750- if ((er == er))
1651+@Callable(ex)
1652+func swap (ff,eX) = {
1653+ let bD = aM()
1654+ let eq = bD._1
1655+ let er = bK(toBase58String(eq))
1656+ let dl = aQ()
1657+ let fg = aA(ex.payments[0].assetId)
1658+ let fh = bL(ex.payments[0].amount, bK(fg), er, DOWN)
1659+ let dL = valueOrErrorMessage(indexOf(dl, fg), "swap: invalid source asset")
1660+ if ((dL == dL))
1661+ then {
1662+ let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset")
1663+ if ((ee == ee))
17511664 then {
1752- let ch = if (if (if (if (if (if (bA())
1753- then bB()
1665+ let cl = if (if (if (if (if (if (bE())
1666+ then bF()
17541667 else false)
1755- then bE()
1668+ then bI()
17561669 else false)
1757- then S(fw, 0, c, "swap: invalid min target amount")
1670+ then U(eX, 0, c, "swap: invalid min target amount")
17581671 else false)
1759- then S(fE, 1, c, "swap: invalid source amount")
1672+ then U(fh, 1, c, "swap: invalid source amount")
17601673 else false)
1761- then ab(fD, fC, "swap: same assets")
1674+ then ad(fg, ff, "swap: same assets")
17621675 else false)
1763- then ap(size(eY.payments), 1, "swap: invalid payments size")
1676+ then ar(size(ex.payments), 1, "swap: invalid payments size")
17641677 else false
1765- if ((ch == ch))
1678+ if ((cl == cl))
17661679 then {
1767- let fG = eO(fF, er, fE)
1768- let fy = fG._1
1769- let eK = fG._2
1770- let ds = fG._3
1771- let dt = fG._4
1772- let dk = fG._5
1773- let fz = ((fy - ds) - dt)
1774- let fA = bG(fC)
1775- let fB = bH(fz, eT, fA, DOWN)
1776- let eM = S(fB, fw, c, "swap: less than min")
1777- if ((eM == eM))
1778- then $Tuple2((((([ScriptTransfer(eY.caller, fB, aA(fC))] ++ aS(eK)) ++ aZ(fC, (ds + aY(fC)))) ++ bb(fC, (dt + ba(fC)))) ++ bf(dk)), unit)
1680+ let fi = em(dL, ee, fh)
1681+ let eZ = fi._1
1682+ let fa = fi._2
1683+ let fb = fi._3
1684+ let dh = fi._4
1685+ let di = fi._5
1686+ let cZ = fi._6
1687+ let fc = ((eZ - dh) - di)
1688+ let fd = bK(ff)
1689+ let fe = bL(fc, er, fd, DOWN)
1690+ let dS = U(fe, eX, c, "swap: less than min")
1691+ if ((dS == dS))
1692+ then $Tuple2(((((([ScriptTransfer(ex.caller, fe, aC(ff))] ++ aU(fa)) ++ aX(fb)) ++ bd(ff, (dh + bc(ff)))) ++ bf(ff, (di + be(ff)))) ++ bj(cZ)), unit)
17791693 else throw("Strict value is not equal to itself.")
17801694 }
17811695 else throw("Strict value is not equal to itself.")
17871701
17881702
17891703
1790-@Callable(eY)
1791-func getDepositAll (en) = {
1792- let ch = S(en, 1, c, "getDepositAll: invalid amount")
1793- if ((ch == ch))
1794- then {
1795- let fH = du(en)
1796- let dN = fH._1
1797- let dJ = fH._2
1798- let dP = fH._3
1799- $Tuple2(nil, $Tuple2(dN, dJ))
1800- }
1801- else throw("Strict value is not equal to itself.")
1802- }
1803-
1804-
1805-
1806-@Callable(eY)
1807-func getDeposit (R,bI) = {
1808- let ch = if (aw(aO(), R, "getDeposit: invalid asset"))
1809- then S(bI, 1, c, "getDeposit: invalid amount")
1704+@Callable(ex)
1705+func getDepositAll (cy) = {
1706+ let cl = U(cy, 1, c, "getDepositAll: invalid amount")
1707+ if ((cl == cl))
1708+ then {
1709+ let fj = dj(cy)
1710+ let dz = fj._1
1711+ let dv = fj._2
1712+ let dB = fj._3
1713+ $Tuple2(nil, $Tuple2(dz, dv))
1714+ }
1715+ else throw("Strict value is not equal to itself.")
1716+ }
1717+
1718+
1719+
1720+@Callable(ex)
1721+func getDeposit (T,bM) = {
1722+ let cl = if (ay(aQ(), T, "getDeposit: invalid asset"))
1723+ then U(bM, 1, c, "getDeposit: invalid amount")
18101724 else false
1811- if ((ch == ch))
1812- then {
1813- let bz = aK()
1814- let eS = bz._1
1815- let eT = bG(toBase58String(eS))
1816- let bR = bG(R)
1817- let fr = bH(bI, bR, eT, DOWN)
1818- let fI = dS(R, fr)
1819- let dN = fI._1
1820- let dP = fI._2
1821- let ds = fI._3
1822- let dt = fI._4
1823- let dk = fI._5
1824- let ft = ((dN - ds) - dt)
1825- $Tuple2(nil, ft)
1826- }
1827- else throw("Strict value is not equal to itself.")
1828- }
1829-
1830-
1831-
1832-@Callable(eY)
1833-func getWithdrawAll (en) = {
1834- let ch = S(en, 0, c, "getWithdrawAll: invalid amount")
1835- if ((ch == ch))
1836- then {
1837- let fJ = eg(en)
1838- let ej = fJ._1
1839- let fK = fJ._2
1840- let dP = fJ._3
1841- $Tuple2(nil, fK)
1842- }
1843- else throw("Strict value is not equal to itself.")
1844- }
1845-
1846-
1847-
1848-@Callable(eY)
1849-func getWithdraw (R,bI) = {
1850- let ch = if (aw(aO(), R, "getWithdraw: invalid asset"))
1851- then S(bI, 1, c, "getWithdraw: invalid amount")
1725+ if ((cl == cl))
1726+ then {
1727+ let bD = aM()
1728+ let eq = bD._1
1729+ let er = bK(toBase58String(eq))
1730+ let bV = bK(T)
1731+ let eR = bL(bM, bV, er, DOWN)
1732+ let fk = dD(T, eR)
1733+ let dz = fk._1
1734+ let dB = fk._2
1735+ let ej = fk._3
1736+ let dh = fk._4
1737+ let di = fk._5
1738+ let cZ = fk._6
1739+ let eT = ((dz - dh) - di)
1740+ $Tuple2(nil, eT)
1741+ }
1742+ else throw("Strict value is not equal to itself.")
1743+ }
1744+
1745+
1746+
1747+@Callable(ex)
1748+func getWithdrawAll (cy) = {
1749+ let cl = U(cy, 0, c, "getWithdrawAll: invalid amount")
1750+ if ((cl == cl))
1751+ then {
1752+ let fl = dU(cy)
1753+ let dX = fl._1
1754+ let fm = fl._2
1755+ let dB = fl._3
1756+ $Tuple2(nil, fm)
1757+ }
1758+ else throw("Strict value is not equal to itself.")
1759+ }
1760+
1761+
1762+
1763+@Callable(ex)
1764+func getWithdraw (T,bM) = {
1765+ let cl = if (ay(aQ(), T, "getWithdraw: invalid asset"))
1766+ then U(bM, 1, c, "getWithdraw: invalid amount")
18521767 else false
1853- if ((ch == ch))
1854- then {
1855- let bz = aK()
1856- let eS = bz._1
1857- let eT = bG(toBase58String(eS))
1858- let fL = em(R, bI)
1859- let fy = fL._1
1860- let dP = fL._2
1861- let ds = fL._3
1862- let dt = fL._4
1863- let dk = fL._5
1864- let fz = ((fy - ds) - dt)
1865- let fA = bG(R)
1866- let fB = bH(fz, eT, fA, DOWN)
1867- $Tuple2(nil, fB)
1868- }
1869- else throw("Strict value is not equal to itself.")
1870- }
1871-
1872-
1873-
1874-@Callable(eY)
1875-func getSwap (fM,fC,eR) = {
1876- let bz = aK()
1877- let eS = bz._1
1878- let eT = bG(toBase58String(eS))
1879- let dz = aO()
1880- let fF = valueOrErrorMessage(indexOf(dz, fM), "swap: invalid source asset")
1881- if ((fF == fF))
1882- then {
1883- let er = valueOrErrorMessage(indexOf(dz, fC), "swap: invalid target asset")
1884- if ((er == er))
1768+ if ((cl == cl))
1769+ then {
1770+ let bD = aM()
1771+ let eq = bD._1
1772+ let er = bK(toBase58String(eq))
1773+ let fn = ea(T, bM)
1774+ let eZ = fn._1
1775+ let dB = fn._2
1776+ let ej = fn._3
1777+ let dh = fn._4
1778+ let di = fn._5
1779+ let cZ = fn._6
1780+ let fc = ((eZ - dh) - di)
1781+ let fd = bK(T)
1782+ let fe = bL(fc, er, fd, DOWN)
1783+ $Tuple2(nil, fe)
1784+ }
1785+ else throw("Strict value is not equal to itself.")
1786+ }
1787+
1788+
1789+
1790+@Callable(ex)
1791+func getSwap (fo,ff,ep) = {
1792+ let bD = aM()
1793+ let eq = bD._1
1794+ let er = bK(toBase58String(eq))
1795+ let dl = aQ()
1796+ let dL = valueOrErrorMessage(indexOf(dl, fo), "swap: invalid source asset")
1797+ if ((dL == dL))
1798+ then {
1799+ let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset")
1800+ if ((ee == ee))
18851801 then {
1886- let fE = bH(eR, bG(fM), eT, DOWN)
1887- let ch = if (S(fE, 1, c, "swap: invalid source amount"))
1888- then ab(fM, fC, "swap: same assets")
1802+ let fh = bL(ep, bK(fo), er, DOWN)
1803+ let cl = if (U(fh, 1, c, "swap: invalid source amount"))
1804+ then ad(fo, ff, "swap: same assets")
18891805 else false
1890- if ((ch == ch))
1806+ if ((cl == cl))
18911807 then {
1892- let fN = eO(fF, er, fE)
1893- let fy = fN._1
1894- let eK = fN._2
1895- let ds = fN._3
1896- let dt = fN._4
1897- let dk = fN._5
1898- let fz = ((fy - ds) - dt)
1899- let fA = bG(fC)
1900- let fB = bH(fz, eT, fA, DOWN)
1901- $Tuple2(nil, fB)
1808+ let fp = em(dL, ee, fh)
1809+ let eZ = fp._1
1810+ let fa = fp._2
1811+ let fb = fp._3
1812+ let dh = fp._4
1813+ let di = fp._5
1814+ let cZ = fp._6
1815+ let fc = ((eZ - dh) - di)
1816+ let fd = bK(ff)
1817+ let fe = bL(fc, er, fd, DOWN)
1818+ $Tuple2(nil, fe)
19021819 }
19031820 else throw("Strict value is not equal to itself.")
19041821 }
19091826
19101827
19111828
1912-@Callable(eY)
1913-func getClaim (bh) = {
1914- let fO = if ((size(bh) > 0))
1915- then valueOrErrorMessage(addressFromString(bh), "getClaim: invalid user")
1916- else eY.caller
1917- let fP = cX(fO)
1918- let fQ = fP._1
1919- let cZ = fP._2
1920- $Tuple2(nil, cZ)
1921- }
1922-
1923-
1924-
1925-@Callable(eY)
1926-func getUtilFunc () = {
1927- let bz = aK()
1928- let dv = bz._3
1929- let dw = bz._7
1930- let dx = bz._8
1931- let dy = bz._9
1932- let fR = aQ()
1933- let dP = fR._1
1934- let dQ = fR._2
1935- let fS = aU()
1936- let dB = fS._1
1937- let dC = fS._2
1938- let dZ = cA(dP, dQ, dB, dC, dw, dx, dy)
1939- let eB = (dQ - dZ)
1940- $Tuple2(nil, $Tuple2(eB, dv))
1941- }
1942-
1943-
1944-
1945-@Callable(eY)
1946-func getFeeFunc () = {
1947- let bz = aK()
1948- let dw = bz._7
1949- let dx = bz._8
1950- let dy = bz._9
1951- let fT = aQ()
1952- let dP = fT._1
1953- let dQ = fT._2
1954- let fU = aU()
1955- let dB = fU._1
1956- let dC = fU._2
1957- let dZ = cA(dP, dQ, dB, dC, dw, dx, dy)
1958- $Tuple2(nil, dZ)
1959- }
1960-
1961-
1962-
1963-@Callable(eY)
1964-func checkpoint (bh) = {
1965- let ch = if (bA())
1966- then bB()
1829+@Callable(ex)
1830+func getClaim (bl) = {
1831+ let fq = if ((size(bl) > 0))
1832+ then valueOrErrorMessage(addressFromString(bl), "getClaim: invalid user")
1833+ else ex.caller
1834+ let fr = cM(fq)
1835+ let fs = fr._1
1836+ let cO = fr._2
1837+ $Tuple2(nil, cO)
1838+ }
1839+
1840+
1841+
1842+@Callable(ex)
1843+func getAssetId () = {
1844+ let bD = aM()
1845+ let eq = bD._1
1846+ $Tuple2(nil, toBase58String(eq))
1847+ }
1848+
1849+
1850+
1851+@Callable(ex)
1852+func getDecimals () = {
1853+ let bD = aM()
1854+ let eq = bD._1
1855+ let er = bK(toBase58String(eq))
1856+ $Tuple2(nil, er)
1857+ }
1858+
1859+
1860+
1861+@Callable(ex)
1862+func checkpoint (bl) = {
1863+ let cl = if (bE())
1864+ then bF()
19671865 else false
1968- if ((ch == ch))
1969- then {
1970- let fO = if ((size(bh) > 0))
1971- then valueOrErrorMessage(addressFromString(bh), "checkpoint: invalid user")
1972- else eY.caller
1973- cX(fO)
1974- }
1975- else throw("Strict value is not equal to itself.")
1976- }
1977-
1978-
1979-
1980-@Callable(eY)
1866+ if ((cl == cl))
1867+ then {
1868+ let fq = if ((size(bl) > 0))
1869+ then valueOrErrorMessage(addressFromString(bl), "checkpoint: invalid user")
1870+ else ex.caller
1871+ cM(fq)
1872+ }
1873+ else throw("Strict value is not equal to itself.")
1874+ }
1875+
1876+
1877+
1878+@Callable(ex)
19811879 func stake () = {
1982- let ch = if (bA())
1983- then bB()
1880+ let cl = if (bE())
1881+ then bF()
19841882 else false
1985- if ((ch == ch))
1986- then {
1987- let bz = aK()
1988- let fp = ay(bz._1)
1989- let eM = if (if (ap(size(eY.payments), 1, "stake: invalid payments size"))
1990- then Y(fp, ay(eY.payments[0].assetId), "stake: invalid payment asset")
1883+ if ((cl == cl))
1884+ then {
1885+ let bD = aM()
1886+ let eP = aA(bD._1)
1887+ let dS = if (if (ar(size(ex.payments), 1, "stake: invalid payments size"))
1888+ then aa(eP, aA(ex.payments[0].assetId), "stake: invalid payment asset")
19911889 else false)
1992- then S(eY.payments[0].amount, 0, c, "stake: invalid payment amount")
1890+ then U(ex.payments[0].amount, 0, c, "stake: invalid payment amount")
19931891 else false
1994- if ((eM == eM))
1892+ if ((dS == dS))
19951893 then {
1996- let fV = cX(eY.caller)
1997- let fQ = fV._1
1998- let cZ = fV._2
1999- $Tuple2(((fQ ++ bk(eY.caller, (bj(eY.caller) + eY.payments[0].amount))) ++ bm((bl() + eY.payments[0].amount))), unit)
1894+ let ft = cM(ex.caller)
1895+ let fs = ft._1
1896+ let cO = ft._2
1897+ $Tuple2(((fs ++ bo(ex.caller, (bn(ex.caller) + ex.payments[0].amount))) ++ bq((bp() + ex.payments[0].amount))), unit)
20001898 }
20011899 else throw("Strict value is not equal to itself.")
20021900 }
20051903
20061904
20071905
2008-@Callable(eY)
2009-func unstake (bI) = {
2010- let ch = if (bA())
2011- then bB()
1906+@Callable(ex)
1907+func unstake (bM) = {
1908+ let cl = if (bE())
1909+ then bF()
20121910 else false
2013- if ((ch == ch))
2014- then {
2015- let bz = aK()
2016- let eS = bz._1
2017- let cY = bj(eY.caller)
2018- let eM = S(bI, 0, cY, "unstake: invalid amount")
2019- if ((eM == eM))
1911+ if ((cl == cl))
1912+ then {
1913+ let bD = aM()
1914+ let eq = bD._1
1915+ let cN = bn(ex.caller)
1916+ let dS = U(bM, 0, cN, "unstake: invalid amount")
1917+ if ((dS == dS))
20201918 then {
2021- let fW = cX(eY.caller)
2022- let fQ = fW._1
2023- let cZ = fW._2
2024- $Tuple2(((([ScriptTransfer(eY.caller, bI, eS)] ++ fQ) ++ bk(eY.caller, (cY - bI))) ++ bm((bl() - bI))), unit)
1919+ let fu = cM(ex.caller)
1920+ let fs = fu._1
1921+ let cO = fu._2
1922+ $Tuple2(((([ScriptTransfer(ex.caller, bM, eq)] ++ fs) ++ bo(ex.caller, (cN - bM))) ++ bq((bp() - bM))), unit)
20251923 }
20261924 else throw("Strict value is not equal to itself.")
20271925 }
20301928
20311929
20321930
2033-@Callable(eY)
2034-func claim (bh) = {
2035- let ch = if (bA())
2036- then bB()
1931+@Callable(ex)
1932+func claim (bl) = {
1933+ let cl = if (bE())
1934+ then bF()
20371935 else false
2038- if ((ch == ch))
2039- then {
2040- let fO = if ((size(bh) > 0))
2041- then valueOrErrorMessage(addressFromString(bh), "claim: invalid user")
2042- else eY.caller
2043- let bz = aK()
2044- let eS = bz._1
2045- let fp = ay(eS)
2046- let dz = [fp, aO()]
2047- let fX = (size(dz) - 1)
2048- let cY = bj(fO)
2049- let fY = cX(fO)
2050- let fQ = fY._1
2051- let cZ = fY._2
2052- func ad (ae,fZ) = {
2053- let bZ = ae._1
2054- if (if ((fX >= bZ))
2055- then (fZ > 0)
1936+ if ((cl == cl))
1937+ then {
1938+ let fq = if ((size(bl) > 0))
1939+ then valueOrErrorMessage(addressFromString(bl), "claim: invalid user")
1940+ else ex.caller
1941+ let bD = aM()
1942+ let eq = bD._1
1943+ let eP = aA(eq)
1944+ let dl = [eP, aQ()]
1945+ let cL = (size(dl) - 1)
1946+ let fv = cM(fq)
1947+ let fs = fv._1
1948+ let cO = fv._2
1949+ func af (ag,fw) = {
1950+ let cd = ag._1
1951+ if (if ((cL >= cd))
1952+ then (fw > 0)
20561953 else false)
20571954 then {
2058- let ga = dz[bZ]
2059- $Tuple3((bZ + 1), (ae._2 :+ 0), (ae._3 :+ ScriptTransfer(fO, fZ, aA(ga))))
1955+ let fx = dl[cd]
1956+ $Tuple3((cd + 1), (ag._2 :+ 0), (ag._3 :+ ScriptTransfer(fq, fw, aC(fx))))
20601957 }
2061- else $Tuple3((bZ + 1), (ae._2 :+ fZ), ae._3)
1958+ else $Tuple3((cd + 1), (ag._2 :+ fw), ag._3)
20621959 }
20631960
2064- let gb = {
2065- let ag = cZ
2066- let ah = size(ag)
2067- let ai = $Tuple3(0, nil, nil)
2068- func aj (ak,al) = if ((al >= ah))
2069- then ak
2070- else ad(ak, ag[al])
2071-
2072- func am (ak,al) = if ((al >= ah))
2073- then ak
1961+ let fy = {
1962+ let ai = cO
1963+ let aj = size(ai)
1964+ let ak = $Tuple3(0, nil, nil)
1965+ func al (am,an) = if ((an >= aj))
1966+ then am
1967+ else af(am, ai[an])
1968+
1969+ func ao (am,an) = if ((an >= aj))
1970+ then am
20741971 else throw("List size exceeds 11")
20751972
2076- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1973+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
20771974 }
2078- let de = gb._1
2079- let gc = gb._2
2080- let gd = gb._3
2081- $Tuple2(((gd ++ removeByIndex(fQ, 0)) ++ bo(fO, gc)), unit)
2082- }
2083- else throw("Strict value is not equal to itself.")
2084- }
2085-
2086-
2087-
2088-@Callable(eY)
1975+ let cT = fy._1
1976+ let fz = fy._2
1977+ let fA = fy._3
1978+ $Tuple2(((fA ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit)
1979+ }
1980+ else throw("Strict value is not equal to itself.")
1981+ }
1982+
1983+
1984+
1985+@Callable(ex)
1986+func claimAll (bl) = {
1987+ let cl = if (bE())
1988+ then bF()
1989+ else false
1990+ if ((cl == cl))
1991+ then {
1992+ let fq = if ((size(bl) > 0))
1993+ then valueOrErrorMessage(addressFromString(bl), "claimAll: invalid user")
1994+ else ex.caller
1995+ let bD = aM()
1996+ let eq = bD._1
1997+ let eP = aA(eq)
1998+ let dl = [eP, aQ()]
1999+ let cL = (size(dl) - 1)
2000+ let fB = aS()
2001+ let dB = fB._1
2002+ let dC = fB._2
2003+ let fC = cM(fq)
2004+ let fs = fC._1
2005+ let cO = fC._2
2006+ func af (ag,fw) = {
2007+ let cd = ag._1
2008+ if ((cd == 0))
2009+ then $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, (ag._5 + fw))
2010+ else if (if ((cd > 0))
2011+ then (cL >= cd)
2012+ else false)
2013+ then {
2014+ let fD = (cd - 1)
2015+ let aT = dB[fD]
2016+ $Tuple5((cd + 1), (ag._2 :+ 0), (ag._3 :+ (aT + fw)), (ag._4 + fw), ag._5)
2017+ }
2018+ else $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, ag._5)
2019+ }
2020+
2021+ let fE = {
2022+ let ai = cO
2023+ let aj = size(ai)
2024+ let ak = $Tuple5(0, nil, nil, 0, 0)
2025+ func al (am,an) = if ((an >= aj))
2026+ then am
2027+ else af(am, ai[an])
2028+
2029+ func ao (am,an) = if ((an >= aj))
2030+ then am
2031+ else throw("List size exceeds 11")
2032+
2033+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
2034+ }
2035+ let cT = fE._1
2036+ let fz = fE._2
2037+ let fF = fE._3
2038+ let dz = fE._4
2039+ let fG = fE._5
2040+ let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2041+ $Tuple2((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, (dz + fG), eq)] ++ aO(eH)) ++ aU(fF)) ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit)
2042+ }
2043+ else throw("Strict value is not equal to itself.")
2044+ }
2045+
2046+
2047+
2048+@Callable(ex)
2049+func updatePoolFees (dd,de) = {
2050+ let cl = if (if (if (bz(ex.caller))
2051+ then bE()
2052+ else false)
2053+ then U(dd, 0, d, "updatePoolFees: invalid lp fee")
2054+ else false)
2055+ then U(de, 0, d, "updatePoolFees: invalid protocol fee")
2056+ else false
2057+ if ((cl == cl))
2058+ then {
2059+ let bD = aM()
2060+ let eH = $Tuple10(bD._1, bD._2, bD._3, dd, de, bD._6, bD._7, bD._8, bD._9, bD._10)
2061+ $Tuple2(aO(eH), unit)
2062+ }
2063+ else throw("Strict value is not equal to itself.")
2064+ }
2065+
2066+
2067+
2068+@Callable(ex)
2069+func updatePoolParams (eB,cz,cA,eC) = {
2070+ let cl = if (if (if (if (if (bz(ex.caller))
2071+ then bE()
2072+ else false)
2073+ then U(eB, 0, e, "updatePoolParams: invalid maxAllocationAmplifier")
2074+ else false)
2075+ then U(cz, 0, eB, "updatePoolParams: invalid weightAmplifier")
2076+ else false)
2077+ then U(cA, 0, c, "updatePoolParams: invalid disbalanceCoeff")
2078+ else false)
2079+ then U(eC, 0, c, "updatePoolParams: invalid feeMaxRate")
2080+ else false
2081+ if ((cl == cl))
2082+ then {
2083+ let bD = aM()
2084+ let eH = $Tuple10(bD._1, bD._2, bD._3, bD._4, bD._5, eB, cz, cA, eC, bD._10)
2085+ $Tuple2(aO(eH), unit)
2086+ }
2087+ else throw("Strict value is not equal to itself.")
2088+ }
2089+
2090+
2091+
2092+@Callable(ex)
2093+func migrateBalances () = {
2094+ let cl = if (bz(ex.caller))
2095+ then bE()
2096+ else false
2097+ if ((cl == cl))
2098+ then {
2099+ let bD = aM()
2100+ let fH = bD._3
2101+ let fI = aS()
2102+ let dB = fI._1
2103+ let dC = fI._2
2104+ let fJ = max([(dC - fH), 0])
2105+ let eH = $Tuple10(bD._1, bD._2, (fH + fJ), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2106+ $Tuple2(aO(eH), unit)
2107+ }
2108+ else throw("Strict value is not equal to itself.")
2109+ }
2110+
2111+
2112+
2113+@Callable(ex)
20892114 func pause () = {
2090- let ch = if (if (bD(eY.caller))
2091- then bA()
2092- else false)
2093- then bB()
2115+ let cl = if (if (bH(ex.caller))
2116+ then bE()
2117+ else false)
2118+ then bF()
20942119 else false
2095- if ((ch == ch))
2096- then $Tuple2(aC(true), unit)
2097- else throw("Strict value is not equal to itself.")
2098- }
2099-
2100-
2101-
2102-@Callable(eY)
2120+ if ((cl == cl))
2121+ then $Tuple2(aE(true), unit)
2122+ else throw("Strict value is not equal to itself.")
2123+ }
2124+
2125+
2126+
2127+@Callable(ex)
21032128 func unpause () = {
2104- let ch = if (if (bv(eY.caller))
2105- then bA()
2106- else false)
2107- then bC()
2129+ let cl = if (if (bz(ex.caller))
2130+ then bE()
2131+ else false)
2132+ then bG()
21082133 else false
2109- if ((ch == ch))
2110- then $Tuple2(aC(false), unit)
2111- else throw("Strict value is not equal to itself.")
2112- }
2113-
2114-
2115-
2116-@Callable(eY)
2117-func updatePauser (aG) = {
2118- let ch = if (if (bv(eY.caller))
2119- then bA()
2120- else false)
2121- then L(aG, "updatePauser: invalid pauser")
2134+ if ((cl == cl))
2135+ then $Tuple2(aE(false), unit)
2136+ else throw("Strict value is not equal to itself.")
2137+ }
2138+
2139+
2140+
2141+@Callable(ex)
2142+func updatePauser (aI) = {
2143+ let cl = if (if (bz(ex.caller))
2144+ then bE()
2145+ else false)
2146+ then N(aI, "updatePauser: invalid pauser")
21222147 else false
2123- if ((ch == ch))
2124- then $Tuple2(aF(addressFromStringValue(aG)), unit)
2125- else throw("Strict value is not equal to itself.")
2126- }
2127-
2128-
2129-
2130-@Callable(eY)
2131-func updateWatchdog (br,bu) = {
2132- let ch = if (if (if (bv(eY.caller))
2133- then bA()
2134- else false)
2135- then L(br, "updateWatchdog: invalid watchdog")
2136- else false)
2137- then S(bu, 0, c, "updateWatchdog: invalid offset")
2148+ if ((cl == cl))
2149+ then $Tuple2(aH(addressFromStringValue(aI)), unit)
2150+ else throw("Strict value is not equal to itself.")
2151+ }
2152+
2153+
2154+
2155+@Callable(ex)
2156+func updateWatchdog (bv,by) = {
2157+ let cl = if (if (if (bz(ex.caller))
2158+ then bE()
2159+ else false)
2160+ then N(bv, "updateWatchdog: invalid watchdog")
2161+ else false)
2162+ then U(by, 0, c, "updateWatchdog: invalid offset")
21382163 else false
2139- if ((ch == ch))
2140- then $Tuple2((bq(addressFromStringValue(br)) ++ bt(bu)), unit)
2141- else throw("Strict value is not equal to itself.")
2142- }
2143-
2144-
2145-
2146-@Callable(eY)
2147-func setMultisig (aJ) = {
2148- let ch = if (bv(eY.caller))
2149- then L(aJ, "setMultisig: invalid multisig")
2164+ if ((cl == cl))
2165+ then $Tuple2((bu(addressFromStringValue(bv)) ++ bx(by)), unit)
2166+ else throw("Strict value is not equal to itself.")
2167+ }
2168+
2169+
2170+
2171+@Callable(ex)
2172+func setMultisig (aL) = {
2173+ let cl = if (bz(ex.caller))
2174+ then N(aL, "setMultisig: invalid multisig")
21502175 else false
2151- if ((ch == ch))
2152- then $Tuple2(aI(addressFromStringValue(aJ)), unit)
2153- else throw("Strict value is not equal to itself.")
2154- }
2155-
2156-
2157-@Verifier(ge)
2158-func gf () = {
2159- let O = getString(s)
2160- if ($isInstanceOf(O, "String"))
2161- then {
2162- let gg = O
2163- valueOrElse(getBoolean(addressFromStringValue(gg), makeString([t, toString(this), toBase58String(ge.id)], a)), false)
2164- }
2165- else sigVerify(ge.bodyBytes, ge.proofs[0], ge.senderPublicKey)
2176+ if ((cl == cl))
2177+ then $Tuple2(aK(addressFromStringValue(aL)), unit)
2178+ else throw("Strict value is not equal to itself.")
2179+ }
2180+
2181+
2182+@Verifier(fK)
2183+func fL () = {
2184+ let Q = getString(t)
2185+ if ($isInstanceOf(Q, "String"))
2186+ then {
2187+ let fM = Q
2188+ valueOrElse(getBoolean(addressFromStringValue(fM), makeString([u, toString(this), toBase58String(fK.id)], a)), false)
2189+ }
2190+ else sigVerify(fK.bodyBytes, fK.proofs[0], fK.senderPublicKey)
21662191 }
21672192
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "waves"
77
88 let c = 9223372036854775807
99
1010 let d = 1000000
1111
1212 let e = 1000000
1313
1414 let f = 1000000
1515
1616 let g = 1000000
1717
1818 let h = 1000000
1919
2020 let i = 1000000
2121
22-let j = 1000000
23-
24-let k = toBigInt(1000000000000000000)
22+let j = toBigInt(1000000000000000000)
23+
24+let k = toBigInt(1000000000000)
2525
2626 let l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2727
2828 let m = (l :+ 0)
2929
30-let n = toBigInt(0)
31-
32-let o = [n, n, n, n, n, n, n, n, n, n, n]
33-
34-let p = 8
35-
36-let q = 18
37-
38-let r = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_")
39-
40-let s = "MULTISIG"
41-
42-let t = "STATUS"
43-
44-let u = "PAUSED"
45-
46-let v = "PAUSER"
47-
48-let w = "STORAGE"
49-
50-let x = "ASSETS"
51-
52-let y = "ASSET_BALANCES"
53-
54-let z = "ASSET_WEIGHTS"
55-
56-let A = "LP_FEE"
57-
58-let B = "PROTOCOL_FEE"
59-
60-let C = "PRECISION"
61-
62-let D = "SIGMA_FEE_PER_LP"
63-
64-let E = "USER_SIGMA_FEE_PER_LP"
65-
66-let F = "USER_LP"
67-
68-let G = "TOTAL_LP"
69-
70-let H = "USER_PROFITS"
71-
72-let I = "WATCHDOG"
73-
74-let J = "WATCHDOG_OFFSET"
75-
76-let K = "WATCHDOG_HEIGHT"
77-
78-func L (M,N) = {
79- let O = addressFromString(M)
80- if ($isInstanceOf(O, "Address"))
81- then {
82- let P = O
30+let n = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
31+
32+let o = toBigInt(0)
33+
34+let p = [o, o, o, o, o, o, o, o, o, o, o]
35+
36+let q = 8
37+
38+let r = 18
39+
40+let s = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_")
41+
42+let t = "MULTISIG"
43+
44+let u = "STATUS"
45+
46+let v = "PAUSED"
47+
48+let w = "PAUSER"
49+
50+let x = "STORAGE"
51+
52+let y = "ASSETS"
53+
54+let z = "ASSET_BALANCES"
55+
56+let A = "REWARD_BALANCES"
57+
58+let B = "ASSET_WEIGHTS"
59+
60+let C = "LP_FEE"
61+
62+let D = "PROTOCOL_FEE"
63+
64+let E = "PRECISION"
65+
66+let F = "SIGMA_FEE_PER_LP"
67+
68+let G = "USER_SIGMA_FEE_PER_LP"
69+
70+let H = "USER_LP"
71+
72+let I = "TOTAL_LP"
73+
74+let J = "USER_PROFITS"
75+
76+let K = "WATCHDOG"
77+
78+let L = "WATCHDOG_OFFSET"
79+
80+let M = "WATCHDOG_HEIGHT"
81+
82+func N (O,P) = {
83+ let Q = addressFromString(O)
84+ if ($isInstanceOf(Q, "Address"))
85+ then {
86+ let R = Q
8387 true
8488 }
85- else throw(N)
86- }
87-
88-
89-func Q (R,N) = if ((R == b))
89+ else throw(P)
90+ }
91+
92+
93+func S (T,P) = if ((T == b))
9094 then true
9195 else {
92- let O = assetInfo(fromBase58String(R))
93- if ($isInstanceOf(O, "Asset"))
96+ let Q = assetInfo(fromBase58String(T))
97+ if ($isInstanceOf(Q, "Asset"))
9498 then {
95- let P = O
99+ let R = Q
96100 true
97101 }
98- else throw(N)
99- }
100-
101-
102-func S (T,U,V,N) = if (if ((U > T))
102+ else throw(P)
103+ }
104+
105+
106+func U (V,W,X,P) = if (if ((W > V))
103107 then true
104- else (T > V))
105- then throw(N)
108+ else (V > X))
109+ then throw(P)
106110 else true
107111
108112
109-func W (T,X,N) = if ((T != X))
110- then throw(N)
113+func Y (V,Z,P) = if ((V != Z))
114+ then throw(P)
111115 else true
112116
113117
114-func Y (Z,aa,N) = if ((Z != aa))
115- then throw(N)
118+func aa (ab,ac,P) = if ((ab != ac))
119+ then throw(P)
116120 else true
117121
118122
119-func ab (Z,aa,N) = if ((Z == aa))
120- then throw(N)
123+func ad (ab,ac,P) = if ((ab == ac))
124+ then throw(P)
121125 else true
122126
123127
124-func ac (T,U,V,N) = {
125- func ad (ae,af) = {
126- let O = parseInt(af)
127- if ($isInstanceOf(O, "Int"))
128+func ae (V,W,X,P) = {
129+ func af (ag,ah) = {
130+ let Q = parseInt(ah)
131+ if ($isInstanceOf(Q, "Int"))
128132 then {
129- let P = O
130- if (ae)
131- then S(P, U, V, N)
133+ let R = Q
134+ if (ag)
135+ then U(R, W, X, P)
132136 else false
133137 }
134- else throw(N)
135- }
136-
137- let ag = T
138- let ah = size(ag)
139- let ai = true
140- func aj (ak,al) = if ((al >= ah))
141- then ak
142- else ad(ak, ag[al])
143-
144- func am (ak,al) = if ((al >= ah))
145- then ak
138+ else throw(P)
139+ }
140+
141+ let ai = V
142+ let aj = size(ai)
143+ let ak = true
144+ func al (am,an) = if ((an >= aj))
145+ then am
146+ else af(am, ai[an])
147+
148+ func ao (am,an) = if ((an >= aj))
149+ then am
146150 else throw("List size exceeds 10")
147151
148- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
149- }
150-
151-
152-func an (ao,N) = {
153- func ad (ae,af) = if (ae)
154- then Q(af, N)
152+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
153+ }
154+
155+
156+func ap (aq,P) = {
157+ func af (ag,ah) = if (ag)
158+ then S(ah, P)
155159 else false
156160
157- let ag = ao
158- let ah = size(ag)
159- let ai = true
160- func aj (ak,al) = if ((al >= ah))
161- then ak
162- else ad(ak, ag[al])
163-
164- func am (ak,al) = if ((al >= ah))
165- then ak
161+ let ai = aq
162+ let aj = size(ai)
163+ let ak = true
164+ func al (am,an) = if ((an >= aj))
165+ then am
166+ else af(am, ai[an])
167+
168+ func ao (am,an) = if ((an >= aj))
169+ then am
166170 else throw("List size exceeds 10")
167171
168- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
169- }
170-
171-
172-func ap (Z,aa,N) = if ((Z != aa))
173- then throw(N)
172+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
173+ }
174+
175+
176+func ar (ab,ac,P) = if ((ab != ac))
177+ then throw(P)
174178 else true
175179
176180
177-func aq (T,N) = if (if ((4 > size(T)))
181+func as (V,P) = if (if ((4 > size(V)))
178182 then true
179- else (size(T) > 16))
180- then throw(N)
183+ else (size(V) > 16))
184+ then throw(P)
181185 else true
182186
183187
184-func ar (T,N) = if ((size(T) > 1000))
185- then throw(N)
188+func at (V,P) = if ((size(V) > 1000))
189+ then throw(P)
186190 else true
187191
188192
189-func as (T,N) = if (if ((0 > T))
193+func au (V,P) = if (if ((0 > V))
190194 then true
191- else (T > 8))
192- then throw(N)
195+ else (V > 8))
196+ then throw(P)
193197 else true
194198
195199
196-func at (au,R,av,N) = {
197- let O = au.assetId
198- if ($isInstanceOf(O, "ByteVector"))
199- then {
200- let P = O
201- if ((R != toBase58String(P)))
202- then throw((N + ": asset"))
203- else if ((av > au.amount))
204- then throw((N + ": amount"))
200+func av (aw,T,ax,P) = {
201+ let Q = aw.assetId
202+ if ($isInstanceOf(Q, "ByteVector"))
203+ then {
204+ let R = Q
205+ if ((T != toBase58String(R)))
206+ then throw((P + ": asset"))
207+ else if ((ax > aw.amount))
208+ then throw((P + ": amount"))
205209 else true
206210 }
207- else throw((N + ": asset"))
208- }
209-
210-
211-func aw (ax,T,N) = if (!(containsElement(ax, T)))
212- then throw(N)
211+ else throw((P + ": asset"))
212+ }
213+
214+
215+func ay (az,V,P) = if (!(containsElement(az, V)))
216+ then throw(P)
213217 else true
214218
215219
216-func ay (az) = {
217- let O = az
218- if ($isInstanceOf(O, "ByteVector"))
219- then {
220- let P = O
221- toBase58String(P)
220+func aA (aB) = {
221+ let Q = aB
222+ if ($isInstanceOf(Q, "ByteVector"))
223+ then {
224+ let R = Q
225+ toBase58String(R)
222226 }
223227 else b
224228 }
225229
226230
227-func aA (az) = if (if ((az == b))
231+func aC (aB) = if (if ((aB == b))
228232 then true
229- else (az == ""))
233+ else (aB == ""))
230234 then unit
231- else fromBase58String(az)
232-
233-
234-func aB () = {
235- let O = getBoolean(u)
236- if ($isInstanceOf(O, "Boolean"))
237- then {
238- let P = O
239- P
235+ else fromBase58String(aB)
236+
237+
238+func aD () = {
239+ let Q = getBoolean(v)
240+ if ($isInstanceOf(Q, "Boolean"))
241+ then {
242+ let R = Q
243+ R
240244 }
241245 else false
242246 }
243247
244248
245-func aC (aD) = [BooleanEntry(u, aD)]
246-
247-
248-func aE () = {
249- let O = getString(v)
250- if ($isInstanceOf(O, "String"))
251- then {
252- let P = O
253- addressFromStringValue(P)
249+func aE (aF) = [BooleanEntry(v, aF)]
250+
251+
252+func aG () = {
253+ let Q = getString(w)
254+ if ($isInstanceOf(Q, "String"))
255+ then {
256+ let R = Q
257+ addressFromStringValue(R)
254258 }
255259 else Address(base58'')
256260 }
257261
258262
259-func aF (aG) = [StringEntry(v, toString(aG))]
260-
261-
262-func aH () = {
263- let O = getString(s)
264- if ($isInstanceOf(O, "String"))
265- then {
266- let P = O
267- addressFromStringValue(P)
263+func aH (aI) = [StringEntry(w, toString(aI))]
264+
265+
266+func aJ () = {
267+ let Q = getString(t)
268+ if ($isInstanceOf(Q, "String"))
269+ then {
270+ let R = Q
271+ addressFromStringValue(R)
268272 }
269273 else Address(base58'')
270274 }
271275
272276
273-func aI (aJ) = [StringEntry(s, toString(aJ))]
274-
275-
276-func aK () = {
277- let O = getString(w)
278- if ($isInstanceOf(O, "String"))
279- then {
280- let P = O
281- let aL = split(P, a)
282- $Tuple10(fromBase58String(aL[0]), (aL[1] == "1"), parseIntValue(aL[2]), parseIntValue(aL[3]), parseIntValue(aL[4]), parseIntValue(aL[5]), parseIntValue(aL[6]), parseIntValue(aL[7]), parseIntValue(aL[8]), addressFromStringValue(aL[9]))
277+func aK (aL) = [StringEntry(t, toString(aL))]
278+
279+
280+func aM () = {
281+ let Q = getString(x)
282+ if ($isInstanceOf(Q, "String"))
283+ then {
284+ let R = Q
285+ let aN = split(R, a)
286+ $Tuple10(fromBase58String(aN[0]), (aN[1] == "1"), parseIntValue(aN[2]), parseIntValue(aN[3]), parseIntValue(aN[4]), parseIntValue(aN[5]), parseIntValue(aN[6]), parseIntValue(aN[7]), parseIntValue(aN[8]), addressFromStringValue(aN[9]))
283287 }
284288 else $Tuple10(base58'', false, 0, 0, 0, 0, 0, 0, 0, Address(base58''))
285289 }
286290
287291
288-func aM (aN) = [StringEntry(w, makeString([toBase58String(aN._1), if (aN._2)
292+func aO (aP) = [StringEntry(x, makeString([toBase58String(aP._1), if (aP._2)
289293 then "1"
290- else "0", toString(aN._3), toString(aN._4), toString(aN._5), toString(aN._6), toString(aN._7), toString(aN._8), toString(aN._9), toString(aN._10)], a))]
291-
292-
293-func aO () = {
294- let O = getString(x)
295- if ($isInstanceOf(O, "String"))
296- then {
297- let P = O
298- if ((size(P) > 0))
299- then split_51C(P, a)
294+ else "0", toString(aP._3), toString(aP._4), toString(aP._5), toString(aP._6), toString(aP._7), toString(aP._8), toString(aP._9), toString(aP._10)], a))]
295+
296+
297+func aQ () = {
298+ let Q = getString(y)
299+ if ($isInstanceOf(Q, "String"))
300+ then {
301+ let R = Q
302+ if ((size(R) > 0))
303+ then split_51C(R, a)
300304 else nil
301305 }
302306 else nil
303307 }
304308
305309
306-func aP (ao) = [StringEntry(x, makeString_11C(ao, a))]
307-
308-
309-func aQ () = {
310- func ad (ae,af) = {
311- let aR = parseIntValue(af)
312- $Tuple2((ae._1 :+ aR), (ae._2 + aR))
313- }
314-
315- let O = getString(y)
316- if ($isInstanceOf(O, "String"))
317- then {
318- let P = O
319- if ((size(P) > 0))
310+func aR (aq) = [StringEntry(y, makeString_11C(aq, a))]
311+
312+
313+func aS () = {
314+ func af (ag,ah) = {
315+ let aT = parseIntValue(ah)
316+ $Tuple2((ag._1 :+ aT), (ag._2 + aT))
317+ }
318+
319+ let Q = getString(z)
320+ if ($isInstanceOf(Q, "String"))
321+ then {
322+ let R = Q
323+ if ((size(R) > 0))
320324 then {
321- let ag = split_51C(P, a)
322- let ah = size(ag)
323- let ai = $Tuple2(nil, 0)
324- func aj (ak,al) = if ((al >= ah))
325- then ak
326- else ad(ak, ag[al])
327-
328- func am (ak,al) = if ((al >= ah))
329- then ak
325+ let ai = split_51C(R, a)
326+ let aj = size(ai)
327+ let ak = $Tuple2(nil, 0)
328+ func al (am,an) = if ((an >= aj))
329+ then am
330+ else af(am, ai[an])
331+
332+ func ao (am,an) = if ((an >= aj))
333+ then am
330334 else throw("List size exceeds 10")
331335
332- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
336+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
333337 }
334338 else $Tuple2(l, 0)
335339 }
336340 else $Tuple2(l, 0)
337341 }
338342
339343
340-func aS (aT) = {
341- func ad (ae,af) = (ae :+ toString(af))
342-
343-[StringEntry(y, makeString_11C({
344- let ag = aT
345- let ah = size(ag)
346- let ai = nil
347- func aj (ak,al) = if ((al >= ah))
348- then ak
349- else ad(ak, ag[al])
350-
351- func am (ak,al) = if ((al >= ah))
352- then ak
344+func aU (aV) = {
345+ func af (ag,ah) = (ag :+ toString(ah))
346+
347+[StringEntry(z, makeString_11C({
348+ let ai = aV
349+ let aj = size(ai)
350+ let ak = nil
351+ func al (am,an) = if ((an >= aj))
352+ then am
353+ else af(am, ai[an])
354+
355+ func ao (am,an) = if ((an >= aj))
356+ then am
353357 else throw("List size exceeds 10")
354358
355- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
359+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
356360 }, a))]
357361 }
358362
359363
360-func aU () = {
361- func ad (ae,af) = {
362- let aV = parseIntValue(af)
363- $Tuple2((ae._1 :+ aV), (ae._2 + aV))
364- }
365-
366- let O = getString(z)
367- if ($isInstanceOf(O, "String"))
368- then {
369- let P = O
370- if ((size(P) > 0))
364+func aW () = {
365+ func af (ag,ah) = {
366+ let aT = parseIntValue(ah)
367+ (ag :+ aT)
368+ }
369+
370+ let Q = getString(A)
371+ if ($isInstanceOf(Q, "String"))
372+ then {
373+ let R = Q
374+ if ((size(R) > 0))
371375 then {
372- let ag = split_51C(P, a)
373- let ah = size(ag)
374- let ai = $Tuple2(nil, 0)
375- func aj (ak,al) = if ((al >= ah))
376- then ak
377- else ad(ak, ag[al])
378-
379- func am (ak,al) = if ((al >= ah))
380- then ak
376+ let ai = split_51C(R, a)
377+ let aj = size(ai)
378+ let ak = nil
379+ func al (am,an) = if ((an >= aj))
380+ then am
381+ else af(am, ai[an])
382+
383+ func ao (am,an) = if ((an >= aj))
384+ then am
381385 else throw("List size exceeds 10")
382386
383- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
387+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
388+ }
389+ else l
390+ }
391+ else l
392+ }
393+
394+
395+func aX (aV) = {
396+ func af (ag,ah) = (ag :+ toString(ah))
397+
398+[StringEntry(A, makeString_11C({
399+ let ai = aV
400+ let aj = size(ai)
401+ let ak = nil
402+ func al (am,an) = if ((an >= aj))
403+ then am
404+ else af(am, ai[an])
405+
406+ func ao (am,an) = if ((an >= aj))
407+ then am
408+ else throw("List size exceeds 10")
409+
410+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
411+ }, a))]
412+ }
413+
414+
415+func aY () = {
416+ func af (ag,ah) = {
417+ let aZ = parseIntValue(ah)
418+ $Tuple2((ag._1 :+ aZ), (ag._2 + aZ))
419+ }
420+
421+ let Q = getString(B)
422+ if ($isInstanceOf(Q, "String"))
423+ then {
424+ let R = Q
425+ if ((size(R) > 0))
426+ then {
427+ let ai = split_51C(R, a)
428+ let aj = size(ai)
429+ let ak = $Tuple2(nil, 0)
430+ func al (am,an) = if ((an >= aj))
431+ then am
432+ else af(am, ai[an])
433+
434+ func ao (am,an) = if ((an >= aj))
435+ then am
436+ else throw("List size exceeds 10")
437+
438+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
384439 }
385440 else $Tuple2(l, 0)
386441 }
387442 else $Tuple2(l, 0)
388443 }
389444
390445
391-func aW (aX) = {
392- func ad (ae,af) = (ae :+ toString(af))
393-
394-[StringEntry(z, makeString_11C({
395- let ag = aX
396- let ah = size(ag)
397- let ai = nil
398- func aj (ak,al) = if ((al >= ah))
399- then ak
400- else ad(ak, ag[al])
401-
402- func am (ak,al) = if ((al >= ah))
403- then ak
446+func ba (bb) = {
447+ func af (ag,ah) = (ag :+ toString(ah))
448+
449+[StringEntry(B, makeString_11C({
450+ let ai = bb
451+ let aj = size(ai)
452+ let ak = nil
453+ func al (am,an) = if ((an >= aj))
454+ then am
455+ else af(am, ai[an])
456+
457+ func ao (am,an) = if ((an >= aj))
458+ then am
404459 else throw("List size exceeds 10")
405460
406- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
461+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
407462 }, a))]
408463 }
409464
410465
411-func aY (R) = {
412- let O = getInteger(makeString([A, R], a))
413- if ($isInstanceOf(O, "Int"))
414- then {
415- let P = O
416- P
466+func bc (T) = {
467+ let Q = getInteger(makeString([C, T], a))
468+ if ($isInstanceOf(Q, "Int"))
469+ then {
470+ let R = Q
471+ R
417472 }
418473 else 0
419474 }
420475
421476
422-func aZ (R,T) = [IntegerEntry(makeString([A, R], a), T)]
423-
424-
425-func ba (R) = {
426- let O = getInteger(makeString([B, R], a))
427- if ($isInstanceOf(O, "Int"))
428- then {
429- let P = O
430- P
477+func bd (T,V) = [IntegerEntry(makeString([C, T], a), V)]
478+
479+
480+func be (T) = {
481+ let Q = getInteger(makeString([D, T], a))
482+ if ($isInstanceOf(Q, "Int"))
483+ then {
484+ let R = Q
485+ R
431486 }
432487 else 0
433488 }
434489
435490
436-func bb (R,T) = [IntegerEntry(makeString([B, R], a), T)]
437-
438-
439-func bc () = {
440- let O = getInteger(C)
441- if ($isInstanceOf(O, "Int"))
442- then {
443- let P = O
444- P
491+func bf (T,V) = [IntegerEntry(makeString([D, T], a), V)]
492+
493+
494+func bg () = {
495+ let Q = getInteger(E)
496+ if ($isInstanceOf(Q, "Int"))
497+ then {
498+ let R = Q
499+ R
445500 }
446501 else 0
447502 }
448503
449504
450-func bd (T) = [IntegerEntry(C, T)]
451-
452-
453-func be () = {
454- func ad (ae,af) = (ae :+ parseBigIntValue(af))
455-
456- let O = getString(D)
457- if ($isInstanceOf(O, "String"))
458- then {
459- let P = O
460- if ((size(P) > 0))
505+func bh (V) = [IntegerEntry(E, V)]
506+
507+
508+func bi () = {
509+ func af (ag,ah) = (ag :+ parseBigIntValue(ah))
510+
511+ let Q = getString(F)
512+ if ($isInstanceOf(Q, "String"))
513+ then {
514+ let R = Q
515+ if ((size(R) > 0))
461516 then {
462- let ag = split_51C(P, a)
463- let ah = size(ag)
464- let ai = nil
465- func aj (ak,al) = if ((al >= ah))
466- then ak
467- else ad(ak, ag[al])
468-
469- func am (ak,al) = if ((al >= ah))
470- then ak
517+ let ai = split_51C(R, a)
518+ let aj = size(ai)
519+ let ak = nil
520+ func al (am,an) = if ((an >= aj))
521+ then am
522+ else af(am, ai[an])
523+
524+ func ao (am,an) = if ((an >= aj))
525+ then am
471526 else throw("List size exceeds 11")
472527
473- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
528+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
474529 }
475- else o
476- }
477- else o
478- }
479-
480-
481-func bf (T) = {
482- func ad (ae,af) = (ae :+ toString(af))
483-
484-[StringEntry(D, makeString_11C({
485- let ag = T
486- let ah = size(ag)
487- let ai = nil
488- func aj (ak,al) = if ((al >= ah))
489- then ak
490- else ad(ak, ag[al])
491-
492- func am (ak,al) = if ((al >= ah))
493- then ak
530+ else p
531+ }
532+ else p
533+ }
534+
535+
536+func bj (V) = {
537+ func af (ag,ah) = (ag :+ toString(ah))
538+
539+[StringEntry(F, makeString_11C({
540+ let ai = V
541+ let aj = size(ai)
542+ let ak = nil
543+ func al (am,an) = if ((an >= aj))
544+ then am
545+ else af(am, ai[an])
546+
547+ func ao (am,an) = if ((an >= aj))
548+ then am
494549 else throw("List size exceeds 11")
495550
496- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
551+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
497552 }, a))]
498553 }
499554
500555
501-func bg (bh) = {
502- func ad (ae,af) = (ae :+ parseBigIntValue(af))
503-
504- let O = getString(makeString([E, toString(bh)], a))
505- if ($isInstanceOf(O, "String"))
506- then {
507- let P = O
508- if ((size(P) > 0))
556+func bk (bl) = {
557+ func af (ag,ah) = (ag :+ parseBigIntValue(ah))
558+
559+ let Q = getString(makeString([G, toString(bl)], a))
560+ if ($isInstanceOf(Q, "String"))
561+ then {
562+ let R = Q
563+ if ((size(R) > 0))
509564 then {
510- let ag = split_51C(P, a)
511- let ah = size(ag)
512- let ai = nil
513- func aj (ak,al) = if ((al >= ah))
514- then ak
515- else ad(ak, ag[al])
516-
517- func am (ak,al) = if ((al >= ah))
518- then ak
565+ let ai = split_51C(R, a)
566+ let aj = size(ai)
567+ let ak = nil
568+ func al (am,an) = if ((an >= aj))
569+ then am
570+ else af(am, ai[an])
571+
572+ func ao (am,an) = if ((an >= aj))
573+ then am
519574 else throw("List size exceeds 11")
520575
521- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
576+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
522577 }
523- else o
524- }
525- else o
526- }
527-
528-
529-func bi (bh,T) = {
530- func ad (ae,af) = (ae :+ toString(af))
531-
532-[StringEntry(makeString([E, toString(bh)], a), makeString_11C({
533- let ag = T
534- let ah = size(ag)
535- let ai = nil
536- func aj (ak,al) = if ((al >= ah))
537- then ak
538- else ad(ak, ag[al])
539-
540- func am (ak,al) = if ((al >= ah))
541- then ak
578+ else p
579+ }
580+ else p
581+ }
582+
583+
584+func bm (bl,V) = {
585+ func af (ag,ah) = (ag :+ toString(ah))
586+
587+[StringEntry(makeString([G, toString(bl)], a), makeString_11C({
588+ let ai = V
589+ let aj = size(ai)
590+ let ak = nil
591+ func al (am,an) = if ((an >= aj))
592+ then am
593+ else af(am, ai[an])
594+
595+ func ao (am,an) = if ((an >= aj))
596+ then am
542597 else throw("List size exceeds 11")
543598
544- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
599+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
545600 }, a))]
546601 }
547602
548603
549-func bj (M) = {
550- let O = getInteger(makeString([F, toString(M)], a))
551- if ($isInstanceOf(O, "Int"))
552- then {
553- let P = O
554- P
604+func bn (O) = {
605+ let Q = getInteger(makeString([H, toString(O)], a))
606+ if ($isInstanceOf(Q, "Int"))
607+ then {
608+ let R = Q
609+ R
555610 }
556611 else 0
557612 }
558613
559614
560-func bk (M,T) = [IntegerEntry(makeString([F, toString(M)], a), T)]
561-
562-
563-func bl () = {
564- let O = getInteger(G)
565- if ($isInstanceOf(O, "Int"))
566- then {
567- let P = O
568- P
615+func bo (O,V) = [IntegerEntry(makeString([H, toString(O)], a), V)]
616+
617+
618+func bp () = {
619+ let Q = getInteger(I)
620+ if ($isInstanceOf(Q, "Int"))
621+ then {
622+ let R = Q
623+ R
569624 }
570625 else 0
571626 }
572627
573628
574-func bm (T) = [IntegerEntry(G, T)]
575-
576-
577-func bn (bh) = {
578- func ad (ae,af) = (ae :+ parseIntValue(af))
579-
580- let O = getString(makeString([H, toString(bh)], a))
581- if ($isInstanceOf(O, "String"))
582- then {
583- let P = O
584- if ((size(P) > 0))
629+func bq (V) = [IntegerEntry(I, V)]
630+
631+
632+func br (bl) = {
633+ func af (ag,ah) = (ag :+ parseIntValue(ah))
634+
635+ let Q = getString(makeString([J, toString(bl)], a))
636+ if ($isInstanceOf(Q, "String"))
637+ then {
638+ let R = Q
639+ if ((size(R) > 0))
585640 then {
586- let ag = split_51C(P, a)
587- let ah = size(ag)
588- let ai = nil
589- func aj (ak,al) = if ((al >= ah))
590- then ak
591- else ad(ak, ag[al])
592-
593- func am (ak,al) = if ((al >= ah))
594- then ak
641+ let ai = split_51C(R, a)
642+ let aj = size(ai)
643+ let ak = nil
644+ func al (am,an) = if ((an >= aj))
645+ then am
646+ else af(am, ai[an])
647+
648+ func ao (am,an) = if ((an >= aj))
649+ then am
595650 else throw("List size exceeds 11")
596651
597- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
652+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
598653 }
599654 else m
600655 }
601656 else m
602657 }
603658
604659
605-func bo (bh,T) = {
606- func ad (ae,af) = (ae :+ toString(af))
607-
608-[StringEntry(makeString([H, toString(bh)], a), makeString_11C({
609- let ag = T
610- let ah = size(ag)
611- let ai = nil
612- func aj (ak,al) = if ((al >= ah))
613- then ak
614- else ad(ak, ag[al])
615-
616- func am (ak,al) = if ((al >= ah))
617- then ak
660+func bs (bl,V) = {
661+ func af (ag,ah) = (ag :+ toString(ah))
662+
663+[StringEntry(makeString([J, toString(bl)], a), makeString_11C({
664+ let ai = V
665+ let aj = size(ai)
666+ let ak = nil
667+ func al (am,an) = if ((an >= aj))
668+ then am
669+ else af(am, ai[an])
670+
671+ func ao (am,an) = if ((an >= aj))
672+ then am
618673 else throw("List size exceeds 11")
619674
620- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
675+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
621676 }, a))]
622677 }
623678
624679
625-func bp () = {
626- let O = getString(I)
627- if ($isInstanceOf(O, "String"))
628- then {
629- let P = O
630- addressFromStringValue(P)
680+func bt () = {
681+ let Q = getString(K)
682+ if ($isInstanceOf(Q, "String"))
683+ then {
684+ let R = Q
685+ addressFromStringValue(R)
631686 }
632687 else Address(base58'')
633688 }
634689
635690
636-func bq (br) = [StringEntry(I, toString(br))]
637-
638-
639-func bs () = {
640- let O = getInteger(J)
641- if ($isInstanceOf(O, "Int"))
642- then {
643- let P = O
644- P
691+func bu (bv) = [StringEntry(K, toString(bv))]
692+
693+
694+func bw () = {
695+ let Q = getInteger(L)
696+ if ($isInstanceOf(Q, "Int"))
697+ then {
698+ let R = Q
699+ R
645700 }
646701 else 0
647702 }
648703
649704
650-func bt (bu) = [IntegerEntry(J, bu)]
651-
652-
653-func bv (bw) = if ((bw != this))
705+func bx (by) = [IntegerEntry(L, by)]
706+
707+
708+func bz (bA) = if ((bA != this))
654709 then throw("_onlyThisContract: revert")
655710 else true
656711
657712
658-func bx () = if ((aH() == Address(base58'')))
713+func bB () = if ((aJ() == Address(base58'')))
659714 then throw("_whenMultisigSet: revert")
660715 else true
661716
662717
663-func by () = {
664- let bz = aK()
665- if ((bz._1 != base58''))
718+func bC () = {
719+ let bD = aM()
720+ if ((bD._1 != base58''))
666721 then throw("_whenNotInitialized: revert")
667722 else true
668723 }
669724
670725
671-func bA () = {
672- let bz = aK()
673- if ((bz._1 == base58''))
726+func bE () = {
727+ let bD = aM()
728+ if ((bD._1 == base58''))
674729 then throw("_whenInitialized: revert")
675730 else true
676731 }
677732
678733
679-func bB () = if (aB())
734+func bF () = if (aD())
680735 then throw("_whenNotPaused: revert")
681736 else true
682737
683738
684-func bC () = if (!(aB()))
739+func bG () = if (!(aD()))
685740 then throw("_whenPaused: revert")
686741 else true
687742
688743
689-func bD (bw) = if ((bw != aE()))
744+func bH (bA) = if ((bA != aG()))
690745 then throw("_onlyPauser: revert")
691746 else true
692747
693748
694-func bE () = {
695- let bF = {
696- let O = getInteger(bp(), K)
697- if ($isInstanceOf(O, "Int"))
749+func bI () = {
750+ let bJ = {
751+ let Q = getInteger(bt(), M)
752+ if ($isInstanceOf(Q, "Int"))
698753 then {
699- let P = O
700- (P + bs())
754+ let R = Q
755+ (R + bw())
701756 }
702757 else 0
703758 }
704- if ((height > bF))
759+ if ((height > bJ))
705760 then throw("_checkWatchdog: revert")
706761 else true
707762 }
708763
709764
710-func bG (R) = {
711- let O = assetInfo(fromBase58String(R))
712- if ($isInstanceOf(O, "Asset"))
713- then {
714- let P = O
715- P.decimals
716- }
717- else throw(("_getDecimals: no asset=" + R))
718- }
719-
720-
721-func bH (bI,bJ,bK,bL) = if ((bJ >= bK))
722- then fraction(bI, 1, pow(10, 0, (bJ - bK), 0, 0, DOWN), bL)
723- else (bI * pow(10, 0, (bK - bJ), 0, 0, DOWN))
724-
725-
726-func bM (ao) = {
727- func ad (ae,af) = (ae :+ 0)
728-
729- let ag = ao
730- let ah = size(ag)
731- let ai = nil
732- func aj (ak,al) = if ((al >= ah))
733- then ak
734- else ad(ak, ag[al])
735-
736- func am (ak,al) = if ((al >= ah))
737- then ak
765+func bK (T) = {
766+ let Q = assetInfo(fromBase58String(T))
767+ if ($isInstanceOf(Q, "Asset"))
768+ then {
769+ let R = Q
770+ R.decimals
771+ }
772+ else throw(("_getDecimals: no asset=" + T))
773+ }
774+
775+
776+func bL (bM,bN,bO,bP) = if ((bN >= bO))
777+ then fraction(bM, 1, pow(10, 0, (bN - bO), 0, 0, DOWN), bP)
778+ else (bM * pow(10, 0, (bO - bN), 0, 0, DOWN))
779+
780+
781+func bQ (aq) = {
782+ func af (ag,ah) = (ag :+ 0)
783+
784+ let ai = aq
785+ let aj = size(ai)
786+ let ak = nil
787+ func al (am,an) = if ((an >= aj))
788+ then am
789+ else af(am, ai[an])
790+
791+ func ao (am,an) = if ((an >= aj))
792+ then am
738793 else throw("List size exceeds 10")
739794
740- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
741- }
742-
743-
744-func bN (bO) = {
745- func ad (ae,af) = {
746- let aV = parseIntValue(af)
747- $Tuple2((ae._1 :+ aV), (ae._2 + aV))
748- }
749-
750- let ag = bO
751- let ah = size(ag)
752- let ai = $Tuple2(nil, 0)
753- func aj (ak,al) = if ((al >= ah))
754- then ak
755- else ad(ak, ag[al])
756-
757- func am (ak,al) = if ((al >= ah))
758- then ak
795+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
796+ }
797+
798+
799+func bR (bS) = {
800+ func af (ag,ah) = {
801+ let aZ = parseIntValue(ah)
802+ $Tuple2((ag._1 :+ aZ), (ag._2 + aZ))
803+ }
804+
805+ let ai = bS
806+ let aj = size(ai)
807+ let ak = $Tuple2(nil, 0)
808+ func al (am,an) = if ((an >= aj))
809+ then am
810+ else af(am, ai[an])
811+
812+ func ao (am,an) = if ((an >= aj))
813+ then am
759814 else throw("List size exceeds 10")
760815
761- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
762- }
763-
764-
765-func bP (ao,bQ) = {
766- func ad (ae,af) = {
767- let bR = bG(af)
768- let aR = bH(assetBalance(this, fromBase58String(af)), bR, bQ, DOWN)
769- $Tuple2((ae._1 :+ aR), (ae._2 + aR))
770- }
771-
772- let ag = ao
773- let ah = size(ag)
774- let ai = $Tuple2(nil, 0)
775- func aj (ak,al) = if ((al >= ah))
776- then ak
777- else ad(ak, ag[al])
778-
779- func am (ak,al) = if ((al >= ah))
780- then ak
816+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
817+ }
818+
819+
820+func bT (aq,bU) = {
821+ func af (ag,ah) = {
822+ let bV = bK(ah)
823+ let aT = bL(assetBalance(this, fromBase58String(ah)), bV, bU, DOWN)
824+ $Tuple2((ag._1 :+ aT), (ag._2 + aT))
825+ }
826+
827+ let ai = aq
828+ let aj = size(ai)
829+ let ak = $Tuple2(nil, 0)
830+ func al (am,an) = if ((an >= aj))
831+ then am
832+ else af(am, ai[an])
833+
834+ func ao (am,an) = if ((an >= aj))
835+ then am
781836 else throw("List size exceeds 10")
782837
783- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
784- }
785-
786-
787-func bS (ao) = {
788- func ad (ae,af) = (ae :+ toString(af))
838+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
839+ }
840+
841+
842+func bW (aq) = {
843+ func af (ag,ah) = (ag :+ toString(ah))
789844
790845 makeString({
791- let ag = ao
792- let ah = size(ag)
793- let ai = nil
794- func aj (ak,al) = if ((al >= ah))
795- then ak
796- else ad(ak, ag[al])
797-
798- func am (ak,al) = if ((al >= ah))
799- then ak
846+ let ai = aq
847+ let aj = size(ai)
848+ let ak = nil
849+ func al (am,an) = if ((an >= aj))
850+ then am
851+ else af(am, ai[an])
852+
853+ func ao (am,an) = if ((an >= aj))
854+ then am
800855 else throw("List size exceeds 11")
801856
802- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
857+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
803858 }, a)
804859 }
805860
806861
807-func bT (ao) = {
808- func ad (ae,af) = (ae :+ toString(af))
862+func bX (aq) = {
863+ func af (ag,ah) = (ag :+ toString(ah))
809864
810865 makeString({
811- let ag = ao
812- let ah = size(ag)
813- let ai = nil
814- func aj (ak,al) = if ((al >= ah))
815- then ak
816- else ad(ak, ag[al])
817-
818- func am (ak,al) = if ((al >= ah))
819- then ak
866+ let ai = aq
867+ let aj = size(ai)
868+ let ak = nil
869+ func al (am,an) = if ((an >= aj))
870+ then am
871+ else af(am, ai[an])
872+
873+ func ao (am,an) = if ((an >= aj))
874+ then am
820875 else throw("List size exceeds 11")
821876
822- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
877+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
823878 }, a)
824879 }
825880
826881
827-func bU (bV,aX,bW) = {
828- func ad (ae,af) = (ae :+ fraction(bV, af, bW))
829-
830- let ag = aX
831- let ah = size(ag)
832- let ai = nil
833- func aj (ak,al) = if ((al >= ah))
834- then ak
835- else ad(ak, ag[al])
836-
837- func am (ak,al) = if ((al >= ah))
838- then ak
882+func bY (bZ,bb,ca) = {
883+ func af (ag,ah) = (ag :+ fraction(bZ, ah, ca))
884+
885+ let ai = bb
886+ let aj = size(ai)
887+ let ak = nil
888+ func al (am,an) = if ((an >= aj))
889+ then am
890+ else af(am, ai[an])
891+
892+ func ao (am,an) = if ((an >= aj))
893+ then am
839894 else throw("List size exceeds 10")
840895
841- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
842- }
843-
844-
845-func bX (aT,bY) = {
846- func ad (ae,af) = {
847- let bZ = ae._1
848- let ca = bY[bZ]
849- let cb = (af + ca)
850- $Tuple3((bZ + 1), (ae._2 :+ cb), (ae._3 + cb))
851- }
852-
853- let cc = {
854- let ag = aT
855- let ah = size(ag)
856- let ai = $Tuple3(0, nil, 0)
857- func aj (ak,al) = if ((al >= ah))
858- then ak
859- else ad(ak, ag[al])
860-
861- func am (ak,al) = if ((al >= ah))
862- then ak
896+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
897+ }
898+
899+
900+func cb (aV,cc) = {
901+ func af (ag,ah) = {
902+ let cd = ag._1
903+ let ce = cc[cd]
904+ let cf = (ah + ce)
905+ $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf))
906+ }
907+
908+ let cg = {
909+ let ai = aV
910+ let aj = size(ai)
911+ let ak = $Tuple3(0, nil, 0)
912+ func al (am,an) = if ((an >= aj))
913+ then am
914+ else af(am, ai[an])
915+
916+ func ao (am,an) = if ((an >= aj))
917+ then am
863918 else throw("List size exceeds 10")
864919
865- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
866- }
867- $Tuple2(cc._2, cc._3)
868- }
869-
870-
871-func cd (aT,ce,ao,bQ,N) = {
872- func ad (ae,af) = {
873- let bZ = ae._1
874- let cf = ce[bZ]
875- let cg = ay(cf.assetId)
876- let ch = if ((cg != ao[bZ]))
877- then throw(((N + ": index=") + toString(bZ)))
920+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
921+ }
922+ $Tuple2(cg._2, cg._3)
923+ }
924+
925+
926+func ch (aV,ci,aq,bU,P) = {
927+ func af (ag,ah) = {
928+ let cd = ag._1
929+ let cj = ci[cd]
930+ let ck = aA(cj.assetId)
931+ let cl = if ((ck != aq[cd]))
932+ then throw(((P + ": index=") + toString(cd)))
878933 else unit
879- if ((ch == ch))
934+ if ((cl == cl))
880935 then {
881- let bR = bG(cg)
882- let cb = (af + bH(ce[bZ].amount, bR, bQ, DOWN))
883- $Tuple3((bZ + 1), (ae._2 :+ cb), (ae._3 + cb))
936+ let bV = bK(ck)
937+ let cf = (ah + bL(ci[cd].amount, bV, bU, DOWN))
938+ $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf))
884939 }
885940 else throw("Strict value is not equal to itself.")
886941 }
887942
888- let cc = {
889- let ag = aT
890- let ah = size(ag)
891- let ai = $Tuple3(0, nil, 0)
892- func aj (ak,al) = if ((al >= ah))
893- then ak
894- else ad(ak, ag[al])
895-
896- func am (ak,al) = if ((al >= ah))
897- then ak
943+ let cg = {
944+ let ai = aV
945+ let aj = size(ai)
946+ let ak = $Tuple3(0, nil, 0)
947+ func al (am,an) = if ((an >= aj))
948+ then am
949+ else af(am, ai[an])
950+
951+ func ao (am,an) = if ((an >= aj))
952+ then am
898953 else throw("List size exceeds 10")
899954
900- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
901- }
902- $Tuple2(cc._2, cc._3)
903- }
904-
905-
906-func ci (aT,cj,bI) = {
907- func ad (ae,af) = {
908- let bZ = ae._1
909- if ((bZ == cj))
910- then $Tuple2((bZ + 1), (ae._2 :+ (af + bI)))
911- else $Tuple2((bZ + 1), (ae._2 :+ af))
912- }
913-
914- let cc = {
915- let ag = aT
916- let ah = size(ag)
917- let ai = $Tuple2(0, nil)
918- func aj (ak,al) = if ((al >= ah))
919- then ak
920- else ad(ak, ag[al])
921-
922- func am (ak,al) = if ((al >= ah))
923- then ak
955+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
956+ }
957+ $Tuple2(cg._2, cg._3)
958+ }
959+
960+
961+func cm (aV,cn,bM) = {
962+ func af (ag,ah) = {
963+ let cd = ag._1
964+ if ((cd == cn))
965+ then $Tuple2((cd + 1), (ag._2 :+ (ah + bM)))
966+ else $Tuple2((cd + 1), (ag._2 :+ ah))
967+ }
968+
969+ let cg = {
970+ let ai = aV
971+ let aj = size(ai)
972+ let ak = $Tuple2(0, nil)
973+ func al (am,an) = if ((an >= aj))
974+ then am
975+ else af(am, ai[an])
976+
977+ func ao (am,an) = if ((an >= aj))
978+ then am
924979 else throw("List size exceeds 10")
925980
926- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
927- }
928- cc._2
929- }
930-
931-
932-func ck (aT,cj,bI) = {
933- func ad (ae,af) = {
934- let bZ = ae._1
935- if (if ((bZ == cj))
936- then (bI > af)
981+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
982+ }
983+ cg._2
984+ }
985+
986+
987+func co (aV,cn,bM) = {
988+ func af (ag,ah) = {
989+ let cd = ag._1
990+ if (if ((cd == cn))
991+ then (bM > ah)
937992 else false)
938993 then throw("insufficient balance")
939- else if (if ((bZ == cj))
940- then (af >= bI)
994+ else if (if ((cd == cn))
995+ then (ah >= bM)
941996 else false)
942- then $Tuple2((bZ + 1), (ae._2 :+ (af - bI)))
943- else $Tuple2((bZ + 1), (ae._2 :+ af))
944- }
945-
946- let cc = {
947- let ag = aT
948- let ah = size(ag)
949- let ai = $Tuple2(0, nil)
950- func aj (ak,al) = if ((al >= ah))
951- then ak
952- else ad(ak, ag[al])
953-
954- func am (ak,al) = if ((al >= ah))
955- then ak
997+ then $Tuple2((cd + 1), (ag._2 :+ (ah - bM)))
998+ else $Tuple2((cd + 1), (ag._2 :+ ah))
999+ }
1000+
1001+ let cg = {
1002+ let ai = aV
1003+ let aj = size(ai)
1004+ let ak = $Tuple2(0, nil)
1005+ func al (am,an) = if ((an >= aj))
1006+ then am
1007+ else af(am, ai[an])
1008+
1009+ func ao (am,an) = if ((an >= aj))
1010+ then am
9561011 else throw("List size exceeds 10")
9571012
958- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
959- }
960- cc._2
961- }
962-
963-
964-func cl (aT,bI,cm) = {
965- let cn = fraction((cm - bI), j, cm, CEILING)
966- func ad (ae,af) = {
967- let cb = fraction(af, cn, j, CEILING)
968- let co = (af - cb)
969- if ((0 > co))
1013+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1014+ }
1015+ cg._2
1016+ }
1017+
1018+
1019+func cp (aV,bM,cq) = {
1020+ let cr = fraction((cq - bM), i, cq, CEILING)
1021+ func af (ag,ah) = {
1022+ let cf = fraction(ah, cr, i, CEILING)
1023+ let cs = (ah - cf)
1024+ if ((0 > cs))
9701025 then throw("insufficient delta balance")
971- else $Tuple3((ae._1 :+ cb), (ae._2 + cb), (ae._3 :+ co))
972- }
973-
974- let ag = aT
975- let ah = size(ag)
976- let ai = $Tuple3(nil, 0, nil)
977- func aj (ak,al) = if ((al >= ah))
978- then ak
979- else ad(ak, ag[al])
980-
981- func am (ak,al) = if ((al >= ah))
982- then ak
1026+ else $Tuple3((ag._1 :+ cf), (ag._2 + cf), (ag._3 :+ cs))
1027+ }
1028+
1029+ let ai = aV
1030+ let aj = size(ai)
1031+ let ak = $Tuple3(nil, 0, nil)
1032+ func al (am,an) = if ((an >= aj))
1033+ then am
1034+ else af(am, ai[an])
1035+
1036+ func ao (am,an) = if ((an >= aj))
1037+ then am
9831038 else throw("List size exceeds 10")
9841039
985- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
986- }
987-
988-
989-func cp (ao,aT,cq,bJ) = {
990- func ad (ae,af) = {
991- let bZ = ae._1
992- $Tuple2((bZ + 1), (ae._2 :+ ScriptTransfer(cq, bH(aT[bZ], bJ, bG(af), DOWN), aA(af))))
993- }
994-
995- let cc = {
996- let ag = ao
997- let ah = size(ag)
998- let ai = $Tuple2(0, nil)
999- func aj (ak,al) = if ((al >= ah))
1000- then ak
1001- else ad(ak, ag[al])
1002-
1003- func am (ak,al) = if ((al >= ah))
1004- then ak
1040+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1041+ }
1042+
1043+
1044+func ct (aq,aV,cu,bN) = {
1045+ func af (ag,ah) = {
1046+ let cd = ag._1
1047+ $Tuple2((cd + 1), (ag._2 :+ ScriptTransfer(cu, bL(aV[cd], bN, bK(ah), DOWN), aC(ah))))
1048+ }
1049+
1050+ let cg = {
1051+ let ai = aq
1052+ let aj = size(ai)
1053+ let ak = $Tuple2(0, nil)
1054+ func al (am,an) = if ((an >= aj))
1055+ then am
1056+ else af(am, ai[an])
1057+
1058+ func ao (am,an) = if ((an >= aj))
1059+ then am
10051060 else throw("List size exceeds 10")
10061061
1007- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1008- }
1009- cc._2
1010- }
1011-
1012-
1013-func cr (cs,ct,cu,cv,cw) = if ((ct > cs))
1014- then {
1015- let cx = fraction(ct, (f - cu), f)
1016- if ((cx > cs))
1017- then {
1018- let cy = (cx - cs)
1019- let cz = fraction(fraction(cy, cv, h), i, ct)
1020- if ((cz > cw))
1021- then fraction(cy, cw, i)
1022- else fraction(cy, cz, i)
1062+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1063+ }
1064+ cg._2
1065+ }
1066+
1067+
1068+func cv (cw,cx,cy,cz,cA) = {
1069+ let cB = fraction(cx, (f - cz), f)
1070+ if ((cw > cB))
1071+ then 0
1072+ else toInt(fraction(fraction(toBigInt(cy), toBigInt(cA), k), toBigInt((cB - cw)), toBigInt(cB), CEILING))
1073+ }
1074+
1075+
1076+func cC (cD,cE,cx,cy,cz,cA) = if ((cE > cD))
1077+ then 0
1078+ else (cv(cE, cx, cy, cz, cA) - cv(cD, cx, cy, cz, cA))
1079+
1080+
1081+func cF (cw,cx,cG) = if ((cw > cx))
1082+ then cG
1083+ else fraction(cG, cw, cx, FLOOR)
1084+
1085+
1086+func cH (cD,cE,cx,cG) = if ((cD > cE))
1087+ then 0
1088+ else (cF(cE, cx, cG) - cF(cD, cx, cG))
1089+
1090+
1091+func cI (cJ,cK) = {
1092+ let cL = size(cJ)
1093+ func af (ag,cd) = if ((cd >= cL))
1094+ then ag
1095+ else if ((0 > cJ[cd]))
1096+ then throw("_validateAllocation: negative assetBalances")
1097+ else if ((0 > cK[cd]))
1098+ then throw("_validateAllocation: negative rewardBalances")
1099+ else ag
1100+
1101+ let ai = n
1102+ let aj = size(ai)
1103+ let ak = true
1104+ func al (am,an) = if ((an >= aj))
1105+ then am
1106+ else af(am, ai[an])
1107+
1108+ func ao (am,an) = if ((an >= aj))
1109+ then am
1110+ else throw("List size exceeds 10")
1111+
1112+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1113+ }
1114+
1115+
1116+func cM (bl) = {
1117+ let cN = bn(bl)
1118+ let cO = br(bl)
1119+ let cP = bi()
1120+ let cQ = bk(bl)
1121+ func af (ag,ah) = {
1122+ let cd = ag._1
1123+ let cR = (cO[cd] + toInt(fraction(toBigInt(cN), (cP[cd] - cQ[cd]), j)))
1124+ $Tuple2((cd + 1), (ag._2 :+ cR))
1125+ }
1126+
1127+ let cS = {
1128+ let ai = m
1129+ let aj = size(ai)
1130+ let ak = $Tuple2(0, nil)
1131+ func al (am,an) = if ((an >= aj))
1132+ then am
1133+ else af(am, ai[an])
1134+
1135+ func ao (am,an) = if ((an >= aj))
1136+ then am
1137+ else throw("List size exceeds 11")
1138+
1139+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1140+ }
1141+ let cT = cS._1
1142+ let cU = cS._2
1143+ $Tuple2((bs(bl, cU) ++ bm(bl, cP)), cU)
1144+ }
1145+
1146+
1147+func cV (cW,cX,cn,cY) = {
1148+ func af (ag,ah) = {
1149+ let cd = ag._1
1150+ let cZ = if ((cn == cd))
1151+ then (cW[cd] + fraction(toBigInt(cY), j, toBigInt(cX)))
1152+ else cW[cd]
1153+ $Tuple2((cd + 1), (ag._2 :+ cZ))
1154+ }
1155+
1156+ let da = {
1157+ let ai = m
1158+ let aj = size(ai)
1159+ let ak = $Tuple2(0, nil)
1160+ func al (am,an) = if ((an >= aj))
1161+ then am
1162+ else af(am, ai[an])
1163+
1164+ func ao (am,an) = if ((an >= aj))
1165+ then am
1166+ else throw("List size exceeds 11")
1167+
1168+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1169+ }
1170+ let cT = da._1
1171+ let cZ = da._2
1172+ cZ
1173+ }
1174+
1175+
1176+func db (dc,bM,dd,de) = {
1177+ let cP = bi()
1178+ let df = bp()
1179+ let dg = if ((df == 0))
1180+ then $Tuple2(0, fraction(bM, de, d))
1181+ else $Tuple2(fraction(bM, dd, d), fraction(bM, de, d))
1182+ let dh = dg._1
1183+ let di = dg._2
1184+ let cZ = if ((dh == 0))
1185+ then cP
1186+ else cV(cP, df, dc, dh)
1187+ $Tuple3(dh, di, cZ)
1188+ }
1189+
1190+
1191+func dj (bM) = {
1192+ let bD = aM()
1193+ let dk = bD._3
1194+ let dl = aQ()
1195+ let dm = aY()
1196+ let dn = dm._1
1197+ let do = dm._2
1198+ let dp = aS()
1199+ let dq = dp._1
1200+ let dr = dp._2
1201+ let ds = if ((dr == 0))
1202+ then {
1203+ func af (ag,ah) = {
1204+ let cd = ag._1
1205+ let dt = fraction(dn[cd], bM, do)
1206+ $Tuple2((cd + 1), (ag._2 :+ dt))
10231207 }
1024- else 0
1025- }
1026- else {
1027- let cx = fraction(ct, (f + cu), f)
1028- if ((cs > cx))
1029- then {
1030- let cy = (cs - cx)
1031- let cz = fraction(fraction(cy, cv, h), i, ct)
1032- if ((cz > cw))
1033- then fraction(cy, cw, i)
1034- else fraction(cy, cz, i)
1208+
1209+ let du = {
1210+ let ai = dl
1211+ let aj = size(ai)
1212+ let ak = $Tuple2(0, nil)
1213+ func al (am,an) = if ((an >= aj))
1214+ then am
1215+ else af(am, ai[an])
1216+
1217+ func ao (am,an) = if ((an >= aj))
1218+ then am
1219+ else throw("List size exceeds 10")
1220+
1221+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10351222 }
1036- else 0
1037- }
1038-
1039-
1040-func cA (aT,cB,aX,bW,cu,cv,cw) = 0
1041-
1042-
1043-func cC (cD,cE,cF,cG,cH,cm,bO,bW,cu,cv,cw) = if (if ((cH == 0))
1044- then true
1045- else (cm == 0))
1046- then true
1047- else {
1048- let cI = fraction((cE - cA(cD, cE, bO, bW, cu, cv, cw)), j, cH)
1049- let cJ = fraction((cG - cA(cF, cG, bO, bW, cu, cv, cw)), j, cm)
1050- let cK = (cJ - cI)
1051- if (if ((0 >= cK))
1052- then ((-1 * bc()) > cK)
1053- else false)
1054- then throw(("_validateLiquidityInvariant: revert: diff=" + toString(cK)))
1055- else true
1056- }
1057-
1058-
1059-func cL (cD,cE,cF,cG,bO,bW,cu,cv,cw) = {
1060- let cM = (cE - cA(cD, cE, bO, bW, cu, cv, cw))
1061- let cN = (cG - cA(cF, cG, bO, bW, cu, cv, cw))
1062- let cK = (cN - cM)
1063- if (if ((0 >= cK))
1064- then ((-1 * bc()) > cK)
1065- else false)
1066- then throw(("_validateSwapInvariant: revert: diff=" + toString(cK)))
1067- else true
1068- }
1069-
1070-
1071-func cO (cs,cG,cP,cE,cQ,bW,cR) = {
1072- let cS = fraction(cG, cQ, bW)
1073- let cT = if ((cs > cS))
1074- then (e + cR)
1075- else (e - cR)
1076- let cU = fraction(cS, cT, e)
1077- let cV = fraction(fraction(cE, cQ, bW), cT, e)
1078- if ((cs > cS))
1079- then if ((cs > cU))
1080- then if ((cV > cP))
1081- then throw("_validateAssetAllocation: new up")
1082- else if (((cs - cU) > (cP - cV)))
1083- then throw("_validateAssetAllocation: still up")
1084- else true
1085- else true
1086- else if ((cU > cs))
1087- then if ((cP > cV))
1088- then throw("_validateAssetAllocation: new down")
1089- else if (((cU - cs) > (cV - cP)))
1090- then throw("_validateAssetAllocation: still down")
1091- else true
1092- else true
1093- }
1094-
1095-
1096-func cW (cF,cG,cD,cE,bO,bW,cR) = true
1097-
1098-
1099-func cX (bh) = {
1100- let cY = bj(bh)
1101- let cZ = bn(bh)
1102- let da = be()
1103- let db = bg(bh)
1104- func ad (ae,af) = {
1105- let bZ = ae._1
1106- let dc = (cZ[bZ] + toInt(fraction(toBigInt(cY), (da[bZ] - db[bZ]), k)))
1107- $Tuple2((bZ + 1), (ae._2 :+ dc))
1108- }
1109-
1110- let dd = {
1111- let ag = m
1112- let ah = size(ag)
1113- let ai = $Tuple2(0, nil)
1114- func aj (ak,al) = if ((al >= ah))
1115- then ak
1116- else ad(ak, ag[al])
1117-
1118- func am (ak,al) = if ((al >= ah))
1119- then ak
1120- else throw("List size exceeds 11")
1121-
1122- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1123- }
1124- let de = dd._1
1125- let df = dd._2
1126- $Tuple2((bo(bh, df) ++ bi(bh, da)), df)
1127- }
1128-
1129-
1130-func dg (dh,di,cj,dj) = {
1131- func ad (ae,af) = {
1132- let bZ = ae._1
1133- let dk = if ((cj == bZ))
1134- then (dh[bZ] + fraction(toBigInt(dj), k, toBigInt(di)))
1135- else dh[bZ]
1136- $Tuple2((bZ + 1), (ae._2 :+ dk))
1137- }
1138-
1139- let dl = {
1140- let ag = m
1141- let ah = size(ag)
1142- let ai = $Tuple2(0, nil)
1143- func aj (ak,al) = if ((al >= ah))
1144- then ak
1145- else ad(ak, ag[al])
1146-
1147- func am (ak,al) = if ((al >= ah))
1148- then ak
1149- else throw("List size exceeds 11")
1150-
1151- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1152- }
1153- let de = dl._1
1154- let dk = dl._2
1155- dk
1156- }
1157-
1158-
1159-func dm (dn,bI,do,dp) = {
1160- let da = be()
1161- let dq = bl()
1162- let dr = if ((dq == 0))
1163- then $Tuple2(0, fraction(bI, dp, d))
1164- else $Tuple2(fraction(bI, do, d), fraction(bI, dp, d))
1165- let ds = dr._1
1166- let dt = dr._2
1167- let dk = if ((ds == 0))
1168- then da
1169- else dg(da, dq, dn, ds)
1170- $Tuple3(ds, dt, dk)
1171- }
1172-
1173-
1174-func du (bI) = {
1175- let bz = aK()
1176- let dv = bz._3
1177- let dw = bz._7
1178- let dx = bz._8
1179- let dy = bz._9
1180- let dz = aO()
1181- let dA = aU()
1223+ let cT = du._1
1224+ let dv = du._2
1225+ $Tuple2(bM, dv)
1226+ }
1227+ else {
1228+ let dw = fraction(toBigInt(bM), j, toBigInt(dr))
1229+ func dx (ag,ah) = {
1230+ let cd = ag._1
1231+ let dt = toInt(fraction(dw, toBigInt(dq[cd]), j))
1232+ $Tuple2((cd + 1), (ag._2 :+ dt))
1233+ }
1234+
1235+ let dy = {
1236+ let ai = dl
1237+ let aj = size(ai)
1238+ let ak = $Tuple2(0, nil)
1239+ func al (am,an) = if ((an >= aj))
1240+ then am
1241+ else dx(am, ai[an])
1242+
1243+ func ao (am,an) = if ((an >= aj))
1244+ then am
1245+ else throw("List size exceeds 10")
1246+
1247+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1248+ }
1249+ let cT = dy._1
1250+ let dv = dy._2
1251+ $Tuple2(fraction(bM, dk, dr), dv)
1252+ }
1253+ let dz = ds._1
1254+ let dv = ds._2
1255+ let dA = cb(dq, dv)
11821256 let dB = dA._1
11831257 let dC = dA._2
1184- let dD = aQ()
1185- let dE = dD._1
1186- let dF = dD._2
1187- let dG = if ((dF == 0))
1188- then {
1189- func ad (ae,af) = {
1190- let bZ = ae._1
1191- let dH = fraction(dB[bZ], bI, dC)
1192- $Tuple2((bZ + 1), (ae._2 :+ dH))
1193- }
1194-
1195- let dI = {
1196- let ag = dz
1197- let ah = size(ag)
1198- let ai = $Tuple2(0, nil)
1199- func aj (ak,al) = if ((al >= ah))
1200- then ak
1201- else ad(ak, ag[al])
1202-
1203- func am (ak,al) = if ((al >= ah))
1204- then ak
1205- else throw("List size exceeds 10")
1206-
1207- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1208- }
1209- let de = dI._1
1210- let dJ = dI._2
1211- $Tuple2(bI, dJ)
1212- }
1213- else {
1214- let dK = fraction(toBigInt(bI), k, toBigInt(dF))
1215- func dL (ae,af) = {
1216- let bZ = ae._1
1217- let dH = toInt(fraction(dK, toBigInt(dE[bZ]), k))
1218- $Tuple2((bZ + 1), (ae._2 :+ dH))
1219- }
1220-
1221- let dM = {
1222- let ag = dz
1223- let ah = size(ag)
1224- let ai = $Tuple2(0, nil)
1225- func aj (ak,al) = if ((al >= ah))
1226- then ak
1227- else dL(ak, ag[al])
1228-
1229- func am (ak,al) = if ((al >= ah))
1230- then ak
1231- else throw("List size exceeds 10")
1232-
1233- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1234- }
1235- let de = dM._1
1236- let dJ = dM._2
1237- $Tuple2(fraction(bI, dv, dF), dJ)
1238- }
1239- let dN = dG._1
1240- let dJ = dG._2
1241- let dO = bX(dE, dJ)
1242- let dP = dO._1
1243- let dQ = dO._2
1244- let dR = cC(dE, dF, dP, dQ, dv, (dv + dN), dB, dC, dw, dx, dy)
1245- if ((dR == dR))
1246- then $Tuple3(dN, dJ, dP)
1247- else throw("Strict value is not equal to itself.")
1248- }
1249-
1250-
1251-func dS (R,bI) = {
1252- let bz = aK()
1253- let dv = bz._3
1254- let dT = bz._4
1255- let dU = bz._5
1256- let dV = bz._6
1257- let dw = bz._7
1258- let dx = bz._8
1259- let dy = bz._9
1260- let dz = aO()
1261- let dW = aU()
1262- let dB = dW._1
1263- let dC = dW._2
1264- let dX = aQ()
1265- let dE = dX._1
1266- let dF = dX._2
1267- let dP = ci(dE, value(indexOf(dz, R)), bI)
1268- let dQ = (dF + bI)
1269- let dR = cW(dP, dQ, dE, dF, dB, dC, dV)
1270- if ((dR == dR))
1271- then {
1272- let dY = cA(dE, dF, dB, dC, dw, dx, dy)
1273- let dZ = cA(dP, dQ, dB, dC, dw, dx, dy)
1274- let dN = if ((dv == 0))
1275- then throw("_deposit: empty pool")
1276- else {
1277- let ea = (dQ - dF)
1278- let eb = (dZ - dY)
1279- let ec = fraction((ea - eb), j, (dF - dY))
1280- let ed = fraction(dv, ec, j)
1281- let ee = cC(dE, dF, dP, dQ, dv, (dv + ed), dB, dC, dw, dx, dy)
1282- if ((ee == ee))
1283- then ed
1284- else throw("Strict value is not equal to itself.")
1258+ $Tuple3(dz, dv, dB)
1259+ }
1260+
1261+
1262+func dD (T,bM) = {
1263+ let bD = aM()
1264+ let dk = bD._3
1265+ let dE = bD._4
1266+ let dF = bD._5
1267+ let dG = bD._6
1268+ let dH = bD._7
1269+ let dl = aQ()
1270+ let dI = aY()
1271+ let dn = dI._1
1272+ let do = dI._2
1273+ let dJ = aS()
1274+ let dq = dJ._1
1275+ let dr = dJ._2
1276+ let dK = aW()
1277+ let cl = if (if ((dr == 0))
1278+ then true
1279+ else (dk == 0))
1280+ then throw("_deposit: empty pool")
1281+ else true
1282+ if ((cl == cl))
1283+ then {
1284+ let dL = value(indexOf(dl, T))
1285+ let dM = fraction(dr, dn[dL], do)
1286+ let dN = dq[dL]
1287+ let dO = dK[dL]
1288+ let dP = cH(dN, (dN + bM), dM, dO)
1289+ let dQ = co(dK, dL, dP)
1290+ let dR = cm(dq, dL, (bM + dP))
1291+ let dz = (bM + dP)
1292+ let dS = cI(dR, dQ)
1293+ if ((dS == dS))
1294+ then {
1295+ let dT = db(0, dz, (dE / 2), (dF / 2))
1296+ let dh = dT._1
1297+ let di = dT._2
1298+ let cZ = dT._3
1299+ $Tuple6(dz, dR, dQ, dh, di, cZ)
12851300 }
1286- let ef = dm(0, dN, (dT / 2), (dU / 2))
1287- let ds = ef._1
1288- let dt = ef._2
1289- let dk = ef._3
1290- $Tuple5(dN, dP, ds, dt, dk)
1291- }
1292- else throw("Strict value is not equal to itself.")
1293- }
1294-
1295-
1296-func eg (bI) = {
1297- let bz = aK()
1298- let dv = bz._3
1299- let dV = bz._6
1300- let dw = bz._7
1301- let dx = bz._8
1302- let dy = bz._9
1303- let eh = aQ()
1304- let dE = eh._1
1305- let dF = eh._2
1306- let ei = aU()
1307- let dB = ei._1
1308- let dC = ei._2
1309- let ej = bI
1310- let ch = S(ej, 0, c, "_withdrawAll: lpTokensToBurn less than 0")
1311- if ((ch == ch))
1312- then {
1313- let ek = cl(dE, ej, dv)
1314- let dP = ek._1
1315- let dQ = ek._2
1316- let el = ek._3
1317- let dR = cC(dE, dF, dP, dQ, dv, (dv - ej), dB, dC, dw, dx, dy)
1318- if ((dR == dR))
1319- then $Tuple3(ej, el, dP)
13201301 else throw("Strict value is not equal to itself.")
13211302 }
13221303 else throw("Strict value is not equal to itself.")
13231304 }
13241305
13251306
1326-func em (R,en) = {
1327- let bz = aK()
1328- let dv = bz._3
1329- let dT = bz._4
1330- let dU = bz._5
1331- let dV = bz._6
1332- let dw = bz._7
1333- let dx = bz._8
1334- let dy = bz._9
1335- let eo = bc()
1336- let dz = aO()
1337- let ep = aQ()
1338- let dE = ep._1
1339- let dF = ep._2
1340- let eq = aU()
1341- let dB = eq._1
1342- let dC = eq._2
1343- let er = value(indexOf(dz, R))
1344- let dY = cA(dE, dF, dB, dC, dw, dx, dy)
1345- let es = (dF - dY)
1346- let et = fraction(toBigInt((dv - en)), k, toBigInt(dv))
1347- let eu = toInt(fraction(toBigInt(es), et, k))
1348- let ev = fraction(toBigInt(es), k, toBigInt(dv), CEILING)
1349- func ad (ae,af) = if (ae._1)
1350- then ae
1351- else {
1352- let ew = ae._2
1353- let ex = ae._3
1354- let ey = ((ex + ew) / 2)
1355- let ez = ck(dE, er, ey)
1356- let eA = (dF - ey)
1357- let eB = (eA - cA(ez, eA, dB, dC, dw, dx, dy))
1358- if (if (((eB - eu) > (-1 * eo)))
1359- then (eo > (eB - eu))
1360- else false)
1361- then $Tuple5(true, ew, ex, ey, (eB - eu))
1362- else if ((0 > (eB - eu)))
1363- then $Tuple5(false, ew, ey, ey, (eB - eu))
1364- else $Tuple5(false, ey, ex, ey, (eB - eu))
1365- }
1366-
1367- let eC = {
1368- let eD = toInt(fraction(toBigInt((en + dY)), ev, k, CEILING))
1369- let eE = {
1370- let ag = r
1371- let ah = size(ag)
1372- let ai = $Tuple5(false, 0, eD, 0, 0)
1373- func aj (ak,al) = if ((al >= ah))
1374- then ak
1375- else ad(ak, ag[al])
1376-
1377- func am (ak,al) = if ((al >= ah))
1378- then ak
1379- else throw("List size exceeds 64")
1380-
1381- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64)
1382- }
1383- let eF = eE._1
1384- let eG = eE._2
1385- let eH = eE._3
1386- let eI = eE._4
1387- let eJ = eE._5
1388- if (!(eF))
1389- then throw(((("_withdraw: can't calculate targetAmount=" + toString(eI)) + ",diff=") + toString(eJ)))
1390- else eI
1391- }
1392- let eK = ck(dE, er, eC)
1393- let eL = (dF - eC)
1394- let eM = if (cW(eK, eL, dE, dF, dB, dC, dV))
1395- then cC(dE, dF, eK, eL, dv, (dv - en), dB, dC, dw, dx, dy)
1307+func dU (bM) = {
1308+ let bD = aM()
1309+ let dk = bD._3
1310+ let dV = aS()
1311+ let dq = dV._1
1312+ let dr = dV._2
1313+ let dW = aY()
1314+ let dn = dW._1
1315+ let do = dW._2
1316+ let dX = bM
1317+ let cl = U(dX, 0, dk, "_withdrawAll: invalid lpTokensToBurn")
1318+ if ((cl == cl))
1319+ then {
1320+ let dY = cp(dq, dX, dk)
1321+ let dB = dY._1
1322+ let dC = dY._2
1323+ let dZ = dY._3
1324+ $Tuple3(dX, dZ, dB)
1325+ }
1326+ else throw("Strict value is not equal to itself.")
1327+ }
1328+
1329+
1330+func ea (T,cy) = {
1331+ let bD = aM()
1332+ let dk = bD._3
1333+ let dE = bD._4
1334+ let dF = bD._5
1335+ let dG = bD._6
1336+ let dH = bD._7
1337+ let eb = bD._8
1338+ let dl = aQ()
1339+ let ec = aS()
1340+ let dq = ec._1
1341+ let dr = ec._2
1342+ let ed = aY()
1343+ let dn = ed._1
1344+ let do = ed._2
1345+ let dK = aW()
1346+ let ee = value(indexOf(dl, T))
1347+ let ef = dq[ee]
1348+ let eg = fraction(dr, dn[ee], do)
1349+ let eh = dK[ee]
1350+ let ei = cC(ef, (ef - cy), eg, dr, dH, eb)
1351+ let ej = cm(dK, ee, ei)
1352+ let dB = co(dq, ee, cy)
1353+ let ek = (cy - ei)
1354+ let cl = cI(dB, ej)
1355+ if ((cl == cl))
1356+ then {
1357+ let el = db((ee + 1), ek, (dE / 2), (dF / 2))
1358+ let dh = el._1
1359+ let di = el._2
1360+ let cZ = el._3
1361+ $Tuple6(ek, dB, ej, dh, di, cZ)
1362+ }
1363+ else throw("Strict value is not equal to itself.")
1364+ }
1365+
1366+
1367+func em (en,eo,ep) = {
1368+ let bD = aM()
1369+ let eq = bD._1
1370+ let er = bK(toBase58String(eq))
1371+ let dk = bD._3
1372+ let dE = bD._4
1373+ let dF = bD._5
1374+ let dG = bD._6
1375+ let dH = bD._7
1376+ let eb = bD._8
1377+ let es = aS()
1378+ let dq = es._1
1379+ let dr = es._2
1380+ let et = aY()
1381+ let dn = et._1
1382+ let do = et._2
1383+ let dK = aW()
1384+ let dM = fraction(dr, dn[en], do)
1385+ let dN = dq[en]
1386+ let dO = dK[en]
1387+ let dP = cH(dN, (dN + ep), dM, dO)
1388+ let ef = dq[eo]
1389+ let eg = fraction(dr, dn[eo], do)
1390+ let eh = dK[eo]
1391+ let ei = cC(ef, (ef - ep), eg, dr, dH, eb)
1392+ let eu = co(dK, en, dP)
1393+ let dQ = cm(eu, eo, ei)
1394+ let ev = cm(dq, en, (ep + dP))
1395+ let dR = co(ev, eo, (ep + dP))
1396+ let ek = ((ep + dP) - ei)
1397+ let cl = cI(dR, dQ)
1398+ if ((cl == cl))
1399+ then {
1400+ let ew = db((eo + 1), ek, dE, dF)
1401+ let dh = ew._1
1402+ let di = ew._2
1403+ let cZ = ew._3
1404+ $Tuple6(ek, dR, dQ, dh, di, cZ)
1405+ }
1406+ else throw("Strict value is not equal to itself.")
1407+ }
1408+
1409+
1410+@Callable(ex)
1411+func init (aq,bS,dd,de,ey,ez,eA,eB,cz,cA,eC,eD,eE,aI) = {
1412+ let cl = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bz(ex.caller))
1413+ then bC()
1414+ else false)
1415+ then bB()
1416+ else false)
1417+ then ap(aq, "init: invalid assets")
1418+ else false)
1419+ then ae(bS, 1, g, "init: invalid assetWeights")
1420+ else false)
1421+ then ar(size(aq), size(bS), "init: invalid assetWeights size")
1422+ else false)
1423+ then U(dd, 0, d, "init: invalid lp fee")
1424+ else false)
1425+ then U(de, 0, d, "init: invalid protocol fee")
1426+ else false)
1427+ then as(ey, "init: invalid name")
1428+ else false)
1429+ then at(ez, "init: invalid descr")
1430+ else false)
1431+ then au(eA, "init: invalid decimals")
1432+ else false)
1433+ then U(eB, 0, e, "init: invalid maxAllocationAmplifier")
1434+ else false)
1435+ then U(cz, 0, eB, "init: invalid weightAmplifier")
1436+ else false)
1437+ then U(cA, 0, c, "init: invalid disbalanceCoeff")
1438+ else false)
1439+ then U(eC, 0, c, "init: invalid feeMaxRate")
1440+ else false)
1441+ then N(eD, "init: invalid protocolFeeContract")
1442+ else false)
1443+ then U(eE, 1, c, "init: invalid precision")
1444+ else false)
1445+ then N(aI, "init: invalid pauser")
13961446 else false
1397- if ((eM == eM))
1398- then {
1399- let eN = dm((er + 1), eC, (dT / 2), (dU / 2))
1400- let ds = eN._1
1401- let dt = eN._2
1402- let dk = eN._3
1403- $Tuple5(eC, eK, ds, dt, dk)
1404- }
1405- else throw("Strict value is not equal to itself.")
1406- }
1407-
1408-
1409-func eO (eP,eQ,eR) = {
1410- let bz = aK()
1411- let eS = bz._1
1412- let eT = bG(toBase58String(eS))
1413- let dv = bz._3
1414- let dT = bz._4
1415- let dU = bz._5
1416- let dV = bz._6
1417- let dw = bz._7
1418- let dx = bz._8
1419- let dy = bz._9
1420- let eo = bc()
1421- let eU = aQ()
1422- let dE = eU._1
1423- let dF = eU._2
1424- let eV = aU()
1425- let dB = eV._1
1426- let dC = eV._2
1427- let dP = ci(dE, eP, eR)
1428- let dQ = (dF + eR)
1429- let dY = cA(dE, dF, dB, dC, dw, dx, dy)
1430- let es = (dF - dY)
1431- func ad (ae,af) = if (ae._1)
1432- then ae
1433- else {
1434- let ew = ae._2
1435- let ex = ae._3
1436- let ey = ((ex + ew) / 2)
1437- let ez = ck(dP, eQ, ey)
1438- let eA = (dQ - ey)
1439- let eB = (eA - cA(ez, eA, dB, dC, dw, dx, dy))
1440- if (if (((eB - es) > (-1 * eo)))
1441- then (eo > (eB - es))
1442- else false)
1443- then $Tuple5(true, ew, ex, ey, (eB - es))
1444- else if ((0 > (eB - es)))
1445- then $Tuple5(false, ew, ey, ey, (eB - es))
1446- else $Tuple5(false, ey, ex, ey, (eB - es))
1447- }
1448-
1449- let eC = {
1450- let eC = eR
1451- let ez = ck(dP, eQ, eC)
1452- let eA = (dQ - eC)
1453- let dZ = cA(ez, eA, dB, dC, dw, dx, dy)
1454- let eb = (dZ - dY)
1455- if ((eb == 0))
1456- then eC
1457- else {
1458- let eW = {
1459- let ag = r
1460- let ah = size(ag)
1461- let ai = $Tuple5(false, 0, (eR + dY), 0, 0)
1462- func aj (ak,al) = if ((al >= ah))
1463- then ak
1464- else ad(ak, ag[al])
1465-
1466- func am (ak,al) = if ((al >= ah))
1467- then ak
1468- else throw("List size exceeds 64")
1469-
1470- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64)
1471- }
1472- let eF = eW._1
1473- let eG = eW._2
1474- let eH = eW._3
1475- let eI = eW._4
1476- let eJ = eW._5
1477- if (!(eF))
1478- then throw(((("_swap: can't calculate targetAmount=" + toString(eI)) + ",diff=") + toString(eJ)))
1479- else eI
1480- }
1481- }
1482- let eK = ck(dP, eQ, eC)
1483- let eL = (dQ - eC)
1484- let eM = if (cW(eK, eL, dE, dF, dB, dC, dV))
1485- then cL(dE, dF, eK, eL, dB, dC, dw, dx, dy)
1447+ if ((cl == cl))
1448+ then {
1449+ let eF = bR(bS)
1450+ let dn = eF._1
1451+ let do = eF._2
1452+ let dB = bQ(aq)
1453+ let eG = Issue(ey, ez, 0, eA, true)
1454+ let eq = calculateAssetId(eG)
1455+ let eH = $Tuple10(eq, true, 0, dd, de, eB, cz, cA, eC, addressFromStringValue(eD))
1456+ $Tuple2((((((((([eG] ++ aO(eH)) ++ aR(aq)) ++ aU(dB)) ++ aX(dB)) ++ ba(dn)) ++ bh(eE)) ++ bj(bi())) ++ aH(addressFromStringValue(aI))), unit)
1457+ }
1458+ else throw("Strict value is not equal to itself.")
1459+ }
1460+
1461+
1462+
1463+@Callable(ex)
1464+func depositAll (bM) = {
1465+ let cl = if (if (bE())
1466+ then bF()
1467+ else false)
1468+ then U(bM, 0, c, "depositAll: invalid amount")
14861469 else false
1487- if ((eM == eM))
1488- then {
1489- let eX = dm((eQ + 1), eC, dT, dU)
1490- let ds = eX._1
1491- let dt = eX._2
1492- let dk = eX._3
1493- $Tuple5(eC, eK, ds, dt, dk)
1494- }
1495- else throw("Strict value is not equal to itself.")
1496- }
1497-
1498-
1499-@Callable(eY)
1500-func init (ao,bO,do,dp,eZ,fa,fb,fc,cu,cv,cw,fd,fe,aG) = {
1501- let ch = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bv(eY.caller))
1502- then by()
1503- else false)
1504- then bx()
1505- else false)
1506- then an(ao, "init: invalid assets")
1507- else false)
1508- then ac(bO, 1, g, "init: invalid assetWeights")
1509- else false)
1510- then ap(size(ao), size(bO), "init: invalid assetWeights size")
1511- else false)
1512- then S(do, 0, d, "init: invalid lp fee")
1513- else false)
1514- then S(dp, 0, d, "init: invalid protocol fee")
1515- else false)
1516- then aq(eZ, "init: invalid name")
1517- else false)
1518- then ar(fa, "init: invalid descr")
1519- else false)
1520- then as(fb, "init: invalid decimals")
1521- else false)
1522- then S(fc, 0, e, "init: invalid maxAllocationAmplifier")
1523- else false)
1524- then S(cu, 0, fc, "init: invalid weightAmplifier")
1525- else false)
1526- then S(cv, 0, c, "init: invalid slippageRate")
1527- else false)
1528- then S(cw, 0, c, "init: invalid feeMaxRate")
1529- else false)
1530- then L(fd, "init: invalid protocolFeeContract")
1531- else false)
1532- then S(fe, 1, c, "init: invalid precision")
1533- else false)
1534- then L(aG, "init: invalid pauser")
1535- else false
1536- if ((ch == ch))
1537- then {
1538- let ff = bN(bO)
1539- let dB = ff._1
1540- let dC = ff._2
1541- let dP = bM(ao)
1542- let fg = Issue(eZ, fa, 0, fb, true)
1543- let eS = calculateAssetId(fg)
1544- let fh = $Tuple10(eS, true, 0, do, dp, fc, cu, cv, cw, addressFromStringValue(fd))
1545- $Tuple2(((((((([fg] ++ aM(fh)) ++ aP(ao)) ++ aS(dP)) ++ aW(dB)) ++ bd(fe)) ++ bf(be())) ++ aF(addressFromStringValue(aG))), unit)
1546- }
1547- else throw("Strict value is not equal to itself.")
1548- }
1549-
1550-
1551-
1552-@Callable(eY)
1553-func depositAll (bI) = {
1554- let ch = if (if (bA())
1555- then bB()
1556- else false)
1557- then S(bI, 0, c, "depositAll: invalid amount")
1558- else false
1559- if ((ch == ch))
1560- then {
1561- let bz = aK()
1562- let eS = bz._1
1563- let eT = bG(toBase58String(eS))
1564- let dz = aO()
1565- let fi = du(bI)
1566- let dN = fi._1
1567- let dJ = fi._2
1568- let dP = fi._3
1569- func ad (ae,af) = {
1570- let bZ = ae._1
1571- let cg = ay(eY.payments[bZ].assetId)
1572- let fj = bG(cg)
1573- let dH = dJ[bZ]
1574- let fk = bH(dH, eT, fj, CEILING)
1575- let eM = if ((cg != af))
1576- then throw(("depositAll: invalid payment: index=" + toString(bZ)))
1577- else if ((0 >= fk))
1470+ if ((cl == cl))
1471+ then {
1472+ let bD = aM()
1473+ let eq = bD._1
1474+ let er = bK(toBase58String(eq))
1475+ let dl = aQ()
1476+ let eI = dj(bM)
1477+ let dz = eI._1
1478+ let dv = eI._2
1479+ let dB = eI._3
1480+ func af (ag,ah) = {
1481+ let cd = ag._1
1482+ let ck = aA(ex.payments[cd].assetId)
1483+ let eJ = bK(ck)
1484+ let dt = dv[cd]
1485+ let eK = bL(dt, er, eJ, CEILING)
1486+ let dS = if ((ck != ah))
1487+ then throw(("depositAll: invalid payment: index=" + toString(cd)))
1488+ else if ((0 >= eK))
15781489 then throw("depositAll: too little amount required")
15791490 else unit
1580- if ((eM == eM))
1491+ if ((dS == dS))
15811492 then {
1582- let fl = if ((eY.payments[bZ].amount > fk))
1583- then [ScriptTransfer(eY.caller, (eY.payments[bZ].amount - fk), eY.payments[bZ].assetId)]
1584- else if ((fk > eY.payments[bZ].amount))
1585- then throw(((("depositAll: insufficient payment, index=" + toString(bZ)) + ", required=") + toString(fk)))
1493+ let eL = if ((ex.payments[cd].amount > eK))
1494+ then [ScriptTransfer(ex.caller, (ex.payments[cd].amount - eK), ex.payments[cd].assetId)]
1495+ else if ((eK > ex.payments[cd].amount))
1496+ then throw(((("depositAll: insufficient payment, index=" + toString(cd)) + ", required=") + toString(eK)))
15861497 else nil
1587- $Tuple2((bZ + 1), (ae._2 ++ fl))
1498+ $Tuple2((cd + 1), (ag._2 ++ eL))
15881499 }
15891500 else throw("Strict value is not equal to itself.")
15901501 }
15911502
1592- let fm = {
1593- let ag = dz
1594- let ah = size(ag)
1595- let ai = $Tuple2(0, nil)
1596- func aj (ak,al) = if ((al >= ah))
1597- then ak
1598- else ad(ak, ag[al])
1599-
1600- func am (ak,al) = if ((al >= ah))
1601- then ak
1503+ let eM = {
1504+ let ai = dl
1505+ let aj = size(ai)
1506+ let ak = $Tuple2(0, nil)
1507+ func al (am,an) = if ((an >= aj))
1508+ then am
1509+ else af(am, ai[an])
1510+
1511+ func ao (am,an) = if ((an >= aj))
1512+ then am
16021513 else throw("List size exceeds 10")
16031514
1604- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1515+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
16051516 }
1606- let de = fm._1
1607- let fn = fm._2
1608- let fh = $Tuple10(bz._1, bz._2, (bz._3 + dN), bz._4, bz._5, bz._6, bz._7, bz._8, bz._9, bz._10)
1609- $Tuple2(((([Reissue(eS, dN, true), ScriptTransfer(eY.caller, dN, eS)] ++ aM(fh)) ++ aS(dP)) ++ fn), unit)
1610- }
1611- else throw("Strict value is not equal to itself.")
1612- }
1613-
1614-
1615-
1616-@Callable(eY)
1617-func deposit (fo) = {
1618- let ch = S(fo, 0, c, "deposit: invalid min lp amount")
1619- if ((ch == ch))
1620- then {
1621- let bz = aK()
1622- let eS = bz._1
1623- let fp = ay(eS)
1624- let eT = bG(fp)
1625- let eM = if (if (if (if (if (bA())
1626- then bB()
1517+ let cT = eM._1
1518+ let eN = eM._2
1519+ let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1520+ $Tuple2(((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, dz, eq)] ++ aO(eH)) ++ aU(dB)) ++ eN), unit)
1521+ }
1522+ else throw("Strict value is not equal to itself.")
1523+ }
1524+
1525+
1526+
1527+@Callable(ex)
1528+func deposit (eO) = {
1529+ let cl = U(eO, 0, c, "deposit: invalid min lp amount")
1530+ if ((cl == cl))
1531+ then {
1532+ let bD = aM()
1533+ let eq = bD._1
1534+ let eP = aA(eq)
1535+ let er = bK(eP)
1536+ let dS = if (if (if (if (if (bE())
1537+ then bF()
16271538 else false)
1628- then bE()
1539+ then bI()
16291540 else false)
1630- then ap(size(eY.payments), 1, "deposit: invalid payments size")
1541+ then ar(size(ex.payments), 1, "deposit: invalid payments size")
16311542 else false)
1632- then aw(aO(), ay(eY.payments[0].assetId), "deposit: invalid payment asset")
1543+ then ay(aQ(), aA(ex.payments[0].assetId), "deposit: invalid payment asset")
16331544 else false)
1634- then S(eY.payments[0].amount, 1, c, "deposit: invalid payment amount")
1545+ then U(ex.payments[0].amount, 1, c, "deposit: invalid payment amount")
16351546 else false
1636- if ((eM == eM))
1547+ if ((dS == dS))
16371548 then {
1638- let fq = ay(eY.payments[0].assetId)
1639- let bR = bG(fq)
1640- let fr = bH(eY.payments[0].amount, bR, eT, DOWN)
1641- let fs = dS(fq, fr)
1642- let dN = fs._1
1643- let dP = fs._2
1644- let ds = fs._3
1645- let dt = fs._4
1646- let dk = fs._5
1647- let ft = ((dN - ds) - dt)
1648- let dR = S(ft, fo, c, "deposit: less than min")
1649- if ((dR == dR))
1549+ let eQ = aA(ex.payments[0].assetId)
1550+ let bV = bK(eQ)
1551+ let eR = bL(ex.payments[0].amount, bV, er, DOWN)
1552+ let eS = dD(eQ, eR)
1553+ let dz = eS._1
1554+ let dB = eS._2
1555+ let ej = eS._3
1556+ let dh = eS._4
1557+ let di = eS._5
1558+ let cZ = eS._6
1559+ let eT = ((dz - dh) - di)
1560+ let eU = U(eT, eO, c, "deposit: less than min")
1561+ if ((eU == eU))
16501562 then {
1651- let fh = $Tuple10(bz._1, bz._2, (bz._3 + dN), bz._4, bz._5, bz._6, bz._7, bz._8, bz._9, bz._10)
1652- $Tuple2(((((([Reissue(eS, dN, true), ScriptTransfer(eY.caller, ft, eS)] ++ aM(fh)) ++ aS(dP)) ++ aZ(fp, (ds + aY(fp)))) ++ bb(fp, (dt + ba(fp)))) ++ bf(dk)), unit)
1563+ let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1564+ $Tuple2((((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, eT, eq)] ++ aO(eH)) ++ aU(dB)) ++ aX(ej)) ++ bd(eP, (dh + bc(eP)))) ++ bf(eP, (di + be(eP)))) ++ bj(cZ)), unit)
16531565 }
16541566 else throw("Strict value is not equal to itself.")
16551567 }
16561568 else throw("Strict value is not equal to itself.")
16571569 }
16581570 else throw("Strict value is not equal to itself.")
16591571 }
16601572
16611573
16621574
1663-@Callable(eY)
1575+@Callable(ex)
16641576 func withdrawAll () = {
1665- let bz = aK()
1666- let eS = bz._1
1667- let fp = toBase58String(eS)
1668- let eT = bG(fp)
1669- let dz = aO()
1670- let ch = if (if (if (bA())
1671- then ap(size(eY.payments), 1, "withdrawAll: invalid payments size")
1672- else false)
1673- then Y(fp, ay(eY.payments[0].assetId), "withdrawAll: invalid payment asset")
1674- else false)
1675- then S(eY.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
1577+ let bD = aM()
1578+ let eq = bD._1
1579+ let eP = toBase58String(eq)
1580+ let er = bK(eP)
1581+ let dl = aQ()
1582+ let cl = if (if (if (bE())
1583+ then ar(size(ex.payments), 1, "withdrawAll: invalid payments size")
1584+ else false)
1585+ then aa(eP, aA(ex.payments[0].assetId), "withdrawAll: invalid payment asset")
1586+ else false)
1587+ then U(ex.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
16761588 else false
1677- if ((ch == ch))
1678- then {
1679- let fu = eg(eY.payments[0].amount)
1680- let ej = fu._1
1681- let el = fu._2
1682- let dP = fu._3
1683- let fv = cp(dz, el, eY.caller, eT)
1684- let fh = $Tuple10(bz._1, bz._2, (bz._3 - ej), bz._4, bz._5, bz._6, bz._7, bz._8, bz._9, bz._10)
1685- $Tuple2(((([Burn(eS, ej)] ++ fv) ++ aM(fh)) ++ aS(dP)), unit)
1686- }
1687- else throw("Strict value is not equal to itself.")
1688- }
1689-
1690-
1691-
1692-@Callable(eY)
1693-func withdraw (R,fw) = {
1694- let bz = aK()
1695- let eS = bz._1
1696- let fp = toBase58String(eS)
1697- let eT = bG(fp)
1698- let dz = aO()
1699- let ch = if (if (if (if (if (if (if (bA())
1700- then bB()
1701- else false)
1702- then bE()
1703- else false)
1704- then ap(size(eY.payments), 1, "withdraw: invalid payments size")
1705- else false)
1706- then Y(fp, ay(eY.payments[0].assetId), "withdraw: invalid payment asset")
1707- else false)
1708- then S(eY.payments[0].amount, 1, c, "withdraw: invalid payment amount")
1709- else false)
1710- then aw(dz, R, "withdraw: invalid assetId")
1711- else false)
1712- then S(fw, 0, c, "withdraw: invalid minAmount")
1589+ if ((cl == cl))
1590+ then {
1591+ let eV = dU(ex.payments[0].amount)
1592+ let dX = eV._1
1593+ let dZ = eV._2
1594+ let dB = eV._3
1595+ let eW = ct(dl, dZ, ex.caller, er)
1596+ let eH = $Tuple10(bD._1, bD._2, (bD._3 - dX), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1597+ $Tuple2(((([Burn(eq, dX)] ++ eW) ++ aO(eH)) ++ aU(dB)), unit)
1598+ }
1599+ else throw("Strict value is not equal to itself.")
1600+ }
1601+
1602+
1603+
1604+@Callable(ex)
1605+func withdraw (T,eX) = {
1606+ let bD = aM()
1607+ let eq = bD._1
1608+ let eP = toBase58String(eq)
1609+ let er = bK(eP)
1610+ let dl = aQ()
1611+ let cl = if (if (if (if (if (if (if (bE())
1612+ then bF()
1613+ else false)
1614+ then bI()
1615+ else false)
1616+ then ar(size(ex.payments), 1, "withdraw: invalid payments size")
1617+ else false)
1618+ then aa(eP, aA(ex.payments[0].assetId), "withdraw: invalid payment asset")
1619+ else false)
1620+ then U(ex.payments[0].amount, 1, c, "withdraw: invalid payment amount")
1621+ else false)
1622+ then ay(dl, T, "withdraw: invalid assetId")
1623+ else false)
1624+ then U(eX, 0, c, "withdraw: invalid minAmount")
17131625 else false
1714- if ((ch == ch))
1715- then {
1716- let fx = em(R, eY.payments[0].amount)
1717- let fy = fx._1
1718- let eK = fx._2
1719- let ds = fx._3
1720- let dt = fx._4
1721- let dk = fx._5
1722- let fz = ((fy - ds) - dt)
1723- let fA = bG(R)
1724- let fB = bH(fz, eT, fA, DOWN)
1725- let eM = S(fB, fw, c, "withdraw: less than min")
1726- if ((eM == eM))
1626+ if ((cl == cl))
1627+ then {
1628+ let eY = ea(T, ex.payments[0].amount)
1629+ let eZ = eY._1
1630+ let fa = eY._2
1631+ let fb = eY._3
1632+ let dh = eY._4
1633+ let di = eY._5
1634+ let cZ = eY._6
1635+ let fc = ((eZ - dh) - di)
1636+ let fd = bK(T)
1637+ let fe = bL(fc, er, fd, DOWN)
1638+ let dS = U(fe, eX, c, "withdraw: less than min")
1639+ if ((dS == dS))
17271640 then {
1728- let fh = $Tuple10(bz._1, bz._2, (bz._3 - eY.payments[0].amount), bz._4, bz._5, bz._6, bz._7, bz._8, bz._9, bz._10)
1729- $Tuple2(((((([Burn(eS, eY.payments[0].amount), ScriptTransfer(eY.caller, fB, aA(R))] ++ aM(fh)) ++ aS(eK)) ++ aZ(R, (ds + aY(R)))) ++ bb(R, (dt + ba(R)))) ++ bf(dk)), unit)
1641+ let eH = $Tuple10(bD._1, bD._2, (bD._3 - ex.payments[0].amount), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1642+ $Tuple2((((((([Burn(eq, ex.payments[0].amount), ScriptTransfer(ex.caller, fe, aC(T))] ++ aO(eH)) ++ aU(fa)) ++ aX(fb)) ++ bd(T, (dh + bc(T)))) ++ bf(T, (di + be(T)))) ++ bj(cZ)), unit)
17301643 }
17311644 else throw("Strict value is not equal to itself.")
17321645 }
17331646 else throw("Strict value is not equal to itself.")
17341647 }
17351648
17361649
17371650
1738-@Callable(eY)
1739-func swap (fC,fw) = {
1740- let bz = aK()
1741- let eS = bz._1
1742- let eT = bG(toBase58String(eS))
1743- let dz = aO()
1744- let fD = ay(eY.payments[0].assetId)
1745- let fE = bH(eY.payments[0].amount, bG(fD), eT, DOWN)
1746- let fF = valueOrErrorMessage(indexOf(dz, fD), "swap: invalid source asset")
1747- if ((fF == fF))
1748- then {
1749- let er = valueOrErrorMessage(indexOf(dz, fC), "swap: invalid target asset")
1750- if ((er == er))
1651+@Callable(ex)
1652+func swap (ff,eX) = {
1653+ let bD = aM()
1654+ let eq = bD._1
1655+ let er = bK(toBase58String(eq))
1656+ let dl = aQ()
1657+ let fg = aA(ex.payments[0].assetId)
1658+ let fh = bL(ex.payments[0].amount, bK(fg), er, DOWN)
1659+ let dL = valueOrErrorMessage(indexOf(dl, fg), "swap: invalid source asset")
1660+ if ((dL == dL))
1661+ then {
1662+ let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset")
1663+ if ((ee == ee))
17511664 then {
1752- let ch = if (if (if (if (if (if (bA())
1753- then bB()
1665+ let cl = if (if (if (if (if (if (bE())
1666+ then bF()
17541667 else false)
1755- then bE()
1668+ then bI()
17561669 else false)
1757- then S(fw, 0, c, "swap: invalid min target amount")
1670+ then U(eX, 0, c, "swap: invalid min target amount")
17581671 else false)
1759- then S(fE, 1, c, "swap: invalid source amount")
1672+ then U(fh, 1, c, "swap: invalid source amount")
17601673 else false)
1761- then ab(fD, fC, "swap: same assets")
1674+ then ad(fg, ff, "swap: same assets")
17621675 else false)
1763- then ap(size(eY.payments), 1, "swap: invalid payments size")
1676+ then ar(size(ex.payments), 1, "swap: invalid payments size")
17641677 else false
1765- if ((ch == ch))
1678+ if ((cl == cl))
17661679 then {
1767- let fG = eO(fF, er, fE)
1768- let fy = fG._1
1769- let eK = fG._2
1770- let ds = fG._3
1771- let dt = fG._4
1772- let dk = fG._5
1773- let fz = ((fy - ds) - dt)
1774- let fA = bG(fC)
1775- let fB = bH(fz, eT, fA, DOWN)
1776- let eM = S(fB, fw, c, "swap: less than min")
1777- if ((eM == eM))
1778- then $Tuple2((((([ScriptTransfer(eY.caller, fB, aA(fC))] ++ aS(eK)) ++ aZ(fC, (ds + aY(fC)))) ++ bb(fC, (dt + ba(fC)))) ++ bf(dk)), unit)
1680+ let fi = em(dL, ee, fh)
1681+ let eZ = fi._1
1682+ let fa = fi._2
1683+ let fb = fi._3
1684+ let dh = fi._4
1685+ let di = fi._5
1686+ let cZ = fi._6
1687+ let fc = ((eZ - dh) - di)
1688+ let fd = bK(ff)
1689+ let fe = bL(fc, er, fd, DOWN)
1690+ let dS = U(fe, eX, c, "swap: less than min")
1691+ if ((dS == dS))
1692+ then $Tuple2(((((([ScriptTransfer(ex.caller, fe, aC(ff))] ++ aU(fa)) ++ aX(fb)) ++ bd(ff, (dh + bc(ff)))) ++ bf(ff, (di + be(ff)))) ++ bj(cZ)), unit)
17791693 else throw("Strict value is not equal to itself.")
17801694 }
17811695 else throw("Strict value is not equal to itself.")
17821696 }
17831697 else throw("Strict value is not equal to itself.")
17841698 }
17851699 else throw("Strict value is not equal to itself.")
17861700 }
17871701
17881702
17891703
1790-@Callable(eY)
1791-func getDepositAll (en) = {
1792- let ch = S(en, 1, c, "getDepositAll: invalid amount")
1793- if ((ch == ch))
1794- then {
1795- let fH = du(en)
1796- let dN = fH._1
1797- let dJ = fH._2
1798- let dP = fH._3
1799- $Tuple2(nil, $Tuple2(dN, dJ))
1800- }
1801- else throw("Strict value is not equal to itself.")
1802- }
1803-
1804-
1805-
1806-@Callable(eY)
1807-func getDeposit (R,bI) = {
1808- let ch = if (aw(aO(), R, "getDeposit: invalid asset"))
1809- then S(bI, 1, c, "getDeposit: invalid amount")
1704+@Callable(ex)
1705+func getDepositAll (cy) = {
1706+ let cl = U(cy, 1, c, "getDepositAll: invalid amount")
1707+ if ((cl == cl))
1708+ then {
1709+ let fj = dj(cy)
1710+ let dz = fj._1
1711+ let dv = fj._2
1712+ let dB = fj._3
1713+ $Tuple2(nil, $Tuple2(dz, dv))
1714+ }
1715+ else throw("Strict value is not equal to itself.")
1716+ }
1717+
1718+
1719+
1720+@Callable(ex)
1721+func getDeposit (T,bM) = {
1722+ let cl = if (ay(aQ(), T, "getDeposit: invalid asset"))
1723+ then U(bM, 1, c, "getDeposit: invalid amount")
18101724 else false
1811- if ((ch == ch))
1812- then {
1813- let bz = aK()
1814- let eS = bz._1
1815- let eT = bG(toBase58String(eS))
1816- let bR = bG(R)
1817- let fr = bH(bI, bR, eT, DOWN)
1818- let fI = dS(R, fr)
1819- let dN = fI._1
1820- let dP = fI._2
1821- let ds = fI._3
1822- let dt = fI._4
1823- let dk = fI._5
1824- let ft = ((dN - ds) - dt)
1825- $Tuple2(nil, ft)
1826- }
1827- else throw("Strict value is not equal to itself.")
1828- }
1829-
1830-
1831-
1832-@Callable(eY)
1833-func getWithdrawAll (en) = {
1834- let ch = S(en, 0, c, "getWithdrawAll: invalid amount")
1835- if ((ch == ch))
1836- then {
1837- let fJ = eg(en)
1838- let ej = fJ._1
1839- let fK = fJ._2
1840- let dP = fJ._3
1841- $Tuple2(nil, fK)
1842- }
1843- else throw("Strict value is not equal to itself.")
1844- }
1845-
1846-
1847-
1848-@Callable(eY)
1849-func getWithdraw (R,bI) = {
1850- let ch = if (aw(aO(), R, "getWithdraw: invalid asset"))
1851- then S(bI, 1, c, "getWithdraw: invalid amount")
1725+ if ((cl == cl))
1726+ then {
1727+ let bD = aM()
1728+ let eq = bD._1
1729+ let er = bK(toBase58String(eq))
1730+ let bV = bK(T)
1731+ let eR = bL(bM, bV, er, DOWN)
1732+ let fk = dD(T, eR)
1733+ let dz = fk._1
1734+ let dB = fk._2
1735+ let ej = fk._3
1736+ let dh = fk._4
1737+ let di = fk._5
1738+ let cZ = fk._6
1739+ let eT = ((dz - dh) - di)
1740+ $Tuple2(nil, eT)
1741+ }
1742+ else throw("Strict value is not equal to itself.")
1743+ }
1744+
1745+
1746+
1747+@Callable(ex)
1748+func getWithdrawAll (cy) = {
1749+ let cl = U(cy, 0, c, "getWithdrawAll: invalid amount")
1750+ if ((cl == cl))
1751+ then {
1752+ let fl = dU(cy)
1753+ let dX = fl._1
1754+ let fm = fl._2
1755+ let dB = fl._3
1756+ $Tuple2(nil, fm)
1757+ }
1758+ else throw("Strict value is not equal to itself.")
1759+ }
1760+
1761+
1762+
1763+@Callable(ex)
1764+func getWithdraw (T,bM) = {
1765+ let cl = if (ay(aQ(), T, "getWithdraw: invalid asset"))
1766+ then U(bM, 1, c, "getWithdraw: invalid amount")
18521767 else false
1853- if ((ch == ch))
1854- then {
1855- let bz = aK()
1856- let eS = bz._1
1857- let eT = bG(toBase58String(eS))
1858- let fL = em(R, bI)
1859- let fy = fL._1
1860- let dP = fL._2
1861- let ds = fL._3
1862- let dt = fL._4
1863- let dk = fL._5
1864- let fz = ((fy - ds) - dt)
1865- let fA = bG(R)
1866- let fB = bH(fz, eT, fA, DOWN)
1867- $Tuple2(nil, fB)
1868- }
1869- else throw("Strict value is not equal to itself.")
1870- }
1871-
1872-
1873-
1874-@Callable(eY)
1875-func getSwap (fM,fC,eR) = {
1876- let bz = aK()
1877- let eS = bz._1
1878- let eT = bG(toBase58String(eS))
1879- let dz = aO()
1880- let fF = valueOrErrorMessage(indexOf(dz, fM), "swap: invalid source asset")
1881- if ((fF == fF))
1882- then {
1883- let er = valueOrErrorMessage(indexOf(dz, fC), "swap: invalid target asset")
1884- if ((er == er))
1768+ if ((cl == cl))
1769+ then {
1770+ let bD = aM()
1771+ let eq = bD._1
1772+ let er = bK(toBase58String(eq))
1773+ let fn = ea(T, bM)
1774+ let eZ = fn._1
1775+ let dB = fn._2
1776+ let ej = fn._3
1777+ let dh = fn._4
1778+ let di = fn._5
1779+ let cZ = fn._6
1780+ let fc = ((eZ - dh) - di)
1781+ let fd = bK(T)
1782+ let fe = bL(fc, er, fd, DOWN)
1783+ $Tuple2(nil, fe)
1784+ }
1785+ else throw("Strict value is not equal to itself.")
1786+ }
1787+
1788+
1789+
1790+@Callable(ex)
1791+func getSwap (fo,ff,ep) = {
1792+ let bD = aM()
1793+ let eq = bD._1
1794+ let er = bK(toBase58String(eq))
1795+ let dl = aQ()
1796+ let dL = valueOrErrorMessage(indexOf(dl, fo), "swap: invalid source asset")
1797+ if ((dL == dL))
1798+ then {
1799+ let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset")
1800+ if ((ee == ee))
18851801 then {
1886- let fE = bH(eR, bG(fM), eT, DOWN)
1887- let ch = if (S(fE, 1, c, "swap: invalid source amount"))
1888- then ab(fM, fC, "swap: same assets")
1802+ let fh = bL(ep, bK(fo), er, DOWN)
1803+ let cl = if (U(fh, 1, c, "swap: invalid source amount"))
1804+ then ad(fo, ff, "swap: same assets")
18891805 else false
1890- if ((ch == ch))
1806+ if ((cl == cl))
18911807 then {
1892- let fN = eO(fF, er, fE)
1893- let fy = fN._1
1894- let eK = fN._2
1895- let ds = fN._3
1896- let dt = fN._4
1897- let dk = fN._5
1898- let fz = ((fy - ds) - dt)
1899- let fA = bG(fC)
1900- let fB = bH(fz, eT, fA, DOWN)
1901- $Tuple2(nil, fB)
1808+ let fp = em(dL, ee, fh)
1809+ let eZ = fp._1
1810+ let fa = fp._2
1811+ let fb = fp._3
1812+ let dh = fp._4
1813+ let di = fp._5
1814+ let cZ = fp._6
1815+ let fc = ((eZ - dh) - di)
1816+ let fd = bK(ff)
1817+ let fe = bL(fc, er, fd, DOWN)
1818+ $Tuple2(nil, fe)
19021819 }
19031820 else throw("Strict value is not equal to itself.")
19041821 }
19051822 else throw("Strict value is not equal to itself.")
19061823 }
19071824 else throw("Strict value is not equal to itself.")
19081825 }
19091826
19101827
19111828
1912-@Callable(eY)
1913-func getClaim (bh) = {
1914- let fO = if ((size(bh) > 0))
1915- then valueOrErrorMessage(addressFromString(bh), "getClaim: invalid user")
1916- else eY.caller
1917- let fP = cX(fO)
1918- let fQ = fP._1
1919- let cZ = fP._2
1920- $Tuple2(nil, cZ)
1921- }
1922-
1923-
1924-
1925-@Callable(eY)
1926-func getUtilFunc () = {
1927- let bz = aK()
1928- let dv = bz._3
1929- let dw = bz._7
1930- let dx = bz._8
1931- let dy = bz._9
1932- let fR = aQ()
1933- let dP = fR._1
1934- let dQ = fR._2
1935- let fS = aU()
1936- let dB = fS._1
1937- let dC = fS._2
1938- let dZ = cA(dP, dQ, dB, dC, dw, dx, dy)
1939- let eB = (dQ - dZ)
1940- $Tuple2(nil, $Tuple2(eB, dv))
1941- }
1942-
1943-
1944-
1945-@Callable(eY)
1946-func getFeeFunc () = {
1947- let bz = aK()
1948- let dw = bz._7
1949- let dx = bz._8
1950- let dy = bz._9
1951- let fT = aQ()
1952- let dP = fT._1
1953- let dQ = fT._2
1954- let fU = aU()
1955- let dB = fU._1
1956- let dC = fU._2
1957- let dZ = cA(dP, dQ, dB, dC, dw, dx, dy)
1958- $Tuple2(nil, dZ)
1959- }
1960-
1961-
1962-
1963-@Callable(eY)
1964-func checkpoint (bh) = {
1965- let ch = if (bA())
1966- then bB()
1829+@Callable(ex)
1830+func getClaim (bl) = {
1831+ let fq = if ((size(bl) > 0))
1832+ then valueOrErrorMessage(addressFromString(bl), "getClaim: invalid user")
1833+ else ex.caller
1834+ let fr = cM(fq)
1835+ let fs = fr._1
1836+ let cO = fr._2
1837+ $Tuple2(nil, cO)
1838+ }
1839+
1840+
1841+
1842+@Callable(ex)
1843+func getAssetId () = {
1844+ let bD = aM()
1845+ let eq = bD._1
1846+ $Tuple2(nil, toBase58String(eq))
1847+ }
1848+
1849+
1850+
1851+@Callable(ex)
1852+func getDecimals () = {
1853+ let bD = aM()
1854+ let eq = bD._1
1855+ let er = bK(toBase58String(eq))
1856+ $Tuple2(nil, er)
1857+ }
1858+
1859+
1860+
1861+@Callable(ex)
1862+func checkpoint (bl) = {
1863+ let cl = if (bE())
1864+ then bF()
19671865 else false
1968- if ((ch == ch))
1969- then {
1970- let fO = if ((size(bh) > 0))
1971- then valueOrErrorMessage(addressFromString(bh), "checkpoint: invalid user")
1972- else eY.caller
1973- cX(fO)
1974- }
1975- else throw("Strict value is not equal to itself.")
1976- }
1977-
1978-
1979-
1980-@Callable(eY)
1866+ if ((cl == cl))
1867+ then {
1868+ let fq = if ((size(bl) > 0))
1869+ then valueOrErrorMessage(addressFromString(bl), "checkpoint: invalid user")
1870+ else ex.caller
1871+ cM(fq)
1872+ }
1873+ else throw("Strict value is not equal to itself.")
1874+ }
1875+
1876+
1877+
1878+@Callable(ex)
19811879 func stake () = {
1982- let ch = if (bA())
1983- then bB()
1880+ let cl = if (bE())
1881+ then bF()
19841882 else false
1985- if ((ch == ch))
1986- then {
1987- let bz = aK()
1988- let fp = ay(bz._1)
1989- let eM = if (if (ap(size(eY.payments), 1, "stake: invalid payments size"))
1990- then Y(fp, ay(eY.payments[0].assetId), "stake: invalid payment asset")
1883+ if ((cl == cl))
1884+ then {
1885+ let bD = aM()
1886+ let eP = aA(bD._1)
1887+ let dS = if (if (ar(size(ex.payments), 1, "stake: invalid payments size"))
1888+ then aa(eP, aA(ex.payments[0].assetId), "stake: invalid payment asset")
19911889 else false)
1992- then S(eY.payments[0].amount, 0, c, "stake: invalid payment amount")
1890+ then U(ex.payments[0].amount, 0, c, "stake: invalid payment amount")
19931891 else false
1994- if ((eM == eM))
1892+ if ((dS == dS))
19951893 then {
1996- let fV = cX(eY.caller)
1997- let fQ = fV._1
1998- let cZ = fV._2
1999- $Tuple2(((fQ ++ bk(eY.caller, (bj(eY.caller) + eY.payments[0].amount))) ++ bm((bl() + eY.payments[0].amount))), unit)
1894+ let ft = cM(ex.caller)
1895+ let fs = ft._1
1896+ let cO = ft._2
1897+ $Tuple2(((fs ++ bo(ex.caller, (bn(ex.caller) + ex.payments[0].amount))) ++ bq((bp() + ex.payments[0].amount))), unit)
20001898 }
20011899 else throw("Strict value is not equal to itself.")
20021900 }
20031901 else throw("Strict value is not equal to itself.")
20041902 }
20051903
20061904
20071905
2008-@Callable(eY)
2009-func unstake (bI) = {
2010- let ch = if (bA())
2011- then bB()
1906+@Callable(ex)
1907+func unstake (bM) = {
1908+ let cl = if (bE())
1909+ then bF()
20121910 else false
2013- if ((ch == ch))
2014- then {
2015- let bz = aK()
2016- let eS = bz._1
2017- let cY = bj(eY.caller)
2018- let eM = S(bI, 0, cY, "unstake: invalid amount")
2019- if ((eM == eM))
1911+ if ((cl == cl))
1912+ then {
1913+ let bD = aM()
1914+ let eq = bD._1
1915+ let cN = bn(ex.caller)
1916+ let dS = U(bM, 0, cN, "unstake: invalid amount")
1917+ if ((dS == dS))
20201918 then {
2021- let fW = cX(eY.caller)
2022- let fQ = fW._1
2023- let cZ = fW._2
2024- $Tuple2(((([ScriptTransfer(eY.caller, bI, eS)] ++ fQ) ++ bk(eY.caller, (cY - bI))) ++ bm((bl() - bI))), unit)
1919+ let fu = cM(ex.caller)
1920+ let fs = fu._1
1921+ let cO = fu._2
1922+ $Tuple2(((([ScriptTransfer(ex.caller, bM, eq)] ++ fs) ++ bo(ex.caller, (cN - bM))) ++ bq((bp() - bM))), unit)
20251923 }
20261924 else throw("Strict value is not equal to itself.")
20271925 }
20281926 else throw("Strict value is not equal to itself.")
20291927 }
20301928
20311929
20321930
2033-@Callable(eY)
2034-func claim (bh) = {
2035- let ch = if (bA())
2036- then bB()
1931+@Callable(ex)
1932+func claim (bl) = {
1933+ let cl = if (bE())
1934+ then bF()
20371935 else false
2038- if ((ch == ch))
2039- then {
2040- let fO = if ((size(bh) > 0))
2041- then valueOrErrorMessage(addressFromString(bh), "claim: invalid user")
2042- else eY.caller
2043- let bz = aK()
2044- let eS = bz._1
2045- let fp = ay(eS)
2046- let dz = [fp, aO()]
2047- let fX = (size(dz) - 1)
2048- let cY = bj(fO)
2049- let fY = cX(fO)
2050- let fQ = fY._1
2051- let cZ = fY._2
2052- func ad (ae,fZ) = {
2053- let bZ = ae._1
2054- if (if ((fX >= bZ))
2055- then (fZ > 0)
1936+ if ((cl == cl))
1937+ then {
1938+ let fq = if ((size(bl) > 0))
1939+ then valueOrErrorMessage(addressFromString(bl), "claim: invalid user")
1940+ else ex.caller
1941+ let bD = aM()
1942+ let eq = bD._1
1943+ let eP = aA(eq)
1944+ let dl = [eP, aQ()]
1945+ let cL = (size(dl) - 1)
1946+ let fv = cM(fq)
1947+ let fs = fv._1
1948+ let cO = fv._2
1949+ func af (ag,fw) = {
1950+ let cd = ag._1
1951+ if (if ((cL >= cd))
1952+ then (fw > 0)
20561953 else false)
20571954 then {
2058- let ga = dz[bZ]
2059- $Tuple3((bZ + 1), (ae._2 :+ 0), (ae._3 :+ ScriptTransfer(fO, fZ, aA(ga))))
1955+ let fx = dl[cd]
1956+ $Tuple3((cd + 1), (ag._2 :+ 0), (ag._3 :+ ScriptTransfer(fq, fw, aC(fx))))
20601957 }
2061- else $Tuple3((bZ + 1), (ae._2 :+ fZ), ae._3)
1958+ else $Tuple3((cd + 1), (ag._2 :+ fw), ag._3)
20621959 }
20631960
2064- let gb = {
2065- let ag = cZ
2066- let ah = size(ag)
2067- let ai = $Tuple3(0, nil, nil)
2068- func aj (ak,al) = if ((al >= ah))
2069- then ak
2070- else ad(ak, ag[al])
2071-
2072- func am (ak,al) = if ((al >= ah))
2073- then ak
1961+ let fy = {
1962+ let ai = cO
1963+ let aj = size(ai)
1964+ let ak = $Tuple3(0, nil, nil)
1965+ func al (am,an) = if ((an >= aj))
1966+ then am
1967+ else af(am, ai[an])
1968+
1969+ func ao (am,an) = if ((an >= aj))
1970+ then am
20741971 else throw("List size exceeds 11")
20751972
2076- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
1973+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
20771974 }
2078- let de = gb._1
2079- let gc = gb._2
2080- let gd = gb._3
2081- $Tuple2(((gd ++ removeByIndex(fQ, 0)) ++ bo(fO, gc)), unit)
2082- }
2083- else throw("Strict value is not equal to itself.")
2084- }
2085-
2086-
2087-
2088-@Callable(eY)
1975+ let cT = fy._1
1976+ let fz = fy._2
1977+ let fA = fy._3
1978+ $Tuple2(((fA ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit)
1979+ }
1980+ else throw("Strict value is not equal to itself.")
1981+ }
1982+
1983+
1984+
1985+@Callable(ex)
1986+func claimAll (bl) = {
1987+ let cl = if (bE())
1988+ then bF()
1989+ else false
1990+ if ((cl == cl))
1991+ then {
1992+ let fq = if ((size(bl) > 0))
1993+ then valueOrErrorMessage(addressFromString(bl), "claimAll: invalid user")
1994+ else ex.caller
1995+ let bD = aM()
1996+ let eq = bD._1
1997+ let eP = aA(eq)
1998+ let dl = [eP, aQ()]
1999+ let cL = (size(dl) - 1)
2000+ let fB = aS()
2001+ let dB = fB._1
2002+ let dC = fB._2
2003+ let fC = cM(fq)
2004+ let fs = fC._1
2005+ let cO = fC._2
2006+ func af (ag,fw) = {
2007+ let cd = ag._1
2008+ if ((cd == 0))
2009+ then $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, (ag._5 + fw))
2010+ else if (if ((cd > 0))
2011+ then (cL >= cd)
2012+ else false)
2013+ then {
2014+ let fD = (cd - 1)
2015+ let aT = dB[fD]
2016+ $Tuple5((cd + 1), (ag._2 :+ 0), (ag._3 :+ (aT + fw)), (ag._4 + fw), ag._5)
2017+ }
2018+ else $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, ag._5)
2019+ }
2020+
2021+ let fE = {
2022+ let ai = cO
2023+ let aj = size(ai)
2024+ let ak = $Tuple5(0, nil, nil, 0, 0)
2025+ func al (am,an) = if ((an >= aj))
2026+ then am
2027+ else af(am, ai[an])
2028+
2029+ func ao (am,an) = if ((an >= aj))
2030+ then am
2031+ else throw("List size exceeds 11")
2032+
2033+ ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
2034+ }
2035+ let cT = fE._1
2036+ let fz = fE._2
2037+ let fF = fE._3
2038+ let dz = fE._4
2039+ let fG = fE._5
2040+ let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2041+ $Tuple2((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, (dz + fG), eq)] ++ aO(eH)) ++ aU(fF)) ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit)
2042+ }
2043+ else throw("Strict value is not equal to itself.")
2044+ }
2045+
2046+
2047+
2048+@Callable(ex)
2049+func updatePoolFees (dd,de) = {
2050+ let cl = if (if (if (bz(ex.caller))
2051+ then bE()
2052+ else false)
2053+ then U(dd, 0, d, "updatePoolFees: invalid lp fee")
2054+ else false)
2055+ then U(de, 0, d, "updatePoolFees: invalid protocol fee")
2056+ else false
2057+ if ((cl == cl))
2058+ then {
2059+ let bD = aM()
2060+ let eH = $Tuple10(bD._1, bD._2, bD._3, dd, de, bD._6, bD._7, bD._8, bD._9, bD._10)
2061+ $Tuple2(aO(eH), unit)
2062+ }
2063+ else throw("Strict value is not equal to itself.")
2064+ }
2065+
2066+
2067+
2068+@Callable(ex)
2069+func updatePoolParams (eB,cz,cA,eC) = {
2070+ let cl = if (if (if (if (if (bz(ex.caller))
2071+ then bE()
2072+ else false)
2073+ then U(eB, 0, e, "updatePoolParams: invalid maxAllocationAmplifier")
2074+ else false)
2075+ then U(cz, 0, eB, "updatePoolParams: invalid weightAmplifier")
2076+ else false)
2077+ then U(cA, 0, c, "updatePoolParams: invalid disbalanceCoeff")
2078+ else false)
2079+ then U(eC, 0, c, "updatePoolParams: invalid feeMaxRate")
2080+ else false
2081+ if ((cl == cl))
2082+ then {
2083+ let bD = aM()
2084+ let eH = $Tuple10(bD._1, bD._2, bD._3, bD._4, bD._5, eB, cz, cA, eC, bD._10)
2085+ $Tuple2(aO(eH), unit)
2086+ }
2087+ else throw("Strict value is not equal to itself.")
2088+ }
2089+
2090+
2091+
2092+@Callable(ex)
2093+func migrateBalances () = {
2094+ let cl = if (bz(ex.caller))
2095+ then bE()
2096+ else false
2097+ if ((cl == cl))
2098+ then {
2099+ let bD = aM()
2100+ let fH = bD._3
2101+ let fI = aS()
2102+ let dB = fI._1
2103+ let dC = fI._2
2104+ let fJ = max([(dC - fH), 0])
2105+ let eH = $Tuple10(bD._1, bD._2, (fH + fJ), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2106+ $Tuple2(aO(eH), unit)
2107+ }
2108+ else throw("Strict value is not equal to itself.")
2109+ }
2110+
2111+
2112+
2113+@Callable(ex)
20892114 func pause () = {
2090- let ch = if (if (bD(eY.caller))
2091- then bA()
2092- else false)
2093- then bB()
2115+ let cl = if (if (bH(ex.caller))
2116+ then bE()
2117+ else false)
2118+ then bF()
20942119 else false
2095- if ((ch == ch))
2096- then $Tuple2(aC(true), unit)
2097- else throw("Strict value is not equal to itself.")
2098- }
2099-
2100-
2101-
2102-@Callable(eY)
2120+ if ((cl == cl))
2121+ then $Tuple2(aE(true), unit)
2122+ else throw("Strict value is not equal to itself.")
2123+ }
2124+
2125+
2126+
2127+@Callable(ex)
21032128 func unpause () = {
2104- let ch = if (if (bv(eY.caller))
2105- then bA()
2106- else false)
2107- then bC()
2129+ let cl = if (if (bz(ex.caller))
2130+ then bE()
2131+ else false)
2132+ then bG()
21082133 else false
2109- if ((ch == ch))
2110- then $Tuple2(aC(false), unit)
2111- else throw("Strict value is not equal to itself.")
2112- }
2113-
2114-
2115-
2116-@Callable(eY)
2117-func updatePauser (aG) = {
2118- let ch = if (if (bv(eY.caller))
2119- then bA()
2120- else false)
2121- then L(aG, "updatePauser: invalid pauser")
2134+ if ((cl == cl))
2135+ then $Tuple2(aE(false), unit)
2136+ else throw("Strict value is not equal to itself.")
2137+ }
2138+
2139+
2140+
2141+@Callable(ex)
2142+func updatePauser (aI) = {
2143+ let cl = if (if (bz(ex.caller))
2144+ then bE()
2145+ else false)
2146+ then N(aI, "updatePauser: invalid pauser")
21222147 else false
2123- if ((ch == ch))
2124- then $Tuple2(aF(addressFromStringValue(aG)), unit)
2125- else throw("Strict value is not equal to itself.")
2126- }
2127-
2128-
2129-
2130-@Callable(eY)
2131-func updateWatchdog (br,bu) = {
2132- let ch = if (if (if (bv(eY.caller))
2133- then bA()
2134- else false)
2135- then L(br, "updateWatchdog: invalid watchdog")
2136- else false)
2137- then S(bu, 0, c, "updateWatchdog: invalid offset")
2148+ if ((cl == cl))
2149+ then $Tuple2(aH(addressFromStringValue(aI)), unit)
2150+ else throw("Strict value is not equal to itself.")
2151+ }
2152+
2153+
2154+
2155+@Callable(ex)
2156+func updateWatchdog (bv,by) = {
2157+ let cl = if (if (if (bz(ex.caller))
2158+ then bE()
2159+ else false)
2160+ then N(bv, "updateWatchdog: invalid watchdog")
2161+ else false)
2162+ then U(by, 0, c, "updateWatchdog: invalid offset")
21382163 else false
2139- if ((ch == ch))
2140- then $Tuple2((bq(addressFromStringValue(br)) ++ bt(bu)), unit)
2141- else throw("Strict value is not equal to itself.")
2142- }
2143-
2144-
2145-
2146-@Callable(eY)
2147-func setMultisig (aJ) = {
2148- let ch = if (bv(eY.caller))
2149- then L(aJ, "setMultisig: invalid multisig")
2164+ if ((cl == cl))
2165+ then $Tuple2((bu(addressFromStringValue(bv)) ++ bx(by)), unit)
2166+ else throw("Strict value is not equal to itself.")
2167+ }
2168+
2169+
2170+
2171+@Callable(ex)
2172+func setMultisig (aL) = {
2173+ let cl = if (bz(ex.caller))
2174+ then N(aL, "setMultisig: invalid multisig")
21502175 else false
2151- if ((ch == ch))
2152- then $Tuple2(aI(addressFromStringValue(aJ)), unit)
2153- else throw("Strict value is not equal to itself.")
2154- }
2155-
2156-
2157-@Verifier(ge)
2158-func gf () = {
2159- let O = getString(s)
2160- if ($isInstanceOf(O, "String"))
2161- then {
2162- let gg = O
2163- valueOrElse(getBoolean(addressFromStringValue(gg), makeString([t, toString(this), toBase58String(ge.id)], a)), false)
2164- }
2165- else sigVerify(ge.bodyBytes, ge.proofs[0], ge.senderPublicKey)
2176+ if ((cl == cl))
2177+ then $Tuple2(aK(addressFromStringValue(aL)), unit)
2178+ else throw("Strict value is not equal to itself.")
2179+ }
2180+
2181+
2182+@Verifier(fK)
2183+func fL () = {
2184+ let Q = getString(t)
2185+ if ($isInstanceOf(Q, "String"))
2186+ then {
2187+ let fM = Q
2188+ valueOrElse(getBoolean(addressFromStringValue(fM), makeString([u, toString(this), toBase58String(fK.id)], a)), false)
2189+ }
2190+ else sigVerify(fK.bodyBytes, fK.proofs[0], fK.senderPublicKey)
21662191 }
21672192

github/deemru/w8io/026f985 
477.25 ms