From: Gary R Hook Subject: Re: [PATCH v2] hwrng: Clean up RNG list when last hwrng is unregistered Date: Fri, 5 Jan 2018 11:28:23 -0600 Message-ID: References: <151336772989.60446.16322941485803241258.stgit@sosxen2.amd.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------1CD63BB4B19894F6A4E705DC" Cc: linux-crypto@vger.kernel.org, thomas.lendacky@amd.com, davem@davemloft.net, prasannatsmkumar@gmail.com, David Miller To: herbert@gondor.apana.org.au Return-path: Received: from mail-bn3nam01on0078.outbound.protection.outlook.com ([104.47.33.78]:42733 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751961AbeAER2e (ORCPT ); Fri, 5 Jan 2018 12:28:34 -0500 In-Reply-To: <151336772989.60446.16322941485803241258.stgit@sosxen2.amd.com> Content-Language: en-US Sender: linux-crypto-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------1CD63BB4B19894F6A4E705DC Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 12/15/2017 01:55 PM, Gary R Hook wrote: > Commit 142a27f0a731 added support for a "best" RNG, and in doing so > introduced a hang from rmmod/modprobe -r when the last RNG on the list > was unloaded. > > When the hwrng list is depleted, return the global variables to their > original state and decrement all references to the object. *ping* It may not have been obvious from the title but this fixes a bug which will impact the use of any HW RNG that is the only RNG registered. The breakage of rmmod/modprobe -r that this fix obviates suggests that it needs to make the 4.15 kernel, please. Just want to ensure this gets the proper attention. Thank you. > > Fixes: 142a27f0a731 ("hwrng: core - Reset user selected rng by writing "" to rng_current") > Signed-off-by: Gary R Hook > --- > > Changes since v1: fix misspelled word in subject > > drivers/char/hw_random/core.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c > index 657b8770b6b9..91bb98c42a1c 100644 > --- a/drivers/char/hw_random/core.c > +++ b/drivers/char/hw_random/core.c > @@ -306,6 +306,10 @@ static int enable_best_rng(void) > ret = ((new_rng == current_rng) ? 0 : set_current_rng(new_rng)); > if (!ret) > cur_rng_set_by_user = 0; > + } else { > + drop_current_rng(); > + cur_rng_set_by_user = 0; > + ret = 0; > } > > return ret; > --------------1CD63BB4B19894F6A4E705DC Content-Type: text/plain; charset=UTF-8; name="thunderbird.desktop" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="thunderbird.desktop" W0Rlc2t0b3AgRW50cnldCkVuY29kaW5nPVVURi04Ck5hbWU9VGh1bmRlcmJpcmQgTWFpbApO YW1lW2FzdF09VmVjZXJ1IGRlIGNvcnLDqXUgVGh1bmRlcmJpcmQKTmFtZVtjYV09Q2xpZW50 IGRlIGNvcnJldSBUaHVuZGVyYmlyZApOYW1lW2NzXT1Qb8WhdG92bsOtIGtsaWVudCBUaHVu ZGVyYmlyZApOYW1lW2RhXT1Nb3ppbGxhIFRodW5kZXJiaXJkIC0gZS1wb3N0L255aGVkc2dy dXBwZQpOYW1lW2RlXT1UaHVuZGVyYmlyZC1FLU1haWwgdW5kIC1OYWNocmljaHRlbgpOYW1l W2VsXT3Ol867zrXOus+Ez4HOv869zrnOus6uIM6xzrvOu863zrvOv86zz4HOsc+Gzq/OsSBU aHVuZGVyYmlyZApOYW1lW2VzXT1DbGllbnRlIGRlIGNvcnJlbyBUaHVuZGVyYmlyZApOYW1l W2ZpXT1UaHVuZGVyYmlyZC1zw6Roa8O2cG9zdGkKTmFtZVtmcl09TWVzc2FnZXJpZSBUaHVu ZGVyYmlyZApOYW1lW2dsXT1DbGllbnRlIGRlIGNvcnJlbyBUaHVuZGVyYmlyZApOYW1lW2hl XT1Nb3ppbGxhIFRodW5kZXJiaXJkINeT15XXkNe015wv15fXk9ep15XXqgpOYW1lW2hyXT1N b3ppbGxhIFRodW5kZXJiaXJkIGUtcG/FoXRhL25vdm9zdGkKTmFtZVtodV09VGh1bmRlcmJp cmQgbGV2ZWxlesWRa2xpZW5zCk5hbWVbaXRdPUVtYWlsIE1vemlsbGEgVGh1bmRlcmJpcmQK TmFtZVtqYV09VGh1bmRlcmJpcmTpm7vlrZDjg6Hjg7zjg6vjgq/jg6njgqTjgqLjg7Pjg4gK TmFtZVtrb109TW96aWxsYSBUaHVuZGVyYmlyZApOYW1lW25sXT1Nb3ppbGxhIFRodW5kZXJi aXJkIGUtbWFpbC9uaWV1d3MKTmFtZVtwbF09S2xpZW50IHBvY3p0eSBUaHVuZGVyYmlyZApO YW1lW3B0X0JSXT1DbGllbnRlIGRlIEUtbWFpbCBUaHVuZGVyYmlyZApOYW1lW3J1XT3Qn9C+ 0YfRgtC+0LLRi9C5INC60LvQuNC10L3RgiBUaHVuZGVyYmlyZApOYW1lW3NrXT1UaHVuZGVy YmlyZCAtIHBvxaF0b3bDvSBrbGllbnQKTmFtZVtzdl09RS1wb3N0a2xpZW50ZW4gVGh1bmRl cmJpcmQKTmFtZVt1Z109TW96aWxsYSBUaHVuZGVyYmlyZCDYptuQ2YTYrtuV2Kov2K7blduL 25XYsQpOYW1lW3VrXT3Qn9C+0YjRgtC+0LLQsCDQv9GA0L7Qs9GA0LDQvNCwIFRodW5kZXJi aXJkCk5hbWVbdmldPVRyw6xuaCDEkWnhu4duIHRoxrAgTW96aWxsYSBUaHVuZGVyYmlyZApO YW1lW3poX0NOXT1UaHVuZGVyYmlyZCDpgq7ku7Yv5paw6Ze7Ck5hbWVbemhfVFddPVRodW5k ZXJiaXJkIOmDteS7tgpDb21tZW50PVNlbmQgYW5kIHJlY2VpdmUgbWFpbCB3aXRoIFRodW5k ZXJiaXJkCkNvbW1lbnRbYXN0XT1MbGVlciB5IGVzY3JpYmlyIGNvcnLDqXUgZWxlY3Ryw7Nu aWN1CkNvbW1lbnRbY2FdPUxsZWdpdSBpIGVzY3Jpdml1IGNvcnJldQpDb21tZW50W2NzXT3E jHRlbsOtIGEgcHNhbsOtIHBvxaF0eQpDb21tZW50W2RhXT1Ta3Jpdi9sw6ZzIGUtcG9zdC9u eWhlZHNncnVwcGUgbWVkIE1vemlsbGEgVGh1bmRlcmJpcmQKQ29tbWVudFtkZV09RS1NYWls cyB1bmQgTmFjaHJpY2h0ZW4gbWl0IFRodW5kZXJiaXJkIGxlc2VuIHVuZCBzY2hyZWliZW4K Q29tbWVudFtlbF09zpTOuc6xzrLOrM+Dz4TOtSDOus6xzrkgzrPPgc6sz4jPhM61IM6zz4HO rM68zrzOsc+EzrEgzrzOtSDPhM6/IE1vemlsbGEgVGh1bmRlcmJpcmQKQ29tbWVudFtlc109 TGVhIHkgZXNjcmliYSBjb3JyZW9zIHkgbm90aWNpYXMgY29uIFRodW5kZXJiaXJkCkNvbW1l bnRbZmldPUx1ZSBqYSBraXJqb2l0YSBzw6Roa8O2cG9zdGVqYQpDb21tZW50W2ZyXT1MaXJl IGV0IMOpY3JpcmUgZGVzIGNvdXJyaWVscwpDb21tZW50W2dsXT1MZWEgZSBlc2NyaWJhIGNv cnJlbyBlbGVjdHLDs25pY28KQ29tbWVudFtoZV0916fXqNeZ15DXlC/Xm9eq15nXkdeUINep 15wg15PXldeQ17TXnC/Xl9eT16nXldeqINeR15DXntem16LXldeqIE1vemlsbGEgVGh1bmRl cmJpcmQKQ29tbWVudFtocl09xIxpdGFqdGUvxaFhbGppdGUgZS1wb8WhdHUgcyBUaHVuZGVy YmlyZApDb21tZW50W2h1XT1MZXZlbGVrIMOtcsOhc2Egw6lzIG9sdmFzw6FzYSBhIFRodW5k ZXJiaXJkZGVsCkNvbW1lbnRbaXRdPVBlciBsZWdnZXJlIGUgc2NyaXZlcmUgZW1haWwKQ29t bWVudFtqYV0944Oh44O844Or44Gu6Kqt44G/5pu444GNCkNvbW1lbnRba29dPU1vemlsbGEg VGh1bmRlcmJpcmQg66mU7J28L+uJtOyKpCDsnb3quLAg67CPIOyTsOq4sCDtgbTrnbzsnbTs lrjtirgKQ29tbWVudFtubF09RS1tYWlsL25pZXV3cyBsZXplbiBlbiBzY2hyaWp2ZW4gbWV0 IE1vemlsbGEgVGh1bmRlcmJpcmQKQ29tbWVudFtwbF09Q3p5dGFuaWUgaSB3eXN5xYJhbmll IGUtbWFpbGkKQ29tbWVudFtwdF9CUl09TGVpYSBlIGVzY3JldmEgc3VhcyBtZW5zYWdlbnMK Q29tbWVudFtydV090KfQuNGC0LDQudGC0LUg0Lgg0L/QuNGI0LjRgtC1INC/0LjRgdGM0LzQ sApDb21tZW50W3NrXT3EjMOtdGFqdGUgYSBww63FoXRlIHBvxaF0dSBwb21vY291IHByb2dy YW11IFRodW5kZXJiaXJkCkNvbW1lbnRbc3ZdPUzDpHMgb2NoIHNrcml2IGUtcG9zdApDb21t ZW50W3VnXT3YptuQ2YTYrtuV2Kog24vblSDYrtuV24vbldix2YTbldix2YbZiSBNb3ppbGxh IFRodW5kZXJiaXJkINiv2Kcg2YPbhtix24jYtCDbi9uVINmK25DYstmJ2LQKQ29tbWVudFt1 a1090KfQuNGC0LDQvdC90Y8g0YLQsCDQvdCw0L/QuNGB0LDQvdC90Y8g0LvQuNGB0YLRltCy CkNvbW1lbnRbdmldPcSQ4buNYyB2w6Agc2/huqFuIHRoxrAgxJFp4buHbiB04butCkNvbW1l bnRbemhfQ05dPemYheivu+mCruS7tuaIluaWsOmXuwpDb21tZW50W3poX1RXXT3ku6UgTW96 aWxsYSBUaHVuZGVyYmlyZCDoroDlr6vpg7Xku7bmiJbmlrDogZ4KR2VuZXJpY05hbWU9TWFp bCBDbGllbnQKR2VuZXJpY05hbWVbYXN0XT1DbGllbnQgZGUgY29ycmV1CkdlbmVyaWNOYW1l W2NhXT1DbGllbnQgZGUgY29ycmV1CkdlbmVyaWNOYW1lW2NzXT1Qb8WhdG92bsOtIGtsaWVu dApHZW5lcmljTmFtZVtkYV09RS1wb3N0a2xpZW50CkdlbmVyaWNOYW1lW2RlXT1FLU1haWwt QW53ZW5kdW5nCkdlbmVyaWNOYW1lW2VsXT3Om86/zrPOuc+DzrzOuc66z4wgzrHOu867zrfO u86/zrPPgc6xz4bOr86xz4IKR2VuZXJpY05hbWVbZXNdPUNsaWVudGUgZGUgY29ycmVvCkdl bmVyaWNOYW1lW2ZpXT1Tw6Roa8O2cG9zdGlvaGplbG1hCkdlbmVyaWNOYW1lW2ZyXT1DbGll bnQgZGUgbWVzc2FnZXJpZQpHZW5lcmljTmFtZVtnbF09Q2xpZW50ZSBkZSBjb3JyZW8gZWxl Y3Ryw7NuaWNvCkdlbmVyaWNOYW1lW2hlXT3XnNen15XXlyDXk9eV15DXtNecCkdlbmVyaWNO YW1lW2hyXT1LbGlqZW50IGUtcG/FoXRlCkdlbmVyaWNOYW1lW2h1XT1MZXZlbGV6xZFrbGll bnMKR2VuZXJpY05hbWVbaXRdPUNsaWVudCBlbWFpbApHZW5lcmljTmFtZVtqYV096Zu75a2Q 44Oh44O844Or44Kv44Op44Kk44Ki44Oz44OICkdlbmVyaWNOYW1lW2tvXT3rqZTsnbwg7YG0 65287J207Ja47Yq4CkdlbmVyaWNOYW1lW25sXT1FLW1haWxwcm9ncmFtbWEKR2VuZXJpY05h bWVbcHRfQlJdPUNsaWVudGUgZGUgRS1tYWlsCkdlbmVyaWNOYW1lW3J1XT3Qn9C+0YfRgtC+ 0LLRi9C5INC60LvQuNC10L3RggpHZW5lcmljTmFtZVtza109UG/FoXRvdsO9IGtsaWVudApH ZW5lcmljTmFtZVt1Z1092KbbkNmE2K7bldiqINiv25DYqtin2YTZiQpHZW5lcmljTmFtZVt1 a1090J/QvtGI0YLQvtCy0LAg0L/RgNC+0LPRgNCw0LzQsApHZW5lcmljTmFtZVt2aV09UGjh uqduIG3hu4FtIGtow6FjaCBxdeG6o24gbMO9IHRoxrAgxJFp4buHbiB04butCkdlbmVyaWNO YW1lW3poX0NOXT3pgq7ku7bmlrDpl7vlrqLmiLfnq68KR2VuZXJpY05hbWVbemhfVFddPemD teS7tueUqOaItuerrwpLZXl3b3Jkcz1FbWFpbDtFLW1haWw7TmV3c2dyb3VwO0ZlZWQ7UlNT CktleXdvcmRzW2FzdF09Q29ycsOpdTtDb3Jyw6l1LWU7Tm90aWNpZXM7RGlzY3VzaW9uZXM7 TWVuc2F4ZXM7Q2FuYWxlcztSU1MKS2V5d29yZHNbY2FdPUNvcnJldTtFbWFpbDtFLW1haWw7 TWFpbGluZztMbGlzdGVzO05vdMOtY2llcztSU1MKS2V5d29yZHNbY3NdPUVtYWlsO0UtbWFp bDtQb8WhdGE7RWxla3Ryb25pY2vDoSBwb8WhdGE7RGlza3VzbsOtIHNrdXBpbnk7xIx0ZcSN a2E7UlNTCktleXdvcmRzW2RhXT1FbWFpbDtFLW1haWw7RXBvc3Q7RS1wb3N0O0UtYnJldjtO ZXdzZ3JvdXA7TnloZWRzZ3J1cHBlO055aGVkc2tpbGRlO1VzZW5ldDtGZWVkO1JTUwpLZXl3 b3Jkc1tkZV09TWFpbDtFLU1haWw7TmV3c2dyb3VwO05hY2hyaWNodGVuO0ZlZWQ7UlNTO1Bv c3Q7TmV3cztVc2VuZXQ7b25saW5lO2xlc2VuO3NjaHJlaWJlbgpLZXl3b3Jkc1tlbF09RW1h aWw7RS1tYWlsO05ld3Nncm91cDtGZWVkO1JTUzvOt868zrHOuc67O86RzrvOu863zrvOv86z z4HOsc+Gzq/OsTvOoc6/zq47zqHOo86jO86jz4XOts63z4TOrs+DzrXOuc+CO86Tz4HOrM68 zrzOsc+EzrEKS2V5d29yZHNbZXNdPUVtYWlsO0NvcnJlbyBlbGVjdHLDs25pY287Tm90aWNp YXM7RGlzY3VzaW9uZXM7TWVuc2FqZXM7Q2FuYWxlcztSU1MKS2V5d29yZHNbZmldPU1haWw7 RS1NYWlsO0VtYWlsO05ld3Nncm91cDtGZWVkO1JTUztwb3N0aTtzw6Roa8O2cG9zdGk7bWFp bGk7bWVpbGk7VXNlbmV0O3V1dGlzcnlobcOkdDtzecO2dGUKS2V5d29yZHNbZnJdPU1haWxz O01lbHM7RS1NYWlscztFbWFpbHM7Q291cnJpZWxzO0NvdXJyaWVycztOZXdzZ3JvdXA7RmVl ZDtSU1M7UG9zdGVyO1RodW5kZXJiaXJkO0xpcmU7w4ljcmlyZQpLZXl3b3Jkc1toZV0915PX ldeQItecO9eT15XXkNe015w7157XmdeZ15w715DXmS3XnteZ15nXnDvXkNeZ157XmdeZ15w7 15TXldeT16LXldeqO9ee15XXlteZ15zXlDvXqteQ16DXk9eo15HXmdeo15M716rXs9eQ16DX k9eo15HXmdeo15M716on15DXoNeT16jXkdeZ16jXkzvXqtez15DXoNeT16jXkdeo15M716on 15DXoNeT16jXkdeo15M715PXldeQ15w7CktleXdvcmRzW2hyXT1lbWFpbDtlLW1haWw7ZS1w b8WhdGE7cG/FoXRhO1JTUwpLZXl3b3Jkc1todV09RW1haWw7RS1tYWlsO0xldsOpbDtMZXZl bGV6w6lzO0jDrXJjc29wb3J0O0ZlZWQ7SMOtcmZvcnLDoXM7UlNTCktleXdvcmRzW2l0XT1F bWFpbDtNYWlsO1Bvc3RhO05ld3Nncm91cDtGZWVkO1JTUwpLZXl3b3Jkc1tpc109dMO2bHZ1 cMOzc3R1cjtyYWZww7NzdHVyO2Zyw6l0dGlyO2Zyw6l0dGFow7NwYXI7c2FtdMO2bDtza2ls YWJvw7A7ZnLDqXR0YXN0cmF1bWFyO1JTUwpLZXl3b3Jkc1tqYV09ReODoeODvOODqzvjgqTj g7zjg6Hjg7zjg6s7bWFpbDtlLW1haWw7ZW1haWw744Oh44O844OrO+mbu+WtkOODoeODvOOD qzvjg4vjg6Xjg7zjgrnjgrDjg6vjg7zjg5c744ON44OD44OI44OL44Ol44O844K5O1JTUzvj g5XjgqPjg7zjg4njg6rjg7zjg4Djg7w75pu444GPO+iqreOCgDtNb3ppbGxhCktleXdvcmRz W25sXT1FbWFpbDtFLW1haWw7TmV3c2dyb3VwO0ZlZWQ7UlNTO05pZXV3c2dyb2VwO1Bvc3QK S2V5d29yZHNbcnVdPUVtYWlsO0UtbWFpbDtOZXdzZ3JvdXA7RmVlZDtSU1M70L/QvtGH0YLQ sDvQv9C40YHRjNC80LA70L3QvtCy0L7RgdGC0Lg70YTQuNC00YsKS2V5d29yZHNbc2tdPUVt YWlsO0UtbWFpbDtFbGVrdHJvbmlja8OhIHBvxaF0YTtEaXNrdXNuw6kgc2t1cGlueTvEjMOt dGHEjWthIGthbsOhbG92O1JTUwpLZXl3b3Jkc1t1a109RW1haWw7RS1tYWlsO05ld3Nncm91 cDtGZWVkO1JTUzvQv9C+0YjRgtCwO9C90L7QstC40L3QuDvQv9C+0LTQsNGH0ZY70YHRgtGA 0ZbRh9C60LAKS2V5d29yZHNbdmldPU1haWw7RS1NYWlsO0VtYWlsO05ld3Nncm91cDtGZWVk O1JTUztUaMawIMSRaeG7h24gdOG7rTtH4butaSB0aMawCktleXdvcmRzW3poX0NOXT1NYWls O0UtTWFpbDtFbWFpbDtOZXdzZ3JvdXA7RmVlZDtSU1M755S15a2QO+mCruS7tjvmlrDpl7s7 VGh1bmRlcmJpcmQ7dGI76Zu36bifO+eUtemCrjvpgq7nrrE76ZiF6K+75ZmoOwpFeGVjPXRo dW5kZXJiaXJkICV1ClRlcm1pbmFsPWZhbHNlClgtTXVsdGlwbGVBcmdzPWZhbHNlClR5cGU9 QXBwbGljYXRpb24KSWNvbj10aHVuZGVyYmlyZApDYXRlZ29yaWVzPUFwcGxpY2F0aW9uO05l dHdvcms7RW1haWw7Ck1pbWVUeXBlPXgtc2NoZW1lLWhhbmRsZXIvbWFpbHRvO2FwcGxpY2F0 aW9uL3gteHBpbnN0YWxsOwpTdGFydHVwTm90aWZ5PXRydWUKQWN0aW9ucz1Db21wb3NlO0Nv bnRhY3RzCgpbRGVza3RvcCBBY3Rpb24gQ29tcG9zZV0KTmFtZT1Db21wb3NlIE5ldyBNZXNz YWdlCk5hbWVbYWZdPVNrcnlmICduIG51d2UgYm9vZHNrYXAKTmFtZVthcl092K3YsdixINix 2LPYp9mE2Kkg2KzYr9mK2K/YqQpOYW1lW2FzdF09UmVkYWN0YXIgdW4gbWVuc2F4ZSBudWV2 dQpOYW1lW2JlXT3QndCw0L/RltGB0LDRhtGMINC70ZbRgdGCCk5hbWVbYmddPdCd0L7QstC+ INC/0LjRgdC80L4KTmFtZVtibl094Kao4Kak4KeB4KaoIOCmrOCmvuCmsOCnjeCmpOCmviDg prLgpr/gppbgp4HgpqgKTmFtZVticl09U2V2ZWwgdXIgZ2VtZW5uYWRlbm4gbmV2ZXoKTmFt ZVtic109TmFwacWhaSBub3Z1IHBvcnVrdQpOYW1lW2NhXT1SZWRhY3RhIHVuIG1pc3NhdGdl IG5vdQpOYW1lW2NzXT1OYXBzYXQgbm92b3UgenByw6F2dQpOYW1lW2N5XT1DeWZhbnNvZGRp IE5lZ2VzIE5ld3lkZApOYW1lW2RhXT1Ta3JpdiBlbiBueSBiZXNrZWQKTmFtZVtkZV09TmV1 ZSBOYWNocmljaHQgZXJzdGVsbGVuCk5hbWVbZWxdPc6jz43Ovc+EzrHOvs63IM69zq3Ov8+F IM68zrfOvc+NzrzOsc+Ezr/PggpOYW1lW2VvXT1SZWRha3RpIG5vdmFuIG1lc2HEnW9uCk5h bWVbZXNdPVJlZGFjdGFyIHVuIG1lbnNhamUgbnVldm8KTmFtZVtldF09S29vc3RhIHV1cyBz w7VudW0KTmFtZVtldV09TWV6dSBCZXJyaWEgSWRhdHppCk5hbWVbZmldPUx1byB1dXNpIHZp ZXN0aQpOYW1lW2ZyXT1Sw6lkaWdlciB1biBub3V2ZWF1IGNvdXJyaWVsCk5hbWVbZ2RdPUNv LWNodWlyIFRlYWNoZGFpcmVhY2hkIMOZcgpOYW1lW2dsXT1SZWRhY3RhciB1bmhhIG5vdmEg bWVuc2F4ZQpOYW1lW2hlXT3Xl9eZ15HXldeoINeU15XXk9ei15Qg15fXk9ep15QKTmFtZVto aV094KSo4KSv4KS+IOCkuOCkguCkpuClh+CktiDgpLLgpL/gpJbgpYfgpIIKTmFtZVtocl09 Tm92YSBwb3J1a2EKTmFtZVtodV09w5pqIMO8emVuZXQgw61yw6FzYQpOYW1lW2h5XT3VhtWh 1bTVodWvINWj1oDVpdWsCk5hbWVbaWRdPUJ1YXQgUGVzYW4gQmFydQpOYW1lW2lzXT1Ta3Jp ZmEgbsO9dHQgYnLDqWYKTmFtZVtpdF09Q29tcG9uaSBudW92byBtZXNzYWdnaW8KTmFtZVtq YV095paw44GX44GE44Oh44OD44K744O844K444Gu5L2c5oiQCk5hbWVba2tdPdCW0LDSo9Cw INGF0LDRgiDQttCw0LfRgwpOYW1lW2tuXT3gsrngs4rgsrgg4LK44LKC4LKm4LOH4LK24LK1 4LKo4LON4LKo4LOBIOCyuOCyguCyr+Czi+CynOCyv+CyuOCzgQpOYW1lW2tvXT3sg4gg66mU 7Iuc7KeAIOyTsOq4sApOYW1lW2t1XT1QZXlhbWVrZSBuw7sgYmlhZmlyw65uw6oKTmFtZVts dF09UmHFoXl0aSBuYXVqxIUgbGFpxaFrxIUKTmFtZVtsdl09U2FjZXLEk3QgamF1bnUgdsST c3R1bGkKTmFtZVtta1090KHQvtGB0YLQsNCy0Lgg0L3QvtCy0LAg0L/QvtGA0LDQutCwCk5h bWVbbWxdPeC0quC1geC0pOC0v+C0ryDgtLjgtKjgtY3gtKbgtYfgtLbgtIIg4LSw4LSa4LS/ 4LSV4LWN4LSV4LWB4LSVCk5hbWVbbXJdPeCkqOCkteClgOCkqCDgpLjgpILgpKbgpYfgpLYg 4KSy4KS/4KS54KS+LgpOYW1lW25iXT1Ta3JpdiBlbiBueSBtZWxkaW5nCk5hbWVbbmxdPU5p ZXV3IGJlcmljaHQgb3BzdGVsbGVuCk5hbWVbbm5dPVNrcml2IGVpIG55IG1lbGRpbmcKTmFt ZVtwbF09VXR3w7NyeiBub3fEhSB3aWFkb21vxZvEhwpOYW1lW3B0XT1DcmlhciBub3ZhIG1l bnNhZ2VtCk5hbWVbcHRfQlJdPUNvbXBvciBub3ZhIG1lbnNhZ2VtCk5hbWVbcm9dPUNvbXB1 bmUgdW4gbWVzYWogbm91Ck5hbWVbcnVdPdCd0LDQv9C40YHQsNGC0Ywg0L/QuNGB0YzQvNC+ Ck5hbWVbc2ldPeC2seC3gCDgtrTgtqvgt5Lgt4Dgt5Lgtqngtrrgtprgt4og4LaF4La74La5 4Lax4LeK4LaxCk5hbWVbc2tdPU5hcMOtc2HFpSBub3bDuiBzcHLDoXZ1Ck5hbWVbc2xdPVNl c3Rhdmkgbm92byBzcG9yb8SNaWxvCk5hbWVbc3FdPUtyaWpvIE1lc2F6aCB0w6sgUmkKTmFt ZVtzcl090KHQsNGB0YLQsNCy0Lgg0L3QvtCy0YMg0L/QvtGA0YPQutGDCk5hbWVbc3ZdPVNr cml2IG55dHQgbWVkZGVsYW5kZQpOYW1lW3RhXT3grqrgr4HgrqTgrr/grq8g4K6a4K+G4K6v 4K+N4K6k4K6/4K6v4K+IIOCuieCusOCvgeCuteCuvuCuleCvjeCuleCvgQpOYW1lW3RlXT3g sJXgsYrgsKTgsY3gsKQg4LC44LCC4LCm4LGH4LC24LC+4LCo4LGN4LCo4LC/IOCwsOCwmuCw v+CwguCwmuCxgQpOYW1lW3RoXT3guKrguKPguYnguLLguIfguILguYnguK3guITguKfguLLg uKHguYPguKvguKHguYgKTmFtZVt0cl09WWVuaSDEsGxldGkgT2x1xZ90dXIKTmFtZVt1a109 0J3QsNC/0LjRgdCw0YLQuCDQvdC+0LLQtSDQv9C+0LLRltC00L7QvNC70LXQvdC90Y8KTmFt ZVt6aF9DTl095pKw5YaZ5paw5raI5oGvCk5hbWVbemhfVFddPeaSsOWvq+aWsOmDteS7tgpF eGVjPXRodW5kZXJiaXJkIC1jb21wb3NlCk9ubHlTaG93SW49TWVzc2FnaW5nIE1lbnU7VW5p dHk7CgpbRGVza3RvcCBBY3Rpb24gQ29udGFjdHNdCk5hbWU9Q29udGFjdHMKTmFtZVthZl09 S29udGFrdGUKTmFtZVthcl092KfZhNmF2KrYsdin2LPZhNmK2YYKTmFtZVthc3RdPUNvbnRh dXRvcwpOYW1lW2JlXT3QmtCw0L3RgtCw0LrRgtGLCk5hbWVbYmddPdCa0L7QvdGC0LDQutGC 0LgKTmFtZVtibl094Kaq4Kaw4Ka/4Kaa4Ka/4Kak4Ka/IOCmuOCmruCnguCmuQpOYW1lW2Jy XT1EYXJlbXByZWRvw7kKTmFtZVtic109S29udGFrdGkKTmFtZVtjYV09Q29udGFjdGVzCk5h bWVbY3NdPUtvbnRha3R5Ck5hbWVbY3ldPUN5c3lsbHRpYWRhdQpOYW1lW2RhXT1Lb250YWt0 ZXIKTmFtZVtkZV09S29udGFrdGUKTmFtZVtlbF09zpXPgM6xz4bOrc+CCk5hbWVbZW9dPUtv bnRha3RvagpOYW1lW2VzXT1Db250YWN0b3MKTmFtZVtldF09S29udGFrdGlkCk5hbWVbZXVd PUtvbnRha3R1YWsKTmFtZVtmaV09WWh0ZXlzdGllZG90Ck5hbWVbZnJdPUNhcm5ldCBkJ2Fk cmVzc2VzCk5hbWVbZ2RdPUJ1bnRhbmFzYW4KTmFtZVtnbF09Q29udGFjdG9zCk5hbWVbaGVd PdeQ16DXqdeZINen16nXqApOYW1lW2hpXT3gpLjgpILgpKrgpLDgpY3gpJUKTmFtZVtocl09 S29udGFrdGkKTmFtZVtodV09TsOpdmplZ3llawpOYW1lW2h5XT3Uv9Wh1brVuNaA1aTVttWl 1oAKTmFtZVtpZF09S29udGFrCk5hbWVbaXNdPVRlbmdpbGnDsGlyCk5hbWVbaXRdPUNvbnRh dHRpCk5hbWVbamFdPemAo+e1oeWFiApOYW1lW2trXT3QkdCw0LnQu9Cw0L3Ri9GBINC20LDQ t9GD0LvQsNGA0YsKTmFtZVtrbl094LK44LKC4LKq4LKw4LON4LKV4LKX4LKz4LOBCk5hbWVb a29dPeyXsOudveyymApOYW1lW2t1XT1UZWtpbMOuCk5hbWVbbHRdPUtvbnRha3RhaQpOYW1l W2x2XT1Lb250YWt0aQpOYW1lW21rXT3QmtC+0L3RgtCw0LrRgtC4Ck5hbWVbbWxdPeC0teC0 v+C0suC0vuC0uOC0meC1jeC0meC0s+C1jeKAjQpOYW1lW21yXT3gpLjgpILgpKrgpLDgpY3g pJUKTmFtZVtuYl09S29udGFrdGVyCk5hbWVbbmxdPUNvbnRhY3RlbgpOYW1lW25uXT1Lb250 YWt0YXIKTmFtZVtwbF09S29udGFrdHkKTmFtZVtwdF09Q29udGFjdG9zCk5hbWVbcHRfQlJd PUNvbnRhdG9zCk5hbWVbcm9dPUNvbnRhY3RlCk5hbWVbcnVdPdCa0L7QvdGC0LDQutGC0YsK TmFtZVtzaV094LeD4La24Laz4Lat4LePCk5hbWVbc2tdPUtvbnRha3R5Ck5hbWVbc2xdPVN0 aWtpCk5hbWVbc3FdPUtvbnRha3RldApOYW1lW3NyXT3QmtC+0L3RgtCw0LrRgtC4Ck5hbWVb c3ZdPUtvbnRha3RlcgpOYW1lW3RhXT3grqTgr4rgrp/grrDgr43grqrgr4HgrpXgrrPgr40K TmFtZVt0ZV094LCq4LCw4LC/4LCa4LCv4LC+4LCy4LGBCk5hbWVbdGhdPeC4o+C4suC4ouC4 iuC4t+C5iOC4reC4leC4tOC4lOC4leC5iOC4rQpOYW1lW3RyXT1LacWfaWxlcgpOYW1lW3Vr XT3QmtC+0L3RgtCw0LrRgtC4Ck5hbWVbemhfQ05dPeiBlOezu+S6ugpOYW1lW3poX1RXXT3p gKPntaHkuroKRXhlYz10aHVuZGVyYmlyZCAtYWRkcmVzc2Jvb2sKT25seVNob3dJbj1NZXNz YWdpbmcgTWVudTtVbml0eTsK --------------1CD63BB4B19894F6A4E705DC--