tx · 4UTFAedCYskK15BEPCtDcX6UhYyJtqYyvd5fe3NAzfPH

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.54000000 Waves

2023.10.19 11:00 [2805184] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "4UTFAedCYskK15BEPCtDcX6UhYyJtqYyvd5fe3NAzfPH", "fee": 54000000, "feeAssetId": null, "timestamp": 1697702449947, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "4FctnhhHeUuooEF79MvFHhx2MPNoSKEzkRfgVjDfLtddJL58kkzqE9Lmo9RwBUhqPX9JqxNExcbnHN586P98iLM4" ], "script": "base64:BgKiAQgCEgMKAQgSAwoBCBIECgIICBIFCgMIGBgSBQoDCAEIEgQKAggBEgYKBAEICAESBQoDAQgIEg8KDQgICAgICAgICAgICAgSAwoBCBIDCgEIEgUKAwgIARIGCgQIAQgIEgcKBQgICAEEEgUKAwgEARIMCgoICAgBAQEBAQEEEgkKBwgBAQEBAQESABIAEgASABIAEgASABIAEgMKAQgSAwoBCIUBAAdTRl9QT09MAgJTRgAHV1hfUE9PTAICV1gABENQTU0CBGNwbW0ABEZMQVQCBGZsYXQAD0NBUF9GRUVfTk9fTE9BTgIJY2FwTm9Mb2FuAAxDQVBfRkVFX0xPQU4CB2NhcExvYW4AFFNUT1BMT1NTX0ZFRV9OT19MT0FOAg5zdG9wTG9zc05vTG9hbgANU1RPUExPU1NfTE9BTgIMc3RvcExvc3NMb2FuAAhMT0FOX0ZFRQIEbG9hbgALTk9fTE9BTl9GRUUCBm5vTG9hbgAGTk9fRkVFAgVub0ZlZQAGU0NBTEU4AIDC1y8AB1NDQUxFMTAAgMivoCUAB1NDQUxFMTYJALYCAQCAgIT+pt7hEQAKRkVFX1NDQUxFNgDAhD0AFGtTRlBvb2xBQXNzZXRCYWxhbmNlAg9BX2Fzc2V0X2JhbGFuY2UAFGtTRlBvb2xCQXNzZXRCYWxhbmNlAg9CX2Fzc2V0X2JhbGFuY2UAD2tTRlBvb2xBQXNzZXRJZAIKQV9hc3NldF9pZAAPa1NGUG9vbEJBc3NldElkAgpCX2Fzc2V0X2lkAA5rU0ZQb29sU2hhcmVJZAIOc2hhcmVfYXNzZXRfaWQAEmtTRlBvb2xTaGFyZVN1cHBseQISc2hhcmVfYXNzZXRfc3VwcGx5AAprU0ZQb29sRmVlAgpjb21taXNzaW9uAA1rVXNlclBvc2l0aW9uAg1fdXNlclBvc2l0aW9uABFrVXNlclBvc2l0aW9uUG9vbAIRX3VzZXJQb3NpdGlvblBvb2wAEWtVc2VyQm9ycm93QW1vdW50AhlfdXNlclBvc2l0aW9uQm9ycm93QW1vdW50ABJrVXNlckJvcnJvd0Fzc2V0SWQCGl91c2VyUG9zaXRpb25Cb3Jyb3dBc3NldElkABBrVXNlclBvc2l0aW9uTnVtAhNfdXNlclBvc2l0aW9uTnVtYmVyABVrVXNlclBvc2l0aW9uSW50ZXJlc3QCFV91c2VyUG9zaXRpb25JbnRlcmVzdAAKa1Bvb2xUb3RhbAIKX3Bvb2xUb3RhbAAOa1Bvb2xUb3RhbExvYW4CDl9wb29sVG90YWxMb2FuABFrUG9vbEludGVyZXN0TG9hbgIRX3Bvb2xJbnRlcmVzdExvYW4AE2tQb29sSW50ZXJlc3ROb0xvYW4CE19wb29sSW50ZXJlc3ROb0xvYW4ADmtQb29sQ2FuQm9ycm93Ag5fcG9vbENhbkJvcnJvdwAVa0F4bHlJbkZlZVdpdGhvdXRMb2FuAg5fYXhseUZlZU5vTG9hbgASa0F4bHlJbkZlZVdpdGhMb2FuAhBfYXhseUZlZVdpdGhMb2FuABFrQXhseU5vTG9hbkNhcEZlZQIRX2F4bHlGZWVDYXBOb0xvYW4AE2tBeGx5V2l0aExvYW5DYXBGZWUCE19heGx5RmVlQ2FwV2l0aExvYW4AFmtBeGx5U3RvcExvc3NOb0xvYW5GZWUCGF9heGx5RmVlU3RvcGxvc3NXaXRoTG9hbgAUa0F4bHlTdG9wTG9zc0xvYW5GZWUCFl9heGx5RmVlU3RvcGxvc3NOb0xvYW4ACmtSZXF1ZXN0SWQCC19yZXF1ZXN0X2lkAAxrUmVxdWVzdEl0ZXICDXJlcXVlc3RzX2l0ZXIABWtQb29sAgVwb29sXwAJa1Bvb2xUeXBlAglfcG9vbFR5cGUACmtTaGFyZVBvb2wCDF9wb29sU2hhcmVJZAAOa1Bvb2xDYXBDaGFuZ2UCDl9wb29sQ2FwQ2hhbmdlAA9rVG9rZW5MYXN0UHJpY2UCCmxhc3RfcHJpY2UADmtQcmljZUluT3JhY2xlAgdfdHdhcDVCAAdrQWN0aXZlAgZhY3RpdmUADGtBY3RpdmVVc2VycwILYWN0aXZlVXNlcnMAC2tBY3RpdmVTRldYAgdfYWN0aXZlAAtrUG9vbEFjdGl2ZQILX2FjdGl2ZVBvb2wADWtVc2VyU3RvcExvc3MCCV9zdG9wTG9zcwAXa0ZhbGxiYWNrRXhjaGFuZ2VTd29wZmkCF19mYWxsYmFja0V4Y2hhbmdlU3dvcGZpAAlrTW9uZXlCb3gCDmF4bHlfbW9uZXlfYm94AA5rU0ZGYXJtaW5nQWRkcgITc3dvcGZpX2Zhcm1pbmdfYWRkcgAMa0xlbmRTZXJ2aWNlAhFsZW5kX3NlcnZpY2VfYWRkcgAPa09wZXJhdG9yQ2FsbFBLAhJhZG1pbl9jYWxsX3B1Yl9rZXkADGtQcmljZU9yYWNsZQIMcHJpY2Vfb3JhY2xlAAtrRXhDb250cmFjdAIRZXhjaGFuZ2VfY29udHJhY3QAD2tXeFN3YXBDb250cmFjdAIQd3hfc3dhcF9jb250cmFjdAAHa1N3b3BJZAIHc3dvcF9pZAAFa1d4SWQCBXd4X2lkAA9rR3JvdXAxQWRtaW4xUEsCFWdyb3VwMV9hZG1pbjFfcHViX2tleQAPa0dyb3VwMUFkbWluMlBLAhVncm91cDFfYWRtaW4yX3B1Yl9rZXkAD2tHcm91cDJBZG1pbjFQSwIVZ3JvdXAyX2FkbWluMV9wdWJfa2V5AA9rR3JvdXAyQWRtaW4yUEsCFWdyb3VwMl9hZG1pbjJfcHViX2tleQAIbW9uZXlCb3gJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUJa01vbmV5Qm94AhhObyBheGx5IG1vbmV5Qm94IGFkZHJlc3MACmV4Q29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwULa0V4Q29udHJhY3QCHE5vIGV4Y2hhbmdlIGNvbnRyYWN0IGFkZHJlc3MAD3ByaWNlT3JhY2xlQWRkcgkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrUHJpY2VPcmFjbGUCF05vIHByaWNlIG9yYWNsZSBhZGRyZXNzAA53eFN3YXBDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rV3hTd2FwQ29udHJhY3QCEk5vIHd4IHN3YXAgYWRkcmVzcwAGU1dPUElECQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQdrU3dvcElkAgpObyBzd29wIGlkAARXWElECQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQVrV3hJZAIITm8gd3ggaWQADmdyb3VwMUFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAxQWRtaW4xUEsCGUNhbid0IGdldCBrR3JvdXAxQWRtaW4xUEsADmdyb3VwMUFkbWluMlBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAxQWRtaW4yUEsCGUNhbid0IGdldCBrR3JvdXAxQWRtaW4yUEsADmdyb3VwMkFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAyQWRtaW4xUEsCGUNhbid0IGdldCBrR3JvdXAyQWRtaW4xUEsADmdyb3VwMkFkbWluMlBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rR3JvdXAyQWRtaW4yUEsCGUNhbid0IGdldCBrR3JvdXAyQWRtaW4xUEsACm9wZXJhdG9yUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFD2tPcGVyYXRvckNhbGxQSwIUQ2FuJ3QgZ2V0IG9wZXJhdG9yUEsBD3Vua25vd25Qb29sVHlwZQAJAAIBAg9Xcm9uZyBwb29sIHR5cGUBDmdldExlbmRTcnZBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrTGVuZFNlcnZpY2UCG0Nhbid0IGdldCBsZW5kIHNlcnZpY2UgYWRkcgEOaXNPcGVyYXRvckNhbGwBAWkDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQpvcGVyYXRvclBLBQR1bml0CQACAQIkT25seSBvcGVyYXRvciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQtpc0FkbWluQ2FsbAEBaQMDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQ5ncm91cDFBZG1pbjFQSwYJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFDmdyb3VwMUFkbWluMlBLBQR1bml0CQACAQIoT25seSBhZG1pbiBncm91cDEgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc0xhbmRDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgkBDmdldExlbmRTcnZBZGRyAAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQhpc0FjdGl2ZQADCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgYFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50ARBpc0FjdGl2ZUZvclVzZXJzAAMDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQAAAgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrQWN0aXZlVXNlcnMGBgcFBHVuaXQJAAIBAilEQXBwIGlzIGluYWN0aXZlIGZvciB1c2VycyBhdCB0aGlzIG1vbWVudAEMaXNQb29sQWN0aXZlAgRwb29sBHR5cGUECldYU0ZBY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQR0eXBlBQtrQWN0aXZlU0ZXWAYECnBvb2xBY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYDAwUKV1hTRkFjdGl2ZQUKcG9vbEFjdGl2ZQcGBwEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBEWdldFNGUG9vbEJhbGFuY2VzAQhwb29sQWRkcgkAlAoCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xBQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGJhbGFuY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEJBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEIgYXNzZXQgYmFsYW5jZQERZ2V0V1hQb29sQmFsYW5jZXMDCHBvb2xBZGRyA2FJZANiSWQJAJQKAgoAAUAJAPwHBAUIcG9vbEFkZHICHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUDYUlkBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2JJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQ9nZXRQb29sQmFsYW5jZXMECHBvb2xBZGRyBHR5cGUDYUlkA2JJZAMJAAACBQR0eXBlBQdTRl9QT09MCQERZ2V0U0ZQb29sQmFsYW5jZXMBBQhwb29sQWRkcgMJAAACBQR0eXBlBQdXWF9QT09MCQERZ2V0V1hQb29sQmFsYW5jZXMDBQhwb29sQWRkcgUDYUlkBQNiSWQJAQ91bmtub3duUG9vbFR5cGUAAQ1nZXRTRlBvb2xEYXRhAQhwb29sQWRkcgQLJHQwODA4OTgxMzgJARFnZXRTRlBvb2xCYWxhbmNlcwEFCHBvb2xBZGRyAwkAAAIFCyR0MDgwODk4MTM4BQskdDA4MDg5ODEzOAQEYmFsQggFCyR0MDgwODk4MTM4Al8yBARiYWxBCAULJHQwODA4OTgxMzgCXzEJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQUFzc2V0SWQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEJBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkBQRiYWxBBQRiYWxCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFDmtTRlBvb2xTaGFyZUlkAhhDYW4ndCBnZXQgc2hhcmUgYXNzZXQgaWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDWdldFdYUG9vbERhdGEBCHBvb2xBZGRyBANjZmcKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDY2ZnBQNjZmcEA2FJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABAMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQEA2JJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABQMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEIgYXNzZXQgaWQEB3NoYXJlSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAMDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhpDYW4ndCBnZXQgcG9vbCBMUCBhc3NldCBpZAQLJHQwODgzNTg4OTQJARFnZXRXWFBvb2xCYWxhbmNlcwMFCHBvb2xBZGRyBQNhSWQFA2JJZAMJAAACBQskdDA4ODM1ODg5NAULJHQwODgzNTg4OTQEBGJhbEIIBQskdDA4ODM1ODg5NAJfMgQEYmFsQQgFCyR0MDg4MzU4ODk0Al8xCQCXCgUFA2FJZAUDYklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtnZXRQb29sRGF0YQIIcG9vbEFkZHIEdHlwZQMJAAACBQR0eXBlBQdTRl9QT09MCQENZ2V0U0ZQb29sRGF0YQEFCHBvb2xBZGRyAwkAAAIFBHR5cGUFB1dYX1BPT0wJAQ1nZXRXWFBvb2xEYXRhAQUIcG9vbEFkZHIJAQ91bmtub3duUG9vbFR5cGUAAQ5nZXRTaGFyZVN1cHBseQMIcG9vbEFkZHIEdHlwZQdzaGFyZUlkAwkAAAIFBHR5cGUFB1NGX1BPT0wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUSa1NGUG9vbFNoYXJlU3VwcGx5AhxDYW4ndCBnZXQgc2hhcmUgYXNzZXQgc3VwcGx5AwkAAAIFBHR5cGUFB1dYX1BPT0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQdzaGFyZUlkAg1Xcm9uZyBTaGFyZUlkCHF1YW50aXR5CQEPdW5rbm93blBvb2xUeXBlAAERZ2V0UG9vbFRvdGFsU2hhcmUBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQprUG9vbFRvdGFsAAABGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgAAARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBHVzZXIJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUQa1VzZXJQb3NpdGlvbk51bQAAAAEBCmdldEF4bHlGZWUCBHBvb2wHZmVlVHlwZQMJAAACBQdmZWVUeXBlBQxDQVBfRkVFX0xPQU4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa0F4bHlXaXRoTG9hbkNhcEZlZQMJAAACBQdmZWVUeXBlBQ9DQVBfRkVFX05PX0xPQU4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa0F4bHlOb0xvYW5DYXBGZWUDCQAAAgUHZmVlVHlwZQUITE9BTl9GRUUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUSa0F4bHlJbkZlZVdpdGhMb2FuAwkAAAIFB2ZlZVR5cGUFC05PX0xPQU5fRkVFCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgMJAAACBQdmZWVUeXBlBQZOT19GRUUAAAkAAgECDldyb25nIGZlZSB0eXBlARBnZXRTRkZhcm1pbmdBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ5rU0ZGYXJtaW5nQWRkcgIdQ2FuJ3QgZ2V0IHN3b3BmaSBmYXJtaW5nIGFkZHIBEGdldFdYRmFybWluZ0FkZHIBCHBvb2xBZGRyBAlmQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIECmZhY3Ryb3lDZmcJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCWZDb250cmFjdAIRJXNfX2ZhY3RvcnlDb25maWcCGENhbid0IGdldCBXWCBmYWN0b3J5IGNmZwICX18JAQdBZGRyZXNzAQkA2QQBCQCRAwIFCmZhY3Ryb3lDZmcAAQEMYXNzZXRJZFRvU3RyAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDYBAEFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwAgVXQVZFUwkAAgECDE5vdCBBc3NldCBpZAEOYXNzZXRJZEZyb21TdHIBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEQZ2V0QXNzZXREZWNpbWFscwEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwAIBAckbWF0Y2gwCQDsBwEJANkEAQUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhkZWNpbWFscwkAAgECEENhbid0IGZpbmQgYXNzZXQBEWdldEFzc2V0UHJlY2l0aW9uAQdhc3NldElkCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHYXNzZXRJZAAAAAAFBERPV04BDmdldEFzc2V0c1ByaWNlAQhhc3NldElkcwoBCWdldFByaWNlcwIBYQdhc3NldElkBAphc3NldFByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQdhc3NldElkBQ5rUHJpY2VJbk9yYWNsZQD///////////8BCQDNCAIFAWEFCmFzc2V0UHJpY2UKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWdldFByaWNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAQ1nZXRTaGFyZVByaWNlAQdzaGFyZUlkBARwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQdzaGFyZUlkBQprU2hhcmVQb29sAiBDYW4ndCBmaW5kIHBvb2wgYWRkciBieSBzaGFyZSBpZAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMTE4ODMxMTk0OAkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBANhSWQIBQ0kdDAxMTg4MzExOTQ4Al8xBANiSWQIBQ0kdDAxMTg4MzExOTQ4Al8yBAhhQmFsYW5jZQgFDSR0MDExODgzMTE5NDgCXzMECGJCYWxhbmNlCAUNJHQwMTE4ODMxMTk0OAJfNAQGcHJpY2VzCQEOZ2V0QXNzZXRzUHJpY2UBCQDMCAIFA2FJZAkAzAgCBQNiSWQFA25pbAQHZFByaWNlQQkAkQMCBQZwcmljZXMAAAQHZFByaWNlQgkAkQMCBQZwcmljZXMAAQMDCQBmAgAABQdkUHJpY2VBBgkAZgIAAAUHZFByaWNlQgD///////////8BBAtzaGFyZVN1cHBseQkBDmdldFNoYXJlU3VwcGx5AwUIcG9vbEFkZHIFBXBUeXBlBQdzaGFyZUlkBApBUHJlY2lzaW9uCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYUlkAAAAAAUERE9XTgQKQlByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2JJZAAAAAAFBERPV04EDnNoYXJlUHJlY2lzaW9uCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHc2hhcmVJZAAAAAAFBERPV04EA3N1bQkAZAIJAGsDBQhhQmFsYW5jZQUHZFByaWNlQQUKQVByZWNpc2lvbgkAawMFCGJCYWxhbmNlBQdkUHJpY2VCBQpCUHJlY2lzaW9uCQBrAwUDc3VtBQ5zaGFyZVByZWNpc2lvbgULc2hhcmVTdXBwbHkBDmdldFNoYXJlUHJpY2VzAQhzaGFyZUlkcwoBCWdldFByaWNlcwIBYQdzaGFyZUlkCQDNCAIFAWEJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAoAAiRsBQhzaGFyZUlkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZ2V0UHJpY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQBDmdldEN1cnNFbnRyaWVzBANhSWQDYklkB3NoYXJlSWQId0Ftb3VudHMEDGFzc2V0c1ByaWNlcwkBDmdldEFzc2V0c1ByaWNlAQkAzAgCBQNhSWQJAMwIAgUDYklkBQNuaWwECnNoYXJlUHJpY2UJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAQGcHJpY2VzCQDOCAIJAMwIAgkApAMBCQCRAwIFDGFzc2V0c1ByaWNlcwAACQDMCAIJAKQDAQkAkQMCBQxhc3NldHNQcmljZXMAAQkAzAgCCQCkAwEFCnNoYXJlUHJpY2UFA25pbAUId0Ftb3VudHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa1Rva2VuTGFzdFByaWNlCQC5CQIFBnByaWNlcwIBLAUDbmlsARhjYWxjUmVwbGVuaXNoQnlUd29Ub2tlbnMIBXBUeXBlCHBvb2xBZGRyBHBtdEEDYUlkBHBtdEIDYklkBGJhbEEEYmFsQgMJAAACBQVwVHlwZQUHU0ZfUE9PTAQEcmVwbAoAAUAJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAiBjYWxjTFBSZXBsZW5pc2hUd29Ub2tlbnNSRUFET05MWQkAzAgCCQDMCAIJAKQDAQUEcG10QQkAzAgCCQCkAwEFBHBtdEIFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFBHJlcGwFBHJlcGwJAJcKBQoAAUAJAJEDAgUEcmVwbAADAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUEcmVwbAAEAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUEcmVwbAABAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkBDGFzc2V0SWRUb1N0cgEJAJEDAgUEcmVwbAACCgABQAkAkQMCBQRyZXBsAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBA0kdDAxMzQ5MjEzNzQyCQCUCgIJALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZCQDMCAIFBHBtdEEFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18JALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkJAMwIAgUEcG10QgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQ0kdDAxMzQ5MjEzNzQyBQ0kdDAxMzQ5MjEzNzQyBApldmFsUHV0SW5CCAUNJHQwMTM0OTIxMzc0MgJfMgQKZXZhbFB1dEluQQgFDSR0MDEzNDkyMTM3NDICXzEEBWxwSW5BCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQABBAVscEluQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkIAAQMJAGYCBQVscEluQgUFbHBJbkEEA3BtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkEACAkAlwoFBQRwbXRBBQNwbXQJAGUCBQRwbXRCBQNwbXQFA2JJZAUFbHBJbkIEA3BtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkIABwkAlwoFBQNwbXQFBHBtdEIJAGUCBQRwbXRBBQNwbXQFA2FJZAUFbHBJbkEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQ91bmtub3duUG9vbFR5cGUAARhyZXBsZW5pc2hUd29Ub2tlbnNCeVR5cGUGCHBvb2xBZGRyBXBUeXBlBHBtdEEDYUlkBHBtdEIDYklkBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUDYUlkBQRwbXRBCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQNiSWQFBHBtdEIFA25pbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMJAMwIAgkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwFA25pbAUIcGF5bWVudHMDCQAAAgUFcFR5cGUFB1dYX1BPT0wJAPwHBAUIcG9vbEFkZHICA3B1dAkAzAgCAMCEPQkAzAgCBwUDbmlsBQhwYXltZW50cwkBD3Vua25vd25Qb29sVHlwZQABF3JlcGxlbmlzaE9uZVRva2VuQnlUeXBlBAhwb29sQWRkcgVwVHlwZQNwbXQFcG10SWQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQVwbXRJZAUDcG10BQNuaWwDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhVyZXBsZW5pc2hXaXRoT25lVG9rZW4JAMwIAgkAzAgCAgEwCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAUDbmlsBQhwYXltZW50cwMJAAACBQVwVHlwZQUHV1hfUE9PTAQCZmMDCQAAAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIJAKUIAQUIcG9vbEFkZHIFCWtQb29sVHlwZQIEY3BtbQUERkxBVAILcHV0T25lVGtuVjICCXB1dE9uZVRrbgkA/AcEBQhwb29sQWRkcgUCZmMJAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzCQEPdW5rbm93blBvb2xUeXBlAAEHc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUHc2hhcmVJZAUGYW1vdW50BQNuaWwDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAg9sb2NrU2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCAAAFA25pbAUIcGF5bWVudHMDCQAAAgUFcFR5cGUFB1dYX1BPT0wJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgVzdGFrZQUDbmlsBQhwYXltZW50cwkBD3Vua25vd25Qb29sVHlwZQABCXVuc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQNJHQwMTU1MjAxNTg3MAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAlQoDCQEQZ2V0U0ZGYXJtaW5nQWRkcgACE3dpdGhkcmF3U2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAkAlQoDCQEQZ2V0V1hGYXJtaW5nQWRkcgEJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd1bnN0YWtlCQDMCAIFB3NoYXJlSWQJAMwIAgUGYW1vdW50BQNuaWwJAQ91bmtub3duUG9vbFR5cGUABAhmYXJtQWRkcggFDSR0MDE1NTIwMTU4NzACXzEEBWZOYW1lCAUNJHQwMTU1MjAxNTg3MAJfMgQGcGFyYW1zCAUNJHQwMTU1MjAxNTg3MAJfMwQDaW52CQD8BwQFCGZhcm1BZGRyBQVmTmFtZQUGcGFyYW1zBQNuaWwDCQAAAgUDaW52BQNpbnYFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERY2FsY0Ftb3VudFRvUGF5U0YHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wECWZlZVNjYWxlNgDAhD0EA2ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUIcG9vbEFkZHIFCmtTRlBvb2xGZWUEDGFtbnRHZXROb0ZlZQkAbgQFEGFtb3VudFRva2VuVG9HZXQFCWZlZVNjYWxlNgkAZQIFCWZlZVNjYWxlNgUDZmVlBQdDRUlMSU5HBA0kdDAxNjI5MjE2NTk4AwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBuBAUMYW1udEdldE5vRmVlBQRiYWxCCQBlAgUEYmFsQQUMYW1udEdldE5vRmVlBQdDRUlMSU5HCQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAG4EBQxhbW50R2V0Tm9GZWUFBGJhbEEJAGUCBQRiYWxCBQxhbW50R2V0Tm9GZWUFB0NFSUxJTkcJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE2MjkyMTY1OTgCXzEECmFzc2V0VG9QYXkIBQ0kdDAxNjI5MjE2NTk4Al8yCQCUCgIFCmFzc2V0VG9QYXkFC2Ftb3VudFRvUGF5AQ1nZXRXWFN3YXBGZWVzAQRwb29sBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQJZkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIEDnBvb2xGZWVEZWZhdWx0CQEFdmFsdWUBCQCaCAIFDnd4U3dhcENvbnRyYWN0Agslc19fcG9vbEZlZQQScHJvdG9jb2xGZWVEZWZhdWx0CQEFdmFsdWUBCQCaCAIFDnd4U3dhcENvbnRyYWN0Ag8lc19fcHJvdG9jb2xGZWUEByRtYXRjaDAJAPwHBAUJZkNvbnRyYWN0AhJnZXRTd2FwRmVlUkVBRE9OTFkJAMwIAgkApQgBBQhwb29sQWRkcgUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQEZmVlcwUHJG1hdGNoMAkAlAoCCAUEZmVlcwJfMQgFBGZlZXMCXzIJAJQKAgUOcG9vbEZlZURlZmF1bHQFEnByb3RvY29sRmVlRGVmYXVsdAERY2FsY0Ftb3VudFRvUGF5V1gHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BA0kdDAxNzMzODE3Mzc3CQENZ2V0V1hTd2FwRmVlcwEFBHBvb2wEBHBGZWUIBQ0kdDAxNzMzODE3Mzc3Al8xBAVwckZlZQgFDSR0MDE3MzM4MTczNzcCXzIECGZlZVNjYWxlCQC2AgEAgMLXLwQNJHQwMTc0MTcxNzcyNQMJAAACBQ9hc3NldFRva2VuVG9HZXQFCGFzc2V0SWRBBAthbW91bnRUb1BheQkAawMFEGFtb3VudFRva2VuVG9HZXQFBGJhbEIJAGUCBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAGsDBRBhbW91bnRUb2tlblRvR2V0BQRiYWxBCQBlAgUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTc0MTcxNzcyNQJfMQQKYXNzZXRUb1BheQgFDSR0MDE3NDE3MTc3MjUCXzIEEmFtb3VudFRvUGF5V2l0aEZlZQkAoAMBCQC9AgQJALYCAQULYW1vdW50VG9QYXkFCGZlZVNjYWxlCQC4AgIFCGZlZVNjYWxlCQC2AgEJAGQCBQVwckZlZQUEcEZlZQUHQ0VJTElORwkAlAoCBQphc3NldFRvUGF5BRJhbW91bnRUb1BheVdpdGhGZWUBEGV4Y2hhbmdlRGlyZWN0bHkIBXBUeXBlBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAZwb29sRkIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICBQRwb29sBRdrRmFsbGJhY2tFeGNoYW5nZVN3b3BmaQIAAwMJAAACBQVwVHlwZQUHU0ZfUE9PTAYJAQIhPQIFBnBvb2xGQgIABA0kdDAxODE2NjE4Mzc4AwkAAAIFBnBvb2xGQgIACQCVCgMFBGJhbEEFBGJhbEIFBHBvb2wEDSR0MDE4MjcyMTgzNDUJARFnZXRTRlBvb2xCYWxhbmNlcwEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBnBvb2xGQgQGc2ZCYWxBCAUNJHQwMTgyNzIxODM0NQJfMQQGc2ZCYWxCCAUNJHQwMTgyNzIxODM0NQJfMgkAlQoDBQZzZkJhbEEFBnNmQmFsQgUGcG9vbEZCBAVwQmFsQQgFDSR0MDE4MTY2MTgzNzgCXzEEBXBCYWxCCAUNJHQwMTgxNjYxODM3OAJfMgQGZXhQb29sCAUNJHQwMTgxNjYxODM3OAJfMwQNJHQwMTgzODMxODUwOQkBEWNhbGNBbW91bnRUb1BheVNGBwUGZXhQb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBXBCYWxBBQVwQmFsQgUQYW1vdW50VG9rZW5Ub0dldAUPYXNzZXRUb2tlblRvR2V0BAphc3NldFRvUGF5CAUNJHQwMTgzODMxODUwOQJfMQQLYW1vdW50VG9QYXkIBQ0kdDAxODM4MzE4NTA5Al8yCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBmV4UG9vbAIMY2FsbEZ1bmN0aW9uCQDMCAICCGV4Y2hhbmdlCQDMCAIJAMwIAgkApAMBBRBhbW91bnRUb2tlblRvR2V0BQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAQNJHQwMTg3MTExODgzMwkBEWNhbGNBbW91bnRUb1BheVdYBwUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQECmFzc2V0VG9QYXkIBQ0kdDAxODcxMTE4ODMzAl8xBAthbW91bnRUb1BheQgFDSR0MDE4NzExMTg4MzMCXzIJAPwHBAUOd3hTd2FwQ29udHJhY3QCBHN3YXAJAMwIAgUQYW1vdW50VG9rZW5Ub0dldAkAzAgCBQ9hc3NldFRva2VuVG9HZXQJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFCmFzc2V0VG9QYXkFC2Ftb3VudFRvUGF5BQNuaWwJAQ91bmtub3duUG9vbFR5cGUAARpjYWxjV2l0aGRyYXdMUEZyb21Qb29sVmlydAQIcG9vbEFkZHIFcFR5cGUHc2hhcmVJZA91c2VyQ2FuV2l0aGRyYXcEDSR0MDE5MTIwMjAzMzQDCQAAAgUFcFR5cGUFB1NGX1BPT0wEA2ludgoAAUAJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhB3aXRoZHJhd1JFQURPTkxZCQDMCAIJAMwIAgkApAMBBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2ludgUDaW52CQCUCgIKAAFACQCRAwIFA2ludgAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUDaW52AAEDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MAwkAAAIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICCQClCAEFCHBvb2xBZGRyBQlrUG9vbFR5cGUCBGNwbW0FBEZMQVQEA2ludgkA/AcEBQhwb29sQWRkcgIjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAMwIAgUHc2hhcmVJZAkAzAgCBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BA0kdDAxOTU5MjIwMDg5BAckbWF0Y2gwBQNpbnYDAwMJAAECCAUHJG1hdGNoMAJfMQIDSW50AwkAAQIIBQckbWF0Y2gwAl8yAgNJbnQDCQABAggFByRtYXRjaDACXzUCA0ludAMJAAECCAUHJG1hdGNoMAJfNgIDSW50AwkAAQIIBQckbWF0Y2gwAl83AgNJbnQDCQABAggFByRtYXRjaDACXzgCBlN0cmluZwkAAQIIBQckbWF0Y2gwAl85AgZTdHJpbmcHBwcHBwcJAAACCQDGCgEFByRtYXRjaDAACgcECG91dEFtQW10CAUHJG1hdGNoMAJfMQQIb3V0UHJBbXQIBQckbWF0Y2gwAl8yBAlhbUJhbGFuY2UIBQckbWF0Y2gwAl81BAlwckJhbGFuY2UIBQckbWF0Y2gwAl82BApscEVtaXNzaW9uCAUHJG1hdGNoMAJfNwQIY3VyUHJpY2UIBQckbWF0Y2gwAl84BApwb29sU3RhdHVzCAUHJG1hdGNoMAJfOQkAmQoHBQhvdXRBbUFtdAUIb3V0UHJBbXQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQpscEVtaXNzaW9uBQhjdXJQcmljZQUKcG9vbFN0YXR1cwkAAgECE0NvdWxkbid0IGNhc3QgdHlwZXMECG91dEFtQW10CAUNJHQwMTk1OTIyMDA4OQJfMQQIb3V0UHJBbXQIBQ0kdDAxOTU5MjIwMDg5Al8yBAlhbUJhbGFuY2UIBQ0kdDAxOTU5MjIwMDg5Al8zBAlwckJhbGFuY2UIBQ0kdDAxOTU5MjIwMDg5Al80BApscEVtaXNzaW9uCAUNJHQwMTk1OTIyMDA4OQJfNQQIY3VyUHJpY2UIBQ0kdDAxOTU5MjIwMDg5Al82BApwb29sU3RhdHVzCAUNJHQwMTk1OTIyMDA4OQJfNwkAlAoCBQhvdXRBbUFtdAUIb3V0UHJBbXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EA2ludgkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgITZXZhbHVhdGVHZXRSRUFET05MWQkAzAgCBQdzaGFyZUlkCQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQNpbnYFA2ludgkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaW52AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNpbnYAAgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQAEB2Ftb3VudEEIBQ0kdDAxOTEyMDIwMzM0Al8xBAdhbW91bnRCCAUNJHQwMTkxMjAyMDMzNAJfMgkAlAoCBQdhbW91bnRBBQdhbW91bnRCAQtjbGFpbUZhcm1lZAIFcFR5cGUEcG9vbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQZTV09QSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEDSR0MDIwNzAyMjA3ODEJAQ1nZXRXWFBvb2xEYXRhAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQDYUlkCAUNJHQwMjA3MDIyMDc4MQJfMQQDYklkCAUNJHQwMjA3MDIyMDc4MQJfMgQEYUJhbAgFDSR0MDIwNzAyMjA3ODECXzMEBGJCYWwIBQ0kdDAyMDcwMjIwNzgxAl80BARscElkCAUNJHQwMjA3MDIyMDc4MQJfNQQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQRXWElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgdjbGFpbVd4CQDMCAIFBGxwSWQFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUEV1hJRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQABD3JlcGxlbmlzaEJ5VHlwZQoFcFR5cGUEcG9vbAdmZWVUeXBlBHBtdEEDYUlkBHBtdEIDYklkBGJhbEEEYmFsQgRMUElkBA9scEJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUETFBJZAMJAAACBQ9scEJhbGFuY2VCZWZvcmUFD2xwQmFsYW5jZUJlZm9yZQQIcG9vbEFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEDSR0MDIxMzc5MjE3OTUDAwkAZgIFBHBtdEEAAAkAZgIFBHBtdEIAAAcEDSR0MDIxNDQ1MjE1NjEJARhjYWxjUmVwbGVuaXNoQnlUd29Ub2tlbnMIBQVwVHlwZQUIcG9vbEFkZHIFBHBtdEEFA2FJZAUEcG10QgUDYklkBQRiYWxBBQRiYWxCBAZwbXRJbkEIBQ0kdDAyMTQ0NTIxNTYxAl8xBAZwbXRJbkIIBQ0kdDAyMTQ0NTIxNTYxAl8yBAZjaGFuZ2UIBQ0kdDAyMTQ0NTIxNTYxAl8zBAhjaGFuZ2VJZAgFDSR0MDIxNDQ1MjE1NjECXzQEA2ludgkBGHJlcGxlbmlzaFR3b1Rva2Vuc0J5VHlwZQYFCHBvb2xBZGRyBQVwVHlwZQUGcG10SW5BBQNhSWQFBnBtdEluQgUDYklkAwkAAAIFA2ludgUDaW52CQCUCgIFBmNoYW5nZQUIY2hhbmdlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQBmAgUEcG10QQAACQCUCgIFBHBtdEEFA2FJZAMJAGYCBQRwbXRCAAAJAJQKAgUEcG10QgUDYklkCQACAQIQcG10cyBtdXN0IGJlID4gMAQGY2hhbmdlCAUNJHQwMjEzNzkyMTc5NQJfMQQIY2hhbmdlSWQIBQ0kdDAyMTM3OTIxNzk1Al8yBANpbnYDCQBmAgUGY2hhbmdlAAAJARdyZXBsZW5pc2hPbmVUb2tlbkJ5VHlwZQQFCHBvb2xBZGRyBQVwVHlwZQUGY2hhbmdlBQhjaGFuZ2VJZAUDbmlsAwkAAAIFA2ludgUDaW52BA5scEJhbGFuY2VBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQRMUElkBAt0b3RhbFN0YWtlZAkAZQIFDmxwQmFsYW5jZUFmdGVyBQ9scEJhbGFuY2VCZWZvcmUEDWF4bHlGZWVBbW91bnQJAGsDBQt0b3RhbFN0YWtlZAkBCmdldEF4bHlGZWUCBQRwb29sBQdmZWVUeXBlBQpGRUVfU0NBTEU2BBF1c2VyU2hhcmVGb3JTdGFrZQkAZQIFC3RvdGFsU3Rha2VkBQ1heGx5RmVlQW1vdW50AwkAZwIAAAURdXNlclNoYXJlRm9yU3Rha2UJAAIBAihhbW91bnQgb2Ygc3Rha2VkIHNoYXJldG9rZW5zIG11c3QgYmUgPiAwBAVpbnZMUAkBB3N0YWtlTFAEBQRwb29sBQVwVHlwZQUETFBJZAURdXNlclNoYXJlRm9yU3Rha2UDCQAAAgUFaW52TFAFBWludkxQCQCUCgIFEXVzZXJTaGFyZUZvclN0YWtlBQ1heGx5RmVlQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARByZXBsZW5pc2hFbnRyaWVzCARwb29sBHVzZXIMc3Rha2VkQW1vdW50DWF4bHlGZWVBbW91bnQGcG9zTnVtB3NoYXJlSWQEdHlwZQh3aXRoTG9hbgQLdG90YWxBbW91bnQJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wED3RvdGFsQW1vdW50TG9hbgkBGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBQRwb29sBA0kdDAyMjY1MjIyODkwAwUId2l0aExvYW4JAJQKAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgkAZAIFD3RvdGFsQW1vdW50TG9hbgUMc3Rha2VkQW1vdW50CQCUCgIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgUPdG90YWxBbW91bnRMb2FuBA9jdXJQb29sSW50ZXJlc3QIBQ0kdDAyMjY1MjIyODkwAl8xBBN0b3RhbFN0YWtlZFdpdGhMb2FuCAUNJHQwMjI2NTIyMjg5MAJfMgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgULdG90YWxBbW91bnQFDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgUTdG90YWxTdGFrZWRXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBQ1rVXNlclBvc2l0aW9uBQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUVa1VzZXJQb3NpdGlvbkludGVyZXN0BQ9jdXJQb29sSW50ZXJlc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEWtVc2VyUG9zaXRpb25Qb29sBQRwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0FBnBvc051bQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAUNYXhseUZlZUFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwBCWxpc3RUb0ludAIBYQRpdGVtCQDNCAIFAWEJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQEQZGlyZWN0U3dvcGZpQ1BNTQIFckFyZ3MHdG9rZW5UbwQEZEFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQVyQXJncwABBARwbXRQCQC1CQIJAJEDAgUFckFyZ3MAAgIBfAQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b2tlblRvAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANwbXQJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEJAJEDAgUEcG10UAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEcG10UAABBQNuaWwEC21pblRvUmVjaXZlCQCRAwIFBXJBcmdzAAMEA2ludgkA/AcEBQRkQXBwAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCBQttaW5Ub1JlY2l2ZQUDbmlsBQNuaWwFA3BtdAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3Rva2VuVG8FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgETZGlyZWN0Um91dGluZ1N3b3BmaQIFckFyZ3MHdG9rZW5UbwQEZEFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQVyQXJncwABBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3Rva2VuVG8DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA3BtdAQEcG10UAkAtQkCCQCRAwIFBXJBcmdzAAICAXwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQkAkQMCBQRwbXRQAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRwbXRQAAEFA25pbAQEYXJncwQFZUFyZ3MJALUJAgkAkQMCBQVyQXJncwADAgF8BApleGNoYW5nZXJzCQC1CQIJAJEDAgUFZUFyZ3MAAAIBLAQOZXhjaGFuZ2Vyc1R5cGUJALUJAgkAkQMCBQVlQXJncwABAgEsBAVhcmdzMQoAAiRsCQC1CQIJAJEDAgUFZUFyZ3MAAgIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJbGlzdFRvSW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADBAVhcmdzMgoAAiRsCQC1CQIJAJEDAgUFZUFyZ3MAAwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJbGlzdFRvSW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADBBFyb3V0aW5nQXNzZXRzS2V5cwkAtQkCCQCRAwIFBWVBcmdzAAQCASwEC21pblRvUmVjaXZlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFZUFyZ3MABQkAzAgCBQpleGNoYW5nZXJzCQDMCAIFDmV4Y2hhbmdlcnNUeXBlCQDMCAIFBWFyZ3MxCQDMCAIFBWFyZ3MyCQDMCAIFEXJvdXRpbmdBc3NldHNLZXlzCQDMCAIFC21pblRvUmVjaXZlBQNuaWwEA2ludgkA/AcEBQRkQXBwAgxyb3V0aW5nVHJhZGUFBGFyZ3MFA3BtdAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3Rva2VuVG8FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEKY2FwaXRhbGl6ZQQEcG9vbAVwVHlwZQd0b2tlbklkC3Rva2VuQW1vdW50BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEDSR0MDI0OTk3MjUwNjMJAQtnZXRQb29sRGF0YQIFCHBvb2xBZGRyBQVwVHlwZQQDQUlkCAUNJHQwMjQ5OTcyNTA2MwJfMQQDQklkCAUNJHQwMjQ5OTcyNTA2MwJfMgQEYmFsQQgFDSR0MDI0OTk3MjUwNjMCXzMEBGJhbEIIBQ0kdDAyNDk5NzI1MDYzAl80BAdzaGFyZUlkCAUNJHQwMjQ5OTcyNTA2MwJfNQMDCQECIT0CBQd0b2tlbklkBQNBSWQJAQIhPQIFB3Rva2VuSWQFA0JJZAcJAAIBAgtXcm9uZyBhc3NldAQQdG90YWxTaGFyZUFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAMJAAACBRB0b3RhbFNoYXJlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFC3Rva2VuQW1vdW50CQDZBAEFB3Rva2VuSWQFA25pbAQYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEC2xvYW5QZXJjZW50CQBrAwUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQZTQ0FMRTgFEHRvdGFsU2hhcmVBbW91bnQEEHRva2Vuc0ZvckZlZUxvYW4JAGsDBQt0b2tlbkFtb3VudAULbG9hblBlcmNlbnQFBlNDQUxFOAQSdG9rZW5zRm9yRmVlTm9Mb2FuCQBlAgULdG9rZW5BbW91bnQFEHRva2Vuc0ZvckZlZUxvYW4EC2F4bHlGZWVMb2FuCQBrAwUQdG9rZW5zRm9yRmVlTG9hbgkBCmdldEF4bHlGZWUCBQRwb29sBQxDQVBfRkVFX0xPQU4FCkZFRV9TQ0FMRTYEDWF4bHlGZWVOb0xvYW4JAGsDBRJ0b2tlbnNGb3JGZWVOb0xvYW4JAQpnZXRBeGx5RmVlAgUEcG9vbAUPQ0FQX0ZFRV9OT19MT0FOBQpGRUVfU0NBTEU2BAdheGx5RmVlCQBkAgULYXhseUZlZUxvYW4FDWF4bHlGZWVOb0xvYW4EDSR0MDI1ODA4MjU5MDgDCQAAAgUHdG9rZW5JZAUDQUlkCQCUCgIJAGUCBQt0b2tlbkFtb3VudAUHYXhseUZlZQAACQCUCgIAAAkAZQIFC3Rva2VuQW1vdW50BQdheGx5RmVlBARwbXRBCAUNJHQwMjU4MDgyNTkwOAJfMQQEcG10QggFDSR0MDI1ODA4MjU5MDgCXzIEDSR0MDI1OTExMjYwMTUJAQ9yZXBsZW5pc2hCeVR5cGUKBQVwVHlwZQUEcG9vbAUGTk9fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQMc3Rha2VkQW1vdW50CAUNJHQwMjU5MTEyNjAxNQJfMQQCbmYIBQ0kdDAyNTkxMTI2MDE1Al8yBBNjdXJQb29sSW50ZXJlc3RMb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4AAAQVY3VyUG9vbEludGVyZXN0Tm9Mb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAABApzdGFrZWRMb2FuCQBrAwUMc3Rha2VkQW1vdW50BQtsb2FuUGVyY2VudAUGU0NBTEU4BAxzdGFrZWROb0xvYW4JAGUCBQxzdGFrZWRBbW91bnQFCnN0YWtlZExvYW4ED25ld0ludGVyZXN0TG9hbgMJAGYCBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAkAZAIFE2N1clBvb2xJbnRlcmVzdExvYW4JAGsDBQpzdGFrZWRMb2FuBQdTQ0FMRTEwBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAQRbmV3SW50ZXJlc3ROb0xvYW4DCQBmAgkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAACQBkAgUVY3VyUG9vbEludGVyZXN0Tm9Mb2FuCQBrAwUMc3Rha2VkTm9Mb2FuBQdTQ0FMRTEwCQBlAgUQdG90YWxTaGFyZUFtb3VudAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgUPbmV3SW50ZXJlc3RMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4FEW5ld0ludGVyZXN0Tm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGQCBRB0b3RhbFNoYXJlQW1vdW50BQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4JAGQCBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4FCnN0YWtlZExvYW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFB2F4bHlGZWUJAQ5hc3NldElkRnJvbVN0cgEFB3Rva2VuSWQFA25pbAkBDmdldEN1cnNFbnRyaWVzBAUDQUlkBQNCSWQFB3NoYXJlSWQFA25pbAEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAR1c2VyBHBvb2wFcG9zSWQIYm9ycm93ZWQEB3BBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24CEFVua25vd24gcG9zaXRpb24EDHVzZXJJbnRlcmVzdAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QEDHBvb2xJbnRlcmVzdAMFCGJvcnJvd2VkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4JAGQCBQdwQW1vdW50CQBrAwUHcEFtb3VudAkAZQIFDHBvb2xJbnRlcmVzdAUMdXNlckludGVyZXN0BQdTQ0FMRTEwAQ9jYWxjU3RvcExvc3NGZWUEBHBvb2wKaXNCb3Jyb3dlZAhzdG9wTG9zcwpscFdpdGhkcmF3BAdmZWVUeXBlAwUKaXNCb3Jyb3dlZAUNU1RPUExPU1NfTE9BTgUUU1RPUExPU1NfRkVFX05PX0xPQU4DBQhzdG9wTG9zcwkAawMFCmxwV2l0aGRyYXcJAQpnZXRBeGx5RmVlAgUEcG9vbAUHZmVlVHlwZQUKRkVFX1NDQUxFNgAAAQ53aXRoZHJhd1RvVXNlcgQEdXNlcgRwb29sBXBvc0lkCHN0b3BMb3NzBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAppc0JvcnJvd2VkCQBmAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEWtVc2VyQm9ycm93QW1vdW50AAAAAAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAUFcG9zSWQFCmlzQm9ycm93ZWQEDnBvb2xUb3RhbFNoYXJlCQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBBJwb29sVG90YWxTaGFyZUxvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQIdXNlckFkZHIJAQdBZGRyZXNzAQkA2QQBBQR1c2VyBAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDAyODU0NDI4NjE2CQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEBmlkQVN0cggFDSR0MDI4NTQ0Mjg2MTYCXzEEBmlkQlN0cggFDSR0MDI4NTQ0Mjg2MTYCXzIEBGJhbEEIBQ0kdDAyODU0NDI4NjE2Al8zBARiYWxCCAUNJHQwMjg1NDQyODYxNgJfNAQHc2hhcmVJZAgFDSR0MDI4NTQ0Mjg2MTYCXzUEDSR0MDI4NjE5Mjg2ODYJAJQKAgkBDmFzc2V0SWRGcm9tU3RyAQUGaWRBU3RyCQEOYXNzZXRJZEZyb21TdHIBBQZpZEJTdHIEA2lkQQgFDSR0MDI4NjE5Mjg2ODYCXzEEA2lkQggFDSR0MDI4NjE5Mjg2ODYCXzIEC3N0b3BMb3NzRmVlCQEPY2FsY1N0b3BMb3NzRmVlBAUEcG9vbAUKaXNCb3Jyb3dlZAUIc3RvcExvc3MFD3VzZXJDYW5XaXRoZHJhdwQLY0JhbEFCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQQMJAAACBQtjQmFsQUJlZm9yZQULY0JhbEFCZWZvcmUEC2NCYWxCQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQNpZEIDCQAAAgULY0JhbEJCZWZvcmUFC2NCYWxCQmVmb3JlBANpbnYDCQAAAgUFcFR5cGUFB1NGX1BPT0wEA2ludgkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQtzdG9wTG9zc0ZlZQMJAAACBQNpbnYFA2ludgkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICCHdpdGhkcmF3CQDMCAIJAMwIAgkApAMBBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEA2ludgkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkCQBkAgUPdXNlckNhbldpdGhkcmF3BQtzdG9wTG9zc0ZlZQMJAAACBQNpbnYFA2ludgkA/AcEBQhwb29sQWRkcgIDZ2V0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEPdW5rbm93blBvb2xUeXBlAAMJAAACBQNpbnYFA2ludgQKY0JhbEFBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUDaWRBAwkAAAIFCmNCYWxBQWZ0ZXIFCmNCYWxBQWZ0ZXIECmNCYWxCQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQgMJAAACBQpjQmFsQkFmdGVyBQpjQmFsQkFmdGVyBA0kdDAyOTM4MTI5NDcwCQCUCgIJAGUCBQpjQmFsQUFmdGVyBQtjQmFsQUJlZm9yZQkAZQIFCmNCYWxCQWZ0ZXIFC2NCYWxCQmVmb3JlBA10b2tlbnNBbW91bnRBCAUNJHQwMjkzODEyOTQ3MAJfMQQNdG9rZW5zQW1vdW50QggFDSR0MDI5MzgxMjk0NzACXzIEDSR0MDI5NDczMzA3MDkDBQppc0JvcnJvd2VkBAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQEBGRlYnQKAAFACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACDGdldEFzc2V0RGVidAkAzAgCBwkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQJAMwIAgULYm9ycm93QXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQRkZWJ0BQRkZWJ0BA1hbW91bnRUb0dldEV4AwMJAAACBQtib3Jyb3dBc3NldAUGaWRBU3RyCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QQcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRBAwMJAAACBQtib3Jyb3dBc3NldAUGaWRCU3RyCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QgcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRCAAAEBWV4SW52AwkAZgIFDWFtb3VudFRvR2V0RXgAAAkBEGV4Y2hhbmdlRGlyZWN0bHkIBQVwVHlwZQUEcG9vbAUGaWRBU3RyBQZpZEJTdHIJAGUCBQRiYWxBBQ10b2tlbnNBbW91bnRBCQBlAgUEYmFsQgUNdG9rZW5zQW1vdW50QgUNYW1vdW50VG9HZXRFeAULYm9ycm93QXNzZXQFA25pbAMJAAACBQVleEludgUFZXhJbnYED2NCYWxBQWZ0ZXJSZXBheQkBDmFjY291bnRCYWxhbmNlAQUDaWRBAwkAAAIFD2NCYWxBQWZ0ZXJSZXBheQUPY0JhbEFBZnRlclJlcGF5BA9jQmFsQkFmdGVyUmVwYXkJAQ5hY2NvdW50QmFsYW5jZQEFA2lkQgMJAAACBQ9jQmFsQkFmdGVyUmVwYXkFD2NCYWxCQWZ0ZXJSZXBheQQLY2xvc2VEYnRJbnYDCQBmAgUEZGVidAAACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACCHJlcGF5Rm9yCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQtib3Jyb3dBc3NldAUEZGVidAUDbmlsAAADCQAAAgULY2xvc2VEYnRJbnYFC2Nsb3NlRGJ0SW52AwkAAAIFC2JvcnJvd0Fzc2V0BQZpZEFTdHIJAJQKAgkAZQIJAGUCBQ9jQmFsQUFmdGVyUmVwYXkFC2NCYWxBQmVmb3JlBQRkZWJ0CQBlAgUPY0JhbEJBZnRlclJlcGF5BQtjQmFsQkJlZm9yZQkAlAoCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQkAZQIJAGUCBQ9jQmFsQkFmdGVyUmVwYXkFC2NCYWxCQmVmb3JlBQRkZWJ0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFDXRva2Vuc0Ftb3VudEEFDXRva2Vuc0Ftb3VudEIEB3RvVXNlckEIBQ0kdDAyOTQ3MzMwNzA5Al8xBAd0b1VzZXJCCAUNJHQwMjk0NzMzMDcwOQJfMgQUcG9vbFRvdGFsTG9hbkVudHJpZXMDBQppc0JvcnJvd2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgkAZQIFEnBvb2xUb3RhbFNoYXJlTG9hbgUPdXNlckNhbldpdGhkcmF3BQtzdG9wTG9zc0ZlZQUDbmlsBQNuaWwEB2VudHJpZXMJAM4IAgkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJQb3NpdGlvblBvb2wJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBlAgkAZQIFDnBvb2xUb3RhbFNoYXJlBQ91c2VyQ2FuV2l0aGRyYXcFC3N0b3BMb3NzRmVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQd0b1VzZXJBBQNpZEEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIdXNlckFkZHIFB3RvVXNlckIFA2lkQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAULc3RvcExvc3NGZWUJANkEAQUHc2hhcmVJZAUDbmlsBRRwb29sVG90YWxMb2FuRW50cmllcwkBDmdldEN1cnNFbnRyaWVzBAUGaWRBU3RyBQZpZEJTdHIFB3NoYXJlSWQFA25pbAkAlAoCBQdlbnRyaWVzCQDMCAIFB3RvVXNlckEJAMwIAgUHdG9Vc2VyQgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxwYXJzZVJlcXVlc3QBCXJlcXVlc3RJZAQHcmVxdWVzdAkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQlyZXF1ZXN0SWQFCmtSZXF1ZXN0SWQJAKwCAgITTm8gcmVxdWVzdCB3aXRoIGlkIAUJcmVxdWVzdElkAgEsBAR1c2VyCQCRAwIFB3JlcXVlc3QAAAQEcG9vbAkAkQMCBQdyZXF1ZXN0AAEEBHBtdEEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAIEA0FJZAkAkQMCBQdyZXF1ZXN0AAMEBHBtdEIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAQEA0JJZAkAkQMCBQdyZXF1ZXN0AAUEBGJhbEEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAYEBGJhbEIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAcEB3NoYXJlSWQJAJEDAgUHcmVxdWVzdAAIBAdid0Fzc2V0CQCRAwIFB3JlcXVlc3QACQQIYndBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAoJAJ0KCwUEdXNlcgUEcG9vbAUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQFB2J3QXNzZXQFCGJ3QW1vdW50ARBjYWxjQm9ycm93QW1vdW50BgRwbXRBBHBtdEIDYUlkA2JJZAhsZXZlcmFnZQhib3Jyb3dJZAMDCQECIT0CBQhib3Jyb3dJZAUDYUlkCQECIT0CBQhib3Jyb3dJZAUDYklkBwkAAgECEldyb25nIGJvcnJvdyBhc3NldAQHZFByaWNlQQkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFA2FJZAUOa1ByaWNlSW5PcmFjbGUEB2RQcmljZUIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQNiSWQFDmtQcmljZUluT3JhY2xlBAZkZWNQckEJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNhSWQAAAAABQRET1dOBAZkZWNQckIJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNiSWQAAAAABQRET1dOBAxwYXlkSW5Eb2xsYXIJAGQCCQBrAwUHZFByaWNlQQUEcG10QQUGZGVjUHJBCQBrAwUHZFByaWNlQgUEcG10QgUGZGVjUHJCBA0kdDAzMjY5MTMyNzg4AwkAAAIFCGJvcnJvd0lkBQNhSWQJAJQKAgUHZFByaWNlQQUGZGVjUHJBCQCUCgIFB2RQcmljZUIFBmRlY1ByQgQLYm9ycm93UHJpY2UIBQ0kdDAzMjY5MTMyNzg4Al8xBAtib3Jyb3dEZWNQcggFDSR0MDMyNjkxMzI3ODgCXzIJAGsDCQBrAwUMcGF5ZEluRG9sbGFyCQBlAgUIbGV2ZXJhZ2UAZABkBQtib3Jyb3dEZWNQcgULYm9ycm93UHJpY2UBEnBhcnNlUmVwbGVuaXNoUG10cwMEcG10cwNBSWQDQklkAwkAAAIJAJADAQUEcG10cwACAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIFBHBtdHMAAAdhc3NldElkBQNBSWQJAAIBAhVXcm9uZyBwYXltZW50IGFzc2V0IEEDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAgUEcG10cwABB2Fzc2V0SWQFA0JJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQgkAlAoCCAkAkQMCBQRwbXRzAAAGYW1vdW50CAkAkQMCBQRwbXRzAAEGYW1vdW50AwkAAAIJAJADAQUEcG10cwABAwkAAAIJAQxhc3NldElkVG9TdHIBCAkAkQMCBQRwbXRzAAAHYXNzZXRJZAUDQUlkCQCUCgIICQCRAwIFBHBtdHMAAAZhbW91bnQAAAMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAgUEcG10cwAAB2Fzc2V0SWQFA0JJZAkAlAoCAAAICQCRAwIFBHBtdHMAAAZhbW91bnQJAAIBAg1Xcm9uZyBwYXltZW50CQACAQIcT25lIG9yIHR3byBwYXltZW50cyBleHBlY3RlZAEPY2FsY1ByaWNlSW1wYWN0BARiYWxBBGJhbEIHbmV3QmFsQQduZXdCYWxCBANwcmkJAGgCCQBlAgUGU0NBTEU4CQBrAwkAawMFBGJhbEIFBlNDQUxFOAUEYmFsQQUGU0NBTEU4CQBrAwUHbmV3QmFsQgUGU0NBTEU4BQduZXdCYWxBAGQDCQBmAgAABQNwcmkJAGgCBQNwcmkA////////////AQUDcHJpARFjbGFpbUFuZENoZWNrQW1udAUEcG9vbAVwVHlwZQVjbGFpbQZhbW91bnQGY2hhbmdlBA0kdDAzMzc4ODM0MDUwAwUFY2xhaW0JAQtjbGFpbUZhcm1lZAIFBXBUeXBlBQRwb29sBAxjbGFpbWVkQXNzZXQDCQAAAgUFcFR5cGUFB1NGX1BPT0wFBlNXT1BJRAMJAAACBQVwVHlwZQUHV1hfUE9PTAUEV1hJRAkBD3Vua25vd25Qb29sVHlwZQAJAJQKAgUGYW1vdW50BQxjbGFpbWVkQXNzZXQDCQAAAgUNJHQwMzM3ODgzNDA1MAUNJHQwMzM3ODgzNDA1MAQKY2xhaW1Bc3NldAgFDSR0MDMzNzg4MzQwNTACXzIEC2NsYWltQW1vdW50CAUNJHQwMzM3ODgzNDA1MAJfMQQDYmFsCQEOYWNjb3VudEJhbGFuY2UBBQpjbGFpbUFzc2V0AwkAAAIFA2JhbAUDYmFsAwkAZgIFBmFtb3VudAUDYmFsCQACAQIZVG8gYmlnIGFtb3VudCB0byBleGNoYW5nZQkAlAoCBQtjbGFpbUFtb3VudAUKY2xhaW1Bc3NldAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLhsBaQETZ2V0UG9vbEluZm9SRUFET05MWQEEcG9vbAQIcG9vbEFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAzNDQxNzM0NTA3CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDM0NDE3MzQ1MDcCXzEEA0JJZAgFDSR0MDM0NDE3MzQ1MDcCXzIEBGJhbEEIBQ0kdDAzNDQxNzM0NTA3Al8zBARiYWxCCAUNJHQwMzQ0MTczNDUwNwJfNAQHc2hhcmVJZAgFDSR0MDM0NDE3MzQ1MDcCXzUEC3NoYXJlU3VwcGx5CQEOZ2V0U2hhcmVTdXBwbHkDBQhwb29sQWRkcgUFcFR5cGUFB3NoYXJlSWQJAJQKAgUDbmlsCQCYCgYFA0FJZAUDQklkBQdzaGFyZUlkBQRiYWxBBQRiYWxCBQtzaGFyZVN1cHBseQFpARpnZXRTaGFyZUFzc2V0UHJpY2VSRUFET05MWQEHc2hhcmVJZAQLc2hhcmVQcmljZXMJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAkAlAoCBQNuaWwFC3NoYXJlUHJpY2VzAWkBImdldFVzZXJQb3NpdGlvblNoYXJlQW1vdW50UkVBRE9OTFkCBHVzZXIGcG9zTnVtBARwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUGcG9zTnVtBRFrVXNlclBvc2l0aW9uUG9vbAIQVW5rbm93biBwb3NpdGlvbgQMYm9ycm93QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUGcG9zTnVtBRFrVXNlckJvcnJvd0Ftb3VudAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAUGcG9zTnVtCQBmAgUMYm9ycm93QW1vdW50AAAJAJQKAgUDbmlsBQ91c2VyQ2FuV2l0aGRyYXcBaQEXZ2V0VXNlclBvc2l0aW9uUkVBRE9OTFkDBHVzZXIFcG9vbHMGcG9zTnVtCgEHdXNlclBvcwIBYQRwb29sBA0kdDAzNTM4MDM1NDUwBQFhBAl3QW1vdW50c0EIBQ0kdDAzNTM4MDM1NDUwAl8xBAl3QW1vdW50c0IIBQ0kdDAzNTM4MDM1NDUwAl8yBAVkZWJ0cwgFDSR0MDM1MzgwMzU0NTACXzMEC2VxV0Ftb3VudHNBCAUNJHQwMzUzODAzNTQ1MAJfNAQLZXFXQW1vdW50c0IIBQ0kdDAzNTM4MDM1NDUwAl81BAVpbmRleAgFDSR0MDM1MzgwMzU0NTACXzYDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCRAwIFBnBvc051bQUFaW5kZXgFDWtVc2VyUG9zaXRpb24JAJgKBgkAzQgCBQl3QW1vdW50c0EAAAkAzQgCBQl3QW1vdW50c0IAAAkAzQgCBQVkZWJ0cwAACQDNCAIFC2VxV0Ftb3VudHNBAAAJAM0IAgULZXFXQW1vdW50c0IAAAkAZAIFBWluZGV4AAEEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAzNTcyOTM1ODE5CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDM1NzI5MzU4MTkCXzEEA0JJZAgFDSR0MDM1NzI5MzU4MTkCXzIEBGJhbEEIBQ0kdDAzNTcyOTM1ODE5Al8zBARiYWxCCAUNJHQwMzU3MjkzNTgxOQJfNAQHc2hhcmVJZAgFDSR0MDM1NzI5MzU4MTkCXzUEDGJvcnJvd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4BRFrVXNlckJvcnJvd0Ftb3VudAAABA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sCQCRAwIFBnBvc051bQUFaW5kZXgJAGYCBQxib3Jyb3dBbW91bnQAAAQNJHQwMzYwMzUzNjE1NQkBGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQ91c2VyQ2FuV2l0aGRyYXcECHdBbW91bnRBCAUNJHQwMzYwMzUzNjE1NQJfMQQId0Ftb3VudEIIBQ0kdDAzNjAzNTM2MTU1Al8yAwkAZgIFDGJvcnJvd0Ftb3VudAAABAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAUSa1VzZXJCb3Jyb3dBc3NldElkBARkZWJ0CgABQAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAgxnZXRBc3NldERlYnQJAMwIAgcJAMwIAgkArAICCQCsAgIFBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAkAzAgCBQtib3Jyb3dBc3NldAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFBGRlYnQFBGRlYnQEDWFtb3VudFRvR2V0RXgDAwkAAAIFC2JvcnJvd0Fzc2V0BQNBSWQJAGYCBQRkZWJ0BQh3QW1vdW50QQcJAGUCBQRkZWJ0BQh3QW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFA0JJZAkAZgIFBGRlYnQFCHdBbW91bnRCBwkAZQIFBGRlYnQFCHdBbW91bnRCAAAEC2Ftb3VudFRvUGF5AwkAZgIFDWFtb3VudFRvR2V0RXgAAAMJAAACBQVwVHlwZQUHU0ZfUE9PTAQCZXgJARFjYWxjQW1vdW50VG9QYXlTRgcFBHBvb2wFA0FJZAUDQklkBQRiYWxBBQRiYWxCBQ1hbW91bnRUb0dldEV4BQtib3Jyb3dBc3NldAgFAmV4Al8yAwkAAAIFBXBUeXBlBQdXWF9QT09MBAJleAkBEWNhbGNBbW91bnRUb1BheVdYBwUEcG9vbAUDQUlkBQNCSWQFBGJhbEEFBGJhbEIFDWFtb3VudFRvR2V0RXgFC2JvcnJvd0Fzc2V0CAUCZXgCXzIJAQ91bmtub3duUG9vbFR5cGUAAAAEDSR0MDM3MDY3MzcyODYDCQAAAgULYm9ycm93QXNzZXQFA0FJZAkAlAoCCQBlAgkAZAIFCHdBbW91bnRBBQ1hbW91bnRUb0dldEV4BQRkZWJ0CQBlAgUId0Ftb3VudEIFC2Ftb3VudFRvUGF5CQCUCgIJAGUCBQh3QW1vdW50QQULYW1vdW50VG9QYXkJAGUCCQBkAgUId0Ftb3VudEIFDWFtb3VudFRvR2V0RXgFBGRlYnQECmVxV0Ftb3VudEEIBQ0kdDAzNzA2NzM3Mjg2Al8xBAplcVdBbW91bnRCCAUNJHQwMzcwNjczNzI4NgJfMgkAmAoGCQDNCAIFCXdBbW91bnRzQQUId0Ftb3VudEEJAM0IAgUJd0Ftb3VudHNCBQh3QW1vdW50QgkAzQgCBQVkZWJ0cwUEZGVidAkAzQgCBQtlcVdBbW91bnRzQQUKZXFXQW1vdW50QQkAzQgCBQtlcVdBbW91bnRzQgUKZXFXQW1vdW50QgkAZAIFBWluZGV4AAEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJgKBgkAzQgCBQl3QW1vdW50c0EFCHdBbW91bnRBCQDNCAIFCXdBbW91bnRzQgUId0Ftb3VudEIFBWRlYnRzCQDNCAIFCXdBbW91bnRzQQUId0Ftb3VudEEJAM0IAgUJd0Ftb3VudHNCBQh3QW1vdW50QgkAZAIFBWluZGV4AAEEDSR0MDM3NTQxMzc2NTIKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCYCgYFA25pbAUDbmlsBQNuaWwFA25pbAUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VzZXJQb3MCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQJd0Ftb3VudHNBCAUNJHQwMzc1NDEzNzY1MgJfMQQJd0Ftb3VudHNCCAUNJHQwMzc1NDEzNzY1MgJfMgQFZGVidHMIBQ0kdDAzNzU0MTM3NjUyAl8zBAtlcVdBbW91bnRzQQgFDSR0MDM3NTQxMzc2NTICXzQEC2VxV0Ftb3VudHNCCAUNJHQwMzc1NDEzNzY1MgJfNQkAlAoCBQNuaWwJAJcKBQUJd0Ftb3VudHNBBQl3QW1vdW50c0IFBWRlYnRzBQtlcVdBbW91bnRzQQULZXFXQW1vdW50c0IBaQEJcmVwbGVuaXNoAwRwb29sCGxldmVyYWdlCGJvcnJvd0lkCQELdmFsdWVPckVsc2UCCQEQaXNBY3RpdmVGb3JVc2VycwAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkAwkBASEBCQEMaXNQb29sQWN0aXZlAgUEcG9vbAUFcFR5cGUJAAIBAh5Qb29sIG5vdCBhY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAZgIAZAUIbGV2ZXJhZ2UGCQBmAgUIbGV2ZXJhZ2UArAIJAAIBAh9MZXZlcmFnZSBjYW4ndCBiZSA8MTAwIGFuZCA+MzAwAwMJAQEhAQkBEUBleHRyTmF0aXZlKDEwNTEpAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhbkJvcnJvdwkAZgIFCGxldmVyYWdlAGQHCQACAQIdWW91IGNhbid0IGJvcnJvdyBpbiB0aGlzIHBvb2wEDSR0MDM4MjUwMzgzNDAJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwMzgyNTAzODM0MAJfMQQDQklkCAUNJHQwMzgyNTAzODM0MAJfMgQEYmFsQQgFDSR0MDM4MjUwMzgzNDACXzMEBGJhbEIIBQ0kdDAzODI1MDM4MzQwAl80BAdzaGFyZUlkCAUNJHQwMzgyNTAzODM0MAJfNQMDCQECIT0CBQhib3Jyb3dJZAUDQUlkCQECIT0CBQhib3Jyb3dJZAUDQklkBwkAAgECEldyb25nIGJvcnJvdyBhc3NldAQNJHQwMzg0MjEzODQ4MAkBEnBhcnNlUmVwbGVuaXNoUG10cwMIBQFpCHBheW1lbnRzBQNBSWQFA0JJZAQEcG10QQgFDSR0MDM4NDIxMzg0ODACXzEEBHBtdEIIBQ0kdDAzODQyMTM4NDgwAl8yBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQJbmV3UG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQUEdXNlcgMJAGYCBQhsZXZlcmFnZQBkBAxib3Jyb3dBbW91bnQJARBjYWxjQm9ycm93QW1vdW50BgUEcG10QQUEcG10QgUDQUlkBQNCSWQFCGxldmVyYWdlBQhib3Jyb3dJZAQHcmVxdWVzdAkAuQkCCQDMCAIFBHVzZXIJAMwIAgUEcG9vbAkAzAgCCQCkAwEFBHBtdEEJAMwIAgUDQUlkCQDMCAIJAKQDAQUEcG10QgkAzAgCBQNCSWQJAMwIAgkApAMBBQRiYWxBCQDMCAIJAKQDAQUEYmFsQgkAzAgCBQdzaGFyZUlkCQDMCAIFCGJvcnJvd0lkCQDMCAIJAKQDAQUMYm9ycm93QW1vdW50BQNuaWwCASwEDG5ld1JlcXVlc3RJZAoAAUAJAPwHBAUEdGhpcwIQY3JlYXRlTmV3UmVxdWVzdAkAzAgCBQdyZXF1ZXN0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUMbmV3UmVxdWVzdElkBQxuZXdSZXF1ZXN0SWQEBGFyZ3MJAMwIAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUJbmV3UG9zTnVtCQDMCAIFB3NoYXJlSWQJAMwIAgUIYm9ycm93SWQJAMwIAgUMYm9ycm93QW1vdW50CQDMCAIJAKUIAQUEdGhpcwkAzAgCAhFyZXBsZW5pc2hGcm9tTGFuZAkAzAgCCQCkAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUMbmV3UmVxdWVzdElkAhhDYW4ndCBjcmVhdGUgbmV3IHJlcXVlc3QFA25pbAQDaW52CQD9BwQJAQ5nZXRMZW5kU3J2QWRkcgACDWZsYXNoUG9zaXRpb24FBGFyZ3MFA25pbAMJAAACBQNpbnYFA2ludgQKdXNlclN0YWtlZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUJbmV3UG9zTnVtBQ1rVXNlclBvc2l0aW9uBA0kdDAzOTQ2OTM5NTYzCQEPZ2V0UG9vbEJhbGFuY2VzBAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQNBSWQFA0JJZAMJAAACBQ0kdDAzOTQ2OTM5NTYzBQ0kdDAzOTQ2OTM5NTYzBAduZXdCYWxCCAUNJHQwMzk0NjkzOTU2MwJfMgQHbmV3QmFsQQgFDSR0MDM5NDY5Mzk1NjMCXzEECHBySW1wYWN0CQEPY2FsY1ByaWNlSW1wYWN0BAUEYmFsQQUEYmFsQgUHbmV3QmFsQQUHbmV3QmFsQgQNJHQwMzk2MzMzOTc0OAkBGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQp1c2VyU3Rha2VkBAh3QW1vdW50QQgFDSR0MDM5NjMzMzk3NDgCXzEECHdBbW91bnRCCAUNJHQwMzk2MzMzOTc0OAJfMgkAlAoCBQNuaWwJAMwIAgUIcHJJbXBhY3QJAMwIAgUId0Ftb3VudEEJAMwIAgUId0Ftb3VudEIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNJHQwMzk4MDEzOTkxNgkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQtOT19MT0FOX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQDCQAAAgUNJHQwMzk4MDEzOTkxNgUNJHQwMzk4MDEzOTkxNgQHYXhseUZlZQgFDSR0MDM5ODAxMzk5MTYCXzIECnVzZXJTdGFrZWQIBQ0kdDAzOTgwMTM5OTE2Al8xBA0kdDAzOTkyMjQwMDE2CQEPZ2V0UG9vbEJhbGFuY2VzBAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQNBSWQFA0JJZAMJAAACBQ0kdDAzOTkyMjQwMDE2BQ0kdDAzOTkyMjQwMDE2BAduZXdCYWxCCAUNJHQwMzk5MjI0MDAxNgJfMgQHbmV3QmFsQQgFDSR0MDM5OTIyNDAwMTYCXzEECHBySW1wYWN0CQEPY2FsY1ByaWNlSW1wYWN0BAUEYmFsQQUEYmFsQgUHbmV3QmFsQQUHbmV3QmFsQgQNJHQwNDAwODY0MDIwMQkBGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQp1c2VyU3Rha2VkBAh3QW1vdW50QQgFDSR0MDQwMDg2NDAyMDECXzEECHdBbW91bnRCCAUNJHQwNDAwODY0MDIwMQJfMgkAlAoCCQDOCAIJARByZXBsZW5pc2hFbnRyaWVzCAUEcG9vbAUEdXNlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUJbmV3UG9zTnVtBQdzaGFyZUlkBQVwVHlwZQcJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkCQDMCAIJAKQDAQUId0Ftb3VudEEJAMwIAgkApAMBBQh3QW1vdW50QgUDbmlsCQDMCAIFCHBySW1wYWN0CQDMCAIFCHdBbW91bnRBCQDMCAIFCHdBbW91bnRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcCBHBvb2wFcG9zSWQJAQt2YWx1ZU9yRWxzZQIJARBpc0FjdGl2ZUZvclVzZXJzAAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQDCQEBIQEJAQxpc1Bvb2xBY3RpdmUCBQRwb29sBQVwVHlwZQkAAgECHlBvb2wgbm90IGFjdGl2ZSBhdCB0aGlzIG1vbWVudAkBDndpdGhkcmF3VG9Vc2VyBAkApQgBCAUBaQZjYWxsZXIFBHBvb2wJAKQDAQUFcG9zSWQHAWkBFGNyZWF0ZVVwZGF0ZVN0b3BMb3NzBAVwb3NJZAZwb29sSWQHYXNzZXRJZAVwcmljZQkBC3ZhbHVlT3JFbHNlAgkBEGlzQWN0aXZlRm9yVXNlcnMABBB0b2tlbk9yYWNsZVByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUGcG9vbElkAhJQb29sIGlzIG5vdCBpbml0ZWQDCQEBIQEJAQxpc1Bvb2xBY3RpdmUCBQZwb29sSWQFBXBUeXBlCQACAQIeUG9vbCBub3QgYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUGcG9vbElkAgFfCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAAgECGlRoZXJlIGFyZSBubyB1c2VyIHBvc2l0aW9uAwkAZwIAAAUFcHJpY2UJAAIBAhxQcmljZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIFBXByaWNlBRB0b2tlbk9yYWNsZVByaWNlCQACAQIrUHJpY2UgbXVzdCBiZSBsZXNzIHRoYW4gY3VycmVudCB0b2tlbiBwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQVwb3NJZAIBXwUGcG9vbElkAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzBQVwcmljZQUDbmlsAWkBDmRlbGV0ZVN0b3BMb3NzAwVwb3NJZAZwb29sSWQHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkBEGlzQWN0aXZlRm9yVXNlcnMABAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBnBvb2xJZAISUG9vbCBpcyBub3QgaW5pdGVkAwkBASEBCQEMaXNQb29sQWN0aXZlAgUGcG9vbElkBQVwVHlwZQkAAgECHlBvb2wgbm90IGFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQVwb3NJZAIBXwUGcG9vbElkAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzCQACAQIITm8gZW50cnkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQVwb3NJZAIBXwUGcG9vbElkAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzBQNuaWwBaQEEaW5pdA0MbW9uZXlCb3hBZGRyDXNmRmFybWluZ0FkZHIIbGVuZEFkZHIPcHJpY2VPcmFjbGVBZGRyEGtlZXBlckV4Q29udHJhY3QOd3hTd2FwQ29udHJhY3QLc3dvcEFzc2V0SWQJd3hBc3NldElkDm9wZXJhdG9yUHViS2V5Emdyb3VwMUFkbWluMVB1YktleRJncm91cDFBZG1pbjJQdWJLZXkSZ3JvdXAyQWRtaW4xUHViS2V5Emdyb3VwMkFkbWluMlB1YktleQkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpAwkBCWlzRGVmaW5lZAEJAKIIAQUPa09wZXJhdG9yQ2FsbFBLCQACAQIOQWxyZWFkeSBpbml0ZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFDG1vbmV5Qm94QWRkcgkAAgECI21vbmV5Qm94QWRkciBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQ1zZkZhcm1pbmdBZGRyCQACAQIkc2ZGYXJtaW5nQWRkciBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQhsZW5kQWRkcgkAAgECH2xlbmRBZGRyIGlzIG5vdCBjb3JyZWN0IGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFD3ByaWNlT3JhY2xlQWRkcgkAAgECJnByaWNlT3JhY2xlQWRkciBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBRBrZWVwZXJFeENvbnRyYWN0CQACAQIna2VlcGVyRXhDb250cmFjdCBpcyBub3QgY29ycmVjdCBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkA7AcBCQDZBAEFC3N3b3BBc3NldElkCQACAQIjc3dvcEFzc2V0SWQgaXMgbm90IGNvcnJlY3QgYXNzZXQgaWQDCQEBIQEJAQlpc0RlZmluZWQBCQDsBwEJANkEAQUJd3hBc3NldElkCQACAQIjc3dvcEFzc2V0SWQgaXMgbm90IGNvcnJlY3QgYXNzZXQgaWQDCQECIT0CCQDIAQEJANkEAQUOb3BlcmF0b3JQdWJLZXkAIAkAAgECHW9wZXJhdG9yUHViS2V5IGlzIG5vdCBjb3JyZWN0AwkBAiE9AgkAyAEBCQDZBAEFEmdyb3VwMUFkbWluMVB1YktleQAgCQACAQIhZ3JvdXAxQWRtaW4xUHViS2V5IGlzIG5vdCBjb3JyZWN0AwkBAiE9AgkAyAEBCQDZBAEFEmdyb3VwMUFkbWluMlB1YktleQAgCQACAQIhZ3JvdXAxQWRtaW4yUHViS2V5IGlzIG5vdCBjb3JyZWN0AwkBAiE9AgkAyAEBCQDZBAEFEmdyb3VwMkFkbWluMVB1YktleQAgCQACAQIhZ3JvdXAyQWRtaW4xUHViS2V5IGlzIG5vdCBjb3JyZWN0AwkBAiE9AgkAyAEBCQDZBAEFEmdyb3VwMkFkbWluMlB1YktleQAgCQACAQIhZ3JvdXAyQWRtaW4yUHViS2V5IGlzIG5vdCBjb3JyZWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtNb25leUJveAUMbW9uZXlCb3hBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFDmtTRkZhcm1pbmdBZGRyBQ1zZkZhcm1pbmdBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtMZW5kU2VydmljZQUIbGVuZEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUMa1ByaWNlT3JhY2xlBQ9wcmljZU9yYWNsZUFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa0V4Q29udHJhY3QFEGtlZXBlckV4Q29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa1d4U3dhcENvbnRyYWN0BQ53eFN3YXBDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBQdrU3dvcElkBQtzd29wQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBQVrV3hJZAUJd3hBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tPcGVyYXRvckNhbGxQSwUOb3BlcmF0b3JQdWJLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa0dyb3VwMUFkbWluMVBLBRJncm91cDFBZG1pbjFQdWJLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa0dyb3VwMUFkbWluMlBLBRJncm91cDFBZG1pbjJQdWJLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa0dyb3VwMkFkbWluMVBLBRJncm91cDJBZG1pbjFQdWJLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa0dyb3VwMkFkbWluMlBLBRJncm91cDJBZG1pbjJQdWJLZXkFA25pbAFpARBjcmVhdGVOZXdSZXF1ZXN0AQZwYXJhbXMJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQMbmV3UmVxdWVzdElkCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQxrUmVxdWVzdEl0ZXIAAAABCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCkAwEFDG5ld1JlcXVlc3RJZAUKa1JlcXVlc3RJZAUGcGFyYW1zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrUmVxdWVzdEl0ZXIFDG5ld1JlcXVlc3RJZAUDbmlsBQxuZXdSZXF1ZXN0SWQBaQERcmVwbGVuaXNoRnJvbUxhbmQBCXJlcXVlc3RJZAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzTGFuZENhbGwBBQFpBA0kdDA0NTA0MDQ1MTQ0CQEMcGFyc2VSZXF1ZXN0AQUJcmVxdWVzdElkBAR1c2VyCAUNJHQwNDUwNDA0NTE0NAJfMQQEcG9vbAgFDSR0MDQ1MDQwNDUxNDQCXzIEBHBtdEEIBQ0kdDA0NTA0MDQ1MTQ0Al8zBANBSWQIBQ0kdDA0NTA0MDQ1MTQ0Al80BARwbXRCCAUNJHQwNDUwNDA0NTE0NAJfNQQDQklkCAUNJHQwNDUwNDA0NTE0NAJfNgQEYmFsQQgFDSR0MDQ1MDQwNDUxNDQCXzcEBGJhbEIIBQ0kdDA0NTA0MDQ1MTQ0Al84BAdzaGFyZUlkCAUNJHQwNDUwNDA0NTE0NAJfOQQHYndBc3NldAgFDSR0MDQ1MDQwNDUxNDQDXzEwBAhid0Ftb3VudAgFDSR0MDQ1MDQwNDUxNDQDXzExAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQISV3JvbmcgcGF5bWVudCBzaXplAwMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFB2J3QXNzZXQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUIYndBbW91bnQJAAIBAg1Xcm9uZyBwYXltZW50BA0kdDA0NTMzNDQ1NDM0AwkAAAIFA0FJZAUHYndBc3NldAkAlAoCCQBkAgUEcG10QQUIYndBbW91bnQFBHBtdEIJAJQKAgUEcG10QQkAZAIFBHBtdEIFCGJ3QW1vdW50BAdwbXRBbGxBCAUNJHQwNDUzMzQ0NTQzNAJfMQQHcG10QWxsQggFDSR0MDQ1MzM0NDU0MzQCXzIEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDA0NTUxNjQ1NjMxCQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFCExPQU5fRkVFBQdwbXRBbGxBBQNBSWQFB3BtdEFsbEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDQ1NTE2NDU2MzECXzEEB2F4bHlGZWUIBQ0kdDA0NTUxNjQ1NjMxAl8yBAZwb3NOdW0JARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBQR1c2VyBA1ib3Jyb3dFbnRyaWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEWtVc2VyQm9ycm93QW1vdW50BQhid0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEmtVc2VyQm9ycm93QXNzZXRJZAUHYndBc3NldAUDbmlsBAdlbnRyaWVzCQEQcmVwbGVuaXNoRW50cmllcwgFBHBvb2wFBHVzZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFBnBvc051bQUHc2hhcmVJZAUFcFR5cGUGBA0kdDA0NTk5MTQ2MTA2CQEaY2FsY1dpdGhkcmF3TFBGcm9tUG9vbFZpcnQECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFCnVzZXJTdGFrZWQECHdBbW91bnRBCAUNJHQwNDU5OTE0NjEwNgJfMQQId0Ftb3VudEIIBQ0kdDA0NTk5MTQ2MTA2Al8yCQCUCgIJAM0IAgkAzggCCQDOCAIFB2VudHJpZXMJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkCQDMCAIJAKQDAQUId0Ftb3VudEEJAMwIAgkApAMBBQh3QW1vdW50QgUDbmlsBQ1ib3Jyb3dFbnRyaWVzCQELRGVsZXRlRW50cnkBCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAUKdXNlclN0YWtlZAFpAQlsaXF1aWRhdGUDBHVzZXIFcG9zSWQPbGlxdWlkYXRlQW1vdW50CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNMYW5kQ2FsbAEFAWkEBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJQb3NpdGlvblBvb2wCC25vIHBvc2l0aW9uBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwNDY2Mjc0NjcxNwkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDA0NjYyNzQ2NzE3Al8xBANCSWQIBQ0kdDA0NjYyNzQ2NzE3Al8yBARiYWxBCAUNJHQwNDY2Mjc0NjcxNwJfMwQEYmFsQggFDSR0MDQ2NjI3NDY3MTcCXzQEB3NoYXJlSWQIBQ0kdDA0NjYyNzQ2NzE3Al81BAZhbW91bnQJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUPbGlxdWlkYXRlQW1vdW50BAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJCb3Jyb3dBbW91bnQEC2JvcnJvd0Fzc2V0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAUFcG9zSWQJAGYCBQxib3Jyb3dBbW91bnQAAAMJAGYCBQ9saXF1aWRhdGVBbW91bnQFD3VzZXJDYW5XaXRoZHJhdwkAAgECJ1lvdSBjYW4ndCBsaXF1aWRhdGUgbW9yZSB0aGFuIHVzZXIgaGF2ZQMJAAACBQxib3Jyb3dBbW91bnQAAAkAAgECK1lvdSBjYW4ndCBsaXF1aWRhdGUgcG9zaXRpb24gd2l0aG91dCBib3Jyb3cJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgkBGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBQRwb29sBQ9saXF1aWRhdGVBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQBlAgUPdXNlckNhbldpdGhkcmF3BQ9saXF1aWRhdGVBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQJANkEAQUHc2hhcmVJZAUDbmlsAWkBCHN0b3BMb3NzBAR1c2VyBXBvc0lkBHBvb2wHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBDmlzT3BlcmF0b3JDYWxsAQUBaQQQdG9rZW5PcmFjbGVQcmljZQkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFB2Fzc2V0SWQFDmtQcmljZUluT3JhY2xlBA1zdG9wTG9zc1ByaWNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBXBvc0lkAgFfBQRwb29sAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzAghObyBlbnRyeQMJAGYCBRB0b2tlbk9yYWNsZVByaWNlBQ1zdG9wTG9zc1ByaWNlCQACAQIjVG9rZW4gcHJpY2UgZ3JlYXRlciBzdG9wIGxvc3MgcHJpY2UEA3JlcwkBDndpdGhkcmF3VG9Vc2VyBAUEdXNlcgUEcG9vbAkApAMBBQVwb3NJZAYJAJQKAgkAzQgCCAUDcmVzAl8xCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUFcG9zSWQCAV8FBHBvb2wCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MIBQNyZXMCXzIBaQEMY2FwaXRhbGl6ZUV4BQRwb29sBXJvdXRlCXRva2VuVG9JZBBhbW91bnRUb0V4Y2hhbmdlBWNsYWltCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBAVwVHlwZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAQGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAQNJHQwNDg2ODc0ODc4OQkBEWNsYWltQW5kQ2hlY2tBbW50BQUEcG9vbAUFcFR5cGUFBWNsYWltBRBhbW91bnRUb0V4Y2hhbmdlBQZjaGFuZ2UDCQAAAgUNJHQwNDg2ODc0ODc4OQUNJHQwNDg2ODc0ODc4OQQMY2xhaW1lZEFzc2V0CAUNJHQwNDg2ODc0ODc4OQJfMgQNY2xhaW1lZEFtb3VudAgFDSR0MDQ4Njg3NDg3ODkCXzEEBXJBcmdzCQC1CQIFBXJvdXRlAgJfXwQPZXhjaGFuZ2VkQW1vdW50AwkAAAIJAJEDAgUFckFyZ3MAAAIQZGlyZWN0U3dvcGZpQ1BNTQkBEGRpcmVjdFN3b3BmaUNQTU0CBQVyQXJncwUJdG9rZW5Ub0lkAwkAAAIJAJEDAgUFckFyZ3MAAAINcm91dGluZ1N3b3BmaQkBE2RpcmVjdFJvdXRpbmdTd29wZmkCBQVyQXJncwUJdG9rZW5Ub0lkCQACAQILV3Jvbmcgcm91dGUDCQAAAgUPZXhjaGFuZ2VkQW1vdW50BQ9leGNoYW5nZWRBbW91bnQECW5ld0NoYW5nZQkAZQIJAGQCBQ1jbGFpbWVkQW1vdW50BQZjaGFuZ2UFEGFtb3VudFRvRXhjaGFuZ2UEC2NoYW5nZUVudHJ5AwkAZwIFCW5ld0NoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlBQluZXdDaGFuZ2UFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUFcFR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jYXBpdGFsaXplTm9FeAMEcG9vbAVjbGFpbRFhbW91bnRGcm9tQmFsYW5jZQkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBDmlzT3BlcmF0b3JDYWxsAQUBaQQFcFR5cGUJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wEDSR0MDQ5NDczNDk1NzEJARFjbGFpbUFuZENoZWNrQW1udAUFBHBvb2wFBXBUeXBlBQVjbGFpbQURYW1vdW50RnJvbUJhbGFuY2UAAAMJAAACBQ0kdDA0OTQ3MzQ5NTcxBQ0kdDA0OTQ3MzQ5NTcxBAxjbGFpbWVkQXNzZXQIBQ0kdDA0OTQ3MzQ5NTcxAl8yBA1jbGFpbWVkQW1vdW50CAUNJHQwNDk0NzM0OTU3MQJfMQkBCmNhcGl0YWxpemUEBQRwb29sBQVwVHlwZQkBDGFzc2V0SWRUb1N0cgEFDGNsYWltZWRBc3NldAkAZAIFDWNsYWltZWRBbW91bnQFEWFtb3VudEZyb21CYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC2luaXROZXdQb29sCgR0eXBlCHBvb2xUeXBlCHBvb2xBZGRyC2luRmVlTm9Mb2FuCWluRmVlTG9hbgxjYXBGZWVOb0xvYW4OY2FwRmVlV2l0aExvYW4Rc3RvcGxvc3NGZWVOb0xvYW4Tc3RvcGxvc3NGZWVXaXRoTG9hbgljYW5Cb3Jyb3cJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDAwkBAiE9AgUEdHlwZQUHU0ZfUE9PTAkBAiE9AgUEdHlwZQUHV1hfUE9PTAcJAAIBAgpXcm9uZyB0eXBlAwMJAQIhPQIFCHBvb2xUeXBlBQRDUE1NCQECIT0CBQhwb29sVHlwZQUERkxBVAcJAAIBAg9Xcm9uZyBwb29sIHR5cGUEDSR0MDUwMDkyNTAxODYJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQhwb29sQWRkcgUEdHlwZQQDYUlkCAUNJHQwNTAwOTI1MDE4NgJfMQQDYklkCAUNJHQwNTAwOTI1MDE4NgJfMgQEYUJhbAgFDSR0MDUwMDkyNTAxODYCXzMEBGJCYWwIBQ0kdDA1MDA5MjUwMTg2Al80BAdzaGFyZUlkCAUNJHQwNTAwOTI1MDE4NgJfNQMJAGYCAAAFC2luRmVlTm9Mb2FuCQACAQIiaW5GZWVOb0xvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFCWluRmVlTG9hbgkAAgECIGluRmVlTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUMY2FwRmVlTm9Mb2FuCQACAQIjY2FwRmVlTm9Mb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQ5jYXBGZWVXaXRoTG9hbgkAAgECJWNhcEZlZVdpdGhMb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABRFzdG9wbG9zc0ZlZU5vTG9hbgkAAgECKHN0b3Bsb3NzRmVlTm9Mb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABRNzdG9wbG9zc0ZlZVdpdGhMb2FuCQACAQIqc3RvcGxvc3NGZWVXaXRoTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRVrQXhseUluRmVlV2l0aG91dExvYW4FC2luRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRJrQXhseUluRmVlV2l0aExvYW4FCWluRmVlTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgURa0F4bHlOb0xvYW5DYXBGZWUFDGNhcEZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUTa0F4bHlXaXRoTG9hbkNhcEZlZQUOY2FwRmVlV2l0aExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFmtBeGx5U3RvcExvc3NOb0xvYW5GZWUFEXN0b3Bsb3NzRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRRrQXhseVN0b3BMb3NzTG9hbkZlZQUTc3RvcGxvc3NGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgURa1Bvb2xJbnRlcmVzdExvYW4AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUFa1Bvb2wFCHBvb2xBZGRyBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUIcG9vbEFkZHIFCWtQb29sVHlwZQUIcG9vbFR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzaGFyZUlkBQprU2hhcmVQb29sBQhwb29sQWRkcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQhwb29sQWRkcgUOa1Bvb2xDYW5Cb3Jyb3cFCWNhbkJvcnJvdwUDbmlsAWkBDnVwZGF0ZVBvb2xGZWVzBwhwb29sQWRkcgtpbkZlZU5vTG9hbglpbkZlZUxvYW4MY2FwRmVlTm9Mb2FuDmNhcEZlZVdpdGhMb2FuEXN0b3Bsb3NzRmVlTm9Mb2FuE3N0b3Bsb3NzRmVlV2l0aExvYW4JAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFCHBvb2xBZGRyCQACAQkArAICAhpDYW4ndCBmaW5kIHBvb2wgd2l0aCBhZGRyIAUIcG9vbEFkZHIDCQBmAgAABQtpbkZlZU5vTG9hbgkAAgECImluRmVlTm9Mb2FuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQlpbkZlZUxvYW4JAAIBAiBpbkZlZUxvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFDGNhcEZlZU5vTG9hbgkAAgECI2NhcEZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUOY2FwRmVlV2l0aExvYW4JAAIBAiVjYXBGZWVXaXRoTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAURc3RvcGxvc3NGZWVOb0xvYW4JAAIBAihzdG9wbG9zc0ZlZU5vTG9hbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUTc3RvcGxvc3NGZWVXaXRoTG9hbgkAAgECKnN0b3Bsb3NzRmVlV2l0aExvYW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUVa0F4bHlJbkZlZVdpdGhvdXRMb2FuBQtpbkZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUSa0F4bHlJbkZlZVdpdGhMb2FuBQlpbkZlZUxvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEWtBeGx5Tm9Mb2FuQ2FwRmVlBQxjYXBGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFE2tBeGx5V2l0aExvYW5DYXBGZWUFDmNhcEZlZVdpdGhMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRZrQXhseVN0b3BMb3NzTm9Mb2FuRmVlBRFzdG9wbG9zc0ZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUUa0F4bHlTdG9wTG9zc0xvYW5GZWUFE3N0b3Bsb3NzRmVlV2l0aExvYW4FA25pbAFpAQhhY3RpdmF0ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGCQACAQITZEFwcCBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYFA25pbAFpAQhzaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUHa0FjdGl2ZQYJAAIBAhVkQXBwIGFscmVhZHkgc2h1dGRvd24JAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHBQNuaWwBaQEQYWN0aXZhdGVGb3JVc2VycwAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDGtBY3RpdmVVc2VycwYJAAIBAh1kQXBwIGFscmVhZHkgYWN0aXZlIGZvciB1c2VycwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMa0FjdGl2ZVVzZXJzBgUDbmlsAWkBEHNodXRkb3duRm9yVXNlcnMACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDGtBY3RpdmVVc2VycwYJAAIBAh9kQXBwIGFscmVhZHkgc2h1dGRvd24gZm9yIHVzZXJzCQDMCAIJAQxCb29sZWFuRW50cnkCBQxrQWN0aXZlVXNlcnMHBQNuaWwBaQEKYWN0aXZhdGVTRgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUHU0ZfUE9PTAULa0FjdGl2ZVNGV1gGCQACAQIVU1dPUEZJIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFB1NGX1BPT0wFC2tBY3RpdmVTRldYBgUDbmlsAWkBCnNodXRkb3duU0YACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUHU0ZfUE9PTAULa0FjdGl2ZVNGV1gGCQACAQIXU1dPUEZJIGFscmVhZHkgc2h1dGRvd24JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUHU0ZfUE9PTAULa0FjdGl2ZVNGV1gHBQNuaWwBaQEKYWN0aXZhdGVXWAAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgUHV1hfUE9PTAULa0FjdGl2ZVNGV1gGCQACAQIRV1ggYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUHV1hfUE9PTAULa0FjdGl2ZVNGV1gGBQNuaWwBaQEKc2h1dGRvd25XWAAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQdXWF9QT09MBQtrQWN0aXZlU0ZXWAYJAAIBAhNXWCBhbHJlYWR5IHNodXRkb3duCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFB1dYX1BPT0wFC2tBY3RpdmVTRldYBwUDbmlsAWkBDGFjdGl2YXRlUG9vbAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAkAAgECDFVua25vd24gcG9vbAMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQYJAAIBAhNQb29sIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIFBHBvb2wFC2tQb29sQWN0aXZlBgUDbmlsAWkBDHNodXRkb3duUG9vbAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAkAAgECDFVua25vd24gcG9vbAMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIFBHBvb2wFC2tQb29sQWN0aXZlBgkAAgECFVBvb2wgYWxyZWFkeSBzaHV0ZG93bgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQRwb29sBQtrUG9vbEFjdGl2ZQcFA25pbABnL5a2", "height": 2805184, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4M2PVDWnzvVtmNfFftF8nMZfRvKBHCoeedabQqmhBELP Next: 71ZBgz93Z1nyQaB7fPCbPmjCrZzSAjAeDTumkK46pxSz Diff:
OldNewDifferences
686686 else if ((bL == b))
687687 then if ((valueOrElse(getString(this, (toString(aT) + Q)), "cpmm") == d))
688688 then {
689- let cz = invoke(aT, "poolEvaluateGetREADONLY", [bf, di], nil)
689+ let cz = invoke(aT, "estimateGetOperationWrapperREADONLY", [bf, di], nil)
690690 if ((cz == cz))
691691 then {
692692 let dk = {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "SF"
55
66 let b = "WX"
77
88 let c = "cpmm"
99
1010 let d = "flat"
1111
1212 let e = "capNoLoan"
1313
1414 let f = "capLoan"
1515
1616 let g = "stopLossNoLoan"
1717
1818 let h = "stopLossLoan"
1919
2020 let i = "loan"
2121
2222 let j = "noLoan"
2323
2424 let k = "noFee"
2525
2626 let l = 100000000
2727
2828 let m = 10000000000
2929
3030 let n = toBigInt(10000000000000000)
3131
3232 let o = 1000000
3333
3434 let p = "A_asset_balance"
3535
3636 let q = "B_asset_balance"
3737
3838 let r = "A_asset_id"
3939
4040 let s = "B_asset_id"
4141
4242 let t = "share_asset_id"
4343
4444 let u = "share_asset_supply"
4545
4646 let v = "commission"
4747
4848 let w = "_userPosition"
4949
5050 let x = "_userPositionPool"
5151
5252 let y = "_userPositionBorrowAmount"
5353
5454 let z = "_userPositionBorrowAssetId"
5555
5656 let A = "_userPositionNumber"
5757
5858 let B = "_userPositionInterest"
5959
6060 let C = "_poolTotal"
6161
6262 let D = "_poolTotalLoan"
6363
6464 let E = "_poolInterestLoan"
6565
6666 let F = "_poolInterestNoLoan"
6767
6868 let G = "_poolCanBorrow"
6969
7070 let H = "_axlyFeeNoLoan"
7171
7272 let I = "_axlyFeeWithLoan"
7373
7474 let J = "_axlyFeeCapNoLoan"
7575
7676 let K = "_axlyFeeCapWithLoan"
7777
7878 let L = "_axlyFeeStoplossWithLoan"
7979
8080 let M = "_axlyFeeStoplossNoLoan"
8181
8282 let N = "_request_id"
8383
8484 let O = "requests_iter"
8585
8686 let P = "pool_"
8787
8888 let Q = "_poolType"
8989
9090 let R = "_poolShareId"
9191
9292 let S = "_poolCapChange"
9393
9494 let T = "last_price"
9595
9696 let U = "_twap5B"
9797
9898 let V = "active"
9999
100100 let W = "activeUsers"
101101
102102 let X = "_active"
103103
104104 let Y = "_activePool"
105105
106106 let Z = "_stopLoss"
107107
108108 let aa = "_fallbackExchangeSwopfi"
109109
110110 let ab = "axly_money_box"
111111
112112 let ac = "swopfi_farming_addr"
113113
114114 let ad = "lend_service_addr"
115115
116116 let ae = "admin_call_pub_key"
117117
118118 let af = "price_oracle"
119119
120120 let ag = "exchange_contract"
121121
122122 let ah = "wx_swap_contract"
123123
124124 let ai = "swop_id"
125125
126126 let aj = "wx_id"
127127
128128 let ak = "group1_admin1_pub_key"
129129
130130 let al = "group1_admin2_pub_key"
131131
132132 let am = "group2_admin1_pub_key"
133133
134134 let an = "group2_admin2_pub_key"
135135
136136 let ao = Address(fromBase58String(valueOrErrorMessage(getString(this, ab), "No axly moneyBox address")))
137137
138138 let ap = Address(fromBase58String(valueOrErrorMessage(getString(this, ag), "No exchange contract address")))
139139
140140 let aq = Address(fromBase58String(valueOrErrorMessage(getString(this, af), "No price oracle address")))
141141
142142 let ar = Address(fromBase58String(valueOrErrorMessage(getString(this, ah), "No wx swap address")))
143143
144144 let as = fromBase58String(valueOrErrorMessage(getString(this, ai), "No swop id"))
145145
146146 let at = fromBase58String(valueOrErrorMessage(getString(this, aj), "No wx id"))
147147
148148 let au = fromBase58String(valueOrErrorMessage(getString(this, ak), "Can't get kGroup1Admin1PK"))
149149
150150 let av = fromBase58String(valueOrErrorMessage(getString(this, al), "Can't get kGroup1Admin2PK"))
151151
152152 let aw = fromBase58String(valueOrErrorMessage(getString(this, am), "Can't get kGroup2Admin1PK"))
153153
154154 let ax = fromBase58String(valueOrErrorMessage(getString(this, an), "Can't get kGroup2Admin1PK"))
155155
156156 let ay = fromBase58String(valueOrErrorMessage(getString(this, ae), "Can't get operatorPK"))
157157
158158 func az () = throw("Wrong pool type")
159159
160160
161161 func aA () = Address(fromBase58String(valueOrErrorMessage(getString(this, ad), "Can't get lend service addr")))
162162
163163
164164 func aB (aC) = if ((aC.callerPublicKey == ay))
165165 then unit
166166 else throw("Only operator can call this function")
167167
168168
169169 func aD (aC) = if (if ((aC.callerPublicKey == au))
170170 then true
171171 else (aC.callerPublicKey == av))
172172 then unit
173173 else throw("Only admin group1 can call this function")
174174
175175
176176 func aE (aC) = if ((aC.caller == this))
177177 then unit
178178 else throw("Only contract itself can call this function")
179179
180180
181181 func aF (aC) = if ((aC.caller == aA()))
182182 then unit
183183 else throw("Only land contract can call this function")
184184
185185
186186 func aG () = if ((valueOrElse(getBoolean(this, V), true) == true))
187187 then unit
188188 else throw("DApp is inactive at this moment")
189189
190190
191191 func aH () = if (if (valueOrElse(getBoolean(this, V), true))
192192 then (valueOrElse(getBoolean(this, W), true) == true)
193193 else false)
194194 then unit
195195 else throw("DApp is inactive for users at this moment")
196196
197197
198198 func aI (aJ,aK) = {
199199 let aL = valueOrElse(getBoolean(this, (aK + X)), true)
200200 let aM = valueOrElse(getBoolean(this, (aJ + Y)), true)
201201 if (if (aL)
202202 then aM
203203 else false)
204204 then true
205205 else false
206206 }
207207
208208
209209 func aN (aO) = {
210210 let aP = aO
211211 if ($isInstanceOf(aP, "ByteVector"))
212212 then {
213213 let aQ = aP
214214 assetBalance(this, aQ)
215215 }
216216 else if ($isInstanceOf(aP, "Unit"))
217217 then {
218218 let aR = aP
219219 wavesBalance(this).available
220220 }
221221 else throw("Match error")
222222 }
223223
224224
225225 func aS (aT) = $Tuple2(valueOrErrorMessage(getInteger(aT, p), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aT, q), "Can't get pool B asset balance"))
226226
227227
228228 func aU (aT,aV,aW) = $Tuple2({
229229 let aX = invoke(aT, "getAccBalanceWrapperREADONLY", [aV], nil)
230230 if ($isInstanceOf(aX, "Int"))
231231 then aX
232232 else throw(($getType(aX) + " couldn't be cast to Int"))
233233 }, {
234234 let aX = invoke(aT, "getAccBalanceWrapperREADONLY", [aW], nil)
235235 if ($isInstanceOf(aX, "Int"))
236236 then aX
237237 else throw(($getType(aX) + " couldn't be cast to Int"))
238238 })
239239
240240
241241 func aY (aT,aK,aV,aW) = if ((aK == a))
242242 then aS(aT)
243243 else if ((aK == b))
244244 then aU(aT, aV, aW)
245245 else az()
246246
247247
248248 func aZ (aT) = {
249249 let ba = aS(aT)
250250 if ((ba == ba))
251251 then {
252252 let bb = ba._2
253253 let bc = ba._1
254254 $Tuple5(valueOrErrorMessage(getString(aT, r), "Can't get pool A asset id"), valueOrErrorMessage(getString(aT, s), "Can't get pool B asset id"), bc, bb, valueOrErrorMessage(getString(aT, t), "Can't get share asset id"))
255255 }
256256 else throw("Strict value is not equal to itself.")
257257 }
258258
259259
260260 func bd (aT) = {
261261 let be = {
262262 let aX = invoke(aT, "getPoolConfigWrapperREADONLY", nil, nil)
263263 if ($isInstanceOf(aX, "List[Any]"))
264264 then aX
265265 else throw(($getType(aX) + " couldn't be cast to List[Any]"))
266266 }
267267 if ((be == be))
268268 then {
269269 let aV = valueOrErrorMessage({
270270 let aX = be[4]
271271 if ($isInstanceOf(aX, "String"))
272272 then aX
273273 else unit
274274 }, "Can't get pool A asset id")
275275 let aW = valueOrErrorMessage({
276276 let aX = be[5]
277277 if ($isInstanceOf(aX, "String"))
278278 then aX
279279 else unit
280280 }, "Can't get pool B asset id")
281281 let bf = valueOrErrorMessage({
282282 let aX = be[3]
283283 if ($isInstanceOf(aX, "String"))
284284 then aX
285285 else unit
286286 }, "Can't get pool LP asset id")
287287 let bg = aU(aT, aV, aW)
288288 if ((bg == bg))
289289 then {
290290 let bb = bg._2
291291 let bc = bg._1
292292 $Tuple5(aV, aW, bc, bb, bf)
293293 }
294294 else throw("Strict value is not equal to itself.")
295295 }
296296 else throw("Strict value is not equal to itself.")
297297 }
298298
299299
300300 func bh (aT,aK) = if ((aK == a))
301301 then aZ(aT)
302302 else if ((aK == b))
303303 then bd(aT)
304304 else az()
305305
306306
307307 func bi (aT,aK,bf) = if ((aK == a))
308308 then valueOrErrorMessage(getInteger(aT, u), "Can't get share asset supply")
309309 else if ((aK == b))
310310 then valueOrErrorMessage(assetInfo(fromBase58String(bf)), "Wrong ShareId").quantity
311311 else az()
312312
313313
314314 func bj (aJ) = valueOrElse(getInteger(this, (aJ + C)), 0)
315315
316316
317317 func bk (aJ) = valueOrElse(getInteger(this, (aJ + D)), 0)
318318
319319
320320 func bl (bm) = (valueOrElse(getInteger(this, (bm + A)), 0) + 1)
321321
322322
323323 func bn (aJ,bo) = if ((bo == f))
324324 then getIntegerValue(this, (aJ + K))
325325 else if ((bo == e))
326326 then getIntegerValue(this, (aJ + J))
327327 else if ((bo == i))
328328 then getIntegerValue(this, (aJ + I))
329329 else if ((bo == j))
330330 then getIntegerValue(this, (aJ + H))
331331 else if ((bo == k))
332332 then 0
333333 else throw("Wrong fee type")
334334
335335
336336 func bp () = Address(fromBase58String(valueOrErrorMessage(getString(this, ac), "Can't get swopfi farming addr")))
337337
338338
339339 func bq (aT) = {
340340 let br = Address(fromBase58String(valueOrErrorMessage(getString(aT, "%s__factoryContract"), "Can't get WX factory contract addr")))
341341 let bs = split(valueOrErrorMessage(getString(br, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
342342 Address(fromBase58String(bs[1]))
343343 }
344344
345345
346346 func bt (aO) = {
347347 let aP = aO
348348 if ($isInstanceOf(aP, "ByteVector"))
349349 then {
350350 let aQ = aP
351351 toBase58String(aQ)
352352 }
353353 else if ($isInstanceOf(aP, "Unit"))
354354 then {
355355 let aR = aP
356356 "WAVES"
357357 }
358358 else throw("Not Asset id")
359359 }
360360
361361
362362 func bu (aO) = if ((aO == "WAVES"))
363363 then unit
364364 else fromBase58String(aO)
365365
366366
367367 func bv (aO) = if ((aO == "WAVES"))
368368 then 8
369369 else {
370370 let aP = assetInfo(fromBase58String(aO))
371371 if ($isInstanceOf(aP, "Asset"))
372372 then {
373373 let bw = aP
374374 bw.decimals
375375 }
376376 else throw("Can't find asset")
377377 }
378378
379379
380380 func bx (aO) = pow(10, 0, bv(aO), 0, 0, DOWN)
381381
382382
383383 func by (bz) = {
384384 func bA (bB,aO) = {
385385 let bC = valueOrElse(getInteger(aq, (aO + U)), -1)
386386 (bB :+ bC)
387387 }
388388
389389 let bD = bz
390390 let bE = size(bD)
391391 let bF = nil
392392 func bG (bH,bI) = if ((bI >= bE))
393393 then bH
394394 else bA(bH, bD[bI])
395395
396396 func bJ (bH,bI) = if ((bI >= bE))
397397 then bH
398398 else throw("List size exceeds 50")
399399
400400 bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 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)
401401 }
402402
403403
404404 func bK (bf) = {
405405 let aJ = valueOrErrorMessage(getString(this, (bf + R)), "Can't find pool addr by share id")
406406 let aT = Address(fromBase58String(aJ))
407407 let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
408408 let bM = bh(aT, bL)
409409 let aV = bM._1
410410 let aW = bM._2
411411 let bN = bM._3
412412 let bO = bM._4
413413 let bP = by([aV, aW])
414414 let bQ = bP[0]
415415 let bR = bP[1]
416416 if (if ((0 > bQ))
417417 then true
418418 else (0 > bR))
419419 then -1
420420 else {
421421 let bS = bi(aT, bL, bf)
422422 let bT = pow(10, 0, bv(aV), 0, 0, DOWN)
423423 let bU = pow(10, 0, bv(aW), 0, 0, DOWN)
424424 let bV = pow(10, 0, bv(bf), 0, 0, DOWN)
425425 let bW = (fraction(bN, bQ, bT) + fraction(bO, bR, bU))
426426 fraction(bW, bV, bS)
427427 }
428428 }
429429
430430
431431 func bX (bY) = {
432432 func bA (bB,bf) = (bB :+ bK(bf))
433433
434434 let bD = bY
435435 let bE = size(bD)
436436 let bF = nil
437437 func bG (bH,bI) = if ((bI >= bE))
438438 then bH
439439 else bA(bH, bD[bI])
440440
441441 func bJ (bH,bI) = if ((bI >= bE))
442442 then bH
443443 else throw("List size exceeds 20")
444444
445445 bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
446446 }
447447
448448
449449 func bZ (aV,aW,bf,ca) = {
450450 let cb = by([aV, aW])
451451 let cc = bK(bf)
452452 let bP = ([toString(cb[0]), toString(cb[1]), toString(cc)] ++ ca)
453453 [StringEntry(T, makeString(bP, ","))]
454454 }
455455
456456
457457 func cd (bL,aT,ce,aV,cf,aW,bc,bb) = if ((bL == a))
458458 then {
459459 let cg = {
460460 let aX = invoke(aT, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(ce), toString(cf)]], nil)
461461 if ($isInstanceOf(aX, "List[Any]"))
462462 then aX
463463 else throw(($getType(aX) + " couldn't be cast to List[Any]"))
464464 }
465465 if ((cg == cg))
466466 then $Tuple5({
467467 let aX = cg[3]
468468 if ($isInstanceOf(aX, "Int"))
469469 then aX
470470 else throw(($getType(aX) + " couldn't be cast to Int"))
471471 }, {
472472 let aX = cg[4]
473473 if ($isInstanceOf(aX, "Int"))
474474 then aX
475475 else throw(($getType(aX) + " couldn't be cast to Int"))
476476 }, {
477477 let aX = cg[1]
478478 if ($isInstanceOf(aX, "Int"))
479479 then aX
480480 else throw(($getType(aX) + " couldn't be cast to Int"))
481481 }, bt(cg[2]), {
482482 let aX = cg[0]
483483 if ($isInstanceOf(aX, "Int"))
484484 then aX
485485 else throw(($getType(aX) + " couldn't be cast to Int"))
486486 })
487487 else throw("Strict value is not equal to itself.")
488488 }
489489 else if ((bL == b))
490490 then {
491491 let ch = $Tuple2(split({
492492 let aX = invoke(aT, "evaluatePutByAmountAssetREADONLY", [ce], nil)
493493 if ($isInstanceOf(aX, "String"))
494494 then aX
495495 else throw(($getType(aX) + " couldn't be cast to String"))
496496 }, "__"), split({
497497 let aX = invoke(aT, "evaluatePutByPriceAssetREADONLY", [cf], nil)
498498 if ($isInstanceOf(aX, "String"))
499499 then aX
500500 else throw(($getType(aX) + " couldn't be cast to String"))
501501 }, "__"))
502502 if ((ch == ch))
503503 then {
504504 let ci = ch._2
505505 let cj = ch._1
506506 let ck = parseIntValue(cj[1])
507507 let cl = parseIntValue(ci[1])
508508 if ((cl > ck))
509509 then {
510510 let cm = parseIntValue(cj[8])
511511 $Tuple5(ce, cm, (cf - cm), aW, cl)
512512 }
513513 else {
514514 let cm = parseIntValue(ci[7])
515515 $Tuple5(cm, cf, (ce - cm), aV, ck)
516516 }
517517 }
518518 else throw("Strict value is not equal to itself.")
519519 }
520520 else az()
521521
522522
523523 func cn (aT,bL,ce,aV,cf,aW) = {
524524 let co = [AttachedPayment(bu(aV), ce), AttachedPayment(bu(aW), cf)]
525525 if ((bL == a))
526526 then invoke(aT, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], co)
527527 else if ((bL == b))
528528 then invoke(aT, "put", [1000000, false], co)
529529 else az()
530530 }
531531
532532
533533 func cp (aT,bL,cm,cq) = {
534534 let co = [AttachedPayment(bu(cq), cm)]
535535 if ((bL == a))
536536 then invoke(aT, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], co)
537537 else if ((bL == b))
538538 then {
539539 let cr = if ((valueOrElse(getString(this, (toString(aT) + Q)), "cpmm") == d))
540540 then "putOneTknV2"
541541 else "putOneTkn"
542542 invoke(aT, cr, [0, false], co)
543543 }
544544 else az()
545545 }
546546
547547
548548 func cs (aJ,bL,bf,ct) = {
549549 let co = [AttachedPayment(fromBase58String(bf), ct)]
550550 if ((bL == a))
551551 then invoke(bp(), "lockShareTokens", [aJ, 0], co)
552552 else if ((bL == b))
553553 then invoke(bq(addressFromStringValue(aJ)), "stake", nil, co)
554554 else az()
555555 }
556556
557557
558558 func cu (aJ,bL,bf,ct) = {
559559 let cv = if ((bL == a))
560560 then $Tuple3(bp(), "withdrawShareTokens", [aJ, ct])
561561 else if ((bL == b))
562562 then $Tuple3(bq(Address(fromBase58String(aJ))), "unstake", [bf, ct])
563563 else az()
564564 let cw = cv._1
565565 let cx = cv._2
566566 let cy = cv._3
567567 let cz = invoke(cw, cx, cy, nil)
568568 if ((cz == cz))
569569 then ct
570570 else throw("Strict value is not equal to itself.")
571571 }
572572
573573
574574 func cA (aJ,cB,cC,bc,bb,cD,cE) = {
575575 let aT = Address(fromBase58String(aJ))
576576 let cF = 1000000
577577 let cG = getIntegerValue(aT, v)
578578 let cH = fraction(cD, cF, (cF - cG), CEILING)
579579 let cI = if ((cE == cB))
580580 then {
581581 let cJ = fraction(cH, bb, (bc - cH), CEILING)
582582 $Tuple2(cJ, cC)
583583 }
584584 else {
585585 let cJ = fraction(cH, bc, (bb - cH), CEILING)
586586 $Tuple2(cJ, cB)
587587 }
588588 let cJ = cI._1
589589 let cK = cI._2
590590 $Tuple2(cK, cJ)
591591 }
592592
593593
594594 func cL (aJ) = {
595595 let aT = addressFromStringValue(aJ)
596596 let br = addressFromStringValue(valueOrErrorMessage(getString(aT, "%s__factoryContract"), "Can't get WX factory contract addr"))
597597 let cM = value(getInteger(ar, "%s__poolFee"))
598598 let cN = value(getInteger(ar, "%s__protocolFee"))
599599 let aP = invoke(br, "getSwapFeeREADONLY", [toString(aT)], nil)
600600 if ($isInstanceOf(aP, "(Int, Int)"))
601601 then {
602602 let cO = aP
603603 $Tuple2(cO._1, cO._2)
604604 }
605605 else $Tuple2(cM, cN)
606606 }
607607
608608
609609 func cP (aJ,cB,cC,bc,bb,cD,cE) = {
610610 let cQ = cL(aJ)
611611 let cR = cQ._1
612612 let cS = cQ._2
613613 let cT = toBigInt(100000000)
614614 let cU = if ((cE == cB))
615615 then {
616616 let cJ = fraction(cD, bb, (bc - cD))
617617 $Tuple2(cJ, cC)
618618 }
619619 else {
620620 let cJ = fraction(cD, bc, (bb - cD))
621621 $Tuple2(cJ, cB)
622622 }
623623 let cJ = cU._1
624624 let cK = cU._2
625625 let cV = toInt(fraction(toBigInt(cJ), cT, (cT - toBigInt((cS + cR))), CEILING))
626626 $Tuple2(cK, cV)
627627 }
628628
629629
630630 func cW (bL,aJ,cB,cC,bc,bb,cD,cE) = {
631631 let cX = valueOrElse(getString(this, (aJ + aa)), "")
632632 if (if ((bL == a))
633633 then true
634634 else (cX != ""))
635635 then {
636636 let cY = if ((cX == ""))
637637 then $Tuple3(bc, bb, aJ)
638638 else {
639639 let cZ = aS(addressFromStringValue(cX))
640640 let da = cZ._1
641641 let db = cZ._2
642642 $Tuple3(da, db, cX)
643643 }
644644 let dc = cY._1
645645 let dd = cY._2
646646 let de = cY._3
647647 let df = cA(de, cB, cC, dc, dd, cD, cE)
648648 let cK = df._1
649649 let cJ = df._2
650650 invoke(addressFromStringValue(de), "callFunction", ["exchange", [toString(cD)]], [AttachedPayment(bu(cK), cJ)])
651651 }
652652 else if ((bL == b))
653653 then {
654654 let dg = cP(aJ, cB, cC, bc, bb, cD, cE)
655655 let cK = dg._1
656656 let cJ = dg._2
657657 invoke(ar, "swap", [cD, cE, toString(this)], [AttachedPayment(bu(cK), cJ)])
658658 }
659659 else az()
660660 }
661661
662662
663663 func dh (aT,bL,bf,di) = {
664664 let dj = if ((bL == a))
665665 then {
666666 let cz = {
667667 let aX = invoke(aT, "callFunction", ["withdrawREADONLY", [toString(di)]], nil)
668668 if ($isInstanceOf(aX, "List[Any]"))
669669 then aX
670670 else throw(($getType(aX) + " couldn't be cast to List[Any]"))
671671 }
672672 if ((cz == cz))
673673 then $Tuple2({
674674 let aX = cz[0]
675675 if ($isInstanceOf(aX, "Int"))
676676 then aX
677677 else throw(($getType(aX) + " couldn't be cast to Int"))
678678 }, {
679679 let aX = cz[1]
680680 if ($isInstanceOf(aX, "Int"))
681681 then aX
682682 else throw(($getType(aX) + " couldn't be cast to Int"))
683683 })
684684 else throw("Strict value is not equal to itself.")
685685 }
686686 else if ((bL == b))
687687 then if ((valueOrElse(getString(this, (toString(aT) + Q)), "cpmm") == d))
688688 then {
689- let cz = invoke(aT, "poolEvaluateGetREADONLY", [bf, di], nil)
689+ let cz = invoke(aT, "estimateGetOperationWrapperREADONLY", [bf, di], nil)
690690 if ((cz == cz))
691691 then {
692692 let dk = {
693693 let aP = cz
694694 if (if (if ($isInstanceOf(aP._1, "Int"))
695695 then if ($isInstanceOf(aP._2, "Int"))
696696 then if ($isInstanceOf(aP._5, "Int"))
697697 then if ($isInstanceOf(aP._6, "Int"))
698698 then if ($isInstanceOf(aP._7, "Int"))
699699 then if ($isInstanceOf(aP._8, "String"))
700700 then $isInstanceOf(aP._9, "String")
701701 else false
702702 else false
703703 else false
704704 else false
705705 else false
706706 else false)
707707 then (size(aP) == 10)
708708 else false)
709709 then {
710710 let dl = aP._1
711711 let dm = aP._2
712712 let dn = aP._5
713713 let do = aP._6
714714 let dp = aP._7
715715 let dq = aP._8
716716 let dr = aP._9
717717 $Tuple7(dl, dm, dn, do, dp, dq, dr)
718718 }
719719 else throw("Couldn't cast types")
720720 }
721721 let dl = dk._1
722722 let dm = dk._2
723723 let dn = dk._3
724724 let do = dk._4
725725 let dp = dk._5
726726 let dq = dk._6
727727 let dr = dk._7
728728 $Tuple2(dl, dm)
729729 }
730730 else throw("Strict value is not equal to itself.")
731731 }
732732 else {
733733 let cz = split({
734734 let aX = invoke(aT, "evaluateGetREADONLY", [bf, di], nil)
735735 if ($isInstanceOf(aX, "String"))
736736 then aX
737737 else throw(($getType(aX) + " couldn't be cast to String"))
738738 }, "__")
739739 if ((cz == cz))
740740 then $Tuple2(parseIntValue(cz[1]), parseIntValue(cz[2]))
741741 else throw("Strict value is not equal to itself.")
742742 }
743743 else az()
744744 let ds = dj._1
745745 let dt = dj._2
746746 $Tuple2(ds, dt)
747747 }
748748
749749
750750 func du (bL,aJ) = if ((bL == a))
751751 then {
752752 let dv = aN(as)
753753 if ((dv == dv))
754754 then {
755755 let cz = invoke(bp(), "claim", [aJ], nil)
756756 if ((cz == cz))
757757 then {
758758 let dw = aN(as)
759759 $Tuple2((dw - dv), as)
760760 }
761761 else throw("Strict value is not equal to itself.")
762762 }
763763 else throw("Strict value is not equal to itself.")
764764 }
765765 else if ((bL == b))
766766 then {
767767 let dx = bd(addressFromStringValue(aJ))
768768 let aV = dx._1
769769 let aW = dx._2
770770 let dy = dx._3
771771 let dz = dx._4
772772 let dA = dx._5
773773 let dv = aN(at)
774774 if ((dv == dv))
775775 then {
776776 let cz = invoke(bq(addressFromStringValue(aJ)), "claimWx", [dA], nil)
777777 if ((cz == cz))
778778 then {
779779 let dw = aN(at)
780780 $Tuple2((dw - dv), at)
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else throw("Strict value is not equal to itself.")
785785 }
786786 else az()
787787
788788
789789 func dB (bL,aJ,bo,ce,aV,cf,aW,bc,bb,dC) = {
790790 let dD = aN(fromBase58String(dC))
791791 if ((dD == dD))
792792 then {
793793 let aT = addressFromStringValue(aJ)
794794 let dE = if (if ((ce > 0))
795795 then (cf > 0)
796796 else false)
797797 then {
798798 let dF = cd(bL, aT, ce, aV, cf, aW, bc, bb)
799799 let dG = dF._1
800800 let dH = dF._2
801801 let dI = dF._3
802802 let dJ = dF._4
803803 let cz = cn(aT, bL, dG, aV, dH, aW)
804804 if ((cz == cz))
805805 then $Tuple2(dI, dJ)
806806 else throw("Strict value is not equal to itself.")
807807 }
808808 else if ((ce > 0))
809809 then $Tuple2(ce, aV)
810810 else if ((cf > 0))
811811 then $Tuple2(cf, aW)
812812 else throw("pmts must be > 0")
813813 let dI = dE._1
814814 let dJ = dE._2
815815 let cz = if ((dI > 0))
816816 then cp(aT, bL, dI, dJ)
817817 else nil
818818 if ((cz == cz))
819819 then {
820820 let dK = aN(fromBase58String(dC))
821821 let dL = (dK - dD)
822822 let dM = fraction(dL, bn(aJ, bo), o)
823823 let dN = (dL - dM)
824824 if ((0 >= dN))
825825 then throw("amount of staked sharetokens must be > 0")
826826 else {
827827 let dO = cs(aJ, bL, dC, dN)
828828 if ((dO == dO))
829829 then $Tuple2(dN, dM)
830830 else throw("Strict value is not equal to itself.")
831831 }
832832 }
833833 else throw("Strict value is not equal to itself.")
834834 }
835835 else throw("Strict value is not equal to itself.")
836836 }
837837
838838
839839 func dP (aJ,bm,dQ,dM,dR,bf,aK,dS) = {
840840 let dT = bj(aJ)
841841 let dU = bk(aJ)
842842 let dV = if (dS)
843843 then $Tuple2(getIntegerValue(this, (aJ + E)), (dU + dQ))
844844 else $Tuple2(getIntegerValue(this, (aJ + F)), dU)
845845 let dW = dV._1
846846 let dX = dV._2
847847 [IntegerEntry((aJ + C), (dT + dQ)), IntegerEntry((aJ + D), dX), IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dR)) + w), dQ), IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dR)) + B), dW), StringEntry((((bm + "_") + toString(dR)) + x), aJ), IntegerEntry((bm + A), dR), ScriptTransfer(ao, dM, fromBase58String(bf))]
848848 }
849849
850850
851851 func dY (bB,dZ) = (bB :+ parseIntValue(dZ))
852852
853853
854854 func ea (eb,ec) = {
855855 let ed = addressFromStringValue(eb[1])
856856 let ee = split(eb[2], "|")
857857 let ef = aN(bu(ec))
858858 if ((ef == ef))
859859 then {
860860 let cm = [AttachedPayment(bu(ee[0]), parseIntValue(ee[1]))]
861861 let eg = eb[3]
862862 let cz = invoke(ed, "callFunction", ["exchange", [eg]], cm)
863863 if ((cz == cz))
864864 then (aN(bu(ec)) - ef)
865865 else throw("Strict value is not equal to itself.")
866866 }
867867 else throw("Strict value is not equal to itself.")
868868 }
869869
870870
871871 func eh (eb,ec) = {
872872 let ed = addressFromStringValue(eb[1])
873873 let ef = aN(bu(ec))
874874 if ((ef == ef))
875875 then {
876876 let cm = {
877877 let ee = split(eb[2], "|")
878878 [AttachedPayment(fromBase58String(ee[0]), parseIntValue(ee[1]))]
879879 }
880880 let ei = {
881881 let ej = split(eb[3], "|")
882882 let ek = split(ej[0], ",")
883883 let el = split(ej[1], ",")
884884 let em = {
885885 let bD = split(ej[2], ",")
886886 let bE = size(bD)
887887 let bF = nil
888888 func bG (bH,bI) = if ((bI >= bE))
889889 then bH
890890 else dY(bH, bD[bI])
891891
892892 func bJ (bH,bI) = if ((bI >= bE))
893893 then bH
894894 else throw("List size exceeds 3")
895895
896896 bJ(bG(bG(bG(bF, 0), 1), 2), 3)
897897 }
898898 let en = {
899899 let bD = split(ej[3], ",")
900900 let bE = size(bD)
901901 let bF = nil
902902 func eo (bH,bI) = if ((bI >= bE))
903903 then bH
904904 else dY(bH, bD[bI])
905905
906906 func ep (bH,bI) = if ((bI >= bE))
907907 then bH
908908 else throw("List size exceeds 3")
909909
910910 ep(eo(eo(eo(bF, 0), 1), 2), 3)
911911 }
912912 let eq = split(ej[4], ",")
913913 let eg = parseIntValue(ej[5])
914914 [ek, el, em, en, eq, eg]
915915 }
916916 let cz = invoke(ed, "routingTrade", ei, cm)
917917 if ((cz == cz))
918918 then (aN(bu(ec)) - ef)
919919 else throw("Strict value is not equal to itself.")
920920 }
921921 else throw("Strict value is not equal to itself.")
922922 }
923923
924924
925925 func er (aJ,bL,es,et) = {
926926 let aT = Address(fromBase58String(aJ))
927927 let eu = bh(aT, bL)
928928 let ev = eu._1
929929 let ew = eu._2
930930 let bc = eu._3
931931 let bb = eu._4
932932 let bf = eu._5
933933 if (if ((es != ev))
934934 then (es != ew)
935935 else false)
936936 then throw("Wrong asset")
937937 else {
938938 let ex = bj(aJ)
939939 if ((ex == 0))
940940 then [ScriptTransfer(ao, et, fromBase58String(es))]
941941 else {
942942 let ey = bk(aJ)
943943 let ez = fraction(ey, l, ex)
944944 let eA = fraction(et, ez, l)
945945 let eB = (et - eA)
946946 let eC = fraction(eA, bn(aJ, f), o)
947947 let eD = fraction(eB, bn(aJ, e), o)
948948 let eE = (eC + eD)
949949 let eF = if ((es == ev))
950950 then $Tuple2((et - eE), 0)
951951 else $Tuple2(0, (et - eE))
952952 let ce = eF._1
953953 let cf = eF._2
954954 let eG = dB(bL, aJ, k, ce, ev, cf, ew, bc, bb, bf)
955955 let dQ = eG._1
956956 let eH = eG._2
957957 let eI = valueOrElse(getInteger(this, (aJ + E)), 0)
958958 let eJ = valueOrElse(getInteger(this, (aJ + F)), 0)
959959 let eK = fraction(dQ, ez, l)
960960 let eL = (dQ - eK)
961961 let eM = if ((ey > 0))
962962 then (eI + fraction(eK, m, ey))
963963 else 0
964964 let eN = if (((ex - ey) > 0))
965965 then (eJ + fraction(eL, m, (ex - ey)))
966966 else 0
967967 ([IntegerEntry((aJ + E), eM), IntegerEntry((aJ + F), eN), IntegerEntry((aJ + C), (ex + dQ)), IntegerEntry((aJ + D), (ey + eK)), ScriptTransfer(ao, eE, bu(es))] ++ bZ(ev, ew, bf, nil))
968968 }
969969 }
970970 }
971971
972972
973973 func eO (bm,aJ,eP,eQ) = {
974974 let eR = valueOrErrorMessage(getInteger(this, (((((aJ + "_") + bm) + "_") + eP) + w)), "Unknown position")
975975 let eS = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + eP) + B))
976976 let eT = if (eQ)
977977 then getIntegerValue(this, (aJ + E))
978978 else getIntegerValue(this, (aJ + F))
979979 (eR + fraction(eR, (eT - eS), m))
980980 }
981981
982982
983983 func eU (aJ,eV,eW,eX) = {
984984 let bo = if (eV)
985985 then h
986986 else g
987987 if (eW)
988988 then fraction(eX, bn(aJ, bo), o)
989989 else 0
990990 }
991991
992992
993993 func eY (bm,aJ,eP,eW) = {
994994 let eR = valueOrErrorMessage(getInteger(this, (((((aJ + "_") + bm) + "_") + eP) + w)), "Unknown position")
995995 let eV = (valueOrElse(getInteger(this, (((((aJ + "_") + bm) + "_") + eP) + y)), 0) > 0)
996996 let di = eO(bm, aJ, eP, eV)
997997 let eZ = bj(aJ)
998998 let fa = bk(aJ)
999999 let fb = Address(fromBase58String(bm))
10001000 let aT = Address(fromBase58String(aJ))
10011001 let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Unknown pool")
10021002 let fc = bh(aT, bL)
10031003 let fd = fc._1
10041004 let fe = fc._2
10051005 let bc = fc._3
10061006 let bb = fc._4
10071007 let bf = fc._5
10081008 let ff = $Tuple2(bu(fd), bu(fe))
10091009 let fg = ff._1
10101010 let fh = ff._2
10111011 let fi = eU(aJ, eV, eW, di)
10121012 let fj = aN(fg)
10131013 if ((fj == fj))
10141014 then {
10151015 let fk = aN(fh)
10161016 if ((fk == fk))
10171017 then {
10181018 let cz = if ((bL == a))
10191019 then {
10201020 let cz = cu(aJ, bL, bf, fi)
10211021 if ((cz == cz))
10221022 then invoke(aT, "callFunction", ["withdraw", [toString(di)]], nil)
10231023 else throw("Strict value is not equal to itself.")
10241024 }
10251025 else if ((bL == b))
10261026 then {
10271027 let cz = cu(aJ, bL, bf, (di + fi))
10281028 if ((cz == cz))
10291029 then invoke(aT, "get", nil, [AttachedPayment(bu(bf), di)])
10301030 else throw("Strict value is not equal to itself.")
10311031 }
10321032 else az()
10331033 if ((cz == cz))
10341034 then {
10351035 let fl = aN(fg)
10361036 if ((fl == fl))
10371037 then {
10381038 let fm = aN(fh)
10391039 if ((fm == fm))
10401040 then {
10411041 let fn = $Tuple2((fl - fj), (fm - fk))
10421042 let fo = fn._1
10431043 let fp = fn._2
10441044 let fq = if (eV)
10451045 then {
10461046 let fr = getStringValue(this, (((((aJ + "_") + bm) + "_") + eP) + z))
10471047 let fs = {
10481048 let aX = invoke(aA(), "getAssetDebt", [false, ((bm + "_") + eP), fr], nil)
10491049 if ($isInstanceOf(aX, "Int"))
10501050 then aX
10511051 else throw(($getType(aX) + " couldn't be cast to Int"))
10521052 }
10531053 if ((fs == fs))
10541054 then {
10551055 let ft = if (if ((fr == fd))
10561056 then (fs > fo)
10571057 else false)
10581058 then (fs - fo)
10591059 else if (if ((fr == fe))
10601060 then (fs > fp)
10611061 else false)
10621062 then (fs - fp)
10631063 else 0
10641064 let fu = if ((ft > 0))
10651065 then cW(bL, aJ, fd, fe, (bc - fo), (bb - fp), ft, fr)
10661066 else nil
10671067 if ((fu == fu))
10681068 then {
10691069 let fv = aN(fg)
10701070 if ((fv == fv))
10711071 then {
10721072 let fw = aN(fh)
10731073 if ((fw == fw))
10741074 then {
10751075 let fx = if ((fs > 0))
10761076 then invoke(aA(), "repayFor", [((bm + "_") + eP)], [AttachedPayment(bu(fr), fs)])
10771077 else 0
10781078 if ((fx == fx))
10791079 then if ((fr == fd))
10801080 then $Tuple2(((fv - fj) - fs), (fw - fk))
10811081 else $Tuple2((fv - fj), ((fw - fk) - fs))
10821082 else throw("Strict value is not equal to itself.")
10831083 }
10841084 else throw("Strict value is not equal to itself.")
10851085 }
10861086 else throw("Strict value is not equal to itself.")
10871087 }
10881088 else throw("Strict value is not equal to itself.")
10891089 }
10901090 else throw("Strict value is not equal to itself.")
10911091 }
10921092 else $Tuple2(fo, fp)
10931093 let fy = fq._1
10941094 let fz = fq._2
10951095 let fA = if (eV)
10961096 then [IntegerEntry((aJ + D), ((fa - di) - fi))]
10971097 else nil
10981098 let fB = (([DeleteEntry((((((aJ + "_") + bm) + "_") + eP) + w)), DeleteEntry((((bm + "_") + eP) + x)), DeleteEntry((((((aJ + "_") + bm) + "_") + eP) + y)), DeleteEntry((((((aJ + "_") + bm) + "_") + eP) + z)), DeleteEntry((((((aJ + "_") + bm) + "_") + eP) + B)), IntegerEntry((aJ + C), ((eZ - di) - fi)), ScriptTransfer(fb, fy, fg), ScriptTransfer(fb, fz, fh), ScriptTransfer(ao, fi, fromBase58String(bf))] ++ fA) ++ bZ(fd, fe, bf, nil))
10991099 $Tuple2(fB, [fy, fz])
11001100 }
11011101 else throw("Strict value is not equal to itself.")
11021102 }
11031103 else throw("Strict value is not equal to itself.")
11041104 }
11051105 else throw("Strict value is not equal to itself.")
11061106 }
11071107 else throw("Strict value is not equal to itself.")
11081108 }
11091109 else throw("Strict value is not equal to itself.")
11101110 }
11111111
11121112
11131113 func fC (fD) = {
11141114 let fE = split(valueOrErrorMessage(getString(this, (fD + N)), ("No request with id " + fD)), ",")
11151115 let bm = fE[0]
11161116 let aJ = fE[1]
11171117 let ce = parseIntValue(fE[2])
11181118 let ev = fE[3]
11191119 let cf = parseIntValue(fE[4])
11201120 let ew = fE[5]
11211121 let bc = parseIntValue(fE[6])
11221122 let bb = parseIntValue(fE[7])
11231123 let bf = fE[8]
11241124 let fF = fE[9]
11251125 let fG = parseIntValue(fE[10])
11261126 $Tuple11(bm, aJ, ce, ev, cf, ew, bc, bb, bf, fF, fG)
11271127 }
11281128
11291129
11301130 func fH (ce,cf,aV,aW,fI,fJ) = if (if ((fJ != aV))
11311131 then (fJ != aW)
11321132 else false)
11331133 then throw("Wrong borrow asset")
11341134 else {
11351135 let bQ = getIntegerValue(aq, (aV + U))
11361136 let bR = getIntegerValue(aq, (aW + U))
11371137 let fK = pow(10, 0, bv(aV), 0, 0, DOWN)
11381138 let fL = pow(10, 0, bv(aW), 0, 0, DOWN)
11391139 let fM = (fraction(bQ, ce, fK) + fraction(bR, cf, fL))
11401140 let fN = if ((fJ == aV))
11411141 then $Tuple2(bQ, fK)
11421142 else $Tuple2(bR, fL)
11431143 let fO = fN._1
11441144 let fP = fN._2
11451145 fraction(fraction(fM, (fI - 100), 100), fP, fO)
11461146 }
11471147
11481148
11491149 func fQ (fR,ev,ew) = if ((size(fR) == 2))
11501150 then if ((bt(fR[0].assetId) != ev))
11511151 then throw("Wrong payment asset A")
11521152 else if ((bt(fR[1].assetId) != ew))
11531153 then throw("Wrong payment asset B")
11541154 else $Tuple2(fR[0].amount, fR[1].amount)
11551155 else if ((size(fR) == 1))
11561156 then if ((bt(fR[0].assetId) == ev))
11571157 then $Tuple2(fR[0].amount, 0)
11581158 else if ((bt(fR[0].assetId) == ew))
11591159 then $Tuple2(0, fR[0].amount)
11601160 else throw("Wrong payment")
11611161 else throw("One or two payments expected")
11621162
11631163
11641164 func fS (bc,bb,fT,fU) = {
11651165 let fV = ((l - fraction(fraction(bb, l, bc), l, fraction(fU, l, fT))) * 100)
11661166 if ((0 > fV))
11671167 then (fV * -1)
11681168 else fV
11691169 }
11701170
11711171
11721172 func fW (aJ,bL,fX,ct,dI) = {
11731173 let fY = if (fX)
11741174 then du(bL, aJ)
11751175 else {
11761176 let fZ = if ((bL == a))
11771177 then as
11781178 else if ((bL == b))
11791179 then at
11801180 else az()
11811181 $Tuple2(ct, fZ)
11821182 }
11831183 if ((fY == fY))
11841184 then {
11851185 let ga = fY._2
11861186 let gb = fY._1
11871187 let gc = aN(ga)
11881188 if ((gc == gc))
11891189 then if ((ct > gc))
11901190 then throw("To big amount to exchange")
11911191 else $Tuple2(gb, ga)
11921192 else throw("Strict value is not equal to itself.")
11931193 }
11941194 else throw("Strict value is not equal to itself.")
11951195 }
11961196
11971197
11981198 @Callable(aC)
11991199 func getPoolInfoREADONLY (aJ) = {
12001200 let aT = addressFromStringValue(aJ)
12011201 let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
12021202 let gd = bh(Address(fromBase58String(aJ)), bL)
12031203 let ev = gd._1
12041204 let ew = gd._2
12051205 let bc = gd._3
12061206 let bb = gd._4
12071207 let bf = gd._5
12081208 let bS = bi(aT, bL, bf)
12091209 $Tuple2(nil, $Tuple6(ev, ew, bf, bc, bb, bS))
12101210 }
12111211
12121212
12131213
12141214 @Callable(aC)
12151215 func getShareAssetPriceREADONLY (bf) = {
12161216 let ge = bK(bf)
12171217 $Tuple2(nil, ge)
12181218 }
12191219
12201220
12211221
12221222 @Callable(aC)
12231223 func getUserPositionShareAmountREADONLY (bm,dR) = {
12241224 let aJ = valueOrErrorMessage(getString(this, (((bm + "_") + dR) + x)), "Unknown position")
12251225 let gf = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + dR) + y))
12261226 let di = eO(bm, aJ, dR, (gf > 0))
12271227 $Tuple2(nil, di)
12281228 }
12291229
12301230
12311231
12321232 @Callable(aC)
12331233 func getUserPositionREADONLY (bm,gg,dR) = {
12341234 func gh (bB,aJ) = {
12351235 let gi = bB
12361236 let gj = gi._1
12371237 let gk = gi._2
12381238 let gl = gi._3
12391239 let gm = gi._4
12401240 let gn = gi._5
12411241 let go = gi._6
12421242 if (!(isDefined(getInteger(this, (((((aJ + "_") + bm) + "_") + dR[go]) + w)))))
12431243 then $Tuple6((gj :+ 0), (gk :+ 0), (gl :+ 0), (gm :+ 0), (gn :+ 0), (go + 1))
12441244 else {
12451245 let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
12461246 let gp = bh(Address(fromBase58String(aJ)), bL)
12471247 let ev = gp._1
12481248 let ew = gp._2
12491249 let bc = gp._3
12501250 let bb = gp._4
12511251 let bf = gp._5
12521252 let gf = valueOrElse(getInteger(this, (((((aJ + "_") + bm) + "_") + dR[go]) + y)), 0)
12531253 let di = eO(bm, aJ, dR[go], (gf > 0))
12541254 let gq = dh(Address(fromBase58String(aJ)), bL, bf, di)
12551255 let gr = gq._1
12561256 let gs = gq._2
12571257 if ((gf > 0))
12581258 then {
12591259 let fr = getStringValue(this, (((((aJ + "_") + bm) + "_") + dR[go]) + z))
12601260 let fs = {
12611261 let aX = invoke(aA(), "getAssetDebt", [false, ((bm + "_") + dR[go]), fr], nil)
12621262 if ($isInstanceOf(aX, "Int"))
12631263 then aX
12641264 else throw(($getType(aX) + " couldn't be cast to Int"))
12651265 }
12661266 if ((fs == fs))
12671267 then {
12681268 let ft = if (if ((fr == ev))
12691269 then (fs > gr)
12701270 else false)
12711271 then (fs - gr)
12721272 else if (if ((fr == ew))
12731273 then (fs > gs)
12741274 else false)
12751275 then (fs - gs)
12761276 else 0
12771277 let cJ = if ((ft > 0))
12781278 then if ((bL == a))
12791279 then {
12801280 let gt = cA(aJ, ev, ew, bc, bb, ft, fr)
12811281 gt._2
12821282 }
12831283 else if ((bL == b))
12841284 then {
12851285 let gt = cP(aJ, ev, ew, bc, bb, ft, fr)
12861286 gt._2
12871287 }
12881288 else az()
12891289 else 0
12901290 let gu = if ((fr == ev))
12911291 then $Tuple2(((gr + ft) - fs), (gs - cJ))
12921292 else $Tuple2((gr - cJ), ((gs + ft) - fs))
12931293 let gv = gu._1
12941294 let gw = gu._2
12951295 $Tuple6((gj :+ gr), (gk :+ gs), (gl :+ fs), (gm :+ gv), (gn :+ gw), (go + 1))
12961296 }
12971297 else throw("Strict value is not equal to itself.")
12981298 }
12991299 else $Tuple6((gj :+ gr), (gk :+ gs), gl, (gj :+ gr), (gk :+ gs), (go + 1))
13001300 }
13011301 }
13021302
13031303 let gx = {
13041304 let bD = gg
13051305 let bE = size(bD)
13061306 let bF = $Tuple6(nil, nil, nil, nil, nil, 0)
13071307 func bG (bH,bI) = if ((bI >= bE))
13081308 then bH
13091309 else gh(bH, bD[bI])
13101310
13111311 func bJ (bH,bI) = if ((bI >= bE))
13121312 then bH
13131313 else throw("List size exceeds 20")
13141314
13151315 bJ(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bG(bF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
13161316 }
13171317 let gj = gx._1
13181318 let gk = gx._2
13191319 let gl = gx._3
13201320 let gm = gx._4
13211321 let gn = gx._5
13221322 $Tuple2(nil, $Tuple5(gj, gk, gl, gm, gn))
13231323 }
13241324
13251325
13261326
13271327 @Callable(aC)
13281328 func replenish (aJ,fI,fJ) = valueOrElse(aH(), {
13291329 let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
13301330 if (!(aI(aJ, bL)))
13311331 then throw("Pool not active at this moment")
13321332 else if (if ((100 > fI))
13331333 then true
13341334 else (fI > 300))
13351335 then throw("Leverage can't be <100 and >300")
13361336 else if (if (!(getBooleanValue(this, (aJ + G))))
13371337 then (fI > 100)
13381338 else false)
13391339 then throw("You can't borrow in this pool")
13401340 else {
13411341 let gy = bh(Address(fromBase58String(aJ)), bL)
13421342 let ev = gy._1
13431343 let ew = gy._2
13441344 let bc = gy._3
13451345 let bb = gy._4
13461346 let bf = gy._5
13471347 if (if ((fJ != ev))
13481348 then (fJ != ew)
13491349 else false)
13501350 then throw("Wrong borrow asset")
13511351 else {
13521352 let gz = fQ(aC.payments, ev, ew)
13531353 let ce = gz._1
13541354 let cf = gz._2
13551355 let bm = toString(aC.caller)
13561356 let gA = bl(bm)
13571357 if ((fI > 100))
13581358 then {
13591359 let gf = fH(ce, cf, ev, ew, fI, fJ)
13601360 let fE = makeString([bm, aJ, toString(ce), ev, toString(cf), ew, toString(bc), toString(bb), bf, fJ, toString(gf)], ",")
13611361 let gB = {
13621362 let aX = invoke(this, "createNewRequest", [fE], nil)
13631363 if ($isInstanceOf(aX, "Int"))
13641364 then aX
13651365 else throw(($getType(aX) + " couldn't be cast to Int"))
13661366 }
13671367 if ((gB == gB))
13681368 then {
13691369 let ei = [((bm + "_") + toString(gA)), bf, fJ, gf, toString(this), "replenishFromLand", toString(valueOrErrorMessage(gB, "Can't create new request"))]
13701370 let cz = reentrantInvoke(aA(), "flashPosition", ei, nil)
13711371 if ((cz == cz))
13721372 then {
13731373 let gC = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + toString(gA)) + w))
13741374 let gD = aY(Address(fromBase58String(aJ)), bL, ev, ew)
13751375 if ((gD == gD))
13761376 then {
13771377 let fU = gD._2
13781378 let fT = gD._1
13791379 let gE = fS(bc, bb, fT, fU)
13801380 let gF = dh(Address(fromBase58String(aJ)), bL, bf, gC)
13811381 let gr = gF._1
13821382 let gs = gF._2
13831383 $Tuple2(nil, [gE, gr, gs])
13841384 }
13851385 else throw("Strict value is not equal to itself.")
13861386 }
13871387 else throw("Strict value is not equal to itself.")
13881388 }
13891389 else throw("Strict value is not equal to itself.")
13901390 }
13911391 else {
13921392 let gG = dB(bL, aJ, j, ce, ev, cf, ew, bc, bb, bf)
13931393 if ((gG == gG))
13941394 then {
13951395 let eE = gG._2
13961396 let gC = gG._1
13971397 let gH = aY(Address(fromBase58String(aJ)), bL, ev, ew)
13981398 if ((gH == gH))
13991399 then {
14001400 let fU = gH._2
14011401 let fT = gH._1
14021402 let gE = fS(bc, bb, fT, fU)
14031403 let gI = dh(Address(fromBase58String(aJ)), bL, bf, gC)
14041404 let gr = gI._1
14051405 let gs = gI._2
14061406 $Tuple2((dP(aJ, bm, gC, eE, gA, bf, bL, false) ++ bZ(ev, ew, bf, [toString(gr), toString(gs)])), [gE, gr, gs])
14071407 }
14081408 else throw("Strict value is not equal to itself.")
14091409 }
14101410 else throw("Strict value is not equal to itself.")
14111411 }
14121412 }
14131413 }
14141414 })
14151415
14161416
14171417
14181418 @Callable(aC)
14191419 func withdraw (aJ,eP) = valueOrElse(aH(), {
14201420 let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
14211421 if (!(aI(aJ, bL)))
14221422 then throw("Pool not active at this moment")
14231423 else eY(toString(aC.caller), aJ, toString(eP), false)
14241424 })
14251425
14261426
14271427
14281428 @Callable(aC)
14291429 func createUpdateStopLoss (eP,gJ,aO,gK) = valueOrElse(aH(), {
14301430 let gL = getIntegerValue(aq, (aO + U))
14311431 let bL = valueOrErrorMessage(getString(this, (P + gJ)), "Pool is not inited")
14321432 if (!(aI(gJ, bL)))
14331433 then throw("Pool not active at this moment")
14341434 else if (!(isDefined(getInteger(this, (((((gJ + "_") + toString(aC.caller)) + "_") + toString(eP)) + w)))))
14351435 then throw("There are no user position")
14361436 else if ((0 >= gK))
14371437 then throw("Price must be greater than 0")
14381438 else if ((gK > gL))
14391439 then throw("Price must be less than current token price")
14401440 else [IntegerEntry((((((((toString(aC.caller) + "_") + toString(eP)) + "_") + gJ) + "_") + aO) + Z), gK)]
14411441 })
14421442
14431443
14441444
14451445 @Callable(aC)
14461446 func deleteStopLoss (eP,gJ,aO) = valueOrElse(aH(), {
14471447 let bL = valueOrErrorMessage(getString(this, (P + gJ)), "Pool is not inited")
14481448 if (!(aI(gJ, bL)))
14491449 then throw("Pool not active at this moment")
14501450 else if (!(isDefined(getInteger(this, (((((((toString(aC.caller) + "_") + toString(eP)) + "_") + gJ) + "_") + aO) + Z)))))
14511451 then throw("No entry")
14521452 else [DeleteEntry((((((((toString(aC.caller) + "_") + toString(eP)) + "_") + gJ) + "_") + aO) + Z))]
14531453 })
14541454
14551455
14561456
14571457 @Callable(aC)
14581458 func init (gM,gN,gO,aq,gP,ar,gQ,gR,gS,gT,gU,gV,gW) = valueOrElse(aE(aC), if (isDefined(getString(ae)))
14591459 then throw("Already inited")
14601460 else if (!(isDefined(addressFromString(gM))))
14611461 then throw("moneyBoxAddr is not correct address")
14621462 else if (!(isDefined(addressFromString(gN))))
14631463 then throw("sfFarmingAddr is not correct address")
14641464 else if (!(isDefined(addressFromString(gO))))
14651465 then throw("lendAddr is not correct address")
14661466 else if (!(isDefined(addressFromString(aq))))
14671467 then throw("priceOracleAddr is not correct address")
14681468 else if (!(isDefined(addressFromString(gP))))
14691469 then throw("keeperExContract is not correct address")
14701470 else if (!(isDefined(assetInfo(fromBase58String(gQ)))))
14711471 then throw("swopAssetId is not correct asset id")
14721472 else if (!(isDefined(assetInfo(fromBase58String(gR)))))
14731473 then throw("swopAssetId is not correct asset id")
14741474 else if ((size(fromBase58String(gS)) != 32))
14751475 then throw("operatorPubKey is not correct")
14761476 else if ((size(fromBase58String(gT)) != 32))
14771477 then throw("group1Admin1PubKey is not correct")
14781478 else if ((size(fromBase58String(gU)) != 32))
14791479 then throw("group1Admin2PubKey is not correct")
14801480 else if ((size(fromBase58String(gV)) != 32))
14811481 then throw("group2Admin1PubKey is not correct")
14821482 else if ((size(fromBase58String(gW)) != 32))
14831483 then throw("group2Admin2PubKey is not correct")
14841484 else [StringEntry(ab, gM), StringEntry(ac, gN), StringEntry(ad, gO), StringEntry(af, aq), StringEntry(ag, gP), StringEntry(ah, ar), StringEntry(ai, gQ), StringEntry(aj, gR), StringEntry(ae, gS), StringEntry(ak, gT), StringEntry(al, gU), StringEntry(am, gV), StringEntry(an, gW)])
14851485
14861486
14871487
14881488 @Callable(aC)
14891489 func createNewRequest (cy) = valueOrElse(aE(aC), {
14901490 let gB = (valueOrElse(getInteger(this, O), 0) + 1)
14911491 $Tuple2([StringEntry((toString(gB) + N), cy), IntegerEntry(O, gB)], gB)
14921492 })
14931493
14941494
14951495
14961496 @Callable(aC)
14971497 func replenishFromLand (fD) = valueOrElse(aG(), valueOrElse(aF(aC), {
14981498 let gX = fC(fD)
14991499 let bm = gX._1
15001500 let aJ = gX._2
15011501 let ce = gX._3
15021502 let ev = gX._4
15031503 let cf = gX._5
15041504 let ew = gX._6
15051505 let bc = gX._7
15061506 let bb = gX._8
15071507 let bf = gX._9
15081508 let fF = gX._10
15091509 let fG = gX._11
15101510 if ((size(aC.payments) != 1))
15111511 then throw("Wrong payment size")
15121512 else if (if ((bt(aC.payments[0].assetId) != fF))
15131513 then true
15141514 else (aC.payments[0].amount != fG))
15151515 then throw("Wrong payment")
15161516 else {
15171517 let gY = if ((ev == fF))
15181518 then $Tuple2((ce + fG), cf)
15191519 else $Tuple2(ce, (cf + fG))
15201520 let gZ = gY._1
15211521 let ha = gY._2
15221522 let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Unknown pool")
15231523 let hb = dB(bL, aJ, i, gZ, ev, ha, ew, bc, bb, bf)
15241524 let gC = hb._1
15251525 let eE = hb._2
15261526 let dR = bl(bm)
15271527 let hc = [IntegerEntry((((((aJ + "_") + bm) + "_") + toString(dR)) + y), fG), StringEntry((((((aJ + "_") + bm) + "_") + toString(dR)) + z), fF)]
15281528 let fB = dP(aJ, bm, gC, eE, dR, bf, bL, true)
15291529 let hd = dh(Address(fromBase58String(aJ)), bL, bf, gC)
15301530 let gr = hd._1
15311531 let gs = hd._2
15321532 $Tuple2((((fB ++ bZ(ev, ew, bf, [toString(gr), toString(gs)])) ++ hc) :+ DeleteEntry((fD + N))), gC)
15331533 }
15341534 }))
15351535
15361536
15371537
15381538 @Callable(aC)
15391539 func liquidate (bm,eP,he) = valueOrElse(aG(), valueOrElse(aF(aC), {
15401540 let aJ = valueOrErrorMessage(getString(this, (((bm + "_") + eP) + x)), "no position")
15411541 let bL = valueOrErrorMessage(getString(this, (P + aJ)), "Pool is not inited")
15421542 let hf = bh(Address(fromBase58String(aJ)), bL)
15431543 let ev = hf._1
15441544 let ew = hf._2
15451545 let bc = hf._3
15461546 let bb = hf._4
15471547 let bf = hf._5
15481548 let ct = cu(aJ, bL, bf, he)
15491549 let gf = getIntegerValue(this, (((((aJ + "_") + bm) + "_") + eP) + y))
15501550 let fr = getStringValue(this, (((((aJ + "_") + bm) + "_") + eP) + z))
15511551 let di = eO(bm, aJ, eP, (gf > 0))
15521552 if ((he > di))
15531553 then throw("You can't liquidate more than user have")
15541554 else if ((gf == 0))
15551555 then throw("You can't liquidate position without borrow")
15561556 else [IntegerEntry((((((aJ + "_") + bm) + "_") + eP) + B), getIntegerValue(this, (aJ + E))), IntegerEntry((aJ + D), (bk(aJ) - he)), IntegerEntry((aJ + C), (bj(aJ) - he)), IntegerEntry((((((aJ + "_") + bm) + "_") + eP) + w), (di - he)), ScriptTransfer(aC.caller, ct, fromBase58String(bf))]
15571557 }))
15581558
15591559
15601560
15611561 @Callable(aC)
15621562 func stopLoss (bm,eP,aJ,aO) = valueOrElse(aG(), valueOrElse(aB(aC), {
15631563 let gL = getIntegerValue(aq, (aO + U))
15641564 let hg = valueOrErrorMessage(getInteger(this, (((((((bm + "_") + toString(eP)) + "_") + aJ) + "_") + aO) + Z)), "No entry")
15651565 if ((gL > hg))
15661566 then throw("Token price greater stop loss price")
15671567 else {
15681568 let hh = eY(bm, aJ, toString(eP), true)
15691569 $Tuple2((hh._1 :+ DeleteEntry((((((((bm + "_") + toString(eP)) + "_") + aJ) + "_") + aO) + Z))), hh._2)
15701570 }
15711571 }))
15721572
15731573
15741574
15751575 @Callable(aC)
15761576 func capitalizeEx (aJ,hi,hj,hk,fX) = valueOrElse(aG(), valueOrElse(aB(aC), {
15771577 let bL = getStringValue(this, (P + aJ))
15781578 let dI = valueOrElse(getInteger(this, (aJ + S)), 0)
15791579 let hl = fW(aJ, bL, fX, hk, dI)
15801580 if ((hl == hl))
15811581 then {
15821582 let fZ = hl._2
15831583 let hm = hl._1
15841584 let eb = split(hi, "__")
15851585 let hn = if ((eb[0] == "directSwopfiCPMM"))
15861586 then ea(eb, hj)
15871587 else if ((eb[0] == "routingSwopfi"))
15881588 then eh(eb, hj)
15891589 else throw("Wrong route")
15901590 if ((hn == hn))
15911591 then {
15921592 let ho = ((hm + dI) - hk)
15931593 let hp = if ((ho >= 0))
15941594 then [IntegerEntry((aJ + S), ho)]
15951595 else nil
15961596 (er(aJ, bL, hj, hn) ++ hp)
15971597 }
15981598 else throw("Strict value is not equal to itself.")
15991599 }
16001600 else throw("Strict value is not equal to itself.")
16011601 }))
16021602
16031603
16041604
16051605 @Callable(aC)
16061606 func capitalizeNoEx (aJ,fX,hq) = valueOrElse(aG(), valueOrElse(aB(aC), {
16071607 let bL = getStringValue(this, (P + aJ))
16081608 let hr = fW(aJ, bL, fX, hq, 0)
16091609 if ((hr == hr))
16101610 then {
16111611 let fZ = hr._2
16121612 let hm = hr._1
16131613 er(aJ, bL, bt(fZ), (hm + hq))
16141614 }
16151615 else throw("Strict value is not equal to itself.")
16161616 }))
16171617
16181618
16191619
16201620 @Callable(aC)
16211621 func initNewPool (aK,hs,aT,ht,hu,hv,hw,hx,hy,hz) = valueOrElse(aG(), valueOrElse(aD(aC), if (if ((aK != a))
16221622 then (aK != b)
16231623 else false)
16241624 then throw("Wrong type")
16251625 else if (if ((hs != c))
16261626 then (hs != d)
16271627 else false)
16281628 then throw("Wrong pool type")
16291629 else {
16301630 let hA = bh(Address(fromBase58String(aT)), aK)
16311631 let aV = hA._1
16321632 let aW = hA._2
16331633 let dy = hA._3
16341634 let dz = hA._4
16351635 let bf = hA._5
16361636 if ((0 > ht))
16371637 then throw("inFeeNoLoan must be greater than 0")
16381638 else if ((0 > hu))
16391639 then throw("inFeeLoan must be greater than 0")
16401640 else if ((0 > hv))
16411641 then throw("capFeeNoLoan must be greater than 0")
16421642 else if ((0 > hw))
16431643 then throw("capFeeWithLoan must be greater than 0")
16441644 else if ((0 > hx))
16451645 then throw("stoplossFeeNoLoan must be greater than 0")
16461646 else if ((0 > hy))
16471647 then throw("stoplossFeeWithLoan must be greater than 0")
16481648 else [IntegerEntry((aT + H), ht), IntegerEntry((aT + I), hu), IntegerEntry((aT + J), hv), IntegerEntry((aT + K), hw), IntegerEntry((aT + L), hx), IntegerEntry((aT + M), hy), IntegerEntry((aT + E), 0), IntegerEntry((aT + F), 0), StringEntry((P + aT), aK), StringEntry((aT + Q), hs), StringEntry((bf + R), aT), BooleanEntry((aT + G), hz)]
16491649 }))
16501650
16511651
16521652
16531653 @Callable(aC)
16541654 func updatePoolFees (aT,ht,hu,hv,hw,hx,hy) = valueOrElse(aG(), valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aT)))))
16551655 then throw(("Can't find pool with addr " + aT))
16561656 else if ((0 > ht))
16571657 then throw("inFeeNoLoan must be greater than 0")
16581658 else if ((0 > hu))
16591659 then throw("inFeeLoan must be greater than 0")
16601660 else if ((0 > hv))
16611661 then throw("capFeeNoLoan must be greater than 0")
16621662 else if ((0 > hw))
16631663 then throw("capFeeWithLoan must be greater than 0")
16641664 else if ((0 > hx))
16651665 then throw("stoplossFeeNoLoan must be greater than 0")
16661666 else if ((0 > hy))
16671667 then throw("stoplossFeeWithLoan must be greater than 0")
16681668 else [IntegerEntry((aT + H), ht), IntegerEntry((aT + I), hu), IntegerEntry((aT + J), hv), IntegerEntry((aT + K), hw), IntegerEntry((aT + L), hx), IntegerEntry((aT + M), hy)]))
16691669
16701670
16711671
16721672 @Callable(aC)
16731673 func activate () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, V), true))
16741674 then throw("dApp already active")
16751675 else [BooleanEntry(V, true)])
16761676
16771677
16781678
16791679 @Callable(aC)
16801680 func shutdown () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, V), true)))
16811681 then throw("dApp already shutdown")
16821682 else [BooleanEntry(V, false)])
16831683
16841684
16851685
16861686 @Callable(aC)
16871687 func activateForUsers () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, W), true))
16881688 then throw("dApp already active for users")
16891689 else [BooleanEntry(W, true)])
16901690
16911691
16921692
16931693 @Callable(aC)
16941694 func shutdownForUsers () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, W), true)))
16951695 then throw("dApp already shutdown for users")
16961696 else [BooleanEntry(W, false)])
16971697
16981698
16991699
17001700 @Callable(aC)
17011701 func activateSF () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, (a + X)), true))
17021702 then throw("SWOPFI already active")
17031703 else [BooleanEntry((a + X), true)])
17041704
17051705
17061706
17071707 @Callable(aC)
17081708 func shutdownSF () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, (a + X)), true)))
17091709 then throw("SWOPFI already shutdown")
17101710 else [BooleanEntry((a + X), false)])
17111711
17121712
17131713
17141714 @Callable(aC)
17151715 func activateWX () = valueOrElse(aD(aC), if (valueOrElse(getBoolean(this, (b + X)), true))
17161716 then throw("WX already active")
17171717 else [BooleanEntry((b + X), true)])
17181718
17191719
17201720
17211721 @Callable(aC)
17221722 func shutdownWX () = valueOrElse(aD(aC), if (!(valueOrElse(getBoolean(this, (b + X)), true)))
17231723 then throw("WX already shutdown")
17241724 else [BooleanEntry((b + X), false)])
17251725
17261726
17271727
17281728 @Callable(aC)
17291729 func activatePool (aJ) = valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aJ)))))
17301730 then throw("Unknown pool")
17311731 else if (valueOrElse(getBoolean(this, (aJ + Y)), true))
17321732 then throw("Pool already active")
17331733 else [BooleanEntry((aJ + Y), true)])
17341734
17351735
17361736
17371737 @Callable(aC)
17381738 func shutdownPool (aJ) = valueOrElse(aD(aC), if (!(isDefined(getString(this, (P + aJ)))))
17391739 then throw("Unknown pool")
17401740 else if (!(valueOrElse(getBoolean(this, (aJ + Y)), true)))
17411741 then throw("Pool already shutdown")
17421742 else [BooleanEntry((aJ + Y), false)])
17431743
17441744

github/deemru/w8io/169f3d6 
164.28 ms