From greg@bx.psu.edu Mon Aug 27 10:41:20 2012 From: Greg Von Kuster To: galaxy-dev@lists.galaxyproject.org Subject: Re: [galaxy-dev] Cannot install freebayes with migration script Date: Mon, 27 Aug 2012 10:41:18 -0400 Message-ID: <6B61D414-F1DD-4CB1-9D37-07550D0CB6E6@bx.psu.edu> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5780379757543882152==" --===============5780379757543882152== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Phillip, I'm not able to reproduce this behavior, so it's difficult to determine what = may be the cause. I have not seen others in the community encounter this pro= blem, but that may simply be due to the fact that no one is yet installing th= e freebayes tool from the tool shed. A possible work-aound is to add the following entry into your local tool_data= _table_conf.xml file located in your Galaxy installation directory. line_type, value, path
Let us know if this still does not correct the problem. Greg Von Kuster On Aug 27, 2012, at 10:07 AM, Philip Mabon wrote: > Any ideas anyone? >=20 > Philip Mabon > Senior Bioinformatician > National Microbiology Laboratory > Public Health Agency of Canada=20 >=20 >=20 > On Tue, Aug 21, 2012 at 10:34 AM, Philip Mabon wr= ote: > I just upgrade our galaxy to the latest release : 7487:be81990d148a and ra= n the migration tool script for freebayes.=20 >=20 > I received the following error: >=20 > No handlers could be found for logger "galaxy.tools" > /opt/galaxy/galaxy_dist/eggs/pysam-0.4.2_kanwei_b10f6e722e9a-py2.6-linux-x8= 6_64-ucs4.egg/pysam/__init__.py:1: RuntimeWarning: __builtin__.file size chan= ged, may indicate binary incompatibility > from csamtools import * > Repositories will be installed into configured tool_path location ../shed_= tools > Adding new row (or updating an existing row) for repository 'freebayes' in = the tool_shed_repository table. > Traceback (most recent call last): > File "./scripts/migrate_tools/migrate_tools.py", line 21, in > app =3D MigrateToolsApplication( sys.argv[ 1 ] ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/migrate/common.py", li= ne 150, in __init__ > install_dependencies=3Dinstall_dependencies ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", l= ine 37, in __init__ > self.install_repository( repository_elem, install_dependencies ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", l= ine 262, in install_repository > install_dependencies=3Dinstall_dependencies ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tool_shed/install_manager.py", l= ine 150, in handle_repository_contents > repository_tools_tups =3D get_repository_tools_tups( self.app, metadata= _dict ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/util/shed_util.py", line 1077, i= n get_repository_tools_tups > tool =3D app.toolbox.load_tool( os.path.abspath( relative_path ), guid= =3Dguid ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 452, in= load_tool > return ToolClass( config_file, root, self.app, guid=3Dguid ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 790, in= __init__ > self.parse( root, guid=3Dguid ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 961, in= parse > self.parse_inputs( root ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1045, i= n parse_inputs > display, inputs =3D self.parse_input_page( page, enctypes ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1447, i= n parse_input_page > inputs =3D self.parse_input_elem( input_elem, enctypes ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1514, i= n parse_input_elem > case.inputs =3D self.parse_input_elem( case_elem, enctypes, context ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1470, i= n parse_input_elem > group.inputs =3D self.parse_input_elem( elem, enctypes, context ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1540, i= n parse_input_elem > param =3D self.parse_param_elem( elem, enctypes, context ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/__init__.py", line 1552, i= n parse_param_elem > param =3D ToolParameter.build( self, input_elem ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", line= 176, in build > return parameter_types[param_type]( tool, param ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", line= 1361, in __init__ > ToolParameter.__init__( self, tool, elem ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/basic.py", line= 43, in __init__ > self.validators.append( validation.Validator.from_element( self, elem )= ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/validation.py",= line 23, in from_element > return validator_types[type].from_element( param, elem ) > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/parameters/validation.py",= line 279, in from_element > tool_data_table =3D param.tool.app.tool_data_tables[ table_name ] > File "/opt/galaxy/galaxy_dist/lib/galaxy/tools/data/__init__.py", line 25= , in __getitem__ > return self.data_tables.__getitem__( key ) > KeyError: 'sam_fa_indexes' >=20 >=20 > What happen is that the freebayes itself installs correctly into the shed_t= ools/toolshed.g2.bx.psu.edu/repos/devteam/* but the dependency on samtools 1.= 1.8 fails. >=20 > The value 'sam_fa_indexes' is present in the tool_data_table_conf.xml and = I know it works since all my samtools are functional. >=20 > The status column for the freebayes entry in the database is 'Cloning'.=20 >=20 > I get the same error if I try to install freebayes thru the web front end. = ( Had to delete the row in the db and remove the freebayes install directory) >=20 > Any ideas Greg? >=20 > Thanks! >=20 > Philip Mabon (Takadonet) > Senior Bioinformatician > National Microbiology Laboratory > Public Health Agency of Canada >=20 > ___________________________________________________________ > Please keep all replies on the list by using "reply all" > in your mail client. To manage your subscriptions to this > and other Galaxy lists, please use the interface at: >=20 > http://lists.bx.psu.edu/ --===============5780379757543882152== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" MIME-Version: 1.0 PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5IHN0eWxlPSJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IC13 ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgLXdlYmtpdC1saW5lLWJyZWFrOiBhZnRlci13aGl0ZS1z cGFjZTsgIj5IaSBQaGlsbGlwLDxkaXY+PGJyPjwvZGl2PjxkaXY+SSdtIG5vdCBhYmxlIHRvIHJl cHJvZHVjZSB0aGlzIGJlaGF2aW9yLCBzbyBpdCdzIGRpZmZpY3VsdCB0byBkZXRlcm1pbmUgd2hh dCBtYXkgYmUgdGhlIGNhdXNlLiAmbmJzcDtJIGhhdmUgbm90IHNlZW4gb3RoZXJzIGluIHRoZSBj b21tdW5pdHkgZW5jb3VudGVyIHRoaXMgcHJvYmxlbSwgYnV0IHRoYXQgbWF5IHNpbXBseSBiZSBk dWUgdG8gdGhlIGZhY3QgdGhhdCBubyBvbmUgaXMgeWV0IGluc3RhbGxpbmcgdGhlIGZyZWViYXll cyB0b29sIGZyb20gdGhlIHRvb2wgc2hlZC48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkEgcG9z c2libGUgd29yay1hb3VuZCBpcyB0byBhZGQgdGhlIGZvbGxvd2luZyBlbnRyeSBpbnRvIHlvdXIg bG9jYWwgdG9vbF9kYXRhX3RhYmxlX2NvbmYueG1sIGZpbGUgbG9jYXRlZCBpbiB5b3VyIEdhbGF4 eSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdj4m bmJzcDsgJm5ic3A7ICZsdDt0YWJsZSBuYW1lPSJzYW1fZmFfaW5kZXhlcyIgY29tbWVudF9jaGFy PSIjIiZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7Y29sdW1u cyZndDtsaW5lX3R5cGUsIHZhbHVlLCBwYXRoJmx0Oy9jb2x1bW5zJmd0OzwvZGl2PjxkaXY+Jm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZsdDtmaWxlIHBhdGg9InRvb2wtZGF0YS9zYW1fZmFf aW5kaWNlcy5sb2MiIC8mZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDsvdGFibGUmZ3Q7 PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5MZXQgdXMga25vdyBpZiB0aGlzIHN0aWxsIGRvZXMg bm90IGNvcnJlY3QgdGhlIHByb2JsZW0uPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5HcmVnIFZv biBLdXN0ZXI8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+T24gQXVnIDI3LCAyMDEyLCBh dCAxMDowNyBBTSwgUGhpbGlwIE1hYm9uIHdyb3RlOjwvZGl2PjxiciBjbGFzcz0iQXBwbGUtaW50 ZXJjaGFuZ2UtbmV3bGluZSI+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+QW55IGlkZWFzIGFueW9u ZT88ZGl2PjxiciBjbGVhcj0iYWxsIj5QaGlsaXAgTWFib248YnI+U2VuaW9yIEJpb2luZm9ybWF0 aWNpYW48YnI+TmF0aW9uYWwgTWljcm9iaW9sb2d5IExhYm9yYXRvcnk8YnI+UHVibGljIEhlYWx0 aCBBZ2VuY3kgb2YgQ2FuYWRhIDxicj4KPGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+ T24gVHVlLCBBdWcgMjEsIDIwMTIgYXQgMTA6MzQgQU0sIFBoaWxpcCBNYWJvbiA8c3BhbiBkaXI9 Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpwaGlsaXBtYWJvbkBnbWFpbC5jb20iIHRhcmdldD0i X2JsYW5rIj5waGlsaXBtYWJvbkBnbWFpbC5jb208L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPjxi bG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2Jv cmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgo8ZGl2IHN0eWxlPSJj b2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMt c2VyaWYiPkkganVzdCB1cGdyYWRlIG91ciBnYWxheHkgdG8gdGhlIGxhdGVzdCByZWxlYXNlIDom bmJzcDsgNzQ4NzpiZTgxOTkwZDE0OGEgYW5kIHJhbiB0aGUgbWlncmF0aW9uIHRvb2wgc2NyaXB0 IGZvciBmcmVlYmF5ZXMuJm5ic3A7PC9kaXY+CjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwz NCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+PGJyPjwvZGl2 PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1p bHk6YXJpYWwsc2Fucy1zZXJpZiI+CkkgcmVjZWl2ZWQgdGhlIGZvbGxvd2luZyBlcnJvcjo8L2Rp dj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFt aWx5OmFyaWFsLHNhbnMtc2VyaWYiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQs MzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPgo8ZGl2 Pk5vIGhhbmRsZXJzIGNvdWxkIGJlIGZvdW5kIGZvciBsb2dnZXIgImdhbGF4eS50b29scyI8L2Rp dj48ZGl2Pi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2VnZ3MvcHlzYW0tMC40LjJfa2Fud2VpX2Ix MGY2ZTcyMmU5YS1weTIuNi1saW51eC14ODZfNjQtdWNzNC5lZ2cvcHlzYW0vX19pbml0X18ucHk6 MTogUnVudGltZVdhcm5pbmc6IF9fYnVpbHRpbl9fLmZpbGUgc2l6ZSBjaGFuZ2VkLCBtYXkgaW5k aWNhdGUgYmluYXJ5IGluY29tcGF0aWJpbGl0eTwvZGl2PgoKPGRpdj4mbmJzcDsgZnJvbSBjc2Ft dG9vbHMgaW1wb3J0ICo8L2Rpdj48ZGl2PlJlcG9zaXRvcmllcyB3aWxsIGJlIGluc3RhbGxlZCBp bnRvIGNvbmZpZ3VyZWQgdG9vbF9wYXRoIGxvY2F0aW9uICZuYnNwOy4uL3NoZWRfdG9vbHM8L2Rp dj48ZGl2PkFkZGluZyBuZXcgcm93IChvciB1cGRhdGluZyBhbiBleGlzdGluZyByb3cpIGZvciBy ZXBvc2l0b3J5ICdmcmVlYmF5ZXMnIGluIHRoZSB0b29sX3NoZWRfcmVwb3NpdG9yeSB0YWJsZS48 L2Rpdj4KCjxkaXY+VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjwvZGl2PjxkaXY+ Jm5ic3A7IEZpbGUgIi4vc2NyaXB0cy9taWdyYXRlX3Rvb2xzL21pZ3JhdGVfdG9vbHMucHkiLCBs aW5lIDIxLCBpbiAmbHQ7bW9kdWxlJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBhcHAgPSBN aWdyYXRlVG9vbHNBcHBsaWNhdGlvbiggc3lzLmFyZ3ZbIDEgXSApPC9kaXY+PGRpdj4mbmJzcDsg RmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29sX3NoZWQvbWlncmF0 ZS9jb21tb24ucHkiLCBsaW5lIDE1MCwgaW4gX19pbml0X188L2Rpdj4KCjxkaXY+Jm5ic3A7ICZu YnNwOyBpbnN0YWxsX2RlcGVuZGVuY2llcz1pbnN0YWxsX2RlcGVuZGVuY2llcyApPC9kaXY+PGRp dj4mbmJzcDsgRmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29sX3No ZWQvaW5zdGFsbF9tYW5hZ2VyLnB5IiwgbGluZSAzNywgaW4gX19pbml0X188L2Rpdj48ZGl2PiZu YnNwOyAmbmJzcDsgc2VsZi5pbnN0YWxsX3JlcG9zaXRvcnkoIHJlcG9zaXRvcnlfZWxlbSwgaW5z dGFsbF9kZXBlbmRlbmNpZXMgKTwvZGl2PgoKPGRpdj4mbmJzcDsgRmlsZSAiL29wdC9nYWxheHkv Z2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29sX3NoZWQvaW5zdGFsbF9tYW5hZ2VyLnB5IiwgbGlu ZSAyNjIsIGluIGluc3RhbGxfcmVwb3NpdG9yeTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBpbnN0 YWxsX2RlcGVuZGVuY2llcz1pbnN0YWxsX2RlcGVuZGVuY2llcyApPC9kaXY+PGRpdj4mbmJzcDsg RmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29sX3NoZWQvaW5zdGFs bF9tYW5hZ2VyLnB5IiwgbGluZSAxNTAsIGluIGhhbmRsZV9yZXBvc2l0b3J5X2NvbnRlbnRzPC9k aXY+Cgo8ZGl2PiZuYnNwOyAmbmJzcDsgcmVwb3NpdG9yeV90b29sc190dXBzID0gZ2V0X3JlcG9z aXRvcnlfdG9vbHNfdHVwcyggc2VsZi5hcHAsIG1ldGFkYXRhX2RpY3QgKTwvZGl2PjxkaXY+Jm5i c3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkvdXRpbC9zaGVkX3V0 aWwucHkiLCBsaW5lIDEwNzcsIGluIGdldF9yZXBvc2l0b3J5X3Rvb2xzX3R1cHM8L2Rpdj48ZGl2 PiZuYnNwOyAmbmJzcDsgdG9vbCA9IGFwcC50b29sYm94LmxvYWRfdG9vbCggb3MucGF0aC5hYnNw YXRoKCByZWxhdGl2ZV9wYXRoICksIGd1aWQ9Z3VpZCApPC9kaXY+Cgo8ZGl2PiZuYnNwOyBGaWxl ICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5Iiwg bGluZSA0NTIsIGluIGxvYWRfdG9vbDwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyByZXR1cm4gVG9v bENsYXNzKCBjb25maWdfZmlsZSwgcm9vdCwgc2VsZi5hcHAsIGd1aWQ9Z3VpZCApPC9kaXY+PGRp dj4mbmJzcDsgRmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9f X2luaXRfXy5weSIsIGxpbmUgNzkwLCBpbiBfX2luaXRfXzwvZGl2PgoKPGRpdj4mbmJzcDsgJm5i c3A7IHNlbGYucGFyc2UoIHJvb3QsIGd1aWQ9Z3VpZCApPC9kaXY+PGRpdj4mbmJzcDsgRmlsZSAi L29wdC9nYWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weSIsIGxp bmUgOTYxLCBpbiBwYXJzZTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBzZWxmLnBhcnNlX2lucHV0 cyggcm9vdCApPC9kaXY+PGRpdj4mbmJzcDsgRmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5X2Rpc3Qv bGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weSIsIGxpbmUgMTA0NSwgaW4gcGFyc2VfaW5wdXRz PC9kaXY+Cgo8ZGl2PiZuYnNwOyAmbmJzcDsgZGlzcGxheSwgaW5wdXRzID0gc2VsZi5wYXJzZV9p bnB1dF9wYWdlKCBwYWdlLCBlbmN0eXBlcyApPC9kaXY+PGRpdj4mbmJzcDsgRmlsZSAiL29wdC9n YWxheHkvZ2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weSIsIGxpbmUgMTQ0 NywgaW4gcGFyc2VfaW5wdXRfcGFnZTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBpbnB1dHMgPSBz ZWxmLnBhcnNlX2lucHV0X2VsZW0oIGlucHV0X2VsZW0sIGVuY3R5cGVzICk8L2Rpdj4KCjxkaXY+ Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvX19p bml0X18ucHkiLCBsaW5lIDE1MTQsIGluIHBhcnNlX2lucHV0X2VsZW08L2Rpdj48ZGl2PiZuYnNw OyAmbmJzcDsgY2FzZS5pbnB1dHMgPSBzZWxmLnBhcnNlX2lucHV0X2VsZW0oIGNhc2VfZWxlbSwg ZW5jdHlwZXMsIGNvbnRleHQgKTwvZGl2PjxkaXY+Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dh bGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkiLCBsaW5lIDE0NzAsIGluIHBh cnNlX2lucHV0X2VsZW08L2Rpdj4KCjxkaXY+Jm5ic3A7ICZuYnNwOyBncm91cC5pbnB1dHMgPSBz ZWxmLnBhcnNlX2lucHV0X2VsZW0oIGVsZW0sIGVuY3R5cGVzLCBjb250ZXh0ICk8L2Rpdj48ZGl2 PiZuYnNwOyBGaWxlICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL19f aW5pdF9fLnB5IiwgbGluZSAxNTQwLCBpbiBwYXJzZV9pbnB1dF9lbGVtPC9kaXY+PGRpdj4mbmJz cDsgJm5ic3A7IHBhcmFtID0gc2VsZi5wYXJzZV9wYXJhbV9lbGVtKCBlbGVtLCBlbmN0eXBlcywg Y29udGV4dCApPC9kaXY+Cgo8ZGl2PiZuYnNwOyBGaWxlICIvb3B0L2dhbGF4eS9nYWxheHlfZGlz dC9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5IiwgbGluZSAxNTUyLCBpbiBwYXJzZV9wYXJh bV9lbGVtPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IHBhcmFtID0gVG9vbFBhcmFtZXRlci5idWls ZCggc2VsZiwgaW5wdXRfZWxlbSApPC9kaXY+PGRpdj4mbmJzcDsgRmlsZSAiL29wdC9nYWxheHkv Z2FsYXh5X2Rpc3QvbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJzL2Jhc2ljLnB5IiwgbGluZSAx NzYsIGluIGJ1aWxkPC9kaXY+Cgo8ZGl2PiZuYnNwOyAmbmJzcDsgcmV0dXJuIHBhcmFtZXRlcl90 eXBlc1twYXJhbV90eXBlXSggdG9vbCwgcGFyYW0gKTwvZGl2PjxkaXY+Jm5ic3A7IEZpbGUgIi9v cHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvcGFyYW1ldGVycy9iYXNpYy5w eSIsIGxpbmUgMTM2MSwgaW4gX19pbml0X188L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgVG9vbFBh cmFtZXRlci5fX2luaXRfXyggc2VsZiwgdG9vbCwgZWxlbSApPC9kaXY+Cgo8ZGl2PiZuYnNwOyBG aWxlICIvb3B0L2dhbGF4eS9nYWxheHlfZGlzdC9saWIvZ2FsYXh5L3Rvb2xzL3BhcmFtZXRlcnMv YmFzaWMucHkiLCBsaW5lIDQzLCBpbiBfX2luaXRfXzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBz ZWxmLnZhbGlkYXRvcnMuYXBwZW5kKCB2YWxpZGF0aW9uLlZhbGlkYXRvci5mcm9tX2VsZW1lbnQo IHNlbGYsIGVsZW0gKSApPC9kaXY+PGRpdj4mbmJzcDsgRmlsZSAiL29wdC9nYWxheHkvZ2FsYXh5 X2Rpc3QvbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJzL3ZhbGlkYXRpb24ucHkiLCBsaW5lIDIz LCBpbiBmcm9tX2VsZW1lbnQ8L2Rpdj4KCjxkaXY+Jm5ic3A7ICZuYnNwOyByZXR1cm4gdmFsaWRh dG9yX3R5cGVzW3R5cGVdLmZyb21fZWxlbWVudCggcGFyYW0sIGVsZW0gKTwvZGl2PjxkaXY+Jm5i c3A7IEZpbGUgIi9vcHQvZ2FsYXh5L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvcGFyYW1l dGVycy92YWxpZGF0aW9uLnB5IiwgbGluZSAyNzksIGluIGZyb21fZWxlbWVudDwvZGl2PjxkaXY+ Jm5ic3A7ICZuYnNwOyB0b29sX2RhdGFfdGFibGUgPSBwYXJhbS50b29sLmFwcC50b29sX2RhdGFf dGFibGVzWyB0YWJsZV9uYW1lIF08L2Rpdj4KCjxkaXY+Jm5ic3A7IEZpbGUgIi9vcHQvZ2FsYXh5 L2dhbGF4eV9kaXN0L2xpYi9nYWxheHkvdG9vbHMvZGF0YS9fX2luaXRfXy5weSIsIGxpbmUgMjUs IGluIF9fZ2V0aXRlbV9fPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IHJldHVybiBzZWxmLmRhdGFf dGFibGVzLl9fZ2V0aXRlbV9fKCBrZXkgKTwvZGl2PjxkaXY+S2V5RXJyb3I6ICdzYW1fZmFfaW5k ZXhlcyc8L2Rpdj48L2Rpdj4KPGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0KTtmb250LXNp emU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj4KPGJyPjwvZGl2PjxkaXYgc3R5 bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWws c2Fucy1zZXJpZiI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9u dC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+CldoYXQgaGFwcGVuIGlz IHRoYXQgdGhlIGZyZWViYXllcyBpdHNlbGYgaW5zdGFsbHMgY29ycmVjdGx5IGludG8gdGhlJm5i c3A7c2hlZF90b29scy88YSBocmVmPSJodHRwOi8vdG9vbHNoZWQuZzIuYngucHN1LmVkdS9yZXBv cy9kZXZ0ZWFtLyoiIHN0eWxlPSJjb2xvcjpyZ2IoMTcsODUsMjA0KSIgdGFyZ2V0PSJfYmxhbmsi PnRvb2xzaGVkLmcyLmJ4LnBzdS5lZHUvcmVwb3MvZGV2dGVhbS8qPC9hPiZuYnNwO2J1dCB0aGUg ZGVwZW5kZW5jeSBvbiBzYW10b29scyAxLjEuOCBmYWlscy48L2Rpdj4KCjxkaXYgc3R5bGU9ImNv bG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1z ZXJpZiI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXpl OjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+ClRoZSB2YWx1ZSAnc2FtX2ZhX2lu ZGV4ZXMnIGlzIHByZXNlbnQgaW4gdGhlJm5ic3A7dG9vbF9kYXRhX3RhYmxlX2NvbmYueG1sICZu YnNwO2FuZCBJIGtub3cgaXQgd29ya3Mgc2luY2UgYWxsIG15IHNhbXRvb2xzIGFyZSBmdW5jdGlv bmFsLjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7 Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+Cjxicj48L2Rpdj48ZGl2IHN0eWxlPSJjb2xv cjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2Vy aWYiPlRoZSBzdGF0dXMgY29sdW1uIGZvciB0aGUgZnJlZWJheWVzIGVudHJ5IGluIHRoZSBkYXRh YmFzZSBpcyAnQ2xvbmluZycuJm5ic3A7PC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0 LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj4KCjxicj48 L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQt ZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPkkgZ2V0IHRoZSBzYW1lIGVycm9yIGlmIEkgdHJ5IHRv IGluc3RhbGwgZnJlZWJheWVzIHRocnUgdGhlIHdlYiBmcm9udCBlbmQuICggSGFkIHRvIGRlbGV0 ZSB0aGUgcm93IGluIHRoZSBkYiBhbmQgcmVtb3ZlIHRoZSBmcmVlYmF5ZXMgaW5zdGFsbCBkaXJl Y3RvcnkpPC9kaXY+Cgo8ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZTox M3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJj b2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMt c2VyaWYiPgpBbnkgaWRlYXMgR3JlZz88L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQs MzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPjxicj48L2Rp dj48ZGl2IHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFt aWx5OmFyaWFsLHNhbnMtc2VyaWYiPgpUaGFua3MhPC9kaXY+PGJyIGNsZWFyPSJhbGwiIHN0eWxl PSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNh bnMtc2VyaWYiPjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4 O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPlBoaWxpcCBNYWJvbiAoVGFrYWRvbmV0KTwv c3Bhbj48YnIgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9udC1m YW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+Cgo8c3BhbiBzdHlsZT0iY29sb3I6cmdiKDM0LDM0LDM0 KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmIj5TZW5pb3IgQmlv aW5mb3JtYXRpY2lhbjwvc3Bhbj48YnIgc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1z aXplOjEzcHg7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+CjxzcGFuIHN0eWxlPSJjb2xv cjpyZ2IoMzQsMzQsMzQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2Vy aWYiPk5hdGlvbmFsIE1pY3JvYmlvbG9neSBMYWJvcmF0b3J5PC9zcGFuPjxiciBzdHlsZT0iY29s b3I6cmdiKDM0LDM0LDM0KTtmb250LXNpemU6MTNweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNl cmlmIj4KPHNwYW4gc3R5bGU9ImNvbG9yOnJnYigzNCwzNCwzNCk7Zm9udC1zaXplOjEzcHg7Zm9u dC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZiI+UHVibGljIEhlYWx0aCBBZ2VuY3kgb2YgQ2FuYWRh PC9zcGFuPgo8L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPjwvZGl2PgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj5QbGVhc2Uga2VlcCBh bGwgcmVwbGllcyBvbiB0aGUgbGlzdCBieSB1c2luZyAicmVwbHkgYWxsIjxicj5pbiB5b3VyIG1h aWwgY2xpZW50LiAmbmJzcDtUbyBtYW5hZ2UgeW91ciBzdWJzY3JpcHRpb25zIHRvIHRoaXM8YnI+ YW5kIG90aGVyIEdhbGF4eSBsaXN0cywgcGxlYXNlIHVzZSB0aGUgaW50ZXJmYWNlIGF0Ojxicj48 YnI+ICZuYnNwOzxhIGhyZWY9Imh0dHA6Ly9saXN0cy5ieC5wc3UuZWR1LyI+aHR0cDovL2xpc3Rz LmJ4LnBzdS5lZHUvPC9hPjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+PC9ib2R5PjwvaHRt bD4= --===============5780379757543882152==--