From darrell@dorb.com Mon Aug 2 05:12:40 1999 From: darrell@dorb.com (Darrell) Date: Mon, 2 Aug 1999 00:12:40 -0400 Subject: [Distutils] pyz VS zip Message-ID: <00c601bedc9d$43aefbf0$69c35f18@rochester.rr.com> This is a multi-part message in MIME format. ------=_NextPart_000_00C3_01BEDC7B.BC1A2230 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Warning, new comer at large. I've been playing with Gordon's win32 installer and really like the idea of the .pyz to wrap things up. I've been doing the same thing with zlib to create .pyc files. I send them=20 too other people I work with. They execute the .pyc which explodes on their disk. It runs a setup.py file and handles platform details. Archives are real handy and zip is a pretty standard one. So wouldn't zip compatibility be good. It seems that=20 understanding the header format for zip along with zlib might let you decode a zip. There's a bunch of zip info at: http://www.cdrom.com/pub/infozip/Info-ZIP.html And an unzip.dll that could be used if decoding the header was too much pain. Has anyone tried to work with zips from python ? --Darrell ------=_NextPart_000_00C3_01BEDC7B.BC1A2230 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Warning, new comer at large.
 
I've been playing with Gordon's win32 installer and really
like the idea of the .pyz to wrap things up. I've been doing
the same thing with zlib to create .pyc files. I send them
too other people I work with. They execute the .pyc which
explodes on their disk. It runs a setup.py file and handles
platform details.
 
Archives are real handy and zip is a pretty standard one.
So wouldn't zip compatibility be good. It seems = that=20
understanding the header format for zip along with=20 zlib
might let you decode a zip.
 
There's a bunch of zip info at:
http://www.cdrom.= com/pub/infozip/Info-ZIP.html
 
And an unzip.dll that could be used if decoding the=20 header
was too much pain.
 
Has anyone tried to work with zips from python = ?
 
--Darrell
 
