From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhiyuan Shao" Subject: Re: [RFC] Scheduler work, part 1: High-level goals and interface. Date: Fri, 10 Apr 2009 10:28:22 +0800 Message-ID: <200904101028203435894@gmail.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====001_Dragon641631112326_=====" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: George Dunlap , "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --=====001_Dragon641631112326_===== Content-Type: multipart/alternative; boundary="=====003_Dragon641631112326_=====" --=====003_Dragon641631112326_===== Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgYWxsLA0KDQpBY3R1YWxseSBJIHRoaW5rIEkvTyByZXNwb25zaXZlbmVzcyBpcyBpbXBvcnRh bnQgdG8gY29udHJvbCBieSB0aGUgc2NoZWR1bGluZyBhbGdvcml0aG0uIEFuZCB0aGlzIGlzIGVz cGVjaWFsbHkgdHJ1ZSBmb3IgdnJpdHVhbGl6ZWQgZGVza3RvcC9jbGllbnQgZW52aXJvbm1lbnQs IHNpbmNlIGluIHN1Y2ggZW52aXJvbm1lbnRzLCB0aGVyZSBhcmUgc28gbWFueSBJL08gZXZlbnRz IHRvIGhhbmRsZSwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gdGhlIHNlcnZlciBjb25zb2xpZGF0 aW9uIGNhc2UsIHdoZXJlIG1hbnkgb2YgdGhlIHRhc2tzIGFyZSBDUFUtaW50ZW5zaXZlLg0KSSB3 b3VsZCBsaWtlIHRvIHNob3cgdGhpcyBwb2ludCBieSBhIHNpbXBsZSBzY2hlZHVsaW5nIGFsZ29y aXRobSwgd2hpY2ggaXMgYXR0YWNoZWQgd2l0aCB0aGlzIG1haWwsIGkgd3JvdHRlbiBpbiB0aGUg bGFzdCB3aW50ZXIgKEphbi4gMjAwOSkuIFRoYXQgdGltZSwgSSBhbSBpbiBJbnRlbCBPVEMgZm9y IGEgdmlzaXRhdGlvbiwgYW5kIHRoYW5rIEludGVsIGd1eXMgKERpc2hlbmcsIEtldmluIFRpYW4g YW5kIGV0Yy4pIGZvciB0aGVpciBoZWxwLg0KVGhlIHNjaGVkdWxlciBpcyBuYW1lZCBhcyBTRFAg KHlvdSBoYXZlIHRvIHVzZSAic2NoZWQ9c2RwIiBwYXJhbWV0ZXIgaW4gWGVuIGtlcm5lbCBsaW5l IHdoZW4gYm9vdCksIHdoaWNoIGkgbWVhbiB0byB1c2UgaWRlYXMgb2YgZHluYW1pYyBwcmlvcml0 eSB0byBtYWtlIHRoZSB2aXJ0dWFsaXplZCBjbGllbnRzIG1lYXQgdGhlaXIgbmVlZHMgb2YgdXNh Z2UuIEhvd2V2ZXIsIHRoaXMgc2NoZWR1bGVyIGlzIGJhc2ljYWxseSBhIHNpbXBsZSBwcm90b3R5 cGUgZm9yIGlkZWEgcHJvdmluZyB0aWxsIG5vdywgSSBoYWQgbm90IGltcGxlbWVudCB0aGUgZHlu YW1pYyBwcmlvcml0eSBtZWNoYW5pc21zIGluIHlldC4gVGhlIHNvbHV0aW9uIHVzZWQgaW4gdGhp cyBzaW1wbGUgc2NoZWR1bGVyIGlzIGxhcmdlbHkgYWQtaG9jLCBhbmQgaSBob3BlIGl0IGNhbiBj b250cmlidXRlIHNvbWV0aGluZyB0byB0aGUgZnV0dXJlIGRldmVsb3BtZW50IG9mIG5leHQgZ2Vu ZXJhdGlvbiBYZW4gc2NoZWR1bGVyLiBCVFcsIEkgYm9ycm93ZWQgbGFyZ2UgcG9ydGlvbiBvZiBj b2RlIGZyb20gQ3JlZGl0IHNjaGVkdWxlci4NCg0KVGhpcyBwYXRjaCBzaG91bGQgd29yayBpbiBW VC1kIHBsYXRmb3JtIHdlbGwgKGl0IGRvZXMgbm90IGRvaW5nIHdlbGwgaW4gdGhlIGVtdWxhdGVk IGRldmljZSBlbnZpcm9ubWVudCwgc2luY2UgZGV2aWNlIGVtdWxhdGlvbiwgZXNwZWNpYWxseSB0 aGUgdmlkZW8gcmVzdWx0cyBpbiB0b28gaGlnaCBvdmVyaGVhZCB0byBoYW5kbGUgYnkgdGhlIHNj aGVkdWxlcikuIFdlICh0aGFuayBhZ2FpbiBJbnRlbCBPVEMgZm9yIHRoZSBWVC1kIHBsYXRmb3Jt KSB0ZXN0ZWQgdGhlIHNjaGVkdWxlciBpbiBhIDMuMEdoeiAyLWNvcmUgc3lzdGVtLCBpbnZva2Vk IDIgSFZNIGd1ZXN0IGRvbWFpbnMgKG9uZSBpcyBwcmltYXJ5IGRvbWFpbiwgYW5kIGFub3RoZXIg aXMgYXV4aWxpYXJ5LCBib3RoIGhhdmUgdHdvIFZDUFVzKSwgcGlubmVkIGVhY2ggdmNwdSBvZiBl YWNoIGRvbWFpbiB0byBkaWZmZXJlbnQgUENQVXMgKFZDUFVzIG9mIGRvbWFpbjAgaXMgcGlubmVk IGFzIHdlbGwpLCBzaW5jZSB0aGUgaSBzdGlsbCBoYWQgbm90IGltcGxlbWVudCBhIHByb3BlciBW Q1BVIG1pZ3JhdGlvbiBtZWNoYW5pc20gaW4gU0RQIChzb3JyeSBmb3IgdGhhdCwgSSBkbyBub3Qg dGhpbmsgdGhlIGFnZ3Jlc2l2ZSBtaWdyYXRpb24gbWVjaGFuaXNtIG9mIENyZWRpdCBpcyBwcm9w ZXIgZm9yIHZpcnR1YWxpemVkIGNsaWVudHMsIGFuZCB3b3JraW5nIG9uIHRoaXMgbm93LCBob3Bl IGNhbiBmaW5kIGEgcHJvcGVyIG9uZSBmb3IgWGVuIGluIG5lYXIgZnV0dXJlKS4gVGhlIHNvdW5k IGFuZCB2aWRlbyBjYXJkIGFyZSBkaXJlY3RseSBhc3NpZ25lZCB0byB0aGUgcHJpbWFyeSBkb21h aW4sIHdoaWxlIHRoZSBhdXhpbGlhcnkgZG9tYWluIHVzZXMgZW11bGF0ZWQgb25lcy4NCg0KU2V0 IHRoZSAicHJpb3JpdHkiIChzaG91bGQgYmUgbmFtZWQgYXMgIkkvTyByZXNwb25zaXZlbmVzcyIs IEkgdGhpbmsgaSBoYWQgbWFrZSBhIG1pc3Rha2Ugb24gdGhpcywgc2luY2UgdGhlIGluaXRpYWwg b2JqZWN0aXZlbmVzcyBpcyB0byB1c2UgZHluYW1pYyBwcmlvcml0eSBpZGVhcykgdmFsdWUgb2Yg ZG9tYWluMCB0byA5MSwgYW5kIHNldCB0aGF0IG9mIHByaW1hcnkgZG9tYWluIHRvIDkwLiByZWdh cmRpbmcgdGhlIGF1eGlsaWFyeSBkb21haW4sIHlvdSBjYW4gbGVmdCBpdCBhcyBkZWZhdWx0ICg4 MCkuIFBsZWFzZSB1c2VkIHRoZSBhdHRhY2hlZCBkb21haW4wIGNvbW1hbmQgbGluZSB0b29sIChp LmUuLCBzY2hlZF9zZHBfc2V0IFtkb21haW5faWRdIFtuZXdfcHJpb3JpdHldKSB0byBzZXQgdGhl IG5ldyBwcmlvcml0eSwgSSBhbSBub3QgZ29vZCBhdCBQeXRob24sIHNvcnJ5IGZvciB0aGF0ISAN CldlIGhhZCB0ZXN0ZWQgYSBzY2VuYXJpbyB0aGF0IHRoZSBwcmltYXJ5IGRvbWFpbiBwbGF5cyBh IERpdlggdmlkZW8sIGFuZCBhdCB0aGUgc2FtZSB0aW1lLCBjb3B5IHZlcnkgYmlnIGZpbGVzIGlu IHRoZSBhdXhpbGlhcnkgZG9tYWluLiBUaGUgdmlkZW8gY2FuIGJlIHBsYXllZCB3ZWxsISBUaGUg ZWZmZWN0aXZlbmVzcyB3ZSBleHBlcmllbmNlZCBiZWF0cyBCQ3JlZGl0IGluIHRoaXMgdXNhZ2Ug Y2FzZSwgbm8gbWF0dGVyIGhvdyB3ZSBhZGp1c3QgdGhlIHBhcmFtZXRlcnMgb2YgQkNyZWRpdC4N Cg0KU29tZSBleHBsYW5hdGlvbnMgb2YgU0RQOg0KVGhlICJwcmlvcml0eSIgcGFyYW1ldGVyIGlz IGFjdHVhbGx5IHVzZWQgdG8gY29udHJvbCBJL08gcmVzcG9uc2l2ZW5lc3MuIElmIGEgVkNQVSBp cyB3b2tlbiBieSBhbiBJL08gZXZlbnQgZHVyaW5nIHRoZSBydW50aW1lLCBhbmQgYXQgdGhlIHNh bWUgdGltZSwgYW5kIGl0cyAicHJpb3JpdHkiIHZhbHVlIGhhcHBlbmVkIHRvIGJlIGhpZ2hlciB0 aGFuIHRoZSBjdXJyZW50IFZDUFUsIHRoZSBjdXJyZW50IFZDUFUgd2lsbCBiZSBwcmVlbXB0ZWQs IGFuZCB0aGUgd29rZW4gVkNQVSBpcyBzY2hlZHVsZWQuIEEgImJvbnVzIiB3aWxsIGJlIGdpdmVu IHRvIHRoZSB3b2tlbiBWQ1BVIHRvIGxlYXZlICJlbm91Z2ggcG9zc2libGUiIHRpbWUgZm9yIGl0 IHRvIGNvbXBsZXRlIGl0cyBJL08gaGFuZGxpbmcuIFRoZSBib251cyB2YWx1ZSBpcyBjb21wdXRl ZCBieSBzdWJzdHJhY3RpbmcgdGhlICJwcmlvcml0eSIgcGFyYW1ldGVyIG9mIHRoZSB0d28gKHRo ZSB3b2tlbiBhbmQgdGhlIGN1cnJlbnQgKSBWQ1BVcy4gVGhpcyBzdHJhdGVneSBhY3R1YWxseSBp bmhpYml0cyB0aGUgcHJlZW1wdGlvbiBvZiBhIGN1cnJlbnRseSBydW5uaW5nIFZDUFUgd2l0aCBo aWdoICJwcmlvcml0eSIgYnkgYW5vdGhlciBWQ1BVIHdpdGggbG93ZXIgb25lLCB3aGlsZSBwZXJt aXRzIHByZWVtcHRpb24gdmljZSB2ZXNhLCBhbmQgaSB0aGluayB0aGlzIG1ldGhvZCBmaXRzIHdl bGwgZm9yIHRoZSBhc3ltbWV0cmljIGRvbWFpbiByb2xlIHNjZW5hcmlvIG9mIHZpcnR1YWxpemVk IGNsaWVudHMgYW5kIGRlc2t0b3BzLiANClJlZ2FyZGluZyB0aGUgY29tcHV0YXRpb24gcmVzb3Vy Y2UgYWxsb2NhdGlvbiwgdGhlIHNpbXBsZSBzY2hlZHVsZXIgYWN0dWFsbHkgc2hhcmVzIHRoZSBD UFUgcmVzb3VyY2UgYnkgYSByb3VuZC1yb2JpbiBmYXNoaW9uLiBJL08gZXZlbnQgaGFwcGVuZWQg YXQgYSBoaWdoICJwcmlvcml0eSIgVkNQVSBjYW4gZ2l2ZSBpdCBhIGxpdHRsZSAiYm9udXMiLCBh ZnRlciB1c2luZyB1cCB0aGF0LCB0aGUgVkNQVSBmYWxsIGJhY2sgdG8gdGhlIHJvdW5kLXJvYmlu IHNjaGVkdWxpbmcgcmluZy4gQnkgdGhpcyB3YXksIGl0IG1haW50YWlucyBzb21lIGtpbmQgb2Yg ZmFpcm5lc3MgZXZlbiBpbiB2aXJ0dWFsaXplZCBjbGllbnQgZW52aXJvbm1lbnQuIGUuZy4sIGlu IG91ciB0ZXN0aW5nIHNjZW5hcmlvLCB3ZSBmb3VuZCB0aGUgZmlsZS1jb3B5aW5nIGluIGF1eGls aWFyeSBkb21haW4gcHJvY2VlZHMgd2VsbCAoYWx0aG91Z2ggYSBsaXR0bGUgc2xvdykgd2hlbiB0 aGUgcHJpbWFyeSBkb21haW4gcGxheXMgYSBEaXZYIHZpZGVvLCB3aGljaCByZXN1bHRzIGluIGhp Z2ggdm9sdW1uIG9mIEkvTyBldmVudHMuIA0KDQpCeSB0aGlzIGV4cGVyaWVuY2UsIGkgdGhpbmsg SS9PIHJlc3BvbnNpdmVuZXNzIGlzIGFuIGltcG9ydGFudCBwYXJhbWV0ZXIgdG8gYmUgYWRkZWQg aW4gdGhlIGRldmVsb3BtZW50IG9mIG5ldyBzY2hlZHVsZXIsIHNpbmNlIHBsYXRmb3JtcyBoYXZl IHRoZWlyIGluZGVwZW5kZW50IHBlcmZvcm1hbmNlIG1ldHJpY3MsIGFuZCB1c2VyIGNhbiBhZGp1 c3QgdGhlIEkvTyByZXNwb25zaXZlbmVzcyBwYXJhbWV0ZXIgb2YgdGhlIGRvbWFpbnMgdG8gbWFr ZSB0aGVtIHdvcmsgd2VsbC4gDQoNCk1vcmVvdmVyLCBJIHRoaW5rIHNvbWUgY2hhcmFjdGVycyBv ZiBDcmVkaXQgc2NoZWR1bGVyIGRvZXMgbm90IGZpdCB3ZWxsIGZvciB0aGUgdmlydHVhbGl6ZWQg Y2xpZW50cy9kZXNrdG9wcyAoZm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbiBpZiBwb3NzaWJsZSkuIElm IHVzZWQgaW4gdGhlIHZpcnR1YWxpemVkIGNsaWVudHMvZGVza3RvcCBzY2VuYXRpbywgdGhlIHdv cnN0IHNpZGUgb2YgQ3JlZGl0IGlzIGl0cyBsaXR0bGUgc3RhdGUgc3BhY2UgdG8gbWFyayB0aGUg VkNQVXMgKGkuZS4sIEJPT1QsIFVOREVSIGFuZCBPVkVSKS4gVGhpcyBtYWtlIGl0IHZlcnkgaW5j b252ZW5pZW50IGF0IGxlYXN0IHRvIGRpZmZlcmVudGlhdGUgdGhlIFZDUFVzIG9mIGRpZmZlcmVu dCBkb21haW5zLCBhbmQgd2l0aCBkaWZmZXJlbnQga2luZHMgb2YgdGFza3MsIGFsdGhvdWdoIHRo ZSBsaXR0bGUgc3RhdGUgc3BhY2UgZG8gd29yayB3ZWxsIGluIGNvbnNvbGlkYXRlZCBzZXJ2ZXJz LiAgVGhlIHNlY29uZCBpbmNvbmV2aWVudCBzaWRlIG9mIENyZWRpdCBzY2hlZHVsZXIgaXMgdGhl IG1ldGhvZCB0aGF0IHRoZSBzY2hlZHVsZXIgImJvb3N0cyIgdGhlIFZDUFVzLiBJbiB0aGUgb3Jp Z2luYWwgdmVyc2lvbiBDcmVkaXQsIGEgd29rZW4gVkNQVSBoYXMgdG8gaGF2ZSBlbm91Z2ggY3Jl ZGl0cyAoVU5ERVIgc3RhdGUpIHRvIG1ha2UgaXRzZWxmIHByb21vdGVkIHRvIEJPT1NUIHN0YXRl LiBIb3dldmVyLCB0aGUgZG9tYWluIChWQ1BVKSBtYXkgdXNlZCB1cCBpdHMgY3JlZGl0LCBhbmQg YXQgdGhlIHNhbWUgdGltZSBpdCBkbyBoYXZlIGNyaXRpY2FsIHRhc2suIEF0IHRoaXMgbW9tZW50 LCBmYWlybmVzcyBpcyBvZiB0aGUgc2Vjb25kYXJ5IGNvbnNpZGVyYXRpb24sIGFuZCBzaG91bGQg YmUgbWFpbnRhaW5lZCBpbiBsYXRlciBwaGFzZXMuIEF0IHRoaXMgcG9pbnQsIEJDcmVkaXQgYnJp bmdzIHNvbWUgY2hhbmdlcywgYWx0aG91Z2ggQmNyZWRpdCBtYXkgZ2l2ZSBmYWlybmVzcyBsaXR0 bGUgY29uc2lkZXJhdGlvbiwgdW5mb3J0dW5hdGVseS4gDQoNCg0KVGhhbmtzLA0KDQoNCjIwMDkt MDQtMTAgDQoNCg0KDQpaaGl5dWFuIFNoYW8gDQoNCg0KDQq3orz+yMujuiBHZW9yZ2UgRHVubGFw IA0Kt6LLzcqxvOSjuiAyMDA5LTA0LTA5ICAyMzo1OToxOCANCsrVvP7Iy6O6IHhlbi1kZXZlbEBs aXN0cy54ZW5zb3VyY2UuY29tIA0Ks63LzaO6IA0K1vfM4qO6IFtYZW4tZGV2ZWxdIFtSRkNdIFNj aGVkdWxlciB3b3JrLHBhcnQgMTogSGlnaC1sZXZlbCBnb2FscyBhbmQgaW50ZXJmYWNlLiANCiAN CkluIHRoZSBpbnRlcmVzdCBvZiBvcGVubmVzcyAoYXMgd2VsbCBhcyBpbiB0aGUgaW50ZXJlc3Qg b2YgdGFraW5nDQphZHZhbnRhZ2Ugb2YgYWxsIHRoZSBzbWFydCBwZW9wbGUgb3V0IHRoZXJlKSwg SSdtIHBvc3RpbmcgYSB2ZXJ5IGVhcmx5DQpkZXNpZ24gcHJvdG90eXBlIG9mIHRoZSBjcmVkaXQy IHNjaGVkdWxlci4gIFdlJ3ZlIGhhZCBhIGxvdCBvZg0KY29udHJpYnV0b3JzIHRvIHRoZSBzY2hl ZHVsZXIgcmVjZW50bHksIHNvIEkgaG9wZSB0aGF0IHRob3NlIHdpdGgNCmludGVyZXN0IGFuZCBr bm93bGVkZ2Ugd2lsbCB0YWtlIGEgbG9vayBhbmQgbGV0IG1lIGtub3cgd2hhdCB0aGV5DQp0aGlu ayBhdCBhIGhpZ2ggbGV2ZWwuDQoNClRoaXMgZmlyc3QgZS1tYWlsIHdpbGwgZGlzY3VzcyB0aGUg b3ZlcmFsbCBnb2FsczogdGhlIHRhcmdldCAic3dlZXQNCnNwb3QiIHVzZSBjYXNlcyB0byBjb25z aWRlciwgbWVhc3VyYWJsZSBnb2FscyBmb3IgdGhlIHNjaGVkdWxlciwgYW5kDQp0aGUgdGFyZ2V0 IGludGVyZmFjZSAvIGZlYXR1cmVzLiAgVGhpcyBpcyBmb3IgZ2VuZXJhbCBjb21tZW50Lg0KDQpU aGUgc3Vic2VxdWVudCBlLW1haWwocz8pIHdpbGwgaW5jbHVkZSBzb21lIHNwZWNpZmljIGFsZ29y aXRobXMgYW5kDQpjaGFuZ2VzIGN1cnJlbnRseSBpbiBjb25zaWRlcmF0aW9uLCBhcyB3ZWxsIGFz IHNvbWUgYmxlZWRpbmctZWRnZQ0KcGF0Y2hlcy4gIFRoaXMgd2lsbCBiZSBmb3IgcGVvcGxlIHdo byBoYXZlIGEgc3BlY2lmaWMgaW50ZXJlc3QgaW4gdGhlDQpkZXRhaWxzIG9mIHRoZSBzY2hlZHVs aW5nIGFsZ29yaXRobXMuDQoNClBsZWFzZSBmZWVsIGZyZWUgdG8gY29tbWVudCAvIGRpc2N1c3Mg LyBzdWdnZXN0IGltcHJvdmVtZW50cy4NCg0KMS4gRGVzaWduIHRhcmdldHMNCg0KV2UgaGF2ZSB0 aHJlZSBnZW5lcmFsIHVzZSBjYXNlcyBpbiBtaW5kOiBTZXJ2ZXIgY29uc29saWRhdGlvbiwgdmly dHVhbA0KZGVza3RvcCBwcm92aWRlcnMsIGFuZCBjbGllbnRzIChlLmcuIFhlbkNsaWVudCkuDQoN CkZvciBzZXJ2ZXJzLCBvdXIgdGFyZ2V0ICJzd2VldCBzcG90IiBmb3Igd2hpY2ggd2Ugd2lsbCBv cHRpbWl6ZSBpcyBhDQpzeXN0ZW0gd2l0aCAyIHNvY2tldHMsIDQgY29yZXMgZWFjaCBzb2NrZXQs IGFuZCBTTVQgKDE2IGxvZ2ljYWwgY3B1cykuDQpJZGVhbCBwZXJmb3JtYW5jZSBpcyBleHBlY3Rl ZCB0byBiZSByZWFjaGVkIGF0IGFib3V0IDgwJSB0b3RhbCBzeXN0ZW0NCmNwdSB1dGlsaXphdGlv bjsgYnV0IHRoZSBzeXN0ZW0gc2hvdWxkIGZ1bmN0aW9uIHJlYXNvbmFibHkgd2VsbCB1cCB0bw0K YSB1dGlsaXphdGlvbiBvZiA4MDAlIChlLmcuLCBhIGxvYWQgb2YgOCkuDQoNCkZvciB2aXJ0dWFs IGRlc2t0b3Agc3lzdGVtcywgd2Ugd2lsbCBoYXZlIGEgbGFyZ2UgbnVtYmVyIG9mDQppbnRlcmFj dGl2ZSBWTXMgd2l0aCBhIGxvdCBvZiBzaGFyZWQgbWVtb3J5LiAgTW9zdCBvZiB0aGVzZSB3aWxs IGJlDQpzaW5nbGUtdmNwdSwgb3IgYXQgbW9zdCAyIHZjcHVzLg0KDQpGb3IgY2xpZW50IHN5c3Rl bXMsIHdlIGV4cGVjdCB0byBoYXZlIDMtNCBWTXMgKGluY2x1ZGluZyBkb20wKS4NClN5c3RlbXMg d2lsbCBwcm9iYWJseSBhaHZlIGEgc2luZ2xlIHNvY2tldCB3aXRoIDIgY29yZXMgYW5kIFNNVCAo NA0KbG9naWNhbCBjcHVzKS4gIE1hbnkgVk1zIHdpbGwgYmUgdXNpbmcgUENJIHBhc3MtdGhyb3Vn aCB0byBhY2Nlc3MNCm5ldHdvcmssIHZpZGVvLCBhbmQgYXVkaW8gY2FyZHMuICBUaGV5J2xsIGFs c28gYmUgcnVubmluZyB2aWRlbyBhbmQNCmF1ZGlvIHdvcmtsb2Fkcywgd2hpY2ggYXJlIGV4dHJl bWVseSBsYXRlbmN5LXNlbnNpdGl2ZS4NCg0KMi4gRGVzaWduIGdvYWxzDQoNCkZvciBlYWNoIG9m IHRoZSB0YXJnZXQgc3lzdGVtcyBhbmQgd29ya2xvYWRzIGFib3ZlLCB3ZSBoYXZlIHNvbWUNCmhp Z2gtbGV2ZWwgZ29hbHMgZm9yIHRoZSBzY2hlZHVsZXI6DQoNCiogRmFpcm5lc3MuICBJbiB0aGlz IGNvbnRleHQsIHdlIGRlZmluZSAiZmFpcm5lc3MiIGFzIHRoZSBhYmlsaXR5IHRvDQpnZXQgY3B1 IHRpbWUgcHJvcG9ydGlvbmFsIHRvIHdlaWdodC4NCg0KV2Ugd2FudCB0byB0cnkgdG8gbWFrZSB0 aGlzIHRydWUgZXZlbiBmb3IgbGF0ZW5jeS1zZW5zaXRpdmUgd29ya2xvYWRzDQpzdWNoIGFzIG5l dHdvcmtpbmcsIHdoZXJlIGxvbmcgc2NoZWR1bGluZyBsYXRlbmN5IGNhbiByZWR1Y2UgdGhlDQp0 aHJvdWdocHV0LCBhbmQgdGh1cyB0aGUgdG90YWwgYW1vdW50IG9mIHRpbWUgdGhlIFZNIGNhbiBl ZmZlY3RpdmVseQ0KdXNlLg0KDQoqIEdvb2Qgc2NoZWR1bGluZyBmb3IgbGF0ZW5jeS1zZW5zaXRp dmUgd29ya2xvYWRzLg0KDQpUbyB0aGUgZGVncmVlIHdlIGFyZSBhYmxlLCB3ZSB3YW50IHRoaXMg dG8gYmUgdHJ1ZSBldmVuIHRob3NlIHdoaWNoDQp1c2UgYSBzaWduaWZpY2FudCBhbW91bnQgb2Yg Y3B1IHBvd2VyOiBUaGF0IGlzLCBteSBhdWRpbyBzaG91bGRuJ3QNCmJyZWFrIHVwIGlmIEkgc3Rh cnQgYSBjcHUgaG9nIHByb2Nlc3MgaW4gdGhlIFZNIHBsYXlpbmcgdGhlIGF1ZGlvLg0KDQoqIEhU LWF3YXJlLg0KDQpSdW5uaW5nIG9uIGEgbG9naWNhbCBwcm9jZXNzb3Igd2l0aCBhbiBpZGxlIHBl ZXIgdGhyZWFkIGlzIG5vdCB0aGUNCnNhbWUgYXMgcnVubmluZyBvbiBhIGxvZ2ljYWwgcHJvY2Vz c29yIHdpdGggYSBidXN5IHBlZXIgdGhyZWFkLiAgVGhlDQpzY2hlZHVsZXIgbmVlZHMgdG8gdGFr ZSB0aGlzIGludG8gYWNjb3VudCB3aGVuIGRlY2lkaW5nICJmYWlybmVzcyIuDQoNCiogUG93ZXIt YXdhcmUuDQoNClVzaW5nIGFzIG1hbnkgc29ja2V0cyAvIGNvcmVzIGFzIHBvc3NpYmxlIGNhbiBp bmNyZWFzZSB0aGUgdG90YWwgY2FjaGUNCnNpemUgYXZhbGFibGUgdG8gVk1zLCBhbmQgdGh1cyAo aW4gdGhlIGFic2VuY2Ugb2YgaW50ZXItVk0gc2hhcmluZykNCmluY3JlYXNlIHRvdGFsIGNvbXB1 dGluZyBwb3dlcjsgYnV0IGJ5IGtlZXBpbmcgbXVsdGlwbGUgc29ja2V0cyBhbmQNCmNvcmVzIHBv d2VyZWQgdXAsIGFsc28gaW5jcmVhc2VzIHRoZSBlbGVjdHJpY2FsIHBvd2VyIHVzZWQgYnkgdGhl DQpzeXN0ZW0uICBXZSB3YW50IGEgY29uZmlndXJhYmxlIHdheSB0byBiYWxhbmNlIGJldHdlZW4g bWF4aW1pemluZw0KcHJvY2Vzc2luZyBwb3dlciB2cyBtaW5pbWl6aW5nIGVsZWN0cmljYWwgcG93 ZXIuDQoNCjMuIFRhcmdldCBpbnRlcmZhY2U6DQoNClRoZSB0YXJnZXQgaW50ZXJmYWNlIHdpbGwg YmUgc2ltaWxhciB0byBjcmVkaXQxOg0KDQoqIFRoZSBiYXNpYyB1bml0IGlzIHRoZSBWTSAid2Vp Z2h0Ii4gIFdoZW4gY29tcGV0aW5nIGZvciBjcHUNCnJlc291cmNlcywgVk1zIHdpbGwgZ2V0IGEg c2hhcmUgb2YgdGhlIHJlc291cmNlcyBwcm9wb3J0aW9uYWwgdG8gdGhlaXINCndlaWdodC4gIChl LmcuLCB0d28gY3B1LWhvZyB3b3JrbG9hZHMgd2l0aCB3ZWlnaHRzIG9mIDI1NiBhbmQgNTEyIHdp bGwNCmdldCAzMyUgYW5kIDY3JSBvZiB0aGUgY3B1LCByZXNwZWN0aXZlbHkpLg0KDQoqIEFkZGl0 aW9uYWxseSwgd2Ugd2lsbCBiZSBpbnRyb2R1Y2luZyBhICJyZXNlcnZhdGlvbiIgb3IgImZsb29y Ii4NCiAgKEknbSBvcGVuIHRvIG5hbWUgY2hhbmdlcyBvbiB0aGlzIG9uZS4pICBUaGlzIHdpbGwg YmUgYSBtaW5pbXVtDQogIGFtb3VudCBvZiBjcHUgdGltZSB0aGF0IGEgVk0gY2FuIGdldCBpZiBp dCB3YW50cyBpdC4NCg0KRm9yIGV4YW1wbGUsIG9uZSBjb3VsZCBnaXZlIGRvbTAgYSAicmVzZXJ2 YXRpb24iIG9mIDUwJSwgYnV0IGxlYXZlIHRoZQ0Kd2VpZ2h0IGF0IDI1Ni4gIE5vIG1hdHRlciBo b3cgbWFueSBvdGhlciBWTXMgcnVuIHdpdGggYSB3ZWlnaHQgb2YgMjU2LA0KZG9tMCB3aWxsIGJl IGd1YXJhbnRlZWQgdG8gZ2V0IDUwJSBvZiBvbmUgY3B1IGlmIGl0IHdhbnRzIGl0Lg0KDQoqIFRo ZSAiY2FwIiBmdW5jdGlvbmFsaXR5IG9mIGNyZWRpdDEgd2lsbCBiZSByZXRhaW5lZC4NCg0KVGhp cyBpcyBhIG1heGltdW0gYW1vdW50IG9mIGNwdSB0aW1lIHRoYXQgYSBWTSBjYW4gZ2V0OiBpLmUu LCBhIFZNDQp3aXRoIGEgY2FwIG9mIDUwJSB3aWxsIG9ubHkgZ2V0IGhhbGYgb2Ygb25lIGNwdSwg ZXZlbiBpZiB0aGUgcmVzdCBvZg0KdGhlIHN5c3RlbSBpcyBjb21wbGV0ZWx5IGlkbGUuDQoNCiog V2Ugd2lsbCBhbHNvIGhhdmUgYW4gaW50ZXJmYWNlIHRvIHRoZSBjcHUtdnMtZWxlY3RyaWNhbCBw b3dlci4NCg0KVGhpcyBpcyB5ZXQgdG8gYmUgZGVmaW5lZC4gIEF0IHRoZSBoeXBlcnZpc29yIGxl dmVsLCBpdCB3aWxsIHByb2JhYmx5DQpiZSBhIG51bWJlciByZXByZXNlbnRpbmcgdGhlICJiYWRu ZXNzIiBvZiBwb3dlcmluZyB1cCBleHRyYSBjcHVzIC8NCmNvcmVzLiAgQXQgdGhlIHRvb2xzIGxl dmVsLCB0aGVyZSB3aWxsIHByb2JhYmx5IGJlIHRoZSBvcHRpb24gb2YNCmVpdGhlciBzcGVjaWZ5 aW5nIHRoZSBudW1iZXIsIG9yIG9mIHVzaW5nIG9uZSBvZiAyLzMgcHJlLWRlZmluZWQNCnZhbHVl cyB7cG93ZXIsIGJhbGFuY2UsIGdyZWVuL2JhdHRlcnl9Lg0KDQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KWGVuLWRldmVsIG1haWxpbmcgbGlzdA0KWGVu LWRldmVsQGxpc3RzLnhlbnNvdXJjZS5jb20NCmh0dHA6Ly9saXN0cy54ZW5zb3VyY2UuY29tL3hl bi1kZXZlbA0KLg0K --=====003_Dragon641631112326_===== Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiI+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNi4w MC42MDAwLjE2NTg3IiBuYW1lPUdFTkVSQVRPUj4NCjxTVFlMRT5AZm9udC1mYWNlIHsNCglmb250 LWZhbWlseTogy87M5TsNCn0NCkBmb250LWZhY2Ugew0KCWZvbnQtZmFtaWx5OiBWZXJkYW5hOw0K fQ0KQGZvbnQtZmFjZSB7DQoJZm9udC1mYW1pbHk6IEDLzszlOw0KfQ0KQHBhZ2UgU2VjdGlvbjEg e3NpemU6IDU5NS4zcHQgODQxLjlwdDsgbWFyZ2luOiA3Mi4wcHQgOTAuMHB0IDcyLjBwdCA5MC4w cHQ7IGxheW91dC1ncmlkOiAxNS42cHQ7IH0NClAuTXNvTm9ybWFsIHsNCglURVhULUpVU1RJRlk6 IGludGVyLWlkZW9ncmFwaDsgRk9OVC1TSVpFOiAxMC41cHQ7IE1BUkdJTjogMGNtIDBjbSAwcHQ7 IEZPTlQtRkFNSUxZOiAiVGltZXMgTmV3IFJvbWFuIjsgVEVYVC1BTElHTjoganVzdGlmeQ0KfQ0K TEkuTXNvTm9ybWFsIHsNCglURVhULUpVU1RJRlk6IGludGVyLWlkZW9ncmFwaDsgRk9OVC1TSVpF OiAxMC41cHQ7IE1BUkdJTjogMGNtIDBjbSAwcHQ7IEZPTlQtRkFNSUxZOiAiVGltZXMgTmV3IFJv bWFuIjsgVEVYVC1BTElHTjoganVzdGlmeQ0KfQ0KRElWLk1zb05vcm1hbCB7DQoJVEVYVC1KVVNU SUZZOiBpbnRlci1pZGVvZ3JhcGg7IEZPTlQtU0laRTogMTAuNXB0OyBNQVJHSU46IDBjbSAwY20g MHB0OyBGT05ULUZBTUlMWTogIlRpbWVzIE5ldyBSb21hbiI7IFRFWFQtQUxJR046IGp1c3RpZnkN Cn0NCkE6bGluayB7DQoJQ09MT1I6IGJsdWU7IFRFWFQtREVDT1JBVElPTjogdW5kZXJsaW5lDQp9 DQpTUEFOLk1zb0h5cGVybGluayB7DQoJQ09MT1I6IGJsdWU7IFRFWFQtREVDT1JBVElPTjogdW5k ZXJsaW5lDQp9DQpBOnZpc2l0ZWQgew0KCUNPTE9SOiBwdXJwbGU7IFRFWFQtREVDT1JBVElPTjog dW5kZXJsaW5lDQp9DQpTUEFOLk1zb0h5cGVybGlua0ZvbGxvd2VkIHsNCglDT0xPUjogcHVycGxl OyBURVhULURFQ09SQVRJT046IHVuZGVybGluZQ0KfQ0KU1BBTi5FbWFpbFN0eWxlMTcgew0KCUZP TlQtV0VJR0hUOiBub3JtYWw7IENPTE9SOiB3aW5kb3d0ZXh0OyBGT05ULVNUWUxFOiBub3JtYWw7 IEZPTlQtRkFNSUxZOiBWZXJkYW5hOyBURVhULURFQ09SQVRJT046IG5vbmU7IG1zby1zdHlsZS10 eXBlOiBwZXJzb25hbC1jb21wb3NlDQp9DQpESVYuU2VjdGlvbjEgew0KCXBhZ2U6IFNlY3Rpb24x DQp9DQpVTktOT1dOIHsNCglGT05ULVNJWkU6IDEwcHQNCn0NCkJMT0NLUVVPVEUgew0KCU1BUkdJ Ti1UT1A6IDBweDsgTUFSR0lOLUJPVFRPTTogMHB4OyBNQVJHSU4tTEVGVDogMmVtDQp9DQpPTCB7 DQoJTUFSR0lOLVRPUDogMHB4OyBNQVJHSU4tQk9UVE9NOiAwcHgNCn0NClVMIHsNCglNQVJHSU4t VE9QOiAwcHg7IE1BUkdJTi1CT1RUT006IDBweA0KfQ0KPC9TVFlMRT4NCjwvSEVBRD4NCjxCT0RZ IHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiB2ZXJkYW5hIj4NCjxESVY+PEZP TlQgZmFjZT1WZXJkYW5hIGNvbG9yPSMwMDAwODAgc2l6ZT0yPkhpIGFsbCw8L0ZPTlQ+PC9ESVY+ DQo8RElWPjxGT05UIGNvbG9yPSMwMDAwODA+PC9GT05UPiZuYnNwOzwvRElWPg0KPERJVj48Rk9O VCBjb2xvcj0jMDAwMDgwPkFjdHVhbGx5IEkgdGhpbmsgSS9PIHJlc3BvbnNpdmVuZXNzIGlzIGlt cG9ydGFudCB0byANCmNvbnRyb2wgYnkgdGhlIHNjaGVkdWxpbmcgYWxnb3JpdGhtLiBBbmQgdGhp cyBpcyBlc3BlY2lhbGx5IHRydWUgZm9yIHZyaXR1YWxpemVkIA0KZGVza3RvcC9jbGllbnQgZW52 aXJvbm1lbnQsIHNpbmNlIGluIHN1Y2ggZW52aXJvbm1lbnRzLCB0aGVyZSBhcmUgc28gbWFueSBJ L08gDQpldmVudHMgdG8gaGFuZGxlLCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgc2VydmVy IGNvbnNvbGlkYXRpb24gY2FzZSwgd2hlcmUgDQptYW55IG9mIHRoZSB0YXNrcyBhcmUgQ1BVLWlu dGVuc2l2ZS48L0ZPTlQ+PC9ESVY+DQo8RElWPjxGT05UIGNvbG9yPSMwMDAwODA+SSB3b3VsZCBs aWtlIHRvIHNob3cgdGhpcyBwb2ludCBieSBhIHNpbXBsZSBzY2hlZHVsaW5nIA0KYWxnb3JpdGht LCB3aGljaCBpcyBhdHRhY2hlZCB3aXRoIHRoaXMgbWFpbCwmbmJzcDtpIHdyb3R0ZW4gaW4gdGhl IGxhc3Qgd2ludGVyIA0KKEphbi4gMjAwOSkuIFRoYXQgdGltZSwgSSBhbSBpbiBJbnRlbCBPVEMg Zm9yIGEgdmlzaXRhdGlvbiwgYW5kIHRoYW5rIEludGVsIGd1eXMgDQooRGlzaGVuZywgS2V2aW4m bmJzcDtUaWFuIGFuZCBldGMuKSZuYnNwO2ZvciB0aGVpciBoZWxwLjwvRk9OVD48L0RJVj4NCjxE SVY+PEZPTlQgZmFjZT1WZXJkYW5hIGNvbG9yPSMwMDAwODAgc2l6ZT0yPlRoZSBzY2hlZHVsZXIg aXMgbmFtZWQgYXMgU0RQICh5b3UgDQpoYXZlIHRvIHVzZSAic2NoZWQ9c2RwIiBwYXJhbWV0ZXIg aW4gWGVuIGtlcm5lbCBsaW5lIHdoZW4gYm9vdCksIHdoaWNoIGkgbWVhbiB0byANCnVzZSBpZGVh cyBvZiBkeW5hbWljIHByaW9yaXR5IHRvIG1ha2UgdGhlIHZpcnR1YWxpemVkIGNsaWVudHMgbWVh dCB0aGVpciBuZWVkcyANCm9mIHVzYWdlLiBIb3dldmVyLCB0aGlzIHNjaGVkdWxlciBpcyBiYXNp Y2FsbHkgYSBzaW1wbGUgcHJvdG90eXBlIGZvciBpZGVhIA0KcHJvdmluZyB0aWxsIG5vdywgSSBo YWQgbm90IGltcGxlbWVudCB0aGUgZHluYW1pYyBwcmlvcml0eSBtZWNoYW5pc21zIGluIHlldC4g DQpUaGUgc29sdXRpb24gdXNlZCBpbiB0aGlzIHNpbXBsZSBzY2hlZHVsZXIgaXMgbGFyZ2VseSBh ZC1ob2MsIGFuZCBpIGhvcGUgaXQgDQpjYW4mbmJzcDs8L0ZPTlQ+PEZPTlQgZmFjZT1WZXJkYW5h IGNvbG9yPSMwMDAwODAgc2l6ZT0yPmNvbnRyaWJ1dGUgc29tZXRoaW5nIHRvIA0KdGhlIGZ1dHVy ZSZuYnNwO2RldmVsb3BtZW50IG9mIG5leHQgZ2VuZXJhdGlvbiBYZW4gc2NoZWR1bGVyLiBCVFcs IEkgYm9ycm93ZWQgDQpsYXJnZSBwb3J0aW9uIG9mIGNvZGUgZnJvbSBDcmVkaXQgc2NoZWR1bGVy LjwvRk9OVD48L0RJVj4NCjxESVY+PEZPTlQgY29sb3I9IzAwMDA4MD48L0ZPTlQ+Jm5ic3A7PC9E SVY+DQo8RElWPjxGT05UIGNvbG9yPSMwMDAwODA+VGhpcyBwYXRjaCBzaG91bGQgd29yayBpbiBW VC1kIHBsYXRmb3JtIHdlbGwgKGl0IGRvZXMgDQpub3QgZG9pbmcgd2VsbCBpbiB0aGUgZW11bGF0 ZWQgZGV2aWNlIGVudmlyb25tZW50LCBzaW5jZSBkZXZpY2UgZW11bGF0aW9uLCANCmVzcGVjaWFs bHkgdGhlIHZpZGVvIHJlc3VsdHMgaW4gdG9vIGhpZ2ggb3ZlcmhlYWQgdG8gaGFuZGxlIGJ5IHRo ZSBzY2hlZHVsZXIpLiANCldlICh0aGFuayBhZ2FpbiBJbnRlbCBPVEMgZm9yIHRoZSBWVC1kIHBs YXRmb3JtKSB0ZXN0ZWQgdGhlIHNjaGVkdWxlciBpbiBhIA0KMy4wR2h6IDItY29yZSBzeXN0ZW0s IGludm9rZWQgMiBIVk0gZ3Vlc3QgZG9tYWlucyAob25lIGlzIHByaW1hcnkgZG9tYWluLCBhbmQg DQphbm90aGVyIGlzIGF1eGlsaWFyeSwgYm90aCBoYXZlIHR3byBWQ1BVcyksIHBpbm5lZCBlYWNo IHZjcHUgb2YgZWFjaCBkb21haW4gdG8gDQpkaWZmZXJlbnQgUENQVXMgKFZDUFVzIG9mIGRvbWFp bjAgaXMgcGlubmVkIGFzIHdlbGwpLCBzaW5jZSB0aGUgaSBzdGlsbCBoYWQgbm90IA0KaW1wbGVt ZW50IGEgcHJvcGVyIFZDUFUgbWlncmF0aW9uIG1lY2hhbmlzbSBpbiBTRFAgKHNvcnJ5IGZvciB0 aGF0LCBJIGRvIG5vdCANCnRoaW5rIHRoZSBhZ2dyZXNpdmUgbWlncmF0aW9uIG1lY2hhbmlzbSBv ZiBDcmVkaXQgaXMgcHJvcGVyIGZvciB2aXJ0dWFsaXplZCANCmNsaWVudHMsIGFuZCB3b3JraW5n IG9uIHRoaXMgbm93LCBob3BlIGNhbiBmaW5kIGEgcHJvcGVyIG9uZSBmb3IgWGVuIGluIG5lYXIg DQpmdXR1cmUpLiBUaGUgc291bmQgYW5kIHZpZGVvIGNhcmQgYXJlIGRpcmVjdGx5IGFzc2lnbmVk IHRvIHRoZSBwcmltYXJ5IA0KZG9tYWluLCZuYnNwO3doaWxlIHRoZSBhdXhpbGlhcnkgZG9tYWlu IHVzZXMgZW11bGF0ZWQgb25lcy48L0ZPTlQ+PC9ESVY+DQo8RElWPjxGT05UIGNvbG9yPSMwMDAw ODA+PC9GT05UPiZuYnNwOzwvRElWPg0KPERJVj48Rk9OVCBjb2xvcj0jMDAwMDgwPlNldCB0aGUg InByaW9yaXR5IiAoc2hvdWxkIGJlJm5ic3A7bmFtZWQgYXMgIkkvTyANCnJlc3BvbnNpdmVuZXNz IiwgSSZuYnNwO3RoaW5rJm5ic3A7aSBoYWQgbWFrZSBhIG1pc3Rha2Ugb24gdGhpcywgc2luY2Ug dGhlIA0KaW5pdGlhbCBvYmplY3RpdmVuZXNzIGlzIHRvJm5ic3A7dXNlIGR5bmFtaWMgcHJpb3Jp dHkgaWRlYXMpJm5ic3A7dmFsdWUgb2YgDQpkb21haW4wIHRvIDkxLCBhbmQgc2V0IHRoYXQgb2Yg cHJpbWFyeSBkb21haW4gdG8gOTAuIHJlZ2FyZGluZyB0aGUgYXV4aWxpYXJ5IA0KZG9tYWluLCB5 b3UgY2FuIGxlZnQgaXQgYXMgZGVmYXVsdCAoODApLiBQbGVhc2UgdXNlZCB0aGUgYXR0YWNoZWQg ZG9tYWluMCANCmNvbW1hbmQgbGluZSB0b29sIChpLmUuLCBzY2hlZF9zZHBfc2V0IFtkb21haW5f aWRdIFtuZXdfcHJpb3JpdHldKSB0byBzZXQgdGhlIA0KbmV3IHByaW9yaXR5LCBJIGFtIG5vdCBn b29kIGF0IFB5dGhvbiwgc29ycnkgZm9yIHRoYXQhIDwvRk9OVD48L0RJVj4NCjxESVY+PEZPTlQg Y29sb3I9IzAwMDA4MD5XZSBoYWQgdGVzdGVkIGEgc2NlbmFyaW8gdGhhdCB0aGUgcHJpbWFyeSBk b21haW4gcGxheXMgDQphIERpdlggdmlkZW8sIGFuZCBhdCB0aGUgc2FtZSB0aW1lLCBjb3B5IHZl cnkgYmlnIGZpbGVzIGluIHRoZSBhdXhpbGlhcnkgZG9tYWluLiANClRoZSB2aWRlbyBjYW4gYmUg cGxheWVkIHdlbGwhIFRoZSBlZmZlY3RpdmVuZXNzIHdlIGV4cGVyaWVuY2VkIGJlYXRzIEJDcmVk aXQgaW4gDQp0aGlzIHVzYWdlIGNhc2UsIG5vIG1hdHRlciBob3cgd2UgYWRqdXN0IHRoZSBwYXJh bWV0ZXJzIG9mIEJDcmVkaXQuPC9GT05UPjwvRElWPg0KPERJVj48Rk9OVCBjb2xvcj0jMDAwMDgw PjwvRk9OVD4mbmJzcDs8L0RJVj4NCjxESVY+PEZPTlQgY29sb3I9IzAwMDA4MD5Tb21lIGV4cGxh bmF0aW9ucyBvZiBTRFA6PC9GT05UPjwvRElWPg0KPERJVj48Rk9OVCBjb2xvcj0jMDAwMDgwPlRo ZSAicHJpb3JpdHkiIHBhcmFtZXRlciBpcyBhY3R1YWxseSB1c2VkIHRvIGNvbnRyb2wgDQpJL08g cmVzcG9uc2l2ZW5lc3MuIElmIGEgVkNQVSBpcyB3b2tlbiBieSBhbiZuYnNwO0kvTyBldmVudCBk dXJpbmcgdGhlIHJ1bnRpbWUsIA0KYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFuZCBpdHMgInByaW9y aXR5IiB2YWx1ZSBoYXBwZW5lZCB0byBiZSBoaWdoZXIgdGhhbiB0aGUgDQpjdXJyZW50IFZDUFUs IHRoZSBjdXJyZW50IFZDUFUgd2lsbCBiZSBwcmVlbXB0ZWQsIGFuZCB0aGUgd29rZW4gVkNQVSBp cyANCnNjaGVkdWxlZC4gQSAiYm9udXMiIHdpbGwgYmUgZ2l2ZW4gdG8gdGhlIHdva2VuIFZDUFUg dG8gbGVhdmUgImVub3VnaCBwb3NzaWJsZSIgDQp0aW1lIGZvciBpdCB0byBjb21wbGV0ZSBpdHMg SS9PIGhhbmRsaW5nLiBUaGUgYm9udXMgdmFsdWUgaXMgY29tcHV0ZWQgYnkgDQpzdWJzdHJhY3Rp bmcgdGhlICJwcmlvcml0eSIgcGFyYW1ldGVyIG9mIHRoZSB0d28gKHRoZSB3b2tlbiBhbmQgdGhl IGN1cnJlbnQgKSANClZDUFVzLiBUaGlzIHN0cmF0ZWd5IGFjdHVhbGx5IGluaGliaXRzIHRoZSBw cmVlbXB0aW9uIG9mIGEgY3VycmVudGx5IHJ1bm5pbmcgDQpWQ1BVIHdpdGggaGlnaCAicHJpb3Jp dHkiIGJ5IGFub3RoZXIgVkNQVSB3aXRoIGxvd2VyIG9uZSwgd2hpbGUgcGVybWl0cyANCnByZWVt cHRpb24mbmJzcDt2aWNlIHZlc2EsJm5ic3A7YW5kIGkgdGhpbmsgdGhpcyBtZXRob2QgZml0cyB3 ZWxsIGZvciB0aGUgDQphc3ltbWV0cmljIGRvbWFpbiByb2xlIHNjZW5hcmlvIG9mIHZpcnR1YWxp emVkIGNsaWVudHMgYW5kIGRlc2t0b3BzLiANCjwvRk9OVD48L0RJVj4NCjxESVY+PEZPTlQgY29s b3I9IzAwMDA4MD5SZWdhcmRpbmcgdGhlIGNvbXB1dGF0aW9uIHJlc291cmNlIGFsbG9jYXRpb24s IHRoZSANCnNpbXBsZSBzY2hlZHVsZXImbmJzcDthY3R1YWxseSBzaGFyZXMgdGhlIENQVSByZXNv dXJjZSBieSBhIHJvdW5kLXJvYmluIGZhc2hpb24uIA0KSS9PIGV2ZW50IGhhcHBlbmVkIGF0IGEg aGlnaCAicHJpb3JpdHkiIFZDUFUgY2FuIGdpdmUgaXQgYSBsaXR0bGUgImJvbnVzIiwgYWZ0ZXIg DQp1c2luZyB1cCB0aGF0LCB0aGUgVkNQVSBmYWxsIGJhY2sgdG8gdGhlIHJvdW5kLXJvYmluIHNj aGVkdWxpbmcgcmluZy4gQnkgdGhpcyANCndheSwgaXQgbWFpbnRhaW5zIHNvbWUga2luZCBvZiBm YWlybmVzcyBldmVuIGluIHZpcnR1YWxpemVkIGNsaWVudCBlbnZpcm9ubWVudC4gDQplLmcuLCBp biBvdXIgdGVzdGluZyBzY2VuYXJpbywgd2UgZm91bmQgdGhlIGZpbGUtY29weWluZyBpbiBhdXhp bGlhcnkgZG9tYWluIA0KcHJvY2VlZHMgd2VsbCAoYWx0aG91Z2ggYSBsaXR0bGUgc2xvdykgd2hl biB0aGUgcHJpbWFyeSBkb21haW4gcGxheXMgYSBEaXZYIA0KdmlkZW8sIHdoaWNoIHJlc3VsdHMg aW4gaGlnaCB2b2x1bW4gb2YgSS9PIGV2ZW50cy4gPC9GT05UPjwvRElWPg0KPERJVj48Rk9OVCBj b2xvcj0jMDAwMDgwPjwvRk9OVD4mbmJzcDs8L0RJVj4NCjxESVY+PEZPTlQgY29sb3I9IzAwMDA4 MD5CeSB0aGlzIGV4cGVyaWVuY2UsIGkgdGhpbmsgSS9PIHJlc3BvbnNpdmVuZXNzIGlzIGFuIA0K aW1wb3J0YW50IHBhcmFtZXRlciB0byBiZSBhZGRlZCBpbiB0aGUgZGV2ZWxvcG1lbnQgb2YgbmV3 IHNjaGVkdWxlciwgc2luY2UgDQpwbGF0Zm9ybXMgaGF2ZSB0aGVpciBpbmRlcGVuZGVudCBwZXJm b3JtYW5jZSBtZXRyaWNzLCBhbmQgdXNlciBjYW4gYWRqdXN0IHRoZSANCkkvTyByZXNwb25zaXZl bmVzcyBwYXJhbWV0ZXIgb2YgdGhlIGRvbWFpbnMgdG8gbWFrZSB0aGVtIHdvcmsgd2VsbC4gDQo8 L0ZPTlQ+PC9ESVY+DQo8RElWPjxGT05UIGNvbG9yPSMwMDAwODA+PC9GT05UPiZuYnNwOzwvRElW Pg0KPERJVj48Rk9OVCBjb2xvcj0jMDAwMDgwPk1vcmVvdmVyLCBJIHRoaW5rIHNvbWUgY2hhcmFj dGVycyBvZiBDcmVkaXQgc2NoZWR1bGVyIA0KZG9lcyBub3QgZml0IHdlbGwgZm9yIHRoZSB2aXJ0 dWFsaXplZCBjbGllbnRzL2Rlc2t0b3BzIChmb3IgZnVydGhlciBkaXNjdXNzaW9uIA0KaWYgcG9z c2libGUpLiBJZiB1c2VkIGluIHRoZSB2aXJ0dWFsaXplZCBjbGllbnRzL2Rlc2t0b3Agc2NlbmF0 aW8sIHRoZSB3b3JzdCANCnNpZGUgb2YgQ3JlZGl0IGlzIGl0cyBsaXR0bGUgc3RhdGUgc3BhY2Ug dG8gbWFyayB0aGUgVkNQVXMgKGkuZS4sIEJPT1QsIFVOREVSIA0KYW5kIE9WRVIpLiBUaGlzIG1h a2UgaXQgdmVyeSBpbmNvbnZlbmllbnQgYXQgbGVhc3QgdG8gZGlmZmVyZW50aWF0ZSB0aGUgVkNQ VXMgb2YgDQpkaWZmZXJlbnQgZG9tYWlucywgYW5kIHdpdGggZGlmZmVyZW50IGtpbmRzIG9mIHRh c2tzLCBhbHRob3VnaCB0aGUgbGl0dGxlIHN0YXRlIA0Kc3BhY2UgZG8gd29yayB3ZWxsIGluIGNv bnNvbGlkYXRlZCBzZXJ2ZXJzLiZuYnNwOyBUaGUgc2Vjb25kIGluY29uZXZpZW50IHNpZGUgb2Yg DQpDcmVkaXQgc2NoZWR1bGVyIGlzIHRoZSBtZXRob2QgdGhhdCB0aGUgc2NoZWR1bGVyICJib29z dHMiIHRoZSBWQ1BVcy4gSW4gdGhlIA0Kb3JpZ2luYWwgdmVyc2lvbiBDcmVkaXQsIGEgd29rZW4g VkNQVSBoYXMgdG8gaGF2ZSBlbm91Z2ggY3JlZGl0cyAoVU5ERVIgc3RhdGUpIA0KdG8gbWFrZSBp dHNlbGYgcHJvbW90ZWQgdG8gQk9PU1Qgc3RhdGUuIEhvd2V2ZXIsIHRoZSBkb21haW4gKFZDUFUp IG1heSB1c2VkIHVwIA0KaXRzIGNyZWRpdCwgYW5kIGF0IHRoZSBzYW1lIHRpbWUgaXQgZG8gaGF2 ZSBjcml0aWNhbCB0YXNrLiBBdCB0aGlzIG1vbWVudCwgDQpmYWlybmVzcyBpcyBvZiB0aGUgc2Vj b25kYXJ5IGNvbnNpZGVyYXRpb24sIGFuZCBzaG91bGQgYmUgbWFpbnRhaW5lZCBpbiBsYXRlciAN CnBoYXNlcy4gQXQgdGhpcyBwb2ludCwgQkNyZWRpdCBicmluZ3Mgc29tZSBjaGFuZ2VzLCBhbHRo b3VnaCBCY3JlZGl0IG1heSBnaXZlIA0KZmFpcm5lc3MgbGl0dGxlIGNvbnNpZGVyYXRpb24sIHVu Zm9ydHVuYXRlbHkuJm5ic3A7PC9GT05UPjwvRElWPg0KPERJVj48Rk9OVCBjb2xvcj0jMDAwMDgw PjwvRk9OVD4mbmJzcDs8L0RJVj4NCjxESVY+PEZPTlQgY29sb3I9IzAwMDA4MD48L0ZPTlQ+Jm5i c3A7PC9ESVY+DQo8RElWPjxGT05UIGNvbG9yPSMwMDAwODA+VGhhbmtzLDwvRk9OVD48L0RJVj4N CjxESVY+PEZPTlQgY29sb3I9IzAwMDA4MD48L0ZPTlQ+Jm5ic3A7PC9ESVY+DQo8RElWPjxGT05U IGZhY2U9VmVyZGFuYSBjb2xvcj0jMDAwMDgwIHNpemU9Mj48L0ZPTlQ+Jm5ic3A7PC9ESVY+DQo8 RElWPjxGT05UIGZhY2U9VmVyZGFuYSBjb2xvcj0jYzBjMGMwIHNpemU9Mj4yMDA5LTA0LTEwIDwv Rk9OVD48L0RJVj48Rk9OVCANCmZhY2U9VmVyZGFuYSBjb2xvcj0jMDAwMDgwIHNpemU9Mj4NCjxI UiBzdHlsZT0iV0lEVEg6IDEyMnB4OyBIRUlHSFQ6IDJweCIgYWxpZ249bGVmdCBTSVpFPTI+DQo8 L0ZPTlQ+DQo8RElWPjxGT05UIGZhY2U9VmVyZGFuYSBjb2xvcj0jYzBjMGMwIHNpemU9Mj48U1BB Tj5aaGl5dWFuIFNoYW88L1NQQU4+IA0KPC9GT05UPjwvRElWPjxGT05UIGZhY2U9VmVyZGFuYSBj b2xvcj0jMDAwMDgwIHNpemU9Mj4NCjxIUj4NCjwvRk9OVD4NCjxESVY+PEZPTlQgZmFjZT1WZXJk YW5hIHNpemU9Mj48U1RST05HPreivP7Iy6O6PC9TVFJPTkc+IEdlb3JnZSBEdW5sYXAgPC9GT05U PjwvRElWPg0KPERJVj48Rk9OVCBmYWNlPVZlcmRhbmEgc2l6ZT0yPjxTVFJPTkc+t6LLzcqxvOSj ujwvU1RST05HPiAyMDA5LTA0LTA5Jm5ic3A7IDIzOjU5OjE4IA0KPC9GT05UPjwvRElWPg0KPERJ Vj48Rk9OVCBmYWNlPVZlcmRhbmEgc2l6ZT0yPjxTVFJPTkc+ytW8/sjLo7o8L1NUUk9ORz4gDQp4 ZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbSA8L0ZPTlQ+PC9ESVY+DQo8RElWPjxGT05UIGZh Y2U9VmVyZGFuYSBzaXplPTI+PFNUUk9ORz6zrcvNo7o8L1NUUk9ORz4gPC9GT05UPjwvRElWPg0K PERJVj48Rk9OVCBmYWNlPVZlcmRhbmEgc2l6ZT0yPjxTVFJPTkc+1vfM4qO6PC9TVFJPTkc+IFtY ZW4tZGV2ZWxdIFtSRkNdIFNjaGVkdWxlciANCndvcmsscGFydCAxOiBIaWdoLWxldmVsIGdvYWxz IGFuZCBpbnRlcmZhY2UuIDwvRk9OVD48L0RJVj4NCjxESVY+PEZPTlQgZmFjZT1WZXJkYW5hIHNp emU9Mj48L0ZPTlQ+IDwvRElWPg0KPERJVj48Rk9OVCBmYWNlPVZlcmRhbmEgc2l6ZT0yPg0KPERJ Vj5JbiZuYnNwO3RoZSZuYnNwO2ludGVyZXN0Jm5ic3A7b2YmbmJzcDtvcGVubmVzcyZuYnNwOyhh cyZuYnNwO3dlbGwmbmJzcDthcyZuYnNwO2luJm5ic3A7dGhlJm5ic3A7aW50ZXJlc3QmbmJzcDtv ZiZuYnNwO3Rha2luZzwvRElWPg0KPERJVj5hZHZhbnRhZ2UmbmJzcDtvZiZuYnNwO2FsbCZuYnNw O3RoZSZuYnNwO3NtYXJ0Jm5ic3A7cGVvcGxlJm5ic3A7b3V0Jm5ic3A7dGhlcmUpLCZuYnNwO0kn bSZuYnNwO3Bvc3RpbmcmbmJzcDthJm5ic3A7dmVyeSZuYnNwO2Vhcmx5PC9ESVY+DQo8RElWPmRl c2lnbiZuYnNwO3Byb3RvdHlwZSZuYnNwO29mJm5ic3A7dGhlJm5ic3A7Y3JlZGl0MiZuYnNwO3Nj aGVkdWxlci4mbmJzcDsmbmJzcDtXZSd2ZSZuYnNwO2hhZCZuYnNwO2EmbmJzcDtsb3QmbmJzcDtv ZjwvRElWPg0KPERJVj5jb250cmlidXRvcnMmbmJzcDt0byZuYnNwO3RoZSZuYnNwO3NjaGVkdWxl ciZuYnNwO3JlY2VudGx5LCZuYnNwO3NvJm5ic3A7SSZuYnNwO2hvcGUmbmJzcDt0aGF0Jm5ic3A7 dGhvc2UmbmJzcDt3aXRoPC9ESVY+DQo8RElWPmludGVyZXN0Jm5ic3A7YW5kJm5ic3A7a25vd2xl ZGdlJm5ic3A7d2lsbCZuYnNwO3Rha2UmbmJzcDthJm5ic3A7bG9vayZuYnNwO2FuZCZuYnNwO2xl dCZuYnNwO21lJm5ic3A7a25vdyZuYnNwO3doYXQmbmJzcDt0aGV5PC9ESVY+DQo8RElWPnRoaW5r Jm5ic3A7YXQmbmJzcDthJm5ic3A7aGlnaCZuYnNwO2xldmVsLjwvRElWPg0KPERJVj4mbmJzcDs8 L0RJVj4NCjxESVY+VGhpcyZuYnNwO2ZpcnN0Jm5ic3A7ZS1tYWlsJm5ic3A7d2lsbCZuYnNwO2Rp c2N1c3MmbmJzcDt0aGUmbmJzcDtvdmVyYWxsJm5ic3A7Z29hbHM6Jm5ic3A7dGhlJm5ic3A7dGFy Z2V0Jm5ic3A7InN3ZWV0PC9ESVY+DQo8RElWPnNwb3QiJm5ic3A7dXNlJm5ic3A7Y2FzZXMmbmJz cDt0byZuYnNwO2NvbnNpZGVyLCZuYnNwO21lYXN1cmFibGUmbmJzcDtnb2FscyZuYnNwO2ZvciZu YnNwO3RoZSZuYnNwO3NjaGVkdWxlciwmbmJzcDthbmQ8L0RJVj4NCjxESVY+dGhlJm5ic3A7dGFy Z2V0Jm5ic3A7aW50ZXJmYWNlJm5ic3A7LyZuYnNwO2ZlYXR1cmVzLiZuYnNwOyZuYnNwO1RoaXMm bmJzcDtpcyZuYnNwO2ZvciZuYnNwO2dlbmVyYWwmbmJzcDtjb21tZW50LjwvRElWPg0KPERJVj4m bmJzcDs8L0RJVj4NCjxESVY+VGhlJm5ic3A7c3Vic2VxdWVudCZuYnNwO2UtbWFpbChzPykmbmJz cDt3aWxsJm5ic3A7aW5jbHVkZSZuYnNwO3NvbWUmbmJzcDtzcGVjaWZpYyZuYnNwO2FsZ29yaXRo bXMmbmJzcDthbmQ8L0RJVj4NCjxESVY+Y2hhbmdlcyZuYnNwO2N1cnJlbnRseSZuYnNwO2luJm5i c3A7Y29uc2lkZXJhdGlvbiwmbmJzcDthcyZuYnNwO3dlbGwmbmJzcDthcyZuYnNwO3NvbWUmbmJz cDtibGVlZGluZy1lZGdlPC9ESVY+DQo8RElWPnBhdGNoZXMuJm5ic3A7Jm5ic3A7VGhpcyZuYnNw O3dpbGwmbmJzcDtiZSZuYnNwO2ZvciZuYnNwO3Blb3BsZSZuYnNwO3dobyZuYnNwO2hhdmUmbmJz cDthJm5ic3A7c3BlY2lmaWMmbmJzcDtpbnRlcmVzdCZuYnNwO2luJm5ic3A7dGhlPC9ESVY+DQo8 RElWPmRldGFpbHMmbmJzcDtvZiZuYnNwO3RoZSZuYnNwO3NjaGVkdWxpbmcmbmJzcDthbGdvcml0 aG1zLjwvRElWPg0KPERJVj4mbmJzcDs8L0RJVj4NCjxESVY+UGxlYXNlJm5ic3A7ZmVlbCZuYnNw O2ZyZWUmbmJzcDt0byZuYnNwO2NvbW1lbnQmbmJzcDsvJm5ic3A7ZGlzY3VzcyZuYnNwOy8mbmJz cDtzdWdnZXN0Jm5ic3A7aW1wcm92ZW1lbnRzLjwvRElWPg0KPERJVj4mbmJzcDs8L0RJVj4NCjxE SVY+MS4mbmJzcDtEZXNpZ24mbmJzcDt0YXJnZXRzPC9ESVY+DQo8RElWPiZuYnNwOzwvRElWPg0K PERJVj5XZSZuYnNwO2hhdmUmbmJzcDt0aHJlZSZuYnNwO2dlbmVyYWwmbmJzcDt1c2UmbmJzcDtj YXNlcyZuYnNwO2luJm5ic3A7bWluZDombmJzcDtTZXJ2ZXImbmJzcDtjb25zb2xpZGF0aW9uLCZu YnNwO3ZpcnR1YWw8L0RJVj4NCjxESVY+ZGVza3RvcCZuYnNwO3Byb3ZpZGVycywmbmJzcDthbmQm bmJzcDtjbGllbnRzJm5ic3A7KGUuZy4mbmJzcDtYZW5DbGllbnQpLjwvRElWPg0KPERJVj4mbmJz cDs8L0RJVj4NCjxESVY+Rm9yJm5ic3A7c2VydmVycywmbmJzcDtvdXImbmJzcDt0YXJnZXQmbmJz cDsic3dlZXQmbmJzcDtzcG90IiZuYnNwO2ZvciZuYnNwO3doaWNoJm5ic3A7d2UmbmJzcDt3aWxs Jm5ic3A7b3B0aW1pemUmbmJzcDtpcyZuYnNwO2E8L0RJVj4NCjxESVY+c3lzdGVtJm5ic3A7d2l0 aCZuYnNwOzImbmJzcDtzb2NrZXRzLCZuYnNwOzQmbmJzcDtjb3JlcyZuYnNwO2VhY2gmbmJzcDtz b2NrZXQsJm5ic3A7YW5kJm5ic3A7U01UJm5ic3A7KDE2Jm5ic3A7bG9naWNhbCZuYnNwO2NwdXMp LjwvRElWPg0KPERJVj5JZGVhbCZuYnNwO3BlcmZvcm1hbmNlJm5ic3A7aXMmbmJzcDtleHBlY3Rl ZCZuYnNwO3RvJm5ic3A7YmUmbmJzcDtyZWFjaGVkJm5ic3A7YXQmbmJzcDthYm91dCZuYnNwOzgw JSZuYnNwO3RvdGFsJm5ic3A7c3lzdGVtPC9ESVY+DQo8RElWPmNwdSZuYnNwO3V0aWxpemF0aW9u OyZuYnNwO2J1dCZuYnNwO3RoZSZuYnNwO3N5c3RlbSZuYnNwO3Nob3VsZCZuYnNwO2Z1bmN0aW9u Jm5ic3A7cmVhc29uYWJseSZuYnNwO3dlbGwmbmJzcDt1cCZuYnNwO3RvPC9ESVY+DQo8RElWPmEm bmJzcDt1dGlsaXphdGlvbiZuYnNwO29mJm5ic3A7ODAwJSZuYnNwOyhlLmcuLCZuYnNwO2EmbmJz cDtsb2FkJm5ic3A7b2YmbmJzcDs4KS48L0RJVj4NCjxESVY+Jm5ic3A7PC9ESVY+DQo8RElWPkZv ciZuYnNwO3ZpcnR1YWwmbmJzcDtkZXNrdG9wJm5ic3A7c3lzdGVtcywmbmJzcDt3ZSZuYnNwO3dp bGwmbmJzcDtoYXZlJm5ic3A7YSZuYnNwO2xhcmdlJm5ic3A7bnVtYmVyJm5ic3A7b2Y8L0RJVj4N CjxESVY+aW50ZXJhY3RpdmUmbmJzcDtWTXMmbmJzcDt3aXRoJm5ic3A7YSZuYnNwO2xvdCZuYnNw O29mJm5ic3A7c2hhcmVkJm5ic3A7bWVtb3J5LiZuYnNwOyZuYnNwO01vc3QmbmJzcDtvZiZuYnNw O3RoZXNlJm5ic3A7d2lsbCZuYnNwO2JlPC9ESVY+DQo8RElWPnNpbmdsZS12Y3B1LCZuYnNwO29y Jm5ic3A7YXQmbmJzcDttb3N0Jm5ic3A7MiZuYnNwO3ZjcHVzLjwvRElWPg0KPERJVj4mbmJzcDs8 L0RJVj4NCjxESVY+Rm9yJm5ic3A7Y2xpZW50Jm5ic3A7c3lzdGVtcywmbmJzcDt3ZSZuYnNwO2V4 cGVjdCZuYnNwO3RvJm5ic3A7aGF2ZSZuYnNwOzMtNCZuYnNwO1ZNcyZuYnNwOyhpbmNsdWRpbmcm bmJzcDtkb20wKS48L0RJVj4NCjxESVY+U3lzdGVtcyZuYnNwO3dpbGwmbmJzcDtwcm9iYWJseSZu YnNwO2FodmUmbmJzcDthJm5ic3A7c2luZ2xlJm5ic3A7c29ja2V0Jm5ic3A7d2l0aCZuYnNwOzIm bmJzcDtjb3JlcyZuYnNwO2FuZCZuYnNwO1NNVCZuYnNwOyg0PC9ESVY+DQo8RElWPmxvZ2ljYWwm bmJzcDtjcHVzKS4mbmJzcDsmbmJzcDtNYW55Jm5ic3A7Vk1zJm5ic3A7d2lsbCZuYnNwO2JlJm5i c3A7dXNpbmcmbmJzcDtQQ0kmbmJzcDtwYXNzLXRocm91Z2gmbmJzcDt0byZuYnNwO2FjY2Vzczwv RElWPg0KPERJVj5uZXR3b3JrLCZuYnNwO3ZpZGVvLCZuYnNwO2FuZCZuYnNwO2F1ZGlvJm5ic3A7 Y2FyZHMuJm5ic3A7Jm5ic3A7VGhleSdsbCZuYnNwO2Fsc28mbmJzcDtiZSZuYnNwO3J1bm5pbmcm bmJzcDt2aWRlbyZuYnNwO2FuZDwvRElWPg0KPERJVj5hdWRpbyZuYnNwO3dvcmtsb2FkcywmbmJz cDt3aGljaCZuYnNwO2FyZSZuYnNwO2V4dHJlbWVseSZuYnNwO2xhdGVuY3ktc2Vuc2l0aXZlLjwv RElWPg0KPERJVj4mbmJzcDs8L0RJVj4NCjxESVY+Mi4mbmJzcDtEZXNpZ24mbmJzcDtnb2Fsczwv RElWPg0KPERJVj4mbmJzcDs8L0RJVj4NCjxESVY+Rm9yJm5ic3A7ZWFjaCZuYnNwO29mJm5ic3A7 dGhlJm5ic3A7dGFyZ2V0Jm5ic3A7c3lzdGVtcyZuYnNwO2FuZCZuYnNwO3dvcmtsb2FkcyZuYnNw O2Fib3ZlLCZuYnNwO3dlJm5ic3A7aGF2ZSZuYnNwO3NvbWU8L0RJVj4NCjxESVY+aGlnaC1sZXZl bCZuYnNwO2dvYWxzJm5ic3A7Zm9yJm5ic3A7dGhlJm5ic3A7c2NoZWR1bGVyOjwvRElWPg0KPERJ Vj4mbmJzcDs8L0RJVj4NCjxESVY+KiZuYnNwO0ZhaXJuZXNzLiZuYnNwOyZuYnNwO0luJm5ic3A7 dGhpcyZuYnNwO2NvbnRleHQsJm5ic3A7d2UmbmJzcDtkZWZpbmUmbmJzcDsiZmFpcm5lc3MiJm5i c3A7YXMmbmJzcDt0aGUmbmJzcDthYmlsaXR5Jm5ic3A7dG88L0RJVj4NCjxESVY+Z2V0Jm5ic3A7 Y3B1Jm5ic3A7dGltZSZuYnNwO3Byb3BvcnRpb25hbCZuYnNwO3RvJm5ic3A7d2VpZ2h0LjwvRElW Pg0KPERJVj4mbmJzcDs8L0RJVj4NCjxESVY+V2UmbmJzcDt3YW50Jm5ic3A7dG8mbmJzcDt0cnkm bmJzcDt0byZuYnNwO21ha2UmbmJzcDt0aGlzJm5ic3A7dHJ1ZSZuYnNwO2V2ZW4mbmJzcDtmb3Im bmJzcDtsYXRlbmN5LXNlbnNpdGl2ZSZuYnNwO3dvcmtsb2FkczwvRElWPg0KPERJVj5zdWNoJm5i c3A7YXMmbmJzcDtuZXR3b3JraW5nLCZuYnNwO3doZXJlJm5ic3A7bG9uZyZuYnNwO3NjaGVkdWxp bmcmbmJzcDtsYXRlbmN5Jm5ic3A7Y2FuJm5ic3A7cmVkdWNlJm5ic3A7dGhlPC9ESVY+DQo8RElW PnRocm91Z2hwdXQsJm5ic3A7YW5kJm5ic3A7dGh1cyZuYnNwO3RoZSZuYnNwO3RvdGFsJm5ic3A7 YW1vdW50Jm5ic3A7b2YmbmJzcDt0aW1lJm5ic3A7dGhlJm5ic3A7Vk0mbmJzcDtjYW4mbmJzcDtl ZmZlY3RpdmVseTwvRElWPg0KPERJVj51c2UuPC9ESVY+DQo8RElWPiZuYnNwOzwvRElWPg0KPERJ Vj4qJm5ic3A7R29vZCZuYnNwO3NjaGVkdWxpbmcmbmJzcDtmb3ImbmJzcDtsYXRlbmN5LXNlbnNp dGl2ZSZuYnNwO3dvcmtsb2Fkcy48L0RJVj4NCjxESVY+Jm5ic3A7PC9ESVY+DQo8RElWPlRvJm5i c3A7dGhlJm5ic3A7ZGVncmVlJm5ic3A7d2UmbmJzcDthcmUmbmJzcDthYmxlLCZuYnNwO3dlJm5i c3A7d2FudCZuYnNwO3RoaXMmbmJzcDt0byZuYnNwO2JlJm5ic3A7dHJ1ZSZuYnNwO2V2ZW4mbmJz cDt0aG9zZSZuYnNwO3doaWNoPC9ESVY+DQo8RElWPnVzZSZuYnNwO2EmbmJzcDtzaWduaWZpY2Fu dCZuYnNwO2Ftb3VudCZuYnNwO29mJm5ic3A7Y3B1Jm5ic3A7cG93ZXI6Jm5ic3A7VGhhdCZuYnNw O2lzLCZuYnNwO215Jm5ic3A7YXVkaW8mbmJzcDtzaG91bGRuJ3Q8L0RJVj4NCjxESVY+YnJlYWsm bmJzcDt1cCZuYnNwO2lmJm5ic3A7SSZuYnNwO3N0YXJ0Jm5ic3A7YSZuYnNwO2NwdSZuYnNwO2hv ZyZuYnNwO3Byb2Nlc3MmbmJzcDtpbiZuYnNwO3RoZSZuYnNwO1ZNJm5ic3A7cGxheWluZyZuYnNw O3RoZSZuYnNwO2F1ZGlvLjwvRElWPg0KPERJVj4mbmJzcDs8L0RJVj4NCjxESVY+KiZuYnNwO0hU LWF3YXJlLjwvRElWPg0KPERJVj4mbmJzcDs8L0RJVj4NCjxESVY+UnVubmluZyZuYnNwO29uJm5i c3A7YSZuYnNwO2xvZ2ljYWwmbmJzcDtwcm9jZXNzb3ImbmJzcDt3aXRoJm5ic3A7YW4mbmJzcDtp ZGxlJm5ic3A7cGVlciZuYnNwO3RocmVhZCZuYnNwO2lzJm5ic3A7bm90Jm5ic3A7dGhlPC9ESVY+ DQo8RElWPnNhbWUmbmJzcDthcyZuYnNwO3J1bm5pbmcmbmJzcDtvbiZuYnNwO2EmbmJzcDtsb2dp Y2FsJm5ic3A7cHJvY2Vzc29yJm5ic3A7d2l0aCZuYnNwO2EmbmJzcDtidXN5Jm5ic3A7cGVlciZu YnNwO3RocmVhZC4mbmJzcDsmbmJzcDtUaGU8L0RJVj4NCjxESVY+c2NoZWR1bGVyJm5ic3A7bmVl ZHMmbmJzcDt0byZuYnNwO3Rha2UmbmJzcDt0aGlzJm5ic3A7aW50byZuYnNwO2FjY291bnQmbmJz cDt3aGVuJm5ic3A7ZGVjaWRpbmcmbmJzcDsiZmFpcm5lc3MiLjwvRElWPg0KPERJVj4mbmJzcDs8 L0RJVj4NCjxESVY+KiZuYnNwO1Bvd2VyLWF3YXJlLjwvRElWPg0KPERJVj4mbmJzcDs8L0RJVj4N CjxESVY+VXNpbmcmbmJzcDthcyZuYnNwO21hbnkmbmJzcDtzb2NrZXRzJm5ic3A7LyZuYnNwO2Nv cmVzJm5ic3A7YXMmbmJzcDtwb3NzaWJsZSZuYnNwO2NhbiZuYnNwO2luY3JlYXNlJm5ic3A7dGhl Jm5ic3A7dG90YWwmbmJzcDtjYWNoZTwvRElWPg0KPERJVj5zaXplJm5ic3A7YXZhbGFibGUmbmJz cDt0byZuYnNwO1ZNcywmbmJzcDthbmQmbmJzcDt0aHVzJm5ic3A7KGluJm5ic3A7dGhlJm5ic3A7 YWJzZW5jZSZuYnNwO29mJm5ic3A7aW50ZXItVk0mbmJzcDtzaGFyaW5nKTwvRElWPg0KPERJVj5p bmNyZWFzZSZuYnNwO3RvdGFsJm5ic3A7Y29tcHV0aW5nJm5ic3A7cG93ZXI7Jm5ic3A7YnV0Jm5i c3A7YnkmbmJzcDtrZWVwaW5nJm5ic3A7bXVsdGlwbGUmbmJzcDtzb2NrZXRzJm5ic3A7YW5kPC9E SVY+DQo8RElWPmNvcmVzJm5ic3A7cG93ZXJlZCZuYnNwO3VwLCZuYnNwO2Fsc28mbmJzcDtpbmNy ZWFzZXMmbmJzcDt0aGUmbmJzcDtlbGVjdHJpY2FsJm5ic3A7cG93ZXImbmJzcDt1c2VkJm5ic3A7 YnkmbmJzcDt0aGU8L0RJVj4NCjxESVY+c3lzdGVtLiZuYnNwOyZuYnNwO1dlJm5ic3A7d2FudCZu YnNwO2EmbmJzcDtjb25maWd1cmFibGUmbmJzcDt3YXkmbmJzcDt0byZuYnNwO2JhbGFuY2UmbmJz cDtiZXR3ZWVuJm5ic3A7bWF4aW1pemluZzwvRElWPg0KPERJVj5wcm9jZXNzaW5nJm5ic3A7cG93 ZXImbmJzcDt2cyZuYnNwO21pbmltaXppbmcmbmJzcDtlbGVjdHJpY2FsJm5ic3A7cG93ZXIuPC9E SVY+DQo8RElWPiZuYnNwOzwvRElWPg0KPERJVj4zLiZuYnNwO1RhcmdldCZuYnNwO2ludGVyZmFj ZTo8L0RJVj4NCjxESVY+Jm5ic3A7PC9ESVY+DQo8RElWPlRoZSZuYnNwO3RhcmdldCZuYnNwO2lu dGVyZmFjZSZuYnNwO3dpbGwmbmJzcDtiZSZuYnNwO3NpbWlsYXImbmJzcDt0byZuYnNwO2NyZWRp dDE6PC9ESVY+DQo8RElWPiZuYnNwOzwvRElWPg0KPERJVj4qJm5ic3A7VGhlJm5ic3A7YmFzaWMm bmJzcDt1bml0Jm5ic3A7aXMmbmJzcDt0aGUmbmJzcDtWTSZuYnNwOyJ3ZWlnaHQiLiZuYnNwOyZu YnNwO1doZW4mbmJzcDtjb21wZXRpbmcmbmJzcDtmb3ImbmJzcDtjcHU8L0RJVj4NCjxESVY+cmVz b3VyY2VzLCZuYnNwO1ZNcyZuYnNwO3dpbGwmbmJzcDtnZXQmbmJzcDthJm5ic3A7c2hhcmUmbmJz cDtvZiZuYnNwO3RoZSZuYnNwO3Jlc291cmNlcyZuYnNwO3Byb3BvcnRpb25hbCZuYnNwO3RvJm5i c3A7dGhlaXI8L0RJVj4NCjxESVY+d2VpZ2h0LiZuYnNwOyZuYnNwOyhlLmcuLCZuYnNwO3R3byZu YnNwO2NwdS1ob2cmbmJzcDt3b3JrbG9hZHMmbmJzcDt3aXRoJm5ic3A7d2VpZ2h0cyZuYnNwO29m Jm5ic3A7MjU2Jm5ic3A7YW5kJm5ic3A7NTEyJm5ic3A7d2lsbDwvRElWPg0KPERJVj5nZXQmbmJz cDszMyUmbmJzcDthbmQmbmJzcDs2NyUmbmJzcDtvZiZuYnNwO3RoZSZuYnNwO2NwdSwmbmJzcDty ZXNwZWN0aXZlbHkpLjwvRElWPg0KPERJVj4mbmJzcDs8L0RJVj4NCjxESVY+KiZuYnNwO0FkZGl0 aW9uYWxseSwmbmJzcDt3ZSZuYnNwO3dpbGwmbmJzcDtiZSZuYnNwO2ludHJvZHVjaW5nJm5ic3A7 YSZuYnNwOyJyZXNlcnZhdGlvbiImbmJzcDtvciZuYnNwOyJmbG9vciIuPC9ESVY+DQo8RElWPiZu YnNwOyZuYnNwOyhJJ20mbmJzcDtvcGVuJm5ic3A7dG8mbmJzcDtuYW1lJm5ic3A7Y2hhbmdlcyZu YnNwO29uJm5ic3A7dGhpcyZuYnNwO29uZS4pJm5ic3A7Jm5ic3A7VGhpcyZuYnNwO3dpbGwmbmJz cDtiZSZuYnNwO2EmbmJzcDttaW5pbXVtPC9ESVY+DQo8RElWPiZuYnNwOyZuYnNwO2Ftb3VudCZu YnNwO29mJm5ic3A7Y3B1Jm5ic3A7dGltZSZuYnNwO3RoYXQmbmJzcDthJm5ic3A7Vk0mbmJzcDtj YW4mbmJzcDtnZXQmbmJzcDtpZiZuYnNwO2l0Jm5ic3A7d2FudHMmbmJzcDtpdC48L0RJVj4NCjxE SVY+Jm5ic3A7PC9ESVY+DQo8RElWPkZvciZuYnNwO2V4YW1wbGUsJm5ic3A7b25lJm5ic3A7Y291 bGQmbmJzcDtnaXZlJm5ic3A7ZG9tMCZuYnNwO2EmbmJzcDsicmVzZXJ2YXRpb24iJm5ic3A7b2Ym bmJzcDs1MCUsJm5ic3A7YnV0Jm5ic3A7bGVhdmUmbmJzcDt0aGU8L0RJVj4NCjxESVY+d2VpZ2h0 Jm5ic3A7YXQmbmJzcDsyNTYuJm5ic3A7Jm5ic3A7Tm8mbmJzcDttYXR0ZXImbmJzcDtob3cmbmJz cDttYW55Jm5ic3A7b3RoZXImbmJzcDtWTXMmbmJzcDtydW4mbmJzcDt3aXRoJm5ic3A7YSZuYnNw O3dlaWdodCZuYnNwO29mJm5ic3A7MjU2LDwvRElWPg0KPERJVj5kb20wJm5ic3A7d2lsbCZuYnNw O2JlJm5ic3A7Z3VhcmFudGVlZCZuYnNwO3RvJm5ic3A7Z2V0Jm5ic3A7NTAlJm5ic3A7b2YmbmJz cDtvbmUmbmJzcDtjcHUmbmJzcDtpZiZuYnNwO2l0Jm5ic3A7d2FudHMmbmJzcDtpdC48L0RJVj4N CjxESVY+Jm5ic3A7PC9ESVY+DQo8RElWPiombmJzcDtUaGUmbmJzcDsiY2FwIiZuYnNwO2Z1bmN0 aW9uYWxpdHkmbmJzcDtvZiZuYnNwO2NyZWRpdDEmbmJzcDt3aWxsJm5ic3A7YmUmbmJzcDtyZXRh aW5lZC48L0RJVj4NCjxESVY+Jm5ic3A7PC9ESVY+DQo8RElWPlRoaXMmbmJzcDtpcyZuYnNwO2Em bmJzcDttYXhpbXVtJm5ic3A7YW1vdW50Jm5ic3A7b2YmbmJzcDtjcHUmbmJzcDt0aW1lJm5ic3A7 dGhhdCZuYnNwO2EmbmJzcDtWTSZuYnNwO2NhbiZuYnNwO2dldDombmJzcDtpLmUuLCZuYnNwO2Em bmJzcDtWTTwvRElWPg0KPERJVj53aXRoJm5ic3A7YSZuYnNwO2NhcCZuYnNwO29mJm5ic3A7NTAl Jm5ic3A7d2lsbCZuYnNwO29ubHkmbmJzcDtnZXQmbmJzcDtoYWxmJm5ic3A7b2YmbmJzcDtvbmUm bmJzcDtjcHUsJm5ic3A7ZXZlbiZuYnNwO2lmJm5ic3A7dGhlJm5ic3A7cmVzdCZuYnNwO29mPC9E SVY+DQo8RElWPnRoZSZuYnNwO3N5c3RlbSZuYnNwO2lzJm5ic3A7Y29tcGxldGVseSZuYnNwO2lk bGUuPC9ESVY+DQo8RElWPiZuYnNwOzwvRElWPg0KPERJVj4qJm5ic3A7V2UmbmJzcDt3aWxsJm5i c3A7YWxzbyZuYnNwO2hhdmUmbmJzcDthbiZuYnNwO2ludGVyZmFjZSZuYnNwO3RvJm5ic3A7dGhl Jm5ic3A7Y3B1LXZzLWVsZWN0cmljYWwmbmJzcDtwb3dlci48L0RJVj4NCjxESVY+Jm5ic3A7PC9E SVY+DQo8RElWPlRoaXMmbmJzcDtpcyZuYnNwO3lldCZuYnNwO3RvJm5ic3A7YmUmbmJzcDtkZWZp bmVkLiZuYnNwOyZuYnNwO0F0Jm5ic3A7dGhlJm5ic3A7aHlwZXJ2aXNvciZuYnNwO2xldmVsLCZu YnNwO2l0Jm5ic3A7d2lsbCZuYnNwO3Byb2JhYmx5PC9ESVY+DQo8RElWPmJlJm5ic3A7YSZuYnNw O251bWJlciZuYnNwO3JlcHJlc2VudGluZyZuYnNwO3RoZSZuYnNwOyJiYWRuZXNzIiZuYnNwO29m Jm5ic3A7cG93ZXJpbmcmbmJzcDt1cCZuYnNwO2V4dHJhJm5ic3A7Y3B1cyZuYnNwOy88L0RJVj4N CjxESVY+Y29yZXMuJm5ic3A7Jm5ic3A7QXQmbmJzcDt0aGUmbmJzcDt0b29scyZuYnNwO2xldmVs LCZuYnNwO3RoZXJlJm5ic3A7d2lsbCZuYnNwO3Byb2JhYmx5Jm5ic3A7YmUmbmJzcDt0aGUmbmJz cDtvcHRpb24mbmJzcDtvZjwvRElWPg0KPERJVj5laXRoZXImbmJzcDtzcGVjaWZ5aW5nJm5ic3A7 dGhlJm5ic3A7bnVtYmVyLCZuYnNwO29yJm5ic3A7b2YmbmJzcDt1c2luZyZuYnNwO29uZSZuYnNw O29mJm5ic3A7Mi8zJm5ic3A7cHJlLWRlZmluZWQ8L0RJVj4NCjxESVY+dmFsdWVzJm5ic3A7e3Bv d2VyLCZuYnNwO2JhbGFuY2UsJm5ic3A7Z3JlZW4vYmF0dGVyeX0uPC9ESVY+DQo8RElWPiZuYnNw OzwvRElWPg0KPERJVj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXzwvRElWPg0KPERJVj5YZW4tZGV2ZWwmbmJzcDttYWlsaW5nJm5ic3A7bGlzdDwvRElWPg0K PERJVj5YZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbTwvRElWPg0KPERJVj48QSANCmhyZWY9 Imh0dHA6Ly9saXN0cy54ZW5zb3VyY2UuY29tL3hlbi1kZXZlbCI+aHR0cDovL2xpc3RzLnhlbnNv dXJjZS5jb20veGVuLWRldmVsPC9BPjwvRElWPg0KPERJVj4uPC9ESVY+PC9GT05UPjwvRElWPjwv Qk9EWT48L0hUTUw+DQo= --=====003_Dragon641631112326_=====-- --=====001_Dragon641631112326_===== Content-Type: application/octet-stream; name="sdp-ctl.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sdp-ctl.tar.gz" H4sIAF2eZUkAA+1WbU/bSBDO1+yvmPbKyUEJ2EmcSLRBdxfaijZHpaZ8gigy63Vi1eyi3Q1QVe1v 76zfUgcIooLcnW4fRGzP7Mw8O7MztgovWlQnu7UnhIvo+356Raxe03vP8zr41/e8Xs3FB8+vgf+U pAoslA4kQE0Kodetu0//H4XK6/938JlFccKeIoYpcK/bvbP+/V4/q7/rd91+G+vf9nu9GrhPQWYV //P6D4cDmFFKRgdvRn++HQ+glVwzTrVMyDCXkLevPw2oMJfp+ONwPFB0zsIpnpzpjOkdmio+/PVu VSHI+KaFSi3GNy1UajE6PHoPA3jhDIcN/M1ZNaAl4MUfhARJsgeVKFDxQEhFuYcuCnINUkd/6L5R EVbMzfrxbeuXQkITFvA9IHV5Dq1IrmMD299he0fg/1nwGaiQjJCY43nDXZA6vVix3V0ouXsW8xWV +llFFnzpIWVQ6nYr3tZoTZ7K+hf9v1KhRz1j9/S/1293iv73O77pfxwDXdv/m8BvMafJImTwSukw FjvzfVIRJfFZVZZPByMklyIOYaGCGXOAzgO5DfQcLTiDBvlKAHEhY64jB54fm1V7sKXgJBTnQcyn cTiBE86uprhGyFh/mZzy582lh5epA3Ydawdc8/jNdI8GY+yAuQvkjDbzwHh/eTIp4xr1POBhwpog mc58LVDq9abasFpKOm2UlJxeksweORv38GwAHWgUm0yjuBPDJl1WmuHMcgpnDVBaapHky71JE46O R6NmtovcPTg/Ge+De92PoggaGftK5l5LKWS+GA4PYCvcSRO1NM9TtUxXyytk30hRhoKhScAKw/Zd DI3ZPniuu4ZYUT3DCw5N1hXoOQMZ8BmDE7dp7CcZZePvfrJZ3ZDvNZ1iKCajgLKpuGDcKdhhSTO9 GVh5InBuOWXNy+SUQcuyGttXcPuWMIgMdCw4RAF+DIWFI7iK9TxLPp6/L8CFNuyVVs9u1qJe4U0T oVhBLFUjgYXkuO9i1xUKR+xqmdNYgRnHGKPcwnrnpkke1P835/9s4/O/ix97xfef3/PS+d/z7fzf BP7R+f/rAx8ec+LnbZVJYh4JVJvLLe+C9kbfBfWHvQTqjztQZ3cM1N/XTNT6v2mU5gHTimwtTnU5 VtPHSrDqa2J91IeOWAsLCwsLCwsLCwsLCwsLCwsLCwsLC4uN4wfkQcqKACgAAA== --=====001_Dragon641631112326_===== Content-Type: application/octet-stream; name="sdp_09.1.8.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sdp_09.1.8.patch" ZGlmZiAtciBlMmYzNmQwNjZiN2IgdG9vbHMvbGlieGMvTWFrZWZpbGUKLS0tIGEvdG9vbHMvbGli eGMvTWFrZWZpbGUJTW9uIERlYyAyMiAxMzo0ODo0MCAyMDA4ICswMDAwCisrKyBiL3Rvb2xzL2xp YnhjL01ha2VmaWxlCVRodSBKYW4gMDggMDE6MzI6MDEgMjAwOSAtMDUwMApAQCAtMTcsNiArMTcs NyBAQAogQ1RSTF9TUkNTLXkgICAgICAgKz0geGNfcHJpdmF0ZS5jCiBDVFJMX1NSQ1MteSAgICAg ICArPSB4Y19zZWRmLmMKIENUUkxfU1JDUy15ICAgICAgICs9IHhjX2NzY2hlZC5jCitDVFJMX1NS Q1MteSAgICAgICArPSB4Y19zZHAuYwogQ1RSTF9TUkNTLXkgICAgICAgKz0geGNfdGJ1Zi5jCiBD VFJMX1NSQ1MteSAgICAgICArPSB4Y19wbS5jCiBDVFJMX1NSQ1MteSAgICAgICArPSB4Y19jcHVf aG90cGx1Zy5jCmRpZmYgLXIgZTJmMzZkMDY2YjdiIHRvb2xzL2xpYnhjL3hjX3NkcC5jCi0tLSAv ZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2xpYnhj L3hjX3NkcC5jCVRodSBKYW4gMDggMDE6MzI6MDEgMjAwOSAtMDUwMApAQCAtMCwwICsxLDUzIEBA CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICogKEMpIDIwMDkgLS0gWmhpeXVhbiBTaGFvIC0tIEh1 YXpob25nIFVuaXZlcnMuIG9mIFNjaS4mVGVjaC4gUFJDCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoKKyAqICAgICAgICBGaWxlOiB4Y19zZHAuYworICogICAgICBBdXRob3I6IFpoaXl1YW4gU2hh bworICoKKyAqIERlc2NyaXB0aW9uOiBYQyBJbnRlcmZhY2UgdG8gdGhlIFNEUCBzY2hlZHVsZXIK KyAqCisgKi8KKyNpbmNsdWRlICJ4Y19wcml2YXRlLmgiCisKK2ludAoreGNfc2RwX2RvbWFpbl9z ZXQoCisgICAgaW50IHhjX2hhbmRsZSwKKyAgICB1aW50MzJfdCBkb21pZCwKKyAgICB1aW50MTZf dCBwcmlvcml0eSApCit7CisgICAgREVDTEFSRV9ET01DVEw7CisgICAgc3RydWN0IHhlbl9kb21j dGxfc2NoZWRfc2RwICpwID0gJmRvbWN0bC51LnNjaGVkdWxlcl9vcC51LnNkcDsKKworICAgIGRv bWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3NjaGVkdWxlcl9vcDsKKyAgICBkb21jdGwuZG9tYWluID0g KGRvbWlkX3QpIGRvbWlkOworICAgIGRvbWN0bC51LnNjaGVkdWxlcl9vcC5zY2hlZF9pZCA9IFhF Tl9TQ0hFRFVMRVJfU0RQOworICAgIGRvbWN0bC51LnNjaGVkdWxlcl9vcC5jbWQgPSBYRU5fRE9N Q1RMX1NDSEVET1BfcHV0aW5mbzsKKworICAgIHAtPnByaSA9IHByaW9yaXR5OworCisgICAgcmV0 dXJuIGRvX2RvbWN0bCh4Y19oYW5kbGUsICZkb21jdGwpOworfQorCitpbnQKK3hjX3NkcF9kb21h aW5fZ2V0KAorICAgIGludCB4Y19oYW5kbGUsCisgICAgdWludDMyX3QgZG9taWQsCisgICAgdWlu dDE2X3QgKnByaW9yaXR5KQoreworICAgIERFQ0xBUkVfRE9NQ1RMOworICAgIGludCByZXQ7Cisg ICAgc3RydWN0IHhlbl9kb21jdGxfc2NoZWRfc2RwICpwID0gJmRvbWN0bC51LnNjaGVkdWxlcl9v cC51LnNkcDsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3NjaGVkdWxlcl9vcDsKKyAg ICBkb21jdGwuZG9tYWluID0gKGRvbWlkX3QpIGRvbWlkOworICAgIGRvbWN0bC51LnNjaGVkdWxl cl9vcC5zY2hlZF9pZCA9IFhFTl9TQ0hFRFVMRVJfU0RQOworICAgIGRvbWN0bC51LnNjaGVkdWxl cl9vcC5jbWQgPSBYRU5fRE9NQ1RMX1NDSEVET1BfZ2V0aW5mbzsKKworICAgIHJldCA9IGRvX2Rv bWN0bCh4Y19oYW5kbGUsICZkb21jdGwpOworICAgIGlmICggcmV0ID09IDAgKQorICAgICAgICAq cHJpb3JpdHkgPSBwLT5wcmk7CisKKyAgICByZXR1cm4gcmV0OworfQorCmRpZmYgLXIgZTJmMzZk MDY2YjdiIHRvb2xzL2xpYnhjL3hjX3NlZGYuYwotLS0gYS90b29scy9saWJ4Yy94Y19zZWRmLmMJ TW9uIERlYyAyMiAxMzo0ODo0MCAyMDA4ICswMDAwCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NlZGYu YwlUaHUgSmFuIDA4IDAxOjMyOjAxIDIwMDkgLTA1MDAKQEAgLTYwLDUgKzYwLDYgQEAKICAgICAq bGF0ZW5jeSAgID0gcC0+bGF0ZW5jeTsKICAgICAqZXh0cmF0aW1lID0gcC0+ZXh0cmF0aW1lOwog ICAgICp3ZWlnaHQgICAgPSBwLT53ZWlnaHQ7CisKICAgICByZXR1cm4gcmV0OwogfQpkaWZmIC1y IGUyZjM2ZDA2NmI3YiB0b29scy9saWJ4Yy94ZW5jdHJsLmgKLS0tIGEvdG9vbHMvbGlieGMveGVu Y3RybC5oCU1vbiBEZWMgMjIgMTM6NDg6NDAgMjAwOCArMDAwMAorKysgYi90b29scy9saWJ4Yy94 ZW5jdHJsLmgJVGh1IEphbiAwOCAwMTozMjowMSAyMDA5IC0wNTAwCkBAIC00NDcsNiArNDQ3LDE0 IEBACiBpbnQgeGNfc2NoZWRfY3JlZGl0X2RvbWFpbl9nZXQoaW50IHhjX2hhbmRsZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9zY2hlZF9jcmVkaXQgKnNkb20pOwor CisvL2RlZmluZWQgZm9yIFNEUAoraW50IHhjX3NkcF9kb21haW5fc2V0KCAgaW50IHhjX2hhbmRs ZSwKKwkJCXVpbnQzMl90IGRvbWlkLAorCQkJdWludDE2X3QgcHJpb3JpdHkgKTsKK2ludCB4Y19z ZHBfZG9tYWluX2dldCggIGludCB4Y19oYW5kbGUsCisJCQl1aW50MzJfdCBkb21pZCwKKwkJCXVp bnQxNl90ICpwcmlvcml0eSApOwogCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgYSB0cmln Z2VyIHRvIGEgZG9tYWluLgpkaWZmIC1yIGUyZjM2ZDA2NmI3YiB0b29scy9weXRob24veGVuL2xv d2xldmVsL3hjL3hjLmMKLS0tIGEvdG9vbHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94Yy94Yy5jCU1v biBEZWMgMjIgMTM6NDg6NDAgMjAwOCArMDAwMAorKysgYi90b29scy9weXRob24veGVuL2xvd2xl dmVsL3hjL3hjLmMJVGh1IEphbiAwOCAwMTozMjowMSAyMDA5IC0wNTAwCkBAIC0xMTgwLDcgKzEx ODAsNyBAQAogICAgIHVpbnQxNl90IGV4dHJhdGltZSwgd2VpZ2h0OwogICAgIHN0YXRpYyBjaGFy ICprd2RfbGlzdFtdID0geyAiZG9taWQiLCAicGVyaW9kIiwgInNsaWNlIiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImxhdGVuY3kiLCAiZXh0cmF0aW1lIiwgIndlaWdodCIsTlVM TCB9OwotICAgIAorCiAgICAgaWYoICFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywg a3dkcywgImlMTExoaCIsIGt3ZF9saXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmZG9taWQsICZwZXJpb2QsICZzbGljZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmbGF0ZW5jeSwgJmV4dHJhdGltZSwgJndlaWdodCkgKQpAQCAtMTIxMyw2 ICsxMjEzLDQxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImxhdGVuY3kiLCAgIGxhdGVu Y3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dHJhdGltZSIsIGV4dHJhdGltZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAid2VpZ2h0IiwgICAgd2VpZ2h0KTsKK30KKworc3RhdGlj IFB5T2JqZWN0ICpweXhjX3NjaGVkX3NkcF9kb21haW5fc2V0KFhjT2JqZWN0ICpzZWxmLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0 ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2RfbGlzdFtdID0geyAiZG9taWQiLCAicHJp b3JpdHkiLCBOVUxMIH07CisgICAgdWludDMyX3QgZG9taWQ7CisgICAgdWludDE2X3QgcHJpb3Jp dHk7CisKKyAgICBpZiggIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAi aWgiLCBrd2RfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG9t aWQsICZwcmlvcml0eSkgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICggeGNfc2Rw X2RvbWFpbl9zZXQoc2VsZi0+eGNfaGFuZGxlLCBkb21pZCwgcHJpb3JpdHkpICE9IDAgKQorICAg ICAgICByZXR1cm4gcHl4Y19lcnJvcl90b19leGNlcHRpb24oKTsKKworICAgIFB5X0lOQ1JFRih6 ZXJvKTsKKyAgICByZXR1cm4gemVybzsKK30KKworc3RhdGljIFB5T2JqZWN0ICpweXhjX3NjaGVk X3NkcF9kb21haW5fZ2V0KFhjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1 aW50MzJfdCBkb21pZDsKKyAgICB1aW50MTZfdCBwcmlvcml0eTsKKworICAgIGlmKCAhUHlBcmdf UGFyc2VUdXBsZShhcmdzLCAiaSIsICZkb21pZCkgKQorICAgICAgICByZXR1cm4gTlVMTDsKKwor ICAgIGlmICggeGNfc2RwX2RvbWFpbl9nZXQoc2VsZi0+eGNfaGFuZGxlLCBkb21pZCwgJnByaW9y aXR5KSAhPSAwICkKKyAgICAgICAgcmV0dXJuIHB5eGNfZXJyb3JfdG9fZXhjZXB0aW9uKCk7CisK KyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgie3M6aSxzOkh9IiwKKwkJCSAiZG9taWQiLCAgICAg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgInByaW9yaXR5IiwgIHByaW9yaXR5ICk7 CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqcHl4Y19zaGFkb3dfY29udHJvbChQeU9iamVjdCAqc2Vs ZiwKQEAgLTE3MzYsNiArMTc3MSwyNSBAQAogICAgICAgIlJldHVybnM6ICAgW2RpY3RdXG4iCiAg ICAgICAiIHdlaWdodCAgICBbc2hvcnRdOiBkb21haW4ncyBzY2hlZHVsaW5nIHdlaWdodFxuIn0s CiAKKyAgICB7ICJzY2hlZF9zZHBfZG9tYWluX3NldCIsCisgICAgICAoUHlDRnVuY3Rpb24pcHl4 Y19zY2hlZF9zZHBfZG9tYWluX3NldCwKKyAgICAgIE1FVEhfS0VZV09SRFMsICJcbiIKKyAgICAg ICJTZXQgdGhlIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgYSBkb21haW4gd2hlbiBydW5uaW5n IHdpdGggdGhlXG4iCisgICAgICAiU2ltcGxlIER5bmFtaWMgUHJpb3JpdHkgc2NoZWR1bGVyLlxu IgorICAgICAgIiBkb21pZCAgICAgW2ludF06ICAgZG9tYWluIGlkIHRvIHNldFxuIgorICAgICAg IiBwcmlvcml0eSAgW3Nob3J0XTogZG9tYWluJ3MgcHJpb3JpdHlcbiIKKyAgICAgICJSZXR1cm5z OiBbaW50XSAwIG9uIHN1Y2Nlc3M7IC0xIG9uIGVycm9yLlxuIiB9LAorCisgICAgeyAic2NoZWRf c2RwX2RvbWFpbl9nZXQiLAorICAgICAgKFB5Q0Z1bmN0aW9uKXB5eGNfc2NoZWRfc2RwX2RvbWFp bl9nZXQsCisgICAgICBNRVRIX1ZBUkFSR1MsICJcbiIKKyAgICAgICJHZXQgdGhlIHNjaGVkdWxp bmcgcGFyYW1ldGVycyBmb3IgYSBkb21haW4gd2hlbiBydW5uaW5nIHdpdGggdGhlXG4iCisgICAg ICAiU2ltcGxlIER5bmFtaWMgUHJpb3JpdHkgc2NoZWR1bGVyLlxuIgorICAgICAgIiBkb21pZCAg ICAgW2ludF06ICAgZG9tYWluIGlkIHRvIHF1ZXJ5XG4iCisgICAgICAiUmV0dXJuczogICBbZGlj dF1cbiIKKyAgICAgICIgZG9tYWluICAgIFtpbnRdOiAgIGRvbWFpbklEXG4iCisgICAgICAiIHBy aW9yaXR5ICBbc2hvcnRdOiBkb21haW4ncyBwcmlvcml0eVxuIn0sCisKICAgICB7ICJldnRjaG5f YWxsb2NfdW5ib3VuZCIsIAogICAgICAgKFB5Q0Z1bmN0aW9uKXB5eGNfZXZ0Y2huX2FsbG9jX3Vu Ym91bmQsCiAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCAiXG4iCkBAIC0yMDUx LDYgKzIxMDUsNyBAQAogICAgIC8qIEV4cG9zZSBzb21lIGxpYnhjIGNvbnN0YW50cyB0byBQeXRo b24gKi8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiWEVOX1NDSEVEVUxFUl9TRURG IiwgWEVOX1NDSEVEVUxFUl9TRURGKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAi WEVOX1NDSEVEVUxFUl9DUkVESVQiLCBYRU5fU0NIRURVTEVSX0NSRURJVCk7CisgICAgUHlNb2R1 bGVfQWRkSW50Q29uc3RhbnQobSwgIlhFTl9TQ0hFRFVMRVJfU0RQIiwgWEVOX1NDSEVEVUxFUl9T RFApOwogCiB9CiAKZGlmZiAtciBlMmYzNmQwNjZiN2IgdG9vbHMvcHl0aG9uL3hlbi94ZW5kL1hl bmRDb25maWcucHkKLS0tIGEvdG9vbHMvcHl0aG9uL3hlbi94ZW5kL1hlbmRDb25maWcucHkJTW9u IERlYyAyMiAxMzo0ODo0MCAyMDA4ICswMDAwCisrKyBiL3Rvb2xzL3B5dGhvbi94ZW4veGVuZC9Y ZW5kQ29uZmlnLnB5CVRodSBKYW4gMDggMDE6MzI6MDIgMjAwOSAtMDUwMApAQCAtNTg5LDYgKzU4 OSw4IEBACiAgICAgICAgICAgICBpbnQoc3hwLmNoaWxkX3ZhbHVlKHN4cF9jZmcsICJjcHVfd2Vp Z2h0IiwgMjU2KSkKICAgICAgICAgY2ZnWyJ2Y3B1c19wYXJhbXMiXVsiY2FwIl0gPSBcCiAgICAg ICAgICAgICBpbnQoc3hwLmNoaWxkX3ZhbHVlKHN4cF9jZmcsICJjcHVfY2FwIiwgMCkpCisgICAg ICAgIGNmZ1sidmNwdXNfcGFyYW1zIl1bInByaW9yaXR5Il0gPSBcCisgICAgICAgICAgICBpbnQo c3hwLmNoaWxkX3ZhbHVlKHN4cF9jZmcsICJjcHVfcHJpb3JpdHkiLCA4MCkpCiAKICAgICAgICAg IyBPbmx5IGV4dHJhY3Qgb3B0aW9ucyB3ZSBrbm93IGFib3V0LgogICAgICAgICBleHRyYWN0X2tl eXMgPSBMRUdBQ1lfVU5TVVBQT1JURURfQllfWEVOQVBJX0NGRyArIFwKZGlmZiAtciBlMmYzNmQw NjZiN2IgdG9vbHMvcHl0aG9uL3hlbi94ZW5kL1hlbmREb21haW4ucHkKLS0tIGEvdG9vbHMvcHl0 aG9uL3hlbi94ZW5kL1hlbmREb21haW4ucHkJTW9uIERlYyAyMiAxMzo0ODo0MCAyMDA4ICswMDAw CisrKyBiL3Rvb2xzL3B5dGhvbi94ZW4veGVuZC9YZW5kRG9tYWluLnB5CVRodSBKYW4gMDggMDE6 MzI6MDIgMjAwOSAtMDUwMApAQCAtMTQ1Miw2ICsxNDUyLDggQEAKICAgICAgICAgQHR5cGUgZG9t aWQ6IGludCBvciBzdHJpbmcuCiAgICAgICAgIEBydHlwZTogMAogICAgICAgICAiIiIKKwlwcmlu dCAiZG9tYWluX2NwdV9zZWRmX3NldCBpcyBjYWxsZWQiCisKICAgICAgICAgZG9taW5mbyA9IHNl bGYuZG9tYWluX2xvb2t1cF9ucihkb21pZCkKICAgICAgICAgaWYgbm90IGRvbWluZm86CiAgICAg ICAgICAgICByYWlzZSBYZW5kSW52YWxpZERvbWFpbihzdHIoZG9taWQpKQpAQCAtMTQ4Miw2ICsx NDg0LDQ0IEBACiAgICAgICAgICAgICAgICAgICAgIFsnbGF0ZW5jeScsICAgc2VkZl9pbmZvWyds YXRlbmN5J11dLAogICAgICAgICAgICAgICAgICAgICBbJ2V4dHJhdGltZScsIHNlZGZfaW5mb1sn ZXh0cmF0aW1lJ11dLAogICAgICAgICAgICAgICAgICAgICBbJ3dlaWdodCcsICAgIHNlZGZfaW5m b1snd2VpZ2h0J11dXQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGV4OgorICAgICAgICAg ICAgcmFpc2UgWGVuZEVycm9yKHN0cihleCkpCisKKyAgICBkZWYgZG9tYWluX2NwdV9zZHBfc2V0 KHNlbGYsIGRvbWlkLCBwcmlvcml0eSk6CisgICAgICAgICIiIlNldCBTRFAgc2NoZWR1bGVyIHBh cmFtZXRlcnMgZm9yIGEgZG9tYWluLgorCisgICAgICAgIEBwYXJhbSBkb21pZDogRG9tYWluIElE IG9yIE5hbWUKKyAgICAgICAgQHR5cGUgZG9taWQ6IGludCBvciBzdHJpbmcuCisgICAgICAgIEBy dHlwZTogMAorICAgICAgICAiIiIKKyAgICAgICAgZG9taW5mbyA9IHNlbGYuZG9tYWluX2xvb2t1 cF9ucihkb21pZCkKKyAgICAgICAgaWYgbm90IGRvbWluZm86CisgICAgICAgICAgICByYWlzZSBY ZW5kSW52YWxpZERvbWFpbihzdHIoZG9taWQpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBy ZXR1cm4geGMuc2RwX2RvbWFpbl9zZXQoZG9taW5mby5nZXREb21pZCgpLCBwcmlvcml0eSkKKyAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXg6CisgICAgICAgICAgICByYWlzZSBYZW5kRXJyb3Io c3RyKGV4KSkKKworICAgIGRlZiBkb21haW5fY3B1X3NkcF9nZXQoc2VsZiwgZG9taWQpOgorICAg ICAgICAiIiJHZXQgU0RQIHNjaGVkdWxlciBwYXJhbWV0ZXJzIGZvciBhIGRvbWFpbi4KKworICAg ICAgICBAcGFyYW0gZG9taWQ6IERvbWFpbiBJRCBvciBOYW1lCisgICAgICAgIEB0eXBlIGRvbWlk OiBpbnQgb3Igc3RyaW5nLgorICAgICAgICBAcnR5cGU6IFNYUCBvYmplY3QKKyAgICAgICAgQHJl dHVybjogVGhlIHBhcmFtZXRlcnMgZm9yIHNkcCBzY2hlZHVsZXIgZm9yIGEgZG9tYWluLgorICAg ICAgICAiIiIKKwlwcmludCAiZG9tYWluX2NwdV9zZHBfZ2V0IGlzIGNhbGxlZCIKKworICAgICAg ICBkb21pbmZvID0gc2VsZi5kb21haW5fbG9va3VwX25yKGRvbWlkKQorICAgICAgICBpZiBub3Qg ZG9taW5mbzoKKyAgICAgICAgICAgIHJhaXNlIFhlbmRJbnZhbGlkRG9tYWluKHN0cihkb21pZCkp CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNkcF9pbmZvID0geGMuc2RwX2RvbWFpbl9nZXQo ZG9taW5mby5nZXREb21pZCgpKQorICAgICAgICAgICAgIyByZXR1cm4gc3hwcgorICAgICAgICAg ICAgcmV0dXJuIFsnc2RwJywKKyAgICAgICAgICAgICAgICAgICAgWydkb21pZCcsICAgIHNkcF9p bmZvWydkb21pZCddXSwKKyAgICAgICAgICAgICAgICAgICAgWydwcmlvcml0eScsIHNkcF9pbmZv Wydwcmlvcml0eSddXV0KIAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBleDoKICAgICAgICAg ICAgIHJhaXNlIFhlbmRFcnJvcihzdHIoZXgpKQpAQCAtMTUyOSw2ICsxNTY5LDYwIEBACiAgICAg ICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiB4Yy5zaGFkb3dfbWVtX2NvbnRyb2woZG9taW5m by5nZXREb21pZCgpLCBtYj1tYikKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXg6CisgICAg ICAgICAgICByYWlzZSBYZW5kRXJyb3Ioc3RyKGV4KSkKKworICAgIGRlZiBkb21haW5fc2NoZWRf c2RwX2dldChzZWxmLCBkb21pZCk6CisgICAgICAgICIiIkdldCBzZHAgc2NoZWR1bGVyIHBhcmFt ZXRlcnMgZm9yIGEgZG9tYWluLgorCisgICAgICAgIEBwYXJhbSBkb21pZDogRG9tYWluIElEIG9y IE5hbWUKKyAgICAgICAgQHR5cGUgZG9taWQ6IGludCBvciBzdHJpbmcuCisgICAgICAgIEBydHlw ZTogZGljdCB3aXRoIGtleXMgJ3ByaW9yaXR5JworICAgICAgICBAcmV0dXJuOiBzZHAgc2NoZWR1 bGVyIHBhcmFtZXRlcnMKKyAgICAgICAgIiIiCisgICAgICAgIGRvbWluZm8gPSBzZWxmLmRvbWFp bl9sb29rdXBfbnIoZG9taWQpCisgICAgICAgIGlmIG5vdCBkb21pbmZvOgorICAgICAgICAgICAg cmFpc2UgWGVuZEludmFsaWREb21haW4oc3RyKGRvbWlkKSkKKworICAgICAgICBpZiBkb21pbmZv Ll9zdGF0ZUdldCgpIGluIChET01fU1RBVEVfUlVOTklORywgRE9NX1NUQVRFX1BBVVNFRCk6Cisg ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHhjLnhjX3NkcF9kb21haW5f Z2V0KGRvbWluZm8uZ2V0RG9taWQoKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGV4 OgorICAgICAgICAgICAgICAgIHJhaXNlIFhlbmRFcnJvcihzdHIoZXgpKQorICAgICAgICBlbHNl OgorICAgICAgICAgICAgcmV0dXJuIHsncHJpb3JpdHknIDogZG9taW5mby5nZXRQcmkoKX0KKwor ICAgIGRlZiBkb21haW5fc2NoZWRfc2RwX3NldChzZWxmLCBkb21pZCwgcHJpb3JpdHkgPSBOb25l KToKKyAgICAgICAgIiIiU2V0IHNkcCBzY2hlZHVsZXIgcGFyYW1ldGVycyBmb3IgYSBkb21haW4u CisKKyAgICAgICAgQHBhcmFtIGRvbWlkOiBEb21haW4gSUQgb3IgTmFtZQorICAgICAgICBAdHlw ZSBkb21pZDogaW50IG9yIHN0cmluZy4KKyAgICAgICAgQHR5cGUgcHJpb3JpdHk6IGludAorICAg ICAgICBAcnR5cGU6IDAKKyAgICAgICAgIiIiCisgICAgICAgIHNldF9wcmlvcml0eSA9IEZhbHNl CisgICAgICAgIGRvbWluZm8gPSBzZWxmLmRvbWFpbl9sb29rdXBfbnIoZG9taWQpCisgICAgICAg IGlmIG5vdCBkb21pbmZvOgorICAgICAgICAgICAgcmFpc2UgWGVuZEludmFsaWREb21haW4oc3Ry KGRvbWlkKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgcHJpb3JpdHkgaXMgTm9uZToK KyAgICAgICAgICAgICAgICBwcmlvcml0eSA9IGludCg4MCkKKyAgICAgICAgICAgIGVsaWYgcHJp b3JpdHkgPCAwIG9yIHByaW9yaXR5ID4gMTAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFhlbmRF cnJvcigicHJpb3JpdHkgaXMgb3V0IG9mIHJhbmdlIikKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgc2V0X3ByaW9yaXR5ID0gVHJ1ZQorCisgICAgICAgICAgICBhc3NlcnQgdHlw ZShwcmlvcml0eSkgPT0gaW50CisKKyAgICAgICAgICAgIHJjID0gMAorICAgICAgICAgICAgaWYg ZG9taW5mby5fc3RhdGVHZXQoKSBpbiAoRE9NX1NUQVRFX1JVTk5JTkcsIERPTV9TVEFURV9QQVVT RUQpOgorICAgICAgICAgICAgICAgIHJjID0geGMueGNfc2RwX2RvbWFpbl9zZXQoZG9taW5mby5n ZXREb21pZCgpLCBwcmlvcml0eSkKKyAgICAgICAgICAgIGlmIHJjID09IDA6CisgICAgICAgICAg ICAgICAgaWYgc2V0X3ByaW9yaXR5OgorICAgICAgICAgICAgICAgICAgICBkb21pbmZvLnNldFBy aShwcmlvcml0eSkKKyAgICAgICAgICAgICAgICBzZWxmLm1hbmFnZWRfY29uZmlnX3NhdmUoZG9t aW5mbykKKyAgICAgICAgICAgIHJldHVybiByYworICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl eDoKKyAgICAgICAgICAgIGxvZy5leGNlcHRpb24oZXgpCiAgICAgICAgICAgICByYWlzZSBYZW5k RXJyb3Ioc3RyKGV4KSkKIAogICAgIGRlZiBkb21haW5fc2NoZWRfY3JlZGl0X2dldChzZWxmLCBk b21pZCk6CmRpZmYgLXIgZTJmMzZkMDY2YjdiIHRvb2xzL3B5dGhvbi94ZW4veGVuZC9YZW5kTm9k ZS5weQotLS0gYS90b29scy9weXRob24veGVuL3hlbmQvWGVuZE5vZGUucHkJTW9uIERlYyAyMiAx Mzo0ODo0MCAyMDA4ICswMDAwCisrKyBiL3Rvb2xzL3B5dGhvbi94ZW4veGVuZC9YZW5kTm9kZS5w eQlUaHUgSmFuIDA4IDAxOjMyOjAyIDIwMDkgLTA1MDAKQEAgLTU1NSw2ICs1NTUsOCBAQAogICAg ICAgICAgICAgcmV0dXJuICdzZWRmJwogICAgICAgICBlbGlmIHNjaGVkX2lkID09IHhlbi5sb3ds ZXZlbC54Yy5YRU5fU0NIRURVTEVSX0NSRURJVDoKICAgICAgICAgICAgIHJldHVybiAnY3JlZGl0 JworICAgICAgICBlbGlmIHNjaGVkX2lkID09IHhlbi5sb3dsZXZlbC54Yy5YRU5fU0NIRURVTEVS X1NEUDoKKyAgICAgICAgICAgIHJldHVybiAnc2RwJwogICAgICAgICBlbHNlOgogICAgICAgICAg ICAgcmV0dXJuICd1bmtub3duJwogCkBAIC03MTQsNiArNzE2LDggQEAKICAgICAgICAgICAgIHJl dHVybiAnc2VkZicKICAgICAgICAgZWxpZiBzY2hlZF9pZCA9PSB4ZW4ubG93bGV2ZWwueGMuWEVO X1NDSEVEVUxFUl9DUkVESVQ6CiAgICAgICAgICAgICByZXR1cm4gJ2NyZWRpdCcKKyAgICAgICAg ZWxpZiBzY2hlZF9pZCA9PSB4ZW4ubG93bGV2ZWwueGMuWEVOX1NDSEVEVUxFUl9TRFA6CisgICAg ICAgICAgICByZXR1cm4gJ3NkcCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiAn dW5rbm93bicKIApkaWZmIC1yIGUyZjM2ZDA2NmI3YiB0b29scy9weXRob24veGVuL3hlbmQvc2Vy dmVyL1NydkRvbWFpbi5weQotLS0gYS90b29scy9weXRob24veGVuL3hlbmQvc2VydmVyL1NydkRv bWFpbi5weQlNb24gRGVjIDIyIDEzOjQ4OjQwIDIwMDggKzAwMDAKKysrIGIvdG9vbHMvcHl0aG9u L3hlbi94ZW5kL3NlcnZlci9TcnZEb21haW4ucHkJVGh1IEphbiAwOCAwMTozMjowMiAyMDA5IC0w NTAwCkBAIC0xMzYsNiArMTM2LDggQEAKIAogCiAgICAgZGVmIG9wX2NwdV9zZWRmX3NldChzZWxm LCBfLCByZXEpOgorCXByaW50ICJvcF9jcHVfc2VkZl9zZXQgaXMgY2FsbGVkIgorCiAgICAgICAg IGZuID0gRm9ybUZuKHNlbGYueGQuZG9tYWluX2NwdV9zZWRmX3NldCwKICAgICAgICAgICAgICAg ICAgICAgW1snZG9tJywgJ2ludCddLAogICAgICAgICAgICAgICAgICAgICAgWydwZXJpb2QnLCAn aW50J10sCkBAIC0xNDUsNyArMTQ3LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICBbJ3dlaWdo dCcsICdpbnQnXV0pCiAgICAgICAgIHZhbCA9IGZuKHJlcS5hcmdzLCB7J2RvbSc6IHNlbGYuZG9t LmRvbWlkfSkKICAgICAgICAgcmV0dXJuIHZhbAotICAgIAorCisgICAgZGVmIG9wX2NwdV9zZHBf Z2V0KHNlbGYsIF8sIHJlcSk6CisJcHJpbnQgIm9wX2NwdV9zZHBfZ2V0IGlzIGNhbGxlZCIKKwor ICAgICAgICBmbiA9IEZvcm1GbihzZWxmLnhkLmRvbWFpbl9jcHVfc2RwX2dldCwKKyAgICAgICAg ICAgICAgICAgICAgW1snZG9tJywgJ2ludCddXSkKKyAgICAgICAgdmFsID0gZm4ocmVxLmFyZ3Ms IHsnZG9tJzogc2VsZi5kb20uZG9taWR9KQorICAgICAgICByZXR1cm4gdmFsCisKKworICAgIGRl ZiBvcF9jcHVfc2RwX3NldChzZWxmLCBfLCByZXEpOgorICAgICAgICBmbiA9IEZvcm1GbihzZWxm LnhkLmRvbWFpbl9jcHVfc2RwX3NldCwKKyAgICAgICAgICAgICAgICAgICAgW1snZG9tJywgJ2lu dCddLAorICAgICAgICAgICAgICAgICAgICAgWydwcmlvcml0eScsICdpbnQnXV0pCisgICAgICAg IHZhbCA9IGZuKHJlcS5hcmdzLCB7J2RvbSc6IHNlbGYuZG9tLmRvbWlkfSkKKyAgICAgICAgcmV0 dXJuIHZhbAorIAogICAgIGRlZiBvcF9kb21haW5fc2NoZWRfY3JlZGl0X2dldChzZWxmLCBfLCBy ZXEpOgogICAgICAgICBmbiA9IEZvcm1GbihzZWxmLnhkLmRvbWFpbl9zY2hlZF9jcmVkaXRfZ2V0 LAogICAgICAgICAgICAgICAgICAgICBbWydkb20nLCAnc3RyJ11dKQpkaWZmIC1yIGUyZjM2ZDA2 NmI3YiB0b29scy9weXRob24veGVuL3htL21haW4ucHkKLS0tIGEvdG9vbHMvcHl0aG9uL3hlbi94 bS9tYWluLnB5CU1vbiBEZWMgMjIgMTM6NDg6NDAgMjAwOCArMDAwMAorKysgYi90b29scy9weXRo b24veGVuL3htL21haW4ucHkJVGh1IEphbiAwOCAwMTozMjowMiAyMDA5IC0wNTAwCkBAIC0xNTIs NiArMTUyLDcgQEAKICAgICAnc2NoZWQtc2VkZicgIDogKCc8RG9tYWluPiBbb3B0aW9uc10nLCAn R2V0L3NldCBFREYgcGFyYW1ldGVycy4nKSwKICAgICAnc2NoZWQtY3JlZGl0JzogKCdbLWQgPERv bWFpbj4gWy13Wz1XRUlHSFRdfC1jWz1DQVBdXV0nLAogICAgICAgICAgICAgICAgICAgICAgJ0dl dC9zZXQgY3JlZGl0IHNjaGVkdWxlciBwYXJhbWV0ZXJzLicpLAorICAgICdzY2hlZC1zZHAnICAg OiAoJzxEb21haW4+IFtvcHRpb25zXScsICdHZXQvc2V0IFNEUCBwYXJhbWV0ZXJzLicpLAogICAg ICdzeXNycScgICAgICAgOiAoJzxEb21haW4+IDxsZXR0ZXI+JywgJ1NlbmQgYSBzeXNycSB0byBh IGRvbWFpbi4nKSwKICAgICAnZGVidWcta2V5cycgIDogKCc8S2V5cz4nLCAnU2VuZCBkZWJ1ZyBr ZXlzIHRvIFhlbi4nKSwKICAgICAndHJpZ2dlcicgICAgIDogKCc8RG9tYWluPiA8bm1pfHJlc2V0 fGluaXR8czNyZXN1bWU+IFs8VkNQVT5dJywKQEAgLTIzNSw2ICsyMzYsMTAgQEAKICAgICAgICAg J0ZsYWcgKDAgb3IgMSkgY29udHJvbHMgaWYgZG9tYWluIGNhbiBydW4gaW4gZXh0cmEgdGltZS4n KSwKICAgICAgICAoJy13IFtGTE9BVF0nLCAnLS13ZWlnaHRbPUZMT0FUXScsCiAgICAgICAgICdD UFUgUGVyaW9kL3NsaWNlIChkbyBub3Qgc2V0IHdpdGggLS1wZXJpb2QvLS1zbGljZSknKSwKKyAg ICApLAorICAgICdzY2hlZC1zZHAnOiAoCisgICAgICAgKCctZCBET01BSU4nLCAnLS1kb21haW49 RE9NQUlOJywgJ0RvbWFpbiB0byBtb2RpZnknKSwKKyAgICAgICAoJy1wIFBSSU9SSVRZJywgJy0t cHJpb3JpdHk9UFJJT1JJVFknLCAnUmVsYXRpdmUgUHJpb3JpdHlbMCwxMDBdKGludCknKSwKICAg ICApLAogICAgICdzY2hlZC1jcmVkaXQnOiAoCiAgICAgICAgKCctZCBET01BSU4nLCAnLS1kb21h aW49RE9NQUlOJywgJ0RvbWFpbiB0byBtb2RpZnknKSwKQEAgLTM2MCw2ICszNjUsNyBAQAogc2No ZWR1bGVyX2NvbW1hbmRzID0gWwogICAgICJzY2hlZC1jcmVkaXQiLAogICAgICJzY2hlZC1zZWRm IiwKKyAgICAic2NoZWQtc2RwIiwKICAgICBdCiAKIGRldmljZV9jb21tYW5kcyA9IFsKQEAgLTk1 NSw2ICs5NjEsMTUgQEAKICAgICAgICAgJ2xhdGVuY3knICA6IGdldF9pbmZvKCdsYXRlbmN5Jywg ICAgICAgaW50LCAgIC0xKSwKICAgICAgICAgJ2V4dHJhdGltZSc6IGdldF9pbmZvKCdleHRyYXRp bWUnLCAgICAgaW50LCAgIC0xKSwKICAgICAgICAgJ3dlaWdodCcgICA6IGdldF9pbmZvKCd3ZWln aHQnLCAgICAgICAgaW50LCAgIC0xKSwKKyAgICAgICAgfQorCitkZWYgcGFyc2Vfc2RwX2luZm8o aW5mbyk6CisgICAgZGVmIGdldF9pbmZvKG4sIHQsIGQpOgorICAgICAgICByZXR1cm4gdChzeHAu Y2hpbGRfdmFsdWUoaW5mbywgbiwgZCkpCisKKyAgICByZXR1cm4geworICAgICAgICAnZG9taWQn ICAgIDogZ2V0X2luZm8oJ2RvbWlkJywgICAgICAgICBpbnQsICAgLTEpLAorICAgICAgICAncHJp b3JpdHknIDogZ2V0X2luZm8oJ3ByaW9yaXR5JywgICAgICBpbnQsICAgLTEpLAogICAgICAgICB9 CiAKIGRlZiBkb21pZF9tYXRjaChkb21pZCwgaW5mbyk6CkBAIC0xNTQ0LDcgKzE1NTksNiBAQAog ICAgICAgICBwcmludCAnJS0zM3MgJTRzICUtNHMgJS00cyAlLTdzICUtNXMgJS02cycgJSBcCiAg ICAgICAgICAgICAgICgnTmFtZScsJ0lEJywnUGVyaW9kKG1zKScsICdTbGljZShtcyknLCAnTGF0 KG1zKScsCiAgICAgICAgICAgICAgICAnRXh0cmEnLCdXZWlnaHQnKQotICAgIAogICAgIGZvciBk IGluIGRvbXM6CiAgICAgICAgICMgZmV0Y2ggY3VycmVudCB2YWx1ZXMgc28gYXMgbm90IHRvIGNs b2JiZXIgdGhlbQogICAgICAgICB0cnk6CkBAIC0xNTcxLDYgKzE1ODUsNzYgQEAKICAgICAgICAg IyBub3Qgc2V0dGluZyB2YWx1ZXMsIGRpc3BsYXkgaW5mbwogICAgICAgICBlbHNlOgogICAgICAg ICAgICAgcHJpbnRfc2VkZihzZWRmX2luZm8pCisKK2RlZiB4bV9zY2hlZF9zZHAoYXJncyk6Cisg ICAgeGVuYXBpX3Vuc3VwcG9ydGVkKCkKKworICAgIGRlZiBwcmludF9zZHAoaW5mbyk6CisgICAg ICAgIGluZm9bJ3ByaW9yaXR5J10gID0gaW5mb1sncHJpb3JpdHknXQorICAgICAgICBwcmludCgg KCIlKG5hbWUpLTMycyAlKGRvbWlkKTVkICUocHJpb3JpdHkpNWQiKSAlIGluZm8pCisKKyAgICBj aGVja19zY2hlZF90eXBlKCdzZHAnKQorCisgICAgIyB3ZSB3YW50IHRvIGp1c3QgZGlzcGxheSBj dXJyZW50IGluZm8gaWYgbm8gcGFyYW1ldGVycyBhcmUgcGFzc2VkCisgICAgaWYgbGVuKGFyZ3Mp ID09IDA6CisgICAgICAgIGRvbWlkID0gTm9uZQorICAgIGVsc2U6CisgICAgICAgICMgd2UgZXhw ZWN0IGF0IGxlYXN0IGEgZG9tYWluIGlkIChuYW1lIG9yIG51bWJlcikKKyAgICAgICAgIyBhbmQg YXQgbW9zdCBhIGRvbWlkIHVwIHRvIDUgb3B0aW9ucyB3aXRoIHZhbHVlcworICAgICAgICBhcmdf Y2hlY2soYXJncywgInNjaGVkLXNkcCIsIDEsIDEwKQorICAgICAgICBkb21pZCA9IGFyZ3NbMF0K KyAgICAgICAgIyBkcm9wIGRvbWlkIGZyb20gYXJncyBzaW5jZSBnZXRfb3B0IGRvZXNuJ3QgcmVj b2duaXplIGl0CisgICAgICAgIGFyZ3MgPSBhcmdzWzE6XQorCisgICAgb3B0cyA9IHt9CisgICAg dHJ5OgorICAgICAgICAob3B0aW9ucywgcGFyYW1zKSA9IGdldG9wdC5nbnVfZ2V0b3B0KGFyZ3Ms ICdwJywgWydwcmlvcml0eT0nXSkKKyAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yLCBvcHRl cnI6CisgICAgICAgIGVycihvcHRlcnIpCisgICAgICAgIHVzYWdlKCdzY2hlZC1zZHAnKQorCisg ICAgIyBjb252ZXJ0IHRvIG5hbm9zZWNvbmRzIGlmIG5lZWRlZAorICAgIGZvciAoaywgdikgaW4g b3B0aW9uczoKKyAgICAgICAgaWYgayBpbiBbJy1wJywgJy0tcHJpb3JpdHknXToKKyAgICAgICAg ICAgIG9wdHNbJ3ByaW9yaXR5J10gPSB2CisKKyAgICBkb21zID0gZmlsdGVyKGxhbWJkYSB4IDog ZG9taWRfbWF0Y2goZG9taWQsIHgpLAorICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2Rv bXNfaW5mbyhkb20pCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRvbSBpbiBnZXREb21h aW5zKE5vbmUsICdydW5uaW5nJyldKQorICAgIGlmIGRvbWlkIGlzIG5vdCBOb25lIGFuZCBkb21z ID09IFtdOgorICAgICAgICBlcnIoIkRvbWFpbiAnJXMnIGRvZXMgbm90IGV4aXN0LiIgJSBkb21p ZCkKKyAgICAgICAgdXNhZ2UoJ3NjaGVkLXNkcCcpCisKKyAgICAjIHByaW50IGhlYWRlciBpZiB3 ZSBhcmVuJ3Qgc2V0dGluZyBhbnkgcGFyYW1ldGVycworICAgIGlmIGxlbihvcHRzLmtleXMoKSkg PT0gMDoKKyAgICAgICAgcHJpbnQgJyUtMzNzICU0cyAlLTRzJyAlIFwKKyAgICAgICAgICAgICAg KCdOYW1lJywnSUQnLCdQcmlvcml0eScpCisKKyAgICBmb3IgZCBpbiBkb21zOgorICAgICAgICAj IGZldGNoIGN1cnJlbnQgdmFsdWVzIHNvIGFzIG5vdCB0byBjbG9iYmVyIHRoZW0KKyAgICAgICAg dHJ5OgorICAgICAgICAgICAgc2RwX3JhdyA9IHNlcnZlci54ZW5kLmRvbWFpbi5jcHVfc2RwX2dl dChkWydkb21pZCddKQorICAgICAgICBleGNlcHQgeG1scnBjbGliLkZhdWx0OgorICAgICAgICAg ICAgIyBkb21haW4gZG9lcyBub3Qgc3VwcG9ydCBzY2hlZC1zZHA/CisJICAgIHByaW50ICJzZWVt cyBwbGF0ZnJvbSBkb2VzIG5vdCBzdXBwb3J0IHNjaGVkLXNkcCIKKyAgICAgICAgICAgIHNkcF9y YXcgPSB7fQorCisgICAgICAgIHNkcF9pbmZvID0gcGFyc2Vfc2RwX2luZm8oc2RwX3JhdykKKyAg ICAgICAgc2RwX2luZm9bJ25hbWUnXSA9IGRbJ25hbWUnXQorICAgICAgICAjIHVwZGF0ZSB2YWx1 ZXMgaW4gY2FzZSBvZiBjYWxsIHRvIHNldAorICAgICAgICBpZiBsZW4ob3B0cy5rZXlzKCkpID4g MDoKKyAgICAgICAgICAgIGZvciBrIGluIG9wdHMua2V5cygpOgorICAgICAgICAgICAgICAgIHNk cF9pbmZvW2tdPW9wdHNba10KKworICAgICAgICAgICAgIyBzZW5kIHRoZSB1cGRhdGUsIGNvbnZl cnRpbmcgdXNlciBpbnB1dAorICAgICAgICAgICAgdiA9IG1hcChpbnQsIFtzZHBfaW5mb1sncHJp b3JpdHknXV0pCisgICAgICAgICAgICBydiA9IHNlcnZlci54ZW5kLmRvbWFpbi5jcHVfc2RwX3Nl dChkWydkb21pZCddLCAqdikKKyAgICAgICAgICAgIGlmIGludChydikgIT0gMDoKKyAgICAgICAg ICAgICAgICBlcnIoIkZhaWxlZCB0byBzZXQgc2RwIHBhcmFtZXRlcnMgKHJ2PSVkKS4iJShydikp CisKKyAgICAgICAgIyBub3Qgc2V0dGluZyB2YWx1ZXMsIGRpc3BsYXkgaW5mbworICAgICAgICBl bHNlOgorICAgICAgICAgICAgcHJpbnRfc2RwKHNkcF9pbmZvKQogCiBkZWYgeG1fc2NoZWRfY3Jl ZGl0KGFyZ3MpOgogICAgICIiIkdldC9TZXQgb3B0aW9ucyBmb3IgQ3JlZGl0IFNjaGVkdWxlci4i IiIKQEAgLTI4MjUsNiArMjkwOSw3IEBACiAgICAgIyBzY2hlZHVsZXIKICAgICAic2NoZWQtc2Vk ZiI6IHhtX3NjaGVkX3NlZGYsCiAgICAgInNjaGVkLWNyZWRpdCI6IHhtX3NjaGVkX2NyZWRpdCwK KyAgICAic2NoZWQtc2RwIjogeG1fc2NoZWRfc2RwLAogICAgICMgYmxvY2sKICAgICAiYmxvY2st YXR0YWNoIjogeG1fYmxvY2tfYXR0YWNoLAogICAgICJibG9jay1kZXRhY2giOiB4bV9ibG9ja19k ZXRhY2gsCmRpZmYgLXIgZTJmMzZkMDY2YjdiIHhlbi9jb21tb24vTWFrZWZpbGUKLS0tIGEveGVu L2NvbW1vbi9NYWtlZmlsZQlNb24gRGVjIDIyIDEzOjQ4OjQwIDIwMDggKzAwMDAKKysrIGIveGVu L2NvbW1vbi9NYWtlZmlsZQlUaHUgSmFuIDA4IDAxOjMyOjAyIDIwMDkgLTA1MDAKQEAgLTEzLDYg KzEzLDcgQEAKIG9iai15ICs9IHJhbmdlc2V0Lm8KIG9iai15ICs9IHNjaGVkX2NyZWRpdC5vCiBv YmoteSArPSBzY2hlZF9zZWRmLm8KK29iai15ICs9IHNjaGVkX3NkcC5vCiBvYmoteSArPSBzY2hl ZHVsZS5vCiBvYmoteSArPSBzaHV0ZG93bi5vCiBvYmoteSArPSBzb2Z0aXJxLm8KZGlmZiAtciBl MmYzNmQwNjZiN2IgeGVuL2NvbW1vbi9zY2hlZF9zZHAuYwotLS0gL2Rldi9udWxsCVRodSBKYW4g MDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi94ZW4vY29tbW9uL3NjaGVkX3NkcC5jCVRodSBK YW4gMDggMDE6MzI6MDIgMjAwOSAtMDUwMApAQCAtMCwwICsxLDczNiBAQAorLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqIChDKSAyMDA4LTIwMDkgWmhpeXVhbiBTaGFvLCBIdWF6aG9uZyBVbml2ZXJz aXR5IG9mIFNjaS4mVGVjaC4gUFJDCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICAgICAg ICBGaWxlOiBjb21tb24vc2NoZWRfc2RwLmMKKyAqICAgICAgQXV0aG9yOiBaaGl5dWFuIFNoYW8K KyAqCisgKiBEZXNjcmlwdGlvbjogU2NoZWR1bGVyIGZvciBDbGllbnQgVmlydHVhbGl6YXRpb24K KyAqLworCisjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cisj aW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhl bi9kb21haW4uaD4KKyNpbmNsdWRlIDx4ZW4vZGVsYXkuaD4KKyNpbmNsdWRlIDx4ZW4vZXZlbnQu aD4KKyNpbmNsdWRlIDx4ZW4vdGltZS5oPgorI2luY2x1ZGUgPHhlbi9wZXJmYy5oPgorI2luY2x1 ZGUgPHhlbi9zY2hlZC1pZi5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CisjaW5jbHVkZSA8 YXNtL2F0b21pYy5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorCisvKgorIFRoZSBNYXJjb3Mg dG8gYmUgdXNlZAorKi8KKyNkZWZpbmUgU0RQX01TRUNTX1BFUl9USUNLICAgICAgIDEwCisjZGVm aW5lIFNEUF9NU0VDU19QRVJfVFNMSUNFCSAxMAorCisjZGVmaW5lIFNEUF9QQ1BVKF9jKSAgICAg XAorICAgICgoc3RydWN0IHNkcF9wY3B1ICopcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBfYykuc2No ZWRfcHJpdikKKyNkZWZpbmUgU0RQX0RPTShfZG9tKSAgICAoKHN0cnVjdCBzZHBfZG9tICopIChf ZG9tKS0+c2NoZWRfcHJpdikKKyNkZWZpbmUgU0RQX1ZDUFUoX3ZjcHUpICAoKHN0cnVjdCBzZHBf dmNwdSAqKSAoX3ZjcHUpLT5zY2hlZF9wcml2KQorCisjZGVmaW5lIFNEUF9QUklfSURMRSAJCTAK KyNkZWZpbmUgU0RQX0JPTlVTX0lETEUJCS0xMDI0CisKKyNkZWZpbmUgU0RQX1BSSV9ERUZBVUxU CQk4MAorI2RlZmluZSBTRFBfQk9OVVNfREVGQVVMVAkwCisKKyNkZWZpbmUgUlVOUShfY3B1KSAg ICAgICAgICAoJihTRFBfUENQVShfY3B1KS0+cnVucSkpCisKKworLyoKKyAqIFBoeXNpY2FsIENQ VQorICovCitzdHJ1Y3Qgc2RwX3BjcHUgeworICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVucTsKKyAg ICB1aW50MzJfdCBydW5xX3NvcnRfbGFzdDsKKyAgICBzdHJ1Y3QgdGltZXIgdGlja2VyOworICAg IHVuc2lnbmVkIGludCB0aWNrOworfTsKKworLyoKKyAqIERvbWFpbgorICovCitzdHJ1Y3Qgc2Rw X2RvbSB7CisgICAgc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfdmNwdTsKKyAgICBzdHJ1Y3QgbGlz dF9oZWFkIGFjdGl2ZV9zZG9tX2VsZW07CisgICAgc3RydWN0IGRvbWFpbiAqZG9tOworICAgIHVp bnQxNl90IHByaTsKKyAgICB1aW50MTZfdCBhY3RpdmVfdmNwdV9jb3VudDsKK307CisKKy8qCisg KiBWaXJ0dWFsIENQVQorICovCisvL0kgYWRkZWQgYSBib251cyBmaWVsZCB0byB0aGUgc2NoZWR1 bGUgdmNwdSBzdHJ1Y3R1cmUuCisvLyB0aGUgaW50ZW50aW9uIGlzIGV4cGxhaW5lZCBhcyBmb2xs b3dzOgorLy8gaWYgdGhlIHZjcHUgaXMgYWN0dWFsbHkgd29rZW4gdXAsIGl0IHdpbGwgaGFzIHNv bWUgYm9udXMsIAorLy8gdGhhdCBpcyBNSUxMU0VDKHNkcF92Y3B1LT5wcmkgLSBTRFBfUFJJX0RF RkFVTFQpLgorLy8gYW5kIHRoZSBydW5xdWV1ZSBpcyBhY3R1YWxseSBzb3J0ZWQgYnkgdGhpcyBi b251cyBmaWVsZCwgbm90IHRoZSBwcmlvcml0eSBmaWVsZCEKKy8vIGlmIHRoZSB2Y3B1IGlzIHNj aGVkdWxlZCBvdXQsIGl0cyBib251cyB2YWx1ZSB3aWxsIGJlIHN1YnN0cmFjdGVkIHdpdGggaXRz IHJfdGltZQorLy8gdGlsbCBpdCBiZWNvbWVzIGFudGhlciB6ZXJvIGFnYWluLgorCisvL3J1bGVz IG9mIHdha2UgdXA6CisvLyBpZiB0aGUgbmV3bHkgd2FrZSBoYXMgbG93ZXIgcHJpb3JpdHkgdGhh biBjdXJyZW50LCBpdCB3aWxsIE5PVCBwcmVlbXB0OworLy8gaWYgdGhlIG5ld2x5IHdha2UgaGFz IGhpZ2hlciBwcmlvcml0eSB0aGFuIGN1cnJlbnQsIGl0IHByZWVtcHQKK3N0cnVjdCBzZHBfdmNw dSB7CisgICAgc3RydWN0IGxpc3RfaGVhZCBydW5xX2VsZW07CisgICAgc3RydWN0IGxpc3RfaGVh ZCBhY3RpdmVfdmNwdV9lbGVtOworICAgIHN0cnVjdCBzZHBfZG9tICpzZG9tOworICAgIHN0cnVj dCB2Y3B1ICp2Y3B1OworICAgIHVpbnQxNl90IGZsYWdzOworICAgIHVpbnQxNl90IHByaTsKKyAg ICBzMzIJICAgYm9udXM7Cit9OworCisvKgorICogU3lzdGVtLXdpZGUgcHJpdmF0ZSBkYXRhCisg Ki8KK3N0cnVjdCBzZHBfcHJpdmF0ZSB7CisgICAgc3BpbmxvY2tfdCBsb2NrOworICAgIHN0cnVj dCBsaXN0X2hlYWQgYWN0aXZlX3Nkb207CisgICAgdWludDMyX3QgbmNwdXM7CisgICAgdW5zaWdu ZWQgaW50IG1hc3RlcjsKKyAgICBjcHVtYXNrX3QgaWRsZXJzOworICAgIC8vaWYgcmVzb3J0X2Jl Zm9yZV9zY2hlZF9uZWVkZWQgPSAxLCAKKyAgICAvLyByZXNvcnQgaXQgYmVmb3JlIHNjaGVkdWxp bmcsIGFuZCBzZXQgaXQgYmFjayB0byAwCisgICAgc2hvcnQgcmVzb3J0X2JlZm9yZV9zY2hlZF9u ZWVkZWQ7Cit9OworCisvKgorICogR2xvYmFsIHZhcmlhYmxlcworICovCitzdGF0aWMgc3RydWN0 IHNkcF9wcml2YXRlIHNkcF9wcml2OworCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09IFV0aWxpdHkgcm91dGluZXMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0gKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfX2N5Y2xlX2NwdShpbnQgY3B1LCBjb25z dCBjcHVtYXNrX3QgKm1hc2spCit7CisgICAgaW50IG54dCA9IG5leHRfY3B1KGNwdSwgKm1hc2sp OworICAgIGlmIChueHQgPT0gTlJfQ1BVUykKKyAgICAgICAgbnh0ID0gZmlyc3RfY3B1KCptYXNr KTsKKyAgICByZXR1cm4gbnh0OworfQorCitzdGF0aWMgaW5saW5lIGludAorX192Y3B1X29uX3J1 bnEoc3RydWN0IHNkcF92Y3B1ICpzdmMpCit7CisgICAgcmV0dXJuICFsaXN0X2VtcHR5KCZzdmMt PnJ1bnFfZWxlbSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHNkcF92Y3B1ICoKK19fcnVu cV9lbGVtKHN0cnVjdCBsaXN0X2hlYWQgKmVsZW0pCit7CisgICAgcmV0dXJuIGxpc3RfZW50cnko ZWxlbSwgc3RydWN0IHNkcF92Y3B1LCBydW5xX2VsZW0pOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQKK19fcnVucV9pbnNlcnQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IHNkcF92Y3B1ICpzdmMp Cit7CisgICAgY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqIGNvbnN0IHJ1bnEgPSBSVU5RKGNwdSk7 CisgICAgc3RydWN0IHNkcF92Y3B1ICogaXRlcl9zdmM7CisgICAgc3RydWN0IGxpc3RfaGVhZCAq aXRlcjsKKworICAgIEJVR19PTiggX192Y3B1X29uX3J1bnEoc3ZjKSApOworICAgIEJVR19PTigg Y3B1ICE9IHN2Yy0+dmNwdS0+cHJvY2Vzc29yICk7CisKKyAgICBsaXN0X2Zvcl9lYWNoKCBpdGVy LCBydW5xICkKKyAgICB7CisgICAgICAgIGl0ZXJfc3ZjID0gX19ydW5xX2VsZW0oaXRlcik7Cisg ICAgICAgIGlmICggc3ZjLT5ib251cyA+IGl0ZXJfc3ZjLT5ib251cyApCisgICAgICAgICAgICBi cmVhazsKKyAgICB9CisKKyAgICBsaXN0X2FkZF90YWlsKCZzdmMtPnJ1bnFfZWxlbSwgaXRlcik7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX19ydW5xX3JlbW92ZShzdHJ1Y3Qgc2RwX3ZjcHUg KnN2YykKK3sKKyAgICBCVUdfT04oICFfX3ZjcHVfb25fcnVucShzdmMpICk7CisgICAgbGlzdF9k ZWxfaW5pdCgmc3ZjLT5ydW5xX2VsZW0pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19fcnVu cV90aWNrbGUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IHNkcF92Y3B1ICpuZXcpCit7CisgICAg c3RydWN0IHNkcF92Y3B1ICogY29uc3QgY3VyID0KKyAgICAgICAgU0RQX1ZDUFUocGVyX2NwdShz Y2hlZHVsZV9kYXRhLCBjcHUpLmN1cnIpOworICAgIGNwdW1hc2tfdCBtYXNrOworCisgICAgQVNT RVJUKGN1cik7CisgICAgY3B1c19jbGVhcihtYXNrKTsKKworICAgIC8qIElmIHN0cmljdGx5IGhp Z2hlciBwcmlvcml0eSB0aGFuIGN1cnJlbnQgVkNQVSwgc2lnbmFsIHRoZSBDUFUgKi8KKyAgICBp ZiAoIG5ldy0+cHJpID4gY3VyLT5wcmkgKQorICAgIHsKKy8vCXByaW50ayggInJlYWR5IHRvIGNh bGwgc2NoZWR1bGluZyBwcm9jZWR1cmUgb24gY3B1OiVkXG4iLCBjcHUgKTsKKyAgICAgICAgY3B1 X3NldChjcHUsIG1hc2spOworICAgIH0KKy8vICAgIGVsc2V7CisvLwlwcmludGsoICJidXQgYXQg Y3B1ICVkIG5ldy0+cHJpPD1jdXItPnByaSwgbmV3LT5wcmk9JWQsIG5ldy0+ZG9taWQ9JWQsIG5l dy0+dmNwdWlkPSVkXG4iLAorLy8JICAgIGNwdSwgbmV3LT5wcmksIG5ldy0+dmNwdS0+ZG9tYWlu LT5kb21haW5faWQsIG5ldy0+dmNwdS0+dmNwdV9pZCApOworLy8JcHJpbnRrKCAiY3VyLT5wcmk9 JWQsIGN1ci0+ZG9taWQ9JWQsIGN1ci0+dmNwdWlkPSVkXG4iLAorLy8JICAgIGN1ci0+cHJpLCBj dXItPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkLCBjdXItPnZjcHUtPnZjcHVfaWQgKTsKKy8vICAg IH0KKworICAgIC8qIFNlbmQgc2NoZWR1bGVyIGludGVycnVwdHMgdG8gZGVzaWduYXRlZCBDUFVz ICovCisgICAgaWYgKCAhY3B1c19lbXB0eShtYXNrKSApCisgICAgICAgIGNwdW1hc2tfcmFpc2Vf c29mdGlycShtYXNrLCBTQ0hFRFVMRV9TT0ZUSVJRKTsKK30KKy8qCitzdGF0aWMgdm9pZAorc2Rw X3RpY2sodm9pZCAqX2NwdSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gKHVuc2lnbmVkIGxv bmcpX2NwdTsKKyAgICBzdHJ1Y3Qgc2RwX3BjcHUgKnNwYyA9IFNEUF9QQ1BVKGNwdSk7CisKKyAg ICBzcGMtPnRpY2srKzsKKworICAgIHNldF90aW1lcigmc3BjLT50aWNrZXIsIE5PVygpICsgTUlM TElTRUNTKFNEUF9NU0VDU19QRVJfVElDSykpOworfQorKi8KK3N0YXRpYyBpbnQKK3NkcF9wY3B1 X2luaXQoIGludCBjcHUgKQoreworICAgIHN0cnVjdCBzZHBfcGNwdSAqc3BjOworICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7CisKKy8vICAgIHByaW50ayggInNkcF9wY3B1X2luaXQgaXMgY2FsbGVk LCBjcHUgPSAlZC5cbiIsIGNwdSApOworCisgICAgLyogQWxsb2NhdGUgcGVyLVBDUFUgaW5mbyAq LworICAgIHNwYyA9IHhtYWxsb2Moc3RydWN0IHNkcF9wY3B1KTsKKyAgICBpZiAoIHNwYyA9PSBO VUxMICkgIHJldHVybiAtRU5PTUVNOworCisgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnNkcF9wcml2 LmxvY2ssIGZsYWdzKTsKKworICAgIC8qIEluaXRpYWxpemUvdXBkYXRlIHN5c3RlbS13aWRlIGNv bmZpZyAqLworICAgIGlmICggc2RwX3ByaXYubmNwdXMgPD0gY3B1ICkKKyAgICAgICAgc2RwX3By aXYubmNwdXMgPSBjcHUgKyAxOworICAgIGlmICggc2RwX3ByaXYubWFzdGVyID49IHNkcF9wcml2 Lm5jcHVzICkKKyAgICAgICAgc2RwX3ByaXYubWFzdGVyID0gY3B1OworCisvLyAgICBpbml0X3Rp bWVyKCZzcGMtPnRpY2tlciwgc2RwX3RpY2ssICh2b2lkICopKHVuc2lnbmVkIGxvbmcpY3B1LCBj cHUpOworICAgIElOSVRfTElTVF9IRUFEKCZzcGMtPnJ1bnEpOworICAgIHBlcl9jcHUoc2NoZWR1 bGVfZGF0YSwgY3B1KS5zY2hlZF9wcml2ID0gc3BjOworCisgICAgLyogU3RhcnQgb2ZmIGlkbGlu Zy4uLiAqLworICAgIEJVR19PTighaXNfaWRsZV92Y3B1KHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwg Y3B1KS5jdXJyKSk7CisgICAgY3B1X3NldChjcHUsIHNkcF9wcml2LmlkbGVycyk7CisKKyAgICBz cGluX3VubG9ja19pcnFyZXN0b3JlKCZzZHBfcHJpdi5sb2NrLCBmbGFncyk7CisKKy8vICAgIHBy aW50ayggInNkcF9wY3B1X2luaXQgcmV0dXJuZWQuXG4iICk7CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQKK3NkcF9kdW1wX3ZjcHUoc3RydWN0IHNkcF92Y3B1ICpzdmMpCit7Cisg ICAgc3RydWN0IHNkcF9kb20gKiBjb25zdCBzZG9tID0gc3ZjLT5zZG9tOworCisgICAgcHJpbnRr KCJbJWkuJWldIHByaT0laSBmbGFncz0leCBjcHU9JWkgYm9udXM9JWQiLAorICAgICAgICAgICAg c3ZjLT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZCwKKyAgICAgICAgICAgIHN2Yy0+dmNwdS0+dmNw dV9pZCwKKyAgICAgICAgICAgIHN2Yy0+cHJpLAorICAgICAgICAgICAgc3ZjLT5mbGFncywKKyAg ICAgICAgICAgIHN2Yy0+dmNwdS0+cHJvY2Vzc29yLAorCSAgICBzdmMtPmJvbnVzICk7CisKKyAg ICBpZiAoIHNkb20gKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCIgcHJpb3JpdHk9JWQiLCBzZG9t LT5wcmkgKTsKKyAgICB9CisKKyAgICBwcmludGsoIlxuIik7Cit9CisKKy8vcmVzb3J0IHRoZSBy dW5xLiBub3RlLCB0aGUgaXRlbXMgaGVyZSBpcyBzb3J0ZWQgYnkgdXNpbmcgdGhlIGJvbnVzIGZp ZWxkCisvLyB3ZSB1c2UgYnViYmxlIHNvcnRpbmcgYWxnb3JpdGhtIGhlcmUKK3N0YXRpYyB2b2lk CitzZHBfcnVucV9yZXNvcnQoIHVuc2lnbmVkIGludCBjcHUgKQoreworICAgIHN0cnVjdCBzZHBf cGNwdSAqIGNvbnN0IHNwYyA9IFNEUF9QQ1BVKGNwdSk7CisgICAgc3RydWN0IGxpc3RfaGVhZCAq cnVucSwgKmVsZW0sICpmb2xsb3c7CisgICAgc3RydWN0IHNkcF92Y3B1ICpzdmNfZWxlbSwgKnN2 Y19mb2xsb3c7CisgICAgaW50IGksIHN3YXBwZWQ7CisKKyAgICBydW5xID0gJnNwYy0+cnVucTsK KyAgICBlbGVtID0gcnVucS0+bmV4dDsKKworICAgIGZvciggaT0wOyBpPDEwOyBpKyspeworCS8v YWxsb3cgZm9yIDEwIHRpbWVzIG9mIHNjYW5uaW5nIGhlcmUuCisJc3dhcHBlZCA9IDA7CisJd2hp bGUgKCBlbGVtICE9IHJ1bnEgKQorICAgIAl7CisJICAgIGZvbGxvdyA9IGVsZW07CisJICAgIGVs ZW0gPSBlbGVtLT5uZXh0OworCSAgICBpZiAoZWxlbSA9PSBydW5xICkgYnJlYWs7CisKKwkgICAg Ly9jb21wYXJlIHRoZSB0d28gc3ZjCisgICAgICAgICAgICBzdmNfZWxlbSA9IF9fcnVucV9lbGVt KGVsZW0pOworCSAgICBzdmNfZm9sbG93ID0gX19ydW5xX2VsZW0oZm9sbG93KTsKKwkKKwkgICAg aWYoIHN2Y19lbGVtLT5ib251cyA+IHN2Y19mb2xsb3ctPmJvbnVzICl7CisJCS8vc3dhcCB0aGUg dHdvCisJCXByaW50ayggIlNXQVAgcnVubmluZyBxdWV1ZS4gcHJpLT5kb21pZDolZCB2Y3B1aWQ6 JWQgYm9udXM6JWRcdCIsCisJCSAgIHN2Y19mb2xsb3ctPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lk LCBzdmNfZm9sbG93LT52Y3B1LT52Y3B1X2lkLCBzdmNfZm9sbG93LT5ib251cyApOworCQlwcmlu dGsoICJuZXh0OiBkb21pZDolZCwgdmNwdWlkOiVkLCBib251czolZFxuIiwKKwkJICAgc3ZjX2Vs ZW0tPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkLCBzdmNfZWxlbS0+dmNwdS0+dmNwdV9pZCwgc3Zj X2VsZW0tPmJvbnVzICk7CisJCWxpc3RfZGVsKCBlbGVtICk7CisJCWxpc3RfYWRkX3RhaWwoIGVs ZW0sIGZvbGxvdyApOworCQlzd2FwcGVkID0gMTsKKwkJYnJlYWs7CisJICAgIH0KKyAgICAJfQor CisJaWYgKCBzd2FwcGVkID09IDAgKSBicmVhazsKKyAgICB9CisvLyAgICBpZiggaT4wICkKKy8v CXByaW50ayggIj09PT09PT09PT09PT09PXNkcF9ydW5xX3Jlc29ydDogc29ydGVkIGZvciAlZCB0 aW1lcz09PVxuIiwgaSApOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSBFeHBvc2VkIHJvdXRpbmVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ICovCitzdGF0aWMgaW50CitzZHBfZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZG9tKQorewor ICAgIHN0cnVjdCBzZHBfZG9tICpzZG9tOworCisvLyAgICBwcmludGsoICJzZHBfZG9tX2luaXQg aXMgY2FsbGVkXG4iICk7CisKKyAgICBpZiAoIGlzX2lkbGVfZG9tYWluKGRvbSkgKQorICAgICAg ICByZXR1cm4gMDsKKworICAgIHNkb20gPSB4bWFsbG9jKHN0cnVjdCBzZHBfZG9tKTsKKyAgICBp ZiAoIHNkb20gPT0gTlVMTCApICByZXR1cm4gLUVOT01FTTsKKworICAgIC8qIEluaXRpYWxpemUg Ki8KKyAgICBJTklUX0xJU1RfSEVBRCgmc2RvbS0+YWN0aXZlX3ZjcHUpOworICAgIHNkb20tPmFj dGl2ZV92Y3B1X2NvdW50ID0gMDsKKyAgICBJTklUX0xJU1RfSEVBRCgmc2RvbS0+YWN0aXZlX3Nk b21fZWxlbSk7CisgICAgc2RvbS0+ZG9tID0gZG9tOworICAgIHNkb20tPnByaSA9IFNEUF9QUklf REVGQVVMVDsgLy9zZXQgYSBkZWZhdWx0IHZhbHVlIGZvciBsYXRlciBjaGFuZ2UKKyAgICBkb20t PnNjaGVkX3ByaXYgPSBzZG9tOworCisgICAgLy9qb2luIHRoZSBzY2hlZHVsaW5nIGFueXdheSwg YWRkIHRvIHNkcF9wcml2CisgICAgLy8gYWN0dWFsbHksIGl0IGRvZXMgbm90IG1hdHRlciBpZiBp dCBqb2luIHNkcF9wcml2LCBidXQgaXQgbWF5IHdvcmtzCisgICAgLy8gaWYgbGF0ZXIsIHdlIGZp bmQgYSBnbG9iYWwgYWRqdXN0bWVudCBtZWNoYW5pc20gaXMgbmVlZGVkLgorICAgIGxpc3RfYWRk KCZzZG9tLT5hY3RpdmVfc2RvbV9lbGVtLCAmc2RwX3ByaXYuYWN0aXZlX3Nkb20pOworCisgICAg cmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitzZHBfZG9tX2Rlc3Ryb3koc3RydWN0IGRvbWFp biAqZG9tKQoreworICAgIHN0cnVjdCBzZHBfZG9tICpzZG9tID0gU0RQX0RPTShkb20pOyAvL05v dGUsIHNkb209PU5VTEwgZm9yIElETEUgZG9tYWluIQorCisgICAgbGlzdF9kZWwoICZzZG9tLT5h Y3RpdmVfc2RvbV9lbGVtICk7CisgICAgeGZyZWUoU0RQX0RPTShkb20pKTsKK30KKworc3RhdGlj IGludAorc2RwX3ZjcHVfaW5pdChzdHJ1Y3QgdmNwdSAqdmMpCit7CisgICAgc3RydWN0IGRvbWFp biAqIGNvbnN0IGRvbSA9IHZjLT5kb21haW47CisgICAgc3RydWN0IHNkcF9kb20gKnNkb20gPSBT RFBfRE9NKGRvbSk7IC8vTm90ZSwgc2RvbT09TlVMTCBmb3IgSURMRSBkb21haW4hCisgICAgc3Ry dWN0IHNkcF92Y3B1ICpzdmM7CisKKy8vICAgIHByaW50ayggInNkcF92Y3B1X2luaXQgaXMgY2Fs bGVkLCBwcm9jZXNzb3I6JWRcbiIsIHZjLT5wcm9jZXNzb3IgKTsKKy8vICAgIHByaW50ayggImRv bWlkOiVkIHZjcHVpZDolZFxuIiwgZG9tLT5kb21haW5faWQsIHZjLT52Y3B1X2lkICk7CisKKyAg ICAvKiBBbGxvY2F0ZSBwZXItVkNQVSBpbmZvICovCisgICAgc3ZjID0geG1hbGxvYyhzdHJ1Y3Qg c2RwX3ZjcHUpOworICAgIGlmICggc3ZjID09IE5VTEwgKSAgIHJldHVybiAtRU5PTUVNOworCisg ICAgSU5JVF9MSVNUX0hFQUQoJnN2Yy0+cnVucV9lbGVtKTsKKyAgICBJTklUX0xJU1RfSEVBRCgm c3ZjLT5hY3RpdmVfdmNwdV9lbGVtKTsKKyAgICBzdmMtPnNkb20gPSBzZG9tOworICAgIHN2Yy0+ dmNwdSA9IHZjOworICAgIHN2Yy0+cHJpID0gaXNfaWRsZV9kb21haW4oZG9tKSA/IFNEUF9QUklf SURMRSA6IHNkb20tPnByaTsKKyAgICB2Yy0+c2NoZWRfcHJpdiA9IHN2YzsKKworICAgIC8vam9p biB0aGUgc2RvbSBub3cuIGl0IGlzIHVzZWZ1bCwgc2luY2UgdGhlIHByaW9yaXR5IHZhbHVlIG1h eSBjaGFuZ2UKKyAgICAvLyBpZiBkb21jdGwgaHlwZXJjYWxsIGlzIG1hZGUgbGF0ZXIuIGhvd2V2 ZXIsIGFzIGlkbGUgZG9tYWluIGhhcyBubworICAgIC8vIHN1Y2ggc2RvbSwgbGVhdmUgaXQKKyAg ICBpZiAoIHN2Yy0+cHJpICE9IFNEUF9QUklfSURMRSApeworCXN2Yy0+Ym9udXMgPSBTRFBfQk9O VVNfREVGQVVMVDsKKyAgICAgICAgbGlzdF9hZGQoJnN2Yy0+YWN0aXZlX3ZjcHVfZWxlbSwgJnNk b20tPmFjdGl2ZV92Y3B1KTsKKwlzZG9tLT5hY3RpdmVfdmNwdV9jb3VudCsrOwkKKwkvL25vdCBh Y3RpdmVkLCBidXQgYWxzbyBpbmNyZWFzZSBpdCBieSBvbmUuCisJLy8gbGF0ZXIsIHdlIHNob3Vs ZCBjaGFuZ2UgaXQgYSBiZXR0ZXIgbmFtZSwgc3VjaCBhcyB2Y3B1X2NvdW50CisgICAgfWVsc2UK KwlzdmMtPmJvbnVzID0gU0RQX0JPTlVTX0lETEU7CisKKyAgICAvKiBBbGxvY2F0ZSBwZXItUENQ VSBpbmZvICovCisgICAgaWYgKCB1bmxpa2VseSghU0RQX1BDUFUodmMtPnByb2Nlc3NvcikpICkK KyAgICAgICAgaWYgKCBzZHBfcGNwdV9pbml0KHZjLT5wcm9jZXNzb3IpICE9IDAgKQorICAgICAg ICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitzZHBf dmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2YykKK3sKKyAgICBzdHJ1Y3Qgc2RwX3ZjcHUgKiBj b25zdCBzdmMgPSBTRFBfVkNQVSh2Yyk7CisgICAgc3RydWN0IHNkcF9kb20gKiBjb25zdCBzZG9t ID0gc3ZjLT5zZG9tOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKy8vICAgIHByaW50aygg InNkcF92Y3B1X2Rlc3Ryb3kgaXMgY2FsbGVkXG4iICk7CisKKyAgICBCVUdfT04oIHNkb20gPT0g TlVMTCApOworICAgIEJVR19PTiggIWxpc3RfZW1wdHkoJnN2Yy0+cnVucV9lbGVtKSApOworCisg ICAgc3Bpbl9sb2NrX2lycXNhdmUoJnNkcF9wcml2LmxvY2ssIGZsYWdzKTsKKworICAgIGlmICgg IWxpc3RfZW1wdHkoJnN2Yy0+YWN0aXZlX3ZjcHVfZWxlbSkgKQorCWxpc3RfZGVsKCAmc3ZjLT5h Y3RpdmVfdmNwdV9lbGVtICk7CisKKy8vICAgIGlmICggIWxpc3RfZW1wdHkoJnN2Yy0+YWN0aXZl X3ZjcHVfZWxlbSkgKQorLy8gICAgICAgIF9fY3NjaGVkX3ZjcHVfYWNjdF9zdG9wX2xvY2tlZChz dmMpOworCisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2RwX3ByaXYubG9jaywgZmxhZ3Mp OworCisgICAgeGZyZWUoc3ZjKTsKKworfQorCitzdGF0aWMgdm9pZAorc2RwX3ZjcHVfc2xlZXAo c3RydWN0IHZjcHUgKnZjKQoreworICAgIHN0cnVjdCBzZHBfdmNwdSAqIGNvbnN0IHN2YyA9IFNE UF9WQ1BVKHZjKTsKKworLy8gICAgcHJpbnRrKCAic2RwX3ZjcHVfc2xlZXAgaXMgY2FsbGVkXG4i ICk7CisKKyAgICBCVUdfT04oIGlzX2lkbGVfdmNwdSh2YykgKTsKKworICAgIGlmICggcGVyX2Nw dShzY2hlZHVsZV9kYXRhLCB2Yy0+cHJvY2Vzc29yKS5jdXJyID09IHZjICkKKyAgICAgICAgY3B1 X3JhaXNlX3NvZnRpcnEodmMtPnByb2Nlc3NvciwgU0NIRURVTEVfU09GVElSUSk7CisgICAgZWxz ZSBpZiAoIF9fdmNwdV9vbl9ydW5xKHN2YykgKQorICAgICAgICBfX3J1bnFfcmVtb3ZlKHN2Yyk7 Cit9CisKKy8vcnVsZXMgb2Ygd2FrZSB1cDoKKy8vIGlmIHRoZSBuZXdseSB3YWtlIGhhcyBsb3dl ciBwcmlvcml0eSB0aGFuIGN1cnJlbnQsIGl0IHdpbGwgTk9UIHByZWVtcHQ7CisvLyBpZiB0aGUg bmV3bHkgd2FrZSBoYXMgaGlnaGVyIHByaW9yaXR5IHRoYW4gY3VycmVudCwgaXQgcHJlZW1wdAor c3RhdGljIHZvaWQKK3NkcF92Y3B1X3dha2Uoc3RydWN0IHZjcHUgKnZjKQoreworICAgIHN0cnVj dCBzZHBfdmNwdSAqIGNvbnN0IHN2YyA9IFNEUF9WQ1BVKHZjKTsKKyAgICBjb25zdCB1bnNpZ25l ZCBpbnQgY3B1ID0gdmMtPnByb2Nlc3NvcjsKKworLy8gICAgcHJpbnRrKCAic2RwX3ZjcHVfd2Fr ZSBpcyBjYWxsZWQsIHdva2VuIHZjcHUgaWQ6JWQgZG9tYWluaWQ6JWQsIHdha2UgcG9pbnQ6JWRc biIsIAorLy8JdmMtPnZjcHVfaWQsIHZjLT5kb21haW4tPmRvbWFpbl9pZCwgY3B1ICk7CisKKyAg ICBCVUdfT04oIGlzX2lkbGVfdmNwdSh2YykgKTsKKworICAgIGlmICggdW5saWtlbHkocGVyX2Nw dShzY2hlZHVsZV9kYXRhLCBjcHUpLmN1cnIgPT0gdmMpICkKKyAgICB7CisJc3Bpbl9sb2NrX2ly cSgmc2RwX3ByaXYubG9jayk7CisJaWYoIHN2Yy0+cHJpID4gU0RQX1BSSV9ERUZBVUxUICkKKwkg ICAgc3ZjLT5ib251cyA9IE1JTExJU0VDUyggc3ZjLT5wcmkgLSBTRFBfUFJJX0RFRkFVTFQgKTsK KwllbHNlCisJICAgIHN2Yy0+Ym9udXMgPSAwOworCXNwaW5fdW5sb2NrX2lycSgmc2RwX3ByaXYu bG9jayk7CisJLy9ubyBuZWVkIHRvIHByZWVtcHQgc2luY2UgaXQgaXMgcnVubmluZworICAgICAg ICByZXR1cm47CisgICAgfQorICAgIGlmICggdW5saWtlbHkoX192Y3B1X29uX3J1bnEoc3ZjKSkg KQorICAgIHsKKyAgICAgICAgc3Bpbl9sb2NrX2lycSgmc2RwX3ByaXYubG9jayk7CisgICAgICAg IGlmKCBzdmMtPnByaSA+IFNEUF9QUklfREVGQVVMVCApeworICAgICAgICAgICAgc3ZjLT5ib251 cyA9IE1JTExJU0VDUyggc3ZjLT5wcmkgLSBTRFBfUFJJX0RFRkFVTFQgKTsKKyAgICAgICAgICAg IHNkcF9wcml2LnJlc29ydF9iZWZvcmVfc2NoZWRfbmVlZGVkID0gMTsKKy8vCSAgICBwcmludGso ICJ3YWtlIG9uIHJ1bnEsIGF0ICVkIFBDUFUsIGRvbWlkOiVkIHZjcHVpZDolZCwgcmVzb3J0IG5l ZWRlZC5cbiIsCisvLwkJY3B1LCB2Yy0+ZG9tYWluLT5kb21haW5faWQsIHZjLT52Y3B1X2lkICk7 CisgICAgICAgIH1lbHNlCisJICAgIHN2Yy0+Ym9udXMgPSAwOworICAgICAgICBzcGluX3VubG9j a19pcnEoJnNkcF9wcml2LmxvY2spOworCisJaWYoIHN2Yy0+cHJpID4gU0RQX1ZDUFUocGVyX2Nw dShzY2hlZHVsZV9kYXRhLCBjcHUpLmN1cnIpLT5wcmkgKQorCSAgICBfX3J1bnFfdGlja2xlKGNw dSwgc3ZjKTsKKwkvL25lZWQgdG8gY29uc2lkZXIgcHJlZW1wdGlvbgorICAgICAgICByZXR1cm47 CisgICAgfQorCisgICAgaWYoIHN2Yy0+cHJpID4gU0RQX1BSSV9ERUZBVUxUICkKKyAgICAgICAg c3ZjLT5ib251cyA9IE1JTExJU0VDUyggc3ZjLT5wcmkgLSBTRFBfUFJJX0RFRkFVTFQgKTsKKyAg ICBlbHNlCisJc3ZjLT5ib251cyA9IDA7CisKKyAgICAvKiBQdXQgdGhlIFZDUFUgb24gdGhlIHJ1 bnEgYW5kIHRpY2tsZSBDUFVzICovCisgICAgX19ydW5xX2luc2VydChjcHUsIHN2Yyk7CisKKyAg ICBpZiggc3ZjLT5wcmkgPiBTRFBfVkNQVShwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSkuY3Vy ciktPnByaSApCisgICAgICAgIF9fcnVucV90aWNrbGUoY3B1LCBzdmMpOworfQorCitzdGF0aWMg aW50CitzZHBfZG9tX2NudGwoCisgICAgc3RydWN0IGRvbWFpbiAqZCwKKyAgICBzdHJ1Y3QgeGVu X2RvbWN0bF9zY2hlZHVsZXJfb3AgKm9wKQoreworICAgIHN0cnVjdCBzZHBfZG9tICogY29uc3Qg c2RvbSA9IFNEUF9ET00oZCk7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAgIHN0cnVj dCBsaXN0X2hlYWQgKml0ZXJfdmNwdSwgKm5leHRfdmNwdTsKKyAgICBzdHJ1Y3Qgc2RwX3ZjcHUg KiBzdmM7CisKKy8vICAgIHByaW50ayggInNkcF9kb21fY250bCBpcyBjYWxsZWRcbiIgKTsKKwor ICAgIGlmICggb3AtPmNtZCA9PSBYRU5fRE9NQ1RMX1NDSEVET1BfZ2V0aW5mbyApCisgICAgewor Ly8JcHJpbnRrKCAicmV0dXJuIHByaW9yaXR5OiVkXG4iLCBzZG9tLT5wcmkgKTsKKyAgICAgICAg b3AtPnUuc2RwLnByaSA9IHNkb20tPnByaTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg ICAgQVNTRVJUKG9wLT5jbWQgPT0gWEVOX0RPTUNUTF9TQ0hFRE9QX3B1dGluZm8pOworCisvLwlw cmludGsoICJwdXQgaW5mbywgbmV3IHByaW9yaXR5IGZvciBkb21haW4gJWQgaXMgJWRcbiIsIGQt PmRvbWFpbl9pZCwgb3AtPnUuc2RwLnByaSApOworCisgICAgICAgIHNwaW5fbG9ja19pcnFzYXZl KCZzZHBfcHJpdi5sb2NrLCBmbGFncyk7CisKKwkvL25lZWQgdG8gYnJvd3NlIHRoZSBhY3RpdmVf dmNwdSBxdWV1ZSBvZiBzZG9tIHRvIG1ha2Ugc3VyZSBldmVyeSB2Y3B1CisJLy8gY2hhbmdlIHRo ZWlyIHByaSBhY2NvcmRpbmdseQorICAgICAgICBpZiAoIG9wLT51LnNkcC5wcmkgIT0gMCApCisg ICAgICAgICAgICBzZG9tLT5wcmkgPSBvcC0+dS5zZHAucHJpOworCS8vY2hhbmdlIHRoZSBwcmkg dmFsdWUgb2YgdmNwdXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBkb21haW4gYWNjb3JkaW5nbHkKKwlw cmludGsoICJudW1iZXIgb2YgVkNQVXMgb2YgdGhpcyBkb21haW4gaXMgJWQuXG4iLCBzZG9tLT5h Y3RpdmVfdmNwdV9jb3VudCApOworCWxpc3RfZm9yX2VhY2hfc2FmZSggaXRlcl92Y3B1LCBuZXh0 X3ZjcHUsICZzZG9tLT5hY3RpdmVfdmNwdSApeworCSAgICBzdmMgPSBsaXN0X2VudHJ5KGl0ZXJf dmNwdSwgc3RydWN0IHNkcF92Y3B1LCBhY3RpdmVfdmNwdV9lbGVtKTsKKyAgICAgICAgICAgIEJV R19PTiggc2RvbSAhPSBzdmMtPnNkb20gKTsKKwkgICAgc3ZjLT5wcmkgPSBzZG9tLT5wcmk7CisJ ICAgIHByaW50ayggInZjcHUgOiVkLCBuZXcgcHJpOiVkXG4iLCBzdmMtPnZjcHUtPnZjcHVfaWQs IHN2Yy0+cHJpICk7CisJfQorCisgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNkcF9w cml2LmxvY2ssIGZsYWdzKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlu dAorc2RwX2NwdV9waWNrKHN0cnVjdCB2Y3B1ICp2YykKK3sKKyAgICBjcHVtYXNrX3QgY3B1czsK KyAgICBjcHVtYXNrX3QgaWRsZXJzOworICAgIGludCBjcHU7CisKKy8vICAgIHByaW50ayggInNk cF9jcHVfcGljayBpcyBjYWxsZWQuIHZjLT5pZDolZCx2Yy0+cHJvY2Vzc29yOiVkXG4iLCAKKy8v CXZjLT52Y3B1X2lkLCB2Yy0+cHJvY2Vzc29yICk7CisgICAgLyoKKyAgICAgKiBQaWNrIGZyb20g b25saW5lIENQVXMgaW4gVkNQVSdzIGFmZmluaXR5IG1hc2ssIGdpdmluZyBhCisgICAgICogcHJl ZmVyZW5jZSB0byBpdHMgY3VycmVudCBwcm9jZXNzb3IgaWYgaXQncyBpbiB0aGVyZS4KKyAgICAg Ki8KKyAgICBjcHVzX2FuZChjcHVzLCBjcHVfb25saW5lX21hcCwgdmMtPmNwdV9hZmZpbml0eSk7 CisgICAgY3B1ID0gY3B1X2lzc2V0KHZjLT5wcm9jZXNzb3IsIGNwdXMpCisgICAgICAgICAgICA/ IHZjLT5wcm9jZXNzb3IKKyAgICAgICAgICAgIDogX19jeWNsZV9jcHUodmMtPnByb2Nlc3Nvciwg JmNwdXMpOworICAgIEFTU0VSVCggIWNwdXNfZW1wdHkoY3B1cykgJiYgY3B1X2lzc2V0KGNwdSwg Y3B1cykgKTsKKworICAgIC8qCisgICAgICogVHJ5IHRvIGZpbmQgYW4gaWRsZSBwcm9jZXNzb3Ig d2l0aGluIHRoZSBhYm92ZSBjb25zdHJhaW50cy4KKyAgICAgKgorICAgICAqIEluIG11bHRpLWNv cmUgYW5kIG11bHRpLXRocmVhZGVkIENQVXMsIG5vdCBhbGwgaWRsZSBleGVjdXRpb24KKyAgICAg KiB2ZWhpY2xlcyBhcmUgZXF1YWwhCisgICAgICoKKyAgICAgKiBXZSBnaXZlIHByZWZlcmVuY2Ug dG8gdGhlIGlkbGUgZXhlY3V0aW9uIHZlaGljbGUgd2l0aCB0aGUgbW9zdAorICAgICAqIGlkbGlu ZyBuZWlnaGJvdXJzIGluIGl0cyBncm91cGluZy4gVGhpcyBkaXN0cmlidXRlcyB3b3JrIGFjcm9z cworICAgICAqIGRpc3RpbmN0IGNvcmVzIGZpcnN0IGFuZCBndWFyYW50ZWVzIHdlIGRvbid0IGRv IHNvbWV0aGluZyBzdHVwaWQKKyAgICAgKiBsaWtlIHJ1biB0d28gVkNQVXMgb24gY28taHlwZXJ0 aHJlYWRzIHdoaWxlIHRoZXJlIGFyZSBpZGxlIGNvcmVzCisgICAgICogb3Igc29ja2V0cy4KKyAg ICAgKi8KKyAgICBpZGxlcnMgPSBzZHBfcHJpdi5pZGxlcnM7CisgICAgY3B1X3NldChjcHUsIGlk bGVycyk7CisgICAgY3B1c19hbmQoY3B1cywgY3B1cywgaWRsZXJzKTsKKyAgICBjcHVfY2xlYXIo Y3B1LCBjcHVzKTsKKworICAgIHdoaWxlICggIWNwdXNfZW1wdHkoY3B1cykgKQorICAgIHsKKyAg ICAgICAgY3B1bWFza190IGNwdV9pZGxlcnM7CisgICAgICAgIGNwdW1hc2tfdCBueHRfaWRsZXJz OworICAgICAgICBpbnQgbnh0OworCisgICAgICAgIG54dCA9IF9fY3ljbGVfY3B1KGNwdSwgJmNw dXMpOworCisgICAgICAgIGlmICggY3B1X2lzc2V0KGNwdSwgY3B1X2NvcmVfbWFwW254dF0pICkK KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCBjcHVfaXNzZXQobnh0LCBjcHVfY29yZV9t YXBbY3B1XSkgKTsKKyAgICAgICAgICAgIGNwdXNfYW5kKGNwdV9pZGxlcnMsIGlkbGVycywgY3B1 X3NpYmxpbmdfbWFwW2NwdV0pOworICAgICAgICAgICAgY3B1c19hbmQobnh0X2lkbGVycywgaWRs ZXJzLCBjcHVfc2libGluZ19tYXBbbnh0XSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoICFjcHVfaXNzZXQobnh0LCBjcHVfY29yZV9tYXBb Y3B1XSkgKTsKKyAgICAgICAgICAgIGNwdXNfYW5kKGNwdV9pZGxlcnMsIGlkbGVycywgY3B1X2Nv cmVfbWFwW2NwdV0pOworICAgICAgICAgICAgY3B1c19hbmQobnh0X2lkbGVycywgaWRsZXJzLCBj cHVfY29yZV9tYXBbbnh0XSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGNwdXNfd2VpZ2h0 KGNwdV9pZGxlcnMpIDwgY3B1c193ZWlnaHQobnh0X2lkbGVycykgKQorICAgICAgICB7CisgICAg ICAgICAgICBjcHUgPSBueHQ7CisgICAgICAgICAgICBjcHVfY2xlYXIoY3B1LCBjcHVzKTsKKyAg ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNwdXNfYW5kbm90 KGNwdXMsIGNwdXMsIG54dF9pZGxlcnMpOworICAgICAgICB9CisgICAgfQorCisvLyAgICBwcmlu dGsoICJzZHBfY3B1X3BpY2sgcmV0dXJucyAlZFxuIiwgY3B1ICk7CisgICAgcmV0dXJuIGNwdTsK K30KKworc3RhdGljIHN0cnVjdCB0YXNrX3NsaWNlIAorc2RwX3NjaGVkdWxlKHNfdGltZV90IG5v dykKK3sKKyAgICBjb25zdCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworICAgIHN0cnVj dCBsaXN0X2hlYWQgKiBjb25zdCBydW5xID0gUlVOUShjcHUpOworICAgIHN0cnVjdCBzZHBfdmNw dSAqIGNvbnN0IHNjdXJyID0gU0RQX1ZDUFUoY3VycmVudCk7CisgICAgc3RydWN0IHNkcF92Y3B1 ICpzbmV4dDsKKyAgICBzdHJ1Y3QgdGFza19zbGljZSByZXQ7CisKKy8vICAgIHN0YXRpYyBpbnQg ZGVidWdfdGltZSA9MDsKKworICAgIC8vcmVvcmRlciB0aGUgcXVldWUgYmVmb3JlIHNjaGVkdWxl aW5nPworICAgIGlmICggc2RwX3ByaXYucmVzb3J0X2JlZm9yZV9zY2hlZF9uZWVkZWQgKXsKKwlz ZHBfcnVucV9yZXNvcnQoIGNwdSApOworCXNkcF9wcml2LnJlc29ydF9iZWZvcmVfc2NoZWRfbmVl ZGVkID0gMDsKKyAgICB9CisKKyAgICAvL3JlY2FsY3VsYXRlIHRoZSBib251cyB2YWx1ZSBvZiB0 aGlzIHZjcHUKKyAgICBpZiAoIHNjdXJyLT5ib251cyA+IDAgKXsKKwlzY3Vyci0+Ym9udXMgLT0g KG5vdyAtIHNjdXJyLT52Y3B1LT5ydW5zdGF0ZS5zdGF0ZV9lbnRyeV90aW1lKTsKKwlpZiAoIHNj dXJyLT5ib251cyA8IDAgKSBzY3Vyci0+Ym9udXMgPSAwOworICAgIH0KKworICAgIC8qCisgICAg ICogU2VsZWN0IG5leHQgcnVubmFibGUgbG9jYWwgVkNQVSAoaWUgdG9wIG9mIGxvY2FsIHJ1bnEp CisgICAgICovCisgICAgaWYgKCB2Y3B1X3J1bm5hYmxlKGN1cnJlbnQpICkKKyAgICAgICAgX19y dW5xX2luc2VydChjcHUsIHNjdXJyKTsKKyAgICBlbHNlCisgICAgICAgIEJVR19PTiggaXNfaWRs ZV92Y3B1KGN1cnJlbnQpIHx8IGxpc3RfZW1wdHkocnVucSkgKTsKKworICAgIHNuZXh0ID0gX19y dW5xX2VsZW0ocnVucS0+bmV4dCk7CisKKyAgICBfX3J1bnFfcmVtb3ZlKHNuZXh0KTsKKworICAg IC8qCisgICAgICogUmV0dXJuIHRhc2sgdG8gcnVuIG5leHQuLi4KKyAgICAgKi8KKyAgICByZXQu dGltZSA9IE1JTExJU0VDUyhTRFBfTVNFQ1NfUEVSX1RTTElDRSk7CisgICAgcmV0LnRhc2sgPSBz bmV4dC0+dmNwdTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHNkcF9kdW1w X3BjcHUoaW50IGNwdSkKK3sKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xLCAqaXRlcjsKKyAg ICBzdHJ1Y3Qgc2RwX3BjcHUgKnNwYzsKKyAgICBzdHJ1Y3Qgc2RwX3ZjcHUgKnN2YzsKKyAgICBp bnQgbG9vcDsKKyAgICBjaGFyIGNwdXN0clsxMDBdOworCisgICAgc3BjID0gU0RQX1BDUFUoY3B1 KTsKKyAgICBydW5xID0gJnNwYy0+cnVucTsKKworICAgIGNwdW1hc2tfc2NucHJpbnRmKGNwdXN0 ciwgc2l6ZW9mKGNwdXN0ciksIGNwdV9zaWJsaW5nX21hcFtjcHVdKTsKKyAgICBwcmludGsoInNp Ymxpbmc9JXMsICIsIGNwdXN0cik7CisgICAgY3B1bWFza19zY25wcmludGYoY3B1c3RyLCBzaXpl b2YoY3B1c3RyKSwgY3B1X2NvcmVfbWFwW2NwdV0pOworICAgIHByaW50aygiY29yZT0lc1xuIiwg Y3B1c3RyKTsKKworICAgIC8qIGN1cnJlbnQgVkNQVSAqLworICAgIHN2YyA9IFNEUF9WQ1BVKHBl cl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5jdXJyKTsKKyAgICBpZiAoIHN2YyApCisgICAgewor ICAgICAgICBwcmludGsoIlx0cnVuOiAiKTsKKyAgICAgICAgc2RwX2R1bXBfdmNwdShzdmMpOwor ICAgIH1lbHNleworCXByaW50ayggIm5vIGN1cnJlbnRseSBydW5uaW5nIHZjcHUhXG4iICk7Cisg ICAgfQorCisgICAgbG9vcCA9IDA7CisgICAgbGlzdF9mb3JfZWFjaCggaXRlciwgcnVucSApCisg ICAgeworICAgICAgICBzdmMgPSBfX3J1bnFfZWxlbShpdGVyKTsKKyAgICAgICAgaWYgKCBzdmMg KQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIlx0JTNkOiAiLCArK2xvb3ApOworICAg ICAgICAgICAgc2RwX2R1bXBfdmNwdShzdmMpOworICAgICAgICB9CisgICAgfQorCit9CisKK3N0 YXRpYyB2b2lkIHNkcF9kdW1wKHZvaWQpCit7CisvLyAgICBwcmludGsoICJzZHBfZHVtcCBpcyBj YWxsZWRcbiIgKTsKK30KKworc3RhdGljIHZvaWQgc2RwX2luaXQodm9pZCkKK3sKKyAgICBzcGlu X2xvY2tfaW5pdCgmc2RwX3ByaXYubG9jayk7CisgICAgSU5JVF9MSVNUX0hFQUQoJnNkcF9wcml2 LmFjdGl2ZV9zZG9tKTsKKyAgICBzZHBfcHJpdi5uY3B1cyA9IDA7CisgICAgc2RwX3ByaXYubWFz dGVyID0gVUlOVF9NQVg7CisgICAgY3B1c19jbGVhcihzZHBfcHJpdi5pZGxlcnMpOworLy8gICAg cHJpbnRrKCAic2RwX2luaXQgaXMgY2FsbGVkXG4iICk7Cit9CisKKy8qCitzdGF0aWMgX19pbml0 IGludCBzZHBfc3RhcnRfdGlja2Vycyh2b2lkKQoreworICAgIHN0cnVjdCBzZHBfcGNwdSAqc3Bj OworICAgIHVuc2lnbmVkIGludCBjcHU7CisKKyAgICBwcmludGsoICJzZHBfc3RhcnRfdGlja2Vy cyBpcyBjYWxsZWRcbiIgKTsKKworICAgIGlmICggc2RwX3ByaXYubmNwdXMgPT0gMCApCisgICAg ICAgIHJldHVybiAwOworCisgICAgZm9yX2VhY2hfb25saW5lX2NwdSAoIGNwdSApCisgICAgewor ICAgICAgICBzcGMgPSBTRFBfUENQVShjcHUpOworICAgICAgICBzZXRfdGltZXIoJnNwYy0+dGlj a2VyLCBOT1coKSArIE1JTExJU0VDUyhTRFBfTVNFQ1NfUEVSX1RJQ0spKTsKKyAgICB9CisKKyAg ICBwcmludGsoICJzZHBfc3RhcnRfdGlja2VycyBpcyByZXR1cm5lZFxuIiApOworICAgIHJldHVy biAwOworfQorX19pbml0Y2FsbChzZHBfc3RhcnRfdGlja2Vycyk7CisqLworCitzdHJ1Y3Qgc2No ZWR1bGVyIHNjaGVkX3NkcF9kZWYgPSB7CisgICAgLm5hbWUgICAgICAgICAgID0gIlNjaGVkdWxl ciBmb3IgQ2xpZW50IFZpcnR1YWxpemF0aW9uIiwKKyAgICAub3B0X25hbWUgICAgICAgPSAic2Rw IiwKKyAgICAuc2NoZWRfaWQgICAgICAgPSBYRU5fU0NIRURVTEVSX1NEUCwKKworICAgIC5pbml0 X2RvbWFpbiAgICA9IHNkcF9kb21faW5pdCwKKyAgICAuZGVzdHJveV9kb21haW4gPSBzZHBfZG9t X2Rlc3Ryb3ksCisKKyAgICAuaW5pdF92Y3B1ICAgICAgPSBzZHBfdmNwdV9pbml0LAorICAgIC5k ZXN0cm95X3ZjcHUgICA9IHNkcF92Y3B1X2Rlc3Ryb3ksCisKKyAgICAuc2xlZXAgICAgICAgICAg PSBzZHBfdmNwdV9zbGVlcCwKKyAgICAud2FrZSAgICAgICAgICAgPSBzZHBfdmNwdV93YWtlLAor CisgICAgLmFkanVzdCAgICAgICAgID0gc2RwX2RvbV9jbnRsLAorCisgICAgLnBpY2tfY3B1ICAg ICAgID0gc2RwX2NwdV9waWNrLAorICAgIC5kb19zY2hlZHVsZSAgICA9IHNkcF9zY2hlZHVsZSwK KworICAgIC5kdW1wX2NwdV9zdGF0ZSA9IHNkcF9kdW1wX3BjcHUsCisgICAgLmR1bXBfc2V0dGlu Z3MgID0gc2RwX2R1bXAsCisgICAgLmluaXQgICAgICAgICAgID0gc2RwX2luaXQsCit9OworCmRp ZmYgLXIgZTJmMzZkMDY2YjdiIHhlbi9jb21tb24vc2NoZWR1bGUuYwotLS0gYS94ZW4vY29tbW9u L3NjaGVkdWxlLmMJTW9uIERlYyAyMiAxMzo0ODo0MCAyMDA4ICswMDAwCisrKyBiL3hlbi9jb21t b24vc2NoZWR1bGUuYwlUaHUgSmFuIDA4IDAxOjMyOjAyIDIwMDkgLTA1MDAKQEAgLTUxLDkgKzUx LDExIEBACiAKIGV4dGVybiBzdHJ1Y3Qgc2NoZWR1bGVyIHNjaGVkX3NlZGZfZGVmOwogZXh0ZXJu IHN0cnVjdCBzY2hlZHVsZXIgc2NoZWRfY3JlZGl0X2RlZjsKK2V4dGVybiBzdHJ1Y3Qgc2NoZWR1 bGVyIHNjaGVkX3NkcF9kZWY7CiBzdGF0aWMgc3RydWN0IHNjaGVkdWxlciAqc2NoZWR1bGVyc1td ID0geyAKICAgICAmc2NoZWRfc2VkZl9kZWYsCiAgICAgJnNjaGVkX2NyZWRpdF9kZWYsCisgICAg JnNjaGVkX3NkcF9kZWYsCiAgICAgTlVMTAogfTsKIApkaWZmIC1yIGUyZjM2ZDA2NmI3YiB4ZW4v aW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5o CU1vbiBEZWMgMjIgMTM6NDg6NDAgMjAwOCArMDAwMAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMv ZG9tY3RsLmgJVGh1IEphbiAwOCAwMTozMjowMiAyMDA5IC0wNTAwCkBAIC0yOTQsNiArMjk0LDcg QEAKIC8qIFNjaGVkdWxlciB0eXBlcy4gKi8KICNkZWZpbmUgWEVOX1NDSEVEVUxFUl9TRURGICAg ICA0CiAjZGVmaW5lIFhFTl9TQ0hFRFVMRVJfQ1JFRElUICAgNQorI2RlZmluZSBYRU5fU0NIRURV TEVSX1NEUCAgICAgIDYKIC8qIFNldCBvciBnZXQgaW5mbz8gKi8KICNkZWZpbmUgWEVOX0RPTUNU TF9TQ0hFRE9QX3B1dGluZm8gMAogI2RlZmluZSBYRU5fRE9NQ1RMX1NDSEVET1BfZ2V0aW5mbyAx CkBAIC0zMTIsNiArMzEzLDkgQEAKICAgICAgICAgICAgIHVpbnQxNl90IHdlaWdodDsKICAgICAg ICAgICAgIHVpbnQxNl90IGNhcDsKICAgICAgICAgfSBjcmVkaXQ7CisJc3RydWN0IHhlbl9kb21j dGxfc2NoZWRfc2RwIHsKKwkgICAgdWludDE2X3QgcHJpOworCX0gc2RwOwogICAgIH0gdTsKIH07 CiB0eXBlZGVmIHN0cnVjdCB4ZW5fZG9tY3RsX3NjaGVkdWxlcl9vcCB4ZW5fZG9tY3RsX3NjaGVk dWxlcl9vcF90Owo= --=====001_Dragon641631112326_===== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=====001_Dragon641631112326_=====--