tx · 45EcZ4Gs9aJD2wdXAf97tZHLipSGDFcahParJbc6iX5Q

3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt:  -0.06200000 Waves

2023.08.10 15:30 [2704489] smart account 3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt > SELF 0.00000000 Waves

{ "type": 13, "id": "45EcZ4Gs9aJD2wdXAf97tZHLipSGDFcahParJbc6iX5Q", "fee": 6200000, "feeAssetId": null, "timestamp": 1691670379489, "version": 2, "chainId": 84, "sender": "3Mw8ZcMK47vENHqhYYhCZTCPDXhff6ZQVwt", "senderPublicKey": "3fNYAZ872D7hsaic3sPDZd5uAk59U5CiWiA153FUZ6Qv", "proofs": [ "5nBCEuWobsj2TP34WJ3vGiJhENRwZHBWVt3T2EtPSraxgNyCcFi2wubyG1wEL6tMacMurqKcc2Z6KYDNJDXgmkwx" ], "script": "base64:BgJxCAISEAoOGBgBAQgIAQEBAQEIAQgSAwoBARIDCgEBEgASBAoCCAESBAoCCAESAwoBARIECgIIARIDCgEBEgQKAggBEgUKAwgIARIDCgEIEgASABIDCgEIEgASAwoBARIDCgEIEgASABIDCgEIEgMKAQhzAANTRVACAl9fAAVXQVZFUwIFd2F2ZXMAB01BWF9JTlQA//////////9/AAdNQVhfRkVFAMCEPQANTUFYX0FNUExJRklFUgDAhD0AFE1BWF9XRUlHSFRfQU1QTElGSUVSAMCEPQAKTUFYX1dFSUdIVADAhD0AFFNMSVBQQUdFX1JBVEVfRkFDVE9SAMCEPQAPRkVFX1JBVEVfRkFDVE9SAMCEPQALUkFURV9GQUNUT1IAwIQ9AA5QRVJDRU5UX0ZBQ1RPUgkAtgIBAICAkLu61q3wDQAQWkVST19JTlRfTElTVF8xMAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAFA25pbAAQWkVST19JTlRfTElTVF8xMQkAzQgCBRBaRVJPX0lOVF9MSVNUXzEwAAAAC1pFUk9fQklHSU5UCQC2AgEAAAATWkVST19CSUdJTlRfTElTVF8xMQkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAUDbmlsAAxJTlRfREVDSU1BTFMACAAPQklHSU5UX0RFQ0lNQUxTABIAB0xJU1RfNjQJAL0JAgJ/MF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMAIBXwAMS0VZX01VTFRJU0lHAghNVUxUSVNJRwAKS0VZX1NUQVRVUwIGU1RBVFVTAApLRVlfUEFVU0VEAgZQQVVTRUQACktFWV9QQVVTRVICBlBBVVNFUgALS0VZX1NUT1JBR0UCB1NUT1JBR0UACktFWV9BU1NFVFMCBkFTU0VUUwASS0VZX0FTU0VUX0JBTEFOQ0VTAg5BU1NFVF9CQUxBTkNFUwARS0VZX0FTU0VUX1dFSUdIVFMCDUFTU0VUX1dFSUdIVFMACktFWV9MUF9GRUUCBkxQX0ZFRQAQS0VZX1BST1RPQ09MX0ZFRQIMUFJPVE9DT0xfRkVFAA1LRVlfUFJFQ0lTSU9OAglQUkVDSVNJT04AFEtFWV9TSUdNQV9GRUVfUEVSX0xQAhBTSUdNQV9GRUVfUEVSX0xQABlLRVlfVVNFUl9TSUdNQV9GRUVfUEVSX0xQAhVVU0VSX1NJR01BX0ZFRV9QRVJfTFAAC0tFWV9VU0VSX0xQAgdVU0VSX0xQAAxLRVlfVE9UQUxfTFACCFRPVEFMX0xQABBLRVlfVVNFUl9QUk9GSVRTAgxVU0VSX1BST0ZJVFMBEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQ5fdmFsaWRhdGVBc3NldAIIYXNzZXRJZF8EZXJyXwMJAAACBQhhc3NldElkXwUFV0FWRVMGBAckbWF0Y2gwCQDsBwEJANkEAQUIYXNzZXRJZF8DCQABAgUHJG1hdGNoMAIFQXNzZXQEAWEFByRtYXRjaDAGCQACAQUEZXJyXwEMX3ZhbGlkYXRlSW50BAR2YWxfDmxvd2VyQm91bmRhcnlfDnVwcGVyQm91bmRhcnlfBGVycl8DAwkAZgIFDmxvd2VyQm91bmRhcnlfBQR2YWxfBgkAZgIFBHZhbF8FDnVwcGVyQm91bmRhcnlfCQACAQUEZXJyXwYBDV92YWxpZGF0ZUJvb2wDBHZhbF8HdGFyZ2V0XwRlcnJfAwkBAiE9AgUEdmFsXwUHdGFyZ2V0XwkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdOb3RFcQMFdmFsMV8FdmFsMl8EZXJyXwMJAAACBQV2YWwxXwUFdmFsMl8JAAIBBQRlcnJfBgEQX3ZhbGlkYXRlSW50TGlzdAQEdmFsXw5sb3dlckJvdW5kYXJ5Xw51cHBlckJvdW5kYXJ5XwRlcnJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAckbWF0Y2gwCQC2CQEFBGVsZW0DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwAwUDYWNjCQEMX3ZhbGlkYXRlSW50BAUBYQUObG93ZXJCb3VuZGFyeV8FDnVwcGVyQm91bmRhcnlfBQRlcnJfBwkAAgEFBGVycl8KAAIkbAUEdmFsXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAGCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEPX3ZhbGlkYXRlQXNzZXRzAgdhc3NldHNfBGVycl8KAQhmb2xkRnVuYwIDYWNjBGVsZW0DBQNhY2MJAQ5fdmFsaWRhdGVBc3NldAIFBGVsZW0FBGVycl8HCgACJGwFB2Fzc2V0c18KAAIkcwkAkAMBBQIkbAoABSRhY2MwBgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEl92YWxpZGF0ZUludEVxdWFscwMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GARJfdmFsaWRhdGVUb2tlbk5hbWUCBHZhbF8EZXJyXwMDCQBmAgAECQCxAgEFBHZhbF8GCQBmAgkAsQIBBQR2YWxfABAJAAIBBQRlcnJfBgETX3ZhbGlkYXRlVG9rZW5EZXNjcgIEdmFsXwRlcnJfAwkAZgIJALECAQUEdmFsXwDoBwkAAgEFBGVycl8GARFfdmFsaWRhdGVEZWNpbWFscwIEdmFsXwRlcnJfAwMJAGYCAAAFBHZhbF8GCQBmAgUEdmFsXwAICQACAQUEZXJyXwYBEF92YWxpZGF0ZVBheW1lbnQECHBheW1lbnRfCGFzc2V0SWRfD3JlcXVpcmVkQW1vdW50XwRlcnJfBAckbWF0Y2gwCAUIcGF5bWVudF8HYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFhBQckbWF0Y2gwAwkBAiE9AgUIYXNzZXRJZF8JANgEAQUBYQkAAgEJAKwCAgUEZXJyXwIHOiBhc3NldAMJAGYCBQ9yZXF1aXJlZEFtb3VudF8IBQhwYXltZW50XwZhbW91bnQJAAIBCQCsAgIFBGVycl8CCDogYW1vdW50BgkAAgEJAKwCAgUEZXJyXwIHOiBhc3NldAEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwVsaXN0XwR2YWxfBGVycl8DCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQVsaXN0XwUEdmFsXwkAAgEFBGVycl8GAQtfYXNzZXRUb1N0cgEGYXNzZXRfBAckbWF0Y2gwBQZhc3NldF8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkA2AQBBQFhBQVXQVZFUwELX3N0clRvQXNzZXQBBmFzc2V0XwMDCQAAAgUGYXNzZXRfBQVXQVZFUwYJAAACBQZhc3NldF8CAAUEdW5pdAkA2QQBBQZhc3NldF8BCl9sb2FkUGF1c2UABAckbWF0Y2gwCQCgCAEFCktFWV9QQVVTRUQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYQUHJG1hdGNoMAUBYQcBCl9zYXZlUGF1c2UBCWlzUGF1c2VkXwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUKS0VZX1BBVVNFRAUJaXNQYXVzZWRfBQNuaWwBC19sb2FkUGF1c2VyAAQHJG1hdGNoMAkAoggBBQpLRVlfUEFVU0VSAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABC19zYXZlUGF1c2VyAQdwYXVzZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9QQVVTRVIJAKUIAQUHcGF1c2VyXwUDbmlsAQ1fbG9hZE11bHRpc2lnAAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVNdWx0aXNpZwEJbXVsdGlzaWdfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9NVUxUSVNJRwkApQgBBQltdWx0aXNpZ18FA25pbAEMX2xvYWRTdG9yYWdlAAQHJG1hdGNoMAkAoggBBQtLRVlfU1RPUkFHRQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAEBnN0cnVjdAkAtQkCBQFhBQNTRVAJAJwKCgkA2QQBCQCRAwIFBnN0cnVjdAAACQAAAgkAkQMCBQZzdHJ1Y3QAAQIBMQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAICQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBnN0cnVjdAAJCQCcCgoBAAcAAAAAAAAAAAAAAAAAAAkBB0FkZHJlc3MBAQABDF9zYXZlU3RvcmFnZQEIc3RvcmFnZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgULS0VZX1NUT1JBR0UJALkJAgkAzAgCCQDYBAEIBQhzdG9yYWdlXwJfMQkAzAgCAwgFCHN0b3JhZ2VfAl8yAgExAgEwCQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl8zCQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl80CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl81CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl82CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl83CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl84CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl85CQDMCAIJAKUIAQgFCHN0b3JhZ2VfA18xMAUDbmlsBQNTRVAFA25pbAELX2xvYWRBc3NldHMABAckbWF0Y2gwCQCiCAEFCktFWV9BU1NFVFMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkAZgIJALECAQUBYQAACQC9CQIFAWEFA1NFUAUDbmlsBQNuaWwBC19zYXZlQXNzZXRzAQdhc3NldHNfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9BU1NFVFMJALsJAgUHYXNzZXRzXwUDU0VQBQNuaWwBEl9sb2FkQXNzZXRCYWxhbmNlcwAKAQhmb2xkRnVuYwIDYWNjBGVsZW0EB2JhbGFuY2UJAQ1wYXJzZUludFZhbHVlAQUEZWxlbQkAlAoCCQDNCAIIBQNhY2MCXzEFB2JhbGFuY2UJAGQCCAUDYWNjAl8yBQdiYWxhbmNlBAckbWF0Y2gwCQCiCAEFEktFWV9BU1NFVF9CQUxBTkNFUwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDADCQBmAgkAsQIBBQFhAAAKAAIkbAkAvQkCBQFhBQNTRVAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlAoCBRBaRVJPX0lOVF9MSVNUXzEwAAAJAJQKAgUQWkVST19JTlRfTElTVF8xMAAAARJfc2F2ZUFzc2V0QmFsYW5jZXMBCWJhbGFuY2VzXwoBCGZvbGRGdW5jAgNhY2MEZWxlbQkAzQgCBQNhY2MJAKQDAQUEZWxlbQkAzAgCCQELU3RyaW5nRW50cnkCBRJLRVlfQVNTRVRfQkFMQU5DRVMJALsJAgoAAiRsBQliYWxhbmNlc18KAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBQNTRVAFA25pbAERX2xvYWRBc3NldFdlaWdodHMACgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAZ3ZWlnaHQJAQ1wYXJzZUludFZhbHVlAQUEZWxlbQkAlAoCCQDNCAIIBQNhY2MCXzEFBndlaWdodAkAZAIIBQNhY2MCXzIFBndlaWdodAQHJG1hdGNoMAkAoggBBRFLRVlfQVNTRVRfV0VJR0hUUwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDADCQBmAgkAsQIBBQFhAAAKAAIkbAkAvQkCBQFhBQNTRVAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlAoCBRBaRVJPX0lOVF9MSVNUXzEwAAAJAJQKAgUQWkVST19JTlRfTElTVF8xMAAAARFfc2F2ZUFzc2V0V2VpZ2h0cwEId2VpZ2h0c18KAQhmb2xkRnVuYwIDYWNjBGVsZW0JAM0IAgUDYWNjCQCkAwEFBGVsZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgURS0VZX0FTU0VUX1dFSUdIVFMJALsJAgoAAiRsBQh3ZWlnaHRzXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoFA1NFUAUDbmlsAQpfbG9hZExwRmVlAQhhc3NldElkXwQHJG1hdGNoMAkAnwgBCQC5CQIJAMwIAgUKS0VZX0xQX0ZFRQkAzAgCBQhhc3NldElkXwUDbmlsBQNTRVADCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABCl9zYXZlTHBGZWUCCGFzc2V0SWRfBHZhbF8JAMwIAgkBDEludGVnZXJFbnRyeQIJALkJAgkAzAgCBQpLRVlfTFBfRkVFCQDMCAIFCGFzc2V0SWRfBQNuaWwFA1NFUAUEdmFsXwUDbmlsARBfbG9hZFByb3RvY29sRmVlAQhhc3NldElkXwQHJG1hdGNoMAkAnwgBCQC5CQIJAMwIAgUQS0VZX1BST1RPQ09MX0ZFRQkAzAgCBQhhc3NldElkXwUDbmlsBQNTRVADCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABEF9zYXZlUHJvdG9jb2xGZWUCCGFzc2V0SWRfBHZhbF8JAMwIAgkBDEludGVnZXJFbnRyeQIJALkJAgkAzAgCBRBLRVlfUFJPVE9DT0xfRkVFCQDMCAIFCGFzc2V0SWRfBQNuaWwFA1NFUAUEdmFsXwUDbmlsAQ5fbG9hZFByZWNpc2lvbgAEByRtYXRjaDAJAJ8IAQUNS0VZX1BSRUNJU0lPTgMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAEOX3NhdmVQcmVjaXNpb24BBHZhbF8JAMwIAgkBDEludGVnZXJFbnRyeQIFDUtFWV9QUkVDSVNJT04FBHZhbF8FA25pbAESX2xvYWRTaWdtYUZlZVBlckxwAAoBCGZvbGRGdW5jAgNhY2MEZWxlbQkAzQgCBQNhY2MJAKcDAQUEZWxlbQQHJG1hdGNoMAkAoggBBRRLRVlfU0lHTUFfRkVFX1BFUl9MUAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDADCQBmAgkAsQIBBQFhAAAKAAIkbAkAvQkCBQFhBQNTRVAKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsFE1pFUk9fQklHSU5UX0xJU1RfMTEFE1pFUk9fQklHSU5UX0xJU1RfMTEBEl9zYXZlU2lnbWFGZWVQZXJMcAEEdmFsXwoBCGZvbGRGdW5jAgNhY2MEZWxlbQkAzQgCBQNhY2MJAKYDAQUEZWxlbQkAzAgCCQELU3RyaW5nRW50cnkCBRRLRVlfU0lHTUFfRkVFX1BFUl9MUAkAuwkCCgACJGwFBHZhbF8KAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsFA1NFUAUDbmlsARZfbG9hZFVzZXJTaWdtYUZlZVBlckxwAQV1c2VyXwoBCGZvbGRGdW5jAgNhY2MEZWxlbQkAzQgCBQNhY2MJAKcDAQUEZWxlbQQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUZS0VZX1VTRVJfU0lHTUFfRkVFX1BFUl9MUAkAzAgCCQClCAEFBXVzZXJfBQNuaWwFA1NFUAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDADCQBmAgkAsQIBBQFhAAAKAAIkbAkAvQkCBQFhBQNTRVAKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsFE1pFUk9fQklHSU5UX0xJU1RfMTEFE1pFUk9fQklHSU5UX0xJU1RfMTEBFl9zYXZlVXNlclNpZ21hRmVlUGVyTHACBXVzZXJfBHZhbF8KAQhmb2xkRnVuYwIDYWNjBGVsZW0JAM0IAgUDYWNjCQCmAwEFBGVsZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFGUtFWV9VU0VSX1NJR01BX0ZFRV9QRVJfTFAJAMwIAgkApQgBBQV1c2VyXwUDbmlsBQNTRVAJALsJAgoAAiRsBQR2YWxfCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBQNTRVAFA25pbAELX2xvYWRVc2VyTHABCGFkZHJlc3NfBAckbWF0Y2gwCQCfCAEJALkJAgkAzAgCBQtLRVlfVVNFUl9MUAkAzAgCCQClCAEFCGFkZHJlc3NfBQNuaWwFA1NFUAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAELX3NhdmVVc2VyTHACCGFkZHJlc3NfBHZhbF8JAMwIAgkBDEludGVnZXJFbnRyeQIJALkJAgkAzAgCBQtLRVlfVVNFUl9MUAkAzAgCCQClCAEFCGFkZHJlc3NfBQNuaWwFA1NFUAUEdmFsXwUDbmlsAQxfbG9hZFRvdGFsTHAABAckbWF0Y2gwCQCfCAEFDEtFWV9UT1RBTF9MUAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAEMX3NhdmVUb3RhbExwAQR2YWxfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxLRVlfVE9UQUxfTFAFBHZhbF8FA25pbAEQX2xvYWRVc2VyUHJvZml0cwEFdXNlcl8KAQhmb2xkRnVuYwIDYWNjBGVsZW0JAM0IAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGVsZW0EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFEEtFWV9VU0VSX1BST0ZJVFMJAMwIAgkApQgBBQV1c2VyXwUDbmlsBQNTRVADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkAZgIJALECAQUBYQAACgACJGwJAL0JAgUBYQUDU0VQCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBRBaRVJPX0lOVF9MSVNUXzExBRBaRVJPX0lOVF9MSVNUXzExARBfc2F2ZVVzZXJQcm9maXRzAgV1c2VyXwR2YWxfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtCQDNCAIFA2FjYwkApAMBBQRlbGVtCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRBLRVlfVVNFUl9QUk9GSVRTCQDMCAIJAKUIAQUFdXNlcl8FA25pbAUDU0VQCQC7CQIKAAIkbAUEdmFsXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDExCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwUDU0VQBQNuaWwBEV9vbmx5VGhpc0NvbnRyYWN0AQdjYWxsZXJfAwkBAiE9AgUHY2FsbGVyXwUEdGhpcwkAAgECGV9vbmx5VGhpc0NvbnRyYWN0OiByZXZlcnQGARBfd2hlbk11bHRpc2lnU2V0AAMJAAACCQENX2xvYWRNdWx0aXNpZwAJAQdBZGRyZXNzAQEACQACAQIYX3doZW5NdWx0aXNpZ1NldDogcmV2ZXJ0BgETX3doZW5Ob3RJbml0aWFsaXplZAAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UAAwkBAiE9AggFB3N0b3JhZ2UCXzEBAAkAAgECG193aGVuTm90SW5pdGlhbGl6ZWQ6IHJldmVydAYBEF93aGVuSW5pdGlhbGl6ZWQABAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAMJAAACCAUHc3RvcmFnZQJfMQEACQACAQIYX3doZW5Jbml0aWFsaXplZDogcmV2ZXJ0BgEOX3doZW5Ob3RQYXVzZWQAAwkBCl9sb2FkUGF1c2UACQACAQIWX3doZW5Ob3RQYXVzZWQ6IHJldmVydAYBC193aGVuUGF1c2VkAAMJAQEhAQkBCl9sb2FkUGF1c2UACQACAQITX3doZW5QYXVzZWQ6IHJldmVydAYBC19vbmx5UGF1c2VyAQdjYWxsZXJfAwkBAiE9AgUHY2FsbGVyXwkBC19sb2FkUGF1c2VyAAkAAgECE19vbmx5UGF1c2VyOiByZXZlcnQGAQxfZ2V0RGVjaW1hbHMBCGFzc2V0SWRfBAckbWF0Y2gwCQDsBwEJANkEAQUIYXNzZXRJZF8DCQABAgUHJG1hdGNoMAIFQXNzZXQEAWEFByRtYXRjaDAIBQFhCGRlY2ltYWxzCQACAQkArAICAhdfZ2V0RGVjaW1hbHM6IG5vIGFzc2V0PQUIYXNzZXRJZF8BEl9ub3JtYWxpemVEZWNpbWFscwQHYW1vdW50Xw9zb3VyY2VEZWNpbWFsc18PdGFyZ2V0RGVjaW1hbHNfBnJvdW5kXwMJAGcCBQ9zb3VyY2VEZWNpbWFsc18F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dW50c18KAQhmb2xkRnVuYwIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBAZhbW91bnQJAJEDAgUIYW1vdW50c18FBWluZGV4BApuZXdCYWxhbmNlCQBkAgUEZWxlbQUGYW1vdW50CQCVCgMJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIFCm5ld0JhbGFuY2UJAGQCCAUDYWNjAl8zBQpuZXdCYWxhbmNlBAZyZXN1bHQKAAIkbAUJYmFsYW5jZXNfCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDAAAFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlAoCCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8zARxfaW5jcmVtZW50QmFsYW5jZXNCeVBheW1lbnRzBQliYWxhbmNlc18JcGF5bWVudHNfB2Fzc2V0c18JZGVjaW1hbHNfBGVycl8KAQhmb2xkRnVuYwIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBAdwYXltZW50CQCRAwIFCXBheW1lbnRzXwUFaW5kZXgED3BheW1lbnRBc3NldFN0cgkBC19hc3NldFRvU3RyAQgFB3BheW1lbnQHYXNzZXRJZAQDZXJyAwkBAiE9AgUPcGF5bWVudEFzc2V0U3RyCQCRAwIFB2Fzc2V0c18FBWluZGV4CQACAQkArAICCQCsAgIFBGVycl8CCDogaW5kZXg9CQCkAwEFBWluZGV4BQR1bml0AwkAAAIFA2VycgUDZXJyBA1hc3NldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUPcGF5bWVudEFzc2V0U3RyBApuZXdCYWxhbmNlCQBkAgUEZWxlbQkBEl9ub3JtYWxpemVEZWNp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AQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACggFBnJlc3VsdAJfMgESX2NhbGN1bGF0ZU1pY3JvRmVlBQhiYWxhbmNlXwxlcXVpbGlicml1bV8Qd2VpZ2h0QW1wbGlmaWVyXw1zbGlwcGFnZVJhdGVfC2ZlZU1heFJhdGVfAwkAZgIFDGVxdWlsaWJyaXVtXwUIYmFsYW5jZV8ECXRocmVzaG9sZAkAawMFDGVxdWlsaWJyaXVtXwkAZQIFFE1BWF9XRUlHSFRfQU1QTElGSUVSBRB3ZWlnaHRBbXBsaWZpZXJfBRRNQVhfV0VJR0hUX0FNUExJRklFUgMJAGYCBQl0aHJlc2hvbGQFCGJhbGFuY2VfBAxtYXhEZXZpYXRpb24JAGUCBQl0aHJlc2hvbGQFCGJhbGFuY2VfBAdmZWVSYXRlCQBrAwkAawMFDG1heERldmlhdGlvbgUNc2xpcHBhZ2VSYXRlXwUUU0xJUFBBR0VfUkFURV9GQUNUT1IFD0ZFRV9SQVRFX0ZBQ1RPUgUMZXF1aWxpYnJpdW1fAwkAZgIFB2ZlZVJhdGUFC2ZlZU1heFJhdGVfCQBrAwUMbWF4RGV2aWF0aW9uBQtmZWVNYXhSYXRlXwUPRkVFX1JBVEVfRkFDVE9SCQBrAwUMbWF4RGV2aWF0aW9uBQdmZWVSYXRlBQ9GRUVfUkFURV9GQUNUT1IAAAQJdGhyZXNob2xkCQBrAwUMZXF1aWxpYnJpdW1fCQBkAgUUTUFYX1dFSUdIVF9BTVBMSUZJRVIFEHdlaWdodEFtcGxpZmllcl8FFE1BWF9XRUlHSFRfQU1QTElGSUVSAwkAZgIFCGJhbGFuY2VfBQl0aHJlc2hvbGQEDG1heERldmlhdGlvbgkAZQIFCGJhbGFuY2VfBQl0aHJlc2hvbGQEB2ZlZVJhdGUJAGsDCQBrAwUMbWF4RGV2aWF0aW9uBQ1zbGlwcGFnZVJhdGVfBRRTTElQUEFHRV9SQVRFX0ZBQ1RPUgUPRkVFX1JBVEVfRkFDVE9SBQxlcXVpbGlicml1bV8DCQBmAgUHZmVlUmF0ZQULZmVlTWF4UmF0ZV8JAGsDBQxtYXhEZXZpYXRpb24FC2ZlZU1heFJhdGVfBQ9GRUVfUkFURV9GQUNUT1IJAGsDBQxtYXhEZXZpYXRpb24FB2ZlZVJhdGUFD0ZFRV9SQVRFX0ZBQ1RPUgAAAQ1fY2FsY3VsYXRlRmVlBwliYWxhbmNlc18SYXNzZXRzVG90YWxTdXBwbHlfCHdlaWdodHNfDHNpZ21hV2VpZ2h0XxB3ZWlnaHRBbXBsaWZpZXJfDXNsaXBwYWdlUmF0ZV8LZmVlTWF4UmF0ZV8KAQhmb2xkRnVuYwIDYWNjB2JhbGFuY2UEBWluZGV4CAUDYWNjAl8xBAtlcXVpbGlicml1bQkAawMFEmFzc2V0c1RvdGFsU3VwcGx5XwkAkQMCBQh3ZWlnaHRzXwUFaW5kZXgFDHNpZ21hV2VpZ2h0XwkAlAoCCQBkAgUFaW5kZXgAAQkAZAIIBQNhY2MCXzIJARJfY2FsY3VsYXRlTWljcm9GZWUFBQdiYWxhbmNlBQtlcXVpbGlicml1bQUQd2VpZ2h0QW1wbGlmaWVyXwUNc2xpcHBhZ2VSYXRlXwULZmVlTWF4UmF0ZV8EBnJlc3VsdAoAAiRsBQliYWxhbmNlc18KAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACggFBnJlc3VsdAJfMgEbX3ZhbGlkYXRlTGlxdWlkaXR5SW52YXJpYW50CxJwcmV2QXNzZXRCYWxhbmNlc18VcHJldkFzc2V0VG90YWxTdXBwbHlfDmFzc2V0QmFsYW5jZXNfEWFzc2V0VG90YWxTdXBwbHlfEnByZXZMcFRvdGFsU3VwcGx5Xw5scFRvdGFsU3VwcGx5Xw1hc3NldFdlaWdodHNfDHNpZ21hV2VpZ2h0XxB3ZWlnaHRBbXBsaWZpZXJfDXNsaXBwYWdlUmF0ZV8LZmVlTWF4UmF0ZV8DAwkAAAIFEnByZXZMcFRvdGFsU3VwcGx5XwAABgkAAAIFDmxwVG90YWxTdXBwbHlfAAAGBA5wcmV2QXNzZXRzUmF0ZQkAawMJAGUCBRVwcmV2QXNzZXRUb3RhbFN1cHBseV8JAQ1fY2FsY3VsYXRlRmVlBwUScHJldkFzc2V0QmFsYW5jZXNfBRVwcmV2QXNzZXRUb3RhbFN1cHBseV8FDWFzc2V0V2VpZ2h0c18FDHNpZ21hV2VpZ2h0XwUQd2VpZ2h0QW1wbGlmaWVyXwUNc2xpcHBhZ2VSYXRlXwULZmVlTWF4UmF0ZV8FC1JBVEVfRkFDVE9SBRJwcmV2THBUb3RhbFN1cHBseV8EDW5ld0Fzc2V0c1JhdGUJAGsDCQBlAgURYXNzZXRUb3RhbFN1cHBseV8JAQ1fY2FsY3VsYXRlRmVlBwUOYXNzZXRCYWxhbmNlc18FEWFzc2V0VG90YWxTdXBwbHlfBQ1hc3NldFdlaWdodHNfBQxzaWdtYVdlaWdodF8FEHdlaWdodEFtcGxpZmllcl8FDXNsaXBwYWdlUmF0ZV8FC2ZlZU1heFJhdGVfBQtSQVRFX0ZBQ1RPUgUObHBUb3RhbFN1cHBseV8EBGRpZmYJAGUCBQ1uZXdBc3NldHNSYXRlBQ5wcmV2QXNzZXRzUmF0ZQMDCQBnAgAABQRkaWZmCQBmAgkAaAIA////////////AQkBDl9sb2FkUHJlY2lzaW9uAAUEZGlmZgcJAAIBCQCsAgICKl92YWxpZGF0ZUxpcXVpZGl0eUludmFyaWFudDogcmV2ZXJ0OiBkaWZmPQkApAMBBQRkaWZmBgEWX3ZhbGlkYXRlU3dhcEludmFyaWFudAkScHJldkFzc2V0QmFsYW5jZXNfFXByZXZBc3NldFRvdGFsU3VwcGx5Xw5hc3NldEJhbGFuY2VzXxFhc3NldFRvdGFsU3VwcGx5Xw1hc3NldFdlaWdodHNfDHNpZ21hV2VpZ2h0XxB3ZWlnaHRBbXBsaWZpZXJfDXNsaXBwYWdlUmF0ZV8LZmVlTWF4UmF0ZV8ECHByZXZVdGlsCQBlAgUVcHJldkFzc2V0VG90YWxTdXBwbHlfCQENX2NhbGN1bGF0ZUZlZQcFEnByZXZBc3NldEJhbGFuY2VzXwUVcHJldkFzc2V0VG90YWxTdXBwbHlfBQ1hc3NldFdlaWdodHNfBQxzaWdtYVdlaWdodF8FEHdlaWdodEFtcGxpZmllcl8FDXNsaXBwYWdlUmF0ZV8FC2ZlZU1heFJhdGVfBAduZXdVdGlsCQBlAgURYXNzZXRUb3RhbFN1cHBseV8JAQ1fY2FsY3VsYXRlRmVlBwUOYXNzZXRCYWxhbmNlc18FEWFzc2V0VG90YWxTdXBwbHlfBQ1hc3NldFdlaWdodHNfBQxzaWdtYVdlaWdodF8FEHdlaWdodEFtcGxpZmllcl8FDXNsaXBwYWdlUmF0ZV8FC2ZlZU1heFJhdGVfBARkaWZmCQBlAgUHbmV3VXRpbAUIcHJldlV0aWwDAwkAZwIAAAUEZGlmZgkAZgIJAGgCAP///////////wEJAQ5fbG9hZFByZWNpc2lvbgAFBGRpZmYHCQACAQkArAICAiVfdmFsaWRhdGVTd2FwSW52YXJpYW50OiByZXZlcnQ6IGRpZmY9CQCkAwEFBGRpZmYGARhfdmFsaWRhdGVBc3NldEFsbG9jYXRpb24HCGJhbGFuY2VfEWFzc2V0VG90YWxTdXBwbHlfDHByZXZCYWxhbmNlXxVwcmV2QXNzZXRUb3RhbFN1cHBseV8Hd2VpZ2h0XwxzaWdtYVdlaWdodF8MbWF4QWxsb2NBbXBfBAtlcXVpbGlicml1bQkAawMFEWFzc2V0VG90YWxTdXBwbHlfBQd3ZWlnaHRfBQxzaWdtYVdlaWdodF8EEG1heEFsbG9jYXRpb25BbXADCQBmAgUIYmFsYW5jZV8FC2VxdWlsaWJyaXVtCQBkAgUNTUFYX0FNUExJRklFUgUMbWF4QWxsb2NBbXBfCQBlAgUNTUFYX0FNUExJRklFUgUMbWF4QWxsb2NBbXBfBA1tYXhBbGxvY2F0aW9uCQBrAwULZXF1aWxpYnJpdW0FEG1heEFsbG9jYXRpb25BbXAFDU1BWF9BTVBMSUZJRVIEEXByZXZNYXhBbGxvY2F0aW9uCQBrAwkAawMFFXByZXZBc3NldFRvdGFsU3VwcGx5XwUHd2VpZ2h0XwUMc2lnbWFXZWlnaHRfBRBtYXhBbGxvY2F0aW9uQW1wBQ1NQVhfQU1QTElGSUVSAwkAZgIFCGJhbGFuY2VfBQtlcXVpbGlicml1bQMJAGYCBQhiYWxhbmNlXwUNbWF4QWxsb2NhdGlvbgMJAGYCBRFwcmV2TWF4QWxsb2NhdGlvbgUMcHJldkJhbGFuY2VfCQACAQIgX3ZhbGlkYXRlQXNzZXRBbGxvY2F0aW9uOiBuZXcgdXADCQBmAgkAZQIFCGJhbGFuY2VfBQ1tYXhBbGxvY2F0aW9uCQBlAgUMcHJldkJhbGFuY2VfBRFwcmV2TWF4QWxsb2NhdGlvbgkAAgECIl92YWxpZGF0ZUFzc2V0QWxsb2NhdGlvbjogc3RpbGwgdXAGBgMJAGYCBQ1tYXhBbGxvY2F0aW9uBQhiYWxhbmNlXwMJAGYCBQxwcmV2QmFsYW5jZV8FEXByZXZNYXhBbGxvY2F0aW9uCQACAQIiX3ZhbGlkYXRlQXNzZXRBbGxvY2F0aW9uOiBuZXcgZG93bgMJAGYCCQBlAgUNbWF4QWxsb2NhdGlvbgUIYmFsYW5jZV8JAGUCBRFwcmV2TWF4QWxsb2NhdGlvbgUMcHJldkJhbGFuY2VfCQACAQIkX3ZhbGlkYXRlQXNzZXRBbGxvY2F0aW9uOiBzdGlsbCBkb3duBgYBE192YWxpZGF0ZUFsbG9jYXRpb24HDmFzc2V0QmFsYW5jZXNfEWFzc2V0VG90YWxTdXBwbHlfEnByZXZBc3NldEJhbGFuY2VzXxVwcmV2QXNzZXRUb3RhbFN1cHBseV8NYXNzZXRXZWlnaHRzXwxzaWdtYVdlaWdodF8MbWF4QWxsb2NBbXBfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQkAlAoCCQBkAgUFaW5kZXgAAQMIBQNhY2MCXzIJARhfdmFsaWRhdGVBc3NldEFsbG9jYXRpb24HBQRlbGVtBRFhc3NldFRvdGFsU3VwcGx5XwkAkQMCBRJwcmV2QXNzZXRCYWxhbmNlc18FBWluZGV4BRVwcmV2QXNzZXRUb3RhbFN1cHBseV8JAJEDAgUNYXNzZXRXZWlnaHRzXwUFaW5kZXgFDHNpZ21hV2VpZ2h0XwUMbWF4QWxsb2NBbXBfBwQGcmVzdWx0CgACJGwFDmFzc2V0QmFsYW5jZXNfCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAGCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACggFBnJlc3VsdAJfMgELX2NoZWNrcG9pbnQBBXVzZXJfBAZ1c2VyTHAJAQtfbG9hZFVzZXJMcAEFBXVzZXJfBAt1c2VyUHJvZml0cwkBEF9sb2FkVXNlclByb2ZpdHMBBQV1c2VyXwQNc2lnbWFGZWVQZXJMcAkBEl9sb2FkU2lnbWFGZWVQZXJMcAAEEXVzZXJTaWdtYUZlZVBlckxwCQEWX2xvYWRVc2VyU2lnbWFGZWVQZXJMcAEFBXVzZXJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQNcHJvZml0VXBkYXRlZAkAZAIJAJEDAgULdXNlclByb2ZpdHMFBWluZGV4CQCgAwEJALwCAwkAtgIBBQZ1c2VyTHAJALgCAgkAkQMCBQ1zaWdtYUZlZVBlckxwBQVpbmRleAkAkQMCBRF1c2VyU2lnbWFGZWVQZXJMcAUFaW5kZXgFDlBFUkNFTlRfRkFDVE9SCQCUCgIJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIFDXByb2ZpdFVwZGF0ZWQEDSR0MDI0NjA1MjQ2NzgKAAIkbAUQWkVST19JTlRfTElTVF8xMQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDI0NjA1MjQ2NzgCXzEEDnByb2ZpdHNVcGRhdGVkCAUNJHQwMjQ2MDUyNDY3OAJfMgkAlAoCCQDOCAIJARBfc2F2ZVVzZXJQcm9maXRzAgUFdXNlcl8FDnByb2ZpdHNVcGRhdGVkCQEWX3NhdmVVc2VyU2lnbWFGZWVQZXJMcAIFBXVzZXJfBQ1zaWdtYUZlZVBlckxwBQ5wcm9maXRzVXBkYXRlZAEUX3VwZGF0ZVNpZ21hRmVlUGVyTHAEDnNpZ21hRmVlUGVyTHBfCHRvdGFsTHBfBmluZGV4XwZscEZlZV8KAQhmb2xkRnVuYwIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBBRzaWdtYUZlZVBlckxwVXBkYXRlZAMJAAACBQZpbmRleF8FBWluZGV4CQC3AgIJAJEDAgUOc2lnbWFGZWVQZXJMcF8FBWluZGV4CQC8AgMJALYCAQUGbHBGZWVfBQ5QRVJDRU5UX0ZBQ1RPUgkAtgIBBQh0b3RhbExwXwkAkQMCBQ5zaWdtYUZlZVBlckxwXwUFaW5kZXgJAJQKAgkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQEDSR0MDI1MzI4MjU0MDcKAAIkbAUQWkVST19JTlRfTElTVF8xMQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDI1MzI4MjU0MDcCXzEEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwMjUzMjgyNTQwNwJfMgUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQBG19jYWxjdWxhdGVMcEFuZFByb3RvY29sRmVlcwQLYXNzZXRJbmRleF8HYW1vdW50XwpscEZlZVJhdGVfEHByb3RvY29sRmVlUmF0ZV8EDXNpZ21hRmVlUGVyTHAJARJfbG9hZFNpZ21hRmVlUGVyTHAABAd0b3RhbExwCQEMX2xvYWRUb3RhbExwAAQNJHQwMjU2MjgyNTkwMwMJAAACBQd0b3RhbExwAAAJAJQKAgAACQBrAwUHYW1vdW50XwUQcHJvdG9jb2xGZWVSYXRlXwUHTUFYX0ZFRQkAlAoCCQBrAwUHYW1vdW50XwUKbHBGZWVSYXRlXwUHTUFYX0ZFRQkAawMFB2Ftb3VudF8FEHByb3RvY29sRmVlUmF0ZV8FB01BWF9GRUUEBWxwRmVlCAUNJHQwMjU2MjgyNTkwMwJfMQQLcHJvdG9jb2xGZWUIBQ0kdDAyNTYyODI1OTAzAl8yBBRzaWdtYUZlZVBlckxwVXBkYXRlZAMJAAACBQVscEZlZQAABQ1zaWdtYUZlZVBlckxwCQEUX3VwZGF0ZVNpZ21hRmVlUGVyTHAEBQ1zaWdtYUZlZVBlckxwBQd0b3RhbExwBQthc3NldEluZGV4XwUFbHBGZWUJAJUKAwUFbHBGZWUFC3Byb3RvY29sRmVlBRRzaWdtYUZlZVBlckxwVXBkYXRlZAELX2RlcG9zaXRBbGwBB2Ftb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQPd2VpZ2h0QW1wbGlmaWVyCAUHc3RvcmFnZQJfNwQMc2xpcHBhZ2VSYXRlCAUHc3RvcmFnZQJfOAQKZmVlTWF4UmF0ZQgFB3N0b3JhZ2UCXzkEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQNJHQwMjY0MTIyNjQ2NQkBEV9sb2FkQXNzZXRXZWlnaHRzAAQMYXNzZXRXZWlnaHRzCAUNJHQwMjY0MTIyNjQ2NQJfMQQLc2lnbWFXZWlnaHQIBQ0kdDAyNjQxMjI2NDY1Al8yBA0kdDAyNjQ3MDI2NTM4CQESX2xvYWRBc3NldEJhbGFuY2VzAAQRcHJldkFzc2V0QmFsYW5jZXMIBQ0kdDAyNjQ3MDI2NTM4Al8xBBRwcmV2QXNzZXRUb3RhbFN1cHBseQgFDSR0MDI2NDcwMjY1MzgCXzIEDSR0MDI2NTQ0Mjc3NzQDCQAAAgUUcHJldkFzc2V0VG90YWxTdXBwbHkAAAoBCGZvbGRGdW5jAgNhY2MEZWxlbQQFaW5kZXgIBQNhY2MCXzEEGHJlcXVpcmVkQW1vdW50Tm9ybWFsaXplZAkAawMJAJEDAgUMYXNzZXRXZWlnaHRzBQVpbmRleAUHYW1vdW50XwULc2lnbWFXZWlnaHQJAJQKAgkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgUYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkBA0kdDAyNjk4NjI3MDYwCgACJGwFBmFzc2V0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBANpZHgIBQ0kdDAyNjk4NjI3MDYwAl8xBBlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkCAUNJHQwMjY5ODYyNzA2MAJfMgkAlAoCBQdhbW91bnRfBRlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkBAVyYXRpbwkAvAIDCQC2AgEFB2Ftb3VudF8FDlBFUkNFTlRfRkFDVE9SCQC2AgEFFHByZXZBc3NldFRvdGFsU3VwcGx5CgEJZm9sZEZ1bmMxAgNhY2MEZWxlbQQFaW5kZXgIBQNhY2MCXzEEGHJlcXVpcmVkQW1vdW50Tm9ybWFsaXplZAkAoAMBCQC8AgMFBXJhdGlvCQC2AgEJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFBWluZGV4BQ5QRVJDRU5UX0ZBQ1RPUgkAlAoCCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBRhyZXF1aXJlZEFtb3VudE5vcm1hbGl6ZWQEDSR0MDI3NjAzMjc2NzgKAAIkbAUGYXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZm9sZEZ1bmMxAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBANpZHgIBQ0kdDAyNzYwMzI3Njc4Al8xBBlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkCAUNJHQwMjc2MDMyNzY3OAJfMgkAlAoCCQBrAwUHYW1vdW50XwUNbHBUb3RhbFN1cHBseQUUcHJldkFzc2V0VG90YWxTdXBwbHkFGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQEDmxwVG9rZW5zVG9NaW50CAUNJHQwMjY1NDQyNzc3NAJfMQQZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAgFDSR0MDI2NTQ0Mjc3NzQCXzIEDSR0MDI3NzgwMjc4OTMJARtfaW5jcmVtZW50QmFsYW5jZXNCeUFtb3VudHMCBRFwcmV2QXNzZXRCYWxhbmNlcwUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAQNYXNzZXRCYWxhbmNlcwgFDSR0MDI3NzgwMjc4OTMCXzEEEGFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyNzc4MDI3ODkzAl8yBARlcnIyCQEbX3ZhbGlkYXRlTGlxdWlkaXR5SW52YXJpYW50CwURcHJldkFzc2V0QmFsYW5jZXMFFHByZXZBc3NldFRvdGFsU3VwcGx5BQ1hc3NldEJhbGFuY2VzBRBhc3NldFRvdGFsU3VwcGx5BQ1scFRvdGFsU3VwcGx5CQBkAgUNbHBUb3RhbFN1cHBseQUObHBUb2tlbnNUb01pbnQFDGFzc2V0V2VpZ2h0cwULc2lnbWFXZWlnaHQFD3dlaWdodEFtcGxpZmllcgUMc2xpcHBhZ2VSYXRlBQpmZWVNYXhSYXRlAwkAAAIFBGVycjIFBGVycjIJAJUKAwUObHBUb2tlbnNUb01pbnQFGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQFDWFzc2V0QmFsYW5jZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCF9kZXBvc2l0Aghhc3NldElkXwdhbW91bnRfBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQNbHBUb3RhbFN1cHBseQgFB3N0b3JhZ2UCXzMECWxwRmVlUmF0ZQgFB3N0b3JhZ2UCXzQED3Byb3RvY29sRmVlUmF0ZQgFB3N0b3JhZ2UCXzUEEW1heEFsbG9jQW1wbGlmaWVyCAUHc3RvcmFnZQJfNgQPd2VpZ2h0QW1wbGlmaWVyCAUHc3RvcmFnZQJfNwQMc2xpcHBhZ2VSYXRlCAUHc3RvcmFnZQJfOAQKZmVlTWF4UmF0ZQgFB3N0b3JhZ2UCXzkEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQNJHQwMjg2NTYyODcwOQkBEV9sb2FkQXNzZXRXZWlnaHRzAAQMYXNzZXRXZWlnaHRzCAUNJHQwMjg2NTYyODcwOQJfMQQLc2lnbWFXZWlnaHQIBQ0kdDAyODY1NjI4NzA5Al8yBA0kdDAyODcxNDI4ODI4CQESX2xvYWRBc3NldEJhbGFuY2VzAAQRcHJldkFzc2V0QmFsYW5jZXMIBQ0kdDAyODcxNDI4ODI4Al8xBBRwcmV2QXNzZXRUb3RhbFN1cHBseQgFDSR0MDI4NzE0Mjg4MjgCXzIEDWFzc2V0QmFsYW5jZXMJARhfaW5jcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRFwcmV2QXNzZXRCYWxhbmNlcwkBBXZhbHVlAQkAzwgCBQZhc3NldHMFCGFzc2V0SWRfBQdhbW91bnRfBBBhc3NldFRvdGFsU3VwcGx5CQBkAgUUcHJldkFzc2V0VG90YWxTdXBwbHkFB2Ftb3VudF8EBGVycjIJARNfdmFsaWRhdGVBbGxvY2F0aW9uBwUNYXNzZXRCYWxhbmNlcwUQYXNzZXRUb3RhbFN1cHBseQURcHJldkFzc2V0QmFsYW5jZXMFFHByZXZBc3NldFRvdGFsU3VwcGx5BQxhc3NldFdlaWdodHMFC3NpZ21hV2VpZ2h0BRFtYXhBbGxvY0FtcGxpZmllcgMJAAACBQRlcnIyBQRlcnIyBAdwcmV2RmVlCQENX2NhbGN1bGF0ZUZlZQcFEXByZXZBc3NldEJhbGFuY2VzBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUMYXNzZXRXZWlnaHRzBQtzaWdtYVdlaWdodAUPd2VpZ2h0QW1wbGlmaWVyBQxzbGlwcGFnZVJhdGUFCmZlZU1heFJhdGUEA2ZlZQkBDV9jYWxjdWxhdGVGZWUHBQ1hc3NldEJhbGFuY2VzBRBhc3NldFRvdGFsU3VwcGx5BQxhc3NldFdlaWdodHMFC3NpZ21hV2VpZ2h0BQ93ZWlnaHRBbXBsaWZpZXIFDHNsaXBwYWdlUmF0ZQUKZmVlTWF4UmF0ZQQObHBUb2tlbnNUb01pbnQDCQAAAgUNbHBUb3RhbFN1cHBseQAACQACAQIUX2RlcG9zaXQ6IGVtcHR5IHBvb2wECWFzc2V0RGlmZgkAZQIFEGFzc2V0VG90YWxTdXBwbHkFFHByZXZBc3NldFRvdGFsU3VwcGx5BAdmZWVEaWZmCQBlAgUDZmVlBQdwcmV2RmVlBBN1dGlsaXR5Q2hhbmdlRmFjdG9yCQBrAwkAZQIFCWFzc2V0RGlmZgUHZmVlRGlmZgULUkFURV9GQUNUT1IJAGUCBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUHcHJldkZlZQQTbHBUb2tlbnNUb01pbnRJbm5lcgkAawMFDWxwVG90YWxTdXBwbHkFE3V0aWxpdHlDaGFuZ2VGYWN0b3IFC1JBVEVfRkFDVE9SBARlcnIzCQEbX3ZhbGlkYXRlTGlxdWlkaXR5SW52YXJpYW50CwURcHJldkFzc2V0QmFsYW5jZXMFFHByZXZBc3NldFRvdGFsU3VwcGx5BQ1hc3NldEJhbGFuY2VzBRBhc3NldFRvdGFsU3VwcGx5BQ1scFRvdGFsU3VwcGx5CQBkAgUNbHBUb3RhbFN1cHBseQUTbHBUb2tlbnNUb01pbnRJbm5lcgUMYXNzZXRXZWlnaHRzBQtzaWdtYVdlaWdodAUPd2VpZ2h0QW1wbGlmaWVyBQxzbGlwcGFnZVJhdGUFCmZlZU1heFJhdGUDCQAAAgUEZXJyMwUEZXJyMwUTbHBUb2tlbnNUb01pbnRJbm5lcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNJHQwMzA0OTAzMDYyMQkBG19jYWxjdWxhdGVMcEFuZFByb3RvY29sRmVlcwQAAAUObHBUb2tlbnNUb01pbnQJAGkCBQlscEZlZVJhdGUAAgkAaQIFD3Byb3RvY29sRmVlUmF0ZQACBAVscEZlZQgFDSR0MDMwNDkwMzA2MjECXzEEC3Byb3RvY29sRmVlCAUNJHQwMzA0OTAzMDYyMQJfMgQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDAzMDQ5MDMwNjIxAl8zCQCXCgUFDmxwVG9rZW5zVG9NaW50BQ1hc3NldEJhbGFuY2VzBQVscEZlZQULcHJvdG9jb2xGZWUFFHNpZ21hRmVlUGVyTHBVcGRhdGVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxfd2l0aGRyYXdBbGwBB2Ftb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQRbWF4QWxsb2NBbXBsaWZpZXIIBQdzdG9yYWdlAl82BA93ZWlnaHRBbXBsaWZpZXIIBQdzdG9yYWdlAl83BAxzbGlwcGFnZVJhdGUIBQdzdG9yYWdlAl84BApmZWVNYXhSYXRlCAUHc3RvcmFnZQJfOQQNJHQwMzA5NTUzMTAyMwkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMzA5NTUzMTAyMwJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAzMDk1NTMxMDIzAl8yBA0kdDAzMTAyODMxMDgxCQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAzMTAyODMxMDgxAl8xBAtzaWdtYVdlaWdodAgFDSR0MDMxMDI4MzEwODECXzIEDmxwVG9rZW5zVG9CdXJuBQdhbW91bnRfBANlcnIJAQxfdmFsaWRhdGVJbnQEBQ5scFRva2Vuc1RvQnVybgAABQdNQVhfSU5UAihfd2l0aGRyYXdBbGw6IGxwVG9rZW5zVG9CdXJuIGxlc3MgdGhhbiAwAwkAAAIFA2VycgUDZXJyBA0kdDAzMTIyMzMxMzU2CQEcX2RlY3JlbWVudEJhbGFuY2VzQnlMcEFtb3VudAMFEXByZXZBc3NldEJhbGFuY2VzBQ5scFRva2Vuc1RvQnVybgUNbHBUb3RhbFN1cHBseQQNYXNzZXRCYWxhbmNlcwgFDSR0MDMxMjIzMzEzNTYCXzEEEGFzc2V0VG90YWxTdXBwbHkIBQ0kdDAzMTIyMzMxMzU2Al8yBA1iYWxhbmNlc1RvUGF5CAUNJHQwMzEyMjMzMTM1NgJfMwQEZXJyMgkBG192YWxpZGF0ZUxpcXVpZGl0eUludmFyaWFudAsFEXByZXZBc3NldEJhbGFuY2VzBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUNYXNzZXRCYWxhbmNlcwUQYXNzZXRUb3RhbFN1cHBseQUNbHBUb3RhbFN1cHBseQkAZQIFDWxwVG90YWxTdXBwbHkFDmxwVG9rZW5zVG9CdXJuBQxhc3NldFdlaWdodHMFC3NpZ21hV2VpZ2h0BQ93ZWlnaHRBbXBsaWZpZXIFDHNsaXBwYWdlUmF0ZQUKZmVlTWF4UmF0ZQMJAAACBQRlcnIyBQRlcnIyCQCVCgMFDmxwVG9rZW5zVG9CdXJuBQ1iYWxhbmNlc1RvUGF5BQ1hc3NldEJhbGFuY2VzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQlfd2l0aGRyYXcCCGFzc2V0SWRfCWxwQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDWxwVG90YWxTdXBwbHkIBQdzdG9yYWdlAl8zBAlscEZlZVJhdGUIBQdzdG9yYWdlAl80BA9wcm90b2NvbEZlZVJhdGUIBQdzdG9yYWdlAl81BBFtYXhBbGxvY0FtcGxpZmllcggFB3N0b3JhZ2UCXzYED3dlaWdodEFtcGxpZmllcggFB3N0b3JhZ2UCXzcEDHNsaXBwYWdlUmF0ZQgFB3N0b3JhZ2UCXzgECmZlZU1heFJhdGUIBQdzdG9yYWdlAl85BAlwcmVjaXNpb24JAQ5fbG9hZFByZWNpc2lvbgAEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQNJHQwMzIxNDgzMjIxNgkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMzIxNDgzMjIxNgJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAzMjE0ODMyMjE2Al8yBA0kdDAzMjIyMTMyMjc0CQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAzMjIyMTMyMjc0Al8xBAtzaWdtYVdlaWdodAgFDSR0MDMyMjIxMzIyNzQCXzIEEHRhcmdldEFzc2V0SW5kZXgJAQV2YWx1ZQEJAM8IAgUGYXNzZXRzBQhhc3NldElkXwQHcHJldkZlZQkBDV9jYWxjdWxhdGVGZWUHBRFwcmV2QXNzZXRCYWxhbmNlcwUUcHJldkFzc2V0VG90YWxTdXBwbHkFDGFzc2V0V2VpZ2h0cwULc2lnbWFXZWlnaHQFD3dlaWdodEFtcGxpZmllcgUMc2xpcHBhZ2VSYXRlBQpmZWVNYXhSYXRlBA1wcmV2VXRpbFZhbHVlCQBlAgUUcHJldkFzc2V0VG90YWxTdXBwbHkFB3ByZXZGZWUEAWsJALwCAwkAtgIBCQBlAgUNbHBUb3RhbFN1cHBseQUJbHBBbW91bnRfBQ5QRVJDRU5UX0ZBQ1RPUgkAtgIBBQ1scFRvdGFsU3VwcGx5BBJwcmV2VXRpbFZhbHVlV2l0aEsJAKADAQkAvAIDCQC2AgEFDXByZXZVdGlsVmFsdWUFAWsFDlBFUkNFTlRfRkFDVE9SCgEIZm9sZEZ1bmMCA2FjYwRlbGVtAwgFA2FjYwJfMQUDYWNjBApzdGFydElubmVyCAUDYWNjAl8yBAlzdG9wSW5uZXIIBQNhY2MCXzMEDWN1cnJlbnRBbW91bnQJAGkCCQBkAgUJc3RvcElubmVyBQpzdGFydElubmVyAAIEEXRlbXBBc3NldEJhbGFuY2VzCQEYX2RlY3JlbWVudEJhbGFuY2VCeUluZGV4AwURcHJldkFzc2V0QmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgFDWN1cnJlbnRBbW91bnQEFHRlbXBBc3NldFRvdGFsU3VwcGx5CQBlAgUUcHJldkFzc2V0VG90YWxTdXBwbHkFDWN1cnJlbnRBbW91bnQECXV0aWxWYWx1ZQkAZQIFFHRlbXBBc3NldFRvdGFsU3VwcGx5CQENX2NhbGN1bGF0ZUZlZQcFEXRlbXBBc3NldEJhbGFuY2VzBRR0ZW1wQXNzZXRUb3RhbFN1cHBseQUMYXNzZXRXZWlnaHRzBQtzaWdtYVdlaWdodAUPd2VpZ2h0QW1wbGlmaWVyBQxzbGlwcGFnZVJhdGUFCmZlZU1heFJhdGUDAwkAZgIJAGUCBQl1dGlsVmFsdWUFEnByZXZVdGlsVmFsdWVXaXRoSwkAaAIA////////////AQUJcHJlY2lzaW9uCQBmAgUJcHJlY2lzaW9uCQBlAgUJdXRpbFZhbHVlBRJwcmV2VXRpbFZhbHVlV2l0aEsHCQCWCgQGBQpzdGFydElubmVyBQlzdG9wSW5uZXIFDWN1cnJlbnRBbW91bnQDCQBmAgAACQBlAgUJdXRpbFZhbHVlBRJwcmV2VXRpbFZhbHVlV2l0aEsJAJYKBAcFCnN0YXJ0SW5uZXIFDWN1cnJlbnRBbW91bnQFDWN1cnJlbnRBbW91bnQJAJYKBAcFDWN1cnJlbnRBbW91bnQFCXN0b3BJbm5lcgUNY3VycmVudEFtb3VudAQMdGFyZ2V0QW1vdW50BA0kdDAzMzgwOTMzOTI0CgACJGwFB0xJU1RfNjQKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQHAAAJAGQCBQlscEFtb3VudF8FB3ByZXZGZWUAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDY0CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAEB3N1Y2Nlc3MIBQ0kdDAzMzgwOTMzOTI0Al8xBAhzdGFydE91dAgFDSR0MDMzODA5MzM5MjQCXzIEB3N0b3BPdXQIBQ0kdDAzMzgwOTMzOTI0Al8zBA90YXJnZXRBbW91bnRPdXQIBQ0kdDAzMzgwOTMzOTI0Al80AwkBASEBBQdzdWNjZXNzCQACAQkArAICAihfd2l0aGRyYXc6IGNhbid0IGNhbGN1bGF0ZSB0YXJnZXRBbW91bnQ9CQCkAwEFD3RhcmdldEFtb3VudE91dAUPdGFyZ2V0QW1vdW50T3V0BBJmaW5hbEFzc2V0QmFsYW5jZXMJARhfZGVjcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRFwcmV2QXNzZXRCYWxhbmNlcwUQdGFyZ2V0QXNzZXRJbmRleAUMdGFyZ2V0QW1vdW50BBVmaW5hbEFzc2V0VG90YWxTdXBwbHkJAGUCBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUMdGFyZ2V0QW1vdW50BARlcnIxAwkBE192YWxpZGF0ZUFsbG9jYXRpb24HBRJmaW5hbEFzc2V0QmFsYW5jZXMFFWZpbmFsQXNzZXRUb3RhbFN1cHBseQURcHJldkFzc2V0QmFsYW5jZXMFFHByZXZBc3NldFRvdGFsU3VwcGx5BQxhc3NldFdlaWdodHMFC3NpZ21hV2VpZ2h0BRFtYXhBbGxvY0FtcGxpZmllcgkBG192YWxpZGF0ZUxpcXVpZGl0eUludmFyaWFudAsFEXByZXZBc3NldEJhbGFuY2VzBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUSZmluYWxBc3NldEJhbGFuY2VzBRVmaW5hbEFzc2V0VG90YWxTdXBwbHkFDWxwVG90YWxTdXBwbHkJAGUCBQ1scFRvdGFsU3VwcGx5BQlscEFtb3VudF8FDGFzc2V0V2VpZ2h0cwULc2lnbWFXZWlnaHQFD3dlaWdodEFtcGxpZmllcgUMc2xpcHBhZ2VSYXRlBQpmZWVNYXhSYXRlBwMJAAACBQRlcnIxBQRlcnIxBA0kdDAzNDg4MjM1MDMwCQEbX2NhbGN1bGF0ZUxwQW5kUHJvdG9jb2xGZWVzBAkAZAIFEHRhcmdldEFzc2V0SW5kZXgAAQUMdGFyZ2V0QW1vdW50CQBpAgUJbHBGZWVSYXRlAAIJAGkCBQ9wcm90b2NvbEZlZVJhdGUAAgQFbHBGZWUIBQ0kdDAzNDg4MjM1MDMwAl8xBAtwcm90b2NvbEZlZQgFDSR0MDM0ODgyMzUwMzACXzIEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwMzQ4ODIzNTAzMAJfMwkAlwoFBQx0YXJnZXRBbW91bnQFEmZpbmFsQXNzZXRCYWxhbmNlcwUFbHBGZWUFC3Byb3RvY29sRmVlBRRzaWdtYUZlZVBlckxwVXBkYXRlZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEFX3N3YXADEXNvdXJjZUFzc2V0SW5kZXhfEXRhcmdldEFzc2V0SW5kZXhfDXNvdXJjZUFtb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQkA2AQBBQlscEFzc2V0SWQEDWxwVG90YWxTdXBwbHkIBQdzdG9yYWdlAl8zBAlscEZlZVJhdGUIBQdzdG9yYWdlAl80BA9wcm90b2NvbEZlZVJhdGUIBQdzdG9yYWdlAl81BBFtYXhBbGxvY0FtcGxpZmllcggFB3N0b3JhZ2UCXzYED3dlaWdodEFtcGxpZmllcggFB3N0b3JhZ2UCXzcEDHNsaXBwYWdlUmF0ZQgFB3N0b3JhZ2UCXzgECmZlZU1heFJhdGUIBQdzdG9yYWdlAl85BAlwcmVjaXNpb24JAQ5fbG9hZFByZWNpc2lvbgAEDSR0MDM1NjEyMzU2ODAJARJfbG9hZEFzc2V0QmFsYW5jZXMABBFwcmV2QXNzZXRCYWxhbmNlcwgFDSR0MDM1NjEyMzU2ODACXzEEFHByZXZBc3NldFRvdGFsU3VwcGx5CAUNJHQwMzU2MTIzNTY4MAJfMgQNJHQwMzU2ODUzNTczOAkBEV9sb2FkQXNzZXRXZWlnaHRzAAQMYXNzZXRXZWlnaHRzCAUNJHQwMzU2ODUzNTczOAJfMQQLc2lnbWFXZWlnaHQIBQ0kdDAzNTY4NTM1NzM4Al8yBA1hc3NldEJhbGFuY2VzCQEYX2luY3JlbWVudEJhbGFuY2VCeUluZGV4AwURcHJldkFzc2V0QmFsYW5jZXMFEXNvdXJjZUFzc2V0SW5kZXhfBQ1zb3VyY2VBbW91bnRfBBBhc3NldFRvdGFsU3VwcGx5CQBkAgUUcHJldkFzc2V0VG90YWxTdXBwbHkFDXNvdXJjZUFtb3VudF8EB3ByZXZGZWUJAQ1fY2FsY3VsYXRlRmVlBwURcHJldkFzc2V0QmFsYW5jZXMFFHByZXZBc3NldFRvdGFsU3VwcGx5BQxhc3NldFdlaWdodHMFC3NpZ21hV2VpZ2h0BQ93ZWlnaHRBbXBsaWZpZXIFDHNsaXBwYWdlUmF0ZQUKZmVlTWF4UmF0ZQQNcHJldlV0aWxWYWx1ZQkAZQIFFHByZXZBc3NldFRvdGFsU3VwcGx5BQdwcmV2RmVlCgEIZm9sZEZ1bmMCA2FjYwRlbGVtAwgFA2FjYwJfMQUDYWNjBApzdGFydElubmVyCAUDYWNjAl8yBAlzdG9wSW5uZXIIBQNhY2MCXzMEDWN1cnJlbnRBbW91bnQJAGkCCQBkAgUJc3RvcElubmVyBQpzdGFydElubmVyAAIEEXRlbXBBc3NldEJhbGFuY2VzCQEYX2RlY3JlbWVudEJhbGFuY2VCeUluZGV4AwUNYXNzZXRCYWxhbmNlcwURdGFyZ2V0QXNzZXRJbmRleF8FDWN1cnJlbnRBbW91bnQEFHRlbXBBc3NldFRvdGFsU3VwcGx5CQBlAgUQYXNzZXRUb3RhbFN1cHBseQUNY3VycmVudEFtb3VudAQJdXRpbFZhbHVlCQBlAgUUdGVtcEFzc2V0VG90YWxTdXBwbHkJAQ1fY2FsY3VsYXRlRmVlBwURdGVtcEFzc2V0QmFsYW5jZXMFFHRlbXBBc3NldFRvdGFsU3VwcGx5BQxhc3NldFdlaWdodHMFC3NpZ21hV2VpZ2h0BQ93ZWlnaHRBbXBsaWZpZXIFDHNsaXBwYWdlUmF0ZQUKZmVlTWF4UmF0ZQMDCQBmAgkAZQIFCXV0aWxWYWx1ZQUNcHJldlV0aWxWYWx1ZQkAaAIA////////////AQUJcHJlY2lzaW9uCQBmAgUJcHJlY2lzaW9uCQBlAgUJdXRpbFZhbHVlBQ1wcmV2VXRpbFZhbHVlBwkAlgoEBgUKc3RhcnRJbm5lcgUJc3RvcElubmVyBQ1jdXJyZW50QW1vdW50AwkAZgIAAAkAZQIFCXV0aWxWYWx1ZQUNcHJldlV0aWxWYWx1ZQkAlgoEBwUKc3RhcnRJbm5lcgUNY3VycmVudEFtb3VudAUNY3VycmVudEFtb3VudAkAlgoEBwUNY3VycmVudEFtb3VudAUJc3RvcElubmVyBQ1jdXJyZW50QW1vdW50BAx0YXJnZXRBbW91bnQEDHRhcmdldEFtb3VudAUNc291cmNlQW1vdW50XwQRdGVtcEFzc2V0QmFsYW5jZXMJARhfZGVjcmVtZW50QmFsYW5jZUJ5SW5kZXgDBQ1hc3NldEJhbGFuY2VzBRF0YXJnZXRBc3NldEluZGV4XwUMdGFyZ2V0QW1vdW50BBR0ZW1wQXNzZXRUb3RhbFN1cHBseQkAZQIFEGFzc2V0VG90YWxTdXBwbHkFDHRhcmdldEFtb3VudAQDZmVlCQENX2NhbGN1bGF0ZUZlZQcFEXRlbXBBc3NldEJhbGFuY2VzBRR0ZW1wQXNzZXRUb3RhbFN1cHBseQUMYXNzZXRXZWlnaHRzBQtzaWdtYVdlaWdodAUPd2VpZ2h0QW1wbGlmaWVyBQxzbGlwcGFnZVJhdGUFCmZlZU1heFJhdGUEB2ZlZURpZmYJAGUCBQNmZWUFB3ByZXZGZWUDCQAAAgUHZmVlRGlmZgAABQx0YXJnZXRBbW91bnQEDSR0MDM3NjI1Mzc3NDQKAAIkbAUHTElTVF82NAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAcAAAkAZAIFDXNvdXJjZUFtb3VudF8FB3ByZXZGZWUAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDY0CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAEB3N1Y2Nlc3MIBQ0kdDAzNzYyNTM3NzQ0Al8xBAhzdGFydE91dAgFDSR0MDM3NjI1Mzc3NDQCXzIEB3N0b3BPdXQIBQ0kdDAzNzYyNTM3NzQ0Al8zBA90YXJnZXRBbW91bnRPdXQIBQ0kdDAzNzYyNTM3NzQ0Al80AwkBASEBBQdzdWNjZXNzCQACAQkArAICAiRfc3dhcDogY2FuJ3QgY2FsY3VsYXRlIHRhcmdldEFtb3VudD0JAKQDAQUPdGFyZ2V0QW1vdW50T3V0BQ90YXJnZXRBbW91bnRPdXQEEmZpbmFsQXNzZXRCYWxhbmNlcwkBGF9kZWNyZW1lbnRCYWxhbmNlQnlJbmRleAMFDWFzc2V0QmFsYW5jZXMFEXRhcmdldEFzc2V0SW5kZXhfBQx0YXJnZXRBbW91bnQEFWZpbmFsQXNzZXRUb3RhbFN1cHBseQkAZQIFEGFzc2V0VG90YWxTdXBwbHkFDHRhcmdldEFtb3VudAQEZXJyMQMJARNfdmFsaWRhdGVBbGxvY2F0aW9uBwUSZmluYWxBc3NldEJhbGFuY2VzBRVmaW5hbEFzc2V0VG90YWxTdXBwbHkFEXByZXZBc3NldEJhbGFuY2VzBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUMYXNzZXRXZWlnaHRzBQtzaWdtYVdlaWdodAURbWF4QWxsb2NBbXBsaWZpZXIJARZfdmFsaWRhdGVTd2FwSW52YXJpYW50CQURcHJldkFzc2V0QmFsYW5jZXMFFHByZXZBc3NldFRvdGFsU3VwcGx5BRJmaW5hbEFzc2V0QmFsYW5jZXMFFWZpbmFsQXNzZXRUb3RhbFN1cHBseQUMYXNzZXRXZWlnaHRzBQtzaWdtYVdlaWdodAUPd2VpZ2h0QW1wbGlmaWVyBQxzbGlwcGFnZVJhdGUFCmZlZU1heFJhdGUHAwkAAAIFBGVycjEFBGVycjEEDSR0MDM4NTU3Mzg2OTgJARtfY2FsY3VsYXRlTHBBbmRQcm90b2NvbEZlZXMECQBkAgURdGFyZ2V0QXNzZXRJbmRleF8AAQUMdGFyZ2V0QW1vdW50BQlscEZlZVJhdGUFD3Byb3RvY29sRmVlUmF0ZQQFbHBGZWUIBQ0kdDAzODU1NzM4Njk4Al8xBAtwcm90b2NvbEZlZQgFDSR0MDM4NTU3Mzg2OTgCXzIEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwMzg1NTczODY5OAJfMwkAlwoFBQx0YXJnZXRBbW91bnQFEmZpbmFsQXNzZXRCYWxhbmNlcwUFbHBGZWUFC3Byb3RvY29sRmVlBRRzaWdtYUZlZVBlckxwVXBkYXRlZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLhYBaQEEaW5pdA4HYXNzZXRzXw1hc3NldFdlaWdodHNfCmxwRmVlUmF0ZV8QcHJvdG9jb2xGZWVSYXRlXwxscFRva2VuTmFtZV8NbHBUb2tlbkRlc2NyXxBscFRva2VuRGVjaW1hbHNfF21heEFsbG9jYXRpb25BbXBsaWZpZXJfEHdlaWdodEFtcGxpZmllcl8Nc2xpcHBhZ2VSYXRlXwtmZWVNYXhSYXRlXxRwcm90b2NvbEZlZUNvbnRyYWN0XwpwcmVjaXNpb25fB3BhdXNlcl8EA2VycgMDAwMDAwMDAwMDAwMDAwMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARNfd2hlbk5vdEluaXRpYWxpemVkAAcJARBfd2hlbk11bHRpc2lnU2V0AAcJAQ9fdmFsaWRhdGVBc3NldHMCBQdhc3NldHNfAhRpbml0OiBpbnZhbGlkIGFzc2V0cwcJARBfdmFsaWRhdGVJbnRMaXN0BAUNYXNzZXRXZWlnaHRzXwABBQpNQVhfV0VJR0hUAhppbml0OiBpbnZhbGlkIGFzc2V0V2VpZ2h0cwcJARJfdmFsaWRhdGVJbnRFcXVhbHMDCQCQAwEFB2Fzc2V0c18JAJADAQUNYXNzZXRXZWlnaHRzXwIfaW5pdDogaW52YWxpZCBhc3NldFdlaWdodHMgc2l6ZQcJAQxfdmFsaWRhdGVJbnQEBQpscEZlZVJhdGVfAAAFB01BWF9GRUUCFGluaXQ6IGludmFsaWQgbHAgZmVlBwkBDF92YWxpZGF0ZUludAQFEHByb3RvY29sRmVlUmF0ZV8AAAUHTUFYX0ZFRQIaaW5pdDogaW52YWxpZCBwcm90b2NvbCBmZWUHCQESX3ZhbGlkYXRlVG9rZW5OYW1lAgUMbHBUb2tlbk5hbWVfAhJpbml0OiBpbnZhbGlkIG5hbWUHCQETX3ZhbGlkYXRlVG9rZW5EZXNjcgIFDWxwVG9rZW5EZXNjcl8CE2luaXQ6IGludmFsaWQgZGVzY3IHCQERX3ZhbGlkYXRlRGVjaW1hbHMCBRBscFRva2VuRGVjaW1hbHNfAhZpbml0OiBpbnZhbGlkIGRlY2ltYWxzBwkBDF92YWxpZGF0ZUludAQFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfAAAFDU1BWF9BTVBMSUZJRVICJGluaXQ6IGludmFsaWQgbWF4QWxsb2NhdGlvbkFtcGxpZmllcgcJAQxfdmFsaWRhdGVJbnQEBRB3ZWlnaHRBbXBsaWZpZXJfAAAFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfAh1pbml0OiBpbnZhbGlkIHdlaWdodEFtcGxpZmllcgcJAQxfdmFsaWRhdGVJbnQEBQ1zbGlwcGFnZVJhdGVfAAAFB01BWF9JTlQCGmluaXQ6IGludmFsaWQgc2xpcHBhZ2VSYXRlBwkBDF92YWxpZGF0ZUludAQFC2ZlZU1heFJhdGVfAAAFB01BWF9JTlQCGGluaXQ6IGludmFsaWQgZmVlTWF4UmF0ZQcJARBfdmFsaWRhdGVBZGRyZXNzAgUUcHJvdG9jb2xGZWVDb250cmFjdF8CIWluaXQ6IGludmFsaWQgcHJvdG9jb2xGZWVDb250cmFjdAcJAQxfdmFsaWRhdGVJbnQEBQpwcmVjaXNpb25fAAEFB01BWF9JTlQCF2luaXQ6IGludmFsaWQgcHJlY2lzaW9uBwkBEF92YWxpZGF0ZUFkZHJlc3MCBQdwYXVzZXJfAhRpbml0OiBpbnZhbGlkIHBhdXNlcgcDCQAAAgUDZXJyBQNlcnIEDSR0MDQwNTYxNDA2MzAJARRfcHJlcGFyZUFzc2V0V2VpZ2h0cwEFDWFzc2V0V2VpZ2h0c18EDGFzc2V0V2VpZ2h0cwgFDSR0MDQwNTYxNDA2MzACXzEEC3NpZ21hV2VpZ2h0CAUNJHQwNDA1NjE0MDYzMAJfMgQNYXNzZXRCYWxhbmNlcwkBFV9wcmVwYXJlQXNzZXRCYWxhbmNlcwEFB2Fzc2V0c18EBWlzc3VlCQDCCAUFDGxwVG9rZW5OYW1lXwUNbHBUb2tlbkRlc2NyXwAABRBscFRva2VuRGVjaW1hbHNfBgQJbHBBc3NldElkCQC4CAEFBWlzc3VlBA5zdG9yYWdlVXBkYXRlZAkAnAoKBQlscEFzc2V0SWQGAAAFCmxwRmVlUmF0ZV8FEHByb3RvY29sRmVlUmF0ZV8FF21heEFsbG9jYXRpb25BbXBsaWZpZXJfBRB3ZWlnaHRBbXBsaWZpZXJfBQ1zbGlwcGFnZVJhdGVfBQtmZWVNYXhSYXRlXwkBEUBleHRyTmF0aXZlKDEwNjIpAQUUcHJvdG9jb2xGZWVDb250cmFjdF8JAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDMCAIFBWlzc3VlBQNuaWwJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBC19zYXZlQXNzZXRzAQUHYXNzZXRzXwkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFDWFzc2V0QmFsYW5jZXMJARFfc2F2ZUFzc2V0V2VpZ2h0cwEFDGFzc2V0V2VpZ2h0cwkBDl9zYXZlUHJlY2lzaW9uAQUKcHJlY2lzaW9uXwkBEl9zYXZlU2lnbWFGZWVQZXJMcAEJARJfbG9hZFNpZ21hRmVlUGVyTHAACQELX3NhdmVQYXVzZXIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQdwYXVzZXJfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmRlcG9zaXRBbGwBB2Ftb3VudF8EA2VycgMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHCQEMX3ZhbGlkYXRlSW50BAUHYW1vdW50XwAABQdNQVhfSU5UAhpkZXBvc2l0QWxsOiBpbnZhbGlkIGFtb3VudAcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQkA2AQBBQlscEFzc2V0SWQEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQNJHQwNDIzODA0MjQ2NQkBC19kZXBvc2l0QWxsAQUHYW1vdW50XwQObHBUb2tlbnNUb01pbnQIBQ0kdDA0MjM4MDQyNDY1Al8xBBlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkCAUNJHQwNDIzODA0MjQ2NQJfMgQNYXNzZXRCYWxhbmNlcwgFDSR0MDQyMzgwNDI0NjUCXzMKAQhmb2xkRnVuYwIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBA9wYXltZW50QXNzZXRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzBQVpbmRleAdhc3NldElkBBRwYXltZW50QXNzZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFD3BheW1lbnRBc3NldFN0cgQYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkCQCRAwIFGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQFBWluZGV4BA5yZXF1aXJlZEFtb3VudAkBEl9ub3JtYWxpemVEZWNpbWFscwQFGHJlcXVpcmVkQW1vdW50Tm9ybWFsaXplZAUKbHBEZWNpbWFscwUUcGF5bWVudEFzc2V0RGVjaW1hbHMFB0NFSUxJTkcEBGVycjEDCQECIT0CBQ9wYXltZW50QXNzZXRTdHIFBGVsZW0JAAIBCQCsAgICI2RlcG9zaXRBbGw6IGludmFsaWQgcGF5bWVudDogaW5kZXg9CQCkAwEFBWluZGV4AwkAZwIAAAUOcmVxdWlyZWRBbW91bnQJAAIBAiZkZXBvc2l0QWxsOiB0b28gbGl0dGxlIGFtb3VudCByZXF1aXJlZAUEdW5pdAMJAAACBQRlcnIxBQRlcnIxBAZjaGFuZ2UDCQBmAggJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4BmFtb3VudAUOcmVxdWlyZWRBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAggJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4BmFtb3VudAUOcmVxdWlyZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzBQVpbmRleAdhc3NldElkBQNuaWwDCQBmAgUOcmVxdWlyZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzBQVpbmRleAZhbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAihkZXBvc2l0QWxsOiBpbnN1ZmZpY2llbnQgcGF5bWVudCwgaW5kZXg9CQCkAwEFBWluZGV4AgssIHJlcXVpcmVkPQkApAMBBQ5yZXF1aXJlZEFtb3VudAUDbmlsCQCUCgIJAGQCBQVpbmRleAABCQDOCAIIBQNhY2MCXzIFBmNoYW5nZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNJHQwNDM2MDg0MzY3MAoAAiRsBQZhc3NldHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQDaWR4CAUNJHQwNDM2MDg0MzY3MAJfMQQNY2hhbmdlQWN0aW9ucwgFDSR0MDQzNjA4NDM2NzACXzIEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZAIIBQdzdG9yYWdlAl8zBQ5scFRva2Vuc1RvTWludAgFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQlscEFzc2V0SWQFDmxwVG9rZW5zVG9NaW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDmxwVG9rZW5zVG9NaW50BQlscEFzc2V0SWQFA25pbAkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkCQESX3NhdmVBc3NldEJhbGFuY2VzAQUNYXNzZXRCYWxhbmNlcwUNY2hhbmdlQWN0aW9ucwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdkZXBvc2l0AQxtaW5McEFtb3VudF8EA2VycgkBDF92YWxpZGF0ZUludAQFDG1pbkxwQW1vdW50XwAABQdNQVhfSU5UAh5kZXBvc2l0OiBpbnZhbGlkIG1pbiBscCBhbW91bnQDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBAxscEFzc2V0SWRTdHIJAQtfYXNzZXRUb1N0cgEFCWxwQXNzZXRJZAQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEFDGxwQXNzZXRJZFN0cgQEZXJyMQMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJARJfdmFsaWRhdGVJbnRFcXVhbHMDCQCQAwEIBQFpCHBheW1lbnRzAAECHmRlcG9zaXQ6IGludmFsaWQgcGF5bWVudHMgc2l6ZQcJARVfdmFsaWRhdGVMaXN0Q29udGFpbnMDCQELX2xvYWRBc3NldHMACQELX2Fzc2V0VG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQCHmRlcG9zaXQ6IGludmFsaWQgcGF5bWVudCBhc3NldAcJAQxfdmFsaWRhdGVJbnQECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABBQdNQVhfSU5UAh9kZXBvc2l0OiBpbnZhbGlkIHBheW1lbnQgYW1vdW50BwMJAAACBQRlcnIxBQRlcnIxBAhhc3NldFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBA1hc3NldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUIYXNzZXRTdHIEEGFtb3VudE5vcm1hbGl6ZWQJARJfbm9ybWFsaXplRGVjaW1hbHMECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUNYXNzZXREZWNpbWFscwUKbHBEZWNpbWFscwUERE9XTgQNJHQwNDUwODI0NTE5OAkBCF9kZXBvc2l0AgUIYXNzZXRTdHIFEGFtb3VudE5vcm1hbGl6ZWQEDmxwVG9rZW5zVG9NaW50CAUNJHQwNDUwODI0NTE5OAJfMQQNYXNzZXRCYWxhbmNlcwgFDSR0MDQ1MDgyNDUxOTgCXzIEBWxwRmVlCAUNJHQwNDUwODI0NTE5OAJfMwQLcHJvdG9jb2xGZWUIBQ0kdDA0NTA4MjQ1MTk4Al80BBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDQ1MDgyNDUxOTgCXzUEDmxwVG9rZW5zVG9TZW5kCQBlAgkAZQIFDmxwVG9rZW5zVG9NaW50BQVscEZlZQULcHJvdG9jb2xGZWUEBGVycjIJAQxfdmFsaWRhdGVJbnQEBQ5scFRva2Vuc1RvU2VuZAUMbWluTHBBbW91bnRfBQdNQVhfSU5UAhZkZXBvc2l0OiBsZXNzIHRoYW4gbWluAwkAAAIFBGVycjIFBGVycjIEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZAIIBQdzdG9yYWdlAl8zBQ5scFRva2Vuc1RvTWludAgFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDMCAIJAQdSZWlzc3VlAwUJbHBBc3NldElkBQ5scFRva2Vuc1RvTWludAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ5scFRva2Vuc1RvU2VuZAUJbHBBc3NldElkBQNuaWwJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFDWFzc2V0QmFsYW5jZXMJAQpfc2F2ZUxwRmVlAgUMbHBBc3NldElkU3RyCQBkAgUFbHBGZWUJAQpfbG9hZExwRmVlAQUMbHBBc3NldElkU3RyCQEQX3NhdmVQcm90b2NvbEZlZQIFDGxwQXNzZXRJZFN0cgkAZAIFC3Byb3RvY29sRmVlCQEQX2xvYWRQcm90b2NvbEZlZQEFDGxwQXNzZXRJZFN0cgkBEl9zYXZlU2lnbWFGZWVQZXJMcAEFFHNpZ21hRmVlUGVyTHBVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3dpdGhkcmF3QWxsAAQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkA2AQBBQlscEFzc2V0SWQECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQxscEFzc2V0SWRTdHIEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQDZXJyAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBEl92YWxpZGF0ZUludEVxdWFscwMJAJADAQgFAWkIcGF5bWVudHMAAQIid2l0aGRyYXdBbGw6IGludmFsaWQgcGF5bWVudHMgc2l6ZQcJARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAiJ3aXRoZHJhd0FsbDogaW52YWxpZCBwYXltZW50IGFzc2V0BwkBDF92YWxpZGF0ZUludAQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEFB01BWF9JTlQCI3dpdGhkcmF3QWxsOiBpbnZhbGlkIHBheW1lbnQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQNJHQwNDY2ODc0Njc3NAkBDF93aXRoZHJhd0FsbAEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BA5scFRva2Vuc1RvQnVybggFDSR0MDQ2Njg3NDY3NzQCXzEEDWJhbGFuY2VzVG9QYXkIBQ0kdDA0NjY4NzQ2Nzc0Al8yBA1hc3NldEJhbGFuY2VzCAUNJHQwNDY2ODc0Njc3NAJfMwQOcGF5bWVudEFjdGlvbnMJARhfZ2V0UGF5bWVudHNGcm9tQmFsYW5jZXMEBQZhc3NldHMFDWJhbGFuY2VzVG9QYXkIBQFpBmNhbGxlcgUKbHBEZWNpbWFscwQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCQBlAggFB3N0b3JhZ2UCXzMFDmxwVG9rZW5zVG9CdXJuCAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUIBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEEQnVybgIFCWxwQXNzZXRJZAUObHBUb2tlbnNUb0J1cm4FA25pbAUOcGF5bWVudEFjdGlvbnMJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFDWFzc2V0QmFsYW5jZXMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcCCGFzc2V0SWRfCm1pbkFtb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBAxscEFzc2V0SWRTdHIJANgEAQUJbHBBc3NldElkBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUMbHBBc3NldElkU3RyBAZhc3NldHMJAQtfbG9hZEFzc2V0cwAEA2VycgMDAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBEl92YWxpZGF0ZUludEVxdWFscwMJAJADAQgFAWkIcGF5bWVudHMAAQIfd2l0aGRyYXc6IGludmFsaWQgcGF5bWVudHMgc2l6ZQcJARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAh93aXRoZHJhdzogaW52YWxpZCBwYXltZW50IGFzc2V0BwkBDF92YWxpZGF0ZUludAQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEFB01BWF9JTlQCIHdpdGhkcmF3OiBpbnZhbGlkIHBheW1lbnQgYW1vdW50BwkBFV92YWxpZGF0ZUxpc3RDb250YWlucwMFBmFzc2V0cwUIYXNzZXRJZF8CGXdpdGhkcmF3OiBpbnZhbGlkIGFzc2V0SWQHCQEMX3ZhbGlkYXRlSW50BAUKbWluQW1vdW50XwAABQdNQVhfSU5UAht3aXRoZHJhdzogaW52YWxpZCBtaW5BbW91bnQHAwkAAAIFA2VycgUDZXJyBA0kdDA0ODEwMDQ4MjM0CQEJX3dpdGhkcmF3AgUIYXNzZXRJZF8ICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BBZ0YXJnZXRBbW91bnROb3JtYWxpemVkCAUNJHQwNDgxMDA0ODIzNAJfMQQSZmluYWxBc3NldEJhbGFuY2VzCAUNJHQwNDgxMDA0ODIzNAJfMgQFbHBGZWUIBQ0kdDA0ODEwMDQ4MjM0Al8zBAtwcm90b2NvbEZlZQgFDSR0MDQ4MTAwNDgyMzQCXzQEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDgxMDA0ODIzNAJfNQQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQhhc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOBARlcnIxCQEMX3ZhbGlkYXRlSW50BAULZmluYWxBbW91bnQFCm1pbkFtb3VudF8FB01BWF9JTlQCF3dpdGhkcmF3OiBsZXNzIHRoYW4gbWluAwkAAAIFBGVycjEFBGVycjEEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZQIIBQdzdG9yYWdlAl8zCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAgFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDMCAIJAQRCdXJuAgUJbHBBc3NldElkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2ZpbmFsQW1vdW50CQELX3N0clRvQXNzZXQBBQhhc3NldElkXwUDbmlsCQEMX3NhdmVTdG9yYWdlAQUOc3RvcmFnZVVwZGF0ZWQJARJfc2F2ZUFzc2V0QmFsYW5jZXMBBRJmaW5hbEFzc2V0QmFsYW5jZXMJAQpfc2F2ZUxwRmVlAgUIYXNzZXRJZF8JAGQCBQVscEZlZQkBCl9sb2FkTHBGZWUBBQhhc3NldElkXwkBEF9zYXZlUHJvdG9jb2xGZWUCBQhhc3NldElkXwkAZAIFC3Byb3RvY29sRmVlCQEQX2xvYWRQcm90b2NvbEZlZQEFCGFzc2V0SWRfCQESX3NhdmVTaWdtYUZlZVBlckxwAQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEc3dhcAIOdGFyZ2V0QXNzZXRJZF8KbWluQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQGYXNzZXRzCQELX2xvYWRBc3NldHMABA5zb3VyY2VBc3NldFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBBZzb3VyY2VBbW91bnROb3JtYWxpemVkCQESX25vcm1hbGl6ZURlY2ltYWxzBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAQxfZ2V0RGVjaW1hbHMBBQ5zb3VyY2VBc3NldFN0cgUKbHBEZWNpbWFscwUERE9XTgQQc291cmNlQXNzZXRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFBmFzc2V0cwUOc291cmNlQXNzZXRTdHICGnN3YXA6IGludmFsaWQgc291cmNlIGFzc2V0AwkAAAIFEHNvdXJjZUFzc2V0SW5kZXgFEHNvdXJjZUFzc2V0SW5kZXgEEHRhcmdldEFzc2V0SW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQZhc3NldHMFDnRhcmdldEFzc2V0SWRfAhpzd2FwOiBpbnZhbGlkIHRhcmdldCBhc3NldAMJAAACBRB0YXJnZXRBc3NldEluZGV4BRB0YXJnZXRBc3NldEluZGV4BANlcnIDAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBDF92YWxpZGF0ZUludAQFCm1pbkFtb3VudF8AAAUHTUFYX0lOVAIfc3dhcDogaW52YWxpZCBtaW4gdGFyZ2V0IGFtb3VudAcJAQxfdmFsaWRhdGVJbnQEBRZzb3VyY2VBbW91bnROb3JtYWxpemVkAAEFB01BWF9JTlQCG3N3YXA6IGludmFsaWQgc291cmNlIGFtb3VudAcJARRfdmFsaWRhdGVTdHJpbmdOb3RFcQMFDnNvdXJjZUFzc2V0U3RyBQ50YXJnZXRBc3NldElkXwIRc3dhcDogc2FtZSBhc3NldHMHCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAhtzd2FwOiBpbnZhbGlkIHBheW1lbnRzIHNpemUHAwkAAAIFA2VycgUDZXJyBA0kdDA1MDMxOTUwNDc3CQEFX3N3YXADBRBzb3VyY2VBc3NldEluZGV4BRB0YXJnZXRBc3NldEluZGV4BRZzb3VyY2VBbW91bnROb3JtYWxpemVkBBZ0YXJnZXRBbW91bnROb3JtYWxpemVkCAUNJHQwNTAzMTk1MDQ3NwJfMQQSZmluYWxBc3NldEJhbGFuY2VzCAUNJHQwNTAzMTk1MDQ3NwJfMgQFbHBGZWUIBQ0kdDA1MDMxOTUwNDc3Al8zBAtwcm90b2NvbEZlZQgFDSR0MDUwMzE5NTA0NzcCXzQEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNTAzMTk1MDQ3NwJfNQQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQ50YXJnZXRBc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOBARlcnIxCQEMX3ZhbGlkYXRlSW50BAULZmluYWxBbW91bnQFCm1pbkFtb3VudF8FB01BWF9JTlQCE3N3YXA6IGxlc3MgdGhhbiBtaW4DCQAAAgUEZXJyMQUEZXJyMQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtmaW5hbEFtb3VudAkBC19zdHJUb0Fzc2V0AQUOdGFyZ2V0QXNzZXRJZF8FA25pbAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFEmZpbmFsQXNzZXRCYWxhbmNlcwkBCl9zYXZlTHBGZWUCBQ50YXJnZXRBc3NldElkXwkAZAIFBWxwRmVlCQEKX2xvYWRMcEZlZQEFDnRhcmdldEFzc2V0SWRfCQEQX3NhdmVQcm90b2NvbEZlZQIFDnRhcmdldEFzc2V0SWRfCQBkAgULcHJvdG9jb2xGZWUJARBfbG9hZFByb3RvY29sRmVlAQUOdGFyZ2V0QXNzZXRJZF8JARJfc2F2ZVNpZ21hRmVlUGVyTHABBRRzaWdtYUZlZVBlckxwVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1nZXREZXBvc2l0QWxsAQlscEFtb3VudF8EA2VycgkBDF92YWxpZGF0ZUludAQFCWxwQW1vdW50XwABBQdNQVhfSU5UAh1nZXREZXBvc2l0QWxsOiBpbnZhbGlkIGFtb3VudAMJAAACBQNlcnIFA2VycgQNJHQwNTE1OTc1MTY4NAkBC19kZXBvc2l0QWxsAQUJbHBBbW91bnRfBA5scFRva2Vuc1RvTWludAgFDSR0MDUxNTk3NTE2ODQCXzEEGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQIBQ0kdDA1MTU5NzUxNjg0Al8yBA1hc3NldEJhbGFuY2VzCAUNJHQwNTE1OTc1MTY4NAJfMwkAlAoCBQNuaWwJAJQKAgUObHBUb2tlbnNUb01pbnQFGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKZ2V0RGVwb3NpdAIIYXNzZXRJZF8HYW1vdW50XwQDZXJyAwkBFV92YWxpZGF0ZUxpc3RDb250YWlucwMJAQtfbG9hZEFzc2V0cwAFCGFzc2V0SWRfAhlnZXREZXBvc2l0OiBpbnZhbGlkIGFzc2V0CQEMX3ZhbGlkYXRlSW50BAUHYW1vdW50XwABBQdNQVhfSU5UAhpnZXREZXBvc2l0OiBpbnZhbGlkIGFtb3VudAcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQkA2AQBBQlscEFzc2V0SWQEDWFzc2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQhhc3NldElkXwQQYW1vdW50Tm9ybWFsaXplZAkBEl9ub3JtYWxpemVEZWNpbWFscwQFB2Ftb3VudF8FDWFzc2V0RGVjaW1hbHMFCmxwRGVjaW1hbHMFBERPV04EDSR0MDUyNDQzNTI1NTkJAQhfZGVwb3NpdAIFCGFzc2V0SWRfBRBhbW91bnROb3JtYWxpemVkBA5scFRva2Vuc1RvTWludAgFDSR0MDUyNDQzNTI1NTkCXzEEDWFzc2V0QmFsYW5jZXMIBQ0kdDA1MjQ0MzUyNTU5Al8yBAVscEZlZQgFDSR0MDUyNDQzNTI1NTkCXzMEC3Byb3RvY29sRmVlCAUNJHQwNTI0NDM1MjU1OQJfNAQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDA1MjQ0MzUyNTU5Al81BA5scFRva2Vuc1RvU2VuZAkAZQIJAGUCBQ5scFRva2Vuc1RvTWludAUFbHBGZWUFC3Byb3RvY29sRmVlCQCUCgIFA25pbAUObHBUb2tlbnNUb1NlbmQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOZ2V0V2l0aGRyYXdBbGwBCWxwQW1vdW50XwQDZXJyCQEMX3ZhbGlkYXRlSW50BAUJbHBBbW91bnRfAAAFB01BWF9JTlQCHmdldFdpdGhkcmF3QWxsOiBpbnZhbGlkIGFtb3VudAMJAAACBQNlcnIFA2VycgQNJHQwNTI5OTg1MzA3NAkBDF93aXRoZHJhd0FsbAEFCWxwQW1vdW50XwQObHBUb2tlbnNUb0J1cm4IBQ0kdDA1Mjk5ODUzMDc0Al8xBA1iYWxhbmNlc1RvR2V0CAUNJHQwNTI5OTg1MzA3NAJfMgQNYXNzZXRCYWxhbmNlcwgFDSR0MDUyOTk4NTMwNzQCXzMJAJQKAgUDbmlsBQ1iYWxhbmNlc1RvR2V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC2dldFdpdGhkcmF3Aghhc3NldElkXwdhbW91bnRfBANlcnIDCQEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwkBC19sb2FkQXNzZXRzAAUIYXNzZXRJZF8CGmdldFdpdGhkcmF3OiBpbnZhbGlkIGFzc2V0CQEMX3ZhbGlkYXRlSW50BAUHYW1vdW50XwABBQdNQVhfSU5UAhtnZXRXaXRoZHJhdzogaW52YWxpZCBhbW91bnQHAwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkBA0kdDA1MzcyNTUzODQxCQEJX3dpdGhkcmF3AgUIYXNzZXRJZF8FB2Ftb3VudF8EFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQIBQ0kdDA1MzcyNTUzODQxAl8xBA1hc3NldEJhbGFuY2VzCAUNJHQwNTM3MjU1Mzg0MQJfMgQFbHBGZWUIBQ0kdDA1MzcyNTUzODQxAl8zBAtwcm90b2NvbEZlZQgFDSR0MDUzNzI1NTM4NDECXzQEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNTM3MjU1Mzg0MQJfNQQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQhhc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOCQCUCgIFA25pbAULZmluYWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHZ2V0U3dhcAMOc291cmNlQXNzZXRJZF8OdGFyZ2V0QXNzZXRJZF8Nc291cmNlQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQGYXNzZXRzCQELX2xvYWRBc3NldHMABBBzb3VyY2VBc3NldEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUGYXNzZXRzBQ5zb3VyY2VBc3NldElkXwIac3dhcDogaW52YWxpZCBzb3VyY2UgYXNzZXQDCQAAAgUQc291cmNlQXNzZXRJbmRleAUQc291cmNlQXNzZXRJbmRleAQQdGFyZ2V0QXNzZXRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFBmFzc2V0cwUOdGFyZ2V0QXNzZXRJZF8CGnN3YXA6IGludmFsaWQgdGFyZ2V0IGFzc2V0AwkAAAIFEHRhcmdldEFzc2V0SW5kZXgFEHRhcmdldEFzc2V0SW5kZXgEFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQJARJfbm9ybWFsaXplRGVjaW1hbHMEBQ1zb3VyY2VBbW91bnRfCQEMX2dldERlY2ltYWxzAQUOc291cmNlQXNzZXRJZF8FCmxwRGVjaW1hbHMFBERPV04EA2VycgMJAQxfdmFsaWRhdGVJbnQEBRZzb3VyY2VBbW91bnROb3JtYWxpemVkAAEFB01BWF9JTlQCG3N3YXA6IGludmFsaWQgc291cmNlIGFtb3VudAkBFF92YWxpZGF0ZVN0cmluZ05vdEVxAwUOc291cmNlQXNzZXRJZF8FDnRhcmdldEFzc2V0SWRfAhFzd2FwOiBzYW1lIGFzc2V0cwcDCQAAAgUDZXJyBQNlcnIEDSR0MDU1MjU1NTU0MTMJAQVfc3dhcAMFEHNvdXJjZUFzc2V0SW5kZXgFEHRhcmdldEFzc2V0SW5kZXgFFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQEFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQIBQ0kdDA1NTI1NTU1NDEzAl8xBBJmaW5hbEFzc2V0QmFsYW5jZXMIBQ0kdDA1NTI1NTU1NDEzAl8yBAVscEZlZQgFDSR0MDU1MjU1NTU0MTMCXzMEC3Byb3RvY29sRmVlCAUNJHQwNTUyNTU1NTQxMwJfNAQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDA1NTI1NTU1NDEzAl81BBVmaW5hbEFtb3VudE5vcm1hbGl6ZWQJAGUCCQBlAgUWdGFyZ2V0QW1vdW50Tm9ybWFsaXplZAUFbHBGZWUFC3Byb3RvY29sRmVlBA50YXJnZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFDnRhcmdldEFzc2V0SWRfBAtmaW5hbEFtb3VudAkBEl9ub3JtYWxpemVEZWNpbWFscwQFFWZpbmFsQW1vdW50Tm9ybWFsaXplZAUKbHBEZWNpbWFscwUOdGFyZ2V0RGVjaW1hbHMFBERPV04JAJQKAgUDbmlsBQtmaW5hbEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhnZXRDbGFpbQEFdXNlcl8EBHVzZXIDCQBmAgkAsQIBBQV1c2VyXwAACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUFdXNlcl8CFmdldENsYWltOiBpbnZhbGlkIHVzZXIIBQFpBmNhbGxlcgQNJHQwNTYwNTU1NjExMQkBC19jaGVja3BvaW50AQUEdXNlcgQRY2hlY2twb2ludEFjdGlvbnMIBQ0kdDA1NjA1NTU2MTExAl8xBAt1c2VyUHJvZml0cwgFDSR0MDU2MDU1NTYxMTECXzIJAJQKAgUDbmlsBQt1c2VyUHJvZml0cwFpAQtnZXRVdGlsRnVuYwAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQPd2VpZ2h0QW1wbGlmaWVyCAUHc3RvcmFnZQJfNwQMc2xpcHBhZ2VSYXRlCAUHc3RvcmFnZQJfOAQKZmVlTWF4UmF0ZQgFB3N0b3JhZ2UCXzkEDSR0MDU2NDQ0NTY1MDQJARJfbG9hZEFzc2V0QmFsYW5jZXMABA1hc3NldEJhbGFuY2VzCAUNJHQwNTY0NDQ1NjUwNAJfMQQQYXNzZXRUb3RhbFN1cHBseQgFDSR0MDU2NDQ0NTY1MDQCXzIEDSR0MDU2NTA5NTY1NjIJARFfbG9hZEFzc2V0V2VpZ2h0cwAEDGFzc2V0V2VpZ2h0cwgFDSR0MDU2NTA5NTY1NjICXzEEC3NpZ21hV2VpZ2h0CAUNJHQwNTY1MDk1NjU2MgJfMgQDZmVlCQENX2NhbGN1bGF0ZUZlZQcFDWFzc2V0QmFsYW5jZXMFEGFzc2V0VG90YWxTdXBwbHkFDGFzc2V0V2VpZ2h0cwULc2lnbWFXZWlnaHQFD3dlaWdodEFtcGxpZmllcgUMc2xpcHBhZ2VSYXRlBQpmZWVNYXhSYXRlBAl1dGlsVmFsdWUJAGUCBRBhc3NldFRvdGFsU3VwcGx5BQNmZWUJAJQKAgUDbmlsCQCUCgIFCXV0aWxWYWx1ZQUNbHBUb3RhbFN1cHBseQFpAQpnZXRGZWVGdW5jAAQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAED3dlaWdodEFtcGxpZmllcggFB3N0b3JhZ2UCXzcEDHNsaXBwYWdlUmF0ZQgFB3N0b3JhZ2UCXzgECmZlZU1heFJhdGUIBQdzdG9yYWdlAl85BA0kdDA1Njk5NDU3MDU0CQESX2xvYWRBc3NldEJhbGFuY2VzAAQNYXNzZXRCYWxhbmNlcwgFDSR0MDU2OTk0NTcwNTQCXzEEEGFzc2V0VG90YWxTdXBwbHkIBQ0kdDA1Njk5NDU3MDU0Al8yBA0kdDA1NzA1OTU3MTEyCQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDA1NzA1OTU3MTEyAl8xBAtzaWdtYVdlaWdodAgFDSR0MDU3MDU5NTcxMTICXzIEA2ZlZQkBDV9jYWxjdWxhdGVGZWUHBQ1hc3NldEJhbGFuY2VzBRBhc3NldFRvdGFsU3VwcGx5BQxhc3NldFdlaWdodHMFC3NpZ21hV2VpZ2h0BQ93ZWlnaHRBbXBsaWZpZXIFDHNsaXBwYWdlUmF0ZQUKZmVlTWF4UmF0ZQkAlAoCBQNuaWwFA2ZlZQFpAQpjaGVja3BvaW50AQV1c2VyXwQDZXJyAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwMJAAACBQNlcnIFA2VycgQEdXNlcgMJAGYCCQCxAgEFBXVzZXJfAAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQV1c2VyXwIYY2hlY2twb2ludDogaW52YWxpZCB1c2VyCAUBaQZjYWxsZXIJAQtfY2hlY2twb2ludAEFBHVzZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UABANlcnIDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBCAUHc3RvcmFnZQJfMQQEZXJyMQMDCQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAhxzdGFrZTogaW52YWxpZCBwYXltZW50cyBzaXplCQEUX3ZhbGlkYXRlU3RyaW5nRXF1YWwDBQxscEFzc2V0SWRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAIcc3Rha2U6IGludmFsaWQgcGF5bWVudCBhc3NldAcJAQxfdmFsaWRhdGVJbnQECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAAABQdNQVhfSU5UAh1zdGFrZTogaW52YWxpZCBwYXltZW50IGFtb3VudAcDCQAAAgUEZXJyMQUEZXJyMQQNJHQwNTgxMjA1ODE4MAkBC19jaGVja3BvaW50AQgFAWkGY2FsbGVyBBFjaGVja3BvaW50QWN0aW9ucwgFDSR0MDU4MTIwNTgxODACXzEEC3VzZXJQcm9maXRzCAUNJHQwNTgxMjA1ODE4MAJfMgkAlAoCCQDOCAIJAM4IAgURY2hlY2twb2ludEFjdGlvbnMJAQtfc2F2ZVVzZXJMcAIIBQFpBmNhbGxlcgkAZAIJAQtfbG9hZFVzZXJMcAEIBQFpBmNhbGxlcggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAQxfc2F2ZVRvdGFsTHABCQBkAgkBDF9sb2FkVG90YWxMcAAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB3Vuc3Rha2UBB2Ftb3VudF8EA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBAZ1c2VyTHAJAQtfbG9hZFVzZXJMcAEIBQFpBmNhbGxlcgQEZXJyMQkBDF92YWxpZGF0ZUludAQFB2Ftb3VudF8AAAUGdXNlckxwAhd1bnN0YWtlOiBpbnZhbGlkIGFtb3VudAMJAAACBQRlcnIxBQRlcnIxBA0kdDA1ODY5MTU4NzUxCQELX2NoZWNrcG9pbnQBCAUBaQZjYWxsZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNTg2OTE1ODc1MQJfMQQLdXNlclByb2ZpdHMIBQ0kdDA1ODY5MTU4NzUxAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnRfBQlscEFzc2V0SWQFA25pbAURY2hlY2twb2ludEFjdGlvbnMJAQtfc2F2ZVVzZXJMcAIIBQFpBmNhbGxlcgkAZQIFBnVzZXJMcAUHYW1vdW50XwkBDF9zYXZlVG90YWxMcAEJAGUCCQEMX2xvYWRUb3RhbExwAAUHYW1vdW50XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVjbGFpbQEFdXNlcl8EA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEBHVzZXIDCQBmAgkAsQIBBQV1c2VyXwAACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUFdXNlcl8CE2NsYWltOiBpbnZhbGlkIHVzZXIIBQFpBmNhbGxlcgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQUJbHBBc3NldElkBAZhc3NldHMJAMwIAgUMbHBBc3NldElkU3RyCQELX2xvYWRBc3NldHMABAhtYXhJbmRleAkAZQIJAJADAQUGYXNzZXRzAAEEBnVzZXJMcAkBC19sb2FkVXNlckxwAQUEdXNlcgQNJHQwNTk0NzQ1OTUzMAkBC19jaGVja3BvaW50AQUEdXNlcgQRY2hlY2twb2ludEFjdGlvbnMIBQ0kdDA1OTQ3NDU5NTMwAl8xBAt1c2VyUHJvZml0cwgFDSR0MDU5NDc0NTk1MzACXzIKAQhmb2xkRnVuYwIDYWNjBnByb2ZpdAQFaW5kZXgIBQNhY2MCXzEDAwkAZwIFCG1heEluZGV4BQVpbmRleAkAZgIFBnByb2ZpdAAABwQFYXNzZXQJAJEDAgUGYXNzZXRzBQVpbmRleAkAlQoDCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yAAAJAM0IAggFA2FjYwJfMwkBDlNjcmlwdFRyYW5zZmVyAwUEdXNlcgUGcHJvZml0CQELX3N0clRvQXNzZXQBBQVhc3NldAkAlQoDCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBQZwcm9maXQIBQNhY2MCXzMEDSR0MDU5OTA4NTk5OTkKAAIkbAULdXNlclByb2ZpdHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMAAAUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDU5OTA4NTk5OTkCXzEEEnVzZXJQcm9maXRzVXBkYXRlZAgFDSR0MDU5OTA4NTk5OTkCXzIEDXByb2ZpdEFjdGlvbnMIBQ0kdDA1OTkwODU5OTk5Al8zCQCUCgIJAM4IAgkAzggCBQ1wcm9maXRBY3Rpb25zCQDRCAIFEWNoZWNrcG9pbnRBY3Rpb25zAAAJARBfc2F2ZVVzZXJQcm9maXRzAgUEdXNlcgUSdXNlclByb2ZpdHNVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXBhdXNlAAQDZXJyAwMJAQtfb25seVBhdXNlcgEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBCl9zYXZlUGF1c2UBBgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQd1bnBhdXNlAAQDZXJyAwMJAQtfb25seVBhdXNlcgEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBC193aGVuUGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBCl9zYXZlUGF1c2UBBwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQx1cGRhdGVQYXVzZXIBB3BhdXNlcl8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJARBfdmFsaWRhdGVBZGRyZXNzAgUHcGF1c2VyXwIcdXBkYXRlUGF1c2VyOiBpbnZhbGlkIHBhdXNlcgcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBC19zYXZlUGF1c2VyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUHcGF1c2VyXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtzZXRNdWx0aXNpZwEJbXVsdGlzaWdfBANlcnIDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfdmFsaWRhdGVBZGRyZXNzAgUJbXVsdGlzaWdfAh1zZXRNdWx0aXNpZzogaW52YWxpZCBtdWx0aXNpZwcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDV9zYXZlTXVsdGlzaWcBCQERQGV4dHJOYXRpdmUoMTA2MikBBQltdWx0aXNpZ18FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAckbWF0Y2gwCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gwAgZTdHJpbmcECG11bHRpc2lnBQckbWF0Y2gwCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCG11bHRpc2lnCQC5CQIJAMwIAgUKS0VZX1NUQVRVUwkAzAgCCQClCAEFBHRoaXMJAMwIAgkA2AQBCAUCdHgCaWQFA25pbAUDU0VQBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleci/vCw=", "height": 2704489, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C7AFEknEoWCDGjqRfurQsA28eowsH5pUcEpec9G8QH6q Next: 7EYmVN4bsGkpXRNwu8omCtmm7inQu7pZqWhPjn9m9t5S Diff:
OldNewDifferences
2121
2222 let j = 1000000
2323
24-let k = toBigInt(1000000000000)
24+let k = toBigInt(1000000000000000000)
2525
2626 let l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2727
10131013 let cz = fraction((cw - cp(cv, cw, bD, bL, cj, ck, cl)), j, cb)
10141014 let cA = (cz - cy)
10151015 if (if ((0 >= cA))
1016- then ((-1 * j) > cA)
1016+ then ((-1 * aZ()) > cA)
10171017 else false)
10181018 then throw(("_validateLiquidityInvariant: revert: diff=" + toString(cA)))
10191019 else true
10251025 let cD = (cw - cp(cv, cw, bD, bL, cj, ck, cl))
10261026 let cA = (cD - cC)
10271027 if (if ((0 >= cA))
1028- then ((-1 * j) > cA)
1028+ then ((-1 * aZ()) > cA)
10291029 else false)
10301030 then throw(("_validateSwapInvariant: revert: diff=" + toString(cA)))
10311031 else true
10501050 else if ((cJ > ch))
10511051 then if ((cF > cK))
10521052 then throw("_validateAssetAllocation: new down")
1053- else if (((cK - cF) > (cJ - ch)))
1053+ else if (((cJ - ch) > (cK - cF)))
10541054 then throw("_validateAssetAllocation: still down")
10551055 else true
10561056 else true
12381238 func dH (O,bx) = {
12391239 let bq = aH()
12401240 let dk = bq._3
1241- let dI = bq._6
1241+ let dI = bq._4
1242+ let dJ = bq._5
1243+ let dK = bq._6
12421244 let dl = bq._7
12431245 let dm = bq._8
12441246 let dn = bq._9
12451247 let do = aL()
1246- let dJ = aR()
1247- let dq = dJ._1
1248- let dr = dJ._2
1249- let dK = aN()
1250- let dt = dK._1
1251- let du = dK._2
1248+ let dL = aR()
1249+ let dq = dL._1
1250+ let dr = dL._2
1251+ let dM = aN()
1252+ let dt = dM._1
1253+ let du = dM._2
12521254 let dE = bX(dt, value(indexOf(do, O)), bx)
12531255 let dF = (du + bx)
1254- let dG = cL(dE, dF, dt, du, dq, dr, dI)
1256+ let dG = cL(dE, dF, dt, du, dq, dr, dK)
12551257 if ((dG == dG))
12561258 then {
1257- let dL = cp(dt, du, dq, dr, dl, dm, dn)
1258- let dM = cp(dE, dF, dq, dr, dl, dm, dn)
1259+ let dN = cp(dt, du, dq, dr, dl, dm, dn)
1260+ let dO = cp(dE, dF, dq, dr, dl, dm, dn)
12591261 let dC = if ((dk == 0))
1260- then (dF - dM)
1262+ then throw("_deposit: empty pool")
12611263 else {
1262- let dN = (dF - du)
1263- let dO = (dM - dL)
1264- let dP = fraction((dN - dO), j, (du - dL))
1265- let dQ = fraction(dk, dP, j)
1266- let dR = cs(dt, du, dE, dF, dk, (dk + dQ), dq, dr, dl, dm, dn)
1267- if ((dR == dR))
1268- then dQ
1264+ let dP = (dF - du)
1265+ let dQ = (dO - dN)
1266+ let dR = fraction((dP - dQ), j, (du - dN))
1267+ let dS = fraction(dk, dR, j)
1268+ let dT = cs(dt, du, dE, dF, dk, (dk + dS), dq, dr, dl, dm, dn)
1269+ if ((dT == dT))
1270+ then dS
12691271 else throw("Strict value is not equal to itself.")
12701272 }
1271- $Tuple2(dC, dE)
1272- }
1273- else throw("Strict value is not equal to itself.")
1274- }
1275-
1276-
1277-func dS (bx) = {
1273+ let dU = db(0, dC, (dI / 2), (dJ / 2))
1274+ let dh = dU._1
1275+ let di = dU._2
1276+ let cZ = dU._3
1277+ $Tuple5(dC, dE, dh, di, cZ)
1278+ }
1279+ else throw("Strict value is not equal to itself.")
1280+ }
1281+
1282+
1283+func dV (bx) = {
12781284 let bq = aH()
12791285 let dk = bq._3
1280- let dT = bq._4
1281- let dU = bq._5
1282- let dI = bq._6
1286+ let dK = bq._6
12831287 let dl = bq._7
12841288 let dm = bq._8
12851289 let dn = bq._9
1286- let dV = aN()
1287- let dt = dV._1
1288- let du = dV._2
1289- let dW = aR()
1290- let dq = dW._1
1291- let dr = dW._2
1292- let dX = db(0, bx, dT, dU)
1293- let dh = dX._1
1294- let di = dX._2
1295- let cZ = dX._3
1296- let dY = ((bx - dh) - di)
1290+ let dW = aN()
1291+ let dt = dW._1
1292+ let du = dW._2
1293+ let dX = aR()
1294+ let dq = dX._1
1295+ let dr = dX._2
1296+ let dY = bx
12971297 let bW = P(dY, 0, c, "_withdrawAll: lpTokensToBurn less than 0")
12981298 if ((bW == bW))
12991299 then {
13031303 let ea = dZ._3
13041304 let dG = cs(dt, du, dE, dF, dk, (dk - dY), dq, dr, dl, dm, dn)
13051305 if ((dG == dG))
1306- then $Tuple6(dY, ea, dE, dh, di, cZ)
1306+ then $Tuple3(dY, ea, dE)
13071307 else throw("Strict value is not equal to itself.")
13081308 }
13091309 else throw("Strict value is not equal to itself.")
13131313 func eb (O,ec) = {
13141314 let bq = aH()
13151315 let dk = bq._3
1316- let dT = bq._4
1317- let dU = bq._5
1318- let dI = bq._6
1316+ let dI = bq._4
1317+ let dJ = bq._5
1318+ let dK = bq._6
13191319 let dl = bq._7
13201320 let dm = bq._8
13211321 let dn = bq._9
13281328 let dq = ef._1
13291329 let dr = ef._2
13301330 let eg = value(indexOf(do, O))
1331- let dL = cp(dt, du, dq, dr, dl, dm, dn)
1332- let eh = (du - dL)
1331+ let dN = cp(dt, du, dq, dr, dl, dm, dn)
1332+ let eh = (du - dN)
13331333 let ei = fraction(toBigInt((dk - ec)), k, toBigInt(dk))
13341334 let ej = toInt(fraction(toBigInt(eh), ei, k))
13351335 func aa (ab,ac) = if (ab._1)
13411341 let en = bZ(dt, eg, em)
13421342 let eo = (du - em)
13431343 let ep = (eo - cp(en, eo, dq, dr, dl, dm, dn))
1344- if (if ((ed > (ep - ej)))
1345- then ((ep - ej) >= 0)
1344+ if (if (((ep - ej) > (-1 * ed)))
1345+ then (ed > (ep - ej))
13461346 else false)
13471347 then $Tuple4(true, ek, el, em)
13481348 else if ((0 > (ep - ej)))
1349- then $Tuple4(false, ek, em, 0)
1350- else $Tuple4(false, em, el, 0)
1349+ then $Tuple4(false, ek, em, em)
1350+ else $Tuple4(false, em, el, em)
13511351 }
13521352
13531353 let eq = {
1354- let eq = ec
1355- let en = bZ(dt, eg, eq)
1356- let eo = (du - eq)
1357- let dM = cp(en, eo, dq, dr, dl, dm, dn)
1358- let dO = (dM - dL)
1359- if ((dO == 0))
1360- then eq
1361- else {
1362- let er = {
1363- let ad = r
1364- let ae = size(ad)
1365- let af = $Tuple4(false, 0, (ec + dL), 0)
1366- func ag (ah,ai) = if ((ai >= ae))
1367- then ah
1368- else aa(ah, ad[ai])
1369-
1370- func aj (ah,ai) = if ((ai >= ae))
1371- then ah
1372- else throw("List size exceeds 64")
1373-
1374- aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 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)
1375- }
1376- let es = er._1
1377- let et = er._2
1378- let eu = er._3
1379- let ev = er._4
1380- if (!(es))
1381- then throw(("_withdraw: can't calculate targetAmount=" + toString(ev)))
1382- else ev
1383- }
1354+ let er = {
1355+ let ad = r
1356+ let ae = size(ad)
1357+ let af = $Tuple4(false, 0, (ec + dN), 0)
1358+ func ag (ah,ai) = if ((ai >= ae))
1359+ then ah
1360+ else aa(ah, ad[ai])
1361+
1362+ func aj (ah,ai) = if ((ai >= ae))
1363+ then ah
1364+ else throw("List size exceeds 64")
1365+
1366+ aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 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)
1367+ }
1368+ let es = er._1
1369+ let et = er._2
1370+ let eu = er._3
1371+ let ev = er._4
1372+ if (!(es))
1373+ then throw(("_withdraw: can't calculate targetAmount=" + toString(ev)))
1374+ else ev
13841375 }
13851376 let ew = bZ(dt, eg, eq)
13861377 let ex = (du - eq)
1387- let ey = if (cL(ew, ex, dt, du, dq, dr, dI))
1378+ let ey = if (cL(ew, ex, dt, du, dq, dr, dK))
13881379 then cs(dt, du, ew, ex, dk, (dk - ec), dq, dr, dl, dm, dn)
13891380 else false
13901381 if ((ey == ey))
13911382 then {
1392- let ez = db((eg + 1), eq, dT, dU)
1383+ let ez = db((eg + 1), eq, (dI / 2), (dJ / 2))
13931384 let dh = ez._1
13941385 let di = ez._2
13951386 let cZ = ez._3
14041395 let eE = bq._1
14051396 let eF = bv(toBase58String(eE))
14061397 let dk = bq._3
1407- let dT = bq._4
1408- let dU = bq._5
1409- let dI = bq._6
1398+ let dI = bq._4
1399+ let dJ = bq._5
1400+ let dK = bq._6
14101401 let dl = bq._7
14111402 let dm = bq._8
14121403 let dn = bq._9
14191410 let dr = eH._2
14201411 let dE = bX(dt, eB, eD)
14211412 let dF = (du + eD)
1422- let dL = cp(dt, du, dq, dr, dl, dm, dn)
1423- let eh = (du - dL)
1413+ let dN = cp(dt, du, dq, dr, dl, dm, dn)
1414+ let eh = (du - dN)
14241415 func aa (ab,ac) = if (ab._1)
14251416 then ab
14261417 else {
14301421 let en = bZ(dE, eC, em)
14311422 let eo = (dF - em)
14321423 let ep = (eo - cp(en, eo, dq, dr, dl, dm, dn))
1433- if (if ((ed > (ep - eh)))
1434- then ((ep - eh) >= 0)
1424+ if (if (((ep - eh) > (-1 * ed)))
1425+ then (ed > (ep - eh))
14351426 else false)
14361427 then $Tuple4(true, ek, el, em)
14371428 else if ((0 > (ep - eh)))
1438- then $Tuple4(false, ek, em, 0)
1439- else $Tuple4(false, em, el, 0)
1429+ then $Tuple4(false, ek, em, em)
1430+ else $Tuple4(false, em, el, em)
14401431 }
14411432
14421433 let eq = {
14431434 let eq = eD
14441435 let en = bZ(dE, eC, eq)
14451436 let eo = (dF - eq)
1446- let dM = cp(en, eo, dq, dr, dl, dm, dn)
1447- let dO = (dM - dL)
1448- if ((dO == 0))
1437+ let dO = cp(en, eo, dq, dr, dl, dm, dn)
1438+ let dQ = (dO - dN)
1439+ if ((dQ == 0))
14491440 then eq
14501441 else {
14511442 let eI = {
14521443 let ad = r
14531444 let ae = size(ad)
1454- let af = $Tuple4(false, 0, (eD + dL), 0)
1445+ let af = $Tuple4(false, 0, (eD + dN), 0)
14551446 func ag (ah,ai) = if ((ai >= ae))
14561447 then ah
14571448 else aa(ah, ad[ai])
14731464 }
14741465 let ew = bZ(dE, eC, eq)
14751466 let ex = (dF - eq)
1476- let ey = if (cL(ew, ex, dt, du, dq, dr, dI))
1467+ let ey = if (cL(ew, ex, dt, du, dq, dr, dK))
14771468 then cB(dt, du, ew, ex, dq, dr, dl, dm, dn)
14781469 else false
14791470 if ((ey == ey))
14801471 then {
1481- let eJ = db((eC + 1), eq, dT, dU)
1472+ let eJ = db((eC + 1), eq, dI, dJ)
14821473 let dh = eJ._1
14831474 let di = eJ._2
14841475 let cZ = eJ._3
14891480
14901481
14911482 @Callable(eK)
1492-func init (al,bD,dd,de,eL,eM,eN,eO,cj,ck,cl,eP,eQ) = {
1493- let bW = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bm(eK.caller))
1483+func init (al,bD,dd,de,eL,eM,eN,eO,cj,ck,cl,eP,eQ,aD) = {
1484+ let bW = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bm(eK.caller))
14941485 then bp()
14951486 else false)
14961487 then bo()
14971488 else false)
14981489 then ak(al, "init: invalid assets")
14991490 else false)
1500- then Z(bD, 0, g, "init: invalid assetWeights")
1491+ then Z(bD, 1, g, "init: invalid assetWeights")
15011492 else false)
15021493 then am(size(al), size(bD), "init: invalid assetWeights size")
15031494 else false)
15211512 else false)
15221513 then I(eP, "init: invalid protocolFeeContract")
15231514 else false)
1524- then P(eQ, 0, c, "init: invalid precision")
1515+ then P(eQ, 1, c, "init: invalid precision")
1516+ else false)
1517+ then I(aD, "init: invalid pauser")
15251518 else false
15261519 if ((bW == bW))
15271520 then {
15321525 let eS = Issue(eL, eM, 0, eN, true)
15331526 let eE = calculateAssetId(eS)
15341527 let eT = $Tuple10(eE, true, 0, dd, de, eO, cj, ck, cl, addressFromStringValue(eP))
1535- $Tuple2((((((([eS] ++ aJ(eT)) ++ aM(al)) ++ aP(dE)) ++ aT(dq)) ++ ba(eQ)) ++ bc(bb())), unit)
1528+ $Tuple2(((((((([eS] ++ aJ(eT)) ++ aM(al)) ++ aP(dE)) ++ aT(dq)) ++ ba(eQ)) ++ bc(bb())) ++ aC(addressFromStringValue(aD))), unit)
15361529 }
15371530 else throw("Strict value is not equal to itself.")
15381531 }
16101603 then {
16111604 let bq = aH()
16121605 let eE = bq._1
1613- let eF = bv(toBase58String(eE))
1606+ let fb = av(eE)
1607+ let eF = bv(fb)
16141608 let ey = if (if (if (if (br())
16151609 then bs()
16161610 else false)
16181612 else false)
16191613 then at(aL(), av(eK.payments[0].assetId), "deposit: invalid payment asset")
16201614 else false)
1621- then P(eK.payments[0].amount, 0, c, "deposit: invalid payment amount")
1615+ then P(eK.payments[0].amount, 1, c, "deposit: invalid payment amount")
16221616 else false
16231617 if ((ey == ey))
16241618 then {
1625- let fb = av(eK.payments[0].assetId)
1626- let bG = bv(fb)
1627- let fc = bw(eK.payments[0].amount, bG, eF, DOWN)
1628- let fd = dH(fb, fc)
1629- let dC = fd._1
1630- let dE = fd._2
1631- let dG = P(dC, fa, c, "deposit: less than min lp")
1619+ let fc = av(eK.payments[0].assetId)
1620+ let bG = bv(fc)
1621+ let fd = bw(eK.payments[0].amount, bG, eF, DOWN)
1622+ let fe = dH(fc, fd)
1623+ let dC = fe._1
1624+ let dE = fe._2
1625+ let dh = fe._3
1626+ let di = fe._4
1627+ let cZ = fe._5
1628+ let ff = ((dC - dh) - di)
1629+ let dG = P(ff, fa, c, "deposit: less than min")
16321630 if ((dG == dG))
16331631 then {
16341632 let eT = $Tuple10(bq._1, bq._2, (bq._3 + dC), bq._4, bq._5, bq._6, bq._7, bq._8, bq._9, bq._10)
1635- $Tuple2((([Reissue(eE, dC, true), ScriptTransfer(eK.caller, dC, eE)] ++ aJ(eT)) ++ aP(dE)), unit)
1633+ $Tuple2(((((([Reissue(eE, dC, true), ScriptTransfer(eK.caller, ff, eE)] ++ aJ(eT)) ++ aP(dE)) ++ aW(fb, (dh + aV(fb)))) ++ aY(fb, (di + aX(fb)))) ++ bc(cZ)), unit)
16361634 }
16371635 else throw("Strict value is not equal to itself.")
16381636 }
16471645 func withdrawAll () = {
16481646 let bq = aH()
16491647 let eE = bq._1
1650- let fe = toBase58String(eE)
1651- let eF = bv(fe)
1648+ let fb = toBase58String(eE)
1649+ let eF = bv(fb)
16521650 let do = aL()
16531651 let bW = if (if (if (if (br())
16541652 then bs()
16551653 else false)
16561654 then am(size(eK.payments), 1, "withdrawAll: invalid payments size")
16571655 else false)
1658- then V(fe, av(eK.payments[0].assetId), "withdrawAll: invalid payment asset")
1659- else false)
1660- then P(eK.payments[0].amount, 0, c, "withdrawAll: invalid payment amount")
1656+ then V(fb, av(eK.payments[0].assetId), "withdrawAll: invalid payment asset")
1657+ else false)
1658+ then P(eK.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
16611659 else false
16621660 if ((bW == bW))
16631661 then {
1664- let ff = dS(eK.payments[0].amount)
1665- let dY = ff._1
1666- let ea = ff._2
1667- let dE = ff._3
1668- let dh = ff._4
1669- let di = ff._5
1670- let cZ = ff._6
1671- let fg = ce(do, ea, eK.caller, eF)
1662+ let fg = dV(eK.payments[0].amount)
1663+ let dY = fg._1
1664+ let ea = fg._2
1665+ let dE = fg._3
1666+ let fh = ce(do, ea, eK.caller, eF)
16721667 let eT = $Tuple10(bq._1, bq._2, (bq._3 - dY), bq._4, bq._5, bq._6, bq._7, bq._8, bq._9, bq._10)
1673- $Tuple2((((((([Burn(eE, dY)] ++ fg) ++ aJ(eT)) ++ aP(dE)) ++ aW(fe, (dh + aV(fe)))) ++ aY(fe, (di + aX(fe)))) ++ bc(cZ)), unit)
1668+ $Tuple2(((([Burn(eE, dY)] ++ fh) ++ aJ(eT)) ++ aP(dE)), unit)
16741669 }
16751670 else throw("Strict value is not equal to itself.")
16761671 }
16781673
16791674
16801675 @Callable(eK)
1681-func withdraw (O,fh) = {
1676+func withdraw (O,fi) = {
16821677 let bq = aH()
16831678 let eE = bq._1
1684- let fe = toBase58String(eE)
1685- let eF = bv(fe)
1679+ let fb = toBase58String(eE)
1680+ let eF = bv(fb)
16861681 let do = aL()
16871682 let bW = if (if (if (if (if (if (br())
16881683 then bs()
16891684 else false)
16901685 then am(size(eK.payments), 1, "withdraw: invalid payments size")
16911686 else false)
1692- then V(fe, av(eK.payments[0].assetId), "withdraw: invalid payment asset")
1693- else false)
1694- then P(eK.payments[0].amount, 0, c, "withdraw: invalid payment amount")
1687+ then V(fb, av(eK.payments[0].assetId), "withdraw: invalid payment asset")
1688+ else false)
1689+ then P(eK.payments[0].amount, 1, c, "withdraw: invalid payment amount")
16951690 else false)
16961691 then at(do, O, "withdraw: invalid assetId")
16971692 else false)
1698- then P(fh, 0, c, "withdraw: invalid minAmount")
1693+ then P(fi, 0, c, "withdraw: invalid minAmount")
16991694 else false
17001695 if ((bW == bW))
17011696 then {
1702- let fi = eb(O, eK.payments[0].amount)
1703- let fj = fi._1
1704- let ew = fi._2
1705- let dh = fi._3
1706- let di = fi._4
1707- let cZ = fi._5
1708- let fk = ((fj - dh) - di)
1709- let fl = bv(O)
1710- let fm = bw(fk, eF, fl, DOWN)
1711- let ey = P(fm, fh, c, "withdraw: insufficient final amount")
1697+ let fj = eb(O, eK.payments[0].amount)
1698+ let fk = fj._1
1699+ let ew = fj._2
1700+ let dh = fj._3
1701+ let di = fj._4
1702+ let cZ = fj._5
1703+ let fl = ((fk - dh) - di)
1704+ let fm = bv(O)
1705+ let fn = bw(fl, eF, fm, DOWN)
1706+ let ey = P(fn, fi, c, "withdraw: less than min")
17121707 if ((ey == ey))
17131708 then {
17141709 let eT = $Tuple10(bq._1, bq._2, (bq._3 - eK.payments[0].amount), bq._4, bq._5, bq._6, bq._7, bq._8, bq._9, bq._10)
1715- $Tuple2(((((([Burn(eE, eK.payments[0].amount), ScriptTransfer(eK.caller, fm, ax(O))] ++ aJ(eT)) ++ aP(ew)) ++ aW(O, (dh + aV(O)))) ++ aY(O, (di + aX(O)))) ++ bc(cZ)), unit)
1710+ $Tuple2(((((([Burn(eE, eK.payments[0].amount), ScriptTransfer(eK.caller, fn, ax(O))] ++ aJ(eT)) ++ aP(ew)) ++ aW(O, (dh + aV(O)))) ++ aY(O, (di + aX(O)))) ++ bc(cZ)), unit)
17161711 }
17171712 else throw("Strict value is not equal to itself.")
17181713 }
17221717
17231718
17241719 @Callable(eK)
1725-func swap (fn,fh) = {
1720+func swap (fo,fi) = {
17261721 let bq = aH()
17271722 let eE = bq._1
17281723 let eF = bv(toBase58String(eE))
17291724 let do = aL()
1730- let fo = av(eK.payments[0].assetId)
1731- let fp = bw(eK.payments[0].amount, bv(fo), eF, DOWN)
1732- let fq = valueOrErrorMessage(indexOf(do, fo), "swap: invalid source asset")
1733- if ((fq == fq))
1734- then {
1735- let eg = valueOrErrorMessage(indexOf(do, fn), "swap: invalid target asset")
1725+ let fp = av(eK.payments[0].assetId)
1726+ let fq = bw(eK.payments[0].amount, bv(fp), eF, DOWN)
1727+ let fr = valueOrErrorMessage(indexOf(do, fp), "swap: invalid source asset")
1728+ if ((fr == fr))
1729+ then {
1730+ let eg = valueOrErrorMessage(indexOf(do, fo), "swap: invalid target asset")
17361731 if ((eg == eg))
17371732 then {
17381733 let bW = if (if (if (if (if (br())
17391734 then bs()
17401735 else false)
1741- then P(fh, 0, c, "swap: invalid min target amount")
1736+ then P(fi, 0, c, "swap: invalid min target amount")
17421737 else false)
1743- then P(fp, 0, c, "swap: invalid source amount")
1738+ then P(fq, 1, c, "swap: invalid source amount")
17441739 else false)
1745- then Y(fo, fn, "swap: same assets")
1740+ then Y(fp, fo, "swap: same assets")
17461741 else false)
17471742 then am(size(eK.payments), 1, "swap: invalid payments size")
17481743 else false
17491744 if ((bW == bW))
17501745 then {
1751- let fr = eA(fq, eg, fp)
1752- let fj = fr._1
1753- let ew = fr._2
1754- let dh = fr._3
1755- let di = fr._4
1756- let cZ = fr._5
1757- let fk = ((fj - dh) - di)
1758- let fl = bv(fn)
1759- let fm = bw(fk, eF, fl, DOWN)
1760- let ey = P(fm, fh, c, "swap: insufficient final amount")
1746+ let fs = eA(fr, eg, fq)
1747+ let fk = fs._1
1748+ let ew = fs._2
1749+ let dh = fs._3
1750+ let di = fs._4
1751+ let cZ = fs._5
1752+ let fl = ((fk - dh) - di)
1753+ let fm = bv(fo)
1754+ let fn = bw(fl, eF, fm, DOWN)
1755+ let ey = P(fn, fi, c, "swap: less than min")
17611756 if ((ey == ey))
1762- then $Tuple2((((([ScriptTransfer(eK.caller, fm, ax(fn))] ++ aP(ew)) ++ aW(fn, (dh + aV(fn)))) ++ aY(fn, (di + aX(fn)))) ++ bc(cZ)), unit)
1757+ then $Tuple2((((([ScriptTransfer(eK.caller, fn, ax(fo))] ++ aP(ew)) ++ aW(fo, (dh + aV(fo)))) ++ aY(fo, (di + aX(fo)))) ++ bc(cZ)), unit)
17631758 else throw("Strict value is not equal to itself.")
17641759 }
17651760 else throw("Strict value is not equal to itself.")
17731768
17741769 @Callable(eK)
17751770 func getDepositAll (ec) = {
1776- let bW = P(ec, 0, c, "getDepositAll: invalid amount")
1771+ let bW = P(ec, 1, c, "getDepositAll: invalid amount")
17771772 if ((bW == bW))
17781773 then {
1779- let fs = dj(ec)
1780- let dC = fs._1
1781- let dy = fs._2
1782- let dE = fs._3
1774+ let ft = dj(ec)
1775+ let dC = ft._1
1776+ let dy = ft._2
1777+ let dE = ft._3
17831778 $Tuple2(nil, $Tuple2(dC, dy))
17841779 }
17851780 else throw("Strict value is not equal to itself.")
17901785 @Callable(eK)
17911786 func getDeposit (O,bx) = {
17921787 let bW = if (at(aL(), O, "getDeposit: invalid asset"))
1793- then P(bx, 0, c, "getDeposit: invalid amount")
1788+ then P(bx, 1, c, "getDeposit: invalid amount")
17941789 else false
17951790 if ((bW == bW))
17961791 then {
17981793 let eE = bq._1
17991794 let eF = bv(toBase58String(eE))
18001795 let bG = bv(O)
1801- let fc = bw(bx, bG, eF, DOWN)
1802- let ft = dH(O, fc)
1803- let dC = ft._1
1804- let dE = ft._2
1805- $Tuple2(nil, dC)
1796+ let fd = bw(bx, bG, eF, DOWN)
1797+ let fu = dH(O, fd)
1798+ let dC = fu._1
1799+ let dE = fu._2
1800+ let dh = fu._3
1801+ let di = fu._4
1802+ let cZ = fu._5
1803+ let ff = ((dC - dh) - di)
1804+ $Tuple2(nil, ff)
18061805 }
18071806 else throw("Strict value is not equal to itself.")
18081807 }
18141813 let bW = P(ec, 0, c, "getWithdrawAll: invalid amount")
18151814 if ((bW == bW))
18161815 then {
1817- let fu = dS(ec)
1818- let dY = fu._1
1819- let fv = fu._2
1820- let dE = fu._3
1821- let dh = fu._4
1822- let di = fu._5
1823- let cZ = fu._6
1824- $Tuple2(nil, fv)
1816+ let fv = dV(ec)
1817+ let dY = fv._1
1818+ let fw = fv._2
1819+ let dE = fv._3
1820+ $Tuple2(nil, fw)
18251821 }
18261822 else throw("Strict value is not equal to itself.")
18271823 }
18311827 @Callable(eK)
18321828 func getWithdraw (O,bx) = {
18331829 let bW = if (at(aL(), O, "getWithdraw: invalid asset"))
1834- then P(bx, 0, c, "getWithdraw: invalid amount")
1830+ then P(bx, 1, c, "getWithdraw: invalid amount")
18351831 else false
18361832 if ((bW == bW))
18371833 then {
18381834 let bq = aH()
18391835 let eE = bq._1
18401836 let eF = bv(toBase58String(eE))
1841- let fw = eb(O, bx)
1842- let fj = fw._1
1843- let dE = fw._2
1844- let dh = fw._3
1845- let di = fw._4
1846- let cZ = fw._5
1847- let fk = ((fj - dh) - di)
1848- let fl = bv(O)
1849- let fm = bw(fk, eF, fl, DOWN)
1850- $Tuple2(nil, fm)
1837+ let fx = eb(O, bx)
1838+ let fk = fx._1
1839+ let dE = fx._2
1840+ let dh = fx._3
1841+ let di = fx._4
1842+ let cZ = fx._5
1843+ let fl = ((fk - dh) - di)
1844+ let fm = bv(O)
1845+ let fn = bw(fl, eF, fm, DOWN)
1846+ $Tuple2(nil, fn)
18511847 }
18521848 else throw("Strict value is not equal to itself.")
18531849 }
18551851
18561852
18571853 @Callable(eK)
1858-func getSwap (fx,fn,eD) = {
1854+func getSwap (fy,fo,eD) = {
18591855 let bq = aH()
18601856 let eE = bq._1
18611857 let eF = bv(toBase58String(eE))
18621858 let do = aL()
1863- let fq = valueOrErrorMessage(indexOf(do, fx), "swap: invalid source asset")
1864- if ((fq == fq))
1865- then {
1866- let eg = valueOrErrorMessage(indexOf(do, fn), "swap: invalid target asset")
1859+ let fr = valueOrErrorMessage(indexOf(do, fy), "swap: invalid source asset")
1860+ if ((fr == fr))
1861+ then {
1862+ let eg = valueOrErrorMessage(indexOf(do, fo), "swap: invalid target asset")
18671863 if ((eg == eg))
18681864 then {
1869- let fp = bw(eD, bv(fx), eF, DOWN)
1870- let bW = if (P(fp, 0, c, "swap: invalid source amount"))
1871- then Y(fx, fn, "swap: same assets")
1865+ let fq = bw(eD, bv(fy), eF, DOWN)
1866+ let bW = if (P(fq, 1, c, "swap: invalid source amount"))
1867+ then Y(fy, fo, "swap: same assets")
18721868 else false
18731869 if ((bW == bW))
18741870 then {
1875- let fy = eA(fq, eg, fp)
1876- let fj = fy._1
1877- let ew = fy._2
1878- let dh = fy._3
1879- let di = fy._4
1880- let cZ = fy._5
1881- let fk = ((fj - dh) - di)
1882- let fl = bv(fn)
1883- let fm = bw(fk, eF, fl, DOWN)
1884- $Tuple2(nil, fm)
1871+ let fz = eA(fr, eg, fq)
1872+ let fk = fz._1
1873+ let ew = fz._2
1874+ let dh = fz._3
1875+ let di = fz._4
1876+ let cZ = fz._5
1877+ let fl = ((fk - dh) - di)
1878+ let fm = bv(fo)
1879+ let fn = bw(fl, eF, fm, DOWN)
1880+ $Tuple2(nil, fn)
18851881 }
18861882 else throw("Strict value is not equal to itself.")
18871883 }
18941890
18951891 @Callable(eK)
18961892 func getClaim (be) = {
1897- let fz = if ((size(be) > 0))
1893+ let fA = if ((size(be) > 0))
18981894 then valueOrErrorMessage(addressFromString(be), "getClaim: invalid user")
18991895 else eK.caller
1900- let fA = cM(fz)
1901- let fB = fA._1
1902- let cO = fA._2
1896+ let fB = cM(fA)
1897+ let fC = fB._1
1898+ let cO = fB._2
19031899 $Tuple2(nil, cO)
19041900 }
19051901
19121908 let dl = bq._7
19131909 let dm = bq._8
19141910 let dn = bq._9
1915- let fC = aN()
1916- let dE = fC._1
1917- let dF = fC._2
1918- let fD = aR()
1919- let dq = fD._1
1920- let dr = fD._2
1921- let dM = cp(dE, dF, dq, dr, dl, dm, dn)
1922- let ep = (dF - dM)
1911+ let fD = aN()
1912+ let dE = fD._1
1913+ let dF = fD._2
1914+ let fE = aR()
1915+ let dq = fE._1
1916+ let dr = fE._2
1917+ let dO = cp(dE, dF, dq, dr, dl, dm, dn)
1918+ let ep = (dF - dO)
19231919 $Tuple2(nil, $Tuple2(ep, dk))
1920+ }
1921+
1922+
1923+
1924+@Callable(eK)
1925+func getFeeFunc () = {
1926+ let bq = aH()
1927+ let dl = bq._7
1928+ let dm = bq._8
1929+ let dn = bq._9
1930+ let fF = aN()
1931+ let dE = fF._1
1932+ let dF = fF._2
1933+ let fG = aR()
1934+ let dq = fG._1
1935+ let dr = fG._2
1936+ let dO = cp(dE, dF, dq, dr, dl, dm, dn)
1937+ $Tuple2(nil, dO)
19241938 }
19251939
19261940
19321946 else false
19331947 if ((bW == bW))
19341948 then {
1935- let fz = if ((size(be) > 0))
1949+ let fA = if ((size(be) > 0))
19361950 then valueOrErrorMessage(addressFromString(be), "checkpoint: invalid user")
19371951 else eK.caller
1938- cM(fz)
1952+ cM(fA)
19391953 }
19401954 else throw("Strict value is not equal to itself.")
19411955 }
19501964 if ((bW == bW))
19511965 then {
19521966 let bq = aH()
1953- let fe = av(bq._1)
1967+ let fb = av(bq._1)
19541968 let ey = if (if (am(size(eK.payments), 1, "stake: invalid payments size"))
1955- then V(fe, av(eK.payments[0].assetId), "stake: invalid payment asset")
1969+ then V(fb, av(eK.payments[0].assetId), "stake: invalid payment asset")
19561970 else false)
19571971 then P(eK.payments[0].amount, 0, c, "stake: invalid payment amount")
19581972 else false
19591973 if ((ey == ey))
19601974 then {
1961- let fE = cM(eK.caller)
1962- let fB = fE._1
1963- let cO = fE._2
1964- $Tuple2(((fB ++ bh(eK.caller, (bg(eK.caller) + eK.payments[0].amount))) ++ bj((bi() + eK.payments[0].amount))), unit)
1975+ let fH = cM(eK.caller)
1976+ let fC = fH._1
1977+ let cO = fH._2
1978+ $Tuple2(((fC ++ bh(eK.caller, (bg(eK.caller) + eK.payments[0].amount))) ++ bj((bi() + eK.payments[0].amount))), unit)
19651979 }
19661980 else throw("Strict value is not equal to itself.")
19671981 }
19831997 let ey = P(bx, 0, cN, "unstake: invalid amount")
19841998 if ((ey == ey))
19851999 then {
1986- let fF = cM(eK.caller)
1987- let fB = fF._1
1988- let cO = fF._2
1989- $Tuple2(((([ScriptTransfer(eK.caller, bx, eE)] ++ fB) ++ bh(eK.caller, (cN - bx))) ++ bj((bi() - bx))), unit)
2000+ let fI = cM(eK.caller)
2001+ let fC = fI._1
2002+ let cO = fI._2
2003+ $Tuple2(((([ScriptTransfer(eK.caller, bx, eE)] ++ fC) ++ bh(eK.caller, (cN - bx))) ++ bj((bi() - bx))), unit)
19902004 }
19912005 else throw("Strict value is not equal to itself.")
19922006 }
19962010
19972011
19982012 @Callable(eK)
1999-func claim (be,al) = {
2000- let bW = if (if (br())
2013+func claim (be) = {
2014+ let bW = if (br())
20012015 then bs()
2002- else false)
2003- then P(size(al), 1, 10, "claim: invalid assets size")
20042016 else false
20052017 if ((bW == bW))
20062018 then {
2007- let fz = if ((size(be) > 0))
2019+ let fA = if ((size(be) > 0))
20082020 then valueOrErrorMessage(addressFromString(be), "claim: invalid user")
20092021 else eK.caller
20102022 let bq = aH()
20112023 let eE = bq._1
2012- let fe = av(eE)
2013- let do = [fe, aL()]
2014- let fG = (size(do) - 1)
2015- let cN = bg(fz)
2016- let fH = cM(fz)
2017- let fB = fH._1
2018- let cO = fH._2
2019- func aa (ab,fI) = {
2024+ let fb = av(eE)
2025+ let do = [fb, aL()]
2026+ let fJ = (size(do) - 1)
2027+ let cN = bg(fA)
2028+ let fK = cM(fA)
2029+ let fC = fK._1
2030+ let cO = fK._2
2031+ func aa (ab,fL) = {
20202032 let bO = ab._1
2021- if ((bO > fG))
2022- then $Tuple3((bO + 1), (ab._2 :+ fI), ab._3)
2023- else {
2024- let fJ = do[bO]
2025- if (containsElement(al, fJ))
2026- then $Tuple3((bO + 1), (ab._2 :+ 0), (ab._3 :+ ScriptTransfer(fz, fI, ax(fJ))))
2027- else $Tuple3((bO + 1), (ab._2 :+ fI), ab._3)
2033+ if (if ((fJ >= bO))
2034+ then (fL > 0)
2035+ else false)
2036+ then {
2037+ let fM = do[bO]
2038+ $Tuple3((bO + 1), (ab._2 :+ 0), (ab._3 :+ ScriptTransfer(fA, fL, ax(fM))))
20282039 }
2040+ else $Tuple3((bO + 1), (ab._2 :+ fL), ab._3)
20292041 }
20302042
2031- let fK = {
2043+ let fN = {
20322044 let ad = cO
20332045 let ae = size(ad)
20342046 let af = $Tuple3(0, nil, nil)
20422054
20432055 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
20442056 }
2045- let cT = fK._1
2046- let fL = fK._2
2047- let fM = fK._3
2048- $Tuple2(((fM ++ removeByIndex(fB, 0)) ++ bl(fz, fL)), unit)
2057+ let cT = fN._1
2058+ let fO = fN._2
2059+ let fP = fN._3
2060+ $Tuple2(((fP ++ removeByIndex(fC, 0)) ++ bl(fA, fO)), unit)
20492061 }
20502062 else throw("Strict value is not equal to itself.")
20512063 }
21052117 }
21062118
21072119
2108-@Verifier(fN)
2109-func fO () = {
2120+@Verifier(fQ)
2121+func fR () = {
21102122 let L = getString(s)
21112123 if ($isInstanceOf(L, "String"))
21122124 then {
2113- let fP = L
2114- valueOrElse(getBoolean(addressFromStringValue(fP), makeString([t, toString(this), toBase58String(fN.id)], a)), false)
2115- }
2116- else sigVerify(fN.bodyBytes, fN.proofs[0], fN.senderPublicKey)
2125+ let fS = L
2126+ valueOrElse(getBoolean(addressFromStringValue(fS), makeString([t, toString(this), toBase58String(fQ.id)], a)), false)
2127+ }
2128+ else sigVerify(fQ.bodyBytes, fQ.proofs[0], fQ.senderPublicKey)
21172129 }
21182130
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
2222 let j = 1000000
2323
24-let k = toBigInt(1000000000000)
24+let k = toBigInt(1000000000000000000)
2525
2626 let l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2727
2828 let m = (l :+ 0)
2929
3030 let n = toBigInt(0)
3131
3232 let o = [n, n, n, n, n, n, n, n, n, n, n]
3333
3434 let p = 8
3535
3636 let q = 18
3737
3838 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", "_")
3939
4040 let s = "MULTISIG"
4141
4242 let t = "STATUS"
4343
4444 let u = "PAUSED"
4545
4646 let v = "PAUSER"
4747
4848 let w = "STORAGE"
4949
5050 let x = "ASSETS"
5151
5252 let y = "ASSET_BALANCES"
5353
5454 let z = "ASSET_WEIGHTS"
5555
5656 let A = "LP_FEE"
5757
5858 let B = "PROTOCOL_FEE"
5959
6060 let C = "PRECISION"
6161
6262 let D = "SIGMA_FEE_PER_LP"
6363
6464 let E = "USER_SIGMA_FEE_PER_LP"
6565
6666 let F = "USER_LP"
6767
6868 let G = "TOTAL_LP"
6969
7070 let H = "USER_PROFITS"
7171
7272 func I (J,K) = {
7373 let L = addressFromString(J)
7474 if ($isInstanceOf(L, "Address"))
7575 then {
7676 let M = L
7777 true
7878 }
7979 else throw(K)
8080 }
8181
8282
8383 func N (O,K) = if ((O == b))
8484 then true
8585 else {
8686 let L = assetInfo(fromBase58String(O))
8787 if ($isInstanceOf(L, "Asset"))
8888 then {
8989 let M = L
9090 true
9191 }
9292 else throw(K)
9393 }
9494
9595
9696 func P (Q,R,S,K) = if (if ((R > Q))
9797 then true
9898 else (Q > S))
9999 then throw(K)
100100 else true
101101
102102
103103 func T (Q,U,K) = if ((Q != U))
104104 then throw(K)
105105 else true
106106
107107
108108 func V (W,X,K) = if ((W != X))
109109 then throw(K)
110110 else true
111111
112112
113113 func Y (W,X,K) = if ((W == X))
114114 then throw(K)
115115 else true
116116
117117
118118 func Z (Q,R,S,K) = {
119119 func aa (ab,ac) = {
120120 let L = parseInt(ac)
121121 if ($isInstanceOf(L, "Int"))
122122 then {
123123 let M = L
124124 if (ab)
125125 then P(M, R, S, K)
126126 else false
127127 }
128128 else throw(K)
129129 }
130130
131131 let ad = Q
132132 let ae = size(ad)
133133 let af = true
134134 func ag (ah,ai) = if ((ai >= ae))
135135 then ah
136136 else aa(ah, ad[ai])
137137
138138 func aj (ah,ai) = if ((ai >= ae))
139139 then ah
140140 else throw("List size exceeds 10")
141141
142142 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
143143 }
144144
145145
146146 func ak (al,K) = {
147147 func aa (ab,ac) = if (ab)
148148 then N(ac, K)
149149 else false
150150
151151 let ad = al
152152 let ae = size(ad)
153153 let af = true
154154 func ag (ah,ai) = if ((ai >= ae))
155155 then ah
156156 else aa(ah, ad[ai])
157157
158158 func aj (ah,ai) = if ((ai >= ae))
159159 then ah
160160 else throw("List size exceeds 10")
161161
162162 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
163163 }
164164
165165
166166 func am (W,X,K) = if ((W != X))
167167 then throw(K)
168168 else true
169169
170170
171171 func an (Q,K) = if (if ((4 > size(Q)))
172172 then true
173173 else (size(Q) > 16))
174174 then throw(K)
175175 else true
176176
177177
178178 func ao (Q,K) = if ((size(Q) > 1000))
179179 then throw(K)
180180 else true
181181
182182
183183 func ap (Q,K) = if (if ((0 > Q))
184184 then true
185185 else (Q > 8))
186186 then throw(K)
187187 else true
188188
189189
190190 func aq (ar,O,as,K) = {
191191 let L = ar.assetId
192192 if ($isInstanceOf(L, "ByteVector"))
193193 then {
194194 let M = L
195195 if ((O != toBase58String(M)))
196196 then throw((K + ": asset"))
197197 else if ((as > ar.amount))
198198 then throw((K + ": amount"))
199199 else true
200200 }
201201 else throw((K + ": asset"))
202202 }
203203
204204
205205 func at (au,Q,K) = if (!(containsElement(au, Q)))
206206 then throw(K)
207207 else true
208208
209209
210210 func av (aw) = {
211211 let L = aw
212212 if ($isInstanceOf(L, "ByteVector"))
213213 then {
214214 let M = L
215215 toBase58String(M)
216216 }
217217 else b
218218 }
219219
220220
221221 func ax (aw) = if (if ((aw == b))
222222 then true
223223 else (aw == ""))
224224 then unit
225225 else fromBase58String(aw)
226226
227227
228228 func ay () = {
229229 let L = getBoolean(u)
230230 if ($isInstanceOf(L, "Boolean"))
231231 then {
232232 let M = L
233233 M
234234 }
235235 else false
236236 }
237237
238238
239239 func az (aA) = [BooleanEntry(u, aA)]
240240
241241
242242 func aB () = {
243243 let L = getString(v)
244244 if ($isInstanceOf(L, "String"))
245245 then {
246246 let M = L
247247 addressFromStringValue(M)
248248 }
249249 else Address(base58'')
250250 }
251251
252252
253253 func aC (aD) = [StringEntry(v, toString(aD))]
254254
255255
256256 func aE () = {
257257 let L = getString(s)
258258 if ($isInstanceOf(L, "String"))
259259 then {
260260 let M = L
261261 addressFromStringValue(M)
262262 }
263263 else Address(base58'')
264264 }
265265
266266
267267 func aF (aG) = [StringEntry(s, toString(aG))]
268268
269269
270270 func aH () = {
271271 let L = getString(w)
272272 if ($isInstanceOf(L, "String"))
273273 then {
274274 let M = L
275275 let aI = split(M, a)
276276 $Tuple10(fromBase58String(aI[0]), (aI[1] == "1"), parseIntValue(aI[2]), parseIntValue(aI[3]), parseIntValue(aI[4]), parseIntValue(aI[5]), parseIntValue(aI[6]), parseIntValue(aI[7]), parseIntValue(aI[8]), addressFromStringValue(aI[9]))
277277 }
278278 else $Tuple10(base58'', false, 0, 0, 0, 0, 0, 0, 0, Address(base58''))
279279 }
280280
281281
282282 func aJ (aK) = [StringEntry(w, makeString([toBase58String(aK._1), if (aK._2)
283283 then "1"
284284 else "0", toString(aK._3), toString(aK._4), toString(aK._5), toString(aK._6), toString(aK._7), toString(aK._8), toString(aK._9), toString(aK._10)], a))]
285285
286286
287287 func aL () = {
288288 let L = getString(x)
289289 if ($isInstanceOf(L, "String"))
290290 then {
291291 let M = L
292292 if ((size(M) > 0))
293293 then split_51C(M, a)
294294 else nil
295295 }
296296 else nil
297297 }
298298
299299
300300 func aM (al) = [StringEntry(x, makeString_11C(al, a))]
301301
302302
303303 func aN () = {
304304 func aa (ab,ac) = {
305305 let aO = parseIntValue(ac)
306306 $Tuple2((ab._1 :+ aO), (ab._2 + aO))
307307 }
308308
309309 let L = getString(y)
310310 if ($isInstanceOf(L, "String"))
311311 then {
312312 let M = L
313313 if ((size(M) > 0))
314314 then {
315315 let ad = split_51C(M, a)
316316 let ae = size(ad)
317317 let af = $Tuple2(nil, 0)
318318 func ag (ah,ai) = if ((ai >= ae))
319319 then ah
320320 else aa(ah, ad[ai])
321321
322322 func aj (ah,ai) = if ((ai >= ae))
323323 then ah
324324 else throw("List size exceeds 10")
325325
326326 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
327327 }
328328 else $Tuple2(l, 0)
329329 }
330330 else $Tuple2(l, 0)
331331 }
332332
333333
334334 func aP (aQ) = {
335335 func aa (ab,ac) = (ab :+ toString(ac))
336336
337337 [StringEntry(y, makeString_11C({
338338 let ad = aQ
339339 let ae = size(ad)
340340 let af = nil
341341 func ag (ah,ai) = if ((ai >= ae))
342342 then ah
343343 else aa(ah, ad[ai])
344344
345345 func aj (ah,ai) = if ((ai >= ae))
346346 then ah
347347 else throw("List size exceeds 10")
348348
349349 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
350350 }, a))]
351351 }
352352
353353
354354 func aR () = {
355355 func aa (ab,ac) = {
356356 let aS = parseIntValue(ac)
357357 $Tuple2((ab._1 :+ aS), (ab._2 + aS))
358358 }
359359
360360 let L = getString(z)
361361 if ($isInstanceOf(L, "String"))
362362 then {
363363 let M = L
364364 if ((size(M) > 0))
365365 then {
366366 let ad = split_51C(M, a)
367367 let ae = size(ad)
368368 let af = $Tuple2(nil, 0)
369369 func ag (ah,ai) = if ((ai >= ae))
370370 then ah
371371 else aa(ah, ad[ai])
372372
373373 func aj (ah,ai) = if ((ai >= ae))
374374 then ah
375375 else throw("List size exceeds 10")
376376
377377 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
378378 }
379379 else $Tuple2(l, 0)
380380 }
381381 else $Tuple2(l, 0)
382382 }
383383
384384
385385 func aT (aU) = {
386386 func aa (ab,ac) = (ab :+ toString(ac))
387387
388388 [StringEntry(z, makeString_11C({
389389 let ad = aU
390390 let ae = size(ad)
391391 let af = nil
392392 func ag (ah,ai) = if ((ai >= ae))
393393 then ah
394394 else aa(ah, ad[ai])
395395
396396 func aj (ah,ai) = if ((ai >= ae))
397397 then ah
398398 else throw("List size exceeds 10")
399399
400400 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
401401 }, a))]
402402 }
403403
404404
405405 func aV (O) = {
406406 let L = getInteger(makeString([A, O], a))
407407 if ($isInstanceOf(L, "Int"))
408408 then {
409409 let M = L
410410 M
411411 }
412412 else 0
413413 }
414414
415415
416416 func aW (O,Q) = [IntegerEntry(makeString([A, O], a), Q)]
417417
418418
419419 func aX (O) = {
420420 let L = getInteger(makeString([B, O], a))
421421 if ($isInstanceOf(L, "Int"))
422422 then {
423423 let M = L
424424 M
425425 }
426426 else 0
427427 }
428428
429429
430430 func aY (O,Q) = [IntegerEntry(makeString([B, O], a), Q)]
431431
432432
433433 func aZ () = {
434434 let L = getInteger(C)
435435 if ($isInstanceOf(L, "Int"))
436436 then {
437437 let M = L
438438 M
439439 }
440440 else 0
441441 }
442442
443443
444444 func ba (Q) = [IntegerEntry(C, Q)]
445445
446446
447447 func bb () = {
448448 func aa (ab,ac) = (ab :+ parseBigIntValue(ac))
449449
450450 let L = getString(D)
451451 if ($isInstanceOf(L, "String"))
452452 then {
453453 let M = L
454454 if ((size(M) > 0))
455455 then {
456456 let ad = split_51C(M, a)
457457 let ae = size(ad)
458458 let af = nil
459459 func ag (ah,ai) = if ((ai >= ae))
460460 then ah
461461 else aa(ah, ad[ai])
462462
463463 func aj (ah,ai) = if ((ai >= ae))
464464 then ah
465465 else throw("List size exceeds 11")
466466
467467 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
468468 }
469469 else o
470470 }
471471 else o
472472 }
473473
474474
475475 func bc (Q) = {
476476 func aa (ab,ac) = (ab :+ toString(ac))
477477
478478 [StringEntry(D, makeString_11C({
479479 let ad = Q
480480 let ae = size(ad)
481481 let af = nil
482482 func ag (ah,ai) = if ((ai >= ae))
483483 then ah
484484 else aa(ah, ad[ai])
485485
486486 func aj (ah,ai) = if ((ai >= ae))
487487 then ah
488488 else throw("List size exceeds 11")
489489
490490 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
491491 }, a))]
492492 }
493493
494494
495495 func bd (be) = {
496496 func aa (ab,ac) = (ab :+ parseBigIntValue(ac))
497497
498498 let L = getString(makeString([E, toString(be)], a))
499499 if ($isInstanceOf(L, "String"))
500500 then {
501501 let M = L
502502 if ((size(M) > 0))
503503 then {
504504 let ad = split_51C(M, a)
505505 let ae = size(ad)
506506 let af = nil
507507 func ag (ah,ai) = if ((ai >= ae))
508508 then ah
509509 else aa(ah, ad[ai])
510510
511511 func aj (ah,ai) = if ((ai >= ae))
512512 then ah
513513 else throw("List size exceeds 11")
514514
515515 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
516516 }
517517 else o
518518 }
519519 else o
520520 }
521521
522522
523523 func bf (be,Q) = {
524524 func aa (ab,ac) = (ab :+ toString(ac))
525525
526526 [StringEntry(makeString([E, toString(be)], a), makeString_11C({
527527 let ad = Q
528528 let ae = size(ad)
529529 let af = nil
530530 func ag (ah,ai) = if ((ai >= ae))
531531 then ah
532532 else aa(ah, ad[ai])
533533
534534 func aj (ah,ai) = if ((ai >= ae))
535535 then ah
536536 else throw("List size exceeds 11")
537537
538538 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
539539 }, a))]
540540 }
541541
542542
543543 func bg (J) = {
544544 let L = getInteger(makeString([F, toString(J)], a))
545545 if ($isInstanceOf(L, "Int"))
546546 then {
547547 let M = L
548548 M
549549 }
550550 else 0
551551 }
552552
553553
554554 func bh (J,Q) = [IntegerEntry(makeString([F, toString(J)], a), Q)]
555555
556556
557557 func bi () = {
558558 let L = getInteger(G)
559559 if ($isInstanceOf(L, "Int"))
560560 then {
561561 let M = L
562562 M
563563 }
564564 else 0
565565 }
566566
567567
568568 func bj (Q) = [IntegerEntry(G, Q)]
569569
570570
571571 func bk (be) = {
572572 func aa (ab,ac) = (ab :+ parseIntValue(ac))
573573
574574 let L = getString(makeString([H, toString(be)], a))
575575 if ($isInstanceOf(L, "String"))
576576 then {
577577 let M = L
578578 if ((size(M) > 0))
579579 then {
580580 let ad = split_51C(M, a)
581581 let ae = size(ad)
582582 let af = nil
583583 func ag (ah,ai) = if ((ai >= ae))
584584 then ah
585585 else aa(ah, ad[ai])
586586
587587 func aj (ah,ai) = if ((ai >= ae))
588588 then ah
589589 else throw("List size exceeds 11")
590590
591591 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
592592 }
593593 else m
594594 }
595595 else m
596596 }
597597
598598
599599 func bl (be,Q) = {
600600 func aa (ab,ac) = (ab :+ toString(ac))
601601
602602 [StringEntry(makeString([H, toString(be)], a), makeString_11C({
603603 let ad = Q
604604 let ae = size(ad)
605605 let af = nil
606606 func ag (ah,ai) = if ((ai >= ae))
607607 then ah
608608 else aa(ah, ad[ai])
609609
610610 func aj (ah,ai) = if ((ai >= ae))
611611 then ah
612612 else throw("List size exceeds 11")
613613
614614 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
615615 }, a))]
616616 }
617617
618618
619619 func bm (bn) = if ((bn != this))
620620 then throw("_onlyThisContract: revert")
621621 else true
622622
623623
624624 func bo () = if ((aE() == Address(base58'')))
625625 then throw("_whenMultisigSet: revert")
626626 else true
627627
628628
629629 func bp () = {
630630 let bq = aH()
631631 if ((bq._1 != base58''))
632632 then throw("_whenNotInitialized: revert")
633633 else true
634634 }
635635
636636
637637 func br () = {
638638 let bq = aH()
639639 if ((bq._1 == base58''))
640640 then throw("_whenInitialized: revert")
641641 else true
642642 }
643643
644644
645645 func bs () = if (ay())
646646 then throw("_whenNotPaused: revert")
647647 else true
648648
649649
650650 func bt () = if (!(ay()))
651651 then throw("_whenPaused: revert")
652652 else true
653653
654654
655655 func bu (bn) = if ((bn != aB()))
656656 then throw("_onlyPauser: revert")
657657 else true
658658
659659
660660 func bv (O) = {
661661 let L = assetInfo(fromBase58String(O))
662662 if ($isInstanceOf(L, "Asset"))
663663 then {
664664 let M = L
665665 M.decimals
666666 }
667667 else throw(("_getDecimals: no asset=" + O))
668668 }
669669
670670
671671 func bw (bx,by,bz,bA) = if ((by >= bz))
672672 then fraction(bx, 1, pow(10, 0, (by - bz), 0, 0, DOWN), bA)
673673 else (bx * pow(10, 0, (bz - by), 0, 0, DOWN))
674674
675675
676676 func bB (al) = {
677677 func aa (ab,ac) = (ab :+ 0)
678678
679679 let ad = al
680680 let ae = size(ad)
681681 let af = nil
682682 func ag (ah,ai) = if ((ai >= ae))
683683 then ah
684684 else aa(ah, ad[ai])
685685
686686 func aj (ah,ai) = if ((ai >= ae))
687687 then ah
688688 else throw("List size exceeds 10")
689689
690690 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
691691 }
692692
693693
694694 func bC (bD) = {
695695 func aa (ab,ac) = {
696696 let aS = parseIntValue(ac)
697697 $Tuple2((ab._1 :+ aS), (ab._2 + aS))
698698 }
699699
700700 let ad = bD
701701 let ae = size(ad)
702702 let af = $Tuple2(nil, 0)
703703 func ag (ah,ai) = if ((ai >= ae))
704704 then ah
705705 else aa(ah, ad[ai])
706706
707707 func aj (ah,ai) = if ((ai >= ae))
708708 then ah
709709 else throw("List size exceeds 10")
710710
711711 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
712712 }
713713
714714
715715 func bE (al,bF) = {
716716 func aa (ab,ac) = {
717717 let bG = bv(ac)
718718 let aO = bw(assetBalance(this, fromBase58String(ac)), bG, bF, DOWN)
719719 $Tuple2((ab._1 :+ aO), (ab._2 + aO))
720720 }
721721
722722 let ad = al
723723 let ae = size(ad)
724724 let af = $Tuple2(nil, 0)
725725 func ag (ah,ai) = if ((ai >= ae))
726726 then ah
727727 else aa(ah, ad[ai])
728728
729729 func aj (ah,ai) = if ((ai >= ae))
730730 then ah
731731 else throw("List size exceeds 10")
732732
733733 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
734734 }
735735
736736
737737 func bH (al) = {
738738 func aa (ab,ac) = (ab :+ toString(ac))
739739
740740 makeString({
741741 let ad = al
742742 let ae = size(ad)
743743 let af = nil
744744 func ag (ah,ai) = if ((ai >= ae))
745745 then ah
746746 else aa(ah, ad[ai])
747747
748748 func aj (ah,ai) = if ((ai >= ae))
749749 then ah
750750 else throw("List size exceeds 11")
751751
752752 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
753753 }, a)
754754 }
755755
756756
757757 func bI (al) = {
758758 func aa (ab,ac) = (ab :+ toString(ac))
759759
760760 makeString({
761761 let ad = al
762762 let ae = size(ad)
763763 let af = nil
764764 func ag (ah,ai) = if ((ai >= ae))
765765 then ah
766766 else aa(ah, ad[ai])
767767
768768 func aj (ah,ai) = if ((ai >= ae))
769769 then ah
770770 else throw("List size exceeds 11")
771771
772772 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
773773 }, a)
774774 }
775775
776776
777777 func bJ (bK,aU,bL) = {
778778 func aa (ab,ac) = (ab :+ fraction(bK, ac, bL))
779779
780780 let ad = aU
781781 let ae = size(ad)
782782 let af = nil
783783 func ag (ah,ai) = if ((ai >= ae))
784784 then ah
785785 else aa(ah, ad[ai])
786786
787787 func aj (ah,ai) = if ((ai >= ae))
788788 then ah
789789 else throw("List size exceeds 10")
790790
791791 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
792792 }
793793
794794
795795 func bM (aQ,bN) = {
796796 func aa (ab,ac) = {
797797 let bO = ab._1
798798 let bP = bN[bO]
799799 let bQ = (ac + bP)
800800 $Tuple3((bO + 1), (ab._2 :+ bQ), (ab._3 + bQ))
801801 }
802802
803803 let bR = {
804804 let ad = aQ
805805 let ae = size(ad)
806806 let af = $Tuple3(0, nil, 0)
807807 func ag (ah,ai) = if ((ai >= ae))
808808 then ah
809809 else aa(ah, ad[ai])
810810
811811 func aj (ah,ai) = if ((ai >= ae))
812812 then ah
813813 else throw("List size exceeds 10")
814814
815815 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
816816 }
817817 $Tuple2(bR._2, bR._3)
818818 }
819819
820820
821821 func bS (aQ,bT,al,bF,K) = {
822822 func aa (ab,ac) = {
823823 let bO = ab._1
824824 let bU = bT[bO]
825825 let bV = av(bU.assetId)
826826 let bW = if ((bV != al[bO]))
827827 then throw(((K + ": index=") + toString(bO)))
828828 else unit
829829 if ((bW == bW))
830830 then {
831831 let bG = bv(bV)
832832 let bQ = (ac + bw(bT[bO].amount, bG, bF, DOWN))
833833 $Tuple3((bO + 1), (ab._2 :+ bQ), (ab._3 + bQ))
834834 }
835835 else throw("Strict value is not equal to itself.")
836836 }
837837
838838 let bR = {
839839 let ad = aQ
840840 let ae = size(ad)
841841 let af = $Tuple3(0, nil, 0)
842842 func ag (ah,ai) = if ((ai >= ae))
843843 then ah
844844 else aa(ah, ad[ai])
845845
846846 func aj (ah,ai) = if ((ai >= ae))
847847 then ah
848848 else throw("List size exceeds 10")
849849
850850 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
851851 }
852852 $Tuple2(bR._2, bR._3)
853853 }
854854
855855
856856 func bX (aQ,bY,bx) = {
857857 func aa (ab,ac) = {
858858 let bO = ab._1
859859 if ((bO == bY))
860860 then $Tuple2((bO + 1), (ab._2 :+ (ac + bx)))
861861 else $Tuple2((bO + 1), (ab._2 :+ ac))
862862 }
863863
864864 let bR = {
865865 let ad = aQ
866866 let ae = size(ad)
867867 let af = $Tuple2(0, nil)
868868 func ag (ah,ai) = if ((ai >= ae))
869869 then ah
870870 else aa(ah, ad[ai])
871871
872872 func aj (ah,ai) = if ((ai >= ae))
873873 then ah
874874 else throw("List size exceeds 10")
875875
876876 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
877877 }
878878 bR._2
879879 }
880880
881881
882882 func bZ (aQ,bY,bx) = {
883883 func aa (ab,ac) = {
884884 let bO = ab._1
885885 if ((bO == bY))
886886 then $Tuple2((bO + 1), (ab._2 :+ (ac - bx)))
887887 else $Tuple2((bO + 1), (ab._2 :+ ac))
888888 }
889889
890890 let bR = {
891891 let ad = aQ
892892 let ae = size(ad)
893893 let af = $Tuple2(0, nil)
894894 func ag (ah,ai) = if ((ai >= ae))
895895 then ah
896896 else aa(ah, ad[ai])
897897
898898 func aj (ah,ai) = if ((ai >= ae))
899899 then ah
900900 else throw("List size exceeds 10")
901901
902902 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
903903 }
904904 bR._2
905905 }
906906
907907
908908 func ca (aQ,bx,cb) = {
909909 let cc = fraction((cb - bx), j, cb, CEILING)
910910 func aa (ab,ac) = {
911911 let bQ = fraction(ac, cc, j, CEILING)
912912 let cd = (ac - bQ)
913913 $Tuple3((ab._1 :+ bQ), (ab._2 + bQ), (ab._3 :+ cd))
914914 }
915915
916916 let ad = aQ
917917 let ae = size(ad)
918918 let af = $Tuple3(nil, 0, nil)
919919 func ag (ah,ai) = if ((ai >= ae))
920920 then ah
921921 else aa(ah, ad[ai])
922922
923923 func aj (ah,ai) = if ((ai >= ae))
924924 then ah
925925 else throw("List size exceeds 10")
926926
927927 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
928928 }
929929
930930
931931 func ce (al,aQ,cf,by) = {
932932 func aa (ab,ac) = {
933933 let bO = ab._1
934934 $Tuple2((bO + 1), (ab._2 :+ ScriptTransfer(cf, bw(aQ[bO], by, bv(ac), DOWN), ax(ac))))
935935 }
936936
937937 let bR = {
938938 let ad = al
939939 let ae = size(ad)
940940 let af = $Tuple2(0, nil)
941941 func ag (ah,ai) = if ((ai >= ae))
942942 then ah
943943 else aa(ah, ad[ai])
944944
945945 func aj (ah,ai) = if ((ai >= ae))
946946 then ah
947947 else throw("List size exceeds 10")
948948
949949 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
950950 }
951951 bR._2
952952 }
953953
954954
955955 func cg (ch,ci,cj,ck,cl) = if ((ci > ch))
956956 then {
957957 let cm = fraction(ci, (f - cj), f)
958958 if ((cm > ch))
959959 then {
960960 let cn = (cm - ch)
961961 let co = fraction(fraction(cn, ck, h), i, ci)
962962 if ((co > cl))
963963 then fraction(cn, cl, i)
964964 else fraction(cn, co, i)
965965 }
966966 else 0
967967 }
968968 else {
969969 let cm = fraction(ci, (f + cj), f)
970970 if ((ch > cm))
971971 then {
972972 let cn = (ch - cm)
973973 let co = fraction(fraction(cn, ck, h), i, ci)
974974 if ((co > cl))
975975 then fraction(cn, cl, i)
976976 else fraction(cn, co, i)
977977 }
978978 else 0
979979 }
980980
981981
982982 func cp (aQ,cq,aU,bL,cj,ck,cl) = {
983983 func aa (ab,aO) = {
984984 let bO = ab._1
985985 let cr = fraction(cq, aU[bO], bL)
986986 $Tuple2((bO + 1), (ab._2 + cg(aO, cr, cj, ck, cl)))
987987 }
988988
989989 let bR = {
990990 let ad = aQ
991991 let ae = size(ad)
992992 let af = $Tuple2(0, 0)
993993 func ag (ah,ai) = if ((ai >= ae))
994994 then ah
995995 else aa(ah, ad[ai])
996996
997997 func aj (ah,ai) = if ((ai >= ae))
998998 then ah
999999 else throw("List size exceeds 10")
10001000
10011001 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10021002 }
10031003 bR._2
10041004 }
10051005
10061006
10071007 func cs (ct,cu,cv,cw,cx,cb,bD,bL,cj,ck,cl) = if (if ((cx == 0))
10081008 then true
10091009 else (cb == 0))
10101010 then true
10111011 else {
10121012 let cy = fraction((cu - cp(ct, cu, bD, bL, cj, ck, cl)), j, cx)
10131013 let cz = fraction((cw - cp(cv, cw, bD, bL, cj, ck, cl)), j, cb)
10141014 let cA = (cz - cy)
10151015 if (if ((0 >= cA))
1016- then ((-1 * j) > cA)
1016+ then ((-1 * aZ()) > cA)
10171017 else false)
10181018 then throw(("_validateLiquidityInvariant: revert: diff=" + toString(cA)))
10191019 else true
10201020 }
10211021
10221022
10231023 func cB (ct,cu,cv,cw,bD,bL,cj,ck,cl) = {
10241024 let cC = (cu - cp(ct, cu, bD, bL, cj, ck, cl))
10251025 let cD = (cw - cp(cv, cw, bD, bL, cj, ck, cl))
10261026 let cA = (cD - cC)
10271027 if (if ((0 >= cA))
1028- then ((-1 * j) > cA)
1028+ then ((-1 * aZ()) > cA)
10291029 else false)
10301030 then throw(("_validateSwapInvariant: revert: diff=" + toString(cA)))
10311031 else true
10321032 }
10331033
10341034
10351035 func cE (ch,cw,cF,cu,cG,bL,cH) = {
10361036 let cr = fraction(cw, cG, bL)
10371037 let cI = if ((ch > cr))
10381038 then (e + cH)
10391039 else (e - cH)
10401040 let cJ = fraction(cr, cI, e)
10411041 let cK = fraction(fraction(cu, cG, bL), cI, e)
10421042 if ((ch > cr))
10431043 then if ((ch > cJ))
10441044 then if ((cK > cF))
10451045 then throw("_validateAssetAllocation: new up")
10461046 else if (((ch - cJ) > (cF - cK)))
10471047 then throw("_validateAssetAllocation: still up")
10481048 else true
10491049 else true
10501050 else if ((cJ > ch))
10511051 then if ((cF > cK))
10521052 then throw("_validateAssetAllocation: new down")
1053- else if (((cK - cF) > (cJ - ch)))
1053+ else if (((cJ - ch) > (cK - cF)))
10541054 then throw("_validateAssetAllocation: still down")
10551055 else true
10561056 else true
10571057 }
10581058
10591059
10601060 func cL (cv,cw,ct,cu,bD,bL,cH) = {
10611061 func aa (ab,ac) = {
10621062 let bO = ab._1
10631063 $Tuple2((bO + 1), if (ab._2)
10641064 then cE(ac, cw, ct[bO], cu, bD[bO], bL, cH)
10651065 else false)
10661066 }
10671067
10681068 let bR = {
10691069 let ad = cv
10701070 let ae = size(ad)
10711071 let af = $Tuple2(0, true)
10721072 func ag (ah,ai) = if ((ai >= ae))
10731073 then ah
10741074 else aa(ah, ad[ai])
10751075
10761076 func aj (ah,ai) = if ((ai >= ae))
10771077 then ah
10781078 else throw("List size exceeds 10")
10791079
10801080 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10811081 }
10821082 bR._2
10831083 }
10841084
10851085
10861086 func cM (be) = {
10871087 let cN = bg(be)
10881088 let cO = bk(be)
10891089 let cP = bb()
10901090 let cQ = bd(be)
10911091 func aa (ab,ac) = {
10921092 let bO = ab._1
10931093 let cR = (cO[bO] + toInt(fraction(toBigInt(cN), (cP[bO] - cQ[bO]), k)))
10941094 $Tuple2((bO + 1), (ab._2 :+ cR))
10951095 }
10961096
10971097 let cS = {
10981098 let ad = m
10991099 let ae = size(ad)
11001100 let af = $Tuple2(0, nil)
11011101 func ag (ah,ai) = if ((ai >= ae))
11021102 then ah
11031103 else aa(ah, ad[ai])
11041104
11051105 func aj (ah,ai) = if ((ai >= ae))
11061106 then ah
11071107 else throw("List size exceeds 11")
11081108
11091109 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
11101110 }
11111111 let cT = cS._1
11121112 let cU = cS._2
11131113 $Tuple2((bl(be, cU) ++ bf(be, cP)), cU)
11141114 }
11151115
11161116
11171117 func cV (cW,cX,bY,cY) = {
11181118 func aa (ab,ac) = {
11191119 let bO = ab._1
11201120 let cZ = if ((bY == bO))
11211121 then (cW[bO] + fraction(toBigInt(cY), k, toBigInt(cX)))
11221122 else cW[bO]
11231123 $Tuple2((bO + 1), (ab._2 :+ cZ))
11241124 }
11251125
11261126 let da = {
11271127 let ad = m
11281128 let ae = size(ad)
11291129 let af = $Tuple2(0, nil)
11301130 func ag (ah,ai) = if ((ai >= ae))
11311131 then ah
11321132 else aa(ah, ad[ai])
11331133
11341134 func aj (ah,ai) = if ((ai >= ae))
11351135 then ah
11361136 else throw("List size exceeds 11")
11371137
11381138 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
11391139 }
11401140 let cT = da._1
11411141 let cZ = da._2
11421142 cZ
11431143 }
11441144
11451145
11461146 func db (dc,bx,dd,de) = {
11471147 let cP = bb()
11481148 let df = bi()
11491149 let dg = if ((df == 0))
11501150 then $Tuple2(0, fraction(bx, de, d))
11511151 else $Tuple2(fraction(bx, dd, d), fraction(bx, de, d))
11521152 let dh = dg._1
11531153 let di = dg._2
11541154 let cZ = if ((dh == 0))
11551155 then cP
11561156 else cV(cP, df, dc, dh)
11571157 $Tuple3(dh, di, cZ)
11581158 }
11591159
11601160
11611161 func dj (bx) = {
11621162 let bq = aH()
11631163 let dk = bq._3
11641164 let dl = bq._7
11651165 let dm = bq._8
11661166 let dn = bq._9
11671167 let do = aL()
11681168 let dp = aR()
11691169 let dq = dp._1
11701170 let dr = dp._2
11711171 let ds = aN()
11721172 let dt = ds._1
11731173 let du = ds._2
11741174 let dv = if ((du == 0))
11751175 then {
11761176 func aa (ab,ac) = {
11771177 let bO = ab._1
11781178 let dw = fraction(dq[bO], bx, dr)
11791179 $Tuple2((bO + 1), (ab._2 :+ dw))
11801180 }
11811181
11821182 let dx = {
11831183 let ad = do
11841184 let ae = size(ad)
11851185 let af = $Tuple2(0, nil)
11861186 func ag (ah,ai) = if ((ai >= ae))
11871187 then ah
11881188 else aa(ah, ad[ai])
11891189
11901190 func aj (ah,ai) = if ((ai >= ae))
11911191 then ah
11921192 else throw("List size exceeds 10")
11931193
11941194 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11951195 }
11961196 let cT = dx._1
11971197 let dy = dx._2
11981198 $Tuple2(bx, dy)
11991199 }
12001200 else {
12011201 let dz = fraction(toBigInt(bx), k, toBigInt(du))
12021202 func dA (ab,ac) = {
12031203 let bO = ab._1
12041204 let dw = toInt(fraction(dz, toBigInt(dt[bO]), k))
12051205 $Tuple2((bO + 1), (ab._2 :+ dw))
12061206 }
12071207
12081208 let dB = {
12091209 let ad = do
12101210 let ae = size(ad)
12111211 let af = $Tuple2(0, nil)
12121212 func ag (ah,ai) = if ((ai >= ae))
12131213 then ah
12141214 else dA(ah, ad[ai])
12151215
12161216 func aj (ah,ai) = if ((ai >= ae))
12171217 then ah
12181218 else throw("List size exceeds 10")
12191219
12201220 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
12211221 }
12221222 let cT = dB._1
12231223 let dy = dB._2
12241224 $Tuple2(fraction(bx, dk, du), dy)
12251225 }
12261226 let dC = dv._1
12271227 let dy = dv._2
12281228 let dD = bM(dt, dy)
12291229 let dE = dD._1
12301230 let dF = dD._2
12311231 let dG = cs(dt, du, dE, dF, dk, (dk + dC), dq, dr, dl, dm, dn)
12321232 if ((dG == dG))
12331233 then $Tuple3(dC, dy, dE)
12341234 else throw("Strict value is not equal to itself.")
12351235 }
12361236
12371237
12381238 func dH (O,bx) = {
12391239 let bq = aH()
12401240 let dk = bq._3
1241- let dI = bq._6
1241+ let dI = bq._4
1242+ let dJ = bq._5
1243+ let dK = bq._6
12421244 let dl = bq._7
12431245 let dm = bq._8
12441246 let dn = bq._9
12451247 let do = aL()
1246- let dJ = aR()
1247- let dq = dJ._1
1248- let dr = dJ._2
1249- let dK = aN()
1250- let dt = dK._1
1251- let du = dK._2
1248+ let dL = aR()
1249+ let dq = dL._1
1250+ let dr = dL._2
1251+ let dM = aN()
1252+ let dt = dM._1
1253+ let du = dM._2
12521254 let dE = bX(dt, value(indexOf(do, O)), bx)
12531255 let dF = (du + bx)
1254- let dG = cL(dE, dF, dt, du, dq, dr, dI)
1256+ let dG = cL(dE, dF, dt, du, dq, dr, dK)
12551257 if ((dG == dG))
12561258 then {
1257- let dL = cp(dt, du, dq, dr, dl, dm, dn)
1258- let dM = cp(dE, dF, dq, dr, dl, dm, dn)
1259+ let dN = cp(dt, du, dq, dr, dl, dm, dn)
1260+ let dO = cp(dE, dF, dq, dr, dl, dm, dn)
12591261 let dC = if ((dk == 0))
1260- then (dF - dM)
1262+ then throw("_deposit: empty pool")
12611263 else {
1262- let dN = (dF - du)
1263- let dO = (dM - dL)
1264- let dP = fraction((dN - dO), j, (du - dL))
1265- let dQ = fraction(dk, dP, j)
1266- let dR = cs(dt, du, dE, dF, dk, (dk + dQ), dq, dr, dl, dm, dn)
1267- if ((dR == dR))
1268- then dQ
1264+ let dP = (dF - du)
1265+ let dQ = (dO - dN)
1266+ let dR = fraction((dP - dQ), j, (du - dN))
1267+ let dS = fraction(dk, dR, j)
1268+ let dT = cs(dt, du, dE, dF, dk, (dk + dS), dq, dr, dl, dm, dn)
1269+ if ((dT == dT))
1270+ then dS
12691271 else throw("Strict value is not equal to itself.")
12701272 }
1271- $Tuple2(dC, dE)
1272- }
1273- else throw("Strict value is not equal to itself.")
1274- }
1275-
1276-
1277-func dS (bx) = {
1273+ let dU = db(0, dC, (dI / 2), (dJ / 2))
1274+ let dh = dU._1
1275+ let di = dU._2
1276+ let cZ = dU._3
1277+ $Tuple5(dC, dE, dh, di, cZ)
1278+ }
1279+ else throw("Strict value is not equal to itself.")
1280+ }
1281+
1282+
1283+func dV (bx) = {
12781284 let bq = aH()
12791285 let dk = bq._3
1280- let dT = bq._4
1281- let dU = bq._5
1282- let dI = bq._6
1286+ let dK = bq._6
12831287 let dl = bq._7
12841288 let dm = bq._8
12851289 let dn = bq._9
1286- let dV = aN()
1287- let dt = dV._1
1288- let du = dV._2
1289- let dW = aR()
1290- let dq = dW._1
1291- let dr = dW._2
1292- let dX = db(0, bx, dT, dU)
1293- let dh = dX._1
1294- let di = dX._2
1295- let cZ = dX._3
1296- let dY = ((bx - dh) - di)
1290+ let dW = aN()
1291+ let dt = dW._1
1292+ let du = dW._2
1293+ let dX = aR()
1294+ let dq = dX._1
1295+ let dr = dX._2
1296+ let dY = bx
12971297 let bW = P(dY, 0, c, "_withdrawAll: lpTokensToBurn less than 0")
12981298 if ((bW == bW))
12991299 then {
13001300 let dZ = ca(dt, dY, dk)
13011301 let dE = dZ._1
13021302 let dF = dZ._2
13031303 let ea = dZ._3
13041304 let dG = cs(dt, du, dE, dF, dk, (dk - dY), dq, dr, dl, dm, dn)
13051305 if ((dG == dG))
1306- then $Tuple6(dY, ea, dE, dh, di, cZ)
1306+ then $Tuple3(dY, ea, dE)
13071307 else throw("Strict value is not equal to itself.")
13081308 }
13091309 else throw("Strict value is not equal to itself.")
13101310 }
13111311
13121312
13131313 func eb (O,ec) = {
13141314 let bq = aH()
13151315 let dk = bq._3
1316- let dT = bq._4
1317- let dU = bq._5
1318- let dI = bq._6
1316+ let dI = bq._4
1317+ let dJ = bq._5
1318+ let dK = bq._6
13191319 let dl = bq._7
13201320 let dm = bq._8
13211321 let dn = bq._9
13221322 let ed = aZ()
13231323 let do = aL()
13241324 let ee = aN()
13251325 let dt = ee._1
13261326 let du = ee._2
13271327 let ef = aR()
13281328 let dq = ef._1
13291329 let dr = ef._2
13301330 let eg = value(indexOf(do, O))
1331- let dL = cp(dt, du, dq, dr, dl, dm, dn)
1332- let eh = (du - dL)
1331+ let dN = cp(dt, du, dq, dr, dl, dm, dn)
1332+ let eh = (du - dN)
13331333 let ei = fraction(toBigInt((dk - ec)), k, toBigInt(dk))
13341334 let ej = toInt(fraction(toBigInt(eh), ei, k))
13351335 func aa (ab,ac) = if (ab._1)
13361336 then ab
13371337 else {
13381338 let ek = ab._2
13391339 let el = ab._3
13401340 let em = ((el + ek) / 2)
13411341 let en = bZ(dt, eg, em)
13421342 let eo = (du - em)
13431343 let ep = (eo - cp(en, eo, dq, dr, dl, dm, dn))
1344- if (if ((ed > (ep - ej)))
1345- then ((ep - ej) >= 0)
1344+ if (if (((ep - ej) > (-1 * ed)))
1345+ then (ed > (ep - ej))
13461346 else false)
13471347 then $Tuple4(true, ek, el, em)
13481348 else if ((0 > (ep - ej)))
1349- then $Tuple4(false, ek, em, 0)
1350- else $Tuple4(false, em, el, 0)
1349+ then $Tuple4(false, ek, em, em)
1350+ else $Tuple4(false, em, el, em)
13511351 }
13521352
13531353 let eq = {
1354- let eq = ec
1355- let en = bZ(dt, eg, eq)
1356- let eo = (du - eq)
1357- let dM = cp(en, eo, dq, dr, dl, dm, dn)
1358- let dO = (dM - dL)
1359- if ((dO == 0))
1360- then eq
1361- else {
1362- let er = {
1363- let ad = r
1364- let ae = size(ad)
1365- let af = $Tuple4(false, 0, (ec + dL), 0)
1366- func ag (ah,ai) = if ((ai >= ae))
1367- then ah
1368- else aa(ah, ad[ai])
1369-
1370- func aj (ah,ai) = if ((ai >= ae))
1371- then ah
1372- else throw("List size exceeds 64")
1373-
1374- aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 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)
1375- }
1376- let es = er._1
1377- let et = er._2
1378- let eu = er._3
1379- let ev = er._4
1380- if (!(es))
1381- then throw(("_withdraw: can't calculate targetAmount=" + toString(ev)))
1382- else ev
1383- }
1354+ let er = {
1355+ let ad = r
1356+ let ae = size(ad)
1357+ let af = $Tuple4(false, 0, (ec + dN), 0)
1358+ func ag (ah,ai) = if ((ai >= ae))
1359+ then ah
1360+ else aa(ah, ad[ai])
1361+
1362+ func aj (ah,ai) = if ((ai >= ae))
1363+ then ah
1364+ else throw("List size exceeds 64")
1365+
1366+ aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 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)
1367+ }
1368+ let es = er._1
1369+ let et = er._2
1370+ let eu = er._3
1371+ let ev = er._4
1372+ if (!(es))
1373+ then throw(("_withdraw: can't calculate targetAmount=" + toString(ev)))
1374+ else ev
13841375 }
13851376 let ew = bZ(dt, eg, eq)
13861377 let ex = (du - eq)
1387- let ey = if (cL(ew, ex, dt, du, dq, dr, dI))
1378+ let ey = if (cL(ew, ex, dt, du, dq, dr, dK))
13881379 then cs(dt, du, ew, ex, dk, (dk - ec), dq, dr, dl, dm, dn)
13891380 else false
13901381 if ((ey == ey))
13911382 then {
1392- let ez = db((eg + 1), eq, dT, dU)
1383+ let ez = db((eg + 1), eq, (dI / 2), (dJ / 2))
13931384 let dh = ez._1
13941385 let di = ez._2
13951386 let cZ = ez._3
13961387 $Tuple5(eq, ew, dh, di, cZ)
13971388 }
13981389 else throw("Strict value is not equal to itself.")
13991390 }
14001391
14011392
14021393 func eA (eB,eC,eD) = {
14031394 let bq = aH()
14041395 let eE = bq._1
14051396 let eF = bv(toBase58String(eE))
14061397 let dk = bq._3
1407- let dT = bq._4
1408- let dU = bq._5
1409- let dI = bq._6
1398+ let dI = bq._4
1399+ let dJ = bq._5
1400+ let dK = bq._6
14101401 let dl = bq._7
14111402 let dm = bq._8
14121403 let dn = bq._9
14131404 let ed = aZ()
14141405 let eG = aN()
14151406 let dt = eG._1
14161407 let du = eG._2
14171408 let eH = aR()
14181409 let dq = eH._1
14191410 let dr = eH._2
14201411 let dE = bX(dt, eB, eD)
14211412 let dF = (du + eD)
1422- let dL = cp(dt, du, dq, dr, dl, dm, dn)
1423- let eh = (du - dL)
1413+ let dN = cp(dt, du, dq, dr, dl, dm, dn)
1414+ let eh = (du - dN)
14241415 func aa (ab,ac) = if (ab._1)
14251416 then ab
14261417 else {
14271418 let ek = ab._2
14281419 let el = ab._3
14291420 let em = ((el + ek) / 2)
14301421 let en = bZ(dE, eC, em)
14311422 let eo = (dF - em)
14321423 let ep = (eo - cp(en, eo, dq, dr, dl, dm, dn))
1433- if (if ((ed > (ep - eh)))
1434- then ((ep - eh) >= 0)
1424+ if (if (((ep - eh) > (-1 * ed)))
1425+ then (ed > (ep - eh))
14351426 else false)
14361427 then $Tuple4(true, ek, el, em)
14371428 else if ((0 > (ep - eh)))
1438- then $Tuple4(false, ek, em, 0)
1439- else $Tuple4(false, em, el, 0)
1429+ then $Tuple4(false, ek, em, em)
1430+ else $Tuple4(false, em, el, em)
14401431 }
14411432
14421433 let eq = {
14431434 let eq = eD
14441435 let en = bZ(dE, eC, eq)
14451436 let eo = (dF - eq)
1446- let dM = cp(en, eo, dq, dr, dl, dm, dn)
1447- let dO = (dM - dL)
1448- if ((dO == 0))
1437+ let dO = cp(en, eo, dq, dr, dl, dm, dn)
1438+ let dQ = (dO - dN)
1439+ if ((dQ == 0))
14491440 then eq
14501441 else {
14511442 let eI = {
14521443 let ad = r
14531444 let ae = size(ad)
1454- let af = $Tuple4(false, 0, (eD + dL), 0)
1445+ let af = $Tuple4(false, 0, (eD + dN), 0)
14551446 func ag (ah,ai) = if ((ai >= ae))
14561447 then ah
14571448 else aa(ah, ad[ai])
14581449
14591450 func aj (ah,ai) = if ((ai >= ae))
14601451 then ah
14611452 else throw("List size exceeds 64")
14621453
14631454 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 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)
14641455 }
14651456 let es = eI._1
14661457 let et = eI._2
14671458 let eu = eI._3
14681459 let ev = eI._4
14691460 if (!(es))
14701461 then throw(("_swap: can't calculate targetAmount=" + toString(ev)))
14711462 else ev
14721463 }
14731464 }
14741465 let ew = bZ(dE, eC, eq)
14751466 let ex = (dF - eq)
1476- let ey = if (cL(ew, ex, dt, du, dq, dr, dI))
1467+ let ey = if (cL(ew, ex, dt, du, dq, dr, dK))
14771468 then cB(dt, du, ew, ex, dq, dr, dl, dm, dn)
14781469 else false
14791470 if ((ey == ey))
14801471 then {
1481- let eJ = db((eC + 1), eq, dT, dU)
1472+ let eJ = db((eC + 1), eq, dI, dJ)
14821473 let dh = eJ._1
14831474 let di = eJ._2
14841475 let cZ = eJ._3
14851476 $Tuple5(eq, ew, dh, di, cZ)
14861477 }
14871478 else throw("Strict value is not equal to itself.")
14881479 }
14891480
14901481
14911482 @Callable(eK)
1492-func init (al,bD,dd,de,eL,eM,eN,eO,cj,ck,cl,eP,eQ) = {
1493- let bW = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bm(eK.caller))
1483+func init (al,bD,dd,de,eL,eM,eN,eO,cj,ck,cl,eP,eQ,aD) = {
1484+ let bW = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bm(eK.caller))
14941485 then bp()
14951486 else false)
14961487 then bo()
14971488 else false)
14981489 then ak(al, "init: invalid assets")
14991490 else false)
1500- then Z(bD, 0, g, "init: invalid assetWeights")
1491+ then Z(bD, 1, g, "init: invalid assetWeights")
15011492 else false)
15021493 then am(size(al), size(bD), "init: invalid assetWeights size")
15031494 else false)
15041495 then P(dd, 0, d, "init: invalid lp fee")
15051496 else false)
15061497 then P(de, 0, d, "init: invalid protocol fee")
15071498 else false)
15081499 then an(eL, "init: invalid name")
15091500 else false)
15101501 then ao(eM, "init: invalid descr")
15111502 else false)
15121503 then ap(eN, "init: invalid decimals")
15131504 else false)
15141505 then P(eO, 0, e, "init: invalid maxAllocationAmplifier")
15151506 else false)
15161507 then P(cj, 0, eO, "init: invalid weightAmplifier")
15171508 else false)
15181509 then P(ck, 0, c, "init: invalid slippageRate")
15191510 else false)
15201511 then P(cl, 0, c, "init: invalid feeMaxRate")
15211512 else false)
15221513 then I(eP, "init: invalid protocolFeeContract")
15231514 else false)
1524- then P(eQ, 0, c, "init: invalid precision")
1515+ then P(eQ, 1, c, "init: invalid precision")
1516+ else false)
1517+ then I(aD, "init: invalid pauser")
15251518 else false
15261519 if ((bW == bW))
15271520 then {
15281521 let eR = bC(bD)
15291522 let dq = eR._1
15301523 let dr = eR._2
15311524 let dE = bB(al)
15321525 let eS = Issue(eL, eM, 0, eN, true)
15331526 let eE = calculateAssetId(eS)
15341527 let eT = $Tuple10(eE, true, 0, dd, de, eO, cj, ck, cl, addressFromStringValue(eP))
1535- $Tuple2((((((([eS] ++ aJ(eT)) ++ aM(al)) ++ aP(dE)) ++ aT(dq)) ++ ba(eQ)) ++ bc(bb())), unit)
1528+ $Tuple2(((((((([eS] ++ aJ(eT)) ++ aM(al)) ++ aP(dE)) ++ aT(dq)) ++ ba(eQ)) ++ bc(bb())) ++ aC(addressFromStringValue(aD))), unit)
15361529 }
15371530 else throw("Strict value is not equal to itself.")
15381531 }
15391532
15401533
15411534
15421535 @Callable(eK)
15431536 func depositAll (bx) = {
15441537 let bW = if (if (br())
15451538 then bs()
15461539 else false)
15471540 then P(bx, 0, c, "depositAll: invalid amount")
15481541 else false
15491542 if ((bW == bW))
15501543 then {
15511544 let bq = aH()
15521545 let eE = bq._1
15531546 let eF = bv(toBase58String(eE))
15541547 let do = aL()
15551548 let eU = dj(bx)
15561549 let dC = eU._1
15571550 let dy = eU._2
15581551 let dE = eU._3
15591552 func aa (ab,ac) = {
15601553 let bO = ab._1
15611554 let bV = av(eK.payments[bO].assetId)
15621555 let eV = bv(bV)
15631556 let dw = dy[bO]
15641557 let eW = bw(dw, eF, eV, CEILING)
15651558 let ey = if ((bV != ac))
15661559 then throw(("depositAll: invalid payment: index=" + toString(bO)))
15671560 else if ((0 >= eW))
15681561 then throw("depositAll: too little amount required")
15691562 else unit
15701563 if ((ey == ey))
15711564 then {
15721565 let eX = if ((eK.payments[bO].amount > eW))
15731566 then [ScriptTransfer(eK.caller, (eK.payments[bO].amount - eW), eK.payments[bO].assetId)]
15741567 else if ((eW > eK.payments[bO].amount))
15751568 then throw(((("depositAll: insufficient payment, index=" + toString(bO)) + ", required=") + toString(eW)))
15761569 else nil
15771570 $Tuple2((bO + 1), (ab._2 ++ eX))
15781571 }
15791572 else throw("Strict value is not equal to itself.")
15801573 }
15811574
15821575 let eY = {
15831576 let ad = do
15841577 let ae = size(ad)
15851578 let af = $Tuple2(0, nil)
15861579 func ag (ah,ai) = if ((ai >= ae))
15871580 then ah
15881581 else aa(ah, ad[ai])
15891582
15901583 func aj (ah,ai) = if ((ai >= ae))
15911584 then ah
15921585 else throw("List size exceeds 10")
15931586
15941587 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
15951588 }
15961589 let cT = eY._1
15971590 let eZ = eY._2
15981591 let eT = $Tuple10(bq._1, bq._2, (bq._3 + dC), bq._4, bq._5, bq._6, bq._7, bq._8, bq._9, bq._10)
15991592 $Tuple2(((([Reissue(eE, dC, true), ScriptTransfer(eK.caller, dC, eE)] ++ aJ(eT)) ++ aP(dE)) ++ eZ), unit)
16001593 }
16011594 else throw("Strict value is not equal to itself.")
16021595 }
16031596
16041597
16051598
16061599 @Callable(eK)
16071600 func deposit (fa) = {
16081601 let bW = P(fa, 0, c, "deposit: invalid min lp amount")
16091602 if ((bW == bW))
16101603 then {
16111604 let bq = aH()
16121605 let eE = bq._1
1613- let eF = bv(toBase58String(eE))
1606+ let fb = av(eE)
1607+ let eF = bv(fb)
16141608 let ey = if (if (if (if (br())
16151609 then bs()
16161610 else false)
16171611 then am(size(eK.payments), 1, "deposit: invalid payments size")
16181612 else false)
16191613 then at(aL(), av(eK.payments[0].assetId), "deposit: invalid payment asset")
16201614 else false)
1621- then P(eK.payments[0].amount, 0, c, "deposit: invalid payment amount")
1615+ then P(eK.payments[0].amount, 1, c, "deposit: invalid payment amount")
16221616 else false
16231617 if ((ey == ey))
16241618 then {
1625- let fb = av(eK.payments[0].assetId)
1626- let bG = bv(fb)
1627- let fc = bw(eK.payments[0].amount, bG, eF, DOWN)
1628- let fd = dH(fb, fc)
1629- let dC = fd._1
1630- let dE = fd._2
1631- let dG = P(dC, fa, c, "deposit: less than min lp")
1619+ let fc = av(eK.payments[0].assetId)
1620+ let bG = bv(fc)
1621+ let fd = bw(eK.payments[0].amount, bG, eF, DOWN)
1622+ let fe = dH(fc, fd)
1623+ let dC = fe._1
1624+ let dE = fe._2
1625+ let dh = fe._3
1626+ let di = fe._4
1627+ let cZ = fe._5
1628+ let ff = ((dC - dh) - di)
1629+ let dG = P(ff, fa, c, "deposit: less than min")
16321630 if ((dG == dG))
16331631 then {
16341632 let eT = $Tuple10(bq._1, bq._2, (bq._3 + dC), bq._4, bq._5, bq._6, bq._7, bq._8, bq._9, bq._10)
1635- $Tuple2((([Reissue(eE, dC, true), ScriptTransfer(eK.caller, dC, eE)] ++ aJ(eT)) ++ aP(dE)), unit)
1633+ $Tuple2(((((([Reissue(eE, dC, true), ScriptTransfer(eK.caller, ff, eE)] ++ aJ(eT)) ++ aP(dE)) ++ aW(fb, (dh + aV(fb)))) ++ aY(fb, (di + aX(fb)))) ++ bc(cZ)), unit)
16361634 }
16371635 else throw("Strict value is not equal to itself.")
16381636 }
16391637 else throw("Strict value is not equal to itself.")
16401638 }
16411639 else throw("Strict value is not equal to itself.")
16421640 }
16431641
16441642
16451643
16461644 @Callable(eK)
16471645 func withdrawAll () = {
16481646 let bq = aH()
16491647 let eE = bq._1
1650- let fe = toBase58String(eE)
1651- let eF = bv(fe)
1648+ let fb = toBase58String(eE)
1649+ let eF = bv(fb)
16521650 let do = aL()
16531651 let bW = if (if (if (if (br())
16541652 then bs()
16551653 else false)
16561654 then am(size(eK.payments), 1, "withdrawAll: invalid payments size")
16571655 else false)
1658- then V(fe, av(eK.payments[0].assetId), "withdrawAll: invalid payment asset")
1659- else false)
1660- then P(eK.payments[0].amount, 0, c, "withdrawAll: invalid payment amount")
1656+ then V(fb, av(eK.payments[0].assetId), "withdrawAll: invalid payment asset")
1657+ else false)
1658+ then P(eK.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
16611659 else false
16621660 if ((bW == bW))
16631661 then {
1664- let ff = dS(eK.payments[0].amount)
1665- let dY = ff._1
1666- let ea = ff._2
1667- let dE = ff._3
1668- let dh = ff._4
1669- let di = ff._5
1670- let cZ = ff._6
1671- let fg = ce(do, ea, eK.caller, eF)
1662+ let fg = dV(eK.payments[0].amount)
1663+ let dY = fg._1
1664+ let ea = fg._2
1665+ let dE = fg._3
1666+ let fh = ce(do, ea, eK.caller, eF)
16721667 let eT = $Tuple10(bq._1, bq._2, (bq._3 - dY), bq._4, bq._5, bq._6, bq._7, bq._8, bq._9, bq._10)
1673- $Tuple2((((((([Burn(eE, dY)] ++ fg) ++ aJ(eT)) ++ aP(dE)) ++ aW(fe, (dh + aV(fe)))) ++ aY(fe, (di + aX(fe)))) ++ bc(cZ)), unit)
1668+ $Tuple2(((([Burn(eE, dY)] ++ fh) ++ aJ(eT)) ++ aP(dE)), unit)
16741669 }
16751670 else throw("Strict value is not equal to itself.")
16761671 }
16771672
16781673
16791674
16801675 @Callable(eK)
1681-func withdraw (O,fh) = {
1676+func withdraw (O,fi) = {
16821677 let bq = aH()
16831678 let eE = bq._1
1684- let fe = toBase58String(eE)
1685- let eF = bv(fe)
1679+ let fb = toBase58String(eE)
1680+ let eF = bv(fb)
16861681 let do = aL()
16871682 let bW = if (if (if (if (if (if (br())
16881683 then bs()
16891684 else false)
16901685 then am(size(eK.payments), 1, "withdraw: invalid payments size")
16911686 else false)
1692- then V(fe, av(eK.payments[0].assetId), "withdraw: invalid payment asset")
1693- else false)
1694- then P(eK.payments[0].amount, 0, c, "withdraw: invalid payment amount")
1687+ then V(fb, av(eK.payments[0].assetId), "withdraw: invalid payment asset")
1688+ else false)
1689+ then P(eK.payments[0].amount, 1, c, "withdraw: invalid payment amount")
16951690 else false)
16961691 then at(do, O, "withdraw: invalid assetId")
16971692 else false)
1698- then P(fh, 0, c, "withdraw: invalid minAmount")
1693+ then P(fi, 0, c, "withdraw: invalid minAmount")
16991694 else false
17001695 if ((bW == bW))
17011696 then {
1702- let fi = eb(O, eK.payments[0].amount)
1703- let fj = fi._1
1704- let ew = fi._2
1705- let dh = fi._3
1706- let di = fi._4
1707- let cZ = fi._5
1708- let fk = ((fj - dh) - di)
1709- let fl = bv(O)
1710- let fm = bw(fk, eF, fl, DOWN)
1711- let ey = P(fm, fh, c, "withdraw: insufficient final amount")
1697+ let fj = eb(O, eK.payments[0].amount)
1698+ let fk = fj._1
1699+ let ew = fj._2
1700+ let dh = fj._3
1701+ let di = fj._4
1702+ let cZ = fj._5
1703+ let fl = ((fk - dh) - di)
1704+ let fm = bv(O)
1705+ let fn = bw(fl, eF, fm, DOWN)
1706+ let ey = P(fn, fi, c, "withdraw: less than min")
17121707 if ((ey == ey))
17131708 then {
17141709 let eT = $Tuple10(bq._1, bq._2, (bq._3 - eK.payments[0].amount), bq._4, bq._5, bq._6, bq._7, bq._8, bq._9, bq._10)
1715- $Tuple2(((((([Burn(eE, eK.payments[0].amount), ScriptTransfer(eK.caller, fm, ax(O))] ++ aJ(eT)) ++ aP(ew)) ++ aW(O, (dh + aV(O)))) ++ aY(O, (di + aX(O)))) ++ bc(cZ)), unit)
1710+ $Tuple2(((((([Burn(eE, eK.payments[0].amount), ScriptTransfer(eK.caller, fn, ax(O))] ++ aJ(eT)) ++ aP(ew)) ++ aW(O, (dh + aV(O)))) ++ aY(O, (di + aX(O)))) ++ bc(cZ)), unit)
17161711 }
17171712 else throw("Strict value is not equal to itself.")
17181713 }
17191714 else throw("Strict value is not equal to itself.")
17201715 }
17211716
17221717
17231718
17241719 @Callable(eK)
1725-func swap (fn,fh) = {
1720+func swap (fo,fi) = {
17261721 let bq = aH()
17271722 let eE = bq._1
17281723 let eF = bv(toBase58String(eE))
17291724 let do = aL()
1730- let fo = av(eK.payments[0].assetId)
1731- let fp = bw(eK.payments[0].amount, bv(fo), eF, DOWN)
1732- let fq = valueOrErrorMessage(indexOf(do, fo), "swap: invalid source asset")
1733- if ((fq == fq))
1734- then {
1735- let eg = valueOrErrorMessage(indexOf(do, fn), "swap: invalid target asset")
1725+ let fp = av(eK.payments[0].assetId)
1726+ let fq = bw(eK.payments[0].amount, bv(fp), eF, DOWN)
1727+ let fr = valueOrErrorMessage(indexOf(do, fp), "swap: invalid source asset")
1728+ if ((fr == fr))
1729+ then {
1730+ let eg = valueOrErrorMessage(indexOf(do, fo), "swap: invalid target asset")
17361731 if ((eg == eg))
17371732 then {
17381733 let bW = if (if (if (if (if (br())
17391734 then bs()
17401735 else false)
1741- then P(fh, 0, c, "swap: invalid min target amount")
1736+ then P(fi, 0, c, "swap: invalid min target amount")
17421737 else false)
1743- then P(fp, 0, c, "swap: invalid source amount")
1738+ then P(fq, 1, c, "swap: invalid source amount")
17441739 else false)
1745- then Y(fo, fn, "swap: same assets")
1740+ then Y(fp, fo, "swap: same assets")
17461741 else false)
17471742 then am(size(eK.payments), 1, "swap: invalid payments size")
17481743 else false
17491744 if ((bW == bW))
17501745 then {
1751- let fr = eA(fq, eg, fp)
1752- let fj = fr._1
1753- let ew = fr._2
1754- let dh = fr._3
1755- let di = fr._4
1756- let cZ = fr._5
1757- let fk = ((fj - dh) - di)
1758- let fl = bv(fn)
1759- let fm = bw(fk, eF, fl, DOWN)
1760- let ey = P(fm, fh, c, "swap: insufficient final amount")
1746+ let fs = eA(fr, eg, fq)
1747+ let fk = fs._1
1748+ let ew = fs._2
1749+ let dh = fs._3
1750+ let di = fs._4
1751+ let cZ = fs._5
1752+ let fl = ((fk - dh) - di)
1753+ let fm = bv(fo)
1754+ let fn = bw(fl, eF, fm, DOWN)
1755+ let ey = P(fn, fi, c, "swap: less than min")
17611756 if ((ey == ey))
1762- then $Tuple2((((([ScriptTransfer(eK.caller, fm, ax(fn))] ++ aP(ew)) ++ aW(fn, (dh + aV(fn)))) ++ aY(fn, (di + aX(fn)))) ++ bc(cZ)), unit)
1757+ then $Tuple2((((([ScriptTransfer(eK.caller, fn, ax(fo))] ++ aP(ew)) ++ aW(fo, (dh + aV(fo)))) ++ aY(fo, (di + aX(fo)))) ++ bc(cZ)), unit)
17631758 else throw("Strict value is not equal to itself.")
17641759 }
17651760 else throw("Strict value is not equal to itself.")
17661761 }
17671762 else throw("Strict value is not equal to itself.")
17681763 }
17691764 else throw("Strict value is not equal to itself.")
17701765 }
17711766
17721767
17731768
17741769 @Callable(eK)
17751770 func getDepositAll (ec) = {
1776- let bW = P(ec, 0, c, "getDepositAll: invalid amount")
1771+ let bW = P(ec, 1, c, "getDepositAll: invalid amount")
17771772 if ((bW == bW))
17781773 then {
1779- let fs = dj(ec)
1780- let dC = fs._1
1781- let dy = fs._2
1782- let dE = fs._3
1774+ let ft = dj(ec)
1775+ let dC = ft._1
1776+ let dy = ft._2
1777+ let dE = ft._3
17831778 $Tuple2(nil, $Tuple2(dC, dy))
17841779 }
17851780 else throw("Strict value is not equal to itself.")
17861781 }
17871782
17881783
17891784
17901785 @Callable(eK)
17911786 func getDeposit (O,bx) = {
17921787 let bW = if (at(aL(), O, "getDeposit: invalid asset"))
1793- then P(bx, 0, c, "getDeposit: invalid amount")
1788+ then P(bx, 1, c, "getDeposit: invalid amount")
17941789 else false
17951790 if ((bW == bW))
17961791 then {
17971792 let bq = aH()
17981793 let eE = bq._1
17991794 let eF = bv(toBase58String(eE))
18001795 let bG = bv(O)
1801- let fc = bw(bx, bG, eF, DOWN)
1802- let ft = dH(O, fc)
1803- let dC = ft._1
1804- let dE = ft._2
1805- $Tuple2(nil, dC)
1796+ let fd = bw(bx, bG, eF, DOWN)
1797+ let fu = dH(O, fd)
1798+ let dC = fu._1
1799+ let dE = fu._2
1800+ let dh = fu._3
1801+ let di = fu._4
1802+ let cZ = fu._5
1803+ let ff = ((dC - dh) - di)
1804+ $Tuple2(nil, ff)
18061805 }
18071806 else throw("Strict value is not equal to itself.")
18081807 }
18091808
18101809
18111810
18121811 @Callable(eK)
18131812 func getWithdrawAll (ec) = {
18141813 let bW = P(ec, 0, c, "getWithdrawAll: invalid amount")
18151814 if ((bW == bW))
18161815 then {
1817- let fu = dS(ec)
1818- let dY = fu._1
1819- let fv = fu._2
1820- let dE = fu._3
1821- let dh = fu._4
1822- let di = fu._5
1823- let cZ = fu._6
1824- $Tuple2(nil, fv)
1816+ let fv = dV(ec)
1817+ let dY = fv._1
1818+ let fw = fv._2
1819+ let dE = fv._3
1820+ $Tuple2(nil, fw)
18251821 }
18261822 else throw("Strict value is not equal to itself.")
18271823 }
18281824
18291825
18301826
18311827 @Callable(eK)
18321828 func getWithdraw (O,bx) = {
18331829 let bW = if (at(aL(), O, "getWithdraw: invalid asset"))
1834- then P(bx, 0, c, "getWithdraw: invalid amount")
1830+ then P(bx, 1, c, "getWithdraw: invalid amount")
18351831 else false
18361832 if ((bW == bW))
18371833 then {
18381834 let bq = aH()
18391835 let eE = bq._1
18401836 let eF = bv(toBase58String(eE))
1841- let fw = eb(O, bx)
1842- let fj = fw._1
1843- let dE = fw._2
1844- let dh = fw._3
1845- let di = fw._4
1846- let cZ = fw._5
1847- let fk = ((fj - dh) - di)
1848- let fl = bv(O)
1849- let fm = bw(fk, eF, fl, DOWN)
1850- $Tuple2(nil, fm)
1837+ let fx = eb(O, bx)
1838+ let fk = fx._1
1839+ let dE = fx._2
1840+ let dh = fx._3
1841+ let di = fx._4
1842+ let cZ = fx._5
1843+ let fl = ((fk - dh) - di)
1844+ let fm = bv(O)
1845+ let fn = bw(fl, eF, fm, DOWN)
1846+ $Tuple2(nil, fn)
18511847 }
18521848 else throw("Strict value is not equal to itself.")
18531849 }
18541850
18551851
18561852
18571853 @Callable(eK)
1858-func getSwap (fx,fn,eD) = {
1854+func getSwap (fy,fo,eD) = {
18591855 let bq = aH()
18601856 let eE = bq._1
18611857 let eF = bv(toBase58String(eE))
18621858 let do = aL()
1863- let fq = valueOrErrorMessage(indexOf(do, fx), "swap: invalid source asset")
1864- if ((fq == fq))
1865- then {
1866- let eg = valueOrErrorMessage(indexOf(do, fn), "swap: invalid target asset")
1859+ let fr = valueOrErrorMessage(indexOf(do, fy), "swap: invalid source asset")
1860+ if ((fr == fr))
1861+ then {
1862+ let eg = valueOrErrorMessage(indexOf(do, fo), "swap: invalid target asset")
18671863 if ((eg == eg))
18681864 then {
1869- let fp = bw(eD, bv(fx), eF, DOWN)
1870- let bW = if (P(fp, 0, c, "swap: invalid source amount"))
1871- then Y(fx, fn, "swap: same assets")
1865+ let fq = bw(eD, bv(fy), eF, DOWN)
1866+ let bW = if (P(fq, 1, c, "swap: invalid source amount"))
1867+ then Y(fy, fo, "swap: same assets")
18721868 else false
18731869 if ((bW == bW))
18741870 then {
1875- let fy = eA(fq, eg, fp)
1876- let fj = fy._1
1877- let ew = fy._2
1878- let dh = fy._3
1879- let di = fy._4
1880- let cZ = fy._5
1881- let fk = ((fj - dh) - di)
1882- let fl = bv(fn)
1883- let fm = bw(fk, eF, fl, DOWN)
1884- $Tuple2(nil, fm)
1871+ let fz = eA(fr, eg, fq)
1872+ let fk = fz._1
1873+ let ew = fz._2
1874+ let dh = fz._3
1875+ let di = fz._4
1876+ let cZ = fz._5
1877+ let fl = ((fk - dh) - di)
1878+ let fm = bv(fo)
1879+ let fn = bw(fl, eF, fm, DOWN)
1880+ $Tuple2(nil, fn)
18851881 }
18861882 else throw("Strict value is not equal to itself.")
18871883 }
18881884 else throw("Strict value is not equal to itself.")
18891885 }
18901886 else throw("Strict value is not equal to itself.")
18911887 }
18921888
18931889
18941890
18951891 @Callable(eK)
18961892 func getClaim (be) = {
1897- let fz = if ((size(be) > 0))
1893+ let fA = if ((size(be) > 0))
18981894 then valueOrErrorMessage(addressFromString(be), "getClaim: invalid user")
18991895 else eK.caller
1900- let fA = cM(fz)
1901- let fB = fA._1
1902- let cO = fA._2
1896+ let fB = cM(fA)
1897+ let fC = fB._1
1898+ let cO = fB._2
19031899 $Tuple2(nil, cO)
19041900 }
19051901
19061902
19071903
19081904 @Callable(eK)
19091905 func getUtilFunc () = {
19101906 let bq = aH()
19111907 let dk = bq._3
19121908 let dl = bq._7
19131909 let dm = bq._8
19141910 let dn = bq._9
1915- let fC = aN()
1916- let dE = fC._1
1917- let dF = fC._2
1918- let fD = aR()
1919- let dq = fD._1
1920- let dr = fD._2
1921- let dM = cp(dE, dF, dq, dr, dl, dm, dn)
1922- let ep = (dF - dM)
1911+ let fD = aN()
1912+ let dE = fD._1
1913+ let dF = fD._2
1914+ let fE = aR()
1915+ let dq = fE._1
1916+ let dr = fE._2
1917+ let dO = cp(dE, dF, dq, dr, dl, dm, dn)
1918+ let ep = (dF - dO)
19231919 $Tuple2(nil, $Tuple2(ep, dk))
1920+ }
1921+
1922+
1923+
1924+@Callable(eK)
1925+func getFeeFunc () = {
1926+ let bq = aH()
1927+ let dl = bq._7
1928+ let dm = bq._8
1929+ let dn = bq._9
1930+ let fF = aN()
1931+ let dE = fF._1
1932+ let dF = fF._2
1933+ let fG = aR()
1934+ let dq = fG._1
1935+ let dr = fG._2
1936+ let dO = cp(dE, dF, dq, dr, dl, dm, dn)
1937+ $Tuple2(nil, dO)
19241938 }
19251939
19261940
19271941
19281942 @Callable(eK)
19291943 func checkpoint (be) = {
19301944 let bW = if (br())
19311945 then bs()
19321946 else false
19331947 if ((bW == bW))
19341948 then {
1935- let fz = if ((size(be) > 0))
1949+ let fA = if ((size(be) > 0))
19361950 then valueOrErrorMessage(addressFromString(be), "checkpoint: invalid user")
19371951 else eK.caller
1938- cM(fz)
1952+ cM(fA)
19391953 }
19401954 else throw("Strict value is not equal to itself.")
19411955 }
19421956
19431957
19441958
19451959 @Callable(eK)
19461960 func stake () = {
19471961 let bW = if (br())
19481962 then bs()
19491963 else false
19501964 if ((bW == bW))
19511965 then {
19521966 let bq = aH()
1953- let fe = av(bq._1)
1967+ let fb = av(bq._1)
19541968 let ey = if (if (am(size(eK.payments), 1, "stake: invalid payments size"))
1955- then V(fe, av(eK.payments[0].assetId), "stake: invalid payment asset")
1969+ then V(fb, av(eK.payments[0].assetId), "stake: invalid payment asset")
19561970 else false)
19571971 then P(eK.payments[0].amount, 0, c, "stake: invalid payment amount")
19581972 else false
19591973 if ((ey == ey))
19601974 then {
1961- let fE = cM(eK.caller)
1962- let fB = fE._1
1963- let cO = fE._2
1964- $Tuple2(((fB ++ bh(eK.caller, (bg(eK.caller) + eK.payments[0].amount))) ++ bj((bi() + eK.payments[0].amount))), unit)
1975+ let fH = cM(eK.caller)
1976+ let fC = fH._1
1977+ let cO = fH._2
1978+ $Tuple2(((fC ++ bh(eK.caller, (bg(eK.caller) + eK.payments[0].amount))) ++ bj((bi() + eK.payments[0].amount))), unit)
19651979 }
19661980 else throw("Strict value is not equal to itself.")
19671981 }
19681982 else throw("Strict value is not equal to itself.")
19691983 }
19701984
19711985
19721986
19731987 @Callable(eK)
19741988 func unstake (bx) = {
19751989 let bW = if (br())
19761990 then bs()
19771991 else false
19781992 if ((bW == bW))
19791993 then {
19801994 let bq = aH()
19811995 let eE = bq._1
19821996 let cN = bg(eK.caller)
19831997 let ey = P(bx, 0, cN, "unstake: invalid amount")
19841998 if ((ey == ey))
19851999 then {
1986- let fF = cM(eK.caller)
1987- let fB = fF._1
1988- let cO = fF._2
1989- $Tuple2(((([ScriptTransfer(eK.caller, bx, eE)] ++ fB) ++ bh(eK.caller, (cN - bx))) ++ bj((bi() - bx))), unit)
2000+ let fI = cM(eK.caller)
2001+ let fC = fI._1
2002+ let cO = fI._2
2003+ $Tuple2(((([ScriptTransfer(eK.caller, bx, eE)] ++ fC) ++ bh(eK.caller, (cN - bx))) ++ bj((bi() - bx))), unit)
19902004 }
19912005 else throw("Strict value is not equal to itself.")
19922006 }
19932007 else throw("Strict value is not equal to itself.")
19942008 }
19952009
19962010
19972011
19982012 @Callable(eK)
1999-func claim (be,al) = {
2000- let bW = if (if (br())
2013+func claim (be) = {
2014+ let bW = if (br())
20012015 then bs()
2002- else false)
2003- then P(size(al), 1, 10, "claim: invalid assets size")
20042016 else false
20052017 if ((bW == bW))
20062018 then {
2007- let fz = if ((size(be) > 0))
2019+ let fA = if ((size(be) > 0))
20082020 then valueOrErrorMessage(addressFromString(be), "claim: invalid user")
20092021 else eK.caller
20102022 let bq = aH()
20112023 let eE = bq._1
2012- let fe = av(eE)
2013- let do = [fe, aL()]
2014- let fG = (size(do) - 1)
2015- let cN = bg(fz)
2016- let fH = cM(fz)
2017- let fB = fH._1
2018- let cO = fH._2
2019- func aa (ab,fI) = {
2024+ let fb = av(eE)
2025+ let do = [fb, aL()]
2026+ let fJ = (size(do) - 1)
2027+ let cN = bg(fA)
2028+ let fK = cM(fA)
2029+ let fC = fK._1
2030+ let cO = fK._2
2031+ func aa (ab,fL) = {
20202032 let bO = ab._1
2021- if ((bO > fG))
2022- then $Tuple3((bO + 1), (ab._2 :+ fI), ab._3)
2023- else {
2024- let fJ = do[bO]
2025- if (containsElement(al, fJ))
2026- then $Tuple3((bO + 1), (ab._2 :+ 0), (ab._3 :+ ScriptTransfer(fz, fI, ax(fJ))))
2027- else $Tuple3((bO + 1), (ab._2 :+ fI), ab._3)
2033+ if (if ((fJ >= bO))
2034+ then (fL > 0)
2035+ else false)
2036+ then {
2037+ let fM = do[bO]
2038+ $Tuple3((bO + 1), (ab._2 :+ 0), (ab._3 :+ ScriptTransfer(fA, fL, ax(fM))))
20282039 }
2040+ else $Tuple3((bO + 1), (ab._2 :+ fL), ab._3)
20292041 }
20302042
2031- let fK = {
2043+ let fN = {
20322044 let ad = cO
20332045 let ae = size(ad)
20342046 let af = $Tuple3(0, nil, nil)
20352047 func ag (ah,ai) = if ((ai >= ae))
20362048 then ah
20372049 else aa(ah, ad[ai])
20382050
20392051 func aj (ah,ai) = if ((ai >= ae))
20402052 then ah
20412053 else throw("List size exceeds 11")
20422054
20432055 aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
20442056 }
2045- let cT = fK._1
2046- let fL = fK._2
2047- let fM = fK._3
2048- $Tuple2(((fM ++ removeByIndex(fB, 0)) ++ bl(fz, fL)), unit)
2057+ let cT = fN._1
2058+ let fO = fN._2
2059+ let fP = fN._3
2060+ $Tuple2(((fP ++ removeByIndex(fC, 0)) ++ bl(fA, fO)), unit)
20492061 }
20502062 else throw("Strict value is not equal to itself.")
20512063 }
20522064
20532065
20542066
20552067 @Callable(eK)
20562068 func pause () = {
20572069 let bW = if (if (bu(eK.caller))
20582070 then br()
20592071 else false)
20602072 then bs()
20612073 else false
20622074 if ((bW == bW))
20632075 then $Tuple2(az(true), unit)
20642076 else throw("Strict value is not equal to itself.")
20652077 }
20662078
20672079
20682080
20692081 @Callable(eK)
20702082 func unpause () = {
20712083 let bW = if (if (bu(eK.caller))
20722084 then br()
20732085 else false)
20742086 then bt()
20752087 else false
20762088 if ((bW == bW))
20772089 then $Tuple2(az(false), unit)
20782090 else throw("Strict value is not equal to itself.")
20792091 }
20802092
20812093
20822094
20832095 @Callable(eK)
20842096 func updatePauser (aD) = {
20852097 let bW = if (if (bm(eK.caller))
20862098 then br()
20872099 else false)
20882100 then I(aD, "updatePauser: invalid pauser")
20892101 else false
20902102 if ((bW == bW))
20912103 then $Tuple2(aC(addressFromStringValue(aD)), unit)
20922104 else throw("Strict value is not equal to itself.")
20932105 }
20942106
20952107
20962108
20972109 @Callable(eK)
20982110 func setMultisig (aG) = {
20992111 let bW = if (bm(eK.caller))
21002112 then I(aG, "setMultisig: invalid multisig")
21012113 else false
21022114 if ((bW == bW))
21032115 then $Tuple2(aF(addressFromStringValue(aG)), unit)
21042116 else throw("Strict value is not equal to itself.")
21052117 }
21062118
21072119
2108-@Verifier(fN)
2109-func fO () = {
2120+@Verifier(fQ)
2121+func fR () = {
21102122 let L = getString(s)
21112123 if ($isInstanceOf(L, "String"))
21122124 then {
2113- let fP = L
2114- valueOrElse(getBoolean(addressFromStringValue(fP), makeString([t, toString(this), toBase58String(fN.id)], a)), false)
2115- }
2116- else sigVerify(fN.bodyBytes, fN.proofs[0], fN.senderPublicKey)
2125+ let fS = L
2126+ valueOrElse(getBoolean(addressFromStringValue(fS), makeString([t, toString(this), toBase58String(fQ.id)], a)), false)
2127+ }
2128+ else sigVerify(fQ.bodyBytes, fQ.proofs[0], fQ.senderPublicKey)
21172129 }
21182130

github/deemru/w8io/169f3d6 
220.76 ms