OgpldmFsICdleGVjIHBlcmwgLVMgJDAgJHsxKyIkQCJ9JwogICAgaWYgJHJ1bm5pbmdfdW5kZXJfc29tZV9zaGVsbDsKIyMKIyMgIENvbmZpZ3VyZSAtLSBPcGVuU1NMIHNvdXJjZSB0cmVlIGNvbmZpZ3VyYXRpb24gc2NyaXB0CiMjCgpyZXF1aXJlIDUuMDAwOwp1c2Ugc3RyaWN0OwoKIyBzZWUgSU5TVEFMTCBmb3IgaW5zdHJ1Y3Rpb25zLgoKbXkgJHVzYWdlPSJVc2FnZTogQ29uZmlndXJlIFtuby08Y2lwaGVyPiAuLi5dIFtlbmFibGUtPGNpcGhlcj4gLi4uXSBbZXhwZXJpbWVudGFsLTxjaXBoZXI+IC4uLl0gWy1EeHh4XSBbLWx4eHhdIFstTHh4eF0gWy1meHh4XSBbLUt4eHhdIFtuby1ody14eHh8bm8taHddIFtbbm8tXXRocmVhZHNdIFtbbm8tXXNoYXJlZF0gW1tuby1demxpYnx6bGliLWR5bmFtaWNdIFtuby1hc21dIFtuby1kc29dIFtuby1rcmI1XSBbc2N0cF0gWzM4Nl0gWy0tcHJlZml4PURJUl0gWy0tb3BlbnNzbGRpcj1PUEVOU1NMRElSXSBbLS13aXRoLXh4eFs9dnZ2XV0gWy0tdGVzdC1zYW5pdHldIG9zL2NvbXBpbGVyWzpmbGFnc11cbiI7CgojIE9wdGlvbnM6CiMKIyAtLW9wZW5zc2xkaXIgIGluc3RhbGwgT3BlblNTTCBpbiBPUEVOU1NMRElSIChEZWZhdWx0OiBESVIvc3NsIGlmIHRoZQojICAgICAgICAgICAgICAgLS1wcmVmaXggb3B0aW9uIGlzIGdpdmVuOyAvdXNyL2xvY2FsL3NzbCBvdGhlcndpc2UpCiMgLS1wcmVmaXggICAgICBwcmVmaXggZm9yIHRoZSBPcGVuU1NMIGluY2x1ZGUsIGxpYiBhbmQgYmluIGRpcmVjdG9yaWVzCiMgICAgICAgICAgICAgICAoRGVmYXVsdDogdGhlIE9QRU5TU0xESVIgZGlyZWN0b3J5KQojCiMgLS1pbnN0YWxsX3ByZWZpeCAgQWRkaXRpb25hbCBwcmVmaXggZm9yIHBhY2thZ2UgYnVpbGRlcnMgKGVtcHR5IGJ5CiMgICAgICAgICAgICAgICBkZWZhdWx0KS4gIFRoaXMgbmVlZG4ndCBiZSBzZXQgaW4gYWR2YW5jZSwgeW91IGNhbgojICAgICAgICAgICAgICAganVzdCBhcyB3ZWxsIHVzZSAibWFrZSBJTlNUQUxMX1BSRUZJWD0vd2hhdGV2ZXIgaW5zdGFsbCIuCiMKIyAtLXdpdGgta3JiNS1kaXIgIERlY2xhcmUgd2hlcmUgS2VyYmVyb3MgNSBsaXZlcy4gIFRoZSBsaWJyYXJpZXMgYXJlIGV4cGVjdGVkCiMJCXRvIGxpdmUgaW4gdGhlIHN1YmRpcmVjdG9yeSBsaWIvIGFuZCB0aGUgaGVhZGVyIGZpbGVzIGluCiMJCWluY2x1ZGUvLiAgQSB2YWx1ZSBpcyByZXF1aXJlZC4KIyAtLXdpdGgta3JiNS1saWIgIERlY2xhcmUgd2hlcmUgdGhlIEtlcmJlcm9zIDUgbGlicmFyaWVzIGxpdmUuICBBIHZhbHVlIGlzCiMJCXJlcXVpcmVkLgojCQkoRGVmYXVsdDogS1JCNV9ESVIvbGliKQojIC0td2l0aC1rcmI1LWluY2x1ZGUgIERlY2xhcmUgd2hlcmUgdGhlIEtlcmJlcm9zIDUgaGVhZGVyIGZpbGVzIGxpdmUuICBBCiMJCXZhbHVlIGlzIHJlcXVpcmVkLgojCQkoRGVmYXVsdDogS1JCNV9ESVIvaW5jbHVkZSkKIyAtLXdpdGgta3JiNS1mbGF2b3IgIERlY2xhcmUgd2hhdCBmbGF2b3Igb2YgS2VyYmVyb3MgNSBpcyB1c2VkLiAgQ3VycmVudGx5CiMJCXN1cHBvcnRlZCB2YWx1ZXMgYXJlICJNSVQiIGFuZCAiSGVpbWRhbCIuICBBIHZhbHVlIGlzIHJlcXVpcmVkLgojCiMgLS10ZXN0LXNhbml0eSBNYWtlIGEgbnVtYmVyIG9mIHNhbml0eSBjaGVja3Mgb24gdGhlIGRhdGEgaW4gdGhpcyBmaWxlLgojICAgICAgICAgICAgICAgVGhpcyBpcyBhIGRlYnVnZ2luZyB0b29sIGZvciBPcGVuU1NMIGRldmVsb3BlcnMuCiMKIyAtLWNyb3NzLWNvbXBpbGUtcHJlZml4IEFkZCBzcGVjaWZpZWQgcHJlZml4IHRvIGJpbnV0aWxzIGNvbXBvbmVudHMuCiMKIyBuby1ody14eHggICAgIGRvIG5vdCBjb21waWxlIHN1cHBvcnQgZm9yIHNwZWNpZmljIGNyeXB0byBoYXJkd2FyZS4KIyAgICAgICAgICAgICAgIEdlbmVyaWMgT3BlblNTTC1zdHlsZSBtZXRob2RzIHJlbGF0aW5nIHRvIHRoaXMgc3VwcG9ydAojICAgICAgICAgICAgICAgYXJlIGFsd2F5cyBjb21waWxlZCBidXQgcmV0dXJuIE5VTEwgaWYgdGhlIGhhcmR3YXJlCiMgICAgICAgICAgICAgICBzdXBwb3J0IGlzbid0IGNvbXBpbGVkLgojIG5vLWh3ICAgICAgICAgZG8gbm90IGNvbXBpbGUgc3VwcG9ydCBmb3IgYW55IGNyeXB0byBoYXJkd2FyZS4KIyBbbm8tXXRocmVhZHMgIFtkb24ndF0gdHJ5IHRvIGNyZWF0ZSBhIGxpYnJhcnkgdGhhdCBpcyBzdWl0YWJsZSBmb3IKIyAgICAgICAgICAgICAgIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zIChkZWZhdWx0IGlzICJ0aHJlYWRzIiBpZiB3ZQojICAgICAgICAgICAgICAga25vdyBob3cgdG8gZG8gaXQpCiMgW25vLV1zaGFyZWQJW2Rvbid0XSB0cnkgdG8gY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgd2hlbiBzdXBwb3J0ZWQuCiMgbm8tYXNtICAgICAgICBkbyBub3QgdXNlIGFzc2VtYmxlcgojIG5vLWRzbyAgICAgICAgZG8gbm90IGNvbXBpbGUgaW4gYW55IG5hdGl2ZSBzaGFyZWQtbGlicmFyeSBtZXRob2RzLiBUaGlzCiMgICAgICAgICAgICAgICB3aWxsIGVuc3VyZSB0aGF0IGFsbCBtZXRob2RzIGp1c3QgcmV0dXJuIE5VTEwuCiMgbm8ta3JiNSAgICAgICBkbyBub3QgY29tcGlsZSBpbiBhbnkgS1JCNSBsaWJyYXJ5IG9yIGNvZGUuCiMgW25vLV16bGliICAgICBbZG9uJ3RdIGNvbXBpbGUgc3VwcG9ydCBmb3IgemxpYiBjb21wcmVzc2lvbi4KIyB6bGliLWR5bmFtaWMJTGlrZSAiemxpYiIsIGJ1dCB0aGUgemxpYiBsaWJyYXJ5IGlzIGV4cGVjdGVkIHRvIGJlIGEgc2hhcmVkCiMJCWxpYnJhcnkgYW5kIHdpbGwgYmUgbG9hZGVkIGluIHJ1bi10aW1lIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkuCiMgc2N0cCAgICAgICAgICBpbmNsdWRlIFNDVFAgc3VwcG9ydAojIDM4NiAgICAgICAgICAgZ2VuZXJhdGUgODAzODYgY29kZQojIG5vLXNzZTIJZGlzYWJsZXMgSUEtMzIgU1NFMiBjb2RlLCBhYm92ZSBvcHRpb24gaW1wbGllcyBuby1zc2UyCiMgbm8tPGNpcGhlcj4gICBidWlsZCB3aXRob3V0IHNwZWNpZmllZCBhbGdvcml0aG0gKHJzYSwgaWRlYSwgcmM1LCAuLi4pCiMgLTx4eHg+ICs8eHh4PiBjb21waWxlciBvcHRpb25zIGFyZSBwYXNzZWQgdGhyb3VnaAojCiMgREVCVUdfU0FGRVNUQUNLIHVzZSB0eXBlLXNhZmUgc3RhY2tzIHRvIGVuZm9yY2UgdHlwZS1zYWZldHkgb24gc3RhY2sgaXRlbXMKIwkJcHJvdmlkZWQgdG8gc3RhY2sgY2FsbHMuIEdlbmVyYXRlcyB1bmlxdWUgc3RhY2sgZnVuY3Rpb25zIGZvcgojCQllYWNoIHBvc3NpYmxlIHN0YWNrIHR5cGUuCiMgREVTX1BUUgl1c2UgcG9pbnRlciBsb29rdXAgdnMgYXJyYXlzIGluIHRoZSBERVMgaW4gY3J5cHRvL2Rlcy9kZXNfbG9jbC5oCiMgREVTX1JJU0MxCXVzZSBkaWZmZXJlbnQgREVTX0VOQ1JZUFQgbWFjcm8gdGhhdCBoZWxwcyByZWR1Y2UgcmVnaXN0ZXIKIwkJZGVwZW5kYW5jaWVzIGJ1dCBuZWVkcyB0byBtb3JlIHJlZ2lzdGVycywgZ29vZCBmb3IgUklTQyBDUFUncwojIERFU19SSVNDMglBIGRpZmZlcmVudCBSSVNDIHZhcmlhbnQuCiMgREVTX1VOUk9MTAl1bnJvbGwgdGhlIGlubmVyIERFUyBsb29wLCBzb21ldGltZXMgaGVscHMsIHNvbXRpbWVzIGhpbmRlcnMuCiMgREVTX0lOVAl1c2UgJ2ludCcgaW5zdGVhZCBvZiAnbG9uZycgZm9yIERFU19MT05HIGluIGNyeXB0by9kZXMvZGVzLmgKIwkJVGhpcyBpcyB1c2VkIG9uIHRoZSBERUMgQWxwaGEgd2hlcmUgbG9uZyBpcyA4IGJ5dGVzCiMJCWFuZCBpbnQgaXMgNAojIEJOX0xMT05HCXVzZSB0aGUgdHlwZSAnbG9uZyBsb25nJyBpbiBjcnlwdG8vYm4vYm4uaAojIE1EMl9DSEFSCXVzZSAnY2hhcicgaW5zdGVhZCBvZiAnaW50JyBmb3IgTUQyX0lOVCBpbiBjcnlwdG8vbWQyL21kMi5oCiMgTUQyX0xPTkcJdXNlICdsb25nJyBpbnN0ZWFkIG9mICdpbnQnIGZvciBNRDJfSU5UIGluIGNyeXB0by9tZDIvbWQyLmgKIyBJREVBX1NIT1JUCXVzZSAnc2hvcnQnIGluc3RlYWQgb2YgJ2ludCcgZm9yIElERUFfSU5UIGluIGNyeXB0by9pZGVhL2lkZWEuaAojIElERUFfTE9ORwl1c2UgJ2xvbmcnIGluc3RlYWQgb2YgJ2ludCcgZm9yIElERUFfSU5UIGluIGNyeXB0by9pZGVhL2lkZWEuaAojIFJDMl9TSE9SVAl1c2UgJ3Nob3J0JyBpbnN0ZWFkIG9mICdpbnQnIGZvciBSQzJfSU5UIGluIGNyeXB0by9yYzIvcmMyLmgKIyBSQzJfTE9ORwl1c2UgJ2xvbmcnIGluc3RlYWQgb2YgJ2ludCcgZm9yIFJDMl9JTlQgaW4gY3J5cHRvL3JjMi9yYzIuaAojIFJDNF9DSEFSCXVzZSAnY2hhcicgaW5zdGVhZCBvZiAnaW50JyBmb3IgUkM0X0lOVCBpbiBjcnlwdG8vcmM0L3JjNC5oCiMgUkM0X0xPTkcJdXNlICdsb25nJyBpbnN0ZWFkIG9mICdpbnQnIGZvciBSQzRfSU5UIGluIGNyeXB0by9yYzQvcmM0LmgKIyBSQzRfSU5ERVgJZGVmaW5lIFJDNF9JTkRFWCBpbiBjcnlwdG8vcmM0L3JjNF9sb2NsLmguICBUaGlzIHR1cm5zIG9uCiMJCWFycmF5IGxvb2t1cHMgaW5zdGVhZCBvZiBwb2ludGVyIHVzZS4KIyBSQzRfQ0hVTksJZW5hYmxlcyBjb2RlIHRoYXQgaGFuZGxlcyBkYXRhIGFsaWduZWQgYXQgbG9uZyAobmF0dXJhbCBDUFUKIwkJd29yZCkgYm91bmRhcnkuCiMgUkM0X0NIVU5LX0xMCWVuYWJsZXMgY29kZSB0aGF0IGhhbmRsZXMgZGF0YSBhbGlnbmVkIGF0IGxvbmcgbG9uZyBib3VuZGFyeQojCQkoaW50ZW5kZWQgZm9yIDY0LWJpdCBDUFVzIHJ1bm5pbmcgMzItYml0IE9TKS4KIyBCRl9QVFIJdXNlICdwb2ludGVyIGFyaXRobWF0aWMnIGZvciBCbG93ZmlzaCAodW5zYWZlIG9uIEFscGhhKS4KIyBCRl9QVFIyCWludGVsIHNwZWNpZmljIHZlcnNpb24gKGdlbmVyaWMgdmVyc2lvbiBpcyBtb3JlIGVmZmljaWVudCkuCiMKIyBGb2xsb3dpbmcgYXJlIHNldCBhdXRvbWF0aWNhbGx5IGJ5IHRoaXMgc2NyaXB0CiMKIyBNRDVfQVNNCXVzZSBzb21lIGV4dHJhIG1kNSBhc3NlbWJlciwKIyBTSEExX0FTTQl1c2Ugc29tZSBleHRyYSBzaGExIGFzc2VtYmVyLCBtdXN0IGRlZmluZSBMX0VORElBTiBmb3IgeDg2CiMgUk1EMTYwX0FTTQl1c2Ugc29tZSBleHRyYSByaXBlbWQxNjAgYXNzZW1iZXIsCiMgU0hBMjU2X0FTTQlzaGEyNTZfYmxvY2sgaXMgaW1wbGVtZW50ZWQgaW4gYXNzZW1ibGVyCiMgU0hBNTEyX0FTTQlzaGE1MTJfYmxvY2sgaXMgaW1wbGVtZW50ZWQgaW4gYXNzZW1ibGVyCiMgQUVTX0FTTQlBU0VfW2VufGRlXWNyeXB0IGlzIGltcGxlbWVudGVkIGluIGFzc2VtYmxlcgoKIyBNaW5pbXVtIHdhcm5pbmcgb3B0aW9ucy4uLiBhbnkgY29udHJpYnV0aW9ucyB0byBPcGVuU1NMIHNob3VsZCBhdCBsZWFzdCBnZXQKIyBwYXN0IHRoZXNlLgoKbXkgJGdjY19kZXZ0ZWFtX3dhcm4gPSAiLVdhbGwgLXBlZGFudGljIC1EUEVEQU5USUMgLVduby1sb25nLWxvbmcgLVdzaWduLWNvbXBhcmUgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdzaGFkb3cgLVdmb3JtYXQgLVdlcnJvciAtRENSWVBUT19NREVCVUdfQUxMIC1EQ1JZUFRPX01ERUJVR19BQk9SVCAtRFJFRl9DSEVDSyAtRE9QRU5TU0xfTk9fREVQUkVDQVRFRCI7CgpteSAkc3RyaWN0X3dhcm5pbmdzID0gMDsKCm15ICR4ODZfZ2NjX2Rlcz0iREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCI7CgojIE1EMl9DSEFSIHNsYWdzIHBlbnRpdW0gcHJvcwpteSAkeDg2X2djY19vcHRzPSJSQzRfSU5ERVggTUQyX0lOVCI7CgojIE1PRElGWSBUSEVTRSBQQVJBTUVURVJTIElGIFlPVSBBUkUgR09JTkcgVE8gVVNFIFRIRSAndXRpbC9zcGVlZC5zaCBTQ1JJUFQKIyBEb24ndCB3b3JyeSBhYm91dCB0aGVzZSBub3JtYWxseQoKbXkgJHRjYz0iY2MiOwpteSAkdGZsYWdzPSItZmFzdCAtWGEiOwpteSAkdGJuX211bD0iIjsKbXkgJHRsaWI9Ii1sbnNsIC1sc29ja2V0IjsKIyRiaXRzMT0iU0lYVEVFTl9CSVQgIjsKIyRiaXRzMj0iVEhJUlRZX1RXT19CSVQgIjsKbXkgJGJpdHMxPSJUSElSVFlfVFdPX0JJVCAiOwpteSAkYml0czI9IlNJWFRZX0ZPVVJfQklUICI7CgpteSAkeDg2X2FzbT0ieDg2Y3B1aWQubzpibi01ODYubyBjby01ODYubyB4ODYtbW9udC5vIHg4Ni1nZjJtLm86ZGVzLTU4Ni5vIGNyeXB0NTg2Lm86YWVzLTU4Ni5vIHZwYWVzLXg4Ni5vIGFlc25pLXg4Ni5vOmJmLTU4Ni5vOm1kNS01ODYubzpzaGExLTU4Ni5vIHNoYTI1Ni01ODYubyBzaGE1MTItNTg2Lm86Y2FzdC01ODYubzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJjNS01ODYubzp3cF9ibG9jay5vIHdwLW1teC5vOmNtbGwteDg2Lm86Z2hhc2gteDg2Lm86ZV9wYWRsb2NrLXg4Ni5vIjsKCm15ICR4ODZfZWxmX2FzbT0iJHg4Nl9hc206ZWxmIjsKCm15ICR4ODZfNjRfYXNtPSJ4ODZfNjRjcHVpZC5vOng4Nl82NC1nY2MubyB4ODZfNjQtbW9udC5vIHg4Nl82NC1tb250NS5vIHg4Nl82NC1nZjJtLm8gcnNhel9leHAubyByc2F6LXg4Nl82NC5vIHJzYXotYXZ4Mi5vOjphZXMteDg2XzY0Lm8gdnBhZXMteDg2XzY0Lm8gYnNhZXMteDg2XzY0Lm8gYWVzbmkteDg2XzY0Lm8gYWVzbmktc2hhMS14ODZfNjQubyBhZXNuaS1zaGEyNTYteDg2XzY0Lm8gYWVzbmktbWIteDg2XzY0Lm86Om1kNS14ODZfNjQubzpzaGExLXg4Nl82NC5vIHNoYTI1Ni14ODZfNjQubyBzaGE1MTIteDg2XzY0Lm8gc2hhMS1tYi14ODZfNjQubyBzaGEyNTYtbWIteDg2XzY0Lm86OnJjNC14ODZfNjQubyByYzQtbWQ1LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2MubzpnaGFzaC14ODZfNjQubyBhZXNuaS1nY20teDg2XzY0Lm86ZV9wYWRsb2NrLXg4Nl82NC5vIjsKbXkgJGlhNjRfYXNtPSJpYTY0Y3B1aWQubzpibi1pYTY0Lm8gaWE2NC1tb250Lm86OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1MTItaWE2NC5vOjpyYzQtaWE2NC5vIHJjNF9za2V5Lm86Ojo6OmdoYXNoLWlhNjQubzo6dm9pZCI7Cm15ICRzcGFyY3Y5X2FzbT0ic3BhcmN2OWNhcC5vIHNwYXJjY3B1aWQubzpibi1zcGFyY3Y5Lm8gc3BhcmN2OS1tb250Lm8gc3BhcmN2OWEtbW9udC5vIHZpczMtbW9udC5vIHNwYXJjdDQtbW9udC5vIHNwYXJjdjktZ2YybS5vOmRlc19lbmMtc3BhcmMubyBmY3J5cHRfYi5vIGRlc3Q0LXNwYXJjdjkubzphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtc3BhcmN2OS5vIGFlc3Q0LXNwYXJjdjkubzo6bWQ1LXNwYXJjdjkubzpzaGExLXNwYXJjdjkubyBzaGEyNTYtc3BhcmN2OS5vIHNoYTUxMi1zcGFyY3Y5Lm86Ojo6OjpjYW1lbGxpYS5vIGNtbGxfbWlzYy5vIGNtbGxfY2JjLm8gY21sbHQ0LXNwYXJjdjkubzpnaGFzaC1zcGFyY3Y5Lm86OnZvaWQiOwpteSAkc3BhcmN2OF9hc209IjpzcGFyY3Y4Lm86ZGVzX2VuYy1zcGFyYy5vIGZjcnlwdF9iLm86Ojo6Ojo6Ojo6Ojo6dm9pZCI7Cm15ICRhbHBoYV9hc209ImFscGhhY3B1aWQubzpibl9hc20ubyBhbHBoYS1tb250Lm86Ojo6OnNoYTEtYWxwaGEubzo6Ojo6OjpnaGFzaC1hbHBoYS5vOjp2b2lkIjsKbXkgJG1pcHM2NF9hc209Ijpibi1taXBzLm8gbWlwcy1tb250Lm86OmFlc19jYmMubyBhZXMtbWlwcy5vOjo6c2hhMS1taXBzLm8gc2hhMjU2LW1pcHMubyBzaGE1MTItbWlwcy5vOjo6Ojo6OjoiOwpteSAkbWlwczMyX2FzbT0kbWlwczY0X2FzbTsgJG1pcHMzMl9hc20gPX4gcy9ccypzaGE1MTJcLW1pcHNcLm8vLzsKbXkgJHMzOTB4X2FzbT0iczM5MHhjYXAubyBzMzkweGNwdWlkLm86Ym4tczM5MHgubyBzMzkweC1tb250Lm8gczM5MHgtZ2YybS5vOjphZXMtczM5MHgubyBhZXMtY3RyLm8gYWVzLXh0cy5vOjo6c2hhMS1zMzkweC5vIHNoYTI1Ni1zMzkweC5vIHNoYTUxMi1zMzkweC5vOjpyYzQtczM5MHgubzo6Ojo6Z2hhc2gtczM5MHgubzoiOwpteSAkYXJtdjRfYXNtPSJhcm1jYXAubyBhcm12NGNwdWlkLm86Ym5fYXNtLm8gYXJtdjQtbW9udC5vIGFybXY0LWdmMm0ubzo6YWVzX2NiYy5vIGFlcy1hcm12NC5vIGJzYWVzLWFybXY3Lm8gYWVzdjgtYXJteC5vOjo6c2hhMS1hcm12NC1sYXJnZS5vIHNoYTI1Ni1hcm12NC5vIHNoYTUxMi1hcm12NC5vOjo6Ojo6OmdoYXNoLWFybXY0Lm8gZ2hhc2h2OC1hcm14Lm86OnZvaWQiOwpteSAkYWFyY2g2NF9hc209ImFybWNhcC5vIGFybTY0Y3B1aWQubyBtZW1fY2xyLm86OjphZXNfY29yZS5vIGFlc19jYmMubyBhZXN2OC1hcm14Lm86OjpzaGExLWFybXY4Lm8gc2hhMjU2LWFybXY4Lm8gc2hhNTEyLWFybXY4Lm86Ojo6Ojo6Z2hhc2h2OC1hcm14Lm86IjsKbXkgJHBhcmlzYzExX2FzbT0icGFyaXNjaWQubzpibl9hc20ubyBwYXJpc2MtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtcGFyaXNjLm86OjpzaGExLXBhcmlzYy5vIHNoYTI1Ni1wYXJpc2MubyBzaGE1MTItcGFyaXNjLm86OnJjNC1wYXJpc2Mubzo6Ojo6Z2hhc2gtcGFyaXNjLm86OjMyIjsKbXkgJHBhcmlzYzIwX2FzbT0icGFyaXNjaWQubzpwYS1yaXNjMlcubyBwYXJpc2MtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtcGFyaXNjLm86OjpzaGExLXBhcmlzYy5vIHNoYTI1Ni1wYXJpc2MubyBzaGE1MTItcGFyaXNjLm86OnJjNC1wYXJpc2Mubzo6Ojo6Z2hhc2gtcGFyaXNjLm86OjY0IjsKbXkgJHBwYzY0X2FzbT0icHBjY3B1aWQubyBwcGNjYXAubzpibi1wcGMubyBwcGMtbW9udC5vIHBwYzY0LW1vbnQubzo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLXBwYy5vIHZwYWVzLXBwYy5vIGFlc3A4LXBwYy5vOjo6c2hhMS1wcGMubyBzaGEyNTYtcHBjLm8gc2hhNTEyLXBwYy5vIHNoYTI1NnA4LXBwYy5vIHNoYTUxMnA4LXBwYy5vOjo6Ojo6OmdoYXNocDgtcHBjLm86IjsKbXkgJHBwYzMyX2FzbT0kcHBjNjRfYXNtOwpteSAkbm9fYXNtPSI6Ojo6Ojo6Ojo6Ojo6Ojp2b2lkIjsKCiMgQXMgZm9yICRCU0R0aHJlYWRzLiBJZGVhIGlzIHRvIG1haW50YWluICJjb2xsZWN0aXZlIiBzZXQgb2YgZmxhZ3MsCiMgd2hpY2ggd291bGQgY292ZXIgYWxsIEJTRCBmbGF2b3JzLiAtcHRocmVhZCBhcHBsaWVzIHRvIHRoZW0gYWxsLAojIGJ1dCBpcyB0cmVhdGVkIGRpZmZlcmVudGx5LiBPcGVuQlNEIGV4cGFuZHMgaXMgYXMgLURfUE9TSVhfVEhSRUFECiMgLWxjX3IsIHdoaWNoIGlzIHN1ZmZpY2llbnQuIEZyZWVCU0QgNC54IGV4cGFuZHMgaXQgYXMgLWxjX3IsCiMgd2hpY2ggaGFzIHRvIGJlIGFjY29tcGFuaWVkIGJ5IGV4cGxpY2l0IC1EX1RIUkVBRF9TQUZFIGFuZAojIHNvbWV0aW1lcyAtRF9SRUVOVFJBTlQuIEZyZWVCU0QgNS54IGV4cGFuZHMgaXQgYXMgLWxjX3IsIHdoaWNoCiMgc2VlbXMgdG8gYmUgc3VmZmljaWVudD8KbXkgJEJTRHRocmVhZHM9Ii1wdGhyZWFkIC1EX1RIUkVBRF9TQUZFIC1EX1JFRU5UUkFOVCI7CgojY29uZmlnLXN0cmluZwkkY2MgOiAkY2ZsYWdzIDogJHVuaXN0ZCA6ICR0aHJlYWRfY2ZsYWcgOiAkc3lzX2lkIDogJGxmbGFncyA6ICRibl9vcHMgOiAkY3B1aWRfb2JqIDogJGJuX29iaiA6ICRkZXNfb2JqIDogJGFlc19vYmogOiAkYmZfb2JqIDogJG1kNV9vYmogOiAkc2hhMV9vYmogOiAkY2FzdF9vYmogOiAkcmM0X29iaiA6ICRybWQxNjBfb2JqIDogJHJjNV9vYmogOiAkd3Bfb2JqIDogJGNtbGxfb2JqIDogJG1vZGVzX29iaiA6ICRlbmdpbmVzX29iaiA6ICRkc29fc2NoZW1lIDogJHNoYXJlZF90YXJnZXQgOiAkc2hhcmVkX2NmbGFnIDogJHNoYXJlZF9sZGZsYWcgOiAkc2hhcmVkX2V4dGVuc2lvbiA6ICRyYW5saWIgOiAkYXJmbGFncyA6ICRtdWx0aWxpYgoKbXkgJXRhYmxlPSgKIyBGaWxlICdUQUJMRScgKGNyZWF0ZWQgYnkgJ21ha2UgVEFCTEUnKSBjb250YWlucyB0aGUgZGF0YSBmcm9tIHRoaXMgbGlzdCwKIyBmb3JtYXR0ZWQgZm9yIGJldHRlciByZWFkYWJpbGl0eS4KCgojImIiLAkJIiR7dGNjfToke3RmbGFnc306OiR7dGxpYn06JHtiaXRzMX06JHt0Ym5fbXVsfTo6IiwKIyJibC00Yy0yYyIsCSIke3RjY306JHt0ZmxhZ3N9Ojoke3RsaWJ9OiR7Yml0czF9Qk5fTExPTkcgUkM0X0NIQVIgTUQyX0NIQVI6JHt0Ym5fbXVsfTo6IiwKIyJibC00Yy1yaSIsCSIke3RjY306JHt0ZmxhZ3N9Ojoke3RsaWJ9OiR7Yml0czF9Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0lOREVYOiR7dGJuX211bH06OiIsCiMiYjItaXMtcmktZHAiLAkiJHt0Y2N9OiR7dGZsYWdzfTo6JHt0bGlifToke2JpdHMyfUlERUFfU0hPUlQgUkM0X0lOREVYIERFU19QVFI6JHt0Ym5fbXVsfTo6IiwKCiMgT3VyIGRldmVsb3BtZW50IGNvbmZpZ3MKInB1cmlmeSIsCSJwdXJpZnkgZ2NjOi1nIC1EUFVSSUZZIC1XYWxsOjoodW5rbm93bik6Oi1sc29ja2V0IC1sbnNsOjo6OiIsCiJkZWJ1ZyIsCSJnY2M6LURCTl9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURCTl9DVFhfREVCVUcgLURDUllQVE9fTURFQlVHIC1ET1BFTlNTTF9OT19BU00gLWdnZGIgLWcyIC1XZm9ybWF0IC1Xc2hhZG93IC1XbWlzc2luZy1wcm90b3R5cGVzIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVdlcnJvcjo6KHVua25vd24pOjotbGVmZW5jZTo6OjoiLAoiZGVidWctYmVuIiwJImdjYzokZ2NjX2RldnRlYW1fd2FybiAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURERUJVR19TQUZFU1RBQ0sgLU8yIC1waXBlOjoodW5rbm93bik6Ojo6OiIsCiJkZWJ1Zy1iZW4tb3BlbmJzZCIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURQRURBTlRJQyAtRERFQlVHX1NBRkVTVEFDSyAtRE9QRU5TU0xfT1BFTkJTRF9ERVZfQ1JZUFRPIC1ET1BFTlNTTF9OT19BU00gLU8yIC1wZWRhbnRpYyAtV2FsbCAtV3NoYWRvdyAtV2Vycm9yIC1waXBlOjoodW5rbm93bik6Ojo6IiwKImRlYnVnLWJlbi1vcGVuYnNkLWRlYnVnIiwiZ2NjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtRFBFREFOVElDIC1EREVCVUdfU0FGRVNUQUNLIC1ET1BFTlNTTF9PUEVOQlNEX0RFVl9DUllQVE8gLURPUEVOU1NMX05PX0FTTSAtZzMgLU8yIC1wZWRhbnRpYyAtV2FsbCAtV3NoYWRvdyAtV2Vycm9yIC1waXBlOjoodW5rbm93bik6Ojo6IiwKImRlYnVnLWJlbi1kZWJ1ZyIsCSJnY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLURCTl9ERUJVRyAtRENPTkZfREVCVUcgLURERUJVR19TQUZFU1RBQ0sgLURPUEVOU1NMX05PX0hXX1BBRExPQ0sgLWczIC1PMiAtcGlwZTo6KHVua25vd24pOjo6Ojo6IiwKImRlYnVnLWJlbi1kZWJ1Zy02NCIsCSJnY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLVduby1lcnJvcj1vdmVybGVuZ3RoLXN0cmluZ3MgLURCTl9ERUJVRyAtRENPTkZfREVCVUcgLURERUJVR19TQUZFU1RBQ0sgLURERUJVR19VTlVTRUQgLWczIC1PMyAtcGlwZTo6JHtCU0R0aHJlYWRzfTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiZGVidWctYmVuLWRlYnVnLTY0LWNsYW5nIiwJImNsYW5nOiRnY2NfZGV2dGVhbV93YXJuIC1mc2FuaXRpemU9dW5kZWZpbmVkIC1Xbm8tZXJyb3I9b3Zlcmxlbmd0aC1zdHJpbmdzIC1Xbm8tZXJyb3I9ZXh0ZW5kZWQtb2Zmc2V0b2YgLVduby1lcnJvcj1sYW5ndWFnZS1leHRlbnNpb24tdG9rZW4gLVdzdHJpY3Qtb3ZlcmZsb3cgLVF1bnVzZWQtYXJndW1lbnRzIC1EQk5fREVCVUcgLURDT05GX0RFQlVHIC1EREVCVUdfU0FGRVNUQUNLIC1EREVCVUdfVU5VU0VEIC1nMyAtTzMgLXBpcGU6OiR7QlNEdGhyZWFkc306OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWJlbi1kZWJ1Zy02NC1ub29wdCIsCSJnY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLVduby1lcnJvcj1vdmVybGVuZ3RoLXN0cmluZ3MgLURCTl9ERUJVRyAtRENPTkZfREVCVUcgLURERUJVR19TQUZFU1RBQ0sgLURERUJVR19VTlVTRUQgLWczIC1waXBlOjoke0JTRHRocmVhZHN9Ojo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1iZW4tbWFjb3MiLAkiY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLURPUEVOU1NMX05PX0FTTSAtREJOX0RFQlVHIC1EQ09ORl9ERUJVRyAtRERFQlVHX1NBRkVTVEFDSyAtRERFQlVHX1VOVVNFRCAtRE9QRU5TU0xfVEhSRUFEUyAtRF9SRUVOVFJBTlQgLUREU09fRExGQ04gLURIQVZFX0RMRkNOX0ggLWFyY2ggaTM4NiAtTzMgLURMX0VORElBTiAtZzMgLXBpcGU6Oih1bmtub3duKTo6Ojo6OiIsCiJkZWJ1Zy1iZW4tbm8tb3B0IiwJImdjYzogLVdhbGwgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1EREVCVUdfU0FGRVNUQUNLIC1EQ1JZUFRPX01ERUJVRyAtV2Vycm9yIC1ETF9FTkRJQU4gLURURVJNSU9TIC1XYWxsIC1nMzo6KHVua25vd24pOjo6Ojo6IiwKImRlYnVnLWJlbi1zdHJpY3QiLAkiZ2NjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtRENPTlNUX1NUUklDVCAtTzIgLVdhbGwgLVdzaGFkb3cgLVdlcnJvciAtV3BvaW50ZXItYXJpdGggLVdjYXN0LXF1YWwgLVd3cml0ZS1zdHJpbmdzIC1waXBlOjoodW5rbm93bik6Ojo6OjoiLAoiZGVidWctYmVuLWRhcndpbjY0IiwiY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLVduby1sYW5ndWFnZS1leHRlbnNpb24tdG9rZW4gLVduby1leHRlbmRlZC1vZmZzZXRvZiAtYXJjaCB4ODZfNjQgLU8zIC1ETF9FTkRJQU4gLURNRDMyX1JFR19UPWludCAtV2FsbDo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR4ODZfNjRfYXNtOm1hY29zeDpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1hcmNoIHg4Nl82NCAtZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCiJkZWJ1Zy1yc2UiLCJjYzotRFRFUk1JT1MgLURMX0VORElBTiAtcGlwZSAtTyAtZyAtZ2dkYjMgLVdhbGw6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfSIsCiJkZWJ1Zy1ib2RvIiwJImdjYzokZ2NjX2RldnRlYW1fd2FybiAtV25vLWVycm9yPW92ZXJsZW5ndGgtc3RyaW5ncyAtREJOX0RFQlVHIC1EQk5fREVCVUdfUkFORCAtRENPTkZfREVCVUcgLURCSU9fUEFJUl9ERUJVRyAtbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gLWcgLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKImRlYnVnLWVyYnJpZGdlIiwgICAiZ2NjOiRnY2NfZGV2dGVhbV93YXJuIC1EQk5fREVCVUcgLURDT05GX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gLWc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCiJkZWJ1Zy11bGYiLCAiZ2NjOi1EVEVSTUlPUyAtRExfRU5ESUFOIC1tYXJjaD1pNDg2IC1XYWxsIC1EQk5fREVCVUcgLURCTl9ERUJVR19SQU5EIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURPUEVOU1NMX05PX0FTTSAtZyAtV2Zvcm1hdCAtV3NoYWRvdyAtV21pc3NpbmctcHJvdG90eXBlcyAtV21pc3NpbmctZGVjbGFyYXRpb25zOjo6Q1lHV0lOMzI6Ojoke25vX2FzbX06d2luMzI6Y3lnd2luLXNoYXJlZDo6Oi5kbGwiLAoiZGVidWctc3RldmU2NCIsICJnY2M6JGdjY19kZXZ0ZWFtX3dhcm4gLW02NCAtRExfRU5ESUFOIC1EVEVSTUlPIC1EQ09ORl9ERUJVRyAtRERFQlVHX1NBRkVTVEFDSyAtV25vLW92ZXJsZW5ndGgtc3RyaW5ncyAtZzo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1zdGV2ZTMyIiwgImdjYzokZ2NjX2RldnRlYW1fd2FybiAtbTMyIC1ETF9FTkRJQU4gLURDT05GX0RFQlVHIC1EREVCVUdfU0FGRVNUQUNLIC1Xbm8tb3Zlcmxlbmd0aC1zdHJpbmdzIC1nIC1waXBlOjotRF9SRUVOVFJBTlQ6Oi1yZHluYW1pYyAtbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW0zMjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1zdGV2ZS1vcHQiLCAiZ2NjOiRnY2NfZGV2dGVhbV93YXJuIC1tNjQgLU8zIC1ETF9FTkRJQU4gLURURVJNSU8gLURDT05GX0RFQlVHIC1EREVCVUdfU0FGRVNUQUNLIC1Xbm8tb3Zlcmxlbmd0aC1zdHJpbmdzIC1nOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxldml0dGUtbGludXgtZWxmIiwiZ2NjOi1ETEVWSVRURV9ERUJVRyAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLURMX0VORElBTiAtZ2dkYiAtZzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1sZXZpdHRlLWxpbnV4LW5vYXNtIiwiZ2NjOi1ETEVWSVRURV9ERUJVRyAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLURPUEVOU1NMX05PX0FTTSAtRExfRU5ESUFOIC1nZ2RiIC1nMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1sZXZpdHRlLWxpbnV4LWVsZi1leHRyZW1lIiwiZ2NjOi1ETEVWSVRURV9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURCTl9ERUJVRyAtREJOX0RFQlVHX1JBTkQgLURDUllQVE9fTURFQlVHIC1ERU5HSU5FX0NPTkZfREVCVUcgLURMX0VORElBTiAtRFRFUk1JTyAtRFBFREFOVElDIC1nZ2RiIC1nMyAtcGVkYW50aWMgLWFuc2kgLVdhbGwgLVcgLVd1bmRlZiAtV3NoYWRvdyAtV2Nhc3QtYWxpZ24gLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAtV25vLWxvbmctbG9uZyAtV3VuZGVmIC1XY29udmVyc2lvbiAtcGlwZTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxldml0dGUtbGludXgtbm9hc20tZXh0cmVtZSIsImdjYzotRExFVklUVEVfREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fREVCVUcgLURCTl9ERUJVR19SQU5EIC1EQ1JZUFRPX01ERUJVRyAtREVOR0lORV9DT05GX0RFQlVHIC1ET1BFTlNTTF9OT19BU00gLURMX0VORElBTiAtRFRFUk1JTyAtRFBFREFOVElDIC1nZ2RiIC1nMyAtcGVkYW50aWMgLWFuc2kgLVdhbGwgLVcgLVd1bmRlZiAtV3NoYWRvdyAtV2Nhc3QtYWxpZ24gLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAtV25vLWxvbmctbG9uZyAtV3VuZGVmIC1XY29udmVyc2lvbiAtcGlwZTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1nZW9mZjMyIiwiZ2NjOi1EQk5fREVCVUcgLURCTl9ERUJVR19SQU5EIC1EQk5fU1RSSUNUIC1EUFVSSUZZIC1ET1BFTlNTTF9OT19ERVBSRUNBVEVEIC1ET1BFTlNTTF9OT19BU00gLURPUEVOU1NMX05PX0lOTElORV9BU00gLURMX0VORElBTiAtRFRFUk1JTyAtRFBFREFOVElDIC1PMSAtZ2dkYjIgLVdhbGwgLVdlcnJvciAtV3VuZGVmIC1wZWRhbnRpYyAtV3NoYWRvdyAtV3BvaW50ZXItYXJpdGggLVdiYWQtZnVuY3Rpb24tY2FzdCAtV2Nhc3QtYWxpZ24gLVdzaWduLWNvbXBhcmUgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV25vLWxvbmctbG9uZzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWdlb2ZmNjQiLCJnY2M6LURCTl9ERUJVRyAtREJOX0RFQlVHX1JBTkQgLURCTl9TVFJJQ1QgLURQVVJJRlkgLURPUEVOU1NMX05PX0RFUFJFQ0FURUQgLURPUEVOU1NMX05PX0FTTSAtRE9QRU5TU0xfTk9fSU5MSU5FX0FTTSAtRExfRU5ESUFOIC1EVEVSTUlPIC1EUEVEQU5USUMgLU8xIC1nZ2RiMiAtV2FsbCAtV2Vycm9yIC1XdW5kZWYgLXBlZGFudGljIC1Xc2hhZG93IC1XcG9pbnRlci1hcml0aCAtV2JhZC1mdW5jdGlvbi1jYXN0IC1XY2FzdC1hbGlnbiAtV3NpZ24tY29tcGFyZSAtV21pc3NpbmctcHJvdG90eXBlcyAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1Xbm8tbG9uZy1sb25nOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJkZWJ1Zy1saW51eC1wZW50aXVtIiwiZ2NjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtRExfRU5ESUFOIC1EVEVSTUlPIC1nIC1tY3B1PXBlbnRpdW0gLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY24iLAoiZGVidWctbGludXgtcHBybyIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURMX0VORElBTiAtRFRFUk1JTyAtZyAtbWNwdT1wZW50aXVtcHJvIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuIiwKImRlYnVnLWxpbnV4LWVsZiIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURMX0VORElBTiAtRFRFUk1JTyAtZyAtbWFyY2g9aTQ4NiAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGVmZW5jZSAtbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxpbnV4LWVsZi1ub2VmZW5jZSIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURMX0VORElBTiAtRFRFUk1JTyAtZyAtbWFyY2g9aTQ4NiAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxpbnV4LWlhMzItYWVzIiwgImdjYzotREFFU19FWFBFUklNRU5UQUwgLURMX0VORElBTiAtRFRFUk1JTyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306eDg2Y3B1aWQubzpibi01ODYubyBjby01ODYubyB4ODYtbW9udC5vOmRlcy01ODYubyBjcnlwdDU4Ni5vOmFlc194ODZjb3JlLm8gYWVzX2NiYy5vIGFlc25pLXg4Ni5vOmJmLTU4Ni5vOm1kNS01ODYubzpzaGExLTU4Ni5vIHNoYTI1Ni01ODYubyBzaGE1MTItNTg2Lm86Y2FzdC01ODYubzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJjNS01ODYubzp3cF9ibG9jay5vIHdwLW1teC5vOjpnaGFzaC14ODYubzplX3BhZGxvY2steDg2Lm86ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiZGVidWctbGludXgtZ2VuZXJpYzMyIiwiZ2NjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQ1JZUFRPX01ERUJVRyAtRFRFUk1JTyAtZyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxpbnV4LWdlbmVyaWM2NCIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLURURVJNSU8gLWcgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImRlYnVnLWxpbnV4LXg4Nl82NCIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLW02NCAtRExfRU5ESUFOIC1EVEVSTUlPIC1nIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAoiZGlzdCIsCQkiY2M6LU86Oih1bmtub3duKTo6Ojo6OiIsCgojIEJhc2ljIGNvbmZpZ3MgdGhhdCBzaG91bGQgd29yayBvbiBhbnkgKDMyIGFuZCBsZXNzIGJpdCkgYm94CiJnY2MiLAkJImdjYzotTzM6Oih1bmtub3duKTo6OkJOX0xMT05HOjo6IiwKImNjIiwJCSJjYzotTzo6KHVua25vd24pOjo6Ojo6IiwKCiMjIyNWT1MgQ29uZmlndXJhdGlvbnMKInZvcy1nY2MiLCJnY2M6LU8zIC1XYWxsIC1ET1BFTlNTTF9TWVNOQU1FX1ZPUyAtRF9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMIC1EX0JTRCAtRF9WT1NfRVhURU5ERURfTkFNRVMgLURCX0VORElBTjo6KHVua25vd24pOlZPUzotV2wsLW1hcDpCTl9MTE9ORzoke25vX2FzbX06Ojo6Oi5zbzoiLAoiZGVidWctdm9zLWdjYyIsImdjYzotTzAgLWcgLVdhbGwgLURPUEVOU1NMX1NZU05BTUVfVk9TIC1EX1BPU0lYX0NfU09VUkNFPTIwMDExMkwgLURfQlNEIC1EX1ZPU19FWFRFTkRFRF9OQU1FUyAtREJfRU5ESUFOIC1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQ1JZUFRPX01ERUJVRzo6KHVua25vd24pOlZPUzotV2wsLW1hcDpCTl9MTE9ORzoke25vX2FzbX06Ojo6Oi5zbzoiLAoKIyMjIyBTb2xhcmlzIHg4NiB3aXRoIEdOVSBDIHNldHVwcwojIC1ET1BFTlNTTF9OT19JTkxJTkVfQVNNIHN3aXRjaGVzIG9mZiBpbmxpbmUgYXNzZW1ibGVyLiBXZSBoYXZlIHRvIGRvIGl0CiMgaGVyZSBiZWNhdXNlIHdoZW5ldmVyIEdOVSBDIGluc3RhbnRpYXRlcyBhbiBhc3NlbWJsZXIgdGVtcGxhdGUgaXQKIyBzdXJyb3VuZHMgaXQgd2l0aCAjQVBQICNOT19BUFAgY29tbWVudCBwYWlyIHdoaWNoIChhdCBsZWFzdCBTb2xhcmlzCiMgN194ODYpIC91c3IvY2NzL2Jpbi9hcyBmYWlscyB0byBhc3NlbWJsZSB3aXRoICJJbGxlZ2FsIG1uZW1vbmljIgojIGVycm9yIG1lc3NhZ2UuCiJzb2xhcmlzLXg4Ni1nY2MiLCJnY2M6LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1tYXJjaD1wZW50aXVtIC1XYWxsIC1ETF9FTkRJQU4gLURPUEVOU1NMX05PX0lOTElORV9BU006Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LWZQSUM6LXNoYXJlZDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiMgLXNoYXJlZCAtc3RhdGljLWxpYmdjYyBtaWdodCBhcHBlYXIgY29udHJvdmVyc2lhbCwgYnV0IG1vZHVsZXMgdGFrZW4KIyBmcm9tIHN0YXRpYyBsaWJnY2MgZG8gbm90IGhhdmUgcmVsb2NhdGlvbnMgYW5kIGxpbmtpbmcgdGhlbSBpbnRvIG91cgojIHNoYXJlZCBvYmplY3RzIGRvZXNuJ3QgaGF2ZSBhbnkgbmVnYXRpdmUgc2lkZS1lZmZlY3RzLiBPbiB0aGUgY29udHJhcnksCiMgZG9pbmcgc28gbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIGdjYyBzaGFyZWQgYnVpbGQgd2l0aCBTdW4gQy4gR2l2ZW4KIyB0aGF0IGdjYyBnZW5lcmF0ZXMgZmFzdGVyIGNvZGUgW3RoYW5rcyB0byBpbmxpbmUgYXNzZW1ibGVyXSwgSSB3b3VsZAojIGFjdHVhbGx5IHJlY29tbWVuZCB0byBjb25zaWRlciB1c2luZyBnY2Mgc2hhcmVkIGJ1aWxkIGV2ZW4gd2l0aCB2ZW5kb3IKIyBjb21waWxlcjotKQojCQkJCQkJPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPgoic29sYXJpczY0LXg4Nl82NC1nY2MiLCJnY2M6LW02NCAtTzMgLVdhbGwgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjotbHNvY2tldCAtbG5zbCAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpzb2xhcmlzLXNoYXJlZDotZlBJQzotbTY0IC1zaGFyZWQgLXN0YXRpYy1saWJnY2M6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovNjQiLAoKIyMjIyBTb2xhcmlzIHg4NiB3aXRoIFN1biBDIHNldHVwcwoic29sYXJpcy14ODYtY2MiLCJjYzotZmFzdCAteGFyY2g9Z2VuZXJpYyAtTyAtWGE6Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1BUUiBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LUtQSUM6LUcgLWR5IC16IHRleHQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoic29sYXJpczY0LXg4Nl82NC1jYyIsImNjOi1mYXN0IC14YXJjaD1hbWQ2NCAteHN0cmNvbnN0IC1YYSAtRExfRU5ESUFOOjotRF9SRUVOVFJBTlQ6Oi1sc29ja2V0IC1sbnNsIC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1LUElDOi14YXJjaD1hbWQ2NCAtRyAtZHkgLXogdGV4dDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi82NCIsCgojIyMjIFNQQVJDIFNvbGFyaXMgd2l0aCBHTlUgQyBzZXR1cHMKInNvbGFyaXMtc3BhcmN2Ny1nY2MiLCJnY2M6LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1EQl9FTkRJQU4gLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbHNvY2tldCAtbG5zbCAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LWZQSUM6LXNoYXJlZDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJzb2xhcmlzLXNwYXJjdjgtZ2NjIiwiZ2NjOi1tdjggLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1EQl9FTkRJQU4gLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbHNvY2tldCAtbG5zbCAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpzb2xhcmlzLXNoYXJlZDotZlBJQzotc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIyAtbTMyIHNob3VsZCBiZSBzYWZlIHRvIGFkZCBhcyBsb25nIGFzIGRyaXZlciByZWNvZ25pemVzIC1tY3B1PXVsdHJhc3BhcmMKInNvbGFyaXMtc3BhcmN2OS1nY2MiLCJnY2M6LW0zMiAtbWNwdT11bHRyYXNwYXJjIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1mUElDOi1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoic29sYXJpczY0LXNwYXJjdjktZ2NjIiwiZ2NjOi1tNjQgLW1jcHU9dWx0cmFzcGFyYyAtTzMgLVdhbGwgLURCX0VORElBTjo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpzb2xhcmlzLXNoYXJlZDotZlBJQzotbTY0IC1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovNjQiLAojIyMjCiJkZWJ1Zy1zb2xhcmlzLXNwYXJjdjgtZ2NjIiwiZ2NjOi1EQk5fREVCVUcgLURSRUZfQ0hFQ0sgLURDT05GX0RFQlVHIC1EQk5fQ1RYX0RFQlVHIC1EQ1JZUFRPX01ERUJVR19BTEwgLU8gLWcgLW12OCAtV2FsbCAtREJfRU5ESUFOOjotRF9SRUVOVFJBTlQ6Oi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OF9hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1mUElDOi1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiZGVidWctc29sYXJpcy1zcGFyY3Y5LWdjYyIsImdjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUdfQUxMIC1EUEVEQU5USUMgLU8gLWcgLW1jcHU9dWx0cmFzcGFyYyAtcGVkYW50aWMgLWFuc2kgLVdhbGwgLVdzaGFkb3cgLVduby1sb25nLWxvbmcgLURfX0VYVEVOU0lPTlNfXyAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1mUElDOi1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoKIyMjIyBTUEFSQyBTb2xhcmlzIHdpdGggU3VuIEMgc2V0dXBzCiMgU0M0LjAgZG9lc24ndCBwYXNzICdtYWtlIHRlc3QnLCB1cGdyYWRlIHRvIFNDNS4wIG9yIFNDNC4yLgojIFNDNC4yIGlzIG9rLCBiZXR0ZXIgdGhhbiBnY2MgZXZlbiBvbiBibiBhcyBsb25nIGFzIHlvdSB0ZWxsIGl0IC14YXJjaD12OAojIFNDNS4wIG5vdGU6IENvbXBpbGVyIGNvbW1vbiBwYXRjaCAxMDczNTctMDEgb3IgbGF0ZXIgaXMgcmVxdWlyZWQhCiJzb2xhcmlzLXNwYXJjdjctY2MiLCJjYzoteE81IC14c3RyY29uc3QgLXhkZXBlbmQgLVhhIC1EQl9FTkRJQU4gLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbHNvY2tldCAtbG5zbCAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LUtQSUM6LUcgLWR5IC16IHRleHQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoic29sYXJpcy1zcGFyY3Y4LWNjIiwiY2M6LXhhcmNoPXY4IC14TzUgLXhzdHJjb25zdCAteGRlcGVuZCAtWGEgLURCX0VORElBTiAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OF9hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1LUElDOi1HIC1keSAteiB0ZXh0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKInNvbGFyaXMtc3BhcmN2OS1jYyIsImNjOi14dGFyZ2V0PXVsdHJhIC14YXJjaD12OHBsdXMgLXhPNSAteHN0cmNvbnN0IC14ZGVwZW5kIC1YYSAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1sc29ja2V0IC1sbnNsIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LX0xMIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOnNvbGFyaXMtc2hhcmVkOi1LUElDOi1HIC1keSAteiB0ZXh0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKInNvbGFyaXM2NC1zcGFyY3Y5LWNjIiwiY2M6LXh0YXJnZXQ9dWx0cmEgLXhhcmNoPXY5IC14TzUgLXhzdHJjb25zdCAteGRlcGVuZCAtWGEgLURCX0VORElBTjo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpzb2xhcmlzLXNoYXJlZDotS1BJQzoteGFyY2g9djkgLUcgLWR5IC16IHRleHQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovNjQiLAojIyMjCiJkZWJ1Zy1zb2xhcmlzLXNwYXJjdjgtY2MiLCJjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUdfQUxMIC14YXJjaD12OCAtZyAtTyAteHN0cmNvbnN0IC1YYSAtREJfRU5ESUFOIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y4X2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LUtQSUM6LUcgLWR5IC16IHRleHQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiZGVidWctc29sYXJpcy1zcGFyY3Y5LWNjIiwiY2M6LURCTl9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURCTl9DVFhfREVCVUcgLURDUllQVE9fTURFQlVHX0FMTCAteHRhcmdldD11bHRyYSAteGFyY2g9djhwbHVzIC1nIC1PIC14c3RyY29uc3QgLVhhIC1EQl9FTkRJQU4gLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LWxzb2NrZXQgLWxuc2wgLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTktfTEwgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246c29sYXJpcy1zaGFyZWQ6LUtQSUM6LUcgLWR5IC16IHRleHQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoKIyMjIyBTdW5PUyBjb25maWdzLCBhc3N1bWluZyBzcGFyYyBmb3IgdGhlIGdjYyBvbmUuCiMic3Vub3MtY2MiLCAiY2M6LU80IC1ETk9QUk9UTyAtRE5PQ09OU1Q6Oih1bmtub3duKTpTVU5PUzo6REVTX1VOUk9MTDoke25vX2FzbX06OiIsCiJzdW5vcy1nY2MiLCJnY2M6LU8zIC1tdjggLURzc2l6ZV90PWludDo6KHVua25vd24pOlNVTk9TOjpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfUFRSIERFU19SSVNDMToke25vX2FzbX06OiIsCgojIyMjIElSSVggNS54IGNvbmZpZ3MKIyAtbWlwczIgZmxhZyBpcyBhZGRlZCBieSAuL2NvbmZpZyB3aGVuIGFwcHJvcHJpYXRlLgoiaXJpeC1nY2MiLCJnY2M6LU8zIC1EVEVSTUlPUyAtREJfRU5ESUFOOjoodW5rbm93bik6OjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX1JJU0MyIERFU19QVFIgQkZfUFRSOiR7bWlwczMyX2FzbX06bzMyOmRsZmNuOmlyaXgtc2hhcmVkOjo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiaXJpeC1jYyIsICJjYzotTzIgLXVzZV9yZWFkb25seV9jb25zdCAtRFRFUk1JT1MgLURCX0VORElBTjo6KHVua25vd24pOjo6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19QVFIgREVTX1JJU0MyIERFU19VTlJPTEwgQkZfUFRSOiR7bWlwczMyX2FzbX06bzMyOmRsZmNuOmlyaXgtc2hhcmVkOjo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAojIyMjIElSSVggNi54IGNvbmZpZ3MKIyBPbmx5IE4zMiBhbmQgTjY0IEFCSXMgYXJlIHN1cHBvcnRlZC4gSWYgeW91IG5lZWQgTzMyIEFCSSBidWlsZCwgaW52b2tlCiMgJy4vQ29uZmlndXJlIGlyaXgtY2MgLW8zMicgbWFudWFsbHkuCiJpcml4LW1pcHMzLWdjYyIsImdjYzotbWFiaT1uMzIgLU8zIC1EVEVSTUlPUyAtREJfRU5ESUFOIC1EQk5fRElWM1c6Oi1EX1NHSV9NUF9TT1VSQ0U6OjpNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgUkM0X0NIVU5LX0xMIERFU19VTlJPTEwgREVTX1JJU0MyIERFU19QVFIgQkZfUFRSIFNJWFRZX0ZPVVJfQklUOiR7bWlwczY0X2FzbX06bjMyOmRsZmNuOmlyaXgtc2hhcmVkOjotbWFiaT1uMzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjozMiIsCiJpcml4LW1pcHMzLWNjIiwgImNjOi1uMzIgLW1pcHMzIC1PMiAtdXNlX3JlYWRvbmx5X2NvbnN0IC1HMCAtcmRhdGFfc2hhcmVkIC1EVEVSTUlPUyAtREJfRU5ESUFOIC1EQk5fRElWM1c6Oi1EX1NHSV9NUF9TT1VSQ0U6OjpERVNfUFRSIFJDNF9DSEFSIFJDNF9DSFVOS19MTCBERVNfUklTQzIgREVTX1VOUk9MTCBCRl9QVFIgU0lYVFlfRk9VUl9CSVQ6JHttaXBzNjRfYXNtfTpuMzI6ZGxmY246aXJpeC1zaGFyZWQ6Oi1uMzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjozMiIsCiMgTjY0IEFCSSBidWlsZHMuCiJpcml4NjQtbWlwczQtZ2NjIiwiZ2NjOi1tYWJpPTY0IC1taXBzNCAtTzMgLURURVJNSU9TIC1EQl9FTkRJQU4gLURCTl9ESVYzVzo6LURfU0dJX01QX1NPVVJDRTo6OlJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzIgREVTX1VOUk9MTCBTSVhUWV9GT1VSX0JJVF9MT05HOiR7bWlwczY0X2FzbX06NjQ6ZGxmY246aXJpeC1zaGFyZWQ6Oi1tYWJpPTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAoiaXJpeDY0LW1pcHM0LWNjIiwgImNjOi02NCAtbWlwczQgLU8yIC11c2VfcmVhZG9ubHlfY29uc3QgLUcwIC1yZGF0YV9zaGFyZWQgLURURVJNSU9TIC1EQl9FTkRJQU4gLURCTl9ESVYzVzo6LURfU0dJX01QX1NPVVJDRTo6OlJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzIgREVTX1VOUk9MTCBTSVhUWV9GT1VSX0JJVF9MT05HOiR7bWlwczY0X2FzbX06NjQ6ZGxmY246aXJpeC1zaGFyZWQ6Oi02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKCiMjIyMgVW5pZmllZCBIUC1VWCBBTlNJIEMgY29uZmlncy4KIyBTcGVjaWFsIG5vdGVzOgojIC0gT3JpZ2luYWxseSB3ZSB3ZXJlIG9wdGltaXppbmcgYXQgK080IGxldmVsLiBJdCBzaG91bGQgYmUgbm90ZWQKIyAgIHRoYXQgdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuICtPMyBhbmQgK080IGlzIGdsb2JhbCBpbnRlci0KIyAgIHByb2NlZHVyYWwgYW5hbHlzaXMuIEFzIGl0IGhhcyB0byBiZSBwZXJmb3JtZWQgZHVyaW5nIHRoZSBsaW5rCiMgICBzdGFnZSB0aGUgY29tcGlsZXIgbGVhdmVzIGJlaGluZCBjZXJ0YWluIHBzZXVkby1jb2RlIGluIGxpYiouYQojICAgd2hpY2ggbWlnaHQgYmUgcmVsZWFzZSBvciBldmVuIHBhdGNoIGxldmVsIHNwZWNpZmljLiBHZW5lcmF0aW5nCiMgICB0aGUgbWFjaGluZSBjb2RlIGZvciBhbmQgYW5hbHl6aW5nIHRoZSAqd2hvbGUqIHByb2dyYW0gYXBwZWFycwojICAgdG8gYmUgKmV4dHJlbWVseSogbWVtb3J5IGRlbWFuZGluZyB3aGlsZSB0aGUgcGVyZm9ybWFuY2UgZ2FpbiBpcwojICAgYWN0dWFsbHkgcXVlc3Rpb25hYmxlLiBUaGUgc2l0dWF0aW9uIGlzIGludGVuc2lmaWVkIGJ5IHRoZSBkZWZhdWx0CiMgICBIUC1VWCBkYXRhIHNldCBzaXplIGxpbWl0IChpbmZhbW91cyAnbWF4ZHNpeicgdHVuYWJsZSkgb2YgNjRNQgojICAgd2hpY2ggaXMgd2F5IHRvbyBsb3cgZm9yICtPNC4gSW4gb3RoZXIgd29yZHMsIGRvZXNuJ3QgK08zIG1ha2UKIyAgIG1vcmUgc2Vuc2U/CiMgLSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSFAgY29tcGlsZXIgYnkgZGVmYXVsdCBnZW5lcmF0ZXMgY29kZQojICAgc3VpdGFibGUgZm9yIGV4ZWN1dGlvbiBvbiB0aGUgaG9zdCB5b3UncmUgY3VycmVudGx5IGNvbXBpbGluZyBhdC4KIyAgIElmIHRoZSB0b29sa2l0IGlzIG1lbnQgdG8gYmUgdXNlZCBvbiB2YXJpb3VzIFBBLVJJU0MgcHJvY2Vzc29ycwojICAgY29uc2lkZXIgJy4vY29uZmlnICtEQXBvcnRhYmxlJy4KIyAtICtERDY0IGlzIGNob3NlbiBpbiBmYXZvdXIgb2YgK0RBMi4wVyBiZWNhdXNlIGl0J3MgbWVhbnQgdG8gYmUKIyAgIGNvbXBhdGlibGUgd2l0aCAqZnV0dXJlKiByZWxlYXNlcy4KIyAtIElmIHlvdSBydW4gLi9Db25maWd1cmUgaHB1eC1wYXJpc2MtW2ddY2MgbWFudWFsbHkgZG9uJ3QgZm9yZ2V0IHRvCiMgICBwYXNzIC1EX1JFRU5UUkFOVCBvbiBIUC1VWCAxMCBhbmQgbGF0ZXIuCiMgLSAtRE1EMzJfWEFSUkFZIHRyaWdnZXJzIHdvcmthcm91bmQgZm9yIGNvbXBpbGVyIGJ1ZyB3ZSByYW4gaW50byBpbgojICAgMzItYml0IG1lc3NhZ2UgZGlnZXN0cy4gKEZvciB0aGUgbW9tZW50IG9mIHRoaXMgd3JpdGluZykgSFAgQwojICAgZG9lc24ndCBzZWVtIHRvICJkaWdlc3QiIHRvbyBtYW55IGxvY2FsIHZhcmlhYmxlcyAodGhleSBtYWtlICJoaW0iCiMgICBjaGV3IGZvcmV2ZXI6LSkuIEZvciBtb3JlIGRldGFpbHMgbG9vay11cCBNRDMyX1hBUlJBWSBjb21tZW50IGluCiMgICBjcnlwdG8vc2hhL3NoYV9sY2wuaC4KIwkJCQkJPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPgojCiMgU2luY2UgdGhlcmUgaXMgbWVudGlvbiBvZiB0aGlzIGluIHNobGliL2hwdXgxMC1jYy5zaAoiaHB1eC1wYXJpc2MtY2MtbzQiLCJjYzotQWUgK080ICtFU2xpdCAteiAtREJfRU5ESUFOIC1EQk5fRElWMlcgLURNRDMyX1hBUlJBWTo6LURfUkVFTlRSQU5UOjotbGRsZDpCTl9MTE9ORyBERVNfUFRSIERFU19VTlJPTEwgREVTX1JJU0MxOiR7bm9fYXNtfTpkbDpocHV4LXNoYXJlZDorWjotYjouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJocHV4LXBhcmlzYy1nY2MiLCJnY2M6LU8zIC1EQl9FTkRJQU4gLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotV2wsK3MgLWxkbGQ6Qk5fTExPTkcgREVTX1BUUiBERVNfVU5ST0xMIERFU19SSVNDMToke25vX2FzbX06ZGw6aHB1eC1zaGFyZWQ6LWZQSUM6LXNoYXJlZDouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJocHV4LXBhcmlzYzFfMS1nY2MiLCJnY2M6LU8zIC1EQl9FTkRJQU4gLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotV2wsK3MgLWxkbGQ6Qk5fTExPTkcgREVTX1BUUiBERVNfVU5ST0xMIERFU19SSVNDMToke3BhcmlzYzExX2FzbX06ZGw6aHB1eC1zaGFyZWQ6LWZQSUM6LXNoYXJlZDouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9wYTEuMSIsCiJocHV4LXBhcmlzYzItZ2NjIiwiZ2NjOi1tYXJjaD0yLjAgLU8zIC1EQl9FTkRJQU4gLURfUkVFTlRSQU5UOjo6Oi1XbCwrcyAtbGRsZDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1BUUiBERVNfVU5ST0xMIERFU19SSVNDMToiLmV2YWx7bXkgJGFzbT0kcGFyaXNjMjBfYXNtOyRhc209fnMvMldcLi8yXC4vOyRhc209fnMvOjY0LzozMi87JGFzbX0uIjpkbDpocHV4LXNoYXJlZDotZlBJQzotc2hhcmVkOi5zbC5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6L3BhMjBfMzIiLAoiaHB1eDY0LXBhcmlzYzItZ2NjIiwiZ2NjOi1PMyAtREJfRU5ESUFOIC1EX1JFRU5UUkFOVDo6OjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIERFU19VTlJPTEwgREVTX1JJU0MxIERFU19JTlQ6OnBhLXJpc2MyVy5vOjo6Ojo6Ojo6Ojo6Ojp2b2lkOmRsZmNuOmhwdXgtc2hhcmVkOi1mcGljOi1zaGFyZWQ6LnNsLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovcGEyMF82NCIsCgojIE1vcmUgYXR0ZW1wdHMgYXQgdW5pZmllZCAxMC5YIGFuZCAxMS5YIHRhcmdldHMgZm9yIEhQIEMgY29tcGlsZXIuCiMKIyBDaHJpcyBSdWVtbWxlciA8cnVlbW1sZXJAY3VwLmhwLmNvbT4KIyBLZXZpbiBTdGV2ZXMgPGtzQGhwLnNlPgoiaHB1eC1wYXJpc2MtY2MiLCJjYzorTzMgK09wdHJzX3N0cm9uZ2x5X3R5cGVkIC1BZSArRVNsaXQgLURCX0VORElBTiAtREJOX0RJVjJXIC1ETUQzMl9YQVJSQVk6Oi1EX1JFRU5UUkFOVDo6LVdsLCtzIC1sZGxkOk1EMl9DSEFSIFJDNF9JTkRFWCBSQzRfQ0hBUiBERVNfVU5ST0xMIERFU19SSVNDMSBERVNfSU5UOiR7bm9fYXNtfTpkbDpocHV4LXNoYXJlZDorWjotYjouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJocHV4LXBhcmlzYzFfMS1jYyIsImNjOitEQTEuMSArTzMgK09wdHJzX3N0cm9uZ2x5X3R5cGVkIC1BZSArRVNsaXQgLURCX0VORElBTiAtRE1EMzJfWEFSUkFZOjotRF9SRUVOVFJBTlQ6Oi1XbCwrcyAtbGRsZDpNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgREVTX1VOUk9MTCBERVNfUklTQzEgREVTX0lOVDoke3BhcmlzYzExX2FzbX06ZGw6aHB1eC1zaGFyZWQ6K1o6LWI6LnNsLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovcGExLjEiLAoiaHB1eC1wYXJpc2MyLWNjIiwiY2M6K0RBMi4wICtEUzIuMCArTzMgK09wdHJzX3N0cm9uZ2x5X3R5cGVkIC1BZSArRVNsaXQgLURCX0VORElBTiAtRE1EMzJfWEFSUkFZIC1EX1JFRU5UUkFOVDo6OjotV2wsK3MgLWxkbGQ6U0lYVFlfRk9VUl9CSVQgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIERFU19VTlJPTEwgREVTX1JJU0MxIERFU19JTlQ6Ii5ldmFse215ICRhc209JHBhcmlzYzIwX2FzbTskYXNtPX5zLzJXXC4vMlwuLzskYXNtPX5zLzo2NC86MzIvOyRhc219LiI6ZGw6aHB1eC1zaGFyZWQ6K1o6LWI6LnNsLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovcGEyMF8zMiIsCiJocHV4NjQtcGFyaXNjMi1jYyIsImNjOitERDY0ICtPMyArT3B0cnNfc3Ryb25nbHlfdHlwZWQgLUFlICtFU2xpdCAtREJfRU5ESUFOIC1ETUQzMl9YQVJSQVkgLURfUkVFTlRSQU5UOjo6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgREVTX1VOUk9MTCBERVNfUklTQzEgREVTX0lOVDoke3BhcmlzYzIwX2FzbX06ZGxmY246aHB1eC1zaGFyZWQ6K1o6K0RENjQgLWI6LnNsLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovcGEyMF82NCIsCgojIEhQL1VYIElBLTY0IHRhcmdldHMKImhwdXgtaWE2NC1jYyIsImNjOi1BZSArREQzMiArTzIgK09saXQ9YWxsIC16IC1EQl9FTkRJQU4gLURfUkVFTlRSQU5UOjo6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgTUQyX0NIQVIgUkM0X0lOREVYIERFU19VTlJPTEwgREVTX1JJU0MxIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246aHB1eC1zaGFyZWQ6K1o6K0REMzIgLWI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjovaHB1eDMyIiwKIyBGcmFuayBHZXVydHMgPGZyYW5rLmdldXJ0c0BubC5hYm5hbXJvLmNvbT4gaGFzIHBhdGllbnRseSBhc3Npc3RlZCB3aXRoCiMgd2l0aCBkZWJ1Z2dpbmcgb2YgdGhlIGZvbGxvd2luZyBjb25maWcuCiJocHV4NjQtaWE2NC1jYyIsImNjOi1BZSArREQ2NCArTzMgK09saXQ9YWxsIC16IC1EQl9FTkRJQU4gLURfUkVFTlRSQU5UOjo6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTCBERVNfUklTQzEgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpocHV4LXNoYXJlZDorWjorREQ2NCAtYjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9ocHV4NjQiLAojIEdDQyBidWlsZHMuLi4KImhwdXgtaWE2NC1nY2MiLCJnY2M6LU8zIC1EQl9FTkRJQU4gLURfUkVFTlRSQU5UOjo6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgTUQyX0NIQVIgUkM0X0lOREVYIERFU19VTlJPTEwgREVTX1JJU0MxIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246aHB1eC1zaGFyZWQ6LWZwaWM6LXNoYXJlZDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6Oi9ocHV4MzIiLAoiaHB1eDY0LWlhNjQtZ2NjIiwiZ2NjOi1tbHA2NCAtTzMgLURCX0VORElBTiAtRF9SRUVOVFJBTlQ6Ojo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMIERFU19SSVNDMSBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNuOmhwdXgtc2hhcmVkOi1mcGljOi1tbHA2NCAtc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6L2hwdXg2NCIsCgojIExlZ2FjeSBIUFVYIDkuWCBjb25maWdzLi4uCiJocHV4LWNjIiwJImNjOi1EQl9FTkRJQU4gLURCTl9ESVYyVyAtRE1EMzJfWEFSUkFZIC1BZSArRVNsaXQgK08yIC16OjoodW5rbm93bik6Oi1XbCwrcyAtbGRsZDpERVNfUFRSIERFU19VTlJPTEwgREVTX1JJU0MxOiR7bm9fYXNtfTpkbDpocHV4LXNoYXJlZDorWjotYjouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJocHV4LWdjYyIsCSJnY2M6LURCX0VORElBTiAtREJOX0RJVjJXIC1PMzo6KHVua25vd24pOjotV2wsK3MgLWxkbGQ6REVTX1BUUiBERVNfVU5ST0xMIERFU19SSVNDMToke25vX2FzbX06ZGw6aHB1eC1zaGFyZWQ6LWZQSUM6LXNoYXJlZDouc2wuXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgojIyMjIEhQIE1QRS9pWCBodHRwOi8vamF6ei5leHRlcm5hbC5ocC5jb20vc3JjL29wZW5zc2wvCiJNUEUvaVgtZ2NjIiwJImdjYzotRF9FTkRJQU4gLURCTl9ESVYyVyAtTzMgLURfUE9TSVhfU09VUkNFIC1EX1NPQ0tFVF9TT1VSQ0UgLUkvU1lTTE9HL1BVQjo6KHVua25vd24pOk1QRTotTC9TWVNMT0cvUFVCIC1sc3lzbG9nIC1sc29ja2V0IC1sY3Vyc2VzOkJOX0xMT05HIERFU19QVFIgREVTX1VOUk9MTCBERVNfUklTQzE6OjoiLAoKIyBERUMgQWxwaGEgT1NGLzEvVHJ1NjQgdGFyZ2V0cy4KIwojCSJXaGF0J3MgaW4gYSBuYW1lPyBUaGF0IHdoaWNoIHdlIGNhbGwgYSByb3NlCiMJIEJ5IGFueSBvdGhlciB3b3JkIHdvdWxkIHNtZWxsIGFzIHN3ZWV0LiIKIwojIC0gV2lsbGlhbSBTaGFrZXNwZWFyZSwgIlJvbWVvICYgSnVsaWV0IiwgQWN0IElJLCBzY2VuZSBJSS4KIwojIEZvciBnY2MsIHRoZSBmb2xsb3dpbmcgZ2F2ZSBhICU1MCBzcGVlZHVwIG9uIGEgMTY0IG92ZXIgdGhlICdERVNfSU5UJyB2ZXJzaW9uCiMKIm9zZjEtYWxwaGEtZ2NjIiwgImdjYzotTzM6Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX1JJU0MxOiR7YWxwaGFfYXNtfTpkbGZjbjphbHBoYS1vc2YxLXNoYXJlZDo6Oi5zbyIsCiJvc2YxLWFscGhhLWNjIiwgICJjYzotc3RkMSAtdHVuZSBob3N0IC1PNCAtcmVhZG9ubHlfc3RyaW5nczo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjo6LnNvIiwKInRydTY0LWFscGhhLWNjIiwgImNjOi1zdGQxIC10dW5lIGhvc3QgLWZhc3QgLXJlYWRvbmx5X3N0cmluZ3M6Oi1wdGhyZWFkOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjotbXN5bTouc28iLAoKIyMjIwojIyMjIFZhcmlldHkgb2YgTElOVVg6LSkKIyMjIwojICotZ2VuZXJpYyogaXMgZW5kaWFuLW5ldXRyYWwgdGFyZ2V0LCBidXQgLi9jb25maWcgaXMgZnJlZSB0bwojIHRocm93IGluIC1EW0JMXV9FTkRJQU4sIHdoaWNoZXZlciBhcHByb3ByaWF0ZS4uLgoibGludXgtZ2VuZXJpYzMyIiwiZ2NjOi1EVEVSTUlPIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImxpbnV4LXBwYyIsCSJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiMgSXQncyBiZWxpZXZlZCB0aGF0IG1ham9yaXR5IG9mIEFSTSB0b29sY2hhaW5zIHByZWRlZmluZSBhcHByb3ByaWF0ZSAtbWFyY2guCiMgSWYgeW91IGNvbXBpbGVyIGRvZXMgbm90LCBkbyBjb21wbGVtZW50IGNvbmZpZyBjb21tYW5kIGxpbmUgd2l0aCBvbmUhCiJsaW51eC1hcm12NCIsCSJnY2M6LURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgtYWFyY2g2NCIsImdjYzotRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YWFyY2g2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiMgQ29uZmlndXJlIHNjcmlwdCBhZGRzIG1pbmltYWxseSByZXF1aXJlZCAtbWFyY2ggZm9yIGFzc2VtYmx5IHN1cHBvcnQsCiMgaWYgbm8gLW1hcmNoIHdhcyBzcGVjaWZpZWQgYXQgY29tbWFuZCBsaW5lLiBtaXBzMzIgYW5kIG1pcHM2NCBiZWxvdwojIHJlZmVyIHRvIGNvbnRlbXBvcmFyeSBNSVBTIEFyY2hpdGVjdHVyZSBzcGVjaWZpY2F0aW9ucywgTUlQUzMyIGFuZAojIE1JUFM2NCwgcmF0aGVyIHRoYW4gdG8ga2VybmVsIGJpdG5lc3MuCiJsaW51eC1taXBzMzIiLAkiZ2NjOi1tYWJpPTMyIC1EVEVSTUlPIC1PMyAtV2FsbCAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHttaXBzMzJfYXNtfTpvMzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJsaW51eC1taXBzNjQiLCAgICJnY2M6LW1hYmk9bjMyIC1EVEVSTUlPIC1PMyAtV2FsbCAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHttaXBzNjRfYXNtfTpuMzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tYWJpPW4zMjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjMyIiwKImxpbnV4NjQtbWlwczY0IiwgICAiZ2NjOi1tYWJpPTY0IC1EVEVSTUlPIC1PMyAtV2FsbCAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21pcHM2NF9hc219OjY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbWFiaT02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKIyMjIyBJQS0zMiB0YXJnZXRzLi4uCiJsaW51eC1pYTMyLWljYyIsCSJpY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzI6Oi1EX1JFRU5UUkFOVDo6LWxkbCAtbm9fY3BwcnQ6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotS1BJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgtZWxmIiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImxpbnV4LWFvdXQiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1tYXJjaD1pNDg2IC1XYWxsOjoodW5rbm93bik6OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfYXNtfTphLm91dCIsCiMjIyMKImxpbnV4LWdlbmVyaWM2NCIsImdjYzotRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImxpbnV4LXBwYzY0IiwJImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCiJsaW51eC1wcGM2NGxlIiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDokcHBjNjRfYXNtOmxpbnV4NjRsZTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OiIsCiJsaW51eC1pYTY0IiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImxpbnV4LWlhNjQtaWNjIiwiaWNjOi1ETF9FTkRJQU4gLURURVJNSU8gLU8yIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGwgLW5vX2NwcHJ0OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgteDg2XzY0IiwJImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAoibGludXgteDg2XzY0LWljYyIsICJpY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzI6Oi1EX1JFRU5UUkFOVDo6LWxkbCAtbm9fY3BwcnQ6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCiJsaW51eC14MzIiLAkiZ2NjOi1teDMyIC1ETF9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW14MzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojp4MzI6IiwKImxpbnV4NjQtczM5MHgiLAkiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHtzMzkweF9hc219OjY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAojIyMjIFNvIGNhbGxlZCAiaGlnaGdwcnMiIHRhcmdldCBmb3Igei9BcmNoaXRlY3R1cmUgQ1BVcwojICJIaWdoZ3BycyIgaXMga2VybmVsIGZlYXR1cmUgZmlyc3QgaW1wbGVtZW50ZWQgaW4gTGludXggMi42LjMyLCBzZWUKIyAvcHJvYy9jcHVpbmZvLiBUaGUgaWRlYSBpcyB0byBwcmVzZXJ2ZSBtb3N0IHNpZ25pZmljYW50IGJpdHMgb2YKIyBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzIG5vdCBvbmx5IHVwb24gMzItYml0IHByb2Nlc3MgY29udGV4dAojIHN3aXRjaCwgYnV0IGV2ZW4gb24gYXN5bmNocm9ub3VzIHNpZ25hbCBkZWxpdmVyeSB0byBzdWNoIHByb2Nlc3MuCiMgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBkZXBsb3kgNjQtYml0IGluc3RydWN0aW9ucyBldmVuIGluIGxlZ2FjeQojIGFwcGxpY2F0aW9uIGNvbnRleHQgYW5kIGFjaGlldmUgYmV0dGVyIFtvciBzaG91bGQgd2Ugc2F5IGFkZXF1YXRlXQojIHBlcmZvcm1hbmNlLiBUaGUgYnVpbGQgaXMgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBsaW51eC1nZW5lcmljMzIsCiMgYW5kIHRoZSBpZGVhIGlzIHRvIGJlIGFibGUgdG8gaW5zdGFsbCB0aGUgcmVzdWx0aW5nIGxpYmNyeXB0by5zbwojIGFsb25nc2lkZSBnZW5lcmljIG9uZSwgZS5nLiBhcyAvbGliL2hpZ2hncHJzL2xpYmNyeXB0by5zby54LnksIGZvcgojIGxkY29uZmlnIGFuZCBydW4tdGltZSBsaW5rZXIgdG8gYXV0b2Rpc2NvdmVyLiBVbmZvcnR1bmF0ZWx5IGl0CiMgZG9lc24ndCB3b3JrIGp1c3QgeWV0LCBiZWNhdXNlIG9mIGNvdXBsZSBvZiBidWdzIGluIGdsaWJjCiMgc3lzZGVwcy9zMzkwL2RsLXByb2NpbmZvLmMgYWZmZWN0aW5nIGxkY29uZmlnIGFuZCBsZC5zby4xLi4uCiJsaW51eDMyLXMzOTB4IiwJImdjYzotbTMxIC1XYSwtbXphcmNoIC1EQl9FTkRJQU4gLURURVJNSU8gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoiLmV2YWx7bXkgJGFzbT0kczM5MHhfYXNtOyRhc209fnMvYm5cLXMzOTB4XC5vL2JuX2FzbS5vLzskYXNtfS4iOjMxOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTMxOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6L2hpZ2hncHJzIiwKIyMjIyBTUEFSQyBMaW51eCBzZXR1cHMKIyBSYXkgTWlsbGVyIDxyYXkubWlsbGVyQGNvbXB1dGluZy1zZXJ2aWNlcy5veGZvcmQuYWMudWs+IGhhcyBwYXRpZW50bHkKIyBhc3Npc3RlZCB3aXRoIGRlYnVnZ2luZyBvZiBmb2xsb3dpbmcgdHdvIGNvbmZpZ3MuCiJsaW51eC1zcGFyY3Y4IiwiZ2NjOi1tdjggLURCX0VORElBTiAtRFRFUk1JTyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGwgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIyBpdCdzIGEgcmVhbCBtZXNzIHdpdGggLW1jcHU9dWx0cmFzcGFyYyBvcHRpb24gdW5kZXIgTGludXgsIGJ1dAojIC1XYSwtQXY4cGx1cyBzaG91bGQgZG8gdGhlIHRyaWNrIG5vIG1hdHRlciB3aGF0LgoibGludXgtc3BhcmN2OSIsImdjYzotbTMyIC1tY3B1PXVsdHJhc3BhcmMgLURCX0VORElBTiAtRFRFUk1JTyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGwgLVdhLC1BdjhwbHVzIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTMyOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIyBHQ0MgMy4xIGlzIGEgcmVxdWlyZW1lbnQKImxpbnV4NjQtc3BhcmN2OSIsImdjYzotbTY0IC1tY3B1PXVsdHJhc3BhcmMgLURCX0VORElBTiAtRFRFUk1JTyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDpVTFRSQVNQQVJDOi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCiMjIyMgQWxwaGEgTGludXggd2l0aCBHTlUgQyBhbmQgQ29tcGFxIEMgc2V0dXBzCiMgU3BlY2lhbCBub3RlczoKIyAtIGxpbnV4LWFscGhhK2J3eC1nY2MgaXMgbWVudCB0byBiZSB1c2VkIGZyb20gLi9jb25maWcgb25seS4gSWYgeW91CiMgICBvdWdodCB0byBydW4gJy4vQ29uZmlndXJlIGxpbnV4LWFscGhhK2J3eC1nY2MnIG1hbnVhbGx5LCBkbwojICAgY29tcGxlbWVudCB0aGUgY29tbWFuZCBsaW5lIHdpdGggLW1jcHU9ZXY1NiwgLW1jcHU9ZXY2IG9yIHdoYXRldmVyCiMgICB3aGljaCBpcyBhcHByb3ByaWF0ZS4KIyAtIElmIHlvdSB1c2UgY2NjIGtlZXAgaW4gbWluZCB0aGF0IC1mYXN0IGltcGxpZXMgLWFyY2ggaG9zdCBhbmQgdGhlCiMgICBjb21waWxlciBpcyBmcmVlIHRvIGlzc3VlIGluc3RydWN0aW9ucyB3aGljaCBnb25uYSBtYWtlIGVsZGVyIENQVQojICAgY2hva2UuIElmIHlvdSB3aXNoIHRvIGJ1aWxkICJibGVuZGVkIiB0b29sa2l0LCBhZGQgLWFyY2ggZ2VuZXJpYwojICAgKmFmdGVyKiAtZmFzdCBhbmQgaW52b2tlICcuL0NvbmZpZ3VyZSBsaW51eC1hbHBoYS1jY2MnIG1hbnVhbGx5LgojCiMJCQkJCTxhcHByb0BmeS5jaGFsbWVycy5zZT4KIwoibGludXgtYWxwaGEtZ2NjIiwiZ2NjOi1PMyAtRExfRU5ESUFOIC1EVEVSTUlPOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoibGludXgtYWxwaGErYnd4LWdjYyIsImdjYzotTzMgLURMX0VORElBTiAtRFRFUk1JTzo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImxpbnV4LWFscGhhLWNjYyIsImNjYzotZmFzdCAtcmVhZG9ubHlfc3RyaW5ncyAtRExfRU5ESUFOIC1EVEVSTUlPOjotRF9SRUVOVFJBTlQ6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219IiwKImxpbnV4LWFscGhhK2J3eC1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTiAtRFRFUk1JTzo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCiMKIyBUSV9DR1RfQzYwMDBfNy4zLnggaXMgYSByZXF1aXJlbWVudAoibGludXgtYzY0eHBsdXMiLCJjbDZ4Oi0tbGludXggLWVhPS5zIC1lbz0ubyAtbXY2NDAwKyAtbzIgLW94IC1tcyAtcGRlbiAtRE9QRU5TU0xfU01BTExfRk9PVFBSSU5UOjotRF9SRUVOVFJBTlQ6OjpCTl9MTE9ORzpjNjR4cGx1c2NwdWlkLm86Ym4tYzY0eHBsdXMubyBjNjR4cGx1cy1nZjJtLm86OmFlcy1jNjR4cGx1cy5vIGFlc19jYmMubyBhZXNfY3RyLm86OjpzaGExLWM2NHhwbHVzLm8gc2hhMjU2LWM2NHhwbHVzLm8gc2hhNTEyLWM2NHhwbHVzLm86OnJjNC1jNjR4cGx1cy5vOjo6OjpnaGFzaC1jNjR4cGx1cy5vOjp2b2lkOmRsZmNuOmxpbnV4LXNoYXJlZDotLXBpYzoteiAtLXN5c3YgLS1zaGFyZWQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6dHJ1ZSIsCgojIEFuZHJvaWQ6IGxpbnV4LSogYnV0IHdpdGhvdXQgLURURVJNSU8gYW5kIHBvaW50ZXJzIHRvIGhlYWRlcnMgYW5kIGxpYnMuCiJhbmRyb2lkIiwiZ2NjOi1tYW5kcm9pZCAtSVwkKEFORFJPSURfREVWKS9pbmNsdWRlIC1CXCQoQU5EUk9JRF9ERVYpL2xpYiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJhbmRyb2lkLXg4NiIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiIuZXZhbHtteSAkYXNtPSR7eDg2X2VsZl9hc219OyRhc209fnMvOmVsZi86YW5kcm9pZC87JGFzbX0uIjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImFuZHJvaWQtYXJtdjciLCJnY2M6LW1hcmNoPWFybXY3LWEgLW1hbmRyb2lkIC1JXCQoQU5EUk9JRF9ERVYpL2luY2x1ZGUgLUJcJChBTkRST0lEX0RFVikvbGliIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKImFuZHJvaWQtbWlwcyIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHttaXBzMzJfYXNtfTpvMzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgojIyMjICpCU0QgW2RvIHNlZSBjb21tZW50IGFib3V0ICR7QlNEdGhyZWFkc30gYWJvdmUhXQoiQlNELWdlbmVyaWMzMiIsImdjYzotRFRFUk1JT1MgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjoke0JTRHRocmVhZHN9Ojo6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIkJTRC14ODYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6JHtCU0R0aHJlYWRzfTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmEub3V0OmRsZmNuOmJzZC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKIkJTRC14ODYtZWxmIiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6OiR7QlNEdGhyZWFkc306OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246YnNkLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAoiZGVidWctQlNELXg4Ni1lbGYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtV2FsbCAtZzo6JHtCU0R0aHJlYWRzfTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpic2Qtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJCU0Qtc3BhcmN2OCIsCSJnY2M6LURCX0VORElBTiAtRFRFUk1JT1MgLU8zIC1tdjggLVdhbGw6OiR7QlNEdGhyZWFkc306OjpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMOiR7c3BhcmN2OF9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgoiQlNELWdlbmVyaWM2NCIsImdjYzotRFRFUk1JT1MgLU8zIC1XYWxsOjoke0JTRHRocmVhZHN9Ojo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAojIC1ETUQzMl9SRUdfVD1pbnQgZG9lc24ndCBhY3R1YWxseSBiZWxvbmcgaW4gc3BhcmM2NCB0YXJnZXQsIGl0CiMgc2ltcGx5ICpoYXBwZW5zKiB0byB3b3JrIGFyb3VuZCBhIGNvbXBpbGVyIGJ1ZyBpbiBnY2MgMy4zLjMsCiMgdHJpZ2dlcmVkIGJ5IFJJUEVNRDE2MCBjb2RlLgoiQlNELXNwYXJjNjQiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TIC1PMyAtRE1EMzJfUkVHX1Q9aW50IC1XYWxsOjoke0JTRHRocmVhZHN9Ojo6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzIgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJCU0QtaWE2NCIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgLU8zIC1XYWxsOjoke0JTRHRocmVhZHN9Ojo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJCU0QteDg2XzY0IiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLVdhbGw6OiR7QlNEdGhyZWFkc306OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKCiJic2RpLWVsZi1nY2MiLCAgICAgImdjYzotRFBFUkw1IC1ETF9FTkRJQU4gLWZvbWl0LWZyYW1lLXBvaW50ZXIgLU8zIC1tYXJjaD1pNDg2IC1XYWxsOjoodW5rbm93bik6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgoibmV4dHN0ZXAiLAkiY2M6LU8gLVdhbGw6PGxpYmMuaD46KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9Ojo6IiwKIm5leHRzdGVwMy4zIiwJImNjOi1PMyAtV2FsbDo8bGliYy5oPjoodW5rbm93bik6OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306OjoiLAoKIyBOQ1IgTVAtUkFTIFVOSVggdmVyIDAyLjAzLjAxCiJuY3Itc2NkZSIsImNjOi1PNiAtWGEgLUhvZmY9QkVIQVZFRCAtNjg2IC1Id2lkZSAtSGl3OjoodW5rbm93bik6Oi1sc29ja2V0IC1sbnNsIC1sYzg5OiR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfTo6OiIsCgojIFFOWAoicW54NCIsCSJjYzotRExfRU5ESUFOIC1EVEVSTUlPOjoodW5rbm93bik6Ojoke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306IiwKIlFOWDYiLCAgICAgICAiZ2NjOi1EVEVSTUlPUzo6OjotbHNvY2tldDo6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJRTlg2LWkzODYiLCAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzIgLVdhbGw6Ojo6LWxzb2NrZXQ6JHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgojIEJlT1MKImJlb3MteDg2LXI1IiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtbWNwdT1wZW50aXVtIC1XYWxsOjotRF9SRUVOVFJBTlQ6QkVPUzotbGJlIC1sbmV0OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpiZW9zOmJlb3Mtc2hhcmVkOi1mUElDIC1EUElDOi1zaGFyZWQ6LnNvIiwKImJlb3MteDg2LWJvbmUiLCAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtbWNwdT1wZW50aXVtIC1XYWxsOjotRF9SRUVOVFJBTlQ6QkVPUzotbGJlIC1sYmluZCAtbHNvY2tldDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06YmVvczpiZW9zLXNoYXJlZDotZlBJQzotc2hhcmVkOi5zbyIsCgojIyMjIFNDTy9DYWxkZXJhIHRhcmdldHMuCiMKIyBPcmlnaW5hbGx5IHdlIGhhZCBsaWtlIHVuaXh3YXJlLSosIHVuaXh3YXJlLSotcGVudGl1bSwgdW5peHdhcmUtKi1wNiwgZXRjLgojIE5vdyB3ZSBvbmx5IGhhdmUgYmxlbmRlZCB1bml4d2FyZS0qIGFzIGl0J3MgdGhlIG9ubHkgb25lIHVzZWQgYnkgLi9jb25maWcuCiMgSWYgeW91IHdhbnQgdG8gb3B0aW1pemUgZm9yIHBhcnRpY3VsYXIgbWljcm9hcmNoaXRlY3R1cmUsIGJ5cGFzcyAuL2NvbmZpZwojIGFuZCAnLi9Db25maWd1cmUgdW5peHdhcmUtNyAtS3BlbnRpdW1fcHJvJyBvciB3aGF0ZXZlciBhcHByb3ByaWF0ZS4KIyBOb3RlIHRoYXQgbm90IGFsbCB0YXJnZXRzIGluY2x1ZGUgYXNzZW1ibGVyIHN1cHBvcnQuIE1vc3RseSBiZWNhdXNlIG9mCiMgbGFjayBvZiBtb3RpdmF0aW9uIHRvIHN1cHBvcnQgb3V0LW9mLWRhdGUgcGxhdGZvcm1zIHdpdGggb3V0LW9mLWRhdGUKIyBjb21waWxlciBkcml2ZXJzIGFuZCBhc3NlbWJsZXJzLiBUaW0gUmljZSA8dGltQG11bHRpdGFsZW50cy5uZXQ+IGhhcwojIHBhdGllbnRseSBhc3Npc3RlZCB0byBkZWJ1ZyBtb3N0IG9mIGl0LgojCiMgVW5peFdhcmUgMi4weCBmYWlscyBkZXN0ZXN0IHdpdGggLU8uCiJ1bml4d2FyZS0yLjAiLCJjYzotREZJTElPX0ggLUROT19TVFJJTkdTX0g6Oi1LdGhyZWFkOjotbHNvY2tldCAtbG5zbCAtbHJlc29sdiAtbHg6JHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9Ojo6IiwKInVuaXh3YXJlLTIuMSIsImNjOi1PIC1ERklMSU9fSDo6LUt0aHJlYWQ6Oi1sc29ja2V0IC1sbnNsIC1scmVzb2x2IC1seDoke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306OjoiLAoidW5peHdhcmUtNyIsImNjOi1PIC1ERklMSU9fSCAtS2FsbG9jYTo6LUt0aHJlYWQ6Oi1sc29ja2V0IC1sbnNsOkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCAke3g4Nl9nY2NfZGVzfToke3g4Nl9lbGZfYXNtfS0xOmRsZmNuOnN2cjUtc2hhcmVkOi1LcGljOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJ1bml4d2FyZS03LWdjYyIsImdjYzotRExfRU5ESUFOIC1ERklMSU9fSCAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLW1hcmNoPXBlbnRpdW0gLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxzb2NrZXQgLWxuc2w6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219LTE6ZGxmY246Z251LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAojIFNDTyA1IC0gQmVuIExhdXJpZSA8YmVuQGFsZ3JvdXAuY28udWs+IHNheXMgdGhlIC1PIGJyZWFrcyB0aGUgU0NPIGNjLgoic2NvNS1jYyIsICAiY2M6LWJlbGY6Oih1bmtub3duKTo6LWxzb2NrZXQgLWxuc2w6JHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219LTE6ZGxmY246c3ZyMy1zaGFyZWQ6LUtwaWM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKInNjbzUtZ2NjIiwgICJnY2M6LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyOjoodW5rbm93bik6Oi1sc29ja2V0IC1sbnNsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfS0xOmRsZmNuOnN2cjMtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCgojIyMjIElCTSdzIEFJWC4KImFpeDMtY2MiLCAgImNjOi1PIC1EQl9FTkRJQU4gLXFtYXhtZW09MTYzODQ6Oih1bmtub3duKTpBSVg6OkJOX0xMT05HIFJDNF9DSEFSOjo6IiwKImFpeC1nY2MiLCAgImdjYzotTyAtREJfRU5ESUFOOjotcHRocmVhZDpBSVg6OkJOX0xMT05HIFJDNF9DSEFSOiRwcGMzMl9hc206YWl4MzI6ZGxmY246YWl4LXNoYXJlZDo6LXNoYXJlZCAtV2wsLUc6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Oi1YMzIiLAoiYWl4NjQtZ2NjIiwiZ2NjOi1tYWl4NjQgLU8gLURCX0VORElBTjo6LXB0aHJlYWQ6QUlYOjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSOiRwcGM2NF9hc206YWl4NjQ6ZGxmY246YWl4LXNoYXJlZDo6LW1haXg2NCAtc2hhcmVkIC1XbCwtRzouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6LVg2NCIsCiMgQmVsb3cgdGFyZ2V0cyBhc3N1bWUgQUlYIDUuIElkZWEgaXMgdG8gZWZmZWN0aXZlbHkgZGlzcmVnYXJkICRPQkpFQ1RfTU9ERQojIGF0IGJ1aWxkIHRpbWUuICRPQkpFQ1RfTU9ERSBpcyByZXNwZWN0ZWQgYXQgLi9jb25maWcgc3RhZ2UhCiJhaXgtY2MiLCAgICJjYzotcTMyIC1PIC1EQl9FTkRJQU4gLXFtYXhtZW09MTYzODQgLXFybyAtcXJvY29uc3Q6Oi1xdGhyZWFkZWQgLURfVEhSRUFEX1NBRkU6QUlYOjpCTl9MTE9ORyBSQzRfQ0hBUjokcHBjMzJfYXNtOmFpeDMyOmRsZmNuOmFpeC1zaGFyZWQ6Oi1xMzIgLUc6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Oi1YIDMyIiwKImFpeDY0LWNjIiwgImNjOi1xNjQgLU8gLURCX0VORElBTiAtcW1heG1lbT0xNjM4NCAtcXJvIC1xcm9jb25zdDo6LXF0aHJlYWRlZCAtRF9USFJFQURfU0FGRTpBSVg6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVI6JHBwYzY0X2FzbTphaXg2NDpkbGZjbjphaXgtc2hhcmVkOjotcTY0IC1HOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjotWCA2NCIsCgojCiMgQ3JheSBUOTAgYW5kIHNpbWlsYXIgKFNEU0MpCiMgSXQncyBCaWctZW5kaWFuLCBidXQgdGhlIGFsZ29yaXRobXMgd29yayBwcm9wZXJseSB3aGVuIEJfRU5ESUFOIGlzIE5PVAojIGRlZmluZWQuICBUaGUgVDkwIGludHMgYW5kIGxvbmdzIGFyZSA4IGJ5dGVzIGxvbmcsIGFuZCBhcHBhcmVudGx5IHRoZQojIEJfRU5ESUFOIGNvZGUgYXNzdW1lcyA0IGJ5dGUgaW50cy4gIEZvcnR1bmF0ZWx5LCB0aGUgbm9uLUJfRU5ESUFOIGFuZAojIG5vbiBMX0VORElBTiBjb2RlIGFsaWducyB0aGUgYnl0ZXMgaW4gZWFjaCB3b3JkIGNvcnJlY3RseS4KIwojIFRoZSBCSVRfRklFTERfTElNSVRTIGRlZmluZSBpcyB0byBhdm9pZCB0d28gZmF0YWwgY29tcGlsZXIgZXJyb3JzOgojJ1Rha2luZyB0aGUgYWRkcmVzcyBvZiBhIGJpdCBmaWVsZCBpcyBub3QgYWxsb3dlZC4gJwojJ0FuIGV4cHJlc3Npb24gd2l0aCBiaXQgZmllbGQgZXhpc3RzIGFzIHRoZSBvcGVyYW5kIG9mICJzaXplb2YiICcKIyAod3JpdHRlbiBieSBXYXluZSBTY2hyb2VkZXIgPHNjaHJvZWRlQFNEU0MuRURVPikKIwojIGo5MCBpcyBjb25zaWRlcmVkIHRoZSBiYXNlIG1hY2hpbmUgdHlwZSBmb3IgdW5pY29zIG1hY2hpbmVzLAojIHNvIHRoaXMgY29uZmlndXJhdGlvbiBpcyBub3cgY2FsbGVkICJjcmF5LWo5MCIgLi4uCiJjcmF5LWo5MCIsICJjYzogLURCSVRfRklFTERfTElNSVRTIC1EVEVSTUlPUzo6KHVua25vd24pOkNSQVk6OlNJWFRZX0ZPVVJfQklUX0xPTkcgREVTX0lOVDo6OiIsCgojCiMgQ3JheSBUM0UgKFJlc2VhcmNoIENlbnRlciBKdWVsaWNoLCBiZWNrbWFuQGFjbC5sYW5sLmdvdikKIwojIFRoZSBCSVRfRklFTERfTElNSVRTIGRlZmluZSB3YXMgd3JpdHRlbiBmb3IgdGhlIEM5MCAoaXQgc2VlbXMpLiAgSSBhZGRlZAojIGFub3RoZXIgdXNlLiAgQmFzaWNhbGx5LCB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBUM0UgdXNlcyBzb21lIGJpdCBmaWVsZHMKIyBmb3Igc29tZSBzdF9hZGRyIHN0dWZmLCBhbmQgdGhlbiBzaXplb2YgYW5kIGFkZHJlc3Mtb2YgZmFpbHMKIyBJIGNvdWxkIG5vdCB1c2UgdGhlIGFtcy9hbHBoYS5vIG9wdGlvbiBiZWNhdXNlIHRoZSBDcmF5IGFzc2VtYmxlciwgJ2NhbScKIyBkaWQgbm90IGxpa2UgaXQuCiJjcmF5LXQzZSIsICJjYzogLURCSVRfRklFTERfTElNSVRTIC1EVEVSTUlPUzo6KHVua25vd24pOkNSQVk6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQ6OjoiLAoKIyBER1VYLCA4ODEwMC4KImRndXgtUjMtZ2NjIiwJImdjYzotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXI6Oih1bmtub3duKTo6OlJDNF9JTkRFWCBERVNfVU5ST0xMOjo6IiwKImRndXgtUjQtZ2NjIiwJImdjYzotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXI6Oih1bmtub3duKTo6LWxuc2wgLWxzb2NrZXQ6UkM0X0lOREVYIERFU19VTlJPTEw6OjoiLAoiZGd1eC1SNC14ODYtZ2NjIiwJImdjYzotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLURMX0VORElBTjo6KHVua25vd24pOjotbG5zbCAtbHNvY2tldDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX0iLAoKIyBTaW5peC9SZWxpYW50VU5JWCBSTTQwMAojIE5PVEU6IFRoZSBDRFMrKyBDb21waWxlciB1cCB0byBWMi4wQnNvbWV0aGluZyBoYXMgdGhlIElSSVhfQ0NfQlVHIG9wdGltaXplciBwcm9ibGVtLiBCZXR0ZXIgdXNlIC1nICAqLwoiUmVsaWFudFVOSVgiLCJjYzotS1BJQyAtZyAtRFRFUk1JT1MgLURCX0VORElBTjo6LUt0aHJlYWQ6U05JOi1sc29ja2V0IC1sbnNsIC1sYyAtTC91c3IvdWNibGliIC1sdWNiOkJOX0xMT05HIERFU19QVFIgREVTX1JJU0MyIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpyZWxpYW50dW5peC1zaGFyZWQ6Ojouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCiJTSU5JWCIsImNjOi1POjoodW5rbm93bik6U05JOi1sc29ja2V0IC1sbnNsIC1sYyAtTC91c3IvdWNibGliIC1sdWNiOlJDNF9JTkRFWCBSQzRfQ0hBUjo6OiIsCiJTSU5JWC1OIiwiL3Vzci91Y2IvY2M6LU8yIC1taXNhbGlnbmVkOjoodW5rbm93bik6Oi1sdWNiOlJDNF9JTkRFWCBSQzRfQ0hBUjo6OiIsCgojIFNJRU1FTlMgQlMyMDAwL09TRDogYW4gRUJDRElDLWJhc2VkIG1haW5mcmFtZQoiQlMyMDAwLU9TRCIsImM4OTotTyAtWExMTUwgLVhMTE1LIC1YTCAtREJfRU5ESUFOIC1EVEVSTUlPUyAtRENIQVJTRVRfRUJDRElDOjoodW5rbm93bik6Oi1sc29ja2V0IC1sbnNsOlRISVJUWV9UV09fQklUIERFU19QVFIgREVTX1VOUk9MTCBNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgQkZfUFRSOjo6IiwKCiMgT1MvMzkwIFVuaXggYW4gRUJDRElDLWJhc2VkIFVuaXggc3lzdGVtIG9uIElCTSBtYWluZnJhbWUKIyBZb3UgbmVlZCB0byBjb21waWxlIHVzaW5nIHRoZSBjODkuc2ggd3JhcHBlciBpbiB0aGUgdG9vbHMgZGlyZWN0b3J5LCBiZWNhdXNlIHRoZQojIElCTSBjb21waWxlciBkb2VzIG5vdCBsaWtlIHRoZSAtTCBzd2l0Y2ggYWZ0ZXIgYW55IG9iamVjdCBtb2R1bGVzLgojCiJPUzM5MC1Vbml4IiwiYzg5LnNoOi1PIC1EQl9FTkRJQU4gLURDSEFSU0VUX0VCQ0RJQyAtRE5PX1NZU19QQVJBTV9IICAtRF9BTExfU09VUkNFOjoodW5rbm93bik6OjpUSElSVFlfVFdPX0JJVCBERVNfUFRSIERFU19VTlJPTEwgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIEJGX1BUUjo6OiIsCgojIFZpc3VhbCBDIHRhcmdldHMKIwojIFdpbjY0IHRhcmdldHMsIFdJTjY0SSBkZW5vdGVzIElBLTY0IGFuZCBXSU42NEEgLSBBTUQ2NAoiVkMtV0lONjRJIiwiY2w6LVczIC1HczAgLUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42NEk6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46aWE2NGNwdWlkLm86aWE2NC5vIGlhNjQtbW9udC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtaWE2NC5vOjptZDUtaWE2NC5vOnNoYTEtaWE2NC5vIHNoYTI1Ni1pYTY0Lm8gc2hhNTEyLWlhNjQubzo6Ojo6OjpnaGFzaC1pYTY0Lm86Omlhczp3aW4zMiIsCiJWQy1XSU42NEEiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0QTo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjoiLmV2YWx7bXkgJGFzbT0keDg2XzY0X2FzbTskYXNtPX5zL3g4Nl82NC1nY2NcLm8vYm5fYXNtLm8vOyRhc219LiI6YXV0bzp3aW4zMiIsCiJkZWJ1Zy1WQy1XSU42NEkiLCJjbDotVzMgLUdzMCAtR3kgLVppIC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42NEk6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46aWE2NGNwdWlkLm86aWE2NC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtaWE2NC5vOjptZDUtaWE2NC5vOnNoYTEtaWE2NC5vIHNoYTI1Ni1pYTY0Lm8gc2hhNTEyLWlhNjQubzo6Ojo6OjpnaGFzaC1pYTY0Lm86Omlhczp3aW4zMiIsCiJkZWJ1Zy1WQy1XSU42NEEiLCJjbDotVzMgLUdzMCAtR3kgLVppIC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42NEE6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46Ii5ldmFse215ICRhc209JHg4Nl82NF9hc207JGFzbT1+cy94ODZfNjQtZ2NjXC5vL2JuX2FzbS5vLzskYXNtfS4iOmF1dG86d2luMzIiLAojIHg4NiBXaW4zMiB0YXJnZXQgZGVmYXVsdHMgdG8gQU5TSSBBUEksIGlmIHlvdSB3YW50IFVOSUNPREUsIGNvbXBsZW1lbnQKIyAncGVybCBDb25maWd1cmUgVkMtV0lOMzInIHdpdGggJy1EVU5JQ09ERSAtRF9VTklDT0RFJwoiVkMtV0lOMzIiLCJjbDotVzMgLUdzMCAtR0YgLUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU4zMjo6Qk5fTExPTkcgUkM0X0lOREVYIEVYUE9SVF9WQVJfQVNfRk4gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06d2luMzJuOndpbjMyIiwKIyBVbmlmaWVkIENFIHRhcmdldAoiZGVidWctVkMtV0lOMzIiLCJjbDotVzMgLUdzMCAtR0YgLUd5IC1aaSAtbm9sb2dvIC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtRExfRU5ESUFOIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFOjo6V0lOMzI6OkJOX0xMT05HIFJDNF9JTkRFWCBFWFBPUlRfVkFSX0FTX0ZOICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OndpbjMybjp3aW4zMiIsCiJWQy1DRSIsImNsOjo6OldJTkNFOjpCTl9MTE9ORyBSQzRfSU5ERVggRVhQT1JUX1ZBUl9BU19GTiAke3g4Nl9nY2Nfb3B0c306JHtub19hc219OndpbjMyIiwKCiMgQm9ybGFuZCBDKysgNC41CiJCQy0zMiIsImJjYzMyOjo6OldJTjMyOjpCTl9MTE9ORyBERVNfUFRSIFJDNF9JTkRFWCBFWFBPUlRfVkFSX0FTX0ZOOiR7bm9fYXNtfTp3aW4zMiIsCgojIE1pbkdXCiJtaW5ndyIsICJnY2M6LW1uby1jeWd3aW4gLURMX0VORElBTiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLWZvbWl0LWZyYW1lLXBvaW50ZXIgLU8zIC1tYXJjaD1pNDg2IC1XYWxsOjotRF9NVDpNSU5HVzMyOi1sd3MyXzMyIC1sZ2RpMzIgLWxjcnlwdDMyOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfSBFWFBPUlRfVkFSX0FTX0ZOOiR7eDg2X2FzbX06Y29mZjp3aW4zMjpjeWd3aW4tc2hhcmVkOi1EX1dJTkRMTCAtRE9QRU5TU0xfVVNFX0FQUExJTks6LW1uby1jeWd3aW46LmRsbC5hIiwKIyBBcyBmb3IgT1BFTlNTTF9VU0VfQVBQTElOSy4gQXBwbGluayBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgLmRsbAojIGNvbXBpbGVkIHdpdGggb25lIGNvbXBpbGVyIHdpdGggYXBwbGljYXRpb24gY29tcGlsZWQgd2l0aCBhbm90aGVyCiMgY29tcGlsZXIuIEl0J3MgcG9zc2libGUgdG8gZW5nYWdlIEFwcGxpbmsgc3VwcG9ydCBpbiBtaW5ndzY0IGJ1aWxkLAojIGJ1dCBpdCdzIG5vdCBkb25lLCBiZWNhdXNlIHRpbGwgbWluZ3c2NCBzdXBwb3J0cyBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbgojIGhhbmRsaW5nLCBvbmUgY2FuJ3Qgc2VyaW91c2x5IGNvbnNpZGVyIGl0cyBiaW5hcmllcyBmb3IgdXNpbmcgd2l0aAojIG5vbi1taW5ndzY0IHJ1bi10aW1lIGVudmlyb25tZW50LiBBbmQgYXMgbWluZ3c2NCBpcyBhbHdheXMgY29uc2lzdGVudAojIHdpdGggaXRzZWxmLCBBcHBsaW5rIGlzIG5ldmVyIGVuZ2FnZWQgYW5kIGNhbiBhcyB3ZWxsIGJlIG9taXR0ZWQuCiJtaW5ndzY0IiwgImdjYzotbW5vLWN5Z3dpbiAtRExfRU5ESUFOIC1PMyAtV2FsbCAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURVTklDT0RFIC1EX1VOSUNPREU6Oi1EX01UOk1JTkdXNjQ6LWx3czJfMzIgLWxnZGkzMiAtbGNyeXB0MzI6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjoke3g4Nl82NF9hc219Om1pbmd3NjQ6d2luMzI6Y3lnd2luLXNoYXJlZDotRF9XSU5ETEw6LW1uby1jeWd3aW46LmRsbC5hIiwKCiMgVVdJTgoiVVdJTiIsICJjYzotRFRFUk1JT1MgLURMX0VORElBTiAtTyAtV2FsbDo6OlVXSU46OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06d2luMzIiLAoKIyBDeWd3aW4KIkN5Z3dpbi1wcmUxLjMiLCAiZ2NjOi1EVEVSTUlPUyAtRExfRU5ESUFOIC1mb21pdC1mcmFtZS1wb2ludGVyIC1PMyAtbTQ4NiAtV2FsbDo6KHVua25vd24pOkNZR1dJTjMyOjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHtub19hc219OndpbjMyIiwKIkN5Z3dpbiIsICJnY2M6LURURVJNSU9TIC1ETF9FTkRJQU4gLWZvbWl0LWZyYW1lLXBvaW50ZXIgLU8zIC1tYXJjaD1pNDg2IC1XYWxsOjo6Q1lHV0lOMzI6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmNvZmY6ZGxmY246Y3lnd2luLXNoYXJlZDotRF9XSU5ETEw6LXNoYXJlZDouZGxsLmEiLAoiQ3lnd2luLXg4Nl82NCIsICJnY2M6LURURVJNSU9TIC1ETF9FTkRJQU4gLU8zIC1XYWxsOjo6Q1lHV0lOMzI6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219Om1pbmd3NjQ6ZGxmY246Y3lnd2luLXNoYXJlZDotRF9XSU5ETEw6LXNoYXJlZDouZGxsLmEiLAoiZGVidWctQ3lnd2luIiwgImdjYzotRFRFUk1JT1MgLURMX0VORElBTiAtbWFyY2g9aTQ4NiAtV2FsbCAtREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtREJOX0NUWF9ERUJVRyAtRENSWVBUT19NREVCVUcgLURPUEVOU1NMX05PX0FTTSAtZyAtV2Zvcm1hdCAtV3NoYWRvdyAtV21pc3NpbmctcHJvdG90eXBlcyAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1XZXJyb3I6OjpDWUdXSU4zMjo6OiR7bm9fYXNtfTpkbGZjbjpjeWd3aW4tc2hhcmVkOi1EX1dJTkRMTDotc2hhcmVkOi5kbGwuYSIsCgojIE5ldFdhcmUgZnJvbSBEYXZpZCBXYXJkIChkc3dhcmRAbm92ZWxsLmNvbSkKIyByZXF1aXJlcyBlaXRoZXIgTWV0cm9XZXJrcyBOTE0gZGV2ZWxvcG1lbnQgdG9vbHMsIG9yIGdjYyAvIG5sbWNvbnYKIyBOZXRXYXJlIGRlZmF1bHRzIHNvY2tldCBiaW8gdG8gV2luU29jayBzb2NrZXRzLiBIb3dldmVyLAojIHRoZSBidWlsZHMgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gdXNlIEJTRCBzb2NrZXRzIGluc3RlYWQuCiMgbmV0d2FyZS1jbGliID0+IGxlZ2FjeSBDTGliIGMtcnVudGltZSBzdXBwb3J0CiJuZXR3YXJlLWNsaWIiLCAibXdjY25sbTo6Ojo6OiR7eDg2X2djY19vcHRzfTo6IiwKIm5ldHdhcmUtY2xpYi1ic2Rzb2NrIiwgIm13Y2NubG06Ojo6Ojoke3g4Nl9nY2Nfb3B0c306OiIsCiJuZXR3YXJlLWNsaWItZ2NjIiwgImk1ODYtbmV0d2FyZS1nY2M6LW5vc3RkaW5jIC1JL25kay9ud3Nkay9pbmNsdWRlL25sbSAtSS9uZGsvd3MyOTVzZGsvaW5jbHVkZSAtRExfRU5ESUFOIC1ETkVUV0FSRV9DTElCIC1ET1BFTlNTTF9TWVNOQU1FX05FVFdBUkUgLU8yIC1XYWxsOjo6Ojoke3g4Nl9nY2Nfb3B0c306OiIsCiJuZXR3YXJlLWNsaWItYnNkc29jay1nY2MiLCAiaTU4Ni1uZXR3YXJlLWdjYzotbm9zdGRpbmMgLUkvbmRrL253c2RrL2luY2x1ZGUvbmxtIC1ETkVUV0FSRV9CU0RTT0NLIC1ETkVUREJfVVNFX0lOVEVSTkVUIC1ETF9FTkRJQU4gLURORVRXQVJFX0NMSUIgLURPUEVOU1NMX1NZU05BTUVfTkVUV0FSRSAtTzIgLVdhbGw6Ojo6OiR7eDg2X2djY19vcHRzfTo6IiwKIyBuZXR3YXJlLWxpYmMgPT4gTGliQy9OS1Mgc3VwcG9ydAoibmV0d2FyZS1saWJjIiwgIm13Y2NubG06Ojo6OjpCTl9MTE9ORyAke3g4Nl9nY2Nfb3B0c306OiIsCiJuZXR3YXJlLWxpYmMtYnNkc29jayIsICJtd2NjbmxtOjo6Ojo6Qk5fTExPTkcgJHt4ODZfZ2NjX29wdHN9OjoiLAoibmV0d2FyZS1saWJjLWdjYyIsICJpNTg2LW5ldHdhcmUtZ2NjOi1ub3N0ZGluYyAtSS9uZGsvbGliYy9pbmNsdWRlIC1JL25kay9saWJjL2luY2x1ZGUvd2luc29jayAtRExfRU5ESUFOIC1ETkVUV0FSRV9MSUJDIC1ET1BFTlNTTF9TWVNOQU1FX05FVFdBUkUgLURURVJNSU8gLU8yIC1XYWxsOjo6OjpCTl9MTE9ORyAke3g4Nl9nY2Nfb3B0c306OiIsCiJuZXR3YXJlLWxpYmMtYnNkc29jay1nY2MiLCAiaTU4Ni1uZXR3YXJlLWdjYzotbm9zdGRpbmMgLUkvbmRrL2xpYmMvaW5jbHVkZSAtRE5FVFdBUkVfQlNEU09DSyAtRExfRU5ESUFOIC1ETkVUV0FSRV9MSUJDIC1ET1BFTlNTTF9TWVNOQU1FX05FVFdBUkUgLURURVJNSU8gLU8yIC1XYWxsOjo6OjpCTl9MTE9ORyAke3g4Nl9nY2Nfb3B0c306OiIsCgojIERKR1BQCiJESkdQUCIsICJnY2M6LUkvZGV2L2Vudi9XQVRUX1JPT1QvaW5jIC1EVEVSTUlPUyAtRExfRU5ESUFOIC1mb21pdC1mcmFtZS1wb2ludGVyIC1PMiAtV2FsbDo6Ok1TRE9TOi1ML2Rldi9lbnYvV0FUVF9ST09UL2xpYiAtbHdhdHQ6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06YS5vdXQ6IiwKCiMgVWx0cml4IGZyb20gQmVybmhhcmQgU2ltb24gPHNpbW9uQHppZC50dXdpZW4uYWMuYXQ+CiJ1bHRyaXgtY2MiLCJjYzotc3RkMSAtTyAtT2xpbWl0IDI1MDAgLURMX0VORElBTjo6KHVua25vd24pOjo6Ojo6OiIsCiJ1bHRyaXgtZ2NjIiwiZ2NjOi1PMyAtRExfRU5ESUFOOjoodW5rbm93bik6OjpCTl9MTE9ORzo6OjoiLAojIEsmUiBDIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQ7IHlvdSBuZWVkIGdjYyBvbiBvbGQgVWx0cml4IGluc3RhbGxhdGlvbnMKIyMidWx0cml4IiwiY2M6LU8yIC1ETk9QUk9UTyAtRE5PQ09OU1QgLURMX0VORElBTjo6KHVua25vd24pOjo6Ojo6OiIsCgojIyMjIyBNYWNPUyBYIChhLmsuYS4gUmhhcHNvZHkgb3IgRGFyd2luKSBzZXR1cAoicmhhcHNvZHktcHBjLWNjIiwiY2M6LU8zIC1EQl9FTkRJQU46Oih1bmtub3duKTpNQUNPU1hfUkhBUFNPRFk6OkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06OiIsCiJkYXJ3aW4tcHBjLWNjIiwiY2M6LWFyY2ggcHBjIC1PMyAtREJfRU5ESUFOIC1XYSwtZm9yY2VfY3B1c3VidHlwZV9BTEw6Oi1EX1JFRU5UUkFOVDpNQUNPU1g6LVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QlOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3BwYzMyX2FzbX06b3N4MzI6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCBwcGMgLWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAoiZGFyd2luNjQtcHBjLWNjIiwiY2M6LWFyY2ggcHBjNjQgLU8zIC1EQl9FTkRJQU46Oi1EX1JFRU5UUkFOVDpNQUNPU1g6LVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QlOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7cHBjNjRfYXNtfTpvc3g2NDpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1hcmNoIHBwYzY0IC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKImRhcndpbi1pMzg2LWNjIiwiY2M6LWFyY2ggaTM4NiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6Qk5fTExPTkcgUkM0X0lOVCBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6Ii5ldmFse215ICRhc209JHg4Nl9hc207JGFzbT1+cy9jYXN0XC01ODZcLm8vLzskYXNtfS4iOm1hY29zeDpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1hcmNoIGkzODYgLWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAoiZGVidWctZGFyd2luLWkzODYtY2MiLCJjYzotYXJjaCBpMzg2IC1nMyAtRExfRU5ESUFOOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpCTl9MTE9ORyBSQzRfSU5UIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3g4Nl9hc219Om1hY29zeDpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1hcmNoIGkzODYgLWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAoiZGVidWctZGFyd2luNjQteDg2XzY0LWNjIiwiY2M6LWFyY2ggeDg2XzY0IC1nZ2RiIC1nMiAtTzAgLURMX0VORElBTiAtV2FsbDo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06bWFjb3N4OmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggeDg2XzY0IC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKImRhcndpbjY0LXg4Nl82NC1jYyIsImNjOi1hcmNoIHg4Nl82NCAtTzMgLURMX0VORElBTiAtV2FsbDo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06bWFjb3N4OmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggeDg2XzY0IC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKImRlYnVnLWRhcndpbi1wcGMtY2MiLCJjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLURCX0VORElBTiAtZyAtV2FsbCAtTzo6LURfUkVFTlRSQU5UOk1BQ09TWDo6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7cHBjMzJfYXNtfTpvc3gzMjpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDOi1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKIyBpUGhvbmVPUy9pT1MKImlwaG9uZW9zLWNyb3NzIiwibGx2bS1nY2M6LU8zIC1pc3lzcm9vdCBcJChDUk9TU19UT1ApL1NES3MvXCQoQ1JPU1NfU0RLKSAtZm9taXQtZnJhbWUtcG9pbnRlciAtZm5vLWNvbW1vbjo6LURfUkVFTlRSQU5UOmlPUzotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKCiMjIyMjIEEvVVgKImF1eDMtZ2NjIiwiZ2NjOi1PMiAtRFRFUk1JTzo6KHVua25vd24pOkFVWDotbGJzZDpSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6OjoiLAoKIyMjIyMgU29ueSBORVdTLU9TIDQueAoibmV3c29zNC1nY2MiLCJnY2M6LU8gLURCX0VORElBTjo6KHVua25vd24pOk5FV1M0Oi1sbWxkIC1saWJlcnR5OkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjo6OjoiLAoKIyMjIyMgR05VIEh1cmQKImh1cmQteDg2IiwgICJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1tYXJjaD1pNDg2IC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQyIsCgojIyMjIyBPUy8yIEVNWAoiT1MyLUVNWCIsICJnY2M6Ojo6Ojo6OiIsCgojIyMjIyBWeFdvcmtzIGZvciB2YXJpb3VzIHRhcmdldHMKInZ4d29ya3MtcHBjNjB4IiwiY2NwcGM6LURfUkVFTlRSQU5UIC1tcnRwIC1taGFyZC1mbG9hdCAtbXN0cmljdC1hbGlnbiAtZm5vLWltcGxpY2l0LWZwIC1EUFBDMzJfZnA2MHggLU8yIC1mc3RyZW5ndGgtcmVkdWNlIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtRENQVT1QUEMzMiAtRFRPT0xfRkFNSUxZPWdudSAtRFRPT0w9Z251IC1JXCQoV0lORF9CQVNFKS90YXJnZXQvdXNyL2ggLUlcJChXSU5EX0JBU0UpL3RhcmdldC91c3IvaC93cm4vY29yZWlwOjo6VlhXT1JLUzotV2wsLS1kZWZzeW0sX193cnNfcnRwX2Jhc2U9MHhlMDAwMDAwMCAtTCBcJChXSU5EX0JBU0UpL3RhcmdldC91c3IvbGliL3BwYy9QUEMzMi9jb21tb246Ojo6OiIsCiJ2eHdvcmtzLXBwY2dlbiIsImNjcHBjOi1EX1JFRU5UUkFOVCAtbXJ0cCAtbXNvZnQtZmxvYXQgLW1zdHJpY3QtYWxpZ24gLU8xIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtRENQVT1QUEMzMiAtRFRPT0xfRkFNSUxZPWdudSAtRFRPT0w9Z251IC1JXCQoV0lORF9CQVNFKS90YXJnZXQvdXNyL2ggLUlcJChXSU5EX0JBU0UpL3RhcmdldC91c3IvaC93cm4vY29yZWlwOjo6VlhXT1JLUzotV2wsLS1kZWZzeW0sX193cnNfcnRwX2Jhc2U9MHhlMDAwMDAwMCAtTCBcJChXSU5EX0JBU0UpL3RhcmdldC91c3IvbGliL3BwYy9QUEMzMi9zZmNvbW1vbjo6Ojo6IiwKInZ4d29ya3MtcHBjNDA1IiwiY2NwcGM6LWcgLW1zb2Z0LWZsb2F0IC1tbG9uZ2NhbGwgLURDUFU9UFBDNDA1IC1JXCQoV0lORF9CQVNFKS90YXJnZXQvaDo6OlZYV09SS1M6LXI6Ojo6OiIsCiJ2eHdvcmtzLXBwYzc1MCIsImNjcHBjOi1hbnNpIC1ub3N0ZGluYyAtRFBQQzc1MCAtRF9SRUVOVFJBTlQgLWZ2b2xhdGlsZSAtZm5vLWJ1aWx0aW4gLWZuby1mb3Itc2NvcGUgLWZzaWduZWQtY2hhciAtV2FsbCAtbXNvZnQtZmxvYXQgLW1sb25nY2FsbCAtRENQVT1QUEM2MDQgLUlcJChXSU5EX0JBU0UpL3RhcmdldC9oIFwkKERFQlVHX0ZMQUcpOjo6VlhXT1JLUzotcjo6Ojo6IiwKInZ4d29ya3MtcHBjNzUwLWRlYnVnIiwiY2NwcGM6LWFuc2kgLW5vc3RkaW5jIC1EUFBDNzUwIC1EX1JFRU5UUkFOVCAtZnZvbGF0aWxlIC1mbm8tYnVpbHRpbiAtZm5vLWZvci1zY29wZSAtZnNpZ25lZC1jaGFyIC1XYWxsIC1tc29mdC1mbG9hdCAtbWxvbmdjYWxsIC1EQ1BVPVBQQzYwNCAtSVwkKFdJTkRfQkFTRSkvdGFyZ2V0L2ggLURCTl9ERUJVRyAtRFJFRl9DSEVDSyAtRENPTkZfREVCVUcgLURCTl9DVFhfREVCVUcgLURDUllQVE9fTURFQlVHIC1EUEVEQU5USUMgLURERUJVR19TQUZFU1RBQ0sgLURERUJVRyAtZzo6OlZYV09SS1M6LXI6Ojo6OiIsCiJ2eHdvcmtzLXBwYzg2MCIsImNjcHBjOi1ub3N0ZGluYyAtbXNvZnQtZmxvYXQgLURDUFU9UFBDODYwIC1ETk9fU1RSSU5HU19IIC1JXCQoV0lORF9CQVNFKS90YXJnZXQvaDo6OlZYV09SS1M6LXI6Ojo6OiIsCiJ2eHdvcmtzLXNpbWxpbnV4IiwiY2NwZW50aXVtOi1CXCQoV0lORF9CQVNFKS9ob3N0L1wkKFdJTkRfSE9TVF9UWVBFKS9saWIvZ2NjLWxpYi8gLURfVlNCX0NPTkZJR19GSUxFPVwiXCQoV0lORF9CQVNFKS90YXJnZXQvbGliL2gvY29uZmlnL3ZzYkNvbmZpZy5oXCIgLURMX0VORElBTiAtRENQVT1TSU1MSU5VWCAtRFRPT0xfRkFNSUxZPWdudSAtRFRPT0w9Z251IC1mbm8tYnVpbHRpbiAtZm5vLWRlZmVyLXBvcCAtRE5PX1NUUklOR1NfSCAtSVwkKFdJTkRfQkFTRSkvdGFyZ2V0L2ggLUlcJChXSU5EX0JBU0UpL3RhcmdldC9oL3dybi9jb3JlaXAgLURPUEVOU1NMX05PX0hXX1BBRExPQ0s6OjpWWFdPUktTOi1yOjoke25vX2FzbX06Ojo6OjpyYW5saWJwZW50aXVtOiIsCiJ2eHdvcmtzLW1pcHMiLCJjY21pcHM6LW1ydHAgLW1pcHMyIC1PIC1HIDAgLUJcJChXSU5EX0JBU0UpL2hvc3QvXCQoV0lORF9IT1NUX1RZUEUpL2xpYi9nY2MtbGliLyAtRF9WU0JfQ09ORklHX0ZJTEU9XCJcJChXSU5EX0JBU0UpL3RhcmdldC9saWIvaC9jb25maWcvdnNiQ29uZmlnLmhcIiAtRENQVT1NSVBTMzIgLW1zb2Z0LWZsb2F0IC1tbm8tYnJhbmNoLWxpa2VseSAtRFRPT0xfRkFNSUxZPWdudSAtRFRPT0w9Z251IC1mbm8tYnVpbHRpbiAtZm5vLWRlZmVyLXBvcCAtRE5PX1NUUklOR1NfSCAtSVwkKFdJTkRfQkFTRSkvdGFyZ2V0L3Vzci9oIC1JXCQoV0lORF9CQVNFKS90YXJnZXQvaC93cm4vY29yZWlwOjotRF9SRUVOVFJBTlQ6VlhXT1JLUzotV2wsLS1kZWZzeW0sX193cnNfcnRwX2Jhc2U9MHhlMDAwMDAwMCAtTCBcJChXSU5EX0JBU0UpL3RhcmdldC91c3IvbGliL21pcHMvTUlQU0kzMi9zZmNvbW1vbjo6JHttaXBzMzJfYXNtfTpvMzI6Ojo6OjpyYW5saWJtaXBzOiIsCgojIyMjIyBDb21wYXEgTm9uLVN0b3AgS2VybmVsIChUYW5kZW0pCiJ0YW5kZW0tYzg5IiwiYzg5Oi1XdyAtRF9fVEFOREVNIC1EX1hPUEVOX1NPVVJDRSAtRF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQ9MSAtRF9UQU5ERU1fU09VUkNFIC1EQl9FTkRJQU46Oih1bmtub3duKTo6OlRISVJUWV9UV09fQklUOjo6IiwKCiMgdUNsaW51eAoidUNsaW51eC1kaXN0IiwiJEVOVnsnQ0MnfTpcJChDRkxBR1MpOjotRF9SRUVOVFJBTlQ6OlwkKExERkxBR1MpIFwkKExETElCUyk6Qk5fTExPTkc6JHtub19hc219OiRFTlZ7J0xJQlNTTF9kbGZjbid9OmxpbnV4LXNoYXJlZDotZlBJQzotc2hhcmVkOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOiRFTlZ7J1JBTkxJQid9OjoiLAoidUNsaW51eC1kaXN0NjQiLCIkRU5WeydDQyd9OlwkKENGTEFHUyk6Oi1EX1JFRU5UUkFOVDo6XCQoTERGTEFHUykgXCQoTERMSUJTKTpTSVhUWV9GT1VSX0JJVF9MT05HOiR7bm9fYXNtfTokRU5WeydMSUJTU0xfZGxmY24nfTpsaW51eC1zaGFyZWQ6LWZQSUM6LXNoYXJlZDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTokRU5WeydSQU5MSUInfTo6IiwKCik7CgpteSBATUsxTUZfQnVpbGRzPXF3KFZDLVdJTjY0SSBWQy1XSU42NEEKCQkgICAgZGVidWctVkMtV0lONjRJIGRlYnVnLVZDLVdJTjY0QQoJCSAgICBWQy1OVCBWQy1DRSBWQy1XSU4zMiBkZWJ1Zy1WQy1XSU4zMgoJCSAgICBCQy0zMgoJCSAgICBuZXR3YXJlLWNsaWIgbmV0d2FyZS1jbGliLWJzZHNvY2sKCQkgICAgbmV0d2FyZS1saWJjIG5ldHdhcmUtbGliYy1ic2Rzb2NrKTsKCm15ICRpZHggPSAwOwpteSAkaWR4X2NjID0gJGlkeCsrOwpteSAkaWR4X2NmbGFncyA9ICRpZHgrKzsKbXkgJGlkeF91bmlzdGQgPSAkaWR4Kys7Cm15ICRpZHhfdGhyZWFkX2NmbGFnID0gJGlkeCsrOwpteSAkaWR4X3N5c19pZCA9ICRpZHgrKzsKbXkgJGlkeF9sZmxhZ3MgPSAkaWR4Kys7Cm15ICRpZHhfYm5fb3BzID0gJGlkeCsrOwpteSAkaWR4X2NwdWlkX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9ibl9vYmogPSAkaWR4Kys7Cm15ICRpZHhfZGVzX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9hZXNfb2JqID0gJGlkeCsrOwpteSAkaWR4X2JmX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9tZDVfb2JqID0gJGlkeCsrOwpteSAkaWR4X3NoYTFfb2JqID0gJGlkeCsrOwpteSAkaWR4X2Nhc3Rfb2JqID0gJGlkeCsrOwpteSAkaWR4X3JjNF9vYmogPSAkaWR4Kys7Cm15ICRpZHhfcm1kMTYwX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9yYzVfb2JqID0gJGlkeCsrOwpteSAkaWR4X3dwX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9jbWxsX29iaiA9ICRpZHgrKzsKbXkgJGlkeF9tb2Rlc19vYmogPSAkaWR4Kys7Cm15ICRpZHhfZW5naW5lc19vYmogPSAkaWR4Kys7Cm15ICRpZHhfcGVybGFzbV9zY2hlbWUgPSAkaWR4Kys7Cm15ICRpZHhfZHNvX3NjaGVtZSA9ICRpZHgrKzsKbXkgJGlkeF9zaGFyZWRfdGFyZ2V0ID0gJGlkeCsrOwpteSAkaWR4X3NoYXJlZF9jZmxhZyA9ICRpZHgrKzsKbXkgJGlkeF9zaGFyZWRfbGRmbGFnID0gJGlkeCsrOwpteSAkaWR4X3NoYXJlZF9leHRlbnNpb24gPSAkaWR4Kys7Cm15ICRpZHhfcmFubGliID0gJGlkeCsrOwpteSAkaWR4X2FyZmxhZ3MgPSAkaWR4Kys7Cm15ICRpZHhfbXVsdGlsaWIgPSAkaWR4Kys7CgpteSAkcHJlZml4PSIiOwpteSAkbGliZGlyPSIiOwpteSAkb3BlbnNzbGRpcj0iIjsKbXkgJGV4ZV9leHQ9IiI7Cm15ICRpbnN0YWxsX3ByZWZpeD0gIiRFTlZ7J0lOU1RBTExfUFJFRklYJ30iOwpteSAkY3Jvc3NfY29tcGlsZV9wcmVmaXg9IiI7Cm15ICRmaXBzbGliZGlyPSIvdXNyL2xvY2FsL3NzbC9maXBzLTIuMC9saWIvIjsKbXkgJG5vZmlwc2NhbmlzdGVyY2hlY2s9MDsKbXkgJGZpcHNjYW5pc3RlcmludGVybmFsPSJuIjsKbXkgJGZpcHNjYW5pc3Rlcm9ubHkgPSAwOwpteSAkYmFzZWFkZHI9IjB4RkIwMDAwMCI7Cm15ICRub190aHJlYWRzPTA7Cm15ICR0aHJlYWRzPTA7Cm15ICRub19zaGFyZWQ9MDsgIyBidXQgIm5vLXNoYXJlZCIgaXMgZGVmYXVsdApteSAkemxpYj0xOyAgICAgICMgYnV0ICJuby16bGliIiBpcyBkZWZhdWx0Cm15ICRub19rcmI1PTA7ICAgIyBidXQgIm5vLWtyYjUiIGlzIGltcGxpZWQgdW5sZXNzICItLXdpdGgta3JiNS0uLi4iIGlzIHVzZWQKbXkgJG5vX3JmYzM3Nzk9MTsgIyBidXQgIm5vLXJmYzM3NzkiIGlzIGRlZmF1bHQKbXkgJG5vX2FzbT0wOwpteSAkbm9fZHNvPTA7Cm15ICRub19nbXA9MDsKbXkgQHNraXA9KCk7Cm15ICRNYWtlZmlsZT0iTWFrZWZpbGUiOwpteSAkZGVzX2xvY2w9ImNyeXB0by9kZXMvZGVzX2xvY2wuaCI7Cm15ICRkZXMJPSJjcnlwdG8vZGVzL2Rlcy5oIjsKbXkgJGJuCT0iY3J5cHRvL2JuL2JuLmgiOwpteSAkbWQyCT0iY3J5cHRvL21kMi9tZDIuaCI7Cm15ICRyYzQJPSJjcnlwdG8vcmM0L3JjNC5oIjsKbXkgJHJjNF9sb2NsPSJjcnlwdG8vcmM0L3JjNF9sb2NsLmgiOwpteSAkaWRlYQk9ImNyeXB0by9pZGVhL2lkZWEuaCI7Cm15ICRyYzIJPSJjcnlwdG8vcmMyL3JjMi5oIjsKbXkgJGJmCT0iY3J5cHRvL2JmL2JmX2xvY2wuaCI7Cm15ICRibl9hc20JPSJibl9hc20ubyI7Cm15ICRkZXNfZW5jPSJkZXNfZW5jLm8gZmNyeXB0X2IubyI7Cm15ICRhZXNfZW5jPSJhZXNfY29yZS5vIGFlc19jYmMubyI7Cm15ICRiZl9lbmMJPSJiZl9lbmMubyI7Cm15ICRjYXN0X2VuYz0iY19lbmMubyI7Cm15ICRyYzRfZW5jPSJyYzRfZW5jLm8gcmM0X3NrZXkubyI7Cm15ICRyYzVfZW5jPSJyYzVfZW5jLm8iOwpteSAkbWQ1X29iaj0iIjsKbXkgJHNoYTFfb2JqPSIiOwpteSAkcm1kMTYwX29iaj0iIjsKbXkgJGNtbGxfZW5jPSJjYW1lbGxpYS5vIGNtbGxfbWlzYy5vIGNtbGxfY2JjLm8iOwpteSAkcHJvY2Vzc29yPSIiOwpteSAkZGVmYXVsdF9yYW5saWI7Cm15ICRwZXJsOwpteSAkZmlwcz0wOwoKIyBBbGwgb2YgdGhlIGZvbGxvd2luZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IChSQzUgd2FzIGVuYWJsZWQgYmVmb3JlIDAuOS44KToKCm15ICVkaXNhYmxlZCA9ICggIyAid2hhdCIgICAgICAgICA9PiAiY29tbWVudCIgW29yIHNwZWNpYWwga2V5d29yZCAiZXhwZXJpbWVudGFsIl0KCQkgImVjX25pc3RwXzY0X2djY18xMjgiID0+ICJkZWZhdWx0IiwKCQkgImdtcCIJCSAgPT4gImRlZmF1bHQiLAoJCSAianBha2UiICAgICAgICAgID0+ICJleHBlcmltZW50YWwiLAoJCSAibWQyIiAgICAgICAgICAgID0+ICJkZWZhdWx0IiwKCQkgInJjNSIgICAgICAgICAgICA9PiAiZGVmYXVsdCIsCgkJICJyZmMzNzc5IgkgID0+ICJkZWZhdWx0IiwKCQkgInNjdHAiICAgICAgID0+ICJkZWZhdWx0IiwKCQkgInNoYXJlZCIgICAgICAgICA9PiAiZGVmYXVsdCIsCgkJICJzc2wtdHJhY2UiCSAgPT4gImRlZmF1bHQiLAoJCSAic3RvcmUiCSAgPT4gImV4cGVyaW1lbnRhbCIsCgkJICJ1bml0LXRlc3QiCSAgPT4gImRlZmF1bHQiLAoJCSAiemxpYiIgICAgICAgICAgID0+ICJkZWZhdWx0IiwKCQkgInpsaWItZHluYW1pYyIgICA9PiAiZGVmYXVsdCIKCSAgICAgICApOwpteSBAZXhwZXJpbWVudGFsID0gKCk7CgojIElmIHNzbCBkaXJlY3RvcnkgbWlzc2luZyBhc3N1bWUgdHJ1bmNhdGVkIEZJUFMgdGFyYmFsbAppZiAoIS1kICJzc2wiKQoJewoJcHJpbnQgU1RERVJSICJBdXRvIENvbmZpZ3VyaW5nIGZpcHNvbmx5XG4iOwoJJGZpcHMgPSAxOwoJJG5vZmlwc2NhbmlzdGVyY2hlY2sgPSAxOwoJJGZpcHNsaWJkaXI9IiI7CgkkZmlwc2NhbmlzdGVyaW50ZXJuYWw9InkiOwoJJGZpcHNjYW5pc3Rlcm9ubHkgPSAyOwoJaWYgKCEgLWYgImNyeXB0by9ibi9ibl9nZjJtLmMiICkKCQl7CgkJJGRpc2FibGVke2VjMm19ID0gImZvcmNlZCI7CgkJfQoJfQoKIyBUaGlzIGlzIHdoYXQgJGRlcGZsYWdzIHdpbGwgbG9vayBsaWtlIHdpdGggdGhlIGFib3ZlIGRlZmF1bHRzCiMgKHdlIG5lZWQgdGhpcyB0byBzZWUgaWYgd2Ugc2hvdWxkIGFkdmlzZSB0aGUgdXNlciB0byBydW4gIm1ha2UgZGVwZW5kIik6Cm15ICRkZWZhdWx0X2RlcGZsYWdzID0gIiAtRE9QRU5TU0xfTk9fRUNfTklTVFBfNjRfR0NDXzEyOCAtRE9QRU5TU0xfTk9fR01QIC1ET1BFTlNTTF9OT19KUEFLRSAtRE9QRU5TU0xfTk9fTUQyIC1ET1BFTlNTTF9OT19SQzUgLURPUEVOU1NMX05PX1JGQzM3NzkgLURPUEVOU1NMX05PX1NDVFAgLURPUEVOU1NMX05PX1NTTF9UUkFDRSAtRE9QRU5TU0xfTk9fU1RPUkUgLURPUEVOU1NMX05PX1VOSVRfVEVTVCI7CgojIEV4cGxpY2l0ICJuby0uLi4iIG9wdGlvbnMgd2lsbCBiZSBjb2xsZWN0ZWQgaW4gJWRpc2FibGVkIGFsb25nIHdpdGggdGhlIGRlZmF1bHRzLgojIFRvIHJlbW92ZSBzb21ldGhpbmcgZnJvbSAlZGlzYWJsZWQsIHVzZSAiZW5hYmxlLWZvbyIgKHVubGVzcyBpdCdzIGV4cGVyaW1lbnRhbCkuCiMgRm9yIHN5bW1ldHJ5LCAiZGlzYWJsZS1mb28iIGlzIGEgc3lub255bSBmb3IgIm5vLWZvbyIuCgojIEZvciBmZWF0dXJlcyBjYWxsZWQgImV4cGVyaW1lbnRhbCIgaGVyZSwgYSBtb3JlIGV4cGxpY2l0ICJleHBlcmltZW50YWwtZm9vIiBpcyBuZWVkZWQgdG8gZW5hYmxlLgojIFdlIHdpbGwgY29sbGVjdCBzdWNoIHJlcXVlc3RzIGluIEBleHBlcmltZW50YWwuCiMgVG8gYXZvaWQgYWNjaWRlbnRhbCB1c2Ugb2YgZXhwZXJpbWVudGFsIGZlYXR1cmVzLCBhcHBsaWNhdGlvbnMgd2lsbCBoYXZlIHRvIHVzZSAtRE9QRU5TU0xfRVhQRVJJTUVOVEFMX0ZPTy4KCgpteSAkbm9fc3NlMj0wOwoKJnVzYWdlIGlmICgkI0FSR1YgPCAwKTsKCm15ICRmbGFnczsKbXkgJGRlcGZsYWdzOwpteSAkb3BlbnNzbF9leHBlcmltZW50YWxfZGVmaW5lczsKbXkgJG9wZW5zc2xfYWxnb3JpdGhtX2RlZmluZXM7Cm15ICRvcGVuc3NsX3RocmVhZF9kZWZpbmVzOwpteSAkb3BlbnNzbF9zeXNfZGVmaW5lcz0iIjsKbXkgJG9wZW5zc2xfb3RoZXJfZGVmaW5lczsKbXkgJGxpYnM7Cm15ICRsaWJrcmI1PSIiOwpteSAkdGFyZ2V0OwpteSAkb3B0aW9uczsKbXkgJHN5bWxpbms7Cm15ICRtYWtlX2RlcGVuZD0wOwpteSAld2l0aGFyZ3M9KCk7CgpteSBAYXJndmNvcHk9QEFSR1Y7Cm15ICRhcmd2c3RyaW5nPSIiOwpteSAkYXJndl91bnByb2Nlc3NlZD0xOwoKd2hpbGUoJGFyZ3ZfdW5wcm9jZXNzZWQpCgl7CgkkZmxhZ3M9IiI7CgkkZGVwZmxhZ3M9IiI7Cgkkb3BlbnNzbF9leHBlcmltZW50YWxfZGVmaW5lcz0iIjsKCSRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzPSIiOwoJJG9wZW5zc2xfdGhyZWFkX2RlZmluZXM9IiI7Cgkkb3BlbnNzbF9zeXNfZGVmaW5lcz0iIjsKCSRvcGVuc3NsX290aGVyX2RlZmluZXM9IiI7CgkkbGlicz0iIjsKCSR0YXJnZXQ9IiI7Cgkkb3B0aW9ucz0iIjsKCSRzeW1saW5rPTE7CgoJJGFyZ3ZfdW5wcm9jZXNzZWQ9MDsKCSRhcmd2c3RyaW5nPWpvaW4oJyAnLEBhcmd2Y29weSk7CgpQUk9DRVNTX0FSR1M6Cglmb3JlYWNoIChAYXJndmNvcHkpCgkJewoJCXMgL14tbm8tL25vLS87ICMgc29tZSBwZW9wbGUganVzdCBjYW4ndCByZWFkIHRoZSBpbnN0cnVjdGlvbnMKCgkJIyByZXdyaXRlIHNvbWUgb3B0aW9ucyBpbiAiZW5hYmxlLS4uLiIgZm9ybQoJCXMgL14tPy0/c2hhcmVkJC9lbmFibGUtc2hhcmVkLzsKCQlzIC9ec2N0cCQvZW5hYmxlLXNjdHAvOwoJCXMgL150aHJlYWRzJC9lbmFibGUtdGhyZWFkcy87CgkJcyAvXnpsaWIkL2VuYWJsZS16bGliLzsKCQlzIC9eemxpYi1keW5hbWljJC9lbmFibGUtemxpYi1keW5hbWljLzsKCgkJaWYgKC9ebm8tKC4rKSQvIHx8IC9eZGlzYWJsZS0oLispJC8pCgkJCXsKCQkJaWYgKCEoJGRpc2FibGVkeyQxfSBlcSAiZXhwZXJpbWVudGFsIikpCgkJCQl7CgkJCQlpZiAoJDEgZXEgInNzbCIpCgkJCQkJewoJCQkJCSRkaXNhYmxlZHsic3NsMiJ9ID0gIm9wdGlvbihzc2wpIjsKCQkJCQkkZGlzYWJsZWR7InNzbDMifSA9ICJvcHRpb24oc3NsKSI7CgkJCQkJfQoJCQkJZWxzaWYgKCQxIGVxICJ0bHMiKQoJCQkJCXsKCQkJCQkkZGlzYWJsZWR7InRsczEifSA9ICJvcHRpb24odGxzKSIKCQkJCQl9CgkJCQllbHNlCgkJCQkJewoJCQkJCSRkaXNhYmxlZHskMX0gPSAib3B0aW9uIjsKCQkJCQl9CgkJCQl9CgkJCX0KCQllbHNpZiAoL15lbmFibGUtKC4rKSQvIHx8IC9eZXhwZXJpbWVudGFsLSguKykkLykKCQkJewoJCQlteSAkYWxnbyA9ICQxOwoJCQlpZiAoJGRpc2FibGVkeyRhbGdvfSBlcSAiZXhwZXJpbWVudGFsIikKCQkJCXsKCQkJCWRpZSAiWW91IGFyZSByZXF1ZXN0aW5nIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlOyBwbGVhc2Ugc2F5ICdleHBlcmltZW50YWwtJGFsZ28nIGlmIHlvdSBhcmUgc3VyZVxuIgoJCQkJCXVubGVzcyAoL15leHBlcmltZW50YWwtLyk7CgkJCQlwdXNoIEBleHBlcmltZW50YWwsICRhbGdvOwoJCQkJfQoJCQlkZWxldGUgJGRpc2FibGVkeyRhbGdvfTsKCgkJCSR0aHJlYWRzID0gMSBpZiAoJGFsZ28gZXEgInRocmVhZHMiKTsKCQkJfQoJCWVsc2lmICgvXi0tdGVzdC1zYW5pdHkkLykKCQkJewoJCQlleGl0KCZ0ZXN0X3Nhbml0eSgpKTsKCQkJfQoJCWVsc2lmICgvXi0tc3RyaWN0LXdhcm5pbmdzLykKCQkJewoJCQkkc3RyaWN0X3dhcm5pbmdzID0gMTsKCQkJfQoJCWVsc2lmICgvXnJlY29uZmlndXJlLyB8fCAvXnJlY29uZi8pCgkJCXsKCQkJaWYgKG9wZW4oSU4sIjwkTWFrZWZpbGUiKSkKCQkJCXsKCQkJCXdoaWxlICg8SU4+KQoJCQkJCXsKCQkJCQljaG9tcDsKCQkJCQlpZiAoL15DT05GSUdVUkVfQVJHUz0oLiopLykKCQkJCQkJewoJCQkJCQkkYXJndnN0cmluZz0kMTsKCQkJCQkJQGFyZ3Zjb3B5PXNwbGl0KCcgJywkYXJndnN0cmluZyk7CgkJCQkJCWRpZSAiSW5jb3JyZWN0IGRhdGEgdG8gcmVjb25maWd1cmUsIHBsZWFzZSBkbyBhIG5vcm1hbCBjb25maWd1cmF0aW9uXG4iCgkJCQkJCQlpZiAoZ3JlcCgvXnJlY29uZi8sQGFyZ3Zjb3B5KSk7CgkJCQkJCXByaW50ICJSZWNvbmZpZ3VyaW5nIHdpdGg6ICRhcmd2c3RyaW5nXG4iOwoJCQkJCQkkYXJndl91bnByb2Nlc3NlZD0xOwoJCQkJCQljbG9zZShJTik7CgkJCQkJCWxhc3QgUFJPQ0VTU19BUkdTOwoJCQkJCQl9CgkJCQkJfQoJCQkJY2xvc2UoSU4pOwoJCQkJfQoJCQlkaWUgIkluc3VmZmljaWVudCBkYXRhIHRvIHJlY29uZmlndXJlLCBwbGVhc2UgZG8gYSBub3JtYWwgY29uZmlndXJhdGlvblxuIjsKCQkJfQoJCWVsc2lmICgvXjM4NiQvKQoJCQl7ICRwcm9jZXNzb3I9Mzg2OyB9CgkJZWxzaWYgKC9eZmlwcyQvKQoJCQl7CgkJCSRmaXBzPTE7CgkJCX0KCQllbHNpZiAoL15yc2FyZWYkLykKCQkJewoJCQkjIE5vIFJTQXJlZiBzdXBwb3J0IGFueSBtb3JlIHNpbmNlIGl0J3Mgbm90IG5lZWRlZC4KCQkJIyBUaGUgY2hlY2sgZm9yIHRoZSBvcHRpb24gaXMgdGhlcmUgc28gc2NyaXB0cyBhcmVuJ3QKCQkJIyBicm9rZW4KCQkJfQoJCWVsc2lmICgvXm5vZmlwc2NhbmlzdGVyY2hlY2skLykKCQkJewoJCQkkZmlwcyA9IDE7CgkJCSRub2ZpcHNjYW5pc3RlcmNoZWNrID0gMTsKCQkJfQoJCWVsc2lmICgvXmZpcHNjaGVjayQvKQoJCQl7CgkJCWlmICgkZmlwc2NhbmlzdGVyb25seSAhPSAyKQoJCQkJewoJCQkJcHJpbnQgU1RERVJSIDw8IkVPRiI7CkVSUk9SOiBGSVBTIG5vdCBhdXRvZGV0ZWN0ZWQuIE5vdCBydW5uaW5nIGZyb20gcmVzdHJpY3RlZCB0YXJiYWxsPz8KRU9GCgkJCQlleGl0KDEpOwoJCQkJfQoJCQl9CgkJZWxzaWYgKC9eZmlwc2NhbmlzdGVyb25seSQvKQoJCQl7CgkJCSRmaXBzID0gMTsKCQkJJG5vZmlwc2NhbmlzdGVyY2hlY2sgPSAxOwoJCQkkZmlwc2xpYmRpcj0iIjsKCQkJJGZpcHNjYW5pc3RlcmludGVybmFsPSJ5IjsKCQkJJGZpcHNjYW5pc3Rlcm9ubHkgPSAxOwoJCQl9CgkJZWxzaWYgKC9eZmlwc2NhbmlzdGVyYnVpbGQkLykKCQkJewoJCQkkZmlwcyA9IDE7CgkJCSRub2ZpcHNjYW5pc3RlcmNoZWNrID0gMTsKCQkJJGZpcHNsaWJkaXI9IiI7CgkJCSRmaXBzY2FuaXN0ZXJpbnRlcm5hbD0ieSI7CgkJCSRmaXBzY2FuaXN0ZXJvbmx5ID0gMTsKCQkJfQoJCWVsc2lmICgvXlstK10vKQoJCQl7CgkJCWlmICgvXi0tcHJlZml4PSguKikkLykKCQkJCXsKCQkJCSRwcmVmaXg9JDE7CgkJCQl9CgkJCWVsc2lmICgvXi0tbGliZGlyPSguKikkLykKCQkJCXsKCQkJCSRsaWJkaXI9JDE7CgkJCQl9CgkJCWVsc2lmICgvXi0tb3BlbnNzbGRpcj0oLiopJC8pCgkJCQl7CgkJCQkkb3BlbnNzbGRpcj0kMTsKCQkJCX0KCQkJZWxzaWYgKC9eLS1pbnN0YWxsLnByZWZpeD0oLiopJC8pCgkJCQl7CgkJCQkkaW5zdGFsbF9wcmVmaXg9JDE7CgkJCQl9CgkJCWVsc2lmICgvXi0td2l0aC1rcmI1LShkaXJ8bGlifGluY2x1ZGV8Zmxhdm9yKT0oLiopJC8pCgkJCQl7CgkJCQkkd2l0aGFyZ3N7ImtyYjUtIi4kMX09JDI7CgkJCQl9CgkJCWVsc2lmICgvXi0td2l0aC16bGliLWxpYj0oLiopJC8pCgkJCQl7CgkJCQkkd2l0aGFyZ3N7InpsaWItbGliIn09JDE7CgkJCQl9CgkJCWVsc2lmICgvXi0td2l0aC16bGliLWluY2x1ZGU9KC4qKSQvKQoJCQkJewoJCQkJJHdpdGhhcmdzeyJ6bGliLWluY2x1ZGUifT0iLUkkMSI7CgkJCQl9CgkJCWVsc2lmICgvXi0td2l0aC1maXBzbGliZGlyPSguKikkLykKCQkJCXsKCQkJCSRmaXBzbGliZGlyPSIkMS8iOwoJCQkJfQoJCQllbHNpZiAoL14tLXdpdGgtYmFzZWFkZHI9KC4qKSQvKQoJCQkJewoJCQkJJGJhc2VhZGRyPSIkMSI7CgkJCQl9CgkJCWVsc2lmICgvXi0tY3Jvc3MtY29tcGlsZS1wcmVmaXg9KC4qKSQvKQoJCQkJewoJCQkJJGNyb3NzX2NvbXBpbGVfcHJlZml4PSQxOwoJCQkJfQoJCQllbHNpZiAoL14tW2xMXSguKikkLyBvciAvXi1XbCwvKQoJCQkJewoJCQkJJGxpYnMuPSRfLiIgIjsKCQkJCX0KCQkJZWxzZQkjIGNvbW1vbiBpZiAoL15bLStdLyksIGp1c3QgcGFzcyBkb3duLi4uCgkJCQl7CgkJCQkkXyA9fiBzLyUoWzAtOWEtZl17MSwyfSkvY2hyKGhleCgkMSkpL2dlaTsKCQkJCSRmbGFncy49JF8uIiAiOwoJCQkJfQoJCQl9CgkJZWxzaWYgKCRfID1+IC9eKFteOl0rKTooLispJC8pCgkJCXsKCQkJZXZhbCAiXCR0YWJsZXtcJDF9ID0gXCIkMlwiIjsgIyBhbGxvdyAkeHh4IGNvbnN0cnVjdHMgaW4gdGhlIHN0cmluZwoJCQkkdGFyZ2V0PSQxOwoJCQl9CgkJZWxzZQoJCQl7CgkJCWRpZSAidGFyZ2V0IGFscmVhZHkgZGVmaW5lZCAtICR0YXJnZXQgKG9mZmVuZGluZyBhcmc6ICRfKVxuIiBpZiAoJHRhcmdldCBuZSAiIik7CgkJCSR0YXJnZXQ9JF87CgkJCX0KCgkJdW5sZXNzICgkXyBlcSAkdGFyZ2V0IHx8IC9ebm8tLyB8fCAvXmRpc2FibGUtLykKCQkJewoJCQkjICJuby0uLi4iIGZvbGxvd3MgbGF0ZXIgYWZ0ZXIgaW1wbGllZCBkaXNhY3RpdmF0aW9ucwoJCQkjIGhhdmUgYmVlbiBkZXJpdmVkLiAgKERvbid0IHRha2UgdGhpcyB0b28gc2Vyb2l1c2x5LAoJCQkjIHdlIHJlYWxseSBvbmx5IHdyaXRlIE9QVElPTlMgdG8gdGhlIE1ha2VmaWxlIG91dCBvZgoJCQkjIG5vc3RhbGdpYS4pCgoJCQlpZiAoJG9wdGlvbnMgZXEgIiIpCgkJCQl7ICRvcHRpb25zID0gJF87IH0KCQkJZWxzZQoJCQkJeyAkb3B0aW9ucyAuPSAiICIuJF87IH0KCQkJfQoJCX0KCX0KCgoKaWYgKCRwcm9jZXNzb3IgZXEgIjM4NiIpCgl7CgkkZGlzYWJsZWR7InNzZTIifSA9ICJmb3JjZWQiOwoJfQoKaWYgKCFkZWZpbmVkKCR3aXRoYXJnc3sia3JiNS1mbGF2b3IifSkgfHwgJHdpdGhhcmdzeyJrcmI1LWZsYXZvciJ9IGVxICIiKQoJewoJJGRpc2FibGVkeyJrcmI1In0gPSAia3JiNS1mbGF2b3Igbm90IHNwZWNpZmllZCI7Cgl9CgppZiAoIWRlZmluZWQoJGRpc2FibGVkeyJ6bGliLWR5bmFtaWMifSkpCgl7CgkjICJ6bGliLWR5bmFtaWMiIHdhcyBzcGVjaWZpY2FsbHkgZW5hYmxlZCwgc28gZW5hYmxlICJ6bGliIgoJZGVsZXRlICRkaXNhYmxlZHsiemxpYiJ9OwoJfQoKaWYgKGRlZmluZWQoJGRpc2FibGVkeyJyaWpuZGFlbCJ9KSkKCXsKCSRkaXNhYmxlZHsiYWVzIn0gPSAiZm9yY2VkIjsKCX0KaWYgKGRlZmluZWQoJGRpc2FibGVkeyJkZXMifSkpCgl7CgkkZGlzYWJsZWR7Im1kYzIifSA9ICJmb3JjZWQiOwoJfQppZiAoZGVmaW5lZCgkZGlzYWJsZWR7ImVjIn0pKQoJewoJJGRpc2FibGVkeyJlY2RzYSJ9ID0gImZvcmNlZCI7CgkkZGlzYWJsZWR7ImVjZGgifSA9ICJmb3JjZWQiOwoJfQoKIyBTU0wgMi4wIHJlcXVpcmVzIE1ENSBhbmQgUlNBCmlmIChkZWZpbmVkKCRkaXNhYmxlZHsibWQ1In0pIHx8IGRlZmluZWQoJGRpc2FibGVkeyJyc2EifSkpCgl7CgkkZGlzYWJsZWR7InNzbDIifSA9ICJmb3JjZWQiOwoJfQoKIyBTU0wgMy4wIGFuZCBUTFMgcmVxdWlyZXMgTUQ1IGFuZCBTSEEgYW5kIGVpdGhlciBSU0Egb3IgRFNBK0RICmlmIChkZWZpbmVkKCRkaXNhYmxlZHsibWQ1In0pIHx8IGRlZmluZWQoJGRpc2FibGVkeyJzaGEifSkKICAgIHx8IChkZWZpbmVkKCRkaXNhYmxlZHsicnNhIn0pCiAgICAgICAgJiYgKGRlZmluZWQoJGRpc2FibGVkeyJkc2EifSkgfHwgZGVmaW5lZCgkZGlzYWJsZWR7ImRoIn0pKSkpCgl7CgkkZGlzYWJsZWR7InNzbDMifSA9ICJmb3JjZWQiOwoJJGRpc2FibGVkeyJ0bHMxIn0gPSAiZm9yY2VkIjsKCX0KCmlmIChkZWZpbmVkKCRkaXNhYmxlZHsidGxzMSJ9KSkKCXsKCSRkaXNhYmxlZHsidGxzZXh0In0gPSAiZm9yY2VkIjsKCX0KCmlmIChkZWZpbmVkKCRkaXNhYmxlZHsiZWMifSkgfHwgZGVmaW5lZCgkZGlzYWJsZWR7ImRzYSJ9KQogICAgfHwgZGVmaW5lZCgkZGlzYWJsZWR7ImRoIn0pKQoJewoJJGRpc2FibGVkeyJnb3N0In0gPSAiZm9yY2VkIjsKCX0KCiMgU1JQIGFuZCBIRUFSVEJFQVRTIHJlcXVpcmUgVExTRVhUCmlmIChkZWZpbmVkKCRkaXNhYmxlZHsidGxzZXh0In0pKQoJewoJJGRpc2FibGVkeyJzcnAifSA9ICJmb3JjZWQiOwoJJGRpc2FibGVkeyJoZWFydGJlYXRzIn0gPSAiZm9yY2VkIjsKCX0KCmlmICgkdGFyZ2V0IGVxICJUQUJMRSIpIHsKCWZvcmVhY2ggJHRhcmdldCAoc29ydCBrZXlzICV0YWJsZSkgewoJCXByaW50X3RhYmxlX2VudHJ5KCR0YXJnZXQpOwoJfQoJZXhpdCAwOwp9CgppZiAoJHRhcmdldCBlcSAiTElTVCIpIHsKCWZvcmVhY2ggKHNvcnQga2V5cyAldGFibGUpIHsKCQlwcmludDsKCQlwcmludCAiXG4iOwoJfQoJZXhpdCAwOwp9CgppZiAoJHRhcmdldCA9fiBtL15DeWdXaW4zMigtLiopJC8pIHsKCSR0YXJnZXQgPSAiQ3lnd2luIi4kMTsKfQoKcHJpbnQgIkNvbmZpZ3VyaW5nIGZvciAkdGFyZ2V0XG4iOwoKJnVzYWdlIGlmICghZGVmaW5lZCgkdGFibGV7JHRhcmdldH0pKTsKCmlmICgkZmlwcykKCXsKCWRlbGV0ZSAkZGlzYWJsZWR7InNoYXJlZCJ9IGlmICgkZGlzYWJsZWR7InNoYXJlZCJ9IGVxICJkZWZhdWx0Iik7Cgl9Cgpmb3JlYWNoIChzb3J0IChrZXlzICVkaXNhYmxlZCkpCgl7Cgkkb3B0aW9ucyAuPSAiIG5vLSRfIjsKCglwcmludGYgIiAgICBuby0lLTEycyAlLTEwcyIsICRfLCAiWyRkaXNhYmxlZHskX31dIjsKCglpZiAoL15kc28kLykKCQl7ICRub19kc28gPSAxOyB9CgllbHNpZiAoL150aHJlYWRzJC8pCgkJeyAkbm9fdGhyZWFkcyA9IDE7IH0KCWVsc2lmICgvXnNoYXJlZCQvKQoJCXsgJG5vX3NoYXJlZCA9IDE7IH0KCWVsc2lmICgvXnpsaWIkLykKCQl7ICR6bGliID0gMDsgfQoJZWxzaWYgKC9ec3RhdGljLWVuZ2luZSQvKQoJCXsgfQoJZWxzaWYgKC9eemxpYi1keW5hbWljJC8pCgkJeyB9CgllbHNpZiAoL15zeW1saW5rcyQvKQoJCXsgJHN5bWxpbmsgPSAwOyB9CgllbHNpZiAoL15zc2UyJC8pCgkJeyAkbm9fc3NlMiA9IDE7IH0KCWVsc2UKCQl7CgkJbXkgKCRBTEdPLCAkYWxnbyk7CgkJKCRBTEdPID0gJGFsZ28gPSAkXykgPX4gdHIvW1wtYS16XS9bX0EtWl0vOwoKCQlpZiAoL15hc20kLyB8fCAvXmVyciQvIHx8IC9eaHckLyB8fCAvXmh3LS8pCgkJCXsKCQkJJG9wZW5zc2xfb3RoZXJfZGVmaW5lcyAuPSAiI2RlZmluZSBPUEVOU1NMX05PXyRBTEdPXG4iOwoJCQlwcmludCAiIE9QRU5TU0xfTk9fJEFMR08iOwoKCQkJaWYgKC9eZXJyJC8pCXsgJGZsYWdzIC49ICItRE9QRU5TU0xfTk9fRVJSICI7IH0KCQkJZWxzaWYgKC9eYXNtJC8pCXsgJG5vX2FzbSA9IDE7IH0KCQkJfQoJCWVsc2UKCQkJewoJCQkkb3BlbnNzbF9hbGdvcml0aG1fZGVmaW5lcyAuPSAiI2RlZmluZSBPUEVOU1NMX05PXyRBTEdPXG4iOwoJCQlwcmludCAiIE9QRU5TU0xfTk9fJEFMR08iOwoKCQkJaWYgKC9ea3JiNSQvKQoJCQkJeyAkbm9fa3JiNSA9IDE7IH0KCQkJZWxzZQoJCQkJewoJCQkJcHVzaCBAc2tpcCwgJGFsZ287CgkJCQkjIGZpeC11cCBjcnlwdG8vZGlyZWN0b3J5IG5hbWUocykKCQkJCUBza2lwWyQjc2tpcF09Indocmxwb29sIiBpZiAkYWxnbyBlcSAid2hpcmxwb29sIjsKCQkJCXByaW50ICIgKHNraXAgZGlyKSI7CgoJCQkJJGRlcGZsYWdzIC49ICIgLURPUEVOU1NMX05PXyRBTEdPIjsKCQkJCX0KCQkJfQoJCX0KCglwcmludCAiXG4iOwoJfQoKbXkgJGV4cF9jZmxhZ3MgPSAiIjsKCmZvcmVhY2ggKHNvcnQgQGV4cGVyaW1lbnRhbCkKCXsKCW15ICRBTEdPOwoJKCRBTEdPID0gJF8pID1+IHRyL1thLXpdL1tBLVpdLzsKCgkjIG9wZW5zc2xjb25mLmggd2lsbCBzZXQgT1BFTlNTTF9OT18uLi4gdW5sZXNzIE9QRU5TU0xfRVhQRVJJTUVOVEFMXy4uLiBpcyBkZWZpbmVkCgkkb3BlbnNzbF9leHBlcmltZW50YWxfZGVmaW5lcyAuPSAiI2RlZmluZSBPUEVOU1NMX05PXyRBTEdPXG4iOwoJJGV4cF9jZmxhZ3MgLj0gIiAtRE9QRU5TU0xfRVhQRVJJTUVOVEFMXyRBTEdPIjsKCX0KCm15ICRJc01LMU1GPXNjYWxhciBncmVwIC9eJHRhcmdldCQvLEBNSzFNRl9CdWlsZHM7CgokZXhlX2V4dD0iLmV4ZSIgaWYgKCR0YXJnZXQgZXEgIkN5Z3dpbiIgfHwgJHRhcmdldCBlcSAiREpHUFAiIHx8ICR0YXJnZXQgPX4gL15taW5ndy8pOwokZXhlX2V4dD0iLm5sbSIgaWYgKCR0YXJnZXQgPX4gL25ldHdhcmUvKTsKJGV4ZV9leHQ9Ii5wbSIgIGlmICgkdGFyZ2V0ID1+IC92b3MvKTsKaWYgKCRvcGVuc3NsZGlyIGVxICIiIGFuZCAkcHJlZml4IGVxICIiKQoJewoJaWYgKCRmaXBzKQoJCXsKCQlpZiAoZXhpc3RzICRFTlZ7RklQU0RJUn0pCgkJCXsKCQkJJG9wZW5zc2xkaXI9IiRFTlZ7RklQU0RJUn0iOwoJCQl9CgkJZWxzZQoJCQl7CgkJCSRvcGVuc3NsZGlyPSIvdXNyL2xvY2FsL3NzbC9maXBzLTIuMCI7CgkJCX0KCQl9CgllbHNlCgkJewoJCSRvcGVuc3NsZGlyPSIvdXNyL2xvY2FsL3NzbCI7CgkJfQoJfQokcHJlZml4PSRvcGVuc3NsZGlyIGlmICRwcmVmaXggZXEgIiI7CgokZGVmYXVsdF9yYW5saWI9ICZ3aGljaCgicmFubGliIikgb3IgJGRlZmF1bHRfcmFubGliPSJ0cnVlIjsKJHBlcmw9JEVOVnsnUEVSTCd9IG9yICRwZXJsPSZ3aGljaCgicGVybDUiKSBvciAkcGVybD0md2hpY2goInBlcmwiKQogIG9yICRwZXJsPSJwZXJsIjsKbXkgJG1ha2UgPSAkRU5WeydNQUtFJ30gfHwgIm1ha2UiOwoKbXkgJGZpcHNfYXV0aF9rZXkgPSAkRU5WeydGSVBTX0FVVEhfS0VZJ307Cm15ICRmaXBzX2F1dGhfb2ZmaWNlciA9ICRFTlZ7J0ZJUFNfQVVUSF9PRkZJQ0VSJ307Cm15ICRmaXBzX2F1dGhfdXNlciA9ICRFTlZ7J0ZJUFNfQVVUSF9VU0VSJ307CgokY3Jvc3NfY29tcGlsZV9wcmVmaXg9JEVOVnsnQ1JPU1NfQ09NUElMRSd9IGlmICRjcm9zc19jb21waWxlX3ByZWZpeCBlcSAiIjsKCmNob3AgJG9wZW5zc2xkaXIgaWYgJG9wZW5zc2xkaXIgPX4gL1wvJC87CmNob3AgJHByZWZpeCBpZiAkcHJlZml4ID1+IC8uXC8kLzsKCiRvcGVuc3NsZGlyPSRwcmVmaXggLiAiL3NzbCIgaWYgJG9wZW5zc2xkaXIgZXEgIiI7CiRvcGVuc3NsZGlyPSRwcmVmaXggLiAiLyIgLiAkb3BlbnNzbGRpciBpZiAkb3BlbnNzbGRpciAhfiAvKF5cL3xeW2EtekEtWl06W1xcXC9dKS87CgoKcHJpbnQgIklzTUsxTUY9JElzTUsxTUZcbiI7CgpteSBAZmllbGRzID0gc3BsaXQoL1xzKjpccyovLCR0YWJsZXskdGFyZ2V0fSAuICI6IiB4IDMwICwgLTEpOwpteSAkY2MgPSAkZmllbGRzWyRpZHhfY2NdOwojIEFsbG93IGVudmlyb25tZW50IENDIHRvIG92ZXJyaWRlIGNvbXBpbGVyLi4uCmlmKCRFTlZ7Q0N9KSB7CiAgICAkY2MgPSAkRU5We0NDfTsKfQpteSAkY2ZsYWdzID0gJGZpZWxkc1skaWR4X2NmbGFnc107Cm15ICR1bmlzdGQgPSAkZmllbGRzWyRpZHhfdW5pc3RkXTsKbXkgJHRocmVhZF9jZmxhZyA9ICRmaWVsZHNbJGlkeF90aHJlYWRfY2ZsYWddOwpteSAkc3lzX2lkID0gJGZpZWxkc1skaWR4X3N5c19pZF07Cm15ICRsZmxhZ3MgPSAkZmllbGRzWyRpZHhfbGZsYWdzXTsKbXkgJGJuX29wcyA9ICRmaWVsZHNbJGlkeF9ibl9vcHNdOwpteSAkY3B1aWRfb2JqID0gJGZpZWxkc1skaWR4X2NwdWlkX29ial07Cm15ICRibl9vYmogPSAkZmllbGRzWyRpZHhfYm5fb2JqXTsKbXkgJGRlc19vYmogPSAkZmllbGRzWyRpZHhfZGVzX29ial07Cm15ICRhZXNfb2JqID0gJGZpZWxkc1skaWR4X2Flc19vYmpdOwpteSAkYmZfb2JqID0gJGZpZWxkc1skaWR4X2JmX29ial07Cm15ICRtZDVfb2JqID0gJGZpZWxkc1skaWR4X21kNV9vYmpdOwpteSAkc2hhMV9vYmogPSAkZmllbGRzWyRpZHhfc2hhMV9vYmpdOwpteSAkY2FzdF9vYmogPSAkZmllbGRzWyRpZHhfY2FzdF9vYmpdOwpteSAkcmM0X29iaiA9ICRmaWVsZHNbJGlkeF9yYzRfb2JqXTsKbXkgJHJtZDE2MF9vYmogPSAkZmllbGRzWyRpZHhfcm1kMTYwX29ial07Cm15ICRyYzVfb2JqID0gJGZpZWxkc1skaWR4X3JjNV9vYmpdOwpteSAkd3Bfb2JqID0gJGZpZWxkc1skaWR4X3dwX29ial07Cm15ICRjbWxsX29iaiA9ICRmaWVsZHNbJGlkeF9jbWxsX29ial07Cm15ICRtb2Rlc19vYmogPSAkZmllbGRzWyRpZHhfbW9kZXNfb2JqXTsKbXkgJGVuZ2luZXNfb2JqID0gJGZpZWxkc1skaWR4X2VuZ2luZXNfb2JqXTsKbXkgJHBlcmxhc21fc2NoZW1lID0gJGZpZWxkc1skaWR4X3Blcmxhc21fc2NoZW1lXTsKbXkgJGRzb19zY2hlbWUgPSAkZmllbGRzWyRpZHhfZHNvX3NjaGVtZV07Cm15ICRzaGFyZWRfdGFyZ2V0ID0gJGZpZWxkc1skaWR4X3NoYXJlZF90YXJnZXRdOwpteSAkc2hhcmVkX2NmbGFnID0gJGZpZWxkc1skaWR4X3NoYXJlZF9jZmxhZ107Cm15ICRzaGFyZWRfbGRmbGFnID0gJGZpZWxkc1skaWR4X3NoYXJlZF9sZGZsYWddOwpteSAkc2hhcmVkX2V4dGVuc2lvbiA9ICRmaWVsZHNbJGlkeF9zaGFyZWRfZXh0ZW5zaW9uXTsKbXkgJHJhbmxpYiA9ICRFTlZ7J1JBTkxJQid9IHx8ICRmaWVsZHNbJGlkeF9yYW5saWJdOwpteSAkYXIgPSAkRU5WeydBUid9IHx8ICJhciI7Cm15ICRhcmZsYWdzID0gJGZpZWxkc1skaWR4X2FyZmxhZ3NdOwpteSAkbXVsdGlsaWIgPSAkZmllbGRzWyRpZHhfbXVsdGlsaWJdOwoKIyBpZiAkcHJlZml4L2xpYiRtdWx0aWxpYiBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCB0aGVuCiMgYXNzdW1lIHRoYXQgaXQncyBub3Qgc2VhcmNoZWQgYnkgbGlua2VyIGF1dG9tYXRpY2FsbHksIGluCiMgd2hpY2ggY2FzZSBhZGRpbmcgJG11bHRpbGliIHN1ZmZpeCBjYXVzZXMgbW9yZSBncmllZiB0aGFuCiMgd2UncmUgcmVhZHkgdG8gdG9sZXJhdGUsIHNvIGRvbid0Li4uCiRtdWx0aWxpYj0iIiBpZiAhLWQgIiRwcmVmaXgvbGliJG11bHRpbGliIjsKCiRsaWJkaXI9ImxpYiRtdWx0aWxpYiIgaWYgJGxpYmRpciBlcSAiIjsKCiRjZmxhZ3MgPSAiJGNmbGFncyRleHBfY2ZsYWdzIjsKCiMgJyUnIGluICRsZmxhZ3MgaXMgdXNlZCB0byBzcGxpdCBmbGFncyB0byAicHJlLSIgYW5kIHBvc3QtZmxhZ3MKbXkgKCRwcmVsZmxhZ3MsJHBvc3RsZmxhZ3MpPXNwbGl0KCclJywkbGZsYWdzKTsKaWYgKGRlZmluZWQoJHBvc3RsZmxhZ3MpKQl7ICRsZmxhZ3M9JHBvc3RsZmxhZ3M7CX0KZWxzZQkJCQl7ICRsZmxhZ3M9JHByZWxmbGFnczsgdW5kZWYgJHByZWxmbGFnczsJfQoKaWYgKCR0YXJnZXQgPX4gL15taW5ndy8gJiYgYCRjYyAtLXRhcmdldC1oZWxwIDI+JjFgICF+IG0vXC1tbm9cLWN5Z3dpbi9tKQoJewoJJGNmbGFncyA9fiBzL1wtbW5vXC1jeWd3aW5ccyovLzsKCSRzaGFyZWRfbGRmbGFnID1+IHMvXC1tbm9cLWN5Z3dpblxzKi8vOwoJfQoKaWYgKCR0YXJnZXQgPX4gL2xpbnV4LipcLW1pcHMvICYmICEkbm9fYXNtICYmICRmbGFncyAhfiAvXC1tKGlwc3xhcmNoPSkvKSB7CgkjIG1pbmltYWxseSByZXF1aXJlZCBhcmNoaXRlY3R1cmUgZmxhZ3MgZm9yIGFzc2VtYmx5IG1vZHVsZXMKCSRjZmxhZ3M9Ii1taXBzMiAkY2ZsYWdzIiBpZiAoJHRhcmdldCA9fiAvbWlwczMyLyk7CgkkY2ZsYWdzPSItbWlwczMgJGNmbGFncyIgaWYgKCR0YXJnZXQgPX4gL21pcHM2NC8pOwp9CgpteSAkbm9fc2hhcmVkX3dhcm49MDsKbXkgJG5vX3VzZXJfY2ZsYWdzPTA7CgppZiAoJGZsYWdzIG5lICIiKQl7ICRjZmxhZ3M9IiRmbGFncyRjZmxhZ3MiOyB9CmVsc2UJCQl7ICRub191c2VyX2NmbGFncz0xOyAgICAgICB9CgojIEtlcmJlcm9zIHNldHRpbmdzLiAgVGhlIGZsYXZvciBtdXN0IGJlIHByb3ZpZGVkIGZyb20gb3V0c2lkZSwgZWl0aGVyIHRocm91Z2gKIyB0aGUgc2NyaXB0ICJjb25maWciIG9yIG1hbnVhbGx5LgppZiAoISRub19rcmI1KQoJewoJbXkgKCRscmVzb2x2LCAkbHBhdGgsICRsZXh0KTsKCWlmICgkd2l0aGFyZ3N7ImtyYjUtZmxhdm9yIn0gPX4gL15bSGhdZWltZGFsJC8pCgkJewoJCWRpZSAiU29ycnksIEhlaW1kYWwgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWRcbiI7CgkJfQoJIyMjIyMgSEFDSyB0byBmb3JjZSB1c2Ugb2YgSGVpbWRhbC4KCSMjIyMjIFdBUk5JTkc6IFNpbmNlIHdlIGRvbid0IHJlYWxseSBoYXZlIGFkZXF1YXRlIHN1cHBvcnQgZm9yIEhlaW1kYWwsCgkjIyMjIyAgICAgICAgICB1c2luZyB0aGlzIHdpbGwgYnJlYWsgdGhlIGJ1aWxkLiAgWW91J2xsIGhhdmUgdG8gbWFrZQoJIyMjIyMgICAgICAgICAgY2hhbmdlcyB0byB0aGUgc291cmNlLCBhbmQgaWYgeW91IGRvLCBwbGVhc2Ugc2VuZAoJIyMjIyMgICAgICAgICAgcGF0Y2hlcyB0byBvcGVuc3NsLWRldkBvcGVuc3NsLm9yZwoJaWYgKCR3aXRoYXJnc3sia3JiNS1mbGF2b3IifSA9fiAvXmZvcmNlLVtIaF1laW1kYWwkLykKCQl7CgkJd2FybiAiSGVpbWRhbCBpc24ndCByZWFsbHkgc3VwcG9ydGVkLiAgWW91ciBidWlsZCBXSUxMIGJyZWFrXG4iOwoJCXdhcm4gIklmIHlvdSBmaXggdGhlIHByb2JsZW1zLCBwbGVhc2Ugc2VuZCBhIHBhdGNoIHRvIG9wZW5zc2wtZGV2XEBvcGVuc3NsLm9yZ1xuIjsKCQkkd2l0aGFyZ3N7ImtyYjUtZGlyIn0gPSAiL3Vzci9oZWltZGFsIgoJCQlpZiAkd2l0aGFyZ3N7ImtyYjUtZGlyIn0gZXEgIiI7CgkJJHdpdGhhcmdzeyJrcmI1LWxpYiJ9ID0gIi1MIi4kd2l0aGFyZ3N7ImtyYjUtZGlyIn0uCgkJCSIvbGliIC1sZ3NzYXBpIC1sa3JiNSAtbGNvbV9lcnIiCgkJCWlmICR3aXRoYXJnc3sia3JiNS1saWIifSBlcSAiIiAmJiAhJElzTUsxTUY7CgkJJGNmbGFncz0iLURLUkI1X0hFSU1EQUwgJGNmbGFncyI7CgkJfQoJaWYgKCR3aXRoYXJnc3sia3JiNS1mbGF2b3IifSA9fiAvXltNbV1bSWldW1R0XS8pCgkJewoJCSR3aXRoYXJnc3sia3JiNS1kaXIifSA9ICIvdXNyL2tlcmJlcm9zIgoJCQlpZiAkd2l0aGFyZ3N7ImtyYjUtZGlyIn0gZXEgIiI7CgkJJHdpdGhhcmdzeyJrcmI1LWxpYiJ9ID0gIi1MIi4kd2l0aGFyZ3N7ImtyYjUtZGlyIn0uCgkJCSIvbGliIC1sZ3NzYXBpX2tyYjUgLWxrcmI1IC1sY29tX2VyciAtbGs1Y3J5cHRvIgoJCQlpZiAkd2l0aGFyZ3N7ImtyYjUtbGliIn0gZXEgIiIgJiYgISRJc01LMU1GOwoJCSRjZmxhZ3M9Ii1ES1JCNV9NSVQgJGNmbGFncyI7CgkJJHdpdGhhcmdzeyJrcmI1LWZsYXZvciJ9ID1+IHMvXltNbV1bSWldW1R0XVsuXy1dKi8vOwoJCWlmICgkd2l0aGFyZ3N7ImtyYjUtZmxhdm9yIn0gPX4gL14xWy5fLV0qWzAxXS8pCgkJCXsKCQkJJGNmbGFncz0iLURLUkI1X01JVF9PTEQxMSAkY2ZsYWdzIjsKCQkJfQoJCX0KCUxSRVNPTFY6Cglmb3JlYWNoICRscGF0aCAoIi9saWIiLCAiL3Vzci9saWIiKQoJCXsKCQlmb3JlYWNoICRsZXh0ICgiYSIsICJzbyIpCgkJCXsKCQkJJGxyZXNvbHYgPSAiJGxwYXRoL2xpYnJlc29sdi4kbGV4dCI7CgkJCWxhc3QgTFJFU09MVglpZiAoLXIgIiRscmVzb2x2Iik7CgkJCSRscmVzb2x2ID0gIiI7CgkJCX0KCQl9Cgkkd2l0aGFyZ3N7ImtyYjUtbGliIn0gLj0gIiAtbHJlc29sdiIKCQlpZiAoIiRscmVzb2x2IiBuZSAiIik7Cgkkd2l0aGFyZ3N7ImtyYjUtaW5jbHVkZSJ9ID0gIi1JIi4kd2l0aGFyZ3N7ImtyYjUtZGlyIn0uIi9pbmNsdWRlIgoJCWlmICR3aXRoYXJnc3sia3JiNS1pbmNsdWRlIn0gZXEgIiIgJiYKCQkgICAkd2l0aGFyZ3N7ImtyYjUtZGlyIn0gbmUgIiI7Cgl9CgojIFRoZSBEU08gY29kZSBjdXJyZW50bHkgYWx3YXlzIGltcGxlbWVudHMgYWxsIGZ1bmN0aW9ucyBzbyB0aGF0IG5vCiMgYXBwbGljYXRpb25zIHdpbGwgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGF0IGZyb20gYSBjb21waWxhdGlvbiBwb2ludAojIG9mIHZpZXcuIEhvd2V2ZXIsIHRoZSAibWV0aG9kInMgbWF5IHJldHVybiB6ZXJvIHVubGVzcyB0aGF0IHBsYXRmb3JtCiMgaGFzIHN1cHBvcnQgY29tcGlsZWQgaW4gZm9yIHRoZW0uIEN1cnJlbnRseSBlYWNoIG1ldGhvZCBpcyBlbmFibGVkCiMgYnkgYSBkZWZpbmUgIkRTT188bmFtZT4iIC4uLiB3ZSB0cmFuc2xhdGUgdGhlICJkc29fc2NoZW1lIiBjb25maWcKIyBzdHJpbmcgZW50cnkgaW50byB1c2luZyB0aGUgZm9sbG93aW5nIGxvZ2ljOwpteSAkZHNvX2NmbGFnczsKaWYgKCEkbm9fZHNvICYmICRkc29fc2NoZW1lIG5lICIiKQoJewoJJGRzb19zY2hlbWUgPX4gdHIvW2Etel0vW0EtWl0vOwoJaWYgKCRkc29fc2NoZW1lIGVxICJETEZDTiIpCgkJewoJCSRkc29fY2ZsYWdzID0gIi1ERFNPX0RMRkNOIC1ESEFWRV9ETEZDTl9IIjsKCQl9CgllbHNpZiAoJGRzb19zY2hlbWUgZXEgIkRMRkNOX05PX0giKQoJCXsKCQkkZHNvX2NmbGFncyA9ICItRERTT19ETEZDTiI7CgkJfQoJZWxzZQoJCXsKCQkkZHNvX2NmbGFncyA9ICItRERTT18kZHNvX3NjaGVtZSI7CgkJfQoJJGNmbGFncyA9ICIkZHNvX2NmbGFncyAkY2ZsYWdzIjsKCX0KCm15ICR0aHJlYWRfY2ZsYWdzOwpteSAkdGhyZWFkX2RlZmluZXM7CmlmICgkdGhyZWFkX2NmbGFnIG5lICIodW5rbm93bikiICYmICEkbm9fdGhyZWFkcykKCXsKCSMgSWYgd2Uga25vdyBob3cgdG8gZG8gaXQsIHN1cHBvcnQgdGhyZWFkcyBieSBkZWZhdWx0LgoJJHRocmVhZHMgPSAxOwoJfQppZiAoJHRocmVhZF9jZmxhZyBlcSAiKHVua25vd24pIiAmJiAkdGhyZWFkcykKCXsKCSMgSWYgdGhlIHVzZXIgYXNrZWQgZm9yICJ0aHJlYWRzIiwgW3NdaGUgaXMgYWxzbyBleHBlY3RlZCB0bwoJIyBwcm92aWRlIGFueSBzeXN0ZW0tZGVwZW5kZW50IGNvbXBpbGVyIG9wdGlvbnMgdGhhdCBhcmUKCSMgbmVjZXNzYXJ5LgoJaWYgKCRub191c2VyX2NmbGFncykKCQl7CgkJcHJpbnQgIllvdSBhc2tlZCBmb3IgbXVsdGktdGhyZWFkaW5nIHN1cHBvcnQsIGJ1dCBkaWRuJ3RcbiI7CgkJcHJpbnQgInByb3ZpZGUgYW55IHN5c3RlbS1zcGVjaWZpYyBjb21waWxlciBvcHRpb25zXG4iOwoJCWV4aXQoMSk7CgkJfQoJJHRocmVhZF9jZmxhZ3M9Ii1ET1BFTlNTTF9USFJFQURTICRjZmxhZ3MiIDsKCSR0aHJlYWRfZGVmaW5lcyAuPSAiI2RlZmluZSBPUEVOU1NMX1RIUkVBRFNcbiI7Cgl9CmVsc2UKCXsKCSR0aHJlYWRfY2ZsYWdzPSItRE9QRU5TU0xfVEhSRUFEUyAkdGhyZWFkX2NmbGFnICRjZmxhZ3MiOwoJJHRocmVhZF9kZWZpbmVzIC49ICIjZGVmaW5lIE9QRU5TU0xfVEhSRUFEU1xuIjsKIwlteSAkZGVmOwojCWZvcmVhY2ggJGRlZiAoc3BsaXQgJyAnLCR0aHJlYWRfY2ZsYWcpCiMJCXsKIwkJaWYgKCRkZWYgPX4gcy9eLUQvLyAmJiAkZGVmICF+IC9eXy8pCiMJCQl7CiMJCQkkdGhyZWFkX2RlZmluZXMgLj0gIiNkZWZpbmUgJGRlZlxuIjsKIwkJCX0KIwkJfQoJfQoKJGxmbGFncz0iJGxpYnMkbGZsYWdzIiBpZiAoJGxpYnMgbmUgIiIpOwoKaWYgKCRub19hc20pCgl7CgkkY3B1aWRfb2JqPSRibl9vYmo9CgkkZGVzX29iaj0kYWVzX29iaj0kYmZfb2JqPSRjYXN0X29iaj0kcmM0X29iaj0kcmM1X29iaj0kY21sbF9vYmo9CgkkbW9kZXNfb2JqPSRzaGExX29iaj0kbWQ1X29iaj0kcm1kMTYwX29iaj0kd3Bfb2JqPSRlbmdpbmVzX29iaj0iIjsKCSRjZmxhZ3M9fnMvXC1EW0JMXV9FTkRJQU4vLwkJaWYgKCRmaXBzKTsKCSR0aHJlYWRfY2ZsYWdzPX5zL1wtRFtCTF1fRU5ESUFOLy8JaWYgKCRmaXBzKTsKCX0KZWxzaWYgKGRlZmluZWQoJGRpc2FibGVke2VjMm19KSkKCXsKCSRibl9vYmogPX4gcy9cdystZ2YybS5vLy87Cgl9CgppZiAoISRub19zaGFyZWQpCgl7CgkkY2FzdF9vYmo9IiI7CSMgQ0FTVCBhc3NlbWJsZXIgaXMgbm90IFBJQwoJfQoKaWYgKCR0aHJlYWRzKQoJewoJJGNmbGFncz0kdGhyZWFkX2NmbGFnczsKCSRvcGVuc3NsX3RocmVhZF9kZWZpbmVzIC49ICR0aHJlYWRfZGVmaW5lczsKCX0KCmlmICgkemxpYikKCXsKCSRjZmxhZ3MgPSAiLURaTElCICRjZmxhZ3MiOwoJaWYgKGRlZmluZWQoJGRpc2FibGVkeyJ6bGliLWR5bmFtaWMifSkpCgkJewoJCWlmIChkZWZpbmVkKCR3aXRoYXJnc3siemxpYi1saWIifSkpCgkJCXsKCQkJJGxmbGFncyA9ICIkbGZsYWdzIC1MIiAuICR3aXRoYXJnc3siemxpYi1saWIifSAuICIgLWx6IjsKCQkJfQoJCWVsc2UKCQkJewoJCQkkbGZsYWdzID0gIiRsZmxhZ3MgLWx6IjsKCQkJfQoJCX0KCWVsc2UKCQl7CgkJJGNmbGFncyA9ICItRFpMSUJfU0hBUkVEICRjZmxhZ3MiOwoJCX0KCX0KCiMgWW91IHdpbGwgZmluZCBzaGxpYl9tYXJrMSBhbmQgc2hsaWJfbWFyazIgZXhwbGFpbmVkIGluIE1ha2VmaWxlLm9yZwpteSAkc2hhcmVkX21hcmsgPSAiIjsKaWYgKCRzaGFyZWRfdGFyZ2V0IGVxICIiKQoJewoJJG5vX3NoYXJlZF93YXJuID0gMSBpZiAhJG5vX3NoYXJlZCAmJiAhJGZpcHM7Cgkkbm9fc2hhcmVkID0gMTsKCX0KaWYgKCEkbm9fc2hhcmVkKQoJewoJaWYgKCRzaGFyZWRfY2ZsYWcgbmUgIiIpCgkJewoJCSRjZmxhZ3MgPSAiJHNoYXJlZF9jZmxhZyAtRE9QRU5TU0xfUElDICRjZmxhZ3MiOwoJCX0KCX0KCmlmICghJElzTUsxTUYpCgl7CgkjIGFkZCB7bm8tfXN0YXRpYy1lbmdpbmUgdG8gb3B0aW9ucyB0byBhbGxvdyBta2RlZi5wbCB0byB3b3JrIHdpdGhvdXQgZXh0cmEgYXJndW1lbnRzCglpZiAoJG5vX3NoYXJlZCkKCQl7CgkJJG9wZW5zc2xfb3RoZXJfZGVmaW5lcy49IiNkZWZpbmUgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORVxuIjsKCQkkb3B0aW9ucy49IiBzdGF0aWMtZW5naW5lIjsKCQl9CgllbHNlCgkJewoJCSRvcGVuc3NsX290aGVyX2RlZmluZXMuPSIjZGVmaW5lIE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORVxuIjsKCQkkb3B0aW9ucy49IiBuby1zdGF0aWMtZW5naW5lIjsKCQl9Cgl9CgokY3B1aWRfb2JqLj0iIHVwbGluay5vIHVwbGluay14ODYubyIgaWYgKCRjZmxhZ3MgPX4gL1wtRE9QRU5TU0xfVVNFX0FQUExJTksvKTsKCiMKIyBQbGF0Zm9ybSBmaXgtdXBzCiMKaWYgKCR0YXJnZXQgPX4gL1wtaWNjJC8pCSMgSW50ZWwgQyBjb21waWxlcgoJewoJbXkgJGljY3Zlcj0wOwoJaWYgKG9wZW4oRkQsIiRjYyAtViAyPiYxIHwiKSkKCQl7CgkJd2hpbGUoPEZEPikgeyAkaWNjdmVyPSQxIGlmICgvVmVyc2lvbiAoWzAtOV0rKVwuLyk7IH0KCQljbG9zZShGRCk7CgkJfQoJaWYgKCRpY2N2ZXI+PTgpCgkJewoJCSRjZmxhZ3M9fnMvXC1LUElDLy1mUElDLzsKCQkjIEVsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBkZXBlbmRlbmN5IGZyb20gbGliaXJjLmEuIFRoaXMgaXMKCQkjIGVzc2VudGlhbCBmb3Igc2hhcmVkIGxpYnJhcnkgc3VwcG9ydCwgYXMgb3RoZXJ3aXNlCgkJIyBhcHBzL29wZW5zc2wgY2FuIGVuZCB1cCBpbiBlbmRsZXNzIGxvb3AgdXBvbiBzdGFydHVwLi4uCgkJJGNmbGFncy49IiAtRG1lbWNweT1fX2J1aWx0aW5fbWVtY3B5IC1EbWVtc2V0PV9fYnVpbHRpbl9tZW1zZXQiOwoJCX0KCWlmICgkaWNjdmVyPj05KQoJCXsKCQkkbGZsYWdzLj0iIC1pLXN0YXRpYyI7CgkJJGxmbGFncz1+cy9cLW5vX2NwcHJ0Ly1uby1jcHBydC87CgkJfQoJaWYgKCRpY2N2ZXI+PTEwKQoJCXsKCQkkbGZsYWdzPX5zL1wtaVwtc3RhdGljLy1zdGF0aWMtaW50ZWwvOwoJCX0KCWlmICgkaWNjdmVyPj0xMSkKCQl7CgkJJGNmbGFncy49IiAtbm8taW50ZWwtZXh0ZW5zaW9ucyI7CSMgZGlzYWJsZSBDaWxrCgkJJGxmbGFncz1+cy9cLW5vXC1jcHBydC8tbm8tY3h4bGliLzsKCQl9Cgl9CgojIFVubGlrZSBvdGhlciBPU2VzIChsaWtlIFNvbGFyaXMsIExpbnV4LCBUcnU2NCwgSVJJWCkgQlNEIHJ1bi10aW1lCiMgbGlua2VycyAodGVzdGVkIE9wZW5CU0QsIE5ldEJTRCBhbmQgRnJlZUJTRCkgImRlbWFuZCIgUlBBVEggc2V0IG9uCiMgLnNvIG9iamVjdHMuIEFwcGFyZW50bHkgYXBwbGljYXRpb24gUlBBVEggaXMgbm90IGdsb2JhbCBhbmQgZG9lcwojIG5vdCBhcHBseSB0byAuc28gbGlua2VkIHdpdGggb3RoZXIgLnNvLiBQcm9ibGVtIG1hbmlmZXN0cyBpdHNlbGYKIyB3aGVuIGxpYnNzbC5zbyBmYWlscyB0byBsb2FkIGxpYmNyeXB0by5zby4gT25lIGNhbiBhcmd1ZSB0aGF0IHdlCiMgc2hvdWxkIGVuZ3JhdmUgdGhpcyBpbnRvIE1ha2VmaWxlLnNoYXJlZCBydWxlcyBvciBpbnRvIEJTRC0qIGNvbmZpZwojIGxpbmVzIGFib3ZlLiBNZWFud2hpbGUgbGV0J3MgdHJ5IHRvIGJlIGNhdXRpb3VzIGFuZCBwYXNzIC1ycGF0aCB0bwojIGxpbmtlciBvbmx5IHdoZW4gLS1wcmVmaXggaXMgbm90IC91c3IuCmlmICgkdGFyZ2V0ID1+IC9eQlNEXC0vKQoJewoJJHNoYXJlZF9sZGZsYWcuPSIgLVdsLC1ycGF0aCxcJChMSUJSUEFUSCkiIGlmICgkcHJlZml4ICF+IG18Xi91c3JbL10qJHwpOwoJfQoKaWYgKCRzeXNfaWQgbmUgIiIpCgl7CgkjJGNmbGFncz0iLURPUEVOU1NMX1NZU05BTUVfJHN5c19pZCAkY2ZsYWdzIjsKCSRvcGVuc3NsX3N5c19kZWZpbmVzPSIjZGVmaW5lIE9QRU5TU0xfU1lTTkFNRV8kc3lzX2lkXG4iOwoJfQoKaWYgKCRyYW5saWIgZXEgIiIpCgl7CgkkcmFubGliID0gJGRlZmF1bHRfcmFubGliOwoJfQoKI215ICgkYm4xKT1zcGxpdCgvXHMrLywkYm5fb2JqKTsKIyRibjEgPSAiIiB1bmxlc3MgZGVmaW5lZCAkYm4xOwojJGJuMT0kYm5fYXNtIHVubGVzcyAoJGJuMSA9fiAvXC5vJC8pOwojJGJuX29iaj0iJGJuMSI7CgokY3B1aWRfb2JqPSIiIGlmICgkcHJvY2Vzc29yIGVxICIzODYiKTsKCiRibl9vYmogPSAkYm5fYXNtIHVubGVzcyAkYm5fb2JqIG5lICIiOwojIGJuLTU4NiBpcyB0aGUgb25seSBvbmUgaW1wbGVtZW50aW5nIGJuXypfcGFydF93b3JkcwokY2ZsYWdzLj0iIC1ET1BFTlNTTF9CTl9BU01fUEFSVF9XT1JEUyIgaWYgKCRibl9vYmogPX4gL2JuLTU4Ni8pOwokY2ZsYWdzLj0iIC1ET1BFTlNTTF9JQTMyX1NTRTIiIGlmICghJG5vX3NzZTIgJiYgJGJuX29iaiA9fiAvODYvKTsKCiRjZmxhZ3MuPSIgLURPUEVOU1NMX0JOX0FTTV9NT05UIiBpZiAoJGJuX29iaiA9fiAvLW1vbnQvKTsKJGNmbGFncy49IiAtRE9QRU5TU0xfQk5fQVNNX01PTlQ1IiBpZiAoJGJuX29iaiA9fiAvLW1vbnQ1Lyk7CiRjZmxhZ3MuPSIgLURPUEVOU1NMX0JOX0FTTV9HRjJtIiBpZiAoJGJuX29iaiA9fiAvLWdmMm0vKTsKCmlmICgkZmlwcykKCXsKCSRvcGVuc3NsX290aGVyX2RlZmluZXMuPSIjZGVmaW5lIE9QRU5TU0xfRklQU1xuIjsKCWlmICgkZmlwc2NhbmlzdGVyaW50ZXJuYWwgZXEgInkiKQoJCXsKCQkkb3BlbnNzbF9vdGhlcl9kZWZpbmVzLj0iI2RlZmluZSBPUEVOU1NMX0ZJUFNDQU5JU1RFUlxuIjsKCQkkY2ZsYWdzID0gIi1ET1BFTlNTTF9GSVBTQ0FOSVNURVIgJGNmbGFncyI7CgkJfQoJfQoKJGNwdWlkX29iaj0ibWVtX2Nsci5vIgl1bmxlc3MgKCRjcHVpZF9vYmogPX4gL1wubyQvKTsKJGRlc19vYmo9JGRlc19lbmMJdW5sZXNzICgkZGVzX29iaiA9fiAvXC5vJC8pOwokYmZfb2JqPSRiZl9lbmMJCXVubGVzcyAoJGJmX29iaiA9fiAvXC5vJC8pOwokY2FzdF9vYmo9JGNhc3RfZW5jCXVubGVzcyAoJGNhc3Rfb2JqID1+IC9cLm8kLyk7CiRyYzRfb2JqPSRyYzRfZW5jCXVubGVzcyAoJHJjNF9vYmogPX4gL1wubyQvKTsKJHJjNV9vYmo9JHJjNV9lbmMJdW5sZXNzICgkcmM1X29iaiA9fiAvXC5vJC8pOwppZiAoJHNoYTFfb2JqID1+IC9cLm8kLykKCXsKIwkkc2hhMV9vYmo9JHNoYTFfZW5jOwoJJGNmbGFncy49IiAtRFNIQTFfQVNNIiAgIGlmICgkc2hhMV9vYmogPX4gL3N4ODYvIHx8ICRzaGExX29iaiA9fiAvc2hhMS8pOwoJJGNmbGFncy49IiAtRFNIQTI1Nl9BU00iIGlmICgkc2hhMV9vYmogPX4gL3NoYTI1Ni8pOwoJJGNmbGFncy49IiAtRFNIQTUxMl9BU00iIGlmICgkc2hhMV9vYmogPX4gL3NoYTUxMi8pOwoJaWYgKCRzaGExX29iaiA9fiAvc3NlMi8pCgkgICAgewlpZiAoJG5vX3NzZTIpCgkJeyAgICRzaGExX29iaiA9fiBzL1xTKnNzZTJcUysvLzsgICAgICAgIH0KCQllbHNpZiAoJGNmbGFncyAhfiAvT1BFTlNTTF9JQTMyX1NTRTIvKQoJCXsgICAkY2ZsYWdzLj0iIC1ET1BFTlNTTF9JQTMyX1NTRTIiOyAgICB9CgkgICAgfQoJfQppZiAoJG1kNV9vYmogPX4gL1wubyQvKQoJewojCSRtZDVfb2JqPSRtZDVfZW5jOwoJJGNmbGFncy49IiAtRE1ENV9BU00iOwoJfQppZiAoJHJtZDE2MF9vYmogPX4gL1wubyQvKQoJewojCSRybWQxNjBfb2JqPSRybWQxNjBfZW5jOwoJJGNmbGFncy49IiAtRFJNRDE2MF9BU00iOwoJfQppZiAoJGFlc19vYmogPX4gL1wubyQvKQoJewoJJGNmbGFncy49IiAtREFFU19BU00iIGlmICgkYWVzX29iaiA9fiBtL1xiYWVzXC0vKTs7CgkjIGFlcy1jdHIubyBpcyBub3QgYSByZWFsIGZpbGUsIG9ubHkgaW5kaWNhdGlvbiB0aGF0IGFzc2VtYmxlcgoJIyBtb2R1bGUgaW1wbGVtZW50cyBBRVNfY3RyMzJfZW5jcnlwdC4uLgoJJGNmbGFncy49IiAtREFFU19DVFJfQVNNIiBpZiAoJGFlc19vYmogPX4gcy9ccyphZXNcLWN0clwuby8vKTsKCSMgYWVzLXh0cy5vIGluZGljYXRlcyBwcmVzZW5jZSBvZiBBRVNfeHRzX1tlbnxkZV1jcnlwdC4uLgoJJGNmbGFncy49IiAtREFFU19YVFNfQVNNIiBpZiAoJGFlc19vYmogPX4gcy9ccyphZXNcLXh0c1wuby8vKTsKCSRhZXNfb2JqID1+IHMvXHMqKHZwYWVzfGFlc25pKVwteDg2XC5vLy9nIGlmICgkbm9fc3NlMik7CgkkYWVzX29iaiA9fiBzL1xzKih2cHxicylhZXMtXHcqXC5vLy9nIGlmICgkZmlwc2NhbmlzdGVyaW50ZXJuYWwgZXEgInkiKTsKCSRjZmxhZ3MuPSIgLURWUEFFU19BU00iIGlmICgkYWVzX29iaiA9fiBtL3ZwYWVzLyk7CgkkY2ZsYWdzLj0iIC1EQlNBRVNfQVNNIiBpZiAoJGFlc19vYmogPX4gbS9ic2Flcy8pOwoJfQplbHNlCXsKCSRhZXNfb2JqPSRhZXNfZW5jOwoJfQokd3Bfb2JqPSIiIGlmICgkd3Bfb2JqID1+IC9tbXgvICYmICRwcm9jZXNzb3IgZXEgIjM4NiIpOwppZiAoJHdwX29iaiA9fiAvXC5vJC8gJiYgISRkaXNhYmxlZHsid2hpcmxwb29sIn0pCgl7CgkkY2ZsYWdzLj0iIC1EV0hJUkxQT09MX0FTTSI7Cgl9CmVsc2UJewoJJHdwX29iaj0id3BfYmxvY2subyI7Cgl9CiRjbWxsX29iaj0kY21sbF9lbmMJdW5sZXNzICgkY21sbF9vYmogPX4gLy5vJC8pOwppZiAoJG1vZGVzX29iaiA9fiAvZ2hhc2hcLS8pCgl7CgkkY2ZsYWdzLj0iIC1ER0hBU0hfQVNNIjsKCX0KCiMgIlN0cmluZ2lmeSIgdGhlIEMgZmxhZ3Mgc3RyaW5nLiAgVGhpcyBwZXJtaXRzIGl0IHRvIGJlIG1hZGUgcGFydCBvZiBhIHN0cmluZwojIGFuZCB3b3JrcyBhcyB3ZWxsIG9uIGNvbW1hbmQgbGluZXMuCiRjZmxhZ3MgPX4gcy8oW1xcXCJdKS9cXFwxL2c7CgpteSAkdmVyc2lvbiA9ICJ1bmtub3duIjsKbXkgJHZlcnNpb25fbnVtID0gInVua25vd24iOwpteSAkbWFqb3IgPSAidW5rbm93biI7Cm15ICRtaW5vciA9ICJ1bmtub3duIjsKbXkgJHNobGliX3ZlcnNpb25fbnVtYmVyID0gInVua25vd24iOwpteSAkc2hsaWJfdmVyc2lvbl9oaXN0b3J5ID0gInVua25vd24iOwpteSAkc2hsaWJfbWFqb3IgPSAidW5rbm93biI7Cm15ICRzaGxpYl9taW5vciA9ICJ1bmtub3duIjsKCm9wZW4oSU4sJzxjcnlwdG8vb3BlbnNzbHYuaCcpIHx8IGRpZSAidW5hYmxlIHRvIHJlYWQgb3BlbnNzbHYuaDokIVxuIjsKd2hpbGUgKDxJTj4pCgl7CgkkdmVyc2lvbj0kMSBpZiAvT1BFTlNTTC5WRVJTSU9OLlRFWFQuKk9wZW5TU0wgKFxTKykgLzsKCSR2ZXJzaW9uX251bT0kMSBpZiAvT1BFTlNTTC5WRVJTSU9OLk5VTUJFUi4qMHgoXFMrKS87Cgkkc2hsaWJfdmVyc2lvbl9udW1iZXI9JDEgaWYgL1NITElCX1ZFUlNJT05fTlVNQkVSICoiKFteIl0rKSIvOwoJJHNobGliX3ZlcnNpb25faGlzdG9yeT0kMSBpZiAvU0hMSUJfVkVSU0lPTl9ISVNUT1JZICoiKFteIl0qKSIvOwoJfQpjbG9zZShJTik7CmlmICgkc2hsaWJfdmVyc2lvbl9oaXN0b3J5IG5lICIiKSB7ICRzaGxpYl92ZXJzaW9uX2hpc3RvcnkgLj0gIjoiOyB9CgppZiAoJHZlcnNpb24gPX4gLyheWzAtOV0qKVwuKFswLTlcLl0qKS8pCgl7CgkkbWFqb3I9JDE7CgkkbWlub3I9JDI7Cgl9CgppZiAoJHNobGliX3ZlcnNpb25fbnVtYmVyID1+IC8oXlswLTldKilcLihbMC05XC5dKikvKQoJewoJJHNobGliX21ham9yPSQxOwoJJHNobGliX21pbm9yPSQyOwoJfQoKaWYgKCRzdHJpY3Rfd2FybmluZ3MpCgl7CglteSAkd29wdDsKCWRpZSAiRVJST1IgLS1zdHJpY3Qtd2FybmluZ3MgcmVxdWlyZXMgZ2NjIiB1bmxlc3MgKCRjYyA9fiAvZ2NjJC8pOwoJZm9yZWFjaCAkd29wdCAoc3BsaXQgL1xzKy8sICRnY2NfZGV2dGVhbV93YXJuKQoJCXsKCQkkY2ZsYWdzIC49ICIgJHdvcHQiIHVubGVzcyAoJGNmbGFncyA9fiAvJHdvcHQvKQoJCX0KCX0KCmlmICgkZmlwc2NhbmlzdGVyaW50ZXJuYWwgZXEgInkiKQoJewoJb3BlbihJTiwiPGZpcHMvZmlwc19hdXRoLmluIikgfHwgZGllICJjYW4ndCBvcGVuIGZpcHNfYXV0aC5pbiI7CglvcGVuKE9VVCwiPmZpcHMvZmlwc19hdXRoLmgiKSB8fCBkaWUgImNhbid0IG9wZW4gZmlwc19hdXRoLmgiOwoJd2hpbGUoPElOPikKCQl7CgkJcy9GSVBTX0FVVEhfS0VZLiokL0ZJUFNfQVVUSF9LRVkgJGZpcHNfYXV0aF9rZXkvIGlmIGRlZmluZWQgJGZpcHNfYXV0aF9rZXk7CgkJcy9GSVBTX0FVVEhfQ1JZUFRPX09GRklDRVIuKiQvRklQU19BVVRIX0NSWVBUT19PRkZJQ0VSICRmaXBzX2F1dGhfb2ZmaWNlci8gaWYgZGVmaW5lZCAkZmlwc19hdXRoX29mZmljZXI7CgkJcy9GSVBTX0FVVEhfQ1JZUFRPX1VTRVIuKiQvRklQU19BVVRIX0NSWVBUT19VU0VSICRmaXBzX2F1dGhfdXNlci8gaWYgZGVmaW5lZCAkZmlwc19hdXRoX3VzZXI7CgkJcHJpbnQgT1VUICRfOwoJCX0KCWNsb3NlIElOOwoJY2xvc2UgT1VUOwoJfQoKbXkgJG1mb3JnID0gJGZpcHNjYW5pc3Rlcm9ubHkgPyAiTWFrZWZpbGUuZmlwcyIgOiAiTWFrZWZpbGUub3JnIjsKCm9wZW4oSU4sIjwkbWZvcmciKSB8fCBkaWUgInVuYWJsZSB0byByZWFkICRtZm9yZzokIVxuIjsKdW5saW5rKCIkTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gcmVtb3ZlIG9sZCAkTWFrZWZpbGUubmV3OiQhXG4iIGlmIC1lICIkTWFrZWZpbGUubmV3IjsKb3BlbihPVVQsIj4kTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gY3JlYXRlICRNYWtlZmlsZS5uZXc6JCFcbiI7CnByaW50IE9VVCAiIyMjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gJG1mb3JnIGJ5IENvbmZpZ3VyZS5cblxuIjsKbXkgJHNkaXJzPTA7CgppZiAoJGZpcHNjYW5pc3Rlcm9ubHkpCgl7CgkkYWVzX29iaiA9fiBzL2Flc25pLXNoYTEteDg2XzY0Lm8vLzsKCSRibl9vYmogPX4gcy9tb2RleHA1MTIteDg2XzY0Lm8vLzsKCX0KCndoaWxlICg8SU4+KQoJewoJY2hvbXA7Cgkkc2RpcnMgPSAxIGlmIC9eU0RJUlM9LzsKCWlmICgkc2RpcnMpIHsKCQlteSAkZGlyOwoJCWZvcmVhY2ggJGRpciAoQHNraXApIHsKCQkJcy8oXHMpJGRpciAvJDEvOwoJCQlzL1xzJGRpciQvLzsKCQkJfQoJCX0KCSRzZGlycyA9IDAgdW5sZXNzIC9cXCQvOwogICAgICAgIHMvZmlwcyAvLyBpZiAoL15ESVJTPS8gJiYgISRmaXBzKTsKICAgICAgICBzL2VuZ2luZXMgLy8gaWYgKC9eRElSUz0vICYmICRkaXNhYmxlZHsiZW5naW5lIn0pOwoJcy9jY2dvc3QvLyBpZiAoL15FTkdESVJTPS8gJiYgJGRpc2FibGVkeyJnb3N0In0pOwoJcy9eVkVSU0lPTj0uKi9WRVJTSU9OPSR2ZXJzaW9uLzsKCXMvXk1BSk9SPS4qL01BSk9SPSRtYWpvci87CglzL15NSU5PUj0uKi9NSU5PUj0kbWlub3IvOwoJcy9eU0hMSUJfVkVSU0lPTl9OVU1CRVI9LiovU0hMSUJfVkVSU0lPTl9OVU1CRVI9JHNobGliX3ZlcnNpb25fbnVtYmVyLzsKCXMvXlNITElCX1ZFUlNJT05fSElTVE9SWT0uKi9TSExJQl9WRVJTSU9OX0hJU1RPUlk9JHNobGliX3ZlcnNpb25faGlzdG9yeS87CglzL15TSExJQl9NQUpPUj0uKi9TSExJQl9NQUpPUj0kc2hsaWJfbWFqb3IvOwoJcy9eU0hMSUJfTUlOT1I9LiovU0hMSUJfTUlOT1I9JHNobGliX21pbm9yLzsKCXMvXlNITElCX0VYVD0uKi9TSExJQl9FWFQ9JHNoYXJlZF9leHRlbnNpb24vOwoJcy9eSU5TVEFMTFRPUD0uKiQvSU5TVEFMTFRPUD0kcHJlZml4LzsKCXMvXk1VTFRJTElCPS4qJC9NVUxUSUxJQj0kbXVsdGlsaWIvOwoJcy9eT1BFTlNTTERJUj0uKiQvT1BFTlNTTERJUj0kb3BlbnNzbGRpci87CglzL15MSUJESVI9LiokL0xJQkRJUj0kbGliZGlyLzsKCXMvXklOU1RBTExfUFJFRklYPS4qJC9JTlNUQUxMX1BSRUZJWD0kaW5zdGFsbF9wcmVmaXgvOwoJcy9eUExBVEZPUk09LiokL1BMQVRGT1JNPSR0YXJnZXQvOwoJcy9eT1BUSU9OUz0uKiQvT1BUSU9OUz0kb3B0aW9ucy87CglzL15DT05GSUdVUkVfQVJHUz0uKiQvQ09ORklHVVJFX0FSR1M9JGFyZ3ZzdHJpbmcvOwoJaWYgKCRjcm9zc19jb21waWxlX3ByZWZpeCkKCQl7CgkJcy9eQ0M9LiokL0NST1NTX0NPTVBJTEU9ICRjcm9zc19jb21waWxlX3ByZWZpeFxuQ0M9IFwkXChDUk9TU19DT01QSUxFXCkkY2MvOwoJCXMvXkFSPVxzKi9BUj0gXCRcKENST1NTX0NPTVBJTEVcKS87CgkJcy9eTk09XHMqL05NPSBcJFwoQ1JPU1NfQ09NUElMRVwpLzsKCQlzL15SQU5MSUI9XHMqL1JBTkxJQj0gXCRcKENST1NTX0NPTVBJTEVcKS87CgkJcy9eTUFLRURFUFBST0c9LiokL01BS0VERVBQUk9HPSBcJFwoQ1JPU1NfQ09NUElMRVwpJGNjLyBpZiAkY2MgZXEgImdjYyI7CgkJfQoJZWxzZQl7CgkJcy9eQ0M9LiokL0NDPSAkY2MvOwoJCXMvXkFSPVxzKmFyL0FSPSAkYXIvOwoJCXMvXlJBTkxJQj0uKi9SQU5MSUI9ICRyYW5saWIvOwoJCXMvXk1BS0VERVBQUk9HPS4qJC9NQUtFREVQUFJPRz0gJGNjLyBpZiAkY2MgZXEgImdjYyIgfHwgKCRjYyBlcSAnY2MnICYmICR0YXJnZXQgPX4gL2Rhcndpbi8pOwoJCX0KCXMvXkNGTEFHPS4qJC9DRkxBRz0gJGNmbGFncy87CglzL15ERVBGTEFHPS4qJC9ERVBGTEFHPSRkZXBmbGFncy87CglzL15QRVhfTElCUz0uKiQvUEVYX0xJQlM9ICRwcmVsZmxhZ3MvOwoJcy9eRVhfTElCUz0uKiQvRVhfTElCUz0gJGxmbGFncy87CglzL15FWEVfRVhUPS4qJC9FWEVfRVhUPSAkZXhlX2V4dC87CglzL15DUFVJRF9PQko9LiokL0NQVUlEX09CSj0gJGNwdWlkX29iai87CglzL15CTl9BU009LiokL0JOX0FTTT0gJGJuX29iai87CglzL15ERVNfRU5DPS4qJC9ERVNfRU5DPSAkZGVzX29iai87CglzL15BRVNfRU5DPS4qJC9BRVNfRU5DPSAkYWVzX29iai87CglzL15CRl9FTkM9LiokL0JGX0VOQz0gJGJmX29iai87CglzL15DQVNUX0VOQz0uKiQvQ0FTVF9FTkM9ICRjYXN0X29iai87CglzL15SQzRfRU5DPS4qJC9SQzRfRU5DPSAkcmM0X29iai87CglzL15SQzVfRU5DPS4qJC9SQzVfRU5DPSAkcmM1X29iai87CglzL15NRDVfQVNNX09CSj0uKiQvTUQ1X0FTTV9PQko9ICRtZDVfb2JqLzsKCXMvXlNIQTFfQVNNX09CSj0uKiQvU0hBMV9BU01fT0JKPSAkc2hhMV9vYmovOwoJcy9eUk1EMTYwX0FTTV9PQko9LiokL1JNRDE2MF9BU01fT0JKPSAkcm1kMTYwX29iai87CglzL15XUF9BU01fT0JKPS4qJC9XUF9BU01fT0JKPSAkd3Bfb2JqLzsKCXMvXkNNTExfRU5DPS4qJC9DTUxMX0VOQz0gJGNtbGxfb2JqLzsKCXMvXk1PREVTX0FTTV9PQkouPSokL01PREVTX0FTTV9PQko9ICRtb2Rlc19vYmovOwoJcy9eRU5HSU5FU19BU01fT0JKLj0qJC9FTkdJTkVTX0FTTV9PQko9ICRlbmdpbmVzX29iai87CglzL15QRVJMQVNNX1NDSEVNRT0uKiQvUEVSTEFTTV9TQ0hFTUU9ICRwZXJsYXNtX3NjaGVtZS87CglzL15QUk9DRVNTT1I9LiovUFJPQ0VTU09SPSAkcHJvY2Vzc29yLzsKCXMvXkFSRkxBR1M9LiovQVJGTEFHUz0gJGFyZmxhZ3MvOwoJcy9eUEVSTD0uKi9QRVJMPSAkcGVybC87CglzL15LUkI1X0lOQ0xVREVTPS4qL0tSQjVfSU5DTFVERVM9JHdpdGhhcmdzeyJrcmI1LWluY2x1ZGUifS87CglzL15MSUJLUkI1PS4qL0xJQktSQjU9JHdpdGhhcmdzeyJrcmI1LWxpYiJ9LzsKCXMvXkxJQlpMSUI9LiovTElCWkxJQj0kd2l0aGFyZ3N7InpsaWItbGliIn0vOwoJcy9eWkxJQl9JTkNMVURFPS4qL1pMSUJfSU5DTFVERT0kd2l0aGFyZ3N7InpsaWItaW5jbHVkZSJ9LzsKCXMvXkZJUFNMSUJESVI9LiovRklQU0xJQkRJUj0kZmlwc2xpYmRpci87CglzL15GSVBTQ0FOTElCPS4qL0ZJUFNDQU5MSUI9bGliY3J5cHRvLyBpZiAkZmlwczsKCXMvXlNIQVJFRF9GSVBTPS4qL1NIQVJFRF9GSVBTPS87CglzL15TSExJQkRJUlM9LiovU0hMSUJESVJTPSBjcnlwdG8gc3NsLzsKCXMvXkZJUFNDQU5JU1RFUklOVEVSTkFMPS4qL0ZJUFNDQU5JU1RFUklOVEVSTkFMPSRmaXBzY2FuaXN0ZXJpbnRlcm5hbC87CglzL15CQVNFQUREUj0uKi9CQVNFQUREUj0kYmFzZWFkZHIvOwoJcy9eU0hMSUJfVEFSR0VUPS4qL1NITElCX1RBUkdFVD0kc2hhcmVkX3RhcmdldC87CglzL15TSExJQl9NQVJLPS4qL1NITElCX01BUks9JHNoYXJlZF9tYXJrLzsKCXMvXlNIQVJFRF9MSUJTPS4qL1NIQVJFRF9MSUJTPVwkKFNIQVJFRF9DUllQVE8pIFwkKFNIQVJFRF9TU0wpLyBpZiAoISRub19zaGFyZWQpOwoJaWYgKCRzaGFyZWRfZXh0ZW5zaW9uIG5lICIiICYmICRzaGFyZWRfZXh0ZW5zaW9uID1+IC9eXC5zKFtvbF0pXC5bXlwuXSokLykKCQl7CgkJbXkgJHNvdG1wID0gJDE7CgkJcy9eU0hBUkVEX0xJQlNfTElOS19FWFRTPS4qL1NIQVJFRF9MSUJTX0xJTktfRVhUUz0ucyRzb3RtcC87CgkJfQoJZWxzaWYgKCRzaGFyZWRfZXh0ZW5zaW9uIG5lICIiICYmICRzaGFyZWRfZXh0ZW5zaW9uID1+IC9eXC5bXlwuXSpcLmR5bGliJC8pCgkJewoJCXMvXlNIQVJFRF9MSUJTX0xJTktfRVhUUz0uKi9TSEFSRURfTElCU19MSU5LX0VYVFM9LmR5bGliLzsKCQl9CgllbHNpZiAoJHNoYXJlZF9leHRlbnNpb24gbmUgIiIgJiYgJHNoYXJlZF9leHRlbnNpb24gPX4gL15cLnMoW29sXSlcLlteXC5dKlwuW15cLl0qJC8pCgkJewoJCW15ICRzb3RtcCA9ICQxOwoJCXMvXlNIQVJFRF9MSUJTX0xJTktfRVhUUz0uKi9TSEFSRURfTElCU19MSU5LX0VYVFM9LnMkc290bXAuXCQoU0hMSUJfTUFKT1IpIC5zJHNvdG1wLzsKCQl9CgllbHNpZiAoJHNoYXJlZF9leHRlbnNpb24gbmUgIiIgJiYgJHNoYXJlZF9leHRlbnNpb24gPX4gL15cLlteXC5dKlwuW15cLl0qXC5keWxpYiQvKQoJCXsKCQlzL15TSEFSRURfTElCU19MSU5LX0VYVFM9LiovU0hBUkVEX0xJQlNfTElOS19FWFRTPS5cJChTSExJQl9NQUpPUikuZHlsaWIgLmR5bGliLzsKCQl9CglzL15TSEFSRURfTERGTEFHUz0uKi9TSEFSRURfTERGTEFHUz0kc2hhcmVkX2xkZmxhZy87CglpZiAoJGZpcHNjYW5pc3Rlcm9ubHkgJiYgZXhpc3RzICRkaXNhYmxlZHsiZWMybSJ9KQoJCXsKCQluZXh0IGlmICgvZWMyXy8gfHwgL2JuX2dmMm0vKTsKCQl9CglwcmludCBPVVQgJF8uIlxuIjsKCX0KY2xvc2UoSU4pOwpjbG9zZShPVVQpOwpyZW5hbWUoJE1ha2VmaWxlLCIkTWFrZWZpbGUuYmFrIikgfHwgZGllICJ1bmFibGUgdG8gcmVuYW1lICRNYWtlZmlsZVxuIiBpZiAtZSAkTWFrZWZpbGU7CnJlbmFtZSgiJE1ha2VmaWxlLm5ldyIsJE1ha2VmaWxlKSB8fCBkaWUgInVuYWJsZSB0byByZW5hbWUgJE1ha2VmaWxlLm5ld1xuIjsKCnByaW50ICJDQyAgICAgICAgICAgID0kY2NcbiI7CnByaW50ICJDRkxBRyAgICAgICAgID0kY2ZsYWdzXG4iOwpwcmludCAiRVhfTElCUyAgICAgICA9JGxmbGFnc1xuIjsKcHJpbnQgIkNQVUlEX09CSiAgICAgPSRjcHVpZF9vYmpcbiI7CnByaW50ICJCTl9BU00gICAgICAgID0kYm5fb2JqXG4iOwpwcmludCAiREVTX0VOQyAgICAgICA9JGRlc19vYmpcbiI7CnByaW50ICJBRVNfRU5DICAgICAgID0kYWVzX29ialxuIjsKcHJpbnQgIkJGX0VOQyAgICAgICAgPSRiZl9vYmpcbiI7CnByaW50ICJDQVNUX0VOQyAgICAgID0kY2FzdF9vYmpcbiI7CnByaW50ICJSQzRfRU5DICAgICAgID0kcmM0X29ialxuIjsKcHJpbnQgIlJDNV9FTkMgICAgICAgPSRyYzVfb2JqXG4iOwpwcmludCAiTUQ1X09CSl9BU00gICA9JG1kNV9vYmpcbiI7CnByaW50ICJTSEExX09CSl9BU00gID0kc2hhMV9vYmpcbiI7CnByaW50ICJSTUQxNjBfT0JKX0FTTT0kcm1kMTYwX29ialxuIjsKcHJpbnQgIkNNTExfRU5DICAgICAgPSRjbWxsX29ialxuIjsKcHJpbnQgIk1PREVTX09CSiAgICAgPSRtb2Rlc19vYmpcbiI7CnByaW50ICJFTkdJTkVTX09CSiAgID0kZW5naW5lc19vYmpcbiI7CnByaW50ICJQUk9DRVNTT1IgICAgID0kcHJvY2Vzc29yXG4iOwpwcmludCAiUkFOTElCICAgICAgICA9JHJhbmxpYlxuIjsKcHJpbnQgIkFSRkxBR1MgICAgICAgPSRhcmZsYWdzXG4iOwpwcmludCAiUEVSTCAgICAgICAgICA9JHBlcmxcbiI7CnByaW50ICJLUkI1X0lOQ0xVREVTID0iLCR3aXRoYXJnc3sia3JiNS1pbmNsdWRlIn0sIlxuIgoJaWYgJHdpdGhhcmdzeyJrcmI1LWluY2x1ZGUifSBuZSAiIjsKCm15ICRkZXNfcHRyPTA7Cm15ICRkZXNfcmlzYzE9MDsKbXkgJGRlc19yaXNjMj0wOwpteSAkZGVzX3Vucm9sbD0wOwpteSAkYm5fbGw9MDsKbXkgJGRlZl9pbnQ9MjsKbXkgJHJjNF9pbnQ9JGRlZl9pbnQ7Cm15ICRtZDJfaW50PSRkZWZfaW50OwpteSAkaWRlYV9pbnQ9JGRlZl9pbnQ7Cm15ICRyYzJfaW50PSRkZWZfaW50OwpteSAkcmM0X2lkeD0wOwpteSAkcmM0X2NodW5rPTA7Cm15ICRiZl9wdHI9MDsKbXkgQHR5cGU9KCJjaGFyIiwic2hvcnQiLCJpbnQiLCJsb25nIik7Cm15ICgkYjY0bCwkYjY0LCRiMzIsJGIxNiwkYjgpPSgwLDAsMSwwLDApOwpteSAkZXhwb3J0X3Zhcl9hc19mbj0wOwoKbXkgJGRlc19pbnQ7Cgpmb3JlYWNoIChzb3J0IHNwbGl0KC9ccysvLCRibl9vcHMpKQoJewoJJGRlc19wdHI9MSBpZiAvREVTX1BUUi87CgkkZGVzX3Jpc2MxPTEgaWYgL0RFU19SSVNDMS87CgkkZGVzX3Jpc2MyPTEgaWYgL0RFU19SSVNDMi87CgkkZGVzX3Vucm9sbD0xIGlmIC9ERVNfVU5ST0xMLzsKCSRkZXNfaW50PTEgaWYgL0RFU19JTlQvOwoJJGJuX2xsPTEgaWYgL0JOX0xMT05HLzsKCSRyYzRfaW50PTAgaWYgL1JDNF9DSEFSLzsKCSRyYzRfaW50PTMgaWYgL1JDNF9MT05HLzsKCSRyYzRfaWR4PTEgaWYgL1JDNF9JTkRFWC87CgkkcmM0X2NodW5rPTEgaWYgL1JDNF9DSFVOSy87CgkkcmM0X2NodW5rPTIgaWYgL1JDNF9DSFVOS19MTC87CgkkbWQyX2ludD0wIGlmIC9NRDJfQ0hBUi87CgkkbWQyX2ludD0zIGlmIC9NRDJfTE9ORy87CgkkaWRlYV9pbnQ9MSBpZiAvSURFQV9TSE9SVC87CgkkaWRlYV9pbnQ9MyBpZiAvSURFQV9MT05HLzsKCSRyYzJfaW50PTEgaWYgL1JDMl9TSE9SVC87CgkkcmMyX2ludD0zIGlmIC9SQzJfTE9ORy87CgkkYmZfcHRyPTEgaWYgJF8gZXEgIkJGX1BUUiI7CgkkYmZfcHRyPTIgaWYgJF8gZXEgIkJGX1BUUjIiOwoJKCRiNjRsLCRiNjQsJGIzMiwkYjE2LCRiOCk9KDAsMSwwLDAsMCkgaWYgL1NJWFRZX0ZPVVJfQklULzsKCSgkYjY0bCwkYjY0LCRiMzIsJGIxNiwkYjgpPSgxLDAsMCwwLDApIGlmIC9TSVhUWV9GT1VSX0JJVF9MT05HLzsKCSgkYjY0bCwkYjY0LCRiMzIsJGIxNiwkYjgpPSgwLDAsMSwwLDApIGlmIC9USElSVFlfVFdPX0JJVC87CgkoJGI2NGwsJGI2NCwkYjMyLCRiMTYsJGI4KT0oMCwwLDAsMSwwKSBpZiAvU0lYVEVFTl9CSVQvOwoJKCRiNjRsLCRiNjQsJGIzMiwkYjE2LCRiOCk9KDAsMCwwLDAsMSkgaWYgL0VJR0hUX0JJVC87CgkkZXhwb3J0X3Zhcl9hc19mbj0xIGlmIC9FWFBPUlRfVkFSX0FTX0ZOLzsKCX0KCm9wZW4oSU4sJzxjcnlwdG8vb3BlbnNzbGNvbmYuaC5pbicpIHx8IGRpZSAidW5hYmxlIHRvIHJlYWQgY3J5cHRvL29wZW5zc2xjb25mLmguaW46JCFcbiI7CnVubGluaygiY3J5cHRvL29wZW5zc2xjb25mLmgubmV3IikgfHwgZGllICJ1bmFibGUgdG8gcmVtb3ZlIG9sZCBjcnlwdG8vb3BlbnNzbGNvbmYuaC5uZXc6JCFcbiIgaWYgLWUgImNyeXB0by9vcGVuc3NsY29uZi5oLm5ldyI7Cm9wZW4oT1VULCc+Y3J5cHRvL29wZW5zc2xjb25mLmgubmV3JykgfHwgZGllICJ1bmFibGUgdG8gY3JlYXRlIGNyeXB0by9vcGVuc3NsY29uZi5oLm5ldzokIVxuIjsKcHJpbnQgT1VUICIvKiBvcGVuc3NsY29uZi5oICovXG4iOwpwcmludCBPVVQgIi8qIFdBUk5JTkc6IEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gb3BlbnNzbGNvbmYuaC5pbiBieSBDb25maWd1cmUuICovXG5cbiI7CgpwcmludCBPVVQgIi8qIE9wZW5TU0wgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6ICovXG4iOwpteSAkb3BlbnNzbF9hbGdvcml0aG1fZGVmaW5lc190cmFucyA9ICRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzOwokb3BlbnNzbF9leHBlcmltZW50YWxfZGVmaW5lcyA9fiBzL15ccyojXHMqZGVmaW5lXHMrT1BFTlNTTF9OT18oLiopLyNpZm5kZWYgT1BFTlNTTF9FWFBFUklNRU5UQUxfJDFcbiMgaWZuZGVmIE9QRU5TU0xfTk9fJDFcbiMgIGRlZmluZSBPUEVOU1NMX05PXyQxXG4jIGVuZGlmXG4jZW5kaWYvbWc7CiRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzX3RyYW5zID1+IHMvXlxzKiNccypkZWZpbmVccytPUEVOU1NMXyguKikvIyBpZiBkZWZpbmVkKE9QRU5TU0xfJDEpIFwmXCYgIWRlZmluZWQoJDEpXG4jICBkZWZpbmUgJDFcbiMgZW5kaWYvbWc7CiRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzID1+IHMvXlxzKiNccypkZWZpbmVccysoLiopLyNpZm5kZWYgJDFcbiMgZGVmaW5lICQxXG4jZW5kaWYvbWc7CiRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzID0gIiAgIC8qIG5vIGNpcGhlcnMgZXhjbHVkZWQgKi9cbiIgaWYgJG9wZW5zc2xfYWxnb3JpdGhtX2RlZmluZXMgZXEgIiI7CiRvcGVuc3NsX3RocmVhZF9kZWZpbmVzID1+IHMvXlxzKiNccypkZWZpbmVccysoLiopLyNpZm5kZWYgJDFcbiMgZGVmaW5lICQxXG4jZW5kaWYvbWc7CiRvcGVuc3NsX3N5c19kZWZpbmVzID1+IHMvXlxzKiNccypkZWZpbmVccysoLiopLyNpZm5kZWYgJDFcbiMgZGVmaW5lICQxXG4jZW5kaWYvbWc7CiRvcGVuc3NsX290aGVyX2RlZmluZXMgPX4gcy9eXHMqI1xzKmRlZmluZVxzKyguKikvI2lmbmRlZiAkMVxuIyBkZWZpbmUgJDFcbiNlbmRpZi9tZzsKcHJpbnQgT1VUICRvcGVuc3NsX3N5c19kZWZpbmVzOwpwcmludCBPVVQgIiNpZm5kZWYgT1BFTlNTTF9ET0lOR19NQUtFREVQRU5EXG5cbiI7CnByaW50IE9VVCAkb3BlbnNzbF9leHBlcmltZW50YWxfZGVmaW5lczsKcHJpbnQgT1VUICJcbiI7CnByaW50IE9VVCAkb3BlbnNzbF9hbGdvcml0aG1fZGVmaW5lczsKcHJpbnQgT1VUICJcbiNlbmRpZiAvKiBPUEVOU1NMX0RPSU5HX01BS0VERVBFTkQgKi9cblxuIjsKcHJpbnQgT1VUICRvcGVuc3NsX3RocmVhZF9kZWZpbmVzOwpwcmludCBPVVQgJG9wZW5zc2xfb3RoZXJfZGVmaW5lcywiXG4iOwoKcHJpbnQgT1VUICIvKiBUaGUgT1BFTlNTTF9OT18qIG1hY3JvcyBhcmUgYWxzbyBkZWZpbmVkIGFzIE5PXyogaWYgdGhlIGFwcGxpY2F0aW9uXG4iOwpwcmludCBPVVQgIiAgIGFza3MgZm9yIGl0LiAgVGhpcyBpcyBhIHRyYW5zaWVudCBmZWF0dXJlIHRoYXQgaXMgcHJvdmlkZWQgZm9yIHRob3NlXG4iOwpwcmludCBPVVQgIiAgIHdobyBoYXZlbid0IGhhZCB0aGUgdGltZSB0byBkbyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBpbiB0aGVpclxuIjsKcHJpbnQgT1VUICIgICBhcHBsaWNhdGlvbnMuICAqL1xuIjsKcHJpbnQgT1VUICIjaWZkZWYgT1BFTlNTTF9BTEdPUklUSE1fREVGSU5FU1xuIjsKcHJpbnQgT1VUICRvcGVuc3NsX2FsZ29yaXRobV9kZWZpbmVzX3RyYW5zOwpwcmludCBPVVQgIiNlbmRpZlxuXG4iOwoKcHJpbnQgT1VUICIjZGVmaW5lIE9QRU5TU0xfQ1BVSURfT0JKXG5cbiIgaWYgKCRjcHVpZF9vYmogbmUgIm1lbV9jbHIubyIpOwoKd2hpbGUgKDxJTj4pCgl7CglpZgkoL14jZGVmaW5lXHMrT1BFTlNTTERJUi8pCgkJewoJCW15ICRmb28gPSAkb3BlbnNzbGRpcjsKCQkkZm9vID1+IHMvXFwvXFxcXC9nOwoJCXByaW50IE9VVCAiI2RlZmluZSBPUEVOU1NMRElSIFwiJGZvb1wiXG4iOwoJCX0KCWVsc2lmCSgvXiNkZWZpbmVccytFTkdJTkVTRElSLykKCQl7CgkJbXkgJGZvbyA9ICIkcHJlZml4LyRsaWJkaXIvZW5naW5lcyI7CgkJJGZvbyA9fiBzL1xcL1xcXFwvZzsKCQlwcmludCBPVVQgIiNkZWZpbmUgRU5HSU5FU0RJUiBcIiRmb29cIlxuIjsKCQl9CgllbHNpZgkoL14jKChkZWZpbmUpfCh1bmRlZikpXHMrT1BFTlNTTF9FWFBPUlRfVkFSX0FTX0ZVTkNUSU9OLykKCQl7IHByaW50ZiBPVVQgIiN1bmRlZiBPUEVOU1NMX0VYUE9SVF9WQVJfQVNfRlVOQ1RJT05cbiIKCQkJaWYgJGV4cG9ydF92YXJfYXNfZm47CgkJICBwcmludGYgT1VUICIjJXMgT1BFTlNTTF9FWFBPUlRfVkFSX0FTX0ZVTkNUSU9OXG4iLAoJCQkoJGV4cG9ydF92YXJfYXNfZm4pPyJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmCSgvXiNkZWZpbmVccytPUEVOU1NMX1VOSVNURC8pCgkJewoJCSR1bmlzdGQgPSAiPHVuaXN0ZC5oPiIgaWYgJHVuaXN0ZCBlcSAiIjsKCQlwcmludCBPVVQgIiNkZWZpbmUgT1BFTlNTTF9VTklTVEQgJHVuaXN0ZFxuIjsKCQl9CgllbHNpZgkoL14jKChkZWZpbmUpfCh1bmRlZikpXHMrU0lYVFlfRk9VUl9CSVRfTE9ORy8pCgkJeyBwcmludGYgT1VUICIjJXMgU0lYVFlfRk9VUl9CSVRfTE9OR1xuIiwoJGI2NGwpPyJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlccytTSVhUWV9GT1VSX0JJVC8pCgkJeyBwcmludGYgT1VUICIjJXMgU0lYVFlfRk9VUl9CSVRcbiIsKCRiNjQpPyJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlccytUSElSVFlfVFdPX0JJVC8pCgkJeyBwcmludGYgT1VUICIjJXMgVEhJUlRZX1RXT19CSVRcbiIsKCRiMzIpPyJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlccytTSVhURUVOX0JJVC8pCgkJeyBwcmludGYgT1VUICIjJXMgU0lYVEVFTl9CSVRcbiIsKCRiMTYpPyJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlccytFSUdIVF9CSVQvKQoJCXsgcHJpbnRmIE9VVCAiIyVzIEVJR0hUX0JJVFxuIiwoJGI4KT8iZGVmaW5lIjoidW5kZWYiOyB9CgllbHNpZgkoL14jKChkZWZpbmUpfCh1bmRlZikpXHMrQk5fTExPTkdccyokLykKCQl7IHByaW50ZiBPVVQgIiMlcyBCTl9MTE9OR1xuIiwoJGJuX2xsKT8iZGVmaW5lIjoidW5kZWYiOyB9CgllbHNpZgkoL15cI2RlZmluZVxzK0RFU19MT05HXHMrLiovKQoJCXsgcHJpbnRmIE9VVCAiI2RlZmluZSBERVNfTE9ORyB1bnNpZ25lZCAlc1xuIiwKCQkJKCRkZXNfaW50KT8naW50JzonbG9uZyc7IH0KCWVsc2lmCSgvXlwjKGRlZmluZXx1bmRlZilccytERVNfUFRSLykKCQl7IHByaW50ZiBPVVQgIiMlcyBERVNfUFRSXG4iLCgkZGVzX3B0cik/J2RlZmluZSc6J3VuZGVmJzsgfQoJZWxzaWYJKC9eXCMoZGVmaW5lfHVuZGVmKVxzK0RFU19SSVNDMS8pCgkJeyBwcmludGYgT1VUICIjJXMgREVTX1JJU0MxXG4iLCgkZGVzX3Jpc2MxKT8nZGVmaW5lJzondW5kZWYnOyB9CgllbHNpZgkoL15cIyhkZWZpbmV8dW5kZWYpXHMrREVTX1JJU0MyLykKCQl7IHByaW50ZiBPVVQgIiMlcyBERVNfUklTQzJcbiIsKCRkZXNfcmlzYzIpPydkZWZpbmUnOid1bmRlZic7IH0KCWVsc2lmCSgvXlwjKGRlZmluZXx1bmRlZilccytERVNfVU5ST0xMLykKCQl7IHByaW50ZiBPVVQgIiMlcyBERVNfVU5ST0xMXG4iLCgkZGVzX3Vucm9sbCk/J2RlZmluZSc6J3VuZGVmJzsgfQoJZWxzaWYJKC9eI2RlZmluZVxzK1JDNF9JTlRccy8pCgkJeyBwcmludGYgT1VUICIjZGVmaW5lIFJDNF9JTlQgdW5zaWduZWQgJXNcbiIsJHR5cGVbJHJjNF9pbnRdOyB9CgllbHNpZgkoL14jdW5kZWZccytSQzRfQ0hVTksvKQoJCXsKCQlwcmludGYgT1VUICIjdW5kZWYgUkM0X0NIVU5LXG4iIGlmICRyYzRfY2h1bms9PTA7CgkJcHJpbnRmIE9VVCAiI2RlZmluZSBSQzRfQ0hVTksgdW5zaWduZWQgbG9uZ1xuIiBpZiAkcmM0X2NodW5rPT0xOwoJCXByaW50ZiBPVVQgIiNkZWZpbmUgUkM0X0NIVU5LIHVuc2lnbmVkIGxvbmcgbG9uZ1xuIiBpZiAkcmM0X2NodW5rPT0yOwoJCX0KCWVsc2lmCSgvXiMoKGRlZmluZSl8KHVuZGVmKSlccytSQzRfSU5ERVgvKQoJCXsgcHJpbnRmIE9VVCAiIyVzIFJDNF9JTkRFWFxuIiwoJHJjNF9pZHgpPyJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmICgvXiMoZGVmaW5lfHVuZGVmKVxzK0kzODZfT05MWS8pCgkJeyBwcmludGYgT1VUICIjJXMgSTM4Nl9PTkxZXG4iLCAoJHByb2Nlc3NvciBlcSAiMzg2Iik/CgkJCSJkZWZpbmUiOiJ1bmRlZiI7IH0KCWVsc2lmCSgvXiNkZWZpbmVccytNRDJfSU5UXHMvKQoJCXsgcHJpbnRmIE9VVCAiI2RlZmluZSBNRDJfSU5UIHVuc2lnbmVkICVzXG4iLCR0eXBlWyRtZDJfaW50XTsgfQoJZWxzaWYJKC9eI2RlZmluZVxzK0lERUFfSU5UXHMvKQoJCXtwcmludGYgT1VUICIjZGVmaW5lIElERUFfSU5UIHVuc2lnbmVkICVzXG4iLCR0eXBlWyRpZGVhX2ludF07fQoJZWxzaWYJKC9eI2RlZmluZVxzK1JDMl9JTlRccy8pCgkJe3ByaW50ZiBPVVQgIiNkZWZpbmUgUkMyX0lOVCB1bnNpZ25lZCAlc1xuIiwkdHlwZVskcmMyX2ludF07fQoJZWxzaWYgKC9eIyhkZWZpbmV8dW5kZWYpXHMrQkZfUFRSLykKCQl7CgkJcHJpbnRmIE9VVCAiI3VuZGVmIEJGX1BUUlxuIiBpZiAkYmZfcHRyID09IDA7CgkJcHJpbnRmIE9VVCAiI2RlZmluZSBCRl9QVFJcbiIgaWYgJGJmX3B0ciA9PSAxOwoJCXByaW50ZiBPVVQgIiNkZWZpbmUgQkZfUFRSMlxuIiBpZiAkYmZfcHRyID09IDI7CgkgICAgICAgIH0KCWVsc2UKCQl7IHByaW50IE9VVCAkXzsgfQoJfQpjbG9zZShJTik7CmNsb3NlKE9VVCk7CnJlbmFtZSgiY3J5cHRvL29wZW5zc2xjb25mLmgiLCJjcnlwdG8vb3BlbnNzbGNvbmYuaC5iYWsiKSB8fCBkaWUgInVuYWJsZSB0byByZW5hbWUgY3J5cHRvL29wZW5zc2xjb25mLmhcbiIgaWYgLWUgImNyeXB0by9vcGVuc3NsY29uZi5oIjsKcmVuYW1lKCJjcnlwdG8vb3BlbnNzbGNvbmYuaC5uZXciLCJjcnlwdG8vb3BlbnNzbGNvbmYuaCIpIHx8IGRpZSAidW5hYmxlIHRvIHJlbmFtZSBjcnlwdG8vb3BlbnNzbGNvbmYuaC5uZXdcbiI7CgoKIyBGaXggdGhlIGRhdGUKCnByaW50ICJTSVhUWV9GT1VSX0JJVF9MT05HIG1vZGVcbiIgaWYgJGI2NGw7CnByaW50ICJTSVhUWV9GT1VSX0JJVCBtb2RlXG4iIGlmICRiNjQ7CnByaW50ICJUSElSVFlfVFdPX0JJVCBtb2RlXG4iIGlmICRiMzI7CnByaW50ICJTSVhURUVOX0JJVCBtb2RlXG4iIGlmICRiMTY7CnByaW50ICJFSUdIVF9CSVQgbW9kZVxuIiBpZiAkYjg7CnByaW50ICJERVNfUFRSIHVzZWRcbiIgaWYgJGRlc19wdHI7CnByaW50ICJERVNfUklTQzEgdXNlZFxuIiBpZiAkZGVzX3Jpc2MxOwpwcmludCAiREVTX1JJU0MyIHVzZWRcbiIgaWYgJGRlc19yaXNjMjsKcHJpbnQgIkRFU19VTlJPTEwgdXNlZFxuIiBpZiAkZGVzX3Vucm9sbDsKcHJpbnQgIkRFU19JTlQgdXNlZFxuIiBpZiAkZGVzX2ludDsKcHJpbnQgIkJOX0xMT05HIG1vZGVcbiIgaWYgJGJuX2xsOwpwcmludCAiUkM0IHVzZXMgdSR0eXBlWyRyYzRfaW50XVxuIiBpZiAkcmM0X2ludCAhPSAkZGVmX2ludDsKcHJpbnQgIlJDNF9JTkRFWCBtb2RlXG4iIGlmICRyYzRfaWR4OwpwcmludCAiUkM0X0NIVU5LIGlzIHVuZGVmaW5lZFxuIiBpZiAkcmM0X2NodW5rPT0wOwpwcmludCAiUkM0X0NIVU5LIGlzIHVuc2lnbmVkIGxvbmdcbiIgaWYgJHJjNF9jaHVuaz09MTsKcHJpbnQgIlJDNF9DSFVOSyBpcyB1bnNpZ25lZCBsb25nIGxvbmdcbiIgaWYgJHJjNF9jaHVuaz09MjsKcHJpbnQgIk1EMiB1c2VzIHUkdHlwZVskbWQyX2ludF1cbiIgaWYgJG1kMl9pbnQgIT0gJGRlZl9pbnQ7CnByaW50ICJJREVBIHVzZXMgdSR0eXBlWyRpZGVhX2ludF1cbiIgaWYgJGlkZWFfaW50ICE9ICRkZWZfaW50OwpwcmludCAiUkMyIHVzZXMgdSR0eXBlWyRyYzJfaW50XVxuIiBpZiAkcmMyX2ludCAhPSAkZGVmX2ludDsKcHJpbnQgIkJGX1BUUiB1c2VkXG4iIGlmICRiZl9wdHIgPT0gMTsKcHJpbnQgIkJGX1BUUjIgdXNlZFxuIiBpZiAkYmZfcHRyID09IDI7CgppZigkSXNNSzFNRikgewoJb3BlbiAoT1VULCI+Y3J5cHRvL2J1aWxkaW5mLmgiKSB8fCBkaWUgIkNhbid0IG9wZW4gYnVpbGRpbmYuaCI7CglwcmludGYgT1VUIDw8RU9GOwojaWZuZGVmIE1LMU1GX0JVSUxECiAgLyogYXV0by1nZW5lcmF0ZWQgYnkgQ29uZmlndXJlIGZvciBjcnlwdG8vY3ZlcnNpb24uYzoKICAgKiBmb3IgVW5peCBidWlsZHMsIGNyeXB0by9NYWtlZmlsZS5zc2wgZ2VuZXJhdGVzIGZ1bmN0aW9uYWwgZGVmaW5pdGlvbnM7CiAgICogV2luZG93cyBidWlsZHMgKGFuZCBvdGhlciBtazFtZiBidWlsZHMpIGNvbXBpbGUgY3ZlcnNpb24uYyB3aXRoCiAgICogLURNSzFNRl9CVUlMRCBhbmQgdXNlIGRlZmluaXRpb25zIGFkZGVkIHRvIHRoaXMgZmlsZSBieSB1dGlsL21rMW1mLnBsLiAqLwogICNlcnJvciAiV2luZG93cyBidWlsZHMgKFBMQVRGT1JNPSR0YXJnZXQpIHVzZSBtazFtZi5wbC1jcmVhdGVkIE1ha2VmaWxlcyIKI2VuZGlmCkVPRgoJY2xvc2UoT1VUKTsKfSBlbHNlIHsKCW15ICRtYWtlX2NvbW1hbmQgPSAiJG1ha2UgUEVSTD1cJyRwZXJsXCciOwoJbXkgJG1ha2VfdGFyZ2V0cyA9ICIiOwoJJG1ha2VfdGFyZ2V0cyAuPSAiIGxpbmtzIiBpZiAkc3ltbGluazsKCSRtYWtlX3RhcmdldHMgLj0gIiBkZXBlbmQiIGlmICRkZXBmbGFncyBuZSAkZGVmYXVsdF9kZXBmbGFncyAmJiAkbWFrZV9kZXBlbmQ7CgkkbWFrZV90YXJnZXRzIC49ICIgZ2VudGVzdHMiIGlmICRzeW1saW5rOwoJKHN5c3RlbSAkbWFrZV9jb21tYW5kLiRtYWtlX3RhcmdldHMpID09IDAgb3IgZGllICJtYWtlICRtYWtlX3RhcmdldHMgZmFpbGVkIgoJCWlmICRtYWtlX3RhcmdldHMgbmUgIiI7CglpZiAoICRmaXBzY2FuaXN0ZXJvbmx5ICkKCQl7fQoJZWxzaWYgKCAkcGVybCA9fiBtQF4vQCkgewoJICAgICZkb2ZpbGUoInRvb2xzL2NfcmVoYXNoIiwkcGVybCwnXiMhLycsICcjISVzJywnXm15IFwkZGlyOyQnLCAnbXkgJGRpciA9ICInIC4gJG9wZW5zc2xkaXIgLiAnIjsnLCAnXm15IFwkcHJlZml4OyQnLCAnbXkgJHByZWZpeCA9ICInIC4gJHByZWZpeCAuICciOycpOwoJICAgICZkb2ZpbGUoImFwcHMvQ0EucGwiLCRwZXJsLCdeIyEvJywgJyMhJXMnKTsKCX0gZWxzZSB7CgkgICAgIyBObyBwYXRoIGZvciBQZXJsIGtub3duIC4uLgoJICAgICZkb2ZpbGUoInRvb2xzL2NfcmVoYXNoIiwnL3Vzci9sb2NhbC9iaW4vcGVybCcsJ14jIS8nLCAnIyElcycsJ15teSBcJGRpcjskJywgJ215ICRkaXIgPSAiJyAuICRvcGVuc3NsZGlyIC4gJyI7JywgICdebXkgXCRwcmVmaXg7JCcsICdteSAkcHJlZml4ID0gIicgLiAkcHJlZml4IC4gJyI7Jyk7CgkgICAgJmRvZmlsZSgiYXBwcy9DQS5wbCIsJy91c3IvbG9jYWwvYmluL3BlcmwnLCdeIyEvJywgJyMhJXMnKTsKCX0KCWlmICgkZGVwZmxhZ3MgbmUgJGRlZmF1bHRfZGVwZmxhZ3MgJiYgISRtYWtlX2RlcGVuZCAmJiAhJGZpcHNjYW5pc3Rlcm9ubHkpIHsKCQlwcmludCA8PEVPRjsKClNpbmNlIHlvdSd2ZSBkaXNhYmxlZCBvciBlbmFibGVkIGF0IGxlYXN0IG9uZSBhbGdvcml0aG0sIHlvdSBuZWVkIHRvIGRvCnRoZSBmb2xsb3dpbmcgYmVmb3JlIGJ1aWxkaW5nOgoKCW1ha2UgZGVwZW5kCkVPRgoJfQp9CgojIGNyZWF0ZSB0aGUgbXMvdmVyc2lvbjMyLnJjIGZpbGUgaWYgbmVlZGVkCmlmICgkSXNNSzFNRiAmJiAoJHRhcmdldCAhfiAvXm5ldHdhcmUvKSkgewoJbXkgKCR2MSwgJHYyLCAkdjMsICR2NCk7CglpZiAoJHZlcnNpb25fbnVtID1+IC8oXlswLTlhLWZdezF9KShbMC05YS1mXXsyfSkoWzAtOWEtZl17Mn0pKFswLTlhLWZdezJ9KS9pKSB7CgkJJHYxPWhleCAkMTsKCQkkdjI9aGV4ICQyOwoJCSR2Mz1oZXggJDM7CgkJJHY0PWhleCAkNDsKCX0KCW9wZW4gKE9VVCwiPm1zL3ZlcnNpb24zMi5yYyIpIHx8IGRpZSAiQ2FuJ3Qgb3BlbiBtcy92ZXJzaW9uMzIucmMiOwoJcHJpbnQgT1VUIDw8RU9GOwojaW5jbHVkZSA8d2ludmVyLmg+CgpMQU5HVUFHRSAweDA5LDB4MDEKCjEgVkVSU0lPTklORk8KICBGSUxFVkVSU0lPTiAkdjEsJHYyLCR2MywkdjQKICBQUk9EVUNUVkVSU0lPTiAkdjEsJHYyLCR2MywkdjQKICBGSUxFRkxBR1NNQVNLIDB4M2ZMCiNpZmRlZiBfREVCVUcKICBGSUxFRkxBR1MgMHgwMUwKI2Vsc2UKICBGSUxFRkxBR1MgMHgwMEwKI2VuZGlmCiAgRklMRU9TIFZPU19fV0lORE9XUzMyCiAgRklMRVRZUEUgVkZUX0RMTAogIEZJTEVTVUJUWVBFIDB4MEwKQkVHSU4KICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKICAgIEJFR0lOCglCTE9DSyAiMDQwOTA0YjAiCglCRUdJTgojaWYgZGVmaW5lZChGSVBTKQoJICAgIFZBTFVFICJDb21tZW50cyIsICJXQVJOSU5HOiBURVNUIFZFUlNJT04gT05MWSAqKipOT1QqKiogRklQUyAxNDAtMiBWQUxJREFURUQuXFwwIgojZW5kaWYKCSAgICAvLyBSZXF1aXJlZDoKCSAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiVGhlIE9wZW5TU0wgUHJvamVjdCwgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9cXDAiCiNpZiBkZWZpbmVkKEZJUFMpCgkgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJURVNUIFVOVkFMSURBVEVEIEZJUFMxNDAtMiBETExcXDAiCiNlbHNlCgkgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJPcGVuU1NMIFNoYXJlZCBMaWJyYXJ5XFwwIgojZW5kaWYKCSAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCAiJHZlcnNpb25cXDAiCiNpZiBkZWZpbmVkKENSWVBUTykKCSAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgImxpYmVheTMyXFwwIgoJICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgImxpYmVheTMyLmRsbFxcMCIKI2VsaWYgZGVmaW5lZChTU0wpCgkgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJzc2xlYXkzMlxcMCIKCSAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJzc2xlYXkzMi5kbGxcXDAiCiNlbGlmIGRlZmluZWQoRklQUykKCSAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgImxpYm9zc2xmaXBzXFwwIgoJICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgImxpYm9zc2xmaXBzLmRsbFxcMCIKI2VuZGlmCgkgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlRoZSBPcGVuU1NMIFRvb2xraXRcXDAiCgkgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgIiR2ZXJzaW9uXFwwIgoJICAgIC8vIE9wdGlvbmFsOgoJICAgIC8vVkFMVUUgIkNvbW1lbnRzIiwgIlxcMCIKCSAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IKkgMTk5OC0yMDA1IFRoZSBPcGVuU1NMIFByb2plY3QuIENvcHlyaWdodCCpIDE5OTUtMTk5OCBFcmljIEEuIFlvdW5nLCBUaW0gSi4gSHVkc29uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxcMCIKCSAgICAvL1ZBTFVFICJMZWdhbFRyYWRlbWFya3MiLCAiXFwwIgoJICAgIC8vVkFMVUUgIlByaXZhdGVCdWlsZCIsICJcXDAiCgkgICAgLy9WQUxVRSAiU3BlY2lhbEJ1aWxkIiwgIlxcMCIKCUVORAogICAgRU5ECiAgICBCTE9DSyAiVmFyRmlsZUluZm8iCiAgICBCRUdJTgogICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAweDRiMAogICAgRU5ECkVORApFT0YKCWNsb3NlKE9VVCk7CiAgfQoKcHJpbnQgPDxFT0Y7CgpDb25maWd1cmVkIGZvciAkdGFyZ2V0LgpFT0YKCnByaW50IDw8XEVPRiBpZiAoISRub190aHJlYWRzICYmICEkdGhyZWFkcyk7CgpUaGUgbGlicmFyeSBjb3VsZCBub3QgYmUgY29uZmlndXJlZCBmb3Igc3VwcG9ydGluZyBtdWx0aS10aHJlYWRlZAphcHBsaWNhdGlvbnMgYXMgdGhlIGNvbXBpbGVyIG9wdGlvbnMgcmVxdWlyZWQgb24gdGhpcyBzeXN0ZW0gYXJlIG5vdCBrbm93bi4KU2VlIGZpbGUgSU5TVEFMTCBmb3IgZGV0YWlscyBpZiB5b3UgbmVlZCBtdWx0aS10aHJlYWRpbmcuCkVPRgoKcHJpbnQgPDxcRU9GIGlmICgkbm9fc2hhcmVkX3dhcm4pOwoKWW91IGdhdmUgdGhlIG9wdGlvbiAnc2hhcmVkJy4gIE5vcm1hbGx5LCB0aGF0IHdvdWxkIGdpdmUgeW91IHNoYXJlZCBsaWJyYXJpZXMuClVuZm9ydHVuYXRlbHksIHRoZSBPcGVuU1NMIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBpbmNsdWRlIHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQKZm9yIHRoaXMgcGxhdGZvcm0geWV0LCBzbyBpdCB3aWxsIHByZXRlbmQgeW91IGdhdmUgdGhlIG9wdGlvbiAnbm8tc2hhcmVkJy4gIElmCnlvdSBjYW4gaW5mb3JtIHRoZSBkZXZlbG9wcGVycyAob3BlbnNzbC1kZXZcQG9wZW5zc2wub3JnKSBob3cgdG8gc3VwcG9ydCBzaGFyZWQKbGlicmFyaWVzIG9uIHRoaXMgcGxhdGZvcm0sIHRoZXkgd2lsbCBhdCBsZWFzdCBsb29rIGF0IGl0IGFuZCB0cnkgdGhlaXIgYmVzdAooYnV0IHBsZWFzZSBmaXJzdCBtYWtlIHN1cmUgeW91IGhhdmUgdHJpZWQgd2l0aCBhIGN1cnJlbnQgdmVyc2lvbiBvZiBPcGVuU1NMKS4KRU9GCgpwcmludCA8PFxFT0YgaWYgKCRmaXBzY2FuaXN0ZXJpbnRlcm5hbCBlcSAieSIpOwoKV0FSTklORzogT3BlblNTTCBoYXMgYmVlbiBjb25maWd1cmVkIHVzaW5nIHVuc3VwcG9ydGVkIG9wdGlvbihzKSB0byBpbnRlcm5hbGx5CmdlbmVyYXRlIGEgZmlwc2NhbmlzdGVyLm8gb2JqZWN0IG1vZHVsZSBmb3IgVEVTVElORyBQVVJQT1NFUyBPTkxZOyB0aGF0CmNvbXBpbGVkIG1vZHVsZSBpcyBOT1QgRklQUyAxNDAtMiB2YWxpZGF0ZWQgYW5kIENBTk5PVCBiZSB1c2VkIHRvIHJlcGxhY2UgdGhlCk9wZW5TU0wgRklQUyBPYmplY3QgTW9kdWxlIGFzIGlkZW50aWZpZWQgYnkgdGhlIENNVlAKKGh0dHA6Ly9jc3JjLm5pc3QuZ292L2NyeXB0dmFsLykgaW4gYW55IGFwcGxpY2F0aW9uIHJlcXVpcmluZyB0aGUgdXNlIG9mIEZJUFMKMTQwLTIgdmFsaWRhdGVkIHNvZnR3YXJlLgoKVGhpcyBpcyBhIHRlc3QgT3BlblNTTCAyLjAgRklQUyBtb2R1bGUuCgpTZWUgdGhlIGZpbGUgUkVBRE1FLkZJUFMgZm9yIGRldGFpbHMgb2YgaG93IHRvIGJ1aWxkIGEgdGVzdCBsaWJyYXJ5LgoKRU9GCgpleGl0KDApOwoKc3ViIHVzYWdlCgl7CglwcmludCBTVERFUlIgJHVzYWdlOwoJcHJpbnQgU1RERVJSICJcbnBpY2sgb3MvY29tcGlsZXIgZnJvbTpcbiI7CglteSAkaj0wOwoJbXkgJGk7CiAgICAgICAgbXkgJGs9MDsKCWZvcmVhY2ggJGkgKHNvcnQga2V5cyAldGFibGUpCgkJewoJCW5leHQgaWYgJGkgPX4gL15kZWJ1Zy87CgkJJGsgKz0gbGVuZ3RoKCRpKSArIDE7CgkJaWYgKCRrID4gNzgpCgkJCXsKCQkJcHJpbnQgU1RERVJSICJcbiI7CgkJCSRrPWxlbmd0aCgkaSk7CgkJCX0KCQlwcmludCBTVERFUlIgJGkgLiAiICI7CgkJfQoJZm9yZWFjaCAkaSAoc29ydCBrZXlzICV0YWJsZSkKCQl7CgkJbmV4dCBpZiAkaSAhfiAvXmRlYnVnLzsKCQkkayArPSBsZW5ndGgoJGkpICsgMTsKCQlpZiAoJGsgPiA3OCkKCQkJewoJCQlwcmludCBTVERFUlIgIlxuIjsKCQkJJGs9bGVuZ3RoKCRpKTsKCQkJfQoJCXByaW50IFNUREVSUiAkaSAuICIgIjsKCQl9CglwcmludCBTVERFUlIgIlxuXG5OT1RFOiBJZiBpbiBkb3VidCwgb24gVW5peC1pc2ggc3lzdGVtcyB1c2UgJy4vY29uZmlnJy5cbiI7CglleGl0KDEpOwoJfQoKc3ViIHdoaWNoCgl7CglteSgkbmFtZSk9QF87CglteSAkcGF0aDsKCWZvcmVhY2ggJHBhdGggKHNwbGl0IC86LywgJEVOVntQQVRIfSkKCQl7CgkJaWYgKC1mICIkcGF0aC8kbmFtZSRleGVfZXh0IiBhbmQgLXggXykKCQkJewoJCQlyZXR1cm4gIiRwYXRoLyRuYW1lJGV4ZV9leHQiIHVubGVzcyAoJG5hbWUgZXEgInBlcmwiIGFuZAoJCQkgc3lzdGVtKCIkcGF0aC8kbmFtZSRleGVfZXh0IC1lICIgLiAnXCdleGl0KCRdPDUuMCk7XCcnKSk7CgkJCX0KCQl9Cgl9CgpzdWIgZG9maWxlCgl7CglteSAkZjsgbXkgJHA7IG15ICVtOyBteSBAYTsgbXkgJGs7IG15ICRmZjsKCSgkZiwkcCwlbSk9QF87CgoJb3BlbihJTiwiPCRmLmluIikgfHwgb3BlbihJTiwiPCRmIikgfHwgZGllICJ1bmFibGUgdG8gb3BlbiAkZjokIVxuIjsKCUBhPTxJTj47CgljbG9zZShJTik7Cglmb3JlYWNoICRrIChrZXlzICVtKQoJCXsKCQlncmVwKC8kay8gJiYgKCRfPXNwcmludGYoJG17JGt9LiJcbiIsJHApKSxAYSk7CgkJfQoJb3BlbihPVVQsIj4kZi5uZXciKSB8fCBkaWUgInVuYWJsZSB0byBvcGVuICRmLm5ldzokIVxuIjsKCXByaW50IE9VVCBAYTsKCWNsb3NlKE9VVCk7CglyZW5hbWUoJGYsIiRmLmJhayIpIHx8IGRpZSAidW5hYmxlIHRvIHJlbmFtZSAkZlxuIiBpZiAtZSAkZjsKCXJlbmFtZSgiJGYubmV3IiwkZikgfHwgZGllICJ1bmFibGUgdG8gcmVuYW1lICRmLm5ld1xuIjsKCX0KCnN1YiBwcmludF90YWJsZV9lbnRyeQoJewoJbXkgJHRhcmdldCA9IHNoaWZ0OwoKCShteSAkY2MsbXkgJGNmbGFncyxteSAkdW5pc3RkLG15ICR0aHJlYWRfY2ZsYWcsbXkgJHN5c19pZCxteSAkbGZsYWdzLAoJbXkgJGJuX29wcyxteSAkY3B1aWRfb2JqLG15ICRibl9vYmosbXkgJGRlc19vYmosbXkgJGFlc19vYmosIG15ICRiZl9vYmosCglteSAkbWQ1X29iaixteSAkc2hhMV9vYmosbXkgJGNhc3Rfb2JqLG15ICRyYzRfb2JqLG15ICRybWQxNjBfb2JqLAoJbXkgJHJjNV9vYmosbXkgJHdwX29iaixteSAkY21sbF9vYmosbXkgJG1vZGVzX29iaiwgbXkgJGVuZ2luZXNfb2JqLAoJbXkgJHBlcmxhc21fc2NoZW1lLG15ICRkc29fc2NoZW1lLG15ICRzaGFyZWRfdGFyZ2V0LG15ICRzaGFyZWRfY2ZsYWcsCglteSAkc2hhcmVkX2xkZmxhZyxteSAkc2hhcmVkX2V4dGVuc2lvbixteSAkcmFubGliLG15ICRhcmZsYWdzLG15ICRtdWx0aWxpYik9CglzcGxpdCgvXHMqOlxzKi8sJHRhYmxleyR0YXJnZXR9IC4gIjoiIHggMzAgLCAtMSk7CgoJcHJpbnQgPDxFT0YKCioqKiAkdGFyZ2V0ClwkY2MgICAgICAgICAgID0gJGNjClwkY2ZsYWdzICAgICAgID0gJGNmbGFncwpcJHVuaXN0ZCAgICAgICA9ICR1bmlzdGQKXCR0aHJlYWRfY2ZsYWcgPSAkdGhyZWFkX2NmbGFnClwkc3lzX2lkICAgICAgID0gJHN5c19pZApcJGxmbGFncyAgICAgICA9ICRsZmxhZ3MKXCRibl9vcHMgICAgICAgPSAkYm5fb3BzClwkY3B1aWRfb2JqICAgID0gJGNwdWlkX29iagpcJGJuX29iaiAgICAgICA9ICRibl9vYmoKXCRkZXNfb2JqICAgICAgPSAkZGVzX29iagpcJGFlc19vYmogICAgICA9ICRhZXNfb2JqClwkYmZfb2JqICAgICAgID0gJGJmX29iagpcJG1kNV9vYmogICAgICA9ICRtZDVfb2JqClwkc2hhMV9vYmogICAgID0gJHNoYTFfb2JqClwkY2FzdF9vYmogICAgID0gJGNhc3Rfb2JqClwkcmM0X29iaiAgICAgID0gJHJjNF9vYmoKXCRybWQxNjBfb2JqICAgPSAkcm1kMTYwX29iagpcJHJjNV9vYmogICAgICA9ICRyYzVfb2JqClwkd3Bfb2JqICAgICAgID0gJHdwX29iagpcJGNtbGxfb2JqICAgICA9ICRjbWxsX29iagpcJG1vZGVzX29iaiAgICA9ICRtb2Rlc19vYmoKXCRlbmdpbmVzX29iaiAgPSAkZW5naW5lc19vYmoKXCRwZXJsYXNtX3NjaGVtZSA9ICRwZXJsYXNtX3NjaGVtZQpcJGRzb19zY2hlbWUgICA9ICRkc29fc2NoZW1lClwkc2hhcmVkX3RhcmdldD0gJHNoYXJlZF90YXJnZXQKXCRzaGFyZWRfY2ZsYWcgPSAkc2hhcmVkX2NmbGFnClwkc2hhcmVkX2xkZmxhZyA9ICRzaGFyZWRfbGRmbGFnClwkc2hhcmVkX2V4dGVuc2lvbiA9ICRzaGFyZWRfZXh0ZW5zaW9uClwkcmFubGliICAgICAgID0gJHJhbmxpYgpcJGFyZmxhZ3MgICAgICA9ICRhcmZsYWdzClwkbXVsdGlsaWIgICAgID0gJG11bHRpbGliCkVPRgoJfQoKc3ViIHRlc3Rfc2FuaXR5Cgl7CglteSAkZXJyb3JjbnQgPSAwOwoKCXByaW50IFNUREVSUiAiPSIgeCA3MCwgIlxuIjsKCXByaW50IFNUREVSUiAiPT09IFNBTklUWSBURVNUSU5HIVxuIjsKCXByaW50IFNUREVSUiAiPT09IE5vIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkb25lLCBhbGwgb3RoZXIgYXJndW1lbnRzIHdpbGwgYmUgaWdub3JlZCFcbiI7CglwcmludCBTVERFUlIgIj0iIHggNzAsICJcbiI7CgoJZm9yZWFjaCAkdGFyZ2V0IChzb3J0IGtleXMgJXRhYmxlKQoJCXsKCQlAZmllbGRzID0gc3BsaXQoL1xzKjpccyovLCR0YWJsZXskdGFyZ2V0fSAuICI6IiB4IDMwICwgLTEpOwoKCQlpZiAoJGZpZWxkc1skaWR4X2Rzb19zY2hlbWUtMV0gPX4gL14oYmVvc3xkbHxkbGZjbnx3aW4zMnx2bXMpJC8pCgkJCXsKCQkJJGVycm9yY250Kys7CgkJCXByaW50IFNUREVSUiAiU0FOSVRZIEVSUk9SOiAnJHRhcmdldCcgaGFzIHRoZSBkc29fc2NoZW1lIFskaWR4X2Rzb19zY2hlbWVdIHZhbHVlc1xuIjsKCQkJcHJpbnQgU1RERVJSICIgICAgICAgICAgICAgIGluIHRoZSBwcmV2aW91cyBmaWVsZFxuIjsKCQkJfQoJCWVsc2lmICgkZmllbGRzWyRpZHhfZHNvX3NjaGVtZSsxXSA9fiAvXihiZW9zfGRsfGRsZmNufHdpbjMyfHZtcykkLykKCQkJewoJCQkkZXJyb3JjbnQrKzsKCQkJcHJpbnQgU1RERVJSICJTQU5JVFkgRVJST1I6ICckdGFyZ2V0JyBoYXMgdGhlIGRzb19zY2hlbWUgWyRpZHhfZHNvX3NjaGVtZV0gdmFsdWVzXG4iOwoJCQlwcmludCBTVERFUlIgIiAgICAgICAgICAgICAgaW4gdGhlIGZvbGxvd2luZyBmaWVsZFxuIjsKCQkJfQoJCWVsc2lmICgkZmllbGRzWyRpZHhfZHNvX3NjaGVtZV0gIX4gL14oYmVvc3xkbHxkbGZjbnx3aW4zMnx2bXN8KSQvKQoJCQl7CgkJCSRlcnJvcmNudCsrOwoJCQlwcmludCBTVERFUlIgIlNBTklUWSBFUlJPUjogJyR0YXJnZXQnIGhhcyB0aGUgZHNvX3NjaGVtZSBbJGlkeF9kc29fc2NoZW1lXSBmaWVsZCA9ICIsJGZpZWxkc1skaWR4X2Rzb19zY2hlbWVdLCJcbiI7CgkJCXByaW50IFNUREVSUiAiICAgICAgICAgICAgICB2YWxpZCB2YWx1ZXMgYXJlICdiZW9zJywgJ2RsJywgJ2RsZmNuJywgJ3dpbjMyJyBhbmQgJ3ZtcydcbiI7CgkJCX0KCQl9CglwcmludCBTVERFUlIgIk5vIHNhbml0eSBlcnJvcnMgZGV0ZWN0ZWQhXG4iIGlmICRlcnJvcmNudCA9PSAwOwoJcmV0dXJuICRlcnJvcmNudDsKCX0K