ZGlmZiAtLWdpdCBhL2RvYy93aXovLnJlYWRtZSBiL2RvYy93aXovLnJlYWRtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGQwNDljCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei8ucmVhZG1lCkBAIC0wLDAgKzEsMiBAQAorSGllciBzaW5kIGFsbGdlbWVpbmUgVGhlbWVuIHVuZCBSZWdlbHVuZ2VuIGZ1ZXIgTWFnaWVyIGJlc2NocmllYmVuLgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6Ly5zeW5vbnltIGIvZG9jL3dpei8uc3lub255bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yzk1MjNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei8uc3lub255bQpAQCAtMCwwICsxLDE3IEBACitzcG9uc29yIGJlZm9lcmRlcnVuZ2VuCitzcG9uc29yaW5nIGJlZm9lcmRlcnVuZ2VuCitiZWZvZXJkZXJ1bmcgYmVmb2VyZGVydW5nZW4KK25wYyBucGNzCittYXRlcmlhbGllbiBtYXRlcmlhbAorZmx1ZWNoZSBnaWZ0CitmbHVjaCBnaWZ0CitnaWZ0ZSBnaWZ0Cit2ZXJnaWZ0dW5nIGdpZnQKK2tyYW5raGVpdCBnaWZ0CitrcmFua2hlaXRlbiBnaWZ0Cithcm1vdXIgcnVlc3R1bmdlbgorYXJtb3VycyBydWVzdHVuZ2VuCitydWVzdHVuZyBydWVzdHVuZ2VuCit3ZWFwb24gd2FmZmVuCit3ZWFwb25zIHdhZmZlbgord2FmZmUgd2FmZmVuCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2FuZmFlbmdlciBiL2RvYy93aXovYW5mYWVuZ2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNDA5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2FuZmFlbmdlcgpAQCAtMCwwICsxLDExNiBAQAorQW5mYWVuZ2VyZ2ViaWV0ZQorCitWaWVsbGVpY2h0IGVydWVicmlndCBlcyBzaWNoLCBlaW5lbiBsYWVuZ2xpY2hlbiBMZWl0ZmFkZW4genUgc2NocmVpYmVuLAord2VpbCBkaWVzIGVpZ2VudGxpY2ggR2ViaWV0ZSB3aWUgdmllbGUgYW5kZXJlIHNlaW4gc29sbHRlbjoKK2F1c3JlaWNoZW5kIGJlc2NocmllYmVuLCBsb2dpc2NoIGR1cmNoZGFjaHQsIGJhbGFuY2llcnQsIHdhcyBOUEMgdW5kCitPYmpla3RlIHdpZSBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4gYmV0cmlmZnQsIGt1cnp1bSwgZXMgbXVzcyBTcGFzcyBmdWVyCitTcGllbGVyIG1hY2hlbi4KKworRWluaWdlcyB1bnRlcnNjaGVpZGV0IGFiZXIgZWluIHNvbGNoZXMgR2ViaWV0IHZvbiBhbmRlcmVuLCBkZW5uIHdpZSBkZXIKK05hbWUgc2Nob24gc2FndCwgc29sbHRlIG1hbiBkb3J0IGVoZXIgaGF1cHRzYWVjaGxpY2ggQW5mYWVuZ2VyIChlaW5tYWwKK3dpbGxrdWVybGljaCBhbHMgU3BpZWxzdHVmZSAxLTUgYmV6ZWljaG5ldCkgZXJ3YXJ0ZW4uCisKKzEuIEVycmVpY2hiYXJrZWl0CitWaWVsZSBBbmZhZW5nZXJnZWJpZXRlIGJlZmluZGVuIHNpY2ggbmF0dWVybGljaCBpbiB1bm1pdHRlbGJhcmVyIE5hZWhlCitlaW5lciBSYXNzZSwgei5CLiBkaWUgSG9jaGViZW5lIGJlaSBkZW4gWndlcmdlbiwgZGVyIFBhcmsgZGVyIEZyZXVuZGUKK2JlaSBkZW4gRWxmZW4gb2RlciBkZXIga2xlaW5lIERzY2h1bmdlbCBpbSBOVyB2b24gS2F0em1hbmR1LiBIaWVyYmVpCitpc3QgZGllIE5hZWhlIGZ1ZXIgZWluZSBSYXNzZSBnZWdlYmVuLCBzbyBkYXNzIHp1bWluZGVzdCBkaWUga2xlaW5lbgorU3BpZWxlciBkaWVzZXIgUmFzc2UgZGFzIEdlYmlldCBsZWljaHQgZXJyZWljaGVuIGtvZW5uZW4uIE5hdHVlcmxpY2gKK2lzdCBlcyBmdWVyIGFuZGVyZSBSYXNzZW4gbmljaHQgdW5iZWRpbmd0IGVpbmZhY2gsIGVpbmlnZSB3ZWl0IGVudGZlcm50CitnZWxlZ2VuZSBBbmZhZW5nZXJnZWJpZXRlIHp1IGVycmVpY2hlbiwgb2huZSBEdXR6ZW5kZSB2b24gUmFldW1lbiB6dQorZHVyY2hsYXVmZW4uCitNYW4ga2FubiBhdWNoIG5pY2h0IHNvZm9ydCBkYXZvbiBhdXNnZWhlbiwgZGFzcyBzaWNoIGVpbiBBbmZhZW5nZXIgdm9uCitBbmZhbmcgYW4gZWluZSBLYXJ0ZSBmdWVyIFdlZ2UgYW5sZWd0LiBJbnNvZmVybiBpc3QgZXMgc2lubnZvbGwsIHdlbm4KK2VzIEFuZmFlbmdlcmdlYmlldGUgaW4gdW5taXR0ZWxiYXJlciBOYWVoZSB6dSBkZW4gU3RhcnRwdW5rdGVuIGRlcgorUmFzc2VuIGdpYnQuIERpZSBrb2VubmVuIGRhbm4gZW50d2VkZXIgdW50ZXIgZGVtIEViZW5lbnBmYWQgb2RlciBhdWNoCit1bnRlciAvZC9hbmZhZW5nZXIgc3RlaGVuLgorQWxsZ2VtZWluIHp1Z2FlbmdsaWNoZSBBbmZhZW5nZXJnZWJpZXRlIHNvbGx0ZW4genVtaW5kZXN0IG9obmUgZ3Jvc3NlbgorQXVmd2FuZCB2b20gU3RhcnRwdW5rdCBkZXIgUmFzc2VuIGF1cyB6dSBlcnJlaWNoZW4gc2Vpbi4gRGFzIGtvZW5udGUKK2R1cmNoIHNwZXppZWxsZSBIaWxmc21pdHRlbCBnZXNjaGVoZW4sIGR1cmNoIE5QQywgZGllIGVpbmVuIGRlbiBXZWcKK2RvcnRoaW4gd2Vpc2VuICh2aWVsbGVpY2h0IGR1cmNoIFVlYmVyYXJiZWl0dW5nIHZvbiBiZXN0ZWhlbmRlbiBGaWxlcykKK29kZXIgZHVyY2ggdGVsZXBvcnRpZXJlbmRlIE9iamVrdGUsIGRpZSBudXIgZnVlciBBbmZhZW5nZXIgYmVudXR6YmFyCitzaW5kLiBaaWVsIGlzdCBlcyBuaWNodCwgZGVuIFNwaWVsZXJuIGRhcyBMYXVmZW4gdW5kIHNlbGJzdHN0YWVuZGlnZQorRXJrdW5kZW4gYWJ6dW5laG1lbiwgc29uZGVybiBudXIgZGllIEdlZmFociwgc2ljaCB1ZWJlciBsYWVuZ2VyZQorU3RyZWNrZW4gaGluIHp1ICJ2ZXJmcmFuc2VuIi4KKworMi4gQmVrYW5udGhlaXRzZ3JhZAorRGllc2VtIFB1bmt0IHNvbGx0ZSBtYW4gZWluIHdlbmlnIFplaXQgd2lkbWVuLiBBbSBlaW5mYWNoc3RlbiBpc3QgZGllCitCZWthbm50aGVpdCB6dSBlcnJlaWNoZW4sIHdlbm4gaW0gR2ViaWV0IGVpbmUgUXVlc3Qgc3BpZWx0LCBkYSBkYW5uCitmcnVlaGVyIG9kZXIgc3BhZXRlciB6d2FuZ3NsYWV1ZmlnIGVpbmUgRnJhZ2UgZ2VzdGVsbHQgd2lyZC4gSXN0IGVzCitlaW5lIE1pbmlxdWVzdCwga29lbm50ZSBlaW5lIEVyZm9sZ3NtZWxkdW5nIHVlYmVyIGRpZSBFYmVuZSBBbmZhZW5nZXIKK2ZsaW1tZXJuIHN0YXR0IHVlYmVyIGRpZSBFYmVuZSBBYmVudGV1ZXIuIFdlbm4gZXMgcGFzc3QsIGtvZW5udGVuCithdWNoIGRpdmVyc2UgTlBDIG1pdCBJbmZvcm1hdGlvbmVuIHZlcnNvcmd0IHdlcmRlbiwgb2RlciBhbmRlcmUgT2JqZWt0ZSwKK2RpZSBtYW4gYW4gcHJvbWluZW50ZXIgU3RlbGxlIHBsYXppZXJ0IChOb3RpemVuLCBCdWVjaGVyLCBBdWZ6ZWljaG51bmdlbgorb2RlciBhZWhubGljaGVzKS4KKworMy4gTlBDCitBdWNoIHdlbm4gZXMgbnVyICJrbGVpbmUiIE5QQyBzaW5kLCBrYW5uIG1hbiBpbiBzaWUgbWluZGVzdGVucyBzbyB2aWVsCitFbmVyZ2llIGZ1ZXIgSW5mb3JtYXRpb25lbiwgVmVyaGFsdGVuIHVuZCBEZXRhaWxzIHN0ZWNrZW4gd2llIGZ1ZXIKKyJncm9zc2UiLiBTaWUgc29sbHRlbiBrZWluZXNmYWxscyBhZ2dyZXNzaXYgc2Vpbi4gSG9oZXIgQm9keSAofiA+NzApCitvZGVyIGhvaGUgSGFuZHMgKH4gPjEwMCkgc2luZCB6dSB2ZXJtZWlkZW4sIGRhIG1hbiBhbHMgQW5mYWVuZ2VyIG5vY2gKK2tlaW4gR2VmdWVobCBkYWZ1ZXIgaGF0LCB3YXMgZGllIFNjaGFkZW5zbWVsZHVuZ2VuICJoYXJ0IiwgImtyYWNoZW5kZQorS25vY2hlbiIgb2RlciAia2l0emVsdCBEaWNoIiBpbiBldHdhIGFuIFNjaGFkZW4gbWFjaGVuLiBEZW1lbnRzcHJlY2hlbmQKK3dhZXJlIGVzIGF1Y2ggc2lubnZvbGwsIGRpZSBOUEMgenUgc2NocmVpYmVuLiBCZWRyb2hsaWNoIGF1c3NlaGVuZGUKK0RyYWNoZW4sIGRpZSBpbW1lciB2ZXJmZWhsZW4sIHNpbmQgZWlnZW50bGljaCBlYmVuc28gd2VuaWcgcGxhdXNpYmVsCit3aWUga2xlaW5lIEFtZWlzZW4sIGRpZSBlaW5lbiBtaXQgZGVyIFNhZXVyZSBpbW1lciBzZWhyIGhhcnQgdHJlZmZlbi4KK0ltIFp3ZWlmZWwgZWluZmFjaCBlaW5lbiBMdmwgMSBUZXN0c3BpZWxlciBhbmxlZ2VuIHVuZCBhdXNwcm9iaWVyZW4sCittYWwgZ2FueiBvaG5lIFdhZmZlICh3aWUga29tbWUgaWNoIGFscyAibmFja3RlciIgTmV1bGluZyBhbiBtZWluZSBlcnN0ZQorV2FmZmU/KSwgbWFsIG1pdCBlaW5lciBzY2h3YWNoZW4sIG1hbCBtaXQgZWluZXIgZXR3YXMgYmVzc2VyZW4gV2FmZmUuCitBbHMgQXVzbmFobWUgZGFyZiBoaWVyIGdlcm5lIGF1Y2ggbWFsIGVpbiBlaWdlbnRsaWNoIHNjaHdhY2hlciBOUEMKK0tpbGxzdHVmZW5wdW5rdGUgKEtpbGxzdHVwc2UpIHZlcmdlYmVuLgorCis0LiBDbGVhbmluZyBVcAorSG9mZmVudGxpY2ggYmVzdWNoZW4gZGFubiBhdWNoIHZpZWxlIGRhcyBHZWJpZXQuIEV2ZW50dWVsbCBlbXBmaWVobHQgZXMKK3NpY2ggZGFubiAod2llIGJlaSB2aWVsZW4gYW5kZXJlbiBHZWJpZXRlbiBhYmVyIGF1Y2gpIHp1IHVlYmVybGVnZW4sCit3YXMgcGFzc2llcnQsIHdlbm4gZWluZSBVbnphaGwgZ2VzY2hyaWViZW5lciBPYmpla3RlLCBkaWUgdmllbGUgZGFubgorZG9jaCBuaWNodCBnZWJyYXVjaGVuL21pdG5laG1lbiwgaW0gUmF1bSBoZXJ1bWxpZWd0LiBCZWkgUnVlc3R1bmdlbiB1bmQKK1dhZmZlbiBzaW5kIGRpZSBBcmd1bWVudGUgQ0xPTkVfV0lFTEQgdW5kIENMT05FX1dFQVIgaW4gZGVyIEZ1bmt0aW9uCitBZGRJdGVtIHZvcnRlaWxoYWZ0LCBiZWkgYW5kZXJlbiBPYmpla3RlbiBrb2VubnRlIG1hbiBpbiBkZXJlbiBSZXNldAorbmFjaHNlaGVuLCBvYiBzaWUgbGFlbmdlcmUgWmVpdCBpbiBlaW5lbSBSYXVtIGRlcyBHZWJpZXRzIG9kZXIgaW0gR2ViaWV0CitzZWxic3QgImhlcnVtZ2FtbWVsbiIuIEVzIGJsZWlidCB6d2FyIHp1IGhvZmZlbiwgZGFzcyBzaWUgaXJnZW5kd2FubgorZGVtIEF1c3N3YXBwZW4gZGVzIFJhdW1lcyBhbmhlaW1mYWxsZW4sIGFiZXIgZXMgc2llaHQgaW0gYWxsZ2VtZWluZW4KK25pY2h0IHNjaG9lbiBhdXMsIHdlbm4gT2JqZWt0ZSBvZGVyIGdhciBxdWVzdC0vbWluaXF1ZXN0cmVsZXZhbnRlIFRlaWxlCitzaWNoIGluIGVpbmVtIG9kZXIgbWVocmVyZW4gUmFldW1lbiBzdGFwZWxuLgorCis1LiBaVHMKK1NpZSBoZWxmZW4sIGRhcyBHZWJpZXQgYmVrYW5udGVyIHp1IG1hY2hlbiAoc2llaGUgUHVua3QgMiksIHNvbGx0ZW4KK2FiZXIgZWluZmFjaCB6dSBmaW5kZW4gc2VpbiAoRGV0YWlsLCBlaW5mYWNoZXIgQmVmZWhsKSB1bmQgbmljaHQgZ2xlaWNoCitlaW5lIGdhbnplIE1pbmlxdWVzdCBiZWluaGFsdGVuLgorCis2LiBVbnRlcnN0dWV0enVuZyB2b24gd2ljaHRpZ2VuIFN0YW5kYXJkaXRlbXMKK0RhenUgZ2Vob2VyZW4gaW1tZXIgbm9jaCBTZWlsLCBGYWNrZWwgb2RlciBTY2hhdWZlbC4gRXZlbnR1ZWxsIGJyYXVjaHQKK21hbiBzaWUgZnVlciBkaWUgZWluZSBvZGVyIGFuZGVyZSBBdWZnYWJlLCBpaHJlIEJlbnV0enVuZyB1bmQgZGllIGRhbWl0Cit2ZXJidW5kZW5lIFN5bnRheCBzb2xsdGUgZGVtIEFuZmFlbmdlciBkYW5hY2ggZ2VsYWV1ZmlnIHNlaW4uCisKKzcuIFVudGVyc3R1ZXR6dW5nIHZvbiB3ZWl0IHZlcmJyZWl0ZXRlbiBCZWZlaGxlbgorRGF6dSB6YWVobGVuICJvZWZmbmUiLCAibmltbSIsICJzdWNoZS9kdXJjaHN1Y2hlIiwgInNjaGxpZXNzZSIsIGV0Yy4sCithbHNvIGRhcywgd2FzIGluIHZpZWxlbiBRdWVzdHMgYXVjaCBtaXR1bnRlciBnZWZyYWd0IGlzdC4KKworOC4gVmllbGZhbHQgaW4gZGVtLCB3YXMgbWFuICJ0dW4iIGthbm4sIGVpbmZhY2hlIFVtc2V0enVuZworTWFuIGtvZW5udGUgZGllc2VuIFB1bmt0IGF1Y2ggdW50ZXIgImVpbmZhY2hlciBDb2RlIGZ1ZXIgQW5mYWVuZ2VyIgorenVzYW1tZW5mYXNzZW4sIGRhcyBnaW5nZSBhYmVyIG1hbmNobWFsIHp1IHdlaXQuIFdpY2h0aWcgaW4gZGllc2VtCitadXNhbW1lbmhhbmcgaXN0IGF1Y2gsIGRlbSBBbmZhZW5nZXIgc3BpZWxlcmlzY2ggaW0gVGV4dCwgZHVyY2ggRGV0YWlscworb2RlciBJbmZvcyB2b24gTlBDIGRpZSBTeW50YXhlbiwgd2VubiBzaWUgZGVubiBlaW5tYWwgYWJzZWl0cyBkZXIgc28KK3VlYmxpY2hlbiBLb21tYW5kb3Mgc2luZCwgZWluIHdlbmlnIGluIGRlbiBNdW5kIHp1IGxlZ2VuOgorKFNwaWVsZXIgd2Vpc3MsIGRhc3MgaW4gZGllc2VtIFJhdW0gZWluIFpUIGZ1ZXIgaWhuIGlzdCwgZXMgaGF0IHdhcyBtaXQKK2RlbSBCYXVtIHp1IHR1biwgdm9yIGRlbSBlciBzdGVodCkKKyJ1bnQgYmF1bSIgLT4KKyJEZXIgQmF1bSBpc3QgcmVjaHQgYmVlaW5kcnVja2VuZCB1bmQgaG9jaC4gRGVubm9jaCBrb2VubnRlc3QgRHUgb2huZQorIHdlaXRlcmVzIGF1ZiBpaG4ga2xldHRlcm4uIiAtPgorImtsZXR0ZXIgYXVmIGJhdW0vYmF1bSBob2NoIiAtPgorRXJmb2xnCisKKzkuIEJlbG9obnVuZ2VuCitTaWUgZHVlcmZlbiBydWhpZyBncm9zc3p1ZWdpZyBzZWluOiBaVHMgKFphdWJlcnRyYWVua2UpLCBGUCAoRm9yc2NoZXItCitwdW5rdGUpLCBFSyAoRXJzdGtpbGxzL0tpbGxzdHVwc2UpLCBBUCAoQWJlbnRldWVycHVua3RlL1F1ZXN0cHVua3RlKQordW5kIE1RUCAoTWluaXF1ZXN0cHVua3RlKSBzaW5kIHdvaGwgZG9zaWVydCB1bmQgYWJ3ZWNoc2x1bmdzcmVpY2ggenUKK3ZlcnRlaWxlbiB1bmQgc29sbGVuIGRlbSBTcGllbGVyIGhlbGZlbiwgZGVuIGFuZmFuZ3MgbGFuZ2VuIFdlZyBiaXMKK3p1bSBuYWVjaHN0ZW4gTGV2ZWwgenUgdmVya3Vlcnplbi4KKworV2llIHVlYmVyaGF1cHQgaGlsZnQgZWluZSBndXRlIERva3VtZW50YXRpb24gYXVjaCBlaW5lbSBBbmZhZW5nZXIgdW50ZXIKK2RlbiBNYWdpZXJuLCBzZWxic3Qgc2NobmVsbCBlaW5lIGVpZ2VuZSBSZWZlcmVuenNhbW1sdW5nIGZ1ZXIgZWluZmFjaGUKK0RpbmdlIGluIExQQyB6dSBlcnN0ZWxsZW4uIE1hbiBrb2VubnRlIGFsc28gc2FnZW4sIHdpZSBkZXIgU3BpZWxlciBpbQorQW5mYWVuZ2VyZ2ViaWV0IHdhZWNoc3QgYXVjaCBkZXIgTWFnaWVyLCBkZXIgZXMgZ2VzY2hyaWViZW4gaGF0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVHVlIE1hciAyMSAwMTo0NjozNSAyMDA2IGJ5IEFyawpkaWZmIC0tZ2l0IGEvZG9jL3dpei9hbmdyaWZmIGIvZG9jL3dpei9hbmdyaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZWU3YjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2FuZ3JpZmYKQEAgLTAsMCArMSwxOCBAQAorLS0tLS0tLS1BbmdyZWlmZXIKK0F0dGFjaygpCisJSG9sdCBkaWUgV2FmZmUgZGVzIFNwaWVsZXJzLgorCUJlcmVjaG5ldCBkZW4gQW5ncmlmZnN0eXAgdW5kIGdpYnQgZGllCisJQW5ncmlmZnNtZWxkdW5nIGF1cy4KKworCUF1ZnJ1ZiB2b246CisKKy0tLS0tLS0tVmVydGVpZGlnZXIgICAgIAorRGVmZW5kKCBocCwgdHlwICkKKwlHaWJ0IGRpZSBWZXJ0ZWlkaWd1bmdzbWVsZHVuZyBhdXMuCisJQmVyZWNobmV0IGRpZSBBbnphaGwgZGVyIEhQIGRpZSBhYmdlem9nZW4gd2lyZC4KKworCUF1ZnJ1ZiB2b246CisKK2RvX2RhbWFnZSggaHAgKQorCisJQmVyZWNobmVuIGRlciBIUC4gR2VnZWJlbmVuZmFsbHMgc3RlcmJlbiBldGMuCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2FydGlsbGVyaWUgYi9kb2Mvd2l6L2FydGlsbGVyaWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ5Y2VjNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovYXJ0aWxsZXJpZQpAQCAtMCwwICsxLDYxIEBACitSZWdlbG4gZnVlciBBcnRpbGxlcmllLU9iamVrdGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiBEZWZpbml0aW9uIHZvbiBBcnRpbGxlcmllCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VudGVyIGRlbSBCZWdyaWZmICJBcnRpbGxlcmllIiBmYXNzdCBtYW4gYWxsZSBPYmpla3RlIHp1c2FtbWVuLCBkaWUKK3p1c2FldHpsaWNoIHp1IGRlbiB2b3JoYW5kZW5lbiBHaWxkZW5mYWVoaWdrZWl0ZW4gZHVyY2ggZWluIHZvbQorU3BpZWxlciBpbml0aWllcnRlcyBLb21tYW5kbyBkaXJla3QgU2NoYWRlbiBhbiBlaW5lbSBvZGVyIG1laHJlcmVuCitHZWduZXJuIHZlcnVyc2FjaGVuLgorCitXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4sIHdlbGNoZSBwZXIgS29tbWFuZG8gU2NoYWRlbiB2ZXJ1cnNhY2hlbiAoei4gQi4KK0Vpc3N0YWIsIFJpbmcgdm9tIFNjaGxhbW1kcmFjaGVuKSwgZmFsbGVuIHVudGVyIGRpZXNlCitEZWZpbml0aW9uLiBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4sIGRpZSAidm9uIHNpY2ggYXVzIiAodWVibGljaGVyd2Vpc2UKK3BlciBIaXQtL0RlZmVuZEZ1bmMpIFNjaGFkZW4gdmVydXJzYWNoZW4gKHouIEIuIFRvZGVzZHJhY2hlbnBhbnplciwKK0dvYmxpbnJpbmcpLCBmYWxsZW4gbmljaHQgdW50ZXIgZGllc2UgRGVmaW5pdGlvbiwgc2luZCBhYmVyIG5hdHVlcmxpY2gKK25hY2ggd2llIHZvciBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisKKzIuIEJhc2lzYW5mb3JkZXJ1bmdlbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCitTb2xjaGUgQXJ0aWxsZXJpZSBtdXNzIGZvbGdlbmRlbiBBbmZvcmRlcnVuZ2VuIGdlbnVlZ2VuOgorCisgYS4gQXJ0aWxsZXJpZSBfbXVzc18gUF9BVFRBQ0tfQlVTWSBiZWFjaHRlbiAoc2V0emVuL2FiZnJhZ2VuKS4KKyBiLiBBcnRpbGxlcmllIF9tdXNzXyBiZWkgVmVyd2VuZHVuZyBLb256ZW50cmF0aW9uc3B1bmt0ZSAKKyAgICB2ZXJicmF1Y2hlbi4KKyBjLiBBcnRpbGxlcmllIGRhcmYgbmljaHQgKGJ6dy4gbnVyIGJlZ3Jlbnp0KSBnZWhvcnRldCB3ZXJkZW4KKyAgICBrb2VubmVuLgorIGQuIEFydGlsbGVyaWUgZGFyZiBiZWkgUGFyYWx5c2UgbmljaHQgYW5nZXdlbmRldCB3ZXJkZW4ga29lbm5lbgorICAgIChQX0RJU0FCTEVfQVRUQUNLKS4KKyBlLiBBcnRpbGxlcmllIG11c3MgZHVyY2ggU2V0emVuIGRlciBQcm9wZXJ0eSBQX0lTX0FSVElMTEVSWSAKKyAgICBnZWtlbm56ZWljaG5ldCBzZWluLiAKKyBmLiBBcnRpbGxlcmllLCBkaWUgTXVuaXRpb24gYmVudXR6dCBvZGVyIHNlbGJzdCBNdW5pdGlvbiBpc3QgKHdpZSB6LkIuCisgICAgV3VyZnN0ZXJuZSksIG11c3MgZGFzIFVuaXRvYmpla3QgdW5kIGRlbiBkb3J0aWdlbiBNZWNoYW5pc211cyB6dW0KKyAgICBaZXJmYWxsIHZvbiBPYmpla3RlbiBudXR6ZW4uIERhYmVpIHNpbmQgUF9VTklUX0RFQ0FZX0lOVEVSVkFMIHVuZAorICAgIFBfVU5JVF9ERUNBWV9RVU9UQSBzbyB6dSBzZXR6ZW4sIGRhc3MgZGllIE11bml0aW9uIGVpbmUgSGFsYndlcnRzemVpdAorICAgIHp3aXNjaGVuIDUgdW5kIDEwICBUYWdlbiBoYXQsIGRlciBpaHJlciBWZXJmdWVnYmFya2VpdCBhbmdlbWVzc2VuCisgICAgaXN0LiBEaWVzIGxhZXNzdCBzaWNoIGR1cmNoIGdlZWlnbmV0ZXMgRWluc3RlbGxlbiBkZXMKKyAgICBQcm96ZW50c2F0emVzIHVuZC9vZGVyIGRlciBSZXNldHplaXQgZXJyZWljaGVuLgorCisgICAgQmVpc3BpZWxlOgorICAgIFNldHp0IG1hbiBwPTElIFplcmZhbGwgcHJvIFJlc2V0IGFuLCBkYW5uIG11c3MgZGVyIFJlc2V0CisgICAgZnVlciBlaW5lIEhhbGJ3ZXJ0c3plaXQgdm9uIDUgVGFnZW4gZGFubiAKKyAgICB0PWxuKDAuNSkvbG4oMCw5OSkqNSoyNCozNjAwIHMgZGF1ZXJuLCBkYXMgc2luZCA2MjI0IHMuCisKKyAgICBNb2VjaHRlIG1hbiBsaWViZXIgZGVuIG5vcm1hbGVuIFJlc2V0LCBkZXIgaW0gTWl0dGVsIDQ1IG1pbiwgZC5oLiAxNjAKKyAgICBSZXNldHMgaW4gNSBUYWdlbiBiZXRyYWVndCwgc28gZXJoYWVsdCBtYW4gZm9sZ2VuZGVuIFByb3plbnRzYXR6OgorICAgIHAgPSAxLTAsNV4oMS8xNjApIGQuaC4gY2EuIDAsNDMlLgorCitEZXRhaWxzIHdlcmRlbiBmYWxsd2Vpc2UgZW50c2NoaWVkZW4uCisKKworMy4gSW5rcmFmdHJldGVuCistLS0tLS0tLS0tLS0tLS0KKworRGllc2UgUmVnZWxuIHRyZXRlbiBhbSA1LiBBdWd1c3QgMjAwMyBpbiBLcmFmdC4KK1JldmlzaW9uIGFtIDUuIEFwcmlsIDIwMDgKK1JldmlzaW9uIGFtIDcuIEFwcmlsIDIwMTEKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xldHp0ZSBBZW5kZXJ1bmc6IFNhbSwgIDcuIEFwcmlsIDIwMTEgdm9uIEh1bW5pCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2F1dG9sb2FkIGIvZG9jL3dpei9hdXRvbG9hZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2NkNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9hdXRvbG9hZApAQCAtMCwwICsxLDMyIEBACitBVVRPX0xPQURJTkc6CisJUnVtYXRhIDI2LjA4LjkyCisKKwlERVIgTkVVRSBBVVRPTE9BRC1NRUNIQU5JU01VUworCitGVU5LVElPTkVOOgorCXZvaWQgU2V0UHJvcCggUF9BVVRPTE9BRE9CSiwgbWl4ZWQgd2VydCApOworCW1peGVkIFF1ZXJ5UHJvcCggUF9BVVRPTE9BRE9CSiApOworCitFUkxBRVVURVJVTkc6CisJRXMgZ2lidCBqZXR6dCBlaW5lIFByb3BlcnR5IFBfQVVUT0xPQURPQkosIGRpZSBqZWRlcyBPYmpla3QKKwlzZXR6ZW4ga2Fubi4gSXN0IGRlciBXZXJ0IGRpZXNlciBQcm9wZXJ0eSBuaWNodCAwLCBzbyBnaWx0CisJZGFzIE9iamVrdCBhbHMgQXV0b2xvYWRpbmctT2JqZWt0LiAKKwlXSUNIVElHOiBBdWNoIFdlcnRlIHdpZSAiIiBvZGVyICh7IH0pIHNpbmQgbmljaHQgMC4KKworCU1pdCBkZXIgRnVua3Rpb24gUXVlcnlQcm9wKCBQX0FVVE9MT0FET0JKICkga2FubiBkaWVzZXIgV2VydAorCWFiZ2VmcmFndCB3ZXJkZW4uCisKK0JFTUVSS1VOR0VOOgorCURpZSBQcm9wZXJ0eSBQX0FVVE9MT0FET0JKIHNvbGx0ZSBuaWNodCBtaXQgZGVyCisJUHJvcGVydHkgUF9BVVRPX0xPQUQgdmVyd2VjaHNlbHQgd2VyZGVuLiBEaWVzZSBzcGVpY2hlcnQKKwlkaWUgQXV0b2xvYWQtSW5mb3JtYXRpb25lbiBpbSBTcGllbGVyLgorCisJRGllIFByb3BlcnR5IFBfQVVUT0xPQURPQkoga2FubiBzZWxic3R2ZXJzdGFlbmRsaWNoIGF1Y2ggYWxzCisJQnVpbHQtaW4tUHJvcGVydHkgaW1wbGVtZW50aWVydCB3ZXJkZW4uCisKK0JFSVNQSUVMOgorCUVpbiBlaW5mYWNoZXMgQmVpc3BpZWwgc3RlaHQgaW4gKioqCisJRWluIGxlaXN0dW5nc2ZhZWhpZ2VzIEJlaXNwaWVsIHN0ZWh0IGluIC9vYmovdG9vbHMvbXVzY2hlbC5jCisKK1NJRUhFIEFVQ0g6CisJImRvYy9NRy9wcm9wZXJ0aWVzIgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9iYWxhbmNlIGIvZG9jL3dpei9iYWxhbmNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZWEwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2JhbGFuY2UKQEAgLTAsMCArMSw3OCBAQAorQmV1cnRlaWx1bmcgdW5kIEdlbmVobWlndW5nIHZvbiBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4gaW0gTUcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAKKyAgICBXYXMgYmVkZXV0ZXQgQmFsYW5jZSBpbSBNb3JnZW5ncmF1ZW4/IERpZSBCYWxhbmNlIChiencuIGlociBGZWhsZW4pCisgICAgd2lyZCB2b3IgYWxsZW0gZGFubiB3YWhyZ2Vub21tZW4sIHdlbm4gU3BpZWxlciBzaWNoIGdlbGFuZ3dlaWx0IGR1cmNoCisgICAgR2ViaWV0ZSB6YXBwZW4sIGRpZSB2b3IgendlaSBvZGVyIGRyZWkgSmFocmVuIG5vY2ggYWxzIGFuc3BydWNoc3ZvbGwKKyAgICBnYWx0ZW4sIG9kZXIgd2VubiBlaW4gTWFnaWVyIGZlc3RzdGVsbGVuIG11c3MsIGRhc3Mgc2VpbiBzY2hvZW5lcyAKKyAgICBSaWVzZW5tb25zdGVyIG5pY2h0bWFsIGRhenUga29tbXQsIHNlaW5lIGF1c2dlZmVpbHRlbiBaYXViZXJzcHJ1ZWNoZQorICAgIGFuenV3ZW5kZW4sIHdlaWwgZXMgbmFjaCBkdXJjaHNjaG5pdHRsaWNoIHp3ZWllaW5oYWxiIFJ1bmRlbiBzY2hvbgorICAgIHRvdCBpc3QuIEZlaGxlbnR3aWNrbHVuZ2VuIGRpZXNlciBBcnQgenUgdmVyaGluZGVybiBpc3QgQXVmZ2FiZSBkZXIgCisgICAgQmFsYW5jZS4gU2llIHN0ZWxsdCB1bml2ZXJzZWxsZSBHcmVuendlcnRlIHVuZCBNYXNzdGFlYmUsIGRpZSBhbHMKKyAgICBnZW1laW5zYW1lciBOZW5uZXIgZnVlciBhbGxlIE1hZ2llciBpbiBkaWVzZW0gTXVkIGVpbmUgZ2V3aXNzZSAKKyAgICBBdXNnZXdvZ2VuaGVpdCBnYXJhbnRpZXJlbi4gQW5oYW5kIGRpZXNlciBXZXJ0ZSBrYW5uIGplZGVyIE1hZ2llciBhdWYKKyAgICBkZXIgZWluZW4gU2VpdGUgZWluc2NoYWV0emVuLCB3aWUgYmVnZWhydCBlaW4gbmV1ZXMgT2JqZWt0IHNlaW4gd2lyZCwKKyAgICB1bmQgYXVmIGRlciBhbmRlcmVuIHdlaXNzIGVyIHVuZ2VmYWVociwgd2FzIGF1ZiBzZWluZSBhcm1lbiBNb25zdGVyCisgICAgenVrb21tZW4gd2lyZCwgd2VubiBTcGllbGVyIG1pdCBkZW4gT2JqZWt0ZW4gYW5kZXJlciBNYWdpZXIgYW5ncmVpZmVuLgorICAgIAorICAgIERpZXNlIEF1ZmdhYmUgenUgYmV3YWVsdGlnZW4ga2FubiBqZWRvY2ggaW4gZWluZW0gc28gcmllc2lnZW4gTXVkIGtlaW5lIAorICAgIEluc3RhbnogYWxsZWluIGxlaXN0ZW4uIEVpbiBncm9zc2UgVmVyYW50d29ydHVuZyBsYXN0ZXQgYXVjaCBhdWYgZGVuIAorICAgIFJlZ2lvbnNtYWdpZXJuLCBkaWUgaW5uZXJoYWxiIGlocmVzIFZlcmFudHdvcnR1bmdzYmVyZWljaHMgZGFmdWVyIFNvcmdlCisgICAgdHJhZ2VuIHNvbGx0ZW4sIGRhc3MgYXVzc2VyZ2V3b2VobmxpY2hlIE9iamVrdGUgaW4gR2ViaWV0ZW4gbmljaHQgenUKKyAgICBnZWhhZXVmdCBhdWZ0cmV0ZW4gdW5kIG5pY2h0IHp1IGxlaWNodCB6dSBlcnJlaWNoZW4gc2luZC4KKworICAgIFdpZSBsYWV1ZnQgbnVuIGVpbmUgR2VuZWhtaWd1bmcgZHVyY2ggZGllIEJhbGFuY2UgYWI/IAorICAgIFp1YWxsZXJlcnN0IHNvbGx0ZSBzaWNoIGVpbiBNYWdpZXIgdWViZXIgZGVuIGFrdHVlbGxlbiBTdGFuZCBkZXIgQmFsYW5jZS0KKyAgICByZWdlbG4gaW5mb3JtaWVyZW4uIFp1bSBlaW5lbiB3ZWlzcyBlciBkYW5uIHNvZm9ydCwgd2VsY2hlIElkZWVuIG9obmVoaW4KKyAgICBrZWluZSBDaGFuY2UgYXVmIEdlbmVobWlndW5nIGhhYmVuLCB6dW0gYW5kZXJlbiBpbnNwaXJpZXJlbiB2aWVsbGVpY2h0IAorICAgIHNvZ2FyIGRpZSB6YWhscmVpY2hlbiBIaW53ZWlzZSB1bmQgdGVjaG5pc2NoZW4gRGV0YWlscyBkYXMgZWluIG9kZXIgCisgICAgYW5kZXJlIE9iamVrdC4gQWxzIG5hZWNoc3RlcyBzdGVodCBlaW5lIGtyaXRpc2NoZSBQcnVlZnVuZyBkZXIgZWlnZW5lbgorICAgIElkZWVuIGFuLiBCcmF1Y2h0IGRhcyBNdWQgd2lya2xpY2ggZGVuIDEzMi4gUGFuemVyLCBkZXIgZ2VnZW4gRmV1ZXIKKyAgICBzY2h1ZXR6dD8gR2lidCBlcyBuaWNodCBpcmdlbmR3byBvaG5laGluIHNjaG9uIGVpbmUgV2FmZmUgZGllc2VzIFR5cHMKKyAgICBtaXQgZmFzdCBpZGVudGlzY2hlbiBXZXJ0ZW4/IEFkZGllcnQgc2ljaCBkaWUgV2lya3VuZyBlaW5lcyBnZXBsYW50ZW4KKyAgICBLYW1wZm9iamVrdHMgdmllbGxlaWNodCBpcmdlbmR3aWUgbWl0IHZvcmhhbmRlbmVuIE9iamVrdGVuPyBEaWVzZSB1bmQKKyAgICBhZWhubGljaGUgRnJhZ2VuIGZydWVoIHp1IGtsYWVyZW4ga2FubiBzcGFldGVyIHZpZWwgRnJ1c3QgdmVybWVpZGVuLiBEYXMKKyAgICBCYWxhbmNldGVhbSBrYW5uIGF1Y2ggenUgZGllc2VtIFplaXRwdW5rdCBzY2hvbiBlaW4gQW5zcHJlY2hwYXJ0bmVyIHNlaW4sCisgICAgZGEgc2VpbmUgTWl0Z2xpZWRlciBlaW5lbiBndXRlbiBVZWJlcmJsaWNrIHVlYmVyIGRpZSBtZWlzdGVuIGhlcmF1cy0KKyAgICByYWdlbmRlbiBPYmpla3RlIGltIE11ZCBoYWJlbiB1bmQgZ2VybmUgYWxzIEJlcmF0ZXIgenVyIFZlcmZ1ZWd1bmcgCisgICAgc3RlaGVuLiBEaWUgTWFnaWVyIGRlcyBUZWFtcyBrb2VubmVuIG5hdHVlcmxpY2ggYXVjaCB6dSBwcm9ncmFtbWllci0KKyAgICB0ZWNobmlzY2hlbiBGcmFnZW4gZGVuIGVpbmVuIG9kZXIgYW5kZXJlbiBUaXAgZ2ViZW4uCisKKyAgICBTaW5kIGRpZSBPYmpla3RlIGRhbm4gcHJvZ3JhbW1pZXJ0IHVuZCBpc3QgYXVjaCBkZXIgUmVnaW9uc21hZ2llciBtaXQKKyAgICBpaG5lbiBlaW52ZXJzdGFuZGVuLCB3aXJkIHNjaGxpZXNzbGljaCBkZXIgQW50cmFnIGdlc3RlbGx0LiAoUGVyCisgICAgIm1haWwgYmFsYW5jZSIpLiBEZXIgQW50cmFnIHNvbGx0ZSBmb2xnZW5kZW4gSW5mb3JtYXRpb25lbiBlbnRoYWx0ZW46CisKKyAgICAtIE5hbWUgZGVzIE9iamVrdHMKKyAgICAtIFZvbGxzdGFlbmRpZ2VyIEZpbGVuYW1lCisgICAgLSBBbGxlIHJlbGV2YW50ZW4gV2VydGU6IEFDIGJ6dy4gV0MsIFBfTlJfSEFORFMsIEdld2ljaHQsIFdlcnQsIC4uLgorICAgIC0gRGVmZW5kL0hpdEZ1bmNzLCBpbiBGb3JtIGVpbmVyIHByYWV6aXNlbiBCZXNjaHJlaWJ1bmcgZGVyIAorICAgICAgRnVua3Rpb25zd2Vpc2UgdW5kIGRlcyBXZXJ0ZWJlcmVpY2hzLgorICAgIC0gQWxsZSBzb25zdGlnZW4gSW5mb3JtYXRpb25lbiB1ZWJlciBFaWdlbnNjaGFmdGVuLCBkaWUgZGVuIEthbXBmIAorICAgICAgYmVlaW5mbHVzc2VuIG9kZXIgZGVtIFNwaWVsZXIgdm9uIE51dHplbiBzaW5kCisgICAgLSBGdW5kb3J0IHVuZCBzdWJqZWt0aXZlIEVpbnNjaGFldHp1bmcgZGVzIEF1ZndhbmRzLCB1bSBkaWVzZW4gCisgICAgICBHZWdlbnN0YW5kIHp1IGVyZWljaGVuLgorCisgICAgRGllIEdlbmVobWlndW5nIGVyZm9sZ3QgZGFubiBwZXIgbWFpbCwgZXMgc2VpIGRlbm4gZXMgZ2lidCBiZWdydWVuZGV0ZQorICAgIEVpbndhZW5kZS4gSW4gZGllc2VtIEZhbGwga29tbXQgZGllIEdlbmVobWlndW5nIG1pdCBsZWljaHQgZ2VhZW5kZXJ0ZW4KKyAgICBXZXJ0ZW4gb2RlciBzb2dhciBlaW5lIEFibGVobnVuZy4gSW0gbGV0enRlcmVuIEZhbGwgc3RlaHQgZXMgZGVtIE1hZ2llcgorICAgIG5hdHVlcmxpY2ggZnJlaSwgZGFzIE9iamVrdCB6dSB2ZXJhZW5kZXJuIHVuZCBuZXUgenUgYmVhbnRyYWdlbi4KKyAgICBOb3JtYWxlcndlaXNlIGVyZ2lidCBzaWNoIGRhbm4gYXVjaCBzY2huZWxsIGltIHBlcnNvZW5saWNoZW4gR2VzcHJhZWNoCisgICAgbWl0IE1pdGdsaWVkZXJuIGRlciBCYWxhbmNlLCB3byBkYXMgUHJvYmxlbSBnZW5hdSBsaWVndCB1bmQgd2VsY2hlIAorICAgIEFsdGVybmF0aXZlbiBlcyBnaWJ0LiAKKworICAgIEFuenVtZXJrZW4gYmxlaWJ0IG5vY2gsIGRhc3MgT2JqZWt0ZSwgZGllIG5hY2ggZGVyIEdlbmVobWlndW5nIG5vY2ggaW4KKyAgICBpcmdlbmRlaW5lciBXZWlzZSBwb3NpdGl2IHZlcmFlbmRlcnQgd2VyZGVuLCBuYXR1ZXJsaWNoIG5ldSBnZW5laG1pZ3QKKyAgICB3ZXJkZW4gbXVlc3Nlbi4gQmVpIGtsZWluZXJlbiBBZW5kZXJ1bmdlbiAoR2V3aWNodCBvLmFlLikgcmVpY2h0CisgICAgdW50ZXIgVW1zdGFlbmRlbiBlaW5lIGluZm9ybWVsbGUgQW5mcmFnZSBiZWltIEJhbGFuY2V0ZWFtLgorCisgU0lFSEUgQVVDSAorCisgICAgIGJhbGFuY2VhbnRyYWcsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywgbnBjcywgb2JqZWN0cywKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIHJlc2lzdGVuemVuLCBrYW1wZm9iamVrdGUsIGdyZW56d2VydGUsCisgICAgIG5hY2h0ZWlsZQorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExFVFpURSBBRU5ERVJVTkc6CisgICAgU29uLCAxOC4xMC4yMDA1LCAxODo1NDowMCB2b24gTWlyaWwKZGlmZiAtLWdpdCBhL2RvYy93aXovYmFsYW5jZWFudHJhZyBiL2RvYy93aXovYmFsYW5jZWFudHJhZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTI0NjQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9iYWxhbmNlYW50cmFnCkBAIC0wLDAgKzEsMTMzIEBACitIaWxmZSB6dSBCYWxhbmNlYW50cmFlZ2VuCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1VtIGRpZSBBcmJlaXQgZGVyIEJhbGFuY2UgenUgZXJsZWljaHRlcm4gdW5kIGRhbWl0IGRpZSBXYXJ0ZXplaXQgZnVlciBkaWUKK01hZ2llciB6dSB2ZXJrdWVyemVuLCBnaWJ0IGVzIGVpbmlnZSBEaW5nZSB6dSBiZWFjaHRlbi4gRGFzIEdhbnplIGxpZXN0IHNpY2gKK2F1ZiBkZW4gZXJzdGVuIEJsaWNrIHNlaHIgYnVlcm9rcmF0aXNjaCwgaXN0IGVzIGFiZXIgbmljaHQuIERpZSBBbmxlaXR1bmcgc29sbAorbnVyIHNvIGF1c2Z1ZWhybGljaCB3aWUgbW9lZ2xpY2ggc2VpbiwgdW0gTWlzc3ZlcnN0YWVuZG5pc3NlbiB2b3J6dWJldWdlbi4KK1p1ZXJzdCBlaW5tYWwgZ2lidCBlcyBncnVuZHNhZXR6bGljaCB6d2VpIEFydGVuIHZvbiBBbnRyYWVnZW46CisKKzEuIEVpbmUgVm9yYWJhbmZyYWdlCisKK1ZpZWxlIE1hZ2llciBzY2hldWVuIGRpZSBBcmJlaXQsIGVpbiBPYmpla3QgenUgcHJvZ3JhbW1pZXJlbiwgZGFzIGFuc2NobGllc3NlbmQKK25pY2h0IHZvbiBkZXIgQmFsYW5jZSBnZW5laG1pZ3Qgd2lyZC4gRGFzIGlzdCB2ZXJzdGFlbmRsaWNoIHVuZCBWb3JhYmFuZnJhZ2VuCit3ZXJkZW4gbmljaHQgbWluZGVyIGJlYWNodGV0IGFscyBrb25rcmV0ZSBBbnRyYWVnZS4gVHJvdHpkZW0gc29sbHRlIG1hbiBzbyBlaW5lCitBbmZyYWdlIHNvcmdmYWVsdGlnIGZvcm11bGllcmVuLiBTaWUgc29sbHRlIGRhcyBQcm9ibGVtIGtsYXIgdW1yZWlzc2VuIHVuZAorbW9lZ2xpY2hzdCBlaW5kZXV0aWcgc2Vpbi4gQXVjaCBlaW4gSGlud2VpcyBkYXJhdWYsIHdvIGRlciBNYWdpZXIgUHJvYmxlbWUgbWl0CitkZXIgQmFsYW5jaWVydW5nIGVyd2FydGV0IHVuZCBpbiB3ZWxjaGVtIFdlcnRlYmVyZWljaCBldmVudHVlbGxlIFphaGxlbgorZXJ3YXJ0ZXQgd2VyZGVuLCBzb2xsdGUgbmljaHQgdmVyZ2Vzc2VuIHdlcmRlbi4KKworRWluZSBBbnR3b3J0IGF1ZiBlaW5lIFZvcmFiYW5mcmFnZSBpc3QgYWxsZXJkaW5ncyBrZWluZSBHZW5laG1pZ3VuZyBlaW5lcworT2JqZWt0cy4gRXMgaXN0IGxlZGlnbGljaCBhbHMgSW5mb3JtYXRpb24genUgc2VoZW4sIG9iIGRpZSBCYWxhbmNlbWl0Z2xpZWRlciAKK3NvIGVpbiBPYmpla3QgdWViZXJoYXVwdCBmdWVyIGdlbmVobWlndW5nZmFlaGlnIGhhbHRlbiwgZ2VnZWJlbmVuZmFsbHMgbWl0CithbmdlcGFzc3RlbiBXZXJ0ZW4gb2RlciBsZWljaHQgdmVyYWVuZGVydGVuIEVpZ2Vuc2NoYWZ0ZW4uIE1pdCBlaW5lciBBbnR3b3J0CithdWYgZWluZSBWb3JhYmFuZnJhZ2Ugd29sbGVuIHdpciBkZW0gV3Vuc2NoIGRlciBNYWdpZXIgZW50c3ByZWNoZW4sIHp1CitlcmZhaHJlbiwgb2IgZXMgc2ljaCBsb2hudCwgQXJiZWl0IGluIGRhcyBPYmpla3QgenUgaW52ZXN0aWVyZW4sIGJpbmRlbmQgaXN0CitzbyBlaW5lIEFudHdvcnQgYWxsZXJkaW5ncyBuaWNodC4KKworMi4gRWluIEFudHJhZworCitIaWVyIGdlaHQgZXMgdW0gZGllIEZlc3RzY2hyZWlidW5nIGFsbGVyIGthbXBmcmVsZXZhbnRlbiBFaWdlbnNjaGFmdGVuLAordHJvdHpkZW0gc29sbHRlbiBhbGxlIEVpZ2Vuc2NoYWZ0ZW4sIGRpZSBFaW5mbHVzcyBhdWYgZGFzIFNwaWVsZ2VzY2hlaGVuIGhhYmVuLAorbWl0IGFuZ2VnZWJlbiB3ZXJkZW4sIGF1Y2ggd2VubiBkaWUgT2JqZWt0YmFsYW5jZSBuaWNodCBkaXJla3QgZnVlciBkaWVzZQorRWlnZW5zY2hhZnQgenVzdGFlbmRpZyBpc3QuIEVpbmUgV2FmZmUsIGRpZSBkZW4gVHJhZWdlciBhYiB1bmQgenUgaGVpbHQsCittdXNzIGF1Y2ggYmVpIGRlciBIZWlsdW5nc2JhbGFuY2UgYmVhbnRyYWd0IHdlcmRlbiwgdHJvdHpkZW0gZGFyZiBkaWVzZQorRWlnZW5zY2hhZnQgbmljaHQgdm9yIGRlciBPYmpla3RiYWxhbmNlIHZlcnNjaHdpZWdlbiB3ZXJkZW4uIEFsbGUgV2VydGUKK3NvbGx0ZW4gdGFiZWxsYXJpc2NoIGF1ZmdlZnVlaHJ0IHdlcmRlbi4gRWluZSBVZWJlcnNpY2h0LCB1ZWJlciBkaWUgdm9uIGRlcgorQmFsYW5jZSBiZW5vZXRpZ3RlbiBXZXJ0ZToKKworS3VyemJlc2NocmVpYnVuZzogICAgICAgIFBfU0hPUlQKK1BmYWRhbmdhYmU6ICAgICAgICAgICAgICBtb21lbnRhbiB1bmQgbmFjaCBBbnNjaGx1c3MKK1R5cCBkZXMgT2JqZWt0OiAgICAgICAgICBTY2h3ZXJ0LCBIb3NlLCBSaW5nLi4uCitXYWZmZW4vUnVlc3R1bmdza2xhc3NlOiAgUF9XQywgUF9BQworU2NoYWRlbnNhcnQ6ICAgICAgICAgICAgIFBfREFNX1RZUEUKK0Jlbm9ldGlndGUgSGFlbmRlOiAgICAgICBQX05SX0hBTkRTCitXZXJ0OiAgICAgICAgICAgICAgICAgICAgUF9WQUxVRQorR2V3aWNodDogICAgICAgICAgICAgICAgIFBfV0VJR0hUCitIaXRGdW5jOiAgICAgICAgICAgICAgICAgTWl0IEVybGFldXRlcnVuZyBkZXIgVW1zdGFlbmRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEJlZ3J1ZW5kdW5nIHVuZCBXZXJ0ZS9XYWhyc2NoZWlubGljaGtlaXRlbgorQW5kZXJlIEJvbmk6ICAgICAgICAgICAgIEthZW1wZmVyLCBaYXViZXJlciwgSGVpbHVuZ2VuLCBSZXNpc3RlbnplbgorICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGwgbWl0IHJvbGxlbnNwLiBCZWdydWVuZHVuZworUmVzdHJpa3Rpb25lbjogICAgICAgICAgIFBfUkVTVFJJQ1RJT05TLCBQYXJhbHlzZSwgWmVpdGJlc2NocmFlbmt1bmdlbiAKKworRWluZSBCZWdydWVuZHVuZyBzb2xsdGUgZGllIEVpZ2Vuc2NoYWZ0IHJvbGxlbnNwaWVsdGVjaG5pc2NoIGVpbmJldHRlbiB1bmQKK25pY2h0IGJlc2NocmVpYmVuLCB3YXJ1bSBkYXMgTUcgZGllc2UgRWlnZW5zY2hhZnQgaW4gZWluZW0gT2JqZWt0IHVuYmVkaW5ndAorbm9jaCBicmF1Y2h0LiBXZWl0ZXJoaW4gc29sbHRlIG1hbiBkaWUgRXJyZWljaGJhcmtlaXQga3VyeiB1bXJlaXNzZW4gdW5kIGRpZQorSGFldWZpZ2tlaXQsIG1pdCBkZXIgZGFzIE9iamVrdCBhbiBTcGllbGVyIGdlbGFuZ3QuIEF1Y2ggaGllcmJlaSBnaWx0LCBkYXNzCittYW4gZGFzIE9iamVrdCBtb2VnbGljaHN0IGt1cnosIGFiZXIgZWluZGV1dGlnIGJlc2NocmVpYnQuCisKK0RpZSBHZW5laG1pZ3VuZyBvZGVyIEFibGVobnVuZyBlaW5lcyBBbnRyYWdzIGR1cmNoIGRpZSBPYmpla3RiYWxhbmNlIGlzdAorYmluZGVuZC4gRWlnZW5zY2hhZnRlbiwgZGllIGluIGRlciBBbnR3b3J0IGF1ZmdlZnVlaHJ0IHNpbmQsIHNpbmQKK2Zlc3RnZXNjaHJpZWJlbiB1bmQgYmVkdWVyZmVuIGJlaSBBZW5kZXJ1bmcgZWluZXMgTmV1YW50cmFnZXMgKGRhcyBnZWh0IGluCitkZXIgUmVnZWwgcmVjaHQgc2NobmVsbCwgd2VubiBkZXIgTWFnaWVyIG5pY2h0IGRhcyBPYmpla3Qga29tcGxldHQgdW1rcmVtcGVsdCkuCitTb2xsdGVuIG5pY2h0IGZlc3RnZXNjaHJpZWJlbmUgRWlnZW5zY2hhZnRlbiwgZGllIGRhcyBTcGllbGdlc2NoZWhlbgorYmVlaW5mbHVzc2VuIChkaWUgZXMgZWlnZW50bGljaCBuaWNodCBnZWJlbiBzb2xsdGUpLCBnZWFlbmRlcnQgd2VyZGVuLCBtdXNzIGRpZQorQmFsYW5jZSBpbmZvcm1pZXJ0IHdlcmRlbi4gQmVpIGplZ2xpY2hlbSBNYWlsdmVya2VociB6dSBlaW5lbSBPYmpla3QsIHNvbGx0ZQorZGllIGJ0b3AgTnVtbWVyIGFuZ2VnZWJlbiB3ZXJkZW4sIGRpZSBpbiBkZXIgZXJzdGVuIE1haWwgenUgZGVtIE9iamVrdAorYW5nZWdlYmVuIHNlaW4gc29sbHRlLiBJc3QgZGllcyBuaWNodCBkZXIgRmFsbCwgZXJmcmFnZSBkaWVzZSBOdW1tZXIgYml0dGUgYmVpCitlaW5lbSBkZXIgVGVhbW1pdGdsaWVkZXIuIE5hY2ggR2VuZWhtaWd1bmcgZGVzIE9iamVrdGVzLCBzb2xsdGUgZGllc2UgTnVtbWVyCithdWNoIGluIGRlbiBLb3BmIGRlciBEYXRlaShlbikgZ2VzY2hyaWViZW4gd2VyZGVuLgorCitCZWkgZWluZW0gQW50cmFnIGtvbW10IGVzIGltbWVyIHdpZWRlciB6dSBNaXN2ZXJzdGFlbmRuaXNzZW4gb2RlcgorWndlaWRldXRpZ2tlaXRlbi4gRGFoZXIgaXN0IGVzIGRpZSBSZWdlbCwgZGFzcyBub2NoIG1hbCBuYWNoZ2VmcmFndCB3aXJkLAord2llIGRlbm4gZ2VuYXUgZXR3YXMgYWJsYXVmZW4gb2RlciBpbXBsZW1lbnRpZXJ0IHdlcmRlbiBzb2xsLiBFaW5lIHNjaG5lbGxlCitCZWFudHdvcnR1bmcgZGllc2VyIEZyYWdlbiBiZXNjaGxldW5pZ3QgbmF0dWVybGljaCBhdWNoIGRlbgorR2VuZWhtaWd1bmdzcHJvemVzcy4gTWlzc2ZhbGxlbiBkZW0gQmFsYW5jZXRlYW0gZWluemVsbmUgRWlnZW5zY2hhZnRlbiwKK0ltcGxlbWVudGllcnVuZ2VuIG9kZXIgV2VydGUsIHdlcmRlbiBoYWV1ZmlnIFZvcnNjaGxhZWdlIGdlbWFjaHQsIGRpZSBkaWUKK0FremVwdGFueiBlaW5lcyBPYmpla3RlcyBkdXJjaCBkaWUgQmFsYW5jZSBlbnRzY2hlaWRlbmQgdmVyYmVzc2Vybi4gRGllCitNaXRnbGllZGVyIGJlbXVlaGVuIHNpY2gsIGRlbiBHZW5laG1pZ3VuZ3Nwcm96ZXNzIHNvIHJlaWJ1bmdzbG9zIHVuZAora29uZmxpa3Rhcm0gd2llIG1vZWdsaWNoIGFibGF1ZmVuIHp1IGxhc3Nlbi4gU29sY2hlIEFlbmRlcnVuZ3N2b3JzY2hsYWdlIHNpbmQKK3dlZGVyIEJlbGVocnVuZ2VuIG5vY2ggYm9lc2UgZ2VtZWludCwgc29uZGVybiBzb2xsZW4gZGF6dSBkaWVuZW4gZGllCitCYWxhbmNpZXJ1bmcgenUgdmVyZWluZmFjaGVuLCB6dSBiZXNjaGxldW5pZ2VuIHVuZCBCZWRlbmtlbiB2b24KK0JhbGFuY2VtaXRnbGllZGVybiBlbnRnZWdlbnp1a29tbWVuLgorCitadW0gU2NobHVzcyBub2NoIGVpbiBBbnRyYWcsIHdpZSBlciBhdXNzaWVoZW4ga29lbm50ZToKKworQW50cmFnIGZ1ZXIgZWluIFp3ZWloYW5kc2Nod2VydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lOiBEZXIgUGVyZm9yYXRvcgorUGZhZDogL2QvcmVnaW9uL21hZ2llci9nZWJpZXQvb2JqL3BlcmZvcmF0b3IuYworICAgICAgL2QvcmVnaW9uL21hZ2llci9nZWJpZXQvb2JqL2xvY2guYworUF9XRUFQT05fVFlQRTogIFdUX1NXT1JECitQX1dDOiAgICAgICAgICAgMjAwCitQX05SX0hBTkRTOiAgICAgMgorUF9WQUxVRTogICAgICAgIDE1MDAwCitQX1dFSUdIVDogICAgICAgMTUwMAorUF9EQU1fVFlQRTogICAgICh7RFRfUElFUkNFLCBEVF9VTkhPTFl9KQorSGl0RnVuYzogICAgICAgIHVudGVyIFVtc3RhZW5kZW4gcmFuZG9tKDUwKQorS19CUkFXTElOR19XQzogIDI1CitLX0NSSVRJQ0FMX0hJVDogODAKKworUHNldWRvLVVuaXF1ZTogRXMgZ2lidCAxMCBTdHVlY2ssIHdpcmQgZWluIEVsZnRlcyBnZWJyYXVjaHQsIHdpcmQKK2RhcyBtaXQgZGVyIGFlbHRlc3RlbiBDbG9uZXplaXQgemVyc3RvZXJ0LgorCitSZXN0cmlrdGlvbmVuOiBNaW5pUXVlc3QsIFNlaGVyLCBCZXRlaWxpZ3VuZyBiZWltIEVybWV0emVsbgorCitCZXNjaHJlaWJ1bmc6IERlciBQZXJmb3JhdG9yIHBlcmZvcmllcnQgZGVuIEdlZ25lci4gSXN0IG5vY2gga2VpbiBMb2NoCitpbiBkZW0gR2VnbmVyLCB3aXJkIGVpbnMgcmVpbmdlcGlla3QgdW5kIG1hY2h0IGRhYmVpIHp1c2FldHpsaWNoIHJhbmRvbSg1MCkKK1NjaGFkZW4uIERhbmFjaCBpc3QgZWluIExvY2ggaW0gR2VnbmVyIHVuZCBlciB2ZXJsaWVydCBqZWRlIFJ1bmRlIDEwICsKK3JhbmRvbSgxMCkgSFAgZHVyY2ggQmx1dHZlcmx1c3QgcGVyIHJlZHVjZV9oaXRfcG9pbnRzKCkgZnVlciAxMCBSdW5kZW4uCitJc3QgZGVyIFRyYWVnZXIgZGVzIFNjaHdlcnRzIG5vY2ggaW0gUmF1bSwgYmVrb21tdCBlciBkaWVzZW4gU2NoYWRlbgorZ3V0Z2VzY2hyaWViZW4sIHdlaWwgZGFzIFNjaHdlcnQgZGFzIEJsdXQgdHJpbmt0LiBJc3QgZGFzIExvY2ggd2VnLCBnaWJ0IGVzCitrZWluIHdlaXRlcmVzLgorCitEYXMgU2Nod2VydCBoYXQgZWluIHNjaHdlcmVzLCBtaXQgRG9ybmVuIHZlcnNlaGVuZXMgSGVmdCAoQlJBV0xJTkdfV0MpIHVuZAoraXN0IHJhc2llcm1lc3NlcnNjaGFyZiwgc28gZGFzcyBlcyBzaWNoIGZ1ZXIgZWluZW4gVG9kZXNzdG9zcyBndXQgZWlnbmV0LgorRGFzIFNjaHdlcnQgaGF0IGVpbmVuIEZsdWNoLCBkZXIgZXMgYmx1dGR1cnN0aWcgbWFjaHQgdW5kIERUX1VOSE9MWSBlcmtsYWVydC4KKworVW0gZGFzIFNjaHdlcnQgenUgYmVrb21tZW4sIGJyYXVjaHQgbWFuIGVpbmUgTWluaXF1ZXN0LCBkaWUgY2EgMjAgQVAgZ2ViZW4KK3d1ZXJkZS4gQW0gRW5kZSBrb21tdCBtYW4gYW4gZWluZW4gRW5kZ2VnbmVyLCBkZW4gbWFuIGltIFRlYW0gaGF1ZW4gbXVzcywKK2FsbGUgTWl0Z2xpZWRlciBtdWVzc2VuIGRpZSBNaW5pcXVlc3QgZ2VyYWRlIG1hY2hlbi4gWnVlY2tlbiBrYW5uIGRhcyBTY2h3ZXJ0CitudXIgamVtYW5kLCBkZXIgZGllIE1pbmlxdWVzdCBzY2hvbiBoYXQgdW5kIG1pbmRlc3RlbnMgMjAlIGRlcyBTY2hhZGVucyBnZW1hY2h0CitoYXQuIFZvbiBkZW0gU2Nod2VydCBnaWJ0IGVzIGltbWVyIG51ciAxMCBTdHVlY2ssIGRhcyBhZWx0ZXN0ZSB3aXJkIGJlaW0KK2Nsb25lbiBkZXMgTlBDIHplcnN0b2VydCB1bmQgZWluIE5ldWVzIGVyc2NoYWZmZW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBTSUVIRSBBVUNICisKKyBydWVzdHVuZ2VuLCB3YWZmZW4sIGZlcm53YWZmZW4sIHVuaXF1ZXMsIG5wY3MsIG9iamVjdHMsIGJhbGFuY2UKKyBhdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbiwgcmVzaXN0ZW56ZW4sIGthbXBmb2JqZWt0ZSwgZ3Jlbnp3ZXJ0ZSwgbmFjaHRlaWxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2xldHplIEFlbmRlcnVuZzogMTguMTAuMjAwNSAyMzo0MSAtIE1pcmlsCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2JlZm9lcmRlcnVuZ2VuIGIvZG9jL3dpei9iZWZvZXJkZXJ1bmdlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjgwYzA4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9iZWZvZXJkZXJ1bmdlbgpAQCAtMCwwICsxLDY2IEBACitFaW5lIGtsZWluZSBVZWJlcnNpY2h0IHVlYmVyIGRpZSBCZWZvZXJkZXJ1bmdzcG9saXRpayBpbSBNRworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIExldmVsIDEgLT4gMTU6CisgICAgIFdBTk46CisgICAgICAgIE1hbiBtdXNzIFNlaGVyIHNlaW4uIChzLiBhdWNoICJoaWxmZSBtYWdpZXIiKQorICAgICBXRVI6CisgICAgICAgIDI2KyAoc2llaGUgYXVjaCAiaGlsZmUgdmVydHJhZyIpCisgICAgIFJFQ0hURToKKyAgICAgICAgRWluZ2VzY2hyYWVua3RlIExlc2VyZWNodGUgYXVmIGRlciBMaWIuCisKKyBMZXZlbCAxNSAtPiAyMDoKKyAgICAgV0FOTjoKKyAgICAgICAgTWluZGVzdGVucyBlaW5lIFdvY2hlIHNlaXQgZGVtIEFuc3RpZWcgYXVmIDE1LCBkYW1pdAorICAgICAgICBFaW5zcHJ1ZWNoZSBnZWdlbiBkZW4gQ2hhcmFrdGVyIG5pY2h0IHVlYmVyZ2FuZ2VuIHdlcmRlbi4KKyAgICAgICAgS29uemVwdCBmdWVyIEdTCisgICAgIFdFUjoKKyAgICAgICAgUHJpbnppcGllbGwgNjYrCisgICAgICAgIE5vcm1hbGVyd2Vpc2UgYWJlciBFTSBHZXNlbGxlbnN0dWVja2UgdW5kIFpvb2sKKyAgICAgUkVDSFRFOgorICAgICAgICBMZXNlcmVjaHRlIGF1ZiBhbGxnZW1laW5lIFZlcnplaWNobmlzc2UsIGVpZ2VuZXMgVmVyemVpY2huaXMsIENsb25lbi4KKworIF9BbHRlcm5hdGl2XyBnaWJ0IGVzIHdlaXRlcmUgTW9lZ2xpY2hrZWl0OgorIExldmVsIDAgLT4gMjA6CisgICAgIFdBTk46CisgICAgICAgIE1hbiBtdXNzIGVpbmVuIFNlaGVyIGFscyBFcnN0aWUgdW5kIGVpbiB2b24gZGVuIEVNcyBnZW5laG1pZ3RlcworICAgICAgICBLb256ZXB0IGZ1ZXIgZWluIEdTIGhhYmVuLiBEZXN3ZWl0ZXJlbiB2ZXJwZmxpY2h0ZXQgbWFuIHNpY2gsIGRhcworICAgICAgICBHUyBpbm5lcmhhbGIgdm9uIDYgTW9uYXRlbiBmZXJ0aWd6dXN0ZWxsZW4uIChzLiAiaGlsZmUgbWFnaWVyIikKKyAgICAgV0VSOgorICAgICAgICBFTXMgKHNpZWhlIGF1Y2ggImhpbGZlIHZlcnRyYWciKQorICAgICBSRUNIVEU6CisgICAgICAgIEVpbmdlc2NocmFlbmt0ZSBMZXNlcmVjaHRlIGF1ZiBkZXIgTGliLgorCisKKyBMZXZlbCAyMCAtPiAyMToKKyAgICAgV0FOTjoKKyAgICAgICAgbmFjaCBHUy1BYm5haG1lCisgICAgIFdFUjoKKyAgICAgICAgRU0gZnVlciBHZXNlbGxlbnN0dWVja2UuCisgICAgIFJFQ0hURToKKyAgICAgICAgTm9ybWFsZSBMZXNlcmVjaHRlLgorCisgTGV2ZWwgMjEgLT4gMjU6CisgICAgIFdBTk46CisgICAgICAgIE1hZ2llciBoYXQgZXR3YXMgZnVlciBlaW5lIFJlZ2lvbiBnZXByb2dndCwgd2FzIGFuZ2VzY2hsb3NzZW4KKyAgICAgICAgd3VyZGUvd2lyZC4KKyAgICAgV0VSOgorICAgICAgICA0NQorICAgICBSRUNIVEU6CisgICAgICAgIFNjaHJlaWJyZWNodGUgaW4gZGVyIERvbWFpbi4gVmVyZ2FiZSBkdXJjaCB6dXN0YWVuZGlnZW4gUk0uCisKKyBMZXZlbCAyNSAtPiAyNis6CisgICAgIFdBTk46CisgICAgICAgIE1hZ2llciB3aXJkIGZ1ZXIgZmFlaGlnIHVuZCBzZWxic3RzdGFlbmRpZyBnZWhhbHRlbi4KKyAgICAgV0VSOgorICAgICAgICA0NQorICAgICBSRUNIVEU6CisgICAgICAgIEthbm4gbnVuIHNlbGJzdCBTcGllbGVyIHNwb25zb3Jlbi4KKyAKKyBWb3JzaWNodDogZGllc2VzIERva3VtZW50IGlzdCBpbSBzdGV0aWdlbiBXYW5kZWwgdW5kIHN0ZWxsdCBudXIgZGllCisgYWxsZ2VtZWluZSBQb2xpdGlrIGRhciAtIHNpY2ggZHJhdWYgYmVydWZlbiBnaWx0IG5pY2h0LgorCitTSUVIRSBBVUNIOgorICAgICBlcnptYWdpZXIsIGJhbGFuY2UKKworMjcuMTAuMjAwOSwgWmVzc3RyYQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy93aXovYmVuZW5udW5nIGIvZG9jL3dpei9iZW5lbm51bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU5NGViYwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovYmVuZW5udW5nCkBAIC0wLDAgKzEsMTU4IEBACitBVVRPUiAgIE1HLCBkZW4gMjIuMDguOTIsIERvbiBSdW1hdGEKKwlUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgTW9yZ2VuZ3JhdWVuLU11ZGxpYiBmcm9tIEpvZiBhbmQgUnVtYXRhCisKK1ZFUlNJT04gMS4xCisKK0FLVFVBTElTSUVSVDogTUcsIGRlbiAxNC4xMC45MywgQ2hyaXMKK1VFQkVSQVJCRUlURVQ6IGFtIDI0LjA4Ljk0IHZvbiBWaXBlcgorCitUSEVNQSAgIEJFTkVOTlVORyBWT04gT0JKRUtURU4gSU0gTW9yZ2VuR3JhdWVuCisKK0lOSEFMVDoKKwlJLiAgICAgIEVpbmxlaXR1bmcKKwlJSS4gICAgIEZ1bmt0aW9uZW4sIGRpZSBhbGxlIE9iamVrdGUgYmVzaXR6ZW4gbXVlc3NlbgorCUlJSS4gICAgVW50ZXJzdHVldHp1bmcgZGVyIEZ1bmt0aW9uZW4gZHVyY2ggZGllIE1HX211ZGxpYgorCUlWLiAgICAgQmVuZW5udW5nIHZvbiBSYWV1bWVuCisJVi4gICAgICBCZW5lbm51bmcgdm9uIE1vbnN0ZXJuCisKK0kuICAgICAgRUlOTEVJVFVORworCisJSmVkZXMgT2JqZWt0IGluIGRlciBNdWRsaWIgbXVzcyBhdWYgZm9sZ2VuZGUgV2Vpc2VuIGlkZW50aWZpemllcnQKKwl3ZXJkZW4ga29lbm5lbjoKKworCTEuKSAgICAgRXMgbXVzcyBlaW5lbiBOYW1lbiBoYWJlbiwgZGVyIGlubmVyaGFsYiBlaW5lcyBTYXR6ZXMgZGFzCisJCU9iamVrdCBiZXplaWNobmVuIGthbm4uCisKKwkyLikgICAgIEVzIG11c3MgZWluZSBLdXJ6YmVzY2hyZWlidW5nIGJlc2l0emVuLgorCisJMy4pICAgICBFcyBtdXNzIGVpbmUgYXVzZnVlaHJsaWNoZSBCZXNjaHJlaWJ1bmcgYmVzaXR6ZW4uCisKKwk0LikgICAgIEVzIG11c3MgZWluZSBNZW5nZSB2b24gU3lub255bWVuIGtlbm5lbiwgbWl0IGRlbmVuIGVpbgorCQlTcGllbGVyIGRhcyBPYmpla3QgImFuc3ByZWNoZW4iIGthbm4uCisKK0lJLiAgICAgRlVOS1RJT05FTiwgRElFIEFMTEUgT0JKRUtURSBCRVNJVFpFTiBNVUVTU0VOCisKKwlKZWRlcyBPYmpla3QgaW0gTW9yZ2VuR3JhdWVuIHNvbGx0ZSBmb2xnZW5kZSBGdW5rdGlvbmVuIAorCWltcGxlbWVudGllcnQgaGFiZW46CisKKwkxLikgICAgIG5hbWUoIGZhbGwsIGRlbSApCisKKwlEaWVzZSBGdW5rdGlvbiBzb2xsIGRlbiBOYW1lbiBkZXMgT2JqZWt0ZXMgaW0gamV3ZWlsaWdlbgorCUZhbGwgbWl0IEFydGlrZWwgKHdlbm4gZXMgZWluZW4gYmVzaXR6dCkgenVydWVja2dlYmVuLCBzbworCWRhc3MgZGVyIFJ1ZWNrZ2FiZXdlcnQgaW4gZWluZW4gU2F0eiBlaW5nZWFyYmVpdGV0IHdlcmRlbgorCWthbm4uCisKKwkiZmFsbCIgZGllbnQgenVyIERla2xpbmF0aW9uIGRlcyBPYmpla3RuYW1lbnMuCisKKwkiZGVtIiBiZXN0aW1tdCwgd2VsY2hlIEFydGlrZWwgYmVudXR6dCB3ZXJkZW4gc29sbGVuLgorCU1vZWdsaWNoZSBXZXJ0ZSBmdWVyICJkZW0iOgorCisJMCAgICAgICBCZW51dHplIHVuYmVzdGltbXRlIEFydGlrZWwuCisJCisJMSAgICAgICBCZW51dHplIGJlc3RpbW10ZSBBcnRpa2VsLgorCQorCTIgICAgICAgQmVudXR6ZSBiZXN0aW1tdGUgQXJ0aWtlbCwgd2VubiBzaWNoIG1pdCBkZW0gT2JqZWt0CisJCWtlaW4gZ2xlaWNoYXJ0aWdlcyBPYmpla3QgaW0gc2VsYmVuIFJhdW0gYmVmaW5kZXQsCisJCXNvbnN0IGJlbnV0emUgZWluZW4gdW5iZXN0aW1tdGVuLgorCisJCVN0YXR0IGRlciAyIGthbm4gYXVjaCBlaW4gU3RyaW5nIHVlYmVyZ2ViZW4gd2VyZGVuLgorCQlJbiBkaWVzZW0gRmFsbCB3aXJkIGdldGVzdGV0LCBvYiBzaWNoIGVpbiBPYmpla3QgbWl0CisJCWRlbSBTdHJpbmcgYWxzIGlkIGltIHNlbGJlbiBSYXVtIGJlZmluZGV0LgorCisJMi4pICAgICBzaG9ydCgpCisKKwlEaWVzZSBGdW5rdGlvbiBsaWVmZXJ0IGVpbmUgQmVzY2hyZWlidW5nLCBkaWUgYXVzZ2VnZWJlbgorCXdpcmQsIHdlbm4gZGVyIFJhdW0sIGluIGRlbSBkYXMgT2JqZWt0IHNpY2ggYmVmaW5kZXQsCisJYmV0cmFjaHRldCB3aXJkLgorCisJMy4pICAgICBsb25nKCkKKworCURpZXNlIEZ1bmt0aW9uIGxpZWZlcnQgZWluZSBCZXNjaHJlaWJ1bmcsIGRpZSBhdXNnZWdlYmVuCisJd2lyZCwgd2VubiBkYXMgT2JqZWt0IGFuZ2VzY2hhdXQgd2lyZC4gSW0gVW50ZXJzY2hpZWQgenVyCisJMi40LjUgTXVkbGliIHdpcmQgZGllIEJlc2NocmVpYnVuZyBqZWRvY2ggbmljaHQgYXVzZ2VnZWJlbiwKKwlzb25kZXJuIGFscyByZXR1cm4tV2VydCB6dXJ1ZWNrZ2VnZWJlbi4KKworCTQuKSAgICAgaWQoIHN0ciApCisKKwlEaWVzZSBGdW5rdGlvbiBzb2xsIDEgenVydWVja2dlYmVuLCB3ZW5uIHN0ciBlaW5lIFplaWNoZW4tCisJZm9sZ2UgaXN0LCBkaWUgZGFzIE9iamVrdCBiZXplaWNobmVuIGtvZW5udGUuIERpZXNlIFplaWNoZW4tCisJZm9sZ2Ugd2lyZCBpbiBrbGVpbmVuIEJ1Y2hzdGFiZW4gdWViZXJnZWJlbi4KKworCTUuKSAgICAgX3F1ZXJ5X2ludmlzKCkKKworCVdlbm4gZWluIE9iamVrdCB1bnNpY2h0YmFyIGlzdCwgc29sbCBlcyBiZWltIEF1ZnJ1ZiBkaWVzZXIKKwlGdW5rdGlvbiAxIHp1cnVlY2tnZWJlbi4gU2ljaHRiYXJlIE9iamVrdGUgYnJhdWNoZW4gZGllc2UKKwlGdW5rdGlvbiBuaWNodCB6dSBpbXBsZW1lbnRpZXJlbi4KKworSUlJLiAgICBVTlRFUlNUVUVUWlVORyBERVIgRlVOS1RJT05FTiBEVVJDSCBESUUgTUdfTVVETElCCisKKwlXZW5uIGVpbiBlaWdlbmVzIE9iamVrdCBhdXMgZGVuIFN0YW5kYXJkb2JqZWt0ZW4gYWJnZWxlaXRldAorCXdpcmQsIHNpbmQgYWxsZSBkaWVzZSBGdW5rdGlvbmVuIGJlcmVpdHMgZmVydGlnIGRlZmluaWVydC4KKwlFcyBtdWVzc2VuIGJlaW0gRXJ6ZXVnZW4gZGVyIE9iamVrdGUgbnVyIG5vY2ggZGllIGVudHNwcmVjaGVuZGVuCisJV2VydGUgbWl0Z2V0ZWlsdCB3ZXJkZW4uIERpZXNlcyBnZXNjaGllaHQgbWl0IGZvbGdlbmRlbiBGdW5rLQorCXRpb25lbiwgZGllIGFtIGJlc3RlbiBpbSBjcmVhdGUoKSBhdWZnZXJ1ZmVuIHdlcmRlbi4KKworCTEuKSAgICAgU2V0UHJvcCggUF9OQU1FLCBzdHJpbmcgKTsKKworCUluIG5hbWUoKSB3aXJkIGRlciB1ZWJlcmdlYmVuZSBTdHJpbmcgZGVrbGluaWVydCB1bmQgYXV0b21hdGlzY2gKKwltaXQgQXJ0aWtlbG4gdmVyc2VoZW4uICBEaWVzZSBGdW5rdGlvbiBiZWRlbmt0IGF1Y2ggRmFlbGxlLCBhbiAKKwlkaWUgaWhyIHdhaHJzY2hlaW5saWNoIG5pZSBnZWRhY2h0IGhhYnQuIERlciBHZW5pdGl2IHZvbiBkZXIgCisJTGFobWUgaXN0IHouQi4gZGVzIExhaG1lbiEgQXVjaCBmdWVyIGFuZGVyZSBGYWVsbGUgYmlldGV0IGRpZXNlIAorCUZ1bmt0aW9uIG1hZWNodGlnZSBVbnRlcnN0dWV0enVuZy4KKworCVdlbm4gZGVyIFN0cmluZyBuaWNodCBtaXQgQXJ0aWtlbG4gdmVyc2VoZW4gd2VyZGVuIHNvbGwsIHNvIGthbm4KKwltYW4gZGFzIG1pdHRlbHMgZGVyIEZ1bmt0aW9uICJTZXRQcm9wKFBfQVJUSUNMRSwgMCApIiBlcnJlaWNoZW4uCisKKwlEYW1pdCBkaWUgRnVua3Rpb24gbmFtZSgpIHVlYmVyaGF1cHQgZGVuIHJpY2h0aWdlbiBBcnRpa2VsIAorCWF1c3dhZWhsZW4ga2FubiwgbXVzcyBtYW4gbWl0ICJTZXRQcm9wKCBQX0dFTkRFUiwgZ2VuZGVyKSIgZGFzCisJR2VjaGxlY2h0IGRlcyBPYmpla3RlcyBiZWthbm50IG1hY2hlbi4gQWxzIGdlbmRlciBrYW5uIG1hbiAKKwlNQUxFIG9kZXIgMSwgRkVNQUxFIG9kZXIgMiB1bmQgTkVVVEVSIG9kZXIgMCB2ZXJ3ZW5kZW4uCisKKwlJc3QgZGFzIE9iamVrdCB1bnNpY2h0YmFyLCBzbyBkYXJmIHN0cmluZyB0cm90emRlbSBuaWNodCAwIHNlaW47CisJc3RhdHRkZXNzZW4gaXN0ICJTZXRQcm9wKCBQX0lOVklTLCAxICkiIGF1Znp1cnVmZW4uIChEaWUgWmVpbGUKKwkiI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4iIG5pY2h0IHZlcmdlc3Nlbi4gOi0pKQorCisJRGEgZGllc2VzIFZlcmZhaHJlbiBzZWhyIGZlaGxlcmFuZmFlbGxpZyBpc3QsIGlzdCBmdWVyIGRlbiBOYW1lbgorCWVpbiBBcnJheSB2b24gTmFtZW4genVnZWxhc3Nlbiwgc28gZGFzcyBmdWVyIGplZGVuIEZhbGwgZWluIFdvcnQKKwl1ZWJlcmdlYmVuIHdlcmRlbiBrYW5uLiBCZWlzcGllbC46CisJU2V0UHJvcCggUF9OQU1FLCAoeyAiTWVuc2NoIiwgIk1lbnNjaGVuIiwgIk1lbnNjaGVuIiwgIk1lbnNjaGVuIiB9KSApOworCisJMi4pICAgICBTZXRQcm9wKCBQX1NIT1JULCBzdHJpbmcgKQorCQorCUluIHNob3J0KCkgd2lyZCBkZXIgdWViZXJnZWJlbmUgU3RyaW5nIGF1c2dlZ2ViZW4uIE1pdHRlbHMgZGVzCisJcHJvY2Vzc19zdHJpbmctTWVjaGFuaXNtdXMgKHNpZWhlIC9kb2MvZWZ1bi9wcm9jZXNzX3N0cmluZykKKwlrb2VubmVuIGF1Y2ggdmFyaWJhbGUgVGVpbGUgaW4gZGVtIFN0cmluZyB2b3Jrb21tZW4uCisJc3RyaW5nIGJyYXVjaHQgZnVlciB1bnNpY2h0YmFyZSBPYmpla3RlIG5pY2h0IGF1ZiAwIGdlc2V0enQKKwl3ZXJkZW4uCisKKwkzLikgICAgIFNldFByb3AoIFBfTE9ORywgc3RyaW5nICkKKworCURpdG8uCisKKwk0LikgICAgIEFkZElkKCBzdHJpbmcgKTsKKworCU5laG1lIGRlbiBTdHJpbmcgaW4gZGllIE1lbmdlIGRlciBaZWljaGVua2V0dGVuIGF1ZiwgYXVmIGRpZSBkaWUKKwllaW5nZWJhdXRlIGlkLUZ1bmt0aW9uIG1pdCAxIGFudHdvcnRlbiBzb2xsLgorCisJNS4pICAgICBFcyByZWljaHQsIFNldFByb3AoIFBfSU5WSVMsIDEgKSBhdWZ6dXJ1ZmVuLCB3ZW5uIGRhcworCU9iamVrdCB1bnNpY2h0YmFyIHdpcmQsIHVuZCBTZXRQcm9wKCBQX0lOVklTLCAwICksIHdlbm4gZXMgd2llZGVyCisJc2ljaHRiYXIgd2lyZC4KKworSVYuICAgICBCRU5FTk5VTkcgVk9OIFJBRVVNRU4KKworCUJlaSBSYWV1bWVuIHdpcmQgZGllIGxvbmcoKSBiencuIHNob3J0KCktQmVzY2hyZWlidW5nIG51ciBkYW5uCisJYmVudXR6dCwgd2VubiBkZXIgUmF1bSAqdm9uIGF1c3NlbiogYW5nZXNjaGF1dCB3aXJkLiBGdWVyIGVpbmUKKwlCZXNjaHJlaWJ1bmcgZGVzIFJhdW1lbiB2b24gaW5uZW4gc2luZCBmb2xnZW5kZSBGdW5rdGlvbmVuCisJYmVyZWl0Z2VzdGVsbHQ6CisKKwkxLikgICAgIFNldFByb3AoIFBfSU5UX1NIT1JULCBzdHJpbmcgKTsKKworCUdlYmUgZWluZSBCZXNjaHJlaWJ1bmcgZGVzIFJhdW1lcyBmdWVyIGRlbiAia3VyeiItTW9kdXMgYXVzLgorCisJMi4pICAgICBTZXRQcm9wKCBQX0lOVF9MT05HLCBzdHJpbmcgKTsKKworCUdlYmUgZWluZSBhdXNmdWVocmxpY2hlIEJlc2NocmVpYnVuZyBkZXMgUmF1bWVzIHp1cnVlY2suCisKK1YuICAgICAgQkVORU5OVU5HIFZPTiBNT05TVEVSTgorCisJU2llaGUgb2JlbiB1bnRlciAvZG9jL01HL0JBTklTSC4KZGlmZiAtLWdpdCBhL2RvYy93aXovY2FsbGVkX2J5X3BsYXllciBiL2RvYy93aXovY2FsbGVkX2J5X3BsYXllcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTdmNTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9jYWxsZWRfYnlfcGxheWVyCkBAIC0wLDAgKzEsOCBAQAordm9pZCBCZWNvbWVzTmV0RGVhZChvYmplY3QgcGxheWVyKSB3aXJkIGltIFJhdW0gYXVmZ2VydWZlbiwgd2VubiBkb3J0IGVpbgorCVNwaWVsZXIgbmV0enRvdCB3aXJkLiBwbGF5ZXIgaXN0IGRlciBTcGllbGVyLgorCit2b2lkIFBsYXllclF1aXQob2JqZWN0IHBsYXllcikgd2lyZCBpbSBSYXVtIGF1ZmdlcnVmZW4sIHdlbm4gZGFyaW4gZWluCisJU3BpZWxlciBxdWl0dGV0LgorCit2b2lkIGV4aXQoKSB3aXJkIGltIFJhdW0gYXVmZ2VydWZlbiwgd2VubiBlaW4gTGViZXdlc2VuIHJhdXNnZW1vdmVkIHdpcmQuCisJRGFzIExlYmV3ZXNlbiBpc3QgcHJldmlvdXNfb2JqZWN0KCkKZGlmZiAtLWdpdCBhL2RvYy93aXovZW50dGFua2VuIGIvZG9jL3dpei9lbnR0YW5rZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE0N2Q0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovZW50dGFua2VuCkBAIC0wLDAgKzEsOTkgQEAKK0VudHRhbmtlbgorPT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmVsbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioKKworQUxMRSBFbnR0YW5rLU1vZWdsaWNoa2VpdGVuIE1VRVNTRU4gb3J0c2FiaGFlbmlnIHNlaW4uCitBdXNuYWhtZW4gS0FOTiBlcyBmdWVyIFF1ZXN0YmVsb2hudW5nZW4gZ2ViZW4uCisKK1RvaWxldHRlbgorLS0tLS0tLS0tCitUb2lsZXR0ZW4gcnVmZW4gZGllIE1ldGhvZGVuICJkZWZ1ZWxfZHJpbmsiIGJ6dy4gImRlZnVlbF9mb29kIiBpbSBTcGllbGVyIGF1Zi4KK0VzIHdlcmRlbiBrZWluZSBQYXJhbWV0ZXIgdWViZXJnZWJlbi4gUnVlY2tnYWJld2VydGUgc2luZCBlbnR3ZWRlciBkaWUgRmVobGVyCitOT19ERUZVRUwsIHdlbm4gbWFuIG5pY2h0cyB6dSBFbnR0YW5rZW4gaGF0LCBERUZVRUxfVE9PX0xPVywgd2VubiBtYW4gbmljaHQKK2dlbnVnIGltIE1hZ2VuL0JsYXNlIGhhdCwgREVGVUVMX1RPT19TT09OLCB3ZW5uIG1hbiBub2NoIG5pY2h0Cit3aWVkZXIgZW50dGFua2VuIGRhcmYsIE9ERVIgZGVyIGVudHRhbmt0ZSBXZXJ0LgorQmVpc3BpZWwgaGllcnp1IHNpZWhlICJtYW4gZGVmdWVsX2Zvb2QiLgorCitNYW4gZGFyZiBEQU5OIGVudHRhbmtlbiwgd2VubiBtYW4gbWluZGVzdGVucyBkZW4gRnVlbGx3ZXJ0IFBfREVGVUVMX0xJTUlUX0ZPT0QKK2J6dy4gUF9ERUZVRUxfTElNSVRfRFJJTksgaGF0IHVuZCBkYXMgbGV0enRlIEVudHRhbmtlbiBtaW5kZXN0ZW5zCitQX0RFRlVFTF9USU1FX0ZPT0QgYnp3LiBQX0RFRlVFTF9USU1FX0RSSU5LIGhlciBpc3QuCitJc3QgZGllcyBkZXIgRmFsbCwga2FubiBtYW4gUF9EUklOSy9GT09EKlBfREVGVUVMX0FNT1VOVF9EUklOSy9GT09EIGVudHRhbmtlbiwKK3dvYmVpIGRpZXMgenVyIEhhZWxmdGUgdWViZXIgZWluIFJhbmRvbSBnZWdsYWV0dGV0IHdpcmQuCisKK1dlciByZWd1bGFlciB1ZWJlciAiZGVmdWVsX2RyaW5rIiBlbnR0YW5rdCwgZW50dGFua3QgYXVjaCBhdXRvbWF0aXNjaCBlaW5lCitnZXdpc3NlIE1lbmdlIGFuIEFsa29ob2wuIERpZXNlIE1lbmdlIGlzdCB2b24gZGVyIGVudHRhbmt0ZW4gTWVuZ2UsIHZvbiBkZW0KK2ltIEtvZXJwZXIgc2ljaCBiZWZpbmRlbmVuIEFsa29ob2wgdW5kIHZvbSBHZXdpY2h0IGRlcyBTcGllbGVycyBhYmhhZW5naWcuCisKK0FsbGUgZ2VuYW5udGVuIFByb3BzIHNpbmQgcmFzc2VuYWJoYWVuZ2lnLgorRGllIEJlcmVjaG51bmdlbiBzaW5kIGdla2Fwc2VsdCBpbiAiZGVmdWVsX2Zvb2QvZHJpbmsiLgorCitBbmRlcmUgT2JqZWt0ZQorLS0tLS0tLS0tLS0tLS0KKworSGllciBiaWV0ZXQgc2ljaCBhbiwgZGllIHplaXRsaWNoZSBOdXR6dW5nIGRlciBFbnR0YW5rZSBzcGllbGVyYmV6b2dlbiAKK21pdHRlbHMgZGVyIE1ldGhvZGUgIGNoZWNrX2FuZF91cGRhdGVfdGltZWRfa2V5IHp1IHN0ZXVlcm4uIERhYmVpIHNvbGx0ZQorZGVyIHplaXRsaWNoZSBBYnN0YW5kIG5pY2h0IHp1IGtuYXBwIHNlaW4sIGluIGRlciBSZWdlbCBpbSBCZXJlaWNoIHZvbiAKK2NhLiBlaW5lciBTdHVuZGUuIERlciBlaWdlbnRsaWNoZSBFbnR0YW5rdm9yZ2FuZyBpbSBTcGllbGVyIGdlc2NoaWVodCAKK21pdHRlbHMgZWF0X2Zvb2QsIGRyaW5rX3NvZnQgb2RlciBkcmlua19hbGNvaG9sIGR1cmNoIFVlYmVyZ2FiZSBuZWdhdGl2ZXIgCitXZXJ0ZS4gRGVyIEJldHJhZyBkaWVzZXMgV2VydGVzIHNvbGx0ZSBkZXIgRXJyZWljaGJhcmtlaXQgYW5nZW1lc3NlbiBzZWluLAorZC5oLiBsZWljaHRlciBlcnJlaWNoYmFyZSBFbnR0YW5rZW4gc29sbHRlbiBhdWNoIG5pY2h0IHp1IHZpZWwgZW50dGFua2VuLAord2VubiBzaWUgZGVuIFNwaWVsZXIga29tcGxldHQgZW50dGFua2VuIHNvbGxlbiwgbXVlc3NlbiBzaWUgZW50c3ByZWNoZW5kCitzY2h3ZXIgenUgZXJyZWljaGVuIHNlaW4uCitEYSBkaWUgRW50dGFua2VuIG9ydHNhYmhhZW5naWcgc2luZCB1bmQgaW4gZGVyIFJlZ2VsIGVyc3QgZXJmb3JzY2h0IAord2VyZGVuIG11ZXNzZW4sIGlzdCBlaW5lIHdlaXRlcmUgQmVncmVuenVuZyBtb21lbnRhbiBuaWNodCB2b3JnZXNlaGVuLiAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlemlmaXNjaGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Jhc3NlbmJlc2NocmVpYnVuZ2VuIGZ1ZXIgQmVyZWNobnVuZ2VuIGluICJkZWZ1ZWxfZm9vZC9kcmluayI6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01FTlNDSEVOCitzaW5kIHdpZSBpbW1lciBuaWNodHMgQmVzb25kZXJlcyB1bmQgZGVmaW5pZXJlbiBkYXMgYWJzb2x1dGUgTWl0dGVsbWFzcy4KKworWldFUkdFCitrb2VubmVuIG1laHIgaW4gQmxhc2UgdW5kIE1hZ2VuIGhhYmVuIHVuZCBrb2VubmVuIGF1Y2ggc28gcmljaHRpZyBhYmxhZGVuLgorRGFmdWVyIG11ZXNzZW4gc2llIGxhZW5nZXIgd2FydGVuLCBiaXMgZXMgc2ljaCBsb2hudCwgenUgZW50dGFua2VuLgorCitFTEZFTgorc2luZCBpbmtvbnRpbmVudCB1bmQgS2xlaW5tZW5nZW5nZWJlci4KKworRFVOS0VMRUxGRU4KK3NpbmQgdm9uIGRlbiBXZXJ0ZW4gaGVyIGluIGV0d2Egd2llIEVsZmVuLgorCitIT0JCSVRTCitrb2VubmVuIGVzc2VuIGJpcyB6dW0gVW1mYWxsZW4uIFNpZSBsYWRlbiBkYW5uIHJpY2h0aWcgYWIsIG11ZXNzZW4gYWJlciBhdWNoCitlbnRzcHJlY2hlbmQgd2FydGVuLgorCitGRUxJTkVOCitzaW5kIGRlbiBNZW5zY2hlbiBhZWhubGljaC4KKworT1JLUworc2luZCBhdWNoIG5pY2h0cyBCZXNvbmRlcmVzLiAKKworV2VyIGRpZSBnZW5hdWVuIFdlcnRlIGVpbnNlaGVuIG1vZWNodGUsIG1vZWdlIGluIGRlbiBzaGVsbHMgbmFjaGd1Y2tlbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dpc2NoZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKgorCitKZWRlICghKSBNb2VnbGljaGtlaXQgenVyIEVudHRhbmt1bmcsIG11c3MgZGVtIHp1c3RhZW5kaWdlbiBNYWdpZXIKK2Z1ZXIgSGVpbHVuZ3MtQmFsYW5jZSBnZW1lbGRldCB1bmQgdm9uIGRpZXNlbSBnZW5laG1pZ3Qgd2VyZGVuLiBXZXIKK2RpZXNlbiBQb3N0ZW4gbW9tZW50YW4gaW5uZWhhdCwga2FubiBkZW0gTWFpbEFsaWFzICJoZWlsdW5nc19iYWxhbmNlIgorZW50bm9tbWVuIHdlcmRlbi4KKworU2llaGUgYXVjaDoKKy0tLS0tLS0tLS0KKyAgICAgVGFua2VuOiAgICBjb25zdW1lLCBkcmlua19hbGNvaG9sLCBlYXRfZm9vZCwgZHJpbmtfc29mdAorICAgICBIZWlsdW5nOiAgIGhlYWxfc2VsZiwgcmVzdG9yZV9zcGVsbF9wb2ludHMsIHJlc3RvcmVfaGl0X3BvaW50cywgCisgICAgICAgICAgICAgICAgYnVmZmVyX2hwLCBidWZmZXJfc3AKKyAgICAgVGltaW5nOiAgICBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleQorICAgICBFbnR0YW5rZW46IGRlZnVlbF9kcmluaywgZGVmdWVsX2Zvb2QKKyAgICAgUHJvcHM6ICAgICBQX0RSSU5LLCBQX0ZPT0QsIFBfQUxDT0hPTCwgUF9TUCwgUF9IUCwKKyAgICAgICAgICAgICAgICBQX0RFRlVFTF9USU1FX0RSSU5LCisgICAgIEtvbnplcHRlOiAgaGVpbHVuZywgZm9vZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAwMi4xMS4yMDA1IC0gTWlyaWwKZGlmZiAtLWdpdCBhL2RvYy93aXovZmFtaWxpZW4gYi9kb2Mvd2l6L2ZhbWlsaWVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YmY4MzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2ZhbWlsaWVuCkBAIC0wLDAgKzEsMjQgQEAKK0VpbmUgRmFtaWxpZSB1bWZhc3N0IGRlbiBFcnN0aWUgdW5kIGFsbGUgWndlaXRpZXMsIHNwcmljaCBhbGxlIGRpZXNlIGhhYmVuIGRlbgorZ2xlaWNoZW4gIkZhbWlsaWVubmFtZW4iLiBEaWVzZXIgTmFtZSBpc3QgaW4gZGVyIFJlZ2VsIGRpZSBVVUlEIGRlcyBFcnN0aWVzCitkaWVzZXIgRmFtaWxpZS4gRmFsbHMgYWJlciBkZXIgRXJzdGllIHNpY2ggYWVuZGVybiBzb2xsdGUgKHouQi4gTWFnaWVyd2VyZHVuZworZWluZXMgWndlaXRpZXMpIHVuZCBzaWNoIGRlciBGYW1pbGllbm5hbWUgbmljaHQgYWVuZGVybiBzb2xsLCBkYW5uIGtvZW5uZW4KK3dpciBkZW4gTmFtZW4gZGllc2VyIEZhbWlsaWUgYmVpYmVoYWx0ZW4gKGQuaC4gYWx0ZXIgRXJzdGllKS4KKworV2lsbCBtYW4gd2lzc2VuLCB3ZWxjaGVyIEZhbWlsaWUgZWluIENoYXIgYW5nZWhvZXJ0IChlZ2FsLCBvYiBFcnN0aWUgb2RlcgorWndlaXRpZSksIGRhbm4gZ2VodCBkYXMgbWl0OgorIyB4Y2FsbCAvc2VjdXJlL3p3ZWl0aWVzLT5RdWVyeUZhbWlsaWUocGxheWVyX29iamVjdCkKKworRGVzIFdlaXRlcmVuIGxpZWZlcnQgZGllc2VzIE9iamVrdCBhdWNoIG5vY2ggenUgamVkZW0gWndlaXRpZSBkZW4gRXJzdGllIHVuZAorenUgamVkZW0gRXJzdGllIGRpZSBMaXN0ZSBhbGxlciBiZWthbm50ZW4gWndlaXRpZXM6CisjIHhjYWxsIC9zZWN1cmUvendlaXRpZXMtPlF1ZXJ5RXJzdGllTmFtZShwbGF5ZXJfb2JqZWN0KQorIyB4Y2FsbCAvc2VjdXJlL3p3ZWl0aWVzLT5RdWVyeUVyc3RpZVVVSUQocGxheWVyX29iamVjdCkKKyMgeGNhbGwgL3NlY3VyZS96d2VpdGllcy0+UXVlcnlad2VpdGllcyhwbGF5ZXJfb2JqZWN0KQorCitEZXIgRGF0ZW5iZXN0YW5kIGlzdCAobm9jaCkgbmljaHQgdm9sbHN0YWVuZGlnLCBkYWhlciBmZWhsZW4gZGEgbm9jaCB2aWVsZQorQ2hhcnMuIERpZSB3ZXJkZW4gYWJlciBpbiBhYnNlaGJhcmVyIFplaXQgZG9ydCBuYWNoZ2V0cmFnZW4uCisKK0RpZSBGYW1pbGllIHdpcmQgaW4gWnVrdW5mdCBnZW51dHp0LCB1bSBEaW5nZSB6dSBwZXJzb25hbGlzaWVyZW4sIHdlbGNoZSBmdWVyCitkZW4gU3BpZWxlciwgYWJlciBuaWNodCBmdWVyIGRlbiBDaGFyIGluZGl2aWR1ZWxsIHNlaW4gc29sbGVuLiBTcHJpY2g6CitwZXJzb25hbGlzaWVydCBtYW4gaXJnZW5kd2FzIHVlYmVyIGRpZSBGYW1pbGllLCBrb2VubmVuIGFsbGUgQ2hhcnMgZGllc2VyCitGYW1pbGllIGRhcyBpcmdlbmR3YXMgbnV0emVuLgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2ZlaGxlcnRldWZlbCBiL2RvYy93aXovZmVobGVydGV1ZmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMGI5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2ZlaGxlcnRldWZlbApAQCAtMCwwICsxLDE4MSBAQAorRGVyIEZlaGxlcnRldWZlbAorPT09PT09PT09PT09PT09PQorCitkaWUgTXVkbGliIHNwZWljaGVydCBkaWUgYXVmZ2V0cmV0ZW5lbiBGZWhsZXIgdW5kIFdhcm51bmdlbi4gRGFiZWkgd2VyZGVuIAorZm9sZ2VuZGUgRGF0ZW4gbWl0Z2VzcGVpY2hlcnQ6CistIFplaXQgKGVyc3RlcyBNYWwsIHp1bGV0enQpCistIEluIHdlbGNoZW0gT2JqZWt0IHVuZCB3ZWxjaGVtIFByb2dyYW1tIGRlciBGZWhsZXIgd2FyCistIFplaWxlbnIuCistIEZlaGxlcm1lbGR1bmcKKy0gT2JqZWt0LCBkZXNzZW4gSGVhcnRiZWF0LCBkZW4gRmVobGVyIGF1c2xvZXN0ZQorLSB0aGlzX2ludGVyYWN0aXZlKCkgYnp3LiB0aGlzX3BsYXllcigpCistIGRlbiBCZWZlaGwsIGRlbiBUSSBlaW5nZWdlYmVuIGhhdAorLSBkYXMgRW52aXJvbm1lbnQgdm9uIFRJIG9kZXIgVFAKKy0gd2llIG9mdCBkZXIgRmVobGVyIHNjaG9uIGF1ZnRyYXQKKy0gZGVyIEJhY2t0cmFjZQorLSBvYiBkZXIgRmVobGVyIGluIGVpbmVtIGNhdGNoKCkgYXVmdHJhdAorCitadXNhZXR6bGljaCB3ZXJkZW4gdm9uIFNwaWVsZXJuIHBlciAiYnVnIiwgImZlaGxlciIgb2RlciAic29ubmVuZmVobGVyIgorZ2VtZWxkZXRlIEZlaGxlciBnZXNwZWljaGVydC4KKworRGVyIEZlaGxlcnRldWZlbCBkaWVudCBudW4gZGF6dSwgc2ljaCBkaWVzZSBJbmZvcyBkYXJzdGVsbGVuIHp1IGxhc3Nlbi4gTmFjaCAKK2RlbSBDbG9uZW4gdm9uIC9vYmovdG9vbHMvZmVobGVydGV1ZmVsIGhhYnQgaWhyIGZvbGdlbmRlIE1vZWdsaWNoa2VpdGVuOgorCistIGZlaGxlcmxpc3RlIDxhdXN3YWhsIHMuIEtvbW1hbmRvIGZlaGxlcm1vZHVzPgorICBEaWVzZXIgQmVmZWhsIHN0ZWxsdCBldWNoIGVpbmUgTGlzdGUgYWxsZXIgYmVrYW5udGVuIEZlaGxlciBkYXIsIGRpZSB1bnRlcgorICBlaW5lciBVSUQgYXVmdHJhdGVuLCBmdWVyIGRpZSBpaHIgenVzdGFlbmRpZyBzZWlkICh6LkIuICJ6ZXNzdHJhIiwgCisgICJkLmluc2Vsbi56ZXNzdHJhIiwgIkdVSUxELm1hZ2llcnBhY2siLCBzLiBhdWNoIFF1ZXJ5VUlEc0ZvcldpemFyZCgpKS4gRGllCisgIExpc3RlIHVtZmFzc3QgZGllIGVpbmRldXRpZ2UgRmVobGVyLUlELCBkZW4gTGFkZW5hbWVuIGRlcyBmZWhsZXJhdXNsb2VzZW5kZW4KKyAgT2JqZWt0cyB1bmQgZGllIFVJRC4KKyAgSmUgbmFjaCBBcmd1bWVudCB3ZXJkZW4gZGl2LiBGZWhsZXIgb2RlciBXYXJudW5nZW4gYXVzZ2VnZWJlbi4gV2lyZCBrZWlucyAKKyAgdm9uIGJlaWRlbiBhbmdlZ2ViZW4sIHdpcmQgamUgbmFjaCBFaW5zdGVsbHVuZyB2b24gJ2ZlaGxlcm1vZHVzJyBhdWZnZWxpc3RldC4KKworLSBmZWhsZXJhYmZyYWdlIDxpZD4KKyAgSGllcm1pdCBsYXNzZW4gc2ljaCBkaWUgRGV0YWlsLUluZm9ybWF0aW9uZW4genUgPGlkPiBhbnplaWdlbi4gPGlkPiBiZWtvbW10CisgIGlociBlbnR3ZWRlciBhdXMgImZlaGxlcmxpc3RlIiBvZGVyIHZvbiAtZGVidWcvLWVudHdpY2tsdW5nLy13YXJudW5nZW4sIGRvcnQKKyAgd2VyZGVuIGRpZXNlIElEcyBtaXQgYXVzZ2VnZWJlbi4gT2huZSBBbmdhYmUgZGVyIDxpZD4gd2lyZCBkZXIgbGV0enRlCisgIGJldHJhY2h0ZXRlIEZlaGxlciBhdXNnZWdlYmVuLgorICBOZWJlbiBkZXIgbnVtZXJpc2NoZW4gSUQgaXN0IGhpZXJiZWkgYXVjaCBkaWUgSGFzaC1JRCBtb2VnbGljaC4KKyAgRXMga2FubiBhdWNoIGRlciBMYWRlbmFtZSBlaW5lcyBPYmpla3RzIGFuZ2VnZWJlbiB3ZXJkZW4sIGRhbm4gd2VyZGVuIGFsbGUKKyAgenUgZGllc2VtIE9iamVrdCBnZWhvZXJlbmRlbiBFaW50cmFlZ2UgYXVmIGVpbm1hbCBhbmdlemVpZ3QsIHouQi4KKyAgICBmZWhsZXJhYmZyYWdlIC9kL3VudGVyd2VsdC9yYWV1bWUvd2FsZDMKKyAgRGVyIExhZGVuYW1lIG11c3MgbWl0IGVpbmVtIC8gYmVnaW5uZW4uCisKKy0gZmVobGVybG9lc2NoZW4gPGlkPgorICBGZWhsZXIgbWl0IGRlciBJRCA8aWQ+IHp1bSBMb2VzY2hlbiBtYXJraWVyZW4gKHouQi4gd2VubiBnZWZpeHQpLiBEaWUgCisgIGVpZ2VudGxpY2ggTG9lc2NodW5nIGZpbmRldCBpbm5lcmhhbGIgdm9uIDI0aCBzdGF0dC4gRGllIEZlaGxlciB3ZXJkZW4gbmFjaCAKKyAgZGllc2VtIEJlZmVobCBuaWNodCBtZWhyIGluIGRlciBGZWhsZXJsaXN0ZSBhbmdlemVpZ3QuIE9obmUgQW5nYWJlIGRlciA8aWQ+CisgIHdpcmQgZGVyIGxldHp0ZSBiZW51dHp0ZSBGZWhsZXIgZ2Vsb2VzY2h0LgorICBXaWVkZXJob2x0IG1hbiBkZW4gQmVmZWhsLCB3aXJkIGRpZSBMb2VzY2htYXJraWVydW5nIHdpZWRlciBlbnRmZXJudC4KKyAgRXMga2FubiBhdWNoIGRlciBMYWRlbmFtZSBlaW5lcyBPYmpla3RzIGFuZ2VnZWJlbiB3ZXJkZW4sIGRhbm4gd2VyZGVuIGFsbGUKKyAgenUgZGllc2VtIE9iamVrdCBnZWhvZXJlbmRlbiBFaW50cmFlZ2UgYXVmIGVpbm1hbCBnZWxvZXNjaHQsIHouQi4KKyAgICBmZWhsZXJsb2VzY2hlbiBkL3VudGVyd2VsdC9yYWV1bWUvd2FsZDMKKworLSBmZWhsZXJlaW5nYWJlIDxvYmpla3Q+CisgIEhpZXJtaXQgbGFlc3N0IHNpY2ggcGVyIEhhbmQgZWluIEVpbnRyYWcgZnVlciBkYXMgYW5nZWdlYmVuZSBPYmpla3QgaW0KKyAgRmVobGVydGV1ZmVsIGVyc3RlbGxlbi4gRGFzIE9iamVrdCBrYW5uIG1pdCBlaW5lciBzZWluZXIgSURzIG9kZXIgc2VpbmVtCisgIHZvbGxzdGFlbmRpZ2VuIE9iamVrdG5hbWVuIGFuZ2VnZWJlbiB3ZXJkZW4uIFdpcmQga2VpbiBPYmpla3QgYW5nZWdlYmVuLAorICB3aXJkIGRpZSBVbWdlYnVuZyBkZXMgTWFnaWVycyBhbHMgT2JqZWt0IGdlbnV0enQuIEJzcDoKKyAgICBmZWhsZXJlaW5nYWJlIHNlaWwKKyAgICBmZWhsZXJlaW5nYWViIC9vYmovc2VpbCM1NjM1CisKKy0gZmVobGVycmVmcmVzaAorICBEZXIgRmVobGVydGV1ZmVsIGhhdCBlaW5lbiBad2lzY2hlbnNwZWljaGVyIGZ1ZXIgZGllIEZlaGxlcmxpc3RlLiBEaWVzZXIgCisgIEJlZmVobCBsb2VzY2h0IGRpZXNlbiBad2lzY2hlbnNwZWljaGVyIHVuZCBob2x0IGRpZSBGZWhsZXJsaXN0ZSBuZXUuCisKKy0gZmVobGVyZmlsdGVyCisgIEhpZXJtaXQgbGFlc3N0IHNpY2ggZWluIEZpbHRlciBmdWVyIFVJRHMgZWluc3RlbGxlbi4gKHMudS4pIElzdCBlciBha3RpdiwgCisgIHdlcmRlbiBwZXIgJ2ZlaGxlcmxpc3RlJyBrZWluZSBGZWhsZXIgbWVociBhbmdlemVpZ3QsIGRpZSBpbSBGaWx0ZXIKKyAgZWluZ2V0cmFnZW4gd3VyZGVuLgorCistIGZlaGxlcm1vZHVzIDxmZWhsZXJ8d2FybnVuZ2VuPgorICBFaW5zdGVsbGVuLCB3ZWxjaGUgQXJ0ZW4gdm9uIEVpbnRyYWVnZW4gaW0gRmVobGVydGV1ZmVsIHZvbSBLb21tYW5kbworICAnZmVobGVybGlzdGUnIGF1c2dlZ2ViZW4gd2VyZGVuIHNvbGw6CisgICAgbGF1ZnplaXRmZWhsZXI6IExhdWZ6ZWl0ZmVobGVyIHdlcmRlbiBhdXNnZWdlYmVuICgtZGVidWcsIC1lbnR3aWNrbHVuZykKKyAgICBsYXVmemVpdHdhcm51bmdlbjogTGF1ZnplaXR3YXJudW5nZW4gd2VyZGVuIGF1c2dlZ2ViZW4gKC13YXJudW5nZW4pCisgICAgbGFkZXplaXRmZWhsZXI6IEZlaGxlciBiZWltIExhZGVuIGVpbmVzIE9iamVrdHMgd2VyZGVuIGF1c2dlZ2ViZW4gIAorICAgIGxhZGV6ZWl0d2FybnVuZ2VuOiBXYXJudW5nZW4gYmVpbSBMYWRlbiBlaW5lcyBPYmpla3RzIHdlcmRlbiBhdXNnZWdlYmVuCisgICAgZmVobGVyaGlud2Vpc2U6IEZlaGxlciwgZGllIFNwaWVsZXIvTWFnaWVyIGFiZ2VzZXR6dCBoYWJlbgorICAgIGlkZWVuOiBJZGVlbiwgZGllIFNwaWVsZXIvTWFnaWVyIGFiZ2VzZXR6dCBoYWJlbgorICAgIHR5cG9zOiBUeXBvcywgZGllIFNwaWVsZXIvTWFnaWVyIGFiZ2VzZXR6dCBoYWJlbgorICAgIG1kOiBGZWhsZW5kZSBEZXRhaWxzLCBkaWUgU3BpZWxlci9NYWdpZXIgYWJnZXNldHp0IGhhYmVuCisgICAgZmVobGVyOiBhbGxlIG1vZWdsaWNoZW4gRmVobGVyIHdlcmRlbiBhdXNnZWdlYmVuCisgICAgd2FybnVuZ2VuOiBhbGxlIG1vZWdsaWNoZW4gV2FybnVuZ2VuIHdlcmRlbiBhdXNnZWdlYmVuCisgICAgYWxsZTogYWxsZSBGZWhsZXIgKyBXYXJudW5nZW4gd2VyZGVuIGF1c2dlZ2ViZW4KKyAgICAKKyAgICBPaG5lIEFyZ3VtZW50OiBha3R1ZWxsZW4gTW9kdXMgYXVzZ2ViZW4uCisKKy0gZmVobGVybW9uaXRvcgorICBIaWVybWl0IGxhc3NlbiBzaWNoIFVJRHMgYW5nZWJlbiwgZGllIG1hbiB6dXNhZXR6bGljaCB6dSBkZW4gZWlnZW5lbgorICBhdWNoIG5vY2ggYmVvYmFjaHRlbiB3aWxsLgorICBIaWVyYmVpIHNpbmQgYXVjaCBlaW5pZ2UgVUlELUFsaWFzZSBtb2VnbGljaCwgei5CLiAnbWFnaWVyJywgJ3JlZ2lvbicsIAorICAncC5zZXJ2aWNlJywgJ3AnIG9kZXIgJ2dpbGRlJy4KKyAgQlRXOiBuYWNoIEFlbmRlcnVuZyBkaWVzZXIgTGlzdGUgc29sbHRlIG1hbiAiZmVobGVycmVmcmVzaCIgYXVmcnVmZW4uCisKKy0gZmxvY2sgPGlkPiA8YmVtZXJrdW5nPgorICBTbyBtYXJraWVydGUgRmVobGVyIHdlcmRlbiBuaWNodCBtZWhyIGF1dG9tYXRpc2NoIChuYWNoIDMxIFRhZ2VuIG9obmUKKyAgQWVuZGVydW5nKSBnZWxvZXNjaHQuIEFCRVI6IFNvbGNoZXJhcnQgZ2VzcGVycnRlIEZlaGxlciB3ZXJkZW4gbW9tZW50YW4KKyAgX25pZW1hbHNfIGF1dG9tYXRpc2NoIGdlbG9lc2NodCwgZGVzaGFsYiBkZW5rdCBiaXR0ZSBkYXJhbiwgc2llIGVudHdlZGVyCisgIHNlbGJlciB6dSBsb2VzY2hlbiBvZGVyIHNpZSB3aWVkZXIgZnJlaXp1Z2ViZW4sIHdlbm4gaWhyIHNpZSBuaWNodCBtZWhyCisgIGJyYXVjaHQuCisKKy0gZnVubG9jayA8aWQ+IDxiZW1lcmt1bmc+CisgIEdpYnQgZGVuIEZlaGxlciB3aWVkZXIgenVtIGF1dG9tYXRpc2NoZW4gTG9lc2NoZW4gZnJlaS4KKworLSBmZml4IDxpZD4gPGJlbWVya3VuZyB6dW0gZml4PgorICBGZWhsZXIgd2lyZCBhbHMgImdlZml4dCIgbWFya2llcnQgdW5kIGVpbmUgTWFpbCBhbiBhbGxlIGZ1ZXIgZGFzIGJ1Z2dlbmRlCisgIE9iamVrdGUgenVzdGFlbmRpZ2VuIE1hZ2llciBnZXNjaGlja3QgKHNvd2VpdCBiZWthbm50KS4gQW5zY2hsaWVzc2VuZCAKKyAgd2VyZGVuIGRpZSBGZWhsZXIgdm9tIEZlaGxlcnRldWZlbCBuaWNodCBtZWhyIGFuZ2V6ZWlndC4KKyAgSW0gRmFsbGUgdm9uIGR1cmNoIFNwaWVsZXIgYmVyaWNodGV0ZW4gRmVobGVybiB3aXJkIGRlbSBqZXdlaWxpZ2VuIFNwaWVsZXIKKyAgYmVpbSBGaXhlbiBlYmVuZmFsbHMgZWluZSBNYWlsIGdlc2NoaWNrdC4KKyAgQWxzIGdlZml4dCBtYXJraWVydGUgRmVobGVyIHdlcmRlbiBuYWNoIGVpbmlnZXIgWmVpdCBnZWxvZXNjaHQuCisgIEVzIGVtcGZpZWhsdCBzaWNoIGZ1ZXIgZWlnZW5lIEZlaGxlciwgZGllc2UgbmFjaCBCZWhlYmVuIGVpbmZhY2ggenUKKyAgTG9lc2NoZW4sIHdlbm4gbWFuIGtlaW5lIE1haWwgdWViZXIgZGVuIEZlaGxlciBlcmhhbHRlbiBtb2VjaHRlLgorCistIGZ1bmZpeCA8aWQ+IDxiZW1lcmt1bmcgd2FydW0gZGVyIEJ1Z2ZpeCBzY2hlaXNzZSB3YXIgOyk+CisgIFdlbm4gaWhyIGJpcyB6dSBkZXIgIkFyY2hpdmllcnVuZyIgZ2VmaXh0ZXIgRmVobGVyIGZlc3RzdGVsbHQsIGRhc3MgaWhyIGRlbiAKKyAgRmVobGVyIHdvaGwgZG9jaCBuaWNodCBnZWZpeHQgaGFidCwga29lbm50IGlociBkYXMgd2llZGVyIHJ1ZWNrZ2FlbmdpZyAKKyAgbWFjaGVuLgorCistIGZub3RpeiA8aWQ+IDxiZW1lcmt1bmc+CisgIFdlbm4gZXVjaCBhbiBzbyBlaW5lbSBGZWhsZXIgd2FzIGF1ZmZhZWxsdCBvZGVyIGlociBlaW5lIElkZWUgaGFidCwga29lbm50IGlocgorICBkYXMgc28gYWxzbyAidmVyZXdpZ2VuIi4gTm90aXplbiBrYW5uIGplZGVyIE1hZ2llciBhbiBGZWhsZXIgZHJhbmhhZW5nZW4sCisgIGRhZnVlciBicmF1Y2h0IG1hbiBrZWluZSBiZXNvbmRlcmVuIChTY2hyZWliKVJlY2h0ZS4gRGllIE5vdGl6ZW4gd2VyZGVuIHZvbQorICBGZWhsZXJ0ZXVmZWwgYXVzZ2VnZWJlbiB1bmQgc3RlaGVuIGF1Y2ggaW0gQ0hBTkdFTE9HLgorICBBbm1lcmt1bmc6IEVzIGdpYnQgKGFic2ljaHRsaWNoKSBrZWluZSBNb2VnbGljaGtlaXQsIE5vdGl6ZW4gd2llZGVyIHp1CisgIGxvZXNjaGVuLgorCistIGZ1ZWJlcnRyYWdlIDxpZD4gPG5ld3VpZD4gPGJlbWVya3VuZz4KKyAgV2VubiBpaHIgZWluZW4gRmVobGVyIGhhYnQsIGZ1ZXIgZGVuIGlociBuaWNodCB6dXN0YWVuZGlnIHNlaWQsIHdlaWwgZGVyCisgIFVyc3BydW5nIGRlcyBGZWhsZXJzIG5pY2h0IGluIGVpbmVtIGV1cmVyIEZpbGVzIGxpZWd0LCBrb2VubnQgaWhyIGRpZXNlbgorICBGZWhsZXIgYW4gZWluZSBhbmRlcmUgVUlEIG1pdCBlaW5lciBCZW1lcmt1bmcgdWViZXJ0cmFnZW4uIERhbmFjaCBpc3QgZGVyCisgIE1hZ2llciB2b24gPG5ld3VpZD4genVzdGFlbmRpZyB1bmQgaGF0IFNjaHJlaWJyZWNodGUgYXVmIGRlbiBGZWhsZXIuCisgIDxuZXd1aWQ+IGthbm4gei5CLiBzb3dhcyB3aWUgJ2QuaW5zZWxuLnplc3N0cmEnIG9kZXIgJ3plc3N0cmEnIHNlaW4uIExpZWd0CisgIGRlciBGZWhsZXIgaW4gZWluZW0gT2JqZWt0IGluIC9kLywgc29sbHRldCBpaHIgYXVmIGplZGVuIEZhbGwKKyAgZC5yZWdpb24ubWFnaWVyIGJlbnV0emVuLCBkYW1pdCBnZ2YuIGRlciBSTSBkZXIgUmVnaW9uIGF1Y2ggenVzdGFlbmRpZyB3aXJkLgorCitVSUQtRmlsdGVyOgorICBhKSBmZWhsZXJmaWx0ZXIgYW4KKyAgICAgU2NoYWx0ZXQgZGVuIEZpbHRlciBlaW4KKyAgYikgZmVobGVyZmlsdGVyIGF1cworICAgICBzY2hhbHRldCBkZW4gRmlsdGVyIGF1cworICBjKSBmZWhsZXJmaWx0ZXIgYWxsZQorICAgICBzY2hhbHRldCBkZW4gRmlsdGVyIGVpbiBfdW5kXyBzY2hyZWlidCBhbGxlIFVJRHMsIGZ1ZXIgZGllIG1hbiB6dXN0YWVuZGlnCisgICAgIGlzdCwgaW4gZGVuIEZpbHRlciwgZXMgd2lyZCBkYW5uIG5pY2h0cyBtZWhyIGFuZ2V6ZWlndC4KKyAgZCkgZmVobGVyZmlsdGVyIGtlaW5lCisgICAgIHNjaGFsdGV0IGRlbiBGaWx0ZXIgZWluIF91bmRfIGxvZXNjaHQgZGVuIEZpbHRlciwgZC5oLiBlcyB3aXJkIHRyb3R6ZGVtCisgICAgIGVyc3RtYWwgbm9jaCBuaXggZ2VmaWx0ZXJ0Li4KKyAgZSkgZmVobGVyZmlsdGVyICt6ZXNzdHJhICtkLmluc2Vsbi56ZXNzdHJhIC1kLmViZW5lLnplc3N0cmEKKyAgICAgRnVlZ3QgInplc3N0cmEiIHVuZCAiZC5pbnNlbG4uemVzc3RyYSIgZGVuIGFrdHVlbGxlbiBGaWx0ZXJlaW5zdGVsbHVuZ2VuCisgICAgIGhpbnp1IHVuZCBsb2VzY2h0ICJkLmViZW5lLnplc3N0cmEiIGF1cyBkZW0gRmlsdGVyLgorICAgICBCZWxpZWJpZ2UgS29tYmluYXRpb25lbiBtb2VnbGljaC4gT2huZSAtIG9kZXIgKyBhbSBBbmZhbmcgd2lyZCBqZXdlaWxzCisgICAgIGludmVydGllcnQsIGFsc28gaGluenVnZWZ1ZWd0LCB3ZW5uIG5vY2ggbmljaHQgZHJpbiB1bmQgZW50ZmVybnQsIHdlbm4KKyAgICAgc2Nob24gaW4gZGVyIExpc3RlLgorCitGZWhsZXItTW9uaXRvcjoKKyAgYSkgZmVobGVybW9uaXRvciBrZWluZQorICAgICBMb2VzY2h0IGFsbGUgYmVvYmFjaHRldGVuIFVJRHMKKyAgYikgZmVobGVybW9uaXRvciArYXRhbXVyIC1kLnBvbGFyLmF0YW11cgorICAgICBGdWVndCAiYXRhbXVyIiBkZXIgQmVvYmFjaHR1bmdzbGlzdGUgaGluenUgdW5kIGVudGZlcm50ICJkLnBvbGFyLmF0YW11ciIuCisgICAgIEJlbGllYmlnZSBLb21iaW5hdGlvbmVuIG1vZWdsaWNoLiBPaG5lIC0gb2RlciArIGFtIEFuZmFuZyB3aXJkIGpld2VpbHMKKyAgICAgaW52ZXJ0aWVydCwgYWxzbyBoaW56dWdlZnVlZ3QsIHdlbm4gbm9jaCBuaWNodCBkcmluIHVuZCBlbnRmZXJudCwgd2VubgorICAgICBzY2hvbiBpbiBkZXIgTGlzdGUuCisKK1p1Z3JpZmZzcmVjaHRlOgorICAtIExlc2VuIHVuZCBBbmhhZW5nZW4gKE5vdGl6ZW4sIExvZXNjaHNwZXJyZW4pIGRhcmYgamVkZXIgTWFnaWVyCisgIC0gTG9lc2NoZW4sIEZpeGVuIHVuZCBVSUQgbmV1IHp1b3JkbmVuIGR1ZXJmZW4gZnVlciBkaWUgVUlEIHp1c3RhZW5kaWdlIE1hZ2llcgorICAtIEZpeGVzIHp1cnVlY2t6aWVoZW4gZGFyZiBqZWRlciBNYWdpZXIgKHNvbGFuZ2UgaXNzdWUgbmljaHQgZXhwaXJlZCkKKyAgLSBFTSsgZHVlcmZlbiBhbGxlcworCitSYW5kYmVtZXJrdW5nOgorICBNb2VjaHRlIG1hbiBuaWNodCwgZGFzcyB2b20gTWFnaWVyIHNlbGJzdCBhdXNnZWxvZXN0ZSBGZWhsZXIgaW4gL3BsYXllcnMvCisgIHByb3Rva29sbGllcnQgd2VyZGVuLCBrYW5uIGRlciBNYWdpZXIgX2luIHNpY2hfIGRpZSBQcm9wIFBfRE9OVF9MT0dfRVJST1JTCisgIChhdXMgL3NlY3VyZS9lcnJvcmQuaCkgYXVmIDEgc2V0emVuLgorICBBQ0hUVU5HOiBkYXMgYmVkZXV0ZXQsIGRhc3MgdWViZXIgRmVobGVyIGtlaW5lIEluZm9ybWF0aW9uZW4gbWVocgorICB2b3JsaWVnZW4sIGRpZSBiZWltIEZpeGVuIGhlbGZlbiBrb2VubmVuLiBCZWRlbmt0IGRhcyBiaXR0ZSwgd2VubiBpaHIgZGllCisgIFByb3Agc2V0enQuCisgCisKK1NJRUhFIEFVQ0g6CisgUXVlcnlVSURzRm9yV2l6YXJkKCksIFF1ZXJ5V2l6YXJkRm9yVUlEKCkKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9mZXJua2FtcGZ3YWZmZW4gYi9kb2Mvd2l6L2Zlcm5rYW1wZndhZmZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGRkMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9mZXJua2FtcGZ3YWZmZW4KQEAgLTAsMCArMSwxMjggQEAKK1p1c2FtbWVuZmFzc3VuZyB6dSBGZXJua2FtcGZ3YWZmZW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBTY2h1c3N3YWZmZToKKyAgPT09PT09PT09PT09CisgICAgU3RhbmRhcmRvYmpla3Q6IC9zdGQvcmFuZ2VkX3dlYXBvbi5jCisKKyAgICBQX1dDOiAgICAgICAgICAgZ2lidCBkZW4gU2NoYWRlbiBpbSBOYWhrYW1wZiBhbiAod2VubiBtYW4gZGFtaXQgYXVmIGVpbmVuCisgICAgICAgICAgICAgICAgICAgIEdlZ25lciBlaW5wcnVlZ2VsdC4gRGVmYXVsdCAzMC4KKyAgICBQX1FVQUxJVFk6ICAgICAgbnVyIGJlaW0gTmFoa2FtcGYgcmVsZXZhbnQuIERlZmF1bHQgMTAwLgorICAgIFBfTlJfSEFORFM6ICAgICBCb2VnZW4gdW5kIEFybWJydWVzdGUgc2luZCBpbiBqZWRlbSBGYWxsIHp3ZWloYWVuZGlnLgorICAgIFBfU0hPT1RJTkdfV0M6ICBEaWUgQmFzaXMtV2FmZmVua2xhc3NlIGRlciBGZXJud2FmZmUuCisgICAgUF9SQU5HRTogICAgICAgIFJlaWNod2VpdGUgZGVyIFdhZmZlLiBEZWZhdWx0IDUwLgorICAgIFBfU1RSRVRDSF9USU1FOiBBbnphaGwgZGVyIFJ1bmRlbiwgZGllIHp1bSBMYWRlbi9TcGFubmVuIGRlciBXYWZmZQorICAgICAgICAgICAgICAgICAgICBiZW5vZXRpZ3Qgd2VyZGVuLiBEZWZhdWx0IDEuCisgICAgUF9BTU1VTklUSU9OOiAgIEJlbm9ldGlndGVyIE11bml0aW9uc3R5cC4KKworICAgIEVpbmUgSGl0RnVuYyB3aXJrdCBzaWNoIGF1ZiBkaWUgUF9XQyBhdXMsIG5pY2h0IGF1ZiBQX1NIT09USU5HX1dDIQorCisgICAgTWV0aG9kZW46CisgICAgc3RhdGljIGludCBjbWRfc2hvb3Qoc3RyaW5nIHN0cik7CisgICAgKiBCZWZlaGxzYXVzd2VydHVuZyB1bmQgU2NodXNzdm9yYmVyZWl0dW5nLCB3aXJkIGR1cmNoCisgICAgICBBZGRDbWQoICh7InNjaGllc3MiLCAic2NoaWVzc2UifSksICJjbWRfc2hvb3QiKTsKKyAgICAgIHZlcmtudWVwZnQKKworICAgIHN0YXRpYyBpbnQgc2hvb3RfZGFtKG1hcHBpbmcgc2hvb3QpOworICAgICogU2NoYWRlbnNlcm1pdHRsdW5nCisKKyAgICBzdGF0aWMgc3RyaW5nIEZpbmRSYW5nZWRUYXJnZXQoc3RyaW5nIHN0ciwgbWFwcGluZyBzaG9vdCk7CisgICAgKiBHZWduZXJlcm1pdHRsdW5nCisKKyAgTXVuaXRpb246CisgID09PT09PT09PQorICAgIFN0YW5kYXJkb2JqZWt0OiBOdXR6dW5nIHZvbiAvc3RkL3VuaXQgaXN0IGVtcGZvaGxlbgorCisgICAgUF9TSE9PVElOR19XQzogbGVndCBkaWUgTXVuaXRpb25zc3RhZXJrZSBmZXN0CisgICAgUF9EQU1fVFlQRTogICAgbGVndCBkaWUgU2NoYWRlbnNhcnQgZGVzIFNjaHVzc2FuZ3JpZmZzIGZlc3QKKworICAgIEVpbmUgSGl0RnVuYyBpbiBkZXIgTXVuaXRpb24gd2lya3Qgc2ljaCBhdWYgUF9TSE9PVElOR19XQyBhdXMhCisKKyAgQWxsZ2VtZWluZXM6CisgID09PT09PT09PT09PQorICAgIEluIGRlciBXYWZmZSBsZWd0IG1hbiB1ZWJlciBQX0FNTVVOSVRJT04gZmVzdCwgd2VsY2hlIEFydCBNdW5pdGlvbgorICAgIGRhbWl0IHZlcnNjaG9zc2VuIHdlcmRlbiBrYW5uLiBJbiBkZXIgTXVuaXRpb24gbXVzcyBkaWVzZSBNdW5pdGlvbgorICAgIGF1Y2ggYWxzIElEIGdlc2V0enQgd2VyZGVuLgorCisgICAgVWViZXIgUF9TVFJFVENIX1RJTUUgbGVndCBtYW4gZmVzdCwgYWxsZSB3aWV2aWVsIFJ1bmRlbiBkaWUKKyAgICBGZXJua2FtcGZ3YWZmZSBhYmdlZmV1ZXJ0IHdlcmRlbiBrYW5uIChkZWZhdWx0OiAxKS4KKworICAgIERlciB2ZXJ1cnNhY2h0ZSBTY2hhZGVuIHdpcmQgYXVzIGRlciBTdGFlcmtlIGRlciBGZXJua2FtcGZ3YWZmZQorICAgIHVuZCBkZXIgU3RhZXJrZSBkZXIgTXVuaXRpb24gYmVzdGltbXQuIEluIGJlaWRlbiB3aXJkIGRpZXNlIGluIGRlcgorICAgIFByb3BlcnR5IFBfU0hPT1RJTkdfV0MgYW5nZWdlYmVuLgorCisgICAgWnVzYWV0emxpY2gga2FubiBtYW4gaW4gUF9SQU5HRSBkaWUgUmVpY2h3ZWl0ZSBkZXIgRmVybmthbXBmd2FmZmUKKyAgICBmZXN0bGVnZW4uIEhhdCBtYW4gZWluZW4gUmF1bSBBLCBkZXIgc2ljaCBpbm5lcmhhbGIgZWluZXMgYW5kZXJlbgorICAgIFJhdW1lcyBiZWZpbmRldCAoei5CLiBUcmFuc3BvcnRlciksIHNvIGthbm4gbWFuIG1pdHRlbHMgUF9TSE9PVElOR19BUkVBCisgICAgZGVzc2VuICdHcm9lc3NlJyBmZXN0bGVnZW4uIE1pdCBlaW5lciBXYWZmZSwgZGVyZW4gUF9SQU5HRSBtaW5kZXN0ZW5zCisgICAgZ2xlaWNoIGRpZXNlbSBaYWhsZW53ZXJ0IGlzdCwga2FubiBhdXMgZGllc2VtIFJhdW0gaGVyYXVzIGdlc2Nob3NzZW4KKyAgICB3ZXJkZW4uCisgICAgQWx0ZXJuYXRpdiBrYW5uIG1hbiBpbiBBIGVpbmVuIGFuZGVyZW4gUmF1bSBCKWluIGRpZSBQcm9wZXJ0eQorICAgIFBfVEFSR0VUX0FSRUEgc2NocmVpYmVuLgorCitCRUlTUElFTDoKKyAgICAvLyAjMSBzaWVoZSBhdWNoIC9kb2MvYmVpc3BpZWxlL2Zlcm53YWZmZW4gZnVlciBsYWRiYXJlbiBDb2RlCisKKyAgICAvLyAjMiBlaW5lIGVpbmZhY2hlLCBhYmVyIGd1dGUgU2NobGV1ZGVyCisgICAgaW5oZXJpdCAiL3N0ZC9yYW5nZWRfd2VhcG9uIjsKKworICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgICAgIDo6Y3JlYXRlKCk7CisKKyAgICAgIFNldFByb3AoUF9TSE9SVCwgIkVpbmUgU2NobGV1ZGVyIik7CisgICAgICBTZXRQcm9wKFBfSU5GTywKKyAgICAgICAgIkRpZSBTeW50YXggbGF1dGV0OiBzY2hsZXVkZXIgPGdlc2Nob3NzPiBhdWYgPHppZWw+XG4iKTsKKyAgICAgIC8vIHNvbnN0aWdlIE9iamVrdHByb3BzIC4uLgorCisgICAgICBSZW1vdmVDbWQoKHsic2NoaWVzcyIsICJzY2hpZXNzZSJ9KSk7IC8vIGVudGZlcm5lIERlZmF1bHQtS29tbWFuZG8KKyAgICAgIEFkZENtZCgoeyJzY2hsZXVkZXIiLCAic2NobGV1ZGVyZSJ9KSwgIydjbWRfc2hvb3QpOworCisgICAgICBTZXRQcm9wKFBfV0MsIDEwKTsgICAgICAgICAgLy8gZWluZSBTY2hsZXVkZXIgaXN0IGVyc3RtYWwgaGFybWxvcworICAgICAgU2V0UHJvcChQX0RBTV9UWVBFLCBEVF9XSElQKTsKKworICAgICAgU2V0UHJvcChQX1NIT09USU5HX1dDLCA5MCk7IC8vIHppZW1saWNoIGd1dGUgU2NobGV1ZGVyCisgICAgICBTZXRQcm9wKFBfTlJfSEFORFMsIDEpOyAgICAgLy8gZWluaGFlbmRpZworICAgICAgU2V0UHJvcChQX1dFQVBPTl9UWVBFLCBXVF9SQU5HRURfV0VBUE9OKTsKKyAgICAgIFNldFByb3AoUF9BTU1VTklUSU9OLCBNVU5fU1RPTkUpOworICAgICAgU2V0UHJvcChQX1NUUkVUQ0hfVElNRSwgMSk7CisgICAgICBTZXRQcm9wKFBfUkFOR0UsIDMwKTsgICAgICAgLy8gMzAgd2VpdCBrYW5uIG1hbiBkYW1pdCBudXIgc2NobGV1ZGVybgorICAgIH0KKworICAgIC8vICMzIHBhc3NlbmRlIE11bml0aW9uCisgICAgaW5oZXJpdCAiL3N0ZC91bml0IjsKKworICAgIHZvaWQgY3JlYXRlKCkgeworICAgICAgaWYgKCFjbG9uZXAodGhpc19vYmplY3QoKSkpIHJldHVybjsKKyAgICAgIDo6Y3JlYXRlKCk7CisKKyAgICAgIFNldFByb3AoUF9OQU1FLCAoeyJTY2hsZXVkZXJzdGVpbiIsICJTY2hsZXVkZXJzdGVpbmUifSkgKTsKKyAgICAgIFNldFByb3AoUF9MT05HLCBicmVha19zdHJpbmcoCisgICAgICAgICJIZXJ2b3JyYWdlbmQgZ2Vmb3JtdGUgU2NobGV1ZGVyc3RlaW5lIGF1cyBNdXJtZWxuaXQuIiwgNzgpKTsKKyAgICAgIFNldFByb3AoUF9HRU5ERVIsIE1BTEUpOworICAgICAgU2V0UHJvcChQX0FNT1VOVCwgMSk7CisgICAgICBTZXRQcm9wKFBfU0hPT1RJTkdfV0MsIDUwKTsKKyAgICAgIFNldFByb3AoUF9EQU1fVFlQRSwgKHtEVF9CTFVER0VPTn0pKTsKKyAgICAgIFNldFByb3AoUF9XRUFQT05fVFlQRSwgV1RfQU1NVSk7CisgICAgICBTZXRQcm9wKFBfTUFURVJJQUwsIE1BVF9TVE9ORSk7CisKKyAgICAgIFNldEdyYW1zUGVyVW5pdHMoNjAsMSk7CisgICAgICBTZXRDb2luc1BlclVuaXRzKDI1LDEpOworCisgICAgICBBZGRJZChNVU5fU1RPTkUpOworICAgICAgQWRkU2luZ3VsYXJJZCgoeyJzdGVpbiIsICJzY2hsZXVkZXJzdGVpbiJ9KSk7CisgICAgICBBZGRQbHVyYWxJZCgoeyJzdGVpbmUiLCAic2NobGV1ZGVyc3RlaW5lIn0pKTsKKyAgICAgIEFkZENsYXNzKENMX0FNTVVOSVRJT04pOworICAgIH0KKworU0lFSEUgQVVDSDoKKyAgICBHZW5lcmVsbDogIFBfU0hPT1RJTkdfV0MsIFBfU1RSRVRDSF9USU1FLCBQX0FNTVVOSVRJT04KKyAgICBNZXRob2RlbjogIEZpbmRSYW5nZWRUYXJnZXQoTCksIHNob290X2RhbShMKQorICAgIEdlYmlldDogICAgUF9SQU5HRSwgUF9TSE9PVElOR19BUkVBLCBQX1RBUkdFVF9BUkVBCisgICAgV2FmZmVuOiAgICBQX1dFQVBPTl9UWVBFLCBQX1dDLCBQX0VRVUlQX1RJTUUsIFBfTlJfSEFORFMKKyAgICBLYW1wZjogICAgIEF0dGFjayhMKSwgRGVmZW5kKEwpLCBQX0RJU0FCTEVfQVRUQUNLLCBQX0FUVEFDS19CVVNZCisgICAgVGVhbTogICAgICBQcmVzZW50UG9zaXRpb24oTCkKKyAgICBTb25zdGlnZXM6IFBfTk9HRVQKKyAgICBCYWxhbmNlOiAgIGZlcm53YWZmZW4sIHdhZmZlbiwgYmFsYW5jZQorCisyOS5KdWwgMjAxNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy93aXovZmVybndhZmZlbiBiL2RvYy93aXovZmVybndhZmZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDdjNTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9mZXJud2FmZmVuCkBAIC0wLDAgKzEsMTE4IEBACisKKyBGRVJOV0FGRkVOCisKKyAgYS4gQWxsZ2VtZWluZXMKKyAgICAgRmVybndhZmZlbiBzaW5kIGVpbmUgcmVsYXRpdiBuZXVlIEVyZ2Flbnp1bmcgenVtIEthbXBmc3lzdGVtIGRpZXNlcyBNdWRzLCAKKyAgICAgZGllIG1pdCBkZXIgRWluZnVlaHJ1bmcgZGVzIFRlYW1rYW1wZmVzIGVyc3QgbW9lZ2xpY2ggd3VyZGUuCisgICAgIFNjaG9uIGJpc2hlciBnYWIgZXMgZWluemVsbmUgRmVybndhZmZlbiAoei5CLiBSb2JpbnMgQm9nZW4pLCBkaWUgYWJlcgorICAgICBJbnNlbGxvZXN1bmdlbiB1bmQgU29uZGVyZmFlbGxlIHdhcmVuLiBEYXMgbmV1ZSBTdGFuZGFyZG9iamVrdCBmdWVyIAorICAgICBGZXJud2FmZmVuIGlzdCBudW4gL3N0ZC9yYW5nZWRfd2VhcG9uLmMsIGRhcyBkaWUgbm9ldGlnZSBGdW5rdGlvbmFsaXRhZXQgCisgICAgIGJpZXRldCB1bmQgbGVpY2h0IHVlYmVyIFByb3BlcnRpZXMgenUga29uZmlndXJpZXJlbiBpc3QuIE1pdCBGZXJud2FmZmVuIAorICAgICBzaW5kIHVlYnJpZ2VucyBhdXNuYWhtc2xvcyBXYWZmZW4gZ2VtZWludCwgZGllIE11bml0aW9uIGJlbm9ldGlnZW4sIAorICAgICBuaWNodCBldHdhIFNwZWVyZSBvZGVyIGRlcmdsZWljaGVuLgorCisgICoqIEJpc2hlciBzaW5kIGFsbGUgRmVybndhZmZlbiBhdXNuYWhtc2xvcyBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcsIGRhcyAgKioKKyAgKiogZ2lsdCBhdWNoIGZ1ZXIgamVnbGljaGUgTXVuaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKgorICAgICAKKyAgYi4gUHJvcGVydGllcworICAgICBQX1dDCisgICAgICAgIFZvcnNpY2h0IG1pdCBkaWVzZXIgUHJvcGVydHkuIEJlaSBGZXJud2FmZmVuIGdpYnQgc2llIF9udXJfIGRlbgorICAgICAgICBTY2hhZGVuIGJlaSBad2Vja2VudGZyZW1kdW5nIGRlciBXYWZmZSBhbHMgS251ZXBwZWwgYW4uIAorICAgICAgICBEZW1lbnRzcHJlY2hlbmQgaXN0IGRpZXNlciBXZXJ0IGV4dHJlbSBuaWVkcmlnIHp1IGhhbHRlbi4KKyAgICAgICAgU3RhbmRhcmR3ZXJ0IGlzdCBoaWVyIDMwLCBkZXIgYXVjaCBudXIgaW4gQXVzbmFobWVmYWVsbGVuIAorICAgICAgICB1ZWJlcnNjaHJpdHRlbiB3ZXJkZW4gc29sbHRlLiBLYXVtIGVpbmUgQXJtYnJ1c3Qgb2RlciBlaW4gQm9nZW4gCisgICAgICAgIHRhdWd0IG51bm1hbCBhbHMgZ3Jvc3NhcnRpZ2UgTmFoa2FtcGZ3YWZmZS4KKworICAgICBQX1FVQUxJVFkKKyAgICAgICAgV2lyZCBudXIgYmVpbSBOYWhrYW1wZiBtaXQgZGVyIFdhZmZlIGJlYWNodGV0LiBTdGFuZGFyZG1hZXNzaWcgYXVmCisgICAgICAgIDEwMCBnZXNldHp0LCBkYSBCb2VnZW4gdW5kIEFybWJydWVzdGUgbGVpY2h0IGJlc2NoYWVkaWd0IHdlcmRlbiwKKyAgICAgICAgd2VubiBtYW4gZGFtaXQgYXVmIGplbWFuZGVuIGVpbnBydWVnZWx0LgorCisgICAgIFBfSElUX0ZVTkMgCisgICAgICAgIEhpdEZ1bmMgZnVlciBkZW4gX05haGthbXBmXy4gSGF0IGJlaW0gU2NodXNzIG1pdCBkZXIgV2FmZmUga2VpbmVuCisgICAgICAgIEVpbmZsdXNzLiAKKyAgICAgICAgICAgICAgICAKKyAgICAgUF9OUl9IQU5EUworICAgICAgICBCb2VnZW4gdW5kIEFybWJydWVzdGUgc2luZCBpbiBqZWRlbSBGYWxsIHp3ZWloYWVuZGlnLiBFaW5oYWVuZGlnZQorICAgICAgICBGZXJud2FmZmVuIHNpbmQgYWJlciBkZW5rYmFyIChTY2hsaW5nZW4genVtIFNjaGxldWRlcm4ga2xlaW5lciAKKyAgICAgICAgU3RlaW5lIHouQi4pCisgICAgICAgIAorICAgICBQX1NIT09USU5HX1dDCisgICAgICAgIERpZSBCYXNpcy1XYWZmZW5rbGFzc2UgZGVyIEZlcm53YWZmZS4gWnUgaWhyIHdpcmQgZGllIFdhZmZlbmtsYXNzZQorICAgICAgICBkZXIgTXVuaXRpb24gYWRkaWVydCwgdW0gZGVuIGVuZGd1ZWx0aWdlbiBBbmdyaWZmc3dlcnQgYmVpbSBTY2h1c3MKKyAgICAgICAgenUgYmVyZWNobmVuLgorICAgICAKKyAgICAgUF9SQU5HRSAKKyAgICAgICAgUmVpY2h3ZWl0ZSBkZXIgV2FmZmUgaW4gTWV0ZXJuLiBXaWNodGlnLCB3ZW5uIGF1cyBDb250YWluZXJuIAorICAgICAgICAoV2FjaHR1ZXJtZW4sIFNjaGlmZmVuLCBldGMuKSBuYWNoIGF1c3NlbiBnZXNjaG9zc2VuIHdpcmQuCisgICAgICAgIERhbWl0IGRhcyBmdW5rdGlvbmllcnQsIG11c3MgZGllc2VyIFdlcnQgaG9laGVyIHNlaW4gYWxzIGRlcgorICAgICAgICBpbSBDb250YWluZXIgZGVmaW5pZXJ0ZSAoc3RlaHQgZG9ydCBpbiBkZXIgUF9TSE9PVElOR19BUkVBKS4KKyAgICAKKyAgICAgUF9TVFJFVENIX1RJTUUKKyAgICAgICAgQW56YWhsIGRlciBSdW5kZW4sIGRpZSB6dW0gTGFkZW4vU3Bhbm5lbiBkZXIgV2FmZmUgYmVub2V0aWd0CisgICAgICAgIHdlcmRlbi4gMSBpc3QgaGllciBkZXIgU3RhbmRhcmR3ZXJ0LCBkYXMgYmVkZXV0ZXQsIGVzIGthbm4gamVkZQorICAgICAgICBSdW5kZSBnZXNjaG9zc2VuIHdlcmRlbi4KKyAgICAgCisgICAgIFBfQU1NVU5JVElPTgorICAgICAgICBCZW5vZXRpZ3RlciBNdW5pdGlvbnN0eXAuIEhpZXIgaXN0IGVpbmUgZGVyIG1vZWdsaWNoZW4gS29uc3RhbnRlbgorICAgICAgICAoTVVOXyopIGVpbnp1c2V0emVuICh6LkIuIE1VTl9BUlJPVyBmdWVyIEJvZWdlbikuCisgICAgIAorICAgICBQX05PR0VUCisgICAgICAgIEhhdCBiZWkgRmVybndhZmZlbiBlaW5lIHp1c2FldHpsaWNoZSBCZWRldXR1bmcuIFdlbm4gZ2VzZXR6dCwgbXVzcworICAgICAgICBkaWUgV2FmZmVuIG5pY2h0IGdlenVlY2t0IHdlcmRlbiwgdW0gc2llIGFiZmV1ZXJuIHp1IGtvZW5uZW4uIERhcworICAgICAgICBpc3Qgei5CLiBmdWVyIEthdGFwdWx0ZSBnZWRhY2h0LCBkaWUgaW0gUmF1bSBzdGVoZW4uCisgICAgICAgIAorICAgICBGdWVyIGRpZSBNdW5pdGlvbiBnaWJ0IGVzIGtlaW4gU3RhbmRhcmRvYmpla3QuIFdpY2h0aWcgaXN0IG51ciwgZGFzcyAKKyAgICAgZGllIGVudHNwcmVjaGVuZGVuIFByb3BlcnRpZXMgZ2VzZXR6dCBzaW5kLiBOb3JtYWxlcndlaXNlIHNvbGx0ZSBkaWUgCisgICAgIE11bml0aW9uIG5hdHVlcmxpY2ggZWluZSBVbml0IHNlaW4sIGFiZXIgYXVjaCBFaW56ZWxvYmpla3RlIChlaW4KKyAgICAgYmVzb25kZXJlciBQZmVpbCBvZGVyIGVpbiBncm9zc2VyIFN0ZWluIGZ1ZXIgZWluIEthdGFwdWx0KSBzaW5kIAorICAgICBtb2VnbGljaC4KKworICAgICBQcm9wZXJ0aWVzIGZ1ZXIgZGllIE11bml0aW9uIHNpbmQ6CisgICAgIAorICAgICBQX1NIT09USU5HX1dDCisgICAgICAgIERpZSBXYWZmZW5rbGFzc2UgZGVyIE11bml0aW9uLiBXaXJkIHp1ciBXQyBkZXIgV2FmZmUgYWRkaWVydC4KKyAgICAgICAgCisgICAgIFBfREFNX1RZUEUKKyAgICAgICAgU2NoYWRlbnN0eXAgZGVyIE11bml0aW9uLiBTb2xsdGUgbm9ybWFsZXJ3ZWlzZSBEVF9QSUVSQ0UgZnVlciAKKyAgICAgICAgUGZlaWxlIGFsbGVyIEFydCB1bmQgRFRfQkxVREdFT04gZnVlciBzdHVtcGZlIE11bml0aW9uIHdpZSBTdGVpbmUKKyAgICAgICAgc2Vpbi4gTWFnaXNjaGUgU2NoYWRlbnNhcnRlbiBzaW5kIGFiZXIgbmF0dWVybGljaCBtb2VnbGljaC4KKyAgICAgICAgCisgICAgIFBfSElUX0ZVTkMKKyAgICAgICAgSGl0RnVuYywgZGllIGJlaW0gU2NodXNzIG1pdCBkZXIgTXVuaXRpb24gYmVudXR6dCB3aXJkLgorICAgICAgICAKKyAgICAgQXVzc2VyZGVtIG11c3MgaW4gZGVyIE11bml0aW9uIG1pdHRlbHMgQWRkSWQoKSBkZXIgZW50c3ByZWNoZW5kZQorICAgICBNdW5pdGlvbnN0eXAgZ2VzZXR6dCB3ZXJkZW4sIHouQi4gTVVOX0FSUk9XLgorCisgIGMuIFNwZXppYWx3YWZmZW4vRmVybndhZmZlbiBtaXQgU29uZGVyZnVua3Rpb25lbgorICAKKyAgICAgU2llaGUgSGlud2Vpc2UgenUgZW50c3ByZWNoZW5kZW4gTmFoa2FtcGZ3YWZmZW4uCisgICAgIAorICBkLiBHZW5laG1pZ3VuZ3NncmVuemVuCisgICAgIEFsbGUgV2FmZmVuIGRpZXNlciBBcnQgc2luZCBncnVuZHNhZXR6bGljaCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisgICAgIEZvbGdlbmRlIFdlcnRlIHNvbGx0ZW4gYWxsZXJkaW5ncyBPYmVyZ3JlbnplbiBkYXJzdGVsbGVuLCBkaWUKKyAgICAgaW0gTm9ybWFsZmFsbCBuaWNodCB6dSBVZWJlcnNjaHJlaXRlbiBzaW5kOgorICAgICAKKyAgICAgV2FmZmUga2FubiBqZWRlIFJ1bmRlIGFiZ2VmZXVlcnQgd2VyZGVuOiAgUF9TSE9PVElOR19XQyAxMDAKKyAgICAgV2FmZmUgYnJhdWNodCBlaW5lIExhZGV6ZWl0ICAgICAgICAgICAgOiAgUF9TSE9PVElOR19XQyAxMzAKKyAgICAgCisgICAgIERpZSBPYmVyZ3JlbnplIGZ1ZXIgTXVuaXRpb24gbGllZ3QgYmVpIDogIFBfU0hPT1RJTkdfV0MgNjAuCisKKyAgZS4gTmFjaGJlbWVya3VuZworICAgICBTZWlkIGJpdHRlIHZvcnNpY2h0aWcgbWl0IFBfU0hPT1RJTkdfQVJFQSBpbiBSYWV1bWVuL0NvbnRhaW5lcm4uIAorICAgICBCaXNoZXIgaXN0IGRpZXNlcyBTY2hpZXNzZW4gdm9uIFJhdW0genUgUmF1bSB3ZWl0ZXN0Z2VoZW5kIHVuZ2V0ZXN0ZXQsCisgICAgIHVuZCBlcyBpc3QgbmljaHQga2xhciwgd2VsY2hlIFByb2JsZW1lIGRhcyB2ZXJ1cnNhY2hlbiBrYW5uLiBXZW5uIAorICAgICBldmVudHVlbGxlIFppZWxlIGtlaW5lIE1vZWdsaWNoa2VpdCBoYWJlbiwgc2ljaCB6dSB3ZWhyZW4gb2RlciAKKyAgICAgd2VnenVsYXVmZW4sIGlzdCBzY2huZWxsIGplZ2xpY2hlIEJhbGFuY2UgZGFoaW4uIERpZSBSZWdpb25zbWFnaWVyCisgICAgIGhhYmVuIGJlaSBBYm5haG1lIHZvbiBHZWJpZXRlbiBkYXJhdWYgenUgYWNodGVuLCBkYXNzIGRpZXNlIFByb3BlcnR5CisgICAgIG51ciBpbiB3ZW5pZ2VuLCBndXQgYmVncnVlbmRldGVuIFJhZXVtZW4gZ2VzZXR6dCB3aXJkLgorICAKKyBTSUVIRSBBVUNICisKKyAgICAgYmFsYW5jZSwgcnVlc3R1bmdlbiwgd2FmZmVuLCB1bmlxdWVzLCBucGNzLCBncmVuendlcnRlLAorICAgICBhdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbiwgcmVzaXN0ZW56ZW4sIGthbXBmb2JqZWt0ZSwKKyAgICAgZmVybmthbXBmd2FmZmVuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExFVFpURSBBZU5ERVJVTkc6CisgICAgRG9uLCAxMC4wOC4yMDAwLCAyMjozMDowMCB2b24gUGFyYWNlbHN1cwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9mb29kIGIvZG9jL3dpei9mb29kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5OGUzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2Zvb2QKQEAgLTAsMCArMSwyMjMgQEAKK0ZPT0QsIERSSU5LICYgQUxDT0hPTAorPT09PT09PT09PT09PT09PT09PT09CisKKyAgICBFcyB3aXJkIGVtcGZvaGxlbiwgamVkZSB0cmFnYmFyZSBIZWlsdW5nIHVlYmVyICIvc3RkL2Zvb2QiCisgICAgenUgaW1wbGVtZW50aWVyZW4uIEhpZXIgYnJhdWNodCBtYW4gbnVyIHdlbmlnZSBQcm9wZXJ0aWVzIHNldHplbiwgdW0KKyAgICBzaWNoZXJ6dWdlaGVuLCBkYXNzIGRpZSBIZWlsdW5nIGtvcnJla3QgdmVybGFldWZ0LgorCisgICAgQml0dGUgYmVpIGRlciBSZWFsaXNpZXJ1bmcgdm9uIHRyYWdiYXJlbiBUYW5rZW4gSU1NRVIgbWl0IGRlciBCYWxhbmNlCisgICAgc3ByZWNoZW4uIERpZSBIZWlsdW5nIHVudGVybGllZ3QgZ2VuYXVlciBLb250cm9sbGUuIEV3aWcgaGFsdGJhcmUgU3BlaXNlbgorICAgIHNpbmQgc293aWVzbyBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcgdW5kIG51ciBtaXQgZ3V0ZXIgQmVncnVlbmR1bmcgdW5kCisgICAgc3RyZW5nZW4gQXVmbGFnZW4gZXJsYXVidC4KKworRkVBVFVSRVM6CisgICAgVW50ZXJzdHVldHp0IHdpcmQgZGFzIEtvbnN1bWllcmVuIHZvbiBTcGVpc2VuIHBlciBFc3NlbiBvZGVyIFRyaW5rZW4gYXVjaAorICAgIGluIG1laHJlcmVuIFBvcnRpb25lbi4gRGllIFNwZWlzZW4gdmVyZGVyYmVuIHVuZCB3ZXJkZW4gdmVybmljaHRldC4KKyAgICBFcyBzaW5kIExlYmVuc21pdHRlbCBtaXQgQmVoYWVsdGVyIG1vZWdsaWNoLCBzbyBkYXNzIGRpZXNlciBsZWVyCisgICAgenVydWVja2JsZWlidCwgd2VubiBkZXIgSW5oYWx0IGdlZ2Vzc2VuIG9kZXIgdmVybmljaHRldCB3dXJkZS4KKyAgICBEaWUgV2lya3VuZyB2b24gU3BlaXNlbiBrYW5uIG5lYmVuIGRlciBadWZ1ZWhydW5nIHZvbiBMZWJlbnMtIHVuZCBLb256ZW4tCisgICAgdHJhdGlvbnNwdW5rdGVuIGVyd2VpdGVydCB3ZXJkZW4uIERpZSBXaXJrdW5nIHZlcmRvcmJlbmVyIFNwZWlzZW4ga2FubiAKKyAgICBnZXRyZW5udCBkZWZpbmllcnQgd2VyZGVuLgorICAgIFdlcnQgdW5kIEdld2ljaHQgZGVyIFNwZWlzZSB3ZXJkZW4gaW4gQWJoYWVuZ2lna2VpdCBkZXIgUmVzdG1lbmdlbiBpbW1lcgorICAgIGtvcnJla3QgYmVyZWNobmV0LgorCitSRUFMSVNJRVJVTkc6CisgICAgRGllIFJlYWxpc2llcnVuZyBkZXIgVGltZXIgbGFldWZ0IHVlYmVyIGRpZSBSZXNldHMgZGVyIFNwZWlzZS4gQ2FsbG91dHMKKyAgICB3ZXJkZW4gbGVkaWdsaWNoIHZlcndlbmRldCwgdW0gZGVuIEF1ZnJ1ZiBkZXMgUmVzZXRzIHp1IGdhcmFudGllcmVuLgorICAgIEVzIHdpcmQgYXVjaCBnZXBydWVmdCwgZGFzcyBkZXIgQXVmcnVmIGRlciBSZXNldHMgcGVyIEhhbmQgbmljaHRzCisgICAgZHVyY2hlaW5hbmRlciBicmluZ3QuCisKKyAgICBEZXMgV2VpdGVyZW4gaXN0IHNpY2hlcmdlc3RlbGx0LCBkYXNzIGRlciBTcGllbGVyIG5pY2h0IG1pdCBGdXR0ZXIgaW4KKyAgICBCZXJ1ZWhydW5nIGtvbW10LCBkZXNzZW4gVGltZXIgenVtIFZlcmRlcmJlbiBpbml0aWFsaXNpZXJ0IGlzdC4KKworICAgIERhcyBLb256ZXB0IGlzdCBkZW0gSGVpbHVuZ3Nrb256ZXB0IGRlciBLbmVpcGVuIGFuZ2VwYXNzdCB3b3JkZW4uCisgICAgRGVtIGVudHNwcmVjaGVuZCBzaW5kIGRpZSBQcm9wZXJ0aWVzIHNlaHIgYWVobmxpY2guCisKK1BST1BFUlRJRVM6CisKKyAgICAgIFBfUE9SVElPTlMgOiBBbnphaGwgZGVyIFBvcnRpb25lbiAod2llIG9mdCBrYW5uIG1hbiBhYmJlaXNzZW4gLyAKKyAgICAgICAgICAgICAgICAgICBlaW5lbiBTY2hsdWNrIG5laG1lbikKKworICAgICAgICAgIFBfRk9PRCA6IEZ1ZWxsZ3JhZCBkZXIgU3BlaXNlIHBybyBQb3J0aW9uLCBtdXNzIGdlc2V0enQgc2Vpbiwgd2VubgorICAgICAgICAgICAgICAgICAgIFBfRFJJTksgbmljaHQgZ2VzZXR6dCBpc3QKKyAgICAgICAgIFBfRFJJTksgOiBGdWVsbGdyYWQgZGVyIEZsdWVzc2lna2VpdCBwcm8gUG9ydGlvbiwgbXVzcyBnZXNldHp0IHNlaW4sCisgICAgICAgICAgICAgICAgICAgd2VubiBQX0ZPT0QgbmljaHQgZ2VzZXR6dCBpc3QKKyAgICAgICBQX0FMQ09IT0wgOiBBbGtvaG9sbGV2ZWwgcHJvIFBvcnRpb24gCisKKyAgICAgICAgUF9XRUlHSFQgOiBHZXdpY2h0IHBybyBQb3J0aW9uIChiZWkgUXVlcnlQcm9wKFBfV0VJR0hUKSB3aXJkIGRhcworICAgICAgICAgICAgICAgICAgIGtvbXBsZXR0ZSBHZXdpY2h0IGFsbGVyIFBvcnRpb25lbiArIGV2ZW50dWVsbCBCZWhhZWx0ZXIgCisgICAgICAgICAgICAgICAgICAgenVydWVja2dlZ2ViZW4pCisgICAgICAgICBQX1ZBTFVFIDogV2VydCBwcm8gUG9ydGlvbiAgKGJlaSBRdWVyeVByb3AoUF9WQUxVRSkgd2lyZCBkZXIKKyAgICAgICAgICAgICAgICAgICBrb21wbGV0dGUgV2VydCBhbGxlciBQb3J0aW9uZW4gKyBldmVudHVlbGwgQmVoYWVsdGVyIAorICAgICAgICAgICAgICAgICAgIHp1cnVlY2tnZWdlYmVuKQorCisgICAgICAgICAgICBQX0hQIDogQW56YWhsIGRlciBMUCwgZGllIHByb3AgUG9ydGlvbiBnZWhlaWx0L2dlc2Nod2FlY2h0IHdlcmRlbgorICAgICAgICAgICAgUF9TUCA6IEFuemFobCBkZXIgS1AsIGRpZSBwcm9wIFBvcnRpb24gZ2VoZWlsdC9nZXNjaHdhZWNodCB3ZXJkZW4KKyAgUF9ESVNUUklCVVRJT04gOiBWZXJ0ZWlsdW5nIGRlciBIZWlsdW5nIGF1ZiBkaWUgSGVhcnRiZWF0cworICAgICAgICAgICAgICAgICAgIChzaWVoZSBIaWxmZSB6dSBIX0RJU1RSSUJVVElPTiBpbiBjb25zdW1lKQorCisgICAgICBQX0xJRkVUSU1FIDogWmVpdCBpbiBTZWt1bmRlbiwgYmlzIGRpZSBTcGVpc2UgdmVyZGlyYnQgKD4wKQorICAgICAgICAgICAgICAgICAgIFphZWhsdCBhYiBkZXIgZXJzdGVuIEluYmVzaXR6bmFobWUgZHVyY2ggZWluZW4gU3BpZWxlcgorUF9SRVNFVF9MSUZFVElNRSA6IFplaXQgaW4gUmVzZXRzLCBiaXMgZGllIFNwZWlzZSB2ZXJkaXJidCAoPjApCisgICAgICAgICAgICAgICAgICAgRGllIExhZW5nZSBkZXIgZWluemVsbmVuIFJlc2V0cyB3aXJkIHdpZSB1ZWJsaWNoIGJlcmVjaG5ldAorICAgICAgICAgICAgICAgICAgIHVuZCBQX0xJRkVUSU1FIGVudHNwcmVjaGVuZCBhdWYgZHVyY2hzY2huaXR0bGljaAorICAgICAgICAgICAgICAgICAgIFBfUkVTRVRfTElGRVRJTUUgKiA0NSAqIDYwIGdlc2V0enQuCisgICAgICAgICAgICAgICAgICAgKGV4aXN0aWVydCwgZGEgYmlzaGVyIG1laXN0ZW5zIGluIFJlc2V0cyBnZXJlY2huZXQgd3VyZGUpCisgICAgICAgICAgICAgICAgICAgU29sbHRlIHNpbm52b2xsZXJ3ZWlzZSBudXIgYWxzIFNldFByb3AoUF9SRVNFVF9MSUZFVElNRSkKKyAgICAgICAgICAgICAgICAgICB2ZXJ3ZW5kZXQgd2VyZGVuLCBrYW5uIGFiZXIgYXVjaCBhYmdlZnJhZ3Qgd2VyZGVuCisKKyAgIFBfRU1QVFlfUFJPUFMgOiBNYXBwaW5nIG1pdCBXZXJ0ZW4gZGVzIEJlaGFlbHRlcnMKKyAgICAgICAgICAgICAgICAgICBBbGxlIGhpZXIgYW5nZWdlYmVuZW4gV2VydGUgKGF1c3NlciBQX1BPUlRJT05TKSB3ZXJkZW4KKyAgICAgICAgICAgICAgICAgICBpbiBkZXIgU3BlaXNlIGdlc2V0enQsIHdlbm4gZGllIGxldHp0ZSBQb3J0aW9uIGtvbnN1bWllcnQKKyAgICAgICAgICAgICAgICAgICB3dXJkZS4gV2VubiBkaWVzZSBQcm9wIGxlZXIgaXN0LCB3aXJkIGRhcyBPYmpla3QgemVyc3RvZXJ0LAorICAgICAgICAgICAgICAgICAgIHdlbm4ga2VpbmUgUG9ydGlvbmVuIG1laHIgZGEgc2luZC4KKyAgICAgICAgICAgICAgICAgICBBY2h0dW5nOiBlcyB3ZXJkZW4ga2VpbmUgY2xvc3VyZXMgdW50ZXJzdHVldHp0ISAKKyAgICAgICAgICAgUF9JRFMgOiAgIFdlcnQgaW4gUF9FTVBUWV9QUk9QUworICAgICAgICAgICAgICAgICAgICAgTGlzdGUgZGVyIElEcyBkZXMgbGVlcmVuIEJlaGFlbHRlcnMKKyAgICAgICAgICAgICAgICAgICAgIEFjaHR1bmc6IGVzIHdlcmRlbiBrZWluZSBjbG9zdXJlcyB1bnRlcnN0dWV0enQhCisgICAgUF9BREpFQ1RJVkVTIDogICBXZXJ0IGluIFBfRU1QVFlfUFJPUFMKKyAgICAgICAgICAgICAgICAgICAgIExpc3RlIGRlciBBZGpla3RpdmUgZGVzIGxlZXJlbiBCZWhhZWx0ZXJzCisgICAgICAgICAgICAgICAgICAgICBBY2h0dW5nOiBlcyB3ZXJkZW4ga2VpbmUgY2xvc3VyZXMgdW50ZXJzdHVldHp0IQorICAgICAgICAgUF9WQUxVRSA6ICAgV2VydCBpbiBQX0VNUFRZX1BST1BTCisgICAgICAgICAgICAgICAgICAgICBXZXJ0IGRlcyBsZWVyZW4gQmVoYWVsdGVycworICAgICAgICBQX1dFSUdIVCA6ICAgV2VydCBpbiBQX0VNUFRZX1BST1BTCisgICAgICAgICAgICAgICAgICAgICBHZXdpY2h0IGRlcyBsZWVyZW4gQmVoYWVsdGVycworCisgICAgICAgIFBfTk9fQkFEIDogRmxhZywgb2IgZGllIFNwZWlzZSB2ZXJkZXJiZW4ga2FubgorICAgICAgICAgICAgICAgICAgIERhcmYgbnVyIGluIEFic3ByYWNoZSBtaXQgZGVyIEJhbGFuY2UgYXVmIDEgZ2VzZXR6dCB3ZXJkZW4hCisKKyAgIFBfREVTVFJPWV9CQUQgOiBXZXJ0LCB3YXMgYmVpbSBWZXJkZXJiZW4gbWl0IGRlbSBPYmplY3QgcGFzc2llcnQKKyAgICAgICAgICAgICAgICAgICBERVNUUk9ZX0JBRCAgID0gRGllIFNwZWlzZSB3aXJkIGJlaW0gVmVyZGVyYmVuIHplcnN0b2VydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiencuIGRlciBCZWhhZWx0ZXIgd2lyZCBnZWxlZXJ0IChkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgIERFU1RST1lfTkVWRVIgPSBEaWUgU3BlaXNlIHdpcmQgYmVpbSBWZXJkZXJiZW4gbmljaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyc3RvZXJ0CisgICAgICAgICAgICAgICAgICAgcG9zLiBpbnRlZ2VyICA9IEFuemFobCBkZXIgU2VrdW5kZW4sIGRpZSB6d2lzY2hlbiBWZXJkZXJiZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kIFplcnN0b2VyZW4gZGVyIFNwZWlzZSBsaWVnZW4gc29sbGVuCisKK01FU1NBR0VTOiAoZHVyY2hsYXVmZW4gcmVwbGFjZV9wZXJzb25hbCgpIHVuZCBrb2VubmVuIHNvbWl0IFBsYXR6aGFsdGVyCisgICAgICAgICAgZnVlciBTcGVpc2UgKDEuIEFyZ3VtZW50KSB1bmQgS29uc3VtZW50ICgyLiBBcmd1bWVudCkgZW50aGFsdGVuKQorCisgICBQX0NPTlNVTUVfTVNHIDogZnVlciBkZW4gUmF1bSwgd2VubiBrb25zdW1pZXJ0IHdpcmQKKyAgICAgUF9FQVRFUl9NU0cgOiBhbiBkZW4gS29uc3VtZW50ZW4KKyAgICAgUF9FTVBUWV9NU0cgOiB3ZW5uIGxlZXJlIEJlaGFlbHRlciBrb25zdW1pZXJ0IHdlcmRlbgorICAgIFBfTk9GT09EX01TRyA6IHdlbm4gR2V0cmFlbmtlIGdlZ2Vzc2VuIHdlcmRlbgorICAgUF9OT0RSSU5LX01TRyA6IHdlbm4gRnV0dGVyIGdldHJ1bmtlbiB3aXJkCisgICAgICAgUF9CQURfTVNHIDogd2VubiBTcGVpc2VuIHZlcmRlcmJlbgorICAgIFBfUkVNT1ZFX01TRyA6IHdlbm4gU3BlaXNlbiB2ZXJuaWNodGV0IHdlcmRlbgorICAgICAgICAgICAgICAgICAgIChudXIgd2VubiBzaWUgbmljaHQgYmVpbSBWZXJkZXJiZW4gdmVybmljaHRldCB3ZXJkZW4pCisgICAgICAgUF9FTlZfTVNHIDogd2VubiBpbSBSYXVtIGxpZWdlbmRlIFNwZWlzZW4ga29uc3VtaWVydCB3ZXJkZW4KKyAgICAgICAgICAgICAgICAgICAoaXN0IGRpZXNlIFByb3AgbGVlciwgZ2VodCBkYXMgc29nYXIhKQorIFBfRk9PRF9GVUxMX01TRyA6IHdlbm4gbWFuIG5peCBtZWhyIGVzc2VuIGthbm4KK1BfRFJJTktfRlVMTF9NU0cgOiB3ZW5uIG1hbiBuaXggbWVociB0cmlua2VuIGthbm4KKyAgUF9BTENfRlVMTF9NU0cgOiB3ZW5uIG1hbiBrZWluZW4gQWxrb2hvbCBtZWhyIHZlcnRyYWVndAorCitNRVRIT0RFTjoKKyAgICAgICAgICAgICBjb25zdW1lIDogd2lyZCBiZWltIEtvbnN1bWllcmVuIGF1ZmdlcnVmZW4sIHdlbm4ga2xhciBpc3QsCisgICAgICAgICAgICAgICAgICAgICAgIGRhc3Mgd2FzIHp1bSBLb25zdW1pZXJlbiBkYSBpc3QuCisgICAgICAgICAgICAgICAgICAgICAgIGdpYnQgZGFzIEVyZ2VibmlzIHZvbiB0cnlfY29uc3VtZSgpIHp1cnVlY2sKKyAgICAgICAgIHRyeV9jb25zdW1lIDogYmVyZWl0ZXQgZGllIERhdGVuIGF1ZiB1bmQgZnVlaHJ0IGxpdmluZy0+Y29uc3VtZSgpIGF1cworICAgICAgICAgICAgICAgICAgICAgICBrYW5uIHp1ciBQcnVlZnVuZyBtaXQgdGVzdG9ubHktRmxhZyBhdWZnZXJ1ZmVuIHdlcmRlbgorICAgICAgICAgICAgICAgICAgICAgICBnaWJ0IGRhcyBFcmdlYm5pcyB2b24gbGl2aW5nLT5jb25zdW1lKCkgenVydWVjaworICAgICBzdWNjZXNzX2NvbnN1bWUgOiB3aXJkIHZvbiBjb25zdW1lKCkgYXVmZ2VydWZlbiwgd2VubiBLb25zdW1pZXJlbiBrbGFwcHQKKyAgICAgICAgICAgICAgICAgICAgICAgZ2lidCBkaWUgTWVsZHVuZ2VuIHp1bSBLb25zdW1pZXJlbiBhdXMKKyAgICAgIGZhaWxlZF9jb25zdW1lIDogd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIEtvbnN1bWllcmVuIG5pY2h0IGtsYXBwdAorICAgICAgICAgICAgICAgICAgICAgICBnaWJ0IGRlbiBHcnVuZCBmdWVyIGRlbiBGZWhsc2NobGFnIGF1cworICAgICAgICAgICAgICAgICAgICAgICAoamUgbmFjaCBFcmdlYm5pcyB2b24gbGl2aW5nLT5jb25zdW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgY29uc3VtZV9iYWQgOiBBZW5kZXJ0IGRpZSBEYXRlbiBmdWVyIGxpdmluZy0+Y29uc3VtZSgpLCB3ZW5uIGVpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyZG9yYmVuZSBTcGVpc2Uga29uc3VtaWVydCB3aXJkCisgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkOiBIZWlsdW5nIHdpcmt0IG5pY2h0LCBWZXJnaWZ0dW5nICsxCisgICAgICAgICAgICBtYWtlX2JhZCA6IHdpcmQgYXVmZ2VydWZlbiwgd2VubiBkaWUgU3BlaXNlIGdlcmFkZSB2ZXJkaXJidAorICAgICAgICAgICAgICAgICAgICAgICBHaWJ0IGRpZSBNZWxkdW5nZW4gYmVpbSBWZXJkZXJiZW4gYXVzCisgICAgICAgICAgICAgICAgICAgICAgIFZlcm5pY2h0ZXQgZGFzIE9iamVrdCwgd2VubiBkYXMgZ2V3b2xsdCBpc3QgCisgICAgICAgICAgICAgICAgICAgICAgIERpZSBNZXRob2RlIHdpcmQgYXVjaCBhdWZnZXJ1ZmVuLCB3ZW5uIG51ciBub2NoIGRlcgorICAgICAgICAgICAgICAgICAgICAgICBCZWhhZWx0ZXIgZXhpc3RpZXJ0ISBBbHNvIGRlbiBUZXN0IGlzX25vdF9lbXB0eSgpIG5pY2h0CisgICAgICAgICAgICAgICAgICAgICAgIHZlcmdlc3NlbiEKKyAgICAgICAgbWFrZV9kZXN0cm95IDogd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGRpZSBTcGVpc2UgYmVyZWl0cyB2ZXJkb3JiZW4gaXN0CisgICAgICAgICAgICAgICAgICAgICAgIHVuZCBkaWUgWmVpdCBhdXMgUF9ERVNUUk9ZX0JBRCBhYmdlbGF1ZmVuIGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgR2lidCBkaWUgTWVsZHVuZyB6dW0gWmVyc3RvZXJlbiBhdXMgdW5kIHJ1ZnQKKyAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9lbXB0eSBhdXMsIHVtIGRpZSBTcGVpc2UgYnp3LiBkZW4gSW5oYWx0IGRlcworICAgICAgICAgICAgICAgICAgICAgICBCZWhhZWx0ZXJzIHp1IHplcnN0b2VyZW4uIEF1c3NlcmRlbSB3aXJkIGRlciBSZXNldAorICAgICAgICAgICAgICAgICAgICAgICBhYmdlc2NoYWx0ZXQuCisgICAgICAgICAgICAgICAgICAgICAgIERpZSBNZXRob2RlIHdpcmQgYXVjaCBhdWZnZXJ1ZmVuLCB3ZW5uIG51ciBub2NoIGRlcgorICAgICAgICAgICAgICAgICAgICAgICBCZWhhZWx0ZXIgZXhpc3RpZXJ0ISBBbHNvIGRlbiBUZXN0IGlzX25vdF9lbXB0eSgpIG5pY2h0CisgICAgICAgICAgICAgICAgICAgICAgIHZlcmdlc3NlbiEKKyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgbWFrZV9lbXB0eSA6IHdpcmQgYXVmZ2VydWZlbiwgd2VubiBkaWUgbGV0enRlIFBvcnRpb24ga29uc3VtaWVydCB3aXJkCisgICAgICAgICAgICAgICAgICAgICAgIE1hY2h0IGF1cyBlaW5lbSB2b2xsZW4gQmVoYWVsdGVyIGVpbmVuIGxlZXJlbiBvZGVyCisgICAgICAgICAgICAgICAgICAgICAgIHZlcm5pY2h0ZXQgZGFzIE9iamVrdC4gRGVyIEJlaGFlbHRlciB2ZXJkaXJidCBhbHNvIGltCisgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGZhbGwgbmljaHQhCisKKyAgICAgICAgICAgICAgICBpbml0IDogU3RhcnRldCBkZW4gVGltZXIgenVtIFZlcmRlcmJlbiBkZXIgU3BlaXNlCisgICAgICAgICAgICAgICAgICAgICAgIChzdGFydF9saWZldGltZSgpKSwgd2VubiBzaWNoIGRhcyBPYmpla3QgaW4gZWluZW0KKyAgICAgICAgICAgICAgICAgICAgICAgU3BpZWxlciBiZWZpbmRldC4KKyAgICAgICAgICAgICAgICAgICAgICAgUHJ1ZWZ0LCBvYiBMYXVmemVpdGVuIGZlaGxlcmhhZnRlcndlaXNlIG5pY2h0IGJlZW5kZXQKKyAgICAgICAgICAgICAgICAgICAgICAgd3VyZGVuIHVuZCBob2x0IGVzIGRhbm4gbmFjaAorICAgICAgICAgIE5vdGlmeU1vdmUgOiBTdGFydGV0IGRlbiBUaW1lciB6dW0gVmVyZGVyYmVuIGRlciBTcGVpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0YXJ0X2xpZmV0aW1lKCkpIGF1Y2gsIHdlbm4gZGllIFNwZWlzZSBpbiBlaW5lbgorICAgICAgICAgICAgICAgICAgICAgICBTcGllbGVyIGJld2VndCB3aXJkLCBvaG5lIGRhc3MgaW5pdCgpIGF1ZmdlcnVmZW4KKyAgICAgICAgICAgICAgICAgICAgICAgd3VyZGUuCisgICAgICAgICAgICAgICByZXNldCA6IHdpcmQgZnVlciAzIFNpdHVhdGlvbmVuIHZlcndlbmRldDoKKyAgICAgICAgICAgICAgICAgICAgICAgMTogRGFzIEZ1dHRlciB3dXJkZSBiZXdlZ3QsIGRlciBUaW1lciBhYmVyIG5vY2ggbmljaHQgCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpc2llcnQgLT4gZXMgd2lyZCBnZXBydWVmdCwgb2IgZGVyIFRpbWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdlc3RhcnRldCB3ZXJkZW4gbXVzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgMjogRGVyIFRpbWVyIGlzdCBhYmdlbGF1ZmVuIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgIGxhZXNzdCBkaWUgU3BlaXNlIHZlcmRlcmJlbiB1bmQgdmVybmljaHRldCBzaWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VnZWJlbmVuZmFsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgMzogRGVyIFRpbWVyIG5hY2ggZGVtIFZlcmRlcmJlbiBpc3QgYWJnZWxhdWZlbiAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJuaWNodGV0IGRpZSBTcGVpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgRXMgd2lyZCBpbW1lciBnZXBydWVmdCwgb2IgZGllIFJlc2V0cyB6ZWl0Z2VyZWNodAorCQkgICAgICAgYXVmZ2VydWZlbiB3dXJkZW4gdW5kIGRpZSBBa3Rpb25lbiBuaWNodCB6dXIgZmFsc2NoZW4KKwkJICAgICAgIFplaXQgcGFzc2llcmVuCisKKyAgICAgICAgaXNfbm90X2VtcHR5IDogRmxhZywgb2Igbm9jaCBQb3J0aW9uZW4gdm9yaGFuZGVuIHNpbmQKKyAgICAgICAgaXNfZHJpbmthYmxlIDogRmxhZywgb2IgU3BlaXNlIHRyaW5rYmFyIGlzdAorICAgICAgICAgICAgICAgICAgICAgICAobnVyIHdlbm4gUF9EUklOSyBnZXNldHp0IHVuZCBQX0ZPT0QgTklDSFQgZ2VzZXR6dCBpc3QpCisgICAgICAgICAgaXNfZWF0YWJsZSA6IEZsYWcgb2IgU3BlaXNlIGVzc2JhciBpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHdlbm4gUF9GT09EIGdlc2V0enQgKFBfRFJJTksgaXN0IGVnYWwpKQorICAgICAgICAgICAgICBpc19iYWQgOiBGbGFnLCBvYiBTcGVpc2UgdmVyZG9yYmVuIGlzdAorCitnZXRfY3VycmVudF9saWZldGltZSA6IFplaXQgaW4gU2VrdW5kZW4sIHdpZSBsYW5nZSBkZXIgVGltZXIgenVtIFZlcmRlcmJlbgorICAgICAgICAgICAgICAgICAgICAgICBsYWV1ZnQgKGlzdCBpbW1lciAwLCB3ZW5uIFBfTk9fQkFEIGdlc2V0enQgaXN0KQorICAgICAgc3RhcnRfbGlmZXRpbWUgOiBzdGFydGV0IGRlbiBUaW1lciB6dW0gVmVyZGVyYmVuIGRlciBTcGVpc2UgZmFsbHMga2VpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgR3J1ZW5kZSBkYWdlZ2VuIHNwcmVjaGVuLCB3aXJkIGludGVybiBhdWZnZXJ1ZmVuLCBrYW5uCisgICAgICAgICAgICAgICAgICAgICAgIGFiZXIgaW4gc3BlemllbGxlbiBTaXR1YXRpb25lbiBhdWNoIG1hbnVlbGwgYXVmZ2VydWZlbgorICAgICAgICAgICAgICAgICAgICAgICB3ZXJkZW4gKHNpZWhlIG9iZW4gdW50ZXIgUkVBTElTSUVSVU5HKQorICAgICAgICAgICAgIG1lc3NhZ2UgOiBlcyB3ZXJkZW4gTWVsZHVuZ2VuIHp1IFN0YXR1c2FlbmRlcnVuZ2VuIHZlcmFyYmVpdGV0CisgICAgICAgICAgICAgICAgICAgICAgIHVuZCBrb3JyZWt0IGF1c2dlZ2ViZW4uIEVzIHdpcmQgZGVyIE5hbWUgZGVyIGF1c3p1LQorICAgICAgICAgICAgICAgICAgICAgICBnZWJlbmVuIFByb3BlcnR5IHVlYmVyZ2ViZW4uCisgICAgICAgICAgICAgICAgICAgICAgIEVzIHdlcmRlbiBhbGxlIG5vdHdlbmRpZ2VuIEVyc2V0enVuZ2VuIHBlcgorICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlX3BlcnNvbmFsIGdlbWFjaHQgdW5kIGdlcHJ1ZWZ0LCBvYiBkZW0gQmVzaXR6ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgb2RlciBkZW0gUmF1bSBkaWUgTWVsZHVuZyBhdXNnZWdlYmVuIHdlcmRlbiBtdXNzLgorICAgICAgICAgICAgICAgICAgICAgICBIaWVydWViZXIgc29sbHRlbiBudXIgTWVsZHVuZ2VuIGF1c2dlZ2ViZW4gd2VyZGVuLCBkaWUKKyAgICAgICAgICAgICAgICAgICAgICAgZHVyY2ggQWVuZGVydW5nZW4gYW4gZGVyIFNwZWlzZSBpbSBSZXNldCBhdXNnZWxvZXN0CisgICAgICAgICAgICAgICAgICAgICAgIHdlcmRlbiwgYWxzbyBpbSByZXNldCBzZWxic3QgdW5kIGluIGRlbiBtYWtlXyotTWV0aG9kZW4uCisKKworU1RBTkRBUkQ6CisgICAgV2VubiBtYW4gbmljaHRzIGluIHNlaW5lbSBGdXR0ZXIgdWViZXJzY2hyZWlidCwgZGFubiBoYXQgZXMKKyAgICBmb2xnZW5kZXMgU3RhbmRhcmR2ZXJoYWx0ZW4uCisgICAgRXMgbXVzcyBpbW1lciBQX0ZPT0Qgb2RlciBQX0RSSU5LIGV4cGxpeml0IGdyb2Vzc2VyIDAgZ2VzZXR6dCB3ZXJkZW4sCisgICAgc29uc3QgbGFlc3N0IHNpY2ggZGFzIExlYmVuc21pdHRlbCBuaWNodCBrb25zdW1pZXJlbiEKKworICAgIC0gSGFsdGJhcmtlaXQ6IDEgUmVzZXQgKDMwICsgcmFuZG9tKDMwKSBNaW51dGVuKQorICAgIC0gZGVyIEFibGF1ZiBkZXIgSGFsdGJhcmtlaXQgc3RhcnRldCwgc29iYWxkIGVpbiBTcGllbGVyIGRpZSBTcGVpc2UgbmltbXQKKyAgICAtIFdlbm4gZGllIFNwZWlzZSBzY2hsZWNodCB3aXJkLCB3aXJkIHNpZSB6ZXJzdG9lcnQKKyAgICAtIERpZSBTcGVpc2UgaGF0IGtlaW5lbiBCZWhhZWx0ZXIKKyAgICAtIEVzIGdpYnQgbnVyIGVpbmVuIFNjaGx1Y2svQmlzc2VuLCBkYW5uIGlzdCBkaWUgU3BlaXNlIHdlZworICAgIC0gR2V3aWNodDogNTAgR3JhbW0gLyBXZXJ0OiAxMCBNdWVuemVuCisgICAgLSBNYW4gaGVpbHQgd2VkZXIgTFAgbm9jaCBLUAorICAgIC0gTWFuIHd1ZXJkZSBhbnNvbnN0ZW4gNSBMUC9LUCBwcm8gSGVhcnRiZWF0IGhlaWxlbgorICAgIC0gTWFuIGthbm4gZGllIFNwZWlzZSBudXIga29uc3VtaWVyZW4sIHdlbm4gbWFuIHNpZSBpbiBkZXIgSGFuZCBoYWVsdAorICAgIC0gV2VubiBtYW4gZGllIHZlcmRvcmJlbmUgU3BlaXNlIGtvbnN1bWllcmVuIGtvZW5udGUsIHd1ZXJkZSBtYW4gbmljaHQKKyAgICAgIGhlaWxlbiBzb25kZXJuIHZlcmdpZnRldCB3ZXJkZW4gKFBfUE9JU09OKzEpCisKK0JFSVNQSUVMRToKKyAgICBCZWlzcGllbGUgenUgdHJhZ2JhcmVuIFNwZWlzZW4gdW5kIEdldHJhZW5rZW4ga2FubiBtYW4gdW50ZXIKKyAgICBkb2MvYmVpc3BpZWxlL2Zvb2QvIG5hY2hzY2hhdWVuCisKK1NJRUhFIEFVQ0g6CisgICAgY29uc3VtZSwgd2l6L2hlaWx1bmcsIAorCitMRVRaVEUgQWVOREVSVU5HOgorICAgIDI1LjA5LjIwMTAsIENhbGRyYQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9mb3JzY2hlcnB1bmt0ZSBiL2RvYy93aXovZm9yc2NoZXJwdW5rdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdmODRkMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovZm9yc2NoZXJwdW5rdGUKQEAgLTAsMCArMSw2NSBAQAorCitGb3JzY2hlcnB1bmt0ZQorPT09PT09PT09PT09PT0KKworIEZPUlNDSEVSUFVOS1RFOgorICAgIERhbWl0IGRpZSBTcGllbGVyIGJlaW0gRXJrdW5kZW4gbmV1ZXIgR2ViaWV0ZSBhdWNoIGFuIE9ydHNrZW5udG5pcworICAgIGdld2lubmVuLCBtdWVzc2VuIGFuIGJlc3RpbW10ZW4gU3RlbGxlbiBGb3JzY2hlcnB1bmt0ZSAoRlApIHZlcmdlYmVuCisgICAgd2VyZGVuLiBEYXp1IGlzdCBpbiBkZW4gbWVpc3RlbiBGYWVsbGVuIGtlaW5lIEFlbmRlcnVuZyBhbiBkZW4gT2JqZWt0ZW4KKyAgICBzZWxic3Qgbm9ldGlnLCBkaWUgUHVua3RlIG11ZXNzZW4gamVkb2NoIHZvbiBlaW5lbSBFcnptYWdpZXIgaW4gZGllCisgICAgRlAtTGlzdGUgZWluZ2V0cmFnZW4gd2VyZGVuLgorCisgICAgRElFIEZPUlNDSEVSUFVOS1RFIE1VRVNTRU4gRUlOR0VUUkFHRU4gV0VSREVOLCBCRVZPUiBEQVMgR0VCSUVUIERFTgorICAgIFNQSUVMRVJOIFpVR0FFTkdMSUNIIEdFTUFDSFQgV0lSRCEKKworICAgIERpZSBUZXN0cGhhc2UgaXN0IGVpbmUgZ3V0ZSBHZWxlZ2VuaGVpdCwgc2ljaCBkYXJ1ZWJlciBHZWRhbmtlbiB6dSBtYWNoZW4sCisgICAgd28gd2VsY2hlIEZQIHZlcmdlYmVuIHdlcmRlbiBrb2VubnRlbi4KKworICAgIEZ1ZXIgZGFzIEVpbnRyYWdlbiBkZXIgRm9yc2NoZXJwdW5rdGUgaXN0IGRlcnplaXQgTWlyaWwgenVzdGFlbmRpZy4KKworIFdBUyBGVWVSIEZQIEtBTk4gSUNIIFZFUkdFQkVOPworICAgIEZvbGdlbmRlIFR5cGVuIHZvbiBGb3JzY2hlcnB1bmt0ZW4gc3RlaGVuIHp1ciBWZXJmdWVndW5nOgorCisgICAgICogRGV0YWlscy4gRGFydW50ZXIgZmFsbGVuIGF1Y2ggU3BlY2lhbERldGFpbHMuCisgICAgICogUmVhZERldGFpbHMuCisgICAgICogU291bmRzIHVuZCBTbWVsbHMuCisgICAgICogS29tbWFuZG9zLCBzb3dlaXQgc2llIG1pdCBBZGRDbWQoKSBhbmdlbWVsZGV0IHdlcmRlbi4KKyAgICAgICBLb21tYW5kb3MsIGRpZSBtaXQgYWRkX2FjdGlvbigpIGFuZ2VtZWxkZXQgd2VyZGVuLCBrb2VubmVuIGF1cworICAgICAgIHRlY2huaXNjaGVuIEdydWVuZGVuIG5pY2h0IGJlcnVlY2tzaWNodGlndCB3ZXJkZW4uCisgICAgICAgS29tbWFuZG9zLCBkaWUgYWxzIEZQcyBlaW5nZXRyYWdlbiBzaW5kLCBnZWJlbiBnZW5hdSBkYW5uIGRlbgorICAgICAgIEZQLCB3ZW5uIDEgenVydWVja2dlZ2ViZW4gd2lyZC4KKyAgICAgKiBBdXNnYWVuZ2UgYmVpIFJhZXVtZW4uIERhcnVudGVyIGZhbGxlbiBhdWNoIFNwZWNpYWxFeGl0cy4KKyAgICAgKiBJbmZvcyBiZWkgTlBDcy4gRGFzIERlZmF1bHRpbmZvIGxhZXNzdCBzaWNoIGFsbGVyZGluZ3MgbmljaHQgb2huZQorICAgICAgIHdlaXRlcmVzIHZlcndlbmRlbi4KKyAgICAgKiBHZXRyYWVua2UgdW5kIFNwZWlzZW4gaW4gS25laXBlbi4KKyAgICAgKiBCZXNvbmRlcmUgQWt0aW9uZW4gc2luZCBhdWNoIG1vZWdsaWNoLCBkYXp1IG11c3MgamVkb2NoIG5vY2ggZXR3YXMgYW0KKyAgICAgICBDb2RlIGhpbnp1Z2VmdWVndCB3ZXJkZW4uIERpZXNlIEFydCB2b24gRm9yc2NoZXJwdW5rdGVuIHNvbGx0ZSBtYW4gbmFjaAorICAgICAgIE1vZWdsaWNoa2VpdCBtZWlkZW4uCisKKyAgICBQcm8gT2JqZWt0IGxhZXNzdCBzaWNoIG51ciBlaW4gRlAgdmVyZ2ViZW4uIERpZSBGUC1EaWNodGUgc29sbHRlIGV0d2EgYmVpCisgICAgZWluZW0gRlAgcHJvIHplaG4gUmFldW1lIGxpZWdlbi4KKworICAgIEluIFF1ZXN0Z2ViaWV0ZW4gc29sbHRlbiBkaWUgRlAgTklDSFQgZnVlciBEZXRhaWxzIG9kZXIgQWt0aW9uZW4gdmVyZ2ViZW4KKyAgICB3ZXJkZW4sIGRpZSBlaW5lbiBkaXJla3QgaW4gZGVyIFF1ZXN0IHdlaXRlcmJyaW5nZW4sIHNvbmRlcm4gZWhlciBmdWVyCisgICAgc29sY2hlLCBkaWUgenUgZGVuIGVudHNjaGVpZGVuZW4gU3RlbGxlbiBmdWVocmVuLiBEYW1pdCB3ZXJkZW4gU3BpZWxlciwKKyAgICBkaWUgc2ljaCBhbGxlcyBnZW5hdSBhbnNlaGVuLCBiZWxvaG50LCB3b2hpbmdlZ2VuIEtvbXBsZXR0bG9lc2VyLCBkaWUgbnVyCisgICAgZGFzIG5vZXRpZ3N0ZSBlaW5nZWJlbiwgbGVlciBhdXNnZWhlbi4KKworIFdJRSBTQUcgSUNIUyBNRUlORU0gRVJaTUFHSUVSPworICAgIFVtIGRpZSBGUCBlaW50cmFnZW4genUga29lbm5lbiwgYnJhdWNoZW4gZGllIEVyem1hZ2llciBlaW5lIExpc3RlIG1pdCBkZW4KKyAgICBub2V0aWdlbiBJbmZvcm1hdGlvbmVuLiBadSBkZW4gbm9ldGlnZW4gSW5mb3JtYXRpb25lbiBnZWhvZXJlbjoKKworICAgICAqIGRlciBEYXRlaW5hbWUgZGVzIE9iamVrdGVzCisgICAgICogZGllIEFydCBkZXMgRlAKKyAgICAgKiBkaWUgU2NobHVlc3NlbHdvZXJ0ZXIsIG1pdCBkZW5lbiBkZXIgRlAgYW5nZXNwcm9jaGVuIHdlcmRlbiBzb2xsCisKKyAgICBEaWUgU2NobHVlc3NlbHdvZXJ0ZXIgc2luZCBub3JtYWxlcndlaXNlIGRpZSBTY2hsdWVzc2VsLCBkaWUgYmVpIGRlbgorICAgIGpld2VpbGlnZW4gQWRkWFhYKCktQXVmcnVmZW4gaW0gT2JqZWt0IGFuZ2VnZWJlbiB3ZXJkZW4uCisKKyAgICBCZWlzcGllbDoKKworICAgIC9wbGF5ZXJzL3dhcmdvbi93b3Jrcm9vbTogZGV0YWlsIHdhbmQsIHdhZW5kZQorICAgIC9wbGF5ZXJzL3dhcmdvbi9tb24vZXJyb2w6IGluZm8gZHJhY2hlbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKwlUaHUsIDIwMTMtMDQtMDQgdm9uIEh1bW5pCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2Z0cCBiL2RvYy93aXovZnRwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYTRjNWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2Z0cApAQCAtMCwwICsxLDQxIEBACitGVFAtWnVnYW5nIGZ1ZXIgTWFnaWVyIChaZXNzdHJhLCAxMi4gRGV6IDIwMTAsIDIzOjE3OjUyKToKK09rLCB3aWUgaW4gYmVrYW5udG1hY2h1bmdlbiBnZXNjaHJpZWJlbiwgd2FyZW4gdW5zZXJlICh1bmQgZGllIGFuZGVyZXIgTXVkcykKK1ZlcnN1Y2hlIGJpc2xhbmcgZXJmb2xnbG9zLCBkYXMgbW9kX211ZC1Nb2R1bCBmdWVyIGRlbiBwcm9mdHBkIHdpZWRlciBhbnMKK0xhdWZlbiB6dSBicmluZ2VuIHVuZCBpY2ggaGFiZSBhbHMgWndpc2NoZW5sb2VzdW5nIHp1bWluZGVzdCBlcnN0bWFsIHdhcworYW5kZXJlcyBnZWJhdXQuCisKK0FsbGVyZGluZ3Mga2FubiBkaWUgYWt0dWVsbGUgTG9lc3VuZyBuaWNodCAnbGl2ZScgYmVpbSBEYXRlaXp1Z3JpZmYgZGFzIE11ZAorZnJhZ2VuLCBvYiBkZXIgVXNlciBkYXMgYXVjaCBkYXJmLiBEYWhlciBzaW5kIGFsbGUgTWFnaWVyIGxlaWRlciBlcnN0bWFsIGF1ZgoraWhyIEhvbWV2ZXJ6ZWljaG5pcyBiZXNjaHJhZW5rdCAtIGRvcnQgZHVlcmZlbiBzaWUgbmF0dWVybGljaCBhbGxlcyBzY2hyZWliZW4KK3VuZCBsZXNlbi4gVm9uIGRvcnQvZG9ydGhpbiBtdXNzIG1hbiBkYW5uIGltIE11ZCBtaXQgY3AvbXYgYXJiZWl0ZW4uCisKK1dlciBzZWluZW4gRlRQLVp1Z2FuZyBha3RpdmllcmVuIHdpbGwsIG11c3MgLSBiaXMgaWNoIGRhcyBpbiBkaWUgTWFnaWVyc2hlbGwKK2VpbmdlYmF1dCBoYWJlIC0gZm9sZ2VuZGUgendlaSBTY2hyaXR0ZSBkdXJjaGZ1ZWhyZW46CisxKSB4ZXZhbCBtYXN0ZXIoKS0+dXBkYXRlX2Z0cF9hY2Nlc3MoZ2V0dWlkKHRoaXNfaW50ZXJhY3RpdmUoKSksIDEpCisgICAoRGVha3RpdmllcmVuIG1pdCB1cGRhdGVfZnRwX2FjY2VzcyhnZXR1aWQodGhpc19pbnRlcmFjdGl2ZSgpKSwgMCkKKzIpIG1pdCBwYXNzd2QgZWluIG5ldWVzIFBXIHNldHplbgorMykgYmlzIHp1ciBuYWVjaHN0ZW4gdm9sbGVuIFN0dW5kZSB3YXJ0ZW4KKworU2Nocml0dCAyKSBpc3QgbGVpZGVyIHp3aW5nZW5kIG5vZXRpZywgZGEgd2lyIGRhcyBQVyBuaWNodCBpbSBLbGFydGV4dAorc3BlaWNoZXJuIHVuZCBwdXJlLWZ0cGQgdW5zZXJlIHZlcnNjaGx1ZXNzZWx0ZW4vZ2VoYXNodGVuIFBhc3N3b2VydGVyIG5pY2h0Cit2ZXJzdGVodC4gRGVzd2VnZW4gbXVlc3NlbiB3aXIgZnVlciBGVFAgZGFzIFBXIGFuZGVycyBzcGVpY2hlcm4sIHdhcyB3aXIgbnVyCitiZWltIE5ldXNldHplbiBlaW5lcyBQV3Mga29lbm5lbi4KKworSWNoIG1vZWNodGUgZXVjaCBub2NoIHVtIGVpbnMgYml0dGVuOiBXZW5uIGlociB3YXMgcGVyIEZUUCBoaW4tIHVuZAoraGVyc2NoaWVidCwgd2FzIGRhbm4gd2VpdGVyICh6LkIuIG5hY2ggL2QpIHZlcnNjaG9iZW4gd2lyZCAob2RlciB2b24gZG9ydCBpaHIKK2V1ZXIgSG9tZXZlcnplaWNobmlzKTogbG9lc2NodCBiaXR0ZSBkZW4gS3JhbSBhdXMgZXVyZW0gL3BsYXllcnMvPG1hZ2llcj4KK3dpZWRlciwgZGVubiBhKSBnZWh0IGRhcyBhbGxlcyBzb25zdCB1ZWJlcmZsdWVzc2lnIGlucyBCYWNrdXAgdW5kIGIpIHdpcmQgZGllCitVZWJlcnNpY2h0IGRldXRsaWNoIHNjaGxlY2h0ZXIsIHdlbm4gbWFuIHggS29waWVuIGRlcyBnbGVpY2hlbiBLcmFtcyBpbSBNdWQKK3ZlcnRlaWx0IGhhdC4KKworQlRXOiBEaWVzZXIgRlRQLVp1Z2FuZyB3aXJkIGRlYWt0aXZpZXJ0LCBmYWxscyBzaWNoIGVpbiBNYWdpZXIgbGFlbmdlciBhbHMgMgorV29jaGVuIG5pY2h0IGltIE11ZCBlaW5sb2dndCwgZGFubiBtdWVzc3QgaWhyIGRpZSBQcm96ZWR1ciBkYSBvYmVuCit3aWVkZXJob2xlbi4KKworU29ycnkgZnVlciBkaWUgVW5hbm5laG1saWNoa2VpdGVuLCBhYmVyIHNvIGlzdHMgZXJzdG1hbCBiZXNzZXIgYWxzIGdhciBuaXguCitGYWxscyB3aWRlciBFcndhcnRlbiBqZW1hbmQgYmVpbSBtb2RfbXVkIGF1c2hlbGZlbiBtYWcsIGlzdCBlciB1ZWJyaWdlbnMKK2hlcnpsaWNoIHdpbGxrb21tZW4uCisKK1plc3N0cmEKK1N0YW5kOiBGZWJydWFyIDIwMTEKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naWZ0IGIvZG9jL3dpei9naWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYzRkOWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2dpZnQKQEAgLTAsMCArMSwxMzIgQEAKK0tyYW5raGVpdGVuLCBHaWZ0ZSB1bmQgRmx1ZWNoZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgRWlubWFsIGFiZ2VzZWhlbiB2b20gZWluZmFjaGVuIFNldHplbiB2b24gUF9QT0lTT04gaW0gU3BpZWxlciBsYXNzZW4gDQorICAgICBzaWNoIEdpZnRlIHVuZCBLcmFua2hlaXRlbiBhdWNoIGFscyBPYmpla3RlIGF1c3Byb2dyYW1taWVyZW4sIGRpZSBkZW0gDQorICAgICBTcGllbGVyIGluIG1laHIgb2RlciB3ZW5pZ2VyIHJlZ2VsbWFlc3NpZ2VuIEFic3RhZW5kZW4gTGViZW5zcHVua3RlIA0KKyAgICAgYWJ6aWVoZW4uIEF1Y2ggRmx1ZWNoZSBrb2VubmVuIG5pY2h0IG51ciBhbHMgUF9DVVJTRUQgaW4gV2FmZmVuIHVuZCANCisgICAgIFJ1ZXN0dW5nZW4sIHNvbmRlcm4gYXVjaCBhbHMgT2JqZWt0ZSB2b3JsaWVnZW4sIHVuZCBkZW0gU3BpZWxlciBkYXMgDQorICAgICBMZWJlbiBzY2h3ZXJtYWNoZW4KKworICAgICBVbSBlaW4gT2JqZWt0IGFscyBHaWZ0IHp1IGtlbm56ZWljaG5lbiwgd2lyZCBkaWUgS2xhc3NlIENMX1BPSVNPTiANCisgICAgIGdlc2V0enQsIGZ1ZXIgZWluZSBLcmFua2hlaXQgaXN0IENMX0RJU0VBU0UgdW5kIGZ1ZXIgZWluZW4gRmx1Y2ggDQorICAgICBDTF9DVVJTRSB6dSBzZXR6ZW4gKG1pdCBBZGRDbGFzcywgc2llaGUgZG9ydCkuIFp1c2FldHpsaWNoIHdpcmQgZGllIA0KKyAgICAgU2Nod2VyZSBkZXIgRXJrcmFua3VuZyBiencuIFZlcmdpZnR1bmcgaW4gZGVyIFByb3BlcnR5IFBfTEVWRUwgDQorICAgICBhYmdlbGVndCwgd29iZWkgUF9MRVZFTCBlaW5lbiBXZXJ0IHp3aXNjaGVuIDEgdW5kIDEwMCBoYWJlbiBzb2xsdGUuIA0KKyAgICAgTWl0Z2xpZWRlciBkZXIgS2xlcmlrZXJnaWxkZSB1bmQgYW5kZXJlIEhlaWxlciBrb2VubmVuIGRhbm4gamUgbmFjaCANCisgICAgIFBfTEVWRUwgZGVuIGJldHJvZmZlbmVuIFNwaWVsZXIgbWVociBvZGVyIHdlbmlnZXIgZ3V0IGhlaWxlbi4gKEtsZXJpa2VyIA0KKyAgICAga29lbm5lbiBDTF9QT0lTT04tVmVyZ2lmdHVuZ2VuIGhlaWxlbiwgZWluaWdlIEhlaWxlciBqZWRvY2ggbmljaHQuKQorCisgICAgIEVpbmUgZWluZGV1dGlnZSBVbnRlcnNjaGVpZHVuZyB6d2lzY2hlbiBHaWZ0ZW4sIEtyYW5raGVpdGVuIHVuZCANCisgICAgIEZsdWVjaGVuIHp1IHRyZWZmZW4sIGlzdCBzY2h3ZXIsIGRlbm4gZGllIEdyZW56ZW4gdmVyc2Nod2ltbWVuLiANCisgICAgIFRyb3R6ZGVtIGhpZXIgZWluZSBncm9iZSBLbGFzc2lmaXppZXJ1bmc6CisKKyAgICAgR2lmdGUgOiBicmluZ3QgZGVyIFNwaWVsZXIgc2ljaCBtZWlzdCBzZWxic3QgYmVpIChpbiBkZW0gZXIgei5CLgorICAgICAgICAgICAgIGVpbmVuIGdpZnRpZ2VuIFBpbHogaXNzdCkuIE9mdCBhdWNoIHNpbmQgZGllIFN0ZWxsZW4sIHdvCisgICAgICAgICAgICAgZWluIFNwaWVsZXIgc2ljaCB2ZXJnaWZ0ZW4ga2FubiwgaXJnZW5kd2llIGdla2VubnplaWNobmV0LAorICAgICAgICAgICAgIHNvIGRhc3MgZWluZSBWZXJnaWZ0dW5nIHVtZ2FuZ2VuIHdlcmRlbiBrYW5uLgorCisgICAgICAgICAgICAgQmVpIEdpZnRlbiB3aXJkIGR1cmNoIGRhcyBIZWlsZW4gZGVyIExldmVsIGRlcyBHaWZ0b2JqZWt0cworICAgICAgICAgICAgIGFiaGFlbmdpZyB2b20gRXJmb2xnIGdlc2Vua3QuIElzdCBkZXIgTGV2ZWwgPD0gMCwgd2lyZCBkYXMKKyAgICAgICAgICAgICBPYmpla3Qgdm9tIEtsZXJpa2VyLVNwZWxsYm9vayBlbnRmZXJudC4gSGVpbGVyIHNvbGx0ZW4gZGFzCisgICAgICAgICAgICAgYWVobmxpY2ggbWFjaGVuLiBMb2dpc2NoIHdhZXJlIGVzIGRhaGVyLCBkZW4gU2NoYWRlbiwgZGVuIGRhcworICAgICAgICAgICAgIE9iamVrdCBtYWNodCwgdm9tIG1vbWVudGFuZW4gTGV2ZWwgYWJoYWVuZ2lnIHp1IG1hY2hlbi4KKworICAgICBLcmFua2hlaXQ6IHdlcmRlbiBkZW0gU3BpZWxlciBkdXJjaCBGcmVtZGVpbndpcmt1bmcgYmVpZ2VicmFjaHQsIGF1Y2gKKyAgICAgICAgICAgICBkdXJjaCBBbnN0ZWNrdW5nIGJlaSBlaW5lbSBhbmRlcmVuIFNwaWVsZXIgb2RlciBOUEMuCisgICAgICAgICAgICAgQmVpIGFuc3RlY2tlbmRlbiBLcmFua2hlaXRlbiBpc3QgYXVmIGRpZSBBbnN0ZWNrcmF0ZSB6dSBhY2h0ZW4KKyAgICAgICAgICAgICB1bmQgZGFyYXVmLCBkYXNzIGRpZSBLcmFua2hlaXQgbWl0IGRlciBaZWl0IGF1Y2ggd2llZGVyCisgICAgICAgICAgICAgYXVzc3RpcmJ0LiBBbHNvIGVudHdlZGVyIGJlaSBqZWRlciBHZW5lcmF0aW9uIGRlciBLcmFua2hlaXQKKyAgICAgICAgICAgICBkYXMgQW5zdGVja3VuZ3NyaXNpa28gc2Vua2VuIG9kZXIgZWlubWFsIGluZml6aWVydGUgU3BpZWxlcgorICAgICAgICAgICAgIGltbXVuaXNpZXJlbi4gRXMgc29sbHRlbiBzaWNoIDIgaWRlbG5kZSBTcGllbGVyIG5pY2h0IGltbWVyCisgICAgICAgICAgICAgd2llZGVyIGdlZ2Vuc2VpdGlnIGJpcyBpbiBhbGxlIGV3aWcgYW5zdGVja2VuIGtvZW5uZW4uIEF1Y2gKKyAgICAgICAgICAgICBpc3QgZGFyYXVmIHp1IGFjaHRlbiwgZGFzcyBOZXR6dG90ZSBuaWNodCBhbmdlc3RlY2t0IHdlcmRlbgorICAgICAgICAgICAgIGtvZW5uZW4gYnp3LiBOZXR6dG90ZSBuaWVtYW5kZW4gYW5zdGVja2VuLCBkYSBzaWNoIHNvbnN0IGRpZQorICAgICAgICAgICAgIEtyYW5raGVpdCBpbSBOZXR6dG90ZW5yYXVtIHZlcmJyZWl0ZW4ga2Fubi4KKworICAgICAgICAgICAgIERhcyBIZWlsZW4gZ2VzY2hpZWh0IGltIEtsZXJpa2VyLVNwZWxsYm9vayB3aWUgYmVpIEdpZnQuCisKKyAgICAgRmx1ZWNoZTogd2VyZGVuIHdpZSBLcmFua2hlaXRlbiBkdXJjaCBGcmVtZGVpbndpcmt1bmcgYmVpZ2VicmFjaHQKKyAgICAgICAgICAgICAoZGVyIFNwaWVsZXIgd2lyZCBoYWx0IHZlcmZsdWNodCkuIEF1c3NlcmRlbSBpc3QgZGllIFdpcmt1bmcgDQorICAgICAgICAgICAgIHZvbiBGbHVlY2hlbiBvZnQgbmljaHQgYXVmIGVpbmZhY2hlcyBBYnppZWhlbiB2b24gTGViZW5zcHVua3RlbiANCisgICAgICAgICAgICAgYmVzY2hyYWVua3QsIHNvbmRlcm4gZGVyIFNwaWVsZXIga2FubiB6LkIuIG5pY2h0IG1laHIgcmljaHRpZyANCisgICAgICAgICAgICAgc3ByZWNoZW4gKFNwcmFjaGZsdWNoIHVlYmVyIFBfUEVSTV9TVFJJTkcpLCBpc3QgaW4gZGVyIEJld2VndW5nIA0KKyAgICAgICAgICAgICBlaW5nZXNjaHJhZW5rdCBvZGVyIGdyZWlmdCB3YWhsbG9zIE5QQ3MgYW4uCisKKyAgICAgICAgICAgICBIaWVyIGlzdCBkYXMgRW50Zmx1Y2hlbiBkdXJjaCBlaW5lbiBLbGVyaWtlciBhbmRlcnMuIEZpbmRldAorICAgICAgICAgICAgIGRhcyBTcGVsbGJvb2sgZWluIENMX0NVUlNFLU9iamVrdCBpbSBJbnYgZGVzIFNwaWVsZXJzLCB3aXJkCisgICAgICAgICAgICAgZ2VnZW4gZGFzIExldmVsIGRlcyBPYmpla3QgZ2V3dWVyZmVsdC4gQmVpIEVyZm9sZyB3aXJkIGRhcworICAgICAgICAgICAgIE9iamVrdCBlbnRmZXJudCwgYmVpIE1pc3NlcmZvbGcgcGFzc2llcnQgbmljaHRzIQorCisgICAgICAgICAgICAgQWxzIEFuaGFsdHNwdW5rdGUgZnVlciBkZW4gTGV2ZWw6CisgICAgICAgICAgICAgLSA8IExldmVsIDEwIHNpbmQgZWluZmFjaCB6dSBlbnRmbHVjaGUKKyAgICAgICAgICAgICAtIDEwIC0gMjAgc2luZCBmdWVyIGtsZWluZSBLbGVyaWtlciBzY2hvbiBlbm9ybSBzY2h3aWVyaWcKKyAgICAgICAgICAgICAgIGZ1ZXIgbWF4LiBLbGVyaWtlciBndXQgenUgZW50Zmx1Y2hlbi4KKyAgICAgICAgICAgICAtIHVlYmVyIDIwIGdlbGluZ3QgZXMgYXVjaCBlaW5lbSBtYXguIEtsZXJpa2VyIG5pY2h0IGltbWVyCisgICAgICAgICAgICAgICBiZWltIGVyc3RlbiBtYWwuCisgICAgICAgICAgICAgLSBhYiAzMCBtdXNzIGRlciBtYXguIEtsZXJpa2VyIHNjaG9uIG1hbCB0YW5rZW4gZ2VoZW4KKyAgICAgICAgICAgICAtIFVlYmVyIExldmVsIDQwIGxpZWd0IGRpZSBDaGFuY2Ugc2Nob24gaW0gUHJvbWlsbGViZXJlaWNoISEhCisgICAgICAgICAgICAgLSBMZXZlbCAxMDAgbGFlc3N0IHNpY2ggdWViZXJoYXVwdCBuaWNodCBtZWhyIGVudGZsdWNoZW4uCisKKyAgICAgICAgICAgICBXaWxsIG1hbiBkZW0gU3BpZWxlciBhbHNvIGVpbmUgcmVlbGxlICh1bmQgbmljaHQgbnVyIA0KKyAgICAgICAgICAgICBtYXRoZW1hdGlzY2hlKSBDaGFuY2UgbGFzc2VuLCBzb2xsdGUgZGVyIEZsdWNobGV2ZWwgdW50ZXIgNDAgDQorICAgICAgICAgICAgIGJsZWliZW4uCisKKyAgICAgRGFzIFNjaGFkZW5zb2JqZWt0IHNlbGJzdCBpc3QgdW5zaWNodGJhciwgbWVpc3QgYXV0b2xvYWQgdW5kIGxvZXN0IGRpZSANCisgICAgIFNjaGFkZW5zZnVua3Rpb24gdWViZXIgQ2FsbG91dHMgYXVzLgorCisgQkVJU1BJRUw6CisgICAgIEhpZXIgZWluIEJlaXNwaWVsIGZ1ZXIgZWluZW4gR2lmdHBpbHogKGdlZnVuZGVuIGJlaSBTaWx2YW5hLCBpbgorICAgICAvZC9kc2NodW5nZWwvc2lsdmFuYS93ZWcvb2JqL3BpbHouYyk6CisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgI3ByYWdtYSBzdHJvbmdfdHlwZXMKKyAgICAgI2luY2x1ZGUgIi4uL3BmYWQuaCIKKworICAgICBpbmhlcml0ICIvc3RkL3RoaW5nIjsKKworICAgICB2b2lkIGNyZWF0ZSgpIHsKKyAgICAgICBpZighY2xvbmVwKFRPKSkgeworICAgICAgICAgICBzZXRfbmV4dF9yZXNldCgtMSk7CisgICAgICAgICAgIHJldHVybjsKKyAgICAgICB9CisgICAgICAgOjpjcmVhdGUoKTsKKworICAgICAgIFNldFByb3AoUF9TSE9SVCwwKTsKKyAgICAgICBTZXRQcm9wKFBfSU5WSVMsMSk7CisgICAgICAgU2V0UHJvcChQX0xPTkcsMCk7CisgICAgICAgU2V0UHJvcChQX05PRFJPUCwxKTsKKyAgICAgICBTZXRQcm9wKFBfTkVWRVJEUk9QLDEpOworICAgICAgIFNldFByb3AoUF9BVVRPTE9BRE9CSiwxKTsKKyAgICAgICBTZXRQcm9wKFBfV0VJR0hULDApOworICAgICAgIFNldFByb3AoUF9OQU1FLCJQaWx6dmVyZ2lmdHVuZyIpOworICAgICAgIFNldFByb3AoUF9LSUxMX05BTUUsIkVpbmUgUGlsenZlcmdpZnR1bmciKTsKKyAgICAgICBTZXRQcm9wKFBfR0VOREVSLEZFTUFMRSk7CisgICAgICAgU2V0UHJvcChQX0FSVElDTEUsMSk7CisgICAgICAgU2V0UHJvcChQX0xFVkVMLDEwKTsKKyAgICAgICBjYWxsX291dCgibmV4dF9zdGVwIiwyKTsKKyAgICAgICBBZGRDbGFzcyhDTF9QT0lTT04pOworICAgICB9CisKKyAgICAgdm9pZCBuZXh0X3N0ZXAoKTsKKworICAgICB2b2lkIG5leHRfc3RlcCgpIHsKKyAgICAgICBvYmplY3QgcGw7CisgICAgICAgaWYoIShwbD1UT0UpIHx8ICFxdWVyeV9vbmNlX2ludGVyYWN0aXZlKHBsKSB8fAorICAgICAgICAgIHBsLT5RdWVyeVByb3AoUF9HSE9TVCkpeworICAgICAgICAgcmVtb3ZlKCk7CisgICAgICAgICByZXR1cm4gOworICAgICAgIH0KKyAgICAgICBjYWxsX291dCgjJ25leHRfc3RlcCAsNSk7CisgICAgICAgaWYoIWludGVyYWN0aXZlKHBsKSkgcmV0dXJuOworICAgICAgIHRlbGxfb2JqZWN0KHBsLAorICAgICAgIAkJICAgIkRlaW4gQmF1Y2ggc2NobWVyenQuIER1IHdpbmRlc3QgRGljaCBpbiBLcmFlbXBmZW4uXG4iKTsKKyAgICAgICBpZihFTlYocGwpKSB0ZWxsX3Jvb20oRU5WKHBsKSwKKyAgICAgICAgcGwtPk5hbWUoKSsiIHdpbmRldCBzaWNoIHZvciBTY2htZXJ6ZW4gYW0gQm9kZW4uXG4iLCh7IHBsIH0pKTsKKyAgICAgICBwbC0+ZG9fZGFtYWdlKFF1ZXJ5UHJvcChQX0xFVkVMKSoyICsgcmFuZG9tKDEwKSxUTyk7CisgICAgIH0KKworIFNJRUhFIEFVQ0g6CisgICAgUF9QT0lTT04sIFBfQ1VSU0VELCBQX1BFUk1fU1RSSU5HCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgMTEuMDguMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naWxkZW4tZG9rdSBiL2RvYy93aXovZ2lsZGVuLWRva3UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhlM2FhNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovZ2lsZGVuLWRva3UKQEAgLTAsMCArMSw0OTYgQEAKK0dpbGRlbiAKKyoqKioqKioKKworR2lsZGVuIHNpbmQgZGF6dSBkYSwgU3BpZWxlcm4gYmVzb25kZXJlIEZhZWhpZ2tlaXRlbiB6dSB2ZXJsZWloZW4uIERpZXMKK2tvZW5uZW4gWmF1YmVyc3BydWVjaGUgKFNwZWxscykgc2VpbiwgZXMga2FubiBhYmVyIGF1Y2ggYW5kZXJlIEZhZWhpZ2tlaXRlbgorKFNraWxscykgZ2ViZW4uIEFscyBTcGVsbCBnaWx0IGplZGUgRmFlaGlna2VpdCwgZGllIGVpbiBTcGllbGVyIG1pdCBlaW5lbQorQmVmZWhsIGRpcmVrdCBhdWZydWZlbiBtdXNzLiBEYW1pdCBhdWNoIGFuZGVyZSBHaWxkZW4gZGllIGdsZWljaGVuCitaYXViZXJzcHJ1ZWNoZSB2ZXJ3ZW5kZW4ga29lbm5lbiwgbXVlc3NlbiBkaWUgU3BydWVjaGUgaW4gZWlnZW5lbgorU3BlbGxib29rcyBhYmdlbGVndCB3ZXJkZW4uIEVpbmUgR2lsZGUga2FubiBTcHJ1ZWNoZSBhdXMgYmVsaWViaWdlbgorU3BlbGxib29rcyB2ZXJ3ZW5kZW4gdW5kIGRpZXNlIGdnZi4gbGVpY2h0IG1vZGlmaXppZXJlbi4gCisKK0dpbGRlbm9iamVrdCAKKz09PT09PT09PT09PT0KKworRWluZSBHaWxkZSBtdXNzIGVpbiBPYmpla3QgaGFiZW4sIGJlaSBkZW0gZGVyIFNwaWVsZXIgZGVyIEdpbGRlIGJlaXRyZXRlbgorYnp3LiBhdXN0cmV0ZW4gdW5kIGRpZSBGYWVoaWdrZWl0ZW4gZGVyIEdpbGRlIGVyd2VyYmVuIGthbm4uIEdld29laG5saWNoCitpc3QgZGllcyBlaW4gUmF1bSwgZGVyICIvc3RkL2dpbGRlbl9yb29tIiBpbmhlcml0ZXQsIGVzIGthbm4gYWJlciBhdWNoIGVpbgorYW5kZXJlcyBPYmpla3Qgc2VpbiwgZnVlciBkaWVzZW4gRmFsbCBpc3QgIi9zdGQvZ2lsZGVuX29iIiB2b3JnZXNlaGVuLiAKKworRGllIEJlaXRyaXR0c2JlZGluZ3VuZ2VuIGZ1ZXIgZGllIEdpbGRlIHdlcmRlbiBpbiBGb3JtIGVpbmVzIAorUmVzdHJpY3Rpb24tTWFwcGluZ3MgaW4gZGVyIFByb3BlcnR5IFBfR0lMREVOX1JFU1RSSUNUSU9OUworYWJnZWxlZ3QuIAorCitEYXMgU3BlbGxib29rLCBpbiBkZW0gZGllIFNwZWxscyBkZXIgR2lsZGUgc3RlaGVuLCBtdXNzIGluCitQX0dVSUxEX0RFRkFVTFRfU1BFTExCT09LIGdlbmFubnQgc2Vpbi4gRXMgd2lyZCBhdXRvbWF0aXNjaAorIi9zcGVsbGJvb2tzLyIgdm9ybmUgYW4gZGVuIE5hbWVuIGFuZ2VmdWVndC4gRGllIFNwZWxscywgZGllIGF1cyBkaWVzZW0KK1NwZWxsYm9vayB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGxlbiwga29lbm5lbiBkYW5uIGVpbmZhY2ggbWl0CitBZGRTcGVsbChuYW1lKSBhdXNnZXdhZWhsdCB3ZXJkZW4uIFdlbm4gZWluIFNwcnVjaCBtb2RpZml6aWVydCB3ZXJkZW4KK3NvbGwgc28ga2FubiBlaW4gTWFwcGluZyBtaXQgenVzYWV0emxpY2hlbiBJbmZvcm1hdGlvbmVuIGFscyB6d2VpdGVzCitBcmd1bWVudCBhbmdlZ2ViZW4gd2VyZGVuLiBJbiBkaWVzZW0ga2FubiBtYW4gZGFubiBhdWNoIGVpbiBhbmRlcmVzCitTcGVsbGJvb2sgYWxzIGRhcyBEZWZhdWx0LVNwZWxsYm9vayBtaXQgKFtTSV9TUEVMTEJPT0s6bmFtZV0pCithbmdlYmVuLiBJbiBQX0dMT0JBTF9TS0lMTFBST1BTIGthbm4gZWluIE1hcHBpbmcgYW5nZWdlYmVuCit3ZXJkZW4sIGRhcyBhbGxlIFNwZWxscyB1bmQgU2tpbGxzIG1vZGlmaXppZXJ0LiBQX0dMT0JBTF9TS0lMTFBST1BTCit1bmQgUF9HSUxERU5fREVGQVVMVF9TUEVMTEJPT0sgbXVlc3NlbiB1ZWJyaWdlbnMgZ2VzZXR6dAord2VyZGVuIGJldm9yIG1pdCBBZGRTcGVsbC9Ta2lsbCBTcGVsbHMgb2RlciBTa2lsbHMgaGluenVnZWZ1ZWd0IHdlcmRlbi4gCisKK0Z1ZXIgYW5kZXJlIEZhZWhpZ2tlaXRlbiBzaW5kIEFkZFNraWxsIHVuZCBMZWFyblNraWxsIHZvcmdlc2VoZW4uCitMZWFyblNraWxsIHdpcmQgaW0gR2VnZW5zYXR6IHp1IExlYXJuU3BlbGwgamVkb2NoIG5pY2h0IGF1dG9tYXRpc2NoIHZvbQorL3N0ZC9naWxkZW5fcm9vbSBtaXQgImxlcm5lIiBhdWZnZXJ1ZmVuLCB3ZWlsIGkuQS4gZGllc2UgRmFlaGlna2VpdGVuIGF1ZgorYW5kZXJlIEFydCBlcndvcmJlbiB3ZXJkZW4sIHouQi4gYmVpbSBHaWxkZW5laW50cml0dCBvZGVyIGR1cmNoCitUcmFpbmluZ3NzdHVuZGVuLiBNaXQgTGVhcm5Ta2lsbCBrYW5uIG1hbiBudXIgc29sY2hlIEZhZWhpZ2tlaXRlbgorZXJ3ZXJiZW4sIGRpZSBtaXQgQWRkU2tpbGwgYW5nZWZ1ZWd0IHd1cmRlbi4gCisKK1NraWxscyB3ZXJkZW4gdWVibGljaGVyd2Vpc2UgZHVyY2ggZGVuIEF1ZnJ1ZiB2b24gVXNlU2tpbGwgaW0gU3BpZWxlcgordmVyd2VuZGV0LiBXZW5uIGRlciBTcGllbGVyIGluIGVpbmVyIEdpbGRlIGlzdCB1bmQgZWluZSBGdW5rdGlvbiB1bnRlcgorU0lfU0tJTExGVU5DIHp1IGZpbmRlbiBpc3QsIHNvIHdpcmQgZGllc2UgaW0gR2lsZGVub2JqZWt0IGF1ZmdlcnVmZW4sCitzb25zdCB3aXJkIHZlcnN1Y2h0IFN0ZFNraWxsX05hbWUgaW0gU3BpZWxlciBhdWZ6dXJ1ZmVuLiBXZW5uIGF1Y2ggZGFzCitmZWhsc2NobGFlZ3Qgd2lyZCBudXIgZGVyIFdlcnQgdW50ZXIgU0lfQUJJTElUWSB6dXJ1ZWNrZ2VnZWJlbi4gCisKK0VzIHN0ZWhlbiBmb2xnZW5kZSBGdW5rdGlvbmVuIHp1ciBCZW51dHp1bmcgenVyIFZlcmZ1ZWd1bmc6IAorCisgbyBRdWVyeVNwZWxsKG5hbWUpCisgICBMaWVmZXJ0IGRpZSBJbmZvcm1hdGlvbmVuIHp1IGRpZXNlbSBTcGVsbCAKKyBvIFF1ZXJ5U2tpbGwobmFtZSkKKyAgIExpZWZlcnQgZGllIEluZm9ybWF0aW9uZW4genUgZGllc2VyIEZhZWhpZ2tlaXQgCisgbyBBZGRTcGVsbChuYW1lLGluZm8pCisgICBTcGVsbCB3aXJkIGhpbnp1Z2VmdWVndCAKKyBvIEFkZFNraWxsKG5hbWUsaW5mbykKKyAgIEZhZWhpZ2tlaXQgd2lyZCB6dWdlZnVlZ3QgCisgbyBMZWFyblNwZWxsKG5hbWUpCisgICBTcGllbGVyIGxlcm50IGRlbiBhbmdlZ2ViZW5lbiBTcGVsbCwgZmFsbHMgbW9lZ2xpY2guIExpc3RlIGRlciBTcGVsbHMKKyAgIHdpcmQgYXVzZ2VnZWJlbiwgZmFsbHMga2VpbmVyIGFuZ2VnZWJlbiBpc3QuIAorIG8gTGVhcm5Ta2lsbChuYW1lKQorICAgU3BpZWxlciBlcndpcmJ0IGRpZXNlIEZhZWhpZ2tlaXQsIGZhbGxzIG1vZWdsaWNoLiBMaXN0ZSBhbGxlcgorICAgRmFlaGlna2VpdGVuIHdpcmQgYXVzZ2VnZWJlbiwgZmFsbHMga2VpbmUgYW5nZWdlYmVuIGlzdC4gCisgbyBHaWxkZW5OYW1lKCkKKyAgIExpZWZlcnQgZGVuIE5hbWVuIGRpZXNlciBHaWxkZS4gCisgbyBJbml0aWFsU2tpbGxBYmlsaXR5KGluZm8sc3BpZWxlcikKKyAgIFJlY2huZXQgZGVuIEFuZmFuZ3N3ZXJ0IGZ1ZXIgU0lfU0tJTExBQklMSVRZIGF1cy4gCisgbyBTa2lsbExpc3RlKHgpCisgICBFcyB3aXJkIGFuZ2V6ZWlndCwgd2VsY2hlIFNwZWxscy9Ta2lsbHMgZGVyIFNwaWVsZXIgbGVybmVuIGthbm4uCisgICBEYWJlaSBiZWRldXRldCB4OiAKKyAgICBvIDE6IE51ciBTcGVsbHMgYW56ZWlnZW4gCisgICAgbyAyOiBOdXIgU2tpbGxzIGFuemVpZ2VuIAorICAgIG8gMzogQmVpZGVzIGFuemVpZ2VuIAorCitWb24gZGllc2VuIEZ1bmt0aW9uZW4gc3RlaGVuIGluIC9zdGQvZ2lsZGVuX3Jvb20gYXV0b21hdGlzY2gKK2JlaV9vZGVyX2F1c3RyZXRlbiB1bmQgTGVhcm5TcGVsbCBkZW0gU3BpZWxlciB6dXIgVmVyZnVlZ3VuZy4gCisKK1NwZWxsYm9vayAKKz09PT09PT09PT0KKworU3BlbGxib29rcyBzdGVsbGVuIGRpZSBTcGVsbHMgenVyIFZlcmZ1ZWd1bmcsIGRpZSBTcGllbGVyIG9kZXIgTW9uc3RlcgordmVyd2VuZGVuIGtvZW5uZW4uIEFsbGUgU3BlbGxib29rcyBzb2xsdGVuIC9zdGQvc3BlbGxib29rIGluaGVyaXRlbi4gSW4gZGVyCitlaW5mYWNoc3RlbiBGb3JtIGthbm4gZWluIFNwZWxsIHdpZSBmb2xndCBoaW56dWdlZnVlZ3Qgd2VyZGVuOiAKK0FkZFNwZWxsKHZlcmIsa29zdGVuLGxldmVsKQorRGFiZWkgaXN0ICJ2ZXJiIiBzb3dvaGwgZGVyIE5hbWUgZGVzIFZlcmJzLCBtaXQgZGVtIGRlciBTcHJ1Y2gKK2F1ZmdlcnVmZW4gd2VyZGVuIHNvbGwsIHdpZSBhdWNoIGRlciBOYW1lIGRlciBGdW5rdGlvbiwgZGllIGRhYmVpCithdWZnZXJ1ZmVuIHdpcmQuICJrb3N0ZW4iIHNpbmQgZGllIE1hZ2llcHVua3RlLCBkaWUgZnVlciBkZW4gU3BydWNoCitiZW5vZXRpZ3Qgd2VyZGVuIHVuZCAibGV2ZWwiIGlzdCBkZXIgU3BpZWxlcmxldmVsLCBkZXIgbm9ldGlnIGlzdCwgdW0gZGllc2VuCitTcHJ1Y2ggenUgbGVybmVuLiAKKworSW4gZGVyIGZsZXhpYmxlcmVuIEZvcm0gd2VyZGVuIFNwZWxscyBtaXQgCitBZGRTcGVsbCh2ZXJiLGtvc3RlbixpbmZvKQoraGluenVnZWZ1ZWd0LiBEYWJlaSBpc3QgImluZm8iIGVpbiBNYXBwaW5nLCBpbiBkZW0gYWxsZSBhbmRlcmVuIAorU3BlbGwtSW5mb3JtYXRpb25lbiBzdGVoZW4uIERhYmVpIGthbm4gei5CLiBlaW5lIGFuZGVyZSBGdW5rdGlvbiBhbHMgZGFzCitWZXJiIGFscyBFaW50cmFnIAorU0lfU0tJTExGVU5DOm5hbWUKK2FuZ2VnZWJlbiB3ZXJkZW4uIFdlbm4genVtIExlcm5lbiBlaW5lIGJlc3RpbW10ZSBTdHVmZSBlcmZvcmRlcmxpY2ggaXN0CitzbyBtdXNzIAorU0lfU0tJTExSRVNUUl9MRUFSTjooW1BfTEVWRUw6bGV2ZWxdKQorZWluZ2V0cmFnZW4gc2Vpbi4gRXMgc29sbHRlbiBhbGxlIFdlcnRlLCB2b24gZGVuZW4gZWluIFNwZWxsIGFiaGFlbmd0LCBpbiBkZW0KK01hcHBpbmcgZWluZ2V0cmFnZW4gc2Vpbi4gRGFkdXJjaCBoYWJlbiBHaWxkZW4gZGllIE1vZWdsaWNoa2VpdCwgU3BlbGxzCittaXQgT2Zmc2V0cyB1bmQgRmFrdG9yZW4genUgbW9kaWZpemllcmVuLiAKKworSW4gUF9HTE9CQUxfU0tJTExQUk9QUyBrYW5uIGVpbiBNYXBwaW5nIHN0ZWhlbiwgZGFzcyBiZWkgamVkZW0KK1NwZWxsIHp1bSBJbmZvIGFkZGllcnQgd2lyZC4gRGllc2VzIHNvbGx0ZSBnZXNldHp0IHdlcmRlbiwgYmV2b3IgZGllIFNwZWxscworbWl0IEFkZFNwZWxsIGhpbnp1Z2VmdWVndCB3ZXJkZW4uIAorCitEaWUgQmVudXR6dW5nIHZvbiBTcGVsbHMgbGFldWZ0IHdpZSBmb2xndCBhYjogCisKKyBvIFp1ZXJzdCB3aXJkIHVlYmVycHJ1ZWZ0LCBvYiBkZXIgU3BpZWxlciBkZW4gU3BydWNoIHZlcndlbmRlbiBkYXJmLgorICAgRGF6dSB3aXJkIGRpZSBGdW5rdGlvbiBDYW5UcnlTcGVsbCBhdWZnZXJ1ZmVuLiBEaWVzZSBwcnVlZnQKKyAgIG5vcm1hbGVyd2Vpc2UsIG9iIGRlciBTcGllbGVyIGtlaW4gR2Vpc3QgaXN0IHVuZCBvYiBlciBkaWUKKyAgIEVpbnNjaHJhZW5rdW5nZW4gZXJmdWVsbHQsIGRpZSBhbHMgU0lfU0tJTExSRVNUUl9VU0UKKyAgIGFuZ2VnZWJlbiBzaW5kLiAKKyBvIEFscyBuYWVjaHN0ZXMgd2lyZCBnZXBydWVmdCwgb2IgZGVyIFNwaWVsZXIgbm9jaCBnZW51ZyBNYWdpZXB1bmt0ZQorICAgaGF0LiBEaWVzZSBzdGVoZW4gaW0gTWFwcGluZyB1bnRlciBTSV9TUEVMTENPU1QuIAorIG8gQWxzIGxldHp0ZXMgd2lyZCBnZXBydWVmdCwgb2IgZGVyIFNwaWVsZXIgbm9jaCBlcnNjaG9lcGZ0IGlzdCB2b24KKyAgIHNlaW5lbSBsZXR6dGVuIFNwcnVjaC4gCisgbyBOdW4gd2lyZCBkaWUgZWlnZW50bGljaGUgRnVua3Rpb24gZGVzIFNwZWxscyBhdWZnZXJ1ZmVuLCB3ZW5uIGVzIGRpZQorICAgVW1nZWJ1bmcgenVsYWVzc3QuIERpZSBGdW5rdGlvbiBtdXNzIGVpbmVuIHBvc2l0aXZlbiBXZXJ0CisgICB6dXJ1ZWNrZ2ViZW4sIHdlbm4gZGVyIFNwcnVjaCBnZWx1bmdlbiBpc3QsIHVuZCBlaW5lbiBuZWdhdGl2ZW4sCisgICB3ZW5uIGVyIG1pc3NsdW5nZW4gaXN0LiBGYWxscyBkZXIgU3BydWNoIGF1cyBpcmdlbmQgZWluZW0gR3J1bmQKKyAgIG5pY2h0IGFud2VuZGJhciBpc3Qgc29sbCAwIHp1cnVlY2tnZWdlYmVuIHdlcmRlbi4gCisgbyBCZWkgRXJmb2xnIG9kZXIgTWlzc2VyZm9sZyB3ZXJkZW4gZGllIE1hZ2llcHVua3RlIGFiZ2V6b2dlbiB1bmQKKyAgIGRlciBTcGllbGVyIGlzdCBmdWVyIGRpZSBuYWVjaHN0ZSBaZWl0IGVyc2Nob2VwZnQuIERpZSBaZWl0c3Bhbm5lIGlzdAorICAgaW0gTWFwcGluZyB1bnRlciBTSV9TUEVMTEZBVElHVUUgenUgZmluZGVuLiAKKyBvIEJlaSBFcmZvbGcgd2lyZCBkaWUgRnVua3Rpb24gIkVyZm9sZyIgYXVmZ2VydWZlbiwgYmVpIE1pc3NlcmZvbGcKKyAgIGRpZSBGdW5rdGlvbiAiTWlzc2VyZm9sZyIgCisgbyBEaWUgRnVua3Rpb24gIk1pc3NlcmZvbGciIHJ1ZnQgbm9ybWFsZXJ3ZWlzZSBkaWUgRnVua3Rpb24gIkxlYXJuIgorICAgYXVmLCBkYW1pdCBkZXIgU3BpZWxlciBhdXMgc2VpbmVuIEZlaGxlcm4gbGVybnQuIAorCitEaWUgZWlnZW50bGljaGUgU3BlbGxmdW5rdGlvbiBzb2xsdGUsIGZhbGxzIGRlciBTcGVsbCBhbndlbmRiYXIgaXN0LCBtaXQKK1NwZWxsU3VjY2VzcyBwcnVlZmVuLCBvYiBlciBlcmZvbGdyZWljaCBpc3Qgb2RlciBuaWNodC4gRGFiZWkgZ2VsdGVuIFdlcnRlCitncm9lc3NlciBOdWxsIGFscyBFcmZvbGcuIEluIGRlciBTcGVsbGZ1bmt0aW9uIHNvbGx0ZW4sIGZhbGxzIG1vZWdsaWNoLCAKK1NraWxsQXR0cmlidXRlIGRlcyBTcGllbGVycyBzb3dpZSBGYWt0b3JlbiB1bmQgT2Zmc2V0cyBiZXJ1ZWNrc2ljaHRpZ3QKK3dlcmRlbi4gRnVlciBiZWlkZXMgc3RlaGVuIGVpbmZhY2ggenUgaGFuZGhhYmVuZGUgRnVua3Rpb25lbiB6dXIKK1ZlcmZ1ZWd1bmcuIERpZXMgaXN0IHp3YXIgZXR3YXMgbWVociBBcmJlaXQsIGRhZnVlciBnZXNjaGVoZW4gZGFubiBEaW5nZQord2llIEludGVyYWt0aW9uZW4gendpc2NoZW4gZGVuIFNwZWxscyBmYXN0IGF1dG9tYXRpc2NoLiAKKworRm9sZ2VuZGUgRnVua3Rpb25lbiBzdGVsbHQgZGFzIFN0YW5kYXJkLVNwZWxsYm9vayB6dXIgVmVyZnVlZ3VuZzogCisKKyBvIFF1ZXJ5U3BlbGwobmFtZSkKKyAgIExpZWZlcnQgSW5mb3JtYXRpb25zLU1hcHBpbmcgenUgZGllc2VtIFNwZWxsLiAKKyBvIEFkZFNwZWxsKG5hbWUsa29zdGVuLGluZm8pCisgICBGdWVndCBTcGVsbCBtaXQgYW5nZWdlYmVuZW4gS29zdGVuIHVuZCBkZW0KKyAgIEluZm9ybWF0aW9ucy1NYXBwaW5nIGlucyBTcGVsbGJvb2sgZWluLiAKKyBvIFRyeUF0dGFja1NwZWxsKG9wZmVyLHNjaGFkZW4sdHlwZW4saXNfc3BlbGwsY2FzdGVyLGluZm8pCisgICBWZXJzdWNodCBkZW4gQW5ncmlmZnMtU3BydWNoIGF1ZiBkZW4gR2VnbmVyIGFuenV3ZW5kZW4uIERpZQorICAgbWl0dGxlcmVuIDQgV2VydGUgc2luZCBkaWUsIGRpZSBhdWNoIGJlaSBEZWZlbmQgdWViZXJnZWJlbiB3ZXJkZW4uCisgICBEYWJlaSB3aXJkIGRpZSBBYndlaHJmYWVoaWdrZWl0IGRlcyBHZWduZXJzIGdlZ2VuIE1hZ2llIHVuZCBkYXMKKyAgIFNraWxsLUF0dHJpYnV0IFNBX0RBTUFHRSBhdXRvbWF0aXNjaCBiZXJ1ZWNrc2ljaHRpZ3QuIAorIG8gVHJ5RGVmYXVsdEF0dGFja1NwZWxsKG9wZmVyLGNhc3RlcixpbmZvLGlzX3NwZWxsKQorICAgV2llIFRyeUF0dGFja1NwZWxsLCBudXIgd2VyZGVuIFNjaGFkZW4gdW5kIFNjaGFkZW5zdHlwZW4KKyAgIGF1dG9tYXRpc2NoIGF1cyBkZW0gSW5mb3JtYXRpb25zLU1hcHBpbmcgZW50bm9tbWVuLiBCZWkgYmVpZGVuCisgICBGdW5rdGlvbmVuIHNvbGx0ZSBhbHMgaXNfc3BlbGwgdWVicmlnZW5zIGVpbiBTdHJpbmcgc3RlaGVuLCB6LkIuCisgICAiRmV1ZXJiYWxsIiwgZGFtaXQgZXMgbGVpY2h0ZXIgbW9lZ2xpY2ggaXN0LCBNb25zdGVyIHp1IHNjaHJlaWJlbiwgZGllCisgICBhdWYgZGllc2UgcmVhZ2llcmVuLiAKKyBvIFNwZWxsU3VjY2VzcyhjYXN0ZXIsaW5mbykKKyAgIEVybWl0dGVsdCwgb2IgZGVyIFNwZWxsIGZ1bmt0aW9uaWVydCBvZGVyIGZlaGxzY2hsYWVndC4gRGFiZWkgd2lyZAorICAgYXVjaCBlaW5lIGV2dGwuIHZvcmhhbmRlbmUgU3BlbGxjYXN0aW5nLUZhZWhpZ2tlaXQgKFNLX0NBU1RJTkcpCisgICBiZXJ1ZWNrc2ljaHRpZ3QuIE9obmUgU3BlbGxjYXN0aW5nLUZhZWhpZ2tlaXQgbGllZ3QgZGFzIEVyZ2VibmlzCisgICB6d2lzY2hlbiAtTUFYX0FCSUxJVFkgdW5kICtNQVhfQUJJTElUWSwgbWl0IGRpZXNlcgorICAgRmFlaGlna2VpdCBrb2VubmVuIGRpZSBXZXJ0ZSB6d2lzY2hlbiAtMipNQVhfQUJJTElUWSB1bmQKKyAgICsyKk1BWF9BQklMSVRZIGxpZWdlbi4gV2VydGUga2xlaW5lciBvZGVyIGdsZWljaCBOdWxsIHNvbGxlbgorICAgYWxzIEZlaGxzY2hsYWcgaW50ZXJwcmV0aWVydCB3ZXJkZW4uIAorICAgV2VyIHdpbGwsIGthbm4gV2VydGUgdWViZXIgK01BWF9BQklMSVRZIGFscyBiZXNvbmRlcnMgZ3V0CisgICBnZWx1bmdlbmUgU3BlbGxzIGludGVycHJldGllcmVuIHVuZCBiZWkgV2VydGVuIHVudGVyCisgICAtTUFYX0FCSUxJVFkgdW5hbmdlbmVobWUgV2lya3VuZ2VuIGF1c2xvZXNlbiwgei5CLiBrYW5uCisgICBzaWNoIGRlciBTcGVsbCBkYW5uIGdlZ2VuIGRlbiBTcGllbGVyIHJpY2h0ZW4uLi4gCisgICBXZW5uIGVpbiBTcGllbGVyIGRpZSBTcGVsbGNhc3RpbmctRmFlaGlna2VpdCBoYXQgdW5kIGVpbiBTcHJ1Y2gKKyAgIGJlc29uZGVycyBndXQgZ2VsaW5ndCwgc28gZnJldXQgZXIgc2ljaCB1bmQgdmVyYmVzc2VydCBkaWVzZQorICAgRmFlaGlna2VpdC4gCisgbyBDYW5UcnlTcGVsbChjYXN0ZXIsaW5mbykKKyAgIEVybWl0dGVsdCwgb2IgZGVyIFNwaWVsZXIgZGVuIFNwcnVjaCBhbndlbmRlbiBkYXJmLiBOb3JtYWxlcndlaXNlCisgICBpc3QgZGllc2UgZGVyIEZhbGwsIHdlbm4gZXIga2VpbiBHZWlzdCBpc3QgdW5kIGRpZSBCZWRpbmd1bmdlbgorICAgZXJmdWVsbHQsIGRpZSB1bnRlciBTSV9TS0lMTFJFU1RSX1VTRSBpbSBNYXBwaW5nIGVpbmdldHJhZ2VuCisgICBzaW5kLiAKKyBvIExlYXJuKGNhc3RlcixzcGVsbCxpbmZvKQorICAgRGllc2UgRnVua3Rpb24gd2lyZCBub3JtYWxlcndlaXNlIGJlaSBNaXNzZXJmb2xnIGF1ZmdlcnVmZW4sCisgICBkYW1pdCBkZXIgU3BpZWxlciBhdXMgc2VpbmVuIEZlaGxlcm4gbGVybnQuIERhYmVpIHdpcmQKKyAgIHVlYmxpY2hlcndlaXNlIGRpZSBJbnRlbGxpZ2VueiBkZXMgU3BpZWxlcnMgYmVydWVja3NpY2h0aWd0LiBGdWVyIGplIDIKKyAgIFN0dWZlbiBBX0lOVCBiZWtvbW10IGRlciBTcGllbGVyIFNJX1NLSUxMTEVBUk4gaGluenUuIAorCisgICBNb2VjaHRlIG1hbiBlaW4gYW5kZXJlcyBBdHRyaWJ1dCB6dW0gbGVybmVuIHZlcndlbmRlbiBrYW5uIG1hbiBkaWVzCisgICBpbiBGb3JtIGVpbmVzIE1hcHBpbmdzIGluIFNJX0xFQVJOX0FUVFJJQlVURSB0dW4uCisKKyAgIFNJX0xFQVJOX0FUVFJJQlVURTooW0FfU1RSOjFdKSBtYWNodCBkYXMgTGVybmVuIHJlaW4gc3RhZXJrZWFiaGFlbmdpZywKKyAgIFNJX0xFQVJOX0FUVFJJQlVURTooW0FfU1RSOjEsQV9JTlQ6Ml0pIGJpbGRldCBkZW4gZ2V3aWNodGV0ZW4gTWl0dGVsd2VydAorICAgdm9uIFNUUiB1bmQgendlaWZhY2hlciBJTlQuICAKKworIG8gRXJmb2xnKGNhc3RlcixzcGVsbCxpbmZvKQorICAgRGllc2UgRnVua3Rpb24gd2lyZCBiZWkgRXJmb2xnIGF1ZmdlcnVmZW4uIAorIG8gTWlzc2VyZm9sZyAoY2FzdGVyLHNwZWxsLGluZm8pCisgICBEaWVzZSBGdW5rdGlvbiB3aXJkIGJlaSBNaXNzZXJmb2xnIGF1ZmdlcnVmZW4uIAorIG8gRmluZFZpY3RpbSh3ZW4sc3BpZWxlcixtc2cpCisgICAid2VuIiB3aXJkIGluIGRlciBVbWdlYnVuZyBkZXMgU3BpZWxlcnMgZ2VzdWNodC4gRmFsbHMgZGllc2UKKyAgIFZhcmlhYmxlIE51bGwgaXN0IHdpcmQgenVmYWVsbGlnIGVpbiBGZWluZCBhdXNnZXdhZWhsdC4gRmFsbHMKKyAgIG5pZW1hbmQgZ2VmdW5kZW4gd2lyZCwgc28gd2lyZCAibXNnIiBhdXNnZWdlYmVuLiAKKyBvIEZpbmRMaXZpbmdWaWN0aW0od2VuLHNwaWVsZXIsbXNnKQorICAgV2llIEZpbmRWaWN0aW0sIG51ciB3aXJkIHp1c2FldHpsaWNoIHVlYmVycHJ1ZWZ0LCBvYiBlcyBlaW4KKyAgIExlYmV3ZXNlbiBpc3QuIAorIG8gRmluZEVuZW15VmljdGltKHdlbixzcGllbGVyLG1zZykKKyAgIFdpZSBGaW5kTGl2aW5nVmljdGltLCBudXIgZGVyIFNwaWVsZXIgc2VsYnN0IHdpcmQgYXVzZ2Vub21tZW4KKyAgIHVuZCB3ZW5uIGVzIHZvcmhlciBub2NoIGtlaW4gRmVpbmQgd2FyLCBzbyB3aXJkIEtpbGwgYXVmZ2VydWZlbgorICAgZGFtaXQgZXMgaGludGVyaGVyIGdhcmFudGllcnQgZWluZXIgaXN0LiAKKyBvIEZpbmRHcm91cChzcGllbGVyLHdlbikKKyAgIEJlaSBTcGllbGVybiBmaW5kZXQgZGllIEZ1bmt0aW9uIGFsbGUgTW9uc3RlciBpbSBSYXVtLCB3ZW5uICJ3ZW4iCisgICBuZWdhdGl2IGlzdCwgYWxsZSBTcGllbGVyIHdlbm4gIndlbiIgcG9zaXRpdiBpc3QgdW5kIGFsbGUgTGViZXdlc2VuCisgICB3ZW5uICJ3ZW4iIE51bGwgaXN0LiBCZWkgTW9uc3Rlcm4gaXN0IGVzIGdlbmF1IHVtZ2VrZWhydC4gRXMgc29sbHRlCisgICBqZWRvY2ggRmluZEdyb3VwUCBtaXQgMTAwJSB2ZXJ3ZW5kZXQgd2VyZGVuLiAKKyBvIEZpbmRHcm91cE4oc3BpZWxlcix3ZW4sbikKKyAgIFdpZSBGaW5kR3JvdXAsIGplZG9jaCBtYXhpbWFsIG4gUGVyc29uZW4uIERhcyBTa2lsbC1BdHRyaWJ1dAorICAgU0FfRVhURU5TSU9OIHdpcmQgYXV0b21hdGlzY2ggYmVydWVja3NpY2h0aWd0LiAKKyBvIEZpbmRHcm91cFAoc3BpZWxlcix3ZW4scHJvemVudCkKKyAgIFdpZSBGaW5kR3JvdXAsIGplZG9jaCBqZWRlIFBlcnNvbiBtaXQgZGVyIGFuZ2VnZWJlbmVuCisgICBXYWhyc2NoZWlubGljaGtlaXQuIERhcyBTa2lsbC1BdHRyaWJ1dCBTQV9FWFRFTlNJT04gd2lyZAorICAgYXV0b21hdGlzY2ggYmVydWVja3NpY2h0aWd0LiAKKworTmV1ZSBGdW5rdGlvbmVuIGltIExpdmluZyAKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyBvIFF1ZXJ5U2tpbGxBdHRyaWJ1dGUobmFtZSkKKyAgIEhpZXJtaXQga2FubiBkYXMgU2tpbGwtQXR0cmlidXQgbWl0IGRlbSBhbmdlZ2ViZW5lbiBOYW1lbgorICAgYWJnZWZyYWd0IHdlcmRlbi4gCisgbyBTZXRTa2lsbEF0dHJpYnV0ZShjYXN0ZXIsbmFtZSx3ZXJ0LGRhdWVyLGZ1bmMpCisgICBIaWVybWl0IGthbm4gZGFzIGFuZ2VnZWJlbmUgU2tpbGwtQXR0cmlidXQgdm9tIGNhc3RlciBmdWVyIGRpZQorICAgYW5nZWdlYmVuZSBEYXVlciBhdWYgZWluZW4gV2VydCBnZXNldHp0IHdlcmRlbi4gRXMga2FubiBlaW5lCisgICBGdW5rdGlvbiBhbmdlZ2ViZW4gd2VyZGVuLCBkaWUgZGVuIFdlcnQgc3RhdHQgZGVzc2VuIGxpZWZlcm4gc29sbC4gCisgbyBRdWVyeVNraWxsKG5hbWUpCisgICBEaWVzIGxpZWZlcnQgZGllIHNwaWVsZXJzcGV6aWZpc2NoZW4gU2tpbGwtSW5mb3JtYXRpb25lbi4gCisgbyBRdWVyeVNraWxsQWJpbGl0eShuYW1lKQorICAgRGllcyBsaWVmZXJ0IHZvbiBkZW4gU2tpbGwtSW5mb3JtYXRpb25lbiBudXIgU0lfQUJJTElUWS4gCisgbyBNb2RpZnlTa2lsbChuYW1lLGluZm8sZGlmZikKKyAgIE1vZGlmaXppZXJ0IGRpZSBTa2lsbC1JbmZvcm1hdGlvbmVuLiBXZW5uICJpbmZvIiBlaW4gTWFwcGluZyBpc3QsCisgICBzbyB3aXJkIGVzIHp1IGRlbSBhbHRlbiBNYXBwaW5nICJhZGRpZXJ0IiAoYWxzbyBkaWUgYW5nZWdlYmVuZW4KKyAgIFdlcnRlIGdlYWVuZGVydCksIHdlbm4gbnVyIGVpbiBXZXJ0IGFuZ2VnZWJlbiBpc3QsIHdpcmQKKyAgIGFuZ2Vub21tZW4gZGFzcyBlcyBzaWNoIGRhYmVpIHVtIFNJX0FCSUxJVFkgaGFuZGVsdC4gCisgbyBMZWFyblNraWxsKG5hbWUsYWRkLGRpZmYpCisgICBBZGRpZXJ0IGRlbiBhbmdlZ2ViZW5lbiBXZXJ0IHp1IFNJX0FCSUxJVFkuIERhYmVpIGlzdCAiZGlmZiIgZGVyCisgICBTY2h3aWVyaWdrZWl0c2dyYWQgdm9uIGRpZXNlbSBTcGVsbC9Ta2lsbC4gRHVyY2ggZGVuCisgICBTY2h3aWVyaWdrZWl0c2dyYWQgU0lfQUJJTElUWSBhYmhhZW5naWcgdm9tIExldmVsIGJlZ3Jlbnp0LiAKKyBvIFVzZVNwZWxsKGFyZyxzcGVsbCkKKyAgIERhcyBMZWJld2VzZW4gYmVudXR6dCBkZW4gU3BlbGwgbWl0IGRlbiBhbmdlZ2ViZW5lbiBBcmd1bWVudGVuLgorICAgV2VubiBrZWluIFNwZWxsIGFuZ2VnZWJlbiBpc3QsIHNvIHdpcmQgcXVlcnlfdmVyYigpIHZlcndlbmRldC4gCisgbyBVc2VTa2lsbChza2lsbCxhcmcpCisgICBEYXMgTGViZXdlc2VuIGJlbnV0enQgZGllIEZhZWhpZ2tlaXQuIAorCitOZXVlIFByb3BlcnRpZXMvRnVua3Rpb25lbiBpbiBMaXZpbmcvQ29tYmF0IAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRWluaWdlIFNwcnVlY2hlIGVyZm9yZGVybiBlcywgZGFzIFZlcmhhbHRlbiBiZWkgQXR0YWNrIHVuZCBEZWZlbmQgemllbWxpY2gKK3dlaXRyZWljaGVuZCB6dSBhZW5kZXJuLiBEYWZ1ZXIgd3VyZGVuIGZvbGdlbmRlIFByb3BlcnRpZXMgdW5kCitGdW5rdGlvbmVuIGVpbmdlYmF1dDogCisKKyBvIFBfVE1QX0FUVEFDS19IT09LCisgICBIaWVyIGthbm4gZWluIEFycmF5IGRlciBGb3JtICh7RW5kemVpdHB1bmt0LE9iamVrdCxGdW5rdGlvbn0pCisgICBzdGVoZW4uIFNvbGFuZ2UgZGVyIEVuZHplaXRwdW5rdCBub2NoIG5pY2h0IHVlYmVyc2Nocml0dGVuIHd1cmRlCisgICB1bmQgZGFzIGFuZ2VnZWJlbmUgT2JqZWt0IGV4aXN0aWVydCwgd2lyZCBhbnN0ZWxsZSB2b24gQXR0YWNrIGRpZQorICAgRnVua3Rpb24gaW4gZGVtIE9iamVrdCBhdWZnZXJ1ZmVuLiBXZW5uIGRpZSBGdW5rdGlvbiAwIGxpZWZlcnQKKyAgIHdpcmQgZGVyIFJlc3Qgdm9uIEF0dGFjayBuaWNodCBtZWhyIGF1c2dlZnVlaHJ0LiAKKyBvIFBfVE1QX0RFRkVORF9IT09LCisgICBXaWUgUF9BVFRBQ0tfSE9PSywgbnVyIG1pdCBEZWZlbmQuIERhbWl0IHNpbmQgei5CLgorICAgU3BydWVjaGUgbW9lZ2xpY2gsIGRpZSBmdWVyIGt1cnplIFplaXQgZWluZSBtYWdpc2NoZSBTY2h1dHpodWVsbGUKKyAgIGVyc2NoYWZmZW4uIFdlbm4gZGllIEZ1bmt0aW9uIDAgbGllZmVydCB3aXJkIGRlciBSZXN0IHZvbiBEZWZlbmQKKyAgIG5pY2h0IG1laHIgYXVzZ2VmdWVocnQuIFdlbm4gZXMgZWluIEFycmF5IGRlciBGb3JtCisgICAoe2RhbWFnZSxkdCxpc19zcGVsbH0pIGVyZ2lidCB3aXJkIGVzIHdpZSBiZWkgRGVmZW5kT3RoZXIKKyAgIGludGVycHJldGllcnQuIAorIG8gUF9ERUZFTkRFUlMKKyAgIExpc3RlIHZvbiBMZWJld2VzZW4sIGRpZSBtaXQgSW5mb3JtRGVmZW5kKGVuZW15KSBpbmZvcm1pZXJ0CisgICB3ZXJkZW4gc29sbGVuLCBzb2JhbGQgZWluIG5ldWVyIEZlaW5kIGhpbnp1a29tbXQuIEJlaSBlaW5lbQorICAgenVmYWVsbGlnIGF1c2dld2FlaGx0ZW0gTGViZXdlc2VuIGF1cyBkaWVzZXIgTGlzdGUgd2lyZCBhdXNzZXJkZW0KKyAgIERlZmVuZE90aGVyIG1pdCBkZW4gQXJndW1lbnRlbiB2b24gRGVmZW5kIGF1ZmdlcnVmZW4uIAorIG8gQWRkRGVmZW5kZXIoZnJpZW5kKQorICAgRnVlZ3QgTGViZXdlc2VuIGluIFBfREVGRU5ERVJTIGVpbiwgd2VubiBlcyBub2NoIG5pY2h0IGluIGRlcgorICAgTGlzdGUgaXN0LiAKKyBvIEluZm9ybURlZmVuZChlbmVteSkKKyAgIFNpZWhlIG9iZW4uIAorIG8gRGVmZW5kT3RoZXIoZGFtLGR0LGlzX3NwZWxsLGVuZW15KQorICAgTWl0IGRpZXNlciBGdW5rdGlvbiBrYW5uIG1hbiBMZWJld2VzZW4gZXJzY2hhZmZlbiwgZGllIFNjaGFkZW4KKyAgIHZvbiBhbmRlcmVuIGFid2VuZGVuIG9kZXIgbW9kaWZpemllcmVuLiBXZW5uIGRpZXNlIEZ1bmt0aW9uIGVpbgorICAgQXJyYXkgKHtkYW0sZHQsaXNfc3BlbGx9KSB6dXJ1ZWNrZ2lidCBzbyB3ZXJkZW4gYmVpIGRlbSB6dQorICAgdmVydGVpZGlnZW5kZW4gTGViZXdlc2VuIGRpZXNlIFdlcnRlIGdlbm9tbWVuIGFuc3RlbGxlIGRlciBhbHRlbi4KKyAgIE1hbiBrYW5uIGFsc28gei5CLiBlaW4gTW9uc3RlciBlcnNjaGFmZmVuLCBkYXMgZWluCisgICBmZXVlcmVtcGZpbmRsaWNoZXMgYW5kZXJlcyBNb25zdGVyIHZlcnRlaWRpZ3QsIGluZGVtIGVzIHouQi4KKyAgIEZldWVyYmFlbGxlIGluIEVpc2hhZ2VsIHZlcndhbmRlbHQuIAorCitTdGFuZGFyZC1Ta2lsbHMgCis9PT09PT09PT09PT09PT09CisKK0ZvbGdlbmRlIEZhZWhpZ2tlaXRlbiB3ZXJkZW4gc2Nob24gYmVydWVja3NpY2h0aWd0IHVuZCBzaW5kIGF1Y2gKK3ZvcmRlZmluaWVydC4gV2VubiBzaWUgdW52ZXJhZW5kZXJ0IHVlYmVybm9tbWVuIHdlcmRlbiBzb2xsZW4gbXVzcyBudXIKK1NJX0FCSUxJVFkgZ2VzZXR6dCB3ZXJkZW4uIAorCisgbyBTS19TV09SREZJR0hUSU5HCisgICBTY2h3ZXJ0a2FtcGYuIEJpcyB6dSAzMytBX1NUUitBX0RFWCBBdWZzY2hsYWcgYmVpCisgICBTY2h3ZXJ0ZXJuLCB3ZW5uIGplbWFuZCBkaWVzZSBGYWVoaWdrZWl0IHp1IDEwMCUgaGF0LiAKKyBvIFNLX1dFQVBPTkxFU1MKKyAgIEthbXBmIG1pdCBibG9zc2VuIEhhZW5kZW4uIEJpcyB6dSAxMDArQV9TVFIrMypBX0RFWAorICAgQXVmc2NobGFnLiAKKyBvIFNLX1RXT0hBTkRFRAorICAgS2FtcGYgbWl0IHp3ZWloYWVuZGlnZW4gV2FmZmVuLiBCaXMgenUgMzMrQV9TVFIgQXVmc2NobGFnLiAKKyBvIFNLX05JR0hUVklTSU9OCisgICBXZXIgZGllc2UgRmFlaGlna2VpdCB6dSAxMDAlIGhhdCBicmF1Y2h0IDIwIFNla3VuZGVuIHBybworICAgZmVobGVuZGVtIExpY2h0bGV2ZWwgdW0gc2ljaCBhbiBkaWUgRHVua2VsaGVpdCB6dSBnZXdvZWhuZW4uIAorIG8gU0tfQk9PWkUKKyAgIE1pdCAxMDAlIGRpZXNlciBGYWVoaWdrZWl0IHdpcmQgYmVpIGplZGVtIGFsa29ob2xpc2NoZW4gR2V0cmFlbmsKKyAgIDgwJSB2b20gQWxrb2hvbGdlaGFsdCBhYmdlem9nZW4uIAorCitGb2xnZW5kZSBGYWVoaWdrZWl0ZW4gd2VyZGVuIGJlcnVlY2tzaWNodGlndCwgc2luZCBhYmVyIG5pY2h0IHZvcmRlZmluaWVydDogCisKKyBvIFNLX01BR0lDX0FUVEFDSworICAgV2VubiBkaWVzZSBGYWVoaWdrZWl0IHZvcmhhbmRlbiBpc3QsIHdpcmQgZGllIEZ1bmt0aW9uIHVudGVyCisgICBTSV9TS0lMTEZVTkMgaW0gR2lsZGVub2JqZWt0IGF1ZmdlcnVmZW4sIGZhbGxzIGRlciBTcGllbGVyIHNvbnN0CisgICBtaXQgYmxvc3NlbiBIYWVuZGVuIGFuZ3JlaWZlbiB3dWVyZGUuIFdlbm4gZGFiZWkgZWluIE1hcHBpbmcKKyAgIHp1cnVlY2tnZWdlYmVuIHdpcmQsIHNvIHdlcmRlbiBkaWUgV2VydGUgdm9uCisgICBTSV9TS0lMTERBTUFHRSwgU0lfU0tJTExEQU1BR0VfVFlQRSB1bmQKKyAgIFNJX1NLSUxMREFNQUdFX01TRyBnZW5vbW1lbiBhbnN0ZWxsZSBkZXIgV2VydGUgaW4KKyAgIFBfSEFORFMuIAorIG8gU0tfTUFHSUNfREVGRU5TRQorICAgV2VubiBoaWVyIHVudGVyIFNJX1NLSUxMRlVOQyBlaW5lIEZ1bmt0aW9uIGVpbmdldHJhZ2VuIGlzdCwgc28KKyAgIHdpcmQgc2llIGJlaSBEZWZlbmQgaW0gR2lsZGVub2JqZWt0IGF1ZmdlcnVmZW4gdW5kIGJla29tbXQgaW0KKyAgIEluZm9ybWF0aW9ucy1NYXBwaW5nIFNJX1NLSUxMREFNQUdFLAorICAgU0lfU0tJTExEQU1BR0VfVFlQRSB1bmQgU0lfU1BFTEwgdWViZXJnZWJlbi4gV2VubiBzaWUKKyAgIGVpbiBNYXBwaW5nIHp1cnVlY2tnaWJ0IHdlcmRlbiBoaWVyYXVzIFNJX1NLSUxMREFNQUdFIHVuZAorICAgU0lfU0tJTExEQU1BR0VfVFlQRSBlbnRub21tZW4gdW5kIGVyc2V0emVuIGRpZSBhbHRlbgorICAgV2VydGUgdm9uICJkYW0iIHVuZCAiZGFtX3R5cGUiLiAKKyBvIEZJR0hUKFdhZmZlbnR5cCkKKyAgIEZhbGxzIGRpZXNlIEZhZWhpZ2tlaXQgdm9yaGFuZGVuIGlzdCB3aXJkIGRlciBlbnRzcHJlY2hlbmRlbgorICAgRnVua3Rpb24gaW4gU0lfU0tJTExEQU1BR0UgZGVyIGJpc2hlcmlnZSBTY2hhZGVuIHVlYmVyZ2ViZW4uCisgICBGYWxscyBzaWUgZWluIE1hcHBpbmcgenVydWVja2xpZWZlcnQgd2lyZCBhbiBkaWVzZXIgU3RlbGxlIGF1Y2ggZGVyCisgICBuZXVlIFNjaGFkZW4gZXJ3YXJ0ZXQuIAorIG8gU0tfRklHSFQKKyAgIFdpZSBGaWdodChXYWZmZW50eXApLCBudXIgd2lyZCBkaWVzZSBGYWVoaWdrZWl0LCBmYWxscyB2b3JoYW5kZW4sCisgICBiZWkgamVkZXIgV2FmZmUgYmVudXR6dCB1bmQga2FubiBhdWNoIHp1c2FldHpsaWNoIGFuZGVyZSBXZXJ0ZSBmdWVyCisgICBTSV9TS0lMTERBTUFHRV9UWVBFIGVyZ2ViZW4uIFdhZmZlIHVuZCBXYWZmZW50eXAgd2VyZGVuCisgICB1ZWJyaWdlbnMgaW4gU0lfV0VBUE9OIHVuZCBTSV9XRUFQT05fVFlQRSB1ZWJlcmdlYmVuLiAKKyBvIFNLX0NBU1RJTkcKKyAgIFNwZWxsY2FzdGluZy4gRGllIFdhaHJzY2hlaW5saWNoa2VpdCwgZGFzcyBkZXIgU3BlbGwgZ2VsaW5ndCwgc3RlaWd0CisgICBiZWkgMTAwJSBkaWVzZXIgRmFlaGlna2VpdCBhdWYgZGFzIERvcHBlbHRlLiBOdXIgbWl0IGRpZXNlcgorICAgRmFlaGlna2VpdCBpc3QgZXMgbW9lZ2xpY2gsIHVlYmVyIGRpZSBNYXhpbWFsZ3JlbnplbiB6dSBrb21tZW4sCisgICBzbyBkYXNzIGRhbm4gYXVjaCBTcGVsbHMgYmVzb25kZXJzIGd1dCBnZWxpbmdlbiBrb2VubmVuLiAKKworVGVtcG9yYWVyZSBQcm9wZXJ0eS1BZW5kZXJ1bmdlbiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK09mdCBtdWVzc2VuIFNwZWxscyBpcmdlbmR3byBQcm9wZXJ0aWVzIGZ1ZXIga3VyemUgWmVpdCB2ZXJhZW5kZXJuLCB3aWUKK3ouQi4gUF9MSUdIVCBvZGVyIFBfTk9NQUdJQyBpbiBSYWV1bWVuLiBGdWVyIGRpZXNlbiBad2VjayBrYW5uCittYW4gaW4gL29iai90bXBfcHJvcF9tYXN0ZXIgZGllIEZ1bmt0aW9uIFNldFRtcFByb3AgYXVmcnVmZW4uIERpZXNlCitGdW5rdGlvbiBlcndhcnRldCBkYXMgT2JqZWt0LCBpbiBkZW0gZGllIFByb3BlcnR5IHp1IHNldHplbiBpc3QsIGRlbiBOYW1lbgorZGVyIFByb3BlcnR5LCBkZW4gemVpdHdlaWxpZ2VuIFdlcnQgdW5kIGRlbiBaZWl0cHVua3QsIGJpcyB6dSBkZW0gZGllc2UKK0FlbmRlcnVuZyBnZWx0ZW4gc29sbC4gCisKK1NraWxsIEluZm9ybWF0aW9uZW4gCisrKysrKysrKysrKysrKysrKysrKworCitJbiBkZW4gSW5mb3JtYXRpb25zbWFwcGluZ3MgenUgZGVuIFNwZWxscy9Ta2lsbHMgc29sbHRlbiBhbGxlICh6dXNhZXR6bGljaCkKK25vZXRpZ2VuIEluZm9ybWF0aW9uZW4gc3RlaGVuLCBkZW5uIG51ciB3ZW5uIHouQi4gZWluIEZldWVyYmFsbCBpbiBlaW5lbQorU3BlbGxib29rIGFscyBTY2hhZGVuIDMwMCBlaW5nZXRyYWdlbiBoYXQgdW5kIGRpZXNlbiBXZXJ0IGRlbSBNYXBwaW5nCitlbnRuaW1tdCwga2FubiBlaW5lIGFuZGVyZSBHaWxkZSBkaWVzZW4gU3BydWNoIHJlY3ljbGVuIHVuZCBtaXQgU2NoYWRlbgorNDAwIGFuYmlldGVuLCBuYXR1ZXJsaWNoIHNvbGx0ZSBlciBkYW5uIGF1Y2ggaW4gZGVyIEdpbGRlIG1laHIga29zdGVuLiAKKworU0lFSEUgQVVDSDogc2tpbGxfaW5mb19saXN0ZQorCitGYWt0b3JlbiB1bmQgT2Zmc2V0cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNYW4ga2FubiBpbiBkZW0gSW5mb3JtYXRpb25zLU1hcHBpbmcgenUgamVkZW0gbnVtZXJpc2NoZW4gV2VydAorIk5hbWUiIG5vY2ggendlaSB6dXNhZXR6bGljaGUgV2VydGUgRkFDVE9SKCJOYW1lIikgdW5kCitPRkZTRVQoIk5hbWUiKSBlaW50cmFnZW4gdW5kIGRpZXNlIFdlcnRlIGF1dG9tYXRpc2NoIHp1ciBlaWdlbnRsaWNoZW4KK1dlcnRiZXN0aW1tdW5nIGJlcnVlY2tzaWNodGlnZW4uIE1pdCBmb2xnZW5kZW4gRnVua3Rpb25lbiBzb2xsdGUgbWFuCitpbSBTcGVsbGJvb2sgZGVtIE1hcHBpbmcgV2VydGUgZW50bmVobWVuOiAKKworIG8gR2V0VmFsdWUobmFtZSxtYXAsc3BpZWxlcikgCisgbyBHZXRPZmZzZXQobmFtZSxtYXAsc3BpZWxlcikKKyAgIE9GRlNFVChuYW1lKS4gCisgbyBHZXRGYWN0b3IobmFtZSxtYXAsc3BpZWxlcikKKyAgIEVyZ2lidCBGQUNUT1IobmFtZSksIGZhbGxzIHVuZ2xlaWNoIE51bGwsIHNvbnN0IDEwMC4gCisgbyBHZXRGVmFsdWUobmFtZSxtYXAsc3BpZWxlcikKKyAgIEVyZ2lidCAoV2VydCpGYWt0b3IpLzEwMC4gCisgbyBHZXRWYWx1ZU8obmFtZSxtYXAsc3BpZWxlcikKKyAgIEVyZ2lidCBXZXJ0K09mZnNldC4gCisgbyBHZXRGVmFsdWVPKG5hbWUsbWFwLHNwaWVsZXIpCisgICBFcmdpYnQgKFdlcnQqRmFrdG9yKS8xMDArT2Zmc2V0LiAKKworTmFjaCBNb2VnbGljaGtlaXQgc29sbHRlIG1hbiBkYXZvbiBpbSBTcGVsbGJvb2sgR2V0RlZhbHVlTyBiZW51dHplbiwKK3dlbm4gZXMgYW5nZWJyYWNodCBpc3QuIEF1ZiBqZWRlbiBGYWxsIHNvbGx0ZW4gdm9uIGRlbiBkcmVpIFdlcnRlbgorbW9lZ2xpY2h0IHZpZWxlIGF1ZiBlaW5lIGFuZ2VtZXNzZW5lIFdlaXNlIGJlcnVlY2tzaWNodGlndCB3ZXJkZW4sIGRlbm4KK2RhZHVyY2ggYmVrb21tdCBkYXMgR2lsZGVub2JqZWt0IGZlaW5lcmUgS29udHJvbGxtb2VnbGljaGtlaXRlbiwgd2VubgorZWluIFNwcnVjaCBtb2RpZml6aWVydCB3ZXJkZW4gc29sbC4gRXMgaXN0IGRhbm4gZnVlciBkaWUgR2lsZGUgYWV1c3NlcnN0CitlaW5mYWNoIGZlc3R6dWxlZ2VuLCBkYXNzIHouQi4gWndlcmdlIGJlaSBhbGxlbiBBbmdyaWZmc3NwcnVlY2hlbiAyMCUKK21laHIgU2NoYWRlbiB2ZXJ1cnNhY2hlbiB1bmQgYmVpbSBGZXVlcmJhbGwgRWxmZW4gZWluZW4gaG9laGVyZW4KK2dhcmFudGllcnRlbiBXZXJ0IGhpbnp1YmVrb21tZW4uIAorCitGdW5rdGlvbmVuIAorLS0tLS0tLS0tLS0KKworV2VubiBlaW4gU3BlbGxib29rIGVpbmUgZGVyIG9iZW4gYW5nZXNwcm9jaGVuZW4gRnVua3Rpb25lbiBiZW51dHosIHVtCitlaW5lbiBudW1lcmlzY2hlbiBXZXJ0IHp1IGVybWl0dGVsbiB1bmQgYW5zdGVsbGUgZGVzIFdlcnRlcyBzdGVodCBldHdhcywKK2RhcyBhbHMgRnVua3Rpb24gaW50ZXJwcnRpZXJ0IHdlcmRlbiBrYW5uLCBzbyB3aXJkIGRpZXNlIEZ1bmt0aW9uCithdXNnZXdlcnRldCB1bmQgZGFzIEVyZ2VibmlzIGFscyBXZXJ0IGdlbm9tbWVuLiBBbHMgRnVua3Rpb24KK2ludGVycHJldGllcnQgd2VyZGVuIGthbm46IAorCisgbyBFaW5lIENsb3N1cmUgCisgbyBFaW4gQXJyYXkgKHtvYmpla3QsZnVua3Rpb25zbmFtZX0pIG9kZXIgKHtvYmpla3RuYW1lLGZ1bmt0aW9uc25hbWV9KSAKKyBvIEVpbiBGdW5rdGlvbnNuYW1lLiBIaWVyYmVpIHNvbGx0ZSBtYW4gc2ljaCBqZWRvY2ggZGFydWViZXIgaW0KKyAgIGtsYXJlbiBzZWluLCBpbiB3ZWxjaGVtIE9iamVrdCB2ZXJzdWNodCB3aXJkIGRpZSBGdW5rdGlvbgorICAgYXVmenVydWZlbi4gVWVibGljaGVyd2Vpc2UgZ2VzY2hpZWh0IGRpZXMgaW0gU3BlbGxib29rLCBqZWRvY2gKKyAgIHdlcmRlbiBTSV9ESUZGSUNVTFRZLCBTSV9TS0lMTExFQVJOIHVuZCBTSV9TUEVMTENPU1QKKyAgIGF1Y2ggYmVpbSBMZXJuZW4gYmVub2V0aWd0IHVuZCBkaWVzIGdlc2NoaWVodCB2b20gR2lsZGVub2JqZWt0CisgICBhdXMuIFdlbm4gYmVpIGRpZXNlbiAzIEVpbnRyYWVnZW4gZWluZSBGdW5rdGlvbiBkZW4gV2VydCBsaWVmZXJuCisgICBzb2xsLCBzbyBtdXNzIHNpZSBpbiBlaW5lIGRlciBkcmVpIGFuZGVyZW4gRm9ybWVuIGVpbmdldHJhZ2VuIHdlcmRlbiwKKyAgIGRhbWl0IGRhcyByaWNodGlnZSBPYmpla3QgZXJtaXR0ZWx0IHdlcmRlbiBrYW5uLiAKKworU0lFSEUgQVVDSDogZXhlY3V0ZV9hbnl0aGluZworICAgCitGdWVyIG5pY2h0LW51bWVyaXNjaGUgV2VydGUga2FubiBtYW4gR2V0RGF0YSB2ZXJ3ZW5kZW4uIERhYmVpIHdlcmRlbgoramVkb2NoIG51ciBjbG9zdXJlcyBhdXRvbWF0aXNjaCBhdXNnZXdlcnRldC4gCisKK1NraWxsIEF0dHJpYnV0ZSAKKysrKysrKysrKysrKysrKysKKworU2tpbGwtQXR0cmlidXRlIHNpbmQgQXR0cmlidXRlLCBkaWUgYWxsZSBhbmRlcmVuIFNraWxscyBiZWVpbmZsdXNzZW4ga29lbm5lbi4KK05vcm1hbGVyd2Vpc2Ugc2luZCBhbGxlIFNraWxsLUF0dHJpYnV0ZSAxMDAlLCBzaWUga29lbm5lbiBqZWRvY2ggZnVlcgora3VyemUgWmVpdCBhdWYgYW5kZXJlIFdlcnRlIHp3aXNjaGVuIDEwJSB1bmQgMTAwMCUgZ2VzZXR6dCB3ZXJkZW4uIEJlaQorZGVyIEFiZnJhZ2UgZGVyIEF0dHJpYnV0ZSB3ZXJkZW4gMyBXZXJ0ZSBiZXJ1ZWNrc2ljaHRpZ3Q6IAorCisgbyBXZXJ0LCBkZXIgdm9tIExlYmV3ZXNlbiBzZWxic3QgZ2VzZXR6dCB3dXJkZS4gCisgbyBXZXJ0LCBkZXIgdm9uIGVpbmVtIGFuZGVyZW4gdW50ZXIgMTAwJSBnZXNldHp0IHd1cmRlLiBXZW5uCisgICBtZWhyZXJlIGFuZGVyZSBMZWJld2VzZW4gZGVuIFdlcnQgdW50ZXIgMTAwJSBnZXNldHp0IGhhYmVuIHNvCisgICBnaWx0IGRpZSBBZW5kZXJ1bmcgdm9uIGRlbSBtaXQgZGVtIGhvZWNoc3RlbiBMZXZlbC4gRWluZSBzb2xjaGUKKyAgIEFlbmRlcnVuZyB3aXJkIHVlYmxpY2hlcndlaXNlIHZvbiBlaW5lbSBHZWduZXIgdmVyYW5sYXNzdC4gCisgbyBXZXJ0LCBkZXIgdm9uIGVpbmVtIGFuZGVyZW4gdWViZXIgMTAwJSBnZXNldHp0IHd1cmRlLiBBdWNoIGhpZXIKKyAgIGdpbHQgZGllIEFlbmRlcnVuZyB2b24gZGVtIExlYmV3ZXNlbiBtaXQgZGVtIGhvZWNoc3RlbiBMZXZlbC4gCisKK1dlbm4gei5CLiBlaW4gU3BpZWxlciBzZWluZSBHZXNjaHdpbmRpZ2tlaXQgZnVlciB6d2VpIE1pbnV0ZW4gYXVmIDIwMCUKK3VuZCBlaW4gTW9uc3RlciBzaWUgZnVlciBlaW5lIE1pbnV0ZSBhdWYgMjUlIHNldHp0LCBzbyBpc3Qgc2llIGVpbmUgTWludXRlCitsYW5nIDUwJSB1bmQgZGllIG5hZWNoc3RlIE1pbnV0ZSAyMDAlIGJldm9yIHNpZSB3aWVkZXIgYXVmIDEwMCUgZ2VzZXR6dAord2lyZC4gCisKK1NJRUhFIEFVQ0g6IE1vZGlmeVNraWxsQXR0cmlidXRlCisKK1Jlc3RyaWN0aW9uIE1hcHBpbmdzIAorKysrKysrKysrKysrKysrKysrKysrCisKK01pdCBSZXN0cmljdGlvbiBNYXBwaW5ncyBrb2VubmVuIEVpbnNjaHJhZW5rdW5nZW4gYXVlc3NlcnN0IGVpbmZhY2gKK2FuZ2VnZWJlbiB3ZXJkZW4uIEluIGRlbSBNYXBwaW5nIHdpcmQgZWluZmFjaCBudXIgYW5nZWdlYmVuLCB3YXMgZHVyY2gKK3dlbGNoZW4gV2VydCBlaW5nZXNjaHJhZW5rdCB3ZXJkZW4gc29sbC4gV2VubiB6LkIuIG1pbmRlc3RlbnMgTGV2ZWwgMTUKK3VuZCBJbnRlbGxpZ2VueiAxMCB2ZXJsYW5ndCB3aXJkLCBzbyBpc3QgZGFzIE1hcHBpbmcKKyhbUF9MRVZFTDoxNSxBX0lOVDoxMF0pLiBGb2xnZW5kZSBFaW5zY2hyYWVua3VuZ2VuIGtvZW5uZW4gdmVybGFuZ3QKK3dlcmRlbjogCisKK1NJRUhFIEFVQ0g6IGNoZWNrX3Jlc3RyaWN0aW9ucworCitFaW5zY2hyYWVua3VuZ2VuIHdlcmRlbiBtaXQgY2hlY2tfcmVzdHJpY3Rpb25zKHNwaWVsZXIsbWFwcGluZykKK3VlYmVycHJ1ZWZ0LiBEaWUgRnVua3Rpb24gbGllZmVydCAwIHp1cnVlY2sgd2VubiBkZXIgU3BpZWxlciBhbGxlCitFaW5zY2hyYWVua3VuZ2VuIGVyZnVlbGx0IHVuZCBlaW5lbiBTdHJpbmcgbWl0IGRlciBCZWdydWVuZHVuZywgZmFsbHMgZWluZQorRWluc2NocmFlbmt1bmcgbmljaHQgZXJmdWVsbHQgaXN0LiAKKworUHJvZ3JhbW1pZXJyaWNodGxpbmllbiAKKz09PT09PT09PT09PT09PT09PT09PT09CisKKyBvIEluIFNwZWxsYm9va3MgbW9lZ2xpY2hzdCBvZnQgRmFrdG9yZW4gdW5kIE9mZnNldHMgYmVydWVja3NpY2h0aWdlbi4gCisgbyBEaWUgU2tpbGwtQXR0cmlidXRlIGJlcnVlY2tzaWNodGlnZW4sIGZhbGxzIG1vZWdsaWNoLiAKKyBvIEFsbGVzIFNwZWxscyBtdWVzc2VuIGVpbmUgVmVyem9lZ2VydW5nc3plaXQgaGFiZW4sIGluIGRlciBrZWluCisgICB3ZWl0ZXJlciBTcGVsbCBhbndlbmRiYXIgaXN0LiBIaWVydm9uIGthbm4gZXMgQXVzbmFobWVuIGdlYmVuLCB3ZW5uCisgICBkYXMgR2lsZGVua29uemVwdCBlcyBhbmRlcnMgdm9yc2llaHQgKHouQi4gYmVpIGRlbiBLYWVtcGZlcm4pIG9kZXIKKyAgIHNvbnN0IHJlZ3VsaWVydC4KKyBvIEtvc3Rlbmxvc2UgU3BlbGxzIHNvbGx0ZSBlcyBuaWNodCBnZWJlbi4gRmFsbHMgZG9jaCwgZGFubiBudXIgbWl0IHNlaHIKKyAgIGhvaGVyIFZlcnpvZWdlcnVuZ3N6ZWl0LCBzb25zdCBsYXNzZW4gZGllIExldXRlIG51ciBpaHIgRnJvbnRlbmQKKyAgIHNwaWVsZW4uIAorIG8gSmVkZXIgU2tpbGwgc29sbHRlIGVpbmUgbGV2ZWxhYmhhZW5naWdlIG1heGltYWxlIEZhZWhpZ2tlaXQgaGFiZW4uCisgICBELmguLCB3ZW5uIFNJX0RJRkZJQ1VMVFkgZ2VzZXR6dCBpc3Qgc29sbHRlIGRlciBXZXJ0IGdyb2Vzc2VyIGFscworICAgLTEwMCBzZWluLiAKKyBvIFNwZWxscyBkdWVyZmVuIG5pY2h0IE1vbnN0ZXIgYmVsaWViaWcgaG9oZXIgU3RhZXJrZSBlaW5mYWNoCisgICB1bWhhdWVuLiBFcyBzb2xsdGUgbnVyIGJpcyB6dSBlaW5lciBNYXhpbWFsc3RhZXJrZSBtb2VnbGljaCBzZWluLiAKKyBvIERlciBTY2hhZGVuLCBkZW4gZWluIFNwcnVjaCBiZXdpcmt0LCBkYXJmIHZvbiBkZXIgU3RhZXJrZSBuaWNodAorICAgZ3JvZXNzZXIgc2VpbiwgYWxzIGRlciwgZGVuIGVpbmUgV2FmZmUgbWl0IFdDIDI1KlNQIGJld2lya2VuCisgICB3dWVyZGUuIEF1Y2ggaGllciBzb2xsdGUgbWFuIGVpbiB3ZW5pZyBnZXN1bmRlbiBNZW5zY2hlbnZlcnN0YW5kCisgICBzcGllbGVuIGxhc3NlbiAtIGVzIGtvbW10IGF1Y2ggaW1tZXIgZHJhdWYgYW4sIG9iIGVpbiBBbmdyaWZmCisgICBtYWdpc2NoIGlzdCBvZGVyIHBoeXNpa2FsaXNjaC4KKyBvIERpZSBIZWlsdW5nIHNvbGx0ZSBuaWNodCBkaWUgZGFmdWVyIG5vZXRpZ2VuIFNQIHVlYmVyc2NocmVpdGVuLiAKKyAgIEF1c25haG1lbiBmdWVyIGV4cGxpeml0ZSBIZWlsZ2lsZGVuIChLbGVydXMpIGthbm4gZXMgZ2ViZW4uCisKK0F1c3dpcmt1bmcgdm9uIFNJX0RJRkZJQ1VMVFkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb2xnZW5kZSBNYXhpbWFsd2VydGUgc2luZCBmdWVyIFNJX0FCSUxJVFkgYmVpIGRlbiBhbmdlZ2ViZW5lbiBMZXZlbG4KK21vZWdsaWNoLCB3ZW5uIFNJX0RJRkZJQ1VMVFkgYXVmIGRlbiBXZXJ0IGluIGRlciBsaW5rZW4gU3BhbHRlIGdlc2V0enQKK2lzdC4gCisKK1NJRUhFIEFVQ0g6IExpbWl0QWJpbGl0eSBvZGVyIC9zdGQvbGl2aW5nL3NraWxsczo6TGltaXRBYmlsaXR5CisKKzUuIE9rdCAyMDExIEdsb2luc29uCisgCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2dpdCBiL2RvYy93aXovZ2l0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMDBmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2dpdApAQCAtMCwwICsxLDIzIEBACitOdXR6dW5nIHZvbiBHaXQgaW0gTW9yZ2VuR3JhdWVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1dhcyBpc3QgR2l0PworICBHaXQgaXN0IGVpbmUgU29mdHdhcmUgenVyICh2ZXJ0ZWlsdGVuKSBWZXJzaW9uc3ZlcndhbHR1bmcgdm9uIERhdGVpZW4uCisgIChodHRwOi8vZ2l0LXNjbS5jb20vLCBodHRwOi8vZGUud2lraXBlZGlhLm9yZy93aWtpL0dpdCkKKyAgRnVlciBXaW5kb3dzIGdpYnQgZXMgZWluIFBha2V0LCB3ZWxjaGVzIGF1Y2ggZGllIEludGVncmF0aW9uIGluIGRlbiBFeHBsb3JlcgorICBhbmJpZXRldDoKKyAgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9naXRleHRlbnNpb25zLworCisKK1NJRUhFIEFVQ0gKKyAgZ2l0LXJlcG9zaXRvcmllczogUmVwb3NpdG9yeS1WZXJ3YWx0dW5nIGltIE11ZAorICBnaXQtaG93dG86IFdpZSBnaXQgYmVudXR6dCB3aXJkCisgIGdpdC13b3JrZmxvdzogRWluIHNpbXBsZXMgQmVpc3BpZWwgZWluZXMgQXJiZWl0c2ZsdXNzZXMgbWl0IEdpdAorICBnaXQta29vcGVyYXRpb246IEVyd2VpdGVydW5nIGZ1ZXIgRm9ydGdlc2Nocml0dGVuZSB6dSBnaXQtd29ya2Zsb3cKKyAgZ2l0LXN5bmM6IFdpZSBkaWUgU3luY2hyb25pc2llcnVuZyB6dy4gZ2l0LVJlcG9zIHVuZCBNdWRsaWIgYWJsYWV1ZnQKKyAgZ2l0LWZhcTogaGFldWZpZyBnZXN0ZWxsdGUgRnJhZ2VuL1Byb2JsZW1lCisgIGdpdC1saW5rczogVmVyd2Vpc2UgaW5zIFdXVworCitMRVRaVEUgQWVOREVSVU5HOgorICAyNS4wMy4yMDExLCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy93aXovZ2l0LWV4Y2x1ZGUgYi9kb2Mvd2l6L2dpdC1leGNsdWRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzOWI1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2dpdC1leGNsdWRlCkBAIC0wLDAgKzEsMjcgQEAKK0JlaW0gSW1wb3J0IHZvbiBWZXJ6ZWljaG5pc3NlbiBhdXMgZGVtIE11ZCBpbiBlaW4gZ2l0IFJlcG9zaXRvcnkgdW5kIGJlaSBkZXIKK1N5bmNocm9uaXNpZXJ1bmcgendpc2NoZW4gUmVwb3NpdG9yaWVzIHVuZCBNdWRsaWIgd2VyZGVuIGRpZSBmb2xnZW5kZW4KK1ZlcnplaWNobmlzc2UgdW5kIERhdGVpZW4ga29tcGxldHQgaWdub3JpZXJ0LgorCisjIGZ1ZXIgZGl2LiBTQ01zIGJlbnV0enRlIFZlcnplaWNobmlzc2UKKy0gLnN2bi8KKy0gLmdpdC8KKy0gLmdpdGlnbm9yZQorLSBDVlMvCisjIFNhdmVmaWxlcworLSAqLm8KKyMgbG9ncyBhbmQgcmVwIGZpbGVzCistICoubG9nCistIGxvZy8KKy0gKi5yZXAKKy0gKi5lcnIKKyMgYmFja3VwcyBvZiBlZGl0b3JzCistICp+CistICouc3dwCisjIHRoaXMgc2hvdWxkIGFscyBuZXZlciBiZSBpbXBvcnRlZCAtIG1hcmtzIGEgZGlyZWN0b3J5IHRvIGJlIGltcG9ydGVkLgorLSBnaXQtbXVkLWltcG9ydAorIyBrZWluZSBnZXBhY2t0ZW4gQXJjaGl2ZQorLSAqLmd6CistICouYnoyCistICouemlwCistICoudGFyCisKZGlmZiAtLWdpdCBhL2RvYy93aXovZ2l0LWZhcSBiL2RvYy93aXovZ2l0LWZhcQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ0ODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtZmFxCkBAIC0wLDAgKzEsODMgQEAKK0hhZXVmaWcgZ2VzdGVsbHRlIEZyYWdlbiB6dW0gVGhlbWEgR2l0IGltIE1vcmdlbmdyYXVlbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyogV2FzIG11c3MgaWNoIG1hY2hlbiwgZGFtaXQgbWVpbiBHaXQtUmVwbyBhdXRvbWF0aXNjaCBtaXQgZGVtIE1HCisqIHN5bmNocm9uaXNpZXJ0IHdpcmQ/CisgIEVpbmUgU3luY2hyb25pc2F0aW9uIGZpbmRldCBhdXRvbWF0aXNjaCBzdGF0dCwgd2VubiBtYW4gZWluZW4gSW1wb3J0IGVpbmVzCisgIFZlcnplaWNobmlzc2VzIGF1cyBkZW0gTXVkIGR1cmNoZnVlaHJ0LgorICBNYWNodCBtYW4gZGllcyBuaWNodCwgc29uZGVybiBlcnN0ZWxsdCBzaWNoIHVuYWJoYWVuZ2lnIHZvbSBNdWQgZGFzIFJlcG8sCisgIG11c3MgbWFuIHNpY2ggYW4gZWluZW4gRXJ6bWFnaWVyIG1pdCBTaGVsbHp1Z2FuZyB3ZW5kZW4uCisKKyogQXVmbmFobWUgYWxzIFJlZ2lvbnNtaXRhcmJlaXRlci9SZWdpb25zbWFnaWVyL1dlaXNlci9FcnptYWdpZXIvR290dAorICBEaWVzIGlzdCB6dXJ6ZWl0IG51ciBkdXJjaCBlaW5lbiBFTSBtb2VnbGljaC4KKworKiBXaWUgYmVudXR6ZSBpY2ggR2l0IHVudGVyIFdpbmRvd3M/CisgIEdpdEh1YiBoYXQgZWluZSBBbmxlaXR1bmcgZnVlciBtc3lzZ2l0LCB3ZWxjaGUgaW0gd2VzZW50bGljaGVuIGF1Y2ggZnVlcnMgTUcKKyAgYnJhdWNoYmFyIGlzdDoKKyAgaHR0cDovL2hlbHAuZ2l0aHViLmNvbS93aW4tc2V0LXVwLWdpdC8KKyAgRWluZSB3ZWl0ZXJlIE1vZWdsaWNoa2VpdCBpc3QgaGllciBhbmdlYmVuOgorICBodHRwOi8vcm9nZXJkdWRsZXIuZ2l0aHViLmlvL2dpdC1ndWlkZS8KKyAgRWluaWdlIGluIEZyYWdlIGtvbW1lbmRlIEdpdC1QYWtldGUgc2luZCBoaWVyIGt1cnogdm9yZ2VzdGVsbHQ6CisgIGh0dHA6Ly93d3cubWFrZXVzZW9mLmNvbS90YWcvNS13aW5kb3dzLWdpdC1jbGllbnRzLWdpdC1qb2IvCisgIEVpbmUgQW5sZWl0dW5nIGZ1ZXIgZGllIE51dHp1bmcgdm9uIFB1dHR5IGFscyBTU0gtQ2xpZW50IHVudGVyIFdpbmRvd3MKKyAgZmluZGV0IHNpY2ggaW4gY29udHJpYi9wdXR0eS5ta2QgYXVmIGh0dHBzOi8vZ2l0aHViLmNvbS9zaXRhcmFtYy9naXRvbGl0ZS8KKworKiBXaWUga2FubiBpY2ggbWlyIGRpZSBHZXNjaGljaHRlIG1laW5lcyBSZXBvcyBncmFwaGlzY2ggYW56ZWlnZW4gbGFzc2VuPworICBEYSBnaWJ0IGVzIHZlcnNjaGllZGVuZSBMb2VzdW5nZW4sIHZvciBhbGxlbSBhdWNoIGFiaGFlbmdpZyB2b20KKyAgQmV0cmllYnNzeXN0ZW0uIEF1ZiBhbGxlbiBnZWh0IHZlcm11dGxpY2ggJ2dpdGsnIHVuZCAnZ2l0IGd1aScuCisgIEF1ZiBNYWNPUyBnaWJ0IGVzIGF1Y2ggJ0dpdFgnLgorCisqIEthbm4gbWFuIEFlbmRlcnVuZ2VuL0RpZmZzLyBmYXJiaWcgbWFya2llcnQgYW56ZWlnZW4/CisgID4gZ2l0IGxvZyAtcCAtLWNvbG9yLXdvcmRzCisgIEFsdGVybmF0aXYga2FubiBtYW4gLmdpdC9jb25maWcgZm9sZ2VuZGUgUGFyYW1ldGVyIHNldHplbjoKKyAgW2NvbG9yXQorICAJY29sb3IuZGlmZj1hdXRvCisJY29sb3IuZ3JlcD1hdXRvCisJY29sb3Iuc3RhdHVzPWF1dG8KKworICBXZW5uIG1hbiBlcyBnZW5lcmVsbCBidW50IGhhYmVuIHdpbGwsIHNldHp0IG1hbiBlaW5mYWNoCisgIFtjb2xvcl0KKyAgCWNvbG9yLnVpPWF1dG8KKworICBpbiBkaWUgS29uZmlndXJhdGlvbnNkYXRlaS4KKworKiBXYXJ1bSBzb2xsIGljaCBkZW5uIGRpZSBjb2xvci1FaW5zdGVsbHVuZ2VuIGF1ZiBhdXRvIHVuZCBuaWNodCB0cnVlIHNldHplbj8KKyAgRGVyIFdlcnQgYXV0byBiZXdpcmt0LCBkYXNzIGdpdCBudXIgZGFubiBkaWUgQXVzZ2FiZW4gZWluZmFlcmJ0LCB3ZW5uIGRpZXNlCisgIG5hY2ggU1RET1VUIGdlaGVuLiBBbnNvbnN0ZW4gYmVrb21tdCBtYW4gZGVuIEFTQ0lJLWtvZGllcnRlbiBGYXJic3RyaW5nIGluCisgIGRpZSBBdXNnYWJlZGF0ZWkgZ2VzY2hyaWViZW4uCisKKyogV2llIGthbm4gaWNoIGVpbmUgUmVwb3NpdG9yeSBsb2VzY2hlbj8KKyAgWnVyIFplaXQgaXN0IGRpZXMgbnVyIGR1cmNoIGVpbmVuIEVNIG1pdCBTaGVsbHp1Z2FuZyBhdWYgZGVtIE1HLVJlY2huZXIKKyAgbW9lZ2xpY2guCisKKyogS2FubiBpY2ggYW4gZWluZW0gR2ViaWV0LCBmdWVyIGRhcyBpY2gga2VpbmVuIFNjaHJlaWJ6dWdyaWZmIGhhYmUsIGhlbGZlbgorKiBlaW5lbiBCdWcgenUgZml4ZW4/CisgIEphIC0gc29mZXJuIER1IExlc2VyZWNodGUgYXVmIGRhcyBSZXBvc2l0b3J5IGhhc3QuIER1IGthbm5zdCBkYXMgUmVwbyBkYW5uCisgIGZvcmtlbiwgZC5oLiBlaW5lIEtvcGllIGVyc3RlbGxlbi4gRGllIGJlc3RlIE1ldGhvZGUgaGllcmZ1ZXIgaXN0CisgID4gc3NoIGdpdEBtZy5tdWQuZGUgZm9yayBkL2dlYmlyZ2Uvem9vay93YWxkIHBsYXllcnMvemVzc3RyYS9wdWJsaWMvendhbGQKKyAgSGllcmJlaSB3aXJkIGVpbiBDbG9uZSBkZXMgUmVwb3MgZXJzdGVsbHQgdW5kIHNpY2ggZ2VtZXJrdCwgd2VsY2hlcyBkYXMKKyAgT3JpZ2luYWwgd2FyLiBJbiBEZWluZW0gUmVwbyBrYW5uc3QgRHUgbnVuIGVpbmVuIEJ1Z2ZpeCBtYWNoZW4uIEJpc3QgRHUKKyAgZmVydGlnLCBzYWdzdCBEdSBkZW0gR2ViaWV0c21hZ2llciAob2RlciBlaW5lbSB6dXN0YWVuZGlnZW4gUk0pIEJlc2NoZWlkIHVuZAorICBiaXR0ZXN0IGlobiwgZGVuIGVudHNwcmVjaGVuZGVuIEJyYW5jaCAoei5CLiBzeW50YXhfYnVnZml4KSB6dSBwdWxsZW4uCisKKyogV2llIHZlcm1laWRlIGljaCBlaW5lbiAnbWVyZ2UgY29tbWl0Jywgd2VubiBpY2ggbG9rYWxlIEFlbmRlcnVuZ2VuIGluIGVpbmVtCisqIFp3ZWlnIGhhYmUsIGluIGRlbiBpY2ggQWVuZGVydW5nZW4gYXVzIGRlbSBNRyBwdWxsZW4gbW9lY2h0ZT8KKyAgRWluZSBNb2VnbGljaGtlaXQgaGllcmZ1ZXIgaXN0IGRhcyBQdWxsZW4gbWl0ICdnaXQgcHVsbCAtLXJlYmFzZScsIHVtIGdpdAorICBlaW5lbiBpbXBsaXppdGVzIFJlYmFzZSBiZWltIFB1bGwgZHVyY2hmdWVocmVuIHp1IGxhc3Nlbi4KKworCitXYXMgaXN0IGdpdD8KK1dvIGtyaWVnIGljaCBnaXQgaGVyPworV2llIGthbm4gaWNoIGRhcyBSZXBvc2l0b3J5IGNsb25lbj8KK1dpZSBrYW5uIGljaCBlaW4gQ2hhbmdlbG9nIGFuemVpZ2VuIGxhc3Nlbj8KK1dpZSBrYW5uIGljaCBlaW4gQ2hhbmdlbG9nIG1pdCBEaWZmIGFuemVpZ2VuIGxhc3Nlbj8KKworU0lFSEUgQVVDSDoKKyAgZ2l0LXJlcG9zaXRvcmllczogUmVwb3NpdG9yeS1WZXJ3YWx0dW5nIGltIE11ZAorICBnaXQtaG93dG86IFdpZSBnaXQgYmVudXR6dCB3aXJkCisgIGdpdC13b3JrZmxvdzogRWluIHNpbXBsZXMgQmVpc3BpZWwgZWluZXMgQXJiZWl0c2ZsdXNzZXMgbWl0IEdpdAorICBnaXQtc3luYzogV2llIGRpZSBTeW5jaHJvbmlzaWVydW5nIHp3LiBnaXQtUmVwb3MgdW5kIE11ZGxpYiBhYmxhZXVmdAorICBnaXQtbGlua3M6IFZlcndlaXNlIGlucyBXV1cKKworMTAuMDMuMjAxNSBBbWFyeWxsaXMKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naXQtaG93dG8gYi9kb2Mvd2l6L2dpdC1ob3d0bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTZhY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtaG93dG8KQEAgLTAsMCArMSwxMTEgQEAKK0dpdC1CZW51dHp1bmcgaW0gTW9yZ2VuR3JhdWVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiswLiBFaW5sZWl0dW5nCisgIEhpZXIgc29sbCBrdXJ6IGJlc2NocmllYmVuIHdlcmRlbiwgd2llIG1hbiBudW4gYW4gZGllIFJlcG9zaXRvcmllcyBhdWYgZGVtCisgIE11ZHJlY2huZXIgcmFua29tbXQuCisgIEVzIHdpcmQgYW4gZGllc2VyIFN0ZWxsZSB2b3JhdXNnZXNldHp0LCBkYXNzIGRlciBMZXNlci9NYWdpZXIKKyAgZ3J1bmRzYWV0emxpY2ggd2Vpc3MsIHdhcyBHaXQgaXN0IHVuZCB3aWUgZXMgYmVudXR6dCB3aXJkLiBIaWVyIHNvbGxlbgorICBsZWRpZ2xpY2ggQmVzb25kZXJoZWl0ZW4gaW0gWnVzYW1tZW5oYW5nIG1pdCBkZW0gTUcgZXJsYWV1dGVydCB3ZXJkZW4uCisgIEViZW5zbyB3aXJkIHZvcmF1c2dlc2V0enQsIGRhc3MgZGVyIE1hZ2llciBHaXQgdW5kIGVpbmVuIFNTSC1DbGllbnQgYXVmCisgIHNlaW5lbSBSZWNobmVyIGluc3RhbGxpZXJ0IGhhdC4KKworICBXZXIgamV0enQgbm9jaCBuaXggdm9uIEdpdCB3ZWlzcywgc2VpIGF1ZiBkaWUgcmVpY2hoYWx0aWcgaW0gTmV0egorICB2ZXJmdWVnYmFyZSBEb2t1IHZlcndpZXNlbjogcy4gYS4gZ2l0LWxpbmtzLgorCisKKzEuIFp1Z3JpZmZzcmVjaHRlIGF1ZiBHaXQtUmVwb3NpdG9yaWVzCisgIFp1bmFlY2hzdCBtdXNzIG1hbiBzaWNoIGFscyBHaXQtTnV0emVyIGVpbnRyYWdlbiBsYXNzZW4uIEhpZXJ6dSBicmF1Y2h0IG1hbgorICBlaW4gU1NILVNjaGx1ZXNzZWxwYWFyLCB3ZWxjaGVzIG1hbiB6LkIuIG1pdHRlbHMgc3NoLWtleWdlbiBlcnN0ZWxsZW4KKyAga2Fubi4gRGVuIF9vZWZmZW50bGljaGVuXyBTY2hsdWVzc2VsICgucHViIGFtIEVuZGUpIGxlZ3QgbWFuIGRhbm4gYWxzCisgIDxtYWdpZXI+LnB1YiBpbiBzZWluIEhvbWV2ZXJ6ZWljaG5pcyB1bmQgc3ByaWNodCBlaW5lbiBFTSAoei5CLiBaZXNzdHJhKQorICBhbi4KKworICBNaXR0ZWxzIGRlcyBCZWZlaGxzCisgID4gc3NoIGdpdEBtZy5tdWQuZGUgaW5mbworICBrYW5uIG1hbiBzaWNoIGFuemVpZ2VuIGxhc3NlbiwgYXVmIHdlbGNoZSBleGlzdGllcmVuZGVuIFJlcG9zaXRvcmllcyBtYW4KKyAgd2VsY2hlIFp1Z3JpZmZzcmVjaHRlIGhhdCAoUjogbGVzZW4sIFc6IHNjaHJlaWJlbikuIEJlaXNwaWVsOgorICAgIFIgICBXICAgKHplc3N0cmEpIGQvaW5zZWxuL3plc3N0cmEvdnVsa2Fud2VnCisgIEluIGRpZXNlbSBGYWxsIGhhdCBkZXIgQmVudXR6ZXIgTGVzZS0gdW5kIFNjaHJlaWJyZWNodGUgYXVmCisgIGQvaW5zZWxuL3plc3N0cmEvdnVsa2Fud2VnLiBEYXMgUmVwb3NpdG9yeSBnZWhvZXJ0IHplc3N0cmEuCisKKyAgWnVzYWV0emxpY2ggdW1mYXNzdCBkaWUgQXVzZ2FiZSBhdWNoIGRpZSBadWdyaWZmc3JlY2h0ZSBhbGxlciBfbW9lZ2xpY2hlbl8KKyAgKGFiZXIgbm9jaCBuaWNodCBleGlzdGllcmVuZGVuKSBSZXBvcy4KKyAgV2ljaHRpZyBpc3QgaGllciBkYXMgRXJzdGVsbHVuZ3NyZWNodCAoQykuIEJlaXNwaWVsOgorICBDICBSICAgVyAgZC91bnRlcndlbHQvemVzc3RyYS9bYS16QS1aXXsxfVthLXpBLVowLTlfLlwtXSoKKyAgSGllciBoYXQgZGVyIEJlbnV0emVyIGF1ZiBhbGxlIFJlcG9zIHVudGVyaGFsYiB2b24gZC91bnRlcndlbHQvemVzc3RyYS8KKyAgKHdvYmVpIGFsbGUgZGllc2UgUmVwb3MgbWl0IGVpbmVtIEJ1Y2hzdGFiZW4gYmVnaW5uZW4gdW5kIGFuc29uc3RlbiBudXIKKyAgIEJ1Y2hzdGFiZW4sIFphaGxlbiwgXywgLiB1bmQgLSBlbnRoYWx0ZW4gZHVlcmZlbikgTGVzZS0sIFNjaHJlaWItIHVuZAorICBFcnN0ZWxsdW5nc3JlY2h0ZS4KKworMi4gRWluIGV4aXN0aWVyZW5kZXMgUmVwb3NpdG9yeSBjbG9uZW4KKyAgRGllcyBlcmZvbGd0IGdhbnogc2ltcGVsIG1pdCBkZW0gQmVmZWhsOgorICA+IGdpdCBjbG9uZSBnaXRAbWcubXVkLmRlOnBsYXllcnMvemVzc3RyYS90ZXN0Z2ViaWV0IDx6aWVsdmVyemVpY2huaXM+CisgIERhcyBaaWVsdmVyemVpY2huaXMgaXN0IGhpZXJiZWkgYmVsaWViaWcuIEVtcGZlaGx1bmc6IGFsbGUgTUctUmVwb3MgaW4KKyAgZWluZW0gVmVyemVpY2huaXMgc2FtbWVsbiB1bmQgZG9ydCBkaWUgVmVyemVpY2huaXNzdHJ1a3R1ciBhdXMgZGVtIE11ZAorICBiZWliZWhhbHRlbjoKKyAgPiBnaXQgY2xvbmUgZ2l0QG1nLm11ZC5kZTpwbGF5ZXJzL3plc3N0cmEvdGVzdGdlYmlldAorICAgIHBsYXllcnMvemVzc3RyYS90ZXN0Z2ViaWV0CisgIERhbWl0IEFlbmRlcnVuZ2VuIHNwYWV0ZXIgYXVjaCBFdXJlbiBNYWdpZXJuYW1lbiB0cmFnZW4sIGdlaHQgbnVuIGJpdHRlIGluCisgIEV1ZXIgZ2VjbG9udGVzIFJlcG8gdW5kIHNldHp0IE5hbWVuIHVuZCBlTWFpbC1BZHJlc3NlOgorICA+IGdpdCBjb25maWcgdXNlci5uYW1lICJNYWdpZXIiCisgID4gZ2l0IGNvbmZpZyB1c2VyLmVtYWlsICJ1c2VyQGV4YW1wbGUuY29tIgorICAKKzMuIEVpbiBuZXVlcyBSZXBvc2l0b3J5IGVyc3RlbGxlbi4KKyAgICBWb3JhdXNzZXR6dW5nOiBkYXMgVmVyemVpY2huaXMgaW0gTXVkIGV4aXN0aWVydC4KKyAgICBEaWVzIGdlaHQsIHdlbm4gaWhyIFNjaHJlaWJ6dWdyaWZmIGF1ZiBkYXMgVmVyemVpY2huaXMgaW0gTXVkIGhhYnQuIExlZ3QKKyAgICBlaW5mYWNoIGluIGRlbSBWZXJ6ZWljaG5pcyBlaW5lIERhdGVpIG5hbWVucyAiZ2l0LW11ZC1pbXBvcnQiIGFuIChJbmhhbHQKKyAgICBpc3QgZWdhbCkgdW5kIHdhcnRldCBiaXMgenVyIG5hZWNoc3RlbiB2b2xsZW4gU3R1bmRlLgorICAgIEFDSFRVTkc6IGRhcyBWZXJ6ZWljaG5pcyBpbSBNdWQgZGFyZiBOSUNIVCBsZWVyIHNlaW4sIHNvbmRlcm4gbXVzcyBtaW4uCisgICAgZWluZSBEYXRlaSAoZ2dmLiBpbiBlaW5lbSBVbnRlcnZlcnplaWNobmlzKSBlbnRoYWx0ZW4hCisgCisgIEFubWVya3VuZ2VuOgorICBFeGlzdGllcnQgZWluIFJlcG8gYmVyZWl0cywgaXN0IGVpbiBhdXRvbWF0aXNjaGVyIEltcG9ydCBhdXMgZGVtIE11ZCBuaWNodAorICBtZWhyIG1vZWdsaWNoLgorICBCZWkgZWluZW0gImdpdCBjbG9uZSIgYXVmIGVpbiBub2NoIG5pY2h0IGV4aXN0aWVyZW5kZXMgUmVwbyB3aXJkIGRhcyAKKyAgZGFzIFJlcG8gYXV0b21hdGlzY2ggYW5nZWxlZ3QgLSBkaWVzZXMgUmVwbyB3aXJkIGRhbm4gYWJlciBuaWNodCBtaXQKKyAgZGVtIE11ZCBzeW5jaHJvbmlzaWVydCEKKyAgRGFoZXI6IGVyc3QgKGVyZm9sZ3JlaWNoKSBpbXBvcnRpZXJlbiwgZGFubiBjbG9uZW4uIAorCis0LiBBcmJlaXRlbiBtaXQgZGVtIFJlcG8KKyAgSGllcnp1IHNlaSB6dWVyc3QgZWlubWFsIGF1ZiBkaWUgYWxsZ2VtZWluIGltIE5ldHogdmVyZnVlZ2JhcmUgRG9rdW1lbnRhdGlvbgorICB6dSBHaXQgdW5kIG5hdHVlcmxpY2ggc2VpbmUgTWFucGFnZXMgdmVyd2llc2VuLgorICBFaW5lbiBiZWlzcGllbGhhZnRlbiBBcmJlaXRzYWJsYXVmIGZpbmRldCBzaWNoIGluIGRlciBNYW5wYWdlIGdpdC13b3JrZmxvdy4KKworNS4gU3luY2hyb25pc2F0aW9uIG1pdCBkZW0gTXVkCisgIFJlcG9zIGtvZW5uZW4gYmVpIGVpbmVtICdnaXQgcHVzaCcgdm9uIGF1c3NlbiBhdXRvbWF0aXNjaCBkaWUgQWVuZGVydW5nZW4KKyAgZGVzIG1hc3Rlci1CcmFuY2hlcyBpbnMgTXVkIHVlYmVydHJhZ2VuLiBEZXN3ZWl0ZXJlbiBrb2VubmVuIEFlbmRlcnVuZ2VuCisgIGF1cyBkZW0gTXVkIGF1dG9tYXRpc2NoIGluIGRhcyBSZXBvIGltcG9ydGllcnQgd2VyZGVuLgorICBBdWYgZGllc2UgV2Vpc2UgaXN0IGRhcyBWZXJ3ZW5kZW4gdm9uIEZUUCBmYXN0IHVlYmVyZmx1ZXNzaWcuCisgIERldGFpbHMgc2luZCBpbiBkZXIgTWFucGFnZSBnaXQtc3luYyBhbmdlZ2ViZW4uCisKKzYuIExvZXNjaGVuIHZvbiBSZXBvc2l0b3JpZXMKKyAgR2l0LVJlcG9zLCBkaWUgdm9uIGV1Y2ggc2VsYmVyIEdFSE9FUkVOIChTY2hyZWlicmVjaHRlIGFsbGVpbiByZWljaGVuIG5pY2h0KQorICBrb2VubmVuIGdlbG9lc2NodCB1bmQgLSB6dW1pbmRlc3QgZWluZSBXZWlsZSBhdWNoIHdpZWRlciByZXN0YXVyaWVydCB3ZXJkZW4uCisKKzYuMS4gTG9lc2NoZW4KKyAgPiBzc2ggZ2l0QG1nLm11ZC5kZSBEIHRyYXNoIHBsYXllcnMvY2FsZHJhL25lYmVsYmVyZ2UKKyAgcGxheWVycy9jYWxkcmEvbmViZWxiZXJnZSBtb3ZlZCB0byB0cmFzaGNhbi4KKworNi4yLiBNdWVsbGVpbWVyIGFuemVpZ2VuCisgID4gc3NoIGdpdEBtZy5tdWQuZGUgRCBsaXN0LXRyYXNoCisgIHBsYXllcnMvY2FsZHJhL25lYmVsYmVyZ2UvMjAxMS0xMS0yOF8yMjozNTo1NQorCis2LjMuIFJlc3RhdXJpZXJlbgorICA+IHNzaCBnaXRAbWcubXVkLmRlIEQgcmVzdG9yZSBwbGF5ZXJzL2NhbGRyYS9uZWJlbGJlcmdlLzIwMTEtMTEtMjhfMjI6MzU6NTUKKyAgcGxheWVycy9jYWxkcmEvbmViZWxiZXJnZS8yMDExLTExLTI4XzIyOjM1OjU1IHJlc3RvcmVkIHRvCisgIHBsYXllcnMvY2FsZHJhL25lYmVsYmVyZ2UKKworICBFcyB2ZXJzdGVodCBzaWNoIHZvbiBzZWxic3QsIGRhc3MgSWhyIG1pdCBkaWVzZW0gTWl0dGVsIHNlaHIgenVydWVja2hhbHRlbmQKKyAgdW1nZWhlbiBzb2xsdGV0LiBCZWkgTWlzc2JyYXVjaCB3aXJkIGdnZi4gZWluIEJhY2t1cCBlaW5nZXNwaWVsdCB1bmQgZGllc2UKKyAgTW9lZ2xpY2hrZWl0IHdpZWRlciBnZWxvZXNjaHQuCisKK1NJRUhFIEFVQ0g6CisgIGdpdC1yZXBvc2l0b3JpZXM6IFJlcG9zaXRvcnktVmVyd2FsdHVuZyBpbSBNdWQKKyAgZ2l0LXdvcmtmbG93OiBFaW4gc2ltcGxlcyBCZWlzcGllbCBlaW5lcyBBcmJlaXRzZmx1c3NlcyBtaXQgR2l0CisgIGdpdC1zeW5jOiBXaWUgZGllIFN5bmNocm9uaXNpZXJ1bmcgencuIGdpdC1SZXBvcyB1bmQgTXVkbGliIGFibGFldWZ0CisgIGdpdC1mYXE6IGhhZXVmaWcgZ2VzdGVsbHRlIEZyYWdlbi9Qcm9ibGVtZQorICBnaXQtbGlua3M6IFZlcndlaXNlIGlucyBXV1cKKworMjkuMDEuMjAxMyBHbG9pbnNvbgorTGV0enRlIEFlbmRlcnVuZzogMDIuMDcuMjAxNCBOb3RzdHJvbQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naXQta29vcGVyYXRpb24gYi9kb2Mvd2l6L2dpdC1rb29wZXJhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2JkYTZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQta29vcGVyYXRpb24KQEAgLTAsMCArMSw2OCBAQAorRXJ3ZWl0ZXJ1bmcgenVtIEdpdC1Xb3JrZmxvdzoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JlaSBtYW5jaGVuIFByb2pla3RlbiB3aWxsIG1hbiBtaXQgYW5kZXJlbiBNYWdpZXJuIGtvb3BlcmllcmVuLCBhYmVyOgorKiBkaWUgRGF0ZWllbiBpbSBNVUQgZnVlciBkaWUgU3BpZWxlciB1bnZlcmFlbmRlcnQgbGFzc2VuCisqIGluIGVpbmVtIG9yZGVudGxpY2hlbiBad2VpZyB6dXNhbW1lbmFyYmVpdGVuCisKK0RhenUga2FubiBtYW4gWndlaWdlIGF1Y2ggcmVtb3RlLCBhbHNvIGltIE1VRCBlcnN0ZWxsZW4uIERhIG51ciBkZXIKKydtYXN0ZXInLVp3ZWlnIGluIGRhcyBNVUQgc2VsYnN0IHN5bmNocm9uaXNpZXJ0IHdpcmQsIGthbm4gbWFuIHVlYmVyCitkYXMgTVVEIHNvIGRpZSBSZXBvc2l0b3JpZXMgYXVmIG1laHIgYWxzIGVpbmVuIENvbXB1dGVyL21laHIgYWxzIGVpbmVyCitQZXJzb24gc3luY2hyb25pc2llcmVuLCBvaG5lIGRpZSBTcGllbGVyIG1pdCBzZWluZXIgRW50d2lja2x1bmdzYXJiZWl0Cit6dSBiZWhlbGxpZ2VuOgorCisjIEFsdGVybmF0aXZlbiBpbi96dSBTY2hyaXR0IDQ6IEtvb3BlcmF0aW9uIGluIGVpbmVtIHJlbW90ZSBad2VpZy4KK0ZhbGxzIGljaCBtaXQgYW5kZXJlbiBMZXV0ZW4gbWVpbmVuIENvZGUgdGVpbGVuIHdpbGwsIGRpZXNlciBhYmVyIG5pY2h0IGltCitNVUQgaW0gJ21hc3RlcictWndlaWcgYXVmdGF1Y2hlbiAoYWxzbyBhbHMgRGF0ZWlhZW5kZXJ1bmcgZnVlciBhbGxlIFNwaWVsZXIKK2dlbHRlbikgc29sbCwga2FubiBpY2ggYXVjaCBudXIgbWVpbmVuIFp3ZWlnIHNlbGJzdCBpbnMgTVVEIHNjaGlja2VuOgorPiBnaXQgY2hlY2tvdXQgbmV1ZV9rYW1wZnRha3RpaworPiBnaXQgcHVzaCAtdSBnaXRAbWcubXVkLmRlOi9kaW5ncy9idW1zIG5ldWVfa2FtcGZ0YWt0aWsKKworQWxzIEFudHdvcnQgZHVlcmZ0ZSBzb3dhcyB3aWU6CisgKiBbbmV3IGJyYW5jaF0gICAgICBuZXVlX2thbXBmdGFrdGlrIC0+IG5ldWVfa2FtcGZ0YWt0aWsKK2RvcnQgc3RlaGVuLgorCitNaXQKKz4gZ2l0IHB1bGwKK2tvZW5uZW4gd2lyIHVucyBkaWVzZSBBZW5kZXJ1bmdlbiBhbSBNVUQtUmVwb3NpdG9yeSBob2xlbi4gRGVyIFp3ZWlnCisnbmV1ZV9rYW1wZnRha3RpaycgaXN0IGpldHp0IGVpbiBad2VpZyBhdWNoIGltIE1VRCB1bmQgYWxsZSBMZXV0ZSwKK2RpZSBzaWNoIGpldHp0IGRhcyBSZXBvc2l0b3J5IC9kaW5ncy9idW1zIGNsb25lbiwgc3RlaHQgZ2VuYXUgZGllc2VyCitad2VpZyBtaXQgYWxsIHVuc2VyZW4gQWVuZGVydW5nZW4gamV0enQgYXVjaCB6dXIgVmVyZnVlZ3VuZy4KKworVW5zZXIgbG9rYWxlciBad2VpZyAnbmV1ZV9rYW1wZnRha3RpaycgYmVrb21tdCBhYmVyIGRpZSBBZW5kZXJ1bmdlbgorYW4gZGllc2VtIFp3ZWlnIGFuZGVyZXIgZXZlbnR1ZWxsIG5vY2ggbmljaHQgZ2FueiBtaXQuIE1pdAorPiBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtIG5ldWVfa2FtcGZ0YWt0aWsgcmVtb3Rlcy9vcmlnaW4vbmV1ZV9rYW1wZnRha3Rpaworc2FnZW4gd2lyIGRlbSBsb2thbGVuIFp3ZWlnLCBkYXNzIGVyIGFiIGpldHp0IG1pdCBkZW0gcmVtb3Rlcy1ad2VpZworJ25ldWVfa2FtcGZ0YWt0aWsnIHZlcmJ1bmRlbiBpc3QuCisKK0RhbWl0IGJla29tbWVuIHdpciBldHdhaWdlIHJlbW90ZS1BZW5kZXJ1bmdlbiBpbiBkaWVzZW0gWndlaWcgbmFjaCBlaW5lbQorPiBnaXQgcHVsbAorYmVpIGVpbmVtIGZvbGdlbmRlbgorPiBnaXQgY2hlY2tvdXQgbmV1ZV9rYW1wZnRha3RpaworZGlyZWt0IG1pdGdldGVpbHQsIGV2ZW50dWVsbCBpbiBkZXIgRm9ybToKKyAgWW91ciBicmFuY2ggaXMgYmVoaW5kICdvcmlnaW4vbmV1ZV9rYW1wZnRha3RpaycgYnkgMSBjb21taXQsIGFuZCBjYW4gYmUKKyAgZmFzdC1mb3J3YXJkZWQuCitEYXMgaXN0IHNlaHIgZWluZmFjaCBkdXJjaCBlaW4KKz4gZ2l0IG1lcmdlIG9yaWdpbi9uZXVlX2thbXBmdGFrdGlrCitrb3JyaWdpZXJiYXIgdW5kIHNjaG9uIGtvZW5uZW4gd2lyIHNlbGJlciB3aWVkZXIgYW4gZGVtIGFrdHVhbGlzaWVydGVuIFp3ZWlnCithcmJlaXRlbiB1bmQgQWVuZGVydW5nZW4gcHVzaGVuLiBTaWVoZSBTY2hyaXR0IDUuCisKK1ppZWwgZWluZXIgc29sY2hlbiBadXNhbW1lbmFyYmVpdCBpc3QgbmF0dWVybGljaCBpbW1lciwgaXJnZW5kd2FubiBhdWNoCit3aWVkZXIgZGVuIGF1cyBTY2hyaXR0IDQgYmVrYW5udGVuIE1lcmdlIGdlZ2VuIGRlbiBad2VpZyAnbWFzdGVyJyBkdXJjaHp1LQorZnVlaHJlbiwgZGFtaXQgZGllIFNwaWVsZXIgd2FzIGRhdm9uIGhhYmVuLgorV2VubiB3aXIgYWxzbyBpcmdlbmR3YW5uIGRpZXNlbiBNZXJnZSBkdXJjaGdlZnVlaHJ0IGhhYmVuIHVuZCBkZXIgWndlaWcKKyduZXVlX2thbXBmdGFrdGlrJyB1bm5vZXRpZyBnZXdvcmRlbiBpc3QsIGtvZW5uZW4gd2lyIGlobiBhdWYgZGVyIFNlaXRlCitkZXMgTVVEcyBtaXQ6Cis+IGdpdCBwdXNoIGdpdEBtZy5tdWQuZGU6L2RpbmdzL2J1bXMgOm5ldWVfa2FtcGZ0YWt0aWsKK2F1ZnJhZXVtZW4uIERlciBlaW56aWdlIFVudGVyc2NoaWVkIHp1bSBFcnN0ZWxsZW4gZGVzIFp3ZWlnZXMgYXVmIE1VRC1TZWl0ZQoraXN0IHRhdHNhZWNobGljaCBkZXIgJzonIHZvciBkZW0gTmFtZW4gZGVzIFp3ZWlncy4KK0FjaHR1bmc6IGRhcyBnZWh0IG1vbWVudGFuIChub2NoKSBuaWNodCB1bmQgYXVmICdtYXN0ZXInIG9obmVoaW4gbmllLgorCitTSUVIRSBBVUNICisgIGdpdC1yZXBvc2l0b3JpZXM6IFJlcG9zaXRvcnktVmVyd2FsdHVuZyBpbSBNdWQKKyAgZ2l0LWhvd3RvOiBXaWUgZ2l0IGJlbnV0enQgd2lyZAorICBnaXQtd29ya2Zsb3c6IEVpbiBzaW1wbGVzIEJlaXNwaWVsIGVpbmVzIEFyYmVpdHNmbHVzc2VzIG1pdCBHaXQKKyAgZ2l0LXN5bmM6IFdpZSBkaWUgU3luY2hyb25pc2llcnVuZyB6dy4gZ2l0LVJlcG9zIHVuZCBNdWRsaWIgYWJsYWV1ZnQKKyAgZ2l0LWZhcTogaGFldWZpZyBnZXN0ZWxsdGUgRnJhZ2VuL1Byb2JsZW1lCisKKzAyLiBGZWIgMjAxMyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naXQtbGlua3MgYi9kb2Mvd2l6L2dpdC1saW5rcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjU5MmEyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtbGlua3MKQEAgLTAsMCArMSwzOCBAQAorTGlzdGUgdm9uIG51ZXR6bGljaGVuIHVuZCB3ZWl0ZXJmdWVocmVuZGVuIExpbmtzIGltIE5ldHoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgKiBEYXMgJ29mZml6aWVsbGUnIFR1dG9yaWFsCisgICAgaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9zY20vZ2l0L2RvY3MvZ2l0dHV0b3JpYWwuaHRtbAorICAqIEdpdCAtIFNWTiBDcmFzaCBDb3Vyc2UgKGZ1ZXIgTGV1dGUsIGRpZSBTVk4ga2VubmVuKQorICAgIGh0dHA6Ly9naXQub3IuY3ovY291cnNlL3N2bi5odG1sCisgICogRXZlcnlkYXkgZ2l0IHdpdGggMjAgY29tbWFuZHMgb3Igc28KKyAgICBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL3NjbS9naXQvZG9jcy9ldmVyeWRheS5odG1sCisgICAgKHNvcnRpZXJ0IG5hY2ggRGV2ZWxvcGVycywgSW50ZWdyYXRvcnMsIEFkbWlucykKKyAgKiBEYXMgZ2l0IENvbW11bml0eSBCb29rIChzZWhyIGVtcGZlaGxlbnN3ZXJ0KQorICAgIGh0dHA6Ly9ib29rLmdpdC1zY20uY29tLworICAqIFVuZGVyc3RhbmRpbmcgZ2l0IGNvbmNlcHR1YWxseQorICAgIGh0dHA6Ly93d3cuZWVjcy5oYXJ2YXJkLmVkdS9+Y2R1YW4vdGVjaG5pY2FsL2dpdC8KKyAgKiBHaXQgY2hlYXQgc2hlZXRzCisgICAgaHR0cDovL2hlbHAuZ2l0aHViLmNvbS9naXQtY2hlYXQtc2hlZXRzLworICAgIGh0dHA6Ly9qYW4ta3J1ZWdlci5uZXQvZGV2ZWxvcG1lbnQvZ2l0LWNoZWF0LXNoZWV0LWV4dGVuZGVkLWVkaXRpb24KKyAgICBodHRwczovL2dpdGh1Yi5jb20vQWxleFplaXRsZXIvZ2l0Y2hlYXRzaGVldC9ibG9iL21hc3Rlci9naXRjaGVhdHNoZWV0LnBkZgorICAgIGh0dHA6Ly93d3cuY2hlYXQtc2hlZXRzLm9yZy9zYXZlZC1jb3B5L2dpdC1jaGVhdC1zaGVldC5wZGYKKyAgICBodHRwOi8vY2hlYXQuZXJydGhlYmxvZy5jb20vcy9naXQKKyAgKiBHdWlkZXMvSG93dG9zIHZvbiBHaXRIdWIKKyAgICBodHRwOi8vaGVscC5naXRodWIuY29tLworICAqIERpZmZlcmVuY2Ugb2YgbWVyZ2UgYW5kIHB1bGwKKyAgICBodHRwOi8vbG9uZ2Fpci5uZXQvYmxvZy8yMDA5LzA0LzE2L2dpdC1mZXRjaC1hbmQtbWVyZ2UvCisgICogRGl2LiBUaXBzIHVuZCBUcmlja3MKKyAgICBodHRwOi8vbG9uZ2Fpci5uZXQvYmxvZy8yMDA5LzA0LzI1L2EtZmV3LWdpdC10aXBzLworICAqIEdpdCBmdWVyIFdpbmRvd3MKKyAgICBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2dpdGV4dGVuc2lvbnMvCisgICAgKE1pdCBJbnRlZ3JhdGlvbiBpbiBkZW4gRXhwbG9yZXIpCisgICogR2l0LUJlbnV0enVuZyB1bnRlciBXaW5kb3dzCisgICAgaHR0cDovL3JvZ2VyZHVkbGVyLmdpdGh1Yi5pby9naXQtZ3VpZGUvCisgICAgaHR0cDovL2hlbHAuZ2l0aHViLmNvbS93aW4tc2V0LXVwLWdpdC8KKyAgKiBHaXQtSW50ZXJuYSB2ZXJzdGFlbmRsaWNoIGVya2xhZXJ0OgorICAgIEdpdCBGb3IgQWdlcyA0IEFuZCBVcCAKKyAgICBodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTFmZkJKNHNWVWI0CisKKzEwLjAzLjIwMTUgQW1hcnlsbGlzCisKZGlmZiAtLWdpdCBhL2RvYy93aXovZ2l0LXJlcG9zaXRvcmllcyBiL2RvYy93aXovZ2l0LXJlcG9zaXRvcmllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWQ3YzMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtcmVwb3NpdG9yaWVzCkBAIC0wLDAgKzEsNzIgQEAKK0dpdC1SZXBvc2l0b3JpZXMgaW0gTW9yZ2VuR3JhdWVuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEaWUgZm9sZ2VuZGVuIFJlcG9zaXRvcmllcyBzdGVoZW4gZnVlciBkaWUgQmVudXR6dW5nIGR1cmNoIE1hZ2llciBiZXJlaXQgYnp3LgorbGFzc2VuIHNpY2ggZHVyY2ggTWFnaWVyIGJlaSBCZWRhcmYgKGxlZXIgb2RlciBkdXJjaCBJbXBvcnQgdm9uIFZlcnplaWNobmlzc2VuCithdXMgZGVtIE11ZCkgYW5sZWdlbjoKKworKiAvZC9yZWdpb24vbWFnaWVyLyoKKyAgVmVyemVpY2huaXNzZSB1bnRlcmhhbGIgZGVyIE1hZ2llcmViZW5lIGluIGRlbiBSZWdpb25lbiBsYXNzZW4gc2ljaCBpbgorICBnaXQtUmVwb3MgYXVmbmVobWVuLgorICBBbmxlZ2VuOiBSZWdpb25zbWl0YXJiZWl0ZXIsIE1hZ2llciBtaXQgU2NocmVpYnp1Z3JpZmYgYXVmIGRlbiBQZmFkCisgIFNjaHJlaWJ6dWdyaWZmOiBFaWdlbnR1ZW1lciAoTWFnaWVyKSwgUmVnaW9uc21hZ2llciBkaWVzZXIgUmVnaW9uLCBXZWlzZQorICBMZXNlenVncmlmZjogcy4gU2NocmVpYnp1Z3JpZmYgKHdlZ2VuIHNlY3VyZS8pCisKKyogL3Avc2VydmljZS9tYWdpZXIvKgorICBBbmxlZ2VuOiBXZWlzZSwgTWFnaWVyIG1pdCBTY2hyZWlienVncmlmZiBhdWYgZGVuIFBmYWQKKyAgU2NocmVpYnp1Z3JpZmY6IEVpZ2VudHVlbWVyIChNYWdpZXIpLCBXZWlzZQorICBMZXNlenVncmlmZjogYWxsZSBNYWdpZXIgKD49IDIwKQorICAKKyogL3BsYXllcnMvbWFnaWVyLyoKKyAgQW5sZWdlbjogTWFnaWVyIHNlbGJlciwgTWFnaWVyIG1pdCBTY2hyZWlienVncmlmZiBhdWYgZGVuIFBmYWQKKyAgU2NocmVpYnp1Z3JpZmY6IE1hZ2llciBzZWxiZXIKKyAgTGVzZXp1Z3JpZmY6IE1hZ2llciBzZWxiZXIKKworKiAvcGxheWVycy9tYWdpZXIvcHVibGljLyoKKyAgQW5sZWdlbjogTWFnaWVyIHNlbGJlciwgTWFnaWVyIG1pdCBTY2hyZWlienVncmlmZiBhdWYgZGVuIFBmYWQKKyAgU2NocmVpYnp1Z3JpZmY6IE1hZ2llciBzZWxiZXIsIFdlaXNlCisgIExlc2V6dWdyaWZmOiBqZWRlciBNYWdpZXIgKD49IDIwKQorCisqIHBsYXlncm91bmQvbWFnaWVyLyoKKyAgU3BpZWx3aWVzZSB6dW0gVGVzdGVuIHZvbiBNYWdpZXJuLiBTb2xsIHp1bSBSdW1zcGllbGVuIHVuZCBUZXN0ZW4gdm9uIEdpdAorICBkaWVuZW4uCisgIERpZXNlIFJlcG9zIHdlcmRlbiBOSUNIVCBtaXQgZGVtIE11ZCBzeW5jaHJvbmlzaWVydC4KKyAgRGllc2UgUmVwb3Mgd2VyZGVuIGF1dG9tYXRpc2NoIGdlbG9lc2NodCwgd2VubiBzaWUgbGFlbmdlciBhbHMgMTQgVGFnZSBuaWNodAorICB2ZXJhZW5kZXJ0IHdlcmRlbi4KKyAgQW5sZWdlbjogamVkZXIgTWFnaWVyCisgIFNjaHJlaWJ6dWdyaWZmOiBNYWdpZXIgc2VsYmVyLCBXZWlzZQorICBMZXNlenVncmlmZjogamVkZXIgTGVocmxpbmcgKHVuZCBob2VoZXIpICg+PSAxNSkKKworVWVicmlnZW5zIGdlaHQgZXMgZXhwbGl6aXQgTklDSFQsIHNlaW4gZ2VzYW10ZXMgfiBpbiBlaW4gUmVwbyB6dSBmYXNzZW4uCisKK1dlbm4gbWFuIHNlaW4ga29tcGxldHRlbiBSZWdpb25zdmVyemVpY2huaXMgKC9kL3JlZ2lvbi9tYWdpZXIpIGluIGVpbiBSZXBvCitpbXBvcnRpZXJ0LCBzaW5kIGFuc2NobGllc3NlbmQga2VpbmUgZWluemVsbmVuIFJlcG9zIHVudGVyaGFsYiBkaWVzZXMKK1ZlcnplaWNobmlzc2VzIG1vZWdsaWNoIChiencuIGZ1ZWhyZW4genUgUHJvYmxlbWVtKSEgRWJlbnNvIGthbm4gZGFzIGtvbXBsZXR0ZQorTWFnaWVydmVyemVpY2huaXMgbmljaHQgbWVociBhbHMgUmVwbyBpbXBvcnRpZXJ0IHdlcmRlbiwgd2VubiBlcyB1bnRlciBpaG0KK3NjaG9uIFJlcG9zIGdpYnQuCisKK0Vyem1hZ2llciB1bmQgR29ldHRlciBoYWJlbiB1ZWJyaWdlbnMgYXVmIF9hbGxlXyBSZXBvc2l0b3JpZXMgTGVzZS0gdW5kCitTY2hyZWlienVncmlmZi4gU2llIHNpbmQgYXVjaCBkaWUgZWluemlnZW4sIGRpZSBpbiBkZW4gUmVwb3NpdG9yaWVzIGVpbmVuIHNvZy4KK1Jld2luZCBkdXJjaGZ1ZWhyZW4ga29lbm5lbiAtIGQuaC4gZGllIFZlcnNpb25zZ2VzY2hpY2h0ZSBpbSBOYWNoaGluZWluCithZW5kZXJuLgorRWluZSBCZXJ1ZWNrc2ljaHRpZ3VuZyB2b24gYWNjZXNzX3JpZ2h0cy5jLCBBQ0NFU1NfUklHSFRTIGV0Yy4gZmluZGV0IGhpZXJiZWkKK2RlcnplaXQgTklDSFQgc3RhdHQuCisKK1p1bSBMb2VzY2hlbiB2b24gUmVwb3NpdG9yaWVzIHNpZWhlIFB1bmt0IDYgaW4gZ2l0LWhvd3RvLgorCitFaW4gKGF1dG9tYXRpc2NoZXIpIEltcG9ydCBiZXN0ZWhlbmRlciBWZXJ6ZWljaG5pc3NlIGF1cyBkZW0gTXVkIGlzdAorbW9lZ2xpY2guIEluIGRpZXNlbSBGYWxsIHdlcmRlbiBkYXMgc28gZXJzdGVsbHRlIFJlcG9zaXRvcnkgdW5kIGRpZSBNdWRsaWIKK2F1dG9tYXRpc2NoIHN5bmNocm9uaXNpZXJ0LCB3ZW5uIGplbWFuZCB2b24gYXVzc2VuIGluIGRhcyBSZXBvc2l0b3J5IHB1c2h0LgorSGllcmJlaSB3aXJkIF92ZXJzdWNodF8gZXR3YWlnZSBnbGVpY2h6ZWl0aWdlIEFlbmRlcnVuZyBpbSBHaXQtUmVwbyB1bmQgaW4gZGVyCitNdWRsaWIgc2lubnZvbGwgenUgJ21lcmdlbicgLSBpbSBGYWxsZSB2b24gS29uZmxpa3RlbiBpc3QgZGllcyBuaWNodCBpbW1lcgorbW9lZ2xpY2gsIHdlc3dlZ2VuIE1hZ2llciBhdWYgZGFzIEVyZ2VibmlzIHNvbGNoZXIgYXV0b21hdGlzaWVydGVyIE1lcmdlcyBlaW4KK0F1Z2Ugd2VyZmVuIHNvbGx0ZW4uCisKK1NJRUhFIEFVQ0g6CisgIGdpdC1ob3d0bzogV2llIGdpdCBiZW51dHp0IHdpcmQKKyAgZ2l0LXdvcmtmbG93OiBFaW4gc2ltcGxlcyBCZWlzcGllbCBlaW5lcyBBcmJlaXRzZmx1c3NlcyBtaXQgR2l0CisgIGdpdC1zeW5jOiBXaWUgZGllIFN5bmNocm9uaXNpZXJ1bmcgencuIGdpdC1SZXBvcyB1bmQgTXVkbGliIGFibGFldWZ0CisgIGdpdC1mYXE6IGhhZXVmaWcgZ2VzdGVsbHRlIEZyYWdlbi9Qcm9ibGVtZQorICBnaXQtbGlua3M6IFZlcndlaXNlIGlucyBXV1cKKworMjkuMDEuMjAxMyBHbG9pbnNvbi4KZGlmZiAtLWdpdCBhL2RvYy93aXovZ2l0LXN5bmMgYi9kb2Mvd2l6L2dpdC1zeW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YzVkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2dpdC1zeW5jCkBAIC0wLDAgKzEsNDkgQEAKK1N5bmNocm9uaXNhdGlvbiB6d2lzY2hlbiBnaXQtUmVwb3NpdG9yaWVzIHVuZCBNdWQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSS4gUHVzaCB2b24gYXVzc2VuIGlucyBNdWQuCisKK0FtIEVuZGUgZXMgUHVzaGVzIChpbSBzb2cuIHBvc3QtdXBkYXRlIGhvb2spIHdpcmQgZWluIFNjcmlwdCBnZXN0YXJ0ZXQsCit3YXMgZm9sZ2VuZGVzIG1hY2h0OgorCisxKSBXZW5uIGZ1ZXIgZGllIFN5bmNocm9uaXNhdGlvbiBtaXQgZGVtIE11ZCBha3RpdiBpc3QsIHdpcmQgbWl0IGRlciBNdWRsaWIKKyAgIGdlc3luY3QuIFdlbm4gbmljaHQ6IEVuZGUKKzIpIFp1bmFlY2hzdCB3aXJkIGluIGVpbmVtIGxva2FsZW4gQ2xvbmUgZGVzIGdpdC1SZXBvc2l0b3JpZXMgZWluIHRlbXBvcmFlcmVyCisgICBCcmFuY2ggenVtIE1lcmdlbiB2b24gQWVuZGVydW5nZW4gYXVzIGRlbSBNdWQgYW5nZWxlZ3QgKGF1dG8tbXVkLXN5bmMpLAorICAgd2VsY2hlciBiZWkgZGVtIFRhZyBsYXN0LWF1dG8tbXVkLXN5bmMgc3RhcnRldCB1bmQgZGllc2VyIEJyYW5jaAorICAgYXVzZ2VjaGVja3QuCiszKSBNaXQgSGlsZmUgdm9uIHJzeW5jIHdlcmRlbiBhbGxlIEFlbmRlcnVuZ2VuIGF1cyBkZXIgTXVkbGliIGhlcmVpbmtvcGllcnQuCis0KSBXZW5uIEFlbmRlcnVuZ2VuIGV4aXN0aWVyZW4sIHdpcmQgZWluIG5ldWVyIENvbW1pdCBhdWYgZGVtIEJyYW5jaCBnZW1hY2h0LgorNSkgQW5zY2hsaWVzc2VuZCB3aXJkIEJyYW5jaCBtYXN0ZXIgYXVzZ2VjaGVja3QuCis2KSBXZW5uIGVzIEFlbmRlcnVuZ2VuIGdhYiwgZGllIGluIDQpIGNvbW1pdGV0IHd1cmRlbiwgd2lyZCBqZXR6dCBkZXIgQnJhbmNoCisgICBhdXRvLW11ZC1zeW5jIG1pdCBkaWVzZW0gQ29tbWl0IGluIG1hc3RlciBnZW1lcmd0LgorICAgS29tbXQgZXMgaGllcmJlaSB6dSBLb25mbGlrdGVuLCB3ZXJkZW4gZGllIF9hdXRvbWF0aXNjaF8genVndW5zdGVuIGRlcworICAgU3RhbmRlcyBkZXIgZ2l0LVJlcG9zaXRvcmllcyBhdWZnZWxvZXN0LCBkLmguIGVzIGdlaGVuIGdnZi4gQWVuZGVydW5nZW4gYXVzCisgICBkZW0gTXVkIHZlcmxvcmVuLiBFcyBrYW5uIGhpZXJiZWkgZGFoZXIgcGFzc2llcmVuLCBkYXNzIHZvbiA4IGltIE11ZAorICAgZ2VhZW5kZXJ0ZW4gWmVpbGVuIG51ciA2IHVlYmVybm9tbWVuIHdlcmRlbiwgd2VpbCAyIFplaWxlbiBpbiBLb25mbGlrdCBtaXQKKyAgIGRlbiBBZW5kZXJ1bmdlbiBpbSBnaXQtUmVwb3NpdG9yeSBzdGVoZW4uIERhaGVyIGlzdCBlcyB3aWNodGlnLCBkYXMKKyAgIEVyZ2VibmlzIGRpZXNlcyBNZXJnZXMgaW0gTmFjaGhpbmVpbiB6dSBwcnVlZmVuIHVuZCBnZ2YuIHp1IGtvcnJpZ2llcmVuIQorNykgRmFsbHMgZXMgQWVuZGVydW5nZW4gZ2FiLCB3aXJkIGpldHp0IGRlciBpbiA3KSBlcnN0ZWxsdGUgTWVyZ2UtQ29tbWl0IGlucworICAgZ2l0LVJlcG9zaXRvcnkgZ2VwdXNodC4KKzgpIERlciBqZXR6dCBnZW1lcmd0ZSBTdGFuZCB3aXJkIHBlciByc3luYyBpbnMgTXVkIGtvcGllcnQuCis5KSBEYXMgVGFnIGxhc3QtYXV0by1tdWQtc3luYyB3aXJkIGFrdHVhbGlzaWVydC4KKworCitJSS4gQXV0b21hdGlzY2hlciByZWdlbG1hZXNzaWdlciBDb21taXQgdm9tIE11ZAorCitKZWRlbiBUYWcgdW0gMDU6MTEgd2lyZCB2aWEgY3JvbmpvYiB1bmQgZGFzIFNjcmlwdCB+L3NjcmlwdHMvZ2l0LWF1dG9jb21taXQKK2Z1ZXIgamVkZXMgUmVwbyBpbiB+L2dpdC1yZXBvc2l0b3JpZXMvIGRhcyB1bnRlciBJLiBiZXNjaHJpZWJlbmUgU2NyaXB0Cit+L3NjcmlwdHMvZ2l0LXN5bmMybGliIGF1c2dlZnVlaHJ0LgorCisKK0lJSS4gSW1wb3J0IHZvbiBWZXJ6ZWljaG5pc3NlbiBhdXMgZGVtIE11ZAorCitadSBqZWRlciB2b2xsZW4gU3R1bmRlIHdpcmQgaW4gYWxsZW4gVmVyemVpY2huaXNzZW4gdW50ZXIgL2QvLCAvcC8gdW5kCisvcGxheWVycy8gZGllIERhdGVpICdnaXQtbXVkLWltcG9ydCcgZ2VzdWNodC4gQWxsZSBWZXJ6ZWljaG5pc3NlLCBpbiBkZW5lbgorZGllc2UgZXhpc3RpZXJ0LCB3ZXJkZW4gaW4gZ2l0b2xpdGUgaW1wb3J0aWVydCB1bmQgZ2xlaWNoemVpdGlnIGF1Y2ggZWluIENsb25lCitpbiB+L2dpdC1yZXBvc2l0b3JpZXMvIGVyc3RlbGx0LCBkLmguIGRhc3MgZGllIFN5bmNocm9uaXNhdGlvbnNtYXNzbmFobWVuCit1bnRlciBJLiB1bmQgSUkuIGZ1ZXIgZGllc2VzIG5ldWUgZ2l0LVJlcG9zaXRvcnkgYWt0aXYgc2luZC4KKworTEVUWlRFIEFlTkRFUlVORzoKKzA1LjA0LjIwMTEsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9naXQtd29ya2Zsb3cgYi9kb2Mvd2l6L2dpdC13b3JrZmxvdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTVjNzZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9naXQtd29ya2Zsb3cKQEAgLTAsMCArMSwxNTEgQEAKK1R5cGlzY2hlciBBcmJlaXRzYWJsYXVmCis9PT09PT09PT09PT09PT09PT09PT09PQorCisoRXMgZ2lidCBhbmRlcmUgQXJiZWl0c3dlaXNlbiwgYWJlciBkaWVzIGhpZXIgaXN0IGVpbmUsIGRpZSBzaWNoIGJld2FlaHJ0CisgaGF0LikKKworTmVobWVuIHdpciBhbiwgaWNoIG1vZWNodGUgZXR3YXMgbmV1ZXMgZWluYmF1ZW4sIGVpbmVuIEJ1ZyBmaXhlbiBldGMuCitBbGxlIGRlciBmb2xnZW5kZW4gU2Nocml0dCB3ZXJkZW4gYXVmIGV1cmVtIGVpZ2VuZW4gUmVjaG5lciBpbiBldXJlbSBsb2thbGVuCitDbG9uZSBkZXMgamV3ZWlsaWdlbiBSZXBvc2l0b3JpZXMgZHVyY2hnZWZ1ZWhydC4KKworIyBTY2hyaXR0IDE6IFJlcG9zaXRvcnkgY2xvbmVuIHVuZC9vZGVyIHVwZGF0ZW4KKz4gZ2l0IGNsb25lIGdpdEBtZy5tdWQuZGU6L2RpbmdzL2J1bXMKKz4gZ2l0IGNoZWNrb3V0IG1hc3RlcgorPiBnaXQgcHVsbAorWnVlcnN0IGVpbm1hbCB3aXJkIGVpbiBjaGVja291dCBkZXMgWndlaWdlcyAnbWFzdGVyJyBnZW1hY2h0LiBVbmQgaW4gZGllc2VuCitad2VpZyBob2wgaWNoIG1pciBlcnN0bWFsIGRlbiBha3R1ZWxsZW4gU3RhbmQgYXVzIGRlbSBNdWQgKHB1bGwpLgorCitKZXR6dCBtb2VjaHRlIGljaCBhbGxlIEFlbmRlcnVuZ2VuIGVyc3RtYWwgaW4gZWluZW0gc2VwYXJhdGVuIFp3ZWlnIG1hY2hlbi4KK1dhcnVtPyBXZWlsIGRhbm4gZGVyICdtYXN0ZXInIChkYXMgaXN0IGRlciBha3RpdmUgWndlaWcgaW0gTXVkISkgaW1tZXIgaW4KK2VpbmVtIGJlbnV0emJhcmVuIFp1c3RhbmQgaXN0LiBEZXN3ZWl0ZXJlbiBrYW5uIG1hbiBlaW5lbiBad2VpZyBlaW5mYWNoCit3ZWd3ZXJmZW4sIHdlbm4gaXJnZW5kd2FzIGdyb2Vzc2VyZXMgc2NoaWVmZ2VsYXVmZW4gaXN0Li4uCitBdXNzZXJkZW0gaXN0IGVzIGRhbm4gZWluZmFjaGVyLCB6d2lzY2hlbnplaXRsaWNoZSBBZW5kZXJ1bmdlbiBhdXMgZGVtIE11ZCB6dQoraW50ZWdyaWVyZW4uCisKKyMgU2Nocml0dCAyOiBOZXVlbiBad2VpZyBlcnN0ZWxsZW4KKz4gZ2l0IGNoZWNrb3V0IC1iIG5ldWVfa2FtcGZ0YWt0aWsKK0hpZXJtaXQgd2lyZCAgZWluIG5ldWVyIFp3ZWlnIGVyc3RlbGx0IHVuZCBnbGVpY2h6ZWl0aWcgaW4gaWhuIGdld2VjaHNlbHQuCisKK0hpZXIgbWFjaCBpY2ggamV0enQgYWxsZSBtb2VnbGljaGVuIEFyYmVpdGVuIHVuZCBCYXN0ZWxlaWVuLCBkaWUgaWNoIGZ1ZXIgZGllCituZXVlIEthbXBmdGFrdGlrIGJyYXVjaGUuIFRpcHBzIGRhenU6CisqIFZpZWxlIHVuZCBoYWV1ZmlnZSBDb21taXRzIG1hY2hlbiEgSmUga2xlaW5lciBlaW56ZWxuZSBDb21taXRzIHNpbmQsIGRlc3RvCisgIGJlc3NlciBrYW5uIG1hbiBBZW5kZXJ1bmdlbiBzcGFldGVyIHZlcmZvbGdlbiAod2FzIHouQi4gc3VwZXIgaXN0LCB3ZW5uCisgIGplbWFuZCB3YXMgYWJuZWhtZW4gbXVzcyEpIHVuZCBkZXN0byBiZXNzZXIga2FubiBtYW4gZWluemVsbmUgQWVuZGVydW5nZW4KKyAgc3BhZXRlciBiZWkgQmVkYXJmIGF1Y2ggcnVlY2tnYWVuZ2lnIG1hY2hlbiwgd2VubiBtYW4gbWVya3QsIGRhc3MgbWFuCisgIHN0ZWxsZW53ZWlzZSBVbnNpbm4gZ2ViYXV0IGhhdC4gOy0pCisqIFRoZW1hdGlzY2ggdW50ZXJzY2hpZWRsaWNoZSBEaW5nZSBpbiB2ZXJzY2hpZWRlbmUgQ29tbWl0cyBwYWNrZW4uIEFsc28gekIKKyAgZXJzdCBTeW50YXhmZWhsZXIgZWRpdGllcmVuIHVuZCBjb21taXRlbiwgZGFubiBlaW5lIG5ldWUgTWV0aG9kZSBmdWVyCisgIGV0d2FzIGdhbnogYW5kZXJlIHNjaHJlaWJlbiB1bmQgY29tbWl0ZW4uCisKKyMgU2Nocml0dCAzLjE6IEFlbmRlcnVuZ2VuIHBydWVmZW4KKz4gZ2l0IHN0YXR1cworSGllcm1pdCBsYXNzZSBpY2ggbWlyIGFuemVpZ2VuLCB3ZWxjaGUgRGF0ZWllbiBuaWNodC1jb21taXR0ZXRlIEFlbmRlcnVuZ2VuCitlbnRoYWx0ZW4gKG9kZXIgbmV1IHNpbmQvZ2Vsb2VzY2h0IHd1cmRlbikuCisKKz4gZ2l0IGRpZmYKK0RpZXMgemVpZ3QgbWlyIGFsbGUgbmljaHQtY29tbWl0dGV0ZW4gQWVuZGVydW5nZW4gYW4gLSB6ZWlsZW53ZWlzZSB2ZXJnbGljaGVuCittaXQgZGVtIHZvcmhlcmlnZW4gWnVzdGFuZC4KKworIyBTY2hyaXR0IDMuMjogQWVuZGVydW5nZW4gaW4gbG9rYWxlcyBSZXBvc2l0b3J5IGNvbW1pdGVuCis+IGdpdCBhZGQgPGZpbGU+ICAgICAgICAgICAgICAgICAgICAvLyBlaW56ZWxuZSBGaWxlcyBhdXN3YWVobGVuCitPREVSCis+IGdpdCBhZGQgLUEgLi8gICAgICAgICAgICAgICAgICAgICAvLyBhbGxlIEZpbGVzIGF1c3dhZWhsZW4KK0hpZXJtaXQgbWVya2UgYWxsZSBnZW1hY2h0ZW4gQWVuZGVydW5nZW4gZnVlciBkZW4gbmFlY2hzdGVuIENvbW1pdCB2b3IuCitJY2gga29lbm50ZSBoaWVyIGFiZXIgYXVjaCBlaW56ZWxuZSBEYXRlaWVuIGF1c3dhZWhsZW4gb2RlciBzb2dhciBudXIKK2Jlc3RpbW10ZSBUZWlsZSBkZXIgQWVuZGVydW5nZW4gaW4gZWluZXIgRGF0ZWkuIChIaWVyenUgYml0dGUgZGllCitHaXQtRG9rdSBiZW11ZWhlbi4pCisKKz4gZ2l0IGNvbW1pdAorSGllcm1pdCBlcnN0ZWxsZSBpY2ggZWluZW4gQ29tbWl0LCBkZXIgZGllIGJpc2hlcmlnZW4gQWVuZGVydW5nZW4gdW1mYXNzdC4KK0RhYmVpIHdpcmQgZWluIEVkaXRvciBnZW9lZmZuZXQsIGluIGRlbiBpY2ggZWluZSBpbmZvcm1hdGl2ZSBOYWNocmljaHQgdWViZXIKK21laW5lIEFlbmRlcnVuZ2VuIGhpbnRlcmxhc3NlbiBrYW5uLiBEYXMgaXN0IGJlc29uZGVycyB3aWNodGlnLCB3ZW5uIGljaCBpbgorZnJlbWRlbiBHZWJpZXRlbiBhcmJlaXRlLCBhYmVyIGF1Y2ggZnVlciBtaWNoIHVuZCBlaW5lbiBldHdhaWdlbiBhYm5laG1lbmRlbgorTWFnaWVyIHNlaHIgc2lubnZvbGwuCitBbnJlZ3VuZzogRGllIGVyc3RlIFplaWxlIGlzdCBkYXMgc29nLiBCZXRyZWZmIGRlcyBDb21taXRzIC0gdmVyZ2xlaWNoYmFyIG1pdAorZGVtIEJldHJlZmYgZWluZXIgZU1haWwuIEFuc2NobGllc3NlbmQgc29sbHRlIGVpbmUgbGVlcmUgWmVpbGUgZm9sZ2VuIHVuZAorZGFuYWNoIGVpbmUgbGFlbmdlcmUgQmVzY2hyZWlidW5nIGVpbmdlYmVuIHdlcmRlbiwgc29mZXJuIG5vZXRpZy9zaW5udm9sbC4KKworV2VubiBpY2ggYW4gZGllc2VtIFB1bmt0IG1pdCBkZW0gQnVnZml4IG9kZXIgRmVhdHVyZSBub2NoIG5pY2h0IGZlcnRpZyBiaW46CitlaW5mYWNoIGRpZSBsZXR6dGVuIDQgQmVmZWhsZSBhdXMgU2Nocml0dCAzIGJlbGllYmlnIG9mdCB3aWVkZXJob2xlbiwgZC5oLgorYmVsaWViaWcgdmllbGUgd2VpdGVyZSBDb21taXRzIG1hY2hlbi4KKworIyBTY2hyaXR0IDQ6IEFlbmRlcnVuZ2VuIGluIGxva2FsZW4gTWFzdGVyLVp3ZWlnIG1lcmdlbgorQmluIGljaCBkYW5uIHNjaGxpZXNzbGljaCBhYmVyIG1hbCBmZXJ0aWcsIGdlaGUgaWNoIGVyc3RtYWwgenVydWVjayB6dW0KK21hc3Rlci1ad2VpZzoKKworPiBnaXQgY2hlY2tvdXQgbWFzdGVyCitIdWNoISBQbG9ldHpsaWNoIHNpbmQgYWxsZSBEYXRlaWVuIGF1ZiBkZW0gYWx0ZW4gU3RhbmQhIEtlaW5lIFNvcmdlLAordW5zZXJlIEFlbmRlcnVuZ2VuIHNpbmQgaW0gWndlaWcgJ25ldWVfa2FtcGZ0YWt0aWsnIHNpY2hlciB2ZXJ3YWhydC4KKworQWNodHVuZzogd2VubiBpaHIgbWl0IGFuZGVyZW4genVzYW1tZW4gYXJiZWl0ZXQsIGtvZW5udGUgamVtYW5kCithbmRlcmVzIGltIE1VRCBBZW5kZXJ1bmdlbiB2b3JnZW5vbW1lbiBoYWJlbi4gRWluIGVpbmZhY2hlcworPiBnaXQgcHVsbAordW0gZGllIERhdGVpZW4gaW0gJ21hc3RlcictWndlaWcgYXVmIGRlbiBuZXVlc3RlbiBTdGFuZCB6dSBicmluZ2VuLAoremVpZ3QgZXVjaCBhdWNoIEFlbmRlcnVuZ2VuLiBXZW5uIGRhIGpldHp0CisgICdBbHJlYWR5IHVwLXRvLWRhdGUuJworc3RlaHQsIGlzdCBhbGxlcyBpbiBCdXR0ZXIsIGFuc29uc3RlbiBzaWVoZSB1bnRlbiBiZWkgNC4xLmV4dHJhLgorCis+IGdpdCBtZXJnZSBuZXVlX2thbXBmdGFrdGlrCitNaXQgZGllc2VtIEtvbW1hbmRvIGhvbGUgaWNoIG51biBhbGxlIEFlbmRlcnVuZ2VuIGF1cyBtZWluZW0gWndlaWcKKyduZXVlX2thbXBmdGFrdGlrJyBpbiBkZW4gWndlaWcgJ21hc3RlcicgKG1lcmdlKS4KKworIyBTY2hyaXR0IDU6IEFlbmRlcnVuZ2VuIGluIGRhcyBNVUQtUmVwb3NpdG9yeSB1ZWJlcnRyYWdlbgorSmV0enQgYmluIGljaCBiZXJlaXQsIGRpZSBBZW5kZXJ1bmdlbiBpbnMgTXVkIHp1IHVlYmVydHJhZ2VuOgorPiBnaXQgcHVzaCAKK0pvYiBkb25lIQorSGllciBrb21tZW4gamV0enQgZGl2LiBBdXNnYWJlbiB2b20gTXVkLCBkaWUgZXR3YXMgdWViZXIgZGVuIEVyZm9sZyB1bmQKK01pc3NlcmZvbGcgZGVzIFB1c2hlcyBzYWdlbi4gOy0pCitXZW5uIGFtIEVuZGUgc3RlaHQKKyAgJ1lvdXIgY2hhbmdlcyB3ZXJlIGNvcGllZCB0byB0aGUgbXVkbGliLicKK2lzdCBhbGxlcyBlcmZvbGdyZWljaC4KKworU3RlaHQgYW0gRW5kZSBlaW4KKyAgJ1lvdXIgY2hhbmdlcyB3ZXJlIG1lcmdlZCBzdWNjZXNzZnVsbCB3aXRoIGNoYW5nZXMgaW4gdGhlIG11ZGxpYiBhbmQgdGhlCisgICBtZXJnZWQgc3RhdGUgd2FzIGNvcGllZCB0byB0aGUgbXVkbGliLiBEbyBub3QgZm9yZ2V0IHRvIHB1bGwgdGhlIG1lcmdlCisgICBjb21taXQhIiAKK2lzdCBhbiBzaWNoIGF1Y2ggYWxsZXMgZ3V0LiBBYmVyIGRhbm4gZ2FiIGVzIGltIE11ZCBlYmVuIGRvY2ggbm9jaAorQWVuZGVydW5nZW4sIGRpZSBlcyBuaWNodCBpbSBHaXQtUmVwbyBnYWIsIGRpZSBnZW1lcmdlZCB3dXJkZW4uIEluIGRpZXNlbQorRmFsbCBzb2xsdGUgbWFuIGRlbiBha3R1ZWxsZW4gWnVzdGFuZCBzaWNoIG5vY2htYWwgaG9sZW46Cis+IGdpdCBwdWxsCitVbmQgZGFubiBhbnNjaGF1ZW4sIGRpZXNlciBNZXJnZSBhdWNoIGRhcyByaWNodGlnZSBnZW1hY2h0IGhhdDoKKz4gZ2l0IGxvZyAtcAorSGllcm1pdCBrcmllZ2UgaWNoIGVpbmUgc2Nob2VuZSBMaXN0ZSBhbGxlciBDb21taXRzIGFuZ2V6ZWlndCB1bmQgLXAgc29yZ3QKK2RhZnVlciwgZGFzcyBkYWJlaSBhbGxlIEFlbmRlcnVuZ2VuIGFuZ2V6ZWlndCB3ZXJkZW4sIG5pY2h0IG51ciBkaWUKK0NvbW1pdC1OYWNocmljaHQuCisKKyMgU29uZGVyZmFlbGxlIHVuZCBlcndlaXRlcnRlIE1vZWdsaWNoa2VpdGVuCisjIFNjaHJpdHQgNC4xLmV4dHJhOiBad2lzY2hlbnplaXRsaWNoZSBBZW5kZXJ1bmdlbiBpbSBNVUQgYmVydWVja3NpY2h0aWdlbgorCitFcyBrb2VubnRlIHNlaW4sIGRhc3MgbWFuIGZ1ZXIgZGVuIEJyYW5jaCBuZSBnYW56ZSBXZWlsZSBnZWJyYXVjaHQgaGF0IC0KK3VuZCBkYXNzIHdhZWhyZW5kIG1laW5lciBBcmJlaXQgamVtYW5kIGFuZGVycyBBZW5kZXJ1bmdlbiAoaW0gTXVkIG9kZXIKK1JlcG8pIGdlbWFjaHQgaGF0LgorCitEaWVzZSBBZW5kZXJ1bmdlbiBzb2xsdGUgbWFuIHNpY2ggd2llIGdlc2NocmllYmVuIGFscyBlcnN0ZXMgbmFjaCBkZW0KK1Vtc2NoYWx0ZW4genVtIG1hc3Rlci1ad2VpZyBob2xlbjoKKz4gZ2l0IHB1bGwKKworSmV0enQgZ2VoIGljaCB3aWVkZXIgaW4gbWVpbmVuIFp3ZWlnIChvaG5lIC1iKQorPiBnaXQgY2hlY2tvdXQgbmV1ZV9rYW1wZnRha3RpawordW5kIG1hY2hlIGVpbiBzb2cuIFJlYmFzZS4gRGFtaXQgdmVyc2NoaWViZSBpY2ggc296dXNhZ2VuLCBkZW4gUHVua3QsCithbiBkZW0gbWVpbiBad2VpZyB2b20gJ21hc3RlcicgYWJ6d2VpZ3QgdW5kIHR1ZSBzbywgYWxzIG9iIGRpZSBlYmVuCitnZWhvbHRlbiBBZW5kZXJ1bmdlbiBzY2hvbiBkYSBnZXdlc2VuIHdhZXJlbiwgYWxzIGljaCBkZW4gWndlaWcgZXJzdGVsbHRlLgorKEFuZGVyZSBTaWNodHdlaXNlOiBpY2ggbmVobWUgbWVpbmUgWndlaWcgdW5kIHNldHogaWhuIGF1ZiBkZW4gYWt0dWVsbGVuCisgJ21hc3RlcicgZHJhbi4pCis+IGdpdCByZWJhc2UgbWFzdGVyCisKK0RlciBWb3J0ZWlsIGlzdDogd2VubiBqZXR6dCB3YXMga2FwdXR0IGdlZ2FuZ2VuIGlzdCwgZXMgYWxzbyBLb25mbGlrdGUgZ2lidCwKK2Rhbm4gZ2lidCBlcyBkaWUgbnVyIGluIG1laW5lbSBad2VpZyAnbmV1ZV9rYW1wZnRha3RpaycgdW5kIGRvcnQga2FubiBpY2gKK3NpZSBpbiBhbGxlciBSdWhlIHJlcGFyaWVyZW4uIFNvd29obCBkZXIgJ21hc3RlcicgaW0gTVVEIGFscyBhdWNoIG1laW4KK2xva2FsZXIgJ21hc3Rlcicgc2luZCBpbnRha3QuCisKK1VuZCBqZXR6dCBnZWh0IGVzIHdpZSBvYmVuIHdlaXRlci4KKworU0lFSEUgQVVDSAorICBnaXQtcmVwb3NpdG9yaWVzOiBSZXBvc2l0b3J5LVZlcndhbHR1bmcgaW0gTXVkCisgIGdpdC1ob3d0bzogV2llIGdpdCBiZW51dHp0IHdpcmQKKyAgZ2l0LWtvb3BlcmF0aW9uOiBFaW4gdWViZXIgZ2l0LXdvcmtmbG93IGhpbmF1c2dlaGVuZGVzIEJlaXNwaWVsIHp1cgorICAgICAgICAgICAgICAgICAgIFN5bmNocm9uaXNhdGlvbiBiencgS29vcGVyYXRpb24gbWVocmVyZXIgTWFnaWVyL1JlY2huZXIKKyAgZ2l0LXN5bmM6IFdpZSBkaWUgU3luY2hyb25pc2llcnVuZyB6dy4gZ2l0LVJlcG9zIHVuZCBNdWRsaWIgYWJsYWV1ZnQKKyAgZ2l0LWZhcTogaGFldWZpZyBnZXN0ZWxsdGUgRnJhZ2VuL1Byb2JsZW1lCisKKzAyLiBGZWIgMjAxMyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9oYXVzYmF1IGIvZG9jL3dpei9oYXVzYmF1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjOWMyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2hhdXNiYXUKQEAgLTAsMCArMSw0MCBAQAorSGlsZmVzZWl0ZSBmdWVyIE1hZ2llcjogSGF1c2JhdSBpbSBNb3JnZW5HcmF1ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FscyBNYWdpZXIgd2lyZCBtYW4gZGVzb2VmdGVyZW4gdm9uIFNwaWVsZXJuIGdlYmV0ZW4sIElobmVuIGJlaW0KK0hhdXNiYXUgYmVoaWxmbGljaCB6dSBzZWluLiBEaWVzZSBCaXR0ZSBlcmZvbGd0IG1laXN0ZW5zIGFscworCisxKSAnS2FubnN0IER1IGhpZXIgaW4gZGVtIFJhdW0gd28gaWNoIGJpbiwgZXMgbWFsIHNvIGVpbnJpY2h0ZW4sCisgICAgZGFzcyBpY2ggbWVpbiBIYXVzIGFic3RlbGxlbiB1bmQgZ2llc3NlbiBrYW5uJworCit1bmQgCisKKzIpICdJY2ggbW9lY2h0IGhpZXIgZ2VybmUgbWVpbiBIYXVzIGFic3RlbGxlbiwgYWJlciBlcyBzb2xsIHVuLQorICAgIHNpY2h0YmFyIHNlaW4sIGVpbmUgYW5kZXJlIEt1cnpiZXNjaHJlaWJ1bmcgaGFiZW4gdW5kIG1hbiAKKyAgICBzb2xsIGVzIG5pY2h0IG1pdCA8YmV0cmV0ZT4gYmV0cmV0ZW4ga29lbm5lbiwgb2RlciAuLi4uICcuCisKKworRnVlciAxKSBpc3QgZXMgcmVsYXRpdiBlaW5mYWNoLiBNYW4gYmVnZWJlIHNpY2ggYWxzIE1hZ2llciBpbiBkZW4gCitSYXVtLCB6dWVja2Ugc2VpbiBNRy1Ub29sIHVuZCB0aXBwZSBlaW4gCisKKyAgICAgICAgICAgICAgJ3hjYWxsICRoLT5TZXRQcm9wKFBfSEFVU19FUkxBVUJULDEpJy4KKworRGFubiBmb3JkZXJlIG1hbiBkZW4gU3BpZWxlciBhdWYsIHNlaW4gSGF1cyBhYnp1c3RlbGxlbiB1bmQgZ2llcy0KK3NlbiB1bmQgc2V0emUgZGllc2UgUHJvcGVydHkgd2llZGVyIGF1ZiAwLgorCitBQ0hUVU5HOiBEYXMgQWJzdGVsbGVuIGVpbmVzIEhhdXNlcyBtdXNzIHVuYmVkaW5ndCB2b3JoZXIgbWl0IGRlbSAKKy0tLS0tLS0gIE1hZ2llciBhYmdlc3Byb2NoZW4gd2VyZGVuLCBkZW0gZGllc2VyIFJhdW0gZ2Vob2VydCEgQmVpIAorICAgICAgICAgaW5ha3RpdmVuIE1hZ2llciBpc3QgZGllcyBkZXIgenVzdGFlbmRpZ2UgUmVnaW9uc21hZ2llci4KKworQmVpIDIpIHZlcmZhZWhydCBtYW4sIHdpZSBmdWVyIGRlbiBGYWxsIDEpIGdlc2NoaWxkZXJ0LiBKZWRvY2ggc2luZCAKK2RhenUgbm9jaCBhbmRlcmUgRGluZ2Ugbm90d2VuZGlnLiBEYSBkaWVzZSBkZW4gUmFobWVuIGVpbmVyIEhpbGZlLQorc2VpdGUgc3ByZW5nZW4sIGxpZWd0IHVudGVyIAorCisgICAgICAgICAgICAgICAgICAgICAgIC9kb2MvYmVpc3BpZWxlL21pc2Mvc2VoZXJoYXVzLmMKKworZWluIEZpbGUsIGluIGRlbSBhbGxlcyBhdXNmdWVocmxpY2ggZG9rdW1lbnRpZXJ0IGlzdC4KKworU0lFSEUgQVVDSDogUF9IQVVTX0VSTEFVQlQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMRVRaVEUgQWVOREVSVU5HOiBTYW0sIDE5LjA1LjIwMDEsIDIzOjAwOjAwIHZvbiBUaWxseQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9oZWlsdW5nIGIvZG9jL3dpei9oZWlsdW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMWI2YzgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2hlaWx1bmcKQEAgLTAsMCArMSwxNTYgQEAKK0hlaWx1bmcgdm9uIFNwaWVsZXJuIGR1cmNoIE9iamVrdGUsIFJhZXVtZSwgcG9ydGFibGUgSGVpbHVuZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmVsbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioKKworTmViZW4gZGVuIGJla2FubnRlbiBIZWlsc3RlbGxlbiBmdWVyIFNwaWVsZXIgKGRlbiBLbmVpcGVuIHNvd2llIGdpbGRlbmludGVybmUKK0ZhZWhpZ2tlaXRlbikgZ2lidCBlcyBub2NoIGRpZSBNb2VnbGljaGtlaXQsIGRlbiBTcGllbGVybiBIZWlsdW5nIGR1cmNoIFZlci0KK3dlbmR1bmcgZGVyIExGVU5zICJoZWFsX3NlbGYiLCAicmVzdG9yZV9oaXRfcG9pbnRzIiwgInJlc3RvcmVfc3BlbGxfcG9pbnRzIiwKKyJidWZmZXJfaHAiIHVuZCAiYnVmZmVyX3NwIiBIZWlsdW5nIHp1a29tbWVuIHp1IGxhc3Nlbi4KKworRGllcyB3aXJkIG1laXN0IHVlYmVyIFJhZXVtZSBnZW1hY2h0LCBpbiBkZW5lbiBkZXIgU3BpZWxlciBlaW4gYmVzdGltbXRlcworS29tbWFuZG8gYXVzZnVlaHJlbiBtdXNzIG9kZXIgdWViZXIgT2JqZWt0ZSwgZGllIGRlciBTcGllbGVyIG1pdCBzaWNoIHRyYWdlbgora2FubiAoJ3RyYWdiYXJlIFRhbmtlbicpLCB1bSBIZWlsdW5nIHp1IGVyZmFocmVuLgorCitFUyBXSVJEIEVNUEZPSExFTiwgamVkZSBtb2JpbGUgSGVpbHVuZyB1ZWJlciAiL3N0ZC9mb29kIiB6dSBpbXBsZW1lbnRpZXJlbi4KK0RvcnQgbXVlc3NlbiBsZWRpZ2xpY2ggZWluIHBhYXIgUHJvcGVydGllcyBnZXNldHp0IHdlcmRlbiwgdW0gc2ljaGVyenVnZWhlbiwKK2Rhc3MgZGllc2UgSGVpbHVuZ3NyZWdlbG4gZWluZ2VoYWx0ZW4gd2VyZGVuLgorR2xlaWNoemVpdGlnIHdpcmQgYXVjaCBzaWNoZXJnZXN0ZWxsdCwgZGFzcyB6LkIuIFByb3BzIHZvbiBDb250YWluZXJuLCBkaWUKK0hlaWx1bmcgZW50aGFsdGVuLCBuYWNoIExlZXJ1bmcga29ycmVrdCBnZXNldHp0IHdlcmRlbi4KKworTmViZW4gZGllc2VuIE1vZWdsaWNoa2VpdGVuIGdpYnQgZXMgYXVjaCBub2NoIEVudHRhbmt1bmdlbiwgYWxzbyBkaWUKK01vZWdsaWNoa2VpdCwgaW0gU3BpZWxlciBlaW5lIGRlciBQcm9wZXJ0aWVzIFBfRFJJTkssIFBfRk9PRCBvZGVyIFBfQUxDT0hPTAordWViZXIgZGllIExGVU5zICJkZWZ1ZWxfZm9vZC9kcmluayIgb2RlciAicmVkdWNlX2Zvb2QvZHJpbmsvYWxjb2hvbCIgenUKK21pbmRlcm4uIERpZXMgaXN0IGVpbmUgRm9ybSBkZXIgSGVpbHVuZywgZGEgZGVyIFNwaWVsZXIgZGFuYWNoIHdpZWRlcgorcmVndWxhZXIgZXNzZW4gdW5kIHRyaW5rZW4ga2Fubi4gU2llIG11c3MgYWxsZXJkaW5ncyBvcnRzZ2VidW5kZW4gc2Vpbi4KKworR3J1bmRzYWV0emxpY2gga2FubiBlaW5lIEhlaWxzdGVsbGUgbmF0dWVybGljaCBhdWNoIFNjaGFkZW4gaW4gZWluZW0gU3BpZWxlcgordmVydXJzYWNoZW4uIERhcyBtYWNodCBkYW5uIFNpbm4sIHdlbm4gZXIgei5CLiBkZXIgLSBmdWVyIGRpZXNlIEhlaWxzdGVsbGUgLQorJ2ZhbHNjaGVuJyBHaWxkZSBvZGVyIFJhc3NlIGFuZ2Vob2VydC4gRGFiZWkgTVVTUyBmdWVyIGRlbiBTcGllbGVyIGFiZXIKK3ZvcmhlciBkZXV0bGljaCBlcmtlbm5iYXIgZ2V3ZXNlbiBzZWluLCBkYXNzIGRpZXNlICdIZWlsc3RlbGxlJyBmdWVyIGlobgorbmljaHQgZ2VlaWduZXQgaXN0LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGV6aWZpc2NoZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioKKworQmVpIGplZGVyIEZvcm0gdm9uIEhlaWx1bmcgTVVTUyAiZWF0X2Zvb2QiIChiZWkgRXNzZW4pIG9kZXIgImRyaW5rX3NvZnQiIChiZWkKK1RyaW5rZW4pIHVuZCBnZ2YuICJkcmlua19hbGNvaG9sIiB2ZXJ3ZW5kZXQgd2VyZGVuISBEaWVzZSBGdW5rdGlvbmVuIHNvcmdlbgorZnVlciBlaW5lbiB1bmtvbXBsaXppZXJ0ZW4gQWJsYXVmIGRlciBIZWlsdW5nLCBkYSBzaWUgcHJ1ZWZlbiwgb2IgZGVyIFNwaWVsZXIKK25vY2ggZ2VudWVnZW5kIFRhbmtrYXBheml0YWV0ZW4gaGF0IHVuZCB3ZW5uIGphLCBkaWUgZW50c3ByZWNoZW5kZW4gUHJvcGVydGllcworKFBfRFJJTkssIFBfRk9PRCBvZGVyIFBfQUxDT0hPTCkgYXV0b21hdGlzY2ggcmF1ZnNldHplbi4KKworImRyaW5rX2FsY29ob2wiIGlzdCBpbiBkaWVzZW0gWnVzYW1tZW5oYW5nIGJlc29uZGVycyB3aWNodGlnLCBkYSBlcyBhdWYgZWluZW4KK2V2dGwuIHZvcmhhbmRlbmVuIFNhdWZza2lsbCBwcnVlZnQhCisKK0RpZSBIZWlsdW5nIHNlbGJlciBtdXNzIGRhbm4gYWJlciBub2NoIHVlYmVyICJoZWFsX3NlbGYiLCAicmVzdG9yZV9oaXRfcG9pbnRzIiwKKyJyZXN0b3JlX3NwZWxsX3BvaW50cyIsICJidWZmZXJfaHAiIG9kZXIgImJ1ZmZlcl9zcCIgZ2VzY2hlaGVuIQorCitPcnRzZ2VidW5kZW5lIEhlaWx1bmc6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tuZWlwZW46IEhpZXIgaXN0IGtsYXIsIGRhc3MsIGplIGhvZWhlciBkaWUgSGVpbHVuZyBpc3QsIHVtc28gdGV1cmVyIGRpZQorICAgICAgICAgSGVpbHVuZyBzZWluIG11c3MuIEF1c3NlcmRlbSBNVVNTICJidWZmZXJfaHAiIHZlcndlbmRldCB3ZXJkZW4uCisgICAgICAgICBBdXNuYWhtZSBoaWVydm9uIGlzdCBkaWUgS25laXBlIGJlaSBkZW4gRWlzdHJvbGxlbiBpbSBXYXJvay4KKyAgICAgICAgIE1pdCBkZW0gUHVidG9vbCAoIi9vYmovdG9vbHMvcHVidG9vbCIpIGthbm4gbWFuIHBydWVmZW4sIG9iIGRpZQorICAgICAgICAgV2VydGUgZGVyIEtuZWlwZSBpbiBPcmRudW5nIGdlaGVuLgorCitSYWV1bWU6ICBFcyBnaWJ0IHZpZWxlIG9ydHNnZWJ1bmRlbmUgSGVpbHVuZ3NzdGVsbGVuIGltIE1HLCB3ZWxjaGUgaW4gZXJzdGVyCisgICAgICAgICBMaW5pZSBkYXp1IGRhIHNpbmQsIGRlbiBTcGllbGVybiAqaW4gZGllc2VtIEdlYmlldCogZWluZSBUYW5rbW9lZy0KKyAgICAgICAgIGxpY2hrZWl0IHp1ciBWZXJmdWVndW5nIHp1IHN0ZWxsZW4gKC0+IERyYWtvbmllbikuIEhpZXJmdWVyIHNvbGx0ZQorICAgICAgICAgbWFuIGRpZSBQcm9wZXJ0eSBQX0xBU1RfWFAgYmVudXR6ZW4sIHdhcyBhYmVyIGFsbGVyZGluZ3Mga2VpbmUKKyAgICAgICAgIFBmbGljaHQgaXN0LCB3ZW5uIG1hbiBtb2VjaHRlLCBkYXNzIGF1Y2ggImdlYmlldHNmcmVtZGUiIFNwaWVsZXIKKyAgICAgICAgIGhpZXIgdGFua2VuIGdlaGVuIGtvZW5uZW4gKC0+IFNTUCkuIERhbm4gd2llZGVydW0gc29sbHRlIG1hbiBhYmVyCisgICAgICAgICBkYXJhdWYgYWNodGVuLCBkYXNzIHNpZSBuaWNodCB6dSBndXQgc2luZCwgdS5VLiBzY2h3ZXIgenUgZXJyZWljaGVuCisgICAgICAgICBzaW5kICgtPiBUJ2Vtb25nKSwgQmxvY2ttb25zdGVyIGRlbiBXZWcgdmVyc3BlcnJlbiAoLT4gU1NQKSBldGMuCisKKyAgICAgICAgIEluIGplZGVtIEZhbGwgYWJlciBNVVNTIGVpbmUgQmVncmVuenVuZyBkZXIgVGFua21vZWdsaWNoa2VpdCBzaWNoZXItCisgICAgICAgICBnZXN0ZWxsdCB3ZXJkZW47IGVudHdlZGVyIGVyZm9sZ3QgZGllIExpbWl0aWVydW5nIGR1cmNoIFJlc2V0IG9kZXIKKyAgICAgICAgIGR1cmNoIFplaXRiZWdyZW56dW5nICgtPiBjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSkuCisKKyAgICAgICAgICJlYXRfZm9vZCIgYnp3LiAiZHJpbmtfc29mdCIgTVVTUyBiZWkgZGVuIFRhbmtlbiBnZXNldHp0IHdlcmRlbiwgZGllCisgICAgICAgICBkZW4gU3BpZWxlciBkYXJhdWYgc2NobGllc3NlbiBsYXNzZW4sIE5haHJ1bmcgYXVmZ2Vub21tZW4genUgaGFiZW4KKyAgICAgICAgICgtPiAiaXNzIGJlZXJlbiIsICJ0cmlua2Ugc2NobGVpbSIsIGV0Yy4pLgorICAgICAgICAgQmVpIGFsbGVuIGFuZGVyZW4gKC0+ICJyaWVjaGUgYmx1bWUiLCBldGMuKSBzb2xsdGVuIFF1YWxpdGFldCB1bmQKKyAgICAgICAgIFF1YW50aXRhZXQgaW0gUmFobWVuIGJsZWliZW4uCisgICAgICAgICBEaWVzZSBvcnRzZ2VidW5kZW5lbiBIZWlsdW5nZW4gZHVlcmZlbiBJbnN0YW50LVRhbmtlbiBzZWluLgorCitUcmFnYmFyZSBIZWlsdW5nOgorLS0tLS0tLS0tLS0tLS0tLQorVHJhZ2JhcmUgSGVpbHVuZyBzb2xsdGUgbmFjaCBtYXggNSBSZXNldHMgdmVyZGVyYmVuLCBkaWUgV2lya3VuZyB2ZXJtaW5kZXJuCitvZGVyIHZlcmxvcmVuIGdlaGVuLiBTaWUgc29sbHRlIG5pY2h0IGJlbGllYmlnIGltIFNwaWVsZXIgb2RlciBhbmRlcnN3bworaG9ydGJhciBzZWluLiBFaW5lIGJlZ3Jlbnp0ZSBBbnphaGwgcHJvIFJlc2V0IGtvbW10IGhpZXJiZWkgYXVjaCBpbW1lciBndXQKKyhndXRlIEJlaXNwaWVsZSBoaWVyZnVlcjogRHJvcHMgdm9uIFR3aW5naSwgSGVpbGJsYWV0dGVyIHZvbiBab29rKS4KKworUmljaHR3ZXJ0ZSBmdWVyIEF1ZmxvZXN1bmcgb2RlciBXaXJrdW5nc21pbmRlcnVuZyB2b24gdHJhZ2JhcmVyIEhlaWx1bmc6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEhlaWx1bmcgICAgICAgICBSZXNldC1aZWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgID4gMjAwICAgIDogICAgIDMwLSA2MCBtaW4KKyAgICAgICAgICAgICAgICAgICAgICAxNTAgLSAyMDAgICAgOiAgICAgNjAtMTIwIG1pbgorICAgICAgICAgICAgICAgICAgICAgIDEwMCAtIDE1MCAgICA6ICAgICA5MC0xODAgbWluCisgICAgICAgICAgICAgICAgICAgICAgIDUwIC0gMTAwICAgIDogICAgMTIwLTI0MCBtaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPCAgNTAgICAgOiAgICAxNTAtMzAwIG1pbgorCitEaWVzZSBSaWNodHdlcnRlIHNpbmQgZ3V0ZSBBbmhhbHRzcHVua3RlLCBrb2VubmVuIGFiZXIgYmVpIEJlZGFyZiBtaXQgZGVtCitFcnptYWdpZXIgZGVyIEhlaWx1bmdzLUJhbGFuY2UgaW5kaXZpZHVlbGwgYWJnZXN0aW1tdCB3ZXJkZW4uCisKKydXaXJrdW5nc21pbmRlcnVuZycgaXN0IGhpZXJiZWkgaW0gU2lubmUgdm9uICpkZXV0bGljaCogZ2VtZWludC4KKworKioqIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAgKioqCisKKyAgIFRyYWdiYXJlIEhlaWx1bmdlbiwgZGllIGltIHdlaXRlc3RlbiBTaW5uZSBhdXMgTGViZW5zbWl0dGVsbiBiZXN0ZWhlbiwKKyAgZHVlcmZlbiBuaWNodCBtZWhyIGluc3RhbnQgc2Vpbiwgc29uZGVybiBNVUVTU0VOICJidWZmZXJfaHAvc3AiIHZlcndlbmRlbiEKKworKioqIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAtIE5FVSAgKioqCisKK0JlaSB0cmFnYmFyZW4gSGVpbHVuZ3Ntb2VnbGljaGtlaXRlbiwgZGllIHdlZGVyIGF1cyBFc3NiYXJlbSwgbm9jaCBhdXMgVHJpbmstCitiYXJlbSBiZXN0ZWh0IChiZWkgZGVuZW4gZXMgYWxzbyBuaWNodCBsb2dpc2NoIHdhZXJlLCAiYnVmZmVyX2hwL3NwIiB6dQorYmVudXR6ZW4pLCBNVVNTICJjaGVja19hbmRfdXBkYXRlX3RpbWVkX2tleSIgdmVyd2VuZGV0IHdlcmRlbiwgZGEgc2llIHNvbnN0IHp1Citrcml0aXNjaCB3ZXJkZW4uIERhbm4gZGFyZiBlcyBuYXR1ZXJsaWNoIGF1Y2ggc293YXMgZ2ViZW4uIEJlaXNwaWVsc3dlaXNlIGthbm4KK21hbiBzb2xjaGUgT2JqZWt0ZSBndXQgYWxzIChNaW5pLSlRdWVzdGJlbG9obnVuZyBpbnRlZ3JpZXJlbi4KKworSGllciBnaWx0OiBKZSBob2VoZXIgZGllIEhlaWx1bmcsIHVtIHNvIGhvZWhlciBkaWUgWmVpdGRhdWVyLCBuYWNoIGRlciBkZXIKK1NwaWVsZXIgZGllc2UgTW9lZ2xpY2hrZWl0IHdpZWRlciBpbiBBbnNwcnVjaCBuZWhtZW4gZGFyZi4KKyhSaWNodHdlcnRlOiBoZWFsX3NlbGYoNTApOiB+IDE4MDAgc2VjLiwgaGVhbF9zZWxmKDE1MCk6IH4gMzYwMCBzZWMuKQorCitBdWNoIGJlaSBkaWVzZW4gT2JqZWt0ZW4gaXN0IGVzIGVpbiBNVVNTLCBkaWUgSGVpbHVuZ3Ntb2VnbGljaGtlaXRlbiBlaW5tYWwKK2Vyc2Nob2VwZmVuIHp1IGxhc3Nlbiwgc2llIGFsc28gZW50d2VkZXIgJ3ZlcmRlcmJlbicgb2RlciBzaWNoIHZlcmFic2NoaWVkZW4KKygtPiBEc2NoaW5uKSB6dSBsYXNzZW4gb2RlciBzaWUgJ3N0aWxsZWdlbicsIGRhIHNpZSBkYW5uIGVpbmZhY2ggZWluZSB6ZWl0bGFuZworUnVoZSBicmF1Y2hlbiwgdW0gc2ljaCBuZXUgJ2F1Znp1bGFkZW4nLgorCitRdWVzdGJlbG9obnVuZ2VuOgorLS0tLS0tLS0tLS0tLS0tLQorRGllc2UgT2JqZWt0ZSBzdGVsbGVuIGVpbmUgQXVzbmFobWUgdW50ZXIgZGVuIHRyYWdiYXJlbiBIZWlsdW5nZW4gZGFyLiBIaWVyCitrYW5uIGF1ZiAiYnVmZmVyX2hwL3NwIiB2ZXJ6aWNodGV0IHdlcmRlbjsgZGFmdWVyIG11ZXNzZW4gYWJlciBhbmRlcmUgUmVnZWxuCitiZWFjaHRldCB3ZXJkZW46IGRhcyBPYmpla3QgZGFyZiBwcm8gUmVzZXQgbnVyIGJlZ3Jlbnp0IGhlaWxlbiBiencuIG5hY2ggZGVyCitBbndlbmR1bmcgc2ljaCBzZWxiZXIgemVyc3RvZXJlbiAoLT4gZ2VsYmVyIFN0ZWluKS4gT2RlciBlcyBtdXNzIHZvcmhlciBlaW5lCitlcmhlYmxpY2hlIE1lbmdlIExQL0tQIGludmVzdGllcnQgd2VyZGVuLCB1bSBkYXMgT2JqZWt0IHp1IG51dHplbgorKC0+IEluZmVybm9ibG9jaykuCisKK0VudHRhbmtlbjoKKy0tLS0tLS0tLQorRGllIE1vZWdsaWNoa2VpdCB6dXIgRW50dGFua3VuZyBNVVNTIGFuIGVpbmVuIGZlc3RlbiBPcnQgZ2VidW5kZW4gc2Vpbi4gU2llCitkYXJmIGFsc28gbmljaHQgZHVyY2ggdHJhZ2JhcmUgT2JqZWt0ZSBoZXJ2b3JnZXJ1ZmVuIHdlcmRlbiBrb2VubmVuLiBFaW4KK0JlaXNwaWVsIGhpZXJmdWVyIHNpbmQgZGllIFRvaWxldHRlbiB2b24gV3VyemVsIGluIFdpbGhlbG1zYnVyZyBvZGVyIGRpZQorRmxlaXNjaHJlc3RlIGluIGRlciBTU1AuIFdlaXRlcmVzIGhpZXJ6dSBzaWVoZSAtPiAibWFuIGVudHRhbmtlbiIuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2lzY2hlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKgorCitKZWRlICghKSBNb2VnbGljaGtlaXQgenVyIEhlaWx1bmcsIGFiZ2VzZWhlbiB2b24gcmVndWxhZXJlbiBLbmVpcGVuLCBtdXNzIGRlbQorenVzdGFlbmRpZ2VuIE1hZ2llciBmdWVyIEhlaWx1bmdzLUJhbGFuY2UgZ2VtZWxkZXQgdW5kIHZvbiBkaWVzZW0gZ2VuZWhtaWd0Cit3ZXJkZW4uIFdlciBkaWVzZW4gUG9zdGVuIG1vbWVudGFuIGlubmVoYXQsIGthbm4gZGVtIE1haWxBbGlhcworImhlaWx1bmdzX2JhbGFuY2UiIGVudG5vbW1lbiB3ZXJkZW4uCisKK1NpZWhlIGF1Y2g6CistLS0tLS0tLS0tCisgICAgIFRhbmtlbjogICAgY29uc3VtZSwgZHJpbmtfYWxjb2hvbCwgZWF0X2Zvb2QsIGRyaW5rX3NvZnQKKyAgICAgSGVpbHVuZzogICBoZWFsX3NlbGYsIHJlc3RvcmVfc3BlbGxfcG9pbnRzLCByZXN0b3JlX2hpdF9wb2ludHMsIAorICAgICAgICAgICAgICAgIGJ1ZmZlcl9ocCwgYnVmZmVyX3NwCisgICAgIFRpbWluZzogICAgY2hlY2tfYW5kX3VwZGF0ZV90aW1lZF9rZXkKKyAgICAgRW50dGFua2VuOiBkZWZ1ZWxfZHJpbmssIGRlZnVlbF9mb29kCisgICAgIFByb3BzOiAgICAgUF9EUklOSywgUF9GT09ELCBQX0FMQ09IT0wsIFBfU1AsIFBfSFAsCisgICAgICAgICAgICAgICAgUF9ERUZVRUxfVElNRV9EUklOSworICAgICBLb256ZXB0ZTogIGVudHRhbmtlbiwgZm9vZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxNy4wOS4yMDEwLCBaZXNzdHJhCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2thbXBmb2JqZWt0ZSBiL2RvYy93aXova2FtcGZvYmpla3RlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZDZlMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2thbXBmb2JqZWt0ZQpAQCAtMCwwICsxLDYwIEBACisgU09OU1RJR0UgS0FNUEZPQkpFS1RFOgorCisgICAgSGllcnp1IHphZWhsZW4gYWxsZSBTYWNoZW4sIGRpZSBpcmdlbmRlaW5lbiBFaW5mbHVzcyBhdWYgZGVuIEthbXBmIG5laG1lbgorICAgIHVuZCB3ZWRlciBgL3N0ZC93ZWFwb24uYycgbm9jaCBgL3N0ZC9hcm1vdXIuYycgc2luZC4gQWxzbyBkaWUgc29nZW5hbm50ZQorICAgIEFydGlsbGVyaWUsIEVpc3N0YWIgdW5kIGFydHZlcndhbmR0ZXMsIFd1cmZzdGVybmUsIFBhcmFzdGVpbmUsIEJ1bWlzLi4uCisgICAgc293aWUgc2FlbXRsaWNoZSB0cmFnYmFyZW4gSGVpbG1vZWdsaWNoa2VpdGVuIHVuZCB1bnRlcnN0dWV0emVuZGUgTlBDLgorCisgICAgUHJpbnppcGllbGwgc2luZCBhbGxlIGRpZXNlIFNhY2hlbiBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisgICAgQXV0by1TZWxic3RmYWhyZXIsIGFsc28gU2FjaGVuLCBkaWUgb2huZSBFaW5ncmlmZiBkZXMgU3BpZWxlcnMgYWdpZXJlbiwKKyAgICBzaW5kIHVuZXJ3dWVuc2NodCB1bmQgc29sbHRlbiB2ZXJtaWVkZW4gd2VyZGVuLiBTb3JyeSBmdWVyIGRpZQorICAgIExhZ2dlcGxhZ3Rlbi4uLgorCisgICAgS2FtcGZvYmpla3RlIHNvbGx0ZW4gUF9BVFRBQ0tfQlVTWSBzZXR6ZW4gdW5kIGF1Y2ggdm9yIGRlciBBbndlbmR1bmcKKyAgICBhYmZyYWdlbiwgZGFtaXQgc2llIG5pY2h0IHVuYmVncmVuenQgaGludGVyZWluYW5kZXIgZ2VudXR6dCB3ZXJkZW4KKyAgICBrb2VubmVuLiBNYWdpc2NoZSBTYWNoZW4gc29sbHRlbiBlbnR3ZWRlciBhdWZnZWxhZGVuIHdlcmRlbiBtdWVzc2VuIG9kZXIKKyAgICBpaHJlIG1hZ2lzY2hlIEVuZXJnaWUgdmVybGllcmVuLCBkYW1pdCBzaWUgbmljaHQgdW5lbmRsaWNoIGhhbHRiYXIgc2luZC4KKyAgICBBdXNzZXJkZW0gaGF0IE1hZ2llIG5vcm1hbGVyd2Vpc2UgYXVjaCB1bmVyd3VlbnNjaHRlIE5lYmVud2lya3VuZ2VuLiBEaWUKKyAgICBTcGllbGVyIHNvbGxlbiBkaWUgbW9lZ2xpY2hlbiBWb3J0ZWlsZSBnZWdlbiBOYWNodGVpbGUgb2RlciBOZWJlbndpcmt1bmdlbgorICAgIGRlcyBHZWdlbnN0YW5kcyBhYndhZWdlbi4gQXVjaCBiZWkgZGllc2VuIE9iamVrdGVuICptdXNzKiBQX0lORk8gZ2VzZXR6dAorICAgIHdlcmRlbiwgdW0gZWluZSBCZWdydWVuZHVuZyBmdWVyIGRpZSBiZXNvbmRlcmUgV2lya3VuZyB1bmQgei5CLiBlaW5lbgorICAgIEhpbndlaXMgYXVmIGRpZSBCZW51dHp1bmcgenUgbGllZmVybi4KKyAgICBTaWUgc29sbHRlbiBrZWluZXNmYWxscyBrYWV1ZmxpY2ggZXJ3b3JiZW4gd2VyZGVuIGtvZW5uZW4uCisKKyAgICBUcmFnYmFyZSBIZWlsc3RlbGxlbiBzb2xsdGVuIGFldXNzZXJzdCBzcGFlcmxpY2ggdmVyd2VuZGV0IHdlcmRlbi4gSGFuZGVsdAorICAgIGVzIHNpY2ggdW0gaXJnZW5kZWluZSBGb3JtIHZvbiBGcmVzc2FsaWVuIChCcm90LCBQZmlyc2ljaCwKKyAgICBTY2huZWxsaGFlcnRlci4uLikgc28gbXVzcyBQX0ZPT0Qgb2RlciBQX0RSSU5LIHVuZCBldnRsLiBQX0FMQ09IT0wgZ2VzZXR6dAorICAgIHdlcmRlbi4gQW5zb25zdGVuIHNvbGx0ZW4gc29sY2hlIERpbmdlIHdlbmlnc3RlbnMgaXJnZW5kd2VsY2hlCisgICAgQXVzd2lya3VuZ2VuIGF1ZiBkZW4gU3BpZWxlciBoYWJlbiBhdXNzZXIgZGVyIEhlaWx1bmcuIEVpbiBzb2dlbmFubnRlcworICAgICJSZXN0cmlzaWtvIiB3YWVyZSBuaWNodCB2ZXJrZWhydC4uLgorCisgICAgU2llIHNvbGx0ZW4gbmllbWFscyB1bmJlZ3Jlbnp0IGVyd29yYmVuIHdlcmRlbiBrb2VubmVuLCBzY2hvbiBnYXIgbmljaHQKKyAgICBrYWV1ZmxpY2ghIEF1c3NlcmRlbSBpc3QgZWluZSBnZXdpc3NlIFZlcmZhbGxzemVpdCBzZWhyIHNpbm52b2xsIHVuZAorICAgIGVyaG9laHQgZGllIENoYW5jZW4gYXVmIEdlbmVobWlndW5nLiBSaWNodHdlcnRlOiBlcmhvZWh0ZXMgUmlzaWtvIG5hY2ggMS4KKyAgICBSZXNldCwgdW5icmF1Y2hiYXIgbmFjaCAyLTMgUmVzZXRzLgorCisgICAgT2JqZWt0ZSwgZGllIEF1c2t1bmZ0IHVlYmVyIGVpbi0gdW5kL29kZXIgYXVzZ2VoZW5kZSBTY2hhZWRlbiBnZWJlbiwgCisgICAgc2luZCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuIFNvbGNoZSBPYmpla3RlIHNvbGx0ZW4gbmFjaCBNb2VnbGljaGtlaXQKKyAgICBlaW5lIFdhZmZlIG9kZXIgS2xlaWR1bmdzc3R1ZWNrIC0gZGllcyBqZWRvY2ggbmljaHQgQVRfTUlTQyAtIHNlaW4uCisgICAgRGFzcyBzb2xjaGUgT2JqZWt0ZSBhdWNoIHVlYmVyIEx1ZWNrZW4gaW4gZGVyIEFuZ2FiZSBkZXIgU2NoYWVkZW4gdW5kCisgICAgTmFjaHRlaWxlIHZlcmZ1ZWdlbiBzb2xsdGVuLCBpc3QgZWlnZW50bGljaCBrbGFyLiAKKyAgICBTb2xjaGUgTmFjaHRlaWxlIGxpZXNzZW4gc2ljaCB1ZWJlciBlaW5lIE1pbmRlc3QtU2NoYWRlbnNob2VoZSBvZGVyCisgICAgcmFuZG9tIHJlYWxpc2llcmVuLiBJbmZvcm1hdGlvbmVuIHVlYmVyIG1laHJlcmUgU2NoYWRlbnN0eXBlbiBkdXJjaCAKKyAgICBlaW4gdW5kIGRhcyBzZWxiZSBPYmpla3Qgc2luZCBuaWNodCBlcnd1ZW5zY2h0LgorCisgICAgRWJlbmZhbGxzIGdlbmVobWlndW5nc3BmbGljaHRpZyBzaW5kIGFsbGUgT2JqZWt0ZSwgZGllIGluIGlyZ2VuZCBlaW5lcgorICAgIFdlaXNlIEVpbmZsdXNzIGF1ZiBzcGV6aWZpc2NoZSBHaWxkZW5mYWVoaWdrZWl0ZW4gb2RlciBCZXNvbmRlcmhlaXRlbgorICAgIG5laG1lbi4gSGllcnp1IHNvbGx0ZSBuZWJlbiBkZXIgQmFsYW5jZSBhdWNoIG5vY2ggZGVyIEdpbGRlbm1hZ2llcgorICAgIGJlZnJhZ3Qgd2VyZGVuLiAKKyAgICAKKyAgICBIaW5zaWNodGxpY2ggS29tcG9uZW50ZW4gZGVyIFphdWJlcmVyIGlzdCBkZXIgR2lsZGVuY2hlZiBkZXIKKyAgICBBbnNwcmVjaHBhcnRuZXIuCisgICAgCisgU0lFSEUgQVVDSAorCisgICAgIGJhbGFuY2UsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywgbnBjcywgb2JqZWN0cywKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIHJlc2lzdGVuemVuLCBncmVuendlcnRlLCBhcnRpbGxlcmllCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExFVFpURSBBZU5ERVJVTkc6CisgICAgU28sIDI2LjAxLjIwMDMsIDE4OjUwOjAwIHZvbiBIdW1uaQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9rYXR6ZW5rcmllZ2VyLnRlc3RzcGllbGVyIGIvZG9jL3dpei9rYXR6ZW5rcmllZ2VyLnRlc3RzcGllbGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYzJhYzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2thdHplbmtyaWVnZXIudGVzdHNwaWVsZXIKQEAgLTAsMCArMSwzNyBAQAorTWFnaWVyLU1hbnBhZ2UKKworR2lsZGVudGVzdGllICJLYXR6ZW5rcmllZ2VyIi4KKworCitFcyBnaWJ0IGluIGRlciBLYXR6ZW5rcmllZ2VyZ2lsZGUgZWluZSBGdW5rdGlvbiwgbWl0IGRlciBtYW4gZWluZW4KK1Rlc3RzcGllbGVyIGVyc2NoYWZmZW4ga2Fubiwgd2VsY2hlciBkZXIgS2F0emVua3JpZWdlcmdpbGRlIGFuZ2Vob2VydC4KK0RpZSBGdW5rdGlvbiBoZWlzc3QgIm1ha2VfdGVzdHBsYXllciIgdW5kIGVyd2FydGV0IGFscyBlaW56aWdlbiBQYXJhbWV0ZXIKK2VpbiBTcGllbGVyLU9iamVrdC4KKworCisKK0RpZSBGdW5rdGlvbiB2ZXJoYWVsdCBzaWNoIHdpZSBmb2xndC4KKworRGVyIFNwaWVsZXIgbXVzcyBlaW4gVGVzdHNwaWVsZXIgc2Vpbi4KK0RlciBTcGllbGVyIHNvbGx0ZSBpbiBkaWUgR2lsZGUgZWludHJldGVuIGtvZW5uZW4uCitEZXIgU3BpZWxlciBsZXJudCBhbGxlIFNwZWxscyB1bmQgU2tpbGxzIGRlciBHaWxkZSwgZGllIGVyIGF1ZiBzZWluZW0KK2RlcnplaXRpZ2VuIFNwaWVsZXJsZXZlbCBsZXJuZW4ga2Fubi4KK0RpZSBTcGVsbHMgaGFiZW4gamUgZGVuIGhvZWNoc3Rtb2VnbGljaGVuIFNraWxsd2VydCwgZGVuIGRlciBTcGllbGVyIGF1Zgorc2VpbmVtIExldmVsIGVycmVpY2hlbiBrYW5uLCBlcyBzZWkgZGVubiwgZXIga2FubnRlIGRlbiBTcGVsbCB6dXZvciBzY2hvbi4KK0Rhbm4gYmxlaWJ0IGRlciBTcGVsbCB1bnZlcmFlbmRlcnQuCisKKworCitVbSBlaW5lbiBUZXN0c3BpZWxlciB6dSBlcnNjaGFmZmVuLCBnZWh0IG1hbiB3aWUgZm9sZ3Qgdm9yLgorCitNYW4gbmVobWUgZWluZW4gKGVpZ2VuZW4hKSBUZXN0c3BpZWxlciwgei5CLiAiYmFtYnMiLgorTWFuIHNldHplIGlobSBkYXMgZ2V3dWVuc2NodGUgU3BpZWxlcmxldmVsLCB6LkIuIDExCisgIHhjYWxsIGJhbWJzLT5TZXRQcm9wKFBfTEVWRUwsIDExKTsKK01hbiBnZWhlIGluIGRlbiBHaWxkZW5yYXVtIGRlciBLYXR6ZW5rcmllZ2VyLgorICBnb3RvIC9naWxkZW4va2F0emVua3JpZWdlcgorTWFuIHJ1ZmUgZGllIEZ1bmt0aW9uIGF1ZiwgZGllIGVpbmVuIEthdHplbmtyaWVnZXIgYXVzIGRlbSBUZXN0c3BpZWxlciBtYWNodC4KKyAgeGNhbGwgJGgtPm1ha2VfdGVzdHBsYXllcihmaW5kX3BsYXllcigiYmFtYnMiKSk7CitEZXIgVGVzdHNwaWVsZXIgc29sbHRlIG51biBLYXR6ZW5rcmllZ2VyIHNlaW4uCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorTGV0enRlIEFlbmRlcnVuZzogVHVlIEphbiAgNyAyMzowMzoxNiAyMDAzIGR1cmNoIEJhbWJpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9rbmV0ZSBiL2RvYy93aXova25ldGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRkMWYzZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXova25ldGUKQEAgLTAsMCArMSw4MSBAQAorTkFNRToKKwkJKioqIEtORVRFICoqKgorCitCRVNDSFJFSUJVTkc6CisJRGllIEtuZXRlIGlzdCBlaW4gaW4gTFBDIGdlc2NocmllYmVuZXIgTGlzcC1JbnRlcnByZXRlci4gRGllc2VyIGhhdAorCWRpZSBiZXNvbmRlcmUgRWlnZW5zY2hhZnQsIGRpZSBMaXNwLVF1ZWxsZW4gZGlyZWt0IGluIGRlbiB2b20gCisJQW15bGFhciBHYW1lRHJpdmVyIGFuZ2Vib3RlbmVuIGNsb3N1cmVzIHp1IHVlYmVyc2V0emVuLiBEYWR1cmNoIGlzdAorCW1pdCBkZXIgS25ldGUgYWxsZXMgZGFzIG1vZWdsaWNoLCB3YXMgYXVjaCBtaXQgTFBDIG1vZWdsaWNoIGlzdC4KKwlFcyBpc3QgZWluIGdlbmVyaXNjaGVzLCBmcmVpIHByb2dyYW1taWVyYmFyZXMgSGlsZnNtaXR0ZWwuCisKKwlEaWUgS25ldGUgYmVmaW5kZXQgc2ljaCB1bnRlcjogIi9vYmovdG9vbHMvbGlzcCIKKworRlVOS1RJT05TQkVTQ0hSRUlCVU5HOgorCURpZSBLbmV0ZSBrYW5uIGltIFByaW56aXAgZmFzdCBhbGxlcywgd2FzIGVpbiBlaW5mYWNoZXIgTGlzcC0KKwlJbnRlcnByZXRlciBrYW5uLiBBdXNuYWhtZW4gc2luZCBUdXBlbCAoQnNwOiAoMSAuIDIpKSwgd2VsY2hlIG5pY2h0CisJaW1wbGVtZW50aWVydCBzaW5kLiBEaWUgR3J1bmRsZWdlbmRlbiBGdW5rdGlvbmVuLCB3aWUgZGVmaW5lLCBzZXRxLAorCWNvbnMsIGNkciwgY2FyIGV0YyB3ZXJkZW4gYmVpbSBMYWRlbiBkZXIgS25ldGUgYW5nZXplaWd0LiBKZSBuYWNoCisJWmVpdCwgd2VyZGVuIGV2ZW50dWVsbGUgYXVjaCB3ZWl0ZXJlIFN0YW5kYXJkZnVua3Rpb25lbiBoaW56dS0KKwlrb21tZW4sIHVtIGRpZSBLbmV0ZSBtb2VnbGljaHN0IGNvbW1vbi1saXNwIGtvbXBhdGliZWwgenUgbWFjaGVuLgorCitCRU5VVFpVTkc6CisJWnUgYWxsZXJlcnN0IHNvbGx0ZSBtYW4gd2lzc2VuLCBkYXNzIGRpZXMgaGllciBrZWluZSBFaW5mdWVocnVuZyBpbgorCUxpc3AgaXN0IG9kZXIgc2VpbiBzb2xsISBEaWUgd2ljaHRpZ3N0ZW4gTWVya21hbCBkZXIgS25ldGUgd2VyZGVuCisJYXVmZ2VmdWVocnQgYW4gZWluaWdlbiBrbGVpbmVuIEJlaXNwaWVsZW4uIFdlciBMaXNwIGtlbm5lbmxlcm5lbgorCW1vZWNodGUga2FubiBkaWVzIG1pdCBkZW4gaGFuZGVsc3VlYmxpY2hlbiBCdWVjaGVybiB0dW4uCisKKwlXZXIgZGVubm9jaCBiYXN0ZWxuIG1vZWNodGU6IExpc3AgaXN0IGVpbmUgU3ByYWNoZSBpbiBQcmVmaXhub3RhdGlvbiwKKwlkLmguIGRlciBGdW5rdGlvbnNuYW1lIHN0ZWh0IGltbWVyIGFscyBlcnN0ZXMgdW5kIGRhbm4ga29tbWVuIGRpZQorCUFyZ3VtZW50ZS4gRWluIEF1c2RydWNrIGlzdCBtaXQgZGVuIGlobiB1bWdlYmVuZGVuIEtsYW1tZXJuIGtvbXBsZXR0LgorCSAgQmVpc3BpZWw6ICgrIDEgMSkgOzs7IGVycmVjaG5ldCBkaWUgU3VtbWUgYXVzIDEgdW5kIDEKKwlTb2xjaGUgS2xhbW1lcmF1c2RydWVja2Uga29lbm5lbiBiZWxpZWJpZyBnZXNjaGFjaHRlbHQgd2VyZGVuLgorCSAgQmVpc3BpZWw6ICgrIDEgKCsgKCsgMSAxKSAxKSkKKworCUVzIHN0ZWhlbiBhbGxlIGVmdW5zLCBzb3dpZSBlaW5pZ2UgbGZ1bnMgenVyIFZlcmZ1ZWd1bmchIFp1IGRlbiBlZnVucworCWdlaG9lcmVuIGF1Y2ggKywtLCosLywlLCEsWyxbPCxbPC4uIGV0YywgYWxzbyBhbGxlIE9wZXJhdG9yZW4gdm9uIExQQy4KKworCURpZSBLbmV0ZSBoYXQgendlaSBNb2RpOgorCQlhKSBMYWRlbiB2b24gTGlzcCBhdXMgZWluZXIgRGF0ZWkKKwkJYikgVmVyYXJiZWl0ZW4gdm9uIEVpbmdhYmVuIGF1cyBkZXIgS29tbWFuZG96ZWlsZQorCisJWnUgYSkKKwkgIE1pdCBkZXIgRnVua3Rpb24gImxvYWQiIGtvZW5uZW4gRGF0ZWllbiBlaW5nZWxlc2VuIHVuZCBpbnRlcnByZXRpZXJ0CisJICB3ZXJkZW4uIERpZSBGdW5rdGlvbiBoYXQgbnVyIGVpbiBBcmd1bWVudCwgdW5kIGRhcyBpc3QgZGVyIERhdGVpbmFtZS4KKworCSAgQmVpc3BpZWw6IChsb2FkICIvcGxheWVycy9oYXRlL2xpc3AubCIpCisJCisJWnUgYikKKwkgIFdlbm4gZGllIEtuZXRlIGdlY2xvbmVkIHd1cmRlLCBrb2VubmVuIGplZGVyemVpdCBMaXNwYXVzZHJ1ZWNrZQorCSAgZWluZ2VnZWJlbiB3ZXJkZW4sIHdlbGNoZSBkYW5uIGludGVycHJldGllcnQgd2VyZGVuLiBEYWJlaSBzb2xsdGUKKwkgIGJlYWNodGV0IHdlcmRlbiwgZGFzcyBkaWUgYWV1c3NlcnN0ZSBLbGFtbWVyIG5pY2h0IG5vdHdlbmRpZyBpc3QhCisKKwkgIEJlaXNwaWVsOiAoKyAxICgrIDEgMSkpIGtvZW5udGUgbWFuIGF1Y2ggc2NocmVpYmVuIGFsczoKKwkgICAgICAgICAgICArIDEgKCsgMSAxKQorCisJICBEaWVzIGlzdCB2b3IgYWxsZW0gZGFubiBpbnRlcmVzc2FudCwgd2VubiBtYW4gZGllIE1vZWdsaWNoa2VpdGVuCisJICBkZXIgS25ldGUgYWxzIGFsaWFzLVdlcmt6ZXVnIGluIGJldHJhY2h0IHppZWh0LiBTb21pdCBpc3QgZXMKKwkgIG1vZWdsaWNoLCBlaW5lIEZ1bmt0aW9uIHp1IHNjaHJlaWJlbiB1bmQgZGllc2UgZGFubiB3aWUgZWluIGFsaWFzCisJICB6dSBiZW51dHplbi4KKworCSAgQmVpc3BpZWw6IChkZWZ1biB3aG8gKCkgKHVzZXJzKSkgOzs7IGdpYnQgZGFzIHVzZXJzIGFycmF5IGF1cworCSAgICAgICAgICAgICBKZXR6dCBtdXNzIG51ciBub2NoIHdobyBlaW5nZWdlYmVuIHdlcmRlbiB1bmQgZGFzCisJCSAgICAgYXJyYXkgd2lyZCBhdXNnZWdlYmVuLgorCisJICBEYSBMaXNwIHdlc2VudGxpY2gga29tcGxleGVyZSBBdXNkcnVlY2tlIGVybW9lZ2xpY2h0LCBhbHMgZGVyCisJICBub3JtYWxlIGFsaWFzLUludGVycHJldGVyLCBsaWVnZW4gZGllIFZvcnRlaWxlIGF1ZiBkZXIgSGFuZC4KKworS09ORklHVVJBVElPTjoKKwlEaWUgS25ldGUgbGFlc3N0IHNpY2ggZnVlciBqZWRlbiBOdXR6ZXIga29uZmlndXJpZXJlbiwgaW5kZW0gc2llIGVpbmUKKwlEYXRlaSAiL3BsYXllcnMvPG5hbWU+L2xpc3AubCIgYXVzIGRlc3NlbiBIZWltYXR2ZXJ6ZWljaG5pcyBsYWVkdC4KKworCUVpbiBCZWlzcGllbCwgd2FzIG1hbiBkYW1pdCBtYWNoZW4ga2FubiBiZWZpbmRldCBzaWNoIHVudGVyOgorCSAgIi9wbGF5ZXJzL2hhdGUvbGlzcC5sIgorCURpZSBNVUQgU3BlemlmaXNjaGVuIFRlaWxlIHVuZCBBYmZyYWdlbiBrb2VubmVuIGlnbm9lcmllcnQgd2VyZGVuLgorCitCVUdTOgorCUVzIGdpYnQgbW9tZW50YW4gbm9jaCBlaW4gUHJvYmxlbSwgd2VubiBhdWYgZGVyIEtvbW1hbmRvemVpbGUKKwlLbGFtbWVybiBmZWhsZW4uIERhbm4ga29tbXQgZWluZSBNZWxkdW5nOiAiKk1pc3NpbmcgMiApIgorCUluIGRpZXNlbSBGYWxsIGVpbmZhY2ggendlaW1hbCBoaW50ZXJlaW5hbmRlciApIGF1ZiBqZXdlaWxzIGVpbmVyCisJZWluemVsbmVuIFplaWxlIGVpbmdlYmVuISBEaWVzZXMgUHJvYmxlbSB0cml0dCB2b3IgYWxsZW0gZGFubiBhdWYsCisJd2VubiBtYW4genVtIEJlaXNwaWVsIGVpbiA6KCBlaW5naWJ0LgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6L2xhZGVuIGIvZG9jL3dpei9sYWRlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGUyZWEzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9sYWRlbgpAQCAtMCwwICsxLDE1IEBACitMQUVERU4gSU0gTU9SR0VOR1JBVUVNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xhZWRlbiBpbSBNb3JnZW5HcmF1ZW4gc29sbHRlbiBncnVuZHNhZXR6bGljaCAvc3RkL3Nob3AgZXJiZW4uCisKK0RlcyBXZWl0ZXJlbiBiZW5vZXRpZ3QgbWFuIGVpbmVuIFN0b3JhZ2VSb29tLCBhbHNvIGVpbmVuIFJhdW0sIGluIGRlbSBkZXIKK0xhZGVuIHNlaW5lIEdlZ2Vuc3RhZW5kZSB2ZXJ3YWx0ZXQuIERpZXNlciB3aXJkIG1pdCAiU2V0U3RvcmFnZVJvb20iCitnZXNldHp0LiBEaWUgSGlsZmVzZWl0ZSB6dSBkaWVzZW0gQmVmZWhsIGhhdCBhdWNoIGVpbiBCZWlzcGllbC4KKworT2JqZWt0ZSwgZGllIGRlciBMYWRlbiBpbW1lciB2ZXJrYXVmZW4gc29sbCwga2FubiBtYW4gbWl0ICJBZGRGaXhlZE9iamVjdCIKK3NldHplbi4KKworU2llaGUgYXVjaDogU2V0U3RvcmFnZVJvb20sIEFkZEZpeGVkT2JqZWN0LCBRdWVyeVNlbGxWYWx1ZQorCitMZXR6dGUgQWVuZGVydW5nOiBIdW1uaSwgMjAxNS0wNi0xNwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9sZWl0ZmFkZW4gYi9kb2Mvd2l6L2xlaXRmYWRlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDgwNmMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9sZWl0ZmFkZW4KQEAgLTAsMCArMSw0ODcgQEAKKworCitBQ0hUVU5HOiBESUVTRVIgTEVJVEZBREVOIElTVCBGVVJDSFRCQVIgVkVSQUxURVQhIDotKAorCisKK0RFUiBMRUlURkFERU4gJ1dJRSBTQ0hMSUVTU0UgSUNIIEVSRk9MR1JFSUNIIE1FSU4gR0VCSUVUIEFOJy4KKyhpbiBzaWViZW4gU2Nocml0dGVuIHp1bSBFcmZvbGcsIHZvbiBUc3VuYW1pIHVuZCBGZXVlcndlaHIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RpZXNlciBMZWl0ZmFkZW4gaXN0IGFic29sdXQgdW52ZXJiaW5kbGljaCB1bmQga2VpbiBSZWdsZW1lbnQuIERpZSAKK1JlaWhlbmZvbGdlIG11c3MgbmljaHQgZWluZ2VoYWx0ZW4gd2VyZGVuLCB1bmQgYXVjaCBkaWUgQW5tZXJrdW5nZW4gCit6dSBkZW4gZWluemVsbmVuIFB1bmt0ZW4gc2luZCBuaWNodCB6d2luZ2VuZCB6dSBiZWZvbGdlbi4KKworRnVlciBTY2huZWxsbGVzZXI6CisKKzEpIFJhZXVtZS9PYmpla3RlL05QQ3MgcHJvZ2dlbgorMikgQWxsZXMgVGVzdGVuIHVuZCBNYWlsIGFuIGRpZSBSZWdpb25zbWFnaWVyIChSTSkgc2NoaWNrZW4uCiszKSBSTXMgcHJ1ZWZlbiBDb2RlIHVuZCB3ZWlzZW4gYXVmIG1vZWdsaWNoZSBQcm9ibGVtZSBoaW4uCis0KSBBbnRyYWcgQmFsYW5jZSB2ZXJmYXNzZW4gKCdnb3RvIC9wbGF5ZXJzL3BhcmFjZWxzdXMvb2ZmaWNlJykuCis1KSBGb3JzY2hlcnB1bmt0ZSBiZWFudHJhZ2VuIChoaWxmZSBlcnptYWdpZXIpLgorNikgTWFpbCBhbiBSTXMsIGRhc3MgbnVuIGFsbGVzIGkuTy4gaXN0LgorNykgUk1zIHNjaGxpZXNzZW4gR2ViaWV0IGFuLgorCitOdW4gZXR3YXMgYXVzZnVlaHJsaWNoZXIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1AgSCBBIFMgRSAxCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEdSBiaXN0IG51biBhbHNvIE1hZ2llciwgdm9sbGVyIElkZWVuIHVuZCBUYXRlbmRyYW5nLiBCZXZvciBEdSB3aWxkIGRyYXVmbG9zCitwcm9ncmFtbWllcnN0LCBlaW4gcGFhciBUaXBzLCB1bSBEaXIgdW5kIGRlbiB6dXN0YWVuZGlnZW4gUk1zIGRhcyBMZWJlbiB6dSAKK2VybGVpY2h0ZXJuOgorCitGZXJ0aWdlIERpciBlaW5lIEFTQ0lJLUthcnRlIGFuLCB1bmQgc2NocmVpYmUgZWluZW4ga3VyemVuIFRleHQsIGRlciBEZWluIAorbmV1ZXMgR2ViaWV0IGJlc2NocmVpYnQuIEZyYWdlIHNjaG9uIG1hbCBEZWluZW4gUk0sIHdvIHVuZ2VmYWVociBkaWVzZXMKK25ldWUgR2ViaWV0IGFuZ2VzY2hsb3NzZW4gd2VyZGVuIGtvZW5udGUuIFNvIGthbm5zdCBEdSBEaXIgZWluIHBhYXIgR2VkYW5rZW4KK21hY2hlbiwgd2llIGRpZSBBbnNjaGx1c3NyYWV1bWUgYXVzc2NoYXVlbiBrb2VubnRlbi4KKworRXJzdGVsbGUgc2lubnZvbGxlIFVudGVydmVyemVpY2huaXNlOiBlcyBoYXQgc2ljaCBmb2xnZW5kZXMgYmV3YWVocnQ6CitFaW4gSGF1cHR2ZXJ6ZWljaG5pcyBtaXQgZGVtIE5hbWVuIGRlcyBHZWJpZXRlcyAoa3Vyeiwgd2VubnMgZ2VodCkuIERvcnQKK2tvbW1lbiBkYW5uIGRpZSBVbnRlcnZlcnplaWNobmlzZSByZWluOiB6LkIuICcrL2RvYyArL21vbiArL29iaiArL3Jvb21zJy4gCitJbiBkYXMgJysvZG9jJyBrb21tZW4gZGFubiBEZWluZSBLYXJ0ZW4gdW5kIFRleHRlLiBGYWxscyBEdSBtaXQgCisnTm90aWZ5UGxheWVyRGVhdGgoKScgRGVpbmUgS2VyYmVuIGxvZ2dlbiB3aWxsc3QsIG9kZXIgYW5kZXJlIHdpY2h0aWdlIAorU2FjaGVuIGxvZ2dlbiBtb2VjaHRlc3QsIGRhbm4gc2NocmVpYmUgZGllc2UgRmlsZXMgaW4gZGFzICcvbG9nLzxkZWlubmFtZT4vJyAKK1ZlcnplaWNobmlzLiAKK0luIGRhcyAnKy9tb24nIFZlcnplaWNobmlzIGtvbW1lbiBhbGxlIE5QQ3MgdXN3LgorCitXZW5uIER1IGVpbiBUZXh0ZmlsZSBhdWZydWZlbiB3aWxsc3QsIGRhc3MgZGVuIEluaGFsdCBkZXIgVW50ZXJ2ZXJ6ZWljaG5pc2UKK2Jlc2NocmVpYnQsIHNvIGxlZ2UgZWluZmFjaCBlaW5lICcucmVhZG1lJyBEYXRlaSBpbSBlbnRzcHJlY2hlbmRlbiAKK1ZlcnplaWNobmlzIGFuLiBEaWVzZXMgRmlsZSB3aXJkIGJlaSBqZWRlbSAnY2QnIGF1ZmdlcnVmZW4uCisKK0Jldm9yIER1IGpldHp0IGxvc3NjaGxhZWdzdCwgdWViZXJsZWdlIERpciBlaW4gRGVmaW5lLUZpbGUsIHdvcmluIER1IGRpZQorZ2FuemVuIFBmYWRlIGRlZmluaWVyc3QuIERlbm4gd2VubiBEdSB6dWVyc3QgYWxsZXMgaW4gRGVpbmVtIFBsYXllci0KK1ZlcnplaWNobmlzIHByb2dnc3QsIHVuZCB2b3IgQW5zY2hsdXNzIHdpcmQgZGFzIEdlYmlldCBpbiBkYXMgUmVnaW9ucy0KK3ZlcnplaWNobmlzIGdlbW92ZWQsIHdpbGwgbmllbWFuZCBkaWUgZ2FuemVuIFBmYWRuYW1lbiBhYmFlbmRlcm4uCitFaW4gQmVpc3BpZWw6IGluIERlaW4gJ2dlYmlldC5oJyAoZ2liIGlobSBlaW5lbiBwcmFrdGlzY2hlbiBOYW1lbiBkZXIgenUgCitEZWluZW0gR2ViaWV0IHBhc3N0OiBlaXNtaW5lLmgsIGhvZWhsZS5oIG9kZXIga2VsbGVyLmggdXN3KSBrYWVtZSBzb3dhcyAKK2luIGRlciBBcnQ6CisKKyNkZWZpbmUgRUlTTUlORSh4KSAoIi9kL3BvbGFyL3RzdW5hbWkvZWlzbWluZS8iK3gpCisjZGVmaW5lIFJPT00oeCkgKEVJU01JTkUoInJvb21zLyIreCkpCisjZGVmaW5lIE1PTih4KSAoRUlTTUlORSgibW9uLyIreCkpCisjZGVmaW5lIE9CSih4KSAoRUlTTUlORSgib2JqLyIreCkpCisKK0RlaW4gUmF1bSBpbmNsdWRlZCBkYW5uIGRhcyBGaWxlOiAjaW5jbHVkZSAiLi4vZ2ViaWV0LmgiCitEZWluIEF1c2dhbmcgaW4gZWluZW4gYW5kZXJlbiBSYXVtIG1hY2hzdCBEdSBkYW5uIGZvbGdlbmRlcm1hc3NlbjoKK0FkZEV4aXQoIm5vcmRlbiIsIFJPT00oInJhdW0wMiIpKTsKKworRWluIE5QQyB3dWVyZGUgc29taXQgZm9sZ2VuZGVybWFzc2VuIGluIGRlbiBSYXVtIGdlc3RlbGx0OgorQWRkSXRlbShNT04oImVpc2VsZiIpLCBSRUZSRVNIX0RFU1RSVUNUKTsKKworV2VubiBzcGFldGVyIGF1cyBpcmdlbmQgZWluZW0gR3J1bmQgRGVpbiBHZWJpZXQgdmVyc2Nob2JlbiB3ZXJkZW4gbXVzcywgZGFubgora2FubiBkZXIgUk0gZWluZmFjaCBkaWUgZXJzdGUgWmVpbGUgaW4gJ2dlYmlldC5oJyBhYmFlbmRlcm4uIERhcyBzcGFydCBaZWl0Cit1bmQgTmVydmVuLgorCitXZWl0ZXIgYmlldGV0IGRhcyBEZWZpbmUtRmlsZSBkaWUgTW9lZ2xpY2hrZWl0LCBsYWVuZ2VyZSBCZWZlaGxlIHp1Cit2ZXJrdWVyemVuLiBFaW4gQmVpc3BpZWw6IER1IG1vZWNodGVzdCBOYW1lbiBkZXMgU3BpZWxlcnMgKGdyb3NzIGdlc2NocmllYmVuKQorYXVzZ2ViZW4uIERlciBCZWZlaGwgZGF6dSB3YWVyZTogdGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpCitEYXMgaXN0IHppZW1saWNoIGxhbmcuIERlZmluaWVyZSBpbiBEZWluZW0gRGVmaW5lLUZpbGUgZG9jaCBlaW5mYWNoOgorI2RlZmluZSBUUE4gdGhpc19wbGF5ZXIoKS0+TmFtZShXRVIpCit1bmQgc2Nob24gd2lyZCBEZWluIENvZGUgZXR3YXMgdWViZXJzaWNodGxpY2hlci4gRGllIEFud2VuZHVuZyB3YWVyZSB6LkIuCitzYXkoVFBOKyIgcG9wZWx0IGluIGRlciBOYXNlLlxuIik7CisKK1dlbm4gRHUgYXV0b21hdGlzY2hlIFplaWxlbnVtYnJ1ZWNoZSBtb2VjaHRlc3QsIGRhbm4gc2NocmVpYmUgZm9sZ2VuZGVzCitpbiBEZWluIERlZmluZSBGaWxlOgorI2RlZmluZSBCUyh4KSBicmVha19zdHJpbmcoeCwgNzggLCAiIiwgQlNfTEVBVkVfTVlfTEZTKQorQlNfTEVBVkVfTVlfTEZTIGJld2lya3QsIGRhc3MgRHUgaW1tZXIgbm9jaCBzZWxic3QgWmVpbGVudW1icnVlY2hlIGVpbmJhdWVuCitrYW5uc3QgbWl0IFxuLiBVbmQgc28gd2lyZCBCUyBkYW5uIGJlbnV0enQ6CitBZGREZXRhaWwoICh7IndhbmQiLCJ3YWVuZGUifSksQlMoCisgICJEaWUgV2FlbmRlIGJlc3RlaGVuIHdpZSBhbGxlcyBoaWVyIGF1cyBwdXJlbSBTYXBoaXIuIEluIGRpZSBub2VyZGxpY2hlICIrCisgICJXYW5kIHd1cmRlIGVpbiBzY2hyZWNrbGljaCBnZXphY2t0ZXMgdW5kIHNjaGFyZmthbnRpZ2VzIExvY2ggZ2VzcHJlbmd0LiIpKTsKKworVW0gZGllcyB6dSBiZW51dHplbiBtdXNzdCBEdSBhbGxlcmRpbmdzIG5vY2ggI2luY2x1ZGUgPGJyZWFrX3N0cmluZy5oPiBpbiBkYXMgCitIZWFkZXJmaWxlIHNldHplbiAodm9yIGRpZSAjZGVmaW5lIEJTKHgpLi4uKS1aZWlsZSksIHNvbnN0IGtlbm50IGRlciAKK1ByZWNvbXBpbGVyIGRlbiBBdXNkcnVjayBCU19MRUFWRV9NWV9MRlMgbmljaHQuCisKK0R1IHdpcnN0IERlaW4gR2ViaWV0IGV2dGwuIGluIERlaW5lbSBIb21lLVZlcnplaWNobmlzICgvcGxheWVycy8uLi4pCitzY2hyZWliZW4sIGRhIER1IG5vY2ggbmljaHQgZGVuIFNwcnVuZyB6dSBMZXZlbCAyMSBnZXNjaGFmZnQgaGFzdC4gRHUKK3NvbGx0ZXN0IGFiZXIgd2lzc2VuLCBkYXNzIERlaW5lIFJlZ2lvbnNtYWdpZXJJbm5lbiBudXIgR2ViaWV0ZSBhbm5laG1lbgord2VyZGVuLCB3ZWxjaGUgaW0gUmVnaW9uc3ZlcnplaWNobmlzIC9kLy4uLi9kZWluX25hbWUvIGdlc3BlaWNoZXJ0IHNpbmQuIERhcworaXN0IHdpY2h0aWcsIGRlbm4gaW4gRGVpbmVtIEhlaW0tVmVyemVpY2huaXMga29lbm5lbiBzaWUgbmljaHQgc2NocmVpYmVuIHVuZAorc28ga2VpbmUgRmVobGVyIGtvcnJpZ2llcmVuLiBEZW5rZSBkYXJhbiEgQmVudXR6ZSB1bmJlZGluZ3QgZGllIERlZmluZXMsCitkZW5uIHZvciBkZW0gQW5zY2hsdXNzIHdpcnN0IER1IGRhcyBHZWJpZXQgaW4gZGFzIFJlZ2lvbnN2ZXJ6ZWljaG5pcworc2NoaWViZW4gbXVlc3Nlbi4KKworVmllbGUgU3BpZWxlciAnbG9nZ2VuJywgYWxzbyBzcGVpY2hlcm4gZ2VybmUgVG9kZSBvZGVyIEFrdGlvbmVuIHZvbiBTcGllbGVybgoraW4gaWhyZW4gSGVpbS1WZXJ6ZWljaG5pc3Nlbi4gRGllc2VzIFNjaHJlaWJlbiBmdW5rdGlvbmllcnQgbmljaHQgdm9uCitSZWdpb25zdmVyemVpY2huaXNzZW4gaW4gSGVpbS1WZXJ6ZWljaG5pc3NlLiBCZW51dHplIGF1Y2ggaGllciBlaW4gZGVmaW5lIQorCitOdW4ga29tbWVuIHdpciB6dW0gcHJvZ2dlbi4gRmFsbHMgRHUgbm9jaCBuaWUgcHJvZ3JhbW1pZXJ0IGhhc3QsIGlzdCBlcworc2lubnZvbGwsIHNpY2ggQmVpc3BpZWxmaWxlcyBhbnp1c2NoYXVlbi4gV3VlaGwgRGljaCBkdXJjaCBkYXMgJy9kb2MnCitWZXJ6ZWljaG5pcyBvZGVyIG5vY2ggYmVzc2VyOiBmcmFnIERlaW5lbiBQYXBpbWFnaWVyL0RlaW5lIE1hbWltYWdpZXJpbiBvZGVyCitkZW4gUk0sIG9iIGVyIERpciBlaW4gcGFhciBzZWluZXIgRmlsZXMgenVzY2hpY2t0LiBIYXN0IER1IGRpZXNlIEh1ZXJkZQordWViZXJ3dW5kZW4sIGthbm4gZXMgbG9zZ2VoZW4uIFdlbm4gRHUgYW5mYWVuZ3N0IHp1IHByb2dnZW4gdW5kIG5pY2h0IHdlaXNzdCwgCit3aWUgbWFuIGVpbmVuIGJlc3RpbW10ZW4gQmVmZWhsIGJlbnV0enQsIGthbm5zdCBEdSBkaWUgJ21hbiBwYWdlJyBrb25zdWx0aWVyZW4gCisoZGFzIE1hbnVhbCA9IE9ubGluZSBIaWxmZSkuIFRpcHAgZWluZmFjaCAnbWFuIDxiZWZlaGw+JyB1bmQgc2Nob24ga29tbXQgZGllIAorZW50c3ByZWNoZW5kZSBIaWxmZXNlaXRlLCBmYWxscyB2b3JoYW5kZW4uCisKK0VpbiBwYWFyIFdvcnRlIHp1IGRlbiBSYWV1bWVuOiBEZXRhaWxzIHNpbmQgaGllciBzZWhyIHdpY2h0aWcuCitNYWNoIHZpZWxlIERldGFpbHMgdW5kIGJlc2NocmVpYmUgc2llIG5ldHQuICd1bnQgYm9kZW4nIC0+ICdEZXIgaXN0IHVudGVyIERpci4nCitpc3QgbmljaHQgc2VociBpbnRlcmVzc2FudC4gRWluIFJhdW0gbWl0IHdlbmlnZXIgYWxzIDIwIERldGFpbHMgd2lyZAorbWl0dGxlcndlaWxlIGFscyB1bmdlbnVlZ2VuZCBhbmdlc2VoZW4sIGF1Y2ggd2VubiBlcyBub2NoIGVpbiBwYWFyIEdlYmlldGUKK2ltIE1HIGdpYnQsIHdvIGRpZSBSYWV1bWUgZmFzdCBrZWluZSBEZXRhaWxzIGhhYmVuIChkaWVzZSBaYWhsIHNjaHdhbmt0CituYXR1ZXJsaWNoIHZvbiBSZWdpb24genUgUmVnaW9uIC0tIHRyb3R6ZGVtOiBqZSBtZWhyIERldGFpbHMsIGRlc3RvIGJlc3NlcikuIAorQWRkU21lbGxzIHVuZCBBZGRTb3VuZHMgc29sbHRlc3QgRHUgZWJlbmZhbGxzIG5pY2h0IHZlcmdlc3Nlbi4gRGVyIFNwaWVsZXIgCit2b24gV2VsdCB3aWxsIGF1Y2ggcmllY2hlbiB1bmQgaG9lcmVuIGtvZW5uZW4uIFdlbm4gRHUgZWluZW4gUmF1bSBlcnN0ZWxsc3QsIAordWViZXJsZWdlIERpciBhdWNoIHdpdHppZ2UgdW5kL29kZXIgc2lubnZvbGxlIEJlZmVobGUsIGRpZSBtYW4gaW4gZGVtIFJhdW0gCithdXNmdWVocmVuIGthbm4uIEJlaSBsYWVuZ2VyZW4gUHJvemVkdXJlbiBpc3QgZXMgZnVlciBkZW4gUk0gaGlsZnJlaWNoLCB3ZW5uIAorRHUgaW0gamV3ZWlsaWdlbiBSYXVtIGVpbmVuIGt1cnplbiBLb21tZW50YXIgYWJzZXR6dC4KKworU2NoYXUsIGRhc3MgRHUgZWluIGF0bW9zcGhhZXJpc2NoIHNjaG9lbmVzIEdlYmlldCBwcm9ncmFtbWllcnN0LiBTY2hhdSwKK2Rhc3MgZXMgc2ljaCBtaXQgc2VpbmVyIFVtZ2VidW5nIHZlcnRyYWVndC4gQmV2b3IgRHUgZWluIGFiZ2VzdHVlcnp0ZXMKK1JhdW1zY2hpZmYgdm9uIGRlciBWZWdhIHByb2dyYW1taWVyc3QsIGZyYWdlIGxpZWJlciBEZWluZW4gUk0sIGRlbm4KK3dhaHJzY2hlaW5saWNoIHBhc3N0IGVzIHRoZW1hdGlzY2ggbmljaHQgaW4gc2VpbmUgUmVnaW9uICh3ZWxjaGUgUmVnaW9uIGF1Y2gKK2ltbWVyIGVzIGlzdCA6LSkpLgorCitBY2h0ZSBkYXJhdWYsIGRhc3MgZGllIFRvZWRsaWNoa2VpdCBEZWluZXMgR2ViaWV0cyBzaWNoIG1pdCBEZWluZXIgVW1nZWJ1bmcKK3ZlcnRyYWVndC4gVWViZXItU2Nod2VyZS1NZWdhLU1vbnN0ZXIgc29sbHRlbiB2b24ga2xlaW5lbiBTcGllbGVybiBuaWNodAorcHJvYmxlbWxvcyBlcnJlaWNodCB3ZXJkZW4ga29lbm5lbi4gQmVudXR6ZSBuaWNodCBnYW56IHNvIHRvZWRsaWNoZQorJ0Jsb2NrLU1vbnN0ZXInLCB3ZWxjaGUgZGVuIFp1Z2FuZyB2ZXJzcGVycmVuLiBTbyBtdXNzIGVpbiBTcGllbGVyIGVyc3QKK3NlaW5lIFd1ZXJkaWdrZWl0IGJld2Vpc2VuLCBiZXZvciBlciBhbiBkaWUgaGFydGVuIE1vbnN0ZXIga29tbXQuIFRpZ29uZW4gaW0KK0dsb2NrZW53YWxkIHNpbmQgS0VJTkUgZ3V0ZSBJZGVlLgorCitWaWVsZSBNYWdpZXIgZmluZGVuIGVzIGx1c3RpZywgU3BpZWxlciBpbiBpaHJlbiBHZWJpZXRlbiBkdXJjaCBGYWxsZW4KK3N0ZXJiZW4genUgbGFzc2VuLiBEYXMgc2luZCB6LkIuIEtub2VwZmUsIGRpZSBtYW4gZHJ1ZWNrdCwgdW5kIGRpZSBkYW5uIHNvZm9ydAordGhpc19wbGF5ZXIoKS0+ZGllKCkgYXVmcnVmZW4uIE5hY2hkZW0gdm9yIGVpbmlnZXIgWmVpdCBkaWUgVG9kZXNmb2xnZW4KK3ZlcnNjaGFlcmZ0IHd1cmRlbiwgc2luZCBkZXJhcnRpZ2UgRmFsbGVuIG5pY2h0IG1laHIgZ2VybiBnZXNlaGVuLiBWZXJtZWlkZQorc2llIHdlbm4gbW9lZ2xpY2guIFNwaWVsZXIgbWFjaGVuIGplZGVuIE11ZWxsLCBhYmVyIGxhc3Mgc2llIG5pY2h0IGRhZnVlcgorc3RlcmJlbiwgd2VubiBEdSBlcyBhbmRlcnMgcmVnZWxuIGthbm5zdC4gSmVkZSBUb2Rlc2ZhbGxlIGlzdCBkZW0gUk0KK2F1Znp1enVlaWdlbi4KKworRGllIE9iamVrdGU6IGRhenUgZ2Vob2VyZW4gYXVjaCBXYWZmZW4gdW5kIFJ1ZXN0dW5nZW4sIHNvd2llIGFsbGUgYW5kZXJlbgorc2NocmFlbmdlbiBEaW5nZSwgZGllIERpciBub2NoIHNvIGVpbmZhbGxlbiB3ZXJkZW4uIEJldm9yIER1IERpciBEZWluZQorZXJzdGUgTWVnYS1TdXBlci1BbGxlcy1LYXB1dHRzY2hsYWctQXh0IG9kZXIgZGVuIEFsbGUtU2NoYWVkZW4tQWJ3ZWhyLVBhbnplcgorenVzYW1tZW5iYXN0ZWxzdCwgc2V0eiBEaWNoIGhpbiwgYXRtZSBydWhpZyBkdXJjaCB1bmQgdGlwcCBkYW5uICdtYW4gYmFsYW5jZScuCitEb3J0IHN0ZWhlbiBhbGxlIHdpY2h0aWdlbiBFY2tkYXRlbiwgZGllIER1IGJlZm9sZ2VuIHNvbGx0ZXN0LiBVbmQgZGVuayBkYXJhbiwKK25pY2h0IHp1dmllbGUgZXhrbHVzaXZlbiBXYWZmZW4gdW5kL29kZXIgUnVlc3R1bmdlbiBpbiBlaW5lbSBlaW5pZ2VuIEdlYmlldC4KK1dlbm4gRHUgZ3Jvc3NlIE9iamVrdGUgc2NocmVpYnN0LCBpc3QgaGllciBhdWNoIHdpZWRlciBlaW4ga2xlaW5lciBLb21tZW50YXIKK2ltIEZpbGUgc2VociBoaWxmcmVpY2ggZnVlciBkZW4gUk0uIERlbmsgZGFyYW4sIER1IGJpc3QgdmllbGxlaWNodCBpcmdlbmR3YW5uCitlaW5tYWwgbmljaHQgbWVociBlcnJlaWNoYmFyIHVuZCBkYW5uIGlzdCBlcyBndXQsIHdlbm4gaW0gRmlsZSBnZXNjaHJpZWJlbgorc3RlaHQsIHdhcyBkYXMgUHJvZ3JhbW0gdW5nZWZhZWhyIG1hY2h0LgorCitKZXR6dCBrb21tZW4gd2lyIHp1IGVpbiBwYWFyIGhhZXVmaWdlbiBQcm9ibGVtZW46CitFcnpldWdzdCBEdSBlaW4gT2JqZWt0LCBkYXMgaW4gZWluZW4gU3BpZWxlciBnZXNjaG9iZW4gd2lyZCwgbXVzc3QgRHUgCit1bmJlZGluZ3QgZGVuIFJldHVybi1XZXJ0IGFiZnJhZ2VuLCBvYiBkZXIgU3BpZWxlciBkYXMgbm9jaCB0cmFnZW4ga2FubjoKK0VpbiBCZWlzcGllbDogRWluZSBlaWdlbmUgRnVua3Rpb24gJ25laG1lbicuCitJbiBkYXMgY3JlYXRlKCkgdm9tIFJhdW0ga29tbXQ6CitBZGRDbWQoKHsibmltbSIsIm5laG0iLCJuZWhtZSJ9KSwibmVobWVuIik7CisKK0RpZSBGdW5rdGlvbiAnbmVobWVuJyBlcnpldWd0IGVpbmUgWmlnYXJyZS4gU2llIHBydWVmdCwgb2IgZWluZW4gWmlnYXJyZQorc2Nob24gaW0gUmF1bSBsaWVndCwgZGFubiBuaW1tdCBkZXIgU3BpZWxlciBkaWVzZS4gRmFsbHMga2VpbmUgWmlnYXJyZQorcnVtbGllZ3QsIHdpcmQgZWluZSBuZXVlIGVyemV1Z3QgdW5kIGluIGRlbiBTcGllbGVyIGdlc2Nob2Jlbi4gCitEYW1pdCBlaW4gU3BpZWxlciBuaWNodCBodW5kZXJ0ZSBaaWdhcnJlbiBlcnpldWdlbiBrYW5uLCB3dXJkZSBlaW5lCitnbG9iYWxlIFZhcmlhYmxlICdpbnQgemFlaGxlcjsgemFlaGxlcj01OyBvYmVuIGltIGNyZWF0ZSgpIHZvbSBSYXVtIGVyc3RlbGx0LiAKK05hY2ggZWluZW0gUmF1bXJlc2V0IHN0ZWh0IGRlciBaYWVobGVyIHdpZWRlciBhdWYgNSwgd2VubiBtYW4gZGFzIGluIGRlcgorcmVzZXQoKSBGdW5rdGlvbiAoc2llaGUgdW50ZW4pIGRlZmluaWVydC4KKworbmVobWVuKHN0cmluZyBzdHIpCit7CisgIG9iamVjdCBvYjsKKworICAgbm90aWZ5X2ZhaWwoIldhcyBtb2VjaHRlc3QgRHUgbmVobWVuP1xuIik7CisgICBpZighc3RyKSByZXR1cm4gMDsKKyAgIGlmKHN0cj09InppZ2FycmUiKSB7CisgICBpZihwcmVzZW50KCJ6aWdhcnJlIix0aGlzX29iamVjdCgpKSkgcmV0dXJuIDA7IAorICAgLy8gc28gd2lyZCBkaWUgWmlnYXJyZSBJTSBSYXVtIGdlbm9tbWVuCisKKyAgICAgaWYgKHphZWhsZXIpIHsgICAKKyAgICAgICB3cml0ZShCUygiRHUgbmltbXN0IGVpbmUgWmlnYXJyZSBhdXMgZGVtIEZhY2guIikpOworICAgICAgIHNheShUUE4rIiBuaW1tdCBlaW5lIFppZ2FycmUgYXVzIGVpbmVtIEZhY2guXG4iLHRoaXNfcGxheWVyKCkpOworICAgICAgIC8vIFRQTjogc2llaGUgb2JlbiwgQWJzY2huaXR0ICdEZWZpbmVzJworICAgICAgIG9iPWNsb25lX29iamVjdChPQkooInppZ2FycmUiKSk7CisgICAgICAgaWYgKG9iLT5tb3ZlKHRoaXNfcGxheWVyKCksTV9HRVQpICE9MSkgeworICAgICAgIC8vIGRpZXNlcyAnIT0xJyBmYWVuZ3QgTUVfVE9PX0hFQVZZLCBNRV9UT09fTUFOWV9PQkpFQ1RTLCAKKyAgICAgICAvLyB1bmQgTUVfQ0FOVF9CRV9JTlNFUlRFRCBhYgorCisgICAgICAgICAgIHdyaXRlKCJEdSBrYW5uc3QgZGllIFppZ2FycmUgbmljaHQgbWVociB0cmFnZW4uIFNpZSBmYWVsbHQgenUgIisKKyAgICAgICAgICAgIkJvZGVuLlxuIik7CisgICAgICAgICAgIG9iLT5tb3ZlKGVudmlyb25tZW50KFRQKSxNX1BVVCk7CisgICAgICAgICAgIH0KKyAgICAgICAgIHphZWhsZXItLTsKKyAgICAgICAgIHJldHVybiAxOworICAgICAgICAgfQorICAgICB3cml0ZShCUygiU28gZWluIFBlY2guIEplbWFuZCBoYXQgZGllIGJlc3RlbiBTdHVlY2tlIGJlcmVpdHMgZ2Vub21tZW4uIikpOworICAgICByZXR1cm4gMTsKKyAgICAgfQorICAvLyB1bmQgZGFtaXQgbWFuIGF1Y2ggYW5kZXJlIFNhY2hlbiBhbHMgWmlnYXJyZW4gaW0gUmF1bSBuZWhtZW4ga2FubjoKKyAgcmV0dXJuIDA7CisgIAorfQorCityZXNldCgpCit7CisgICAgOjpyZXNldCgpOworICAgIC8vIG5hY2ggMzAtNDUgbWluIGthbm4gbWFuIHdpZWRlciA1IG5ldWUgWmlnYXJyZW4gbmVobWVuCisgICAgemFlaGxlcj01OworfQorCitEaWUgTlBDcy4gRXMgZ2lidCAobm9jaCkga2VpbmUgVm9yc2NocmlmdCwgd2llIHN0YXJrIG1heGltYWwgTlBDcyBzZWluIGR1ZXJmZW4sCithYmVyIHNjaGF1IERpciB0cm90emRlbSAnbWFuIGJhbGFuY2UnIHp1IGRpZXNlbSBUaGVtYSBhbi4KK05QQ3Mgd2VyZGVuIG9mdCBzY2htZXJ6bGljaCB2b24gaWhyZW4gTWFnaWVybiB2ZXJuYWNobGFlc3NpZ3QuIE9mdAorc3RlaHQgZGVyIGdyb3NzZSBEcmFjaGUgYXVmIGRlbSBTcGVpY2hlciwga2FubiBEaWNoIGluIGVpbmVtIFNjaGxhZyB1bWhhdW4sCit3ZWlzcyBhYmVyIG5pY2h0IGVpbm1hbCBzZWluZW4gTmFtZW4gdW5kIGJlc2l0enQgbmljaHQgZWluIERldGFpbC4gS3VlbW1lcgorRGljaCB1bSBEZWluZSBOUENzLiBHaWIgaWhuZW4gZWluZSBzY2hvZW5lIEJlc2NocmVpYnVuZywgbGFzcyBzaWUgZXR3YXMKK3VlYmVyIHNpY2ggZXJ6YWVobGVuLCBnaWIgaWhuZW4gRGV0YWlscywgZ2liIGlobmVuIEtsZWlkdW5nLgorCitPZnQgd2lsbCBtYW4gTlBDcyBkdXJjaCBHZWJpZXRlIGxhdWZlbiBsYXNzZW4sIHNvIGRhc3Mgc2llIG1hbCBMYW5kIHVuZAorTGV1dGUga2VubmVubGVybmVuLiBEYXMgaXN0IGV0d2FzIHJlY2huZXJsYXN0aWcsIHVuZCBhdWNoIHdlbm4gd2lyIGpldHp0CitqZWRlIE1lbmdlIFBvd2VyIHVudGVyIGRlciBIYXViZSBoYWJlbiwgc29sbHRlIG1hbiBlaW5pZ2UgRGluZ2UgYmVhY2h0ZW46CisqIEVzIGdpYnQgZWluaWdlIHNlaHIgc2Nob2VuZSBTdGFuZGFyZC1MYXVmLU5QQ3MuIEVzIGJpZXRldCBzaWNoIGFuLCBkaWVzZQorICB6dSBiZW51dHplbi4gU2llIGhhYmVuIGFsbGUgbm9ldGlnZW4gRWlnZW5zY2hhZnRlbiwgdW50ZXIgYW5kZXJlbSwgZGFzcyBzaWUgCisgIHN0ZWhlbiBibGVpYmVuLCB3ZW5uIHNpZSBrZWluZSBTcGllbGVyIG1laHIgYW50cmVmZmVuLiBEYXMgc3BhcnQgCisgIFBlcmZvcm1hbmNlLiBBdXNzZXJkZW0gd2VyZGVuIHNpZSBvZnQgdm9uIGVpbmVtIE1hc3RlciBnZXN0ZXVlcnQsIHVuZCBkYXMgCisgIHNwYXJ0IGNhbGxfb3V0cy4KKyogQXVmd2VuZGlnIGlzdCBiZXNvbmRlcnMgZGFzIEJld2VnZW4gdm9uIE5QQ3MuIFJlbm5lbmRlIE5QQ3Mgc2luZCBkb2NoCisgIG9lZGUuIExhc3Mgc2llIHNpY2ggbGFuZ3NhbSBiZXdlZ2VuLiBKZWRlcyBzY2hvZW5lIEdlc3ByYWVjaCBtaXQgZWluZW0gTlBDIAorICBnZWh0IGluIGRpZSBIb3NlLCB3ZW5uIGRlciBOUEMgc3RhZW5kaWcgdm9yIGVpbmVtIHdlZ2xhZXVmdC4KKworRGVua2UgZ2VuZXJlbGwgZGFyYW4sIHVlYmVyc2ljaHRsaWNoIHp1IHByb2dyYW1taWVyZW4uIEJlbnV0emUgbmljaHQKK21laHIgYWxzIDc4IFplaWNoZW4gcHJvIFplaWxlLCBmdWVnZSBydWhpZyBMZWVyemVpbGVuIGVpbiwgdW0gZGllIFN0cnVrdHVyCit6dSB1bnRlcnN0cmVpY2hlbi4gUnVlY2tlIGluIFNjaGxlaWZlbiBkZW4gQ29kZSBlaW4gcGFhciAoei5CLiAzKSBaZWljaGVuCitlaW4uIEtvbW1lbnRhcmUgbWFjaGVuIERlaW5lbiBSTSBnbHVlY2tsaWNoISBXZW5uIER1IGVpbnN0IHZpZWxsZWljaHQgbmljaHQKK21laHIgZGEgYmlzdCwgd2lyZCBpcmdlbmQgamVtYW5kIERlaW5lbiBDb2RlIHdhcnRlbiBtdWVzc2VuLiBEZW5rIGFuIGRlbgorYXJtZW4gS2VybCEgRnVlZ2UgYmVpIERlaW5lbiBPYmpla3RlbiBlaW5lbiBIaW53ZWlzIGRhcmF1ZiBlaW4sIHdvdm9uIHVuZAord29mdWVyIHNpZSBiZW51dHp0IHdlcmRlbiEgV2VubiBEdSBkaWUgV2FobCBoYXN0LCBDb2RlIGluIGVpbmVyCitmdWVyY2h0ZXJsaWNoIGVmZml6aWVudGVuLCBhYmVyIHVudWViZXJzaWNodGxpY2hlbiBXZWlzZSB6dSBzY2hyZWliZW4sIG9kZXIKK2V0d2FzIHdlbmlnZXIgZWZmaXppZW50LCBhYmVyIGludHVpdGl2IHVuZCBlaW5sZXVjaHRlbmQsIG5pbW0gZGllCitlaW5sZXVjaHRlbmRlIFdlaXNlLiAKKworWmF1YmVydHJhZW5rZSwgR2lsZGVub2JqZWt0ZSwgR2lsZGVucXVlc3RzCisKK1phdWJlcnRyYWVua2UKKworWmF1YmVydHJhZW5rZSBzaW5kIHdpY2h0aWcsIHVuZCBvYndvaGwgZXMgc2llIHNjaG9uIGFuIHZpZWxlbiBTdGVsbGVuIGltIE1HCitnaWJ0LCBzaW5kIHNpZSBpbW1lciBub2NoIGdlZnJhZ3QuIE1hbiBzb2xsdGUgYmVpbSBFaW5iYXVlbiB2b24gWlRzIGRhcmFuCitkZW5rZW4sIHNpZSBuaWNodCB0aWVmIGluIFF1ZXN0LUdlYmlldGVuIHp1IHZlcnN0ZWNrZW4sIHNvIGRhc3MgZWluIFNwaWVsZXIKK2tlaW5lIFF1ZXN0IG5vY2htYWwgc3BpZWxlbiBtdXNzLCBudXIgdW0gZGVuIFpUIHp1IGJla29tbWVuLiBBdXNzZXJkZW0KK3NvbGx0ZW4gc2llIG5pY2h0IHp1IHNjaHdlciB2ZXJzdGVja3Qgd2VyZGVuLiBFaW4gWmF1YmVydHJhbmsgaW4gZWluZW0gQnVjaAorYmVrb21tdCBtYW4gei5CLiBkdXJjaDoKKworY3JlYXRlKCkgeworLi4uCitBZGRSZWFkRGV0YWlsKCJidWNoIiwiQEBkZXRfYnVjaEBAIik7Cit9CisKK3N0cmluZyBkZXRfYnVjaCgpIAoreworIGlmICh0aGlzX3BsYXllcigpLT5GaW5kUG90aW9uKCJEdSBmaW5kZXN0IE1hY2h0IGluIGRpZXNlbSBCdWNoLi4uXG4iKSkgCisgICByZXR1cm4gIiI7CisgZWxzZQorICAgcmV0dXJuICJEdSBmaW5kZXN0IGtlaW5lIE1hY2h0IGluIGRpZXNlbSBCdWNoLiBXaWUgc2NoYWRlLi4uXG4iOworfQorCitEZW5rZSBkYXJhbiwgYXVjaCBlaW5lbiBWZXJzIHp1IHNjaHJlaWJlbiwgd2VsY2hlciBpbSBPcmFrZWwgZGVuIFRpcCBmdWVyCitkaWVzZW4gWlQgZGFyc3RlbGx0LiBEdSBrZW5uc3QgZGllc2UgVmVyc2Ugc2ljaGVyIHNjaG9uIHp1ciBHZW51ZWdlIDotKS4KK0R1IG11c3N0IGRlbiBaYXViZXJ0cmFuayBzcGFldGVyIHp1c2FtbWVuIG1pdCBkZW4gRm9yc2NoZXJwdW5rdGVuIGFubWVsZGVuLgorCitHaWxkZW4tIHVuZCBNaW5pcXVlc3RzLgorCitHaWxkZW5xdWVzdHMgc2luZCBrbGVpbmUgQXVmZ2FiZW4sIG5pY2h0IGdyb3NzIGdlbnVnIGZ1ZXIgcmljaHRpZ2UgUXVlc3RzLAord2VsY2hlIHZvbiBkZW4gTWl0Z2xpZWRlcm4gZWluZXIgR2lsZGUgZ2Vsb2VzdCB3ZXJkZW4gbXVlc3NlbiwgYmV2b3Igc2llCithdWZzdGVpZ2VuIGtvZW5uZW4uIERpZSBEaW5nZXIgc2luZCB2b2xsIGltIEtvbW1lbi4gWmF1YmVyZXItLCBLYWVtcGZlci0KK29kZXIgQ2hhb3MtR2lsZGVubWFnaWVyIHNpbmQgaW1tZXIgaGludGVyIGRlbmVuIGhlci4gUXVlc3RzIHdpZSAnRmluZGUgZGFzCit2ZXJzY2hvbGxlbmUgQnVjaCcgb2RlciAnQmVmcmVpZSBkZW4gVmVydXJ0ZWlsdGVuJyBsYXNzZW4gc2ljaCBvZnQgb2huZQorZ3Jvc3NlbiBBdWZ3YW5kIGluIEdlYmlldGUgZWluYmF1ZW4uIFNpZSBnYXJhbnRpZXJlbiBhdWNoIGVpbmUgZ2V3aXNzZQorcGVybWFuZW50ZSBCZXN1Y2hlcnphaGwgaW0gR2ViaWV0IDotKSkuIEJldm9yIG1hbiBkaWVzZSBRdWVzdHMgZWluYmF1dCwKK3NvbGx0ZSBtYW4gZGFzIHByaW56aXBpZWxsZSBPSyBkZXIgR2lsZGVubWFnaWVyIGhvbGVuLCBuYWNoaGVyIG11c3MgbWFuCitpaG5lbiBkaWUgUXVlc3Qgdm9yc3RlbGxlbiwgZGFtaXQgc2llIHNpZSBiZXdlcnRlbiB1bmQgZnJlaWdlYmVuLgorCitXaWxsIG1hbiBlaW5lIGtsZWluZSBBdWZnYWJlIG5pY2h0IGdpbGRlbmFiaGFlbmdpZywgc29uZGVybiBmdWVyIGFsbGUKK1NwaWVsZXIgZWluYmF1ZW4gdW5kIGRhZnVlciBTdHVmZW5wdW5rdGUgdmVyZ2ViZW4sIGRhbm4ga2FubiBtYW4gZGllIEF1ZmdhYmUKK2F1Y2ggYWxzIE1pbmlxdWVzdCBlaW50cmFnZW4gbGFzc2VuLCB1bmQgendhciBiZWltIGdsZWljaGVuIEVNLCBkZXIgYXVjaCBkaWUKK0ZQcyBlaW50cmFlZ3QuIEVzIGZvbGdlbiBDb2RlLUJlaXNwaWVsZSBmdWVyIGRpZSBWZXJnYWJlIGRlciBRdWVzdHMuLi4KKworaW50IGJlZnJlaWUoc3RyaW5nIHdlbikgCit7CisgIG5vdGlmeV9mYWlsKCJXZW4gbW9lY2h0ZXN0IER1IGJlZnJlaWVuP1xuIik7CisgIGlmICh3ZXIgIT0gImdlZmFuZ2VuZXIiKSAKKyAgICByZXR1cm4gMDsKKyAgCisgIC8vIEhpZXIgd2VyZGVuIGRpZSBTdHVmZW5wdW5rdGUgZnVlciBkaWUgTWluaXF1ZXN0IHZlcmdlYmVuLi4uCisgIC8vIEZhbGxzIG1hbiBrZWluZSBNaW5pcXVlc3QgYW5nZW1lbGRldCBoYXQsIGxhZXNzdCBtYW4gZGFzIG5hdHVlcmxpY2ggd2VnCisgIFNDT1JFTUFTVEVSLT5HaXZlTWluaVF1ZXN0KHRoaXNfcGxheWVyKCkpOworCisgIC8vIEhpZXIgc2luZCBkaWUgS2FlbXBmZXIuIERlciBDb2RlIGthbm4gdmFyaWllcmVuLi4uCisgIGNhbGxfb3RoZXIoIi9wL2thZW1wZmVyL3N0ZC9rX21hc3RlciIsIlNldHplQXVmZ2FiZSIsZ2V0dWlkKHRoaXNfcGxheWVyKCkpLAorICAgICJCZWZyZWllIGRlbiBHZWZhbmdlbmVuIik7CisKKyAgLy8gTGV0enRlcyBCZWlzcGllbDogSGllciBzaW5kIGRpZSBaYXViZXJlcjoKKyAgY2FsbF9vdGhlcigiL3AvemF1YmVyZXIvbnBjL3Rlc3QiLCJHaXZlUXVlc3QiLHRoaXNfcGxheWVyKCksCisgICAgIkJlZnJlaWUgZGVuIEdlZmFuZ2VuZW4iKTsKKyAgLi4uCit9CisKK0dpbGRlbm9iamVrdGUKKworR2lsZGVub2JqZWt0ZSB3aXJrZW4gbm9jaCBiZXNzZXIgYWxzIEdpbGRlbnF1ZXN0ZW4sIHVtIFNwaWVsZXIgaW4gR2ViaWV0ZSB6dQorbG9ja2VuIDotKS4gRGllcyBzb2xsdGUgamVkb2NoIGtlaW4gQW5sYXNzIHNlaW4sIGVpbiBHZWJpZXQgbWl0IGRlcmFydGlnZW4KK0RpbmdlbiB6dSB1ZWJlcmxhZGVuIGFiZXIgZGFmdWVyIGRpZSBEZXRhaWxzIHVuZCBkaWUgQXRtb3NwaGFlcmUgenUKK3Zlcmdlc3Nlbi4gR2FueiBnZW5lcmVsbCBnaWx0OiBNYWVzc2lnZSBEaWNoISBXZW5pZ2VyIGlzdCBtZWhyIQorCitHYW56IGdlbmVyZWxsIHNpbmQgR2lsZGVub2JqZWt0ZSB6LkIuIFV0ZW5zaWxpZW4gZGVyIFphdWJlcmVyLCBXYWZmZW4gbWl0CitLYWVtcGZlci1Cb25pIGZ1ZXIgS2FlbXBmZXIgb2RlciBLcmVpZGVuIGV0Yy4gZnVlciBDaGFvdGVuLiBEaWVzZSBPYmpla3RlCittdWVzc2VuIG5hdHVlcmxpY2ggdm9uIGRlbiBHaWxkZW5tYWdpZXJuIGdlbmVobWlndCB3ZXJkZW4sIGJldm9yIGRhcyBHZWJpZXQKK2FuZ2VzY2hsb3NzZW4gd2lyZC4gU3ByZWNodCBmcnVlaCBnZW51ZyBtaXQgZGVuIEdpbGRlbm1hZ2llcm4uIFNpZSB3ZXJkZW4KK2V1Y2ggc2ljaGVyIGdlbnVnIEJlaXNwaWVsZSBmdWVyIGRlcmFydGlnZSBPYmpla3RlIGdlYmVuLCB3ZXNoYWxiIGhpZXIgYXVmCitkZXJhcnRpZ2VzIHZlcnppY2h0ZXQgd2lyZC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUCBIIEEgUyBFIDIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0R1IGhhc3QgbnVuIGFsbGUgUmFldW1lL09iamVrdGUvTlBDcyBlcnN0ZWxsdC4gTnVuIGdlaHQgZXMgaW4gZGllIFRlc3RwaGFzZS4KK0VyemV1Z2UgRGlyIGVpbmVuIFRlc3RzcGllbGVyLCBkYW1pdCBEdSBEZWluZSBSYXVtbWVsZHVuZ2VuIHdpZSB6LkIuIG1pdHRlbHMKK3RlbGxfcm9vbSgpIGF1ZiBpaHJlIFJpY2h0aWdrZWl0IHVlYmVycHJ1ZWZlbiBrYW5uc3QuIFNjaGF1IERpciBpbiBSdWhlCitEZWluZSBTYWNoZW4gYW4gdW5kIHZlcnN1Y2hlLCBkaWUgdW5zaW5uaWdzdGVuIFNhY2hlbiBkYXJpbiB6dSB0dW4uIERhcyB3ZXJkZW4KK2RpZSBTcGllbGVyIG5hZW1saWNoIG5hY2hoZXIgYXVjaCBtYWNoZW4uIElzdCBEZWluZXIgTWVpbnVuZyBuYWNoIGFsbGVzIE9LLAorc2NocmVpYiBlaW5lIEVtYWlsIGFuIERlaW5lIHp1c3RhZW5kaWdlbiBSTXMuIFNlaHIgaGlsZnJlaWNoIChmdWVyIGRpZSBSTXMpCit3YWVyZSBlaW5lIHp1c2FldHpsaWNoZSBMaXN0ZSAoc2llaGUgYXVjaCBQaGFzZSA0KSBtaXQ6CisKKzEpIGFsbGVuIE5QQ3MgKHdlbGNoZSBPYmpla3RlIHRyYWdlbiBzaWUpIHVuZCBhbGxmYWVsbGlnZSBTb25kZXJmdW5rdGlvbmVuCisgICBnYW56IGt1cnogZXJsYWV1dGVydC4KKzIpIEVpbmUgTGlzdGUgYWxsZXIgT2JqZWt0ZS4gQmVpIGtvbXBsaXppZXJ0ZW4gT2JqZWt0ZW4gZWluZSBrdXJ6ZSBCZXNjaHJlaWJ1bmcKKzMpIEVpbmUgTGlzdGUsIGluIHdlbGNoZW0gUmF1bSBsaWVndCB3ZWxjaGVzIE9iamVrdC9aVC9IZWlsc3RlbGxlL05QQworCitEaWVzZSBMaXN0ZSBrYW5uc3QgRHUgbmF0dWVybGljaCBpbiBEZWluIC9kb2MgVmVyemVpY2huaXMgbGVnZW4sIHdhcyBkYW5uIGF1Y2gKK3NwYWV0ZXIgc2VociBoaWxmcmVpY2ggc2VpbiBrYW5uLgorCitGYWxscyBzaWNoIERlaW5lIFJNcyBuaWNodCBtZWxkZW4sIHNwcmljaCBzaWUgYW4sIG1haWwgaWhuZW4gbm9jaG1hbC4KK1ZpZWxsZWljaHQgaGFiZW4gc2llIERlaW5lIE1haWwgdmVyZ2Vzc2VuLiBSTXMgc2luZCBwcmluemlwaWVsbCB2ZXJnZXNzbGljaC4KK1NpZSB1bnRlcmhhbHRlbiBzaWNoIGplZG9jaCBzaWNoZXJsaWNoIGdlcm4gbWl0IERpci4gS2VpbmUgZmFsc2NoZQorQmVzY2hlaWRlbmhlaXQsIHJhbiBhbiBkZW4gRmVpbmQuCisKKy0gVGVzdHNwaWVsZXIgLSAgIG9kZXIgICAtIFp3aXNjaGVuIExlZ2FsaXRhZXQgdW5kIFdhaG5zaW5uIC0KKworS2F1bSBlaW4gTWFnaWVyIGthbm4gZGllIG1lcmt3dWVyZGlnZW4sIG9mdCB3aWRlcnNpbm5pZ2VuIHVuZCBrcmFua2VuCitHZWRhbmtlbmdhZW5nZSBlaW5lcyBTcGllbGVycyBuYWNodm9sbHppZWhlbi4gRGVzaGFsYiBpc3QgZXMgZWluZSBndXRlCitTYWNoZSwgc2VpbiBHZWJpZXQgdm9uIFNwaWVsZXJuIHRlc3RlbiB6dSBsYXNzZW4uIFNpZSBrb2VubmVuIGRpZSBTdGFlcmtlCitkZXIgTlBDcyBndXQgZWluc2NoYWV0emVuIHVuZCBrb3JyaWdpZXJlbiwga2VubmVuIGRpZSBnZWhlaW1lbiBLbmlmZmUgZGVyCitHaWxkZW4gdW5kIG1hY2hlbiBnZW5lcmVsbCBkYXMsIHdvcmFuIG1hbiBuaWUgZ2VkYWNodCBoYXQuCisKK1NwaWVsZXJ0ZXN0aWVzIHNpbmQgc28gZWluZSBTYWNoZS4gQWxzIGVyc3RlcyBtdXNzIG1hbiBrb21wZXRlbnRlIFNwaWVsZXIKK2ZpbmRlbiwgd2VsY2hlIGJlcmVpdCBzaW5kLCBkYXMgR2ViaWV0IHp1IHRlc3Rlbi4gRGllcyBpc3QgbmljaHQgZWluZmFjaCwKK2Rlbm4gZGllIHdpcmtsaWNoIGd1dGVuIFRlc3RlciBzaW5kIG9mdCBob2ZmbnVuZ3Nsb3MgdWViZXJiZWxlZ3QuIEhhdCBtYW4KK2VpbmVuIHdpbGxpZ2VuIFNwaWVsZXIgZ2VmdW5kZW4sIGtyZWllcnQgbWFuIHNpY2ggZWluZW4gVGVzdHNwaWVsZXIsIGluZGVtCittYW4gZWluZW4gbmV1ZW4gU3BpZWxlciBlaW5sb2dndCB1bmQgaW0gUF9URVNUUExBWUVSIGF1ZiBkZW4gZWlnZW5lbiBOYW1lbgorc2V0enQuIERhcyBrYW5uc3QgRHUgei5CLiBzbyBtYWNoZW46IAoreGNhbGwgdGVzdGktPlNldFByb3AoUF9URVNUUExBWUVSLCI8TWFnaWVyPiIpIHdvYmVpIDxNYWdpZXI+IERlaW4gTmFtZSBpc3QuCisKK0RhbmFjaCBkYXJmIG1hbiBpaG4gd2lsZCBpbiBHaWxkZW4gZWludHJldGVuIGxhc3NlbiwgaWhtIHNlaW5lIAorV2VydGUgc2V0emVuIHVuZCBpaG0gQXVzcnVlc3R1bmcgY2xvbmVuLiBFcyBnaWJ0IGVpbmlnZSBzY2hvZW5lCitUZXN0c3BpZWxlci1Ub29scywgbWl0IGRlbmVuIHNpY2ggVGVzdGllcyBSdWVzdHVuZ2VuIHNldHplbiB1bmQgc2ljaCBoZWlsZW4KK2tvZW5uZW4uCisKK0hhdCBtYW4gU3BpZWxlciB1bmQgVGVzdHNwaWVsZXIsIHNvIGtvbW10IG1hbiBhbiBkaWUgbGVnYWxlbiBQcm9ibGVtZS4gQWxsZXMKK3dpY2h0aWdlIGVyZmFlaHJ0IG1hbiBkdXJjaCAnaGlsZmUgdGVzdHNwaWVsZXInLiBEb3J0IHN0ZWh0LCBkYXNzCitUZXN0c3BpZWxlciBiZWkgRXJ6bWFnaWVybiBhbmdlbWVsZGV0IHdlcmRlbiBtdWVzc2VuLCB3ZWxjaGUgc2llIGRhbm4gaW4gZWluCitVZWJlcndhY2h1bmdzdG9vbCBlaW50cmFnZW4sIHNvIGRhc3Mgc2VpbmUgSGFuZGx1bmdlbiBnZWxvZ2d0IHdlcmRlbi4gCitUYXRzYWNoZSBpc3QsIGRhc3Mgc2ljaCBhYmVyIGthdW0gZWluZXIgc2VpbmUgVGVzdHNwaWVsZXIgYmVpIGVpbmVtCitFcnptYWdpZXIgYW5tZWxkZXQgdW5kIGRpZSBtZWlzdGVuIEVNcyBkYXMgc2VsYnN0IG5pY2h0IHR1bi4gKFRlc3RpZXMgbmV1ZXIKK0dpbGRlbiBtb2VnZW4gaGllciBlaW5lIEF1c25haG1lIGJpbGRlbikuCisKK0dlbmVyZWxsIGJlYWNodGUgZm9sZ2VuZGVzOiBNYWNoIGtlaW5lIFNwaWVsZXIgenUgVGVzdHNwaWVsZXJuLCBkZW5lbiBEdSBuaWNodAordHJhdXN0IG9kZXIgZGllIER1IG5pY2h0IGtlbm5zdC4gV2VubiBlaW4gU3BpZWxlciBtaXQgc2VpbmVuIFRvb2xzIGR1cmNocyBNRworbGFldWZ0IHVuZCBVbnNpbm4gYW5zdGVsbHQsIGJpc3QgRHUgbWl0IFNjaHVsZCwgZWdhbCBvYiBkZXIgVGVzdGllCithbmdlbWVsZGV0IGlzdCBvZGVyIG5pY2h0LiBXZW5uIER1IGVpbmVuIFNwaWVsZXIgZHVyY2ggZWluIEdlYmlldCBsYXVmZW4KK2xhZXNzdCwgYmV2b3IgZGllIEZQcyBlaW5nZXRyYWdlbiB3dXJkZW4sIGRhbm4gaXN0IGRhcyBuaWNodCBsZWdhbCwgYWJlciBlcword2lyZCBrZWluZXIgbWVja2Vybiwgd2VubiBEdSBpaG4gdWViZXJ3YWNoc3QgdW5kIHNvbWl0IGF1ZnBhc3N0LCBkYXNzIGVyCitrZWluZW4gVW5zaW5uIGF1c3NlcmhhbGIgZGVzIEdlYmlldHMgYW5zdGVsbHQuIFdlbm4gRHUgZWluZW4gU3BpZWxlciBkdXJjaAorZWluIEdlYmlldCBtaXQgRlBzIGxhdWZlbiBsYWVzc3QgdW5kIGRlciBTcGllbGVyIGRpZSB2b24gaWhtIGdlZnVuZGVuZW4gRlBzCitiZWtvbW1lbiB3aWxsLCBzbyBtdXNzdCBEdSBpaG4gYmVpIGVpbmVtIEVyem1hZ2llciBhbm1lbGRlbiwgZGVubiBGUHMga2FubgorbnVyIGVpbiBFcnptYWdpZXIgc2V0emVuLgorCitPaCwgdW5kIHNjaHJlaWJlIERpciBkaWUgTmFtZW4gdW5kIFBhc3N3b2VydGVyIERlaW5lciBUZXN0c3BpZWxlciBhdWYuIEZhbGxzCittYW4gbWVocmVyZSBoYXQsIHZlcmdpc3N0IG1hbiB2ZXJmbHVjaHQgc2NobmVsbCBkaWUgTmFtZW4gOi0pLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQIEggQSBTIEUgMworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGllIFJNcyBzY2hhdWVuIGFsbGUgRmlsZXMgYW4sIGRpZSBEdSBlcnpldWd0IGhhc3QuIERhbmFjaCB3ZXJkZW4gc2llIERpcgorZWluZSBMaXN0ZSB6dXJ1ZWNrc2NoaWNrZW4gbWl0IGFsbGVuIFByb2JsZW1mYWVsbGVuLCBkaWUgc2llIGdlZnVuZGVuIGhhYmVuLgorSmUgbmFjaCBVbWZhbmcgRGVpbmVzIEdlYmlldGVzIGthbm4gZGFzIG5hdHVlcmxpY2ggZXR3YXMgZGF1ZXJuLgorSGFzdCBEdSBkaWUgSW5mb3JtYXRpb25lbiB6dXJ1ZWNrYmVrb21tZW4sIGthbm5zdCBEdSBEaWNoIGFuIGRlbiBGZWluc2NobGlmZgorbWFjaGVuLiBJbiBkZXIgWndpc2NoZW56ZWl0IHNvbGx0ZXN0IER1IFBoYXNlIDQgdW5kIFBoYXNlIDUgZXJsZWRpZ2VuLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQIEggQSBTIEUgNAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmFsbHMgRHUgT2JqZWt0ZSBoYXN0LCBkaWUgZ2VuZWhtaWd1bmdzcGZsaWNodGlnIHNpbmQgKG1hbiBiYWxhbmNlKSwgc28gbXVzc3QKK0R1IGVpbmVuIEFudHJhZyBhbiBkYXMgQmFsYW5jZXRlYW0gc3RlbGxlbi4gSW4gZGVyIFp3aXNjaGVuemVpdCBzb2xsdGUgRGVpbgorTWFnaWVybGV2ZWwgc28gaG9jaCBzZWluLCBkYXNzIER1IGRlbiBCZWZlaGwgJ2dvdG8nIGJlbnV0emVuIGthbm5zdC4gRXMKK2dpYnQgZWluZW4gRXh0cmEgUmF1bSBmdWVyIGRpZSBCYWxhbmNlYW50cmFlZ2U6IAorZ290byAvcGxheWVycy9wYXJhY2Vsc3VzL29mZmljZQorRG9ydCBnaWJ0IGVzIGRhbm4gZWluZSBndXRlIEhpbGZlc2VpdGUuCitXaWNodGlnZXMgenVtIEFudHJhZzogbWFjaCBiaXR0ZSBuaWNodCBmdWVyIGplZGVzIE9iamVrdCBlaW5lbiBlaWdlbmVuCitBbnRyYWcsIHNvbmRlcm4gc2NocmVpYmUgRGlyIGVpbmVuIGdyb3NzZW4gQW50cmFnLCBpbiBkZW4gYWxsZSBEZWluZQorT2JqZWt0ZSByZWlua29tbWVuLCBkaWUgZGVyIEJhbGFuY2Ugdm9yZ2VsZWd0IHdlcmRlbiBtdWVzc2VuIChzaWVoZSBQaGFzZSAyOgorYXVzIGRlciBMaXN0ZSwgZGllIER1IGVyc3RlbGx0IGhhc3QpLiBEYXp1IHNvbGx0ZXN0IER1IGplZGVzIE9iamVrdCBrdXJ6IAorYmVzY2hyZWliZW4uIERhenUga29tbWVuIGRpZSB3aWNodGlnc3RlbiBXZXJ0ZSwgYmVpIFdhZmZlbiB6LkIuIFdhZmZlbmFydCwgCitQX1dDLCBQX05SX0hBTkRTLCBQX0RBTV9UWVBFLCBQX1dFSUdIVCwgdW5kIGVpbmUga3VyemUgQmVzY2hyZWlidW5nIGRlciAKK1NvbmRlcmZ1bmt0aW9uZW4uCitEYXMgQmV3aWxsaWdlbiBEZWluZXIgT2JqZWt0ZSBrYW5uIGVpbmUgemllbWxpY2ggbGFuZ2UgWmVpdCBpbiBBbnNwcnVjaAorbmVobWVuIChXb2NoZW4pLiBIaWVyIG5pY2h0IHVuZ2VkdWxkaWcgc2Vpbi4gRGFzIGRhdWVydCBzZWluZSBaZWl0LgorV2VubiBEdSBPYmpla3RlIHByb2dnc3QsIGRpZSBiZXN0aW1tdCBkdXJjaCBkaWUgQmFsYW5jZSBtdWVzc2VuLCBnaWIgZG9jaAorRGVpbmVtIFJNIGZydWVoemVpdGlnIEJlc2NoZWlkLCBkYXNzIGVyIHNpY2ggZGFzIGFuZ3Vja3QuIERhbm4ga2FubnN0IER1IAorZGllIFNhY2hlbiBiZXJlaXRzIGJlYW50cmFnZW4sIHVuZCBpbiBkZXIgWmVpdCwgYmlzIGRpZSBBbnRyYWVnZSAKK2Jld2lsbGlndCB3dXJkZW4sIGRpZSBhbmRlcmVuIERpbmdlIHByb2dnZW4uIERpZXNlciBBbnNhdHogZ2lsdCBhYmVyIGVoZXIKK2Z1ZXIgTWFnaWVyLCBkaWUgYmVyZWl0cyBldHdhcyBhbmdlc2NobG9zc2VuIGhhYmVuIHVuZCBuZXVlIEdlYmlldGUgCitlcnN0ZWxsZW4uIEZ1ZXIgZGVuIE5ldWxpbmcgaXN0IGVzIGVtcGZlaGxlbnN3ZXJ0ZXIsIGFsbGVzIGZlcnRpZ3p1bWFjaGVuCit1bmQgZGFubiB6dSBiZWFudHJhZ2VuLiBHcnVuZDogc2llaGUgb2JlbjogU28ga2FubnN0IER1IHZvcndlaXNlbiwgZGFzcyBEdQorRGlyIE11ZWhlIGdlZ2ViZW4gaGFzdCwgdG9sbGUgU2FjaGVuIGF1ZiBkaWUgQmVpbmUgenUgc3RlbGxlbiwgdW5kIG5pY2h0CitlaW5mYWNoIGVpbmVuIE5QQyBpbiBkaWUgV2VsdCBzdGVsbGVuIHdpbGxzdCwgbWl0IGh1bmRlcnRlbiB0b2xsZXIgT2JqZWt0ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUCBIIEEgUyBFIDUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dsZWljaHplaXRpZyBzb2xsdGVzdCBEdSBkaWUgRm9yc2NoZXJwdW5rdGUgYmVhbnRyYWdlbi4gV2VsY2hlciBFcnptYWdpZXIKK2RhZnVlciB6dXN0YWVuZGlnIGlzdCwgZmluZGVzdCBEdSBtaXQgJ21hbiBlcnptYWdpZXInIGhlcmF1cy4gRGllIAorRmF1c3RyZWdlbCBsYXV0ZXQ6IGV0d2EgMSBGUCBwcm8gMTAgUmFldW1lLiBWZXJtZWlkZSBGUCBmdWVyIERldGFpbHMsIGRhbWl0CitkaWUgJ1VudGVyc3VjaGUtU2tyaXB0ZScga2VpbmUgQ2hhbmNlIGhhYmVuLiBHZWggbGllYmVyIHNvIHZvcjogCitEZXRhaWw6ICdncmFzJyAtPiAnRHUgd3VlcmRlc3QgRGljaCBhbSBsaWVic3RlbiBpbnMgR3JhcyBsZWdlbi4nCitXZW5uIGRlciBTcGllbGVyIGRhbm4gZWludGlwcHQgJ2xpZWcgaW5zIGdyYXMnIG9kZXIgc28gYWVobmxpY2gsIGdpYiBkYWZ1ZXIKK2RlbiBGUCwgYWJlciBuaWNodCBmdWVycyBVbnRlcnN1Y2hlbiB2b20gR3Jhcy4KK1dvZnVlciBEdSBhbGxlcyBGb3JzY2hlcnB1bmt0ZSBlaW50cmFnZW4ga2FubnN0LCBlcmZhZWhyc3QgRHUgZHVyY2gKKydoaWxmZSBmb3JzY2hlcnB1bmt0ZScuCitNYWNoZSBlaW4gcGFhciBWb3JzY2hsYWVnZSwgdW5kIHNjaGljayBzaWUgZGFubiBkZW0genVzdGFlbmRpZ2VuIEVyem1hZ2llci4KK0RlciB3aXJkIGF1cyBEZWluZW4gVm9yc2NobGFlZ2VuIGVpbiBwYWFyIHJhdXNwaWNrZW4gdW5kIGFuc2NobGllc3Nlbi4KK0FiZXIgYmV2b3IgRHUgZGFzIHR1c3QsIG11c3MgRGVpbiBHZWJpZXQgendpbmdlbmQgc2Nob24gaW0gUmVnaW9uc3ZlcnplaWNobmlzIAorbGllZ2VuLCBkYW1pdCBrZWluZSBGUHMgYXVzIC9wbGF5ZXJzIGVpbmdldHJhZ2VuIHdlcmRlbi4KKworR2xlaWNoemVpdCBtaXQgZGVuIEZQcyBtZWxkZXN0IER1IGF1Y2ggTWluaVF1ZXN0cyB1bmQgWmF1YmVydHJhZW5rZQorYmVpIGRpZXNlbSBFcnptYWdpZXIgYW4uIER1IG11c3N0IGFuZ2ViZW4sIHdpZXZpZWxlIFN0dWZlbnB1bmt0ZSBkaWUKK01pbmlxdWVzdCBicmluZ2VuIHNvbGwgdW5kIGluIHdlbGNoZSBkZXIgMyBLYXRlZ29yaWVuIGVpbmZhY2gvbWl0dGVsL3NjaHdlcgorRGVpbmUgWmF1YmVydHJhZW5rZSBmYWxsZW4uCisKK0RlbmtlIGRhcmFuLCBzcGFldGVzdGVucyBqZXR6dCBkaWUgR2lsZGVucXVlc3RzIHVuZCBHaWxkZW5vYmpla3RlIGJlaSBkZW4KK0dpbGRlbm1hZ2llcm4gYW56dW1lbGRlbi4gVW5hbmdlbWVsZGV0ZXMgZGFyZiBuaWNodCBhbmdlc2NobG9zc2VuIHdlcmRlbi4KK1dlbmRlIERpY2ggYWxzbyBmcnVlaCBnZW51ZyBhbiBkaWVzZSBMZXV0ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUCBIIEEgUyBFIDYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lzdCBhbGxlcyB2b24gZGVyIEJhbGFuY2UgZ2VuZWhtaWd0IHdvcmRlbiwgdW5kIHNpbmQgZGllIEZQIGFuZ2VzY2hsb3NzZW4sCitzb2xsdGVzdCBEdSBEZWluZSBSTXMgaW5mb3JtaWVyZW4uIEZhbGxzIERlaW4gR2ViaWV0IGltbWVyIG5vY2ggaW0KK0hlaW12ZXJ6ZWljaG5pcyBsaWVndCwgd2lyZCBlcyBudW4gaW4gZGVpbiBSZWdpb25zdmVyemVpY2huaXMKK3ZlcnNjaG9iZW4uIER1IHN0ZWhzdCBudW4ga3VyeiB2b3IgZGVtIEFuc2NobGllc3Nlbi4gVWViZXJsZWcgRGlyIGRvY2gKK3NjaG9uIGVpbmUgbmV0dGUgQm90c2NoYWZ0LCBkaWUgRHUgZGFubiBpbiBkZXIgTVBBIHZlcm9lZmZlbnRsaWNoZW4gd2lyc3QuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1AgSCBBIFMgRSA3CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitHUkFUVUxBVElPTiEgRHUgaGFzdCBlcyBnZXNjaGFmZnQhIEFiZXIgamV0enQgbmljaHQgYXVmIGRlbiBMb2hyYmVlcmVuCithdXNydWhlbi4gRGllIGVyc3RlbiBTcGllbGVyIHdlcmRlbiBzaWNoIGVpbmZpbmRlbiwgdW5kIHZpZWxlIHNpbmQKK3dhbmRlbG5kZSBLb252ZXJzYXRpb25zbGV4aWtvbnMsIGRpZSBhdWNoIGRlbiBrbGVpbnN0ZW4gR3JhbW1hdGlrZmVobGVyIAoraW4gRGVpbmVuIEJlc2NocmVpYnVuZ2VuIGZpbmRlbi4gQW5kZXJlIFNwaWVsZXIgd2VyZGVuIERpciBuZXVlIFZvcnNjaGxhZWdlCitmdWVyIGNvbW1hbmRzIHp1c2VuZGVuLCBkaWUgaW4gZGllIGVudHNwcmVjaGVuZGVuIFJhZXVtZSBwYXNzZW4gd3VlcmRlbi4KK0luIC9sb2cvcmVwb3J0LzxtYWdpZXJuYW1lPi5yZXAgd2lyZCBhdXRvbWF0aXNjaCBEZWluIFJlcG9ydC1GaWxlIGVyemV1Z3QsCitpbiBkYXMgZGllIFNwaWVsZXIgZGllIGdlZnVuZGVuZW4gVHlwb3MsIEJ1Z3MgdW5kIHNvbnN0aWdlIElkZWVuIHJlaW5zY2hyZWliZW4uCitTY2hhdSBEaXIgRGVpbiBSZXBmaWxlIGFuLCB1bmQgYXJiZWl0ZSBlcyBhYiBzbyBndXQgZXMgZ2VodC4KK051ciBzbyB3aXJkIGRhcyBHZWJpZXQgenUgZWluZW0gd2lya2xpY2ggJ2dlcGZsZWd0ZW4nIEdlYmlldC4KK0RlbmtlIGRhcmFuLCBkYXMgcmVwLUZpbGUgbmFjaCBkZW0gQWJhcmJlaXRlbiB6dSBsb2VzY2hlbiwgc29uc3Qgd2lyZAorZXMgenUgdm9sbC4KKworCitTSUVIRSBBVUNIOgorICAgIGJhbGFuY2UsIGhpbGZlIG1hZ2llciwgL2RvYy93aXovCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2OjAwIDIwMDMtMDItMjIgYnkgSHVtbmkKZGlmZiAtLWdpdCBhL2RvYy93aXovbGljaHQgYi9kb2Mvd2l6L2xpY2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OTVhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2xpY2h0CkBAIC0wLDAgKzEsMzQgQEAKK0VpbmUgWnVzYW1tZW5mYXNzdW5nIGFsbGVyIExpY2h0cHJvcGVydGllcyAoZnVlciBnZW5hdWVyZXMgc2llaGUgbWFucGFnZXMpCisKK1BfTElHSFQgICAgICAgICAgICAgIC0gZ2lidCBhbiB3aWUgc3RhcmsgZWluZSBMaWNodHF1ZWxsZSBzZWxic3QgbGV1Y2h0ZXQuCisKK1BfVE9UQUxfTElHSFQgICAgICAgIC0gZ2lidCBkYXMgTGljaHRsZXZlbCBhbiwgZGFzIHZvbiBlaW5lbSBPYmpla3QgYXVzZ2VodCwKKyAgICAgICAgICAgICAgICAgICAgICAgZGllc2VzIGthbm4gIT0gUF9MSUdIVCBzZWluLCB6LkIuIHdlaWwgZWluZSBGYWNrZWwgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgZWluZW0gUGFrZXQgbGllZ3QuCisKK1BfSU5UX0xJR0hUICAgICAgICAgIC0gTGljaHRsZXZlbCBpbiBlaW5lbSBPYmpla3QsIHouQi4gZWluIFJhdW0KKyAgICAgICAgICAgICAgICAgICAgICAgZ2lidCBhbiB3aWUgZ3V0IGRpZXNlcyBPYmpla3QgYXVzZ2VsZXVjaHRldCBpc3QuCisKK1BfUExBWUVSX0xJR0hUICAgICAgIC0gZ2lidCBhbiBtaXQgd2VsY2hlbSBMaWNodGxldmVsIGRlciBTcGllbGVyIGdlcmFkZSBzaWVodAorCitQX0xJR0hUX01PRElGSUVSICAgICAtIHZlcmFlbmRlcnQgZGVuIExpY2h0bGV2ZWwgZGVyIHZvbiBlaW5lbSBTcGllbGVyCisgICAgICAgICAgICAgICAgICAgICAgIHdhaHJnZW5vbW1lbiB3aXJkLCB6LkIuIGVpbmUgU29ubmVuYnJpbGxlCisKK1BfTElHSFRfQUJTT1JQVElPTiAgIC0gV2lldmllbCBMaWNodCB3aXJkIHZvbSBSYXVtIGdlc2NobHVja3Q/IHdpcmt0IHNpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgZGlyZWt0IGF1ZiBQX0lOVF9MSUdIVCBkZXMgUmF1bWVzIGF1cy4gQW5kZXJlIFNwaWVsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgcHJvZml0aWVyZW4gdm9uIGRlbiBMaWNodHF1ZWxsZW4gaWhyZXIgTWl0c3BpZWxlcgorICAgICAgICAgICAgICAgICAgICAgICB3ZW5pZ2VyIGJlaSBob2VoZXJlbiBXZXJ0ZW4uIERlZmF1bHQ6IDEuCisKK1BfTElHSFRfVFJBTlNQQVJFTkNZIC0gV2lldmllbCBMaWNodCBzY2hsdWNrdCBlaW4gQ29udGFpbmVyIHVuZCB3aWV2aWVsCisgICAgICAgICAgICAgICAgICAgICAgIExpY2h0IGRyaW5ndCBuYWNoIGF1c3Nlbi4gRGVmYXVsdHRyYW5zcGFyZW56OiAyCisKK0hpbndlaXM6IEFsbGUgT2JqZWt0ZSBtaXQgTGljaHRsZXZlbCA8MCB1bmQgPjIgc293aWUgYWxsZSBPYmpla3RlLCBkaWUKKyAgICAgICAgIFBfTElHSFRfTU9ESUZJRVIgb2RlciBDbG9zdXJlcyBzZXR6ZW4gc2luZCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWchCisgICAgICAgICBEYWZ1ZXIgc2luZCBkaWUgUmVnaW9uc21hZ2llciB6dXN0YWVuZGlnLgorCisKK1NJRUhFIEFVQ0g6IFBfTElHSFQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAyMDAyLTExLTIxLCAxNy4zMCB2b24gWm9vawpkaWZmIC0tZ2l0IGEvZG9jL3dpei9sdXBlIGIvZG9jL3dpei9sdXBlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZTIzZmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L2x1cGUKQEAgLTAsMCArMSwyMDkgQEAKK0FMTEdFTUVJTkVTOgorCURpZSBMdXBlIGJlbnV0enQgZWluZW4gU3RhcGVsIChTdGFjayksIHVtIE9iamVrdGUgenUgYmVhcmJlaXRlbi4KKwlFaW5pZ2UgQmVmZWhsZSBzY2hpZWJlbiBPYmpla3RlIGF1ZiBkZW4gU3RhcGVsLCBhbmRlcmUgd2llZGVydW0KKwlob2xlbiBzaWUgd2llZGVyIHZvbSBTdGFwZWwgaGVydW50ZXIgdW5kIGJlbnV0emVuIHNpZSBmdWVyIGRpZQorCXZlcnNjaGllZGVuc3RlbiBad2Vja2UuCisJTWFuIGthbm4gaW4gZWluZXIgWmVpbGUgbWVocmVyZSBLb21tYW5kb3MgZ2xlaWNoemVpdGlnIGFuZ2ViZW4KKwkoZHVyY2ggTGVlcnplaWNoZW4gZ2V0cmVubnQpLgorCUVpbmUgWmVpbGUgd2lyZCBpbW1lciB2b24gbGlua3MgbmFjaCByZWNodHMgYWJnZWFyYmVpdGV0LgorCitTQ0hSRUlCV0VJU0VOOgorCTxhcmc+CS0gRWluZSBSZWloZSB2b24gWmVpY2hlbiwgZGllIHdlZGVyIExlZXJ6ZWljaGVuIG5vY2ggUHVua3RlCisJCSAgKC4pIGVudGhhZWx0LiBGYWxscyBkb2NoIExlZXJ6ZWljaGVuIG9kZXIgUHVua3RlIGluIDxhcmc+CisJCSAgYXVmdGF1Y2hlbiwgbXVzcyBtYW4gZGllIFplaWNoZW5rZXR0ZSB6d2lzY2hlbiAiLi4uIiwKKwkJICAnLi4uJyBvZGVyIHwuLi58IGVpbnNjaGxpZXNzZW4uCisJPG5yPgktIEVpbmUgKHBvc2l0aXZlIG9kZXIgbmVnYXRpdmUpIGdhbnplIFphaGwuCisJPGZpbGVuYW1lPiAtIEVpbiBEYXRlaW5hbWUuIEZ1ZXIgaWhuIGdpbHQgZGFzIEdsZWljaGUgd2llIGZ1ZXIgPGFyZz46CisJCSAgV2VubiBlciBQdW5rdGUgZW50aGFlbHQsIG11c3MgbWFuIGlobiB6d2lzY2hlbiAiLi4uIiwKKwkJICAnLi4uJyBvZGVyIHwuLi58IGVpbnNjaGxpZXNzZW4uCisJCSAgRXMgc2luZCBhbGxlIFZhcmlhdGlvbmVuIG1vZWdsaWNoLCBkaWUgbWFuIGF1Y2ggYXVzIGRlcgorCQkgIE1hZ2llcnNoZWxsIGtlbm50OiBhYnNvbHV0ZSBEYXRlaW5hbWVuIChiZWdpbm5lbiBtaXQgIi8iKSwKKwkJICBEYXRlaW5hbWVuIHJlbGF0aXYgenVtIGVpZ2VuZW4gSG9tZXZlcnplaWNobmlzICgifi8iKQorCQkgIG9kZXIgenVtIEhvbWV2ZXJ6ZWljaG5pcyBlaW5lcyBhbmRlcmVuIE1hZ2llcnMgKCJ+bmFtZS8iKSwKKwkJICBEYXRlaW5hbWVuIGluIGVpbmVyIFJlZ2lvbiAoIityZWdpb24vIikgdW5kIERhdGVpbmFtZW4KKwkJICByZWxhdGl2IHp1bSBha3R1ZWxsZW4gVmVyemVpY2huaXMgKGFsbGVzIGFuZGVyZSA7KS4KKwk8ZnVuYz4JLSBOYW1lIGVpbmVyIExQQy1GdW5rdGlvbi4KKwlUT1MJLSBEYXMgT2JqZWt0IGdhbnogb2JlbiBhdWYgZGVtIFN0YXBlbCAoVG9wIE9mIFN0YWNrKS4KKworREVSIFNUQVBFTDoKKwlCZWkgZGVtIFN0YXBlbCBoYW5kZWx0IGVzIHNpY2ggdW0gZWluZW4gTElGTy1TdGFwZWwgKExhc3QgSW4gLSBGaXJzdAorCU91dCksIGQuaC4gZGFzIE9iamVrdCwgZGFzIHp1bGV0enQgYXVmIGRlbiBTdGFwZWwgZ2VzY2hvYmVuIHd1cmRlLAorCXdpcmQgYWxzIGVyc3RlcyBiZWFyYmVpdGV0LgorCUJlaSBkZXIgQmVhcmJlaXR1bmcgd2lyZCBkZXIgVE9TIGluIGRlciBSZWdlbCB2b20gU3RhcGVsIGVudGZlcm50CisJKEF1c25haG1lbjogPSwgc3RrIHVuZCAjKSwgZGVyIFN0YXBlbCB3aXJkIGFsc28gaW0gTGF1ZmUgZGVyIFplaXQKKwl3aWVkZXIga2xlaW5lci4KKwlEZXIgU3RhcGVsIGthbm4gbWF4aW1hbCB6ZWhuIEVsZW1lbnRlIGF1Zm5laG1lbi4gRGllc2VzIExpbWl0IHdpcmQKKwltYW4gYmVpICJub3JtYWxlbSBCZXRyaWViIiBhbGxlcmRpbmdzIHNlbHRlbiBlcnJlaWNoZW4uCisJU29sbHRlIGVzIHRyb3R6ZGVtIGVpbm1hbCBlbmcgd2VyZGVuLCBzdGVoZW4gZWluZW0gbm9jaCB6ZWhuCisJVmFyaWFibGVuIHp1ciBWZXJmdWVndW5nLCBpbiBkZW5lbiBtYW4genVzYWV0emxpY2ggT2JqZWt0ZSAodm9tCisJU3RhcGVsKSBhYmxlZ2VuIGthbm4uCisKK0JFRkVITEU6CisJRXMgZ2lidCBkcmVpIHVudGVyc2NoaWVkbGljaGUgQmVmZWhsc2dydXBwZW46CisJYSkgQmVmZWhsZSwgZGllIGVpbiBPYmpla3QgYXVmIGRlbiBTdGFwZWwgc2NoaWViZW47CisJYikgQmVmZWhsZSwgZGllIG1pdCBPYmpla3RlbiBhdWYgZGVtIFN0YXBlbCBhcmJlaXRlbjsKKwljKSBCZWZlaGxlLCBkaWUgb2huZSBkZW4gU3RhcGVsIGF1c2tvbW1lbi4KKwlFaW5pZ2UgQmVmZWhsZSBzZXR6ZW4gdm9yYXVzLCBkYXMgZGVyIFRPUyBlaW4gTGViZXdlc2VuIG9kZXIgZ2FyIGVpbgorCVNwaWVsZXJvYmpla3QgaXN0OyBhbmRlcmUgQmVmZWhsZSBzaW5kIGVyc3QgYWIgZWluZW0gYmVzdGltbXRlbgorCU1hZ2llcmxldmVsIHp1Z2FlbmdsaWNoLiBEaWVzIGlzdCBiZWkgZGVuIGVudHNwcmVjaGVuZGVuIEJlZmVobGVuCisJamV3ZWlscyB2ZXJtZXJrdC4KKworICAgIERpZXNlIEJlZmVobGUgc2NoaWViZW4gZWluIG5ldWVzIE9iamVrdCBhdWYgZGVuIFN0YXBlbDoKKwljcmVhdCA8ZmlsZW5hbWU+IE1hY2h0IGRhcyBHbGVpY2hlIHdpZSAnbmV3JywgZGFzIE9iamVrdCB3aXJkIGFsbGVyLQorCQkJZGluZ3MgbmljaHQgaW4gRGVpbiBJbnZlbnRvcnkgZ2VzdGVja3QuCisJaGVyZQkJRGFzIE9iamVrdCwgaW4gZGVtIG1hbiBnZXJhZGUgc3RlaHQsIGF1ZiBkZW4gU3RhcGVsCisJCQlzY2hpZWJlbi4KKwlsdiA8YXJnPglTY2hpZWJ0IGRhcyBMZWJld2VzZW4gbWl0IGRlbSBsaXZpbmdfbmFtZSA8YXJnPiBhdWYKKwkJCWRlbiBTdGFwZWwuIEFDSFRVTkchIERhcyBtdXNzIGRhbm4gbmljaHQgdW5iZWRpbmd0CisJCQlkYXMgTGViZXdlc2VuIHNlaW4sIGRhcyBtYW4gZG9ydCBlaWdlbnRsaWNoIGhhYmVuCisJCQl3aWxsISBFcyB3aXJkIGVpbmZhY2ggZGFzIGVyc3RlIE9iamVrdCBnZW5vbW1lbiwKKwkJCWRlc3NlbiBsaXZpbmdfbmFtZSBwYXNzdCEgV2VubiBtYW4gZXR3YXMgbWl0IGVpbmVtCisJCQlOUEMgdm9yaGF0LCBkZXIgaW0gZ2xlaWNoZW4gUmF1bSBzdGVodCwgc3ByaWNodCBtYW4KKwkJCWlobiBiZXNzZXIgbWl0IGhlcmUubmFtZSBhbi4KKwltZQkJU2ljaCBzZWxic3QgYXVmIGRlbiBTdGFwZWwgc2NoaWViZW4uCisJbmV3IDxmaWxlbmFtZT4JQ2xvbmVkIGRhcyBtaXQgPGZpbGVuYW1lPiBhbmdlZ2ViZW5lIE9iamVrdCB1bmQKKwkJCXNjaGllYnQgZXMgYXVmIGRlbiBTdGFwZWwuIEFuc2NobGllc3NlbmQgYmVmaW5kZXQgZXMKKwkJCXNpY2ggaW4gRGVpbmVtIEludmVudG9yeS4KKwlvYiA8ZmlsZW5hbWU+CUxhZWR0IGRhcyBPYmpla3QsIGRhcyBtaXQgPGZpbGVuYW1lPiBhbmdlZ2ViZW4gaXN0LAorCQkJdW5kIHNjaGllYnQgZXMgYXVmIGRlbiBTdGFwZWwuCisJcGwgPGFyZz4JU2NoaWVidCBkYXMgU3BpZWxlcm9iamVrdCBtaXQgZGVtIE5hbWVuIDxhcmc+IGF1ZiBkZW4KKwkJCVN0YXBlbC4KKwkJCUVzIHdlcmRlbiBhdWNoIG5ldHp0b3RlIFNwaWVsZXIgYmVydWNrc2ljaHRpZ3QuCisJcHVzaCA8ZmlsZW5hbWU+IFNjaGllYnQgZGFzIE9iamVrdCwgZGFzIG1pdCA8ZmlsZW5hbWU+IGFuZ2VnZWJlbiBpc3QsCisJCQlhdWYgZGVuIFN0YXBlbC4KKwk8ZmlsZW5hbWU+CU1hY2h0IGRhcyBnbGVpY2hlIHdpZSAnb2InLCBmYWxscyA8ZmlsZW5hbWU+IG1pdCAiLyIKKwkJCW9kZXIgIn4iIGJlZ2lubnQuCisKKyAgICBEaWUgbmFlY2hzdGVuIEJlZmVobGUgc2NoYWx0ZW4gT3B0aW9uZW4gZGVyIEx1cGUgYW4vYXVzL3VtOgorCWRlc2MJCURpZSB6dXNhZXR6bGljaGUgQW5nYWJlIGRlciBLdXJ6YmVzY2hyZWlidW5nIGRlcworCQkJYWt0dWVsbGVuIE9iamVrdGVzIHdpcmQgdW50ZXJkcnVlY2t0LgorCXJlYwkJU2NoYWx0ZXQgaW4gZGVuICJyZWt1cnNpdiItTW9kdXMgdW0uIERpZXNlciBNb2R1cworCQkJd2lyZCB2b24gZm9sZ2VuZGVuIEJlZmVobGVuIGdlbnV0enQ6CisJCQknaW52JywgJ2NsbicgdW5kICdjbG5vZicKKwkJCU5hY2ggQXVzZnVlaHJ1bmcgZWluZXMgZGllc2VyIEJlZmVobGUgd2lyZCBkZXIKKwkJCSJyZWt1cnNpdiItTW9kdXMgYXV0b21hdGlzY2ggd2llZGVyIGFiZ2VzdGVsbHQuCisJbm9yZWMJCVN0ZWxsdCBkZW4gInJla3Vyc2l2Ii1Nb2R1cyAidm9uIEhhbmQiIGFiLgorCisgICAgRGllc2UgQmVmZWhsZSBzY2hpZWJlbiBlYmVuZmFsbHMgZWluIG5ldWVzIE9iamVrdCBhdWYgZGVuIFN0YXBlbC4gU2llCisgICAgYXJiZWl0ZW4gZGFiZWkgYWxsZXJkaW5ncyByZWxhdGl2IHp1bSBUT1MuIE1hbiBtdXNzIGFsc28gc2Nob24gbWluZGVzdGVucworICAgIGVpbiBPYmpla3QgYXVmIGRlbiBTdGFwZWwgZ2VzY2hvYmVuIGhhYmVuLiBEZXIgYWx0ZSBUT1Mgd2lyZCBkYWJlaSBpbiBkZXIKKyAgICBSZWdlbCBlbnRmZXJudC4KKwkuPG5yPgkJU2NoaWVidCBkYXMgPG5yPnRlIE9iamVrdCBpbSBJbnZlbnRvcnkgZGVzIFRPUyBhdWYgZGVuCisJCQlTdGFwZWwuCisJLjxhcmc+CQlTY2hpZWJ0IGRhcyBPYmpla3QgbWl0IGRlciBJRCA8YXJnPiBpbSBJbnZlbnRvcnkgZGVzCisJCQlUT1MgYXVmIGRlbiBTdGFwZWwuCisJPDxucj4JCVNjaGllYnQgZGllIFZhcmlhYmxlIDxucj4gYXVmIGRlbiBTdGFwZWwuIEFscyA8bnI+CisJCQlzaW5kIFdlcnRlIHp3aXNjaGVuIDAgdW5kIDkgbW9lZ2xpY2guCisJQDxucj4JCVNjaGllYnQgZGFzIDxucj50ZSBPYmpla3Qgdm9uIG9iZW4gbm9jaCBlaW5tYWwgYXVmIGRlbgorCQkJU3RhcGVsLiBEZXIgYWx0ZSBUT1MgaGF0IGRpZSBOdW1tZXIgMC4gV2VkZXIgZGVyIGFsdGUKKwkJCVRPUyBub2NoIGRhcyB2ZXJzY2hvYmVuZSBPYmpla3Qgd2VyZGVuIHZvbSBTdGFwZWwgZW50LQorCQkJZmVybnQuCisJCQlAMSBpc3QgYW5hbG9nIHp1ICdvdmVyJy4KKwljb3B5CQlMZWd0IGVpbmUgS29waWUgZGVzIFRPUyBhbiAoaW5rbC4gYWxsZXIgUHJvcGVydHl3ZXJ0ZSkKKwkJCXVuZCBzY2hpZWJ0IGRpZXNlIEtvcGllIGF1ZiBkZW4gU3RhcGVsLiBEaWUgS29waWUKKwkJCWJlZmluZGV0IHNpY2ggZGFuYWNoIGluIERlaW5lbSBJbnZlbnRvcnkuCisJZHVwCQlTY2hpZWJ0IGRlbiBUT1MgZG9wcGVsdCBhdWYgZGVuIFN0YXBlbC4KKwllbnYJCVNjaGllYnQgZGFzIE9iamVrdCwgaW4gZGVtIHNpY2ggZGVyIFRPUyBiZWZpbmRldCwgYXVmCisJCQlkZW4gU3RhcGVsLgorCW92ZXIJCVNjaGllYnQgZGFzIE9iamVrdCwgZGFzIHNpY2ggdW50ZXIgZGVtIFRPUyBiZWZpbmRldCwKKwkJCW5vY2htYWwgYXVmIGRlbiBTdGFwZWwuIERhYmVpIHdlcmRlbiB3ZWRlciBkZXIgYWx0ZQorCQkJVE9TIG5vY2ggZGFzIE9iamVrdCB1bnRlciBpaG0gZW50ZmVybnQuCisJcmVzdWx0CQlXZW5uIGluIGVpbmVtIE9iamVrdCBlaW5lIEZ1bmt0aW9uIGF1ZmdlcnVmZW4gd3VyZGUsCisJCQl1bmQgZGllc2UgRnVua3Rpb24gd2llZGVyIGVpbiBPYmpla3QgenVydWVja2dlZ2ViZW4KKwkJCWhhdCwgc28gd2lyZCBkaWVzZXMgT2JqZWt0IGF1ZiBkZW4gU3RhcGVsIGdlc2Nob2Jlbi4KKwlzd2FwCQlUYXVzY2h0IFRPUyB1bmQgZGFzIGRhcnVudGVyIGxpZWdlbmRlIEVsZW1lbnQgZ2VnZW4tCisJCQllaW5hbmRlciBhdXMuCisKKyAgICBEaWUgbmFlY2hzdGVuIEJlZmVobGUgYXJiZWl0ZW4gbWl0IGRlbiBhdWYgZGVtIFN0YXBlbCBsaWVnZW5kZW4gT2JqZWt0ZW4uCisgICAgRGFiZWkgd2VyZGVuIGRpZSBiZWFyYmVpdGV0ZW4gT2JqZWt0ZSBpbiBkZXIgUmVnZWwgdm9tIFN0YXBlbCBlbnRmZXJudC4KKwk+PG5yPgkJU3BlaWNoZXJ0IGRlbiBUT1MgaW4gZGVyIFZhcmlhYmxlbiA8bnI+LiBBbHMgPG5yPgorCQkJc2luZCBXZXJ0ZSB6d2lzY2hlbiAwIHVuZCA5IG1vZWdsaWNoLgorCT0JCVplaWd0IGRlbiBUT1MuIERpZXNlciBibGVpYnQgZGFiZWkgdW52ZXJhZW5kZXJ0LgorCSMJCURlciBTdGFjayBibGVpYnQgdWViZXIgZGFzIG5hZWNoc3RlIEtvbW1hbmRvIGhpbmF1cworCQkJZXJoYWx0ZW4uCisJaW52CQlaZWlndCBkYXMgSW52ZW50b3J5IGRlcyBUT1MuIERlciBUT1MgYmxlaWJ0IGRhYmVpCisJCQl1bnZlcmFlbmRlcnQuCisJY2xuCQlFbnRmZXJudCBhbGxlIE9iamVrdGUgYXVzIGRlbSBJbnZlbnRvcnkgZGVzIFRPUy4gRXMKKwkJCXdlcmRlbiBhbGxlcmRpbmdzIGtlaW5lIFNwaWVsZXIgZW50ZmVybnQuCisJY2xub2YgPGFyZz4JRW50ZmVybnQgYWxsZSBPYmpla3RlLCBkaWUgYXVmIGRpZSBJRCA8YXJnPiBhbnNwcmUtCisJCQljaGVuLCBhdXMgZGVtIEludmVudGFyIGRlcyBUT1MuCisJY2xyCQlMb2VzY2h0IGRlbiBnZXNhbXRlbiBTdGFjay4KKwlEZXN0CQlEZXIgVE9TIHdpcmQgemVyc3RvZXJ0LiBEYXMgZ2VodCBhbGxlcmRpbmdzIE5JQ0hULAorCQkJd2VubiBkZXIgVE9TIGVpbiBTcGllbGVyb2JqZWt0IG9kZXIgZGllIEx1cGUgc2VsYnN0CisJCQlpc3QuCisJZGVzdAkJV2llIERlc3QsIGFsbGVyZGluZ3Mgd2lyZCB6dWVyc3QgVE9TLT5yZW1vdmUoKSBhdWYtCisJCQlnZXJ1ZmVuLCB1bSBkZW0gVE9TIGRpZSBNb2VnbGljaGtlaXQgenUgZ2ViZW4sIG5vY2gKKwkJCWhpbnRlciBzaWNoIGF1Znp1cmFldW1lbi4KKwlkaW5mbwkJR2lidCBlaW5pZ2UgR2FtZURyaXZlci1pbnRlcm5lIEluZm9ybWF0aW9uZW4gd2llIHpCLgorCQkJZGllIFplaXQgZGVzIG5hZWNoc3RlbiByZXNldCgpLUF1ZnJ1ZnMgb2RlciBkaWUgYW4tCisJCQlnZXNhbW1lbHRlIGV2YWxjb3N0IGRlcyBUT1MgYXVzLgorCWRpc2NvCQlVbnRlcmJyaWNodCBkaWUgVmVyYmluZHVnIGRlcyBUT1MgKG11c3MgZWluIGFrdGl2ZXIKKwkJCVNwaWVsZXIgc2VpbikgenVtIE1HIChkaXNjb25uZWN0KS4KKwlobAkJWmVpZ3QgZGllIEhpc3RvcnlsaXN0ZSBkZXMgVE9TIGFuIChoaWVyYmVpIG11c3MgZXMKKwkJCXNpY2ggdW0gZWluZW4gU3BpZWxlciBoYW5kZWxuKS4KKwkJCURpZXNlciBCZWZlaGwgc3RlaHQgYWIgRUxERVJfTFZMICg1MCkgenVyIFZlcmZ1ZWd1bmcuCisJCQkhISFGdWVyIGRpZSBCZW51dHp1bmcgZ2lsdCBkYXMgR2xlaWNoZSB3aWUgZnVlciBkYXMKKwkJCVNub29wZW4hISEKKwlpZGxlCQlHaWJ0IGFuLCB3aWUgbGFuZ2UgZGVyIFRPUyBzY2hvbiBpZGxldC4gKERlciBUT1MKKwkJCXNvbGx0ZSBkYWJlaSBuYXR1ZXJsaWNoIGVpbiBTcGllbGVyIHNlaW4pLgorCWluZm8JCUdpYnQgZWluaWdlIEluZm9ybWF0aW9uZW4gdWViZXIgZGVuIFRPUyBhdXMuCisJaW5oZXJpdF9saXN0CUdpYnQgZGVuIFZlcmVyYnVuZ3NiYXVtIGRlcyBUT1MgYXVzIChhbGxlcmRpbmdzIG5pY2h0CisJCQlzZWhyIGJhdW1mb2VybWlnIDspCisJaW52CQlaZWlndCBkYXMgSW52ZW50b3J5IGRlcyBUT1MgYW4uCisKKwltYWtlCQlGdWVocnQgZWluIFVwZGF0ZSBkZXMgVE9TIGR1cmNoLiBHZWh0IG5pY2h0IGJlaQorCQkJU3BpZWxlcm4hIERhZnVlciBnaWJ0IGVzIHJlbmV3LgorCW1pbmZvCQlHaWJ0IGVpbmlnZSBJbmZvcm1hdGlvbmVuIHVlYmVyIGRlbiBTcGVpY2hlcnZlcmJyYXVjaAorCQkJZGVzIFRPUyBhdXMuCisJbW92ZSwgbW92LCBtbwlEYXMgT2JqZWt0LCBkYXMgdW50ZXIgZGVtIFRPUyBzdGVodCwgd2lyZCBpbiBkZW4gVE9TCisJCQlnZW1vdmVkLiBCZWlkZSBPYmpla3RlIHdlcmRlbiBkYWJlaSB2b20gU3RhcGVsIGVudC0KKwkJCWZlcm50LgorCV9tb3ZlLCBfbW92LCBfbW8sIF9tdgorCQkJRGFzIE9iamVrdCwgZGFzIHVudGVyIGRlbSBUT1Mgc3RlaHQsIHdpcmQgaW4gZGVuIFRPUworCQkJZ2Vtb3ZlZCwgb2huZSBkYXNzIGRvcnQgaW5pdCgpIGF1ZmdlcnVmZW4gd2lyZC4gQmVpZGUKKwkJCU9iamVrdGUgd2VyZGVuIGRhYmVpIHZvbSBTdGFwZWwgZW50ZmVybnQuCisJCQlEaWVzZXIgQmVmZWhsIHN0ZWh0IGFiIEFSQ0hfTFZMICg2MCkgenVyIFZlcmZ1ZWd1bmcuCisJcG9wCQlFbnRmZXJudCBkZW4gVE9TLgorCXJlbmV3CQlBZWhubGljaCB3aWUgJ21ha2UnLCBkZXIgVE9TIG11c3MgYWxsZXJkaW5ncyBlaW4KKwkJCVNwaWVsZXIgc2Vpbi4gQUNIVFVORyEgTWFuIHNvbGx0ZSBuaWNodCAiZWluZmFjaCBzbyIKKwkJCVNwaWVsZXIgJ3JlbmV3J2VuLCBzb25kZXJuIG51ciBkYW5uLCB3ZW5uIGVzIHdpcmtsaWNoCisJCQlnZXJlY2h0ZmVydGlndCBpc3QhCisJc2Nhbiwgc2MJS29tYmluaWVydCAnc3RhdCcgdW5kIGZpbmdlci4gRGVyIFRPUyBtdXNzIGVpbiBMZWJlLQorCQkJd2VzZW4gc2Vpbi4KKwlzdGF0CQlHaWJ0IEluZm9ybWF0aW9uZW4gdWViZXIgWnVzdGFuZCwgQXVzcnVlc3R1bmcsIGdlLQorCQkJbG9lc3RlIFF1ZXN0cyBldGMuIGRlcyBUT1MgYXVzLiBEZXIgVE9TIG11c3MgZGFiZWkKKwkJCWVpbiBMZWJld2VzZW4gc2Vpbi4KKwlzdGsJCVplaWd0IGRlbiBnZXNhbXRlbiBTdGFjay4gRGllc2VyIGJsZWlidCBkYWJlaSB1bnZlci0KKwkJCWFlbmRlcnQuCisJWzxmdW5jPl0JUnVmdCBpbSBUT1MgZGllIEZ1bmt0aW9uIDxmdW5jPiBvaG5lIFBhcmFtZXRlciBhdWYuCisJCQlGYWxscyBkaWVzZSBGdW5rdGlvbiBlaW4gT2JqZWt0IHp1cnVlY2tnaWJ0LCBrYW5uIG1hbgorCQkJZGllc2VzIGFuc2NobGllc3NlbmQgbWl0IHJlc3VsdCBhdWYgZGVuIFN0YXBlbAorCQkJc2NoaWViZW4uCisJWzxmdW5jPiA8YXJnMT4gLi4uIDxhcmduPl0KKwkJCVJ1ZnQgaW0gVE9TIGRpZSBGdW5rdGlvbiA8ZnVuYz4gbWl0IGRlbiBQYXJhbWV0ZXJuCisJCQk8YXJnMT4gYmlzIDxhcmduPiBhdWYuIERpZSBQYXJhbWV0ZXIgc2luZCBtaXQgTGVlci0KKwkJCXplaWNoZW4genUgdHJlbm5lbi4gRW50aGFsdGVuIGRpZSBQYXJhbWV0ZXIgc2VsYnN0CisJCQlMZWVyemVpY2hlbiwgc28gc2luZCBzaWUgaW4gIi4uLiIsICcuLi4nIG9kZXIgfC4uLnwKKwkJCWVpbnp1c2NobGllc3Nlbi4KKwkJCU1pdHRlbHMgQDxucj4ga2FubiBtYW4gYXVjaCBPYmpla3RlLCBkaWUgc2ljaCBhdWYgZGVtCisJCQlTdGFwZWwgYmVmaW5kZW4sIGFscyBBcmd1bWVudGUgYW5nZWJlbi4KKworICAgIERpZSBmb2xnZW5kZW4gQmVmZWhsZSBrb21tZW4gb2huZSBPYmpla3RlIGF1ZiBkZW0gU3RhY2sgYXVzOgorCWNhbGxfb3V0CUdpYnQgZWluZSBMaXN0ZSBhbGxlciBPYmpla3RlIG1pdCBlaW5lbSBsYXVmZW5kZW4KKwkJCWNhbGxfb3V0IGF1cy4KKwlkdW1wCQlTY2hyZWlidCBkaWUgTGlzdGVuIGFsbGVyIE9iamVrdGUgbWl0IGFrdGl2ZW0KKwkJCWhlYXJ0X2JlYXQgdW5kIGFsbGVyIE9iamVrdGUgbWl0IGxhdWZlbmRlbSBjYWxsX291dAorCQkJaW4gZGllIERhdGFpIExJU1RTLkxVUEUgaW4gRGVpbiBIb21ldmVyemVpY2huaXMuCisJZHVtcGhpc3RzCVNjaHJlaWJ0IGRpZSBCZWZlaGxzaGlzdG9yeSBhbGxlciBtb21lbnRhbiBlaW5nZS0KKwkJCWxvZ2d0ZW4gU3BpZWxlciBuYWNoIC9sb2cvQVJDSC9IRC4KKwkJCURpZXNlciBCZWZlaGwgc3RlaHQgZXJzdCBhYiBBUkNIX0xWTCAoNjApIHp1cgorCQkJVmVyZnVlZ3VuZy4KKwloZWFydF9iZWF0CUdpYnQgZWluZSBMaXN0ZSBhbGxlciBPYmpla3RlIG1pdCBha3RpdmVtIGhlYXJ0X2JlYXQKKwkJCWF1cy4KKwlydXNhZ2UJCVplaWd0IGVpbmlnZSBJbmZvcyB1ZWJlciBkZW4gUmVzc291cmNlbmdlLS8tdmVyYnJhdWNoCisJCQlkZXMgTXVkcyBhbi4KKwlzd2hvCQlaZWlndCAoc28gZ3V0IHdpZSkgYWxsZSBha3RpdmVuIFNub29wcy4KKwl2YXJzCQlaZWlndCBkaWUgYmVsZWd0ZW4gVmFyaWFibGVuIGFuLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgSnVuIDI2IDE0OjQ5OjAyIDE5OTYgYnkgV2FyZ29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9tYXRlcmlhbCBiL2RvYy93aXovbWF0ZXJpYWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JmODAyMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovbWF0ZXJpYWwKQEAgLTAsMCArMSw5OCBAQAorTWF0ZXJpYWxpZW4KKz09PT09PT09PT09CisKKyAgICAgTWF0ZXJpYWxpZW4gaW4gTW9yZ2VuZ3JhdWVuIGtvZW5uZW4gdWViZXIgZGllIFByb3BlcnR5IFBfTUFURVJJQUwgamVkZW0gCisgICAgIE9iamVrdCBpbSBTcGllbCB6dWdlb3JkbmV0IHdlcmRlbi4gVWViZXIgZGllIE1hdGVyaWFsaWVuZGF0ZW5iYW5rIAorICAgICBzdGVoZW4gZGFmdWVyIGplZGUgTWVuZ2UgTWF0ZXJpYWxpZW4genVyIFZlcmZ1ZWd1bmcuIFdlbm4gbW9lZ2xpY2gsIAorICAgICBzb2xsdGVuIGRpZXNlIGF1Y2ggYmVudXR6dCB3ZXJkZW4sIGVzIHdlcmRlbiBEZWZhdWx0bWF0ZXJpYWxpZW4gCisgICAgIGdlc2V0enQsIGRpZXNlIGVudHNwcmVjaGVuIGFiZXIgc2VsdGVuIGV1cmVyIFJlYWxpdGFldC4KKworICAgICBEaWUgTWF0ZXJpYWxpZW5kYXRlbmJhbmsgL3NlY3VyZS9tYXRlcmlhbGRiLmMgaGFlbHQgc2FlbXRsaWNoZSAKKyAgICAgSW5mb3JtYXRpb25lbiB1ZWJlciBkaWUgdmVyd2VuZGJhcmVuIE1hdGVyaWFsaWVuLCBkaWUgdW50ZXIgCisgICAgIC9zeXMvdGhpbmcvbWF0ZXJpYWwuaCBhdWZnZWZ1ZWhydCBzaW5kLiBFcyBlbXBmaWVobHQgc2ljaCBTRUhSLCBWZXJ3ZWlzZQorICAgICBhdWYgZGllIE1hdERCIG51ciBpbiBGb3JtIHZvbiBNQVRFUklBTERCIHp1IGZvcm11bGllcmVuLgorICAgICBTaWUgdmVyd2FsdGV0IGF1Y2ggZGllIEVpZ2Vuc2NoYWZ0ZW4gZWluemVsbmVyIE1hdGVyaWFsaWVuLiBFcyBnaWJ0IAorICAgICBkaXZlcnNlIE1hdGVyaWFsaWVuZ3J1cHBlbiB3aWUgImVudGZsYW1tYmFyIiwgIk1ldGFsbCIsICJiaW9sb2dpc2NoZXMgCisgICAgIE1hdGVyaWFsIiwgZGVuZW4gZGllIE1hdGVyaWFsaWVuIGVudHNwcmVjaGVuZCB6dWdlb3JkbmV0IHNpbmQuIERpZXNlIAorICAgICBJbmZvcm1hdGlvbmVuIGtvZW5uZW4gbWl0IGVudHNwcmVjaGVuZGVuIE1ldGhvZGVuIGFiZ2VydWZlbi9hdXNnZXdlcnRldCAKKyAgICAgd2VyZGVuLgorICAgICBEYXJ1ZWJlciBoaW5hdXMgc2luZCBNYXRlcmlhbGllbiBiZWkgZGVyIEVya2VubnVuZyBtaXQgYW5kZXJlbiAKKyAgICAgTWF0ZXJpYWxpZW4gdmVyd2VjaHNlbGJhci4gV2llIGRhcyBnZW5hdSBmdW5rdGlvbmllcnQsIGlzdCBpbiAibWFuIAorICAgICBtYXRlcmlhbGVya2VubnVuZyIgYXVzZ2VmdWVocnQuCisKKyAgICAgUF9NQVRFUklBTDoKKyAgICAgICBEaWUgUHJvcGVydHkgUF9NQVRFUklBTCBpc3QgZ3J1bmRzYWV0emxpY2ggZWluIE1hcHBpbmcsIGluIGRlbSB6dSAKKyAgICAgICBqZWRlbSBNYXRlcmlhbCBkZXIgQW50ZWlsIGFuIGRlbSBPYmpla3Qgc3RlaGVuIHNvbGx0ZSwgWi5CLiBrYW5uIAorICAgICAgIGVpbiBTcGVlciB6dSA4MCUgYXVzIEhvbHogdW5kIHp1IDIwJSBhdXMgTWV0YWxsIChTcGVlcnNwaXR6ZSkgCisgICAgICAgYmVzdGVoZW46CisKKwlTZXRQcm9wKFBfTUFURVJJQUwsIChbTUFUX01JU0NfTUVUQUw6MjAsTUFUX01JU0NfV09PRDo4MF0pKQorCisgICAgICAgKFp1ciBWZXJlaW5mYWNodW5nIGlzdCBlcyBlcmxhdWJ0LCBiZWkgU2V0UHJvcCBlaW4gZWluemVsbmVzIE1hdGVyaWFsIAorICAgICAgICBvZGVyIGVpbiBBcnJheSBhdXMgTWF0ZXJpYWxpZW4gYW56dWdlYmVuLCBiZWlkZXMgd2lyZCBhdXRvbWF0aXNjaCAKKyAgICAgICAgdW1nZXdhbmRlbHQgaW4gZWluIE1hcHBpbmcgbWl0IGdsZWljaGVuIEFudGVpbGVuIGFsbGVyIE1hdGVyaWFsaWVuLikKKworICAgICBEZWZhdWx0cyBm/HIgUF9NQVRFUklBTDoKKwlXYWZmZW4gZ2VuZXJlbGw6CSAgIChbTUFUX01JU0NfTUVUQUw6MTAwXSkKKwlTY2h3ZXJ0ZXI6CQkgICAoW01BVF9NSVNDX01FVEFMOjEwMF0pCisgICAgCU1lc3NlcjoJCQkgICAoW01BVF9NSVNDX01FVEFMOjgwLCBNQVRfTUlTQ19XT09EOjIwXSkKKwlBZXh0ZToJCQkgICAoW01BVF9NSVNDX01FVEFMOjUwLCBNQVRfTUlTQ19XT09EOjUwXSkKKwlTcGVlcmU6CQkJICAgKFtNQVRfTUlTQ19NRVRBTDoyMCwgTUFUX01JU0NfV09PRDo4MF0pCisJS2V1bGVuOgkJCSAgIChbTUFUX01JU0NfV09PRDoxMDBdKQorCVJ1ZXN0dW5nZW4gZ2VuZXJlbGw6CSAgIChbTUFUX0xFQVRIRVI6MTAwXSkKKwlLb2VycGVycnVlc3R1bmdlbiwgSGVsbWUsCisJUmluZ2UsIEFtdWxldHRlLCBTY2hpbGRlOiAgKFtNQVRfTUlTQ19NRVRBTDoxMDBdKQorCVVtaGFlbmdlLCBIb3NlbjoJICAgKFtNQVRfQ0xPVEg6MTAwXSkKKwlIYW5kc2NodWhlLCBTY2h1aGU6CSAgIChbTUFUX0xFQVRIRVI6MTAwXSkKKwlhbmRlcmUgRGluZ2U6CQkgICAoW01BVF9NSVNDOjEwMF0pCisKKyAgICAgIFVlYmVyc2ljaHQgdWViZXIgZGllIE1ldGhvZGVuIGFuIE9iamVrdGVuICgvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uKToKKwlpbnQgUXVlcnlNYXRlcmlhbChzdHJpbmcgbWF0KToKKwktIGdpYnQgJSBkZXMgTWF0ZXJpYWxhbnRlaWxzIHZvbiBtYXQgYW0gT2JqZWt0IHp1cnVlY2sKKwlpbnQgUXVlcnlNYXRlcmlhbEdyb3VwKHN0cmluZyBncnApOgorCS0gZ2lidCAlIGRlcyBNYXRlcmlhbGdydXBwZW5hbnRlaWxzIHZvbiBncnAgYW0gT2JqZWt0IHp1cnVlY2sKKwlzdHJpbmcgTWF0ZXJpYWxMaXN0KGludCBjYXN1cywgbWl4ZWQgaWRpbmYpOgorCS0gZ2lidCBTdHJpbmcgbWl0IFp1c2FtbWVuc2V0enVuZyBkZXMgT2JqZWt0ZXMgenVydWVjaworCisgICAgICBVZWJlcnNpY2h0IHVlYmVyIGRpZSBNZXRob2RlbiBhbSBNYXN0ZXIgKE1BVEVSSUFMREIpOgorCXN0cmluZyAqR2V0TWF0TWVtYmVyc2hpcChzdHJpbmcgbWF0KToKKwktIGFsbGUgR3J1cHBlbiwgaW4gZGVuZW4gZGFzIE1hdGVyaWFsIG1hdCBpc3QKKwlzdHJpbmcgKkdldEdyb3VwTWVtYmVycyhzdHJpbmcgZ3JwKToKKwktIGFsbGUgTWF0ZXJpYWxpZW4sIGRpZSBpbiBkZXIgR3J1cHBlIGdycCBzaW5kCisJc3RyaW5nIE1hdGVyaWFsTmFtZShzdHJpbmcgbWF0LCBpbnQgY2FzdXMsIG1peGVkIGlkaW5mKToKKwktIGVyZ2lidCBkaWUgc3BpZWxlcmxlc2JhcmUgQW5nYWJlIGVpbmVzIE1hdGVyaWFscyBtYXQKKwlzdHJpbmcgR3JvdXBOYW1lKHN0cmluZyBncnApOgorCS0gZXJnaWJ0IHNwaWVsZXJsZXNiYXJlIEFuZ2FiZSBkZXIgR3J1cHBlIGdycAorCXN0cmluZyBDb252TWF0ZXJpYWxMaXN0KG1peGVkIG1hdHMsIGludCBjYXN1cywgbWl4ZWQgaWRpbmYpOgorICAJLSB3aXJkIHZvbiBNYXRlcmlhbExpc3QoKSBtaXQgZGVuIE1hdGVyaWFsaWVuIGRlcyBPYmpla3RlcyBnZXJ1ZmVuCisJdm9pZCBEdW1wKCk6CisgIAktIHNjaHJlaWJ0IE1hdGVyaWFsaWVuIHVuZCBHcnVwcGVuIGluIC9wL2RhZW1vbi9zYXZlL01BVEVSSUFMUworCXN0cmluZyAqQWxsTWF0ZXJpYWxzKCk6CisJLSBMaXN0ZSBhbGxlciBha3R1ZWxsZW4gTWF0ZXJpYWxpZW4KKwlzdHJpbmcgKkFsbEdyb3VwcygpOgorCS0gTGlzdGUgYWxsZXIgYWt0dWVsbGVuIEdydXBwZW4KKworICAgICAgRmFsbHMgZXVjaCBlaW4gTWF0ZXJpYWwgZmVobHQ6CisJLSBmYWxscyBlcyBrZWluIGdlbmF1IHBhc3NlbmRlcyBNYXRlcmlhbCBnaWJ0LCBzb2xsdGUgbWFuIGRhcyBhbSAKKwkgIGVoZXN0ZW4gcGFzc2VuZGUgTUFUX01JU0MtTWF0ZXJpYWwgdmVyd2VuZGVuLgorCS0gZmFsbHMgZXMgc2ljaCBsb2huZW4gd3VlcmRlLCBkYXMgYmlzaGVyIG5vY2ggbmljaHQgZGVmaW5pZXJ0ZSAKKwkgIE1hdGVyaWFsIGVpbnp1YmF1ZW4gKHdlbm4gZXMgaGFldWZpZyBnZW51ZyB2ZXJ3ZW5kZXQgd2lyZCksIGJpdHRlIAorCSAgTWFpbCBhbiBlaW5lbiBFTSAoLT4gbWFuIEFkZE1hdGVyaWFsKCkgKQorCS0gdmVyc2NoaWVkZW5lIEVpZ2Vuc2NoYWZ0ZW4gbGFzc2VuIHNpY2gga29tYmluaWVyZW4uIFouQi4gYmVzdGVodCAKKwkgIGVpbiAodW5iZWthbm50ZXMpIGV4cGxvc2l2ZXMgR2FzIHp1IDEwMCUgYXVzIEdhcyB1bmQgenUgMTAwJSBhdXMgCisJICBleHBsb3NpdmVtIE1hdGVyaWFsLiBJbnNvZmVybiBrYW5uIG1hbiBlcyBtaXQKKyAgICAgICAgICBTZXRQcm9wKFBfTUFURVJJQUwsIChbTUFUX01JU0NfR0FTOjEwMCwgTUFUX01JU0NfRVhQTE9TSVZFOjEwMF0pKQorICAgICAgICAgIHp1c2FtbWVuc2V0emVuLgorCitTSUVIRSBBVUNIOgorICAgICBLb256ZXB0ZToJICBtYXRlcmlhbGVya2VubnVuZworICAgICBHcnVuZGxlZ2VuZDogUF9NQVRFUklBTCwgL3N5cy90aGluZy9tYXRlcmlhbC5oCisgICAgIE1ldGhvZGVuOiAgICBRdWVyeU1hdGVyaWFsKCksIFF1ZXJ5TWF0ZXJpYWxHcm91cCgpLCBNYXRlcmlhbExpc3QoKSwKKyAgICAgTGlzdGVuOgkgIEFsbE1hdGVyaWFscygpLCBBbGxHcm91cHMoKSwgRHVtcCgpCisJCSAgbWF0ZXJpYWxsaXN0ZSwgbWF0ZXJpYWxncnVwcGVuCisgICAgIE1hc3RlcjoJICBBZGRNYXRlcmlhbCgpLCBDb252TWF0ZXJpYWxMaXN0KCksIE1hdGVyaWFsR3JvdXAoKSwKKwkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCisJCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorICAgICBTb25zdGlnZXM6CSAgUF9NQVRFUklBTF9LTk9XTEVER0UKKworNy4gTWFpIDIwMDQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy93aXovbWF0ZXJpYWxlcmtlbm51bmcgYi9kb2Mvd2l6L21hdGVyaWFsZXJrZW5udW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjEwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L21hdGVyaWFsZXJrZW5udW5nCkBAIC0wLDAgKzEsNzkgQEAKK01hdGVyaWFsZXJrZW5udW5nCis9PT09PT09PT09PT09PT09PQorCisgICAgIEJlaSBNYXRlcmlhbE5hbWUobWF0LGNhc3VzLGlkaW5mKSB1bmQgTWF0ZXJpYWxMaXN0KGNhc3VzLGlkaW5mKSBpZCBkZXIgCisgICAgIFBhcmFtZXRlciA8aWRpbmY+IGFscyBBbmdhYmUgZGFmdWVyIGdlZGFjaHQsIHdpZSBndXQgTWF0ZXJpYWxpZW4gCisgICAgIGVya2FubnQgd2VyZGVuIHNvbGxlbi4gRXMgc2luZCBmb2xnZW5kZSBBcnRlbiB2b24gQW5nYWJlbiBtb2VnbGljaDoKKworICAgICAgLSBFaW4gQXJyYXkKKwlEaWUgZWluemVsbmVuIEFycmF5ZWxlbWVudGUgd2VyZGVuIG5hY2ggdW50ZW5zdGVoZW5kZW4gUmVnZWxuIAorCWJlaGFuZGVsdCB1bmQgZGVyZW4gRXJnZWJuaXNzZSBhZGRpZXJ0LgorICAgICAgLSBFaW4gT2JqZWt0CisJSW4gZGllc2VtIEZhbGwgd2lyZAorCW9iLT5RdWVyeVByb3AoUF9NQVRFUklBTF9LTk9XTEVER0UpCisJbmFjaCB1bnRlbnN0ZWhlbmRlbiBSZWdlbG4gYmVoYW5kZWx0LgorCURpZXNlIFByb3BlcnR5IGlzdCBmdWVyIHJhc3NlbmFiaGFlbmdpZ2UgRmFlaGlna2VpdGVuIGdlZGFjaHQuCisgICAgICAtIEVpbmUgWmFobAorCUluIGRpZXNlbSBGYWxsIHdpcmQgZGVyIFdlcnQgZGlyZWt0IGFscyBGYWVoaWdrZWl0IGFuZ2VzZWhlbiwgZGFzIAorCU1hdGVyaWFsIGVya2VubmVuIHp1IGtvZW5uZW4uCisgICAgICAtIEVpbmUgQ2xvc3VyZQorCUluIGRpZXNlbSBGYWxsIHdpcmQgZGVyIFJldHVybndlcnQgdm9uCisJZnVuY2FsbChjbG9zdXJlLG1hdGVyaWFsLGdydXBwZW5faW5fZGVuZW5fZGllc2VfbWF0ZXJpYWxfaXN0KQorCWdlbm9tbWVuLgorICAgICAgLSBFaW4gTWFwcGluZworCUluIGVpbmVtIE1hcHBpbmcgc2luZCAzIEFydGVuIHZvbiBFaW50cmFlZ2VuIG1vZWdsaWNoOgorCS0gSXN0IGltIE1hcHBpbmcgdW50ZXIgPG1hdD4gZWluZSBaYWhsIGVpbmdldHJhZ2VuLCB3aXJkIGRpZXNlIAorCSAgZ2Vub21tZW4gdW5kIGRpZSB3ZWl0ZXJlbiBFaW50cmFlZ2UgbmljaHQgd2VpdGVyIGF1c2dld2VydGV0LgorICAgICAgICAtIERpZSBXZXJ0ZSB2b24gYWxsZW4gR3J1cHBlbiBpbSBNYXBwaW5nLCB6dSBkZW5lbiBkYXMgTWF0ZXJpYWwKKyAgICAgICAgICBnZWhvZXJ0LCB3ZXJkZW4gYWRkaWVydC4KKyAgICAgICAgLSBGYWxscyBkYXMgTWFwcGluZyBlaW5lbiBFaW50cmFnIE1BVEVSSUFMX1NZTU1FVFJJQ19SRUNPR05JWkFCSUxJVFkgCisgICAgICAgICAgaGF0LCBkZXIgZWluIEFycmF5IHZvbiBkZXIgCSAgRm9ybQorCQkoe2dydXBwZTEsIHdlcnQxLCBncnVwcGUyLCB3ZXJ0MiwgLi4ufSkKKwkgIGlzdCwgd2lyZCBmdWVyIGplZGUgZGllc2VyIEdydXBwZW4gZGVyIHp1Z2Vob2VyaWdlIFdlcnQgCisJICBhZGRpZXJ0LCBmYWxscyBkYXMgTWF0ZXJpYWwgaW4gZGVyIEdydXBwZSBpc3QsIHVuZCBzb25zdCAKKwkgIGFiZ2V6b2dlbi4KKyAgICAgICAgICBJbSBCZWlzcGllbDogKHtNQVRHUk9VUF9CSU86IDV9KSBnaWJ0IGVpbmVuIEVya2VubmJvbnVzIHZvbiA1JSBhdWYgCisgICAgICAgICAgYWxsZSBiaW9sb2dpc2NoZW4gTWF0ZXJpYWxpZW4sIGFiZXIgZWluZW4gTWFsdXMgdm9uIC01JSBhdWYgYWxsZSAKKyAgICAgICAgICBuaWNodGJpb2xvZ2lzY2hlbiBNYXRlcmlhbGllbi4KKworICAgICBTY2h3ZXIgZXJrZW5uYmFyZSBNYXRlcmlhbGllbiBoYWJlbiBpbiBkZXIgTWF0ZXJpYWxkYXRlbmJhbmsgZWluZSAKKyAgICAgenVzYWV0emxpY2hlIEFuZ2FiZSBkZXIgRm9ybQorCSh7bWF0MSwgd2VydDIsIG1hdDMsIHdlcnQ0LCBtYXQ1LCAuLi4gd2VydChuLTEpLCBtYXQobil9KQorICAgICB3b2JlaSBtYXQobikgZGFzIE1hdGVyaWFsIHNlbGJlciBpc3QuCisKKyAgICAgRGFzIGVya2FubnRlIE1hdGVyaWFsIGlzdCBkYXMgTWF0ZXJpYWwgbWF0KGspLCBiZWkgZGVtIGRpZQorCXdlcnQoay0xKSA8PSBFcmtlbm51bmdzZmFlaGlna2VpdCA8IHdlcnQoaysxKQorICAgICBpc3QuIEJlaSBFcmtlbm51bmdzZmFlaGlna2VpdCAxMDAgb2RlciBtZWhyIHdpcmQgZGFzIE1hdGVyaWFsIGF1ZiBqZWRlbiAKKyAgICAgRmFsbCBlcmthbm50LgorCisgICAgIERlciBXZXJ0IGZ1ZXIgRHVyY2hzY2huaXR0c3NwaWVsZXIgaXN0IDAuCisKK0JFSVNQSUVMOgorICAgICBBbmdlbm9tbWVuLCBiZWkgUGxhdGluIHdhZXJlIGRpZSBBbmdhYmUgaW4gZGVyIERhdGVuYmFuaworCSh7TWV0YWxsLCAtMjAsIFNpbGJlciwgMjAsIFBsYXRpbn0pCisgICAgIEVpbiBTcGllbGVyIG9obmUgYmVzb25kZXJlIEVya2VubnVuZ3NmYWVoaWdrZWl0ZW4gKGFsc28gV2VydCAwKSB3dWVyZGUgCisgICAgIGFsc28gUGxhdGluIGZ1ZXIgU2lsYmVyIGhhbHRlbiwgamVtYW5kLCBkZXIgdm9uIE1ldGFsbGVuIGtlaW5lIEFobnVuZyAKKyAgICAgaGF0IChiZWlzcGllbHN3ZWlzZSBtaXQgZGVyIEFuZ2FiZSAoW01BVEdST1VQX01FVEFMOi0yNV0pIGluIAorICAgICBQX01BVEVSSUFMX0tOT1dMRURHRSkgc2llaHQgbnVyIG5vY2gsIGRhc3MgZXMgZWluIE1ldGFsbCBpc3QgdW5kIGplbWFuZCAKKyAgICAgbWl0IHVlYmVyZHVyY2hzY2huaXR0bGljaGVyIEZhZWhpZ2tlaXQgZXJrZW5udCBQbGF0aW4gYWxzIGRhcywgd2FzIGVzIAorICAgICBpc3QuCisKKyAgICAgUF9NQVRFUklBTF9LTk9XTEVER0Uga29lbm50ZSB6LkIuIGZ1ZXIgUmFzc2VuIHdpZSBmb2xndCBnZXNldHp0IHdlcmRlbjoKKwlFbGY6ICAgKFtNQVRHUk9VUF9XT09EOjMwXSkKKwlad2VyZzogKFtNQVRHUk9VUF9TVE9ORTozMF0pCisgICAgIG9kZXIgZXR3YXMga29tcGxleGVyCisJWndlcmc6IChbTUFUR1JPVVBfU1RPTkU6MzAsCisJCSBNQVRFUklBTF9TWU1NRVRSSUNfUkVDT0dOSVpBQklMSVRZOiAoe01BVEdST1VQX0JJTzogLTV9KV0pCisKK1NJRUhFIEFVQ0g6CisgICAgIEtvbnplcHRlOgkgIG1hdGVyaWFsCisgICAgIEdydW5kbGVnZW5kOiBQX01BVEVSSUFMLCAvc3lzL3RoaW5nL21hdGVyaWFsLmgKKyAgICAgTWV0aG9kZW46ICAgIFF1ZXJ5TWF0ZXJpYWwoKSwgUXVlcnlNYXRlcmlhbEdyb3VwKCksIE1hdGVyaWFsTGlzdCgpLAorICAgICBMaXN0ZW46CSAgQWxsTWF0ZXJpYWxzKCksIEFsbEdyb3VwcygpLCBEdW1wKCkKKwkJICBtYXRlcmlhbGxpc3RlLCBtYXRlcmlhbGdydXBwZW4KKyAgICAgTWFzdGVyOgkgIEFkZE1hdGVyaWFsKCksIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorCQkgIEdyb3VwTmFtZSgpLCBNYXRlcmlhbE5hbWUoKSwKKwkJICBHZXRHcm91cE1lbWJlcnMoKSwgR2V0TWF0TWVtYmVyc2hpcCgpCisgICAgIFNvbnN0aWdlczoJICBQX01BVEVSSUFMX0tOT1dMRURHRQorCis3LiBNYWkgMjAwNCBHbG9pbnNvbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvYy93aXovbWF0ZXJpYWxncnVwcGVuIGIvZG9jL3dpei9tYXRlcmlhbGdydXBwZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIwMWJhZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovbWF0ZXJpYWxncnVwcGVuCkBAIC0wLDAgKzEsNTMgQEAKK01hdGVyaWFsZ3J1cHBlbgorPT09PT09PT09PT09PT09CisKKyAgRGllIGViZW5mYWxscyBrb21tZW50aWVydGUgTGlzdGUgdW50ZXIgL3N5cy90aGluZy9tYXRlcmlhbC5oIGlzdCBpbW1lcgorICBha3R1ZWxsZXIgYWxzIGRpZXNlIGhpZXIuCisKKyAgTUFUR1JPVVBfU09MSUQgICAgICAgICAgZmVzdGUgRGluZ2UKKyAgTUFUR1JPVVBfRkxVSUQgICAgICAgICAgRmx1ZXNzaWdrZWl0ZW4KKyAgTUFUR1JPVVBfR0FTICAgICAgICAgICAgR2FzZQorCisgIE1BVEdST1VQX1dPT0QgICAgICAgICAgIEhvZWx6ZXIKKyAgTUFUR1JPVVBfREVDSURVT1VTX1dPT0QgTGF1YmhvZWx6ZXIKKyAgTUFUR1JPVVBfQ09OSUZFUl9XT09EICAgTmFkZWxob2VsemVyCisgIE1BVEdST1VQX1RST1BJQ0FMX1dPT0QgIFRyb3BlbmhvZWx6ZXIKKyAgTUFUR1JPVVBfSkVXRUwgICAgICAgICAgRWRlbHN0ZWluZQorICBNQVRHUk9VUF9NSU5FUkFMICAgICAgICBNaW5lcmFsaWVuCisgIE1BVEdST1VQX1NUT05FICAgICAgICAgIFN0ZWluZQorICBNQVRHUk9VUF9NRVRBTCAgICAgICAgICBNZXRhbGxlCisgIE1BVEdST1VQX1BSRUNJT1VTX01FVEFMIEVkZWxtZXRhbGxlCisgIE1BVEdST1VQX1BBUEVSICAgICAgICAgIFBhcGllciB1bmQgQWVobmxpY2hlcworICBNQVRHUk9VUF9DTE9USCAgICAgICAgICBTdG9mZmUKKworICBNQVRHUk9VUF9FTEVNRU5UQUwgICAgICAoYWx0ZXJ0dWVtbGljaGUpIEVsZW1lbnRlCisgIE1BVEdST1VQX0JJTyAgICAgICAgICAgIEFsbGVzLCB3YXMgbGVidCBvZGVyIGxlYnRlCisgIE1BVEdST1VQX0xJVklORyAgICAgICAgIExlYmV3ZXNlbgorICBNQVRHUk9VUF9IRVJCQUwgICAgICAgICBQZmxhbnpsaWNoZXMKKyAgTUFUR1JPVVBfREVBRCAgICAgICAgICAgVWViZXJyZXN0ZSB2b24gTGViZXdlc2VuCisgIE1BVEdST1VQX0RSVUcgICAgICAgICAgIERyb2dlbiwgSGVpbHRyYWVua2UKKworICBNQVRHUk9VUF9JTkZMQU1NQUJMRSAgICBFbnRmbGFtbWJhcmVzCisgIE1BVEdST1VQX0VYUExPU0lWRSAgICAgIEV4cGxvc2l2ZXMKKyAgTUFUR1JPVVBfUE9JU09OT1VTICAgICAgR2lmdGlnZXMKKyAgTUFUR1JPVVBfTUFHSUMgICAgICAgICAgTWFnaXNjaGVzCisgIE1BVEdST1VQX1JBRElPQUNUSVZFICAgIFJhZGlvYWt0aXZlcworICBNQVRHUk9VUF9FTEVDVFJJQ0FMICAgICBFbGVrdHJpc2NoZXMKKyAgTUFUR1JPVVBfTUFHTkVUSUMgICAgICAgTWFnbmV0aXNjaGVzCisgIE1BVEdST1VQX0FDSURJQyAgICAgICAgIFNhdXJlcworICBNQVRHUk9VUF9FQVRBQkxFICAgICAgICBFc3NiYXJlcworICBNQVRHUk9VUF9GTEVYSUJMRSAgICAgICBCaWVnc2FtZXMKKyAgTUFUR1JPVVBfSU5WSVMgICAgICAgICAgVW5zaWNodGJhcmVzCisKK1NJRUhFIEFVQ0g6CisgICAgIEtvbnplcHRlOgkgIG1hdGVyaWFsLCBtYXRlcmlhbGVya2VubnVuZworICAgICBHcnVuZGxlZ2VuZDogUF9NQVRFUklBTCwgL3N5cy90aGluZy9tYXRlcmlhbC5oCisgICAgIE1ldGhvZGVuOiAgICBRdWVyeU1hdGVyaWFsKCksIFF1ZXJ5TWF0ZXJpYWxHcm91cCgpLCBNYXRlcmlhbExpc3QoKSwKKyAgICAgTGlzdGVuOgkgIEFsbE1hdGVyaWFscygpLCBBbGxHcm91cHMoKSwgRHVtcCgpCisJCSAgbWF0ZXJpYWxsaXN0ZQorICAgICBNYXN0ZXI6CSAgQWRkTWF0ZXJpYWwoKSwgQ29udk1hdGVyaWFsTGlzdCgpLCBNYXRlcmlhbEdyb3VwKCksCisJCSAgR3JvdXBOYW1lKCksIE1hdGVyaWFsTmFtZSgpLAorCQkgIEdldEdyb3VwTWVtYmVycygpLCBHZXRNYXRNZW1iZXJzaGlwKCkKKyAgICAgU29uc3RpZ2VzOgkgIFBfTUFURVJJQUxfS05PV0xFREdFCisKKzcuIE1haSAyMDA0IEdsb2luc29uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9tdWRsaWItY29kZXN0eWxlIGIvZG9jL3dpei9tdWRsaWItY29kZXN0eWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YjRiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L211ZGxpYi1jb2Rlc3R5bGUKQEAgLTAsMCArMSwzNiBAQAorV29sbHQgaWhyIENvZGUgaW4gZGVyIGFsbGdlbWVpbmVuLCBvZWZmZW50bGljaGVuIE11ZGxpYiBhbnNjaGxpZXNzZW4sIGJpdHRlCitiZWFjaHRldCBkaWUgZm9sZ2VuZGVuIEhpbndlaXNlIHp1bSBDb2Rlc3R5bGUgKG5pY2h0IGVyc2Nob2VwZmVuZCk6CisKKyogRWlucnVlY2t1bmdlbiBwZXIgTGVlcnplaWNoZW4sIG5pY2h0IFRhYnMKKyogRWlucnVlY2t1bmcgdm9uIDIgTGVlcnplaWNoZW4gcHJvIEViZW5lCisqIHByYWVnbmFudGUgdW5kIHZpZWxlIEtvbW1lbnRhcmUKKyoga2VpbmUgbGFtYmRhcworKiBCZWkgaW5saW5lLWNsb3N1cmVzIGRpZSBmdW5jdGlvbi1TeW50YXggc3RhdHQgZGVyICg6IDopLVN5bnRheCB2ZXJ3ZW5kZW4uCisqIGVsc2UsIGVsc2UgaWYgaW4gZWluZSBlaWdlbmUgWmVpbGUKKyogeyBhbSBCZWdpbm4gdm9uIEJsb2Vja2VuIHNvbGwgaW4gZWluZSBlaWdlbmUgWmVpbGUuCisqIE5hY2ggaWZzLCBMb29wcyAmIENvOiB1bWZhc3N0IGRlciBkYXZvbiBrb250cm9sbGllcnRlIENvZGUgbWVociBhbHMgZWluZQorICBwaHlzaXNjaGUgWmVpbGUgQ29kZSwgZWluZW4gQmxvY2sgbWl0IHsgfSBmb3JtdWxpZXJlbi4KKyoga2VpbmUgcmV0dXJuIGZ1bigpLCAwOworKiAodHlwZSkgQ2FzdHMgc29sbHRlbiB2ZXJtaWVkZW4gd2VyZGVuIChBdXNuYWhtZTogKHR5cGUpY2FsbF9vdGhlcikuCisgICh0eXBlKSBrb252ZXJ0aWVyZW4gbnVyLCB3ZW5uIGRpZSBUeXBlbiB6dXIgQ29tcGlsZXplaXQgYmVrYW5udCB1bmQKKyAgdW50ZXJzY2hpZWRsaWNoIHNpbmQuIERhaGVyIGJlaSBnZXd1ZW5zY2h0ZW4gS29udmVyc2lvbmVuIHRvX3R5cGUoKSBuZWhtZW4uCisqIFBmYWRlLCBkaWUgYWJzb2x1dCBzaW5kLCBzb2xsZW4gYXVjaCBtaXQgLyBiZWdpbm5lbiwgei5CLiAKKyAgaW5oZXJpdCAiL3N0ZC90aGluZyIsIG5pY2h0IGluaGVyaXQgInN0ZC90aGluZyIKKworQmVuZW5udW5nIHZvbiBQcm9wZXJ0aWVzOgorKiBkZXIgaW50ZXJuZSBOYW1lIHZvbiBQcm9wZXJ0aWVzIGluIGRlciBCYXNpcy1NdWRsaWIgYmVnaW5udCBpbW1lciBtaXQKKyAgInBfbGliXyIuIE5pZW1hbmQgc29uc3Qgc29sbHRlIFByb3BlcnRpZXMgbWl0IGRpZXNlbSBQcmFlZml4IGVyc3RlbGxlbi4KKworU29uc3RpZ2VzOgorKiBJbiBkZXIgTXVkbGliIHdpcmQga2VpbmUgbmV1ZSBGdW5rdGlvbihhbGl0YWV0KSBhbmdlc2NobG9zc2VuLCBiZXZvciBkaWUKKyAgRG9rdW1lbnRhdGlvbiBkYWZ1ZXIgZmVydGlnIGlzdC4KKyAgQW0gbGllYnN0ZW4gaXN0IG1pciwgYmVpIGRlciBLb256ZXB0ZW50d2lja2x1bmcgenVlcnN0IGRpZSBmZXJ0aWdlCisgIERva3VtZW50YXRpb24gKE1hbnBhZ2UpIGZ1ZXIgTnV0emVyL1NwaWVsZXIgenUgZW50d2lja2VsbiwgYmV2b3IgZWluIE1hZ2llcgorICB1ZWJlcmhhdXB0IGVpbmUgWmVpbGUgQ29kZSBzY2hyZWlidC4KKyogUGF0Y2hlcyBtdWVzc2VuIGVpbmUgWnVzYW1tZW5mYXNzdW5nIGhhYmVuLCB3ZWxjaGUga3VyeiBlcmxhZXV0ZXJ0LAorICB3YXMgZGllc2VyIFBhdGNoIGZpeGVuL2FlbmRlcm4vdmVyYmVzc2VybiBzb2xsIHVuZCBhdWYgd2VsY2hlIFdlaXNlCisgIGRpZXNlIHVtZ2VzZXR6dCB3aXJkLiAoQW5kZXJzIGdlc2FndDogZWluZSBDb21taXQtTWVzc2FnZSkKKworTEVUWlRFIEFlTkRFUlVORzoKKyAgMTUuOC4yMDE1LCBaZXNzdHJhCisKZGlmZiAtLWdpdCBhL2RvYy93aXovbXVzdGVyX3JhdW0uYyBiL2RvYy93aXovbXVzdGVyX3JhdW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGU0Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9tdXN0ZXJfcmF1bS5jCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEVpbiBrbGVpbmVyIEJlaXNwaWVscmF1bS4KKyAqIEVyIGxhZXNzdCBzaWNoIGFscyAvb2JqL2RvYy9tdXN0ZXJfcmF1bSBhbnNwcmVjaGVuLgorICoKKyAqIERpZXNlcyBGaWxlIGlzdCBUZWlsIGRlciBNb3JnZW5HcmF1ZW4tTXVkbGliIHZvbiBKb2YgdW5kIFJ1bWF0YQorICogTGV0enRlIEFlbmRlcnVuZzogMTcuMDguOTIKKyAqICNpbmNsdWRlIGVpbmdlZnVlZ3Q6IFJ1bWF0YSAxMC4xMS45OAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNwcmFnbWEgc3Ryb25nX3R5cGVzLHJ0dF9jaGVja3MKKworaW5oZXJpdCAiL3N0ZC9yb29tIjsKKwkvKiBEaWVzZSBaZWlsZSBkZXV0ZXQgYW4sIGRhc3MgZGVyIFJhdW0gYXVzIGRlciBTdGFuZGFyZCBtdWRsaWIgKi8KKwkvKiBhYmdlbGVpdGV0IHdpcmQuIERpZXNlIFplaWxlIHNvbGx0ZSBpbiBKRURFTSBSYXVtIHZvcmtvbW1lbi4gKi8KKworI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKwkvKiBEaWVzZSBaZWlsZSBkZWZpbmllcnQgZGllIGdyb3NzYnVjaHN0YWJpZ2VuIE5hbWVuLCBkaWUgaW4gZGVuICovCisJLyogU2V0UHJvcC1CZWZlaGxlbiBiZW51dHp0IHdlcmRlbi4gRXMgZ2lidCBub2NoIHdlaXRlcmUgKi5oICAgICAqLworCS8qIERhdGVpZW4sIGRpZSBhbmRlcmUgbnVldHpsaWNoZSBEaW5nZSBkZWZpbmllcmVuLiAgICAgICAgICAgICAgKi8KKworcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkKK3sKKwk6OmNyZWF0ZSgpOworCQkvKiBEaWVzZSBaZWlsZSBpbml0aWFsaXNpZXJ0IGRpZSBTdGFuZGFyZC1hdHRyaWJ1dGUuICovCisJCS8qIFNpZSBkYXJmIG5pY2h0IGZlaGxlbiAhICovCisKKwlTZXRQcm9wKFBfSU5UX1NIT1JULCAiTXVzdGVyLXJhdW0iICk7CisJCS8qIERpZSBCZXNjaHJlaWJ1bmcgZGVzIFJhdW1lcyBmdWVyIFNwaWVsZXIsIGRpZSBkZW4gKi8KKwkJLyoga3Vyei9icmllZi1Nb2R1cyBlaW5nZXN0ZWxsdCBoYWJlbi4gKi8KKworCVNldFByb3AoUF9JTlRfTE9ORywgIkRpZXNlcyBpc3QgZWluIE11c3RlcnJhdW0sIGRlciBudXIgenVyIEVybGFldXRlcnVuZ1xuIgorCQkrICJkaWVudC4gRWluIHVuYW5nZW5laG1lciBSYXVtIHZvbGxlciBTdGVybmUgdW5kIHNjaHJhZWdlclxuIgorCQkrICJTdHJpY2hlLiBJbSBTdWVkZW4ga2FubnN0IER1IGluIHZlcnRyYXV0ZXJlIFJhZXVtZSBmbGllaGVuLlxuIgorCQkrICJJbSBOb3JkZW4gaXN0IGV0d2FzIHNlbHRzYW1lcy5cbiIgKTsKKwkJLyogRGllc2UgQmVzY2hyZWlidW5nIGJla29tbWVuIFNwaWVsZXIsIGRpZSBkZW4ga3Vyei0gKi8KKwkJLyogTW9kdXMgbmljaHQgYmVudXR6ZW4sIG9kZXIgd2VubiBzaWUgInNjaGF1IiBlaW5nZWJlbi4gKi8KKworCVNldFByb3AoUF9MSUdIVCwgMSApOworCQkvKiBEaWVzZSBaYWhsIGlzdCAxIGZ1ZXIgUmFldW1lLCBpbiBkZW5lbiBtYW4gb2huZSAqLworCQkvKiBMaWNodHF1ZWxsZSBldHdhcyBzZWhlbiBrYW5uIHVuZCAwIGZ1ZXIgUmFldW1lLCAqLworCQkvKiBpbiBkZW5lbiBtYW4gZWluZSBTb2xjaGUgYnJhdWNodC4gKi8KKworCUFkZEV4aXQoICJzdWVkZW4iLCAicm9vbS9hZHZfZ3VpbGQiICk7CisJCS8qIEJhdWUgZWluZW4gQXVzZ2FuZyBuYWNoIFN1ZWRlbiwgZXIgd2lyZCBtaXR0ZWxzIGRlcyAqLworCQkvKiBLb21tYW5kb3MgImV4aXRzIiBhbmdlemVpZ3QuICovCisKKwlBZGRTcGVjaWFsRXhpdCggIm5vcmRlbiIsICJnb19ub3JkIiApOworCQkvKiBXZW5uIGRlciBTcGllbGVyIHZlcnN1Y2h0LCBkaWVzZW4gQXVzZ2FuZyB6dSAqLworCQkvKiBiZW51dHplbiwgc28gd2lyZCBlciBuaWNodCBpbiBlaW5lbiBhbmRlcmVuIFJhdW0gKi8KKwkJLyogYmV3ZWd0LCBzb25kZXJuIGVzIHdpcmQgaW0gUmF1bSBkaWUgYW5nZWdlYmVuZSAqLworCQkvKiBGdW5rdGlvbiBhdWZnZXJ1ZmVuLiAqLworCisJQWRkQ21kKCAiaGlsZmUiLCAiZ2liX2hpbGZlIiApOworCQkvKiBEaWVzZXMgS29tbWFuZG8gcnVmdCBkaWUgRnVua3Rpb24gImdpYl9oaWxmZSIgYXVmLCAqLworCQkvKiB3ZW5uIGRlciBTcGllbGVyIGRhcyBLb21tYW5kbyAiaGlsZmUiIGVpbmdpYnQuICovCisJCS8qIERhcyBLb21tYW5kbyB0YXVjaHQgbmljaHQgaW4gZGVyICJleGl0cy1saXN0ZSIgYXVmLiAqLworCit9CisKKy8qCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFNvIGpldHp0IGlzdCBkZXIgUmF1bSBmZXRpZy4KKyAqIFdpcmtsaWNoPyBOZWluLCBmYXN0LgorICogRGllIG9iZW4gYW5nZWdlYmVuZW4gRnVua3Rpb24gZmVobGVuIG5vY2gsIGFiZXIgZGFzIHNpbmQgYmVyZWl0cworICogIkV4dHJhcyIuCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitpbnQgZ29fbm9yZCgpCit7CisJd3JpdGUoICJIbW0gZGFzIHdhciB3b2hsIGRvY2ggbnVyIGRpZSBXYW5kLlxuIiApOworCXJldHVybiAxOworCQkvKiBEYXMgS29tbWFuZG8gd2lyZGUgZXJmb2xnZWljaCBiZWVuZGV0LiAqLworfQorCitpbnQgZ2liX2hpbGZlKCkKK3sKKwl3cml0ZSggIkdlaGUgbmFjaCBTdWVkZW4sIHVuZCBEdSBrb21tc3QgaW4gZGllIEFiZW50ZXVyZXItR2lsZGUuXG4iICk7CisJcmV0dXJuIDE7Cit9CisKZGlmZiAtLWdpdCBhL2RvYy93aXovbmFjaHRlaWxlIGIvZG9jL3dpei9uYWNodGVpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3ZTU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovbmFjaHRlaWxlCkBAIC0wLDAgKzEsNTEgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05BQ0hURUlMRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQmVpIGRlciBHZW5laG1pZ3VuZyB2b24gT2JqZWt0ZW4gaW0gQmFsYW5jZXRlYW0ga29tbXQgaW1tZXIgd2llZGVyIGRpZSBGcmFnZQorYXVmLCB3ZWxjaGUgTmFjaHRlaWxlIGRhcyBPYmpla3QgZGVubiBoYXQsIHdlbm4gZXMgc2Nob24gc28gdmllbGUgVm9ydGVpbGUKK2Jlc2l0enQuIEdlbmVyZWxsIGdpbHQsIGRhc3Mgc3RhcmtlIE9iamVrdGUgbnVyIGRhbm4gZ2VuZWhtaWd0IHdlcmRlbiwgd2Vubgorc2llIGF1Y2ggdWViZXIgZW50c3ByZWNoZW5kIGdyb3NzZSBOYWNodGVpbGUgdmVyZnVlZ2VuLgorCitEYWhlciBoaWVyIG1hbCBlaW5lIGtsZWluZSBBdWZsaXN0dW5nIGRlc3Nlbiwgd2FzIGFscyBzb2xjaGVyIGJldHJhY2h0ZXQKK3dpcmQ6CisKKy0gR2V3aWNodCAobmljaHQgYmVpIEtldWxlbiBmdWVyIEtsZXJpa2VyKQorCistIEFuZmFlbGxpZ2tlaXRlbiBnZWdlbiBTY2hhZGVuYXJ0ZW4KKworLSBMUC1LUC1BYnp1ZyAoT2JlcmdyZW56ZW4sIGplZGUgUnVuZGUsIGplZGVyIFJlc2V0KQorLSBBYnNlbmtlbiBkZXIgTWF4d2VydGUgdm9uIExQLCBLUAorLSBBYnNlbmtlbiB2b24gQXR0cmlidXRlbgorLSBBYnNlbmtlbiB2b24gU0FfU1BFRUQsIFNBX1FVQUxJVFkgdXN3LgorCistIFNjaGFkZW4vTnV0emVuIGFiaGFlbmdpZyB2b20gQWxpZ25tZW50CistIEdlbmVyZWxsZSBSZXN0cmlrdGlvbmVuCisKKy0gT2JqZWt0IG11c3MgYW4gZWluZXIgYmVzdGltbXRlbiBTdGVsbGUgKHouQi4gZHVyY2ggZGFzIFRvZXRlbiBlaW5lbiBOUEMpCisgIGF1ZmdlbGFkZW4gd2VyZGVuCistIHdpZWRlcmtlaHJlbmRlIEtvc3RlbiAoYXVzc2VyIExQL0tQIGF1Y2ggc293YXMgd2llIEdlbGQvSXRlbXMvQXVmZ2FiZSkKKworLSBCZWhpbmRlcnVuZyBhbmRlcmVyIE9iamVrdGUKKy0gQmVsZWd1bmcgdm9uIFNsb3RzIChTZXQpCisKKy0gU2tpbGxvYmpla3QKKworLSBCZWdyZW56dGUgSGFsdGJhcmtlaXQKKy0gQWJudXR6dW5nICh6LkIuIFBfUVVBTElUWSwgb2RlciBlaW5mYWNoIGR1cmNoIFplaXQvTmljaHRiZW51dHp1bmcpCistIFVtc3RhZW5kZSwgZGllIGRhcyBPYmpla3QgemVyc3RvZXJlbgorLSBCZWdyZW56dGUgV2lya3VuZyAoei5CLiBXYWZmZSB3aXJrdCBudXIgZ2VnZW4gZWluZSBSYXNzZSkKKworLSBVbmlxdWUKKy0gVW5pcXVlIG1pdCBiZWdyZW56dGVyIEFuemFobAorCitHZW5lcmVsbCBzb2xsdGVuIFBhcmFvYmpla3RlIGRpZSBSZXN0cmlrdGlvbiBTZWhlciBiZXNpdHplbiwgZGEgc2llIGF1Y2ggbnVyCit2b24gU2VoZXJuIGdlaG9sdCB3ZXJkZW4ga29lbm5lbi4gQWVobmxpY2hlIFJlc3RyaWt0aW9uZW4gc29sbHRlbiBmdWVyIAorT2JqZWt0ZSBhdXMgR2ViaWV0ZW4gZ2VsdGVuLCBkaWUgZXJzdCBhYiBlaW5lciBnZXdpc3NlbiBTdHVmZSBiZXRyZXRlbiAKK3dlcmRlbiBrb2VubmVuLgorCitPYmpla3RlLCBkaWUgbnVyIGluIGVuZyBiZWdyZW56dGVuIEdlYmlldGVuIHdpcmtlbiAoei5CLiBRdWVzdGl0ZW1zIHdpZSBkZXIgCitTcGlubmVudG9ldGVyKSBtdWVzc2VuIGJlaSBkZXIgQmFsYW5jZSBuaWNodCBiZWFudHJhZ3Qgd2VyZGVuLCBzZWxic3Qgd2Vubgorc2llIFdlcnRlIGJlc2l0emVuLCBkaWUgZGllIEJhbGFuY2VncmVuemVuIHVlYmVyc2NocmVpdGVuLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiAxOC4xMC4yMDA1IC0gTWlyaWwKZGlmZiAtLWdpdCBhL2RvYy93aXovbmV0eiBiL2RvYy93aXovbmV0egpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGQ4Y2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9uZXR6CkBAIC0wLDAgKzEsMjcgQEAKK1N0YW5kOiAxNy4wOC45MgorVWViZXJhcmJlaXRldCBhbSAyNC4wOC45NCB2b24gVmlwZXIKKworRGllIE5ldHpwaGlsb3NvcGhpZSBpbSBNb3JnZW5HcmF1ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RpZSB3aWNodGlnZW4gV2VnZSB1bmQgVmVyYmluZHVuZ2VuIGluIE1vcmdlbkdyYXVlbiBzb2xsZW4gZWluZSBBcnQKK05ldHpzdHJ1a3R1ciAgYmVzaXR6ZW4sIGQuaC4gZXMgd2lyZCBuaWNodCBhbSBSYW5kIGFuZ2ViYXV0ICh3aWUgaW0gCithbHRlbiBORiksIHNvbmRlcm4gbWl0dGVuIGRyaW4uCisKK0JlaXNwaWVsOgorCitNYW4gc3RlbGxlIHNpY2ggZWluZSBTdHJhc3NlIGF1cyA2IFJhZXVtZW4gdm9yLiBBbSBBbmZhbmcgdmVybGFldWZ0CitkaWUgU3RyYXNzZSB2b24gT3N0ZW4gbmFjaCBXZXN0ZW4gb2huZSBiZXNvbmRlcmUgRGV0YWlscyBhbSAgV2VnZXMtCityYW5kLiBNaXQgZGVyIFplaXQgYmF1ZW4gZWluaWdlIE1hZ2llciBhdXMgZGllc2VyIFJlZ2lvbiAgbm9lcmRsaWNoCit1bmQgc3VlZGxpY2ggaWhyZSBSYWV1bWUgdW5kIFF1ZXN0cyBhbi4gSXJnZW5kd2FubiBqZWRvY2ggc2luZCBhbGxlIAorUmFldW1lIGF1c2dlc2Nob2VwZnQuIERhbm4ga2FubiAgZGVyICBFcnptYWdpZXIgZGVyIFJlZ2lvbiBaV0lTQ0hFTiAKK2RpZSBiZXN0ZWhlbmRlbiBSYWV1bWUgZGVyIFN0cmFzc2Ugd2VpdGVyZSBTdHJhc3NlbnJhZXVtZSBlaW5mdWVnZW4uIAorRG9ydCBrYW5uIGRhbm4gd2llZGVyIE5vZXJkbGljaCB1bmQgU3VlZGxpY2ggYW5nZWJhdXQgd2VyZGVuLiBJbiBkZW4gCituZXVlbiBTdHJhc3NlbnRlaWxlbiAgc29sbHRlbiBuYXR1ZXJsaWNoIGtlaW5lIE1vbnN0ZXIgb2RlciBIaW5kZXItCituaXNzZSBhdWZnZXN0ZWxsdCB3ZXJkZW4sIHNvIGRhc3MgZGllIFN0cmFzc2UgZnVlciBkaWUgU3BpZWxlcklubmVuIAorbGVkaWdsaWNoIGV0d2FzIGxhZW5nZXIgd2lyZCwgZG9ydCBhYmVyIGtlaW5lIG5ldWVuIFByb2JsZW1lIGF1ZiBpaG4KKy9zaWUgd2FydGVuLgorCitadXNhZXR6bGljaGUgSGluZGVybmlzc2Ugc29sbHRlbiBudXIgbmFjaCBBYnNwcmFjaGUgbWl0IGVpbmVtIEVyei0KK21hZ2llciAoZGFzIHNpbmQgZGllIE1hZ2llciBhYiBMZXZlbCA2MCkgaW4gYmVzdGVoZW5kZSBTdHJhc3NlbgorZWluZ2ViYXV0IHdlcmRlbi4KZGlmZiAtLWdpdCBhL2RvYy93aXovbnBjcyBiL2RvYy93aXovbnBjcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjQyZTRjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9ucGNzCkBAIC0wLDAgKzEsMTIxIEBACisgSElOV0VJU0UgWlUgTlBDUzoKKworICBhLiBBbGxnZW1laW5lcyAvIEhpbndlaXNlIC8gVGlwcHMKKworICAgICBEaWVzIHNpbmQgUmljaHRsaW5pZW4sIGtlaW5lIFZvcnNjaHJpZnRlbiEhISEKKworICAgICBOaWNodCBqZWRlciBOUEMgYnJhdWNodCBlaW5lbiBsaXZpbmdfbmFtZS4gTnVyIGluIGJlc29uZGVyZW4gTlBDcworICAgICBzb2xsdGUgbWFuIGVpbmVuIHNvbGNoZW4gc2V0emVuLiBBbGxlcyBhbmRlcmUgaXN0IHVuc2lubmlnIHVuZCBiZWxhc3RldAorICAgICBudXIgdW5ub2V0aWcgZGVuIFNwZWljaGVyLgorCisgICAgIEVpbiBNb25zdGVyIHNvbGx0ZSBuaWVtYWxzIHp1IHZpZWwgWmV1ZyBtaXQgc2ljaCBoZXJ1bXRyYWdlbi4gRWluIGJpcworICAgICB6d2VpIFNhY2hlbiByZWljaGVuIGltIE5vcm1hbGZhbGwuCisKKyAgICAgTmllbWFscyBzb2xsdGUgZWluIE1vbnN0ZXIgYWxsZWluIG1pdCBtZWhyZXJlbiBUb3AtUXVhbGl0YWV0cy1TYWNoZW4KKyAgICAgKHNlaHIgZ3V0ZSBXYWZmZSBwbHVzIGd1dGUgUnVlc3R1bmdbZW5dKSBhdXNnZXN0YXR0ZXQgc2Vpbi4gRGFzIHdhZXJlCisgICAgIGRvY2ggenUgZWluZmFjaC4KKworICAgICBEaWUgSGFlcnRlIGRlciBNb25zdGVyIGlzdCBpbSBQcmluemlwIGVnYWw7IHBmbGFzdGVydCBkaWUgR2ViaWV0ZSBydWhpZworICAgICBtaXQgSHlkcmVuLgorICAgICBOdXI6IEFuZmFlbmdlcm4gb2RlciBrbGVpbmVyZW4gU3BpZWxlcm4genVnYWVuZ2xpY2hlIEdlYmlldGUgc29sbHRlbgorICAgICBrZWluZSBBdXRvYXR0YWNrbW9uc3RlciBlbnRoYWx0ZW4sIGRpZSBkaWUgIktsZWluZW4iIGdsZWljaCB1bW5pZXRlbi4KKyAgICAgU29sY2hlIEdlZ2VuZGVuIHNvbGx0ZW4gZW50d2VkZXIgbWl0IFdhY2hlbiBiZXN0dWVja3Qgb2RlciBtaXQgZWluaWdlbgorICAgICB6dW5laG1lbmQgaGFlcnRlcmVuIE1vbnN0ZXJuIGVpbmVuICJWb3JnZXNjaG1hY2siIGJpZXRlbiwgZGFtaXQgbWFuCisgICAgIG5pY2h0IHVuYmVkYXJmdCByZWlucmVubnQuIFVuZmFlbGxlIHdpcmQncyBkZW5ub2NoIGdlYmVuLiBXYXMgc29sbCdzLAorICAgICBSb2NodXMgbGllYnQgc2VpbmUgU3RhdGlzdGlrLi4uIDopCisKKyAgICAgQXVjaCBiZWkgTlBDcyBrYW5uIGRpZSBQcm9wZXJ0eSBQX0lORk8gZ2VzZXR6dCB3ZXJkZW4sIGRpZXMgc29sbHRlCisgICAgIGluc2Jlc29uZGVyZSBiZWkgc3RhcmtlbiB1bmQgc3BlemllbGxlbiBOUENzIGdlbWFjaHQgd2VyZGVuLgorCisgICAgIEJlaSBOUENzLCBkaWUgYmVzb25kZXJlIFNwZWxscyBiZW51dHplbiwgc29sbHRlbiBkaWUgUk1zIGRhcmF1ZiBhY2h0ZW4sCisgICAgIGRhc3MgbmljaHQgcGxvZXR6bGljaCBkaWUgZ2FuemUgR2VnZW5kIHZvbiBOUENzIHdpbW1lbHQsIHZvbiBkZW5lbgorICAgICBqZWRlciBzZWluZW4gR2VnbmVyIGJsaW5kIG9kZXIgdGF1YiBtYWNodCBvZGVyIHZlcmdpZnRldC4KKworICAgICBOdXIgYWxzIFRpcHA6CisgICAgIE1vbnN0ZXIgbWl0IEF0dGFjay1DaGF0cyBzaW5kIGVyaGVibGljaCBrbmlmZmxpZ2VyIHp1IGtpbGxlbiB1bmQgbWFjaGVuCisgICAgIGF1Y2ggdW0gaWhyZXIgU2VsYnN0IHdpbGxlbiBtZWhyIFNwYXNzIGFscyBibG9lZGUgSGF1LURyYXVmLU1vbnN0ZXIsCisgICAgIGRpZSB6d2FyIHVlYmVyIHVuZW5kbGljaCBIUCB2ZXJmdWVnZW4sIGFiZXIgaW0gUHJpbnppcCBudXIgR2VkdWxkCisgICAgIGJyYXVjaGVuLCB1bSBzaWUgenUgYmVzaWVnZW4uIFBoYW50YXNpZSBpc3QgZ2VmcmFndC4KKworICBiLiBFaWdlbnNjaGFmdGVuCisgICAgICBGdWVyIGVpbmZhY2hlIE1vbnN0ZXIgYml0dGUgY3JlYXRlX2RlZmF1bHRfbnBjKCkgYmVudXR6ZW4hCisKKyAgICAgIEFuc29uc3RlbjoKKyAgICAgIFBfSEFORFMKKwlCZWkgTW9uc3Rlcm4gb2huZSBXYWZmZW4gc29sbHRlIGRpZSBQcm9wZXJ0eSBQX0hBTkRTIGluIGFsbGVuIGRyZWkKKwlXZXJ0ZW4gZGVtIEVyc2NoZWludW5nc2JpbGQgZGVzIE1vbnN0ZXJzIGVudHNwcmVjaGVuLCBhbHNvIGluIFRleHQsCisJU2NoYWRlbnNob2VoZSB1bmQgU2NoYWRlbnNhcnQuCisJQXVjaCBiZWkgTW9uc3Rlcm4gbWl0IGVpbmVyIFdhZmZlIHNvbGx0ZSBQX0hBTkRTIHZlcm51ZW5mdGlnIGdlc2V0enQKKwl3ZXJkZW4sIGFsc28gbmljaHQgenUgaG9jaC4gRGFyYXVmIHp1IGFjaHRlbiBpc3QgQXVmZ2FiZSBkZXIgUk1zLgorCisgICAgICBQX0JPRFkKKwlNb25zdGVyIHNvbGx0ZW4gbmljaHQgdWViZXIgdW5kdXJjaGRyaW5nbGljaGUgQm9kaWVzIHZlcmZ1ZWdlbiwgd2VpbAorCXNpZSBkYW5uIG51ciBtYWdpc2NoIHp1IHNjaGxhY2h0ZW4gc2luZC4gQm9kaWVzIHVlYmVyIDE1MCAob2RlcgorCVBfVE9UQUxfQUMgdWViZXIgMTUwIGluY2wuIFJ1ZXN0dW5nZW4hKSBzaW5kIGthdW0gbm9jaAorCSJoZXJrb2VtbWxpY2giIHp1IGtpbGxlbi4gTm9ybWFsZSBNb25zdGVyLCBhbHNvIG5pY2h0LW1hZ2lzY2hlLCBzaW5kCisJZWlnZW50bGljaCBpbW1lciBhbmZhZWxsaWcgZ2VnZW4gZGllIHBoeXNpa2FsaXNjaGVuIFNjaGFkZW5zdHlwZW4uCisJQWxzbyBiaXR0ZSBkYSBrZWluZSBQX1JFU0lTVEFOQ0Ugc2V0emVuLgorCisgICAgICBQX1JFU0lTVEFOQ0UvUF9WVUxCRVJBQklMSVRZL1BfUkVTSVNUQU5DRV9TVFJFTkdUSFMKKyAgICAgIFBfTk9NQUdJQworCURpZSBSRVNJU1RBTkNFIGRlciBNb25zdGVyIHNvbGx0ZSBzaWNoIGF1ZiBlaW4gb2RlciB6d2VpCisJU2NoYWRlbnN0eXBlbiBiZWdyZW56ZW4sIHVuZCBkaWUgc29sbHRlbiBhdWNoIGJlZ3J1ZW5kYmFyIHNlaW4uIEVpbgorCW5vcm1hbGVzIFdlc2VuIGdlZ2VuIEJMVURHRU9OLCBTTEFTSCBvZGVyIFBJRVJDRSB1bmVtcGZpbmRsaWNoIHp1CisJbWFjaGVuIGlzdCB1bmxvZ2lzY2ggdW5kIHNvbGx0ZSB2ZXJtaWVkZW4gd2VyZGVuLiBHbGVpY2hlcyBnaWx0IGZ1ZXIKKwlFbXBmaW5kbGljaGtlaXRlbi4KKwlFYmVuc28gc29sbHRlIGVzIEdydWVuZGUgZ2ViZW4sIHdhcnVtIGVpbiBNb25zdGVyIGVpbmUgTWFnaWUKKwl1bndpcmtzYW0gbWFjaHQuCisKKyAgICAgIFBfWFAKKwlEZXIgVG9ldHVuZ3Nib251cyBpbiBYUCwgZGllIGRlciBLaWxsZXIgZXJoYWVsdCwgYmV0cmFnZW4gMS8xMDAgZGVzCisJV2VydGVzLCBkZXIgaW4gUF9YUCBhbmdlZ2ViZW4gd2lyZC4gRGVyIFdlcnQgc2VsYnN0IHNvbGx0ZSBkZXIKKwlIYWVydGUgZGVzIE1vbnN0ZXJzIGFuZ2VtZXNzZW4gc2VpbiwgYWxzIEZhdXN0cmVnZWwgZnVlcgorCSdnZXdvZWhubGljaGUnIE5QQ3MgZ2lsdDoKKworCSAgUF9YUCA9IDUgKiBXQyAqIE1BWF9IUAorCisJRGllIFJNcyBzb2xsdGVuIGRhcmF1ZiBhY2h0ZW4sIGRhc3MgaGllciBrZWluZSB1ZWJlcmhvZWh0ZW4gV2VydGUKKwlnZXNldHp0IHdlcmRlbi4KKworCUZ1ZXIgQXR0YWNrLVNwZWxscyB1bmQgYWVobmxpY2ggZmllc2VzIGthbm4gZWluIEJvbnVzIGdlZ2ViZW4KKwl3ZXJkZW4uIEZ1ZXIgcXVlc3RyZWxldmFudGUgTlBDcyBvZGVyICJJbmZvcm1hdGlvbnMtTlBDcyIsIGRpZSBuaWNodAorCXVuYmVkaW5ndCBhbHMgTWV0emVsb2JqZWt0ZSBoZXJ1bXN0ZWhlbiwga2FubiBtYW4gYXVjaCBkaWUgRVAKKwlzZW5rZW4sIHVtIHNpZSBmdWVyIEVQLVNhbW1sZXIgdW5pbnRlcmVzc2FudCB6dSBtYWNoZW4uCisKKyAgICAgIFBfTVVSREVSX01TRy9QX0tJTExfTVNHCisJTmljaHQgamVkZXIgTlBDIGJyYXVjaHQgc2VpbmUgZWlnZW5lIE1vZXJkZXItIG9kZXIgS2lsbGVybWVsZHVuZy4KKwlCZWkgbm9ybWFsZW4gCU5QQ3Mgc29sbHRlIG1hbiBhbHNvIGRhcmF1ZiB2ZXJ6aWNodGVuLgorCisgICAgICBQX0RJRV9NU0cvUF9OT0NPUlBTRQorCVdlbm4gZWluIE5QQyBlaW4gd2VuaWcgYW5kZXJzIHVtZmFlbGx0IGFscyBzb25zdCwgdHJhZWd0IGRhcyBhdWNoCisJenVtIFNwaWVsIGJlaS4KKworICAgICAgUF9HVUFSRAorCVdlbm4gZGVyIE5QQyBuaWNodHMgYmV3YWNodCB1bmQgbmljaHQgdWViZXJtYWVzc2lnIHN0YXJrIGlzdCwgc29sbHRlCisJbWFuIGlobiBhdWNoIGZvcnRsb2NrZW4ga29lbm5lbi4gU2V0enQgUF9HVUFSRCBlbnRzcHJlY2hlbmQgdW5kCisJbGFzc3QgZGVuIE5QQyBtaXQgQWRkSXRlbSB1bmQgUkVGUkVTSF9NT1ZFX0hPTUUgZXJ6ZXVnZW4uCisKKyAgICAgIEFkZENsYXNzCisJV2VubiBpaHIgZXVyZW4gTlBDIGluIGRlbiBkZWZpbmllcnRlbiBLbGFzc2VuIGVpbm9yZG5lbiBrb2VubnQsIGRhbm4KKwltYWNodCBkYXMgYml0dGUuIEJlc2l0emVyIHZvbiBTcGV6aWFsd2FmZmVuIG9kZXIgUnVlc3R1bmdlbiB3ZXJkZW4KKwllcyBldWNoIGRhbmtlbi4KKworICBjLiBIaWxmcy0vQmVnbGVpdC1OUENzCisKKyAgICAgIEJlaSBzb2xjaGVuIE5QQyB3aXJkIGF1ZiBBdXNnZXdvZ2VuaGVpdCBXZXJ0IGdlbGVndCwgZGVyIFByb2dyYW1taWVyZXIKKyAgICAgIHNvbGx0ZSBzaWNoIHNjaG9uIHZvciBBbnRyYWctU3RlbGx1bmcgYW4gZGllIEJhbGFuY2UgR2VkYW5rZW4gZGFydWViZXIKKyAgICAgIG1hY2hlbiwgd2llIHNpY2ggZGVyIE5QQyBzZWxiZXIgdmVyaGFlbHQuCisgICAgICBCZWlzcGllbCB3YWVyZSBoaWVyIFVudmVydHJhZWdsaWNoa2VpdCBtaXQgYW5kZXJlbiBOUENzLAorICAgICAgQWdncmVzc2l2aXRhZXQgZ2VnZW51ZWJlciBhbmRlcmVuIE5QQ3MgLyBTcGllbGVybiwgV2Fua2VsLSBtdWV0aWdrZWl0LAorICAgICAgVW56dXZlcmxhZXNzaWdrZWl0LCB6ZWl0bGljaGUgQmVncmVuenVuZywgU2NodXR6IG9kZXIgU2NoYWRlbiBpbgorICAgICAgQWJoYWVuZ2lna2VpdCB2b24gQWxpZ24sIEdpbGRlIGRlcyBTcGllbGVycywgQW5ncmlmZiwgdm9tIE9ydCBkZXMKKyAgICAgIEdlc2NoZWhlbnMgb2RlciBkZXIgQmVnYWJ1bmcgZGVzIFNwaWVsZXJzIGZ1ZXIgTWFnaWUgdS5hZS4gRGVyCisgICAgICBQaGFudGFzaWUgc2luZCBoaWVyIGtlaW5lIEdyZW56ZW4gZ2VzZXR6dC4KKworU0lFSEUgQVVDSDoKKyAgICAgVmVyd2FuZHQ6ICAgIGJhbGFuY2UsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywKKyAgICAgICAgICAgICAgICAgIGdyZW56d2VydGUsIGF0dHJpYnV0c3ZlcmFlbmRlcnVuZ2VuLCByZXNpc3RlbnplbiwKKyAgICAgICAgICAgICAgICAgIGthbXBmb2JqZWt0ZSwgYmVnbGVpdG5wY3MKKyAgICAgRnVua3Rpb25lbjogIGNyZWF0ZV9kZWZhdWx0X25wYworCisxNC5GZWIgMjAwNyBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9vYmpfZ2VydWVzdCBiL2RvYy93aXovb2JqX2dlcnVlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMxZjk1NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovb2JqX2dlcnVlc3QKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIG9ial9nZXJ1ZXN0CisgKiBEaWVzZXMgRmlsZSBpc3QgVGVpbCBkZXIgTW9yZ2VuZ3JhdWVuLU11ZGxpYi4KKyAqIERpZXNlcyBGaWxlIHdpcmQgb3B0aW1hbCBmb3JtYXRpZXJ0LCB3ZW5uIFRhYnVsYXRvcmVuIDQgWmVpY2hlbiBicmVpdAorICogc2luZC4KKyAqCisgKiBBbGxnZW1laW5lcyBHZXJ1ZXN0IGZ1ZXIgZWluIE9iamVrdC4gV2VyIGVpZ2VuZSBPYmpla3RlIHNjaHJlaWJ0LAorICogc29sbHRlIHNpZSBuaWNodCBnYW56IHNvIGludGVuc2l2IGtvbW1lbnRpZXJlbiB3aWUgZGllc2VzIGhpZXIsIGFiZXIKKyAqIGhpZXIgc29sbGVuIGdsZWljaHplaXRpZywgZGllIGdydW5kbGVnZW5kZW4gTWVjaGFuaXNtZW4gZXJsYWV1dGVydAorICogd2VyZGVuLgorICoKKyAqIDE2LjA4LjkyIFJ1bWF0YQorICogVWViZXJhcmJlaXRldCBhbSAyNC4wOC45NCB2b24gVmlwZXIKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbmhlcml0ICJzdGQvdGhpbmciOyAgICAgICAgICAgIC8qIExlaXRlIGF1cyBkZW4gc3RkLU9iamVrdGVuIGFiICovCisKKyNpbmNsdWRlIDxsYW5ndWFnZS5oPiAgICAgICAgICAgLyogU3RlbGxlIE5hbWVuIGRlciBGYWVsbGUgdW5kIGRlciBHZXNjaGxlY2h0ZXIgKi8KKwkJCQkJCQkvKiBkZW0gT2JqZWt0IHp1ciBWZXJmdWVndW5nLiAqLworCitjcmVhdGUoKQoreworCTo6Y3JlYXRlKCk7CisJCS8qIERpZXNlIFplaWxlIE5JRU1BTFMgdmVyZ2Vzc2VuISEhICovCisKKwlBZGRJZCggImJhbGwiICk7ICAgICAgICAKKwlBZGRJZCggInN0cmFuZGJhbGwiICk7CisJCS8qIFVudGVyIGRpZXNlbiBCZXplaWNobnVuZ2VuIGZ1ZWhsdCBkZXIgQmFsbCBzaWNoICJhbmdlc3Byb2NoZW4iICovCisJCS8qIE1hbm4gc29sbHRlIG1pdCBJZHMgbmljaHQgc3BhcmVuLCBkYW1pdCBkaWUgU3BpZWxlciBuaWNodCBld2lnICAqLworCQkvKiBudXIgbmFjaCBkZW0gcmljaHRpZ2VuIE5hbWVuIGVpbmVzIE9iamVrdGVzIHN1Y2hlbiBtdWVzc2VuLiAqLworCisJU2V0UHJvcCggUF9OQU1FLCAiQmFsbCIgKTsKKwlTZXRQcm9wKCBQX0dFTkRFUiwgTUFMRSApOworCVNldFByb3AoIFBfQVJUSUNMRSwgMSApOworCQkvKiBEaWVzZSBNZWxkdW5nZW4gZXJtb2VnbGljaGVuIGVzIGRlciBNdWRsaWIsIGRhcyBPYmpla3QgcmljaHRpZyAqLworCQkvKiB6dSBkZWtsaW5pZXJlbi4gU2V0UHJvcChQX0FSVElDTEUsIDEpIGthbm4gd2VnZmFsbGVuLCBkYSAxIERlZmF1bHQgaXN0LiAqLworCisJU2V0UHJvcCggUF9TSE9SVCwgIkVpbiBidW50ZXIgQmFsbCIgKTsKKwlTZXRQcm9wKCBQX0xPTkcsICJXYXMgZnVlciBlaW4gaHVlYnNjaGVyIGtsZWluZXIgU3RyYW5kYmFsbC5cbiIKKwkJCSsiV2VtIGtvZW5udGVzdCBEdSBkZW4gbWFsIHp1d2VyZmVuP1xuIiApOworCQkvKiBCZXNjaHJlaWJ1bmdlbiB6dXIgQmV0cmFjaHR1bmcgZGVzIEJhbGxzLiAqLworCisJU2V0UHJvcCggUF9WQUxVRSwgMTAgKTsKKwlTZXRQcm9wKCBQX1dFSUdIVCwgMjUwICk7CisJCS8qIEJlaSBkaWVzZW4gV2VydGVuIHNvbGx0ZSBkaWUgVmVyaGFlbHRuaXNtYWVzc2lna2VpdCAqLworCQkvKiBuaWNodCBhdXMgZGVuIEF1Z2VuIGdlbGFzc2VuIHdlcmRlbi4gKi8KK30KKworaW5pdCgpCit7CisJOjppbml0KCk7CisJCS8qIE5JQ0hUIFZFUkdFU1NFTiAqLworCQkvKiBXZW5uIGtlaW5lIGVpZ2VuZW4gQWt0aW9uZW4gZGVmaW5pZXJ0IHdlcmRlbiBzb2xsZW4sIHNvIGthbm4gZGllICovCisJCS8qIEZ1bmt0aW9uIGluaXQgZ2FueiB3ZWdnZWxhc3NlbiB3ZXJkZW4uIEVpbiBpbml0LCBkYXMgbnVyICovCisJCS8qIDo6aW5pdCgpIGF1ZnJ1ZnQgaXN0IHVlYmVyZmx1ZXNzaWcuICovCisKKwlhZGRfYWN0aW9uKCAid3VyZiIsICJ3ZXJmIiwgMSApOworCWFkZF9hY3Rpb24oICJ3dXJmIiwgIndpcmYiICk7CisJCS8qIHdlcmZlLCB3ZXJmIG9kZXIgd2lyZiBqZW1hbmRlbSBkZW4gQmFsbCB6dS4gTWFuIHNvbGx0ZSBkYXJhdWYgKi8KKwkJLyogYWNodGVuLCBkYXNzIG5hdHVlcmxpY2hlIFNhZXR6ZSBhbHMgRWluZ2FiZSBha3plcHRpZXJ0IHdlcmRlbi4gKi8KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKiBEaWUgZ3J1bmRsZWdlbmRlbiBGdW5rdGlvbmVuIGVuZGVuIGhpZXIgKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qIEVpbmUgQmVpc3BpZWxha3Rpb24gZnVlciBkZW4gQmFsbC4gKi8KK3d1cmYoIGFyZ3VtZW50ICkKK3sKKwkvKiAid2VyZiBiYWxsIHJ1bWF0YSB6dSIgd2lyZCBhbHMgQXJndW1lbnQgImJhbGwgcnVtYXRhIHp1IiBiZWtvbW1lbi4gKi8KKwlzdHJpbmcgYXJnMSwgYXJnMjsKKwlzdHJpbmcgemllbDsKKwlvYmplY3QgemllbE9iajsKKworCWlmICggc3NjYW5mKCBhcmd1bWVudCwgIiVzICVzIHp1IiwgYXJnMSwgYXJnMiApICE9IDIgKSByZXR1cm4gMDsKKwkJLyogUnVlY2tnYWJlIHZvbiAwIGJlZGV1dGV0LCBkYXNzIGRpZXNlcyBPYmpla3QgbWl0IGRlciBFaW5nYWJlICovCisJCS8qIG5pY2h0cyBhbmZhbmdlbiBrb25udGUsIHVuZCBkYXNzIGRlciBHYW1lZHJpdmVyIGRhcyBuYWVjaHN0ZSAqLworCQkvKiBPYmpla3QgYmVmcmFnZW4gc29sbC4gKi8KKworCWlmICggaWQoIGFyZzEgKSApCisJCQkvKiBXZWxjaGVzIGRlciBBcmd1bWVudGUgc3ByaWNodCBkZW4gQmFsbCBhbiA/ICovCisJCQkvKiBEYXMgYW5kZXJlIG11c3MgZGFubiBkYXMgWmllbCBkZXMgQmFsbHMgc2Vpbi4gKi8KKwkJemllbCA9IGFyZzI7CisJZWxzZSBpZiAoIGlkKCBhcmcyICkgKQorCQl6aWVsID0gYXJnMTsKKwllbHNlCisJCXJldHVybiAwOworCQkJLyogS2VpbmVzIGRlciBBcmd1bWVudGUgd2FyIGRlciBCYWxsLiAqLworCisJemllbE9iaiA9IHByZXNlbnQoIHppZWwsIGVudmlyb25tZW50KCkgKTsKKwkJLyogU3VjaGUgZWluIE9iamVrdCwgZGFzIHNpY2ggYWxzIFppZWwgYW5nZXNwcm9jaGVuIGZ1ZWhsdC4gKi8KKworCWlmICggISB6aWVsT2JqICkKKwl7CisJCXdyaXRlKCAiSGllciBpc3Qga2VpbiBcIiIgKyB6aWVsICsgIlwiLlxuIiApOworCQlyZXR1cm4gMTsKKwkJCS8qIEhpZXIgd2lyZCAxIHp1cnVlY2tnZWdlYmVuLCBkYSBkZXIgQmFsbCBkYXMgS29tbWFuZG8gZGVuICAqLworCQkJLyogQmVmZWhsIGJlYXJiZWl0ZW4ga29ubnRlLiBFciBoYXQgendhciBrZWluIFppZWwgZ2VmdW5kZW4sICovCisJCQkvKiBhYmVyIG1hbiBrYW5uIGphIG5pY2h0IGFsbGVzIGhhYmVuLiA6LSkgKi8KKwl9CisJCisJaWYoICFsaXZpbmcoIHppZWxPYmogKSApCisJeworCQl3cml0ZSggIlVuZCB3aWUgc29sbCAiICsgemllbE9iai0+bmFtZShXRVIsMSkgKyAiIGRlbiBCYWxsIGZhbmdlbj9cbiIgKTsKKwkJcmV0dXJuIDE7CisJCQkvKiBOdXIgbGViZW5kZSBXZXNlbiBzb2xsZW4gQmFlbGxlIGZhbmdlbiBrb2VubmVuLiAqLworCX0KKworCXdyaXRlKCAiRHUgd2lyZnN0ICIgKyB6aWVsT2JqLT5uYW1lKFdFTiwxKSArICIgZGVuIEJhbGwgenUuXG4iICk7CisJCQkvKiBNaXR0ZWlsdW5nIGFuIGRlbiBXZXJmZXIgKi8KKwlzYXkoIFBMLT5uYW1lKFdFUiwyKSArICIgd2lyZnQgIiArIHppZWxPYmotPm5hbWUoV0VNLDIpCisJCSsgIiBlaW5lbiBCYWxsIHp1LlxuIiwgemllbE9iaiApOworCQkJLyogTWl0dGVpbHVuZyBhbiBhbGxlIFdlc2VtIGltIHNlbGJlbiBSYXVtLiAqLworCXRlbGxfb2JqZWN0KCB6aWVsT2JqLCAiSG9wcGxhLCAiICsgUEwtPm5hbWUoV0VSLDIpCisJCSsgIiB3aXJmdCBEaXIgZWluZW4gQmFsbCB6dS5cbiIgKTsKKwkJCS8qIE1pdHRlaWx1bmcgYW4gZGVuIEJld29yZmVuZW4gKi8KKworCWlmICggbW92ZSggemllbE9iaiApICkgcmV0dXJuIDE7CisJCS8qIEVzIGhhdCBnZWtsYXBwdC4gKi8KKworCW1vdmUoIGVudmlyb25tZW50KCkgKTsKKwkJLyogSW0gRmVobGVyZmFsbCBzb2xsIGRlciBCYWxsIHp1IEJvZGVuIGZhbGxlbi4gKi8KKworCXdyaXRlKCAiQWJlciAiICsgemllbE9iai0+UXVlcnlQcm9ub3VuKFdFUikKKwkJKyAiIGthbm4gaWhuIG5pY2h0IGZhbmdlbi5cbkRlciBCYWxsIHBsdW1wc3QgenUgQm9kZW4uXG4iICk7CisJc2F5KCAiQWJlciAiICsgemllbE9iai0+UXVlcnlQcm9ub3VuKFdFUikKKwkJKyAiIGthbm4gaWhuIG5pY2h0IGZhbmdlbi5cbkRlciBCYWxsIHBsdW1wc3QgenUgQm9kZW4uXG4iLCB6aWVsT2JqICk7CisJdGVsbF9vYmplY3QoIHppZWxPYmosCisJCSJBYmVyIER1IGthbm5zdCBpaG4gbmljaHQgZmFuZ2VuLlxuRGVyIEJhbGwgcGx1bXBzdCB6dSBCb2Rlbi5cbiIgKTsKKworCXJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9wYXJhcmFldW1lIGIvZG9jL3dpei9wYXJhcmFldW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNjNkYTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3BhcmFyYWV1bWUKQEAgLTAsMCArMSw4NCBAQAorUGFyYS1SYWV1bWUKKworICAgIEdydW5kc2FldHpsaWNoIHdpcmQgZWluIFBhcmEtUmF1bSBkYWR1cmNoIGdla2VubnplaWNobmV0LCBkYXNzIGFuIGRlbiAKKyAgICBEYXRlaW5hbWVuIGVpbiBebiBhbmdlaGFlbmd0IHdpcmQsIG4gZ2lidCBkaWUgRGltZW5zaW9uIGFuLiBFaW4gUmF1bSBpbiAKKyAgICBQYXJhIDEgd3VlcmRlIGFsc28gcmF1bV4xLmMgaGVpc3Nlbi4KKworICAgIE1hbiBtdXNzIHNpY2ggbmljaHQgc2VsYnN0IGRhcnVtIGt1ZW1tZXJuLCBkYXNzIFNwaWVsZXIgaW4gZGVuIHJpY2h0aWdlbgorICAgIFBhcmEtUmF1bSBiZXdlZ3Qgd2VyZGVuLCBkYXMgcGFzc2llcnQgaW0gbW92ZSgpLgorCisgICAgRGFtaXQgbWFuIGJlaSBnbGVpY2hlbiBSYWV1bWVuLCBkaWUgc2ljaCBudXIgZHVyY2ggYmVpc3BpZWxzd2Vpc2UgZGllCisgICAgQW53ZXNlbmhlaXQgZWluZXMgZmllc2VuIE1vbnN0ZXJzIHVudGVyc2NoZWlkZW4gbmljaHQgYWxsZXMgZG9wcGVsdAorICAgIGJlc2NocmVpYmVuIG11c3MsIHNvbGx0ZSBtYW4gZGFzIGJla2FubnRlIEtvbnplcHQgZGVyIFZlcmVyYnVuZworICAgIHZlcndlbmRlbi4gSGllcmZ1ZXIgZ2lidCBlcyB6d2VpIEFuc2FldHplOgorCitMT0VTVU5HIDE6CisgICAgSGFiZSBpY2ggZWluZW4gUmF1bSwgZGVyIGluIFBhcmEgZXhha3Qgc28gaXN0IHdpZSBpbiBOb3JtYWwsIHdvIG51ciBlaW5lCisgICAgU2FjaGUgaGluenVnZWZ1ZWd0IHdpcmQsIHNjaHJlaWJlIGljaCBtZWluZW4gUmF1bSBpbiBub3JtYWwgc28gd2llIGljaCBlcworICAgIGltbWVyIHR1biB3dWVyZGUsIGVyYmUgZGllc2VuIGltIFBhcmEtUmF1bSB1bmQgc2V0emUgbWVpbiBmaWVzZXMgTW9uc3RlcgorICAgIGhpbmVpbi4KKyAgICBFaW56aWdlciBVbnRlcnNjaGllZCBpbSBOb3JtYWwtUmF1bTogRGFtaXQgZXIgaW1tZXIgaW5pdGlhbGlzaWVydCB3aXJkLAorICAgIG11c3MgaWNoIGNyZWF0ZV9zdXBlcigpIGVyc3RlbGxlbiB1bmQgZGFyaW4gY3JlYXRlIGF1ZnJ1ZmVuLiBTb25zdCBidWdndAorICAgIGRlciBOb3JtYWxyYXVtIGJlaW0gQmV0cmV0ZW4sIGZhbGxzIGRlciBQYXJhcmF1bSB6dWVyc3QgYmV0cmV0ZW4gd3VyZGUsCisgICAgd2VpbCBkZXIgTm9ybWFscmF1bSBkYW5uIHp3YXIgZ2VsYWRlbiBhYmVyIHNlbGJzdCBuaWNodCBpbml0aWFsaXNpZXJ0CisgICAgd3VyZGUuCisKKyAgICBCZWlzcGllbDoKKworICAgIHJhdW0uYzoKKyAgICBpbmhlcml0ICIvc3RkL3Jvb20iOworCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAgOjpjcmVhdGUoKTsKKyAgICAgIC4uLgorICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZV9zdXBlcigpIHsKKyAgICAgIGNyZWF0ZSgpOworICAgIH0KKworICAgIHJhdW1eMS5jOgorICAgIGluaGVyaXQgInJhdW0iOworCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAgOjpjcmVhdGUoKTsKKyAgICAgIEFkZEl0ZW0oImZpZXNlc19tb25zdGVyIixSRUZSRVNIX1JFTU9WRSk7CisgICAgfQorCitMT0VTVU5HIDI6CisgICAgSGFiZSBpY2ggZWluZW4gUmF1bSwgd28gYXVjaCBpbiBOb3JtYWwgRGluZ2UgZXhpc3RpZXJlbiwgZGllIGVzIG5pY2h0IGluCisgICAgUGFyYSBnZWJlbiBzb2xsLCBrYW5uIGljaCBlaW5lbiBSYXVtIG1pdCBkZXIgRGltZW5zaW9uc251bW1lciAwIGVyc3RlbGxlbi4KKyAgICBEaWVzZXIgd2lyZCBuaWVtYWxzIGF1dG9tYXRpc2NoIGJldHJldGVuLCBhdXNzZXIgZWluIEF1c2dhbmcgZnVlaHJ0CisgICAgZXhwbGl6aXQgZG9ydCBoaW4uCisKKyAgICBCZWlzcGllbDoKKworICAgIHJhdW1eMC5jOgorICAgIGluaGVyaXQgIi9zdGQvcm9vbSI7CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKSB7CisgICAgICA6OmNyZWF0ZSgpOworICAgICAgLi4uCisgICAgfQorCisgICAgcmF1bS5jOgorICAgIGluaGVyaXQgInJhdW1eMCI7CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKSB7CisgICAgICA6OmNyZWF0ZSgpOworICAgICAgQWRkSXRlbSgiaGFybWxvc2VzX21vbnN0ZXIiLFJFRlJFU0hfUkVNT1ZFKTsKKyAgICB9CisKKyAgICByYXVtXjEuYzoKKyAgICBpbmhlcml0ICJyYXVtXjAiOworCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAgOjpjcmVhdGUoKTsKKyAgICAgIEFkZEl0ZW0oImZpZXNlc19tb25zdGVyIixSRUZSRVNIX1JFTU9WRSk7CisgICAgfQorCisKK1NJRUhFIEFVQ0g6CisgICAgbW92ZShMKSwgY3JlYXRlX3N1cGVyKEwpLCBQX1BBUkEoUCkKKworTGV0enRlIEFlbmRlcnVuZzogMTguMDEuMjAxNSwgQnVnZml4CmRpZmYgLS1naXQgYS9kb2Mvd2l6L3BhcmllcndhZmZlbiBiL2RvYy93aXovcGFyaWVyd2FmZmVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0Y2I5YmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3BhcmllcndhZmZlbgpAQCAtMCwwICsxLDE4IEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgICAgICAgUmVnZWxuIHp1ciBQcm9ncmFtbWllcnVuZyB2b24gUGFyaWVyd2FmZmVuOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N0YW5kYXJkb2JqZWt0OiAvc3RkL3dlYXBvbi5jCisKK1NpZWhlIGhpZXJ6dTogL2RvYy93aXovYmFsYW5jZSAgIChvZGVyICdtYW4gYmFsYW5jZScpCisKK0FrdHVlbGxlIEdyZW56d2VydGU6Cis9PT09PT09PT09PT09PT09PT09PQorCisgICBQYXJpZXItVHlwICAgR2VuZWhtaWd1bmdzZ3JlbnplCisgIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICBQQVJSWV9PTkxZICAgV2llIFJ1c3R1bmdlbiB2b20gVHlwIEFUX1NISUVMRAorICBQQVJSWV9UT08gICAgR2VuZXJlbGxlIEdlbmVobWlndW5nc3BmbGljaHQKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitQYXJhY2Vsc3VzQE1vcmdlbkdyYXVlbiwgMTgvMDgvMTk5OQpkaWZmIC0tZ2l0IGEvZG9jL3dpei9wb3Rpb25tYXN0ZXIgYi9kb2Mvd2l6L3BvdGlvbm1hc3RlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjhiZmQyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9wb3Rpb25tYXN0ZXIKQEAgLTAsMCArMSwxOTcgQEAKK0RlciBQb3Rpb25tYXN0ZXIgKC9zZWN1cmUvcG90aW9ubWFzdGVyKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JFU0NIUkVJQlVORworCisgICAgRnVua3Rpb246IFZlcndhbHR1bmcgZGVyIFphdWJlcnRyYWVua2UsIGRpZSBTcGllbGVyIGZpbmRlbiBrb2VubmVuLgorCisgICAgWmF1YmVydHJhZW5rZSBrb2VubmVuIHZvbiBiZWxpZWJpZ2VuIE9iamVrdGVuIGltIFNwaWVsIHZlcmdlYmVuIHdlcmRlbi4KKyAgICBKZWRlciBTcHJ1Y2ggaXN0IGluIGVpbmVyIGVpZ2VuZW4gRGF0ZWkgaW4gL3NlY3VyZS9BUkNIL1pUIGhpbnRlcmxlZ3QsCisgICAgd29iZWkgZGVyIERhdGVpbmFtZSBkYXMgYWxsZ2VtZWluZSBGb3JtYXQgPG5yPi56dCBoYWJlbiBtdXNzLiA8bnI+CisgICAgZW50c3ByaWNodCBoaWVyYmVpIGRlciBaVC1OdW1tZXIuCisKKyAgICBEaWUgVGlwcyB6dSBkZW4gVHJhZW5rZW4gd2VyZGVuIHZvbSBPcmFrZWwgL3Jvb20vb3Jha2VsIGF1c2dlZ2ViZW4sCisgICAgc29mZXJuIGRlciBTcGllbGVyIGdlbnVnIFN0dWZlbnB1bmt0ZSBmdWVyIGVpbmVuIG5ldWVuIFNwcnVjaCBlcnNwaWVsdAorICAgIGhhdCAoc2llaGUgaGllcnp1ICJoaWxmZSB6dCIpLiBEaWUgVGlwcyB3ZXJkZW4gZGFiZWkgYXVzIGRlbiBvLmcuIERhdGVpZW4KKyAgICBlaW5nZWxlc2VuLiBEZXIgWlQgd2lyZCB2b24gZGVtIHZlcmdlYmVuZGVuIE9iamVrdCBkdXJjaCBBdWZydWYgdm9uCisgICAgRmluZFBvdGlvbihzdHJpbmcgbXNnKSBpbSBTcGllbGVyb2JqZWt0IGd1dGdlc2NocmllYmVuLgorCisgICAgSW4gZGllc2VyIERhdGVpIHNpbmQgZGllIEZ1bmt0aW9uZW4gZGVzIFBvdGlvbm1hc3RlcnMgZG9rdW1lbnRpZXJ0LgorICAgIEluaGFsdDoKKworICAgIDEuIFphdWJlcnRyYWVua2UgZWludHJhZ2VuIHVuZCBha3RpdmllcmVuL2RlYWt0aXZpZXJlbgorICAgIDIuIFphdWJlcnRyYWVua2UgaW4gZWluZSBMaXN0ZSBlaW5zb3J0aWVyZW4KKyAgICAzLiBaYXViZXJ0cmFlbmtlIHZlcmxlZ2VuCisgICAgNC4gRGF0ZW4genUgWmF1YmVydHJhZW5rZW4gYWJmcmFnZW4KKyAgICA1LiBFaW4gbmV1ZXIgWlQ6IFdhcyB0dW4/CisgICAgNi4gRm9ybWF0IGRlciBaYXViZXJ0cmFuay1UaXBzCisgICAgNy4gV28gZmluZGUgaWNoIGVpZ2VudGxpY2g/CisgICAgOC4gVmVyc2NoaWVkZW5lcworCisKK0ZVTktUSU9ORU4KKworMS4gWmF1YmVydHJhZW5rZSBlaW50cmFnZW4gdW5kIGFrdGl2aWVyZW4vZGVha3RpdmllcmVuCisKKyAgIGludCBBZGRQb3Rpb25yb29tKHN0cmluZyByb29tLCBpbnQgbGlzdCkKKyAgICAgIERlciBSYXVtIDxyb29tPiB3aXJkIGFscyBuZXVlciBaVC1GdW5kb3J0IGVpbmdldHJhZ2VuIHVuZCBpbiBkaWUgTGlzdGUKKyAgICAgIG1pdCBkZXIgTnVtbWVyIDxsaXN0PiBlaW5nZWZ1ZWd0LiByb29tIG11c3MgaGllcmJlaSBkZXIgbG9hZF9uYW1lKCkgCisgICAgICBkZXMgT2JqZWt0cyBzZWluLCB1bnQgPGxpc3Q+IGRhcmYgV2VydGUgdm9uIDAgYmlzIDcgaGFiZW4uIERlciBaVAorICAgICAgd2lyZCBkYWJlaSBha3RpdmllcnQuCisgICAgICAKKyAgICAgIFJ1ZWNrZ2FiZXdlcnRlOgorICAgICAgPG51bT4gTnVtbWVyIGRlcyBuYWVjaHN0ZW4gbmV1ZW4gWlRzLCA8bnVtLTE+IGlzdCBkaWUgTnVtbWVyIGRlcworICAgICAgICAgICAgbmV1IGVpbmdldHJhZ2VuZW4gWlRzLgorICAgICAgLTEgICAgWnVncmlmZiB2ZXJ3ZWlnZXJ0CisgICAgICAtMiAgICA8cm9vbT4ga2VpbiBTdHJpbmcsIDxsaXN0PiBpc3QgbmljaHQgaW0gQmVyZWljaCAwLTcKKyAgICAgIC0zICAgIDxyb29tPiBpc3QgbmljaHQgbGFkYmFyCisgICAgICAtNCAgICA8cm9vbT4gdmVyZ2lidCBzY2hvbiBlaW5lbiAoYW5kZXJlbikgWlQKKyAgICAgIC02ICAgIERhdGVpIG1pdCBaVC1TcHJ1Y2ggKC9zZWN1cmUvQVJDSC9aVC88bnVtPi56dCkgZXhpc3RpZXJ0IG5pY2h0LgorCisgICBpbnQgQWN0aXZhdGVSb29tKHN0cmluZyByb29tKQorICAgICAgRGVyIFpUIGltIFJhdW0gPHJvb20+IHdpcmQgYWt0aXZpZXJ0LCBkLmguIGVyIGthbm4gYWt0aXYgdm9uIGRlbSBSYXVtCisgICAgICB2ZXJnZWJlbiB3ZXJkZW4uIFRlY2huaXNjaCB3aXJkIGVyIGF1cyBkZXIgTGlzdGUgZGVyIGluYWt0aXZlbiBaVHMKKyAgICAgIGF1c2dldHJhZ2VuLiA8cm9vbT4gbXVzcyBoaWVyYmVpIGRlciBsb2FkX25hbWUoKSBkZXMgUmF1bWVzIHNlaW4uCisKKyAgICAgIFJ1ZWNrZ2FiZXdlcnRlOgorICAgICAgPG51bT4gIE51bW1lciBkZXMgYWt0aXZpZXJ0ZW4gWlRzCisgICAgICAtMSAgICAgWnVncmlmZiB2ZXJ3ZWlnZXJ0CisgICAgICAtNSAgICAgdW5ndWVsdGlnZXIgWlQgKFJhdW0gaXN0IG5pY2h0IGFscyBaVC1PYmpla3QgZWluZ2V0cmFnZW4pCisgICAgICAtOCAgICAgPHJvb20+IGlzdCBiZXJlaXRzIGFrdGl2aWVydAorCisgICBpbnQgRGVhY3RpdmF0ZVJvb20oc3RyaW5nIHJvb20pCisgICAgICBEZXIgWlQgaW0gT2JqZWt0IDxyb29tPiB3aXJkIGRlYWt0aXZpZXJ0LCBkLmguIGVyIGthbm4gbmljaHQgbWVocgorICAgICAgdm9uIGRlbSBPYmpla3QgdmVyZ2ViZW4gd2VyZGVuLiBUZWNobmlzY2ggd2lyZCBlciBpbiBkaWUgTGlzdGUgZGVyCisgICAgICBpbmFrdGl2ZW4gWlRzIGVpbmdldHJhZ2VuLiA8cm9vbT4gbXVzcyBoaWVyYmVpIGRlciBsb2FkX25hbWUoKSBkZXMKKyAgICAgIFJhdW1lcyBzZWluLgorCisgICAgICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAgIDxudW0+ICBOdW1tZXIgZGVzIGdlYWVuZGVydGVuIFpUcworICAgICAgLTEgICAgIFp1Z3JpZmYgdmVyd2VpZ2VydAorICAgICAgLTUgICAgIHVuZ3VlbHRpZ2VyIFpUCisgICAgICAtOSAgICAgPHJvb20+IGlzdCBiZXJlaXRzIGluYWt0aXYKKworMi4gWmF1YmVydHJhZW5rZSBpbiBlaW5lIExpc3RlIGVpbnNvcnRpZXJlbgorCisgICBpbnQgU2V0TGlzdE5yKHN0cmluZyByb29tLCBpbnQgbGlzdCkKKyAgICAgIFRyYWVndCBkZW4gWmF1YmVydHJhbmsgaW4gUmF1bSA8cm9vbT4gaW4gZGllIExpc3RlIDxsaXN0PiBlaW4uIAorICAgICAgPHJvb20+IG11c3MgaGllcmJlaSBkZXIgbG9hZF9uYW1lKCkgZGVzIE9iamVrdHMgc2Vpbi4KKworICAgICAgUnVlY2tnYWJld2VydGU6CisgICAgICA8bnVtPiAgTnVtbWVyIGRlcyBnZWFlbmRlcnRlbiBaVHMKKyAgICAgIC0xICAgICBadWdyaWZmIHZlcndlaWdlcnQKKyAgICAgIC01ICAgICB1bmd1ZWx0aWdlciBaVAorICAgICAgLTcgICAgIDxsaXN0PiBhdXNzZXJoYWxiIGRlciB6dWdlbGFzc2VuZW4gV2VydGUsIGQuaC4gPDAgb2RlciA+NworCiszLiBaYXViZXJ0cmFlbmtlIHZlcmxlZ2VuCisKKyAgIGludCBDaGFuZ2VSb29tUGF0aChzdHJpbmcgb2xkLCBzdHJpbmcgbmV3KQorICAgICAgRGVyIFphdWJlcnRyYW5rIGluIFJhdW0gPG9sZD4gd2lyZCBpbiBkZW4gUmF1bSA8bmV3PiB1bWdldHJhZ2VuLgorCisgICAgICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAgIDxudW0+IE51bW1lciBkZXMgZXJmb2xncmVpY2ggZ2VhZW5kZXJ0ZW4gWmF1YmVydHJhbmtzCisgICAgICAtMSAgICBadWdyaWZmIHZlcndlaWdlcnQKKyAgICAgIC0yICAgIDxuZXc+IG9kZXIgPG9sZD4gb2RlciBiZWlkZSBzaW5kIGtlaW5lIFN0cmluZ3MKKyAgICAgIC0zICAgIDxvbGQ+IHZlcmdpYnQga2VpbmVuIFpULCBlcyBnaWJ0IGFsc28gbmljaHRzIHp1IHZlcmxlZ2VuLCBvZGVyCisgICAgICAgICAgICA8bmV3PiBpc3QgbmljaHQgbGFkYmFyLCBkb3J0aGluIGthbm4gYWxzbyBuaWNodCB2ZXJsZWd0IHdlcmRlbgorICAgICAgLTQgICAgPG5ldz4gaGF0IHNjaG9uIGVpbmVuIFphdWJlcnRyYW5rCisKKzQuIERhdGVuIHp1IFphdWJlcnRyYWVua2VuIGFiZnJhZ2VuCisKKyAgIG1peGVkIFF1ZXJ5UG90aW9uRGF0YShpbnQgbnVtKQorICAgICAgQWJmcmFnZSBkZXIgRGF0ZW4genUgZGVtIFpUIG1pdCBkZXIgTnVtbWVyIDxudW0+LiBBdXNnZWdlYmVuIHdpcmQgZWluCisgICAgICBNYXBwaW5nIGRlciBGb3JtIChbIG51bSA6IFJhdW1wZmFkOyBMaXN0ZW5udW1tZXIgXSkKKworICAgaW50IFF1ZXJ5SW5hY3RpdmVQb3Rpb25zKCkKKyAgICAgIExpZWZlcnQgZWluIEFycmF5IG1pdCBkZW4gTnVtbWVybiBkZXIgYWt0dWVsbCBkZWFrdGl2aWVydGVuIFpUcyB6dXJ1ZWNrLgorCisgICBpbnQgUXVlcnlBY3RpdmUobWl4ZWQgcG90aW9uKQorICAgICAgR2lidCB6dSBlaW5lciBaVC1OdW1tZXIgb2RlciBlaW5lbSBSYXVtcGZhZCBhbiwgb2IgZGVyIGJldHJlZmZlbmRlIFpUCisgICAgICBha3RpdiBpc3Qgb2RlciBuaWNodC4gV2VubiBqYSwgd2lyZCBkaWUgZW50c3ByZWNoZW5kZSBaVC1OdW1tZXIKKyAgICAgIHp1cnVlY2tnZWdlYmVuLgorICAgICAgCisgICAgICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAgIDxudW0+IE51bW1lciBkZXMgYWJnZWZyYWd0ZW4gWlRzCisgICAgICAtMSAgICBadWdyaWZmIHZlcndlaWdlcnQKKyAgICAgIC01ICAgIHVuZ3VlbHRpZ2VyIFpUCisgICAgICAtMTEgICBaVCBpc3QgbmljaHQgYWt0aXYKKyAgIAorICAgc3RyaW5nIEdldEZpbGVuYW1lQnlOdW1iZXIoaW50IG5yKQorICAgICAgQWJmcmFnZSBkZXMgRGF0ZWluYW1lbnMgenUgWmF1YmVydHJhbmsgTnVtbWVyIDxucj4uCisgICAgICAKKyAgICAgIFJ1ZWNrZ2FiZXdlcnRlOgorICAgICAgPG51bT4gTnVtbWVyIGRlcyBhYmdlZnJhZ3RlbiBaVHMKKyAgICAgIC0xICAgIFp1Z3JpZmYgdmVyd2VpZ2VydAorICAgICAgLTUgICAgdW5ndWVsdGlnZXIgWlQKKworICAgaW50IEhhc1BvdGlvbihvYmplY3Qgb2JqKQorICAgICAgQWJmcmFnZSBkZXIgWmF1YmVydHJhbmtudW1tZXIsIGRpZSB2b24gZGVtIE9iamVrdCA8b2JqPiB2ZXJnZWJlbiB3aXJkLgorICAgICAgCisgICAgICBSdWVja2dhYmV3ZXJ0ZToKKyAgICAgIDxudW0+IE51bW1lciBkZXMgYWJnZWZyYWd0ZW4gWlRzCisgICAgICAtMSAgICBadWdyaWZmIHZlcndlaWdlcnQKKyAgICAgIC0zICAgIFJhdW0gdmVyZ2lidCBrZWluZW4gWlQKKworICAgaW50IEdldExpc3RCeU51bWJlcihpbnQgbnIpCisgICAgICBBYmZyYWdlIGRlciBMaXN0ZSBha3RpdmVyIFpUcywgaW4gZGVyIGRlciBaVCBtaXQgZGVyIE51bW1lciA8bnI+CisgICAgICBlaW5nZXRyYWdlbiBpc3QuCisgICAgICBSdWVja2dhYmU6IE51bW1lciBkZXIgTGlzdGUsIGluIGRlciBkZXIgWlQgZW50aGFsdGVuIGlzdCwgc29uc3QgLTUuCisKKyAgIGludCBHZXRJbmFjdExpc3RCeU51bWJlcihpbnQgbnIpCisgICAgICBBYmZyYWdlIGRlciBMaXN0ZSBpbmFrdGl2ZXIgWlRzLCBpbiBkZXIgZGVyIFpUIG1pdCBkZXIgTnVtbWVyIDxucj4KKyAgICAgIGVpbmdldHJhZ2VuIGlzdC4KKyAgICAgIFJ1ZWNrZ2FiZTogTnVtbWVyIGRlciBMaXN0ZSwgaW4gZGVyIGRlciBaVCBlbnRoYWx0ZW4gaXN0LCBzb25zdCAtMTAuCisKKzUuIEVpbiBuZXVlciBaVDogV2FzIHR1bj8KKworICAgQWRkUG90aW9uUm9vbShuZXdyb29tLCBsaXN0ZSkgYXVmcnVmZW4uIFdlbm4gZWluIEZlaGxlciBhdWZ0cml0dCwgbXVzcworICAgbm9jaCBkZXIgWlQtVGlwIGluIGRlbSB1bnRlciA2LiBiZXNjaHJpZWJlbmVuIEZvcm1hdCBoaW50ZXJsZWd0IHdlcmRlbi4KKyAgIERlciB6dSB2ZXJ3ZW5kZW5kZSBEYXRlaW5hbWUgaXN0IGluIGRlciBGZWhsZXJtZWxkdW5nIGFuZ2VnZWJlbi4KKworNi4gRm9ybWF0IGRlciBaYXViZXJ0cmFuay1UaXBzCisKKyAgIEVpbiBCZWlzcGllbCBtaXQgendlaSBUaXBzIGZ1ZXIgZGVuc2VsYmVuIFphdWJlcnRyYW5rOgorCisgICBEaWUgWmF1YmVybWF1cyB3b2xsdHMgd29obCB2ZXJzdGVja2VuLAorICAgSW0gQnVlY2hlcndhbGQgc29sbHN0IG5pY2h0cyBlbnRkZWNrZW4sCisgICBEZW5uIFRyaW5rZ2VudXNzIGlzdCBkb3J0IHZlcnBvZW50LAorICAgU28gaXN0IG1hbnMgYXVjaCBSTCBnZXdvZWhudC4KKyAgIFhYWFhYCisgICBEZXIgUmF1bSBpc3QgcHJhbGwgdW5kIHN0YXIgZ2VmdWVsbHQsCisgICBNaXQgdmllbCBQYXBpZXIsIGRhcyBnZXJuIHZlcmh1ZWxsdAorICAgSW4gWmF1YmVyYnVjaGZvcm0gbWFuY2hlcyBPZCwKKyAgIERhcyBoaWxmdCBEaXIgZGFubiBhdXMgRGVpbmVyIE5vdC4KKyAgICUlJSUlCisKKyAgIERpZSBQcm96ZW50emVpY2hlbiBzaW5kIGRhcyBFbmRlemVpY2hlbiwgZGFuYWNoIGtvZW5uZW4gZXZlbnR1ZWxsZQorICAgS29tbWVudGFyZSBzdGVoZW4uIFhYWFhYIGlzdCBkYXMgVHJlbm56ZWljaGVuIHp3aXNjaGVuIHp3ZWkgVGlwcworICAgenVtIHNlbGJlbiBaVC4gQXVzd2lya3VuZyBpc3QsIGRhc3MgZGVyIFNwaWVsZXIgYmVpIGplZGVtIEF1ZnJ1ZgorICAgc2VpbmVyIFphdWJlcnRyYW5rLUxpc3RlIHp1ZmFlbGxpZyBlaW5lbiBTcHJ1Y2ggYXVzIGRlciBMaXN0ZSAKKyAgIGFuZ2V6ZWlndCBiZWtvbW10LgorCis3LiBXbyBmaW5kZSBpY2ggZWlnZW50bGljaD8KKworICAgLSBkaWUgWmF1YmVydHJhbmstVGlwczogICAgICAgICAgIC9zZWN1cmUvQVJDSC9aVC8qLnp0CisgICAtIGRpZSBHZXNhbXRsaXN0ZSBkZXIgWlRzOiAgICAgICAgL3NlY3VyZS9BUkNIL1BPVElPTlMuZHVtcAorICAgLSBkYXMgU2F2ZWZpbGUgZGVzIFBvdGlvbm1hc3RlcnM6IC9zZWN1cmUvQVJDSC9wb3Rpb25zLm8KKyAgIC0gZGFzIExvZ2ZpbGUgZnVlciBBZW5kZXJ1bmdlbjogICAvbG9nL0FSQ0gvUE9USU9OU19NT0QubG9nCisKKzguIFZlcnNjaGllZGVuZXMKKworICAgbWl4ZWQgVGlwTGVzZW4oaW50IG5yKQorICAgICAgRGFzIE9yYWtlbCBhdWYgZGVyIEhvY2hlYmVuZSBydWZ0IGRpZSBaYXViZXJ0cmFuay1UaXBwcyBhYiwgZGllc2UKKyAgICAgIHdlcmRlbiB2b24gZGVyIFBsYXR0ZSBnZWxlc2VuIHVuZCBhbHMgU3RyaW5nIGFuIGRhcyBPcmFrZWwgCisgICAgICB6dXJ1ZWNrZ2VsaWVmZXJ0LgorICAgaW50IER1bXBMaXN0KCkKKyAgICAgIERpZSBLb21wbGV0dGxpc3RlIGRlciBaVHMgaW4gZGFzIER1bXBmaWxlIC9zZWN1cmUvQVJDSC9QT1RJT05TLmR1bXAKKyAgICAgIHNjaHJlaWJlbi4KKworU0lFSEUgQVVDSDoKKyAgIFNwaWVsZXJiZWZlaGxlOiB6YXViZXJ0cmFlbmtlCisgICBNYWdpZXJiZWZlaGxlOiAgdHJhZW5rZQorICAgUHJvcGVydGllczogICAgIFBfUE9USU9OUk9PTVMsIFBfS05PV05fUE9USU9OUk9PTVMKKyAgIEFubGVpdHVuZzogICAgICB3aXovemF1YmVydHJhZW5rZQorICAgWlQgZmluZGVuOiAgICAgIEZpbmRQb3Rpb24oTCkKKworMjAxMy1NYWktMzAgQXJhdGhvcm4KKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9xdWVzdHMgYi9kb2Mvd2l6L3F1ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzQ1MDIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9xdWVzdHMKQEAgLTAsMCArMSwxNjAgQEAKK0xlaXRmYWRlbiBmdWVyIGRpZSBRdWVzdGVyc3RlbGx1bmcvLWFibmFobWU6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK1F1ZXN0cyBpbSBNb3JnZW5HcmF1ZW46CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCZWdpbm5lbiB3aXIgbWl0IGVpbmVtIFppdGF0OgorCisgIEJvaW5nIHNhZ3Q6ICdEYXMgTW9yZ2VuR3JhdWVuIGlzdCBlaW4gUXVlc3RtdWQuJworCitEYXMgTW9yZ2VuR3JhdWVuIHVudGVyc2NoZWlkZXQgc2ljaCB2b24gZWluaWdlbiBhbmRlcmVuIE11ZHMsIGluZGVtCitlYmVuIGVpbiBzZWhyIGdyb3NzZXIgV2VydCBhdWYgUXVlc3RzIGdlbGVndCB3aXJkLiBNaXR0bGVyd2VpbGUgaGFiZW4KK3dpciBqYSBhdWNoIHNjaG9uIGVpbmUgb3JkZW50bGljaGUgQW56YWhsIFF1ZXN0cy4gVHJvdHpkZW0gaXN0IGVzCit3aWNodGlnIHVuZCB3aXJkIGltbWVyIHdpZWRlciBnZXJuZSBnZXNlaGVuLCB3ZW5uIG5ldWUgUXVlc3RzIGdlcHJvZ2d0Cit3ZXJkZW4uIERhcnVlYmVyaGluYXVzIGJsZWlidCBtYW4gYWxzIE1hZ2llciBuYXR1ZXJsaWNoIGF1Y2ggbGFlbmdlcgoraW0gU3BpZWwgYmVrYW5udC4gR2VyYWRlIHdlaWwgUXVlc3RzIGF1Y2ggZWluZSB3aWNodGlnZSBBbmZvcmRlcnVuZworenVtIFNlaGVydHVtIHNpbmQsIG11c3MgaWhuZW4gZWluIGJlc29uZGVyZXMgQXVnZW5tZXJrIHNlaXRlbnMgZGVzCitwcm9ncmFtbWllcmVuZGVuIE1hZ2llcnMgZ2V3aWRtZXQgd2VyZGVuIHVuZCBiZXNvbmRlcnMgc29yZ2ZhZWx0aWcKK2dlYXJiZWl0ZXQgd2VyZGVuLiBEYXp1IGdpYnQgZXMgbnVuIGltIGZvbGdlbmRlbiBlaW4gcGFhciBIaW53ZWlzZSwKK2RpZSBtYW4gYWxzIFF1ZXN0cHJvZ3JhbW1pZXJlciBlaW5oYWx0ZW4gc29sbHRlLCBkYW1pdCBkaWUgUXVlc3QKK2dlbmVobWlndCB3ZXJkZW4ga2FubiB1bmQgYmVpIGRlbiBTcGllbGVybiBndXQgYW5rb21tdC4KKworUXVlc3RpZGVlbjoKKy0tLS0tLS0tLS0tCisKK0RpZXMgaXN0IGRlciB3aWNodGlnc3RlIEJlc3RhbmR0ZWlsIGVpbmVyIFF1ZXN0LiBIaWVyIHNvbGx0ZSBtYW4gc2ljaAorc2VociB2aWVsIE11ZWhlIGdlYmVuLCBkZW5uIG1pdCBkZW0gS29uemVwdCBzdGVodCB1bmQgZmFlbGx0IGVpbmUKK1F1ZXN0LiBEYW1pdCBTcGllbGVyIFNwYXNzIGFuIGVpbmVyIFF1ZXN0IGhhYmVuLCBpc3QgZWluZSBndXRlIFN0b3J5LAorZWluIGd1dGVzIEtvbnplcHQgdW5hYmRpbmdiYXIuIEVpbiB3aWNodGlnZXIgRXJmb2xnc2Zha3RvciBpc3QgYW4KK2RpZXNlciBTdGVsbGUgYXVjaCwgc2ljaCByZWNodHplaXRpZyBtaXQgZGVtIGJldHJvZmZlbmVuIFJlZ2lvbnNtYWdpZXIKK3VuZCBkZW0gUXVlc3RlcnptYWdpZXIgYWJ6dXNwcmVjaGVuLiBTcGFldGVyIGhhdCBtYW4gZGEgdmllbGxlaWNodAora2VpbmUgR2VsZWdlbmhlaXQgbWVociB1bmQgaGF0IHNpY2ggdmllbCBBcmJlaXQgZ2VtYWNodCB1bmQgbXVzcword2llZGVyIHZpZWwgYWVuZGVybi4gRGFoZXI6IFZPUkhFUklHRVIgQUJTUFJBQ0hFIFZFUk1FSURFVAorQUVSR0VSLiBJbnNiZXNvbmRlcmUgYmVpIFF1ZXN0cyBtaXQgaG9oZW0gTWV0emVsYW50ZWlsIHNvbGx0ZQordW5iZWRpbmd0IFJ1ZWNrc3ByYWNoZSBnZWhhbHRlbiB3ZXJkZW4sIGRhIHNvbGNoZSBRdWVzdHMgbmljaHQgc28KK2dlcm5lIGdlc2VoZW4gc2luZC4gCisKK1F1ZXN0dW1zZXR6dW5nOgorLS0tLS0tLS0tLS0tLS0tCisKK0JlaSBkZXIgVW1zZXR6dW5nIGthbm4gbWFuIHNpY2ggYW4gZGllIFJlZ2VsbiBoYWx0ZW4sIGRpZSBhbGxnZW1laW4KK2Z1ZXIgZGVuIEFuc2NobHVzcyB2b24gR2ViaWV0ZW4gZ2VsdGVuIChOUENzLCBCYWxhbmNlLi4uKS4gQmVzb25kZXJlCitBdWZtZXJrc2Fta2VpdCB2ZXJkaWVuZW4gZGllIFRlaWxlLCBkaWUgenVyIExvZXN1bmcgZGVyIFF1ZXN0Citub3R3ZW5kaWcgc2luZCAoUXVlc3RpdGVtcywgUXVlc3RtYXN0ZXIuLi4pICBFcyBlbXBmaWVobHQgc2ljaCBhdWNoIGluCitkaWVzZXIgUGhhc2UsIGltbWVyIG1hbCBSdWVja3NwcmFjaGUgbWl0IGRlbSBSZWdpb25zbWFnaWVyIG9kZXIKK1F1ZXN0ZXJ6bWFnaWVyIHp1IGhhbHRlbi4KKworRWluZSBRdWVzdGJlbG9obnVuZyB3aXJkIHZvbiBTcGllbGVybiBpbW1lciB3aWVkZXIgZ2VybmUKK2dlbm9tbWVuLiBEYWJlaSBzb2xsdGUgbWFuIGFsbGVyZGluZ3MgZWluIGdld2lzc2VzIEF1Z2VubWFzcworYW5sZWdlbi4gTmljaHQgZnVlciBqZWRlIFF1ZXN0IG11c3MgZXMgZWluZSBzdXBlciB0b2xsZQorQXV0by1Mb2FkLUJlbG9obnVuZyBnZWJlbi4gCisKK0Z1ZXIgZGFzIGtvbmtyZXRlIFVtc2V0emVuIHNlaWVuIG5vY2ggZWluIHBhYXIgSGlud2Vpc2UgZ2VnZWJlbjoKKworIC0gRnVlciBkaWUgQXRtb3NwaGFlcmUgdW5kIGRpZSBEZXRhaWxzIHNvbGx0ZSBtYW4gc2VociB2aWVsIE11ZWhlCisgICB2ZXJ3ZW5kZW4sIHNvIGRhc3Mgc2ljaCBkZW0gU3BpZWxlciBkZXIgbG9naXNjaGUgQXVmYmF1CisgICBlcnNjaGxpZXNzdC4gRXMgaXN0IGZ1ZXIgU3BpZWxlciBhdXNzZXJvcmRlbnRsaWNoIGFlcmdlcmxpY2gsIGVpbmUKKyAgIFF1ZXN0IHp1IHNwaWVsZW4sIGRlcmVuIEJlc3RhbmR0ZWlsZSBpcmdlbmR3aWUgaW4gZGVyIEx1ZnQKKyAgIGhhZW5nZW4uIAorIC0gRXMgc29sbHRlIHNpY2ggc2VociBndXQgdWViZXJsZWd0IHdlcmRlbiwgd2llIGRpZSBRdWVzdCByZWFnaWVydCwgCisgICB3ZW5uIG1laHJlcmUgU3BpZWxlciBnbGVpY2h6ZWl0aWcgZGllIFF1ZXN0IHNwaWVsZW4gd29sbGVuIChkYXMKKyAgIHdpcmQgaW5iZXNvbmRlcmUgZGlyZWt0IG5hY2ggZGVtIEFuc2NobHVzcyBkZXIgRmFsbCBzZWluKS4KKyAgIERpZXMgYmV6aWVodCBzaWNoIGluc2Jlc29uZGVyZSBhdWYgUXVlc3QtT2JqZWt0ZSwgZGllIGVpbmVtIFNwaWVsZXIKKyAgIGV2dGwuIG5pY2h0IHp1ciBWZXJmdWVndW5nIHN0ZWhlbiwgd2VpbCBzaWUgZ2VyYWRlIGVpbiBhbmRlcmUKKyAgIGdlbm9tbWVuIGhhdCwgb2RlciBRdWVzdC1OUENzLCBkaWUgd2ljaHRpZ2UgQXVza3VlbmZ0ZSBoYWJlbiwKKyAgIGFiZXIgbGVpZGVyIHVtZ2VuaWV0ZXQgd3VyZGVuLiBXaWNodGlnZSBRdWVzdC1OUENzIHNvbGx0ZW4gbmFjaAorICAgTW9lZ2xpY2hrZWl0IGJlc3NlciBuaWNodCBhbHMgTWV0emVsb3BmZXIga29uemlwaWVydCB3ZXJkZW4uCisgLSBOYWNoIE1vZWdsaWNoa2VpdCBzb2xsdGUgZXMgbmljaHQgZGFzIGh1bmRlcnRzdGUgTGFieXJpbnRoIGdlYmVuLgorIC0gV2VyZGVuIGZ1ZXIgZGllIFF1ZXN0IGFsbGdlbWVpbmUgT2JqZWt0ZSAod2llIFNjaGF1ZmVsbiwgU2VpbGUKKyAgIGV0Yy4pIGJlbm9ldGlndCwgc28gc29sbHRlbiBhdWNoIGRpZSBhbiBhbmRlcmVyIFN0ZWxsZSBpbSBNdWQKKyAgIGVyaGFlbHRsaWNoZW4gT2JqZWt0ZSBmdW5rdGlvbmllcmVuIG9kZXIgZXMgc29sbHRlIGZ1ZXIgZGVuIFNwaWVsZXIKKyAgIGVya2VubmJhciBzZWluLCB3aWVzbyBudXIgZWluIHNwZXppZWxsZXMgT2JqZWt0IGRlbiBad2VjayBlcmZ1ZWxsdC4KKyAtIFF1ZXN0b2JqZWt0ZSBzb2xsdGVuIGZ1ZXIgU3BpZWxlciBuaWNodCBlcnN0ZWxsYmFyIHNlaW4gKC0+CisgICBTZWhlcmJldXRlbCkuIAorIC0gV2lyZCBkZXIgUXVlc3Rmb3J0c2Nocml0dCBpbiBlaW5lbSBNYXN0ZXIgZ2VzcGVpY2hlcnQsIHNvIGVtcGZpZWhsdAorICAgZXMgc2ljaCwgZGllIERhdGVuIHp1IGRlbiBTcGllbGVybiBuYWNoIGRlbSBMb2VzZW4gZGVyIFF1ZXN0IHdpZWRlcgorICAgenUgbG9lc2NoZW4gKGViZW5zbyBiZWkgU3BpZWxlcm4sIGRpZSBzaWNoIGdlbG9lc2NodCBoYWJlbikuCisgLSBFcyBzb2xsdGVuIHNpY2ggYXVjaCBHZWRhbmtlbiBnZW1hY2h0IHdlcmRlbiwgd2llIGRpZSBRdWVzdCBiZWltCisgICBFaW5zY2hsYWZlbiwgQmVlbmRlbiBvZGVyIGJlaSBlaW5lbSBDcmFzaCByZWFnaWVydC4gRXMgbXVzcyBhbHNvCisgICBzaWNoZXJnZXN0ZWxsdCBzZWluLCBkYXNzIGRlciBTcGllbGVyIGRhbm4gYmVpbSBuYWVjaHN0ZW4gCisgICBRdWVzdHZlcnN1Y2ggbmljaHQgaW4gZWluZW4gaW5rb25zaXN0ZW50ZW4gWnVzdGFuZCBsYW5kZXQuCisgLSBHdXQgaXN0LCBkZW4gUXVlc3R2ZXJsYXVmIGVpbiB3ZW5pZyB2YXJpYWJsZSB6dSBnZXN0YWx0ZW4sIHNvCisgICBkYXNzIGRpZSBRdWVzdCBuaWNodCBvaG5lIHdlaXRlcmVzIGR1cmNoc2tyaXB0YmFyIGlzdC4KKyAtIEJlaSBQZmxpY2h0cXVlc3RzIGJpdHRlIGJlYWNodGVuLCBkYXNzIE5QQ3MsIGRpZSB6d2luZ2VuZCB6dSB0b2V0ZW4KKyAgIHNpbmQsIG5pY2h0IHp1IHN0YXJrIHNpbmQuCisgLSBEYXMgT2JqZWt0LCB3ZWxjaGVzIGRpZSBRdWVzdCBuYWNoIGRlbSBMb2VzZW4gc2V0emVuIHNvbGwsIG11c3MgZWluZW4gCisgICBBdWZydWYgdm9uIEdpdmVRdWVzdCBlbnRoYWx0ZW4uIERlc3dlaXRlcmVuIGlzdCBiZWltIGVyc3RlbiBMb2VzZW4gCisgICBpbiBlaW4gUXVlc3Rsb2dmaWxlIGltIFZlcnplaWNobmlzIC9sb2cvcXVlc3QgZWluIEVpbnRyYWcgenUgbWFjaGVuLCAKKyAgIGRhc3MgZGVyIFNwaWVsZXIgZGllIFF1ZXN0IGJlc3RhbmRlbiBoYXQuIERpZXNlbiBFaW50cmFnIGJpdHRlIAorICAgbWl0IHdyaXRlX2ZpbGUgc2NocmVpYmVuLgorICAKK1F1ZXN0dGVzdCAoTWFnaWVyKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworTnVuIGtvbW10IGVpbiBlbnRzY2hlaWRlbmRlciBTY2hyaXR0IGZ1ZXIgZGllIFF1ZXN0LiBEZW5uIGpldHp0CitzY2hhdWVuIGF1Y2ggZWlubWFsIE1hZ2llcmtvbGxlZ2VuIHVlYmVyIGRpZSBRdWVzdCB1bmQga29lbm5lbiBhdWYKK0J1Z3MsIGxvZ2lzY2hlIEZlaGxlciB1bmQga2xlaW5lcmUgUHJvYmxlbWUgaGlud2Vpc2VuLiBVbSBtb2VnbGljaHN0Cit2aWVsZSBkZXJhcnRpZ2VyIERpbmdlIGFienVmYW5nZW4sIHNvbGx0ZSBtYW4gYXVmIGRlbiBRdWVzdHRlc3QgdmllbAorWmVpdCB2ZXJ3ZW5kZW4gdW5kIE1hZ2llcmtvbGxlZ2VuIGJpdHRlbiwgZGllIFF1ZXN0IGVpbm1hbCB6dSB0ZXN0ZW4uIAorCitRdWVzdHRlc3QgKFNwaWVsZXIpOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2VubiBlcyBtb2VnbGljaCBpc3QsIHNvbGx0ZSBhdWNoIGVpbiBTcGllbGVyIGRpZSBRdWVzdCBlaW5tYWwKK3Rlc3Rlbi4gSmVkb2NoIHNpbmQgZGF6dSBkaWUgUmVnZWxuIGZ1ZXIgU3BpZWxlcnRlc3RpZXMgKCdtYW4KK3Rlc3RpZXMnKSBlaW56dWhhbHRlbi4gRXMgaXN0IGluc2Jlc29uZGVyZSBkYXJhdWYgenUgYWNodGVuLCBkYXNzCit3ZW5uIGRlbSBUZXN0aWUgZXZlbnR1ZWxsZSBGb3JzY2hlcnB1bmt0ZSBvLmFlLiB6dWdlc3Byb2NoZW4gd2VyZGVuLAorZGllIG5lZ2F0aXZlbiBTZWl0ZW4gZGVyIFF1ZXN0IG5pY2h0IHdlZ2ZhbGxlbiBkdWVyZmVuIChzb3dlaXQgc2llCituaWNodCBhdWYgRmVobGVybiBiZXJ1aGVuKS4gCisKK0FibmFobWUgZGVyIFF1ZXN0OgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NvZmVybiBub2NoIG5pY2h0IGdlc2NoZWhlbiwgbXVzcyBudW4gZGVyIFJlZ2lvbnNtYWdpZXIgZGllIFF1ZXN0CithYm5laG1lbi4gKElzdCBkZXIgUHJvZ3JhbW1pZXJlciBzZWxic3QgZGVyIFJlZ2lvbnNtYWdpZXIsIHNvbGx0ZSBlcgorZWluZW4gTWFnaWVya29sbGVnZW4gYml0dGVuLCBkaWVzIHp1IG1hY2hlbiAoZnVlciBkaWUgbWVpc3RlbiBSZWdpb25lbgorZ2lidCBlcyBqYSBtZWhyIGFscyBlaW5lbiBSTSkuKSBXZW5uIGRpZXMgYWxsZXMgZ2VzY2hlbiBpc3QsIGthbm4gZGVyCitRdWVzdGVyem1hZ2llciBkaWUgUXVlc3QgYWJuZWhtZW4uIAorCitEaWUgQmVhcmJlaXR1bmcgZGVyIFF1ZXN0IGdlaHQgYW0gc2NobmVsbHN0ZW4sIHdlbm4gZGVtIFF1ZXN0LUVNCitmb2xnZW5kZSBJbmZvcyB2b3JsaWVnZW4gKHouQi4gaW4gZWluZXIgTWFpbCk6CisKKyAtIEVpbmUga3VyemUgQmVzY2hyZWlidW5nIGRlciBRdWVzdCwgYWxzbyB3b3J1bSBnZWh0IGVzIHVlYmVyaGF1cHQ/CisgLSBFaW5lIExvZXN1bmdzc2tpenplIChiaXR0ZSBuaWNodCBpbSBIb21lLVZlcnplaWNobmlzIHJ1bWxpZWdlbgorICAgbGFzc2VuKQorIC0gRWluZSBCZXNjaHJlaWJ1bmcgZGVyIHRlY2huaXNjaGVuIExvZXN1bmcsIGFsc28gd2llIGlzdCBkYXMgZ2FuemUKKyAgIHByb2dyYW1taWVydD8gCisgLSBJbiB3ZWxjaGVtIE9iamVrdCB3aXJkIGRpZSBRdWVzdCBtaXR0ZWxzIEdpdmVRdWVzdCBnZXNldHp0PworIC0gRWluZSBBdWZzdGVsbHVuZywgd2VsY2hlIEZpbGVzIHp1IGRlciBRdWVzdCBnZWhvZXJlbiB1bmQgd28gc2llCisgICBzaWNoIGJlZmluZGVuLgorIC0gRWluZSBMaXN0ZSBkZXIgQWJoYWVuZ2lna2VpdGVuIHp1IGFuZGVyZW4gVGVpbGVuIGltIE11ZD8gKEdpbGRlbi1OUENzLAorICAgTU5QQ3MuLikKKyAtIEVpbmUgRWluc2NoYWV0enVuZyBkZXIgU2Nod2llcmlna2VpdCBkZXIgUXVlc3QuIFdpZSBndXQgc29sbHRlIG1hbgorICAgc2Vpbj8gV2VsY2hlbiBMZXZlbD8gV2FzIGZ1ZXIgU3RhdHM/Li4uCisgLSBFaW5lbiBWb3JzY2hsYWcsIHdpZXZpZWxlIEFQcyBmdWVyIGRpZSBRdWVzdCB2ZXJnZWJlbiB3ZXJkZW4gc29sbGVuLgorIC0gRWluZW4gVm9yc2NobGFnLCB3ZWxjaGVuIFNwcnVjaCBkZXIgV2FuZGVyZXIgZGVuIFNwaWVsZXJuIHNhZ2VuCisgICBzb2xsLgorIC0gRWluZSBMaXN0ZSBkZXIgTWFnaWVyIHVuZCBTcGllbGVyLCBkaWUgZGllIFF1ZXN0IHNjaG9uIGdldGVzdGV0IGhhYmVuLgorCitEYW5hY2ggc2NoYXV0IHNpY2ggZGVyIFF1ZXN0LUVNIGRpZSBRdWVzdCBhbiB1bmQgbGVndCBtaXQgZGVtCitQcm9ncmFtbWllcmVyIHp1c2FtbWVuIEFQcywgU2Nod2llcmlna2VpdHNncmFkLCBkZW4gU3BydWNoIGZ1ZXIgZGVuCitXYW5kZXJlciBldGMuIGZlc3QuIERhbm4gd2lyZCBkaWUgUXVlc3Qgdm9tIFF1ZXN0LUVNIGVpbmdldHJhZ2VuLgorCitRdWVzdGFuc2NobHVzczoKKy0tLS0tLS0tLS0tLS0tLQorCitadW0gQW5zY2hsdXNzIGRlciBRdWVzdCBzb2xsdGUgbWFuIG5hY2ggTW9lZ2xpY2hrZWl0IGViZW5mYWxscyBvbmxpbmUKK3NlaW4sIHVtIGV2ZW50dWVsbGUgUHJvYmxlbWUsIEJ1Z3MgenUgYmVzZWl0aWdlbi4gQXVjaCBzb2xsdGUgbWFuIG5hY2gKK0Fuc2NobHVzcyBkZXIgUXVlc3QgZ2V3aXNzZW5oYWZ0IHNlaW4gUmVwZmlsZSBhYmFyYmVpdGVuIHVtIFR5cG9zLAorSWRlZW4gdW5kIEJ1Z3MgYWJ6dWFyYmVpdGVuLgorCitTaWVoZSBhdWNoOgorLS0tLS0tLS0tLS0KKworIFF1ZXJ5UXVlc3QsIEdpdmVRdWVzdCwgd3JpdGVfZmlsZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1p1bGV0enQgZ2VhZW5kZXJ0OiBNb24sIDE3LiBKdWwgMjAwMCwgMTI6MTY6NDEgdm9uIFpvb2suCisKZGlmZiAtLWdpdCBhL2RvYy93aXovcXVlc3RzLmRvYyBiL2RvYy93aXovcXVlc3RzLmRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGM5MWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9xdWVzdHMuZG9jCkBAIC0wLDAgKzEsNjYgQEAKKyBEYXMgUXVlc3RzeXN0ZW0gd2lyZCBpbiBNb3JnZW5HcmF1ZW4gdm9uIGVpbmVtIHplbnRyYWxlbiBRdWVzdGhhbmRsZXIKK2dlc3RldWVydC4gRGllc2VyIHN0ZWxsdCBkaWUgZm9sZ2VuZGVuIEZ1bmt0aW9uZW4genVyIFZlcmZ1ZWd1bmc6CisKK0FkZFF1ZXN0KHN0cmluZyBxdWVzdG5hbWUsIGludCBxdWVzdHBvaW50cywgaW50IGV4cGVyaWVuY2UsCisgICAgICAgICBzdHJpbmcgKmFsbG93ZWRvYmosIHN0cmluZyBoaW50LCBpbnQgZGlmZmljdWx0eSwgaW50IG5lZWRlZCkKKyBEaWVzZSBGdW5rdGlvbiBkZWZpbmllcnQgZWluZSBRdWVzdCB1bmQgZ2lidCBzaWUgenVyIEJlbnV0enVuZyBkdXJjaCBkaWUKKyBTcGllbGVyIGZyZWkuIFNpZSBkYXJmIG51ciB2b24gRXJ6bWFnaWVybiBhdWZnZXJ1ZmVuIHdlcmRlbi4KKyBCZWRldXR1bmcgZGVyIFBhcmFtZXRlcjoKKyAgIHF1ZXN0bmFtZSBnaWJ0IGRlbiBOYW1lbiBkZXIgenUgZGVmaW5pZXJlbmRlbiBRdWVzdCBhbi4gRXMgZGFyZiBiZXJlaXRzCisgICAgICAgICAgICAgZWluZSBRdWVzdCBkaWVzZXMgTmFtZW5zIGdlYmVuLCBpaHJlIFBhcmFtZXRlciB3ZXJkZW4gZGFubgorICAgICAgICAgICAgIGdlYWVuZGVydC4KKyAgIHF1ZXN0cG9pbnRzIGdpYnQgZGllIFphaGwgZGVyIFF1ZXN0cHVua3RlIGFuLCBkaWUgZGVyIFNwaWVsZXIgZnVlciBkaWUKKyAgICAgICAgICAgICAgIExvZXN1bmcgZGllc2VyIFF1ZXN0IGFuZ2VyZWNobmV0IGJla29tbXQuIE11c3MgPjAgc2Vpbi4KKyAgIGV4cGVyaWVuY2UgZ2lidCBkaWUgWmFobCBkZXIgRXJmYWhydW5nc3B1bmt0ZSBhbiwgZGllIGRlciBTcGllbGVyIGZ1ZXIKKyAgICAgICAgICAgICAgZWluZSBRdWVzdCBiZWtvbW1lbiBrYW5uLiBESUVTRSBaQUhMIEtBTk4gPDAgU0VJTiEKKyAgIGFsbG93ZWRvYmogaXN0IGVpbiBBcnJheSBtaXQgZGVuIEZpbGVuYW1lbiBkZXIgT2JqZWt0ZSwgZGllIGRpZXNlIFF1ZXN0IGFscworICAgICAgICAgICAgICBkdXJjaCBlaW5lbiBTcGllbGVyIGdlbG9lc3Qga2VubnplaWNobmVuIGR1ZXJmZW4uIERhcnVlYmVyaGluYXVzCisgICAgICAgICAgICAgIGR1ZXJmZW4gRXJ6bWFnaWVyIGRpZXMgaW1tZXIgdHVuLgorICAgaGludCBpc3QgZWluIFN0cmluZywgZGVyIFRpcHMgenVyIExvZXN1bmcgZGVyIFF1ZXN0IGVudGhhZWx0LiBEaWVzZXIgU3RyaW5nCisgICAgICAgIHdpcmQgZGVtIFNwaWVsZXIgdm9tIE9yYWtlbCBhbHMgSGlud2VpcyBnZWdlYmVuLgorICAgZGlmZmljdWx0eSBpc3QgZWluZSBaYWhsIHp3aXNjaGVuIDAgdW5kIDIwLCBkaWUgZGVuICJTY2h3aWVyaWdrZWl0c2dyYWQiCisgICAgICAgICAgICAgIGRlciBRdWVzdCBhbmdpYnQuIDAgaGF0IGVpbmUgYmVzb25kZXJlIEJlZGV1dHVuZywgbmFlbWxpY2ggZGllLAorICAgICAgICAgICAgICBkYXMga2VpbmUgRWluc2NoYWV0enVuZyB2b3JsaWVndC4KKyAgIG5lZWRlZCBsZWd0IGZlc3QsIG9iIGRpZSBRdWVzdCB2b24gZWluZW0gU3BpZWxlciBnZWxvZXN0IHdlcmRlbiBtdXNzLCBiZS0KKyAgICAgICAgICB2b3IgZXIgTWFnaWVyIHdlcmRlbiBrYW5uLiBGYWxscyBuZWVkZWQgIT0wIGlzdCwgTVVTUyBlciBkaWUgUXVlc3QKKyAgICAgICAgICBsb2VzZW4sIHVuYWJoYWVuZ2lnIHZvbiBkZXIgOTAlLVJlZ2VsLgorCitSZW1vdmVRdWVzdChzdHJpbmcgcXVlc3RuYW1lKTsKKyBHZWdlbnN0dWVjayB6dSBBZGRRdWVzdCwgbG9lc2NodCBlaW5lIFF1ZXN0LiBLYW5uIG5hdHVlcmxpY2ggZWJlbmZhbGxzIG51cgorIHZvbiBFcnptYWdpZXJuIGF1ZmdlcnVmZW4gd2VyZGVuLiBESUUgU1BJRUxFUiwgRElFIERJRSBRVUVTVCBTQ0hPTiBHRUxPRVNUCisgSEFCRU4sIEJFSEFMVEVOIERJRSBFTlRTUFJFQ0hFTkRFTiBRVUVTVFBVTktURSAhIQorCitRdWVyeVJlYWR5Rm9yV2l6KG9iamVjdCBwbGF5ZXIpCisgRGllc2VyIEZ1bmt0aW9uIG11c3MgZWluIFBsYXllcm9iamVrdCB1ZWJlcmdlYmVuIGJla29tbWVuIHVuZCBwcnVlZnQsIG9iCisgZGVyIFNwaWVsZXIgc2VpdGVucyBkZXIgUXVlc3RzIGJlcmVpdCBpc3QgenVyIEF1ZnN0dWZ1bmcgenVtIE1hZ2llciwgZGgKKyBvYiBlciA5MCUgZGVyIFFQIHNvd2llIGFsbGUgendpbmdlbmQgdm9yZ2VzY2hyaWViZW5lbiBRdWVzdHMgKHNpZWhlCisgQWRkUXVlc3QsIFBhcmFtZXRlciBuZWVkZWQpIGdlbG9lc3QgaGF0LiBGYWxscyBkaWVzIGRlciBGYWxsIGlzdCwgbGllZmVydAorIGRpZSBGdW5rdGlvbiBlaW5lIDEgenVydWVjay4gV2VubiBlciBkaWUgOTAlIG5pY2h0IGhhdCwgZWluZSAtMS4gRmFsbHMKKyBpaG0gbm9ldGlnZSBRdWVzdHMgZmVobGVuLCBlaW5lIExpc3RlIGRlciBuaWNodCBnZWxvZXN0ZW4sIG5vZXRpZ2VuIFF1ZXN0cy4KKworUXVlcnlRdWVzdChxdWVzdG5hbWUpCisgTGllZmVydCBlaW5lIC0xLCBmYWxscyBrZWluZSBRdWVzdCBkaWVzZXMgTmFtZXMgZWluZ2V0cmFnZW4gaXN0LCBzb25zdAorIGVpbmVuIEFycmF5IG1pdCBkZW4gRGF0ZW4gZGVyIFF1ZXN0LCBpbiBkZXIgUmVpaGVuZm9sZ2UsIGluIGRlciBzaWUgaW4KKyBBZGRRdWVzdCBlaW5nZWdlYmVuIHdlcmRlbi4gRGFiZWkgaXN0IHF1ZXN0cG9pbnRzIGRhcyBlcnN0ZSBBcnJheWVsZW1lbnQuCisKK1F1ZXJ5QWR2YW5jZUV4cChvYmplY3QgcGxheWVyKQorIFN0ZWxsdCBmZXN0LCBvYiBkZXIgU3BpZWxlciBwbGF5ZXIgZ2VudWVnZW5kIFF1ZXN0cHVua3RlIGhhdCwgdW0gc2VpbmUKKyBFcmZhaHJ1bmcgenUgZXJob2VoZW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2VpdGVyaGluIGVudGhhZWx0IGplZGVzIFBsYXllcm9iamVrdCBlaW4gUXVlc3QtTW9kdWwsIGRhcyBkaWUgZm9sZ2VuZGVuCitGdW5rdGlvbmVuIG9mZmVyaWVydDoKKworR2l2ZVF1ZXN0KHN0cmluZyBxdWVzdG5hbWUpCisgTWFya2llcnQgZWluZSBRdWVzdCBiZWkgZGVtIFBsYXllciBhbHMgZ2Vsb2VzdC4gRXMgd2lyZCBnZXRlc3RldCwgb2IgZGllCisgQWt0aW9uIHZvbiBlaW5lbSAiYWxsb3dlZF9vYmplY3QiIHZvcmdlbm9tbWVuIHdpcmQuIERpZSBRdWVzdHB1bmt0ZSB3ZXJkZW4KKyBlbnRzcHJlY2hlbmQgZ2V1cGRhdGVkLgorCitRdWVyeVF1ZXN0cygpCisgR2lidCBlaW5lIEFsaXN0IG1pdCBkZW4gTmFtZW4gZGVyIHZvbSBQbGF5ZXIgZ2Vsb2VzdGVuIFF1ZXN0cyB6dXJ1ZWNrLgorCitRdWVyeVFQKCkKKyBHaWJ0IGRpZSBBbnphaGwgZGVyIHZvbSBQbGF5ZXIgZXJyZWljaHRlbiBRdWVzdHB1bmt0ZSB6dXJ1ZWNrLgorCitRdWVyeVF1ZXN0KHN0cmluZyBxdWVzdG5hbWUpCisgU3RlbGx0IGZlc3QsIG9iIGVpbiBTcGllbGVyIGRpZSBRdWVzdCBnZWxvZXN0IGhhdCBvZGVyIG5pY2h0LgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9yZWdpb25zbGVpdGZhZGVuIGIvZG9jL3dpei9yZWdpb25zbGVpdGZhZGVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MjhkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3JlZ2lvbnNsZWl0ZmFkZW4KQEAgLTAsMCArMSwyMDAgQEAKKworSGFsbG8sIHdpbGxrb21tZW4gaW4gZGVuIHVuZW5kbGljaGVuIFdlaXRlbiBkZXIgUmVnaW9uc3ZlcnplaWNobmlzc2UhCisKK0R1IG1vZWNodGVzdCBpbiBlaW5lciBSZWdpb24gbWl0cHJvZ3JhbW1pZXJlbj8gUHJpbWEsIG5ldWUga3JlYXRpdmUgCitNaXRhcmJlaXRlciBzaW5kIGplZGVyemVpdCB3aWxsa29tbWVuISBEdSBiaXN0IGhlcnpsaWNoIGVpbmdlbGFkZW4sIG1pdCAKK0RlaW5lbiBJZGVlbiB6dXIgRW50d2lja2x1bmcgYmVpenV0cmFnZW4uCisKK1VtIGRpZSBQcm9ncmFtbWllcnVuZyB1bmQgYW5zY2hsaWVzc2VuZGUgQWJuYWhtZSBmdWVyIGFsbGUgQmV0ZWlsaWd0ZW4KK21vZWdsaWNoc3QgcmVpYnVuZ3Nsb3MgenUgZ2VzdGFsdGVuLCBzZWllbiBEaXIgZGllIGluIGRpZXNlciBIaWxmZXNlaXRlCitnZW5hbm50ZW4gRGluZ2UgYW5zIEhlcnogZ2VsZWd0LiBEaWVzZSBsYXNzZW4gc2ljaCBpbiBmb2xnZW5kZSBLYXRlZ29yaWVuCitlaW50ZWlsZW46CisKKzEpIEZvcm1hbGVzIHp1bSBDb2Rlc3RpbAorMikgSW5oYWx0bGljaGUgQW5mb3JkZXJ1bmdlbgorMykgV2FzIG5pY2h0IGFremVwdGllcnQgd2lyZAorNCkgV2FzIGlzdCB2b3IgZGVtIEFuc2NobHVzcyB6dSBiZWFjaHRlbj8KKworCisxKSBGb3JtYWxlcyB6dW0gQ29kZXN0aWwKKworbyAgI3ByYWdtYSBzdHJvbmdfdHlwZXMsc2F2ZV90eXBlcyBzb2xsIGluIGFsbGVuIEZpbGVzIHZlcndlbmRldCB3ZXJkZW4sCisgICBhYiBEcml2ZXItVmVyc2lvbiBMRF8zLjUueCB3aXJkIGF1Y2ggcnJ0dF9jaGVja3MgZHJpbmdlbmQgZW1wZm9obGVuLgorCitvICBEZXIgQ29kZSBzb2xsIGtlaW5lIFplaWxlbiBtaXQgbWVociBhbHMgNzggWmVpY2hlbiBlbnRoYWx0ZW4uCisKK28gIERlciBDb2RlIHNvbGwgc2F1YmVyIGVpbmdlcnVlY2t0IHVuZCBzb3JnZmFlbHRpZyBmb3JtYXRpZXJ0IHNlaW4sIGFiZXIKKyAgIGJpdHRlIG9obmUgVGFidWxhdG9yZW4uCisKK28gIFZlcndlbmRlIGtlaW5lIExhbWJkYS1DbG9zdXJlcyEgV2FzIGF1Y2ggaW1tZXIgRHUgdm9yaGFzdDogRXMgZ2VodAorICAgb2huZS4gRXMgc2VpIGF1c2RydWVja2xpY2ggYXVmIGRpZSBNb2VnbGljaGtlaXQgdm9uIGlubGluZS1DbG9zdXJlcworICAgdmVyd2llc2VuLCB3ZW5uIER1IHVuYmVkaW5ndCB2ZXJtZWlkZW4gd2lsbHN0LCBlaW5lIHNlcGFyYXRlIEZ1bmt0aW9uCisgICB6dSBzY2hyZWliZW4uCisKK28gIEtvbW1lbnRpZXJlIERlaW5lbiBDb2RlISBJbnNiZXNvbmRlcmUgZG9ydCwgd28ga29tcGxleGVyZSBPYmpla3QtCisgICBJbnRlcmFrdGlvbmVuIHN0YXR0ZmluZGVuLCBvZGVyIHdvIGltcGxpeml0IGJlc29uZGVyZSBFaWdlbnNjaGFmdGVuCisgICAoei5CLiBkZXIgTXVkbGliLCBvZGVyIG1hdGhlbWF0aXNjaGUgIkZlYXR1cmVzIikgZ2VudXR6dCB3ZXJkZW4sIGRpZSBpbQorICAgQ29kZSBuaWNodCBhdWYgZGVuIGVyc3RlbiBCbGljayBlcnNpY2h0bGljaCBvZGVyIGR1cmNoc2NoYXViYXIgc2luZC4KKyAgIERhdW1lbnJlZ2VsOiAiV2VubiBEdSBsYWVuZ2VyIGFscyBlaW5lIE1pbnV0ZSB1ZWJlciBlaW5lIFplaWxlIG5hY2hkZW5rZW4KKyAgIG11c3N0ZXN0LCBrb21tZW50aWVyZSBzaWUuIiA7LSkgUmVjaG5lIGltbWVyIGRhbWl0LCBkYXNzIGplbWFuZCwgZGVyCisgICBEZWluZW4gQ29kZSBsaWVzdCwga2VpbmUgQWhudW5nIGhhdCwgd2FzIER1IGRhIGVpZ2VudGxpY2ggdHVzdC4gOi0pCisKK28gIFdpcmYgYml0dGUgbmFjaCBBYnNjaGx1c3MgZGVyIEFyYmVpdGVuIFBsYXR6aGFsdGVyLUNvZGUgcmF1cyAoei5CLiBsZWVyZQorICAgQWRkRGV0YWlsKCktQW53ZWlzdW5nZW4pIHVuZCBlbnRmZXJuZSBuaWNodCBmdWVyIGRhcyBHZWJpZXQgYmVub2V0aWd0ZQorICAgRGF0ZWllbiBhdXMgZGVuIFZlcnplaWNobmlzc2VuLgorCitvICBTcGVpY2hlcnVuZyB2b24gRGF0ZW4gaW4gc2VjdXJlLVZlcnplaWNobmlzc2VuIHNvbGwgYml0dGUgbnVyIHNlaHIKKyAgIHNwYXJzYW0gZXJmb2xnZW4gdW5kIG51ciBpbiBBYnN0aW1tdW5nIG1pdCBkZW0gUk0uCisKK28gIHNhdmVfb2JqZWN0KCkgYml0dGUgc2VociBzcGFyc2FtIHZlcndlbmRlbiAobmljaHQgYmVpIGplZGVyIERhdGVuLQorICAgYWVuZGVydW5nLCBiZWkgQmVkYXJmIGluIHJlc2V0L3JlbW92ZSkuCisKK28gIFdlbm4gRGVmaW5lcyB6dW0gRWluc2F0eiBrb21tZW4sIHZlcndlbmRlIHNpZSBiaXR0ZSBtb2VnbGljaHN0IHNwYXJzYW0KKyAgIHVuZCBzb3JnZSBkYWZ1ZXIsIGRhc3MgRGVmaW5lcyBrbGFyIGFscyBzb2xjaGUgZXJrZW5uYmFyIHNpbmQuIEF1c3NlciBpbgorICAgRmFlbGxlbiwgd28gZXMgZ2FyIG5pY2h0IGFuZGVycyBnZWh0LCBzb2xsdGVzdCBEdSBrZWluZSBDb2RlLURlZmluZXMKKyAgIHZlcndlbmRlbiwgZGllIG1laHIgdW1mYXNzZW4gYWxzIGVpbmZhY2hlIEZ1bmt0aW9uc2F1ZnJ1ZmUgd2llIHouQi4KKyAgICAgICNkZWZpbmUgVFAgdGhpc19wbGF5ZXIoKQorICAgRnVlciB1ZWJsaWNoZSBTdGFuZGFyZGZhZWxsZSBleGlzdGllcnQgYmVyZWl0cyBlaW5lIEhlYWRlcmRhdGVpIGluIGRlciAKKyAgIE11ZGxpYiB1bnRlciAvc3lzL2RlZmluZXMuaC4gCisKK28gIFNvbGx0ZXN0IER1IGJlc3RpbW10ZSBFcmVpZ25pc3NlIGluIERlaW5lbSBHZWJpZXQgbG9nZ2VuIHdvbGxlbiAoei5CLgorICAgKE1pbmktKVF1ZXN0YWJzY2hsdWVzc2Ugb2RlciBiZXNvbmRlcmUgS2lsbHMpLCBkYW5uIGJlbnV0emUgYml0dGUgCisgICBsb2dfZmlsZSgpLCBzbyBkYXNzIGRpZSBMb2dmaWxlcyBuYWNoIC9sb2cvIGdlc2NocmllYmVuIHdlcmRlbi4gWnVzYWV0emxpY2gKKyAgIHdlcmRlbiBzbyBlcnN0ZWxsdGUgTG9nZmlsZXMgYXV0b21hdGlzY2ggYmVpIEVycmVpY2hlbiBlaW5lciBiZXN0aW1tdGVuCisgICBEYXRlaWdyb2Vzc2Ugcm90aWVydCwgc28gZGFzcyBzaWNoIGRlciBQbGF0enZlcmJyYXVjaCBpbiBHcmVuemVuIGhhZWx0LgorICAgRGFzIFByb3Rva29sbGllcmVuIG1pdHRlbHMgd3JpdGVfZmlsZSgpIGluIFJlZ2lvbnN2ZXJ6ZWljaG5pc3NlbiB1bnRlciAKKyAgIC9kLyBpc3QgZ3J1bmRzYWV0emxpY2ggTklDSFQgZXJ3dWVuc2NodC4gCisgICBOYWNoIEFic3ByYWNoZSBLQU5OIGVzIGZ1ZXIgU0VMVEVORSB1bmQgV0lDSFRJR0UgTWVsZHVuZ2VuIGVybGF1YnQgd2VyZGVuLAorICAgbWl0dGVscyB3cml0ZV9maWxlKCgpIG5hY2ggL2xvZy8genUgc2NocmVpYmVuLgorCitvICBXZW5uIER1IGluIERlaW5lbSBHZWJpZXQgRGF0ZW4gb2RlciBDb2RlIGFibGVnc3QsIGRlciBuaWNodCBmdWVyIAorICAgamVkZXJtYW5ucyBBdWdlbiBiZXN0aW1tdCBpc3QgKFF1ZXN0bG9lc3VuZ2VuLCBHZWJpZXRza2FydGVuLCBTYXZlZmlsZXMKKyAgIHZvbiBxdWVzdHJlbGV2YW50ZW4gKE1hc3Rlci0pT2JqZWt0ZW4pLCBzb2xsdGVzdCBEdSBpbiBBYnN0aW1tdW5nIG1pdAorICAgRGVpbmVtIFJlZ2lvbnNtYWdpZXIgdWViZXJsZWdlbiwgZGllc2UgaW4gZWluIC4vc2VjdXJlLy1WZXJ6ZWljaG5pcworICAgenUgdmVyc2NoaWViZW4sIGRhbWl0IHNpY2hlcmdlc3RlbGx0IGlzdCwgZGFzcyBhdWNoIHRhdHNhZWNobGljaCBudXIKKyAgIGJlcmVjaHRpZ3RlIE1hZ2llciBkYXJhdWYgWnVncmlmZiBlcmhhbHRlbi4gRGVubiBiZWRlbmtlLCBkYXNzIExlc2UtCisgICB1bmQgU2NocmVpYnJlY2h0ZSBudXIgZnVlciBDb2RlZGF0ZWllbiBnZXBydWVmdCB3ZXJkZW4sIGplZG9jaCBuaWNodAorICAgZnVlciBiZWxpZWJpZ2Ugc29uc3RpZ2UgVGV4dGRhdGVpZW4uCisKK28gIEVzIHNlaSBhdXNkcnVlY2tsaWNoIGF1ZiBkaWUgTWFucGFnZXMgImdvb2RzdHlsZSIsICJlZmZpemllbnoiLCBldGMuCisgICB2ZXJ3aWVzZW4uCisKKworRGFzIHNvbGwgamV0enQgbmljaHQgaGVpc3NlbiwgZGFzcyBkZXIgQW5zY2hsdXNzIHZvbiBDb2RlIGthdGVnb3Jpc2NoCithYmdlbGVobnQgd2VyZGVuIHdpcmQsIGRlciBkaWVzZSBGb3JtYWxpZW4gbmljaHQgZXJmdWVsbHQuIChBdXNuYWhtZTogTGFtYmRhLQorQ2xvc3VyZXMgd2VyZGVuIGluIGRlbiBSZWdpb25lbiBuaWNodCBtZWhyIGFremVwdGllcnQuKSBJY2ggbW9lY2h0ZSBhYmVyCit3aXJrbGljaCBuYWNoZHJ1ZWNrbGljaCBkYXJ1bSBiaXR0ZW4sIHNpZSBhdXMgZWluZW0gZWluZmFjaGVuIEdydW5kCitlaW56dWJhdWVuOiBEdSB3aXJzdCBuaWNodCBpbW1lciBkZXIgZWluemlnZSBzZWluLCBkZXIgRGVpbmVuIENvZGUgbGVzZW4gdW5kCit3YXJ0ZW4gbXVzcywgYXVjaCBpbiBEZWluZXIgQWJ3ZXNlbmhlaXQga29lbm5lbiBCdWdzIGF1ZnRyZXRlbi4gVW5kIGRhbm4gaXN0CitlcyB3ZXNlbnRsaWNoIGVpbmZhY2hlciwgZWluZW4gTWluaW1hbHN0YW5kYXJkIHp1IGhhYmVuLCBkZXIgZXMgYWxsZW4KK2VybW9lZ2xpY2h0LCBkZW4gQ29kZSBhdWNoIGltIE1HIHp1IGxlc2VuIHVuZCBkb3J0IHp1IGZpeGVuLiBEZW5uIG5pY2h0IGltbWVyCit3aXJkIGVzIG1vZWdsaWNoIHNlaW4sIHNpY2ggRGF0ZWllbiBoZXJ1bnRlcnp1bGFkZW4gdW5kIGxva2FsIHp1IGJlYXJiZWl0ZW4uCisKK1p1bSBCdWdmaXhpbmcgYW4gZGllc2VyIFN0ZWxsZSBhdXMgYWt0dWVsbGVtIEFubGFzcyBlaW5lIEFubWVya3VuZzogRXMgd2lyZAordm9uIGplZGVtIGFrdGl2ZW4gUmVnaW9uc21pdGFyYmVpdGVyIGVyd2FydGV0LCBkYXNzIGVyIGVpbmVuIEZlaGxlcnRldWZlbAorKC9vYmovdG9vbHMvZmVobGVydGV1ZmVsKSBiZXNpdHp0IHVuZCBkZXNzZW4gRmVobGVybGlzdGUgcmVnZWxtYWVzc2lnCitkdXJjaHNpZWh0IHVuZCBhdWZnZXRyZXRlbmUgRmVobGVyIHVuZCBXYXJudW5nZW4gYmVoZWJ0LiAoT2t0LiAyMDA3KQorCisKKzIpIEluaGFsdGxpY2hlIEFuZm9yZGVydW5nZW46CisKK28gIFdlbm4gRHUgZWluIGtvbXBsZXR0IG5ldWVzIEdlYmlldCBzY2hyZWliZW4gbW9lY2h0ZXN0LCBkYXMgaW4gZWluZXIgUmVnaW9uIAorICAgc2VpbmVuIFBsYXR6IGZpbmRlbiBzb2xsLCBzcHJpY2ggYml0dGUgZGllIHRoZW1hdGlzY2hlIEF1c3JpY2h0dW5nIG1pdAorICAgZGVtIFJNIGFiLCBiZXZvciBEdSBhbmZhZW5nc3QsIENvZGUgenUgc2NocmVpYmVuLiBGYWxscyB2b24gRGVpbmVuIElkZWVuCisgICBpcmdlbmRldHdhcyBuaWNodCBoaWVyaGVyIHBhc3NlbiBzb2xsdGUsIGxhZXNzdCBzaWNoIGRhcyBtaXQgd2VzZW50bGljaAorICAgd2VuaWdlciBGcnVzdCBpbSBWb3JmZWxkIGtsYWVyZW4sIGFscyB3ZW5uIGhpbnRlcmhlciBkYXMgaGFsYmUgR2ViaWV0CisgICB1bWdlYmF1dCB3ZXJkZW4gbXVlc3N0ZS4gU29sbHRlIHNpY2ggZGllIGtvbnplcHRpb25lbGxlIEF1c3JpY2h0dW5nIAorICAgb2RlciBkZXIgVW1mYW5nIHdhZWhyZW5kIGRlciBQcm9ncmFtbWllcnVuZyBncnVuZGxlZ2VuZCBhZW5kZXJuLCBiZXNwcmljaAorICAgZGllcyBiaXR0ZSBrdXJ6IG1pdCBkZW0gUk0uCisKK28gIE9iIG5ldWUgb2RlciBhbHRlIFJlY2h0c2NocmVpYnVuZywgaXN0IGltIHdlc2VudGxpY2hlbiBEaXIgc2VsYnN0IHVlYmVyLQorICAgbGFzc2VuLCBqZWRvY2ggd2FlcmUgZXMgc2Nob2VuLCB3ZW5uIER1IGRpZSBTcGllbGVyLUFucmVkZW4gd2llICJmcnVlaGVyIgorICAgdWVibGljaCBncm9zcyBzY2hyZWliZW4gd3VlcmRlc3QgKCJEdSIsICJEaWNoIiwgIkRlaW4iKS4KKworbyAgRXMgbXVlc3NlbiBpbiBqZWRlbSBSYXVtIGdld2lzc2UgU3RhbmRhcmRkZXRhaWxzIHZvcmhhbmRlbiBzZWluLCB6LkIuCisgICBCb2RlbiwgRGVja2UsIFdhZW5kZSwgSGltbWVsIChTb25uZSwgV29sa2VuKSwgZXRjLiBEaWVzIGthbm4gbWFuIHNlaHIKKyAgIGJlcXVlbSBtaXQgZGVtICJPdGVzdGVyIiBwcnVlZmVuLgorICAgRXMgc2VpIGFiZXIgYXVzZHJ1ZWNrbGljaCBkYXJhdWYgaGluZ2V3aWVzZW4sIGRhc3MgZGVyIE90ZXN0ZXIga2VpbmVzZmFsbHMKKyAgIGJlbnV0enQgd2VyZGVuIHNvbGx0ZSwgdW0gc2FlbXRsaWNoZSB2b3JoYW5kZW5lbiBTdWJzdGFudGl2ZSBiaXMgaW5zCisgICBrbGVpbnN0ZSB6dSBiZXNjaHJlaWJlbi4gRXMgaXN0IHNjaG9lbiwgd2VubiBPYmpla3RlIG1vZWdsaWNoc3Qgdm9sbC0KKyAgIHN0YWVuZGlnIGJlc2NocmllYmVuIHdlcmRlbiwgYWJlciBtYW4gc29sbHRlIGVzIGF1Y2ggbmljaHQgdWViZXJ0cmVpYmVuLgorCitvICBXYXMgYml0dGUgbnVyIGluIEF1c25haG1lZmFlbGxlbiBnZW1hY2h0IHdlcmRlbiBzb2xsdGUsIGlzdCwgRGV0YWlscywgCisgICBJbmZvcyBvZGVyIExhbmctL0t1cnpiZXNjaHJlaWJ1bmdlbiBhdXMgU3RhbmRhcmRyYWV1bWVuIHp1IGluaGVyaXRlbi4KKworbyAgRmFsbHMgRHUgQmVzY2hyZWlidW5nZW4vQXVzZ2FiZW4gaW4gQVNDSUktR3JhZmlrIGVpbmJpbmRlbiBtb2VjaHRlc3QsIGFjaHRlCisgICBiaXR0ZSBkYXJhdWYsIGRhc3MgRHUgYXVmIGplZGVuIEZhbGwgZWluZW4ga3VyemVuIEFsdGVybmF0aXZ0ZXh0IG1pdC0KKyAgIGxpZWZlcnN0IHVuZCBkaWVzZW4gYXVzZ2lic3QsIHdlbm4gZGVyIFNwaWVsZXIgUF9OT19BU0NJSV9BUlQgZ2VzZXR6dCBoYXQuCisgICBFcyBiZXN0ZWh0IGltbWVyIGRpZSBNb2VnbGljaGtlaXQsIGRhc3MgU3BpZWxlciBtaXQgU2Voc2Nod2FlY2hlIG9kZXIKKyAgIEJsaW5kZSBEZWluZSBPYmpla3RlIGFuc2NoYXVlbiwgdW5kIGRpZXNlIGtvbW1lbiBtaXQgT2JqZWt0ZW4gaW4gcmVpbmVyCisgICBBU0NJSS1HcmFmaWsgbmljaHQgenVyZWNodC4KKyAgIChTaWVoZSBhdWNoIGRpZSBNYW5wYWdlIHp1IFBfTk9fQVNDSUlfQVJUIHVuZCAiaGlsZmUgZ3JhZmlrIi4pCisKK28gIEVpbmUgQW5tZXJrdW5nIHp1IGRlbiBTY2hhZGVuc2FydGVuIERUX0hPTFkgdW5kIERUX1VOSE9MWSBzb2xsIG5pY2h0CisgICB1bmVyd2FlaG50IGJsZWliZW46IEVzIHdpcmQgdm9uIHZpZWxlbiBTcGllbGVybiB1bmQgTWFnaWVybiBhbHMgbG9naXNjaAorICAgdW5kIGF0bW9zcGhhZXJpc2NoIG5pY2h0IGJlZ3J1ZW5kYmFyIGVtcGZ1bmRlbiwgd2VubiBHZWdlbnN0YWVuZGUgb2RlcgorICAgTlBDcyBkaWVzZSBiZWlkZW4gU2NoYWRlbnNhcnRlbiBnbGVpY2hlcm1hc3NlbiBlaW5zZXR6ZW4gYnp3LiB2ZXJ1cnNhY2hlbgorICAga29lbm5lbi4gVmVyZ2xlaWNoYmFyZXMgZ2lsdCBmdWVyIGRpZSBnbGVpY2h6ZWl0aWdlIEFid2VociBiZWlkZXIgCisgICBTY2hhZGVuc2FydGVuLiBXZW5uZ2xlaWNoIGJpc2hlciBkaWVzYmV6dWVnbGljaCBrZWluZSBrbGFyZSBFaW5pZ3VuZworICAgZXJ6aWVsdCB3ZXJkZW4ga29ubnRlLCBzb2xsIGFuIGRpZXNlciBTdGVsbGUgZGVubm9jaCBlbXBmb2hsZW4gd2VyZGVuLAorICAgdm9uIGVpbmVyIGdsZWljaHplaXRpZ2VuIE51dHp1bmcgdm9uIERUX0hPTFkgdW5kIERUX1VOSE9MWSBhYnp1c2VoZW4uCisgICBEZXIgenVzdGFlbmRpZ2UgUmVnaW9uc21hZ2llciBtdXNzIGFiZXIgYXVmIGplZGVuIEZhbGwgaW4gS2VubnRuaXMKKyAgIGdlc2V0enQgd2VyZGVuIHVuZCBlbnRzcHJlY2hlbmRlIE9iamVrdGUgenVyIFBydWVmdW5nIHZvcmdlbGVndCBiZWtvbW1lbiwKKyAgIGZhbGxzIGRpZXNlIE51dHp1bmcgZGVubm9jaCBmdWVyIHVudW1nYWVuZ2xpY2ggZ2VoYWx0ZW4gd2lyZC4KKworCiszKSBXYXMga2VpbmVzZmFsbHMgYWt6ZXB0aWVydCB3aXJkCisKK28gIEZpbGVzLCBkaWUgaW4gL3BsYXllcnMgbGllZ2VuLCBpbmNsLiBIZWFkZXJmaWxlcy4gRGllcyBlcnNjaHdlcnQgZGFzCisgICBSZXBhcmllcmVuIHZvbiBCdWdzIHVuZ2VtZWluIHVuZCBicmluZ3QgZWluZSBnZXdpc3NlIFVudWViZXJzaWNodGxpY2hrZWl0CisgICBtaXQgc2ljaC4gQml0dGUgYXVjaCBuaWNodHMgYXVzIC9wbGF5ZXJzIGluaGVyaXRlbiAoQXVzbmFobWVuIGhpZXJ2b24gc2luZCAKKyAgIGF1ZmdydW5kIGVpbmVzIG5ldWVuIERyaXZlci1GZWF0dXJlcyBudXIgbm9jaCBtaXQgSGlsZmUgZWluZXMgRXJ6bWFnaWVycyAKKyAgIG1vZWdsaWNoLiBLdXJ6IGdlc2FndDogZXMgZ2lidCBlaW5lIFdoaXRlbGlzdCB2b24gT2JqZWt0ZW4sIGRpZSBkYXMgCisgICBkdWVyZmVuLiBBbGxlIGFuZGVyZW4gZHVlcmZlbiBkYXMgcGVyIERlZmF1bHQgbmljaHQuKS4KKworCis0KSBXYXMgaXN0IHZvciBkZW0gQW5zY2hsdXNzIHp1IGJlYWNodGVuPworCitvICBDb2RlIG11c3Mgdm9sbHN0YWVuZGlnIGZlcnRpZyBzZWluLiBEYXMgaGVpc3N0IGluc2Jlc29uZGVyZSwgZGFzcyAKKyAgIERlYnVnLSB1bmQgbmljaHQgbWVociBiZW5vZXRpZ3RlciBDb2RlIGVudGZlcm50IHd1cmRlIHVuZCBkYXNzIGFsbGUgCisgICBlcmZvcmRlcmxpY2hlbiBLb21tZW50YXJlIHZvcmhhbmRlbiBzaW5kLgorCitvICBBYm5haG1lIGR1cmNoIGRlbiBSTSB1bmQgZ2dmLiBkZW4gZnVlciBHZXNlbGxlbnN0dWVja2UgenVzdGFlbmRpZ2VuIEVNCisgICBtdXNzIGVybGVkaWd0IHNlaW4uIFJlZ2lvbnNtYWdpZXIgc2luZCBhbmdlaGFsdGVuLCBlaWdlbmUgR2ViaWV0ZSwgZGllIHp1bQorICAgQW5zY2hsdXNzIGluIGRlciBlaWdlbmVuIFJlZ2lvbiBnZXBsYW50IHNpbmQsIHZvbiBhbmRlcmVuIE1hZ2llcm4gYWJuZWhtZW4KKyAgIGxhc3Nlbi4KKworbyAgRGVyIE1hZ2llciBpc3QgYW5nZWhhbHRlbiwgZGFzIEdlYmlldCBkdXJjaCBUZXN0c3BpZWxlciB0ZXN0ZW4genUgbGFzc2VuCisgICAoc2llaGUgaGllcnp1IGRpZSBUZXN0c3BpZWxlci1SZWdlbG4pLiBPYiBlaW4gU3BpZWx0ZXN0IGFscyBWb3JhdXNzZXR6dW5nCisgICBmdWVyIGRpZSBBYm5haG1lIGdlZm9yZGVydCB3aXJkLCBlbnRzY2hlaWRldCBkZXIgenVzdGFlbmRpZ2UgUk0uIEVyIGthbm4KKyAgIGRlbiBUZXN0IGF1Y2ggc2VsYnN0IGR1cmNoZnVlaHJlbiBvZGVyIGdhbnogZGFyYXVmIHZlcnppY2h0ZW4uCisKK28gIFF1ZXN0cyB1bmQgTWluaXF1ZXN0cyBtdWVzc2VuIHZvbSB6dXN0YWVuZGlnZW4gUXVlc3QtRU0gZ2V0ZXN0ZXQsCisgICBlaW5nZXRyYWdlbiB1bmQgYWt0aXZpZXJ0IHdvcmRlbiBzZWluLgorCitvICBGZWVkYmFjayBkZXIgVGVzdHNwaWVsZXIgdW5kIHRlc3RlbmRlbiBNYWdpZXIgc29sbHRlIHVtZ2VzZXR6dCBzZWluLgorCitvICBGb3JzY2hlcnB1bmt0ZSBtdWVzc2VuIHZvbSB6dXN0YWVuZGlnZW4gRU0gZWluZ2V0cmFnZW4gd29yZGVuIHNlaW4uCisKK28gIEJhbGFuY2UtR2VuZWhtaWd1bmdlbiAoT2JqZWt0ZSwgSGVpbHVuZywgZ2dmLiBHaWxkZW5iYWxhbmNlKSBtdWVzc2VuIAorICAgdm9ybGllZ2VuOyBkaWUgZ2VuZWhtaWd0ZW4gRWNrcGFyYW1ldGVyIHNvbGxlbiBuYWNodm9sbHppZWhiYXIgaW0gCisgICBHZWJpZXRzdmVyemVpY2huaXMgZG9rdW1lbnRpZXJ0IHNlaW46IGVudHdlZGVyIGltIGpld2VpbGlnZW4gRmlsZSwgb2RlcgorICAgYWxzIFRleHRmaWxlIHouQi4gaW4gZWluZW0gRG9rdS1WZXJ6ZWljaG5pcy4KKworbyAgS3JhZXV0ZXIgZnVlciBkZW4gS3JhZXV0ZXJza2lsbCBtdWVzc2VuIGdlbmVobWlndCB1bmQgZWluZ2V0cmFnZW4gd29yZGVuIAorICAgc2VpbiAoZGllcyBrYW5uIGplZGVyIEVNIG1pdCBkZW0gS3JhZXV0ZXJ0b29sIGVybGVkaWdlbikuCisKK28gIEhpbndlaXM6IEVyc3RraWxscyBtdWVzc2VuIE5JQ0hUIFpXSU5HRU5EIHZvbSB6dXN0YWVuZGlnZW4gRU0gZWluZ2V0cmFnZW4KKyAgIHdvcmRlbiBzZWluLiBEaWUgRXJzdGtpbGwtTlBDcyB3ZXJkZW4gYXV0b21hdGlzY2ggaW4gZWluZXIgdm9ybGFldWZpZ2VuCisgICBMaXN0ZSBnZXNhbW1lbHQgdW5kIHZvbSBFTSBlbnR3ZWRlciBmcmVpZ2VnZWJlbiBvZGVyIGFiZ2VsZWhudC4gQXVjaAorICAgU29uZGVyLVN0dWZlbnB1bmt0ZSBmdWVyIEVLcyBtdWVzc2VuIG5pY2h0IHZvciBkZW0gQW5zY2hsdXNzIGJlYW50cmFndAorICAgb2RlciBnZW5laG1pZ3Qgd29yZGVuIHNlaW4sIGF1Y2ggZGllc2UgRWludHJhZ3VuZyBsYWVzc3Qgc2ljaCBlcmxlZGlnZW4sCisgICB3ZW5uIGRlciBiZXRyZWZmZW5kZSBOUEMgZGFzIGVyc3RlIE1hbCBnZXRvZXRldCB3dXJkZS4KKworbyAgQXVjaCBkaWUgZnVlciBkZW4gUnVlc3R1bmdzc2tpbGwgc28gYmVsaWVidGVuIFJ1ZXN0dW5nZW4gbXVlc3NlbiBuaWNodAorICAgdm9yIGRlbSBBbnNjaGx1c3MgZWluZ2V0cmFnZW4gd2VyZGVuLiBOZXVlIFJ1ZXN0dW5nZW4gd2VyZGVuIGF1dG9tYXRpc2NoCisgICBiZWltIHp1c3RhZW5kaWdlbiBNYXN0ZXJvYmpla3QgYW5nZW1lbGRldCwgc29iYWxkIHNpZSBkYXMgZXJzdGUgTWFsCisgICByZXBhcmllcnQgd2VyZGVuLgorCitVbmQgbnVuIHZpZWwgU3Bhc3MgYmVpIGRlciBQcm9ncmFtbWllcnVuZyEgCisKZGlmZiAtLWdpdCBhL2RvYy93aXovcmVnaW9uc21hZ2llciBiL2RvYy93aXovcmVnaW9uc21hZ2llcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWU1ZjlmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9yZWdpb25zbWFnaWVyCkBAIC0wLDAgKzEsMTA4IEBACisKK1JlZ2lvbnNtYWdpZXIKKz09PT09PT09PT09PT0KKworVm9yYmVtZXJrdW5nOiBEaWVzZXMgRG9rdW1lbnQgaXN0IG5pY2h0IGF1ZiBkZW0gYWt0dWVsbGVuIFN0YW5kLAorQW5yZWd1bmdlbiBkYXp1IG5laG1lIGljaCwgWm9vaywgZ2VybmUgZW50Z2VnZW4uIEljaCB3ZXJkZSBkYXMKK0Rva3VtZW50IGRhbm4gbmFjaCB1bmQgbmFjaCBlcndlaXRlcm4sIGJlcmljaHRpZ2VuLgorCisgICAgSGllciBzaW5kIGVpbmlnZSBWZXJoYWx0ZW5zcmVnZWxuIGZ1ZXIgUmVnaW9uc21hZ2llciB6dXNhbW1lbmdldHJhZ2VuLiBTaWUKKyAgICBzb2xsdGVuIHR1bmxpY2hzdCBiZWFjaHRldCB3ZXJkZW4sIGRhbWl0IGVzIG5pY2h0IHp1IEFlcmdlciB1bmQKKyAgICBFbnR0YWV1c2NodW5nZW4gZnVlciBTcGllbGVyIHVuZCBNYWdpZXIga29tbXQuCisKKyAgICBFaW5zdGVsbGVuIHZvbiBuZXVlbiBNaXRhcmJlaXRlcm46CisKKyAgICAgKiBNYW4gc29sbHRlIGRlbSBuZXVlbiBNYWdpZXIgKnZvcmhlciogc2FnZW4sIHdhcyBmdWVyIFJpY2h0bGluaWVuIGZ1ZXIKKyAgICAgICBkaWUgUmVnaW9uIGdlbHRlbi4KKyAgICAgKiBEZXIgbmV1ZSBNYWdpZXIgc29sbHRlIHp1ZXJzdCBzZWluZSBQbGFlbmUgZXJsYWV1dGVybiB1bmQgbWl0IGRlbSBSTQorICAgICAgIGFic3ByZWNoZW4sIG9iIGRhcyBpbiBkaWUgUmVnaW9uIHBhc3N0LgorICAgICAqIFp1bSBBdWZuZWhtZW4gaW4gZGllIFJlZ2lvbiBlaW5mYWNoIGVpbiBWZXJ6ZWljaG5pcyBtaXQgZGVtIE1hZ2llcm5hbWVuCisgICAgICAgYW5sZWdlbiwgZGFubiB6dSBNZXJsaW4gZ2VoZW4gdW5kIHNhZ2VuCisKKyAgICAgICBtZXJsaW4gbWFjaCA8eHh4PiB6dW0gbWFnaWVyIC8gbWVybGluIG1hY2ggPHh4eD4genVyIG1hZ2llcmluCisKKyAgICBadW0gVGVzdGVuIHZvbiBuZXVlbiBHZWJpZXRlbjoKKworICAgICAqIEdlbmVyZWxsIGdpbHQ6IEVSU1QgdGVzdGVuLCBkYW5uIGFuc2NobGllc3Nlbi4KKyAgICAgKiBMb2dpayBiZWFjaHRlbiEKKyAgICAgKiBTeW50YXggdm9uIEJlZmVobGVuIGJlYWNodGVuLCBrYW5uIGRlciBTcGllbGVyIGRyYXVma29tbWVuPworICAgICAqIE9iamVrdGUgcHJ1ZWZlbiwgZ2VuYXVlcmVzIHNpZWhlIHVudGVuIGJlaW0gUHVua3QgQmFsYW5jZS4KKyAgICAgKiBKZWRlcyBNb25zdGVyIGt1cnogdW1oYXVlbiAobmljaHQgemFwcGVuKSwgZ2VodCBwcmltYSBtaXQgZWluZW0KKyAgICAgICBlbnRzcHJlY2hlbmQgaG9oZW4gV2VydCBmdWVyIFBfSEFORFMuIERhbm4gYHRhaWwgL2xvZy9OUENfWFAnIHVuZCBkaWUKKyAgICAgICBYUC1WZXJnYWJlIHVlYmVycHJ1ZWZlbi4KKyAgICAgKiBBdWNoIGRlbiBDb2RlIGFuc2NoYXVlbiwgdW5ub2V0aWdlIG9kZXIgc2NobGVjaHQgcHJvZ3JhbW1pZXJ0ZSBEaW5nZQorICAgICAgIGJlbWFlbmdlbG4sIG5hdHVlcmxpY2ggbWl0IFZlcmJlc3NlcnVuZ3N2b3JzY2hsYWcuCisgICAgICogdHlwaXNjaGVyIEZlaGxlcjogZGFyYXVmIGFjaHRlbiwgb2IgYmVpbSBCZXdlZ2VuIHZvbiBPYmpla3RlbiBpbiBkZW4KKyAgICAgICBTcGllbGVyIGRlciBSdWVja2dhYmV3ZXJ0IHZvbiBtb3ZlKCkgdWViZXJwcnVlZnQgd2lyZCB1bmQgZGllCisgICAgICAgZW50c3ByZWNoZW5kZW4gTWFzc25haG1lbiBlcmdyaWZmZW4gd2VyZGVuLCB3ZW5uIGRlciBTcGllbGVyIG5pY2h0cworICAgICAgIG1laHIgdHJhZ2VuIGthbm4uCisgICAgICogQmVpIHNpY2ggYmV3ZWdlbmRlbiBNb25zdGVybiBtaXQgZGVtIE1hZ2llciBiZXNwcmVjaGVuLCBvYiBkYXMgd2lya2xpY2gKKyAgICAgICBub2V0aWcgaXN0LCBiencuIG9iIG1hbiBkZW4gVGFrdCB2ZXJsYWVuZ2VybiBrYW5uLiBMYXVmLU5QQ3Mgc2luZAorICAgICAgIENQVS1GcmVzc2VyLgorICAgICAqIFZvciBkZW0gQW5zY2hsdXNzIE1VRVNTRU4gRm9yc2NoZXJwdW5rdGUgZWluZ2V0cmFnZW4gd2VyZGVuLiBEYXMgbWFjaHQKKyAgICAgICBkZXIgZW50c3ByZWNoZW5kZSBFcnptYWdpZXIsIG1vbWVudGFuIGlzdCBkYXMgUmlrdXMuIE5hZWhlcmVzIGRhenUKKyAgICAgICBzdGVodCB1bnRlciBgaGlsZmUgZm9yc2NoZXJwdW5rdGUnLgorCisgICAgRWluIHBhYXIgZ3JvYmUgUmVnZWxuIHp1ciBCYWxhbmNlOgorCisgICAgICogRGllcyBzaW5kIFJpY2h0bGluaWVuLCBkaWUgZXZ0bC4gbmljaHQgbWVociBha3R1ZWxsIHNpbmQuIERpZSBha3R1ZWxsZW4KKyAgICAgICBSZWdlbG4sIGRpZSB2b24gZGVuIE1hZ2llcm4gYmVmb2xndCB3ZXJkZW4gbXVlc3Nlbiwgc3RlaGVuIGltCisgICAgICAgVmVyemVpY2huaXMgYC9kb2MvUkVHRUxOJyBzb3dpZSBpbnNiZXNvbmRlcmUgaW4gYC9kb2Mvd2l6L2JhbGFuY2UnLgorICAgICAqIGd1dGUgV2FmZmVuIChXQyB1ZWJlciAxOTApIHNvbGx0ZW4gbnVyIHNlbHRlbiBpbnMgU3BpZWwga29tbWVuLCBkYXMKKyAgICAgICBoZWlzc3QgZXMgc29sbHRlIGtlaW5lIDUgTlBDcyBhdWYgZWluZW0gSGF1ZmVuIG1pdCBzb2xjaGVuIFdhZmZlbiBnZWJlbgorICAgICAgIChhbHMgQmVpc3BpZWwpLiBBdXNzZXJkZW0gc29sbHRlbiBkaWVzZSBXYWZmZW4gc2Nod2VyIHp1IGVybGFuZ2VuIHNlaW4uCisgICAgICogc2VociBndXRlIFdhZmZlbiAoMjAwIG9kZXIgbWVocikgc29sbHRlbiBzZWhyIHNlbHRlbiBzZWluIHVuZCBzZWhyCisgICAgICAgc2Nod2llcmlnIHp1IGJla29tbWVuLiBFeHRyZW0gZ3V0ZSBXYWZmZW4ga29lbm5lbiBydWhpZyBleGlzdGllcmVuLAorICAgICAgIGFsbGVyZGluZ3Mgc29sbHRlbiBzaWUgZGFubiBlaW5tYWxpZyBzZWluIChCZWlzcGllbDogSGF1cnVjaykuCisgICAgICogQXJ0aWxsZXJpZTogR2lidCBlcyBzY2hvbiBtZWhyIGFscyBnZW51Zywgc29sbHRlIGVpZ2VudGxpY2ggbnVyIG5vY2ggaW4KKyAgICAgICBleHRyZW1lbSBBdXNuYWhtZWZhZWxsZW4gbmV1IHJlaW5rb21tZW4uIEFscyBBcnRpbGxlcmllIGJlemVpY2huZSBpY2gKKyAgICAgICBhbGxlcywgd2FzIGltIEthbXBmIHp1c2FldHpsaWNoIGhpbGZ0IChGbGFtbWVua3VnZWxuLCBXdXJmc3Rlcm5lLAorICAgICAgIEVpc3N0YWIpLgorICAgICAqIEhlaWx1bmc6IHRyYWdiYXJlIEhlaWx1bmcgaXN0IGdlbmVyZWxsIG5pY2h0IGVybGF1YnQsIGFsbGVyZGluZ3Mga2FubgorICAgICAgIG1hbiBBdXNuYWhtZW4gbWFjaGVuIGJlaSBlbnRzcHJlY2hlbmRlbiBOYWNodGVpbGVuLCB6LmIuIGhvaGUKKyAgICAgICBTYWV0dGlndW5nLCBnbGVpY2h6ZWl0aWdlIFZlcmdpZnR1bmcsIEFiaGFlbmdpZ2tlaXQgLi4uIGRlciBGYW50YXNpZQorICAgICAgIHNpbmQga2VpbmUgR3JlbnplbiBnZXNldHp0LgorICAgICAqIEF1c2dlZ2xpY2hlbmhlaXQ6IERhcmF1ZiBhY2h0ZW4sIGRhc3MgbmljaHQgbnVyIE1lZ2EtTW9uc3RlciBydW1sYXVmZW4sCisgICAgICAgc29uZGVybiBmdWVyIGplZGVuIGV0d2FzIGRhYmVpIGlzdC4gRGFiZWkgc29sbHRlbiBoYXJ0ZSBNb25zdGVyIG5pY2h0CisgICAgICAgb2huZSB3ZWl0ZXJlcyB6dSBlcnJlaWNoZW4gc2VpbjsgbWFuIHNvbGx0ZSBzcHVlcmJhcmVuIFdpZGVyc3RhbmQKKyAgICAgICB1ZWJlcndpbmRlbiBtdWVzc2VuLCBiZXZvciBtYW4gc2llIGVycmVpY2h0LgorCitQcm9ncmFtbWhpZXJoaW53ZWlzZTogW0VyZ2Flbnp1bmcgdm9tIDIwMDMtMDMtMDYsIFpvb2tdCisKK0JpdHRlIGFjaHRldCBkYXJhdWYsIGRhc3MgYmVpbSBQcm9ncmFtbWllcmVuIEV1cmVyIFJlZ2lvbnNtaXRhcmJlaXRlcgorZ2V3aXNzZSBTdGFuZGFyZHMgZWluZ2VoYWx0ZW4gd2VyZGVuIHVuZCBkYXNzIHR5cGlzY2hlIEZlaGxlciB2ZXJtaWVkZW4KK3dlcmRlbi4gSW0gZm9sZ2VuZGVuIGVpbiBwYWFyIEhpbndlaXNlOgorCisgKiBCZWkgTGFlZGVuIGJpdHRlIGRhcmF1ZiBhY2h0ZW4sIGRhc3MgbmljaHQgdW5ub2V0aWcgInZlcmthdWZlIiBtaXQKKyAgIGVpbmVtIEFkZENtZCB1ZWJlcnNjaHJpZWJlbiB3aXJkLCB3ZW5uIHN0YXR0IGRlc3NlbiBidXlfb2JqKCkgb2RlcgorICAgc2VsbF9vYmooKSB2ZXJ3ZW5kZXQgd2VyZGVuIGthbm4uCisgICBVbSBMYWVkZW4gYmVzc2VyIGFuenVwYXNzZW4sIGthbm4gZG9ydCBhdWNoIFBfR0VOREVSLCBQX05BTUUgdW5kCisgICBQX0FSVElDTEUgZ2VzZXR6dCB3ZXJkZW4uCisgKiBCZWkgV2FmZmVuIGthbm4gdW5kIHNvbGx0ZSBkaWUgRnVua3Rpb24gImlzX3Vuc2FmZSIgdmVyd2VuZGV0IHdlcmRlbiwKKyAgIHdlbm4gTlBDcyBkaWUgV2FmZmUgbmljaHQgenVlY2tlbiBzb2xsdGVuLiBaLkIuIGxpZWZlcnQgZWluZW4gCisgICBSdW5lbnNjaHdlcnQgYmVpIEVsZmVuLU5QQ3MgZWluZSAxIHp1cnVlY2ssIHNvbnN0IGVpbmUgMC4KKyAqIEVzIGdpYnQgZWluZSBQcm9wZXJ0eSBQX1BMVVJBTC4gRGllIHNvbGx0ZSBtYW4gYXVjaCB2ZXJ3ZW5kZW4uIAorICAgU2llaGUgZGF6dSBkaWUgSGlsZmVzZWl0ZS4KKyAqIFp1bSBIYW50aWVyZW4gbWl0IEdlZ2Vuc3RhZW5kZW4gc3RlbGx0IHB1dCZnZXQgZWluaWdlIGtvbWZvcnRhYmxlCisgICBGdW5rdGlvbmVuIHp1ciBWZXJmdWVndW5nOiBwaWNrX29iaigpLCBkcm9wX29iaigpLCBwdXRfb2JqKCksIAorICAgZ2l2ZV9vYmooKS4KKyAgIFVtIE9iamVrdGUgYXVzenV3YWVobGVuIGthbm4gZmluZF9vYnMoKSBnZW51dHp0IHdlcmRlbi4KKyAgIFBydWVmdCBlaW4gT2JqZWt0LCBvYiBlcyBzZWxic3QgZ2VtZWludCBpc3QgKHouQi4gaW4gZWluZW0gQWRkQ21kKQorICAgYml0dGUgcHJ1ZWZlbiwgb2IgaWQoKSB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGx0ZS4KKyAgIAorCisgICAgU29uc3RpZ2VzOgorCisgICAgICogV2VubiBtYW4gZWluIFZlcnplaWNobmlzIHVudGVyIC9kLzxyZWdpb24+IGFubGVndCwgbXVzcyBtYW4gZGFyYXVmCisgICAgICAgYWNodGVuLCBkYXNzIGRlciBlbnRzcHJlY2hlbmRlIE5hbWUgZ2ViYW5pc2h0IHdpcmQsIHNvbnN0IGlzdCBlaW4KKyAgICAgICBTcGllbGVyIGRlciBkaWVzZW4gTmFtZW4gaGF0IGF1dG9tYXRpc2NoIE1pdGFyYmVpdGVyIGRlciBSZWdpb24gKGRhcworICAgICAgIGJldHJpZmZ0IFZlcnplaWNobmlzc2UsIGRpZSBuaWNodCBmdWVyIFJlZ2lvbnNtaXRnbGllZGVyLCBzb25kZXJuIGZ1ZXIKKyAgICAgICBhbmRlcmUgQXVmZ2FiZW4gZ2VkYWNodCBzaW5kKS4KKyAgICAgKiBFaW4gTmFtZSB3aXJkIGdlYmFuaXNodCBpbmRlbSBtYW4gaW4gZGllIEdpbGRlIGdlaHQgdW5kIGRvcnQgYGJhbmlzaAorICAgICAgIDxuYW1lPicgZWluZ2lidC4gQml0dGUga2VpbmUgZGlyZWt0ZW4gRnVua3Rpb25zYXVmcnVmZSBpbSBtYXN0ZXIhCisKKyBTSUVIRSBBVUNIOgorICAgIGZvcnNjaGVycHVua3RlLCBiYWxhbmNlLCBiYW5pc2gKKworIExFVFpURSBBZU5ERVJVTkc6CisgICAgRG9uLCAgNi4gRmViIDIwMDMsIDEzOjMwOjU2IHZvbiBab29rLgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9yZXB1dGF0aW9uIGIvZG9jL3dpei9yZXB1dGF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMWFjMjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3JlcHV0YXRpb24KQEAgLTAsMCArMSwxNjQgQEAKK1RIRU1BOgorICBSZXB1dGF0aW9uZW4KKworCitBTExHRU1FSU5FIEJFU0NIUkVJQlVORzoKKyAgTWFuIGthbm4gYmVpIGVpbmVyIEdydXBwaWVydW5nL1ZvbGsvUGFydGVpL2V0Yy4gUnVmIGdld2lubmVuIG9kZXIgdmVybGllcmVuIAorICB1bmQgc29taXQgZW50d2VkZXIgZGVyZW4gUmVzcGVrdCBlcmxhbmdlbiBvZGVyIGF1ZiBpaHJlciBBYnNjaHVzc2xpc3RlIAorICBsYW5kZW4uCisKKyAgQW0gQmVpc3BpZWwgZGVyIEdvYmxpbnMgaW0gV2FsZGRvcmYgU2tvZ2E6IERvcnQgZ2lidCBlcyBkYXMgRnJlaWUgVm9saywgZGFzIAorICBhdXMgc2VpbmVtIEhlaW1hdGRvcmYgdmVydHJpZWJlbiB3dXJkZSwgdW5kIGRpZSBHb2JsaW5zLCB3ZWxjaGUgZGFzIERvcmYKKyAgYmVzZXR6dCBoYWJlbi4gSGlsZnQgbWFuIGVpbmVyIFNlaXRlLCBiYXV0IG1hbiBSdWYgYXVmIHVuZCBlcmhhZWx0IAorICBiZWlzcGllbHN3ZWlzZSBadWdhbmcgenUgSGVpbHN0ZWxsZW4gdW5kIHNwZXppZWxsZW4gSXRlbXMsIHdhZWhyZW5kIGRpZSAKKyAgYW5kZXJlIFNlaXRlIHp1bmVobWVuZCBtaXNzdHJhdWlzY2ggcmVhZ2llcnQgdW5kIGVpbmVuIHNjaGx1c3NlbmRsaWNoIG9obmUgCisgIHp1IGZyYWdlbiBhdHRhY2tpZXJ0LgorCisgIEVzIG11ZXNzZW4gbmljaHQgaW1tZXIgbWVocmVyZSBTZWl0ZW4gaW52b2x2aWVydCBzZWluLiBBdWNoIGVpbmUgZWluemVsbmUgCisgIFBhcnRlaSBpc3QgZGVua2JhciwgZGVyIG1hbiBoZWxmZW4ga2FubiB1bmQgaW4gZGVyZW4gTGFlZGVuL0tuZWlwZW4gbWFuIG1pdCAKKyAgc3RlaWdlbmRlbSBSdWYgei5CLiBWZXJndWVuc3RpZ3VuZ2VuLCBtZWhyIEluZm9ybWF0aW9uZW4sIEJvbnVzaXRlbXMgdW5kIAorICBBZWhubGljaGVzIGVyaGFlbHQuCisKKyAgRGVua2JhciBpc3QgZXMgYXVjaCwgZGFzIEdhbnplIHp1IHZlcm5ldHplbi4gQmVpc3BpZWxzd2Vpc2Uga29lbm50ZSBlaW4gCisgIFZlcndhbmR0ZXIgZWluZXMgTWl0Z2xpZWRzIHZvbiBvYmVuZ2VuYW5udGVtIEZyZWllbiBWb2xrIHZvciBkZW4gQW5ncmlmZmVuIAorICBpbnMgUG9sYXJnZWJpZXQgdW1nZXpvZ2VuIHNlaW4sIGFiZXIgdm9uIGRlcyBTcGllbGVycyBIZWxkZW50YXRlbiBnZWhvZXJ0IAorICBoYWJlbiB1bmQgaWhtIHNvIGZyZXVuZGxpY2hlciBnZXNvbm5lbiBzZWluLgorCisKK01FVEhPREVOIChzLiBhLiBlaW56ZWxuZSBNYW5wYWdlcyk6CisKKyAgaW50IENoYW5nZVJlcHV0YXRpb24oc3RyaW5nIHJlcGlkLCBpbnQgdmFsdWUsIGludCBzaWxlbnQpCisgICAgICBEaWUgRnVua3Rpb24gaXN0IGluIGplZGVtIFNwaWVsZXJvYmpla3Qgdm9yZGVmaW5pZXJ0LgorICAgICAgVm9yIGRlciBBZW5kZXJ1bmcgd2lyZCBlaW4gQ2hlY2sgYXVmIGRpZSBVSUQgZGVzIGF1c2Z1ZWhyZW5kZW4gT2JqZWt0ZXMKKyAgICAgIGF1c2dlZnVlaHJ0LCAiZnJlbWRlIiBSZXB1dGF0aW9uZW4gZGFyZiBtYW4gc29taXQgbmljaHQgdmVyYWVuZGVybi4KKyAgICAgIE1hbiBrYW5uIGFiZXIgc2VsYnN0dmVyc3RhZW5kbGljaCBpbiBiZWdydWVuZGV0ZW4gRmFlbGxlbiBtaXQgZGVtCisgICAgICB6dXN0YWVuZGlnZW4gTWFnaWVyL1JlZ2lvbnNtYWdpZXIgc3ByZWNoZW4sIG9iIG1hbiBlYmVuZmFsbHMgWnVncmlmZgorICAgICAgZXJoYWVsdC4gRWluZ2V0cmFnZW4gd2lyZCBkaWVzIHNjaGx1c3NlbmRsaWNoIGR1cmNoIGVpbmVuIEVNLgorCisKKyAgaW50IEdldFJlcHV0YXRpb24oc3RyaW5nIHJlcGlkKQorICAgICAgRWJlbmZhbGxzIGltIFNwaWVsZXJvYmpla3Qgdm9yZGVmaW5pZXJ0LiBMaWVmZXJ0IGRlbiBha3R1ZWxsZW4gV2VydCBkZXIKKyAgICAgIGFuZ2VnZWJlbmVuIFJlcHV0YXRpb24genVydWVjay4KKworCisgIG1hcHBpbmcgR2V0UmVwdXRhdGlvbnMoKQorICAgICAgRWJlbnNvIHZvcmRlZmluaWVydC4gTGllZmVydCBlaW4gTWFwcGluZyBhbGxlciBpbSBTcGllbGVyIGdlc3BlaWNoZXJ0ZW4KKyAgICAgIFJlcHV0YXRpb25lbiB1bmQgaWhyZXIgV2VydGUgenVydWVjay4KKworCitCRUlTUElFTEU6CisKKyAgLy8gRWluZSBrbGVpbmUgQXVmZ2FiZSBmdWVyIGRhcyAiRnJlaWUgVm9sayIgYnJpbmd0IGRlbSBTcGllbGVyIGV0d2FzIAorICAvLyBBbnNlaGVuLgorCisgIHZvaWQgUXVlc3RHZWxvZXN0KG9iamVjdCBwbCkgeworICAgIC8vIFNpbGVudCwgd2lyIGdlYmVuIGVpbmUgZWlnZW5lIE1lbGR1bmcgYXVzLgorICAgIHBsLT5DaGFuZ2VSZXB1dGF0aW9uKCJmcmVpZXN2b2xrIiwgMjUwLCAxKTsKKworICAgIHRlbGxfb2JqZWN0KHBsLCAiRHUgYmVmcmVpc3QgZWluZW4gR2VmYW5nZW5lbi4gRGFzIGZyZWllIFZvbGsgd2lyZCBlcyAiCisgICAgICAiRGlyIGRhbmtlbi5cbiIpOworICB9CisKKyAgLy8gRWluIE5QQyBkZXMgIlNjaGFlZGxzcGFsdGEtS2xhbnMiLiBXZW5uIGVyIGdldG9ldGV0IHdpcmQsIHZlcmxpZXJlbiBkaWUgCisgIC8vIHRvZXRlbmRlbiBTcGllbGVyIFJ1ZiBiZWkgZGllc2VyIEZyYWt0aW9uLgorIAorICAjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorCisgIGluaGVyaXQgIi9zdGQvbnBjLmMiOworCisgIHZvaWQgY3JlYXRlKCkgeworICAgIG5wYzo6Y3JlYXRlKCk7CisgICAgU2V0UHJvcChQX1NIT1JULCAiRWluIEdvYmxpbiBkZXMgU2NoYWVkbHNwYWx0YS1LbGFucyIpOworICAgIC4uLgorICB9CisKKyAgdmFyYXJncyB2b2lkIGRpZShpbnQgcG9pc29uLCBpbnQgZXh0KSB7CisgICAgb2JqZWN0ICplbmVtaWVzOworICAgIGludCB2YWx1ZTsKKyAgICAvLyBCZWdsZWl0LU5QQ3MgYnJhdWNoZW4ga2VpbmUgUmVwdXRhdGlvbgorICAgIGVuZW1pZXMgPSBmaWx0ZXIoUHJlc2VudEVuZW1pZXMoKSwgIydpbnRlcmFjdGl2ZSk7CisgICAgLy8gNTAgUmVwdXRhdGlvbnNhYnp1ZyBwcm8gS2lsbCwgYXVmZ2V0ZWlsdCBhdWYgYWxsZSBHZWduZXIKKyAgICB2YWx1ZSA9IC01MCAvIHNpemVvZihlbmVtaWVzKTsKKyAgICBmb3JlYWNoKG9iamVjdCBwbCA6IGVuZW1pZXMpIHsKKyAgICAgIHBsLT5DaGFuZ2VSZXB1dGF0aW9uKCJzY2hhZWRsc3BhbHRhIiwgdmFsdWUpOworICAgICAgLy8gT3B0aW9uYWwga29lbm50ZSBpaHJlICJGZWluZGZyYWt0aW9uIiBkYXMgZ3V0aGVpc3NlbjoKKyAgICAgIC8vIHBsLT5DaGFuZ2VSZXB1dGF0aW9uKCJmcmVpZXN2b2xrIiwgYWJzKHZhbHVlKSk7CisgICAgfQorICAgIHJldHVybiBucGM6OmRpZShwb2lzb24sIGV4dCk7CisgIH0KKworICAvLyBKZWRlciBiZXRlaWxpZ3RlIEZlaW5kIGtyaWVndCBudW4gZWluZSBNZWxkdW5nLCBkaWUgaW4gZXR3YSBsYXV0ZW4gCisgIC8vIGtvZW5udGU6ICJEZWluIEFuc2VoZW4gYmVpbSBTY2hhZWRsc3BhbHRhLUtsYW4gaGF0IHNpY2ggZXR3YXMgCisgIC8vIHZlcnNjaGxlY2h0ZXJ0LiIgRGVyIE5QQyBrb2VubnRlIG51biBTcGllbGVyIGF1dG9tYXRpc2NoIGFuZ3JlaWZlbiwgCisgIC8vIHNvYmFsZCBpaHIgUnVmIHp1IHRpZWYgZ2VzdW5rZW4gaXN0OgorICAKKyAgI2luY2x1ZGUgPHJlcHV0YXRpb24uaD4KKworICB2b2lkIGluaXQoKSB7CisgICAgbnBjOjppbml0KCk7CisgICAgaWYob2JqZWN0cCh0aGlzX3BsYXllcigpKSAmJiAhSXNFbmVteSh0aGlzX3BsYXllcigpKSAmJiAKKyAgICAgICB0aGlzX3BsYXllcigpLT5HZXRSZXB1dGF0aW9uKCJzY2hhZWRsc3BhbHRhIikgPD0gUkVQX0RJU0xJS0VEKQorICAgICAgSW5zZXJ0RW5lbXkodGhpc19wbGF5ZXIoKSk7CisgIH0KKworICAvLyBFaW4gTlBDIHJ1ZWNrdCBiZXN0aW1tdGUgSW5mb3JtYXRpb25lbiBlcnN0IHJhdXMsIHNvYmFsZCBkYXMgQW5zZWhlbgorICAvLyBkZXMgU3BpZWxlcnMgaG9jaCBnZW51ZyBpc3Q6CisKKyAgI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyAgI2luY2x1ZGUgPHJlcHV0YXRpb24uaD4KKworICBpbmhlcml0ICIvc3RkL25wYy5jIjsKKworICBzdHJpbmcgSW5mb0dlaGVpbXBsYW4oKTsKKworICB2b2lkIGNyZWF0ZSgpIHsKKyAgICBucGM6OmNyZWF0ZSgpOworICAgIFNldFByb3AoUF9TSE9SVCwgIkRlciBLb21tYW5kYW50IGRlcyBmcmVpZW4gVm9sa2VzIik7CisgICAgLi4uCisgICAgQWRkSW5mbygiZ2VoZWltcGxhbiIsICMnSW5mb0dlaGVpbXBsYW4sICJzYWd0OiAiKTsKKyAgfQorCisgIHN0cmluZyBJbmZvR2VoZWltcGxhbigpIHsKKyAgICBpZih0aGlzX3BsYXllcigpLT5HZXRSZXB1dGF0aW9uKCJmcmVpZXN2b2xrIikgPCBSRVBfVFJVU1RFRCkKKyAgICAgIHJldHVybiAiRGFzIGdlaHQgRGljaCB1ZWJlcmhhdXB0IG5pY2h0cyBhbiEiOworICAgIHJldHVybiAiTnVuLCBpY2ggdmVydHJhdWUgRGlyLiBBbHNvLCBoZXV0ZSB1bSBNaXR0ZXJuYWNodCAuLi4gLi4uIC4uLiI7CisgIH0gICAKKworICAvLyBQcnVlZnVuZyBkZXIgKHdpY2h0aWdzdGVuKSBSdWVja2dhYmV3ZXJ0ZToKKworICAjaW5jbHVkZSA8cmVwdXRhdGlvbnMuaD4KKyAgCisgIHZvaWQgUXVlc3RHZWxvZXN0KG9iamVjdCBwbCkgeworICAgIHN0cmluZyBtc2c7CisKKyAgICAvLyBTb25zdGlnZSBNZWxkdW5nZW4KKyAgICAuLi4KKworICAgIHN3aXRjaChwbC0+Q2hhbmdlUmVwdXRhdGlvbigiZnJlaWVzdm9sayIsIDUwMCwgMSkpIHsKKyAgICAgIC8vIFJlcHV0YXRpb24gYmVyZWl0cyBNYXgKKyAgICAgIGNhc2UgUkVQX1JFVF9BTFJFQURZTUFYOgorICAgICAgICBtc2cgPSAiRGVpbiBBbnNlaGVuIGJlaW0gZnJlaWVuIFZvbGsga2FubiBzaWNoIG5pY2h0IG1laHIgd2VpdGVyICIKKyAgICAgICAgICAgICAgInZlcmJlc3Nlcm4uIjsKKyAgICAgICAgYnJlYWs7CisgICAgICAvLyBSZXB1dGF0aW9uIHdhZXJlIGhvZWhlciBhbHMgTWF4IGdld29yZGVuLCBkYWhlciBhdWYgTWF4IGdlc2V0enQKKyAgICAgIGNhc2UgUkVQX1JFVF9TVUNDRVNTQ1VUOgorICAgICAgICBtc2cgPSAiRGVpbiBBbnNlaGVuIGJlaW0gZnJlaWVuIFZvbGsgaGF0IHNpY2ggZXR3YXMgdmVyYmVzc2VydCwgIgorICAgICAgICAgICAgICAiYWJlciB3ZWl0ZXIgc3RlaWdlcm4ga2FubnN0IER1IGVzIG5pY2h0IG1laHIuIjsKKyAgICAgICAgYnJlYWs7CisgICAgICAvLyBSZXB1dGF0aW9uIGVyZm9sZ3JlaWNoIGdlYWVuZGVydAorICAgICAgY2FzZSBSRVBfUkVUX1NVQ0NFU1M6CisgICAgICAgIG1zZyA9ICJEZWluIEFuc2VoZW4gYmVpbSBmcmVpZW4gVm9sayBoYXQgc2ljaCBldHdhcyB2ZXJiZXNzZXJ0LiI7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gVGVjaG5pc2NoZXIgRmVobGVyCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmKHN0cmluZ3AobXNnKSAmJiBzdHJsZW4obXNnKSkKKyAgICAgIHRlbGxfb2JqZWN0KHBsLCBicmVha19zdHJpbmcobXNnLCA3OCkpOworICB9CisKK1NJRUhFIEFVQ0g6IAorCitMRVRaVEUgQUVOREVSVU5HOgorICAyMDA5LTIyLTAzLCAxMjozMDowMCB2b24gTmliZWwKZGlmZiAtLWdpdCBhL2RvYy93aXovcm0taG93dG8gYi9kb2Mvd2l6L3JtLWhvd3RvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YjlhYzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3JtLWhvd3RvCkBAIC0wLDAgKzEsMzM0IEBACitSTSAtIEhPV1RPCisqKioqKioqKioqCisKK1ZvcmxhZXVmaWdlcyBJbmhhbHRzdmVyemVpY2huaXM6CisKKzEpIEFsbGdlbWVpbmVzCisgICAtIEZlaGxlcnRldWZlbAorICAgLSBMb2d0b29sCisgICAtIEtvbW1lbnRpZXJ1bmcgdm9uIEFlbmRlcnVuZ2VuCisgICAtIGVpZ2VuZSBBbnNjaGx1ZXNzZQorMikgQWJuYWhtZSB2b24gQ29kZS9HZWJpZXRlbgorICAgLSBCYWxhbmNlL0dlbmVobWlndW5nZW4KKyAgIC0gS29uemVwdGlvbmVsbGUgRWlnbnVuZworICAgLSBmb3JtYWxlIFBydWVmdW5nCisgICAtIEdlbWVpbnNjaGFmdHNhcmJlaXRlbgorMykgVmVybGVndW5nIHZvbiBEYXRlaWVuCis0KSBTZWhlcmhhZXVzZXIKKyAgIC0gU29uZGVyd3VlbnNjaGUvVW5zaWNodGJhcmtlaXQKKyAgIC0gYW5kZXJlciBCZWZlaGwgenVtIEJldHJldGVuCisgICAtIFZlcndlaXNlIGF1ZiBCZWlzcGllbGNvZGUKKzUpIERlYnVnZ2VuIHZvbiBDb2RlCis2KSBiZXNvbmRlcmUgRnVua3Rpb25lbi9GdW5rdGlvbmFlbGl0YWV0ZW4KKyAgIC0gY2F0Y2hfdGVsbCgpIC8gUmVjZWl2ZU1zZygpCisgICAtIG1vdmUoKQorICAgLSBBdHRhY2soKSAvIERlZmVuZCgpCisgICAtIGNhbGxfb3V0KCkKKyAgIC0gcmVtb3ZlKCkgLyBkZXN0cnVjdCgpCisgICAtIGZvcigpLVNjaGxlaWZlbgorICAgLSB3cml0ZV9maWxlKCkKKyAgIC0gVmVyd2FsdGVuIHZvbiBjaGFyYWt0ZXJiZXpvZ2VuZW4gRGF0ZW4KKworMSkgQWxsZ2VtZWluZXMKKz09PT09PT09PT09PT09CisKK28gVW0gc3RldHMgZWluZW4gVWViZXJibGljayB1ZWJlciBkaWUgaW4gRGVpbmVyIFJlZ2lvbiAoaG9mZmVudGxpY2ggc2VsdGVuKQorICBhdWZ0cmV0ZW5kZW4gQnVncyB1bmQgV2FybnVuZ2VuIHp1IGJlaGFsdGVuLCBzb2xsdGVzdCBEdSBlaW5lbgorICBGZWhsZXJ0ZXVmZWwgKC9vYmovdG9vbHMvZmVobGVydGV1ZmVsLmMpIGJlc2l0emVuLCBiZWRpZW5lbiBrb2VubmVuIHVuZAorICByZWdlbG1hZXNzaWcgZGVzc2VuIExpc3RlbiBkdXJjaHNlaGVuLiBEZWluZW4gUmVnaW9uc21pdGFyYmVpdGVybiBzb2xsdGVzdAorICBEdSwgYWxsZWluIHNjaG9uLCB1bSB6dXNhZXR6bGljaGUgQXJiZWl0IGZ1ZXIgRGljaCBzZWxic3QgenUgcmVkdXppZXJlbiwKKyAgZGllc2VzIFdlcmt6ZXVnIGViZW5mYWxscyBhbiBkaWUgSGFuZCBnZWJlbiB1bmQgc2llIGF1ZmZvcmRlcm4sIGlocmVuCisgIEtyYW0gbW9lZ2xpY2hzdCB1bWZhc3NlbmQgc2VsYnN0IHp1IHJlcGFyaWVyZW4uCisgIE5ldWVuIE1hZ2llcm4gd2lyZCBkaWVzZXMgVG9vbCB1ZWJyaWdlbnMgYXV0b21hdGlzY2ggdm9uIE1lcmxpbiBpbiBkaWUKKyAgSGFuZCBnZWRydWVja3QsIHNvIGRhc3Mgc2llIHNpY2ggdm9tIGVyc3RlbiBUYWcgYW4gZGFyYW4gZ2V3b2VobmVuIGtvZW5uZW4uCisKK28gRXMgaXN0IGVtcGZlaGxlbnN3ZXJ0LCBkYXMgTG9ndG9vbCB6dSBiZXNpdHplbiAoL29iai90b29scy9sb2d0b29sLmMpIHVuZAorICBpbiBkaWVzZW0gZnVlciBqZWRlcyBSZXBmaWxlIGVpbmVzIFJlZ2lvbnNtaXRhcmJlaXRlcnMgZWluZW4gRWludHJhZyB2b3ItCisgIHp1c2VoZW4uIFdhcnVtIGRhcz8gRXMgaXN0IGJlcmVpdHMgdm9yZ2Vrb21tZW4sIGRhc3MgU3BpZWxlciBlcm5zdGhhZnQKKyAgYXJndW1lbnRpZXJ0IGhhYmVuLCBzaWUgZHVlcmZ0ZW4gZWluZW4gdm9uIGlobmVuIGVudGRlY2t0ZW4gQnVnIGF1c251dHplbiwKKyAgd2VpbCBzaWUgaWhuIGphIGdlbWVsZGV0IGhhZXR0ZW4gKGltIFJlcGZpbGUhKSwgZXIgYWJlciBuaWNodCByZXBhcmllcnQKKyAgd29yZGVuIHNlaSAod2FzIG5pY2h0IHZlcnd1bmRlcnQsIGRhIGVyIGltIFJlcGZpbGUgaW4gZGVyIE1laHJ6YWhsIGRlcgorICBGYWVsbGUgd2VpdCB1bnRlcmhhbGIgZGVzIFdhaHJuZWhtdW5nc2hvcml6b250cyBkZXIgYWxsZXJtZWlzdGVuCisgIFJlZ2lvbnNtYWdpZXIgc2Nod2VidCkuCisKK28gV2VubiBEdSBpbiBmcmVtZGVtIENvZGUgQWVuZGVydW5nZW4gdm9ybmVobWVuIG11c3N0LCBkaWUgbWVociBiZXJ1ZWhyZW4KKyAgYWxzIG51ciBlaW4gcGFhciBUaXBwZmVobGVyIGluIERldGFpbHMgb2RlciBJbmZvcywgZGFubiBrb21tZW50aWVyZSBkZW4KKyAgZGVmZWt0ZW4gQ29kZSBhdXMgdW5kIGZ1ZWdlIGRlbiByZXBhcmllcnRlbiBtaXQgS29tbWVudGFyIGVpbi4gRXMgcmVpY2h0CisgIGFuIGRpZXNlciBTdGVsbGUgYXVzLCBEZWluZW4gTmFtZW4gdW5kIGRhcyBEYXR1bSB6dSB2ZXJtZXJrZW4uIEluIGRlbgorICBIZWFkZXIgZGVyIERhdGVpIHNvbGx0ZXN0IER1IHVuYmVkaW5ndCBlaW4gQ2hhbmdlbG9nIGVpbmZ1ZWdlbiwgaW4gZGVtCisgIGRhcyBEYXR1bSBkZXIgQWVuZGVydW5nLCBkZXIgTmFtZSBkZXMgQXVzZnVlaHJlbmRlbiAoRGVpbmVyKSBzb3dpZSBkaWUKKyAgdm9yZ2Vub21tZW5lIEFlbmRlcnVuZyBtaXQgQmVncnVlbmR1bmcgYnp3LiB1LlUuIEJ1Zy1JRCBhdXMgZGVtIEZlaGxlci0KKyAgdGV1ZmVsIGVpbnp1dHJhZ2VuIGlzdC4gV2lyIGhhYmVuIGltIE1HIGxlaWRlciBrZWluZW4gd2lya3VuZ3N2b2xsZW4KKyAgRGVidWdnZXIgdW5kIEJ1Z3RyYWNrZXItTWVjaGFuaXNtdXMsIHNvIGRhc3Mgd2lyIHp1ciBFcmhhbHR1bmcgZWluZXIKKyAgZ2V3aXNzZW4gQ29kZS1IeWdpZW5lIEJ1Z2ZpeGVzIG1pdCBIaWxmZSBzb2xjaGVyIEVpbnRyYWd1bmdlbiBkb2t1bWVudGllcmVuCisgIHVuZCBydWVja3ZlcmZvbGdlbiBtdWVzc2VuLiBJbnNiZXNvbmRlcmUgaXN0IGVpbiBzb2xjaGVyIEVpbnRyYWcgd2ljaHRpZywKKyAgdW0gaW0gRmFsbGUgdm9uIEZvbGdlLUJ1Z3MgZGllIFVyc2FjaGUgc2NobmVsbGVyIHp1IGZpbmRlbi4KKworbyBXaWxsc3QgRHUgaW4gRGVpbmVyIGVpZ2VuZW4gUmVnaW9uIGVpbiBHZWJpZXQgYW5zY2hsaWVzc2VuLCBzb2xsdGVzdCBEdQorICBkaWVzZW4gdm9yIEFuc2NobHVzcyBlbnR3ZWRlciB2b20gQ28tUk0gb2RlciB2b24gZWluZW0gUk0gZWluZXIgYW5kZXJlbgorICBSZWdpb24gbGVzZW4gbGFzc2VuLiBBdWNoIHdlbm4gRHUgZWluIGd1dGVyIFByb2dyYW1taWVyZXIgYmlzdCwgZmluZGV0IGVpbgorICB6d2VpdGVzIFBhYXIgQXVnZW4gb2Z0IERpbmdlLCBhbiBkaWUgbWFuIG5pY2h0IGdlZGFjaHQgaGF0LgorCisKKzIpIENvZGUgd2lyZCB6dXIgQWJuYWhtZSB2b3JnZWxlZ3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbyBCZWkgV2FmZmVuIHVuZCBSdWVzdHVuZ2VuIHVuYmVkaW5ndCBhdWYgRWluaGFsdHVuZyBkZXIgQmFsYW5jZS1Wb3JnYWJlbgorICBhY2h0ZW4uCisKK28gU29mZXJuIGVpbiBPYmpla3QgZWluZSBCYWxhbmNlLUdlbmVobWlndW5nIGJlc2l0enQsIG11c3MgZGllIEJUT1AtTnVtbWVyLAorICBkaWUgZGllIEJhbGFuY2UgYWxzIGVpbmRldXRpZ2UgSUQgZnVlciBqZWRlbiBBbnRyYWcgdmVyZ2lidCwgaW0gSGVhZGVyCisgIGRlcyBiZXRyZWZmZW5kZW4gT2JqZWt0ZXMgZXJrZW5uYmFyIGVpbmdldHJhZ2VuIHNlaW4uCisKK28gVm9yIEFuc2NobHVzcyBzb2xsdGUgbWFuIFJ1ZWNrc3ByYWNoZSBtaXQgdmVyc2NoaWVkZW5lbiBJbnN0YW56ZW4gaGFsdGVuLAorICB1bSBzaWNoZXJ6dXN0ZWxsZW4sIGRhc3MgZGVyIE1hZ2llciBhbGxlIHdlc2VudGxpY2hlbiBQdW5rdGUKKyAgYmVydWVja3NpY2h0aWd0IGhhdDoKKyAgLSBsaWVnZW4gYWxsZSBCYWxhbmNlLUdlbmVobWlndW5nZW4gdm9yPworICAtIHNpbmQgZGllIEZQIGVpbmdldHJhZ2VuPworICAtIHNpbmQgZGllIFpUcyBlaW5nZXRyYWdlbiB1bmQgZ2V0ZXN0ZXQ/CisgIC0gc2luZCBTb25kZXItRUstU3R1cHNlIGdlbmVobWlndCB1bmQgZWluZ2V0cmFnZW4/CisKK28gRnVlciBuZXVlIEdlYmlldGUgaXN0IGVpbmUgZ3J1bmRzYWV0emxpY2hlIFBydWVmdW5nIGRlcyBLb256ZXB0cyBhdWYKKyAgUmVnaW9uc3RhdWdsaWNoa2VpdCBzaW5udm9sbCwgZGFtaXQgbmljaHQgYWx0ZWluZ2VzZXNzZW5lIEluc3RpdHV0aW9uZW4KKyAgb2RlciBPcnRlIHBsb2V0emxpY2ggenVyIHp3ZWl0ZW4gV2FobCBhYmdld2VydGV0IHdlcmRlbiAtIGJlaXNwaWVsc3dlaXNlCisgIGVpbmVuIGdyb3NzZW4sIG5ldWVuIEhhdXB0b3J0IGluIGRlciBFYmVuZSBhbnp1c2NobGllc3NlbiwgZGVyIFBvcnQgVmFpbgorICB2b3JhdXNzZWhiYXIgZGVuIFJhbmcgYWJsYXVmZW4gd3VlcmRlLgorCitvIEFsbGUgTlBDcyBzb2xsdGVuIHZvciBBbnNjaGx1c3MgZWlubWFsIGdla2lsbHQgd2VyZGVuLCB1bSBzaWUgYXVmCisgIGdydW5kc2FldHpsaWNoZSBLYW1wZi1GdW5rdGlvbnNmYWVoaWdrZWl0IHp1IHBydWVmZW4uCisKK28gSGFiZW4gTlBDcyBOYW1lbiwgc29sbHRlIHVlYmVybGVndCB3ZXJkZW4sIGRpZXNlIE5hbWVuIGdnZi4genUgYmFuaXNoZW4uCisgIChoaWxmZSBiYW5pc2gpLgorCitvIEVzIGV4aXN0aWVydCBlaW4gU2hlbGwtU2tyaXB0LCBtaXQgZGVzc2VuIEhpbGZlIG1hbiBvZmZlbnNpY2h0bGljaGUKKyAgRm9ybWZlaGxlciBpbiBlaW5lbSBrb21wbGV0dGVuIFZlcnplaWNobmlzIGVybWl0dGVsbiBrYW5uIChVbWxhdXRlIGltCisgIENvZGUsIHp1IGxhbmdlIFplaWxlbiBldGMuKSwgd29iZWkgYmV6dWVnbGljaCBkZXIgRm9ybWFsaWVuIGF1Y2ggYXVmCisgIGRlbiBSZWdpb25zbWl0YXJiZWl0ZXItTGVpdGZhZGVuIGZ1ZXIgbmV1ZSBQcm9qZWt0ZSB2ZXJ3aWVzZW4gd2VyZGVuCisgIHNvbGwuIERhcyBTa3JpcHQgaGllcnp1IGlzdCBhdWYgQW5mcmFnZSBiZWkgWmVzc3RyYSBlcmhhZWx0bGljaC4gRGVyCisgIFJlZ2lvbnNtYWdpZXIgaGF0IGhpZXJiZWkgZGllIEVudHNjaGVpZHVuZ3NmcmVpaGVpdCwgZGllIEJlcmljaHRlIGRpZXNlcworICBTa3JpcHRzIGRlbSBQcm9ncmFtbWllcmVyIGRlcyBuZXVlbiBHZWJpZXRzIGFscyBBbmhhbHRzcHVua3RlIHp1cgorICBWZXJmdWVndW5nIHp1IHN0ZWxsZW4sIG9kZXIgZGllIEFiYXJiZWl0dW5nIGRlciBnZW1lbGRldGVuIFB1bmt0ZSBhbHMKKyAgVm9yYXVzc2V0enVuZyB2b3IgZGVtIEFuc2NobHVzcyB2b3J6dXNjaHJlaWJlbiwgYWJlciBhdWNoIGplZGUgQWJzdHVmdW5nCisgIGRhendpc2NoZW4gaXN0IE9LLiA6LSkKKyAgWnVzYWV0emxpY2hlciBUaXA6IERhcyBTa3JpcHQgZGlmZmVyZW56aWVydCB6d2lzY2hlbiBlaWdlbnRsaWNoIG5pY2h0CisgIGFremVwdGFibGVuIEtvbnN0cnVrdGVuIHVuZCB6dW1pbmRlc3QgZnJhZ3d1ZXJkaWdlbiwgZC5oLiBtYW4ga2FubiBkaWVzZQorICBVbnRlcnNjaGVpZHVuZyBhbiBkZW4gVmVyYW50d29ydGxpY2hlbiBtaXQgZW50c3ByZWNoZW5kZW4gRm9yZGVydW5nZW4KKyAgd2VpdGVyZ2ViZW4uCisgIERhcyBTa3JpcHQgaXN0IHVudGVyIGZ0cDovL21nLm11ZC5kZS9Tb2Z0d2FyZS9zcmNfY2hlY2svIGVyaGFlbHRsaWNoLgorCitvIFNvbGx0ZSBlaW4genVyIEFibmFobWUgYW5zdGVoZW5kZXMgUHJvamVrdCBlaW5lIChncnVuZHNhZXR6bGljaAorICBzZWxic3R2ZXJzdGFlbmRsaWNoIHp1bGFlc3NpZ2UpIEdlbWVpbnNjaGFmdHNhcmJlaXQgc2Vpbiwgc29sbHRlIG1hbgorICBhbHMgUmVnaW9uc21hZ2llciBkYXJhdWYgYmVzdGVoZW4sIGVpbmUgc2F1YmVyIGdldHJlbm50ZSBDb2RlYmFzaXMKKyAgaW4gdW50ZXJzY2hpZWRsaWNoZW4gVmVyemVpY2huaXNzZW4gdm9yZ2VsZWd0IHp1IGJla29tbWVuLCBvZGVyIGFiZXIKKyAgZWluZSBBdWZsaXN0dW5nLCB3ZWxjaGVyIEJlaXRyYWcgdm9uIHdlbGNoZW0gTWFnaWVyIHN0YW1tdC4KKyAgV2VubiBkaWVzZSBBdWZsaXN0dW5nIHNpY2ggYmlzIGF1ZiBGdW5rdGlvbnNlYmVuZSBlcnN0cmVja2VuIHNvbGx0ZQorICAoei5CLiAiRG9XaWVsZCgpIGlzdCB2b24gWCwgRGV0YWlscyB2b24gWSwgRGVmZW5kRnVuYyB2b24gWiIpLCBpc3QKKyAgZGFzIHVuc2Nob2VuIHVuZCBhbiBzaWNoIGFienVsZWhuZW4uCisKKworMykgVmVybGVndW5nIHZvbiBEYXRlaWVuCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworbyBTb2xsdGUgZWluIE9iamVrdCBhdXMgZWluZXIgYW5kZXJlbiBSZWdpb24gYnp3LiBhbGxnZW1laW4gYXVzIGVpbmVtCisgIGFuZGVyZW4gVmVyemVpY2huaXMgKHouQi4gL3BsYXllcnMpIGluIERlaW5lIFJlZ2lvbiB2ZXJsZWd0IHdlcmRlbgorICBtdWVzc2VuLCBzaW5kIFZPUiBkZW0gVW1oYWVuZ2VuIGZvbGdlbmRlIFB1bmt0ZSB6dSBiZWFjaHRlbjoKKyAgLS0gRm9yc2NoZXJwdW5rdGUgbXVlc3NlbiB1bWdldHJhZ2VuIHdlcmRlbiAoRU0gYW5zcHJlY2hlbiksCisgIC0tIEVyc3RraWxsLVN0dWZlbnB1bmt0ZSBtdWVzc2VuIHVtZ2V0cmFnZW4gd2VyZGVuIChFTSBhbnNwcmVjaGVuKSwKKyAgLS0gWmF1YmVydHJhZW5rZSB1bXRyYWdlbiBsYXNzZW4gKEVNIGFuc3ByZWNoZW4pLAorICAtLSBpbiBQYWRyZWljcyBSdWVzdHVuZ3Nza2lsbCB1bXRyYWdlbiBsYXNzZW4gKEVNIGFuc3ByZWNoZW4pLAorICAtLSBldnRsLiBpbSBHZWJpZXRlIHZvcmhhbmRlbmUgU2VoZXJoYWV1c2VyIHVtemllaGVuLAorICAtLSBldnRsLiBpbSBHZWJpZXQgdm9yaGFuZGVuZSBLcmFldXRlcnNraWxsLUtyYWV1dGVyIGJlcnVlY2tzaWNodGlnZW4sCisgIC0tIGV2dGwuIEJyaWVmZW1wZmFlbmdlciBkZXIgUG9zdHF1ZXN0IGJlcnVlY2tzaWNodGlnZW4sCisgIC0tIHVlYmVyIGRpZSBNdWRsaWIgZ3JlcHBlbiBsYXNzZW4sIHVtIGV2ZW50dWVsbCBpbiBhbmRlcmVuIFJlZ2lvbmVuCisgICAgIHZlcndlbmRldGUgUmVmZXJlbnplbiBhdWYgZGllIGFsdGVuIFBmYWRlIGRlcyB1bXppZWhlbmRlbiBDb2RlcworICAgICB6dSBmaW5kZW4gdW5kIGRvcnQgdW16dXN0ZWxsZW4uIEhpZXJiZWkgc2luZCBpbiBBdXNuYWhtZWZhZWxsZW4gdm9uCisgICAgIGZpZXNlbSBDb2RlIGF1Y2ggaW4gU3BpZWxlcnNhdmVmaWxlcyBnZXNwZWljaGVydGUgUGZhZGUgenUKKyAgICAgYmVydWVja3NpY2h0aWdlbiAoKkFSR0wqKS4KKworCis0KSBTZWhlcmhhZXVzZXIKKz09PT09PT09PT09PT09PQorCitvIERpZSBFcmxhdWJuaXMgenVtIEJhdSBlaW5lcyBTZWhlcmhhdXNlcyBpbiBlaW5lbSBHZWJpZXQgaGFlbmd0IGVpbnppZyB1bmQKKyAgYWxsZWluIHZvbiBkZW0gdmVyYW50d29ydGxpY2hlbiBNYWdpZXIgYWIuIFNvbGx0ZSBkaWVzZXIgbGFlbmdlciBuaWNodAorICBlcnJlaWNoYmFyIHNlaW4gKGF1Y2ggbmljaHQgdWViZXIgZXh0ZXJuZSBNYWlsISksIGxpZWd0IGRpZSBFbnRzY2hlaWR1bmcKKyAgYmVpbSBSZWdpb25zbWFnaWVyLCBkZXIgYWJlciBpbiBqZWRlbSBGYWxsIGRpZSBFaWdudW5nIGRlcyBCYXVwbGF0emVzCisgIGluIGRlciBVbWdlYnVuZyBiZXdlcnRlbiBtdXNzLgorCitvIEZ1ZXIgU29uZGVyd3VlbnNjaGUgYmV6dWVnbGljaCBVbnNpY2h0YmFya2VpdCB2b24gU2VoZXJoYWV1c2VybiBvZGVyCisgIGJlc29uZGVyZXIgS29tbWFuZG9zIHp1bSBCZXRyZXRlbiBkZXMgSGF1c2VzIHNlaSBhdWYgZGllIERhdGVpCisgIC9kb2MvYmVpc3BpZWxlL21pc2Mvc2VoZXJoYXVzLmMgdmVyd2llc2VuLCB3byBkaWUgVm9yZ2VoZW5zd2Vpc2UKKyAgZXJsYWV1dGVydCB3aXJkLiBFaW4gQmVpc3BpZWwgZWluZXIgc2VociB1bWZhbmdyZWljaGVuIEltcGxlbWVudGllcnVuZworICBmaW5kZXQgc2ljaCBpbiAvZC9lYmVuZS9yb29tL2hwX3N0cjhhLmMuCisKK28gQmVpIGdlYWVuZGVydGVuIEJlZmVobGVuIHp1bSBCZXRyZXRlbiBtdXNzIGJlYWNodGV0IHdlcmRlbiwgZGFzcyBiZWkgZWluZXIKKyAgU3RhbmRhcmRpbXBsZW1lbnRpZXJ1bmcgZGllIEVybGF1YmUtTGlzdGUgdW1nYW5nZW4gd2lyZCwgZC5oLiBvaG5lCisgIGJlc29uZGVyZSBWb3JrZWhydW5nZW4gdS5VLiBKRURFUiBkYXMgSGF1cyB1bmdlaGluZGVydCBiZXRyZXRlbiBrYW5uLgorICBFcyBpc3QgaGluZ2VnZW4gbW9lZ2xpY2gsIGRpZSBFcmxhdWJlLUxpc3RlIGFienVmcmFnZW4gdW5kIGVudHNwcmVjaGVuZAorICB6dSBiZWhhbmRlbG4sIGVpbiBCZWlzcGllbCBoaWVyZnVlciBpc3QgaW4gL2QvZWJlbmUvcm9vbS9ocF9zdHI4YS5jCisgIG5hY2h6dWxlc2VuIChkZXJ6ZWl0IGplZG9jaCBhdWYgU3BpZWxlcnd1bnNjaCBkZWFrdGl2aWVydCkuCisKKworNSkgRGVidWdnZW4gdm9uIENvZGUKKz09PT09PT09PT09PT09PT09PT09CisKK28gTmFjaCBkZW0gUmVwYXJpZXJlbiBlaW5lcyBPYmpla3RlcyBpc3QgZXMgbWVpc3QgZXJmb3JkZXJsaWNoLCBkYXMKKyAgYmV0cmVmZmVuZGUgT2JqZWt0IG5ldSB6dSBsYWRlbi4gRmFsbHMgZXMgc2ljaCBkYWJlaSB1bSBPYmpla3RlIGhhbmRlbHQsCisgIGRpZSB6LkIuIGluIGVpbmVtIFJhdW0gbWl0dGVscyBBZGRJdGVtKCkgaGluenVnZWZ1ZWd0IHd1cmRlbiAod2llIGV0d2EKKyAgZWluIE5QQyksIGRhbm4gaXN0IGVzIGFtIGJlc3RlbiwgZGllIERhdGVpIG1pdCBkZW0gQmVmZWhsCisgIDx1cGQgLWFkIGRhdGVpLmM+IHp1IGFrdHVhbGlzaWVyZW4gdW5kIHNvbWl0IHNhZW10bGljaGUgQ2xvbmVzIHp1CisgIHplcnN0b2VyZW4uIFdlbm4gbWFuIG1pdHRlbHMgPHVwZCAtYXIgZGF0ZWkuYz4gZGllIGJlc3RlaGVuZGVuIENsb25lcworICBlcnNldHplbiB3dWVyZGUsIHd1ZXJkZW4gZGllc2UgYXVzIGRlciBJdGVtLUxpc3RlIGRlcyBjbG9uZW5kZW4gUmF1bWVzCisgIGF1c2dldHJhZ2VuLCBzbyBkYXNzIGRpZXNlciBSYXVtIGRhbm4gaW0gcmVzZXQoKSBuZXVlIEl0ZW1zIGVyemV1Z3QgdW5kCisgIGRpZXNlIGluIGRlciBGb2xnZSBkb3BwZWx0IGV4aXN0aWVyZW4gd3VlcmRlbi4KKworCis2KSBiZXNvbmRlcmUgRnVua3Rpb25lbgorPT09PT09PT09PT09PT09PT09PT09PT0KKworRXMga29tbXQgaGFldWZpZyB2b3IsIGRhc3MgRnVua3Rpb25lbiB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4gbXVlc3NlbiwgdW5kIGRhcworaXN0IGF1Y2ggbm9ybWFsZXJ3ZWlzZSB2b2xsa29tbWVuIG5vcm1hbCB1bmQgbmljaHQgYmVhbnN0YW5kZW5zd2VydC4gSmVkb2NoCitzb2xsdGUgbWFuIGJlaSBiZXN0aW1tdGVuIEZ1bmt0aW9uZW4gZWluaWdlcyBBdWdlbm1lcmsgYXVmIGRpZSBrb3JyZWt0ZQorQXVzZnVlaHJ1bmcgcmljaHRlbi4gRWluaWdlIEJlaXNwaWVsZSBzaW5kIG5hY2hmb2xnZW5kIGF1ZmdlZnVlaHJ0OgorCitvIGNhdGNoX3RlbGwoKSAvIFJlY2VpdmVNc2coKQorICBEaWUgUmVha3Rpb24gdm9uIE9iamVrdGVuLCBpbnNiZXNvbmRlcmUgTlBDcywgYXVmIGVpbmdlaGVuZGUgVGV4dG1lbGR1bmdlbgorICBsYWVzc3Qgc2ljaCBudXR6ZW4sIHVtIHNjaG9lbmUgdW5kIHN0aW1tdW5nc3ZvbGxlIEdlYmlldGUgbWl0IGR5bmFtaXNjaAorICByZWFnaWVyZW5kZW4gQmV3b2huZXJuIHp1IHNjaGFmZmVuLiBFcyBsYWVzc3Qgc2ljaCBhdWYgZGVyIGR1bmtsZW4gU2VpdGUKKyAgZGVyIE1hY2h0IGhpbmdlZ2VuIGF1Y2ggdmVyd2VuZGVuLCB1bSB1ZWJsZSBLb25zdHJ1a3RlIHp1IHJlYWxpc2llcmVuLAorICBmdWVyIGRpZSBlcyBzZWl0IEV3aWdrZWl0ZW4gZ2VlaWduZXRlIEltcGxlbWVudGllcnVuZ2VuIGdpYnQsIHVuZCBkaWUKKyAgZGVtenVmb2xnZSBuaWVtYWxzIGR1cmNoIGVpbmUgRW5kYWJuYWhtZSBkdXJjaCBlaW5lbiBSTSBkdXJjaHNjaGx1ZXBmZW4KKyAgZHVlcmZlbi4gRWluIHBhYXIgcmVhbGUgTlBDLUJlaXNwaWVsZSBhdXMgZGVyIFByYXhpczoKKworICBTY2huaXBzZWwgMSkKKworICBpZiAoc3NjYW5mKHN0ciwgIiAgJXMgZ3JlaWZ0IGRlbiBQcmllc3RlciAlcyIsbmFtZTEsIGR1bW15KSA9PSAyKQorICB7CisgICAgcGwgPSBmaW5kX3BsYXllcihsb3dlcl9jYXNlKG5hbWUxKSk7CisgICAgaWYgKCFwbCB8fCAhbGl2aW5nKHBsKSkKKyAgICAgIHJldHVybiAxOworICAgIGVsc2UKKyAgICAgIEtpbGwocGwpOworICB9CisgIFp3ZWNrOiAgICAgU2ltdWxhdGlvbiB2b24gQWRkRGVmZW5kZXIoKSB1bmQgSW5mb3JtRGVmZW5kKCkvRGVmZW5kT3RoZXIoKQorICBLb21tZW50YXI6IEFic29sdXRlcyBOby1HbyEgTWl0IEVjaG8tRmFlaGlna2VpdGVuIHZvbiBTcGllbGVybiAoR2lsZGUgb2RlcgorICAgICAgICAgICAgIGFuZGVyd2VpdGlnKSBpc3QgaGllcm1pdCBlaW4gaW5kaXJla3RlciBQbGF5ZXJraWxsIG1vZWdsaWNoLgorICAgICAgICAgICAgIEluYWt6ZXB0YWJsZSBJbXBsZW1lbnRpZXJ1bmcuCisKKworICBTY2huaXBzZWwgMikKKworICBpZiAoc3NjYW5mKHN0ciwgIiVzIHNhZ3Q6ICVzXG4iLCB3ZXIsd2FzKSkKKyAgeworICAgIGlmIChsb3dlcl9jYXNlKHdhcyk9PSJqYSIgKQorICAgICAgdGhpc19wbGF5ZXIoKS0+bW92ZSh6aWVscmF1bSwgTV9UUE9SVCk7CisgIH0KKyAgWndlY2s6ICAgICBBdXNsb2VzZW4gZWluZXMgS29tbWFuZG9zLCBvaG5lICJzYWdlIC4uLiIgYWxzIEJlZmVobAorICAgICAgICAgICAgIHVlYmVyc2NocmVpYmVuIHp1IG11ZXNzZW4uCisgIEtvbW1lbnRhcjogQXVzbnV0emJhciBhbHMgUmVtb3RlLUZsdWNodHRlbGVwb3J0LCBpbmRlbSBtYW4gZGllIE1lbGR1bmcKKyAgICAgICAgICAgICBtaXR0ZWxzIHRlaWxlLW1pdCBhbiBkZW4gTlBDIHNlbmRldDoKKyAgICAgICAgICAgICAiUm9iZXJ0IHRlaWx0IERpciBtaXQ6IHNhZ3Q6IGphIiwgd2FzIHVuZ2VwcnVlZnQgZWluIG1vdmUoKSAKKyAgICAgICAgICAgICB6dXIgRm9sZ2UgaGF0LiBPZmZlbnNpY2h0bGljaCBlYmVuc28gdW5nZWVpZ25ldCB3aWUgZGFzIAorICAgICAgICAgICAgIHZvcmlnZSBCZWlzcGllbC4KKworCisgIFNjaG5pcHNlbCAzKQorCisgIGlmIChzc2NhbmYobG93ZXJfY2FzZShzdHIpLCIlcyBzYWd0OiAlc3ZlcnN0ZWNrJXMiLHMxLHMyLHMzKSkKKyAgICB0ZWxsX3Jvb20oZW52aXJvbm1lbnQoKSxzcHJpbnRmKCJEZXIgRmlzY2ggc2FndDogRGFzIGlzdCBhYmVyIGtlaW5lICIKKyAgICAgICJncm9zc2UgSGlsZmUsICVzLlxuIixjYXBpdGFsaXplKHMxKSksKHtUT30pKTsKKworICBzaWVodCBlcnN0bWFsIGhhcm1sb3MgYXVzLCBmdWVocnQgYWJlciBtaXQgZGVyIEFud2Vpc3VuZworCisgIFNldENoYXRzKDgsICh7ICJEZXIgRmlzY2ggc2FndDogV28ga2FubiBpY2ggbWljaCBudXIgdmVyc3RlY2tlbj8ifSkgKTsKKworICBkYXp1LCBkYXNzIGRlciBOUEMgZGF1ZXJuZCBtaXQgc2ljaCBzZWxiZXIgc2Nod2F0enQuIEtlaW4ga3JpdGlzY2hlciBCdWcKKyAgaW0gZWlnZW50bGljaGVuIFNpbm4sIGFiZXIgYXVmIGplZGVuIEZhbGwgZGVyIEF0bW9zcGhhZXJlIGltIEdlYmlldAorICBzZWhyIGFidHJhZWdsaWNoLgorCitvIG1vdmUoKQorICBVZWJlcnNjaHJlaWJlbiB2b24gbW92ZSgpIGlzdCBlaW5lIGV4dHJlbSBoZWlrbGUgQW5nZWxlZ2VuaGVpdCwgYmVpIGRlcgorICBiZWltIGtsZWluc3RlbiBGZWhsZXIgbWFzc2l2ZSBQcm9ibGVtZSByZXN1bHRpZXJlbiBrb2VubmVuLCBqZWRvY2ggbWVpc3QKKyAgbmljaHQgb2ZmZW5zaWNodGxpY2ggaXN0LCB3b2hlciBkYXMgcmVzdWx0aWVydC4gQWxzIGFsbGdlbWVpbmUgRW1wZmVobHVuZworICBzb2xsdGUgZ2VsdGVuLCBkYXNzIG1vdmUoKSBOSUUgdWViZXJzY2hyaWViZW4gd2lyZCwgdW5kIHdlbm4sIGRhbm4gbXVzcworICBhdXNmdWVocmxpY2ggdW5kIGF1Zm1lcmtzYW0gZ2VwcnVlZnQgd2VyZGVuLCB3YXMgZGEgcGFzc2llcnQsIHVuZCBvYiBkZXIKKyAgZ2V3dWVuc2NodGUgRWZmZWt0IG5pY2h0IGFuZGVycyBzYXViZXJlciBlcnJlaWNodCB3ZXJkZW4ga2Fubi4KKyAgQWxzIHp1c2FldHpsaWNoZXIgSGlud2VpcyBzZWkgYXVmIE5vdGlmeU1vdmUoKSB1bmQgUHJldmVudE1vdmUoKSB2ZXJ3aWVzZW4sCisgIG1pdCBkZXJlbiBIaWxmZSBzaWNoIGRpZSBhbGxlcm1laXN0ZW4gRmFlbGxlIGVyc2NobGFnZW4gbGFzc2VuLCBpbiBkZW5lbgorICBNYWdpZXIgZmFlbHNjaGxpY2hlcndlaXNlIGdsYXViZW4sIG1vdmUoKSB1ZWJlcnNjaHJlaWJlbiB6dSBtdWVzc2VuLgorCitvIERlZmVuZCgpL0F0dGFjaygpCisgIGhpZXIgaXN0IGVpbiBiZWxpZWJ0ZXIgRmVobGVyIGVpbmZhY2ggZGVyLCBkYXNzIG1hbiBhbSBFbmRlIGRlciBGdW5rdGlvbgorICA6OkRlZmVuZCgpIGJ6dy4gOjpBdHRhY2soKSBydWZ0LCBhYmVyIGltIENvZGVibG9jayB2b3JoZXIgZGFzIE9iamVrdAorICBkdXJjaCBlaWdlbmVuIFRvZCBvZGVyIGFuZGVyZXMgc2Nob24gemVyc3RvZXJ0IHd1cmRlLiBEYW5uIGdlaHQgZGFzIHNjaGllZi4KKyAgRWluZmFjaCBtYWwgaGluc2NoYXVlbiAtIGVzIGlzdCBhYmVyIGtlaW4gd2lya2xpY2ggZ3JhdmllcmVuZGVyIEZlaGxlciwKKyAgZGEgc293YXMgaW0gS2FtcGYgbWVpc3QgemllbWxpY2ggc2NobmVsbCBhdWZmYWVsbHQuCisKK28gY2FsbF9vdXQoKQorICBIaWVyenUgendlaSBIaW53ZWlzZTogenVtIGVpbmVuIGZ1ZWhydCBjYWxsX291dCgieCIsMCkgc2VpdCBkZXIgVW1zdGVsbHVuZworICBhdWYgTERtdWQgYWxzIERyaXZlciBuaWNodCBtZWhyIGltcGxpeml0IHp1IGVpbmVtIGNhbGxfb3V0KCJ4IiwxKSwgd2llIGVzCisgIHp1dm9yIHdhciwgc29uZGVybiB0YXRzYWVjaGxpY2ggenUgZWluZW0gZmFzdCBzb2ZvcnRpZ2VuIEZ1bmt0aW9uc2F1ZnJ1ZiBkZXIKKyAgRnVua3Rpb24geCgpIC0gbWl0IGFsbGVuIEtvbnNlcXVlbnplbiwgaW5rbHVzaXZlIGVpbmVzICJ0b28gbG9uZyBldmFsIi0KKyAgQnVncy4gV2VyIGVpbmUgZWNodGUgVmVyem9lZ2VydW5nIGJyYXVjaHQsIG11c3MgbWluZGVzdGVucyBjYWxsX291dCgieCIsMSkKKyAgdmVyd2VuZGVuLgorICBadW0gYW5kZXJlbiB3dXJkZSBtaXQgTERtdWQgZGllIEdyYW51bGFyaXRhZXQgZGVzIHJlc2V0KCktQXVmcnVmZXMgYXVmCisgIEhlYXJ0YmVhdC1HZW5hdWlna2VpdCAoMiBzKSB2ZXJmZWluZXJ0LCBzbyBkYXNzIG1hbiBiZXF1ZW0gbGFlbmdlcmUKKyAgVmVyem9lZ2VydW5nZW4gYXVmIGRpZSBWZXJ3ZW5kdW5nIHZvbiByZXNldCgpIHVtc3RlbGxlbiBrYW5uLgorCitvIFplcnN0b2VyZW4gdm9uIE9iamVrdGVuIG1pdCByZW1vdmUoKSBvZGVyIGRlc3RydWN0KCkKKyAgTWFuIHNvbGx0ZSBlaW5lbiBzZWhyIGtyaXRpc2NoZW4gQmxpY2sgYXVmIEtvbnN0cnVrdGUgd2VyZmVuLCBkaWUKKyAgbmFjaCBlaW5lbSByZW1vdmUoKSBub2NoIHdlaXRlcmVuIENvZGUgYXVzZnVlaHJlbiAoQXVzbmFobWU6IGVjaHRlIGVmdW5zIAorICB1bmQgQ29tcGlsZXItS29uc3RydWt0ZSB3aWUgcmV0dXJuKS4KKyAgV2VubiBtYW4gT2JqZWt0ZSB6ZXJzdG9lcmVuIHdpbGwgb2RlciBtdXNzLCBzb2xsdGUgbWFuIGltbWVyIHp1ZXJzdCAKKyAgcmVtb3ZlKCkgdmVyd2VuZGVuLiBEZXN0cnVjdCBtdXNzIGRlbSBhYnNvbHV0ZW4gQXVzbmFobWVmYWxsIHZvcmJlaGFsdGVuIAorICBibGVpYmVuLiBNYW4gc29sbHRlIGltIEhpbnRlcmtvcGYgYmVoYWx0ZW4sIGRhc3MgT2JqZWt0ZSBndXRlIEdydWVuZGUgaGFiZW4KKyAga29lbm5lbiwgc2ljaCBlaW5lbSByZW1vdmUoKSB6dSB2ZXJ3ZWlnZXJuLgorCitvIGZvcigpLVNjaGxlaWZlbgorICBFaWdlbnRsaWNoIGtlaW5lIEZ1bmt0aW9uLCBhYmVyIGFuIGRpZXNlciBTdGVsbGUgZG9jaCBwYXNzZW5kOgorICBmb3IoKS1TY2hsZWlmZW4gc29sbHRlbiBnZW5lcmVsbCBkdXJjaCBmb3JlYWNoKCktS29uc3RydWt0aW9uZW4gZXJzZXR6dAorICB3ZXJkZW4sIGRhIGRpZXMgc2lnbmlmaWthbnQgdW5kIG1lc3NiYXIgc2NobmVsbGVyIGlzdC4gRGllIG5hZWNoc3QtCisgIHNjaG5lbGxlcmUgVmFyaWFudGUgd2FlcmUgZXR3YSBmb2xnZW5kZXMsIHNvZmVybiBkaWUgUmVpaGVuZm9sZ2UgZGVyCisgIEFiYXJiZWl0dW5nIHVuZXJoZWJsaWNoIGlzdCAoaSBpc3QgaW50ZWdlciwgYXJyIGlzdCBlaW4gbWl4ZWQtQXJyYXkpOgorCisgIGZvciAoIGk9c2l6ZW9mKGFycik7IGktLTsgKSB7CisgICAgdHVfZXR3YXNfbWl0KGFycltpXSk7CisgIH0KKworbyB3cml0ZV9maWxlKCkKKyAgQmVudXR6dW5nIGRpZXNlciBGdW5rdGlvbiBudXIgaW4gYmVncnVlbmRldGVuIEF1c25haG1lZmFlbGxlbiBhYm5laG1lbiwgZGEKKyAga2VpbmVybGVpIEJlZ3Jlbnp1bmcgZGVyIERhdGVpZ3JvZXNzZSBleGlzdGllcnQuIEluc2Jlc29uZGVyZSBiZWkgTG9nZmlsZXMKKyAgZW50c3RlaGVuIGhpZXJkdXJjaCBpbSBMYXVmZSBkZXIgWmVpdCBNb25zdGVyZGF0ZWllbiwgZGllIG51ciBQbGF0dGVucGxhdHoKKyAgdmVyYnJhdWNoZW4sIGFiZXIga2F1bSB6dSB1ZWJlcnNjaGF1ZW4gc2luZC4gU3RhdHQgd3JpdGVfZmlsZSgpIHdpcmQgaW4KKyAgZGVuIGFsbGVybWVpc3RlbiBGYWVsbGVuIGxvZ19maWxlKCkgbWl0IGRlciBTdGFuZGFyZGdyb2Vzc2Ugdm9uIDUwIGtCIGZ1ZXIKKyAgTG9nZmlsZSB1bmQgZWluZSBnZ2YuIHZvcmhhbmRlbmUgQWx0dmVyc2lvbiAoKi5PTEQpIGF1c3JlaWNoZW5kIHNlaW4uCisKK28gVmVyd2FsdGVuIHZvbiBjaGFyYWt0ZXJiZXpvZ2VuZW4gRGF0ZW4KKyAgQWxzIEJlaXNwaWVsIHNlaWVuIGhpZXIgU3RhdHVzZGF0ZW4gZnVlciBkZW4gQWJsYXVmIHZvbiBRdWVzdHMgZ2VuYW5udCwKKyAgb2RlciBIaWdoc2NvcmVzIGluIGlyZ2VuZHdlbGNoZW4gVG9wbGlzdGVuLiBGdWVyIGRpZSBVbXNldHp1bmcgZGllc2VyCisgIERhdGVuZXJmYXNzdW5nIHdlcmRlbiB0eXBpc2NoZXJ3ZWlzZSB6d2VpIFRlY2huaWtlbiBlaW5nZXNldHp0LiBadW0KKyAgZWluZW4ga2FubiBlaW4gTWFzdGVyb2JqZWt0IGVyc3RlbGx0IHdlcmRlbiwgZGFzIGRpZSBEYXRlbiBzYW1tZWx0IHVuZAorICBtaXR0ZWxzIHNhdmVfb2JqZWN0KCkgZGF1ZXJoYWZ0IHNwZWljaGVydC4gWnVtIGFuZGVyZW4ga2FubiBtYW4gYXVjaAorICBEYXRlbiBpbiBlaW5lciBQcm9wZXJ0eSBpbSBTcGllbGVyIGFibGVnZW4gdW5kIGRpZXNlIGplIG5hY2ggQW53ZW5kdW5ncy0KKyAgZmFsbCBhdWYgU0FWRSBzZXR6ZW4uCisKKyAgQmVpIGRlciBlcnN0ZW4gVmFyaWFudGUgd2lyZCBtYW4gdWVibGljaGVyd2Vpc2UgZGllIFVJRCBvZGVyIFVVSUQgZGVzIAorICBTcGllbGVycyBhbHMgSW5kaXppZXJ1bmdzbWVya21hbCB2ZXJ3ZW5kZW4uIERlciBlcnN0ZSBGYWxsc3RyaWNrIGlzdCBudW4sCisgIGRhc3MgZGllIFVJRCBiZWkgU3BpZWxlcm4gKG5pY2h0IFNlaGVybikgZ2dmLiBuYWNoIGVpbmVyIFNlbGJzdGxvZXNjaHVuZworICBuZXUgdmVyZ2ViZW4gd2VyZGVuIGthbm4sIHNvIGRhc3MgZGllIERhdGVuIGlua29uc2lzdGVudCB3ZXJkZW4gYnp3LiBkZXIKKyAgU3BpZWxlciBzY2hlaW5iYXIgc2Nob24gaW4gRXVyZW0gTWFzdGVyIGVpbmdldHJhZ2VuIGlzdCwgb2J3b2hsIGVzIHNpY2gKKyAgZWlnZW50bGljaCB1bSBqZW1hbmQgZ2FueiBhbmRlcmVzIGhhbmRlbHQuCisgIEFscyBBYmhpbGZlbWFzc25haG1lIGJpZXRldCBzaWNoIGZvbGdlbmRlcyBhbjogCisgIGEpIFVVSUQgdmVyd2VuZGVuLCBkYSBkaWVzZSBmdWVyIGplZGVuIFNwaWVsZXIgZWluZGV1dGlnIGlzdC4KKyAgYikgSGlud2VpczogZmluZF9wbGF5ZXIoKSBrYW5uIGF1Y2ggbWl0IFVVSURzIHVtZ2VoZW4gdW5kIGRhcyB6dWdlaG9lcmlnZQorICAgICBTcGllbGVyb2JqZWt0IGVybWl0dGVsbi4KKyAgYykgTWFuIHNvbGx0ZSBnZ2YuIGF1ZiBkYXMgTXVkbGliLUV2ZW50IEVWVF9MSUJfUExBWUVSX0RFTEVUSU9OIGxhdXNjaGVuLCAKKyAgICAgdW0gU3BpZWxlciBhdXN6dXRyYWdlbiwgZGllIHNpY2ggbG9lc2NoZW4sIHdvZHVyY2ggZGllIHp1Z2Vob2VyaWdlbgorICAgICBEYXRlbiBvYnNvbGV0IHdlcmRlbi4KKworICBCZWkgZGVyIHp3ZWl0ZW4gVmFyaWFudGUgbXVzcyBtYW4gdmVyc2NoaWVkZW5lIERpbmdlIGJlcnVlY2tzaWNodGlnZW46CisgIGEpIG5pY2h0IGVuZGxvcyB2aWVsZSBQcm9wZXJ0aWVzIG1hY2hlbiwgc29uZGVybiBwcm8gVGhlbWEgKHouQi4gUXVlc3QpCisgICAgIGVpbmZhY2ggZWluZS4KKyAgYikgbnVyIGRpZSBQcm9wZXJ0aWVzIHNwZWljaGVybiwgYmVpIGRlbmVuIGRhcyB3aXJrbGljaCBub2V0aWcgaXN0LgorICBjKSBTcGVpY2hlcnQgbWFuIFByb3BlcnRpZXMgdW5kIGRpZSBBdWZnYWJlIHdpcmQgZXJsZWRpZ3QsIGQuaC4gZGVyIAorICAgICBJbmhhbHQgZGVyIFByb3BlcnR5IG9ic29sZXQsIG11c3MgZGllIFByb3BlcnR5IHdpZWRlciBnZWxvZXNjaHQgd2VyZGVuLgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9ydWVzdHVuZ2VuIGIvZG9jL3dpei9ydWVzdHVuZ2VuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzQyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3J1ZXN0dW5nZW4KQEAgLTAsMCArMSwyMTIgQEAKKyBSVWVTVFVOR0VOOgorICAgICBhLiBBbGxnZW1laW5lcworCisJQXVjaCBoaWVyIGdlbHRlbiBkaWUgYWt0dWVsbGVuIEdlbmVobWlndW5nc2dyZW56d2VydGUuIEFsbGVzLCB3YXMKKwlkaWVzZSBBQy1HcmVuendlcnRlIHVlYmVyc3RlaWd0LCBpc3QgcHJpbnppcGllbGwgCisJZ2VuZWhtaWd1bmdzcGZsaWNodGlnLiBEaWUgUk1zIHNpbmQgZ2Vmb3JkZXJ0LCBmdWVyIGVpbmUgYXVzZ2V3b2dlbmUKKwlCZXN0dWVja3VuZyBkZXIgUnVlc3R1bmdlbiBpbiBpaHJlbSBHZWJpZXQgenUgc29yZ2VuLiBOaWNodCBudXIgZGllCisJb2JlcmVuIFNjaHV0endlcnRlIGdpbHQgZXMgYWJ6dWRlY2tlbiwgYXVjaCBkaWUgd2VuaWdlciBndXRlbiAKKwlSdWVzdHVuZ2VuIHNvbGx0ZSBlcyBnZWJlbi4KKworCUFscyBSaWNodHdlcnQgc29sbHRlIGdlbHRlbjogRWluZSBndXRlIExlZGVycnVlc3R1bmcgaGF0IGNhLiBBQyAyMCwgCisJZWluZSBzdGFiaWxlIEplYW5zIGV0d2EgQUMgNSwgZWluZSBnZWhhZXJ0ZXRlIExlZGVya2FwcGUgQUMgNS4gTnVyIAorCXNvIGFscyBJZGVlLi4uCisKKwlCZXNvbmRlcnMgZXhpc3RpZXJlbmRlIFJ1ZXN0dW5nZW4gd2llIGRlciBMaWNodHBhbnplciBldGMuIHNpbmQgCisJZGVmaW5pdGl2IHp1IGd1dCwgYnp3LiBlciBpc3QgZnVlciBlaW5lIHNvIGxlaWNodCBlcnJlaWNoYmFyZSAKKwlSdWVzdHVuZyB6dSBndXQuIEhpZXIgc29sbHRlbiBkaWUgUk1zIHZlcnN0YWVya3QgZGFyYXVmIGFjaHRlbiwgZGFzcyAKKwluaWNodCB1bmJlZGluZ3QgZGVyIER1cmNoc2Nobml0dCBkZXIgQUNzIGJlaSA0LzUgZGVyIE1heC1BQyBsaWVndCwgCisJc29uZGVybiBkYXNzIGF1Y2ggaGllciBhdWYgZWluZSBSdWVzdHVuZyBtaXQgaG9oZXIgQUMgdmllbGUgbWl0IAorCW5pZWRyaWdlcmVyIEFDIGtvbW1lbi4KKworCVJ1ZXN0dW5nZW4gdm9tIFR5cCBBVF9NSVNDIGR1ZXJmZW4ga2VpbmVybGVpIFZlcmFlbmRlcnVuZ2VuIGltIAorCVNwaWVsZXIgdmVydXJzYWNoZW4sIGtlaW5lIEF0dHJpYnV0ZSB2ZXJhZW5kZXJuIG5vY2ggc29uc3R3aWUgCisJa2FtcGZyZWxldmFudGUgQmVkZXV0dW5nIGJlc2l0emVuIG9kZXIgU3BpZWxlci9HZWduZXIgbWFuaXB1bGllcmVuLiAKKwlEaWUgQUMgc29sY2hlciBSdWVzdHVuZ2VuIGlzdCBpbW1lciAwIHVuZCB3aXJkIG5pY2h0IGFuZGVycyBnZS0KKwluZWhtaWd0LiBXZWl0ZXIgZHVlcmZlbiBzb2xjaGUgUnVlc3R1bmdlbiBuaWNodCB1ZWJlciBlaW5lIEhpdC0KKwl1bmQvb2RlciBEZWZlbmRGdW5jIHZlcmZ1ZWdlbi4KKworICAgICBiLiBQcm9wZXJ0aWVzCisKKyAgICAgIFBfV0VJR0hUCisJQml0dGUgcmVhbGlzdGlzY2ggaGFsdGVuLiBSaW5nZSBtaXQgd2VpdCB1ZWJlciAxMDAgR3JhbW0gc2luZCAKKwlTY2h3YWNoc2lubiwgZWJlbnNvIEhvc2VuIG1pdCBHZXdpY2h0ZW4gdW50ZXIgMjAwIHVzdy4KKyAgKEJUVzogU3BpZWxlciBrb2VubmVuIGJlaSBNYXgtU3RhZXJrZSAoMzApIDMzMjAwIGdyIHp6Z2wuIGV0d2FpZ2UKKyAgIFRyYWdlc2tpbGxzIGRlciBHaWxkZSB0cmFnZW4uKQorCisgICAgICBQX1ZBTFVFCisJV2VydCBkZXIgUnVlc3R1bmdlbiBzb2xsdGUgYXVjaCBuaWNodCB6dSBncm9zcyBzZWluIHVuZCBzaWNoIGVpbiAKKwl3ZW5pZyBhbiBkZXIgQUMgb3JpZW50aWVyZW4uIEViZW5mYWxsczogUk1zLCBzY2hhdXQgZ2VuYXUgaGluLgorCisgICAgICBQX0FSTU9VUl9UWVBFCisJQml0dGUgc2lubnZvbGwgYmVudXR6ZW4hIEtsZWlkZXIgYWxzIEhvc2VuIGRlZmluaWVyZW4gb2RlciAKKwlhZWhubGljaGVzIGlzdCB1bnNpbm5pZyB1bmQgc29sbHRlIG5pY2h0IGdlbmVobWlndCB3ZXJkZW4uIFNpbmQgbWFsIAorCXdpZWRlciBkaWUgUk1zIGZ1ZXIgenVzdGFlbmRpZy4gQml0dGUgYWNodGV0IGRyYXVmIQorCisJRm9sZ2VuZGUgUnVlc3R1bmdzdHlwZW4gc2luZCBtb2VnbGljaDoKKworCUFUX0FSTU9VUgorCQlBbGxlcyB3YXMgaXJnZW5kd2llIGRlbiBUb3JzbyBzY2h1ZXR6dC4gQWxzbyB2b3JuIHVuZCAKKwkJaGludGVuLCB3aWUgZWluIFB1bGxvdmVyLCBlaW4gS2V0dGVuaGVtZCwgZWluIFBhbnplciBldGMuCisJQVRfQ0xPQUsKKwkJVW1oYWVuZ2UsIGF1Y2ggaW0gd2VpdGVyZW4gU2lubiB3aWUgRGVja2VuIHVuZCBTY2hsZWllci4gSW0gCisJCVByaW56aXAgZGFzLCB3YXMgbm9ybWFsZXJ3ZWlzZSBudXIgZGVuIFJ1ZWNrZW4gc2NodWV0enQsIGJlaSAKKwkJQmVkYXJmIGFiZXIgYXVjaCB2b3JuIGhlcnVtIGdld2lja2VsdCB3ZXJkZW4ga29lbm50ZS4KKwlBVF9IRUxNRVQKKwkJS29wZmJlZGVja3VuZ2VuIGplZGVyIEFydCwgdm9tIG5vcm1hbGVuIEh1dCB1ZWJlciBLcm9uZW4gYmlzIAorCQloaW4genUgU3Rpcm5iYWVuZGVybiAod2VubiBzaWUgc2NodWV0emVuIHNvbGxlbikKKwlBVF9UUk9VU0VSUworCQlIb3Nlbi4gQWxsZXMgd2FzIHp1bSB1ZWJlcndpZWdlbmRlbiBUZWlsIGRhenUgZ2VkYWNodCBpc3QsIAorCQlkaWUgQmVpbmUgdW5kL29kZXIgZGVuIFBvcG8genUgc2NodWV0emVuLCBhbHNvIGF1Y2ggCisJCVNjaHVlcnplbiBvZGVyIExlZ2dpbnMuIE5hdHVlcmxpY2ggZ2Vob2VyZW4gYXVjaCBCYWRlaG9zZW4gCisJCW9kZXIgTGVuZGVuc2NodWVyemUgaGllcmhlci4gQUMgZGFubiBzZWxic3R2ZXJzdGFlbmRsaWNoIAorCQlnZXJpbmcuCisJQVRfQk9PVAorCQlTY2h1aGUsIFN0aWVmZWwgdW5kIEZ1c3NiZWtsZWlkdW5nZW4gamVkZXIgQXJ0LgorCUFUX0dMT1ZFCisJCUhhbmRzY2h1aGUgb2RlciBhbGxlcywgd2FzIG1hbiBzbyB6dW0gU2NodXR6IGRlciBvYmVyZW4gCisJCUV4dHJlbWl0YWV0ZW4gYmVudXR6dCwgd2llIEFybXNjaG9uZXIsIEdsYWNlaGFuZHNjaHVoZSwgCisJCUZhZXVzdGxpbmdlLCBCb3hoYW5kc2NodWhlIGV0Yy4KKwlBVF9RVUlWRVIKKwkJS29lY2hlciB1bmQgYWVobmxpY2hlcywgaW4gZGVuZW4gbWFuIE11bml0aW9uIGZ1ZXIgCisJCVNjaHVzc3dhZmZlbiB1bnRlcmJyaW5nZW4ga2Fubi4gU2NodWV0emVuIHR1dCBzb3dhcyAKKwkJbmF0dWVybGljaCBuaWNodC4KKwlBVF9TSElFTEQKKwkJQWxsZXMsIHdhcyBtYW4gc28gYW5zdGVsbGUgZGVyIGVpZ2VuZW4gQXJtZSBpbiBlaW5lbiAKKwkJZ2VnbmVyaXNjaGVuIFNjaGxhZyBoYWx0ZW4ga2FubiB1bmQgZGFzIG5pY2h0IG9mZml6aWVsbCBhbHMgCisJCVdhZmZlIGRla2xhcmllcnQgaXN0LiBFcyBzb2xsdGUgbmljaHQgZ3JhZGUgYXVzIFBhcGllciAKKwkJYmVzdGVoZW4sIHVuZCBkYXMgR2V3aWNodCBpc3QgbWl0IGVudHNjaGVpZGVuZCBmdWVyIGRpZSAKKwkJR3VldGUgZGVzIFNjaGlsZGVzLiBTaWUgd2VyZGVuIHNlaHIgd2VuaWcgaW0gTUcgZ2VudXR6dCwgd2FzIAorCQllaWdlbnRsaWNoIHNlbHRzYW0gaXN0LiBTY2hsaWVzc2xpY2ggZXJyZWljaHQgZWluIGd1dGVyIAorCQlTY2hpbGQgZGllIEd1ZXRlIHZvbiBIZWxtLCBIb3NlIHVuZCBIYW5kc2NodWhlbiB6dXNhbW1lbiAKKwkJb2RlciAzLzQgZGVyIFF1YWxpdGFldCBlaW5lciBSdWVzdHVuZy4gQW5kZXJlcnNlaXRzOiBlcyBnaWJ0IAorCQlhdWNoIG5pY2h0IHNlaHIgdmllbGUgU2NoaWxkZS4gRGEgaGVycnNjaHQgQmVkYXJmIQorCUFUX1JJTkcKKwkJUmluZ2UuIFByaW56aXBpZWxsIHNvbGx0ZSBnZWx0ZW4sIGRhcyBSaW5nZSBwcmFrdGlzY2gga2VpbmUgCisJCVNjaHV0endpcmt1bmcgaGFiZW4gKGFsc28gQUMgMSBvZGVyIG1heC4gMikuIE51ciwgdW5kIGRhZnVlciAKKwkJc2luZCBkaWUgRGluZ2VyIGRhLCB3ZW5uIHNpZSBtYWdpc2NoIHNpbmQga29lbm5lbiBzaWUgCisJCXp1c2FldHpsaWNoZSBGdW5rdGlvbmVuIGhhYmVuLgorCUFUX0FNVUxFVAorCQlJbSBQcmluemlwIGRhc3NlbGJlIHdpZSBiZWkgQVRfUklORywgbnVyIHdlcmRlbiBkaWUgRGluZ2VyIAorCQltZWlzdCBhbiBLb3JkZWxuIHVtIGRlbiBIYWxzIG9kZXIgYWxzIEJyb3NjaGVuIGFuIGRlbiAKKwkJS2xhbW90dGVuIGdldHJhZ2VuLCBrb2VubnRlbiBhbHNvIGplIG5hY2ggR3JvZXNzZSAKKwkJdGF0c2FlY2hsaWNoIG1laHIgU2NodXR6IGJpZXRlbiBhbHMgZWluIFJpbmcuIEFiZXIgYXVjaCBoaWVyIAorCQlnaWx0OiBBQz4yIHNjaHJlaXQgbmFjaCBFcmtsYWVydW5nIHVuZCBzb2xsdGUgbWFnaXNjaGVuIAorCQlEaW5nZXJuIHZvcmJlaGFsdGVuIGJsZWliZW4uCisJQVRfQkVMVAorCQlHdWVydGVsIGFsbGVyIEFydCAoei5CLiBXYWZmZW5ndWVydGVsIG9kZXIgTWFnaXN0ZXJndWVydGVsIAorCQlkZXIgWmF1YmVyZXIpLiBTY2h1dHp3aXJrdW5nIGhhdCBzb3dhcyBuYXR1ZXJsaWNoIGthdW0uCisJQVRfTUlTQworCQlBbGxlcywgd2FzIG1hbiBzb25zdCBub2NoIHNvIGFuemllaGVuIGthbm4sIHdhcyBhYmVyIGVoZXIgCisJCWFscyBaaWVycmF0IGdlZGFjaHQgaXN0LiBBQyBpbW1lciAwLiBCaXR0ZSAqa2VpbmUqIAorCQlLbGVpZHVuZ3NzdHVlY2tlLCBkaWUgaW4gZWluZSBkZXIgYW5kZXJlbiBLYXRlZ29yaWVuIHBhc3NlbiwgCisJCWFscyBBVF9NSVNDIGRlZmluaWVyZW4uIERhbm4gbGllYmVyIGRpZSBBQyBzZWhyIHRpZWYuIFdlbm4gCisJCWVzIGVoIGFscyBHYWcgZ2VkYWNodCBpc3Qga29lbm5lbiBkaWUgU3BpZWxlciBzaWNoIGF1Y2ggYmVpIAorCQlCZWRhcmYgdW16aWVoZW4uCisJCVNvbGNoZSBSdWVzdHVuZ2VuIGR1ZXJmZW4ga2VpbmVybGVpICghKSBCZWRldXR1bmcgaW0gS2FtcGYgCisJCWZ1ZXIgZGVuIFNwaWVsZXIgaGFiZW4uIEtlaW5lcmxlaSBWZXJhZW5kZXJ1bmdlbiBpbS9hbiAKKwkJU3BpZWxlci9HZWduZXIgdmVydXJzYWNoZW4gb2RlciBhZWhubGljaGVzLgorCisgICAgICBQX0FDCisJc2llaGUgVGFiZWxsZSB3ZWl0ZXIgdW50ZW4KKworICAgICAgUF9FRkZFQ1RJVkVfQUMKKwlGYWxscyBlaW5lIERlZmVuZEZ1bmMgdm9yaGFuZGVuIGlzdCB1bmQgZGllIHJlZ3VsYWVyZSBBQyB2ZXJhZW5kZXJ0LCAKKwlzb2xsdGUgc2llIGdlc2V0enQgd2VyZGVuLiBFcyB3aXJkIGRlciBEdXJjaHNjaG5pdHRzd2VydCBkZXIgQUMgCisJaW5jbC4gZGVyIERlZmVuZEZ1bmMgZ2VzZXR6dC4gRGllbnQgZGVyIEthZW1wZmVyZ2lsZGUgenVyIAorCUVpbnNjaGFldHp1bmcuCisKKyAgICAgIFBfREFNX1RZUEUKKwlBdWNoIFJ1ZXN0dW5nZW4ga29lbm5lbiBlaW5lbiBEYW1hZ2UtVHlwIGhhYmVuLiBOdXR6ZW4gdHV0IGRhcyAKKwliaXNoZXIgbnVyIGRpZSBLYWVtcGZlcmdpbGRlLCBhYmVyIHNjaGFkZW4gdHV0J3Mga2VpbmVtLiBEZWZhdWx0IGlzdCAKKwlEVF9CTFVER0VPTi4KKworICAgICAgUF9OT0JVWQorCUFsbGUgUnVlc3R1bmdlbiBhYiAyLzMgZGVyIG1heGltYWwgZnVlciBkZW4gamV3ZWlsaWdlbiBSdWVzdHVuZ3N0eXAgCisJenVsYWVzc2lnZW4gQUMgd2VyZGVuIGJlaW0gVmVya2F1ZiBpbSBMYWRlbiBlaW5iZWhhbHRlbi4gRGVubm9jaCAKKwlzb2xsdGVuIGJlc29uZGVyZSBSdWVzdHVuZ2VuIFBfTk9CVVkgZ2VzZXR6dCBoYWJlbi4gSW5zYmVzb25kZXJlIAorCXdhZXJlIGRhcyBmdWVyIGFsbGVzIG1pdCBEZWZlbmRGdW5jcyB6dSB3dWVuc2NoZW4sIGFiZXIgYXVjaCBTYWNoZW4sIAorCWRpZSBhbHMgR2FnIGdlZGFjaHQgc2luZC4gRGFmdWVyIGtvZW5uZW4gc2ljaCBkaWUgU3BpZWxlciBydWhpZyAKKwlldHdhcyByZWNrZW4uCisKKyAgICBjLiBTcGV6aWFscnVlc3R1bmdlbi9SdWVzdHVuZ2VuIG1pdCBTb25kZXJmdW5rdGlvbgorCisJQWxsZSBSdWVzdHVuZ2VuLCBkaWUgdWViZXIgZWluZSBEZWZlbmRGdW5jIG9kZXIgYWVobmxpY2hlcyB2ZXJmdWVnZW4gCisJc2luZCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisKKwlQcmluemlwaWVsbCBzb2xsdGVuIGRpZSBnZWx0ZW5kZW4gR3Jlbnp3ZXJ0ZSAocy51LikgbmljaHQgCisJdWViZXJzY2hyaXR0ZW4gd2VyZGVuOyBBdXNuYWhtZW4ga29lbm5lbiB1bnRlciBVbXN0YWVuZGVuIGdlbmVobWlndCAKKwl3ZXJkZW4uIEltbWVyIGlzdCBkZXIgUmV0dXJuLVdlcnQgcGVyIHJhbmRvbSgpIHp1cnVlY2t6dWxpZWZlcm4sIGRhIAorCWRlciBXZXJ0IG9obmUgd2VpdGVyZXMgcmFuZG9tKCkgYXVmYWRkaWVydCB3aXJkLgorCisJV2VhckZ1bmNzLCBkaWUgUmVzdHJpa3Rpb25lbiB2b3JzZWhlbiAoR2VzY2hsZWNodHNhYmhhZW5naWdrZWl0LAorCVJhc3Nlbi0gb2RlciBHaWxkZW5yZXN0cmlrdGlvbmVuKSBzb2xsdGVuIGRpZSBSTXMgdWViZXJwcnVlZmVuLgorCisJU2FlbXRsaWNoZSBTb25kZXJmdW5rdGlvbmVuLCB3aWUgSGVpbHVuZ2VuLCBTb25kZXJhdHRhY2tlbiBhdWYgCisJR2VnbmVyLCBXYWZmZW5iZXNjaGFlZGlndW5nZW4gZXRjLiBtdWVzc2VuIGdlbmVobWlndCB3ZXJkZW4uCisKKyAgRGllIFByb3BlcnRpZXMsIG1pdCBkZW5lbiBIYW5kc2NodWhlICdoYW5kZnJlaScgYnp3ICdmaW5nZXJmcmVpJyBnZW1hY2h0CisgIHdlcmRlbiwgZHVlcmZlbiBudXIgdmVyZ2ViZW4gd2VyZGVuLCB3ZW5uIGRpZSBIYW5kc2NodWhlIGRlbiBTY2hhZGVuIGRlciBIYW5kCisgIG5pY2h0IHZlcmFlbmRlcm4gdW5kIGRpZSBCZXNjaHJlaWJ1bmcgZGVyIEhhbmRzY2h1aGUgZGF6dSBwYXNzdC4KKworCisgICAgZC4gQUMtIHVuZCBHZW5laG1pZ3VuZ3NncmVuemVuCisKKwlGb2xnZW5kZSBHcmVuendlcnRlIGdlbHRlbiBkZXJ6ZWl0OgorCisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBSdWVzdHVuZ3N0eXAgfCBNQVhfQUMgfCBHZW5laG1pZ3VuZ3NncmVuemUgKGlua2wuKSB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBBVF9BTVVMRVQgICAgfCAgICAyICAgfAkgICAgICAtLQkgICAgIHwKKwkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IEFUX0FSTU9VUiAgICB8ICAgNTAgICB8CSAgICAgIDM4CSAgICAgfAorCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgQVRfQkVMVCAgICAgIHwgICAgMiAgIHwJICAgICAgLS0JICAgICB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBBVF9CT09UICAgICAgfCAgICA2ICAgfAkJNQkgICAgIHwKKwkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IEFUX0NMT0FLICAgICB8ICAgMTAgICB8CQk4CSAgICAgfAorCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgQVRfR0xPVkUgICAgIHwgICAgNSAgIHwJCTUJICAgICB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBBVF9IRUxNRVQgICAgfCAgIDE1ICAgfAkgICAgICAxMwkgICAgIHwKKwkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IEFUX1FVSVZFUiAgICB8ICAgIDAgICB8CSAgICAgIC0tCSAgICAgfAorCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgQVRfUklORyAgICAgIHwgICAgMiAgIHwJICAgICAgLS0JICAgICB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCBBVF9TSElFTEQgICAgfCAgIDQwICAgfAkgICAgICAyOAkgICAgIHwKKwkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IEFUX1RST1VTRVJTICB8ICAgMTUgICB8CSAgICAgIDEzCSAgICAgfAorCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgQVRfTUlTQyAgICAgIHwgICAgMCAgIHwJICAgICAgLS0JICAgICB8CisJKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgICAgZS4gUnVlc3R1bmdlbiBmdWVyIFphdWJlcmVyCisKKwlaYXViZXJlciB3ZXJkZW4gbm9ybWFsZXJ3ZWlzZSBkdXJjaCBSdWVzdHVuZ2VuIGJlaGluZGVydC4gR2lidCBtYW4gCisJZGVyIFJ1ZXN0dW5nIGplZG9jaCBkaWUgaW4gYC9wL3phdWJlcmVyL3phdWJlcmVyLmgnIGRlZmluaWVydGUgSUQgCisJR0lMREVOX1JPQkVOX0lELCBiZWhpbmRlcnQgZGllIFJ1ZXN0dW5nIFphdWJlcmVyIG5pY2h0IG1laHIuIERhcyAKKwlTZXR6ZW4gZGllc2VyIElEIGlzdCBhdWYgamVkZW4gRmFsbCBtaXQgZGVtIENoZWYgZGVyIFphdWJlcmVyZ2lsZGUgCisJYWJ6dWtsYWVyZW4gc293aWUgbWl0IGRlciBPYmpla3RiYWxhbmNlIQorCisJWmF1YmVyZXJydWVzdHVuZ2VuIGtvZW5uZW4gYXVzc2VyZGVtIGJlc3RpbW10ZSBaYXViZXJzcHJ1ZWNoZSAKKwl1bnRlcnN0dWV0emVuLCBuYWVoZXJlcyBkYXp1IGViZW5mYWxscyBiZWltIFphdWJlcmVyZ2lsZGVuY2hlZiBzb3dpZSAKKwliZWkgZGVyIE9iamVrdGJhbGFuY2UuCisKKyAgICAgZi4gUnVlc3R1bmdlbiBtaXQgc29uc3RpZ2VuIEdpbGRlbmZhZWhpZ2tlaXRlbgorCisJUnVlc3R1bmdlbiwgZGllIGluIGlyZ2VuZCBlaW5lciBXZWlzZSBkaWUgRmFlaGlna2VpdGVuIGRlciBHaWxkZW4gCisJc3BlemlmaXNjaCB2ZXJhZW5kZXJuICh6dW0gQmVpc3BpZWwgZGllIFNjaGFkZW5zYXJ0IGRlciBLYXJhdGVrYXMgCisJb2RlciBkZXMgYWtzaGFyYSBkZXIgVGFuamlhbiB2ZXJhZW5kZXJuKSBzaW5kIGF1ZiBqZWRlbiBGYWxsIG1pdCBkZW4gCisJR2lsZGVuY2hlZnMgZGVyIGpld2VpbGlnZW4gR2lsZGUgc293aWUgbWl0IGRlciBPYmpla3RiYWxhbmNlIAorCWFienVzcHJlY2hlbi4KKworIFNJRUhFIEFVQ0g6CisgICAgIGJhbGFuY2UsIHdhZmZlbiwgZmVybndhZmZlbiwgdW5pcXVlcywgbnBjcywgZ3Jlbnp3ZXJ0ZSwKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIHJlc2lzdGVuemVuLCBrYW1wZm9iamVrdGUKKworIExFVFpURSBBZU5ERVJVTkc6CisgIDE4LjEwLjIwMTAsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zY2hhZGVuc3R5cGVuIGIvZG9jL3dpei9zY2hhZGVuc3R5cGVuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZjA5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3NjaGFkZW5zdHlwZW4KQEAgLTAsMCArMSw0NyBAQAorU2NoYWRlbnN0eXBlbjoKKworRXMgd2VyZGVuIHp3ZWkgQXJ0ZW4gdm9uIFNjaGFkZW5zdHlwZW4gdW50ZXJzY2hpZWRlbjoKKworYSkgcGh5c2lrYWxpc2NoZSBTY2hhZGVuc3R5cGVuCisKKyAgIERUX0JMVURHRU9OICAgICAgU2NobGFnc2NoYWRlbiwgei5CLiBLZXVsZW4KKyAgIERUX0VYUExPU0lPTiAgICAgU2NoYWRlbiBkdXJjaCBlaW5lIEV4cGxvc2lvbgorICAgRFRfUElFUkNFICAgICAgICBTdGVjaHNjaGFkZW4sIHouQi4gTGFuemVuCisgICBEVF9SSVAgICAgICAgICAgIFJlaXNzZW5kZXIgU2NoYWRlLCB6LkIuIEtyYWxsZW4KKyAgIERUX1NMQVNIICAgICAgICAgU2Nobml0dHNjaGFkZW4sIHouQi4gU2Nod2VydGVyCisgICBEVF9TUVVFRVpFICAgICAgIFF1ZXRzY2hzY2hhZGVuLCB6LkIuIFRlbnRha2VsCisgICBEVF9XSElQICAgICAgICAgIFBlaXRzY2hlbnNjaGFkZW4sIHouQi4gUGVpdHNjaGVuCisKKyAgIEFsbGUgcGh5c2lrYWxpc2NoZW4gU2NoYWRlbnN0eXBlbiBzdGVoZW4gYXVjaCBpbiBkZW0gTWFwcGluZworICAgUEhZU0lDQUxfREFNQUdFX1RZUEVTLgorCitiKSBtYWdpc2NoZSBTY2hhZGVuc3R5cGVuCisKKyAgIERUX0FDSUQgICAgICAgICAgU2FldXJlc2NoYWRlbgorICAgRFRfQUlSICAgICAgICAgICBMdWZ0KG1hbmdlbClzY2hhZGVuCisgICBEVF9DT0xEICAgICAgICAgIEthZWx0ZXNjaGFkZW4KKyAgIERUX0ZJUkUgICAgICAgICAgRmV1ZXJzY2hhZGVuCisgICBEVF9IT0xZICAgICAgICAgIEhlaWxpZ2VyIFNjaGFkZW4KKyAgIERUX0xJR0hUTklORyAgICAgQmxpdHpzY2hhZGVuCisgICBEVF9NQUdJQyAgICAgICAgIEdlbmVyZWxsZXIgbWFnaXNjaGVyIFNjaGFkZW4KKyAgIERUX1BPSVNPTiAgICAgICAgR2lmdHNjaGFkZW4KKyAgIERUX1NPVU5EICAgICAgICAgTGFlcm1zY2hhZGVuCisgICBEVF9URVJST1IgICAgICAgIEFuZ3N0c2NoYWRlbgorICAgRFRfVU5IT0xZICAgICAgICBVbmhlaWxpZ2VyL2RhZW1vbmlzY2hlciBTY2hhZGVuCisgICBEVF9XQVRFUiAgICAgICAgIFdhc3NlcnNjaGFkZW4KKworICAgQWxsZSBtYWdpc2NoZW4gU2NoYWRlbnN0eXBlbiBzdGVoZW4gYXVjaCBpbiBkZW0gTWFwcGluZworICAgTUFHSUNBTF9EQU1BR0VfVFlQRVMuCisKK0VpbmUgTGlzdGUgYWxsZXIgZGVmaW5pZXJ0ZW4gU2NoYWRlbnN0eXBlbiBzdGVodCBhdXNzZXJkZW0gaW4gZGVtCitBcnJheSBBTExfREFNQUdFX1RZUEVTLgorCitBbGxlIFNjaGFkZW5zdHlwZW4gdW5kIHp1c2FtbWVuZ2VmYXNzdGUgR3J1cHBlbiBzaW5kIGRlZmluaWVydCBpbgorPGNvbWJhdC5oPgorCitXYWZmZW4gZHVlcmZlbiBtYXhpbWFsIDUwJSBtYWcuIFNjaGFkZW4gbWFjaGVuLiBEaWUgU3VtbWUgZGVyIG1hZy4KK1NjaGFlZGVuIGRhcmYgbWF4aW1hbCA2NiUgYmV0cmFnZW4uIEVzIF9tdXNzXyBpbW1lciBtaW5kLiBlaW4gcGh5LgorU2NoYWRlbiBnZXNldHp0IHNlaW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IE1pdCwgMDMuMDEgMTI6MDA6NTQgMjAwMiB2b24gVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy93aXovc2NoZWlkdW5nIGIvZG9jL3dpei9zY2hlaWR1bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0YzVkOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc2NoZWlkdW5nCkBAIC0wLDAgKzEsOTUgQEAKKworICAgICAgICAgICAgICAgICAgICAgICAgICBTY2hlaWR1bmcgZWluZXIgTUctRWhlCisgICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT0KKworICBEaWUgSG9jaHplaXQgaW0gTW9yZ2VuR3JhdWVuIGlzdCBlaW4gc2VociB1bnRlcnNjaGllZGxpY2ggZHVyY2hnZWZ1ZWhydGVzCisgIFJpdHVhbCwgZGFzIG1pdCBkZXIgSGlsZmUgdm9uIE5QQ3Mgb2RlciBhdWNoIFNwaWVsZXJuIHZvcmdlbm9tbWVuIHdlcmRlbgorICBrYW5uLiBBdWZncnVuZCBkaWVzZXIgVmllbGZhbHQgbXVlc3NlbiBlaW5pZ2UgRGluZ2UgYmVhY2h0ZXQgd2VyZGVuLCB3ZW5uCisgIG1hbiBlaW5lIEhvY2h6ZWl0IHJ1ZWNrZ2FlbmdpZyBtYWNoZW4gd2lsbC4KKworICBEYSBkYWJlaSBhdWNoIFByb3BlcnRpZXMgaW0gU3BpZWxlciBnZWxvZXNjaHQsIGdnZi4gTG9nZmlsZXMgZWRpdGllcnQgdW5kCisgIE9iamVrdGUgaW0gU3BpZWxlcmludmVudGFyIHplcnN0b2VydCB3ZXJkZW4gbXVlc3NlbiwgZW1wZmllaGx0IGVzIHNpY2gsCisgIGRpZXNlbiBWb3JnYW5nIHZvbiBlaW5lbSBNYWdpZXIgbWl0IGVudHNwcmVjaGVuZGVyIEVyZmFocnVuZyB1bmQgaW5zYmVzb24tCisgIGRlcmUgZGVuIG5vZXRpZ2VuIFNjaHJlaWJyZWNodGVuIGluIGRlciBVbnRlcndlbHQgZHVyY2hmdWVocmVuIHp1IGxhc3Nlbi4KKworICAxKSBHcnVuZHNhZXR6bGljaGVzIHp1ciBIb2NoemVpdAorIAorICAgICBhKSBQX01BUlJJRUQ6CisKKyAgICAgICAgUHJvcGVydHkgaW0gU3BpZWxlciwgZGllIGRlbiBOYW1lbiBkZXMgRWhlcGFydG5lcnMgYWxzIGxvd2VyY2FzZSAKKyAgICAgICAgU3RyaW5nIGVudGhhZWx0IChVSUQsIHouQi4gImJvaW5nIikuIERpZXNlIFByb3BlcnR5IHdpcmQgdm9uIGFsbGVuIAorICAgICAgICBPYmpla3RlbiwgZGllIGVpbmUgSG9jaHplaXQgZHVyY2hmdWVocmVuIGtvZW5uZW4sIGlkZW50aXNjaAorICAgICAgICB2ZXJ3ZW5kZXQuCisKKyAgICAgYikgUHJpZXN0ZXI6CisKKyAgICAgICAgTmViZW4gTWl0Z2xpZWRlcm4gZGVyIEtsZXJ1cy1HaWxkZSBrb2VubmVuIEhvY2h6ZWl0ZW4gdm9uIGZvbGdlbmRlbgorICAgICAgICBOUENzIGR1cmNoZ2VmdWVocnQgd2VyZGVuOgorICAgICAgICAvZC91bnRlcndlbHQvY2hyaXMvbW9uc3Rlci9wcmllc3Rlci5jICAgICAoS2FwZWxsZSBpbiBkZXIgVW50ZXJ3ZWx0KQorICAgICAgICAvZC9wb2xhci9maWxlcy5jaGFvcy9mZXVlcndlaHIvbW9uL2NsMl94cnV1ci5jICAgICAgIChDaGFvc3ByaWVzdGVyKQorCisgICAgIGMpIFZlcmxvYnVuZ3MtIHVuZCBFaGVyaW5nZToKKyAgICAgICAgCisgICAgICAgIEFscyBFaGVyaW5nZSBrb21tZW4gdmVyc2NoaWVkZW5lIE9iamVrdGUgaW0gTUcgenVtIEVpbnNhdHo6CisgICAgICAgIC9kL3VudGVyd2VsdC9jaHJpcy9vYmpla3RlL3JpbmcuYyAgICAgICAoUmluZyB2b20gVW50ZXJ3ZWx0cHJpZXN0ZXIpCisgICAgICAgIC9kL3BvbGFyL2ZpbGVzLmNoYW9zL2ZldWVyd2Voci9vYmovY2wyX2VoZXJpbmcuYyAgICAoc2Nod2FyemVyIERvcm4pCisgICAgICAgIC9naWxkZW4vZmlsZXMua2xlcnVzL2VoZXJpbmcuYyAgICAgICAgICAgICAgICAoUmluZyBkZXIgS2xlcnVzZ2lsZGUpCisKKyAgICAgICAgWnVzYWV0emxpY2ggZXhpc3RpZXJ0IG5vY2ggZWluIFZlcmxvYnVuZ3NyaW5nIHZvbiBSaWt1czoKKyAgICAgICAgL3BsYXllcnMvcmlrdXMvb2JqL3ZlcmxyaW5nLmMKKyAgICAgICAgRWluIHZlcmhlaXJhdGV0ZXIgU3BpZWxlciBrYW5uIGRpZXNlbiBSaW5nIHp1c2FldHpsaWNoIGltIEludmVudGFyCisgICAgICAgIGhhYmVuLiBFciB3aXJkIGJlaSBkZXIgZWlnZW50bGljaGVuIEhvY2h6ZWl0IG5pY2h0IHplcnN0b2VydC4KKworICAgICAgICBEaWUgYmVpZGVuIEVoZXBhcnRuZXIgc293aWUgZGFzIERhdHVtIGRlcyBIb2NoemVpdHN0YWdzIHdlcmRlbiAKKyAgICAgICAgenVzYWV0emxpY2ggenVyIFNwaWVsZXItUHJvcGVydHkgKHMuIDFhKSBhbHMgQXV0b2xvYWQtRGF0ZW4gCisgICAgICAgIGluIGRlbiBSaW5nZW4gYWJnZXNwZWljaGVydC4KKworICAgICBkKSBMb2dmaWxlczoKKyAKKyAgICAgICAgSmUgbmFjaGRlbSwgd2VsY2hlciBQcmllc3RlciBkaWUgSG9jaHplaXQgZHVyY2hmdWVocnQsIHdpcmQgZGVyCisgICAgICAgIGVyZm9sZ3JlaWNoZSBBYnNjaGx1c3MgZGVyIFplcmVtb25pZSBpbiB1bnRlcnNjaGllZGxpY2hlbiBMb2dzCisgICAgICAgIHByb3Rva29sbGllcnQuCisKKyAgICAgICAgLSBEaWUgQmx1dGhvY2h6ZWl0IGRlciBDaGFvdGVuIGluCisgICAgICAgICAgL2QvcG9sYXIvZmlsZXMuY2hhb3MvZmV1ZXJ3ZWhyL3NhdmUvQnVjaERlckhhc3NlbmRlbgorICAgICAgICAtIERpZSBIb2NoemVpdCBkZXIgS2xlcmlrZXIgaW4KKyAgICAgICAgICAvbG9nL2tsZXJ1cy9IRUlSQVQKKyAgICAgICAgLSBEaWUgSG9jaHplaXQgaW4gZGVyIFVudGVyd2VsdC1LYXBlbGxlIGluCisgICAgICAgICAgL2QvdW50ZXJ3ZWx0L2NocmlzL0hPQ0haRUlUU0JVQ0gKKyAgICAgICAgICB1bmQKKyAgICAgICAgICAvbG9nL2hvY2h6ZWl0ZW4uY2hyaXMKKworICAyKSBWb3JnZWhlbnN3ZWlzZSB6dXIgQXVmbG9lc3VuZyBkZXIgRWhlCisKKyAgICAgYSkgTG9lc2NoZW4gdm9uIFBfTUFSUklFRCBpbiBfYmVpZGVuXyBTcGllbGVybiAoU2V0UHJvcChQX01BUlJJRUQsMCkpCisgICAgICAgIHVuZCBhbnNjaGxpZXNzZW5kZXMgU3BlaWNoZXJuIGRlcyBTcGllbGVycworCisgICAgIElzdCBkZXIgendlaXRlIFNwaWVsZXIgbmV0enRvdCwga2FubiBkaWUgUHJvcGVydHkgZGlyZWt0IGdlc2V0enQgd2VyZGVuLgorICAgICBTb2xsdGUgZGVyIHp3ZWl0ZSBTcGllbGVyIG5pY2h0IGV4aXN0aWVyZW4sIHdlaWwgZXIgaW56d2lzY2hlbiAKKyAgICAgZ2Vsb2VzY2h0IHd1cmRlLCByZWljaHQgZXMsIGRpZSBQcm9wZXJ0eSBpbSB2ZXJibGVpYmVuZGVuIFNwaWVsZXIgCisgICAgIHp1IGFlbmRlcm4gKGRpZXMgd2lyZCBoYWV1ZmlnIGF1Y2ggZGVyIEdydW5kIGRlciBCaXR0ZSB1bSBTY2hlaWR1bmcKKyAgICAgc2VpbikuCisKKyAgICAgU29sbHRlIGRlciB6d2VpdGUgU3BpZWxlciBpbiBkZXIgbGF1ZmVuZGVuIFVwdGltZSBub2NoIG5pY2h0IGVpbmdlbG9nZ3QKKyAgICAgZ2V3ZXNlbiBzZWluLCBrYW5uIGRpZSBQcm9wZXJ0eSBudXIgdm9uIGVpbmVtIEVyem1hZ2llciBtaXQgSGlsZmUgCisgICAgIGRlciBGdW5rdGlvbiBfX2NyZWF0ZV9wbGF5ZXJfZHVtbXkoKSB6dXJ1ZWNrZ2VzZXR6dCB3ZXJkZW4uCisKKyAgICAgYikgWmVyc3RvZXJlbiBfYmVpZGVyXyBFaGVyaW5nZS4gRmFsbHMgamVkb2NoIHZvbiBkZW0gRWhlcGFydG5lciAKKyAgICAgICAga2VpbiBTcGllbGVyb2JqZWt0IGV4aXN0aWVydCwgaXN0IGVzIG5pY2h0IG1vZWdsaWNoLCBkZXNzZW4gCisgICAgICAgIEVoZXJpbmcgenUgemVyc3RvZXJlbi4KKworICAgICBjKSB6ZXJzdG9lcmVuIGV2dGwuIHZvcmhhbmRlbmVyIFZlcmxvYnVuZ3NyaW5nZSwgZmFsbHMgZ2V3dWVuc2NodC4KKworICAgICBkKSBJbSBGYWxsIHZvbiBIb2NoemVpdGVuLCBkaWUgaW4gZGVyIFVudGVyd2VsdGthcGVsbGUgZHVyY2hnZWZ1ZWhydAorICAgICAgICB3dXJkZW4sIGlzdCBlcyBvZmZlbmJhciBUcmFkaXRpb24sIGRhc3MgZGllIFNjaGVpZHVuZyBkb3J0IGluIEZvcm0KKyAgICAgICAgZWluZXMgWnVzYXR6ZXMgenVtIExvZ2ZpbGUtRWludHJhZyBuYWNoZ2V0cmFnZW4gd2lyZC4gQmVpc3BpZWw6CisgICAgICAgIFsuLi5dICJDYXNzYW5kcmEgdW5kIFZpcGVyICAoZ2VzLjogRG9uLCAwMi4gTm92IDE5OTUsIFdhcmdvbikiCisgICAgICAgIERpZXMgc29sbCBhdWNoIGluIFp1a3VuZnQgYmVpYmVoYWx0ZW4gd2VyZGVuLiBGdWVyIGRpZSBBZW5kZXJ1bmcKKyAgICAgICAgc2luZCBTY2hyZWlicmVjaHRlIGluIGRlciBSZWdpb24gVW50ZXJ3ZWx0IGVyZm9yZGVybGljaC4KKworCisgIFNJRUhFIEFVQ0g6CisgICAgIFByb3BlcnRpZXM6ICBQX01BUlJJRUQKKyAgICAgS2xlcnVzZ2lsZGU6IG1hbiB0cmF1ZSAoL2RvYy9nLmtsZXJ1cy90cmF1ZSkKKworQXJhdGhvcm4sIDA0LjAxLjIwMTAKZGlmZiAtLWdpdCBhL2RvYy93aXovc2NvcmVtYXN0ZXIgYi9kb2Mvd2l6L3Njb3JlbWFzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMjMxOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3Njb3JlbWFzdGVyCkBAIC0wLDAgKzEsMjEzIEBACitEZXIgU2NvcmVtYXN0ZXIKKz09PT09PT09PT09PT09PQorCitCRVNDSFJFSUJVTkcKKworICBGdW5rdGlvbjogVmVyd2FsdHVuZyBkZXIgRXJzdGtpbGwtU3R1ZmVucHVua3RlLCBkaWUgZnVlciBkYXMgVG9ldGVuIHZvbgorICBOUENzIHZlcmdlYmVuIHdlcmRlbi4gRnVlciBhbGxlIE5QQ3MsIGRpZSBtZWhyIGFscyAyMDAwMDAgWFAKKyAgKFNDT1JFX0xPV19NQVJLKSBnZWJlbiwgd2lyZCBlaW4gU3R1ZmVucHVua3QgdmVyZ2ViZW4uIEFiIDYwMDAwMCBYUAorICAoU0NPUkVfSElHSF9NQVJLKSBzaW5kIGVzIDIgU3R1ZmVucHVua3RlLiBVZWJlciBkaWVzZSBXZXJ0ZSBoaW5hdXNnZWhlbmRlCisgIFB1bmt0ZSBtdWVzc2VuIGJlYW50cmFndCB1bmQgbWFudWVsbCB1ZWJlciBkZW4gU2NvcmVtYXN0ZXIgZWluZ2V0cmFnZW4KKyAgd2VyZGVuLgorCisgIEplZGVyIE5QQywgZGVyIG1pbmRlc3RlbnMgZWluZW4gU3R1ZmVucHVua3QgZ2lidCwgd2lyZCBhdXRvbWF0aXNjaCBpbgorICBlaW5lIExpc3RlIHRlbXBvcmFlcmVyIEVLcyBlaW5nZXRyYWdlbiwgZGllIHZvbSBFSy1NYWludGFpbmVyIGVpbnplbG4KKyAgYmVzdGFldGlndCB3ZXJkZW4gbXVlc3Nlbi4gRGllc2VzIFZlcmZhaHJlbiBpc3QgZXJmb3JkZXJsaWNoLCB3ZWlsIGRlcgorICBiaXMgdm9yIGVpbmlnZXIgWmVpdCBlaW5nZXNldHp0ZSBNZWNoYW5pc211cywgRUtzIGF1dG9tYXRpc2NoIGVpbnp1dHJhZ2VuLAorICBkYXp1IGdlZnVlaHJ0IGhhdCwgZGFzcyBlaWdlbnRsaWNoIG5pY2h0IGFscyBFSyB2b3JnZXNlaGVuZSBvZGVyIGVybGF1YnRlLAorICBhYmVyIGF1Y2ggbGFlbmdzdCB3aWVkZXIgYWJnZWhhZW5ndGUgb2RlciBnYXIgbmllIGFuZ2VzY2hsb3NzZW5lIE5QQ3MKKyAgZWluZ2V0cmFnZW4gd2FyZW4uIERhIGF1cyBkZW0gU2NvcmVtYXN0ZXIgYXVjaCBkaWUgdm9uIEJydW1uaSBpbiBkZXIKKyAgRnJhdGVybml0YXMgYXVzZ2VnZWJlbmVuIEVLLVRpcHMgYWJnZWZyYWd0IHdlcmRlbiwgaXN0IGRhcyBuYXR1ZXJsaWNoIGZhdGFsCisgIGZ1ZXIgU3BpZWxlciwgd2VubiBzaWUgVGlwcyBiZWtvbW1lbiwgZGllIHNpZSBuaWNodCBlcnJlaWNoZW4ga29lbm5lbi4KKworICBEaWUgTGlzdGUgZGVyIEVyc3RraWxscyBpc3QgZWluIE1hcHBpbmcsIGRhcyBhbHMgS2V5cyBlaW5lIGZvcnRsYXVmZW5kZQorICBOdW1tZXIgZW50aGFlbHQsIHp1IGRlciBqZXdlaWxzIGRpZSBEYXRlbiBkZXMgTlBDcyB6dWdlb3JkbmV0IHNpbmQuIERpZXNlCisgIE51bW1lciBkaWVudCB2b3IgYWxsZW0gYXVjaCB6dXIgSW5kaXppZXJ1bmcgZGVzIEJpdHN0cmluZ3MgaW0gU3BpZWxlciwKKyAgaW4gZGVtIGRpZSBFcnN0a2lsbHMgZ2VzcGVpY2hlcnQgd2VyZGVuLgorCisgIERpZXNlIERhdGVpIGRva3VtZW50aWVydCBkaWUgRnVua3Rpb25hbGl0YWV0IGRlcyBTY29yZW1hc3RlcnMgZnVlciBkaWUKKyAgQmVudXR6dW5nIGR1cmNoIEVNIHVuZCBFSy1NYWludGFpbmVyLCBqZWRvY2ggbmljaHQgZGllIHZvbGxzdGFlbmRpZ2UKKyAgaW50ZXJuZSBBcmJlaXRzd2Vpc2UgdW5kIFZlcndhbHR1bmcgZGVyIERhdGVuLgorCisgIEluaGFsdHN2ZXJ6ZWljaG5pcyBkaWVzZXIgRG9rdW1lbnRhdGlvbgorICAxKSBOZXVlaW50cmFndW5nIHZvbiBFS3MKKyAgMikgVmVyd2FsdHVuZyBkZXIgdW5iZXN0YWV0aWd0ZW4gRUtzCisgIDMpIEFlbmRlcnVuZ2VuIGFuIGJlc3RlaGVuZGVuIEVLcworICA0KSBTcGllbGVyYmV6b2dlbmUgRGF0ZW4gdmVyd2FsdGVuCisgIDUpIERhdGVuIHZvbiBOUENzIGFiZnJhZ2VuCisgIDYpIFBlcm1hbmVudGVzIExvZXNjaGVuIHZvbiBFS3MKKyAgNykgVmVyd2FsdHVuZyBkZXIgRUstVGlwcyB2b24gQnJ1bW5pCisgIDgpIFNvbnN0aWdlIEZ1bmt0aW9uZW4gKG51ciB2b24gTlBDcyBnZXJ1ZmVuKQorCisKK1JVRUNLR0FCRVdFUlRFOgorCisgIFNDT1JFX0lOVkFMSURfQVJHICAgLTEKKyAgU0NPUkVfTk9fUEVSTUlTU0lPTiAtMgorCisKK0ZVTktUSU9ORU4KKworMSkgTmV1ZWludHJhZ3VuZyB2b24gRUtzCisKKyAgTmV3TlBDKHN0cmluZyBrZXksIGludCBzY29yZSkKKyAgQWRkTlBDKHN0cmluZyBrZXksIGludCBzY29yZSkgW3ZlcmFsdGV0LCBsZWl0ZXQgYW4gTmV3TlBDIHdlaXRlcl0KKyAgICAgICAgTmV1ZW4gTlBDIGVpbnRyYWdlbiwga2V5IGlzdCBoaWVyYmVpIGRlciBQZmFkLCBzY29yZSBkaWUgUHVua3R6YWhsCisgICAgICAgIERpZSBJRCBkZXMgRUtzIHdpcmQgYXV0b21hdGlzY2ggYXVzZ2V3YWVobHQsIGluZGVtIGRlciBuYWVjaHN0ZQorICAgICAgICBmcmVpZSBQbGF0eiBpbSBNYXBwaW5nIGJlbGVndCB3aXJkLgorCisKKzIpIFZlcndhbHR1bmcgZGVyIHVuYmVzdGFldGlndGVuIEVLcworCisgIENvbmZpcm1TY29yZShtaXhlZCBrZXkpCisgICAgICAgIHVuYmVzdGFldGlndGVuIEVLIG1pdCBkZXIgTnVtbWVyIG9kZXIgZGVtIFBmYWQgImtleSIgZ2VuZWhtaWdlbgorICAgID0+ICBFSyBpbiBkZW4gU3BpZWxlcm4gc2V0emVuIHVuZCBTdGF0aXN0aWsgaG9jaHphZWhsZW4sCisgICAgPT4gIEVLIGF1cyBkZXIgTGlzdGUgZGVyIHVuYmVzdGFldGlndGVuIEVLcyBpbiBkaWUgTGlzdGUgZGVyIGFrdGl2ZW4KKyAgICAgICAgdWViZXJ0cmFnZW4sCisKKyAgUmVqZWN0U2NvcmUobWl4ZWQga2V5KQorICAgICAgICB1bmJlc3RhZXRpZ3RlbiBFSyBtaXQgZGVyIE51bW1lciBvZGVyIGRlbSBQZmFkICJrZXkiIGFibGVobmVuCisgICAgPT4gIEVpbnRyYWcgYXVzIGRlciBMaXN0ZSBkZXIgdW5iZXN0YWV0aWd0ZW4gRUtzIGxvZXNjaGVuCisgICAgPT4gIEJpdC1Oci4gaW4gZGllIExpc3RlIGRlciBmcmVpZW4gTnVtbWVybiBlaW50cmFnZW4KKworICBEdW1wVW5jb25maXJtZWRTY29yZXMoKQorICAgICAgICB1bmJlc3RhZXRpZ3RlIE5QQ3MgYW4gZGVuIGFiZnJhZ2VuZGVuIE1hZ2llciBhdXNnZWJlbgorCisKKzMpIEFlbmRlcnVuZ2VuIGFuIGJlc3RlaGVuZGVuIEVLcworCisgIFNldFNjb3JlKG1peGVkIGtleSwgaW50IHNjb3JlKQorICAgICAgICBQdW5rdHphaGwgZnVlciBiZXJlaXRzIGVpbmdldHJhZ2VuZW4gTlBDIGFlbmRlcm4sIGtleSBpc3QgZGVyIFBmYWQKKyAgICAgICAgb2RlciBkaWUgTlBDLU51bW1lciwgc2NvcmUgZGllIG5ldWUgUHVua3R6YWhsCisKKyAgUmVtb3ZlU2NvcmUobWl4ZWQga2V5KQorICAgICAgICBTZXR6dCBkaWUgUHVua3R6YWhsIGF1ZiAwLiBTb2xjaGUgRUtzIGtvZW5uZW4gc3BhZXRlciBkdXJjaCBBbmdhYmUKKyAgICAgICAgZWluZXIgbmV1ZW4gUHVua3R6YWhsIHJlYWt0aXZpZXJ0IHdlcmRlbi4KKyAgICAgICAgQWx0ZXJuYXRpdiBrYW5uIGZ1ZXIgZGllc2UgRnVua3Rpb24gYXVjaCBTZXRTY29yZShtaXhlZCBrZXksIDApCisgICAgICAgIHZlcndlbmRldCB3ZXJkZW4uCisgICAgICAgIGtleSBrYW5uIGhpZXJiZWkgZGVyIFBmYWQgb2RlciBkaWUgTlBDLU51bW1lciBzZWluCisKKyAgTW92ZVNjb3JlKG1peGVkIG9sZGtleSwgc3RyaW5nIG5ld3BhdGgpCisgICAgICAgIFZlcmxlZ3QgZWluZW4gRUsKKyAgICAgICAgb2xka2V5IGlzdCBkZXIgYWt0dWVsbGUgUGZhZCBvZGVyIGRpZSBOdW1tZXIKKyAgICAgICAgbmV3cGF0aCBpc3QgZGVyIG5ldWUgUGZhZAorCisKKzQpIFNwaWVsZXJiZXpvZ2VuZSBEYXRlbiB2ZXJ3YWx0ZW4KKworICBIYXNLaWxsKG1peGVkIHBsLCBtaXhlZCBucGMpCisgICAgICAgIGZyYWd0IGFiLCBvYiBkZXIgU3BpZWxlciAicGwiIGRlbiBLaWxsICJucGMiIGhhdAorICAgICAgICBwbCBrYW5uIGhpZXJiZWkgZGVyIFNwaWVsZXJuYW1lIG9kZXIgZGFzIFNwaWVsZXJvYmpla3Qgc2VpbiwKKyAgICAgICAgbnBjIGRlciBQZmFkIG9kZXIgZGVzc2VuIE51bW1lcgorCisgIFNldFNjb3JlQml0KHN0cmluZyBwbCwgaW50IGJpdCkKKyAgICAgICAgTWl0IGRpZXNlciBGdW5rdGlvbiB3aXJkIGRlbSBTcGllbGVyICJwbCIgZGVyIEVLIG1pdCBkZXIgTnVtbWVyCisgICAgICAgICJiaXQiIGd1dGdlc2NocmllYmVuLgorCisgIENsZWFyU2NvcmVCaXQoc3RyaW5nIHBsLCBpbnQgYml0KQorICAgICAgICBNaXQgZGllc2VyIEZ1bmt0aW9uIHdpcmQgZGVtIFNwaWVsZXIgInBsIiBkZXIgRUsgbWl0IGRlciBOdW1tZXIKKyAgICAgICAgImJpdCIgcGVybWFuZW50IGF1c2dldHJhZ2VuLgorCisgIFF1ZXJ5S2lsbFBvaW50cyhtaXhlZCBwbCkKKyAgICAgICAgbGllZmVydCBkaWUgQW56YWhsIGRlciBTdHVmZW5wdW5rdGUgenVydWVjaywgZGllIGRlbSBTcGllbGVyIHBsCisgICAgICAgIGR1cmNoIGRpZSBha3RpdmVuIEVLcyBndXRnZXNjaHJpZWJlbiB3dXJkZW4KKworICBnZXRGcmVlRUtzRm9yUGxheWVyKG9iamVjdCBwbGF5ZXIpCisgICAgICAgIGxpZWZlcnQgYWxsZSBFS3MsIGRpZSBha3RpdiBzaW5kLCB1bmQgZGllIGRlciBTcGllbGVyIG5vY2ggbmljaHQKKyAgICAgICAgaGF0LCBpbiBlaW5lbSBNYXBwaW5nIGVudHNwcmVjaGVuZCBkZXIgTGlzdGUgIm5wY3MiIHp1cnVlY2suCisKKyAgUXVlcnlBbGxLaWxscyhzdHJpbmcgcGwpCisgICAgICAgIGxpZWZlcnQgYWxsZSBLaWxscyBkZXMgU3BpZWxlcnMgYWxzIEJpdHN0cmluZyB6dXJ1ZWNrLCBhdWNoIHNvbGNoZSwKKyAgICAgICAgZGllIG1vbWVudGFuIGF1c2dldHJhZ2VuL2RlYWt0aXZpZXJ0IHNpbmQKKyAgICAgICAgcGwgaXN0IGhpZXJiZWkgZGVyIFNwaWVsZXJuYW1lIGFscyBTdHJpbmcKKworICBRdWVyeUtpbGxzKHN0cmluZyBwbCkKKyAgICAgICAgbGllZmVydCBkaWUgYWt0aXZlbiBLaWxscyBkZXMgU3BpZWxlcnMgYWxzIEJpdHN0cmluZyB6dXJ1ZWNrCisgICAgICAgIHBsIGlzdCBoaWVyYmVpIGRlciBTcGllbGVybmFtZSBhbHMgU3RyaW5nCisKKworNSkgRGF0ZW4gdm9uIE5QQ3MgYWJmcmFnZW4KKworICBRdWVyeU5QQ2J5TnVtYmVyKGludCBudW0pCisgICAgICAgIGxpZWZlcnQgZGllIERhdGVuIGRlcyBOUENzIG1pdCBkZXIgTnVtbWVyICJudW0iIGFscyBBcnJheSB6dXJ1ZWNrCisKKyAgUXVlcnlOUENieU9iamVjdChvYmplY3QgbykKKyAgICAgICAgbGllZmVydCBkaWUgRGF0ZW4gZGVzIE5QQ3MgbWl0IGRlbSBPYmpla3QgIm8iIGFscyBBcnJheSB6dXJ1ZWNrCisKKworNikgUGVybWFuZW50ZXMgTG9lc2NoZW4gdm9uIEVLcworCisgIE1hcmtFS0ZvckxpcXVpZGF0aW9uKG1peGVkIGtleSkKKyAgICAgICAgZW50ZmVybnQgZWluZW4gRUsgZW5kZ3VlbHRpZyB1bmQgdW53aWRlcnJ1ZmxpY2ggdW5kIGdpYnQgZGllIE5yLgorICAgICAgICB3aWVkZXIgZnJlaS4KKyAgICAgICAgVGVjaG5pc2NoIHdpcmQgZGVyIEVLIGVyc3RtYWwgaW4gZWluZSBMaXN0ZSBlaW5nZXRyYWdlbi4gSW0gUmVzZXQKKyAgICAgICAgaXRlcmllcnQgZGVyIE1hc3RlciB1ZWJlciBhbGxlIFNwaWVsZXItU2F2ZWZpbGVzIHVuZCBsb2VzY2h0IGRlbiBFSworICAgICAgICBhdXMgYWxsZW4gU3BpZWxlcm4uIE5hY2ggQWJzY2hsdXNzIHdpcmQgZGVyIEVpbnRyYWcgaW4gIm5wY3MiCisgICAgICAgIGdlbG9lc2NodCB1bmQgc2VpbmUgTnIuIGluIGRpZSBMaXN0ZSBmcmVpZXIgTnVtbWVybiBlaW5nZXRyYWdlbi4KKworICBVbm1hcmtFS0ZvckxpcXVpZGF0aW9uKG1peGVkIGtleSkKKyAgICAgICAgRW50ZmVybnQgZGllIExvZXNjaG1hcmtpZXJ1bmcgdm9uIGVpbmVtIEVLCisgICAgPT4gIERpZXMgZ2VodCBudXIsIHNvbGFuZ2UgbmFjaCBlaW5lbSBNYXJrRUtGb3JMaXF1aWRhdGlvbigpIG5vY2gga2VpbgorICAgICAgICByZXNldCgpIGdlbGF1ZmVuIGlzdCEKKworICBRdWVyeUxpcXVpZGF0aW9uTWFya3MoKQorICAgICAgICBGcmFndCBkaWUgZnVlciBMb2VzY2h1bmcgdm9yZ2VzZWhlbmVuIEVLcyBhYi4KKworICBSZXN0b3JlRUsoc3RyaW5nIGtleSwgaW50IGJpdCwgaW50IHNjb3JlKQorICAgICAgICByZXN0YXVyaWVydCBkaWUgRGF0ZW4gZWluZXMgZnJ1ZWhlciBnZWxvZXNjaHRlbiwgaW4gZGVuIFNwaWVsZXJuIG5vY2gKKyAgICAgICAgZW50aGFsdGVuZW4gRUtzLiBNb2VnbGljaCBudXIgZGFubiwgd2VubiBkZXIgRUsgZnJ1ZWhlciBtYWwgZ2Vsb2VzY2h0CisgICAgICAgIHd1cmRlLCBhYmVyIGluIGRlbiBCaXRzdHJpbmdzIGluIGRlbiBTcGllbGVybiBub2NoIGVpbmdldHJhZ2VuIGlzdC4KKyAgICAgICAgRXMgd2VyZGVuIFBmYWQsIE5yLiB1bmQgUHVua3RlIGJlbm9ldGlndC4KKyAgICAgICAgRnVlciBuYWNoIGRlbSBVbWJhdSBkZXMgU2NvcmVtYXN0ZXJzIGdlbG9lc2NodGUgRUtzIG5pY2h0IG1laHIKKyAgICAgICAgbW9lZ2xpY2gsIHdlaWwgZGllc2UgcGVybWFuZW50IGF1cyBkZW4gQml0c3RyaW5ncyBhdXNnZXRyYWdlbiB3aXJkLgorCisKKzcpIFZlcndhbHR1bmcgZGVyIEVLLVRpcHMgdm9uIEJydW1uaQorCisgIGFkZFRpcChtaXhlZCBrZXksc3RyaW5nIHRpcCkKKyAgICAgICAgVHJhZWd0IGZ1ZXIgZGVuIE5QQyBtaXQgZGVyIE51bW1lciBvZGVyIGRlbSBQZmFkICJrZXkiIGVpbmVuIEVLLVRpcC0KKyAgICAgICAgVGV4dCBmdWVyIEJydW1uaSBlaW4uCisKKyAgY2hhbmdlVGlwKG1peGVkIGtleSxzdHJpbmcgdGlwKQorICAgICAgICBBZW5kZXJ0IGRlbiBkdXJjaCBCcnVtbmkgYXVzenVnZWJlbmRlbiBFSy1UaXAgZnVlciBkZW4gTlBDIG1pdCBkZXIKKyAgICAgICAgTnVtbWVyIG9kZXIgZGVtIFBmYWQgImtleSIuIERlciBuZXVlIFRpcCB3aXJkIGRhYmVpIGFscyAyLiBQYXJhbWV0ZXIKKyAgICAgICAgInRpcCIgdWViZXJnZWJlbi4KKworICByZW1vdmVUaXAobWl4ZWQga2V5KQorICAgICAgICBMb2VzY2h0IGRlbiBkdXJjaCBCcnVtbmkgYXVzenVnZWJlbmRlbiBFSy1UaXAtU3BydWNoLiBEZXIgVGlwIGFscworICAgICAgICBzb2xjaGVyIGJsZWlidCBiZXN0ZWhlbiAtIGFuc2NobGllc3NlbmQgd2lyZCB3aWVkZXIgZGVyIFN0YW5kYXJkLQorICAgICAgICBTcHJ1Y2ggYXVzZ2VnZWJlbi4KKworICBnZXRUaXAobWl4ZWQga2V5KQorICAgICAgICBHaWJ0IGRlbiBUaXAtU3BydWNoIGZ1ZXIgZGVuIE5QQyBtaXQgZGVyIE51bW1lciBvZGVyIGRlbSBQZmFkCisgICAgICAgICJrZXkiIHp1cnVlY2ssIG9kZXIgZGVuIFN0YW5kYXJkLVNwcnVjaC4gTGllZmVydCBmdWVyIG5pY2h0CisgICAgICAgIGVpbmdldHJhZ2VuZW4gImtleSIgZGVuIExlZXJzdHJpbmcgenVydWVjay4KKworICBRdWVyeVRpcE9iamVjdHMobWl4ZWQgcGxheWVyKQorICAgICAgICBHaWJ0IGRpZSBPYmpla3RuYW1lbiBkZXIgRUstVGlwcyBkZXMgamV3ZWlsaWdlbiBTcGllbGVycyB6dXJ1ZWNrLgorCisgIGFsbFRpcHNGb3JQbGF5ZXIob2JqZWN0IHBsYXllcikKKyAgICAgICAgR2lidCBkZW4gR2VzYW10c3RyaW5nIGFsbGVyIFRpcHMgZGVzIFNwaWVsZXJzICJwbGF5ZXIiIHp1cnVlY2suCisKKyAgcGxheWVyTWF5R2V0VGlwKG9iamVjdCBwbGF5ZXIpCisgICAgICAgIEZyYWd0IGFiLCBvYiBkZXIgU3BpZWxlciAicGxheWVyIiBlaW5lbiBUaXAgYmVrb21tZW4ga2Fubi4KKworICBnaXZlVGlwRm9yUGxheWVyKG9iamVjdCBwbGF5ZXIpCisgICAgICAgIFdhZWhsdCBlaW5lbiB6dWZhZWxsaWdlbiBFSyBhdXMsIGRlbiBkZXIgU3BpZWxlciBub2NoIG5pY2h0IGhhdCwgdW5kCisgICAgICAgIHRyYWVndCBkaWVzZW4gaW0gTWFzdGVyIGluIGRpZSBMaXN0ZSBlaW4sIGRpZSBtaXQgYWxsVGlwc0ZvclBsYXllcigpCisgICAgICAgIGFiZ2VmcmFndCB3ZXJkZW4ga2Fubi4KKworCis4KSBTb25zdGlnZSBGdW5rdGlvbmVuIChudXIgdm9uIE5QQ3MgZ2VydWZlbikKKworICBHaXZlS2lsbChvYmplY3QgcGwsIGludCBiaXQpCisgICAgICAgIHNjaHJlaWJ0IGRlbSBTcGllbGVyICJwbCIgZGVuIEVLIG1pdCBkZXIgTnVtbWVyICJiaXQiIGd1dC4KKyAgICAgICAgRGllc2UgRnVua3Rpb24gd2lyZCBhdXNzY2hsaWVzc2xpY2ggYXVzIE5QQ3MgaGVyYXVzIGdlcnVmZW4uCisKKyAgUXVlcnlOUEMoaW50IHNjb3JlKQorICAgICAgICBXaXJkIHZvbSBnZXRvZXRldGVuIE5QQyBnZXJ1ZmVuLCB1bSB6dSBlcm1pdHRlbG4sIG9iIGRpZXNlciBlaW5lbgorICAgICAgICBFcnN0a2lsbCBnaWJ0LiBXZW5uIGRlciBFSyBub2NoIG5pY2h0IGV4aXN0aWVydCwgd2lyZCBkaWVzZXIgaW0KKyAgICAgICAgTWFzdGVyIHp1bmFlY2hzdCBpbiBkZXIgTGlzdGUgZGVyIHVuYmVzdGFldGlndGVuIEVLcyBlaW5nZXRyYWdlbgorICAgICAgICBEaXJla3RlIEFiZnJhZ2UgZGllc2VyIEZ1bmt0aW9uIHZvbiBhdXNzZW4gei5CLiBkdXJjaCBNYWdpZXIgbmljaHQKKyAgICAgICAgIG1vZWdsaWNoLCB3ZWlsIG5pY2h0IHNpbm52b2xsLgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3NlaWwgYi9kb2Mvd2l6L3NlaWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA4Njg0MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc2VpbApAQCAtMCwwICsxLDY4IEBACisKK0Rva3VtZW50YXRpb24gZnVlciBkYXMgU3RkLVNlaWw6IC9vYmovc2VpbC5jCisKK0FiaGFlbmdpZ2tlaXRlbjogL3N5cy90aGluZy9zZWlsLmgKKworRGFzIFN0YW5kYXJkLVNlaWwgZXJtb2VnbGljaHN0IGRhcyBGZXN0YmluZGVuIHVuZCBMb2VzZW4gZWluZXMgU2VpbGVzIGFuCitPYmplY3RlbiB1bmQgUmFldW1lbi4gRXMga2FubiBpbSBnYW56ZW4gTW9yZ2VuZ3JhdWVuIHZlcndlbmRldCB3ZXJkZW4uCisKK2luIGRlbiBPYmplY3RlbiwgZGllIGZlc3RnZWJ1bmRlbiB3ZXJkZW4sIHdpcmQgZGllIFByb3BlcnRpZSBQX1RJRUQgZ2VzZXR6dC4KK1NpZSBlbnRoYWVsdCBlaW4gTWFwcG5nIGRlciBGb3JtOgorCisoWworCisgb2JqZWN0aWQ6IChbICJwbGF5ZXIiIDogcGxheWVyaWQsICJ0aW1lIiA6IHRpbWVzdGFtcCBdKQorCitdKQorCitXZW5uIGVpbiBPYmplY3QgZmVzdGdlYnVuZGVuIHdpcmQsIHNvIHdpcmQgZGllIEZ1bmt0aW9uIHRpZSgpIGluIGRlbSBPYmplY3QKK2F1ZmdlcnVmZW4uIERpZSBGdW5rdGlvbiBtdXNzIGluIGRlbSBPYmplY3Qgdm9yaGFuZGVuIHNlaW4uIExpZWZlcnQgZGllCitGdW5rdGlvbiAxIHp1cnVlY2ssIGRhcmYgbWFuIGVpbiBTZWlsIGRhcmFuIGJpbmRlbi4KKworQXVzIGRlciBGdW5rdGlvbiBoZXJhdXMga2FubiBpbSBTZWlsIGluIGRlciBQcm9wZXJ0aWUgUF9USUVfVVNFUiBhdXNnZWxlc2VuCit3ZXJkZW4sIHdlbGNoZSBVc2VyIGRpZSBBa3Rpb24gYXVzZ2Vsb2VzdCBoYXQuCisoRGllc2UgRGF0ZW4gd2VyZGVuIGF1cyBLb21wYXRpYmlsaXRhZXRzZ3J1ZW5kZW4gbmljaHQgYW4gZGllIEZrdC4gZGlyZWt0Cit1ZWJlcmdlYmVuLikKKworV2lyZCBlaW4gU2VpbCB3aWVkZXIgbG9zZ2VidW5kZW4sIHNvIHdpcmQgZGllIEZ1bmt0aW9uIAordW50aWUoKQoraW4gZGVtIE9iamVjdCBhdWZnZXJ1ZmVuLiAKKworRGFtaXQgZWluIFNlaWwgaW4gZWluZW0gUmF1bSBmZXN0Z2VidW5kZW4gd2VyZGVuIGthbm4sIG11c3MgZGVyIFJhdW0gZWluZQoraWQoKSBiZWtvbW1lbiAtIHdpZSBlaW4gbm9ybWFsZXMgT2JqZWN0LgorCitJbiBkZW4gRnVua3Rpb25lbiB0aWUoKSB1bmQgdW50aWUoKSBrYW5uIGpld2VpbHMgdWViZXJwcnVlZnQgd2VyZGVuLCBvYiBlaW4KK1NwaWVsZXIgZWluIFNlaWwgYmVudXR6ZW4gZGFyZiBvZGVyIG5pY2h0LiBMaWVmZXJuIGRpZSBGdW5rdGlvbmVuIDAgenVydWVjaywKK3NvIHdpcmQgZGllIEJlbnV0enVuZyBkZXMgU2VpbGVzIHZlcndlaWdlcnQuCisKK0RpZSBGdW5rdGlvbiBzZWlsLT5xdWVyeV90aWVkX3RvX29iKCkgbGllZmVydCBkYXMgT2JqZWN0IHp1cnVlY2ssIGFuIHdlbGNoZXMKK2VpbiBTZWlsIGdlYnVuZGVuIGlzdCBvZGVyIDA7CisKK0JlaSBkZXIgQmVudXR6dW5nIGVpbmVzIFNlaWxlcyBpbSBSYXVtIHdpcmQgenVyIEJlc2NocmVpYnVuZyBkaWUgRnVua3Rpb24KK25hbWUoKSBhdWZnZXJ1ZmVuLiBFcyBrYW5uIGFsc28gUF9OQU1FIGdlc2V0enQgd2VyZGVuIG9kZXIgZGlyZWt0IG5hbWUoKSBpbQorUmF1bSB1ZWJlcnNjaHJpZWJlbiB3ZXJkZW4uCisKK1NlaWxlIGtvZW5uZW4gdWViZXIgTlBDJ3MvUmFldW1lIHVuZCBaYXViZXIgZ2VzdGV1ZXJ0IHdlcmRlbjoKKwordmFyYXJncyBpbnQgYmluZGVfc2VpbChzdHJpbmcgemllbCwgc3RyaW5nIG1zZykKKworCVppZWwgYmVzY2hyZWlidCBkYXMgT2JqZWN0IG9kZXIgUmF1bSwgd28gZXMgZmVzdGdlYnVuZGVuIHdlcmRlbiBzb2xsCisJbXNnIGlzdCBkaWUgQXVzZ2FiZS4gV2lyZCBtc2cgbmljaHQgZ2VzZXR6dCwgc28gd2lyZCBlaW5lIAorCSAgICBTdGFuZGFyZC1BdXNnYWJlIGF1c2dlZ2ViZW4uCisKK3ZhcmFyZ3MgaW50IGxvZXNlX3NlaWwoc3RyaW5nIG1zZykKKwlEYXMgU2VpbCB3aXJkIGdlbG9lc3QgLSBlcyB3aXJkIGRhYmVpIGRpZSBtc2cgaW4gZGVuIFJhdW0KKyAgICAgICAgYXVzZ2VnZWJlbi4gSXN0IG1zZyBuaWNodCBkZWZpbmllcnQsIHdpcmQgZWluZSBTdGFuZGFyZGF1c2dhYmUKKyAgICAJZXJ6ZXVndC4KKworCitCZWlkZSBGdW5rdGlvbmVuIHdlcmRlbiB3aXIgdm9uIGVuZW0gU3BpZWxlciBiZWhhbmRlbHQgLSBlcyB3ZXJkZW4gdGllKCkgdW5kCit1bnRpZSgpIGluIGRlbiBmZXN0Z2VidW5kZW5lbiBPYmplY3RlbiBhdXNnZXdlcnRldC4KKworRWluZSB3ZWl0ZXJlIFByb3BlcnRpZSBpc3QgUF9USUVfQVVUTy4KK0RpZXNlciBXZXJ0IHN0ZWh0IHBlciBEZWZhdWx0IGF1ZiAxIHVuZCBlcmxhdWJ0IGRhbWl0IGVpbmUgYXV0b21hdGlzY2hlCitCZW51dHp1bmcgZGVzIFNlaWxlcyB1ZWJlciBkaWUgRnVua3Rpb25lbiBiaW5kZV9zZWlsKCkgdW5kIGxvZXNlX3NlaWwoKS4KK0lzdCBkaWVzZSBQcm9wZXJ0aWUgYXVmIDAsIHNvIGtvZW5uZW4gbnVyIFNwaWVsZXIgZGFzIFNlaWwgYmVudXR6ZW4uCisKKworTGV0enRlIMRuZGVydW5nOiAyNS42LiBHYW5kbwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zZW5zaXRpdmUgYi9kb2Mvd2l6L3NlbnNpdGl2ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTkyMGExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei9zZW5zaXRpdmUKQEAgLTAsMCArMSw2NyBAQAorU2Vuc2l0aXZlIE9iamVrdGUKKworTWFuIGthbm4gZWluIE9iamVrdCBtaXQgZGVyIFByb3BlcnR5IFBfU0VOU0lUSVZFIGRhenUgdmVyYW5sYXNzZW4sIGF1ZgorZ2V3aXNzZSBEaW5nZSB6dSByZWFnaWVyZW4uIFdlbm4gZGllc2UgUHJvcGVydHkgYmVudXR6dCB3aXJkLCBzb2xsdGUgc2llIGVpbgorQXJyYXkgdm9uIEFycmF5cyBlbnRoYWx0ZW4sIGRhcyBzbyBhdXNzaWVodDoKKworKHsgKHsgZXJlaWduaXMxLCBrZXkxLCBncmVuendlcnQxICgsT3B0aW9uZW4xKSB9KSwKKyAgICh7IGVyZWlnbmlzMiwga2V5MiwgZ3Jlbnp3ZXJ0MiAoLE9wdGlvbmVuMikgfSksCisgICAuLi4KKyAgICh7IGVyZWlnbmlzTiwga2V5TiwgZ3Jlbnp3ZXJ0TiAoLE9wdGlvbmVuTikgfSkgfSkKKworRm9sZ2VuZGUgbW9lZ2xpY2hlIEVyZWlnbmlzc2Ugc2luZCBpbiA8c2Vuc2l0aXZlLmg+IGRlZmluaWVydDoKKworU0VOU0lUSVZFX0FUVEFDSyAtIHJlYWdpZXJ0IGF1ZiBBbmdyaWZmLgorICAgICBJbiBkaWVzZW0gRmFsbCBpc3QgZGVyIEtleSBkZXIgU2NoYWRlbnN0eXAgdW5kIGRlciBHcmVuendlcnQgZGVyCisgICAgIFNjaGFkZW4sIGFiIGRlbSBkaWUgRnVua3Rpb24gdHJpZ2dlcl9zZW5zaXRpdmVfYXR0YWNrKCkgaW4gZGVtIE9iamVrdAorICAgICBhdWZnZXJ1ZmVuIHdpcmQuIERpZXNlIEZ1bmt0aW9uIGJla29tbXQgdWViZXJnZWJlbjoKKyAgICAgICAxLiBEZW4gRmVpbmQKKyAgICAgICAyLiBEZW4gS2V5IChuaWNodCBBTExFIFNjaGFkZW5zdHlwZW4pCisgICAgICAgMy4gRGVuIFNjaGFkZW4KKyAgICAgICA0LiBEYXMgQXJndW1lbnQgc3BlbGwgdm9uIERlZmVuZCgpCisgICAgICAgNS4gRGllIE9wdGlvbmVuLCB1bmQgendhciBhbGxlcyBuYWNoIGRlbSBHcmVuendlcnQgYWxzIEFycmF5LgorCisgICAgIEJlbWVya3VuZ2VuOgorICAgICAgICBvIERlciBTY2hhZGVuIG5hY2ggQWJ6dWcgZHVyY2ggUnVlc3R1bmdlbiB1bmQgdm9yIEJlcnVlY2tzaWNodGlndW5nCisgICAgICAgICAgdm9uIFJlc2lzdGVueiB1bmQgS29lcnBlcnNjaHV0eiBpc3QgYXVzc2NobGFnZ2ViZW5kLgorICAgICAgICBvIEVpbiBFcmVpZ25pcyBrYW5uIG1pdCB2ZXJzY2hpZWRlbmVuIEtleXMgbWVocmZhY2ggYW5nZWdlYmVuCisgICAgICAgICAgd2VyZGVuLgorU0VOU0lUSVZFX0lOVkVOVE9SWSAtIHJlYWdpZXJ0IGF1ZiBiZXN0aW1tdGUgT2JqZWt0ZSBpbSBJbnZlbnRvcnkuCisgICAgIEVpbiBzb2xjaGVzIE9iamVrdCByZWFnaWVydCBhdWYgYW5kZXJlIE9iamVrdGUgZW1wZmluZGxpY2gsIGRpZQorICAgICBzZW5zaXRpdiBzaW5kIHVuZCBTRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIgbWl0IGRlbSBnbGVpY2hlbiBLZXkgdW5kCisgICAgIGVpbmVtIGhvZWhlcmVuIEdyZW56d2VydCBhdXNsb2VzZW4uCisKKyAgICAgRXMgaXN0IGRhYmVpIGVnYWwsIHdlbGNoZXMgZGVyIGJlaWRlbiBPYmpla3RlIHp1ZXJzdCBkYSB3YXIuIEluIGVpbmVtCisgICAgIHNvbGNoZW4gT2JqZWt0IHdpcmQgZGFubiBkaWUgRnVua3Rpb24gdHJpZ2dlcl9zZW5zaXRpdmVfaW52KCkKKyAgICAgYXVmZ2VydWZlbiwgdW5kIHp3YXIgbWl0IGZvbGdlbmRlbiBBcmd1bWVudGVuOgorICAgICAgIDEuIERhcyBhdXNsb2VzZW5kZSBPYmpla3QgKERhcyBtaXQgRXJlaWduaXMKKyAgICAgICAgICBTRU5TSVRJVkVfSU5WRU5UT1JZX1RSSUdHRVIpCisgICAgICAgMi4gRGVyIEtleQorICAgICAgIDMuIERlciBHcmVuendlcnQgZGVzIGF1c2xvZXNlbmRlbiBPYmpla3RzCisgICAgICAgNC4gRGllIE9wdGlvbmVuIGRlcyBhdXNsb2VzZW5kZW4gT2JqZWt0cworICAgICAgIDUuIERpZSBPcHRpb25lbiBkZXMgcmVhZ2llcmVuZGVuIE9iamVrdHMKK1NFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUiAtIHNpZWhlIG9iZW4KKyAgICAgTWl0IGRpZXNlbSBPYmpla3Qgc2VsYmVyIGdlc2NoaWVodCBuaWNodHMsIGVzIGxvZXN0IG51ciBGdW5rdGlvbmVuIGluCisgICAgIGFuZGVyZW4gT2JqZWt0ZW4gYXVzIChzaWVoZSBvYmVuKS4KKworSW4gUGxhbnVuZyBpc3Qgbm9jaDoKKworU0VOU0lUSVZFX0VOVklST05NRU5UX0NIQU5HRSAoZmFsbHMgaW0gSW52ZW50b3J5IHZvbiBMZWJld2VzZW4pCisKK0RpZSBFaW5zYXR6bW9lZ2xpY2hrZWl0ZW4gc2Vuc2l0aXZlciBPYmpla3RlIHNpbmQgdmllbGZhZWx0aWc6CisKKyAgICogRHluYW1pdCBrb2VubnRlIGpldHp0IFNFTlNJVElWRV9BVFRBQ0sgbWl0IERUX0ZJUkUgdW5kIHouQi4gR3Jlbnp3ZXJ0CisgICAgIDE1MCBoYWJlbiwgZGllIEZ1bmt0aW9uIHRyaWdnZXJfc2Vuc2l0aXZlX2F0dGFjaygpIHNvbGx0ZSBkYW5uIHouQi4gZGllCisgICAgIFp1ZW5kc2NobnVyIGFuenVlbmRlbi4uLgorICAgKiBCZWkgTml0cm9nbHljZXJpbiBlbnRzcHJlY2hlbmQgbWl0IERUX0JMVURHRU9OLCBlaW5lbSBzZWhyIGtsZWluZW4KKyAgICAgR3Jlbnp3ZXJ0IHVuZCBlaW5lciB0cmlnZ2VyX3NlbnNpdGl2ZV9hdHRhY2soKS1GdW5rdGlvbiwgZGllIEJVTU0KKyAgICAgbWFjaHQuLi4KKyAgICogRXMgc29sbCBhdWNoIERpbmdlIGdlYmVuLCBkaWUgbWFuIGJlc3NlciBOSUNIVCBnbGVpY2h6ZWl0aWcgYW0gZ2xlaWNoZW4KKyAgICAgT3J0IGF1ZmJld2FocmVuIHNvbGx0ZS4uLiBGdWVyIHNvbGNoZSBEaW5nZSBzaW5kIFNFTlNJVElWRV9JTlZFTlRPUlkKKyAgICAgdW5kIFNFTlNJVElWRV9JTlZFTlRPUllfVFJJR0dFUiBkYS4KKyAgICogU0VOU0lUSVZFX0VOVklST05NRU5UX0NIQU5HRSBpc3QgZGFmdWVyIHZvcmdlc2VoZW4sIGRhc3MgT2JqZWt0ZSBpbQorICAgICBJbnZlbnRvcnkgZW1wZmluZGxpY2ggYXVmIFRhdWNoZW4gb2RlciBBdWZlbnRoYWx0IGFuIGhlaXNzZW4gT3J0ZW4gdXN3LgorICAgICByZWFnaWVyZW4sIGRpZXMgaXN0IGplZG9jaCBub2NoIGluIFBsYW51bmcuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXkgOCAxMDowMDoyOCAxOTk2IGJ5IFdhcmdvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zaGVyaWZmIGIvZG9jL3dpei9zaGVyaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYjgzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3NoZXJpZmYKQEAgLTAsMCArMSw0MSBAQAorV2FzIGlzdCB6dSB0dW4sIHdlbm4gaWNoIGplbWFuZGVuIGJlaSBlaW5lbSBSZWdlbHZlcnN0b3NzIGVyd2lzY2hlPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgIEdydW5kc2FldHpsaWNoIHNvbGx0ZXQgaWhyIGRlbiBTaGVyaWZmLCBlaW5lbiBkZXIgRGVwdXRpZXMgb2RlcgorICAgICAgICBlaW5lbiBFcnptYWdpZXIgYmVuYWNocmljaHRpZ2VuLgorCisgICAgICAgIElzdCBrZWluIE1hZ2llciBhdXMgZGllc2VyIEdydXBwZSBhbndlc2VuZCBvZGVyIHNpbmQgZGllc2UgbmljaHQKKyAgICAgICAgYW5zcHJlY2hiYXIsIHNvIGVtcGZpZWhsdCBzaWNoIGRpZSBmb2xnZW5kZSBIYW5kbHVuZ3N3ZWlzZS4KKworICAgICAgICBTcHJlY2h0IGRlbiBTcGllbGVyIGF1ZiBzZWluIEZlaGx2ZXJoYWx0ZW4gYW4gdW5kIHdlaXN0IGlobiBkYXJhdWYKKyAgICAgICAgaGluLCBkYXNzIGRpZXMgYW4gZGVuIFNoZXJpZmYgZ2VtZWxkZXQgd2lyZCwgZGFtaXQgZXIgZGllCisgICAgICAgIEdlbGVnZW5oZWl0IGhhdCBzZWluZSBTaWNodCBkZXIgU2l0dWF0aW9uIGZlc3R6dWhhbHRlbiB1bmQKKyAgICAgICAgZWJlbmZhbGxzIGFuIGRlbiBTaGVyaWZmIHp1IHNlbmRlbi4KKyAgICAgICAgRGllc2VyIEhpbndlaXMgc29sbHRlIGRldXRsaWNoIGVyZm9sZ2VuIHVuZCBhdWNoIGV2ZW50dWVsbGUgVGF1Yi0KKyAgICAgICAgb2RlciBCbGluZGhlaXQgYmVydWVja3NpY2h0aWdlbiwgZXMgZW1wZmllaGx0IHNpY2ggdGVsbF9vYmplY3QoKQorICAgICAgICBiencuIGVjaG90byB6dSB2ZXJ3ZW5kZW4uCisKKyAgICAgICAgU29sbHRlIGRlciBTcGllbGVyIG5pY2h0IHJlYWdpZXJlbiB1bmQgbWl0IHNlaW5lbSBWZXJoYWx0ZW4gYW5kZXJlCisgICAgICAgIFNwaWVsZXIgaW0gU3BpZWwgYmVlaW50cmFlY2h0aWdlbiwgc28gc29sbHRlIGVyIG5hY2ggL3Jvb20vamFpbAorICAgICAgICBiZWZvZXJkZXJ0IHdlcmRlbi4gVmVyd2VuZGV0IGRhenUgYml0dGUgZGllIE1ldGhvZGUgbW92ZSBpbQorICAgICAgICBQbGF5ZXIsIGFuc3RhdHQgaW5zIEphaWwgenUgZ2VoZW4gdW5kIGlobiBkYW5uIHp1IHRyYW5zZW4uIEJlaQorICAgICAgICBsZXR6dGVyZW0gc2V0enQgSWhyIGV1Y2ggc2VsYnN0IGZlc3QuCisKKyAgICAgICAgQml0dGUgc2VodCB2b24gWmFwcywgRGlzY29ubmVjdHMgb2RlciBBZWhubGljaGVtIGFiLCBzb3dlaXQgYW5kZXJlCisgICAgICAgIE1vZWdsaWNoa2VpdGVuIGJsZWliZW4uIEJlaSBkZW4sIGR1cmNoYXVzIG5pY2h0IHVudWVibGljaGVuLAorICAgICAgICBvYnN6b2VuZW4gTGV2ZWwtMS1SdWZlcm4gaXN0IGVpbiBEaXNjb25uZWN0IGR1cmNoYXVzIGFuZ2VicmFjaHQuCisKKyAgICAgICAgU2VuZGV0IGRlbSBTaGVyaWZmIGVpbmUga3VyemUgQmVzY2hyZWlidW5nIGRlciBTaXR1YXRpb24gdW5kIHdhcworICAgICAgICBJaHIgdW50ZXJub21tZW4gaGFidC4KKworICAgICAgICBCaXR0ZSB1ZWJlcnBydWVmdCBzb3JnZmFlbHRpZyBiZXZvciBJaHIgaGFuZGVsdCwgb2IgZXMgc2ljaAorICAgICAgICB1ZWJlcmhhdXB0IHVtIGVpbmVuIFJlZ2VsdmVyc3Rvc3MgaGFuZGVsdCB1bmQgb2IgZGllIFNpdHVhdGlvbgorICAgICAgICBuaWNodCBhdWNoIG9obmUgb2JpZ2UgRWluZ3JpZmZlIGdla2xhZXJ0IHdlcmRlbiBrYW5uLgorCisKKyBTSUVIRSBBVUNIOgorICAgIGxlaXRmYWRlbgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICBXZWQsIDMwLjA4LjIwMDAsIDExOjM1OjAwIHZvbiBNdWFkaWIKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zaW11bF9lZnVucyBiL2RvYy93aXovc2ltdWxfZWZ1bnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3MDgwMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc2ltdWxfZWZ1bnMKQEAgLTAsMCArMSw0NyBAQAorQWxsZ2VtZWluIG51ZXR6bGljaGUgc2ltdWxfZWZ1bidzOgorCitmaWxlX3RpbWUoc3RyaW5nIGZpbGVuYW1lKSBsaWVmZXJ0IGRpZSBBY2Nlc3N0aW1lIGRlcyBGaWxlcyBpbiBTZWt1bmRlbiBzZWl0CisJMS4xLjE5NzAgKGRhcyBrYW5uIG1hbiBhbHMgaW5wdXQgZnVlciBjdGltZSBvZGVyIGR0aW1lIHZlcndlbmRlbikuCisKK3F1ZXJ5X3dpel9sZXZlbChtaXhlZCBwbGF5ZXIpIGJla29tbXQgZWluZW4gU3BpZWxlcm5hbWVuIG9kZXIgZWluIFNwaWVsZXItCisJT2JqZWN0IGFscyBhcmd1bWVudCB1bmQgbGllZmVydCBkZW4gTWFnaWVybGV2ZWwgKHNpZWhlIGF1Y2ggCisJL3NlY3VyZS93aXpsZXZlbHMuaCkKKworcXVlcnlfd2l6X2dycChtaXhlZCBwbGF5ZXIpIHdpZSBxdWVyeV93aXpfbGV2ZWwsIGxpZWZlcnQgYWJlciBkaWUgTWFnaWVyLQorCUdydXBwZSAoYXVjaCB3aXpsZXZlbHMuaCkKKworbWl4ZWQgKmV4Y2x1ZGVfYXJyYXkobWl4ZWQgKmFycixpbnQgZnJvbSxpbnQgdG8pIGxpZWZlcnQgZGVuIGFycmF5IG9obmUgZGllCisJYXJyWzAuLmZyb20tMV0rYXJyW3RvKzEuLjwxXQorCittaXhlZCAqcmVtb3ZlX2FsaXN0KG1peGVkIGtleSxtaXhlZCAqYWxpc3QpIG5pbW10IGRhcyBFbGVtLiBtaXQgU2NobHVlc3NlbAorCWtleSBhdXMgZGVyIEFsaXN0IGhlcmF1cy4KKworbWl4ZWQgKmV4Y2x1ZGVfYWxpc3QoaW50IGksbWl4ZWQgKmFsaXN0KSBuaW1tdCBkYXMgRWxlbWVudCBtaXQgZGVyIE51bW1lciBpCisJYXVzIGRlciBBbGlzdC4KKworc3RyaW5nIGR0aW1lKGludCB3YW5uKSB3aWUgY3RpbWUsIGFiZXIgZGV1dHNjaCAobWFjaHQgYXVzIGRlciBaYWhsLCBkaWUgdGltZQorCXVzdyBsaWVmZXJuLCBlaW5lbiBsZXNiYXJlbiBTdHJpbmcpCisKK3ZhcmFncyBzdHJpbmcKKwlicmVha19zdHJpbmcoc3RyaW5nIHN0ciwgaW50IHdpZHRoLCBtaXhlZCBpbmRlbnQsIGludCBsZWF2ZV9teV9sZnMpCisJYnJpY2h0IGVpbmVuIFN0cmluZyB1bSBhdWYgV2VpdGUgd2lkdGgsIG1hbiBrYW5uIGVpbmVuIGluZGVudC1TdHJpbmcKKwlhbmdlYmVuLCBkZXIgdm9yIGplZGVuIFRlaWxzdHJpbmcgZ2VoYWVuZ3Qgd2lyZCwgb2RlciBhdWNoIGVpbmUgWmFobAorCWRhbm4gd2VyZGVuIGVudHNwcmVjaGVuIHZpZWxlIExlZXJ6ZWljaGVuIGRvcnRoaW4gZ2VoYWVuZ3QuIERlciBsZXR6dGUKKwlQYXJhbWV0ZXIgbGVndCBmZXN0LCBvYiBiZXJlaXRzIGV4aXN0aWVyZW5kZSBMaW5lZmVlZHMgZXJoYWx0ZW4gYmxlaWJlbgorCW9kZXIgbmljaHQuCisKK3N0cmluZyB1cHRpbWUoKSBsaWVmZXJ0IGdlbmF1IGRpZXNlIGluIGxlc2JhcmVyIEZvcm0uCisKK3B1YmxpYyBvYmplY3QgKmFsbF9lbnZpcm9ubWVudChvYmplY3Qgb2IpIGxpZWZlcnQgZWluZW4gQXJyYXkgbWl0IGRlbSByZS0KKwlrdXJzaXZlbiBFbnZpcm9ubWVudCAoZGVuIEJldXRlbCwgaW4gZGVtIG9iIHN0ZWNrdCwgZGVuIFNwaWVsZXIsCisJZGVyIGRlbiBCZXV0ZWwgdHJhZWd0LCB1bmQgZGVuIFJhdW0sIGluIGRlbSBzaWNoIGRlciBTcGllbGVyIGF1ZmhhZWx0LgorCit2YXJhcmdzIG1peGVkIG1hdGNoX2xpdmluZyhzdHJpbmcgc3RyLCBpbnQgcGxheWVyc19vbmx5KQorCWJla29tbXQgZWluZW4gU3RyaW5nLiBGYWxscyBkZXIgR0VOQVUgZGVtIE5hbWVuIGVpbmVzIG5pY2h0IG5ldHp0b3RlbgorCVNwaWVsZXJzIGVudHNwcmljaHQsIGJla29tbXQgbWFuIGRlbi4gRmFsbHMgZXIgZ2VuYXUgZGVtIE5hbWVuIGVpbmVzCisJTW9uc3RlcnMgZW50c3ByaWNodCB1bmQgbWFuIG5pY2h0IHBsYXllcnNfb25seSE9MCBhbmdlZ2ViZW4gaGF0LAorCWxpZWZlcnQgZXIgZGVuIE5hbWVuIGRlcyBNb25zdGVycy4gQW5zb25zdGVuIHN1Y2h0IGVyIG5hY2ggZWluZW0gCisJU3BpZWxlciwgZGVzc2VuIE5hbWUgbWl0IHN0ZCBhbmZhZW5ndC4gR2lidCBlcyBrZWluZW4sIHJldHVybmVkCisJZXIgZWluZSAtMiwgZ2lidCBlcyBtZWhyIGFscyBlaW5lbiwgZWluZSAtMSwgYmVpIGdlbmF1IGVpbmVtIGRlbgorCU5hbWVuLgorCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3NraWxscy5kb2MgYi9kb2Mvd2l6L3NraWxscy5kb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg1YjM4MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc2tpbGxzLmRvYwpAQCAtMCwwICsxLDc3IEBACisgU2tpbGxzIHNpbmQgRmVydGlna2VpdGVuLCBkaWUgZWluIFNwaWVsZXIgZXJ3ZXJiZW4ga2Fubi4gWnUgZWluZW0gU2tpbGwga29lbm5lbgorbWVocmVyZSBWZXJiZW4gZ2Vob2VyZW4uIEF1c3NlcmRlbSBrYW5uIGVpbiBWZXJiIHVudGVyIFVtc3RhZW5kZW4gYmVpIG1laHJlcmVuCitTa2lsbHMgZGVmaW5pZXJ0IHNlaW4gKHpCLCBmYWxscyBlcyBlaW5lIE1hZ2llcmdpbGRlIHVuZCBlaW5lIFBzaW9ua2llci0KK2dpbGRlIGdhZWJlLCBrb2VubnRlIGVzIHNraWxscyAibWFnaWUiIHVuZCAicHNpIiBnZWJlbiwgZGllIGJlaWRlIGRhcworVmVyYiAidGVsZXBvcnRpZXJlIiBkZWZpbmllcmVuKS4KKworIFdlbGNoZSBTa2lsbHMgZXMgZ2lidCwgd2VsY2hlIFZlcmJlbiBkYXp1Z2Vob2VyZW4sIHdlbGNoZSBPYmpla3RlIHVuZAorRnVua3Rpb25lbiBkaWVzZW4genVnZW9yZG5ldCBzaW5kLCByZWdlbHQgZWluIHplbnRyYWxlciAiU2tpbGxtYXN0ZXIiLgorRGFydWViZXJoaW5hdXMgZ2lidCBlcyBpbiBqZWRlbSBTcGllbGVyb2JqZWt0IGVpbiAiU2tpbGwiLU1vZHVsLgorCitEZXIgU2tpbGxtYXN0ZXIgb2ZmZXJpZXJ0IGRpZSBmb2xnZW5kZW4gRnVua3Rpb25lbjoKKworSW5zZXJ0U2tpbGwoc3RyaW5nIHNraWxsbmFtZSwgc3RyaW5nIHNraWxsZGVzY3IsIHN0cmluZyAqdmVyYmVuLAorICAgICAgICAgICAgc3RyaW5nICpvYmpGdW5EZXNjcikKKyBza2lsbG5hbWUgaXN0IChuYXR1ZXJsaWNoKSBkZXIgTmFtZSBkZXMgU2tpbGxzICh6QiBNYWdpZSkuCisgc2tpbGxkZXNjciBpc3QgZWluIHN0cmluZywgZGVyIGRlbiBTa2lsbCBuYWVoZXIgYmVzY2hyZWlidCwgekIKKyAgICAgICAgICAgICJNYWdpZSBnaWJ0IGRlbSBBbndlbmRlciBlaW4gYnJlaXRlcyBTcGVrdHJ1bSB2b24gTW9lZ2xpY2hrZWl0ZW4sCisgICAgICAgICAgICAgc293b2hsIGltIEthbXBmIGFscyBhdWNoIGF1c3NlcmhhbGIuIgorIHZlcmJlbiBpc3QgZWluIEFycmF5LCBkZXIgZGllIFZlcmJlbiB6dSBkZW0gU2tpbGwgZW50aGFlbHQuCisgb2JqRnVuRGVzY3IgaXN0IGVpbiBBcnJheSwgZGVyIGRpZXNlbGJlIEdyb2Vzc2UgaGFiZW4gbXVzcyB3aWUgVmVyYmVuLiBKZWRlcworICAgICAgICAgICAgIEVsZW1lbnQgaXN0IGVpbiA0LWVsZW1lbnRpZ2VyIEFycmF5LiBFcnN0ZXMgRWxlbWVudCBkaWVzZXMgQXJyYXlzCisgICAgICAgICAgICAgaXN0IGVpbiBGaWxlbmFtZSwgendlaXRlcyBlaW5lIEZ1bmt0aW9uLiBCZWkgZGVyIEVpbmdhYmUgZGVzIFZlcmJzCisgICAgICAgICAgICAgd2lyZCBpbiBkZW0gT2JqZWt0IGRpZSBGdW5rdGlvbiBhdWZnZXJ1ZmVuLiBEaWUgZGFiZWkgdWViZXJnZWJlbmVuCisgICAgICAgICAgICAgUGFyYW1ldGVyIHdlcmRlbiBzcGFldGVyIGJlc2NocmllYmVuLgorICAgICAgICAgICAgIERyaXR0ZXMgRWxlbWVudCBpc3QgZWluIFN0cmluZywgZGVyIGRpZSB6dSBkaWVzZW0gVmVyYiB1bmQgU2tpbGwKKyAgICAgICAgICAgICBnZWhvZXJlbmRlIEFrdGlvbiBuYWVoZXIgYmVzY2hyZWlidCwgekI6CisgICAgICAgICAgICAgIkRpZSBNYWdpc2NoZSBSYWtldGUga29zdGV0IGRlbiBHZWduZXIgendpc2NoZW4gNSB1bmQgMTAgSGl0cG9pbnRzIgorICAgICAgICAgICAgIERhcyA0LiBFbGVtZW50IG11c3MgZWluZSBaYWhsIGF1cyBbMS4uMTldIHNlaW4gdW5kIGdpYnQgZGVuIExldmVsCisgICAgICAgICAgICAgYW4sIGFiIGRlbSBlaW4gUGxheWVyIGRpZXNlcyBTa2lsbHZlcmIgZXJ3ZXJiZW4ga2Fubi4KKyBEaWUgRnVua3Rpb24gZGFyZiBudXIgdm9uIEVyem1hZ2llcm4gYXVmZ2VydWZlbiB3ZXJkZW4uCisgRXMgZGFyZiBub2NoIGtlaW5lbiBTa2lsbCBkaWVzZXMgTmFtZXMgZ2ViZW4uIEZhbGxzIG1hbiBlaW5lbiBiZXN0ZWhlbmRlbgorIFNraWxsIGxlZGlnbGljaCBlcndlaXRlcm4gbW9lY2h0ZSwgbXVzcyBtYW4gZGllIEZ1bmt0aW9uIEFkZFZlcmJzIGJlbnV0emVuCisgKHNpZWhlIHVudGVuKS4KKworUmVtb3ZlU2tpbGwoc2tpbGxuYW1lKQorIGVudGZlcm50IGVpbmVuIFNraWxsIHdpZWRlci4gQUNIVFVORzogV2VubiBQbGF5ZXIgZGVuIFNraWxsIGJlcmVpdHMgZXJ3b3JiZW4KKyBoYWJlbiwgdmVybGllcmVuIHNpZSBpaG4sIHdlbm4gc2llIHp1bSBuYWVjaHN0ZW4gbWFsIHZlcnN1Y2hlbiwgaWhuIHp1IGJlLQorIG51dHplbi4KKworR2V0U2tpbGxzKCkKKyBnaWJ0IGRpZSBBTGlzdCBtaXQgZGVuIFNraWxscyB6dXJ1ZWNrLgorCitHZXRTa2lsbChza2lsbG5hbWUpCisgbGllZmVydCBkZW4gZW50c3ByZWNoZW5kZW4gRWludHJhZyBhdXMgZGVyIEFMaXN0IHp1cnVlY2suCisKK0dldEZ1bmN0aW9uQW5kRGVzY3JpcHRpb24oc2tpbGxuYW1lLCB2ZXJiKQorIGxpZWZlcnQgZGVuIGluIEFkZFNraWxsIHVlYmVyZ2ViZW5lbiA0ZWxlbWVudGlnZW4gQXJyYXkgbWl0IE9iamVrdG5hbWUsCisgRnVua3Rpb25zbmFtZSwgQWt0aW9uc2Jlc2NocmVpYnVuZyB1bmQgTGV2ZWwgenVydWVjay4KKworR2V0U2tpbGxEZXNjcmlwdGlvbihza2lsbG5hbWUpCisgbGllZmVydCBkaWUgaW4gQWRkU2tpbGwgdWViZXJnZWJlbmUgQmVzY2hyZWlidW5nIGRlcyBTa2lsbHMgenVydWVjay4KKworQWRkVmVyYnMoc2tpbGxuYW1lLCBtaXhlZCAqdmVyYnMsIG1peGVkICpvYmpGdW5EZXNjcikKKyBlcndlaXRlcnQgZWluZW4gYmVzdGVoZW5kZW4gU2tpbGwgdW0gZWluaWdlIFZlcmJlbiwgbmFlaGVyZSBCZXNjaHJlaWJ1bmcKKyBzaWVoZSBBZGRTa2lsbC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGFzIFNraWxsbW9kdWwgaW0gUGxheWVyb2JqZWt0IGJpZXRldCBkaWUgZm9sZ2VuZGVuIEZ1bmt0aW9uZW46CisKK0dpdmVBYmlsaXR5KHZlcmIsIHNraWxsLCBpbnQgcHJvbWlsbCkKKyBnaWJ0IGVpbmVtIFNwaWVsZXIgZGllIEZhZWhpZ2tlaXQsIGRhcyBWZXJiIHZlcmIgYXVzIGRlbSBTa2lsbCBza2lsbCB6dSBiZW51dC0KKyB6ZW4uIFByb21pbGwgd2lyZCBiZWkgZGVtIFZlcnN1Y2gsIGRhcyBWZXJiIHp1IGJlbnV0emVuLCBhbiBkYXMgU2tpbGxvYmpla3QKKyB1ZWJlcmdlYmVuIHVuZCBzb2xsdGUgZGllIFdhaHJzY2hlaW5saWNoa2VpdCwgZGFzIGRlbSBQbGF5ZXIgZGllIFNraWxsYWt0aW9uCisgZ2VsaW5ndCwgaW4gUHJvbWlsbCBiZXNjaHJlaWJlbi4gV2VubiBkZXIgUGxheWVyIGRpZSBBYmlsaXR5IHNjaG9uIGhhdHRlLCB3aXJkCisgbGVkaWdsaWNoIHByb21pbGwgZ2V1cGRhdGVkLgorIEVzIHdpcmQgZWluZSAtMSB6dXJ1ZWNrZ2VnZWJlbiwgZmFsbHMgZWluZSBzb2xjaGUgS29tYmluYXRpb24gYXVzIFNraWxsIHVuZAorIFZlcmIgKG5vY2gpIG5pY2h0IGRlZmluaWVydCBpc3QsIGVpbmUgLTIgZmFsbHMgZGVyIExldmVsIGRlcyBTcGllbGVycyBuaWNodAorIGF1c3JlaWNodC4KKworR2V0QWxsQWJpbGl0aWVzKCkKKyBnaWJ0IGRpZSBBTGlzdCBtaXQgZGVuIEFiaWxpdGllcyBkZXMgU3BpZWxlcnMgenVydWVjay4gU2NobHVlc3NlbCBpbiBkZXIgQUxpc3QKKyBzaW5kIGRpZSBWZXJiZW4sIEVpbnRyYWVnZSBzaW5kIEFycmF5cyBtaXQgZGVuIFNraWxscy4gRGllIEFycmF5cyBoYWJlbiBzbworIHZpZWxlIEVpbnRyYWVnZSwgd2llIGRlciBQbGF5ZXIgU2tpbGxzIGhhdCwgZGllIGRhcyBiZXRyZWZmZW5kZSBXb3J0CisgZGVmaW5pZXJlbiAoaW0gSWRlYWxmYWxsIGFsc28gRUlORU4gRWludHJhZywgbmFlbWxpY2ggd2VubiBlcyBrZWluZSBVZWJlci0KKyBzY2hlaWR1bmdlbiBnaWJ0KS4gRGllIEVpbnRyYWVnZSBzaW5kIHdpZWRlcnVtIDJlbGVtZW50aWdlIEFycmF5cywgZGllCisgYWxzIDEuIEVsZW1lbnQgZGVuIFNraWxsbmFtZW4sIGFscyAyLiBFbGVtZW50IGRpZSBQcm9taWxsIGVudGhhbHRlbi4KKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei9zcWxpdGVkYiBiL2RvYy93aXovc3FsaXRlZGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRhN2RjZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovc3FsaXRlZGIKQEAgLTAsMCArMSwxNCBAQAorU1FMaXRlLURCcyBpbSBNb3JnZW5ncmF1ZW4KKworSW0gTUcga29lbm5lbiBPYmpla3RlIHNxbGl0ZS1EYXRlbmJhbmtlbiB2ZXJ3ZW5kZW4uCitEaWUgbm90d2VuZGlnZW4gZWZ1bnMgZGFmdWVyIHNpbmQgc2xfb3Blbiwgc2xfY2xvc2UsIHNsX2V4ZWMsIHNsX2luc2VydF9pZC4KKworSGF0IG1hbiBkYXMgU3BlaWNoZXJmaWxlIChTYXZlZmlsZSkgZGVyIERCLCBrYW5uIG1hbiBkaWVzZXMgbWl0IGRlbSBLb21tYW5kbworc3FsaXRlMyBhdWYgZWluZXIgU2hlbGwgYXVjaCBkaXJla3QgYWJmcmFnZW46CisKK0F1ZiBkZXIgU2hlbGwgZnJhZ3QgbWFuIGRpZSBEQiByZWNodCBzaW1wZWwgc28gYWI6CitzcWxpdGUzIC1jb2x1bW4gLWhlYWRlciA8cGZhZF96dXJfZGI+CisKK0FsbGVzIGF1cyBlaW5lciBUYWJlbGxlIGFuemVpZ2VuLCB3byBlaW5lIFNwYWx0ZSBlaW5lbiBiZXN0aW1tdGVuIFdlcnQgaGF0Ogorc2VsZWN0ICogZnJvbSA8dGFiZWxsZT4gd2hlcmUgPHNwYWx0ZT49J2FiYyc7CisKZGlmZiAtLWdpdCBhL2RvYy93aXovdGVhbWthbXBmIGIvZG9jL3dpei90ZWFta2FtcGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmYzkzNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdGVhbWthbXBmCkBAIC0wLDAgKzEsMTEzIEBACisKK1RlYW1rYW1wZiBpbSBNb3JnZW5HcmF1ZW4KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworWnVtIFRlYW1rYW1wZiBpbSBNRyBnZWhvZXJlbiB6d2VpIE9iamVrdGU6IERhcyBMZWJld2VzZW4sIGRhcyBpbSBUZWFtIGlzdCwKK3Nvd2llIGRhcyBUZWFtb2JqZWt0LiBFcnN0ZXJlcyBlcmJ0IHNlaW5lIEZ1bmt0aW9uYWxpdGFldCBhdXMKKworL3N0ZC9saXZpbmcvdGVhbS5jCisKK2RhcyBUZWFtb2JqZWt0IGlzdCBlaW4gY2xvbmUgdm9uCisKKy9vYmovdGVhbS5jCisKK0FsbGVyZGluZ3Mgc29sbHRlIG1hbiBpbW1lciBkYXMgI2RlZmluZSBmdWVyIGRpZXNlbiBQZmFkIG51dHplbiwgd2VsY2hlcworaW4gL3N5cy9saXZpbmcvdGVhbS5oIGRlZmluaWVydCBpc3Q6IFRFQU1fT0JKRUNUCisKK0RhcnVlYmVyaGluYXVzIGdpYnQgZXMgaW4gZGllc2VtIFZlcnplaWNobmlzIG5vY2ggZGVuIFRlYW1tYXN0ZXIuCisKKworQWxsZSByZWxldmFudGVuIEZ1bmt0aW9uZW4gdW5kIFByb3BlcnRpZXMgc2luZCBpbSBUZWFtbWl0Z2xpZWQgYWJydWZiYXIgdW5kCitsaWVmZXJuIEluZm9ybWF0aW9uZW4gdWViZXIgZGVuIFRlYW1rYW1wZi4KKworCitVRUJFUlNJQ0hUIHVlYmVyIGRpZSBQcm9wZXJ0aWVzIHVuZCBGdW5rdGlvbmVuIGRlcyBUZWFta2FtcGZzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1Byb3BlcnRpZXMgZGVzIFRlYW1taXRnbGllZHM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQX1RFQU0gICAgICAgICAgICAgICAgIC0gVGVhbW9iamVrdAorUF9URUFNX05FV01FTUJFUiAgICAgICAtIFNwaWVsZXIgbW9lY2h0ZSBpbnMgVGVhbSBoaWVydm9uIGF1Zmdlbm9tbWVuIHdlcmRlbi4KK1BfVEVBTV9BVFRBQ0tfQ01EICAgICAgLSBBbmdyaWZmc2JlZmVobCBkZXMgU3BpZWxlcnMsIG5pY2h0IHNldHpiYXIuCitQX1RFQU1fQVVUT0ZPTExPVyAgICAgIC0gRm9sZ2V3dW5zY2ggZGVzIFNwaWVsZXJzLCBuaWNodCBzZXR6YmFyLgorUF9URUFNX1dBTlRFRF9ST1cgICAgICAtIEdld3VlbnNjaHRlIFJlaWhlIGRlcyBTcGllbGVycy4KK1BfVEVBTV9XSU1QWV9ST1cgICAgICAgLSBGbHVjaHRyZWloZSBkZXMgU3BpZWxlcnMuCitQX1RFQU1fTEVBREVSICAgICAgICAgIC0gU3BpZWxlciBpc3QgQW5mdWVocmVyIGRpZXNlcyBUZWFtcy4KK1BfVEVBTV9BU1NPQ19NRU1CRVJTICAgLSBBbGxlIHp1Z2VvcmRuZXRlbiBOUENzIGJ6dy4gZGVyIFNwaWVsZXIgZGVtIGRpZXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgIE5QQyB6dWdlb3JkbmV0IGlzdC4KK1BfVEVBTV9DT0xPUlMgICAgICAgICAgLSBHcmVuendlcnRlIGZ1ZXIgZmFyYmlnZSBBbnplaWdlLgorCitGdW5rdGlvbmVuIGRlcyBUZWFtbWl0Z2xpZWRzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGVhbVByZWZpeCgpICAgICAgICAgICAtICJbVGVhbSBUZWFtbmFtZV0gIiBmYWxscyBUZWFtbWl0Z2xpZWQsICIiIHNvbnN0LgorSXNUZWFtTGVhZGVyKCkgICAgICAgICAtIFRlc3Qgb2IgU3BpZWxlciBBbmZ1ZWhyZXIgZWluZXMgVGVhbXMgaXN0LgorSXNUZWFtTW92ZSgpICAgICAgICAgICAtIFRlc3Qgb2IgQW5ncmlmZnNiZXdlZ3VuZyBnZXJhZGUgYXVzZ2VmdWVocnQgd2lyZC4KK1RlYW1NZW1iZXJzKCkgICAgICAgICAgLSBUZWFtbWl0Z2xpZWRlci4KK1ByZXNlbnRQb3NpdGlvbigpICAgICAgLSBBa3R1ZWxsZSBSZWloZW5udW1tZXIgZGVzIFNwaWVsZXJzLgorUHJlc2VudFRlYW1Qb3NpdGlvbnMoKSAtIFJlaWhlbm51bW1lcm4gYWxsZXIgYW53ZXNlbmRlbiBUZWFtbWl0Z2xpZWRlci4KK1ByZXNlbnRUZWFtUm93cygpICAgICAgLSBSZWloZW4gYWxsZXIgYW53ZXNlbmRlbiBUZWFtbWl0Z2xpZWRlci4KK1ByZXNlbnRFbmVteVJvd3MoKSAgICAgLSBSZWloZW4gYWxsZXIgYW53ZXNlbmRlbiBGZWluZHRlYW1zIHp1c2FtbWVuLgorU2VsZWN0TmVhckVuZW15KCkgICAgICAtIFdhZWhsdCBkaXJla3QgYW5ncmVpZmJhcmVuIEZlaW5kIGF1cy4KK1NlbGVjdEZhckVuZW15KCkgICAgICAgLSBXYWVobHQgRmVpbmQgYXVzIGhpbnRlcmVuIFJlaWhlbiBhdXMuCitJbnNlcnRFbmVteVRlYW0oKSAgICAgIC0gTWFjaHQgYWxsZSBNaXRnbGllZGVyIHZvbiBUZWFtIGRlcyBGZWluZGVzIHp1CisgICAgICAgICAgICAgICAgICAgICAgICAgRmVpbmRlbiBhbGxlciBNaXRnbGllZGVyIGRlcyBlaWdlbmVuIFRlYW1zLgorQXNzb2NNZW1iZXIoKSAgICAgICAgICAtIEFzc296aWllcnQgZWluZW4gSGlsZnNOUEMgbWl0IGVpbmVtIFNwaWVsZXIuCitEZUFzc29jTWVtYmVyKCkgICAgICAgIC0gSGVidCBBc3NvemlhdGlvbiB6d2lzY2hlbiBOUEMgdW5kIFNwaWVsZXIgYXVmLgorVGVhbUZsZWUoKSAgICAgICAgICAgICAtIFNwaWVsZXIgd2lyZCB2ZXJhbmxhc3N0IGluIEZsdWNodHJlaWhlIHp1IHdlY2hzZWxuLgorCitGdW5rdGlvbmVuIGRlcyBUZWFtb2JqZWt0czoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTd2FwUm93cygpICAgICAgICAgICAgIC0gU3BpZWxlciB0YXVzY2hlbiBkaWUgUmVpaGVuCisKKworQkVJU1BJRUw6CisgIE1hbiBtb2VjaHRlIHZvbiBlaW5lbSBTcGllbGVyLCB3ZWxjaGVyIHNpY2ggaW4gZWluZW0gVGVhbSBiZWZpbmRldCwgYWxsZQorICBUZWFtbWl0Z2xpZWRlciBzb3dpZSBkZXJlbiBBbnphaGwgZXJtaXR0ZWxuLCBkaWUgVk9SIGRpZXNlbSBTcGllbGVyIHN0ZWhlbi4KKworICBJbSBhYmZyYWdlbmRlbiBPYmpla3QgbXVzcyBtYW4genVuYWVjaHN0IGRpZSBIZWFkZXJkYXRlaSBkZXMgVGVhbWthbXBmcworICBpbmNsdWRlbjoKKworICAjaW5jbHVkZSAiL3N5cy9saXZpbmcvdGVhbS5oIgorCisKKyAgdm9pZCBmdW4oIG9iamVjdCBwbCApCisgIHsKKyAgIGludCBhY3Rfcm93LGFsbDsKKyAgIG1peGVkICpyb3dzOworICAgb2JqZWN0IHRlYW0sKnRlYW1fbWVtYmVyczsKKworICAgdGVhbT1wbC0+UXVlcnlQcm9wKFBfVEVBTSk7ICAgICAgICAgICAvLyBsaWVmZXJ0IGRhcyBUZWFtb2JqZWt0CisKKyAgIGFjdF9yb3c9cGwtPlByZXNlbnRQb3NpdGlvbigpOyAgICAgICAgLy8gYWt0dWVsbGUgUG9zaXRpb24gZXJtaXR0ZWxuCisKKyAgIHRlYW1fbWVtYmVycz0oe30pOworCisgICBpZiAoIG9iamVjdHAodGVhbSkgJiYgKGFjdF9yb3cgPiAxKSApCisgICAgeworICAgICByb3dzPXRlYW0tPlByZXNlbnRSb3dzKEVOVihwbCkpOyAgICAvLyBkaWUgUmVpaGVuIHdlcmRlbiBhbHMgbWl4ZWQtYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdWViZXJnZWJlbgorCisgICAgIGZvcmVhY2ggKCBpbnQgaSA6IGFjdF9yb3cgKQorICAgICAgdGVhbV9tZW1iZXJzKz1yb3dzW2ldOyAgICAgICAgICAgICAvLyBkaWUgUmVpaGVuIHdlcmRlbiBrb21wbGV0dCBpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV1ZSBBcnJheSB1ZWJlcnRyYWdlbgorICAgIH0KKworICAgYWxsPXNpemVvZih0ZWFtX21lbWJlcnMpOyAgICAgICAgICAgICAvLyBBbnphaGwgZGVyIFRlYW1taXRnbGllZGVyLCBkaWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdm9yIGRlbSBTcGllbGVyIHN0ZWhlbgorICB9CisKKworU0lFSEUgQVVDSDoKKyAgICAgICAgUHJvcGVydGllczogUF9URUFNLCBQX0FTU09DX01FTUJFUlMsIFBfVEVBTV9BVFRBQ0tfQ01ELAorICAgICAgICAgICAgICAgICAgICBQX1RFQU1fQVVUT0ZPTExPVywgUF9URUFNX0NPTE9SUywgUF9URUFNX0xFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX05FV01FTUJFUiwgUF9URUFNX1dBTlRFRF9ST1csIFBfVEVBTV9XSU1QWV9ST1cKKyAgICAgICAgQmV3ZWd1bmc6ICAgSXNUZWFtTW92ZSwgVGVhbUZsZWUKKyAgICAgICAgTWl0Z2xpZWRlcjogSXNUZWFtTGVhZGVyLCBUZWFtTWVtYmVycworICAgICAgICBLYW1wZjogICAgICBBc3NvY01lbWJlciwgRGVBc3NvY01lbWJlciwgSW5zZXJ0RW5lbXlUZWFtCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdE5lYXJFbmVteSwgU2VsZWN0RmFyRW5lbXkKKyAgICAgICAgUG9zaXRpb25lbjogUHJlc2VudFBvc2l0aW9uLCBQcmVzZW50Um93cywgUHJlc2VudEVuZW15Um93cywKKyAgICAgICAgICAgICAgICAgICAgUHJlc2VudFRlYW1Qb3NpdGlvbiwgU3dhcFJvd3MKKyAgICAgICAgU29uc3RpZ2VzOiAgVGVhbVByZWZpeCwgdGVhbWthbXBmX2ludGVybgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiAxNi0wOC0yMDEwLCBHYWJ5bG9uCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3RlYW1rYW1wZl9pbnRlcm4gYi9kb2Mvd2l6L3RlYW1rYW1wZl9pbnRlcm4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljMjk2MwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdGVhbWthbXBmX2ludGVybgpAQCAtMCwwICsxLDEyNyBAQAorCitUZWFta2FtcGYtSW50ZXJuYQorPT09PT09PT09PT09PT09PT0KKworVmVyd2FsdHVuZyBkZXIgS2FtcGZyZWloZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RpZSBVbW9yZG51bmcgZGVyIFRlYW1taXRnbGllZGVyIHdpcmQgZHVyY2ggZGllIEZvcm1hdGlvbiBnZXN0ZXVlcnQuCisKKyAgZm9ybWluW3JlaWhlXSAtIE1pbmltYWxlIEFuemFobCB2b24gVGVhbW1pdGdsaWVkZXJuIGluIGRpZXNlciBSZWloZQorICBmb3JtYXhbcmVpaGVdIC0gTWF4aW1hbGUgQW56YWhsIHZvbiBUZWFtbWl0Z2xpZWRlcm4gaW4gZGllc2VyIFJlaWhlCisKK0RpZSBGdW5rdGlvbiBDaGVja0Zvcm1hdGlvbigpIHBhc3N0IGRpZSBXZXJ0ZSBzbyBhbiwgZGFzcyBzaWUgYmVpIEFud2VzZW5oZWl0CithbGxlciBUZWFtbWl0Z2xpZWRlciBlcmZ1ZWxsYmFyIHNpbmQsIHdvYmVpIGdnZi4gZGVyIE1heGltYWx3ZXJ0IHZvcm5lCithbmZhbmdlbmQgZXJob2VodCB3aXJkIHVuZCBkZXIgTWluaW1hbHdlcnQgaGludGVuIGFuZmFuZ2VuZCB2ZXJyaW5nZXJ0IHdpcmQuCitEYWJlaSBpc3QgZGVyIE1pbmltYWx3ZXJ0IGRlciBlcnN0ZW4gUmVpaGUgMS4KKworRXMgaXN0IHp3aXNjaGVuIGRlciBUZWFtYXVmc3RlbGx1bmcgdW5kIGRlciBSYXVtYXVmc3RlbGx1bmcgenUgdW50ZXJzY2hlaWRlbi4KK0RpZSBUZWFtYXVmc3RlbGx1bmcgaXN0IGRpZSBBdWZzdGVsbHVuZywgaW4gZGVyIGRpZSBNaXRnbGllZGVyIGFuZ2VvcmRuZXQKK3dhZXJlbiwgd2VubiBhbGxlIGFud2VzZW5kIHdhZXJlbi4gSW4gZGVyIFRlYW1hdWZzdGVsbHVuZyBpc3QgZHVyY2ggZGllCitGdW5rdGlvbiBNYWtlRm9ybWF0aW9uKCkgc2ljaGVyZ2VzdGVsbHQsIGRhc3MgZGllIE1pbmltYWwtIHVuZAorTWF4aW1hbGFuZm9yZGVydW5nZW4gZXJmdWVsbHQgc2luZC4KK0RpZSBSYXVtYXVmc3RlbGx1bmcgZXJnaWJ0IHNpY2ggYXVzIGRlbiBhbndlc2VuZGVuIE1pdGdsaWVkZXJuIGRlcgorVGVhbWF1ZnN0ZWxsdW5nLiBTb2xsdGVuIGRpZSBNaW5pbWFsYW5mb3JkZXJ1bmdlbiBlaW5lciB2b3JkZXJlbiBSZWloZSBuaWNodAorZXJmdWVsbHQgc2Vpbiwgd2VyZGVuIGFud2VzZW5kZSBNaXRnbGllZGVyIGF1cyBkZW4gaGludGVyZW4gUmVpaGVuIElOIERFUgorUkFVTUFVRlNURUxMVU5HIG5hY2ggdm9ybmUgZ2VzY2hvYmVuIHNvd2VpdCBub2V0aWcuCisKK1ZvciBWZXJzY2hpZWJ1bmdlbiB1bmQgYmVpIFVwZGF0ZXMgZGVyIFRFQU1BVUZTVEVMTFVORyB3ZXJkZW4gZGllIEFycmF5cyBtaXQKK2RlbiBNaXRnbGllZGVybiBqZWRlciBSZWloZSBzb3J0aWVydCwgd29iZWkgZGllIGdld3VlbnNjaHRlIFJlaWhlIGRlcgorTWl0Z2xpZWRlciBkYXMgZ3JvZXNzdGUgR2V3aWNodCAoMTI1KSBpbSBTb3J0aWVya3JpdGVyaXVtIGhhdCB1bmQgZGllIEFuemFobAorZGVyIExlYmVuc3B1bmt0ZSBlaW5mYWNoIGVpbmdlaHQuIFNvbGFuZ2UgZGllIFRlYW1taXRnbGllZGVyIHVudGVyIDI1MCBMUAoraGFiZW4sIGthbm4gZWluIE1pdGdsaWVkIG1pdCB3ZW5pZ2VuIExQIGhpbnRlciBlaW5lbSBtaXQgdmllbGVuIExQIGVpbnNvcnRpZXJ0CitzZWluLCBkZXIgRUlORSBSZWloZSB3ZWl0ZXIgaGludGVyIHN0ZWhlbiB3aWxsLCBhYmVyIG5pY2h0IHp3ZWkgb2RlciBtZWhyLgorV2lyZCBlcyBub2V0aWcsIE1pdGdsaWVkZXIgYXVzIGVpbmVyIFJlaWhlIGluIGVpbmUgYW5kZXJlIHp1IHZlcnNjaGllYmVuLAord2VyZGVuIE1pdGdsaWVkZXIgdm9tIEFuZmFuZyBkZXMgQXJyYXlzIG5hY2ggdm9ybmUgdmVyc2Nob2JlbiAoYW4gZGFzIEVuZGUKK2RlcyBkYXZvcmxpZWdlbmRlbiBBcnJheXMpIGJ6dy4gTWl0Z2xpZWRlciB2b20gRW5kZSBkZXMgQXJyYXlzIG5hY2ggaGludGVuCisoYW4gZGVuIEFuZmFuZyBkZXMgZGFoaW50ZXJsaWVnZW5kZW4gQXJyYXlzKS4gRGFkdXJjaCB3ZXJkZW4gaW1tZXIgZGllCitNaXRnbGllZGVyIG1pdCBkZW0gc3RhZXJrc3RlbiBEcmFuZyBuYWNoIHZvcm5lIGFuIGRpZSBGcm9udCBnZXNjaGlja3QgOi0pCisKK1dlbm4gamVtYW5kIGRpZSBSZWloZSB3ZWNoc2VsdCB1bmQgZGFiZWkgZGllIE1pbmltYWxhbmZvcmRlcnVuZyBkZXIgUXVlbGxyZWloZQordW50ZXJzY2hyaXR0ZW4gb2RlciBkaWUgTWF4aW1hbGFuZm9yZGVydW5nIGRlciBaaWVscmVpaGUgdWViZXJzY2hyaXR0ZW4gd2lyZCwKK3dpcmQgbWl0IEN5Y2xlUm93cygpIHJvdGllcnQuIEtvbW10IGVpbiBuZXVlcyBNaXRnbGllZCBoaW56dSB1bmQgZGllCitNYXhpbWFsYW5mb3JkZXJ1bmcgc2VpbmVyIGdld3VlbnNjaHRlbiBSZWloZSB3dWVyZGUgdWViZXJzY2hyaXR0ZW4sIHdpcmQKK2luIEFkZFRvUm93KCkgenVuYWVjaHN0IHZlcnN1Y2h0IGVpbiBNaXRnbGllZCBlaW5lIFJlaWhlIHZvcnp1c2NoaWViZW4sIGZhbGxzCitkYSBub2NoIFBsYXR6IGlzdCwgc29uc3QgZWluZSBSZWloZSB6dXJ1ZWNrLCBmYWxscyBkYSBub2NoIFBsYXR6IGlzdCAoZGllCitBbnphaGwgZGVyIE1pdGdsaWVkZXIgYWxzbyA8IGZvcm1heCBpc3QpLiBXaXJkIGVpbiBNaXRnbGllZCBlbnRmZXJudCBvZGVyCitnZXdhbHRzYW0gZW50ZmVybnQgdW5kIHd1ZXJkZSBkYWJlaSBkaWUgTWluaW1hbGFuZm9yZGVydW5nIHNlaW5lciBSZWloZQordW50ZXJzY2hyaXR0ZW4sIHdpcmQgaW4gUmVtb3ZlRnJvbVJvdygpIHZlcnN1Y2h0LCBlaW4gTWl0Z2xpZWQgYXVzIGRlcgorbmFjaGZvbGdlbmRlbiBSZWloZSBuYWNoIHZvcm5lIHp1IGhvbGVuLCBmYWxscyBkb3J0IFVlYmVyc2NodXNzIHZvcmhhbmRlbiBpc3QKKyhpbiBkZXIgbmFjaGZvbGdlbmRlbiBSZWloZSBhbHNvIG1laHIgTWl0Z2xpZWRlciBhbHMgZm9ybWluIHNpbmQpLCBzb25zdCBhdXMKK2RlciB2b3JhbmdlaGVuZGVuIFJlaWhlLCBmYWxscyBkb3J0IFVlYmVyc2NodXNzIGlzdC4KKworU29sbHRlbiBkaWVzZSBVbW9yZG51bmdlbiBuaWNodCBhdXNyZWljaGVuIGRpZSBGb3JtYXRpb24gaW4gZGVyCitURUFNQVVGU1RFTExVTkcgZWluenVoYWx0ZW4sIHdpcmQgZGllIEZvcm1hdGlvbiBtaXQgTWFrZUZvcm1hdGlvbigpIGVyend1bmdlbi4KK0RpZXMgd2lyZCBpbiB6d2VpIER1cmNobGFldWZlbiBlcnJlaWNodC4gRGVyIGVyc3RlIER1cmNobGF1ZiB3aXJkIHZvbiB2b3JuZQorbmFjaCBoaW50ZW4gZHVyY2hnZWZ1ZWhydC4gSXN0IGRhcyBNYXhpbXVtIGVpbmVyIFJlaWhlIHVlYmVyc2Nocml0dGVuLCB3ZXJkZW4KK3NvdmllbGUgTWl0Z2xpZWRlciBuYWNoIHZvcm5lIGdlc2Nob2JlbiB3aWUgaW4gZGVyIGRhdm9ybGllZ2VuZGVuIFJlaWhlIGZyZWllCitQbGFldHplIHNpbmQgdW5kIGRpZSByZXN0bGljaGVuIHVlYmVyc2NodWVzc2lnZW4gTWl0Z2xpZWRlciBuYWNoIGhpbnRlbi4gU29sbHRlCitkYXMgTWluaW11bSBlaW5lciBSZWloZSB1bnRlcnNjaHJpdHRlbiBzZWluLCB3ZXJkZW4gc292aWVsZSBNaXRnbGllZGVyIGF1cyBkZW4KK25hY2hmb2xnZW5kZW4gUmVpaGVuIGhlcmdlaG9sdCwgd2llIHp1bSBFcnJlaWNoZW4gZGVzIE1pbmltdW1zIG5vZXRpZyBpc3QuIERlcgorendlaXRlIER1cmNobGF1ZiB3aXJkIHZvbiBoaW50ZW4gbmFjaCB2b3JuZSBhdXNnZWZ1ZWhydC4gRmFsbHMgZGFzIE1pbmltdW0KK2VpbmVyIFJlaWhlIHVudGVyc2Nocml0dGVuIHdpcmQsIHdlcmRlbiBNaXRnbGllZGVyIGF1cyBkZW4gZGF2b3JsaWVnZW5kZW4KK1JlaWhlbiBnZWhvbHQgc293ZWl0IG5vZXRpZywgd2VubiBqZWRvY2ggVWViZXJzY2h1c3Mgdm9yaGFuZGVuIGlzdCwgd2lyZAorZGllc2VyIG5hY2ggdm9ybmUgZ2VzY2hvYmVuLgorCitCRUlTUElFTDoKKworRm9ybWF0aW9uIDMtNiAyLTIgMS0yIDAtNiAxLTEgKGJsb2Vkc2lubmlnZSBGb3JtYXRpb24gOy0pCisKKzEuIER1cmNobGF1ZiAodm9ybmUgYmVnaW5uZW5kKToKKworICAgMSAxIDYgMSAwCisgICA8LS0tLSAgICAgKE1pbmltdW0gUmVpaGUgMSB1bnRlcnNjaHJpdHRlbikKKyAgIDMgMCA1IDEgMAorICAgICA8LS0gICAgIChNaW5pbXVtIFJlaWhlIDIgdW50ZXJzY2hyaXR0ZW4pCisgICAzIDIgMyAxIDAKKyAgICAgICAtLT4gICAoTWF4aW11bSBSZWloZSAzIHVlYmVyc2Nocml0dGVuKQorICAgMyAyIDIgMiAwCisKKzIuIER1cmNobGF1ZiAoaGludGVuIGJlZ2lubmVuZCk6CisKKyAgIDMgMiAyIDIgMAorICAgICAgICAgLS0+IChNaW5pbXVtIFJlaWhlIDUgdW50ZXJzY2hyaXR0ZW4pCisgICAzIDIgMiAxIDEKKworRXJnZWJuaXMgZW50c3ByaWNodCBkZXIgZ2V3dWVuc2NodGVuIEZvcm1hdGlvbi4gRXJtaXR0bHVuZyBkZXIgUkFVTWF1ZnN0ZWxsdW5nOgorCisgICAyIDAgMiAxIDEgKEFud2VzZW5kZSBhdXMgZGVyIHZvcmFuZ2VnYW5nZW5lbiBURUFNYXVmc3RlbGx1bmcpCisgICA8LS0tLQorICAgMyAwIDEgMSAxCisgICAgIDwtLS0tCisgICAzIDIgMCAwIDEKKyAgICAgICA8LS0tLQorICAgMyAyIDEgMCAwCisKK0VyZ2VibmlzIGVyZnVlbGx0IE1pbmltYWxhbmZvcmRlcnVuZ2VuIHp1bWluZGVzdCB2b3JuZSwgTWF4aW1hbGFuZm9yZGVydW5nZW4KK2tvZW5uZW4gbmljaHQgdWViZXJzY2hyaXR0ZW4gd2VyZGVuLCB3ZWlsIGRpZSBSYXVtYXVmc3RlbGx1bmcgaG9lY2hzdGVucworc292aWVsZSBNaXRnbGllZGVyIHdpZSBkaWUgVGVhbWF1ZnN0ZWxsdW5nIGhhdC4KKworCitBYmFyYmVpdHVuZyBkZXMgQW5ncmlmZnNiZWZlaGxzIHVuZCBWZXJ0ZWlsdW5nIGRlciBCZWdydWVzc3VuZ3NzY2hsYWVnZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RhcyBHcnVuZHByaW56aXAgaXN0IGZvbGdlbmRlczoKK1dlbm4gZGFzIGdhbnplIFRlYW0gYmV3ZWd0IHdpcmQsIHdlcmRlbiBkaWUgQmVncnVlc3N1bmdzc2NobGFlZ2UgdW50ZXIKK1ZvcmJlaGFsdCB3ZWdnZWxhc3Nlbi4gU29iYWxkIGFsbGUgVGVhbW1pdGdsaWVkZXIgYmV3ZWd0IHd1cmRlbiwgbWFjaHQKK2plZGVzIE1vbnN0ZXIsIGRhcyBub2NoIGVpbmVuIEJlZ3J1ZXNzdW5nc3NjaGxhZyBhdXNmdWVocmVuIG11c3MsIGVpbmVuCitTY2hsYWcgYXVmIEVJTiBUZWFtbWl0Z2xpZWQgZGFzIGltIE5haGthbXBmIGVycmVpY2hiYXIgaXN0IHVuZCBkZXIgVm9yYmVoYWx0Cit3aXJkIGZ1ZXIgYWxsZSBNaXRnbGllZGVyIGF1ZmdlaG9iZW4uIFdlbm4gZWluIFRlYW1taXRnbGllZCB2ZXJzdWNodAorc2ljaCB6dSBiZXdlZ2VuIHVuZCBub2NoIGVpbiBCZWdydWVzc3VuZ3NzY2hsYWcgdW50ZXIgVm9yYmVoYWx0IGZlaGx0LAord2lyZCBkaWVzZXIgbm9jaCB2b3IgZGVyIEJld2VndW5nIG5hY2hnZWhvbHQuCisKKworU0lFSEUgQVVDSDoKKyAgICAgICAgVWViZXJzaWNodDogdGVhbWthbXBmCisgICAgICAgIFByb3BlcnRpZXM6IFBfVEVBTSwgUF9BU1NPQ19NRU1CRVJTLCBQX1RFQU1fQVRUQUNLX0NNRCwKKyAgICAgICAgICAgICAgICAgICAgUF9URUFNX0FVVE9GT0xMT1csIFBfVEVBTV9DT0xPUlMsIFBfVEVBTV9MRUFERVIsCisgICAgICAgICAgICAgICAgICAgIFBfVEVBTV9ORVdNRU1CRVIsIFBfVEVBTV9XQU5URURfUk9XLCBQX1RFQU1fV0lNUFlfUk9XCisgICAgICAgIEJld2VndW5nOiAgIElzVGVhbU1vdmUsIFRlYW1GbGVlCisgICAgICAgIE1pdGdsaWVkZXI6IElzVGVhbUxlYWRlciwgVGVhbU1lbWJlcnMKKyAgICAgICAgS2FtcGY6ICAgICAgQXNzb2NNZW1iZXIsIERlQXNzb2NNZW1iZXIsIEluc2VydEVuZW15VGVhbSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0TmVhckVuZW15LCBTZWxlY3RGYXJFbmVteQorICAgICAgICBQb3NpdGlvbmVuOiBQcmVzZW50UG9zaXRpb24sIFByZXNlbnRSb3dzLCBQcmVzZW50RW5lbXlSb3dzLAorICAgICAgICAgICAgICAgICAgICBQcmVzZW50VGVhbVBvc2l0aW9uLCBTd2FwUm93cworICAgICAgICBTb25zdGlnZXM6ICBUZWFtUHJlZml4CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IDE2LTA4LTIwMTAsIEdhYnlsb24KZGlmZiAtLWdpdCBhL2RvYy93aXovdGVjaG5pa2VuIGIvZG9jL3dpei90ZWNobmlrZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRlZmQ1OQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdGVjaG5pa2VuCkBAIC0wLDAgKzEsMTExIEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERpZXNlciBUZXh0IGlzdCB2ZXJhbHRldC4gRGllIFRlY2huaWtlbiB3ZXJkZW4gdm9uIGRlciBNdWRsaWIgbmljaHQgICAgICAqCisqIGF1c2dld2VydGV0IHVuZCBtb21lbnRhbiBhdWNoIHZvbiBrZWluZXIgR2lsZGUgKEF1c25haG1lOiBkaWUgVGFuamlhbiAgICAqCisqIHplaWd0IHNpZSBhbiwgdHV0IGFiZXIgbml4IGRhbWl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgVGVjaG5pa2VuLCBtaXQgZGVuZW4gV2FmZmVuIGVpbmdlc2V0enQgd2VyZGVuIGtvZW5uZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVFFfVEhSQVNIIC0gIlNjaGxhZ3RlY2huaWsiCisKKyAgICBEaWUgdm9tIFZlcnN0YWVuZG5pcyBoZXIgZWluZmFjaHN0ZSBUZWNobmlrOiBNYW4gbmVobWUgc2ljaCBlaW5lbgorICAgIEdlZ2Vuc3RhbmQsICBkZXIgZ3Jvc3MgZ2VudWcgaXN0IHVuZCBoYWxid2VncyAgYnJhdWNoYmFyZSAgRGljaHRlIAorICAgIGJlc2l0enQgLSBhbHNvIG5pY2h0IGdlcmFkZSBmZWRlcmxlaWNodCAgZnVlciBzZWluZSBHcm9lc3NlIGlzdCAtIAorICAgIHVuZCBoYXVlIGRyYXVmLiAgRWdhbCBvYiBIZW5rZXJzYXh0LCAgU3RvY2ssICBTdHVobCwgIEJpZXJmbGFzY2hlIAorICAgIChnYW56KSwgS251ZXBwZWwsIEtldWxlIG9kZXIgQnJhdHBmYW5uZSwgIGRhcyB1bmQgYWVobmxpY2hlcyBzaW5kIAorICAgIGJyYXVjaGJhcmUgICdXYWZmZW4nLCAgdW0gbWl0IGRpZXNlciBUZWNobmlrIEVyZm9sZyB6dSBoYWJlbi4gIEVzIAorICAgIGlzdCBlaW5lIHNjaGxhZ2VuZGUgQmV3ZWd1bmcsICBhbHNvIGRhcyBnZXdvbGx0ZSBzY2h3dW5naGFmdGUgWnUtCisgICAgc2FtbWVuZnVlaHJlbiB6d2VpZXIgS29lcnBlciwgZnVlciBnZXdvZWhubGljaCBXYWZmZSB1bmQgR2VnbmVyLgorCisKK1RRX1RIUlVTVCAtICJTdG9zc3RlY2huaWsiCisKKyAgICBBdWNoIGRpZXNlIFRlY2huaWsgZXJmcmV1dCBzaWNoIHp1bWluZGVzdCBpbiBLbmVpcGVuc2NobGFlZ2VyZWllbgorICAgIGdyb3NzZXIgQmVsaWVidGhlaXQ6IERhcyBTdG9zc2VuLiAgTWl0IGVpbmVtIHZvcnp1Z3N3ZWlzZSBzcGl0emVuCisgICAgR2VnZW5zdGFuZCB3aWUgU3BlZXIsIERvbGNoLCBCaWVyZmxhc2NoZSAoemVyYnJvY2hlbikgb2RlciBIZWxsZS0KKyAgICBiYXJkZSAgd2lyZCBkZW0gR2VnbmVyIGVpbiBMb2NoIGluIGRlbiBMZWliICBnZXN0b3NzZW4sICBpbSBGYWxsZSAKKyAgICBlaW5lcyAgIHN0dW1wZmVuIEdlZ2Vuc3RhbmRlcyB3aWUgei5CLiAgZWluZW0gS2FtcGZzdG9jayBvZGVyIGRlbSAKKyAgICBlaWdlbmVuICBaZWlnZWZpbmdlciBvZGVyIEtub2VjaGVsIHppZWx0IG1hbiBhdWYgVml0YWxwdW5rdGUgb2RlcgorICAgIFdlaWNodGVpbGUgdW5kIGVyemllbHQgYXVjaCBkYW1pdCBiZWVpbmRydWNrZW5kZSBFcmdlYm5pc3NlLiAgRGFzCisgICAgR2V3aWNodCBkZXIgV2FmZmUgaXN0ICB3ZW5pZ2VyIHZvbiBCZWRldXR1bmcsICBkYSAgZGVyIEFrdGV1ciBiZWkgCisgICAgZWluZW0ga29ycmVrdCBhdXNnZWZ1ZWhydGVtIHNlaW5lIGVpZ2VuZSBNYXNzZSBtaXQgZWluc2V0enQuCisKKworVFFfU1RST0tFIC0gIlN0cmVpY2h0ZWNobmlrIgorCisgICAgRWluIGV0d2FzIGVpZ2Vud2lsbGlnIGFubXV0ZW5kZXIgQmVncmlmZiwgIGFiZXIgYmVpIGdlbmF1ZXJlciBCZS0KKyAgICB0cmFjaHR1bmcgaGF0ICBkaWVzZSBUZWNobmlrIHRhdHNhZWNobGljaCBldHdhcyBtaXQgU3RyZWljaGVsbiB6dQorICAgIHR1bjogIERpZSB3aWNodGlnc3RlIEtvbXBvbmVudGUgZGVyIEJld2VndW5nIGZ1ZWhydCBtZWhyIG9kZXIgd2UtCisgICAgbmlnZXIgYW0gIEdlZ25lciBfZW50bGFuZ18gdW5kIG5pY2h0IGF1ZiBpaG4genUuICBNYW4gc3RlbGxlIHNpY2ggCisgICAgZWluIFNjaHdlcnQgdm9yLCBkYXMgZ2VzY2htZWlkaWcgZHVyY2ggZGllIEtlaGxlIGVpbmVzIE9ya3MgZ2xlaS0KKyAgICB0ZXQgIHVuZCBlaW5lIE1lbmdlIEJsdXQgIGZyZWlzZXR6dCBvZGVyIGVpbiBQZXJnYW1lbnRibGF0dCwgIGRhcworICAgIG1hbiBhdXMgZGVyIEhhbmQgZ2V6b2dlbiBiZWtvbW10ICAodW5kIGViZW5mYWxscyBlaW5lIE1lbmdlICBCbHV0CisgICAgZnJlaXNldHp0KS4gIEluIGRlbiBhbGxlcm1laXN0ZW4gRmFlbGxlbiBpc3QgYWxzbyBlaW5lIG1vZWdsaWNoc3QKKyAgICBzY2hhcmZlIFNjaG5laWRlIGltIFNwaWVsIHVuZCwgYXVjaCB3ZW5uIHNjaG1lcnpoYWZ0ZSBFcmZhaHJ1bmdlbgorICAgIG1pdCAgUGFyZ2FtZW50a2FudGVuIGdlbGVnZW50bGljaCBnZWdlbnRlaWxpZ2VzICB2ZXJtdXRlbiBsYXNzZW4sIAorICAgIGplIHNjaGFlcmZlciBkaWUgU2NobmVpZGUsIGRlc3RvIHdlbmlnZXIgRHJ1Y2sgaW4gUmljaHR1bmcgZmVpbmQtCisgICAgbGljaGVuICBaaWVsa29lcnBlciAgbXVzcyBmdWVyICBlaW5lbiAgImR1cmNoc2NobmVpZGVuZGVuIEVyZm9sZyIgCisgICAgYXVzZ2V1ZWJ0IHdlcmRlbi4KKworCitUUV9XSElQIC0gIlBlaXRzY2h0ZWNobmlrIgorCisgICAgVW50ZXIgZGVyIFBlaXRzY2h0ZWNobmlrIHdpcmQgbnVuIGFsbGVzIHp1c2FtbWVuZ2VmYXNzdCwgIHdhcyBkZW4KKyAgICBVbWdhbmcgbWl0IGJld2VnbGljaGVuIEVsZW1lbnRlbiBhbiBkZXIgV2FmZmUgYmV0cmlmZnQuICBFZ2FsLCBvYgorICAgIFBlaXRzY2hlIGEgbGEgR2VvcmdlIEx1Y2FzLCBuZXVuc2Nod2FlbnppZ2UgS2F0emUsIE1hbnJpa2ktR3VzYXJpCisgICAgKGVpbmUgaGFsYm1ldGVyIGxhbmdlIEtldHRlIG1pdCBHZXdpY2h0ZW4gYW4gZGVuIEVuZGVuKSwgZWluLSBiaXMKKyAgICBkcmVpa29lcGZpZ2VtICBiZWtldHRldGVuIE1vcmdlbnN0ZXJuIG9kZXIgZ2FyIERyZXNjaGZsZWdlbCwgIHNpZSAKKyAgICBzaW5kIHp1bWluZGVzdHRlaWx3ZWlzZSBzZWhyIHVudGVyc2NoaWVkbGljaCBrb256aXBpZXJ0IChzbyBmZWhsdAorICAgIGRlciAgUGVpdHNjaGUgYW0gYWV1c3NlcmVuIEVuZGUgZGFzIEdld2ljaHQsICBzbyBkYXNzIGplbmVzIGR1cmNoCisgICAgZWluZSBnZWdlbmxhZXVmaWdlIEJld2VndW5nIGJlc2NobGV1bmlndCB3ZXJkZW4gbXVzcyksIGhhYmVuIGFiZXIKKyAgICBlaW5lcyBnZW1laW5zYW06IERlciBTY2hhZGVuIHdpcmQgZHVyY2ggZWluIHVlYmVyIGRpZSBub3JtYWxlIEJlLQorICAgIHdlZ3VuZyBkZXMgS2FlbXBmZXJzICBoaW5hdXMgYmVzY2hsZXVuaWd0ZXMgVGVpbCBkZXIgV2FmZmUgdmVydXItCisgICAgc2FjaHQuIER1cmNoIGplbmUgQmV3ZWdsaWNoa2VpdCBkZXIgIFdhZmZlIHdpcmQgZWluIHNlaHIgIGdyb3NzZXMgCisgICAgTWFzcyBhbiBLb29yZGluYXRpb25zdmVybW9lZ2VuIHZvbSBLYWVtcGZlciBhYnZlcmxhbmd0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Zlcm1pc2NodGVzCisKKyAgICAtIFdhZmZlbiBrb2VubmVuICBzaWNoIGZ1ZXIgbWVocmVyZSAgVGVjaG5pa2VuIGVpZ25lbi4gIE1pdCBlaW5lbQorICAgICAgS2F0YW5hLCBkZW0gU2Nod2VydCBkZXIgU2FtdXJhaSwgYmVpc3BpZWxzd2Vpc2Uga2FubiBtYW4gaW4gZGllCisgICAgICB1bmdlc2NodWV0enRlbiBQYXJ0aWVuIGRlcyBHZWduZXJzIHN0ZWNoZW4sICBkZW0gR2VnbmVyIG1pdCBkZXIgCisgICAgICBTdHJlaWNodGVjaG5payB0aWVmZSBTY2huaXR0ZSBpbiBkaWUgVW50ZXJzZWl0ZW4gZGVyIEFybWUgIChlaW4KKyAgICAgIGR1cmNoIHR5cGlzY2hlIFNhbXVyYWlydWVzdHVuZ2VuIHNjaGxlY2h0IGdlc2NodWV0enRlciBCZXJlaWNoKQorICAgICAgenVmdWVnZW4sIHVuZCBtaXQgZGVyIGJlcnVlaG10ZW4gaGFsYmVuIEtvZXJwZXJkcmVodW5nIGRlbSBpbi0KKyAgICAgIHp3aXNjaGVuIHRhdW1lbG5kZW0gS29udHJhaGVudGVuIGRlbiBLb3BmIGFic2NobGFnZW4uIAorCisgICAgLSBXYWZmZW4ga29lbm5lbiBzaWNoLCBvYndvaGwgdm9uIGRlciBnbGVpY2hlbiBHYXR0dW5nLCBmdWVyIHZlci0KKyAgICAgIHNjaGllZGVuZSBUZWNobmlrZW4gZWlnbmVuLiAgRWluIHNwaXR6ZXIgRG9sY2ggbWFnIGVpbmUgc3R1bXBmZQorICAgICAgS2xpbmdlIGhhYmVuICB1bmQgbnVyIGZ1ZXIgYXVzc2NobGllc3NsaWNoIHN0b3NzZW5kZSAgUHJha3Rpa2VuCisgICAgICB6dSBnZWJyYXVjaGVuIHp1IHNlaW4sIHdhZWhyZW5kIGVpbiBhYmdlcnVuZGV0ZXMgS3VlY2hlbm1lc3NlciwKKyAgICAgIGViZW5mYWxscyB2b20gVHlwICJaeW4iLCBmdWVyIGthbnRpZ2VzIFp1c2NobGFnZW4gdW5kIGV2ZW50dWVsbAorICAgICAgYXVjaCBmdWVyIHNjaG5pdHRpZ2UgU3RyZWljaHRlY2huaWtlbiBoZXJoYWx0ZW4ga2Fubi4KKworICAgIC0gSmUgbmFjaCBad2VjayB1bmQgS29lbm5lbiB3aXJkIGRpZSBiZXN0ZSB6dSB2ZXJ3ZW5kZW5kZSBUZWNobmlrIAorICAgICAgdmFyaWllcmVuOiAgV2VubiBlcyB1bSBhcm1lIEdyYXNoYWxtZSBnZWh0LCAgd2lyZCBkaWUgU2Vuc2UgbWl0IAorICAgICAgc2NobmVpZGVuZGVuIEJld2VndW5nZW4gZ2VmdWVocnQgIChzY2hvZW4gaW4gZGVyICBNaWxrYS1XZXJidW5nIAorICAgICAgenUgc2VoZW4sICBmdWVyIGRpZSwgZGllIGVzIHBhcnRvdXQgbmljaHQgZ2xhdWJlbiB3b2xsZW4pLCAgYmVpIAorICAgICAgZWluZXIgQmF1ZXJucmV2b2x0ZSBtYWcgZGFzIGd1dGUgU3R1ZWNrIGplZG9jaCBhdWNoIG1pdCBhbmRlcmVuIAorICAgICAgVGVjaG5pa2VuIGVmZmVrdGl2ICh1bmQgdmllbGxlaWNodCBzb2dhciBlZmZla3RpdmVyKSBlaW5nZXNldHp0IAorICAgICAgd2VyZGVuLCB3ZXIgd2Vpc3MsIHdlciB3YXIgc2Nob24gZGFiZWkuLi4/ICBTZWxic3QgYmVpIG5vcm1hbGVuCisgICAgICBXYWZmZW4gd2llIFNjaHdlcnRlcm4gIHd1ZXJkZSBlaW4gVW5nZXVlYnRlciAgc2VsdGVuIHZlcnN1Y2hlbiwgIAorICAgICAgbWl0IFN0cmVpY2h0ZWNobmlrZW4gU2NoYWRlbiB6dSB2ZXJ1cnNhY2hlbiwgZGVubiBkYXMgWnVzdGVjaGVuIAorICAgICAgaXN0IHNjaGxpY2h0IGVpbmZhY2hlci4KKworICAgIC0gRXMgd2lyZCBpbW1lciAgYmVzb25kZXJlIFdhZmZlbiBnZWJlbi4gIFNvICBzaW5kIGJlaXNwaWVsc3dlaXNlCisgICAgICBkYXMgWndlaWxpbGllbiB1bmQgIGRpZSBIZWxsZWJhcmRlICBiZWlkZSBkZW0gVHlwICJLenJvayIgKGZ1ZXIKKyAgICAgIG5pY2h0LVRydmVzOiBTdGFuZ2Vud2FmZmVuKSB6dXp1b3JkbmVuLCBkaWUgVGVjaG5pa2VuICB3ZWljaGVuLAorICAgICAgYmVkaW5ndCAgZHVyY2ggZGllIFZpZWxzZWl0aWdrZWl0ICBkZXIgV2FmZmVuLCAgamVkb2NoIHZvbiAgZGVyCisgICAgICBOb3JtIGFiOiBEYXMgWndlaWxpbGllbiwgYW4gamVkZW0gIEVuZGUgZWluZSBsYW5nZSB1bmQgIHNjaGFyZmUKKyAgICAgIEtsaW5nZSwgIGthbm4gIGViZW5zbyAgdmllbHNlaXRpZyAgZ2VoYW5kaGFidCAgd2VyZGVuICB3aWUgIGVpbiAKKyAgICAgIFNjaHdlcnQsICB3YWVocmVuZCBkaWUgSGVsbGViYXJkZSAoZWluZSBNaXNjaHVuZyBhdXMgIExhbnplIHVuZAorICAgICAgQXh0KSBkdXJjaCBpaHJlIHVuYXVzZ2V3b2dlbmUgR2V3aWNodHN2ZXJ0ZWlsdW5nICB1bmQgZGVtIGRhbWl0CisgICAgICB2ZXJidW5kZW5lbiBQb3RlbnppYWwgYW4gU2Nod3VuZyBzY2hsaWNodHdlZyBESUUgV2FmZmUgZGVyIFdhaGwgCisgICAgICBmdWVyIGZlaWdlIFp3ZXJnZSBpc3Q6ICBTY2h3aW5nZW4gd2llIGVpbmUgZ3Jvc3NlICBBeHQgdW5kICBkZW4gCisgICAgICBHZWduZXIgYXVmIERpc3RhbnogaGFsdGVuIGtvZW5uZW4uICBHdXQsICBkYXNzIGVzIGtlaW5lICBmZWlnZW4gCisgICAgICBad2VyZ2UgZ2lidCA7bykKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGFzdCBtb2RpZmllZDogVHVlIEFwciAxMyAxMzowMDowMCAyMDAwIGJ5IEFuYXRvbApkaWZmIC0tZ2l0IGEvZG9jL3dpei90ZXN0c3BpZWxlciBiL2RvYy93aXovdGVzdHNwaWVsZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmYzJmOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdGVzdHNwaWVsZXIKQEAgLTAsMCArMSw0MCBAQAorCitUZXN0c3BpZWxlcgorPT09PT09PT09PT0KKworIFRFU1RTUElFTEVSOgorICAgIFRlc3RzcGllbGVyIHNpbmQgWndlaXRjaGFyYWt0ZXJlIHZvbiBNYWdpZXJuLCBkaWUgYXVjaCBnbGVpY2h6ZWl0aWcgbWl0CisgICAgZGVtIE1hZ2llciBlaW5nZWxvZ2d0IHNlaW4gZHVlcmZlbi4gU2llIG11ZXNzZW4gZW50c3ByZWNoZW5kIG1hcmtpZXJ0IHNlaW4KKyAgICAoc2llaGUgdW50ZW4pIHVuZCBkdWVyZmVuIGF1Y2ggcnVoaWcgdm9tIE1hZ2llciBtYW5pcHVsaWVydCB3ZXJkZW4uCisKKyAgICBURVNUU1BJRUxFUiBVTlRFUkxJRUdFTiBWT0xMIERFTiBSRUdFTE4gREVTIE1BR0lFUlZFUlRSQUdTIQorCisgICAgVGVzdHNwaWVsZXIgd2VyZGVuIGhhdXB0c2FlY2hsaWNoIGRhbm4gZ2VicmF1Y2h0LCB3ZW5uIE9iamVrdGUgb2RlcgorICAgIEdlYmlldGUgd2lya2xpY2ggYXVzIFNwaWVsZXJzaWNodCBnZXRlc3RldCB3ZXJkZW4gc29sbGVuIHVuZCBkYXMKKyAgICBBYnNjaGFsdGVuIGRlcyBNYWdpZXJtb2R1cyBkYXp1IG5pY2h0IGF1c3JlaWNodC4gRWluIGFuZGVyZXMgRWluc2F0emdlYmlldAorICAgIGlzdCBkYXMgVGVzdGVuIHZvbiBNZWxkdW5nZW4gb2RlciBBa3Rpb25lbiwgZGllIG5pY2h0IG51ciBkZW4KKyAgICBBdXNmdWVocmVuZGVuIHNlbGJzdCBiZXRyZWZmZW4sIHNvbmRlcm4gei5CLiBhdWNoIHVtc3RlaGVuZGUgUGVyc29uZW4gaW4KKyAgICBlaW5lbSBSYXVtLgorCisgR0lMREVOVEVTVFNQSUVMRVI6CisgICAgU29mZXJuIGVpbmUgR2lsZGUgZGFzIEFubGVnZW4gdm9uIFRlc3RzcGllbGVybiB1bnRlcnN0dWV0enQsIGdpYnQgZXMKKyAgICBlbnRzcHJlY2hlbmRlIEhpbGZlc2VpdGVuIHVudGVyICJoaWxmZSA8Z2lsZGVubmFtZT4udGVzdHNwaWVsZXIiLgorCisgTUFSS0lFUkVOOgorICAgIEVpbiBUZXN0c3BpZWxlciB3aXJkIGR1cmNoIHNldHplbiBkZXIgUHJvcGVydHkgUF9URVNUUExBWUVSIG1hcmtpZXJ0LiBFcworICAgIHJlaWNodCB6d2FyIGF1cywgZGllc2UgUHJvcGVydHkgZWluZmFjaCBhdWYgZWluZW4gV2VydCAhPSAwIHp1IHNldHplbiwKKyAgICBhYmVyIG1hbiBzb2xsdGUgaGllciBsaWViZXIgZGVuIE5hbWVuIGRlcyBNYWdpZXJzIGVpbnRyYWdlbiwgenUgZGVtIGRlcgorICAgIFRlc3RpZSBnZWhvZXJ0LgorCisgICAgRWluaWdlIE1hZ2llciBtYXJraWVyZW4gaWhyZSBUZXN0c3BpZWxlciBuaWNodCwgdW5kIHp3YXIgbWl0IGRlcgorICAgIEJlZ3J1ZW5kdW5nLCBkYXNzIGRhbm4gVG9kZXNtZWxkdW5nZW4gbmljaHQgYXVzZ2VnZWJlbiB3ZXJkZW4uIERhcyBpc3QKKyAgICBhbGxlcmRpbmdzIGtlaW5lIEF1c3JlZGUgbWVociwgZGFzIFRlc3RzcGllbGVyLVRvZGVzbWVsZHVuZ2VuIGF1ZiAtVGRUCisgICAgYXVzZ2VnZWJlbiB3ZXJkZW4uCisgICAgU2luZCBuaWNodG1hcmtpZXJ0ZXIgVGVzdHNwaWVsZXIgZW50c3ByZWNoZW5kIG1hbmlwdWxpZXJ0LCBrb2VubnRlIGVzCisgICAgcGFzc2llcmVuLCBkYXNzIHNpZSB3ZWdlbiBTY2h1bW1lbGVpIGdlbG9lc2NodCB3ZXJkZW4uLi4KKworIFNJRUhFIEFVQ0g6CisgICAgendlaXRzcGllbGVyLCB2ZXJ0cmFnLCBtc2NoYXUsIFBfVEVTVFBMQVlFUgorCisgTEVUWlRFIEFlTkRFUlVORzoKKyAgICAxOS4gTWFlcnogMjAwNCBHbG9pbnNvbgpkaWZmIC0tZ2l0IGEvZG9jL3dpei90b2Rlc2ZhbGxlbiBiL2RvYy93aXovdG9kZXNmYWxsZW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4NTAzMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdG9kZXNmYWxsZW4KQEAgLTAsMCArMSwzNTUgQEAKK01hbnBhZ2UgenUgVG9kZXNmYWxsZW4uIFRlY2huaXNjaGVyIExlaXRmYWRlbi4KKworCitEaWVzZSBNYW5wYWdlIHJpY2h0ZXQgc2ljaCBhbiAoSnVuZyltYWdpZXIsIGRpZSBUb2Rlc2ZhbGxlbiBudXR6ZW4gd29sbGVuLAordW0gdmVyc2NoaWVkZW5zdGUgRGluZ2UgaW4gaWhyZW4gR2ViaWV0ZW4gZGFtaXQgenUgZXJyZWljaGVuLiBEYWJlaSBzb2xsIGhpZXIKK25pY2h0IGRpc2t1dGllcnQgd2VyZGVuLCB3byB3ZWxjaGUgQXJ0IHZvbiBUb2Rlc2ZhbGxlIFNpbm4gbWFjaHQgKG9kZXIgYXVjaAorbmljaHQpLCBzb25kZXJuIGVzIHNvbGxlbiB0ZWNobmlzY2hlIEFzcGVrdGUgYmVpIGRlciBQcm9ncmFtbWllcnVuZyBlaW5lcgorc29sY2hlbiAoVG9kZXMpZmFsbGUgYXVmZ2V6ZWlndCB3ZXJkZW4uCisKKworS2FwaXRlbCAxLiBEYXMgVW1mZWxkIGVpbmVyIFRvZGVzZmFsbGUuCisKK0VpbmUgVG9kZXNmYWxsZSBrYW5uIHdpZSBpbiBzcGFldGVyZW4gS2FwaXRlbG4gYmVzY2hyaWViZW4sIGxlaWNodCB1bWdlc2V0enQKK3dlcmRlbi4gRGFtaXQgc2llIHNpY2ggYXVjaCBzbyB2ZXJoYWVsdCB3aWUgc2llIHNvbGwsIHdlcmRlbiBoaWVyIGVpbmlnZQorU2ljaGVyaGVpdHNhc3Bla3RlIGJlaGFuZGVsdCwgZGllIGR1cmNoZ2VnYW5nZW4gd2VyZGVuIHNvbGx0ZW4uCisKKworS2FwaXRlbCAxLjEgV2VyIGhhdCBkaWUgVG9kZXNmYWxsZSBhdXNnZWxvZXN0PworCitEaWUgbWVpc3RlbiBUb2Rlc2ZhbGxlbiB3ZXJkZW4gZHVyY2ggZWluIEtvbW1hbmRvIGF1c2dlbG9lc3QsIHdlbGNoZXMgZGVyCitTcGllbGVyIGF1c2Z1ZWhydC4gWi5CLgorCWRydWVja2UgZ3Jvc3NlbiByb3RlbiBrbm9wZiBtaXQgZGVyIGF1ZnNjaHJpZnQgInRvZGVzZmFsbGUgYXVzbG9lc2VuIgorSW4gZGllc2VtIEZhbGwgZXhpc3RpZXJ0IGluIGRlciBhdWZnZXJ1ZmVuZW4gRnVua3Rpb24gZGllIE1vZWdsaWNoa2VpdCwgdWViZXIKK2RpZSBGdW5rdGlvbiB0aGlzX3BsYXllcigpIGRlbiBha3R1ZWxsICJndWVsdGlnZW4iIFNwaWVsZXIgYXVzenVmaXNjaGVuLgorSGllcmJlaSBpc3QgenUgYmVhY2h0ZW4sIGRhc3MgYXVjaCBOUENzIHZvbiBkaWVzZXIgRnVua3Rpb24genVydWVja2dlZ2ViZW4KK3dlcmRlbiBrb2VubmVuLiBBdWNoIGltIGluaXQoKSBlaW5lcyBSYXVtZXMgd2lyZCBpbiB0aGlzX3BsYXllcigpIGRlciBTcGllbGVyCit6dXJ1ZWNrZ2VnZWJlbi4gSGllcmJlaSBpc3QgamVkb2NoIHp1IGJlYWNodGVuLCBkYXNzIG1hbiBpbW1lciBzY2hhdWVuIHNvbGx0ZSwKK29iIHRoaXNfcGxheWVyKCkgYXVjaCB0YXRzYWVjaGxpY2ggZWluIE9iamVrdCB6dXJ1ZWNrbGllZmVydC4gRGllcyBpc3QKK3dpY2h0aWcsIGRhIGRhcyBpbml0KCkgKG9kZXIgYXVjaCBhbmRlcmUgRnVua3Rpb25lbikgZHVyY2ggR2VnZW5zdGFlbmRlLCB3aWUKK2RlbiBCdW1lcmFuZyBhdXNnZWxvZXN0IHdlcmRlbiBrb2VubmVuLiBJbiBkaWVzZW0gRmFsbCBzdGVodCBpbiB0aGlzX3BsYXllcigpCit1ZWJsaWNoZXJ3ZWlzZSBrZWluIE9iamVrdC4gRGllIFNpY2hlcmhlaXRzYWJmcmFnZSBzb2xsdGUgYWxzbyB3aWUgZm9sZ3QKK2F1c3NlaGVuOgorCisgICAgb2JqZWN0IHNwaWVsZXI7CisgICAgc3BpZWxlciA9IHRoaXNfcGxheWVyKCk7CisgICAgaWYgKHNwaWVsZXIpIC8vIEVpbiBMZWJld2VzZW4/CisgICAgeworICAgICAgLi4uCisgICAgfQorICAgIC8vIGVsc2U6IERpZSBGYWxsZSBuaWNodCBhdXNsb2VzZW4sIGRhIGtlaW4gTGViZXdlc2VuLgorCisKK0thcGl0ZWwgMS4yIFdlciBzb2xsIGRpZSBUb2Rlc2ZhbGxlIG5pY2h0IGF1c2xvZXNlbj8KKworT2Z0IGtvbW10IGVzIHZvciwgZGFzcyBlaW5lIHNjaG9lbmUgVG9kZXNmYWxsZSB2b24gR290dCB1bmQgZGVyIFdlbHQKK2F1c2dlbG9lc3Qgd2lyZC4gTm9ybWFsZXJ3ZWlzZSBtb2VjaHRlIG1hbiBhYmVyIG5pY2h0LCBkYXNzICJHb3R0IiBvZGVyIGFuZGVyZQorYmVzb25kZXJlIFBlcnNvbmVuZ3J1cHBlbiBkaWVzZSBGYWxsZSBhdXNsb2VzZW4uIEluIGRlbiBmb2xnZW5kZW4KK1VudGVya2FwaXRlbG4gd2VyZGVuIEFiZnJhZ2VuIGdlemVpZ3QsIHVtIFBlcnNvbmVuZ3J1cHBlbiBhdXN6dXNjaGxpZXNzZW4uCisKKworS2FwaXRlbCAxLjIuMSBUb2Rlc2ZhbGxlbiwgZGllIG5pY2h0IGF1ZiBHZWlzdGVyIHJlYWdpZXJlbi4KKworVWVibGljaGVyd2Vpc2Ugc29sbGVuIFRvZGVzZmFsbGVuIGJlaSBkZW4gQXVzbG9lc2VybiBTY2hhZGVuIHZlcnVyc2FjaGVuLiBCZWkKK0dlaXN0ZXJuIGxhZXVmdCBkaWVzIGplZG9jaCBpbnMgTGVlcmUuIE1hbiBrb2VubnRlIG51biBhdWYgZGllIElkZWUga29tbWVuLAorYWx0ZXJuYXRpdiBhdWYgR2Vpc3RlciB6dSByZWFnaWVyZW4uCisKKworS2FwaXRlbCAxLjIuMS4xIE5pY2h0IGF1ZiBHZWlzdGVyIHJlYWdpZXJlbi4KKworQW5nZW5vbW1lbiwgbWFuIGhhdCBlaW5lbiBTcGllbGVyIChzaWVoZSBvYmVuKSwgZGVyIGltIEJlZ3JpZmYgaXN0LCBkaWUgRmFsbGUKK2F1c3p1bG9lc2VuLiBNYW4gc29sbHRlIG51biBwcnVlZmVuLCBvYiBlciBlaW4gR2Vpc3QgaXN0LiBGYWxscyBlciBrZWluIEdlaXN0Citpc3QsIGthbm4gbWFuIHdpZSBnZXd1ZW5zY2h0IChUb2Rlc2ZhbGxlKSByZWFnaWVyZW4uIEZhbGxzIG5pY2h0LCBzb2xsdGUgbWFuCitlaW5lIHBhc3NlbmRlIE1lbGR1bmcgYXVzZ2ViZW4uIFouQi4gIkFscyBHZWlzdCBoYXN0IER1IG5pY2h0IGRpZSBub3R3ZW5kaWdlCitLcmFmdCwgZGllc2VuIEtub3BmIHp1IGRydWVja2VuLiIgRGllIHRlY2huaXNjaGUgQWJmcmFnZSwgb2IgZWluIFNwaWVsZXIgZWluCitHZWlzdCBpc3QsIHNpZWh0IHdpZSBmb2xndCBhdXMuCisKKyAgICBpZiAoIXNwaWVsZXItPlF1ZXJ5UHJvcChQX0dIT1NUKSkKKyAgICB7CisgICAgICAgIC8vIGlzdCBfa2Vpbl8gR2Vpc3QsIGFsc28gVG9kZXNmYWxsZS4KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gQWx0ZXJuYXRpdmVyIFRleHQsIGRhIEdlaXN0LgorICAgIH0KKworCitLYXBpdGVsIDEuMi4xLjIgR2Vpc3RlciBlbnRnZWlzdGVybi4KKworRGEgYXVzc2NobGllc3NsaWNoIGRpZSBSYXNzZW5zdGFydHJhZXVtZSBlbnRnZWlzdGVybiBzb2xsZW4sIHd1cmRlIGRpZXNlcgorUHVua3QgaGVyYXVzZ2Vub21tZW4uIEFsc286IEVzIGlzdCB1bmVyd3VlbnNjaHQsIEdlaXN0ZXIgenUgZW50Z2Vpc3Rlcm4sIHVtCitlaW5lIFRvZGVzZmFsbGUga29ycmVrdCBhdXN6dWxvZXNlbi4KKworCitLYXBpdGVsIDEuMi4xLjMgQWx0ZXJuYXRpdmUgZnVlciBHZWlzdGVyLgorCitSb2xsZW5zcGllbHRlY2huaXNjaCBnZXNlaGVuIG1hY2h0IGVzIGluIGRlbiBhbGxlcndlbmlnc3RlbiBGYWVsbGVuIFNpbm4sCithbHRlcm5hdGl2IGF1ZiBlaW5lbiBHZWlzdCB6dSByZWFnaWVyZW4uIERlciBWb2xsc3RhZW5kaWdrZWl0IGhhbGJlciBzZWkgZGllc2UKK0xvZXN1bmcgdHJvdHpkZW0gZXJ3YWVobnQuIEVpbiBQcm9ncmFtbWJlaXNwaWVsIHNvbGx0ZSBvaG5lIGdyb3NzZSBNdWVoZSBkdXJjaAorZGllIHNjaG9uIHZvcmhhbmRlbmVuIEJlaXNwaWVsZSBlcnN0ZWxsdCB3ZXJkZW4ga29lbm5lbi4KKworCitLYXBpdGVsIDEuMi4yIEdhZXN0ZSB1bmQga2xlaW5lIFNwaWVsZXIuCisKK1JvbGxlbnNwaWVsdGVjaG5pc2NoIG1hY2h0IGVzIG9mdCBrZWluZW4gU2lubiwgYXVmIEdhZXN0ZSBvZGVyIGtsZWluZSBTcGllbGVyCithbmRlcnMgenUgcmVhZ2llcmVuLCBhbHMgYXVmICJkZW4gUmVzdCIuIE1vZWNodGUgbWFuIGplZG9jaCBlaW5lbiBiZXNvbmRlcmVuCitTY2h1dHogZnVlciBrbGVpbmUgU3BpZWxlciBlaW5iYXVlbiAoIkR1IGhhc3QgenUgZ3Jvc3NlIEFuZ3N0LCBkaWVzZW4gZ3Jvc3NlbiwKK3JvdGVuIEtub3BmIHp1IGRydWVja2VuLiIpIG9kZXIgbW9lY2h0ZSBtYW4gR2FzdC1TdGVyYmUtVGVzdGVybiBkZW4gSGFobiAKK3p1ZHJlaGVuIChkaWUgV2VpY2hlaWVyISksIHNvIHNpbmQgZm9sZ2VuZGUgQWJmcmFnZW4gdW50ZXIgVW1zdGFlbmRlbgorc2lubnZvbGwuCisKKyAgLy8gR2FzdD8KKyAgaWYgKHNwaWVsZXItPlF1ZXJ5R3Vlc3QoKSkKKyAgeworICAgICAgLy8gSXN0IGVpbiBHYXN0Li4uCisgIH0KKyAgZWxzZQorICB7CisgICAgICAvLyBUb2Rlc2ZhbGxlLiBLZWluIEdhc3QuCisgIH0KKyAgCisgIC8vIEtsZWluZXIgU3BpZWxlcj8KKyAgLy8gSW4gZGllc2VtIEJlaXNwaWVsIEFiZnJhZ2UgZGVzIFNwaWVsZXJsZXZlbHMuCisgIGlmIChzcGllbGVyLT5RdWVyeVByb3AoUF9MRVZFTCkgPCAxMCkKKyAgeworICAgICAgLy8gU3BpZWxlcmxldmVsIDwgMTAgaGFiZW4genV2aWVsIEFuZ3N0LgorICB9CisgIGVsc2UKKyAgeworICAgICAgLy8gU3BpZWxlcmxldmVsID49IDEwIGtvZW5uZW4gaGllciBydWhpZyBkaWUgVG9kZXNmYWxsZSBhdXNsb2VzZW4uCisgIH0KKworCitLYXBpdGVsIDEuMi4zIE1hZ2llcgorCitVZWJsaWNoZXJ3ZWlzZSBzaW5kIE1hZ2llciB1bnN0ZXJibGljaCB1bmQgc29sbCh0KWVuIGF1Y2ggbmljaHQKKyh2ZXJzZWhlbnRsaWNoKSBUb2Rlc2ZhbGxlbiBhdXNsb2VzZW4uIERpZXMgaXN0IHZvciBhbGxlbSBkYW5uIGRlciBGYWxsLCB3ZW5uCisienVmYWVsbGlnIiBpbSBnbGVpY2hlbiBSYXVtIHN0ZWhlbmRlIFNwaWVsZXIgTWVsZHVuZ2VuIGJla29tbWVuIHd1ZXJkZW4gdW5kCitkYWR1cmNoIGdld2FybnQgd2VyZGVuLiBEaWUgdGVjaG5pc2NoZSBVbXNldHp1bmcsIGRhc3MgTWFnaWVyIFRvZGVzZmFsbGVuCituaWNodCBhdXNsb2VzZW4sIHNpZWh0IHdpZSBmb2xndCBhdXMuIERpZSBBYmZyYWdlIGJlcnVlY2tzaWNodGlndAorIm1zY2hhdSBhdXMiLiBEYXMgaGVpc3N0LCBNYWdpZXIga29lbm5lbiBzdGVyYmVuLCB3ZW5uIHNpZSBtc2NoYXUgYXVzIGdlbWFjaHQKK2hhYmVuLgorCisgICAgI2luY2x1ZGUgPHdpemxldmVscy5oPgorCisgICAgaWYoSVNfTEVBUk5FUihzcGllbGVyKSAmJiBzcGllbGVyLT5RdWVyeVByb3AoUF9XQU5UU19UT19MRUFSTikpCisgICAgeworICAgICAgLy8gTWFnaWVyOiBNYW4gc29sbCBpaG0gbWl0dGVpbGVuLCBkYXNzIGVyIGRpZXNlIEFrdGlvbiBhbHMgTWFnaWVyIG5pY2h0CisgICAgICAvLyB0dW4gZGFyZi4KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8vIEtlaW4gTWFnaWVyLiA9PiBUb2Rlc2ZhbGxlLgorICAgIH0KKworCitLYXBpdGVsIDEuMyBXaWNodGlnZSBQdW5rdGUgZWluZXIgbmljaHQgc2lubmZyZWllbiBUb2Rlc2ZhbGxlLgorCitFaW5lIFRvZGVzZmFsbGUgaXN0LCB3aWUgaW4gS2FwaXRlbCAyIGdlemVpZ3QsIGVpZ2VudGxpY2ggZWluZSBlaW5mYWNoZSBTYWNoZS4KK0tvbWJpbmllcnQgbWl0IGRlbiBzY2hvbiBnZXplaXRndGVuIFNpY2hlcmhlaXRzYWJmcmFnZW4gaGF0IG1hbiB1ZWJsaWNoZXJ3ZWlzZQorZWluIGd1ZWx0aWdlcyBPcGZlci4gQWxsZ2VtZWluZSBEaW5nZSwgd2llIGJlaXNwaWVsc3dlaXNlICJEYXMgT3BmZXIgc29sbHRlCitlaW4gZW52aXJvbm1lbnQgaGFiZW4iIHdlcmRlbiBoaWVyIHVlYmVyZ2FuZ2VuIHVuZCBudXIgZGllIHdlc2VudGxpY2hlbiBEaW5nZQorZ2VuYW5udCwgZGllIGJlaW0gcG90ZW50aWVsbGVuIFRvZXRlbiBlaW5lcyBTcGllbGVycyB2b24gQmVsYW5nIHNpbmQuCisKKworS2FwaXRlbCAxLjMuMSBXbyBpc3QgZGVyIFNwaWVsZXI/CisKK0dhbnogd2ljaHRpZyBiZWkgVG9kZXNmYWxsZW4gaXN0IGRpZSBGcmFnZSwgd28gc2ljaCBkZXIgU3BpZWxlciBiZWZpbmRldC4KK1dpcmQgZWluZSBUb2Rlc2ZhbGxlIGluIGluaXQoKSBhdXNnZWxvZXN0LCBkYW5uIGJlZmluZGV0IHNpY2ggZGVyIFNwaWVsZXIKK3NjaG9uIGluIGRlbSBlbnRzcHJlY2hlbmRlbiBSYXVtLCBkZXNzZW4gaW5pdCgpIG51biBhdXNnZWZ1ZWhydCB3aXJkLiBEYXMKK2JlZGV1dGV0LCB3ZW5uIGRlciBTcGllbGVyIHN0aXJidCwgc2luZCBzZWluZSBTYWNoZW4genVuYWVjaHN0IGVpbm1hbCBpbiBkZW0KK2JldHJlZmZlbmRlbiBSYXVtLiBJbiBzZWx0ZW5lbiBGYWVsbGVuIHNwaWVsdCBlcyB3aXJrbGljaCBlaW5lIFJvbGxlLCB3byBzaWNoCitkZXIgU3BpZWxlciBiZWZpbmRldCB1bmQgZXIgaGF0IGVpZ2VudGxpY2ggaW1tZXIgZWluIGVudmlyb25tZW50LCBpbiBkYXMgc2VpbmUKK0xlaWNoZSBkYW5uIGtvbW10LiBEZW5ub2NoIHNvbGx0ZSBtYW4gYmVpIFRvZGVzZmFsbGVuIHRlc3Rlbiwgd28gc2ljaCBkZXIKK1NwaWVsZXIgYmVmaW5kZXQuIFdlbm4gZGVyIFNwaWVsZXIgZGllIEZhbGxlIGltIFZvcnJhdXMgb2RlciB2b24gd29hbmRlcnMKK2F1c2xvZXNlbiBrYW5uLCBkYW5uIG1hY2h0IGVzIG5pY2h0IGltbWVyIFNpbm4sIGRpZSBGYWxsZSB0YXRzYWVjaGxpY2gKK2F1c3p1bG9lc2VuIG9kZXIgZGVtIFNwaWVsZXIgZGVuIEVmZmVrdCAienV6dW11dGVuIi4KK0VpbmUgZWluZmFjaGUgQWJmcmFnZSwgb2Igc2ljaCBkZXIgU3BpZWxlciBpbSBnbGVpY2hlbiBSYXVtIGJlZmluZGV0LCBzaWVodCBzbworYXVzOgorCisgICAgaWYgKGVudmlyb25tZW50KHNwaWVsZXIpICYmIChlbnZpcm9ubWVudChzcGllbGVyKSA9PSB0aGlzX29iamVjdCgpKSkKKyAgICB7CisgICAgICAgIC8vIFNwaWVsZXIgaGF0IGVpbiBlbnZpcm9ubWVudCB1bmQgZGFzIGVudmlyb25tZW50IGlzdCBkaWVzZXIgUmF1bS4KKyAgICB9CisgICAgCisKK0thcGl0ZWwgMS4zLjIgV2VyIHRvZXRldCBkZW4gU3BpZWxlcj8KKworVWVibGljaGVyd2Vpc2UgdG9ldGV0IG1hbiBlaW5lbiBTcGllbGVyIG1pdCBkZW4gaW4gS2FwaXRlbCAyIGdlbmFubnRlbgorTW9lZ2xpY2hrZWl0ZW4uIEluIGRpZXNlbiBNb2VnbGljaGtlaXRlbiBpc3QgZGFzIHRvZXRlbmRlIE9iamVrdCBkZXIgUmF1bS4KK0RhIGFiZXIgbnVuIGRlciBSYXVtIGtlaW5lbiBOYW1lbiBoYXQsIG11c3MgbWFuIGRpZXNlbSBSYXVtIGVpbmlnZSBQcm9wZXJ0aWVzCitzZXR6ZW4sIGRpZSB1ZWJsaWNoZXJ3ZWlzZSBlcnN0IGVpbm1hbCBudXIgTlBDcyBoYWJlbi4gRGllIFByb3BlcnRpZXMgcmVnZWxuLAorIndlciIgaW4gS2FtcGZtZWxkdW5nZW4sIEFuZ3JpZmZlbiB1bmQgVG9kZXNtZWxkdW5nZW4gYWxzIEFuZ3JlaWZlciBvZGVyCitLaWxsZXIgc3RlaHQuIFNldHp0IG1hbiBkaWVzZSBXZXJ0ZSBkaXJla3Qgdm9yIGRlciBBdXNmdWVocnVuZyBlaW5lcgorVG9kZXNmYWxsZSwgZGFubiBrYW5uIG1hbiBtZWhyZXJlIFRvZGVzZmFsbGVuIGluIGVpbmVtIFJhdW0gbWl0IHZlcnNjaGllZGVuZW4KK01lbGR1bmdlbiB2ZXJzZWhlbi4KKworICAgIFNldFByb3AoUF9OQU1FLCAiRWluIGdsZWlzc2VuZGVyIEZldWVyYmFsbCIpOyAvLyBEZXIgQW5ncmVpZmVyLU5hbWUKKyAgICBTZXRQcm9wKFBfS0lMTF9OQU1FLCAiRWluIGdsZWlzc2VuZGVyIEZldWVyYmFsbCIpOworICAgICAgICAvLyBOYW1lIGZ1ZXIgZGVuIFRvZGVza2FuYWwuCisKKworS2FwaXRlbCAxLjQgR2ltbWlja3MKKworRGVyIFZvbGxzdGFlbmRpZ2tlaXQgaGFsYmVyIHNvbGwgbm9jaCBlcndhZWhudCB3ZXJkZW4sIGRhc3MgbWFuIGluIGRlcgorUHJvcGVydHkgUF9FTkVNWV9ERUFUSF9TRVFVRU5DRSBkYXMgRmlsZSBlaW5lciAoZWlnZW5lbikgVG9kZXNzZXF1ZW56IGFibGVnZW4KK2thbm4uCisKKworS2FwaXRlbCAyIFRlY2huaXNjaGUgVW1zZXR6dW5nIHZvbiBUb2Rlc2ZhbGxlbi4KKworRGVuIFRvZCBkdXJjaCBvZGVyIGRlbiBBbmdyaWZmIGF1ZiBlaW5lbiBTcGllbGVyIG1pdHRlbHMgZWluZXIgVG9kZXNmYWxsZSBrYW5uCittYW4gYXVmIHZlcnNjaGllZGVuZSBXZWlzZSBiZXdlcmtzdGVsbGlnZW4uIERpZSB3aWNodGlnc3RlbiBNb2VnbGljaGtlaXRlbgord2VyZGVuIGluIGRlbiBmb2xnZW5kZW4gVW50ZXJrYXBpdGVsbiBrdXJ6IGVybGFldXRlcnQuIEVzIHdpcmQgYXVzc2VyZGVtIGF1ZgorZWluaWdlIHRlY2huaXNjaGUgRmVpbmhlaXRlbiBlaW5nZWdhbmdlbiwgZGllIHp1IGJlYWNodGVuIHNpbmQuCisKKworS2FwaXRlbCAyLjEgVG9kIGR1cmNoIGRpZSgpCisKK0RpZSBlaW5mYWNoc3RlIE1vZWdsaWNoa2VpdCwgZWluZW4gU3BpZWxlciBzaWNoZXIgc3RlcmJlbiB6dSBsYXNzZW4sIGlzdCBkZXIKK0F1ZnJ1ZiB2b24gZGllKCkuIERpZSBzcGFldGVyIGdlbmFubnRlbiBNb2VnbGljaGtlaXRlbiBtaXQgQXVzbmFobWUgZGVzCitGYWtldG9kcyBiZXdpcmtlbiBsZXR6dGVuZGxpY2ggYXVjaCBlaW5lbiBBdWZydWYgdm9uIGRpZSgpLCBzb2xsdGUgZGVyIFNwaWVsZXIKK3NpY2ggbmljaHQgYXVzcmVpY2hlbmQgZGFnZWdlbiBnZXNjaHVldHp0IGhhYmVuLiBCZWkgZGVtIGRpcmVrdGVuIEF1ZnJ1ZiBrYW5uCitzaWNoIGRlciBTcGllbGVyIG5pY2h0IGRhZ2VnZW4gd2VocmVuLiAoQXVzbmFobWU6IEdlaXN0IHNlaW4sIHNpZWhlIG9iZW4uKQorRGllIHRlY2huaXNjaGUgVW1zZXR6dW5nIHNpZWh0IHdpZSBmb2xndCBhdXMuIEV2ZW50dWVsbGUgUGFyYW1ldGVyIGZ1ZXIgZGllKCkKK3NpbmQgZGVyIG1hbnBhZ2UgZnVlciBkaWUoKSB6dSBlbnRuZWhtZW4uCisKKyAgICBzcGllbGVyLT5kaWUoKTsgLy8gSmV0enQgaXN0IGRlciBTcGllbGVyIHRvdC4KKworCitLYXBpdGVsIDIuMiBUb2Rlc2ZhbGxlIG1pdCBkb19kYW1hZ2UoKQorCitEaWUgendlaXRlIEZvcm0gZGVyIFRvZGVzZmFsbGUgaXN0IG5pY2h0IGdhbnogc28gYWdncmVzc2l2LCB3aWUgZGllIGVyc3RlLgorSGllciB3aXJkIGRlbSBTcGllbGVyIGVpbmUgZmVzdGUgb2RlciB6dWZhZWxsaWdlIFphaGwgYW4gU2NoYWRlbnNwdW5rdGVuIAorenVnZWZ1ZWd0LiBEZXIgZXJsaXR0ZW5lIFNjaGFkZW4gaXN0IGRhYmVpIG5pY2h0IHZvbiBSdWVzdHVuZyBvZGVyIHNvbnN0aWdlbQorU2NodXR6IGFiaGFlbmdpZywgc29uZGVybiBkZXIgU2NoYWRlbiBiZXRyYWVndCBkZW0gdWViZXJnZWJlbmVuIFdlcnQuIElzdCBkZXIKK3VlYmVyZ2ViZW5lIFdlcnQgaG9laGVyIGFscyBkaWUgWmFobCBkZXIgTGViZW5zcHVua3RlIGRlcyBTcGllbGVycywgc28gc3RpcmJ0CitkZXIgU3BpZWxlci4gTmFjaGxlc2VuIGthbm4gbWFuIGRpZXMgaW4gZGVyIG1hbnBhZ2UgenUgZG9fZGFtYWdlKCkuCitEaWVzZSBGb3JtIGRlciBUb2Rlc2ZhbGxlIGlzdCB2ZXJtdXRsaWNoIGRpZSBhbSBoYWV1Zmlnc3RlbiB2ZXJicmVpdGV0ZSwgZGEKK2RlciBNYWdpZXIgYW0gZWluZmFjaHN0ZW4gZGllIEtvbnNlcXVlbnplbiB1ZWJlcmJsaWNrZW4ga2Fubiwgb2huZSBkZW4gU3BpZWxlcgorendpbmdlbmQgenUgdG9ldGVuLiBXaWNodGlnIGJlaSBkaWVzZXIgVW1zZXR6dW5nIGlzdCwgZGFzcyBkZXIgU3BpZWxlciBrZWluZQorQW5ncmlmZnNtZWxkdW5nIG9kZXIgZGVyZ2xlaWNoZW4gc2llaHQuIEVyIGJla29tbXQgaG9lY2hzdGVuZmFsbHMgbWl0LCBkYXNzIGVyCit1ZWJlcmhhdXB0IFNjaGFkZW4gZXJoYWx0ZW4gaGF0LiBEYWhlciBzb2xsdGUgdm9yIGRlbSBadWZ1ZWdlbiBkZXMgU2NoYWRlbnMKK2VpbmUgTWVsZHVuZyBhdXNnZWdlYmVuIHdlcmRlbiwgZGllIGRlbSBTcGllbGVyIGFuemVpZ3QsIHdlc2hhbGIgZXIgU2NoYWRlbgorYmVrYW0uIChCc3AuICJFaW4gRmV1ZXJiYWxsIHJhc3QgYXVmIERpY2ggenUgdW5kIHRyaWZmdCBEaWNoLiIpCitEaWUgdGVjaG5pc2NoZSBVbXNldHp1bmcgc2llaHQgd2llIGZvbGd0IGF1czoKKworICAgIHRlbGxfb2JqZWN0KHNwaWVsZXIsICJFaW4gRmV1ZXJiYWxsIHRyaWZmdCBEaWNoIHZvbiBoaW50ZW4uXG4iKTsKKyAgICBzcGllbGVyLT5kb19kYW1hZ2UoMTAsIHRoaXNfb2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNwaWVsZXIgZXJoYWVsdCBnZW5hdSAxMCBTY2hhZGVuc3B1bmt0ZSB1bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGlyYnQsIHdlbm4gZXIgZGFkdXJjaCB1bnRlciAwIEhQIGtvbW10LgorCitLYXBpdGVsIDIuMi4xIEFuZ2VwYXNzdGUgVG9kZXNmYWxsZSBtaXQgZG9fZGFtYWdlKCkKKworTW9lY2h0ZSBtYW4sIGRhc3MgZGllIFN0YWVya2UgZGVyIFRvZGVzZmFsbGUgYWJoYWVuZ2lnIHZvbSBTcGllbGVyIGlzdCwgZGFubgora2FubiBtYW4gZGVuIGluIGRvX2RhbWFnZSgpIHVlYmVyZ2ViZW5lbiBTY2hhZGVuIGFiaGFlbmdpZyB2b20gU3BpZWxlciBtYWNoZW4uCitEaWVzIGlzdCBpbiBHZWJpZXRlbiBzaW5udm9sbCwgaW4gZGVuZW4gQW5mYWVuZ2VyIHVuZCBncm9lc3NlcmUgU3BpZWxlcgorZ2xlaWNoZXJtYXNzZW4gZ2Vmb3JkZXJ0IHNlaW4gc29sbGVuICh6LkIuIFF1ZXN0KS4gRm9sZ2VuZGVzIEJlaXNwaWVsIHplaWd0LAord2llIG1hbiBlaW5lIFRvZGVzZmFsbGUgbWFjaHQsIGRpZSBkZW0gU3BpZWxlciBldHdhIDEvNCBzZWluZXIgbWF4aW1hbGVuIEhQCithYnppZWh0LgorICAgIAorICAgIHNwaWVsZXItPmRvX2RhbWFnZShzcGllbGVyLT5RdWVyeVByb3AoUF9NQVhfSFApIC8gNCk7CisKKworS2FwaXRlbCAyLjMgVG9kZXNmYWxsZSBtaXQgcmVkdWNlX2hpdF9wb2ludAorCitNaXR0ZWxzIHJlZHVjZV9oaXRfcG9pbnQoKSBpc3QgZXMgbW9lZ2xpY2gsIGVpbmUgbmljaHQgdG9lZGxpY2hlICJUb2RlcyItRmFsbGUKK3p1IGVudHdpY2tlbG4uIERpZXMga2FubiBnZW51dHp0IHdlcmRlbiwgd2VubiBtYW4gZWluZSBlaWdlbnRsaWNoIHRvZWRsaWNoZQorRmFsbGUgbWFjaGVuIHdpbGwsIGRpZSBBdXN3aXJrdW5nZW4gZWluZXMgVG9kZXMgZGVtIFNwaWVsZXIgZ2VnZW51ZWJlciBhYmVyIHp1CithZ2dyZXNzaXYgd2FlcmVuLiBIaWVyYmVpIGlzdCB6dSBiZWFjaHRlbiwgZGFzcyBlaW4gbmVnYXRpdmVyIFdlcnQgZWluZQorSGVpbHVuZyBiZXdpcmtlbiB3dWVyZGUuIERhaGVyIGlzdCB6dXZvciBlaW5lIFNpY2hlcmhlaXRzYWJmcmFnZSB6dSBtYWNoZW4uCitXaWUgYmVpIGRvX2RhbWFnZSgpIGlzdCBlaW5lIE1lbGR1bmcgYXVzenVnZWJlbiwgZGEgcmVkdWNlX2hpdF9wb2ludCBlaW5lCitzb2xjaGUgbmljaHQgZ2VuZXJpZXJ0LiBBbGxlcyB6dXNhbW1lbiBzYWVoZSBkZXIgUGFydCB3aWUgZm9sZ3QgYXVzOgorCisgICAgaW50IHNjaGFkZW47CisgICAgdGVsbF9vYmplY3Qoc3BpZWxlciwgIkVpbiBGZXVlcmJhbGwgdHJpZmZ0IERpY2guXG4iKTsKKyAgICAvLyBIaWVyIGRlbiBTY2hhZGVuIGJlcmVjaG5lbjsKKyAgICAvLyBaLkIuIHNjaGFkZW4gPSAzOworICAgIGlmIChzY2hhZGVuIDwgMSkgc2NoYWRlbiA9IDE7IC8vIEVzIHNvbGwgbWluZGVzdGVucyAxIFNjaGFkZW5zcHVua3QgZ2ViZW4hCisgICAgc3BpZWxlci0+cmVkdWNlX2hpdF9wb2ludChzY2hhZGVuKTsKKworCitLYXBpdGVsIDIuNCBGYWtldG9kZQorCitGYWtldG9kZSBzaW5kIGtlaW5lIFRvZGUgaW0gZWlnZW50bGljaGVuIFNpbm4sIGRhIGRlciBTcGllbGVyIHZvbiBkZW4KK21laXN0ZW4gbmVnYXRpdmVuIEF1c3dpcmt1bmdlbiB2ZXJzY2hvbnQgYmxlaWJ0LiBFaW4gRmFrZXRvZCBpc3QgaW0gR3J1bmRlCitrZWluZSBrb21wbGl6aWVydGUgU2FjaGUgdW5kIGVpZ25ldCBzaWNoIGhlcnZvcnJhZ2VuZCBmdWVyIEFuZmFlbmdlcmdlYmlldGUuCitWZXJzY2hpZWRlbmVuIEF1c3ByYWVndW5nZW4gKEJzcC4gR2lidCBlcyBlaW5lIExlaWNoZSBtaXQgZGVyIEF1c3J1ZXN0dW5nIGRlcworU3BpZWxlcnMgb2RlciBiZWhhZWx0IGVyIGRpZSBBdXNydWVzdHVuZz8pIGdlbWVpbiBpc3QgZGllIFRhdHNhY2hlLCBkYXNzIGRlcgorU3BpZWxlciBhdWdlbnNjaGVpbmxpY2ggZ2VzdG9yYmVuIGlzdCwgamVkb2NoIGtlaW4gZGllKCkgYXVmZ2VydWZlbiB3aXJkLiBFcword2VyZGVuIHRvZGVzYmVkaW5ndCBhbHNvIGtlaW5lIEF0dHJpYnV0ZSBhYmdlem9nZW4sIGRpZSBFcmZhaHJ1bmdzcHVua3RlCitibGVpYmVuIHVuYW5nZXRhc3RldCB1c3csIHVzZi4KK0RpZSB0ZWNobmlzY2hlIFVtc2V0enVuZyBzaWVodCB3aWUgZm9sZ3QgYXVzLiBEYWJlaSBpc3QgenUgYmVhY2h0ZW4sIGRhc3MgZGVyCitTcGllbGVyIEdlaXN0IHdlcmRlbiBtdXNzLiBadXZvciBzb2xsdGUgd2llIGJlaSBkZW4gdm9yaGVyZ2VoZW5kZW4gTWV0aG9kZW4KK2RlciBLaWxsLU5hbWUgZXRjLiBnZXNldHp0IHdlcmRlbi4KKworICAgIHNwaWVsZXItPlNldFByb3AoUF9HSE9TVCwxKTsKKyAgICBjbG9uZV9vYmplY3QoIi9yb29tL2RlYXRoL2RlYXRoX21hcmsiKS0+bW92ZShzcGllbGVyKTsKKworCitLYXBpdGVsIDIuNC4xIEJlZGluZ3RlIEZha2V0b2RlLgorCitNYW4ga2FubiBkaWUgVGVjaG5payB2b24gS2FwaXRlbCAyLjMgbWl0IGRlbiBGYWtldG9kZW4ga29tYmluaWVyZW4sIGluZGVtIG1hbgordGVzdGV0LCBvYiBkZXIgU3BpZWxlciBhdWYgb2RlciB1bnRlciAwIExlYmVuc3B1bmt0ZSBrb21tZW4gd3VlcmRlLCB3ZW5uIG1hbgorYW5zdGF0dCByZWR1Y2VfaGl0cG9pbnQgZG9fZGFtYWdlKCkgbWFjaGVuIHd1ZXJkZSB1bmQgZGFubiB6dXNhZXR6bGljaCB6dW0KK0FiemllaGVuIGRlciBMUCBub2NoIGVpbmVuIEZha2V0b2QgYXVzZnVlaHJ0LiBEYWJlaSBzaW5kIHp3ZWkgRGluZ2UgenUKK2JlYWNodGVuOgorRXJzdGVucyBzb2xsdGUgbWFuIGtlaW5lIHp3ZWkgTWVsZHVuZ2VuIGF1c2dlYmVuLCBhbHNvIGRlciBTcGllbGVyIHNvbGx0ZQora2VpbmUgendlaSBGZXVlcmJhZWxsZSBhdWYgc2ljaCB6dWZsaWVnZW4gc2VoZW4sIG9id29obCBudXIgZWluZXIgZGEgaXN0LgorWndlaXRlbnMgc29sbHRlIG1hbiBuaWNodCB2ZXJnZXNzZW4sIGRlbSBTcGllbGVyIGRlbm5vY2ggZGllIExQIGFienV6aWVoZW4sCit3ZWlsIGRlciBTcGllbGVyIGFuc29uc3RlbiBuYWNoIGRlbSBFbnRnZWlzdGVybiBhbnN0YXR0IDEgTFAgbm9jaCBzb3ZpZWxlIGhhdCwKK3dpZSB2b3IgZGVtIEZldWVyYmFsbC1BbmdyaWZmLgorRGllIHRlY2huaXNjaGUgVW1zZXR6dW5nIGRpZXNlciBLb21iaW5hdGlvbiB3aXJkIGFuIGRpZXNlciBTdGVsbGUgbmljaHQgbmFlaGVyCitlcmxhZXV0ZXJ0LCBkYSBkYXMgVm9yZ2VoZW4gYXVzIGRlbiB2b3JpZ2VuIEthcGl0ZWxuIGtsYXIgaXN0LgorCisKK0thcGl0ZWwgMi41IEFuZ3JpZmYgbWl0dGVscyBEZWZlbmQoKQorCitFaW5lIHJlYWxpc3Rpc2NoZSwgd2VubiBhdWNoIHRlaWx3ZWlzZSBoZWlrbGUgTW9lZ2xpY2hrZWl0IGZ1ZXIgZWluZQorVG9kZXNmYWxsZSBpc3QgZGVyIEF1ZnJ1ZiBkZXIgRGVmZW5kKCktRnVua3Rpb24gZGVzIFNwaWVsZXJzLiBEZXIgVm9ydGVpbAordm9uIERlZmVuZCBpc3QsIGRhc3MgbWFuIHVudGVyIEFuZ2FiZSBkZXIga29ycmVrdGVuIFBhcmFtZXRlciBkZW4gU2NodXR6IGRlcgorUnVlc3R1bmdlbiBlaW5lcyBTcGllbGVycyBvZGVyIGF1Y2ggZGllIEdpbGRlbmZhZWhpZ2tlaXRlbiBiZXJ1ZWNrc2ljaHRpZ3QKK3dlcmRlbi4gRGFyYXVzIGZvbGd0LCBkYXNzIGRlciBhbHMgQmVpc3BpZWwgdmVyd2VuZGV0ZSBGZXVlcmJhbGwgdm9uIGVpbmVtIHZvcgorRmV1ZXIgc2NodWV0emVuZGVuIE9iamVrdCBhYmdlc2Nod2FlY2h0IHd1ZXJkZS4gQW53ZW5kdW5nc3RlY2huaXNjaCBnaWJ0IGVzCitlcnN0IGVpbm1hbCBrZWluZSBQcm9ibGVtZSwgc29mZXJuIGVpbmlnZSB3aWNodGlnZSBQdW5rdGUgYmVhY2h0ZXQgd2VyZGVuLCBhdWYKK2RpZSBoaWVyIG51biBlaW5nZWdhbmdlbiB3aXJkLiBFaW56aWdlciBOYWNodGVpbCBiZXN0ZWh0IG51ciBpbiBkZXIgbWFuZ2VsbmRlbgorRXJmYWhydW5nIGRlciBlaW56dXRyYWdlbmRlbiBTY2hhZGVuc3dlcnRlLCBkYSBkaWVzZSBuaWNodCAxOjEgYW4gZGllCitTY2hhZGVuc3B1bmt0ZSBnZWtvcHBlbHQgc2luZCwgZGllIGFuIGRlbiBTcGllbGVyIHdlaXRlcmdlcmVpY2h0IHdlcmRlbi4KK0RpZSB0ZWNobmlzY2hlIFVtc2V0enVuZyBmdWVyIGRlbiBBbmdyaWZmIGVpbmVzIFNwaWVsZXJzIGR1cmNoIGVpbmUgVG9kZXNmYWxsZQordWViZXIgRGVmZW5kIHNpZWh0IHdpZSBmb2xndCBhdXM6CisKKyAgICAjaW5jbHVkZSA8bmV3X3NraWxscy5oPgorCisgICAgaW50IHNjaGFkZW47CisgICAgc2NoYWRlbiA9IDUwMCtyYW5kb20oNTAwKTsgLy8gRGllc2UgV2VydGUgbWFjaGVuIHUuVS4gdmllbCBTY2hhZGVuLgorCisgICAgc3BpZWxlci0+RGVmZW5kKAorICAgICAgICAxMDAsCisgICAgICAgIERUX0ZJUkUsCisgICAgICAgIChbCisgICAgICAgICAgICBTUF9TSE9XX0RBTUFHRTowLAorICAgICAgICAgICAgU1BfUEhZU0lDQUxfQVRUQUNLOjEKKyAgICAgICAgXSksCisgICAgICAgIHRoaXNfb2JqZWN0KCkKKyAgICApOworCitXaWNodGlnIHNpbmQgaGllcmJlaSBmb2xnZW5kZSBQdW5rdGU6CisgICAgMS4gTWFuIHNvbGx0ZSBTUF9TSE9XX0RBTUFHRTowIGltIE1hcHBpbmcgYW5nZWJlbiwgd2VubiBtYW4gZGllIE1lbGR1bmcKKyAgICAgICB6LkIuICJFaW4gRmV1ZXJiYWxsIHRyaWZmdCBEaWNoIHZvbiBoaW50ZW4uXG4iIHNlbGJzdCBhdXNnZWJlbiB3aWxsLgorICAgICAgIFR1dCBtYW4gZGllcyBuaWNodCwgbXVzcyBpbSBSYXVtIHp1c2FldHpsaWNoIFBfR0VOREVSLCBQX05BTUUsIGV0Yy4KKyAgICAgICBhdWYgZWluZW4gc2lubnZvbGxlbiBXZXJ0IGdlc2V0enQgd2VyZGVuLCBiZWlzcGllbHN3ZWlzZSBQX0dFTkRFUiBhdWYKKyAgICAgICBNQUxFIHVuZCBQX05BTUUgYXVmICJGZXVlcmJhbGwiLgorICAgIDIuIFNQX1BIWVNJQ0FMX0FUVEFDSzoxIHNvbGx0ZSBnZXNldHp0IHdlcmRlbiwgd2VubiBkZXMgU3BpZWxlcnMgUnVlc3R1bmcKKyAgICAgICBmdWVyIGRpZSBWZXJ0ZWlkaWd1bmcgYmVydWVja3NpY2h0aWd0IHdlcmRlbiBzb2xsLiBHZW5hdWVyZXMgZmluZGV0IG1hbgorICAgICAgIGF1ZiBkZXIgTWFucGFnZSB2b24gRGVmZW5kKCkuCisgICAgMy4gdGhpc19vYmplY3QoKSBzb2xsdGUgaW1tZXIgYW5nZWdlYmVuIHdlcmRlbiwgZGFtaXQgZGVyIFJhdW0gZGVyCisgICAgICAgQW5ncmVpZmVyIGlzdCwgYW5zdGF0dCBlaW4gbmljaHQgbmFlaGVyIGJlc3RpbW10ZXMgT2JqZWt0LiBEaWVzIGtvZW5udGUKKyAgICAgICBkYW5uIGJlaXNwaWVsc3dlaXNlIGRlciBTcGllbGVyIHNlbGJzdCBzZWluLCB3YXMgZGF6dSBmdWVocnQsIGRhc3MgaW0KKyAgICAgICBGYWxsZSBlaW5lcyBUb2RlcyBkZXIgU3BpZWxlciBhbHMgS2lsbGVyIHZvbiBzaWNoIHNlbGJzdCBnZW5hbm50IHdpcmQsCisgICAgICAgYW5zdGF0dCAiRWluIEZldWVyYmFsbCIuCisKKworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xhc3QgbW9kaWZpZWQ6IFdlZCBGZWIgMTMgMTc6MDA6NTQgMjAwMiBieSBCYW1iaQpkaWZmIC0tZ2l0IGEvZG9jL3dpei90b2Rlc3NlcXVlbnogYi9kb2Mvd2l6L3RvZGVzc2VxdWVuegpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWIwM2U4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei90b2Rlc3NlcXVlbnoKQEAgLTAsMCArMSwxMTUgQEAKK0VpbmUgVG9kZXNzZXF1ZW56IGlzdCBlaW5lIGdhbnogbm9ybWFsZSBUZXh0ZGF0ZWkgbWl0IGZvbGdlbmRlbSBBdWZiYXU6CitJbiBkZXIgZXJzdGVuIFplaWxlIHN0ZWh0IGRpZSBEYXVlciBkZXIgVG9kZXNzZXF1ZW56IGluIGhlYXJ0X2JlYXQtRWluaGVpdGVuLgorRXMgZm9sZ2VuIEVpbnRyYWVnZSBkZXIgRm9ybSA8emVpdD46PHRleHQ+LiA8emVpdD4gaXN0IGRhYmVpIGRlciBaZWl0cHVua3QKKyhlYmVuZmFsbHMgaW4gaGVhcnRfYmVhdC1FaW5oZWl0ZW4pLCBpbiBkZW5lbiBkZXIgVGV4dCA8dGV4dD4gYXVzZ2VnZWJlbgord2VyZGVuIHNvbGwuIDx0ZXh0PiBrYW5uIHNpY2ggZGFiZWkgYXVjaCB1ZWJlciBtZWhyZXJlIFplaWxlbiBlcnN0cmVja2VuOworTGVlcnplaWxlbiB3ZXJkZW4gMToxIHVlYmVybm9tbWVuLgorCitCZWlzcGllbDoKKy0tLS0gPHNuaXA+IC0tLS0KKzcwCisxOlZvciBEaXIgdHV0IHNpY2ggZWluIHRpZWZlciwgc2Nod2FyemVyIEFiZ3J1bmQgYXVmLiBFaW4gc3RhcmtlciBTb2cKK3ZlcnN1Y2h0LCBEaWNoIGhpbmVpbnp1emllaGVuLgorCisyOkR1IGJhbGFuY2llcnN0IG11ZWhzYW0gYXVmIGRlbSBSYW5kIGRlcyBBYmdydW5kZXMsIGRvY2ggZGFubiB3aXJkIGRlcgorU29nIHp1IHN0YXJrIQorCiszOkR1IGZhZWxsc3QhIFVtIERpY2ggaGVydW0gaXN0IG51ciBub2NoIHRpZWZlIFNjaHdhZXJ6ZS4KKy4uLiB1c3cuCistLS0tIDxzbmlwPiAtLS0KKworVW0gZGllIFRvZGVzc2VxdWVueiBlaW4gd2VuaWcgYWJ3ZWNoc2x1bmdzcmVpY2hlciB6dSBnZXN0YWx0ZW4sIGthbm4gbWFuCitlaW5pZ2UgUGxhdHpoYWx0ZXIgdmVyd2VuZGVuLiBNYW4ga2FubiBNZWxkdW5nZW4gZWluYmF1ZW4sIGRpZSBhYmhhZW5pZyBzaW5kCisKKy0gdm9tIEdlc2NobGVjaHQ6IGRpZXMgZ2VodCBtaXQgPEc+bVRleHQ6d1RleHQ8L0c+LiBtVGV4dCB3aXJkIGJlaSBtYWVubmxpY2hlbgorICBUb3RlbiBlaW5nZWJhdXQsIHdUZXh0IGJlaSB3ZWlibGljaGVuLiBNYW4ga2FubiBhdWNoIGVpbmVuIGRlciBUZXh0ZSB3ZWctCisgIGxhc3NlbjsgZGVyIERvcHBlbHB1bmt0IGlzdCBqZWRvY2ggUGZsaWNodCEKKyAgQmVpc3BpZWw6CisgICAgNTpEZXIgVG9kIHNhZ3Q6IEtPTU0gTUlUIE1JUiwgU1RFUkJMSUNIRTxHPlI6PC9HPiEKKyAgICA2OkRlciBUb2Qgc2FndDogV0FSIFdPSEwgTklYLCA8Rz5CVUVSU0NIQ0hFTjpGUk9MTEVJTkNIRU48L0c+IQorCistIHZvbiBkZXIgUmFzc2U6IERpZXMgZ2VodCBhZWhubGljaCB3aWUgYmVpbSBHZXNjaGxlY2h0LCB1bmQgendhciBpbiBkZXIgRm9ybQorICA8Uj5kVGV4dHxtVGV4dHxlVGV4dHx6VGV4dHxoVGV4dHxmVGV4dDwvUj4uCisgIG1UZXh0IHdpcmQgYmVpIE1lbnNjaGVuIGF1c2dlZ2ViZW4sIGVUZXh0IGJlaSBFbGZlbiwgelRleHQgYmVpIFp3ZXJnZW4sCisgIGhUZXh0IGJlaSBIb2JiaXRzLCBmVGV4dCBiZWkgRmVsaW5lbiB1bmQgZFRleHQgYmVpIGFsbGVuIGFuZGVyZW4KKyAgKHpCLiBNYWdpZXIgbWl0IHNlbGJzdCBnZXNldHp0ZW4gUmFzc2VuKS4KKworICBXaWUgYmVpIGdlc2NobGVjaHRzYWJoYWVuZ2lnZW4gTWVsZHVuZ2VuIGtvZW5uZW4gYXVjaCBoaWVyIGVpbnplbG5lIFRleHRlCisgIHdlZ2dlbGFzc2VuIHdlcmRlbi4KKworICBCZWlzcGllbDoKKyAgICAxOkRlciBUb2Qgc2FndDogU0NIT0VOIEdFU1RPUkJFTiwgPFI+RlJFTURMSU5HfE1FTlNDSExFSU58U1BJVFpPSFJ8RFJFSUtBRVNFSE9DSDwvUj4/CisgICAgMjo8Uj58fERlciBUb2Qgc2FndDogRUxGRU4gV0FSRU4gU0NIT04gTEFOR0UgTklDSFQgTUVIUiBISUVSIXw8L1I+CisKKy0gdm9tIENoYXJha3RlcjogRGVyIENoYXJha3RlciBlaW5lcyBTcGllbGVycyBrYW5uIHNpY2ggaW0gQmVyZWljaCB2b24gLTEwMDAKKyAgKHNhdGFuaXNjaCkgYmlzICsxMDAwIChoZWlsaWcpIGJld2VnZW4uIFp3aXNjaGVuIDxBPiB1bmQgPC9BPiBrYW5uIG1hbgorICBjaGFyYWt0ZXJhYmhhZW5naWdlIE1lbGR1bmdlbiBlaW5iYXVlbi4gRGllIEFic3R1ZnVuZ2VuIHdlcmRlbiBkYWJlaSBpbiBkZXIKKyAgRm9ybSAjIzxVbnRlcmdyZW56ZT4jIyBhbmdlZ2ViZW4sIHdvYmVpIDxVbnRlcmdyZW56ZT4gZGllIHVudGVyZSBHcmVuemUgZGVzCisgIENoYXJha3RlcndlcnRlcyBpc3QsIGFiIGRlbSBkaWUgTWVsZHVuZyBhdXNnZWdlYmVuIHdpcmQuCisgIERlciBUZXh0IGRpcmVrdCBuYWNoIDxBPiBlbnRzcHJpY2h0IGVpbmVyIFVudGVyZ3JlbnplIHZvbiAtMTAwMCwgZGllCisgIHdlaXRlcmVuIFRleHRlIHNvbGx0ZW4gaW4gYXVmc3RlaWdlbmRlciBSZWloZW5mb2xnZSBhbmdlZ2ViZW4gd2VyZGVuLgorICBCZWlzcGllbDoKKyAgICA3OjxBPgorICAgIERlciBUb2Qgc2FndDogQUgsIEVJTiBTQVRBTklTVCEKKyAgICAjIy05OTkjIworICAgIERlciBUb2Qgc2FndDogU08gRUlOPEc+OkU8L0c+IFNDSExJTU1FPEc+Ujo8L0c+IQorICAgICMjMCMjCisgICAgRGVyIFRvZCBzYWd0OiBFSU4gVFlQSVNDSEVTIFVORU5UU0NISUVERU4uLi4KKyAgICAjIzEjIworICAgIERlciBUb2Qgc2FndDogU08gRUlOPEc+OkU8L0c+IExJRUJFPEc+Ujo8L0c+IQorICAgICMjMTAwMCMjCisgICAgRGVyIFRvZCBzYWd0OiBPSCwgR1VURU4gVEFHLCBFVUVSIEhFSUxJR0tFSVQhCisgICAgPC9BPgorCistIHZvbiBkZXIgWmFobCBkZXIgVG9kZTogRGllcyBnZWh0IGFlaGxpY2ggd2llIGJlaW0gQ2hhcmFrdGVyLCBhbGxlcmRpbmdzCisgIGlzdCBkZXIgUGxhdHpoYWx0ZXIgaGllciA8RD4uLi48L0Q+LiBEaWUgVW50ZXJncmVuemUgZnVlciBkZW4gZXJzdGVuIFRleHQKKyAgaXN0IDEgKHNvbnN0IHdhZXJlIGRlciBTcGllbGVyIGphIG5pY2h0IGhpZXIgOykKKyAgQmVpc3BpZWw6CisgICAgODo8RD4KKyAgICBEZXIgVG9kIHNhZ3Q6IFNDSE9FTiwgRElDSCBBVUNIIE1BTCBISUVSIFpVIFNFSEVOIQorICAgICMjMiMjCisgICAgRGVyIFRvZCBzYWd0OiBNQUNIIERJUiBOSVggRFJBVVMsIERBUyBQQVNTSUVSVCBTQ0hPTiBNQUwhCisgICAgIyMyMCMjCisgICAgRGVyIFRvZCBzYWd0OiBXQVMsIERVIFNDSE9OIFdJRURFUj8KKyAgICAjIzUwIyMKKyAgICBEZXIgVG9kIHNhZ3Q6IE5PQ0ggRUlOTUFMLCBVTkQgSUNIIEJFSEFMVEUgRElDSCBFTkRHVUVMVElHIEhJRVIhCisgICAgPC9EPgorCistIHZvbSBMZXZlbDogQXVjaCBoaWVyIGVyZm9sZ3QgZGllIEF1c3dlcnR1bmcgd2llIGJlaW0gQ2hhcmFrdGVyLCBhbGxlcmRpbmdzCisgIHp3aXNjaGVuIGRlbiBQbGF0emhhbHRlcm4gPEw+IHVuZCA8L0w+LiBEaWUgVW50ZXJncmVuemUgZnVlciBkZW4gZXJzdGVuCisgIFRleHQgaXN0IDAuCisgIEJlaXNwaWVsOgorICAgIDg6PEw+CisgICAgRGVyIFRvZCBzYWd0OiBNQUNIIERJUiBOSUNIVFMgRFJBVVMuCisgICAgIyM1IyMKKyAgICBEZXIgVG9kIHNhZ3Q6IFZJRUxMRUlDSFQgU09MTFRFU1QgRFUgREFTIE5BRUNIU1RFIE1BTCBCRVNTRVIgQVVGUEFTU0VOIQorICAgICMjMTUjIworICAgIERlciBUb2Qgc2FndDogU08gV0lSU1QgRFUgTklFIFNFSEVSIE9ERVIgTUFHSUVSIQorICAgICMjMjAjIworICAgIERlciBUb2Qgc2FndDogTlVSIEVJTiBUT1RFUiBTRUhFUiBJU1QgRUlOIEdVVEVSIFNFSEVSISA7KQorICAgIDwvTD4KKworLSB2b20gWnVmYWxsOiBVbmQgbm9jaCBtZWhyIEFid2VjaHNsdW5nLi4uIDspIERlciBBdWZiYXUgaXN0IGFlaG5saWNoIGRlbSBkZXIKKyAgdm9yaGVyaWdlbi4gWndpc2NoZW4gZGVuIFBsYXR6aGFsdGVybiA8Wj13ZXJ0PiB1bmQgPC9aPiBzdGVoZW4gTWVsZHVuZ2VuIGRlcgorICAjI3gjI3RleHQsIHdvYmVpIGRpZSB4IGRpZSByZWxhdGl2ZSBXYWhyc2NoZWlubGljaGtlaXQgKGJlem9nZW4gYXVmIHdlcnQpCisgIGFuZ2ViZW4sIG1pdCBkZXIgZGVyIFRleHQgdGV4dCBhdXNnZWdlYmVuIHdpcmQuCisgIERpZSB4IHNvbGx0ZW4genVzYW1tZW5nZXphZWhsdCB3ZXJ0IGVyZ2ViZW4hIERpZSBSZWloZW5mb2xnZSBpc3QgendhcgorICBwcmluemlwaWVsbCBlZ2FsLCBhdXMgUGVyZm9ybWFuY2VncnVlbmRlbiBzb2xsdGUgbWFuIGRpZSBUZXh0ZSBhYmVyIG1pdAorICBhYnN0ZWlnZW5kZXIgV2FocnNjaGVpbmxpY2hrZWl0IGFub3JkbmVuLgorICBCZWlzcGllbDoKKyAgICA5OjxaPTY+CisgICAgIyMzIyMKKyAgICBEaWVzZXIgVGV4dCB3aXJkIGluIDUwJSBhbGxlciBGYWVsbGUgYXVzZ2VnZWJlbiAoMy82KQorICAgICMjMiMjCisgICAgRGllc2VyIFRleHQgaW4gMzMlIGFsbGVyIEZhZWxsZSAoMi82KQorICAgICMjMSMjCisgICAgVW5kIGRpZXNlciBUZXh0IGluIDE3JSBhbGxlciBGYWVsbGUgKDEvNikKKyAgICA8L1o+CisKK0F1c3NlcmRlbSBrYW5uIG1hbiBub2NoIGRlbiBOYW1lbiBkZXMgVG90ZW4gZWluYmF1ZW4sIHVuZCB6d2FyIG1pdCA8bj4gaW4KK25vcm1hbGVyIFNjaHJlaWJ3ZWlzZSwgdW5kIG1pdCA8Tj4gaW4gR1JPU1NidWNoc3RhYmVuLgorQmVpc3BpZWw6CisgIDEwOkR1IHNjaGF1c3QgaW4gZGVuIFNwaWVnZWwgdW5kIHNpZWhzdDogPG4+IQorICAxMTpEZXIgVG9kIHNhZ3Q6IEhBTExPLCA8Tj4hCisKKwpkaWZmIC0tZ2l0IGEvZG9jL3dpei90b3BsaXN0ZSBiL2RvYy93aXovdG9wbGlzdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM5ZWZjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdG9wbGlzdGUKQEAgLTAsMCArMSwzMyBAQAorRnVlciBkaWUgVmVyd2FsdHVuZyBkZXIgU3RhbmRhcmR0b3BsaXN0ZW4gZ2lidCBlcyAvc2VjdXJlL3RvcGxpc3RlLCB3ZWxjaGVzICh6dXIgWmVpdCkgYmVpIExvZ2luIGJlaSB0b3BsaXN0ZW4td2lsbGlnZW4gU3BpZWxlcm4gZGllIHRvcGxpc3Rlbi1yZWxldmFudGVuIERhdGVuIHZvbSBTcGllbGVyIGFiZnJhZ3QgdW5kIGluIGVpbmVyIFRhYmVsbGUgZWludHJhZWd0LgorCitBYmZyYWdlbiBsYWVzc3QgZGllIExpc3RlIGplZGVyemVpdCB3aWUgZm9sZ3QgZHVyY2ggQXVmcnVmIGZvbGdlbmRlciBGdW5rdGlvbmVuIGluIC9zZWN1cmUvdG9wbGlzdGU6IExpc3RlLCBTcGllbGVyTGlzdGUsIFNlaGVyTGlzdGUgdW5kIEhhcmRjb3JlTGlzdGUuCisKK0RpZSA0IHNpbmQgdmFyYXJncyB1bmQgYmVrb21tZW4gZm9sZ2VuZGUgbW9lZ2xpY2hlIEFyZ3VtZW50ZToKKyogc3RyaW5nIHJhc3NlCisgIE51ciBTcGllbGVyIGRlciBSYXNzZSA8cmFzc2U+IGJlcnVlY2tzaWNodGlnZW4KKyogc3RyaW5nIGdpbGRlCisgIE51ciBTcGllbGVyIGRlciBHaWxkZSA8Z2lsZGU+IGJlcnVlY2tzaWNodGlnZW4KKyogaW50IGxpbWl0CisgIE1heC4gPGxpbWl0PiBFaW50cmFlZ2UsIERlZmF1bHQ6IDEwMCwgTWF4OiAxMDAKKyogc3RyaW5nIHNvcnQKKyAgTGlzdGUgc29ydGllcmVuIG5hY2g6IGxlcCwgcXAsIHhwLCBhZ2UsIHdpemxldmVsLCBoYXJkY29yZSwgZ2lsZGUsIHJhc3NlLCAKKyAgbmFtZQorICBEZWZhdWx0OiBsZXAKKworRGllIEZ1bmt0aW9uZW4gbGllZmVybiBlaW4gQXJyYXkgenVydWVjaywgd2FzIGZ1ZXIgamVkZW4gRWludHJhZyBpbiBkZXIgVG9wbGlzdGUgd2llZGVyIGVpbiBBcnJheSBlbnRoYWVsdDogPCA8c3RyaW5nfGludD4qID4qCisKK0JlaXNwaWVsZToKKyMgL3NlY3VyZS90b3BsaXN0ZS0+TGlzdGUoKQorICBEaWUgMTAwIENoYXJzIG1pdCBkZW4gbWVpc3RlbiBTdHVmZW5wdW5rdGVuCisjIC9zZWN1cmUvdG9wbGlzdGUtPkhhcmRjb3JlTGlzdGUoMCwwLDEwKQorICBEaWUgMTAgSEMtQ2hhcnMgbWl0IGRlbiBtZWlzdGVuIFN0dWZlbnB1bmt0ZW4KKyMgL3NlY3VyZS90b3BsaXN0ZS0+TGlzdGUoMCwia2FlbXBmZXIiLDEwLCJ4cCIpCisgIERpZSAxMCBLYWVtcGZlci1DaGFycyBtaXQgZGVuIG1laXN0ZW4gWFAKKyMgL3NlY3VyZS90b3BsaXN0ZS0+TGlzdGUoIlp3ZXJnIiwiemF1YmVyZXIiKQorICBEaWUgMTAwIFp3ZXJnZW56YXViZXJlciBtaXQgZGVuIG1laXN0ZW4gU3R1ZmVucHVua3RlbgorV2VpdGVyZXMga29lbm50IGlociBldWNoIGphIHNpY2hlciBkZW5rZW4uCisKK0FjaHNvLCBkYXMgRXJnZWJuaXMgc2llaHQgZGFubiB1bmdlZmFlaHIgc28gYXVzOgorKHsgKHtuYW1lLCBsZXAsIHFwLCB4cCwgbGV2ZWwsIGFnZSwgcmFzc2UsIGdpbGRlLCB3aXpsZXZlbCwgaGFyZGNvcmV9KSwgLi4uIH0pCisoeyh7ImhjcGxheSIsMTAwLDAsMCwxLDYyLCJNZW5zY2giLCJhYmVudGV1cmVyIiwwLDF9KX0pCisKZGlmZiAtLWdpdCBhL2RvYy93aXovdHJhbnNwb3J0ZXIgYi9kb2Mvd2l6L3RyYW5zcG9ydGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZjAwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3RyYW5zcG9ydGVyCkBAIC0wLDAgKzEsMTkgQEAKK0RFRklOSUVSVCBJTjoKKwkiL3N0ZC90cmFuc3BvcnQiCisJIi9zeXMvdHJhbnNwb3J0LmgiCisKK0JFTUVSS1VOR0VOOgorCVp1IFRyYW5zcG9ydGVybiBnaWJ0IGVzIGVpbiBCZWlzcGllbCB1bnRlcgorICAgICAgICAnL2RvYy9iZWlzcGllbGUvbWlzYy9ic3B0cmFuc3BvcnRlcjEuYycgdW5kIGF1Y2ggZGllIHZlcndlbmRldGVuIAorICAgICAgICBQcm9wZXJ0aWVzIHNpbmQgZG9rdW1lbnRpZXJ0LgorCQorICAgICAgICBVbSBlaW5lbiBUcmFuc3BvcnRlciB6dSBha3RpdmllcmVuLCBtdXNzIGVyIGluIGRhcyBQcmVsb2FkLUZpbGUgZGVyCisJUmVnaW9uIGdlc2NocmllYmVuIHdlcmRlbiwgb2RlciBhYmVyIHVlYmVyIGVpbmUgRnVua3Rpb24gaW0gU3RhcnQtCisJdW5kIFppZWxyYXVtIGF1ZmdlcnVmZW4gd2VyZGVuLCBkaWUgZGFzIGVybGVkaWd0LgorCitTSUVIRSBBVUNIOgorCVBfQVJSSVZFTVNHLCBQX0RFUEFSVE1TRywgUF9FTlRFUk1TRywgUF9MRUFWRU1TRywgUF9MRUFWRUZBSUwsCisJUF9FTlRFUkZBSUwsIFBfTUFYX1BBU1NFTkdFUlMsIEFkZFJvdXRlLCBBZGRNc2csIFN0YXJ0CisgICAgICAgIC9kL2luc2Vsbi9zY2hpZmZlL0hvd1RvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBXZWQgRGVjIDI2IDE0LjQzOjA3IDIwMDEgYnkgVGlsbHkKZGlmZiAtLWdpdCBhL2RvYy93aXovdW5pcXVlcyBiL2RvYy93aXovdW5pcXVlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTA3ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei91bmlxdWVzCkBAIC0wLDAgKzEsNDIgQEAKKworIFVOSVFVRVMKKyAgICAKKyAgICBTb2dlbmFubnRlICJ1bmlxdWVzIiBzaW5kIE9iamVrdGUsIGRpZSBuaWNodCBpbiBiZWxpZWJpZ2VyIEFuemFobCBpbSBNdWQKKyAgICB2b3JoYW5kZW4gc2VpbiBrb2VubmVuLCBzb25kZXJuIHZvbiBkZW5lbiBlcyBlbnR3ZWRlciBudXIgZWlucyBvZGVyIGVpbmUKKyAgICBiZWdyZW56dGUgQW56YWhsIGdpYnQuIEJlaXNwaWVsZSBmdWVyIHVuaXF1ZXMgc2luZCBkZXIgYmVrYW5udGUgVm9sbC0KKyAgICBzdHJlY2tlciBkZXMgV2VnaGllcnMgb2RlciBkaWUgZ3J1ZW5lbiBSb2JlbiBhdXMgZGVtIFNjaGVtZW5yZWljaC4KKyAgICBEaWUgQmVncmVuenVuZyBhdWYgd2VuaWdlIE9iamVrdGUgaGF0IG5vcm1hbGVyd2Vpc2UgZGVuIFNpbm4sIGJlc29uZGVyZQorICAgIEVpZ2Vuc2NoYWZ0ZW4gb2RlciBhdXNzZXJnZXdvZWhubGljaGUgU3RhZXJrZSB6dSByZWNodGZlcnRpZ2VuLiBCZWkgCisgICAgZWluaWdlbiBPYmpla3RlbiBwYXNzaWVydCBkaWVzIGF1Y2ggYXVzIGxvZ2lzY2hlbiBHcnVlbmRlLCB3ZWlsIGRhcworICAgIE9iamVrdCBlaW5mYWNoIGVpbnppZ2FydGlnIGlzdC4KKworICAgIEZ1ZXIgdW5pcXVlcyBnZWx0ZW4gZm9sZ2VuZGUgUmljaHRsaW5pZW46CisKKyAgICAtIERpZSBFcnJlaWNoYmFya2VpdCBkZXMvZGVyIHVuaXF1ZXMgZGFyZiBuaWNodCB2b20gUmVib290IGFiaGFlbmdlbi4KKyAgICAgIERhcyBiZWRldXRldCwgZWluIFNwaWVsZXIgbXVzcyB3YWVocmVuZCBkZXIgZ2VzYW10ZW4gVXB0aW1lIGRpZQorICAgICAgdGhlb3JldGlzY2hlIE1vZWdsaWNoa2VpdCBoYWJlbiwgZWluIGJlc3RpbW10ZXMgT2JqZWt0IGR1cmNoIHdlbGNoZW4KKyAgICAgIEF1ZndhbmQgYXVjaCBpbW1lciB6dSBlcnJlaWNoZW4uCisKKyAgICAtIERhcyBPYmpla3QgbXVzcyBhdWNoIGdlZ2VuIGRlbiBXaWxsZW4gZGVzIGJpc2hlcmlnZW4gQmVzaXR6ZXJzIHp1CisgICAgICBiZWtvbW1lbiBzZWluLgorCisgICAgLSBTb2xsdGUgZGFzIE9iamVrdCBpbiBVbWxhdWYgc2VpbiwgbXVzcyBhbiBkZXIgRnVuZHN0ZWxsZSBlaW4gSGlud2VpcworICAgICAgZGFyYXVmIGV4aXN0aWVyZW4sIGRhc3MgZGllc2VzIE9iamVrdCBkb3J0IHp1IGJla29tbWVuIGlzdC4gQXVjaCB3ZW5uCisgICAgICBmYW5hdGlzY2hlIFNwaWVsZXIgZWluIFVuaXF1ZSA1IFNla3VuZGVuIG5hY2ggUmVib290IHdlZ3NjcmlwdGVuLAorICAgICAgc29sbHRlbiBuYWNoZm9sZ2VuZGUgU3BpZWxlciB3ZW5pZ3N0ZW5zIHdpc3Nlbiwgd28gZXMgbWFsIGdld2VzZW4gaXN0LgorCisgICAgVW5pcXVlcywgZGllIGF1ZmdydW5kIGlocmVyIFdlcnRlIG5pY2h0IGdlbmVobWlndW5nc3BmbGljaHRpZyBzaW5kLCBzb2xsdGVuCisgICAgc2ljaCB0cm90emRlbSBhbiBkaWVzZSBSaWNodGxpbmllIGhhbHRlbi4gVW5pcXVlcyBvaG5lIGplZ2xpY2hlcyBLb256ZXB0LAorICAgIGRpZSBkZXIgQmFsYW5jZSB2b3JnZWxlZ3Qgd2VyZGVuLCBoYWJlbiBqZWRvY2gga2F1bSBDaGFuY2UgYXVmIEdlbmVobWlndW5nLgorICAgIAorCisgU0lFSEUgQVVDSAorCisgICAgIGJhbGFuY2UsIHJ1ZXN0dW5nZW4sIHdhZmZlbiwgZmVybndhZmZlbiwgbnBjcywgZ3Jlbnp3ZXJ0ZSwKKyAgICAgYXR0cmlidXRzdmVyYWVuZGVydW5nZW4sIHJlc2lzdGVuemVuLCBrYW1wZm9iamVrdGUKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMRVRaVEUgQWVOREVSVU5HOgorICAgIERvbiwgMzEuMTAuMTk5OSwgMjA6MDA6MDAgdm9uIE5hY2h0d2luZAorICAgCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3ZlcnRyYWcgYi9kb2Mvd2l6L3ZlcnRyYWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiYzY4YQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovdmVydHJhZwpAQCAtMCwwICsxLDEyOCBAQAorCitIZXJ6bGljaCB3aWxsa29tbWVuIGltIEtyZWlzIGRlciBNYWdpZXIhCisKK0FiIGpldHp0IGthbm5zdCBEdSBoaW50ZXIgZGllIEt1bGlzc2UgZGVzIE1vcmdlbkdyYXVlbnMgc2NoYXVlbi4KK0RpZXNlIEZhZWhpZ2tlaXQgYmlyZ3QgVmVyYW50d29ydHVuZy4KKworRGVzaGFsYiBnZWx0ZW4gYWIgamV0enQgenVzYWV0emxpY2ggenUgZGVuIGJpc2hlcmlnZW4gUmVnZWxuIGZvbGdlbmRlCitNYWdpZXJyZWdlbG4gZnVlciBEaWNoOgorCitNYW4gZGFyZiBTcGllbGVybiBrZWluZSBIaWxmZW4gZ2ViZW4sIGVzIHNlaSBkZW5uLCBlcyBsaWVndCBlaW4KKypvZmZlbnNpY2h0bGljaGVyKiBGZWhsZXIgdm9yLiBEYWJlaSB6YWVobHQgYXVjaCBlaW4gWndlaXRzcGllbGVyLAorbWl0IGRlbSBlaW4gTWFnaWVyIHNwaWVsdCwgenUgZGVuIFNwaWVsZXJuIQorSGFlbHQgZGVyIFNoZXJpZmYgZWluZW4gRXh0cmEtQ2hhcmFrdGVyIGVpbmVzIE1hZ2llcnMgbmljaHQgZnVlciBlaW5lbgorZWNodGVuIFp3ZWl0aWUsIGthbm4gZXIgaWhuIGplZGVyemVpdCB6dW0gVGVzdHNwaWVsZXIgZXJrbGFlcmVuLiAKKworQmVpc3BpZWxlIGZ1ZXIgbmljaHQgZXJsYXVidGUgSGlsZmVuOgorLSBTdGF0cyB2b24gTW9uc3Rlcm4gbWl0dGVpbGVuLgorLSBPYmpla3RlIGNsb25lbiwgdW5kIFNwaWVsZXJuIGdlYmVuLgorLSBPYmpla3RlIHNjaHJlaWJlbiwgZGllIGRlbiBTcGllbGVybiB6dSBzZWhyIGhlbGZlbiwgb2RlciB1bWdla2VocnQKKyAgZGllIFNwaWVsZXIgc2NoYWVkaWdlbi4KKy0gU3BpZWxlciB0ZWxlcG9ydGllcmVuLgorLSBFeHBsaXppdGUgS29tbWFuZG9zIGFuZ2ViZW4sIGRpZSBlaW4gU3BpZWxlciBlaW5nZWJlbiBtdXNzLgorLSBTZWxiZXIgKG9kZXIgbWl0IFp3ZWl0Y2hhcmFrdGVyZW4pIG1pdHNwaWVsZW4gb2RlciAta2FlbXBmZW4sIHNvYmFsZCAKKyAgSW5zaWRlcndpc3NlbiBpbiBBbndlbmR1bmcga29tbXQuIEhpZXIgaXN0IGRlciBnZXN1bmRlIE1lbnNjaGVudmVyc3RhbmQKKyAgYmVpIGRlciBFbnRzY2hlaWR1bmcgZ2VmcmFndCwgYWIgd2FubiBkaWVzIGRlciBGYWxsIGlzdC4KKy0gUmFldW1lIHJlc2V0dGVuLCBkYW1pdCBkaWUgU3BpZWxlciBPYmpla3RlIGJla29tbWVuLgorICAoSW5zYmVzb25kZXJlIGthbm4gZGFzIE5lYmVuZWZmZWt0ZSBoYWJlbiwgZGllIG1hbiBhbHMgbm9ybWFsZXIKKyAgIE1hZ2llciBuaWNodCB1ZWJlcnNjaGF1ZW4ga2FubiwgYXVzc2VyZGVtIGtvZW5uZW4gZGllIFNwaWVsZXIgYXVjaCBtYWwKKyAgIHdhcnRlbi4pCistIFdlaXRlcmdhYmUgdm9uIE9iamVrdGluZm9ybWF0aW9uZW4sIGRpZSBkZXIgU3BpZWxlciBuaWNodCBlaW5zZWhlbiBrYW5uLgorCitJbiBkZW4gZm9sZ2VuZGVuIEZhZWxsZW4gZGFyZiBuYXR1ZXJsaWNoIGdlaG9sZmVuIHdlcmRlbjoKKy0gU3BpZWxlcm4gYXVzIGZlaGxlcmhhZnRlbiBSYWV1bWVuIG9kZXIgZGVyICd2b2lkJyBoZXJhdXNoZWxmZW4uCistIE1hbiBzaWVodCwgZGFzcyBkZXIgU3BpZWxlciB3ZWlzcywgd2FzIGVyIHp1IHR1biBoYXQsIGFiZXIgaWhtIGRpZQorICBhYndlZ2lnZSghKSBGb3JtdWxpZXJ1bmcgbmljaHQgZWluZmFlbGx0LiAoSGllciBzb2xsdGUgbWFuIGFiZXIKKyAgenVzYWV0emxpY2ggZGVtIE1hZ2llciwgZGVyIGRhcyBlbnRzcHJlY2hlbmRlIE9iamVrdCAndmVyYnJvY2hlbicKKyAgaGF0LCBlaW5lIE1pdHRlaWx1bmcgZ2ViZW4sIGF1ZiBkYXNzIGVyIGVzIHZlcmJlc3NlcnQuKQorCitTZWxiZXIgc3BpZWxlbiBzb2xsIG1hbiBudXIgZGFubiwgd2VubiBtYW4gZGVuIFNwaWVsZXJuIGRhYmVpIG5pY2h0CitoaWxmdCBvZGVyIGlobmVuIGVpbiBBYmVudGV1ZXIgdm9yIGRlciBOYXNlIHdlZ2xvZXN0LgorCisKK0dlbmVyZWxsIG11c3MgZGllIFByaXZhdHNwaGFlcmUgdm9uIFNwaWVsZXJuIGdlYWNodGV0IHdlcmRlbi4gCisKK1Nub29wZW4gdm9uIFNwaWVsZXJuIGlzdCBudXIgZGFubiBlcmxhdWJ0LCB3ZW5uIGVzIGRhcnVtIGdlaHQsIEZlaGxlcgoraW0gTXVkIHp1IGZpbmRlbiBvZGVyIElkZWVuIHp1IHNhbW1lbG4sIHVtIHNlaW5lbiBfZWlnZW5lbl8gR2ViaWV0ZSwKK2J6dy4gUmVnaW9uZW4gZnVlciBkaWUgbWFuIHZlcmFudHdvcnRsaWNoIGlzdCwgenUgdmVyYmVzc2VybiB1bmQgCithbnp1cGFzc2VuLiBFcyBkYXJmIGF1ZiBrZWluZW4gRmFsbCBkYWZ1ZXIgYmVudXR6dCB3ZXJkZW4sIFNwaWVsZXIKK29obmUgYmVzb25kZXJlbiBHcnVuZCB6dSBiZW9iYWNodGVuLCBzaWNoIHVlYmVyIHNpZSBsdXN0aWcgenUgbWFjaGVuLCAKK29kZXIgc2llIGF1c3p1c3Bpb25pZXJlbi4gV2VubiBTcGllbGVyIFBvc3Qgc2NocmVpYmVuIG9kZXIgbGVzZW4gaXN0IAorc25vb3BlbiBzdHJlbmdzdGVucyB1bnRlcnNhZ3QgKEJyaWVmZ2VoZWltbmlzKS4KK0dlbmVyZWxsIGlzdCBlcyBhbmdlYnJhY2h0IFNwaWVsZXIgZGFyYXVmIGhpbnp1d2Vpc2VuLCBkYXNzIHNpZSAKK2dlc25vb3B0IHdlcmRlbi4KKworRXMgaXN0IGViZW5zbyB1bnp1bGFlc3NpZywgYW5kZXJlIE1vZWdsaWNoa2VpdGVuIGF1c3p1bnV0emVuLCBkaWUgCitkYXp1IGRpZW5lbiBTcGllbGVyIHp1IGJlb2JhY2h0ZW4sIGJ6dy4gYXVzenVzcGlvbmllcmVuICh6QiB2ZXJmb2xnZW4pLgorCitJbnNiZXNvbmRlcmUgaXN0IGVzIFNUUklLVCB1bnRlcnNhZ3QsIE9iamVrdGUgenUgc2NocmVpYmVuLCBkaWUgaW4KK2lyZ2VuZGVpbmVyIFdlaXNlICh6QiBhZGRfYWN0aW9uKC4uLiwiIiwxKSkgJ3RlaWxlIG1pdCcsICdmbHVlc3RlcicKK3VuZCBhZWhubGljaGUgS29tbXVuaWthdGlvbnNiZWZlaGxlIGFiZmFuZ2VuLCB1bSBHZXNwcmFlY2hlIHZvbiBhbmRlcmVuCithYnp1aG9lcmVuLiBEaWVzIHN0ZWxsdCBlaW5lbiBzY2h3ZXJlbiBFaW5ncmlmZiBpbiBkaWUgSW50aW1zcGhhZXJlIGRlcgorYW5kZXJlbiBUZWlsbmVobWVyIGRhciB1bmQgd2lyZCBkZW1lbnRzcHJlY2hlbmQgZ2VhaG5kZXQhCisKK0plZ2xpY2hlIEFydCB2b24gQmVsYWVzdGlndW5nIHZvbiBTcGllbGVybiBpc3QgdW50ZXJzYWd0LiAKK0RhenUgZ2Vob2VydCBkYXMgVmVyZmx1Y2hlbiwgTW9uc3RlciBhdWYgc2llIGhldHplbiwgb2RlciBpaG5lbiBhdWYKK2lyZ2VuZGVpbmUgQXJ0IGJvZXN3aWxsaWcgU2NoYWRlbiB6dXp1ZnVlZ2VuLgorCisKK1p1IGRlbSwgd2FzIER1IGhpZXIgc28gcHJvZ3JhbW1pZXJzdDoKK0FsbGVzIHdhcyBEdSBoaWVyIGFuIERhdGVuIGFibGVnc3QgaXN0IG5hdHVlcmxpY2ggRGVpbiBlaWdlbmVzLCAKK2dlaXN0aWdlcyBFaWdlbnR1bS4gVHJvdHpkZW0gZ2VoZW4gd2lyIGRhdm9uIGF1cywgZGFzIGFsbGVzLCB3YXMgaGllcgoraW0gTXVkdmVyemVpY2huaXMgbGFuZGV0LCBhdWNoIGZ1ZXIgZGFzIE1vcmdlbkdyYXVlbiBlbnR3aWNrZWx0IHdvcmRlbgoraXN0LCBhbHNvIGFsbGVzIHdhcyBEdSBzY2hyZWlic3QsIGF1Y2ggdm9tIE11ZCBnZW51dHp0IHdlcmRlbiBkYXJmLgorRGllcyBmdWVocnQgenUgZm9sZ2VuZGVyIFJlZ2VsdW5nOgorIAorRnVlciBkYXMgTW9yZ2VuR3JhdWVuIGdpbHQgdW5laW5nZXNjaHJhZW5rdGVzIE51dHp1bmdzcmVjaHQgZnVlciBhbGxlIAorTW9uc3RlciwgT2JqZWt0ZSBvZGVyIFJhZXVtZSBkaWUgRHUgaGllciBwcm9ncmFtbWllcnN0LiBEaWVzIGdpbHQgCitpbnNiZXNvbmRlcmUgZnVlciBhbGxlIFNhY2hlbiwgZGllIGJlcmVpdHMgYW4gZGllIFJlZ2lvbmVuIGRlcyBNR3MKK2FuZ2VzY2hsb3NzZW4gc2luZC4KK0RhcyBiZWRldXRldCBmdWVyIERpY2gsIGRhc3MgdW50ZXIgVW1zdGFlbmRlbiB2b24gRGlyIGdlc2NocmllYmVuZSAKK09iamVrdGUgYXVjaCBnZWdlbiBEZWluZW4gV2lsbGVuIGFuZ2VzY2hsb3NzZW4gYmxlaWJlbiwgdW5kIHZpZWxsZWljaHQKK3NvZ2FyIGdnZi4gYXVzIGVpbmVtIEJhY2t1cCB3aWVkZXIgZWluZ2VzcGllbHQgd2VyZGVuLgorTWl0IGRpZXNlciBSZWdlbCBzb2xsIHZlcmhpbmRlcnQgd2VyZGVuLCBkYXMgdW5nbHVlY2tzZWxpZ2UgTWFnaWVyIGF1cy0KK3N0ZWlnZW4gdW5kIGJlaW0gVmVybGFzc2VuIGRlcyBNRyByaWVzaWdlIExvZWNoZXIgaW4gZGVyIExhbmRzY2hhZnQgCit1bmQgaW0gYWxsZ2VtZWluZW4gR2xlaWNoZ2V3aWNodCBoaW50ZXJsYXNzZW4uCisKKworU29sbHRlIERlaW5lIE1hZ2llcnplaXQgYmVlbmRldCBzZWluLCB2ZXJwZmxpY2h0ZXN0IER1IERpY2gsIHVlYmVyCitldHdhaWdlIHdhZWhyZW5kIERlaW5lciBNYWdpZXJ6ZWl0IGdld29ubmUgbmljaHQtb2VmZmVudGxpY2hlIEludGVybmEKKy0gaW5zYi4gbmljaHQtb2VmZmVudGxpY2hlbiBDb2RlIC0gYXVjaCB3ZWl0ZXJoaW4gU3RpbGxzY2h3ZWlnZW4genUgCitiZXdhaHJlbi4gRGllcyBnaWx0IHVuYWJoYWVuZ2lnIHZvbiBkZW0gR3J1bmQgb2RlciBkZXIgQXJ0IHVuZCBXZWlzZSwKK0RlaW5lIE1hZ2llcnplaXQgenUgYmVlbmRlbiAoei5CLiBMb2VzY2h1bmcpLgorCisKK1dlbm4gRHUgZGllc2VuIFZlcnRyYWcgdW50ZXJzY2hyZWlic3QsIGVya2VubnN0IER1IGRpZSBSZWdlbG4gYW4uCitEaWUgUmVnZWxuIGluIC9ldGMvV0laUlVMRVMgc2luZCBpbW1lciB2ZXJiaW5kbGljaCwgdW5hYmhhZW5naWcgZGF2b24sCit3aWUgc2llIHp1bSBaZWl0cHVua3QgZGVpbmVzIE1hZ2llcndlcmRlbnMgYXVzc2FoZW4uCisKKworTnVuIGdlbnVnIGRlciBzdHJlbmdlbiBSZWdlbG4gOykuCitOdW4genUgZGVtLCB3YXMgRHUgamVkZW4gTW9tZW50IHdpcnN0OyB1bmQgenUgZGVtLCB3YXMgZGFuYWNoIGtvbW10OgorCisxLikgV2VubiBEdSBkaWVzZW4gVmVydHJhZyB1bnRlcnNjaHJpZWJlbiBoYXN0LCB1bmQgRGVpbiBTcG9uc29yIChkYXMgaXN0CisgICAgZGVyLCBkZXIgRGlyIGRlbiBWZXJ0cmFnIGdlZ2ViZW4gaGF0KSBNZXJsaW4gZ2ViZXRlbiBoYXQsIERpY2ggenVtCisgICAgTWFnaWVyIHp1IG1hY2hlbiwgYmVrb21tc3QgRHUgZGllIG1hZ2lzY2hlbiBGYWVoaWdrZWl0ZW4gZGVyIE1hZ2llci4KKyAgICBEdSB3aXJzdCBEaWNoIHVuc2ljaHRiYXIgbWFjaGVuIGtvZW5uZW4sIGFuZGVyZSBXZXNlbiB0ZWxlcG9ydGllcmVuCisgICAga29lbm5lbiAoc2llaGUgamVkb2NoIFJlZ2VsbiksIE9iamVrdGUgY2xvbmVuIHVuZCBzbyB3ZWl0ZXIgdW5kIHNvCisgICAgd2VpdGVyLiBEZWluIFNwb25zb3IgaGF0IGRpZSBBdWZnYWJlLCBEaXIgZGVuIFVtZ2FuZyBtaXQgZGVuIG5ldWVuCisgICAgRmFlaGlna2VpdGVuIGJlaXp1YnJpbmdlbiAoRHUgZGFyZnN0IGlobiBkYXJhdWYgZmVzdG5hZ2VsbiA7LSkpLgorCisyLikgRHUga2FubnN0IGplZG9jaCBzZWxic3Qgbm9jaCBrZWluZXJsZWkgUHJvZ3JhbW1lIHNjaHJlaWJlbi4gV2VubiBEdQorICAgIGF1Y2ggc2VsYmVyIHByb2dyYW1taWVyZW4gd2lsbHN0LCBtdXNzdCBEdSB6dWVyc3QgZWluIEdlc2VsbGVuc3R1ZWNrCisgICAgYWJsaWVmZXJuLiBXaWUgZGFzIGdlaHQsIGZpbmRlc3QgZHUgYmVpIGRlciBIaWxmZSB6dW0gR2VzZWxsZW5zdHVlY2sKKyAgICBiZXNjaHJpZWJlbigiaGlsZmUgZ2VzZWxsZW5zdHVlY2siKS4KKworCitTbyB1bmQgbnVuIHp1IGRlbiBEaW5nZW4sIGRpZSBmdWVyIERpY2ggZGEgc2luZDoKKworICAgIE1pdCBkZW0gQmVmZWhsICJtaGlsZmUiIGthbm5zdCBEdSBlaW5lIFVlYmVyc2ljaHQgdWViZXIgZGllIEJlZmVobGUKKyAgICBiZWtvbW1lbiwgZGllIGVpbiBNYWdpZXIgenVzYWV0emxpY2ggenUgZGVuZW4gZGVyIFNwaWVsZXIgaGF0LiBJbgorICAgIGRlbSBWZXJ6ZWljaG5pc3MgL2RvYyBmaW5kZXN0IER1IHZlcnNjaGllZGVuZSBGaWxlcywgZGllIERpciBkYXMKKyAgICBWZXJzdGFlbmRuaXMgZXJsZWljaHRlcm4gc29sbGVuLiBFaW5lIFVlYmVyc2ljaHQga2FubnN0IER1IG1pdCBkZW0KKyAgICBCZWZlaGwuICJtb3JlIC9kb2MvUkVBRE1FIiBiZWtvbW1lbi4KKwkKKyAgICBEZXIgZ3V0ZSBhbHRlIE1lcmxpbiBpc3QgbmljaHQgbnVyIGRlciBVcnZhdGVyIGFsbGVyIE1hZ2llciwgc29uZGVybgorICAgIGJlaGVyYmVyZ3QgZGFydWViZXIgaGluYXVzIGF1Y2ggZWluZW4gKGFiIHVuZCB6dSkgZ3V0IGJlc3VjaHRlbiBXaXpDbHViLgorICAgIFdlciBzaWNoIG1pdCAiZ290byIgbm9jaCBuaWNodCBzbyBndXQgYXVza2VubnQsIGthbm4gaWhuIGluIGRlciAKKyAgICBBYmVudGV1cmVyZ2lsZGUgbWl0IGRlbSBLb21tYW5kbyAidHJlZmYiIGJldHJldGVuLgpkaWZmIC0tZ2l0IGEvZG9jL3dpei93YWZmZW4gYi9kb2Mvd2l6L3dhZmZlbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGM0YzA0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3dpei93YWZmZW4KQEAgLTAsMCArMSwyMDIgQEAKKyBXQUZGRU46CisKKyAgICBhLiBBbGxnZW1laW5lcworCisgICAgQWxsZSAoenVtaW5kZXN0IG5ldWVuISkgV2FmZmVuIHNvbGx0ZW4gdWViZXIgZWluZSB2ZXJudWVuZnRpZ2UKKyAgICBCZXNjaHJlaWJ1bmcgdW5kIGF1Y2ggRGV0YWlscyB2ZXJmdWVnZW4uIEVpbmZhY2ggIkVpbiBTY2h3ZXJ0IiBpc3QKKyAgICBlaW4gYmlzc2VsIGFyZyBkdWVyZnRpZyB1bmQgcmVjaHRmZXJ0aWd0IGF1ZiBrZWluZW4gRmFsbAorICAgIGlyZ2VuZHdlbGNoZSBob2hlbiBXQ3Mgb2RlciBnYXIgSGl0RnVuY3MhIERhcmF1ZiBzb2xsdGVuIHNjaG9uIGRpZQorICAgIFJNcyBhY2h0ZW4uLi4KKworICAgIE5hY2ggTW9lZ2xpY2hrZWl0IGF1Y2ggUF9JTkZPIHNldHplbiwgZGFzIGlzdCBmdWVyIFNwaWVsZXIgbmljaHQgc28KKyAgICBmcnVzdHJpZXJlbmQgdW5kIGthbm4gamEgYXVjaCBlaW5lbiBuZXR0ZW4gU3BydWNoIGVudGhhbHRlbi4gUF9JTkZPCisgICAgaXN0ICp6d2luZ2VuZCogYmVpIFdhZmZlbiBtaXQgSGl0RnVuY3MhIE11c3MgamEgbmljaHQgYWJzb2x1dCBlaW4tCisgICAgZGV1dGlnIHNlaW4sIGFiZXIgZXR3YXMgTGllYmUgenVtIERldGFpbCBzb2xsdGUgYmVpIFNvbmRlcndhZmZlbiBhdWYKKyAgICBqZWRlbiBGYWxsIGdlbHRlbi4KKworICAgIFdhZmZlbiB2b20gVHlwIFdUX01JU0MgZHVlcmZlbiB3ZWRlciB1ZWJlciBlaW5lIERlZmVuZC0gbm9jaCBlaW5lCisgICAgSGl0RnVuYyB2ZXJmdWVnZW4uIERpZSBBQyBzb2xjaGVyIFdhZmZlbiBpc3QgaW1tZXIgMC4gV2VpdGVyIGR1ZXJmZW4KKyAgICBzb2xjaGUgV2FmZmVuIGtlaW5lcmxlaSBhbmRlcmUga2FtcGZyZWxldmFudGUgQmVkZXV0dW5nIGJlc2l0emVuCisgICAgb2RlciBNYW5pcHVsYXRpb25lbiBhbS9pbSBTcGllbGVyL0dlZ25lciB2ZXJ1cnNhY2hlbi4KKworCisgICAgYi4gQmVtZXJrdW5nZW4genUgZWluaWdlbiBQcm9wZXJ0aWVzOgorCisgICAgIFBfV0MKKyAgICAgICAgRGllIFdDIHNvbGx0ZSBlaW5pZ2VybWFzc2VuICJyZWFsaXN0aXNjaCIgZ2V3YWVobHQgd2VyZGVuLiBEaWUKKyAgICAgICAgVmVyYW50d29ydHVuZyBoaWVyZnVlciBvYmxpZWd0IGRlbiBqZXdlaWxpZ2VuIFJNcy4gU2llIHNvbGx0ZQorICAgICAgICB6d2lzY2hlbiBjYS4gMzUgdW5kIDIwMCBsaWVnZW4uIEF1ZiBqZWRlbiBGYWxsIHNpbmQgZGllIGFrdHVlbGxlbgorICAgICAgICBHZW5laG1pZ3VuZ3NncmVuemVuIHp1IGJlYWNodGVuLiBTb2xsdGUgZGllIFdDIGRpZXNlIEdyZW56ZW4KKyAgICAgICAgdWViZXJzY2hyZWl0ZW4sIHVudGVybGllZ3QgZGllIFdhZmZlIGF1c3NlciBkZXIgR2VuZWhtaWd1bmcgZHVyY2gKKyAgICAgICAgZGVuIFJNIGRlciBCZXVydGVpbHVuZyBkdXJjaCBkYXMgV2FmZmVuZ3JlbWl1bS4KKworICAgICBQX05SX0hBTkRTCisgICAgICAgIFdhZmZlbiB1ZWJlciBlaW5lciBlZmZla3RpdmVuIFdDIHZvbiAxNTAgbXVlc3NlbiB6d2VpaGFlbmRpZyBzZWluLgorICAgICAgICBBdXNuYWhtZW4ga29lbm5lbiB1bnRlciBVbXN0YWVuZGVuIGdlbmVobWlndCB3ZXJkZW4sIHp1bSBCZWlzcGllbAorICAgICAgICB3ZW5uIGRpZSBXYWZmZSBzY2h3ZXIgZXJyZWljaGJhciBvZGVyIHphaGxlbm1hZXNzaWcgYmVncmVuenQsIGVpbmUKKyAgICAgICAgUXVlc3RiZWxvaG51bmcgZXRjLiBpc3QuIEFsbGUgZWluaGFlbmRpZ2VuIFdhZmZlbiB1ZWJlciBXQyAxNDAgc2luZAorICAgICAgICBpbiBqZWRlbSBGYWxsIGdlbmVobWlnZW4genUgbGFzc2VuLgorCisgICAgICAgIE1lc3NlciBtdWVzc2VuIGdlbmVyZWxsIGVpbmhhZW5kaWcgc2VpbiEKKworICAgICBQX1dFSUdIVAorICAgICAgICBCaXR0ZSByZWFsaXN0aXNjaCBoYWx0ZW4uIERhbWl0IGlzdCAqbmljaHQqIGRhcyBSTC1HZXdpY2h0CisgICAgICAgIGdlbWVpbnQsIHNvbmRlcm4gbWFuIHNvbGx0ZSBhbSBiZXN0ZW4gdmVyZ2xlaWNoYmFyZSBXYWZmZW4gZGVzCisgICAgICAgIE1HIGFscyBNYXNzc3RhYiBudXR6ZW4uIERhIGhpZXIgei5ULiBncmF2aWVyZW5kZSBEaXNrcmVwYW56ZW4KKyAgICAgICAgYmVzdGVoZW4sIGV2dGwuIG1hbCBtZWhyZXJlIHZlcmdsZWljaGVuLiBEaWUgVmVyYW50d29ydHVuZworICAgICAgICBoaWVyZnVlciBvYmxpZWd0IGRlbiBSTXMuCisKKyAgICAgICAgV2FmZmVuIG1pdCBlaW5lbSBHZXdpY2h0IHZvbiB1ZWJlciA0MDAwIEdyYW1tIHNvbGx0ZW4gbm9ybWFsZXJ3ZWlzZQorICAgICAgICBhdWNoIHp3ZWloYWVuZGlnIHNlaW4gb2RlciBtdWVzc2VuIGRlciBCYWxhbmNlIHZvcmdlbGVndCB3ZXJkZW4uCisKKyAgICAgKiogQmVzb25kZXJlIExlaWNodGdld2ljaHRlIGJpdHRlIGdlbmVobWlnZW4gbGFzc2VuLCB1bSBzcGFldGVyZW0gICAgICoqCisgICAgICoqIEFlcmdlciB2b3J6dWJldWdlbi4gR3JhZGUgZnVlciBLYWVtcGZlciBpc3QgZGFzIEdld2ljaHQgdm9uIFdhZmZlbiAqKgorICAgICAqKiBzZWhyIHdpY2h0aWchICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioKKworICAgIFp1ciBFcmlubmVydW5nOiBTcGllbGVyIG1pdCBLcmFmdCAyMCBrb2VubmVuIG51ciAyNTAwMCBHZXdpY2h0cy0KKyAgICBlaW5oZWl0ZW4gKCJHcmFtbSIpIHRyYWdlbi4KKworICAgICBQX1NJWkUKKyAgICAgICAgRGllIExhZW5nZSBkZXIgV2FmZmUgaW4gY20uIFNldHp0IG1hbiBzaWUgbmljaHQsIHNvIGdpbHQgZGVyCisgICAgICAgIERlZmF1bHQtIHdlcnQgZnVlciBkZW4gamV3ZWlsaWdlbiBXYWZmZW50eXAsIHdlbGNoZXIgaW4gZGVyIE1hbnBhZ2UKKyAgICAgICAgenUgUF9TSVpFIG5vdGllcnQgaXN0LgorCisgICAgIFBfVkFMVUUKKyAgICAgICAgV2llIGJlaSBQX1dFSUdIVCBzaW5kIGRpZSBSTXMgZ2VmcmFndDogQXVnZW5tYXNzIHphZWhsdC4gV2VydGUgdWViZXIKKyAgICAgICAgMTAwMDAgb2RlciBzbyBzaW5kIHp3YXIgbmV0dCwgYWJlciBzaW5ubG9zIHVuZCB1bnJlYWxpc3Rpc2NoLgorCisgICAgIFBfREFNX1RZUEUKKyAgICAgICAgSmVkZSBXYWZmZSwgZGllIGF1cyBwaHlzaWthbGlzY2hlbSBNYXRlcmlhbCBiZXN0ZWh0IChhbHNvIGZha3Rpc2NoCisgICAgICAgIGFsbGVzIG1pdCBIYXJkd2FyZSkgKm11c3MqIGVpbmVuIHBoeXNpa2FsaXNjaGVuIFNjaGFkZW5zdHlwIGhhYmVuLgorCisgICAgICoqIFdhZmZlbiBtaXQgbWVociBhbHMgZWluZW0gbmljaHRwaHlzaWthbGlzY2hlbiBTY2hhZGVuc3R5cCBvZGVyICAgKioKKyAgICAgKiogbWVociBhbHMgNTAlIG5pY2h0cGh5c2lrYWxpc2NoZW4gQW50ZWlsZW4gc2luZCBnZW5lcmVsbCB6dXIgICAgICAqKgorICAgICAqKiBHZW5laG1pZ3VuZyB2b3J6dWxlZ2VuIHVuZCBhbHMgQmVzb25kZXJoZWl0IHp1IGhhbmRoYWJlbi4gTmljaHQgICoqCisgICAgICoqIGdlbmVobWlndCB1bmQgbnVyIGltIFJhaG1lbiBkZXIgR2lsZGVuYmFsYW5jZSBlcm1vZWdsaWNodCB3ZXJkZW4gKioKKyAgICAgKiogYSkgV2FmZmVuIG1pdCBtZWhyIGFscyA2NiUgbmljaHRwaHlzaWthbGlzY2hlbSBTY2hhZGVuIGltIEFycmF5LCAqKgorICAgICAqKiBiKSBXYWZmZW4gbWl0IGVpbmVtIG5pY2h0cGh5c2lrYWxpc2NoZW4gU2NoYWRlbnN0eXAgdWViZXIgNTAlICAgICoqCisKKyAgICBXZWl0ZXJoaW4gZ2VuZWhtaWd1bmdzcGZsaWNodGlnIHNpbmQgZGllIFNjaGFkZW5zdHlwZW46CisKKyAgICBEVF9URVJST1IsIERUX1NPVU5ELCBEVF9TUVVFRVpFCisKKyAgICBEaWVzZSBTY2hhZGVuc3R5cGVuIHdlcmRlbiBpbiBXYWZmZW4gbnVyIGdlbmVobWlndCwgd2VubiBzaWUgZ3V0CisgICAgYmVncnVlbmRldCBzaW5kLgorCisgICAgRGVyIFNjaGFkZW5zdHlwIERUX0VYUExPU0lPTiB3aXJkIGluIFdhZmZlbiBnZW5lcmVsbCBuaWNodCBtZWhyCisgICAgZ2VuZWhtaWd0LgorCisgICAgIFBfV0VBUE9OX1RZUEUKKyAgICAgICAgTnVyIHp1ciBFcmlubmVydW5nOiBlcyBnaWJ0IGltIE1HIHp1IHZpZWxlIFNjaHdlcnRlciB1bmQgU3BlZXJlLgorICAgICAgICBOdXR6dCBhdWNoIGRpZSBhbmRlcmVuIFdhZmZlbnR5cGVuISAoTWVzc2VyIHVuZCBQZWl0c2NoZW4gc2luZCBzZWhyCisgICAgICAgIHJhci4gQml0dGUgYW5nZXBhc3N0ZSBXQ3MhKQorCisgICAgIFBfRUZGRUNUSVZFX1dDCisgICAgICAgIEhpZXIga2FubiBkaWUgZXZ0bCBkdXJjaCBlaW5lIEhpdEZ1bmMgdmVyYWVuZGVydGUgV0MgYW5nZWdlYmVuCisgICAgICAgIHdlcmRlbi4gRGVyIER1cmNoc2Nobml0dHN3ZXJ0IHNvbGwgZGEgc3RlaGVuLiBEaWUgS2FlbXBmZXJnaWxkZSBrYW5uCisgICAgICAgIGRhcyBpbiBnZXdpc3NlbiBHcmVuemVuIGFic2NoYWV0emVuLgorCisgICAgIFBfRUZGRUNUSVZFX0FDCisgICAgICAgIEZ1ZXIgUGFyYWRld2FmZmVuIHNldHplbi4gV2VydGUgdW5iZWRpbmd0IG1pdCBCb2luZyBhYnNwcmVjaGVuIQorCisgICAgIFBfTk9CVVkKKyAgICAgICAgV2FmZmVuIGFiIFdDIDE1MCB3ZXJkZW4gYmVpbSBWZXJrYXVmIGltIExhZGVuIHp1cnVlY2tiZWhhbHRlbi4gRXMKKyAgICAgICAgc29sbHRlIGFiZXIgYXVjaCBmdWVyIFdhZmZlbiwgZGllIEhpdEZ1bmNzIGVudGhhbHRlbiwgUF9OT0JVWQorICAgICAgICBnZXNldHp0IHdlcmRlbi4KKworCisgICAgYy4gU3BlemlhbHdhZmZlbi9XYWZmZW4gbWl0IFNvbmRlcmZ1bmt0aW9uCisKKyAgICAgKiogQUxMRSBXYWZmZW4gbWl0IEhpdEZ1bmMgb2RlciBlbnRzcHJlY2hlbmRlciBGa3QuIG11ZXNzZW4gICAqKgorICAgICAqKiBnZW5laG1pZ3Qgd2VyZGVuISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqCisKKyAgICBTb2xjaGUgV2FmZmVuIG11ZXNzZW4gdWViZXIgZWluIFBfSU5GTyB2ZXJmdWVnZW4gdW5kIGlyZ2VuZHdvIGluCisgICAgaWhyZXIgQmVzY2hyZWlidW5nIG9kZXIgaW0gUF9JTkZPIG1pbmRlc3RlbnMgZWluZSBBbmRldXR1bmcgdWViZXIKKyAgICBkaWUgSGVya3VuZnQgb2RlciBkZW4gR3J1bmQgaWhyZXIgYmVzb25kZXJlbiBGYWVoaWdrZWl0IGhhYmVuLgorCisgICAgQXVjaCBTcGV6aWFsd2FmZmVuIHNvbGx0ZW4gbmFjaCBNb2VnbGljaGtlaXQgbmljaHQgdWViZXIgZWluZQorICAgIEVGRkVDVElWRV9XQyB2b24gMjAwIGhpbmF1c2dlaGVuLiBEZXIgUmV0dXJuLVdlcnQgZGVyIEhpdEZ1bmMsCisgICAgc29mZXJuIGVyIHZvbiAwIGFid2VpY2h0LCBNVVNTIHBlciByYW5kb20oKSB6dXJ1ZWNrZ2VnZWJlbiB3ZXJkZW4sCisgICAgZGEgZXIgb2huZSB3ZWl0ZXJlcyByYW5kb20oKSBhdWYgZGllIFdDIGF1ZmFkZGllcnQgd2lyZC4KKworICAgIFp1IGJlYWNodGVuIGlzdCwgZGFzcyBtYW4gYmVpIFdhZmZlbiwgZGllIG51ciBmdWVyIE5QQ3MgbWVociBTY2hhZGVuCisgICAgbWFjaGVuIHNvbGxlbiwgbmljaHQgKG51cikgdWViZXIgUF9SQUNFIHBydWVmdCwgb2IgZGVyIEJlbnV0emVyIGVpbgorICAgIHNvbGNoZXIgaXN0LiBFcyBpc3QgZGVua2JhciwgZGFzcyBTcGllbGVyIGlocmUgUmFzc2UgdGVtcG9yYWVyIHZlci0KKyAgICBhZW5kZXJuIGtvZW5uZW4uIFdhZmZlbiBkaWUgbnVyIGJlaQorICAgICFpbnRlcmFjdGl2ZShRdWVyeVByb3AoUF9XSUVMREVEKSkgYmVzc2VyIHp1c2NobGFnZW4sIGJyYXVjaGVuCisgICAgbmF0dWVybGljaCBuaWNodCBnZW5laG1pZ3QgenUgd2VyZGVuLgorCisgICAgRGllIERpY2h0ZSBzb2xjaGVyIFdhZmZlbiBpbiBlaW5lbSBHZWJpZXQgc29sbHRlIGVpbiB2ZXJudWVuZnRpZ2VzCisgICAgTWFzcyBuaWNodCB1ZWJlcnNjaHJlaXRlbi4gRnVlciBlaW5lIFNvbmRlcndhZmZlIHNvbGx0ZW4gYXVjaAorICAgIGV0bGljaGUgbmljaHQtbWFnaXNjaGUgV2FmZmVuIGluIGRlciBVbWdlYnVuZyBzZWluLiBadW1pbmRlc3QgZGllCisgICAgc3RhcmtlbiBXYWZmZW4gKGFsc28gbmljaHQgZGllLCBkaWUgbnVyIGVpbmVuIEdhZyBvZGVyIHNvCisgICAgYmVpbmhhbHRlbiwgc29uZGVybiB3aXJrbGljaCBpbiBkZW4gS2FtcGYgZWluZ3JlaWZlbikgc29sbHRlbiBuaWNodAorICAgIHp1IGxlaWNodCB6dSBiZWtvbW1lbiBzZWluLiBIaWVyYXVmIHNvbGxlbiBkaWUgUk1zIGFjaHRlbi4gU29sY2hlCisgICAgU2FjaGVuIGdlaG9lcmVuIHp1IE1vbnN0ZXJuLCBkaWUgZWluIHdlbmlnIHNjaGxlY2h0ZXIgZXJyZWljaGJhcgorICAgIHNpbmQgb2RlciBkaWUgYmVzb25kZXJzIHN0YXJrIG9kZXIgc29uc3R3aWUgdW5hbmdlbmVobSBzaW5kLiBBbHNvCisgICAgbml4IHZlcnNjaGVua2VuLgorCisgICAgV2FmZmVuLCBkaWUgTW9uc3RlciB2ZXJnaWZ0ZW4gKGFsc28gbmljaHQgbnVyIFBfREFNX1RZUEUgRFRfUE9JU09OCisgICAgaGFiZW4pIHNpbmQgendhciBuaWNodCBncnVuZHNhZXR6bGljaCB2ZXJib3RlbiwgYWJlciBkb2NoCisgICAgdW5lcnd1ZW5zY2h0LiBTaWUgc2luZCBhdWYgamVkZW4gRmFsbCBnZW5laG1pZ3VuZ3NwZmxpY2h0aWcuCisgICAgQXVzc2VyZGVtIHNvbGx0ZSBkaWUgV2FocnNjaGVpbmxpY2hrZWl0IGVpbmVyIFZlcmdpZnR1bmcgcHJvCisgICAgS2FtcGZydW5kZSBtYXguIGJlaSAxJSBsaWVnZW4uCisKKyAgICBEZXMgd2VpdGVyZW4gbXVlc3NlbiBXYWZmZW4sIGRpZSBmdWVyIGJlc3RpbW10ZSBHaWxkZW4gYmVzdGltbXRlCisgICAgVm9ydGVpbGUgYnJpbmdlbiAoc2ljaCBiZWltIEthbWkgZGVyIFRhbmppYW4gbmljaHQgYWJudXR6ZW4genVtCisgICAgQmVpc3BpZWwpIGViZW5mYWxscyB2b24gZGVyIEJhbGFuY2UgZ2VuZWhtaWd0IHdlcmRlbi4KKworCisgICAgZC4gR2VuZWhtaWd1bmdzZ3JlbnplbgorCisgICAgRWluaGFlbmRpZ2UgV2FmZmVuICA6ICAgIGFiIFBfV0MgPj0gMTQwCisgICAgWndlaWhhZW5kaWdlIFdhZmZlbiA6ICAgIGFiIFBfV0MgPj0gMTc1CisKKyAgICBGdWVyIFdhZmZlbiBkaWUgZWluZW4gbmljaHRwaHlzaWthbGlzY2hlbiBTY2hhZGVuc3R5cCBlbnRoYWx0ZW46CisKKyAgICBFaW5oYWVuZGlnZSBXYWZmZW4gIDogICAgYWIgUF9XQyA+PSAxMjAKKyAgICBad2VpaGFlbmRpZ2UgV2FmZmVuIDogICAgYWIgUF9XQyA+PSAxNTAKKworCisgICAgZS4gU3BlemllbGxlIFByb3BlcnRpZXMgZnVlciBkaWUgS2FlbXBmZXJnaWxkZQorCisgICAgRGllc2UgUHJvcGVydGllcyBzaW5kIGRlZmluaWVydCBpbiAnL3Ava2FlbXBmZXIva2FlbXBmZXIuaCcuIE1pdCBpaG5lbgorICAgIGthbm4gbWFuIEJvbmkgZnVlciBiZXN0aW1tdGUgQXR0YWNrZW4gZGVyIEthZW1wZmVyIHZlcmdlYmVuICh6LkIuCisgICAgQm9udXMgYXVmIFdhZmZlbnNjaGxhZyBvZGVyIFRvZGVzc3Rvc3MpLgorCisgICAgR2VuYXVlcmUgSGlud2Vpc2UgenUgZGllc2VuIFByb3BlcnRpZXMgdW5kIGRlbiB6dSBzZXR6ZW5kZW4gV2VydGVuCisgICAgZmluZGV0IG1hbiBpbiAnbWFuIGthZW1wZmVyYm9uaScuCisKKyAgICBQcmluemlwaWVsbCBnaWx0OgorCisgICAgICoqIEFsbGUgV2FmZmVuLCBpbiBkZW5lbiBlaW5lIHNvbGNoZSBQcm9wZXJ0eSBnZXNldHp0IHdpcmQsICAqKgorICAgICAqKiBzaW5kIG1pdCBkZXIgT2JqZWt0YmFsYW5jZSBhYnp1a2xhZXJlbi4gICAgICAgICAgICAgICAgICAgKioKKworCisgICAgZi4gUGFyaWVyd2FmZmVuCisKKyAgICBQYXJpZXJ3YWZmZW4gc2luZCBXYWZmZW4sIGRpZSBkaWUgVmVydGVpZGlndW5nIHVudGVyc3R1ZXR6ZW4uICBFaW5lCisgICAgV2FmZmUgd2lyZCBhbHMgUGFyaWVyd2FmZmUgdmVyd2VuZGV0LCB3ZW5uIGRpZSBQcm9wZXJ0eSBQX1BBUlJZCisgICAgZ2VzZXR6dCBpc3QuIEZvbGdlbmRlIFdlcnRlIHNpbmQgbW9lZ2xpY2g6CisKKyAgICBQQVJSWV9OT1QgICAgIERpZSBpc3QgS0VJTkUgUGFyaWVyd2FmZmUgKD1kZWZhdWx0KS4KKworICAgIFBBUlJZX09OTFkgICAgRGllcyBpc3QgZWluZSByZWluZSBQYXJpZXJ3YWZmZS4KKworICAgIFBBUlJZX1RPTyAgICAgRGllc2UgV2FmZmUgd2lyZCBzb3dvaGwgYWxzIFBhcmllcndhZmZlIGFscyBhdWNoCisgICAgICAgICAgICAgICAgICBhbHMgQW5ncmlmZnN3YWZmZSBiZW51dHp0CisKKyAgICBEaWUgU2NodXR6d2lya3VuZyBkZXIgUGFyaWVyd2FmZmUgd2lyZCB3aWUgYmVpIFJ1ZXN0dW5nZW4gdWViZXIgZGllCisgICAgUHJvcGVydHkgUF9BQyBnZXNldHp0LiBVZWJlciBkaWUgUHJvcGVydHkgUF9ERUZFTkRfRlVOQyBrYW5uIHdpZSBiZWkKKyAgICBSdWVzdHVuZ2VuIGVpbmUgRGVmZW5kRnVuYyBnZXNldHp0IHdlcmRlbi4KKworICAgIFdhZmZlbiBtaXQgUEFSUllfT05MWSB1bnRlcmxpZWdlbiBkZW4gZ2xlaWNoZW4gUF9BQy1HcmVuendlcnRlbiB3aWUKKyAgICBSdWVzdHVuZ2VuIHZvbSBUeXAgQVRfU0hJRUxELiBXYWZmZW4gbWl0IFBBUlJZX1RPTyBvZGVyIGVpbmVyCisgICAgRGVmZW5kRnVuYyBtdWVzc2VuIGdlbmVyZWxsIGdlbmVobWlndCB3ZXJkZW4uCisKKyBTSUVIRSBBVUNIOgorICAgICBiYWxhbmNlLCBydWVzdHVuZ2VuLCBmZXJud2FmZmVuLCB1bmlxdWVzLCBucGNzLCBncmVuendlcnRlLAorICAgICBhdHRyaWJ1dHN2ZXJhZW5kZXJ1bmdlbiwgcmVzaXN0ZW56ZW4sIGthbXBmb2JqZWt0ZSwga2FlbXBmZXJib25pCisKKyBMRVRaVEUgQWVOREVSVU5HOgorICAgICAxNi4gSmFudWFyIDIwMTQgR2xvaW5zb24KZGlmZiAtLWdpdCBhL2RvYy93aXovd2FmZmVuc2tpbGxzIGIvZG9jL3dpei93YWZmZW5za2lsbHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUyZGRmNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy93aXovd2FmZmVuc2tpbGxzCkBAIC0wLDAgKzEsNTkgQEAKK1dhZmZlbnNraWxscyBpbSBNb3JnZW5HcmF1ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGFzIFNraWxsc3lzdGVtIGRlcyBNR3MgaXN0IHJlY2h0IGtvbXBsZXguIEhpZXIgbnVyIGVpbiBwYWFyIEJlbWVlcmt1bmdlbgorenUgZGVuIFdhZmZlbnNraWxscy4KKworRXMgZ2lidCAyIFNvcnRlbiB2b24gV2FmZmVuc2tpbGxzOgorCisqIGFsbGdlbWVpbmUgV2FmZmVuc2tpbGxzLiBEaWVzZSBzaW5kIGluIGRpZSBTaGVsbCBlaW5nZWJ1bmRlbi4KKyogR2lsZGVuc3BlemlmaXNjaGUgU2tpbGxzLiBEaWVzZSBzaW5kIGluIGRlciBlbnRzcHJlY2hlbmRlbiBHaWxkZSBkZWZpbmllcnQuCisKK0RpZSBTa2lsbHMgd2VyZGVuIGluIGVpbmVyIFByb3BlcnR5IGltIFNwaWVsZXIgZ2VzcGVpY2hlcnQgKFBfTkVXU0tJTExTKS4gRXMKK2hhbmRlbHQgZXMgc2ljaCB1bSBlaW4gbWFwcGluZywgZGFzIGRpZXNlbiBBdWZiYXUgaGF0OgorCisoWyJBTlkiOihbQU5ZU0tJTExTXSksCisiZ2lsZGUxIjooW1NLSUxMU19WT05fR0lMREVfMV0pLAorImdpbGRlMiI6KFtTS0lMTFNfVk9OX0dJTERFXzJdKSwKKy4uLl0pCisKK01pdCBRdWVyeShQX05FV1NLSUxMUykgZXJoYWVsdCBtYW4gZGFzIGdlc2FtdGUgTWFwcGluZy4KKworTWl0IFF1ZXJ5UHJvcChQX05FV1NLSUxMUykgZXJoYWVsdCBtYW4gTlVSIERJRSBTS0lMTFMgREVSIEFLVFVFTExFTiBHSUxERSEKK0RhcyBoZWlzc3QsIGltIG9iaWdlbiBCZWlzcGllbCwgd2VubiBkZXIgU3BpZWxlciBpbiBnaWxkZTEgaXN0LCBpc3QKK2RlciBSZXR1cm53ZXJ0IFNLSUxMU19WT05fR0lMREVfMS4KKworU3ByaWNoOiBBbGxnZW1laW5lIFNraWxscywgd2llIGFsbGdlbWVpbmUgV2FmZmVuc2tpbGxzLCBzdGVoZW4gaW4gZGllc2VtIAorTWFwcGluZyBuaWNodCBkcmluISBFYmVuc28gd2llIHouQi4gZGVyIGVudGdpZnRlLVNwZWxsIGF1cyBkZXIgCitEdWVzdGVyd2FsZHF1ZXN0ICh3b2hsIGFiZXIgZGVyIGRlciBLbGVyaWtlciwgd2VubiBtYW4gZWluZXIgaXN0KS4KKworTWl0IFF1ZXJ5U2tpbGwoInNraWxsbmFtZSIpIGthbm4gbWFuIGVpbmVuIFNraWxsIGFiZnJhZ2VuLiBEYWJlaSB3aXJkLCB3ZW5uCitrZWluIFNraWxsIHVudGVyIGRpZXNlbSBOYW1lbiBpbiBkZXIgYWt0dWVsbGVuIEdpbGRlIGVpbmdldHJhZ2VuIGlzdCwgZWluCitldmVudHVlbGwgdm9yaGFuZGVuZXIgQU5ZLVNraWxsIHp1cnVlY2tnZWdlYmVuLiBEYWhlciB3aXJkIHouQi4gYmVpIGVpbmVtCitBYmVudGV1cmVyIGJlaSBRdWVyeVByb3AoUF9ORVdTS0lMTFMpIGRlciBTY2h3ZXJ0d2FmZmVuc2tpbGwgbmljaHQKK2FuZ2V6ZWlndCwgd29obCBhYmVyIGJlaSBlaW5lbSBRdWVyeVNraWxsKEZJR0hUKFdUX1NXT1JEKSkuCisKK1ByaW9yaXRhZXQgaGF0IGltbWVyIGRlciBTa2lsbCBkZXIgR2lsZGUsIHdlbm4gZXIgdm9yaGFuZGVuIGlzdC4KKworTWFuIGthbm4gYXVjaCBTa2lsbHMgaW4gZGVyIEdpbGRlIHVudGVyZHJ1ZWNrZW4uIERpZXMgZ2VodCB1ZWJlciBkaWUgUG9wZXJ0eQorUF9HVUlMRF9ERUFDVElWQVRFX1NLSUxMUy4gRGllc2UgU2tpbGxzIHdlcmRlbiBuaWNodCBwZXIgc2UgdW50ZXJkcnVlY2t0LAorc29uZGVybiBudXIgZGllIGVudHNwcmVjaGVuZGVuIEFOWS1Ta2lsbHMuCisKK1NwcmljaDogRXMgc2VpIEEgZWluIEFiZW50ZXVyZXIuCisKK3hjYWxsIEEtPlF1ZXJ5U2tpbGwoRklHSFQoV1RfU1dPUkQpKQorCittYWcgZm9sZ2VuZGVzIHp1cnVlY2tnZWJlbjoKKworUmVzdWx0OiAoWyJzaV9kaWZmaWN1bHR5IjoxNTAsInNpX2FiaWwiOjAsInNpX2d1aWxkIjoiQU5ZIl0pCisKK3RyaXR0IEEgZGFyYXVmaGluIGRlbiBLYWVtcGZlcm4gYmVpIHVuZCBoYXQgZG9ydCBub2NoIGtlaW5lbiBTY2h3ZXJ0c2tpbGwKK2dlbGVybnQsIHdpcmQgaGluZ2VnZW4gMCB6dXJ1ZWNrZ2VnZWJuLiBGdWVyIGRlbiBGYWxsIGVpbmVzIEF1c3RyaXR0cyBpc3QgZGVyCitXZXJ0IGFiZXIgbmFjaCB3aWUgdm9yIGdlc3BlaWNoZXJ0LCB3aWUgbWFuIHBlciBRdWVyeShQX05FV1NLSUxMUykgbGVpY2h0CitzZWhlbiBrYW5uLiBEaWVzIHdpcmQgdW50ZXJkcnVlY2t0LCBkYSBpbiBkZXIgS2FlbXBmZXJnaWxkZSBkaWUgUHJvcCAKK1BfR1VJTERfREVBQ1RJVkFURV9TS0lMTFMgZ2VzZXR6dCB3aXJkLgorCitUcml0dCBkZXIgU3BpZWxlciBkZW4gQ2hhb3RlbiBiZWksIGFlbmRlcnQgc2ljaCBoaW5nZWdlbiBiZWkgZGllc2VtIEF1ZnJ1ZgorbmljaHRzLgorCitMZXR6dGUgQWVuZGVydW5nOiBIdW1uaSwgMjAwMy0wNy0wOQpkaWZmIC0tZ2l0IGEvZG9jL3dpei96YXViZXJ0cmFlbmtlIGIvZG9jL3dpei96YXViZXJ0cmFlbmtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZGI1NGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3phdWJlcnRyYWVua2UKQEAgLTAsMCArMSw5NSBAQAorCitaYXViZXJ0cmFlbmtlIGZ1ZXIgTWFnaWVyCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1dpZSBtYW4gZGllIFRyYWVua2UgamV0enQgZ2VuYXUgdmVyc3RlY2t0IGJsZWlidCBkZW0gYmV0cmVmZmVuZGVuIE1hZ2llcgordWViZXJsYXNzZW4sIGVzIHNvbGx0ZSBoYWx0IGluc2dlc2FtdCBlaW4gYnJlaXRlcyBTcGVrdHJ1bSB2b24gc2VociBsZWljaHQKK3p1IGZpbmRlbiBiaXMgZmFzdCB1bm1vZWdsaWNoIGFiZ2VkZWNrdCBzZWluLgorRnVlciBkYXMgT3Jha2VsIGRlciBIb2NoZWJlbmUgc29sbHRlIGRhbm4gZWluIGVudHNwcmVjaGVuZGVyIFNwcnVjaAordm9yYmVyZWl0ZXQgd2VyZGVuLCBuaWNodCB6dSBrcnlwdGlzY2ggYWJlciBkb2NoIG9yYWtsZWlnLgorCitEaWUgenVmYWVsbGlnZSBBdXN3YWhsIGFuIHp1Z2VvcmRuZXRlbiBaYXViZXJ0cmFlbmtlbiB3aXJkIGJlaW0gZXJzdGVuCitFaW5sb2dnZW4gZGVzIFNwaWVsZXJzIGZlc3RnZWxlZ3QuCisKK0RpZSBSYWV1bWUsIGluIGRlbmVuIFRyYWVua2UgdmVyc3RlY2t0IHdlcmRlbiAodW5kIGVzIGR1ZXJmZW4gbnVyIFJhZXVtZQorc2VpbiksIHdlcmRlbiBpbiA4IExpc3RlbiBlaW5nZXRlaWx0LCBqZSBuYWNoIFNjaHdpZXJpZ2tlaXRzZ3JhZC4gRGVyIGhhZW5ndAorbmF0dWVybGljaCB2b24gZGVyIExhZ2UgKHNvIGlzdCBlaW4gVHJhbmsgaW4gZWluZW0gbW9uc3RlcndpbW1lbG5kZW4KK0xhYnlyaW50aCBzY2h3aWVyaWdlciB6dSBlcnJlaWNoZW4sIGFscyBlaW5lciBhdWYgZGVyIEhvY2hlYmVuZSksIHVuZCB2b24KK2RlbSBWZXJzdGVjayBzZWxic3QgYWIuCitRdWVzdHJhZXVtZSwgZGllIG51ciBpbSBSYWhtZW4gZGVyIFF1ZXN0IGVycmVpY2hiYXIgc2luZCwgc2luZCB1bmdlZWlnbmV0LgorCisKK01laW4gU3RhbmRhcmRiZWlzcGllbCBmdWVyIGVpbiBWZXJzdGVjayBpc3QgaW1tZXIgZm9sZ2VuZGVzOgorIAorPiBzY2hhdWUKK2JsYWJsYWJsYWJsYSAuLi4uIEVpbiBTY2hyZWlidGlzY2ggc3RlaHQgaW4gZGVyIEVja2UuIC4uLiBibGFibGFibGEKKz4gdW50IHNjaHJlaWJ0aXNjaAorRXIgaGF0IGVpbmUgU2NodWJsYWRlLgorPiBvZWZmbmUgc2NodWJsYWRlICAgICAgICAgICAgICAgICAgICAgICAgIAorRHUgb2VmZm5lc3QgZGllIFNjaHVibGFkZS4KKz4gdW50IHNjaHVibGFkZQorSW4gZGVyIFNjaHVibGFkZSBlbnRlY2tzdCBEdSBlaW4gcGFhciBQYXBpZXJlLgorPiB1bnQgcGFwaWVyZQorQmVpbSBSdW13dWVobGVuIGluIGRlbiBQYXBpZXJlbiBlbnRkZWNrc3QgRHUgZWluZW4ga2xlaW5lbiBaYXViZXJ0cmFuaywgZGVuCitEdSBzb2ZvcnQgdHJpbmtzdC4KKyAKK0Rhbm4ga29tbXQgZGllIEF1c3dhaGxzZXF1ZW56LCB3ZWxjaGUgRWlnZW5zY2hhZnQgbWFuIGVyaG9laGVuIHdpbGwuCisgCitJbiBkaWVzZW0gRmFsbCByZWljaGVuIERldGFpbHMsIERldGFpbHMgbWl0IENsb3N1cmUgdW5kIGVpbmUgS29tbWFuZG8gZnVlcgorIm9lZmZuZSIgYXVzLiBFdHdhIHdpZSBmb2xndDoKKworICB2b2lkIGNyZWF0ZSgpIHsKKyAgICBbLi4uXQorICAgIFNldFByb3AoUF9JTlRfTE9ORywgLi4uIEVpbiBTY2hyZWlidGlzY2ggc3RlaHQgaW4gZGVyIEVja2UgLi4uKTsKKyAgCisgICAgQWRkRGV0YWlsKCh7InRpc2NoIiwgInNjaHJlaWJ0aXNjaCJ9KSwKKyAgICAgICJFciBoYXQgZWluZSBTY2h1YmxhZGUuIik7CisKKyAgICBBZGRDbWQoIm9lZmZuZSZzY2h1YmxhZGUiLCAjJ2FjdGlvbl9vZWZmbmUsCisgICAgICAgICAgICJXYXMgbW9lY2h0ZXN0IGR1IG9lZmZuZW4uIik7CisgIH0KKworICBwcml2YXRlIGludCBhY3Rpb25fb2VmZm5lKCkgeworICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksICJEdSBvZWZmbmVzdCBkaWUgU2NodWJsYWRlLlxuIik7CisgICAgdGVsbF9yb29tKHRoaXNfb2JqZWN0KCksIHRoaXNfcGxheWVyKCktPk5hbWUoKSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBvZWZmbmV0IGVpbmUgU2NodWJsYWRlLlxuIiwgKHt0aGlzX3BsYXllcigpfSkpOworCisgICAgQWRkRGV0YWlsKCJzY2h1YmxhZGUiLAorICAgICAgICAgICAgICAiSW4gZGVyIFNjaHVibGFkZSBlbnRkZWNrc3QgZHUgZWluIHBhYXIgUGFwaWVyZS5cbiIpOworICAgIEFkZERldGFpbCgicGFwaWVyZSIsICMnZGV0YWlsX3BhcGllcmUpOworICB9CisKKyAgLy8gWmF1YmVydHJhbmtnZWJlbmRlcyBEZXRhaWwgIAorICBwcml2YXRlIHN0cmluZyBkZXRhaWxfcGFwaWVyZSgpIHsKKyAgICBpZiAodGhpc19wbGF5ZXIoKS0+RmluZFBvdGlvbigKKyAgICAgICAgYnJlYWtfc3RyaW5nKCJCZWltIFJ1bXd1ZWhsZW4gaW4gZGVuIFBhcGllcmVuIGVudGRlY2tzdCBEdSBlaW5lbiAiCisgICAgICAgICAgICAgICAgICAgICAia2xlaW5lbiBaYXViZXJ0cmFuaywgZGVuIER1IHNvZm9ydCB0cmlua3N0LiIsIDc4KSkpCisgICAgICByZXR1cm4gIiI7ICAKKyAgICAgIC8vIEVzIG11c3MgZWluIFN0cmluZyB6dXJ1ZWNrZ2VnZWJlbiB3ZXJkZW4sIGRhIG1hbiBzb25zdAorICAgICAgLy8gZGllIEZlaGxlcm1lbGR1bmcgIlNvd2FzIHNpZWhzdCBkdSBoaWVyIG5pY2h0LiIgYmVrb21tdAorICAgIGVsc2UKKyAgICAgIHJldHVybiAiRGllIFBhcGllcmUgc2luZCBhbGxlIHVuYmVzY2hyaWZ0ZXQuXG4iOworICB9CisKKyAgLy8gQXVmcmFldW1lbiBkZXMgUmF1bWVzCisgIHZvaWQgcmVzZXQoKSB7CisgICAgaWYoIXNpemVvZihmaWx0ZXIoYWxsX2ludmVudG9yeSh0aGlzX29iamVjdCgpKSwgIydpbnRlcmFjdGl2ZSkpKSB7CisgICAgICBSZW1vdmVEZXRhaWwoInBhcGllcmUiKTsKKyAgICAgIFJlbW92ZURldGFpbCgic2NodWJsYWRlIik7CisgICAgfQorICAgIDo6cmVzZXQoKTsKKyAgfQorICAKK0ZpbmRQb3Rpb24oKSBnaWJ0IDEgenVydWVjaywgd2VubiBkZXIgU3BpZWxlciBkZW4gWmF1YmVydHJhbmsgZmluZGVuIGRhcmYuCisKK1dlciBhbHNvIFRyYWVua2UgdmVyc3RlY2tlbiB3aWxsLCBtYWNodCBzb3dhcyBpbiBkZXIgQXJ0IHVuZCBtZWxkZXQgZGFubiBkZW4KK1JhdW0gcGVyc29lbmxpY2ggb2RlciBwZXIgUG9zdCBiZWkgZGVuIEVyem1hZ2llcm4gYnp3IHNlaW5lbSBha3RpdmVuCitSZWdpb25zbWFnaWVyIGFuLgorIAorU0lFSEUgQVVDSDoKKyAgICBXZWl0ZXJlIERhdGVpbmFtZW4gbWl0IEJlaXNwaWVsZW4gZnVlciBUcmFua3ZlcnN0ZWNrZSBrYW5uIG1hbiBkZXIKKyAgICBEYXRlaSAvZXRjL3RyYWVua2UgZW50bmVobWVuLgorCisgICAgQmVmZWhsOiAgICB0cmFlbmtlIChmdWVyIE1hZ2llciB6dW0gRWluc2NoYWx0ZW4gZGVzIEZpbmRlbnMgdm9uIFpUcykKKworMTAuIEF1Z3VzdCAyMDE1IEdsb2luc29uCmRpZmYgLS1naXQgYS9kb2Mvd2l6L3p3ZWl0aWVkYiBiL2RvYy93aXovendlaXRpZWRiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNzJkMjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvd2l6L3p3ZWl0aWVkYgpAQCAtMCwwICsxLDIxIEBACitJbiBkZXIgWndlaXRpZS1EQiB3ZXJkZW4gYWxsZSBDaGFycyB2ZXJ3YWx0ZXQsIGRpZSBhbHMgWndlaXRpZSB2b24gaXJnZW5kZWluZW0gYW5kZXJlbiBtYXJraWVydCBzaW5kLiAoWnVyIFplaXQ6IG51ciBkaWUgc2VpdCBIZXJic3QgMjAxNCBlaW5nZWxvZ2d0ZW4uKQorCitEaXJla3RlIEFiZnJhZ2UgZGVyIFp3ZWl0aWUtREIgKGZ1ZXIgRXJ6bWFnaWVyKToKKworRGllIFp3ZWl0aWUtREIgbGllZ3QgdW50ZXIKK3NlY3VyZS9BUkNIL3NlY29uZC5zcWxpdGUKK0RhcyB2ZXJ3YWx0ZW5kZSBPYmpla3QgaW0gTXVkIGlzdCAvc2VjdXJlL3p3ZWl0aWVzCisKK0F1ZiBkZXIgU2hlbGwgZnJhZ3QgbWFuIGRpZSBEQiByZWNodCBzaW1wZWwgc28gYWI6CitzcWxpdGUzIC1jb2x1bW4gLWhlYWRlciBzZWN1cmUvQVJDSC9zZWNvbmQuc3FsaXRlCisKK0FsbGUgWndlaXRpZXMgdm9uIEFyYXRob3JuIGVybWl0dGVsbjoKK3NlbGVjdCAqIGZyb20gendlaXRpZXMgd2hlcmUgZXJzdGllPSdhcmF0aG9ybic7CisKK0Vyc3RpZSB2b24gQWhhYiBlcm1pdHRlbG46CitzZWxlY3QgZXJzdGllIGZyb20gendlaXRpZXMgd2hlcmUgbmFtZT0nYWhhYic7CisKK0RpZXNlIHNlbGVjdC1BbndlaXN1bmdlbiBsYXNzZW4gc2ljaCAoYWxzIEVNKSBhdWNoIGltIE11ZCBhYnNldHplbjoKK3hjYWxsIC9zZWN1cmUvendlaXRpZXMtPnNxbF9xdWVyeSgKKyAgICAic2VsZWN0ICogZnJvbSB6d2VpdGllcyB3aGVyZSBlcnN0aWU9J2FyYXRob3JuJzsiKQorCg==