aXNwZWxsLWx0Cj09PT09PT09PQoKWW91IGFyZSBsb29raW5nIGF0IHRoZSBkaWN0aW9uYXJpZXMgYW5kIGFmZml4IGZpbGVzIGZvciBzcGVsbGNoZWNraW5nCm9mIExpdGh1YW5pYW4gdGV4dHMuCgpUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGFmZml4IHRhYmxlcyBhbmQgZGljdGlvbmFyaWVzIGNhbiBiZSBmb3VuZAphdCBmdHA6Ly9mdHAuYWtsLmx0L2lzcGVsbC1sdC8gLiAgVGhlIG1haWxpbmcgbGlzdCBvZiB0aGUgcHJvamVjdCBpcwphdmFpbGFibGUgYXQgaHR0cHM6Ly9saXN0cy5ha2wubHQvbWFpbG1hbi9saXN0aW5mby9pc3BlbGwtbHQgLiAgQQpicm93c2FibGUgd2ViIGludGVyZmFjZSB0byB0aGUgcHJvamVjdCBDVlMgcmVwb3NpdG9yeSBpcyBhdmFpbGFibGUgYXQKaHR0cDovL3NyYWlnZS5taWYudnUubHQvY3ZzL2lzcGVsbC1sdC8KClRoZSBzb2Z0d2FyZSBpcyBhdmFpbGFibGUgdW5kZXIgdGhlIHByb3Zpc2lvbnMgb2YgYSBCU0Qtc3R5bGUgbGljZW5zZS4KVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBpcyBhdmFpbGFibGUgaW4gdGhlIENPUFlJTkcgZmlsZS4KClRoZSBwcm9qZWN0IGhhcyBiZWVuIHNwb25zb3JlZCBieSB0aGUgSW5mb3JtYXRpb24gU29jaWV0eSBEZXZlbG9wbWVudApDb21taXR0ZWUgb2YgdGhlIEdvdmVybm1lbnQgb2YgUmVwdWJsaWMgb2YgTGl0aHVhbmlhLgoKQWxiZXJ0YXMgQWdlamV2YXMgPGFsZ2FAYWtsLmx0PgozMS1EZWNlbWJlci0yMDAzCgoKQWRkIHRoaXMgbGluZSB0byAiZGljdGlvbmFyeS5sc3QiIHdoZW4gT09vIG5vciBRdWlja3N0YXJ0ZXIgYXJlIE5PVCBleGVjdXRpbmc6CkRJQ1QgbHQgTFQgbHRfTFQKCgoKCQlMaWV0dXZp8Gv4IE15U3BlbGwgYWZpa3P4IGxlbnRlbGn4IGRpZWdpbW8gaW5zdHJ1a2Npam9zCgoJCVJhbftuYXMgTHVrYfBldmnoaXVzIChSYW11bmFzLkx1a2FzZXZpY2l1c0BtYWlsLmx0KQoJCUFsYmVydGFzIEFnZWpldmFzIChhbGdhQGFrbC5sdCkKCgkxLiDB/mFuZ2EKCTIuIExlbnRlbGn4IOFkaWVnaW1hcyDhIE1vemlsbOAKCTMuIExlbnRlbGn4IOFkaWVnaW1hcyDhIE9wZW5PZmZpY2UKCgoKCTEuIMH+YW5nYQoK0GlzIGZhaWxhcyBza2lydGFzIGFwcmHweW1hbXMga2FpcCB2aWVub2plIGFyIGtpdG9qZSBvcGVyYWNpbutqZQpzaXN0ZW1vamUgdGFtIHRpa3JvbXMgcHJvZ3JhbW9tcyDhZGllZ3RpIGFmaWtz+CBsZW50ZWxlcyBrYWQgdGlrcmludPgKbGlldHV2afgga2FsYm9zIHJh8Hli4C4KCt5lbWlhdSBwYXRlaWt0aSBhcHJh8HltYWkgeXJhIHNraXJ0aSDwaWVrIHRpZWsgcGH+ZW5ndXNpZW1zCnZhcnRvdG9qYW1zLiAgQXRlaXR5amUgYvt0+CBnYWxpbWEgc3VrdXJ0aSBrb2vhIHNrcmlwdOAsIHBhbGVuZ3ZpbmFudOEK4WRpZWdpbeAuCgoJMi4gTGVudGVsafgg4WRpZWdpbWFzIOEgTW96aWxsYQoKU3RhbmRhcnRpbmlhbWUgTW96aWxsb3Mg4WRpZWdpbWUgaWtpIHZlcnNpam9zIDEuNSBu63JhIOFkaWVnaWFtYXMKcmHweWJvcyB0aWtyaW5pbW8ga29tcG9uZW50YXMsIHRvZOtsIHJlaWtpYSBq4SBwYXBpbGRvbWFpIGF0c2lzafhzdGkKaXIg4XNpZGllZ3RpIGnwIGludGVybmV0byBhZHJlc3UKaHR0cDovL3NwZWxsY2hlY2tlci5tb3pkZXYub3JnL2luc3RhbGxhdGlvbi5odG1sIMFkaWVndXMg8OEgcGFrZXTgLApyYfBhbnQgbGFp8GvgLCBhciBrdXJpYW50IHB1c2xhcOEsIG1lbml1IHR1cmkgYXRzaXJhc3RpIG15Z3R1a2FzCiJzcGVsbCIuICBNb3ppbGxhIDEuNSBpciB262xlc25pb21zIHZlcnNpam9tcyBhdHNraXJhaSByYfB5Ym9zCnRpa3JpbmltbyBwYWtldG8gZGllZ3RpIG5lcmVpa2lhLCBwYWthbmthIHRpayDhZGllZ3RpIP5vZHlu4CBpcgpsZW50ZWxlcy4KCkRpZWdpYW50IGFmaWtz+CBsZW50ZWxlcyB1/nRlbmthIG51a29waWp1b3RpIGx0X0xULmRpYyBpciBsdF9MVC5hZmYKYnlsYXMg4SAkbW96aWxsYS9jb21wb25lbnRzL215c3BlbGwga2F0YWxvZ+AuICDIaWEgJG1vemlsbGEgeXJhCk1vemlsbGEg4WRpZWdpbW8ga2F0YWxvZ2FzLCBwdnouIFdpbmRvd3MgcGxhdGZvcm1vamUgCiJDOlxQcm9ncmFtIEZpbGVzXG1vemlsbGEub3JnXE1vemlsbGEiLCBvIExpbnV4IHBsYXRmb3Jtb2plCi91c3IvbGliL21vemlsbGEuCgoJMy4gTGVudGVsafgg4WRpZWdpbWFzIOEgT3Blbk9mZmljZQoK3mVtaWF1IHBhdGVpa3RvcyBpbnN0cnVrY2lqb3MsIGthaXAg4WRpZWd0aSD+b2R5buAg4SBPcGVuT2ZmaWNlLm9yZwp2ZXJzaWphcyA2NDFDLCAxLjAgaXIgdutsZXNuaXVzOgoKMSkgcHJpZfAgcHJhZGVkYW50IOFkaWVnaW3gLCByZWlraWEgdf5kYXJ5dGkgdmlzdXMgT3Blbk9mZmljZSBsYW5ndXMsCiAgIG5ldGdpIFF1aWNrc3RhcnRlci4KCjIpIG51a29waWp1b2phbWUgbHRfTFQuZGljLCBsdF9MVC5hZmYsIGlyIGRpY3Rpb25hcnkubHN0IOEKICAgJE9wZW5PZmZpY2UvdXNlci93b3JkYm9vay8gyGlhICRPcGVuT2ZmaWNlIHlyYSBPcGVuT2ZmaWNlLm9yZwogICDhZGllZ2ltbyBrYXRhbG9nYXMsIHB2ei4gV2luZG93cyBwbGF0Zm9ybW9qZSAiQzpcUHJvZ3JhbQogICBGaWxlc1xPcGVuT2ZmaWNlLm9yZy4xLjEuMFwiLCBvIExpbnV4IHBsYXRmb3Jtb2plCiAgIH4vLm9wZW5vZmZpY2UvMS4xLjAvLgoKMykgRGFiYXIgcGFsZWlk/mlhbWUgT3Blbk9mZmljZSBpciB2eWtkb20gdG9raWFzIGtvbWFuZGFzOgogICBUb29scy0+T3B0aW9ucy0+TGFuZ3VhZ2VTZXR0aW5ncy0+V3JpdGluZ0FpZHMKICAgUGFzcGF1ZP5pYW1lIEVkaXQgKHByaWUgQXZhaWxhYmxlIGxhbmd1YWdlIG1vZHVsZXMpLCBwYXNpcmVua2FtZQogICBsaWV0dXZp+CBrYWxi4CBpciBwYf55bWltZSAiT3Blbk9mZmljZSBNeVNwZWxsIHNwZWxsIGNoZWNrZXIiLgoKNCkgRGFiYXIgcGFzaXJlbmthbWUgVG9vbHMtPk9wdGlvbnMtPkxhbmd1YWdlU2V0dGluZ3MtPkxhbmd1YWdlcyBpcgogICBwYXNpcmVua2FtZSBMaWV0dXZp8GvgIGxva2Fs5iwgYmVpIG51c3RhdG9tZSBsaWV0dXZp+CBrYWxi4CBrYWlwCiAgIG51dHlsaW3gauAgZG9rdW1lbnRhbXMgbG90eW5p8GtvbWlzIHJhaWTrbWlzICh0aWVzICJXZXN0ZXJuIikuCgreb2R5bmFzIOFkaWVndGFzIGlyIHX+cmVnaXN0cnVvdGFzIOEgT3Blbk9mZmljZS4KCkFwaWUg4WRpZWdpbeAgZ2FsaW1hIHBhc2lza2FpdHl0aSBpciBhZHJlc3UKaHR0cDovL3doaXRlYm9hcmQub3Blbm9mZmljZS5vcmcvbGluZ3Vjb21wb25lbnQvZG93bmxvYWRfZGljdGlvbmFyeS5odG1sI2luc3RhbGxzcGVsbAoKCg==