From kopete-devel Wed Sep 10 06:05:32 2008 From: =?UTF-8?B?UGFsaSBSb2jDoXI=?= Date: Wed, 10 Sep 2008 06:05:32 +0000 To: kopete-devel Subject: Re: [kopete-devel] Skype plugin for Kopete Message-Id: <48C763AC.1010806 () gmail ! com> X-MARC-Message: https://marc.info/?l=kopete-devel&m=122127933515633 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--===============0910956805==" This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --===============0910956805== Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig8424A2FD6D23CBA25857EAEF" This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig8424A2FD6D23CBA25857EAEF Content-Type: multipart/mixed; boundary="------------040508070000010204050001" This is a multi-part message in MIME format. --------------040508070000010204050001 Content-Type: multipart/alternative; boundary="------------060201080101010003030500" --------------060201080101010003030500 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I'm sending patch for kopete_skype. I tried port to kde4, but without success yet. It works only on kopete-kde3. --=20 Pali Roh=C3=A1r pali.rohar@gmail.com Olivier Goffart wrote / nap=C3=ADsal(a): > Le mardi 9 septembre 2008, vous avez =C3=A9crit : > =20 >> I'm sending my fixed files and original (from planetmirror) kdeextrag= ear >> package (with kopete_skype) too. >> =20 > > Can you please send a patch instead? (to the mailing list) > Also, we need someone to volonteer to port the plugin to KDE4 :-) > If you are interested you can apply for a svn account and eventually be= come=20 > the maintainrer of the plugin. > =20 --------------060201080101010003030500 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I'm sending patch for kopete_skype.
I tried port to kde4, but without success yet.

It works only on kopete-kde3.

--
Pali Roh=C3=A1r
pali.rohar@gmail.com

Olivier Goffart=C2=A0 wrote / nap=C3=ADsal(a):
Le mardi 9 septembre 2008, vous avez =C3=A9crit=C2=A0:
  
 I'm sending my fixed files and original (from planetm=
irror) kdeextragear
package (with kopete_skype) too.
    

Can you please send a patch instead? (to the mailing list)
Also, we need someone to volonteer to port the plugin to KDE4 :-)
If you are interested you can apply for a svn account and eventually beco=
me=20
the maintainrer of the plugin.
  
