From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Viswanath, Logeswari P (MCOU OSTL)" Subject: RE: Linux audit performance impact Date: Mon, 16 Feb 2015 11:25:57 +0000 Message-ID: <9DBA79E0CE64AA42B07DEDAAD0F7DB914FA921C0@G9W0755.americas.hpqcorp.net> References: <9DBA79E0CE64AA42B07DEDAAD0F7DB914165C5B7@G4W3222.americas.hpqcorp.net> <20150212182526.GX29998@madcap2.tricolour.ca> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20150212182526.GX29998@madcap2.tricolour.ca> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com To: Richard Guy Briggs Cc: "linux-audit@redhat.com" List-Id: linux-audit@redhat.com SSBjb25maWd1cmVkIHRoZSBzeXN0ZW0gdG8gYXVkaXQgb3BlbiBzeXN0ZW0gY2FsbCBhbG9uZSBp bnN0ZWFkIG9mIGFsbCB0aGUgc3lzdGVtIGNhbGxzIChvdXIgbG9hZGVyIHByb2dyYW0gZXhlY3V0 ZXMpIGFuZCBoZW5jZSBJIHNhdyB0aGUgbWFzc2l2ZSBpbXByb3ZlbWVudCBpbiBwZXJmb3JtYW5j ZS4KTXkgZml4IGlzIG5vdCBjYXVzaW5nIGFueSBjaGFuZ2UgaW4gdGhlIHBlcmZvcm1hbmNlLiBJ IHdyb25nbHkgY29tbXVuaWNhdGVkIHRoYXQgdGhlIGZpeCBpcyBjYXVzaW5nIHBlcmZvcm1hbmNl IGltcHJvdmVtZW50LiBTb3JyeSBmb3IgdGhhdC4KCkFzIHBlciB0aGUgcGVyZiBkYXRhLCB0aGUg Zm9ybWF0X2RlY29kZSBpcyB0aGUgZnVuY3Rpb24gd2hlcmUgbW9zdCBvZiB0aGUgdGltZSBpcyBz cGVudCBpLmUuIGZvcm1hdHRpbmcgdGhlIHJlY29yZCBpbiB0aGUgYnVmZmVyIGJlZm9yZSBkZWxp dmVyaW5nIHRoZSBkYXRhIHRvIHVzZXIgc3BhY2UuCldlIG5lZWQgdG8gZWxpbWluYXRlIGZvcm1h dHRpbmcgcmVjb3JkcyB0byBpbmNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuIApBbnkgaWRlYSB3aHkg d2UgbmVlZCB0byBmb3JtYXQgdGhlIHJlY29yZCBhbmQgd2hldGhlciBjYW4gd2UgYWRkIGFuIG9w dGlvbiAoUkFXKSB0byBkZWxpdmVyIHRoZSByZWNvcmQgd2l0aG91dCBmb3JtYXR0aW5nIHRvIHVz ZXIgc3BhY2U/CgotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQpGcm9tOiBSaWNoYXJkIEd1eSBC cmlnZ3MgW21haWx0bzpyZ2JAcmVkaGF0LmNvbV0gClNlbnQ6IFRodXJzZGF5LCBGZWJydWFyeSAx MiwgMjAxNSAxMTo1NSBQTQpUbzogVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKQpD YzogUmljaGFyZCBHdXkgQnJpZ2dzOyBsaW51eC1hdWRpdEByZWRoYXQuY29tClN1YmplY3Q6IFJl OiBMaW51eCBhdWRpdCBwZXJmb3JtYW5jZSBpbXBhY3QKCk9uIDE1LzAyLzEyLCBWaXN3YW5hdGgs IExvZ2Vzd2FyaSBQIChNQ09VIE9TVEwpIHdyb3RlOgo+IEhpIGFsbCwKPiAKPiBXZSBkaWQgcHJv ZmlsaW5nIG9mIHRoZSBrZXJuZWwgKHVzaW5nIHBlcmYgdG9vbCkgZHVyaW5nIG91ciBwZXJmb3Jt YW5jZSB0ZXN0IGFuZCBiZWxvdyB3ZXJlIHRoZSB0b3AgNCBmdW5jdGlvbnMgZm9yIHRoZSBvdmVy aGVhZC4KPiAKPiAxMS4zMyUgICAgICAgIGxvYWRlcjEgIFtrZXJuZWwua2FsbHN5bXNdICAgW2td IGZvcm1hdF9kZWNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAxMC40 MCUgICAgICAgIGxvYWRlcjEgIFtrZXJuZWwua2FsbHN5bXNdICAgW2tdIG1lbWNweSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ICAgICAgNy40NiUgICAgICAgIGxvYWRl cjEgIFtrZXJuZWwua2FsbHN5bXNdICAgW2tdIG51bWJlci5pc3JhLjEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAo+ICAgICAgNi45OSUgICAgICAgIGxvYWRlcjEgIFtrZXJuZWwua2Fs bHN5bXNdICAgW2tdIHZzbnByaW50ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAo+IAo+IEkgd2FzIHVuYWJsZSB0byBhdHRhY2ggdGhlIGVudGlyZSBwcm9maWxpbmcgZGF0YSBv ZiB0aGUga2VybmVsIGJlY2F1c2UgaXQgZXhjZWVkcyB0aGUgbGltaXQgb2YgODBLQi4KPiAgICAK PiA+RnJvbSB0aGUgcGVyZiBkYXRhLCB3ZSBiZWxpZXZlZCB0aGUgb3ZlcmhlYWQgaXMgYmVjYXVz ZSBvZiBpbnZva2luZyBhdWRpdF9sb2dfZm9ybWF0IGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzLgo+ IFdlIGNoYW5nZWQgdGhlIGNvZGUgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgdGltZXMgdGhpcyBm dW5jdGlvbiBpcyBjYWxsZWQuCj4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgcGVyZm9ybWFuY2UgZGVn cmFkYXRpb24gaXMgMjAlIG5vdyBjb21wYXJlZCB0byB0aGUgcGVyZm9ybWFuY2Ugd2l0aG91dCBh dWRpdGluZy4KPiBXaXRob3V0IHRoaXMgY2hhbmdlIHRoZSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlv biBpcyAyMDAlIGNvbXBhcmVkIHRvIHRoZSBwZXJmb3JtYW5jZSB3aXRob3V0IGF1ZGl0aW5nLgoK VGhvc2UgbnVtYmVycyBhcmUgbm90IGluc2lnbmlmaWNhbnQhICBJIGFtIGEgYml0IHN1cnByaXNl ZCB5b3Ugd2VyZSBhYmxlIHRvIGdldCB0aGF0IG11Y2ggb2YgYW4gaW1wcm92ZW1lbnQgd2l0aCBq dXN0IHRoaXMgY2xhc3Mgb2YgY2hhbmdlLgoKPiBXZSBjYW4gcHVibGlzaCB0aGUgY29kZSBjaGFu Z2UgZG9uZSB0b21vcnJvdy4KCkknZCBjZXJ0YWlubHkgYmUgaW50ZXJlc3RlZCB0byBzZWUgdGhl IGNvZGUuCgo+IFBsZWFzZSBsZXQgbWUga25vdyB5b3VyIGZlZWRiYWNrIG9uIHRoaXMgaWRlYS4g Cj4gCj4gUmVnYXJkcywKPiBMb2dlc3dhcmkuCj4gCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0KPiBGcm9tOiBSaWNoYXJkIEd1eSBCcmlnZ3MgW21haWx0bzpyZ2JAcmVkaGF0LmNvbV0KPiBT ZW50OiBXZWRuZXNkYXksIEZlYnJ1YXJ5IDExLCAyMDE1IDEwOjIxIFBNCj4gVG86IFZpc3dhbmF0 aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkKPiBDYzogbGludXgtYXVkaXRAcmVkaGF0LmNvbQo+ IFN1YmplY3Q6IFJlOiBMaW51eCBhdWRpdCBwZXJmb3JtYW5jZSBpbXBhY3QKPiAKPiBPbiAxNS8w Mi8wNiwgVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKSB3cm90ZToKPiA+IEhpIGFs bCwKPiA+IAo+ID4gUGxlYXNlIGZpbmQgdGhlIGJlbG93IHRoZSBkZXRhaWxzIG9mIHRoZSBwZXJm b3JtYW5jZSB0ZXN0IHdlIHJhbi4KPiA+IEl0IHdvdWxkIGJlIGdyZWF0IGlmIHdlIGdldCBoZWxw IHRvIGlkZW50aWZ5IHRoZSByZWFzb24gYmVoaW5kIHRoZSBkZWdyYWRhdGlvbiBhbmQgdGhlIHdh eXMgb2YgaW1wcm92aW5nIGl0LiAKPiA+IAo+ID4gS2VybmVsIFZlcnNpb246Cj4gPiByb290ID4g dW5hbWUgLXIKPiA+IDMuMTMuMC0zNi1nZW5lcmljCj4gPiAKPiA+IE9TIFZlcnNpb246Cj4gPiBV YnVudHUgMTQuMDQuMQo+ID4gCj4gPiBOby4gb2YgQ1BVczogCj4gPiByb290ID4gbnByb2MKPiA+ IDI0Cj4gPiAKPiA+IEF1ZGl0IFN0YXR1czoKPiA+IHJvb3QgPiBhdWRpdGN0bCAtcwo+ID4gQVVE SVRfU1RBVFVTOiBlbmFibGVkPTEgZmxhZz0xIHBpZD0wIHJhdGVfbGltaXQ9MCBiYWNrbG9nX2xp bWl0PTMyMAo+ID4gbG9zdD01NzE5MDM1MyBiYWNrbG9nPTAKPiA+IAo+ID4gUnVsZXMgQ29uZmln dXJlZDoKPiA+IHJvb3QgPiBhdWRpdGN0bCAtbAo+ID4gTElTVF9SVUxFUzogZXhpdCxhbHdheXMg YXJjaD0zMjIxMjI1NTM0ICgweGMwMDAwMDNlKSBzeXNjYWxsPWFsbAo+ID4gCj4gPiBBdHRhY2hl ZCBpcyB0aGUgcHJvZ3JhbSB1c2VkIHRvIGxvYWQgdGhlIHN5c3RlbS4KPiA+IAo+ID4gUmVzdWx0 czoKPiA+IAo+ID4gV2l0aG91dCBlbmFibGluZyBhdWRpdAkxMi4yOQo+ID4gV2l0aCBhdWRpdGlu ZyBlbmFibGVkIGFuZCBubyBydWxlcyBjb25maWd1cmVkIDEyLjMxCj4gPiBXaXRoIGF1ZGl0aW5n IGVuYWJsZWQsIDEgcnVsZSBjb25maWd1cmVkIGJ1dCBhdWRpdGQgbm90IHJ1bm5pbmcgLSBrYXVk aXRkIGxvZ3MgYXVkaXQgcmVjb3JkcyB0byBzeXNsb2cgdmlhIHByaW50awk0MS4wMgkJCj4gCj4g VGhpcyB3b3VsZCBiZSBtb3JlIG1lYW5pbmdmdWwgaWYgeW91IGhhY2tlZCB0aGUga2VybmVsIHRv IGRyYWluIHRoZSBxdWV1ZSBmaWd1cmF0aXZlbHkgdG8gL2Rldi9udWwgdG8gZWxpbWluYXRlIHRo ZSBlZmZlY3Qgb2YgYXVkaXRkIGRyYWluaW5nIGl0LCBvciBzeXNsb2cgY292ZXJpbmcgZm9yIGEg bWlzc2luZyBhdWRpdGQuICBUaGlzIHN0YXQgZG9lc24ndCB0ZWxsIHVzIHRoYXQgbXVjaCBzaW5j ZSB0aGUgSS9PIGFjdCBjYW4gdmFyeSBzaWduaWZpY2FudGx5IHBlciBpbnN0YWxsYXRpb24uICBU aGF0IG9uZSBydWxlIHlvdSBjaG9zZSBpcyBwcmV0dHkgdW5uYXR1cmFsbHkgYWJ1c2l2ZSBhbmQg bmVlZHMgdG8gYmUgY2FyZWZ1bGx5IHRob3VnaHQgb3V0IHRvIGF2b2lkIHNlbGYtbWVhc3VyZW1l bnQuCj4gCj4gPiBUaGUgZGVncmFkYXRpb24gaXMgYXJvdW5kIDIwMCUKPiA+IAo+ID4gUmVnYXJk cywKPiA+IExvZ2Vzd2FyaS4KPiA+IAo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ IEZyb206IFJpY2hhcmQgR3V5IEJyaWdncyBbbWFpbHRvOnJnYkByZWRoYXQuY29tXQo+ID4gU2Vu dDogV2VkbmVzZGF5LCBGZWJydWFyeSAwNCwgMjAxNSA5OjQ2IFBNCj4gPiBUbzogVmlzd2FuYXRo LCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKQo+ID4gQ2M6IFNhdGlzaCBDaGFuZHJhIEtpbGFydTsg U3RldmUgR3J1YmI7IGxpbnV4LWF1ZGl0QHJlZGhhdC5jb20KPiA+IFN1YmplY3Q6IFJlOiBMaW51 eCBhdWRpdCBwZXJmb3JtYW5jZSBpbXBhY3QKPiA+IAo+ID4gT24gMTUvMDIvMDQsIFZpc3dhbmF0 aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkgd3JvdGU6Cj4gPiA+IFRoZSBpbnRlbnQgaXMgdG8g Y2FsY3VsYXRlIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgYnkgdGhlIGF1ZGl0aW5nIAo+ID4gPiBj b21wb25lbnRzIHN1Y2ggYXMKPiA+ID4gCj4gPiA+IDEpIGltcGFjdCBiZWNhdXNlIG9mIGthdWRp dGQgd2l0aG91dCBhdWRpdGQgLSBidXQga2F1ZGl0ZCB3cml0ZXMgdG8gc3lzbG9nLCBzbyB3ZSBh cmUgdW5hYmxlIHRvIGRldGVybWluZSB0aGUgaW1wYWN0IGp1c3QgYmVjYXVzZSBvZiBrYXVkaXRk IC0gSXQgaXMgZmluZSBldmVuIGlmIHRoZSBhdWRpdCByZWNvcmQgaXMgZHJvcHBlZCBieSBrYXVk aXRkLiBJcyB0aGVyZSBhbnkgd2F5IHRvIGRvIHRoaXM/Cj4gPiAKPiA+IE5vdCB5ZXQuICBUaGF0 IGlzIGEgbW9kZSB0aGF0IGhhcyBub3QgYmVlbiB1c2VmdWwgdG8gYW55b25lIHlldC4gIFlvdSBh cmUgd2VsY29tZSB0byBoYWNrIGEgY3VzdG9tIGtlcm5lbCB0byBkaXNhYmxlIGtsb2cgZm9yIGRv aW5nIHRlc3RpbmcgaW5zdHJ1bWVudGF0aW9uLgo+ID4gCj4gPiA+IDIpIGltcGFjdCBiZWNhdXNl IG9mIHJ1bm5pbmcgYXVkaXRkIC0gbG9nIGZvcm1hdCBOT0xPRwo+ID4gPiAzKSBpbXBhY3QgYmVj YXVzZSBvZiBydW5uaW5nIGF1ZGlzcGQgLSBzbWFsbCBwbHVnaW4gaXMgd3JpdHRlbiB3aGljaCB3 aWxsIGp1c3QgcmVhZCB0aGUgYXVkaXQgcmVjb3JkcyBhbmQgZG9lc24ndCBwcm9jZXNzZXMgaXQu Cj4gPiA+IAo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gPiBGcm9tOiBSaWNo YXJkIEd1eSBCcmlnZ3MgW21haWx0bzpyZ2JAcmVkaGF0LmNvbV0KPiA+ID4gU2VudDogVHVlc2Rh eSwgRmVicnVhcnkgMDMsIDIwMTUgMTA6MzMgUE0KPiA+ID4gVG86IFNhdGlzaCBDaGFuZHJhIEtp bGFydQo+ID4gPiBDYzogVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKTsgU3RldmUg R3J1YmI7IAo+ID4gPiBsaW51eC1hdWRpdEByZWRoYXQuY29tCj4gPiA+IFN1YmplY3Q6IFJlOiBM aW51eCBhdWRpdCBwZXJmb3JtYW5jZSBpbXBhY3QKPiA+ID4gCj4gPiA+IE9uIDE1LzAyLzAzLCBT YXRpc2ggQ2hhbmRyYSBLaWxhcnUgd3JvdGU6Cj4gPiA+ID4gVGhhbmtzIGZvciBUaGUgaW5mby4g QnV0IG15IHF1ZXN0aW9uIHdhcyByaGV0b3JpY2FsLi4uIEkgbWVhbnQgCj4gPiA+ID4gdG8gc2F5 IHRoYXQgaXQgd291bGQgbm90IGJlIG11Y2guLi4gU2hlIGlzIHRyeWluZyB0byBib21iYXJkIHRo ZSAKPiA+ID4gPiBzeXN0ZW0gd2l0aCBvcGVuIGNhbGxzIC4uLiBTbyBsb3RzIGFuZCBsb3RzIG9m IGV2ZW50cyB3aWxsIGJlIAo+ID4gPiA+IGdlbmVyYXRlZCBhbmQga2VybmVsIGhhcyB0byB3cml0 ZSBkb3duIHRoZSBldmVudHMgc29tZSB3aGVyZSBvciBkaXNjYXJkIHRoZW0uLi4KPiA+ID4gCj4g PiA+IEV4YWN0bHkuICBJdCBpcyBvZiBsaXR0bGUgcHJhY3RpY2FsIHVzZS4gIFlvdSBoYXZlIHRv IGRvIEkvTyBhdCBzb21lIHBvaW50LCBlaXRoZXIgdG8gdGhlIHNhbWUgZGlzayBvciBhbm90aGVy LCBvciB0byBhIG5ldHdvcmsgaW50ZXJmYWNlIG9yIHNlcmlhbCBwb3J0LCBvdGhlcndpc2UsIGp1 c3QgY2h1Y2sgaXQgb3V0LiAgWW91IGNvdWxkIGRvIGEgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQg b24gYSBzaG9ydCBidXJzdCwgdGhlbiBkcmFpbiB0aGUgcXVldWUsIGJ1dCB3aGF0IHdpbGwgdGhh dCBhY3R1YWxseSB0ZWxsIHVzPwo+ID4gPiAKPiA+ID4gPiBPbiBUdWVzZGF5LCBGZWJydWFyeSAz LCAyMDE1LCBSaWNoYXJkIEd1eSBCcmlnZ3MgPHJnYkByZWRoYXQuY29tPiB3cm90ZToKPiA+ID4g PiAKPiA+ID4gPiA+IE9uIDE1LzAyLzAzLCBTYXRpc2ggQ2hhbmRyYSBLaWxhcnUgd3JvdGU6Cj4g PiA+ID4gPiA+IEhvdyBtYW55IGV2ZW50cyBjYW4ga2VybmVsIGFjY3VtdWxhdGUgd2l0aG91dCBJ L28gPwo+ID4gPiA+ID4KPiA+ID4gPiA+IFRoZSBrZXJuZWwgZGVmYXVsdCBpcyA2NCAqYnVmZmVy cyosIGJ1dCBJIHRoaW5rIEZlZG9yYSBhbmQgCj4gPiA+ID4gPiBSSEVMIHNldCBpdCB0byAzMjAu ICBJdCBpcyBub3cgcG9zc2libGUgdG8gc2V0IGl0IHRvICIwIiB3aGljaCAKPiA+ID4gPiA+IG1l YW5zIGxpbWl0ZWQgb25seSBieSBzeXN0ZW0gcmVzb3VyY2VzLiAgU2VlICJtYW4gYXVkaXRjdGwi LCAiLWIiCj4gPiA+ID4gPiBvcHRpb24uICBBbiBldmVudCBjYW4gYmUgbWFkZSB1cCBvZiBzZXZl cmFsIGJ1ZmZlcnMuCj4gPiA+ID4gPgo+ID4gPiA+ID4gT2YgY291cnNlLCBob3cgbG9uZyBhIHN5 c3RlbSBsYXN0cyBiZWZvcmUgdGhlIHF1ZXVlIGJsb3dzIHVwIAo+ID4gPiA+ID4gZGVwZW5kcyBv biB5b3VyIHJ1bGUgc2V0Li4uCj4gPiA+ID4gPgo+ID4gPiA+ID4gSG93ZXZlciwgYXQgdGhlIG1v bWVudCwgaXQgd2lsbCBzdGlsbCB3cml0ZSBvdXQgdG8ga2xvZyBpZiAKPiA+ID4gPiA+IGF1ZGl0 ZCBpc24ndCBydW5uaW5nLgo+ID4gPiA+ID4KPiA+ID4gPiA+ID4gT24gVHVlc2RheSwgRmVicnVh cnkgMywgMjAxNSwgVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVQo+ID4gPiA+ID4gPiBPU1RM KSA8IGxvZ2Vzd2FyaS5wdkBocC5jb20gPGphdmFzY3JpcHQ6Oz4+IHdyb3RlOgo+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+IEkgZG9uJ3Qgd2FudCB0byBkaXNhYmxlIGF1ZGl0aW5nIChpLmUuIGRp c2FibGUgYXVkaXQgCj4gPiA+ID4gPiA+ID4gcmVjb3JkCj4gPiA+ID4gPiBjb2xsZWN0aW9uKSwK PiA+ID4gPiA+ID4gPiBidXQganVzdCBkbyBub3Qgd2FudCB0aGUgcmVjb3JkcyB0byBkZWxpdmVy ZWQgdG8gdXNlciAKPiA+ID4gPiA+ID4gPiBzcGFjZSBzaW5jZSBJCj4gPiA+ID4gPiB3YW50IHRv Cj4gPiA+ID4gPiA+ID4gcmVtb3ZlIHRoZSBJL08gb3ZlcmhlYWQgd2hpbGUgcnVubmluZyB0aGUg cGVyZm9ybWFuY2UgdGVzdC4KPiA+ID4gPiA+ID4gPiBJcyB0aGVyZSBhbnkgb3B0aW9uIGZvciB0 aGlzPwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0KPiA+ID4gPiA+ID4gPiBGcm9tOiBSaWNoYXJkIEd1eSBCcmlnZ3MgW21haWx0bzpyZ2JAcmVk aGF0LmNvbSAKPiA+ID4gPiA+ID4gPiA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ID4gPGphdmFzY3Jp cHQ6Oz5dCj4gPiA+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIEphbnVhcnkgMjksIDIwMTUgMTA6 MjMgUE0KPiA+ID4gPiA+ID4gPiBUbzogVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RM KQo+ID4gPiA+ID4gPiA+IENjOiBTYXRpc2ggQ2hhbmRyYSBLaWxhcnU7IFN0ZXZlIEdydWJiOyAK PiA+ID4gPiA+ID4gPiBsaW51eC1hdWRpdEByZWRoYXQuY29tCj4gPiA+ID4gPiA8amF2YXNjcmlw dDo7Pgo+ID4gPiA+ID4gPiA+IDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA+ID4gU3ViamVjdDog UmU6IExpbnV4IGF1ZGl0IHBlcmZvcm1hbmNlIGltcGFjdAo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gT24gMTUvMDEvMjksIFZpc3dhbmF0aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkgd3Jv dGU6Cj4gPiA+ID4gPiA+ID4gPiBQbGVhc2UgcmVhZCBteSBxdWVzdGlvbiBhcyDigJxJcyB0aGVy ZSBhbnkgb3B0aW9uIHRvIAo+ID4gPiA+ID4gPiA+ID4gY29uZmlndXJlIGthdWRpdCBub3QgdG8g bG9nIGF1ZGl0IHJlY29yZHMgdG8gc3lzbG9nPyB3aGVuIGF1ZGl0ZCBub3QgcnVubmluZy7igJ0K PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFllYWgsIHJlbW92ZSBhdWRpdD0xIGZyb20gdGhl IGtlcm5lbCBjb21tYW5kIGxpbmUsIG9yIHNldAo+ID4gPiA+ID4gPiA+IGF1ZGl0PTAgaW4KPiA+ ID4gPiA+IGl0cwo+ID4gPiA+ID4gPiA+IHBsYWNlLiAgVGhpcyB3aWxsIHN0b3AgYWxsIGJ1dCBB VkNzIGFuZCBpZiBhdWRpdGQgaGFzIGV2ZXIgCj4gPiA+ID4gPiA+ID4gcnVuIHNpbmNlCj4gPiA+ ID4gPiBib290Lgo+ID4gPiA+ID4gPiA+IElmIGF1ZGl0PTAgaXMgb24gdGhlIGtlcm5lbCBib290 IGxpbmUsIGl0IHdpbGwgYmUgCj4gPiA+ID4gPiA+ID4gaW1wb3NzaWJsZSB0byBydW4KPiA+ID4g PiA+IGF1ZGl0ZC4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFRoZXJlIGlzIGEgZmVhdHVy ZSByZXF1ZXN0IHRoYXQgaXMgbGlrZWx5IGNvbWluZyBzb29uIHRoYXQgCj4gPiA+ID4gPiA+ID4g Y291bGQgYmUKPiA+ID4gPiA+ID4gPiB1c2VmdWw6Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTExNjAwNDYKPiA+ ID4gPiA+ID4gPiAiSWYgbm8gYXVkaXQgZGFlbW9uIGlzIHJ1bm5pbmcsIGJ1dCBhbiBhdWRpdCBt dWx0aWNhc3QgCj4gPiA+ID4gPiA+ID4gc3Vic2NyaWJlciBpcyBhcm91bmQsIHRoZW4gdGhlIGtl cm5lbCBzaG91bGRuJ3QgZm9yd2FyZCBhdWRpdCBkYXRhIHRvIGttc2ciCj4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+IEZyb206IFZpc3dhbmF0aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkK PiA+ID4gPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBKYW51YXJ5IDI5LCAyMDE1IDExOjQ5IEFN Cj4gPiA+ID4gPiA+ID4gPiBUbzogJ1NhdGlzaCBDaGFuZHJhIEtpbGFydSc7IFN0ZXZlIEdydWJi Cj4gPiA+ID4gPiA+ID4gPiBDYzogbGludXgtYXVkaXRAcmVkaGF0LmNvbSA8amF2YXNjcmlwdDo7 PiA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ID4gPiA+ID4gU3ViamVjdDogUkU6IExpbnV4IGF1ZGl0 IHBlcmZvcm1hbmNlIGltcGFjdAo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IElzIHRo ZXJlIGFueSBvcHRpb24gdG8gY29uZmlndXJlIGthdWRpdCBub3QgdG8gbG9nIGF1ZGl0IAo+ID4g PiA+ID4gPiA+ID4gcmVjb3JkcyB0bwo+ID4gPiA+ID4gPiA+IHN5c2xvZyB3aGVuIGF1ZGl0ZCBp cyBydW5uaW5nPwo+ID4gPiA+ID4gPiA+ID4gVGhpcyB3YXkgd2UgY2FuIGFzc2VzcyB0aGUgaW1w YWN0IG9mIGVuYWJsaW5nIGF1ZGl0IAo+ID4gPiA+ID4gPiA+ID4gd2l0aG91dCBpbnZvbHZpbmcK PiA+ID4gPiA+ID4gPiBkaXNrIEkvbyBvdmVyaGVhZC4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gPiBGcm9tOiBTYXRpc2ggQ2hhbmRyYSBLaWxhcnUgW21haWx0bzppYW0ua2lsYXJ1QGdt YWlsLmNvbQo+ID4gPiA+ID4gPGphdmFzY3JpcHQ6Oz4gPGphdmFzY3JpcHQ6Oz5dCj4gPiA+ID4g PiA+ID4gPiBTZW50OiBUaHVyc2RheSwgSmFudWFyeSAyOSwgMjAxNSA5OjEyIEFNCj4gPiA+ID4g PiA+ID4gPiBUbzogU3RldmUgR3J1YmIKPiA+ID4gPiA+ID4gPiA+IENjOiBsaW51eC1hdWRpdEBy ZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+IDxqYXZhc2NyaXB0Ojs+PG1haWx0bzoKPiA+ID4gPiA+ IGxpbnV4LWF1ZGl0QHJlZGhhdC5jb20gPGphdmFzY3JpcHQ6Oz4KPiA+ID4gPiA+ID4gPiA8amF2 YXNjcmlwdDo7Pj47IFZpc3dhbmF0aCwKPiA+ID4gPiA+ID4gPiA+IExvZ2Vzd2FyaSBQIChNQ09V IE9TVEwpCj4gPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBSZTogTGludXggYXVkaXQgcGVyZm9ybWFu Y2UgaW1wYWN0Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gSSBhZ3JlZSB3aXRoIHlv dS4uLiBidXQgd3JpdGluZyB0byBkaXNrIGNhbiB0cmlnZ2VyIAo+ID4gPiA+ID4gPiA+ID4gZnVy dGhlciBldmVudHMKPiA+ID4gPiA+ID4gPiBsZWFkaW5nIHNwaXJhbGxpbmcgb2YgZXZlbnRzLi4u Cj4gPiA+ID4gPiA+ID4gPiBJIGJyb3VnaHQgZG93biBteSBzZXJ2ZXIgZmV3IHRpbWVzIHdpdGgg c3R1cGlkIHJ1bGVzLi4uCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gT24gV2VkLCBK YW4gMjgsIDIwMTUgYXQgMTA6MzkgUE0sIFN0ZXZlIEdydWJiIAo+ID4gPiA+ID4gPiA+ID4gPHNn cnViYkByZWRoYXQuY29tCj4gPiA+ID4gPiA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ID4gPiA+IDxq YXZhc2NyaXB0Ojs+PG1haWx0bzpzZ3J1YmJAcmVkaGF0LmNvbSA8amF2YXNjcmlwdDo7Pgo+ID4g PiA+ID4gPGphdmFzY3JpcHQ6Oz4+PiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IE9uIFdlZG5lc2Rh eSwgSmFudWFyeSAyOCwgMjAxNSAxMDoxODo0NyBBTSBTYXRpc2ggCj4gPiA+ID4gPiA+ID4gPiBD aGFuZHJhIEtpbGFydQo+ID4gPiA+ID4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+IFdyaXRlIHlv dXIgb3duIHByb2dyYW0gdG8gcmVjZWl2ZSBhdWRpdCBldmVudHMgCj4gPiA+ID4gPiA+ID4gPiA+ IGRpcmVjdGx5IHdpdGhvdXQgdXNpbmcgYXVkaXRkLi4uCj4gPiA+ID4gPiA+ID4gPiA+IFRoYXQg c2hvdWxkIGJlIGZhc3RlciAuLi4uCj4gPiA+ID4gPiA+ID4gPiA+IEF1ZGl0ZCB3aWxsIGxvZyB0 aGUgZXZlbnRzIHRvIGRpc2sgY2F1c2luZyBtb3JlIEkvbyB0aGFuIHUgbmVlZC4uLgo+ID4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IEJ1dCBldmVuIHRoYXQgaXMgY29uZmlndXJhYmxlIGlu IG1hbnkgd2F5cy4gWW91IGNhbiAKPiA+ID4gPiA+ID4gPiA+IGRlY2lkZSBpZiB5b3UKPiA+ID4g PiA+IHdhbnQKPiA+ID4gPiA+ID4gPiA+IGxvZ2dpbmcgdG8gZGlzayBvciBub3QgYW5kIHdoYXQg a2luZCBvZiBhc3N1cmFuY2UgdGhhdCAKPiA+ID4gPiA+ID4gPiA+IGl0IG1hZGUgaXQgdG8gZGlz ayBhbmQgdGhlIHByaW9yaXR5IG9mIHRoYXQgYXVkaXQgZGFlbW9uLgo+ID4gPiA+ID4gPiA+ID4g VGhlbiB5b3UgYWxzbyBoYXZlIGFsbAo+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiA+ID4gPiBub3Jt YWwgdHVuaW5nIGtub2JzIGZvciBkaXNrIHRocm91Z2hwdXQgdGhhdCB5b3Ugd291bGQgCj4gPiA+ ID4gPiA+ID4gPiB1c2UgZm9yIGFueSBkaXNrIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHN5c3RlbS4K PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiAtU3RldmUKPiA+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gPiA+IE9uIFdlZG5lc2RheSwgSmFudWFyeSAyOCwgMjAxNSwgVmlzd2FuYXRo LCBMb2dlc3dhcmkgUCAKPiA+ID4gPiA+ID4gPiA+ID4gKE1DT1UKPiA+ID4gPiA+ID4gPiA+ID4g T1NUTCkKPiA+ID4gPiA+IDwKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gbG9n ZXN3YXJpLnB2QGhwLmNvbSA8amF2YXNjcmlwdDo7PiA8amF2YXNjcmlwdDo7PjxtYWlsdG86Cj4g PiA+ID4gPiBsb2dlc3dhcmkucHZAaHAuY29tIDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA+ID4g PGphdmFzY3JpcHQ6Oz4+PiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gPiAgSGkgU3RldmUsCj4g PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBJIGFtIExvZ2Vzd2FyaSB3b3Jr aW5nIGZvciBIUC4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBXZSB3YW50IHRvIGtub3cgYXVkaXQg cGVyZm9ybWFuY2UgaW1wYWN0IG9uIFJIRUwgYW5kIAo+ID4gPiA+ID4gPiA+ID4gPiA+IFN1c2Ug bGludXgKPiA+ID4gPiA+IHRvCj4gPiA+ID4gPiA+ID4gPiA+ID4gaGVscCB1cyBldmFsdWF0ZSBs aW51eCBhdWRpdCBhcyBkYXRhIHNvdXJjZSBmb3Igb3VyIAo+ID4gPiA+ID4gPiA+ID4gPiA+IGhv c3QgYmFzZWQKPiA+ID4gPiA+IElEUy4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ ID4gPiA+IFdoZW4gd2UgcmFuIG91ciBvd24gcGVyZm9ybWFuY2UgdGVzdCB3aXRoIGEgdGVzdCAK PiA+ID4gPiA+ID4gPiA+ID4gPiBhdWRpc3BkIHBsdWdpbiwgd2UgZm91bmQgaWYgYSBzeXN0ZW0g Y2FuIHBlcmZvcm0KPiA+ID4gPiA+ID4gPiA+ID4gPiAyMDAwMDAgb3Blbi9jbG9zZSBzeXN0ZW0g Y2FsbHMgcGVyIHNlY29uZCB3aXRob3V0IAo+ID4gPiA+ID4gPiA+ID4gPiA+IGF1ZGl0aW5nLCBz eXN0ZW0gY2FuIHBlcmZvcm0gb25seSAzMDAwIG9wZW4vY2xvc2UgCj4gPiA+ID4gPiA+ID4gPiA+ ID4gc3lzdGVtIGNhbGxzIGF1ZGl0aW5nIGlzIGVuYWJsZWQgZm9yIG9wZW4vY2xvc2UgCj4gPiA+ ID4gPiA+ID4gPiA+ID4gc3lzdGVtIGNhbGwgd2hpY2ggaXMgYSBIVUdFIGltcGFjdCBvbiB0aGUg c3lzdGVtIHBlcmZvcm1hbmNlLgo+ID4gPiA+ID4gPiA+ID4gPiA+IEl0IHdvdWxkCj4gPiA+ID4g PiBiZQo+ID4gPiA+ID4gPiA+ID4gPiA+IGdyZWF0IGlmIGFueW9uZSBjYW4gaGVscCB1cyBhbnN3 ZXJpbmcgdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuCj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gMSkg ICAgICBJcyB0aGlzIHBlcmZvcm1hbmNlIGltcGFjdCBleHBlY3RlZD8gSWYgeWVzLCB3aGF0IGlz IHRoZQo+ID4gPiA+ID4gPiA+IHJlYXNvbgo+ID4gPiA+ID4gPiA+ID4gPiA+IGJlaGluZCBpdCBh bmQgY2FuIHdlIGZpeCBpdD8KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ IDIpICAgICAgSGF2ZSBhbnlvbmUgZG9uZSBhbnkgYmVuY2htYXJraW5nIGZvciBwZXJmb3JtYW5j ZQo+ID4gPiA+ID4gaW1wYWN0PyBJZgo+ID4gPiA+ID4gPiA+IHllcywKPiA+ID4gPiA+ID4gPiA+ ID4gPiBjYW4geW91IHBsZWFzZSBzaGFyZSB0aGUgbnVtYmVycyBhbmQgYWxzbyB0aGUgCj4gPiA+ ID4gPiA+ID4gPiA+ID4gc3RlcHMvcHJvZ3JhbXMgdXNlZCB0aGUgcnVuIHRoZSBzYW1lLgo+ID4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gMykgICAgICBIZWxwIHVzIHZhbGlk YXRpbmcgdGhlIHBlcmZvcm1hbmNlIHRlc3Qgd2UgaGF2ZSBkb25lIGluCj4gPiA+ID4gPiBvdXIK PiA+ID4gPiA+ID4gPiB0ZXN0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gc2V0dXAgdXNpbmcgdGhlIHN0 ZXBzIG1lbnRpb25lZCBhbG9uZyB3aXRoIHRoZSByZXN1bHRzIGF0dGFjaGVkLgo+ID4gPiA+ID4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+ID4gPiA+IEF0dGFjaGVkIHRlc3QgcHJvZ3JhbSAobG9hZGVyLmMpIHRvIGludm9rZSBv cGVuIGFuZCAKPiA+ID4gPiA+ID4gPiA+ID4gPiBjbG9zZSBzeXN0ZW0KPiA+ID4gPiA+ID4gPiBj YWxscy4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEF0dGFjaGVkIGlk c2tlcm5kc3AgaXMgdGhlIGF1ZGlzcGQgcGx1Z2luIHByb2dyYW0uCj4gPiA+ID4gPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBXZSB1c2VkIHRpbWUgY29tbWFuZCB0byBkZXRlcm1pbmUg aG93IG11Y2ggdGltZSB0aGUgCj4gPiA+ID4gPiA+ID4gPiA+ID4gc3lzdGVtIHRvb2sKPiA+ID4g PiA+IHRvCj4gPiA+ID4gPiA+ID4gPiA+ID4gY29tcGxldGUgNTAwMDAgb3Blbi9jbG9zZSBzeXN0 ZW0gY2FsbHMgd2l0aG91dCAKPiA+ID4gPiA+ID4gPiA+ID4gPiAocmVzdWx0cyBhdHRhY2hlZAo+ ID4gPiA+ID4gPiA+ID4gPiA+IFdpdGhvdXQtYXVkaXRpbmcpIGFuZCB3aXRoIGF1ZGl0aW5nIGVu YWJsZWQgb24gdGhlIAo+ID4gPiA+ID4gPiA+ID4gPiA+IHN5c3RlbSAoV2l0aC1hdWRpdGluZy1O T0xPRy1hdWRpc3BkLXBsdWdpbiBhbmQKPiA+ID4gPiA+ID4gPiA+ID4gPiBXaXRoLWF1ZGl0aW5n LVJBVykKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBTeXN0ZW0gZGV0YWlsczoKPiA+ID4gPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiA+ID4gPiAxIENQVSBtYWNoaW5lCj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKk9TIFZlcnNp b24qCj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBSSEVMIDYuNQo+ID4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiA+ICpLZXJuZWwgVmVyc2lvbioKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiA+IHVuYW1lIOKAk3IKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+ID4gPiA+IDIuNi4zMi00MzEuZWw2Lng4Nl82NAo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ IE5vdGU6IGF1ZGl0ZCB3YXMgb2NjdXB5aW5nIDM1JSBvZiBDUFUgYW5kIHdhcyAKPiA+ID4gPiA+ ID4gPiA+ID4gPiBzbGVlcGluZyBmb3IgbW9zdAo+ID4gPiA+ID4gb2YKPiA+ID4gPiA+ID4gPiA+ ID4gPiB0aGUgdGltZSB3aGVyZWFzIGthdWRpdGQgd2FzIG9jY3VweWluZyAyMCUgb2YgdGhlIENQ VS4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBUaGFua3MgJiBSZWdhcmRzLAo+ID4gPiA+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gTG9nZXN3YXJpLgo+ID4gPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gLS0KPiA+ID4gPiA+ ID4gPiA+IFBsZWFzZSBEb25hdGUgdG8KPiA+ID4gPiA+ID4gPiA+IHd3dy53aWtpcGVkaWEub3Jn PGh0dHA6Ly93d3cud2lraXBlZGlhLm9yZz4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4g LS0KPiA+ID4gPiA+ID4gPiA+IExpbnV4LWF1ZGl0IG1haWxpbmcgbGlzdCBMaW51eC1hdWRpdEBy ZWRoYXQuY29tIAo+ID4gPiA+ID4gPiA+ID4gPGphdmFzY3JpcHQ6Oz4gPGphdmFzY3JpcHQ6Oz4g Cj4gPiA+ID4gPiA+ID4gPiBodHRwczovL3d3dy5yZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8v bGludXgtYXVkaXQKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gLSBS R0IKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiA+ID4gUmljaGFyZCBH dXkgQnJpZ2dzIDxyYnJpZ2dzQHJlZGhhdC5jb20gPGphdmFzY3JpcHQ6Oz4gCj4gPiA+ID4gPiA+ ID4gPGphdmFzY3JpcHQ6Oz4+IFNlbmlvciBTb2Z0d2FyZSBFbmdpbmVlciwgS2VybmVsIFNlY3Vy aXR5LCAKPiA+ID4gPiA+ID4gPiBBTUVSIEVORyBCYXNlIE9wZXJhdGluZyBTeXN0ZW1zLCBSZWQg SGF0IFJlbW90ZSwgT3R0YXdhLCAKPiA+ID4gPiA+ID4gPiBDYW5hZGEKPiA+ID4gPiA+ID4gPiBW b2ljZTogKzEuNjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgxKSAzMjYzNSwgQWx0OiAKPiA+ID4g PiA+ID4gPiArMS42MTMuNjkzLjA2ODR4MzU0NQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiA+IFBsZWFzZSBEb25hdGUgdG8gd3d3 Lndpa2lwZWRpYS5vcmcKPiA+ID4gPiA+Cj4gPiA+ID4gPiAtIFJHQgo+ID4gPiA+ID4KPiA+ID4g PiA+IC0tCj4gPiA+ID4gPiBSaWNoYXJkIEd1eSBCcmlnZ3MgPHJicmlnZ3NAcmVkaGF0LmNvbSA8 amF2YXNjcmlwdDo7Pj4gU2VuaW9yIAo+ID4gPiA+ID4gU29mdHdhcmUgRW5naW5lZXIsIEtlcm5l bCBTZWN1cml0eSwgQU1FUiBFTkcgQmFzZSBPcGVyYXRpbmcgCj4gPiA+ID4gPiBTeXN0ZW1zLCBS ZWQgSGF0IFJlbW90ZSwgT3R0YXdhLCBDYW5hZGEKPiA+ID4gPiA+IFZvaWNlOiArMS42NDcuNzc3 LjI2MzUsIEludGVybmFsOiAoODEpIDMyNjM1LCBBbHQ6IAo+ID4gPiA+ID4gKzEuNjEzLjY5My4w Njg0eDM1NDUKPiA+ID4gPiA+Cj4gPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gLS0KPiA+ID4gPiBQ bGVhc2UgRG9uYXRlIHRvIHd3dy53aWtpcGVkaWEub3JnCj4gPiA+IAo+ID4gPiAtIFJHQgo+ID4g PiAKPiA+ID4gLS0KPiA+ID4gUmljaGFyZCBHdXkgQnJpZ2dzIDxyYnJpZ2dzQHJlZGhhdC5jb20+ IFNlbmlvciBTb2Z0d2FyZSBFbmdpbmVlciwgCj4gPiA+IEtlcm5lbCBTZWN1cml0eSwgQU1FUiBF TkcgQmFzZSBPcGVyYXRpbmcgU3lzdGVtcywgUmVkIEhhdCBSZW1vdGUsIAo+ID4gPiBPdHRhd2Es IENhbmFkYQo+ID4gPiBWb2ljZTogKzEuNjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgxKSAzMjYz NSwgQWx0OiAKPiA+ID4gKzEuNjEzLjY5My4wNjg0eDM1NDUKPiA+IAo+ID4gLSBSR0IKPiA+IAo+ ID4gLS0KPiA+IFJpY2hhcmQgR3V5IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tPiBTZW5pb3Ig U29mdHdhcmUgRW5naW5lZXIsIAo+ID4gS2VybmVsIFNlY3VyaXR5LCBBTUVSIEVORyBCYXNlIE9w ZXJhdGluZyBTeXN0ZW1zLCBSZWQgSGF0IFJlbW90ZSwgCj4gPiBPdHRhd2EsIENhbmFkYQo+ID4g Vm9pY2U6ICsxLjY0Ny43NzcuMjYzNSwgSW50ZXJuYWw6ICg4MSkgMzI2MzUsIEFsdDogCj4gPiAr MS42MTMuNjkzLjA2ODR4MzU0NQo+IAo+ID4gI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gPiAjaW5jbHVk ZSA8c3RkbGliLmg+Cj4gPiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiA+ICNpbmNsdWRlIDxmY250 bC5oPgo+ID4gI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ID4gI2luY2x1ZGUgPGVycm5vLmg+Cj4gPiAK PiA+IHZvaWQgY3JlYXRlX2xvYWQoaW50IGl0ZXJzKTsKPiA+IHZvaWQgY2xlYW51cCgpOwo+ID4g Cj4gPiBpbnQgICBoaWdoX3JhdGUgPSAwOwo+ID4gaW50ICAgbnVtX2l0ZXJzID0gMTAwMDAwOwo+ ID4gaW50ICAgZmQxOwo+ID4gY2hhciAgZmlsZTFbNTBdOwo+ID4gY2hhciAgZmlsZTJbNTBdOwo+ ID4gY2hhciAgZGlyMVs1MF07Cj4gPiBjaGFyICBzeW1saW5rMVs1MF07Cj4gPiAKPiA+IC8qIFB1 cnBvc2U6IFRvIGNyZWF0ZSBzeXN0ZW0gbG9hZCBieSBpbnZva2luZyBzeXN0ZW0gY2FsbHMgdXNl ZCBieSB0ZW1wbGF0ZXMuCj4gPiAgKgo+ID4gICogTm90ZTogVGhlIHVubGluaygyKSBvZiBhIGZp bGUgY2FuIGJlIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24gKGkuZS4sIGV2ZW50IAo+ID4gICogICAg ICAgcmF0ZSBnb2VzIHdheSBkb3duKS4KPiA+ICAqLwo+ID4gCj4gPiBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikgewo+ID4gCj4gPiAgIGludCAgICAgICAgICAgICAgbnVtX2NoaWxkcmVuPTE7 Cj4gPiAgIGludCAgICAgICAgICAgICAgaXRlcnM7Cj4gPiAgIGludCAgICAgICAgICAgICAgaTsK PiA+ICAgY2hhciAgICAgICAgICAgICBjOwo+ID4gCj4gPiAgIHdoaWxlICgoYyA9IGdldG9wdChh cmdjLCBhcmd2LCAiaGk6IikpICE9IC0xKSB7Cj4gPiAgICAgc3dpdGNoIChjKSB7Cj4gPiAgICAg Y2FzZSAnaCc6Cj4gPiAgICAgICAvKgo+ID4gICAgICAgICogRGVzaXJlICJoaWdoIiBldmVudCBy YXRlCj4gPiAgICAgICAgKi8KPiA+ICAgICAgIGhpZ2hfcmF0ZSA9IDE7Cj4gPiAgICAgICBhcmdj LS07Cj4gPiAgICAgICBicmVhazsKPiA+ICAgICBjYXNlICdpJzoKPiA+ICAgICAgIC8qCj4gPiAg ICAgICAgKiBEZXNpcmUgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMKPiA+ICAgICAg ICAqLwo+ID4gICAgICAgbnVtX2l0ZXJzID0gYXRvaShvcHRhcmcpOwo+ID4gICAgICAgYXJnYy0t Owo+ID4gICAgICAgYnJlYWs7Cj4gPiAgICAgZGVmYXVsdDoKPiA+ICAgICAgIGZwcmludGYoc3Rk ZXJyLCJVbmtub3duIG9wdGlvbjogJWNcbiIsb3B0YXJnKTsKPiA+ICAgICAgIGV4aXQoMSk7Cj4g PiAgICAgfQo+ID4gICB9Cj4gPiAKPiA+IAo+ID4gICAvKmlmKGFyZ3Zbb3B0aW5kXSAhPSBOVUxM KSB7Cj4gPiAgICAgbnVtX2NoaWxkcmVuID0gYXRvaShhcmd2W29wdGluZF0pOwo+ID4gICB9IGVs c2Ugewo+ID4gICAgIG51bV9jaGlsZHJlbiA9IDA7Cj4gPiAgIH0KPiA+ICAgUmVnaXN0ZXIgY2xl YW51cCByb3V0aW5lICovCj4gPiAgIGZwcmludGYoc3RkZXJyLCJSZWdpc3RlcmluZyBjbGVhbnVw IHJvdXRpbmUuLi5cbiIpOwo+ID4gICBpZiAoYXRleGl0KGNsZWFudXApID09IC0xKSB7Cj4gPiAg ICAgZnByaW50ZihzdGRlcnIsIkVycm9yIGNhbGxpbmcgYXRleGl0KCksIGVycm5vPSVkKCVzKVxu IiwKPiA+IAkgICAgZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4g ICB9Cj4gPiAgICAgCj4gPiAKPiA+ICAgLyogZm9yayBjaGlsZCBwcm9jZXNzZXMsIGlmIGFueSBy ZXF1ZXN0ZWQgKi8KPiA+ICAgZm9yKGk9MTsgaSA8IG51bV9jaGlsZHJlbjsgaSsrKSB7Cj4gPiAg ICAgaWYoZm9yaygpID09IDApIHsKPiA+IAo+ID4gICAgICAgcHJpbnRmKCJjaGlsZCBwaWQ6ICVk XG4iLGdldHBpZCgpKTsKPiA+IAo+ID4gICAgICAgLyogU2V0dXAgZmlsZSBuYW1lcyBiYXNlZCBv biBjaGlsZCdzIHBpZCAqLwo+ID4gICAgICAgc3ByaW50ZihmaWxlMSwiLi9maWxlMV8lZCIsZ2V0 cGlkKCkpOwo+ID4gICAgICAgc3ByaW50ZihmaWxlMiwiLi9maWxlMl8lZCIsZ2V0cGlkKCkpOwo+ ID4gICAgICAgc3ByaW50ZihkaXIxLCIuL2RpcjFfJWQiLGdldHBpZCgpKTsKPiA+ICAgICAgIHNw cmludGYoc3ltbGluazEsIi4vZmlsZTFzeW1saW5rXyVkIixnZXRwaWQoKSk7Cj4gPiAKPiA+ICAg ICAgIC8qIGVhY2ggY2hpbGQgY3JlYXRlcyBsb2FkICovCQo+ID4gICAgICAgaXRlcnM9MDsKPiA+ ICAgICAgIGlmIChudW1faXRlcnMgPT0gLTEpIHsKPiA+IAl3aGlsZSgxKSB7Cj4gPiAJICBjcmVh dGVfbG9hZChpdGVycyk7Cj4gPiAJICBpdGVycysrOwo+ID4gCSAgaWYoIChpdGVycyAlIDEwMDAp ID09IDApIHsKPiA+IAkgICAgcHJpbnRmKCJwaWQgJWQgaXRlcmF0aW9uICVkXG4iLGdldHBpZCgp LGl0ZXJzKTsKPiA+IAkgIH0KPiA+IAl9Cj4gPiAgICAgICB9IGVsc2Ugewo+ID4gCXdoaWxlKGl0 ZXJzIDwgbnVtX2l0ZXJzKSB7Cj4gPiAJICBjcmVhdGVfbG9hZChpdGVycyk7Cj4gPiAJICBpdGVy cysrOwo+ID4gCSAgaWYoIChpdGVycyAlIDEwMDApID09IDApIHsKPiA+IAkgICAgcHJpbnRmKCJw aWQgJWQgaXRlcmF0aW9uICVkXG4iLGdldHBpZCgpLGl0ZXJzKTsKPiA+IAkgIH0KPiA+IAl9Cj4g PiAgICAgICB9Cj4gPiAgICAgfQo+ID4gICB9Cj4gPiAKPiA+ICAgLyogUGFyZW50IGNyZWF0ZXMg bG9hZCBhbHNvICovCj4gPiAgIHByaW50ZigicGFyZW50IHBpZDogJWRcbiIsZ2V0cGlkKCkpOwo+ ID4gCj4gPiAgIC8qIFNldHVwIGZpbGUgbmFtZXMgYmFzZWQgb24gcGFyZW50J3MgcGlkICovCj4g PiAgIHNwcmludGYoZmlsZTEsIi4vZmlsZTFfJWQiLGdldHBpZCgpKTsKPiA+ICAgc3ByaW50Zihm aWxlMiwiLi9maWxlMl8lZCIsZ2V0cGlkKCkpOwo+ID4gICBzcHJpbnRmKGRpcjEsIi4vZGlyMV8l ZCIsZ2V0cGlkKCkpOwo+ID4gICBzcHJpbnRmKHN5bWxpbmsxLCIuL2ZpbGUxc3ltbGlua18lZCIs Z2V0cGlkKCkpOwo+ID4gCj4gPiAgIGl0ZXJzPTA7Cj4gPiAgIGlmIChudW1faXRlcnMgPT0gLTEp IHsKPiA+ICAgICB3aGlsZSgxKSB7Cj4gPiAgICAgICBjcmVhdGVfbG9hZChpdGVycyk7Cj4gPiAg ICAgICBpdGVycysrOwo+ID4gICAgICAgaWYoIChpdGVycyAlIDEwMDApID09IDApIHsKPiA+IAlw cmludGYoInBpZCAlZCBpdGVyYXRpb24gJWRcbiIsZ2V0cGlkKCksaXRlcnMpOwo+ID4gICAgICAg fQo+ID4gICAgIH0KPiA+ICAgfSBlbHNlIHsKPiA+ICAgICB3aGlsZShpdGVycyA8IG51bV9pdGVy cykgewo+ID4gICAgICAgY3JlYXRlX2xvYWQoaXRlcnMpOwo+ID4gICAgICAgaXRlcnMrKzsKPiA+ ICAgICAgIGlmKCAoaXRlcnMgJSAxMDAwKSA9PSAwKSB7Cj4gPiAJcHJpbnRmKCJwaWQgJWQgaXRl cmF0aW9uICVkXG4iLGdldHBpZCgpLGl0ZXJzKTsKPiA+ICAgICAgIH0KPiA+ICAgICB9Cj4gPiAg IH0KPiA+IAo+ID4gfSAvKiBtYWluICovCj4gPiAKPiA+IAo+ID4gdm9pZCBjcmVhdGVfbG9hZChp bnQgaXRlcnMpIHsKPiA+IAo+ID4gICBpbnQgcGlkOwo+ID4gICBjaGFyICphcmdzWzJdOwo+ID4g ICBzdHJ1Y3Qgc3RhdCBzdGF0X2J1ZjsKPiA+IAo+ID4gICBmZDEgPSBjcmVhdChmaWxlMSwweDY0 NCk7Cj4gPiAgIGlmIChmZDEgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVk OiBjcmVhdCgpIHJldHVybmVkIGVycm9yIGZvciBmaWxlICVzLCBlcnJubz0lZCglcylcbiIsCj4g PiAJICAgIGdldHBpZCgpLGZpbGUxLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhp dCgxKTsKPiA+ICAgfQo+ID4gICBpZiAoY2xvc2UoZmQxKSA9PSAtMSkgewo+ID4gICAgIGZwcmlu dGYoc3RkZXJyLCJwaWQgJWQ6IGNsb3NlKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxu IiwKPiA+IAkgICAgZ2V0cGlkKCksZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0 KDEpOwo+ID4gICB9Cj4gPiAgIGZkMSA9IG9wZW4oZmlsZTEsIE9fUkRXUiwgMDc3Nyk7Cj4gPiAg IGlmIChmZDEgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBvcGVuKCkg cmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCksZXJybm8s c3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAKPiA+ICAgLyog Q2hvd24gdGhpcyBmaWxlIHRvIHJvb3QgaW5zdGVhZCBvZiB1c2VyIGlkcyBzbyB0aGF0IHdlIGRv bid0IGdlbmVyYXRlIGEgCj4gPiAgICAqIG5vbi1vd25lZCBhbGVydCB3aGVuIHRoZSBmaWxlIGlz IHRydW5jYXRlZCB3aGVuIGludm9raW5nIGNyZWF0KCkgYWdhaW4KPiA+ICAgICogYXMgcm9vdCBv biBhbiBleGlzdGluZyBmaWxlIG93bmVkIGJ5IGFub3RoZXIgdXNlci4KPiA+ICAgICovCj4gPiAg IGlmIChjaG93bihmaWxlMSwwLDApID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBp ZCAlZDogY2hvd24oJWQsJWQpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJ ICAgIGdldHBpZCgpLDAsMCxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAgIGV4aXQoMSk7 Cj4gPiAgIH0gICAgCj4gPiAgCj4gPiAgIGlmIChmY2hvd24oZmQxLDAsMCkgPT0gLTEpIHsKPiA+ ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBmY2hvd24oJWQsJWQpIHJldHVybmVkIGVycm9y LCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLDAsMCxlcnJubyxzdHJlcnJvcihl cnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0gICAKPiA+ICAgIAo+ID4gICBpZiAoY2ht b2QoZmlsZTEsIFNfSVJVU1J8U19JV1VTUnxTX0lSR1JQfFNfSVJPVEgpID09IC0xKSB7Cj4gPiAg ICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogY2htb2QoU19JUlVTUnxTX0lXVVNSfFNfSVJHUlB8 U19JUk9USCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlk KCksZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9ICAgIAo+ ID4gICBpZiAoZmNobW9kKGZkMSwgICBTX0lYVVNSfFNfSVhHUlB8U19JWE9USCkgPT0gLTEpIHsK PiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBmY2htb2QoU19JWFVTUnxTX0lYR1JQfFNf SVhPVEgpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgp LGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gCj4g PiAKPiA+ICAgaWYgKHdyaXRlKGZkMSwiU29tZSBzdHVmZiIsc3RybGVuKCJTb21lIHN0dWZmIikp ID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogd3JpdGUoKSByZXR1cm5l ZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJv cihlcnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0KPiA+ICAgaWYgKGZ0cnVuY2F0ZShm ZDEsNykgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBmdHJ1bmNhdGUo KSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICBnZXRwaWQoKSxlcnJu byxzdHJlcnJvcihlcnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0KPiA+ICAgaWYgKGNs b3NlKGZkMSkgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBjbG9zZSgp IHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLGVycm5v LHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gCj4gPiAgIGlm ICh0cnVuY2F0ZShmaWxlMSwzKSA9PSAtMSkgewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQg JWQ6IHRydW5jYXRlKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAg Z2V0cGlkKCksZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9 Cj4gPiAgIGlmIChyZW5hbWUoZmlsZTEsZmlsZTIpID09IC0xKSB7Cj4gPiAgICAgZnByaW50Zihz dGRlcnIsInBpZCAlZDogcmVuYW1lKCVzLCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMp XG4iLAo+ID4gCSAgICBnZXRwaWQoKSxmaWxlMSxmaWxlMixlcnJubyxzdHJlcnJvcihlcnJubykp Owo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0KPiA+ICAgaWYgKHJlbmFtZShmaWxlMixmaWxlMSkg PT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiByZW5hbWUoJXMsJXMpIHJl dHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLGZpbGUyLGZp bGUxLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4g ICBpZiAobGluayhmaWxlMSxmaWxlMikgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwi cGlkICVkOiBsaW5rKCVzLCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4g CSAgICBnZXRwaWQoKSxmaWxlMSxmaWxlMixlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAg IGV4aXQoMSk7Cj4gPiAgIH0KPiA+ICAgaWYgKHN5bWxpbmsoZmlsZTEsc3ltbGluazEpID09IC0x KSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogc3ltbGluayglcywlcykgcmV0dXJu ZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCksZmlsZTEsc3ltbGlu azEsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAg IGlmIChsY2hvd24oc3ltbGluazEsMCwwKSA9PSAtMSkgewo+ID4gICAgIGZwcmludGYoc3RkZXJy LCJwaWQgJWQ6IGxjaG93biglcywlZCwlZCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxu IiwKPiA+IAkgICAgZ2V0cGlkKCksc3ltbGluazEsMCwwLGVycm5vLHN0cmVycm9yKGVycm5vKSk7 Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gICAKPiA+ICAgaWYgKGxzdGF0KHN5bWxpbmsx LCZzdGF0X2J1ZikgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBsc3Rh dCglcykgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCks c3ltbGluazEsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9 Cj4gPiAgIGlmIChzdGF0KGZpbGUxLCZzdGF0X2J1ZikgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRm KHN0ZGVyciwicGlkICVkOiBzdGF0KCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4i LAo+ID4gCSAgICBnZXRwaWQoKSxmaWxlMSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAg IGV4aXQoMSk7Cj4gPiAgIH0KPiA+ICAgaWYgKHVubGluayhmaWxlMSkgPT0gLTEpIHsKPiA+ICAg ICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiB1bmxpbmsoJXMpIHJldHVybmVkIGVycm9yLCBlcnJu bz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLGZpbGUxLGVycm5vLHN0cmVycm9yKGVycm5v KSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gICBpZiAodW5saW5rKGZpbGUyKSA9PSAt MSkgewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHVubGluayglcykgcmV0dXJuZWQg ZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCksZmlsZTIsZXJybm8sc3Ry ZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAgIGlmICh1bmxpbmso c3ltbGluazEpID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogdW5saW5r KCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICBnZXRwaWQoKSxz eW1saW5rMSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0K PiA+ICAgaWYgKG1rZGlyKGRpcjEsU19JUlVTUnxTX0lXVVNSfFNfSVhVU1J8U19JUkdSUHxTX0lY R1JQKSA9PSAtMSkgewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IG1rZGlyKCkgcmV0 dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCksZXJybm8sc3Ry ZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAgIGlmIChybWRpcihk aXIxKSA9PSAtMSkgewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHJtZGlyKCkgcmV0 dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCksZXJybm8sc3Ry ZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAKPiA+ICAgLyogRm9y ayBldmVyeSAxMDAwMCBpdGVyYXRpb25zIHRvIG5vdCB1c2UgdXAgcHJvY2VzcyByZXNvdXJjZXMg dG9vIHF1aWNrbHkgKi8KPiA+ICAgaWYgKCAoaXRlcnMgJSAxMDAwMCkgPT0gMCkgewo+ID4gICAg IHBpZCA9IGZvcmsoKTsKPiA+ICAgICBpZihwaWQgPT0gMCkgewo+ID4gICAgICAgZnByaW50Zihz dGRlcnIsImNoaWxkIHBpZCAlZDogZm9yayFcbiIsZ2V0cGlkKCkpOwo+ID4gICAgICAgLy8gY2hp bGQKPiA+ICAgICAgIGFyZ3NbMF0gPSAiL2Jpbi9scyI7Cj4gPiAgICAgICBhcmdzWzFdID0gTlVM TDsKPiA+ICAgICAgIGNsb3NlKDEpOwo+ID4gICAgICAgY2xvc2UoMik7ICAgIAo+ID4gICAgICAg ZXhlY3ZlKGFyZ3NbMF0sIGFyZ3MsIE5VTEwpOwo+ID4gICAgICAgZnByaW50ZihzdGRlcnIsInBp ZCAlZDogZXhlY3ZlKCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAg ICAgIGdldHBpZCgpLGFyZ3NbMF0sZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICAgIF9l eGl0KDEpOwo+ID4gICAgIH0gZWxzZSBpZiAocGlkIDwgMCkgeyAKPiA+ICAgICAgIGZwcmludGYo c3RkZXJyLCJwaWQgJWQ6IGZvcmsoKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ ID4gCSAgICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgICBleGl0 KDEpOwo+ID4gICAgIH0gZWxzZSB7Cj4gPiAgICAgICBmcHJpbnRmKHN0ZGVyciwicGFyZW50IHBp ZCAlZCwgY2hpbGQgcGlkOiAlZDogZm9yayFcbiIsZ2V0cGlkKCkscGlkKTsKPiA+ICAgICB9Cj4g PiAKPiA+ICAgICBwaWQgPSB2Zm9yaygpOwo+ID4gICAgIGlmKHBpZCA9PSAwKSB7Cj4gPiAgICAg ICBhcmdzWzBdID0gIi9iaW4vcHdkIjsKPiA+ICAgICAgIGFyZ3NbMV0gPSBOVUxMOwo+ID4gICAg ICAgY2xvc2UoMSk7Cj4gPiAgICAgICBjbG9zZSgyKTsgICAgCj4gPiAgICAgICBleGVjdihhcmdz WzBdLCBhcmdzKTsKPiA+ICAgICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IGV4ZWN2ZSglcykg cmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgICBnZXRwaWQoKSxhcmdz WzBdLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgICBfZXhpdCgxKTsKPiA+ICAgICB9 IGVsc2UgaWYgKHBpZCA8IDApIHsgCj4gPiAgICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiB2 Zm9yaygpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgICAgZ2V0cGlk KCksZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICAgIGV4aXQoMSk7Cj4gPiAgICAgfQo+ ID4gICB9Cj4gPiAKPiA+ICAgLyogTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgY2xlYW5lZCB1cCBh bmQgZGVsZXRlZCBiZWZvcmUgcmV0dXJuaW5nICovCj4gPiAgIGNsZWFudXAoKTsKPiA+IAo+ID4g fSAvKiBjcmVhdGVfbG9hZCgpICovCj4gPiAKPiA+IHZvaWQgY2xlYW51cCgpIHsKPiA+ICAgY2xv c2UoZmQxKTsKPiA+ICAgdW5saW5rKGZpbGUxKTsKPiA+ICAgdW5saW5rKGZpbGUyKTsKPiA+ICAg dW5saW5rKHN5bWxpbmsxKTsKPiA+ICAgdW5saW5rKGRpcjEpOwo+ID4gICByZXR1cm47Cj4gPiB9 Cj4gCj4gPiAtLQo+ID4gTGludXgtYXVkaXQgbWFpbGluZyBsaXN0Cj4gPiBMaW51eC1hdWRpdEBy ZWRoYXQuY29tCj4gPiBodHRwczovL3d3dy5yZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXVkaXQKPiAKPiAKPiAtIFJHQgo+IAo+IC0tCj4gUmljaGFyZCBHdXkgQnJpZ2dzIDxyYnJp Z2dzQHJlZGhhdC5jb20+IFNlbmlvciBTb2Z0d2FyZSBFbmdpbmVlciwgCj4gS2VybmVsIFNlY3Vy aXR5LCBBTUVSIEVORyBCYXNlIE9wZXJhdGluZyBTeXN0ZW1zLCBSZWQgSGF0IFJlbW90ZSwgCj4g T3R0YXdhLCBDYW5hZGEKPiBWb2ljZTogKzEuNjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgxKSAz MjYzNSwgQWx0OiAKPiArMS42MTMuNjkzLjA2ODR4MzU0NQo+IAo+IC0tCj4gTGludXgtYXVkaXQg bWFpbGluZyBsaXN0Cj4gTGludXgtYXVkaXRAcmVkaGF0LmNvbQo+IGh0dHBzOi8vd3d3LnJlZGhh dC5jb20vbWFpbG1hbi9saXN0aW5mby9saW51eC1hdWRpdAoKLSBSR0IKCi0tClJpY2hhcmQgR3V5 IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tPgpTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIsIEtl cm5lbCBTZWN1cml0eSwgQU1FUiBFTkcgQmFzZSBPcGVyYXRpbmcgU3lzdGVtcywgUmVkIEhhdCBS ZW1vdGUsIE90dGF3YSwgQ2FuYWRhClZvaWNlOiArMS42NDcuNzc3LjI2MzUsIEludGVybmFsOiAo ODEpIDMyNjM1LCBBbHQ6ICsxLjYxMy42OTMuMDY4NHgzNTQ1CgotLQpMaW51eC1hdWRpdCBtYWls aW5nIGxpc3QKTGludXgtYXVkaXRAcmVkaGF0LmNvbQpodHRwczovL3d3dy5yZWRoYXQuY29tL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXVkaXQ=