[OpenAFS-devel] Automated loopback adapter adding (on Windows)

Dobes Vandermeer Dobes Vandermeer <dobes-dated-1061070148.9daf90@dobesland.com>
Thu, 17 Jul 2003 14:42:34 -0700


This is a multi-part message in MIME format.
--------------7A972D54E037C999C88B6327
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


I've got a C++ version of this we've used for our project, it doesn't
use devcon; devcon isn't legally redistributable :( but it calls the
same function(s) devcon would so it *is* redistributable.

It needs some headers from the DDK and links with setupapi.lib,
wbemuuid.lib and the basic windows libs.  Those headers cannot be
redistributed either, so you'll have to get a DDK to compile this. 
Luckily you can redistribute the resulting binary.

It configures the loopback adapter with 192.168.254.254/255.255.255.0. 
This is hardcoded right now, as I haven't really bumped into any
conflicts and our installer doesn't ask the user about it.  If the user
wishes, he can modify the IP by changing the properties on the adapter
using the windows UI, after all.  If you are doing an automated install,
you can either recompile it with a new IP or a command-line parser.

I've been waiting until I "spruced it up" before submitting it, and of
course never did.  So here's the source; if you want a binary (its 70k
zipped if I include the binary, and I didn't want to spam the list) I
can send that to whoever requests it.

If you do make use of it, please submit bugs back to me...

Ben Creech wrote:
> 
> As previously mentioned on these lists, putting the Windows OpenAFS Client
> on the Microsoft Loopback adapter may make it less error-prone.  Thanks to
> Scott Williams' patch in 1.2.8+, the client will automatically bind to it
> if it's installed.
> 
> However, installing the loopback adapter is somewhat troublesome to
> automate.  I figured I'd make public the thing I just made for an AD domain
> here:
> <http://www4.ncsu.edu/~bpcreech/loopback/>
> 
> This isn't exactly tested in a production environment yet, so ymmv, etc.
> It has worked so far on all the Win2k and XP boxes I've tested it on.
> Don't know (or care) if it runs on anything less.
> 
> For more info, look here:
> <http://grand.central.org/twiki/bin/view/AFSLore/WindowsLoopBackAdapter>
> 
> _______________________________________________
> OpenAFS-devel mailing list
> OpenAFS-devel@openafs.org
> https://lists.openafs.org/mailman/listinfo/openafs-devel
--------------7A972D54E037C999C88B6327
Content-Type: application/x-zip-compressed;
 name="loopback_install_src.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="loopback_install_src.zip"

UEsDBBQAAgAIAJN08S7hRGXzkSQAAPSOAAAUAAAAbG9vcGJhY2tfaW5zdGFsbC5jcHDUPP1z
00iyP0MV/8NstgJycEz4uHp3ZOFKseVEhb+ebCfLLZRLlsa2DlnSSXKCF/jfX3fP6NNS4rBw
VS9LbWxppqenv7unJ8+Ojh49ZEes7Qfb0FmuYqZYDfbi5OQl6zne0mfjbRTzdcR0z2rhSBo9
WTkRC0J/GZprBh8XIecs8hfxjRnyU7b1N8wyPRZy24ni0JlvYs6cmJme/cwPCcLat53FFh9u
PJuHLF5xFvMQFvIX9OV8MGXn3OOh6bLRZu46FiBkcS/iNN+E9fFptOI2m29pShexGEssWNcH
yGbs+N4p4w68D9k1DyP4zl4QCLmQhNpkfsgUM0bkQ+YHOLEBGG+Za8bZ3HoaZFu1meMR6JUf
wK5WABT2eeO4Lptzton4YuM2CQaMZlf65GI4nTB18J5dqYahDibvT2F0vPLhLb/mApazDlwH
QMPeQtOLt4A+gehrRvsC5qhnek+fvMdddPXJQBuPWXdoMJWNVGOit6c91WCjqTEajrUWY2OO
iAlS1lOaLQDa2gdi2jw2HTfKdv8eWBwBhq7NVuY1B1Zb3LkG/ExmgSjty0XX95a0VxidkfOU
OQvm+XGT3YQOiE7s7/KX5mc8bpKANtnf/sEmHEjF2cg1Lc6O2XiDIF6+PGmyMz+KcWhfZezk
xfPnz4+fvzz5nyabjlXa2bNHD8V/z57Bjq8tEJXjEJgZxSbw7nD8fjzR+sZwODn8oHuLDwMe
u74ftBxvwY76495wOEqnXznei0+PHv5q84XjcTa70gcvX8w67WEfB/zqeJa7sTn77cbxbP8m
aq3eFp5aKzMsPYvTZ7TAZIXscV0fICxZfOOzFTdBkyKGwr8I/TXRrO9YoY+ayTqdd3lwHo+t
xfJzaRHx1JPLZM/9+b/nZsRLoyMebwIzcHaGA/GWG8cuDQfI62X48kXpcciXoDk7iNwAkB3A
qGLesjR2DdzxrTJuse34u89cZ74D9GbO15aLu2D4g9zr68B2UPsFypDNLdcMScwiQX3iwDQA
0eOdEMQ+7PrhyN0sVc8Gsdt2+DUIeSRGxtuAgxSws+GwxxSQA3Wks6M7J49CP/YbysXVoMNW
N/AK2OrFaDa+96c3ak/GEwOgOfaPgNPduC6owciMV38FXOdqaHRAe0nJuq65jP4KtBGReW7w
ue/HBv/PxgEnxIajiT4cqL2/ALhxSkIj9Xk66qgTrWPol5oBZnbUm56rg86op77vaJd6Wxuz
gzs5rB4gxGvfsZlmRlstDP3wzP/MFJA8tgqb7AoMu8GOwAivTbCFrVar8ejhF5wk2HCFXGAs
Ig/d51FkLvmpeCmmws98s/jj1cnJR/l82hsOzvGDv1iA9sqn1+YMPGnMmBmcMmHC8LGzUFZh
I6NZdBOA9sULBaE2We+AUGaHv7qfX7ODJuBMVMKh3CULL38QiZOP7A07OU1gi/Xh0Y0Vudwj
kOlswAekIYwVQKjJxP6zlwU0ngpAyaimGeShcM9GGOkjsSMmvnzJEOzSZEnCKwU9Z1+dzPrg
RdVzbab2esM28Ht2Nu12NYN9rZWj0sSuMezPhNvYf5J+Phga8Gsw1ozJuF4ZBtNer/4tCFDt
u776Tuupg3O9o+Cv2UCbTgy112Tj6Rk96GhdddqbNOpBKEL8Go8L0lc//uT2faQcklwqQM2J
4JcilFulqFJsU3npHXzwPngjP4qcOUQLlglx2Wt8dLADYK9V4J1lxsU1CrvYmdHzLdPFmEZh
ygUKWK9RP+Fb9rGoW1/Km3UgUCjqbcUwC5w5uzrT+jMQUlXvaZ3XJWzfAIVwAER2/9lwMA4L
CAC53To4ZfOQm59O6wFO3o+0WV8fg1C3L2rhol9kaycCxbNWdWC/Fb/eIhkVm9ybdz9ESu61
2v2l5VtBFhIzStosZoDrAMtFRqFgn8Ew989mens40AwDMoKv+HX4Ll3gG8tM9q5lrAeOoe/c
tD7NZHycraMPhEUDl7u72qOHhD64Z5dlICLp/7mtCB9HMgUBLzvCcAUoeiAj7AMJ6AIdLSzE
hDeFQMQfpw5tPJrJ1zPw02puTMeMTTlIBB5Ok4ehfEJILTCnkA/E/zGKk4FhG2QUsglTQmQI
El0HZpWwvEhlMFkIQh5BvIZpBPr6VhFSAWfY3BgD6Y5zzuO2a0YRvI4UQewT+tfRz9tddEPt
njoeQ3TxVT4aGdpYG0yAvIidCgvLBVMEADEhWIkHZEpp9TdMH1yqPb0zgzyy09Nm8GWqNXZE
IR+kKIBqz4xi+q40UB4KyCMmI4mBDHca0oKA7uRlO4Sthx68A/GjTUDet8KUxkkk4p+p5FSy
hGneZg0JJuaJq9DfLAUDOpWEJ+YCwbtqb6ydlpmBwtGy5mPnT7RTEfzyF0pJlhLcMTVWnDcn
pwnzEI0MVJHITaf5uLgMMMx5+nSXyEIoccQkR6TeiCLuoAm6t+AhIIfScVqeJt5GAv2T3Ovs
U0KIJNHh7Mb3nsTsk+ffUMJIs2X2fmGGNubaegKabbzYcdkNWkLXLUCi/H2x8SzUhRak6TRE
FD5QJ5gH6QJm8nO+dDx62MSCEC7kFRDECgktHybhu1ycUAMIKqZ7NMID6+RYZrhlUQCZWqsA
5h3nASGB0gQoU50i2lggFRGWSUwPtoP79kgyN2Fxfvb5ZgVyy5RfMi0VvDRgJ5CQbiFVC3gY
b0s8L3G8OR51jBHomNG5Ug1N78AAZHNTGZ29n2gNsclmxsPm4+xzoz4GQo0uaiOqNNn6WaLY
JLh3+kqgWd/cYo3KZD2+NK1tYuaIhZ5PqWOLtX2QAm+TJ1ca6d/tw8nP3I70GMJsva2DYZMR
9164X6E8gLSAhIDn8JZCiHKyU4Ev4iFGNFh1gJpFaXJchTdPtVIRLqtBk0hMIU6eGDmmNu4m
zl57xaIibg+SQvbP3SF32OouWWKklM1jbsWwS+GJmWmbQczD16xeyhvSZmOxL1MhjtBbB1Xk
WfrIEpeb3iaYZUpRpkT+S2Xgm88Q9pT5ElMtKbk1phEkex1g+Yyb1oqB7wLDIku5ksXrjRs7
x9GfjPJlUgssF5NeZJDINwRvxJxTdhSwx4/hAfuNSZX+IxOIj+AJAvb0DXOByBgzBo2nz2/X
9l9gpLUOFCrkBI27lSPxehNjqp3eW2lrOZAozm0qguNo+UZhmZIzZ6wtxAOIuCsor2WAGqKK
FdmexHvCMncgTwn9bTazB1wqWuXcjAwMQG4UIr4kKJGhYFXEKqITqtUchVRtGoDx4XYWvu4V
hJ5PwblS3ISfbo1tWXWgJudMqOJDkAbmmv/RV3+fUbQ4G6h9bdbTBh8LI1c3uo3k+aOnD+j1
01fFAbK0R4BG6uTiYz5ITtzoGxm4JSWprMJYEbInr7FeDm9hhx8+DLQJDmnBl4NCXL7ASmAu
jLnoDzvTnsZEYbjv28UgaL96qhzW9QrcFmU2ESUbwEiAvASz6F0rB1nJ/yAnOe1NiMXYDgQn
VuyHWyWb20grXCDVQEKwGGAoyKUuMAAKgKQe8CetR4E8YyEVSY18A4FaNBOSN5PyKm60wd6+
YcmbRl7Ng00cKTmbDlZu4Swhnqkw60j7BAcY6zM8gakPyFNtTfeEMoPx4UrGhkzvPInSXdr+
BvPkP3noH+NxnuMBuW0x+V/wsM/XSK9E+Joyxk6+NxJE0BhawdbLRpKxS2S1QOWpDBdBhFgX
IzUgAf8ch6YlXCTpBClaK8uBcsEczKMhSkLtx6k+NlN9SjBNHzSaJ41750j78SgbBRbTpn2h
RzmMIHVqJnqZZxk52AXQ2t1lWDl1RYqgGzQdD/wZwqWjV/94zo8tGmJXJbeay9cg8vvlsWKp
khnOUfUkV4/9OcnofQktdi6TZ1QSX3j4HN0zzt+X8gNIrayM+rxEylSAM0GlxAjXyg7ySAoA
3VoO3Cd5zWtAmVmlLCbbd5PlWMjS8kRHb3dm59pAM7BCjq/KqW6jhl47hFJtW5ybo/+Qh74C
FpgYehjIILREBZCjZDvjPbOzMpZNtpOfYZGbUrPUCDElidJSi/X0OYRrR5Lc5Dkb+294Eppe
hEom812BcSIheATpY4wNlmxjUmnH822ezpah6cgbsYsrFkMAtkOWHJshWiH2JZW2UOno3Zmh
nevg4gxxbNVktxPp51s8KhpYpAhJASjMayGo5n76J4IMaSyTmg3FFF/Rxownaq/X7anns+7Q
aGt5f7I2P1GXBnq5Pc54cVY+KOn5JkjGPDTBz0203yfKgTzLtl33oJGzfL+ks346VV3AiWVo
3I+SScyE+e2ex9aAMXywQJ9DiBKVdKPNO89N8/RJFv7vuFlUJZs2xja4MFaNknqWMMPfS8D8
XkRZl4IZjPRIIpuF/OGn75Z2x/P7/R79yjKAOKSE+tFDGvc6t+tMwAuHrWCoEgXJRuwSrVyo
/qUmNsjDvn8imC4o4165ryTre/bs6fGP+6G+ESQrj6+wswky50/sD8f7iEVGTj1qQO8lHiRQ
45ML75M5QeBZWX4uJgU+dangpNxHfQApymLJ/Pm/IT9J+1UM2mD0GsmERzJ+utkm83HtGweM
nilLOSBM6GouDG087U0QJ90jsAolgPkdpJ0KZhCIQEFicHREWKfvj1a+a4NeqWJclionq6zC
N4haMYdyYsd0qfQLEutvYkh3IIUJAQDsNynwHxF50pSwKuoV5KBGOnKvqOAS0ZLfTNBnAFOK
yQprD21fgCMX6llcaffGII1tMTyJieBhe/L7TB+MjGF7NtYMsHW3trToAENPYCjYEHJ01HgM
a+fDtfG03da0jtbBs91dGyHnk0AR3vRp55wAIeVZV19oAtqBqSHCoRSKExnZEVUcSaSBFY/f
/u+Gh1s9GaXk9kVismf3DURdl0OIgQUNCMvT3SJYFT1ur5mqMeToQSz8IRBHRNVCVdACohd4
RnpXcTocg0Ow0MBCUiCaaKyZtY4mzppjm+Yb9vxvJydZe0sVfXAnx29Viw41Ug4oeTj373xK
VO7eE0uqeFpdGx/P6KQM87KdloIaSqdbHmiTdvd8ps0Gw9mVoUNy0Bu2351Wzyj4OGx+2tev
takH1fNjwVRkqIV65MTYlGu6yNUtvRONwk8Ooyfg547u3v+32w/g9xHGXZ0qmbOiqW6Vh9cp
WgaF4okfoB+J/cwsXv6HFoVozuAL5QedYDgZIcS5cBPR9udUmLCJYU1QSZdjY4kTV4tnYh/2
FsxUDQ0BOVPDe0tAriclQWMHvFJqa0KbLohZHpDr6ZCByCr8uTHIyozqYpAs+KATtUgc2ybc
wJMOGZLkI5LdkKQch2TRhISURBR5f9sUBeY8dlVxAhabSpHCxsvJlASZc95E9mlujFKoIoI4
5bbtpA0UTYArHsU1zhgPd0ro1jvn1DcXXMV+zvZHOtrbnew9bFrRu92pVntry7fdJKpae2qU
hqSoTefAZ46Hpl6RUSjmXUlEOhevpNDht3yLbSLAuz9HmZ2Ug/Do0PewalMYVDdK4hTJUfP9
gE18saNCl+9RBX5uEP0Jru20qDZVjjp/qlP5sxBLvkkOBBLiEONzaQEeLtb0hT0mvX4skSo0
42JkgYpc0ZQrlcIE3i54yCHeTmqCsOKNH36CuECSqVWlJF0gcUpIOlchRKySTd7FoT4arsAl
xeFJxKQ0tao15Fa93REMyATyGmrNKzSpGvV6n1uzhQi0ycK6fxU976JrqkGP8wJaHU/egvAt
PhvmkWLWNGh8qbd2sGUkZ5FP99r1Dg/nx28R5MRX7tpuSX+wepZ8/PqV5ShRmTQUifZLQrTv
DpMPI3gNkTL2eoErn1NHAMw5jFqi6tNMpLduL9+qH+faRu/Hmak33+VNetzx3dwRYLsA5/83
hzae4BFRZH8uCeISUyowgTXSa4jfB/9bHSnyxK726Fmjz+6zGim6yyKAGHWofZF6+7C2KYQq
8tdcdJHi7cuI0sO0n7QJr5nvuVtGHd9ZxQtDQP4EmCNpUJl2/NCibDthOJb8AI/szlkujAbm
sIRxuJG8+jpxiyl9czvnogHTKe0Vi3x0oVV0KLQaBymHd2q9t7JYalcdX6t6/O70SH8t50/J
lrErpZ6/yES6AtXiA+Gab4lBK3ZU2k3FTvZl7S6S34qZQSEg0iFF9jhLruXuBEKR0IQ5554Q
kmdSz5sFMGYQuOLOtOiUjEqdr4UASdrEW6KjLDZQEbCyazAzE5uZ1botl5JDih3xjKFR7B2r
vq8A+Mooo7r8RNlaEojei6Fon0XfD5AOq0dRmq8hfvKeOPKzFOcmP21/Ykaf+nxNrXIVg36Y
uFGM7Md4wT4peifSV+zQ/FZ9BrJIswxZf0ic9Tq9TRzxUNwzQFsK9gWi2DN9OE7dS3JyRgdC
eKgazdaR5Tro5Ctd0NE6wswhGYzwsRJROTS5a43WO003hOlfRyA2uTskFbhDoJ5gu/KXUTru
ilwFUYpHdDrgROL2flvvjlm0MuE5GlR6JltFYCBgiEqYwqEr+zcreW9f7plu0qfUk3qb2uvU
niPoFJBYQvaoFTLZ3kGOngfI/6TVrikatxImV0wTlK2blC5OgfOkPXqmj2pBxVbgBCVIeU2V
4nSSCRKxt8Pnm+WycL4a4/V1N2CbSDrlazN0TPgdcssP7UheeRcezvID/EsIJAvo6fNiaeLp
jlgpuat7hno/1v+lMeXlC8iWZa/GlejVyMa1Lydn064cePKPp69OIMA4Yr+iN7GdpUPCwdbm
5xazA0DQ3XD2lIHUBowp5H3pgkIU+y6XJ8bWddxa4SyLhXh1AnB1xclng/7agLzDe4mwJv6Y
Lrcrl6qhq4MJZPz0PDs9C+abRSrZ8vYSHhpnXZLy4eW4cAVEPm1vwrPNIveKXkrg13hTLX9c
lBRI8o/lFHHHkCkCv+O317G0pEnhhC4DXk5mOO11Pg4Q0JJCTENc3FdSBhUsJl6RC7aKvG32
G14feVtsL08aigtr4v3v1wWDKek5EzfD0VNJvLHmcZmebO+LYG409dfMG2XzXMScDlCKiH8T
9v3WaVhOKc2q2HrRfSY0mOrPiyTALqbi1sW+H9yfLdT4ja2oL180di+fyjuUcg9PDq0nTDmE
iPvk8+HvFHuKf3tQowzr0GZKHsp3kkZ/UaTM+GJoTJiTI41zf5HYC2kH/lWKbw2ir4qI0pmj
m8PT/Ul4uvDvHngaJTwXrg/ecZFDdOHGe6Gas79lI30r7s9PWq8W6MPug/Xfi1jLvmU7h7Y9
d/8raNv3QPsMvAUh/uBB8vcfgitwG3nNjuJQKveDGowVeTuZpjZ2sEanln8A35Vdv9lIzUd5
Zx8ODm/GHw5ga2IBiYrc2IMHtKkHdGWQS4eNTa8Ubfk+LENPICKgRjwHoyVsUsFbfnhhyYkC
19ymEIAwTzD9cR0Le5ef0L3y6PgY4lJn6WGSBIPWrQIZO/p4JO6mU4tIGtVTUWATYWwB4Rpf
z7ltYw5NMXS042a+wm/8g03vpY/Lmd+6V/qL2jev6t4Y9W/+XvcGBaXuXbJ79pWVRlS4VYiN
zI0bv/4xThyS+uRvcFHJRTh0Gp+IOkU5AB/+f5rc0JBxJD6SkST91ZRLESPiYbgIndQwNLdp
/PQYYsgmQ0pATBZmKYEIh9KTDxpwhH9Va4sXGzGJTv+ASNi6xt6OMkFz7wOaiKeR5oLT+qJF
6JJuhihyJjVKP88dfCjiBDOZo1IbFnbYKhlQ2QvEsBmogB4oH/vCpNLlSiam6Mj7v+aOv6eN
Hfl3TrrvsC9S26SCQGhpC6h9SkP6mhOEPEKPk45TlJKF7hGSvGxCimi/+80ve+1d72Y3Bel4
r++VxB7bM+PxzHhmfCnNALee/z2YV2BgdUJacLgmC+BGYfXvf+P8xdZ4ANKwRzEvffieaEWp
TpgppREptSb4M8NMJUbb3o8IV+5xnNnVYkSuipHPJbvGGHqJoY861bemkoAIRj0HjEwAb+Bw
0gCO/fm3CYeKhIvpdDKbs3+MK4+B9Y6B2LH+u0b/L7FkYbvlG6NlewzWAVAuXHwFSw/kWHgT
a/3WaN1Q/sfJJTkYhpJwPJ1NcMFoJ5H/iGPO2PpcDkKdhRkD/c4xkWBsBc3FeuyZSGKJCQNe
BXe+dw2svBzcg2kz9S+DqyA+2tttx2jtrjfgyN9Y47qjsYyQ3mknB6qY89nfa8TRq+wWKWFC
hfl0SktsmFeOuQ0ntwMw3jBXKtb6taP1t0k4d7U1eagzwX17i2cZzC0E43Y8xF/O252eJz4P
NkfjiHbxF+WD2M3eutiQfL+U9hVrbfIKpU5R7T5d6cVsuucC7AMVgvl9Gme927a2DwoV27XL
/gXlTIp1rq/ofPi5mdZ1x9kVTnl/yd3Iwxjr9CqlE4cgpXazWKFL4sWn3iRcxGcd67Nr9flX
vk4mB3xCfG8p9+94AarKjL1IocrEtvq62OJqRjmAoC7FGrskiD1UrIPJG4cLUcUyu+yZnNFV
3IPRveht4YXEepjswOcl7JRxQiLtmbQ/YXi3lHUYa2eSuyFhgnBchvP4wK+tqWLZCtx3VC9U
vKtIPsoVjvXcdXKUeGadnLv3JqvLoQiJZDebvuqmAeel9guCinV6ZwmmOZdN0Wwu15Fm4JdH
UbKwiRIH9TbQU3MAgljB0UqtNI5330f9Gx1xSmwP/fByFlAlVq5IEghzl2PFhFCJjyo+KI8w
3QdiRLuK3m139736ztvaNvyzQ72+zefT/a2t23A4rmknYg3Uiy1x023JRGuDcPr7YjZ6r7/w
x5uLcGt5G4TDG/zfFixkFvh3cAj1KX+pP5n11aHdH2JyHsCgUf/w5yfEOOinfuRZBFjMUjnn
+9f+XCJL1diPOdYyGL/a6cs2VxRWA5k65BOsk3mLCdu/Jc0OsC2Yd01M7wM6+9Usle9X3yJI
6z4ell75nAB1GFCDvyrH7h30gcS1ADBgkqtPasetatruJj4C0Kgdsk5d0nFa3059NEJKZJtg
ziPlgr6XBAOQyJFPtqTMnalY/RydvjgV7VDZHORLDwG57+tkcpXaWLDoHLiFsgKZIcH6wk97
6nInGqWNLbHQA1g10Mr6NWrljs8ESz09GDVWWMtQdKUIkTlSdI2lLamUnAyjV2ZeBidfWK2j
0EjvubXQqg4I0eZOKXNt+K3O7lXXvrp4CmiWoJdNqXYvKzZjJMF8Ih3xh0NhSC1caP12CvTi
/qhtOioftSn2HTrdY7YLGDp4kzL27yRTCJMrsbA1F9MlUU02POV+8zC9+5DK17BdTcYldGie
HOsrG5wks2dHTQJpbvWrHJUv4Kd2cTGD/XBxcRnc3u1YTm1Cr2Y34ask++Fg2mq2aLL5ocl4
6xGWKtFsFNklUVn+mJ89t4erVs3gtFLpoWR7pGm1lyob2rVYl7homnInUR4HCyr48xClyc1i
KheGSJ+rYBbGok/ayc3KGeOJLB/tZDglJNrL3PwQnT+XUW73doQVgsq/VuM8nxHOQfhhUZyG
IPNQENePI1Dx5Uu+toWTgdKg6eAf6ktDTEzjIk++ZPH8tQAdFYzTGVWPp3gXcySZVHIkwsuf
qjPmGL5EUOF7Bz6jOAdCD2GRPQomgEq0fsAkAcsMhaSKmT0MUaDiRfkTGQjZCJ+Hwr+RAzg1
VI3msvnhI1ZfUxXzgCMr22mRXmRZV6Rbx/8+r2zLkmR1eOAIl6QwSY5AQOXF0iTc954tkWnh
v5SQGg1o35LK8M/1yqsFAxdlZZmRao48mS0XgpNbEzbdOGN3pnOTxUHbJKTG5oZ8Em7C6Aeu
3dpoNlu9Xv+w1Wm3DvUFodky9bBzAPW/+5cLSb/8C2Ofa452zMpHoL87ZeqfR+U0ysomwHPO
0ZNDSIEUdBW/UjZjyMbM90RMigS7KHNYykW5HF145JOyLVg7xXtXaG0bPFHzFHpuKVuWqC2t
IFwp41BQmlA8G9ZN+HTdxUHPE7wgiTwwSFY6qDAojR5tmBMOsSwQVUrDi5xRLHyPwqbuqQ2e
eJMoWDMzXBgroiz9F0MPqIU5ShzmiOogjlghk5FvkEZYVXg+uPFxslEk5EDcbTjXqmt9SEtN
TJMyIv4wwXPDq/OWZBTD37WibaoPWO5Nf4Ef16vOIR+yM3VQO4gUg3IwHvrfyxhr4msv4o3P
bs6V7F3NHoq20t1glnZyt2nsrKhjQSGllr/H7SA4ItlWEdAi0vTJobSMbLAPqxOaMk2ImPs7
1N6ENMUgn3zHFapNltV7NXzRa8dyGPSmg+VYGzRyCODvq/Bf8DRYA89GSaMrjHzj120UvqWw
q7xxk8zSX/VDXBhMpW4IX2wnWbEr35fzoEOD5cuYY7C2U+D2dINigCPzHh9RSkKOvl8LbIfn
lA1b+REyhX2Mhmdgd4oJSNeC4T7FFstrPEDMqbqR8UH5oAoKnB2KDYyrrTDfiMpPEcDuBysb
e8JfcmIk96KMeg/trieMwuujIwQFAdoH0eK4ylJWqL+1CvedsyzKZoVC1DAmbuDWMXPz28eY
uhBiw8Vw1ccmzzm/50RODC2NaRX6s1DnC+cqYyCSE6Xj5ofuYl4xxQcfN0IcsHS0fHTm6TRm
1yHD0CImpWh5sRlZkoenpJGOk8ozo0g4xaaUE/U5beq7wF/GyfPVv5IwGjkvKQaXlKoC4gww
cgZaVJpp7bQNFRK1w+JMmaECLS9NlJWpb5rCfW1gFgTlNgDTNvWAjkg/t6KRpmycLOamtvHY
QnNyO13YVXLI/41ih26EA1WLjlyAfGjkg87+bgaKl2cfF1f/3tnd/U/OJSxDJt15xQKBe2Ol
xlsjnfX9syESGTTOGgCC/xU6hKNRk2evNaNCsv6PiXeN//5WSKIkzUvxGEQT2fBi3gPWsWUj
4b4RRkp3JjyySllArRTktIzSrXI5yLH2FZ0cehX4o6GIIK/Mdhb5gMrV/EMpfQTGiMV55mEM
7pVmLVlTKgCaKS00YsMpGohPDv6dHwYpAvoXaViQjlG6WjAXKoZoOi999Wokx20Vgwhr4OXL
VmbLuhiMh+JvwBl3eljo6aAYhJ/FmsvzCMmFbj/9QnH34a2RPMASeteolD75cguvq2T8YD5C
Alfv6hghCctJDRwqH3ihj+/aqtI24qsJF1N/djVaTBbh6J5dU8GtH673cCBM4B9YGJtTmoI5
xbeol12V6oUCDezl2YGK7AN1f3gLJjU9oQuTxI74UCy5zfCzwSgKbkbl30RHSQVj582lte/p
9V59NtxXJSEt7G547uBQqxEHhxs/7hSPAmj8NJmZ4SDqlWCAGRUrDDELc3/tIf7fohMsqq6d
Kp1K3jhhEyR7sm1foGkx6VD8fKKMQj6QuIrAdOqPWYkKxjcFd71SGIuaOdpIMc/9mL0jYKsF
QTrYJgqjRlc+q1A2kxxIoAhfwpHoWWgpiunFhnZDAmKNyeXkgZzN8rNJMVW0cYUBGwPl5sT9
yioMJf3qah3mLRdv9t89rzubfAWkgTBnxsCI7RVRFizkMQn5v3hq3N5T6A9Iufv8s15fUET2
xBpOj595rR8s4yV8/vjWQ7SDsm51V/UuZmT/LGD3yaw4aRk22WQxg714YL+dBnoXMtUouPFH
96KeTAczCmQd0HMdmEs8zm2Bw7jyrPoGcVj7BT6DhgUi4PDGoEm6ORtf5/XR66QVKbLMvk/J
WcmL7wQQcYgVBXMfYjEFsbtMz996ECxP3XogfsGL6gYU+ZIfQVrmk5Q5t9zasiZqRTddris7
lqMvQsMRmVMc5dqQKIbkSu3R0KHdlUWFT+wq8ZcJveLr1TyQY8Fr097MrBgMzXCLHPTl1FFn
aMLQursy3KfODlQ8Vt2wVp1NHjxWiB3UUhfbEaFXtTViZJOtVnKsLRjkKr0qcZEpOHKhKOBy
a5wzhfKF8gO94cLnCE82pn5PC46g2IjfjBgHV0P40Q3Tox4cWLA56hTvHPPylCtaQykxbMVK
EnI+VBFzWKE5zlV4zmXE5hJnkczmJpc45prrM97dRSJNtLavnlqzB/8FukQhUFh1e4NqbxvK
5YZnRkY546uYQtn7gYA4e8faqVFyyEu3jHzIU7u8EIaisL8LKzj2orxCCXfKDHu90VXAY5Ts
/rVFSrzxxepbm8yVJ1Ztr/jS9USX1cduHwWLO2qLPc0zLKvTFdTya4mHsmPbFOsomunx9SiN
G92NmLpqF8IyymM3T46NDIqonHzru7w73jxpd9pUK6Dx8ajVPzlq1Q8PW94P9UWj2zg9O251
zs4+n7Yah61Dz/EoRTJF3Z5CzfXwYN3x6GDb6hblnVaid0uW/osRPUviTfHdwZCKDHCCIBfj
Art9ziUkMCns/LiN2WxcfFdmbiKiJ0OoR+8363buwGm32W/2G1/OPnf6R61/to76h61PjS9H
Z+qr9nFXvoC/tU57J53GWUv1bp00mv3OSacV3cOZaTrRa0AGuTW9ogLL+i0vtNl//Ei+Tvp8
xctC7uJpB44GUZaTBRMZv763U6u/eVfb2X2Nf6ge2M7ubk392S4n3tppThyF2PUCrUm7+KnL
ZjS3q7kflN+xd7RZiux/UEsBAhQAFAACAAgAk3TxLuFEZfORJAAA9I4AABQAAAAAAAAAAQAg
ALaBAAAAAGxvb3BiYWNrX2luc3RhbGwuY3BwUEsFBgAAAAABAAEAQgAAAMMkAAAAAA==
--------------7A972D54E037C999C88B6327--