--------------060201080101010003030500-- --------------040508070000010204050001 Content-Type: application/x-bzip; name="patch.tar.bz2" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch.tar.bz2" cGF0Y2gucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQA MDAwMTc1MAAwMDAxNzUwADAwMDAwMjQwMDIwADExMDYxNjYwNzM3ADAxMTYzNwAgMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHBhbGkA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGFsaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkaWZmIC1OYXVyIGtkZWV4dHJhZ2Vhci1hZGRv bnMtNjQxNjg3L2NvbmZpZ3VyZSBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9j b25maWd1cmUKLS0tIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3L2NvbmZpZ3VyZQkyMDA3 LTAzLTE0IDAyOjIxOjI2LjAwMDAwMDAwMCArMDEwMAorKysga2RlZXh0cmFnZWFyLWFkZG9u cy02NDE2ODctZml4ZWQvY29uZmlndXJlCTIwMDgtMDktMTAgMDc6NTc6MzIuMDAwMDAwMDAw ICswMjAwCkBAIC0zMjc5NSw5ICszMjc5NSw5IEBACiAJREJVU19JTkNTPSItSSRkYnVzX2lu Y2RpciAtSSRkYnVzX2luY2Rpcl9hcmNoX2RlcHMiCiAJZ3JlcCAiZGJ1c19tZXNzYWdlX2dl dF9hdXRvX3N0YXJ0IiAkZGJ1c19pbmNkaXIvZGJ1cy8qLmggPiAvZGV2L251bGwKIAlpZiB0 ZXN0ICIkPyIgPSAiMCIgOyB0aGVuCi0JCWRidXNfaW5jPU5PVF9GT1VORAotCQlkYnVzX3Rv b19uZXc9dHJ1ZQotCQllY2hvICJUb28gbmV3ISEiCisJCWRidXNfaW5jPUZPVU5ECisJCWRi dXNfdG9vX25ldz1mYWxzZQorCQllY2hvICJmb3VuZCBuZXcgdmVyc2lvbiAtIE9LIgogCWVs c2UKIAkJI3llYWgsIHdlIGZvdW5kIGl0CiAJCWRidXNfaW5jPUZPVU5ECmRpZmYgLU5hdXIg a2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9pY29ucy9jcjE2 LWFjdGlvbi1jYWxsLnBuZyBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3Bl dGVfc2t5cGUvc3JjL2ljb25zL2NyMTYtYWN0aW9uLWNhbGwucG5nCi0tLSBrZGVleHRyYWdl YXItYWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2NyMTYtYWN0aW9uLWNh bGwucG5nCTIwMDUtMDktMTUgMDI6MzM6NDUuMDAwMDAwMDAwICswMjAwCisrKyBrZGVleHRy YWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2NyMTYt YWN0aW9uLWNhbGwucG5nCTIwMDgtMDEtMTYgMTM6NTE6MjEuMDAwMDAwMDAwICswMTAwCkBA IC0xLDUgKzEsMjAgQEAKIIlQTkcNCiAaCi0AAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA cUlEQVQ4jZ2TQQotwCAMBCf9uPbl20MVtNQkGhARnSEuiiR2BlSN64uNMrs1zkBeMEKT7G3r TLLVwaqOrwAgFUsJ/uB0BytYKhYKLSLYFWTgSTACWRjaO/BC8mAAg3oMA1zeZgRDy2B1KILh 8xd6Fhmw1wNUXWvnVfrQIwAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKKwAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEc0JJVAgICAh8CGSIAAAACXBIWXMA AAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1MzmNZGAwAA ABZ0RVh0Q3JlYXRpb24gVGltZQAxMi8xOS8wNuzjNdgAAAQRdEVYdFhNTDpjb20uYWRvYmUu eG1wADw/eHBhY2tldCBiZWdpbj0iICAgIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlk Ij8+Cis8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9i ZSBYTVAgQ29yZSA0LjEtYzAzNCA0Ni4yNzI5NzYsIFNhdCBKYW4gMjcgMjAwNyAyMjoxMTo0 MSAgICAgICAgIj4KKyAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcv MTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CisgICAgICA8cmRmOkRlc2NyaXB0aW9uIHJk ZjphYm91dD0iIgorICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29t L3hhcC8xLjAvIj4KKyAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtz IENTMzwveGFwOkNyZWF0b3JUb29sPgorICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDct MTEtMDhUMTI6MjA6MjVaPC94YXA6Q3JlYXRlRGF0ZT4KKyAgICAgICAgIDx4YXA6TW9kaWZ5 RGF0ZT4yMDA4LTAxLTE2VDEwOjQ4OjUyWjwveGFwOk1vZGlmeURhdGU+CisgICAgICA8L3Jk ZjpEZXNjcmlwdGlvbj4KKyAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCisg ICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8i PgorICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KKyAgICAgIDwv cmRmOkRlc2NyaXB0aW9uPgorICAgPC9yZGY6UkRGPgorPC94OnhtcG1ldGE+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgV0j72wAAAfZJREFUOI2Fk7FLW1EUxn/35VVqjKhBoQi+PIUW BR8kWJcu7SS4ZcmgS8UhGQST/0BxFpqMb3uuTg4F6Vahk1YbSpcGIYYOMabGWGLCS8y7HTRp XhLpB2e45/vOud+9nCPohokOJIC3QPAxmwaOgCQxLjrloqs46VW98eWpZRYmFgj4AgDkKjlO i6cc/jqkel9NyahMAAghOhqYfFucWAyG9TCD6mCPMYDafY2DiwNOiidpGZUhIQSex+IPht8I L00tYTs2s6OzrL5cRSA4+31GpVGh0qhgN22mh6e5bdy+2PiyMcpHPqmY6APKQMLwGxSqBQAi MxEAxp+Pc1W7QiJdTgy/QaacSdTNekoFtjSfRskutQV3jTuGng1xY99wWbvs+xzNp3H+53xL BYKqolKoFdrkcfGYfDXP7vfdvsUAqqICBAUmctI76SIjMxF2Xu8wtz/XY78T+WoegYn0CI+L GBkY4fr9NetH6+xl9p5s4EgHBUg3ZZPOKNklrIzF5vwmjnTQfBqOdHoCSCs8TFkPtr9uow/r ZFeyZFeyrL1a6ydLC0wC4B7PFuLzcZJvkgCU62XGrLFuia4QIwck+zVI/UhhZSwArJ9WN50k Rs41yvxbnv+hPcpKOxUj9JST7ptlVIZaB9FDP/xJAniHe50/t2x3yv8Co5vJ08d9alIAAAAA SUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLU5hdXIga2RlZXh0 cmFnZWFyLWFkZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9pY29ucy9jcjE2LWFjdGlv bi1jb250YWN0X2ZmY19vdmVybGF5LnBuZyBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1m aXhlZC9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2NyMTYtYWN0aW9uLWNvbnRhY3RfZmZjX292 ZXJsYXkucG5nCi0tLSBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUv c3JjL2ljb25zL2NyMTYtYWN0aW9uLWNvbnRhY3RfZmZjX292ZXJsYXkucG5nCTIwMDUtMDkt MTUgMDI6MzM6NDUuMDAwMDAwMDAwICswMjAwCisrKyBrZGVleHRyYWdlYXItYWRkb25zLTY0 MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2NyMTYtYWN0aW9uLWNvbnRhY3Rf ZmZjX292ZXJsYXkucG5nCTIwMDgtMDgtMzAgMTY6MDU6NTIuMDAwMDAwMDAwICswMjAwCkBA IC0xLDUgKzEsNCBAQAogiVBORw0KIBoKLQAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAJ cEhZcwAACxIAAAsSAdLdfvwAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8A AIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAALqSURBVHjaYvz//z8DJQAggFhABCMjI4rg/83C Ci1AwQAgUwAq9IHh//8NjL5vH6CoA1oOEECMYAJqwP81vAJATv1/hYCC/5KmDP/5OBgY/z9l YPx4kYHhxWsGxoeXJgB1NTKGfP4AMwAggOAG/F/CLsDAKbz/r2OLAYOAKlD6MwPjv/NAfIaB 4d9FIP2a4f9HbQbGYzcuMHz/7sgY8/MDSC9AADHB3fPrT/0/+zQDRt5rQMWngPgS0IrHQPyO gZHhK9CQbwyMrBcZ/ptIGIDUwrQBBBDYBb+nMiowabrfZ7L5CAwQQYY3x38w/Pn6k0HCmQNo wCOGt8eBBv35wyCiD+T/5GT4d/0Pw99bHxRZs/8/AAggsAt+fWcI+C/1F2jrVaCGDwxPN5xk uNl3DOj/G0D8hOHGhJ8MTzYBFf4TBxr0n+G/IBNYD0gvQACBDfjxjUGAUQAYkP8dGRiZEhm4 RX8waISwMzD8fcnA8PsPg5AGE4O0IdB2thAGBhYrBkY+iB6QXoAAAkfjD5AXf/1g+P1ChuHJ 5iYG1UyQMDB9/GAFGsLEoJXPDDSIheHBiu0MMnbCQG/+B+sBAYAAYoG64MPPx28Z/v44z/Bq /1cGVnZWBnl/oAv+AV31D+jIP8wMT3b/ZHhz6gYDjwA/A6fYb7AekF6AAAIH4vUURgVeU5n7 Mu7AwPn+m+HZ7m8Mn27+ZBDQYmP49fk/w/sbfxi4ZdgZlP2EGFg4GRmeHnrG8On8X0XNOf8f AAQQPB2cDWPo1yhXLODi+gF0ItDin/8Yfrz8y/Af6AotbmkOiGv+MzJ8+/YBGKgfJxivYigE 6QUIIHg6+PWTofFK96MLXz79AzqZhYGJkZ2BS5yLgVuSCxwOIEO/AhPglUmfLoDUwvQBBBBK Ut7vAg7ZeglH1gIRbXYGHhkWsK1fHv9leHPlG8OLQ38mAOUbHfcwwJMyQAChGAADQIMUgBRq ZmJg2ADUiJGZAAKIkdLsDBBgAAD2NkDxnX+sAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAAlwSFlzAAANiQAA DYkBUJSCJQAAAz9JREFUOI1dk8tvlGUUxn/v+31zb+llhgmQsailpaZoUFQUq4iIQU2JpmLY GKPRhdbEDWGjbvwDTEyM0UQT4i0mSCIuJBrqwkXBVI0C05IWOtTeL7TTb76Z+W7v+7oobdCT nMVZPL9znuQ8AmBwcDDl5S6c8OXiK1LK7V7kzgWh90NIxUTaR5r02NbEvnMHd77xN/8rUSqV kpe9T07mmgorR1uTd0hPuQTKoRxMEGkPX7lUwhkcb9aIKD2w3T7S/+zu46PrADmlfnq7ZVO+ rzV5p/Rvin3tILDQRqNNhC2SZOJZQbz25Ejw2e+nh04c2gCsqusvZVMdtqcq+DfFvnLw1+db OjIe2qo2jkXfnR649Gk7gLSI3RWq2sZmL3LwojVxoCsE2iXUNULtsX/bO2u+Y17jFefURwDS C9yrdbWMryv4qkKoaygTAAaBxBYJLJng8cK73JM7Ria2mdbkDurW9FPniz932LEw9+MN72rn pniBtJ0jLhuphDMIIZHCRiC4L/8qXS29RNrHVw5etIonynK8fPaQ1HZN2CKBLeJYIs7eLW+S ieUJVZUVv0R708GpndEC5lofYvQAR6nSHkwRahfPlDul0gaEwJYptAmJyRR78/1uNVqqd7X0 Tt5bHypQOYew81jx2yikuzmSuZ2nlUHqGDKtt4wu1IqUnF8YLZ9lvnaZhN3QcKzjlP1gfGuB cA5tknzw+SXc1Rk+/HIRo6o8kLS4X83bsi21f8Bxb+hquEQ9Wub78deYq17UtozHxOoZIews Klig9M8yQXWc69MuJphDUqdZTj0vAL4633/Wyfx22BJxfOVg0LUXO74Nmideb05E8xDOIEyw 8b5mzTXT1T0IgGKx2PGrc/yPZJNqFAiU8THAo8E1OtUk3wzkScQ027IBE/MJEjHDcz1LXFk5 MCkBuru7x3bZb/V5y6maMZBLdbE51cVs+mGUkbzw2CJl1+bMYJYwkvTuW6JSt1j0e74QtyZr eHh418Wlrz9etv7sSTYIkUm0kHX+4hFdJGGtnW0MlKtxhp2XL7Ttfu+J/wDWEzoyMrJndmXs mdVwvACavNKpFoYOW6aSqwaNc2X90Mkdd/e939bWVv8X/Bev4jsQ+uAAAAAASUVORK5CYIIK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLU5hdXIga2RlZXh0cmFnZWFyLWFk ZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9pY29ucy9jcjE2LWFwcC1za3lwZV9wcm90 b2NvbC5wbmcga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODctZml4ZWQva29wZXRlX3NreXBl L3NyYy9pY29ucy9jcjE2LWFwcC1za3lwZV9wcm90b2NvbC5wbmcKLS0tIGtkZWV4dHJhZ2Vh ci1hZGRvbnMtNjQxNjg3L2tvcGV0ZV9za3lwZS9zcmMvaWNvbnMvY3IxNi1hcHAtc2t5cGVf cHJvdG9jb2wucG5nCTIwMDUtMDktMTUgMDI6MzM6NDUuMDAwMDAwMDAwICswMjAwCisrKyBr ZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2ljb25z L2NyMTYtYXBwLXNreXBlX3Byb3RvY29sLnBuZwkyMDA3LTEyLTA1IDEyOjM0OjI0LjAwMDAw MDAwMCArMDEwMApAQCAtMSw0ICsxLDIzIEBACiCJUE5HDQogGgotAAAADUlIRFIAAAAQAAAA EAgGAAAAH/P/YQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAB10RVh0Q29tbWVudABDcmVhdGVk IHdpdGggVGhlIEdJTVDvZCVuAAABBElEQVQ4jYWTTYrCQBCFX7XuBiQDEhwGXHsAwYvMPlvx BJ5APIG4nX0uMuABsg6IMmQwCFkmcWEKLV4q3c7bpNNd36uq/hF0umyj9mNfymUbtTDKywYA sDrexa6JwnaBwXnkgka9jLPPGNfzbw/UsZWaeCvIy+YlzCaOYQb+g7OiBgCMdSLe/SEGcNq8 B6Hl4QZ0MYvpCADtQV42vQAfyGtZUWMxHT0NuGcOZrGpwllRw9mefS3YOYUBwGn2kLhk/qrk Zz3xXqLl4RbcUDVJ0krc6ngXXwW2Z192oLtIoSrYQI9t0IIO1MQGh8CBga2EjyqkJK1k8DzZ jOEkrQQAvr/eWv5/AIRXqSn+XkqHAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQorAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAARzQklUCAgICHwIZIgAAAAJ cEhZcwAACxIAAAsSAdLdfvwAAAQRdEVYdFhNTDpjb20uYWRvYmUueG1wADw/eHBhY2tldCBi ZWdpbj0iICAgIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cis8eDp4bXBtZXRh IHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA0LjEt YzAzNCA0Ni4yNzI5NzYsIFNhdCBKYW4gMjcgMjAwNyAyMjoxMTo0MSAgICAgICAgIj4KKyAg IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYt c3ludGF4LW5zIyI+CisgICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgorICAg ICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KKyAg ICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0 b3JUb29sPgorICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDctMTEtMDhUMTI6MjA6MjVa PC94YXA6Q3JlYXRlRGF0ZT4KKyAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA3LTEyLTAz VDExOjEyOjAxWjwveGFwOk1vZGlmeURhdGU+CisgICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K KyAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCisgICAgICAgICAgICB4bWxu czpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgorICAgICAgICAgPGRj OmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KKyAgICAgIDwvcmRmOkRlc2NyaXB0aW9u PgorICAgPC9yZGY6UkRGPgorPC94OnhtcG1ldGE+CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYr0e/gAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMi8xOS8wNuzjNdgAAAAcdEVYdFNvZnR3 YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzOY1kYDAAACFUlEQVQ4jY2TTWsTURSGnzsfSWisuZqk EEUtFiEg0uwrrVARXXXyA8RuxJXYbFza/AEx+AdaEBHcJP4AKXShC6GkVNCFFjHWNmJ1YrAz k4+5LqaTmETUd3cP933ee+7hCADKdg4oAgsEegYUycsq/5A4NK9dP2XK2ZQBwPrXDo9q7d/v VQ+hJfLSVkoFZiEQlO2ylTGt2ZQ+QP7WUhyPCAB2HMX6fodX37s2UFBWYjUEGIA1OaZRd1XP fMwUXJ0wycQCwPaBzxEDzo/r8smn1oqoNAghGsAXz6fuKeqeotmB21MRZpI6LR8MDS6nDe6e i5KMCK5MmAAPRKUhQ0Blo9Flz/PZ83zOxgVjuqCy26bw2uFW1eH+O49mBxxf0VaKkzFNAndC QPFt06d2oKi7ih0naGU+bTCfNpCG4HGtzbUXP3m536XuKsZNAKxgCivBGNWJmNb7g2I2ys3J SO/8o614+rnNvTdur7brKshL0QPoYnC+Z8Y05pIGcymdhYyJNAWFLZeH2x4AvgLyUoSx1a6C roILR3Wez8TxFax8bLG44bC44QAwndDw1aE5CM6FgMpAcspg7WKcxdMRrIxJMRsNUho+Q1oO W0gAHwAJsJyNsjQVRZr9vkrvPQorW+4wgP6Nsn0DWB3+B2kKKzYb3RHjKKAPKYUv+Q9VxEgp aGeJYM65v5ht4NIo4E8q29ME626FyQTrvvkLDunH3t33VgYAAAAASUVORK5CYIIKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLU5hdXIga2RlZXh0cmFnZWFyLWFkZG9ucy02 NDE2ODcva29wZXRlX3NreXBlL3NyYy9pY29ucy9jcjIyLWFjdGlvbi1jYWxsLnBuZyBrZGVl eHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2Ny MjItYWN0aW9uLWNhbGwucG5nCi0tLSBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3Bl dGVfc2t5cGUvc3JjL2ljb25zL2NyMjItYWN0aW9uLWNhbGwucG5nCTIwMDUtMDktMTUgMDI6 MzM6NDUuMDAwMDAwMDAwICswMjAwCisrKyBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1m aXhlZC9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2NyMjItYWN0aW9uLWNhbGwucG5nCTIwMDgt MDgtMzAgMTY6MDg6NTQuMDAwMDAwMDAwICswMjAwCkBAIC0xLDkgKzEsNSBAQAogiVBORw0K IBoKLQAAAA1JSERSAAAAFgAAABYIBgAAAMS0bDsAAAHKSURBVDiNpZQxa9tQFIW/+yTSBBIw oYOGDjV06FaPWQMdM3ZooFD3J2RKl1pW6VDTob+gZAl08ZBs3lpIBv+EbPbQMYMhCi1EivRu B0eOkC3ZVg5ouffovMN5715Ulad80O1Cd1Ssy7RZDyLBD+At8Aot6DuO9JKkcwXUE97a+taI 47RlLb8B7/EgjhxHBvf3nSu3jtMoSluq/CnWVfmZJPoG+FTL8e5ub/P2Nvbi2F4ALwot7RC4 fmrGI+Dlol6tKDLHJf+HwLWpIzyZ3O3FsR0xHwNAX9Vvru3YmOBYlfdLeeuIOk7QVuUAaJVQ BiJcwprvWCSoJIuwb63/F1a8PGOCtionFZSxqt/MF5YKLT9kelBBOTeG02JxJpyN6c7Os+Fk 8vmu0fi+eXMT7T1cVFmmQxHO0tTvlwotZ2MahnETGIdh7Fk7P7Z5OI4cJklnvKjnwmxLfQBI U70QCRKqYxpubJhDz9v+V0ZwRYIu09WXbalFjz6PcxHOoujLQqd5xx+B50vEMoxFOLV2PtMi RFURCU6A9jKyqi8rGphOnutKT4SjCi3ewBj2VxWF3OS57tfXaarHwDtgm+mW6gOIcGmt/6uW 8KzwuGPnpmkd/AehZvYfdMIicgAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKKwAAAA1JSERSAAAAFgAAABYIBgAAAMS0bDsAAAAJcEhZcwAADYkAAA2JAVCUgiUA AAPqSURBVDiNjZVLaBtXFIa/Ow+Nxh1blh9S5EROKcYUDCrGwZgWnIIdpzSbbNokGIqbTTeF EuimK9NNF4WAsymULoJNNw2UFgIppW6Ik5BFlnIagvNCsS27biQ5skcjaUb3duFYfkRO+19m MTPnfHPm3HvOEbxOk4RIYlHFwMcAwCQgREALFT6mepCraPhshiY2OaIZ2qit26OmbqYMjKMA AUHGr/lpL/D+lLr8gxBLfEIJUAeDJ9HoJKmZ2mnHdCZiTbG+3pZeM+kk6WrqAmCltMIz9xkL 6wvBmrf216a/eVn68lf+YZGvka+CJ9HootfE/CLhJM6k2lLRwdggUSva8FcLlQJ31+6SzqcL K6WVn3zpXyLLwjZcr3/gI7pN3fyyy+k6fzxx3Olr60MIgaVbxOwY5VqZXCWHV/Pwah4AiaYE kVDEzlfyqZJfCivLsExzjeIOeIY3kJzrtDs/PxY75hxqOkRVVmm32hmKDzHQMUB7uJ07q3fw Aq9+lWtlLN3CNmw9V8n1uNJd5QPucY3q1k5vcsQO2Z92O93RZrOZ9co6AGOHx+jv6Cesh+m0 O8lX8vu2aEuO6ZB0kq3FanHCw/sdeGAwSQiNUduw+yKhCIVKoe5QUzU0tPp9vpJHNSIDkVAE 27D7POmNcIUnBk1Ymq6NhPWw6fouru/WjZfcJbyax5ONJ9xavUWunGsI3ZalW6aGNiqLcsag GUMo8Y5Uklxlr+N8fp5T1VPcyN5gemF6KxWvkVIKK4FIoTAFl+jUwtpKc6hZNzVzj2HcjjP9 /jRtVhsnfzu5J02NFMiAYrVYk4ZMGABSSTaqG68Y5st5rmauciF1gdNvnuZi+iJKNc7x7qgB NEwCBBlJ4zW7PEuunOPsW2cxhUmr1UpYD6MOWAgySGo6w5iEeRd4u1EEi+4i/e39jBwe4cGL B4z3jBO342Q2M/VC2ac5NH7WeQ9wiAJjiF1na5eWS8ucOHyC8Z5xhhPDDMYGcQOXe4V7VOWu BqcIgO9o5a7OHDU+pIhgGMGhRuBsKYuhGYwdGcPQDBzTwTEdbv99mzVvbbfpPJJvmWBtq6TP UCZAAEOA3Qh+v3CfqBUlEorw3HvOzdWbXM9eZ8Pf2I52HcUUDjf4BX+7uwm+J4nkKwTnEYQa weN2nIGOARSKhRcLPC4+3oZWgcsIvuEzFgGl170G2KCFRwgsFD0IwvvBbuDysPiQR8VHO2da sQ78iGCKLE+Z26r5HfAcigHyNJNGsIoigaB9j81ubW3UPIopNH4gy9PGjX5H9dGExiiCUSCF 4ujLtxkgjWIWySzO/xlN+3WFEEUsFCbay8glNQT+fw3TfwFtzaoY3yhaoAAAAABJRU5ErkJg ggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtTmF1ciBrZGVleHRyYWdlYXIt YWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2NyMzItYWN0aW9uLWNhbGwu cG5nIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3LWZpeGVkL2tvcGV0ZV9za3lwZS9zcmMv aWNvbnMvY3IzMi1hY3Rpb24tY2FsbC5wbmcKLS0tIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQx Njg3L2tvcGV0ZV9za3lwZS9zcmMvaWNvbnMvY3IzMi1hY3Rpb24tY2FsbC5wbmcJMjAwNS0w OS0xNSAwMjozMzo0NS4wMDAwMDAwMDAgKzAyMDAKKysrIGtkZWV4dHJhZ2Vhci1hZGRvbnMt NjQxNjg3LWZpeGVkL2tvcGV0ZV9za3lwZS9zcmMvaWNvbnMvY3IzMi1hY3Rpb24tY2FsbC5w bmcJMjAwOC0wMS0xNiAxMzo1MToyMC4wMDAwMDAwMDAgKzAxMDAKQEAgLTEsNSArMSwyNiBA QAogiVBORw0KIBoKLQAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAPASURBVFiFtVdNaFRX FP7OvW9mkhnj0MTRsSGYVruYEJWQQq0lk02txJ9F3aRQ7EbpQgotRaVQbK2dpKGLot2UQqEr QbrLwtYW6mgsgTQNFJooxkIWxcmYMSaYyc+YmXffOV1kkqYhyfw9v+37Dt93zz3nnvNIRPC8 oFTspAjaABzSmo4Y89noWo71PIT9/p6t2ayJAngVwMsAAszSYVld2/1+a7S5efvUwMBpBgDl lmgikUZPz2/U2vqdxSy1zDgsghYAjQD8IniTWdpyOd45MTHvPXbsmgJczMCZMz/R0FAymE5n d9k27wfwwRpKB4CQMc58KjWHqamFCQCTrhkYGZnUMzPZXbbN74jg4/U4InjJcfAuM2/J5bjf VQPGMInAByC0Ca0OQJ0IJgFkfL7uSXKrCy5cuEXXrz/wJZOzwYUF02zbHC8mzrUiPHEiIgcO NOTC4S1PAUwXG+eagXLhWg309o7S4GDCm0rNB7F010XBtRqor7/sefIk02IMvy+CUwWFCec9 HvWLKxmorv5ih+NIveNwtBjxPJLZ7MVRVwzYttMkgigzPi81tmIDHk+skxmvieBssTFK4axS 9NAVA46Dt0XQWSyfCF1K0Z9aq3HAhTYsRRzATaXQV1tb/cfi4qcJoMwMWFask7m0k2tNTRXv A1VV3WFjOJK/81LS/o1SNLvetxUDiUQaV6/+Rb29D7RtO3Tu3Otm794dAgB37z6mK1d+t5jx IjOiJRTcHSIMa42416vm1jW3/BAdP35tZZ6LiG/PnrqRhoZgLm/OOzY2vc8YiTLjqyLFB5XC DSIMGXPp141IKxlYPc8BhMbHZz9Jp7NPAWBuLhu0bSnqhVuG1vhWKbqvtXq0Gc8CgJqaL7fa tvOCMbw/v0S+kcnYPzx7ZqYBQETqShEHcKO62nM7EPBMpVIfZQsaWFjIRUVwGKvWKGMkDpQ+ J7Sm9wIB63Y02vg4EtnmFOJbWsdOYml73Vey2v9xRyncUoruh0KB6aNHX3FaWnYWPIHFjDYs rc7RCi3E+wEME2GICI/Gxj5cLDbQAnAIS6tz2SDCsFKIb1btGxrwetUR2+YOEVwuR9zrVU1a q9mqKmvdPi8EEhFoHWsXQZsIukuMvyly6a1yhJdhAYDfb40awzO2zfOOg6+LiOsjQr/W6KtE HMhPw/b2xqlwuOZvy9J9RLhYMEjhR60pvnt37UClBlae4oMHv1f37k1uy2RMhFla19YEEc4T IblkgB5qrcaXR6orBlbDsroijiM/47/u+Gej3+tK8S8iEbUQgERQ1wAAAABJRU5ErkJgggpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKwAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQA AAAEc0JJVAgICAh8CGSIAAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBB ZG9iZSBGaXJld29ya3MgQ1MzmNZGAwAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMi8xOS8wNuzj NdgAAAQRdEVYdFhNTDpjb20uYWRvYmUueG1wADw/eHBhY2tldCBiZWdpbj0iICAgIiBpZD0i VzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cis8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2Jl Om5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA0LjEtYzAzNCA0Ni4yNzI5NzYs IFNhdCBKYW4gMjcgMjAwNyAyMjoxMTo0MSAgICAgICAgIj4KKyAgIDxyZGY6UkRGIHhtbG5z OnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+Cisg ICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgorICAgICAgICAgICAgeG1sbnM6 eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KKyAgICAgICAgIDx4YXA6Q3Jl YXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgorICAgICAg ICAgPHhhcDpDcmVhdGVEYXRlPjIwMDctMTEtMDhUMTI6MjA6MjVaPC94YXA6Q3JlYXRlRGF0 ZT4KKyAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTAxLTE2VDEwOjQ4OjUyWjwveGFw Ok1vZGlmeURhdGU+CisgICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KKyAgICAgIDxyZGY6RGVz Y3JpcHRpb24gcmRmOmFib3V0PSIiCisgICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1 cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgorICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9w bmc8L2RjOmZvcm1hdD4KKyAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgorICAgPC9yZGY6UkRG PgorPC94OnhtcG1ldGE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0j72wAAA/FJREFU WIXFl89rE2kYxz8zTSc/Gmq2RJrqbqnpbj0Y2FDZLcHVbQ9S8GJLyaF4iQjtaWlOop52/4CC 60GIBxUsHlRs6/ayXhpYoQfRZqGHHLqaBekPbLtjpzRjmmT2MPnZmU6SuotfeAm8eZ/n+3mf ed+Z9xU0TeNzygYgCEJ9o2MMAf1AEPgW8BT+kYE/gQQQZ5wZqzSVkxY0TbMGiOEBosBEhSFH HUfxOrwAbKgbvFffV0bJwK/ATcaRrSCsAfQZ3wM8LpuLs76z9Hp7Oek5aTo8KSd5vfGaF2sv 2M3uFkEum1WkNkCMe0DEaXMycGyAgWMDOJuc5qD7lM6lmV+ZZ35lnnQ2DXCfcS7XD1Aw73B1 EPaH6XB1WBpqmC/k1d1Vnrx5wuruqgHiYICCebuznUvfXMLR5OBTdoqaU3m4/JD19HoVhDmA /synvQ4vw13D2JvshoSOZQeB5gAAL3MvEfzGx7e/Ih9zH5lJzbChbgAMM86MEUBf7W8lUfIM fjVIm73NkPj42+OMfjdKT08PAIuLi9xO366rElvqFs/fPSeTz8jACW1MkwHEijETgKe7tZtm sRllT6lufytc+fEKK4FAAEmSkCSJvr4+dvZ2ajYlo9AsNuNv9YO+lSeKprYKK4CoTbThc/lQ 9hTDDJyiE7/fb+jfzmzXVQEAn8vH8vYy2Xw2Civ8UgaIcRHweB3e4v41SM2ppv1msFbyOrys 7a55hDvCRW1Mmy1WoB/ALtoPTthSbZqUk0ynpg3ja+0Yu1ha2P1ACSAIkCdvOaOF9QVC7SGe /fWMa6+uWRrVoSCU10BQFESUjHU57766S+hCiJAUQt1UybZma7qYvaREQSSv5YNQ3IZ3BE1A QBREw+BKuVQX2z/piy4Si/BAfFATwEx5La/DjWllRw2NnJazbIpdIb4SB2CifwLSerJGW1U1 Ciu/pp9MM00uTAJw6sQpTu+dPlQFKj2LAIl6o+Y250gpKSRJ4sb3Nz4FIHEoAICrf1wF4Hzv edyym86tTqK5KJ1bnYcGiDcS+fTNU1JKipaWFia/nmTqzBTXR64zdWaKcx/O1ZsmDtUfo3+o OHLVUvjLMI8uPGJnZwe3213qX1paIjwXJtmWtAorl7Ux7Quo/hjdrNcc4PG7x8RX4lXmAIFA gFs/3KoVXvLaD1D3bgAYnB0ksWlcPke6j1iFyeYA43wAIo0AZJoyjPw2QkpJlfriK3FGfx+1 CiuLFLwAiyNZIyANyHAkM7579QH3/0/zSpm//P97CFPzgwHKEEM0uDD3SQaGDjK3BtAhZoEu 4OcGQeRCTFchx4GqfTeslH5060c/TASpvpwmKF9OLU0Nl9PPqX8BK4zvu4CksHwAAAAASUVO RK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLU5hdXIga2RlZXh0cmFn ZWFyLWFkZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9pY29ucy9oaTE2LWFjdGlvbi1j YWxsLnBuZyBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUv c3JjL2ljb25zL2hpMTYtYWN0aW9uLWNhbGwucG5nCi0tLSBrZGVleHRyYWdlYXItYWRkb25z LTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2hpMTYtYWN0aW9uLWNhbGwucG5nCTIw MDUtMDktMTUgMDI6MzM6NDUuMDAwMDAwMDAwICswMjAwCisrKyBrZGVleHRyYWdlYXItYWRk b25zLTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2hpMTYtYWN0aW9uLWNh bGwucG5nCTIwMDgtMDEtMTYgMTM6NTE6MjEuMDAwMDAwMDAwICswMTAwCkBAIC0xLDUgKzEs MjAgQEAKIIlQTkcNCiAaCi0AAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcUlEQVQ4jZ2T QQotwCAMBCf9uPbl20MVtNQkGhARnSEuiiR2BlSN64uNMrs1zkBeMEKT7G3rTLLVwaqOrwAg FUsJ/uB0BytYKhYKLSLYFWTgSTACWRjaO/BC8mAAg3oMA1zeZgRDy2B1KILh8xd6Fhmw1wNU XWvnVfrQIwAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKwAAAA1J SERSAAAAEAAAABAIBgAAAB/z/2EAAAAEc0JJVAgICAh8CGSIAAAACXBIWXMAAAsSAAALEgHS 3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1MzmNZGAwAAABZ0RVh0Q3Jl YXRpb24gVGltZQAxMi8xOS8wNuzjNdgAAAQRdEVYdFhNTDpjb20uYWRvYmUueG1wADw/eHBh Y2tldCBiZWdpbj0iICAgIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cis8eDp4 bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29y ZSA0LjEtYzAzNCA0Ni4yNzI5NzYsIFNhdCBKYW4gMjcgMjAwNyAyMjoxMTo0MSAgICAgICAg Ij4KKyAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y Mi1yZGYtc3ludGF4LW5zIyI+CisgICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0i IgorICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv Ij4KKyAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFw OkNyZWF0b3JUb29sPgorICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDctMTEtMDhUMTI6 MjA6MjVaPC94YXA6Q3JlYXRlRGF0ZT4KKyAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4 LTAxLTE2VDEwOjQ4OjUyWjwveGFwOk1vZGlmeURhdGU+CisgICAgICA8L3JkZjpEZXNjcmlw dGlvbj4KKyAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCisgICAgICAgICAg ICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgorICAgICAg ICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KKyAgICAgIDwvcmRmOkRlc2Ny aXB0aW9uPgorICAgPC9yZGY6UkRGPgorPC94OnhtcG1ldGE+CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgV0j72wAAAfZJREFUOI2Fk7FLW1EUxn/35VVqjKhBoQi+PIUWBR8kWJcu7SS4 ZcmgS8UhGQST/0BxFpqMb3uuTg4F6Vahk1YbSpcGIYYOMabGWGLCS8y7HTRpXhLpB2e45/vO ud+9nCPohokOJIC3QPAxmwaOgCQxLjrloqs46VW98eWpZRYmFgj4AgDkKjlOi6cc/jqkel9N yahMAAghOhqYfFucWAyG9TCD6mCPMYDafY2DiwNOiidpGZUhIQSex+IPht8IL00tYTs2s6Oz rL5cRSA4+31GpVGh0qhgN22mh6e5bdy+2PiyMcpHPqmY6APKQMLwGxSqBQAiMxEAxp+Pc1W7 QiJdTgy/QaacSdTNekoFtjSfRskutQV3jTuGng1xY99wWbvs+xzNp3H+53xLBYKqolKoFdrk cfGYfDXP7vfdvsUAqqICBAUmctI76SIjMxF2Xu8wtz/XY78T+WoegYn0CI+LGBkY4fr9NetH 6+xl9p5s4EgHBUg3ZZPOKNklrIzF5vwmjnTQfBqOdHoCSCs8TFkPtr9uow/rZFeyZFeyrL1a 6ydLC0wC4B7PFuLzcZJvkgCU62XGrLFuia4QIwck+zVI/UhhZSwArJ9WN50kRs41yvxbnv+h PcpKOxUj9JST7ptlVIZaB9FDP/xJAniHe50/t2x3yv8Co5vJ08d9alIAAAAASUVORK5CYIIK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLU5hdXIga2RlZXh0cmFnZWFyLWFk ZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9pY29ucy9oaTE2LWFjdGlvbi1jb250YWN0 X2ZmY19vdmVybGF5LnBuZyBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3Bl dGVfc2t5cGUvc3JjL2ljb25zL2hpMTYtYWN0aW9uLWNvbnRhY3RfZmZjX292ZXJsYXkucG5n Ci0tLSBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2ljb25z L2hpMTYtYWN0aW9uLWNvbnRhY3RfZmZjX292ZXJsYXkucG5nCTIwMDUtMDktMTUgMDI6MzM6 NDUuMDAwMDAwMDAwICswMjAwCisrKyBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhl ZC9rb3BldGVfc2t5cGUvc3JjL2ljb25zL2hpMTYtYWN0aW9uLWNvbnRhY3RfZmZjX292ZXJs YXkucG5nCTIwMDgtMDgtMzAgMTY6MDY6NDMuMDAwMDAwMDAwICswMjAwCkBAIC0xLDQgKzEs NCBAQAogiVBORw0KIBoKLQAAAA1JSERSAAAADwAAABAIBgAAAMlWJQQAAAAGYktHRAD/AP8A /6C9p5MAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfTAwgPADoXOgiRAAACS0lEQVR4 nH2Q30tTYRjHPzuN/oBATOgmxmSCIgwWil4k6Qi6DzUoEK+cuZjeBIIgXpZ5UZndddG6qDtR YV4IThc4igzm0MOGTttc7IeHwdEzzzlvF6edaWDPzfu+z/N+nu/zfeA/4R324h32Xll3XlXw BXwEQ0GUqoJxarD9cZuWBy0A6KqOvCZzrfa5c7yTJm8T2XgW77CX/tF+9pQ9oodRyhtlGpob AJh4NYF0R+Lg2wFSDZwOTdujAmTVLInfCdScak8z+mKUWD7GbnL38tj5szz+IT8r8ys8bq0K Lb6ucqNybBU7IHfvoWP5cBllX2Hn9Q6ln6XLyxmJjTA31yqEWBdCLAjDeCKEaBSm6RSBAKL7 fTfuHnd9Yb6AD0MzAGjeWhfB4FsGB+8CEA630duXB+DLZ5ic3BAR3I4aLAGEnocYCA78TSXt zkIk7HuhYJ1m1cTV5bKU42/izGqzdAx10FQ5xjRjhMNtNrgacZJK6RSLUCpJeKY8KPtKXdk4 NYi+jFoJ6Qe9fdu2Yiaj0z8A6bT1VvYVtIJmKbc/amdsaox0JQ3LCwiRYDXipM+vc3JiAeOh +mK1gkZpydq00zwzSVfSxLNx1EaP4/jphpiZgXfzUCzWFRcXJbYytx1kSqQ2Uxasn+mUtTKa opH/lCeC28GkLMDyWIubz4IOj7Jn+01tpnAml5Loqg6AvCbj7nEj3/c71JxK7kPOhm/J31F/ qWDULUg1SF6T7eR55dwGayMezR+Bge0XwME/4epyIV2XMKumDV6sXWz4B7tuJDalzpLxAAAA AElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorAAAADUlIRFIAAAAQAAAA EAgGAAAAH/P/YQAAAAlwSFlzAAANiQAADYkBUJSCJQAAAz9JREFUOI1dk8tvlGUUxn/v+31z b+llhgmQsailpaZoUFQUq4iIQU2JpmLYGKPRhdbEDWGjbvwDTEyM0UQT4i0mSCIuJBrqwkXB VI0C05IWOtTeL7TTb76Z+W7v+7oobdCTnMVZPL9znuQ8AmBwcDDl5S6c8OXiK1LK7V7kzgWh 90NIxUTaR5r02NbEvnMHd77xN/8rUSqVkpe9T07mmgorR1uTd0hPuQTKoRxMEGkPX7lUwhkc b9aIKD2w3T7S/+zu46PrADmlfnq7ZVO+rzV5p/Rvin3tILDQRqNNhC2SZOJZQbz25Ejw2e+n h04c2gCsqusvZVMdtqcq+DfFvnLw1+dbOjIe2qo2jkXfnR649Gk7gLSI3RWq2sZmL3LwojVx oCsE2iXUNULtsX/bO2u+Y17jFefURwDSC9yrdbWMryv4qkKoaygTAAaBxBYJLJng8cK73JM7 Ria2mdbkDurW9FPniz932LEw9+MN72rnpniBtJ0jLhuphDMIIZHCRiC4L/8qXS29RNrHVw5e tIonynK8fPaQ1HZN2CKBLeJYIs7eLW+SieUJVZUVv0R708GpndEC5lofYvQAR6nSHkwRahfP lDul0gaEwJYptAmJyRR78/1uNVqqd7X0Tt5bHypQOYew81jx2yikuzmSuZ2nlUHqGDKtt4wu 1IqUnF8YLZ9lvnaZhN3QcKzjlP1gfGuBcA5tknzw+SXc1Rk+/HIRo6o8kLS4X83bsi21f8Bx b+hquEQ9Wub78deYq17UtozHxOoZIewsKlig9M8yQXWc69MuJphDUqdZTj0vAL4633/Wyfx2 2BJxfOVg0LUXO74Nmideb05E8xDOIEyw8b5mzTXT1T0IgGKx2PGrc/yPZJNqFAiU8THAo8E1 OtUk3wzkScQ027IBE/MJEjHDcz1LXFk5MCkBuru7x3bZb/V5y6maMZBLdbE51cVs+mGUkbzw 2CJl1+bMYJYwkvTuW6JSt1j0e74QtyZreHh418Wlrz9etv7sSTYIkUm0kHX+4hFdJGGtnW0M lKtxhp2XL7Ttfu+J/wDWEzoyMrJndmXsmdVwvACavNKpFoYOW6aSqwaNc2X90Mkdd/e939bW Vv8X/Bev4jsQ+uAAAAAASUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLU5hdXIga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9p Y29ucy9oaTE2LWFjdGlvbi1jb250YWN0X3Vua25vd25fb3ZlcmxheS5wbmcga2RlZXh0cmFn ZWFyLWFkZG9ucy02NDE2ODctZml4ZWQva29wZXRlX3NreXBlL3NyYy9pY29ucy9oaTE2LWFj dGlvbi1jb250YWN0X3Vua25vd25fb3ZlcmxheS5wbmcKLS0tIGtkZWV4dHJhZ2Vhci1hZGRv bnMtNjQxNjg3L2tvcGV0ZV9za3lwZS9zcmMvaWNvbnMvaGkxNi1hY3Rpb24tY29udGFjdF91 bmtub3duX292ZXJsYXkucG5nCTIwMDUtMDktMTUgMDI6MzM6NDUuMDAwMDAwMDAwICswMjAw CisrKyBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3Jj L2ljb25zL2hpMTYtYWN0aW9uLWNvbnRhY3RfdW5rbm93bl9vdmVybGF5LnBuZwkyMDA4LTA0 LTI4IDEyOjA1OjIwLjAwMDAwMDAwMCArMDIwMApAQCAtMSw0ICsxLDIwIEBACiCJUE5HDQog GgotAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAGZJREFUOI3FUjESwDAI0l7//2U6meZS MGQqmwYMciaAkMh8H4FklMsSs7ra1EGR519ZjzoQxFEvTvQKLSbuT0eEpeA7sDM4EEewFZhQ iHsHhrgfUKJNqPyQDtCHKM7XG1DizZD/M3gAwQ82FcMTGWgAAAAASUVORK5CYIIKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNC SVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAx Mi8xOS8wNuzjNdgAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzOY1kYDAAAE EXRFWHRYTUw6Y29tLmFkb2JlLnhtcAA8P3hwYWNrZXQgYmVnaW49IiAgICIgaWQ9Ilc1TTBN cENlaGlIenJlU3pOVGN6a2M5ZCI/PgorPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczpt ZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQg SmFuIDI3IDIwMDcgMjI6MTE6NDEgICAgICAgICI+CisgICA8cmRmOlJERiB4bWxuczpyZGY9 Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgorICAgICAg PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKKyAgICAgICAgICAgIHhtbG5zOnhhcD0i aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CisgICAgICAgICA8eGFwOkNyZWF0b3JU b29sPkFkb2JlIEZpcmV3b3JrcyBDUzM8L3hhcDpDcmVhdG9yVG9vbD4KKyAgICAgICAgIDx4 YXA6Q3JlYXRlRGF0ZT4yMDA3LTExLTA4VDEyOjIwOjI1WjwveGFwOkNyZWF0ZURhdGU+Cisg ICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAwNy0xMi0wNVQxMjo0MjozNVo8L3hhcDpNb2Rp ZnlEYXRlPgorICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CisgICAgICA8cmRmOkRlc2NyaXB0 aW9uIHJkZjphYm91dD0iIgorICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9y Zy9kYy9lbGVtZW50cy8xLjEvIj4KKyAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9k Yzpmb3JtYXQ+CisgICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KKyAgIDwvcmRmOlJERj4KKzwv eDp4bXBtZXRhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIANquBsAAAKTSURBVDiNhZNL SFRhFMd/38y94zCjzVVnhMlSyywhC6FFhKWBUQlC40JqE7qRVmGzKGhTs2sVGQQtWmRUCEk5 gq1a+AhyUT5IyYwwxcc45uOqOQ9n5n4txhkfBJ3ddzjnd87//PkEAB16OeADrpCMTsBHnTbM f0JsNXdfP6hqlU4FgL7FOC+nYzvrhregLdRpupQy2SwEgg69w+NWPZVO8y7y8qYkxyIAmA1L +pbifF5J6IBXehytKYACeIpsJoIRmW7OVgWX81Tc1iRgImSQqcDxLLPWNrP5XPhXSUFMAAtR g2BUEoxK1uNws9hCRa6ZTQMUE1xwKdwpySDXIriYpwI8Ev5VLQXwD64mmI8azEcNDtsFNrPA H4jhHQ1zYzjMw59R1uMQNiQxKcm3mjSgOQXwfV83mA5JghHJbDgppdqlUO1S0BTB6+kYNZ82 6F9KEIxIslQAPEkXkjbK/VZT+ga+0gyaiizp91pM8mYuxr2xSDoXiEio00QaYBa7/S20majK VahymilLrNHZM0JkMw5Arw6j7qOEGorSgCGgHKDcYablhJXGwTCTIQPbmk79wghXzx2j8mQh ACO/FnjyfojexL5rqb39uyY7FbrP2mkssFARHOeQK5Oa0yW0937jw8AEpQVOjriyyAuvtaQ2 cACTgAZwvzSDW8UZaKrg0u1XOB02nA4bdquKt/4Mb/vG+Ph1isXVENvKO/QGoHXvHVzv2hBb Sp96a3nWNcDgjwAAEsn26eu0F0AjoKdSUyGDlbx8DENiGJKu/nG+jM9hSIkhJeuaK2DaOXEL UkTyZw4DzJWUkVCTxjfVnkqXJhRVbmg5zXvM+3cceNBTb9eXH2eu/HYD/Ml2BTa0nOaZu+fb /wJXxACdWbuF2gAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtTmF1ciBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2lj b25zL2hpMTYtYWN0aW9uLXNreXBlX2Nvbm5lY3QucG5nIGtkZWV4dHJhZ2Vhci1hZGRvbnMt NjQxNjg3LWZpeGVkL2tvcGV0ZV9za3lwZS9zcmMvaWNvbnMvaGkxNi1hY3Rpb24tc2t5cGVf Y29ubmVjdC5wbmcKLS0tIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3L2tvcGV0ZV9za3lw ZS9zcmMvaWNvbnMvaGkxNi1hY3Rpb24tc2t5cGVfY29ubmVjdC5wbmcJMjAwNS0wOS0xNSAw MjozMzo0NS4wMDAwMDAwMDAgKzAyMDAKKysrIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3 LWZpeGVkL2tvcGV0ZV9za3lwZS9zcmMvaWNvbnMvaGkxNi1hY3Rpb24tc2t5cGVfY29ubmVj dC5wbmcJMjAwOC0wOC0zMCAxNjoxOToxMy4wMDAwMDAwMDAgKzAyMDAKQEAgLTEsNCArMSw0 IEBACiCJUE5HDQogGgotAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAFdJREFUOI3Vk0EK LYAwDAR3pP//8noSbYwaKUKdY+lOmoRiWyMsQ+lPBSCDHvtLBZXgRivdgl1o0wneVDvJNPUW qjRbxMPbucQhlsqE0JG0hexVV/D/z7QC+rgXIw1TqfYAAAAASUVORK5CYIIKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCisAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IA rs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAANiQAADYkBUJSCJQAAAAd0SU1FB9gI Hg4TDafPT6oAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAACgUlEQVQ4 y42TTU8TURiFnyntdNppgtMOH1NLJSBiNKQEFiamXRCikbDxN5jwB1ywgEiCQQKJWzVKdOGP IOxBNyYSDBsTVkD4qFOEznSY6XR6XRSr9SN6kje5yT3n3Pc9ea8EkC8UeDA1JbRkEiEEx0dH zM3OSl+KRf4FKV8o8HB6WiQ1jSs9PVQch929PexKBduycD2PkmmytroqvVtf/93gzdu3YmBg gN5sliAIqNVq+L6P7Ti4rovneXjVKr7vc3R4yKOZmZbOQloyidHV1RQHQYAQAiUaJaGqXGpv R08mSWkamUyGZy9fio6Ojh8GQgiq1Sq1ICC4qMvpNDevX2d4aIiRXI6rfX0IYHR4mJiiML+4 KL4bhI8OD4nFYvT29CCEIJvJIEejfN7ZoVwuE4/Hudbfz63RUWRZJhKJYBgG+UKBjfV1QnMz M5JlWVQch6BeR1VVPm1vUy6XCYIAs1TCLJWQZRkAz/MAuDsxIQDCpmliWRbO+TnhcJgPm5vY to3reXiex0guR9owmjPXRaN7XdcbIwB4F2kXXZc7Y2NN8setrWb9CitFURohApimiV2pUHGc FvHu/n6L6P7kZPOsJhJ0dHY2DNZWV6WfiZZtc2NwkJSmAZDSNO6Nj2OWSk2OLMvMLyyIpvDF yoow0ml6s1n2Dw4YzeXo6uxEkqTGeheLLaPUhcD3fZoGuq7zfGVFxGIxotEooVCosap/+QO1 IMBxnNb7lK7zZGlJdHV3E25rIxyJNJJuayMej7cYfD09pXh8/OcHbufzTExOilQqhaIoqIkE qqqiaRoScHZ2xrnr8nR5WZL4D+i6zuPFRdFtGEiSxMnJCa9fvZLeb2zwDTpUGsxPE9gVAAAA AElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC1OYXVyIGtkZWV4 dHJhZ2Vhci1hZGRvbnMtNjQxNjg3L2tvcGV0ZV9za3lwZS9zcmMvbGlic2t5cGUvc2t5cGVk YnVzL2Nvbm5lY3Rpb24uY3BwIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3LWZpeGVkL2tv cGV0ZV9za3lwZS9zcmMvbGlic2t5cGUvc2t5cGVkYnVzL2Nvbm5lY3Rpb24uY3BwCi0tLSBr ZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3Nr eXBlZGJ1cy9jb25uZWN0aW9uLmNwcAkyMDA1LTEwLTI3IDAyOjMxOjM3LjAwMDAwMDAwMCAr MDIwMAorKysga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODctZml4ZWQva29wZXRlX3NreXBl L3NyYy9saWJza3lwZS9za3lwZWRidXMvY29ubmVjdGlvbi5jcHAJMjAwOC0wOC0zMCAxNTow MzoyOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTEsMzIgKzEsMjUgQEAKIC8vIC0qLSBNb2RlOiBD Kys7IGMtYmFzaWMtb2Zmc2V0OiAyOyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLQotCiAv KiBjb25uZWN0aW9uLmNwcDogUXQgd3JhcHBlciBmb3IgREJ1c0Nvbm5lY3Rpb24KLSoKLSog Q29weXJpZ2h0IChDKSAyMDAzICBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+Ci0qCi0qIExp Y2Vuc2VkIHVuZGVyIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgdmVyc2lvbiAyLjAKLSoK LSogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSogdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSog KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSoKLSogVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0q IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0qIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSoKLSogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSogYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSogRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTEx LTEzMDcgIFVTQQotKgotKi8KLQotI2luY2x1ZGUgPHFhcHBsaWNhdGlvbi5oPgotI2luY2x1 ZGUgPHF0aW1lci5oPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jZGVmaW5lIERCVVNfQVBJ X1NVQkpFQ1RfVE9fQ0hBTkdFCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAzICBaYWNrIFJ1 c2luIDx6YWNrQGtkZS5vcmc+CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFjYWRlbWlj IEZyZWUgTGljZW5zZSB2ZXJzaW9uIDIuMAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EK KyAqCisgKi8KICNpbmNsdWRlICJjb25uZWN0aW9uLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBE QnVzUXQ7CkBAIC0zNiwyNTAgKzI5LDEzNiBAQAogCiBzdHJ1Y3QgQ29ubmVjdGlvbjo6UHJp dmF0ZQogewotCVByaXZhdGUoIENvbm5lY3Rpb24gKiBxcSApOwotCX5Qcml2YXRlKCAgKTsK LQl2b2lkIHNldENvbm5lY3Rpb24oIERCdXNDb25uZWN0aW9uICogYywgYm9vbCB0bXAgPSBG QUxTRSApOwotCURCdXNDb25uZWN0aW9uICpjb25uZWN0aW9uOwotCWludCBjb25uZWN0aW9u U2xvdDsKLQlEQnVzRXJyb3IgZXJyb3I7Ci0JSW50ZWdyYXRvciAqaW50ZWdyYXRvcjsKLQlp bnQgdGltZW91dDsKLQlDb25uZWN0aW9uICpxOworICBQcml2YXRlKCBDb25uZWN0aW9uICpx cSApOworICB2b2lkIHNldENvbm5lY3Rpb24oIERCdXNDb25uZWN0aW9uICpjICk7CisgIERC dXNDb25uZWN0aW9uICpjb25uZWN0aW9uOworICBpbnQgY29ubmVjdGlvblNsb3Q7CisgIERC dXNFcnJvciBlcnJvcjsKKyAgSW50ZWdyYXRvciAqaW50ZWdyYXRvcjsKKyAgaW50IHRpbWVv dXQ7CisgIENvbm5lY3Rpb24gKnE7CiB9OwogCi1Db25uZWN0aW9uOjpQcml2YXRlOjpQcml2 YXRlKCBDb25uZWN0aW9uICogcXEgKTpjb25uZWN0aW9uKCAwICksIGNvbm5lY3Rpb25TbG90 KCAtMSApLCBpbnRlZ3JhdG9yKCAwICksIHRpbWVvdXQoIC0xICksIHEoIHFxICkKK0Nvbm5l Y3Rpb246OlByaXZhdGU6OlByaXZhdGUoIENvbm5lY3Rpb24gKnFxICkKKyAgOiBjb25uZWN0 aW9uKCAwICksIGNvbm5lY3Rpb25TbG90KCAwICksIGludGVncmF0b3IoIDAgKSwKKyAgICB0 aW1lb3V0KCAtMSApLCBxKCBxcSApCiB7Ci0JZGJ1c19lcnJvcl9pbml0KCAmZXJyb3IgKTsK KyAgZGJ1c19lcnJvcl9pbml0KCAmZXJyb3IgKTsKIH0KIAotQ29ubmVjdGlvbjo6UHJpdmF0 ZTo6flByaXZhdGUoICApCit2b2lkIENvbm5lY3Rpb246OlByaXZhdGU6OnNldENvbm5lY3Rp b24oIERCdXNDb25uZWN0aW9uICpjICkKIHsKLQlkZWxldGUgaW50ZWdyYXRvcjsKKyAgaWYg KCFjKSB7CisgICAgcURlYnVnKCAiZXJyb3I6ICVzLCAlcyIsIGVycm9yLm5hbWUsIGVycm9y Lm1lc3NhZ2UgKTsKKyAgICBkYnVzX2Vycm9yX2ZyZWUoICZlcnJvciApOworICAgIHJldHVy bjsKKyAgfQorICBjb25uZWN0aW9uID0gYzsKKyAgaW50ZWdyYXRvciA9IG5ldyBJbnRlZ3Jh dG9yKCBjLCBxICk7CisgIGNvbm5lY3QoIGludGVncmF0b3IsIFNJR05BTChyZWFkUmVhZHko KSksIHEsIFNMT1QoZGlzcGF0Y2hSZWFkKCkpICk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6 UHJpdmF0ZTo6c2V0Q29ubmVjdGlvbiggREJ1c0Nvbm5lY3Rpb24gKiBjLCBib29sIHRtcCAp CitDb25uZWN0aW9uOjpDb25uZWN0aW9uKCBRT2JqZWN0ICpwYXJlbnQgKQorICA6IFFPYmpl Y3QoIHBhcmVudCApCiB7Ci0JaWYgKCAhYyApCi0JewotCQlyZXR1cm47Ci0JfQotCi0JY29u bmVjdGlvbiA9IGM7Ci0JaW50ZWdyYXRvciA9IG5ldyBJbnRlZ3JhdG9yKCBjLCBxLCB0bXAg KTsKLQljb25uZWN0KCBpbnRlZ3JhdG9yLCBTSUdOQUwoIHJlYWRSZWFkeSggICkgKSwgcSwg U0xPVCggZGlzcGF0Y2hSZWFkKCAgKSApICk7CisgIGQgPSBuZXcgUHJpdmF0ZSggdGhpcyAp OwogfQogCi1Db25uZWN0aW9uOjpDb25uZWN0aW9uKCBRT2JqZWN0ICogcGFyZW50ICk6UU9i amVjdCggcGFyZW50ICkKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb24oIGNvbnN0IFFTdHJpbmcm IGhvc3QsIFFPYmplY3QgKnBhcmVudCApCisgIDogUU9iamVjdCggcGFyZW50ICkKIHsKLQlk ID0gbmV3IFByaXZhdGUoIHRoaXMgKTsKKyAgZCA9IG5ldyBQcml2YXRlKCB0aGlzICk7CiAK LQlkYnVzX2Vycm9yX2luaXQoICZkLT5lcnJvciApOworICBpZiAoICFob3N0LmlzRW1wdHko KSApCisgICAgaW5pdCggaG9zdCApOwogfQogCi1Db25uZWN0aW9uOjpDb25uZWN0aW9uKCBj b25zdCBRU3RyaW5nICYgaG9zdCwgUU9iamVjdCAqIHBhcmVudCApOlFPYmplY3QoIHBhcmVu dCApCitDb25uZWN0aW9uOjpDb25uZWN0aW9uKCBEQnVzQnVzVHlwZSB0eXBlLCBRT2JqZWN0 KiBwYXJlbnQgKQorICA6IFFPYmplY3QoIHBhcmVudCApCiB7Ci0JZCA9IG5ldyBQcml2YXRl KCB0aGlzICk7Ci0KLQlpZiAoICFob3N0LmlzRW1wdHkoICApICkKLQl7Ci0JCURCdXNDb25u ZWN0aW9uICpjbiA9IGRidXNfY29ubmVjdGlvbl9vcGVuKCBob3N0LmFzY2lpKCAgKSwgJmQt PmVycm9yICk7Ci0KLQkJaWYgKCBlcnJvciggICkgKQotCQl7Ci0JCQlxRGVidWcoICJkYnVz X2Nvbm5lY3Rpb25fb3BlbiBmYWlsZWQuIiApOwotCQkJcmV0dXJuOwotCQl9Ci0KLQkJZC0+ c2V0Q29ubmVjdGlvbiggY24sIFRSVUUgKTsKLQl9CisgIGQgPSBuZXcgUHJpdmF0ZSggdGhp cyApOworICBkLT5zZXRDb25uZWN0aW9uKCBkYnVzX2J1c19nZXQodHlwZSwgJmQtPmVycm9y KSApOwogfQogCi1Db25uZWN0aW9uOjpDb25uZWN0aW9uKCBEQnVzQnVzVHlwZSB0eXBlLCBR T2JqZWN0ICogcGFyZW50LCBib29sIHRlbXBvcmFyeSApOlFPYmplY3QoIHBhcmVudCApCit2 b2lkIENvbm5lY3Rpb246OmluaXQoIGNvbnN0IFFTdHJpbmcmIGhvc3QgKQogewotCi0JcURl YnVnKCAiQ29ubmVjdGlvbjo6Q29ubmVjdGlvbiIgKTsKLQlkID0gbmV3IFByaXZhdGUoIHRo aXMgKTsKLQlEQnVzQ29ubmVjdGlvbiAqY24gPSBkYnVzX2J1c19nZXQoIHR5cGUsICZkLT5l cnJvciApOwotCi0JaWYgKCBlcnJvciggICkgKQotCXsKLQkJcURlYnVnKCAiZGJ1c19idXNf Z2V0IGZhaWxlZC4iICk7Ci0JCXJldHVybjsKLQl9Ci0KLQlkLT5zZXRDb25uZWN0aW9uKCBj biwgdGVtcG9yYXJ5ICk7Ci0KLQkvL1FUaW1lciAqdGltZXIgPSBuZXcgUVRpbWVyKHRoaXMp OwotCi0JLy9jb25uZWN0KHRpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChk aXNwYXRjaFJlYWQoKSkpOwotCi0JLy90aW1lci0+c3RhcnQoNTAwLCBGQUxTRSk7CisgIGQt PnNldENvbm5lY3Rpb24oIGRidXNfY29ubmVjdGlvbl9vcGVuKCBob3N0LmFzY2lpKCksICZk LT5lcnJvcikgKTsKKyAgLy9kYnVzX2Nvbm5lY3Rpb25fYWxsb2NhdGVfZGF0YV9zbG90KCAm ZC0+Y29ubmVjdGlvblNsb3QgKTsKKyAgLy9kYnVzX2Nvbm5lY3Rpb25fc2V0X2RhdGEoIGQt PmNvbm5lY3Rpb24sIGQtPmNvbm5lY3Rpb25TbG90LCAwLCAwICk7CiB9CiAKLUNvbm5lY3Rp b246On5Db25uZWN0aW9uKCAgKQorYm9vbCBDb25uZWN0aW9uOjppc0Nvbm5lY3RlZCgpIGNv bnN0CiB7Ci0JZGVsZXRlIGQtPmludGVncmF0b3I7Ci0JZC0+aW50ZWdyYXRvciA9IDBMOwot Ci0JZGJ1c19jb25uZWN0aW9uX3VucmVmKCBkLT5jb25uZWN0aW9uICk7Ci0JZGVsZXRlIGQ7 CisgIHJldHVybiBkYnVzX2Nvbm5lY3Rpb25fZ2V0X2lzX2Nvbm5lY3RlZCggZC0+Y29ubmVj dGlvbiApOwogfQogCi12b2lkIENvbm5lY3Rpb246OmluaXQoIGNvbnN0IFFTdHJpbmcgJiBo b3N0ICkKK2Jvb2wgQ29ubmVjdGlvbjo6aXNBdXRoZW50aWNhdGVkKCkgY29uc3QKIHsKLQlk LT5zZXRDb25uZWN0aW9uKCBkYnVzX2Nvbm5lY3Rpb25fb3BlbiggaG9zdC5hc2NpaSggICks ICZkLT5lcnJvciApICk7Ci0JZGJ1c19jb25uZWN0aW9uX2FsbG9jYXRlX2RhdGFfc2xvdCgg JmQtPmNvbm5lY3Rpb25TbG90ICk7Ci0JZGJ1c19jb25uZWN0aW9uX3NldF9kYXRhKCBkLT5j b25uZWN0aW9uLCBkLT5jb25uZWN0aW9uU2xvdCwgMCwgMCApOworICByZXR1cm4gZGJ1c19j b25uZWN0aW9uX2dldF9pc19hdXRoZW50aWNhdGVkKCBkLT5jb25uZWN0aW9uICk7CiB9CiAK LWJvb2wgQ29ubmVjdGlvbjo6aXNDb25uZWN0ZWQoICApIGNvbnN0Cit2b2lkIENvbm5lY3Rp b246Om9wZW4oIGNvbnN0IFFTdHJpbmcmIGhvc3QgKQogewotCXJldHVybiBkYnVzX2Nvbm5l Y3Rpb25fZ2V0X2lzX2Nvbm5lY3RlZCggZC0+Y29ubmVjdGlvbiApOwotfQorICBpZiAoIGhv c3QuaXNFbXB0eSgpICkgcmV0dXJuOwogCi1ib29sIENvbm5lY3Rpb246OmlzQXV0aGVudGlj YXRlZCggICkgY29uc3QKLXsKLQlyZXR1cm4gZGJ1c19jb25uZWN0aW9uX2dldF9pc19hdXRo ZW50aWNhdGVkKCBkLT5jb25uZWN0aW9uICk7CisgIGluaXQoIGhvc3QgKTsKIH0KIAotdm9p ZCBDb25uZWN0aW9uOjpvcGVuKCBjb25zdCBRU3RyaW5nICYgaG9zdCApCit2b2lkIENvbm5l Y3Rpb246OmNsb3NlKCkKIHsKLQlpZiAoIGhvc3QuaXNFbXB0eSggICkgKQotCQlyZXR1cm47 Ci0KLQlpbml0KCBob3N0ICk7CisgIGRidXNfY29ubmVjdGlvbl9jbG9zZSggZC0+Y29ubmVj dGlvbiApOwogfQogCi12b2lkIENvbm5lY3Rpb246OmNsb3NlKCAgKQordm9pZCBDb25uZWN0 aW9uOjpmbHVzaCgpCiB7Ci0JZGJ1c19jb25uZWN0aW9uX2Rpc2Nvbm5lY3QoIGQtPmNvbm5l Y3Rpb24gKTsKKyAgZGJ1c19jb25uZWN0aW9uX2ZsdXNoKCBkLT5jb25uZWN0aW9uICk7CiB9 CiAKLXZvaWQgQ29ubmVjdGlvbjo6Zmx1c2goICApCit2b2lkIENvbm5lY3Rpb246OmRpc3Bh dGNoUmVhZCgpCiB7Ci0JZGJ1c19jb25uZWN0aW9uX2ZsdXNoKCBkLT5jb25uZWN0aW9uICk7 CisgIHdoaWxlICggZGJ1c19jb25uZWN0aW9uX2Rpc3BhdGNoKCBkLT5jb25uZWN0aW9uICkg PT0gREJVU19ESVNQQVRDSF9EQVRBX1JFTUFJTlMgKQorICAgIDsKIH0KIAotYm9vbCBDb25u ZWN0aW9uOjpldmVudCggUUV2ZW50ICogZSApCitEQnVzQ29ubmVjdGlvbiogQ29ubmVjdGlv bjo6Y29ubmVjdGlvbigpIGNvbnN0CiB7Ci0JaWYgKCBlLT50eXBlKCAgKSA9PSBEQlVTX0VW RU5UX1dBS0VVUCApCi0JewotCQlxRGVidWcoICJDdXN0b20gZXZlbnQgcmVjZWl2ZWQuIiAp OwotCi0JCWRpc3BhdGNoUmVhZCggICk7Ci0KLQkJcmV0dXJuIFRSVUU7Ci0JfQotCWVsc2UK LQkJcmV0dXJuIFFPYmplY3Q6OmV2ZW50KCBlICk7CisgIHJldHVybiBkLT5jb25uZWN0aW9u OwogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoUmVhZCggICkKK0Nvbm5lY3Rpb246 OkNvbm5lY3Rpb24oIERCdXNDb25uZWN0aW9uICpjb25uZWN0aW9uLCBRT2JqZWN0ICpwYXJl bnQgICkKKyAgOiBRT2JqZWN0KCBwYXJlbnQgKQogewotCXFEZWJ1ZyggIkFQSTogZGlzcGF0 Y2hSZWFkIiApOwotCi0JLy9kYnVzX2Nvbm5lY3Rpb25fZmx1c2goZC0+Y29ubmVjdGlvbik7 Ci0KLQkvKkRCdXNEaXNwYXRjaFN0YXR1cyBzdGF0dXMgPSBkYnVzX2Nvbm5lY3Rpb25fZ2V0 X2Rpc3BhdGNoX3N0YXR1cyhkLT5jb25uZWN0aW9uKTsKLQotCSAgIGlmIChzdGF0dXMgPT0g REJVU19ESVNQQVRDSF9EQVRBX1JFTUFJTlMpCi0JICAgZGJ1c19jb25uZWN0aW9uX2Rpc3Bh dGNoKCBkLT5jb25uZWN0aW9uICk7Ci0JICovCi0KLQkvKkRCdXNEaXNwYXRjaFN0YXR1cyBz dGF0dXMgPSBkYnVzX2Nvbm5lY3Rpb25fZ2V0X2Rpc3BhdGNoX3N0YXR1cyhkLT5jb25uZWN0 aW9uKTsKLQotCSAgIHN3aXRjaChzdGF0dXMpCi0JICAgewotCSAgIGNhc2UgREJVU19ESVNQ QVRDSF9EQVRBX1JFTUFJTlM6Ci0JICAgcURlYnVnKCJEQlVTX0RJU1BBVENIX0RBVEFfUkVN QUlOUyIpOwotCSAgIGJyZWFrOwotCSAgIGNhc2UgREJVU19ESVNQQVRDSF9DT01QTEVURToK LQkgICBxRGVidWcoIkRCVVNfRElTUEFUQ0hfQ09NUExFVEUiKTsKLQkgICBicmVhazsKLQkg ICBjYXNlIERCVVNfRElTUEFUQ0hfTkVFRF9NRU1PUlk6Ci0JICAgcURlYnVnKCJEQlVTX0RJ U1BBVENIX05FRURfTUVNT1JZIik7Ci0JICAgYnJlYWs7Ci0JICAgZGVmYXVsdDoKLQkgICBx RGVidWcoIlVOS05PV04iKTsKLQkgICBicmVhazsKLQkgICB9ICovCi0KLQl3aGlsZSAoIGRi dXNfY29ubmVjdGlvbl9kaXNwYXRjaCggZC0+Y29ubmVjdGlvbiApID09IERCVVNfRElTUEFU Q0hfREFUQV9SRU1BSU5TICkgOwotCi0JLy8gc3RhdHVzOwotCS8vd2hpbGUoMSkKLQkvKgot CSAgIGRvCi0JICAgewotCSAgIHN0YXR1cyA9IGRidXNfY29ubmVjdGlvbl9kaXNwYXRjaChk LT5jb25uZWN0aW9uKTsvL0RCVVNfRElTUEFUQ0hfQ09NUExFVEU7Ci0JICAgLy8KLQotCSAg IHN3aXRjaChzdGF0dXMpCi0JICAgewotCSAgIGNhc2UgREJVU19ESVNQQVRDSF9EQVRBX1JF TUFJTlM6Ci0JICAgcURlYnVnKCJEQlVTX0RJU1BBVENIX0RBVEFfUkVNQUlOUyIpOwotCSAg IGJyZWFrOwotCSAgIGNhc2UgREJVU19ESVNQQVRDSF9DT01QTEVURToKLQkgICBxRGVidWco IkRCVVNfRElTUEFUQ0hfQ09NUExFVEUiKTsKLQkgICBicmVhazsKLQkgICBjYXNlIERCVVNf RElTUEFUQ0hfTkVFRF9NRU1PUlk6Ci0JICAgcURlYnVnKCJEQlVTX0RJU1BBVENIX05FRURf TUVNT1JZIik7Ci0JICAgYnJlYWs7Ci0JICAgZGVmYXVsdDoKLQkgICBxRGVidWcoIlVOS05P V04iKTsKLQkgICBicmVhazsKLQkgICB9Ci0KLQkgICBpZiAoc3RhdHVzID09IERCVVNfRElT UEFUQ0hfREFUQV9SRU1BSU5TKQotCSAgIHsKLQkgICBxRGVidWcoImRpc3BhdGNoaW5nIC4u LiIpOwotCi0JICAgZGJ1c19jb25uZWN0aW9uX2Rpc3BhdGNoKGQtPmNvbm5lY3Rpb24pOwot CSAgIH0KLQotCSAgIH0gd2hpbGUgKHN0YXR1cyAhPSBEQlVTX0RJU1BBVENIX0NPTVBMRVRF KTsKLQkgKi8KKyAgZCA9IG5ldyBQcml2YXRlKHRoaXMpOworICBkLT5zZXRDb25uZWN0aW9u KGNvbm5lY3Rpb24pOwogfQogCi1EQnVzQ29ubmVjdGlvbiAqQ29ubmVjdGlvbjo6Y29ubmVj dGlvbiggICkKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZCggY29uc3QgTWVzc2FnZSAmbSApCiB7 Ci0JcmV0dXJuIGQtPmNvbm5lY3Rpb247CisgICAgZGJ1c19jb25uZWN0aW9uX3NlbmQoZC0+ Y29ubmVjdGlvbiwgbS5tZXNzYWdlKCksIDApOwogfQogCi1Db25uZWN0aW9uOjpDb25uZWN0 aW9uKCBEQnVzQ29ubmVjdGlvbiAqIGNvbm5lY3Rpb24sIFFPYmplY3QgKiBwYXJlbnQgKTpR T2JqZWN0KCBwYXJlbnQgKQordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KCBjb25z dCBNZXNzYWdlJiApCiB7Ci0JZCA9IG5ldyBQcml2YXRlKCB0aGlzICk7Ci0JZC0+c2V0Q29u bmVjdGlvbiggY29ubmVjdGlvbiApOwogfQogCi12b2lkIENvbm5lY3Rpb246OnNlbmQoIGNv bnN0IE1lc3NhZ2UgJiBtICkKK01lc3NhZ2UgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseUFu ZEJsb2NrKCBjb25zdCBNZXNzYWdlICZtICkKIHsKLQkodm9pZCkgZ2V0RXJyb3IoKTsKLQlk YnVzX2Nvbm5lY3Rpb25fc2VuZCggZC0+Y29ubmVjdGlvbiwgbS5tZXNzYWdlKCAgKSwgMCAp OwotfQotCi12b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkoIGNvbnN0IE1lc3NhZ2Ug JiApCi17Ci19Ci0KLU1lc3NhZ2UgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseUFuZEJsb2Nr KCBjb25zdCBNZXNzYWdlICYgbSApCi17Ci0JKHZvaWQpIGdldEVycm9yKCk7Ci0JREJ1c01l c3NhZ2UgKnJlcGx5OwotCi0JcmVwbHkgPSBkYnVzX2Nvbm5lY3Rpb25fc2VuZF93aXRoX3Jl cGx5X2FuZF9ibG9jayggZC0+Y29ubmVjdGlvbiwgbS5tZXNzYWdlKCAgKSwgZC0+dGltZW91 dCwgJmQtPmVycm9yICk7Ci0KLQlpZiAoIGVycm9yKCAgKSApCi0JCXJldHVybiBtOwotCWVs c2UKLQkJcmV0dXJuIE1lc3NhZ2UoIHJlcGx5ICk7CisgIERCdXNNZXNzYWdlICpyZXBseTsK KyAgcmVwbHkgPSBkYnVzX2Nvbm5lY3Rpb25fc2VuZF93aXRoX3JlcGx5X2FuZF9ibG9jaygg ZC0+Y29ubmVjdGlvbiwgbS5tZXNzYWdlKCksIGQtPnRpbWVvdXQsICZkLT5lcnJvciApOwor ICBpZiAoZGJ1c19lcnJvcl9pc19zZXQoJmQtPmVycm9yKSkgeworICAgICAgcURlYnVnKCJl cnJvcjogJXMsICVzIiwgZC0+ZXJyb3IubmFtZSwgZC0+ZXJyb3IubWVzc2FnZSk7CisgICAg ICBkYnVzX2Vycm9yX2ZyZWUoJmQtPmVycm9yKTsKKyAgfQorICByZXR1cm4gTWVzc2FnZSgg cmVwbHkgKTsKIH0KIAorLyoqIEFkZGVkIGZvciBza3lwZWNvbm5lY3Rpb24uY3BwICovCiBi b29sIENvbm5lY3Rpb246OmVycm9yKCAgKQogewogCXJldHVybiBkYnVzX2Vycm9yX2lzX3Nl dCggJmQtPmVycm9yICk7CiB9CiAKKy8qKiBBZGRlZCBmb3Igc2t5cGVjb25uZWN0aW9uLmNw cCAqLwogUVN0cmluZyBDb25uZWN0aW9uOjpnZXRFcnJvciggICkKIHsKIAlRU3RyaW5nIGVy cjsKQEAgLTI5MywxMSArMTcyLDE2IEBACiAJcmV0dXJuIGVycjsKIH0KIAotdm9pZCAqQ29u bmVjdGlvbjo6dmlydHVhbF9ob29rKCBpbnQsIHZvaWQgKiApCit2b2lkKiBDb25uZWN0aW9u Ojp2aXJ0dWFsX2hvb2soIGludCwgdm9pZCogICkKK3sKK30KKwordm9pZCBDb25uZWN0aW9u OjpkYnVzX2Nvbm5lY3Rpb25fc2V0dXBfd2l0aF9xdF9tYWluIChEQnVzQ29ubmVjdGlvbiAq Y29ubmVjdGlvbikKIHsKLQlyZXR1cm4gMDsKKyAgZC0+c2V0Q29ubmVjdGlvbiggY29ubmVj dGlvbiApOwogfQogCisvKiogQWRkZWQgZm9yIHNreXBlY29ubmVjdGlvbi5jcHAgKi8KIHN0 YXRpYyBEQnVzSGFuZGxlclJlc3VsdCBubV9tZXNzYWdlX2hhbmRsZXIoIERCdXNDb25uZWN0 aW9uICogY29ubmVjdGlvbiwgREJ1c01lc3NhZ2UgKiBtZXNzYWdlLCB2b2lkICp1c2VyX2Rh dGEgKQogewogCWNvbnN0IGNoYXIgKm1ldGhvZDsKQEAgLTM0OCwxMiArMjMyLDE0IEBACiAJ cmV0dXJuIERCVVNfSEFORExFUl9SRVNVTFRfSEFORExFRDsKIH0KIAorLyoqIEFkZGVkIGZv ciBza3lwZWNvbm5lY3Rpb24uY3BwICovCiBzdGF0aWMgdm9pZCBubV91bnJlZ2lzdGVyX2hh bmRsZXIoIERCdXNDb25uZWN0aW9uICogY29ubmVjdGlvbiwgdm9pZCAqdXNlcl9kYXRhICkK IHsKIAkvKiBkbyBub3RoaW5nICovCiAJcURlYnVnKCAibm1fdW5yZWdpc3Rlcl9oYW5kbGVy IiApOwogfQogCisvKiogQWRkZWQgZm9yIHNreXBlY29ubmVjdGlvbi5jcHAgKi8KIHZvaWQg Q29ubmVjdGlvbjo6ZGJ1c01lc3NhZ2UoIERCdXNNZXNzYWdlICogbWVzc2FnZSApCiB7CiAJ cURlYnVnKCAiQ29ubmVjdGlvbjo6ZGJ1c01lc3NhZ2UiICk7CkBAIC0zNzIsNiArMjU4LDcg QEAKIAllbWl0IG1lc3NhZ2VBcnJpdmVkKCAqbSApOwogfQogCisvKiogQWRkZWQgZm9yIHNr eXBlY29ubmVjdGlvbi5jcHAgKi8KIGJvb2wgQ29ubmVjdGlvbjo6cmVnaXN0ZXJPYmplY3RQ YXRoKCBjb25zdCBRU3RyaW5nICYgcGF0aCwgY29uc3QgUVN0cmluZyAmIHNlcnZpY2UgKQog ewogCURCdXNPYmplY3RQYXRoVlRhYmxlIHZ0YWJsZSA9IHsgJm5tX3VucmVnaXN0ZXJfaGFu ZGxlciwgJm5tX21lc3NhZ2VfaGFuZGxlciwgTlVMTCwgTlVMTCwgTlVMTCwKQEAgLTQyMyw0 ICszMTAsOCBAQAogCXJldHVybiBUUlVFOwogfQogCisKKworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKICNpbmNsdWRlICJj b25uZWN0aW9uLm1vYyIKZGlmZiAtTmF1ciBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9r b3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9jb25uZWN0aW9uLmgga2RlZXh0 cmFnZWFyLWFkZG9ucy02NDE2ODctZml4ZWQva29wZXRlX3NreXBlL3NyYy9saWJza3lwZS9z a3lwZWRidXMvY29ubmVjdGlvbi5oCi0tLSBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9r b3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9jb25uZWN0aW9uLmgJMjAwNS0x MC0yNyAwMjozMTozNy4wMDAwMDAwMDAgKzAyMDAKKysrIGtkZWV4dHJhZ2Vhci1hZGRvbnMt NjQxNjg3LWZpeGVkL2tvcGV0ZV9za3lwZS9zcmMvbGlic2t5cGUvc2t5cGVkYnVzL2Nvbm5l Y3Rpb24uaAkyMDA4LTA4LTMwIDE1OjA1OjM1LjAwMDAwMDAwMCArMDIwMApAQCAtMSw1ICsx LDQgQEAKIC8vIC0qLSBNb2RlOiBDKys7IGMtYmFzaWMtb2Zmc2V0OiAyOyBpbmRlbnQtdGFi cy1tb2RlOiBuaWw7IC0qLQotCiAvKiBjb25uZWN0aW9uLmg6IFF0IHdyYXBwZXIgZm9yIERC dXNDb25uZWN0aW9uCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAzICBaYWNrIFJ1c2luIDx6 YWNrQGtkZS5vcmc+CkBAIC0yMSw3ICsyMCw2IEBACiAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNB CiAgKgogICovCi0KICNpZm5kZWYgREJVU19RVF9DT05ORUNUSU9OX0gKICNkZWZpbmUgREJV U19RVF9DT05ORUNUSU9OX0gKIApAQCAtMjksNjcgKzI3LDc0IEBACiAKICNpbmNsdWRlIDxx b2JqZWN0Lmg+CiAjaW5jbHVkZSA8cXN0cmluZy5oPgotI2luY2x1ZGUgPHFldmVudC5oPgot I2luY2x1ZGUgPGRidXMvZGJ1cy5oPgogCi1jb25zdCBpbnQgREJVU19FVkVOVF9XQUtFVVAg PSBRRXZlbnQ6OlVzZXIgKyAxMDA7CisjaW5jbHVkZSAiZGJ1cy9kYnVzLmgiCiAKLW5hbWVz cGFjZSBEQnVzUXQKLXsKLQluYW1lc3BhY2UgSW50ZXJuYWwKLQl7Ci0JCWNsYXNzIEludGVn cmF0b3I7Ci0JfQotCi0JY2xhc3MgQ29ubmVjdGlvbiA6IHB1YmxpYyBRT2JqZWN0Ci0Jewot CVFfT0JKRUNUCi0JcHVibGljOgotCQlDb25uZWN0aW9uKCBRT2JqZWN0ICogcGFyZW50ID0g MCApOwotCQlDb25uZWN0aW9uKCBjb25zdCBRU3RyaW5nICYgaG9zdCwgUU9iamVjdCAqIHBh cmVudCA9IDAgKTsKLQkJQ29ubmVjdGlvbiggREJ1c0J1c1R5cGUgdHlwZSwgUU9iamVjdCAq IHBhcmVudCA9IDAsIGJvb2wgdGVtcG9yYXJ5ID0gRkFMU0UgKTsKLQkJdmlydHVhbCB+IENv bm5lY3Rpb24oICApOwotCi0JCWJvb2wgaXNDb25uZWN0ZWQoICApIGNvbnN0OwotCQlib29s IGlzQXV0aGVudGljYXRlZCggICkgY29uc3Q7Ci0KLQkJTWVzc2FnZSBib3Jyb3dNZXNzYWdl KCAgKTsKLQkJTWVzc2FnZSBwb3BNZXNzYWdlKCAgKTsKLQkJdm9pZCBzdGVhbEJvcnJvd01l c3NhZ2UoIGNvbnN0IE1lc3NhZ2UgJiApOwotCQl2b2lkIGRidXNNZXNzYWdlKCBEQnVzTWVz c2FnZSAqIG1lc3NhZ2UgKTsKLQkJYm9vbCBlcnJvciggICk7Ci0JCVFTdHJpbmcgZ2V0RXJy b3IoICApOwotCi0JcHVibGljIHNsb3RzOgotCQl2b2lkIG9wZW4oIGNvbnN0IFFTdHJpbmcg JiApOwotCQl2b2lkIGNsb3NlKCAgKTsKLQkJdm9pZCBmbHVzaCggICk7Ci0JCXZvaWQgc2Vu ZCggY29uc3QgTWVzc2FnZSAmICk7Ci0JCXZvaWQgc2VuZFdpdGhSZXBseSggY29uc3QgTWVz c2FnZSAmICk7Ci0JCU1lc3NhZ2Ugc2VuZFdpdGhSZXBseUFuZEJsb2NrKCBjb25zdCBNZXNz YWdlICYgKTsKLQkJYm9vbCByZWdpc3Rlck9iamVjdFBhdGgoIGNvbnN0IFFTdHJpbmcgJiBw YXRoLCBjb25zdCBRU3RyaW5nICYgc2VydmljZSApOwotCi0JcHJvdGVjdGVkIHNsb3RzOgot CQl2b2lkIGRpc3BhdGNoUmVhZCggICk7Ci0KLQlwcm90ZWN0ZWQ6Ci0JCXZvaWQgaW5pdCgg Y29uc3QgUVN0cmluZyAmIGhvc3QgKTsKLQkJdmlydHVhbCB2b2lkICp2aXJ0dWFsX2hvb2so IGludCBpZCwgdm9pZCAqZGF0YSApOwotCQlib29sIGV2ZW50KCBRRXZlbnQgKiApOwotCi0J cHJpdmF0ZToKLQkJZnJpZW5kIGNsYXNzIEludGVybmFsOjpJbnRlZ3JhdG9yOwotCQlEQnVz Q29ubmVjdGlvbiAqY29ubmVjdGlvbiggICk7Ci0JCUNvbm5lY3Rpb24oIERCdXNDb25uZWN0 aW9uICogY29ubmVjdGlvbiwgUU9iamVjdCAqIHBhcmVudCApOwotCi0JcHJpdmF0ZToKLQkJ c3RydWN0IFByaXZhdGU7Ci0JCVByaXZhdGUgKmQ7Ci0KLQlzaWduYWxzOgotCQl2b2lkIG1l c3NhZ2VBcnJpdmVkKCBjb25zdCBEQnVzUXQ6Ok1lc3NhZ2UgJiBtICk7Ci0JfTsKK25hbWVz cGFjZSBEQnVzUXQgeworICBuYW1lc3BhY2UgSW50ZXJuYWwgeworICAgIGNsYXNzIEludGVn cmF0b3I7CisgIH0KKworICBjbGFzcyBDb25uZWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAg eworICAgIFFfT0JKRUNUCisgIHB1YmxpYzoKKyAgICBDb25uZWN0aW9uKCBRT2JqZWN0ICpw YXJlbnQgPTAgKTsKKyAgICBDb25uZWN0aW9uKCBjb25zdCBRU3RyaW5nJiBob3N0LAorICAg ICAgICAgICAgICAgIFFPYmplY3QgKnBhcmVudCA9IDAgKTsKKyAgICBDb25uZWN0aW9uKCBE QnVzQnVzVHlwZSB0eXBlLCBRT2JqZWN0KiBwYXJlbnQgPSAwICk7CisKKyAgICBib29sIGlz Q29ubmVjdGVkKCkgY29uc3Q7CisgICAgYm9vbCBpc0F1dGhlbnRpY2F0ZWQoKSBjb25zdDsK KworICAgIE1lc3NhZ2UgYm9ycm93TWVzc2FnZSgpOworICAgIE1lc3NhZ2UgcG9wTWVzc2Fn ZSgpOworICAgIHZvaWQgc3RlYWxCb3Jyb3dNZXNzYWdlKCBjb25zdCBNZXNzYWdlJiApOwor ICAgIHZvaWQgZGJ1c19jb25uZWN0aW9uX3NldHVwX3dpdGhfcXRfbWFpbiAoREJ1c0Nvbm5l Y3Rpb24gKmNvbm5lY3Rpb24pOworCisvKiogQWRkZWQgZm9yIHNreXBlY29ubmVjdGlvbi5j cHAgKi8KKyAgICB2b2lkIGRidXNNZXNzYWdlKCBEQnVzTWVzc2FnZSAqIG1lc3NhZ2UgKTsK KworLyoqIEFkZGVkIGZvciBza3lwZWNvbm5lY3Rpb24uY3BwICovCisgICAgYm9vbCBlcnJv cigpOworCisvKiogQWRkZWQgZm9yIHNreXBlY29ubmVjdGlvbi5jcHAgKi8KKyAgICBRU3Ry aW5nIGdldEVycm9yKCk7CisKKyAgcHVibGljIHNsb3RzOgorICAgIHZvaWQgb3BlbiggY29u c3QgUVN0cmluZyYgKTsKKyAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBmbHVzaCgpOwor ICAgIHZvaWQgc2VuZCggY29uc3QgTWVzc2FnZSYgKTsKKyAgICB2b2lkIHNlbmRXaXRoUmVw bHkoIGNvbnN0IE1lc3NhZ2UmICk7CisgICAgTWVzc2FnZSBzZW5kV2l0aFJlcGx5QW5kQmxv Y2soIGNvbnN0IE1lc3NhZ2UmICk7CisKKy8qKiBBZGRlZCBmb3Igc2t5cGVjb25uZWN0aW9u LmNwcCAqLworICAgIGJvb2wgcmVnaXN0ZXJPYmplY3RQYXRoKCBjb25zdCBRU3RyaW5nICYg cGF0aCwgY29uc3QgUVN0cmluZyAmIHNlcnZpY2UgKTsKKworICBwcm90ZWN0ZWQgc2xvdHM6 CisgICAgdm9pZCBkaXNwYXRjaFJlYWQoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBp bml0KCBjb25zdCBRU3RyaW5nJiBob3N0ICk7CisgICAgdmlydHVhbCB2b2lkICp2aXJ0dWFs X2hvb2soIGludCBpZCwgdm9pZCAqZGF0YSApOworCisgIHByaXZhdGU6CisgICAgZnJpZW5k IGNsYXNzIEludGVybmFsOjpJbnRlZ3JhdG9yOworICAgIERCdXNDb25uZWN0aW9uICpjb25u ZWN0aW9uKCkgY29uc3Q7CisgICAgQ29ubmVjdGlvbiggREJ1c0Nvbm5lY3Rpb24gKmNvbm5l Y3Rpb24sIFFPYmplY3QgKnBhcmVudCApOworCisgIHByaXZhdGU6CisgICAgc3RydWN0IFBy aXZhdGU7CisgICAgUHJpdmF0ZSAqZDsKKworLyoqIEFkZGVkIGZvciBza3lwZWNvbm5lY3Rp b24uY3BwICovCisgIHNpZ25hbHM6CisgICAgdm9pZCBtZXNzYWdlQXJyaXZlZCggY29uc3Qg REJ1c1F0OjpNZXNzYWdlICYgbSApOworCisgIH07CiAKIH0KIAorCiAjZW5kaWYKZGlmZiAt TmF1ciBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2xpYnNr eXBlL3NreXBlZGJ1cy9pbnRlZ3JhdG9yLmNwcCBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4 Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9pbnRlZ3JhdG9y LmNwcAotLS0ga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9s aWJza3lwZS9za3lwZWRidXMvaW50ZWdyYXRvci5jcHAJMjAwNS0xMC0yNyAwMjozMTozNy4w MDAwMDAwMDAgKzAyMDAKKysrIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3LWZpeGVkL2tv cGV0ZV9za3lwZS9zcmMvbGlic2t5cGUvc2t5cGVkYnVzL2ludGVncmF0b3IuY3BwCTIwMDgt MDgtMzAgMDE6MDQ6NTQuMDAwMDAwMDAwICswMjAwCkBAIC0yMCwxNCArMjAsOSBAQAogICog Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgIDAyMTExLTEzMDcgIFVTQQogICoKICAqLwotCi0jZGVmaW5lIERCVVNfQVBJX1NVQkpF Q1RfVE9fQ0hBTkdFCi0KICNpbmNsdWRlICJpbnRlZ3JhdG9yLmgiCiAjaW5jbHVkZSAiY29u bmVjdGlvbi5oIgogCi0jaW5jbHVkZSA8cWFwcGxpY2F0aW9uLmg+Ci0jaW5jbHVkZSA8cWV2 ZW50bG9vcC5oPgogI2luY2x1ZGUgPHF0aW1lci5oPgogI2luY2x1ZGUgPHFzb2NrZXRub3Rp Zmllci5oPgogI2luY2x1ZGUgPHFpbnRkaWN0Lmg+CkBAIC0zNywxMTQgKzMyLDM0IEBACiB7 CiBuYW1lc3BhY2UgSW50ZXJuYWwgewogCi1zdHJ1Y3QgV2F0Y2h7Ci0JV2F0Y2goKTogcmVh ZFNvY2tldCggMCApLCB3cml0ZVNvY2tldCggMCApIHsgfQotCS8vfldhdGNoKCk7CitzdHJ1 Y3QgV2F0Y2ggeworICBXYXRjaCgpOiByZWFkU29ja2V0KCAwICksIHdyaXRlU29ja2V0KCAw ICkgeyB9CiAKICAgREJ1c1dhdGNoICp3YXRjaDsKICAgUVNvY2tldE5vdGlmaWVyICpyZWFk U29ja2V0OwogICBRU29ja2V0Tm90aWZpZXIgKndyaXRlU29ja2V0OwogfTsKIAotLypXYXRj aDo6fldhdGNoKCkKLXsKLQlpZiAocmVhZFNvY2tldCkKLQkJZGVsZXRlIHJlYWRTb2NrZXQ7 Ci0KLQlpZiAod3JpdGVTb2NrZXQpCi0JCWRlbGV0ZSB3cml0ZVNvY2tldDsKLX0qLwotCiAv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLwotZGJ1c19ib29sX3QgZGJ1c0FkZFdhdGNoKERCdXNXYXRjaCogd2F0Y2gsIHZv aWQqIGRhdGEpCitkYnVzX2Jvb2xfdCBkYnVzQWRkV2F0Y2goIERCdXNXYXRjaCAqd2F0Y2gs IHZvaWQgKmRhdGEgKQogewotCWludCBmZCA9IGRidXNfd2F0Y2hfZ2V0X2ZkKHdhdGNoKTsK LQotCXFEZWJ1ZyAoIkFQSTogZmQgaXMgJWQiLCBmZCk7Ci0KLQlJbnRlZ3JhdG9yICpjb24g PSBzdGF0aWNfY2FzdDxJbnRlZ3JhdG9yKj4oIGRhdGEgKTsKLQljb24tPmFkZFdhdGNoKCB3 YXRjaCApOwotCi0JcmV0dXJuIHRydWU7CisgIEludGVncmF0b3IgKmNvbiA9IHN0YXRpY19j YXN0PEludGVncmF0b3IqPiggZGF0YSApOworICBjb24tPmFkZFdhdGNoKCB3YXRjaCApOwor ICByZXR1cm4gdHJ1ZTsKIH0KLQogdm9pZCBkYnVzUmVtb3ZlV2F0Y2goIERCdXNXYXRjaCAq d2F0Y2gsIHZvaWQgKmRhdGEgKQogewotCUludGVncmF0b3IgKmNvbiA9IHN0YXRpY19jYXN0 PEludGVncmF0b3IqPiggZGF0YSApOwotCWNvbi0+cmVtb3ZlV2F0Y2goIHdhdGNoICk7Cisg IEludGVncmF0b3IgKmNvbiA9IHN0YXRpY19jYXN0PEludGVncmF0b3IqPiggZGF0YSApOwor ICBjb24tPnJlbW92ZVdhdGNoKCB3YXRjaCApOwogfQogCiB2b2lkIGRidXNUb2dnbGVXYXRj aCggREJ1c1dhdGNoICp3YXRjaCwgdm9pZCAqZGF0YSApCiB7Ci0JLy9yZXR1cm47Ci0JSW50 ZWdyYXRvciAqaXRnID0gc3RhdGljX2Nhc3Q8SW50ZWdyYXRvcio+KCBkYXRhICk7Ci0JLy9X YXRjaCogcXcgPSBpdGctPm1fd2F0Y2hlcy5maW5kKGRidXNfd2F0Y2hfZ2V0X2ZkKHdhdGNo KSk7Ci0KLQlxRGVidWcoIkFQSTogZGJ1c1RvZ2dsZVdhdGNoIik7Ci0KLQlpbnQgZmQgPSBk YnVzX3dhdGNoX2dldF9mZCh3YXRjaCk7Ci0KLQlxRGVidWcgKCJBUEk6IGZkIGlzICVkIiwg ZmQpOwotCi0JaWYgKGRidXNfd2F0Y2hfZ2V0X2VuYWJsZWQod2F0Y2gpKQotCXsKLQkJLy9p ZiAocXctPnJlYWRTb2NrZXQpIHF3LT5yZWFkU29ja2V0LT5zZXRFbmFibGVkKFRSVUUpOwot CQkvL2lmIChxdy0+d3JpdGVTb2NrZXQpIHF3LT53cml0ZVNvY2tldC0+c2V0RW5hYmxlZChU UlVFKTsKLQkJaXRnLT5hZGRXYXRjaCh3YXRjaCk7Ci0JCXFEZWJ1ZygiZW5hYmxpbmciKTsK LQl9Ci0JZWxzZQotCXsKLQkJLy9pZiAocXctPnJlYWRTb2NrZXQpICBxdy0+cmVhZFNvY2tl dC0+c2V0RW5hYmxlZChGQUxTRSk7Ci0JCS8vaWYgKHF3LT53cml0ZVNvY2tldCkgcXctPndy aXRlU29ja2V0LT5zZXRFbmFibGVkKEZBTFNFKTsKLQkJaXRnLT5yZW1vdmVXYXRjaCh3YXRj aCk7Ci0JCXFEZWJ1ZygiZGlzYWJsaW5nIik7Ci0JfQotCi0JLyoKLQlib29sIGVuID0gZGJ1 c193YXRjaF9nZXRfZW5hYmxlZCh3YXRjaCk7Ci0JaW50IGZsYWdzID0gZGJ1c193YXRjaF9n ZXRfZmxhZ3Mod2F0Y2gpOwotCi0JSW50ZWdyYXRvciAqaXRnID0gc3RhdGljX2Nhc3Q8SW50 ZWdyYXRvcio+KCBkYXRhICk7Ci0JV2F0Y2gqIHF3ID0gaXRnLT5tX3dhdGNoZXMuZmluZChk YnVzX3dhdGNoX2dldF9mZCh3YXRjaCkpOwotCi0KLQlpZiAoIGZsYWdzICYmIERCVVNfV0FU Q0hfUkVBREFCTEUgKQotCXsKLQkJcXctPnJlYWRTb2NrZXQtPnNldEVuYWJsZWQoZW4pOwot CX0KLQotCWlmIChmbGFncyAmJiBEQlVTX1dBVENIX1dSSVRBQkxFKQotCXsKLQkJcXctPndy aXRlU29ja2V0LT5zZXRFbmFibGVkKGVuKTsKLQl9Ci0JKi8KLQkvKgotCWlmIChkYnVzX3dh dGNoX2dldF9lbmFibGVkKHdhdGNoKSkKLQl7Ci0JCS8vaXRnLT5hZGRXYXRjaCh3YXRjaCk7 Ci0KLQkJaWYgKHF3KQotCQl7Ci0JCQlxdy0+cmVhZFNvY2tldC0+c2V0RW5hYmxlZChUUlVF KTsKLQkJCXF3LT53cml0ZVNvY2tldC0+c2V0RW5hYmxlZChUUlVFKTsKLQkJfQotCQllbHNl Ci0JCQlpdGctPmFkZFdhdGNoKCB3YXRjaCApOwotCX0KLQllbHNlCi0JewotCQkvL2l0Zy0+ cmVtb3ZlV2F0Y2god2F0Y2gpOwotCi0JCWlmIChxdykKLQkJewotCQkJcXctPnJlYWRTb2Nr ZXQtPnNldEVuYWJsZWQoRkFMU0UpOwotCQkJcXctPndyaXRlU29ja2V0LT5zZXRFbmFibGVk KEZBTFNFKTsKLQkJfQotCQllbHNlCi0JCQlpdGctPnJlbW92ZVdhdGNoKCB3YXRjaCApOwot CX0KLQkqLworICBJbnRlZ3JhdG9yICppdGcgPSBzdGF0aWNfY2FzdDxJbnRlZ3JhdG9yKj4o IGRhdGEgKTsKKyAgaWYgKCBkYnVzX3dhdGNoX2dldF9lbmFibGVkKCB3YXRjaCApICkKKyAg ICBpdGctPmFkZFdhdGNoKCB3YXRjaCApOworICBlbHNlCisgICAgaXRnLT5yZW1vdmVXYXRj aCggd2F0Y2ggKTsKIH0KIAogZGJ1c19ib29sX3QgZGJ1c0FkZFRpbWVvdXQoIERCdXNUaW1l b3V0ICp0aW1lb3V0LCB2b2lkICpkYXRhICkKQEAgLTE3Myw2MCArODgsMTcgQEAKICAgICBp dGctPnJlbW92ZVRpbWVvdXQoIHRpbWVvdXQgKTsKIH0KIAotdm9pZCBkYnVzV2FrZXVwTWFp bih2b2lkKiBjKQotewotCXFEZWJ1Zygid2FrZSB1cCEiKTsKLQotCS8vQ29ubmVjdGlvbiog Y29ubiA9IHN0YXRpY19jYXN0PENvbm5lY3Rpb24qPihjKTsKLQotCS8vY29ubi0+Zmx1c2go KTsKLQotCS8vaWYgKGNvbm4pCi0JLy8JUUFwcGxpY2F0aW9uOjpwb3N0RXZlbnQoY29ubiwg bmV3IFFDdXN0b21FdmVudChEQlVTX0VWRU5UX1dBS0VVUCkpOwotCi0JcUFwcC0+ZXZlbnRM b29wKCktPndha2VVcCgpOwotfQotCi12b2lkIGRidXNEaXNwYXRjaFN0YXR1c0NoYW5nZWQo REJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIERCdXNEaXNwYXRjaFN0YXR1cyBuZXdfc3Rh dHVzLCB2b2lkICpkYXRhKQordm9pZCBkYnVzV2FrZXVwTWFpbiggdm9pZCogKQogewotCXFE ZWJ1ZygiZGJ1c0Rpc3BhdGNoU3RhdHVzQ2hhbmdlZCBpbnZva2VkIik7Ci0KLQlzd2l0Y2go bmV3X3N0YXR1cykKLQkJewotCQkJY2FzZSBEQlVTX0RJU1BBVENIX0RBVEFfUkVNQUlOUzoK LQkJCQlxRGVidWcoIkRCVVNfRElTUEFUQ0hfREFUQV9SRU1BSU5TIik7Ci0JCQkJYnJlYWs7 Ci0JCQljYXNlIERCVVNfRElTUEFUQ0hfQ09NUExFVEU6Ci0JCQkJcURlYnVnKCJEQlVTX0RJ U1BBVENIX0NPTVBMRVRFIik7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIERCVVNfRElTUEFUQ0hf TkVFRF9NRU1PUlk6Ci0JCQkJcURlYnVnKCJEQlVTX0RJU1BBVENIX05FRURfTUVNT1JZIik7 Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCXFEZWJ1ZygiVU5LTk9XTiIpOwotCQkJ CWJyZWFrOwotCQl9CiB9CiAKLXN0YXRpYyBkYnVzX2Jvb2xfdCBkYnVzVWlkSGFuZGxlcihE QnVzQ29ubmVjdGlvbiogYywgdW5zaWduZWQgbG9uZyB1aWQsIHZvaWQqIGRhdGEpCi17Ci0J cURlYnVnKCJBUEk6IGRidXNVaWRIYW5kbGVyIHVpZCBpcyAlbHUiLCB1aWQpOwotCi0JcmV0 dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyB2b2lkIGRidXNOZXdDb25uZWN0aW9uKCBEQnVzU2Vy dmVyICAgICAqc2VydmVyLAordm9pZCBkYnVzTmV3Q29ubmVjdGlvbiggREJ1c1NlcnZlciAg ICAgKnNlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgIERCdXNDb25uZWN0aW9uICpu ZXdfY29ubmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICAg ICpkYXRhICkKIHsKLSAgcURlYnVnKCJkYnVzTmV3Q29ubmVjdGlvbigpIGludm9rZWQiKTsK LQotICBkYnVzX2Nvbm5lY3Rpb25fc2V0X3VuaXhfdXNlcl9mdW5jdGlvbihuZXdfY29ubmVj dGlvbiwgJmRidXNVaWRIYW5kbGVyLCBkYXRhLCAwKTsKLQogICBJbnRlZ3JhdG9yICppdGcg PSBzdGF0aWNfY2FzdDxJbnRlZ3JhdG9yKj4oIGRhdGEgKTsKICAgaXRnLT5oYW5kbGVDb25u ZWN0aW9uKCBuZXdfY29ubmVjdGlvbiApOwogfQotCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIFRpbWVvdXQ6OlRp bWVvdXQoIFFPYmplY3QgKnBhcmVudCwgREJ1c1RpbWVvdXQgKnQgKQpAQCAtMjQ3LDE0NSAr MTE5LDg3IEBACiAgIG1fdGltZXItPnN0YXJ0KCBkYnVzX3RpbWVvdXRfZ2V0X2ludGVydmFs KCBtX3RpbWVvdXQgKSApOwogfQogCi1JbnRlZ3JhdG9yOjpJbnRlZ3JhdG9yKERCdXNDb25u ZWN0aW9uICpjb25uLCBRT2JqZWN0ICpwYXJlbnQsIGJvb2wgdG1wKQotCTpRT2JqZWN0KHBh cmVudCksCi0JbV9jb25uZWN0aW9uKGNvbm4pCi17Ci0JcURlYnVnKCJJbnRlZ3JhdG9yOjpJ bnRlZ3JhdG9yKERCdXNDb25uZWN0aW9uKikgaW52b2tlZCIpOwotCi0JbV90aW1lb3V0cy5z ZXRBdXRvRGVsZXRlKCB0cnVlICk7Ci0KLQlkYnVzX2Nvbm5lY3Rpb25fc2V0X3dhdGNoX2Z1 bmN0aW9ucyggbV9jb25uZWN0aW9uLAotCQkJCQkJCQkJCWRidXNBZGRXYXRjaCwKLQkJCQkJ CQkJCQlkYnVzUmVtb3ZlV2F0Y2gsCi0JCQkJCQkJCQkJLypkYnVzVG9nZ2xlV2F0Y2gqLzAs Ci0JCQkJCQkJCQkJdGhpcywgMCApOwotCWRidXNfY29ubmVjdGlvbl9zZXRfdGltZW91dF9m dW5jdGlvbnMoIG1fY29ubmVjdGlvbiwKLQkJCQkJCQkJCQkJZGJ1c0FkZFRpbWVvdXQsCi0J CQkJCQkJCQkJCWRidXNSZW1vdmVUaW1lb3V0LAotCQkJCQkJCQkJCQlkYnVzVG9nZ2xlVGlt ZW91dCwKLQkJCQkJCQkJCQkJdGhpcywgMCApOwotCi0JLy9pZiAoIXRtcCkKLQlkYnVzX2Nv bm5lY3Rpb25fc2V0X3dha2V1cF9tYWluX2Z1bmN0aW9uKG1fY29ubmVjdGlvbiwgZGJ1c1dh a2V1cE1haW4sIHBhcmVudCwgMCk7CitJbnRlZ3JhdG9yOjpJbnRlZ3JhdG9yKCBEQnVzQ29u bmVjdGlvbiAqY29ubiwgUU9iamVjdCAqcGFyZW50ICkKKyAgOiBRT2JqZWN0KCBwYXJlbnQg KSwgbV9jb25uZWN0aW9uKCBjb25uICkKK3sKKyAgbV90aW1lb3V0cy5zZXRBdXRvRGVsZXRl KCB0cnVlICk7CiAKLQkvL2RidXNfY29ubmVjdGlvbl9zZXRfZGlzcGF0Y2hfc3RhdHVzX2Z1 bmN0aW9uKG1fY29ubmVjdGlvbiwgZGJ1c0Rpc3BhdGNoU3RhdHVzQ2hhbmdlZCwgdGhpcywg MCk7CisgIGRidXNfY29ubmVjdGlvbl9zZXRfd2F0Y2hfZnVuY3Rpb25zKCBtX2Nvbm5lY3Rp b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnVzQWRkV2F0 Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnVzUmVtb3Zl V2F0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnVzVG9n Z2xlV2F0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz LCAwICk7CisgIGRidXNfY29ubmVjdGlvbl9zZXRfdGltZW91dF9mdW5jdGlvbnMoIG1fY29u bmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJ1 c0FkZFRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRidXNSZW1vdmVUaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYnVzVG9nZ2xlVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhpcywgMCApOworICBkYnVzX2Nvbm5lY3Rpb25fc2V0X3dha2V1 cF9tYWluX2Z1bmN0aW9uKCBtX2Nvbm5lY3Rpb24sCisJCQkJCSAgICBkYnVzV2FrZXVwTWFp biwKKwkJCQkJICAgIHRoaXMsIDAgKTsKIH0KIAogSW50ZWdyYXRvcjo6SW50ZWdyYXRvcigg REJ1c1NlcnZlciAqc2VydmVyLCBRT2JqZWN0ICpwYXJlbnQgKQogICA6IFFPYmplY3QoIHBh cmVudCApLCBtX3NlcnZlciggc2VydmVyICkKIHsKLSAgcURlYnVnKCJJbnRlZ3JhdG9yOjpJ bnRlZ3JhdG9yKERCdXNTZXJ2ZXIqKSBpbnZva2VkIik7Ci0KLSAgLy9tX2Nvbm5lY3Rpb24g PSByZWludGVycHJldF9jYXN0PERCdXNDb25uZWN0aW9uKj4oIG1fc2VydmVyICk7CisgIG1f Y29ubmVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8REJ1c0Nvbm5lY3Rpb24qPiggbV9zZXJ2 ZXIgKTsKICAgbV90aW1lb3V0cy5zZXRBdXRvRGVsZXRlKCB0cnVlICk7CiAKICAgZGJ1c19z ZXJ2ZXJfc2V0X3dhdGNoX2Z1bmN0aW9ucyggbV9zZXJ2ZXIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRidXNBZGRXYXRjaCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGJ1c1JlbW92ZVdhdGNoLAotCQkJCQkJCQkgICAvKmRidXNUb2dn bGVXYXRjaCovMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJ1c1Rv Z2dsZVdhdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCAw ICk7Ci0gIC8qZGJ1c19zZXJ2ZXJfc2V0X3RpbWVvdXRfZnVuY3Rpb25zKCBtX3NlcnZlciwK KyAgZGJ1c19zZXJ2ZXJfc2V0X3RpbWVvdXRfZnVuY3Rpb25zKCBtX3NlcnZlciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnVzQWRkVGltZW91dCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnVzUmVtb3ZlVGltZW91dCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnVzVG9nZ2xlVGltZW91dCwK LSAgdGhpcywgMCApOyovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhpcywgMCApOwogICBkYnVzX3NlcnZlcl9zZXRfbmV3X2Nvbm5lY3Rpb25fZnVuY3Rpb24o IG1fc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRidXNOZXdDb25uZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRoaXMsICAwICk7CiB9CiAKLUludGVncmF0b3I6On5JbnRlZ3JhdG9yKCkK K3ZvaWQgSW50ZWdyYXRvcjo6c2xvdFJlYWQoIGludCBmZCApCiB7Ci0JZm9yIChpbnQgbkMg PSAwOyBuQyA8IG1fd2F0Y2hlcy5jb3VudCgpOyBuQysrKQotCQlkZWxldGUgbV93YXRjaGVz W25DXTsKLX0KKyAgUUludERpY3RJdGVyYXRvcjxXYXRjaD4JaXQoIG1fd2F0Y2hlcyApOwor ICBmb3IgKCA7IGl0LmN1cnJlbnQoKTsgKytpdCApCisgICAgZGJ1c193YXRjaF9oYW5kbGUg KCBpdC5jdXJyZW50KCktPndhdGNoLCBEQlVTX1dBVENIX1JFQURBQkxFICk7CiAKLXZvaWQg SW50ZWdyYXRvcjo6c2xvdFJlYWQoaW50IGZkKQotewotCXFEZWJ1Zygic2xvdFJlYWQiKTsK LQlRSW50RGljdEl0ZXJhdG9yPFdhdGNoPiBpdChtX3dhdGNoZXMpOwotCi0JZm9yICg7IGl0 LmN1cnJlbnQoKTsgKytpdCkKLQkJZGJ1c193YXRjaF9oYW5kbGUoaXQuY3VycmVudCgpLT53 YXRjaCwgREJVU19XQVRDSF9SRUFEQUJMRSk7Ci0KLQllbWl0IHJlYWRSZWFkeSgpOwotCi0J LyppZiAoV2F0Y2gqIHd3ID0gbV93YXRjaGVzLmZpbmQoZmQpKQotCQlkYnVzX3dhdGNoX2hh bmRsZSh3dy0+d2F0Y2gsIERCVVNfV0FUQ0hfUkVBREFCTEUpOwotCi0JaWYgKG1fY29ubmVj dGlvbikKLQl7Ci0JCS8vX2RidXNfY29ubmVjdGlvbl9hY3F1aXJlX2Rpc3BhdGNoKG1fY29u bmVjdGlvbik7Ci0JCS8vZGJ1c19jb25uZWN0aW9uX2Rpc3BhdGNoKG1fY29ubmVjdGlvbik7 Ci0JCS8vX2RidXNfY29ubmVjdGlvbl9yZWxlYXNlX2Rpc3BhdGNoKG1fY29ubmVjdGlvbik7 Ci0KLQkJZW1pdCByZWFkUmVhZHkoKTsKLX0qLworICBlbWl0IHJlYWRSZWFkeSgpOwogfQog Ci12b2lkIEludGVncmF0b3I6OnNsb3RXcml0ZShpbnQgZmQpCit2b2lkIEludGVncmF0b3I6 OnNsb3RXcml0ZSggaW50IGZkICkKIHsKLQkvL3FEZWJ1Zygic2xvdFdyaXRlIik7Ci0KLQlR SW50RGljdEl0ZXJhdG9yPFdhdGNoPiBpdChtX3dhdGNoZXMpOwotCi0JZm9yICg7IGl0LmN1 cnJlbnQoKTsgKytpdCkKLQkJZGJ1c193YXRjaF9oYW5kbGUoaXQuY3VycmVudCgpLT53YXRj aCwgREJVU19XQVRDSF9XUklUQUJMRSk7Ci0KLQkvKldhdGNoKiB3dyA9IG1fd2F0Y2hlcy5m aW5kKGZkKTsKLQotCWRidXNfd2F0Y2hfaGFuZGxlKHd3LT53YXRjaCwgREJVU19XQVRDSF9X UklUQUJMRSk7Ki8KLQotCS8vaWYgKG1fY29ubmVjdGlvbikKLQkvL3sKLQkJLy9kYnVzX2Nv bm5lY3Rpb25fZmx1c2gobV9jb25uZWN0aW9uKTsKLQotCQkvL2VtaXQgcmVhZFJlYWR5KCk7 Ci0JLy99CisgIFFJbnREaWN0SXRlcmF0b3I8V2F0Y2g+ICAgICAgIGl0KCBtX3dhdGNoZXMg KTsKKyAgZm9yICggOyBpdC5jdXJyZW50KCk7ICsraXQgKQorICAgIGRidXNfd2F0Y2hfaGFu ZGxlICggaXQuY3VycmVudCgpLT53YXRjaCwgREJVU19XQVRDSF9XUklUQUJMRSApOwogfQog CiB2b2lkIEludGVncmF0b3I6OnNsb3RUaW1lb3V0KCBEQnVzVGltZW91dCAqdGltZW91dCAp CiB7Ci0JcURlYnVnKCJJbnRlZ3JhdG9yOjpzbG90VGltZW91dCIpOwogICBkYnVzX3RpbWVv dXRfaGFuZGxlKCB0aW1lb3V0ICk7CiB9CiAKIHZvaWQgSW50ZWdyYXRvcjo6YWRkV2F0Y2go IERCdXNXYXRjaCAqd2F0Y2ggKQogewotCXFEZWJ1ZygiSW50ZWdyYXRvcjo6YWRkV2F0Y2gg aW52b2tlZCIpOwotCi0JaWYgKCAhZGJ1c193YXRjaF9nZXRfZW5hYmxlZCggd2F0Y2ggKSAp Ci0JewotICAgIAlyZXR1cm47Ci0JfQotCi0JaW50IGZsYWdzID0gZGJ1c193YXRjaF9nZXRf ZmxhZ3Mod2F0Y2gpOwotICAJaW50IGZkID0gZGJ1c193YXRjaF9nZXRfZmQod2F0Y2gpOwot Ci0JV2F0Y2gqIHd3ID0gbV93YXRjaGVzLmZpbmQoZmQpOwotCi0JaWYgKHd3ICYmIChkYnVz X3dhdGNoX2dldF9mbGFncyh3dy0+d2F0Y2gpID09IGZsYWdzKSkKLQl7Ci0JCXFEZWJ1Zygi QVBJOiBub3QgYWRkaW5nIGR1cGxpY2F0ZSB3YXRjaCIpOwotCQlyZXR1cm47Ci0JfQorICBp ZiAoICFkYnVzX3dhdGNoX2dldF9lbmFibGVkKCB3YXRjaCApICkKKyAgICByZXR1cm47CiAK ICAgV2F0Y2ggKnF0d2F0Y2ggPSBuZXcgV2F0Y2g7CiAgIHF0d2F0Y2gtPndhdGNoID0gd2F0 Y2g7CiAKLSAgLy9xRGVidWcoImZsYWdzID09ICVkIGZkID09ICVkIiwgZmxhZ3MsIGZkKTsK KyAgaW50IGZsYWdzID0gZGJ1c193YXRjaF9nZXRfZmxhZ3MoIHdhdGNoICk7CisgIGludCBm ZCA9IGRidXNfd2F0Y2hfZ2V0X2ZkKCB3YXRjaCApOwogCi0gIGlmICggZmxhZ3MgJiBEQlVT X1dBVENIX1JFQURBQkxFICkKLSAgewotICAgIHF0d2F0Y2gtPnJlYWRTb2NrZXQgPSBuZXcg UVNvY2tldE5vdGlmaWVyKCBmZCwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCB0aGlzKTsKLSAg ICBRT2JqZWN0Ojpjb25uZWN0KCBxdHdhdGNoLT5yZWFkU29ja2V0LCBTSUdOQUwoYWN0aXZh dGVkKGludCkpLCB0aGlzLCBTTE9UKHNsb3RSZWFkKGludCkpICk7CisgIGlmICggZmxhZ3Mg JiBEQlVTX1dBVENIX1JFQURBQkxFICkgeworICAgIHF0d2F0Y2gtPnJlYWRTb2NrZXQgPSBu ZXcgUVNvY2tldE5vdGlmaWVyKCBmZCwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCB0aGlzICk7 CisgICAgUU9iamVjdDo6Y29ubmVjdCggcXR3YXRjaC0+cmVhZFNvY2tldCwgU0lHTkFMKGFj dGl2YXRlZChpbnQpKSwgU0xPVChzbG90UmVhZChpbnQpKSApOwogICB9CiAKLSAgaWYgKGZs YWdzICYgREJVU19XQVRDSF9XUklUQUJMRSkKLSAgewotICAgIHF0d2F0Y2gtPndyaXRlU29j a2V0ID0gbmV3IFFTb2NrZXROb3RpZmllciggZmQsIFFTb2NrZXROb3RpZmllcjo6V3JpdGUs IHRoaXMpOwotICAgIFFPYmplY3Q6OmNvbm5lY3QoIHF0d2F0Y2gtPndyaXRlU29ja2V0LCBT SUdOQUwoYWN0aXZhdGVkKGludCkpLCB0aGlzLCBTTE9UKHNsb3RXcml0ZShpbnQpKSApOwor ICBpZiAoZmxhZ3MgJiBEQlVTX1dBVENIX1dSSVRBQkxFKSB7CisgICAgcXR3YXRjaC0+d3Jp dGVTb2NrZXQgPSBuZXcgUVNvY2tldE5vdGlmaWVyKCBmZCwgUVNvY2tldE5vdGlmaWVyOjpX cml0ZSwgdGhpcyApOworICAgIFFPYmplY3Q6OmNvbm5lY3QoIHF0d2F0Y2gtPndyaXRlU29j a2V0LCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLCBTTE9UKHNsb3RXcml0ZShpbnQpKSApOwog ICB9CiAKICAgbV93YXRjaGVzLmluc2VydCggZmQsIHF0d2F0Y2ggKTsKQEAgLTM5NywxOSAr MjExLDE1IEBACiAKICAgV2F0Y2ggKnF0d2F0Y2ggPSBtX3dhdGNoZXMudGFrZSgga2V5ICk7 CiAKLSAgaWYgKCBxdHdhdGNoICkKLSAgewotICAgIGRlbGV0ZSBxdHdhdGNoLT5yZWFkU29j a2V0OwotCXF0d2F0Y2gtPnJlYWRTb2NrZXQgPSAwOwotICAgIGRlbGV0ZSBxdHdhdGNoLT53 cml0ZVNvY2tldDsKLQlxdHdhdGNoLT53cml0ZVNvY2tldCA9IDA7CisgIGlmICggcXR3YXRj aCApIHsKKyAgICBkZWxldGUgcXR3YXRjaC0+cmVhZFNvY2tldDsgIHF0d2F0Y2gtPnJlYWRT b2NrZXQgPSAwOworICAgIGRlbGV0ZSBxdHdhdGNoLT53cml0ZVNvY2tldDsgcXR3YXRjaC0+ d3JpdGVTb2NrZXQgPSAwOwogICAgIGRlbGV0ZSBxdHdhdGNoOwogICB9CiB9CiAKIHZvaWQg SW50ZWdyYXRvcjo6YWRkVGltZW91dCggREJ1c1RpbWVvdXQgKnRpbWVvdXQgKQogewotCXFE ZWJ1ZygiYWRkIHRpbWVvdXQiKTsKICAgVGltZW91dCAqbXQgPSBuZXcgVGltZW91dCggdGhp cywgdGltZW91dCApOwogICBtX3RpbWVvdXRzLmluc2VydCggdGltZW91dCwgbXQgKTsKICAg Y29ubmVjdCggbXQsIFNJR05BTCh0aW1lb3V0KERCdXNUaW1lb3V0KikpLApAQCAtNDI0LDI0 ICsyMzQsOCBAQAogCiB2b2lkIEludGVncmF0b3I6OmhhbmRsZUNvbm5lY3Rpb24oIERCdXND b25uZWN0aW9uICpjICkKIHsKLQkvL2RidXNfY29ubmVjdGlvbl9yZWYoYyk7Ci0JLy9pbnQg ZmQ7Ci0JLy9kYnVzX2Nvbm5lY3Rpb25fZ2V0X3VuaXhfZmQoYywgJmZkKTsKLQotCS8vcURl YnVnKCJJbnRlZ3JhdG9yOjpoYW5kbGVDb25uZWN0aW9uKCkgaW52b2tlZCwgZmQgaXMgJWQi LCBmZCk7Ci0JLy9xRGVidWcoIkNvbm5lY3Rpb24gYmFzZSBuYW1lOiAlcyIsIGRidXNfYnVz X2dldF9iYXNlX3NlcnZpY2UoYykpOwotCi0JZGJ1c19jb25uZWN0aW9uX3JlZihjKTsKLQot CS8vZGJ1c19idXNfc2V0X2Jhc2Vfc2VydmljZShjLCAiL2NvbS9Ta3lwZS9BUEkiKTsKLQot CUNvbm5lY3Rpb24gKmNvbiA9IG5ldyBDb25uZWN0aW9uKCBjLCB0aGlzICk7Ci0KLQlkYnVz X2Nvbm5lY3Rpb25fc2V0X3dha2V1cF9tYWluX2Z1bmN0aW9uKGMsICZkYnVzV2FrZXVwTWFp biwgY29uLCAwKTsKLQkvL2RidXNfY29ubmVjdGlvbl9zZXRfZGlzcGF0Y2hfc3RhdHVzX2Z1 bmN0aW9uKGMsIGRidXNEaXNwYXRjaFN0YXR1c0NoYW5nZWQsIHRoaXMsIDApOwotCi0KLQll bWl0IG5ld0Nvbm5lY3Rpb24oIGNvbiApOworICBDb25uZWN0aW9uICpjb24gPSBuZXcgQ29u bmVjdGlvbiggYywgdGhpcyApOworICBlbWl0IG5ld0Nvbm5lY3Rpb24oIGNvbiApOwogfQog CiB9Ly9lbmQgbmFtZXNwYWNlIEludGVybmFsCmRpZmYgLU5hdXIga2RlZXh0cmFnZWFyLWFk ZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9saWJza3lwZS9za3lwZWRidXMvaW50ZWdy YXRvci5oIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3LWZpeGVkL2tvcGV0ZV9za3lwZS9z cmMvbGlic2t5cGUvc2t5cGVkYnVzL2ludGVncmF0b3IuaAotLS0ga2RlZXh0cmFnZWFyLWFk ZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9saWJza3lwZS9za3lwZWRidXMvaW50ZWdy YXRvci5oCTIwMDUtMTAtMjcgMDI6MzE6MzcuMDAwMDAwMDAwICswMjAwCisrKyBrZGVleHRy YWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3Nr eXBlZGJ1cy9pbnRlZ3JhdG9yLmgJMjAwOC0wOC0zMCAwMTowNTozNS4wMDAwMDAwMDAgKzAy MDAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxxaW50ZGljdC5oPgogI2luY2x1ZGUg PHFwdHJkaWN0Lmg+CiAKLSNpbmNsdWRlIDxkYnVzL2RidXMuaD4KKyNpbmNsdWRlICJkYnVz L2RidXMuaCIKIAogY2xhc3MgUVRpbWVyOwogCkBAIC02MCwxMyArNjAsMTIgQEAKICAgICB7 CiAgICAgICBRX09CSkVDVAogICAgIHB1YmxpYzoKLSAgICAgIEludGVncmF0b3IoIERCdXND b25uZWN0aW9uICpjb25uZWN0aW9uLCBRT2JqZWN0ICpwYXJlbnQsIGJvb2wgdG1wID0gRkFM U0UgKTsKKyAgICAgIEludGVncmF0b3IoIERCdXNDb25uZWN0aW9uICpjb25uZWN0aW9uLCBR T2JqZWN0ICpwYXJlbnQgKTsKICAgICAgIEludGVncmF0b3IoIERCdXNTZXJ2ZXIgKnNlcnZl ciwgUU9iamVjdCAqcGFyZW50ICk7Ci0JICB2aXJ0dWFsIH5JbnRlZ3JhdG9yKCk7CiAKICAg ICBzaWduYWxzOgogICAgICAgdm9pZCByZWFkUmVhZHkoKTsKLQkgIHZvaWQgbmV3Q29ubmVj dGlvbiggREJ1c1F0OjpDb25uZWN0aW9uKiApOworICAgICAgdm9pZCBuZXdDb25uZWN0aW9u KCBDb25uZWN0aW9uKiApOwogCiAgICAgcHJvdGVjdGVkIHNsb3RzOgogICAgICAgdm9pZCBz bG90UmVhZCggaW50ICk7CkBAIC04MSw5ICs4MCw4IEBACiAgICAgICB2b2lkIHJlbW92ZVRp bWVvdXQoIERCdXNUaW1lb3V0KiApOwogCiAgICAgICB2b2lkIGhhbmRsZUNvbm5lY3Rpb24o IERCdXNDb25uZWN0aW9uKiApOwotCi0JICBRSW50RGljdDxXYXRjaD4gbV93YXRjaGVzOwog ICAgIHByaXZhdGU6CisgICAgICBRSW50RGljdDxXYXRjaD4gbV93YXRjaGVzOwogICAgICAg UVB0ckRpY3Q8VGltZW91dD4gbV90aW1lb3V0czsKICAgICAgIERCdXNDb25uZWN0aW9uICpt X2Nvbm5lY3Rpb247CiAgICAgICBEQnVzU2VydmVyICptX3NlcnZlcjsKZGlmZiAtTmF1ciBr ZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3Nr eXBlZGJ1cy9NYWtlZmlsZS5hbSBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9r b3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9NYWtlZmlsZS5hbQotLS0ga2Rl ZXh0cmFnZWFyLWFkZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9saWJza3lwZS9za3lw ZWRidXMvTWFrZWZpbGUuYW0JMjAwNS0xMC0yOCAwMjoyNjoyNS4wMDAwMDAwMDAgKzAyMDAK KysrIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3LWZpeGVkL2tvcGV0ZV9za3lwZS9zcmMv bGlic2t5cGUvc2t5cGVkYnVzL01ha2VmaWxlLmFtCTIwMDgtMDgtMjkgMjE6NDI6MTUuMDAw MDAwMDAwICswMjAwCkBAIC0xLDcgKzEsNyBAQAogCiBub2luc3RfTFRMSUJSQVJJRVMgPSBs aWJza3lwZWRidXMubGEKIAotQU1fQ1BQRkxBR1MgPSAkKGFsbF9pbmNsdWRlcykgJChEQlVT X0lOQ1MpIC1ET0xEX0RCVVMKK0FNX0NQUEZMQUdTID0gJChhbGxfaW5jbHVkZXMpICQoREJV U19JTkNTKQogTUVUQVNPVVJDRVMgPSBBVVRPCiAKIGxpYnNreXBlZGJ1c19sYV9TT1VSQ0VT ID0gc2t5cGVjb25uZWN0aW9uLmNwcCBtZXNzYWdlLmNwcCBpbnRlZ3JhdG9yLmNwcCBjb25u ZWN0aW9uLmNwcApkaWZmIC1OYXVyIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3L2tvcGV0 ZV9za3lwZS9zcmMvbGlic2t5cGUvc2t5cGVkYnVzL01ha2VmaWxlLmluIGtkZWV4dHJhZ2Vh ci1hZGRvbnMtNjQxNjg3LWZpeGVkL2tvcGV0ZV9za3lwZS9zcmMvbGlic2t5cGUvc2t5cGVk YnVzL01ha2VmaWxlLmluCi0tLSBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVf c2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9NYWtlZmlsZS5pbgkyMDA3LTAzLTE0IDAy OjIxOjIzLjAwMDAwMDAwMCArMDEwMAorKysga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODct Zml4ZWQva29wZXRlX3NreXBlL3NyYy9saWJza3lwZS9za3lwZWRidXMvTWFrZWZpbGUuaW4J MjAwOC0wOC0yOSAyMTo0MzozNy4wMDAwMDAwMDAgKzAyMDAKQEAgLTM1MCw3ICszNTAsNyBA QAogeGRnX2RpcmVjdG9yeWRpciA9IEB4ZGdfZGlyZWN0b3J5ZGlyQAogeGRnX21lbnVkaXIg PSBAeGRnX21lbnVkaXJACiBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJza3lwZWRidXMubGEK LUFNX0NQUEZMQUdTID0gJChhbGxfaW5jbHVkZXMpICQoREJVU19JTkNTKSAtRE9MRF9EQlVT CitBTV9DUFBGTEFHUyA9ICQoYWxsX2luY2x1ZGVzKSAkKERCVVNfSU5DUykKICM+LSBNRVRB U09VUkNFUyA9IEFVVE8KIGxpYnNreXBlZGJ1c19sYV9TT1VSQ0VTID0gc2t5cGVjb25uZWN0 aW9uLmNwcCBtZXNzYWdlLmNwcCBpbnRlZ3JhdG9yLmNwcCBjb25uZWN0aW9uLmNwcAogbGli c2t5cGVkYnVzX2xhX0xERkxBR1MgPSAtbW9kdWxlIC1XdW5kZWYgJChEQlVTX0xJQlMpCmRp ZmYgLU5hdXIga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9s aWJza3lwZS9za3lwZWRidXMvbWVzc2FnZS5jcHAga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2 ODctZml4ZWQva29wZXRlX3NreXBlL3NyYy9saWJza3lwZS9za3lwZWRidXMvbWVzc2FnZS5j cHAKLS0tIGtkZWV4dHJhZ2Vhci1hZGRvbnMtNjQxNjg3L2tvcGV0ZV9za3lwZS9zcmMvbGli c2t5cGUvc2t5cGVkYnVzL21lc3NhZ2UuY3BwCTIwMDUtMTAtMjcgMDI6MzE6MzcuMDAwMDAw MDAwICswMjAwCisrKyBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny1maXhlZC9rb3BldGVf c2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9tZXNzYWdlLmNwcAkyMDA4LTA4LTMwIDE0 OjU3OjIwLjAwMDAwMDAwMCArMDIwMApAQCAtMSw2ICsxLDQgQEAKLQogLyogLSotIG1vZGU6 IEMrKzsgYy1maWxlLXN0eWxlOiAiZ251IiAtKi0gKi8KLQogLyogbWVzc2FnZS5jcHA6IFF0 IHdyYXBwZXIgZm9yIERCdXNNZXNzYWdlCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAzICBa YWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CkBAIC0yMiwxNzAgKzIwLDE1NSBAQAogICogRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg IDAyMTExLTEzMDcgIFVTQQogICoKICAqLwotCi0jZGVmaW5lIERCVVNfQVBJX1NVQkpFQ1Rf VE9fQ0hBTkdFCi0KICNpbmNsdWRlICJtZXNzYWdlLmgiCiAKICNpbmNsdWRlIDxxbWFwLmg+ CiAKICNpbmNsdWRlIDxjc3RkbGliPgogCi1uYW1lc3BhY2UgREJ1c1F0Ci17CisjaW5jbHVk ZSA8c3RyaW5nPgogCi0Jc3RydWN0IE1lc3NhZ2U6Oml0ZXJhdG9yOjpJdGVyYXRvckRhdGEK LQl7Ci0JCURCdXNNZXNzYWdlSXRlciAqaXRlcjsKLQkJUVZhcmlhbnQgdmFyOwotCQlib29s IGVuZDsKLQkJREJ1c01lc3NhZ2UgKm1lc2c7Ci0JfTsKK25hbWVzcGFjZSBEQnVzUXQgewor CitzdHJ1Y3QgTWVzc2FnZTo6aXRlcmF0b3I6Okl0ZXJhdG9yRGF0YSB7CisgIERCdXNNZXNz YWdlSXRlciAqaXRlcjsKKyAgUVZhcmlhbnQgICAgICAgICB2YXI7CisgIGJvb2wgICAgICAg ICAgICAgZW5kOworICBEQnVzTWVzc2FnZQkgICptZXNnOworfTsKIAogLyoqCiAgKiBJdGVy YXRvci4KICAqLwotCSBNZXNzYWdlOjppdGVyYXRvcjo6aXRlcmF0b3IoICApCi0JewotCQlk ID0gbmV3IEl0ZXJhdG9yRGF0YTsKLQkJZC0+aXRlciA9IDA7Ci0JCWQtPmVuZCA9IHRydWU7 Ci0JfQorTWVzc2FnZTo6aXRlcmF0b3I6Oml0ZXJhdG9yKCkKK3sKKyAgZCA9IG5ldyBJdGVy YXRvckRhdGE7CisgIGQtPml0ZXIgPSAwOyBkLT5lbmQgPSB0cnVlOworfQogCiAvKioKICAq IENvbnN0cnVjdHMgaXRlcmF0b3IgZm9yIHRoZSBtZXNzYWdlLgogICogQHBhcmFtIG1zZyBt ZXNzYWdlIHdob3NlIGZpZWxkcyB3ZSB3YW50IHRvIGl0ZXJhdGUKICAqLwotCU1lc3NhZ2U6 Oml0ZXJhdG9yOjppdGVyYXRvciggREJ1c01lc3NhZ2UgKiBtc2cgKQotCXsKLQkJZCA9IG5l dyBJdGVyYXRvckRhdGE7Ci0JCWQtPm1lc2cgPSBtc2c7Ci0JCWQtPml0ZXIgPQotCQkJc3Rh dGljX2Nhc3QgPAotCQkJREJ1c01lc3NhZ2VJdGVyICogPiggbWFsbG9jKCBzaXplb2YoIERC dXNNZXNzYWdlSXRlciApICkgKTsKLQkJZGJ1c19tZXNzYWdlX2l0ZXJfaW5pdCggZC0+bWVz ZywgZC0+aXRlciApOwotCQlpZiAoICFkLT5pdGVyICkKLQkJewotCQkJcURlYnVnKCAiTm8g aXRlcmF0b3I/PyIgKTsKLQkJfQotCQlmaWxsVmFyKCAgKTsKLQkJZC0+ZW5kID0gZmFsc2U7 Ci0JfQorTWVzc2FnZTo6aXRlcmF0b3I6Oml0ZXJhdG9yKCBEQnVzTWVzc2FnZSogbXNnICkK K3sKKyAgZCA9IG5ldyBJdGVyYXRvckRhdGE7CisgIGQtPm1lc2cgPSBtc2c7CisgIGQtPml0 ZXIgPSBzdGF0aWNfY2FzdDxEQnVzTWVzc2FnZUl0ZXIgKj4oIG1hbGxvYyggc2l6ZW9mKERC dXNNZXNzYWdlSXRlcikgKSApOworICBkYnVzX21lc3NhZ2VfaXRlcl9pbml0KCBkLT5tZXNn LCBkLT5pdGVyICk7CisgIGlmICggIWQtPml0ZXIgKSB7CisgICAgcURlYnVnKCJObyBpdGVy YXRvcj8/Iik7CisgIH0KKyAgZmlsbFZhcigpOworICBkLT5lbmQgPSBmYWxzZTsKK30KIAog LyoqCiAgKiBDb3B5IGNvbnN0cnVjdG9yIGZvciB0aGUgaXRlcmF0b3IuCiAgKiBAcGFyYW0g aXRyIGl0ZXJhdG9yCiAgKi8KLQlNZXNzYWdlOjppdGVyYXRvcjo6aXRlcmF0b3IoIGNvbnN0 IGl0ZXJhdG9yICYgaXRyICkKLQl7Ci0JCWQgPSBuZXcgSXRlcmF0b3JEYXRhOwotCQlkLT5p dGVyID0gaXRyLmQtPml0ZXI7Ci0JCWQtPnZhciA9IGl0ci5kLT52YXI7Ci0JCWQtPmVuZCA9 IGl0ci5kLT5lbmQ7Ci0JfQorTWVzc2FnZTo6aXRlcmF0b3I6Oml0ZXJhdG9yKCBjb25zdCBp dGVyYXRvciYgaXRyICkKK3sKKyAgZCA9IG5ldyBJdGVyYXRvckRhdGE7CisgIGQtPml0ZXIg PSBpdHIuZC0+aXRlcjsKKyAgZC0+dmFyICA9IGl0ci5kLT52YXI7CisgIGQtPmVuZCAgPSBp dHIuZC0+ZW5kOworfQogCiAvKioKICAqIERlc3RydWN0b3IuCiAgKi8KLQlNZXNzYWdlOjpp dGVyYXRvcjo6fml0ZXJhdG9yKCAgKQotCXsKLQkJZnJlZSggZC0+aXRlciApOwotCQlkZWxl dGUgZDsKLQotCQlkID0gMDsKLQl9CitNZXNzYWdlOjppdGVyYXRvcjo6fml0ZXJhdG9yKCkK K3sKKyAgZnJlZSggZC0+aXRlciApOworICBkZWxldGUgZDsgZD0wOworfQogCiAvKioKICAq IENyZWF0ZXMgYW4gaXRlcmF0b3IgZXF1YWwgdG8gdGhlIEBwIGl0ciBpdGVyYXRvcgogICog QHBhcmFtIGl0ciBvdGhlciBpdGVyYXRvcgogICogQHJldHVybgogICovCi0JTWVzc2FnZTo6 aXRlcmF0b3IgJiBNZXNzYWdlOjppdGVyYXRvcjo6b3BlcmF0b3I9KCBjb25zdCBpdGVyYXRv ciAmIGl0ciApCi0JewotCQlJdGVyYXRvckRhdGEgKnRtcCA9IG5ldyBJdGVyYXRvckRhdGE7 Ci0KLQkJdG1wLT5pdGVyID0gaXRyLmQtPml0ZXI7Ci0JCXRtcC0+dmFyID0gaXRyLmQtPnZh cjsKLQkJdG1wLT5lbmQgPSBpdHIuZC0+ZW5kOwotCQlkZWxldGUgZDsKLQotCQlkID0gdG1w OwotCQlyZXR1cm4gKnRoaXM7Ci0JfQorTWVzc2FnZTo6aXRlcmF0b3ImCitNZXNzYWdlOjpp dGVyYXRvcjo6b3BlcmF0b3I9KCBjb25zdCBpdGVyYXRvciYgaXRyICkKK3sKKyAgSXRlcmF0 b3JEYXRhICp0bXAgPSBuZXcgSXRlcmF0b3JEYXRhOworICB0bXAtPml0ZXIgPSBpdHIuZC0+ aXRlcjsKKyAgdG1wLT52YXIgID0gaXRyLmQtPnZhcjsKKyAgdG1wLT5lbmQgID0gaXRyLmQt PmVuZDsKKyAgZGVsZXRlIGQ7IGQ9dG1wOworICByZXR1cm4gKnRoaXM7Cit9CiAKIC8qKgog ICogUmV0dXJucyB0aGUgY29uc3RhbnQgUVZhcmlhbnQgaGVsZCBieSB0aGUgaXRlcmF0b3Iu CiAgKiBAcmV0dXJuIHRoZSBjb25zdGFudCByZWZlcmVuY2UgdG8gUVZhcmlhbnQgaGVsZCBi eSB0aGlzIGl0ZXJhdG9yCiAgKi8KLQljb25zdCBRVmFyaWFudCAmIE1lc3NhZ2U6Oml0ZXJh dG9yOjpvcGVyYXRvciooICApIGNvbnN0Ci0JewotCQlyZXR1cm4gZC0+dmFyOwotCX0KK2Nv bnN0IFFWYXJpYW50JgorTWVzc2FnZTo6aXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0Cit7 CisgIHJldHVybiBkLT52YXI7Cit9CiAKIC8qKgogICogUmV0dXJucyB0aGUgUVZhcmlhbnQg aGVsZCBieSB0aGUgaXRlcmF0b3IuCiAgKiBAcmV0dXJuIHJlZmVyZW5jZSB0byBRVmFyaWFu dCBoZWxkIGJ5IHRoaXMgaXRlcmF0b3IKICAqLwotCVFWYXJpYW50ICYgTWVzc2FnZTo6aXRl cmF0b3I6Om9wZXJhdG9yKiggICkKLQl7Ci0JCXJldHVybiBkLT52YXI7Ci0JfQorUVZhcmlh bnQmCitNZXNzYWdlOjppdGVyYXRvcjo6b3BlcmF0b3IqKCkKK3sKKyAgcmV0dXJuIGQtPnZh cjsKK30KIAogLyoqCiAgKiBNb3ZlcyB0byB0aGUgbmV4dCBmaWVsZCBhbmQgcmV0dXJuIGEg cmVmZXJlbmNlIHRvIGl0c2VsZiBhZnRlcgogICogaW5jcmVtZW50aW5nLgogICogQHJldHVy biByZWZlcmVuY2UgdG8gc2VsZiBhZnRlciBpbmNyZW1lbnRpbmcKICAqLwotCU1lc3NhZ2U6 Oml0ZXJhdG9yICYgTWVzc2FnZTo6aXRlcmF0b3I6Om9wZXJhdG9yKysoICApCi0JewotCQlp ZiAoIGQtPmVuZCApCi0JCQlyZXR1cm4gKnRoaXM7Ci0KLQkJaWYgKCBkYnVzX21lc3NhZ2Vf aXRlcl9uZXh0KCBkLT5pdGVyICkgKQotCQl7Ci0JCQlmaWxsVmFyKCAgKTsKLQkJfQotCQll bHNlCi0JCXsKLQkJCWQtPmVuZCA9IHRydWU7Ci0JCQlkLT52YXIgPSBRVmFyaWFudCggICk7 Ci0JCX0KLQkJcmV0dXJuICp0aGlzOwotCX0KK01lc3NhZ2U6Oml0ZXJhdG9yJgorTWVzc2Fn ZTo6aXRlcmF0b3I6Om9wZXJhdG9yKysoKQoreworICBpZiAoIGQtPmVuZCApCisgICAgcmV0 dXJuICp0aGlzOworCisgIGlmICggIGRidXNfbWVzc2FnZV9pdGVyX25leHQoIGQtPml0ZXIg KSApIHsKKyAgICBmaWxsVmFyKCk7CisgIH0gZWxzZSB7CisgICAgZC0+ZW5kID0gdHJ1ZTsK KyAgICBkLT52YXIgPSBRVmFyaWFudCgpOworICB9CisgIHJldHVybiAqdGhpczsKK30KIAog LyoqCiAgKiBNb3ZlcyB0byB0aGUgbmV4dCBmaWVsZCBhbmQgcmV0dXJucyBzZWxmIGJlZm9y ZSBpbmNyZW1lbnRpbmcuCiAgKiBAcmV0dXJuIHNlbGYgYmVmb3JlIGluY3JlbWVudGluZwog ICovCi0JTWVzc2FnZTo6aXRlcmF0b3IgTWVzc2FnZTo6aXRlcmF0b3I6Om9wZXJhdG9yKyso IGludCApCi0JewotCQlpdGVyYXRvciBpdHIoICp0aGlzICk7Ci0KLQkJb3BlcmF0b3IrKygg ICk7Ci0JCXJldHVybiBpdHI7Ci0JfQorTWVzc2FnZTo6aXRlcmF0b3IKK01lc3NhZ2U6Oml0 ZXJhdG9yOjpvcGVyYXRvcisrKGludCkKK3sKKyAgaXRlcmF0b3IgaXRyKCAqdGhpcyApOwor ICBvcGVyYXRvcisrKCk7CisgIHJldHVybiBpdHI7Cit9CiAKIC8qKgogICogQ29tcGFyZXMg dGhpcyBpdGVyYXRvciB0byBAcCBpdCBpdGVyYXRvci4KICAqIEBwYXJhbSBpdCB0aGUgaXRl cmF0b3IgdG8gd2hpY2ggd2UncmUgY29tcGFyaW5nIHRoaXMgb25lIHRvCiAgKiBAcmV0dXJu IHRydWUgaWYgdGhleSdyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlCiAgKi8KLQlib29sIE1l c3NhZ2U6Oml0ZXJhdG9yOjpvcGVyYXRvcj09KCBjb25zdCBpdGVyYXRvciAmIGl0ICkKLQl7 Ci0JCWlmICggZC0+ZW5kID09IGl0LmQtPmVuZCApCi0JCXsKLQkJCWlmICggZC0+ZW5kID09 IHRydWUgKQotCQkJewotCQkJCXJldHVybiB0cnVlOwotCQkJfQotCQkJZWxzZQotCQkJewot CQkJCXJldHVybiBkLT52YXIgPT0gaXQuZC0+dmFyOwotCQkJfQotCQl9Ci0JCWVsc2UKLQkJ CXJldHVybiBmYWxzZTsKLQl9Citib29sCitNZXNzYWdlOjppdGVyYXRvcjo6b3BlcmF0b3I9 PSggY29uc3QgaXRlcmF0b3ImIGl0ICkKK3sKKyAgaWYgKCBkLT5lbmQgPT0gaXQuZC0+ZW5k ICkgeworICAgIGlmICggZC0+ZW5kID09IHRydWUgKSB7CisgICAgICByZXR1cm4gdHJ1ZTsK KyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGQtPnZhciA9PSBpdC5kLT52YXI7CisgICAg fQorICB9IGVsc2UKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKIC8qKgogICogQ29tcGFyZXMg dHdvIGl0ZXJhdG9ycy4KQEAgLTE5MywyNjYgKzE3NiwxNTggQEAKICAqIEByZXR1cm4gdHJ1 ZSBpZiB0d28gaXRlcmF0b3JzIGFyZSBub3QgZXF1YWwsIGZhbHNlCiAgKiAgICAgICAgIG90 aGVyd2lzZQogICovCi0JYm9vbCBNZXNzYWdlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSggY29u c3QgaXRlcmF0b3IgJiBpdCApCi0JewotCQlyZXR1cm4gIW9wZXJhdG9yPT0oIGl0ICk7Ci0J fQotCi0jaWZkZWYgT0xEX0RCVVMKLQlRVmFyaWFudCBNZXNzYWdlOjppdGVyYXRvcjo6bWFy c2hhbGxCYXNlVHlwZSggREJ1c01lc3NhZ2VJdGVyICogaSApCi0JewotCQlRVmFyaWFudCBy ZXQ7Ci0KLQkJc3dpdGNoICggZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKCBpICkg KQotCQl7Ci0JCWNhc2UgREJVU19UWVBFX0lOVDMyOgotCQkJcmV0ID0gUVZhcmlhbnQoIGRi dXNfbWVzc2FnZV9pdGVyX2dldF9pbnQzMiggaSApICk7Ci0JCQlicmVhazsKLQkJY2FzZSBE QlVTX1RZUEVfVUlOVDMyOgotCQkJcmV0ID0gUVZhcmlhbnQoIGRidXNfbWVzc2FnZV9pdGVy X2dldF91aW50MzIoIGkgKSApOwotCQkJYnJlYWs7Ci0JCWNhc2UgREJVU19UWVBFX0RPVUJM RToKLQkJCXJldCA9IFFWYXJpYW50KCBkYnVzX21lc3NhZ2VfaXRlcl9nZXRfZG91YmxlKCBp ICkgKTsKLQkJCWJyZWFrOwotCQljYXNlIERCVVNfVFlQRV9CT09MRUFOOgotCQkJcmV0ID0g UVZhcmlhbnQoIGRidXNfbWVzc2FnZV9pdGVyX2dldF9ib29sZWFuKCBpICkgKTsKLQkJCWJy ZWFrOwotCQljYXNlIERCVVNfVFlQRV9TVFJJTkc6Ci0JCXsKLQkJCWNoYXIgKnN0ciA9IGRi dXNfbWVzc2FnZV9pdGVyX2dldF9zdHJpbmcoIGkgKTsKLQotCQkJcmV0ID0gUVZhcmlhbnQo IFFTdHJpbmc6OmZyb21VdGY4KCBzdHIgKSApOwotCQkJZGJ1c19mcmVlKCBzdHIgKTsKLQkJ fQotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlyZXQgPSBRVmFyaWFudCggICk7Ci0JCQli cmVhazsKLQkJfQotCi0JCXJldHVybiByZXQ7Ci0JfQotI2Vsc2UKLQotCVFWYXJpYW50IE1l c3NhZ2U6Oml0ZXJhdG9yOjptYXJzaGFsbEJhc2VUeXBlKCBEQnVzTWVzc2FnZUl0ZXIqIGkg KSB7Ci0JCVFWYXJpYW50IHJldDsKLQkJc3dpdGNoIChkYnVzX21lc3NhZ2VfaXRlcl9nZXRf YXJnX3R5cGUoaSkpIHsKLQkJCWNhc2UgREJVU19UWVBFX0lOVDMyOgotCQkJCXsKLQkJCQkJ ZGJ1c19pbnQzMl90IHY7Ci0JCQkJCWRidXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYyAoaSwg JnYpOwotCQkJCQlyZXQgPSBRVmFyaWFudCggdiApOwotCQkJCX0KLQkJCQlicmVhazsKLQkJ CWNhc2UgREJVU19UWVBFX1VJTlQzMjoKLQkJCQl7Ci0JCQkJCWRidXNfdWludDMyX3QgdjsK LQkJCQkJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljIChpLCAmdik7Ci0JCQkJCXJldCA9 IFFWYXJpYW50KCB2ICk7Ci0JCQkJfQotCQkJCWJyZWFrOwotCQkJY2FzZSBEQlVTX1RZUEVf RE9VQkxFOgotCQkJCXsKLQkJCQkJZG91YmxlIHY7Ci0JCQkJCWRidXNfbWVzc2FnZV9pdGVy X2dldF9iYXNpYyAoaSwgJnYpOwotCQkJCQlyZXQgPSBRVmFyaWFudCggdiApOwotCQkJCX0K LQkJCQlicmVhazsKLQkJCWNhc2UgREJVU19UWVBFX1NUUklORzoKLQkJCQl7Ci0JCQkJCWNv bnN0IGNoYXIgKnY7Ci0JCQkJCWRidXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYyAoaSwgJnYp OwotCQkJCQlyZXQgPSBRVmFyaWFudCggdiApOwotCQkJCX0KLQkJCQlicmVhazsKLQkJCWRl ZmF1bHQ6Ci0JCQkJcmV0ID0gUVZhcmlhbnQoKTsKLQkJCQlicmVhazsKLQkJfQotCQlyZXR1 cm4gcmV0OwotCX0KLSNlbmRpZgorYm9vbAorTWVzc2FnZTo6aXRlcmF0b3I6Om9wZXJhdG9y IT0oIGNvbnN0IGl0ZXJhdG9yJiBpdCApCit7CisgIHJldHVybiAhb3BlcmF0b3I9PSggaXQg KTsKK30KKworUVZhcmlhbnQgTWVzc2FnZTo6aXRlcmF0b3I6Om1hcnNoYWxsQmFzZVR5cGUo IERCdXNNZXNzYWdlSXRlciogaSApCit7CisgIFFWYXJpYW50IHJldDsKKyAgc3dpdGNoIChk YnVzX21lc3NhZ2VfaXRlcl9nZXRfYXJnX3R5cGUoaSkpIHsKKyAgY2FzZSBEQlVTX1RZUEVf SU5UMzI6CisgICAgeworICAgICAgZGJ1c19pbnQzMl90IHY7CisgICAgICBkYnVzX21lc3Nh Z2VfaXRlcl9nZXRfYmFzaWMgKGksICZ2KTsKKyAgICAgIHJldCA9IFFWYXJpYW50KCB2ICk7 CisgICAgfQorICAgIGJyZWFrOworICBjYXNlIERCVVNfVFlQRV9VSU5UMzI6CisgICAgewor ICAgICAgZGJ1c191aW50MzJfdCB2OworICAgICAgZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jh c2ljIChpLCAmdik7CisgICAgICByZXQgPSBRVmFyaWFudCggdiApOworICAgIH0KKyAgICBi cmVhazsKKyAgY2FzZSBEQlVTX1RZUEVfRE9VQkxFOgorICAgIHsKKyAgICAgIGRvdWJsZSB2 OworICAgICAgZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljIChpLCAmdik7CisgICAgICBy ZXQgPSBRVmFyaWFudCggdiApOworICAgIH0KKyAgICBicmVhazsKKyAgY2FzZSBEQlVTX1RZ UEVfU1RSSU5HOgorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKnY7CisgICAgICBkYnVzX21l c3NhZ2VfaXRlcl9nZXRfYmFzaWMgKGksICZ2KTsKKyAgICAgIHJldCA9IFFWYXJpYW50KCB2 ICk7CisgICAgfQorICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgIHJldCA9IFFWYXJpYW50 KCk7CisgICAgYnJlYWs7CisgIH0KKyAgcmV0dXJuIHJldDsKK30KIAogLyoqCiAgKiBGaWxs cyBRVmFyaWFudCBiYXNlZCBvbiB3aGF0IGN1cnJlbnQgREJ1c01lc3NhZ2VJdGVyIGhlbGRz LgogICovCi0jaWZkZWYgT0xEX0RCVVMKLQl2b2lkIE1lc3NhZ2U6Oml0ZXJhdG9yOjpmaWxs VmFyKCAgKQotCXsKLQkJc3dpdGNoICggZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBl KCBkLT5pdGVyICkgKQotCQl7Ci0JCWNhc2UgREJVU19UWVBFX0lOVDMyOgotCQljYXNlIERC VVNfVFlQRV9VSU5UMzI6Ci0JCWNhc2UgREJVU19UWVBFX0RPVUJMRToKLQkJY2FzZSBEQlVT X1RZUEVfU1RSSU5HOgotCQljYXNlIERCVVNfVFlQRV9CT09MRUFOOgotCQkJcURlYnVnKCAi TWVzc2FnZTo6aXRlcmF0b3I6OmZpbGxWYXIsIHR5cGUgPT0gREJVU19UWVBFX1NUUklORyIg KTsKLQkJCWQtPnZhciA9IG1hcnNoYWxsQmFzZVR5cGUoIGQtPml0ZXIgKTsKLQkJCWJyZWFr OwotCQljYXNlIERCVVNfVFlQRV9BUlJBWToKLQkJewotCQkJc3dpdGNoICggZGJ1c19tZXNz YWdlX2l0ZXJfZ2V0X2FycmF5X3R5cGUoIGQtPml0ZXIgKSApCi0JCQl7Ci0JCQljYXNlIERC VVNfVFlQRV9TVFJJTkc6Ci0JCQl7Ci0JCQkJUVN0cmluZ0xpc3QgdGVtcExpc3Q7Ci0JCQkJ aW50IGNvdW50OwotCQkJCWNoYXIgKipjaGFyQXJyYXk7Ci0KLQkJCQlkYnVzX21lc3NhZ2Vf aXRlcl9nZXRfc3RyaW5nX2FycmF5KCBkLT5pdGVyLAotCQkJCQkJCQkJCQkJCSZjaGFyQXJy YXksICZjb3VudCApOwotCi0JCQkJZm9yICggaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKyAp Ci0JCQkJewotCQkJCQl0ZW1wTGlzdC5hcHBlbmQoIFFTdHJpbmcoIGNoYXJBcnJheVtpXSAp ICk7Ci0JCQkJfQotCi0JCQkJZC0+dmFyID0gUVZhcmlhbnQoIHRlbXBMaXN0ICk7Ci0JCQkJ ZGJ1c19mcmVlKCBjaGFyQXJyYXkgKTsKLQkJCQlicmVhazsKLQkJCX0KLQkJCWRlZmF1bHQ6 Ci0JCQkJcURlYnVnKCAiQXJyYXkgb2YgdHlwZSBub3QgaW1wbGVtZW50ZWQiICk7Ci0JCQkJ ZC0+dmFyID0gUVZhcmlhbnQoICApOwotCQkJCWJyZWFrOwotCQkJfQotCQkJYnJlYWs7Ci0J CX0KLQkJY2FzZSBEQlVTX1RZUEVfRElDVDoKLQkJewotCQkJcURlYnVnKCAiR290IGEgaGFz aCEiICk7Ci0JCQlRTWFwIDwgUVN0cmluZywgUVZhcmlhbnQgPiB0ZW1wTWFwOwotCQkJREJ1 c01lc3NhZ2VJdGVyIGRpY3RJdGVyOwotCi0JCQlkYnVzX21lc3NhZ2VfaXRlcl9pbml0X2Rp Y3RfaXRlcmF0b3IoIGQtPml0ZXIsICZkaWN0SXRlciApOwotCQkJZG8KLQkJCXsKLQkJCQlj aGFyICprZXkgPSBkYnVzX21lc3NhZ2VfaXRlcl9nZXRfZGljdF9rZXkoICZkaWN0SXRlciAp OwotCi0JCQkJdGVtcE1hcFtrZXldID0gbWFyc2hhbGxCYXNlVHlwZSggJmRpY3RJdGVyICk7 Ci0JCQkJZGJ1c19mcmVlKCBrZXkgKTsKLQkJCQlkYnVzX21lc3NhZ2VfaXRlcl9uZXh0KCAm ZGljdEl0ZXIgKTsKLQkJCX0KLQkJCXdoaWxlICggZGJ1c19tZXNzYWdlX2l0ZXJfaGFzX25l eHQoICZkaWN0SXRlciApICk7Ci0JCQlkLT52YXIgPSBRVmFyaWFudCggdGVtcE1hcCApOwot CQkJYnJlYWs7Ci0JCQlxRGVidWcoICJIYXNoL0RpY3QgdHlwZSBub3QgaW1wbGVtZW50ZWQi ICk7Ci0JCQlkLT52YXIgPSBRVmFyaWFudCggICk7Ci0JCQlicmVhazsKLQkJfQotCQlkZWZh dWx0OgotCQkJcURlYnVnKCAibm90IGltcGxlbWVudGVkIiApOwotCQkJZC0+dmFyID0gUVZh cmlhbnQoICApOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0jZWxzZQotCi0Jdm9pZCBNZXNzYWdl OjppdGVyYXRvcjo6ZmlsbFZhcigpIHsKLQkJc3dpdGNoICggZGJ1c19tZXNzYWdlX2l0ZXJf Z2V0X2FyZ190eXBlKCBkLT5pdGVyICkgKSB7Ci0JCQljYXNlIERCVVNfVFlQRV9JTlQzMjoK LQkJCWNhc2UgREJVU19UWVBFX1VJTlQzMjoKLQkJCWNhc2UgREJVU19UWVBFX0RPVUJMRToK LQkJCWNhc2UgREJVU19UWVBFX1NUUklORzoKLQkJCQlkLT52YXIgPSBtYXJzaGFsbEJhc2VU eXBlKCBkLT5pdGVyICk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIERCVVNfVFlQRV9BUlJBWTog ewotCQkJCQkJICAgICAgc3dpdGNoICggZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2VsZW1lbnRf dHlwZSggZC0+aXRlciApICkgewotCQkJCQkJCSAgICAgIGNhc2UgREJVU19UWVBFX1NUUklO RzogewotCQkJCQkJCQkJCQkgICAgIFFTdHJpbmdMaXN0IHRlbXBMaXN0OwotCQkJCQkJCQkJ CQkgICAgIERCdXNNZXNzYWdlSXRlciBzdWI7Ci0JCQkJCQkJCQkJCSAgICAgZGJ1c19tZXNz YWdlX2l0ZXJfcmVjdXJzZSAoZC0+aXRlciwgJnN1Yik7Ci0JCQkJCQkJCQkJCSAgICAgd2hp bGUgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSAoJnN1YikgIT0gREJVU19UWVBF X0lOVkFMSUQpCi0JCQkJCQkJCQkJCSAgICAgewotCQkJCQkJCQkJCQkJICAgICBjb25zdCBj aGFyICp2OwotCQkJCQkJCQkJCQkJICAgICBkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFzaWMg KCZzdWIsICZ2KTsKLQkJCQkJCQkJCQkJCSAgICAgdGVtcExpc3QuYXBwZW5kKCBRU3RyaW5n KCB2ICkgKTsKLQkJCQkJCQkJCQkJCSAgICAgZGJ1c19tZXNzYWdlX2l0ZXJfbmV4dCAoJnN1 Yik7Ci0JCQkJCQkJCQkJCSAgICAgfQotCQkJCQkJCQkJCQkgICAgIGQtPnZhciA9IFFWYXJp YW50KCB0ZW1wTGlzdCApOwotCQkJCQkJCQkJCQkgICAgIGJyZWFrOwotCQkJCQkJCQkJCSAg ICAgfQotCQkJCQkJCSAgICAgIGRlZmF1bHQ6Ci0JCQkJCQkJCQkJICAgICBxRGVidWcoICJB cnJheSBvZiB0eXBlIG5vdCBpbXBsZW1lbnRlZCIgKTsKLQkJCQkJCQkJCQkgICAgIGQtPnZh ciA9IFFWYXJpYW50KCk7Ci0JCQkJCQkJCQkJICAgICBicmVhazsKLQkJCQkJCSAgICAgIH0K LQkJCQkJCSAgICAgIGJyZWFrOwotCQkJCQkgICAgICB9Cit2b2lkCitNZXNzYWdlOjppdGVy YXRvcjo6ZmlsbFZhcigpCit7CisgIHN3aXRjaCAoIGRidXNfbWVzc2FnZV9pdGVyX2dldF9h cmdfdHlwZSggZC0+aXRlciApICkgeworICBjYXNlIERCVVNfVFlQRV9JTlQzMjoKKyAgY2Fz ZSBEQlVTX1RZUEVfVUlOVDMyOgorICBjYXNlIERCVVNfVFlQRV9ET1VCTEU6CisgIGNhc2Ug REJVU19UWVBFX1NUUklORzoKKyAgICBkLT52YXIgPSBtYXJzaGFsbEJhc2VUeXBlKCBkLT5p dGVyICk7CisgICAgYnJlYWs7CisgIGNhc2UgREJVU19UWVBFX0FSUkFZOiB7CisgICAgc3dp dGNoICggZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2VsZW1lbnRfdHlwZSggZC0+aXRlciApICkg eworICAgIGNhc2UgREJVU19UWVBFX1NUUklORzogeworICAgICAgUVN0cmluZ0xpc3QgdGVt cExpc3Q7CisgICAgICBEQnVzTWVzc2FnZUl0ZXIgc3ViOworICAgICAgZGJ1c19tZXNzYWdl X2l0ZXJfcmVjdXJzZSAoZC0+aXRlciwgJnN1Yik7CisgICAgICB3aGlsZSAoZGJ1c19tZXNz YWdlX2l0ZXJfZ2V0X2FyZ190eXBlICgmc3ViKSAhPSBEQlVTX1RZUEVfSU5WQUxJRCkKKyAg ICAgICAgeworICAgICAgICAgIGNvbnN0IGNoYXIgKnY7CisgICAgICAgICAgZGJ1c19tZXNz YWdlX2l0ZXJfZ2V0X2Jhc2ljICgmc3ViLCAmdik7CisgICAgICAgICAgdGVtcExpc3QuYXBw ZW5kKCBRU3RyaW5nKCB2ICkgKTsKKyAgICAgICAgICBkYnVzX21lc3NhZ2VfaXRlcl9uZXh0 ICgmc3ViKTsKKyAgICAgICAgfQorICAgICAgZC0+dmFyID0gUVZhcmlhbnQoIHRlbXBMaXN0 ICk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIHFEZWJ1Zygg IkFycmF5IG9mIHR5cGUgbm90IGltcGxlbWVudGVkIiApOworICAgICAgZC0+dmFyID0gUVZh cmlhbnQoKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBicmVhazsKKyAgfQogI2lmIDAK LQkJCQkJICAgICAgLyogRElDVCBpcyBnb25lIGZvciBub3csIGJ1dCBleHBlY3RlZCB0byBi ZSByZWludHJvZHVjZWQsIG9yIGVsc2UKLQkJCQkJICAgICAgICogcmVpbnRyb2R1Y2VkIGFz IGEgZmxhZyBvbiB0aGUgaW50cm9zcGVjdGlvbiBkYXRhIHRoYXQgY2FuCi0JCQkJCSAgICAg ICAqIGFwcGx5IHRvIGFycmF5IG9mIHN0cnVjdCBvZiB0d28gZmllbGRzCi0JCQkJCSAgICAg ICAqLwotCQkJY2FzZSBEQlVTX1RZUEVfRElDVDogewotCQkJCQkJICAgICBxRGVidWcoICJH b3QgYSBoYXNoISIgKTsKLQkJCQkJCSAgICAgUU1hcDxRU3RyaW5nLCBRVmFyaWFudD4gdGVt cE1hcDsKLQkJCQkJCSAgICAgREJ1c01lc3NhZ2VJdGVyIGRpY3RJdGVyOwotCQkJCQkJICAg ICBkYnVzX21lc3NhZ2VfaXRlcl9pbml0X2RpY3RfaXRlcmF0b3IoIGQtPml0ZXIsICZkaWN0 SXRlciApOwotCQkJCQkJICAgICBkbyB7Ci0JCQkJCQkJICAgICBjaGFyICprZXkgPSBkYnVz X21lc3NhZ2VfaXRlcl9nZXRfZGljdF9rZXkoICZkaWN0SXRlciApOwotCQkJCQkJCSAgICAg dGVtcE1hcFtrZXldID0gbWFyc2hhbGxCYXNlVHlwZSggJmRpY3RJdGVyICk7Ci0JCQkJCQkJ ICAgICBkYnVzX2ZyZWUoIGtleSApOwotCQkJCQkJCSAgICAgZGJ1c19tZXNzYWdlX2l0ZXJf bmV4dCggJmRpY3RJdGVyICk7Ci0JCQkJCQkgICAgIH0gd2hpbGUoIGRidXNfbWVzc2FnZV9p dGVyX2hhc19uZXh0KCAmZGljdEl0ZXIgKSApOwotCQkJCQkJICAgICBkLT52YXIgPSBRVmFy aWFudCggdGVtcE1hcCApOwotCQkJCQkJICAgICBicmVhazsKLQkJCQkJCSAgICAgcURlYnVn KCAiSGFzaC9EaWN0IHR5cGUgbm90IGltcGxlbWVudGVkIiApOwotCQkJCQkJICAgICBkLT52 YXIgPSBRVmFyaWFudCgpOwotCQkJCQkJICAgICBicmVhazsKLQkJCQkJICAgICB9Ci0jZW5k aWYKLQkJCWRlZmF1bHQ6Ci0JCQkJCSAgICAgcURlYnVnKCAibm90IGltcGxlbWVudGVkIiAp OwotCQkJCQkgICAgIGQtPnZhciA9IFFWYXJpYW50KCk7Ci0JCQkJCSAgICAgYnJlYWs7Ci0J CX0KLQl9CisgIC8qIERJQ1QgaXMgZ29uZSBmb3Igbm93LCBidXQgZXhwZWN0ZWQgdG8gYmUg cmVpbnRyb2R1Y2VkLCBvciBlbHNlCisgICAqIHJlaW50cm9kdWNlZCBhcyBhIGZsYWcgb24g dGhlIGludHJvc3BlY3Rpb24gZGF0YSB0aGF0IGNhbgorICAgKiBhcHBseSB0byBhcnJheSBv ZiBzdHJ1Y3Qgb2YgdHdvIGZpZWxkcworICAgKi8KKyAgY2FzZSBEQlVTX1RZUEVfRElDVDog eworICAgIHFEZWJ1ZyggIkdvdCBhIGhhc2ghIiApOworICAgIFFNYXA8UVN0cmluZywgUVZh cmlhbnQ+IHRlbXBNYXA7CisgICAgREJ1c01lc3NhZ2VJdGVyIGRpY3RJdGVyOworICAgIGRi dXNfbWVzc2FnZV9pdGVyX2luaXRfZGljdF9pdGVyYXRvciggZC0+aXRlciwgJmRpY3RJdGVy ICk7CisgICAgZG8geworICAgICAgY2hhciAqa2V5ID0gZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0 X2RpY3Rfa2V5KCAmZGljdEl0ZXIgKTsKKyAgICAgIHRlbXBNYXBba2V5XSA9IG1hcnNoYWxs QmFzZVR5cGUoICZkaWN0SXRlciApOworICAgICAgZGJ1c19mcmVlKCBrZXkgKTsKKyAgICAg IGRidXNfbWVzc2FnZV9pdGVyX25leHQoICZkaWN0SXRlciApOworICAgIH0gd2hpbGUoIGRi dXNfbWVzc2FnZV9pdGVyX2hhc19uZXh0KCAmZGljdEl0ZXIgKSApOworICAgIGQtPnZhciA9 IFFWYXJpYW50KCB0ZW1wTWFwICk7CisgICAgYnJlYWs7CisgICAgcURlYnVnKCAiSGFzaC9E aWN0IHR5cGUgbm90IGltcGxlbWVudGVkIiApOworICAgIGQtPnZhciA9IFFWYXJpYW50KCk7 CisgICAgYnJlYWs7CisgIH0KICNlbmRpZgorICBkZWZhdWx0OgorICAgIHFEZWJ1ZyggIm5v dCBpbXBsZW1lbnRlZCIgKTsKKyAgICBkLT52YXIgPSBRVmFyaWFudCgpOworICAgIGJyZWFr OworICB9Cit9CiAKIC8qKgogICogUmV0dXJucyBhIFFWYXJpYW50IGhlbHAgYnkgdGhpcyBp dGVyYXRvci4KICAqIEByZXR1cm4gUVZhcmlhbnQgaGVsZCBieSB0aGlzIGl0ZXJhdG9yCiAg Ki8KLQlRVmFyaWFudCBNZXNzYWdlOjppdGVyYXRvcjo6dmFyKCAgKSBjb25zdAotCXsKLQkJ cmV0dXJuIGQtPnZhcjsKLQl9Ci0KLQlzdHJ1Y3QgTWVzc2FnZTo6UHJpdmF0ZQotCXsKLQkJ REJ1c01lc3NhZ2UgKm1zZzsKLQl9OwotCi0JTWVzc2FnZTo6TWVzc2FnZSggREJ1c01lc3Nh Z2UgKiBtICkKLQl7Ci0JCWQgPSBuZXcgUHJpdmF0ZTsKLQkJZC0+bXNnID0gbTsKLQl9CitR VmFyaWFudAorTWVzc2FnZTo6aXRlcmF0b3I6OnZhcigpIGNvbnN0Cit7CisgIHJldHVybiBk LT52YXI7Cit9CisKK3N0cnVjdCBNZXNzYWdlOjpQcml2YXRlIHsKKyAgREJ1c01lc3NhZ2Ug Km1zZzsKK307CisKK01lc3NhZ2U6Ok1lc3NhZ2UoIERCdXNNZXNzYWdlICptICkKK3sKKyAg ZCA9IG5ldyBQcml2YXRlOworICBkLT5tc2cgPSBtOworfQogCiAvKioKICAqCiAgKi8KLQlN ZXNzYWdlOjpNZXNzYWdlKCBpbnQgbWVzc2FnZVR5cGUgKQotCXsKLQkJZCA9IG5ldyBQcml2 YXRlOwotCQlkLT5tc2cgPSBkYnVzX21lc3NhZ2VfbmV3KCBtZXNzYWdlVHlwZSApOwotCX0K K01lc3NhZ2U6Ok1lc3NhZ2UoIGludCBtZXNzYWdlVHlwZSApCit7CisgIGQgPSBuZXcgUHJp dmF0ZTsKKyAgZC0+bXNnID0gZGJ1c19tZXNzYWdlX25ldyggbWVzc2FnZVR5cGUgKTsKK30K IAogLyoqCiAgKiBDb25zdHJ1Y3RzIGEgbmV3IE1lc3NhZ2Ugd2l0aCB0aGUgZ2l2ZW4gc2Vy dmljZSBhbmQgbmFtZS4KICAqIEBwYXJhbSBzZXJ2aWNlIHNlcnZpY2Ugc2VydmljZSB0aGF0 IHRoZSBtZXNzYWdlIHNob3VsZCBiZSBzZW50IHRvCiAgKiBAcGFyYW0gbmFtZSBuYW1lIG9m IHRoZSBtZXNzYWdlCiAgKi8KLQlNZXNzYWdlOjpNZXNzYWdlKCBjb25zdCBRU3RyaW5nICYg c2VydmljZSwgY29uc3QgUVN0cmluZyAmIHBhdGgsCi0JCQkJCSAgY29uc3QgUVN0cmluZyAm IGludGVyZmFjZSwgY29uc3QgUVN0cmluZyAmIG1ldGhvZCApCi0JewotCQlkID0gbmV3IFBy aXZhdGU7Ci0JCWQtPm1zZyA9Ci0JCQlkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9jYWxsKCBz ZXJ2aWNlLmxhdGluMSggICksIHBhdGgubGF0aW4xKCAgKSwKLQkJCQkJCQkJCQkgIGludGVy ZmFjZS5sYXRpbjEoICApLAotCQkJCQkJCQkJCSAgbWV0aG9kLmxhdGluMSggICkgKTsKLQl9 CitNZXNzYWdlOjpNZXNzYWdlKCBjb25zdCBRU3RyaW5nJiBzZXJ2aWNlLCBjb25zdCBRU3Ry aW5nJiBwYXRoLAorICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyYgaW50ZXJmYWNl LCBjb25zdCBRU3RyaW5nJiBtZXRob2QgKQoreworICBkID0gbmV3IFByaXZhdGU7CisgIGQt Pm1zZyA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2NhbGwoIHNlcnZpY2UubGF0aW4xKCks IHBhdGgubGF0aW4xKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludGVyZmFjZS5sYXRpbjEoKSwgbWV0aG9kLmxhdGluMSgpICk7Cit9CiAKIC8qKgog ICogQ29uc3RydWN0cyBhIG1lc3NhZ2UgdGhhdCBpcyBhIHJlcGx5IHRvIHNvbWUgb3RoZXIK QEAgLTQ2MSwyNzggKzMzNiwyNDcgQEAKICAqIEBwYXJhbSByZXBsYXlpbmdUbyBvcmlnaW5h bF9tZXNzYWdlIHRoZSBtZXNzYWdlIHdoaWNoIHRoZSBjcmVhdGVkCiAgKiBtZXNzYWdlIGlz IGEgcmVwbHkgdG8uCiAgKi8KLQlNZXNzYWdlOjpNZXNzYWdlKCBjb25zdCBNZXNzYWdlICYg cmVwbGF5aW5nVG8gKQotCXsKLQkJZCA9IG5ldyBQcml2YXRlOwotCQlkLT5tc2cgPSBkYnVz X21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4oIHJlcGxheWluZ1RvLmQtPm1zZyApOwotCX0K LQotCU1lc3NhZ2U6Ok1lc3NhZ2UoIGNvbnN0IFFTdHJpbmcgJiBwYXRoLCBjb25zdCBRU3Ry aW5nICYgaW50ZXJmYWNlLAotCQkJCQkgIGNvbnN0IFFTdHJpbmcgJiBuYW1lICkKLQl7Ci0J CXFEZWJ1ZyggIk1lc3NhZ2U6Ok1lc3NhZ2UiICk7Ci0JCWQgPSBuZXcgUHJpdmF0ZTsKLQkJ ZC0+bXNnID0gZGJ1c19tZXNzYWdlX25ld19zaWduYWwoIHBhdGguYXNjaWkoICApLCBpbnRl cmZhY2UuYXNjaWkoICApLAotCQkJCQkJCQkJCSAgbmFtZS5hc2NpaSggICkgKTsKLQl9Ci0K LQlNZXNzYWdlOjpNZXNzYWdlKCBjb25zdCBNZXNzYWdlICYgcmVwbGF5aW5nVG8sIGNvbnN0 IFFTdHJpbmcgJiBlcnJvck5hbWUsCi0JCQkJCSAgY29uc3QgUVN0cmluZyAmIGVycm9yTWVz c2FnZSApCi0JewotCQlkID0gbmV3IFByaXZhdGU7Ci0JCWQtPm1zZyA9Ci0JCQlkYnVzX21l c3NhZ2VfbmV3X2Vycm9yKCByZXBsYXlpbmdUby5kLT5tc2csIGVycm9yTmFtZS51dGY4KCAg KSwKLQkJCQkJCQkJCWVycm9yTWVzc2FnZS51dGY4KCAgKSApOwotCX0KLQotCU1lc3NhZ2Ug TWVzc2FnZTo6b3BlcmF0b3I9KCBjb25zdCBNZXNzYWdlICYgb3RoZXIgKQotCXsKLQkJLy9G SVhNRTogcmVmIHRoZSBvdGhlci5kLT5tc2cgaW5zdGVhZCBvZiBjb3B5aW5nIGl0PwotCX0K K01lc3NhZ2U6Ok1lc3NhZ2UoIGNvbnN0IE1lc3NhZ2UmIHJlcGxheWluZ1RvICkKK3sKKyAg ZCA9IG5ldyBQcml2YXRlOworICBkLT5tc2cgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9y ZXR1cm4oIHJlcGxheWluZ1RvLmQtPm1zZyApOworfQorCitNZXNzYWdlOjogTWVzc2FnZSgg Y29uc3QgUVN0cmluZyYgcGF0aCwgY29uc3QgUVN0cmluZyYgaW50ZXJmYWNlLAorICAgICAg ICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcmIG5hbWUgKQoreworICBkID0gbmV3IFByaXZh dGU7CisgIGQtPm1zZyA9IGRidXNfbWVzc2FnZV9uZXdfc2lnbmFsKCBwYXRoLmFzY2lpKCks IGludGVyZmFjZS5hc2NpaSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZS5hc2NpaSgpICk7Cit9CisKK01lc3NhZ2U6Ok1lc3NhZ2UoIGNvbnN0IE1lc3Nh Z2UmIHJlcGxheWluZ1RvLCBjb25zdCBRU3RyaW5nJiBlcnJvck5hbWUsCisgICAgICAgICAg ICAgICAgICBjb25zdCBRU3RyaW5nJiBlcnJvck1lc3NhZ2UgKQoreworICBkID0gbmV3IFBy aXZhdGU7CisgIGQtPm1zZyA9IGRidXNfbWVzc2FnZV9uZXdfZXJyb3IoIHJlcGxheWluZ1Rv LmQtPm1zZywgZXJyb3JOYW1lLnV0ZjgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXJyb3JNZXNzYWdlLnV0ZjgoKSApOworfQogCitNZXNzYWdlIE1lc3NhZ2U6 Om9wZXJhdG9yPSggY29uc3QgTWVzc2FnZSYgb3RoZXIgKQoreworICAvL0ZJWE1FOiByZWYg dGhlIG90aGVyLmQtPm1zZyBpbnN0ZWFkIG9mIGNvcHlpbmcgaXQ/Cit9CiAvKioKICAqIERl c3RydWN0cyBtZXNzYWdlLgogICovCi0JTWVzc2FnZTo6fk1lc3NhZ2UoICApCi0JewotCQlp ZiAoIGQtPm1zZyApCi0JCXsKLQkJCWRidXNfbWVzc2FnZV91bnJlZiggZC0+bXNnICk7Ci0J CX0KLQkJZGVsZXRlIGQ7Ci0KLQkJZCA9IDA7Ci0JfQotCi0JaW50IE1lc3NhZ2U6OnR5cGUo ICApIGNvbnN0Ci0JewotCQlyZXR1cm4gZGJ1c19tZXNzYWdlX2dldF90eXBlKCBkLT5tc2cg KTsKLQl9Ci0KLQl2b2lkIE1lc3NhZ2U6OnNldEF1dG9BY3RpdmF0aW9uKCBib29sIGFhICkK LQl7Ci0jaWZkZWYgT0xEX0RCVVMKLQkJZGJ1c19tZXNzYWdlX3NldF9hdXRvX2FjdGl2YXRp b24oIGQtPm1zZywgYWEgKTsKLSNlbHNlCi0JCWRidXNfbWVzc2FnZV9zZXRfYXV0b19zdGFy dChkLT5tc2csIGFhKTsKLSNlbmRpZgotCX0KK01lc3NhZ2U6On5NZXNzYWdlKCkKK3sKKyAg aWYgKCBkLT5tc2cgKSB7CisgICAgZGJ1c19tZXNzYWdlX3VucmVmKCBkLT5tc2cgKTsKKyAg fQorICBkZWxldGUgZDsgZD0wOworfQogCi0JYm9vbCBNZXNzYWdlOjphdXRvQWN0aWNhdGlv biggICkKLQl7Ci0jaWZkZWYgT0xEX0RCVVMKLQkJcmV0dXJuIGRidXNfbWVzc2FnZV9nZXRf YXV0b19hY3RpdmF0aW9uKCBkLT5tc2cgKTsKLSNlbHNlCi0JCXJldHVybiBkYnVzX21lc3Nh Z2VfZ2V0X2F1dG9fc3RhcnQoZC0+bXNnKTsKLSNlbmRpZgotCX0KK2ludCBNZXNzYWdlOjp0 eXBlKCkgY29uc3QKK3sKKyAgcmV0dXJuIGRidXNfbWVzc2FnZV9nZXRfdHlwZSggZC0+bXNn ICk7Cit9CisKKy8qKiBBZGRlZCBmb3Igc2t5cGVjb25uZWN0aW9uLmNwcCAqLwordm9pZCBN ZXNzYWdlOjpzZXRBdXRvQWN0aXZhdGlvbiggYm9vbCBhYSApCit7CisgIGRidXNfbWVzc2Fn ZV9zZXRfYXV0b19zdGFydChkLT5tc2csIGFhKTsKK30KIAotCXZvaWQgTWVzc2FnZTo6c2V0 UGF0aCggY29uc3QgUVN0cmluZyAmIHBhdGggKQotCXsKLQkJZGJ1c19tZXNzYWdlX3NldF9w YXRoKCBkLT5tc2csIHBhdGguYXNjaWkoICApICk7Ci0JfQotCi0JUVN0cmluZyBNZXNzYWdl OjpwYXRoKCAgKSBjb25zdAotCXsKLQkJcmV0dXJuIGRidXNfbWVzc2FnZV9nZXRfcGF0aCgg ZC0+bXNnICk7Ci0JfQotCi0Jdm9pZCBNZXNzYWdlOjpzZXRJbnRlcmZhY2UoIGNvbnN0IFFT dHJpbmcgJiBpZmFjZSApCi0JewotCQlkYnVzX21lc3NhZ2Vfc2V0X2ludGVyZmFjZSggZC0+ bXNnLCBpZmFjZS5hc2NpaSggICkgKTsKLQl9Ci0KLQlRU3RyaW5nIE1lc3NhZ2U6OmludGVy ZmFjZSggICkgY29uc3QKLQl7Ci0JCXJldHVybiBkYnVzX21lc3NhZ2VfZ2V0X2ludGVyZmFj ZSggZC0+bXNnICk7Ci0JfQotCi0Jdm9pZCBNZXNzYWdlOjpzZXRNZW1iZXIoIGNvbnN0IFFT dHJpbmcgJiBtZW1iZXIgKQotCXsKLQkJZGJ1c19tZXNzYWdlX3NldF9tZW1iZXIoIGQtPm1z ZywgbWVtYmVyLmFzY2lpKCAgKSApOwotCX0KLQotCVFTdHJpbmcgTWVzc2FnZTo6bWVtYmVy KCAgKSBjb25zdAotCXsKLQkJcmV0dXJuIGRidXNfbWVzc2FnZV9nZXRfbWVtYmVyKCBkLT5t c2cgKTsKLQl9Ci0KLQl2b2lkIE1lc3NhZ2U6OnNldEVycm9yTmFtZSggY29uc3QgUVN0cmlu ZyAmIGVyciApCi0JewotCQlkYnVzX21lc3NhZ2Vfc2V0X2Vycm9yX25hbWUoIGQtPm1zZywg ZXJyLnV0ZjgoKSApOwotCX0KLQotCVFTdHJpbmcgTWVzc2FnZTo6ZXJyb3JOYW1lKCAgKSBj b25zdAotCXsKLQkJcmV0dXJuIGRidXNfbWVzc2FnZV9nZXRfZXJyb3JfbmFtZSggZC0+bXNn ICk7Ci0JfQotCi0Jdm9pZCBNZXNzYWdlOjpzZXREZXN0aW5hdGlvbiggY29uc3QgUVN0cmlu ZyAmIGRlc3QgKQotCXsKLQkJZGJ1c19tZXNzYWdlX3NldF9kZXN0aW5hdGlvbiggZC0+bXNn LCBkZXN0LnV0ZjgoKSApOwotCX0KLQotCVFTdHJpbmcgTWVzc2FnZTo6ZGVzdGluYXRpb24o ICApIGNvbnN0Ci0JewotCQlyZXR1cm4gZGJ1c19tZXNzYWdlX2dldF9kZXN0aW5hdGlvbigg ZC0+bXNnICk7Ci0JfQorLyoqIEFkZGVkIGZvciBza3lwZWNvbm5lY3Rpb24uY3BwICovCiti b29sIE1lc3NhZ2U6OmF1dG9BY3RpY2F0aW9uKCkKK3sKKyAgcmV0dXJuIGRidXNfbWVzc2Fn ZV9nZXRfYXV0b19zdGFydChkLT5tc2cpOworfQorCit2b2lkIE1lc3NhZ2U6OnNldFBhdGgo IGNvbnN0IFFTdHJpbmcmIHBhdGggKQoreworICBkYnVzX21lc3NhZ2Vfc2V0X3BhdGgoIGQt Pm1zZywgcGF0aC5hc2NpaSgpICk7Cit9CisKK1FTdHJpbmcgTWVzc2FnZTo6cGF0aCgpIGNv bnN0Cit7CisgIHJldHVybiBkYnVzX21lc3NhZ2VfZ2V0X3BhdGgoIGQtPm1zZyApOworfQor Cit2b2lkIE1lc3NhZ2U6OnNldEludGVyZmFjZSggY29uc3QgUVN0cmluZyYgaWZhY2UgKQor eworICBkYnVzX21lc3NhZ2Vfc2V0X2ludGVyZmFjZSggZC0+bXNnLCBpZmFjZS5hc2NpaSgp ICk7Cit9CisKK1FTdHJpbmcgTWVzc2FnZTo6aW50ZXJmYWNlKCkgY29uc3QKK3sKKyAgcmV0 dXJuIGRidXNfbWVzc2FnZV9nZXRfaW50ZXJmYWNlKCBkLT5tc2cgKTsKK30KKwordm9pZCBN ZXNzYWdlOjpzZXRNZW1iZXIoIGNvbnN0IFFTdHJpbmcmIG1lbWJlciApCit7CisgIGRidXNf bWVzc2FnZV9zZXRfbWVtYmVyKCBkLT5tc2csIG1lbWJlci5hc2NpaSgpICk7Cit9CisKK1FT dHJpbmcgTWVzc2FnZTo6bWVtYmVyKCkgY29uc3QKK3sKKyAgcmV0dXJuIGRidXNfbWVzc2Fn ZV9nZXRfbWVtYmVyKCBkLT5tc2cgKTsKK30KKwordm9pZCBNZXNzYWdlOjpzZXRFcnJvck5h bWUoIGNvbnN0IFFTdHJpbmcmIGVyciApCit7CisgIC8vZGJ1c19tZXNzYWdlX3NldF9lcnJv cl9uYW1lKCBkLT5tc2csIGVyciApOworfQorCitRU3RyaW5nIE1lc3NhZ2U6OmVycm9yTmFt ZSgpIGNvbnN0Cit7CisgIHJldHVybiBkYnVzX21lc3NhZ2VfZ2V0X2Vycm9yX25hbWUoIGQt Pm1zZyApOworfQorCit2b2lkIE1lc3NhZ2U6OnNldERlc3RpbmF0aW9uKCBjb25zdCBRU3Ry aW5nJiBkZXN0ICkKK3sKKyAgLy9kYnVzX21lc3NhZ2Vfc2V0X2Rlc3RpbmF0aW9uKCBkLT5t c2csIGRlc3QgKTsKK30KKworUVN0cmluZyBNZXNzYWdlOjpkZXN0aW5hdGlvbigpIGNvbnN0 Cit7CisgIHJldHVybiBkYnVzX21lc3NhZ2VfZ2V0X2Rlc3RpbmF0aW9uKCBkLT5tc2cgKTsK K30KIAogLyoqCiAgKiBTZXRzIHRoZSBtZXNzYWdlIHNlbmRlci4KICAqIEBwYXJhbSBzZW5k ZXIgdGhlIHNlbmRlcgogICogQHJldHVybiBmYWxzZSBpZiB1bnN1Y2Nlc3NmdWwKICAqLwot CWJvb2wgTWVzc2FnZTo6c2V0U2VuZGVyKCBjb25zdCBRU3RyaW5nICYgc2VuZGVyICkKLQl7 Ci0JCXJldHVybiBkYnVzX21lc3NhZ2Vfc2V0X3NlbmRlciggZC0+bXNnLCBzZW5kZXIubGF0 aW4xKCAgKSApOwotCX0KK2Jvb2wKK01lc3NhZ2U6OnNldFNlbmRlciggY29uc3QgUVN0cmlu ZyYgc2VuZGVyICkKK3sKKyAgcmV0dXJuIGRidXNfbWVzc2FnZV9zZXRfc2VuZGVyKCBkLT5t c2csIHNlbmRlci5sYXRpbjEoKSApOworfQogCiAvKioKICAqIFJldHVybnMgc2VuZGVyIG9m IHRoaXMgbWVzc2FnZS4KICAqIEByZXR1cm4gc2VuZGVyCiAgKi8KLQlRU3RyaW5nIE1lc3Nh Z2U6OnNlbmRlciggICkgY29uc3QKLQl7Ci0JCXJldHVybiBkYnVzX21lc3NhZ2VfZ2V0X3Nl bmRlciggZC0+bXNnICk7Ci0JfQotCi0JYm9vbCBNZXNzYWdlOjpleHBlY3RSZXBseSggICkg Y29uc3QKLQl7Ci0JCXJldHVybiAhZGJ1c19tZXNzYWdlX2dldF9ub19yZXBseSggZC0+bXNn ICk7Ci0JfQotCi0JUVN0cmluZyBNZXNzYWdlOjpzaWduYXR1cmUoICApIGNvbnN0Ci0Jewot CQlyZXR1cm4gZGJ1c19tZXNzYWdlX2dldF9zaWduYXR1cmUoIGQtPm1zZyApOwotCX0KK1FT dHJpbmcKK01lc3NhZ2U6OnNlbmRlcigpIGNvbnN0Cit7CisgIHJldHVybiBkYnVzX21lc3Nh Z2VfZ2V0X3NlbmRlciggZC0+bXNnICk7Cit9CisKKy8qKiBBZGRlZCBmb3Igc2t5cGVjb25u ZWN0aW9uLmNwcCAqLworYm9vbCBNZXNzYWdlOjpleHBlY3RSZXBseSgpIGNvbnN0Cit7Cisg IHJldHVybiAhZGJ1c19tZXNzYWdlX2dldF9ub19yZXBseSggZC0+bXNnICk7Cit9CisKK1FT dHJpbmcgTWVzc2FnZTo6c2lnbmF0dXJlKCkgY29uc3QKK3sKKyAgcmV0dXJuIGRidXNfbWVz c2FnZV9nZXRfc2lnbmF0dXJlKCBkLT5tc2cgKTsKK30KKwogCiAvKioKICAqIFJldHVybnMg dGhlIHN0YXJ0aW5nIGl0ZXJhdG9yIGZvciB0aGUgZmllbGRzIG9mIHRoaXMKICAqIG1lc3Nh Z2UuCiAgKiBAcmV0dXJuIHN0YXJ0aW5nIGl0ZXJhdG9yCiAgKi8KLQlNZXNzYWdlOjppdGVy YXRvciBNZXNzYWdlOjpiZWdpbiggICkgY29uc3QKLQl7Ci0JCXJldHVybiBpdGVyYXRvcigg ZC0+bXNnICk7Ci0JfQorTWVzc2FnZTo6aXRlcmF0b3IKK01lc3NhZ2U6OmJlZ2luKCkgY29u c3QKK3sKKyAgcmV0dXJuIGl0ZXJhdG9yKCBkLT5tc2cgKTsKK30KIAogLyoqCiAgKiBSZXR1 cm5zIHRoZSBlbmRpbmcgaXRlcmF0b3IgZm9yIHRoZSBmaWVsZHMgb2YgdGhpcwogICogbWVz c2FnZS4KICAqIEByZXR1cm4gZW5kaW5nIGl0ZXJhdG9yCiAgKi8KLQlNZXNzYWdlOjppdGVy YXRvciBNZXNzYWdlOjplbmQoICApIGNvbnN0Ci0JewotCQlyZXR1cm4gaXRlcmF0b3IoICAp OwotCX0KK01lc3NhZ2U6Oml0ZXJhdG9yCitNZXNzYWdlOjplbmQoKSBjb25zdAoreworICBy ZXR1cm4gaXRlcmF0b3IoKTsKK30KIAogLyoqCiAgKiBSZXR1cm5zIHRoZSBmaWVsZCBhdCBw b3NpdGlvbiBAcCBpCiAgKiBAcGFyYW0gaSBwb3NpdGlvbiBvZiB0aGUgd2FudGVkIGZpZWxk CiAgKiBAcmV0dXJuIFFWYXJpYW50IGF0IHBvc2l0aW9uIEBwIGkgb3IgYW4gZW1wdHkgUVZh cmlhbnQKICAqLwotCVFWYXJpYW50IE1lc3NhZ2U6OmF0KCBpbnQgaSApCi0JewotCQlpdGVy YXRvciBpdHIoIGQtPm1zZyApOwotCi0JCXdoaWxlICggaS0tICkKLQkJewotCQkJaWYgKCBp dHIgPT0gZW5kKCAgKSApCi0JCQkJcmV0dXJuIFFWYXJpYW50KCAgKTsJLy9ub3RoaW5nIHRo ZXJlCi0JCQkrK2l0cjsKLQkJfQotCQlyZXR1cm4gKml0cjsKLQl9CitRVmFyaWFudAorTWVz c2FnZTo6YXQoIGludCBpICkKK3sKKyAgaXRlcmF0b3IgaXRyKCBkLT5tc2cgKTsKKworICB3 aGlsZSAoIGktLSApIHsKKyAgICBpZiAoIGl0ciA9PSBlbmQoKSApCisgICAgICByZXR1cm4g UVZhcmlhbnQoKTsvL25vdGhpbmcgdGhlcmUKKyAgICArK2l0cjsKKyAgfQorICByZXR1cm4g Kml0cjsKK30KIAogLyoqCiAgKiBUaGUgdW5kZXJseWluZyBEQnVzTWVzc2FnZSBvZiB0aGlz IGNsYXNzLgogICogQHJldHVybiBEQnVzTWVzc2FnZSBwb2ludGVyLgogICovCi0JREJ1c01l c3NhZ2UgKk1lc3NhZ2U6Om1lc3NhZ2UoICApIGNvbnN0Ci0JewotCQlyZXR1cm4gZC0+bXNn OwotCX0KLQotCU1lc3NhZ2UgJiBNZXNzYWdlOjpvcGVyYXRvcjw8KCBib29sIGIgKQotCXsK LSNpZmRlZiBPTERfREJVUwotCQlkYnVzX21lc3NhZ2VfYXBwZW5kX2FyZ3MoIGQtPm1zZywg REJVU19UWVBFX0JPT0xFQU4sIGIsCi0jZWxzZQotCQljb25zdCBkYnVzX2Jvb2xfdCByaWdo dF9zaXplX2Jvb2wgPSBiOwotCQlkYnVzX21lc3NhZ2VfYXBwZW5kX2FyZ3MoIGQtPm1zZywg REJVU19UWVBFX0JPT0xFQU4sICZyaWdodF9zaXplX2Jvb2wsCi0jZW5kaWYKLQkJCQkJCQkJ ICBEQlVTX1RZUEVfSU5WQUxJRCApOwotCQlyZXR1cm4gKnRoaXM7Ci0JfQotCi0jaWZkZWYg T0xEX0RCVVMKLSNkZWZpbmUgQVBFUiAKLSNlbHNlCi0jZGVmaW5lIEFQRVIgJgotI2VuZGlm CitEQnVzTWVzc2FnZSoKK01lc3NhZ2U6Om1lc3NhZ2UoKSBjb25zdAoreworICByZXR1cm4g ZC0+bXNnOworfQogCi0JTWVzc2FnZSAmIE1lc3NhZ2U6Om9wZXJhdG9yPDwoIFFfSU5UOCBi eXRlICkKLQl7Ci0JCWRidXNfbWVzc2FnZV9hcHBlbmRfYXJncyggZC0+bXNnLCBEQlVTX1RZ UEVfQllURSwgQVBFUiBieXRlLAotCQkJCQkJCQkgIERCVVNfVFlQRV9JTlZBTElEICk7Ci0J CXJldHVybiAqdGhpczsKLQl9Ci0KLQlNZXNzYWdlICYgTWVzc2FnZTo6b3BlcmF0b3I8PCgg UV9JTlQzMiBudW0gKQotCXsKLQkJZGJ1c19tZXNzYWdlX2FwcGVuZF9hcmdzKCBkLT5tc2cs IERCVVNfVFlQRV9JTlQzMiwgQVBFUiBudW0sCi0JCQkJCQkJCSAgREJVU19UWVBFX0lOVkFM SUQgKTsKLQkJcmV0dXJuICp0aGlzOwotCX0KLQotCU1lc3NhZ2UgJiBNZXNzYWdlOjpvcGVy YXRvcjw8KCBRX1VJTlQzMiBudW0gKQotCXsKLQkJZGJ1c19tZXNzYWdlX2FwcGVuZF9hcmdz KCBkLT5tc2csIERCVVNfVFlQRV9VSU5UMzIsIEFQRVIgbnVtLAotCQkJCQkJCQkgIERCVVNf VFlQRV9JTlZBTElEICk7Ci0JCXJldHVybiAqdGhpczsKLQl9Ci0KLQlNZXNzYWdlICYgTWVz c2FnZTo6b3BlcmF0b3I8PCggUV9JTlQ2NCBudW0gKQotCXsKLQkJZGJ1c19tZXNzYWdlX2Fw cGVuZF9hcmdzKCBkLT5tc2csIERCVVNfVFlQRV9JTlQ2NCwgQVBFUiBudW0sCi0JCQkJCQkJ CSAgREJVU19UWVBFX0lOVkFMSUQgKTsKLQkJcmV0dXJuICp0aGlzOwotCX0KLQotCU1lc3Nh Z2UgJiBNZXNzYWdlOjpvcGVyYXRvcjw8KCBRX1VJTlQ2NCBudW0gKQotCXsKLQkJZGJ1c19t ZXNzYWdlX2FwcGVuZF9hcmdzKCBkLT5tc2csIERCVVNfVFlQRV9VSU5UNjQsIEFQRVIgbnVt LAotCQkJCQkJCQkgIERCVVNfVFlQRV9JTlZBTElEICk7Ci0JCXJldHVybiAqdGhpczsKLQl9 Ci0KLQlNZXNzYWdlICYgTWVzc2FnZTo6b3BlcmF0b3I8PCggZG91YmxlIG51bSApCi0Jewot CQlkYnVzX21lc3NhZ2VfYXBwZW5kX2FyZ3MoIGQtPm1zZywgREJVU19UWVBFX0RPVUJMRSwg QVBFUiBudW0sCi0JCQkJCQkJCSAgREJVU19UWVBFX0lOVkFMSUQgKTsKLQkJcmV0dXJuICp0 aGlzOwotCX0KLQotCU1lc3NhZ2UgJiBNZXNzYWdlOjpvcGVyYXRvcjw8KCBjb25zdCBRU3Ry aW5nICYgc3RyICkKLQl7Ci0jaWZkZWYgT0xEX0RCVVMKLQkJZGJ1c19tZXNzYWdlX2FwcGVu ZF9hcmdzKCBkLT5tc2csCi0JCQkJCQkJCSAgREJVU19UWVBFX1NUUklORywKLQkJCQkJCQkJ ICAoIGNvbnN0IGNoYXIgKiApICggc3RyLnV0ZjgoICApICksIDAgKTsKLSNlbHNlCi0JCWNv bnN0IGNoYXIgKnUgPSBzdHIudXRmOCgpOwotCQlkYnVzX21lc3NhZ2VfYXBwZW5kX2FyZ3Mo IGQtPm1zZywKLQkJCQkJCQkJICBEQlVTX1RZUEVfU1RSSU5HLAotCQkJCQkJCQkgIHUsIDAg KTsKLSNlbmRpZgotCQlyZXR1cm4gKnRoaXM7Ci0JfQorTWVzc2FnZSYgTWVzc2FnZTo6b3Bl cmF0b3I8PCggYm9vbCBiICkKK3sKKyAgY29uc3QgZGJ1c19ib29sX3QgcmlnaHRfc2l6ZV9i b29sID0gYjsKKyAgZGJ1c19tZXNzYWdlX2FwcGVuZF9hcmdzKCBkLT5tc2csIERCVVNfVFlQ RV9CT09MRUFOLCAmcmlnaHRfc2l6ZV9ib29sLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERCVVNfVFlQRV9JTlZBTElEICk7Cit9CisKK01lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJh dG9yPDwoIFFfSU5UOCBieXRlICkKK3sKKyAgZGJ1c19tZXNzYWdlX2FwcGVuZF9hcmdzKCBk LT5tc2csIERCVVNfVFlQRV9CWVRFLCAmYnl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEQlVTX1RZUEVfSU5WQUxJRCApOworfQorCitNZXNzYWdlJiBNZXNzYWdlOjpvcGVy YXRvcjw8KCBRX0lOVDMyIG51bSApCit7CisgIGRidXNfbWVzc2FnZV9hcHBlbmRfYXJncygg ZC0+bXNnLCBEQlVTX1RZUEVfSU5UMzIsICZudW0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgREJVU19UWVBFX0lOVkFMSUQgKTsKK30KKworTWVzc2FnZSYgTWVzc2FnZTo6b3Bl cmF0b3I8PCggUV9VSU5UMzIgbnVtICkKK3sKKyAgZGJ1c19tZXNzYWdlX2FwcGVuZF9hcmdz KCBkLT5tc2csIERCVVNfVFlQRV9VSU5UMzIsICZudW0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgREJVU19UWVBFX0lOVkFMSUQgKTsKK30KKworTWVzc2FnZSYgTWVzc2FnZTo6 b3BlcmF0b3I8PCggUV9JTlQ2NCBudW0gKQoreworICBkYnVzX21lc3NhZ2VfYXBwZW5kX2Fy Z3MoIGQtPm1zZywgREJVU19UWVBFX0lOVDY0LCAmbnVtLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERCVVNfVFlQRV9JTlZBTElEICk7Cit9CisKK01lc3NhZ2UmIE1lc3NhZ2U6 Om9wZXJhdG9yPDwoIFFfVUlOVDY0IG51bSApCit7CisgIGRidXNfbWVzc2FnZV9hcHBlbmRf YXJncyggZC0+bXNnLCBEQlVTX1RZUEVfVUlOVDY0LCAmbnVtLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERCVVNfVFlQRV9JTlZBTElEICk7Cit9CiAKLQlNZXNzYWdlICYgTWVz c2FnZTo6b3BlcmF0b3I8PCggY29uc3QgUVZhcmlhbnQgJiBjdXN0b20gKQotCXsKLQkJLy9G SVhNRTogaW1lcGxlbWVudAotCQlyZXR1cm4gKnRoaXM7Ci0JfQorTWVzc2FnZSYgTWVzc2Fn ZTo6b3BlcmF0b3I8PCggZG91YmxlIG51bSApCit7CisgIGRidXNfbWVzc2FnZV9hcHBlbmRf YXJncyggZC0+bXNnLCBEQlVTX1RZUEVfRE9VQkxFLCAmbnVtLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERCVVNfVFlQRV9JTlZBTElEICk7Cit9CiAKK01lc3NhZ2UmIE1lc3Nh Z2U6Om9wZXJhdG9yPDwoIGNvbnN0IFFTdHJpbmcmIHN0ciApCit7CisgIFFCeXRlQXJyYXkg YmEgPSBzdHIudXRmOCgpOworICBjb25zdCBjaGFyICogdSA9IGJhLmRhdGEoKTsKKyAgZGJ1 c19tZXNzYWdlX2FwcGVuZF9hcmdzKCBkLT5tc2csIERCVVNfVFlQRV9TVFJJTkcsICZ1LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCVVNfVFlQRV9JTlZBTElEICk7CiB9CiAK K01lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yPDwoIGNvbnN0IFFWYXJpYW50JiBjdXN0b20g KQoreworICAvL0ZJWE1FOiBpbWVwbGVtZW50Cit9CisKK30KZGlmZiAtTmF1ciBrZGVleHRy YWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1 cy9tZXNzYWdlLmgga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODctZml4ZWQva29wZXRlX3Nr eXBlL3NyYy9saWJza3lwZS9za3lwZWRidXMvbWVzc2FnZS5oCi0tLSBrZGVleHRyYWdlYXIt YWRkb25zLTY0MTY4Ny9rb3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9tZXNz YWdlLmgJMjAwNS0xMC0yNyAwMjozMTozNy4wMDAwMDAwMDAgKzAyMDAKKysrIGtkZWV4dHJh Z2Vhci1hZGRvbnMtNjQxNjg3LWZpeGVkL2tvcGV0ZV9za3lwZS9zcmMvbGlic2t5cGUvc2t5 cGVkYnVzL21lc3NhZ2UuaAkyMDA4LTA4LTMwIDE0OjU3OjI1LjAwMDAwMDAwMCArMDIwMApA QCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgPHFzdHJpbmcuaD4KICNpbmNsdWRlIDxxc3Ry aW5nbGlzdC5oPgogCi0jaW5jbHVkZSA8ZGJ1cy9kYnVzLmg+CisjaW5jbHVkZSAiZGJ1cy9k YnVzLmgiCiAKIG5hbWVzcGFjZSBEQnVzUXQgewogCkBAIC05MCwxMSArOTAsMTUgQEAKIAog ICAgIGJvb2wgICAgc2V0U2VuZGVyKCBjb25zdCBRU3RyaW5nJiBzZW5kZXIgKTsKICAgICBR U3RyaW5nICAgIHNlbmRlcigpIGNvbnN0OwotCQotCXZvaWQgc2V0QXV0b0FjdGl2YXRpb24o Ym9vbCBhYSk7Ci0JYm9vbCBhdXRvQWN0aWNhdGlvbigpOwotCQotCWJvb2wgZXhwZWN0UmVw bHkoKSBjb25zdDsKKworLyoqIEFkZGVkIGZvciBza3lwZWNvbm5lY3Rpb24uY3BwICovCisg ICAgdm9pZCBzZXRBdXRvQWN0aXZhdGlvbihib29sIGFhKTsKKworLyoqIEFkZGVkIGZvciBz a3lwZWNvbm5lY3Rpb24uY3BwICovCisgICAgYm9vbCBhdXRvQWN0aWNhdGlvbigpOworCisv KiogQWRkZWQgZm9yIHNreXBlY29ubmVjdGlvbi5jcHAgKi8KKyAgICBib29sIGV4cGVjdFJl cGx5KCkgY29uc3Q7CiAKICAgICBRU3RyaW5nIHNpZ25hdHVyZSgpIGNvbnN0OwogCmRpZmYg LU5hdXIga2RlZXh0cmFnZWFyLWFkZG9ucy02NDE2ODcva29wZXRlX3NreXBlL3NyYy9saWJz a3lwZS9za3lwZWRidXMvc2t5cGVjb25uZWN0aW9uLmNwcCBrZGVleHRyYWdlYXItYWRkb25z LTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9za3lw ZWNvbm5lY3Rpb24uY3BwCi0tLSBrZGVleHRyYWdlYXItYWRkb25zLTY0MTY4Ny9rb3BldGVf c2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9za3lwZWNvbm5lY3Rpb24uY3BwCTIwMDYt MTAtMDUgMDY6MzU6MDMuMDAwMDAwMDAwICswMjAwCisrKyBrZGVleHRyYWdlYXItYWRkb25z LTY0MTY4Ny1maXhlZC9rb3BldGVfc2t5cGUvc3JjL2xpYnNreXBlL3NreXBlZGJ1cy9za3lw ZWNvbm5lY3Rpb24uY3BwCTIwMDgtMDgtMzAgMTU6MTQ6NDcuMDAwMDAwMDAwICswMjAwCkBA IC03Niw3ICs3NiwxMSBAQAogCQlkLT5zdGFydFRpbWVyID0gMEw7CiAJfQogCi0JREJ1c1F0 OjpNZXNzYWdlIHBpbmcoImNvbS5Ta3lwZS5BUEkiLCAiL2NvbS9Ta3lwZSIsICJjb20uU2t5 cGUuQVBJIiwgIlBpbmciKTsvL2NyZWF0ZSBhIHBpbmcgbWVzc2FnZQorLy8JREJ1c1F0OjpN ZXNzYWdlIHBpbmcoImNvbS5Ta3lwZS5BUEkiLCAiL2NvbS9Ta3lwZSIsICJjb20uU2t5cGUu QVBJIiwgIlBpbmciKTsvL2NyZWF0ZSBhIHBpbmcgbWVzc2FnZQorCisJREJ1c1F0OjpNZXNz YWdlIHBpbmcoImNvbS5Ta3lwZS5BUEkiLCAiL2NvbS9Ta3lwZSIsICJjb20uU2t5cGUuQVBJ IiwgIkludm9rZSIpOworCXBpbmcgPDwgUVN0cmluZygiUGluZyIpOworCiAJcGluZy5zZXRB dXRvQWN0aXZhdGlvbih0cnVlKTsKIAlEQnVzUXQ6Ok1lc3NhZ2UgcmVwbHkgPSBkLT5jb25u LT5zZW5kV2l0aFJlcGx5QW5kQmxvY2socGluZyk7Ly9zZW5kIGl0IHRoZXJlCiAKQEAgLTE5 NCw4ICsxOTgsMTIgQEAKIAljb25uZWN0KGQtPmNvbm4sIFNJR05BTChtZXNzYWdlQXJyaXZl ZChjb25zdCBEQnVzUXQ6Ok1lc3NhZ2UmKSksIHRoaXMsIFNMT1QoZ290TWVzc2FnZShjb25z dCBEQnVzUXQ6Ok1lc3NhZ2UgJikpKTsKIAogCXsKLQkJREJ1c1F0OjpNZXNzYWdlIG0oIm9y Zy5mcmVlZGVza3RvcC5EQnVzIiwgIi9vcmcvZnJlZWRlc2t0b3AvREJ1cyIsICJvcmcuZnJl ZWRlc2t0b3AuREJ1cyIsICJTZXJ2aWNlRXhpc3RzIik7Ci0JCW0gPDwgUVN0cmluZygiY29t LlNreXBlLkFQSSIpOworLyoJCURCdXNRdDo6TWVzc2FnZSBtKCJvcmcuZnJlZWRlc2t0b3Au REJ1cyIsICIvb3JnL2ZyZWVkZXNrdG9wL0RCdXMiLCAib3JnLmZyZWVkZXNrdG9wLkRCdXMi LCAiU2VydmljZUV4aXN0cyIpOworCQltIDw8IFFTdHJpbmcoImNvbS5Ta3lwZS5BUEkiKTsg Ki8KKworCQlEQnVzUXQ6Ok1lc3NhZ2UgbSgiY29tLlNreXBlLkFQSSIsICIvY29tL1NreXBl IiwgImNvbS5Ta3lwZS5BUEkiLCAiSW52b2tlIik7CisJCW0gPDwgUVN0cmluZygiUGluZyIp OworCiAJCW0uc2V0QXV0b0FjdGl2YXRpb24odHJ1ZSk7CiAKIAkJREJ1c1F0OjpNZXNzYWdl IHJlcGx5ID0gZC0+Y29ubi0+c2VuZFdpdGhSZXBseUFuZEJsb2NrKG0pOwpAQCAtMzU2LDcg KzM2NCw3IEBACiB2b2lkIFNreXBlQ29ubmVjdGlvbjo6dHJ5Q29ubmVjdCgpIHsKIAlrZERl YnVnKDE0MzExKSA8PCBrX2Z1bmNpbmZvIDw8IGVuZGw7Ly9zb21lIGRlYnVnIGluZm8KIAot CXsKKwkvKnsKIAkJREJ1c1F0OjpNZXNzYWdlIG0oIm9yZy5mcmVlZGVza3RvcC5EQnVzIiwg Ii9vcmcvZnJlZWRlc2t0b3AvREJ1cyIsICJvcmcuZnJlZWRlc2t0b3AuREJ1cyIsICJTZXJ2 aWNlRXhpc3RzIik7CiAJCW0gPDwgUVN0cmluZygiY29tLlNreXBlLkFQSSIpOwogCQltLnNl dEF1dG9BY3RpdmF0aW9uKHRydWUpOwpAQCAtMzc2LDcgKzM4NCw3IEBACiAJCQl9CiAJCQly ZXR1cm47Ly9NYXliZSBuZXh0IHRpbWUKIAkJfQotCX0KKwl9Ki8KIAogCWQtPnN0YXJ0VGlt ZXItPnN0b3AoKTsKIAlkLT5zdGFydFRpbWVyLT5kZWxldGVMYXRlcigpOwoAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --------------040508070000010204050001-- --------------enig8424A2FD6D23CBA25857EAEF Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIx2Oti/DJPQPkQ1IRAsqfAKC8EB3V7EtWsDPNzXOzSbZdjLe9jwCaAnBd oYcY7bzkIaVEGqr7qV2lCJU= =tu2U -----END PGP SIGNATURE----- --------------enig8424A2FD6D23CBA25857EAEF-- --===============0910956805== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kopete-devel mailing list kopete-devel@kde.org https://mail.kde.org/mailman/listinfo/kopete-devel --===============0910956805==--