Received: from localhost ([::1]:39697 helo=stodi.digitalkingdom.org) by stodi.digitalkingdom.org with esmtp (Exim 4.80.1) (envelope-from ) id 1WrUnt-00048I-4P; Mon, 02 Jun 2014 09:09:41 -0700 Received: from 173-13-139-235-sfba.hfc.comcastbusiness.net ([173.13.139.235]:42224 helo=jukni.digitalkingdom.org) by stodi.digitalkingdom.org with smtp (Exim 4.80.1) (envelope-from ) id 1WrUni-000489-SZ for wikineurotic@lojban.org; Mon, 02 Jun 2014 09:09:39 -0700 Received: by jukni.digitalkingdom.org (sSMTP sendmail emulation); Mon, 02 Jun 2014 09:09:30 -0700 From: "Apache" Date: Mon, 02 Jun 2014 09:09:30 -0700 To: wikineurotic@lojban.org X-PHP-Originating-Script: 48:htmlMimeMail.php MIME-Version: 1.0 Message-ID: X-Spam-Score: 0.5 (/) X-Spam_score: 0.5 X-Spam_score_int: 5 X-Spam_bar: / X-Spam-Report: Spam detection software, running on the system "stodi.digitalkingdom.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: The page gadri: an unofficial commentary from a logical point of view was changed by guskant at 16:09 UTC You can view the page by following this link: http://www.lojban.org/tiki/gadri%3A%20an%20unofficial%20commentary%20from%20a%20logical%20point%20of%20view [...] Content analysis details: (0.5 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [173.13.139.235 listed in list.dnswl.org] 1.4 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [173.13.139.235 listed in bb.barracudacentral.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 1.0 RDNS_DYNAMIC Delivered to internal network by host with dynamic-looking rDNS Subject: [Wikineurotic] Wiki page gadri: an unofficial commentary from a logical point of view changed by guskant X-BeenThere: wikineurotic@lojban.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: webmaster@lojban.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: wikineurotic-bounces@lojban.org VGhlIHBhZ2UgZ2Fkcmk6IGFuIHVub2ZmaWNpYWwgY29tbWVudGFyeSBmcm9tIGEgbG9naWNhbCBw b2ludCBvZiB2aWV3IHdhcyBjaGFuZ2VkIGJ5IGd1c2thbnQgYXQgMTY6MDkgVVRDCgpZb3UgY2Fu IHZpZXcgdGhlIHBhZ2UgYnkgZm9sbG93aW5nIHRoaXMgbGluazoKIApodHRwOi8vd3d3LmxvamJh bi5vcmcvdGlraS9nYWRyaSUzQSUyMGFuJTIwdW5vZmZpY2lhbCUyMGNvbW1lbnRhcnklMjBmcm9t JTIwYSUyMGxvZ2ljYWwlMjBwb2ludCUyMG9mJTIwdmlldwoKWW91IGNhbiB2aWV3IGEgZGlmZiBi YWNrIHRvIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGJ5IGZvbGxvd2luZyB0aGlzIGxpbms6IApodHRw Oi8vd3d3LmxvamJhbi5vcmcvdGlraS90aWtpLXBhZ2VoaXN0b3J5LnBocD9wYWdlPWdhZHJpJTNB JTIwYW4lMjB1bm9mZmljaWFsJTIwY29tbWVudGFyeSUyMGZyb20lMjBhJTIwbG9naWNhbCUyMHBv aW50JTIwb2YlMjB2aWV3JmNvbXBhcmU9MSZvbGR2ZXI9MTUmbmV3dmVyPTE2CgoKKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKVGhlIGNo YW5nZXMgaW4gdGhpcyB2ZXJzaW9uIGZvbGxvdyBiZWxvdywgZm9sbG93ZWQgYWZ0ZXIgYnkgdGhl IGN1cnJlbnQgZnVsbCBwYWdlIHRleHQuCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKQEAgLUxpbmVzOiA0MzAtNDM0IGNoYW5n ZWQgdG8gK0xpbmVzOiA0MzAtNDM0IEBACistKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCgohISEhIyBCb3VuZCB2YXJpYWJsZXMgYW5kIGNv bnN0YW50cyBpbiBhIHN0YXRlbWVudAotIFdoZW4gYm90aGUgYm91bmQgdmFyaWFibGVzIGFuZCBj b25zdGFudHMgYXBwZWFyIGluIGEgc3RhdGVtZW50LCB0aGUgY29uc3RhbnRzIGRvIG5vdCBuZWNl c3NhcmlseSBzcGFuIG92ZXIgYWxsIGJvdW5kIHZhcmlhYmxlcy4gQWx0aG91Z2ggdGhleSBhcmUg Y2FsbGVkICZxdW90O2NvbnN0YW50cyZxdW90OywgaXQgaXMgbm90IGdlbmVyYWxseSBkZXRlcm1p bmVkIHdoZXRoZXIgdGhleSByZWZlciB0byBjb21tb24gcmVmZXJlbnRzIGZvciBhbGwgcmVmZXJl bnRzIGluIGRvbWFpbnMgb2YgdmFyaWFibGVzLCBvciB0aGV5IHJlZmVyIHRvIGRpZmZlcmVudCBy ZWZlcmVudHMgZGVwZW5kZW50IG9uIHJlZmVyZW50cyBpbiBkb21haW5zIG9mIHZhcmlhYmxlcy4g VGhlIHJlYXNvbiBmb2xsb3dzIGJlbG93IChbaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9kL21z Zy9sb2piYW4vUkF0RTdZay1kcXcvQUJEZk9mdW96V0VKfERpc2N1c3Npb25dKS4KKyBXaGVuIGJv dGggYm91bmQgdmFyaWFibGVzIGFuZCBjb25zdGFudHMgYXBwZWFyIGluIGEgc3RhdGVtZW50LCB0 aGUgY29uc3RhbnRzIGRvIG5vdCBuZWNlc3NhcmlseSBzcGFuIG92ZXIgYWxsIGJvdW5kIHZhcmlh Ymxlcy4gQWx0aG91Z2ggdGhleSBhcmUgY2FsbGVkICZxdW90O2NvbnN0YW50cyZxdW90OywgaXQg aXMgbm90IGdlbmVyYWxseSBkZXRlcm1pbmVkIHdoZXRoZXIgdGhleSByZWZlciB0byBjb21tb24g cmVmZXJlbnRzIGZvciBhbGwgcmVmZXJlbnRzIGluIGRvbWFpbnMgb2YgdmFyaWFibGVzLCBvciB0 aGV5IHJlZmVyIHRvIGRpZmZlcmVudCByZWZlcmVudHMgZGVwZW5kZW50IG9uIHJlZmVyZW50cyBp biBkb21haW5zIG9mIHZhcmlhYmxlcy4gVGhlIHJlYXNvbiBmb2xsb3dzIGJlbG93IChbaHR0cHM6 Ly9ncm91cHMuZ29vZ2xlLmNvbS9kL21zZy9sb2piYW4vUkF0RTdZay1kcXcvQUJEZk9mdW96V0VK fERpc2N1c3Npb25dKS4KCldoZW4gc29tZSBzdW10aSBvZiB0ZXJicmkgaW4gYSBzdGF0ZW1lbnQg YXJlIG9taXR0ZWQsIGl0IGlzIGNvbnNpZGVyZWQgdGhhdCB0aGVyZSBhcmUgaW1wbGljaXQge3pv J2V9IGluIHRob3NlIHBsYWNlcyAoW2h0dHA6Ly9kYWcuZ2l0aHViLmlvL2NsbC83LzcvfENMTCA3 LjddKS4KCgoKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqClRoZSBuZXcgcGFnZSBjb250ZW50IGZvbGxvd3MgYmVsb3cuCioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgooKEJQ RksgU2VjdGlvbjogZ2Fkcml8QlBGSydzIGdhZHJpIHBhZ2UpKSBjb250YWlucyBleHByZXNzaW9u cyBtaXNsZWFkaW5nIHBlb3BsZSB3aG8gaGF2ZSBhdCBsZWFzdCBhIGxpdHRsZSBrbm93bGVkZ2Ug b2YgbG9naWMgKFtodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2QvdG9waWMvbG9qYmFuL1JBdEU3 WWstZHF3L2Rpc2N1c3Npb258ZGlzY3Vzc2lvbl0pLgoKSSB3aWxsIG1ha2UgaGVyZSBhIGNvbW1l bnRhcnkgb24gQlBGSydzIGdhZHJpIHNvIHRoYXQgaXQgaXMgdW5kZXJzb29kIGJ5IHRoZW0gY29y cmVjdGx5LgoKCgp7bWFrZXRvY30KCgoKISEjIEdsb3NzYXJ5CgpXZSB3aWxsIHVzZSB0aGUgZm9s bG93aW5nIHRlcm1zIGluIHRoaXMgY29tbWVudGFyeS4KCjtfX2FyZ3VtZW50IChzdW10aSlfXzog U3ltYm9sIHRoYXQgcmVmZXJzIHRvIGEgcmVmZXJlbnQsIG9yIHRoYXQgYW5vdGhlciBhcmd1bWVu dCBjYW4gYmUgc3Vic3RpdHV0ZWQgZm9yLgoKXkdyYW1tYXRpY2FsbHksIGFsbCB0aGVzZSBhcmUg c3VtdGk6IGFyZ3VtZW50cywge3ppJ299IHdoaWNoIHJlbW92ZXMgYSBwbGFjZSBmb3IgYW4gYXJn dW1lbnQsIHtrb30gd2hpY2ggcmVmZXJzIHRvIGxpc3RlbmVyKHMpIGFuZCBmb3JtcyBpbXBlcmF0 aXZlLCB7bWF9IHdoaWNoIGZvcm1zIGludGVycm9nYXRpdmUgdG8gYXNrIHdoaWNoIHN1bXRpIG1h a2VzIHRoZSBzdGF0ZW1lbnQgdHJ1ZSwgc3VtdGkgYW5kIHJlbGF0aXZlIGNsYXVzZXMgKHt6bydl IG5vaSBicm9kYX0uLi4pLCBxdWFudGlmaWVyIGFuZCBzdW10aS9zZWxicmkgKHtub2RhfSwge2Np IGxvIGJyb2RhfSwge3JvIGJyb2RhfS4uLikgLCBzdW10aSBjb25uZWN0ZWQgYnkgY29ubmVjdGl2 ZXMgKHtrbydhIC5lIGtvJ2V9Li4uKS4gSG93ZXZlciwgaW4gdGhpcyBhcnRpY2xlLCAic3VtdGki IHJlZmVycyB0byBhbiBhcmd1bWVudCBvZiBsb2dpYyByZXByZXNlbnRlZCBpbiBMb2piYW4uXgoK O19fdW5pdmVyc2Ugb2YgZGlzY291cnNlX186IFNldCBvZiBhbGwgcmVmZXJlbnRzIG9mIGFyZ3Vt ZW50cy4gSXQgaXMgbmF0dXJhbGx5IGEgdW5pdmVyc2UgdGhhdCBpcyBkaXNjdXNzZWQuIEEgdW5p dmVyc2Ugb2YgZGlzY291cnNlIGRlcGVuZHMgb24gdGhlIGNvbnRleHQuCgo7X19jb25zdGFudF9f OiBBcmd1bWVudCB0aGF0IHJlZmVycyB0byBhIHJlZmVyZW50LgoKO19fdmFyaWFibGVfXzogQXJn dW1lbnQgYXMgYSBwbGFjZSBob2xkZXIuIEl0IGRvZXMgbm90IHJlZmVyIHRvIGFueXRoaW5nLiBJ dCBpcyB0byBiZSBzdWJzdGl0dXRlZCBmb3IuIFZhcmlhYmxlIG90aGVyIHRoYW4gYm91bmQgdmFy aWFibGUgdGhhdCB3aWxsIGJlIGRlZmluZWQgYmVsbG93IGlzIGNhbGxlZCBfX2ZyZWUgdmFyaWFi bGVfXy4gVGhlIHRydXRoIHZhbHVlIG9mIGEgc2VudGVuY2UgdGhhdCBpbmNsdWRlcyBhIGZyZWUg dmFyaWFibGUgaXMgaW5kZWZpbml0ZS4gU3VjaCBhIHNlbnRlbmNlIGlzIGNhbGxlZCBfX29wZW4g c2VudGVuY2VfXy4KCl5JbiBMb2piYW4sIHtrZSdhfSBhbmQge2NlJ3V9IGFyZSBhbHdheXMgZnJl ZSB2YXJpYWJsZXMuIEEgc2VudGVuY2UgaW4gTk9JLWNsYXVzZSBvciBOVS1jbGF1c2Ugd2l0aCB7 Y2UndX0gaXMgb3Blbi4gKEEgc2VudGVuY2UgaW4gTlUtY2xhc2Ugd2l0aCBubyB7Y2UndX0gaGFz IGEgdHJ1dGggdmFsdWUsIGJ1dCBlYWNoIG9mIHRoZSBpbnNpZGUgYW5kIHRoZSBvdXRzaWRlIG9m IE5VLWNsYXVzZSBoYXMgYW4gaW5kZXBlbmRlbnQgdW5pdmVyc2Ugb2YgZGlzY291cnNlLCBhbmQg dGh1cyBlYWNoIG9mIHRoZW0gaGFzIGFuIGluZGVwZW5kZW50IHRydXRoIHZhbHVlIChmb3IgZXhh bXBsZSwgc2VlIFtodHRwOi8vZGFnLmdpdGh1Yi5pby9jbGwvOS83L3xDTEw5LjddKS4gSW4gZGVm aW5pdGlvbnMgb2Ygd29yZHMgaW4gTG9qYmFuLCBrbydWL2ZvJ1Ygc2VyaWVzIHtrbydhLCBrbydl LCAuLi59IG9mIHNlbG1hJ28gS09oQTQgYXJlIHVzZWQgYXMgZnJlZSB2YXJpYWJsZXMsIGJ1dCBp dCBpcyBvbmx5IGEgY3VzdG9tIGZvciBjb252ZW5pZW5jZS4gQWxsIGNtYXZvIG9mIEtPaEEyLDMs NCw1LDYgYW5kIHt6bydlfSBvZiBLT2hBNyBhcmUgZXNzZW50aWFsbHkgY29uc3RhbnRzLiBDb25z aWRlcmluZyB0aGUgY2FzZSB0aGF0IGJvdGggY29uc3RhbnRzIGFuZCBib3VuZCB2YXJpYWJsZXMg KHRvIGJlIGRlZmluZWQgYmVsbG93KSBhcHBlYXIgaW4gYSBzdGF0ZW1lbnQsICJjb25zdGFudHMi IGFyZSBnZW5lcmFsbHkgY29uc2lkZXJlZCB0byBiZSBTa29sZW0gZnVuY3Rpb25zLiBTZWUgKCh8 I0JvdW5kX3ZhcmlhYmxlc19hbmRfY29uc3RhbnRzX2luX2Ffc3RhdGVtZW50fFNlY3Rpb24gMy4y LjIpKSBmb3IgZGV0YWlsLl4KCjtfX3F1YW50aWZ5X186IEluIHN1YnN0aXR1dGluZyBwb3NzaWJs ZSBhcmd1bWVudHMgb25lIGJ5IG9uZSBmb3IgYSB2YXJpYWJsZSBpbiBhIHNlbnRlbmNlLCBjb3Vu dCB0aGUgbnVtYmVyIG9mIHJlZmVyZW50cyB0aGF0IG1ha2UgdGhlIHNlbnRlbmNlIHRydWUsIGFu ZCBwcmVmaXggdGhlIG51bWJlciB0byB0aGUgdmFyaWFibGUuCgo7X19xdWFudGlmaWVyX186IE51 bWJlciB1c2VkIGZvciBxdWFudGlmaWNhdGlvbi4gQmVzaWRlcyB7cGF9LCB7cmV9LCB7dmVpIG55 IHN1J2kgcGEgKHZlJ28pfSBhbmQgc28gb24sIHtyb30gImFsbCIgYW5kIHtzdSdvfSAidGhlcmUg aXMgb25lIG9yIG1vcmUiIGFyZSBhbHNvIHF1YW50aWZpZXJzLgoKO19fYm91bmQgdmFyaWFibGVf XzogVmFyaWFibGUgcHJlZml4ZWQgYnkgYSBxdWFudGlmaWVyLiBBcyBhIHJlc3VsdCBvZiBxdWFu dGlmaWNhdGlvbiwgdGhlcmUgaXMgbm8gcm9vbSBmb3Igc3Vic3RpdHV0aW5nIGFuIGFyYml0cmFy eSBhcmd1bWVudCBmb3IgdGhlIHZhcmlhYmxlLgoKXkluIExvamJhbiwge2RhfSwge2RlfSBhbmQg e2RpfSBhcmUgYm91bmQgdmFyaWFibGVzLiBGb3IgZXhhbXBsZSwge3JvIGRhIHpvJ3UgZGEgYnJv ZGF9IG1lYW5zICJGb3IgYWxsIHtkYX0gaW4gdGhlIHVuaXZlcnNlIG9mIGRpc2NvdXJzZSwge2Rh IGJyb2RhfSBpcyB0cnVlLiIgSW4gdGhlIGNhc2UgdGhhdCB7ZGF9LCB7ZGV9IG9yIHtkaX0gYXJl IG5vdCBwcmVmaXhlZCBieSBhIHF1YW50aWZpZXIsIHRoZXkgYXJlIHJlZ2FyZGVkIGFzIGltcGxp Y2l0bHkgcHJlZml4ZWQgYnkge3N1J299Ll4KCjtfX2RvbWFpbl9fOiBSYW5nZSBvZiByZWZlcmVu dHMgdG8gYmUgc3Vic3RpdHV0ZWQgZm9yIGEgdmFyaWFibGUsIG9yIHJhbmdlIHRvIGJlIGNvbnNp ZGVyZWQgaW4gY291bnRpbmcgcmVmZXJlbnRzIGluIHF1YW50aWZpY2F0aW9uLgoKXkluIExvamJh biwgYSBkb21haW4gb2YgYSBib3VuZCB2YXJpYWJsZSBjYW4gYmUgbGltaXRlZCB3aXRoIGFuIGV4 cHJlc3Npb24ge2RhIHBvaS4uLn0uIEZvciBleGFtcGxlLCB7cm8gZGEgcG9pIGtlJ2EgYnJvZGEg em8ndSBkYSBicm9kZX0gbWVhbnMgIkZvciBhbGwge2RhfSB0aGF0IGFyZSB4MSBvZiB7YnJvZGF9 IGluIHRoZSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UsIHtkYSBicm9kZX0gaXMgdHJ1ZS4iIElmIHtw b2kuLi59IGRvZXMgbm90IGZvbGxvdyB7ZGF9LCB0aGUgZG9tYWluIGlzIHRoZSB3aG9sZSB1bml2 ZXJzZSBvZiBkaXNjb3Vyc2UuXgoKO19fdGF1dG9sb2d5X186IFNlbnRlbmNlIHRoYXQgaXMgYWx3 YXlzIHRydWUgaW5kZXBlbmRlbnRseSBvZiBjb250ZXh0LiB7a28nYSBkdSBrbydhfSBldGMuCgo7 X19sb2dpY2FsIGF4aW9tc19fOiBTZW50ZW5jZXMgc2VsZWN0ZWQgZnJvbSB0YXV0b2xvZ2llcyBz byB0aGF0IGFsbCB0YXV0b2xvZ2llcyBhcmUgcHJvdmVkIGZyb20gdGhlbSB3aXRoIHJ1bGVzIG9m IGluZmVyZW5jZSB0aGF0IGFyZSBkZWZpbmVkLgoKCgohISMgUGx1cmFsIHF1YW50aWZpY2F0aW9u CgpJbiBvcmRlciB0byB1bmRlcnN0YW5kIGFyZ3VtZW50cyBvZiBMb2piYW4gZnJvbSBhIGxvZ2lj YWwgcG9pbnQgb2YgdmlldywgaXQgaXMgZXNzZW50aWFsIHRvIGhhdmUgYSBrbm93bGVkZ2Ugb2Yg X19wbHVyYWwgcXVhbnRpZmljYXRpb25fXy4KCgoKUGx1cmFsIHF1YW50aWZpY2F0aW9uIHdhcyBp bnZlbnRlZCBpbiBvcmRlciB0byBmYWNpbGl0YXRlIGV4cHJlc3Npb24gb2YgcHJvcG9zaXRpb24g dGhhdCBpcyBtZWFuaW5nZnVsIG9ubHkgd2hlbiB0aGUgcmVmZXJlbnQgb2YgYW4gYXJndW1lbnQg aXMgcGx1cmFsLiAKCl4KCjtFeGFtcGxlOiBQZW9wbGUgZ2F0aGVyZWQsIGNvb2tlZCBhbmQgYXRl Ll4KCkxvZ2ljYWxseSwgdGhpcyBzZW50ZW5jZSBpcyBhIHByb3Bvc2l0aW9uIHRoYXQgY29uc2lz dHMgb2YgYSBjb25zdGFudCAicGVvcGxlIiBhbmQgdGhyZWUgcHJlZGljYXRlcyAiZ2F0aGVyZWQi ICJjb29rZWQiIGFuZCAiYXRlIi4gVGhlIHByZWRpY2F0ZXMgYXJlIGRpZmZlcmVudCBmcm9tIGVh Y2ggb3RoZXIgaW4gcHJvcGVydHkgb2YgdHJlYXRpbmcgdGhlIGFyZ3VtZW50LiBXZSB3aWxsIGRp c2N1c3MgcHJlY2lzZWx5IGhvdyB0aGUgYXJndW1lbnQgaW4gdGhlIHNlbnRlbmNlIGlzIHRyZWF0 ZWQuCgoKCiEhISMgQ29sbGVjdGl2aXR5IGFuZCBkaXN0cmlidXRpdml0eQoKCgpDb25zaWRlciB0 aGUgZXhwcmVzc2lvbiAicGVvcGxlIGdhdGhlcmVkIjogYmFzZWQgb24gdGhlIG1lYW5pbmcgb2Yg dGhlIHByZWRpY2F0ZSAiZ2F0aGVyZWQiLCB0aGUgY29uc3RhbnQgInBlb3BsZSIgc2hvdWxkIHJl ZmVyIHRvIHBsdXJhbCBwZW9wbGUuCgpXaGVuIHJlZmVyZW50cyBvZiBhbiBhcmd1bWVudCBzYXRp c2Z5IGEgcHJlZGljYXRlIGFzIGNvbGxlY3RpdmUgcGx1cmFsIHRoaW5ncyBsaWtlIHRoaXMsIHdl IGV4cHJlc3MgaXQgYXMgImFuIGFyZ3VtZW50IHNhdGlzZmllcyBhbiBwcmVkaWNhdGUgX19jb2xs ZWN0aXZlbHlfXyIsIG9yICJ0aGUgYXJndW1lbnQgaGFzIF9fY29sbGVjdGl2aXR5X18iLgoKCgpB cyBmb3IgZWFjaCBvZiB0aGUgcGx1cmFsIHBlb3BsZSByZWZlcnJlZCB0byBieSB0aGUgY29uc3Rh bnQsICBlYWNoIHNlbnRlbmNlIHN1Y2ggdGhhdCAiQWxpY2UgZ2F0aGVyZWQiLCAiQm9iIGdhdGhl cmVkIiBhbmQgc28gb24gaXMgbm9uc2Vuc2UuCgpXaGVuIGVhY2ggcmVmZXJlbnQgcmVmZXJyZWQg dG8gYnkgYSBjb25zdGFudCBjYW5ub3Qgc2F0aXNmeSBhIHByZWRpY2F0ZSBhbG9uZSwgd2UgZXhw cmVzcyBpdCBhcyAiYW4gYXJndW1lbnQgc2F0aXNmaWVzIGFuIHByZWRpY2F0ZSBfX25vbi1kaXN0 cmlidXRpdmVseV9fIi4KCgoKT24gdGhlIG90aGVyIGhhbmQsIGluIHRoZSBleHByZXNzaW9uICJw ZW9wbGUgYXRlIiwgYWx0aG91Z2ggdGhlIGNvbnN0YW50ICJwZW9wbGUiIHJlZmVycyB0byBwbHVy YWwgcGVvcGxlLCB0aGUgcHJlZGljYXRlICJhdGUiIGlzIHNhdGlzZmllZCBieSBlYWNoIHBlcnNv bi4gVGhhdCBpcyB0byBzYXksIGVhY2ggc2VudGVuY2Ugc3VjaCB0aGF0ICJBbGljZSBhdGUiLCAi Qm9iIGF0ZSIgYW5kIHNvIG9uIGlzIG1lYW5pbmdmdWwuCgpXaGVuIGVhY2ggcmVmZXJlbnQgcmVm ZXJyZWQgdG8gYnkgYSBjb25zdGFudCBzYXRpc2ZpZXMgYSBwcmVkaWNhdGUgYWxvbmUsIHdlIGV4 cHJlc3MgaXQgYXMgImFuIGFyZ3VtZW50IHNhdGlzZmllcyBhbiBwcmVkaWNhdGUgX19kaXN0cmli dXRpdmVseV9fIiwgb3IgInRoZSBhcmd1bWVudCBoYXMgX19kaXN0cmlidXRpdml0eV9fIi4KCgoK TW9yZW92ZXIsIGlmIHRoZSBwcmVkaWNhdGUgImVhdCIgbWVhbnMgYW4gYWN0ICJwdXQgZm9vZCBp biBhIG1vdXRoLCBiaXRlIGl0LCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFuIGVzb3BoYWd1cyBhbmQg c2VuZCBpdCB0byBhIHN0b21hY2giLCBpdCBpcyBoYXJkbHkgY29uc2lkZXJlZCB0aGF0ICJwZW9w bGUiIHNhdGlzZmllcyAiZWF0IiBjb2xsZWN0aXZlbHkuIEV2ZW4gaWYgYSBwZXJzb24gaGVscHMg YW5vdGhlciB0byBlYXQsIHRoZSBoZWxwZXIgaXMgbm90IGVhdGVyLCBhbmQgdGhlIGVhdGVyIGlz IG5vdCBjb2xsZWN0aXZlIHBlb3BsZSBidXQgYW4gaW5kaXZpZHVhbC4gCgpXaGVuIGVhY2ggcmVm ZXJlbnQgcmVmZXJyZWQgdG8gYnkgYSBjb25zdGFudCBjYW5ub3Qgc2F0aXNmeSBhIHByZWRpY2F0 ZSBhcyBjb2xsZWN0aXZlIHBsdXJhbCB0aGluZ3MsIHdlIGV4cHJlc3MgaXQgYXMgImFuIGFyZ3Vt ZW50IHNhdGlzZmllcyBhbiBwcmVkaWNhdGUgX19ub24tY29sbGVjdGl2ZWx5X18iLgoKKEhvd2V2 ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGludGVycHJldCB0aGUgcHJlZGljYXRlICJlYXQiIGFzIGlu dm9sdmluZyBjb2xsZWN0aXZpdHkuIEZvciBleGFtcGxlLCBpZiBpdCBpcyBpbnRlcnByZXRlZCBh cyAicHV0IGZvb2QgYXdheSBmcm9tIG91dHNpZGUgdG8gaW5zaWRlIG9mIGJvZHkiLCB3ZSBtYXkg c2F5ICJjb2xsZWN0aXZlbHkgZWF0IiB0byBleHByZXNzIGFuIGV2ZW50IHRoYXQgcGVvcGxlIGVh dCBhbmQgY29uc3VtZSBhIG1hc3Mgb2YgZm9vZCB0b2dldGhlci4pCgoKClRoZXJlIGFyZSBhbHNv IHByZWRpY2F0ZXMgdGhhdCBhbGxvdyBib3RoIHByb3BlcnRpZXMgImNvbGxlY3Rpdml0eSIgYW5k ICJkaXN0cmlidXRpdml0eSIuCgoiUGVvcGxlIGNvb2tlZCIgbWF5IG1lYW4gdGhhdCBwbHVyYWwg cGVvcGxlIGtuZWFkIHBhc3RlIG9mIHBpenphIHRvZ2V0aGVyLCBhbmQgdGhhdCBlYWNoIG9mIHRo ZW0gaXMgaW4gY2hhcmdlIG9mIGNha2VzIG9yIHBvdC1hdS1mZXUuIEluIHRoaXMgY2FzZSwgdGhl IGNvbnN0YW50ICJwZW9wbGUiIHJlZmVycyB0byBwbHVyYWwgcGVvcGxlLCBhbmQgdGhleSBjb29r ZWQgcGl6emEgY29sbGVjdGl2ZWx5LCBjYWtlcyBhbmQgcG90LWF1LWZldSBkaXN0cmlidXRpdmVs eS4gVGhlIGNvbnN0YW50ICJwZW9wbGUiIHRodXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUgImNv b2tlZCIgY29sbGVjdGl2ZWx5IGFuZCBkaXN0cmlidXRpdmVseS4KCgoKTm90ZSB0aGF0IHRoZSBj b25zdGFudCAicGVvcGxlIiByZWZlcnMgdG8gd2hhdCBpcyBjb21tb24gdG8gdGhyZWUgcHJlZGlj YXRlcyAiZ2F0aGVyZWQiLCAiY29va2VkIiBhbmQgImF0ZSIuIE5vIG1hdHRlciBpZiBhIGNvbnN0 YW50IHNhdGlzZmllcyBwcmVkaWNhdGVzIGNvbGxlY3RpdmVseSBvciBkaXN0cmlidXRpdmVseSwg dGhlIHJlZmVyZW50IGlzIHRoZSBzYW1lLgoKCgpJZiB3ZSB1c2UgYW4gYXJndW1lbnQgImEgc2V0 IG9mIHBlb3BsZSIgaW4gdGhlIGNhc2Ugb2Ygc2F0aXNmeWluZyBhIHByZWRpY2F0ZSBjb2xsZWN0 aXZlbHksIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGludGVycHJldCB0aGUgcHJlZGljYXRlICJn YXRoZXJlZCIgc28gdGhhdCB0aGUgYXJndW1lbnQgc2F0aXNmaWVzIGl0LCBidXQgdGhlIHNhbWUg YXJndW1lbnQgY2Fubm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSAiYXRlIiwgYmVjYXVzZSB3ZSBj YW4gaGFyZGx5IHNheSB0aGF0IGEgc2V0IG9mIHBlb3BsZSwgd2hpY2ggaXMgYW4gYWJzdHJhY3Qg ZW50aXR5LCBwZXJmb3JtcyAiYXRlIi4KCgoKVXNpbmcgcGx1cmFsIGNvbnN0YW50cyBhbmQgcGx1 cmFsIHZhcmlhYmxlcyB0aGF0IHdpbGwgYmUgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgc2Vj dGlvbnMsIHdlIGNhbiBleHByZXNzIHBsdXJhbCB0aGluZ3MgaW4gdGhlIGZvcm0gb2YgcHJlZGlj YXRlIGxvZ2ljIHdpdGhvdXQgdXNpbmcgc2V0cy4KCgoKISEhIyBQbHVyYWwgY29uc3RhbnQgYW5k IHBsdXJhbCB2YXJpYWJsZQoKQW4gYXJndW1lbnQgdGhhdCByZWZlcnMgdG8gcmVmZXJlbnQgd2l0 aG91dCBpbnRyb2R1Y2luZyBhIG5vdGlvbiBvZiBzZXRzLCB3aXRob3V0IGRpc3Rpbmd1aXNoaW5n IGNvbGxlY3Rpdml0eSBhbmQgZGlzdHJpYnV0aXZpdHksIHdpdGhvdXQgZGlzdGluZ3Vpc2hpbmcg cGx1cmFsaXR5IGFuZCBzaW5ndWxhcml0eSwgaXMgY2FsbGVkIF9fcGx1cmFsIGNvbnN0YW50X18u CgpBIHZhcmlhYmxlIGZvciB3aGljaCBhIHBsdXJhbCBjb25zdGFudCBjYW4gYmUgc3Vic3RpdHV0 ZWQgaXMgY2FsbGVkIF9fcGx1cmFsIHZhcmlhYmxlX18uCgpRdWFudGlmeWluZyBhIHBsdXJhbCB2 YXJpYWJsZSBpcyBjYWxsZWQgX19wbHVyYWwgcXVhbnRpZmljYXRpb25fXy4gQSBxdWFudGlmaWVy IHVzZWQgZm9yIHBsdXJhbCBxdWFudGlmaWNhdGlvbiBpcyBjYWxsZWQgX19wbHVyYWwgcXVhbnRp Zmllcl9fLiBBIHBsdXJhbCB2YXJpYWJsZSBwcmVmaXhlZCB3aXRoIGEgcGx1cmFsIHF1YW50aWZp ZXIgaXMgY2FsbGVkIGEgX19ib3VuZCBwbHVyYWwgdmFyaWFibGVfXy4KCgoKISEhISMgbWUgYW5k IGpvJ3UKCldlIGludHJvZHVjZSByZWxhdGlvbnMgYmV0d2VlbiBwbHVyYWwgY29uc3RhbnRzIGFu ZCBwbHVyYWwgdmFyaWFibGVzOiB7bWV9IGFuZCB7am8ndX0uCgoKCnx8CgpYIG1lIFkgKG1lJ3Up IH5oc358fmhzfiBYIGlzIGFtb25nIFkKCnx8CgpYIGFuZCBZIHJlcHJlc2VudCBoZXJlIHBsdXJh bCBjb25zdGFudHMgb3IgcGx1cmFsIHZhcmlhYmxlcy4gQSBjbHVzdGVyIHttZSBZIChtZSd1KX0g aXMgYSBzZWxicmkgaW4gTG9qYmFuIGdyYW1tYXIuIHttZSd1fSBpcyBhbiBlbGlkYWJsZSB0ZXJt aW5hdG9yIG9mIHN0cnVjdHVyZSBiZWdpbm5pbmcgd2l0aCB7bWV9LgoKCgp7bWV9IGhhcyB0aGUg Zm9sbG93aW5nIHByb3BlcnRpZXMgd2l0aCBhcmJpdHJhcnkgYXJndW1lbnRzIFgsIFkgYW5kIFo6 CgojIFggbWUgWCAocmVmbGV4aXZpdHkpCgojIFggbWUgWSBpamVibyBZIG1lIFogaW5hamEgWCBt ZSBaICh0cmFuc2l0aXZpdHkpCgojIFggbWUgWSBpamVibyBZIG1lIFggaWpvIFggZHUgWSAoaWRl bnRpdHkpCgpUaGUgcHJvcGVydHkgMyBtZWFucyB0aGF0IHRoZSBpZGVudGl0eSBiZXR3ZWVuIHJl ZmVyZW50cyBvZiBYIGFuZCBZIGlzIHJlcHJlc2VudGVkIHdpdGgge21lfSwgYXMgYSByZWxhdGlv biB0aGF0IHtYIG1lIFkgaWplYm8gWSBtZSBYfS4KCgoKfHwKClggam8ndSBZIH5oc358fmhzfiBY IGFuZCBZCgp8fAoKe2pvJ3V9IGNvbWJpbmVzIHR3byBhcmd1bWVudHMgWCBhbmQgWSBpbnRvIG9u ZSBwbHVyYWwgY29uc3RhbnQgb3Igb25lIHBsdXJhbCB2YXJpYWJsZS4KCgoKe2pvJ3V9IGhhcyB0 aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgd2l0aCBhcmJpdHJhcnkgYXJndW1lbnRzIFggYW5kIFk6 CgojIFggbWUgWCBqbyd1IFkKCiMgWCBqbyd1IFkgZHUgWSBqbyd1IFgKCiMgWCBqbyd1IFggZHUg WAoKVGhlIHByb3BlcnR5IDIgbWVhbnMgdGhhdCB0aGUgcmVmZXJlbnQgb2YgdGhlIHdob2xlIGFy Z3VtZW50IGRvZXMgbm90IHZhcnkgd2hlbiB0d28gYXJndW1lbnRzIGNvbWJpbmVkIGJ5IHtqbyd1 fSBhcmUgaW50ZXJjaGFuZ2VkIHdpdGggZWFjaCBvdGhlci4gVGhlIHByb3BlcnR5IDMgbWVhbnMg dGhhdCB7am8ndX0gZG9lcyBub3QgYWRkIGFueSByZWZlcmVudCB3aGVuIGl0IGNvbWJpbmVzIGFu IGFyZ3VtZW50IHdpdGggaXRzZWxmLgoKCgpVc2luZyB7am8ndX0sIHRoZSBmb2xsb3dpbmcgZXhw cmVzc2lvbiBpcyBwb3NzaWJsZToKCl4KCjtFeGFtcGxlOiBCIGFuZCBDIGdhdGhlcmVkLCBjb29r ZWQgYW5kIGF0ZS4KCjs6IGJ5IGpvJ3UgY3kgam1hamkgZ2knZSBqdWtwYSBnaSdlIGNpdGthXgoK RWFjaCBvZiB7Ynl9IGFuZCB7Y3l9IGlzIGEgcGx1cmFsIGNvbnN0YW50LgoKCgpUaGUgcHJlZGlj YXRlIHtqdWtwYX0gKGNvb2spIGNhbiBiZSBpbnRlcnByZXRlZCBjb2xsZWN0aXZlbHkgYW5kL29y IGRpc3RyaWJ1dGl2ZWx5LCBidXQgdGhlIHBsdXJhbCBjb25zdGFudCB7Ynkgam8ndSBjeX0gc2F5 cyBub3RoaW5nIGFib3V0IHdoZXRoZXIgaXQgc2F0aXNmaWVzIHtqdWtwYX0gY29sbGVjdGl2ZWx5 IGFuZC9vciBkaXN0cmlidXRpdmVseS4gSWYgd2Ugd2FudCB0byBtYWtlIGV4cGxpY2l0IHRoYXQg dGhleSBjb29rZWQgImNvbGxlY3RpdmVseSIsIHdlIHNheSB7Ynkgam9pIGN5fSB1c2luZyB7am9p fSB0aGF0IHdpbGwgYmUgZGlzY3Vzc2VkIGluICgofCNSZWxhdGlvbl9iZXR3ZWVuX2pvX3Vfam9p X2NlX2FuZF9nYWRyaXxTZWN0aW9uIDMuNCkpLCBvciB7bHUnbyBieSBqbyd1IGN5fSB1c2luZyB7 bHUnb30gdGhhdCB3aWxsIGJlIGRpc2N1c3NlZCBpbiAoKHwjUmVsYXRpb25fYmV0d2Vlbl9sdV9h X2x1X29fbHVfaV9hbmRfZ2Fkcml8U2VjdGlvbiAzLjMpKS4gQ29udHJhc3RpdmVseSwgaWYgd2Ug d2FudCB0byBtYWtlIGV4cGxpY2l0IHRoYXQgdGhleSBjb29rZWQgImRpc3RyaWJ1dGl2ZWx5Iiwg d2Ugc2F5ICB7bHUnYSBieSBqbyd1IGN5fSB1c2luZyB7bHUnYX0gdGhhdCB3aWxsIGJlIGRpc2N1 c3NlZCBpbiAoKHwjUmVsYXRpb25fYmV0d2Vlbl9sdV9hX2x1X29fbHVfaV9hbmRfZ2Fkcml8U2Vj dGlvbiAzLjMpKS4gSG93ZXZlciwgdGhlc2UgYXJndW1lbnRzIHRoYXQgc2F5cyBleHBsaWNpdGx5 IGNvbGxlY3Rpdml0eSBhbmQvb3IgZGlzdHJpYnV0aXZpdHkgYXJlIG5vdCBhbHdheXMgY29tbW9u bHkgdXNlZCBmb3Igb3RoZXIgcHJlZGljYXRlcyBsaWtlIHtqbWFqaX0gb3Ige2NpdGthfS4KCgoK VGhlIGRpYWdyYW0gYmVsbG93IHNob3dzIHJlbGF0aW9ucyBjb25zdHJ1Y3RlZCB3aXRoIHttZX0g YW5kIHtqbyd1fSByZXByZXNlbnRlZCB3aXRoIGEgZGlyZWN0ZWQgZ3JhcGgsIGluIHdoaWNoIHRo ZSB2ZXJ0aWNlcyByZXByZXNlbnQgcGx1cmFsIGNvbnN0YW50cy4KCgoKe2ltZyBmaWxlSWQ9Ijci IHRodW1iPSJ5IiByZWw9ImJveFtnXSJ9CgoKCiEhISEjIEluZGl2aWR1YWwKClJlZmVyZW50IG9m IGEgcGx1cmFsIGNvbnN0YW50IGlzIG5vdCBuZWNlc3NhcmlseSBwbHVyYWw6IGEgcGx1cmFsIGNv bnN0YW50IGNhbiByZWZlciB0byBvbmUgaW5kaXZpZHVhbC4KCl9fQW4gaW5kaXZpZHVhbF9fIGlz IGRlZmluZWQgYXMgZm9sbG93czoKCnx8CgpfX1ggaXMgYW4gaW5kaXZpZHVhbF9fIH5oc358fmhz fiA9Y2EnZSB+aHN+fH5oc34gcm8nb2kgZGEgcG9pIGtlJ2EgbWUgWCB6byd1IFggbWUgZGEKCnx8 CgoKCndoZXJlIF9fcm8nb2lfXyBpcyBhbiBleHBlcmltZW50YWwgY21hdm8gcHJvcG9zZWQgYnkg KCh4b3J4ZXN8bGEgeG9yeGVzKSksIHdoaWNoIGlzIGEgcGx1cmFsIHF1YW50aWZpZXIgbWVhbmlu ZyAiYWxsIi4gIHtybydvaSBkYX0gaXMgYSBib3VuZCBwbHVyYWwgdmFyaWFibGUgbWVhbmluZyAi Zm9yIGFsbCB0aGF0IGNhbiBiZSBzdWJzdGl0dXRlZCBmb3Ige2RhfSIuIFRoaXMgZGVmaW5pdGlv biBtZWFucyB0aGF0IFggaXMgY2FsbGVkIGFuIGluZGl2aWR1YWwgd2hlbiB0aGUgY29uZGl0aW9u ICJmb3IgYWxsIHtkYX0gdGhhdCBhcmUgYW1vbmcgWCwgWCBpcyBhbW9uZyB7ZGF9IiBpcyBzYXRp c2ZpZWQuIEluIG90aGVyIHdvcmRzLCAiaW4gdGhlIHVuaXZlcnNlIG9mIGRpc2NvdXJzZSwgbm90 aGluZyBvdGhlciB0aGFuIHtYfSBjYW4gYmUgc3Vic3RpdHV0ZWQgZm9yIHtkYX0gc3VjaCB0aGF0 IHtYIG1lIGRhfSIgaXMgZXhwcmVzc2VkIGJ5ICJYIGlzIGFuIGluZGl2aWR1YWwiLgoKCgpXaGVu IGVhY2ggb2YgWCBhbmQgWSBpcyBhbiBpbmRpdmlkdWFsIGFuZCBYIGlzIG5vdCBlcXVhbCB0byBZ LCB7WCBqbyd1IFl9IGlzIGNhbGxlZCBfX2luZGl2aWR1YWxzX18uIFdoZW4gZWFjaCBvZiBYIGFu ZCBZIGlzIGFuIGluZGl2aWR1YWwgb3IgaW5kaXZpZHVhbHMsIHtYIGpvJ3UgWX0gaXMgY2FsbGVk IGluZGl2aWR1YWxzIGFzIHdlbGwuCgoKCiEhISEjIERpZmZlcmVuY2UgYmV0d2VlbiBwbHVyYWwg YW5kIHNpbmd1bGFyCgpBIHBsdXJhbCBjb25zdGFudCB0aGF0IHJlZmVycyB0byBhIHNpbmdsZSBp bmRpdmlkdWFsIGlzIGNhbGxlZCBhIF9fc2luZ3VsYXIgY29uc3RhbnRfXy4KCgoKVW5sZXNzIFg9 WSBhbmQgWCBpcyBhbiBpbmRpdmlkdWFsLCBubyBtYXR0ZXIgd2hldGhlciBlYWNoIG9mIFggYW5k IFkgaXMgcGx1cmFsIG9yIHNpbmd1bGFyLCB7WCBqbyd1IFl9IGlzIG5vdCBhIHNpbmd1bGFyIGNv bnN0YW50LiBJdCBpcyBiZWNhdXNlIAoKXlggbWUgWCBqbyd1IFkgaWplbmFpIFggam8ndSBZIG1l IFheCgpob2xkcyB0cnVlLCBhbmQgdGhlbiB7WCBqbyd1IFl9IGRvZXMgbm90IHNhdGlzZnkgdGhl IGNvbmRpdGlvbiBvZiBhbiBpbmRpdmlkdWFsIHtybydvaSBkYSBwb2kga2UnYSBtZSBYIGpvJ3Ug WSB6byd1IFggam8ndSBZIG1lIGRhfS4KCgoKISEhISMgQm91bmQgc2luZ3VsYXIgdmFyaWFibGUK CldoZW4gdGhlIGRvbWFpbiBvZiBhIGJvdW5kIHBsdXJhbCB2YXJpYWJsZSBpcyByZXN0cmljdGVk IHRvIHdoYXQgaXMgYW4gaW5kaXZpZHVhbCwgdGhlIHZhcmlhYmxlIGlzIGNhbGxlZCBfX2JvdW5k IHNpbmd1bGFyIHZhcmlhYmxlX18uIEEgYm91bmQgc2luZ3VsYXIgdmFyaWFibGUgY2Fubm90IHRh a2UgbW9yZSB0aGFuIG9uZSBpbmRpdmlkdWFsIHZhbHVlIGF0IGEgdGltZS4KCntybyBkYX0gKGZv ciBhbGwge2RhfSkgYW5kIHtzdSdvIGRhfSAodGhlcmUgaXMgYXQgbGVhc3Qgb25lIHtkYX0pLCB3 aGljaCBhcmUgb2ZmaWNpYWxseSBkZWZpbmVkIGluIExvamJhbiwgYXJlIGJvdW5kIHNpbmd1bGFy IHZhcmlhYmxlcy4gVGhleSBjYW4gYmUgZGVmaW5lZCB3aXRoIGJvdW5kIHBsdXJhbCB2YXJpYWJs ZXMgYXMgZm9sbG93czoKCnx8CgpybyBkYSB+aHN+fH5oc34gcm8nb2kgZGEgcG9pIHJvJ29pIGRl IHBvaSBkZSBtZSBkYSB6byd1IGRhIG1lIGRlCgpzdSdvIGRhIH5oc358fmhzfiBzdSdvaSBkYSBw b2kgcm8nb2kgZGUgcG9pIGRlIG1lIGRhIHpvJ3UgZGEgbWUgZGUKCnx8CgpfX3N1J29pX18gaXMg YW4gZXhwZXJpbWVudGFsIGNtYXZvIHByb3Bvc2VkIGJ5ICgoeG9yeGVzfGxhIHhvcnhlcykpLCBh bmQgaXMgYSBwbHVyYWwgcXVhbnRpZmllciBtZWFuaW5nICJ0aGVyZSBpcy9hcmUiLiBOb3RlIHRo YXQge3N1J29pfSBpcyBfX25vdF9fICJhdCBsZWFzdCBvbmUiLiB7c3Unb2kgZGF9IGlzIGEgYm91 bmQgcGx1cmFsIHZhcmlhYmxlIG1lYW5pbmcgInRoZXJlIGlzL2FyZSB7ZGF9Ii4KCgoKISEhISMg V2hhdCBpcyBuZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzCgpSZWZlcmVudCBv ZiBhIHBsdXJhbCBjb25zdGFudCBpcyBub3QgbmVjZXNzYXJpbHkgYW4gaW5kaXZpZHVhbCBvciBp bmRpdmlkdWFscy4gCgpJdCBpcyBwb3NzaWJsZSB0byBkaXNjdXNzIGEgdW5pdmVyc2Ugb2YgZGlz Y291cnNlIHN1Y2ggdGhhdCByZWZlcmVudCBvZiBhIHBsdXJhbCBjb25zdGFudCBpcyBuZWl0aGVy IGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzLgoKCgpGb3IgZXhhbXBsZSwgY29uc2lkZXIg c3VjaCBhIHVuaXZlcnNlIG9mIGRpc2NvdXJzZSBpbiB3aGljaCB0aGUgZm9sbG93aW5nIHByb3Bv c2l0aW9uIGhvbGRzIHRydWUuCgpecm8nb2kgZGEgcG9pIGtlJ2EgbWUga28nYSBrdSdvIHN1J29p IGRlIHpvJ3UgZGUgbWUgZGEgaWplbmFpIGRhIG1lIGRlIH4tLX4gQ29uZGl0aW9uXzFeCgpJbiBv dGhlciB3b3JkcywgaW4gdGhpcyB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UsIGZvciBhbGwgWCBzdWNo IHRoYXQge1ggbWUga28nYX0sIHRoZXJlIGlzIGFsd2F5cyBZIHN1Y2ggdGhhdCB7WSBtZSBYfSBh bmQgbm90IHtYIG1lIFl9LgoKCgo7VGhlb3JlbTogSW4gYSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2Ug d2hlcmUgQ29uZGl0aW9uXzEgaXMgdHJ1ZSwge2tvJ2F9IGlzIG5laXRoZXIgYW4gaW5kaXZpZHVh bCBub3IgaW5kaXZpZHVhbHMuCgoKCjtQcm9vZjogU3VwcG9zZSB7a28nYX0gaXMgYW4gaW5kaXZp ZHVhbC4gRnJvbSB0aGUgZGVmaW5pdGlvbiBvZiAiYW4gaW5kaXZpZHVhbCI6Cgpecm8nb2kgZGEg cG9pIGtlJ2EgbWUga28nYSB6byd1IGtvJ2EgbWUgZGEgfi0tfiBTdXBwb3NpdGlvbl8yXgoKUmVw bGFjZSB7cm8nb2kgZGF9IHdpdGgge25ha3Ugc3Unb2kgZGEgbmFrdX06CgpebmFrdSBzdSdvaSBk YSBwb2kga2UnYSBtZSBrbydhIGt1J28gbmFrdSB6byd1IGtvJ2EgbWUgZGEgfi0tfiBTdXBwb3Np dGlvbl8yLTFeCgpNb3ZlIHRoZSBpbm5lci1tb3N0IHtuYWt1fSBpbnRvIHRoZSBwcm9wb3NpdGlv bjoKCl5uYWt1IHN1J29pIGRhIHBvaSBrZSdhIG1lIGtvJ2Egem8ndSBuYWt1IGtvJ2EgbWUgZGEg fi0tfiBTdXBwb3NpdGlvbl8yLTJeCgpSZXBsYWNlIHtzdSdvaSBkYSBwb2l9IHdpdGgge2lqZX0g YW5kIG1vdmUgaW50byB0aGUgcHJvcG9zaXRpb246CgpebmFrdSBzdSdvaSBkYSB6byd1IGRhIG1l IGtvJ2EgaWplIG5ha3Uga28nYSBtZSBkYSB+LS1+IFN1cHBvc2l0aW9uXzItM14KClJlcGxhY2Ug e2lqZSBuYWt1fSB3aXRoIHtpamVuYWl9OgoKXm5ha3Ugc3Unb2kgZGEgem8ndSBkYSBtZSBrbydh IGlqZW5haSBrbydhIG1lIGRhIH4tLX4gU3VwcG9zaXRpb25fMi00XgoKQnkgdGhlIHdheSwgZnJv bSBhIHByb3BlcnR5IG9mIHttZX0sCgpea28nYSBtZSBrbydhIF4KCmlzIGFsd2F5cyB0cnVlLiB7 a28nYX0gaXMgdGhlcmVmb3JlIGluIHRoZSBkb21haW4gb2Yge2RhfSBvZiBDb25kaXRpb25fMS4g UmVwbGFjZSB7cm8nb2kgZGF9IG9mIENvbmRpdGlvbl8xIHdpdGgge2tvJ2F9LCBhbmQgaXQgdGh1 cyBob2xkcyB0cnVlOgoKXnN1J29pIGRlIHpvJ3UgZGUgbWUga28nYSBpamVuYWkga28nYSBtZSBk ZSB+LS1+IENvbmRpdGlvbl8xLTFeCgpDb25kaXRpb25fMS0xIGFuZCBTdXBwb3NpdGlvbl8yLTQg Y29udHJhZGljdCBlYWNoIG90aGVyLgoKU3VwcG9zaXRpb25fMiBpcyB0aHVzIHJlamVjdGVkIGJ5 IHJlZHVjdGlvIGFkIGFic3VyZHVtLgoKSXQgbWVhbnMgdGhhdCB7a28nYX0gaXMgbm90IGFuIGlu ZGl2aWR1YWwuCgoKCk1vcmVvdmVyLCB3aGVuIHtrbydhfSBpcyBleHBhbmRlZCB0byB7QSBqbyd1 IEJ9LCBmcm9tIGEgcHJvcGVydHkgb2Yge2pvJ3V9LCB0aGUgZm9sbG93aW5nIHByb3Bvc2l0aW9u cyBob2xkIHRydWU6CgpeQSBtZSBrbydhfnBwfgoKfi9wcH5CIG1lIGtvJ2FeCgpFYWNoIG9mIEEg YW5kIEIgaXMgaW4gdGhlIGRvbWFpbiBvZiB7ZGF9IG9mIENvbmRpdGlvbl8xLiBDb25zaWRlcmlu ZyBzaW1pbGFybHkgdG8gQ29uZGl0aW9uXzEtMSwgbmVpdGhlciBBIG5vciBCIGlzIGFuIGluZGl2 aWR1YWwuIHtrbydhfSBpcyB0aHVzIG5vdCBpbmRpdmlkdWFscy4KClEuRS5ELgoKCgpXaGVuIHtr bydhfSBpcyBuZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzLCB3aGF0IGFjdHVh bGx5IGRvZXMgaXQgcmVmZXIgdG8/CgpXZSBtYXkgaW50ZXJwcmV0IHRoYXQgaXQgcmVmZXJzIHRv IHdoYXQgaXMgcmVmZXJyZWQgdG8gYnkgYSBtYXRlcmlhbCBub3VuLCBmb3IgZXhhbXBsZS4KCkJ5 IGEgc3BlYWtlciB3aG8gdGhpbmtzIHRoYXQgYSBjdXQtb2ZmIHBpZWNlIG9mIGJyZWFkIGlzIGFs c28gYnJlYWQsIGJyZWFkIGlzIHJlZ2FyZGVkIGFzIG5laXRoZXIgYW4gaW5kaXZpZHVhbCBub3Ig aW5kaXZpZHVhbHMuCgoKCltodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2QvbXNnL2xvamJhbi9S QXRFN1lrLWRxdy9wQ0dlWUNFOWwxUUp8KFJlbGF0ZWQgZGlzY3Vzc2lvbjogZm9yIHRoZSBjYXNl IG9mIHtrbydhfT17bG8gc2lkYm99LCBJIHdyb3RlIHRoZSBzYW1lIHByb29mIG9ubHkgaW4gTG9q YmFuLildCgoKCiEhISEjIEEgbG9naWNhbCBheGlvbSBvbiBwbHVyYWwgY29uc3RhbnQKClRoZSBm b2xsb3dpbmcgbG9naWNhbCBheGlvbSBpcyBnaXZlbiB0byBhbiBhcmJpdHJhcnkgcGx1cmFsIGNv bnN0YW50IEM6CgpeZ2FuYWkgQyBicm9kYSBnaSBzdSdvaSBkYSB6byd1IGRhIGJyb2RhXgoKCgpJ dCBtZWFucyAiaW4gYSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UsIGlmIGEgcHJvcG9zaXRpb24gaW4g d2hpY2ggYSBwbHVyYWwgY29uc3RhbnQgaXMgeDEgb2Yge2Jyb2RhfSBob2xkcyB0cnVlLCB0aGVy ZSBpcyByZWZlcmVudCB0aGF0IGlzIHgxIG9mIHticm9kYX0iLgoKCgpUaGF0IGlzIHRvIHNheSwg YW4gYXJndW1lbnQgdGhhdCBoYXMgbm8gcmVmZXJlbnQgaW4gYSB1bml2ZXJzZSBvZiBkaXNjb3Vy c2UgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgcGx1cmFsIGNvbnN0YW50LiBBbiBhcmd1bWVu dCB0aGF0IGhhcyBubyByZWZlcmVudCBpcyBleHByZXNzZWQgaW4gdGhlIGZvcm0ge25ha3Ugc3Un b2kgZGF9LCB3aGljaCBpcyBhIG5lZ2F0aW9uIG9mIGEgYm91bmQgcGx1cmFsIHZhcmlhYmxlIHtz dSdvaSBkYX0gbWVhbmluZyAidGhlcmUgaXMvYXJlIi4KCgoKISEjIERlZmluaXRpb24gb2YgZ2Fk cmkKCjtfX2xvX18gKExFKTogSXQgaXMgcHJlZml4ZWQgdG8gc2VsYnJpLCBhbmQgZm9ybXMgYSBw bHVyYWwgY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gd2hhdCBzYXRpc2ZpZXMgeDEsIHRoZSBmaXJz dCBwbGFjZSBvZiB0aGUgc2VsYnJpLiBJZiBhIHF1YW50aWZpZXIgZm9sbG93cyB7bG99LCB0aGUg cXVhbnRpZmllciByZXByZXNlbnRzIHRoZSBjb3VudCBvZiBhbGwgdGhlIHJlZmVyZW50cyBvZiB0 aGUgcGx1cmFsIGNvbnN0YW50LiBJbiB0aGUgY2FzZSB0aGF0IGEgcXVhbnRpZmllciBmb2xsb3dz IHtsb30sIGEgc3VtdGkgbWF5IGZvbGxvdyBpdC4gSW4gdGhpcyBjYXNlLCBpdCBmb3JtcyBhIHBs dXJhbCBjb25zdGFudCB0aGF0IHJlZmVycyB0byB3aGF0IGlzL2FyZSBhbW9uZyAnJ3N1bXRpJycu Cgp8fAoKbG8gW1tQQV0gYnJvZGEgKGt1KSB+aHN+fH5oc34gem8nZSBub2kga2UnYSBicm9kYSBb W2dpJ2Ugemlsa2FuY3UgbGkgUEEgbG8gYnJvZGFdIChrdSdvKSB+aHN+fH5oc34gd2hhdCBpcy9h cmUgYnJvZGEgW1t0aGF0IGlzL2FyZSBQQSBpbiB0b3RhbF0KCmxvIFBBICcnc3VtdGknJyAoa3Up IH5oc358fmhzfiBsbyBQQSBtZSAnJ3N1bXRpJycgKG1lJ3UpIChrdSkgfmhzfnx+aHN+IHdoYXQg aXMvYXJlIGFtb25nICcnc3VtdGknJywgYW5kIFBBIGluIHRvdGFsCgp8fAoKe2t1fSwge2t1J299 LCB7bWUndX0gYXJlIGVsaWRhYmxlIHRlcm1pbmF0b3JzLgoKCgpQdXR0aW5nIGEgcXVhbnRpZmll ciBhZnRlciBnYWRyaSBsaWtlIHtsbyBQQX0gaXMgY2FsbGVkIF9faW5uZXIgcXVhbnRpZmljYXRp b25fXywgYW5kIHRoZSBxdWFudGlmaWVyIGlzIGNhbGxlZCBfX2lubmVyIHF1YW50aWZpZXJfXy4g QWx0aG91Z2ggdGhlIHRlcm0gInF1YW50aWZ5IiBpcyBpbnZvbHZlZCwgaXQgaXMgZGlmZmVyZW50 IGZyb20gcXVhbnRpZmljYXRpb24gb2YgbG9naWMuIElubmVyIHF1YW50aWZpY2F0aW9uIGRvZXMg bm90IGludm9sdmUgY291bnRpbmcgcmVmZXJlbnRzIG9mIGNvbnN0YW50cyB0aGF0IGNhbiBiZSBz dWJzdGl0dXRlZCBmb3IgYSB2YXJpYWJsZSwgYnV0IGNvdW50aW5nIGFsbCB0aGUgcmVmZXJlbnRz IG9mIG9uZSBwbHVyYWwgY29uc3RhbnQuIElubmVyIHF1YW50aWZpY2F0aW9uIHdpbGwgYmUgZGlz Y3Vzc2VkIG1vcmUgcHJlY2lzZWx5IGluICgofCNJbm5lcl9xdWFudGlmaWNhdGlvbnxTZWN0aW9u IDMuMSkpLgoKCgpPbiB0aGUgb3RoZXIgaGFuZCwgcHV0dGluZyBhIHF1YW50aWZpZXIgYmVmb3Jl IGdhZHJpLCBvciBiZWZvcmUgYSBzdW10aSBtb3JlIGdlbmVyYWxseSwgaXMgY2FsbGVkIF9fb3V0 ZXIgcXVhbnRpZmljYXRpb25fXywgYW5kIHRoZSBxdWFudGlmaWVyIGlzIGNhbGxlZCBfX291dGVy IHF1YW50aWZpZXJfXy4gT3V0ZXIgcXVhbnRpZmljYXRpb24gd2lsbCBiZSBkaXNjdXNzZWQgbW9y ZSBwcmVjaXNlbHkgaW4gKCh8I091dGVyX3F1YW50aWZpY2F0aW9ufFNlY3Rpb24gMy4yKSkuCgoK CkFsbCBzdW10aSBmb3JtZWQgd2l0aCBnYWRyaSBhcmUgZGVmaW5lZCBzbyB0aGF0IHRoZXkgYXJl IGV4cGFuZGVkIGludG8gZXhwcmVzc2lvbnMgd2l0aCB7em8nZX0uIFRoYXQgaXMgdG8gc2F5LCB0 aGUgbW9zdCBnZW5lcmFsIHBsdXJhbCBjb25zdGFudCBpcyByZXByZXNlbnRlZCBieSBhIHNpbmds ZSB7em8nZX0uIEEgc3VtdGkgZm9ybWVkIHdpdGggZ2FkcmkgaXMge3pvJ2V9IGFjY29tcGFuaWVk IGJ5IGFuIGV4cGxhbmF0aW9uLgoKXgoKO0V4YW1wbGU6IFBlb3BsZSBnYXRoZXJlZCwgY29va2Vk IGFuZCBhdGUuCgo7OiBsbyBwcmVudSBjdSBqbWFqaSBnaSdlIGp1a3BhIGdpJ2UgY2l0a2FeCgoK CldoaWxlIHRoZSBwcmVkaWNhdGUge2p1a3BhfSAoY29vaykgY2FuIGJlIGludGVycHJldGVkIGNv bGxlY3RpdmVseSBhcyB3ZWxsIGFzIGRpc3RyaWJ1dGl2ZWx5LCB0aGUgcGx1cmFsIGNvbnN0YW50 IHtsbyBwcmVudX0gKHBlb3BsZSkgZG9lcyBub3Qgc2F5IGV4cGxpY2l0bHkgaWYgaXQgc2F0aXNm aWVzIHtqdWtwYX0gY29sbGVjdGl2ZWx5IG9yIGRpc3RyaWJ1dGl2ZWx5LiBJZiB3ZSB3YW50IHRv IHNheSBleHBsaWNpdGx5IHRoYXQgdGhleSAiY29sbGVjdGl2ZWx5IiBjb29rZWQsIHdlIHVzZSB7 bG9pfSwgd2hpY2ggd2lsbCBiZSBkaXNjdXNzZWQgbGF0ZXIsIGFuZCBzYXkge2xvaSBwcmVudX0u IENvbnRyYXN0aXZlbHksIGlmIHdlIHdhbnQgdG8gc2F5IGV4cGxpY2l0bHkgdGhhdCB0aGV5ICJk aXN0cmlidXRpdmVseSIgY29va2VkLCB3ZSBzYXkge3JvIGxvIHByZW51fSB3aXRoIGFuIG91dGVy IHF1YW50aWZpY2F0aW9uLCBvciB7bHUnYSBsbyBwcmVudX0uIEhvd2V2ZXIsIGEgc3VtdGkgdGhh dCBzYXlzIGV4cGxpY2l0bHkgY29sbGVjdGl2aXR5IG9yIGRpc3RyaWJ1dGl2aXR5IGlzIG5vdCBu ZWNlc3NhcmlseSBhYmxlIHRvIGJlIHNoYXJlZCB3aXRoIG90aGVyIHByZWRpY2F0ZSBsaWtlIHtq bWFqaX0gb3Ige2NpdGthfS4KCgoKO19fbGVfXyAoTEUpOiB7bGUgYnJvZGF9IHJlZmVycyBfX3Nw ZWNpZmljYWxseV9fIHRvIGEgcmVmZXJlbnQgb2Yge2xvIGJyb2RhfSwgYW5kIF9fZXhwbGljaXRs eSBleHByZXNzIHRoYXQgdGhlIHNwZWFrZXIgaGFzIHRoZSByZWZlcmVudCBpbiBtaW5kX18uIEl0 cyBsb2dpY2FsIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFzIHRoYXQgb2Yge2xvfS4KCnx8CgpsZSBb W1BBXSBicm9kYSAoa3UpIH5oc358fmhzfiB6bydlIG5vaSBtaSBrZSdhIGRvIHNraWN1IGxvIGth IGNlJ3UgYnJvZGEgW1tnaSdlIHppbGthbmN1IGxpIFBBIGxvIGJyb2RhXSAoa3UnbykgCgpsZSBQ QSAnJ3N1bXRpJycgKGt1KSB+aHN+fH5oc34gbGUgUEEgbWUgJydzdW10aScnIChtZSd1KSAoa3Up Cgp8fAoKCgo7X19sYV9fIChMQSk6IEl0IGlzIHByZWZpeGVkIHRvIHNlbGJyaSBvciBjbWV2bGEs IGFuZCBmb3JtcyBhIHBsdXJhbCBjb25zdGFudCB0aGF0IHJlZmVycyB0byB3aGF0IGlzIG5hbWVk IHRoZSBzZWxicmkgb3IgY21ldmxhIHN0cmluZy4gSXRzIGxvZ2ljYWwgcHJvcGVydHkgaXMgdGhl IHNhbWUgYXMgdGhhdCBvZiB7bG99LgoKfHwKCmxhIFtbUEFdIGJyb2RhIChrdSkgfmhzfnx+aHN+ IHpvJ2Ugbm9pIGx1IFtbUEFdIGJyb2RhIGxpJ3UgY21lbmUga2UnYSBtaSAoa3UnbykgCgpsYSBQ QSAnJ3N1bXRpJycgKGt1KSB+aHN+fH5oc34gem8nZSBub2kgbHUgUEEgc3VtdGkgbGkndSBjbWVu ZSBrZSdhIG1pIChrdSdvKSAKCnx8CgoKCjtfX2xvaV9fIChMRSksIF9fbGVpX18gKExFKSwgX19s YWlfXyAoTEEpOiB7bG9pL2xlaS9sYWkgYnJvZGF9IHJlZmVycyB0byBhIHJlZmVyZW50IG9mIHts by9sZS9sYSBicm9kYX0sIGFuZCBfX2V4cGxpY2l0bHkgZXhwcmVzcyB0aGF0IHRoZSByZWZlcmVu dCBzYXRpc2ZpZXMgYSBwcmVkaWNhdGUgY29sbGVjdGl2ZWx5X18uCgp8fAoKbG9pIFtbUEFdIGJy b2RhIH5oc358fmhzfiBsbyBndW5tYSBiZSBsbyBbW1BBXSBicm9kYQoKbGVpIFtbUEFdIGJyb2Rh IH5oc358fmhzfiBsbyBndW5tYSBiZSBsZSBbW1BBXSBicm9kYQoKbGFpIFtbUEFdIGJyb2RhIH5o c358fmhzfiBsbyBndW5tYSBiZSBsYSBbW1BBXSBicm9kYQoKbG9pIFBBICcnc3VtdGknJyB+aHN+ fH5oc34gbG8gZ3VubWEgYmUgbG8gUEEgJydzdW10aScnCgpsZWkgUEEgJydzdW10aScnIH5oc358 fmhzfiBsbyBndW5tYSBiZSBsZSBQQSAnJ3N1bXRpJycKCmxhaSBQQSAnJ3N1bXRpJycgfmhzfnx+ aHN+IGxvIGd1bm1hIGJlIGxhIFBBICcnc3VtdGknJwoKfHwKCkJlY2F1c2Uge2xvaS9sZWkvbGFp fSBpcyB0aHVzIGRlZmluZWQgYnkgYW5vdGhlciBwbHVyYWwgY29uc3RhbnQge2xvIGd1bm1hIGJl IGxvL2xlL2xhfSwgaXQgZG9lcyBub3QgcmVmZXIgZGlyZWN0bHkgdG8gcmVmZXJlbnQgb2Yge2xv IGJyb2RhfSBvciB7bG8gUEEgJydzdW10aScnfSwgYnV0IHJlZmVyZW50IG9mIHtsbyBndW5tYX0u IFRoZXJlZm9yZSwgZXZlbiBpZiB7bG8gYnJvZGF9IG9yIHtsbyBQQSAnJ3N1bXRpJyd9IGlzIG5v dCBhbiBpbmRpdmlkdWFsLCB7bG9pIGJyb2RhfSBvciB7bG9pIFBBICcnc3VtdGknJ30gY2FuIGJl IGFuIGluZGl2aWR1YWwge2xvIGd1bm1hfSB1bmRlciB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbjoK Cl5ybydvaSBkYSBwb2kga2UnYSBtZSBsbyBndW5tYSBiZSBsby9sZS9sYSBbW1BBXSBicm9kYSB6 byd1IGxvIGd1bm1hIGJlIGxvL2xlL2xhIFtbUEFdIGJyb2RhIGN1IG1lIGRhfnBwfgoKfi9wcH5y bydvaSBkYSBwb2kga2UnYSBtZSBsbyBndW5tYSBiZSBsby9sZS9sYSBQQSAnJ3N1bXRpJycgem8n dSBsbyBndW5tYSBiZSBsby9sZS9sYSBQQSAnJ3N1bXRpJycgY3UgbWUgZGFeCgoKCjtfX2xvJ2lf XyAoTEUpLCBfX2xlJ2lfXyAoTEUpLCBfX2xhJ2lfXyAoTEEpOiB7bG8naS9sZSdpL2xhJ2kgYnJv ZGF9IHJlZmVycyB0byBhIHNldCBvciBzZXRzIG9mIGluZGl2aWR1YWwocykgdGhhdCBjb25zdGl0 dXRlKHMpIGEgcGx1cmFsIGNvbnN0YW50IHtsby9sZS9sYSBicm9kYX0uIEJlY2F1c2Uge2xvJ2kv bGUnaS9sYSdpfSBmb3JtcyBhIHNldCBvciBzZXRzLCBpdCBpcyBkZWZpbmVkIG9ubHkgd2hlbiBp dHMvdGhlaXIgbWVtYmVyKHMpIHtsby9sZS9sYSBicm9kYX0gaXMvYXJlIGFuIGluZGl2aWR1YWwg b3IgaW5kaXZpZHVhbHMuIEEgc2V0IGl0c2VsZiBpcyBhbHdheXMgYW4gaW5kaXZpZHVhbCwgYW5k IHNldHMgYXJlIGFsd2F5cyBpbmRpdmlkdWFsczogdGhlcmUgaXMgbm8gc2V0IHRoYXQgaXMgbm90 IGFuIGluZGl2aWR1YWwuCgp8fAoKbG8naSBbW1BBXSBicm9kYSB+aHN+fH5oc34gbG8gc2VsY21p IGJlIGxvIFtbUEFdIGJyb2RhCgpsZSdpIFtbUEFdIGJyb2RhIH5oc358fmhzfiBsbyBzZWxjbWkg YmUgbGUgW1tQQV0gYnJvZGEKCmxhJ2kgW1tQQV0gYnJvZGEgfmhzfnx+aHN+IGxvIHNlbGNtaSBi ZSBsYSBbW1BBXSBicm9kYQoKbG8naSBQQSAnJ3N1bXRpJycgfmhzfnx+aHN+IGxvIHNlbGNtaSBi ZSBsbyBQQSAnJ3N1bXRpJycKCmxlJ2kgUEEgJydzdW10aScnIH5oc358fmhzfiBsbyBzZWxjbWkg YmUgbGUgUEEgJydzdW10aScnCgpsYSdpIFBBICcnc3VtdGknJyB+aHN+fH5oc34gbG8gc2VsY21p IGJlIGxhIFBBICcnc3VtdGknJwoKfHwKCkJlY2F1c2Uge2xvJ2kvbGUnaS9sYSdpfSBpcyBkZWZp bmVkIGJ5IGFub3RoZXIgcGx1cmFsIGNvbnN0YW50IHtsbyBzZWxjbWkgYmUgbG8vbGUvbGF9LCBp dCBkb2VzIG5vdCByZWZlciBkaXJlY3RseSB0byByZWZlcmVudCBvZiB7bG8gYnJvZGF9IG9yIHts byBQQSAnJ3N1bXRpJyd9LCBidXQgcmVmZXJlbnQgb2Yge2xvIHNlbGNtaX0uCgoKCkluIHNldCB0 aGVvcnksIGFuIGVtcHR5IHNldCBpcyBkZWZpbmVkIGFzIHtsbyBzZWxjbWkgYmUgbm8gZGF9LCBh bmQgYW4gZXhwcmVzc2lvbiB7bG8gbm8gYnJvZGF9IGlzIG9mZmljaWFsbHkgbWVhbmluZ2xlc3Mg KHNlZSAoKHwjSW5uZXJfcXVhbnRpZmljYXRpb258U2VjdGlvbiAzLjEpKS4gVGhpcyBpbXBsaWVz IHRoYXQgYW4gZW1wdHkgc2V0IGNhbm5vdCBiZSBleHByZXNzZWQgd2l0aCB7bG8naS9sZSdpL2xh J2l9LiAKCgoKQWNjb3JkaW5nIHRvIFtodHRwOi8vamJvdmxhc3RlLmxvamJhbi5vcmcvZGljdC9z ZWxjbWl8amJvdmxhc3RlXSwge3NlbGNtaX0gaXMgZGVmaW5lZCBhcyBmb2xsb3dzOnx8Cgp4MSBz ZWxjbWkgeDIgfmhzfnx+aHN+ID1jYSdlIH5oc358fmhzfiB4MSBzZSBjbWltYSBybyBsbyBtZSB4 MiBtZSd1IGUgbm8gbG8gbmEgbWUgeDIgfHwKCklmIHdlIGFjY2VwdCB0aGlzIGRlZmluaXRpb24s IGEgc2V0IHJlZmVycmVkIHRvIGJ5IHtsbydpL2xlJ2kvbGEnaX0tc3VtdGkgY29uc2lzdHMgb2Yg b25seSB0aGUgcmVmZXJlbnQgb2Yge2xvL2xlL2xhIFtbUEFdIGJyb2RhfSBvciB7bG8vbGUvbGEg UEEgJydzdW10aScnfS4gQ29udHJhc3RpdmVseSwgaWYgd2UgZGVmaW5lIGl0IGFzIHtzZWxjbWl9 PXtzZSBjbWltYX0sIHRoZSBzZXQgbWF5IGluY2x1ZGUgd2hhdCBpcy9hcmUgb3RoZXIgdGhhbiB0 aGUgcmVmZXJlbnQgb2Yge2xvL2xlL2xhIFtbUEFdIGJyb2RhfSBvciB7bG8vbGUvbGEgUEEgJydz dW10aScnfS4gSXQgaXMgbm90IHlldCBvZmZpY2lhbGx5IGRldGVybWluZWQgd2hpY2ggaW50ZXJw cmV0YXRpb24gaXMgdG8gYmUgYWNjZXB0ZWQuCgoKCiEhISMgSW5uZXIgcXVhbnRpZmljYXRpb24K CigoQlBGSyBTZWN0aW9uOiBnYWRyaXxCUEZLIGRlZmluZXMgaW5uZXIgcXVhbnRpZmljYXRpb24p KSBhcyBmb2xsb3dzOgoKfHwKCmxvIFtbUEFdIGJyb2RhIH5oc358fmhzfiB6bydlIG5vaSBrZSdh IGJyb2RhIFtbZ2knZSB6aWxrYW5jdSBsaSBQQSBsbyBicm9kYV0KCmxvIFBBICcnc3VtdGknJyB+ aHN+fH5oc34gbG8gUEEgbWUgJydzdW10aScnCgp8fAoKVGhhdCBpcyB0byBzYXksIGlubmVyIHF1 YW50aWZpZXIgbWVhbnMgbnVtYmVyIG9mIHJlZmVyZW50IGNvdW50ZWQgYnkgdW5pdCB7bG8gYnJv ZGF9IG9yIHtsbyBtZSAnJ3N1bXRpJyd9IHRoYXQgaXMgeDMgb2Yge3ppbGthbmN1fS4gCgpIb3dl dmVyLCBpbnN0ZWFkIG9mIHt6aWxrYW5jdX0sIHRoZSBtZWFuaW5nIG9mIHdoaWNoIGlzIHRvbyB2 YWd1ZSBmb3IgZGVmaW5pdGlvbiwgW2h0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZC9tc2cvbG9q YmFuL1JBdEU3WWstZHF3L3hpMmg2QTE3Q3VzSnxhbiBpZGVhIG9mIHJlZGVmaW5pdGlvbiB1c2lu ZyB7bWVpfSB3YXMgc3VnZ2VzdGVkXSBhcyBmb2xsb3dzOgoKCgo7QXhpb20gMTogcm8nb2kgZGEg c3UnbyBwYSBtZWkKCjtEZWZpbml0aW9uOnx8CgooRDEpIGtvJ2Egc3UnbyBOIG1laSB+aHN+fH5o c34gPWNhJ2Ugfmhzfnx+aHN+IHN1J29pIGRhIHBvaSBtZSBrbydhIGt1J28gc3Unb2kgZGUgcG9p IG1lIGtvJ2Egem8ndSBnZSBkYSBzdSdvIE4tMSBtZWkgZ2luYWkgZGUgbWUgZGEKCihEMikga28n YSBOIG1laSB+aHN+fH5oc34gPWNhJ2Ugfmhzfnx+aHN+IGtvJ2Egc3UnbyBOIG1laSBnaSdlIG5h aSBzdSdvIE4rMSBtZWkgCgooRDMpIGxvIFBBIGJyb2RhIH5oc358fmhzfiA9Y2EnZSB+aHN+fH5o c34gem8nZSBub2kga2UnYSBQQSBtZWkgZ2knZSBicm9kYQoKfHwKCgoKVXNpbmcgdGhlc2UgZGVm aW5pdGlvbnMgYW5kIEF4aW9tIDEsIHRoZSBmb2xsb3dpbmcgdGhlb3JlbSB3aWxsIGJlIHByb3Zl ZC4KCl5JZiBhbmQgb25seSBpZiB7a28nYSBwYSBtZWl9LCB7a28nYX0gaXMgYW4gaW5kaXZpZHVh bC5eCgoKCjtQcm9vZjogKEQyKSBpcwoKfHwKCmtvJ2EgTiBtZWkJfD18IGtvJ2Egc3UnbyBOIG1l aSBnaSdlIG5haSBzdSdvIE4rMSBtZWkgCgoJCXw9fCBnZSBrbydhIHN1J28gTiBtZWkgLS0tLS0o UzEpCgoJCXwgfCBnaSBuYWt1IGtvJ2Egc3UnbyBOKzEgbWVpIC0tLS0tKFMyKQoKfHwKCkFwcGx5 aW5nIChEMSkgdG8gKFMyKSwgCgp8fAoKKFMyKQkJfD18IG5ha3Ugc3Unb2kgZGEgcG9pIG1lIGtv J2Ega3UnbyBzdSdvaSBkZSBwb2kgbWUga28nYSB6byd1IAoKCQl8IHwgZ2UgZGEgc3UnbyBOIG1l aSAKCgkJfCB8IGdpbmFpIGRlIG1lIGRhCgoJCXw9fCBybydvaSBkYSBwb2kgbWUga28nYSBrdSdv IHJvJ29pIGRlIHBvaSBtZSBrbydhIHpvJ3UKCgkJfCB8IG5ha3UgZ2UgZGEgc3UnbyBOIG1laSAK CgkJfCB8IGdpIG5ha3UgZGUgbWUgZGEKCgkJfD18IHJvJ29pIGRhIHBvaSBtZSBrbydhIGt1J28g cm8nb2kgZGUgcG9pIG1lIGtvJ2Egem8ndQoKCQl8IHwgZ2FuYWkgZGEgc3UnbyBOIG1laSAKCgkJ fCB8IGdpIGRlIG1lIGRhCgp8fAoKKEQyKSBpcyB0aGVyZWZvcmUKCnx8CgprbydhIE4gbWVpCXw9 fCBnZSAoUzEpIGdpIChTMikgCgoJCXw9fCBnZSBrbydhIHN1J28gTiBtZWkKCgkJfCB8IGdpIHJv J29pIGRhIHBvaSBtZSBrbydhIGt1J28gcm8nb2kgZGUgcG9pIG1lIGtvJ2Egem8ndQoKCQl8IHwg Z2FuYWkgZGEgc3UnbyBOIG1laSAKCgkJfCB8IGdpIGRlIG1lIGRhCgp8fAoKV2hlbiBOPTEsCgp8 fAoKa28nYSBwYSBtZWkJfD18IGdlIGtvJ2Egc3UnbyBwYSBtZWkKCgkJfCB8IGdpIHJvJ29pIGRh IHBvaSBtZSBrbydhIGt1J28gcm8nb2kgZGUgcG9pIG1lIGtvJ2Egem8ndQoKCQl8IHwgZ2FuYWkg ZGEgc3UnbyBwYSBtZWkgCgoJCXwgfCBnaSBkZSBtZSBkYSAKCnx8CgpCZWNhdXNlIG9mIEF4aW9t IDEsIGl0IGltcGxpZXMKCnx8CgprbydhIHBhIG1laQl8PXwgcm8nb2kgZGEgcG9pIG1lIGtvJ2Eg a3UnbyBybydvaSBkZSBwb2kgbWUga28nYSB6byd1IGRlIG1lIGRhCgp8fAoKVGhlIHJpZ2h0IHNp ZGUgaW1wbGllcyB7cm8nb2kgZGEgcG9pIGtlJ2EgbWUga28nYSB6byd1IGtvJ2EgbWUgZGF9LCB3 aGljaCBpcyB0aGUgY29uZGl0aW9uIGZvciAie2tvJ2F9IGlzIGFuIGluZGl2aWR1YWwiLiBJdHMg Y29udmVyc2UgaXMgYWxzbyB0cnVlLgoKUS5FLkQuCgoKClRoZSBkaWFncmFtIGJlbG93IHNob3dz IGEgcHJvY2VkdXJlIG9mIGNvdW50aW5nIHNvbWV0aGluZyB1cCB0byBmb3VyIHJlcHJlc2VudGVk IHdpdGggYSBkaXJlY3RlZCBncmFwaC4gSW4gdGhpcyBkaWFncmFtLCBsb29wcyBzdWNoIGFzIHtY IG1lIFh9IGFyZSBvbWl0dGVkIGZvciBzaW1wbGljaXR5LCB0aG91Z2ggdGhleSBleGlzdC4gQ291 bnRpbmcgdXAgY29ycmVzcG9uZHMgdG8gc2VsZWN0aW5nIGEgc3ViZ3JhcGggb2YgYSBkaXJlY3Rl ZCBncmFwaCBmb3JtZWQgd2l0aCB7bWV9OiB0aGUgc3ViZ3JhcGggdGhhdCBoYXMgYSBmb3JtIG9m IHRyZWUgdGhhdCBpbmNsdWRlcyBhbGwgbGVhdmVzIChjb25zdGFudHMgZWFjaCBvZiB3aGljaCBp cyBhbiBpbmRpdmlkdWFsKSB0byBiZSBjb3VudGVkLCBmb3IgZXhhbXBsZSB0aGUgcGFydCBvZiBt YWdlbnRhIGNvbG9yIGluIHRoZSBkaWFncmFtLgoKCgp7aW1nIGZpbGVJZD0iMTAiIHRodW1iPSJ5 IiByZWw9ImJveFtnXSJ9CgoKCiEhISEjIFJlcGVhdGluZyBpbm5lciBxdWFudGlmaWNhdGlvbgoK QmVjYXVzZSB7bG8gUEEgJydzdW10aScnfSBpcyBkZWZpbmVkLCB3ZSBjYW4gcmVwZWF0IGlubmVy IHF1YW50aWZpY2F0aW9uIHRvIGZvcm0gYW4gYXJndW1lbnQuCgpeCgo7RXhhbXBsZTogbG8gbXVs bm8ga2FyZHlncmkgY3UgZ3VubWEgbG8gdm8gbG9pIHBhY2kga2FyZGEgfmhzfiAnJ0EgZnVsbCBk ZWNrIGNvbnNpc3RzIG9mIGZvdXIgZ3JvdXBzIG9mIHRoaXJ0ZWVuIGNhcmRzLicnCgo7OiBzdSdv IGRhIHpvJ3UgbG9pIHJlIGxvJ2kgcm8gbW9rY2Egbm9pIHNlcGxpIHB5IG5vaSBtb2tjYSBrdSdv IGRhIGN1IHJlbGN1a3RhaSB+aHN+ICcnVHdvIHNldHMgb2YgcG9pbnRzIHRoYXQgYXJlIGVxdWlk aXN0YW50IGZyb20gYSBwb2ludCBQIGlzIGEgZG91YmxlIGNpcmNsZS4nJ14KCgoKISEhISMgUHJv YmxlbXMgb24gaW5uZXIgcXVhbnRpZmljYXRpb24KCiEhISEhIyBDYW5ub3Qgc2F5IHplcm8KCgoK QmVjYXVzZSBhbiBhcmd1bWVudCBmb3JtZWQgYnkgZ2FkcmkgaXMgYSBwbHVyYWwgY29uc3RhbnQs IHtsbyBicm9kYX0gaW1wbGllcyB7c3Unb2kgZGEgem8ndSBkYSBicm9kYX0gYWNjb3JkaW5nIHRv IHRoZSBsb2dpY2FsIGF4aW9tIG9uIHBsdXJhbCBjb25zdGFudCBzaG93biBpbiAoKHwjQV9sb2dp Y2FsX2F4aW9tX29uX3BsdXJhbF9jb25zdGFudHxTZWN0aW9uIDIuMi42KSkuIFRoYXQgaXMgdG8g c2F5LCB0aGUgZXhwcmVzc2lvbiB7bG8gbm8gYnJvZGF9IGltcGxpZXMgInRoZXJlIGFyZSB3aGF0 IGFyZSBicm9kYSwgd2hpY2ggYXJlIGNvdW50ZWQgMCIsIHdoaWNoIHNlZW1zIG1lYW5pbmdsZXNz LgoKCgpUaGlzIG1lYW5zIHRoYXQgb2ZmaWNpYWwgTG9qYmFuIGNhbm5vdCBleHByZXNzIG5lZ2F0 aW9uIG9mIGV4aXN0ZW5jZSBvZiBwbHVyYWwgdmFyaWFibGUge25ha3Ugc3Unb2kgZGF9LCB3aGlj aCBpcyBuZXZlcnRoZWxlc3MgbmVjZXNzYXJ5LCBmb3IgZXhhbXBsZSBpbiB0aGUgZm9sbG93aW5n IHNpdHVhdGlvbjoKCgoKXiBsbyB4byBwcmVudSBjdSBqbWFqaSBnaSdlIGp1a3BhIGdpJ2UgY2l0 a2Egfmhzfn4tLX4gbm9+cHB+Cgp+L3BwficnIkhvdyBtYW55IHBlb3BsZSBnYXRoZXJlZCwgY29v a2VkIGFuZCBhdGU/IiAiemVyby4iJydeCgoKClRoaXMgcmVzcG9uc2UgaXMgYW4gYWJicmV2aWF0 ZWQgZm9ybSBvZiB7bG8gbm8gcHJlbnUgY3Ugam1hamkgZ2knZSBqdWtwYSBnaSdlIGNpdGthfS4K CgoKVGhpcyBwcm9wb3NpdGlvbiBtZWFucyB0aGF0IHtsbyBubyBwcmVudX0gc2F0aXNmaWVzIHNl bGJyaSB7am1haml9IGNvbGxlY3RpdmVseSBhbmQgKGplKSBub24tZGlzdHJpYnV0aXZlbHksIHtq dWtwYX0gY29sbGVjdGl2ZWx5IG9yIChqYSkgZGlzdHJpYnV0aXZlbHksIHtjaXRrYX0gbm9uLWNv bGxlY3RpdmVseSBhbmQgKGplKSBkaXN0cmlidXRpdmVseS4gQmVjYXVzZSBpdCBpbmNsdWRlcyBz ZWxicmkge2ptYWppfSB0byBiZSBzYXRpc2ZpZWQgbm9uLWRpc3RyaWJ1dGl2ZWx5LCB0aGUgc3Vt dGkgY2Fubm90IGJlIHJlcGxhY2VkIGJ5IG5lZ2F0aW9uIG9mIGV4aXN0ZW5jZSBvZiBib3VuZCBz aW5ndWxhciB2YXJpYWJsZSB7bmFrdSBzdSdvIGRhfT17bm8gZGF9LiBNb3Jlb3ZlciwgYmVjYXVz ZSBpdCBpbmNsdWRlcyBzZWxicmkge2NpdGthfSB0byBiZSBzYXRpc2ZpZWQgbm9uLWNvbGxlY3Rp dmVseSwge2xvfSBvZiB0aGUgc3VtdGkgY2Fubm90IGJlIHJlcGxhY2VkIGJ5IHtsb2l9PXtsbyBn dW5tYSBiZSBsb30uCgoKCkZvciBtYWtpbmcgc3VjaCBhIHByb3Bvc2l0aW9uIG1lYW5pbmdmdWws IGl0IGlzIGVzc2VudGlhbCB0byBnaXZlIGFuIGV4cHJlc3Npb24ge2xvIG5vIGJyb2RhfSBhIG1l YW5pbmcgb2YgbmVnYXRpb24gb2YgZXhpc3RlbmNlIG9mIHBsdXJhbCB2YXJpYWJsZS4KCkZvciB0 aGlzIHB1cnBvc2UsIEkgc3VnZ2VzdCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb24gdmFsaWQgaW4g dGhlIGNhc2UgdGhhdCBQQT0wIGZvciB7bG8gUEEgYnJvZGF9LgoKO1Vub2ZmaWNpYWwgZGVmaW5p dGlvbiBvZiB7bG8gbm8gYnJvZGF9Onx8CgpsbyBubyBicm9kYSB+aHN+fH5oc34gPWNhJ2Ugfmhz fnx+aHN+IG5ha3Ugc3Unb2kgZGEgcG9pIGtlJ2EgYnJvZGEKCnx8CgoKCu+8iElmIGl0IHdlcmUg ZGVmaW5lZCBhcyB7bmFrdSBsbyBicm9kYX0sIHRoZSBuZWdhdGlvbiB3b3VsZCBoYXZlIHNwYW5u ZWQgdGhlIHdob2xlIHByb3Bvc2l0aW9uLCBhbmQgaXQgd291bGQgbm90IGhhdmUgaW1wbGllZCBx dWFudGlmaWNhdGlvbi4gSSBhYmFuZG9uZWQgdGhlcmVmb3JlIHN1Y2ggYSBkZWZpbml0aW9uLikK CgoKISEhISEjIENhbm5vdCBxdWFudGlmeSBtYXRlcmlhbCBub3VuIG9yIHNvbWV0aGluZwoKQXhp b20gMSBvZiAoKHwjSW5uZXJfcXVhbnRpZmljYXRpb258U2VjdGlvbiAzLjEpKSBleGNsdWRlcyBz dW10aSB0aGF0IGlzIG5laXRoZXIgYW4gaW5kaXZpZHVhbCBub3IgaW5kaXZpZHVhbHMgZnJvbSBl eHByZXNzaW9ucyB7KHN1J28pIE4gbWVpfSBhbmQge2xvIE4gYnJvZGF9LgoKCgpDYW4gd2UgdXNl IHtwaVBBfSBmb3Igc3VtdGkgdGhhdCBpcyBuZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2 aWR1YWxzLCB0aGVuPyBOby4KCigoQlBGSyBTZWN0aW9uOiBnYWRyaXxBY3R1YWxseSwgcGlQQSBp cyBkZWZpbmVkIG9ubHkgZm9yIG91dGVyIHF1YW50aWZpY2F0aW9uLikpCgp8fAoKcGlQQSAnJ3N1 bXRpJycgfmhzfnx+aHN+IGxvIHBpUEEgc2knZSBiZSBwYSBtZSAnJ3N1bXRpJycKCnx8CgpBcyB3 ZSBjYW4gc2VlIGluIHRoZSBkZWZpbml0aW9uLCB0aGUgYm9keSBvZiBvdXRlciBxdWFudGlmaWNh dGlvbiBieSB7cGlQQX0gaXMgcGx1cmFsIGNvbnN0YW50IHtsbyBwaVBBIHNpJ2V9LCB3aGljaCBp cyBub3QgYSBib3VuZCBzaW5ndWxhciB2YXJpYWJsZS4gSG93ZXZlciwgeDIgb2Yge3BpUEEgc2kn ZX0gaXMge3BhIG1lICcnc3VtdGknJ30sIHRvIHdoaWNoICgoQlBGSyBTZWN0aW9uOiBnYWRyaXx0 aGUgZGVmaW5pdGlvbiBvZiBQQSBicm9kYSkpIGlzIGFwcGxpZWQ6Cgp8fAoKUEEgYnJvZGEgfmhz fnx+aHN+IFBBIGRhIHBvaSBicm9kYSAKCnx8CgpBcyBhIHJlc3VsdCwge3BpUEEgJydzdW10aScn fSBpcyBkZWZpbmVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhbiBpbmRpdmlkdWFsIHRoYXQgc2F0aXNm aWVzIHgxIG9mIHttZSAnJ3N1bXRpJyd9LiBUaGF0IGlzIHRvIHNheSwgd2hhdCBpcyBuZWl0aGVy IGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzIGlzIGV4Y2x1ZGVkIGFsc28gZnJvbSBhbiBl eHByZXNzaW9uIG9mIG91dGVyIHF1YW50aWZpY2F0aW9uIHdpdGgge3BpUEF9LgoKCgpXaGF0IHdv dWxkIGJlIGlmIHtwaVBBfSB3ZXJlIGRlZmluZWQgYWxzbyBmb3IgaW5uZXIgcXVhbnRpZmljYXRp b24/CgpJbiB0aGF0IGNhc2UsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbiB3b3VsZCBiZSBkZXNp cmFibGUgdG8gY29uZm9ybSB0aGUgZGVmaW5pdGlvbiBvZiB7cGlQQX0gb2Ygb3V0ZXIgcXVhbnRp ZmljYXRpb246Cgo7IFVub2ZmaWNpYWwgZGVmaW5pdGlvbiBvZiB7cGlQQX0gb2YgaW5uZXIgcXVh bnRpZmljYXRpb246fHwKCmxvIHBpUEEgYnJvZGEgfmhzfnx+aHN+ID1jYSdlIH5oc358fmhzfiB6 bydlIG5vaSBrZSdhIHBpUEEgc2knZSBiZSBsbyBwYSBicm9kYQoKfHwKClRoaXMgZGVmaW5pdGlv biBvZiB7cGlQQX0gb2YgaW5uZXIgcXVhbnRpZmljYXRpb24gc3RpbGwgZXhjbHVkZXMgd2hhdCBp cyBuZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzIHVubGVzcyB7bG8gcGEgYnJv ZGF9IGlzIGRlZmluZWQgaW4gYW5vdGhlciB3YXkgc28gdGhhdCBpdCBjYW4gYmUgd2hhdCBpcyBu ZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzLgoKCgpXaHkgZG9uJ3Qgd2UgdXNl IHtQQSBzaSdlfSB0byBleHByZXNzIHF1YW50aWZpY2F0aW9uIG9mIHdoYXQgaXMgbmVpdGhlciBh biBpbmRpdmlkdWFsIG5vciBpbmRpdmlkdWFscz8gCgpJdCBpcyBwb3NzaWJsZSwgYnV0ICgoQlBG SyBTZWN0aW9uOiBOdW1lcmljIHNlbGJyaXxCUEZLJ3MgY3VycmVudCBkZWZpbml0aW9uIG9mIHtz aSdlfSkpIGRlcGVuZHMgb24ge3BhZ2J1fToKCnx8Cgp4MSBudW1iZXIgc2knZSB4MiB+aHN+fH5o c34geDEgcGFnYnUgeDIgZ2knZSBrbGFuaSBsaSBudW1iZXIgbG8gc2UgZ3JhZHUgYmUgeDIKCnx8 CgpJZiB3ZSBpbnRlcnByZXQge3BhZ2J1fSBzbyB0aGF0IHgxIGlzIG5vdCBsYXJnZXIgdGhhbiB4 MiAoYW5kIHRoaXMgaXMgb3JkaW5hcnkgaW50ZXJwcmV0YXRpb24pLCBbaHR0cHM6Ly9ncm91cHMu Z29vZ2xlLmNvbS9kL21zZy9sb2piYW4vUkF0RTdZay1kcXcvblViWml3bUIyTTBKfHtzaSdlfSBp cyB2ZXJ5IGluY29udmVuaWVudCBiZWNhdXNlIHRoZSB1bml0IHNob3VsZCBiZSBjaGFuZ2VkIGV2 ZXJ5IHRpbWUgY291bnRpbmcgdXAuXSBJZiB7c2knZX0gd2VyZSBkZWZpbmVkIHNvIHRoYXQgUEEg b2Yge1BBIHNpJ2V9IGNvdWxkIGJlIGxhcmdlciB0aGFuIDEsIHtzaSdlfSB3b3VsZCBoYXZlIGJl ZW4gcHJhZ21hdGljIGZvciBxdWFudGlmaWNhdGlvbiBvZiB3aGF0IGlzIG5laXRoZXIgYW4gaW5k aXZpZHVhbCBub3IgaW5kaXZpZHVhbHMuCgoKCkJlc2lkZXMgdGhvc2UgY29uc2lkZXJhdGlvbnMs IGlmIHdlIGFiYW5kb24gQXhpb20gMSBvZiAoKHwjSW5uZXJfcXVhbnRpZmljYXRpb258U2VjdGlv biAzLjEpKSwgRGVmaW5pdGlvbnMgKEQxKSAoRDIpIChEMykgY2FuIGJlIGFwcGxpZWQgdG8gd2hh dCBpcyBuZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzLgoKSW4gdGhpcyBjYXNl LCBhIHNwZWFrZXIgc2hvdWxkIHNlbGVjdCBzb21lIHBsdXJhbCBjb25zdGFudHMge2tvJ2EsIGtv J2UsIC4uLn0sIGFuZCBkZWNpZGUgdGhhdCB7W1trbydhL2tvJ2UvLi4uXSBzdSdvIHBhIG1laX07 IHRoZSBzZWxlY3Rpb24gbXVzdCBiZSBkb25lIGF0dGVudGl2ZWx5IHNvIHRoYXQgcmVmZXJlbnRz IG9mIHBsdXJhbCBjb25zdGFudHMgdGhhdCBhcmUge3BhIG1laX0gZG8gbm90IG92ZXJsYXAgd2l0 aCBlYWNoIG90aGVyLgoKVGhvc2UgcHJlcGFyYXRpb25zIG9mIHtrbydhLCBrbydlLCAuLi59IGFu ZCAoRDIpIGltcGx5IG9ubHkKCnx8CgpnYW5haSBbW2tvJ2Eva28nZS8uLi5dIHBhIG1laSAKCmdp IHJvJ29pIGRlIHBvaSBtZSBbW2tvJ2Eva28nZS8uLi5dIHpvJ3UgZGUgbWUgW1trbydhL2tvJ2Uv Li4uXQoKfHwKClVuZGVyIHRoZXNlIGNvbmRpdGlvbnMsIHRoZXJlIGlzIG5vIG5lZWQgdGhhdCB3 aGF0IGlzIHgxIG9mIHtwYSBtZWl9IGlzIGFuIGluZGl2aWR1YWwuCgoKCldoZW4gd2UgdXNlIERl ZmluaXRpb25zIChEMSkgKEQyKSAoRDMpIHdpdGhvdXQgdXNpbmcgQXhpb20gMSBvZiAoKHwjSW5u ZXJfcXVhbnRpZmljYXRpb258U2VjdGlvbiAzLjEpKSwgYSBjb25kaXRpb24ge2dpJ2Ugc3UnbyBw YSBtZWl9IG11c3QgYmUgYWRkZWQgdG8ge2RlfSBvZiAoRDEp77yIV2hlbiBBeGlvbSAxIGlzIHVz ZWQsIHJlZmVyZW50cyBpbiB0aGUgZG9tYWluIG9mIHZhcmlhYmxlIHtkZX0gc2F0aXNmaWVzIHRo aXMgY29uZGl0aW9uIGF1dG9tYXRpY2FsbHkpLiAKCjtVbm9mZmljaWFsIGRlZmluaXRpb25zIHVu ZGVyIHRoZSBjb25kaXRpb24gdGhhdCBBeGlvbSAxIGlzIGFiYW5kb25lZDp8fAoKKEQxJykga28n YSBzdSdvIE4gbWVpIH5oc358fmhzfiA9Y2EnZSB+aHN+fH5oc34gc3Unb2kgZGEgcG9pIG1lIGtv J2Ega3UnbyBzdSdvaSBkZSBwb2kgbWUga28nYSBnaSdlIHN1J28gcGEgbWVpIHpvJ3UgZ2UgZGEg c3UnbyBOLTEgbWVpIGdpbmFpIGRlIG1lIGRhCgooRDIpIGtvJ2EgTiBtZWkgfmhzfnx+aHN+ID1j YSdlIH5oc358fmhzfiBrbydhIHN1J28gTiBtZWkgZ2knZSBuYWkgc3UnbyBOKzEgbWVpIAoKKEQz KSBsbyBQQSBicm9kYSB+aHN+fH5oc34gPWNhJ2Ugfmhzfnx+aHN+IHpvJ2Ugbm9pIGtlJ2EgUEEg bWVpIGdpJ2UgYnJvZGEKCnx8CgpVc2luZyB0aGVzZSBkZWZpbml0aW9ucywgaW5uZXIgcXVhbnRp ZmljYXRpb24gb2Ygd2hhdCBpcyBuZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxz IGJlY29tZXMgcG9zc2libGUuIE1vcmVvdmVyLCAiVW5vZmZpY2lhbCBkZWZpbml0aW9uIG9mIHtw aVBBfSBvZiBpbm5lciBxdWFudGlmaWNhdGlvbiIgZGlzY3Vzc2VkIGFib3ZlIGJlY29tZXMgYWJs ZSB0byBiZSBhcHBsaWVkIHRvIHdoYXQgaXMgbmVpdGhlciBhbiBpbmRpdmlkdWFsIG5vciBpbmRp dmlkdWFscy4KCgoKVGhlIGRpYWdyYW0gYmVsb3cgc2hvd3MgYSBwcm9jZWR1cmUgb2YgY291bnRp bmcgdXAgd2hhdCBpcyBuZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzIHJlcHJl c2VudGVkIHdpdGggYSBkaXJlY3RlZCBncmFwaC4gSW4gdGhpcyBkaWFncmFtLCBsb29wcyBzdWNo IGFzIHtYIG1lIFh9IGFyZSBvbWl0dGVkIGZvciBzaW1wbGljaXR5LCB0aG91Z2ggdGhleSBleGlz dC4gQW1vbmcgaW5maW5pdGUgbnVtYmVyIG9mIHZlcnRpY2VzIChwbHVyYWwgY29uc3RhbnRzKSwg dGhlIHZlcnRpY2VzIHRoYXQgYSBzcGVha2VyIHNlbGVjdGVkIGFzIHtzdSdvIHBhIG1laX0gYXJl IGNvbG9yZWQgcGluay4gQ291bnRpbmcgdXAgY29ycmVzcG9uZHMgdG8gc2VsZWN0aW5nIGEgdHJl ZSB0aGF0IGlzIGEgc3ViZ3JhcGggb2YgYSBkaXJlY3RlZCBncmFwaCBmb3JtZWQgd2l0aCB7bWV9 LCBmb3IgZXhhbXBsZSB0aGUgcGFydCBvZiBibHVlIGNvbG9yIGluIHRoZSBkaWFncmFtLgoKCgp7 aW1nIGZpbGVJZD0iOSIgdGh1bWI9InkiIHJlbD0iYm94W2ddIn0KCgoKISEhIyBPdXRlciBxdWFu dGlmaWNhdGlvbgoKKChCUEZLIFNlY3Rpb246IGdhZHJpfEJQRksgZGVmaW5lcyBvdXRlciBxdWFu dGlmaWNhdGlvbikpIGFzIGZvbGxvd3M6Cgp8fAoKUEEgJydzdW10aScnIH5oc358fmhzfiBQQSBk YSBwb2kga2UnYSBtZSAnJ3N1bXRpJycKClBBIGJyb2RhIH5oc358fmhzfiBQQSBkYSBwb2kgYnJv ZGEgCgpwaVBBICcnc3VtdGknJyB+aHN+fH5oc34gbG8gcGlQQSBzaSdlIGJlIHBhIG1lICcnc3Vt dGknJwoKfHwKCgoKT3V0ZXIgcXVhbnRpZmljYXRpb24gZXhjZXB0IHtwaVBBfSBmb3JtcyB7UEEg ZGF9LCB3aGljaCBpcyBvZmZpY2lhbGx5IGEgYm91bmQgc2luZ3VsYXIgdmFyaWFibGUuIEl0IGlt cGxpZXMgdGhhdCB0aGVzZSBhcmd1bWVudHMgc2F0aXNmeSBhIHByZWRpY2F0ZSBfX2Rpc3RyaWJ1 dGl2ZWx5X18uIEZvciBleGFtcGxlLCBpdCBpcyBtZWFuaW5nbGVzcyB0byB1c2Uge2NpIGxvIHBy ZW51fSBhcyB4MSBvZiB7am1haml9IChnYXRoZXIpLCBiZWNhdXNlIGl0IGlzIG5vdCB0aGUgY2Fz ZSB0aGF0IGVhY2ggb2YgdGhyZWUgcGVvcGxlIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlICJnYXRo ZXIiLgoKCgpIb3dldmVyLCBpZiB3ZSB1c2UgdW5vZmZpY2lhbCBwbHVyYWwgcXVhbnRpZmllcnMg e3JvJ29pfSBvciB7c3Unb2l9IGZvciBQQSwgb3V0ZXIgcXVhbnRpZmljYXRpb24gY2FuIGZvcm0g Ym91bmQgcGx1cmFsIHZhcmlhYmxlLiBGb3IgZXhhbXBsZSwKCl5zdSdvaSBwcmVudSBjdSBqbWFq aSB+aHN+IHRoZXJlIGFyZSBwZW9wbGUgd2hvIGdhdGhlci5eCgpUaGlzIHByb3Bvc2l0aW9uIGlz IGltcGxpZWQgYnkgYSBwcm9wb3NpdGlvbiBpbmNsdWRpbmcgcGx1cmFsIGNvbnN0YW50CgpebG8g cHJlbnUgY3Ugam1hamkgfmhzfiBQZW9wbGUgZ2F0aGVyLl4KCndpdGggdGhlIGxvZ2ljYWwgYXhp b20gaW4gKCh8I0FfbG9naWNhbF9heGlvbV9vbl9wbHVyYWxfY29uc3RhbnR8U2VjdGlvbiAyLjIu NikpLgoKCgp7UEEgbG8gYnJvZGF9IGRpZmZlcnMgZnJvbSB7UEEgYnJvZGF9IGluIGRvbWFpbiBv ZiByZWZlcmVudHMgb2YgYm91bmQgc2luZ3VsYXIgdmFyaWFibGUgdG8gYmUgY291bnRlZC4gVGhl IGRlZmluaXRpb25zIG9mIG91dGVyIHF1YW50aWZpY2F0aW9uIGFyZSBhcHBsaWVkIHRvIHRoZW0g YXMgZm9sbG93czoKCnx8CgpQQSBsbyBicm9kYSB+aHN+fH5oc34gUEEgZGEgcG9pIGtlJ2EgbWUg bG8gYnJvZGEgfmhzfnx+aHN+IFRoZSBkb21haW4gb2YgYm91bmQgc2luZ3VsYXIgdmFyaWFibGUg aXMgYSByZWZlcmVudCBvZiBwbHVyYWwgY29uc3RhbnQge2xvIGJyb2RhfSBpbiB0aGUgdW5pdmVy c2Ugb2YgZGlzY291cnNlLCBhbmQgY291bnRlZCB0byBiZSBQQQoKUEEgYnJvZGEgfmhzfnx+aHN+ IFBBIGRhIHBvaSBrZSdhIGJyb2RhIH5oc358fmhzfiBUaGUgZG9tYWluIG9mIGJvdW5kIHNpbmd1 bGFyIHZhcmlhYmxlIGlzIGFsbCB0aGF0IGFyZSB7YnJvZGF9IGluIHRoZSB1bml2ZXJzZSBvZiBk aXNjb3Vyc2UsIGFuZCBjb3VudGVkIHRvIGJlIFBBCgp8fAoKCgpeCgo7RXhhbXBsZSAxOiBybyBq bWl2ZSBiYSBtb3JzaSB+aHN+ICcnQWxsIGxpdmluZyB0aGluZ3Mgd2lsbCBkaWUuJycKCjtFeGFt cGxlIDI6IHJvIGxvIHByZW51IHRpIGtsYW1hIH5oc34gJydBbGwgdGhlIHBlb3BsZSBjb21lIGhl cmUuJydeCgpFeGFtcGxlIDEgbWVudGlvbnMgYWxsIHtqbWl2ZX0gaW4gdGhlIHVuaXZlcnNlIG9m IGRpc2NvdXJzZS4gSW4gdGhlIHVuaXZlcnNlIG9mIGRpc2NvdXJzZSBvZiBFeGFtcGxlIDIsIGl0 IGlzIHBvc3NpYmxlIHRvIGludGVycHJldCB0aGF0IHRoZXJlIGFyZSB7cHJlbnV9IG90aGVyIHRo YW4gdGhlIHJlZmVyZW50IG9mIHRoZSBwbHVyYWwgY29uc3RhbnQge2xvIHByZW51fS4KCgoKVGhl IG91dGVyIHF1YW50aWZpY2F0aW9uIGJ5IHtwaVBBfSBmb3JtcyBwbHVyYWwgY29uc3RhbnQge2xv IHBpUEEgc2knZX0uIEhvd2V2ZXIsIHgyIG9mIHtwaVBBIHNpJ2V9IGlzIGJvdW5kIHNpbmd1bGFy IHZhcmlhYmxlIHtwYSBtZSAnJ3N1bXRpJyd9LiB7cGl9IGluIHRoaXMgZGVmaW5pdGlvbiBtZWFu cyAibm90IGxhcmdlciB0aGFuIDEiOyBwcmFjdGljYWxseSwge2ZpJ3V9IG9yIHNvbWV0aGluZyBj YW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHtwaX0KCgoKISEhISMgQ29tYmluYXRpb24gb2Ygb3V0ZXIg YW5kIGlubmVyIHF1YW50aWZpY2F0aW9ucwoKVGhlIGRlZmluaXRpb25zIG9mIGlubmVyIGFuZCBv dXRlciBxdWFudGlmaWNhdGlvbiBpbXBseSB0aGUgZm9sbG93aW5nIGludGVycHJldGF0aW9uczoK Cnx8CgpNIGxvIFtbTl0gYnJvZGEgfmhzfnx+aHN+IE0gKHdoaWNoIHNhdGlzZmllcyBhIHByZWRp Y2F0ZSBkaXN0cmlidXRpdmVseSkgb2Yge2xvIGJyb2RhfSBbW3RoYXQgYXJlIE5dCgpNIGxvaSBb W05dIGJyb2RhIH5oc358fmhzfiBNICh3aGljaCBzYXRpc2ZpZXMgYSBwcmVkaWNhdGUgZGlzdHJp YnV0aXZlbHkpIG9mIHtsbyBndW5tYX0gdGhhdCBjb25zaXN0cyBvZiB7bG8gYnJvZGF9IFtbdGhh dCBhcmUgTl0KCk0gbG8naSBbW05dIGJyb2RhIH5oc358fmhzfiBNICh3aGljaCBzYXRpc2ZpZXMg YSBwcmVkaWNhdGUgZGlzdHJpYnV0aXZlbHkpIG9mIHtsbyBzZWxjbWl9IHRoYXQgY29uc2lzdHMg b2Yge2xvIGJyb2RhfSBbW3RoYXQgYXJlIE5dCgpwaSBNIGxvIFtbTl0gYnJvZGEgfmhzfnx+aHN+ IFF1YW50aXR5IHtwaSBNIHNpJ2V9IG9mIGEgcGFydCBvZiBvbmUgb2Yge2xvIGJyb2RhfSBbW3Ro YXQgYXJlIE5dCgpwaSBNIGxvaSBbW05dIGJyb2RhIH5oc358fmhzfiBRdWFudGl0eSB7cGkgTSBz aSdlfSBvZiBhIHBhcnQgb2Ygb25lIG9mIHtsbyBndW5tYX0gdGhhdCBjb25zaXN0cyBvZiB7bG8g YnJvZGF9IFtbdGhhdCBhcmUgTl0KCnBpIE0gbG8naSBbW05dIGJyb2RhIH5oc358fmhzfiBRdWFu dGl0eSB7cGkgTSBzaSdlfSBvZiBhIHBhcnQgKHN1YnNldCkgb2Ygb25lIG9mIHtsbyBzZWxjbWl9 IHRoYXQgY29uc2lzdHMgb2Yge2xvIGJyb2RhfSBbW3RoYXQgYXJlIE5dCgp8fAoKCgpBbW9uZyB0 aGVtLCB7TSBsbyBbW05dIGJyb2RhfSBhbmQge3BpIE0gbG9pIFtbTl0gYnJvZGF9IGNhbiBleHBy ZXNzIHNvbWUgb2YgcGx1cmFsIG51bWJlciBvZiB0aGluZ3MuCgpeCgo7RXhhbXBsZSAxOiByZSBs byBbW2NpXSBtbGF0dSBtaSB2aXNrYSB+aHN+ICcnVHdvIFtbb2YgdGhyZWVdIGNhdHMgc2VlIG1l LicnCgo7RXhhbXBsZSAyOiByZSBmaSd1IGNpIGxvaSBbW3ZlaSBjaSBwaSdpIG55ICh2ZSdvKV0g bWxhdHUgbWkgdmlza2EgfmhzfiAnJ1R3byB0aGlyZCBvZiBbWzNuXSBjYXRzIHNlZSBtZS4nJ14K CgoKe3JlIGxvIFtbY2ldIG1sYXR1fSBvZiBFeGFtcGxlIDEgcmVmZXJzIHRvIHR3byBjYXRzIGFt b25nIFtbdGhyZWVdIGNhdHMgdGhhdCBhcmUgcmVmZXJlbnQgb2Yge2xvIFtbY2ldIG1sYXR1fS4K CklmIHRoZSBpbm5lciBxdWFudGlmaWVyIHtjaX0gaXMgbm90IHNhaWQsIGl0IGlzIHVuY2xlYXIg aG93IG1hbnkgY2F0cyBhcmUgcmVmZXJyZWQgdG8gYnkge2xvIG1sYXR1fTsgaW4gYW55IGNhc2Ug e3JlIGxvIG1sYXR1fSByZWZlcnMgdG8gdHdvIG9mIHRoZW0uCgoKCkluIEV4YW1wbGUgMiwgdGhl IGFyZ3VtZW50IGlzIGZvcm1lZCBieSB7bG9pfSwgYW5kIHRoZSByZWZlcmVudCBpcyBhY3R1YWxs eSB7bG8gZ3VubWF9LiBFeHBhbmRpbmcgRXhhbXBsZSAyIGFjY29yZGluZyB0byB0aGUgZGVmaW5p dGlvbnMgb2Yge2xvaX0gYW5kIHtwaVBBICcnc3VtdGknJ30sCgpeCgo7RXhhbXBsZSAyLTE6IGxv IHJlIGZpJ3UgY2kgc2knZSBiZSBwYSBtZSBsbyBndW5tYSBiZSBsbyBbW3ZlaSBjaSBwaSdpIG55 ICh2ZSdvKV0gbWxhdHUgbWkgdmlza2FeCgpUaGF0IGlzIHRvIHNheSwge3JlIGZpJ3UgY2kgbG9p Li4ufSByZWZlcnMgdG8gdHdvIHRoaXJkIG9mIGFuIGluZGl2aWR1YWwge3BhIG1lIGxvIGd1bm1h Li4ufS4gVGhpcyB7bG8gZ3VubWF9IGNvbnNpc3RzIG9mIHt2ZWkgY2kgcGknaSBueSAodmUnbyl9 IGNhdHMuIAoKSWYgdGhlIGlubmVyIHF1YW50aWZpZXIgaXMgbm90IHNhaWQsIGl0IGlzIHVuY2xl YXIgaG93IG1hbnkgY2F0cyBjb25zdGl0dXRlIHtsbyBndW5tYX0gdGhhdCBpcyB7bG9pIG1sYXR1 fTsgaW4gYW55IGNhc2Uge3JlIGZpJ3UgY2kgbG9pIG1sYXR1fSByZWZlcnMgdG8gdHdvIHRoaXJk IG9mIHtsbyBndW5tYX0uIEhvd2V2ZXIsIAoKXnJlIGZpJ3UgY2kgbG9pIG1sYXR1IG1pIHZpc2th XgoKaXMgbWVhbmluZ2Z1bCBvbmx5IHdoZW4ge2xvaSBtbGF0dX0gY29uc2lzdHMgb2YgM24gY2F0 cywgYmVjYXVzZSBpdCBpcyBub3Qgb3JkaW5hcnkgdG8gaW50ZXJwcmV0IHRoYXQgYSBmcmFnbWVu dCBvZiBhIGNhdCBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSB7dmlza2F9LgoKQWNjb3JkaW5nIHRv IEJQRksncyBkZWZpbml0aW9uLCB7bG9pfSBjYW5ub3QgZm9ybSBhIHBsdXJhbCBjb25zdGFudCB0 aGF0IHNhdGlzZmllcyBhIHByZWRpY2F0ZSBub24tY29sbGVjdGl2ZWx5LiBJZiB5b3Ugd2FudCB0 byBtZWFuICJjYXRzIHNlZSBtZSBub24tY29sbGVjdGl2ZWx5IiwgYXZvaWQge2xvaX0sIG9yIHVz ZSB7bHUnYX0sIHdoaWNoIHdpbGwgYmUgZGlzY3Vzc2VkIGluICgofCNSZWxhdGlvbl9iZXR3ZWVu X2x1X2FfbHVfb19sdV9pX2FuZF9nYWRyaXxTZWN0aW9uIDMuMykpOgoKXmx1J2EgcmUgZmkndSBj aSBsb2kgbWxhdHUgbWkgdmlza2FeCgoKCiEhISEjIEJvdW5kIHZhcmlhYmxlcyBhbmQgY29uc3Rh bnRzIGluIGEgc3RhdGVtZW50CgpXaGVuIGJvdGggYm91bmQgdmFyaWFibGVzIGFuZCBjb25zdGFu dHMgYXBwZWFyIGluIGEgc3RhdGVtZW50LCB0aGUgY29uc3RhbnRzIGRvIG5vdCBuZWNlc3Nhcmls eSBzcGFuIG92ZXIgYWxsIGJvdW5kIHZhcmlhYmxlcy4gQWx0aG91Z2ggdGhleSBhcmUgY2FsbGVk ICJjb25zdGFudHMiLCBpdCBpcyBub3QgZ2VuZXJhbGx5IGRldGVybWluZWQgd2hldGhlciB0aGV5 IHJlZmVyIHRvIGNvbW1vbiByZWZlcmVudHMgZm9yIGFsbCByZWZlcmVudHMgaW4gZG9tYWlucyBv ZiB2YXJpYWJsZXMsIG9yIHRoZXkgcmVmZXIgdG8gZGlmZmVyZW50IHJlZmVyZW50cyBkZXBlbmRl bnQgb24gcmVmZXJlbnRzIGluIGRvbWFpbnMgb2YgdmFyaWFibGVzLiBUaGUgcmVhc29uIGZvbGxv d3MgYmVsb3cgKFtodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2QvbXNnL2xvamJhbi9SQXRFN1lr LWRxdy9BQkRmT2Z1b3pXRUp8RGlzY3Vzc2lvbl0pLgoKCgpXaGVuIHNvbWUgc3VtdGkgb2YgdGVy YnJpIGluIGEgc3RhdGVtZW50IGFyZSBvbWl0dGVkLCBpdCBpcyBjb25zaWRlcmVkIHRoYXQgdGhl cmUgYXJlIGltcGxpY2l0IHt6bydlfSBpbiB0aG9zZSBwbGFjZXMgKFtodHRwOi8vZGFnLmdpdGh1 Yi5pby9jbGwvNy83L3xDTEwgNy43XSkuCgpGb3IgZXhhbXBsZSwKCl5ybyBtbGF0dSBjdSBqYmVu YX5wcH4KCn4vcHB+ICAnJ0FsbCBjYXRzIGFyZS93aWxsIGJlIGJvcm4uJydeCgpzZWVtcyB0byBi ZSB0cnVlIGZyb20gYSBzdGFuZGFyZCBwb2ludCBvZiB2aWV3LiBBY2NvcmRpbmcgdG8gZGVmaW5p dGlvbiBvZiB0ZXJicmkgb2Yge2piZW5hfSwgaXQgaXMgY29uc2lkZXJlZCB0aGF0IHRocmVlIHN1 bXRpIGFyZSBvbWl0dGVkLCBhbmQgdGhpcyBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIG1lYW5pbmcg YXMKCl5ybyBtbGF0dSBjdSBqYmVuYSB6bydlIHpvJ2Ugem8nZV4KCmluIHdoaWNoIHt6bydlfSBh cmUgZXhwbGljaXQuIAoKVW5sZXNzIGFsbCBjYXRzIGluIHRoaXMgdW5pdmVyc2Ugb2YgZGlzY291 cnNlIGFyZS93aWxsIGJlIGJvcm4gdG8gY29tbW9uIHBhcmVudHMgYXQgdGhlIHNhbWUgdGltZSBh dCB0aGUgc2FtZSBwbGFjZSwgdGhlc2Uge3pvJ2V9IGNhbm5vdCBiZSBjb25zaWRlcmVkIGFzIGNv bW1vbiBjb25zdGFudHMgZm9yIGFsbCByZWZlcmVudHMgaW4gYSBkb21haW4gb2Yge3JvIG1sYXR1 fS4gSW4gb3JkZXIgdG8gbWFrZSBzdWNoIGFuIGV4cHJlc3Npb24gbGlrZSB7cm8gbWxhdHUgY3Ug amJlbmF9IGhhdmUgaW50ZW5kZWQgbWVhbmluZywgImNvbnN0YW50cyIgb2YgTG9qYmFuIGNhbiBi ZSBkZXBlbmRlbnQgb24gcmVmZXJlbnRzIGluIGRvbWFpbnMgb2YgYm91bmQgdmFyaWFibGVzLgoK CgoiQ29uc3RhbnRzIiBpbiB0aGlzIG1lYW5pbmcgY29ycmVzcG9uZCB0byBTa29sZW0gZnVuY3Rp b25zIGluIFNrb2xlbSBub3JtYWwgZm9ybXMgb2YgcHJlZGljYXRlIGxvZ2ljLiBUaGUgdGFibGUg YmVsb3cgc2hvd3MgY29tcGFyaXNvbiBvZiBpbnRlcnByZXRhdGlvbnMgYmV0d2VlbiBwcmVkaWNh dGUgbG9naWMsIHhvcmxvIG9uIHdoaWNoIHRoaXMgY29tbWVudGFyeSBkZXBlbmRzIGFuZCBpbXBs aWNpdCBxdWFudGlmaWVyIChbaHR0cDovL2RhZy5naXRodWIuaW8vY2xsLzYvMS98Q0xMIHZlci4x LjAgQ2hhcHRlciA2XSkgd2hpY2ggd2FzIGFib2xpc2hlZC4gVGhlIGV4cHJlc3Npb25zIHRoYXQg aGF2ZSB0aGUgc2FtZSB0cnV0aCB2YWx1ZSBhcmUgYWxpZ25lZCBpbiB0aGUgc2FtZSBjb2x1bW4u IFVwcGVyIGNhc2UgWSByZXByZXNlbnRzIGEgcGx1cmFsIHZhcmlhYmxlLiBUaGUgcm93IG9mIHpv J2UreG9ybG8gc2hvd3MgdW5vZmZpY2lhbCBzdWdnZXN0aW9uIG9mIGludGVycHJldGF0aW9uLiBJ biB0aGUgZ3JheSBwYXJ0IGluIHRoZSByb3cgb2YgUHJlbmV4IG5vcm1hbCwgdW5vZmZpY2lhbCBl eHByZXNzaW9ucyB3aXRoIGFuIGV4cGVyaW1lbnRhbCBjbWF2byB7c3Unb2l9IGFyZSBzaG93bi4g KENsaWNrIG9uIHRoZSB0YWJsZSB0byBlbmxhcmdlLikKCntpbWcgZmlsZUlkPSIxMiIgdGh1bWI9 InkiIGxpbms9ImRpc3BsYXkxMSIgcmVsPSJib3hbZ10ifQoKCgohISEjIFJlbGF0aW9uIGJldHdl ZW4gbHUnYSwgbHUnbywgbHUnaSBhbmQgZ2FkcmkKCigoQlBGSyBTZWN0aW9uOiBJbmRpcmVjdCBS ZWZlcmVyc3xCUEZLIGRlZmluZXMpKSB7bHUnYX0sIHtsdSdvfSwge2x1J2l9IG9mIExBaEUgYXMg Zm9sbG93czoKCnx8CgpsdSdhICcnc3VtdGknJyB+aHN+fH5oc34gbG8gbWUgJydzdW10aScnIH5o c358fmhzfiBsbyBjbWltYSBiZSAnJ3N1bXRpJycgW1tub2kgc2VsY21pXQoKbHUnbyAnJ3N1bXRp Jycgfmhzfnx+aHN+IGxvaSBtZSAnJ3N1bXRpJycKCmx1J2kgJydzdW10aScnIH5oc358fmhzfiBs bydpIG1lICcnc3VtdGknJwoKfHwKCkhvd2V2ZXIsIGd1ZXNzaW5nIGZyb20gdGhlIEVuZ2xpc2gg ZGVmaW5pdGlvbnMgb24gdGhlIHNhbWUgcGFnZSwgdGhlIGRlZmluaXRpb24gb2Yge2x1J2F9IGlz IHVuc2F0aXNmYWN0b3J5LCBhbmQgdGhhdCBvZiB7bHUnb30gaGFzIHNvbWUgcHJvYmxlbS4KCgoK e2x1J2F9IGV4dHJhY3RzIHgyIG9mIHtzZWxjbWl9IGZyb20gc3VtdGkgdGhhdCBpcyB7bG8gc2Vs Y21pfSwgYW5kIHgyIG9mIHtndW5tYX0gZnJvbSBzdW10aSB0aGF0IGlzIHtsbyBndW5tYX0uIE1v cmVvdmVyLCB7bHUnYX0gbWFrZXMgZXhwbGljaXQgdGhhdCB0aGUgc3VtdGkgc2F0aXNmaWVzIGEg cHJlZGljYXRlIGRpc3RyaWJ1dGl2ZWx5IGFuZCBub24tY29sbGVjdGl2ZWx5LiBPbiB0aGUgb3Ro ZXIgaGFuZCwgYWNjb3JkaW5nIHRvIHRoZSBkZWZpbml0aW9uIG9mIHtsb30sIHtsbyBtZSAnJ3N1 bXRpJyd9IGRvZXMgbm90IGltcGx5ICJkaXN0cmlidXRpdmVseSBhbmQgbm9uLWNvbGxlY3RpdmVs eSIuCgoKCntsdSdvfSBtYWtlcyBleHBsaWNpdCB0aGF0IHRoZSBzdW10aSBzYXRpc2ZpZXMgYSBw cmVkaWNhdGUgbm9uLWRpc3RyaWJ1dGl2ZWx5IGFuZCBjb2xsZWN0aXZlbHkuIE9uIHRoZSBvdGhl ciBoYW5kLCBhY2NvcmRpbmcgdG8gdGhlIGRlZmluaXRpb24gb2Yge2xvaX0sIHtsb2kgbWUgJydz dW10aScnfSBzYXRpc2ZpZXMgYSBwcmVkaWNhdGUgY29sbGVjdGl2ZWx5LCBidXQgc3RpbGwgdW5j bGVhciBpZiBpdCBkb2VzIG5vbi1kaXN0cmlidXRpdmVseS4gRm9yIGNvbnNpc3RlbmN5LCBpdCB3 b3VsZCBiZSBiZXR0ZXIgdG8gYWRkICJ7bG9pIGJyb2RhfSBpbXBsaWVzIHRoYXQgcmVmZXJlbnQg b2YgeDEgb2YgYnJvZGEgY29sbGVjdGl2ZWx5IGFuZCBub24tZGlzdHJpYnV0aXZlbHkgc2F0aXNm aWVzIGEgcHJlZGljYXRlIiB0byB0aGUgZGVmaW5pdGlvbiBvZiB7bG9pfS4KCgoKQXMgYSBjb25j bHVzaW9uIG9mIHRoaXMgc2VjdGlvbiwgSSBzdWdnZXN0IHRvIHJlLWRlZmluZSB7bHUnYX0gYXMg Zm9sbG93czoKCjsgVW5vZmZpY2lhbCBkZWZpbml0aW9uIG9mIHtsdSdhfTp8fAoKbHUnYSAnJ3N1 bXRpJycgfmhzfnx+aHN+IGxvIGNtaW1hIGJlICcnc3VtdGknJyBub2kgc2VsY21pIGt1IG9uYWkg bG8gc2UgZ3VubWEgYmUgJydzdW10aScnIG5vaSBndW5tYSBrdSBvbmFpIGxvIG1lICcnc3VtdGkn JyBrdSB+cHB+Cgp+L3BwfiB+aHN+IHZ1J28gbm9pIHN1J28gZGEgem8ndSBkYSBtZSBrZSdhIGdp J2Ugbm8nYQoKfHwKCkluIHtub2l9IGNsYXVzZSBhZnRlciB7dnUnb30sIGl0IGlzIG1hZGUgZXhw bGljaXQgdGhhdCB0aGUgcmVmZXJlbnQgb2Yge2x1J2EgJydzdW10aScnfSBkaXN0cmlidXRpdmVs eSBzYXRpc2ZpZXMgdGhlIHNlbnRlbmNlIHRoYXQgaW5jbHVkZXMgdGhpcyBzdW10aS4KCgoKISEh IyBSZWxhdGlvbiBiZXR3ZWVuIGpvJ3UsIGpvaSwgY2UgYW5kIGdhZHJpCgooKEJQRksgU2VjdGlv bjogTm9uLWxvZ2ljYWwgQ29ubmVjdGl2ZXN8QWNjb3JkaW5nIHRvIEJQRksgU2VjdGlvbikpIHtq byd1fSwge2pvaX0gYW5kIHtjZX0gb2Ygc2VsbWEnbyBKT0kgYXJlIGRlZmluZWQgYXMgZm9sbG93 czp8fAoKX19YX18gam8ndSBfX1lfXyB+aHN+fH5oc34gbG8gc3V6bWVpIG5vaSBfX1hfXyAuZSBf X1lfXyAuZSBubyBkcmF0YSBiZSBfX1hfXyAuZSBfX1lfXyBjdSBtZSBrZSdhCgpfX1hfXyBqb2kg X19ZX18gfmhzfnx+aHN+IGxvIGd1bm1hIGJlIF9fWF9fIC5lIF9fWV9fIC5lIG5vIGRyYXRhIGJl IF9fWF9fIC5lIF9fWV9fCgpfX1hfXyBjZSBfX1lfXyB+aHN+fH5oc34gbG8gc2UgY21pbWEgYmUg X19YX18gLmUgX19ZX18gLmUgbm8gZHJhdGEgYmUgX19YX18gLmUgX19ZX18KCnx8CgpUaGV5IGNv cnJlc3BvbmQgcmVzcGVjdGl2ZWx5IHRvIHtsb30sIHtsb2l9LCB7bG8naX0gb2YgZ2FkcmkuIFRo ZXkgY29ubmVjdCB0d28gc3VtdGk6IHtqbyd1fSBmb3JtcyBhIHBsdXJhbCBjb25zdGFudCwge2pv aX0gYSBub24tZGlzdHJpYnV0aXZlIHBsdXJhbCBjb25zdGFudCwge2NlfSBhIHBsdXJhbCBjb25z dGFudCB0aGF0IHJlZmVycyB0byBzZXQocykgdGhhdCBjb25zaXN0KHMpIG9mIHRoZSBzdW10aSB0 aGF0IHtjZX0gY29ubmVjdHMuIEluIHRoZSBFbmdsaXNoIGRlZmluaXRpb24gb2Yge2pvaX0gb2Yg QlBGSywgIm5vbi1kaXN0cmlidXRpdmUiIGlzIG1lbnRpb25lZC4gVGhpcyBmYWN0IGFsc28gc3Vw cG9ydHMgdGhlIHN1Z2dlc3Rpb24gaW4gKCh8I1JlbGF0aW9uX2JldHdlZW5fbHVfYV9sdV9vX2x1 X2lfYW5kX2dhZHJpfFNlY3Rpb24gMy4zKSkgdG8gYWRkICJ7bG9pIGJyb2RhfSBpbXBsaWVzIHRo YXQgcmVmZXJlbnQgb2YgeDEgb2YgYnJvZGEgY29sbGVjdGl2ZWx5IGFuZCBub24tZGlzdHJpYnV0 aXZlbHkgc2F0aXNmaWVzIGEgcHJlZGljYXRlIiB0byB0aGUgZGVmaW5pdGlvbiBvZiB7bG9pfS4K CgoKRXZlbiBpZiBfX1hfXyBvciBfX1lfXyBhcmUgYm91bmQgdmFyaWFibGVzLCB0aGVzZSBjb25u ZWN0aXZlcyBmb3JtIGNvbnN0YW50cy4gSW4gdGhpcyBjYXNlLCBpdCBpcyBub3QgZGV0ZXJtaW5l ZCB3aGV0aGVyIHRoZSBmb3JtZWQgY29uc3RhbnRzIGRlcGVuZCBvbiBfX1hfXyBhbmQgX19ZX18s IG9yIHRoZXkgYXJlIGNvbW1vbiB0byBhbGwgX19YX18gYW5kIF9fWV9fIGluIHRoZWlyIGRvbWFp bnMuIFNlZSAoKHwjQm91bmRfdmFyaWFibGVzX2FuZF9jb25zdGFudHNfaW5fYV9zdGF0ZW1lbnR8 U2VjdGlvbiAzLjIuMikpIGZvciBkZXRhaWwuCgoKCkJlY2F1c2UgdGhleSBhcmUgY21hdm8gaW4g c2VsbWEnbyBKT0ksIHRoZXkgY2FuIGNvbm5lY3Qgd2hhdCBhcmUgbm90IHN1bXRpLCBidXQgdGhl IG1lYW5pbmdzIGluIHRoaXMgdXNhZ2UgYXJlIG5vdCBvZmZpY2lhbGx5IGRlZmluZWQuIFRoZXkg Y2FuIGZvcm0gYWxzbyBmb3JldGhvdWdodCBjb25uZWN0aXZlIHtKT0kgZ2kgX19YX18gZ2kgX19Z X199LiBXaGVuIHRoZSBmb3JldGhvdWdodCBjb25uZWN0aXZlcyBhcmUgdXNlZCBmb3Igc3VtdGks IHRoZXkgZm9ybSB0aGUgc2FtZSBjb25zdGFudHMgYXMgdGhlIGFmdGVydGhvdWdodCB1c2FnZSBk ZWZpbmVkIGFib3ZlLgoKCgohISMgTm90ZXMKClRoaXMgc2VjdGlvbiBjb25zaXN0cyBvZiBub3Rl cyBvZiB0aGUgYXV0aG9yIGd1c2thbnQsIGFuZCBpdCBpcyBub3QgYXQgYWxsIGltcG9ydGFudCBm b3IgdW5kZXJzdGFuZGluZyBnYWRyaS4KCgoKISEhIyBBYm91dCBvbnRvbG9neQoKXigoQlBGSyBT ZWN0aW9uOiBnYWRyaXwnJ1Bvc2l0aXZlIGltcGFjdDogU29tZSB1c2FnZXMgdGhhdCBtYWtlIGxp dHRsZSBzZW5zZSB3aXRoIHtsb309e3N1J299IGJlY29tZSB2YWxpZGF0ZWQuJycpKSBhY2NvcmRp bmcgdG8gQlBGSy5eCgoKCntsb309e3N1J299IHdhcyBhYmFuZG9uZWQsIGJ1dCBiZWNhdXNlIG9m IHRoZSBmYWN0IHRoYXQge2xvIGJyb2RhfSBpcyBhIHBsdXJhbCBjb25zdGFudCwgYW5kIGJlY2F1 c2Ugb2YgYSBsb2dpY2FsIGF4aW9tIG9mIHBsdXJhbCBjb25zdGFudCBpbiAoKHwjQV9sb2dpY2Fs X2F4aW9tX29uX3BsdXJhbF9jb25zdGFudHxTZWN0aW9uIDIuMi42KSksIHtsbyBicm9kYSBjdSBi cm9kZX0gaW1wbGljaXRseSBpbXBsaWVzIHtzdSdvaSBkYSBicm9kZX0uCgoKCiEhISMgY2xheHUg eDIKCl4oKEJQRksgU2VjdGlvbjogZ2Fkcml8bGUgY21hbmEgX19sb19fIGNpZGphIGJhIGNsYXh1 KSl+cHB+Cgp+L3BwfiAgJydJbiB0aGUgbW91bnRhaW5zIHRoZXJlIGlzIG5vIGZvb2QuJyd+cHB+ Cgp+L3BwfigobGFwb2kgcGVseHUga3UnbyB0cmFqeW5vYmxpKSleCgoKCkV4cGFuZGluZyB7bG8g Y2lkamF9LCAKCl5sZSBjbWFuYSB6bydlIG5vaSBrZSdhIGNpZGphIGt1J28gYmEgY2xheHVeCgpB Y2NvcmRpbmcgdG8gKChCUEZLIFNlY3Rpb246IFN1Ym9yZGluYXRvcnN8dGhlIGRlZmluaXRpb24g b2Yge25vaX0pKSwgCgpebGUgY21hbmEgem8nZSB0byByaSB4aSByYXUgY2lkamEgdG9pIGJhIGNs YXh1XgoKVGhlIHBhcnQgYmV0d2VlbiB7dG99IGFuZCB7dG9pfSBpcyBhIHBhcmVudGhldGljYWwg ZXhwcmVzc2lvbi4gVGhlIG1haW4gcHJvcG9zaXRpb24gaXMgdGh1cwoKXmxlIGNtYW5hIHpvJ2Ug YmEgY2xheHVeCgp3aGVyZSB7em8nZX0gaXMgYSBwbHVyYWwgY29uc3RhbnQuIEFjY29yZGluZyB0 byB0aGUgbG9naWNhbCBheGlvbSBvZiBwbHVyYWwgY29uc3RhbnQgaW4gKCh8I0FfbG9naWNhbF9h eGlvbV9vbl9wbHVyYWxfY29uc3RhbnR8U2VjdGlvbiAyLjIuNikpLCBUaGlzIHByb3Bvc2l0aW9u IGltcGxpZXMgCgpec3Unb2kgZGEgem8ndSBsZSBjbWFuYSBkYSBiYSBjbGF4dV4KCndoaWNoIG1l YW5zIHRoYXQgdGhlcmUgaXMgYSByZWZlcmVudCBvZiAid2hhdCBpcyBsYWNrZWQgYnkgdGhlIG1v dW50YWluIiBpbiB0aGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLgoKVGhlIHN0cmFuZ2VuZXNzIGNv bWVzIGZyb20gdGhlIGZhY3QgdGhhdCB4MiBvZiB7Y2xheHV9IF9fYXBwYXJlbnRseV9fIG1lYW5z IG5vbi1leGlzdGVuY2UuIFdlIGNhbiBpbnRlcnByZXQgaXQgY29uc2lzdGVudGx5IHRoYXQge2Ns YXh1fSBtZWFucyBvbmx5IHRoYXQgdGhlIHJlZmVyZW50IG9mIHgyIGlzIG5vdCBwbGFjZWQgYXQg dGhlIHJlZmVyZW50IG9mIHgxLCBhbmQgaXQgc2F5cyBub3RoaW5nIGFib3V0IGV4aXN0ZW5jZSBp biB0aGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLiAKCgoKISEhIyB6bydlIGlzIGEgcGx1cmFsIGNv bnN0YW50CgpBc3N1bWluZyB0aGF0IHt6bydlfSBjYW4gYmUgYW55IG9mIGZyZWUgdmFyaWFibGUs IGJvdW5kIHBsdXJhbCB2YXJpYWJsZSBvciBwbHVyYWwgY29uc3RhbnQsIHRoZSBsYW5ndWFnZSB3 b3VsZCBiZSBtb3JlIHJlYXNvbmFibGUgZnJvbSBhIGxvZ2ljYWwgcG9pbnQgb2Ygdmlldy4KCkhv d2V2ZXIsIHRoaXMgaWRlYSB3YXMgY2xlYXJseSBkZW5pZWQgaW4gW2h0dHBzOi8vZ3JvdXBzLmdv b2dsZS5jb20vZC90b3BpYy9sb2piYW4vUkF0RTdZay1kcXcvZGlzY3Vzc2lvbnx0aGUgZGlzY3Vz c2lvbl0uIFRoYXQgaXMgdG8gc2F5LCB7em8nZX0gaXMgYWx3YXlzIGEgcGx1cmFsIGNvbnN0YW50 IGFjY29yZGluZyB0byB0aGUgb2ZmaWNpYWwgaW50ZXJwcmV0YXRpb24uCgpJIHdpbGwgZXhhbWlu ZSB0aGVzZSBjb25mbGljdGluZyBpZGVhcywgYW5kIHRyeSB0byBzb2x2ZSBzb21lIHByb2JsZW1z IGNhdXNlZCBieSB0aGUgb2ZmaWNpYWwgaW50ZXJwcmV0YXRpb24gdGhhdCB7em8nZX0gaXMgYSBw bHVyYWwgY29uc3RhbnQuCgoKCiEhISEjIElmIHpvJ2UgY291bGQgYmUgYSBib3VuZCBwbHVyYWwg dmFyaWFibGUKCkkgd2lsbCBsaXN0IHVwIGhlcmUgbWVyaXRzIGFuZCBkZW1lcml0cyBvZiBhc3N1 bWluZyB0aGF0IHt6bydlfSBpbiBubyBjb250ZXh0IGlzIGEgZnJlZSB2YXJpYWJsZSwgYW5kIHRo YXQgdGhlIGNvbnRleHQgZGV0ZXJtaW5lcyB0aGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLCBiYXNl ZCBvbiB3aGljaCB7em8nZX0gaXMgcmVnYXJkZWQgYXMgc3Vic3RpdHV0ZWQgZm9yIGJ5IGEgcGx1 cmFsIGNvbnN0YW50LCBvciBib3VuZCBieSBhIHBsdXJhbCBxdWFudGlmaWVyLgoKCgohISEhISMg TWVyaXRzCgpVbmRlciB0aGlzIGFzc3VtcHRpb24sIHRoZXJlIGlzIG5vIG5lZWQgdG8gZXhjbHVk ZSB0aGUgY2FzZSBQQT0wIG9mIHtsbyBQQSBicm9kYX0sIG9yIGdpdmUgaXQgYW4gdW5vZmZpY2lh bCBkZWZpbml0aW9uIGFzIGRpc2N1c3NlZCBpbiAoKHwjQ2Fubm90X3NheV96ZXJvfFNlY3Rpb24g My4xLjIuMSkpLiBJdCBpcyBiZWNhdXNlIGlmIHtsbyBQQSBicm9kYX0gaW4gbm8gY29udGV4dCBp cyBhIGZyZWUgdmFyaWFibGUsIHdlIGNhbiBpbnRlcnByZXQgaXQsIHdoZW4gYSBjb250ZXh0IGlz IGdpdmVuLCBhcyBzdWJzdGl0dXRlZCBmb3IgYnkgYSBwbHVyYWwgY29uc3RhbnQgb3IgYm91bmQg YnkgYSBwbHVyYWwgcXVhbnRpZmllciBsaWtlIHtzdSdvaSBkYX0gaW4gdGhlIGNhc2Ugb2YgUEE+ MDsgd2UgY2FuIGludGVycHJldCBpdCBhcyBib3VuZCBieSB7bmFrdSBzdSdvaSBkYX0gaW4gdGhl IGNhc2Ugb2YgUEE9MCBhcyB3ZWxsLgoKCgpUaGlzIGFzc3VtcHRpb24gbWFrZXMgdGhlIGludGVy cHJldGF0aW9uIGNsb3NlciB0byBuYXR1cmFsIGxhbmd1YWdlcyBub3Qgb25seSBpbiB0aGUgY2Fz ZSBQQT0wIGJ1dCBhbHNvIGluIHRoZSBjYXNlIFBBPjAuIEZvciBleGFtcGxlLCAKCl5sbyBjaSB4 YW50byBjdSB6aWxrYW5jdSBsaSBjaSBsbyB4YW50b14KClRoZSBsYXN0IHtsbyB4YW50b30gaXMg YSB1bml0IG9mIGNvdW50aW5nLiBJdCBpcyBuYXR1cmFsIHRvIGludGVycHJldCBpdCBhcyBhIGJv dW5kIHBsdXJhbCB2YXJpYWJsZSBxdWFudGlmaWVkIGJ5ICIxIiByYXRoZXIgdGhhbiBhIHBsdXJh bCBjb25zdGFudCwgd2hpY2ggc2hvdWxkIHJlZmVyIHRvIHNvbWV0aGluZy4gSWYgd2UgaW50ZXJw cmV0IGl0IGFzIGEgYm91bmQgcGx1cmFsIHZhcmlhYmxlLCB3ZSBzaG91bGQgY29uc2lkZXIgdGhl IHJlbGF0aXZlIG9yZGVyIHdpdGggdGhlIG90aGVyIGJvdW5kIHZhcmlhYmxlcyBhbmQge25ha3V9 LiBXZSBjYW4gaGFuZGxlIHRoZSBvcmRlciBmcmVlbHkgYnkgcHV0dGluZyB0aGUgYXJndW1lbnRz IGluIHByZW5leC4KCgoKTW9yZW92ZXIsIHRoaXMgYXNzdW1wdGlvbiBlbWJvZGllcyB0aGUgcHJv cGVydHkgb2YgbmF0dXJhbCBsYW5ndWFnZXMgdGhhdCB0aGUgdHJ1dGggdmFsdWUgb2YgYSBwcm9w b3NpdGlvbiBpbiBubyBjb250ZXh0IGlzIGdlbmVyYWxseSBpbmRlZmluaXRlLiBCeSBpbnRlcnBy ZXRpbmcgdGhhdCB7em8nZX0gaW4gbm8gY29udGV4dCBpcyBhIGZyZWUgdmFyaWFibGUsIHdoaWNo IHdpbGwgYmUgc3Vic3RpdHV0ZWQgZm9yIGJ5IGEgcGx1cmFsIGNvbnN0YW50IG9yIGJvdW5kIGJ5 IGEgcGx1cmFsIHF1YW50aWZpZXIgd2hlbiBhIGNvbnRleHQgaXMgZ2l2ZW4sIG5hdHVyYWwgaW50 ZXJwcmV0YXRpb24gb2YgTG9qYmFuIHNlbnRlbmNlIGlzIHBvc3NpYmxlIHdpdGhvdXQgbG9zaW5n IGxvZ2ljYWwgYXNwZWN0cyBhbmQgc3RydWN0dXJhbCBiZWF1dHkuCgoKCiEhISEhIyBEZW1lcml0 cwoKQmVjYXVzZSB7em8nZX0gY2FuIGJlIGEgZnJlZSB2YXJpYWJsZSwgYSBib3VuZCBwbHVyYWwg dmFyaWFibGUgb3IgYSBwbHVyYWwgY29uc3RhbnQgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LCBh IHNpbmdsZSBicmlkaSBkb2VzIG5vdCBsZXQgbGlzdGVuZXJzIGRldGVybWluZSB3aGljaCBvZiB0 aGVtIGlzIHRoZSBjdXJyZW50IHt6bydlfSwgb3IgdGhlIHRydXRoIHZhbHVlIG9mIHRoZSBwcm9w b3NpdGlvbi4KCkhvd2V2ZXIsIHN1Y2ggYW4gYXNwZWN0IHRoYXQgdGhlIHRydXRoIHZhbHVlIG9m IGEgcHJvcG9zaXRpb24gZ2VuZXJhbGx5IGRlcGVuZHMgb24gdGhlIGNvbnRleHQgaXMgYSBjb21t b24gcHJvcGVydHkgdG8gYWxsIG5hdHVyYWwgbGFuZ3VhZ2VzLgoKCgpPbiB0aGUgb3RoZXIgaGFu ZCwgZXZlbiBpZiB3ZSB0YWtlIHRoZSBvZmZpY2lhbCBpbnRlcnByZXRhdGlvbiB0aGF0IHt6bydl fSBpcyBhbHdheXMgYSBwbHVyYWwgY29uc3RhbnQsIGxpc3RlbmVycyBhcmUgb25seSBpbmZvcm1l ZCBieSB7em8nZX0gdGhhdCBhIGNlcnRhaW4gdW5pdmVyc2Ugb2YgZGlzY291cnNlIGlzIGdpdmVu LiBXaXRoIG5vIGNvbnRleHQsIHRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgd2hhdCBpcyB0 aGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLiBUaGUgdHJ1dGggdmFsdWUgb2YgYSBwcm9wb3NpdGlv biBpbiBubyBjb250ZXh0IGlzIGluZGVmaW5pdGUgZXZlbiB3aXRoIHRoZSBvZmZpY2lhbCBpbnRl cnByZXRhdGlvbi4KCgoKISEhISMgUHJvYmxlbXMgY2F1c2VkIGJ5IHRoZSBmYWN0IHRoYXQgem8n ZSBpcyBhIHBsdXJhbCBjb25zdGFudCBhbmQgdGhlIGNvdW50ZXItbWVhc3VyZXMKClRoZSBvZmZp Y2lhbCBpbnRlcnByZXRhdGlvbiB0aGF0IHt6bydlfSBpcyBhIHBsdXJhbCBjb25zdGFudCBjYXVz ZXMgdGhlIGZvbGxvd2luZyBwcm9ibGVtcy4KCgoKISEhISEjIENhbm5vdCBleHByZXNzIHBsdXJh bCBxdWFudGlmaWNhdGlvbiBvZiBub24tZXhpc3RlbmNlCgpSZWFzb25hYmxlIGludGVycHJldGF0 aW9uIG9mIHtsbyBubyBicm9kYX0gaXMgb2ZmaWNpYWxseSBleGNsdWRlZCBmcm9tIExvamJhbi4g VGhhdCBpcyB0byBzYXksIExvamJhbiBjYW5ub3Qgb2ZmaWNpYWxseSBkZWFsIHdpdGggdGhlIGV4 cHJlc3Npb24gInRoZXJlIGlzIG5vdCB3aGF0IGlzIHN1YnN0aXR1dGVkIGZvciB7ZGF9IiBmb3Ig cGx1cmFsIHZhcmlhYmxlICh7bmFrdSBzdSdvaSBkYX0pLCB3aGljaCBpcyBuYXR1cmFsbHkgZGVh bHQgd2l0aCBieSBwbHVyYWwgcXVhbnRpZmljYXRpb24uIEluIG9yZGVyIHRvIGV4cHJlc3Mge2xv IG5vIGJyb2RhfSB3aXRoIHJlYXNvbmFibGUgaW50ZXJwcmV0YXRpb24sIHdlIG5lZWQgYW4gdW5v ZmZpY2lhbCBpbnRlcnByZXRhdGlvbiBsaWtlICgofCNDYW5ub3Rfc2F5X3plcm98U2VjdGlvbiAz LjEuMi4xKSkuCgoKCiEhISEhIyBDYW5ub3QgZXhwcmVzcyBib3VuZCBwbHVyYWwgdmFyaWFibGUs IHdoaWNoIGRvZXMgbm90IHNwZWNpZnkgYSByZWZlcmVudAoKQmVjYXVzZSB0aGUgb2ZmaWNpYWwg aW50ZXJwcmV0YXRpb24gZG9lcyBub3QgYWxsb3cge2xvIFBBIGJyb2RhfSB0byBiZSBhIGJvdW5k IHBsdXJhbCB2YXJpYWJsZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQsIGFuIGFyZ3VtZW50IHRo YXQgc2hvdWxkIHJlZmVyIHRvIG5vdGhpbmcsIGEgdW5pdCBvZiBjb3VudGluZyBmb3IgZXhhbXBs ZSwgc2hvdWxkIGJlIGludGVycHJldGVkIGFzIGEgcGx1cmFsIGNvbnN0YW50LCB3aGljaCByZWZl cnMgdG8gc29tZXRoaW5nLiBGb3IgZXhhbXBsZSAKCl5sbyBjaSB4YW50byBjdSB6aWxrYW5jdSBs aSBjaSBsbyB4YW50b14KCmZvciB3aGljaCB3ZSBhcmUgY29tcGVsbGVkIHRvIGludGVycHJldCB0 aGF0IHRoZXJlIGlzIHRoZSAiRWxlcGhhbnQgZGVzIEFyY2hpdmVzIiBpbiB0aGUgdW5pdmVyc2Ug b2YgZGlzY291cnNlLCBqdXN0IGxpa2UgdGhlICJNw6h0cmUgZGVzIEFyY2hpdmVzIiAoYWx0aG91 Z2ggaXQgaGFzIGFscmVhZHkgZmluaXNoZWQgaXRzIHJvbGUpLCBpbiBvcmRlciB0byB1c2Uge2xv IHhhbnRvfSBhcyBhIHVuaXQgaW4gYSBwcm9wb3NpdGlvbi4KCgoKISEhISEjIENhbm5vdCBleHBy ZXNzIGVsZW1lbnRhcnkgcGFydGljbGVzIHdpdGggbG8KCkFzIGxvbmcgYXMge2xvIGJyb2RhfSBp cyBpbnRlcnByZXRlZCBhcyBhIHBsdXJhbCBjb25zdGFudCwgdGhlIGZvbGxvd2luZyBMb2piYW4g c2VudGVuY2UgaXMgbWVhbmluZ2xlc3M6CgoKCl5sbyBndXNrYSd1IGN1IGdhdSBqbWFqaSBzZXBp J28gbG8gbGVuam8gZ2knZSBwYWdyZSBsbyBmZW5yYX5wcH4KCn4vcHB+JydQaG90b25zIGFyZSBj b25kZW5zZWQgYnkgbGVuc2VzLCBhbmQgcGFzcyB0aHJvdWdoIHNsaXRzLicnXgoKCgpBY3R1YWxs eSwgcGhvdG9ucyBhcmUgaW5kaXZpZHVhbHMsIGFuZCB3ZSBjYW4gY291bnQgdGhlbSwgYnV0IHdl IGNhbm5vdCBkaXN0aW5ndWlzaCBlYWNoIG9mIHRoZW06IHdlIGNhbm5vdCByZWZlciB0byBhIHNw ZWNpZmljIHBob3Rvbi4gUXVhbnRpZmljYXRpb24gaXMgaW5kZWVkIHN1aXRhYmxlIGZvciBhcmd1 bWVudHMgdGhhdCByZXByZXNlbnQgcGFydGljbGVzIGxpa2UgcGhvdG9ucy4gSG93ZXZlciwgTG9q YmFuIG9mZmljaWFsbHkgZG9lcyBub3QgaGF2ZSBhIHBsdXJhbCBxdWFudGlmaWVyLCBhbmQgY2Fu bm90IGV4cHJlc3MgcXVhbnRpZmljYXRpb24gb2YgIHN1bXRpIHRoYXQgc2F0aXNmaWVzIHNlbGJy aSBib3RoIGNvbGxlY3RpdmVseSBhbmQgZGlzdHJpYnV0aXZlbHkuIE1vcmVvdmVyLCBiZWNhdXNl IHtsbyBicm9kYX0gaXMgb2ZmaWNpYWxseSBhbHdheXMgYSBwbHVyYWwgY29uc3RhbnQsIHRoZXJl IGlzIG5vIHJvb20gdG8gaW50ZXJwcmV0IHtsbyBndXNrYSd1fSBhcyBhIGJvdW5kIHBsdXJhbCB2 YXJpYWJsZS4gSW4gb3JkZXIgdG8gc29sdmUgdGhlIHByb2JsZW0sIHdlIHNob3VsZCB1c2UgYW4g dW5vZmZpY2lhbCBwbHVyYWwgcXVhbnRpZmllciB7c3Unb2l9IHN1Z2dlc3RlZCBieSAoKHhvcnhl c3xsYSB4b3J4ZXMpKS4KCgoKXnN1J29pIGRhIHBvaSBrZSdhIGd1c2thJ3UgY3UgZ2F1IGptYWpp IHNlcGknbyBsbyBsZW5qbyBnaSdlIHBhZ3JlIGxvIGZlbnJhXgoKCgohISEhISMgSG93IHRvIGlu dGVycHJldCBhIHByZXZhaWxpbmcgdmlldwoKVGhlIGZvbGxvd2luZyBleGFtcGxlIGlzIGdpdmVu IG9uICgoQlBGSyBTZWN0aW9uOiBnYWRyaXxCUEZLJ3MgZ2FkcmkgcGFnZSkpOgoKCgpebG8gcGEg cGl4cmEgY3Ugc2UgdmFtamkgbG8ga2knbyB2YWxzaX5wcH4KCn4vcHB+JydPbmUgcGljdHVyZSBp cyB3b3J0aCBhIHRob3VzYW5kIHdvcmRzLicnIF4KCgoKRXZlbiBpbiBzdWNoIGEgc2VudGVuY2Ug dGhhdCBzZWVtcyBhIHByZXZhaWxpbmcgdmlldywge2xvIHBhIHBpeHJhfSBhbmQge2xvIGtpJ28g dmFsc2l9IGFyZSBpbnRlcnByZXRlZCBhcyByZWZlcnJpbmcgdG8gc29tZXRoaW5nLiBXZSBzaG91 bGQgcHJlcGFyZSBzb21lIHJlZmVyZW50cyBvZiBzdW10aSBvZiBhIHByZXZhaWxpbmcgdmlldyBp biB0aGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLgoKCgpJbnR1aXRpb25hbGx5IHNwZWFraW5nLCB3 ZSBtYXkgdXNlIHtsbydlfSBpbnN0ZWFkIG9mIHtsb30sIGJ1dCB3ZSBjYW5ub3QgeWV0IGV4cGxh aW4ge2xvJ2V9IGZyb20gYSBsb2dpY2FsIHBvaW50IG9mIHZpZXcgYmVjYXVzZSAoKEJQRksgU2Vj dGlvbjogVHlwaWNhbHN8YWN0dWFsbHkgdGhlcmUgaXMgbm8gb2ZmaWNpYWwgY29uY2x1c2lvbiBh Ym91dCByZWxhdGlvbiBiZXR3ZWVuIHtsbydlfSBhbmQge2xvfSkpLgoKCgpBcyBhIG1ldGhvZCBv ZiBhdm9pZGluZyBtZW50aW9uIG9mIGEgcmVmZXJlbnQgaW4gYW4gZXhwcmVzc2lvbiBvZiBwcmV2 YWlsaW5nIHZpZXcsIHdlIG1heSBwdXQgdGhlIHdob2xlIHByb3Bvc2l0aW9uIGluIE5VIGNsYXVz ZS4gSW4gZmFjdCwgdHJ1dGggdmFsdWUgb2YgYSBwcm9wb3NpdGlvbiBpbiBOVSBjbGF1c2UgZG9l cyBub3QgaW5mbHVlbmNlIHRydXRoIHZhbHVlIG9mIHRoZSBvdXRlciBwcm9wb3NpdGlvbiAocmVm ZXJlbnRpYWxseSBvcGFxdWU7IHRoaXMgdG9waWMgaXMgcmVsYXRlZCB0byBbaHR0cDovL2RhZy5n aXRodWIuaW8vY2xsLzkvNy98Q0xMOS43XSkuIEluIG90aGVyIHdvcmRzLCB0aGUgdW5pdmVyc2Ug b2YgZGlzY291cnNlIG9mIGEgcHJvcG9zaXRpb24gaW4gTlUgY2xhdXNlIGlzIGRpZmZlcmVudCBm cm9tIHRoZSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2Ugb2YgYSBwcm9wb3NpdGlvbiBvdXQgb2YgTlUu CgpJZiB3ZSBhY2NlcHQgdGhpcyBtZXRob2QsIHRoZSBleGFtcGxlIGFib3ZlIHdpbGwgYmUgbW9k aWZpZWQsIHVzaW5nIHtzaSdvfSBmb3IgZXhhbXBsZSwgYXMgZm9sbG93czoKCgoKXnNpJ28gbG8g cGEgcGl4cmEgY3Ugc2UgdmFtamkgbG8ga2knbyB2YWxzaSB+cHB+Cgp+L3BwficnSXMgYW4gaWRl YSB0aGF0IG9uZSBwaWN0dXJlIGlzIHdvcnRoIGEgdGhvdXNhbmQgd29yZHMuJydeCgoKCndoZXJl IHgxIG9mIHtzaSdvfSBpcyBpbXBsaWNpdCB7em8nZX0sIHdoaWNoIGhhcyBhIHJlZmVyZW50IGlu IHRoZSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UuIEFzIGFuIGludGVycHJldGF0aW9uIG9mIGEgcHJl dmFpbGluZyB2aWV3LCBzdXBwb3NpbmcgYSByZWZlcmVudCBvZiB4MSBvZiB7c2knb30gaXMgbW9y ZSBuYXR1cmFsIHRoYW4gc3VwcG9zaW5nIGEgcmVmZXJlbnQgb2Yge2xvIHBhIHBpeHJhfSBvciB7 bG8ga2knbyB2YWxzaX0uCgooU3VjaCBhIGJyaWRpIHdpdGggbm8gdGVyYnJpIGlzIGNhbGxlZCAi b2JzZXJ2YXRpdmUiIGluICgoVGhlIENvbXBsZXRlIExvamJhbiBMYW5ndWFnZSkpLCBidXQgdGhp cyBpbnRlcnByZXRhdGlvbiBpcyBub3Qgc3VpdGFibGUgaGVyZSwgYmVjYXVzZSB0aGlzIGlzIG5v dCB0aGUgdXR0ZXJhbmNlIHRoYXQgaXMgYWx3YXlzIGNhdXNlZCBieSBhIHNwZWNpZmljIHN0aW11 bHVzLikKCgoKISEhISEjIEhvdyB0byBleHByZXNzIGZyZWUgdmFyaWFibGVzCgpBcyBhIGN1c3Rv bSwga28nVi9mbydWIHNlcmllcyBvZiBLT2hBNCBhcmUgdXNlZCBhcyBmcmVlIHZhcmlhYmxlcyBp biBkZWZpbml0aW9ucyBvZiB3b3JkcyBvciBzb21ldGhpbmcuIEhvd2V2ZXIsIHRoZXkgYXJlIGFj dHVhbGx5IHBsdXJhbCBjb25zdGFudHMuCgpJZiB3ZSBhYmFuZG9uIHRoaXMgY3VzdG9tLCB7a2Un YX0gYW5kIHtjZSd1fSBhcmUgc3VpdGFibGUgZm9yIGV4cHJlc3Npb24gd2l0aCBmcmVlIHZhcmlh YmxlcyAob3BlbiBzZW50ZW5jZSksIGJlY2F1c2UgdGhlIHRydXRoIHZhbHVlIG9mIGJyaWRpIGlu IHdoaWNoIHtrZSdhfSBvciB7Y2UndX0gaXMgdXNlZCBpcyBpbmRlZmluaXRlLiAKCkluIGEgYnJp ZGkgaW4gd2hpY2gge2tlJ2F9IGFwcGVhcnMgdHdvIHRpbWVzIG9yIG1vcmUsIHRoZXNlIHtrZSdh fXMgYXJlIHJlZ2FyZGVkIGFzIHJlcHJlc2VudGluZyBhbiBpZGVudGljYWwgc3VtdGk6CgpeZGEg cG9pIGtlJ2EgZ3kgeGx1cmEga2UnYSBjdSBwYW5jaSBsbyBrYSdlIHNlIGNpdGthfnBwfgoKfi9w cH5+LS1+ICgobG8gbnUgYmlueG8pKV4KCk9uIHRoZSBvdGhlciBoYW5kLCBpbiBhIGJyaWRpIGlu IHdoaWNoIHtjZSd1fSBhcHBlYXJzIHR3byB0aW1lcyBvciBtb3JlLCB0aGVzZSB7Y2UndX1zIGFy ZSBub3QgbmVjZXNzYXJpbHkgcmVnYXJkZWQgYXMgcmVwcmVzZW50aW5nIGFuIGlkZW50aWNhbCBz dW10aToKCl5sbyBtYW10YSBqbyd1IGxvIG1lbnNpIGN1IHNpbXh1IGxvIGthIGNlJ3UgY2lzbWEg ZmEnYSBjZSd1fnBwfgoKfi9wcH5+LS1+ICgobG8gbnUgYmlueG8pKV4KCkNvbnNpZGVyaW5nIHRo ZXNlIHByb3BlcnRpZXMsIGluIG9yZGVyIHRvIGV4cHJlc3MgYW4gb3BlbiBzZW50ZW5jZSB3aXRo IGZyZWUgdmFyaWFibGVzIGluIG5vIGNvbnRleHQsIHtjZSd1fSBpcyBtb3JlIGNvbnZlbmllbnQg dGhhbiB7a2UnYX0gd2hpY2ggaGFzIHJlc3RyaWN0aW9uIG9mIGlkZW50aWNhbCBzdW10aS4KCl5j ZSd1IGNlJ3UgY2l0a2F+cHB+Cgp+L3BwficnQSBlYXRzIEIuJycgKE9wZW4gc2VudGVuY2UsIHRy dXRoIHZhbHVlIGluZGVmaW5pdGUuKV4KCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCldpa2luZXVyb3RpYyBtYWlsaW5nIGxpc3QKV2lraW5ldXJvdGlj QGxvamJhbi5vcmcKaHR0cDovL21haWwubG9qYmFuLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpa2lu ZXVyb3RpYwo=