From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Guy Briggs Subject: Re: Linux audit performance impact Date: Wed, 11 Feb 2015 11:51:08 -0500 Message-ID: <20150211165108.GW29998@madcap2.tricolour.ca> References: <9DBA79E0CE64AA42B07DEDAAD0F7DB9141659EE1@G4W3222.americas.hpqcorp.net> <20150129165231.GU29998@madcap2.tricolour.ca> <9DBA79E0CE64AA42B07DEDAAD0F7DB914165A49A@G4W3222.americas.hpqcorp.net> <20150203164531.GZ18752@madcap2.tricolour.ca> <20150203170258.GB18752@madcap2.tricolour.ca> <9DBA79E0CE64AA42B07DEDAAD0F7DB914165B73B@G4W3222.americas.hpqcorp.net> <20150204161557.GF18752@madcap2.tricolour.ca> <9DBA79E0CE64AA42B07DEDAAD0F7DB914165BA8B@G4W3222.americas.hpqcorp.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <9DBA79E0CE64AA42B07DEDAAD0F7DB914165BA8B@G4W3222.americas.hpqcorp.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com To: "Viswanath, Logeswari P (MCOU OSTL)" Cc: "linux-audit@redhat.com" List-Id: linux-audit@redhat.com T24gMTUvMDIvMDYsIFZpc3dhbmF0aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkgd3JvdGU6Cj4g SGkgYWxsLAo+IAo+IFBsZWFzZSBmaW5kIHRoZSBiZWxvdyB0aGUgZGV0YWlscyBvZiB0aGUgcGVy Zm9ybWFuY2UgdGVzdCB3ZSByYW4uCj4gSXQgd291bGQgYmUgZ3JlYXQgaWYgd2UgZ2V0IGhlbHAg dG8gaWRlbnRpZnkgdGhlIHJlYXNvbiBiZWhpbmQgdGhlIGRlZ3JhZGF0aW9uIGFuZCB0aGUgd2F5 cyBvZiBpbXByb3ZpbmcgaXQuIAo+IAo+IEtlcm5lbCBWZXJzaW9uOgo+IHJvb3QgPiB1bmFtZSAt cgo+IDMuMTMuMC0zNi1nZW5lcmljCj4gCj4gT1MgVmVyc2lvbjoKPiBVYnVudHUgMTQuMDQuMQo+ IAo+IE5vLiBvZiBDUFVzOiAKPiByb290ID4gbnByb2MKPiAyNAo+IAo+IEF1ZGl0IFN0YXR1czoK PiByb290ID4gYXVkaXRjdGwgLXMKPiBBVURJVF9TVEFUVVM6IGVuYWJsZWQ9MSBmbGFnPTEgcGlk PTAgcmF0ZV9saW1pdD0wIGJhY2tsb2dfbGltaXQ9MzIwIGxvc3Q9NTcxOTAzNTMgYmFja2xvZz0w Cj4gCj4gUnVsZXMgQ29uZmlndXJlZDoKPiByb290ID4gYXVkaXRjdGwgLWwKPiBMSVNUX1JVTEVT OiBleGl0LGFsd2F5cyBhcmNoPTMyMjEyMjU1MzQgKDB4YzAwMDAwM2UpIHN5c2NhbGw9YWxsCj4g Cj4gQXR0YWNoZWQgaXMgdGhlIHByb2dyYW0gdXNlZCB0byBsb2FkIHRoZSBzeXN0ZW0uCj4gCj4g UmVzdWx0czoKPiAKPiBXaXRob3V0IGVuYWJsaW5nIGF1ZGl0CTEyLjI5Cj4gV2l0aCBhdWRpdGlu ZyBlbmFibGVkIGFuZCBubyBydWxlcyBjb25maWd1cmVkIDEyLjMxCj4gV2l0aCBhdWRpdGluZyBl bmFibGVkLCAxIHJ1bGUgY29uZmlndXJlZCBidXQgYXVkaXRkIG5vdCBydW5uaW5nIC0ga2F1ZGl0 ZCBsb2dzIGF1ZGl0IHJlY29yZHMgdG8gc3lzbG9nIHZpYSBwcmludGsJNDEuMDIJCQoKVGhpcyB3 b3VsZCBiZSBtb3JlIG1lYW5pbmdmdWwgaWYgeW91IGhhY2tlZCB0aGUga2VybmVsIHRvIGRyYWlu IHRoZQpxdWV1ZSBmaWd1cmF0aXZlbHkgdG8gL2Rldi9udWwgdG8gZWxpbWluYXRlIHRoZSBlZmZl Y3Qgb2YgYXVkaXRkCmRyYWluaW5nIGl0LCBvciBzeXNsb2cgY292ZXJpbmcgZm9yIGEgbWlzc2lu ZyBhdWRpdGQuICBUaGlzIHN0YXQgZG9lc24ndAp0ZWxsIHVzIHRoYXQgbXVjaCBzaW5jZSB0aGUg SS9PIGFjdCBjYW4gdmFyeSBzaWduaWZpY2FudGx5IHBlcgppbnN0YWxsYXRpb24uICBUaGF0IG9u ZSBydWxlIHlvdSBjaG9zZSBpcyBwcmV0dHkgdW5uYXR1cmFsbHkgYWJ1c2l2ZSBhbmQKbmVlZHMg dG8gYmUgY2FyZWZ1bGx5IHRob3VnaHQgb3V0IHRvIGF2b2lkIHNlbGYtbWVhc3VyZW1lbnQuCgo+ IFRoZSBkZWdyYWRhdGlvbiBpcyBhcm91bmQgMjAwJQo+IAo+IFJlZ2FyZHMsCj4gTG9nZXN3YXJp Lgo+IAo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogUmljaGFyZCBHdXkgQnJp Z2dzIFttYWlsdG86cmdiQHJlZGhhdC5jb21dIAo+IFNlbnQ6IFdlZG5lc2RheSwgRmVicnVhcnkg MDQsIDIwMTUgOTo0NiBQTQo+IFRvOiBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQIChNQ09VIE9TVEwp Cj4gQ2M6IFNhdGlzaCBDaGFuZHJhIEtpbGFydTsgU3RldmUgR3J1YmI7IGxpbnV4LWF1ZGl0QHJl ZGhhdC5jb20KPiBTdWJqZWN0OiBSZTogTGludXggYXVkaXQgcGVyZm9ybWFuY2UgaW1wYWN0Cj4g Cj4gT24gMTUvMDIvMDQsIFZpc3dhbmF0aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkgd3JvdGU6 Cj4gPiBUaGUgaW50ZW50IGlzIHRvIGNhbGN1bGF0ZSB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IGJ5 IHRoZSBhdWRpdGluZyAKPiA+IGNvbXBvbmVudHMgc3VjaCBhcwo+ID4gCj4gPiAxKSBpbXBhY3Qg YmVjYXVzZSBvZiBrYXVkaXRkIHdpdGhvdXQgYXVkaXRkIC0gYnV0IGthdWRpdGQgd3JpdGVzIHRv IHN5c2xvZywgc28gd2UgYXJlIHVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIGltcGFjdCBqdXN0IGJl Y2F1c2Ugb2Yga2F1ZGl0ZCAtIEl0IGlzIGZpbmUgZXZlbiBpZiB0aGUgYXVkaXQgcmVjb3JkIGlz IGRyb3BwZWQgYnkga2F1ZGl0ZC4gSXMgdGhlcmUgYW55IHdheSB0byBkbyB0aGlzPwo+IAo+IE5v dCB5ZXQuICBUaGF0IGlzIGEgbW9kZSB0aGF0IGhhcyBub3QgYmVlbiB1c2VmdWwgdG8gYW55b25l IHlldC4gIFlvdSBhcmUgd2VsY29tZSB0byBoYWNrIGEgY3VzdG9tIGtlcm5lbCB0byBkaXNhYmxl IGtsb2cgZm9yIGRvaW5nIHRlc3RpbmcgaW5zdHJ1bWVudGF0aW9uLgo+IAo+ID4gMikgaW1wYWN0 IGJlY2F1c2Ugb2YgcnVubmluZyBhdWRpdGQgLSBsb2cgZm9ybWF0IE5PTE9HCj4gPiAzKSBpbXBh Y3QgYmVjYXVzZSBvZiBydW5uaW5nIGF1ZGlzcGQgLSBzbWFsbCBwbHVnaW4gaXMgd3JpdHRlbiB3 aGljaCB3aWxsIGp1c3QgcmVhZCB0aGUgYXVkaXQgcmVjb3JkcyBhbmQgZG9lc24ndCBwcm9jZXNz ZXMgaXQuCj4gPiAKPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiBGcm9tOiBSaWNo YXJkIEd1eSBCcmlnZ3MgW21haWx0bzpyZ2JAcmVkaGF0LmNvbV0KPiA+IFNlbnQ6IFR1ZXNkYXks IEZlYnJ1YXJ5IDAzLCAyMDE1IDEwOjMzIFBNCj4gPiBUbzogU2F0aXNoIENoYW5kcmEgS2lsYXJ1 Cj4gPiBDYzogVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKTsgU3RldmUgR3J1YmI7 IAo+ID4gbGludXgtYXVkaXRAcmVkaGF0LmNvbQo+ID4gU3ViamVjdDogUmU6IExpbnV4IGF1ZGl0 IHBlcmZvcm1hbmNlIGltcGFjdAo+ID4gCj4gPiBPbiAxNS8wMi8wMywgU2F0aXNoIENoYW5kcmEg S2lsYXJ1IHdyb3RlOgo+ID4gPiBUaGFua3MgZm9yIFRoZSBpbmZvLiBCdXQgbXkgcXVlc3Rpb24g d2FzIHJoZXRvcmljYWwuLi4gSSBtZWFudCB0byAKPiA+ID4gc2F5IHRoYXQgaXQgd291bGQgbm90 IGJlIG11Y2guLi4gU2hlIGlzIHRyeWluZyB0byBib21iYXJkIHRoZSBzeXN0ZW0gCj4gPiA+IHdp dGggb3BlbiBjYWxscyAuLi4gU28gbG90cyBhbmQgbG90cyBvZiBldmVudHMgd2lsbCBiZSBnZW5l cmF0ZWQgYW5kIAo+ID4gPiBrZXJuZWwgaGFzIHRvIHdyaXRlIGRvd24gdGhlIGV2ZW50cyBzb21l IHdoZXJlIG9yIGRpc2NhcmQgdGhlbS4uLgo+ID4gCj4gPiBFeGFjdGx5LiAgSXQgaXMgb2YgbGl0 dGxlIHByYWN0aWNhbCB1c2UuICBZb3UgaGF2ZSB0byBkbyBJL08gYXQgc29tZSBwb2ludCwgZWl0 aGVyIHRvIHRoZSBzYW1lIGRpc2sgb3IgYW5vdGhlciwgb3IgdG8gYSBuZXR3b3JrIGludGVyZmFj ZSBvciBzZXJpYWwgcG9ydCwgb3RoZXJ3aXNlLCBqdXN0IGNodWNrIGl0IG91dC4gIFlvdSBjb3Vs ZCBkbyBhIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50IG9uIGEgc2hvcnQgYnVyc3QsIHRoZW4gZHJh aW4gdGhlIHF1ZXVlLCBidXQgd2hhdCB3aWxsIHRoYXQgYWN0dWFsbHkgdGVsbCB1cz8KPiA+IAo+ ID4gPiBPbiBUdWVzZGF5LCBGZWJydWFyeSAzLCAyMDE1LCBSaWNoYXJkIEd1eSBCcmlnZ3MgPHJn YkByZWRoYXQuY29tPiB3cm90ZToKPiA+ID4gCj4gPiA+ID4gT24gMTUvMDIvMDMsIFNhdGlzaCBD aGFuZHJhIEtpbGFydSB3cm90ZToKPiA+ID4gPiA+IEhvdyBtYW55IGV2ZW50cyBjYW4ga2VybmVs IGFjY3VtdWxhdGUgd2l0aG91dCBJL28gPwo+ID4gPiA+Cj4gPiA+ID4gVGhlIGtlcm5lbCBkZWZh dWx0IGlzIDY0ICpidWZmZXJzKiwgYnV0IEkgdGhpbmsgRmVkb3JhIGFuZCBSSEVMIAo+ID4gPiA+ IHNldCBpdCB0byAzMjAuICBJdCBpcyBub3cgcG9zc2libGUgdG8gc2V0IGl0IHRvICIwIiB3aGlj aCBtZWFucyAKPiA+ID4gPiBsaW1pdGVkIG9ubHkgYnkgc3lzdGVtIHJlc291cmNlcy4gIFNlZSAi bWFuIGF1ZGl0Y3RsIiwgIi1iIiAKPiA+ID4gPiBvcHRpb24uICBBbiBldmVudCBjYW4gYmUgbWFk ZSB1cCBvZiBzZXZlcmFsIGJ1ZmZlcnMuCj4gPiA+ID4KPiA+ID4gPiBPZiBjb3Vyc2UsIGhvdyBs b25nIGEgc3lzdGVtIGxhc3RzIGJlZm9yZSB0aGUgcXVldWUgYmxvd3MgdXAgCj4gPiA+ID4gZGVw ZW5kcyBvbiB5b3VyIHJ1bGUgc2V0Li4uCj4gPiA+ID4KPiA+ID4gPiBIb3dldmVyLCBhdCB0aGUg bW9tZW50LCBpdCB3aWxsIHN0aWxsIHdyaXRlIG91dCB0byBrbG9nIGlmIGF1ZGl0ZCAKPiA+ID4g PiBpc24ndCBydW5uaW5nLgo+ID4gPiA+Cj4gPiA+ID4gPiBPbiBUdWVzZGF5LCBGZWJydWFyeSAz LCAyMDE1LCBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQIChNQ09VIE9TVEwpIAo+ID4gPiA+ID4gPCBs b2dlc3dhcmkucHZAaHAuY29tIDxqYXZhc2NyaXB0Ojs+PiB3cm90ZToKPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+IEkgZG9uJ3Qgd2FudCB0byBkaXNhYmxlIGF1ZGl0aW5nIChpLmUuIGRpc2FibGUgYXVk aXQgcmVjb3JkCj4gPiA+ID4gY29sbGVjdGlvbiksCj4gPiA+ID4gPiA+IGJ1dCBqdXN0IGRvIG5v dCB3YW50IHRoZSByZWNvcmRzIHRvIGRlbGl2ZXJlZCB0byB1c2VyIHNwYWNlIAo+ID4gPiA+ID4g PiBzaW5jZSBJCj4gPiA+ID4gd2FudCB0bwo+ID4gPiA+ID4gPiByZW1vdmUgdGhlIEkvTyBvdmVy aGVhZCB3aGlsZSBydW5uaW5nIHRoZSBwZXJmb3JtYW5jZSB0ZXN0Lgo+ID4gPiA+ID4gPiBJcyB0 aGVyZSBhbnkgb3B0aW9uIGZvciB0aGlzPwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gPiA+ID4gPiBGcm9tOiBSaWNoYXJkIEd1eSBCcmlnZ3Mg W21haWx0bzpyZ2JAcmVkaGF0LmNvbSA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+IDxqYXZhc2NyaXB0 Ojs+XQo+ID4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgSmFudWFyeSAyOSwgMjAxNSAxMDoyMyBQ TQo+ID4gPiA+ID4gPiBUbzogVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKQo+ID4g PiA+ID4gPiBDYzogU2F0aXNoIENoYW5kcmEgS2lsYXJ1OyBTdGV2ZSBHcnViYjsgbGludXgtYXVk aXRAcmVkaGF0LmNvbQo+ID4gPiA+IDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA+IDxqYXZhc2Ny aXB0Ojs+Cj4gPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBMaW51eCBhdWRpdCBwZXJmb3JtYW5jZSBp bXBhY3QKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gT24gMTUvMDEvMjksIFZpc3dhbmF0aCwgTG9n ZXN3YXJpIFAgKE1DT1UgT1NUTCkgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gUGxlYXNlIHJlYWQgbXkg cXVlc3Rpb24gYXMg4oCcSXMgdGhlcmUgYW55IG9wdGlvbiB0byBjb25maWd1cmUgCj4gPiA+ID4g PiA+ID4ga2F1ZGl0IG5vdCB0byBsb2cgYXVkaXQgcmVjb3JkcyB0byBzeXNsb2c/IHdoZW4gYXVk aXRkIG5vdCBydW5uaW5nLuKAnQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBZZWFoLCByZW1vdmUg YXVkaXQ9MSBmcm9tIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLCBvciBzZXQKPiA+ID4gPiA+ID4g YXVkaXQ9MCBpbgo+ID4gPiA+IGl0cwo+ID4gPiA+ID4gPiBwbGFjZS4gIFRoaXMgd2lsbCBzdG9w IGFsbCBidXQgQVZDcyBhbmQgaWYgYXVkaXRkIGhhcyBldmVyIHJ1biAKPiA+ID4gPiA+ID4gc2lu Y2UKPiA+ID4gPiBib290Lgo+ID4gPiA+ID4gPiBJZiBhdWRpdD0wIGlzIG9uIHRoZSBrZXJuZWwg Ym9vdCBsaW5lLCBpdCB3aWxsIGJlIGltcG9zc2libGUgCj4gPiA+ID4gPiA+IHRvIHJ1bgo+ID4g PiA+IGF1ZGl0ZC4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gVGhlcmUgaXMgYSBmZWF0dXJlIHJl cXVlc3QgdGhhdCBpcyBsaWtlbHkgY29taW5nIHNvb24gdGhhdCAKPiA+ID4gPiA+ID4gY291bGQg YmUKPiA+ID4gPiA+ID4gdXNlZnVsOgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBodHRwczovL2J1 Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTExNjAwNDYKPiA+ID4gPiA+ID4gIklm IG5vIGF1ZGl0IGRhZW1vbiBpcyBydW5uaW5nLCBidXQgYW4gYXVkaXQgbXVsdGljYXN0IAo+ID4g PiA+ID4gPiBzdWJzY3JpYmVyIGlzIGFyb3VuZCwgdGhlbiB0aGUga2VybmVsIHNob3VsZG4ndCBm b3J3YXJkIGF1ZGl0IGRhdGEgdG8ga21zZyIKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBGcm9t OiBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQIChNQ09VIE9TVEwpCj4gPiA+ID4gPiA+ID4gU2VudDog VGh1cnNkYXksIEphbnVhcnkgMjksIDIwMTUgMTE6NDkgQU0KPiA+ID4gPiA+ID4gPiBUbzogJ1Nh dGlzaCBDaGFuZHJhIEtpbGFydSc7IFN0ZXZlIEdydWJiCj4gPiA+ID4gPiA+ID4gQ2M6IGxpbnV4 LWF1ZGl0QHJlZGhhdC5jb20gPGphdmFzY3JpcHQ6Oz4gPGphdmFzY3JpcHQ6Oz4KPiA+ID4gPiA+ ID4gPiBTdWJqZWN0OiBSRTogTGludXggYXVkaXQgcGVyZm9ybWFuY2UgaW1wYWN0Cj4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiBJcyB0aGVyZSBhbnkgb3B0aW9uIHRvIGNvbmZpZ3VyZSBrYXVk aXQgbm90IHRvIGxvZyBhdWRpdCAKPiA+ID4gPiA+ID4gPiByZWNvcmRzIHRvCj4gPiA+ID4gPiA+ IHN5c2xvZyB3aGVuIGF1ZGl0ZCBpcyBydW5uaW5nPwo+ID4gPiA+ID4gPiA+IFRoaXMgd2F5IHdl IGNhbiBhc3Nlc3MgdGhlIGltcGFjdCBvZiBlbmFibGluZyBhdWRpdCB3aXRob3V0IAo+ID4gPiA+ ID4gPiA+IGludm9sdmluZwo+ID4gPiA+ID4gPiBkaXNrIEkvbyBvdmVyaGVhZC4KPiA+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiA+IEZyb206IFNhdGlzaCBDaGFuZHJhIEtpbGFydSBbbWFpbHRvOmlh bS5raWxhcnVAZ21haWwuY29tCj4gPiA+ID4gPGphdmFzY3JpcHQ6Oz4gPGphdmFzY3JpcHQ6Oz5d Cj4gPiA+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIEphbnVhcnkgMjksIDIwMTUgOToxMiBBTQo+ ID4gPiA+ID4gPiA+IFRvOiBTdGV2ZSBHcnViYgo+ID4gPiA+ID4gPiA+IENjOiBsaW51eC1hdWRp dEByZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+IDxqYXZhc2NyaXB0Ojs+PG1haWx0bzoKPiA+ID4g PiBsaW51eC1hdWRpdEByZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA+IDxqYXZh c2NyaXB0Ojs+PjsgVmlzd2FuYXRoLAo+ID4gPiA+ID4gPiA+IExvZ2Vzd2FyaSBQIChNQ09VIE9T VEwpCj4gPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IExpbnV4IGF1ZGl0IHBlcmZvcm1hbmNlIGlt cGFjdAo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gSSBhZ3JlZSB3aXRoIHlvdS4uLiBidXQg d3JpdGluZyB0byBkaXNrIGNhbiB0cmlnZ2VyIGZ1cnRoZXIgCj4gPiA+ID4gPiA+ID4gZXZlbnRz Cj4gPiA+ID4gPiA+IGxlYWRpbmcgc3BpcmFsbGluZyBvZiBldmVudHMuLi4KPiA+ID4gPiA+ID4g PiBJIGJyb3VnaHQgZG93biBteSBzZXJ2ZXIgZmV3IHRpbWVzIHdpdGggc3R1cGlkIHJ1bGVzLi4u Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBPbiBXZWQsIEphbiAyOCwgMjAxNSBhdCAxMDoz OSBQTSwgU3RldmUgR3J1YmIgCj4gPiA+ID4gPiA+ID4gPHNncnViYkByZWRoYXQuY29tCj4gPiA+ ID4gPGphdmFzY3JpcHQ6Oz4KPiA+ID4gPiA+ID4gPGphdmFzY3JpcHQ6Oz48bWFpbHRvOnNncnVi YkByZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPGphdmFzY3JpcHQ6Oz4+PiB3cm90 ZToKPiA+ID4gPiA+ID4gPiBPbiBXZWRuZXNkYXksIEphbnVhcnkgMjgsIDIwMTUgMTA6MTg6NDcg QU0gU2F0aXNoIENoYW5kcmEgCj4gPiA+ID4gPiA+ID4gS2lsYXJ1Cj4gPiA+ID4gd3JvdGU6Cj4g PiA+ID4gPiA+ID4gPiBXcml0ZSB5b3VyIG93biBwcm9ncmFtIHRvIHJlY2VpdmUgYXVkaXQgZXZl bnRzIGRpcmVjdGx5IAo+ID4gPiA+ID4gPiA+ID4gd2l0aG91dCB1c2luZyBhdWRpdGQuLi4KPiA+ ID4gPiA+ID4gPiA+IFRoYXQgc2hvdWxkIGJlIGZhc3RlciAuLi4uCj4gPiA+ID4gPiA+ID4gPiBB dWRpdGQgd2lsbCBsb2cgdGhlIGV2ZW50cyB0byBkaXNrIGNhdXNpbmcgbW9yZSBJL28gdGhhbiB1 IG5lZWQuLi4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IEJ1dCBldmVuIHRoYXQgaXMgY29u ZmlndXJhYmxlIGluIG1hbnkgd2F5cy4gWW91IGNhbiBkZWNpZGUgCj4gPiA+ID4gPiA+ID4gaWYg eW91Cj4gPiA+ID4gd2FudAo+ID4gPiA+ID4gPiA+IGxvZ2dpbmcgdG8gZGlzayBvciBub3QgYW5k IHdoYXQga2luZCBvZiBhc3N1cmFuY2UgdGhhdCBpdCAKPiA+ID4gPiA+ID4gPiBtYWRlIGl0IHRv IGRpc2sgYW5kIHRoZSBwcmlvcml0eSBvZiB0aGF0IGF1ZGl0IGRhZW1vbi4gVGhlbiAKPiA+ID4g PiA+ID4gPiB5b3UgYWxzbyBoYXZlIGFsbAo+ID4gPiA+IHRoZQo+ID4gPiA+ID4gPiA+IG5vcm1h bCB0dW5pbmcga25vYnMgZm9yIGRpc2sgdGhyb3VnaHB1dCB0aGF0IHlvdSB3b3VsZCB1c2UgCj4g PiA+ID4gPiA+ID4gZm9yIGFueSBkaXNrIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHN5c3RlbS4KPiA+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IC1TdGV2ZQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiBPbiBXZWRuZXNkYXksIEphbnVhcnkgMjgsIDIwMTUsIFZpc3dhbmF0aCwgTG9nZXN3YXJp IFAgCj4gPiA+ID4gPiA+ID4gPiAoTUNPVQo+ID4gPiA+ID4gPiA+ID4gT1NUTCkKPiA+ID4gPiA8 Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gbG9nZXN3YXJpLnB2QGhwLmNvbSA8amF2 YXNjcmlwdDo7PiA8amF2YXNjcmlwdDo7PjxtYWlsdG86Cj4gPiA+ID4gbG9nZXN3YXJpLnB2QGhw LmNvbSA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ID4gPiA8amF2YXNjcmlwdDo7Pj4+IHdyb3RlOgo+ ID4gPiA+ID4gPiA+ID4gPiAgSGkgU3RldmUsCj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiA+IEkgYW0gTG9nZXN3YXJpIHdvcmtpbmcgZm9yIEhQLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBXZSB3 YW50IHRvIGtub3cgYXVkaXQgcGVyZm9ybWFuY2UgaW1wYWN0IG9uIFJIRUwgYW5kIAo+ID4gPiA+ ID4gPiA+ID4gPiBTdXNlIGxpbnV4Cj4gPiA+ID4gdG8KPiA+ID4gPiA+ID4gPiA+ID4gaGVscCB1 cyBldmFsdWF0ZSBsaW51eCBhdWRpdCBhcyBkYXRhIHNvdXJjZSBmb3Igb3VyIGhvc3QgCj4gPiA+ ID4gPiA+ID4gPiA+IGJhc2VkCj4gPiA+ID4gSURTLgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+ID4gPiBXaGVuIHdlIHJhbiBvdXIgb3duIHBlcmZvcm1hbmNlIHRlc3Qgd2l0aCBhIHRl c3QgYXVkaXNwZCAKPiA+ID4gPiA+ID4gPiA+ID4gcGx1Z2luLCB3ZSBmb3VuZCBpZiBhIHN5c3Rl bSBjYW4gcGVyZm9ybSAyMDAwMDAgCj4gPiA+ID4gPiA+ID4gPiA+IG9wZW4vY2xvc2Ugc3lzdGVt IGNhbGxzIHBlciBzZWNvbmQgd2l0aG91dCBhdWRpdGluZywgCj4gPiA+ID4gPiA+ID4gPiA+IHN5 c3RlbSBjYW4gcGVyZm9ybSBvbmx5IDMwMDAgb3Blbi9jbG9zZSBzeXN0ZW0gY2FsbHMgCj4gPiA+ ID4gPiA+ID4gPiA+IGF1ZGl0aW5nIGlzIGVuYWJsZWQgZm9yIG9wZW4vY2xvc2Ugc3lzdGVtIGNh bGwgd2hpY2ggaXMgCj4gPiA+ID4gPiA+ID4gPiA+IGEgSFVHRSBpbXBhY3Qgb24gdGhlIHN5c3Rl bSBwZXJmb3JtYW5jZS4gSXQgd291bGQKPiA+ID4gPiBiZQo+ID4gPiA+ID4gPiA+ID4gPiBncmVh dCBpZiBhbnlvbmUgY2FuIGhlbHAgdXMgYW5zd2VyaW5nIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25z Lgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiAxKSAgICAgIElzIHRoaXMgcGVyZm9ybWFuY2UgaW1wYWN0IGV4cGVj dGVkPyBJZiB5ZXMsIHdoYXQgaXMgdGhlCj4gPiA+ID4gPiA+IHJlYXNvbgo+ID4gPiA+ID4gPiA+ ID4gPiBiZWhpbmQgaXQgYW5kIGNhbiB3ZSBmaXggaXQ/Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gPiA+IDIpICAgICAgSGF2ZSBhbnlvbmUgZG9uZSBhbnkgYmVuY2htYXJraW5nIGZv ciBwZXJmb3JtYW5jZQo+ID4gPiA+IGltcGFjdD8gSWYKPiA+ID4gPiA+ID4geWVzLAo+ID4gPiA+ ID4gPiA+ID4gPiBjYW4geW91IHBsZWFzZSBzaGFyZSB0aGUgbnVtYmVycyBhbmQgYWxzbyB0aGUg Cj4gPiA+ID4gPiA+ID4gPiA+IHN0ZXBzL3Byb2dyYW1zIHVzZWQgdGhlIHJ1biB0aGUgc2FtZS4K PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gMykgICAgICBIZWxwIHVzIHZhbGlk YXRpbmcgdGhlIHBlcmZvcm1hbmNlIHRlc3Qgd2UgaGF2ZSBkb25lIGluCj4gPiA+ID4gb3VyCj4g PiA+ID4gPiA+IHRlc3QKPiA+ID4gPiA+ID4gPiA+ID4gc2V0dXAgdXNpbmcgdGhlIHN0ZXBzIG1l bnRpb25lZCBhbG9uZyB3aXRoIHRoZSByZXN1bHRzIGF0dGFjaGVkLgo+ID4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBB dHRhY2hlZCB0ZXN0IHByb2dyYW0gKGxvYWRlci5jKSB0byBpbnZva2Ugb3BlbiBhbmQgCj4gPiA+ ID4gPiA+ID4gPiA+IGNsb3NlIHN5c3RlbQo+ID4gPiA+ID4gPiBjYWxscy4KPiA+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gQXR0YWNoZWQgaWRza2VybmRzcCBpcyB0aGUgYXVkaXNw ZCBwbHVnaW4gcHJvZ3JhbS4KPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gV2Ug dXNlZCB0aW1lIGNvbW1hbmQgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIHRpbWUgdGhlIAo+ID4gPiA+ ID4gPiA+ID4gPiBzeXN0ZW0gdG9vawo+ID4gPiA+IHRvCj4gPiA+ID4gPiA+ID4gPiA+IGNvbXBs ZXRlIDUwMDAwIG9wZW4vY2xvc2Ugc3lzdGVtIGNhbGxzIHdpdGhvdXQgKHJlc3VsdHMgCj4gPiA+ ID4gPiA+ID4gPiA+IGF0dGFjaGVkCj4gPiA+ID4gPiA+ID4gPiA+IFdpdGhvdXQtYXVkaXRpbmcp IGFuZCB3aXRoIGF1ZGl0aW5nIGVuYWJsZWQgb24gdGhlIAo+ID4gPiA+ID4gPiA+ID4gPiBzeXN0 ZW0gKFdpdGgtYXVkaXRpbmctTk9MT0ctYXVkaXNwZC1wbHVnaW4gYW5kIAo+ID4gPiA+ID4gPiA+ ID4gPiBXaXRoLWF1ZGl0aW5nLVJBVykKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gU3lzdGVtIGRldGFpbHM6Cj4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gPiA+IDEgQ1BVIG1hY2hpbmUKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gKk9TIFZlcnNpb24qCj4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+IFJIRUwgNi41Cj4gPiA+ID4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ ICpLZXJuZWwgVmVyc2lvbioKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gdW5h bWUg4oCTcgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiAyLjYuMzItNDMxLmVs Ni54ODZfNjQKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gTm90ZTogYXVkaXRkIHdhcyBvY2N1cHlpbmcgMzUlIG9m IENQVSBhbmQgd2FzIHNsZWVwaW5nIAo+ID4gPiA+ID4gPiA+ID4gPiBmb3IgbW9zdAo+ID4gPiA+ IG9mCj4gPiA+ID4gPiA+ID4gPiA+IHRoZSB0aW1lIHdoZXJlYXMga2F1ZGl0ZCB3YXMgb2NjdXB5 aW5nIDIwJSBvZiB0aGUgQ1BVLgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBUaGFua3MgJiBSZWdhcmRzLAo+ID4g PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBMb2dlc3dhcmkuCj4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gLS0KPiA+ID4gPiA+ID4g PiBQbGVhc2UgRG9uYXRlIHRvIHd3dy53aWtpcGVkaWEub3JnPGh0dHA6Ly93d3cud2lraXBlZGlh Lm9yZz4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+IExpbnV4LWF1 ZGl0IG1haWxpbmcgbGlzdAo+ID4gPiA+ID4gPiA+IExpbnV4LWF1ZGl0QHJlZGhhdC5jb20gPGph dmFzY3JpcHQ6Oz4gPGphdmFzY3JpcHQ6Oz4gCj4gPiA+ID4gPiA+ID4gaHR0cHM6Ly93d3cucmVk aGF0LmNvbS9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWF1ZGl0Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+IC0gUkdCCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IC0tCj4gPiA+ID4g PiA+IFJpY2hhcmQgR3V5IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+ IAo+ID4gPiA+ID4gPiA8amF2YXNjcmlwdDo7Pj4gU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyLCBL ZXJuZWwgU2VjdXJpdHksIAo+ID4gPiA+ID4gPiBBTUVSIEVORyBCYXNlIE9wZXJhdGluZyBTeXN0 ZW1zLCBSZWQgSGF0IFJlbW90ZSwgT3R0YXdhLCAKPiA+ID4gPiA+ID4gQ2FuYWRhCj4gPiA+ID4g PiA+IFZvaWNlOiArMS42NDcuNzc3LjI2MzUsIEludGVybmFsOiAoODEpIDMyNjM1LCBBbHQ6IAo+ ID4gPiA+ID4gPiArMS42MTMuNjkzLjA2ODR4MzU0NQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ ID4gPiA+Cj4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gUGxlYXNlIERvbmF0ZSB0byB3d3cud2lraXBl ZGlhLm9yZwo+ID4gPiA+Cj4gPiA+ID4gLSBSR0IKPiA+ID4gPgo+ID4gPiA+IC0tCj4gPiA+ID4g UmljaGFyZCBHdXkgQnJpZ2dzIDxyYnJpZ2dzQHJlZGhhdC5jb20gPGphdmFzY3JpcHQ6Oz4+IFNl bmlvciAKPiA+ID4gPiBTb2Z0d2FyZSBFbmdpbmVlciwgS2VybmVsIFNlY3VyaXR5LCBBTUVSIEVO RyBCYXNlIE9wZXJhdGluZyAKPiA+ID4gPiBTeXN0ZW1zLCBSZWQgSGF0IFJlbW90ZSwgT3R0YXdh LCBDYW5hZGEKPiA+ID4gPiBWb2ljZTogKzEuNjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgxKSAz MjYzNSwgQWx0OiAKPiA+ID4gPiArMS42MTMuNjkzLjA2ODR4MzU0NQo+ID4gPiA+Cj4gPiA+IAo+ ID4gPiAKPiA+ID4gLS0KPiA+ID4gUGxlYXNlIERvbmF0ZSB0byB3d3cud2lraXBlZGlhLm9yZwo+ ID4gCj4gPiAtIFJHQgo+ID4gCj4gPiAtLQo+ID4gUmljaGFyZCBHdXkgQnJpZ2dzIDxyYnJpZ2dz QHJlZGhhdC5jb20+IFNlbmlvciBTb2Z0d2FyZSBFbmdpbmVlciwgCj4gPiBLZXJuZWwgU2VjdXJp dHksIEFNRVIgRU5HIEJhc2UgT3BlcmF0aW5nIFN5c3RlbXMsIFJlZCBIYXQgUmVtb3RlLCAKPiA+ IE90dGF3YSwgQ2FuYWRhCj4gPiBWb2ljZTogKzEuNjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgx KSAzMjYzNSwgQWx0OiAKPiA+ICsxLjYxMy42OTMuMDY4NHgzNTQ1Cj4gCj4gLSBSR0IKPiAKPiAt LQo+IFJpY2hhcmQgR3V5IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tPgo+IFNlbmlvciBTb2Z0 d2FyZSBFbmdpbmVlciwgS2VybmVsIFNlY3VyaXR5LCBBTUVSIEVORyBCYXNlIE9wZXJhdGluZyBT eXN0ZW1zLCBSZWQgSGF0IFJlbW90ZSwgT3R0YXdhLCBDYW5hZGEKPiBWb2ljZTogKzEuNjQ3Ljc3 Ny4yNjM1LCBJbnRlcm5hbDogKDgxKSAzMjYzNSwgQWx0OiArMS42MTMuNjkzLjA2ODR4MzU0NQoK PiAjaW5jbHVkZSA8c3RkaW8uaD4KPiAjaW5jbHVkZSA8c3RkbGliLmg+Cj4gI2luY2x1ZGUgPHN5 cy9zdGF0Lmg+Cj4gI2luY2x1ZGUgPGZjbnRsLmg+Cj4gI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICNp bmNsdWRlIDxlcnJuby5oPgo+IAo+IHZvaWQgY3JlYXRlX2xvYWQoaW50IGl0ZXJzKTsKPiB2b2lk IGNsZWFudXAoKTsKPiAKPiBpbnQgICBoaWdoX3JhdGUgPSAwOwo+IGludCAgIG51bV9pdGVycyA9 IDEwMDAwMDsKPiBpbnQgICBmZDE7Cj4gY2hhciAgZmlsZTFbNTBdOwo+IGNoYXIgIGZpbGUyWzUw XTsKPiBjaGFyICBkaXIxWzUwXTsKPiBjaGFyICBzeW1saW5rMVs1MF07Cj4gCj4gLyogUHVycG9z ZTogVG8gY3JlYXRlIHN5c3RlbSBsb2FkIGJ5IGludm9raW5nIHN5c3RlbSBjYWxscyB1c2VkIGJ5 IHRlbXBsYXRlcy4KPiAgKgo+ICAqIE5vdGU6IFRoZSB1bmxpbmsoMikgb2YgYSBmaWxlIGNhbiBi ZSBhbiBleHBlbnNpdmUgb3BlcmF0aW9uIChpLmUuLCBldmVudCAKPiAgKiAgICAgICByYXRlIGdv ZXMgd2F5IGRvd24pLgo+ICAqLwo+IAo+IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Cj4g Cj4gICBpbnQgICAgICAgICAgICAgIG51bV9jaGlsZHJlbj0xOwo+ICAgaW50ICAgICAgICAgICAg ICBpdGVyczsKPiAgIGludCAgICAgICAgICAgICAgaTsKPiAgIGNoYXIgICAgICAgICAgICAgYzsK PiAKPiAgIHdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiaGk6IikpICE9IC0xKSB7Cj4g ICAgIHN3aXRjaCAoYykgewo+ICAgICBjYXNlICdoJzoKPiAgICAgICAvKgo+ICAgICAgICAqIERl c2lyZSAiaGlnaCIgZXZlbnQgcmF0ZQo+ICAgICAgICAqLwo+ICAgICAgIGhpZ2hfcmF0ZSA9IDE7 Cj4gICAgICAgYXJnYy0tOwo+ICAgICAgIGJyZWFrOwo+ICAgICBjYXNlICdpJzoKPiAgICAgICAv Kgo+ICAgICAgICAqIERlc2lyZSBhIHNwZWNpZmllZCBudW1iZXIgb2YgaXRlcmF0aW9ucwo+ICAg ICAgICAqLwo+ICAgICAgIG51bV9pdGVycyA9IGF0b2kob3B0YXJnKTsKPiAgICAgICBhcmdjLS07 Cj4gICAgICAgYnJlYWs7Cj4gICAgIGRlZmF1bHQ6Cj4gICAgICAgZnByaW50ZihzdGRlcnIsIlVu a25vd24gb3B0aW9uOiAlY1xuIixvcHRhcmcpOwo+ICAgICAgIGV4aXQoMSk7Cj4gICAgIH0KPiAg IH0KPiAKPiAKPiAgIC8qaWYoYXJndltvcHRpbmRdICE9IE5VTEwpIHsKPiAgICAgbnVtX2NoaWxk cmVuID0gYXRvaShhcmd2W29wdGluZF0pOwo+ICAgfSBlbHNlIHsKPiAgICAgbnVtX2NoaWxkcmVu ID0gMDsKPiAgIH0KPiAgIFJlZ2lzdGVyIGNsZWFudXAgcm91dGluZSAqLwo+ICAgZnByaW50Zihz dGRlcnIsIlJlZ2lzdGVyaW5nIGNsZWFudXAgcm91dGluZS4uLlxuIik7Cj4gICBpZiAoYXRleGl0 KGNsZWFudXApID09IC0xKSB7Cj4gICAgIGZwcmludGYoc3RkZXJyLCJFcnJvciBjYWxsaW5nIGF0 ZXhpdCgpLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICBlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ ICAgICBleGl0KDEpOwo+ICAgfQo+ICAgICAKPiAKPiAgIC8qIGZvcmsgY2hpbGQgcHJvY2Vzc2Vz LCBpZiBhbnkgcmVxdWVzdGVkICovCj4gICBmb3IoaT0xOyBpIDwgbnVtX2NoaWxkcmVuOyBpKysp IHsKPiAgICAgaWYoZm9yaygpID09IDApIHsKPiAKPiAgICAgICBwcmludGYoImNoaWxkIHBpZDog JWRcbiIsZ2V0cGlkKCkpOwo+IAo+ICAgICAgIC8qIFNldHVwIGZpbGUgbmFtZXMgYmFzZWQgb24g Y2hpbGQncyBwaWQgKi8KPiAgICAgICBzcHJpbnRmKGZpbGUxLCIuL2ZpbGUxXyVkIixnZXRwaWQo KSk7Cj4gICAgICAgc3ByaW50ZihmaWxlMiwiLi9maWxlMl8lZCIsZ2V0cGlkKCkpOwo+ICAgICAg IHNwcmludGYoZGlyMSwiLi9kaXIxXyVkIixnZXRwaWQoKSk7Cj4gICAgICAgc3ByaW50ZihzeW1s aW5rMSwiLi9maWxlMXN5bWxpbmtfJWQiLGdldHBpZCgpKTsKPiAKPiAgICAgICAvKiBlYWNoIGNo aWxkIGNyZWF0ZXMgbG9hZCAqLwkKPiAgICAgICBpdGVycz0wOwo+ICAgICAgIGlmIChudW1faXRl cnMgPT0gLTEpIHsKPiAJd2hpbGUoMSkgewo+IAkgIGNyZWF0ZV9sb2FkKGl0ZXJzKTsKPiAJICBp dGVycysrOwo+IAkgIGlmKCAoaXRlcnMgJSAxMDAwKSA9PSAwKSB7Cj4gCSAgICBwcmludGYoInBp ZCAlZCBpdGVyYXRpb24gJWRcbiIsZ2V0cGlkKCksaXRlcnMpOwo+IAkgIH0KPiAJfQo+ICAgICAg IH0gZWxzZSB7Cj4gCXdoaWxlKGl0ZXJzIDwgbnVtX2l0ZXJzKSB7Cj4gCSAgY3JlYXRlX2xvYWQo aXRlcnMpOwo+IAkgIGl0ZXJzKys7Cj4gCSAgaWYoIChpdGVycyAlIDEwMDApID09IDApIHsKPiAJ ICAgIHByaW50ZigicGlkICVkIGl0ZXJhdGlvbiAlZFxuIixnZXRwaWQoKSxpdGVycyk7Cj4gCSAg fQo+IAl9Cj4gICAgICAgfQo+ICAgICB9Cj4gICB9Cj4gCj4gICAvKiBQYXJlbnQgY3JlYXRlcyBs b2FkIGFsc28gKi8KPiAgIHByaW50ZigicGFyZW50IHBpZDogJWRcbiIsZ2V0cGlkKCkpOwo+IAo+ ICAgLyogU2V0dXAgZmlsZSBuYW1lcyBiYXNlZCBvbiBwYXJlbnQncyBwaWQgKi8KPiAgIHNwcmlu dGYoZmlsZTEsIi4vZmlsZTFfJWQiLGdldHBpZCgpKTsKPiAgIHNwcmludGYoZmlsZTIsIi4vZmls ZTJfJWQiLGdldHBpZCgpKTsKPiAgIHNwcmludGYoZGlyMSwiLi9kaXIxXyVkIixnZXRwaWQoKSk7 Cj4gICBzcHJpbnRmKHN5bWxpbmsxLCIuL2ZpbGUxc3ltbGlua18lZCIsZ2V0cGlkKCkpOwo+IAo+ ICAgaXRlcnM9MDsKPiAgIGlmIChudW1faXRlcnMgPT0gLTEpIHsKPiAgICAgd2hpbGUoMSkgewo+ ICAgICAgIGNyZWF0ZV9sb2FkKGl0ZXJzKTsKPiAgICAgICBpdGVycysrOwo+ICAgICAgIGlmKCAo aXRlcnMgJSAxMDAwKSA9PSAwKSB7Cj4gCXByaW50ZigicGlkICVkIGl0ZXJhdGlvbiAlZFxuIixn ZXRwaWQoKSxpdGVycyk7Cj4gICAgICAgfQo+ICAgICB9Cj4gICB9IGVsc2Ugewo+ICAgICB3aGls ZShpdGVycyA8IG51bV9pdGVycykgewo+ICAgICAgIGNyZWF0ZV9sb2FkKGl0ZXJzKTsKPiAgICAg ICBpdGVycysrOwo+ICAgICAgIGlmKCAoaXRlcnMgJSAxMDAwKSA9PSAwKSB7Cj4gCXByaW50Zigi cGlkICVkIGl0ZXJhdGlvbiAlZFxuIixnZXRwaWQoKSxpdGVycyk7Cj4gICAgICAgfQo+ICAgICB9 Cj4gICB9Cj4gCj4gfSAvKiBtYWluICovCj4gCj4gCj4gdm9pZCBjcmVhdGVfbG9hZChpbnQgaXRl cnMpIHsKPiAKPiAgIGludCBwaWQ7Cj4gICBjaGFyICphcmdzWzJdOwo+ICAgc3RydWN0IHN0YXQg c3RhdF9idWY7Cj4gCj4gICBmZDEgPSBjcmVhdChmaWxlMSwweDY0NCk7Cj4gICBpZiAoZmQxID09 IC0xKSB7Cj4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IGNyZWF0KCkgcmV0dXJuZWQgZXJy b3IgZm9yIGZpbGUgJXMsIGVycm5vPSVkKCVzKVxuIiwKPiAJICAgIGdldHBpZCgpLGZpbGUxLGVy cm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gICAgIGV4aXQoMSk7Cj4gICB9Cj4gICBpZiAoY2xvc2Uo ZmQxKSA9PSAtMSkgewo+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBjbG9zZSgpIHJldHVy bmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJv cihlcnJubykpOwo+ICAgICBleGl0KDEpOwo+ICAgfQo+ICAgZmQxID0gb3BlbihmaWxlMSwgT19S RFdSLCAwNzc3KTsKPiAgIGlmIChmZDEgPT0gLTEpIHsKPiAgICAgZnByaW50ZihzdGRlcnIsInBp ZCAlZDogb3BlbigpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICBnZXRw aWQoKSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ICAgICBleGl0KDEpOwo+ICAgfQo+IAo+ICAg LyogQ2hvd24gdGhpcyBmaWxlIHRvIHJvb3QgaW5zdGVhZCBvZiB1c2VyIGlkcyBzbyB0aGF0IHdl IGRvbid0IGdlbmVyYXRlIGEgCj4gICAgKiBub24tb3duZWQgYWxlcnQgd2hlbiB0aGUgZmlsZSBp cyB0cnVuY2F0ZWQgd2hlbiBpbnZva2luZyBjcmVhdCgpIGFnYWluCj4gICAgKiBhcyByb290IG9u IGFuIGV4aXN0aW5nIGZpbGUgb3duZWQgYnkgYW5vdGhlciB1c2VyLgo+ICAgICovCj4gICBpZiAo Y2hvd24oZmlsZTEsMCwwKSA9PSAtMSkgewo+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBj aG93biglZCwlZCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiAJICAgIGdldHBp ZCgpLDAsMCxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ICAgICBleGl0KDEpOwo+ICAgfSAgICAK PiAgCj4gICBpZiAoZmNob3duKGZkMSwwLDApID09IC0xKSB7Cj4gICAgIGZwcmludGYoc3RkZXJy LCJwaWQgJWQ6IGZjaG93biglZCwlZCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwK PiAJICAgIGdldHBpZCgpLDAsMCxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ICAgICBleGl0KDEp Owo+ICAgfSAgIAo+ICAgIAo+ICAgaWYgKGNobW9kKGZpbGUxLCBTX0lSVVNSfFNfSVdVU1J8U19J UkdSUHxTX0lST1RIKSA9PSAtMSkgewo+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBjaG1v ZChTX0lSVVNSfFNfSVdVU1J8U19JUkdSUHxTX0lST1RIKSByZXR1cm5lZCBlcnJvciwgZXJybm89 JWQoJXMpXG4iLAo+IAkgICAgZ2V0cGlkKCksZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiAgICAg ZXhpdCgxKTsKPiAgIH0gICAgCj4gICBpZiAoZmNobW9kKGZkMSwgICBTX0lYVVNSfFNfSVhHUlB8 U19JWE9USCkgPT0gLTEpIHsKPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogZmNobW9kKFNf SVhVU1J8U19JWEdSUHxTX0lYT1RIKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ IAkgICAgZ2V0cGlkKCksZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiAgICAgZXhpdCgxKTsKPiAg IH0KPiAKPiAKPiAgIGlmICh3cml0ZShmZDEsIlNvbWUgc3R1ZmYiLHN0cmxlbigiU29tZSBzdHVm ZiIpKSA9PSAtMSkgewo+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiB3cml0ZSgpIHJldHVy bmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJv cihlcnJubykpOwo+ICAgICBleGl0KDEpOwo+ICAgfQo+ICAgaWYgKGZ0cnVuY2F0ZShmZDEsNykg PT0gLTEpIHsKPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogZnRydW5jYXRlKCkgcmV0dXJu ZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiAJICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9y KGVycm5vKSk7Cj4gICAgIGV4aXQoMSk7Cj4gICB9Cj4gICBpZiAoY2xvc2UoZmQxKSA9PSAtMSkg ewo+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBjbG9zZSgpIHJldHVybmVkIGVycm9yLCBl cnJubz0lZCglcylcbiIsCj4gCSAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ ICAgICBleGl0KDEpOwo+ICAgfQo+IAo+ICAgaWYgKHRydW5jYXRlKGZpbGUxLDMpID09IC0xKSB7 Cj4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHRydW5jYXRlKCkgcmV0dXJuZWQgZXJyb3Is IGVycm5vPSVkKCVzKVxuIiwKPiAJICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7 Cj4gICAgIGV4aXQoMSk7Cj4gICB9Cj4gICBpZiAocmVuYW1lKGZpbGUxLGZpbGUyKSA9PSAtMSkg ewo+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiByZW5hbWUoJXMsJXMpIHJldHVybmVkIGVy cm9yLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICBnZXRwaWQoKSxmaWxlMSxmaWxlMixlcnJubyxz dHJlcnJvcihlcnJubykpOwo+ICAgICBleGl0KDEpOwo+ICAgfQo+ICAgaWYgKHJlbmFtZShmaWxl MixmaWxlMSkgPT0gLTEpIHsKPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogcmVuYW1lKCVz LCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+IAkgICAgZ2V0cGlkKCksZmls ZTIsZmlsZTEsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiAgICAgZXhpdCgxKTsKPiAgIH0KPiAg IGlmIChsaW5rKGZpbGUxLGZpbGUyKSA9PSAtMSkgewo+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlk ICVkOiBsaW5rKCVzLCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+IAkgICAg Z2V0cGlkKCksZmlsZTEsZmlsZTIsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiAgICAgZXhpdCgx KTsKPiAgIH0KPiAgIGlmIChzeW1saW5rKGZpbGUxLHN5bWxpbmsxKSA9PSAtMSkgewo+ICAgICBm cHJpbnRmKHN0ZGVyciwicGlkICVkOiBzeW1saW5rKCVzLCVzKSByZXR1cm5lZCBlcnJvciwgZXJy bm89JWQoJXMpXG4iLAo+IAkgICAgZ2V0cGlkKCksZmlsZTEsc3ltbGluazEsZXJybm8sc3RyZXJy b3IoZXJybm8pKTsKPiAgICAgZXhpdCgxKTsKPiAgIH0KPiAgIGlmIChsY2hvd24oc3ltbGluazEs MCwwKSA9PSAtMSkgewo+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBsY2hvd24oJXMsJWQs JWQpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICBnZXRwaWQoKSxzeW1s aW5rMSwwLDAsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiAgICAgZXhpdCgxKTsKPiAgIH0KPiAg IAo+ICAgaWYgKGxzdGF0KHN5bWxpbmsxLCZzdGF0X2J1ZikgPT0gLTEpIHsKPiAgICAgZnByaW50 ZihzdGRlcnIsInBpZCAlZDogbHN0YXQoJXMpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylc biIsCj4gCSAgICBnZXRwaWQoKSxzeW1saW5rMSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ICAg ICBleGl0KDEpOwo+ICAgfQo+ICAgaWYgKHN0YXQoZmlsZTEsJnN0YXRfYnVmKSA9PSAtMSkgewo+ ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBzdGF0KCVzKSByZXR1cm5lZCBlcnJvciwgZXJy bm89JWQoJXMpXG4iLAo+IAkgICAgZ2V0cGlkKCksZmlsZTEsZXJybm8sc3RyZXJyb3IoZXJybm8p KTsKPiAgICAgZXhpdCgxKTsKPiAgIH0KPiAgIGlmICh1bmxpbmsoZmlsZTEpID09IC0xKSB7Cj4g ICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHVubGluayglcykgcmV0dXJuZWQgZXJyb3IsIGVy cm5vPSVkKCVzKVxuIiwKPiAJICAgIGdldHBpZCgpLGZpbGUxLGVycm5vLHN0cmVycm9yKGVycm5v KSk7Cj4gICAgIGV4aXQoMSk7Cj4gICB9Cj4gICBpZiAodW5saW5rKGZpbGUyKSA9PSAtMSkgewo+ ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiB1bmxpbmsoJXMpIHJldHVybmVkIGVycm9yLCBl cnJubz0lZCglcylcbiIsCj4gCSAgICBnZXRwaWQoKSxmaWxlMixlcnJubyxzdHJlcnJvcihlcnJu bykpOwo+ICAgICBleGl0KDEpOwo+ICAgfQo+ICAgaWYgKHVubGluayhzeW1saW5rMSkgPT0gLTEp IHsKPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogdW5saW5rKCVzKSByZXR1cm5lZCBlcnJv ciwgZXJybm89JWQoJXMpXG4iLAo+IAkgICAgZ2V0cGlkKCksc3ltbGluazEsZXJybm8sc3RyZXJy b3IoZXJybm8pKTsKPiAgICAgZXhpdCgxKTsKPiAgIH0KPiAgIGlmIChta2RpcihkaXIxLFNfSVJV U1J8U19JV1VTUnxTX0lYVVNSfFNfSVJHUlB8U19JWEdSUCkgPT0gLTEpIHsKPiAgICAgZnByaW50 ZihzdGRlcnIsInBpZCAlZDogbWtkaXIoKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4i LAo+IAkgICAgZ2V0cGlkKCksZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiAgICAgZXhpdCgxKTsK PiAgIH0KPiAgIGlmIChybWRpcihkaXIxKSA9PSAtMSkgewo+ICAgICBmcHJpbnRmKHN0ZGVyciwi cGlkICVkOiBybWRpcigpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICBn ZXRwaWQoKSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ICAgICBleGl0KDEpOwo+ICAgfQo+IAo+ ICAgLyogRm9yayBldmVyeSAxMDAwMCBpdGVyYXRpb25zIHRvIG5vdCB1c2UgdXAgcHJvY2VzcyBy ZXNvdXJjZXMgdG9vIHF1aWNrbHkgKi8KPiAgIGlmICggKGl0ZXJzICUgMTAwMDApID09IDApIHsK PiAgICAgcGlkID0gZm9yaygpOwo+ICAgICBpZihwaWQgPT0gMCkgewo+ICAgICAgIGZwcmludGYo c3RkZXJyLCJjaGlsZCBwaWQgJWQ6IGZvcmshXG4iLGdldHBpZCgpKTsKPiAgICAgICAvLyBjaGls ZAo+ICAgICAgIGFyZ3NbMF0gPSAiL2Jpbi9scyI7Cj4gICAgICAgYXJnc1sxXSA9IE5VTEw7Cj4g ICAgICAgY2xvc2UoMSk7Cj4gICAgICAgY2xvc2UoMik7ICAgIAo+ICAgICAgIGV4ZWN2ZShhcmdz WzBdLCBhcmdzLCBOVUxMKTsKPiAgICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBleGVjdmUo JXMpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICAgIGdldHBpZCgpLGFy Z3NbMF0sZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiAgICAgICBfZXhpdCgxKTsKPiAgICAgfSBl bHNlIGlmIChwaWQgPCAwKSB7IAo+ICAgICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IGZvcmso KSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+IAkgICAgICBnZXRwaWQoKSxlcnJu byxzdHJlcnJvcihlcnJubykpOwo+ICAgICAgIGV4aXQoMSk7Cj4gICAgIH0gZWxzZSB7Cj4gICAg ICAgZnByaW50ZihzdGRlcnIsInBhcmVudCBwaWQgJWQsIGNoaWxkIHBpZDogJWQ6IGZvcmshXG4i LGdldHBpZCgpLHBpZCk7Cj4gICAgIH0KPiAKPiAgICAgcGlkID0gdmZvcmsoKTsKPiAgICAgaWYo cGlkID09IDApIHsKPiAgICAgICBhcmdzWzBdID0gIi9iaW4vcHdkIjsKPiAgICAgICBhcmdzWzFd ID0gTlVMTDsKPiAgICAgICBjbG9zZSgxKTsKPiAgICAgICBjbG9zZSgyKTsgICAgCj4gICAgICAg ZXhlY3YoYXJnc1swXSwgYXJncyk7Cj4gICAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogZXhl Y3ZlKCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+IAkgICAgICBnZXRwaWQo KSxhcmdzWzBdLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gICAgICAgX2V4aXQoMSk7Cj4gICAg IH0gZWxzZSBpZiAocGlkIDwgMCkgeyAKPiAgICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiB2 Zm9yaygpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gCSAgICAgIGdldHBpZCgp LGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gICAgICAgZXhpdCgxKTsKPiAgICAgfQo+ICAgfQo+ IAo+ICAgLyogTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgY2xlYW5lZCB1cCBhbmQgZGVsZXRlZCBi ZWZvcmUgcmV0dXJuaW5nICovCj4gICBjbGVhbnVwKCk7Cj4gCj4gfSAvKiBjcmVhdGVfbG9hZCgp ICovCj4gCj4gdm9pZCBjbGVhbnVwKCkgewo+ICAgY2xvc2UoZmQxKTsKPiAgIHVubGluayhmaWxl MSk7Cj4gICB1bmxpbmsoZmlsZTIpOwo+ICAgdW5saW5rKHN5bWxpbmsxKTsKPiAgIHVubGluayhk aXIxKTsKPiAgIHJldHVybjsKPiB9Cgo+IC0tCj4gTGludXgtYXVkaXQgbWFpbGluZyBsaXN0Cj4g TGludXgtYXVkaXRAcmVkaGF0LmNvbQo+IGh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFpbG1hbi9s aXN0aW5mby9saW51eC1hdWRpdAoKCi0gUkdCCgotLQpSaWNoYXJkIEd1eSBCcmlnZ3MgPHJicmln Z3NAcmVkaGF0LmNvbT4KU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyLCBLZXJuZWwgU2VjdXJpdHks IEFNRVIgRU5HIEJhc2UgT3BlcmF0aW5nIFN5c3RlbXMsIFJlZCBIYXQKUmVtb3RlLCBPdHRhd2Es IENhbmFkYQpWb2ljZTogKzEuNjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgxKSAzMjYzNSwgQWx0 OiArMS42MTMuNjkzLjA2ODR4MzU0NQoKLS0KTGludXgtYXVkaXQgbWFpbGluZyBsaXN0CkxpbnV4 LWF1ZGl0QHJlZGhhdC5jb20KaHR0cHM6Ly93d3cucmVkaGF0LmNvbS9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWF1ZGl0