R2l0d2ViIEludGVncmF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLQoKR2Vycml0IENvZGUgUmV2aWV3IGNhbiBtYW5hZ2UgYW5kIGdlbmVyYXRlIGh5cGVybGlua3MgdG8gZ2l0d2ViLAphbGxvd2luZyB1c2VycyB0byBqdW1wIGZyb20gR2Vycml0IGNvbnRlbnQgdG8gdGhlIHNhbWUgaW5mb3JtYXRpb24sCmJ1dCBzaG93biBieSBnaXR3ZWIuCgpJbnRlcm5hbC9NYW5hZ2VkIGdpdHdlYgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKSW4gdGhlIGludGVybmFsIGNvbmZpZ3VyYXRpb24sIEdlcnJpdCBpbnNwZWN0cyB0aGUgcmVxdWVzdCwgZW5mb3JjZXMKaXRzIHByb2plY3QgbGV2ZWwgYWNjZXNzIGNvbnRyb2xzLCBhbmQgZGlyZWN0bHkgZXhlY3V0ZXMgYGdpdHdlYi5jZ2lgCmlmIHRoZSB1c2VyIGlzIGF1dGhvcml6ZWQgdG8gdmlldyB0aGUgcGFnZS4KClRvIGVuYWJsZSB0aGUgaW50ZXJuYWwgY29uZmlndXJhdGlvbiwgc2V0Cmxpbms6Y29uZmlnLWdlcnJpdC5odG1sI2dpdHdlYi5jZ2lbZ2l0d2ViLmNnaV0gd2l0aCB0aGUgcGF0aCBvZiB0aGUKaW5zdGFsbGVkIENHSS4gIFRoaXMgZGVmYXVsdHMgdG8gYC91c3IvbGliL2NnaS1iaW4vZ2l0d2ViLmNnaWAsCndoaWNoIGlzIGEgY29tbW9uIGluc3RhbGxhdGlvbiBwYXRoIGZvciB0aGUgJ2dpdHdlYicgcGFja2FnZSBvbgpMaW51eCBkaXN0cmlidXRpb25zLgoKPT09PQogIGdpdCBjb25maWcgLS1maWxlICRzaXRlX3BhdGgvZXRjL2dlcnJpdC5jb25maWcgZ2l0d2ViLmNnaSAvdXNyL2xpYi9jZ2ktYmluL2dpdHdlYi5jZ2kKICBnaXQgY29uZmlnIC0tZmlsZSAkc2l0ZV9wYXRoL2V0Yy9nZXJyaXQuY29uZmlnIC0tdW5zZXQgZ2l0d2ViLnVybAo9PT09CgpBbHRlcm5hdGl2ZWx5LCBpZiBHZXJyaXQgaXMgc2VydmVkIGJlaGluZCByZXZlcnNlIHByb3h5LCBpdCBjYW4KZ2VuZXJhdGUgZGlmZmVyZW50IFVSTHMgZm9yIGdpdHdlYidzIGxpbmtzICh0aGV5IG5lZWQgdG8gYmUKcmV3cml0dGVuIHRvIGA8Z2Vycml0Pi9naXR3ZWI/YXJnc2Agb24gdGhlIHdlYiBzZXJ2ZXIpLiBUaGlzIGFsbG93cwpmb3Igc2VydmluZyBnaXR3ZWIgdW5kZXIgYSBkaWZmZXJlbnQgVVJMIHRoYW4gdGhlIEdlcnJpdCBpbnN0YW5jZS4KVG8gZW5hYmxlIHRoaXMgZmVhdHVyZSwgc2V0IGJvdGg6IGBnaXR3ZWIuY2dpYCBhbmQgYGdpdHdlYi51cmxgLgoKPT09PQogIGdpdCBjb25maWcgLS1maWxlICRzaXRlX3BhdGgvZXRjL2dlcnJpdC5jb25maWcgZ2l0d2ViLmNnaSAvdXNyL2xpYi9jZ2ktYmluL2dpdHdlYi5jZ2kKICBnaXQgY29uZmlnIC0tZmlsZSAkc2l0ZV9wYXRoL2V0Yy9nZXJyaXQuY29uZmlnIGdpdHdlYi51cmwgL3ByZXR0eS9wYXRoL3RvL2dpdHdlYgo9PT09CgpBZnRlciB1cGRhdGluZyBgJyRzaXRlX3BhdGgnL2V0Yy9nZXJyaXQuY29uZmlnYCwgdGhlIEdlcnJpdCBzZXJ2ZXIgbXVzdApiZSByZXN0YXJ0ZWQgYW5kIGNsaWVudHMgbXVzdCByZWxvYWQgdGhlIGhvc3QgcGFnZSB0byBzZWUgdGhlIGNoYW5nZS4KCkNvbmZpZ3VyYXRpb24KXl5eXl5eXl5eXl5eXgoKTW9zdCBvZiB0aGUgZ2l0d2ViIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBoYW5kbGVkIGF1dG9tYXRpY2FsbHkKYnkgR2Vycml0IENvZGUgUmV2aWV3LiAgU2l0ZSBzcGVjaWZpYyBvdmVycmlkZXMgY2FuIGJlIHBsYWNlZCBpbgpgJyRzaXRlX3BhdGgnL2V0Yy9naXR3ZWJfY29uZmlnLnBlcmxgLCBhcyB0aGlzIGZpbGUgaXMgbG9hZGVkIGFzCnBhcnQgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uIGZpbGUuCgpMb2dvIGFuZCBDU1MKXl5eXl5eXl5eXl5eCgpJZiB0aGUgcGFja2FnZS1tYW5hZ2VyIGluc3RhbGxlZCBDR0kgKGAvdXNyL2xpYi9jZ2ktYmluL2dpdHdlYi5jZ2lgKQppcyBiZWluZyB1c2VkLCB0aGUgc3RvY2sgQ1NTIGFuZCBsb2dvIGZpbGVzIHdpbGwgYmUgc2VydmVkIGZyb20KZWl0aGVyIGAvdXNyL3NoYXJlL2dpdHdlYmAgb3IgYC92YXIvd3d3YC4KCk90aGVyd2lzZSwgR2Vycml0IGV4cGVjdHMgYGdpdHdlYi5jc3NgIGFuZCBgZ2l0LWxvZ28ucG5nYCB0byBiZSBmb3VuZAppbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIENHSSBzY3JpcHQgaXRzZWxmLiAgVGhpcyBtYXRjaGVzIHdpdGgKdGhlIGRlZmF1bHQgc291cmNlIGNvZGUgZGlzdHJpYnV0aW9uLCBhbmQgbW9zdCBjdXN0b20gaW5zdGFsbGF0aW9ucy4KCkFjY2VzcyBDb250cm9sCl5eXl5eXl5eXl5eXl5eCgpBY2Nlc3MgY29udHJvbHMgZm9yIGludGVybmFsbHkgbWFuYWdlZCBnaXR3ZWIgcGFnZSB2aWV3cyBhcmUgZW5mb3JjZWQKdXNpbmcgdGhlIHN0YW5kYXJkIHByb2plY3QgUkVBRCArMSBwZXJtaXNzaW9uLgoKRXh0ZXJuYWwvVW5tYW5hZ2VkIGdpdHdlYgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpGb3IgdGhlIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24sIGdpdHdlYiBydW5zIHVuZGVyIHRoZSBjb250cm9sIG9mIGFuCmV4dGVybmFsIHdlYiBzZXJ2ZXIsIGFuZCBHZXJyaXQgYWNjZXNzIGNvbnRyb2xzIGFyZSBub3QgZW5mb3JjZWQuIEdlcnJpdApwcm92aWRlcyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGludGVncmF0aW9uIHdpdGggR2l0V2ViLgoKW1tsaW51eEdpdFdlYl1dCkxpbnV4IEluc3RhbGxhdGlvbgpeXl5eXl5eXl5eXl5eXl5eXl4KCkluc3RhbGwgR2l0V2ViCisrKysrKysrKysrKysrCgpPbiBVYnVudHU6Cgo9PT09CiAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgZ2l0d2ViCj09PT0KCldpdGggWXVtOgoKPT09PQogICQgeXVtIGluc3RhbGwgZ2l0d2ViCj09PT0KCkNvbmZpZ3VyZSBHaXRXZWIKKysrKysrKysrKysrKysrKwoKClVwZGF0ZSBgL2V0Yy9naXR3ZWIuY29uZmAsIGFkZCB0aGUgcHVibGljIEdJVCByZXBvc2l0b3JpZXM6CgotLS0tCiRwcm9qZWN0cm9vdCA9ICIvdmFyL3d3dy9yZXBvLyI7CgojIGRpcmVjdG9yeSB0byB1c2UgZm9yIHRlbXAgZmlsZXMKJGdpdF90ZW1wID0gIi90bXAiOwoKIyB0YXJnZXQgb2YgdGhlIGhvbWUgbGluayBvbiB0b3Agb2YgYWxsIHBhZ2VzCiMkaG9tZV9saW5rID0gJG15X3VyaSB8fCAiLyI7CgojIGh0bWwgdGV4dCB0byBpbmNsdWRlIGF0IGhvbWUgcGFnZQokaG9tZV90ZXh0ID0gImluZGV4dGV4dC5odG1sIjsKCiMgZmlsZSB3aXRoIHByb2plY3QgbGlzdDsgYnkgZGVmYXVsdCwgc2ltcGx5IHNjYW4gdGhlIHByb2plY3Ryb290IGRpci4KJHByb2plY3RzX2xpc3QgPSAkcHJvamVjdHJvb3Q7CgojIHN0eWxlc2hlZXQgdG8gdXNlCiMgSSB0b29rIG9mZiB0aGUgcHJlZml4IC8gb2YgdGhlIGZvbGxvd2luZyBwYXRoIHRvIHB1dCB0aGVzZSBmaWxlcyBpbnNpZGUgZ2l0d2ViIGRpcmVjdG9yeSBkaXJlY3RseQokc3R5bGVzaGVldCA9ICJnaXR3ZWIuY3NzIjsKCiMgbG9nbyB0byB1c2UKJGxvZ28gPSAiZ2l0LWxvZ28ucG5nIjsKCiMgdGhlIJFmYXZpY29ukgokZmF2aWNvbiA9ICJnaXQtZmF2aWNvbi5wbmciOwotLS0tCgpDb25maWd1cmUgJiBSZXN0YXJ0IEFwYWNoZSBXZWIgU2VydmVyCl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KCkNvbmZpZ3VyZSBBcGFjaGUKKysrKysrKysrKysrKysrKwoKCkxpbmsgZ2l0d2ViIHRvIGAvdmFyL3d3dy9naXR3ZWJgLCBjaGVjayBgL2V0Yy9naXR3ZWIuY29uZmAgaWYgdW5zdXJlIG9mIHBhdGhzOgoKPT09PQogICQgc3VkbyBsbiAtcyAvdXNyL3NoYXJlL2dpdHdlYiAvdmFyL3d3dy9naXR3ZWIKPT09PQoKQWRkIHRoZSBnaXR3ZWIgZGlyZWN0b3J5IHRvIHRoZSBBcGFjaGUgY29uZmlndXJhdGlvbiBieSBjcmVhdGluZyBhICJnaXR3ZWIiCmZpbGUgaW5zaWRlIHRoZSBBcGFjaGUgY29uZi5kIGRpcmVjdG9yeToKCj09PT0KICAkIHRvdWNoIC9ldGMvYXBhY2hlL2NvbmYuZC9naXR3ZWIKPT09PQoKQWRkIHRoZSBmb2xsb3dpbmcgdG8gL2V0Yy9hcGFjaGUvY29uZi5kL2dpdHdlYjoKCi0tLS0KQWxpYXMgL2dpdHdlYiAvdmFyL3d3dy9naXR3ZWIKCk9wdGlvbnMgSW5kZXhlcyBGb2xsb3dTeW1saW5rcyBFeGVjQ0dJCkRpcmVjdG9yeUluZGV4IC9jZ2ktYmluL2dpdHdlYi5jZ2kKQWxsb3dPdmVycmlkZSBOb25lCi0tLS0KCipOT1RFKiBUaGlzIG1heSBoYXZlIGFscmVhZHkgYmVlbiBhZGRlZCBieSB5dW0vYXB0LWdldC4gSWYgdGhhdCdzIHRoZSBjYXNlLCBsZWF2ZSBhcwppcy4KClJlc3RhcnQgdGhlIEFwYWNoZSBXZWIgU2VydmVyCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrCgo9PT09CiQgc3VkbyAvZXRjL2luaXQuZC9hcGFjaGUyIHJlc3RhcnQKPT09PQoKTm93IHlvdSBzaG91bGQgYmUgYWJsZSB0byB2aWV3IHlvdXIgcmVwb3NpdG9yeSBwcm9qZWN0cyBvbmxpbmU6CgpsaW5rOmh0dHA6Ly9sb2NhbGhvc3QvZ2l0d2ViW2h0dHA6Ly9sb2NhbGhvc3QvZ2l0d2ViXQoKW1tXaW5kb3dzR2l0V2ViXV0KV2luZG93cyBJbnN0YWxsYXRpb24KXl5eXl5eXl5eXl5eXl5eXl5eXl4KCkluc3RydWN0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBpbnN0YWxsaW5nIHRoZSBHaXRXZWIgbW9kdWxlIGRpc3RyaWJ1dGVkIHdpdGgKTXN5c0dpdDoKCmxpbms6aHR0cHM6Ly9naXRodWIuY29tL21zeXNnaXQvbXN5c2dpdC93aWtpL0dpdFdlYltHaXRXZWJdCgpJZiB5b3UgZG9uJ3QgaGF2ZSBBcGFjaGUgaW5zdGFsbGVkLCB5b3UgY2FuIGRvd25sb2FkIHRoZSBhcHByb3ByaWF0ZSBidWlsZCBmb3IKV2luZG93cyBmcm9tIGxpbms6aHR0cDovL3d3dy5hcGFjaGVsb3VuZ2UuY29tL2Rvd25sb2FkW2FwYWNoZWxvdW5nZS5vcmddLgoKQWZ0ZXIgeW91IGhhdmUgaW5zdGFsbGVkIEFwYWNoZSwgeW91IHdpbGwgd2FudCB0byBjcmVhdGUgYSBsaW5rOmh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi4wL3BsYXRmb3JtL3dpbmRvd3MuaHRtbCN3aW5zdmNbbmV3IHNlcnZpY2UgdXNlcgphY2NvdW50XSB0byB1c2Ugd2l0aCBBcGFjaGUuCgpJZiB5b3UncmUgc3RpbGwgaGF2aW5nIGRpZmZpY3VsdHkgc2V0dGluZyB1cCBwZXJtaXNzaW9ucywgeW91IG1heSBmaW5kIHRoaXMKdGVjaCBub3RlIHVzZWZ1bCBmb3IgY29uZmlndXJpbmcgQXBhY2hlIFNlcnZpY2UgdG8gcnVuIHVuZGVyIGFub3RoZXIgYWNjb3VudC4KWW91IG11c3QgZ3JhbnQgdGhlIG5ldyBhY2NvdW50IGxpbms6aHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2NjNzk0OTQ0KFdTLjEwKS5hc3B4WyJydW4gYXMgc2VydmljZSJdIHBlcm1pc3Npb246CgpUaGUgR2l0V2ViIHZlcnNpb24gaW4gbXN5c2dpdCBpcyBtaXNzaW5nIHNldmVyYWwgaW1wb3J0YW50IGFuZCByZXF1aXJlZApwZXJsIG1vZHVsZXMsIGluY2x1ZGluZyBDR0kucG0uIFRoZSBwZXJsIGluY2x1ZGVkIHdpdGggdGhlIG1zeXNnaXQgZGlzdHJvIDEuNy44CmlzIGJyb2tlbi4uIFRoZSBsaW5rOmh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9tc3lzZ2l0L2Jyb3dzZV90aHJlYWQvdGhyZWFkL2JhMzUwMWYxZjBlZDk1YWZbdW5pY29yZSBmb2xkZXIgaXMgbWlzc2luZyBhbG9uZyB3aXRoIHV0ZjhfaGVhdnkucGwgYW5kIENHSS5wbV0uIFlvdSBjYW4KdmVyaWZ5IGJ5IGNoZWNraW5nIGZvciBwZXJsIG1vZHVsZXMuIEZyb20gYW4gbXN5cyBjb25zb2xlLCBleGVjdXRlIHRoZQpmb2xsb3dpbmcgdG8gY2hlY2s6Cgo9PT09CiQgcGVybCAtbUNHSSAtbUVuY29kZSAtbUZjbnRsIC1tRmlsZTo6RmluZCAtbUZpbGU6OkJhc2VuYW1lIC1lICIiCj09PT0KCllvdSBtYXkgZW5jb3VudGVyIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOgoKLS0tLQokIHBlcmwgLW1DR0kgLW1FbmNvZGUgLW1GY250bCAtbUZpbGU6OkZpbmQgLW1GaWxlOjpCYXNlbmFtZSAtZSAiIgpDYW4ndCBsb2NhdGUgQ0dJLnBtIGluIEBJTkMgKEBJTkMgY29udGFpbnM6IC91c3IvbGliL3Blcmw1LzUuOC44L21zeXMKL3Vzci9saWIvcCBlcmw1LzUuOC44IC91c3IvbGliL3Blcmw1L3NpdGVfcGVybC81LjguOC9tc3lzCi91c3IvbGliL3Blcmw1L3NpdGVfcGVybC81LjguOCAvdSBzci9saWIvcGVybDUvc2l0ZV9wZXJsIC4pLiBCRUdJTgpmYWlsZWQtLWNvbXBpbGF0aW9uIGFib3J0ZWQuCi0tLS0KCklmIHlvdSdyZSBtaXNzaW5nIENHSS5wbSwgeW91J2xsIGhhdmUgdG8gZGVwbG95IHRoZSBtb2R1bGUgdG8gdGhlIG1zeXMKZW52aXJvbm1lbnQ6IFlvdSB3aWxsIGhhdmUgdG8gcmV0cmlldmUgdGhlbSBmcm9tIHRoZSA1LjguOCBkaXN0cm8gb24gOgoKaHR0cDovL3N0cmF3YmVycnlwZXJsLmNvbS9yZWxlYXNlcy5odG1sCgpGaWxlOiBzdHJhd2JlcnJ5LXBlcmwtNS44LjguMy56aXAKCmNvbnRlbnRzOiBgYmluL2AgYGxpYi9gIGBzaXRlL2AKCmNvcHkgdGhlIGNvbnRlbnRzIG9mIGxpYiBpbnRvIGBtc3lzZ2l0L2xpYi9wZXJsNS81LjguOGAgYW5kIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy4KCkVuYWJsZSBHaXRXZWIgSW50ZWdyYXRpb24KXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgoKVG8gZW5hYmxlIHRoZSBleHRlcm5hbCBnaXR3ZWIgaW50ZWdyYXRpb24sIHNldApsaW5rOmNvbmZpZy1nZXJyaXQuaHRtbCNnaXR3ZWIudXJsW2dpdHdlYi51cmxdIHdpdGggdGhlIFVSTCBvZiB5b3VyCmdpdHdlYiBDR0kuCgpUaGUgQ0dJJ3MgYCRwcm9qZWN0cm9vdGAgc2hvdWxkIGJlIHRoZSBzYW1lIGRpcmVjdG9yeSBhcwpnZXJyaXQuYmFzZVBhdGgsIG9yIGEgZmFpcmx5IGN1cnJlbnQgcmVwbGljYS4gIElmIGEgcmVwbGljYSBpcwpiZWluZyB1c2VkLCBlbnN1cmUgaXQgdXNlcyBhIGZ1bGwgbWlycm9yLCBzbyB0aGUgYHJlZnMvY2hhbmdlcy8qYApuYW1lc3BhY2UgaXMgYXZhaWxhYmxlLgoKLS0tLQokIGdpdCBjb25maWcgLWYgJHNpdGVfcGF0aC9ldGMvZ2Vycml0LmNvbmZpZyBnaXR3ZWIuY2dpICRQQVRIX1RPX0dJVFdFQi9naXR3ZWIuY2dpCiQgZ2l0IGNvbmZpZyAtZiAkc2l0ZV9wYXRoL2V0Yy9nZXJyaXQuY29uZmlnIGdpdHdlYi51cmwgaHR0cHM6Ly9naXR3ZWIuY29ycG9yYXRpb24uY29tCi0tLS0KCklmIHlvdSdyZSBub3QgZm9sbG93aW5nIHRoZSB0cmFkaXRpb25hbCBce3Byb2plY3ROYW1lXH0uZ2l0IHByb2plY3QgbmFtaW5nIGNvbnZlbnRpb25zLAp5b3Ugd2lsbCB3YW50IHRvIGN1c3RvbWl6ZSBHZXJyaXQgdG8gcmVhZCB0aGVtLiBBZGQgdGhlIGZvbGxvd2luZzoKCi0tLS0KJCBnaXQgY29uZmlnIC1mICRzaXRlX3BhdGgvZXRjL2dlcnJpdC5jb25maWcgZ2l0d2ViLnR5cGUgY3VzdG9tCiQgZ2l0IGNvbmZpZyAtZiAkc2l0ZV9wYXRoL2V0Yy9nZXJyaXQuY29uZmlnIGdpdHdlYi5wcm9qZWN0ID9wPVwke3Byb2plY3R9XDthPXN1bW1hcnkKJCBnaXQgY29uZmlnIC1mICRzaXRlX3BhdGgvZXRjL2dlcnJpdC5jb25maWcgZ2l0d2ViLnJldmlzaW9uID9wPVwke3Byb2plY3R9XDthPWNvbW1pdFw7aD1cJHtjb21taXR9CiQgZ2l0IGNvbmZpZyAtZiAkc2l0ZV9wYXRoL2V0Yy9nZXJyaXQuY29uZmlnIGdpdHdlYi5icmFuY2ggP3A9XCR7cHJvamVjdH1cO2E9c2hvcnRsb2dcO2g9XCR7YnJhbmNofQokIGdpdCBjb25maWcgLWYgJHNpdGVfcGF0aC9ldGMvZ2Vycml0LmNvbmZpZyBnaXR3ZWIuZmlsZWhpc3RvcnkgP3A9XCR7cHJvamVjdH1cO2E9aGlzdG9yeVw7aGI9XCR7YnJhbmNofVw7Zj1cJHtmaWxlfQotLS0tCgpBZnRlciB1cGRhdGluZyBgJyRzaXRlX3BhdGgnL2V0Yy9nZXJyaXQuY29uZmlnYCwgdGhlIEdlcnJpdCBzZXJ2ZXIgbXVzdApiZSByZXN0YXJ0ZWQgYW5kIGNsaWVudHMgbXVzdCByZWxvYWQgdGhlIGhvc3QgcGFnZSB0byBzZWUgdGhlIGNoYW5nZS4KCkFjY2VzcyBDb250cm9sCisrKysrKysrKysrKysrCgpHaXR3ZWIgYWNjZXNzIGNvbnRyb2xzIGNhbiBiZSBpbXBsZW1lbnRlZCB1c2luZyBzdGFuZGFyZCB3ZWIgc2VydmVyCmFjY2VzcyBjb250cm9scy4gIFRoaXMgaXNuJ3QgdHlwaWNhbGx5IGludGVncmF0ZWQgd2l0aCBHZXJyaXQncyBvd24KYWNjZXNzIGNvbnRyb2xzLiAgQ2F1dGlvbiBtdXN0IGJlIHRha2VuIHRvIGVuc3VyZSB0aGUgY29udHJvbHMgYXJlCmNvbnNpc3RlbnQgaWYgYWNjZXNzIG5lZWRzIHRvIGJlIHJlc3RyaWN0ZWQuCgpDYWNoaW5nIEdpdHdlYgorKysrKysrKysrKysrKwoKSWYgeW91ciByZXBvc2l0b3J5IHNldCBpcyBsYXJnZSBhbmQgeW91IGFyZSBleHBlY3RpbmcgYSBsb3QKb2YgdXNlcnMsIHlvdSBtYXkgd2FudCB0byBsb29rIGF0IHRoZSBjYWNoaW5nIGZvcmtzIHVzZWQgYnkKaGlnaC10cmFmZmljIHNpdGVzIGxpa2Uga2VybmVsLm9yZyBvciByZXBvLm9yLmN6LgoKQWx0ZXJuYXRpdmVzIHRvIGdpdHdlYgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ClRoZXJlIGFyZSBvdGhlciBhbHRlcm5hdGl2ZXMgdG8gZ2l0d2ViIHRoYXQgY2FuIGFsc28gYmUgdXNlZCB3aXRoCkdlcnJpdCwgc3VjaCBhcyBjZ2l0LgoKY2dpdCBjYW4gYmUgdXNlZCBieSBzcGVjaWZ5aW5nIGBnaXR3ZWIudHlwZWAgdG8gYmUgJ2NnaXQnLgoKSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBkZWZpbmUgY3VzdG9tIHBhdHRlcm5zLgoKU2VlIEFsc28Kfn5+fn5+fn4KCiogbGluazpjb25maWctZ2Vycml0Lmh0bWwjZ2l0d2ViW1NlY3Rpb24gZ2l0d2ViXQoqIGxpbms6aHR0cDovL2hqZW1saS5uZXQvZ2l0L2NnaXQvW2NnaXRdCgpHRVJSSVQKLS0tLS0tClBhcnQgb2YgbGluazppbmRleC5odG1sW0dlcnJpdCBDb2RlIFJldmlld10K