IyBNYWtlZmlsZSBmb3IgVklNIG9uIFdpbjMyLCB1c2luZyAnRUdDUy9taW5ndzMyIDEuMS4yJy4KIyBJbmZvIGF0IGh0dHA6Ly93d3cubWluZ3cub3JnCiMgQWxzbyByZXF1aXJlcyAnR05VIG1ha2UgMy43NycsIHdoaWNoIHlvdSBjYW4gZ2V0IHRocm91Z2ggYSBsaW5rCiMgdG8gJ0phbkphYXAncyBwYWdlIGZyb20gdGhlIGFib3ZlIHBhZ2UuCiMgR2V0IG1pc3NpbmcgbGlicmFyaWVzIGZyb20gaHR0cDovL2dudXdpbjMyLnNmLm5ldC4KIwojIFRlc3RlZCBvbiBXaW4zMiBOVCA0IGFuZCBXaW45NS4KIwojIFRvIG1ha2UgZXZlcnl0aGluZywganVzdCAnbWFrZSAtZiBNYWtlX21pbmcubWFrJwojIFRvIG1ha2UganVzdCBlLmcuIGd2aW0uZXhlLCAnbWFrZSAtZiBNYWtlX21pbmcubWFrIGd2aW0uZXhlJwojIEFmdGVyIGEgcnVuLCB5b3UgY2FuICdtYWtlIC1mIE1ha2VfbWluZy5tYWsgY2xlYW4nIHRvIGNsZWFuIHVwCiMKIyBOT1RFOiBTb21ldGltZXMgJ0dOVSBNYWtlJyB3aWxsIHN0b3AgYWZ0ZXIgYnVpbGRpbmcgdmltcnVuLmV4ZSAtLSBJIHRoaW5rCiMgaXQncyBqdXN0IHJ1biBvdXQgb2YgbWVtb3J5IG9yIHNvbWV0aGluZy4gIFJ1biBhZ2FpbiwgYW5kIGl0IHdpbGwgY29udGludWUKIyB3aXRoICd4eGQnLgojCiMgIm1ha2UgdXB4IiBtYWtlcyAqY29tcHJlc3NlZCogdmVyc2lvbnMgb2YgdGhlIEdVSSBhbmQgY29uc29sZSBFWEVzLCB1c2luZyB0aGUKIyBleGNlbGxlbnQgVVBYIGNvbXByZXNzb3I6CiMgICAgIGh0dHA6Ly91cHguc291cmNlZm9yZ2UubmV0LwojCiMgTWFpbnRhaW5lZCBieSBSb24gQWFyb24gPHJvbmFoYXJvbkB5YWhvby5jb20+CiMgdXBkYXRlZCAyMDAzIEphbiAyMAoKIz4+Pj4+IGNob29zZSBvcHRpb25zOgojIHNldCB0byB5ZXMgZm9yIGEgZGVidWcgYnVpbGQKREVCVUc9bm8KIyBzZXQgdG8gU0laRSBmb3Igc2l6ZSwgU1BFRUQgZm9yIHNwZWVkLCBNQVhTUEVFRCBmb3IgbWF4aW11bSBvcHRpbWl6YXRpb24KT1BUSU1JWkU9TUFYU1BFRUQKIyBzZXQgdG8geWVzIHRvIG1ha2UgZ3ZpbSwgbm8gZm9yIHZpbQpHVUk9eWVzCiMgRkVBVFVSRVM9W1RJTlkgfCBTTUFMTCAgfCBOT1JNQUwgfCBCSUcgfCBIVUdFXQojIHNldCB0byBUSU5ZIHRvIG1ha2UgbWluaW1hbCB2ZXJzaW9uIChmZXcgZmVhdHVyZXMpCkZFQVRVUkVTPUJJRwojIHNldCB0byBvbmUgb2YgaTM4NiwgaTQ4NiwgaTU4NiwgaTY4NiBhcyB0aGUgbWluaW11bSB0YXJnZXQgcHJvY2Vzc29yCkFSQ0g9aTM4NgojIHNldCB0byB5ZXMgdG8gY3Jvc3MtY29tcGlsZSBmcm9tIHVuaXg7IG5vPW5hdGl2ZSBXaW5kb3dzCkNST1NTPW5vCiMgc2V0IHRvIHBhdGggdG8gaWNvbnYuaCBhbmQgbGliaWNvbnYuYSB0byBlbmFibGUgdXNpbmcgJ2ljb252LmRsbCcKI0lDT05WPSIuIgpJQ09OVj15ZXMKR0VUVEVYVD15ZXMKIyBzZXQgdG8geWVzIHRvIGluY2x1ZGUgbXVsdGlieXRlIHN1cHBvcnQKTUJZVEU9eWVzCiMgc2V0IHRvIHllcyB0byBpbmNsdWRlIElNRSBzdXBwb3J0CklNRT15ZXMKRFlOQU1JQ19JTUU9eWVzCiMgc2V0IHRvIHllcyB0byBlbmFibGUgd3JpdGluZyBhIHBvc3RzY3JpcHQgZmlsZSB3aXRoIDpoYXJkY29weQpQT1NUU0NSSVBUPW5vCiMgc2V0IHRvIHllcyB0byBlbmFibGUgT0xFIHN1cHBvcnQKT0xFPW5vCiMgU2V0IHRoZSBkZWZhdWx0ICQoV0lOVkVSKSB0byBtYWtlIGl0IHdvcmsgd2l0aCBwcmUtV2luMmsKV0lOVkVSID0gMHgwNDAwCiMgU2V0IHRvIHllcyB0byBlbmFibGUgQ3Njb3BlIHN1cHBvcnQKQ1NDT1BFPXllcwojIFNldCB0byB5ZXMgdG8gZW5hYmxlIE5ldGJlYW5zIHN1cHBvcnQKTkVUQkVBTlM9JChHVUkpCgoKIyBJZiB0aGUgdXNlciBkb2Vzbid0IHdhbnQgZ2V0dGV4dCwgdW5kZWZpbmUgaXQuCmlmZXEgKG5vLCAkKEdFVFRFWFQpKQpHRVRURVhUPQplbmRpZgojIEFkZGVkIGJ5IEUuRi4gQW1hdHJpYSA8ZWZlcm5hMUBwbGF0ZWEucHRpYy5tZWMuZXM+IDIwMDEgRmViIDIzCiMgVW5jb21tZW50IHRoZSBmaXJzdCBsaW5lIGFuZCBvbmUgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBpZiB5b3Ugd2FudCBOYXRpdmUgTGFuZ3VhZ2UKIyBTdXBwb3J0LiAgWW91J2xsIG5lZWQgZ251X2dldHRleHQud2luMzIsIGEgTUlOR1czMiBXaW5kb3dzIFBPUlQgb2YgZ2V0dGV4dCBieQojIEZyYW5jbyBCZXogPGZyYW5jby5iZXpAZ214LmRlPi4gIEl0IG1heSBiZSBmb3VuZCBhdAojIGh0dHA6Ly9ob21lLmEtY2l0eS5kZS9mcmFuY28uYmV6L2dldHRleHQvZ2V0dGV4dF93aW4zMl9lbi5odG1sCiMgVGVzdGVkIHdpdGggbWluZ3czMiB3aXRoIEdDQy0yLjk1LjIgb24gV2luOTgKIyBVcGRhdGVkIDIwMDEgSnVuIDkKI0dFVFRFWFQ9YzovZ2V0dGV4dC53aW4zMi5tc3ZjcnQKI1NUQVRJQ19HRVRURVhUPVVTRV9TVEFUSUNfR0VUVEVYVAojRFlOQU1JQ19HRVRURVhUPVVTRV9HRVRURVhUX0RMTAojRFlOQU1JQ19HRVRURVhUPVVTRV9TQUZFX0dFVFRFWFRfRExMClNBRkVfR0VUVEVYVF9ETExfT0JKID0gJChHRVRURVhUKS9zcmMvc2FmZV9nZXR0ZXh0X2RsbC9zYWZlX2dldHRleHRfZGxsLm8KIyBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgdW5jb21tZW50IHRoZSB0d28gZm9sbG93aW5nIGxpbmVzLCB5b3UgZ2V0IGEgInNhZmUiIHZlcnNpb24KIyB3aXRob3V0IGxpbmtpbmcgdGhlIHNhZmVfZ2V0dGV4dF9kbGwubyBvYmplY3QgZmlsZS4KI0RZTkFNSUNfR0VUVEVYVD1EWU5BTUlDX0dFVFRFWFQKI0dFVFRFWFRfRFlOQU1JQz1nbnVfZ2V0dGV4dC5kbGwKSU5UTFBBVEg9JChHRVRURVhUKS9saWIvbWluZ3czMgpJTlRMTElCPWdudV9nZXR0ZXh0CgojIElmIHlvdSBhcmUgdXNpbmcgZ2V0dGV4dC0wLjEwLjM1IGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nZXR0ZXh0CiMgb3IgZ2V0dGV4dC0wLjEwLjM3IGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9taW5nd3JlcC8KIyB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZywgYnV0IEkgY2FuJ3QgYnVpbGQgYSBzdGF0aWMgdmVyc2nzbiB3aXRoIHRoZW0sID8tKHwKI0dFVFRFWFQ9YzovZ2V0dGV4dC0wLjEwLjM3LTIwMDEwNDMwCiNTVEFUSUNfR0VUVEVYVD1VU0VfU1RBVElDX0dFVFRFWFQKI0RZTkFNSUNfR0VUVEVYVD1EWU5BTUlDX0dFVFRFWFQKI0lOVExQQVRIPSQoR0VUVEVYVCkvbGliCiNJTlRMTElCPWludGwKCiMgdW5jb21tZW50ICdQRVJMJyBpZiB5b3Ugd2FudCBhIHBlcmwtZW5hYmxlZCB2ZXJzaW9uCiNQRVJMPUM6L3BlcmwKaWZkZWYgUEVSTAppZm5kZWYgUEVSTF9WRVIKUEVSTF9WRVI9NTYKZW5kaWYKaWZuZGVmIERZTkFNSUNfUEVSTApEWU5BTUlDX1BFUkw9eWVzCmVuZGlmCiMgb24gTGludXgsIGZvciBjcm9zcy1jb21waWxlLCBpdCdzIGhlcmU6CiNQRVJMTElCPS9ob21lL3Jvbi9BY3RpdmVQZXJsL2xpYgojIG9uIE5ULCBpdCdzIGhlcmU6ClBFUkxMSUI9JChQRVJMKS9saWIKUEVSTExJQlM9JChQRVJMTElCKS9Db3JlCmVuZGlmCgojIHVuY29tbWVudCAnTVpTQ0hFTUUnIGlmIHlvdSB3YW50IGEgTXpTY2hlbWUtZW5hYmxlZCB2ZXJzaW9uCiNNWlNDSEVNRT1kOi9wbHQKaWZkZWYgTVpTQ0hFTUUKaWZuZGVmIERZTkFNSUNfTVpTQ0hFTUUKRFlOQU1JQ19NWlNDSEVNRT15ZXMKZW5kaWYKCmlmbmRlZiBNWlNDSEVNRV9WRVIKTVpTQ0hFTUVfVkVSPTIwNV8wMDAKZW5kaWYKCmlmbmRlZiBNWlNDSEVNRV9QUkVDSVNFX0dDCk1aU0NIRU1FX1BSRUNJU0VfR0M9bm8KZW5kaWYKCiMgZm9yIHZlcnNpb24gNC54IHdlIG5lZWQgdG8gZ2VuZXJhdGUgYnl0ZS1jb2RlIGZvciBTY2hlbWUgYmFzZQppZm5kZWYgTVpTQ0hFTUVfR0VORVJBVEVfQkFTRQpNWlNDSEVNRV9HRU5FUkFURV9CQVNFPW5vCmVuZGlmCgppZmVxIChubywkKERZTkFNSUNfTVpTQ0hFTUUpKQppZmVxICh5ZXMsJChNWlNDSEVNRV9QUkVDSVNFX0dDKSkKTVpTQ0hFTUVfTElCPS1sbXpzY2gkKE1aU0NIRU1FX1ZFUikKZWxzZQpNWlNDSEVNRV9MSUIgPSAtbG16c2NoJChNWlNDSEVNRV9WRVIpIC1sbXpnYyQoTVpTQ0hFTUVfVkVSKQplbmRpZgojIHRoZSBtb2Rlcm4gTWluR1cgY2FuIGR5bmFtaWNhbGx5IGxpbmsgdG8gZGxscyBkaXJlY3RseS4KIyBwb2ludCBNWlNDSEVNRV9ETExTIHRvIHdoZXJlIHlvdSBwdXQgbGlibXpzY2hYWFhYWFhYLmRsbCBhbmQgbGliZ2NYWFhYWFhYLmRsbAppZm5kZWYgTVpTQ0hFTUVfRExMUwpNWlNDSEVNRV9ETExTPSQoTVpTQ0hFTUUpCmVuZGlmCk1aU0NIRU1FX0xJQkRJUj0tTCQoTVpTQ0hFTUVfRExMUykgLUwkKE1aU0NIRU1FX0RMTFMpXGxpYgplbmRpZgoKZW5kaWYKCiMgUHl0aG9uIHN1cHBvcnQgLS0gd29ya3Mgd2l0aCB0aGUgQWN0aXZlU3RhdGUgcHl0aG9uIDIuMCByZWxlYXNlIChhbmQgb3RoZXJzCiMgdG9vLCBwcm9iYWJseSkKIwojIHVuY29tbWVudCAnUFlUSE9OJyB0byBtYWtlIHB5dGhvbi1lbmFibGVkIHZlcnNpb24KIyBQdXQgdGhlIHBhdGggdG8gdGhlIHB5dGhvbiBkaXN0cm8gaGVyZS4gIElmIGNyb3NzIGNvbXBpbGluZyBmcm9tIExpbnV4LCB5b3UKIyB3aWxsIGFsc28gbmVlZCB0byBjb252ZXJ0IHRoZSBoZWFkZXIgZmlsZXMgdG8gdW5peCBpbnN0ZWFkIG9mIGRvcyBmb3JtYXQ6CiMgICBmb3IgZmlsIGluICouaCA7IGRvIHZpbSAtZSAtYyAnc2V0IGZmPXVuaXh8d3xxJyAkZmlsCiMgYW5kIGFsc28sIHlvdSB3aWxsIG5lZWQgdG8gbWFrZSBhIG1pbmd3MzIgJ2xpYnB5dGhvbjIwLmEnIHRvIGxpbmsgd2l0aDoKIyAgIGNkICRQWVRIT04vbGlicwojICAgcGV4cG9ydHMgcHl0aG9uMjAuZGxsID4gcHl0aG9uMjAuZGVmCiMgICBkbGx0b29sIC1kIHB5dGhvbjIwLmRlZiAtbCBsaWJweXRob24yMC5hCiMgb24gbXkgTGludXggYm94LCBJIHB1dCB0aGUgUHl0aG9uIHN0dWZmIGhlcmU6CiNQWVRIT049L2hvbWUvcm9uL0FjdGl2ZVB5dGhvbi0yLjAuMC0yMDIvc3JjL0NvcmUKIyBvbiBteSBOVCBib3gsIGl0J3MgaGVyZToKI1BZVEhPTj1jOi9weXRob24yMAoKaWZkZWYgUFlUSE9OCmlmbmRlZiBEWU5BTUlDX1BZVEhPTgpEWU5BTUlDX1BZVEhPTj15ZXMKZW5kaWYKCmlmbmRlZiBQWVRIT05fVkVSClBZVEhPTl9WRVI9MjIKZW5kaWYKCmlmZXEgKG5vLCQoRFlOQU1JQ19QWVRIT04pKQpQWVRIT05MSUI9LUwkKFBZVEhPTikvbGlicyAtbHB5dGhvbiQoUFlUSE9OX1ZFUikKZW5kaWYKIyBteSBpbmNsdWRlIGZpbGVzIGFyZSBpbiAnd2luMzJpbmMnIG9uIExpbnV4LCBhbmQgJ2luY2x1ZGUnIGluIHRoZSBzdGFuZGFyZAojIE5UIGRpc3RybyAoQWN0aXZlU3RhdGUpCmlmZXEgKCQoQ1JPU1MpLG5vKQpQWVRIT05JTkM9LUkgJChQWVRIT04pL2luY2x1ZGUKZWxzZQpQWVRIT05JTkM9LUkgJChQWVRIT04pL3dpbjMyaW5jCmVuZGlmCmVuZGlmCgojCVRDTCBpbnRlcmZhY2U6CiMJICBUQ0w9W1BhdGggdG8gVENMIGRpcmVjdG9yeV0KIwkgIERZTkFNSUNfVENMPXllcyAodG8gbG9hZCB0aGUgVENMIERMTCBkeW5hbWljYWxseSkKIwkgIFRDTF9WRVI9W1RDTCB2ZXJzaW9uLCBlZyA4MywgODRdIChkZWZhdWx0IGlzIDgzKQojVENMPWM6L3RjbAppZmRlZiBUQ0wKaWZuZGVmIERZTkFNSUNfVENMCkRZTkFNSUNfVENMPXllcwplbmRpZgppZm5kZWYgVENMX1ZFUgpUQ0xfVkVSID0gODMKZW5kaWYKVENMSU5DICs9IC1JJChUQ0wpL2luY2x1ZGUKZW5kaWYKCgojCVJ1YnkgaW50ZXJmYWNlOgojCSAgUlVCWT1bUGF0aCB0byBSdWJ5IGRpcmVjdG9yeV0KIwkgIERZTkFNSUNfUlVCWT15ZXMgKHRvIGxvYWQgdGhlIFJ1YnkgRExMIGR5bmFtaWNhbGx5KQojCSAgUlVCWV9WRVI9W1J1YnkgdmVyc2lvbiwgZWcgMTYsIDE3XSAoZGVmYXVsdCBpcyAxNikKIwkgIFJVQllfVkVSX0xPTkc9W1J1YnkgdmVyc2lvbiwgZWcgMS42LCAxLjddIChkZWZhdWx0IGlzIDEuNikKIwkgICAgWW91IG11c3Qgc2V0IFJVQllfVkVSX0xPTkcgd2hlbiBjaGFuZ2UgUlVCWV9WRVIuCiNSVUJZPWM6L3J1YnkKaWZkZWYgUlVCWQppZm5kZWYgRFlOQU1JQ19SVUJZCkRZTkFNSUNfUlVCWT15ZXMKZW5kaWYKIyAgU2V0IGRlZmF1bHQgdmFsdWUKaWZuZGVmIFJVQllfVkVSClJVQllfVkVSID0gMTYKZW5kaWYKaWZuZGVmIFJVQllfVkVSX0xPTkcKUlVCWV9WRVJfTE9ORyA9IDEuNgplbmRpZgoKaWZlcSAoJChSVUJZX1ZFUiksIDE2KQppZm5kZWYgUlVCWV9QTEFURk9STQpSVUJZX1BMQVRGT1JNID0gaTU4Ni1tc3dpbjMyCmVuZGlmCmlmbmRlZiBSVUJZX0lOU1RBTExfTkFNRQpSVUJZX0lOU1RBTExfTkFNRSA9IG1zd2luMzItcnVieSQoUlVCWV9WRVIpCmVuZGlmCmVsc2UKaWZuZGVmIFJVQllfUExBVEZPUk0KUlVCWV9QTEFURk9STSA9IGkzODYtbXN3aW4zMgplbmRpZgppZm5kZWYgUlVCWV9JTlNUQUxMX05BTUUKUlVCWV9JTlNUQUxMX05BTUUgPSBtc3ZjcnQtcnVieSQoUlVCWV9WRVIpCmVuZGlmCmVuZGlmCgpSVUJZSU5DID0tSSAkKFJVQlkpL2xpYi9ydWJ5LyQoUlVCWV9WRVJfTE9ORykvJChSVUJZX1BMQVRGT1JNKQppZmVxIChubywgJChEWU5BTUlDX1JVQlkpKQpSVUJZTElCID0gLUwkKFJVQlkpL2xpYiAtbCQoUlVCWV9JTlNUQUxMX05BTUUpCmVuZGlmCgplbmRpZiAjIFJVQlkKCiMgU2VlIGZlYXR1cmUuaCBmb3IgYSBsaXN0IG9mIG9wdGlvbnMuCiMgQW55IG90aGVyIGRlZmluZXMgY2FuIGJlIGluY2x1ZGVkIGhlcmUuCkRFRl9HVUk9LURGRUFUX0dVSV9XMzIgLURGRUFUX0NMSVBCT0FSRApERUZJTkVTPS1EV0lOMzIgLURXSU5WRVI9JChXSU5WRVIpIC1EX1dJTjMyX1dJTk5UPSQoV0lOVkVSKSBcCgktREhBVkVfUEFUSERFRiAtREZFQVRfJChGRUFUVVJFUykKaWZlcSAoJChDUk9TUykseWVzKQojIGNyb3NzLWNvbXBpbGVyOgpDQyA9IGk1ODYtcGMtbWluZ3czMm1zdmMtZ2NjCkRFTCA9IHJtCk1LRElSID0gbWtkaXIgLXAKV0lORFJFUyA9IGk1ODYtcGMtbWluZ3czMm1zdmMtd2luZHJlcwplbHNlCiMgbm9ybWFsIChXaW5kb3dzKSBjb21waWxhdGlvbjoKQ0MgPSBnY2MKaWZuZXEgKHNoLmV4ZSwgJChTSEVMTCkpCkRFTCA9IHJtCk1LRElSID0gbWtkaXIgLXAKRElSU0xBU0ggPSAvCmVsc2UKREVMID0gZGVsCk1LRElSID0gbWtkaXIKRElSU0xBU0ggPSBcXAplbmRpZgpXSU5EUkVTID0gd2luZHJlcwplbmRpZgoKIz4+Pj4+IGVuZCBvZiBjaG9pY2VzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKQ0ZMQUdTID0gLUlwcm90byAkKERFRklORVMpIC1waXBlIC13IC1tYXJjaD0kKEFSQ0gpIC1XYWxsCgppZmRlZiBHRVRURVhUCkRFRklORVMgKz0gLURIQVZFX0dFVFRFWFQgLURIQVZFX0xPQ0FMRV9ICkdFVFRFWFRJTkNMVURFID0gJChHRVRURVhUKS9pbmNsdWRlCkdFVFRFWFRMSUIgPSAkKElOVExQQVRIKQppZmVxICh5ZXMsICQoR0VUVEVYVCkpCkRFRklORVMgKz0gLUREWU5BTUlDX0dFVFRFWFQKZWxzZQppZmRlZiBEWU5BTUlDX0dFVFRFWFQKREVGSU5FUyArPSAtRCQoRFlOQU1JQ19HRVRURVhUKQppZmRlZiBHRVRURVhUX0RZTkFNSUMKREVGSU5FUyArPSAtREdFVFRFWFRfRFlOQU1JQyAtREdFVFRFWFRfRExMPVwiJChHRVRURVhUX0RZTkFNSUMpXCIKZW5kaWYKZW5kaWYKZW5kaWYKZW5kaWYKCmlmZGVmIFBFUkwKQ0ZMQUdTICs9IC1JJChQRVJMTElCUykgLURGRUFUX1BFUkwgLUwkKFBFUkxMSUJTKQppZmVxICh5ZXMsICQoRFlOQU1JQ19QRVJMKSkKQ0ZMQUdTICs9IC1ERFlOQU1JQ19QRVJMIC1ERFlOQU1JQ19QRVJMX0RMTD1cInBlcmwkKFBFUkxfVkVSKS5kbGxcIgplbmRpZgplbmRpZgoKaWZkZWYgTVpTQ0hFTUUKQ0ZMQUdTICs9IC1JJChNWlNDSEVNRSkvaW5jbHVkZSAtREZFQVRfTVpTQ0hFTUUgLURNWlNDSEVNRV9DT0xMRUNUUz1cIiQoTVpTQ0hFTUUpL2NvbGxlY3RzXCIKaWZlcSAoeWVzLCAkKERZTkFNSUNfTVpTQ0hFTUUpKQpDRkxBR1MgKz0gLUREWU5BTUlDX01aU0NIRU1FIC1ERFlOQU1JQ19NWlNDSF9ETEw9XCJsaWJtenNjaCQoTVpTQ0hFTUVfVkVSKS5kbGxcIiAtRERZTkFNSUNfTVpHQ19ETEw9XCJsaWJtemdjJChNWlNDSEVNRV9WRVIpLmRsbFwiCmVuZGlmCmVuZGlmCgppZmRlZiBSVUJZCkNGTEFHUyArPSAtREZFQVRfUlVCWSAkKFJVQllJTkMpCmlmZXEgKHllcywgJChEWU5BTUlDX1JVQlkpKQpDRkxBR1MgKz0gLUREWU5BTUlDX1JVQlkgLUREWU5BTUlDX1JVQllfRExMPVwiJChSVUJZX0lOU1RBTExfTkFNRSkuZGxsXCIKQ0ZMQUdTICs9IC1ERFlOQU1JQ19SVUJZX1ZFUj0kKFJVQllfVkVSKQplbmRpZgplbmRpZgoKaWZkZWYgUFlUSE9OCkNGTEFHUyArPSAtREZFQVRfUFlUSE9OICQoUFlUSE9OSU5DKQppZmVxICh5ZXMsICQoRFlOQU1JQ19QWVRIT04pKQpDRkxBR1MgKz0gLUREWU5BTUlDX1BZVEhPTiAtRERZTkFNSUNfUFlUSE9OX0RMTD1cInB5dGhvbiQoUFlUSE9OX1ZFUikuZGxsXCIKZW5kaWYKZW5kaWYKCmlmZGVmIFRDTApDRkxBR1MgKz0gLURGRUFUX1RDTCAkKFRDTElOQykKaWZlcSAoeWVzLCAkKERZTkFNSUNfVENMKSkKQ0ZMQUdTICs9IC1ERFlOQU1JQ19UQ0wgLUREWU5BTUlDX1RDTF9ETEw9XCJ0Y2wkKFRDTF9WRVIpLmRsbFwiCmVuZGlmCmVuZGlmCgppZmVxICgkKFBPU1RTQ1JJUFQpLHllcykKREVGSU5FUyArPSAtRE1TV0lOUFMKZW5kaWYKCmlmZXEgKHllcywgJChPTEUpKQpERUZJTkVTICs9IC1ERkVBVF9PTEUKZW5kaWYKCmlmZXEgKCQoQ1NDT1BFKSx5ZXMpCkRFRklORVMgKz0gLURGRUFUX0NTQ09QRQplbmRpZgoKaWZlcSAoJChORVRCRUFOUykseWVzKQojIE9ubHkgYWxsb3cgTkVUQkVBTlMgZm9yIGEgR1VJIGJ1aWxkLgppZmVxICh5ZXMsICQoR1VJKSkKREVGSU5FUyArPSAtREZFQVRfTkVUQkVBTlNfSU5URwoKaWZlcSAoJChOQkRFQlVHKSwgeWVzKQpERUZJTkVTICs9IC1ETkJERUJVRwpOQkRFQlVHX0lOQ0wgPSBuYmRlYnVnLmgKTkJERUJVR19TUkMgPSBuYmRlYnVnLmMKZW5kaWYKZW5kaWYKZW5kaWYKCmlmZGVmIFhQTQojIE9ubHkgYWxsb3cgWFBNIGZvciBhIEdVSSBidWlsZC4KaWZlcSAoeWVzLCAkKEdVSSkpCkNGTEFHUyArPSAtREZFQVRfWFBNX1czMiAtSSAkKFhQTSkvaW5jbHVkZQplbmRpZgplbmRpZgoKaWZlcSAoJChERUJVRykseWVzKQpDRkxBR1MgKz0gLWcgLWZzdGFjay1jaGVjawpERUJVR19TVUZGSVg9ZAplbHNlCmlmZXEgKCQoT1BUSU1JWkUpLCBTSVpFKQpDRkxBR1MgKz0gLU9zCmVsc2UKaWZlcSAoJChPUFRJTUlaRSksIE1BWFNQRUVEKQpDRkxBR1MgKz0gLU8zCkNGTEFHUyArPSAtZm9taXQtZnJhbWUtcG9pbnRlciAtZnJlZy1zdHJ1Y3QtcmV0dXJuCmVsc2UgICMgU1BFRUQKQ0ZMQUdTICs9IC1PMgplbmRpZgplbmRpZgpDRkxBR1MgKz0gLXMKZW5kaWYKCkxJQiA9IC1sa2VybmVsMzIgLWx1c2VyMzIgLWxnZGkzMiAtbGFkdmFwaTMyIC1sY29tZGxnMzIgLWxjb21jdGwzMiAtbHZlcnNpb24KR1VJT0JKID0gICQoT1VURElSKS9ndWkubyAkKE9VVERJUikvZ3VpX3czMi5vICQoT1VURElSKS9ndWlfYmV2YWwubyAkKE9VVERJUikvb3NfdzMyZXhlLm8KT0JKID0gXAoJJChPVVRESVIpL2J1ZmZlci5vIFwKCSQoT1VURElSKS9jaGFyc2V0Lm8gXAoJJChPVVRESVIpL2RpZmYubyBcCgkkKE9VVERJUikvZGlncmFwaC5vIFwKCSQoT1VURElSKS9lZGl0Lm8gXAoJJChPVVRESVIpL2V2YWwubyBcCgkkKE9VVERJUikvZXhfY21kcy5vIFwKCSQoT1VURElSKS9leF9jbWRzMi5vIFwKCSQoT1VURElSKS9leF9kb2NtZC5vIFwKCSQoT1VURElSKS9leF9ldmFsLm8gXAoJJChPVVRESVIpL2V4X2dldGxuLm8gXAoJJChPVVRESVIpL2ZpbGVpby5vIFwKCSQoT1VURElSKS9mb2xkLm8gXAoJJChPVVRESVIpL2dldGNoYXIubyBcCgkkKE9VVERJUikvaGFyZGNvcHkubyBcCgkkKE9VVERJUikvaGFzaHRhYi5vIFwKCSQoT1VURElSKS9tYWluLm8gXAoJJChPVVRESVIpL21hcmsubyBcCgkkKE9VVERJUikvbWVtZmlsZS5vIFwKCSQoT1VURElSKS9tZW1saW5lLm8gXAoJJChPVVRESVIpL21lbnUubyBcCgkkKE9VVERJUikvbWVzc2FnZS5vIFwKCSQoT1VURElSKS9taXNjMS5vIFwKCSQoT1VURElSKS9taXNjMi5vIFwKCSQoT1VURElSKS9tb3ZlLm8gXAoJJChPVVRESVIpL21ieXRlLm8gXAoJJChPVVRESVIpL25vcm1hbC5vIFwKCSQoT1VURElSKS9vcHMubyBcCgkkKE9VVERJUikvb3B0aW9uLm8gXAoJJChPVVRESVIpL29zX3dpbjMyLm8gXAoJJChPVVRESVIpL29zX21zd2luLm8gXAoJJChPVVRESVIpL3BhdGhkZWYubyBcCgkkKE9VVERJUikvcG9wdXBtbnUubyBcCgkkKE9VVERJUikvcXVpY2tmaXgubyBcCgkkKE9VVERJUikvcmVnZXhwLm8gXAoJJChPVVRESVIpL3NjcmVlbi5vIFwKCSQoT1VURElSKS9zZWFyY2gubyBcCgkkKE9VVERJUikvc3BlbGwubyBcCgkkKE9VVERJUikvc3ludGF4Lm8gXAoJJChPVVRESVIpL3RhZy5vIFwKCSQoT1VURElSKS90ZXJtLm8gXAoJJChPVVRESVIpL3VpLm8gXAoJJChPVVRESVIpL3VuZG8ubyBcCgkkKE9VVERJUikvdmVyc2lvbi5vIFwKCSQoT1VURElSKS92aW1yYy5vIFwKCSQoT1VURElSKS93aW5kb3cubwoKaWZkZWYgUEVSTApPQkogKz0gJChPVVRESVIpL2lmX3BlcmwubwplbmRpZgppZmRlZiBNWlNDSEVNRQpPQkogKz0gJChPVVRESVIpL2lmX216c2NoLm8KTVpTQ0hFTUVfSU5DTCA9IGlmX216c2NoLmgKaWZlcSAoeWVzLCQoTVpTQ0hFTUVfR0VORVJBVEVfQkFTRSkpCkNGTEFHUyArPSAtRElOQ0xVREVfTVpTQ0hFTUVfQkFTRQpNWl9FWFRSQV9ERVAgKz0gbXpzY2hlbWVfYmFzZS5jCmVuZGlmCmlmZXEgKHllcywkKE1aU0NIRU1FX1BSRUNJU0VfR0MpKQpDRkxBR1MgKz0gLURNWl9QUkVDSVNFX0dDCmVuZGlmCmVuZGlmCmlmZGVmIFBZVEhPTgpPQkogKz0gJChPVVRESVIpL2lmX3B5dGhvbi5vCmVuZGlmCmlmZGVmIFJVQlkKT0JKICs9ICQoT1VURElSKS9pZl9ydWJ5Lm8KZW5kaWYKaWZkZWYgVENMCk9CSiArPSAkKE9VVERJUikvaWZfdGNsLm8KZW5kaWYKaWZlcSAoJChDU0NPUEUpLHllcykKT0JKICs9ICQoT1VURElSKS9pZl9jc2NvcGUubwplbmRpZgppZmVxICgkKE5FVEJFQU5TKSx5ZXMpCiMgT25seSBhbGxvdyBORVRCRUFOUyBmb3IgYSBHVUkgYnVpbGQuCmlmZXEgKHllcywgJChHVUkpKQpPQkogKz0gJChPVVRESVIpL25ldGJlYW5zLm8KTElCICs9IC1sd3NvY2szMgplbmRpZgplbmRpZgppZmRlZiBYUE0KIyBPbmx5IGFsbG93IFhQTSBmb3IgYSBHVUkgYnVpbGQuCmlmZXEgKHllcywgJChHVUkpKQpPQkogKz0gJChPVVRESVIpL3hwbV93MzIubwojIFlvdSdsbCBuZWVkIGxpYlhwbS5hIGZyb20gaHR0cDovL2dudXdpbjMyLnNmLm5ldApMSUIgKz0gLUwgJChYUE0pL2xpYiAtbFhwbQplbmRpZgplbmRpZgoKCmlmZGVmIE1aU0NIRU1FCk1aU0NIRU1FX1NVRkZJWCA9IFoKZW5kaWYKCmlmZXEgKCQoR1VJKSx5ZXMpClRBUkdFVCA6PSBndmltJChERUJVR19TVUZGSVgpLmV4ZQpERUZJTkVTICs9ICQoREVGX0dVSSkKT0JKICs9ICQoR1VJT0JKKQpMRkxBR1MgKz0gLW13aW5kb3dzCk9VVERJUiA9IGdvYmokKERFQlVHX1NVRkZJWCkkKE1aU0NIRU1FX1NVRkZJWCkKZWxzZQpUQVJHRVQgOj0gdmltJChERUJVR19TVUZGSVgpLmV4ZQpPVVRESVIgPSBvYmokKERFQlVHX1NVRkZJWCkkKE1aU0NIRU1FX1NVRkZJWCkKZW5kaWYKCmlmZGVmIEdFVFRFWFQKaWZuZXEgKHllcywgJChHRVRURVhUKSkKQ0ZMQUdTICs9IC1JJChHRVRURVhUSU5DTFVERSkKaWZuZGVmIFNUQVRJQ19HRVRURVhUCkxJQiArPSAtTCQoR0VUVEVYVExJQikgLWwkKElOVExMSUIpCmlmZXEgKFVTRV9TQUZFX0dFVFRFWFRfRExMLCAkKERZTkFNSUNfR0VUVEVYVCkpCk9CSis9JChTQUZFX0dFVFRFWFRfRExMX09CSikKZW5kaWYKZWxzZQpMSUIgKz0gLUwkKEdFVFRFWFRMSUIpIC1saW50bAplbmRpZgplbmRpZgplbmRpZgoKaWZkZWYgUEVSTAppZmVxIChubywgJChEWU5BTUlDX1BFUkwpKQpMSUIgKz0gLWxwZXJsJChQRVJMX1ZFUikKZW5kaWYKZW5kaWYKCmlmZGVmIFRDTApMSUIgKz0gLUwkKFRDTCkvbGliCmlmZXEgKHllcywgJChEWU5BTUlDX1RDTCkpCkxJQiArPSAtbHRjbHN0dWIkKFRDTF9WRVIpCmVsc2UKTElCICs9IC1sdGNsJChUQ0xfVkVSKQplbmRpZgplbmRpZgoKaWZlcSAoeWVzLCAkKE9MRSkpCkxJQiArPSAtbG9sZWF1dDMyIC1sc3RkYysrCk9CSiArPSAkKE9VVERJUikvaWZfb2xlLm8KZW5kaWYKCmlmZXEgKHllcywgJChNQllURSkpCkRFRklORVMgKz0gLURGRUFUX01CWVRFCmVuZGlmCgppZmVxICh5ZXMsICQoSU1FKSkKREVGSU5FUyArPSAtREZFQVRfTUJZVEVfSU1FCmlmZXEgKHllcywgJChEWU5BTUlDX0lNRSkpCkRFRklORVMgKz0gLUREWU5BTUlDX0lNRQplbHNlCkxJQiArPSAtbGltbTMyCmVuZGlmCmVuZGlmCgppZmRlZiBJQ09OVgppZm5lcSAoeWVzLCAkKElDT05WKSkKTElCICs9IC1MJChJQ09OVikKQ0ZMQUdTICs9IC1JJChJQ09OVikKZW5kaWYKREVGSU5FUys9LUREWU5BTUlDX0lDT05WCmVuZGlmCgphbGw6ICQoVEFSR0VUKSB2aW1ydW4uZXhlIHh4ZC94eGQuZXhlIGluc3RhbGwuZXhlIHVuaW5zdGFsLmV4ZSBHdmltRXh0L2d2aW1leHQuZGxsCgp2aW1ydW4uZXhlOiB2aW1ydW4uYwoJJChDQykgJChDRkxBR1MpIC1vIHZpbXJ1bi5leGUgdmltcnVuLmMgJChMSUIpCgppbnN0YWxsLmV4ZTogZG9zaW5zdC5jCgkkKENDKSAkKENGTEFHUykgLW8gaW5zdGFsbC5leGUgZG9zaW5zdC5jICQoTElCKSAtbG9sZTMyIC1sdXVpZAoKdW5pbnN0YWwuZXhlOiB1bmluc3RhbC5jCgkkKENDKSAkKENGTEFHUykgLW8gdW5pbnN0YWwuZXhlIHVuaW5zdGFsLmMgJChMSUIpCgokKFRBUkdFVCk6ICQoT1VURElSKSAkKE9CSikKCSQoQ0MpICQoQ0ZMQUdTKSAkKExGTEFHUykgLW8gJEAgJChPQkopICQoTElCKSAtbG9sZTMyIC1sdXVpZCAkKE1aU0NIRU1FX0xJQkRJUikgJChNWlNDSEVNRV9MSUIpICQoUFlUSE9OTElCKSAkKFJVQllMSUIpCgp1cHg6IGV4ZXMKCXVweCBndmltLmV4ZQoJdXB4IHZpbS5leGUKCnh4ZC94eGQuZXhlOiB4eGQveHhkLmMKCSQoTUFLRSkgLUMgeHhkIC1mIE1ha2VfY3lnLm1hawoKR3ZpbUV4dC9ndmltZXh0LmRsbDogR3ZpbUV4dC9ndmltZXh0LmNwcCBHdmltRXh0L2d2aW1leHQucmMgR3ZpbUV4dC9ndmltZXh0LmgKCSQoTUFLRSkgLUMgR3ZpbUV4dCAtZiBNYWtlX21pbmcubWFrCgpjbGVhbjoKCS0kKERFTCkgJChPVVRESVIpJChESVJTTEFTSCkqLm8KCS0kKERFTCkgJChPVVRESVIpJChESVJTTEFTSCkqLnJlcwoJLXJtZGlyICQoT1VURElSKQoJLSQoREVMKSAqLmV4ZQoJLSQoREVMKSBwYXRoZGVmLmMKaWZkZWYgUEVSTAoJLSQoREVMKSBpZl9wZXJsLmMKZW5kaWYKaWZkZWYgTVpTQ0hFTUUKCS0kKERFTCkgbXpzY2hlbWVfYmFzZS5jCmVuZGlmCgkkKE1BS0UpIC1DIEd2aW1FeHQgLWYgTWFrZV9taW5nLm1hayBjbGVhbgoJJChNQUtFKSAtQyB4eGQgLWYgTWFrZV9jeWcubWFrIGNsZWFuCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKSU5DTCA9IHZpbS5oIGZlYXR1cmUuaCBvc193aW4zMi5oIG9zX2Rvcy5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIFwKCXN0cnVjdHMuaCByZWdleHAuaCBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCglndWkuaAoKJChPVVRESVIpLyUubyA6ICUuYyAkKElOQ0wpCgkkKENDKSAtYyAkKENGTEFHUykgJDwgLW8gJEAKCiQoT1VURElSKS92aW1yZXMucmVzOiB2aW0ucmMgdmVyc2lvbi5oIGd1aV93MzJfcmMuaAoJJChXSU5EUkVTKSAkKERFRklORVMpIHZpbS5yYyAkKE9VVERJUikvdmltcmVzLnJlcwoKJChPVVRESVIpL3ZpbXJjLm86ICQoT1VURElSKS92aW1yZXMucmVzCgkkKFdJTkRSRVMpICQoT1VURElSKS92aW1yZXMucmVzICQoT1VURElSKS92aW1yYy5vCgokKE9VVERJUik6CgkkKE1LRElSKSAkKE9VVERJUikKCiQoT1VURElSKS9leF9kb2NtZC5vOglleF9kb2NtZC5jICQoSU5DTCkgZXhfY21kcy5oCgkkKENDKSAtYyAkKENGTEFHUykgZXhfZG9jbWQuYyAtbyAkKE9VVERJUikvZXhfZG9jbWQubwoKJChPVVRESVIpL2V4X2V2YWwubzoJZXhfZXZhbC5jICQoSU5DTCkgZXhfY21kcy5oCgkkKENDKSAtYyAkKENGTEFHUykgZXhfZXZhbC5jIC1vICQoT1VURElSKS9leF9ldmFsLm8KCiQoT1VURElSKS9pZl9jc2NvcGUubzoJaWZfY3Njb3BlLmMgJChJTkNMKSBpZl9jc2NvcGUuaAoJJChDQykgLWMgJChDRkxBR1MpIGlmX2NzY29wZS5jIC1vICQoT1VURElSKS9pZl9jc2NvcGUubwoKIyBSZW1vdmUgLURfX0lJRF9ERUZJTkVEX18gZm9yIG5ld2VyIHZlcnNpb25zIG9mIHRoZSB3MzJhcGkKJChPVVRESVIpL2lmX29sZS5vOiBpZl9vbGUuY3BwICQoSU5DTCkKCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkKE9VVERJUikvaWZfb2xlLm8gaWZfb2xlLmNwcAoKJChPVVRESVIpL2lmX3J1YnkubzogaWZfcnVieS5jICQoSU5DTCkKaWZlcSAoMTYsICQoUlVCWSkpCgkkKENDKSAkKENGTEFHUykgLVVfV0lOMzIgLWMgLW8gJChPVVRESVIpL2lmX3J1YnkubyBpZl9ydWJ5LmMKZW5kaWYKCmlmX3BlcmwuYzogaWZfcGVybC54cyB0eXBlbWFwCglwZXJsICQoUEVSTExJQikvRXh0VXRpbHMveHN1YnBwIC1wcm90b3R5cGVzIC10eXBlbWFwIFwKCSAgICAgJChQRVJMTElCKS9FeHRVdGlscy90eXBlbWFwIGlmX3BlcmwueHMgPiAkQAoKJChPVVRESVIpL25ldGJlYW5zLm86CW5ldGJlYW5zLmMgJChJTkNMKSAkKE5CREVCVUdfSU5DTCkgJChOQkRFQlVHX1NSQykKCSQoQ0MpIC1jICQoQ0ZMQUdTKSBuZXRiZWFucy5jIC1vICQoT1VURElSKS9uZXRiZWFucy5vCgokKE9VVERJUikvaWZfbXpzY2gubzoJaWZfbXpzY2guYyAkKElOQ0wpIGlmX216c2NoLmggJChNWl9FWFRSQV9ERVApCgkkKENDKSAtYyAkKENGTEFHUykgaWZfbXpzY2guYyAtbyAkKE9VVERJUikvaWZfbXpzY2gubwoKbXpzY2hlbWVfYmFzZS5jOgoJJChNWlNDSEVNRSkvbXpjIC0tYy1tb2RzIG16c2NoZW1lX2Jhc2UuYyArK2xpYiBzY2hlbWUvYmFzZQoKcGF0aGRlZi5jOiAkKElOQ0wpCmlmbmVxIChzaC5leGUsICQoU0hFTEwpKQoJQGVjaG8gY3JlYXRpbmcgcGF0aGRlZi5jCglAZWNobyAnLyogcGF0aGRlZi5jICovJyA+IHBhdGhkZWYuYwoJQGVjaG8gJyNpbmNsdWRlICJ2aW0uaCInID4+IHBhdGhkZWYuYwoJQGVjaG8gJ2NoYXJfdSAqZGVmYXVsdF92aW1fZGlyID0gKGNoYXJfdSAqKSIkKFZJTVJDTE9DKSI7JyA+PiBwYXRoZGVmLmMKCUBlY2hvICdjaGFyX3UgKmRlZmF1bHRfdmltcnVudGltZV9kaXIgPSAoY2hhcl91ICopIiQoVklNUlVOVElNRURJUikiOycgPj4gcGF0aGRlZi5jCglAZWNobyAnY2hhcl91ICphbGxfY2ZsYWdzID0gKGNoYXJfdSAqKSIkKENDKSAkKENGTEFHUykiOycgPj4gcGF0aGRlZi5jCglAZWNobyAnY2hhcl91ICphbGxfbGZsYWdzID0gKGNoYXJfdSAqKSIkKENDKSAkKENGTEFHUykgJChMRkxBR1MpIC1vICQoVEFSR0VUKSAkKExJQikgLWxvbGUzMiAtbHV1aWQgJChNWlNDSEVNRV9MSUJESVIpICQoTVpTQ0hFTUVfTElCKSAkKFBZVEhPTkxJQikgJChSVUJZTElCKSI7JyA+PiBwYXRoZGVmLmMKCUBlY2hvICdjaGFyX3UgKmNvbXBpbGVkX3VzZXIgPSAoY2hhcl91ICopIiQoVVNFUk5BTUUpIjsnID4+IHBhdGhkZWYuYwoJQGVjaG8gJ2NoYXJfdSAqY29tcGlsZWRfc3lzID0gKGNoYXJfdSAqKSIkKFVTRVJET01BSU4pIjsnID4+IHBhdGhkZWYuYwplbHNlCglAZWNobyBjcmVhdGluZyBwYXRoZGVmLmMKCUBlY2hvIC8qIHBhdGhkZWYuYyAqLyA+IHBhdGhkZWYuYwoJQGVjaG8gI2luY2x1ZGUgInZpbS5oIiA+PiBwYXRoZGVmLmMKCUBlY2hvIGNoYXJfdSAqZGVmYXVsdF92aW1fZGlyID0gKGNoYXJfdSAqKSIkKFZJTVJDTE9DKSI7ID4+IHBhdGhkZWYuYwoJQGVjaG8gY2hhcl91ICpkZWZhdWx0X3ZpbXJ1bnRpbWVfZGlyID0gKGNoYXJfdSAqKSIkKFZJTVJVTlRJTUVESVIpIjsgPj4gcGF0aGRlZi5jCglAZWNobyBjaGFyX3UgKmFsbF9jZmxhZ3MgPSAoY2hhcl91ICopIiQoQ0MpICQoQ0ZMQUdTKSI7ID4+IHBhdGhkZWYuYwoJQGVjaG8gY2hhcl91ICphbGxfbGZsYWdzID0gKGNoYXJfdSAqKSIkKENDKSAkKENGTEFHUykgJChMRkxBR1MpIC1vICQoVEFSR0VUKSAkKExJQikgLWxvbGUzMiAtbHV1aWQgJChNWlNDSEVNRV9MSUJESVIpICQoTVpTQ0hFTUVfTElCKSAkKFBZVEhPTkxJQikgJChSVUJZTElCKSI7ID4+IHBhdGhkZWYuYwoJQGVjaG8gY2hhcl91ICpjb21waWxlZF91c2VyID0gKGNoYXJfdSAqKSIkKFVTRVJOQU1FKSI7ID4+IHBhdGhkZWYuYwoJQGVjaG8gY2hhcl91ICpjb21waWxlZF9zeXMgPSAoY2hhcl91ICopIiQoVVNFUkRPTUFJTikiOyA+PiBwYXRoZGVmLmMKZW5kaWYK