Return-Path: Message-Id: <7.0.1.0.2.20110622230344.031f5790@gmx.net> Date: Wed, 22 Jun 2011 23:23:30 +0200 To: linux-bluetooth@vger.kernel.org From: Peter Kornatowski Subject: Media API with more than one headset Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====================_4082000==_" Sender: linux-bluetooth-owner@vger.kernel.org List-ID: --=====================_4082000==_ Content-Type: text/plain; charset="us-ascii"; format=flowed Hi, I'm using the new bluez media api to set bluetooth headsets into playing mode and get the fd's of the corresponding sockets with a program written in C. This works fine with just one headset, but I'm using up to three at the same time over three bluetooth adapters. So my program (bt-audio) creates a dbus-service with three paths (/test/endpoint0, ...1, ...2) and each path has an interface org.bluez.MediaEndpoint with the four needed methods (SetConfiguration etc.). Then it scans for turned on headsets and calls RegisterEndpoint on the appropriate adapter-path. Then bluez calls three times SetConfiguration on my service. So basically like in the python-example "simple-endpoint". After that my app calls three times Acquire with "rw" on each of the given transport-paths to receive the socket-fd's. As I said, this works well and I can play and record some raw-files with very good quality. But when one of the headsets is turned off, the other two are put out of playing-mode. When I retry to put them back in playing-mode by calling UnregisterEndpoint and then RegisterEndpoint again, I just get "GDBus.Error:org.bluez.Error.NotAuthorized: Operation Not Authorized" and see "sco_bind: Address already in use" in syslog. When retrying too often, bluetoothd segfaults (but this may be related to the way i tried some recovery of this problem in my code) with: kernel: [34309.873606] bluetoothd[29235]: segfault at 6e652f74 ip b76b9b20 sp bf93c430 error 4 in bluetoothd[b768c000+7e000] Only after restarting my program (and thus re-registering my dbus-service), I am able to put the headsets back in playing mode again. I also tried this use-case with your simple-endpoint python-script by modifying it like this: def acquire_cb(fd, imtu, omtu): print "Acquire successfull! New fd: %s with iMTU %i and oMTU %i" % (fd, imtu, omtu) def acquire_error(error): print "Acquire failed: %s" % (error) mainloop.quit() ... @dbus.service.method("org.bluez.MediaEndpoint", in_signature="oay", out_signature="") def SetConfiguration(self, transport, config): print "SetConfiguration (%s, %s)" % (transport, config) media_transport = dbus.Interface(bus.get_object("org.bluez", transport), "org.bluez.MediaTransport") media_transport.Acquire("rw", reply_handler=acquire_cb, error_handler=acquire_error) return So even after starting two or three processes of this script (each with a different hciX), I get the same behaviour: putting all headsets in playing mode is no problem, but turning off one headset puts the others out of playing mode. Trying to put them back in playing mode requires a restart of the scripts, otherwise I just get the same error: "Acquire failed: org.bluez.Error.NotAuthorized: Operation Not Authorized". So why are the other headsets always put out of playing mode and why can't you put them back in playing mode again? Looks like a bug to me, hopefully someone of you can help. I attached the syslog cutout of this problem, too (first section is with my C-program, second with the python-script). Thanks, Peter --=====================_4082000==_ Content-Type: application/octet-stream; name="media_api_hs_disconnect.log" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="media_api_hs_disconnect.log" SnVuIDIyIDE2OjMyOjQyIHBldGVyIGJ0LWF1ZGlvOiByZWdpc3RlcmluZyBlbmRwb2ludCBmb3Ig YWRhcHRlcl9pZCAxCkp1biAyMiAxNjozMjo0MiBwZXRlciBidC1hdWRpbzogcmVnaXN0ZXJpbmcg ZW5kcG9pbnQgZm9yIGFkYXB0ZXJfaWQgMApKdW4gMjIgMTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3Ro ZFs4Mzk0XTogYXVkaW8vbWVkaWEuYzptZWRpYV9lbmRwb2ludF9hc3luY19jYWxsKCkgQ2FsbGlu ZyBTZXRDb25maWd1cmF0aW9uOiBuYW1lID0gOjEuNzMwIHBhdGggPSAvdGVzdC9lbmRwb2ludDEK SnVuIDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290aGRbODM5NF06IEVuZHBvaW50IHJlZ2lzdGVy ZWQ6IHNlbmRlcj06MS43MzAgcGF0aD0vdGVzdC9lbmRwb2ludDEKSnVuIDIyIDE2OjMyOjQyIHBl dGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL21lZGlhLmM6bWVkaWFfZW5kcG9pbnRfYXN5bmNf Y2FsbCgpIENhbGxpbmcgU2V0Q29uZmlndXJhdGlvbjogbmFtZSA9IDoxLjczMCBwYXRoID0gL3Rl c3QvZW5kcG9pbnQwCkp1biAyMiAxNjozMjo0MiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBFbmRw b2ludCByZWdpc3RlcmVkOiBzZW5kZXI9OjEuNzMwIHBhdGg9L3Rlc3QvZW5kcG9pbnQwCkp1biAy MiAxNjozMjo0MiBwZXRlciBidC1hdWRpbzogaGFuZGxlX21ldGhvZF9jYWxsIGNhbGxlZCAoc2Vu ZGVyOiA6MS43MjgsIHBhdGg6IC90ZXN0L2VuZHBvaW50MSwgaWZfbmFtZTogb3JnLmJsdWV6Lk1l ZGlhRW5kcG9pbnQsIG1ldGhvZF9uYW1lOiBTZXRDb25maWd1cmF0aW9uKQpKdW4gMjIgMTY6MzI6 NDIgcGV0ZXIgYnQtYXVkaW86IFNldENvbmZpZ3VyYXRpb24gY2FsbGVkCkp1biAyMiAxNjozMjo0 MiBwZXRlciBidC1hdWRpbzogZGV2aWNlIHBhdGg6IC9vcmcvYmx1ZXovODM5NC9oY2kxL2Rldl8w MF8yM183Rl80Ml84M19CMywgdHJhbnNwb3J0IHBhdGg6IC9vcmcvYmx1ZXovODM5NC9oY2kxL2Rl dl8wMF8yM183Rl80Ml84M19CMy9mZDAKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJ0LWF1ZGlvOiBo YW5kbGVfbWV0aG9kX2NhbGwgY2FsbGVkIChzZW5kZXI6IDoxLjcyOCwgcGF0aDogL3Rlc3QvZW5k cG9pbnQwLCBpZl9uYW1lOiBvcmcuYmx1ZXouTWVkaWFFbmRwb2ludCwgbWV0aG9kX25hbWU6IFNl dENvbmZpZ3VyYXRpb24pCkp1biAyMiAxNjozMjo0MiBwZXRlciBidC1hdWRpbzogU2V0Q29uZmln dXJhdGlvbiBjYWxsZWQKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJ0LWF1ZGlvOiBkZXZpY2UgcGF0 aDogL29yZy9ibHVlei84Mzk0L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDLCB0cmFuc3BvcnQg cGF0aDogL29yZy9ibHVlei84Mzk0L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDL2ZkMQpKdW4g MjIgMTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vdHJhbnNwb3J0LmM6bWVk aWFfdHJhbnNwb3J0X2FjcXVpcmUoKSBUcmFuc3BvcnQgL29yZy9ibHVlei84Mzk0L2hjaTEvZGV2 XzAwXzIzXzdGXzQyXzgzX0IzL2ZkMDogcmVhZCBsb2NrIGFjcXVpcmVkCkp1biAyMiAxNjozMjo0 MiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV90cmFuc3Bv cnRfYWNxdWlyZSgpIFRyYW5zcG9ydCAvb3JnL2JsdWV6LzgzOTQvaGNpMS9kZXZfMDBfMjNfN0Zf NDJfODNfQjMvZmQwOiB3cml0ZSBsb2NrIGFjcXVpcmVkCkp1biAyMiAxNjozMjo0MiBwZXRlciBi bHVldG9vdGhkWzgzOTRdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV9vd25lcl9jcmVhdGUoKSBP d25lciBjcmVhdGVkOiBzZW5kZXI9OjEuNzMwIGFjY2Vzc3R5cGU9cncKSnVuIDIyIDE2OjMyOjQy IHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL2hlYWRzZXQuYzpoZWFkc2V0X3NldF9zdGF0 ZSgpIFN0YXRlIGNoYW5nZWQgL29yZy9ibHVlei84Mzk0L2hjaTEvZGV2XzAwXzIzXzdGXzQyXzgz X0IzOiBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RFRCAtPiBIRUFEU0VUX1NUQVRFX1BMQVlfSU5fUFJP R1JFU1MKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL21lZGlh LmM6aGVhZHNldF9zdGF0ZV9jaGFuZ2VkKCkgCkp1biAyMiAxNjozMjo0MiBwZXRlciBibHVldG9v dGhkWzgzOTRdOiBhdWRpby9tZWRpYS5jOmhlYWRzZXRfc3RhdGVfY2hhbmdlZCgpIApKdW4gMjIg MTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFf cmVxdWVzdF9jcmVhdGUoKSBSZXF1ZXN0IGNyZWF0ZWQ6IG1ldGhvZD1BY3F1aXJlIGlkPTEKSnVu IDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1l ZGlhX293bmVyX2FkZCgpIE93bmVyIDoxLjczMCBSZXF1ZXN0IEFjcXVpcmUKSnVuIDIyIDE2OjMy OjQyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3RyYW5z cG9ydF9hZGQoKSBUcmFuc3BvcnQgL29yZy9ibHVlei84Mzk0L2hjaTEvZGV2XzAwXzIzXzdGXzQy XzgzX0IzL2ZkMCBPd25lciA6MS43MzAKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290aGRb ODM5NF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3RyYW5zcG9ydF9hY3F1aXJlKCkgVHJhbnNw b3J0IC9vcmcvYmx1ZXovODM5NC9oY2kwL2Rldl8wMF8yM183Rl80NV8yQV82Qy9mZDE6IHJlYWQg bG9jayBhY3F1aXJlZApKdW4gMjIgMTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVk aW8vdHJhbnNwb3J0LmM6bWVkaWFfdHJhbnNwb3J0X2FjcXVpcmUoKSBUcmFuc3BvcnQgL29yZy9i bHVlei84Mzk0L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDL2ZkMTogd3JpdGUgbG9jayBhY3F1 aXJlZApKdW4gMjIgMTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vdHJhbnNw b3J0LmM6bWVkaWFfb3duZXJfY3JlYXRlKCkgT3duZXIgY3JlYXRlZDogc2VuZGVyPToxLjczMCBh Y2Nlc3N0eXBlPXJ3Ckp1biAyMiAxNjozMjo0MiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBhdWRp by9oZWFkc2V0LmM6aGVhZHNldF9zZXRfc3RhdGUoKSBTdGF0ZSBjaGFuZ2VkIC9vcmcvYmx1ZXov ODM5NC9oY2kwL2Rldl8wMF8yM183Rl80NV8yQV82QzogSEVBRFNFVF9TVEFURV9DT05ORUNURUQg LT4gSEVBRFNFVF9TVEFURV9QTEFZX0lOX1BST0dSRVNTCkp1biAyMiAxNjozMjo0MiBwZXRlciBi bHVldG9vdGhkWzgzOTRdOiBhdWRpby9tZWRpYS5jOmhlYWRzZXRfc3RhdGVfY2hhbmdlZCgpIApK dW4gMjIgMTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vbWVkaWEuYzpoZWFk c2V0X3N0YXRlX2NoYW5nZWQoKSAKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290aGRbODM5 NF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3JlcXVlc3RfY3JlYXRlKCkgUmVxdWVzdCBjcmVh dGVkOiBtZXRob2Q9QWNxdWlyZSBpZD0yCkp1biAyMiAxNjozMjo0MiBwZXRlciBibHVldG9vdGhk WzgzOTRdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV9vd25lcl9hZGQoKSBPd25lciA6MS43MzAg UmVxdWVzdCBBY3F1aXJlCkp1biAyMiAxNjozMjo0MiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBh dWRpby90cmFuc3BvcnQuYzptZWRpYV90cmFuc3BvcnRfYWRkKCkgVHJhbnNwb3J0IC9vcmcvYmx1 ZXovODM5NC9oY2kwL2Rldl8wMF8yM183Rl80NV8yQV82Qy9mZDEgT3duZXIgOjEuNzMwCkp1biAy MiAxNjozMjo0MiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBhdWRpby9oZWFkc2V0LmM6c2NvX2Nv bm5lY3RfY2IoKSBTQ08gc29ja2V0IG9wZW5lZCBmb3IgaGVhZHNldCAvb3JnL2JsdWV6LzgzOTQv aGNpMS9kZXZfMDBfMjNfN0ZfNDJfODNfQjMKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290 aGRbODM5NF06IGF1ZGlvL2hlYWRzZXQuYzpzY29fY29ubmVjdF9jYigpIFNDTyBmZD0zMwpKdW4g MjIgMTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogL29yZy9ibHVlei84Mzk0L2hjaTEv ZGV2XzAwXzIzXzdGXzQyXzgzX0IzL2ZkMDogZmQoMzMpIHJlYWR5Ckp1biAyMiAxNjozMjo0MiBw ZXRlciBibHVldG9vdGhkWzgzOTRdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV9vd25lcl9yZW1v dmUoKSBPd25lciA6MS43MzAgUmVxdWVzdCBBY3F1aXJlCkp1biAyMiAxNjozMjo0MiBwZXRlciBi bHVldG9vdGhkWzgzOTRdOiBhdWRpby9oZWFkc2V0LmM6aGVhZHNldF9zZXRfc3RhdGUoKSBTdGF0 ZSBjaGFuZ2VkIC9vcmcvYmx1ZXovODM5NC9oY2kxL2Rldl8wMF8yM183Rl80Ml84M19CMzogSEVB RFNFVF9TVEFURV9QTEFZX0lOX1BST0dSRVNTIC0+IEhFQURTRVRfU1RBVEVfUExBWUlORwpKdW4g MjIgMTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vbWVkaWEuYzpoZWFkc2V0 X3N0YXRlX2NoYW5nZWQoKSAKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290aGRbODM5NF06 IGF1ZGlvL21lZGlhLmM6aGVhZHNldF9zdGF0ZV9jaGFuZ2VkKCkgCkp1biAyMiAxNjozMjo0MiBw ZXRlciBidC1hdWRpbzogYWNxdWlyZV9jYiBjYWxsZWQgd2l0aCBkZXZpY2VfcGF0aCAvb3JnL2Js dWV6LzgzOTQvaGNpMS9kZXZfMDBfMjNfN0ZfNDJfODNfQjMKSnVuIDIyIDE2OjMyOjQyIHBldGVy IGJ0LWF1ZGlvOiBnb3QgcmVwbHkgbXNnIGZyb20gcGF0aCAvb3JnL2JsdWV6LzgzOTQvaGNpMS9k ZXZfMDBfMjNfN0ZfNDJfODNfQjM6ICAgVHlwZTogICAgbWV0aG9kLXJldHVybiMwMTIgIEZsYWdz OiAgIG5vLXJlcGx5LWV4cGVjdGVkIzAxMiAgVmVyc2lvbjogMCMwMTIgIFNlcmlhbDogIDg0IzAx MiAgSGVhZGVyczojMDEyICAgIHJlcGx5LXNlcmlhbCAtPiB1aW50MzIgMjIjMDEyICAgIGRlc3Rp bmF0aW9uIC0+ICc6MS43MzAnIzAxMiAgICBzZW5kZXIgLT4gJzoxLjcyOCcjMDEyICAgIHNpZ25h dHVyZSAtPiBzaWduYXR1cmUgJ2hxcScjMDEyICAgIG51bS11bml4LWZkcyAtPiB1aW50MzIgMSMw MTIgIEJvZHk6IChoYW5kbGUgMCwgdWludDE2IDQ4LCB1aW50MTYgNDgpIzAxMiAgVU5JWCBGaWxl IERlc2NyaXB0b3JzOiMwMTIgICAgZmQgMTQ6IGRldj0wOjYsbW9kZT0wMTQwNzc3LGlubz0yOTcz ODksdWlkPTAsZ2lkPTAscmRldj0wOjAsc2l6ZT0wLGF0aW1lPTAsbXRpbWU9MCxjdGltZT0wIzAx MgpKdW4gMjIgMTY6MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vaGVhZHNldC5j OnNjb19jb25uZWN0X2NiKCkgU0NPIHNvY2tldCBvcGVuZWQgZm9yIGhlYWRzZXQgL29yZy9ibHVl ei84Mzk0L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDCkp1biAyMiAxNjozMjo0MiBwZXRlciBi bHVldG9vdGhkWzgzOTRdOiBhdWRpby9oZWFkc2V0LmM6c2NvX2Nvbm5lY3RfY2IoKSBTQ08gZmQ9 MzQKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290aGRbODM5NF06IC9vcmcvYmx1ZXovODM5 NC9oY2kwL2Rldl8wMF8yM183Rl80NV8yQV82Qy9mZDE6IGZkKDM0KSByZWFkeQpKdW4gMjIgMTY6 MzI6NDIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFfb3du ZXJfcmVtb3ZlKCkgT3duZXIgOjEuNzMwIFJlcXVlc3QgQWNxdWlyZQpKdW4gMjIgMTY6MzI6NDIg cGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vaGVhZHNldC5jOmhlYWRzZXRfc2V0X3N0YXRl KCkgU3RhdGUgY2hhbmdlZCAvb3JnL2JsdWV6LzgzOTQvaGNpMC9kZXZfMDBfMjNfN0ZfNDVfMkFf NkM6IEhFQURTRVRfU1RBVEVfUExBWV9JTl9QUk9HUkVTUyAtPiBIRUFEU0VUX1NUQVRFX1BMQVlJ TkcKSnVuIDIyIDE2OjMyOjQyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL21lZGlhLmM6 aGVhZHNldF9zdGF0ZV9jaGFuZ2VkKCkgCkp1biAyMiAxNjozMjo0MiBwZXRlciBibHVldG9vdGhk WzgzOTRdOiBhdWRpby9tZWRpYS5jOmhlYWRzZXRfc3RhdGVfY2hhbmdlZCgpIApKdW4gMjIgMTY6 MzI6NDIgcGV0ZXIgYnQtYXVkaW86IGFjcXVpcmVfY2IgY2FsbGVkIHdpdGggZGV2aWNlX3BhdGgg L29yZy9ibHVlei84Mzk0L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDCkp1biAyMiAxNjozMjo0 MiBwZXRlciBidC1hdWRpbzogZ290IHJlcGx5IG1zZyBmcm9tIHBhdGggL29yZy9ibHVlei84Mzk0 L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDOiAgIFR5cGU6ICAgIG1ldGhvZC1yZXR1cm4jMDEy ICBGbGFnczogICBuby1yZXBseS1leHBlY3RlZCMwMTIgIFZlcnNpb246IDAjMDEyICBTZXJpYWw6 ICA4OCMwMTIgIEhlYWRlcnM6IzAxMiAgICByZXBseS1zZXJpYWwgLT4gdWludDMyIDI0IzAxMiAg ICBkZXN0aW5hdGlvbiAtPiAnOjEuNzMwJyMwMTIgICAgc2VuZGVyIC0+ICc6MS43MjgnIzAxMiAg ICBzaWduYXR1cmUgLT4gc2lnbmF0dXJlICdocXEnIzAxMiAgICBudW0tdW5peC1mZHMgLT4gdWlu dDMyIDEjMDEyICBCb2R5OiAoaGFuZGxlIDAsIHVpbnQxNiA0OCwgdWludDE2IDQ4KSMwMTIgIFVO SVggRmlsZSBEZXNjcmlwdG9yczojMDEyICAgIGZkIDE2OiBkZXY9MDo2LG1vZGU9MDE0MDc3Nyxp bm89Mjk3MzkwLHVpZD0wLGdpZD0wLHJkZXY9MDowLHNpemU9MCxhdGltZT0wLG10aW1lPTAsY3Rp bWU9MCMwMTIKSnVuIDIyIDE2OjMzOjMyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL2hl YWRzZXQuYzpyZmNvbW1faW9fY2IoKSBFUlIgb3IgSFVQIG9uIFJGQ09NTSBzb2NrZXQKSnVuIDIy IDE2OjMzOjMyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL3RlbGVwaG9ueS5jOnRlbGVw aG9ueV9kZXZpY2VfZGlzY29ubmVjdGVkKCkgdGVsZXBob255LWR1bW15OiBkZXZpY2UgMHhiODBi YTYwMCBkaXNjb25uZWN0ZWQKSnVuIDIyIDE2OjMzOjMyIHBldGVyIGJsdWV0b290aGRbODM5NF06 IGF1ZGlvL2hlYWRzZXQuYzpoZWFkc2V0X3NldF9zdGF0ZSgpIFN0YXRlIGNoYW5nZWQgL29yZy9i bHVlei84Mzk0L2hjaTEvZGV2XzAwXzIzXzdGXzQyXzgzX0IzOiBIRUFEU0VUX1NUQVRFX1BMQVlJ TkcgLT4gSEVBRFNFVF9TVEFURV9ESVNDT05ORUNURUQKSnVuIDIyIDE2OjMzOjMyIHBldGVyIGJs dWV0b290aGRbODM5NF06IGF1ZGlvL21lZGlhLmM6aGVhZHNldF9zdGF0ZV9jaGFuZ2VkKCkgCkp1 biAyMiAxNjozMzozMiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBhdWRpby90cmFuc3BvcnQuYzpt ZWRpYV90cmFuc3BvcnRfcmVtb3ZlKCkgVHJhbnNwb3J0IC9vcmcvYmx1ZXovODM5NC9oY2kxL2Rl dl8wMF8yM183Rl80Ml84M19CMy9mZDAgT3duZXIgOjEuNzMwCkp1biAyMiAxNjozMzozMiBwZXRl ciBibHVldG9vdGhkWzgzOTRdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV90cmFuc3BvcnRfcmVs ZWFzZSgpIFRyYW5zcG9ydCAvb3JnL2JsdWV6LzgzOTQvaGNpMS9kZXZfMDBfMjNfN0ZfNDJfODNf QjMvZmQwOiByZWFkIGxvY2sgcmVsZWFzZWQKSnVuIDIyIDE2OjMzOjMyIHBldGVyIGJsdWV0b290 aGRbODM5NF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3RyYW5zcG9ydF9yZWxlYXNlKCkgVHJh bnNwb3J0IC9vcmcvYmx1ZXovODM5NC9oY2kxL2Rldl8wMF8yM183Rl80Ml84M19CMy9mZDA6IHdy aXRlIGxvY2sgcmVsZWFzZWQKSnVuIDIyIDE2OjMzOjMyIHBldGVyIGJsdWV0b290aGRbODM5NF06 IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX293bmVyX2ZyZWUoKSBPd25lciA6MS43MzAKSnVuIDIy IDE2OjMzOjMyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL21lZGlhLmM6aGVhZHNldF9z dGF0ZV9jaGFuZ2VkKCkgCkp1biAyMiAxNjozMzozMiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBh dWRpby90cmFuc3BvcnQuYzptZWRpYV90cmFuc3BvcnRfcmVtb3ZlKCkgVHJhbnNwb3J0IC9vcmcv Ymx1ZXovODM5NC9oY2kwL2Rldl8wMF8yM183Rl80NV8yQV82Qy9mZDEgT3duZXIgOjEuNzMwCkp1 biAyMiAxNjozMzozMiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBhdWRpby90cmFuc3BvcnQuYzpt ZWRpYV90cmFuc3BvcnRfcmVsZWFzZSgpIFRyYW5zcG9ydCAvb3JnL2JsdWV6LzgzOTQvaGNpMC9k ZXZfMDBfMjNfN0ZfNDVfMkFfNkMvZmQxOiByZWFkIGxvY2sgcmVsZWFzZWQKSnVuIDIyIDE2OjMz OjMyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3RyYW5z cG9ydF9yZWxlYXNlKCkgVHJhbnNwb3J0IC9vcmcvYmx1ZXovODM5NC9oY2kwL2Rldl8wMF8yM183 Rl80NV8yQV82Qy9mZDE6IHdyaXRlIGxvY2sgcmVsZWFzZWQKSnVuIDIyIDE2OjMzOjMyIHBldGVy IGJsdWV0b290aGRbODM5NF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX293bmVyX2ZyZWUoKSBP d25lciA6MS43MzAKSnVuIDIyIDE2OjMzOjMyIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlv L2hlYWRzZXQuYzpoZWFkc2V0X3NldF9zdGF0ZSgpIFN0YXRlIGNoYW5nZWQgL29yZy9ibHVlei84 Mzk0L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDOiBIRUFEU0VUX1NUQVRFX1BMQVlJTkcgLT4g SEVBRFNFVF9TVEFURV9DT05ORUNURUQKSnVuIDIyIDE2OjMzOjMyIHBldGVyIGJsdWV0b290aGRb ODM5NF06IGF1ZGlvL21lZGlhLmM6aGVhZHNldF9zdGF0ZV9jaGFuZ2VkKCkgCkp1biAyMiAxNjoz MzozMiBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBhdWRpby9tZWRpYS5jOmhlYWRzZXRfc3RhdGVf Y2hhbmdlZCgpIApKdW4gMjIgMTY6MzM6MzIgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogcGx1Z2lu cy9oY2lvcHMuYzpkaXNjb25uX2NvbXBsZXRlKCkgaGFuZGxlIDQyIHN0YXR1cyAweDAwCkp1biAy MiAxNjozMzozMiBwZXRlciBidC1hdWRpbzogdW5yZWdpc3RlcmluZyAvdGVzdC9lbmRwb2ludDEK SnVuIDIyIDE2OjMzOjMzIHBldGVyIGJsdWV0b290aGRbODM5NF06IEVuZHBvaW50IHVucmVnaXN0 ZXJlZDogc2VuZGVyPToxLjczMCBwYXRoPS90ZXN0L2VuZHBvaW50MQpKdW4gMjIgMTY6MzM6MzMg cGV0ZXIgYnQtYXVkaW86IHVucmVnaXN0ZXJpbmcgL3Rlc3QvZW5kcG9pbnQwCkp1biAyMiAxNjoz MzozMyBwZXRlciBidC1hdWRpbzogcmVnaXN0ZXJpbmcgZW5kcG9pbnQgZm9yIGFkYXB0ZXJfaWQg MApKdW4gMjIgMTY6MzM6MzMgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogRW5kcG9pbnQgdW5yZWdp c3RlcmVkOiBzZW5kZXI9OjEuNzMwIHBhdGg9L3Rlc3QvZW5kcG9pbnQwCkp1biAyMiAxNjozMzoz MyBwZXRlciBibHVldG9vdGhkWzgzOTRdOiBhdWRpby9tZWRpYS5jOm1lZGlhX2VuZHBvaW50X2Fz eW5jX2NhbGwoKSBDYWxsaW5nIFNldENvbmZpZ3VyYXRpb246IG5hbWUgPSA6MS43MzAgcGF0aCA9 IC90ZXN0L2VuZHBvaW50MApKdW4gMjIgMTY6MzM6MzMgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTog RW5kcG9pbnQgcmVnaXN0ZXJlZDogc2VuZGVyPToxLjczMCBwYXRoPS90ZXN0L2VuZHBvaW50MApK dW4gMjIgMTY6MzM6MzMgcGV0ZXIga2VybmVsOiBbMTc1NTEuMDUwNDgwXSBoY2lfc2NvZGF0YV9w YWNrZXQ6IGhjaTEgU0NPIHBhY2tldCBmb3IgdW5rbm93biBjb25uZWN0aW9uIGhhbmRsZSA0MgpK dW4gMjIgMTY6MzM6MzMgcGV0ZXIgYnQtYXVkaW86IGhhbmRsZV9tZXRob2RfY2FsbCBjYWxsZWQg KHNlbmRlcjogOjEuNzI4LCBwYXRoOiAvdGVzdC9lbmRwb2ludDAsIGlmX25hbWU6IG9yZy5ibHVl ei5NZWRpYUVuZHBvaW50LCBtZXRob2RfbmFtZTogU2V0Q29uZmlndXJhdGlvbikKSnVuIDIyIDE2 OjMzOjMzIHBldGVyIGJ0LWF1ZGlvOiBTZXRDb25maWd1cmF0aW9uIGNhbGxlZApKdW4gMjIgMTY6 MzM6MzMgcGV0ZXIgYnQtYXVkaW86IGRldmljZSBwYXRoOiAvb3JnL2JsdWV6LzgzOTQvaGNpMC9k ZXZfMDBfMjNfN0ZfNDVfMkFfNkMsIHRyYW5zcG9ydCBwYXRoOiAvb3JnL2JsdWV6LzgzOTQvaGNp MC9kZXZfMDBfMjNfN0ZfNDVfMkFfNkMvZmQyCkp1biAyMiAxNjozMzozMyBwZXRlciBibHVldG9v dGhkWzgzOTRdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV90cmFuc3BvcnRfYWNxdWlyZSgpIFRy YW5zcG9ydCAvb3JnL2JsdWV6LzgzOTQvaGNpMC9kZXZfMDBfMjNfN0ZfNDVfMkFfNkMvZmQyOiBy ZWFkIGxvY2sgYWNxdWlyZWQKSnVuIDIyIDE2OjMzOjMzIHBldGVyIGJsdWV0b290aGRbODM5NF06 IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3RyYW5zcG9ydF9hY3F1aXJlKCkgVHJhbnNwb3J0IC9v cmcvYmx1ZXovODM5NC9oY2kwL2Rldl8wMF8yM183Rl80NV8yQV82Qy9mZDI6IHdyaXRlIGxvY2sg YWNxdWlyZWQKSnVuIDIyIDE2OjMzOjMzIHBldGVyIGJsdWV0b290aGRbODM5NF06IGF1ZGlvL3Ry YW5zcG9ydC5jOm1lZGlhX293bmVyX2NyZWF0ZSgpIE93bmVyIGNyZWF0ZWQ6IHNlbmRlcj06MS43 MzAgYWNjZXNzdHlwZT1ydwpKdW4gMjIgMTY6MzM6MzMgcGV0ZXIgYmx1ZXRvb3RoZFs4Mzk0XTog c2NvX2JpbmQ6IEFkZHJlc3MgYWxyZWFkeSBpbiB1c2UgKDk4KQpKdW4gMjIgMTY6MzM6MzMgcGV0 ZXIgYmx1ZXRvb3RoZFs4Mzk0XTogYXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFfb3duZXJfZnJlZSgp IE93bmVyIDoxLjczMApKdW4gMjIgMTY6MzM6MzMgcGV0ZXIgYnQtYXVkaW86IGFjcXVpcmVfY2Ig Y2FsbGVkIHdpdGggZGV2aWNlX3BhdGggL29yZy9ibHVlei84Mzk0L2hjaTAvZGV2XzAwXzIzXzdG XzQ1XzJBXzZDCkp1biAyMiAxNjozMzozMyBwZXRlciBidC1hdWRpbzogZGJ1cyBlcnJvciBpbiBy ZXBseSBmcm9tIEFjcXVpcmU6IEdEQnVzLkVycm9yOm9yZy5ibHVlei5FcnJvci5Ob3RBdXRob3Jp emVkOiBPcGVyYXRpb24gTm90IEF1dGhvcml6ZWQKCgoKCgpKdW4gMjIgMTc6NTg6MzcgcGV0ZXIg Ymx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL21lZGlhLmM6bWVkaWFfZW5kcG9pbnRfYXN5bmNfY2Fs bCgpIENhbGxpbmcgU2V0Q29uZmlndXJhdGlvbjogbmFtZSA9IDoxLjgyMyBwYXRoID0gL3Rlc3Qv ZW5kcG9pbnQxCkp1biAyMiAxNzo1ODozNyBwZXRlciBibHVldG9vdGhkWzE3MzAwXTogRW5kcG9p bnQgcmVnaXN0ZXJlZDogc2VuZGVyPToxLjgyMyBwYXRoPS90ZXN0L2VuZHBvaW50MQpKdW4gMjIg MTc6NTg6MzcgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL21lZGlhLmM6bWVkaWFfZW5k cG9pbnRfYXN5bmNfY2FsbCgpIENhbGxpbmcgU2V0Q29uZmlndXJhdGlvbjogbmFtZSA9IDoxLjgy MyBwYXRoID0gL3Rlc3QvZW5kcG9pbnQyCkp1biAyMiAxNzo1ODozNyBwZXRlciBibHVldG9vdGhk WzE3MzAwXTogRW5kcG9pbnQgcmVnaXN0ZXJlZDogc2VuZGVyPToxLjgyMyBwYXRoPS90ZXN0L2Vu ZHBvaW50MgpKdW4gMjIgMTc6NTg6MzkgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL3Ry YW5zcG9ydC5jOm1lZGlhX3RyYW5zcG9ydF9hY3F1aXJlKCkgVHJhbnNwb3J0IC9vcmcvYmx1ZXov MTcyOTkvaGNpMC9kZXZfMDBfMjNfN0ZfNDVfMkFfNkMvZmQ1OiByZWFkIGxvY2sgYWNxdWlyZWQK SnVuIDIyIDE3OjU4OjM5IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby90cmFuc3BvcnQu YzptZWRpYV90cmFuc3BvcnRfYWNxdWlyZSgpIFRyYW5zcG9ydCAvb3JnL2JsdWV6LzE3Mjk5L2hj aTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDL2ZkNTogd3JpdGUgbG9jayBhY3F1aXJlZApKdW4gMjIg MTc6NTg6MzkgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlh X293bmVyX2NyZWF0ZSgpIE93bmVyIGNyZWF0ZWQ6IHNlbmRlcj06MS44MjMgYWNjZXNzdHlwZT1y dwpKdW4gMjIgMTc6NTg6MzkgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL2hlYWRzZXQu YzpoZWFkc2V0X3NldF9zdGF0ZSgpIFN0YXRlIGNoYW5nZWQgL29yZy9ibHVlei8xNzI5OS9oY2kw L2Rldl8wMF8yM183Rl80NV8yQV82QzogSEVBRFNFVF9TVEFURV9DT05ORUNURUQgLT4gSEVBRFNF VF9TVEFURV9QTEFZX0lOX1BST0dSRVNTCkp1biAyMiAxNzo1ODozOSBwZXRlciBibHVldG9vdGhk WzE3MzAwXTogYXVkaW8vbWVkaWEuYzpoZWFkc2V0X3N0YXRlX2NoYW5nZWQoKSAKSnVuIDIyIDE3 OjU4OjM5IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby9tZWRpYS5jOmhlYWRzZXRfc3Rh dGVfY2hhbmdlZCgpIApKdW4gMjIgMTc6NTg6MzkgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1 ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3JlcXVlc3RfY3JlYXRlKCkgUmVxdWVzdCBjcmVhdGVkOiBt ZXRob2Q9QWNxdWlyZSBpZD02Ckp1biAyMiAxNzo1ODozOSBwZXRlciBibHVldG9vdGhkWzE3MzAw XTogYXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFfcmVxdWVzdF9jcmVhdGUoKSBSZXF1ZXN0IGNyZWF0 ZWQ6IG1ldGhvZD1BY3F1aXJlIGlkPTYKSnVuIDIyIDE3OjU4OjM5IHBldGVyIGJsdWV0b290aGRb MTczMDBdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV9vd25lcl9hZGQoKSBPd25lciA6MS44MjMg UmVxdWVzdCBBY3F1aXJlCkp1biAyMiAxNzo1ODozOSBwZXRlciBibHVldG9vdGhkWzE3MzAwXTog YXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFfdHJhbnNwb3J0X2FkZCgpIFRyYW5zcG9ydCAvb3JnL2Js dWV6LzE3Mjk5L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDL2ZkNSBPd25lciA6MS44MjMKSnVu IDIyIDE3OjU4OjM5IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby90cmFuc3BvcnQuYzpt ZWRpYV90cmFuc3BvcnRfYWNxdWlyZSgpIFRyYW5zcG9ydCAvb3JnL2JsdWV6LzE3Mjk5L2hjaTEv ZGV2XzAwXzIzXzdGXzQyXzgzX0IzL2ZkNjogcmVhZCBsb2NrIGFjcXVpcmVkCkp1biAyMiAxNzo1 ODozOSBwZXRlciBibHVldG9vdGhkWzE3MzAwXTogYXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFfdHJh bnNwb3J0X2FjcXVpcmUoKSBUcmFuc3BvcnQgL29yZy9ibHVlei8xNzI5OS9oY2kxL2Rldl8wMF8y M183Rl80Ml84M19CMy9mZDY6IHdyaXRlIGxvY2sgYWNxdWlyZWQKSnVuIDIyIDE3OjU4OjM5IHBl dGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV9vd25lcl9jcmVh dGUoKSBPd25lciBjcmVhdGVkOiBzZW5kZXI9OjEuODIzIGFjY2Vzc3R5cGU9cncKSnVuIDIyIDE3 OjU4OjM5IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby9oZWFkc2V0LmM6aGVhZHNldF9z ZXRfc3RhdGUoKSBTdGF0ZSBjaGFuZ2VkIC9vcmcvYmx1ZXovMTcyOTkvaGNpMS9kZXZfMDBfMjNf N0ZfNDJfODNfQjM6IEhFQURTRVRfU1RBVEVfQ09OTkVDVEVEIC0+IEhFQURTRVRfU1RBVEVfUExB WV9JTl9QUk9HUkVTUwpKdW4gMjIgMTc6NTg6MzkgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1 ZGlvL21lZGlhLmM6aGVhZHNldF9zdGF0ZV9jaGFuZ2VkKCkgCkp1biAyMiAxNzo1ODozOSBwZXRl ciBibHVldG9vdGhkWzE3MzAwXTogYXVkaW8vbWVkaWEuYzpoZWFkc2V0X3N0YXRlX2NoYW5nZWQo KSAKSnVuIDIyIDE3OjU4OjM5IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby90cmFuc3Bv cnQuYzptZWRpYV9yZXF1ZXN0X2NyZWF0ZSgpIFJlcXVlc3QgY3JlYXRlZDogbWV0aG9kPUFjcXVp cmUgaWQ9NwpKdW4gMjIgMTc6NTg6MzkgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL3Ry YW5zcG9ydC5jOm1lZGlhX293bmVyX2FkZCgpIE93bmVyIDoxLjgyMyBSZXF1ZXN0IEFjcXVpcmUK SnVuIDIyIDE3OjU4OjM5IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby90cmFuc3BvcnQu YzptZWRpYV90cmFuc3BvcnRfYWRkKCkgVHJhbnNwb3J0IC9vcmcvYmx1ZXovMTcyOTkvaGNpMS9k ZXZfMDBfMjNfN0ZfNDJfODNfQjMvZmQ2IE93bmVyIDoxLjgyMwpKdW4gMjIgMTc6NTg6MzkgcGV0 ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL2hlYWRzZXQuYzpzY29fY29ubmVjdF9jYigpIFND TyBzb2NrZXQgb3BlbmVkIGZvciBoZWFkc2V0IC9vcmcvYmx1ZXovMTcyOTkvaGNpMC9kZXZfMDBf MjNfN0ZfNDVfMkFfNkMKSnVuIDIyIDE3OjU4OjM5IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBh dWRpby9oZWFkc2V0LmM6c2NvX2Nvbm5lY3RfY2IoKSBTQ08gZmQ9NDEKSnVuIDIyIDE3OjU4OjM5 IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiAvb3JnL2JsdWV6LzE3Mjk5L2hjaTAvZGV2XzAwXzIz XzdGXzQ1XzJBXzZDL2ZkNTogZmQoNDEpIHJlYWR5Ckp1biAyMiAxNzo1ODozOSBwZXRlciBibHVl dG9vdGhkWzE3MzAwXTogYXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFfb3duZXJfcmVtb3ZlKCkgT3du ZXIgOjEuODIzIFJlcXVlc3QgQWNxdWlyZQpKdW4gMjIgMTc6NTg6MzkgcGV0ZXIgYmx1ZXRvb3Ro ZFsxNzMwMF06IGF1ZGlvL2hlYWRzZXQuYzpoZWFkc2V0X3NldF9zdGF0ZSgpIFN0YXRlIGNoYW5n ZWQgL29yZy9ibHVlei8xNzI5OS9oY2kwL2Rldl8wMF8yM183Rl80NV8yQV82QzogSEVBRFNFVF9T VEFURV9QTEFZX0lOX1BST0dSRVNTIC0+IEhFQURTRVRfU1RBVEVfUExBWUlORwpKdW4gMjIgMTc6 NTg6MzkgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL21lZGlhLmM6aGVhZHNldF9zdGF0 ZV9jaGFuZ2VkKCkgCkp1biAyMiAxNzo1ODozOSBwZXRlciBibHVldG9vdGhkWzE3MzAwXTogYXVk aW8vbWVkaWEuYzpoZWFkc2V0X3N0YXRlX2NoYW5nZWQoKSAKSnVuIDIyIDE3OjU4OjQwIHBldGVy IGJsdWV0b290aGRbMTczMDBdOiBhdWRpby9oZWFkc2V0LmM6c2NvX2Nvbm5lY3RfY2IoKSBTQ08g c29ja2V0IG9wZW5lZCBmb3IgaGVhZHNldCAvb3JnL2JsdWV6LzE3Mjk5L2hjaTEvZGV2XzAwXzIz XzdGXzQyXzgzX0IzCkp1biAyMiAxNzo1ODo0MCBwZXRlciBibHVldG9vdGhkWzE3MzAwXTogYXVk aW8vaGVhZHNldC5jOnNjb19jb25uZWN0X2NiKCkgU0NPIGZkPTQyCkp1biAyMiAxNzo1ODo0MCBw ZXRlciBibHVldG9vdGhkWzE3MzAwXTogL29yZy9ibHVlei8xNzI5OS9oY2kxL2Rldl8wMF8yM183 Rl80Ml84M19CMy9mZDY6IGZkKDQyKSByZWFkeQpKdW4gMjIgMTc6NTg6NDAgcGV0ZXIgYmx1ZXRv b3RoZFsxNzMwMF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX293bmVyX3JlbW92ZSgpIE93bmVy IDoxLjgyMyBSZXF1ZXN0IEFjcXVpcmUKSnVuIDIyIDE3OjU4OjQwIHBldGVyIGJsdWV0b290aGRb MTczMDBdOiBhdWRpby9oZWFkc2V0LmM6aGVhZHNldF9zZXRfc3RhdGUoKSBTdGF0ZSBjaGFuZ2Vk IC9vcmcvYmx1ZXovMTcyOTkvaGNpMS9kZXZfMDBfMjNfN0ZfNDJfODNfQjM6IEhFQURTRVRfU1RB VEVfUExBWV9JTl9QUk9HUkVTUyAtPiBIRUFEU0VUX1NUQVRFX1BMQVlJTkcKSnVuIDIyIDE3OjU4 OjQwIHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby9tZWRpYS5jOmhlYWRzZXRfc3RhdGVf Y2hhbmdlZCgpIApKdW4gMjIgMTc6NTg6NDAgcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlv L21lZGlhLmM6aGVhZHNldF9zdGF0ZV9jaGFuZ2VkKCkgCkp1biAyMiAxNzo1ODo1NyBwZXRlciBi bHVldG9vdGhkWzE3MzAwXTogQXVkaW8gY29ubmVjdGlvbiBnb3QgZGlzY29ubmVjdGVkCkp1biAy MiAxNzo1ODo1NyBwZXRlciBibHVldG9vdGhkWzE3MzAwXTogYXVkaW8vaGVhZHNldC5jOmhlYWRz ZXRfc2V0X3N0YXRlKCkgU3RhdGUgY2hhbmdlZCAvb3JnL2JsdWV6LzE3Mjk5L2hjaTAvZGV2XzAw XzIzXzdGXzQ1XzJBXzZDOiBIRUFEU0VUX1NUQVRFX1BMQVlJTkcgLT4gSEVBRFNFVF9TVEFURV9D T05ORUNURUQKSnVuIDIyIDE3OjU4OjU3IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby9t ZWRpYS5jOmhlYWRzZXRfc3RhdGVfY2hhbmdlZCgpIApKdW4gMjIgMTc6NTg6NTcgcGV0ZXIgYmx1 ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL21lZGlhLmM6aGVhZHNldF9zdGF0ZV9jaGFuZ2VkKCkgCkp1 biAyMiAxNzo1ODo1NyBwZXRlciBibHVldG9vdGhkWzE3MzAwXTogcGx1Z2lucy9oY2lvcHMuYzpk aXNjb25uX2NvbXBsZXRlKCkgaGFuZGxlIDQyIHN0YXR1cyAweDAwCkp1biAyMiAxNzo1ODo1NyBw ZXRlciBrZXJuZWw6IFsyMjY3NS4zOTc3MTRdIGhjaV9zY29kYXRhX3BhY2tldDogaGNpMCBTQ08g cGFja2V0IGZvciB1bmtub3duIGNvbm5lY3Rpb24gaGFuZGxlIDQyCkp1biAyMiAxNzo1ODo1NyBw ZXRlciBrZXJuZWw6IFsyMjY3NS4zOTc3MjVdIGhjaV9zY29kYXRhX3BhY2tldDogaGNpMCBTQ08g cGFja2V0IGZvciB1bmtub3duIGNvbm5lY3Rpb24gaGFuZGxlIDQyCkp1biAyMiAxNzo1ODo1NyBw ZXRlciBrZXJuZWw6IFsyMjY3NS4zOTc3MjVdIGhjaV9zY29kYXRhX3BhY2tldDogaGNpMCBTQ08g cGFja2V0IGZvciB1bmtub3duIGNvbm5lY3Rpb24gaGFuZGxlIDQyCkp1biAyMiAxNzo1ODo1NyBw ZXRlciBrZXJuZWw6IFsyMjY3NS4zOTc3MzJdIGhjaV9zY29kYXRhX3BhY2tldDogaGNpMCBTQ08g cGFja2V0IGZvciB1bmtub3duIGNvbm5lY3Rpb24gaGFuZGxlIDQyCkp1biAyMiAxNzo1ODo1OCBw ZXRlciBibHVldG9vdGhkWzE3MzAwXTogYXVkaW8vaGVhZHNldC5jOnJmY29tbV9pb19jYigpIEVS UiBvciBIVVAgb24gUkZDT01NIHNvY2tldApKdW4gMjIgMTc6NTg6NTggcGV0ZXIgYmx1ZXRvb3Ro ZFsxNzMwMF06IGF1ZGlvL3RlbGVwaG9ueS5jOnRlbGVwaG9ueV9kZXZpY2VfZGlzY29ubmVjdGVk KCkgdGVsZXBob255LWR1bW15OiBkZXZpY2UgMHhiN2U3ZTY5OCBkaXNjb25uZWN0ZWQKSnVuIDIy IDE3OjU4OjU4IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby9oZWFkc2V0LmM6aGVhZHNl dF9zZXRfc3RhdGUoKSBTdGF0ZSBjaGFuZ2VkIC9vcmcvYmx1ZXovMTcyOTkvaGNpMC9kZXZfMDBf MjNfN0ZfNDVfMkFfNkM6IEhFQURTRVRfU1RBVEVfQ09OTkVDVEVEIC0+IEhFQURTRVRfU1RBVEVf RElTQ09OTkVDVEVECkp1biAyMiAxNzo1ODo1OCBwZXRlciBibHVldG9vdGhkWzE3MzAwXTogYXVk aW8vbWVkaWEuYzpoZWFkc2V0X3N0YXRlX2NoYW5nZWQoKSAKSnVuIDIyIDE3OjU4OjU4IHBldGVy IGJsdWV0b290aGRbMTczMDBdOiBhdWRpby90cmFuc3BvcnQuYzptZWRpYV90cmFuc3BvcnRfcmVt b3ZlKCkgVHJhbnNwb3J0IC9vcmcvYmx1ZXovMTcyOTkvaGNpMC9kZXZfMDBfMjNfN0ZfNDVfMkFf NkMvZmQ1IE93bmVyIDoxLjgyMwpKdW4gMjIgMTc6NTg6NTggcGV0ZXIgYmx1ZXRvb3RoZFsxNzMw MF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3RyYW5zcG9ydF9yZWxlYXNlKCkgVHJhbnNwb3J0 IC9vcmcvYmx1ZXovMTcyOTkvaGNpMC9kZXZfMDBfMjNfN0ZfNDVfMkFfNkMvZmQ1OiByZWFkIGxv Y2sgcmVsZWFzZWQKSnVuIDIyIDE3OjU4OjU4IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRp by90cmFuc3BvcnQuYzptZWRpYV90cmFuc3BvcnRfcmVsZWFzZSgpIFRyYW5zcG9ydCAvb3JnL2Js dWV6LzE3Mjk5L2hjaTAvZGV2XzAwXzIzXzdGXzQ1XzJBXzZDL2ZkNTogd3JpdGUgbG9jayByZWxl YXNlZApKdW4gMjIgMTc6NTg6NTggcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL3RyYW5z cG9ydC5jOm1lZGlhX293bmVyX2ZyZWUoKSBPd25lciA6MS44MjMKSnVuIDIyIDE3OjU4OjU4IHBl dGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby9tZWRpYS5jOmhlYWRzZXRfc3RhdGVfY2hhbmdl ZCgpIApKdW4gMjIgMTc6NTg6NTggcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL3RyYW5z cG9ydC5jOm1lZGlhX3RyYW5zcG9ydF9yZW1vdmUoKSBUcmFuc3BvcnQgL29yZy9ibHVlei8xNzI5 OS9oY2kxL2Rldl8wMF8yM183Rl80Ml84M19CMy9mZDYgT3duZXIgOjEuODIzCkp1biAyMiAxNzo1 ODo1OCBwZXRlciBibHVldG9vdGhkWzE3MzAwXTogYXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFfdHJh bnNwb3J0X3JlbGVhc2UoKSBUcmFuc3BvcnQgL29yZy9ibHVlei8xNzI5OS9oY2kxL2Rldl8wMF8y M183Rl80Ml84M19CMy9mZDY6IHJlYWQgbG9jayByZWxlYXNlZApKdW4gMjIgMTc6NTg6NTggcGV0 ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL3RyYW5zcG9ydC5jOm1lZGlhX3RyYW5zcG9ydF9y ZWxlYXNlKCkgVHJhbnNwb3J0IC9vcmcvYmx1ZXovMTcyOTkvaGNpMS9kZXZfMDBfMjNfN0ZfNDJf ODNfQjMvZmQ2OiB3cml0ZSBsb2NrIHJlbGVhc2VkCkp1biAyMiAxNzo1ODo1OCBwZXRlciBibHVl dG9vdGhkWzE3MzAwXTogYXVkaW8vdHJhbnNwb3J0LmM6bWVkaWFfb3duZXJfZnJlZSgpIE93bmVy IDoxLjgyMwpKdW4gMjIgMTc6NTg6NTggcGV0ZXIgYmx1ZXRvb3RoZFsxNzMwMF06IGF1ZGlvL2hl YWRzZXQuYzpoZWFkc2V0X3NldF9zdGF0ZSgpIFN0YXRlIGNoYW5nZWQgL29yZy9ibHVlei8xNzI5 OS9oY2kxL2Rldl8wMF8yM183Rl80Ml84M19CMzogSEVBRFNFVF9TVEFURV9QTEFZSU5HIC0+IEhF QURTRVRfU1RBVEVfQ09OTkVDVEVECkp1biAyMiAxNzo1ODo1OCBwZXRlciBibHVldG9vdGhkWzE3 MzAwXTogYXVkaW8vbWVkaWEuYzpoZWFkc2V0X3N0YXRlX2NoYW5nZWQoKSAKSnVuIDIyIDE3OjU4 OjU4IHBldGVyIGJsdWV0b290aGRbMTczMDBdOiBhdWRpby9tZWRpYS5jOmhlYWRzZXRfc3RhdGVf Y2hhbmdlZCgpIA== --=====================_4082000==_--