From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============9061502990315854254==" MIME-Version: 1.0 From: Valentin Korenblit To: kbuild-all@lists.01.org Subject: Re: [mtd:nand/next 11/31] drivers/mtd/nand/raw/cadence-nand-controller.c:1893:4: error: implicit declaration of function 'ioread64_rep' is invalid in C99 Date: Wed, 21 Sep 2022 14:27:47 +0200 Message-ID: <7074197c-aa8d-f763-cb0f-03ea5335b923@sequans.com> In-Reply-To: List-Id: --===============9061502990315854254== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Miquel, I see that x86_64 doesn't support readsq/writesq because of CONFIG_GENERIC_IOMAP (I was building for arm64). However, __raw_readq/writeq are available and there are a few drivers using them. Do you want me to re-implement readsq and writesq in Cadence driver privately or do you suggest a different (cleaner) approach? Thanks in advance, Valentin On 9/21/22 10:45, Valentin Korenblit wrote: > Hi Miquel, > > I will take a look at it today. > > Best regards, > > Valentin > > On 9/21/22 10:40, Miquel Raynal wrote: >> Hi Valentin, >> >> lkp(a)intel.com wrote on Wed, 21 Sep 2022 06:31:23 +0800: >> >>> tree: = >>> https://secure-web.cisco.com/1Z7olKSJj_FWb335mmjHNiDM4FObh2m2Kr4CVmzRDX= 7-wZ9HzSUvxLN_OyF3NWS1vplF7quihKo97ocKqspSHS_xSUcBq7SoYyT4aiP0BVJtAGm55P1k9= Mssa77KKPNUbAMyq4MzD4d9367IHSlU-8_Yma1xswyK72pByqojTDRaGeSLMcd3Efp9JB-7etBN= OZ0Mq_7dqMyKuUwbZU8WIna-ZwHW_CCvS7DHXp86ZFUoRXPszt3szYeRa8qRCGcnf5H_LmZXUU4= 6OcwE1MO85qwzYn-0jrSBK0Z0LnL63DxMcgpLBkIUBtTgPtqFi4eHLWI6u2BTdadLQdfQrkT7Uc= rl1UbGhmfniZR7GvpQcpCslyPVbEPjQM94cygTmfnRfCQeEsIkB2SxIBR7D_XKq_8VDlmXBV1Pu= ielMjqML7CbtTiWUZ8UQBcaHprmlKDYh/https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2= Flinux%2Fkernel%2Fgit%2Fmtd%2Flinux.git = >>> nand/next >>> head:=C2=A0=C2=A0 63de24fccb6b831be1abfe07292449105b467731 >>> commit: 7e7dc04774b18c0e42ce74aa3357021cda979674 [11/31] mtd: = >>> rawnand: cadence: support 64-bit slave dma interface >>> config: x86_64-randconfig-a001 = >>> (https://secure-web.cisco.com/10lsHqk23p4vjII4hdwyDVKjI5rVkWwyx1jI7f1Qf= tDDRv-ChD7hGjvTtAOzKDcC5WNVJzgIOH_H5iX14jjNXRZmHnxAlNscjTbzSQ6XFgA__Gk-uZA2= 1dWuP-k-xSOQmagW6OnnsvlbNvaj4z3B3-K10Mio7ZhaHmKpvXkuFnTkopDEFB_18jYwKBzqFH4= HqK7OQs8z2ldAFAPyeS4pf2QB6gWtU7uw3_DM0Ffn22F7e6ErZ5TARWROXHEra3q8HTLL8YuuBt= g-o98Lt_uo-p0lp_B50lGPRb1aotz73TGtcMPqacct_gweoopRth138iqcqhoKVUtwDmvi0Cq7M= NEUW2I1SnlB7jl7mLNbp66sw2cCdqt_97tioK6I1NazsNUZ5gW4kuKFevcgnarV4Z8KOQtPXyyC= 6DReQJ9tBCH4yWC8IyYUQN0246z2s1lcb/https%3A%2F%2Fdownload.01.org%2F0day-ci%2= Farchive%2F20220921%2F202209210641.MziHAbW7-lkp%40intel.com%2Fconfig) >>> compiler: clang version 14.0.6 = >>> (https://secure-web.cisco.com/1hFQ6b9I5rEbgJTBrSNYQ96NB2HBZl-vFn04fAzzx= 9TgVr-ZI2Yh78eJSHuVIXXUt7Y0FAQd5Hc5WbfhA3fBv9CZgiR1tSFSEk-TlQ8fHqEzUsO6pKVx= Vbq9NwFv3zIICt7M0Kjt_xyFZFD_pLrl-IlgkdddvWWGkrs6AUXwLKqfCRKrb4d3tGsfDNMN5PT= j2SDjwnXBrFFC92LBxjNU1cK3VajqDxJ99oVgNDlhaJTlmsv48TcpOVugnYTf9qpQh2gxoQj6Rq= joY-a9YlMYKtGjubYGgVyv0t9begalDgEeHU-YYOgLRNChdYZn5_DcojgYxjgSVr65RzBDt782J= nk94SSMcI4RV9yETmRwpS6hyiQKXxW2iigxlisod4NqU34ctO3xUECSsxQEnHjkodp72aMWWF2I= EUpnnnZ9kQHHldB5_qQNZ0jGyM2N-Yrgm/https%3A%2F%2Fgithub.com%2Fllvm%2Fllvm-pr= oject = >>> f28c006a5895fc0e329fe15fead81e37457cb1d1) >>> reproduce (this is a W=3D1 build): >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 wget = >>> https://secure-web.cisco.com/1NixR8yM6cIQS7ncp2355n_85DjQ7PwQ8LJ4AtQRZ5= vVAKsZUe2UDZW75tWk6nSotBZh4xXA4HlaBWc_XXiD5WNwEPEG6RIaFDZw7vpNSEO5Ucrmnjqle= jH8aJ6qBsNLGSi-9NxzBboH3tX2PFjnd751CP7XZNayy-jQeaodwkRS3qWaGdwnQI75u6_E2T4z= hNUCwS5nxmh5GkTN7gk77lQoH89_EyptFbGvU1zk1cbCdMV_XS9aDfjH0SyloO_Je38ire_caQs= nZbRi5lGRjczbhbhvlbgnsH5jS4q8kNgxMQcaYXxr57u-YhtX9Fqr3vJinftsYTt00wtexc4kdx= 2nUDuY1F1NNU_wT0OiH0MxuuzvAmazz1tjgwExi9D_KnHDu4cXnbfOyS_aEr3FPZIUvgJKbeJyv= DpE6F1sRY4qrSO4dmuBRTQO3Ya4T-xTJ/https%3A%2F%2Fraw.githubusercontent.com%2F= intel%2Flkp-tests%2Fmaster%2Fsbin%2Fmake.cross = >>> -O ~/bin/make.cross >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 chmod +x ~/bin/make.cr= oss >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # = >>> https://secure-web.cisco.com/1GbV0WGD053fzgXwafNb9gIz6l_aVKdavZ9hBiGrxL= Q4FuFGlfprHSkexNTIiRSf7WMRS2n0YEMNksbrqzajQre4UdkaGPrh-mUGZDWPWTD5X90ypVAk7= Lt9t_5k2WBYPECGzW9U0HNMDgZqHuxMPZ1PnAguUNmw7TttND56Hvw6agQd0NzAboe1bcSg51IG= YxLZXqDb1SSd__2WCkrAb5kNEcxMS8nKNrB55ZD111-UV3kZkzvEweSsciS0LOTa-OqYDUEeA0y= 94DhSOmjGqZpZXIU1ZA4mZ0_6hSkdmc1DF1sPrB2QiQ_E63CY9C-908GCmIGmrBZivyuRuxsuR0= y9al38fKX8Zvmk9szy8afe36sGUpMoXijrPLUnPKmdV-2OCVj26sSaXKRtktrOsOI0b8esgEHuB= 1FxBHZjKxLCHONZecIdNO5B9mAUTu3UV/https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2= Flinux%2Fkernel%2Fgit%2Fmtd%2Flinux.git%2Fcommit%2F%3Fid%3D7e7dc04774b18c0e= 42ce74aa3357021cda979674 >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 git remote add mtd = >>> https://secure-web.cisco.com/1Z7olKSJj_FWb335mmjHNiDM4FObh2m2Kr4CVmzRDX= 7-wZ9HzSUvxLN_OyF3NWS1vplF7quihKo97ocKqspSHS_xSUcBq7SoYyT4aiP0BVJtAGm55P1k9= Mssa77KKPNUbAMyq4MzD4d9367IHSlU-8_Yma1xswyK72pByqojTDRaGeSLMcd3Efp9JB-7etBN= OZ0Mq_7dqMyKuUwbZU8WIna-ZwHW_CCvS7DHXp86ZFUoRXPszt3szYeRa8qRCGcnf5H_LmZXUU4= 6OcwE1MO85qwzYn-0jrSBK0Z0LnL63DxMcgpLBkIUBtTgPtqFi4eHLWI6u2BTdadLQdfQrkT7Uc= rl1UbGhmfniZR7GvpQcpCslyPVbEPjQM94cygTmfnRfCQeEsIkB2SxIBR7D_XKq_8VDlmXBV1Pu= ielMjqML7CbtTiWUZ8UQBcaHprmlKDYh/https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2= Flinux%2Fkernel%2Fgit%2Fmtd%2Flinux.git >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 git fetch --no-tags mt= d nand/next >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 git checkout 7e7dc0477= 4b18c0e42ce74aa3357021cda979674 >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # save the config file >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 mkdir build_dir && cp = config build_dir/.config >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 COMPILER_INSTALL_PATH= =3D$HOME/0day COMPILER=3Dclang make.cross = >>> W=3D1 O=3Dbuild_dir ARCH=3Dx86_64 SHELL=3D/bin/bash drivers/mtd/nand/ra= w/ >>> >>> If you fix the issue, kindly add following tag where applicable >>> | Reported-by: kernel test robot >>> >>> All errors (new ones prefixed by >>): >>> >>>>> drivers/mtd/nand/raw/cadence-nand-controller.c:1893:4: error: = >>>>> implicit declaration of function 'ioread64_rep' is invalid in C99 = >>>>> [-Werror,-Wimplicit-function-declaration] >>> ioread64_rep(cdns_ctrl->io.virt, buf, len_in_words); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 ^ >>>>> drivers/mtd/nand/raw/cadence-nand-controller.c:1962:4: error: = >>>>> implicit declaration of function 'iowrite64_rep' is invalid in C99 = >>>>> [-Werror,-Wimplicit-function-declaration] >>> iowrite64_rep(cdns_ctrl->io.virt, buf, len_in_words); >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 ^ >>> =C2=A0=C2=A0=C2=A0 2 errors generated. >> I've dropped your patch from nand/next, here you can check what's >> missing in the configuration, should not be too hard to solve. Once >> done, you can send a new version of the patch. >> >> Thanks, >> Miqu=C3=A8l >> -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may als= o be privileged. If you are not the intended recipient, please notify the s= ender immediately and do not disclose the contents to any other person, use= it for any purpose, or store or copy the information in any medium. Thank you. --===============9061502990315854254== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" PGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl bnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHBy ZT5IaSBNaXF1ZWwsCgpJIHNlZSB0aGF0IHg4Nl82NCBkb2Vzbid0IHN1cHBvcnQgcmVhZHNxL3dy aXRlc3EgYmVjYXVzZSBvZgpDT05GSUdfR0VORVJJQ19JT01BUCAoSSB3YXMgYnVpbGRpbmcgZm9y IGFybTY0KS4gSG93ZXZlciwgCl9fcmF3X3JlYWRxL3dyaXRlcSBhcmUgYXZhaWxhYmxlIGFuZCB0 aGVyZSBhcmUgYSBmZXcgZHJpdmVycwp1c2luZyB0aGVtLgoKRG8geW91IHdhbnQgbWUgdG8gcmUt aW1wbGVtZW50IHJlYWRzcSBhbmQgd3JpdGVzcSBpbiBDYWRlbmNlCmRyaXZlciBwcml2YXRlbHkg b3IgZG8geW91IHN1Z2dlc3QgYSBkaWZmZXJlbnQgKGNsZWFuZXIpIGFwcHJvYWNoPwoKVGhhbmtz IGluIGFkdmFuY2UsCgpWYWxlbnRpbgo8L3ByZT4KICAgIDxkaXYgY2xhc3M9Im1vei1jaXRlLXBy ZWZpeCI+T24gOS8yMS8yMiAxMDo0NSwgVmFsZW50aW4gS29yZW5ibGl0CiAgICAgIHdyb3RlOjxi cj4KICAgIDwvZGl2PgogICAgPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSIKICAgICAgY2l0ZT0ibWlk OmZmZGU0NGJjLWQ0YWUtNDA1Mi1jNjBjLTM1Yzg3NzVhNTEwMUBzZXF1YW5zLmNvbSI+SGkKICAg ICAgTWlxdWVsLAogICAgICA8YnI+CiAgICAgIDxicj4KICAgICAgSSB3aWxsIHRha2UgYSBsb29r IGF0IGl0IHRvZGF5LgogICAgICA8YnI+CiAgICAgIDxicj4KICAgICAgQmVzdCByZWdhcmRzLAog ICAgICA8YnI+CiAgICAgIDxicj4KICAgICAgVmFsZW50aW4KICAgICAgPGJyPgogICAgICA8YnI+ CiAgICAgIE9uIDkvMjEvMjIgMTA6NDAsIE1pcXVlbCBSYXluYWwgd3JvdGU6CiAgICAgIDxicj4K ICAgICAgPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+SGkgVmFsZW50aW4sCiAgICAgICAgPGJyPgog ICAgICAgIDxicj4KICAgICAgICA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBo cmVmPSJtYWlsdG86bGtwQGludGVsLmNvbSI+bGtwQGludGVsLmNvbTwvYT4gd3JvdGUgb24gV2Vk LCAyMSBTZXAgMjAyMiAwNjozMToyMyArMDgwMDoKICAgICAgICA8YnI+CiAgICAgICAgPGJyPgog ICAgICAgIDxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPnRyZWU6wqDCoAo8YSBjbGFzcz0ibW96LXR4 dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwczovL3NlY3VyZS13ZWIuY2lzY28uY29tLzFaN29s S1NKal9GV2IzMzVtbWpITmlETTRGT2JoMm0yS3I0Q1ZtelJEWDctd1o5SHpTVXZ4TE5fT3lGM05X UzF2cGxGN3F1aWhLbzk3b2NLcXNwU0hTX3hTVWNCcTdTb1l5VDRhaVAwQlZKdEFHbTU1UDFrOU1z c2E3N0tLUE5VYkFNeXE0TXpENGQ5MzY3SUhTbFUtOF9ZbWExeHN3eUs3MnBCeXFvalREUmFHZVNM TWNkM0VmcDlKQi03ZXRCTk9aME1xXzdkcU15S3VVd2JaVThXSW5hLVp3SFdfQ0N2UzdESFhwODZa RlVvUlhQc3p0M3N6WWVSYThxUkNHY25mNUhfTG1aWFVVNDZPY3dFMU1PODVxd3pZbi0wanJTQksw WjBMbkw2M0R4TWNncExCa0lVQnRUZ1B0cUZpNGVITFdJNnUyQlRkYWRMUWRmUXJrVDdVY3JsMVVi R2htZm5pWlI3R3ZwUWNwQ3NseVBWYkVQalFNOTRjeWdUbWZuUmZDUWVFc0lrQjJTeElCUjdEX1hL cV84VkRsbVhCVjFQdWllbE1qcU1MN0NidFRpV1VaOFVRQmNhSHBybWxLRFloL2h0dHBzJTNBJTJG JTJGZ2l0Lmtlcm5lbC5vcmclMkZwdWIlMkZzY20lMkZsaW51eCUyRmtlcm5lbCUyRmdpdCUyRm10 ZCUyRmxpbnV4LmdpdCI+aHR0cHM6Ly9zZWN1cmUtd2ViLmNpc2NvLmNvbS8xWjdvbEtTSmpfRldi MzM1bW1qSE5pRE00Rk9iaDJtMktyNENWbXpSRFg3LXdaOUh6U1V2eExOX095RjNOV1MxdnBsRjdx dWloS285N29jS3FzcFNIU194U1VjQnE3U29ZeVQ0YWlQMEJWSnRBR201NVAxazlNc3NhNzdLS1BO VWJBTXlxNE16RDRkOTM2N0lIU2xVLThfWW1hMXhzd3lLNzJwQnlxb2pURFJhR2VTTE1jZDNFZnA5 SkItN2V0Qk5PWjBNcV83ZHFNeUt1VXdiWlU4V0luYS1ad0hXX0NDdlM3REhYcDg2WkZVb1JYUHN6 dDNzelllUmE4cVJDR2NuZjVIX0xtWlhVVTQ2T2N3RTFNTzg1cXd6WW4tMGpyU0JLMFowTG5MNjNE eE1jZ3BMQmtJVUJ0VGdQdHFGaTRlSExXSTZ1MkJUZGFkTFFkZlFya1Q3VWNybDFVYkdobWZuaVpS N0d2cFFjcENzbHlQVmJFUGpRTTk0Y3lnVG1mblJmQ1FlRXNJa0IyU3hJQlI3RF9YS3FfOFZEbG1Y QlYxUHVpZWxNanFNTDdDYnRUaVdVWjhVUUJjYUhwcm1sS0RZaC9odHRwcyUzQSUyRiUyRmdpdC5r ZXJuZWwub3JnJTJGcHViJTJGc2NtJTJGbGludXglMkZrZXJuZWwlMkZnaXQlMkZtdGQlMkZsaW51 eC5naXQ8L2E+CiAgICAgICAgICBuYW5kL25leHQKICAgICAgICAgIDxicj4KICAgICAgICAgIGhl YWQ6wqDCoCA2M2RlMjRmY2NiNmI4MzFiZTFhYmZlMDcyOTI0NDkxMDViNDY3NzMxCiAgICAgICAg ICA8YnI+CiAgICAgICAgICBjb21taXQ6IDdlN2RjMDQ3NzRiMThjMGU0MmNlNzRhYTMzNTcwMjFj ZGE5Nzk2NzQgWzExLzMxXSBtdGQ6CiAgICAgICAgICByYXduYW5kOiBjYWRlbmNlOiBzdXBwb3J0 IDY0LWJpdCBzbGF2ZSBkbWEgaW50ZXJmYWNlCiAgICAgICAgICA8YnI+CiAgICAgICAgICBjb25m aWc6IHg4Nl82NC1yYW5kY29uZmlnLWEwMDEKKDxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRl eHQiIGhyZWY9Imh0dHBzOi8vc2VjdXJlLXdlYi5jaXNjby5jb20vMTBsc0hxazIzcDR2aklJNGhk d3lEVktqSTVyVmtXd3l4MWpJN2YxUWZ0RERSdi1DaEQ3aEdqdlR0QU96S0RjQzVXTlZKemdJT0hf SDVpWDE0ampOWFJabUhueEFsTnNjalRielNRNlhGZ0FfX0drLXVaQTIxZFd1UC1rLXhTT1FtYWdX Nk9ubnN2bGJOdmFqNHozQjMtSzEwTWlvN1poYUhtS3B2WGt1Rm5Ua29wREVGQl8xOGpZd0tCenFG SDRIcUs3T1FzOHoybGRBRkFQeWVTNHBmMlFCNmdXdFU3dXczX0RNMEZmbjIyRjdlNkVyWjVUQVJX Uk9YSEVyYTNxOEhUTEw4WXV1QnRnLW85OEx0X3VvLXAwbHBfQjUwbEdQUmIxYW90ejczVEd0Y01Q cWFjY3RfZ3dlb29wUnRoMTM4aXFjcWhvS1ZVdHdEbXZpMENxN01ORVVXMkkxU25sQjdqbDdtTE5i cDY2c3cyY0NkcXRfOTd0aW9LNkkxTmF6c05VWjVnVzRrdUtGZXZjZ25hclY0WjhLT1F0UFh5eUM2 RFJlUUo5dEJDSDR5V0M4SXlZVVFOMDI0NnoyczFsY2IvaHR0cHMlM0ElMkYlMkZkb3dubG9hZC4w MS5vcmclMkYwZGF5LWNpJTJGYXJjaGl2ZSUyRjIwMjIwOTIxJTJGMjAyMjA5MjEwNjQxLk16aUhB Ylc3LWxrcCU0MGludGVsLmNvbSUyRmNvbmZpZyI+aHR0cHM6Ly9zZWN1cmUtd2ViLmNpc2NvLmNv bS8xMGxzSHFrMjNwNHZqSUk0aGR3eURWS2pJNXJWa1d3eXgxakk3ZjFRZnRERFJ2LUNoRDdoR2p2 VHRBT3pLRGNDNVdOVkp6Z0lPSF9INWlYMTRqak5YUlptSG54QWxOc2NqVGJ6U1E2WEZnQV9fR2st dVpBMjFkV3VQLWsteFNPUW1hZ1c2T25uc3ZsYk52YWo0ejNCMy1LMTBNaW83WmhhSG1LcHZYa3VG blRrb3BERUZCXzE4all3S0J6cUZINEhxSzdPUXM4ejJsZEFGQVB5ZVM0cGYyUUI2Z1d0VTd1dzNf RE0wRmZuMjJGN2U2RXJaNVRBUldST1hIRXJhM3E4SFRMTDhZdXVCdGctbzk4THRfdW8tcDBscF9C NTBsR1BSYjFhb3R6NzNUR3RjTVBxYWNjdF9nd2Vvb3BSdGgxMzhpcWNxaG9LVlV0d0RtdmkwQ3E3 TU5FVVcySTFTbmxCN2psN21MTmJwNjZzdzJjQ2RxdF85N3Rpb0s2STFOYXpzTlVaNWdXNGt1S0Zl dmNnbmFyVjRaOEtPUXRQWHl5QzZEUmVRSjl0QkNINHlXQzhJeVlVUU4wMjQ2ejJzMWxjYi9odHRw cyUzQSUyRiUyRmRvd25sb2FkLjAxLm9yZyUyRjBkYXktY2klMkZhcmNoaXZlJTJGMjAyMjA5MjEl MkYyMDIyMDkyMTA2NDEuTXppSEFiVzctbGtwJTQwaW50ZWwuY29tJTJGY29uZmlnPC9hPik8YnI+ CiAgICAgICAgICBjb21waWxlcjogY2xhbmcgdmVyc2lvbiAxNC4wLjYKKDxhIGNsYXNzPSJtb3ot dHh0LWxpbmstZnJlZXRleHQiIGhyZWY9Imh0dHBzOi8vc2VjdXJlLXdlYi5jaXNjby5jb20vMWhG UTZiOUk1ckViZ0pUQnJTTllROTZOQjJIQlpsLXZGbjA0ZkF6eng5VGdWci1aSTJZaDc4ZUpTSHVW SVhYVXQ3WTBGQVFkNUhjNVdiZmhBM2ZCdjlDWmdpUjF0U0ZTRWstVGxROGZIcUV6VXNPNnBLVnhW YnE5TndGdjN6SUlDdDdNMEtqdF94eUZaRkRfcExybC1JbGdrZGRkdldXR2tyczZBVVh3TEtxZkNS S3JiNGQzdEdzZkROTU41UFRqMlNEanduWEJyRkZDOTJMQnhqTlUxY0szVmFqcUR4Sjk5b1ZnTkRs aGFKVGxtc3Y0OFRjcE9WdWduWVRmOXFwUWgyZ3hvUWo2UnFqb1ktYTlZbE1ZS3RHanViWUdnVnl2 MHQ5YmVnYWxEZ0VlSFUtWVlPZ0xSTkNoZFlabjVfRGNvamdZeGpnU1ZyNjVSekJEdDc4Mkpuazk0 U1NNY0k0UlY5eUVUbVJ3cFM2aHlpUUtYeFcyaWlneGxpc29kNE5xVTM0Y3RPM3hVRUNTc3hRRW5I amtvZHA3MmFNV1dGMklFVXBubm5aOWtRSEhsZEI1X3FRTlowakd5TTJOLVlyZ20vaHR0cHMlM0El MkYlMkZnaXRodWIuY29tJTJGbGx2bSUyRmxsdm0tcHJvamVjdCI+aHR0cHM6Ly9zZWN1cmUtd2Vi LmNpc2NvLmNvbS8xaEZRNmI5STVyRWJnSlRCclNOWVE5Nk5CMkhCWmwtdkZuMDRmQXp6eDlUZ1Zy LVpJMlloNzhlSlNIdVZJWFhVdDdZMEZBUWQ1SGM1V2JmaEEzZkJ2OUNaZ2lSMXRTRlNFay1UbFE4 ZkhxRXpVc082cEtWeFZicTlOd0Z2M3pJSUN0N00wS2p0X3h5RlpGRF9wTHJsLUlsZ2tkZGR2V1dH a3JzNkFVWHdMS3FmQ1JLcmI0ZDN0R3NmRE5NTjVQVGoyU0Rqd25YQnJGRkM5MkxCeGpOVTFjSzNW YWpxRHhKOTlvVmdORGxoYUpUbG1zdjQ4VGNwT1Z1Z25ZVGY5cXBRaDJneG9RajZScWpvWS1hOVls TVlLdEdqdWJZR2dWeXYwdDliZWdhbERnRWVIVS1ZWU9nTFJOQ2hkWVpuNV9EY29qZ1l4amdTVnI2 NVJ6QkR0NzgySm5rOTRTU01jSTRSVjl5RVRtUndwUzZoeWlRS1h4VzJpaWd4bGlzb2Q0TnFVMzRj dE8zeFVFQ1NzeFFFbkhqa29kcDcyYU1XV0YySUVVcG5ublo5a1FISGxkQjVfcVFOWjBqR3lNMk4t WXJnbS9odHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZsbHZtJTJGbGx2bS1wcm9qZWN0PC9hPgog ICAgICAgICAgZjI4YzAwNmE1ODk1ZmMwZTMyOWZlMTVmZWFkODFlMzc0NTdjYjFkMSkKICAgICAg ICAgIDxicj4KICAgICAgICAgIHJlcHJvZHVjZSAodGhpcyBpcyBhIFc9MSBidWlsZCk6CiAgICAg ICAgICA8YnI+CiAgICAgICAgICDCoMKgwqDCoMKgwqDCoMKgIHdnZXQKPGEgY2xhc3M9Im1vei10 eHQtbGluay1mcmVldGV4dCIgaHJlZj0iaHR0cHM6Ly9zZWN1cmUtd2ViLmNpc2NvLmNvbS8xTml4 Ujh5TTZjSVFTN25jcDIzNTVuXzg1RGpRN1B3UThMSjRBdFFSWjV2VkFLc1pVZTJVRFpXNzV0V2s2 blNvdEJaaDR4WEE0SGxhQldjX1hYaUQ1V053RVBFRzZSSWFGRFp3N3ZwTlNFTzVVY3JtbmpxbGVq SDhhSjZxQnNOTEdTaS05Tnh6QmJvSDN0WDJQRmpuZDc1MUNQN1haTmF5eS1qUWVhb2R3a1JTM3FX YUdkd25RSTc1dTZfRTJUNHpoTlVDd1M1bnhtaDVHa1RON2drNzdsUW9IODlfRXlwdEZiR3ZVMXpr MWNiQ2RNVl9YUzlhRGZqSDBTeWxvT19KZTM4aXJlX2NhUXNuWmJSaTVsR1JqY3piaGJodmxiZ25z SDVqUzRxOGtOZ3hNUWNhWVh4cjU3dS1ZaHRYOUZxcjN2SmluZnRzWVR0MDB3dGV4YzRrZHgyblVE dVkxRjFOTlVfd1QwT2lIME14dXV6dkFtYXp6MXRqZ3dFeGk5RF9LbkhEdTRjWG5iZk95U19hRXIz RlBaSVV2Z0pLYmVKeXZEcEU2RjFzUlk0cXJTTzRkbXVCUlRRTzNZYTRULXhUSi9odHRwcyUzQSUy RiUyRnJhdy5naXRodWJ1c2VyY29udGVudC5jb20lMkZpbnRlbCUyRmxrcC10ZXN0cyUyRm1hc3Rl ciUyRnNiaW4lMkZtYWtlLmNyb3NzIj5odHRwczovL3NlY3VyZS13ZWIuY2lzY28uY29tLzFOaXhS OHlNNmNJUVM3bmNwMjM1NW5fODVEalE3UHdROExKNEF0UVJaNXZWQUtzWlVlMlVEWlc3NXRXazZu U290QlpoNHhYQTRIbGFCV2NfWFhpRDVXTndFUEVHNlJJYUZEWnc3dnBOU0VPNVVjcm1uanFsZWpI OGFKNnFCc05MR1NpLTlOeHpCYm9IM3RYMlBGam5kNzUxQ1A3WFpOYXl5LWpRZWFvZHdrUlMzcVdh R2R3blFJNzV1Nl9FMlQ0emhOVUN3UzVueG1oNUdrVE43Z2s3N2xRb0g4OV9FeXB0RmJHdlUxemsx Y2JDZE1WX1hTOWFEZmpIMFN5bG9PX0plMzhpcmVfY2FRc25aYlJpNWxHUmpjemJoYmh2bGJnbnNI NWpTNHE4a05neE1RY2FZWHhyNTd1LVlodFg5RnFyM3ZKaW5mdHNZVHQwMHd0ZXhjNGtkeDJuVUR1 WTFGMU5OVV93VDBPaUgwTXh1dXp2QW1henoxdGpnd0V4aTlEX0tuSER1NGNYbmJmT3lTX2FFcjNG UFpJVXZnSktiZUp5dkRwRTZGMXNSWTRxclNPNGRtdUJSVFFPM1lhNFQteFRKL2h0dHBzJTNBJTJG JTJGcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSUyRmludGVsJTJGbGtwLXRlc3RzJTJGbWFzdGVy JTJGc2JpbiUyRm1ha2UuY3Jvc3M8L2E+CiAgICAgICAgICAtTyB+L2Jpbi9tYWtlLmNyb3NzCiAg ICAgICAgICA8YnI+CiAgICAgICAgICDCoMKgwqDCoMKgwqDCoMKgIGNobW9kICt4IH4vYmluL21h a2UuY3Jvc3MKICAgICAgICAgIDxicj4KICAgICAgICAgIMKgwqDCoMKgwqDCoMKgwqAgIwo8YSBj bGFzcz0ibW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwczovL3NlY3VyZS13ZWIuY2lz Y28uY29tLzFHYlYwV0dEMDUzZnpnWHdhZk5iOWdJejZsX2FWS2Rhdlo5aEJpR3J4TFE0RnVGR2xm cHJIU2tleE5USWlSU2Y3V01SUzJuMFlFTU5rc2JycXphalFyZTRVZGthR1ByaC1tVUdaRFdQV1RE NVg5MHlwVkFrN0x0OXRfNWsyV0JZUEVDR3pXOVUwSE5NRGdacUh1eE1QWjFQbkFndVVObXc3VHR0 TkQ1Nkh2dzZhZ1FkME56QWJvZTFiY1NnNTFJR1l4TFpYcURiMVNTZF9fMldDa3JBYjVrTkVjeE1T OG5LTnJCNTVaRDExMS1VVjNrWmt6dkV3ZVNzY2lTMExPVGEtT3FZRFVFZUEweTk0RGhTT21qR3Fa cFpYSVUxWkE0bVowXzZoU2tkbWMxREYxc1ByQjJRaVFfRTYzQ1k5Qy05MDhHQ21JR21yQlppdnl1 UnV4c3VSMHk5YWwzOGZLWDhadm1rOXN6eThhZmUzNnNHVXBNb1hpanJQTFVuUEttZFYtMk9DVmoy NnNTYVhLUnRrdHJPc09JMGI4ZXNnRUh1QjFGeEJIWmpLeExDSE9OWmVjSWROTzVCOW1BVVR1M1VW L2h0dHBzJTNBJTJGJTJGZ2l0Lmtlcm5lbC5vcmclMkZwdWIlMkZzY20lMkZsaW51eCUyRmtlcm5l bCUyRmdpdCUyRm10ZCUyRmxpbnV4LmdpdCUyRmNvbW1pdCUyRiUzRmlkJTNEN2U3ZGMwNDc3NGIx OGMwZTQyY2U3NGFhMzM1NzAyMWNkYTk3OTY3NCI+aHR0cHM6Ly9zZWN1cmUtd2ViLmNpc2NvLmNv bS8xR2JWMFdHRDA1M2Z6Z1h3YWZOYjlnSXo2bF9hVktkYXZaOWhCaUdyeExRNEZ1RkdsZnBySFNr ZXhOVElpUlNmN1dNUlMybjBZRU1Oa3NicnF6YWpRcmU0VWRrYUdQcmgtbVVHWkRXUFdURDVYOTB5 cFZBazdMdDl0XzVrMldCWVBFQ0d6VzlVMEhOTURnWnFIdXhNUFoxUG5BZ3VVTm13N1R0dE5ENTZI dnc2YWdRZDBOekFib2UxYmNTZzUxSUdZeExaWHFEYjFTU2RfXzJXQ2tyQWI1a05FY3hNUzhuS05y QjU1WkQxMTEtVVYza1prenZFd2VTc2NpUzBMT1RhLU9xWURVRWVBMHk5NERoU09takdxWnBaWElV MVpBNG1aMF82aFNrZG1jMURGMXNQckIyUWlRX0U2M0NZOUMtOTA4R0NtSUdtckJaaXZ5dVJ1eHN1 UjB5OWFsMzhmS1g4WnZtazlzenk4YWZlMzZzR1VwTW9YaWpyUExVblBLbWRWLTJPQ1ZqMjZzU2FY S1J0a3RyT3NPSTBiOGVzZ0VIdUIxRnhCSFpqS3hMQ0hPTlplY0lkTk81QjltQVVUdTNVVi9odHRw cyUzQSUyRiUyRmdpdC5rZXJuZWwub3JnJTJGcHViJTJGc2NtJTJGbGludXglMkZrZXJuZWwlMkZn aXQlMkZtdGQlMkZsaW51eC5naXQlMkZjb21taXQlMkYlM0ZpZCUzRDdlN2RjMDQ3NzRiMThjMGU0 MmNlNzRhYTMzNTcwMjFjZGE5Nzk2NzQ8L2E+PGJyPgogICAgICAgICAgwqDCoMKgwqDCoMKgwqDC oCBnaXQgcmVtb3RlIGFkZCBtdGQKPGEgY2xhc3M9Im1vei10eHQtbGluay1mcmVldGV4dCIgaHJl Zj0iaHR0cHM6Ly9zZWN1cmUtd2ViLmNpc2NvLmNvbS8xWjdvbEtTSmpfRldiMzM1bW1qSE5pRE00 Rk9iaDJtMktyNENWbXpSRFg3LXdaOUh6U1V2eExOX095RjNOV1MxdnBsRjdxdWloS285N29jS3Fz cFNIU194U1VjQnE3U29ZeVQ0YWlQMEJWSnRBR201NVAxazlNc3NhNzdLS1BOVWJBTXlxNE16RDRk OTM2N0lIU2xVLThfWW1hMXhzd3lLNzJwQnlxb2pURFJhR2VTTE1jZDNFZnA5SkItN2V0Qk5PWjBN cV83ZHFNeUt1VXdiWlU4V0luYS1ad0hXX0NDdlM3REhYcDg2WkZVb1JYUHN6dDNzelllUmE4cVJD R2NuZjVIX0xtWlhVVTQ2T2N3RTFNTzg1cXd6WW4tMGpyU0JLMFowTG5MNjNEeE1jZ3BMQmtJVUJ0 VGdQdHFGaTRlSExXSTZ1MkJUZGFkTFFkZlFya1Q3VWNybDFVYkdobWZuaVpSN0d2cFFjcENzbHlQ VmJFUGpRTTk0Y3lnVG1mblJmQ1FlRXNJa0IyU3hJQlI3RF9YS3FfOFZEbG1YQlYxUHVpZWxNanFN TDdDYnRUaVdVWjhVUUJjYUhwcm1sS0RZaC9odHRwcyUzQSUyRiUyRmdpdC5rZXJuZWwub3JnJTJG cHViJTJGc2NtJTJGbGludXglMkZrZXJuZWwlMkZnaXQlMkZtdGQlMkZsaW51eC5naXQiPmh0dHBz Oi8vc2VjdXJlLXdlYi5jaXNjby5jb20vMVo3b2xLU0pqX0ZXYjMzNW1takhOaURNNEZPYmgybTJL cjRDVm16UkRYNy13WjlIelNVdnhMTl9PeUYzTldTMXZwbEY3cXVpaEtvOTdvY0txc3BTSFNfeFNV Y0JxN1NvWXlUNGFpUDBCVkp0QUdtNTVQMWs5TXNzYTc3S0tQTlViQU15cTRNekQ0ZDkzNjdJSFNs VS04X1ltYTF4c3d5SzcycEJ5cW9qVERSYUdlU0xNY2QzRWZwOUpCLTdldEJOT1owTXFfN2RxTXlL dVV3YlpVOFdJbmEtWndIV19DQ3ZTN0RIWHA4NlpGVW9SWFBzenQzc3pZZVJhOHFSQ0djbmY1SF9M bVpYVVU0Nk9jd0UxTU84NXF3elluLTBqclNCSzBaMExuTDYzRHhNY2dwTEJrSVVCdFRnUHRxRmk0 ZUhMV0k2dTJCVGRhZExRZGZRcmtUN1VjcmwxVWJHaG1mbmlaUjdHdnBRY3BDc2x5UFZiRVBqUU05 NGN5Z1RtZm5SZkNRZUVzSWtCMlN4SUJSN0RfWEtxXzhWRGxtWEJWMVB1aWVsTWpxTUw3Q2J0VGlX VVo4VVFCY2FIcHJtbEtEWWgvaHR0cHMlM0ElMkYlMkZnaXQua2VybmVsLm9yZyUyRnB1YiUyRnNj bSUyRmxpbnV4JTJGa2VybmVsJTJGZ2l0JTJGbXRkJTJGbGludXguZ2l0PC9hPjxicj4KICAgICAg ICAgIMKgwqDCoMKgwqDCoMKgwqAgZ2l0IGZldGNoIC0tbm8tdGFncyBtdGQgbmFuZC9uZXh0CiAg ICAgICAgICA8YnI+CiAgICAgICAgICDCoMKgwqDCoMKgwqDCoMKgIGdpdCBjaGVja291dCA3ZTdk YzA0Nzc0YjE4YzBlNDJjZTc0YWEzMzU3MDIxY2RhOTc5Njc0CiAgICAgICAgICA8YnI+CiAgICAg ICAgICDCoMKgwqDCoMKgwqDCoMKgICMgc2F2ZSB0aGUgY29uZmlnIGZpbGUKICAgICAgICAgIDxi cj4KICAgICAgICAgIMKgwqDCoMKgwqDCoMKgwqAgbWtkaXIgYnVpbGRfZGlyICZhbXA7JmFtcDsg Y3AgY29uZmlnCiAgICAgICAgICBidWlsZF9kaXIvLmNvbmZpZwogICAgICAgICAgPGJyPgogICAg ICAgICAgwqDCoMKgwqDCoMKgwqDCoCBDT01QSUxFUl9JTlNUQUxMX1BBVEg9JEhPTUUvMGRheSBD T01QSUxFUj1jbGFuZwogICAgICAgICAgbWFrZS5jcm9zcyBXPTEgTz1idWlsZF9kaXIgQVJDSD14 ODZfNjQgU0hFTEw9L2Jpbi9iYXNoCiAgICAgICAgICBkcml2ZXJzL210ZC9uYW5kL3Jhdy8KICAg ICAgICAgIDxicj4KICAgICAgICAgIDxicj4KICAgICAgICAgIElmIHlvdSBmaXggdGhlIGlzc3Vl LCBraW5kbHkgYWRkIGZvbGxvd2luZyB0YWcgd2hlcmUKICAgICAgICAgIGFwcGxpY2FibGUKICAg ICAgICAgIDxicj4KICAgICAgICAgIHwgUmVwb3J0ZWQtYnk6IGtlcm5lbCB0ZXN0IHJvYm90IDxh IGNsYXNzPSJtb3otdHh0LWxpbmstcmZjMjM5NkUiIGhyZWY9Im1haWx0bzpsa3BAaW50ZWwuY29t Ij4mbHQ7bGtwQGludGVsLmNvbSZndDs8L2E+CiAgICAgICAgICA8YnI+CiAgICAgICAgICA8YnI+ CiAgICAgICAgICBBbGwgZXJyb3JzIChuZXcgb25lcyBwcmVmaXhlZCBieSAmZ3Q7Jmd0Oyk6CiAg ICAgICAgICA8YnI+CiAgICAgICAgICA8YnI+CiAgICAgICAgICA8YmxvY2txdW90ZSB0eXBlPSJj aXRlIj4KICAgICAgICAgICAgPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+ZHJpdmVycy9tdGQvbmFu ZC9yYXcvY2FkZW5jZS1uYW5kLWNvbnRyb2xsZXIuYzoxODkzOjQ6CiAgICAgICAgICAgICAgZXJy b3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdpb3JlYWQ2NF9yZXAnIGlzCiAg ICAgICAgICAgICAgaW52YWxpZCBpbiBDOTkgWy1XZXJyb3IsLVdpbXBsaWNpdC1mdW5jdGlvbi1k ZWNsYXJhdGlvbl0KICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgIDwvYmxvY2txdW90ZT4K ICAgICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAogICAgICAgICAgaW9yZWFkNjRfcmVwKGNk bnNfY3RybC0mZ3Q7aW8udmlydCwgYnVmLCBsZW5faW5fd29yZHMpOwogICAgICAgICAgPGJyPgog ICAgICAgICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIF4KICAgICAgICAgIDxicj4KICAgICAgICAgIDxibG9ja3F1b3RlIHR5cGU9ImNpdGUi PgogICAgICAgICAgICA8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj5kcml2ZXJzL210ZC9uYW5kL3Jh dy9jYWRlbmNlLW5hbmQtY29udHJvbGxlci5jOjE5NjI6NDoKICAgICAgICAgICAgICBlcnJvcjog aW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2lvd3JpdGU2NF9yZXAnIGlzCiAgICAg ICAgICAgICAgaW52YWxpZCBpbiBDOTkgWy1XZXJyb3IsLVdpbXBsaWNpdC1mdW5jdGlvbi1kZWNs YXJhdGlvbl0KICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KICAg ICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAogICAgICAgICAgaW93cml0ZTY0X3JlcChjZG5z X2N0cmwtJmd0O2lvLnZpcnQsIGJ1ZiwgbGVuX2luX3dvcmRzKTsKICAgICAgICAgIDxicj4KICAg ICAgICAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBeCiAgICAgICAgICA8YnI+CiAgICAgICAgICDCoMKgwqAgMiBlcnJvcnMgZ2VuZXJhdGVk LgogICAgICAgICAgPGJyPgogICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgICBJJ3ZlIGRyb3Bw ZWQgeW91ciBwYXRjaCBmcm9tIG5hbmQvbmV4dCwgaGVyZSB5b3UgY2FuIGNoZWNrCiAgICAgICAg d2hhdCdzCiAgICAgICAgPGJyPgogICAgICAgIG1pc3NpbmcgaW4gdGhlIGNvbmZpZ3VyYXRpb24s IHNob3VsZCBub3QgYmUgdG9vIGhhcmQgdG8gc29sdmUuCiAgICAgICAgT25jZQogICAgICAgIDxi cj4KICAgICAgICBkb25lLCB5b3UgY2FuIHNlbmQgYSBuZXcgdmVyc2lvbiBvZiB0aGUgcGF0Y2gu CiAgICAgICAgPGJyPgogICAgICAgIDxicj4KICAgICAgICBUaGFua3MsCiAgICAgICAgPGJyPgog ICAgICAgIE1pcXXDqGwKICAgICAgICA8YnI+CiAgICAgICAgPGJyPgogICAgICA8L2Jsb2NrcXVv dGU+CiAgICA8L2Jsb2NrcXVvdGU+CiAgPHRhYmxlIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBs aWdodGJsdWU7IG1hcmdpbi1ib3R0b206MTBweDsgd2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGxl ZnQiPg0KPHRib2R5Pjx0cj48dGQ+PHN0cm9uZz4tLSBJTVBPUlRBTlQgTk9USUNFOjwvc3Ryb25n PjwvdGQ+PC90cj4NCjx0cj48dGQ+PGJyPjwvdGQ+PC90cj4NCjx0cj48dGQ+VGhlIGNvbnRlbnRz IG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCAN Cm1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNp cGllbnQsIHBsZWFzZSANCm5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3Qg ZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSANCm90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBh bnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gDQppbiBhbnkgbWVk aXVtLjwvdGQ+PC90cj4NCjx0cj48dGQ+PGJyPjwvdGQ+PC90cj4NCjx0cj48dGQ+VGhhbmsgeW91 LjwvdGQ+PC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPjwvYm9keT4KPC9odG1sPgo= --===============9061502990315854254==--