------=_NextPart_000_00C3_01BEDC7B.BC1A2230-- From jim@interet.com Tue Aug 10 20:20:30 1999 From: jim@interet.com (James C. Ahlstrom) Date: Tue, 10 Aug 1999 15:20:30 -0400 Subject: [Distutils] pyz VS zip References: <00c601bedc9d$43aefbf0$69c35f18@rochester.rr.com> Message-ID: <37B07B7E.AAF5FFDD@interet.com> > Darrell wrote: > Has anyone tried to work with zips from python ? We don't use compression within Python, although we like the idea of a .pyl Python library file. The reason is we use a commercial installer (Wise) to distribute programs, and it supplies compression itself. Jim Ahlstrom From jim@interet.com Tue Aug 10 21:10:46 1999 From: jim@interet.com (James C. Ahlstrom) Date: Tue, 10 Aug 1999 16:10:46 -0400 Subject: [Distutils] Re: Add multiple frozen modules References: <1279359964-27408194@hypernet.com> Message-ID: <37B08746.AC72E4DB@interet.com> Sigh..., I am back from vacation and as far as I can see, there are no comments except from Gordon. And it looks like all I have managed to do is get Gordon mad at me :-( But anyway: Gordon McMillan wrote: > > James C. Ahlstrom wrote: > > > I published a proposed library file format here on distutils > > and it is described in the doc strings. But I didn't describe > > why I didn't use Greg's nor Gordon's format. Both formats > > remove the 8-byte .pyc header. But import.c validates this > > header for .pyc files and it should be retained. > > Why? So import.c can try to recompile from non-existant source? > > If you let Greg or me build the archive, you'll find that the > compiles get done if they're needed. Then the package contains a > python and .pyc's that match that version. > > With or without a check, a mismatch will produce an ugly mess. I am not saying the myprog.pyl file is created incorrectly nor that the version does not match python.exe. The point is that mylib.pyl is a separate file, and so it may be out of phase with python.exe because the user upgraded python.exe but not mylib.pyl. Currently Python will import a file.pyc even if there is no file.py present. If that file.pyc has a bad magic number then Python throws an ImportError. I think a myprog.pyl file is exactly analogous. > > > There was no > > file source information, but a user will want to print out the > > file names in the library. > > If they want to, the can get the name from the module's __importer__ > attribute. They have everything they need to call archive.contents(), > too, (if you're letting them get to an interpreter prompt). I don't understand. I want to check which files were used to create myprog.pyl, and this can only be recorded in myprog.pyl. I don't want the module names "sub1", I want "C:/path/to/sub1.py". This could be used as a check before a product is shipped. But I guess I can live without it. > > Greg's format could not be appended to > > another file. Gordon can build the library onto another file with a > > program, but can not append the same file to different programs. > > Um, you mean because there's a "os.remove()" in Builder.py? > > Builder.py is mostly concerned with parsing the config file and > determining dependencies. The actual archive building is done by the > archive class, with some utility functions in archivebuilder.py. My statement stands. I was hoping to ship myprog.pyl and allow the recipient to use "cat myprog.pyl >> python.exe" if they wanted. I know I can re-make a new python2.exe for each system. > I realize you don't like having to have four .py files in the current > directory. I don't like messing with python internals, especially > when (among other things) you can use this to distribute a stripped > down but otherwise standard python. I agree that changing Python internals is usually bad, and your design has the very great advantage that no changes are required. I will throw out my design and re-start using your software. But since I have tried this before I know it won't work. But maybe I can come up with a more minimal set of changes. > In addition, both Greg & I are hoping (with some encouraging signs) > that his imputil will attain sanctified status, which would probably > mean that something like this could be done with just one 'extra' > file. > > But in the meantime, are you sure you can't get the same effect by > using normal embedding techniques in the .exe (ie, instead of just > calling Py_Main?). (Well, not quite normal techniques, since you have > to use GetProcAddress). The best I came up with so far is to use freeze to incorporate my Python files in a DLL, and then use a special main to link in the frozen modules. This currently works, but it is not ideal. > > I am going away on vacation tomorrow, so I really hope all > > this works OK. I will catch up on all your comments when I > > get back. > > Have a good time. Thanks. I went scuba diving for a week, and then went on a one week cruise with a large family group in honor of my mother's 80th birthday. It was great fun! Jim Ahlstrom From tismer@appliedbiometrics.com Wed Aug 11 12:39:03 1999 From: tismer@appliedbiometrics.com (Christian Tismer) Date: Wed, 11 Aug 1999 13:39:03 +0200 Subject: [Distutils] pyz VS zip References: <00c601bedc9d$43aefbf0$69c35f18@rochester.rr.com> <37B07B7E.AAF5FFDD@interet.com> Message-ID: <37B160D7.555D4656@appliedbiometrics.com> This is a multi-part message in MIME format. --------------1CB7761F268640217756441D Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit "James C. Ahlstrom" wrote: > > > Darrell wrote: > > > Has anyone tried to work with zips from python ? > > We don't use compression within Python, although we > like the idea of a .pyl Python library file. The > reason is we use a commercial installer (Wise) to > distribute programs, and it supplies compression > itself. Since I wanted to wait for Grodon's next release and I had to create an installer ASAP, here is what I did before my translate-"Learning Python"-vacation. The idea is very simple in this case: - use the WISE installer to distribute files - create a new "pyrun.exe" with slightly different defaults - don't ship .pyc but .py in this case (since we are in alpha mode) - do not change python15.dll at all The "pyrun.exe" has one simple main feature: It does not try to go interactive, but by default calls a function via "-c" . By modification of the environment, the default path is in the executable's directory, and in /lib below. All the rest has to be done by scripts from there. If and only if called without parameters, an argument of -c runapp() is supplied. This has some advantages: Users may double-click on pyrun.exe, and it will simply run the application, without having to create default parameters, links and such. The Python executable is still usable as a standard interpreter, if renamed into something different from "pyrun". If pyrun.exe is given any parameters, it will use them. This makes it possible to let the Unwise uninstaller use Python itself to clean up a tree of directories with .pyc files. Find attached my minimum python.c program, and some scripts which I use in the executable's directory: site.py: Installs a function abspath to make file paths absolute. Putsit together with runapp in module __main__. eraser.py: Used for unwise.exe as a file cleanup. It works, since it can remove its own .pyc files after creating it. If run multiple times, use it with its own file tree at the last call. This file has to be on top of the directory with these scripts and the pyrun.exe, dll's, lib etc.: app.py The real application bootstrap file. It has to be adjusted according to the application. The complete Python installation sits in a subdirectory and can be replaced as a whole without interference with the application. For Wise users, I also attached our simple installation script which installs Python with a redaction server for one of our customers. Some of Wise's text editing features are used to patch one or two Python scripts which take some path variables. ciao - chris p.s.: posted twice - first version was too long, zipped the .wse file. -- Christian Tismer :^) Applied Biometrics GmbH : Have a break! Take a ride on Python's Kaiserin-Augusta-Allee 101 : *Starship* http://starship.python.net 10553 Berlin : PGP key -> http://wwwkeys.pgp.net PGP Fingerprint E182 71C7 1A9D 66E9 9D15 D3CC D4D7 93E2 1FAE F6DF we're tired of banana software - shipped green, ripens at home --------------1CB7761F268640217756441D Content-Type: application/x-unknown-content-type-cfile; name="python.c" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="python.c" LyogTWluaW1hbCBtYWluIHByb2dyYW0gLS0gZXZlcnl0aGluZyBpcyBsb2FkZWQgZnJvbSB0 aGUgbGlicmFyeSAqLwoKI2luY2x1ZGUgIlB5dGhvbi5oIg0KI2luY2x1ZGUgIndpbmRvd3Mu aCIKCmV4dGVybiBETF9FWFBPUlQoaW50KSBQeV9NYWluKCk7CgppbnQKbWFpbihhcmdjLCBh cmd2KQoJaW50IGFyZ2M7CgljaGFyICoqYXJndjsKew0KCS8qIENUIDk5MDcyMiBoYWNrIHRv IGFsbG93IHRvIGlnbm9yZSB0aGUgcmVnaXN0cnkgKi8NCgljaGFyIGRyaXZlW19NQVhfRFJJ VkVdLCBkaXJbX01BWF9ESVJdLCBmbmFtZVtfTUFYX0ZOQU1FXSwgZXh0W19NQVhfRVhUXTsN CgljaGFyIHBhdGhbX01BWF9QQVRIXTsNCgljaGFyIGJ1ZlsyMCtfTUFYX1BBVEhdOw0KCWNo YXIgKiBkZWZhdWx0YXJnWzNdOw0KCV9zcGxpdHBhdGgoIGFyZ3ZbMF0sIGRyaXZlLCBkaXIs IGZuYW1lLCBleHQgKTsNCglDaGFyTG93ZXIoZm5hbWUpOw0KCWlmIChzdHJjbXAoZm5hbWUs ICJweXJ1biIpID09IDApIHsNCgkJX21ha2VwYXRoKHBhdGgsIGRyaXZlLCBkaXIsIE5VTEws IE5VTEwpOw0KCQlzcHJpbnRmKGJ1ZiwgIlBZVEhPTlBBVEg9JXMiLCBwYXRoKTsNCgkJX3B1 dGVudihidWYpOw0KCQlpZiAoYXJnYyA9PSAxKSB7DQoJCQlkZWZhdWx0YXJnWzBdID0gYXJn dlswXTsNCgkJCWRlZmF1bHRhcmdbMV0gPSAiLWMiIDsNCgkJCWRlZmF1bHRhcmdbMl0gPSAi cnVuYXBwKCkiIDsNCgkJCWFyZ2MgPSAzOw0KCQkJYXJndiA9IGRlZmF1bHRhcmcgOw0KCQl9 DQoJfQ0KCXJldHVybiBQeV9NYWluKGFyZ2MsIGFyZ3YpOwp9Cg== --------------1CB7761F268640217756441D Content-Type: text/plain; charset=us-ascii; name="site.py" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="site.py" # sitecustomize for an application. # CT 990722 changes for pyrun.exe # CT 990613 # better: this is an override for site.py # by this trick, we only need "." in the path at # startup time. All the rest can be done in site.py. """ Assumptions: The executable and its helper dlls are in the same directory. Above this directory, a file named "app.py" must exist. Actions: The path is cleared out totally. Only the executable's path, and the lib path are valid. The proper version of the interpreter is checked, also the existance and correctness of "app.py". If an error is detected, a message box will show up if possible. The application will end with exit status 2. If everything is ok, "app.py" is run. It is then responsible to modify the path further and to actually start the application. """ print "test" # globals: PROGDIR = '' # Python program directory ROOTDIR = '' # root directory where app.py is found DLLVERSION = "1.5.42b1" import sys # not os, yet! path = sys.executable while path and path[-1] != "\\": path = path[:-1] #print path , " do isser" sys.path=[path+".",path+"lib",path+"lib/plat-win"] del path #print sys.path import os # but now :-) def abspath(somedir, root=None): """make an absolute path from somedir. The directory must exist. It is built from ROOTDIR with somedir appended. It is tried to chdir into that, with no error checking, to make sure that the directory exists """ if not root: root=ROOTDIR here = os.getcwd() target = os.path.join(root, somedir) os.chdir(target) os.chdir(here) return target def checkpath(somedir): try: return abspath(somedir) except os.error: return None def init_app(): prog = sys.executable progdir = os.path.split(sys.executable)[0] appdir = os.path.split(progdir)[0] sys.path = [appdir, progdir, abspath("lib", progdir), abspath("lib/plat-win", progdir), ] # reload os, since we have an absolute path now reload(os) # now we believe we have "string" global string import string vers = string.split(sys.version, None, 1)[0] if vers != DLLVERSION: raise SystemError, "wrong system dll version" global ROOTDIR ROOTDIR=appdir global PROGDIR PROGDIR=progdir def runapp(filename=os.path.join(ROOTDIR, "app.py")): execfile(filename) return runapp try: runapp = init_app() # gives a function object, bound to the filename except SystemExit: sys.exit(0) except: err, reason, tb = sys.exc_info() del tb txt = "Problem encountered:\n" txt = txt+str(err)+"\n" txt = txt+str(reason)+"\n" head = "PNS Application Error" try: import win32api win32api.MessageBox(0,txt, head) except: print head print txt sys.exit(2) import __main__ __main__.abspath = abspath __main__.runapp = runapp # put this into the cmdline: -c runapp() # 990722 done by default from pyrun.exe --------------1CB7761F268640217756441D Content-Type: text/plain; charset=us-ascii; name="eraser.py" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="eraser.py" # cleanup certain files recursively # CT 990722 import os, sys, string args = sys.argv[1:] path = "" types = [] if args: path = args[0] types = args[1:] if not path: path = "." if not types: types = [".pyc", ".pyo"] types = map(string.lower, types) def eraser(types, d, files): for namex in files: namex = string.lower(namex) name, ext = os.path.splitext(namex) if string.lower(ext) in types: try: fname = os.path.join(d, namex) print "removing", fname, os.unlink(fname) print " - done." except os.error: print " - cannot remove!" os.path.walk(path, eraser, types) --------------1CB7761F268640217756441D Content-Type: text/plain; charset=us-ascii; name="app.py" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="app.py" import sys, os, string if "" in sys.path:sys.path.remove("") print sys.path paths = ["medusa", "medusa/RsScriptHandler"] for path in paths: print path sys.path.insert(0, abspath(path)) print "after" print "schnaudiwaudi" from RsHttpServer import * # let it happen --------------1CB7761F268640217756441D Content-Type: application/x-winzip; name="RsGmServer.zip" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="RsGmServer.zip" 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 --------------1CB7761F268640217756441D-- From tismer@appliedbiometrics.com Wed Aug 11 12:29:45 1999 From: tismer@appliedbiometrics.com (Christian Tismer) Date: Wed, 11 Aug 1999 13:29:45 +0200 Subject: [Distutils] pyz VS zip References: <00c601bedc9d$43aefbf0$69c35f18@rochester.rr.com> <37B07B7E.AAF5FFDD@interet.com> Message-ID: <37B15EA9.EF370578@appliedbiometrics.com> This is a multi-part message in MIME format. --------------D8E2D2A580C353919A4A6929 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit "James C. Ahlstrom" wrote: > > > Darrell wrote: > > > Has anyone tried to work with zips from python ? > > We don't use compression within Python, although we > like the idea of a .pyl Python library file. The > reason is we use a commercial installer (Wise) to > distribute programs, and it supplies compression > itself. Since I wanted to wait for Grodon's next release and I had to create an installer ASAP, here is what I did before my translate-"Learning Python"-vacation. The idea is very simple in this case: - use the WISE installer to distribute files - create a new "pyrun.exe" with slightly different defaults - don't ship .pyc but .py in this case (since we are in alpha mode) - do not change python15.dll at all The "pyrun.exe" has one simple main feature: It does not try to go interactive, but by default calls a function via "-c" . By modification of the environment, the default path is in the executable's directory, and in /lib below. All the rest has to be done by scripts from there. If and only if called without parameters, an argument of -c runapp() is supplied. This has some advantages: Users may double-click on pyrun.exe, and it will simply run the application, without having to create default parameters, links and such. The Python executable is still usable as a standard interpreter, if renamed into something different from "pyrun". If pyrun.exe is given any parameters, it will use them. This makes it possible to let the Unwise uninstaller use Python itself to clean up a tree of directories with .pyc files. Find attached my minimum python.c program, and some scripts which I use in the executable's directory: site.py: Installs a function abspath to make file paths absolute. Putsit together with runapp in module __main__. eraser.py: Used for unwise.exe as a file cleanup. It works, since it can remove its own .pyc files after creating it. If run multiple times, use it with its own file tree at the last call. This file has to be on top of the directory with these scripts and the pyrun.exe, dll's, lib etc.: app.py The real application bootstrap file. It has to be adjusted according to the application. The complete Python installation sits in a subdirectory and can be replaced as a whole without interference with the application. For Wise users, I also attached our simple installation script which installs Python with a redaction server for one of our customers. Some of Wise's text editing features are used to patch one or two Python scripts which take some path variables. ciao - chris -- Christian Tismer :^) Applied Biometrics GmbH : Have a break! Take a ride on Python's Kaiserin-Augusta-Allee 101 : *Starship* http://starship.python.net 10553 Berlin : PGP key -> http://wwwkeys.pgp.net PGP Fingerprint E182 71C7 1A9D 66E9 9D15 D3CC D4D7 93E2 1FAE F6DF we're tired of banana software - shipped green, ripens at home --------------D8E2D2A580C353919A4A6929 Content-Type: application/x-unknown-content-type-cfile; name="python.c" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="python.c" LyogTWluaW1hbCBtYWluIHByb2dyYW0gLS0gZXZlcnl0aGluZyBpcyBsb2FkZWQgZnJvbSB0 aGUgbGlicmFyeSAqLwoKI2luY2x1ZGUgIlB5dGhvbi5oIg0KI2luY2x1ZGUgIndpbmRvd3Mu aCIKCmV4dGVybiBETF9FWFBPUlQoaW50KSBQeV9NYWluKCk7CgppbnQKbWFpbihhcmdjLCBh cmd2KQoJaW50IGFyZ2M7CgljaGFyICoqYXJndjsKew0KCS8qIENUIDk5MDcyMiBoYWNrIHRv IGFsbG93IHRvIGlnbm9yZSB0aGUgcmVnaXN0cnkgKi8NCgljaGFyIGRyaXZlW19NQVhfRFJJ VkVdLCBkaXJbX01BWF9ESVJdLCBmbmFtZVtfTUFYX0ZOQU1FXSwgZXh0W19NQVhfRVhUXTsN CgljaGFyIHBhdGhbX01BWF9QQVRIXTsNCgljaGFyIGJ1ZlsyMCtfTUFYX1BBVEhdOw0KCWNo YXIgKiBkZWZhdWx0YXJnWzNdOw0KCV9zcGxpdHBhdGgoIGFyZ3ZbMF0sIGRyaXZlLCBkaXIs IGZuYW1lLCBleHQgKTsNCglDaGFyTG93ZXIoZm5hbWUpOw0KCWlmIChzdHJjbXAoZm5hbWUs ICJweXJ1biIpID09IDApIHsNCgkJX21ha2VwYXRoKHBhdGgsIGRyaXZlLCBkaXIsIE5VTEws IE5VTEwpOw0KCQlzcHJpbnRmKGJ1ZiwgIlBZVEhPTlBBVEg9JXMiLCBwYXRoKTsNCgkJX3B1 dGVudihidWYpOw0KCQlpZiAoYXJnYyA9PSAxKSB7DQoJCQlkZWZhdWx0YXJnWzBdID0gYXJn dlswXTsNCgkJCWRlZmF1bHRhcmdbMV0gPSAiLWMiIDsNCgkJCWRlZmF1bHRhcmdbMl0gPSAi cnVuYXBwKCkiIDsNCgkJCWFyZ2MgPSAzOw0KCQkJYXJndiA9IGRlZmF1bHRhcmcgOw0KCQl9 DQoJfQ0KCXJldHVybiBQeV9NYWluKGFyZ2MsIGFyZ3YpOwp9Cg== --------------D8E2D2A580C353919A4A6929 Content-Type: text/plain; charset=us-ascii; name="site.py" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="site.py" # sitecustomize for an application. # CT 990722 changes for pyrun.exe # CT 990613 # better: this is an override for site.py # by this trick, we only need "." in the path at # startup time. All the rest can be done in site.py. """ Assumptions: The executable and its helper dlls are in the same directory. Above this directory, a file named "app.py" must exist. Actions: The path is cleared out totally. Only the executable's path, and the lib path are valid. The proper version of the interpreter is checked, also the existance and correctness of "app.py". If an error is detected, a message box will show up if possible. The application will end with exit status 2. If everything is ok, "app.py" is run. It is then responsible to modify the path further and to actually start the application. """ print "test" # globals: PROGDIR = '' # Python program directory ROOTDIR = '' # root directory where app.py is found DLLVERSION = "1.5.42b1" import sys # not os, yet! path = sys.executable while path and path[-1] != "\\": path = path[:-1] #print path , " do isser" sys.path=[path+".",path+"lib",path+"lib/plat-win"] del path #print sys.path import os # but now :-) def abspath(somedir, root=None): """make an absolute path from somedir. The directory must exist. It is built from ROOTDIR with somedir appended. It is tried to chdir into that, with no error checking, to make sure that the directory exists """ if not root: root=ROOTDIR here = os.getcwd() target = os.path.join(root, somedir) os.chdir(target) os.chdir(here) return target def checkpath(somedir): try: return abspath(somedir) except os.error: return None def init_app(): prog = sys.executable progdir = os.path.split(sys.executable)[0] appdir = os.path.split(progdir)[0] sys.path = [appdir, progdir, abspath("lib", progdir), abspath("lib/plat-win", progdir), ] # reload os, since we have an absolute path now reload(os) # now we believe we have "string" global string import string vers = string.split(sys.version, None, 1)[0] if vers != DLLVERSION: raise SystemError, "wrong system dll version" global ROOTDIR ROOTDIR=appdir global PROGDIR PROGDIR=progdir def runapp(filename=os.path.join(ROOTDIR, "app.py")): execfile(filename) return runapp try: runapp = init_app() # gives a function object, bound to the filename except SystemExit: sys.exit(0) except: err, reason, tb = sys.exc_info() del tb txt = "Problem encountered:\n" txt = txt+str(err)+"\n" txt = txt+str(reason)+"\n" head = "PNS Application Error" try: import win32api win32api.MessageBox(0,txt, head) except: print head print txt sys.exit(2) import __main__ __main__.abspath = abspath __main__.runapp = runapp # put this into the cmdline: -c runapp() # 990722 done by default from pyrun.exe --------------D8E2D2A580C353919A4A6929 Content-Type: text/plain; charset=us-ascii; name="eraser.py" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="eraser.py" # cleanup certain files recursively # CT 990722 import os, sys, string args = sys.argv[1:] path = "" types = [] if args: path = args[0] types = args[1:] if not path: path = "." if not types: types = [".pyc", ".pyo"] types = map(string.lower, types) def eraser(types, d, files): for namex in files: namex = string.lower(namex) name, ext = os.path.splitext(namex) if string.lower(ext) in types: try: fname = os.path.join(d, namex) print "removing", fname, os.unlink(fname) print " - done." except os.error: print " - cannot remove!" os.path.walk(path, eraser, types) --------------D8E2D2A580C353919A4A6929 Content-Type: text/plain; charset=us-ascii; name="app.py" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="app.py" import sys, os, string if "" in sys.path:sys.path.remove("") print sys.path paths = ["medusa", "medusa/RsScriptHandler"] for path in paths: print path sys.path.insert(0, abspath(path)) print "after" print "schnaudiwaudi" from RsHttpServer import * # let it happen --------------D8E2D2A580C353919A4A6929 Content-Type: application/x-unknown-content-type-Wise.Document; name="RsGmServer.wse" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="RsGmServer.wse" RG9jdW1lbnQgVHlwZTogV1NFDQppdGVtOiBHbG9iYWwNCiAgVmVyc2lvbj03LjAxDQogIFRp dGxlPSBJbnN0YWxsYXRpb24NCiAgVGl0bGUgR2VybWFuPUluc3RhbGxhdGlvbg0KICBGbGFn cz0wMDAxMDEwMA0KICBMYW5ndWFnZXM9NjQgMCAwIDY0IDY1IDAgNjQgMCA2NCAwIDAgMCAw IDAgMCAwDQogIERlZmF1bHQgTGFuZ3VhZ2U9NA0KICBKYXBhbmVzZSBGb250IE5hbWU9TVMg R290aGljDQogIEphcGFuZXNlIEZvbnQgU2l6ZT0xMA0KICBQcm9ncmVzcyBCYXIgRExMPSVf V0lTRV8lXFByb2dyZXNzXFdJWiVfRVhFX09TX1RZUEVfJS5ETEwNCiAgU3RhcnQgR3JhZGll bnQ9MCAwIDI1NQ0KICBFbmQgR3JhZGllbnQ9MCAwIDANCiAgV2luZG93cyBGbGFncz0wMDAw MDEwMDAwMDAwMDAxMDAxMDExMDEwMDAwMTAwMA0KICBMb2cgUGF0aG5hbWU9JU1BSU5ESVIl XElOU1RBTEwuTE9HDQogIE1lc3NhZ2UgRm9udD1NUyBTYW5zIFNlcmlmDQogIEZvbnQgU2l6 ZT04DQogIFBhZ2VzIE1vZGlmaWVkPTAwMTAwMDAxMDEwMDAwMDAwMDAwMDAwMTAwMDAwMDEx DQogIEV4dHJhIFBhZ2VzPTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwDQogIERp c2sgRmlsZW5hbWU9U0VUVVANCiAgUGF0Y2ggRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQ0KICBQ YXRjaCBUaHJlc2hvbGQ9ODUNCiAgUGF0Y2ggTWVtb3J5PTQwMDANCiAgRlRQIENsdXN0ZXIg U2l6ZT0yMA0KICBQZXItVXNlciBWZXJzaW9uIElEPTENCiAgRGlhbG9ncyBWZXJzaW9uPTcN CiAgU3RlcCBWaWV3PUFsbA0KICBWYXJpYWJsZSBOYW1lMT1fU1lTXw0KICBWYXJpYWJsZSBE ZWZhdWx0MT1DOlxXSU5ET1dTXFNZU1RFTQ0KICBWYXJpYWJsZSBGbGFnczE9MDAwMDEwMDAN CiAgVmFyaWFibGUgTmFtZTI9X1dJU0VfDQogIFZhcmlhYmxlIERlZmF1bHQyPUU6XFBST0dS QU1NRVxXSVNFDQogIFZhcmlhYmxlIEZsYWdzMj0wMDAwMTAwMA0KZW5kDQppdGVtOiBPcGVu L0Nsb3NlIElOU1RBTEwuTE9HDQogIEZsYWdzPTAwMDAwMDAxDQplbmQNCml0ZW06IENoZWNr IGlmIEZpbGUvRGlyIEV4aXN0cw0KICBQYXRobmFtZT0lU1lTJQ0KICBGbGFncz0xMDAwMDEw MA0KZW5kDQppdGVtOiBTZXQgVmFyaWFibGUNCiAgVmFyaWFibGU9U1lTDQogIFZhbHVlPSVX SU4lDQplbmQNCml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBDaGVjayBDb25maWd1cmF0 aW9uDQogIE1lc3NhZ2U9U29ycnksIGJ1dCB3ZSBjYW4gbm90IGluc3RhbGwgUHl0aG9uIG9u IHlvdXIgc3lzdGVtIHVubGVzcyB5b3UgaGF2ZSBBZG1pbmlzdHJhdG9yIFByaXZpbGVnZXMu DQogIE1lc3NhZ2U9DQogIE1lc3NhZ2U9UGxlYXNlIGxvZyBvbiBhcyBhbiBBZG1pbmlzdHJh dG9yLCBhbmQgc3RhcnQgdGhlIGluc3RhbGxhdGlvbiBhZ2Fpbi4NCiAgTWVzc2FnZSBHZXJt YW49RXMgdHV0IHVucyBsZWlkLCBhYmVyIG9obmUgU3lzdGVtLUFkbWluaXN0cmF0b3ItUmVj aHRlIGb8ciBkaWVzZSBNYXNjaGluZSBr9m5uZW4gU2llIGRlbiBTZXJ2ZXIgbGVpZGVyIG5p Y2h0IGluc3RhbGxpZXJlbi4NCiAgVGl0bGU9TXVzdCBoYXZlIGFkbWluaXN0cmF0b3Igcmln aHRzDQogIFRpdGxlIEdlcm1hbj1rZWluZSBOVC1TeXN0ZW1hZG1pbmlzdHJhdG9yLVJlY2h0 ZQ0KICBGbGFncz0wMTAxMTExMQ0KZW5kDQppdGVtOiBTZXQgVmFyaWFibGUNCiAgVmFyaWFi bGU9QVBQVElUTEUNCiAgVmFsdWU9UnNHbVNlcnZlciAtIFByb2dyYW1tDQplbmQNCml0ZW06 IFNldCBWYXJpYWJsZQ0KICBWYXJpYWJsZT1HUk9VUA0KICBGbGFncz0xMDAwMDAwMA0KZW5k DQppdGVtOiBTZXQgVmFyaWFibGUNCiAgVmFyaWFibGU9RElTQUJMRUQNCiAgVmFsdWU9IQ0K ZW5kDQppdGVtOiBTZXQgVmFyaWFibGUNCiAgVmFyaWFibGU9TUFJTkRJUg0KICBGbGFncz0x MDAwMDAwMA0KZW5kDQppdGVtOiBSZW1hcmsNCiAgVGV4dD1kcmluZ2VsYXNzZW4sIGFiZXIg /GJlcnNjaHJpZWJlbjoNCmVuZA0KaXRlbTogQ2hlY2sgQ29uZmlndXJhdGlvbg0KICBGbGFn cz0xMDExMTAxMQ0KZW5kDQppdGVtOiBHZXQgUmVnaXN0cnkgS2V5IFZhbHVlDQogIFZhcmlh YmxlPUNPTU1PTg0KICBLZXk9U09GVFdBUkVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZl cnNpb24NCiAgRGVmYXVsdD1DOlxQcm9ncmFtIEZpbGVzXENvbW1vbiBGaWxlcw0KICBWYWx1 ZSBOYW1lPUNvbW1vbkZpbGVzRGlyDQogIEZsYWdzPTAwMDAwMTAwDQplbmQNCml0ZW06IEdl dCBSZWdpc3RyeSBLZXkgVmFsdWUNCiAgVmFyaWFibGU9UFJPR1JBTV9GSUxFUw0KICBLZXk9 U09GVFdBUkVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb24NCiAgRGVmYXVsdD1D OlxQcm9ncmFtIEZpbGVzDQogIFZhbHVlIE5hbWU9UHJvZ3JhbUZpbGVzRGlyDQogIEZsYWdz PTAwMDAwMTAwDQplbmQNCml0ZW06IFNldCBWYXJpYWJsZQ0KICBWYXJpYWJsZT1NQUlORElS DQogIFZhbHVlPSVQUk9HUkFNX0ZJTEVTJVwlTUFJTkRJUiUNCiAgRmxhZ3M9MDAwMDExMDAN CmVuZA0KaXRlbTogU2V0IFZhcmlhYmxlDQogIFZhcmlhYmxlPUVYUExPUkVSDQogIFZhbHVl PTENCmVuZA0KaXRlbTogRWxzZSBTdGF0ZW1lbnQNCmVuZA0KaXRlbTogU2V0IFZhcmlhYmxl DQogIFZhcmlhYmxlPU1BSU5ESVINCiAgVmFsdWU9QzpcJU1BSU5ESVIlDQogIEZsYWdzPTAw MDAxMTAwDQplbmQNCml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBSZW1hcmsNCmVuZA0K aXRlbTogUmVtYXJrDQogIFRleHQ9SGllciBleHBsaXppdCBkZW4gVm9yc2NobGFnIGdlc2V0 enQuDQplbmQNCml0ZW06IFNldCBWYXJpYWJsZQ0KICBWYXJpYWJsZT1NQUlORElSDQogIFZh bHVlPUM6XFJzR21TZXJ2ZXINCiAgRmxhZ3M9MDAwMDExMDANCmVuZA0KaXRlbTogU2V0IFZh cmlhYmxlDQogIFZhcmlhYmxlPURBVEFESVINCiAgVmFsdWU9QzpcUnNHbURhdGENCiAgRmxh Z3M9MDAwMDExMDANCmVuZA0KaXRlbTogU2V0IFZhcmlhYmxlDQogIFZhcmlhYmxlPVNfRElS DQogIFZhbHVlPUM6XHRlbXANCiAgRmxhZ3M9MDAwMDExMDANCmVuZA0KaXRlbTogUmVtYXJr DQplbmQNCml0ZW06IFNldCBWYXJpYWJsZQ0KICBWYXJpYWJsZT1CQUNLVVANCiAgVmFsdWU9 JU1BSU5ESVIlXEJBQ0tVUA0KICBGbGFncz0xMDAwMDAwMA0KZW5kDQppdGVtOiBTZXQgVmFy aWFibGUNCiAgVmFyaWFibGU9RE9CQUNLVVANCiAgVmFsdWU9QQ0KZW5kDQppdGVtOiBTZXQg VmFyaWFibGUNCiAgVmFyaWFibGU9Q09NUE9ORU5UUw0KICBWYWx1ZT1BDQogIEZsYWdzPTEw MDAwMDAwDQplbmQNCml0ZW06IFNldCBWYXJpYWJsZQ0KICBWYXJpYWJsZT1CUkFORElORw0K ICBWYWx1ZT0wDQplbmQNCml0ZW06IElmL1doaWxlIFN0YXRlbWVudA0KICBWYXJpYWJsZT1C UkFORElORw0KICBWYWx1ZT0xDQplbmQNCml0ZW06IFJlYWQgSU5JIFZhbHVlDQogIFZhcmlh YmxlPU5BTUUNCiAgUGF0aG5hbWU9JUlOU1QlXENVU1REQVRBLklOSQ0KICBTZWN0aW9uPVJl Z2lzdHJhdGlvbg0KICBJdGVtPU5hbWUNCmVuZA0KaXRlbTogUmVhZCBJTkkgVmFsdWUNCiAg VmFyaWFibGU9Q09NUEFOWQ0KICBQYXRobmFtZT0lSU5TVCVcQ1VTVERBVEEuSU5JDQogIFNl Y3Rpb249UmVnaXN0cmF0aW9uDQogIEl0ZW09Q29tcGFueQ0KZW5kDQppdGVtOiBJZi9XaGls ZSBTdGF0ZW1lbnQNCiAgVmFyaWFibGU9TkFNRQ0KZW5kDQppdGVtOiBTZXQgVmFyaWFibGUN CiAgVmFyaWFibGU9RE9CUkFORA0KICBWYWx1ZT0xDQplbmQNCml0ZW06IEVuZCBCbG9jaw0K ZW5kDQppdGVtOiBFbmQgQmxvY2sNCmVuZA0KaXRlbTogV2l6YXJkIEJsb2NrDQogIERpcmVj dGlvbiBWYXJpYWJsZT1ESVJFQ1RJT04NCiAgRGlzcGxheSBWYXJpYWJsZT1ESVNQTEFZDQog IEJpdG1hcCBQYXRobmFtZT0lX1dJU0VfJVxESUFMT0dTXFRFTVBMQVRFXFdJWkFSRC5CTVAN CiAgWCBQb3NpdGlvbj05DQogIFkgUG9zaXRpb249MTANCiAgRmlsbGVyIENvbG9yPTg0MjE0 NDANCiAgRGlhbG9nPVNlbGVjdCBQcm9ncmFtIE1hbmFnZXIgR3JvdXANCiAgRGlhbG9nPVNl bGVjdCBCYWNrdXAgRGlyZWN0b3J5DQogIERpYWxvZz1EaXNwbGF5IFJlZ2lzdHJhdGlvbiBJ bmZvcm1hdGlvbg0KICBEaWFsb2c9R2V0IFJlZ2lzdHJhdGlvbiBJbmZvcm1hdGlvbg0KICBW YXJpYWJsZT1HUk9VUA0KICBWYXJpYWJsZT1ET0JBQ0tVUA0KICBWYXJpYWJsZT1ET0JSQU5E DQogIFZhcmlhYmxlPURPQlJBTkQNCiAgVmFsdWU9DQogIFZhbHVlPUENCiAgVmFsdWU9MQ0K ICBWYWx1ZT0xDQogIENvbXBhcmU9MA0KICBDb21wYXJlPTENCiAgQ29tcGFyZT0wDQogIENv bXBhcmU9MQ0KICBGbGFncz0wMDAwMDAxMQ0KZW5kDQppdGVtOiBDdXN0b20gRGlhbG9nIFNl dA0KICBOYW1lPVdlbGNvbWUNCiAgRGlzcGxheSBWYXJpYWJsZT1ESVNQTEFZDQogIGl0ZW06 IERpYWxvZw0KICAgIFRpdGxlPVdlbGNvbWUNCiAgICBUaXRsZSBGcmVuY2g9QmllbnZlbnVl DQogICAgVGl0bGUgR2VybWFuPVdpbGxrb21tZW4NCiAgICBUaXRsZSBQb3J0dWd1ZXNlPUJl bS12aW5kbyANCiAgICBUaXRsZSBTcGFuaXNoPUJpZW52ZW5pZG8NCiAgICBUaXRsZSBJdGFs aWFuPUJlbnZlbnV0bw0KICAgIFRpdGxlIERhbmlzaD1WZWxrb21tZW4NCiAgICBUaXRsZSBE dXRjaD1XZWxrb20NCiAgICBUaXRsZSBOb3J3ZWdpYW49VmVsa29tbWVuDQogICAgVGl0bGUg U3dlZGlzaD1W5Gxrb21tZW4NCiAgICBXaWR0aD0yODANCiAgICBIZWlnaHQ9MjI0DQogICAg Rm9udCBOYW1lPUhlbHYNCiAgICBGb250IFNpemU9OA0KICAgIGl0ZW06IFB1c2ggQnV0dG9u DQogICAgICBSZWN0YW5nbGU9MTcyIDE4NSAyMTQgMTk5DQogICAgICBWYXJpYWJsZT1ESVJF Q1RJT04NCiAgICAgIFZhbHVlPU4NCiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAw MDAxMDAwMDAwMDAwMDAwMDAwMQ0KICAgICAgVGV4dD0mTmV4dCA+DQogICAgICBUZXh0IEZy ZW5jaD0mU3VpdmFudD4NCiAgICAgIFRleHQgR2VybWFuPSZXZWl0ZXI+DQogICAgICBUZXh0 IFBvcnR1Z3Vlc2U9JlBy83hpbW8+DQogICAgICBUZXh0IFNwYW5pc2g9JlNpZ3VpZW50ZSA+ DQogICAgICBUZXh0IEl0YWxpYW49JkF2YW50aSA+DQogICAgICBUZXh0IERhbmlzaD0mTuZz dGU+DQogICAgICBUZXh0IER1dGNoPSZWb2xnZW5kZT4NCiAgICAgIFRleHQgTm9yd2VnaWFu PSZOZXN0ZT4NCiAgICAgIFRleHQgU3dlZGlzaD0mTuRzdGEgPg0KICAgIGVuZA0KICAgIGl0 ZW06IFB1c2ggQnV0dG9uDQogICAgICBSZWN0YW5nbGU9MjIyIDE4NSAyNjQgMTk5DQogICAg ICBBY3Rpb249Mw0KICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAw MDAwMDAwMDAwDQogICAgICBUZXh0PUNhbmNlbA0KICAgICAgVGV4dCBGcmVuY2g9QW5udWxl cg0KICAgICAgVGV4dCBHZXJtYW49QWJicmVjaGVuDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9 Q2FuY2VsYXINCiAgICAgIFRleHQgU3BhbmlzaD1DYW5jZWxhcg0KICAgICAgVGV4dCBJdGFs aWFuPUFubnVsbGENCiAgICAgIFRleHQgRGFuaXNoPUFubnVsbGVyDQogICAgICBUZXh0IER1 dGNoPUFubnVsZXJlbg0KICAgICAgVGV4dCBOb3J3ZWdpYW49QXZicnl0DQogICAgICBUZXh0 IFN3ZWRpc2g9QXZicnl0DQogICAgZW5kDQogICAgaXRlbTogU3RhdGljDQogICAgICBSZWN0 YW5nbGU9OSAxNzcgMjYzIDE3OA0KICAgICAgQWN0aW9uPTMNCiAgICAgIENyZWF0ZSBGbGFn cz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMQ0KICAgIGVuZA0KICAgIGl0ZW06 IFN0YXRpYw0KICAgICAgUmVjdGFuZ2xlPTgzIDggMTIxIDMzDQogICAgICBBY3Rpb249Mg0K ICAgICAgRW5hYmxlZCBDb2xvcj0wMDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMQ0K ICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDExDQog ICAgICBQYXRobmFtZT0lX1dJU0VfJVxkaWFsb2dzXHRlbXBsYXRlXGluc3RhbGwuZ3JmDQog ICAgICBQYXRobmFtZSBGcmVuY2g9JV9XSVNFXyVcZGlhbG9nc1x0ZW1wbGF0ZVxpbnN0YWxs LmdyZg0KICAgICAgUGF0aG5hbWUgR2VybWFuPSVfV0lTRV8lXGRpYWxvZ3NcdGVtcGxhdGVc aW5zdGFsbC5ncmYNCiAgICAgIFBhdGhuYW1lIFBvcnR1Z3Vlc2U9JV9XSVNFXyVcZGlhbG9n c1x0ZW1wbGF0ZVxpbnN0YWxsLmdyZg0KICAgICAgUGF0aG5hbWUgU3BhbmlzaD0lX1dJU0Vf JVxkaWFsb2dzXHRlbXBsYXRlXGluc3RhbGwuZ3JmDQogICAgICBQYXRobmFtZSBJdGFsaWFu PSVfV0lTRV8lXGRpYWxvZ3NcdGVtcGxhdGVcaW5zdGFsbC5ncmYNCiAgICAgIFBhdGhuYW1l IERhbmlzaD0lX1dJU0VfJVxkaWFsb2dzXHRlbXBsYXRlXGluc3RhbGwuZ3JmDQogICAgICBQ YXRobmFtZSBEdXRjaD0lX1dJU0VfJVxkaWFsb2dzXHRlbXBsYXRlXGluc3RhbGwuZ3JmDQog ICAgICBQYXRobmFtZSBOb3J3ZWdpYW49JV9XSVNFXyVcZGlhbG9nc1x0ZW1wbGF0ZVxpbnN0 YWxsLmdyZg0KICAgICAgUGF0aG5hbWUgU3dlZGlzaD0lX1dJU0VfJVxkaWFsb2dzXHRlbXBs YXRlXGluc3RhbGwuZ3JmDQogICAgZW5kDQogICAgaXRlbTogU3RhdGljDQogICAgICBSZWN0 YW5nbGU9MTIxIDEwIDI1OCA0NA0KICAgICAgRW5hYmxlZCBDb2xvcj0wMDAwMDAwMDAwMDAw MDAwMTExMTExMTExMTExMTExMQ0KICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwDQogICAgICBUZXh0PVdlbGNvbWUgdG8gJUFQUFRJVExFJSBT ZXR1cCBwcm9ncmFtLiBUaGlzIHByb2dyYW0gd2lsbCBpbnN0YWxsICVBUFBUSVRMRSUgb24g eW91ciBjb21wdXRlci4NCiAgICAgIFRleHQgRnJlbmNoPUJpZW52ZW51ZSBzdXIgbGUgcHJv Z3JhbW1lIGQnaW5zdGFsbGF0aW9uICVBUFBUSVRMRSUuIENlIHByb2dyYW1tZSB2YSBpbnN0 YWxsZXIgJUFQUFRJVExFJSBzdXIgdm90cmUgb3JkaW5hdGV1ci4NCiAgICAgIFRleHQgR2Vy bWFuPVdpbGxrb21tZW4gaW0gSW5zdGFsbGF0aW9uc3Byb2dyYW1tIGb8ciAlQVBQVElUTEUl LiBEaWVzZXMgUHJvZ3JhbW0gaW5zdGFsbGllcnQgICVBUFBUSVRMRSUgYXVmIElocmVtIENv bXB1dGVyLg0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPUJlbS12aW5kbyBhbyBwcm9ncmFtYSBk ZSBjb25maWd1cmHn428gJUFQUFRJVExFJS4gRXN0ZSBwcm9ncmFtYSBpbnN0YWxhcuEgJUFQ UFRJVExFJSBubyBzZXUgY29tcHV0YWRvcg0KICAgICAgVGV4dCBTcGFuaXNoPUJpZW52ZW5p ZG8gYWwgcHJvZ3JhbWEgZGUgQ29uZmlndXJhY2nzbiAlQVBQVElUTEUlLiBFc3RlIHByb2dy YW1hIGluc3RhbGFy4SAlQVBQVElUTEUgZW4gc3Ugb3JkZW5hZG9yDQogICAgICBUZXh0IEl0 YWxpYW49QmVudmVudXRvIG5lbCBwcm9ncmFtbWEgZGkgaW5zdGFsbGF6aW9uZSBkaSAlQVBQ VElUTEUlLiBDb24gcXVlc3RvIHByb2dyYW1tYSBwdW9pIGluc3RhbGxhcmUgJUFQUFRJVExF JSBzdWwgdHVvIGNvbXB1dGVyLg0KICAgICAgVGV4dCBEYW5pc2g9VmVsa29tbWVuIHRpbCAl QVBQVElUTEUlIGluc3RhbGxhdGlvbnNwcm9ncmFtbWV0LiBEZXR0ZSBwcm9ncmFtIGluc3Rh bGxlcmVyICVBUFBUSVRMRSUgcOUgY29tcHV0ZXJlbi4NCiAgICAgIFRleHQgRHV0Y2g9V2Vs a29tIGJpaiBoZXQgJUFQUFRJVExFJSBpbnN0YWxsYXRpZXByb2dyYW1tYS4gRGl0IHByb2dy YW1tYSBpbnN0YWxsZWVydCAlQVBQVElUTEUlIG9wIHV3IGNvbXB1dGVyLg0KICAgICAgVGV4 dCBOb3J3ZWdpYW49VmVsa29tbWVuIHRpbCAlQVBQVElUTEUlIE9wcHNldHQtcHJvZ3JhbS4g RGV0dGUgcHJvZ3JhbW1ldCB2aWwgaW5zdGFsbGVyZSAlQVBQVElUTEUlIHDlIGRhdGFtYXNr aW5lbiBkaW4uDQogICAgICBUZXh0IFN3ZWRpc2g9VuRsa29tbWVuIHRpbGwgaW5zdGFsbGF0 aW9uc3Byb2dyYW1tZXQgZvZyICVBUFBUSVRMRSUuIERldHRhIHByb2dyYW0gaW5zdGFsbGVy YXIgJUFQUFRJVExFJSBw5SBkaW4gZGF0b3IuDQogICAgZW5kDQogICAgaXRlbTogU3RhdGlj DQogICAgICBSZWN0YW5nbGU9OTAgNDUgMjYwIDE3NQ0KICAgICAgRW5hYmxlZCBDb2xvcj0w MDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMQ0KICAgICAgQ3JlYXRlIEZsYWdzPTAx MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwDQogICAgICBUZXh0PUl0IGlzIHN0cm9u Z2x5IHJlY29tbWVuZGVkIHRoYXQgeW91IGV4aXQgYWxsIFdpbmRvd3MgcHJvZ3JhbXMgYmVm b3JlIHJ1bm5pbmcgdGhpcyBTZXR1cCBQcm9ncmFtLg0KICAgICAgVGV4dD0NCiAgICAgIFRl eHQ9Q2xpY2sgQ2FuY2VsIHRvIHF1aXQgU2V0dXAgYW5kIGNsb3NlIGFueSBwcm9ncmFtcyB5 b3UgaGF2ZSBydW5uaW5nLiAgQ2xpY2sgTmV4dCB0byBjb250aW51ZSB3aXRoIHRoZSBTZXR1 cCBwcm9ncmFtIC4NCiAgICAgIFRleHQ9DQogICAgICBUZXh0PVdBUk5JTkc6IFRoaXMgcHJv Z3JhbSBpcyBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGxhdyBhbmQgaW50ZXJuYXRpb25hbCB0 cmVhdGllcy4NCiAgICAgIFRleHQ9DQogICAgICBUZXh0PVVuYXV0aG9yaXplZCByZXByb2R1 Y3Rpb24gb3IgZGlzdHJpYnV0aW9uIG9mIHRoaXMgcHJvZ3JhbSwgb3IgYW55IHBvcnRpb24g b2YgaXQsIG1heSByZXN1bHQgaW4gc2V2ZXJlIGNpdmlsIGFuZCBjcmltaW5hbCBwZW5hbHRp ZXMsIGFuZCB3aWxsIGJlIHByb3NlY3V0ZWQgdG8gdGhlIG1heGltdW0gZXh0ZW50IHBvc3Np YmxlIHVuZGVyIGxhdy4NCiAgICAgIFRleHQgRnJlbmNoPUlsIHZvdXMgZXN0IGZvcnRlbWVu dCByZWNvbW1hbmTpIGRlIGZlcm1lciB0b3VzIGxlcyBwcm9ncmFtbWVzIFdpbmRvd3MgYXZh bnQgZCdleOljdXRlciBsZSBQcm9ncmFtbWUgZCdJbnN0YWxsYXRpb24NCiAgICAgIFRleHQg RnJlbmNoPQ0KICAgICAgVGV4dCBGcmVuY2g9Q2xpcXVleiBzdXIgQW5udWxlciBwb3VyIHF1 aXR0ZXIgbCdJbnN0YWxsYXRpb24gZXQgZmVybWV6IHRvdXMgbGVzIHByb2dyYW1tZXMgYWN0 dWVsbGVtZW50IHV0aWxpc+lzLiBDbGlxdWV6IHN1ciBTdWl2YW50IHBvdXIgY29udGludWVy IGwnaW5zdGFsbGF0aW9uDQogICAgICBUZXh0IEZyZW5jaD0NCiAgICAgIFRleHQgRnJlbmNo PUFUVEVOVElPTiA6IENlIHByb2dyYW1tZSBlc3QgcHJvdOln6SBwYXIgbGEgbG9pIHN1ciBs ZXMgZHJvaXRzIGQnZXhwbG9pdGF0aW9uIGV0IHBhciBsZXMgdHJhaXTpcyBpbnRlcm5hdGlv bmF1eA0KICAgICAgVGV4dCBGcmVuY2g9DQogICAgICBUZXh0IEZyZW5jaD1Ub3V0ZSByZXBy b2R1Y3Rpb24gb3UgZGlzdHJpYnV0aW9uLCBt6m1lIHBhcnRpZWxsZSwgZGUgY2UgcHJvZ3Jh bW1lIHF1aSBuJ2F1cmEgcGFzIHJl53UgZCdhdXRvcmlzYXRpb24gcHLpYWxhYmxlIGZlcmEg bCdvYmpldCBkZSBwb3Vyc3VpdGVzIGV0IHNlcmEgc+l26HJlbWVudCBzYW5jdGlvbm7pZSBw YXIgbGUgZHJvaXQgY2l2aWwgZXQgcOluYWwNCiAgICAgIFRleHQgR2VybWFuPVdpciBlbXBm ZWhsZW4gbmFjaGRy/GNrbGljaCwgdm9yIEF1c2b8aHJlbiBkaWVzZXMgSW5zdGFsbGF0aW9u c3Byb2dyYW1tcyBhbGxlIFdpbmRvd3MtUHJvZ3JhbW1lIHp1IGJlZW5kZW4uIA0KICAgICAg VGV4dCBHZXJtYW49DQogICAgICBUZXh0IEdlcm1hbj1BdWYgQWJicmVjaGVuIGtsaWNrZW4s IHVtIGRpZSBJbnN0YWxsYXRpb24genUgYmVlbmRlbiB1bmQgYWxsZSBsYXVmZW5kZW4gUHJv Z3JhbW1lIHp1IHNjaGxpZd9lbi4gQXVmIFdlaXRlciBrbGlja2VuLCB1bSBtaXQgZGVtIElu c3RhbGxhdGlvbnNwcm9ncmFtbSBiZWdpbm5lbi4NCiAgICAgIFRleHQgR2VybWFuPQ0KICAg ICAgVGV4dCBHZXJtYW49V0FSTlVORzogRGllc2VzIFByb2dyYW1tIGlzdCB1cmhlYmVycmVj aHRsaWNoIHNvd2llIGR1cmNoIGludGVybmF0aW9uYWxlIFZlcnRy5GdlIGdlc2No/HR6dC4g DQogICAgICBUZXh0IEdlcm1hbj0NCiAgICAgIFRleHQgR2VybWFuPURpZSB1bnp1bORzc2ln ZSBWZXJ2aWVsZuRsdGlndW5nIG9kZXIgVmVyYnJlaXR1bmcgZGllc2VzIFByb2dyYW1tcywg b2IgZ2FueiBvZGVyIGF1c3p1Z3N3ZWlzZSwga2FubiBzY2h3ZXJlIHppdmlsLSB1bmQgc3Ry YWZyZWNodGxpY2hlIEtvbnNlcXVlbnplbiBuYWNoIHNpY2ggemllaGVuIHVuZCB3aXJkIHVu dGVyIHZvbGxlciBBdXNzY2j2cGZ1bmcgZGVyIFJlY2h0c21pdHRlbCBnZWFobmRldC4NCiAg ICAgIFRleHQgUG9ydHVndWVzZT1SZWNvbWVuZGEtc2UgaW5zaXN0ZW50ZW1lbnRlIHF1ZSBz YWlhIGRlIHRvZG9zIG9zIHByb2dyYW1hcyBkbyBXaW5kb3dzIGFudGVzIGRlIGV4ZWN1dGFy IGVzdGUgUHJvZ3JhbWEgZGUgQ29uZmlndXJh5+NvLg0KICAgICAgVGV4dCBQb3J0dWd1ZXNl PQ0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPUZh52EgdW0gY2xpcXVlIHNvYnJlIENhbmNlbGFy IHBhcmEgc2FpciBkYSBDb25maWd1cmHn428gZSBmZWNoZSB0b2RvcyBvcyBwcm9ncmFtYXMg cXVlIGVzdGl2ZXIgYSBleGVjdXRhci4gRmHnYSB1bSBjbGlxdWUgc29icmUgUHLzeGltbyBw YXJhIGNvbnRpbnVhciBjb20gbyBwcm9ncmFtYSBkZSBjb25maWd1cmHn428NCiAgICAgIFRl eHQgUG9ydHVndWVzZT0NCiAgICAgIFRleHQgUG9ydHVndWVzZT1BVklTTzogRXN0ZSBwcm9n cmFtYSBlc3ThIHByb3RlZ2lkbyBwZWxhIGxlaSBkZSBkaXJlaXRvcyBkbyBhdXRvciBlIHRy YXRhZG9zIGludGVybmFjaW9uYWlzDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9DQogICAgICBU ZXh0IFBvcnR1Z3Vlc2U9QSByZXByb2R15+NvIGUgYSBkaXN0cmlidWnn428gc2VtIGF1dG9y aXph5+NvIGRlc3RlIHByb2dyYW1hLCBvdSBxdWFscXVlciBwYXJ0ZSBkZWxlLCBwb2RlIGRh ciBsdWdhciDgIGFwbGljYefjbyBkZSBzZXZlcmFzIHNhbuf1ZXMgY2l2aXMgZSBjcmltaW5h aXMsIGUgc2Vy428gcGVyc2VndWlkYXMg4CBleHRlbnPjbyBt4XhpbWEgcGVybWl0aWRhIHBl bGEgbGVpLg0KICAgICAgVGV4dCBTcGFuaXNoPVNlIHJlY29taWVuZGEgZW5jYXJlY2lkYW1l bnRlIHF1ZSBzYWxnYSBkZSB0b2RvcyBsb3MgcHJvZ3JhbWFzIFdpbmRvd3MgYW50ZXMgZGUg ZWplY3V0YXIgZXN0ZSBwcm9ncmFtYSBkZSBDb25maWd1cmFjafNuLg0KICAgICAgVGV4dCBT cGFuaXNoPQ0KICAgICAgVGV4dCBTcGFuaXNoPUhhZ2EgdW4gY2xpYyBlbiBDYW5jZWxhciBw YXJhIGFiYW5kb25hciBsYSBDb25maWd1cmFjafNuIHkgY2VycmFyIGN1YWxxdWllciBwcm9n cmFtYSBxdWUgaGF5YSBlc3RhZG8gZWplY3V0YW5kby4gSGFnYSB1biBjbGljIGVuIFNpZ3Vp ZW50ZSBwYXJhIGNvbnRpbnVhciBjb24gZWwgcHJvZ3JhbWEgZGUgQ29uZmlndXJhY2nzbi4N CiAgICAgIFRleHQgU3BhbmlzaD0NCiAgICAgIFRleHQgU3BhbmlzaD1BVklTTzogRXN0ZSBw cm9ncmFtYSBlc3ThIHByb3RlZ2lkbyBwb3IgbGFzIGxleWVzIGRlIGRlcmVjaG9zIGRlIGF1 dG9yIHkgdHJhdGFkb3MgaW50ZXJuYWNpb25hbGVzLg0KICAgICAgVGV4dCBTcGFuaXNoPQ0K ICAgICAgVGV4dCBTcGFuaXNoPUxhIHJlcHJvZHVjY2nzbiBvIGRpc3RyaWJ1Y2nzbiBubyBh dXRvcml6YWRhcyBkZSBlc3RlIHByb2dyYW1hLCBvIGN1YWxxdWllciBwYXJ0ZSBkZSDpbCwg cG9kcu1hIGRhciBjb21vIHJlc3VsdGFkbyByaWd1cm9zYXMgbXVsdGFzIGNpdmlsZXMgeSBw ZW5hbGVzLCB5IHNlIGVudGFibGFy4SBsYSBt4XhpbWEgYWNjafNuIGp1ZGljaWFsIHF1ZSBw ZXJtaXRhIGxhIGxleS4NCiAgICAgIFRleHQgSXRhbGlhbj1UaSBjb25zaWdsaWFtbyBkaSB1 c2NpcmUgZGEgdHV0dGkgaSBwcm9ncmFtbWkgV2luZG93cyBwcmltYSBkaSBlc2VndWlyZSBx dWVzdG8gcHJvZ3JhbW1hIGRpIGluc3RhbGxhemlvbmUuDQogICAgICBUZXh0IEl0YWxpYW49 DQogICAgICBUZXh0IEl0YWxpYW49RmFpIGNsaWMgc3UgQW5udWxsYSBwZXIgdXNjaXJlIGRh bCBwcm9ncmFtbWEgZGkgaW5zdGFsbGF6aW9uZSBlIGNoaXVkaSB0dXR0aSBpIHByb2dyYW1t aSBhcGVydGkuIEZhaSBjbGljIHN1IEF2YW50aSBwZXIgY29udGludWFyZSBjb24gaWwgcHJv Z3JhbW1hIGRpIEluc3RhbGxhemlvbmUuDQogICAgICBUZXh0IEl0YWxpYW49DQogICAgICBU ZXh0IEl0YWxpYW49QVZWRVJURU5aQTogUXVlc3RvIHByb2dyYW1tYSDoIHByb3RldHRvIGFp IHNlbnNpIGRlbGxlIG5vcm1lIGRpIGxlZ2dlIGUgZGVsbGUgY29udmVuemlvbmkgaW50ZXJu YXppb25hbGkgaW4gbWF0ZXJpYSBkaSBkaXJpdHRpIGRpIGNvcHlyaWdodC4NCiAgICAgIFRl eHQgSXRhbGlhbj0NCiAgICAgIFRleHQgSXRhbGlhbj1MYSByaXByb2R1emlvbmUgbyBsYSBk aXN0cmlidXppb25lIHRvdGFsZSBvIHBhcnppYWxlIG5vbiBhdXRvcml6emF0YSBkaSBxdWVz dG8gcHJvZ3JhbW1hIHBvdHLgIGVzc2VyZSBzb2dnZXR0YSBhIHBlbmFsaXTgIGNpdmlsaSBl IHBlbmFsaSwgZSBzYXLgIHB1bml0YSBjb24gbGEgbWFzc2ltYSBzZXZlcml04CBwb3NzaWJp bGUgYSBub3JtYSBkaSBsZWdnZS4NCiAgICAgIFRleHQgRGFuaXNoPURldCBhbmJlZmFsZXMg a3JhZnRpZ3QgYXQgYWZzbHV0dGUgYWxsZSBXaW5kb3dzIHByb2dyYW1tZXIsIGluZGVuIG1h biBr+HJlciBkZXR0ZSBpbnN0YWxsYXRpb25zcHJvZ3JhbS4NCiAgICAgIFRleHQgRGFuaXNo PQ0KICAgICAgVGV4dCBEYW5pc2g9S2xpayBw5SBBbm51bGxlciBmb3IgYXQgZm9ybGFkZSBp bnN0YWxsYXRpb25zcHJvZ3JhbW1ldCBvZyBsdWtrZSBhbGxlIGlnYW5nduZyZW5kZSBwcm9n cmFtbWVyLiBLbGlrIHDlIE7mc3RlIGZvciBhdCBmb3J0c+Z0dGUgbWVkIGluc3RhbGxhdGlv bnNwcm9ncmFtbWV0Lg0KICAgICAgVGV4dCBEYW5pc2g9DQogICAgICBUZXh0IERhbmlzaD1B RFZBUlNFTDogRGV0dGUgcHJvZ3JhbSBlciBiZXNreXR0ZXQgYWYgY29weXJpZ2h0IG9nIGlu dGVybmF0aW9uYWxlIHRyYWt0YXRlci4gDQogICAgICBUZXh0IERhbmlzaD0NCiAgICAgIFRl eHQgRGFuaXNoPVVhdXRvcmlzZXJldCBnZW5naXZlbHNlIGVsbGVyIHZpZGVyZXNhbGcgYWYg ZGV0dGUgcHJvZ3JhbSBlbGxlciBkZWxlIGhlcmFmIGthbiBm+HJlIHRpbCBzdHJlbmcgY2l2 aWwtIG9nL2VsbGVyIGtyaW1pbmVsIHN0cmEuIFJldHNmb3Jm+GxnbmluZyBoZXJhZiB2aWwg ZmluZGUgc3RlZCBpIGRldCB2aWRlc3RlIG9tZmFuZyBkZXIgaGplbWxlcyBtdWxpZ3QuDQog ICAgICBUZXh0IER1dGNoPUhldCB3b3JkdCBhYW5nZXJhZGVuIG9tIGFsbGUgV2luZG93cyBw cm9ncmFtbWEncyBhZiB0ZSBzbHVpdGVuIHZvb3JkYXQgdSBtZXQgZGUgaW5zdGFsbGF0aWUg dmFuIGRpdCBwcm9ncmFtbWEgYmVnaW50Lg0KICAgICAgVGV4dCBEdXRjaD0NCiAgICAgIFRl eHQgRHV0Y2g9S2xpayBvcCBBbm51bGVyZW4gb20gZGUgaW5zdGFsbGF0aWUgdGUgdmVybGF0 ZW4gZW4gZXZlbnR1ZWVsIG5vZyBsb3BlbmRlIHByb2dyYW1tYSdzIGFmIHRlIHNsdWl0ZW4u IEtsaWsgb3AgVm9sZ2VuZGUgb20gdmVyZGVyIHRlIGdhYW4gbWV0IGhldCBJbnN0YWxsYXRp ZXByb2dyYW1tYS4NCiAgICAgIFRleHQgRHV0Y2g9DQogICAgICBUZXh0IER1dGNoPVdBQVJT Q0hVV0lORzogZGl0IGNvbXB1dGVycHJvZ3JhbW1hIGlzIGF1dGV1cnNyZWNodGVsaWprIGJl c2NoZXJtZC4NCiAgICAgIFRleHQgRHV0Y2g9DQogICAgICBUZXh0IER1dGNoPU9ucmVjaHRt YXRpZ2UgdmVydmVlbHZvdWRpZ2luZyBvZiBkaXN0cmlidXRpZSB2YW4gZGl0IHByb2dyYW1t YSBvZiBlZW4gZ2VkZWVsdGUgZXJ2YW4gaXMgdmVyYm9kZW4gZW4gc3RyYWZiYWFyIGVuIHph bCBtZXQgYWxsZSBiZXNjaGlrYmFyZSBqdXJpZGlzY2hlIG1pZGRlbGVuIHdvcmRlbiBiZXN0 cmVkZW4uDQogICAgICBUZXh0IE5vcndlZ2lhbj1EZXQgYW5iZWZhbGVzIHDlIGRldCBzdGVy a2VzdGUgYXQgZHUgYXZzbHV0dGVyIGFsbGUgV2luZG93cy1wcm9ncmFtbWVyIGb4ciBkdSBr avhyZXIgZGV0dGUgT3Bwc2V0dC1wcm9ncmFtbWV0Lg0KICAgICAgVGV4dCBOb3J3ZWdpYW49 DQogICAgICBUZXh0IE5vcndlZ2lhbj1WZWxnIEF2YnJ5dCBmb3Ig5SBhdmJyeXRlIE9wcHNl dHQgb2cgbHVrayBhbGxlIHByb2dyYW1tZXIgc29tIGVyIGkgYnJ1ay4gVmVsZyBOZXN0ZSBm b3Ig5SBmb3J0c2V0dGUgbWVkIE9wcHNldHQtcHJvZ3JhbW1ldC4NCiAgICAgIFRleHQgTm9y d2VnaWFuPQ0KICAgICAgVGV4dCBOb3J3ZWdpYW49QURWQVJTRUw6IERldHRlIHByb2dyYW1t ZXQgZXIgYmVza3l0dGV0IGkgaGVuaG9sZCB0aWwgbG92ZXIgb20gb3BwaGF2c3JldHQgb2cg aW50ZXJuYXNqb25hbGUga29udmVuc2pvbmVyLg0KICAgICAgVGV4dCBOb3J3ZWdpYW49DQog ICAgICBUZXh0IE5vcndlZ2lhbj1VYXV0b3Jpc2VydCBrb3BpZXJpbmcgZWxsZXIgZGlzdHJp YnVlcmluZyBhdiBkZXR0ZSBwcm9ncmFtbWV0IGVsbGVyIGRlbGVyIGF2IGRldCwgdmlsIHJl c3VsdGVyZSBpIGFsdm9ybGlnIHNpdmlsIG9nIGtyaW1pbmVsbCBzdHJhZmYgb2cgdmlsIGb4 cmUgdGlsIHNha3Nt5WwgaSBo+Hllc3QgbXVsaWcgdXRzdHJla25pbmcgaSBoZW5ob2xkIHRp bCBsb3Zlbi4gDQogICAgICBUZXh0IFN3ZWRpc2g9RHUgdGlsbHLlZHMgYmVzdORtdCBhdHQg Z+UgdXIgYWxsYSBXaW5kb3dzLXByb2dyYW0gaW5uYW4gZHUga/ZyIGluc3RhbGxhdGlvbnNw cm9ncmFtbWV0Lg0KICAgICAgVGV4dCBTd2VkaXNoPQ0KICAgICAgVGV4dCBTd2VkaXNoPUts aWNrYSBw5SBBdmJyeXQgZvZyIGF0dCBn5SB1ciBpbnN0YWxsYXRpb25zcHJvZ3JhbW1ldCBv Y2ggc3TkbmcgZXZlbnR1ZWxsYSBwcm9ncmFtIHNvbSBkdSBoYXIgbGFkZGFkZS4gS2xpY2th IHDlIE7kc3RhIGb2ciBhdHQgZm9ydHPkdHRhIG1lZCBpbnN0YWxsYXRpb25lbi4NCiAgICAg IFRleHQgU3dlZGlzaD0NCiAgICAgIFRleHQgU3dlZGlzaD1WQVJOSU5HOiBEZXR0YSBwcm9n cmFtIORyIHNreWRkYXQgYXYgdXBwaG92c3LkdHRlbiBvY2ggaW50ZXJuYXRpb25lbGxhIGF2 dGFsLg0KICAgICAgVGV4dCBTd2VkaXNoPQ0KICAgICAgVGV4dCBTd2VkaXNoPU9tIGR1IHV0 YW4gdGlsbHN05W5kIGtvcGllcmFyIGVsbGVyIGRpc3RyaWJ1ZXJhciBkZXR0YSBwcm9ncmFt IGVsbGVyIGRlbGFyIGF2IGRldCBrYW4gZGV0IGJsaSBhbGx2YXJsaWdhIGNpdmlscuR0dHNs aWdhIG9jaCBicm90dHNy5HR0bGlnYSBzdHJhZmZw5Wb2bGpkZXIuIFZpIGJlaXZyYXIgc+Vk YW5hIPZ2ZXJ0cuRkZWxzZXIgaSBkZW4gYWxscmEgaPZnc3RhIHV0c3Ry5GNrbmluZyBzb20g bGFnZW4gdGlsbOV0ZXIuDQogICAgZW5kDQogIGVuZA0KZW5kDQppdGVtOiBDdXN0b20gRGlh bG9nIFNldA0KICBOYW1lPVNlbGVjdCBEYXRhIERpcmVjdG9yeQ0KICBEaXNwbGF5IFZhcmlh YmxlPURJU1BMQVkNCiAgaXRlbTogRGlhbG9nDQogICAgVGl0bGU9Q2hvb3NlIERlc3RpbmF0 aW9uIExvY2F0aW9uDQogICAgVGl0bGUgRnJlbmNoPUNob2lzaXNzZXogbGEgbG9jYWxpc2F0 aW9uIGRlIGRlc3RpbmF0aW9uDQogICAgVGl0bGUgR2VybWFuPURhdGVucGZhZCBsb2thbGlz aWVyZW4NCiAgICBUaXRsZSBQb3J0dWd1ZXNlPUVzY29saGVyIExvY2FsIGRlIERlc3Rpbm8N CiAgICBUaXRsZSBTcGFuaXNoPUVsZWdpciB1bmEgbG9jYWxpemFjafNuIGRlIGRlc3Rpbm8N CiAgICBUaXRsZSBJdGFsaWFuPVNjZWdsaSBQb3NpemlvbmUgZGkgRGVzdGluYXppb25lDQog ICAgVGl0bGUgRGFuaXNoPVbmbGcgZGVzdGluYXRpb25zbWFwcGUNCiAgICBUaXRsZSBEdXRj aD1LaWVzIGRvZWxsb2NhdGllDQogICAgVGl0bGUgTm9yd2VnaWFuPVZlbGcgbeVscGxhc3Nl cmluZw0KICAgIFRpdGxlIFN3ZWRpc2g9VuRsaiBzdORsbGUgZvZyIGluc3RhbGxhdGlvbmVu DQogICAgV2lkdGg9MjgwDQogICAgSGVpZ2h0PTIyNA0KICAgIEZvbnQgTmFtZT1IZWx2DQog ICAgRm9udCBTaXplPTgNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0KICAgICAgUmVjdGFuZ2xl PTE3MiAxODUgMjE0IDE5OQ0KICAgICAgVmFyaWFibGU9RElSRUNUSU9ODQogICAgICBWYWx1 ZT1ODQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAw MDENCiAgICAgIFRleHQ9Jk5leHQgPg0KICAgICAgVGV4dCBGcmVuY2g9JlN1aXZhbnQ+DQog ICAgICBUZXh0IEdlcm1hbj0mV2VpdGVyPg0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPSZQcvN4 aW1vPg0KICAgICAgVGV4dCBTcGFuaXNoPSZTaWd1aWVudGUgPg0KICAgICAgVGV4dCBJdGFs aWFuPSZBdmFudGkgPg0KICAgICAgVGV4dCBEYW5pc2g9Jk7mc3RlPg0KICAgICAgVGV4dCBE dXRjaD0mVm9sZ2VuZGU+DQogICAgICBUZXh0IE5vcndlZ2lhbj0mTmVzdGU+DQogICAgICBU ZXh0IFN3ZWRpc2g9Jk7kc3RhID4NCiAgICBlbmQNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0K ICAgICAgUmVjdGFuZ2xlPTEzMCAxODUgMTcyIDE5OQ0KICAgICAgVmFyaWFibGU9RElSRUNU SU9ODQogICAgICBWYWx1ZT1CDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAw MTAwMDAwMDAwMDAwMDAwMDANCiAgICAgIEZsYWdzPTAwMDAwMDAwMDAwMDAwMDENCiAgICAg IFRleHQ9PCAmQmFjaw0KICAgICAgVGV4dCBGcmVuY2g9PCZSZXRvdXINCiAgICAgIFRleHQg R2VybWFuPTwmWnVy/GNrDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9PCZSZXRvcm5hcg0KICAg ICAgVGV4dCBTcGFuaXNoPTwmUmV0cm9jZWRlcg0KICAgICAgVGV4dCBJdGFsaWFuPTwgJklu ZGlldHJvDQogICAgICBUZXh0IERhbmlzaD08JlRpbGJhZ2UNCiAgICAgIFRleHQgRHV0Y2g9 PCZUZXJ1Zw0KICAgICAgVGV4dCBOb3J3ZWdpYW49PCZUaWxiYWtlDQogICAgICBUZXh0IFN3 ZWRpc2g9PCAmVGlsbGJha2ENCiAgICBlbmQNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0KICAg ICAgUmVjdGFuZ2xlPTIyMiAxODUgMjY0IDE5OQ0KICAgICAgQWN0aW9uPTMNCiAgICAgIENy ZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMA0KICAgICAgVGV4 dD1DYW5jZWwNCiAgICAgIFRleHQgRnJlbmNoPUFubnVsZXINCiAgICAgIFRleHQgR2VybWFu PUFiYnJlY2hlbg0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPUNhbmNlbGFyDQogICAgICBUZXh0 IFNwYW5pc2g9Q2FuY2VsYXINCiAgICAgIFRleHQgSXRhbGlhbj1Bbm51bGxhDQogICAgICBU ZXh0IERhbmlzaD1Bbm51bGxlcg0KICAgICAgVGV4dCBEdXRjaD1Bbm51bGVyZW4NCiAgICAg IFRleHQgTm9yd2VnaWFuPUF2YnJ5dA0KICAgICAgVGV4dCBTd2VkaXNoPUF2YnJ5dA0KICAg IGVuZA0KICAgIGl0ZW06IFN0YXRpYw0KICAgICAgUmVjdGFuZ2xlPTkgMTc3IDI2MyAxNzgN CiAgICAgIEFjdGlvbj0zDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAxMTENCiAgICBlbmQNCiAgICBpdGVtOiBTdGF0aWMNCiAgICAgIFJlY3Rh bmdsZT05MCAxMCAyNjAgMTIyDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDANCiAgICAgIFRleHQ9U2V0dXAgd2lsbCBpbnN0YWxsICVBUFBU SVRMRSUgaW4gdGhlIGZvbGxvd2luZyBmb2xkZXIuDQogICAgICBUZXh0PQ0KICAgICAgVGV4 dD1UbyBpbnN0YWxsIGludG8gYSBkaWZmZXJlbnQgZm9sZGVyLCBjbGljayBCcm93c2UsIGFu ZCBzZWxlY3QgYW5vdGhlciBmb2xkZXIuIA0KICAgICAgVGV4dD0NCiAgICAgIFRleHQ9WW91 IGNhbiBjaG9vc2Ugbm90IHRvIGluc3RhbGwgJUFQUFRJVExFJSBieSBjbGlja2luZyBDYW5j ZWwgdG8gZXhpdCBTZXR1cC4NCiAgICAgIFRleHQgRnJlbmNoPSVBUFBUSVRMRSUgdmEg6nRy ZSBpbnN0YWxs6SBkYW5zIGxlIHLpcGVydG9pcmUgY2ktZGVzc291cw0KICAgICAgVGV4dCBG cmVuY2g9DQogICAgICBUZXh0IEZyZW5jaD1Qb3VyIGwnaW5zdGFsbGVyIGRhbnMgdW4gculw ZXJ0b2lyZSBkaWZm6XJlbnQsIGNsaXF1ZXogc3VyIFBhcmNvdXJpciBldCBz6WxlY3Rpb25u ZXogdW4gYXV0cmUgculwZXJ0b2lyZQ0KICAgICAgVGV4dCBGcmVuY2g9DQogICAgICBUZXh0 IEZyZW5jaD1Wb3VzIHBvdXZleiBjaG9pc2lyIGRlIG5lIHBhcyBpbnN0YWxsZXIgJUFQUFRJ VExFJSBlbiBjbGlxdWFudCBzdXIgQW5udWxlciBwb3VyIHF1aXR0ZXIgbCdJbnN0YWxsYXRp b24NCiAgICAgIFRleHQgR2VybWFuPURJZSBBcHBsaWthdGlvbiAlQVBQVElUTEUlIGJlbvZ0 aWd0IGVpbiBpbnN0YWxsaWVydGVzIERhdGVudmVyemVpY2huaXMgKFN0YW5kYXJkIHNpZWhl IHVudGVuKToNCiAgICAgIFRleHQgR2VybWFuPQ0KICAgICAgVGV4dCBHZXJtYW49V2VubiBJ aHIgRGF0ZW5wZmFkIGluIGVpbmVtIGFuZGVyZW4gT3JkbmVyIGluc3RhbGxpZXJ0IHd1cmRl LCBhdWYgQmzkdHRlcm4ga2xpY2tlbiBkZW4gT3JkbmVyIGxva2FsaXNpZXJlbi4NCiAgICAg IFRleHQgR2VybWFuPQ0KICAgICAgVGV4dCBHZXJtYW49V2VubiBTaWUgJUFQUFRJVExFJSBu aWNodCBpbnN0YWxsaWVyZW4gbfZjaHRlbiwga/ZubmVuIFNpZSBkdXJjaCBLbGlja2VuIGF1 ZiBBYmJyZWNoZW4gZGllIEluc3RhbGxhdGlvbiBiZWVuZGVuLg0KICAgICAgVGV4dCBQb3J0 dWd1ZXNlPUNvbmZpZ3VyYefjbyBpbnN0YWxhcuEgJUFQUFRJVExFJSBuYSBzZWd1aW50ZSBw YXN0YQ0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPQ0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPVBh cmEgaW5zdGFsYXIgbnVtYSBwYXN0YSBkaWZlcmVudGUsIGZh52EgdW0gY2xpcXVlIHNvYnJl IFByb2N1cmFyLCBlIHNlbGVjY2lvbmUgdW1hIG91dHJhIHBhc3RhLg0KICAgICAgVGV4dCBQ b3J0dWd1ZXNlPQ0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPVBvZGUgZXNjb2xoZXIgbuNvIGlu c3RhbGFyICVBUFBUSVRMRSUgY2xpY2FuZG8gbm8gYm90428gQ2FuY2VsYXIgcGFyYSBzYWly IGRhIENvbmZpZ3VyYefjbw0KICAgICAgVGV4dCBTcGFuaXNoPUVsIHByb2dyYW1hIGRlIENv bmZpZ3VyYWNp824gaW5zdGFsYXLhICVBUFBUSVRMRSUgZW4gbGEgc2lndWllbnRlIGNhcnBl dGEuDQogICAgICBUZXh0IFNwYW5pc2g9DQogICAgICBUZXh0IFNwYW5pc2g9UGFyYSBpbnN0 YWxhciBlbiB1bmEgY2FycGV0YSBkaWZlcmVudGUsIGhhZ2EgdW4gY2xpYyBlbiBWaXN1YWxp emFyLCB5IHNlbGVjY2lvbmUgb3RyYSBjYXJwZXRhLg0KICAgICAgVGV4dCBTcGFuaXNoPQ0K ICAgICAgVGV4dCBTcGFuaXNoPVB1ZWRlIGVsZWdpciBubyBpbnN0YWxhciAlQVBQVElUTEUl IGhhY2llbmRvIHVuIGNsaWMgZW4gQ2FuY2VsYXIgcGFyYSBzYWxpciBkZSBDb25maWd1cmFj afNuLg0KICAgICAgVGV4dCBJdGFsaWFuPUlsIHByb2dyYW1tYSBkaSBpbnN0YWxsYXppb25l IGluc3RhbGxlcuAgJUFQUFRJVExFJSBuZWxsYSBzZWd1ZW50ZSBjYXJ0ZWxsYS4NCiAgICAg IFRleHQgSXRhbGlhbj0NCiAgICAgIFRleHQgSXRhbGlhbj1QZXIgZWZmZXR0dWFyZSBskmlu c3RhbGxhemlvbmUgaW4gdW5hIGNhcnRlbGxhIGRpdmVyc2EsIGZhaSBjbGljIHN1IFNmb2ds aWEsIGUgc2NlZ2xpIHVukmFsdHJhIGNhcnRlbGxhLg0KICAgICAgVGV4dCBJdGFsaWFuPQ0K ICAgICAgVGV4dCBJdGFsaWFuPVB1b2kgc2NlZ2xpZXJlIGRpIG5vbiBpbnN0YWxsYXJlICVB UFBUSVRMRSUgZmFjZW5kbyBjbGljIHN1IEFubnVsbGEgcGVyIHVzY2lyZSBkYWwgcHJvZ3Jh bW1hIGRpIGluc3RhbGxhemlvbmUNCiAgICAgIFRleHQgRGFuaXNoPUluc3RhbGxhdGlvbnNw cm9ncmFtbWV0IGluc3RhbGxlcmVyICVBUFBUSVRMRSUgaSBkZW5uZSBtYXBwZS4NCiAgICAg IFRleHQgRGFuaXNoPQ0KICAgICAgVGV4dCBEYW5pc2g9TWFuIGluc3RhbGxlcmVyIGkgZW4g YW5kZW4gbWFwcGUgdmVkIGF0IGtsaWtrZSBw5SBCcm93c2Ugb2cgduZsZ2UgZW4gYW5kZW4g bWFwcGUuDQogICAgICBUZXh0IERhbmlzaD0NCiAgICAgIFRleHQgRGFuaXNoPU1hbiBrYW4g duZsZ2UgaWtrZSBhdCBpbnN0YWxsZXJlICVBUFBUSVRMRSUgdmVkIGF0IGtsaWtrZSBw5SBT bGV0IG9nIGZvcmxhZGUgaW5zdGFsbGF0aW9uc3Byb2dyYW1tZXQuDQogICAgICBUZXh0IER1 dGNoPUhldCBpbnN0YWxsYXRpZXByb2dyYW1tYSBpbnN0YWxsZWVydCAlQVBQVElUTEUlIGlu IGRlIHZvbGdlbmRlIGRpcmVjdG9yeS4NCiAgICAgIFRleHQgRHV0Y2g9DQogICAgICBUZXh0 IER1dGNoPUFscyB1IGhldCBpbiBlZW4gYW5kZXJlIGRpcmVjdG9yeSB3aWx0IGluc3RhbGxl cmVuLCBrbGlrIGRhbiBvcCBCbGFkZXJlbiBlbiBraWVzIGVlbiBhbmRlcmUgbG9jYXRpZS4N CiAgICAgIFRleHQgRHV0Y2g9DQogICAgICBUZXh0IER1dGNoPVUga3VudCBlcnZvb3Iga2ll emVuIG9tICVBUFBUSVRMRSUgbmlldCB0ZSBpbnN0YWxsZXJlbjoga2xpayBvcCBBbm51bGVy ZW4gb20gaGV0IGluc3RhbGxhdGllcHJvZ3JhbW1hIHRlIHZlcmxhdGVuLg0KICAgICAgVGV4 dCBOb3J3ZWdpYW49T3Bwc2V0dCB2aWwgaW5zdGFsbGVyZSAlQVBQVElUTEUlIGkgZvhsZ2Vu ZGUgbWFwcGUuDQogICAgICBUZXh0IE5vcndlZ2lhbj0NCiAgICAgIFRleHQgTm9yd2VnaWFu PUZvciDlIGluc3RhbGxlcmUgaSBlbiBhbm5lbiBtYXBwZSwga2xpa2sgQmxhIGlnamVubm9t IG9nIHZlbGcgZW4gYW5uZW4gbWFwcGUuDQogICAgICBUZXh0IE5vcndlZ2lhbj0NCiAgICAg IFRleHQgTm9yd2VnaWFuPUR1IGthbiB2ZWxnZSDlIGlra2UgaW5zdGFsbGVyZSAlQVBQVElU TEUlIHZlZCDlIHZlbGdlIEF2YnJ5dCBmb3Ig5SBn5SB1dCBhdiBPcHBzZXR0Lg0KICAgICAg VGV4dCBTd2VkaXNoPUluc3RhbGxhdGlvbnNwcm9ncmFtbWV0IGluc3RhbGxlcmFyICVBUFBU SVRMRSUgaSBm9mxqYW5kZSBtYXBwLg0KICAgICAgVGV4dCBTd2VkaXNoPQ0KICAgICAgVGV4 dCBTd2VkaXNoPU9tIGR1IHZpbGwgYXR0IGluc3RhbGxhdGlvbmVuIHNrYSBn9nJhcyBpIGVu IGFubmFuIG1hcHAsIGtsaWNrYXIgZHUgcOUgQmzkZGRyYSBvY2ggduRsamVyIGVuIGFubmFu IG1hcHAuDQogICAgICBUZXh0IFN3ZWRpc2g9DQogICAgICBUZXh0IFN3ZWRpc2g9RHUga2Fu IHbkbGphIGF0dCBpbnRlIGluc3RhbGxlcmEgJUFQUFRJVExFJSBnZW5vbSBhdHQga2xpY2th IHDlIEF2YnJ5dCBm9nIgYXR0IGzkbW5hIGluc3RhbGxhdGlvbnNwcm9ncmFtbWV0Lg0KICAg IGVuZA0KICAgIGl0ZW06IFN0YXRpYw0KICAgICAgUmVjdGFuZ2xlPTkwIDEzNCAyNjAgMTYy DQogICAgICBBY3Rpb249MQ0KICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMTExDQogICAgICBUZXh0PURlc3RpbmF0aW9uIEZvbGRlcg0KICAgICAg VGV4dCBGcmVuY2g9UulwZXJ0b2lyZSBkZSBkZXN0aW5hdGlvbg0KICAgICAgVGV4dCBHZXJt YW49WmllbG9yZG5lcg0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPVBhc3RhIGRlIERlc3Rpbm8N CiAgICAgIFRleHQgU3BhbmlzaD1DYXJwZXRhIGRlIERlc3Rpbm8NCiAgICAgIFRleHQgSXRh bGlhbj1DYXJ0ZWxsYSBkaSBkZXN0aW5hemlvbmUNCiAgICAgIFRleHQgRGFuaXNoPURlc3Rp bmF0aW9uc21hcHBlDQogICAgICBUZXh0IER1dGNoPURvZWxkaXJlY3RvcnkNCiAgICAgIFRl eHQgTm9yd2VnaWFuPU3lbG1hcHBlDQogICAgICBUZXh0IFN3ZWRpc2g9RGVzdGluYXRpb25z bWFwcA0KICAgIGVuZA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBSZWN0YW5nbGU9 MjEzIDE0MyAyNTUgMTU3DQogICAgICBWYXJpYWJsZT1EQVRBRElSX1NBVkUNCiAgICAgIFZh bHVlPSVEQVRBRElSJQ0KICAgICAgRGVzdGluYXRpb24gRGlhbG9nPTENCiAgICAgIEFjdGlv bj0yDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAw MDANCiAgICAgIFRleHQ9QiZyb3dzZS4uLg0KICAgICAgVGV4dCBGcmVuY2g9UCZhcmNvdXJp cg0KICAgICAgVGV4dCBHZXJtYW49QiZs5HR0ZXJuLi4uDQogICAgICBUZXh0IFBvcnR1Z3Vl c2U9UCZyb2N1cmFyDQogICAgICBUZXh0IFNwYW5pc2g9ViZpc3VhbGl6YXIuLi4NCiAgICAg IFRleHQgSXRhbGlhbj1TZm9nbGlhLi4uDQogICAgICBUZXh0IERhbmlzaD0mR2VubmVtc2Uu Li4NCiAgICAgIFRleHQgRHV0Y2g9QiZsYWRlcmVuLi4uDQogICAgICBUZXh0IE5vcndlZ2lh bj1CbGEgaWdqZW5ub20NCiAgICAgIFRleHQgU3dlZGlzaD0mQmzkZGRyYQ0KICAgIGVuZA0K ICAgIGl0ZW06IFN0YXRpYw0KICAgICAgUmVjdGFuZ2xlPTk1IDE0NiAyMTEgMTU3DQogICAg ICBEZXN0aW5hdGlvbiBEaWFsb2c9Mg0KICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwDQogICAgICBUZXh0PSVNQUlORElSJQ0KICAgICAgVGV4 dCBGcmVuY2g9JU1BSU5ESVIlDQogICAgICBUZXh0IEdlcm1hbj0lREFUQURJUiUNCiAgICAg IFRleHQgUG9ydHVndWVzZT0lTUFJTkRJUiUNCiAgICAgIFRleHQgU3BhbmlzaD0lTUFJTkRJ UiUNCiAgICAgIFRleHQgSXRhbGlhbj0lTUFJTkRJUiUNCiAgICAgIFRleHQgRGFuaXNoPSVN QUlORElSJQ0KICAgICAgVGV4dCBEdXRjaD0lTUFJTkRJUiUNCiAgICAgIFRleHQgTm9yd2Vn aWFuPSVNQUlORElSJQ0KICAgICAgVGV4dCBTd2VkaXNoPSVNQUlORElSJQ0KICAgIGVuZA0K ICBlbmQNCiAgaXRlbTogRGlhbG9nDQogICAgVGl0bGU9U2VsZWN0IERlc3RpbmF0aW9uIERp cmVjdG9yeQ0KICAgIFRpdGxlIEZyZW5jaD1DaG9pc2lzc2V6IGxlIHLpcGVydG9pcmUgZGUg ZGVzdGluYXRpb24NCiAgICBUaXRsZSBHZXJtYW49RGF0ZW52ZXJ6ZWljaG5pcyB35GhsZW4N CiAgICBUaXRsZSBQb3J0dWd1ZXNlPVNlbGVjY2lvbmFyIERpcmVjdPNyaW8gZGUgRGVzdGlu bw0KICAgIFRpdGxlIFNwYW5pc2g9U2VsZWNjaW9uZSBlbCBEaXJlY3RvcmlvIGRlIERlc3Rp bm8NCiAgICBUaXRsZSBJdGFsaWFuPVNlbGV6aW9uYSBEaXJlY3RvcnkgZGkgZGVzdGluYXpp b25lDQogICAgVGl0bGUgRGFuaXNoPVbmbGcgRGVzdGluYXRpb25zYmlibGlvdGVrDQogICAg VGl0bGUgRHV0Y2g9S2llcyBkb2VsZGlyZWN0b3J5DQogICAgVGl0bGUgTm9yd2VnaWFuPVZl bGcgbeVsa2F0YWxvZw0KICAgIFRpdGxlIFN3ZWRpc2g9VuRsaiBkZXN0aW5hdGlvbnNrYWxh dG9nDQogICAgV2lkdGg9MjIxDQogICAgSGVpZ2h0PTE3Mw0KICAgIEZvbnQgTmFtZT1IZWx2 DQogICAgRm9udCBTaXplPTgNCiAgICBpdGVtOiBMaXN0Ym94DQogICAgICBSZWN0YW5nbGU9 NSAyIDE2MCAxNDkNCiAgICAgIFZhcmlhYmxlPURBVEFESVINCiAgICAgIENyZWF0ZSBGbGFn cz0wMTAxMDAwMDEwMDAwMDAxMDAwMDAwMDEwMTAwMDAwMQ0KICAgICAgRmxhZ3M9MDAwMDAx MDAwMDAwMTAxMA0KICAgICAgVGV4dD0lTUFJTkRJUiUNCiAgICAgIFRleHQgRnJlbmNoPSVN QUlORElSJQ0KICAgICAgVGV4dCBHZXJtYW49JURBVEFESVIlDQogICAgICBUZXh0IEdlcm1h bj0NCiAgICAgIFRleHQgUG9ydHVndWVzZT0lTUFJTkRJUiUNCiAgICAgIFRleHQgU3Bhbmlz aD0lTUFJTkRJUiUNCiAgICAgIFRleHQgSXRhbGlhbj0lTUFJTkRJUiUNCiAgICAgIFRleHQg RGFuaXNoPSVNQUlORElSJQ0KICAgICAgVGV4dCBEdXRjaD0lTUFJTkRJUiUNCiAgICAgIFRl eHQgTm9yd2VnaWFuPSVNQUlORElSJQ0KICAgICAgVGV4dCBTd2VkaXNoPSVNQUlORElSJQ0K ICAgIGVuZA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBSZWN0YW5nbGU9MTY3IDYg MjEyIDIxDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAw MDAwMDENCiAgICAgIFRleHQ9T0sNCiAgICAgIFRleHQgRnJlbmNoPU9LDQogICAgICBUZXh0 IEdlcm1hbj1PSw0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPU9LDQogICAgICBUZXh0IFNwYW5p c2g9QUNFUFRBUg0KICAgICAgVGV4dCBJdGFsaWFuPU9LDQogICAgICBUZXh0IERhbmlzaD1P Sw0KICAgICAgVGV4dCBEdXRjaD1PSw0KICAgICAgVGV4dCBOb3J3ZWdpYW49T0sNCiAgICAg IFRleHQgU3dlZGlzaD1PSw0KICAgIGVuZA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAg ICBSZWN0YW5nbGU9MTY3IDI1IDIxMiA0MA0KICAgICAgVmFyaWFibGU9TUFJTkRJUg0KICAg ICAgVmFsdWU9JU1BSU5ESVJfU0FWRSUNCiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAw MDAwMDAxMDAwMDAwMDAwMDAwMDAwMA0KICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQ0K ICAgICAgVGV4dD1DYW5jZWwNCiAgICAgIFRleHQgRnJlbmNoPUFubnVsZXINCiAgICAgIFRl eHQgR2VybWFuPUFiYnJlY2hlbiANCiAgICAgIFRleHQgUG9ydHVndWVzZT1DYW5jZWxhcg0K ICAgICAgVGV4dCBTcGFuaXNoPUNhbmNlbGFyDQogICAgICBUZXh0IEl0YWxpYW49QW5udWxs YQ0KICAgICAgVGV4dCBEYW5pc2g9U2xldA0KICAgICAgVGV4dCBEdXRjaD1Bbm51bGVyZW4N CiAgICAgIFRleHQgTm9yd2VnaWFuPUF2YnJ5dA0KICAgICAgVGV4dCBTd2VkaXNoPUF2YnJ5 dA0KICAgIGVuZA0KICBlbmQNCmVuZA0KaXRlbTogQ3VzdG9tIERpYWxvZyBTZXQNCiAgTmFt ZT1TZWxlY3QgQ29tbW9uIERpcmVjdG9yeQ0KICBEaXNwbGF5IFZhcmlhYmxlPURJU1BMQVkN CiAgaXRlbTogRGlhbG9nDQogICAgVGl0bGU9Q2hvb3NlIERlc3RpbmF0aW9uIExvY2F0aW9u DQogICAgVGl0bGUgRnJlbmNoPUNob2lzaXNzZXogbGEgbG9jYWxpc2F0aW9uIGRlIGRlc3Rp bmF0aW9uDQogICAgVGl0bGUgR2VybWFuPUdlbWVpbnNhbWVuIFBmYWQgZWlucmljaHRlbg0K ICAgIFRpdGxlIFBvcnR1Z3Vlc2U9RXNjb2xoZXIgTG9jYWwgZGUgRGVzdGlubw0KICAgIFRp dGxlIFNwYW5pc2g9RWxlZ2lyIHVuYSBsb2NhbGl6YWNp824gZGUgZGVzdGlubw0KICAgIFRp dGxlIEl0YWxpYW49U2NlZ2xpIFBvc2l6aW9uZSBkaSBEZXN0aW5hemlvbmUNCiAgICBUaXRs ZSBEYW5pc2g9VuZsZyBkZXN0aW5hdGlvbnNtYXBwZQ0KICAgIFRpdGxlIER1dGNoPUtpZXMg ZG9lbGxvY2F0aWUNCiAgICBUaXRsZSBOb3J3ZWdpYW49VmVsZyBt5WxwbGFzc2VyaW5nDQog ICAgVGl0bGUgU3dlZGlzaD1W5GxqIHN05GxsZSBm9nIgaW5zdGFsbGF0aW9uZW4NCiAgICBX aWR0aD0yODANCiAgICBIZWlnaHQ9MjI0DQogICAgRm9udCBOYW1lPUhlbHYNCiAgICBGb250 IFNpemU9OA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBSZWN0YW5nbGU9MTcyIDE4 NSAyMTQgMTk5DQogICAgICBWYXJpYWJsZT1ESVJFQ1RJT04NCiAgICAgIFZhbHVlPU4NCiAg ICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQ0KICAg ICAgVGV4dD0mTmV4dCA+DQogICAgICBUZXh0IEZyZW5jaD0mU3VpdmFudD4NCiAgICAgIFRl eHQgR2VybWFuPSZXZWl0ZXI+DQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9JlBy83hpbW8+DQog ICAgICBUZXh0IFNwYW5pc2g9JlNpZ3VpZW50ZSA+DQogICAgICBUZXh0IEl0YWxpYW49JkF2 YW50aSA+DQogICAgICBUZXh0IERhbmlzaD0mTuZzdGU+DQogICAgICBUZXh0IER1dGNoPSZW b2xnZW5kZT4NCiAgICAgIFRleHQgTm9yd2VnaWFuPSZOZXN0ZT4NCiAgICAgIFRleHQgU3dl ZGlzaD0mTuRzdGEgPg0KICAgIGVuZA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBS ZWN0YW5nbGU9MTMwIDE4NSAxNzIgMTk5DQogICAgICBWYXJpYWJsZT1ESVJFQ1RJT04NCiAg ICAgIFZhbHVlPUINCiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAw MDAwMDAwMDAwMA0KICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQ0KICAgICAgVGV4dD08 ICZCYWNrDQogICAgICBUZXh0IEZyZW5jaD08JlJldG91cg0KICAgICAgVGV4dCBHZXJtYW49 PCZadXL8Y2sNCiAgICAgIFRleHQgUG9ydHVndWVzZT08JlJldG9ybmFyDQogICAgICBUZXh0 IFNwYW5pc2g9PCZSZXRyb2NlZGVyDQogICAgICBUZXh0IEl0YWxpYW49PCAmSW5kaWV0cm8N CiAgICAgIFRleHQgRGFuaXNoPTwmVGlsYmFnZQ0KICAgICAgVGV4dCBEdXRjaD08JlRlcnVn DQogICAgICBUZXh0IE5vcndlZ2lhbj08JlRpbGJha2UNCiAgICAgIFRleHQgU3dlZGlzaD08 ICZUaWxsYmFrYQ0KICAgIGVuZA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBSZWN0 YW5nbGU9MjIyIDE4NSAyNjQgMTk5DQogICAgICBBY3Rpb249Mw0KICAgICAgQ3JlYXRlIEZs YWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwDQogICAgICBUZXh0PUNhbmNl bA0KICAgICAgVGV4dCBGcmVuY2g9QW5udWxlcg0KICAgICAgVGV4dCBHZXJtYW49QWJicmVj aGVuDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9Q2FuY2VsYXINCiAgICAgIFRleHQgU3Bhbmlz aD1DYW5jZWxhcg0KICAgICAgVGV4dCBJdGFsaWFuPUFubnVsbGENCiAgICAgIFRleHQgRGFu aXNoPUFubnVsbGVyDQogICAgICBUZXh0IER1dGNoPUFubnVsZXJlbg0KICAgICAgVGV4dCBO b3J3ZWdpYW49QXZicnl0DQogICAgICBUZXh0IFN3ZWRpc2g9QXZicnl0DQogICAgZW5kDQog ICAgaXRlbTogU3RhdGljDQogICAgICBSZWN0YW5nbGU9OSAxNzcgMjYzIDE3OA0KICAgICAg QWN0aW9uPTMNCiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDExMQ0KICAgIGVuZA0KICAgIGl0ZW06IFN0YXRpYw0KICAgICAgUmVjdGFuZ2xlPTkw IDEwIDI2MCAxMjINCiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMA0KICAgICAgVGV4dD1TZXR1cCB3aWxsIGluc3RhbGwgJUFQUFRJVExFJSBp biB0aGUgZm9sbG93aW5nIGZvbGRlci4NCiAgICAgIFRleHQ9DQogICAgICBUZXh0PVRvIGlu c3RhbGwgaW50byBhIGRpZmZlcmVudCBmb2xkZXIsIGNsaWNrIEJyb3dzZSwgYW5kIHNlbGVj dCBhbm90aGVyIGZvbGRlci4gDQogICAgICBUZXh0PQ0KICAgICAgVGV4dD1Zb3UgY2FuIGNo b29zZSBub3QgdG8gaW5zdGFsbCAlQVBQVElUTEUlIGJ5IGNsaWNraW5nIENhbmNlbCB0byBl eGl0IFNldHVwLg0KICAgICAgVGV4dCBGcmVuY2g9JUFQUFRJVExFJSB2YSDqdHJlIGluc3Rh bGzpIGRhbnMgbGUgculwZXJ0b2lyZSBjaS1kZXNzb3VzDQogICAgICBUZXh0IEZyZW5jaD0N CiAgICAgIFRleHQgRnJlbmNoPVBvdXIgbCdpbnN0YWxsZXIgZGFucyB1biBy6XBlcnRvaXJl IGRpZmbpcmVudCwgY2xpcXVleiBzdXIgUGFyY291cmlyIGV0IHPpbGVjdGlvbm5leiB1biBh dXRyZSBy6XBlcnRvaXJlDQogICAgICBUZXh0IEZyZW5jaD0NCiAgICAgIFRleHQgRnJlbmNo PVZvdXMgcG91dmV6IGNob2lzaXIgZGUgbmUgcGFzIGluc3RhbGxlciAlQVBQVElUTEUlIGVu IGNsaXF1YW50IHN1ciBBbm51bGVyIHBvdXIgcXVpdHRlciBsJ0luc3RhbGxhdGlvbg0KICAg ICAgVGV4dCBHZXJtYW49RvxyIGRlbiBFeHBvcnQvSW1wb3J0IHZvbiBEYXRlbiBiZW72dGln dCAlQVBQVElUTEUlIGVpbiBuZXR6d2Vya3dlaXQgZXJyZWljaGJhcmVzIFZlcnplaWNoem5p cyBm/HIgdGVtcG9y5HJlIERhdGVuIChTdGFuZGFyZCBzaWVoZSB1bnRlbik6DQogICAgICBU ZXh0IEdlcm1hbj0NCiAgICAgIFRleHQgR2VybWFuPUJpdHRlIGdlYmVuIFNpZSBlaW5lbiBu ZXVlbiBQZmFkIGVpbiwgd2VubiBkZXIgVm9yc2NobGFnIGb8ciBJaHIgTmV0endlcmsgbmlj aHQgenV0cmVmZmVuZCBpc3QuIChCbOR0dGVybikNCiAgICAgIFRleHQgR2VybWFuPQ0KICAg ICAgVGV4dCBHZXJtYW49V2VubiBTaWUgJUFQUFRJVExFJSBuaWNodCBpbnN0YWxsaWVyZW4g bfZjaHRlbiwga/ZubmVuIFNpZSBkdXJjaCBLbGlja2VuIGF1ZiBBYmJyZWNoZW4gZGllIElu c3RhbGxhdGlvbiBiZWVuZGVuLg0KICAgICAgVGV4dCBHZXJtYW49DQogICAgICBUZXh0IEdl cm1hbj1TaWUga/ZubmVuIGRpZSBEYXRlaSAlREFUQURJUiVcc2VydmVyLmluaSBhdWNoIG5h Y2h0cuRnbGljaCB2b24gSGFuZCBhbnBhc3Nlbi4NCiAgICAgIFRleHQgUG9ydHVndWVzZT1D b25maWd1cmHn428gaW5zdGFsYXLhICVBUFBUSVRMRSUgbmEgc2VndWludGUgcGFzdGENCiAg ICAgIFRleHQgUG9ydHVndWVzZT0NCiAgICAgIFRleHQgUG9ydHVndWVzZT1QYXJhIGluc3Rh bGFyIG51bWEgcGFzdGEgZGlmZXJlbnRlLCBmYedhIHVtIGNsaXF1ZSBzb2JyZSBQcm9jdXJh ciwgZSBzZWxlY2Npb25lIHVtYSBvdXRyYSBwYXN0YS4NCiAgICAgIFRleHQgUG9ydHVndWVz ZT0NCiAgICAgIFRleHQgUG9ydHVndWVzZT1Qb2RlIGVzY29saGVyIG7jbyBpbnN0YWxhciAl QVBQVElUTEUlIGNsaWNhbmRvIG5vIGJvdONvIENhbmNlbGFyIHBhcmEgc2FpciBkYSBDb25m aWd1cmHn428NCiAgICAgIFRleHQgU3BhbmlzaD1FbCBwcm9ncmFtYSBkZSBDb25maWd1cmFj afNuIGluc3RhbGFy4SAlQVBQVElUTEUlIGVuIGxhIHNpZ3VpZW50ZSBjYXJwZXRhLg0KICAg ICAgVGV4dCBTcGFuaXNoPQ0KICAgICAgVGV4dCBTcGFuaXNoPVBhcmEgaW5zdGFsYXIgZW4g dW5hIGNhcnBldGEgZGlmZXJlbnRlLCBoYWdhIHVuIGNsaWMgZW4gVmlzdWFsaXphciwgeSBz ZWxlY2Npb25lIG90cmEgY2FycGV0YS4NCiAgICAgIFRleHQgU3BhbmlzaD0NCiAgICAgIFRl eHQgU3BhbmlzaD1QdWVkZSBlbGVnaXIgbm8gaW5zdGFsYXIgJUFQUFRJVExFJSBoYWNpZW5k byB1biBjbGljIGVuIENhbmNlbGFyIHBhcmEgc2FsaXIgZGUgQ29uZmlndXJhY2nzbi4NCiAg ICAgIFRleHQgSXRhbGlhbj1JbCBwcm9ncmFtbWEgZGkgaW5zdGFsbGF6aW9uZSBpbnN0YWxs ZXLgICVBUFBUSVRMRSUgbmVsbGEgc2VndWVudGUgY2FydGVsbGEuDQogICAgICBUZXh0IEl0 YWxpYW49DQogICAgICBUZXh0IEl0YWxpYW49UGVyIGVmZmV0dHVhcmUgbJJpbnN0YWxsYXpp b25lIGluIHVuYSBjYXJ0ZWxsYSBkaXZlcnNhLCBmYWkgY2xpYyBzdSBTZm9nbGlhLCBlIHNj ZWdsaSB1bpJhbHRyYSBjYXJ0ZWxsYS4NCiAgICAgIFRleHQgSXRhbGlhbj0NCiAgICAgIFRl eHQgSXRhbGlhbj1QdW9pIHNjZWdsaWVyZSBkaSBub24gaW5zdGFsbGFyZSAlQVBQVElUTEUl IGZhY2VuZG8gY2xpYyBzdSBBbm51bGxhIHBlciB1c2NpcmUgZGFsIHByb2dyYW1tYSBkaSBp bnN0YWxsYXppb25lDQogICAgICBUZXh0IERhbmlzaD1JbnN0YWxsYXRpb25zcHJvZ3JhbW1l dCBpbnN0YWxsZXJlciAlQVBQVElUTEUlIGkgZGVubmUgbWFwcGUuDQogICAgICBUZXh0IERh bmlzaD0NCiAgICAgIFRleHQgRGFuaXNoPU1hbiBpbnN0YWxsZXJlciBpIGVuIGFuZGVuIG1h cHBlIHZlZCBhdCBrbGlra2UgcOUgQnJvd3NlIG9nIHbmbGdlIGVuIGFuZGVuIG1hcHBlLg0K ICAgICAgVGV4dCBEYW5pc2g9DQogICAgICBUZXh0IERhbmlzaD1NYW4ga2FuIHbmbGdlIGlr a2UgYXQgaW5zdGFsbGVyZSAlQVBQVElUTEUlIHZlZCBhdCBrbGlra2UgcOUgU2xldCBvZyBm b3JsYWRlIGluc3RhbGxhdGlvbnNwcm9ncmFtbWV0Lg0KICAgICAgVGV4dCBEdXRjaD1IZXQg aW5zdGFsbGF0aWVwcm9ncmFtbWEgaW5zdGFsbGVlcnQgJUFQUFRJVExFJSBpbiBkZSB2b2xn ZW5kZSBkaXJlY3RvcnkuDQogICAgICBUZXh0IER1dGNoPQ0KICAgICAgVGV4dCBEdXRjaD1B bHMgdSBoZXQgaW4gZWVuIGFuZGVyZSBkaXJlY3Rvcnkgd2lsdCBpbnN0YWxsZXJlbiwga2xp ayBkYW4gb3AgQmxhZGVyZW4gZW4ga2llcyBlZW4gYW5kZXJlIGxvY2F0aWUuDQogICAgICBU ZXh0IER1dGNoPQ0KICAgICAgVGV4dCBEdXRjaD1VIGt1bnQgZXJ2b29yIGtpZXplbiBvbSAl QVBQVElUTEUlIG5pZXQgdGUgaW5zdGFsbGVyZW46IGtsaWsgb3AgQW5udWxlcmVuIG9tIGhl dCBpbnN0YWxsYXRpZXByb2dyYW1tYSB0ZSB2ZXJsYXRlbi4NCiAgICAgIFRleHQgTm9yd2Vn aWFuPU9wcHNldHQgdmlsIGluc3RhbGxlcmUgJUFQUFRJVExFJSBpIGb4bGdlbmRlIG1hcHBl Lg0KICAgICAgVGV4dCBOb3J3ZWdpYW49DQogICAgICBUZXh0IE5vcndlZ2lhbj1Gb3Ig5SBp bnN0YWxsZXJlIGkgZW4gYW5uZW4gbWFwcGUsIGtsaWtrIEJsYSBpZ2plbm5vbSBvZyB2ZWxn IGVuIGFubmVuIG1hcHBlLg0KICAgICAgVGV4dCBOb3J3ZWdpYW49DQogICAgICBUZXh0IE5v cndlZ2lhbj1EdSBrYW4gdmVsZ2Ug5SBpa2tlIGluc3RhbGxlcmUgJUFQUFRJVExFJSB2ZWQg 5SB2ZWxnZSBBdmJyeXQgZm9yIOUgZ+UgdXQgYXYgT3Bwc2V0dC4NCiAgICAgIFRleHQgU3dl ZGlzaD1JbnN0YWxsYXRpb25zcHJvZ3JhbW1ldCBpbnN0YWxsZXJhciAlQVBQVElUTEUlIGkg ZvZsamFuZGUgbWFwcC4NCiAgICAgIFRleHQgU3dlZGlzaD0NCiAgICAgIFRleHQgU3dlZGlz aD1PbSBkdSB2aWxsIGF0dCBpbnN0YWxsYXRpb25lbiBza2EgZ/ZyYXMgaSBlbiBhbm5hbiBt YXBwLCBrbGlja2FyIGR1IHDlIEJs5GRkcmEgb2NoIHbkbGplciBlbiBhbm5hbiBtYXBwLg0K ICAgICAgVGV4dCBTd2VkaXNoPQ0KICAgICAgVGV4dCBTd2VkaXNoPUR1IGthbiB25GxqYSBh dHQgaW50ZSBpbnN0YWxsZXJhICVBUFBUSVRMRSUgZ2Vub20gYXR0IGtsaWNrYSBw5SBBdmJy eXQgZvZyIGF0dCBs5G1uYSBpbnN0YWxsYXRpb25zcHJvZ3JhbW1ldC4NCiAgICBlbmQNCiAg ICBpdGVtOiBTdGF0aWMNCiAgICAgIFJlY3RhbmdsZT05MCAxMzQgMjYwIDE2Mg0KICAgICAg QWN0aW9uPTENCiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDExMQ0KICAgICAgVGV4dD1EZXN0aW5hdGlvbiBGb2xkZXINCiAgICAgIFRleHQgRnJl bmNoPVLpcGVydG9pcmUgZGUgZGVzdGluYXRpb24NCiAgICAgIFRleHQgR2VybWFuPVppZWxv cmRuZXINCiAgICAgIFRleHQgUG9ydHVndWVzZT1QYXN0YSBkZSBEZXN0aW5vDQogICAgICBU ZXh0IFNwYW5pc2g9Q2FycGV0YSBkZSBEZXN0aW5vDQogICAgICBUZXh0IEl0YWxpYW49Q2Fy dGVsbGEgZGkgZGVzdGluYXppb25lDQogICAgICBUZXh0IERhbmlzaD1EZXN0aW5hdGlvbnNt YXBwZQ0KICAgICAgVGV4dCBEdXRjaD1Eb2VsZGlyZWN0b3J5DQogICAgICBUZXh0IE5vcndl Z2lhbj1N5WxtYXBwZQ0KICAgICAgVGV4dCBTd2VkaXNoPURlc3RpbmF0aW9uc21hcHANCiAg ICBlbmQNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0KICAgICAgUmVjdGFuZ2xlPTIxMyAxNDMg MjU1IDE1Nw0KICAgICAgVmFyaWFibGU9U19ESVJfU0FWRQ0KICAgICAgVmFsdWU9JVNfRElS JQ0KICAgICAgRGVzdGluYXRpb24gRGlhbG9nPTENCiAgICAgIEFjdGlvbj0yDQogICAgICBD cmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDANCiAgICAgIFRl eHQ9QiZyb3dzZS4uLg0KICAgICAgVGV4dCBGcmVuY2g9UCZhcmNvdXJpcg0KICAgICAgVGV4 dCBHZXJtYW49QiZs5HR0ZXJuLi4uDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9UCZyb2N1cmFy DQogICAgICBUZXh0IFNwYW5pc2g9ViZpc3VhbGl6YXIuLi4NCiAgICAgIFRleHQgSXRhbGlh bj1TZm9nbGlhLi4uDQogICAgICBUZXh0IERhbmlzaD0mR2VubmVtc2UuLi4NCiAgICAgIFRl eHQgRHV0Y2g9QiZsYWRlcmVuLi4uDQogICAgICBUZXh0IE5vcndlZ2lhbj1CbGEgaWdqZW5u b20NCiAgICAgIFRleHQgU3dlZGlzaD0mQmzkZGRyYQ0KICAgIGVuZA0KICAgIGl0ZW06IFN0 YXRpYw0KICAgICAgUmVjdGFuZ2xlPTk1IDE0NiAyMTEgMTU3DQogICAgICBEZXN0aW5hdGlv biBEaWFsb2c9Mg0KICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwDQogICAgICBUZXh0PSVNQUlORElSJQ0KICAgICAgVGV4dCBGcmVuY2g9JU1B SU5ESVIlDQogICAgICBUZXh0IEdlcm1hbj0lU19ESVIlDQogICAgICBUZXh0IFBvcnR1Z3Vl c2U9JU1BSU5ESVIlDQogICAgICBUZXh0IFNwYW5pc2g9JU1BSU5ESVIlDQogICAgICBUZXh0 IEl0YWxpYW49JU1BSU5ESVIlDQogICAgICBUZXh0IERhbmlzaD0lTUFJTkRJUiUNCiAgICAg IFRleHQgRHV0Y2g9JU1BSU5ESVIlDQogICAgICBUZXh0IE5vcndlZ2lhbj0lTUFJTkRJUiUN CiAgICAgIFRleHQgU3dlZGlzaD0lTUFJTkRJUiUNCiAgICBlbmQNCiAgZW5kDQogIGl0ZW06 IERpYWxvZw0KICAgIFRpdGxlPVNlbGVjdCBEZXN0aW5hdGlvbiBEaXJlY3RvcnkNCiAgICBU aXRsZSBGcmVuY2g9Q2hvaXNpc3NleiBsZSBy6XBlcnRvaXJlIGRlIGRlc3RpbmF0aW9uDQog ICAgVGl0bGUgR2VybWFuPUV4cG9ydC9JbXBvcnQtVmVyemVpY2huaXMgZWlucmljaHRlbg0K ICAgIFRpdGxlIFBvcnR1Z3Vlc2U9U2VsZWNjaW9uYXIgRGlyZWN083JpbyBkZSBEZXN0aW5v DQogICAgVGl0bGUgU3BhbmlzaD1TZWxlY2Npb25lIGVsIERpcmVjdG9yaW8gZGUgRGVzdGlu bw0KICAgIFRpdGxlIEl0YWxpYW49U2VsZXppb25hIERpcmVjdG9yeSBkaSBkZXN0aW5hemlv bmUNCiAgICBUaXRsZSBEYW5pc2g9VuZsZyBEZXN0aW5hdGlvbnNiaWJsaW90ZWsNCiAgICBU aXRsZSBEdXRjaD1LaWVzIGRvZWxkaXJlY3RvcnkNCiAgICBUaXRsZSBOb3J3ZWdpYW49VmVs ZyBt5WxrYXRhbG9nDQogICAgVGl0bGUgU3dlZGlzaD1W5GxqIGRlc3RpbmF0aW9uc2thbGF0 b2cNCiAgICBXaWR0aD0yMjENCiAgICBIZWlnaHQ9MTczDQogICAgRm9udCBOYW1lPUhlbHYN CiAgICBGb250IFNpemU9OA0KICAgIGl0ZW06IExpc3Rib3gNCiAgICAgIFJlY3RhbmdsZT01 IDIgMTYwIDE0OQ0KICAgICAgVmFyaWFibGU9U19ESVINCiAgICAgIENyZWF0ZSBGbGFncz0w MTAxMDAwMDEwMDAwMDAxMDAwMDAwMDEwMTAwMDAwMQ0KICAgICAgRmxhZ3M9MDAwMDAxMDAw MDAwMTAxMA0KICAgICAgVGV4dD0lTUFJTkRJUiUNCiAgICAgIFRleHQgRnJlbmNoPSVNQUlO RElSJQ0KICAgICAgVGV4dCBHZXJtYW49JVNfRElSJQ0KICAgICAgVGV4dCBHZXJtYW49DQog ICAgICBUZXh0IFBvcnR1Z3Vlc2U9JU1BSU5ESVIlDQogICAgICBUZXh0IFNwYW5pc2g9JU1B SU5ESVIlDQogICAgICBUZXh0IEl0YWxpYW49JU1BSU5ESVIlDQogICAgICBUZXh0IERhbmlz aD0lTUFJTkRJUiUNCiAgICAgIFRleHQgRHV0Y2g9JU1BSU5ESVIlDQogICAgICBUZXh0IE5v cndlZ2lhbj0lTUFJTkRJUiUNCiAgICAgIFRleHQgU3dlZGlzaD0lTUFJTkRJUiUNCiAgICBl bmQNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0KICAgICAgUmVjdGFuZ2xlPTE2NyA2IDIxMiAy MQ0KICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAx DQogICAgICBUZXh0PU9LDQogICAgICBUZXh0IEZyZW5jaD1PSw0KICAgICAgVGV4dCBHZXJt YW49T0sNCiAgICAgIFRleHQgUG9ydHVndWVzZT1PSw0KICAgICAgVGV4dCBTcGFuaXNoPUFD RVBUQVINCiAgICAgIFRleHQgSXRhbGlhbj1PSw0KICAgICAgVGV4dCBEYW5pc2g9T0sNCiAg ICAgIFRleHQgRHV0Y2g9T0sNCiAgICAgIFRleHQgTm9yd2VnaWFuPU9LDQogICAgICBUZXh0 IFN3ZWRpc2g9T0sNCiAgICBlbmQNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0KICAgICAgUmVj dGFuZ2xlPTE2NyAyNSAyMTIgNDANCiAgICAgIFZhcmlhYmxlPU1BSU5ESVINCiAgICAgIFZh bHVlPSVNQUlORElSX1NBVkUlDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAw MTAwMDAwMDAwMDAwMDAwMDANCiAgICAgIEZsYWdzPTAwMDAwMDAwMDAwMDAwMDENCiAgICAg IFRleHQ9Q2FuY2VsDQogICAgICBUZXh0IEZyZW5jaD1Bbm51bGVyDQogICAgICBUZXh0IEdl cm1hbj1BYmJyZWNoZW4gDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9Q2FuY2VsYXINCiAgICAg IFRleHQgU3BhbmlzaD1DYW5jZWxhcg0KICAgICAgVGV4dCBJdGFsaWFuPUFubnVsbGENCiAg ICAgIFRleHQgRGFuaXNoPVNsZXQNCiAgICAgIFRleHQgRHV0Y2g9QW5udWxlcmVuDQogICAg ICBUZXh0IE5vcndlZ2lhbj1BdmJyeXQNCiAgICAgIFRleHQgU3dlZGlzaD1BdmJyeXQNCiAg ICBlbmQNCiAgZW5kDQplbmQNCml0ZW06IEN1c3RvbSBEaWFsb2cgU2V0DQogIE5hbWU9U2Vs ZWN0IERlc3RpbmF0aW9uIERpcmVjdG9yeQ0KICBEaXNwbGF5IFZhcmlhYmxlPURJU1BMQVkN CiAgaXRlbTogRGlhbG9nDQogICAgVGl0bGU9Q2hvb3NlIERlc3RpbmF0aW9uIExvY2F0aW9u DQogICAgVGl0bGUgRnJlbmNoPUNob2lzaXNzZXogbGEgbG9jYWxpc2F0aW9uIGRlIGRlc3Rp bmF0aW9uDQogICAgVGl0bGUgR2VybWFuPVppZWxwZmFkIHfkaGxlbg0KICAgIFRpdGxlIFBv cnR1Z3Vlc2U9RXNjb2xoZXIgTG9jYWwgZGUgRGVzdGlubw0KICAgIFRpdGxlIFNwYW5pc2g9 RWxlZ2lyIHVuYSBsb2NhbGl6YWNp824gZGUgZGVzdGlubw0KICAgIFRpdGxlIEl0YWxpYW49 U2NlZ2xpIFBvc2l6aW9uZSBkaSBEZXN0aW5hemlvbmUNCiAgICBUaXRsZSBEYW5pc2g9VuZs ZyBkZXN0aW5hdGlvbnNtYXBwZQ0KICAgIFRpdGxlIER1dGNoPUtpZXMgZG9lbGxvY2F0aWUN CiAgICBUaXRsZSBOb3J3ZWdpYW49VmVsZyBt5WxwbGFzc2VyaW5nDQogICAgVGl0bGUgU3dl ZGlzaD1W5GxqIHN05GxsZSBm9nIgaW5zdGFsbGF0aW9uZW4NCiAgICBXaWR0aD0yODANCiAg ICBIZWlnaHQ9MjI0DQogICAgRm9udCBOYW1lPUhlbHYNCiAgICBGb250IFNpemU9OA0KICAg IGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBSZWN0YW5nbGU9MTcyIDE4NSAyMTQgMTk5DQog ICAgICBWYXJpYWJsZT1ESVJFQ1RJT04NCiAgICAgIFZhbHVlPU4NCiAgICAgIENyZWF0ZSBG bGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQ0KICAgICAgVGV4dD0mTmV4 dCA+DQogICAgICBUZXh0IEZyZW5jaD0mU3VpdmFudD4NCiAgICAgIFRleHQgR2VybWFuPSZX ZWl0ZXI+DQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9JlBy83hpbW8+DQogICAgICBUZXh0IFNw YW5pc2g9JlNpZ3VpZW50ZSA+DQogICAgICBUZXh0IEl0YWxpYW49JkF2YW50aSA+DQogICAg ICBUZXh0IERhbmlzaD0mTuZzdGU+DQogICAgICBUZXh0IER1dGNoPSZWb2xnZW5kZT4NCiAg ICAgIFRleHQgTm9yd2VnaWFuPSZOZXN0ZT4NCiAgICAgIFRleHQgU3dlZGlzaD0mTuRzdGEg Pg0KICAgIGVuZA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBSZWN0YW5nbGU9MTMw IDE4NSAxNzIgMTk5DQogICAgICBWYXJpYWJsZT1ESVJFQ1RJT04NCiAgICAgIFZhbHVlPUIN CiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMA0K ICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQ0KICAgICAgVGV4dD08ICZCYWNrDQogICAg ICBUZXh0IEZyZW5jaD08JlJldG91cg0KICAgICAgVGV4dCBHZXJtYW49PCZadXL8Y2sNCiAg ICAgIFRleHQgUG9ydHVndWVzZT08JlJldG9ybmFyDQogICAgICBUZXh0IFNwYW5pc2g9PCZS ZXRyb2NlZGVyDQogICAgICBUZXh0IEl0YWxpYW49PCAmSW5kaWV0cm8NCiAgICAgIFRleHQg RGFuaXNoPTwmVGlsYmFnZQ0KICAgICAgVGV4dCBEdXRjaD08JlRlcnVnDQogICAgICBUZXh0 IE5vcndlZ2lhbj08JlRpbGJha2UNCiAgICAgIFRleHQgU3dlZGlzaD08ICZUaWxsYmFrYQ0K ICAgIGVuZA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBSZWN0YW5nbGU9MjIyIDE4 NSAyNjQgMTk5DQogICAgICBBY3Rpb249Mw0KICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAw MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwDQogICAgICBUZXh0PUNhbmNlbA0KICAgICAgVGV4 dCBGcmVuY2g9QW5udWxlcg0KICAgICAgVGV4dCBHZXJtYW49QWJicmVjaGVuDQogICAgICBU ZXh0IFBvcnR1Z3Vlc2U9Q2FuY2VsYXINCiAgICAgIFRleHQgU3BhbmlzaD1DYW5jZWxhcg0K ICAgICAgVGV4dCBJdGFsaWFuPUFubnVsbGENCiAgICAgIFRleHQgRGFuaXNoPUFubnVsbGVy DQogICAgICBUZXh0IER1dGNoPUFubnVsZXJlbg0KICAgICAgVGV4dCBOb3J3ZWdpYW49QXZi cnl0DQogICAgICBUZXh0IFN3ZWRpc2g9QXZicnl0DQogICAgZW5kDQogICAgaXRlbTogU3Rh dGljDQogICAgICBSZWN0YW5nbGU9OSAxNzcgMjYzIDE3OA0KICAgICAgQWN0aW9uPTMNCiAg ICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMQ0KICAg IGVuZA0KICAgIGl0ZW06IFN0YXRpYw0KICAgICAgUmVjdGFuZ2xlPTkwIDEwIDI2MCAxMjIN CiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA0K ICAgICAgVGV4dD1TZXR1cCB3aWxsIGluc3RhbGwgJUFQUFRJVExFJSBpbiB0aGUgZm9sbG93 aW5nIGZvbGRlci4NCiAgICAgIFRleHQ9DQogICAgICBUZXh0PVRvIGluc3RhbGwgaW50byBh IGRpZmZlcmVudCBmb2xkZXIsIGNsaWNrIEJyb3dzZSwgYW5kIHNlbGVjdCBhbm90aGVyIGZv bGRlci4gDQogICAgICBUZXh0PQ0KICAgICAgVGV4dD1Zb3UgY2FuIGNob29zZSBub3QgdG8g aW5zdGFsbCAlQVBQVElUTEUlIGJ5IGNsaWNraW5nIENhbmNlbCB0byBleGl0IFNldHVwLg0K ICAgICAgVGV4dCBGcmVuY2g9JUFQUFRJVExFJSB2YSDqdHJlIGluc3RhbGzpIGRhbnMgbGUg culwZXJ0b2lyZSBjaS1kZXNzb3VzDQogICAgICBUZXh0IEZyZW5jaD0NCiAgICAgIFRleHQg RnJlbmNoPVBvdXIgbCdpbnN0YWxsZXIgZGFucyB1biBy6XBlcnRvaXJlIGRpZmbpcmVudCwg Y2xpcXVleiBzdXIgUGFyY291cmlyIGV0IHPpbGVjdGlvbm5leiB1biBhdXRyZSBy6XBlcnRv aXJlDQogICAgICBUZXh0IEZyZW5jaD0NCiAgICAgIFRleHQgRnJlbmNoPVZvdXMgcG91dmV6 IGNob2lzaXIgZGUgbmUgcGFzIGluc3RhbGxlciAlQVBQVElUTEUlIGVuIGNsaXF1YW50IHN1 ciBBbm51bGVyIHBvdXIgcXVpdHRlciBsJ0luc3RhbGxhdGlvbg0KICAgICAgVGV4dCBHZXJt YW49SW5zdGFsbGF0aW9uIHNwZWljaGVydCAlQVBQVElUTEUlIGltIHVudGVuIGFuZ2VnZWJl bmVuIE9yZG5lcjoNCiAgICAgIFRleHQgR2VybWFuPQ0KICAgICAgVGV4dCBHZXJtYW49WnVy IEluc3RhbGxhdGlvbiBpbiBlaW5lbSBhbmRlcmVuIE9yZG5lciBhdWYgQmzkdHRlcm4ga2xp Y2tlbiB1bmQgZWluZW4gYW5kZXJlbiBPcmRuZXIgd+RobGVuLg0KICAgICAgVGV4dCBHZXJt YW49DQogICAgICBUZXh0IEdlcm1hbj1XZW5uIFNpZSAlQVBQVElUTEUlIG5pY2h0IGluc3Rh bGxpZXJlbiBt9mNodGVuLCBr9m5uZW4gU2llIGR1cmNoIEtsaWNrZW4gYXVmIEFiYnJlY2hl biBkaWUgSW5zdGFsbGF0aW9uIGJlZW5kZW4uDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9Q29u ZmlndXJh5+NvIGluc3RhbGFy4SAlQVBQVElUTEUlIG5hIHNlZ3VpbnRlIHBhc3RhDQogICAg ICBUZXh0IFBvcnR1Z3Vlc2U9DQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9UGFyYSBpbnN0YWxh ciBudW1hIHBhc3RhIGRpZmVyZW50ZSwgZmHnYSB1bSBjbGlxdWUgc29icmUgUHJvY3VyYXIs IGUgc2VsZWNjaW9uZSB1bWEgb3V0cmEgcGFzdGEuDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9 DQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9UG9kZSBlc2NvbGhlciBu428gaW5zdGFsYXIgJUFQ UFRJVExFJSBjbGljYW5kbyBubyBib3TjbyBDYW5jZWxhciBwYXJhIHNhaXIgZGEgQ29uZmln dXJh5+NvDQogICAgICBUZXh0IFNwYW5pc2g9RWwgcHJvZ3JhbWEgZGUgQ29uZmlndXJhY2nz biBpbnN0YWxhcuEgJUFQUFRJVExFJSBlbiBsYSBzaWd1aWVudGUgY2FycGV0YS4NCiAgICAg IFRleHQgU3BhbmlzaD0NCiAgICAgIFRleHQgU3BhbmlzaD1QYXJhIGluc3RhbGFyIGVuIHVu YSBjYXJwZXRhIGRpZmVyZW50ZSwgaGFnYSB1biBjbGljIGVuIFZpc3VhbGl6YXIsIHkgc2Vs ZWNjaW9uZSBvdHJhIGNhcnBldGEuDQogICAgICBUZXh0IFNwYW5pc2g9DQogICAgICBUZXh0 IFNwYW5pc2g9UHVlZGUgZWxlZ2lyIG5vIGluc3RhbGFyICVBUFBUSVRMRSUgaGFjaWVuZG8g dW4gY2xpYyBlbiBDYW5jZWxhciBwYXJhIHNhbGlyIGRlIENvbmZpZ3VyYWNp824uDQogICAg ICBUZXh0IEl0YWxpYW49SWwgcHJvZ3JhbW1hIGRpIGluc3RhbGxhemlvbmUgaW5zdGFsbGVy 4CAlQVBQVElUTEUlIG5lbGxhIHNlZ3VlbnRlIGNhcnRlbGxhLg0KICAgICAgVGV4dCBJdGFs aWFuPQ0KICAgICAgVGV4dCBJdGFsaWFuPVBlciBlZmZldHR1YXJlIGySaW5zdGFsbGF6aW9u ZSBpbiB1bmEgY2FydGVsbGEgZGl2ZXJzYSwgZmFpIGNsaWMgc3UgU2ZvZ2xpYSwgZSBzY2Vn bGkgdW6SYWx0cmEgY2FydGVsbGEuDQogICAgICBUZXh0IEl0YWxpYW49DQogICAgICBUZXh0 IEl0YWxpYW49UHVvaSBzY2VnbGllcmUgZGkgbm9uIGluc3RhbGxhcmUgJUFQUFRJVExFJSBm YWNlbmRvIGNsaWMgc3UgQW5udWxsYSBwZXIgdXNjaXJlIGRhbCBwcm9ncmFtbWEgZGkgaW5z dGFsbGF6aW9uZQ0KICAgICAgVGV4dCBEYW5pc2g9SW5zdGFsbGF0aW9uc3Byb2dyYW1tZXQg aW5zdGFsbGVyZXIgJUFQUFRJVExFJSBpIGRlbm5lIG1hcHBlLg0KICAgICAgVGV4dCBEYW5p c2g9DQogICAgICBUZXh0IERhbmlzaD1NYW4gaW5zdGFsbGVyZXIgaSBlbiBhbmRlbiBtYXBw ZSB2ZWQgYXQga2xpa2tlIHDlIEJyb3dzZSBvZyB25mxnZSBlbiBhbmRlbiBtYXBwZS4NCiAg ICAgIFRleHQgRGFuaXNoPQ0KICAgICAgVGV4dCBEYW5pc2g9TWFuIGthbiB25mxnZSBpa2tl IGF0IGluc3RhbGxlcmUgJUFQUFRJVExFJSB2ZWQgYXQga2xpa2tlIHDlIFNsZXQgb2cgZm9y bGFkZSBpbnN0YWxsYXRpb25zcHJvZ3JhbW1ldC4NCiAgICAgIFRleHQgRHV0Y2g9SGV0IGlu c3RhbGxhdGllcHJvZ3JhbW1hIGluc3RhbGxlZXJ0ICVBUFBUSVRMRSUgaW4gZGUgdm9sZ2Vu ZGUgZGlyZWN0b3J5Lg0KICAgICAgVGV4dCBEdXRjaD0NCiAgICAgIFRleHQgRHV0Y2g9QWxz IHUgaGV0IGluIGVlbiBhbmRlcmUgZGlyZWN0b3J5IHdpbHQgaW5zdGFsbGVyZW4sIGtsaWsg ZGFuIG9wIEJsYWRlcmVuIGVuIGtpZXMgZWVuIGFuZGVyZSBsb2NhdGllLg0KICAgICAgVGV4 dCBEdXRjaD0NCiAgICAgIFRleHQgRHV0Y2g9VSBrdW50IGVydm9vciBraWV6ZW4gb20gJUFQ UFRJVExFJSBuaWV0IHRlIGluc3RhbGxlcmVuOiBrbGlrIG9wIEFubnVsZXJlbiBvbSBoZXQg aW5zdGFsbGF0aWVwcm9ncmFtbWEgdGUgdmVybGF0ZW4uDQogICAgICBUZXh0IE5vcndlZ2lh bj1PcHBzZXR0IHZpbCBpbnN0YWxsZXJlICVBUFBUSVRMRSUgaSBm+GxnZW5kZSBtYXBwZS4N CiAgICAgIFRleHQgTm9yd2VnaWFuPQ0KICAgICAgVGV4dCBOb3J3ZWdpYW49Rm9yIOUgaW5z dGFsbGVyZSBpIGVuIGFubmVuIG1hcHBlLCBrbGlrayBCbGEgaWdqZW5ub20gb2cgdmVsZyBl biBhbm5lbiBtYXBwZS4NCiAgICAgIFRleHQgTm9yd2VnaWFuPQ0KICAgICAgVGV4dCBOb3J3 ZWdpYW49RHUga2FuIHZlbGdlIOUgaWtrZSBpbnN0YWxsZXJlICVBUFBUSVRMRSUgdmVkIOUg dmVsZ2UgQXZicnl0IGZvciDlIGflIHV0IGF2IE9wcHNldHQuDQogICAgICBUZXh0IFN3ZWRp c2g9SW5zdGFsbGF0aW9uc3Byb2dyYW1tZXQgaW5zdGFsbGVyYXIgJUFQUFRJVExFJSBpIGb2 bGphbmRlIG1hcHAuDQogICAgICBUZXh0IFN3ZWRpc2g9DQogICAgICBUZXh0IFN3ZWRpc2g9 T20gZHUgdmlsbCBhdHQgaW5zdGFsbGF0aW9uZW4gc2thIGf2cmFzIGkgZW4gYW5uYW4gbWFw cCwga2xpY2thciBkdSBw5SBCbORkZHJhIG9jaCB25GxqZXIgZW4gYW5uYW4gbWFwcC4NCiAg ICAgIFRleHQgU3dlZGlzaD0NCiAgICAgIFRleHQgU3dlZGlzaD1EdSBrYW4gduRsamEgYXR0 IGludGUgaW5zdGFsbGVyYSAlQVBQVElUTEUlIGdlbm9tIGF0dCBrbGlja2EgcOUgQXZicnl0 IGb2ciBhdHQgbORtbmEgaW5zdGFsbGF0aW9uc3Byb2dyYW1tZXQuDQogICAgZW5kDQogICAg aXRlbTogU3RhdGljDQogICAgICBSZWN0YW5nbGU9OTAgMTM0IDI2MCAxNjINCiAgICAgIEFj dGlvbj0xDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAxMTENCiAgICAgIFRleHQ9RGVzdGluYXRpb24gRm9sZGVyDQogICAgICBUZXh0IEZyZW5j aD1S6XBlcnRvaXJlIGRlIGRlc3RpbmF0aW9uDQogICAgICBUZXh0IEdlcm1hbj1aaWVsb3Jk bmVyDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9UGFzdGEgZGUgRGVzdGlubw0KICAgICAgVGV4 dCBTcGFuaXNoPUNhcnBldGEgZGUgRGVzdGlubw0KICAgICAgVGV4dCBJdGFsaWFuPUNhcnRl bGxhIGRpIGRlc3RpbmF6aW9uZQ0KICAgICAgVGV4dCBEYW5pc2g9RGVzdGluYXRpb25zbWFw cGUNCiAgICAgIFRleHQgRHV0Y2g9RG9lbGRpcmVjdG9yeQ0KICAgICAgVGV4dCBOb3J3ZWdp YW49TeVsbWFwcGUNCiAgICAgIFRleHQgU3dlZGlzaD1EZXN0aW5hdGlvbnNtYXBwDQogICAg ZW5kDQogICAgaXRlbTogUHVzaCBCdXR0b24NCiAgICAgIFJlY3RhbmdsZT0yMTMgMTQzIDI1 NSAxNTcNCiAgICAgIFZhcmlhYmxlPU1BSU5ESVJfU0FWRQ0KICAgICAgVmFsdWU9JU1BSU5E SVIlDQogICAgICBEZXN0aW5hdGlvbiBEaWFsb2c9MQ0KICAgICAgQWN0aW9uPTINCiAgICAg IENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMA0KICAgICAg VGV4dD1CJnJvd3NlLi4uDQogICAgICBUZXh0IEZyZW5jaD1QJmFyY291cmlyDQogICAgICBU ZXh0IEdlcm1hbj1CJmzkdHRlcm4uLi4NCiAgICAgIFRleHQgUG9ydHVndWVzZT1QJnJvY3Vy YXINCiAgICAgIFRleHQgU3BhbmlzaD1WJmlzdWFsaXphci4uLg0KICAgICAgVGV4dCBJdGFs aWFuPVNmb2dsaWEuLi4NCiAgICAgIFRleHQgRGFuaXNoPSZHZW5uZW1zZS4uLg0KICAgICAg VGV4dCBEdXRjaD1CJmxhZGVyZW4uLi4NCiAgICAgIFRleHQgTm9yd2VnaWFuPUJsYSBpZ2pl bm5vbQ0KICAgICAgVGV4dCBTd2VkaXNoPSZCbORkZHJhDQogICAgZW5kDQogICAgaXRlbTog U3RhdGljDQogICAgICBSZWN0YW5nbGU9OTUgMTQ2IDIxMSAxNTcNCiAgICAgIERlc3RpbmF0 aW9uIERpYWxvZz0yDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDANCiAgICAgIFRleHQ9JU1BSU5ESVIlDQogICAgICBUZXh0IEZyZW5jaD0l TUFJTkRJUiUNCiAgICAgIFRleHQgR2VybWFuPSVNQUlORElSJQ0KICAgICAgVGV4dCBQb3J0 dWd1ZXNlPSVNQUlORElSJQ0KICAgICAgVGV4dCBTcGFuaXNoPSVNQUlORElSJQ0KICAgICAg VGV4dCBJdGFsaWFuPSVNQUlORElSJQ0KICAgICAgVGV4dCBEYW5pc2g9JU1BSU5ESVIlDQog ICAgICBUZXh0IER1dGNoPSVNQUlORElSJQ0KICAgICAgVGV4dCBOb3J3ZWdpYW49JU1BSU5E SVIlDQogICAgICBUZXh0IFN3ZWRpc2g9JU1BSU5ESVIlDQogICAgZW5kDQogIGVuZA0KICBp dGVtOiBEaWFsb2cNCiAgICBUaXRsZT1TZWxlY3QgRGVzdGluYXRpb24gRGlyZWN0b3J5DQog ICAgVGl0bGUgRnJlbmNoPUNob2lzaXNzZXogbGUgculwZXJ0b2lyZSBkZSBkZXN0aW5hdGlv bg0KICAgIFRpdGxlIEdlcm1hbj1aaWVsdmVyemVpY2huaXMgd+RobGVuDQogICAgVGl0bGUg UG9ydHVndWVzZT1TZWxlY2Npb25hciBEaXJlY3TzcmlvIGRlIERlc3Rpbm8NCiAgICBUaXRs ZSBTcGFuaXNoPVNlbGVjY2lvbmUgZWwgRGlyZWN0b3JpbyBkZSBEZXN0aW5vDQogICAgVGl0 bGUgSXRhbGlhbj1TZWxlemlvbmEgRGlyZWN0b3J5IGRpIGRlc3RpbmF6aW9uZQ0KICAgIFRp dGxlIERhbmlzaD1W5mxnIERlc3RpbmF0aW9uc2JpYmxpb3Rlaw0KICAgIFRpdGxlIER1dGNo PUtpZXMgZG9lbGRpcmVjdG9yeQ0KICAgIFRpdGxlIE5vcndlZ2lhbj1WZWxnIG3lbGthdGFs b2cNCiAgICBUaXRsZSBTd2VkaXNoPVbkbGogZGVzdGluYXRpb25za2FsYXRvZw0KICAgIFdp ZHRoPTIyMQ0KICAgIEhlaWdodD0xNzMNCiAgICBGb250IE5hbWU9SGVsdg0KICAgIEZvbnQg U2l6ZT04DQogICAgaXRlbTogTGlzdGJveA0KICAgICAgUmVjdGFuZ2xlPTUgMiAxNjAgMTQ5 DQogICAgICBWYXJpYWJsZT1NQUlORElSDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAx MDAwMDAwMTAwMDAwMDAxMDEwMDAwMDANCiAgICAgIEZsYWdzPTAwMDAxMTAwMDAxMDAwMTAN CiAgICAgIFRleHQ9JU1BSU5ESVIlDQogICAgICBUZXh0IEZyZW5jaD0lTUFJTkRJUiUNCiAg ICAgIFRleHQgR2VybWFuPSVNQUlORElSJQ0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPSVNQUlO RElSJQ0KICAgICAgVGV4dCBTcGFuaXNoPSVNQUlORElSJQ0KICAgICAgVGV4dCBJdGFsaWFu PSVNQUlORElSJQ0KICAgICAgVGV4dCBEYW5pc2g9JU1BSU5ESVIlDQogICAgICBUZXh0IER1 dGNoPSVNQUlORElSJQ0KICAgICAgVGV4dCBOb3J3ZWdpYW49JU1BSU5ESVIlDQogICAgICBU ZXh0IFN3ZWRpc2g9JU1BSU5ESVIlDQogICAgZW5kDQogICAgaXRlbTogUHVzaCBCdXR0b24N CiAgICAgIFJlY3RhbmdsZT0xNjcgNiAyMTIgMjENCiAgICAgIENyZWF0ZSBGbGFncz0wMTAx MDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQ0KICAgICAgVGV4dD1PSw0KICAgICAgVGV4 dCBGcmVuY2g9T0sNCiAgICAgIFRleHQgR2VybWFuPU9LDQogICAgICBUZXh0IFBvcnR1Z3Vl c2U9T0sNCiAgICAgIFRleHQgU3BhbmlzaD1BQ0VQVEFSDQogICAgICBUZXh0IEl0YWxpYW49 T0sNCiAgICAgIFRleHQgRGFuaXNoPU9LDQogICAgICBUZXh0IER1dGNoPU9LDQogICAgICBU ZXh0IE5vcndlZ2lhbj1PSw0KICAgICAgVGV4dCBTd2VkaXNoPU9LDQogICAgZW5kDQogICAg aXRlbTogUHVzaCBCdXR0b24NCiAgICAgIFJlY3RhbmdsZT0xNjcgMjUgMjEyIDQwDQogICAg ICBWYXJpYWJsZT1NQUlORElSDQogICAgICBWYWx1ZT0lTUFJTkRJUl9TQVZFJQ0KICAgICAg Q3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwDQogICAgICBG bGFncz0wMDAwMDAwMDAwMDAwMDAxDQogICAgICBUZXh0PUNhbmNlbA0KICAgICAgVGV4dCBG cmVuY2g9QW5udWxlcg0KICAgICAgVGV4dCBHZXJtYW49QWJicmVjaGVuIA0KICAgICAgVGV4 dCBQb3J0dWd1ZXNlPUNhbmNlbGFyDQogICAgICBUZXh0IFNwYW5pc2g9Q2FuY2VsYXINCiAg ICAgIFRleHQgSXRhbGlhbj1Bbm51bGxhDQogICAgICBUZXh0IERhbmlzaD1TbGV0DQogICAg ICBUZXh0IER1dGNoPUFubnVsZXJlbg0KICAgICAgVGV4dCBOb3J3ZWdpYW49QXZicnl0DQog ICAgICBUZXh0IFN3ZWRpc2g9QXZicnl0DQogICAgZW5kDQogIGVuZA0KZW5kDQppdGVtOiBD dXN0b20gRGlhbG9nIFNldA0KICBOYW1lPVN0YXJ0IEluc3RhbGxhdGlvbg0KICBEaXNwbGF5 IFZhcmlhYmxlPURJU1BMQVkNCiAgaXRlbTogRGlhbG9nDQogICAgVGl0bGU9U3RhcnQgSW5z dGFsbGF0aW9uDQogICAgVGl0bGUgRnJlbmNoPUNvbW1lbmNlciBsJ2luc3RhbGxhdGlvbg0K ICAgIFRpdGxlIEdlcm1hbj1JbnN0YWxsYXRpb24gYmVnaW5uZW4NCiAgICBUaXRsZSBQb3J0 dWd1ZXNlPUluaWNpYXIgSW5zdGFsYefjbw0KICAgIFRpdGxlIFNwYW5pc2g9Q29tZW56YXIg bGEgSW5zdGFsYWNp824NCiAgICBUaXRsZSBJdGFsaWFuPUF2dmlhIEluc3RhbGxhemlvbmUN CiAgICBUaXRsZSBEYW5pc2g9U3RhcnQgaW5zdGFsbGF0aW9uZW4NCiAgICBUaXRsZSBEdXRj aD1TdGFydCBkZSBpbnN0YWxsYXRpZQ0KICAgIFRpdGxlIE5vcndlZ2lhbj1TdGFydCBpbnN0 YWxsZXJpbmdlbg0KICAgIFRpdGxlIFN3ZWRpc2g9U3RhcnRhIGluc3RhbGxhdGlvbmVuDQog ICAgV2lkdGg9MjgwDQogICAgSGVpZ2h0PTIyNA0KICAgIEZvbnQgTmFtZT1IZWx2DQogICAg Rm9udCBTaXplPTgNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0KICAgICAgUmVjdGFuZ2xlPTE3 MiAxODUgMjE0IDE5OQ0KICAgICAgVmFyaWFibGU9RElSRUNUSU9ODQogICAgICBWYWx1ZT1O DQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDEN CiAgICAgIFRleHQ9Jk5leHQgPg0KICAgICAgVGV4dCBGcmVuY2g9JlN1aXZhbnQ+DQogICAg ICBUZXh0IEdlcm1hbj0mV2VpdGVyPg0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPSZQcvN4aW1v Pg0KICAgICAgVGV4dCBTcGFuaXNoPSZTaWd1aWVudGUgPg0KICAgICAgVGV4dCBJdGFsaWFu PSZBdmFudGkgPg0KICAgICAgVGV4dCBEYW5pc2g9Jk7mc3RlPg0KICAgICAgVGV4dCBEdXRj aD0mVm9sZ2VuZGU+DQogICAgICBUZXh0IE5vcndlZ2lhbj0mTmVzdGU+DQogICAgICBUZXh0 IFN3ZWRpc2g9Jk7kc3RhID4NCiAgICBlbmQNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0KICAg ICAgUmVjdGFuZ2xlPTEzMCAxODUgMTcyIDE5OQ0KICAgICAgVmFyaWFibGU9RElSRUNUSU9O DQogICAgICBWYWx1ZT1CDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAw MDAwMDAwMDAwMDAwMDANCiAgICAgIFRleHQ9PCAmQmFjaw0KICAgICAgVGV4dCBGcmVuY2g9 PCZSZXRvdXINCiAgICAgIFRleHQgR2VybWFuPTwmWnVy/GNrDQogICAgICBUZXh0IFBvcnR1 Z3Vlc2U9PCZSZXRvcm5hcg0KICAgICAgVGV4dCBTcGFuaXNoPTwmUmV0cm9jZWRlcg0KICAg ICAgVGV4dCBJdGFsaWFuPTwgJkluZGlldHJvDQogICAgICBUZXh0IERhbmlzaD08JlRpbGJh Z2UNCiAgICAgIFRleHQgRHV0Y2g9PCZUZXJ1Zw0KICAgICAgVGV4dCBOb3J3ZWdpYW49PCZU aWxiYWtlDQogICAgICBUZXh0IFN3ZWRpc2g9PCAmVGlsbGJha2ENCiAgICBlbmQNCiAgICBp dGVtOiBQdXNoIEJ1dHRvbg0KICAgICAgUmVjdGFuZ2xlPTIyMiAxODUgMjY0IDE5OQ0KICAg ICAgQWN0aW9uPTMNCiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAw MDAwMDAwMDAwMA0KICAgICAgVGV4dD1DYW5jZWwNCiAgICAgIFRleHQgRnJlbmNoPUFubnVs ZXINCiAgICAgIFRleHQgR2VybWFuPUFiYnJlY2hlbg0KICAgICAgVGV4dCBQb3J0dWd1ZXNl PUNhbmNlbGFyDQogICAgICBUZXh0IFNwYW5pc2g9Q2FuY2VsYXINCiAgICAgIFRleHQgSXRh bGlhbj1Bbm51bGxhDQogICAgICBUZXh0IERhbmlzaD1Bbm51bGxlcg0KICAgICAgVGV4dCBE dXRjaD1Bbm51bGVyZW4NCiAgICAgIFRleHQgTm9yd2VnaWFuPUF2YnJ5dA0KICAgICAgVGV4 dCBTd2VkaXNoPUF2YnJ5dA0KICAgIGVuZA0KICAgIGl0ZW06IFN0YXRpYw0KICAgICAgUmVj dGFuZ2xlPTkgMTc3IDI2MyAxNzgNCiAgICAgIEFjdGlvbj0zDQogICAgICBDcmVhdGUgRmxh Z3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTENCiAgICBlbmQNCiAgICBpdGVt OiBTdGF0aWMNCiAgICAgIFJlY3RhbmdsZT05MCAxMCAyNjAgNzANCiAgICAgIENyZWF0ZSBG bGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA0KICAgICAgVGV4dD1Zb3Ug YXJlIG5vdyByZWFkeSB0byBpbnN0YWxsICVBUFBUSVRMRSUuDQogICAgICBUZXh0PQ0KICAg ICAgVGV4dD1QcmVzcyB0aGUgTmV4dCBidXR0b24gdG8gYmVnaW4gdGhlIGluc3RhbGxhdGlv biBvciB0aGUgQmFjayBidXR0b24gdG8gcmVlbnRlciB0aGUgaW5zdGFsbGF0aW9uIGluZm9y bWF0aW9uLg0KICAgICAgVGV4dCBGcmVuY2g9Vm91cyDqdGVzIG1haW50ZW5hbnQgcHLqdCDg IGluc3RhbGxlciAlQVBQVElUTEUlDQogICAgICBUZXh0IEZyZW5jaD0NCiAgICAgIFRleHQg RnJlbmNoPUNsaXF1ZXogc3VyIFN1aXZhbnQgcG91ciBjb21tZW5jZXIgbCdpbnN0YWxsYXRp b24gb3UgUmV0b3VyIHBvdXIgZW50cmVyIOAgbm91dmVhdSBsZXMgaW5mb3JtYXRpb25zIGQn aW5zdGFsbGF0aW9uDQogICAgICBUZXh0IEdlcm1hbj1TaWUgc2luZCBqZXR6dCB6dXIgSW5z dGFsbGF0aW9uIHZvbiAlQVBQVElUTEUlIGJlcmVpdC4NCiAgICAgIFRleHQgR2VybWFuPQ0K ICAgICAgVGV4dCBHZXJtYW49QXVmIGRpZSBTY2hhbHRmbORjaGUgV2VpdGVyIGtsaWNrZW4s IHVtIG1pdCBkZW0gU3RhcnQgZGVyIEluc3RhbGxhdGlvbiB6dSBiZWdpbm5lbiwgb2RlciBh dWYgZGllIFNjaGFsdGZs5GNoZSBadXL8Y2ssIHVtIGRpZSBJbnN0YWxsYXRpb25zaW5mb3Jt YXRpb25lbiBub2NobWFscyBhdWZ6dXJ1ZmVuLg0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPUVz dOEgYWdvcmEgcHJvbnRvIHBhcmEgaW5zdGFsYXIgJUFQUFRJVExFJQ0KICAgICAgVGV4dCBQ b3J0dWd1ZXNlPQ0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPVByZXNzaW9uZSBvIGJvdONvIFBy 83hpbW8gcGFyYSBjb21l52FyIGEgaW5zdGFsYefjbyBvdSBvIGJvdONvIFJldG9ybmFyIHBh cmEgaW50cm9kdXppciBub3ZhbWVudGUgYSBpbmZvcm1h5+NvIHNvYnJlIGEgaW5zdGFsYefj bw0KICAgICAgVGV4dCBTcGFuaXNoPUFob3JhIGVzdGFy4SBsaXN0byBwYXJhIGluc3RhbGFy ICVBUFBUSVRMRSUuDQogICAgICBUZXh0IFNwYW5pc2g9DQogICAgICBUZXh0IFNwYW5pc2g9 UHVsc2UgZWwgYm90824gZGUgU2lndWllbnRlIHBhcmEgY29tZW56YXIgbGEgaW5zdGFsYWNp 824gbyBlbCBib3TzbiBSZXRyb2NlZGVyIHBhcmEgdm9sdmVyIGEgaW50cm9kdWNpciBsYSBp bmZvcm1hY2nzbiBzb2JyZSBsYSBpbnN0YWxhY2nzbi4NCiAgICAgIFRleHQgSXRhbGlhbj1T ZWkgcHJvbnRvIGFkIGluc3RhbGxhcmUgJUFQUFRJVExFJS4NCiAgICAgIFRleHQgSXRhbGlh bj0NCiAgICAgIFRleHQgSXRhbGlhbj1QcmVtaSBpbCB0YXN0byBBdmFudGkgcGVyIGluaXpp YXJlIGySaW5zdGFsbGF6aW9uZSBvIGlsIHRhc3RvIEluZGlldHJvIHBlciByaWVudHJhcmUg bnVvdmFtZW50ZSBuZWkgZGF0aSBzdWxskmluc3RhbGxhemlvbmUNCiAgICAgIFRleHQgRGFu aXNoPUR1IGVyIG51IGtsYXIgdGlsIGF0IGluc3RhbGxlcmUgJUFQUFRJVExFJS4NCiAgICAg IFRleHQgRGFuaXNoPQ0KICAgICAgVGV4dCBEYW5pc2g9S2xpayBw5SBO5nN0ZSBmb3IgYXQg c3RhcnRlIGluc3RhbGxhdGlvbmVuIGVsbGVyIHDlIFRpbGJhZ2UgZm9yIGF0IOZuZHJlIGlu c3RhbGxhdGlvbnNvcGx5c25pbmdlcm5lLg0KICAgICAgVGV4dCBEdXRjaD1VIGJlbnQgbnUg a2xhYXIgb20gJUFQUFRJVExFJSB0ZSBpbnN0YWxsZXJlbi4NCiAgICAgIFRleHQgRHV0Y2g9 DQogICAgICBUZXh0IER1dGNoPURydWsgb3AgVm9sZ2VuZGUgb20gbWV0IGRlIGluc3RhbGxh dGllIHRlIGJlZ2lubmVuIG9mIG9wIFRlcnVnIG9tIGRlIGluc3RhbGxhdGllLWluZm9ybWF0 aWUgb3BuaWV1dyBpbiB0ZSB2b2VyZW4uDQogICAgICBUZXh0IE5vcndlZ2lhbj1EdSBlciBu 5SBrbGFyIHRpbCDlIGluc3RhbGxlcmUgJUFQUFRJVExFJQ0KICAgICAgVGV4dCBOb3J3ZWdp YW49DQogICAgICBUZXh0IE5vcndlZ2lhbj1UcnlrayBw5SBOZXN0ZS10YXN0ZW4gZm9yIOUg c3RhcnRlIGluc3RhbGxlcmluZ2VuLCBlbGxlciBUaWxiYWtlLXRhc3RlbiBmb3Ig5SB0YXN0 ZSBpbm4gaW5zdGFsbGFzam9uc2luZm9ybWFzam9uZW4gcOUgbnl0dC4NCiAgICAgIFRleHQg U3dlZGlzaD1EdSDkciBudSByZWRvIGF0dCBpbnN0YWxsZXJhICVBUFBUSVRMRSUuDQogICAg ICBUZXh0IFN3ZWRpc2g9DQogICAgICBUZXh0IFN3ZWRpc2g9VHJ5Y2sgcOUgTuRzdGEgZvZy IGF0dCBzdGFydGEgaW5zdGFsbGF0aW9uZW4gZWxsZXIgcOUgVGlsbGJha2EgZvZyIGF0dCBz a3JpdmEgaW4gaW5zdGFsbGF0aW9uc2luZm9ybWF0aW9uZW4gcOUgbnl0dC4NCiAgICBlbmQN CiAgZW5kDQplbmQNCml0ZW06IElmL1doaWxlIFN0YXRlbWVudA0KICBWYXJpYWJsZT1ESVNQ TEFZDQogIFZhbHVlPVNlbGVjdCBEZXN0aW5hdGlvbiBEaXJlY3RvcnkNCmVuZA0KaXRlbTog U2V0IFZhcmlhYmxlDQogIFZhcmlhYmxlPUJBQ0tVUA0KICBWYWx1ZT0lTUFJTkRJUiVcQkFD S1VQDQplbmQNCml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBJZi9XaGlsZSBTdGF0ZW1l bnQNCiAgVmFyaWFibGU9RElTUExBWQ0KICBWYWx1ZT1TZWxlY3QgRGF0YSBEaXJlY3RvcnkN CmVuZA0KaXRlbTogQ2hlY2sgaWYgRmlsZS9EaXIgRXhpc3RzDQogIFBhdGhuYW1lPSVEQVRB RElSJVxzZXJ2ZXIuaW5pDQogIEZsYWdzPTAwMDAwMTAxDQplbmQNCml0ZW06IElmL1doaWxl IFN0YXRlbWVudA0KICBWYXJpYWJsZT1ESVJFQ1RJT04NCiAgVmFsdWU9Tg0KZW5kDQppdGVt OiBEaXNwbGF5IE1lc3NhZ2UNCiAgVGl0bGUgR2VybWFuPUtlaW4gRGF0ZW4tUGZhZA0KICBU ZXh0IEdlcm1hbj1EYXMgVmVyemVpY2huaXMgJURBVEFESVIlIHd1cmRlIG5pY2h0IGdlZnVu ZGVuIG9kZXIgaXN0IGtlaW4gZ/xsdGlnZXMgVmVyemVpY2huaXMgZvxyIGRpZXNlIEFwcGxp a2F0aW9uLiBCaXR0ZSBzdGVsbGVuIFNpZSBzaWNoZXIsIGRh3yBTaWUgZGllIERhdGVuIGRh cyBSZWRha3Rpb25zc3lzdGVtcyAqdm9yKiBkZW0gUnNHbVNlcnZlciBpbnN0YWxsaWVyZW4u DQogIEZsYWdzPTAwMDAxMDAwDQplbmQNCml0ZW06IFNldCBWYXJpYWJsZQ0KICBWYXJpYWJs ZT1ESVJFQ1RJT04NCiAgVmFsdWU9WA0KZW5kDQppdGVtOiBFbmQgQmxvY2sNCmVuZA0KaXRl bTogRW5kIEJsb2NrDQplbmQNCml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBJZi9XaGls ZSBTdGF0ZW1lbnQNCiAgVmFyaWFibGU9RElTUExBWQ0KICBWYWx1ZT1TZWxlY3QgQ29tbW9u IERpcmVjdG9yeQ0KZW5kDQppdGVtOiBDcmVhdGUgRGlyZWN0b3J5DQogIFBhdGhuYW1lPSVT X0RJUiUNCmVuZA0KaXRlbTogQ2hlY2sgaWYgRmlsZS9EaXIgRXhpc3RzDQogIFBhdGhuYW1l PSVTX0RJUiUNCiAgRmxhZ3M9MDAwMDAxMDENCmVuZA0KaXRlbTogSWYvV2hpbGUgU3RhdGVt ZW50DQogIFZhcmlhYmxlPURJUkVDVElPTg0KICBWYWx1ZT1ODQplbmQNCml0ZW06IERpc3Bs YXkgTWVzc2FnZQ0KICBUaXRsZSBHZXJtYW49S2VpbiBFeHBvcnQvSW1wb3J0LVBmYWQNCiAg VGV4dCBHZXJtYW49RGFzIFZlcnplaWNobmlzICVTX0RJUiUgd3VyZGUgbmljaHQgZ2VmdW5k ZW4gb2RlciBrb25udGUgbmljaHQgZXJzdGVsbHQgd2VyZGVuLiBCaXR0ZSB35GhsZW4gU2ll IGVpbiBhbmRlcmVzIFZlcnplaWNobmlzLiBCZWFjaHRlbiBTaWUgZGFiZWksIGRh3yBkaWVz ZXMgVmVyemVpY2huaXMgc293b2hsIGb8ciBkZW4gU2VydmVyIGFscyBhdWNoIGb8ciBkaWUg S2xpZW50ZW4gInNpY2h0YmFyIiBzZWluIG113y4NCiAgRmxhZ3M9MDAwMDEwMDANCmVuZA0K aXRlbTogU2V0IFZhcmlhYmxlDQogIFZhcmlhYmxlPURJUkVDVElPTg0KICBWYWx1ZT1YDQpl bmQNCml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBFbmQgQmxvY2sNCmVuZA0KaXRlbTog RW5kIEJsb2NrDQplbmQNCml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBJZi9XaGlsZSBT dGF0ZW1lbnQNCiAgVmFyaWFibGU9RE9CQUNLVVANCiAgVmFsdWU9QQ0KZW5kDQppdGVtOiBT ZXQgVmFyaWFibGUNCiAgVmFyaWFibGU9QkFDS1VQRElSDQogIFZhbHVlPSVCQUNLVVAlDQpl bmQNCml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQNCiAg VmFyaWFibGU9QlJBTkRJTkcNCiAgVmFsdWU9MQ0KZW5kDQppdGVtOiBJZi9XaGlsZSBTdGF0 ZW1lbnQNCiAgVmFyaWFibGU9RE9CUkFORA0KICBWYWx1ZT0xDQplbmQNCml0ZW06IEVkaXQg SU5JIEZpbGUNCiAgUGF0aG5hbWU9JUlOU1QlXENVU1REQVRBLklOSQ0KICBTZXR0aW5ncz1b UmVnaXN0cmF0aW9uXQ0KICBTZXR0aW5ncz1OQU1FPSVOQU1FJQ0KICBTZXR0aW5ncz1DT01Q QU5ZPSVDT01QQU5ZJQ0KICBTZXR0aW5ncz0NCmVuZA0KaXRlbTogRW5kIEJsb2NrDQplbmQN Cml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBPcGVuL0Nsb3NlIElOU1RBTEwuTE9HDQpl bmQNCml0ZW06IENoZWNrIERpc2sgU3BhY2UNCiAgQ29tcG9uZW50PUNPTVBPTkVOVFMNCmVu ZA0KaXRlbTogSW5jbHVkZSBTY3JpcHQNCiAgUGF0aG5hbWU9JV9XSVNFXyVcSU5DTFVERVx1 bmluc3RhbC53c2UNCmVuZA0KaXRlbTogUmVtYXJrDQogIFRleHQ9RWlnZW50bGljaGUgSW5z dGFsbGF0aW9uDQplbmQNCml0ZW06IEluc3RhbGwgRmlsZQ0KICBTb3VyY2U9SDpccG5zXFBy b2pla3RlXEdhdWx0XFJzR21TZXJ2ZXINCiAgRGVzdGluYXRpb249JU1BSU5ESVIlDQogIEZs YWdzPTAwMDAwMDAxMTAwMDAwMTANCmVuZA0KaXRlbTogUmVtYXJrDQogIFRleHQ9RWRpdGll cmVuIGRlciBJbmktRGF0ZWllbiA5OTA3MjIgYWxzIHJhdyBzdHJpbmcNCmVuZA0KaXRlbTog SW5zZXJ0IExpbmUgaW50byBUZXh0IEZpbGUNCiAgUGF0aG5hbWU9JU1BSU5ESVIlXFJzR2xv YnMucHkNCiAgTmV3IFRleHQ9ICBSc0dsb2JzLnNlcnZlclJvb3QgPSByJycnJURBVEFESVIl LycnJw0KICBTZWFyY2ggVGV4dD0gIFJzR2xvYnMuc2VydmVyUm9vdA0KICBDb21tZW50IFRl eHQ9ICAjIA0KICBMaW5lIE51bWJlcj0wDQogIEZsYWdzPTAwMDEwMDAwDQplbmQNCml0ZW06 IFNldCBWYXJpYWJsZQ0KICBWYXJpYWJsZT1TX0RJUg0KICBWYWx1ZT0lU19ESVIlDQogIEZs YWdzPTAwMDAxMTAwDQplbmQNCml0ZW06IFNldCBWYXJpYWJsZQ0KICBWYXJpYWJsZT1TX0RJ Ug0KICBWYWx1ZT0lU19ESVIlXA0KZW5kDQppdGVtOiBJbnNlcnQgTGluZSBpbnRvIFRleHQg RmlsZQ0KICBQYXRobmFtZT0lREFUQURJUiVcc2VydmVyLmluaQ0KICBOZXcgVGV4dD1zZGly PSVTX0RJUiUNCiAgU2VhcmNoIFRleHQ9c2Rpcj0NCiAgQ29tbWVudCBUZXh0PSMgDQogIExp bmUgTnVtYmVyPTANCiAgRmxhZ3M9MDAwMTAwMTANCmVuZA0KaXRlbTogSW5zZXJ0IExpbmUg aW50byBUZXh0IEZpbGUNCiAgUGF0aG5hbWU9JURBVEFESVIlXHNlcnZlci5pbmkNCiAgTmV3 IFRleHQ9Y2Rpcj0lU19ESVIlDQogIFNlYXJjaCBUZXh0PWNkaXI9DQogIENvbW1lbnQgVGV4 dD0jIA0KICBMaW5lIE51bWJlcj0wDQogIEZsYWdzPTAwMDEwMDEwDQplbmQNCml0ZW06IFNl dCBWYXJpYWJsZQ0KICBWYXJpYWJsZT1DT01NT04NCiAgVmFsdWU9JUNPTU1PTiUNCiAgRmxh Z3M9MDAwMTAxMDANCmVuZA0KaXRlbTogU2V0IFZhcmlhYmxlDQogIFZhcmlhYmxlPU1BSU5E SVINCiAgVmFsdWU9JU1BSU5ESVIlDQogIEZsYWdzPTAwMDEwMTAwDQplbmQNCml0ZW06IENo ZWNrIENvbmZpZ3VyYXRpb24NCiAgRmxhZ3M9MTAxMTEwMTENCmVuZA0KaXRlbTogR2V0IFJl Z2lzdHJ5IEtleSBWYWx1ZQ0KICBWYXJpYWJsZT1TVEFSVFVQRElSDQogIEtleT1Tb2Z0d2Fy ZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxFeHBsb3JlclxTaGVsbCBGb2xk ZXJzDQogIERlZmF1bHQ9JVdJTiVcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydFVwDQogIFZh bHVlIE5hbWU9U3RhcnRVcA0KICBGbGFncz0wMDAwMDAxMA0KZW5kDQppdGVtOiBHZXQgUmVn aXN0cnkgS2V5IFZhbHVlDQogIFZhcmlhYmxlPURFU0tUT1BESVINCiAgS2V5PVNvZnR3YXJl XE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEV4cGxvcmVyXFNoZWxsIEZvbGRl cnMNCiAgRGVmYXVsdD0lV0lOJVxEZXNrdG9wDQogIFZhbHVlIE5hbWU9RGVza3RvcA0KICBG bGFncz0wMDAwMDAxMA0KZW5kDQppdGVtOiBHZXQgUmVnaXN0cnkgS2V5IFZhbHVlDQogIFZh cmlhYmxlPVNUQVJUTUVOVURJUg0KICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3Nc Q3VycmVudFZlcnNpb25cRXhwbG9yZXJcU2hlbGwgRm9sZGVycw0KICBEZWZhdWx0PSVXSU4l XFN0YXJ0IE1lbnUNCiAgVmFsdWUgTmFtZT1TdGFydCBNZW51DQogIEZsYWdzPTAwMDAwMDEw DQplbmQNCml0ZW06IEdldCBSZWdpc3RyeSBLZXkgVmFsdWUNCiAgVmFyaWFibGU9R1JPVVBE SVINCiAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEV4 cGxvcmVyXFNoZWxsIEZvbGRlcnMNCiAgRGVmYXVsdD0lV0lOJVxTdGFydCBNZW51XFByb2dy YW1zDQogIFZhbHVlIE5hbWU9UHJvZ3JhbXMNCiAgRmxhZ3M9MDAwMDAwMTANCmVuZA0KaXRl bTogR2V0IFJlZ2lzdHJ5IEtleSBWYWx1ZQ0KICBWYXJpYWJsZT1DU1RBUlRVUERJUg0KICBL ZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cRXhwbG9yZXJc U2hlbGwgRm9sZGVycw0KICBEZWZhdWx0PSVTVEFSVFVQRElSJQ0KICBWYWx1ZSBOYW1lPUNv bW1vbiBTdGFydHVwDQogIEZsYWdzPTAwMDAwMTAwDQplbmQNCml0ZW06IEdldCBSZWdpc3Ry eSBLZXkgVmFsdWUNCiAgVmFyaWFibGU9Q0RFU0tUT1BESVINCiAgS2V5PVNvZnR3YXJlXE1p Y3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEV4cGxvcmVyXFNoZWxsIEZvbGRlcnMN CiAgRGVmYXVsdD0lREVTS1RPUERJUiUNCiAgVmFsdWUgTmFtZT1Db21tb24gRGVza3RvcA0K ICBGbGFncz0wMDAwMDEwMA0KZW5kDQppdGVtOiBHZXQgUmVnaXN0cnkgS2V5IFZhbHVlDQog IFZhcmlhYmxlPUNTVEFSVE1FTlVESVINCiAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5k b3dzXEN1cnJlbnRWZXJzaW9uXEV4cGxvcmVyXFNoZWxsIEZvbGRlcnMNCiAgRGVmYXVsdD0l U1RBUlRNRU5VRElSJQ0KICBWYWx1ZSBOYW1lPUNvbW1vbiBTdGFydCBNZW51DQogIEZsYWdz PTAwMDAwMTAwDQplbmQNCml0ZW06IEdldCBSZWdpc3RyeSBLZXkgVmFsdWUNCiAgVmFyaWFi bGU9Q0dST1VQRElSDQogIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50 VmVyc2lvblxFeHBsb3JlclxTaGVsbCBGb2xkZXJzDQogIERlZmF1bHQ9JUdST1VQRElSJQ0K ICBWYWx1ZSBOYW1lPUNvbW1vbiBQcm9ncmFtcw0KICBGbGFncz0wMDAwMDEwMA0KZW5kDQpp dGVtOiBTZXQgVmFyaWFibGUNCiAgVmFyaWFibGU9Q0dST1VQX1NBVkUNCiAgVmFsdWU9JUdS T1VQJQ0KZW5kDQppdGVtOiBTZXQgVmFyaWFibGUNCiAgVmFyaWFibGU9R1JPVVANCiAgVmFs dWU9JUdST1VQRElSJVwlR1JPVVAlDQplbmQNCml0ZW06IEVsc2UgU3RhdGVtZW50DQplbmQN Cml0ZW06IEVuZCBCbG9jaw0KZW5kDQppdGVtOiBTZWxmLVJlZ2lzdGVyIE9DWHMvRExMcw0K ICBEZXNjcmlwdGlvbj1VcGRhdGluZyBTeXN0ZW0gQ29uZmlndXJhdGlvbiwgUGxlYXNlIFdh aXQuLi4NCmVuZA0KaXRlbTogUmVtYXJrDQogIFRleHQ9dmVyc3VjaGUsIGRpZSAucHljJ3Mg bG9zenV3ZXJkZW4NCmVuZA0KcmVtYXJrZWQgaXRlbTogQWRkIFRleHQgdG8gSU5TVEFMTC5M T0cNCiAgVGV4dD1GaWxlIFRyZWU6ICVNQUlORElSJVwqLnB5Yw0KZW5kDQpyZW1hcmtlZCBp dGVtOiBBZGQgVGV4dCB0byBJTlNUQUxMLkxPRw0KICBUZXh0PUZpbGUgVHJlZTogJU1BSU5E SVIlXG1lZHVzYVwqLnB5Yw0KZW5kDQpyZW1hcmtlZCBpdGVtOiBBZGQgVGV4dCB0byBJTlNU QUxMLkxPRw0KICBUZXh0PUZpbGUgVHJlZTogJU1BSU5ESVIlXHB5dGhvblwqLnB5Yw0KZW5k DQpyZW1hcmtlZCBpdGVtOiBBZGQgVGV4dCB0byBJTlNUQUxMLkxPRw0KICBUZXh0PUZpbGUg VHJlZTogJU1BSU5ESVIlXG1lZHVzYVxSc0hUVFBTZXJ2ZXJcKi5weWMNCmVuZA0KcmVtYXJr ZWQgaXRlbTogQWRkIFRleHQgdG8gSU5TVEFMTC5MT0cNCiAgVGV4dD1GaWxlIFRyZWU6ICVN QUlORElSJVxweXRob25cbGliXCoucHljDQplbmQNCml0ZW06IEFkZCBUZXh0IHRvIElOU1RB TEwuTE9HDQogIFRleHQ9RXhlY3V0ZSBQcm9ncmFtOiAlTUFJTkRJUiVccHl0aG9uXHB5cnVu LmV4ZSAlTUFJTkRJUiVccHl0aG9uXGVyYXNlci5weSAlTUFJTkRJUiUNCmVuZA0KaXRlbTog V2l6YXJkIEJsb2NrDQogIERpcmVjdGlvbiBWYXJpYWJsZT1ESVJFQ1RJT04NCiAgRGlzcGxh eSBWYXJpYWJsZT1ESVNQTEFZDQogIEJpdG1hcCBQYXRobmFtZT0lX1dJU0VfJVxESUFMT0dT XFRFTVBMQVRFXFdJWkFSRC5CTVANCiAgWCBQb3NpdGlvbj05DQogIFkgUG9zaXRpb249MTAN CiAgRmlsbGVyIENvbG9yPTg0MjE0NDANCiAgRmxhZ3M9MDAwMDAwMTENCmVuZA0KaXRlbTog Q3VzdG9tIERpYWxvZyBTZXQNCiAgTmFtZT1GaW5pc2hlZA0KICBEaXNwbGF5IFZhcmlhYmxl PURJU1BMQVkNCiAgaXRlbTogRGlhbG9nDQogICAgVGl0bGU9SW5zdGFsbGF0aW9uIENvbXBs ZXRlDQogICAgVGl0bGUgRnJlbmNoPUluc3RhbGxhdGlvbiBlbiBjb3Vycw0KICAgIFRpdGxl IEdlcm1hbj1JbnN0YWxsYXRpb24gYWJnZXNjaGxvc3Nlbg0KICAgIFRpdGxlIFBvcnR1Z3Vl c2U9SW5zdGFsYefjbyBDb21wbGV0YSANCiAgICBUaXRsZSBTcGFuaXNoPVNlIGhhIGNvbXBs ZXRhZG8gbGEgSW5zdGFsYWNp824NCiAgICBUaXRsZSBJdGFsaWFuPUluc3RhbGxhemlvbmUg Y29tcGxldGF0YQ0KICAgIFRpdGxlIERhbmlzaD1JbnN0YWxsYXRpb24gZ2VubmVtZvhydA0K ICAgIFRpdGxlIER1dGNoPUluc3RhbGxhdGllIGFmZ2Vyb25kDQogICAgVGl0bGUgTm9yd2Vn aWFuPUluc3RhbGxhc2pvbmVuIGVyIGZ1bGxm+HJ0DQogICAgVGl0bGUgU3dlZGlzaD1JbnN0 YWxsYXRpb25lbiBrbGFyDQogICAgV2lkdGg9MjgwDQogICAgSGVpZ2h0PTIyNA0KICAgIEZv bnQgTmFtZT1IZWx2DQogICAgRm9udCBTaXplPTgNCiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0K ICAgICAgUmVjdGFuZ2xlPTE3MCAxODUgMjEyIDE5OQ0KICAgICAgVmFyaWFibGU9RElSRUNU SU9ODQogICAgICBWYWx1ZT1ODQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAw MTAwMDAwMDAwMDAwMDAwMDENCiAgICAgIFRleHQ9JkZpbmlzaCA+DQogICAgICBUZXh0IEZy ZW5jaD0mVGVybWluZXI+DQogICAgICBUZXh0IEdlcm1hbj0mRmVydGlnc3RlbGxlbj4NCiAg ICAgIFRleHQgUG9ydHVndWVzZT0mVGVybWluYXIgPg0KICAgICAgVGV4dCBTcGFuaXNoPSZG aW5hbGl6YXI+DQogICAgICBUZXh0IEl0YWxpYW49JkZpbmUgPg0KICAgICAgVGV4dCBEYW5p c2g9JkFmc2x1dCA+DQogICAgICBUZXh0IER1dGNoPSZLbGFhcj4NCiAgICAgIFRleHQgTm9y d2VnaWFuPSZBdnNsdXR0Pg0KICAgICAgVGV4dCBTd2VkaXNoPSZTbHV0YT4NCiAgICBlbmQN CiAgICBpdGVtOiBQdXNoIEJ1dHRvbg0KICAgICAgQ29udHJvbCBOYW1lPUNBTkNFTA0KICAg ICAgUmVjdGFuZ2xlPTIyMiAxODUgMjY0IDE5OQ0KICAgICAgQWN0aW9uPTMNCiAgICAgIENy ZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMA0KICAgICAgVGV4 dD1DYW5jZWwNCiAgICAgIFRleHQgRnJlbmNoPUFubnVsZXINCiAgICAgIFRleHQgR2VybWFu PUFiYnJlY2hlbg0KICAgICAgVGV4dCBQb3J0dWd1ZXNlPUNhbmNlbGFyDQogICAgICBUZXh0 IFNwYW5pc2g9Q2FuY2VsYXINCiAgICAgIFRleHQgSXRhbGlhbj1Bbm51bGxhDQogICAgICBU ZXh0IERhbmlzaD1Bbm51bGxlcg0KICAgICAgVGV4dCBEdXRjaD1Bbm51bGVyZW4NCiAgICAg IFRleHQgTm9yd2VnaWFuPUF2YnJ5dA0KICAgICAgVGV4dCBTd2VkaXNoPUF2YnJ5dA0KICAg IGVuZA0KICAgIGl0ZW06IFN0YXRpYw0KICAgICAgUmVjdGFuZ2xlPTkgMTc3IDI2MyAxNzgN CiAgICAgIEFjdGlvbj0zDQogICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAxMTENCiAgICBlbmQNCiAgICBpdGVtOiBTdGF0aWMNCiAgICAgIFJlY3Rh bmdsZT05MCAxMCAyNjAgNjMNCiAgICAgIEVuYWJsZWQgQ29sb3I9MDAwMDAwMDAwMDAwMDAw MDExMTExMTExMTExMTExMTENCiAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMA0KICAgICAgVGV4dD0lQVBQVElUTEUlIGhhcyBiZWVuIHN1Y2Nl c3NmdWxseSBpbnN0YWxsZWQuDQogICAgICBUZXh0PQ0KICAgICAgVGV4dD0NCiAgICAgIFRl eHQ9UHJlc3MgdGhlIEZpbmlzaCBidXR0b24gdG8gZXhpdCB0aGlzIGluc3RhbGxhdGlvbi4N CiAgICAgIFRleHQ9DQogICAgICBUZXh0IEZyZW5jaD1MJ2luc3RhbGxhdGlvbiBkZSAlQVBQ VElUTEUlIGVzdCBy6XVzc2llDQogICAgICBUZXh0IEZyZW5jaD0NCiAgICAgIFRleHQgRnJl bmNoPQ0KICAgICAgVGV4dCBGcmVuY2g9Q2xpcXVleiBzdXIgVGVybWluZXIgcG91ciBxdWl0 dGVyIGNldHRlIGluc3RhbGxhdGlvbg0KICAgICAgVGV4dCBGcmVuY2g9DQogICAgICBUZXh0 IEdlcm1hbj0lQVBQVElUTEUlIHd1cmRlIGVyZm9sZ3JlaWNoIGluc3RhbGxpZXJ0Lg0KICAg ICAgVGV4dCBHZXJtYW49DQogICAgICBUZXh0IEdlcm1hbj0NCiAgICAgIFRleHQgR2VybWFu PVp1bSBCZWVuZGVuIGRpZXNlciBJbnN0YWxsYXRpb24gRmVydGlnc3RlbGxlbiBhbmtsaWNr ZW4uDQogICAgICBUZXh0IEdlcm1hbj0NCiAgICAgIFRleHQgUG9ydHVndWVzZT0lQVBQVElU TEUlIGZvaSBpbnN0YWxhZG8gY29tIOp4aXRvDQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9DQog ICAgICBUZXh0IFBvcnR1Z3Vlc2U9DQogICAgICBUZXh0IFBvcnR1Z3Vlc2U9UHJlc3Npb25h ciBvIGJvdONvIFRlcm1pbmFyIHBhcmEgc2FpciBkZXN0YSBpbnN0YWxh5+NvDQogICAgICBU ZXh0IFBvcnR1Z3Vlc2U9DQogICAgICBUZXh0IFNwYW5pc2g9JUFQUFRJVExFJSBzZSBoYSBp bnN0YWxhZG8gY29uIOl4aXRvLg0KICAgICAgVGV4dCBTcGFuaXNoPQ0KICAgICAgVGV4dCBT cGFuaXNoPQ0KICAgICAgVGV4dCBTcGFuaXNoPVB1bHNlIGVsIGJvdPNuIGRlIEZpbmFsaXph ciBwYXJhIHNhbGlyIGRlIGVzdGEgaW5zdGFsYWNp824uDQogICAgICBUZXh0IFNwYW5pc2g9 DQogICAgICBUZXh0IEl0YWxpYW49JUFQUFRJVExFJSDoIHN0YXRvIGluc3RhbGxhdG8uDQog ICAgICBUZXh0IEl0YWxpYW49DQogICAgICBUZXh0IEl0YWxpYW49DQogICAgICBUZXh0IEl0 YWxpYW49UHJlbWkgaWwgcHVsc2FudGUgRmluZSBwZXIgdXNjaXJlIGRhbCBwcm9ncmFtbWEg ZGkgaW5zdGFsbGF6aW9uZQ0KICAgICAgVGV4dCBJdGFsaWFuPQ0KICAgICAgVGV4dCBEYW5p c2g9JUFQUFRJVExFJSBlciBudSBpbnN0YWxsZXJldCBrb3JyZWt0Lg0KICAgICAgVGV4dCBE YW5pc2g9DQogICAgICBUZXh0IERhbmlzaD0NCiAgICAgIFRleHQgRGFuaXNoPUtsaWsgcOUg QWZzbHV0IGZvciBhdCBhZnNsdXR0ZSBpbnN0YWxsYXRpb25lbi4NCiAgICAgIFRleHQgRGFu aXNoPQ0KICAgICAgVGV4dCBEdXRjaD0lQVBQVElUTEUlIGlzIG1ldCBzdWNjZXMgZ2XvbnN0 YWxsZWVyZC4NCiAgICAgIFRleHQgRHV0Y2g9DQogICAgICBUZXh0IER1dGNoPQ0KICAgICAg VGV4dCBEdXRjaD1EcnVrIG9wIEtsYWFyIG9tIGRlemUgaW5zdGFsbGF0aWUgYWYgdGUgcm9u ZGVuLg0KICAgICAgVGV4dCBEdXRjaD0NCiAgICAgIFRleHQgTm9yd2VnaWFuPUluc3RhbGxh c2pvbmVuIGF2ICVBUFBUSVRMRSUgZXIgdmVsbHlra2V0Lg0KICAgICAgVGV4dCBOb3J3ZWdp YW49DQogICAgICBUZXh0IE5vcndlZ2lhbj0NCiAgICAgIFRleHQgTm9yd2VnaWFuPVRyeWtr IHDlIEF2c2x1dHQtdGFzdGVuIGZvciDlIGF2c2x1dHRlIGRlbm5lIGluc3RhbGxhc2pvbmVu Lg0KICAgICAgVGV4dCBOb3J3ZWdpYW49DQogICAgICBUZXh0IFN3ZWRpc2g9SW5zdGFsbGF0 aW9uZW4gYXYgJUFQUFRJVExFJSBoYXIgbHlja2F0cy4NCiAgICAgIFRleHQgU3dlZGlzaD0N CiAgICAgIFRleHQgU3dlZGlzaD0NCiAgICAgIFRleHQgU3dlZGlzaD1UcnljayBw5SBTbHV0 YSBm9nIgYXR0IGflIHVyIGluc3RhbGxhdGlvbnNwcm9ncmFtbWV0Lg0KICAgICAgVGV4dCBT d2VkaXNoPQ0KICAgIGVuZA0KICAgIGl0ZW06IFB1c2ggQnV0dG9uDQogICAgICBDb250cm9s IE5hbWU9QkFDSw0KICAgICAgUmVjdGFuZ2xlPTEyOCAxODUgMTcwIDE5OQ0KICAgICAgVmFy aWFibGU9RElSRUNUSU9ODQogICAgICBWYWx1ZT1CDQogICAgICBDcmVhdGUgRmxhZ3M9MDEw MTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDANCiAgICAgIFRleHQ9PCAmQmFjaw0KICAg ICAgVGV4dCBGcmVuY2g9PCZSZXRvdXINCiAgICAgIFRleHQgR2VybWFuPTwmWnVy/GNrDQog ICAgICBUZXh0IFBvcnR1Z3Vlc2U9PCZSZXRvcm5hcg0KICAgICAgVGV4dCBTcGFuaXNoPTwm UmV0cm9jZWRlcg0KICAgICAgVGV4dCBJdGFsaWFuPTwgJkluZGlldHJvDQogICAgICBUZXh0 IERhbmlzaD08JlRpbGJhZ2UNCiAgICAgIFRleHQgRHV0Y2g9PCZUZXJ1Zw0KICAgICAgVGV4 dCBOb3J3ZWdpYW49PCZUaWxiYWtlDQogICAgICBUZXh0IFN3ZWRpc2g9PCAmVGlsbGJha2EN CiAgICBlbmQNCiAgICBpdGVtOiBTZXQgQ29udHJvbCBBdHRyaWJ1dGUNCiAgICAgIENvbnRy b2wgTmFtZT1CQUNLDQogICAgICBPcGVyYXRpb249MQ0KICAgIGVuZA0KICAgIGl0ZW06IFNl dCBDb250cm9sIEF0dHJpYnV0ZQ0KICAgICAgQ29udHJvbCBOYW1lPUNBTkNFTA0KICAgICAg T3BlcmF0aW9uPTENCiAgICBlbmQNCiAgZW5kDQplbmQNCml0ZW06IEVuZCBCbG9jaw0KZW5k DQppdGVtOiBOZXcgRXZlbnQNCiAgTmFtZT1DYW5jZWwNCmVuZA0KaXRlbTogSW5jbHVkZSBT Y3JpcHQNCiAgUGF0aG5hbWU9JV9XSVNFXyVcSU5DTFVERVxyb2xsYmFjay53c2UNCmVuZA0K --------------D8E2D2A580C353919A4A6929-- From jim@interet.com Mon Aug 16 17:25:11 1999 From: jim@interet.com (James C. Ahlstrom) Date: Mon, 16 Aug 1999 12:25:11 -0400 Subject: [Distutils] Re: Add multiple frozen modules References: <1279359964-27408194@hypernet.com> <37B08746.AC72E4DB@interet.com> Message-ID: <37B83B67.99CB9186@interet.com> "James C. Ahlstrom" wrote: > I will throw out my design and re-start using your software. But > since I have tried this before I know it won't work. But maybe I > can come up with a more minimal set of changes. OK, I have a new design with a minimal set of changes. I am currently testing it by using it. All code is in ftp://ftp.interet.com/pylib.zip and pylib.tar (identical). The only core changes are to getpathp.c and sysmodule.c in order to add sys.dllfullpath so that the name of Python15.dll (the interpreter shared library) is available. This is a trivial change. The magic happens in sitecustomize.py. It installs a custom importer which uses Greg's imputil.py. The custom importer searches for the single file interet.pyl in the directory of the main executable. Obviously this is a custom name only usable by us, but that is what sitecustomize is for. Sitecustomize.py is based on Greg's easygen.py, but adds a few important features. It adds a global "Importer" as the SimpleArchive instance, and the methods enable() to turn the importer on and off, __repr__() to show the importer state, and _get_path() to get the importer name. To boot all this, I have installed exceptions.pyc, site.pyc and sitecustomize.pyc as frozen modules. Actually I froze a dozen other library files too, since this is easier than putting them in interet.pyl. The above works fine, and is an improvement over just using frozen modules. Our program files change frequently, and it is time consuming to convert the *.pyc to C strings and compile them. However, this is insufficient to enable a Python programmer to easily ship Python programs. The remaining problems are: 1) Freezing sitecustomize.py etc. requires a compiler and not all people have one. 2) I am using Greg's PYL file format which lacks pyc headers, file paths, flag bits, seeks from the end (for append ability), and multiple sections. We need a standard PYL file format. 3) The executable main program can not be in the PYL file. We need the ability to run __main__() as the main if it is present (like freeze does now), and the ability to run any main from the PYL file. 4) On windows each Python program should have its own icon, so we need a way to include icons. Comments? If there is agreement on what to do, I volunteer to write the code. Jim Ahlstrom From gward@cnri.reston.va.us Thu Aug 19 17:01:09 1999 From: gward@cnri.reston.va.us (Greg Ward) Date: Thu, 19 Aug 1999 12:01:09 -0400 Subject: [Distutils] Can now compile simple extensions Message-ID: <19990819120108.A6594@cnri.reston.va.us> Hi all -- at long last, I found the time to hack in the ability to compile extension modules to the Distutils. Mainly, this meant adding a 'build_ext' command which uses a CCompiler instance for all its dirty work. I also had to add a few methods to CCompiler (and, of course, UnixCCompiler) to make this work. And I added a new module, 'spawn', which takes care of running sub-programs more efficiently and robustly (no shell involved) than os.system. That's needed, obviously, so we can run the compiler! If you're in the mood for grubbing over raw source code, then get the latest from CVS or download a current snapshot. See http://www.python.org/sigs/distutils-sig/implementation.html for a link to the code snapshot. I'm still waiting for more subclasses of CCompiler to appear. At the very least, we're going to need MSVCCompiler to build extensions on Windows. Any takers? Also, someone who knows the Mac, and how to run compilers programmatically there, will have to figure out how to write a Mac-specific concrete CCompiler subclass. The spawn module also needs a bit of work to be portable. I suspect that _win32_spawn() (the intended analog to my _posix_spawn()) will be easy to implement, if it even needs to go in a separate function at all. It looks from the Python Library documentation for 1.5.2 that the os.spawnv() function is all we need, but it's a bit hard to figure out just what's needed. Windows wizards, please take a look at the 'spawn()' function and see if you can make it work on Windows. As for actually compiling extensions: well, if you can figure out the build_ext command, go ahead and give it a whirl. It's a bit cryptic right now, since there's no documentation and no example setup.py. (I have a working example at home, but it's not available online.) If you feel up to it, though, see if you can read the code and figure out what's going on. I'm just hoping *I'll* be able to figure out what's going on when I get back from the O'Reilly conference next week... ;-) Enjoy -- Greg -- Greg Ward - software developer gward@cnri.reston.va.us Corporation for National Research Initiatives 1895 Preston White Drive voice: +1-703-620-8990 Reston, Virginia, USA 20191-5434 fax: +1-703-620-0913 From da@ski.org Thu Aug 19 17:49:23 1999 From: da@ski.org (David Ascher) Date: Thu, 19 Aug 1999 09:49:23 -0700 (Pacific Daylight Time) Subject: [Distutils] Can now compile simple extensions In-Reply-To: <19990819120108.A6594@cnri.reston.va.us> Message-ID: > I'm still waiting for more subclasses of CCompiler to appear. At the > very least, we're going to need MSVCCompiler to build extensions on > Windows. Any takers? I think I stated in public that I would do that. Darn. =) It'll have to wait until after Monterey, but I'll do it if no one else beats me to it. --david From da@ski.org Fri Aug 20 04:20:24 1999 From: da@ski.org (David Ascher) Date: Thu, 19 Aug 1999 20:20:24 -0700 (Pacific Daylight Time) Subject: [Distutils] Can now compile simple extensions In-Reply-To: <01beeab5$b6d73590$3e3e79cf@nara.scansoft.com> Message-ID: On Thu, 19 Aug 1999, Perry A. Stoll wrote: > Nice work, Greg! I thought I'd let David take a break on this one, so > attached is an MSVCCompiler, which works for me using MSVC 5.0. Not much has > changed on the command line usage for MSVC 6.0, so this should probably work > there also. Great! It's a very good thing for Greg given his talk on Monday! A very good thing for me (for obvious reasons), and, of course, a very good thing for Python users worldwide. Thanks, Perry! --david From s341625@student.uq.edu.au Sat Aug 21 06:54:42 1999 From: s341625@student.uq.edu.au (Anthony Pfrunder) Date: Sat, 21 Aug 1999 15:54:42 +1000 (GMT+1000) Subject: [Distutils] MSVC, ming and cygwin plugins Message-ID: Hi, If you want some code for MSVC, ming and cygwin try: http://www.zope.org:1800/Members/NoneToBe/Zwin This contains a copy of Zmake which has rules for building python, the python library, a python console, extensions in Setup files, extensions in unix makefiles (simple ones only) and extensions in dsw (yes, it imports MSVC 6.0+ project files to zmake format!). It is also integreted with Gorden's freezing system. Simply "make" all the scripts you want to freeze and the system does the rest. Frozen scripts are placed in MPZ at the toplevel directory. It is supposed to work with the listed compilers but since I use VC only they may be broken. Next week I'll put up a new release with some documentation and a revamped python library builder. The new one generates a correct config.c based on which modules you want in the library. It has a SuperFreeze option where you point it to a directory containing a bunch of Setup files and a start script. It will then freeze everything - scripts, extensions, python library and a console into the one binary ;) Cheers, Anthony Pfrunder From s341625@student.uq.edu.au Sun Aug 22 03:10:32 1999 From: s341625@student.uq.edu.au (Anthony Pfrunder) Date: Sun, 22 Aug 1999 12:10:32 +1000 (GMT+1000) Subject: [Distutils] Builtin modules as external pyds Message-ID: Hi, I'm in the middle of testing zmake and have run into an interesting problem. I assume that the problem is not with my code... but who knows ;). Compiler plugin is MSVC on windows 95. I'm compiling a super-small python lib with most modules external (such as array etc) so that I can pick'n'choose the python size. I have two zmake rules: Python-lib-modules-static and Python-lib-modules-dynamic. If you add the setup rule (ie array) to the first it is bound into the pythonlib without problems (adds it to config.c etc etc). If I add array to Python-lib-modules-dynamic it compiles but the link fails because: Unresolved external symbol _PyExc_ValueError... However, if I add the Zope Extensions to the python-lib-modules-dynamic rule then they compile and link fine. They of cause have plenty of references to PyExc_ValueError. The generated pythonlib (ex array etc) works fine with a pre-compiled python binary. I note in the Setup.in in Modules array is underneath a commented out *shared*. My question is: can array and friends be compiled as pyd's or do I have to add some Windows magic to them to get it to work? Cheers, Anthony Pfrunder From pas@scansoft.com Tue Aug 24 01:40:18 1999 From: pas@scansoft.com (Perry A. Stoll) Date: Mon, 23 Aug 1999 20:40:18 -0400 Subject: [Distutils] Info on MSVCCompiler [ was: Can now compile simple extensions] Message-ID: <01beedc9$3d6a5220$3e3e79cf@nara.scansoft.com> I just got confirmation that my original post to this sig was rejected, so in case people have been wondering what David was talking about last week: I sent a set of files to get distutils working on NT. I sent this message to Greg, David, and the list. Unfortunately, it was rejected from the list being too big (40K). Greg suggested I resend the original pieces in smaller chunks: the patches to the main distribution, MSVCCompiler.py, and a small sample setup.py showing what I used to build NumPy on NT. Would anyone be interested in taking a look at these before Greg gets back from the O'Reilly Open Source conference next week? If so, drop me a note. I'll either email it or post it to the list in smaller chunks if interest warrants. Otherwise I'll wait until Greg takes a look and incorporates them into the main distribution as he sees fit. Here's the text that accompanied my first post: Nice work, Greg! I thought I'd let David take a break on this one, so attached is an MSVCCompiler, which works for me using MSVC 5.0. Not much has changed on the command line usage for MSVC 6.0, so this should probably work there also. Also, I've attached a bunch of context diffs against the main distribution. Some bug fixes, a couple other changes (like a working spawn for NT). Oh, right. I also managed to use this to compile NumPy on Windows. I've attached the setup script I used for that, too. This showed that we have a few more issues to shake out, but it's looking good! Comments on the changes (the attached diff file) and other things I noticed: 1 ) You'll notice that I added static attributes to both UnixCompiler and MSVCCompiler to hold the normal extensions for object files, shared libraries, static libraries, and executables (those _obj_ext, _exe_ext things) Also, added method object_name and shared_library_name, I needed this to get some of the test scripts (like test_cc.py) to make sense and be more portable. We might rethink how this info is actually accessed. 2) I needed to pass the build info to the link_shared_object methods of ccompiler. In this case, I needed to specify the .def file for linking the dynamic libraries. Is this ok? How else are we going to let platform specific build info get passed? This worked for now, but it's not great. 3) Added .cpp as an allowable extension. This is almost mandatory for doing any development on NT, since this is the default extension MSVC for a new C++ file. 4) Modified test/test_cc.py to be a bit more readable (my preference, feel free to ignore). 5) Had to do some awful mucking in sysconfig, as you probably know. Still have a way to go until it really works. 6) build_py doesn't do the right thing if there are no py_modules in setup. 7) A couple bug fixes in install_py If you have any questions about the patches, just ask. -Perry perry.stoll@mail.com -----Original Message----- From: David Ascher To: Perry A. Stoll Cc: Greg Ward ; distutils-sig@python.org Date: Thursday, August 19, 1999 11:20 PM Subject: Re: [Distutils] Can now compile simple extensions >On Thu, 19 Aug 1999, Perry A. Stoll wrote: > >> Nice work, Greg! I thought I'd let David take a break on this one, so >> attached is an MSVCCompiler, which works for me using MSVC 5.0. Not much has >> changed on the command line usage for MSVC 6.0, so this should probably work >> there also. > >Great! It's a very good thing for Greg given his talk on Monday! A very >good thing for me (for obvious reasons), and, of course, a very good thing >for Python users worldwide. > >Thanks, Perry! > >--david > >