[bug#81040] [PATCH] dist: introduce AM_OPTIONAL_AUTOMAKE for best-effort dist-XXX archives.
Karl Berry <[email protected]> Wed, 20 May 2026 11:41:52 -0600
| Newsgroups | gmane.comp.sysutils.automake.patches |
|---|---|
| Message-ID | <[email protected]> |
--sb1P4XLmoM Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Hi Kamila. When running make distcheck, the new am-optional-automake.sh test fails with: configure.ac:3: warning: macro 'AM_OPTIONAL_AUTOMAKE' not found in library I believe this happens at (sub)Test 3. It is not immediately evident to me why the macro is not being found. Before I spend more time on it .. can you reproduce? The new test succeeds under make check. Only fails under distcheck. Besides that: I don't think it's good to walk through all of PATH and create thousands upon thousands of symlinks (for each existing executable). It is aggravatingly slow, for one thing, makes the log verbosely long, for another, and I'm doubtful that it will work on all the varieties of Windows-based systems, for a third. Instead, how about setting the BZIP3 envvar to some random value that won't be found? (Could check with command to make sure.) Hmm, I guess I'm not sure if automake currently pays attention to that envvar, but if not, well, that's another patch. Admittedly it's not as perfect of a test, but this loop over every single program in PATH just seems awful to me. Sorry. In the alternative, if we really must create this gigantic symlink farm, then at least only do it once ... Finally: I have a few minor wording suggestions for NEWS and automake.texi, and shell+debugging suggestions for the test. Mainly to report the "Test <N>"'s to the output so it's easier to navigate. I'll just attach my tweaked versions for you to incorporate. Assuming you're ok with the changes. Thanks, Karl --sb1P4XLmoM Content-Type: application/octet-stream Content-Disposition: attachment; filename="NEWS" Content-Transfer-Encoding: base64 Rm9yIHBsYW5uZWQgaW5jb21wYXRpYmlsaXRpZXMgaW4gYSBwb3NzaWJsZSBmdXR1cmUgQXV0b21h a2UgMi4wIHJlbGVhc2UsCnBsZWFzZSBzZWUgTkVXUy1mdXR1cmUgYW5kIHN0YXJ0IGZvbGxvd2lu ZyB0aGUgYWR2aWNlIHRoZXJlIG5vdy4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KTmV3IGluIDEuMTgu MiAoPz8/Py0/Py0/Pyk6CgoqIE5ldyBmZWF0dXJlcyBhZGRlZAoKICAtIE5ldyBhdXRvY29uZiBt YWNybyBBTV9PUFRJT05BTF9BVVRPTUFLRS4gIEl0IHRha2VzIGEgbGlzdCBvZgogICAgYGRpc3Qt WFhYJyBvcHRpb24gbmFtZXMgKGRpc3QtYnppcDIsIGRpc3QtYnppcDMsIGRpc3QteHosCiAgICBk aXN0LWx6aXAsIGRpc3QtenN0ZCwgZGlzdC16aXAsIGRpc3Qtc2hhciwgZGlzdC10YXJaKTsgCiAg ICBgbWFrZSBkaXN0JyBidWlsZHMgZWFjaCBhcmNoaXZlIHdoZW4gaXRzIHRvb2wgaXMgYXZhaWxh YmxlCiAgICBhbmQgc2tpcHMgaXQgb3RoZXJ3aXNlLCB3aXRob3V0IG1ha2luZyBgbWFrZSBkaXN0 JyBmYWlsLiAKICAgIFRoaXMgaXMgZm9yIHN5c3RlbXMgdGhhdCBpbnRlbnRpb25hbGx5IGxhY2sg c29tZSBjb21wcmVzc2lvbiB0b29scy4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KTmV3IGluIDEuMTgu MSAoMjAyNS0wNi0yNSk6CgoqIEJ1Z3MgZml4ZWQKCiAgLSBVbmRvIGNoYW5nZSB0byBtZGF0ZS1z aDsgb25jZSBhZ2FpbiwgaXQgZG9lcyBub3QgbG9vayBhdAogICAgU09VUkNFX0RBVEVfRVBPQ0gu IFRoaXMgY2hhbmdlIHdhcyBhIG1pc3VuZGVyc3RhbmRpbmcgdGhhdCBjYXVzZXMKICAgIHByb2Js ZW1zLCBub3QgZml4ZXMsIGZvciByZXByb2R1Y2libGUgYnVpbGRzLgogICAgKGh0dHBzOi8vbGlz dHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYXV0b21ha2UvMjAyNS0wNi9tc2cwMDAyMS5odG1sKQoK ICAtIEltcHJvdmUgZGVidWdnYWJpbGl0eSBvZiBpbnN0YWxsY2hlY2sgZmFpbHVyZXMuIChidWcj Nzg4NTApCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ck5ldyBpbiAxLjE4ICgyMDI1LTA1LTI1KToKCiog TmV3IGZlYXR1cmVzIGFkZGVkCgogIC0gRGVmYXVsdCB0YXIgZm9ybWF0IGlzIG5vdyB1c3Rhciwg bWFpbmx5IHRvIHN1cHBvcnQgbG9uZ2VyIGZpbGVuYW1lczsKICAgIHRoZSB0YXItdjcgYW5kIG90 aGVyIGV4cGxpY2l0IG9wdGlvbnMgdG8gZm9yY2UgYSBwYXJ0aWN1bGFyIHRhcgogICAgZm9ybWF0 IGFyZSB1bmNoYW5nZWQgYW5kIHN0aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0LiAoYnVnIzc0ODQ3 KQoKICAtIFRoZSBtZGF0ZS1zaCBhdXhpbGlhcnkgc2NyaXB0IGdlbmVyYWxseSB1c2VkIHdpdGgg VGV4aW5mbyBub3cgdXNlcwogICAgU09VUkNFX0RBVEVfRVBPQ0gsIGlmIHNldCwgaW5zdGVhZCBv ZiB0aGUgc291cmNlIGZpbGUncyBtdGltZS4gKGJ1ZyM3NzgwNSkKCiAgLSBOZXcgb3B0aW9uIGRp c3QtYnppcDMgZm9yIGJ6aXAzIGNvbXByZXNzaW9uIG9mIGRpc3RyaWJ1dGlvbnMuIChidWcjNzM3 OTUpCgogIC0gTmV3IG9wdGlvbiAtLXN0ZGVyci1wcmVmaXggZm9yIHRhcC1kcml2ZXIuc2gsIHRv IHByZWZpeCBlYWNoIGxpbmUgb2YKICAgIHN0ZGVyciBmcm9tIGEgdGVzdCBzY3JpcHQgd2l0aCBh IGdpdmVuIHN0cmluZy4gKGJ1ZyM3MjUzNikKCiAgLSBTdXBwb3J0IGZvciBBbGdvbCA2OCBhZGRl ZCwgYmFzZWQgb24gdGhlIEdOVSBBbGdvbCA2OCBjb21waWxlci4gKGJ1ZyM3NTgwNykKCiogQnVn cyBmaXhlZAoKICAtIERvIG5vdCBtYWtlIFBlcmwgd2FybmluZ3MgZmF0YWwsIHBlciBQZXJsJ3Mg cmVjb21tZW5kYXRpb24uCiAgICAoaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9h dXRvbWFrZS8yMDI1LTAxL21zZzAwMDAzLmh0bWwpCgogIC0gQXZvaWQgUGVybCA1LjQxLjgrIHBy ZWNlZGVuY2Ugd2FybmluZyBmb3IgdXNlIG9mICEhLgogICAgKGh0dHBzOi8vbGlzdHMuZ251Lm9y Zy9hcmNoaXZlL2h0bWwvYXV0b21ha2UvMjAyNS0wMS9tc2cwMDAwMC5odG1sKQoKICAtIGEgUGVy bCBwYXRoIGNvbnRhaW5pbmcgd2hpdGVzcGFjZSBub3cgZW1pdHMgYSB3YXJuaW5nIGluc3RlYWQg b2YKICAgIGFuIGVycm9yLCBzbyAuL2NvbmZpZ3VyZSBQRVJMPScvdXNyL2Jpbi9lbnYgcGVybCcg Y2FuIHdvcmsuIChidWcjNzQ0NTMpCgogIC0gVGhlIHB5LWNvbXBpbGUgc2NyaXB0IG9uY2UgYWdh aW4gZG9lcyBub3RoaW5nIChzdWNjZXNzZnVsbHkpIGlmIHRoZQogICAgUFlUSE9OIGVudmlyb25t ZW50IHZhcmlhYmxlIGlzIHNldCB0byAiOiIsIG9yIGFueXRoaW5nIHRoYXQgaXNuJ3QgYQogICAg UHl0aG9uIGludGVycHJldGVyIChhY2NvcmRpbmcgdG8gJFBZVEhPTiAtVikuIEV4Y2VwdGlvbjog aWYgUFlUSE9OCiAgICBpcyBzZXQgdG8gImZhbHNlIiwgZG8gbm90aGluZyBidXQgZXhpdCB1bnN1 Y2Nlc3NmdWxseSwgYWxzbyB0byBtYXRjaAogICAgcHJldmlvdXMgYmVoYXZpb3IuIChidWcjNzQ0 MzQpCgogIC0gVGhlIG5vLWRpc3QtYnVpbHQtc291cmNlcyBBdXRvbWFrZSBvcHRpb24gbm93IG9w ZXJhdGVzIChob3BlZnVsbHkpIGFzCiAgICBpbnRlbmRlZCwgaS5lLiwgb21pdHMgdGhlIGRlcGVu ZGVuY3kgb24gJChCVUlMVF9TT1VSQ0VTKSBmb3IgdGhlCiAgICBkaXN0ZGlyIHRhcmdldC4gKGJ1 ZyM2OTkwOCkKCiAgLSBPbmx5IHdhcm4gYWJvdXQgaW5zdGFsbC5zaCBiZWluZyBmb3VuZCwgaW5z dGVhZCBvZiBpdCBiZWluZyBhIGZhdGFsCiAgICBlcnJvci4gKGJ1ZyMxOTk2NCkKCiAgLSBUaGUg Y29tcGlsZSBzY3JpcHQgaXMgbW9yZSByb2J1c3QgdG8gV2luZG93cyBjb25maWd1cmF0aW9uczsK ICAgIHNwZWNpZmljYWxseSwgYXZvaWRzIGRvdWJsZS1wYXRoIHRyYW5zbGF0aW9uIG9uIE1TWVMu IChidWcjNzU5MzkpCgogIC0gVGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2V0cyB0aGUgQ09ORklH X1NJVEUgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8KICAgIC9kZXYvbnVsbCwgdG8gYXZvaWQgdGhl IGxvY2FsIHN5c3RlbSdzIEF1dG9jb25mIHNpdGUgZGVmYXVsdHMgZnJvbQogICAgYnJlYWtpbmcg dGhlIHRlc3QgZW52aXJvbm1lbnQuIChidWcjNzY2MjIpCgogIC0gQU1fU0lMRU5UX1JVTEVTIG9u Y2UgYWdhaW4gYWx3YXlzIGVuZHMgd2l0aCBhIG5ld2xpbmUuIChidWcjNzIyNjcpCgogIC0gQU1f U0FOSVRZX0NIRUNLIG5vdyBvdXRwdXRzICJubyIgb24gZmFpbHVyZSwgc28gdGhhdCBhIGNvbXBs ZXRlIGxpbmUKICAgIGlzIHdyaXR0ZW4gdG8gc3Rkb3V0IGJlZm9yZSB0aGUgZXJyb3IgbWVzc2Fn ZSBpcyB3cml0dGVuIHRvIHN0ZGVyci4KICAgIChidWcjNzY0NDgpCgoqIE1pc2NlbGxhbmVvdXMg Y2hhbmdlcwoKICAtIE9ubHkgcmVxdWlyZSB0aGUgcHJlc2VuY2Ugb2YgYW4gQUJPVVQtTkxTIGZp bGUgYXQgdGhlICdnbml0cycKICAgIHN0cmljdG5lc3MgbGV2ZWwuCiAgICAoaHR0cHM6Ly9saXN0 cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9hdXRvbWFrZS8yMDI0LTEwL21zZzAwMDA2Lmh0bWwpCgp+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS4xNyAoMjAyNC0wNy0xMSk6CgoqIE5ldyBmZWF0 dXJlcyBhZGRlZAoKICAtIEFNX1BBVEhfUFlUSE9OIHdpbGwsIGFmdGVyIGNoZWNraW5nICJweXRo b24iLCBwcmVmZXIgYW55IFB5dGhvbiAzCiAgICB2ZXJzaW9uIChsYXRlc3QgdmVyc2lvbnMgY2hl Y2tlZCBmaXJzdCkgb3ZlciBhbnkgUHl0aG9uIDIKICAgIHZlcnNpb24uIElmIGEgc3BlY2lmaWMg dmVyc2lvbiBvZiBQeXRob24gMiBpcyBzdGlsbCBuZWVkZWQsIHRoZQogICAgJFBZVEhPTiB2YXJp YWJsZSBzaG91bGQgYmUgc2V0IGJlZm9yZWhhbmQuCgogIC0gQU1fUEFUSF9QWVRIT04gd2lsbCBh bHNvIHNlYXJjaCBmb3IgUHl0aG9uIHZlcnNpb25zIDMuMjAgdGhyb3VnaCAzLjEwLgogICAgSXQg cHJldmlvdXNseSBzZWFyY2hlZCBmb3IgMy45IHRocm91Z2ggMy4wLiAoYnVnIzUzNTMwKQoKICAt IFJBTkxJQiBtYXkgYmUgb3ZlcnJpZGRlbiBvbiBhIHBlci10YXJnZXQgYmFzaXMuCgogIC0gQU1f VEVYSTJGTEFHUyBtYXkgYmUgZGVmaW5lZCB0byBwYXNzIGV4dHJhIGZsYWdzIHRvIFRFWEkyRFZJ ICYgVEVYSTJQREYuCgogIC0gTmV3IG9wdGlvbiAicG9zaXgiIHRvIGVtaXQgdGhlIHNwZWNpYWwg dGFyZ2V0IC5QT1NJWCBmb3IgbWFrZS4KICAgIChidWcjNTUwMjUsIGJ1ZyM2Nzg5MSkKCiAgLSBT eXN0ZW1zIHdpdGggbm9uLVBPU0lYICJybSAtZiIgYmVoYXZpb3IgYXJlIG5vdyBzdXBwb3J0ZWQs IGFuZCB0aGUKICAgIHByaW9yIGludGVudCB0byBkcm9wIHN1cHBvcnQgZm9yIHRoZW0gaGFzIGJl ZW4gcmV2ZXJzZWQuCiAgICBUaGUgQUNDRVBUX0lORkVSSU9SX1JNX1BST0dSQU0gc2V0dGluZyBu byBsb25nZXIgZXhpc3RzLgogICAgKGJ1ZyMxMDgyOCkKCiAgLSBWYXJpYWJsZXMgdXNpbmcgZXNj YXBlZCBcIyB3aWxsIHRyaWdnZXIgcG9ydGFiaWxpdHkgd2FybmluZ3MsIGJ1dCBiZQogICAgcmV0 YWluZWQgd2hlbiBhcHBlbmRlZC4gIEdOVSBNYWtlICYgQlNEIE1ha2VzIGFyZSBrbm93biB0byBz dXBwb3J0IGl0LgogICAgKGJ1ZyM3NjEwKQoKICAtIEdOVSBNYWtlJ3MgZGVmYXVsdCBwYXR0ZXJu IHJ1bGVzIGZvciBSQ1MgYW5kIFNDQ1MgYXJlIGRpc2FibGVkLCBmb3IKICAgIHNwZWVkIGFuZCBk ZWJ1Z2dpbmcuICguU1VGRklYRVMgd2FzIGFscmVhZHkgY2xlYXJlZC4pIChidWcjNjQ3NDMpCgog IC0gRm9yIFRleGluZm8gZG9jdW1lbnRzLCBpZiBhIC50ZXhpLmluIGZpbGUgZXhpc3RzLCBidXQg bm8gLnRleGksIHRoZQogICAgLnRleGkuaW4gd2lsbCBiZSByZWFkLiBUZXhpbmZvIHNvdXJjZSBm aWxlcyBuZWVkIG5vdCBiZSBwcmVzZW50IGF0CiAgICBhbGwsIGFuZCBpZiBwcmVzZW50LCBuZWVk IG5vdCBjb250YWluIEBzZXRmaWxlbmFtZS4gVGhlbiB0aGUgZmlsZSBuYW1lCiAgICBhcyBnaXZl biBpbiB0aGUgTWFrZWZpbGUuYW0gd2lsbCBiZSB1c2VkLiAgSWYgQHNldGZpbGVuYW1lIGlzIHBy ZXNlbnQsCiAgICBpdCBzaG91bGQgYmUgdGhlIGJhc2VuYW1lIG9mIHRoZSBUZXhpbmZvIGZpbGUs IGV4dGVuZGVkIHdpdGggLmluZm8uCiAgICAoYnVnIzU0MDYzKQoKICAtIGFjbG9jYWwgaGFzIGEg bmV3IG9wdGlvbiAtLWFjbG9jYWwtcGF0aCB0byBvdmVycmlkZSAkQUNMT0NBTF9QQVRILgogICAg KGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYXV0b21ha2UtcGF0Y2hlcy8yMDIy LTAxL21zZzAwMDI5Lmh0bWwpCgogIC0gVGhlIG1pc3Npbmcgc2NyaXB0IGFsc28gc3VwcG9ydHMg YXV0b3JlY29uZiwgYXV0b2dlbiwgYW5kIHBlcmwuCiAgICAoaHR0cHM6Ly9saXN0cy5nbnUub3Jn L2FyY2hpdmUvaHRtbC9hdXRvbWFrZS1wYXRjaGVzLzIwMTUtMDgvbXNnMDAwMDAuaHRtbCkKCiAg LSB0ZXN0LXN1aXRlLmxvZyBub3cgY29udGFpbnMgYmFzaWMgc3lzdGVtIGluZm9ybWF0aW9uLCBh bmQgdGhlCiAgICBjb25zb2xlIG1lc3NhZ2UgYWJvdXQgYnVnIHJlcG9ydGluZyBvbiBmYWlsdXJl IGhhcyBhIGJpdCBtb3JlIGRldGFpbC4KICAgIChidWcjNjg3NDYsIGJ1ZyM3MTQyMSkKCiAgLSBX aGVuIHVzaW5nIHRoZSAoZGVmYXVsdCkgInBhcmFsbGVsIiB0ZXN0IGRyaXZlciwgeW91IGNhbiBu b3cgb21pdCB0aGUKICAgIG91dHB1dCBvZiBza2lwcGVkIHRlc3RzIGZyb20gdGVzdC1zdWl0ZS5s b2cgYnkgZGVmaW5pbmcgdGhlCiAgICB2YXJpYWJsZSBJR05PUkVfU0tJUFBFRF9MT0dTIHRvIGEg bm9uLWVtcHR5IHZhbHVlLiAoYnVnIzcxNDIyKQoKKiBCdWdzIGZpeGVkCgogIC0gR2VuZXJhdGVk IGZpbGUgdGltZXN0YW1wIGNoZWNrcyBoYW5kbGUgZmlsZXN5c3RlbXMgd2l0aCBzdWJzZWNvbmQK ICAgIHRpbWVzdGFtcCBncmFudWxhcml0eSBkeW5hbWljYWxseSwgZ3JlYXRseSBzcGVlZGluZyB1 cCB0aGUgc2xlZXAKICAgIGRvbmUgYnkgQUNfT1VUUFVUIHdoZW4gZ2VuZXJhdGluZyBjb25maWcu c3RhdHVzIChhbGwgcGFja2FnZXMpIGFuZAogICAgQXV0b21ha2UncyBtYWtlIGNoZWNrLgoKICAg IEhvd2V2ZXIsIHRoaXMgc3Vic2Vjb25kLW10aW1lIHN1cHBvcnQgcmVxdWlyZXMgYW4gYXV0b200 dGUgZnJvbQogICAgQXV0b2NvbmYgMi43MiBvciBsYXRlciAob3IgcmFuZG9tIHRlc3QgZmFpbHVy ZXMgYW5kIG90aGVyIHRpbWluZwogICAgcHJvYmxlbXMgbWF5IGVuc3VlKSwgYXMgd2VsbCBhcyBh IFBlcmwsIHNsZWVwIHByb2dyYW0sIG1ha2UgcHJvZ3JhbSwKICAgIGFuZCBmaWxlc3lzdGVtIHRo YXQgYWxsIHN1cHBvcnQgc3Vic2Vjb25kIHJlc29sdXRpb247IG90aGVyd2lzZSwgd2UKICAgIGZh bGwgYmFjayB0byBhIHR3by1zZWNvbmQgZ3JhbnVsYXJpdHksIG5vdCBldmVuIHRlc3RpbmcgdGhl IChjb21tb24pCiAgICAxcyBjYXNlIHNpbmNlIHRoYXQgd291bGQgaW5kdWNlIGEgMnMgZGVsYXkg Zm9yIGFsbCBjb25maWd1cmUgc2NyaXB0cwogICAgaW4gYWxsIHBhY2thZ2VzIG9uIGFsbCBzeXN0 ZW1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzdWJzZWNvbmQgbXRpbWVzLgoKICAgIFdoZW4gZXZlcnl0 aGluZyBpcyBzdXBwb3J0ZWQsIGEgbGluZSAiRmVhdHVyZXM6IHN1YnNlY29uZC1tdGltZSIgaXMK ICAgIG5vdyBwcmludGVkIGJ5IGF1dG9tYWtlIC0tdmVyc2lvbiBhbmQgYXV0b200dGUgLS12ZXJz aW9uLgoKICAgIFRvIG92ZXJyaWRlIHRoaXMgY2hlY2sgYW5kIGRlbGF5LCBlLmcuIHRvIHVzZSAx IHNlY29uZDoKICAgICAgYW1fY3ZfZmlsZXN5c3RlbV90aW1lc3RhbXBfcmVzb2x1dGlvbj0xCiAg ICAgIGV4cG9ydCBhbV9jdl9maWxlc3lzdGVtX3RpbWVzdGFtcF9yZXNvbHV0aW9uCgogICAgKGNv bW1pdCA3MjBhMTE1MzEsCiAgICAgIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwv YXV0b21ha2UtY29tbWl0LzIwMjItMDIvbXNnMDAwMDkuaHRtbAogICAgdGhlbiBidWcjNjA4MDgs IGJ1ZyM2NDc1NiwgYnVnIzY3NjcwLCBidWcjNjg4MDgsIGJ1ZyM3MTY1MiwKICAgIGhpc3Rvcnkg cmV2aWV3ZWQgaW4KICAgICAgaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9hdXRv bWFrZS8yMDI0LTA2L21zZzAwMDU0Lmh0bWwKICAgIGFuZCBtb3JlIGluZm8gaW4gc3Vycm91bmRp bmcgdGhyZWFkcy4pCgogIC0gVGhlIGRlZmF1bHQgdmFsdWUgb2YgJEFSRkxBR1MgaXMgbm93ICJj ciIgaW5zdGVhZCBvZiAiY3J1IiwgdG8gYmV0dGVyCiAgICBzdXBwb3J0IGRldGVybWluaXN0aWMg YnVpbGRzLiAoYnVnIzIwMDgyKQoKICAtIEF1dG9tYWtlJ3MgbWFrZSBkaXN0IG5vdyB1c2VzIC05 IGluc3RlYWQgb2YgLS1iZXN0IHdpdGggZ3ppcCwKICAgIGJlY2F1c2UgQWxwaW5lIGd6aXAgZG9l cyBub3Qgc3VwcG9ydCAtLWJlc3QuIEFsc28sIEdaSVBfRU5WIGlzIHVzZWQKICAgIG9ubHkgZm9y IGNvbXByZXNzaW9uLCBub3QgZGVjb21wcmVzc2lvbiwgYmVjYXVzZSBvZiB0aGUgc2FtZSBzeXN0 ZW0uCiAgICAoYnVnIzY4MTUxKQoKICAtIERlcGVuZGVuY3kgZmlsZXMgYXJlIG5vdyBlbXB0eSwg aW5zdGVhZCBvZiAiIyBkdW1teSIsIGZvciBzcGVlZC4KICAgIChodHRwczovL2xpc3RzLmdudS5v cmcvYXJjaGl2ZS9odG1sL2F1dG9tYWtlLzIwMjItMDUvbXNnMDAwMDYuaHRtbCkKCiAgLSBDb21w aWxpbmcgUHl0aG9uIG1vZHVsZXMgd2l0aCBQeXRob24gMy41KyB1c2VzIG11bHRpcGxlIG9wdGlt aXphdGlvbgogICAgbGV2ZWxzLiAoYnVnIzM4MDQzKQoKICAtIElmIHRoZSBQeXRob24gaW5zdGFs bGF0aW9uICJzY2hlbWUiIGlzIHNldCB0byBwb3NpeF9sb2NhbCAoRGViaWFuKSwKICAgIGl0IGlz IHJlc2V0IHRvIGVpdGhlciBkZWJfc3lzdGVtIChpZiB0aGUgcHJlZml4ID0gL3VzciksIG9yCiAg ICBwb3NpeF9wcmVmaXggKG90aGVyd2lzZSkuIChidWcjNTQ0MTIsIGJ1ZyM2NDgzNykKCiAgLSBB cyBhIHJlc3VsdCBvZiB0aGUgUHl0aG9uIHNjaGVtZSBjaGFuZ2UsIHRoZSBpbnN0YWxsYXRpb24g ZGlyZWN0b3J5CiAgICBmb3IgUHl0aG9uIGZpbGVzIGFnYWluIGRlZmF1bHRzIHRvICJzaXRlLXBh Y2thZ2VzIiB1bmRlciB0aGUgdXN1YWwKICAgIGluc3RhbGxhdGlvbiBwcmVmaXgsIGV2ZW4gb24g c3lzdGVtcyAoZ2VuZXJhbGx5IERlYmlhbi1iYXNlZCkgdGhhdAogICAgd291bGQgbm9ybWFsbHkg dXNlIHRoZSAiZGlzdC1wYWNrYWdlcyIgc3ViZGlyZWN0b3J5IHVuZGVyCiAgICAvdXNyL2xvY2Fs LgoKICAtIFdoZW4gY29tcGlsaW5nIEVtYWNzIExpc3AgZmlsZXMsIGVtYWNzIGlzIHJ1biB3aXRo IC0tbm8tc2l0ZS1maWxlIHRvCiAgICBkaXNhYmxlIHVzZXIgY29uZmlnIGZpbGVzIHRoYXQgbWln aHQgaGFuZyBvciBhY2Nlc3MgdGhlIHRlcm1pbmFsOwogICAgYW5kIC1RIGlzIG5vdCB1c2VkLCBz aW5jZSBpdHMgc3VwcG9ydCBhbmQgYmVoYXZpb3IgdmFyaWVzLiAoYnVnIzU4MTAyKQoKICAtIEVt YWNzIExpc3AgY29tcGlsYXRpb25zIHJlc3BlY3Qgc2lsZW50IG1ha2Ugb3V0cHV0LgoKICAtIEF1 dG9tYWtlIG5vIGxvbmdlciBpbmNvcnJlY3RseSB3YXJucyB0aGF0IHRoZSBQT1NJWCBtYWtlIHZh cmlhYmxlcwogICAgJCgqRCkgYW5kIHRoZSBsaWtlIGFyZSBub24tUE9TSVguIFVuZm9ydHVuYXRl bHksIHRoZSBtYWtlCiAgICBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggZG8gbm90IGNvcnJlY3RseSBp bXBsZW1lbnQgYWxsIHRoZSBQT1NJWAogICAgdmFyaWFibGVzIGFyZSBub3QgZGV0ZWN0ZWQsIGJ1 dCB0aGlzIHNlZW1zIHRvIGhhdmUgbGl0dGxlIGltcGFjdAogICAgaW4gcHJhY3RpY2UuIChidWcj OTU4NykKCiAgLSBQYXNzIGxpYnRvb2wgdGFncyBPQkpDIGFuZCBPQkpDWFggZm9yIHRoZSByZXNw ZWN0aXZlIGxhbmd1YWdlcy4KICAgIChidWcjNjc1MzkpCgogIC0gZGlzdGNsZWFuY2hlY2sgaWdu b3JlcyAic2lsbHkgcmVuYW1lIiBmaWxlcyAoLm5mcyogLnNtYiogLl9fYWZzKikKICAgIHRoYXQg Y2FuIHNob3cgdXAgb24gbmV0d29yayBmaWxlIHN5c3RlbXMuCiAgICAoaHR0cHM6Ly9saXN0cy5n bnUub3JnL2FyY2hpdmUvaHRtbC9hdXRvbWFrZS8yMDIyLTA5L21zZzAwMDAyLmh0bWwpCgogIC0g UGFzcyBhbnkgb3B0aW9ucyBnaXZlbiB0byBBTV9QUk9HX0xFWCBvbiB0byBBQ19QUk9HX0xFWC4K ICAgIChidWcjNjU2MDAsIGJ1ZyM2NTczMCkKCiAgLSBhY2xvY2FsOiByZWNvZ25pemUgOyBhcyBw YXRoIHNlcGFyYXRvciBvbiBPUy8yIGFuZCBXaW5kb3dzLiAoYnVnIzcxNTM0KQoKICAtIEhhc2gg aXRlcmF0aW9ucyB3aXRoIGV4dGVybmFsIGVmZmVjdHMgbm93IGNvbnNpc3RlbnRseSBzb3J0IGtl eXMuCiAgICAoYnVnIzI1NjI5LCBidWcjNDY3NDQpCgogIC0gdGVzdHM6IGF2b2lkIHNvbWUgZGVj bGFyYXRpb24gY29uZmxpY3RzIGZvciBsZXggZXQgYWwuIG9uIFN1bk9TLgogICAgKGJ1ZyMzNDE1 MSBhbmQgb3RoZXJzKQoKICAtIHRlc3RzOiBkZWNsYXJlIHl5cGFyc2UgYmVmb3JlIHVzZSBhbmQg dXNlICh2b2lkKSBwYXJhbWV0ZXIgbGlzdHMKICAgIGluc3RlYWQgb2YgKCksIHRvIHBsYWNhdGUg QzIzLiAoYnVnIzcxNDI1KQoKICAtIFR5cG9zIGluIGNvZGUgYW5kIG90aGVyIGRvYyBmaXhlcy4g KGJ1ZyM2ODAwMywgYnVnIzY4MDA0LCBldCBhbC4pCgoqIE9ic29sZXNjZW5jZToKCiAgLSBweS1j b21waWxlIG5vIGxvbmdlciBzdXBwb3J0cyBQeXRob24gMC54IG9yIDEueCB2ZXJzaW9ucy4gIFB5 dGhvbiAyLjAsCiAgICByZWxlYXNlZCBpbiAyMDAwLCBpcyBjdXJyZW50bHkgdGhlIG1pbmltdW0g cmVxdWlyZWQgdmVyc2lvbi4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjE2LjUgKDIw MjEtMTAtMDMpOgoKKiBCdWdzIGZpeGVkCgogIC0gUFlUSE9OX1BSRUZJWCBhbmQgUFlUSE9OX0VY RUNfUFJFRklYIGFyZSBub3cgc2V0IGFjY29yZGluZyB0bwogICAgUHl0aG9uJ3Mgc3lzLiogdmFs dWVzIG9ubHkgaWYgdGhlIG5ldyBjb25maWd1cmUgb3B0aW9uCiAgICAtLXdpdGgtcHl0aG9uLXN5 cy1wcmVmaXggaXMgc3BlY2lmaWVkLiBPdGhlcndpc2UsIEdOVSBkZWZhdWx0IHZhbHVlcwogICAg YXJlIHVzZWQsIGFzIGluIHRoZSBwYXN0LiAoVGhlIGNoYW5nZSBpbiAxLjE2LjMgd2FzIHRvbyBp bmNvbXBhdGlibGUuKQoKICAtIGNvbnNpc3RlbnRseSBkZXBlbmQgb24gaW5zdGFsbC1saWJMVExJ QlJBUklFUy4KCiogRGlzdHJpYnV0aW9uCgogIC0gdXNlIGNvbnN0IGZvciB5eWVycm9yIGRlY2xh cmF0aW9uIGluIGJpc29uL3lhY2MgdGVzdHMuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4g MS4xNi40ICgyMDIxLTA3LTI2KToKCiogTmV3IGZlYXR1cmVzIGFkZGVkCgogIC0gVGhlIFBZVEhP Tl9QUkVGSVggYW5kIFBZVEhPTl9FWEVDX1BSRUZJWCB2YXJpYWJsZXMgYXJlIG5vdyBzZXQgZnJv bQogICAgUHl0aG9uJ3Mgc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4OyB1c2UgdGhlIG5l dyBjb25maWd1cmUgb3B0aW9ucwogICAgLS13aXRoLXB5dGhvbl9wcmVmaXggYW5kIC0td2l0aC1w eXRob25fZXhlY19wcmVmaXggdG8gc3BlY2lmeSBleHBsaWNpdGx5LgoKICAtIENvbW1vbiB0b3At bGV2ZWwgZmlsZXMgY2FuIGJlIHByb3ZpZGVkIGFzIC5tZDsgdGhlIG5vbi1tZCB2ZXJzaW9uIGlz CiAgICB1c2VkIGlmIGJvdGggYXJlIHByZXNlbnQ6CiAgICAgIEFVVEhPUlMgQ2hhbmdlTG9nIElO U1RBTEwgTkVXUyBSRUFETUUgUkVBRE1FLWFscGhhIFRIQU5LUwoKICAtIENUQUdTLCBFVEFHUywg U0NPUEUgdmFyaWFibGVzIGNhbiBiZSBzZXQgdmlhIGNvbmZpZ3VyZS4KCiAgLSBTaWxlbnQgbWFr ZSBvdXRwdXQgZm9yIGN1c3RvbSBsaW5rIGNvbW1hbmRzLgoKICAtIE5ldyBvcHRpb24gIm5vLWRp c3QtYnVpbHQtc291cmNlcyIgc2tpcHMgZ2VuZXJhdGluZyAkKEJVSUxUX1NPVVJDRVMpCiAgICBi ZWZvcmUgYnVpbGRpbmcgdGhlIHRhcmJhbGwgYXMgcGFydCBvZiAibWFrZSBkaXN0IiwgdGhhdCBp cywKICAgIG9taXRzIHRoZSBkZXBlbmRlbmN5IG9mICQoZGlzdGRpcik6ICQoQlVJTFRfU09VUkNF UykuCgoqIEJ1Z3MgZml4ZWQKCiAgLSBhdXRvbWFrZSBvdXRwdXQgbW9yZSByZXByb2R1Y2libGUu CgogIC0gdGVzdC1kcml2ZXIgbGVzcyBsaWtlbHkgdG8gY2xhc2ggd2l0aCB0ZXN0cyB3cml0aW5n IHRvIHRoZSBzYW1lIGZpbGUuCgogIC0gRGVqYUdudSB0ZXN0cyBhbHdheXMgdXNlIHRoZSBkaXJl Y3RvcnkgbmFtZSwgdGVzdHN1aXRlLywgZm9yCiAgICBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG5l d2VyIGRlamFnbnUtMS42LjMgYW5kIHdpdGggcHJpb3IgdmVyc2lvbnMuCgoqIERpc3RyaWJ1dGlv bgoKICAtIGNvbmZpZy5zdWIgYW5kIGNvbmZpZy5ndWVzcyB1cGRhdGVzIGluY2x1ZGUgcmVzdG9y YXRpb24gb2YgYC4uLmAKICAgIGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LgoKfn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fgoKTmV3IGluIDEuMTYuMyAoMjAyMC0xMS0xOCk6CgoqIE5ldyBmZWF0dXJlcyBhZGRl ZAoKICAtIEluIHRoZSB0ZXN0c3VpdGUgc3VtbWFyeSwgdGhlICJmb3IgJChQQUNLQUdFX1NUUklO RykiIHN1ZmZpeAogICAgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgQU1fVEVTVFNVSVRFX1NV TU1BUllfSEVBREVSIHZhcmlhYmxlLgoKKiBCdWdzIGZpeGVkCgogIC0gUHl0aG9uIHZlcnNpb24g bnVtYmVyIDMuMTAgbm8gbG9uZ2VyIGNvbnNpZGVyZWQgdG8gYmUgMy4xLgoKICAtIEJyb2tlbiBs aW5rcyBpbiBtYW51YWwgZml4ZWQgb3IgcmVtb3ZlZCwgYW5kIG5ldyBzY3JpcHQKICAgIGNvbnRy aWIvY2hlY2tsaW5reCAoYSBzbWFsbCBtb2RpZmljYXRpb24gb2YgVzNDIGNoZWNrbGluaykgYWRk ZWQsCiAgICB3aXRoIGFjY29tcGFueSB0YXJnZXQgY2hlY2tsaW5reCB0byByZWNoZWNrIHVybHMu CgogIC0gaW5zdGFsbC1leGVjIHRhcmdldCBkZXBlbmRzIG9uICQoQlVJTFRfU09VUkNFUykuCgog IC0gdmFsYWMgYXJndW1lbnQgbWF0Y2hpbmcgbW9yZSBwcmVjaXNlLCB0byBhdm9pZCBnYXJiYWdl IGluIERJU1RfQ09NTU9OLgoKICAtIFN1cHBvcnQgZm9yIFZhbGEgaW4gVlBBVEggYnVpbGRzIGZp eGVkIHNvIHRoYXQgYm90aCBmcmVzaGx5LWdlbmVyYXRlZCBhbmQKICAgIGRpc3RyaWJ1dGVkIEMg ZmlsZXMgd29yaywgYW5kIG9wZXJhdGlvbiBpcyBtb3JlIHJlbGlhYmxlIHdpdGggb3Igd2l0aG91 dAogICAgYW4gaW5zdGFsbGVkIHZhbGFjLgoKICAtIERlamFnbnUgZG9lc24ndCBicmVhayBvbiBk aXJlY3RvcmllcyBjb250YWluaW5nIHNwYWNlcy4KCiogRGlzdHJpYnV0aW9uCgogIC0gbmV3IHZh cmlhYmxlIEFNX0RJU1RDSEVDS19EVklfVEFSR0VULCB0byBhbGxvdyBvdmVycmlkaW5nIHRoZQog ICAgIm1ha2UgZHZpIiB0aGF0IGlzIGRvbmUgYXMgcGFydCBvZiBkaXN0Y2hlY2suCgoqIE1pc2Nl bGxhbmVvdXMgY2hhbmdlcwoKICAtIGluc3RhbGwtc2ggdHdlYWtzOgogICAgLiBuZXcgb3B0aW9u IC1wIHRvIHByZXNlcnZlIG10aW1lLCBpLmUuLCBpbnZva2UgY3AgLXAuCiAgICAuIG5ldyBvcHRp b24gLVMgU1VGRklYIHRvIGF0dGVtcHQgYmFja3VwIGZpbGVzIHVzaW5nIFNVRkZJWC4KICAgIC4g bm8gbG9uZ2VyIHVuY29uZGl0aW9uYWxseSB1c2VzIC1mIHdoZW4gcm0gaXMgb3ZlcnJpZGRlbiBi eSBSTVBST0cuCiAgICAuIGRvZXMgbm90IGNob3duIGV4aXN0aW5nIGRpcmVjdG9yaWVzLgoKICAt IFJlbW92ZWQgZnVuY3Rpb24gdXBfdG9fZGF0ZV9wIGluIGxpYi9BdXRvbWFrZS9GaWxlVXRpbHMu cG0uCiAgICBXZSBiZWxpZXZlIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVseSB1bnVzZWQuCgog IC0gU3VwcG9ydCBmb3IgaW4tdHJlZSBWYWxhIGxpYnJhcmllcyBpbXByb3ZlZC4KCn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjE2LjIgKDIwMjAtMDMtMjEpOgoKKiBOZXcgZmVhdHVyZXMg YWRkZWQKCiAgLSBhZGQgenN0ZCBzdXBwb3J0IGFuZCB0aGUgYXV0b21ha2Ugb3B0aW9uLCBkaXN0 LXpzdGQuCgogIC0gc3VwcG9ydCBmb3IgUHl0aG9uIDM6IHB5LWNvbXBpbGUgbm93IHN1cHBvcnRz IGJvdGggUHl0aG9uIDMKICAgIGFuZCBQeXRob24gMjsgdGVzdHMgZG8gbm90IHJlcXVpcmUgLnB5 byBmaWxlcywgYW5kIHVuaW5zdGFsbAogICAgZGVsZXRlcyBfX3B5Y2FjaGVfXyBjb3JyZWN0bHkg KGF1dG9tYWtlIGJ1ZyAjMzIwODgpLgoKKiBNaXNjZWxsYW5lb3VzIGNoYW5nZXMKCiAgLSBhdXRv bWFrZSBubyBsb25nZXIgcmVxdWlyZXMgYSBAc2V0ZmlsZW5hbWUgaW4gZWFjaCAudGV4aSBmaWxl CgoqIEJ1Z3MgZml4ZWQKCiAgLSBXaGVuIGNsZWFuaW5nIHRoZSBjb21waWxlZCBweXRob24gZmls ZXMsICdcbicgaXMgbm90IHVzZWQgYW55bW9yZSBpbiB0aGUKICAgIHN1YnN0aXR1dGlvbiB0ZXh0 IG9mICdzZWQnIHRyYW5zZm9ybWF0aW9ucy4gIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZQogICAg Y29tcGF0aWJpbGl0eSB3aXRoIHRoZSAnc2VkJyBpbXBsZW1lbnRhdGlvbiBwcm92aWRlZCBieSBt YWNPUyB3aGljaAogICAgY29uc2lkZXJzICdcbicgYXMgdGhlICduJyBjaGFyYWN0ZXIgaW5zdGVh ZCBvZiBhIG5ld2xpbmUuCiAgICAoYXV0b21ha2UgYnVnIzMxMjIyKQoKICAtIEZvciBtYWtlIHRh Z3MsIGxpc3BfTElTUCBpcyBmb2xsb3dlZCBieSB0aGUgbmVjZXNzYXJ5IHNwYWNlIHdoZW4KICAg IHVzZWQgd2l0aCBDT05GSUdfSEVBREVSUy4KICAgIChhdXRvbWFrZSBidWcjMzgxMzkpCgogIC0g VGhlIGF1dG9tYWtlIHRlc3QgdHhpbmZvLXZ0ZXhpNC5zaCBubyBsb25nZXIgZmFpbHMgd2hlbiBs b2NhbHRpbWUKICAgIGFuZCBVVEMgY3Jvc3MgYSBkYXkgYm91bmRhcnkuCgogIC0gRW1hY3NlbiBv bGRlciB0aGFuIHZlcnNpb24gMjUsIHdoaWNoIHJlcXVpcmUgdXNlIG9mCiAgICBieXRlLWNvbXBp bGUtZGVzdC1maWxlLCBhcmUgc3VwcG9ydGVkIGFnYWluLgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoK TmV3IGluIDEuMTYuMSAoMjAxOC0wMy0xMSk6CgoqIEJ1Z3MgZml4ZWQ6CgogIC0gJ2luc3RhbGwt c2gnIG5vdyBlbnN1cmVzIHRoYXQgbm9ib2R5IGNhbiBjcm9zcyBwcml2aWxlZ2UgYm91bmRhcmll cyBieQogICAgcHJlLWNyZWF0aW5nIHN5bWxpbmsgb24gdGhlIGRpcmVjdG9yeSBpbnNpZGUgIi90 bXAiLgoKICAtICdhdXRvbWFrZScgZG9lcyBub3QgZGVwZW5kIG9uIHRoZSAnbm9uZScgc3Vicm91 dGluZSBvZiB0aGUgTGlzdDo6VXRpbAogICAgbW9kdWxlIGFueW1vcmUgdG8gc3VwcG9ydCBvbGRl ciBQZXJsIHZlcnNpb24uIChhdXRvbWFrZSBidWcjMzA2MzEpCgogIC0gQSByZWdyZXNzaW9uIGlu IEFNX1BZVEhPTl9QQVRIIGNhdXNpbmcgdGhlIHJlamVjdGlvbiBvZiBub24gbGl0ZXJhbAogICAg bWluaW11bSB2ZXJzaW9uIHBhcmFtZXRlciBoYXNuJ3QgYmVlbiBmaXhlZC4gKGF1dG9tYWtlIGJ1 ZyMzMDYxNikKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjE2ICgyMDE4LTAyLTI1KToK CiogTWlzY2VsbGFuZW91cyBjaGFuZ2VzCgogIC0gV2hlbiBzdWJkaXItb2JqZWN0cyBpcyBpbiBl ZmZlY3QsIEF1dG9tYWtlIHdpbGwgbm93IGNvbnN0cnVjdAogICAgc2hvcnRlciBvYmplY3QgZmls ZSBuYW1lcyB3aGVuIG5vIHByb2dyYW1zIGFuZCBsaWJyYXJpZXMgbmFtZQogICAgY2xhc2hlcyBh cmUgZW5jb3VudGVyZWQuICBUaGlzIHNob3VsZCBtYWtlIHRoZSBkaXNjb3VyYWdlZCB1c2Ugb2YK ICAgICdmb29fU0hPUlROQU1FJyB1bm5lY2Vzc2FyeSBpbiBtYW55IGNhc2VzLgoKKiBCdWdzIGZp eGVkOgoKICAtIEF1dG9tYXRpYyBkZXBlbmRlbmN5IHRyYWNraW5nIGhhcyBiZWVuIGZpeGVkIHRv IHdvcmsgYWxzbyB3aGVuIHRoZQogICAgJ3N1YmRpci1vYmplY3QnIG9wdGlvbiBpcyB1c2VkIGFu ZCBzb21lICdmb29fU09VUkNFUycgZGVmaW5pdGlvbgogICAgY29udGFpbnMgdW5leHBhbmRlZCBy ZWZlcmVuY2VzIHRvIG1ha2UgdmFyaWFibGVzLCBhcyBpbiwgZS5nLjoKCiAgICAgICAgYV9zcmMg PSBzb3VyY2VzL2xpYnMvYWFhCiAgICAgICAgYl9zcmMgPSBzb3VyY2VzL2JiYgogICAgICAgIGZv b19TT1VSQ0VTID0gJChhX3NyYykvYmFyLmMgJChiX3NyYykvYmF6LmMKCiAgICBXaXRoIHN1Y2gg YSBzZXR1cCwgdGhlIGNyZWF0ZWQgbWFrZWZpbGUgZnJhZ21lbnQgY29udGFpbmluZyBkZXBlbmRl bmN5CiAgICB0cmFja2luZyBpbmZvcm1hdGlvbiB3aWxsIGJlIGNvcnJlY3RseSBwbGFjZWQgdW5k ZXIgdGhlIGRpcmVjdG9yaWVzCiAgICBuYW1lZCAnc291cmNlcy9saWJzL2FhYS8uZGVwcycgYW5k ICdzb3VyY2VzL2JiYi8uZGVwcycsIHJhdGhlciB0aGFuCiAgICBtaXN0YWtlbmx5IHVuZGVyIGRp cmVjdG9yaWVzIG5hbWVkIChsaXRlcmFsbHkhKSAnJChzcmNfYSkvLmRlcHMnIGFuZAogICAgJyQo c3JjX2IpLy5kZXBzJyAodGhpcyB3YXMgdGhlIGZpcnN0IHBhcnQgb2YgYXV0b21ha2UgYnVnIzEz OTI4KS4KCiAgICBOb3RpY2UgdGhhdCBpbiBvcmRlciB0byBmaXggdGhpcyBidWcgd2UgaGFkIHRv IHNsaWdodGx5IGNoYW5nZSB0aGUKICAgIHNlbWFudGljcyBvZiBob3cgY29uZmlnLnN0YXR1cyBi b290c3RyYXBzIHRoZSBtYWtlZmlsZSBmcmFnbWVudHMKICAgIHJlcXVpcmVkIGZvciB0aGUgZGVw ZW5kZW5jeSB0cmFja2luZyB0byB3b3JrOiByYXRoZXIgdGhhbiBhdHRlbXB0aW5nCiAgICB0byBw YXJzZSB0aGUgTWFrZWZpbGVzIHZpYSBncmVwIGFuZCBzZWQgdHJpY2tlcmllcyBvbmx5LCB3ZSBh Y3R1YWxseQogICAgaW52b2tlICdtYWtlJyBvbiBhIHNsaWdodGx5IHByZXByb2Nlc3NlZCB2ZXJz aW9uIG9mIHRob3NlIE1ha2VmaWxlcywKICAgIHVzaW5nIGEgcHJpdmF0ZSB0YXJnZXQgdGhhdCBp cyBvbmx5IG1lYW50IHRvIGJvb3RzdHJhcCB0aGUgcmVxdWlyZWQKICAgIG1ha2VmaWxlIGZyYWdt ZW50cy4KCiAgLSBUaGUgJ3N1YmRpci1vYmplY3QnIG9wdGlvbiBubyBsb25nZXIgY2F1c2VzIG9i amVjdCBmaWxlcyBjb3JyZXNwb25kaW5nCiAgICB0byBzb3VyY2UgZmlsZXMgc3BlY2lmaWVkIHdp dGggYW4gZXhwbGljaXQgJyQoc3JjZGlyKScgY29tcG9uZW50IHRvIGJlCiAgICBwbGFjZWQgaW4g dGhlIHNvdXJjZSB0cmVlIHJhdGhlciB0aGFuIGluIHRoZSBidWlsZCB0cmVlLgoKICAgIEZvciBl eGFtcGxlLCBpZiBNYWtlZmlsZS5hbSBjb250YWluczoKCiAgICAgICAgQVVUT01BS0VfT1BUSU9O UyA9IHN1YmRpci1vYmplY3RzCiAgICAgICAgZm9vX1NPVVJDRVMgPSAkKHNyY2RpcikvZm9vLmMg JChzcmNkaXIpL3MvYmFyLmMgJCh0b3Bfc3JjZGlyKS9iYXouYwoKICAgIHRoZW4gIm1ha2UgYWxs IiB3aWxsIGNyZWF0ZSAnZm9vLm8nIGFuZCAncy9iYXIubycgaW4gJChidWlsZGRpcikgcmF0aGVy CiAgICB0aGFuIGluICQoc3JjZGlyKSwgYW5kIHdpbGwgY3JlYXRlICdiYXoubycgaW4gJCh0b3Bf YnVpbGRkaXIpIHJhdGhlcgogICAgdGhhbiBpbiAkKHRvcF9zcmNkaXIpLgoKICAgIFRoaXMgd2Fz IHRoZSBzZWNvbmQgcGFydCBvZiBhdXRvbWFrZSBidWcjMTM5MjguCgogIC0gSW5zdGFsbGVkICdh Y2xvY2FsJyBtNCBtYWNyb3MgY2FuIG5vdyBhY2NlcHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVz CiAgICBjb250YWluaW5nICdAJyBjaGFyYWN0ZXJzIChhdXRvbWFrZSBidWcjMjA5MDMpCgogIC0g Ii4vY29uZmlndXJlICYmIG1ha2UgZGlzdCIgbm8gbG9uZ2VyIGZhaWxzIHdoZW4gYSBkaXN0cmli dXRlZCBmaWxlIGRlcGVuZHMKICAgIG9uIG9uZSBmcm9tIEJVSUxUX1NPVVJDRVMuCgogIC0gV2hl biBjb21iaW5pbmcgQUNfTElCT0JKIG9yIEFDX0ZVTkNfQUxMT0NBIHdpdGggdGhlCiAgICAiLS1k aXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmciIGNvbmZpZ3VyZSBvcHRpb24gaW4gYW4gb3V0IG9m IHNvdXJjZQogICAgYnVpbGQsIHRoZSBidWlsZCBzdWItZGlyZWN0b3J5IGRlZmluZWQgYnkgQUNf Q09ORklHX0xJQk9CSl9ESVIgaXMgbm93CiAgICBwcm9wZXJseSBjcmVhdGVkLiAgKGF1dG9tYWtl IGJ1ZyMyNzc4MSkKCiAgLSBUaGUgdGltZSBwcmludGVkIGJ5ICdtZGF0ZS1zaCcgaXMgbm93IHVz aW5nIHRoZSBVVEMgdGltZSB6b25lIHRvIHN1cHBvcnQKICAgIHRoZSByZXByb2R1Y2libGUgYnVp bGQgZWZmb3J0LiAgKGF1dG9tYWtlIGJ1ZyMyMDMxNCkKCiAgLSBUaGUgZWxpc3AgYnl0ZS1jb21w aWxhdGlvbiBydWxlIG5vdyB1c2VzIGJ5dGUtY29tcGlsZS1kZXN0LWZpbGUtZnVuY3Rpb24sCiAg ICByYXRoZXIgdGhhbiBieXRlLWNvbXBpbGUtZGVzdC1maWxlLCB3aGljaCB3YXMgb2Jzb2xldGVk IGluIDIwMDkuIFdlIGV4cGVjdAogICAgdGhhdCBFbWFjcy0yNiB3aWxsIGNvbnRpbnVlIHRvIHN1 cHBvcnQgdGhlIG9sZCBmdW5jdGlvbiwgYnV0IHdpbGwgY29tcGxhaW4KICAgIGxvdWRseSwgYW5k IHRoYXQgRW1hY3MtMjcgd2lsbCByZW1vdmUgc3VwcG9ydCBmb3IgaXQgYWx0b2dldGhlci4KCiog TmV3IGZlYXR1cmVzIGFkZGVkCgogIC0gQSBjdXN0b20gdGVzdHN1aXRlIGRyaXZlciBmb3IgdGhl IEd1aWxlIFNjaGVtZSBTUkZJLTY0IEFQSSBoYXMgYmVlbiBhZGRlZAogICAgdG8gdGhlICJjb250 cmliIiBzZWN0aW9uLiAgVGhpcyBhbGxvd3MgYSBtb3JlIGNvbnZlbmllbnQgd2F5IHRvIHRlc3Qg R3VpbGUKICAgIGNvZGUgd2l0aG91dCBoYXZpbmcgdG8gdXNlIGxvdyBwcmltaXRpdmVzIHN1Y2gg YXMgZXhpdCBzdGF0dXMuICBTZWUKICAgIFNSRkktNjQgQVBJIHNwZWNpZmljYXRpb24gZm9yIG1v cmUgZGV0YWlsczoKICAgIDxodHRwczovL3NyZmkuc2NoZW1lcnMub3JnL3NyZmktNjQvc3JmaS02 NC5odG1sPgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKTmV3IGluIDEuMTUuMSAoMjAxNy0wNi0xOSk6 CgoqIEJ1Z3MgZml4ZWQ6CgogIC0gVGhlIGNvZGUgaGFzIGJlZW4gYWRhcHRlZCB0byByZW1vdmUg YSB3YXJuaW5nIHByZXNlbnQgc2luY2UgUGVybAogICAgNS4yMiBzdGF0aW5nIHRoYXQgIlVuZXNj YXBlZCBsZWZ0IGJyYWNlIGluIHJlZ2V4IGlzIGRlcHJlY2F0ZWQiLgogICAgVGhpcyB3YXJuaW5n IGhhcyBiZWNvbWUgYW4gaGFyZCBlcnJvciBpbiBQZXJsIDUuMjYgKGJ1ZyMyMjM3MikuCgogIC0g VGhlIGdlbmVyYXRlZCBNYWtlZmlsZXMgZG8gbm90IHJlbHkgb24gdGhlIG9ic29sZXNjZW50IEda SVAKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHdoaWNoIHdhcyB1c2VkIGZvciBwYXNzaW5nIGFy Z3VtZW50cyB0bwogICAgJ2d6aXAnLiAgQ29tcGF0aWJpbGl0eSB3aXRoIG9sZCB2ZXJzaW9ucyBo YXMgYmVlbgogICAgcHJlc2VydmVkLiAoYnVnIzIwMTMyKQoKKiBNaXNjZWxsYW5lb3VzIGNoYW5n ZXM6CgogIC0gU3VwcG9ydCB0aGUgV2luZG93cyB2ZXJzaW9uIG9mIHRoZSBJbnRlbCBDIENvbXBp bGVyIChpY2wpIGluIHRoZQogICAgJ2NvbXBpbGUnIHNjcmlwdCBpbiB0aGUgc2FtZSB3YXkgdGhl IChjb21wYXRpYmxlKSBNaWNyb3NvZnQgQwogICAgQ29tcGlsZXIgaXMgc3VwcG9ydGVkLgoKfn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fgoKTmV3IGluIDEuMTUgKDIwMTUtMDEtMDUpOgoKKiBJbXByb3ZlbWVu dHMgYW5kIHJlZmFjdG9yaW5ncyBpbiB0aGUgaW5zdGFsbC1zaCBzY3JpcHQ6CgogIC0gSXQgaGFz IGJlZW4gbW9kZXJuaXplZCwgYW5kIG5vdyBtYWtlcyB0aGUgZm9sbG93aW5nIGFzc3VtcHRpb25z CiAgICAqdW5jb25kaXRpb25hbGx5KjoKICAgICgxKSBhIHdvcmtpbmcgJ2Rpcm5hbWUnIHByb2dy YW0gaXMgYXZhaWxhYmxlOwogICAgKDIpIHRoZSAke3ZhcjotdmFsdWV9IHNoZWxsIHBhcmFtZXRl cnMgc3Vic3RpdHV0aW9uIHdvcmtzOwogICAgKDMpIHRoZSAic2V0IC1mIiBhbmQgInNldCArZiIg c2hlbGwgY29tbWFuZHMgd29yaywgYW5kLCByZXNwZWN0aXZlbHksCiAgICAgICAgZGlzYWJsZSBh bmQgZW5hYmxlIHNoZWxsIGdsb2JiaW5nLgoKICAtIFRoZSBzY3JpcHQgaW1wbGVtZW50cyBzdHJp Y3RlciBlcnJvciBjaGVja2luZywgYW5kIG5vdyBpdCBjb21wbGFpbnMKICAgIGFuZCBiYWlscyBv dXQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgZXhwZWN0YXRpb25zIGlzIG5vdCBtZXQ6CiAgICAo MSkgdGhlIG9wdGlvbnMgLWQgYW5kIC10IGFyZSBuZXZlciB1c2VkIHRvZ2V0aGVyOwogICAgKDIp IHRoZSBhcmd1bWVudCBwYXNzZWQgdG8gb3B0aW9uIC10IGlzIGEgZGlyZWN0b3J5OwogICAgKDMp IGlmIHRoZXJlIGFyZSB0d28gb3IgbW9yZSBTT1VSQ0VGSUxFIGFyZ3VtZW50cywgdGhlCiAgICAg ICAgREVTVElOQVRJT04gYXJndW1lbnQgbXVzdCBiZSBhIGRpcmVjdG9yeS4KCiogQXV0b21ha2Ut Z2VuZXJhdGVkIHRlc3RzdWl0ZXM6CgogIC0gVGhlIGRlZmF1bHQgdGVzdC1kcml2ZXIgdXNlZCBi eSB0aGUgQXV0b21ha2UtZ2VuZXJhdGVkIHRlc3RzdWl0ZXMKICAgIG5vdyBhcHBlbmRzIHRoZSBy ZXN1bHQgYW5kIGV4aXQgc3RhdHVzIG9mIGVhY2ggInBsYWluIiB0ZXN0IHRvIHRoZQogICAgYXNz b2NpYXRlZCBsb2cgZmlsZSAoYXV0b21ha2UgYnVnIzExODE0KS4KCiAgLSBUaGUgcGVybCBpbXBs ZW1lbnRhdGlvbiBvZiB0aGUgVEFQIHRlc3RzdWl0ZSBkcml2ZXIgaXMgbm8gbG9uZ2VyCiAgICBp bnN0YWxsZWQgaW4gdGhlIEF1dG9tYWtlJ3Mgc2NyaXB0cyBkaXJlY3RvcnksIGFuZCBpcyBpbnN0 ZWFkIGp1c3QKICAgIGRpc3RyaWJ1dGVkIGFzIGEgImNvbnRyaWIiIGFkZGl0aW9uLiAgVGhlcmUg c2hvdWxkIGJlIG5vIHJlYXNvbiB0bwogICAgdXNlIHRoaXMgaW1wbGVtZW50YXRpb24gYW55d2F5 IGluIHJlYWwgcGFja2FnZXMsIHNpbmNlIHRoZSBhd2src2hlbGwKICAgIGltcGxlbWVudGF0aW9u IG9mIHRoZSBUQVAgZHJpdmVyICh3aGljaCBpcyBkb2N1bWVudGVkIGluIHRoZSBtYW51YWwpCiAg ICBpcyBtb3JlIHBvcnRhYmxlIGFuZCBoYXMgZmVhdHVyZSBwYXJpdHkgd2l0aCB0aGUgcGVybCBp bXBsZW1lbnRhdGlvbi4KCiAgLSBUaGUgcnVsZSBnZW5lcmF0aW5nICd0ZXN0LXN1aXRlLmxvZycg bm8gbG9uZ2VyIHJpc2sgaW5jdXJyaW5nIGluIGFuCiAgICBleHRyYSB1c2VsZXNzICJtYWtlIGFs bCIgcmVjdXJzaXZlIGludm9jYXRpb24gaW4gc29tZSBjb3JuZXIgY2FzZXMKICAgIChhdXRvbWFr ZSBidWcjMTYzMDIpLgoKKiBEaXN0cmlidXRpb246CgogIC0gQXV0b21ha2UgYnVnIzE4Mjg2OiAi bWFrZSBkaXN0Y2hlY2siIGNvdWxkIHNvbWV0aW1lcyBmYWlsIHRvIGRldGVjdAogICAgZmlsZXMg bWlzc2luZyBmcm9tIHRoZSBkaXN0cmlidXRpb24gdGFyYmFsbCwgZXNwZWNpYWxseSBpbiB0aG9z ZSBjYXNlcwogICAgd2hlcmUgYm90aCB0aGUgZ2VuZXJhdGVkIGZpbGVzIGFuZCB0aGVpciBkZXBl bmRlbmNpZXMgYXJlIGV4cGxpY2l0bHkKICAgIGluICQoc3JjZGlyKS4gIEFuIGltcG9ydGFudCBl eGFtcGxlIG9mIHRoaXMgYXJlICpnZW5lcmF0ZWQqIG1ha2VmaWxlCiAgICBmcmFnbWVudHMgaW5j bHVkZWQgYXQgQXV0b21ha2UgdGltZSBpbiBNYWtlZmlsZS5hbTsgZS5nLjoKCiAgICAgICAgLi4u CiAgICAgICAgJChzcmNkaXIpL2ZyYWdtZW50LmFtOiAkKHNyY2RpcikvZGF0YS50eHQgJChzcmNk aXIpL3ByZXByb2Muc2gKICAgICAgICAgICAgY2QgJChzcmNkaXIpICYmICQoU0hFTEwpIHByZXBy b2Muc2ggPGRhdGEudHh0ID5mcmFnbWVudC5hbQogICAgICAgIGluY2x1ZGUgJChzcmNkaXIpL2Zy YWdtZW50LmFtCiAgICAgICAgLi4uCgogICAgSWYgdGhlIHVzZXIgZm9yZ290IHRvIGFkZCBkYXRh LnR4dCBhbmQvb3IgcHJlcHJvYy5zaCBpbiB0aGUgZGlzdHJpYnV0aW9uCiAgICB0YXJiYWxsLCAi bWFrZSBkaXN0Y2hlY2siIHdvdWxkIGhhdmUgZXJyb25lb3VzbHkgc3VjY2VlZGVkISAgVGhpcyBp c3N1ZQogICAgaXMgbm93IGZpeGVkLgoKICAtIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHByZXZp b3VzIGNoYW5nZSwgIm1ha2UgZGlzdGNoZWNrIiB3aWxsIHJ1bgogICAgdXNpbmcgJyQoZGlzdGRp cikvX2J1aWxkL3N1YicgYXMgdGhlIGJ1aWxkIGRpcmVjdG9yeSwgcmF0aGVyIHRoYW4KICAgIHNp bXBseSAnJChkaXN0ZGlyKS9fYnVpbGQnIChhcyBpdCB3YXMgdGhlIGNhc2UgZm9yIEF1dG9tYWtl IDEuMTQgYW5kCiAgICBlYXJsaWVyKS4gIENvbnNlcXVlbnRseSwgdGhlICcuL2NvbmZpZ3VyZScg YW5kICdtYWtlJyBpbnZvY2F0aW9ucwogICAgaXNzdWVkIGJ5IHRoZSBkaXN0Y2hlY2sgcmVjaXBl IG5vdyBoYXZlICQoc3JjZGlyKSBlcXVhbCB0byAnLi4vLi4nLAogICAgcmF0aGVyIHRoYW4gdG8g anVzdCAnLi4nLiAgRGVwZW5kZW50IGFuZCBzaW1pbGFyIHZhcmlhYmxlcyAoZS5nLiwKICAgICck KHRvcF9zcmNkaXIpJykgYXJlIGFsc28gY2hhbmdlZCBhY2NvcmRpbmdseS4KCiAgICBUaHVzLCBN YWtlZmlsZXMgdGhhdCBtYWRlIGFzc3VtcHRpb25zIGFib3V0IHRoZSBleGFjdCB2YWx1ZXMgb2Yg dGhlCiAgICBidWlsZCBhbmQgc291cmNlIGRpcmVjdG9yaWVzIHVzZWQgYnkgIm1ha2UgZGlzdGNo ZWNrIiB3aWxsIGhhdmUgdG8KICAgIGJlIGFkanVzdGVkLiAgTm90aWNlIHRoYXQgbWFraW5nIHN1 Y2ggYXNzdW1wdGlvbnMgd2FzIGEgYmFkIGFuZAogICAgdW5zdXBwb3J0ZWQgcHJhY3RpY2UgYW55 d2F5LCBzaW5jZSB0aGUgZXhhY3QgbG9jYXRpb25zIG9mIHRob3NlCiAgICBkaXJlY3RvcmllcyBz aG91bGQgYmUgY29uc2lkZXJlZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBhbmQgd2UKICAgIHJl c2VydmUgdGhlIHJpZ2h0IHRvIGNoYW5nZSB0aGVtIGF0IGFueSB0aW1lLgoKKiBNaXNjZWxsYW5l b3VzIGJ1Z3MgZml4ZWQ6CgogIC0gVGhlIGV4cGFuc2lvbiBvZiBBTV9JTklUX0FVVE9NQUtFIGVu ZHMgb25jZSBhZ2FpbiB3aXRoIGEgdHJhaWxpbmcKICAgIG5ld2xpbmUgKGJ1ZyMxNjg0MSkuICBS ZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gQXV0b21ha2UgMS4xNC4KCiAgLSBXZSBubyBsb25nZXIg cmlzayB0byB1c2UgJyRhY19hdXhfZGlyJyBiZWZvcmUgaXQncyBkZWZpbmVkIChzZWUKICAgIGF1 dG9tYWtlIGJ1ZyMxNTk4MSkuIEJ1ZyBpbnRyb2R1Y2VkIGluIEF1dG9tYWtlIDEuMTQuCgogIC0g VGhlIGNvZGUgdXNlZCB0byBkZXRlY3Qgd2hldGhlciB0aGUgY3VycmVudGx5IHVzZWQgbWFrZSBp cyBHTlUgbWFrZQogICAgb3Igbm90IChyZWx5aW5nIG9uIHRoZSBwcml2YXRlIG1hY3JvICdhbV9f aXNfZ251X21ha2UnKSBubyBsb25nZXIKICAgIHJpc2tzIGNhdXNpbmcgIkFyZyBsaXN0IHRvbyBs b25nIiBmb3IgcHJvamVjdHMgdXNpbmcgYXV0b21hdGljCiAgICBkZXBlbmRlbmN5IHRyYWNraW5n IGFuZCBoYXZpbmcgYSB0b24gb2Ygc291cmNlIGZpbGVzIChidWcjMTg3NDQpLgoKICAtIEF1dG9t YWtlIHRyaWVzIHRvIG9mZmVyIGEgbW9yZSBkZXRlcm1pbmlzdGljIG91dHB1dCBmb3IgZ2VuZXJh dGVkCiAgICBNYWtlZmlsZXMsIGluIHRoZSBmYWNlIG9mIHRoZSBuZXdseS1pbnRyb2R1Y2VkIHJh bmRvbWl6YXRpb24gZm9yCiAgICBoYXNoIGtleXMgb3JkZXIgaW4gUGVybCA1LjE4LgoKICAtIElu IG9sZGVyIEF1dG9tYWtlIHZlcnNpb25zLCBpZiBhIHVzZXIgZGVmaW5lZCBvbmUgc2luZ2xlIE1h a2VmaWxlCiAgICBmcmFnbWVudCAoc2F5ICdmb28uYW0nKSB0byBiZSBpbmNsdWRlZCB2aWEgQXV0 b21ha2UgaW5jbHVkZXMgaW4KICAgIGhpcyBtYWluIE1ha2VmaWxlLmFtLCBhbmQgZGVmaW5lZCBh IGN1c3RvbSBtYWtlIHJ1bGUgdG8gZ2VuZXJhdGUgdGhhdAogICAgZmlsZSBmcm9tIG90aGVyIGRh dGEsIEF1dG9tYWtlIHVzZWQgdG8gc3B1cmlvdXNseSBjb21wbGFpbiB3aXRoIHNvbWUKICAgIG1l c3NhZ2UgbGlrZSAiLi4uIG92ZXJyaWRlcyBBdXRvbWFrZSB0YXJnZXQgJyQoc3JjZGlyKS9mb28u YW0iLgogICAgVGhpcyBidWcgaXMgbm93IGZpeGVkLgoKICAtIFRoZSB1c2VyIGNhbiBub3cgZXh0 ZW5kIHRoZSBzcGVjaWFsIC5QUkVDSU9VUyB0YXJnZXQsIHRoZSBzYW1lIHdheQogICAgaGUgY291 bGQgYWxyZWFkeSBkbyB3aXRoIHRoZSAuTUFLRSAuYW5kIC5QSE9OWSB0YXJnZXRzLgoKICAtIFNv bWUgY29uZnVzaW5nIHR5cG9zIGhhdmUgYmVlbiBmaXhlZCBpbiB0aGUgbWFudWFsIGFuZCBpbiBm ZXcgd2FybmluZwogICAgbWVzc2FnZXMgKGF1dG9tYWtlIGJ1ZyMxNjgyNyBhbmQgYnVnIzE2OTk3 KS4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjE0LjEgKDIwMTMtMTItMjQpOgoKKiBC dWdzIGZpeGVkOgoKICAtIFRoZSB1c2VyIGlzIG5vIGxvbmdlciBhbGxvd2VkIHRvIG92ZXJyaWRl IHRoZSAtLXNyY2RpciBub3IgdGhlIC0tcHJlZml4CiAgICBjb25maWd1cmUgb3B0aW9ucyB1c2Vk IGJ5ICJtYWtlIGRpc3RjaGVjayIgKGJ1ZyMxNDk5MSkuCgogIC0gRml4ZWQgYSBncm9zcyBpbmVm ZmljaWVuY3kgaW4gdGhlIHJlY2lwZXMgZm9yIGluc3RhbGxpbmcgYnl0ZS1jb21waWxlZAogICAg cHl0aG9uIGZpbGVzLCB0aGF0IHdhcyBjYXVzaW5nIGFuIE8oTl4yKSBwZXJmb3JtYW5jZSBvbiB0 aGUgbnVtYmVyIE4gb2YKICAgIGZpbGVzLCBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCBPKE4pIHBl cmZvcm1hbmNlLiAgTm90ZSB0aGF0IHRoaXMgYnVnCiAgICB3YXMgb25seSByZWxldmFudCB3aGVu IHRoZSBudW1iZXIgb2YgcHl0aG9uIGZpbGVzIHdhcyBoaWdoICh3aGljaCBpcwogICAgdW51c3Vh bCBpbiBwcmFjdGljZSkuCgogIC0gQXV0b21ha2UgdHJ5IHRvIG9mZmVyIGEgbW9yZSBkZXRlcm1p bmlzdGljIG91dHB1dCBmb3Igd2FybmluZyBtZXNzYWdlcywKICAgIGluIHRoZSBmYWNlIG9mIHRo ZSBuZXdseS1pbnRyb2R1Y2VkIHJhbmRvbWl6YXRpb24gZm9yIGhhc2gga2V5cyBvcmRlcgogICAg aW4gUGVybCA1LjE4LgoKICAtIFRoZSAndGVzdC1kcml2ZXInIHNjcmlwdCBub3cgYWN0dWFsbHkg ZXJyb3Igb3V0IHdpdGggYSBjbGVhciBlcnJvcgogICAgbWVzc2FnZSBvbiB0aGUgbW9zdCBjb21t b24gaW52YWxpZCB1c2FnZXMuCgogIC0gU2V2ZXJhbCBzcHVyaW91cyBmYWlsdXJlcy9oYW5ncyBp biB0aGUgdGVzdHN1aXRlIChidWdzICMxNDcwNiwgIzE0NzA3LAogICAgIzE0NzYwLCAjMTQ5MTEs ICMxNTE4MSwgIzE1MjM3KS4KCiogRG9jdW1lbnRhdGlvbiBmaXhlczoKCiAgLSBGaXhlZCB0eXBv cyBpbiB0aGUgJ2ZpeC10aW1lc3RhbXAuc2gnIGV4YW1wbGUgc2NyaXB0IHRoYXQgbWFkZSBpdAog ICAgbm9uc2Vuc2ljYWwuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS4xNCAoMjAxMy0w Ni0yMSk6CgoqIEMgY29tcGlsYXRpb24sIGFuZCB0aGUgQUNfUFJPR19DQyBhbmQgQU1fUFJPR19D Q19DX08gbWFjcm9zOgoKICAtIFRoZSAnY29tcGlsZScgc2NyaXB0IGlzIG5vdyB1bmNvbmRpdGlv bmFsbHkgcmVxdWlyZWQgZm9yIGFsbCBwYWNrYWdlcwogICAgdGhhdCBwZXJmb3JtIEMgY29tcGls YXRpb24gKGlmIHlvdSBhcmUgdXNpbmcgdGhlICctLWFkZC1taXNzaW5nJwogICAgb3B0aW9uLCBh dXRvbWFrZSB3aWxsIGZldGNoIHRoYXQgc2NyaXB0IGZvciB5b3UsIHNvIHlvdSBzaG91bGRuJ3QK ICAgIG5lZWQgYW55IGV4cGxpY2l0IGFkanVzdG1lbnQpLiAgVGhpcyBuZXcgYmVoYXZpb3IgaXMg bmVlZGVkIHRvIGF2b2lkCiAgICBvYnNjdXJlIGVycm9ycyB3aGVuIHRoZSAnc3ViZGlyLW9iamVj dHMnIG9wdGlvbiBpcyB1c2VkLCBhbmQgdGhlCiAgICBjb21waWxlciBpcyBhbiBpbmZlcmlvciBv bmUgdGhhdCBkb2Vzbid0IGdyYXNwIHRoZSBjb21iaW5lZCB1c2Ugb2YKICAgIGJvdGggdGhlICIt YyAtbyIgb3B0aW9uczsgc2VlIGRpc2N1c3Npb24gYWJvdXQgYXV0b21ha2UgYnVnIzEzMzc4IGZv cgogICAgbW9yZSBkZXRhaWxzOgogICAgPGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdy ZXBvcnQuY2dpP2J1Zz0xMzM3OCMzNT4KICAgIDxodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kv YnVncmVwb3J0LmNnaT9idWc9MTMzNzgjNDQ+CgogIC0gVGhlIG5leHQgbWFqb3IgQXV0b21ha2Ug dmVyc2lvbiAoMi4wKSB3aWxsIHVuY29uZGl0aW9uYWxseSBhY3RpdmF0ZQogICAgdGhlICdzdWJk aXItb2JqZWN0cycgb3B0aW9uLiAgSW4gb3JkZXIgdG8gc21vb3RoIG91dCB0aGUgdHJhbnNpdGlv biwKICAgIHdlIG5vdyBnaXZlIGEgd2FybmluZyAoaW4gdGhlIGNhdGVnb3J5ICd1bnN1cHBvcnRl ZCcpIHdoZW5ldmVyIGEKICAgIHNvdXJjZSBmaWxlIGlzIHByZXNlbnQgaW4gYSBzdWJkaXJlY3Rv cnkgYnV0IHRoZSAnc3ViZGlyLW9iamVjdCcgaXMKICAgIG5vdCBlbmFibGVkLiAgRm9yIGV4YW1w bGUsIHRoZSBmb2xsb3dpbmcgdXNhZ2Ugd2lsbCB0cmlnZ2VyIHN1Y2ggYQogICAgd2FybmluZzoK CiAgICAgICAgYmluX1BST0dSQU1TID0gc3ViL2ZvbwogICAgICAgIHN1Yl9mb29fU09VUkNFUyA9 IHN1Yi9tYWluLmMgc3ViL2Jhci5jCgogIC0gQXV0b21ha2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGVu aGFuY2UgdGhlIGF1dG9jb25mLXByb3ZpZGVkIG1hY3JvCiAgICBBQ19QUk9HX0NDIHRvIGZvcmNl IGl0IHRvIGNoZWNrLCBhdCBjb25maWd1cmUgdGltZSwgdGhhdCB0aGUKICAgIEMgY29tcGlsZXIg c3VwcG9ydHMgdGhlIGNvbWJpbmVkIHVzZSBvZiBib3RoIHRoZSAnLWMnIGFuZCAnLW8nCiAgICBv cHRpb25zLiAgVGhlIHJlc3VsdCBvZiB0aGlzIGNoZWNrIGlzIHNhdmVkIGluIHRoZSBjYWNoZSB2 YXJpYWJsZQogICAgJ2FtX2N2X3Byb2dfY2NfY19vJywgYW5kIHNhaWQgcmVzdWx0IGNhbiBiZSBv dmVycmlkZGVuIGJ5CiAgICBwcmUtZGVmaW5pbmcgdGhhdCB2YXJpYWJsZS4KCiAgLSBUaGUgQU1f UFJPR19DQ19DX08gbWFjcm8gY2FuIHN0aWxsIGJlIGNhbGxlZCwgYWxiZWl0IHRoYXQgc2hvdWxk IG5vCiAgICBsb25nZXIgYmUgbmVjZXNzYXJ5LiBUaGlzIG1hY3JvIGlzIG5vdyBqdXN0IGEgdGhp biB3cmFwcGVyIGFyb3VuZCB0aGUKICAgIEF1dG9tYWtlLWVuaGFuY2VkIEFDX1BST0dfQ0MuICBU aGlzIG1lYW5zLCBhbW9uZyB0aGUgb3RoZXIgdGhpbmdzLAogICAgdGhhdCBpdHMgYmVoYXZpb3Ig aXMgY2hhbmdlZCBpbiB0aHJlZSB3YXlzOgoKICAgICAgMS4gSXQgbm8gbG9uZ2VyIGludm9rZXMg dGhlIEF1dG9jb25mLXByb3ZpZGVkIEFDX1BST0dfQ0NfQ19PCiAgICAgICAgIG1hY3JvIGJlaGlu ZCB0aGUgc2NlbmVzLgoKICAgICAgMi4gSXQgY2FjaGVzIHRoZSBjaGVjayByZXN1bHQgaW4gdGhl ICdhbV9jdl9wcm9nX2NjX2NfbycgdmFyaWFibGUsCiAgICAgICAgIGFuZCBub3QgaW4gYSAnYWNf Y3ZfcHJvZ19jY18qX2NfbycgdmFyaWFibGUgd2hvc2UgZXhhY3QgbmFtZSBpcwogICAgICAgICBk eW5hbWljYWxseSBjb21wdXRlZCBvbmx5IGF0IGNvbmZpZ3VyZSBydW50aW1lIChyZWFsbHkhKSBm cm9tCiAgICAgICAgIHRoZSBjb250ZW50IG9mIHRoZSAnJENDJyB2YXJpYWJsZS4KCiAgICAgIDMu IEl0IG5vIGxvbmdlciBhdXRvbWF0aWNhbGx5IEFDX0RFRklORSB0aGUgQyBwcmVwcm9jZXNzb3IK ICAgICAgICAgc3ltYm9sICdOT19NSU5VU19DX01JTlVTX08nLgoKKiBUZXhpbmZvIHN1cHBvcnQ6 CgogIC0gQXV0b21ha2UgY2FuIG5vdyBiZSBpbnN0cnVjdGVkIHRvIHBsYWNlICcuaW5mbycgZmls ZXMgZ2VuZXJhdGVkIGZyb20KICAgIFRleGluZm8gaW5wdXQgaW4gdGhlIGJ1aWxkZGlyIHJhdGhl ciB0aGFuIGluIHRoZSBzcmNkaXI7IHRoaXMgaXMgZG9uZQogICAgc3BlY2lmeWluZyB0aGUgbmV3 IGF1dG9tYWtlIG9wdGlvbiAnaW5mby1pbi1idWlsZGRpcicuICBUaGlzIGZlYXR1cmUKICAgIHdh cyByZXF1ZXN0ZWQgYnkgdGhlIGRldmVsb3BlcnMgb2YgR0NDLCBHREIsIEdOVSBiaW51dGlscyBh bmQgdGhlIEdOVQogICAgYmZkIGxpYnJhcnkuICBTZWUgdGhlIGV4dGVuc2l2ZSBkaXNjdXNzaW9u IGFib3V0IGF1dG9tYWtlIGJ1ZyMxMTAzNAogICAgZm9yIG1vcmUgZGV0YWlscy4KCiAgLSBGb3Ig cXVpdGUgYSBsb25nIHRpbWUsIEF1dG9tYWtlIGhhcyBiZWVuIGltcGxlbWVudGluZyBhbiB1bmRv Y3VtZW50ZWQKICAgIGhhY2sgd2hpY2ggZW5zdXJlZCB0aGF0ICcuaW5mbycgZmlsZXMgd2hpY2gg YXBwZWFyZWQgdG8gYmUgY2xlYW5lZAogICAgKGJ5IGJlaW5nIGxpc3RlZCBpbiB0aGUgQ0xFQU5G SUxFUyBvciBESVNUQ0xFQU5GSUxFUyB2YXJpYWJsZXMpIHdlcmUKICAgIGJ1aWx0IGluIHRoZSBi dWlsZGRpciByYXRoZXIgdGhhbiBpbiB0aGUgc3JjZGlyOyB0aGlzIGhhY2sgd2FzCiAgICBpbnRy b2R1Y2VkIHRvIGVuc3VyZSBiZXR0ZXIgYmFja3dhcmQtY29tcGF0aWJpbGl0eSB3aXRoIHBhY2th Z2UKICAgIHN1Y2ggYXMgVGV4aW5mbywgd2hpY2ggZG8gdGhpbmdzIGxpa2U6CgogICAgICAgIGlu Zm9fVEVYSU5GT1MgPSB0ZXhpbmZvLnR4aSBpbmZvLXN0bmQudGV4aSBpbmZvLnRleGkKICAgICAg ICBESVNUQ0xFQU5GSUxFUyA9IHRleGluZm8gdGV4aW5mby0qIGluZm8qLmluZm8qCiAgICAgICAg IyBEbyBub3QgY3JlYXRlIGluZm8gZmlsZXMgZm9yIGRpc3RyaWJ1dGlvbi4KICAgICAgICBkaXN0 LWluZm86CiAgICAgICAgICAgIEA6CgogICAgaW4gb3JkZXIgbm90IHRvIGRpc3RyaWJ1dGUgZ2Vu ZXJhdGVkICcuaW5mbycgZmlsZXMuCgogICAgTm93IHRoYXQgd2UgaGF2ZSB0aGUgJ2luZm8taW4t YnVpbGRkaXInIG9wdGlvbiB0aGF0IGV4cGxpY2l0bHkgY2F1c2VzCiAgICBnZW5lcmF0ZWQgJy5p bmZvJyBmaWxlcyB0byBiZSBwbGFjZWQgaW4gdGhlIGJ1aWxkZGlyLCB0aGlzIGhhY2sgc2hvdWxk CiAgICBiZSBsb25nZXIgbmVjZXNzYXJ5LCBzbyB3ZSBkZXByZWNhdGUgaXQgd2l0aCBydW50aW1l IHdhcm5pbmdzLgogICAgSXQgd2lsbCBiZSByZW1vdmVkIGFsdG9nZXRoZXIgaW4gQXV0b21ha2Ug Mi4wLgoKKiBSZWxhdGl2ZSBkaXJlY3RvcnkgaW4gTWFrZWZpbGUgZnJhZ21lbnRzOgoKICAtIFRo ZSBzcGVjaWFsIEF1dG9tYWtlLXRpbWUgc3Vic3RpdHV0aW9ucyAnJXJlbGRpciUnIGFuZCAnJWNh bm9uX3JlbGRpciUnCiAgICAoYW5kIHRoZWlyIHNob3J0IHZlcnNpb25zLCAnJUQlJyBhbmQgJyVD JScgcmVzcGVjdGl2ZWx5KSBjYW4gbm93IGJlIHVzZWQKICAgIGluIGFuIGluY2x1ZGVkIE1ha2Vm aWxlIGZyYWdtZW50LiAgVGhlIGZvcm1lciBpcyBzdWJzdGl0dXRlZCB3aXRoIHRoZQogICAgcmVs YXRpdmUgZGlyZWN0b3J5IG9mIHRoZSBpbmNsdWRlZCBmcmFnbWVudCAoY29tcGFyZWQgdG8gdGhl IHRvcC1sZXZlbAogICAgaW5jbHVkaW5nIE1ha2VmaWxlKSwgYW5kIHRoZSBsYXR0ZXIgd2l0aCB0 aGUgY2Fub25pY2FsaXplZCB2ZXJzaW9uIG9mCiAgICB0aGUgc2FtZSByZWxhdGl2ZSBkaXJlY3Rv cnkuCgogICAgICAgICMgaW4gJ01ha2VmaWxlLmFtJzoKICAgICAgICBiaW5fUFJPR1JBTVMgPSAj IHdpbGwgYmUgdXBkYXRlZCBieSBpbmNsdWRlZCBNYWtlZmlsZSBmcmFnbWVudHMKICAgICAgICBp bmNsdWRlIHNyYy9NYWtlZmlsZS5pbmMKCiAgICAgICAgIyBpbiAnc3JjL01ha2VmaWxlLmluYyc6 CiAgICAgICAgYmluX1BST0dSQU1TICs9ICVyZWxkaXIlL2ZvbwogICAgICAgICVjYW5vbl9yZWxk aXIlX2Zvb19TT1VSQ0VTID0gJXJlbGRpciUvYmFyLmMKCiAgICBUaGlzIHNob3VsZCBiZSBlc3Bl Y2lhbGx5IHVzZWZ1bCBmb3IgcGFja2FnZXMgdXNpbmcgYSBub24tcmVjdXJzaXZlCiAgICBidWls ZCBzeXN0ZW0uCgoqIERlcHJlY2F0ZWQgZGlzdHJpYnV0aW9uIGZvcm1hdHM6CgogIC0gVGhlICdz aGFyJyBhbmQgJ2NvbXByZXNzJyBkaXN0cmlidXRpb24gZm9ybWF0cyBhcmUgZGVwcmVjYXRlZCwg YW5kCiAgICBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gQXV0b21ha2UgMi4wLiAgQWNjb3JkaW5n bHksIHRoZSB1c2Ugb2YgdGhlCiAgICAnZGlzdC1zaGFyJyBhbmQgJ2Rpc3QtdGFyWicgd2lsbCBj YXVzZSB3YXJuaW5ncyBhdCBhdXRvbWFrZSBydW50aW1lCiAgICAoaW4gdGhlICdvYnNvbGV0ZScg Y2F0ZWdvcnkpLCBhbmQgdGhlIHJlY2lwZXMgb2YgdGhlIEF1dG9tYWtlLWdlbmVyYXRlZAogICAg dGFyZ2V0cyAnZGlzdC1zaGFyJyBhbmQgJ2Rpc3QtdGFyWicgd2lsbCB1bmNvbmRpdGlvbmFsbHkg ZGlzcGxheQogICAgKG5vbi1mYXRhbCkgd2FybmluZ3MgYXQgbWFrZSBydW50aW1lLgoKKiBOZXcg Y29uZmlndXJlIHJ1bnRpbWUgd2FybmluZ3MgYWJvdXQgInJtIC1mIiBzdXBwb3J0OgoKICAtIFRv IHNpbXBsaWZ5IHRyYW5zaXRpb24gdG8gQXV0b21ha2UgMi4wLCB0aGUgc2hlbGwgY29kZSBleHBh bmRlZCBieQogICAgQU1fSU5JVF9BVVRPTUFLRSBub3cgY2hlY2tzIChhdCBjb25maWd1cmUgcnVu dGltZSkgdGhhdCB0aGUgZGVmYXVsdAogICAgJ3JtJyBwcm9ncmFtIGluIFBBVEggZG9lc24ndCBj b21wbGFpbiB3aGVuIGNhbGxlZCB3aXRob3V0IGFueQogICAgbm9uLW9wdGlvbiBhcmd1bWVudCBp ZiB0aGUgJy1mJyBvcHRpb24gaXMgZ2l2ZW4gKHNvIHRoYXQgY29tbWFuZHMgbGlrZQogICAgInJt IC1mIiBhbmQgInJtIC1yZiIgYWN0IGFzIGEgbm8tb3AsIGluc3RlYWQgb2YgcmFpc2luZyB1c2Fn ZSBlcnJvcnMpLgogICAgSWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIHRoZSBjb25maWd1cmUgc2Ny aXB0IGlzIGFib3J0ZWQsIHRvIGNhbGwgdGhlCiAgICBhdHRlbnRpb24gb2YgdGhlIHVzZXIgb24g dGhlIGlzc3VlLCBhbmQgaW52aXRlIGhpbSB0byBmaXggaGlzIFBBVEguCiAgICBUaGUgY2hlY2tl ZCAncm0nIGJlaGF2aW9yIGlzIHZlcnkgd2lkZXNwcmVhZCBpbiB0aGUgd2lsZCwgYW5kIHdpbGwg YmUKICAgIHJlcXVpcmVkIGJ5IGZ1dHVyZSBQT1NJWCB2ZXJzaW9uczoKCiAgICAgICAgPGh0dHA6 Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTU0Mj4KCiAgICBUaGUgdXNlciBjYW4g c3RpbGwgZm9yY2UgdGhlIGNvbmZpZ3VyZSBwcm9jZXNzIHRvIGNvbXBsZXRlIGV2ZW4gaW4gdGhl CiAgICBwcmVzZW5jZSBvZiBhIGJyb2tlbiAncm0nIGJ5IGRlZmluaW5nIHRoZSBBQ0NFUFRfSU5G RVJJT1JfUk1fUFJPR1JBTQogICAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gInllcyIuICBBbmQg dGhlIGdlbmVyYXRlZCBNYWtlZmlsZXMgc2hvdWxkCiAgICBzdGlsbCB3b3JrIGNvcnJlY3RseSBl dmVuIHdoZW4gc3VjaCBicm9rZW4gJ3JtJyBpcyB1c2VkLiAgQnV0IG5vdGUKICAgIHRoYXQgdGhp cyB3aWxsIG5vIGxvbmdlciBiZSB0aGUgY2FzZSB3aXRoIEF1dG9tYWtlIDIuMCB0aG91Z2gsIHNv LCBpZgogICAgeW91IGVuY291bnRlciB0aGUgd2FybmluZywgcGxlYXNlIHJlcG9ydCBpdCB0byB1 cyBBU0FQIChhbmQgdHJ5IHRvIGZpeAogICAgeW91ciBlbnZpcm9ubWVudCBhcyB3ZWxsKS4KCn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjEzLjQgKDIwMTgtMDYtMTQpOgoKKiBCdWdzIGZp eGVkOgoKICAtIEZpeCBhIG1pbm9yIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiBBdXRvbWFrZSAx LjEzLjM6IHdoZW4gdHdvIG9yIG1vcmUKICAgIHVzZXItZGVmaW5lZCBzdWZmaXggcnVsZXMgd2Vy ZSBwcmVzZW50IGluIGEgc2luZ2xlIE1ha2VmaWxlLmFtLAogICAgYXV0b21ha2Ugd291bGQgbmVl ZGxlc3NseSBpbmNsdWRlIGRlZmluaXRpb24gb2Ygc29tZSBtYWtlIHZhcmlhYmxlcwogICAgcmVs YXRlZCB0byBDIGNvbXBpbGF0aW9uIGluIHRoZSBnZW5lcmF0ZWQgTWFrZWZpbGUuaW4gKGJ1ZyMx NDU2MCkuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS4xMy4zICgyMDEzLTA2LTAzKToK CiogRG9jdW1lbnRhdGlvbiBmaXhlczoKCiAgLSBUaGUgZG9jdW1lbnRhdGlvbiBubyBsb25nZXIg bWlzdGFrZW5seSByZXBvcnRzIHRoYXQgdGhlIG9ic29sZXRlCiAgICAnQU1fTUtESVJfUFJPR19Q JyBtYWNybyBhbmQgJyQobWtkaXJfcCknIG1ha2UgdmFyaWFibGUgYXJlIGdvaW5nCiAgICB0byBi ZSByZW1vdmVkIGluIEF1dG9tYWtlIDIuMC4KCiogQnVncyBmaXhlZDoKCiAgLSBCeXRlLWNvbXBp bGF0aW9uIG9mIEVtYWNzIGxpc3AgZmlsZXMgY291bGQgZmFpbCBzcHVyaW91c2x5IG9uCiAgICBT b2xhcmlzLCAgd2hlbiAvYmluL2tzaCBvciAvdXNyL3hwZzQvYmluL3NoIHdlcmUgdXNlZCBhcyBz aGVsbC4KCiAgLSBJZiB0aGUgc2FtZSB1c2VyLWRlZmluZWQgc3VmZml4ZXMgd2VyZSB0cmFuc2Zv cm1lZCBpbnRvIGRpZmZlcmVudAogICAgQXV0b21ha2Uta25vd24gc3VmZml4ZXMgaW4gZGlmZmVy ZW50IE1ha2VmaWxlLmFtIGZpbGVzIGluIHRoZSBzYW1lCiAgICBwcm9qZWN0LCBhdXRvbWFrZSBj b3VsZCBnZXQgY29uZnVzZWQgYW5kIGdlbmVyYXRlIGluY29uc2lzdGVudAogICAgTWFrZWZpbGVz IChhdXRvbWFrZSBidWcjMTQ0NDEpLgogICAgRm9yIGV4YW1wbGUsIGlmICdNYWtlZmlsZS5hbScg Y29udGFpbmVkIGEgIi5leHQuY2M6IiBzdWZmaXggcnVsZSwKICAgIGFuZCAnc3ViL01ha2VmaWxl LmFtJyBjb250YWluZWQgYSAiLmV4dC5jOiIgc3VmZml4IHJ1bGUsIGF1dG9tYWtlCiAgICB3b3Vs ZCBoYXZlIG1pc3Rha2VubHkgcGxhY2VkIGludG8gJ01ha2VmaWxlLmluJyBydWxlcyB0byBjb21w aWxlCiAgICAiKi5jIiBmaWxlcyBpbnRvIG9iamVjdCBmaWxlcywgYW5kIGludG8gJ3N1Yi9NYWtl ZmlsZS5pbicgcnVsZXMgdG8KICAgIGNvbXBpbGUgIiouY2MiIGZpbGVzIGludG8gb2JqZWN0IGZp bGVzIC0tLSByYXRoZXIgdGhhbiB0aGUgb3RoZXIKICAgIHdheSBhcm91bmQuICBUaGlzIGlzIG5v dyBmaXhlZC4KCiogVGVzdHN1aXRlIHdvcms6CgogIC0gVGhlIHRlc3QgY2FzZXMgbm8gbG9uZ2Vy IGhhdmUgdGhlIGV4ZWN1dGFibGUgYml0IHNldC4gIFRoaXMgc2hvdWxkCiAgICBtYWtlIGl0IGNs ZWFyIHRoYXQgdGhleSBhcmUgbm90IG1lYW50IHRvIGJlIHJ1biBkaXJlY3RseTsgYXMKICAgIGV4 cGxhaW5lZCBpbiB0L1JFQURNRSwgdGhleSBjYW4gb25seSBiZSBydW4gdGhyb3VnaCB0aGUgY3Vz dG9tCiAgICAncnVudGVzdCcgc2NyaXB0LCBvciBieSBhICJtYWtlIGNoZWNrIiBpbnZvY2F0aW9u LgoKICAtIFRoZSB0ZXN0c3VpdGUgaGFzIHNlZW4gdGhlIGludHJvZHVjdGlvbiBvZiBhIG5ldyBo ZWxwZXIgZnVuY3Rpb24KICAgICdydW5fbWFrZScsIGFuZCBzZXZlcmFsIHJlbGF0ZWQgY2hhbmdl cy4gIFRoZXNlIHNlcnZlIGEgdHdvLWZvbGQKICAgIHB1cnBvc2U6CgogICAgIDEuIFJlbW92ZSBi cml0dGxlbmVzcyBkdWUgdG8gdGhlIHVzZSBvZiAibWFrZSAtZSIgaW4gdGVzdCBjYXNlcy4KCiAg ICAgMi4gU2VhbWxlc3NseSBhbGxvdyB0aGUgdXNlIG9mIHBhcmFsbGVsIG1ha2UgKCJtYWtlIC1q Li4uIikgaW4gdGhlCiAgICAgICAgdGVzdCBjYXNlcywgZXZlbiB3aGVyZSByZWRpcmVjdGlvbiBv ZiBtYWtlIG91dHB1dCBpcyBpbnZvbHZlZAogICAgICAgIChzZWUgYXV0b21ha2UgYnVnIzExNDEz IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBzdWJ0bGUgaXNzdWVzCiAgICAgICAgaW4gdGhpcyBh cmVhKS4KCiAgLSBTZXZlcmFsIHNwdXJpb3VzIGZhaWx1cmVzIGhhdmUgYmVlbiBmaXhlZCAodGhl eSBoaXQgZXNwZWNpYWxseQogICAgTWluR1cvTVNZUyBidWlsZHMpLiAgU2VlIGF1dG9tYWtlIGJ1 Z3MgIzE0NDkzLCAjMTQ0OTQsICMxNDQ5NSwKICAgICMxNDQ5OCwgIzE0NDk5LCAjMTQ1MDAsICMx NDUwMSwgIzE0NTE3IGFuZCAjMTQ1MjguCgogIC0gU29tZSBvdGhlciBtaW5vciBtaXNjZWxsYW5l b3VzIGNoYW5nZXMgYW5kIGZpeGxldHMuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS4x My4yICgyMDEzLTA1LTE1KToKCiogRG9jdW1lbnRhdGlvbiBmaXhlczoKCiAgLSBUaGUgbG9uZy1k ZXByZWNhdGVkIGJ1dCBzdGlsbCBzdXBwb3J0ZWQgdHdvLWFyZ3VtZW50cyBpbnZvY2F0aW9uIGZv cm0KICAgIG9mIEFNX0lOSVRfQVVUT01BS0UgaXMgZG9jdW1lbnRlZCBvbmNlIGFnYWluLiAgVGhp cyBzZWVtcyB0aGUgc2FuZXN0CiAgICB0aGluZyB0byBkbywgZ2l2ZW4gdGhhdCBzdXBwb3J0IGZv ciBzdWNoIHVzYWdlIG1pZ2h0IG5lZWQgdG8gcmVtYWluCiAgICBpbiBwbGFjZSBmb3IgYW4gdW5z cGVjaWZpZWQgYW1vdW50IG9mIHRpbWUgaW4gb3JkZXIgdG8gY2F0ZXIgdG8gcGVvcGxlCiAgICB3 aG8gd2FudCB0byBkZWZpbmUgdGhlIHZlcnNpb24gbnVtYmVyIGZvciB0aGVpciBwYWNrYWdlIGR5 bmFtaWNhbGx5IGF0CiAgICBjb25maWd1cmUgcnVudGltZSAodW5mb3J0dW5hdGVseSwgQXV0b2Nv bmYgZG9lcyBub3QgeWV0IHN1cHBvcnQgdGhpcwogICAgc2NlbmFyaW8sIHNvIHdlIGNhbm5vdCBk ZWxlZ2F0ZSB0aGUgd29yayB0byBpdCkuCgogIC0gVGhlIHNlcmlhbCB0ZXN0c3VpdGUgaGFybmVz cyBpcyBubyBsb25nZXIgcmVwb3J0ZWQgYXMgImRlcHJlY2F0ZWQiLAogICAgYnV0IGFzICJkaXNj b3VyYWdlZCIuICBXZSBoYXZlIG5vIHBsYW4gdG8gcmVtb3ZlIGl0LCBub3IgdG8gbWFrZSBpdHMK ICAgIHVzZSBjYXVzZSBydW50aW1lIHdhcm5pbmdzLgoKICAtIFRoZSBwYXJhbGxlbCB0ZXN0c3Vp dGUgaXMgbm8gbG9uZ2VyIHJlcG9ydGVkIGFzICJleHBlcmltZW50YWwiOyBpdAogICAgaXMgd2Vs bCB0ZXN0ZWQsIGFuZCBzaG91bGQgYmUgc3RhYmxlIG5vdy4KCiAgLSBUaGUgJ3NoYXInIGFuZCAn dGFyWicgZGlzdHJpYnV0aW9uIGZvcm1hdHMgYW5kIHRoZSAnZGlzdC1zaGFyJyBhbmQKICAgICdk aXN0LXRhclonIG9wdGlvbnMgYXJlIG9ic29sZXNjZW50LCBhbmQgdGhlaXIgdXNlIGlzIGRlcHJl Y2F0ZWQKICAgIGluIHRoZSBkb2N1bWVudGF0aW9uLgoKICAtIE90aGVyIG1pbm9yIG1pc2NlbGxh bmVvdXMgZml4ZXMgYW5kIGltcHJvdmVtZW50czsgaW4gcGFydGljdWxhciwKICAgIHNvbWUgaW1w cm92ZW1lbnRzIGluIGNyb3NzLXJlZmVyZW5jZXMuCgoqIE9ic29sZXNjZW50IGZlYXR1cmVzOgoK ICAtIFVzZSBvZiBzdWZmaXgtbGVzcyBpbmZvIGZpbGVzICh0aGF0IGNhbiBiZSBzcGVjaWZpZWQg dGhyb3VnaCB0aGUKICAgICdAc2V0ZmlsZW5hbWUnIG1hY3JvIGluIFRleGluZm8gaW5wdXQgZmls ZXMpIGlzIGRpc2NvdXJhZ2VkLCBhbmQKICAgIGl0cyB1c2Ugd2lsbCByYWlzZSB3YXJuaW5ncyBp biB0aGUgJ29ic29sZXRlJyBjYXRlZ29yeS4gIFNpbXBseQogICAgdXNlIHRoZSAnLmluZm8nIGV4 dGVuc2lvbiBmb3IgYWxsIHlvdXIgaW5mbyBmaWxlcywgdHJhbnNmb3JtaW5nCiAgICB1c2FnZXMg bGlrZToKCiAgICAgICAgQHNldGZpbGVuYW1lIG15cHJvZ3JhbQoKICAgIGludG86CgogICAgICAg IEBzZXRmaWxlbmFtZSBteXByb2dyYW0uaW5mbwoKICAtIFVzZSBvZiBUZXhpbmZvIGlucHV0IGZp bGVzIHdpdGggJy50eGknIG9yICcudGV4aW5mbycgZXh0ZW5zaW9ucwogICAgaXMgZGlzY291cmFn ZWQsIGFuZCBpdHMgdXNlIHdpbGwgcmFpc2Ugd2FybmluZ3MgaW4gdGhlICdvYnNvbGV0ZScKICAg IGNhdGVnb3J5LiAgWW91IGFyZSBhZHZpc2VkIHRvIHNpbXBseSB1c2UgdGhlICcudGV4aScgZXh0 ZW5zaW9uCiAgICBpbnN0ZWFkLgoKKiBCdWdzIGZpeGVkOgoKICAtIFdoZW4gdGhlICd1c3Rhcicg b3B0aW9uIGlzIHVzZWQsIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdCBubwogICAgbG9u Z2VyIHJpc2tzIGhhbmdpbmcgZHVyaW5nIHRoZSB0ZXN0cyBmb3IgdGhlIGF2YWlsYWJpbGl0eSBv ZiB0aGUKICAgICdwYXgnIHV0aWxpdHksIGV2ZW4gaWYgdGhlIHVzZXIgcnVubmluZyBjb25maWd1 cmUgaGFzIGEgVUlEIG9yIEdJRAogICAgdGhhdCByZXF1aXJlcyBtb3JlIHRoYW4gMjEgYml0cyB0 byBiZSByZXByZXNlbnRlZC4KICAgIFNlZSBhdXRvbWFrZSBidWcjODM0MyBhbmQgYnVnIzEzNTg4 LgoKICAtIFRoZSBvYnNvbGV0ZSBtYWNyb3MgQU1fQ09ORklHX0hFQURFUiBvciBBTV9QUk9HX0ND X1NUREMgd29yayBvbmNlCiAgICBhZ2FpbiwgYXMgdGhleSBkaWQgaW4gQXV0b21ha2UgMS4xMi54 IChhbGJlaXQgcHJpbnRpbmcgcnVudGltZQogICAgd2FybmluZ3MgaW4gdGhlICdvYnNvbGV0ZScg Y2F0ZWdvcnkpLiAgUmVtb3ZpbmcgdGhlbSBoYXMgdHVybmVkCiAgICBvdXQgdG8gYmUgYSB2ZXJ5 IGJhZCBpZGVhLCBiZWNhdXNlIGl0IGNvbXBsaWNhdGVkIGRpc3RybyBwYWNraW5nCiAgICBlbm9y bW91c2x5LiAgTWFraW5nIHRoZW0gaXNzdWUgZmF0YWwgd2FybmluZ3MsIGFzIHdlIGRpZCBpbgog ICAgQXV0b21ha2UgMS4xMywgaGFzIHR1cm5lZCBvdXQgdG8gYmUgYSBzaW1pbGFybHkgdmVyeSBi YWQgaWRlYSwKICAgIGZvciBleGFjdGx5IHRoZSBzYW1lIHJlYXNvbi4KCiAgLSBhY2xvY2FsIHdp bGwgbm8gbG9uZ2VyIGVycm9yIG91dCBpZiB0aGUgZmlyc3QgbG9jYWwgbTQgZGlyZWN0b3J5CiAg ICAoYXMgc3BlY2lmaWVkIGJ5IHRoZSAnLUknIG9wdGlvbiBvciB0aGUgJ0FDX0NPTkZJR19NQUNS T19ESVJTJyBvcgogICAgJ0FDX0NPTkZJR19NQUNST19ESVInIG1hY3JvcykgZG9lc24ndCBleGlz dDsgaXQgd2lsbCBtZXJlbHkgcmVwb3J0CiAgICBhIHdhcm5pbmcgaW4gdGhlICd1bnN1cHBvcnRl ZCcgY2F0ZWdvcnkuICBUaGlzIGlzIGRvbmUgdG8gc3VwcG9ydAogICAgc29tZSBwcmUtZXhpc3Rp bmcgcmVhbC13b3JsZCB1c2FnZXMuICBTZWUgYXV0b21ha2UgYnVnIzEzNTE0LgoKICAtIGFjbG9j YWwgd2lsbCBubyBsb25nZXIgY29uc2lkZXIgZGlyZWN0b3JpZXMgZm9yIGV4dHJhIG00IGZpbGVz IG1vcmUKICAgIHRoYW4gb25jZSwgZXZlbiBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgbXVsdGlwbGUg dGltZXMuICBUaGlzIGVuc3VyZXMKICAgIHBhY2thZ2VzIHRoYXQgc3BlY2lmeSBib3RoCgogICAg ICAgIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkgICAgICAgaW4gY29uZmlndXJlLmFjCiAgICAg ICAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQgICAgICAgICBpbiBNYWtlZmlsZS5hbQoKICAgIHdp bGwgd29yayBjb3JyZWN0bHksIGV2ZW4gd2hlbiB0aGUgJ200JyBkaXJlY3RvcnkgY29udGFpbnMg bm8KICAgIHBhY2thZ2Utc3BlY2lmaWMgZmlsZXMsIGJ1dCBpcyB1c2VkIG9ubHkgdG8gaW5zdGFs bCB0aGlyZC1wYXJ0eQogICAgbTQgZmlsZXMgKGFzIGNhbiBoYXBwZW4gd2l0aCBlLmcuLCAibGli dG9vbGl6ZSAtLWluc3RhbGwiKS4KICAgIFNlZSBhdXRvbWFrZSBidWcjMTM1MTQuCgogIC0gQW5h bHlzaXMgb2YgbWFrZSBmbGFncyBpbiBBdXRvbWFrZS1nZW5lcmF0ZWQgcnVsZXMgaGFzIGJlZW4g bWFkZSBtb3JlCiAgICByb2J1c3QsIGFuZCBtb3JlIGZ1dHVyZS1wcm9vZi4gIEZvciBleGFtcGxl LCBpbiBwcmVzZW5jZSBvZiBtYWtlIHRoYXQKICAgIChsaWtlICctSScpIHRha2UgYW4gYXJndW1l bnQsIHRoZSBjaGFyYWN0ZXJzIGluIHNhaWQgYXJndW1lbnQgd2lsbCBubwogICAgbG9uZ2VyIGJl IHNwdXJpb3VzbHkgY29uc2lkZXJlZCBhcyBhIHNldCBvZiBhZGRpdGlvbmFsIG1ha2Ugb3B0aW9u cy4KICAgIEluIHBhcnRpY3VsYXIsIGF1dG9tYWtlLWdlbmVyYXRlZCBydWxlcyB3aWxsIG5vIGxv bmdlciBzcHVyaW91c2x5CiAgICBiZWxpZXZlIHRvIGJlIHJ1bm5pbmcgaW4gZHJ5IG1vZGUgKCJt YWtlIC1uIikgaWYgcnVuIHdpdGggYW4gaW52b2NhdGlvbgogICAgbGlrZSAibWFrZSAtSSBub29i Ijsgbm9yIHdpbGwgdGhleSBiZWxpZXZlIHRvIGJlIHJ1bm5pbmcgaW4ga2VlcC1nb2luZwogICAg bW9kZSAoIm1ha2UgLWsiKSBpZiBydW4gd2l0aCBhbiBpbnZvY2F0aW9uIGxpa2UgIm1ha2UgLUkg a29vbCIKICAgIChhdXRvbWFrZSBidWcjMTI1NTQpLgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKTmV3 IGluIDEuMTMuMSAoMjAxMy0wMS0wMSk6CgoqIEJ1Z3MgZml4ZWQ6CgogIC0gVXNlIG9mIHRoZSBv YnNvbGV0ZSBtYWNyb3MgQU1fQ09ORklHX0hFQURFUiBvciBBTV9QUk9HX0NDX1NUREMgbm93CiAg ICBjYXVzZXMgYSBjbGVhciBhbmQgaGVscGZ1bCBlcnJvciBtZXNzYWdlLCBpbnN0ZWFkIG9mIG9i c2N1cmUgb25lcwogICAgKGlzc3VlIGludHJvZHVjZWQgaW4gQXV0b21ha2UgMS4xMykuCgp+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS4xMyAoMjAxMi0xMi0yOCk6CgoqIEJ1Z3MgZml4ZWQ6 CgogIC0geWx3cmFwIHJlbmFtZXMgcHJvcGVybHkgaGVhZGVyIGd1YXJkcyBpbiBnZW5lcmF0ZWQg aGVhZGVyIGZpbGVzCiAgICAoKi5oKSwgaW5zdGVhZCBvZiBsZWF2aW5nIFlfVEFCX0guCgogIC0g eWx3cmFwIG5vdyBhbHNvIGNvbnZlcnRzIGhlYWRlciBndWFyZHMgaW4gaW1wbGVtZW50YXRpb24g ZmlsZXMKICAgICgqLmMpLiAgQmVjYXVzZSB5bHdyYXAgZmFpbGVkIHRvIHJlbmFtZSBwcm9wZXJs eSAjaW5jbHVkZSBpbiB0aGUKICAgIGltcGxlbWVudGF0aW9uIGZpbGVzLCBjdXJyZW50IHZlcnNp b25zIG9mIEJpc29uIChlLmcuLCAyLjcpCiAgICBkdXBsaWNhdGUgdGhlIGdlbmVyYXRlZCBoZWFk ZXIgZmlsZSBpbiB0aGUgaW1wbGVtZW50YXRpb24gZmlsZS4KICAgIFRoZSBoZWFkZXIgZ3VhcmQg dGhlbiBwcm90ZWN0cyB0aGUgaW1wbGVtZW50YXRpb24gZmlsZSBmcm9tCiAgICBkdXBsaWNhdGUg ZGVmaW5pdGlvbnMgZnJvbSB0aGUgaGVhZGVyIGZpbGUuCgoqIFZlcnNpb24gcmVxdWlyZW1lbnRz OgoKICAtIEF1dG9jb25mIDIuNjUgb3IgZ3JlYXRlciBpcyBub3cgcmVxdWlyZWQuCgogIC0gVGhl IHJ1bGVzIHRvIGJ1aWxkIFBERiBhbmQgRFZJIG91dHB1dCBmcm9tIFRleGluZm8gaW5wdXQgbm93 CiAgICByZXF1aXJlIFRleGluZm8gNC45IG9yIGxhdGVyLgoKKiBPYnNvbGV0ZSBmZWF0dXJlczoK CiAgLSBTdXBwb3J0IGZvciB0aGUgIkN5Z251cy1zdHlsZSIgdHJlZXMgKG9uY2UgZW5hYmxlZCBi eSB0aGUgJ2N5Z251cycKICAgIG9wdGlvbikgaGFzIGJlZW4gcmVtb3ZlZC4gIFNlZSBkaXNjdXNz aW9uIGFib3V0IGF1dG9tYWtlIGJ1ZyMxMTAzNAogICAgZm9yIG1vcmUgYmFja2dyb3VuZDogPGh0 dHBzOi8vZGViYnVncy5nbnUub3JnLzExMDM0Pi4KCiAgLSBUaGUgZGVwcmVjYXRlZCBhY2xvY2Fs IG9wdGlvbiAnLS1hY2RpcicgaGFzIGJlZW4gcmVtb3ZlZC4gIFlvdQogICAgc2hvdWxkIHVzZSB0 aGUgb3B0aW9ucyAnLS1hdXRvbWFrZS1hY2RpcicgYW5kICctLXN5c3RlbS1hY2RpcicKICAgIGlu c3RlYWQgKHdoaWNoIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIGluIEF1dG9tYWtlIDEuMTEuMikuCgog IC0gVGhlIGZvbGxvd2luZyBsb25nLW9ic29sZXRlIG00IG1hY3JvcyBoYXZlIGJlZW4gcmVtb3Zl ZDoKCiAgICAgIEFNX1BST0dfQ0NfU1REQzogICAgc3VwZXJzZWRlZCBieSBBQ19QUk9HX0NDIHNp bmNlIE9jdG9iZXIgMjAwMgogICAgICBmcF9QUk9HX0NDX1NUREM6ICAgIGJyb2tlbiBhbGlhcyBm b3IgQU1fUFJPR19DQ19TVERDCiAgICAgIGZwX1dJVEhfRE1BTExPQzogICAgb2xkIGFsaWFzIGZv ciBBTV9XSVRIX0RNQUxMT0MKICAgICAgQU1fQ09ORklHX0hFQURFUjogICBzdXBlcnNlZGVkIGJ5 IEFDX0NPTkZJR19IRUFERVJTIHNpbmNlIEp1bHkgMjAwMgogICAgICB1ZF9QQVRIX0xJU1BESVI6 ICAgIG9sZCBhbGlhcyBmb3IgQU1fUEFUSF9MSVNQRElSCiAgICAgIGptX01BSU5UQUlORVJfTU9E RTogb2xkIGFsaWFzIGZvciBBTV9NQUlOVEFJTkVSX01PREUKICAgICAgdWRfR05VX0dFVFRFWFQ6 ICAgICBvbGQgYWxpYXMgZm9yIEFNX0dOVV9HRVRURVhUCiAgICAgIGdtX1BST0dfTElCVE9PTDog ICAgb2xkIGFsaWFzIGZvciBBQ19QUk9HX0xJQlRPT0wKICAgICAgZnBfQ19QUk9UT1RZUEVTOiAg ICBvbGQgYWxpYXMgZm9yIEFNX0NfUFJPVE9UWVBFUyAod2hpY2ggd2FzIHBhcnQKICAgICAgICAg ICAgICAgICAgICAgICAgICBvZiB0aGUgbm93LXJlbW92ZWQgYXV0b21hdGljIGRlLUFOU0ktZmlj YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9mIEF1dG9tYWtlKQoKICAt IEFsbCB0aGUgIm9sZCBhbGlhcyIgbWFjcm9zIGluICdtNC9vYnNvbGV0ZS5tNCcgaGF2ZSBiZWVu IHJlbW92ZWQuCgogIC0gVXNlIG9mIHRoZSBsb25nLWRlcHJlY2F0ZWQgdHdvLSBhbmQgdGhyZWUt YXJndW1lbnRzIGludm9jYXRpb24gZm9ybXMKICAgIG9mIHRoZSBBTV9JTklUX0FVVE9NQUtFIGlz IG5vIGxvbmdlciBkb2N1bWVudGVkLiAgSXQncyBzdGlsbCBzdXBwb3J0ZWQKICAgIHRob3VnaCAo YWxiZWl0IHdpdGggYSB3YXJuaW5nIGluIHRoZSAnb2Jzb2xldGUnIGNhdGVnb3J5KSwgdG8gY2F0 ZXIKICAgIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gZGVmaW5lIHRoZSB2ZXJzaW9uIG51bWJlciBm b3IgdGhlaXIgcGFja2FnZQogICAgZHluYW1pY2FsbHkgKGUuZy4sIGZyb20gdGhlIGN1cnJlbnQg VkNTIHJldmlzaW9uKS4gIFdlJ2xsIGhhdmUgdG8KICAgIGNvbnRpbnVlIHRoaXMgc3VwcG9ydCB1 bnRpbCBBdXRvY29uZiBpdHNlbGYgaXMgZml4ZWQgdG8gYWxsb3cgYmV0dGVyCiAgICBzdXBwb3J0 IGZvciBzdWNoIGR5bmFtaWMgdmVyc2lvbiBudW1iZXJzLgoKKiBFbGlzcCBieXRlLWNvbXBpbGF0 aW9uOgoKICAtIFRoZSBieXRlIGNvbXBpbGF0aW9uIG9mICcuZWwnIGZpbGVzIGludG8gJy5lbGMn IGZpbGVzIGlzIG5vdyBkb25lCiAgICB3aXRoIGEgc3VmZml4IHJ1bGUuICBUaGlzIGhhcyBzaW1w bGlmaWVkIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLCBhbmQKICAgIG1vcmUgaW1wb3J0YW50bHkg bWFkZSBpdCBsZXNzIGJyaXR0bGUuICBUaGUgZG93bnNpZGUgaXMgdGhhdCBlbWFjcyBpcwogICAg bm93IGludm9rZWQgb25jZSBmb3IgZWFjaCAnLmVsJyBmaWxlcywgd2hpY2ggY2F1c2Ugc29tZSBu b3RpY2VhYmxlCiAgICBzbG93ZG93bnMuICBUaGVzZSBzaG91bGQgaG93ZXZlciBiZSBtaXRpZ2F0 ZWQgb24gbXVsdGljb3JlIG1hY2hpbmVzCiAgICAod2hpY2ggYXJlIGJlY29taW5nIHRoZSBub3Jt IHRvZGF5KSBpZiBjb25jdXJyZW50ICBtYWtlICgibWFrZSAtaiIpCiAgICBpcyB1c2VkLgoKICAt IEVsaXNwIGZpbGVzIHBsYWNlZCBpbiBhIHN1YmRpcmVjdG9yeSBhcmUgbm93IGJ5dGUtY29tcGls ZWQgdG8gJy5lbGMnCiAgICBmaWxlcyBpbiB0aGUgc2FtZSBzdWJkaXJlY3Rvcnk7IGZvciBleGFt cGxlLCBieXRlLWNvbXBpbGluZyBvZiBmaWxlCiAgICAnc3ViL2Zvby5lbCcgZmlsZSB3aWxsIHJl c3VsdCBpbiAnc3ViL2Zvby5lbGMnIHJhdGhlciB0aGFuIGluCiAgICAnZm9vLmVsYycuICBUaGlz IGJlaGF2aW9yIGlzIGJhY2t3YXJkLWluY29tcGF0aWJsZSB3aXRoIG9sZGVyCiAgICBBdXRvbWFr ZSB2ZXJzaW9ucywgYnV0IGl0IGlzIG1vcmUgbmF0dXJhbCBhbmQgbW9yZSBzYW5lLiAgU2VlIGFs c28KICAgIGF1dG9tYWtlIGJ1ZyM3NDQxLgoKICAtIFRoZSBFbWFjcyBpbnZvY2F0aW9uIHBlcmZv cm1pbmcgYnl0ZS1jb21waWxhdGlvbiBvZiAnLmVsJyBmaWxlcyBob25vcnMKICAgIHRoZSAkKEFN X0VMQ0ZMQUdTKSBhbmQgJChFTENGTEFHUykgdmFyaWFibGVzOyBhcyB0eXBpY2FsLCB0aGUgZm9y bWVyCiAgICBvbmUgaXMgIGRldmVsb3Blci1yZXNlcnZlZCBhbmQgdGhlIGxhdHRlciBvbmUgdXNl ci1yZXNlcnZlZC4KCiAgLSBUaGUgJ2VsaXNwLWNvbXAnIHNjcmlwdCwgb25jZSBwcm92aWRlZCBi eSBBdXRvbWFrZSwgaGFzIGJlZW4gcmVuZGVyZWQKICAgIG9ic29sZXRlZCBieSB0aGUganVzdC1k ZXNjcmliZWQgY2hhbmdlcywgYW5kIHRodXMgcmVtb3ZlZC4KCiogQ2hhbmdlcyB0byBBdXRvbWFr ZS1nZW5lcmF0ZWQgdGVzdHN1aXRlIGhhcm5lc3NlczoKCiAgLSBUaGUgcGFyYWxsZWwgdGVzdHN1 aXRlIGhhcm5lc3MgKHByZXZpb3VzbHkgb25seSBlbmFibGVkIGJ5IHRoZQogICAgJ3BhcmFsbGVs LXRlc3RzJyBvcHRpb24pIGlzIHRoZSBkZWZhdWx0IG9uZTsgdGhlIG9sZGVyIHNlcmlhbAogICAg dGVzdHN1aXRlIGhhcm5lc3Mgd2lsbCBzdGlsbCBiZSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgdXNl IG9mIHRoZQogICAgJ3NlcmlhbC10ZXN0cycgb3B0aW9uIChpbnRyb2R1Y2VkIGluIEF1dG9tYWtl IDEuMTIpLgoKICAtIFRoZSAnY29sb3ItdGVzdHMnIG9wdGlvbiBpcyBub3cgdW5jb25kaXRpb25h bGx5IGFjdGl2YXRlZCBieSBkZWZhdWx0LgogICAgSW4gcGFydGljdWxhciwgdGhpcyBtZWFucyB0 aGF0IHRlc3RzdWl0ZSBvdXRwdXQgaXMgbm93IGNvbG9yaXplZCBieQogICAgZGVmYXVsdCBpZiB0 aGUgYXR0YWNoZWQgdGVybWluYWwgc2VlbXMgdG8gc3VwcG9ydCBBTlNJIGVzY2FwZXMsIGFuZAog ICAgdGhhdCB0aGUgdXNlciBjYW4gZm9yY2Ugb3V0cHV0IGNvbG9yaXphdGlvbiBieSBzZXR0aW5n IHRoZSB2YXJpYWJsZQogICAgQU1fQ09MT1JfVEVTVFMgdG8gImFsd2F5cyIuICBUaGUgJ2NvbG9y LXRlc3RzJyBpcyBzdGlsbCByZWNvZ25pemVkCiAgICBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0 eSwgYWx0aG91Z2ggaXQncyBhIGhhbmRsZWQgYXMgYSBuby1vcCBub3cuCgoqIFNpbGVudCBydWxl cyBzdXBwb3J0OgoKICAtIFN1cHBvcnQgZm9yIHNpbGVudCBydWxlcyBpcyBub3cgYWx3YXlzIGFj dGl2ZSBpbiBBdXRvbWFrZS1nZW5lcmF0ZWQKICAgIE1ha2VmaWxlcy4gIFNvLCBhbHRob3VnaCB0 aGUgdmVyYm9zZSBvdXRwdXQgaXMgc3RpbGwgdGhlIGRlZmF1bHQsCiAgICB0aGUgdXNlciBjYW4g bm93IGFsd2F5cyB1c2UgIi4vY29uZmlndXJlIC0tZW5hYmxlLXNpbGVudC1ydWxlcyIgb3IKICAg ICJtYWtlIFY9MCIgdG8gZW5hYmxlIHF1aWV0ZXIgb3V0cHV0IGluIHRoZSBwYWNrYWdlIGhlJ3Mg YnVpbGRpbmcuCgogIC0gVGhlICdzaWxlbnQtcnVsZXMnIG9wdGlvbiBoYXMgbm93IGJlY29tZSBh IG5vLW9wLCBwcmVzZXJ2ZWQgZm9yCiAgICBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IG9ubHkuICBJ biBwYXJ0aWN1bGFyLCBpdHMgdXNlIG5vIGxvbmdlcgogICAgZGlzYWJsZXMgdGhlIHdhcm5pbmdz IGluIHRoZSAncG9ydGFiaWxpdHktcmVjdXJzaXZlJyBjYXRlZ29yeS4KCiogVGV4aW5mbyBTdXBw b3J0OgoKICAtIFRoZSBydWxlcyB0byBidWlsZCBQREYgYW5kIERWSSBmaWxlcyBmcm9tIFRleGlu Zm8gaW5wdXQgbm93IHJlcXVpcmUKICAgIFRleGluZm8gNC45IG9yIGxhdGVyLgoKICAtIFRoZSBy dWxlcyB0byBidWlsZCBQREYgYW5kIERWSSBmaWxlcyBmcm9tIFRleGluZm8gaW5wdXQgbm93IHVz ZSB0aGUKICAgICctLWJ1aWxkLWRpcicgb3B0aW9uLCB0byBrZWVwIHRoZSBhdXhpbGlhcnkgZmls ZXMgdXNlZCBieSB0ZXhpMmR2aQogICAgYW5kIHRleGkycGRmIGFyb3VuZCB3aXRob3V0IGNsdXR0 ZXJpbmcgdGhlIGJ1aWxkIGRpcmVjdG9yeSwgYW5kIHRvCiAgICBtYWtlIGl0IHBvc3NpYmxlIHRv IHJ1biB0aGUgImR2aSIgYW5kICJwZGYiIHJlY2lwZXMgaW4gcGFyYWxsZWwuCgoqIEF1dG9tYXRp YyByZW1ha2UgcnVsZXMgYW5kICdtaXNzaW5nJyBzY3JpcHQ6CgogIC0gVGhlICdtaXNzaW5nJyBz Y3JpcHQgbm8gbG9uZ2VyIHRyaWVzIHRvIHVwZGF0ZSB0aGUgdGltZXN0YW1wIG9mCiAgICBvdXQt b2YtZGF0ZSBmaWxlcyB0aGF0IHJlcXVpcmUgYSBtYWludGFpbmVyLXNwZWNpZmljIHRvb2wgdG8g YmUKICAgIHJlbWFkZSwgaW4gY2FzZSB0aGUgdXNlciBsYWNrcyBzdWNoIGEgdG9vbCAob3IgaGFz IGEgdG9vLW9sZCB2ZXJzaW9uCiAgICBvZiBpdCkuICBJdCBqdXN0IGdpdmVzIGEgdXNlZnVsIHdh cm5pbmcsIGFuZCBpbiBzb21lIGNhc2VzIGFsc28gYQogICAgdGlwIGFib3V0IGhvdyB0byBvYnRh aW4gc3VjaCBhIHRvb2wuCgogIC0gVGhlIG1pc3Npbmcgc2NyaXB0IGhhcyB0aHVzIGJlY29tZSB1 c2VsZXNzIGFzIGEgKHBvb3IpIHdheSB0byB3b3JrCiAgICBhcm91bmQgdGhlIHNrZXRjaGVkLXRp bWVzdGFtcHMgaXNzdWVzIHRoYXQgY2FuIGhhcHBlbiBmb3IgcHJvamVjdHMKICAgIHRoYXQga2Vl cCBnZW5lcmF0ZWQgZmlsZXMgY29tbWl0dGVkIGluIHRoZWlyIFZDUyByZXBvc2l0b3J5LiAgU3Vj aAogICAgcHJvamVjdHMgYXJlIG5vdyBlbmNvdXJhZ2VkIHRvIHdyaXRlIGEgY3VzdG9tICJmaXgt dGltZXN0YW1wLnNoIgogICAgc2NyaXB0IHRvIGF2b2lkIHN1Y2ggaXNzdWVzOyBhIHNpbXBsZSBl eGFtcGxlIGlzIHByb3ZpZGVkIGluIHRoZQogICAgIkNWUyBhbmQgZ2VuZXJhdGVkIGZpbGVzIiBj aGFwdGVyIG9mIHRoZSBhdXRvbWFrZSBtYW51YWwuCgoqIFJlY3Vyc2l2ZSB0YXJnZXRzOgoKICAt IFRoZSB1c2VyIGNhbiBub3cgZGVmaW5lIGhpcyBvd24gcmVjdXJzaXZlIHRhcmdldHMgdGhhdCBy ZWN1cnNlCiAgICBpbiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGluICQoU1VCRElSUykuICBU aGlzIGNhbiBiZSBkb25lIGJ5CiAgICBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHN1Y2ggdGFyZ2V0 cyBpbiBpbnZvY2F0aW9ucyBvZiB0aGUgbmV3CiAgICAnQU1fRVhUUkFfUkVDVVJTSVZFX1RBUkdF VFMnIG00IG1hY3JvLgoKKiBUYWdzOgoKICAtIEFueSBmYWlsdXJlIGluIHRoZSByZWNpcGUgb2Yg dGhlICJ0YWdzIiwgImN0YWdzIiwgImNzY29wZSIgb3IKICAgICJjc2NvcGVsaXN0IiB0YXJnZXRz IGluIGEgc3ViZGlyZWN0b3J5IGlzIG5vdyBwcm9wYWdhdGVkIHRvIHRoZQogICAgdG9wLWxldmVs IG1ha2UgaW52b2NhdGlvbi4KCiAgLSBUYWdzIGFyZSBjb3JyZWN0bHkgY29tcHV0ZWQgYWxzbyBm b3IgZmlsZXMgaW4gX1NPVVJDRVMgdmFyaWFibGVzIHRoYXQKICAgIG9ubHkgbGlzdCBmaWxlcyB3 aXRoIG5vbi1zdGFuZGFyZCBzdWZmaXhlcyAoc2VlIGF1dG9tYWtlIGJ1ZyMxMjM3MikuCgoqIElt cHJvdmVtZW50cyB0byBhY2xvY2FsIGFuZCByZWxhdGVkIHJlYnVpbGRzIHJ1bGVzOgoKICAtIEF1 dG9jb25mLXByb3ZpZGVkIG1hY3JvcyBBQ19DT05GSUdfTUFDUk9fRElSIGFuZCBBQ19DT05GSUdf TUFDUk9fRElSUwogICAgYXJlIG5vdyB0cmFjZWQgYnkgYWNsb2NhbCwgYW5kIGNhbiBiZSB1c2Vk IHRvIGRlY2xhcmUgdGhlIGxvY2FsIG00CiAgICBpbmNsdWRlIGRpcmVjdG9yaWVzLiAgRm9ybWVy bHksIG9uZSBoYWQgdG8gc3BlY2lmeSBpdCB3aXRoIGFuIGV4cGxpY2l0CiAgICAnLUknIG9wdGlv biB0byB0aGUgJ2FjbG9jYWwnIGludm9jYXRpb24uCgogIC0gVGhlIHNwZWNpYWwgbWFrZSB2YXJp YWJsZSBBQ0xPQ0FMX0FNRkxBR1MgbWF5IGJlIGRlcHJlY2F0ZWQgaW4KICAgIGEgZnV0dXJlIEF1 dG9tYWtlIG1ham9yIHJlbGVhc2UuCgoqIFRoZSBkZXBjb21wIHNjcmlwdDoKCiAgLSBEcm9wcGVk IHN1cHBvcnQgZm9yIGxpYnRvb2wgMS40LgoKICAtIFZhcmlvdXMgaW50ZXJuYWwgcmVmYWN0b3Jp bmdzLiAgVGhleSBzaG91bGQgY2F1c2Ugbm8gdmlzaWJsZSBjaGFuZ2UsCiAgICBidXQgdGhlIGNo YW5jZSBmb3IgcmVncmVzc2lvbiBpcyB0aGVyZSBhbnl3YXksIHNvIHBsZWFzZSByZXBvcnQgYW55 CiAgICB1bmV4cGVjdGVkIG9yIHN1c3BpY2lvdXMgYmVoYXZpb3IuCgogIC0gU3VwcG9ydCBmb3Ig cHJlLTguMCB2ZXJzaW9ucyBvZiB0aGUgSW50ZWwgQyBDb21waWxlciBoYXMgYmVlbiBkcm9wcGVk LgogICAgVGhpcyBzaG91bGQgY2F1c2Ugbm8gcHJvYmxlbSwgc2luY2UgaWNjIDguMCBoYXMgYmVl biByZWxlYXNlZCBpbgogICAgRGVjZW1iZXIgMjAwMyAtLSBhbG1vc3QgbmluZSB5ZWFycyBhZ28u CgogIC0gU3VwcG9ydCBmb3IgdGNjICh0aGUgVGlueSBDIENvbXBpbGVyKSBoYXMgYmVlbiBpbXBy b3ZlZCwgYW5kIGlzIG5vdwogICAgaGFuZGxlZCB0aHJvdWdoIGEgZGVkaWNhdGVkICd0Y2MnIG1v ZGUuCgoqIFRoZSB5bHdyYXAgc2NyaXB0OgoKICAtIHlsd3JhcCBnZW5lcmF0ZXMgaGVhZGVyIGd1 YXJkcyB3aXRoIGEgc2luZ2xlICdfJyBmb3Igc2VyaWVzIG9mIG5vbgogICAgYWxwaGFiZXRpYyBj aGFyYWN0ZXJzLCBpbnN0ZWFkIG9mIHNldmVyYWwuICBUaGlzIGlzIHdoYXQgQmlzb24gPj0KICAg IDIuNS4xIGRvZXMuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpCdWdzIGZpeGVkIGluIDEuMTIuNiAo MjAxMi0xMi0xNSk6CgoqIFB5dGhvbi1yZWxhdGVkIGJ1Z3M6CgogIC0gVGhlIGRlZmF1bHQgaW5z dGFsbGF0aW9uIGxvY2F0aW9uIGZvciBweXRob24gbW9kdWxlcyBoYXMgYmVlbiBpbXByb3ZlZAog ICAgZm9yIFB5dGhvbiAzIG9uIERlYmlhbiBhbmQgVWJ1bnR1IHN5c3RlbXMsIGNoYW5naW5nIGZy b206CgogICAgICAgICR7cHJlZml4fS9saWIvcHl0aG9uMy9kaXN0LXBhY2thZ2VzCgogICAgdG8K CiAgICAgICAgJHtwcmVmaXh9L2xpYi9weXRob24zLngvc2l0ZS1wYWNrYWdlcwoKICAgIFRoaXMg Y2hhbmdlIHNob3VsZCBlbnN1cmUgbW9kdWxlcyBpbnN0YWxsZWQgdXNpbmcgdGhlIGRlZmF1bHQg JHtwcmVmaXh9CiAgICAiL3Vzci9sb2NhbCIgYXJlIGZvdW5kIGJ5IGRlZmF1bHQgYnkgc3lzdGVt IHB5dGhvbiAzLnggaW5zdGFsbGF0aW9ucy4KICAgIFNlZSBhdXRvbWFrZSBidWcjMTAyMjcuCgog IC0gUHl0aG9uIGJ5dGUtY29tcGlsYXRpb24gc3VwcG9ydHMgdGhlIG5ldyBsYXlvdXQgbWFuZGF0 ZWQgYnkgUEVQLTMxNDcsCiAgICB3aXRoIGl0cyBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkgKGF1dG9t YWtlIGJ1ZyM4ODQ3KS4KCiogQnVpbGQgc3lzdGVtIGlzc3VlczoKCiAgLSBUaGUgbWFpbnRhaW5l ciByZWJ1aWxkIHJ1bGVzIGZvciBNYWtlZmlsZXMgYW5kIGFjbG9jYWwubTQgaW4KICAgIEF1dG9t YWtlJ3Mgb3duIGJ1aWxkIHN5c3RlbSB3b3JrcyBjb3JyZWN0bHkgYWdhaW4gKGJ1ZyBpbnRyb2R1 Y2VkCiAgICBpbiBBdXRvbWFrZSAxLjEyLjUpLgoKKiBUZXN0c3VpdGUgaXNzdWVzOgoKICAtIFRo ZSBWYWxhLXJlbGF0ZWQgdGVzdHMgaGFzIGJlZW4gY2hhbmdlZCB0byBhZGp1c3QgdG8gdGhlIHJl bW92YWwgb2YKICAgIHRoZSAncG9zaXgnIHByb2ZpbGUgaW4gdGhlIHZhbGFjIGNvbXBpbGVyLiAg U2VlIGF1dG9tYWtlIGJ1ZyMxMjkzNAogICAgYS5rLmEuIGJ1ZyMxMjUyMi4KCiAgLSBTb21lIHNw dXJpb3VzIHRlc3RzdWl0ZSBmYWlsdXJlcyByZWxhdGVkIHRvIG9sZGVyIHRvb2xzIGFuZCBzeXN0 ZW1zCiAgICBoYXZlIGJlZW4gZml4ZWQuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS4x Mi41ICgyMDEyLTExLTE3KToKCiogVmFsYSBzdXBwb3J0OgoKICAtIFRoZSBBTV9QUk9HX1ZBTEFD IG1hY3JvIGhhcyBiZWVuIGVuaGFuY2VkIHRvIHRha2VzIHR3byBmdXJ0aGVyCiAgICBvcHRpb25h bCBhcmd1bWVudHM7IGl0J3Mgc2lnbmF0dXJlIG5vdyBiZWluZwoKICAgICAgICBBTV9QUk9HX1ZB TEFDKFtNSU5JTVVNLVZFUlNJT05dLCBbQUNUSU9OLUlGLUZPVU5EXSwKICAgICAgICAgICAgICAg ICAgICAgIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKCiAgLSBCeSBkZWZhdWx0LCBBTV9QUk9HX1ZB TEFDIG5vIGxvbmdlciBhYm9ydHMgdGhlIGNvbmZpZ3VyZSBpbnZvY2F0aW9uCiAgICBpZiB0aGUg VmFsYSBjb21waWxlciBmb3VuZCBpcyB0b28gb2xkLCBidXQgc2ltcGx5IHByaW50cyBhIHdhcm5p bmcKICAgIG1lc3NhZ2VzIChhcyBpdCBkaWQgd2hlbiB0aGUgVmFsYSBjb21waWxlciB3YXMgbm90 IGZvdW5kKS4gIFRoaXMKICAgIHNob3VsZCBhdm9pZCB1bm5lY2Vzc2FyeSBkaWZmaWN1bHRpZXMg Zm9yIGVuZCB1c2VycyB0aGF0IGp1c3Qgd2FudAogICAgdG8gY29tcGlsZSB0aGUgdW5tb2RpZmll ZCwgZGlzdHJpYnV0ZWQgVmFsYS1nZW5lcmF0ZWQgQyBzb3VyY2VzLAogICAgYnV0IGhhcHBlbnMg dG8gaGF2ZSBhbiBvbGQgVmFsYSBjb21waWxlciBpbiB0aGVpciBQQVRILiAgVGhpcyBmaXhlcwog ICAgYXV0b21ha2UgYnVnIzEyNjg4LgoKICAtIElmIG5vIHByb3BlciBWYWxhIGNvbXBpbGVyIGlz IGZvdW5kIGF0IGNvbmZpZ3VyZSBydW50aW1lLCBBTV9QUk9HX1ZBTEFDCiAgICB3aWxsIHNldCB0 aGUgQUNfU1VCU1QnZCB2YXJpYWJsZSAnVkFMQUMnIHRvICd2YWxhYycgcmF0aGVyIHRoYW4gdG8g JzonLgogICAgVGhpcyBpcyBhIGJldHRlciBkZWZhdWx0LCBiZWNhdXNlIHdpdGggaXQgYSB0cmln Z2VyZWQgbWFrZWZpbGUgcnVsZQogICAgaW52b2tpbmcgYSBWYWxhIGNvbXBpbGF0aW9uIHdpbGwg Y2xlYXJseSBmYWlsIHdpdGggYW4gaW5mb3JtYXRpdmUgZXJyb3IKICAgIG1lc3NhZ2UgbGlrZSAi dmFsYWM6IGNvbW1hbmQgbm90IGZvdW5kIiwgcmF0aGVyIHRoYW4gc2lsZW50bHksIHdpdGgKICAg IHRoZSBlcnJvciBwb3NzaWJseSBnb2luZyB1bm5vdGljZWQgb3IgdHJpZ2dlcmluZyBoYXJkZXIt dG8tZGlhZ25vc2UKICAgIGZhbGxvdXQgZmFpbHVyZXMgaW4gbGF0ZXIgc3RlcHMuCgoqIE1pc2Nl bGxhbmVvdXMgY2hhbmdlczoKCiAgLSBhdXRvbWFrZSBhbmQgYWNsb2NhbCBubyBsb25nZXIgaG9u b3JzIHRoZSAncGVybGxpYmRpcicgZW52aXJvbm1lbnQKICAgIHZhcmlhYmxlLiAgVGhhdCBoYWQg YWx3YXlzIGJlZW4gaW50ZW5kZWQgb25seSBhcyBhbiBoYWNrIHJlcXVpcmVkIGluCiAgICB0aGUg dGVzdHN1aXRlLCBub3QgbWVhbnQgZm9yIGFueSB1c2UgYmV5b25kIHRoYXQuCgpCdWdzIGZpeGVk IGluIDEuMTIuNToKCiogTG9uZy1zdGFuZGluZyBidWdzOgoKICAtIEF1dG9tYWtlIG5vIGxvbmdl ciBnZW5lcmF0ZXMgc3B1cmlvdXMgcmVtYWtlIHJ1bGVzIGludm9raW5nIGF1dG9oZWFkZXIKICAg IHRvIHJlZ2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvcnJlc3BvbmRpbmcgdG8gaGVhZGVyIGZpbGVz IHNwZWNpZmllZCBhZnRlcgogICAgdGhlIGZpcnN0IG9uZSBpbiBBQ19DT05GSUdfSEVBREVSUyAo YXV0b21ha2UgYnVnIzEyNDk1KS4KCiAgLSBXaGVuIHdyYXBwaW5nIE1pY3Jvc29mdCB0b29scywg dGhlICdjb21waWxlJyBzY3JpcHQgZmFsbHMgYmFjayB0bwogICAgZmluZGluZyBjbGFzc2ljICds aWJuYW1lLmEnIHN0eWxlIGxpYnJhcmllcyB3aGVuICduYW1lLmxpYicgYW5kCiAgICAnbmFtZS5k bGwubGliJyBhcmVuJ3QgYXZhaWxhYmxlLgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKTmV3IGluIDEu MTIuNCAoMjAxMi0wOS0xOCk6CgoqIFdhcm5pbmdzIGFuZCBkZXByZWNhdGlvbnM6CgogIC0gV2Fy bmluZ3MgaW4gdGhlICdvYnNvbGV0ZScgY2F0ZWdvcnkgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBi b3RoIGluCiAgICBhdXRvbWFrZSBhbmQgYWNsb2NhbC4KCiogTWlzY2VsbGFuZW91cyBjaGFuZ2Vz OgoKICAtIFNvbWUgdGVzdHN1aXRlIHdlYWtuZXNzZXMgYW5kIHNwdXJpb3VzIGZhaWx1cmVzIGhh dmUgYmVlbiBmaXhlZC4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjEyLjM6CgoqIE1p c2NlbGxhbmVvdXMgY2hhbmdlczoKCiAgLSBUaGUgJy5tNCcgZmlsZXMgcHJvdmlkZWQgYnkgQXV0 b21ha2Ugbm8gbG9uZ2VyIGRlZmluZSBzZXJpYWwgbnVtYmVycy4KICAgIFRoaXMgc2hvdWxkIGNh dXNlIG5vIGRpZmZlcmVuY2UgaW4gdGhlIGJlaGF2aW9yIG9mIGFjbG9jYWwgdGhvdWdoLgoKICAt IFNvbWUgdGVzdHN1aXRlIHdlYWtuZXNzZXMgYW5kIHNwdXJpb3VzIGZhaWx1cmVzIGhhdmUgYmVl biBmaXhlZC4KCiAgLSBUaGVyZSBpcyBpbml0aWFsIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBkZXBl bmRlbmN5IHRyYWNraW5nIHdpdGggdGhlCiAgICBQb3J0bGFuZCBHcm91cCBDL0MrKyBjb21waWxl cnMsIHRoYW5rcyB0byB0aGUgbmV3IG5ldyBkZXBtb2RlICdwZ2NjJy4KCkJ1Z3MgZml4ZWQgaW4g MS4xMi4zOgoKKiBMb25nLXN0YW5kaW5nIGJ1Z3M6CgogIC0gSW5zdGVhZCBvZiByZW5hbWluZyBv bmx5IHNlbGYtcmVmZXJlbmNlcyBvZiBmaWxlcyAodHlwaWNhbGx5IGZvcgogICAgI2xpbmVzKSwg eWx3cmFwIG5vdyBhbHNvIHJlbmFtZXMgcmVmZXJlbmNlcyB0byB0aGUgb3RoZXIgZ2VuZXJhdGVk CiAgICBmaWxlcy4gIFRoaXMgZml4ZXMgc3VwcG9ydCBmb3IgR0xSIGFuZCBDKysgcGFyc2VycyBm cm9tIEJpc29uIChQUgogICAgYXV0b21ha2UvNDkxIGFuZCBhdXRvbWFrZSBidWcjNzY0OCk6ICdw YXJzZXIuYycgbm93IHByb3Blcmx5CiAgICAjaW5jbHVkZXMgJ3BhcnNlci5oJyBpbnN0ZWFkIG9m ICd5LnRhYi5oJy4KCiAgLSBHZW5lcmF0ZWQgZmlsZXMgdW5rbm93biB0byB5bHdyYXAgYXJlIG5v dyBwcmVzZXJ2ZWQuICBUaGlzIGZpeGVzCiAgICBDKysgc3VwcG9ydCBmb3IgQmlzb24gKGF1dG9t YWtlIGJ1ZyM3NjQ4KTogbG9jYXRpb24uaGggYW5kIHRoZQogICAgbGlrZSBhcmUgbm8gbG9uZ2Vy IGRpc2NhcmRlZC4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjEyLjIgKDIwMTItMDct MDkpOgoKKiBXYXJuaW5ncyBhbmQgZGVwcmVjYXRpb25zOgoKICAtIEF1dG9tYWtlIG5vdyBpc3N1 ZXMgYSB3YXJuaW5nIChpbiB0aGUgJ3BvcnRhYmlsaXR5JyBjYXRlZ29yeSkgaWYKICAgICdjb25m aWd1cmUuaW4nIGlzIHVzZWQgaW5zdGVhZCBvZiAnY29uZmlndXJlLmFjJyBhcyB0aGUgQXV0b2Nv bmYKICAgIGlucHV0IGZpbGUuICBTdWNoIGEgd2FybmluZyB3aWxsIGFsc28gYmUgcHJlc2VudCBp biB0aGUgbmV4dAogICAgQXV0b2NvbmYgdmVyc2lvbiAoMi43MCkuCgoqIENsZWFuaW5nIHJ1bGVz OgoKICAtIFJlY3Vyc2l2ZSBjbGVhbmluZyBydWxlcyBkZXNjZW5kcyBpbnRvIHRoZSAkKFNVQkRJ UlMpIGluIHRoZSBuYXR1cmFsCiAgICBvcmRlciAoYXMgZG9uZSBieSB0aGUgb3RoZXIgcmVjdXJz aXZlIHJ1bGVzKSwgcmF0aGVyIHRoYW4gaW4gdGhlCiAgICBpbnZlcnNlIG9yZGVyLiAgVGhleSB1 c2VkIHRvIGRvIHRoYXQgaW4gb3JkZXIgdG8gd29yayBhIHJvdW5kIGEKICAgIGxpbWl0YXRpb24g aW4gYW4gb2xkZXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGF1dG9tYXRpYyBkZXBlbmRlbmN5CiAg ICB0cmFja2luZyBzdXBwb3J0LCBidXQgdGhhdCBsaW1pdGF0aW9uIGhhZCBiZWVuIGxpZnRlZCB5 ZWFycyBhZ28KICAgIGFscmVhZHksIHdoZW4gdGhlIGF1dG9tYXRpYyBkZXBlbmRlbmN5IHRyYWNr aW5nIGJhc2VkIG9uIHNpZGUtZWZmZWN0cwogICAgb2YgY29tcGlsYXRpb24gaGFkIGJlZW4gaW50 cm9kdWNlZC4KCiAgLSBDbGVhbmluZyBydWxlcyBmb3IgY29tcGlsZWQgb2JqZWN0cyAoYm90aCAi cGxhaW4iIGFuZCBsaWJ0b29sKSB3b3JrCiAgICBiZXR0ZXIgd2hlbiBzdWJkaXIgb2JqZWN0cyBh cmUgaW52b2x2ZWQsIG5vdCB0cmlnZ2VyaW5nIGEgZGlzdGluY3QKICAgICdybScgaW52b2NhdGlv biBmb3IgZWFjaCBzdWNoIG9iamVjdC4gIFRoZXkgZG8gc28gYnkgcmVtb3ZpbmcgKmFueSoKICAg IGNvbXBpbGVkIG9iamVjdCBmaWxlIHRoYXQgaXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IG9mIGEg c3ViZGlyCiAgICBvYmplY3QuICBTZWUgYXV0b21ha2UgYnVnIzEwNjk3LgoKKiBTaWxlbnQgcnVs ZXMgc3VwcG9ydDoKCiAgLSBBIG5ldyBwcmVkZWZpbmVkICQoQU1fVl9QKSBtYWtlIHZhcmlhYmxl IGlzIHByb3ZpZGVkOyBpdCBleHBhbmRzCiAgICB0byBhIHNoZWxsIGNvbmRpdGlvbmFsIHRoYXQg Y2FuIGJlIHVzZWQgaW4gcmVjaXBlcyB0byBrbm93IHdoZXRoZXIKICAgIG1ha2UgaXMgYmVpbmcg cnVuIGluIHNpbGVudCBvciB2ZXJib3NlIG1vZGUuCgpCdWdzIGZpeGVkIGluIDEuMTIuMjoKCiog U0VDVVJJVFkgVlVMTkVSQUJJTElUSUVTIQoKICAtIFRoZSAnZGlzdGNoZWNrJyByZWNpcGUgbm8g bG9uZ2VyIGdyYW50cyB0ZW1wb3Jhcnkgd29ybGQtd3JpdGUKICAgIHBlcm1pc3Npb25zIG9uIHRo ZSBleHRyYWN0ZWQgZGlzdGRpci4gIEV2ZW4gaWYgc3VjaCByaWdodHMgd2VyZQogICAgb25seSBn cmFudGVkIGZvciBhIHZhbmlzaGluZ2x5IHNtYWxsIHRpbWUgd2luZG93LCB0aGUgaW1wbGllZAog ICAgcmFjZSBjb25kaXRpb24gcHJvdmVkIHRvIGJlIGVub3VnaCB0byBhbGxvdyBhIGxvY2FsIGF0 dGFja2VyCiAgICB0byBydW4gYXJiaXRyYXJ5IGNvZGUgd2l0aCB0aGUgcHJpdmlsZWdlcyBvZiB0 aGUgdXNlciBydW5uaW5nCiAgICAibWFrZSBkaXN0Y2hlY2siLiAgVGhpcyBpcyBDVkUtMjAxMi0z Mzg2LgoKKiBMb25nLXN0YW5kaW5nIGJ1Z3M6CgogIC0gVGhlICJyZWNoZWNrIiB0YXJnZXRzIGJl aGF2ZXMgYmV0dGVyIGluIHRoZSBmYWNlIG9mIGJ1aWxkIGZhaWx1cmVzCiAgICByZWxhdGVkIHRv IHByZXZpb3VzbHkgZmFpbGVkIHRlc3RzLiAgRm9yIGV4YW1wbGUsIGlmIGEgdGVzdCBpcyBhCiAg ICBjb21waWxlZCBwcm9ncmFtIHRoYXQgbXVzdCBiZSByZXJ1biBieSAibWFrZSByZWNoZWNrIiwg YW5kIGl0cwogICAgY29tcGlsYXRpb24gZmFpbHMsIGl0IHdpbGwgc3RpbGwgYmUgcmVydW4gYnkg ZnVydGhlciAibWFrZSByZWNoZWNrIgogICAgaW52b2NhdGlvbnMuICBTZWUgYXV0b21ha2UgYnVn IzExNzkxLgoKKiBCdWdzIGludHJvZHVjZWQgYnkgMS4xMi4xOgoKICAtIEF1dG9tYWtlIHByb3Zp ZGVzIG9uY2UgYWdhaW4gdGhlICckKG1rZGlyX3ApJyBtYWtlIHZhcmlhYmxlIGFuZCB0aGUKICAg ICdAbWtkaXJfcEAnIHN1YnN0aXR1dGlvbiAoYm90aCBhcyBzaW1wbGUgYWxpYXNlcyBmb3IgJyQo TUtESVJfUCknKSwKICAgIGZvciBiZXR0ZXIgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KCn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjEyLjEgKDIwMTItMDYtMDEpOgoKKiBOZXcgc3VwcG9y dGVkIGxhbmd1YWdlczoKCiAgLSBTdXBwb3J0IGZvciBPYmplY3RpdmUgQysrIGhhcyBiZWVuIGFk ZGVkOyBpdCBzaG91bGQgd29yayBzaW1pbGFybHkgdG8KICAgIHRoZSBzdXBwb3J0IGZvciBPYmpl Y3RpdmUgQy4KCiogRGVwcmVjYXRlZCBvYnNvbGVzY2VudCBmZWF0dXJlczoKCiAgLSBVc2Ugb2Yg dGhlIGxvbmctZGVwcmVjYXRlZCB0d28tIGFuZCB0aHJlZS1hcmd1bWVudHMgaW52b2NhdGlvbiBm b3JtcwogICAgb2YgdGhlIEFNX0lOSVRfQVVUT01BS0UgbWFjcm8gbm93IGVsaWNpdHMgYSB3YXJu aW5nIGluIHRoZSAnb2Jzb2xldGUnCiAgICBjYXRlZ29yeS4gIFN0YXJ0aW5nIGZyb20gc29tZSBm dXR1cmUgbWFqb3IgQXV0b21ha2UgcmVsZWFzZSAobGlrZWx5CiAgICBwb3N0LTEuMTMpLCBzdWNo IHVzYWdlcyB3aWxsIG5vIGxvbmdlciBiZSBhbGxvd2VkLgoKICAtIFN1cHBvcnQgZm9yIHRoZSAi Q3lnbnVzLXN0eWxlIiB0cmVlcyAoZW5hYmxlZCBieSB0aGUgJ2N5Z251cycgb3B0aW9uKSBpcwog ICAgbm93IGRlcHJlY2F0ZWQgKGl0cyB1c2UgdHJpZ2dlcnMgYSB3YXJuaW5nIGluIHRoZSAnb2Jz b2xldGUnIGNhdGVnb3J5KS4KICAgIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpv ciBBdXRvbWFrZSByZWxlYXNlICgxLjEzKS4KCiAgLSBUaGUgbG9uZy1vYnNvbGV0ZSAoc2luY2Ug MS4xMCkgYXV0b21ha2UtcHJvdmlkZWQgJChta2Rpcl9wKSBtYWtlCiAgICB2YXJpYWJsZSwgQG1r ZGlyX3BAIGNvbmZpZ3VyZS10aW1lIHN1YnN0aXR1dGlvbiBhbmQgQU1fUFJPR19NS0RJUgogICAg bTQgbWFjcm8gYXJlIGRlcHJlY2F0ZWQsIGVsaWNpdGluZyBhIHdhcm5pbmcgaW4gdGhlICdvYnNv bGV0ZScKICAgIGNhdGVnb3J5LgoKKiBNaXNjZWxsYW5lb3VzIGNoYW5nZXM6CgogIC0gVGhlIEF1 dG9tYWtlIHRlc3QgY2FzZXMgbm93IHJlcXVpcmUgYSBwcm9wZXIgUE9TSVgtY29uZm9ybWluZyBz aGVsbC4KICAgIE9sZGVyIG5vbi1QT1NJWCBCb3VybmUgc2hlbGxzIChsaWtlIFNvbGFyaXMgMTAg L2Jpbi9zaCkgd2lsbCBubyBsb25nZXIKICAgIGJlIGFjY2VwdGVkLiAgSW4gbW9zdCBjYXNlcywg dGhlIHVzZXIgc2hvdWxkbid0IGhhdmUgdG8gc3BlY2lmeSBzdWNoCiAgICBQT1NJWCBzaGVsbCBl eHBsaWNpdGx5LCBzaW5jZSBpdCB3aWxsIGJlIGxvb2tlZCB1cCBhdCBjb25maWd1cmUgdGltZS4K ICAgIFN0aWxsLCB3aGVuIHRoaXMgbG9va3VwIGZhaWxzLCBvciB3aGVuIHRoZSB1c2VyIHdhbnRz IHRvIG92ZXJyaWRlIGl0cwogICAgY29uY2x1c2lvbiwgdGhlIHZhcmlhYmxlICdBTV9URVNUX1JV Tk5FUl9TSEVMTCcgY2FuIGJlIHVzZWQgKHBvaW50aW5nCiAgICB0byB0aGUgc2hlbGwgdGhhdCB3 aWxsIGJlIHVzZWQgdG8gcnVuIHRoZSBBdXRvbWFrZSB0ZXN0IGNhc2VzKS4KCkJ1Z3MgZml4ZWQg aW4gMS4xMi4xOgoKKiBCdWdzIGludHJvZHVjZWQgYnkgMS4xMjoKCiAgLSBTZXZlcmFsIHdlYWtu ZXNzZXMgaW4gQXV0b21ha2UncyBvd24gYnVpbGQgc3lzdGVtIGFuZCB0ZXN0IHN1aXRlCiAgICBo YXZlIGJlZW4gZml4ZWQuCgoqIEJ1Z3MgaW50cm9kdWNlZCBieSAxLjExLjM6CgogIC0gV2hlbiBn aXZlbiBub24tb3B0aW9uIGFyZ3VtZW50cywgYWNsb2NhbCByZWplY3RzIHRoZW0sIGluc3RlYWQg b2YKICAgIHNpbGVudGx5IGlnbm9yaW5nIHRoZW0uCgoqIExvbmctc3RhbmRpbmcgYnVnczoKCiAg LSBXaGVuIHRoZSAnY29sb3ItdGVzdHMnIG9wdGlvbiBpcyBpbiB1c2UsIGZvcmNpbmcgb2YgY29s b3JlZCB0ZXN0c3VpdGUKICAgIG91dHB1dCB0aHJvdWdoICJBTV9DT0xPUl9URVNUUz1hbHdheXMi IHdvcmtzIGV2ZW4gaWYgdGhlIHRlcm1pbmFsIGlzCiAgICBhIG5vbi1BTlNJIG9uZSwgaS5lLiwg aWYgdGhlIFRFUk0gZW52aXJvbm1lbnQgdmFyaWFibGUgaGFzIGEgdmFsdWUgb2YKICAgICJkdW1i Ii4KCiAgLSBTZXZlcmFsIGluZWZmaWNpZW5jaWVzIGFuZCBwb29yIHBlcmZvcm1hbmNlcyBpbiB0 aGUgaW1wbGVtZW50YXRpb24KICAgIG9mIHRoZSBwYXJhbGxlbC10ZXN0cyAnY2hlY2snIGFuZCAn cmVjaGVjaycgdGFyZ2V0cyBoYXZlIGJlZW4gZml4ZWQuCgogIC0gVGhlIHBvc3QtcHJvY2Vzc2lu ZyBvZiBvdXRwdXQgIiNsaW5lIiBkaXJlY3RpdmVzIGRvbmUgdGhlIHlsd3JhcAogICAgc2NyaXB0 IGlzIG1vcmUgZmFpdGhmdWwgdy5yLnQuIGZpbGVzIGluIGEgc3ViZGlyZWN0b3J5OyBmb3IgZXhh bXBsZSwKICAgIGlmIHRoZSBwcm9jZXNzZWQgZmlsZSBpcyAic3JjL2dyYW1tYXIueSIsIHlsd3Jh cCB3aWxsIGNvcnJlY3RseQogICAgcHJvZHVjZSBkaXJlY3RpdmVzIGxpa2U6CiAgICAgICAgI2xp bmUgNyAic3JjL2dyYW1tYXIueSIKICAgIHJhdGhlciB0aGFuIGxpa2UKICAgICAgICAjbGluZSA3 ICJncmFtbWFyLnkiCiAgICBhcyBpdCBkaWQgYmVmb3JlLgoKKiBCdWdzIHdpdGggbmV3IFBlcmwg dmVyc2lvbnM6CgogIC0gQWNsb2NhbCB3b3JrcyBjb3JyZWN0bHkgd2l0aCBwZXJsIDUuMTYuMCAo YXV0b21ha2UgYnVnIzExNTQzKS4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjEyICgy MDEyLTA0LTI1KToKCiogT2Jzb2xldGUgZmVhdHVyZXMgcmVtb3ZlZDoKCiAgLSBUaGUgbmV2ZXIg ZG9jdW1lbnRlZCBub3IgdHJ1bHkgdXNlZCBzY3JpcHQgJ2FjaW5zdGFsbCcgaGFzIGJlZW4KICAg IHJlbW92ZWQuCgogIC0gU3VwcG9ydCBmb3IgYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gaGFz IGJlZW4gcmVtb3ZlZC4KCiAgLSBUaGUgc3VwcG9ydCBmb3IgdGhlICJvYnNjdXJlIiBtdWx0aWxp YiBmZWF0dXJlIGhhcyBiZWVuIHJlbW92ZWQKICAgIGZyb20gQXV0b21ha2UgY29yZSAoYnV0IHJl bWFpbnMgYXZhaWxhYmxlIGluIHRoZSAnY29udHJpYi8nCiAgICBkaXJlY3Rvcnkgb2YgdGhlIEF1 dG9tYWtlIGRpc3RyaWJ1dGlvbikuCgogIC0gU3VwcG9ydCBmb3IgIi5sb2cgLT4gLmh0bWwiIGNv bnZlcnNpb24gYW5kIHRoZSBjaGVjay1odG1sIGFuZAogICAgcmVjaGVjay1odG1sIHRhcmdldHMg aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIEF1dG9tYWtlIGNvcmUgKGJ1dAogICAgcmVtYWlucyBhdmFp bGFibGUgaW4gdGhlICdjb250cmliLycgZGlyZWN0b3J5IG9mIHRoZSBBdXRvbWFrZQogICAgZGlz dHJpYnV0aW9uKS4KCiAgLSBUaGUgZGVwcmVjYXRlZCAnbHptYScgY29tcHJlc3Npb24gZm9ybWF0 IGZvciBkaXN0cmlidXRpb24gYXJjaGl2ZXMKICAgIGhhcyBiZWVuIHJlbW92ZWQsIGluIGZhdm9y IG9mICd4eicgYW5kICdsemlwJy4KCiAgLSBUaGUgb2Jzb2xldGUgQU1fV0lUSF9SRUdFWCBtYWNy byBoYXMgYmVlbiByZW1vdmVkLgoKICAtIFRoZSBsb25nLWRlcHJlY2F0ZWQgb3B0aW9ucyAnLS1v dXRwdXQtZGlyJywgJy0tV2Vycm9yJyBhbmQKICAgICctLVduby1lcnJvcicgaGF2ZSBiZWVuIHJl bW92ZWQuCgogIC0gVGhlIGNoYXB0ZXIgb24gdGhlIGhpc3Rvcnkgb2YgQXV0b21ha2UgaGFzIGJl ZW4gbW92ZWQgb3V0IG9mIHRoZQogICAgcmVmZXJlbmNlIG1hbnVhbCwgaW50byBhIG5ldyBkZWRp Y2F0ZWQgVGV4aW5mbyBmaWxlLgoKKiBOZXcgdGFyZ2V0czoKCiAgLSBOZXcgJ2NzY29wZScgdGFy Z2V0IHRvIGJ1aWxkIGEgY3Njb3BlIGRhdGFiYXNlIGZvciB0aGUgc291cmNlIHRyZWUuCgoqIENo YW5nZXMgdG8gQXV0b21ha2UtZ2VuZXJhdGVkIHRlc3RzdWl0ZSBoYXJuZXNzZXM6CgogIC0gVGhl IG5ldyBhdXRvbWFrZSBvcHRpb24gJ3NlcmlhbC10ZXN0cycgaGFzIGJlZW4gaW50cm9kdWNlZC4g IEl0IGNhbgogICAgYmUgdXNlZCB0byBleHBsaWNpdGx5IGluc3RydWN0IGF1dG9tYWtlIHRvIHVz ZSB0aGUgb2xkZXIgc2VyaWFsCiAgICB0ZXN0c3VpdGUgaGFybmVzcy4gIFRoaXMgaXMgc3RpbGwg dGhlIGRlZmF1bHQgYXQgdGhlIG1vbWVudCwgYnV0IGl0CiAgICBtaWdodCBjaGFuZ2UgaW4gZnV0 dXJlIHZlcnNpb25zLgoKICAtIFRoZSAncmVjaGVjaycgdGFyZ2V0IChwcm92aWRlZCBieSB0aGUg cGFyYWxsZWwgdGVzdHN1aXRlIGhhcm5lc3MpIG5vdwogICAgZGVwZW5kcyBvbiB0aGUgJ2FsbCcg dGFyZ2V0LiAgVGhpcyBhbGxvd3MgZm9yIGEgYmV0dGVyIHVzZXItZXhwZXJpZW5jZQogICAgaW4g dGVzdC1kcml2ZW4gZGV2ZWxvcG1lbnQuICBTZWUgYXV0b21ha2UgYnVnIzExMjUyLgoKICAtIFRl c3Qgc2NyaXB0cyB0aGF0IGV4aXQgd2l0aCBzdGF0dXMgOTkgdG8gc2lnbmFsIGFuICJoYXJkIGVy cm9yIiAoZS5nLiwKICAgIGFuZCB1bmV4cGVjdGVkIG9yIGludGVybmFsIGVycm9yLCBvciBhIGZh aWx1cmUgdG8gc2V0IHVwIHRoZSB0ZXN0IGNhc2UKICAgIHNjZW5hcmlvKSBoYXZlIHRoZWlyIG91 dGNvbWUgcmVwb3J0ZWQgYXMgYW4gJ0VSUk9SJyBub3cuICBQcmV2aW91cwogICAgdmVyc2lvbnMg b2YgYXV0b21ha2UgcmVwb3J0ZWQgc3VjaCBhbiBvdXRjb21lIGFzIGEgJ0ZBSUwnICh0aGUgb25s eQogICAgZGlmZmVyZW5jZSB3aXRoIG5vcm1hbCBmYWlsdXJlcyBiZWluZyB0aGF0IGhhcmQgZXJy b3JzIHdlcmUgY291bnRlZAogICAgYXMgZmFpbHVyZXMgZXZlbiB3aGVuIHRoZSB0ZXN0IG9yaWdp bmF0aW5nIHRoZW0gd2FzIGxpc3RlZCBpbgogICAgWEZBSUxfVEVTVFMpLgoKICAtIFRoZSB0ZXN0 c3VpdGUgc3VtbWFyeSBkaXNwbGF5ZWQgYnkgdGhlIHBhcmFsbGVsLXRlc3QgaGFybmVzcyBoYXMg YQogICAgY29tcGxldGVseSBuZXcgZm9ybWF0LCB0aGF0IGFsd2F5cyBsaXN0IHRoZSBudW1iZXJz IG9mIHBhc3NlZCwgZmFpbGVkLAogICAgeGZhaWxlZCwgeHBhc3NlZCwgc2tpcHBlZCBhbmQgZXJy b3JlZCB0ZXN0cywgZXZlbiB3aGVuIHRoZXNlIG51bWJlcnMKICAgIGFyZSB6ZXJvIChidXQgdXNp bmcgc21hcnQgY29sb3Jpbmcgd2hlbiB0aGUgY29sb3ItdGVzdHMgb3B0aW9uIGlzIGluCiAgICBl ZmZlY3QpLgoKICAtIFRoZSBkZWZhdWx0IHRlc3RzdWl0ZSBkcml2ZXIgb2ZmZXJlZCBieSB0aGUg J3BhcmFsbGVsLXRlc3RzJyBvcHRpb24gaXMKICAgIG5vdyBpbXBsZW1lbnRlZCAocGFydGx5IGF0 IGxlYXN0KSB3aXRoIHRoZSBoZWxwIG9mIGF1dG9tYWtlLXByb3ZpZGVkCiAgICBhdXhpbGlhcnkg c2NyaXB0cyAoZS5nLiwgJ3Rlc3QtZHJpdmVyJyksIGluc3RlYWQgb2YgcmVseWluZyBlbnRpcmVs eQogICAgb24gY29kZSBpbiB0aGUgZ2VuZXJhdGVkIE1ha2VmaWxlLmluLgogICAgVGhpcyBoYXMg dHdvIG5vdGV3b3J0aHkgaW1wbGljYXRpb25zLiAgVGhlIGZpcnN0IG9uZSBpcyB0aGF0IHByb2pl Y3RzCiAgICB1c2luZyB0aGUgJ3BhcmFsbGVsLXRlc3RzJyBvcHRpb24gc2hvdWxkIG5vdyBlaXRo ZXIgcnVuIGF1dG9tYWtlIHdpdGgKICAgIHRoZSAnLS1hZGQtbWlzc2luZycgb3B0aW9uLCBvciBt YW51YWxseSBjb3B5IHRoZSAndGVzdC1kcml2ZXInIHNjcmlwdAogICAgaW50byB0aGVpciB0cmVl LiAgVGhlIHNlY29uZCwgYW5kIG1vcmUgaW1wb3J0YW50LCBpbXBsaWNhdGlvbiBpcyB0aGF0CiAg ICBub3csIHdoZW4gdGhlICdwYXJhbGxlbC10ZXN0cycgb3B0aW9uIGlzIGluIHVzZSwgVEVTVFNf RU5WSVJPTk1FTlQgY2FuCiAgICBubyBsb25nZXIgYmUgdXNlZCB0byBkZWZpbmUgYSB0ZXN0IHJ1 bm5lciwgYW5kIHRoZSBjb21tYW5kIHNwZWNpZmllZAogICAgaW4gTE9HX0NPTVBJTEVSIChhbmQg PGV4dD5fTE9HX0NPTVBJTEVSKSBtdXN0IGJlIGEgKnJlYWwqIGV4ZWN1dGFibGUKICAgIHByb2dy YW0gb3Igc2NyaXB0LiAgRm9yIGV4YW1wbGUsIHRoaXMgaXMgc3RpbGwgYSB2YWxpZCB1c2FnZSAo YWxiZWl0CiAgICBhIGxpdHRsZSBjb250b3J0ZWQpOgoKICAgICAgVEVTVFNfRU5WSVJPTk1FTlQg PSBcCiAgICAgICAgaWYgdGVzdCAtbiAnJChTVFJJQ1RfVEVTVFMpJzsgdGhlbiBcCiAgICAgICAg ICBtYXliZV9lcnJleGl0PSctZSc7IFwKICAgICAgICBlbHNlIFwKICAgICAgICAgIG1heWJlX2Vy cmV4aXQ9Jyc7IFwKICAgICAgICBmaTsKICAgICAgTE9HX0NPTVBJTEVSID0gJChTSEVMTCkgJCRt YXliZV9lcnJleGl0CgogICAgT1RPSCwgdGhpcyBpcyBubyBsb25nZXIgYSB2YWxpZCB1c2FnZToK CiAgICAgIFRFU1RTX0VOVklST05NRU5UID0gXAogICAgICAgICQoU0hFTEwpIGB0ZXN0IC1uICck KFNUUklDVF9URVNUU19DSEVDS0lORyknICYmIGVjaG8gJyAtZSdgCgogICAgbmVpdGhlciBpcyB0 aGlzOgoKICAgICAgVEVTVFNfRU5WSVJPTk1FTlQgPSBcCiAgICAgICAgcnVuX3dpdGhfcGVybF9v cl9zaGVsbCAoKSBcCiAgICAgICAgeyBcCiAgICAgICAgICBpZiBncmVwIC1xICdeIyEuKnBlcmwn ICQkMTsgdGhlbgogICAgICAgICAgICAkKFBFUkwpICQkMTsgXAogICAgICAgICAgZWxzZSBcCiAg ICAgICAgICAgICQoU0hFTEwpICQkMTsgXAogICAgICAgICAgZmk7IFwKICAgICAgICB9CiAgICAg IExPR19DT01QSUxFUiA9IHJ1bl93aXRoX3Blcmxfb3Jfc2hlbGwKCiAgLSBUaGUgcGFja2FnZSBh dXRob3JzIGNhbiBub3cgdXNlIGN1c3RvbWFyeSB0ZXN0c3VpdGUgZHJpdmVycyB3aXRoaW4KICAg IHRoZSBmcmFtZXdvcmsgcHJvdmlkZWQgYnkgdGhlICdwYXJhbGxlbC10ZXN0cycgdGVzdHN1aXRl IGhhcm5lc3MuCiAgICBDb25zaXN0ZW50bHkgd2l0aCB0aGUgZXhpc3Rpbmcgc3ludGF4LCB0aGlz IGNhbiBiZSBkb25lIGJ5IGRlZmluaW5nCiAgICBzcGVjaWFsIG1ha2VmaWxlIHZhcmlhYmxlcyAn TE9HX0RSSVZFUicgYW5kICc8ZXh0Pl9MT0dfRFJJVkVSJy4KCiAgLSBBIG5ldyBkZXZlbG9wZXIt cmVzZXJ2ZWQgdmFyaWFibGUgJ0FNX1RFU1RTX0ZEX1JFRElSRUNUJyBjYW4gYmUgdXNlZAogICAg dG8gcmVkaXJlY3QvZGVmaW5lIGZpbGUgZGVzY3JpcHRvcnMgdXNlZCBieSB0aGUgdGVzdCBzY3Jp cHRzLgoKICAtIFRoZSBwYXJhbGxlbC10ZXN0cyBoYXJuZXNzIGdlbmVyYXRlcyBub3csIGluIGFk ZGl0aW9uIHRoZSAnLmxvZycgZmlsZXMKICAgIGhvbGRpbmcgdGhlIG91dHB1dCBwcm9kdWNlZCBi eSB0aGUgdGVzdCBzY3JpcHRzLCBhIG5ldyBzZXQgb2YgJy50cnMnCiAgICBmaWxlcywgaG9sZGlu ZyAibWV0YWRhdGEiIGRlcml2ZWQgYnkgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgdGVzdCBzY3JpcHRz OwogICAgYW1vbmcgc3VjaCBtZXRhZGF0YSBhcmUgdGhlIG91dGNvbWVzIG9mIHRoZSB0ZXN0IGNh c2VzIHJ1biBieSBhIHNjcmlwdC4KCiAgLSBJbml0aWFsIGFuZCBzdGlsbCBleHBlcmltZW50YWwg c3VwcG9ydCBmb3IgdGhlIFRBUCB0ZXN0IHByb3RvY29sIGlzCiAgICBub3cgcHJvdmlkZWQuCgoq IENoYW5nZXMgdG8gWWFjYyBhbmQgTGV4IHN1cHBvcnQ6CgogIC0gQyBzb3VyY2UgYW5kIGhlYWRl ciBmaWxlcyBkZXJpdmVkIGZyb20gbm9uLWRpc3RyaWJ1dGVkIFlhY2MgYW5kL29yCiAgICBMZXgg c291cmNlcyBhcmUgbm93IHJlbW92ZWQgYnkgYSBzaW1wbGUgIm1ha2UgY2xlYW4iICh3aGlsZSB0 aGV5IHdlcmUKICAgIHByZXZpb3VzbHkgcmVtb3ZlZCBvbmx5IGJ5ICJtYWtlIG1haW50YWluZXIt Y2xlYW4iKS4KCiAgLSBTbGlnaHRseSBiYWNrd2FyZC1pbmNvbXBhdGlibGUgY2hhbmdlLCByZWxl dmFudCBvbmx5IGZvciB1c2Ugb2YgWWFjYwogICAgd2l0aCBDKys6IHRoZSBleHRlbnNpb25zIG9m IHRoZSBoZWFkZXIgZmlsZXMgcHJvZHVjZWQgYnkgdGhlIFlhY2MKICAgIHJ1bGVzIGFyZSBub3cg bW9kZWxlZCBhZnRlciB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBjb3JyZXNwb25kaW5nCiAgICBzb3Vy Y2VzLiAgRm9yIGV4YW1wbGUsIHlhY2MgZmlsZXMgbmFtZWQgImZvby55KysiIGFuZCAiYmFyLnl5 IiB3aWxsCiAgICBwcm9kdWNlIGhlYWRlciBmaWxlcyBuYW1lZCAiZm9vLmgrKyIgYW5kICJiYXIu aGgiIHJlc3BlY3RpdmVseSwgd2hlcmUKICAgIHRoZXkgd291bGQgaGF2ZSBwcmV2aW91c2x5IHBy b2R1Y2VkIGhlYWRlciBmaWxlcyBuYW1lZCBzaW1wbHkgImZvby5oIgogICAgYW5kICJiYXIuaCIu ICBUaGlzIGNoYW5nZSBvZmZlcnMgYmV0dGVyIGNvbXBhdGliaWxpdHkgd2l0aCAnYmlzb24gLW8n LgoKKiBNaXNjZWxsYW5lb3VzIGNoYW5nZXM6CgogIC0gVGhlIEFNX1BST0dfVkFMQUMgbWFjcm8g bm93IGNhdXNlcyBjb25maWd1cmUgdG8gZXhpdCB3aXRoIHN0YXR1cyA3NywKICAgIHJhdGhlciB0 aGFuIDEsIGlmIHRoZSB2YWxhIGNvbXBpbGVyIGZvdW5kIGlzIHRvbyBvbGQuCgogIC0gVGhlIGJ1 aWxkIHN5c3RlbSBvZiBBdXRvbWFrZSBpdHNlbGYgbm93IGF2b2lkcyB0aGUgdXNlIG9mIG1ha2UK ICAgIHJlY3Vyc2lvbiBhcyBtdWNoIGFzIHBvc3NpYmxlLgoKICAtIEF1dG9tYWtlIG5vdyBwcmVm ZXJzIHRvIHF1b3RlICdsaWtlIHRoaXMnIG9yICJsaWtlIHRoaXMiLCByYXRoZXIKICAgIHRoYW4g YGxpa2UgdGhpcycsIGluIGRpYWdub3N0aWMgbWVzc2FnZSBhbmQgZ2VuZXJhdGVkIE1ha2VmaWxl cywKICAgIHRvIGFjY29tbW9kYXRlIHRoZSBuZXcgR05VIENvZGluZyBTdGFuZGFyZHMgcmVjb21t ZW5kYXRpb25zLgoKICAtIEF1dG9tYWtlIGhhcyBhIG5ldyBvcHRpb24gJy0tcHJpbnQtbGliZGly JyB0aGF0IHByaW50cyB0aGUgcGF0aCBvZiB0aGUKICAgIGRpcmVjdG9yeSBjb250YWluaW5nIHRo ZSBBdXRvbWFrZS1wcm92aWRlZCBzY3JpcHRzIGFuZCBkYXRhIGZpbGVzLgoKICAtIFRoZSAnZGlz dCcgYW5kICdkaXN0LWFsbCcgdGFyZ2V0cyBub3cgY2FuIHJ1biBjb21wcmVzc29ycyBpbiBwYXJh bGxlbC4KCiAgLSBUaGUgcnVsZXMgdG8gY3JlYXRlIHBkZiwgZHZpIGFuZCBwcyBvdXRwdXQgZnJv bSBUZXhpbmZvIGZpbGVzIG5vdwogICAgd29ya3MgYmV0dGVyIHdpdGggbW9kZXJuICd0ZXhpMmR2 aScgc2NyaXB0LCBieSBleHBsaWNpdGx5IHBhc3NpbmcKICAgIGl0IHRoZSAnLS1jbGVhbicgb3B0 aW9uIHRvIGVuc3VyZSBzdHJheSBhdXhpbGlhcnkgZmlsZXMgYXJlIG5vdAogICAgbGVmdCB0byBj bHV0dGVyIHRoZSBidWlsZCBkaXJlY3RvcnkuCgogIC0gQXV0b21ha2UgY2FuIG5vdyBnZW5lcmF0 ZSBzaWxlbmNlZCBydWxlcyBmb3IgdGV4aW5mbyBvdXRwdXRzLgoKICAtIFNvbWUgYXV4aWxpYXJ5 IGZpbGVzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgZGlzdHJpYnV0ZWQgYnkgQXV0b21ha2UKICAg IChlLmcuLCAnaW5zdGFsbC1zaCcsIG9yIHRoZSAnZGVwY29tcCcgc2NyaXB0IGZvciBwYWNrYWdl cyBjb21waWxpbmcKICAgIEMgc291cmNlcykgbWlnaHQgbm93IGJlIGxpc3RlZCBpbiB0aGUgRElT VF9DT01NT04gdmFyaWFibGUgaW4gbWFueQogICAgTWFrZWZpbGUuaW4gZmlsZXMsIHJhdGhlciB0 aGFuIGluIHRoZSB0b3AtbGV2ZWwgb25lLgoKICAtIE1lc3NhZ2VzIG9mIHR5cGVzIHdhcm5pbmcg b3IgZXJyb3IgZnJvbSAnYXV0b21ha2UnIGFuZCAnYWNsb2NhbCcKICAgIGFyZSBub3cgcHJlZml4 ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB0eXBlLCBhbmQgcHJlc2VuY2Ugb2YgLVdlcnJvcgogICAg aXMgbm90ZWQuCgogIC0gQXV0b21ha2UncyBlYXJseSBjb25maWd1cmUtdGltZSBzYW5pdHkgY2hl Y2sgbm93IHRyaWVzIHRvIGF2b2lkCiAgICBzbGVlcGluZyBmb3IgYSBzZWNvbmQsIHdoaWNoIHNs b3dlZCBkb3duIGNhY2hlZCBjb25maWd1cmUgcnVucwogICAgbm90aWNlYWJseS4gIEluIHRoYXQg Y2FzZSwgaXQgd2lsbCBjaGVjayBiYWNrIGF0IHRoZSBlbmQgb2YgdGhlCiAgICBjb25maWd1cmUg c2NyaXB0IHRvIGVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBzZWNvbmQgaGFzIHBhc3NlZCwgdG8K ICAgIGF2b2lkIHRpbWUgc3RhbXAgaXNzdWVzIHdpdGggbWFrZWZpbGUgcnVsZXMgcmVydW5uaW5n IGF1dG90b29scwogICAgcHJvZ3JhbXMuCgogIC0gVGhlIHdhcm5pbmdzIGluIHRoZSBjYXRlZ29y eSAnZXh0cmEtcG9ydGFiaWxpdHknIGFyZSBub3cgZW5hYmxlZCBieQogICAgJy1XYWxsJy4gIElu IHByZXZpb3VzIHZlcnNpb25zLCBvbmUgaGFzIHRvIHVzZSAnLVdleHRyYS1wb3J0YWJpbGl0eScK ICAgIHRvIGVuYWJsZSB0aGVtLgoKQnVncyBmaXhlZCBpbiAxLjEyOgoKICAtIFZhcmlvdXMgbWlu b3IgYnVnZml4ZXMgZm9yIHJlY2VudCBvciBsb25nLXN0YW5kaW5nIGJ1Z3MuCgoqIEJ1Z3MgaW50 cm9kdWNlZCBieSAxLjExOgoKICAtIFRoZSBBTV9DT05EX0lGIG1hY3JvIGFsc28gd29ya3MgaWYg dGhlIHNoZWxsIGV4cHJlc3Npb24gZm9yIHRoZQogICAgY29uZGl0aW9uYWwgaXMgbm8gbG9uZ2Vy IHZhbGlkIGZvciB0aGUgY29uZGl0aW9uLgoKICAtIFRoZSBhdXRvbWFrZS1wcm92aWRlZCBwYXJh bGxlbCB0ZXN0c3VpdGUgaGFybmVzcyBubyBsb25nZXIgZmFpbHMKICAgIHdpdGggQlNEIG1ha2Ug dXNlZCBpbiBwYXJhbGxlbCBtb2RlIHdoZW4gdGhlcmUgYXJlIHRlc3Qgc2NyaXB0cyBpbgogICAg YSBzdWJkaXJlY3RvcnksIGxpa2UgaW46CgogICAgICBURVNUUyA9IHN1Yi9mb28udGVzdCBzdWIv YmFyLnRlc3QKCiogTG9uZy1zdGFuZGluZyBidWdzOgoKICAtIEF1dG9tYWtlJ3Mgb3duIGJ1aWxk IHN5c3RlbSBmaW5hbGx5IGhhdmUgYSByZWFsICJpbnN0YWxsY2hlY2siIHRhcmdldC4KCiAgLSBW YWxhLXJlbGF0ZWQgY2xlYW51cCBydWxlcyBhcmUgbm93IG1vcmUgY29tcGxldGUsIGFuZCB3b3Jr IGJldHRlciBpbgogICAgYSBWUEFUSCBzZXR1cC4KCiAgLSBGaWxlcyBsaXN0ZWQgd2l0aCB0aGUg QUNfUkVRVUlSRV9BVVhfRklMRSBtYWNybyBpbiBjb25maWd1cmUuYWMgYXJlCiAgICBub3cgYXV0 b21hdGljYWxseSBkaXN0cmlidXRlZCBhbHNvIGlmIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGF1eGls aWFyeQogICAgZmlsZXMgY29pbmNpZGVzIHdpdGggdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCgog IC0gQXV0b21ha2Ugbm93IGRldGVjdHMgdGhlIHByZXNlbmNlIG9mIHRoZSAnLWQnIGZsYWcgaW4g dGhlIHZhcmlvdXMKICAgICcqWUZMQUdTJyB2YXJpYWJsZXMgZXZlbiB3aGVuIHRoZWlyIGRlZmlu aXRpb25zIGludm9sdmUgaW5kaXJlY3Rpb25zCiAgICB0aHJvdWdoIG90aGVyIHZhcmlhYmxlcywg c3VjaCBhcyBpbjoKICAgICAgZm9vX29wdHMgPSAtZAogICAgICBBTV9ZRkxBR1MgPSAkKGZvb19v cHRzKQoKICAtIEF1dG9tYWtlIG5vdyBjb21wbGFpbnMgaWYgYSAnKllGTEFHUycgdmFyaWFibGUg aGFzIGFueSBjb25kaXRpb25hbAogICAgY29udGVudCwgbm90IG9ubHkgYSBjb25kaXRpb25hbCBk ZWZpbml0aW9uLgoKICAtIEV4cGxpY2l0IGVuYWJsaW5nIGFuZC9vciBkaXNhYmxpbmcgb2YgQXV0 b21ha2Ugd2FybmluZyBjYXRlZ29yaWVzCiAgICB0aHJvdWdoIHRoZSAnLVcuLi4nIG9wdGlvbnMg bm93IGFsd2F5cyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlCiAgICBpbXBsaWNpdCB3YXJuaW5n IGxldmVsIGltcGxpZWQgYnkgQXV0b21ha2Ugc3RyaWN0bmVzcyAoZm9yZWlnbiwgZ251CiAgICBv ciBnbml0cyksIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIGluIHdoaWNoIHN1Y2ggc3RyaWN0bmVz cyBhbmQKICAgIHdhcm5pbmcgZmxhZ3MgYXBwZWFyLiAgRm9yIGV4YW1wbGUsIGEgc2V0dGluZyBs aWtlOgogICAgICBBVVRPTUFLRV9PUFRJT05TID0gLVdhbGwgLS1mb3JlaWduCiAgICB3aWxsIGNh dXNlIHRoZSB3YXJuaW5ncyBpbiBjYXRlZ29yeSAncG9ydGFiaWxpdHknIHRvIGJlIGVuYWJsZWQs IGV2ZW4KICAgIGlmIHRob3NlIHdhcm5pbmdzIGFyZSBieSBkZWZhdWx0IGRpc2FibGVkIGluICdm b3JlaWduJyBzdHJpY3RuZXNzLgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKTmV3IGluIDEuMTEuNiAo MjAxMi0wNy0wOSk6ICh1bmtub3duKQoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKQnVncyBmaXhlZCBp biAxLjExLjUgKDIwMTItMDQtMTMpOgoKKiBCdWdzIGludHJvZHVjZWQgYnkgMS4xMS4zOgoKICAt IFZhbGEgZmlsZXMgd2l0aCAnLnZhcGknIGV4dGVuc2lvbiBhcmUgbm93IHJlY29nbml6ZWQgYW5k IGhhbmRsZWQKICAgIGNvcnJlY3RseSBhZ2Fpbi4gIFNlZSBhdXRvbWFrZSBidWcjMTEyMjIuCgog IC0gVmFsYSBzdXBwb3J0IHdvcmsgYWdhaW4gZm9yIHByb2plY3RzIHRoYXQgY29udGFpbiBzb21l IHByb2dyYW0KICAgIGJ1aWx0IGZyb20gJy52YWxhJyAoYW5kIHBvc3NpYmx5ICcuYycpIHNvdXJj ZXMgYW5kIHNvbWUgb3RoZXIKICAgIHByb2dyYW0gYnVpbHQgZnJvbSAnLmMnIHNvdXJjZXMgKm9u bHkqLiAgU2VlIGF1dG9tYWtlIGJ1ZyMxMTIyOS4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBp biAxLjExLjQgKDIwMTItMDQtMDIpOgoKKiBNaXNjZWxsYW5lb3VzIGNoYW5nZXM6CgogIC0gVGhl ICdhci1saWInIHNjcmlwdCBub3cgaWdub3JlcyB0aGUgInMiIChzeW1ib2wgaW5kZXgpIGFuZCAi UyIgKG5vCiAgICBzeW1ib2wgaW5kZXgpIG1vZGlmaWVycyBhcyB3ZWxsIGFzIHRoZSAicyIgYWN0 aW9uLCBhcyB0aGUgc3ltYm9sIGluZGV4CiAgICBpcyBjcmVhdGVkIHVuY29uZGl0aW9uYWxseSBi eSBNaWNyb3NvZnQgbGliLiAgQWxzbywgdGhlICJxIiAocXVpY2spCiAgICBhY3Rpb24gaXMgbm93 IGEgc3lub255bSBmb3IgInIiIChyZXBsYWNlKS4gIEFsc28sIHRoZSBzY3JpcHQgaGFzIGJlZW4K ICAgIGlnbm9yaW5nIHRoZSAidiIgKHZlcmJvc2UpIG1vZGlmaWVyIGFscmVhZHkgc2luY2UgQXV0 b21ha2UgMS4xMS4zLgoKICAtIFdoZW4gdGhlICdjb21waWxlJyBzY3JpcHQgaXMgdXNlZCB0byB3 cmFwIE1TVkMsIGl0IG5vdyBhY2NlcHRzIGFuCiAgICBvcHRpb25hbCBzcGFjZSBiZXR3ZWVuIHRo ZSAtSSwgLUwgYW5kIC1sIG9wdGlvbnMgYW5kIHRoZWlyIHJlc3BlY3RpdmUKICAgIGFyZ3VtZW50 cywgZm9yIGJldHRlciBQT1NJWCBjb21wbGlhbmNlLgoKICAtIFRoZXJlIGlzIGFuIGluaXRpYWws IGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgZGVwZW5kZW5jeQogICAgdHJhY2tp bmcgd2l0aCB0Y2MgKHRoZSBUaW55IEMgQ29tcGlsZXIpLiAgSXRzIGFzc29jaWF0ZWQgZGVwbW9k ZSBpcwogICAgY3VycmVudGx5IHJlY29nbml6ZWQgYXMgImljYyIgKGJ1dCB0aGlzIGFuZCBvdGhl ciBkZXRhaWxzIGFyZSBsaWtlbHkKICAgIHRvIGNoYW5nZSBpbiBmdXR1cmUgdmVyc2lvbnMpLgoK ICAtIEF1dG9tYXRpYyBkZXBlbmRlbmN5IHRyYWNraW5nIG5vdyB3b3JrcyBhbHNvIHdpdGggdGhl IElCTSBYTCBDL0MrKwogICAgY29tcGlsZXJzLCB0aGFua3MgdG8gdGhlIG5ldyBuZXcgZGVwbW9k ZSAneGxjJy4KCkJ1Z3MgZml4ZWQgaW4gMS4xMS40OgoKKiBCdWdzIGludHJvZHVjZWQgYnkgMS4x MS4yOgoKICAtIEEgZGVmaW5pdGlvbiBvZiAnbm9pbnN0X1BZVEhPTicgYmVmb3JlICdweXRob25f UFlUSE9OJyAob3Igc2ltaWxhcikKICAgIG5vIGxvbmdlciBjYXVzZSBzcHVyaW91cyBmYWlsdXJl cyB1cG9uICJtYWtlIGluc3RhbGwiLgoKICAtIFRoZSB1c2VyIGNhbiBub3cgaW5zdHJ1Y3QgdGhl ICd1bmluc3RhbGwtaW5mbycgcnVsZSBub3QgdG8gdXBkYXRlCiAgICB0aGUgJyR7aW5mb2Rpcn0v ZGlyJyBmaWxlIGJ5IGV4cG9ydGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKICAgICdBTV9V UERBVEVfSU5GT19ESVInIHRvIHRoZSB2YWx1ZSAibm8iLiAgVGhpcyBpcyBkb25lIGZvciBjb25z aXN0ZW5jeQogICAgd2l0aCBob3cgdGhlICdpbnN0YWxsLWluZm8nIHJ1bGUgb3BlcmF0ZXMgc2lu Y2UgYXV0b21ha2UgMS4xMS4yLgoKKiBMb25nLXN0YW5kaW5nIGJ1Z3M6CgogIC0gSXQgaXMgbm93 IHBvc3NpYmxlIGZvciBhIGZvb19TT1VSQ0VTIHZhcmlhYmxlIHRvIGhvbGQgVmFsYSBzb3VyY2Vz CiAgICB0b2dldGhlciB3aXRoIEMgaGVhZGVyIGZpbGVzLCBhcyB3ZWxsIGFzIHdpdGggc291cmNl cyBhbmQgaGVhZGVycyBmb3IKICAgIG90aGVyIHN1cHBvcnRlZCBsYW5ndWFnZXMgKGUuZy4sIEMr KykuICBQcmV2aW91c2x5LCBvbmx5IG1peGluZyBDIGFuZAogICAgVmFsYSBzb3VyY2VzIHdhcyBz dXBwb3J0ZWQuCgogIC0gSWYgImFjbG9jYWwgLS1pbnN0YWxsIiBpcyB1c2VkLCBhbmQgdGhlIGZp cnN0IGRpcmVjdG9yeSBzcGVjaWZpZWQgd2l0aAogICAgJy1JJyBpcyBub24tZXhpc3RlbnQsIGFj bG9jYWwgd2lsbCBub3cgY3JlYXRlIGl0IGJlZm9yZSB0cnlpbmcgdG8gY29weQogICAgZmlsZXMg aW4gaXQuCgogIC0gQW4gZW1wdHkgZGVjbGFyYXRpb24gb2YgYSAiZm9vX1BSSU1BUlkiIG5vIGxv bmdlciBjYXVzZSB0aGUgZ2VuZXJhdGVkCiAgICBpbnN0YWxsIHJ1bGVzIHRvIGNyZWF0ZSBhbiBl bXB0eSAkKGZvb2RpcikgZGlyZWN0b3J5OyBmb3IgZXhhbXBsZSwgaWYKICAgIE1ha2VmaWxlLmFt IGNvbnRhaW5zIHNvbWV0aGluZyBsaWtlOgoKICAgICAgcGtnbGliZXhlY19TQ1JJUFRTID0KICAg ICAgaWYgRkFMU0UKICAgICAgcGtnbGliZXhlY19TQ1JJUFRTICs9IGJhci5zaAogICAgICBlbmRp ZgoKICAgIHRoZSAkKHBrZ2xpYmV4ZWMpIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBjcmVhdGVkIHVw b24gIm1ha2UgaW5zdGFsbCIuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS4xMS4zICgy MDEyLTAyLTAxKToKCiogTWlzY2VsbGFuZW91cyBjaGFuZ2VzOgoKICAtIEF1dG9tYWtlJ3Mgb3du IGJ1aWxkIHN5c3RlbSBpcyBtb3JlIHNpbGVudCBieSBkZWZhdWx0LCBtYWtpbmcgdXNlIG9mCiAg ICB0aGUgJ3NpbGVudC1ydWxlcycgb3B0aW9uLgoKICAtIFRoZSBtYXN0ZXIgY29weSBvZiB0aGUg J2dudXBsb2FkJyBzY3JpcHQgaXMgbm93IG1haW50YWluZWQgaW4gZ251bGliLAogICAgbm90IGlu IGF1dG9tYWtlLgoKICAtIFRoZSAnbWlzc2luZycgc2NyaXB0IG5vIGxvbmdlciB0cmllcyB0byB3 cmFwIGNhbGxzIHRvICd0YXInLgoKICAtICJtYWtlIGRpc3QiIG5vIGxvbmdlciB3cmFwcyAndGFy JyBpbnZvY2F0aW9ucyB3aXRoIHRoZSAnbWlzc2luZycKICAgIHNjcmlwdC4gIFNpbWlsYXJseSwg dGhlIG9ic29sZXNjZW50IHZhcmlhYmxlICckKEFNVEFSKScgKHdoaWNoIHlvdQogICAgc2hvdWxk bid0IGJlIHVzaW5nIEJUVyA7LSkgbm8gbG9uZ2VyIGludm9rZXMgdGhlICdtaXNzaW5nJyBzY3Jp cHQKICAgIHRvIHdyYXAgdGFyLCBidXQgc2ltcGx5IGludm9rZXMgdGhlICd0YXInIHByb2dyYW0g aXRzZWxmLgogICAgVGhlIFRBUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXMuCgogIC0g Im1ha2UgZGlzdCIgY2FuIG5vdyBjcmVhdGUgbHppcC1jb21wcmVzc2VkIHRhcmJhbGxzLgoKICAt IEluIHRoZSBBdXRvbWFrZSBpbmZvIGRvY3VtZW50YXRpb24sIHRoZSBUb3Agbm9kZSBhbmQgdGhl IG5vZGVzIGFib3V0CiAgICB0aGUgaW52b2NhdGlvbiBvZiB0aGUgYXV0b21ha2UgYW5kIGFjbG9j YWwgcHJvZ3JhbXMgaGF2ZSBiZWVuIHJlbmFtZWQ7CiAgICBub3csIGNhbGxpbmcgImluZm8gYXV0 b21ha2UiIHdpbGwgb3BlbiB0aGUgVG9wIG5vZGUsIHdoaWxlIGNhbGxpbmcKICAgICJpbmZvIGF1 dG9tYWtlLWludm9jYXRpb24iIGFuZCAiaW5mbyBhY2xvY2FsLWludm9jYXRpb24iIHdpbGwgYWNj ZXNzCiAgICB0aGUgbm9kZXMgYWJvdXQgdGhlIGludm9jYXRpb24gb2YgcmVzcGVjdGl2ZWx5IGF1 dG9tYWtlIGFuZCBhY2xvY2FsLgoKICAtIEF1dG9tYWtlIGlzIG5vdyBkaXN0cmlidXRlZCBhcyBh IGd6aXAtY29tcHJlc3NlZCBhbmQgYW4geHotY29tcHJlc3NlZAogICAgdGFyYmFsbC4gIFByZXZp b3VzbHksIGJ6aXAyIHdhcyB1c2VkIGluc3RlYWQgb2YgeHouCgogIC0gVGhlIGxhc3QgcmVsaWNz IG9mIFB5dGhvbiAxLjUgc3VwcG9ydCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZQogICAgQU1f UEFUSF9QWVRIT04gbWFjcm8uCgogIC0gRm9yIHByb2dyYW1zIGFuZCBsaWJyYXJpZXMsIGF1dG9t YWtlIG5vdyBkZXRlY3RzIEVYVFJBX2Zvb19ERVBFTkRFTkNJRVMKICAgIGFuZCBhZGRzIHRoZW0g dG8gdGhlIG5vcm1hbCBsaXN0IG9mIGRlcGVuZGVuY2llcywgYnV0IHdpdGhvdXQKICAgIG92ZXJ3 cml0aW5nIHRoZSBmb29fREVQRU5ERU5DSUVTIHZhcmlhYmxlLCB3aGljaCBpcyBub3JtYWxseSBj b21wdXRlZAogICAgYnkgYXV0b21ha2UuCgpCdWdzIGZpeGVkIGluIDEuMTEuMzoKCiogQnVncyBp bnRyb2R1Y2VkIGJ5IDEuMTEuMjoKCiAgLSBBdXRvbWFrZSBub3cgY29ycmVjdGx5IHJlY29nbml6 ZXMgdGhlIHByZWZpeC9wcmltYXJ5IGNvbWJpbmF0aW9uCiAgICdwa2dsaWJleGVjX1NDUklQVFMn IGFzIHZhbGlkLgoKICAtIFRoZSBwYXJhbGxlbC10ZXN0cyBoYXJuZXNzIG5vIGxvbmdlciB0cmlw cyBvbiBzZWQgaW1wbGVtZW50YXRpb25zCiAgICB3aXRoIHN0cmljdGVyIGxpbWl0cyBvbiB0aGUg bGVuZ3RoIG9mIGlucHV0IGxpbmVzIChwcm9ibGVtIHNlZW4gYXQKICAgIGxlYXN0IG9uIFNvbGFy aXMgOCkuCgoqIExvbmctc3RhbmRpbmcgYnVnczoKCiAgLSBUaGUgImRlbGV0ZWQgaGVhZGVyIGZp bGUgcHJvYmxlbSIgZm9yICouYW0gZmlsZXMgaXMgYXZvaWRlZCBieSBzdHViCiAgICBydWxlcy4g IFRoaXMgYWxsb3dzICdtYWtlJyB0byB0cmlnZ2VyIGEgcmVydW4gb2YgJ2F1dG9tYWtlJyBhbHNv IGlmCiAgICBzb21lIHByZXZpb3VzbHkgbmVlZGVkICcuYW0nIGZpbGUgaGFzIGJlZW4gcmVtb3Zl ZC4KCiAgLSBUaGUgJ3NpbGVudC1ydWxlcycgb3B0aW9uIG5vdyBnZW5lcmF0ZXMgd29ya2luZyBt YWtlZmlsZXMgZXZlbgogICAgZm9yIHRoZSB1bmNvbW1vbiAnbWFrZScgaW1wbGVtZW50YXRpb25z IHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlCiAgICBuZXN0ZWQtdmFyaWFibGVzIGV4dGVuc2lvbiB0 byBQT1NJWCAyMDA4LiAgRm9yIHN1Y2ggJ21ha2UnCiAgICBpbXBsZW1lbnRhdGlvbnMsIHdoZXRo ZXIgYSBidWlsZCBpcyBzaWxlbnQgaXMgZGV0ZXJtaW5lZCBhdAogICAgY29uZmlndXJlIHRpbWUs IGFuZCBjYW5ub3QgYmUgb3ZlcnJpZGRlbiBhdCBtYWtlIHRpbWUgd2l0aAogICAgIm1ha2UgVj0w IiBvciAibWFrZSBWPTEiLgoKICAtIFZhbGEgc3VwcG9ydCBub3cgd29ya3MgYmV0dGVyIGluIFZQ QVRIIHNldHVwcy4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCk5ldyBpbiAxLjExLjIgKDIwMTEtMTIt MjIpOgoKKiBDaGFuZ2VzIHRvIGFjbG9jYWw6CgogIC0gVGhlIGAtLWFjZGlyJyBvcHRpb24gaXMg ZGVwcmVjYXRlZC4gIE5vdyB5b3Ugc2hvdWxkIHVzZSB0aGUgbmV3IG9wdGlvbnMKICAgIGAtLWF1 dG9tYWtlLWFjZGlyJyBhbmQgYC0tc3lzdGVtLWFjZGlyJyBpbnN0ZWFkLgoKICAtIFRoZSBgQUNM T0NBTF9QQVRIJyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3cgaW50ZXJwcmV0ZWQgYXMgYQog ICAgY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBkaXJlY3RvcmllcyB0byBzZWFy Y2ggYWZ0ZXIgdGhlCiAgICBhdXRvbWFrZSBpbnRlcm5hbCBhY2RpciAoYnkgZGVmYXVsdCAke3By ZWZpeH0vc2hhcmUvYWNsb2NhbC1BUElWRVJTSU9OKQogICAgYW5kIGJlZm9yZSB0aGUgc3lzdGVt IGFjZGlyIChieSBkZWZhdWx0ICR7cHJlZml4fS9zaGFyZS9hY2xvY2FsKS4KCiogTWlzY2VsbGFu ZW91cyBjaGFuZ2VzOgoKICAtIFRoZSBBdXRvbWFrZSBzdXBwb3J0IGZvciBhdXRvbWF0aWMgZGUt QU5TSS1maWNhdGlvbiBoYXMgYmVlbgogICAgZGVwcmVjYXRlZC4gIEl0IHdpbGwgcHJvYmFibHkg YmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBBdXRvbWFrZQogICAgcmVsZWFzZSAoMS4xMiku CgogIC0gVGhlIGBsem1hJyBjb21wcmVzc2lvbiBzY2hlbWUgYW5kIGFzc29jaWF0ZWQgYXV0b21h a2Ugb3B0aW9uIGBkaXN0LWx6bWEnCiAgICBpcyBvYnNvbGV0ZWQgYnkgYHh6JyBhbmQgYGRpc3Qt eHonIGR1ZSB0byB1cHN0cmVhbSBjaGFuZ2VzLgoKICAtIFlvdSBtYXkgYWRqdXN0IHRoZSBjb21w cmVzc2lvbiBvcHRpb25zIHVzZWQgaW4gZGlzdC14eiBhbmQgZGlzdC1iemlwMi4KICAgIFRoZSBk ZWZhdWx0IGlzIG5vdyBtZXJlbHkgLWUgZm9yIHh6LCBidXQgc3RpbGwgLTkgZm9yIGJ6aXA7ICB5 b3UgbWF5CiAgICBzcGVjaWZ5IGEgZGlmZmVyZW50IGxldmVsIHZpYSB0aGUgWFpfT1BUIGFuZCBC WklQMiBlbnZ2YXJzIHJlc3BlY3RpdmVseS4KICAgIEUuZy4sICJtYWtlIGRpc3QteHogWFpfT1BU PS03IiBvciAibWFrZSBkaXN0LWJ6aXAyIEJaSVAyPS01IgoKICAtIFRoZSBgY29tcGlsZScgc2Ny aXB0IG5vdyBjb252ZXJ0cyBzb21lIG9wdGlvbnMgZm9yIE1TVkMgZm9yIGEgYmV0dGVyCiAgICB1 c2VyIGV4cGVyaWVuY2UuICBTaW1pbGFybHksIHRoZSBuZXcgYGFyLWxpYicgc2NyaXB0IHdyYXBz IE1pY3Jvc29mdCBsaWIuCgogIC0gVGhlIHB5LWNvbXBpbGUgc2NyaXB0IG5vdyBhY2NlcHRzIGVt cHR5IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIG9wdGlvbnMKICAgIGAtLWRlc3RkaXInIGFuZCBg LS1iYXNlZGlyJywgYW5kIGNvbXBsYWlucyBhYm91dCB1bnJlY29nbml6ZWQgb3B0aW9ucy4KICAg IE1vcmVvdmVyLCBhIG5vbi1vcHRpb24gYXJndW1lbnQgb3IgYSBzcGVjaWFsIGAtLScgYXJndW1l bnQgdGVybWluYXRlcwogICAgdGhlIGxpc3Qgb2Ygb3B0aW9ucy4KCiAgLSBBIGRldmVsb3BlciB0 aGF0IG5lZWRzIHRvIHBhc3Mgc3BlY2lmaWMgZmxhZ3MgdG8gY29uZmlndXJlIGF0ICJtYWtlCiAg ICBkaXN0Y2hlY2siIHRpbWUgY2FuIG5vdywgYW5kIGluZGVlZCBpcyBhZHZpc2VkIHRvLCBkbyBz byBieSBkZWZpbmluZwogICAgdGhlIGRldmVsb3Blci1yZXNlcnZlZCBtYWtlZmlsZSB2YXJpYWJs ZSBBTV9ESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTLAogICAgaW5zdGVhZCBvZiB0aGUgb2xkIERJ U1RDSEVDS19DT05GSUdVUkVfRkxBR1MuCiAgICBUaGUgRElTVENIRUNLX0NPTkZJR1VSRV9GTEFH UyB2YXJpYWJsZSBzaG91bGQgbm93IGJlIHJlc2VydmVkIGZvciB0aGUKICAgIHVzZXI7IHN0aWxs LCB0aGUgb2xkIE1ha2VmaWxlLmFtIGZpbGVzIHRoYXQgdXNlZCB0byBkZWZpbmUgaXQgd2lsbAog ICAgc3RpbGwgY29udGludWUgdG8gd29yayBhcyBiZWZvcmUuCgogIC0gTmV3IG1hY3JvIEFNX1BS T0dfQVIgdGhhdCBsb29rcyBmb3IgYW4gYXJjaGl2ZXIgYW5kIHdyYXBzIGl0IGluIHRoZSBuZXcK ICAgICdhci1saWInIGF1eGlsaWFyeSBzY3JpcHQgaWYgdGhlIHNlbGVjdGVkIGFyY2hpdmVyIGlz IE1pY3Jvc29mdCBsaWIuCiAgICBUaGlzIG5ldyBtYWNybyBpcyByZXF1aXJlZCBmb3IgTElCUkFS SUVTIGFuZCBMVExJQlJBUklFUyB3aGVuIGF1dG9tYWtlCiAgICBpcyBydW4gd2l0aCAtV2V4dHJh LXBvcnRhYmlsaXR5IGFuZCAtV2Vycm9yLgoKICAtIFdoZW4gdXNpbmcgRGVqYUdudS1iYXNlZCB0 ZXN0c3VpdGVzLCB0aGUgdXNlciBjYW4gZXh0ZW5kIHRoZSBgc2l0ZS5leHAnCiAgICBmaWxlIGdl bmVyYXRlZCBieSBhdXRvbWFrZS1wcm92aWRlZCBydWxlcyBieSBkZWZpbmluZyB0aGUgc3BlY2lh bCBtYWtlCiAgICB2YXJpYWJsZSBgJChFWFRSQV9ERUpBR05VX1NJVEVfQ09ORklHKScuCgogIC0g VGhlIGBpbnN0YWxsLWluZm8nIHJ1bGUgY2FuIG5vdyBiZSBpbnN0cnVjdGVkIG5vdCB0byBjcmVh dGUvdXBkYXRlCiAgICB0aGUgYCR7aW5mb2Rpcn0vZGlyJyBmaWxlLCBieSBleHBvcnRpbmcgdGhl IG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZQogICAgYEFNX1VQREFURV9JTkZPX0RJUicgdG8gdGhl IHZhbHVlICJubyIuCgpCdWdzIGZpeGVkIGluIDEuMTEuMjoKCiogQnVncyBpbnRyb2R1Y2VkIGJ5 IDEuMTE6CgogIC0gVGhlIHBhcmFsbGVsLXRlc3RzIGRyaXZlciBubyBsb25nZXIgcHJvZHVjZXMg ZXJyb25lb3VzIHJlc3VsdHMgd2l0aAogICAgVHJ1NjQvT1NGIDUuMSBzaCB1cG9uIHVucmVhZGFi bGUgbG9nIGZpbGVzLgoKICAtIFRoZSBgcGFyYWxsZWwtdGVzdHMnIHRlc3QgZHJpdmVyIGRvZXMg bm90IHJlcG9ydCBzcHVyaW91cyBzdWNjZXNzZXMKICAgIHdoZW4gdXNlZCB3aXRoIGNvbmN1cnJl bnQgRnJlZUJTRCBtYWtlIChlLmcuLCAibWFrZSBjaGVjayAtajMiKS4KCiAgLSBXaGVuIHRoZSBw YXJhbGxlbC10ZXN0cyBkcml2ZXIgaXMgaW4gdXNlLCBhdXRvbWFrZSBub3cgZXhwbGljaXRseQog ICAgcmVqZWN0cyBpbnZhbGlkIGVudHJpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbnRlbnRzIGluIFRF U1RfRVhURU5TSU9OUywKICAgIGluc3RlYWQgb2YgaXNzdWluZyBjb25mdXNpbmcgYW5kIGFwcGFy ZW50bHkgdW5yZWxhdGVkIGVycm9yIG1lc3NhZ2VzCiAgICAoZS5nLiwgIm5vbi1QT1NJWCB2YXJp YWJsZSBuYW1lIiwgImJhZCBjaGFyYWN0ZXJzIGluIHZhcmlhYmxlIG5hbWUiLAogICAgb3IgInJl ZGVmaW5pdGlvbiBvZiBURVNUX0VYVEVOU0lPTlMpLCBvciBldmVuLCBpbiBzb21lIHNpdHVhdGlv bnMsCiAgICBzaWxlbnRseSBwcm9kdWNpbmcgYnJva2VuIGBNYWtlZmlsZS5pbicgZmlsZXMuCgog IC0gVGhlIGBzaWxlbnQtcnVsZXMnIG9wdGlvbiBub3cgdHJ1bHkgc2lsZW5jZXMgYWxsIGNvbXBp bGUgcnVsZXMsIGV2ZW4KICAgIHdoZW4gZGVwZW5kZW5jeSB0cmFja2luZyBpcyBkaXNhYmxlZC4g IEFsc28sIHdoZW4gYHNpbGVudC1ydWxlcycgaXMKICAgIG5vdCB1c2VkLCBgbWFrZScgb3V0cHV0 IG5vIGxvbmdlciBjb250YWlucyBzcHVyaW91cyBiYWNrc2xhc2gtb25seQogICAgbGluZXMsIHRo dXMgb25jZSBhZ2FpbiBtYXRjaGluZyB3aGF0IEF1dG9tYWtlIGRpZCBiZWZvcmUgMS4xMS4KCiAg LSBUaGUgQU1fQ09ORF9JRiBtYWNybyBhbHNvIHdvcmtzIGlmIHRoZSBzaGVsbCBleHByZXNzaW9u IGZvciB0aGUKICAgIGNvbmRpdGlvbmFsIGlzIG5vIGxvbmdlciB2YWxpZCBmb3IgdGhlIGNvbmRp dGlvbi4KCiogTG9uZy1zdGFuZGluZyBidWdzOgoKICAtIFRoZSBvcmRlciBvZiBZYWNjIGFuZCBM ZXggZmxhZ3MgaXMgZml4ZWQgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyCiAgICBsYW5ndWFn ZXM6ICQoQU1fWUZMQUdTKSBjb21lcyBiZWZvcmUgJChZRkxBR1MpLCBhbmQgJChBTV9MRkxBR1Mp IGJlZm9yZQogICAgJChMRkxBR1MpLCBzbyB0aGF0IHRoZSB1c2VyIHZhcmlhYmxlcyBvdmVycmlk ZSB0aGUgZGV2ZWxvcGVyIHZhcmlhYmxlcy4KCiAgLSAibWFrZSBkaXN0Y2hlY2siIG5vdyBjb3Jy ZWN0bHkgY29tcGxhaW5zIGFsc28gd2hlbiAibWFrZSB1bmluc3RhbGwiCiAgICBsZWF2ZXMgb25l IGFuZCBvbmx5IG9uZSBmaWxlIGluc3RhbGxlZCBpbiAkKHByZWZpeCkuCgogIC0gQSAibWFrZSB1 bmluc3RhbGwiIGlzc3VlZCBiZWZvcmUgYSAibWFrZSBpbnN0YWxsIiwgb3IgYWZ0ZXIgYSBtZXJl CiAgICAibWFrZSBpbnN0YWxsLWRhdGEiIG9yIGEgbWVyZSAibWFrZSBpbnN0YWxsLWV4ZWMiIGRv ZXMgbm90IHNwdXJpb3VzbHkKICAgIGZhaWwgYW55bW9yZS4KCiAgLSBBdXRvbWFrZSBub3cgd2Fy bnMgYWJvdXQgbW9yZSBwcmltYXJ5L2RpcmVjdG9yeSBpbnZhbGlkIGNvbWJpbmF0aW9ucywKICAg IHN1Y2ggYXMgImRvY19MSUJSQVJJRVMiIG9yICJwa2dsaWJfUFJPR1JBTVMiLgoKICAtIFJ1bGVz IGdlbmVyYXRlZCBieSBBdXRvbWFrZSBub3cgdHJ5IGhhcmRlciB0byBub3QgY2hhbmdlIGFueSBm aWxlcyB3aGVuCiAgICBgbWFrZSAtbicgaXMgaW52b2tlZC4gIEZpeGVzIGluY2x1ZGUgY29tcGls YXRpb24gb2YgRW1hY3MgTGlzcCwgVmFsYSwgb3IKICAgIFlhY2Mgc291cmNlIGZpbGVzIGFuZCB0 aGUgcnVsZSB0byB1cGRhdGUgY29uZmlnLmguCgogIC0gU2V2ZXJhbCBzY3JpcHRzIGFuZCB0aGUg cGFyYWxsZWwtdGVzdHMgdGVzdHN1aXRlIGRyaXZlciBub3cgZXhpdCB3aXRoCiAgICB0aGUgcmln aHQgZXhpdCBzdGF0dXMgdXBvbiByZWNlaXZpbmcgYSBzaWduYWwuCgogIC0gQSBwZXItTWFrZWZp bGUuYW0gc2V0dGluZyBvZiAtV2Vycm9yIGRvZXMgbm90IGVycm9uZW91c2x5IGNhcnJ5IG92ZXIK ICAgIHRvIHRoZSBoYW5kbGluZyBvZiBvdGhlciBNYWtlZmlsZS5hbSBmaWxlcy4KCiAgLSBUaGUg Y29kZSBmb3IgYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcgd29ya3MgYXJvdW5kIGEgU29s YXJpcwogICAgbWFrZSBidWcgdHJpZ2dlcmVkIGJ5IHNvdXJjZXMgY29udGFpbmluZyByZXBlYXRl ZCBzbGFzaGVzIHdoZW4gdGhlCiAgICBgc3ViZGlyLW9iamVjdHMnIG9wdGlvbiB3YXMgdXNlZC4K CiAgLSBUaGUgbWFrZWRlcGVuZCBhbmQgaHAgZGVwbW9kZXMgbm93IHdvcmsgYmV0dGVyIHdpdGgg VlBBVEggYnVpbGRzLgoKICAtIEphdmEgc291cmNlcyBzcGVjaWZpZWQgd2l0aCBjaGVja19KQVZB IGFyZSBubyBsb25nZXIgY29tcGlsZWQgZm9yCiAgICAibWFrZSBhbGwiLCBidXQgb25seSBmb3Ig Im1ha2UgY2hlY2siLgoKICAtIEFuIHVzYWdlIGxpa2UgImphdmFfSkFWQSA9IGZvby5qYXZhIiB3 aWxsIG5vdyBjYXVzZSBBdXRvbWFrZSB0byB3YXJuCiAgICBhbmQgZXJyb3Igb3V0IGlmIGBqYXZh ZGlyJyBpcyB1bmRlZmluZWQsIGluc3RlYWQgb2Ygc2lsZW50bHkgcHJvZHVjaW5nCiAgICBhIGJy b2tlbiBNYWtlZmlsZS5pbi4KCiAgLSBhY2xvY2FsIGFuZCBhdXRvbWFrZSBub3cgaG9ub3IgdGhl IGNvbmZpZ3VyZS10aW1lIGRlZmluaXRpb25zIG9mCiAgICBBVVRPQ09ORiBhbmQgQVVUT000VEUg d2hlbiB0aGV5IHNwYXduIGF1dG9jb25mIG9yIGF1dG9tNHRlIHByb2Nlc3Nlcy4KCiAgLSBUaGUg YGluc3RhbGwtaW5mbycgcmVjaXBlIG5vIGxvbmdlciB0cmllcyB0byBndWVzcyB3aGV0aGVyIHRo ZQogICAgYGluc3RhbGwtaW5mbycgcHJvZ3JhbSBpcyBmcm9tIERlYmlhbiBvciBmcm9tIEdOVSwg YW5kIGFkYXB0aXZlbHkKICAgIGNoYW5nZSBpdHMgYmVoYXZpb3I7IHRoaXMgaGFzIHByb3ZlbiB0 byBiZSBmcmFpbCBhbmQgZWFzeSB0bwogICAgcmVncmVzcy4KCn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K CkJ1Z3MgZml4ZWQgaW4gMS4xMS4xICgyMDA5LTEyLTA4KToKCiAgLSBMb3RzIG9mIG1pbm9yIGJ1 Z2ZpeGVzLgoKKiBCdWdzIGludHJvZHVjZWQgYnkgMS4xMToKCiAgLSBUaGUgYHBhcmFsbGVsLXRl c3RzJyB0ZXN0IGRyaXZlciB3b3JrcyBhcm91bmQgYSBHTlUgbWFrZSAzLjgwIGJ1ZyB3aXRoCiAg ICB0cmFpbGluZyB3aGl0ZSBzcGFjZSBpbiB0aGUgdGVzdCBsaXN0IChgVEVTVFMgPSBmb28gJChF TVBUWSknKS4KCiogTG9uZyBzdGFuZGluZyBidWdzOgoKICAtIE9uIERhcndpbiA5LCBgcHl0aG9u ZGlyJyBhbmQgYHB5ZXhlY2RpcicgcG9pbnRlZCBiZWxvdyBgL0xpYnJhcnkvUHl0aG9uJwogICAg ZXZlbiBpZiB0aGUgYC0tcHJlZml4JyBhcmd1bWVudCBwb2ludGVkIG91dHNpZGUgb2YgYSBzeXN0 ZW0gZGlyZWN0b3J5LgogICAgQU1fUEFUSF9QWVRIT04gaGFzIGJlZW4gZml4ZWQgdG8gaWdub3Jl IHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIHB5dGhvbidzCiAgICBgZ2V0X3B5dGhvbl9saWInIGZ1 bmN0aW9uIGlmIGl0IHBvaW50cyBvdXRzaWRlIHRoZSBjb25maWd1cmVkIHByZWZpeCwKICAgIHVu bGVzcyB0aGUgYC0tcHJlZml4JyBhcmd1bWVudCB3YXMgZWl0aGVyIGAvdXNyJyBvciBiZWxvdyBg L1N5c3RlbScuCgogIC0gVGhlIHRlc3RzdWl0ZSBkb2VzIG5vdCB0cnkgdG8gY2hhbmdlIHRoZSBt b2RlIG9mIGBsdG1haW4uc2gnIGZpbGVzIGZyb20KICAgIGEgTGlidG9vbCBpbnN0YWxsYXRpb24g KHN5bWxpbmtlZCB0byB0ZXN0IGRpcmVjdG9yaWVzKSBhbnkgbW9yZS4KCiAgLSBBTV9QUk9HX0dD SiB1c2VzIEFDX0NIRUNLX1RPT0xTIHRvIGxvb2sgZm9yIGBnY2onIG5vdywgc28gdGhhdCBwcmVm aXhlZAogICAgdG9vbHMgYXJlIHByZWZlcnJlZCBpbiBhIGNyb3NzLWNvbXBpbGUgc2V0dXAuCgog IC0gVGhlIGRpc3RyaWJ1dGlvbiBpcyB0YXJyZWQgdXAgd2l0aCBtb2RlIDc1NSBub3cgYnkgdGhl IGBkaXN0KicgdGFyZ2V0cy4KICAgIFRoaXMgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB1 bnRydXN0ZWQgdXNlcnMgY291bGQgbW9kaWZ5IGZpbGVzCiAgICBpbiB0aGUgJChQQUNLQUdFKS0k KFZFUlNJT04pIGRpc3RkaXIgYmVmb3JlIHBhY2tpbmcgaWYgdGhlIHRvcGxldmVsCiAgICBidWls ZCBkaXJlY3Rvcnkgd2FzIHdvcmxkLXNlYXJjaGFibGUuICBUaGlzIGlzIENWRS0yMDA5LTQwMjku Cgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS4xMSAoMjAwOS0wNS0xNyk6CgoqIFZlcnNp b24gcmVxdWlyZW1lbnRzOgoKICAtIEF1dG9jb25mIDIuNjIgb3IgZ3JlYXRlciBpcyByZXF1aXJl ZC4KCiogQ2hhbmdlcyB0byBhY2xvY2FsOgoKICAtIFRoZSBhdXRvY29uZiB2ZXJzaW9uIGNoZWNr IGltcGxlbWVudGVkIGJ5IGFjbG9jYWwgaW4gYWNsb2NhbC5tNAogICAgKGFuZCBuZXcgaW4gQXV0 b21ha2UgMS4xMCkgaXMgZGVncmFkZWQgdG8gYSB3YXJuaW5nLiAgVGhpcyBoZWxwcwogICAgaW4g dGhlIGNvbW1vbiBjYXNlIHdoZXJlIHRoZSBBdXRvY29uZiB2ZXJzaW9ucyB1c2VkIGFyZSBjb21w YXRpYmxlLgoKKiBDaGFuZ2VzIHRvIGF1dG9tYWtlOgoKICAtIFRoZSBhdXRvbWFrZSBwcm9ncmFt IGNhbiBydW4gbXVsdGlwbGUgdGhyZWFkcyBmb3IgY3JlYXRpbmcgbW9zdAogICAgTWFrZWZpbGUu aW4gZmlsZXMgY29uY3VycmVudGx5LCBpZiBhdCBsZWFzdCBQZXJsIDUuNy4yIGlzIGF2YWlsYWJs ZQogICAgd2l0aCBpbnRlcnByZXRlci1iYXNlZCB0aHJlYWRzIGVuYWJsZWQuICBTZXQgdGhlIGVu dmlyb25tZW50IHZhcmlhYmxlCiAgICBBVVRPTUFLRV9KT0JTIHRvIHRoZSBtYXhpbXVtIG51bWJl ciBvZiB0aHJlYWRzIHRvIHVzZSwgaW4gb3JkZXIgdG8KICAgIGVuYWJsZSB0aGlzIGV4cGVyaW1l bnRhbCBmZWF0dXJlLgoKKiBDaGFuZ2VzIHRvIExpYnRvb2wgc3VwcG9ydDoKCiAgLSBMaWJ0b29s IGdlbmVyaWMgZmxhZ3MgYXJlIG5vdyBwYXNzZWQgdG8gdGhlIGluc3RhbGwgYW5kIHVuaW5zdGFs bAogICAgbW9kZXMgYXMgd2VsbC4KCiAgLSBkaXN0Y2hlY2sgd29ya3Mgd2l0aCBMaWJ0b29sIDIu eCBldmVuIHdoZW4gTFRfT1VUUFVUIGlzIHVzZWQsIGFzCiAgICBjb25maWcubHQgaXMgcmVtb3Zl ZCBjb3JyZWN0bHkgbm93LgoKKiBMYW5ndWFnZXMgY2hhbmdlczoKCiAgLSBzdWJkaXItb2JqZWN0 IG1vZGUgd29ya3Mgbm93IHdpdGggRm9ydHJhbiAoRjc3LCBGQywgcHJlcHJvY2Vzc2VkCiAgICBG b3J0cmFuLCBhbmQgUmF0Zm9yKS4KCiAgLSBGb3IgZmlsZXMgd2l0aCBleHRlbnNpb24gLmY5MCwg LmY5NSwgLmYwMywgb3IgLmYwOCwgdGhlIGZsYWcKICAgICQoRkNGTEFHU19mWzA5XXgpIGNvbXB1 dGVkIGJ5IEFDX0ZDX1NSQ0VYVCBpcyBub3cgdXNlZCBpbiBjb21waWxlIHJ1bGVzLgoKICAtIEZp bGVzIHdpdGggZXh0ZW5zaW9uIC5zeCBhcmUgYWxzbyB0cmVhdGVkIGFzIHByZXByb2Nlc3NlZCBh c3NlbWJsZXIuCgogIC0gVGhlIGRlZmF1bHQgc291cmNlIGZpbGUgZXh0ZW5zaW9uICguYykgY2Fu IGJlIG92ZXJyaWRkZW4gd2l0aAogICAgQU1fREVGQVVMVF9TT1VSQ0VfRVhUIG5vdy4KCiAgLSBQ eXRob24gMy4wIGlzIHN1cHBvcnRlZCBub3csIFB5dGhvbiByZWxlYXNlcyBwcmlvciB0byAyLjAg YXJlIG5vCiAgICBsb25nZXIgc3VwcG9ydGVkLgoKICAtIEFNX1BBVEhfUFlUSE9OIGhvbm9ycyBw eXRob24ncyBpZGVhIGFib3V0IHRoZSBzaXRlIGRpcmVjdG9yeS4KCiAgLSBUaGVyZSBpcyBpbml0 aWFsIHN1cHBvcnQgZm9yIHRoZSBWYWxhIHByb2dyYW1taW5nIGxhbmd1YWdlLCB3aGVuIHVzaW5n CiAgICBWYWxhIDAuNy4wIG9yIGxhdGVyLgoKKiBNaXNjZWxsYW5lb3VzIGNoYW5nZXM6CgogIC0g QXV0b21ha2UgZGV2ZWxvcG1lbnQgaXMgZG9uZSBpbiBhIGdpdCByZXBvc2l0b3J5IG9uIFNhdmFu bmFoIG5vdywgc2VlCgogICAgICBodHRwczovL2dpdC5zdi5nbnUub3JnL2dpdHdlYi8/cD1hdXRv bWFrZS5naXQKCiAgICBBIHJlYWQtb25seSBDVlMgbWlycm9yIGlzIHByb3ZpZGVkIGF0CgogICAg ICBjdnMgLWQgOnBzZXJ2ZXI6YW5vbnltb3VzQHBzZXJ2ZXIuZ2l0LnN2LmdudS5vcmc6L2F1dG9t YWtlLmdpdCBcCiAgICAgICAgICBjaGVja291dCAtZCBhdXRvbWFrZSBIRUFECgogIC0gIm1ha2Ug ZGlzdCIgY2FuIG5vdyBjcmVhdGUgeHotY29tcHJlc3NlZCB0YXJiYWxscywKICAgIGFzIHdlbGwg YXMgKGRlcHJlY2F0ZWQ/KSBsem1hLWNvbXByZXNzZWQgdGFyYmFsbHMuCgogIC0gYGF1dG9tYWtl IC0tYWRkLW1pc3NpbmcnIHdpbGwgYnkgZGVmYXVsdCBpbnN0YWxsIHRoZSBHUEx2MyBmaWxlIGFz CiAgICBDT1BZSU5HIGlmIGl0IGlzIG1pc3NpbmcuICBJdCB3aWxsIGFsc28gd2FybiB0aGF0IHRo ZSBsaWNlbnNlIGZpbGUKICAgIHNob3VsZCBiZSBhZGRlZCB0byBzb3VyY2UgY29udHJvbC4gIE5v dGUgdGhhdCBBdXRvbWFrZSB3aWxsIG5ldmVyCiAgICBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgQ09Q WUlORyBmaWxlLCBldmVuIHdoZW4gdGhlIGAtLWZvcmNlLW1pc3NpbmcnCiAgICBvcHRpb24gaXMg dXNlZC4KCiAgLSBUaGUgbWFudWFsIGlzIG5vdyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBGREwgMS4zLgoKICAtIEF1dG9tYWtlIHNoaXBzIGFuZCBpbnN0YWxscyBtYW4g cGFnZXMgZm9yIGF1dG9tYWtlIGFuZCBhY2xvY2FsIG5vdy4KCiAgLSBOZXcgc2hvcnRoYW5kIGAk KHBrZ2xpYmV4ZWNkaXIpJyBmb3IgYCQobGliZXhlY2RpcikvQFBBQ0tBR0VAJy4KCiAgLSBpbnN0 YWxsLXNoIHN1cHBvcnRzIC1DLCB3aGljaCBkb2VzIG5vdCB1cGRhdGUgdGhlIGluc3RhbGxlZCBm aWxlCiAgICAoYW5kIGl0cyB0aW1lIHN0YW1wcykgaWYgdGhlIGNvbnRlbnRzIGRpZCBub3QgY2hh bmdlLgoKICAtIFRoZSBgZ251cGxvYWQnIHNjcmlwdCBoYXMgYmVlbiByZXZhbXBlZC4KCiAgLSBU aGUgYGRlcGNvbXAnIGFuZCBgY29tcGlsZScgc2NyaXB0cyBub3cgd29yayB3aXRoIE1TVkMgdW5k ZXIgTVNZUy4KCiAgLSBUaGUgdGFyZ2V0cyBgaW5zdGFsbCcgYW5kIGB1bmluc3RhbGwnIGFyZSBt b3JlIGVmZmljaWVudCBub3csIGluIHRoYXQKICAgIGZvciBleGFtcGxlIG11bHRpcGxlIGZpbGVz IGZyb20gb25lIEF1dG9tYWtlIHZhcmlhYmxlIHN1Y2ggYXMKICAgIGBiaW5fU0NSSVBUUycgYXJl IGNvcGllZCBpbiBvbmUgYGluc3RhbGwnIChvciBgbGlidG9vbCAtLW1vZGU9aW5zdGFsbCcpCiAg ICBpbnZvY2F0aW9uIGlmIHRoZXkgZG8gbm90IGhhdmUgdG8gYmUgcmVuYW1lZC4KCiAgICBCb3Ro IGluc3RhbGwgYW5kIHVuaW5zdGFsbCBtYXkgc29tZXRpbWVzIGVudGVyIChgY2QnIGludG8pIHRo ZSB0YXJnZXQKICAgIGluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgbm93LCB3aGVuIG5vIGJ1aWxkLWxv Y2FsIHNjcmlwdHMgYXJlIHVzZWQuCgogICAgQm90aCBpbnN0YWxsIGFuZCB1bmluc3RhbGwgZG8g bm90IGZhaWwgYW55bW9yZSBidXQgZG8gbm90aGluZyBpZiBhbgogICAgaW5zdGFsbGF0aW9uIGRp cmVjdG9yeSB2YXJpYWJsZSBsaWtlIGBiaW5kaXInIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5n LgoKICAgIEZvciBidWlsdC1pbiBydWxlcywgYG1ha2UgaW5zdGFsbCcgbm93IGZhaWxzIHJlbGlh Ymx5IGlmIGluc3RhbGxhdGlvbgogICAgb2YgYSBmaWxlIGZhaWxlZC4gIENvbnZlcnNlbHksIGBt YWtlIHVuaW5zdGFsbCcgZXZlbiBzdWNjZWVkcyB3aGVuCiAgICBpc3N1ZWQgbXVsdGlwbGUgdGlt ZXMuCgogICAgVGhlc2UgY2hhbmdlcyBtYXkgbmVlZCBzb21lIGFkanVzdG1lbnRzIGZyb20gdXNl cnM6ICBGb3IgZXhhbXBsZSwKICAgIHNvbWUgYGluc3RhbGwnIHByb2dyYW1zIHJlZnVzZSB0byBp bnN0YWxsIG11bHRpcGxlIGNvcGllcyBvZiB0aGUKICAgIHNhbWUgZmlsZSBpbiBvbmUgaW52b2Nh dGlvbiwgc28geW91IG1heSBuZWVkIHRvIHJlbW92ZSBkdXBsaWNhdGUKICAgIGVudHJpZXMgZnJv bSBmaWxlIGxpc3RzLgoKICAgIEFsc28sIHdpdGhpbiBvbmUgc2V0IG9mIGZpbGVzLCBzYXksIG5v YmFzZV9kYXRhX0RBVEEsIHRoZSBvcmRlciBvZgogICAgaW5zdGFsbGF0aW9uIG1heSBiZSBjaGFu Z2VkLCBvciBldmVuIHVuc3RhYmxlIGFtb25nIGRpZmZlcmVudCBob3N0cywKICAgIGR1ZSB0byB0 aGUgdXNlIG9mIGFzc29jaWF0aXZlIGFycmF5cyBpbiBhd2suICBUaGUgaW5jcmVhc2VkIHVzZSBv ZgogICAgYXdrIG1hdGNoZXMgYSBzaW1pbGFyIG1vdmUgaW4gQXV0b2NvbmYgdG8gcHJvdmlkZSBm b3IgYmV0dGVyIHNjYWxpbmcuCgogICAgRnVydGhlciwgbW9zdCB1bmRvY3VtZW50ZWQgcGVyLXJ1 bGUgaW5zdGFsbCBjb21tYW5kIHZhcmlhYmxlcyBzdWNoIGFzCiAgICBiaW5TQ1JJUFRfSU5TVEFM TCBoYXZlIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBuZWVkZWQgYW55CiAgICBt b3JlLiAgUGFja2FnZXMgd2hpY2ggdXNlIHRoZW0gc2hvdWxkIGJlIHVzaW5nIHRoZSBhcHByb3By aWF0ZSBvbmUgb2YKICAgIElOU1RBTExfe0RBVEEsUFJPR1JBTSxTQ1JJUFR9IG9yIHRoZWlyIGlu c3RhbGxfc2hfe0RBVEEsUFJPR1JBTSxTQ1JJUFR9CiAgICBjb3VudGVycGFydCwgZGVwZW5kaW5n IG9uIHRoZSB0eXBlIG9mIGZpbGVzIGFuZCB0aGUgbmVlZCBmb3IgYXV0b21hdGljCiAgICB0YXJn ZXQgZGlyZWN0b3J5IGNyZWF0aW9uLgoKICAtIFRoZSAiZGVsZXRlZCBoZWFkZXIgZmlsZSBwcm9i bGVtIiBmb3IgKi5tNCBmaWxlcyBpcyBhdm9pZGVkIGJ5CiAgICBzdHViIHJ1bGVzLiAgVGhpcyBh bGxvd3MgYG1ha2UnIHRvIHRyaWdnZXIgYSByZXJ1biBvZiBgYWNsb2NhbCcKICAgIGFsc28gaWYg c29tZSBwcmV2aW91c2x5IG5lZWRlZCBtYWNybyBmaWxlIGhhcyBiZWVuIHJlbW92ZWQuCgogIC0g UmVidWlsZCBydWxlcyBub3cgYWxzbyB3b3JrIGZvciBhIHJlbW92ZWQgYHN1YmRpci9NYWtlZmls ZS5pbicgaW4KICAgIGFuIG90aGVyd2lzZSB1cCB0byBkYXRlIHRyZWUuCgogIC0gVGhlIGBjb2xv ci10ZXN0cycgb3B0aW9uIGNhdXNlcyBjb2xvcmVkIHRlc3QgcmVzdWx0IG91dHB1dCBvbiB0ZXJt aW5hbHMuCgogIC0gVGhlIGBwYXJhbGxlbC10ZXN0cycgb3B0aW9uIGVuYWJsZXMgYSBuZXcgdGVz dCBkcml2ZXIgdGhhdCBhbGxvd3MgZm9yCiAgICBwYXJhbGxlbCB0ZXN0IGV4ZWN1dGlvbiwgaW50 ZXItdGVzdCBkZXBlbmRlbmNpZXMsIGxhenkgdGVzdCBleGVjdXRpb24KICAgIGZvciB1bml0LXRl c3RpbmcsIHJlLXRlc3Rpbmcgb25seSBmYWlsZWQgdGVzdHMsIGFuZCBmb3JtYXR0ZWQgcmVzdWx0 IG91dHB1dAogICAgYXMgUlNUIChyZVN0cnVjdHVyZWRUZXh0KSBhbmQgSFRNTC4gIEVuYWJsaW5n IHRoaXMgb3B0aW9uIG1heSByZXF1aXJlIHNvbWUKICAgIGNoYW5nZXMgdG8geW91ciB0ZXN0IHN1 aXRlIHNldHVwOyBzZWUgdGhlIG1hbnVhbCBmb3IgZGV0YWlscy4KCiAgLSBUaGUgYHNpbGVudC1y dWxlcycgb3B0aW9uIGVuYWJsZXMgTGludXgga2VybmVsLXN0eWxlIHNpbGVudCBidWlsZCBvdXRw dXQuCiAgICBUaGlzIG9wdGlvbiByZXF1aXJlcyB0aGUgd2lkZWx5IHN1cHBvcnRlZCBidXQgbm9u LVBPU0lYIGBtYWtlJyBmZWF0dXJlCiAgICBvZiByZWN1cnNpdmUgdmFyaWFibGUgZXhwYW5zaW9u LCBzbyBkbyBub3QgdXNlIGl0IGlmIHlvdXIgcGFja2FnZSBuZWVkcwogICAgdG8gYnVpbGQgd2l0 aCBgbWFrZScgaW1wbGVtZW50YXRpb25zIHRoYXQgZG8gbm90IHN1cHBvcnQgaXQuCgogICAgVG8g ZW5hYmxlIGxlc3MgdmVyYm9zZSBidWlsZCBvdXRwdXQsIHRoZSBkZXZlbG9wZXIgaGFzIHRvIHVz ZSB0aGUgQXV0b21ha2UKICAgIG9wdGlvbiBgc2lsZW50LXJ1bGVzJyBpbiBgQU1fSU5JVF9BVVRP TUFLRScsIG9yIGNhbGwgdGhlIGBBTV9TSUxFTlRfUlVMRVMnCiAgICBtYWNyby4gIFRoZSB1c2Vy IG1heSB0aGVuIHNldCB0aGUgZGVmYXVsdCB2ZXJib3NpdHkgYnkgcGFzc2luZyB0aGUKICAgIGAt LWVuYWJsZS1zaWxlbnQtcnVsZXMnIG9wdGlvbiB0byBgY29uZmlndXJlJy4gIEF0IGBtYWtlJyBy dW4gdGltZSwgdGhpcwogICAgZGVmYXVsdCBtYXkgYmUgb3ZlcnJpZGRlbiB1c2luZyBgbWFrZSBW PTAnIGZvciBsZXNzIHZlcmJvc2UsIGFuZCBgbWFrZSBWPTEnCiAgICBmb3IgYmFja3dhcmQtY29t cGF0aWJsZSB2ZXJib3NlIG91dHB1dC4KCiAgLSBOZXcgcHJlZml4IGBub3RyYW5zXycgZm9yIG1h bnBhZ2VzIHdoaWNoIHNob3VsZCBub3QgYmUgdHJhbnNmb3JtZWQKICAgIGJ5IC0tcHJvZ3JhbS10 cmFuc2Zvcm0uCgogIC0gTmV3IG1hY3JvIEFNX0NPTkRfSUYgZm9yIGNvbmRpdGlvbmFsIGV2YWx1 YXRpb24gYW5kIGNvbmRpdGlvbmFsCiAgICBjb25maWcgZmlsZXMuCgogIC0gRm9yIEFDX0NPTkZJ R19MSU5LUywgaWYgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgZXF1YWwsIGRvIG5vdAogICAg cmVtb3ZlIHRoZSBmaWxlIGluIGEgbm9uLVZQQVRIIGJ1aWxkLiAgU3VjaCBzZXR1cHMgd29yayB3 aXRoIEF1dG9jb25mCiAgICAyLjYyIG9yIG5ld2VyLgoKICAtIEFNX01BSU5UQUlORVJfTU9ERSBu b3cgYWxsb3dzIGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZ5aW5nCiAgICB0aGUgZGVm YXVsdCBzZXR0aW5nLgoKICAtIEFNX1NVQlNUX05PVE1BS0UgbWF5IHByZXZlbnQgc3Vic3RpdHV0 aW9uIG9mIEFDX1NVQlNUZWQgdmFyaWFibGVzLAogICAgdXNlZnVsIGVzcGVjaWFsbHkgZm9yIG11 bHRpLWxpbmUgdmFsdWVzLgoKICAtIEF1dG9tYWtlJ3MgZWFybHkgY29uZmlndXJlLXRpbWUgc2Fu aXR5IGNoZWNrIG5vdyBkaWFnbm9zZXMgYW4KICAgIHVuc2FmZSBhYnNvbHV0ZSBzb3VyY2UgZGly ZWN0b3J5IG5hbWUgYW5kIG1ha2VzIGNvbmZpZ3VyZSBmYWlsLgoKICAtIFRoZSBBdXRvbWFrZSBt YWNyb3MgYW5kIHJ1bGVzIGNvcGUgYmV0dGVyIHdpdGggd2hpdGVzcGFjZSBpbiB0aGUKICAgIGN1 cnJlbnQgZGlyZWN0b3J5IG5hbWUsIGFzIGxvbmcgYXMgdGhlIHJlbGF0aXZlIHBhdGggdG8gYGNv bmZpZ3VyZScKICAgIGRvZXMgbm90IGNvbnRhaW4gd2hpdGVzcGFjZS4gIFRvIHRoaXMgZW5kLCB0 aGUgdmFsdWVzIG9mIGAkKE1JU1NJTkcpJwogICAgYW5kIGAkKGluc3RhbGxfc2gpJyBtYXkgY29u dGFpbiBzdWl0YWJsZSBxdW90aW5nLCBhbmQgdGhlaXIgZXhwYW5zaW9uCiAgICBtaWdodCBuZWVk IGBldmFsJ3VhdGlvbiBpZiB1c2VkIG91dHNpZGUgb2YgYSBtYWtlZmlsZS4gIFRoZXNlCiAgICB1 bmRvY3VtZW50ZWQgdmFyaWFibGVzIG1heSBiZSB1c2VkIGluIHNldmVyYWwgZG9jdW1lbnRlZCBt YWNyb3Mgc3VjaAogICAgYXMgJChBVVRPQ09ORikgb3IgJChNQUtFSU5GTykuCgpCdWdzIGZpeGVk IGluIDEuMTE6CgoqIExvbmctc3RhbmRpbmcgYnVnczoKCiAgLSBGaXggYWl4IGRlcGVuZGVuY3kg dHJhY2tpbmcgZm9yIGxpYnRvb2wgb2JqZWN0cy4KCiAgLSBXb3JrIGFyb3VuZCBBSVggc2ggcXVv dGluZyBpc3N1ZSBpbiBBQ19QUk9HX0NDX0NfTywgbGVhZGluZyB0bwogICAgdW5uZWNlc3Nhcnkg dXNlIG9mIHRoZSBgY29tcGlsZScgc2NyaXB0LgoKICAtIEZvciBub2Jhc2VfKl9MVExJQlJBUklF UyB3aXRoIG5vbmVtcHR5IGRpcmVjdG9yeSBjb21wb25lbnRzLCB0aGUKICAgIGNvcnJlY3QgYC1y cGF0aCcgYXJndW1lbnQgaXMgdXNlZCBub3cuCgogIC0gYGNvbmZpZy5zdGF0dXMgLS1maWxlPU1h a2VmaWxlIGRlcGZpbGVzJyBub3cgYWxzbyB3b3JrcyB3aXRoIHRoZQogICAgZXh0cmEgcXVvdGlu ZyB1c2VkIGludGVybmFsbHkgYnkgQXV0b2NvbmYgMi42MiBhbmQgbmV3ZXIKICAgIChpdCB1c2Vk IHRvIHdvcmsgb25seSB3aXRob3V0IHRoZSBgLS1maWxlPScgYml0KS4KCiAgLSBUaGUgYG1pc3Np bmcnIHNjcmlwdCB3b3JrcyBiZXR0ZXIgd2l0aCB2ZXJzaW9uZWQgdG9vbCBuYW1lcy4KCiAgLSBT ZW1hbnRpY3MgZm9yIGBtaXNzaW5nIGhlbHAybWFuJyBoYXZlIGJlZW4gcmV2YW1wZWQ6CgogICAg UHJldmlvdXNseSwgaWYgYGhlbHAybWFuJyB3YXMgbm90IHByZXNlbnQsIGBtaXNzaW5nIGhlbHAy bWFuJyB3b3VsZCBoYXZlCiAgICB0aGUgZm9sbG93aW5nIHNlbWFudGljczogaWYgc29tZSBtYW4g cGFnZSB3YXMgb3V0IG9mIGRhdGUgYnV0IHByZXNlbnQsIHRoZW4KICAgIGEgd2FybmluZyB3b3Vs ZCBiZSBwcmludGVkLCBidXQgdGhlIGV4aXQgc3RhdHVzIHdhcyAwLiAgSWYgdGhlIG1hbiBwYWdl IHdhcwogICAgbm90IHByZXNlbnQgYXQgYWxsLCB0aGVuIGBtaXNzaW5nJyB3b3VsZCBjcmVhdGUg YSByZXBsYWNlbWVudCBtYW4gcGFnZQogICAgY29udGFpbmluZyBhbiBlcnJvciBtZXNzYWdlLCBh bmQgZXhpdCB3aXRoIGEgc3RhdHVzIG9mIDIuICBUaGlzIGRvZXMgbm90IHBsYXkKICAgIHdlbGwg d2l0aCBgbWFrZSc6IHRoZSBuZXh0IHJ1biB3aWxsIHNlZSB0aGlzIHBhcnRpY3VsYXIgbWFuIHBh Z2UgYXMgYmVpbmcgdXAKICAgIHRvIGRhdGUsIGFuZCB3aWxsIG9ubHkgZXJyb3Igb3V0IG9uIHRo ZSBuZXh0IGdlbmVyYXRlZCBtYW4gcGFnZSwgaWYgYW55OwogICAgcmVwZWF0IHVudGlsIGFsbCBw YWdlcyBhcmUgZG9uZS4gIFRoaXMgd2FzIG5vdCBkZXNpcmFibGUuCgogICAgVGhlc2UgYXJlIHRo ZSBuZXcgc2VtYW50aWNzOiBpZiBzb21lIG1hbiBwYWdlIGlzIG5vdCBwcmVzZW50LCBhbmQgaGVs cDJtYW4KICAgIGlzIG5vdCBlaXRoZXIsIHRoZW4gYG1pc3NpbmcnIHdpbGwgd2FybiBhbmQgZ2Vu ZXJhdGUgdGhlIHJlcGxhY2VtZW50IHBhZ2UKICAgIGNvbnRhaW5pbmcgdGhlIGVycm9yIG1lc3Nh Z2UsIGJ1dCBleGl0IHN1Y2Nlc3NmdWxseS4gIEhvd2V2ZXIsIGBtYWtlIGRpc3QnCiAgICB3aWxs IGVuc3VyZSB0aGF0IG5vIHN1Y2ggYm9ndXMgbWFuIHBhZ2VzIGFyZSBwYWNrYWdlZCBpbnRvIGEg dGFyYmFsbC4KCiAgLSBUYXJnZXRzIHByb3ZpZGVkIGJ5IGF1dG9tYWtlIGJlaGF2ZSBiZXR0ZXIg d2l0aCBgbWFrZSAtbicsIGluIHRoYXQgdGhleQogICAgdGFrZSBjYXJlIG5vdCB0byBjcmVhdGUg ZmlsZXMuCgogIC0gYGNvbmZpZy5zdGF0dXMgTWFrZWZpbGUuLi4gZGVwZmlsZXMnIHdvcmtzIGZp bmUgYWdhaW4gaW4gdGhlIHByZXNlbmNlIG9mCiAgICBkaXNhYmxlZCBkZXBlbmRlbmN5IHRyYWNr aW5nLgoKICAtIFRoZSBkZWZhdWx0IG5vLW9wIHJlY3Vyc2l2ZSBydWxlcyBmb3IgdGhlc2UgdGFy Z2V0cyBhbHNvIHdvcmsgd2l0aCBCU0QgbWFrZQogICAgbm93OiBodG1sLCBpbnN0YWxsLWh0bWws IGluc3RhbGwtZHZpLCBpbnN0YWxsLXBkZiwgaW5zdGFsbC1wZGYsIGluc3RhbGwtaW5mby4KCiAg LSBgbWFrZSBkaXN0Y2hlY2snIHdvcmtzIGFsc28gd2hlbiBib3RoIGEgZGlyZWN0b3J5IGFuZCBz b21lIGZpbGUgYmVsb3cgaXQKICAgIGhhdmUgYmVlbiBhZGRlZCB0byBhIGRpc3RyaWJ1dGlvbiB2 YXJpYWJsZSwgc3VjaCBhcyBFWFRSQV9ESVNUIG9yICpfU09VUkNFUy4KCiAgLSBUZXhpbmZvIGR2 aSwgcHMsIHBkZiwgYW5kIGh0bWwgb3V0cHV0IGZpbGVzIGFyZSBub3QgcmVtb3ZlZCB1cG9uCiAg ICBgbWFrZSBtb3N0bHljbGVhbicgYW55IG1vcmU7IG9ubHkgdGhlIExhVGVYIGJ5LXByb2R1Y3Rz IGFyZS4KCiAgLSBSZW5hbWVkIG9iamVjdHMgYWxzbyB3b3JrIHdpdGggdGhlIGBzdWJkaXItb2Jq ZWN0cycgb3B0aW9uIGFuZAogICAgc291cmNlIGZpbGUgbGFuZ3VhZ2VzIHdoaWNoIEF1dG9tYWtl IGRvZXMgbm90IGtub3cgaXRzZWxmLgoKICAtIGBhdXRvbWFrZScgbm93IGNvcnJlY3RseSBjb21w bGFpbnMgYWJvdXQgdmFyaWFibGUgYXNzaWdubWVudHMgd2hpY2ggYXJlCiAgICBwcmVjZWRlZCBi eSBhIGNvbW1lbnQsIGV4dGVuZCBvdmVyIG11bHRpcGxlIGxpbmVzIHdpdGggYmFja3NsYXNoLWVz Y2FwZWQKICAgIG5ld2xpbmVzLCBhbmQgZW5kIGluIGEgY29tbWVudCBzaWduLiAgUHJldmlvdXMg dmVyc2lvbnMgd291bGQgc2lsZW50bHkKICAgIGFuZCB3cm9uZ2x5IGlnbm9yZSBzdWNoIGFzc2ln bm1lbnRzIGNvbXBsZXRlbHkuCgoqIEJ1Z3MgaW50cm9kdWNlZCBieSAxLjEwOgoKICAtIEZpeCBv dXRwdXQgb2YgZHVtbXkgZGVwZW5kZW5jeSBmaWxlcyBpbiBwcmVzZW5jZSBvZiBwb3N0LXByb2Nl c3NlZAogICAgTWFrZWZpbGUuaW4ncyBhZ2FpbiwgYnV0IGFsc28gY29wZSB3aXRoIGxvbmcgbGlu ZXMuCgogIC0gJChFWEVFWFQpIGlzIGF1dG9tYXRpY2FsbHkgYXBwZW5kZWQgdG8gZmlsZW5hbWVz IG9mIFhGQUlMX1RFU1RTCiAgICB0aGF0IGhhdmUgYmVlbiBkZWNsYXJlZCBhcyBwcm9ncmFtcyBp biB0aGUgc2FtZSBNYWtlZmlsZS4KICAgIFRoaXMgaXMgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhl IGFuYWxvZ291cyBjaGFuZ2UgdG8gVEVTVFMgaW4gMS4xMC4KCiAgLSBGaXggb3JkZXIgb2Ygc3Rh bmRhcmQgaW5jbHVkZXMgdG8gYWdhaW4gYmUgYC1JLiAtSSQoc3JjZGlyKScsCiAgICBmb2xsb3dl ZCBieSBkaXJlY3RvcmllcyBjb250YWluaW5nIGNvbmZpZyBoZWFkZXJzLgoKfn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fgoKTmV3IGluIDEuMTAgKDIwMDYtMTAtMTUpOgoKKiBWZXJzaW9uIHJlcXVpcmVtZW50 czoKCiAgLSBBdXRvY29uZiAyLjYwIG9yIGdyZWF0ZXIgaXMgcmVxdWlyZWQuCgogIC0gUGVybCA1 LjYgb3IgZ3JlYXRlciBpcyByZXF1aXJlZC4KCiogQ2hhbmdlcyB0byBhY2xvY2FsOgoKICAtIGFj bG9jYWwgbm93IGFsc28gc3VwcG9ydHMgLVdtdW1ibGUgYW5kIC1Xbm8tbXVtYmxlIG9wdGlvbnMu CgogIC0gYGRpcmxpc3QnIGVudHJpZXMgKGZvciB0aGUgYWNsb2NhbCBzZWFyY2ggcGF0aCkgbWF5 IHVzZSBzaGVsbAogICAgd2lsZGNhcmRzIHN1Y2ggYXMgYConLCBgPycsIG9yIGBbLi4uXScuCgog IC0gYWNsb2NhbCBzdXBwb3J0cyBhbiAtLWluc3RhbGwgb3B0aW9uIHRoYXQgd2lsbCBjYXVzZSBz eXN0ZW0td2lkZQogICAgdGhpcmQtcGFydHkgbWFjcm9zIHRvIGJlIGluc3RhbGxlZCBpbiB0aGUg bG9jYWwgZGlyZWN0b3J5CiAgICBzcGVjaWZpZWQgd2l0aCB0aGUgZmlyc3QgLUkgZmxhZy4gIFRo aXMgb3B0aW9uIGFsc28gdXNlcyAjc2VyaWFsCiAgICBsaW5lcyBpbiBNNCBmaWxlcyB0byB1cGdy YWRlIGxvY2FsIG1hY3Jvcy4KCiAgICBUaGUgbmV3IGFjbG9jYWwgb3B0aW9ucyAtLWRyeS1ydW4g YW5kIC0tZGlmZiBoZWxwIHRvIHJldmlldyBjaGFuZ2VzCiAgICBiZWZvcmUgdGhleSBhcmUgaW5z dGFsbGVkLgoKICAtIGFjbG9jYWwgbm93IG91dHB1dHMgYW4gYXV0b2NvbmYgdmVyc2lvbiBjaGVj ayBpbiBhY2xvY2FsLm00IGluCiAgICBwcm9qZWN0cyB1c2luZyBhdXRvbWFrZS4KCiAgICBGb3Ig YSBmZXcgeWVhcnMsIGF1dG9tYWtlIGFuZCBhY2xvY2FsIGhhdmUgYmVlbiBjYWxsaW5nIGF1dG9j b25mCiAgICAob3IgaXRzIHVuZGVybHlpbmcgZW5naW5lIGF1dG9tNHRlKSB0byBhY2N1cmF0ZWx5 IHJldHJpZXZlIHRoZQogICAgZGF0YSB0aGV5IG5lZWQgZnJvbSBjb25maWd1cmUuYWMgYW5kIGl0 cyBzaWJsaW5ncy4gIERvaW5nIHNvIGNhbgogICAgb25seSB3b3JrIGlmIGFsbCBhdXRvdG9vbHMg dXNlIHRoZSBzYW1lIHZlcnNpb24gb2YgYXV0b2NvbmYuICBGb3IKICAgIGluc3RhbmNlIGEgTWFr ZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIGZvciBvbmUgdmVyc2lvbiBvZgogICAgYXV0 b2NvbmYgbWF5IHN0b3Agd29ya2luZyBpZiBjb25maWd1cmUgaXMgcmVnZW5lcmF0ZWQgd2l0aCBh bm90aGVyCiAgICB2ZXJzaW9uIG9mIGF1dG9jb25mLCBhbmQgdmljZSB2ZXJzYS4KCiAgICBUaGlz IG5ldyB2ZXJzaW9uIGNoZWNrIGVuc3VyZXMgdGhhdCB0aGUgd2hvbGUgYnVpbGQgc3lzdGVtIGhh cwogICAgYmVlbiBnZW5lcmF0ZWQgdXNpbmcgdGhlIHNhbWUgYXV0b2NvbmYgdmVyc2lvbi4KCiog U3VwcG9ydCBmb3IgbmV3IEF1dG9jb25mIG1hY3JvczoKCiAgLSBUaGUgbmV3IEFDX1JFUVVJUkVf QVVYX0ZJTEUgQXV0b2NvbmYgbWFjcm8gaXMgc3VwcG9ydGVkLgoKICAtIElmIGBzdWJkaXItb2Jq ZWN0cycgaXMgc2V0LCBhbmQgQUNfQ09ORklHX0xJQk9CSl9ESVIgaXMgc3BlY2lmaWVkLAogICAg JChMSUJPQkpTKSwgJChMVExJQk9CSlMpLCAkKEFMTE9DQSksIGFuZCAkKExUQUxMT0NBKSBjYW4g YmUgdXNlZAogICAgaW4gZGlmZmVyZW50IGRpcmVjdG9yaWVzLiAgSG93ZXZlciwgb25seSBvbmUg aW5zdGFuY2Ugb2Ygc3VjaCBhCiAgICBsaWJyYXJ5IG9iamVjdHMgZGlyZWN0b3J5IGlzIHN1cHBv cnRlZC4KCiogQ2hhbmdlIHRvIExpYnRvb2wgc3VwcG9ydDoKCiAgLSBMaWJ0b29sIGdlbmVyaWMg ZmxhZ3MgKHRob3NlIHRoYXQgZ28gYmVmb3JlIHRoZSAtLW1vZGU9TU9ERSBvcHRpb24pCiAgICBj YW4gYmUgc3BlY2lmaWVkIHVzaW5nIEFNX0xJQlRPT0xGTEFHUyBhbmQgdGFyZ2V0X0xJQlRPT0xG TEFHUy4KCiogWWFjYyBhbmQgTGV4IGNoYW5nZXM6CgogIC0gVGhlIHJlYnVpbGQgcnVsZXMgZm9y IGRpc3RyaWJ1dGVkIFlhY2MgYW5kIExleCBvdXRwdXQgd2lsbCBhdm9pZAogICAgb3ZlcndyaXRp bmcgZXhpc3RpbmcgZmlsZXMgaWYgQU1fTUFJTlRBSU5FUl9NT0RFIGFuZCBtYWludGFpbmVyLW1v ZGUKICAgIGlzIG5vdCBlbmFibGVkLgoKICAtIHlsd3JhcCBpcyBub3cgYWx3YXlzIHVzZWQgZm9y IGxleCBhbmQgeWFjYyBzb3VyY2UgZmlsZXMsCiAgICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhl cmUgaXMgbW9yZSB0aGFuIG9uZSBzb3VyY2UgcGVyIGRpcmVjdG9yeS4KCiogTGFuZ3VhZ2VzIGNo YW5nZXM6CgogIC0gUHJlcHJvY2Vzc2VkIGFzc2VtYmxlciAoKi5TKSBjb21waWxhdGlvbiBub3cg aG9ub3JzIENQUEZMQUdTLAogICAgQU1fQ1BQRkxBR1MgYW5kIHBlci10YXJnZXQgX0NQUEZMQUdT LCBhbmQgc3VwcG9ydHMgZGVwZW5kZW5jeQogICAgdHJhY2tpbmcsIHVubGlrZSBub24tcHJlcHJv Y2Vzc2VkIGFzc2VtYmxlciAoKi5zKS4KCiAgLSBzdWJkaXItb2JqZWN0IG1vZGUgd29ya3Mgbm93 IHdpdGggQXNzZW1ibGVyLiAgQXV0b21ha2UgYXNzdW1lcwogICAgdGhhdCB0aGUgY29tcGlsZXIg dW5kZXJzdGFuZHMgYC1jIC1vJy4KCiAgLSBQcmVwcm9jZXNzZWQgYXNzZW1ibGVyICgqLlMpIGNv bXBpbGF0aW9uIG5vdyBhbHNvIGhvbm9ycwogICAgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMp ICQoSU5DTFVERVMpLgoKICAtIEltcHJvdmVkIHN1cHBvcnQgZm9yIE9iamVjdGl2ZSBDOgogICAg LSBBdXRvY29uZidzIG5ldyBBQ19QUk9HX09CSkMgd2lsbCBlbmFibGUgYXV0b21hdGljIGRlcGVu ZGVuY3kgdHJhY2tpbmcuCiAgICAtIEEgbmV3IHNlY3Rpb24gb2YgdGhlIG1hbnVhbCBkb2N1bWVu dHMgdGhlIHN1cHBvcnQuCgogIC0gTmV3IHN1cHBvcnQgZm9yIFVuaWZpZWQgUGFyYWxsZWwgQzoK ICAgIC0gQU1fUFJPR19VUEMgbG9va3MgZm9yIGEgVVBDIGNvbXBpbGVyLgogICAgLSBBIG5ldyBz ZWN0aW9uIG9mIHRoZSBtYW51YWwgZG9jdW1lbnRzIHRoZSBzdXBwb3J0LgoKICAtIFBlci10YXJn ZXQgZmxhZ3MgYXJlIG5vdyBjb3JyZWN0bHkgaGFuZGxlZCBpbiBsaW5rIHJ1bGVzLgoKICAgIEZv ciBpbnN0YW5jZSBtYXVkZV9DRkxBR1MgY29ycmVjdGx5IG92ZXJyaWRlcyBBTV9DRkxBR1M7IGxp a2V3aXNlCiAgICBmb3IgbWF1ZGVfTERGTEFHUyBhbmQgQU1fTERGTEFHUy4gIFByZXZpb3VzIHZl cnNpb25zIGJvZ3VzbHkKICAgIHByZWZlcnJlZCBBTV9DRkxBR1Mgb3ZlciBtYXVkZV9DRkxBR1Mg d2hpbGUgbGlua2luZywgYW5kIHRoZXkKICAgIHVzZWQgYm90aCBBTV9MREZMQUdTIGFuZCBtYXVk ZV9MREZMQUdTIG9uIHRoZSBzYW1lIGxpbmsgY29tbWFuZC4KCiAgICBUaGUgZml4IGZvciBjb21w aWxlciBmbGFncyAoaS5lLiwgdXNpbmcgbWF1ZGVfQ0ZMQUdTIGluc3RlYWQgb2YKICAgIEFNX0NG TEFHUykgc2hvdWxkIG5vdCBodXJ0IGFueSBwYWNrYWdlIHNpbmNlIHRoYXQgaXMgaG93IF9DRkxB R1MKICAgIGlzIGV4cGVjdGVkIHRvIHdvcmsgKGFuZCBhY3R1YWxseSB3b3JrcyBkdXJpbmcgY29t cGlsYXRpb24pLgoKICAgIEhvd2V2ZXIgdXNpbmcgbWF1ZGVfTERGTEFHUyAiaW5zdGVhZCBvZiIg QU1fTERGTEFHUyByYXRoZXIgdGhhbgogICAgImluIGFkZGl0aW9uIHRvIiBicmVha3MgYmFja3dh cmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zLgogICAgSWYgeW91ciBwYWNrYWdl IHVzZWQgYm90aCB2YXJpYWJsZXMsIGFzIGluCgogICAgICBBTV9MREZMQUdTID0gY29tbW9uIGZs YWdzCiAgICAgIGJpbl9QUk9HUkFNUyA9IGEgYiBjCiAgICAgIGFfTERGTEFHUyA9IG1vcmUgZmxh Z3MKICAgICAgLi4uCgogICAgYW5kIGFzc3VtZWQgKl9MREZMQUdTIHdvdWxkIHN1bSB1cCwgeW91 IHNob3VsZCByZXdyaXRlIGl0IGFzCgogICAgICBBTV9MREZMQUdTID0gY29tbW9uIGZsYWdzCiAg ICAgIGJpbl9QUk9HUkFNUyA9IGEgYiBjCiAgICAgIGFfTERGTEFHUyA9ICQoQU1fTERGTEFHUykg bW9yZSBmbGFncwogICAgICAuLi4KCiAgICBUaGlzIG5ldyBiZWhhdmlvciBvZiAqX0xERkxBR1Mg aXMgbW9yZSBjb2hlcmVudCB3aXRoIG90aGVyCiAgICBwZXItdGFyZ2V0IHZhcmlhYmxlcywgYW5k IHRoZSB3YXkgKl9MREZMQUdTIHZhcmlhYmxlcyB3ZXJlCiAgICBjb25zaWRlcmVkIGludGVybmFs bHkuCgoqIE5ldyBpbnN0YWxsYXRpb24gdGFyZ2V0czoKCiAgLSBOZXcgdGFyZ2V0cyBtYW5kYXRl ZCBieSBHTlUgQ29kaW5nIFN0YW5kYXJkczoKICAgICAgaW5zdGFsbC1kdmkKICAgICAgaW5zdGFs bC1odG1sCiAgICAgIGluc3RhbGwtcHMKICAgICAgaW5zdGFsbC1wZGYKICAgIEJ5IGRlZmF1bHQg dGhleSB3aWxsIG9ubHkgaW5zdGFsbCBUZXhpbmZvIG1hbnVhbHMuCiAgICBZb3UgY2FuIGN1c3Rv bWl6ZSB0aGVtIHdpdGggKi1sb2NhbCB2YXJpYW50czoKICAgICAgaW5zdGFsbC1kdmktbG9jYWwK ICAgICAgaW5zdGFsbC1odG1sLWxvY2FsCiAgICAgIGluc3RhbGwtcHMtbG9jYWwKICAgICAgaW5z dGFsbC1wZGYtbG9jYWwKCiAgLSBUaGUgdW5kb2N1bWVudGVkIHJlY3Vyc2l2ZSB0YXJnZXQgYHVu aW5zdGFsbC1pbmZvJyBubyBsb25nZXIgZXhpc3RzLgogICAgKGB1bmluc3RhbGwnIGlzIGluIGNo YXJnZSBvZiByZW1vdmluZyBhbGwgcG9zc2libGUgZG9jdW1lbnRhdGlvbgogICAgZmxhdm9ycywg aW5jbHVkaW5nIG9wdGlvbmFsIGZvcm1hdHMgc3VjaCBhcyBkdmksIHBzLCBvciBpbmZvIGV2ZW4K ICAgIHdoZW4gYG5vLWluc3RhbGxpbmZvJyBpcyB1c2VkLikKCiogTWlzY2VsbGFuZW91cyBjaGFu Z2VzOgoKICAtIEF1dG9tYWtlIG5vIGxvbmdlciBjb21wbGFpbnMgaWYgaW5wdXQgZmlsZXMgZm9y IEFDX0NPTkZJR19GSUxFUwogICAgYXJlIHNwZWNpZmllZCB1c2luZyBzaGVsbCB2YXJpYWJsZXMu CgogIC0gY2xlYW4sIGRpc3RyaWJ1dGlvbiwgb3IgcmVidWlsZCBydWxlcyBhcmUgbm9ybWFsbHkg ZGlzYWJsZWQgZm9yCiAgICBpbnB1dHMgYW5kIG91dHB1dHMgb2YgQUNfQ09ORklHX0ZJTEVTLCBB Q19DT05GSUdfSEVBREVSUywgYW5kCiAgICBBQ19DT05GSUdfTElOSyBzcGVjaWZpZWQgdXNpbmcg c2hlbGwgdmFyaWFibGVzLiAgSG93ZXZlciwgaWYgdGhlc2UKICAgIHZhcmlhYmxlcyBhcmUgdXNl ZCBhcyAke1ZBUn0sIGFuZCBBQ19TVUJTVGVkLCB0aGVuIEF1dG9tYWtlIHdpbGwKICAgIGJlIGFi bGUgdG8gb3V0cHV0IHJ1bGVzIGFueXdheS4KICAgIChTZWUgdGhlIEF1dG9tYWtlIGRvY3VtZW50 YXRpb24gZm9yIEFDX0NPTkZJR19GSUxFUy4pCgogIC0gJChFWEVFWFQpIGlzIGF1dG9tYXRpY2Fs bHkgYXBwZW5kZWQgdG8gZmlsZW5hbWVzIG9mIFRFU1RTCiAgICB0aGF0IGhhdmUgYmVlbiBkZWNs YXJlZCBhcyBwcm9ncmFtcyBpbiB0aGUgc2FtZSBNYWtlZmlsZS4KICAgIFRoaXMgaXMgbW9zdGx5 IHVzZWZ1bCB3aGVuIHNvbWUgY2hlY2tfUFJPR1JBTVMgYXJlIGxpc3RlZCBpbiBURVNUUy4KCiAg LSBgLVdwb3J0YWJpbGl0eScgaGFzIGZpbmFsbHkgYmVlbiB0dXJuZWQgb24gYnkgZGVmYXVsdCBm b3IgYGdudScgYW5kCiAgICBgZ25pdHMnIHN0cmljdG5lc3MuICBUaGlzIG1lYW5zLCBhdXRvbWFr ZSB3aWxsIGNvbXBsYWluIGFib3V0ICUtcnVsZXMKICAgIG9yICQoR05VIE1ha2UgZnVuY3Rpb25z KSB1bmxlc3MgeW91IHN3aXRjaCB0byBgZm9yZWlnbicgc3RyaWN0bmVzcyBvcgogICAgdXNlIGAt V25vLXBvcnRhYmlsaXR5Jy4KCiAgLSBBdXRvbWFrZSBub3cgdXNlcyBBQ19QUk9HX01LRElSX1Ag KG5ldyBpbiBBdXRvY29uZiAyLjYwKSwgYW5kIHVzZXMKICAgICQoTUtESVJfUCkgaW5zdGVhZCBv ZiAkKG1rZGlyX3ApIHRvIGNyZWF0ZSBkaXJlY3Rvcmllcy4gIFRoZQogICAgJChta2Rpcl9wKSB2 YXJpYWJsZSBpcyBzdGlsbCBkZWZpbmVkICh0byB0aGUgc2FtZSB2YWx1ZSBhcwogICAgJChNS0RJ Ul9QKSkgYnV0IHNob3VsZCBiZSBjb25zaWRlcmVkIG9ic29sZXRlLiAgSWYgeW91IGFyZSB1c2lu ZwogICAgJChta2Rpcl9wKSBpbiBzb21lIG9mIHlvdXIgcnVsZXMsIHBsZWFzZSBwbGFuIHRvIHVw ZGF0ZSB0aGVtIHRvCiAgICAkKE1LRElSX1ApIGF0IHNvbWUgcG9pbnQuCgogIC0gQU1fQ19QUk9U T1RZUEVTIGFuZCBhbnNpMmtuciBhcmUgbm93IGRvY3VtZW50ZWQgYXMgYmVpbmcgb2Jzb2xldGUu CiAgICBUaGV5IHN0aWxsIHdvcmsgaW4gdGhpcyByZWxlYXNlLCBidXQgbWF5IGJlIHdpdGhkcmF3 biBpbiBhIGZ1dHVyZSBvbmUuCgogIC0gSW5saW5lIGNvbXBpbGF0aW9uIHJ1bGVzIGZvciBnY2Mz LXN0eWxlIGRlcGVuZGVuY3kgdHJhY2tpbmcgYXJlCiAgICBtb3JlIHJlYWRhYmxlLgoKICAtIEF1 dG9tYWtlIGluc3RhbGxzIGEgIkhlbGxvIFdvcmxkISIgZXhhbXBsZSBwYWNrYWdlIGluICQoZG9j ZGlyKS4KICAgIFRoaXMgZXhhbXBsZSBpcyB1c2VkIHRocm91Z2hvdXQgdGhlIG5ldyAiQXV0b3Rv b2xzIEludHJvZHVjdGlvbiIKICAgIGNoYXB0ZXIgb2YgdGhlIG1hbnVhbC4KCn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn4KCk5ldyBpbiAxLjkgKDIwMDQtMDctMjgpOgoKKiBNYWtlZmlsZS5pbiBibG9hdCBy ZWR1Y3Rpb246CgogIC0gSW5mZXJlbmNlIHJ1bGVzIGFyZSB1c2VkIHRvIGNvbXBpbGUgc291cmNl cyBpbiBzdWJkaXJlY3RvcmllcyB3aGVuCiAgICB0aGUgYHN1YmRpci1vYmplY3RzJyBvcHRpb24g aXMgdXNlZCBhbmQgbm8gcGVyLXRhcmdldCBmbGFncyBhcmUKICAgIHVzZWQuICBUaGlzIHNob3Vs ZCByZWR1Y2UgdGhlIHNpemUgb2Ygc29tZSBwcm9qZWN0cyBhIGxvdCwgYmVjYXVzZQogICAgQXV0 b21ha2UgdXNlZCB0byBvdXRwdXQgYW4gZXhwbGljaXQgcnVsZSBmb3IgZWFjaCBzdWNoIG9iamVj dCBpbgogICAgdGhlIHBhc3QuCgogIC0gQXV0b21ha2Ugbm8gbG9uZ2VyIG91dHB1dHMgdGhyZWUg cnVsZXMgKC5vLCAub2JqLCAubG8pIGZvciBlYWNoCiAgICBvYmplY3QgdGhhdCBtdXN0IGJlIGJ1 aWx0IHdpdGggZXhwbGljaXQgcnVsZXMuICBJdCBqdXN0IG91dHB1dHMKICAgIHRoZSBydWxlcyBy ZXF1aXJlZCB0byBidWlsZCB0aGUga2luZCBvZiBvYmplY3QgY29uc2lkZXJlZDogZWl0aGVyCiAg ICB0aGUgdHdvIC5vIGFuZCAub2JqIHJ1bGVzIGZvciB1c3VhbCBvYmplY3RzLCBvciB0aGUgLmxv IHJ1bGUgZm9yCiAgICBsaWJ0b29sIG9iamVjdHMuCgoqIENoYW5nZSB0byBMaWJ0b29sIHN1cHBv cnQ6CgogIC0gTGlidG9vbCB0YWdzIGFyZSB1c2VkIHdpdGggbGlidG9vbCB2ZXJzaW9ucyB0aGF0 IHN1cHBvcnQgdGhlbS4KICAgIChJLmUuLCB3aXRoIExpYnRvb2wgMS41IG9yIGdyZWF0ZXIuKQoK ICAtIEF1dG9tYWtlIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBzZXR1cHMgd2hlcmUgYSBsaWJ0b29s IGxpYnJhcnkgaXMKICAgIGNvbmRpdGlvbmFsbHkgaW5zdGFsbGVkIGluIGRpZmZlcmVudCBkaXJl Y3RvcmllcywgYXMgaW4KCiAgICAgIGlmIENPTkQKICAgICAgICBsaWJfTFRMSUJSQVJJRVMgPSBs aWJhLmxhCiAgICAgIGVsc2UKICAgICAgICBwa2dsaWJfTFRMSUJSQVJJRVMgPSBsaWJhLmxhCiAg ICAgIGVuZGlmCiAgICAgIGxpYmFfbGFfU09VUkNFUyA9IC4uLgoKKiBDaGFuZ2VzIHRvIGFjbG9j YWw6CgogIC0gYWNsb2NhbCBub3cgZW5zdXJlcyB0aGF0IEFDX0RFRlVOcyBhbmQgQVVfREVGVU5z IGl0IGRpc2NvdmVycyBhcmUKICAgIHJlYWxseSBldmFsdWF0ZWQsIGJlZm9yZSBpdCBkZWNpZGVz IHRvIGluY2x1ZGUgdGhlbSBpbiBhY2xvY2FsLm00LgogICAgVGhpcyBzb2x2ZXMgbmFzdHkgcHJv YmxlbXMgd2l0aCBjb25kaXRpb25hbCByZWRlZmluaXRpb25zIG9mCiAgICBBdXRvY29uZiBtYWNy b3MgaW4gL3Vzci9zaGFyZS9hY2xvY2FsLyoubTQgZmlsZXMgY2F1c2luZyBleHRyYW5lb3VzCiAg ICAqLm00IGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIGFueSBwcm9qZWN0IHVzaW5nIHRoZXNlIG1h Y3Jvcy4KICAgIChDYWxscyB0byBBQ19QUk9HX0VHUkVQIGNhdXNpbmcgbGlidG9vbC5tNCB0byBi ZSBpbmNsdWRlZCBpcyB0aGUKICAgIG1vc3QgZmFtb3VzIGluc3RhbmNlIG9mIHRoaXMgYnVnLikK CiAgLSBEbyBub3QgY29tcGxhaW4gYWJvdXQgbWlzc2luZyBjb25kaXRpb25hbGx5IEFDX1JFUVVJ UkVkIG1hY3JvcwogICAgdGhhdCBhcmUgbm90IGFjdHVhbGx5IHVzZWQuICBJbiAxLjgueCBhY2xv Y2FsIHdvdWxkIGNvcnJlY3RseQogICAgZGV0ZXJtaW5lIHdoaWNoIG9mIHRoZXNlIG1hY3JvcyB3 ZXJlIHJlYWxseSBuZWVkZWQgKGFuZCBpbmNsdWRlCiAgICBvbmx5IHRoZXNlIGluIHRoZSBwYWNr YWdlKTsgdW5mb3J0dW5hdGVseSBpdCB3b3VsZCBhbHNvIHJlcXVpcmUKICAgIGFsbCBvZiB0aGVt IHRvIGJlIHByZXNlbnQgaW4gb3JkZXIgdG8gcnVuLiAgVGhpcyBjcmVhdGVkCiAgICBzaXR1YXRp b25zIHdlcmUgYWNsb2NhbCB3b3VsZCBub3Qgd29yayBvbiBhIHRhcmJhbGwgZGlzdHJpYnV0aW5n CiAgICBhbGwgdGhlIG1hY3JvcyBpdCB1c2VzLiAgRm9yIGluc3RhbmNlIHJ1bm5pbmcgYWNsb2Nh bCBvbiBhIHByb2plY3QKICAgIGNvbnRhaW5pbmcgb25seSB0aGUgc3Vic2V0IG9mIHRoZSBHZXR0 ZXh0IG1hY3JvcyBpbiB1c2UgYnkgdGhlCiAgICBwcm9qZWN0IGRpZCBub3Qgd29yaywgYmVjYXVz ZSBnZXR0ZXh0IGNvbmRpdGlvbmFsbHkgcmVxdWlyZXMgb3RoZXIKICAgIG1hY3Jvcy4KCiogUG9y dGFiaWxpdHkgaW1wcm92ZW1lbnRzOgoKICAtIFRhciBmb3JtYXQgY2FuIGJlIGNob3NlbiB3aXRo IHRoZSBuZXcgb3B0aW9ucyB0YXItdjcsIHRhci11c3RhciwgYW5kCiAgICB0YXItcGF4LiAgVGhl IG5ldyBvcHRpb24gZmlsZW5hbWUtbGVuZ3RoLW1heD05OSBoZWxwcyBkaWFnbm9zaW5nCiAgICBm aWxlbmFtZXMgdGhhdCBhcmUgdG9vIGxvbmcgZm9yIHRhci12Ny4gIChQUi80MTQpCgogIC0gVmFy aWFibGVzIGF1Z21lbnRlZCB3aXRoIGArPScgYXJlIG5vdyBhdXRvbWF0aWNhbGx5IGZsYXR0ZW5l ZCAoaS5lLiwKICAgIHRyYWlsaW5nIGJhY2tzbGFzaGVzIHJlbW92ZWQpIGFuZCB0aGVuIHdyYXBw ZWQgYXJvdW5kIDgwIGNvbHVtbnMKICAgIChhZGRpbmcgdHJhaWxpbmcgYmFja3NsYXNoZXMpLiAg SW4gcHJldmlvdXMgdmVyc2lvbnMsIGEgbG9uZyBzZXJpZXMKICAgIG9mCiAgICAgIFZBUiArPSB2 YWx1ZTEKICAgICAgVkFSICs9IHZhbHVlMgogICAgICBWQVIgKz0gdmFsdWUzCiAgICAgIC4uLgog ICAgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlLWxpbmUgZGVmaW5pdGlvbiBvZiBWQVIgdGhhdCBj b3VsZCBwb3NzaWJseQogICAgZXhjZWVkIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoIG9mIHNvbWUg bWFrZSBpbXBsZW1lbnRhdGlvbnMuCgogICAgTm9uLWF1Z21lbnRlZCB2YXJpYWJsZXMgYXJlIHN0 aWxsIG91dHB1dCBhcyB0aGV5IGFyZSBkZWZpbmVkIGluCiAgICB0aGUgTWFrZWZpbGUuYW0uCgoq IE1pc2NlbGxhbmVvdXM6CgogIC0gU3VwcG9ydCBGb3J0cmFuIDkwLzk1IHdpdGggdGhlIG5ldyAi ZmMiIGFuZCAicHBmYyIgbGFuZ3VhZ2VzLgogICAgV29ya3MgdGhlIHNhbWUgYXMgdGhlIG9sZCBG b3J0cmFuIDc3IGltcGxlbWVudGF0aW9uOyBqdXN0IHJlcGxhY2UKICAgIEY3NyB3aXRoIEZDIGV2 ZXJ5d2hlcmUgKGV4Y2VwdGlvbjogRkZMQUdTIGJlY29tZXMgRkNGTEFHUykuCiAgICBSZXF1aXJl cyBhIHZlcnNpb24gb2YgYXV0b2NvbmYgd2hpY2ggcHJvdmlkZXMgQUNfUFJPR19GQyAoPj0yLjU5 KS4KCiAgLSBTdXBwb3J0IGZvciBjb25kaXRpb25hbCBfTElTUC4KCiAgLSBTdXBwb3J0IGZvciBj b25kaXRpb25hbCAtaG9vayBhbmQgLWxvY2FsIHJ1bGVzIChQUi80MjgpLgoKICAtIERpYWdub3Nl IEFDX0NPTkZJR19BVVhfRElSIGNhbGxzIGZvbGxvd2luZyBBTV9JTklUX0FVVE9NQUtFLiAoUFIv NDkpCgogIC0gQXV0b21ha2Ugd2lsbCBub3Qgd3JpdGUgYW55IE1ha2VmaWxlLmlucyBhZnRlciB0 aGUgZmlyc3QgZXJyb3IgaXQKICAgIGVuY291bnRlcnMuICBUaGUgcHJldmlvdXMgTWFrZWZpbGUu aW5zIChpZiBhbnkpIHdpbGwgYmUgbGVmdCBpbgogICAgcGxhY2UuICAoV2FybmluZ3Mgd2lsbCBu b3QgcHJldmVudCBvdXRwdXQsIGJ1dCByZW1lbWJlciB0aGV5IGNhbgogICAgYmUgdHVybmVkIGlu dG8gZXJyb3JzIHdpdGggLVdlcnJvci4pCgogIC0gVGhlIHJlc3RyaWN0aW9uIHRoYXQgU1VCRElS UyBtdXN0IGNvbnRhaW4gZGlyZWN0IGNoaWxkcmVuIGlzIGdvbmUuCiAgICBEbyBub3QgYWJ1c2Uu CgogIC0gVGhlIG1hbnVhbCB0ZWxscyBtb3JlIGFib3V0IFNVQkRJUlMgdnMuIERJU1RfU1VCRElS Uy4KICAgIEl0IGFsc28gZ2l2ZXMgYW4gZXhhbXBsZSBvZiBuZXN0ZWQgcGFja2FnZXMgdXNpbmcg QUNfQ09ORklHX1NVQkRJUlMuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpCdWdzIGZpeGVkIGluIDEu OC41ICgyMDA0LTA1LTE2KToKCiogTG9uZy1zdGFuZGluZyBidWdzOgoKICAtIERlZmluZSBESVNU X1NVQkRJUlMgZXZlbiB3aGVuIHRoZSBgbm8tZGlzdCcgb3IgYGN5Z251cycgb3B0aW9ucyBhcmUg dXNlZAogICAgc28gdGhhdCBgbWFrZSBkaXN0Y2xlYW4nIGFuZCBgbWFrZSBtYWludGFpbmVyLWNs ZWFuJyBjYW4gd29yay4KCiAgLSBEZWZpbmUgQVIgYW5kIEFSRkxBR1MgZXZlbiB3aGVuIG9ubHkg RVhUUkFfTElCUkFSSUVTIGFyZSBkZWZpbmVkLgoKICAtIEZpeCBtYW55IHJ1bGVzIHRvIHBsZWFz ZSBGcmVlQlNEIG1ha2UsIHdoaWNoIHJ1bnMgY29tbWFuZHMgd2l0aCBgc2ggLWUnLgoKICAtIFBv bGlzaCBkaWFnbm9zdGljIHdoZW4gbm8gaW5wdXQgZmlsZSBpcyBmb3VuZC4KCn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn4KCkJ1Z3MgZml4ZWQgaW4gMS44LjQgKDIwMDQtMDQtMjUpOgoKKiBMb25nLXN0YW5k aW5nIGJ1Z3M6CgogIC0gRml4IEFNX1BBVEhfUFlUSE9OIHRvIGNvcnJlY3RseSBkaXNwbGF5ICRQ WVRIT04gd2hlbiBpdCBoYXMgYmVlbgogICAgb3ZlcnJpZGRlbiBieSB0aGUgdXNlci4KCiAgLSBI b25vciBQQVRIX1NFUEFSQVRPUiBpbiB2YXJpb3VzIHBsYWNlcyBvZiB0aGUgQXV0b21ha2UgcGFj a2FnZSwgZm9yCiAgICB0aGUgc2FrZSBvZiBPUy8yLgoKICAtIEFkanVzdCBkZXBlbmRlbmN5IHRy YWNraW5nIG1vZGUgZGV0ZWN0aW9uIHRvIElDQyA4LjAncyBuZXcgb3V0cHV0LgogICAgKFBSLzQx NikKCiAgLSBGaXggaW5zdGFsbC1zaCBzbyBpdCBjYW4gaW5zdGFsbCB0aGUgYG12JyBiaW5hcnku Li4gdXNpbmcgYG12Jy4KCiAgLSBGaXggdHJ1NjQgZGVwZW5kZW5jeSB0cmFja2luZyBmb3IgbGli dG9vbCBvYmplY3RzLgoKICAtIFdvcmsgYXJvdW5kIEV4dWJlcmFudCBDdGFncyB3aGVuIGNyZWF0 aW5nIGEgVEFHUyBmaWxlcyBpbiBhIGRpcmVjdG9yeQogICAgd2l0aG91dCBmaWxlcyB0byBzY2Fu IGJ1dCB3aXRoIHN1YmRpcmVjdG9yaWVzIHRvIGluY2x1ZGUuCgoqIEJ1Z3MgaW50cm9kdWNlZCBi eSAxLjg6CgogIC0gRml4IGFuICJpbnRlcm5hbCBlcnJvciIgd2hlbiBATElCT0JKU0AgaXMgdXNl ZCBpbiBhIHZhcmlhYmxlIHRoYXQgaXMKICAgIG5vdCBkZWZpbmVkIGluIHRoZSBzYW1lIGNvbmRp dGlvbnMgYXMgdGhlIF9MREFERCB0aGF0IHVzZXMgaXQuCgogIC0gRG8gbm90IHdhcm4gd2hlbiBK QVZBUk9PVCBpcyBvdmVycmlkZGVuLCB0aGlzIGlzIGxlZ2l0aW1hdGUuCgp+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+CgpCdWdzIGZpeGVkIGluIDEuOC4zICgyMDA4LTAzLTA3KToKCiogTG9uZy1zdGFuZGlu ZyBidWdzOgoKICAtIFF1b3RlIGZpbGVuYW1lcyBpbiBpbnN0YWxsYXRpb24gcnVsZXMsIGluIGNh c2UgJERFU1RESVIsICRwcmVmaXgsCiAgICBvciBhbnkgb2YgdGhlIG90aGVyICpkaXIgdmFyaWFi bGVzIGNvbnRhaW4gYSBzcGFjZS4KCiAgICBQbGVhc2Ugbm90ZSB0aGF0IEF1dG9tYWtlIGRvZXMg bm90IGFuZCBjYW5ub3Qgc3VwcG9ydCBzcGFjZXMgaW4KICAgIGZpbGVuYW1lcyB0aGF0IGFyZSBp bnZvbHZlZCBkdXJpbmcgdGhlIGJ1aWxkLiAgVGhpcyBjaGFuZ2UgYWZmZWN0cwogICAgb25seSBp bnN0YWxsYXRpb24gcGF0aHMsIHNvIHRoYXQgYG1ha2UgaW5zdGFsbCcgZG9lcyBub3QgYm9tYiBv dXQKICAgIGluIHBhY2thZ2VzIGNvbmZpZ3VyZWQgd2l0aAogICAgICAuL2NvbmZpZ3VyZSAtLXBy ZWZpeCAnL2MvUHJvZ3JhbSBGaWxlcycKCiAgLSBGaXggdGhlIGRlcGZpbGVzIG91dHB1dCBzbyBp dCB3b3JrcyB3aXRoIEdOVSBzZWQgKDw0LjEpIGV2ZW4gd2hlbgogICAgUE9TSVhMWV9DT1JSRUNU IGlzIHNldC4KCiAgLSBEbyBub3QgQUNfU1VCU1QoTElCT0JKUykgaW4gQU1fV0lUSF9SRUdFWC4g IFRoaXMgbWFjcm8gd2FzIHVudXNhYmxlCiAgICBzaW5jZSBBdXRvY29uZiAyLjU0LCB3aGljaCBk ZWZpbmVzIExJQk9CSlMgaXRzZWxmLgoKICAtIEZpeCBhIHBvdGVudGlhbCAoYnV0IHVubGlrZWx5 KSByYWNlIGNvbmRpdGlvbiBpbiBwYXJhbGxlbCBlbGlzcAogICAgYnVpbGRzLiAgKEludHJvZHVj ZWQgaW4gMS43LjMuKQoKICAtIERvIG5vdCBhc3N1bWUgdGhhdCB1c2VycyBvdmVycmlkZSBfREVQ RU5ERU5DSUVTIGluIGFsbCBjb25kaXRpb25zCiAgICB3aGVyZSBBdXRvbWFrZSB3aWxsIHRyeSB0 byBkZWZpbmUgdGhlbS4KCiAgLSBEbyBub3QgdXNlIGBta2RpciAtcCcgaW4gbWtpbnN0YWxsZGly cywgdW5sZXNzIHRoaXMgaXMgR05VIG1rZGlyLgogICAgU29sYXJpcyA4J3MgYG1rZGlyIC1wJyBp cyBub3QgdGhyZWFkLXNhZmUgYW5kIGNhbiBicmVhayBwYXJhbGxlbAogICAgYnVpbGRzLgoKICAg IFRoaXMgZml4IGFsc28gYWZmZWN0cyB0aGUgJChta2Rpcl9wKSB2YXJpYWJsZSBkZWZpbmVkIHNp bmNlCiAgICBBdXRvbWFrZSAxLjguICBJdCB3aWxsIGJlIHNldCB0byBgbWtkaXIgLXAnIG9ubHkg aWYgbWtkaXIgaXMgR05VCiAgICBta2RpciwgYW5kIHRvIGBta2luc3RhbGxkaXJzJyBvciBgaW5z dGFsbC1zaCAtZCcgb3RoZXJ3aXNlLgoKICAtIFNlY3VyZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGNy ZWF0aW9uIGluIGBtYWtlIGRpc3RjaGVjaycuIChQUi80MTMpCgogIC0gRG8gbm90IGdlbmVyYXRl IHR3byBidWlsZCBydWxlcyBmb3IgYHBhcnNlci5oJyB3aGVuIHRoZQogICAgcGFyc2VyIGFwcGVh cnMgaW4gdHdvIGRpZmZlcmVudCBjb25kaXRpb25hbHMuCgogIC0gV29yayBhcm91bmQgYSBTb2xh cmlzIDggL2Jpbi9zaCBidWcgaW4gdGhlIHRlc3QgZm9yIGRlcGVuZGVuY3kKICAgIGNoZWNraW5n LiAgVXN1YWxseSAuL2NvbmZpZ3VyZSB3aWxsIG5vdCBwaWNrIHRoaXMgc2hlbGw7IHNvIHRoaXMK ICAgIGZpeCBvbmx5IGhlbHBzIGNhc2VzIHdoZXJlIHRoZSBzaGVsbCBpcyBmb3JjZWQgdG8gL2Jp bi9zaC4KCiogQnVncyBpbnRyb2R1Y2VkIGJ5IDEuODoKCiAgLSBJbiBzb21lIHNpdHVhdGlvbnMg KGhhbmQtd3JpdHRlbiBgbTRfaW5jbHVkZSdzKSwgYWNsb2NhbCB3b3VsZAogICAgY2FsbCB0aGUg YEZpbGU6OlNwZWMtPnJlbDJhYnMnIG1ldGhvZCwgd2hpY2ggd2FzIG9ubHkgaW50cm9kdWNlZAog ICAgaW4gUGVybCA1LjYuICBUaGlzIG5ldyB2ZXJzaW9uIHJlZXN0YWJsaXNoIHN1cHBvcnQgUGVy bCA1LjAwNS4KCiAgICBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgbmV4dCBtYWpvciBBdXRvbWFrZSBy ZWxlYXNlcyB3aWxsIHJlcXVpcmUgYXQKICAgIGxlYXN0IFBlcmwgNS42LiAgQ29uc2lkZXIgdXBn cmFkaW5nIHlvdXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQKICAgIGlmIHlvdSBhcmUgc3RpbGwg dXNpbmcgdGhlIGZpdmUteWVhci1vbGQgUGVybCA1LjAwNS4KCiAgLSBBdXRvbWFrZSB3b3VsZCBz b21ldGltZXMgZmFpbCB0byBkZWZpbmUgcnVsZXMgZm9yIHRhcmdldHMgbGlzdGVkCiAgICBpbiB2 YXJpYWJsZXMgZGVmaW5lZCBpbiBtdWx0aXBsZSBjb25kaXRpb25zLiAgRm9yIGluc3RhbmNlIG9u CiAgICAgIGlmIEMxCgliaW5fUFJPR1JBTVMgPSBhCiAgICAgIGVsc2UKCWJpbl9QUk9HUkFNUyA9 IGIKICAgICAgZW5kaWYKICAgIGl0IHdvdWxkIGRlZmluZSBvbmx5IHRoZSBgYS4kKE9CSkVYVCk6 IGEuYycgcnVsZSBhbmQgb21pdCB0aGUKICAgIGBiLiQoT0JKRVhUKTogYi5jJyBydWxlLgoKKiBO ZXcgc2VjdGlvbnMgaW4gbWFudWFsOgoKICAtIFRoaXJkLVBhcnR5IE1ha2VmaWxlczogaG93IHRv IGludGVyZmFjZSB0aGlyZCBwYXJ0eSBNYWtlZmlsZXMuCiAgLSBVcGdyYWRpbmc6IHVwZ3JhZGlu ZyBwYWNrYWdlcyB0byBuZXdlciBBdXRvbWFrZSB2ZXJzaW9ucy4KICAtIE11bHRpcGxlIE91dHB1 dHM6IGhhbmRsaW5nIHRvb2xzIHRoYXQgcHJvZHVjZSBtYW55IG91dHB1dHMuCgp+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+CgpCdWcgZml4ZWQgaW4gMS44LjIgKDIwMDgtMDEtMTIpOgoKKiBBICh3ZWxsIGtu b3duKSBwb3J0YWJpbGl0eSBidWcgc2xpcHBlZCBpbiB0aGUgY2hhbmdlcyBtYWRlIHRvCiAgaW5z dGFsbC1zaCBpbiBBdXRvbWFrZSAxLjguMS4gIFRoZSBicm9rZW4gaW5zdGFsbC1zaCB3b3VsZCBy ZWZ1c2UgdG8KICBpbnN0YWxsIGFueXRoaW5nIG9uIFRydTY0LgoKKiBGaXggaW5zdGFsbCBydWxl cyBmb3IgY29uZGl0aW9uYWxseSBidWlsdCBweXRob24gZmlsZXMuICAoVGhpcyBuZXZlcgogIHJl YWxseSB3b3JrZWQuKQoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKQnVnIGZpeGVkIGluIDEuOC4xICgy MDA0LTAxLTExKToKCiogQnVncyBpbnRyb2R1Y2VkIGJ5IDEuODoKCiAgLSBGaXggQ29uZmlnLnBt IGltcG9ydCBlcnJvciB3aXRoIG9sZCBQZXJsIHZlcnNpb25zIChhdCBsZWFzdAogICAgNS4wMDVf MDMpLiAgT25lIHN5bXB0b20gaXMgdGhhdCBhY2xvY2FsIGNvdWxkIG5vdCBmaW5kIGl0cyBtYWNy bwogICAgZGlyZWN0b3J5LgoKICAtIEF1dG9tYWtlIDEuOCB1c2VkIGBta2RpciAtbSAwNzU1IC1w IC0tJyB0byBlbnN1cmUgdGhhdCBkaXJlY3RvcmllcwogICAgY3JlYXRlZCBieSBgbWFrZSBpbnN0 YWxsJyBhcmUgYWx3YXlzIHdvcmxkIHJlYWRhYmxlLCBldmVuIGlmIHRoZQogICAgaW5zdGFsbGVy IGhhcHBlbnMgdG8gaGF2ZSBhbiBvdmVybHkgcmVzdHJpY3RpdmUgdW1hc2sgKGUuZy4gMDc3KS4K ICAgIFRoaXMgd2FzIGEgbWlzdGFrZSBhbmQgaGFzIGJlZW4gcmV2ZXJ0ZWQuICBUaGVyZSBhcmUg YXQgbGVhc3QgdHdvCiAgICByZWFzb25zIHdoeSB3ZSBtdXN0IG5vdCB1c2UgYC1tIDA3NTUnOgog ICAgICAtIGl0IGNhdXNlcyBzcGVjaWFsIGJpdHMgbGlrZSBTR0lEIHRvIGJlIGlnbm9yZWQsCiAg ICAgIC0gaXQgbWF5IGJlIHRvbyByZXN0cmljdGl2ZSAoc29tZSBzZXR1cHMgZXhwZWN0IDc3NSBk aXJlY3RvcmllcykuCgogIC0gRml4IGFjbG9jYWwgdG8gaG9ub3IgZGVmaW5pdGlvbnMgbG9jYXRl ZCBpbiBmaWxlcyB3aGljaCBoYXZlIGJlZW4KICAgIG00X2luY2x1ZGVkIG1hbnVhbGx5LiAgYWNs b2NhbCAxLjggaGFkIGJlZW4gdXBkYXRlZCB0byBjaGVjawogICAgbTRfaW5jbHVkZWQgZmlsZXMg Zm9yIG5ldyByZXF1aXJlbWVudHMsIGJ1dCBmb3Jnb3QgdGhhdCB0aGVzZQogICAgbTRfaW5jbHVk ZWQgZmlsZXMgY2FuIGFsc28gcHJvdmlkZSBuZXcgZGVmaW5pdGlvbnMuCgogICAgTm90ZSB0aGF0 IGlmIHlvdSBoYXZlIHN1Y2ggYSBzZXR1cCwgd2UgcmVjb21tZW5kIHlvdSBnZXQgcmlkIG9mCiAg ICBpdC4gIEluIHRoZSBwYXN0LCB0aGVyZSB3YXMgYSByZWFzb24gdG8gbTRfaW5jbHVkZSBmaWxl cyBtYW51YWxseToKICAgIGFjbG9jYWwgdXNlZCB0byBkdXBsaWNhdGUgZW50aXJlIE00IGZpbGVz IGludG8gYWNsb2NhbC5tNCwgZXZlbgogICAgZmlsZXMgdGhhdCB3ZXJlIGRpc3RyaWJ1dGVkLiAg U29tZSBwYWNrYWdlcyB3ZXJlIHRoZXJlZm9yZQogICAgbTRfaW5jbHVkaW5nIHRoZSBkaXN0cmli dXRlZCBmaWxlIGRpcmVjdGx5LCBhbmQgcGxheWluZyBzb21lCiAgICB0cmlja3MgdG8gZW5zdXJl IGFjbG9jYWwgd291bGQgbm90IGNvcHkgdGhhdCBmaWxlIHRvIGFjbG9jYWwubTQsCiAgICBpbiBv cmRlciB0byBsaW1pdCB0aGUgYW1vdW50IG9mIGR1cGxpY2F0aW9uLiAgU2luY2UgYWNsb2NhbCAx LjgueAogICAgd2lsbCBwcmVjaXNlbHkgb3V0cHV0IG00X2luY2x1ZGVzIGZvciBsb2NhbCBNNCBm aWxlcywgd2UgcmVjb21tZW5kCiAgICB0aGF0IHlvdSBjbGVhbiB1cCB5b3VyIHNldHVwLCByZW1v dmluZyBhbGwgbWFudWFsIG00X2luY2x1ZGVzIGFuZAogICAgbGV0dGluZyBhY2xvY2FsIG91dHB1 dCB0aGVtLgoKICAtIE91dHB1dCBkZXRhaWxlZCBtZW51cyBpbiB0aGUgSW5mbyB2ZXJzaW9uIGlm IHRoZSBBdXRvbWFrZSBtYW51YWwsCiAgICBzbyB0aGF0IEVtYWNzIGNhbiBsb2NhdGUgdGhlIGlu ZGV4ZXMuCgogIC0gY29uZmlndXJlLmFjIGFuZCBjb25maWd1cmUgd2VyZSBsaXN0ZWQgdHdpY2Ug aW4gRElTVF9DT01NT04gKGFuCiAgICBpbnRlcm5hbCB2YXJpYWJsZSB3aGVyZSBBdXRvbWFrZSBs aXN0cyBjb25maWd1cnkgZmlsZXMgdG8KICAgIGRpc3RyaWJ1dGUpLiAgVGhpcyB3YXMgaGFybWxl c3MsIGJ1dCB1bmFlc3RoZXRpYy4KCiAgLSBVc2UgYGNobW9kIGEtdycgaW5zdGVhZCBvZiBgY2ht b2QgLXcnIGFzIHRoZSBsYXR0ZXIgaG9ub3JzIHVtYXNrLgogICAgVGhpcyB3YXMgYW4gaXNzdWUg b25seSBpbiB0aGUgQXV0b21ha2UgcGFja2FnZSBpdHNlbGYsIG5vdCBpbgogICAgaXRzIG91dHB1 dC4KCiAgLSBBdXRvbWFrZSBhc3N1bWVkIHRoYXQgYWxsIEFDX0NPTkZJR19MSU5LUyBhcmd1bWVu dHMgaGFkIHRoZSBmb3JtCiAgICBERVNUOlNSQy4gIFRoaXMgd2FzIHdyb25nLCBhcyBzb21lIHBh Y2thZ2VzIGRvCiAgICBBQ19DT05GSUdfTElOS1MoJGNvbXB1dGVkbGlua3MpLiAgVGhpcyB2ZXJz aW9uIG5vIGxvbmdlciBhYm9ydCBpbgogICAgdGhhdCBzaXR1YXRpb24uCgogIC0gQ29udHJhcnkg dG8gbWtpbnN0YWxsZGlycywgJChta2Rpcl9wKSB3YXMgZXhwZWN0aW5nIGV4YWN0bHkgb25lCiAg ICBhcmd1bWVudC4gIFRoaXMgY2F1c2VkIHR3byBraW5kcyBvZiBmYWlsdXJlczoKICAgICAgLSBS dWxlcyBpbnN0YWxsaW5nIGRhdGEgaW4gYSBjb25kaXRpb25hbGx5IGRlZmluZWQgZGlyZWN0b3J5 CiAgICAgICAgZmFpbGVkIHdoZW4gdGhhdCBkaXJlY3Rvcnkgd2FzIHVuZGVmaW5lZC4gIEluIHRo aXMgY2FzZSBubwogICAgICAgIGFyZ3VtZW50IHdhcyBzdXBwbGllZC4KICAgICAgLSBgbWFrZSBp bnN0YWxsZGlycycgZmFpbGVkLCBiZWNhdXNlIHNldmVyYWwgZGlyZWN0b3JpZXMgd2VyZQogICAg ICAgIHBhc3NlZCB0byAkKG1rZGlyX3ApLiAgVGhpcyB3YXMgYW4gaXNzdWUgb25seSBvbiBwbGF0 Zm9ybQogICAgICAgIHdlcmUgJChta2Rpcl9wKSBpcyBpbXBsZW1lbnRlZCB3aXRoIGBpbnN0YWxs LXNoIC1kJy4KICAgICQobWtkaXJfcCkgYXMgYmVlbiBjaGFuZ2VkIHRvIGFjY2VwdCAwIG9yIG1v cmUgYXJndW1lbnRzLCBhcwogICAgbWtpbnN0YWxsZGlycyBkaWQuCgoqIExvbmctc3RhbmRpbmcg YnVnczoKCiAgLSBGaXggYW4gdW5leHBlY3RlZCBkaWFnbm9zdGljIG9jY3VycmluZyB3aGVuIHVz ZXJzIGF0dGVtcHQKICAgIHRvIG92ZXJyaWRlIHNvbWUgaW50ZXJuYWwgdmFyaWFibGVzIHRoYXQg QXV0b21ha2UgYXBwZW5kcyB0by4KCiAgLSBhY2xvY2FsIG5vdyBzY2FucyBjb25maWd1cmUuYWMg Zm9yIG1hY3JvIGRlZmluaXRpb25zIChQUi8zMTkpLgoKICAtIEZpeCBhIHBvcnRhYmlsaXR5IGlz c3VlIHdpdGggT1NGMS9UcnU2NCBNYWtlLiAgSWYgYSBkaXJlY3RvcnkKICAgIGRpc3RyaWJ1dGVz IGZpbGVzIHdoaWNoIGFyZSBvdXRzaWRlIGl0c2VsZiAodGhpcyB1c3VhbGx5IG9jY3VycwogICAg d2hlbiB1c2luZyBBQ19DT05GSUdfQVVYX0RJUihbLi4vZGlyXSkgdG8gdXNlIGF1eGlsaWFyeSBm aWxlcwogICAgZnJvbSBhIHBhcmVudCBwYWNrYWdlKSwgdGhlbiBgbWFrZSBkaXN0Y2hlY2snIGZh aWxzIGR1ZSB0byBhbgogICAgb3B0aW1pemF0aW9uIHBlcmZvcm1lZCBieSBPU0YxL1RydTY0IE1h a2UgaW4gaXRzIFZQQVRIIGhhbmRsaW5nLgogICAgKHRlc3RzL3N1YnBrZzIudGVzdCBmYWlsdXJl KQoKICAtIEZpeCBhbm90aGVyIHBvcnRhYmlsaXR5IGlzc3VlIHdpdGggU3VuIGFuZCBPU0YxL1Ry dTY0IE1ha2UuCiAgICBJbiBhIFZQQVRILWJ1aWxkIGNvbmZpZ3VyYXRpb24sIGBtYWtlIGluc3Rh bGwnIHdvdWxkIGluc3RhbGwKICAgIG5vYmFzZV8gZmlsZXMgdG8gd3JvbmcgbG9jYXRpb25zLgoK ICAtIEZpeCBhIFBlcmwgYHVuaW5pdGlhbGl6ZWQgdmFsdWUnIGRpYWdub3N0aWMgb2NjdXJyaW5n IHdoZW4KICAgIGF1dG9tYWtlIGNvbXBsYWlucyB0aGF0IGEgVGV4aW5mbyBmaWxlIGRvZXMgbm90 IGhhdmUgYQogICAgQHNldGZpbGVuYW1lIHN0YXRlbWVudC4KCiAgLSBFcmFzZSBjb25maWcuc3Rh dHVzLmxpbmVubyBkdXJpbmcgYG1ha2UgZGlzdGNsZWFuJy4gIFRoaXMgZmlsZQogICAgY2FuIGJl IGNyZWF0ZWQgYnkgY29uZmlnLnN0YXR1cy4gIEF1dG9tYWtlIGFscmVhZHkga25ldyBhYm91dAog ICAgY29uZmlndXJlLmxpbmVubywgYnV0IGZvcmdvdCBjb25maWcuc3RhdHVzLmxpbmVuby4KCiAg LSBEaXN0cmlidXRlIGFsbCBmaWxlcywgZXZlbiB0aG9zZSB3aGljaCBhcmUgYnVpbHQgYW5kIGlu c3RhbGxlZAogICAgY29uZGl0aW9uYWxseS4gIFRoaXMgY2hhbmdlIGFmZmVjdHMgZmlsZXMgbGlz dGVkIGluIGNvbmRpdGlvbmFsbHkKICAgIGRlZmluZWQgKl9IRUFERVJTIGFuZCAqX1BZVEhPTiB2 YXJpYWJsZSAodW5sZXNzIHRoZXkgYXJlIG5vZGlzdF8qKQogICAgYXMgd2VsbCBhcyB0aG9zZSBs aXN0ZWQgaW4gY29uZGl0aW9uYWxseSBkZWZpbmVkIGRpc3RfKl9EQVRBLAogICAgZGlzdF8qX0pB VkEsIGRpc3RfKl9MSVNQLCBhbmQgZGlzdF8qX1NDUklQVFMgdmFyaWFibGVzLgoKICAtIEZpeCBB TV9QQVRIX0xJU1BESVIgdG8gYXZvaWQgXD8gaW4gc2VkIHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGl0 CiAgICBkb2Vzbid0IGNvbmZvcm0gdG8gUE9TSVguCgogIC0gTm9ybWFsaXplIGhlbHAgc3RyaW5n cyBmb3IgY29uZmlndXJlIHZhcmlhYmxlcyBhbmQgb3B0aW9ucyBhZGRlZAogICAgYnkgQXV0b21h a2UgbWFjcm9zLgoKKiBBbnRpY2lwYXRpb246CgogIC0gQ2hlY2sgZm9yIHB5dGhvbjIuNCBpbiBB TV9QQVRIX1BZVEhPTi4KCiogU3B1cmlvdXMgZmFpbHVyZXMgaW4gdGVzdCBzdWl0ZToKCiAgLSB0 ZXN0cy9saWJ0b29sNS50ZXN0LCB0ZXN0cy9sdGNvbmQudGVzdCwgdGVzdHMvbHRjb25kMi50ZXN0 LAogICAgdGVzdHMvbHRjb252LnRlc3Q6IGZpeCBmYWlsdXJlcyB3aXRoIENWUyBMaWJ0b29sLgog IC0gdGVzdHMvYWNsb2NhbDYudGVzdDogZml4IGZhaWx1cmUgaWYgYXV0b200dGUuY2FjaGUgaXMg ZGlzYWJsZWQuCiAgLSB0ZXN0cy90eGluZm8yNC50ZXN0LCB0ZXN0cy90eGluZm8yNS50ZXN0LCB0 ZXN0cy90eGluZm8yOC50ZXN0OgogICAgZml4IGZhaWx1cmVzIHdpdGggb2xkIFRleGluZm8gdmVy c2lvbnMuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS44ICgyMDAzLTEyLTEwKToKCiog TWV0YS1OZXdzCgogIC0gVGhlIE5FV1MgZmlsZSBpcyBtb3JlIHZlcmJvc2UuCgoqIFJlcXVpcmVt ZW50cwoKICAtIEF1dG9jb25mIDIuNTggb3IgZ3JlYXRlciBpcyByZXF1aXJlZC4KCiogTmV3IGZl YXR1cmVzCgogIC0gRGVmYXVsdCBzb3VyY2UgZmlsZSBuYW1lcyBpbiB0aGUgYWJzZW5jZSBvZiBh IF9TT1VSQ0VTIGRlY2xhcmF0aW9uCiAgICBhcmUgbWFkZSBieSByZW1vdmluZyBhbnkgdGFyZ2V0 IGV4dGVuc2lvbiBiZWZvcmUgYXBwZW5kaW5nIGAuYycsIHNvCiAgICB0byBtYWtlIHRoZSBsaWJ0 b29sIG1vZHVsZSBgZm9vLmxhJyBmcm9tIGBmb28uYycsIHlvdSBvbmx5IG5lZWQgdG8KICAgIGRv IHRoaXM6CgoJbGliX0xUTElCUkFSSUVTID0gZm9vLmxhCglmb29fbGFfTERGTEFHUyAgPSAtbW9k dWxlCgogICAgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGZvb19sYS5jIHdpbGwgYmUgdXNl ZCBpbnN0ZWFkIG9mCiAgICBmb28uYyBpZiB0aGlzIGZpbGUgZXhpc3RzIG9yIGlzIHRoZSBleHBs aWNpdCB0YXJnZXQgb2YgYSBydWxlLgogICAgSG93ZXZlciAtV29ic29sZXRlIHdpbGwgd2FybiBh Ym91dCB0aGlzIGRlcHJlY2F0ZWQgbmFtaW5nLgoKICAtIEFSJ3MgYGNydScgZmxhZ3MgYXJlIG5v dyBzZXQgaW4gYSBnbG9iYWwgQVJGTEFHUyB2YXJpYWJsZSBpbnN0ZWFkCiAgICBvZiBiZWluZyBo YXJkLWNvZGVkIGluIGVhY2ggJChBUikgaW52b2NhdGlvbiwgc28gdGhleSBjYW4gYmUKICAgIHN1 YnN0aXR1dGVkIGZyb20gY29uZmlndXJlLmFjLiAgVGhpcyBoYXMgYmVlbiByZXF1ZXN0ZWQgYnkg cGVvcGxlCiAgICBkZWFsaW5nIHdpdGggbm9uLVBPU0lYIGFyIGltcGxlbWVudGF0aW9ucy4KCiAg LSBOZXcgd2FybmluZyBvcHRpb246IC1Xb3ZlcnJpZGUuICBUaGlzIHdpbGwgd2FybiBhYm91dCBh bnkgdXNlcgogICAgdGFyZ2V0IG9yIHZhcmlhYmxlIGRlZmluaXRpb25zIHdoaWNoIG92ZXJyaWRl IEF1dG9tYWtlCiAgICBkZWZpbml0aW9ucy4KCiAgLSBUZXhpbmZvIHJ1bGVzIGJhY2sgdXAgYW5k IHJlc3RvcmUgaW5mbyBmaWxlcyB3aGVuIG1ha2VpbmZvIGZhaWxzLgoKICAtIFRleGluZm8gcnVs ZXMgbm93IHN1cHBvcnQgdGhlIGBodG1sJyB0YXJnZXQuCiAgICBSdW5uaW5nIHRoaXMgcmVxdWly ZXMgVGV4aW5mbyA0LjAgb3IgZ3JlYXRlci4KCiAgICBgaHRtbCcgaXMgYSBuZXcgcmVjdXJzaXZl IHRhcmdldCwgc28gaWYgeW91ciBwYWNrYWdlIG1peGVzCiAgICBoYW5kLWNyYWZ0ZWQgYE1ha2Vm aWxlLmluJ3Mgd2l0aCBBdXRvbWFrZS1nZW5lcmF0ZWQKICAgIGBNYWtlZmlsZS5pbidzLCB5b3Ug c2hvdWxkIGFkanVzdCB0aGUgZm9ybWVyIHRvIHN1cHBvcnQgKG9yCiAgICBpZ25vcmUpIHRoaXMg dGFyZ2V0IHNvIHRoYXQgYG1ha2UgaHRtbCcgcmVjdXJzZXMgc3VjY2Vzc2Z1bGx5LiAgSWYKICAg IHlvdSBoYWQgYSBjdXN0b20gYGh0bWwnIHJ1bGUgaW4geW91ciBgTWFrZWZpbGUuYW0nLCBpdCdz IGJldHRlciB0bwogICAgcmVuYW1lIGl0IGFzIGBodG1sLWxvY2FsJywgb3RoZXJ3aXNlIHlvdXIg cnVsZSB3aWxsIG92ZXJyaWRlCiAgICBBdXRvbWFrZSdzIG5ldyBydWxlICh5b3UgY2FuIGNoZWNr IHRoYXQgYnkgcnVubmluZyBgYXV0b21ha2UKICAgIC1Xb3ZlcnJpZGUnKSBhbmQgdGhhdCB3aWxs IHN0b3AgdGhlIHJlY3Vyc2lvbiB0byBzdWJkaXJlY3Rvcmllcy4KCiAgICBMYXN0IGJ1dCBub3Qg bGVhc3QsIHRoaXMgYGh0bWwnIHJ1bGUgaXMgZGVjbGFyZWQgUEhPTlksIGV2ZW4gd2hlbgogICAg b3ZlcnJpZGRlbi4gIEZvcnR1bmF0ZWx5LCBpdCBhcHBlYXJzIHRoYXQgZmV3IHBhY2thZ2VzIHVz ZSBhCiAgICBub24tUEhPTlkgYGh0bWwnIHJ1bGUuCgogIC0gQW55IGZpbGUgd2hpY2ggaXMgbTRf aW5jbHVkZWQgZnJvbSBjb25maWd1cmUuYWMgd2lsbCBhcHBlYXIgYXMgYQogICAgY29uZmlndXJl IGFuZCBNYWtlZmlsZS5pbiBkZXBlbmRlbmN5LCBhbmQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5CiAg ICBkaXN0cmlidXRlZC4KCiAgLSBUaGUgcnVsZXMgZm9yIHJlYnVpbGRpbmcgTWFrZWZpbGVzIGFu ZCBNYWtlZmlsZS5pbnMgd2lsbCBub3cKICAgIHJlYnVpbGQgYWxsIE1ha2VmaWxlcyBhbmQgYWxs IE1ha2VmaWxlLmlucyBhdCBvbmNlIHdoZW4gb25lIG9mCiAgICBjb25maWd1cmUncyBkZXBlbmRl bmNpZXMgaGFzIGNoYW5nZWQuICBUaGlzIGlzIGNvbnNpZGVyYWJseSBmYXN0ZXIKICAgIHRoYW4g cHJldmlvdXMgaW1wbGVtZW50YXRpb25zLCB3aGVyZSBjb25maWcuc3RhdHVzIGFuZCBhdXRvbWFr ZQogICAgd2VyZSBydW4gc2VwYXJhdGVseSBpbiBlYWNoIGRpcmVjdG9yeSAodGhpcyBzdGlsbCBo YXBwZW5zIHdoZW4geW91CiAgICBjaGFuZ2UgYSBNYWtlZmlsZS5hbSBsb2NhbGx5LCB3aXRob3V0 IHRvdWNoaW5nIGNvbmZpZ3VyZS5hYyBvcgogICAgZnJpZW5kcykuICBEb2luZyB0aGlzIGFsc28g c29sdmVzIGEgbG9uZ3N0YW5kaW5nIGlzc3VlOiB0aGVzZQogICAgcmVidWlsZCBydWxlcyBmYWls ZWQgdG8gd29yayB3aGVuIGFkZGluZyBuZXcgZGlyZWN0b3JpZXMgdG8gdGhlCiAgICB0cmVlLCBm b3JjaW5nIHlvdSB0byBydW4gYXV0b21ha2UgbWFudWFsbHkuCgogIC0gRm9yIHNpbWlsYXIgcmVh c29ucywgdGhlIHJ1bGVzIHRvIHJlYnVpbGQgY29uZmlndXJlLAogICAgY29uZmlnLnN0YXR1cywg YW5kIGFjbG9jYWwubTQgYXJlIG5vdyBkZWZpbmVkIGluIGFsbCBkaXJlY3Rvcmllcy4KICAgIE5v dGUgdGhhdCBpZiB5b3Ugd2VyZSB1c2luZyB0aGUgQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMg YW5kCiAgICBDT05GSUdVUkVfREVQRU5ERU5DSUVTIChmb3JtZXJseSB1bmRvY3VtZW50ZWQpIHZh cmlhYmxlcywgeW91CiAgICBzaG91bGQgYmV0dGVyIGRlZmluZSB0aGVtIGluIGFsbCBkaXJlY3Rv cmllcy4gIFRoaXMgaXMgZWFzaWx5IGRvbmUKICAgIHVzaW5nIGFuIEFDX1NVQlNUIChtYWtlIHN1 cmUgeW91IHByZWZpeCB0aGVzZSBkZXBlbmRlbmNpZXMgd2l0aAogICAgJCh0b3Bfc3JjZGlyKSBz aW5jZSB0aGlzIHZhcmlhYmxlIHdpbGwgYXBwZWFyIGF0IGRpZmZlcmVudAogICAgbGV2ZWxzIG9m IHRoZSBidWlsZCB0cmVlKS4KCiAgLSBhY2xvY2FsIHdpbGwgbm93IHVzZSBgbTRfaW5jbHVkZScg aW5zdGVhZCBvZiBjb3B5aW5nIGxvY2FsIG00CiAgICBmaWxlcyBpbnRvIGFjbG9jYWwubTQuICAo TG9jYWwgbTQgZmlsZXMgYXJlIHRob3NlIHlvdSBzaGlwIHdpdGgKICAgIHlvdXIgcHJvamVjdCwg b3RoZXIgZmlsZXMgd2lsbCBiZSBjb3BpZWQgYXMgdXN1YWwuKQoKICAgIEJlY2F1c2UgbTRfaW5j bHVkZWQgZmlsZXMgYXJlIGF1dG9tYXRpY2FsbHkgZGlzdHJpYnV0ZWQsIGl0IG1lYW5zCiAgICBm b3IgbW9zdCBwcm9qZWN0cyB0aGVyZSBpcyBubyBwb2ludCBpbiBFWFRSQV9ESVNUaW5nIHRoZSBs aXN0IG9mCiAgICBtNCBmaWxlcyB3aGljaCBhcmUgdXNlZC4gIChZb3UgY2FuIHByb2JhYmx5IGdl dCByaWQgb2YKICAgIG00L01ha2VmaWxlLmFtIGlmIHlvdSBoYWQgb25lLikKCiAgLSBhY2xvY2Fs IHdpbGwgYXZvaWQgdG91Y2hpbmcgYWNsb2NhbC5tNCB3aGVuIHBvc3NpYmxlLCBzbyB0aGF0CiAg ICBBdXRvbTR0ZSdzIGNhY2hlIGlzbid0IG5lZWRsZXNzbHkgaW52YWxpZGF0ZWQuICBUaGlzIGJl aGF2aW9yIGNhbgogICAgYmUgc3dpdGNoZWQgb2ZmIHdpdGggdGhlIG5ldyBgLS1mb3JjZScgb3B0 aW9uLgoKICAtIGFjbG9jYWwgbm93IHVzZXMgQXV0b2NvbmYncyAtLXRyYWNlIHRvIGRldGVjdCBt YWNyb3Mgd2hpY2ggYXJlCiAgICBhY3R1YWxseSB1c2VkIGFuZCB3aWxsIG5vIGxvbmdlciBpbmNs dWRlIHVudXNlZCBtYWNyb3Mgc2ltcGx5CiAgICBiZWNhdXNlIHRoZXkgd2hlcmUgbWVudGlvbmVk LiAgVGhpcyB3YXMgb2Z0ZW4gdGhlIGNhc2UgZm9yIG1hY3JvcwogICAgY2FsbGVkIGNvbmRpdGlv bmFsbHkuCgogIC0gTmV3IG9wdGlvbnMgbm8tZGlzdCBhbmQgbm8tZGlzdC1nemlwLgoKICAtIGNv bXBpbGUsIGRlcGNvbXAsIGVsaXNwLWNvbXAsIGluc3RhbGwtc2gsIG1kYXRlLXNoLCBta2luc3Rh bGxkaXJzLAogICAgcHktY29tcGlsZSwgYW5kIHlsd3JhcCwgbm93IGFsbCB1bmRlcnN0YW5kIC0t dmVyc2lvbiBhbmQgLS1oZWxwLgoKICAtIEF1dG9tYWtlIHdpbGwgbm93IHJlY29nbml6ZSBBQ19D T05GSUdfTElOS1Mgc28gZmFyIGFzIHJlbW92aW5nIGNyZWF0ZWQKICAgIGxpbmtzIGFzIHBhcnQg b2YgdGhlIGRpc3RjbGVhbiB0YXJnZXQgYW5kIGluY2x1ZGluZyBzb3VyY2UgZmlsZXMgaW4KICAg IGRpc3RyaWJ1dGlvbnMuCgogIC0gQU1fUEFUSF9QWVRIT04gbm93IHN1cHBvcnRzIEFDVElPTi1J Ri1GT1VORCBhbmQgQUNUSU9OLUlGLU5PVC1GT1VORAogICAgYXJndW1lbnQuICBUaGUgbGF0dGVy IGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yCiAgICAod2hpY2gg aXMgdG8gYWJvcnQpLgoKICAtIEF1dG9tYWtlIHdpbGwgZXhpdCB3aXRoICQ/ID0gNjMgb24gdmVy c2lvbiBtaXNtYXRjaC4gIChTbyBkb2VzCiAgICBBdXRvY29uZiAyLjU4KSAgbWlzc2luZyBrbm93 cyB0aGlzLCBhbmQgaW4gdGhpcyBjYXNlIGl0IHdpbGwKICAgIGVtdWxhdGUgdGhlIHRvb2xzIGFz IGlmIHRoZXkgd2VyZSBhYnNlbnQuICBCZWNhdXNlIG9sZGVyIHZlcnNpb25zCiAgICBvZiBBdXRv bWFrZSBhbmQgQXV0b2NvbmYgZGlkIG5vdCB1c2UgdGhpcyBleGl0IGNvZGUsIHRoaXMgY2hhbmdl CiAgICB3aWxsIG9ubHkgYmUgdXNlZnVsIGluIHByb2plY3RzIGdlbmVyYXRlZCB3aXRoIGZ1dHVy ZSB2ZXJzaW9ucyBvZgogICAgdGhlc2UgdG9vbHMuCgogIC0gV2hlbiB1c2luZyBBQ19DT05GSUdf RklMRVMgd2l0aCBtdWx0aXBsZSBpbnB1dCBmaWxlcywgQXV0b21ha2UKICAgIGdlbmVyYXRlcyB0 aGUgZmlyc3QgIi5pbiIgaW5wdXQgZmlsZSBmb3Igd2hpY2ggYSAiLmFtIiBleGlzdHMuCiAgICAo Rm9ybWVyIHZlcnNpb25zIHdvdWxkIHRyeSB0byB1c2Ugb25seSB0aGUgZmlyc3QgaW5wdXQgZmls ZS4pCgogIC0gbGlzcF9EQVRBIGlzIG5vdyBhbGxvd2VkLiAgSWYgeW91IGFyZSB1c2luZyB0aGUg ZW1wdHkgRUxDRklMRVMKICAgIGlkaW9tIHRvIGRpc2FibGUgYnl0ZS1jb21waWxhdGlvbiBvZiBs aXNwX0xJU1AgZmlsZXMsIGl0IGlzCiAgICByZWNvbW1lbmRlZCB0aGF0IHlvdSBzd2l0Y2ggdG8g dXNpbmcgbGlzcF9EQVRBLiAgTm90ZSB0aGF0CiAgICB0aGlzIGlzIG5vdCBzdHJpY3RseSBlcXVp dmFsZW50OiBsaXNwX0RBVEEgd2lsbCBpbnN0YWxsIGVsaXNwCiAgICBmaWxlcyBldmVuIGlmIGVt YWNzIGlzIG5vdCBpbnN0YWxsZWQsIHdoaWxlICpfTElTUCBkbyBub3QKICAgIGluc3RhbGwgYW55 dGhpbmcgdW5sZXNzIGVtYWNzIGlzIGZvdW5kLgoKICAtIE1ha2VmaWxlcyB3aWxsIHByZWZlciBg bWtkaXIgLXAnIG92ZXIgbWtpbnN0YWxsZGlycyBpZiBpdCBpcwogICAgYXZhaWxhYmxlLiAgVGhp cyBzZWxlY3Rpb24gaXMgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgTWFrZWZpbGUKICAgIHZhcmlhYmxl ICQobWtkaXJfcCkgdGhhdCBpcyBzZXQgYnkgQU1fSU5JVF9BVVRPTUFLRSB0byBlaXRoZXIKICAg IGBta2RpciAtbSAwNzU1IC1wIC0tJywgYCQobWtpbnN0YWxsZGlycykgLW0gMDc1NScsIG9yCiAg ICBgJChpbnN0YWxsX3NoKSAtbSAwNzU1IC1kJy4KCiogT2Jzb2xldGUgZmVhdHVyZXMKCiAgLSBC ZWNhdXNlIGBta2RpciAtcCcgaXMgYXZhaWxhYmxlIG9uIG1vc3QgcGxhdGZvcm1zLCBhbmQgd2Ug Y2FuIHVzZQogICAgYGluc3RhbGwtc2ggLWQnIHdoZW4gaXQgaXMgbm90LCB0aGUgdXNlIG9mIHRo ZSBta2luc3RhbGxkaXJzCiAgICBzY3JpcHQgaXMgYmVpbmcgcGhhc2VkIG91dC4gIGBhdXRvbWFr ZSAtLWFkZC1taXNzaW5nJyBubyBsb25nZXIKICAgIGluc3RhbGxzIGl0LCBhbmQgaWYgeW91IHJl bW92ZSBta2luc3RhbGxkaXJzIGZyb20geW91ciBwYWNrYWdlLAogICAgYXV0b21ha2Ugd2lsbCBk ZWZpbmUgJChta2luc3RhbGxkaXJzKSBhcyBhbiBhbGlhcyBmb3IgJChta2Rpcl9wKS4KCiAgICBH ZXR0ZXh0IDAuMTIuMSBzdGlsbCByZXF1aXJlcyBta2luc3RhbGxkaXJzLiAgRm9ydHVuYXRlbHkK ICAgIGdldHRleHRpemUgYW5kIGF1dG9wb2ludCB3aWxsIGluc3RhbGwgaXQgd2hlbiBuZWVkZWQu ICBBdXRvbWFrZQogICAgd2lsbCBjb250aW51ZSB0byBkZWZpbmUgdGhlICQobWtpbnN0YWxsZGly cykgYW5kIHRvIGRpc3RyaWJ1dGUKICAgIG1raW5zdGFsbGRpcnMgd2hlbiB0aGlzIHNjcmlwdCBp cyBpbiB0aGUgc291cmNlIHRyZWUuCgogIC0gQU1fUFJPR19DQ19TVERDIGlzIG5vdyBlbXB0eS4g IFRoZSBjb250ZW50IG9mIHRoaXMgbWFjcm8gd2FzCiAgICBtZXJnZWQgaW4gQUNfUFJPR19DQy4g IElmIHlvdXIgY29kZSB1c2VzICRhbV9jdl9wcm9nX2NjX3N0ZGMsIHlvdQogICAgc2hvdWxkIGFk anVzdCBpdCB0byB1c2UgJGFjX2N2X3Byb2dfY2Nfc3RkYyBpbnN0ZWFkLiAgKFRoaXMKICAgIHJl bmFtaW5nIHNob3VsZCBiZSBzYWZlLCBldmVuIGlmIHlvdSBoYXZlIHRvIHN1cHBvcnQgc2V2ZXJh bCwKICAgIHZlcnNpb25zIG9mIEF1dG9tYWtlLCBiZWNhdXNlIEFDX1BST0dfQ0MgZGVmaW5lcyB0 aGlzIHZhcmlhYmxlCiAgICBzaW5jZSBBdXRvY29uZiAyLjU0LikKCiAgLSBTb21lIHVzZXJzIHdo ZXJlIHVzaW5nIHRoZSB1bmRvY3VtZW50ZWQgQUNMT0NBTF9NNF9TT1VSQ0VTCiAgICB2YXJpYWJs ZSB0byBvdmVycmlkZSB0aGUgYWNsb2NhbC5tNCBkZXBlbmRlbmNpZXMgY29tcHV0ZWQKICAgIChp bmFjY3VyYXRlbHkpIGJ5IG9sZGVyIHZlcnNpb25zIG9mIEF1dG9tYWtlLiAgQmVjYXVzZSBBdXRv bWFrZQogICAgbm93IHRyYWNrcyBjb25maWd1cmUncyBtNCBkZXBlbmRlbmNpZXMgYWNjdXJhdGVs eSAoc2VlIG00X2luY2x1ZGUKICAgIGFib3ZlKSwgdGhlIHVzZSBvZiBBQ0xPQ0FMX000X1NPVVJD RVMgc2hvdWxkIGJlIGNvbnNpZGVyZWQKICAgIG9ic29sZXRlIGFuZCB3aWxsIGJlIGZsYWdnZWQg YXMgc3VjaCB3aGVuIHJ1bm5pbmcgYGF1dG9tYWtlCiAgICAtV29ic29sZXRlJy4KCiogQnVnIGZp eGVzCgogIC0gRGVmaW5pbmcgcHJvZ3JhbXMgY29uZGl0aW9uYWxseSB1c2luZyBBdXRvbWFrZSBj b25kaXRpb25hbHMgbm8KICAgIGxvbmdlciBsZWFkcyB0byBhIGNvbWJpbmF0b3JpYWwgZXhwbG9z aW9uLiAgVGhlIGZvbGxvd2luZwogICAgY29uc3RydWN0IHVzZWQgdG8gYmUgdHJvdWJsZXNvbWUg d2hlbiB1c2VkIHdpdGggZG96ZW5zIG9mCiAgICBjb25kaXRpb25zLgoKICAgICAgYmluX1BST0dS QU1TID0gYQogICAgICBpZiBDT05EMQogICAgICAgIGJpbl9QUk9HUkFNUyArPSBhMQogICAgICBl bmRpZgogICAgICBpZiBDT05EMgogICAgICAgIGJpbl9QUk9HUkFNUyArPSBhMgogICAgICBlbmRp ZgogICAgICBpZiBDT05EMwogICAgICAgIGJpbl9QUk9HUkFNUyArPSBhMwogICAgICBlbmRpZgog ICAgICAuLi4KCiAgICBMaWtld2lzZSBmb3IgX1NPVVJDRVMsIF9MREFERCwgYW5kIF9MSUJBREQg dmFyaWFibGVzLgoKICAtIER1ZSB0byBpbXBsZW1lbnRhdGlvbiBjb25zdHJhaW50cywgcHJldmlv dXMgdmVyc2lvbnMgb2YgQXV0b21ha2UKICAgIHByb3NjcmliZWQgbXVsdGlwbGUgY29uZGl0aW9u YWwgZGVmaW5pdGlvbnMgb2Ygc29tZSB2YXJpYWJsZXMKICAgIGxpa2UgYmluX1BST0dSQU1TOgoK ICAgICAgaWYgQ09ORDEKICAgICAgICBiaW5fUFJPR1JBTVMgPSBhMQogICAgICBlbmRpZgogICAg ICBpZiBDT05EMgogICAgICAgIGJpbl9QUk9HUkFNUyA9IGEyCiAgICAgIGVuZGlmCgogICAgQWxs IF9QUk9HUkFNUywgX0xEQURELCBhbmQgX0xJQkFERCB2YXJpYWJsZXMgd2VyZSBhZmZlY3RlZC4K ICAgIFRoaXMgcmVzdHJpY3Rpb24gaGFzIGJlZW4gbGlmdGVkLCBhbmQgdGhlc2UgdmFyaWFibGVz IG5vdwogICAgc3VwcG9ydCBtdWx0aXBsZSBjb25kaXRpb25hbCBkZWZpbml0aW9ucyBhcyBkbyBv dGhlciB2YXJpYWJsZXMuCgogIC0gQ2xlYW51cCB0aGUgZGVmaW5pdGlvbnMgb2YgJChkaXN0ZGly KSBhbmQgJCh0b3BfZGlzdGRpcikuCiAgICAkKHRvcF9kaXN0ZGlyKSBub3cgcG9pbnRzIHRvIHRo ZSByb290IG9mIHRoZSBkaXN0cmlidXRpb24KICAgIGRpcmVjdG9yeSBjcmVhdGVkIGR1cmluZyBg bWFrZSBkaXN0JywgYXMgaXQgZGlkIGluIEF1dG9tYWtlIDEuNCwKICAgIG5vdCB0byB0aGUgcm9v dCBvZiB0aGUgYnVpbGQgdHJlZSBhcyBpdCBkaWQgaW4gaW50ZXJ2ZW5pbmcKICAgIHZlcnNpb25z LiAgRnVydGhlcm1vcmUgdGhlc2UgdHdvIHZhcmlhYmxlcyBhcmUgbm93IG9ubHkgZGVmaW5lZCBp bgogICAgdGhlIHRvcCBsZXZlbCBNYWtlZmlsZSwgYW5kIHBhc3NlZCB0byBzdWItZGlyZWN0b3Jp ZXMgd2hlbiBydW5uaW5nCiAgICBgbWFrZSBkaXN0Jy4KCiAgLSBUaGUgLS1uby1mb3JjZSBvcHRp b24gbm93IGNvcnJlY3RseSBjaGVja3MgdGhlIE1ha2VmaWxlLmluJ3MKICAgIGRlcGVuZGVuY2ll cyBiZWZvcmUgZGVjaWRpbmcgbm90IHRvIHVwZGF0ZSBpdC4KCiAgLSBEbyBub3QgYXNzdW1lIHRo YXQgbWFrZSBmaWxlcyBhcmUgY2FsbGVkIE1ha2VmaWxlIGluIGNsZWFuaW5nIHJ1bGVzLgoKICAt IFVwZGF0ZSAuaW5mbyBmaWxlcyBpbiB0aGUgc291cmNlIHRyZWUsIG5vdCBpbiB0aGUgYnVpbGQg dHJlZS4gIFRoaXMKICAgIGlzIHdoYXQgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmQgcmVjb21tZW5k LiAgT25seSBBdXRvbWFrZSAxLjcueAogICAgdXNlZCB0byB1cGRhdGUgdGhlc2UgZmlsZXMgaW4g dGhlIGJ1aWxkIHRyZWUgKHByZXZpb3VzIHZlcnNpb25zIGRpZAogICAgaXQgaW4gdGhlIHNvdXJj ZSB0cmVlIHRvbyksIGFuZCBpdCBjYXVzZWQgc2V2ZXJhbCBwcm9ibGVtcywgdmFyeWluZwogICAg ZnJvbSBtZXJlIGFubm95YW5jZSB0byBwb3J0YWJpbGl0eSBpc3N1ZXMuCgogIC0gQ09QWUlORywg Q09QWUlORy5MSUIsIGFuZCBDT1BZSU5HLkxFU1NFUiBhcmUgbm8gbG9uZ2VyIG92ZXJ3cml0dGVu CiAgICB3aGVuIC0tYWRkLW1pc3NpbmcgYW5kIC0tZm9yY2UtbWlzc2luZyBhcmUgdXNlZC4gIEZv ciBiYWNrd2FyZAogICAgY29tcGF0aWJpbGl0eSAtLWFkZC1taXNzaW5nIHdpbGwgY29udGludWUg dG8gaW5zdGFsbCBDT1BZSU5HIChpbgogICAgYGdudScgc3RyaWN0bmVzcykgd2hlbiBub25lIG9m IHRoZXNlIHRocmVlIGZpbGVzIGV4aXN0LCBidXQgdGhpcwogICAgdXNlIGlzIGRlcHJlY2F0ZWQ6 IHlvdSBzaG91bGQgYmV0dGVyIGNob29zZSBhIGxpY2Vuc2UgeW91cnNlbGYgYW5kCiAgICBpbnN0 YWxsIGl0IG9uY2UgZm9yIGFsbCBpbiB5b3VyIHNvdXJjZSB0cmVlIChhbmQgaW4geW91ciBjb2Rl CiAgICBtYW5hZ2VtZW50IHN5c3RlbSkuCgogIC0gRml4IHlsd3JhcCBzbyB0aGF0IGl0IGRvZXMg bm90IG92ZXJ3cml0ZSBoZWFkZXIgZmlsZXMgdGhhdCBoYXZlbid0CiAgICBjaGFuZ2VkLCBhcyB0 aGUgaW5saW5lIHJ1bGUgYWxyZWFkeSBkb2VzLgoKICAtIFVzZXItZGVmaW5lZCBydWxlcyBvdmVy cmlkZSBhdXRvbWFrZS1kZWZpbmVkIHJ1bGVzIGZvciB0aGUgc2FtZQogICAgdGFyZ2V0cywgZXZl biB3aGVuIHJ1bGVzIGRvIG5vdCBoYXZlIGNvbW1hbmRzLiAgVGhpcyBpcyBub3QgbmV3CiAgICAo YW5kIHdhcyBkb2N1bWVudGVkKSwgaG93ZXZlciBzb21lIG9mIHRoZSBhdXRvbWFrZS1nZW5lcmF0 ZWQKICAgIHJ1bGVzIGhhdmUgZXNjYXBlZCB0aGlzIHByaW5jaXBsZSBpbiBmb3JtZXIgQXV0b21h a2UgdmVyc2lvbnMuCiAgICBSdWxlcyBmb3IgdGhlIGZvbGxvd2luZyB0YXJnZXRzIGFyZSBhZmZl Y3RlZCBieSB0aGlzIGZpeDoKCiAgICAgICBjbGVhbiwgY2xlYW4tYW0sIGRpc3QtYWxsLCBkaXN0 Y2xlYW4sIGRpc3RjbGVhbi1hbSwgZHZpLCBkdmktYW0sCiAgICAgICBpbmZvLCBpbmZvLWFtLCBp bnN0YWxsLWRhdGEtYW0sIGluc3RhbGwtZXhlYy1hbSwgaW5zdGFsbC1pbmZvLAogICAgICAgaW5z dGFsbC1pbmZvLWFtLCBpbnN0YWxsLW1hbiwgaW5zdGFsbGNoZWNrLWFtLCBtYWludGFpbmVyLWNs ZWFuLAogICAgICAgbWFpbnRhaW5lci1jbGVhbi1hbSwgbW9zdGx5Y2xlYW4sIG1vc3RseWNsZWFu LWFtLCBwZGYsIHBkZi1hbSwKICAgICAgIHBzLCBwcy1hbSwgdW5pbnN0YWxsLWFtLCB1bmluc3Rh bGwtaW5mbywgdW5pbnN0YWxsLW1hbgoKICAgIFByYWN0aWNhbGx5IGl0IG1lYW5zIHRoYXQgYW4g YXR0ZW1wdCB0byBzdXBwbGVtZW50IHRoZSBkZXBlbmRlbmNpZXMKICAgIG9mIHNvbWUgdGFyZ2V0 LCBhcyBpbgoKICAgICAgIGNsZWFuOiBteS1jbGVhbi1ydWxlCgogICAgd2lsbCBub3cgKnNpbGVu dGx5IG92ZXJyaWRlKiB0aGUgYXV0b21ha2UgZGVmaW5pdGlvbiBvZiB0aGUKICAgIHJ1bGUgZm9y IHRoaXMgdGFyZ2V0LiAgUnVubmluZyBgYXV0b21ha2UgLVdvdmVycmlkZScgd2lsbCBkaWFnbm9z ZQogICAgYWxsIHN1Y2ggb3ZlcnJpZGluZyBkZWZpbml0aW9ucy4KCiAgICBJdCBzaG91bGQgYmUg bm90ZWQgdGhhdCBhbG1vc3QgYWxsIG9mIHRoZXNlIHRhcmdldHMgc3VwcG9ydCBhICotbG9jYWwK ICAgIHZhcmlhbnQgdGhhdCBpcyBtZWFudCB0byBzdXBwbGVtZW50IHRoZSBhdXRvbWFrZS1kZWZp bmVkIHJ1bGUKICAgIChTZWUgbm9kZSBgRXh0ZW5kaW5nJyBpbiB0aGUgbWFudWFsKS4gIFRoZSBh Ym92ZSBydWxlIHNob3VsZAogICAgYmUgcmV3cml0dGVuIGFzCgogICAgICBjbGVhbi1sb2NhbDog bXktY2xlYW4tcnVsZQoKICAgIFRoZXNlICotbG9jYWwgdGFyZ2V0cyBoYXZlIGJlZW4gZG9jdW1l bnRlZCBzaW5jZSBhdCBsZWFzdAogICAgQXV0b21ha2UgMS4yLCBzbyB5b3Ugc2hvdWxkIG5vdCBm ZWFyIHRoZSBjaGFuZ2UgaWYgeW91IGhhdmUKICAgIHRvIHN1cHBvcnQgbXVsdGlwbGUgYXV0b21h a2UgdmVyc2lvbnMuCgoqIE1pc2NlbGxhbmVvdXMKCiAgLSBUaGUgQXV0b21ha2UgbWFudWFsIGlz IG5vdyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGREwuCgogIC0gVGFy Z2V0cyBkaXN0LWd6aXAsIGRpc3QtYnppcDIsIGRpc3QtdGFyWiwgZGlzdC16aXAgYXJlIGFsd2F5 cyBkZWZpbmVkLgoKICAtIGNvcmUgZHVtcHMgYXJlIG5vIGxvbmdlciByZW1vdmVkIGJ5IHRoZSBj bGVhbmluZyBydWxlcy4gIFRoZXJlIGFyZQogICAgYXQgbGVhc3QgdGhyZWUgcmVhc29ucyBmb3Ig dGhpczoKICAgICAgMS4gVGhlc2UgZmlsZXMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGJ5IGFueSBi dWlsZCBzdGVwLAoJIHNvIHRoZWlyIHJlbW92YWwgZG8gbm90IGZpdCBhbnkgb2YgdGhlIGNsZWFu aW5nIHJ1bGVzLgoJIEFjdHVhbGx5LCB0aGV5IG1heSBiZSBwcmVjaW91cyB0byB0aGUgZGV2ZWxv cGVyLgogICAgICAyLiBJZiBzdWNoIGZpbGUgaXMgY3JlYXRlZCBkdXJpbmcgYSBidWlsZCwgdGhl biBpdCdzIGNsZWFybHkgYQogICAgICAgICBidWcgQXV0b21ha2Ugc2hvdWxkIG5vdCBoaWRlLiAg Tm90IHJlbW92aW5nIHRoZSBmaWxlIHdpbGwKICAgICAgICAgY2F1c2UgYG1ha2UgZGlzdGNoZWNr JyB0byBjb21wbGFpbiBhYm91dCBpdHMgcHJlc2VuY2UuCiAgICAgIDMuIE9wZXJhdGluZyBzeXN0 ZW1zIGhhdmUgZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9ucyBmb3IKICAgICAgICAgY29yZSBk dW1wIGZpbGVzLiAgQSBjb3JlIGZpbGUgb24gb25lIHN5c3RlbSBtaWdodCBiZSBhCgkgY29tcGxl dGVseSBsZWdpdGltYXRlIGRhdGEgZmlsZSBvbiBhbm90aGVyIHN5c3RlbS4KCiAgLSBSVU5URVNU RkxBR1MsIENUQUdTRkxBR1MsIEVUQUdTRkxBR1MsIEpBVkFDRkxBR1MgYXJlIG5vIGxvbmdlcgog ICAgZGVmaW5lZCBieSBBdXRvbWFrZS4gIFRoaXMgbWVhbnMgdGhhdCBhbnkgZGVmaW5pdGlvbiBp biB0aGUKICAgIGVudmlyb25tZW50IHdpbGwgYmUgdXNlZCwgdW5sZXNzIG92ZXJyaWRkZW4gaW4g dGhlIE1ha2VmaWxlLmFtIG9yCiAgICBvbiB0aGUgY29tbWFuZCBsaW5lLiAgVGhlIG9sZCBiZWhh dmlvciwgd2hlcmUgdGhlc2UgdmFyaWFibGVzIHdlcmUKICAgIGRlZmluZWQgZW1wdHkgaW4gZWFj aCBNYWtlZmlsZSwgY2FuIGJlIG9idGFpbmVkIGJ5IEFDX1NVQlNUaW5nIG9yCiAgICBBQ19BUkdf VkFSaW5nIGVhY2ggdmFyaWFibGUgZnJvbSBjb25maWd1cmUuYWMuCgogIC0gQ09ORklHVVJFX0RF UEVOREVOQ0lFUyBhbmQgQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMgYXJlIG5vdwogICAgZG9j dW1lbnRlZC4gIChUaGUgaXMgbm90IGEgbmV3IGZlYXR1cmUsIHRoZXNlIHZhcmlhYmxlcyBoYXZl CiAgICBiZWVuIHRoZXJlIHNpbmNlIGF0IGxlYXN0IEF1dG9tYWtlIDEuNC4pCgp+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+CgpCdWdzIGZpeGVkIGluIDEuNy45ICgyMDAzLTExLTEyKToKKiBGaXggaW5zdGFs bC1zdHJpcCB0byB3b3JrIHdpdGggbm9iYXNlXyBiaW5hcmllcy4KKiBGaXggcmVuYW1pbmcgb2Yg I2xpbmUgZGlyZWN0aXZlcyBpbiB5bHdyYXAuCiogUmVidWlsZCB3aXRoIEF1dG9jb25mIDIuNTku ICAoMS43Ljggd2FzIG5vdCBpbnN0YWxsYWJsZSB3aXRoIHBka3NoLikKCkJ1Z3MgZml4ZWQgaW4g MS43LjggKDIwMDMtMTAtMDYpOgoqIFJlbW92ZSBzcHVyaW91cyBibGFuayBsaW5lcyBpbiBjbGVh bmluZyBydWxlcyBpbnRyb2R1Y2VkIGluIDEuNy43LgoqIEZpeCBkZXRlY3Rpb24gb2YgRGViaWFu J3MgaW5zdGFsbC1pbmZvLCBicm9rZW4gc2luY2UgdmVyc2lvbiAxLjUuCiAgKERlYmlhbiBidWcg IzIxMzUyNCkuCiogSG9ub3IgLW1vZHVsZSBpZiBpdCBhcHBlYXJzIGluIEFNX0xERkxBR1MgKGku ZS4sIHJlbGF4IG5hbWUgY2hlY2tpbmcpCiAgVGhpcyB3YXMgb25seSBkb25lIGZvciBsaWJmb29f TERGTEFHUyBhbmQgTERGTEFHUyBpbiBwcmV2aW91cyB2ZXJzaW9ucy4KCkJ1Z3MgZml4ZWQgaW4g MS43LjcgKDIwMDMtMDktMDcpOgoqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhdXRvbWFrZSdzIC0t bm8tZm9yY2Ugb3B0aW9uIGlzIHVucmVsaWFibGUsCiAgc28gdGhpcyBvcHRpb24gaXMgaWdub3Jl ZCBpbiB0aGlzIHZlcnNpb24uICBBIHJlYWwgZml4IHdpbGwgYXBwZWFyIGluCiAgQXV0b21ha2Ug MS44LiAgKERlYmlhbiBCdWcgIzIwNjI5OSkKKiBBTV9QQVRIX1BZVEhPTjogcmVhbGx5IGNoZWNr IHRoZSB3aG9sZSBsaXN0IG9mIGludGVycHJldGVycyBpZiBubwogIGFyZ3VtZW50IGlzIGdpdmVu LiAgKFBSLzM5OSkKKiBEbyBub3Qgd2FybiBhYm91dCBsZWFkaW5nIGBfJyBpbiB2YXJpYWJsZSBu YW1lcywgZXZlbiB3aXRoIC1XcG9ydGFiaWxpdHkuCiogU3VwcG9ydCB1c2VyIHJlZGVmaW5pdGlv bnMgb2YgVEVYSU5GT19URVguCiogZGVwY29tcDogc3VwcG9ydCBBSVggQ29tcGlsZXIgdmVyc2lv biA2LgoqIEZpeCBtaXNzaW5nIHJlYnVpbGRzIGR1cmluZyBgbWFrZSBkaXN0JyB3aXRoIEJTRCBt YWtlLgogIChDb3VsZCBwcm9kdWNlIHRhcmJhbGxzIGNvbnRhaW5pbmcgb3V0LW9mLWRhdGUgZmls ZXMuKQoqIFJlc3VycmVjdCBtdWx0aWxpYiBzdXBwb3J0LgoqIE5vdGV3b3J0aHkgbWFudWFsIHVw ZGF0ZXM6CiAgLSBFeHRlbmRpbmcgYWNsb2NhbDogaG93IHRvIHdyaXRlIG00IG1hY3JvcyB0aGF0 IHdvbid0IHRyaWdnZXIgd2FybmluZ3MKICAgIHdpdGggQXV0b21ha2UgMS44LgogIC0gQSBTaGFy ZWQgTGlicmFyeTogUmV3cml0ZSBhbmQgc3BsaXQgaW50byBzdWJzZWN0aW9ucy4KCkJ1Z3MgZml4 ZWQgaW4gMS43LjYgKDIwMDMtMDctMTApOgoqIEZpeCBkZXBjb21wJ3MgaWNjIG1vZGUgZm9yIElD QyA3LjEuCiogRGlhZ25vc2UgY2FsbHMgdG8gQUNfQ09ORklHX0ZJTEVTIGFuZCBmcmllbmRzIHdp dGggbm90IGVub3VnaCBhcmd1bWVudHMuCiogRml4IG1haW50YWluZXItY2xlYW4ncyByZW1vdmFs IG9mIGF1dG9tNHRlLmNhY2hlIGluIFZQQVRIIGJ1aWxkcy4KKiBGaXggQU1fUEFUSF9MSVNQRElS IHRvIHdvcmsgd2l0aCBQT1NJWExZX0NPUlJFQ1Q9MS4KKiBGaXggdGhlIGxvY2F0aW9uIHJlcG9y dGVkIGluIHNvbWUgZGlhZ25vc3RpY3MgcmVsYXRlZCB0byBBVVRPTUFLRV9PUFRJT05TLgoqIFJl bW92ZSBMYXRpbi0xIGNoYXJhY3RlcnMgZnJvbSBlbGlzcC1jb21wLgoqIFVwZGF0ZSB0aGUgbWFu dWFsJ3MgQGRpcmNhdGVnb3J5IHRvIG1hdGNoIHRoZSBGcmVlIFNvZnR3YXJlIERpcmVjdG9yeS4K CkJ1Z3MgZml4ZWQgaW4gMS43LjUgKDIwMDMtMDUtMTgpOgoqIFVwZGF0ZSBpbnN0YWxsLXNoJ3Mg bGljZW5zZSB0byByZW1vdmUgYW4gYWR2ZXJ0aXNpbmcgY2xhdXNlLgogIChEZWJpYW4gYnVnICMx OTE3MTcpCiogRml4IGEgYnVnIGludHJvZHVjZWQgaW4gMS43LjQsIHJlbGF0ZWQgdG8gQlVJTFRf U09VUkNFIGhhbmRsaW5nLAogIHRoYXQgY2F1c2VkIGludmFsaWQgTWFrZWZpbGUuaW5zIHRvIGJl IGdlbmVyYXRlZC4KKiBNYWtlIHN1cmUgQU1fTUFLRV9JTkNMVURFIGRvZXNuJ3QgZmFpbCB3aGVu IGEgYGRvaXQnIGZpbGUgZXhpc3RzLgoqIE5ldyBGQVEgZW50cnk6IHJlbmFtZWQgb2JqZWN0cy4K CkJ1Z3MgZml4ZWQgaW4gMS43LjQgKDIwMDMtMDQtMjMpOgoqIFR3ZWFrIHRoZSBUQUdTIHJ1bGUg dG8gc3VwcG9ydCBFeHViZXJhbnQgQ3RhZ3MgKGluIGFkZGl0aW9uIHRvCiAgdGhlIEVtYWNzIGlt cGxlbWVudGF0aW9uKQoqIEZpeCBvdXRwdXQgb2YgYWNsb2NhbC5tNCBkZXBlbmRlbmNpZXMgaW4g c3ViZGlyZWN0b3JpZXMuCiogVXNlIGBtdiAtZicgaW5zdGVhZCBvZiBgbXYnIGluIGZhc3RkZXAg cnVsZXMuCiogVXBncmFkZSBtZGF0ZS1zaCB0byB3b3JrIG9uIE9TLzIuCiogRG9uJ3QgYnl0ZS1j b21waWxlIGVsaXNwIGZpbGVzIHdoZW4gRUxDRklMRVMgaXMgc2V0IGVtcHR5LgogICh0aGlzIGRv Y3VtZW50ZWQgZmVhdHVyZSB3YXMgYnJva2VuIGJ5IDEuNy4zKQoqIERpYWdub3NlIHRyYWlsaW5n IGJhY2tzbGFzaGVzIG9uIGxhc3QgbGluZSBvZiBNYWtlZmlsZS5hbS4KKiBEaWFnbm9zZSB3aGl0 ZXNwYWNlIGZvbGxvd2luZyB0cmFpbGluZyBiYWNrc2xhc2hlcy4KKiBNdWx0aXBsZSB0ZXN0cyBh cmUgbm93IGNvcnJlY3RseSBzdXBwb3J0ZWQgaW4gREVKQVRPT0wuIChQUi8zODgpCiogRml4IHJl YnVpbHQgcnVsZXMgZm9yIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGU6TWFrZWZpbGUuaW46TWFr ZWZpbGUuYm90XSkKICBNYWtlZmlsZXMuIChQUi8zODkpCiogYG1ha2UgaW5zdGFsbCcgd2lsbCBi dWlsZCBgQlVJTFRfU09VUkNFUycgZmlyc3QuCiogTWlub3IgZG9jdW1lbnRhdGlvbiBmaXhlcy4K CkJ1Z3MgZml4ZWQgaW4gMS43LjMgKDIwMDMtMDItMjApOgoqIEZpeCBzdGFtcCBmaWxlcyBudW1i ZXJpbmcgKHdoZW4gdXNpbmcgbXVsdGlwbGUgQUNfQ09ORklHX0hFQURFUlMpLgoqIFF1ZXJ5IGRp c3R1dGlscyBmb3IgYHB5dGhvbmRpcicgYW5kIGBweXRob25leGVjZGlyJywgaW5zdGVhZCBvZgog IHVzaW5nIGFuIGhhcmRjb2RlZCBwYXRoLiAgVGhpcyBzaG91bGQgYWxsb3cgYnVpbGRzIG9uIDY0 LWJpdAogIGRpc3RyaWJ1dGlvbnMgdGhhdCB1c3VhbGx5IHVzZSBsaWI2NC8gaW5zdGVhZCBvZiBs aWIvLgoqIEFNX1BBVEhfUFlUSE9OIHdpbGwgYWxzbyBzZWFyY2ggZm9yIHB5dGhvbjIuMy4KKiBl bGlzcCBmaWxlcyBhcmUgbm93IGJ1aWx0IGFsbCBhdCBvbmNlIGluc3RlYWQgb2Ygb25lIGJ5IG9u ZS4gQmVzaWRlcwogIGluY3VycmluZyBhIHNwZWVkLXVwLCB0aGlzIGlzIHJlcXVpcmVkIHRvIHN1 cHBvcnQgaW50ZXJkZXBlbmRlbnQgZWxpc3AgZmlsZXMuCiogU3VwcG9ydCBmb3IgREpHUFA6CiAg LSBgbWFrZSBkaXN0Y2hlY2snIHdpbGwgbm93IHdvcmsgaW4gYF9pbnN0LycgYW5kIGBfYnVpbGQn IGluc3RlYWQKICAgIG9mIGA9aW5zdC8nIGFuZCBgPWJ1aWxkLycKICAtIHVzZSBgX2RpcnN0YW1w JyB3aGVuIHRoZSBmaWxlLXN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgYC5kaXJzdGFtcCcKICAtIGlu c3RhbGwvdW5pbnN0YWxsIGAqLmlbMC05XVswLTldJy1zdHlsZSBpbmZvIGZpbGVzCiAgLSBtb3Jl IGNoYW5nZXMgdGhhdCBhZmZlY3Qgb25seSB0aGUgQXV0b21ha2UgcGFja2FnZSAobm90IGl0cyBv dXRwdXQpCiogRml4IHNvbWUgaW5jb21wYXRpYmlsaXR5IHdpdGggdXBjb21pbmcgcGVybC01LjEw LgoqIFByb3Blcmx5IHF1b3RlIEFDX1BBQ0tBR0VfVEFSTkFNRSBhbmQgQUNfUEFDS0FHRV9WRVJT SU9OIHdoZW4gZGVmaW5pbmcKICBQQUNLQUdFIGFuZCBWRVJTSU9OLgoqIGRlcGNvbXAgZml4ZXM6 CiAgLSBkYXNobXN0ZG91dCBhbmQgZGFzaFhtc3Rkb3V0IG1vZGVzOiBkb24ndCB1c2UgYC1vIC9k ZXYvbnVsbCcsIHRoaXMKICAgIGlzIHRyb3VibGVzb21lIHdpdGggZ2NjIGFuZCBTb2xhcmlzIGNv bXBpbGVycy4gKFBSLzM4NSkKICAtIG1ha2VkZXBlbmQgbW9kZTogd29yayB3aXRoIExpYnRvb2wu IChQUi8zODUgdG9vKQogIC0gc3VwcG9ydCBmb3IgSUNDLgoqIGJldHRlciBzdXBwb3J0IGZvciB1 bnVzdWFsIGdldHRleHQgc2V0dXBzLCBzdWNoIGFzIG11bHRpcGxlIHBvLyBkaXJlY3Rvcmllcwog IChQUi8zODEpOgogIC0gRmxhZyBtaXNzaW5nIHBvLyBhbmQgaW50bC8gZGlyZWN0b3JpZXMgYXMg d2FybmluZ3MsIG5vdCBlcnJvcnMuCiAgLSBEaXNhYmxlIHRoZXNlIHdhcm5pbmdzIGlmIHBvLyBk b2VzIG5vdCBleGlzdC4KKiBOb3Rld29ydGh5IG1hbnVhbCB1cGRhdGVzOgogIC0gTmV3IEZBUSBj aGFwdGVyLgogIC0gRG9jdW1lbnQgaG93IEFDX0NPTkZJR19BVVhfRElSIGludGVyYWN0cyB3aXRo IG1pc3NpbmcgZmlsZXMuCiAgICAoRGViaWFuIEJ1ZyAjMzk1NDIpCiAgLSBEb2N1bWVudCBgQU1f WUZMQUdTID0gLWQnLiAgKFBSLzM4MikKCkJ1Z3MgZml4ZWQgaW4gMS43LjIgKDIwMDItMTItMDUp OgoqIEZpeCBpbnN0YWxsYXRpb24gYW5kIHVuaW5zdGFsbGF0aW9uIG9mIEluZm8gZmlsZXMgYnVp bHQgaW4gc3ViZGlyZWN0b3JpZXMuCiogRG8gbm90IHJ1biBgLi9jb25maWd1cmUgLS13aXRoLWlu Y2x1ZGVkLWdldHRleHQnIGR1cmluZyBgbWFrZSBkaXN0Y2hlY2snCiAgaWYgQU1fR05VX0dFVFRF WFQoW2V4dGVybmFsXSkgaXMgdXNlZC4KKiBDb3JyZWN0bHkgdW5pbnN0YWxsIHJlbmFtZWQgbWFu IHBhZ2VzLgoqIERvIG5vdCBzdHJpcCBlc2NhcGVkIG5ld2xpbmUgaW4gdmFyaWFibGVzIGRlZmlu ZWQgaW4gb25lIGNvbmRpdGlvbgogIGFuZCBhdWdtZW50ZWQgaW4gYW5vdGhlciBjb25kaXRpb24u CiogRml4IGFuc2kya25yIHJ1bGVzIGZvciBMSUJPQkpTIHNvdXJjZXMuCiogQ2xlYW4gYWxsIGtu b3duIFRleGluZm8gaW5kZXggZmlsZXMsIG5vdCBvbmx5IHRob3NlIHdoaWNoIGFwcGVhciB0bwog IGJlIHVzZWQsIGJlY2F1c2Ugd2UgY2Fubm90IGtub3cgd2hpY2ggaW5kZXhlcyBhcmUgdXNlZCBp biBpbmNsdWRlZCBmaWxlcy4KICAoUFIvMzc1LCBEZWJpYW4gQnVnICMxNjg2NzEpCiogSG9ub3Ig b25seSB0aGUgZmlyc3QgQHNldGZpbGVuYW1lIHNlZW4gaW4gYSBUZXhpbmZvIGZpbGUuCiogVHJl YXQgInJlcXVpcmVkIGZpbGUgWCBub3QgZm91bmQiIGRpYWdub3N0aWNzIGFzIGVycm9ycyAoZXhp dCBzdGF0dXMgMSkuCiogRG9uJ3QgY29tcGxhaW4gdGhhdCBhIHJlcXVpcmVkIGZpbGUgaXMgbm90 IGZvdW5kIHdoZW4gaXQgaXMgYSBNYWtlZmlsZQogIHRhcmdldC4gKFBSLzM1NykKKiBEb24ndCB1 c2Ugc2luZ2xlIHN1ZmZpeCBpbmZlcmVuY2UgcnVsZXMgd2hlbiBidWlsZGluZyBgLmluZm8nLWxl c3MKICBJbmZvIGZpbGVzLCBmb3IgdGhlIHNha2Ugb2YgU29sYXJpcyBtYWtlLgoqIFRoZSBgY2hl Y2snIHRhcmdldCBub3cgZGVwZW5kcyBvbiBgJChCVUlMVF9TT1VSQ0VTKScuIChQUi8zNTkpCiog UmVjb2duaXplIG11bHRpcGxlIGluZmVyZW5jZSBydWxlcyBzdWNoIGFzIGAuYS5iIC5jLmQ6Jy4g KFBSLzM3MSkKKiBXYXJuIGFib3V0IG11bHRpcGxlIGluZmVyZW5jZSBydWxlcyB3aGVuIC1XcG9y dGFiaWxpdHkgaXMgdXNlZC4gKFBSLzM3MikKKiBGaXggYnVpbGRpbmcgb2YgZGVhbnNpZmllZCBm aWxlcyBmcm9tIHN1YmRpcmVjdG9yaWVzLiAoUFIvMzcwKQoqIEFkZCBtaXNzaW5nIGBmaScgaW4g dGhlIC5jLT4ub2JqIHJ1bGVzLgoqIEltcHJvdmUgaW5zdGFsbC1zaCB0byB3b3JrIGV2ZW4gd2hl biBuYW1lcyBjb250YWluIHNwYWNlcyBvciBjZXJ0YWluCiAgKGJ1dCBub3QgYWxsKSBzaGVsbCBt ZXRhY2hhcnMuCiogRml4IHRoZSBmb2xsb3dpbmcgc3B1cmlvdXMgZmFpbHVyZXMgaW4gdGhlIHRl c3Qgc3VpdGU6CiAgZGVwY29tcDIudGVzdCwgZ25pdHMyLnRlc3QsIGduaXRzMy50ZXN0LCBweXRo b24zLnRlc3QsIHRleGluZm8xMy50ZXN0CiogTm90ZXdvcnRoeSBtYW51YWwgdXBkYXRlczoKICAt IEF1Z21lbnQgdGhlIHNlY3Rpb24gYWJvdXQgQlVJTFRfU09VUkNFUy4KICAtIE1lbnRpb24gdGhh dCBBTV9QUk9HX0NDX1NUREMgaXMgYSByZWxpYyB0aGF0IGlzIGJldHRlciBhdm9pZGVkIHRvZGF5 LgoKQnVncyBmaXhlZCBpbiAxLjcuMSAoMjAwMi0xMC0xOCk6CiogSG9ub3IgYGFuc2kya25yJyBm b3IgZmlsZXMgYnVpbHQgaW4gc3ViZGlyZWN0b3JpZXMsIG9yIHVzaW5nIHBlci10YXJnZXRzCiAg ZmxhZ3MuCiogQWNsb2NhbCBzaG91bGQgbm93IHJlY29nbml6ZSBtYWNybyBuYW1lcyBjb250YWlu aW5nIHBhcmVudGhlc2VzLCBlLmcuCiAgQUNfREVGVU4oW0FDX0xBTkdfUFJFUFJPQyhGb3J0cmFu IDkwKV0sIFsuLi5dKS4KKiBFcmFzZSAqLnN1bSBhbmQgKi5sb2cgZmlsZXMgY3JlYXRlZCBieSBE ZWphR251LCBkdXJpbmcgYG1ha2UgZGlzdGNsZWFuJy4KICAoRGViaWFuIEJ1ZyMxNTM2OTcpCiog SW5zdGFsbCBQeXRob24gZmlsZXMgZXZlbiBpZiB0aGV5IHdlcmUgYnVpbHQuICAoUFIvMzY5KQoq IEhhdmUgc3RhbXAtdnRpIGRlcGVuZGVudCB1cG9uIGNvbmZpZ3VyZSBpbnN0ZWFkIG9mIGNvbmZp Z3VyZS5hYywgYXMgdGhlCiAgdmVyc2lvbiBtaWdodCBub3QgYmUgZGVmaW5lZCBpbiB0aGUgbGF0 dGVyLiAoUFIvMzU4KQoqIFJlb3JkZXIgYXJndW1lbnRzIHBhc3NlZCB0byBhIGNvdXBsZSBvZiBj b21tYW5kcywgc28gdGhpbmdzIHdvcmtzCiAgd2hlbiBQT1NJWExZX0NPUlJFQ1Q9MS4KKiBGaXgg YSByZWdleCB0aGF0IGNhbiBjYXVzZSBQZXJsIHRvIHNlZ2ZhdWx0IG9uIGxhcmdlIGlucHV0Lgog IChEZWJpYW4gQnVnIzE2MjU4MykKKiBGaXggZGlzdHJpYnV0aW9uIG9mIHBhY2thZ2VzIHRoYXQg aGF2ZSBzb21lIHNvdXJjZXMgZGVmaW5lZCBjb25kaXRpb25hbGx5LAogIGFzIGluIHRoZSBgQ29u ZGl0aW9uYWwgY29tcGlsYXRpb24gdXNpbmcgQXV0b21ha2UgY29uZGl0aW9uYWxzJyBleGFtcGxl CiAgb2YgdGhlIG1hbnVhbC4KKiBGaXggc3B1cmlvdXMgdGVzdCBzdWl0ZSBmYWlsdXJlcyBvbiBJ UklYLgoqIERvbid0IHJlcG9ydCBhIHJlcXVpcmVkIHZhcmlhYmxlIGFzIHVuZGVmaW5lZCBpZiBp dCBoYXMgYmVlbgogIGRlZmluZWQgY29uZGl0aW9uYWxseSBmb3IgdGhlICJyaWdodCIgY29uZGl0 aW9ucy4KKiBGaXggY2xlYW5pbmcgb2YgdGhlIC90bXAgc3ViZGlyZWN0b3J5IHVzZWQgYnkgYG1h a2UgZGlzdGNoZWNrJywgaW4gY2FzZQogIGBtYWtlIGRpc3RjaGVjaycgZmFpbHMuCiogRml4IGRp c3RyaWJ1dGlvbiBvZiBpbmNsdWRlZCBNYWtlZmlsZSBmcmFnbWVudCwgc28gd2UgZG9uJ3QgY3Jl YXRlCiAgc3B1cmlvdXMgZGlyZWN0b3JpZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4gKFBSLzM2NikK KiBEb24ndCBjb21wbGFpbiB0aGF0IGEgdGFyZ2V0IGxhY2tzIGAuJChFWEVFWFQpJyB3aGVuIGl0 IGhhcyBpdC4KCk5ldyBpbiAxLjcgKDIwMDItMDktMjUpOgoqIEF1dG9jb25mIDIuNTQgaXMgcmVx dWlyZWQuCiogYGFjbG9jYWwnIGFuZCBgYXV0b21ha2UnIHdpbGwgbm8gbG9uZ2VyIHdhcm4gYWJv dXQgb2Jzb2xldGUKICBjb25maWd1cmUgbWFjcm9zLiAgVGhpcyBpcyBkb25lIGJ5IGBhdXRvY29u ZiAtV29ic29sZXRlJy4KKiBBTV9DT05GSUdfSEVBREVSLCBBTV9TWVNfUE9TSVhfVEVSTUlPUyBh bmQKICBBTV9IRUFERVJfVElPQ0dXSU5TWl9ORUVEU19TWVNfSU9DVEwgYXJlIG9ic29sZXRlIChh bHRob3VnaCBzdGlsbAogIHN1cHBvcnRlZCkuICBZb3Ugc2hvdWxkIHVzZSBBQ19DT05GSUdfSEVB REVSUywgQUNfU1lTX1BPU0lYX1RFUk1JT1MsCiAgYW5kIEFDX0hFQURFUl9USU9DR1dJTlNaIGlu c3RlYWQuICBgYXV0b3VwZGF0ZScgY2FuIHVwZ3JhZGUKICBgY29uZmlndXJlLmFjJyBmb3IgeW91 LgoqIFN1cHBvcnQgZm9yIHBlci1wcm9ncmFtIGFuZCBwZXItbGlicmFyeSBgX0NQUEZMQUdTJy4K KiBOZXcgYGN0YWdzJyB0YXJnZXQgKGJ1aWxkcyBDVEFHUyBmaWxlcykuCiogU3VwcG9ydCBmb3Ig LVdtdW1ibGUgYW5kIC1Xbm8tbXVtYmxlLCB3aGVyZSBtdW1ibGUgaXMgYSB3YXJuaW5nIGNhdGVn b3J5CiAgKHNlZSBgYXV0b21ha2UgLS1oZWxwJyBvciB0aGUgbWFudWFsIGZvciBhIGxpc3Qgb2Yg dGhlbSkuCiogSG9ub3IgdGhlIFdBUk5JTkdTIGVudmlyb25tZW50IHZhcmlhYmxlLgoqIE9taXQg dGhlIGNhbGwgdG8gZGVwY29tcCB3aGVuIHVzaW5nIGdjYzM6IGNhbGwgdGhlIGNvbXBpbGVyIGRp cmVjdGx5LgoqIEEgbmV3IG9wdGlvbiwgc3RkLW9wdGlvbnMsIHRlc3RzIHRoYXQgcHJvZ3JhbXMg c3VwcG9ydCAtLWhlbHAgYW5kIC0tdmVyc2lvbgogIHdoZW4gYG1ha2UgaW5zdGFsbGNoZWNrJyBp cyBydW4uICBUaGlzIGlzIGVuYWJsZWQgYnkgLS1nbml0cy4KKiBUZXhpbmZvIHJ1bGVzIG5vdyBz dXBwb3J0IHRoZSBgcHMnIGFuZCBgcGRmJyB0YXJnZXRzLgoqIEluZm8gZmlsZXMgYXJlIG5vdyBj cmVhdGVkIGluIHRoZSBidWlsZCBkaXJlY3RvcnksIG5vdCB0aGUgc291cmNlIGRpcmVjdG9yeS4K KiBpbmZvX1RFWElORk9TIHN1cHBvcnRzIGZpbGVzIGluIHN1YmRpcmVjdG9yaWVzICh0aGlzIHJl cXVpcmVzIFRleGluZm8gNC4xCiAgb3IgZ3JlYXRlcikuCiogYG1ha2UgZGlzdGNoZWNrJyB3aWxs IGVuZm9yY2UgREVTVERJUiBzdXBwb3J0IGJ5IGF0dGVtcHRpbmcKICBhIERFU1RESVIgaW5zdGFs bC4KKiBgKz0nIGNhbiBiZSB1c2VkIGluIGNvbmRpdGlvbmFscywgZXZlbiBpZiB0aGUgYXVnbWVu dGVkIHZhcmlhYmxlCiAgd2FzIGRlZmluZWQgZm9yIGFub3RoZXIgY29uZGl0aW9uLgoqIE1ha2Vm aWxlIGZyYWdtZW50cyAoaW5zZXJ0ZWQgd2l0aCBgaW5jbHVkZScpIGFyZSBhbHdheXMgZGlzdHJp YnV0ZWQuCiogVXNlIEF1dG9jb25mJ3MgLS10cmFjZSBpbnRlcmZhY2UgdG8gaW5zcGVjdCBjb25m aWd1cmUuYWMgYW5kIGdldAogIGEgbW9yZSBhY2N1cmF0ZSB2aWV3IG9mIGl0LgoqIEFkZCBzdXBw b3J0IGZvciBleHRlbmRpbmcgYWNsb2NhbCdzIGRlZmF1bHQgbWFjcm8gc2VhcmNoIHBhdGgKICB1 c2luZyBhIGBkaXJsaXN0JyBmaWxlIHdpdGhpbiB0aGUgYWNsb2NhbCBkaXJlY3RvcnkuCiogYXV0 b21ha2UgLS1vdXRwdXQtZGlyIGlzIGRlcHJlY2F0ZWQuCiogVGhlIHBhcnQgb2YgdGhlIGRpc3Rj aGVjayB0YXJnZXQgdGhhdCBjaGVja3Mgd2hldGhlciB1bmluc3RhbGwgYWN0dWFsbHkKICByZW1v dmVzIGFsbCBpbnN0YWxsZWQgZmlsZXMgaGFzIGJlZW4gbW92ZWQgdG8gYSBzZXBhcmF0ZSB0YXJn ZXQsCiAgZGlzdHVuaW5zdGFsbGNoZWNrLCBzbyBpdCBjYW4gYmUgb3ZlcnJpZGRlbiBlYXNpbHku CiogTWFueSBidWcgZml4ZXMuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS42LjMgKDIw MDItMDctMjgpOgoqIFN1cHBvcnQgZm9yIEFNX0lOSVRfR0VUVEVYVChbZXh0ZXJuYWxdKQoqIEJ1 ZyBmaXhlcywgaW5jbHVkaW5nOgogIC0gRml4IEF1dG9tYWtlJ3Mgb3duIGBtYWtlIGluc3RhbGwn IHNvIGl0IHdvcmtzIGV2ZW4gaWYgYGxuJyBkb2Vzbid0LgogIC0gbm9iYXNlXyBwcm9ncmFtcyBh bmQgc2NyaXB0cyBob25vciAtLXByb2dyYW0tdHJhbnNmb3JtIGNvcnJlY3RseS4KICAtIEVyYXNl IGNvbmZpZ3VyZS5saW5lbm8gZHVyaW5nIGBtYWtlIGRpc3RjbGVhbicuCiAgLSBFcmFzZSBZQUND IGFuZCBMRVggb3V0cHV0cyBkdXJpbmcgYG1ha2UgbWFpbnRhaW5lci1jbGVhbicuCgpOZXcgaW4g MS42LjIgKDIwMDItMDYtMTQpOgoqIE1hbnkgYnVnIGZpeGVzLCBpbmNsdWRpbmc6CiAgLSBSZXF1 aXJpbmcgdGhlIGN1cnJlbnQgdmVyc2lvbiB3b3Jrcy4KICAtIEZpeCAiJEAiIHBvcnRhYmlsaXR5 IGlzc3VlcyAoZm9yIFpzaCkuCiAgLSBGaXggb3V0cHV0IG9mIGR1bW15IGRlcGVuZGVuY3kgZmls ZXMgaW4gcHJlc2VuY2Ugb2YgcG9zdC1wcm9jZXNzZWQKICAgIE1ha2VmaWxlLmluJ3MuCiAgLSBE b24ndCBjb21wdXRlIGRlcGVuZGVuY2llcyBpbiBiYWNrZ3JvdW5kIHRvIGF2b2lkIHJhY2VzIHdp dGggbGlidG9vbC4KICAtIEZpeCBoYW5kbGluZyBvZiBfT0JKRUNUUyB2YXJpYWJsZXMgZm9yIHRh cmdldHMgc2hhcmluZyBzb3VyY2UgdmFyaWFibGVzLgogIC0gQ2hlY2sgZGVwZW5kZW5jeSBtb2Rl IGZvciBKYXZhIHdoZW4gQU1fUFJPR19HQ0ogaXMgdXNlZC4KCk5ldyBpbiAxLjYuMSAoMjAwMi0w NC0xMSk6CiogYXV0b21ha2UgLS1vdXRwdXQtZGlyIGlzIGRlcHJlY2F0ZWQKKiBNYW55IGJ1ZyBm aXhlcywgaW5jbHVkaW5nOgogIC0gRG9uJ3QgY2hva2Ugb24gQU1fTERGTEFHUyBkZWZpbml0aW9u cy4KICAtIENsZWFuIGxpYnRvb2wgb2JqZWN0cyBmcm9tIHN1YmRpcmVjdG9yaWVzLgogIC0gQWxs b3cgY29uZmlndXJlIHZhcmlhYmxlcyB3aXRoIHJlc2VydmVkIHN1ZmZpeCBhbmQgdW5rbm93biBw cmVmaXgKICAgIChlLmcuIEFDX1NVQlNUKG11bWJsZV9MREZMQUdTKSB3aGVuICdtdW1ibGUnIGlz IG5vdCBhIHRhcmdldCkuCiAgLSBGaXggdGhlIGRlZmluaXRpb24gb2YgQVVUT01BS0UgYW5kIEFD TE9DQUwgaW4gY29uZmlndXJlLgoKTmV3IGluIDEuNiAoMjAwMi0wMy0wNik6CiogQXV0b2NvbmYg Mi41MiBpcyByZXF1aXJlZC4KKiBhdXRvbWFrZSBubyBsb25nZXIgcnVuIGxpYnRvb2xpemUuCiAg VGhpcyBpcyB0aGUgam9iIG9mIGF1dG9yZWNvbmYgKGZyb20gR05VIEF1dG9jb25mKS4KKiBgZGlz dCcgZ2VuZXJhdGVzIGFsbCB0aGUgYXJjaGl2ZSBmbGF2b3JzLCBhcyBkaWQgYGRpc3QtYWxsJy4K KiBgZGlzdC1nemlwJyBnZW5lcmF0ZXMgdGhlIEd6aXAgdGFyIGZpbGUgb25seS4KKiBDb21iaW5p bmcgQXV0b21ha2UgTWFrZWZpbGUgY29uZGl0aW9uYWxzIG5vIGxvbmdlciBsZWFkIHRvIGEgY29t YmluYXRvcmlhbAogIGV4cGxvc2lvbi4gIE1ha2VmaWxlLmluJ3Mga2VlcCBhIHJlYXNvbmFibGUg c2l6ZS4KKiBBTV9GVU5DX0VSUk9SX0FUX0xJTkUsIEFNX0ZVTkNfU1RSVE9ELCBBTV9GVU5DX09C U1RBQ0ssIEFNX1BUUkRJRkZfVAogIGFyZSBubyBsb25nZXIgc2hpcHBlZCwgc2luY2UgQXV0b2Nv bmYgMi41MiBwcm92aWRlcyB0aGVtIChib3RoIGFzIEFNXwogIGFuZCBBQ18pLgoqIGAjbGluZScg b2YgTGV4IGFuZCBZYWNjIGZpbGVzIGFyZSBwcm9wZXJseSBzZXQuCiogRVhUUkFfRElTVCBjYW4g Y29udGFpbiBnZW5lcmF0ZWQgZGlyZWN0b3JpZXMuCiogU3VwcG9ydCBmb3IgZG90LWxlc3MgZXh0 ZW5zaW9ucyBpbiBzdWZmaXggcnVsZXMuCiogVGhlIHBhcnQgb2YgdGhlIGRpc3RjaGVjayB0YXJn ZXQgdGhhdCBjaGVja3Mgd2hldGhlciBkaXN0Y2xlYW4gYWN0dWFsbHkKICBjbGVhbnMgYWxsIGJ1 aWx0IGZpbGVzIGhhcyBiZWVuIG1vdmVkIHRvIGEgc2VwYXJhdGUgdGFyZ2V0LCBkaXN0Y2xlYW5j aGVjaywKICBzbyBpdCBjYW4gYmUgb3ZlcnJpZGRlbiBlYXNpbHkuCiogYG1ha2UgZGlzdGNoZWNr JyB3aWxsIHBhc3MgYWRkaXRpb25hbCBvcHRpb25zIGRlZmluZWQgaW4KICAkKERJU1RDSEVDS19D T05GSUdVUkVfRkxBR1MpIHRvIGNvbmZpZ3VyZS4KKiBGaXhlZCBDRFBBVEggcG9ydGFiaWxpdHkg cHJvYmxlbXMsIGluIHBhcnRpY3VsYXIgZm9yIE1hY09TIFguCiogRml4ZWQgaGFuZGxpbmcgb2Yg bm9iYXNlXyB0YXJnZXRzLgoqIEZpeGVkIHN1cHBvcnQgb2YgaW1wbGljaXQgcnVsZXMgbGVhZGlu ZyB0byAubG8gb2JqZWN0cy4KKiBGaXhlZCBsYXRlIGluY2x1c2lvbiBvZiAtLWFkZC1taXNzaW5n IGZpbGVzIChlLmcuIGRlcGNvbXApIGluIERJU1RfQ09NTU9OCiogQWRkZWQgdW5pbnN0YWxsLWhv b2sgdGFyZ2V0CiogYEFDX0lOSVQgQU1fSU5JVF9BVVRPTUFLRSh0YXJuYW1lLHZlcnNpb24pJyBp cyBhbiBvYnNvbGV0ZSBjb25zdHJ1Y3QuCiAgWW91IGNhbiBub3cgdXNlIGBBQ19JTklUKHBrZ25h bWUsdmVyc2lvbikgQU1fSU5JVF9BVVRPTUFLRScgaW5zdGVhZC4KICAoTm90ZSB0aGF0ICJwa2du YW1lIiBpcyBub3QgInRhcm5hbWUiLCBzZWUgdGhlIG1hbnVhbCBmb3IgZGV0YWlscy4pCiAgSXQg aXMgYWxzbyBwb3NzaWJsZSB0byBwYXNzIGEgbGlzdCBvZiBnbG9iYWwgQXV0b21ha2Ugb3B0aW9u cyBhcwogIGZpcnN0IGFyZ3VtZW50IHRvIHRoaXMgbmV3IGZvcm0gb2YgQU1fSU5JVF9BVVRPTUFL RS4KKiBDb21waWxlci1iYXNlZCBhc3NlbWJsZXIgaXMgbm93IGNhbGxlZCBgQ0NBUyc7IHBlb3Bs ZSBleHBlY3RlZCBgQVMnCiAgdG8gYmUgYSByZWFsIGFzc2VtYmxlci4KKiBBTV9JTklUX0FVVE9N QUtFIHdpbGwgc2V0IFNUUklQIGl0c2VsZiB3aGVuIGl0IG5lZWRzIGl0LiAgQWRkaW5nCiAgQUNf Q0hFQ0tfVE9PTChbU1RSSVBdLCBbc3RyaXBdKSBtYW51YWxseSBpcyBubyBsb25nZXIgcmVxdWly ZWQuCiogYWNsb2NhbCBhbmQgYXV0b21ha2UgYXJlIGFsc28gaW5zdGFsbGVkIHdpdGggdGhlIHZl cnNpb24gbnVtYmVyCiAgYXBwZW5kZWQsIGFuZCBzb21lIG9mIHRoZSBpbnN0YWxsIGRpcmVjdG9y eSBuYW1lcyBoYXZlIGNoYW5nZWQuCiAgVGhpcyBsZXRzIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNp b25zIGluc3RhbGxlZCBzaW11bHRhbmVvdXNseS4KKiBTdXBwb3J0IGZvciBwYXJzZXJzIGFuZCBs ZXhlcnMgaW4gc3ViZGlyZWN0b3JpZXMuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS41 ICgyMDAxLTA4LTIzKToKKiBTdXBwb3J0IGZvciBgY29uZmlndXJlLmFjJy4KKiBTdXBwb3J0IGZv ciBgZWxzZSBDT05EJywgYGVuZGlmIENPTkQnIGFuZCBuZWdhdGVkIGNvbmRpdGlvbnMgYCFDT05E Jy4KKiBgbWFrZSBkaXN0LWFsbCcgaXMgbXVjaCBmYXN0ZXIuCiogQWxsb3dzICdAJyBBQ19TVUJT VHMgaW4gbWFjcm8gbmFtZXMuCiogRmFzdGVyIEFNX0lOSVRfQVVUT01BS0UgKHJlcXVpcmVzIHVw ZGF0ZSBvZiBgbWlzc2luZycgc2NyaXB0KQoqIFVzZXItc2lkZSBkZXBlbmRlbmN5IHRyYWNraW5n LiAgRGV2ZWxvcGVycyBubyBsb25nZXIgbmVlZCBHTlUgbWFrZQoqIFB5dGhvbiBzdXBwb3J0Ciog VXNlcyBESVNUX1NVQkRJUlMgaW4gc29tZSBzaXR1YXRpb25zIHdoZW4gU1VCRElSUyBpcyBjb25k aXRpb25hbAoqIE1vc3QgZmlsZXMgYXJlIGNvcnJlY3RseSBoYW5kbGVkIGlmIHRoZXkgYXBwZWFy IGluIHN1YmRpcnMKICBGb3IgaW5zdGFuY2UsIGEgX0RBVEEgZmlsZSBjYW4gYXBwZWFyIGluIGEg c3ViZGlyCiogR05VIHRhciBpcyBubyBsb25nZXIgcmVxdWlyZWQgZm9yIGBtYWtlIGRpc3QnCiog QWRkZWQgc3VwcG9ydCBmb3IgYGRpc3RfJyBhbmQgYG5vZGlzdF8nIHByZWZpeGVzCiogQWRkZWQg c3VwcG9ydCBmb3IgYG5vYmFzZV8nIHByZWZpeAoqIENvbXBpbGVkIEphdmEgc3VwcG9ydAoqIFN1 cHBvcnQgZm9yIHBlci1leGVjdXRhYmxlIGFuZCBwZXItbGlicmFyeSBjb21waWxhdGlvbiBmbGFn cwoqIE1hbnkgYnVnIGZpeGVzCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgpOZXcgaW4gMS40ICgxOTk5 LTAxLTE0KToKKiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgRm9ydHJhbiA3NyBwcm9ncmFtbWluZyBs YW5ndWFnZS4KKiBSZS1pbmRleGVkIHRoZSBBdXRvbWFrZSBUZXhpbmZvIG1hbnVhbC4KKiBBZGRl ZCBgQU1fRk9PRkxBR1MnIHZhcmlhYmxlIGZvciBlYWNoIGNvbXBpbGVyIGludm9jYXRpb247CiAg ZS5nLiBBTV9DRkxBR1MgY2FuIGJlIHVzZWQgaW4gTWFrZWZpbGUuYW0gdG8gc2V0IEMgY29tcGls ZXIgZmxhZ3MKKiBTdXBwb3J0IGZvciBsYXRlc3QgYXV0b2NvbmYsIGluY2x1ZGluZyBzdXBwb3J0 IGZvciBvYmpleHQKKiBDYW4gbm93IHB1dCBgLicgaW4gU1VCRElSUyB0byBjb250cm9sIGJ1aWxk IG9yZGVyCiogYGluY2x1ZGUnIGNvbW1hbmQgYW5kIGArPScgc3VwcG9ydCBmb3IgbWFjcm8gYXNz aWdubWVudAoqIERlcGVuZGVuY3kgdHJhY2tpbmcgbm8gbG9uZyBzdXNjZXB0aWJsZSB0byBkZWxl dGVkIGhlYWRlciBmaWxlIHByb2JsZW0KKiBNYWludGFpbmVyIG1vZGUgbm93IGEgY29uZGl0aW9u YWwuICBATUFJTlRAIGlzIG5vdyBhbiBhbmFjaHJvbmlzbS4KKiBCdWcgZml4ZXMKCk5ldyBpbiAx LjMgKDE5OTgtMDQtMDYpOgoqIEJ1ZyBmaXhlcwoqIEJldHRlciBDeWd3aW4zMiBzdXBwb3J0Ciog U3VwcG9ydCBmb3Igc3VmZml4IHJ1bGVzIHdpdGggX1NPVVJDRVMgdmFyaWFibGVzCiogTmV3IG9w dGlvbnMgYHJlYWRtZS1hbHBoYScgYW5kIGBjaGVjay1uZXdzJzsgR25pdHMgbW9kZSBzZXRzIHRo ZXNlCiogQExFWExJQkAgbm8gbG9uZ2VyIHJlcXVpcmVkIHdoZW4gbGV4IHNvdXJjZSBzZWVuCiAg TGV4IHN1cHBvcnQgaW4gYG1pc3NpbmcnLCBhbmQgbmV3IGxleCBtYWNyby4gIFVwZGF0ZSB5b3Vy IG1pc3Npbmcgc2NyaXB0LgoqIEJ1aWx0LWluIHN1cHBvcnQgZm9yIGFzc2VtYmx5CiogYWNsb2Nh bCBnaXZlcyBlcnJvciBpZiBgQU1fJyBtYWNybyBub3QgZm91bmQKKiBQYXNzZWQgWUZMQUdTLCBu b3QgWUFDQ0ZMQUdTLCB0byB5YWNjCiogQU1fUFJPR19DQ19TVERDIGRvZXMgbm90IGhhdmUgdG8g Y29tZSBiZWZvcmUgQUNfUFJPR19DUFAKKiBEZXBlbmRlbmNpZXMgY29tcHV0ZWQgYXMgYSBzaWRl IGVmZmVjdCBvZiBjb21waWxhdGlvbgoqIFByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIEphdmEKKiBE RVNURElSIHN1cHBvcnQgYXQgIm1ha2UgaW5zdGFsbCIgdGltZQoqIEltcHJvdmVkIGFuc2kya25y IHN1cHBvcnQ7IHlvdSBtdXN0IHVzZSB0aGUgbGF0ZXN0IGFuc2kya25yLmMgKGluY2x1ZGVkKQoK TmV3IGluIDEuMiAoMTk5Ny0wNi0yNCk6CiogQnVnIGZpeGVzCiogQmV0dGVyIERlamFHbnUgc3Vw cG9ydAoqIEFkZGVkIG5vLWluc3RhbGxpbmZvIG9wdGlvbgoqIEFkZGVkIEVtYWNzIExpc3Agc3Vw cG9ydAoqIEFkZGVkIC0tbm8tZm9yY2Ugb3B0aW9uCiogSW5jbHVkZWQgYGFjbG9jYWwnIHByb2dy YW0KKiBBdXRvbWFrZSB3aWxsIG5vdyBnZW5lcmF0ZSBydWxlcyB0byByZWdlbmVyYXRlIGFjbG9j YWwubTQsIGlmIGFwcHJvcHJpYXRlCiogTm93IHVzZXMgYEFNXycgbWFjcm8gbmFtZXMgZXZlcnl3 aGVyZQoqIGFuc2kya25yIG9wdGlvbiBjYW4gaGF2ZSBkaXJlY3RvcnkgcHJlZml4IChlZyBgLi4v bGliL2Fuc2kya25yJykKICBhbnNpMmtuciBub3cgd29ya3MgY29ycmVjdGx5IG9uIEsmUiBzb3Vy Y2VzCiogQmV0dGVyIEMrKywgeWFjYywgbGV4IHN1cHBvcnQKKiBXaWxsIGNvbXB1dGUgX0RFUEVO REVOQ0lFUyB2YXJpYWJsZXMgYXV0b21hdGljYWxseSBpZiBub3Qgc3VwcGxpZWQKKiBXaWxsIGlu dGVycG9sYXRlICQoLi4uKSBhbmQgJHsuLi59IHdoZW4gZXhhbWluaW5nIGNvbnRlbnRzIG9mIGEg dmFyaWFibGUKKiAuZGVwcyBmaWxlcyBub3cgaW4gYnVpbGQgZGlyZWN0b3J5LCBub3Qgc291cmNl IGRpcmVjdG9yeTsgZGVwZW5kZW5jeQogIGhhbmRsaW5nIGdlbmVyYWxseSByZXdyaXR0ZW4KKiBE QVRBLCBNQU5TIGFuZCBCVUlMVF9TT1VSQ0VTIG5vIGxvbmdlciBpbmNsdWRlZCBpbiBkaXN0cmli dXRpb24KKiBjYW4gbm93IHB1dCBjb25maWcuaCBpbnRvIGEgc3ViZGlyCiogQWRkZWQgZGlzdC1h bGwgdGFyZ2V0CiogU3VwcG9ydCBmb3IgaW5zdGFsbC1pbmZvIHByb2dyYW0gKHNlZSB0ZXhpbmZv IDMuOSkKKiBTdXBwb3J0IGZvciAieWFjYyAtZCIKKiBjb25maWd1cmUgc3Vic3RpdHV0aW9ucyBh cmUgYXV0b21hdGljYWxseSBkaXNjb3ZlcmVkIGFuZCBpbmNsdWRlZAogIGluIGdlbmVyYXRlZCBN YWtlZmlsZS5pbgoqIFNwZWNpYWwgLS1jeWdudXMgbW9kZQoqIE9NSVRfREVQRU5ERU5DSUVTIGNh biBub3cgaG9sZCBsaXN0IG9mIGRlcGVuZGVuY2llcyB0byBiZSBvbWl0dGVkCiAgd2hlbiBtYWtp bmcgZGlzdHJpYnV0aW9uLiAgU29tZSBkZXBlbmRlbmNpZXMgYXJlIGF1dG8taWdub3JlZC4KKiBD aGFuZ2VkIGhvdyBsaWJyYXJpZXMgYXJlIHNwZWNpZmllZCBpbiBfTElCUkFSSUVTIHZhcmlhYmxl CiogRnVsbCBsaWJ0b29sIHN1cHBvcnQsIGZyb20gR29yZCBNYXR6aWdrZWl0CiogTm8gbG9uZ2Vy IGhhdmUgdG8gZXhwbGljaXRseSB0b3VjaCBzdGFtcC1oIHdoZW4gdXNpbmcgQUNfQ09ORklHX0hF QURFUjsKICBBTV9DT05GSUdfSEVBREVSIGhhbmRsZXMgaXQgYXV0b21hdGljYWxseQoqIFRleGlu Zm8gb3V0cHV0IGZpbGVzIG5vIGxvbmdlciBuZWVkIC5pbmZvIGV4dGVuc2lvbgoqIEFkZGVkIGBt aXNzaW5nJyBzdXBwb3J0CiogQ3lnd2luMzIgc3VwcG9ydAoqIENvbmRpdGlvbmFscyBpbiBNYWtl ZmlsZS5hbSwgZnJvbSBJYW4gVGF5bG9yCgpOZXcgaW4gMS4wICgxOTk2LTA2LTA4KToKKiBCdWcg Zml4ZXMKKiBkaXN0Y2hlY2sgdGFyZ2V0IHJ1bnMgaW5zdGFsbCBhbmQgaW5zdGFsbGNoZWNrIHRh cmdldHMKKiBBZGRlZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBEZWphR251LgoKfn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fgoKTmV3IGluIDAuMzM6CiogTW9yZSBidWcgZml4ZXMKKiBNb3JlIGNoZWNraW5n CiogTW9yZSBsaWJ0b29sIGZpeGVzIGZyb20gR29yZCBNYXR6aWdrZWl0OyBsaWJ0b29sIHN1cHBv cnQgaXMgc3RpbGwKICBwcmVsaW1pbmFyeSBob3dldmVyCiogQWRkZWQgc3VwcG9ydCBmb3Igam1f TUFJTlRBSU5FUl9NT0RFCiogZGlzdC16aXAgc3VwcG9ydAoqIE5ldyAiZGlzdGNoZWNrIiB0YXJn ZXQKCk5ldyBpbiAwLjMyOgoqIE1hbnkgYnVnIGZpeGVzCiogbWtpbnN0YWxsZGlycyBhbmQgbWRh dGUtc2ggbm93IGFwcGVhciBpbiBkaXJlY3Rvcnkgc3BlY2lmaWVkIGJ5CiAgQUNfQ09ORklHX0FV WF9ESVIuCiogUmVtb3ZlZCBESVNUX1NVQkRJUlMsIERJU1RfT1RIRVIKKiBBQ19BUkdfUFJPR1JB TSBvbmx5IHJlcXVpcmVkIHdoZW4gYW4gYWN0dWFsIHByb2dyYW0gZXhpc3RzCiogZGlzdC1ob29r IHRhcmdldCBub3cgcnVuIGJlZm9yZSBkaXN0cmlidXRpb24gcGFja2FnZWQgdXA7IGlkZWEgZnJv bQogIERpZXRlciBCYXJvbi4gIE90aGVyIGhvb2tzIGV4aXN0LCB0b28uCiogUHJlbGltaW5hcnkg KHVuZmluaXNoZWQpIHN1cHBvcnQgZm9yIGxpYnRvb2wKKiBBZGRlZCBzaG9ydCBvcHRpb24gbmFt ZXMuCiogQmV0dGVyICJkaXN0IiBzdXBwb3J0IHdoZW4gZ2x1aW5nIHRvZ2V0aGVyIG11bHRpcGxl IHBhY2thZ2VzCgpOZXcgaW4gMC4zMToKKiBCdWcgZml4ZXMKKiBEb2N1bWVudGF0aW9uIHVwZGF0 ZXMgKG1hbnkgZnJvbSBGcmFuw6dvaXMgUGluYXJkKQoqIHN0cmljdG5lc3MgYG5vcm1hbCcgbm93 IHJlbmFtZWQgdG8gYGZvcmVpZ24nCiogUmVuYW1lZCAtLWluc3RhbGwtbWlzc2luZyB0byAtLWFk ZC1taXNzaW5nCiogTm93IGhhbmRsZXMgQUNfQ09ORklHX0FVWF9ESVIKKiBOb3cgaGFuZGxlcyBU RVNUUyBtYWNybwoqIERJU1RfT1RIRVIgcmVuYW1lZCB0byBFWFRSQV9ESVNUCiogRElTVF9TVUJE SVJTIGlzIGRlcHJlY2F0ZWQKKiBAQUxMT0NBQCBhbmQgQExJQk9CSlNAIG5vdyB3b3JrIGluIF9M REFERCB2YXJpYWJsZXMKKiBCZXR0ZXIgZXJyb3IgbWVzc2FnZXMgaW4gbWFueSBjYXNlcwoqIFBy b2dyYW0gbmFtZXMgYXJlIGNhbm9uaWNhbGl6ZWQKKiBBZGRlZCAiY2hlY2siIHByZWZpeDsgZnJv bSBHb3JkIE1hdHppZ2tlaXQKCk5ldyBpbiAwLjMwOgoqIEJ1ZyBmaXhlcwoqIGNvbmZpZ3VyZS5p biBzY2FubmVyIGtub3dzIGFib3V0IEFDX1BBVEhfWFRSQSwgQUNfT1VUUFVUICI6IiBzeW50YXgK KiBCZWdpbm5pbmdzIG9mIGEgdGVzdCBzdWl0ZQoqIEF1dG9tYXRpY2FsbHkgYWRkcyAtSSBvcHRp b25zIGZvciAkKHNyY2RpciksICIuIiwgYW5kIHBhdGggdG8gY29uZmlnLmgKKiBEb2Vzbid0IHBy aW50IGFueXRoaW5nIHdoZW4gcnVubmluZwoqIEJlZ2lubmluZ3Mgb2YgTUFJTlRfQ0hBUlNFVCBz dXBwb3J0CiogQ2FuIHNwZWNpZnkgdmVyc2lvbiBpbiBBVVRPTUFLRV9PUFRJT05TCiogTW9zdCBl cnJvcnMgcmVjb2duaXphYmxlIGJ5IEVtYWNzJyBNLXggbmV4dC1lcnJvcgoqIEFkZGVkIC0tdmVy Ym9zZSBvcHRpb24KKiBBbGwgInByaW1hcnkiIHZhcmlhYmxlcyBub3cgb2Jzb2xldGU7IHVzZSBF WFRSQV9QUklNQVJZIHRvIHN1cHBseQogIGNvbmZpZ3VyZS1nZW5lcmF0ZWQgbmFtZXMKKiBSZXF1 aXJlZCBtYWNyb3Mgbm93IGRpc3RyaWJ1dGVkIGluIGFjbG9jYWwubTQKKiBOZXcgZG9jdW1lbnRh dGlvbgoqIC0tc3RyaWN0bmVzcz1nbnUgaXMgZGVmYXVsdAoKTmV3IGluIDAuMjk6CiogTWFueSBi dWcgZml4ZXMKKiBNb3JlIHNvcGhpc3RpY2F0ZWQgY29uZmlndXJlLmluIHNjYW5uaW5nOyBub3cg dW5kZXJzdGFuZHMgQUxMT0NBIGFuZAogIExJQk9CSlMgZGlyZWN0bHksIGhhbmRsZXMgQUNfQ09O RklHX0hFQURFUiBtb3JlIHByZWNpc2VseSwgZXRjLgoqIFRFWElORk9TIGFuZCBNQU5TIG5vdyBv YnNvbGV0ZTsgdXNlIGluZm9fVEVYSU5GT1MgYW5kIG1hbl9NQU5TIGluc3RlYWQuCiogQ09ORklH X0hFQURFUiB2YXJpYWJsZSBub3cgb2Jzb2xldGUKKiBDYW4gaGFuZGxlIG11bHRpcGxlIFRleGlu Zm8gc291cmNlcwoqIEFsbG93IGhpZXJhcmNoaWVzIGRlZXBlciB0aGFuIDIuICBGcm9tIEdvcmQg TWF0emlna2VpdC4KKiBIRUFERVJTIHZhcmlhYmxlIG5vIGxvbmdlciBuZWVkZWQ7IG5vdyBjYW4g cHV0IC5oIGZpbGVzIGRpcmVjdGx5IGludG8KICBmb29fU09VUkNFUyB2YXJpYWJsZS4KKiBBdXRv bWFrZSBhdXRvbWF0aWNhbGx5IHJlYnVpbGRzIGZpbGVzIGxpc3RlZCBpbiBBQ19PVVRQVVQuICBU aGUKICBjb3JyZXNwb25kaW5nICIuaW4iIGZpbGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZGlzdHJp YnV0aW9uLgoKTmV3IGluIDAuMjg6CiogQWRkZWQgLS1nbnUgYW5kIC0tZ25pdHMgb3B0aW9ucwoq IE1vcmUgc3RhbmRhcmRzIGNoZWNraW5nCiogQnVnIGZpeGVzCiogQ2xlYW5lZCB1cCAnZGlzdCcg dGFyZ2V0cwoqIEFkZGVkIEFVVE9NQUtFX09QVElPTlMgdmFyaWFibGUgYW5kIHNldmVyYWwgb3B0 aW9ucwoqIE5vdyBzY2FucyBjb25maWd1cmUuaW4gdG8gZ2V0IHNvbWUgaW5mb3JtYXRpb24gKHBy ZWxpbWluYXJ5KQoKTmV3IGluIDAuMjc6CiogV29ya3Mgd2l0aCBQZXJsIDQgYWdhaW4KCk5ldyBp biAwLjI2OgoqIEFkZGVkIC0taW5zdGFsbC1taXNzaW5nIG9wdGlvbi4KKiBQcmV0dHktcHJpbnRz IGdlbmVyYXRlZCBtYWNyb3MgYW5kIHJ1bGVzCiogQ29tbWVudHMgaW4gTWFrZWZpbGUuYW0gYXJl IHBsYWNlZCBtb3JlIGludGVsbGlnZW50bHkgaW4gTWFrZWZpbGUuaW4KKiBHZW5lcmF0ZXMgLlBI T05ZIHRhcmdldAoqIFJ1bGUgb3IgbWFjcm8gaW4gTWFrZWZpbGUuYW0gbm93IG92ZXJyaWRlcyBj b250ZW50cyBvZiBBdXRvbWFrZSBmaWxlCiogU3Vic3RhbnRpYWwgY2xlYW51cHMgZnJvbSBGcmFu w6dvaXMgUGluYXJkCgpOZXcgaW4gMC4yNToKKiBCdWcgZml4ZXMuCiogV29ya3Mgd2l0aCBQZXJs IDQgYWdhaW4uCgpOZXcgaW4gMC4yNDoKKiBOZXcgdW5pZm9ybSBuYW1pbmcgc2NoZW1lLgoqIC0t c3RyaWN0bmVzcyBvcHRpb24KKiBXb3JrcyB3aXRoIFBlcmwgNQoqICcuYycgZmlsZXMgY29ycmVz cG9uZGluZyB0byAnLnknIG9yICcubCcgZmlsZXMgYXJlIGF1dG9tYXRpY2FsbHkKICBkaXN0cmli dXRlZC4KKiBNYW55IGJ1ZyBmaXhlcyBhbmQgY2xlYW51cHMKCk5ldyBpbiAwLjIzOgoqIEFsbG93 IG9iamVjdHMgdG8gYmUgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBpbiBsaWJyYXJpZXMgdmlhIGxp Yl9MSUJBREQuCgpOZXcgaW4gMC4yMjoKKiBCdWcgZml4ZXMgaW4gJ2NsZWFuJyBjb2RlLgoqIE5v dyBnZW5lcmF0ZXMgJ2luc3RhbGxkaXJzJyB0YXJnZXQuCiogbWFuIHBhZ2UgaW5zdGFsbGF0aW9u IHJld29ya2VkLgoqICdtYWtlIGRpc3QnIG5vIGxvbmdlciByZS1jcmVhdGVzIGFsbCBNYWtlZmls ZS5pbidzLgoKTmV3IGluIDAuMjE6CiogUmVpbXBsZW1lbnRlZCBpbiBQZXJsCiogQWRkZWQgLS1h bWRpciBvcHRpb24gKGZvciBkZWJ1Z2dpbmcpCiogVGV4aW5mbyBzdXBwb3J0IGNsZWFuZWQgdXAu CiogQXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gY2xlYW5lZCB1cC4KKiBDbGVhbmVkIHVwICdj bGVhbicgdGFyZ2V0cy4KCk5ldyBpbiAwLjIwOgoqIEF1dG9tYXRpYyBkZXBlbmRlbmN5IHRyYWNr aW5nCiogTW9yZSBkb2N1bWVudGF0aW9uCiogTmV3IHZhcmlhYmxlcyBEQVRBIGFuZCBQQUNLQUdF REFUQQoqIFNDUklQVFMgaW5zdGFsbGVkIHVzaW5nICQoSU5TVEFMTF9TQ1JJUFQpCiogTm8gbG9u Z2VyIHVzZXMgZG91YmxlLWNvbG9uIHJ1bGVzCiogQnVnIGZpeGVzCiogQ2hhbmdlcyBpbiBhZHZh bmNlIG9mIGludGVybmF0aW9uYWxpemF0aW9uCgotLS0tLQoKQ29weXJpZ2h0IChDKSAxOTk1LTIw MjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCgpUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQg eW91ciBvcHRpb24pCmFueSBsYXRlciB2ZXJzaW9uLgoKVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCllvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4K --sb1P4XLmoM Content-Type: application/octet-stream Content-Disposition: attachment; filename="automake.texi" Content-Transfer-Encoding: base64 XGlucHV0IHRleGluZm8gICBAYyAtKi10ZXhpbmZvLSotCkBjICUqKnN0YXJ0IG9mIGhlYWRlcgpA c2V0ZmlsZW5hbWUgYXV0b21ha2UuaW5mbwpAc2V0dGl0bGUgYXV0b21ha2UKQGRvY3VtZW50ZW5j b2RpbmcgVVRGLTgKQGRvY3VtZW50bGFuZ3VhZ2UgZW4KQHNldGNoYXB0ZXJuZXdwYWdlIG9uCkBj ICUqKmVuZCBvZiBoZWFkZXIKCkBpbmNsdWRlIHZlcnNpb24udGV4aQoKQGMgQG92YXIoQVJHLCBE RUZBVUxUKQpAYyAtLS0tLS0tLS0tLS0tLS0tLS0tCkBjIFRoZSBBUkcgaXMgYW4gb3B0aW9uYWwg YXJndW1lbnQuICBUbyBiZSB1c2VkIGZvciBtYWNybyBhcmd1bWVudHMgaW4KQGMgdGhlaXIgZG9j dW1lbnRhdGlvbiAoQGRlZm1hYykuCkBtYWNybyBvdmFye3Zhcm5hbWV9CkBye1t9QHZhcntcdmFy bmFtZVx9QHJ7XX0KQGVuZCBtYWNybwoKQHNldCBQQUNLQUdFX0JVR1JFUE9SVCBidWctYXV0b21h a2VAQGdudS5vcmcKCkBjb3B5aW5nCgpUaGlzIG1hbnVhbCBpcyBmb3IgR05VIEF1dG9tYWtlICh2 ZXJzaW9uIEB2YWx1ZXtWRVJTSU9OfSwKQHZhbHVle1VQREFURUR9KSwgYSBwcm9ncmFtIHRoYXQg Y3JlYXRlcyBHTlUgc3RhbmRhcmRzLWNvbXBsaWFudApNYWtlZmlsZXMgZnJvbSB0ZW1wbGF0ZSBm aWxlcy4KCkNvcHlyaWdodCBAY29weXJpZ2h0e30gMTk5NS0tMjAyNiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KCkBxdW90YXRpb24KUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHks IGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CnVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLApWZXJzaW9uIDEuMyBvciBhbnkg bGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbjsg d2l0aCBubyBJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggbm8gRnJvbnQtQ292ZXIgdGV4dHMsCmFu ZCB3aXRoIG5vIEJhY2stQ292ZXIgVGV4dHMuICBBIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaXMgaW5j bHVkZWQgaW4gdGhlCnNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExp Y2Vuc2UuJycKCkBlbmQgcXVvdGF0aW9uCkBlbmQgY29weWluZwoKQGRpcmNhdGVnb3J5IFNvZnR3 YXJlIGRldmVsb3BtZW50CkBkaXJlbnRyeQoqIEF1dG9tYWtlOiAoYXV0b21ha2UpLiAgICAgICAg IE1ha2luZyBHTlUgc3RhbmRhcmRzLWNvbXBsaWFudCBNYWtlZmlsZXMuCkBlbmQgZGlyZW50cnkK CkBkaXJjYXRlZ29yeSBJbmRpdmlkdWFsIHV0aWxpdGllcwpAZGlyZW50cnkKKiBhY2xvY2FsLWlu dm9jYXRpb246IChhdXRvbWFrZSlhY2xvY2FsIEludm9jYXRpb24uICAgR2VuZXJhdGluZyBhY2xv Y2FsLm00LgoqIGF1dG9tYWtlLWludm9jYXRpb246IChhdXRvbWFrZSlhdXRvbWFrZSBJbnZvY2F0 aW9uLiBHZW5lcmF0aW5nIE1ha2VmaWxlLmluLgpAZW5kIGRpcmVudHJ5CgpAdGl0bGVwYWdlCkB0 aXRsZSBHTlUgQXV0b21ha2UKQHN1YnRpdGxlIEZvciB2ZXJzaW9uIEB2YWx1ZXtWRVJTSU9OfSwg QHZhbHVle1VQREFURUR9CkBhdXRob3IgRGF2aWQgTWFjS2VuemllCkBhdXRob3IgVG9tIFRyb21l eQpAYXV0aG9yIEFsZXhhbmRyZSBEdXJldC1MdXR6CkBhdXRob3IgUmFsZiBXaWxkZW5odWVzCkBh dXRob3IgU3RlZmFubyBMYXR0YXJpbmkKQHBhZ2UKQHZza2lwIDBwdCBwbHVzIDFmaWxsbApAaW5z ZXJ0Y29weWluZwpAZW5kIHRpdGxlcGFnZQoKQHNob3J0Y29udGVudHMKQGNvbnRlbnRzCgpAYyBX ZSB1c2UgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gZGVmaW5lIGluZGljZXM6CkBjICAgQGNpbmRl eCAgIGNvbmNlcHRzLCBhbmQgYW55dGhpbmcgdGhhdCBkb2VzIG5vdCBmaXQgZWxzZXdoZXJlCkBj ICAgQHZpbmRleCAgIE1ha2VmaWxlIHZhcmlhYmxlcwpAYyAgIEB0cmluZGV4ICB0YXJnZXRzCkBj ICAgQGFjaW5kZXggIEF1dG9jb25mL0F1dG9tYWtlL0xpYnRvb2wvTTQvLi4uIG1hY3JvcwpAYyAg IEBvcGluZGV4ICB0b29sIG9wdGlvbnMKCkBjIERlZmluZSBhbiBpbmRleCBvZiBjb25maWd1cmUg bWFjcm9zLgpAZGVmY29kZWluZGV4IGFjCkBjIERlZmluZSBhbiBpbmRleCBvZiBvcHRpb25zLgpA ZGVmY29kZWluZGV4IG9wCkBjIERlZmluZSBhbiBpbmRleCBvZiB0YXJnZXRzLgpAZGVmY29kZWlu ZGV4IHRyCkBjIERlZmluZSBhbiBpbmRleCBvZiBjb21tYW5kcy4KQGRlZmNvZGVpbmRleCBjbQoK QGMgUHV0IHRoZSBtYWNyb3MgaW4gdGhlIGZ1bmN0aW9uIGluZGV4LgpAc3luY29kZWluZGV4IGFj IGZuCgpAYyBQdXQgZXZlcnl0aGluZyBlbHNlIGludG8gb25lIGluZGV4IChhcmJpdHJhcmlseSBj aG9zZW4gdG8gYmUgdGhlCkBjIGNvbmNlcHQgaW5kZXgpLgpAc3luY29kZWluZGV4IG9wIGNwCkBz eW5jb2RlaW5kZXggdHIgY3AKQHN5bmNvZGVpbmRleCBjbSBjcAoKQGlmbm90dGV4CkBub2RlIFRv cApAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKQHRvcCBHTlUgQXV0 b21ha2UKCkBpbnNlcnRjb3B5aW5nCgpAbWVudQoqIEludHJvZHVjdGlvbjo6ICAgICAgICAgICAg ICAgIEF1dG9tYWtlJ3MgcHVycG9zZQoqIEF1dG90b29scyBJbnRyb2R1Y3Rpb246OiAgICAgIEFu IEludHJvZHVjdGlvbiB0byB0aGUgQXV0b3Rvb2xzCiogR2VuZXJhbGl0aWVzOjogICAgICAgICAg ICAgICAgR2VuZXJhbCBpZGVhcwoqIEV4YW1wbGVzOjogICAgICAgICAgICAgICAgICAgIFNvbWUg ZXhhbXBsZSBwYWNrYWdlcwoqIGF1dG9tYWtlIEludm9jYXRpb246OiAgICAgICAgIENyZWF0aW5n IGEgTWFrZWZpbGUuaW4KKiBjb25maWd1cmU6OiAgICAgICAgICAgICAgICAgICBTY2FubmluZyBj b25maWd1cmUuYWMsIHVzaW5nIGFjbG9jYWwKKiBEaXJlY3Rvcmllczo6ICAgICAgICAgICAgICAg ICBEZWNsYXJpbmcgc3ViZGlyZWN0b3JpZXMKKiBQcm9ncmFtczo6ICAgICAgICAgICAgICAgICAg ICBCdWlsZGluZyBwcm9ncmFtcyBhbmQgbGlicmFyaWVzCiogT3RoZXIgT2JqZWN0czo6ICAgICAg ICAgICAgICAgT3RoZXIgZGVyaXZlZCBvYmplY3RzCiogT3RoZXIgR05VIFRvb2xzOjogICAgICAg ICAgICAgT3RoZXIgR05VIFRvb2xzCiogRG9jdW1lbnRhdGlvbjo6ICAgICAgICAgICAgICAgQnVp bGRpbmcgZG9jdW1lbnRhdGlvbgoqIEluc3RhbGw6OiAgICAgICAgICAgICAgICAgICAgIFdoYXQg Z2V0cyBpbnN0YWxsZWQKKiBDbGVhbjo6ICAgICAgICAgICAgICAgICAgICAgICBXaGF0IGdldHMg Y2xlYW5lZAoqIERpc3Q6OiAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgZ29lcyBpbiBhIGRp c3RyaWJ1dGlvbgoqIFRlc3RzOjogICAgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIHRl c3Qgc3VpdGVzCiogUmVidWlsZGluZzo6ICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlYnVp bGRpbmcgb2YgTWFrZWZpbGUKKiBPcHRpb25zOjogICAgICAgICAgICAgICAgICAgICBDaGFuZ2lu ZyBBdXRvbWFrZSdzIGJlaGF2aW9yCiogTWlzY2VsbGFuZW91czo6ICAgICAgICAgICAgICAgTWlz Y2VsbGFuZW91cyBydWxlcwoqIEluY2x1ZGU6OiAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGlu ZyBleHRyYSBmaWxlcyBpbiBhbiBBdXRvbWFrZSB0ZW1wbGF0ZQoqIENvbmRpdGlvbmFsczo6ICAg ICAgICAgICAgICAgIENvbmRpdGlvbmFscwoqIFNpbGVuY2luZyBNYWtlOjogICAgICAgICAgICAg IE9idGFpbiBsZXNzIHZlcmJvc2Ugb3V0cHV0IGZyb20gQGNvbW1hbmR7bWFrZX0KKiBOb3QgRW5v dWdoOjogICAgICAgICAgICAgICAgICBXaGVuIEF1dG9tYWtlIGlzIG5vdCBFbm91Z2gKKiBEaXN0 cmlidXRpbmc6OiAgICAgICAgICAgICAgICBEaXN0cmlidXRpbmcgdGhlIE1ha2VmaWxlLmluCiog QVBJIFZlcnNpb25pbmc6OiAgICAgICAgICAgICAgQWJvdXQgY29tcGF0aWJpbGl0eSBiZXR3ZWVu IEF1dG9tYWtlIHZlcnNpb25zCiogVXBncmFkaW5nOjogICAgICAgICAgICAgICAgICAgVXBncmFk aW5nIHRvIGEgTmV3ZXIgQXV0b21ha2UgVmVyc2lvbgoqIEZBUTo6ICAgICAgICAgICAgICAgICAg ICAgICAgIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zCiogQ29weWluZyBUaGlzIE1hbnVhbDo6 ICAgICAgICAgSG93IHRvIG1ha2UgY29waWVzIG9mIHRoaXMgbWFudWFsCiogSW5kaWNlczo6ICAg ICAgICAgICAgICAgICAgICAgSW5kaWNlcyBvZiB2YXJpYWJsZXMsIG1hY3JvcywgYW5kIGNvbmNl cHRzCgpAZGV0YWlsbWVudQogLS0tIFRoZSBEZXRhaWxlZCBOb2RlIExpc3RpbmcgLS0tCgpBbiBJ bnRyb2R1Y3Rpb24gdG8gdGhlIEF1dG90b29scwoKKiBHTlUgQnVpbGQgU3lzdGVtOjogICAgICAg ICAgICBJbnRyb2R1Y2luZyB0aGUgR05VIEJ1aWxkIFN5c3RlbQoqIFVzZSBDYXNlczo6ICAgICAg ICAgICAgICAgICAgIFVzZSBDYXNlcyBmb3IgdGhlIEdOVSBCdWlsZCBTeXN0ZW0KKiBXaHkgQXV0 b3Rvb2xzOjogICAgICAgICAgICAgICBIb3cgQXV0b3Rvb2xzIEhlbHAKKiBIZWxsbyBXb3JsZDo6 ICAgICAgICAgICAgICAgICBBIFNtYWxsIEhlbGxvIFdvcmxkIFBhY2thZ2UKClVzZSBDYXNlcyBm b3IgdGhlIEdOVSBCdWlsZCBTeXN0ZW0KCiogQmFzaWMgSW5zdGFsbGF0aW9uOjogICAgICAgICAg Q29tbW9uIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUKKiBTdGFuZGFyZCBUYXJnZXRzOjogICAgICAg ICAgICBBIGxpc3Qgb2Ygc3RhbmRhcmQgTWFrZWZpbGUgdGFyZ2V0cwoqIFN0YW5kYXJkIERpcmVj dG9yeSBWYXJpYWJsZXM6OiAgQSBsaXN0IG9mIHN0YW5kYXJkIGRpcmVjdG9yeSB2YXJpYWJsZXMK KiBTdGFuZGFyZCBDb25maWd1cmF0aW9uIFZhcmlhYmxlczo6ICBVc2luZyBjb25maWd1cmF0aW9u IHZhcmlhYmxlcwoqIGNvbmZpZy5zaXRlOjogICAgICAgICAgICAgICAgIFVzaW5nIGEgY29uZmln LnNpdGUgZmlsZQoqIFZQQVRIIEJ1aWxkczo6ICAgICAgICAgICAgICAgIFBhcmFsbGVsIGJ1aWxk IHRyZWVzCiogVHdvLVBhcnQgSW5zdGFsbDo6ICAgICAgICAgICAgSW5zdGFsbGluZyBkYXRhIGFu ZCBwcm9ncmFtcyBzZXBhcmF0ZWx5CiogQ3Jvc3MtQ29tcGlsYXRpb246OiAgICAgICAgICAgQnVp bGRpbmcgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMKKiBSZW5hbWluZzo6ICAgICAgICAgICAgICAg ICAgICBSZW5hbWluZyBwcm9ncmFtcyBhdCBpbnN0YWxsIHRpbWUKKiBERVNURElSOjogICAgICAg ICAgICAgICAgICAgICBCdWlsZGluZyBiaW5hcnkgcGFja2FnZXMgd2l0aCBERVNURElSCiogUHJl cGFyaW5nIERpc3RyaWJ1dGlvbnM6OiAgICAgUm9sbGluZyBvdXQgdGFyYmFsbHMKKiBEZXBlbmRl bmN5IFRyYWNraW5nOjogICAgICAgICBBdXRvbWF0aWMgZGVwZW5kZW5jeSB0cmFja2luZwoqIE5l c3RlZCBQYWNrYWdlczo6ICAgICAgICAgICAgIFRoZSBHTlUgQnVpbGQgU3lzdGVtcyBjYW4gYmUg bmVzdGVkCgpBIFNtYWxsIEhlbGxvIFdvcmxkCgoqIENyZWF0aW5nIGFtaGVsbG86OiAgICAgICAg ICAgIENyZWF0ZSBAZmlsZXthbWhlbGxvLTEuMC50YXIuZ3p9IGZyb20gc2NyYXRjaAoqIGFtaGVs bG8ncyBjb25maWd1cmUuYWMgU2V0dXAgRXhwbGFpbmVkOjoKKiBhbWhlbGxvJ3MgTWFrZWZpbGUu YW0gU2V0dXAgRXhwbGFpbmVkOjoKCkdlbmVyYWwgaWRlYXMKCiogR2VuZXJhbCBPcGVyYXRpb246 OiAgICAgICAgICAgR2VuZXJhbCBvcGVyYXRpb24gb2YgQXV0b21ha2UKKiBTdHJpY3RuZXNzOjog ICAgICAgICAgICAgICAgICBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hlY2tpbmcKKiBVbmlmb3Jt OjogICAgICAgICAgICAgICAgICAgICBUaGUgVW5pZm9ybSBOYW1pbmcgU2NoZW1lCiogTGVuZ3Ro IExpbWl0YXRpb25zOjogICAgICAgICAgU3RheWluZyBiZWxvdyB0aGUgY29tbWFuZCBsaW5lIGxl bmd0aCBsaW1pdAoqIENhbm9uaWNhbGl6YXRpb246OiAgICAgICAgICAgIEhvdyBkZXJpdmVkIHZh cmlhYmxlcyBhcmUgbmFtZWQKKiBVc2VyIFZhcmlhYmxlczo6ICAgICAgICAgICAgICBWYXJpYWJs ZXMgcmVzZXJ2ZWQgZm9yIHRoZSB1c2VyCiogQXV4aWxpYXJ5IFByb2dyYW1zOjogICAgICAgICAg UHJvZ3JhbXMgYXV0b21ha2UgbWlnaHQgcmVxdWlyZQoKU29tZSBleGFtcGxlIHBhY2thZ2VzCgoq IENvbXBsZXRlOjogICAgICAgICAgICAgICAgICAgIEEgc2ltcGxlIGV4YW1wbGUsIHN0YXJ0IHRv IGZpbmlzaAoqIHRydWU6OiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkaW5nIHRydWUgYW5k IGZhbHNlCgpTY2FubmluZyBAZmlsZXtjb25maWd1cmUuYWN9LCB1c2luZyBAY29tbWFuZHthY2xv Y2FsfQoKKiBSZXF1aXJlbWVudHM6OiAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIHJlcXVp cmVtZW50cwoqIE9wdGlvbmFsOjogICAgICAgICAgICAgICAgICAgIE90aGVyIHRoaW5ncyBBdXRv bWFrZSByZWNvZ25pemVzCiogYWNsb2NhbCBJbnZvY2F0aW9uOjogICAgICAgICAgQXV0by1nZW5l cmF0aW5nIGFjbG9jYWwubTQKKiBNYWNyb3M6OiAgICAgICAgICAgICAgICAgICAgICBBdXRvY29u ZiBtYWNyb3Mgc3VwcGxpZWQgd2l0aCBBdXRvbWFrZQoKQXV0by1nZW5lcmF0aW5nIGFjbG9jYWwu bTQ6IEludm9raW5nIEBjb21tYW5ke2FjbG9jYWx9CgoqIGFjbG9jYWwgT3B0aW9uczo6ICAgICAg ICAgICAgIE9wdGlvbnMgc3VwcG9ydGVkIGJ5IGFjbG9jYWwKKiBNYWNybyBTZWFyY2ggUGF0aDo6 ICAgICAgICAgICBIb3cgYWNsb2NhbCBmaW5kcyAubTQgZmlsZXMKKiBFeHRlbmRpbmcgYWNsb2Nh bDo6ICAgICAgICAgICBXcml0aW5nIHlvdXIgb3duIGFjbG9jYWwgbWFjcm9zCiogTG9jYWwgTWFj cm9zOjogICAgICAgICAgICAgICAgT3JnYW5pemluZyBsb2NhbCBtYWNyb3MKKiBTZXJpYWxzOjog ICAgICAgICAgICAgICAgICAgICBTZXJpYWwgbGluZXMgaW4gQXV0b2NvbmYgbWFjcm9zCiogRnV0 dXJlIG9mIGFjbG9jYWw6OiAgICAgICAgICAgYWNsb2NhbCdzIHNjaGVkdWxlZCBkZWF0aAoKQXV0 b2NvbmYgbWFjcm9zIHN1cHBsaWVkIHdpdGggQXV0b21ha2UKCiogUHVibGljIE1hY3Jvczo6ICAg ICAgICAgICAgICAgTWFjcm9zIHRoYXQgeW91IGNhbiB1c2UuCiogT2Jzb2xldGUgTWFjcm9zOjog ICAgICAgICAgICAgTWFjcm9zIHRoYXQgd2lsbCBzb29uIGJlIHJlbW92ZWQuCiogUHJpdmF0ZSBN YWNyb3M6OiAgICAgICAgICAgICAgTWFjcm9zIHRoYXQgeW91IHNob3VsZCBub3QgdXNlLgoKRGly ZWN0b3JpZXMKCiogU3ViZGlyZWN0b3JpZXM6OiAgICAgICAgICAgICAgQnVpbGRpbmcgc3ViZGly ZWN0b3JpZXMgcmVjdXJzaXZlbHkKKiBDb25kaXRpb25hbCBTdWJkaXJlY3Rvcmllczo6ICBDb25k aXRpb25hbGx5IG5vdCBidWlsZGluZyBkaXJlY3RvcmllcwoqIEFsdGVybmF0aXZlOjogICAgICAg ICAgICAgICAgIFN1YmRpcmVjdG9yaWVzIHdpdGhvdXQgcmVjdXJzaW9uCiogU3VicGFja2FnZXM6 OiAgICAgICAgICAgICAgICAgTmVzdGluZyBwYWNrYWdlcwoKQ29uZGl0aW9uYWwgU3ViZGlyZWN0 b3JpZXMKCiogU1VCRElSUyB2cyBESVNUX1NVQkRJUlM6OiAgICAgVHdvIHNldHMgb2YgZGlyZWN0 b3JpZXMKKiBTdWJkaXJlY3RvcmllcyB3aXRoIEFNX0NPTkRJVElPTkFMOjogIFNwZWNpZnlpbmcg Y29uZGl0aW9uYWwgc3ViZGlyZWN0b3JpZXMKKiBTdWJkaXJlY3RvcmllcyB3aXRoIEFDX1NVQlNU OjogIEFub3RoZXIgd2F5IGZvciBjb25kaXRpb25hbCByZWN1cnNpb24KKiBVbmNvbmZpZ3VyZWQg U3ViZGlyZWN0b3JpZXM6OiAgTm90IGV2ZW4gY3JlYXRpbmcgYSBAc2FtcHtNYWtlZmlsZX0KCkJ1 aWxkaW5nIFByb2dyYW1zIGFuZCBMaWJyYXJpZXMKCiogQSBQcm9ncmFtOjogICAgICAgICAgICAg ICAgICAgQnVpbGRpbmcgYSBwcm9ncmFtCiogQSBMaWJyYXJ5OjogICAgICAgICAgICAgICAgICAg QnVpbGRpbmcgYSBsaWJyYXJ5CiogQSBTaGFyZWQgTGlicmFyeTo6ICAgICAgICAgICAgQnVpbGRp bmcgYSBMaWJ0b29sIGxpYnJhcnkKKiBQcm9ncmFtIGFuZCBMaWJyYXJ5IFZhcmlhYmxlczo6ICBW YXJpYWJsZXMgY29udHJvbGxpbmcgcHJvZ3JhbSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJyYXJ5IGJ1aWxkcwoqIERlZmF1bHQgX1NPVVJDRVM6OiAgICAgICAgICAgIERl ZmF1bHQgc291cmNlIGZpbGVzCiogTElCT0JKUzo6ICAgICAgICAgICAgICAgICAgICAgU3BlY2lh bCBoYW5kbGluZyBmb3IgTElCT0JKUyBhbmQgQUxMT0NBCiogUHJvZ3JhbSBWYXJpYWJsZXM6OiAg ICAgICAgICAgVmFyaWFibGVzIHVzZWQgd2hlbiBidWlsZGluZyBhIHByb2dyYW0KKiBZYWNjIGFu ZCBMZXg6OiAgICAgICAgICAgICAgICBZYWNjIGFuZCBMZXggc3VwcG9ydAoqIEMrKyBTdXBwb3J0 OjogICAgICAgICAgICAgICAgIENvbXBpbGluZyBDKysgc291cmNlcwoqIE9iamVjdGl2ZSBDIFN1 cHBvcnQ6OiAgICAgICAgIENvbXBpbGluZyBPYmplY3RpdmUgQyBzb3VyY2VzCiogT2JqZWN0aXZl IEMrKyBTdXBwb3J0OjogICAgICAgQ29tcGlsaW5nIE9iamVjdGl2ZSBDKysgc291cmNlcwoqIFVu aWZpZWQgUGFyYWxsZWwgQyBTdXBwb3J0OjogIENvbXBpbGluZyBVbmlmaWVkIFBhcmFsbGVsIEMg c291cmNlcwoqIEFzc2VtYmx5IFN1cHBvcnQ6OiAgICAgICAgICAgIENvbXBpbGluZyBhc3NlbWJs eSBzb3VyY2VzCiogRm9ydHJhbiA3NyBTdXBwb3J0OjogICAgICAgICAgQ29tcGlsaW5nIEZvcnRy YW4gNzcgc291cmNlcwoqIEZvcnRyYW4gOXggU3VwcG9ydDo6ICAgICAgICAgIENvbXBpbGluZyBG b3J0cmFuIDl4IHNvdXJjZXMKKiBKYXZhIFN1cHBvcnQgd2l0aCBnY2o6OiAgICAgICBDb21waWxp bmcgSmF2YSBzb3VyY2VzIHVzaW5nIGdjagoqIFZhbGEgU3VwcG9ydDo6ICAgICAgICAgICAgICAg IENvbXBpbGluZyBWYWxhIHNvdXJjZXMKKiBBbGdvbCA2OCBTdXBwb3J0OjogICAgICAgICAgICBD b21waWxpbmcgQWxnb2wgNjggc291cmNlcwoqIFN1cHBvcnQgZm9yIE90aGVyIExhbmd1YWdlczo6 IENvbXBpbGluZyBvdGhlciBsYW5ndWFnZXMKKiBEZXBlbmRlbmNpZXM6OiAgICAgICAgICAgICAg ICBBdXRvbWF0aWMgZGVwZW5kZW5jeSB0cmFja2luZwoqIEVYRUVYVDo6ICAgICAgICAgICAgICAg ICAgICAgIFN1cHBvcnQgZm9yIGV4ZWN1dGFibGUgZXh0ZW5zaW9ucwoKQnVpbGRpbmcgYSBwcm9n cmFtCgoqIFByb2dyYW0gU291cmNlczo6ICAgICAgICAgICAgIERlZmluaW5nIHByb2dyYW0gc291 cmNlcwoqIExpbmtpbmc6OiAgICAgICAgICAgICAgICAgICAgIExpbmtpbmcgd2l0aCBsaWJyYXJp ZXMgb3IgZXh0cmEgb2JqZWN0cwoqIENvbmRpdGlvbmFsIFNvdXJjZXM6OiAgICAgICAgIEhhbmRs aW5nIGNvbmRpdGlvbmFsIHNvdXJjZXMKKiBDb25kaXRpb25hbCBQcm9ncmFtczo6ICAgICAgICBC dWlsZGluZyBhIHByb2dyYW0gY29uZGl0aW9uYWxseQoKQnVpbGRpbmcgYSBTaGFyZWQgTGlicmFy eQoKKiBMaWJ0b29sIENvbmNlcHQ6OiAgICAgICAgICAgICBJbnRyb2R1Y2luZyBMaWJ0b29sCiog TGlidG9vbCBMaWJyYXJpZXM6OiAgICAgICAgICAgRGVjbGFyaW5nIExpYnRvb2wgTGlicmFyaWVz CiogQ29uZGl0aW9uYWwgTGlidG9vbCBMaWJyYXJpZXM6OiAgQnVpbGRpbmcgTGlidG9vbCBMaWJy YXJpZXMgQ29uZGl0aW9uYWxseQoqIENvbmRpdGlvbmFsIExpYnRvb2wgU291cmNlczo6ICBDaG9v c2luZyBMaWJyYXJ5IFNvdXJjZXMgQ29uZGl0aW9uYWxseQoqIExpYnRvb2wgQ29udmVuaWVuY2Ug TGlicmFyaWVzOjogIEJ1aWxkaW5nIENvbnZlbmllbmNlIExpYnRvb2wgTGlicmFyaWVzCiogTGli dG9vbCBNb2R1bGVzOjogICAgICAgICAgICAgQnVpbGRpbmcgTGlidG9vbCBNb2R1bGVzCiogTGli dG9vbCBGbGFnczo6ICAgICAgICAgICAgICAgVXNpbmcgX0xJQkFERCwgX0xERkxBR1MsIGFuZCBf TElCVE9PTEZMQUdTCiogTFRMSUJPQkpTOjogICAgICAgICAgICAgICAgICAgVXNpbmcgJChMVExJ Qk9CSlMpIGFuZCAkKExUQUxMT0NBKQoqIExpYnRvb2wgSXNzdWVzOjogICAgICAgICAgICAgIENv bW1vbiBJc3N1ZXMgUmVsYXRlZCB0byBMaWJ0b29sJ3MgVXNlCgpDb21tb24gSXNzdWVzIFJlbGF0 ZWQgdG8gTGlidG9vbCdzIFVzZQoKKiBFcnJvciByZXF1aXJlZCBmaWxlIGx0bWFpbi5zaCBub3Qg Zm91bmQ6OiAgVGhlIG5lZWQgdG8gcnVuIGxpYnRvb2xpemUKKiBMaWJ0b29sIGxpYnJhcnkgdXNl ZCBidXQgTElCVE9PTCBpcyB1bmRlZmluZWQ6OiAgdGVzdCByZWxlYXNlcyBhbmQgbGlidG9vbGl6 ZQoqIE9iamVjdHMgY3JlYXRlZCBib3RoIHdpdGggbGlidG9vbCBhbmQgd2l0aG91dDo6ICBBdm9p ZCBhIHNwZWNpZmljIGJ1aWxkIHJhY2UKCllhY2MgYW5kIExleCBzdXBwb3J0CgoqIExpbmtpbmcg TXVsdGlwbGUgWWFjYyBQYXJzZXJzOjoKCkZvcnRyYW4gNzcgU3VwcG9ydAoKKiBQcmVwcm9jZXNz aW5nIEZvcnRyYW4gNzc6OiAgICBQcmVwcm9jZXNzaW5nIEZvcnRyYW4gNzcgc291cmNlcwoqIENv bXBpbGluZyBGb3J0cmFuIDc3IEZpbGVzOjogIENvbXBpbGluZyBGb3J0cmFuIDc3IHNvdXJjZXMK KiBNaXhpbmcgRm9ydHJhbiA3NyBXaXRoIEMgYW5kIEMrKzo6ICBNaXhpbmcgRm9ydHJhbiA3NyBX aXRoIEMgYW5kIEMrKwoKTWl4aW5nIEZvcnRyYW4gNzcgV2l0aCBDIGFuZCBDKysKCiogSG93IHRo ZSBMaW5rZXIgaXMgQ2hvc2VuOjogICAgQXV0b21hdGljIGxpbmtlciBzZWxlY3Rpb24KCkZvcnRy YW4gOXggU3VwcG9ydAoKKiBDb21waWxpbmcgRm9ydHJhbiA5eCBGaWxlczo6ICBDb21waWxpbmcg Rm9ydHJhbiA5eCBzb3VyY2VzCgpPdGhlciBEZXJpdmVkIE9iamVjdHMKCiogU2NyaXB0czo6ICAg ICAgICAgICAgICAgICAgICAgRXhlY3V0YWJsZSBzY3JpcHRzCiogSGVhZGVyczo6ICAgICAgICAg ICAgICAgICAgICAgSGVhZGVyIGZpbGVzCiogRGF0YTo6ICAgICAgICAgICAgICAgICAgICAgICAg QXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgZmlsZXMKKiBTb3VyY2VzOjogICAgICAgICAg ICAgICAgICAgICBEZXJpdmVkIHNvdXJjZXMKCkJ1aWx0IFNvdXJjZXMKCiogQnVpbHQgU291cmNl cyBFeGFtcGxlOjogICAgICAgU2V2ZXJhbCB3YXlzIHRvIGhhbmRsZSBidWlsdCBzb3VyY2VzLgoK T3RoZXIgR05VIFRvb2xzCgoqIEVtYWNzIExpc3A6OiAgICAgICAgICAgICAgICAgIEVtYWNzIExp c3AKKiBnZXR0ZXh0OjogICAgICAgICAgICAgICAgICAgICBHZXR0ZXh0CiogTGlidG9vbDo6ICAg ICAgICAgICAgICAgICAgICAgTGlidG9vbAoqIEphdmE6OiAgICAgICAgICAgICAgICAgICAgICAg IEphdmEgYnl0ZWNvZGUgY29tcGlsYXRpb24gKGRlcHJlY2F0ZWQpCiogUHl0aG9uOjogICAgICAg ICAgICAgICAgICAgICAgUHl0aG9uCgpQeXRob24KCiogU3VwcG9ydGVkIFB5dGhvbiB2ZXJzaW9u czo6CgpCdWlsZGluZyBkb2N1bWVudGF0aW9uCgoqIFRleGluZm86OgoqIE1hbiBQYWdlczo6CgpX aGF0IEdldHMgSW5zdGFsbGVkCgoqIEJhc2ljcyBvZiBJbnN0YWxsYXRpb246OiAgICAgIFdoYXQg Z2V0cyBpbnN0YWxsZWQgd2hlcmUKKiBUaGUgVHdvIFBhcnRzIG9mIEluc3RhbGw6OiAgICBJbnN0 YWxsaW5nIGRhdGEgYW5kIHByb2dyYW1zIHNlcGFyYXRlbHkKKiBFeHRlbmRpbmcgSW5zdGFsbGF0 aW9uOjogICAgICBBZGRpbmcgeW91ciBvd24gcnVsZXMgZm9yIGluc3RhbGxhdGlvbgoqIFN0YWdl ZCBJbnN0YWxsczo6ICAgICAgICAgICAgIEluc3RhbGxhdGlvbiBpbiBhIHRlbXBvcmFyeSBsb2Nh dGlvbgoqIEluc3RhbGwgUnVsZXMgZm9yIHRoZSBVc2VyOjogIFVzZWZ1bCBhZGRpdGlvbmFsIHJ1 bGVzCgpXaGF0IEdvZXMgaW4gYSBEaXN0cmlidXRpb24KCiogQmFzaWNzIG9mIERpc3RyaWJ1dGlv bjo6ICAgICAgRmlsZXMgZGlzdHJpYnV0ZWQgYnkgZGVmYXVsdAoqIEZpbmUtZ3JhaW5lZCBEaXN0 cmlidXRpb24gQ29udHJvbDo6ICBAY29kZXtkaXN0X30gYW5kIEBjb2Rle25vZGlzdF99IHByZWZp eGVzCiogVGhlIGRpc3QgSG9vazo6ICAgICAgICAgICAgICAgQSB0YXJnZXQgZm9yIGxhc3QtbWlu dXRlIGRpc3RyaWJ1dGlvbiBjaGFuZ2VzCiogQ2hlY2tpbmcgdGhlIERpc3RyaWJ1dGlvbjo6ICAg QHNhbXB7bWFrZSBkaXN0Y2hlY2t9IGV4cGxhaW5lZAoqIFRoZSBUeXBlcyBvZiBEaXN0cmlidXRp b25zOjogIEEgdmFyaWV0eSBvZiBmb3JtYXRzIGFuZCBjb21wcmVzc2lvbiBtZXRob2RzCgpDaGVj a2luZyB0aGUgRGlzdHJpYnV0aW9uCgoqIERJU1RDSEVDS19DT05GSUdVUkVfRkxBR1M6OiAgT3Zl cnJpZGluZyBjb25maWd1cmUgZmxhZ3MgaW4gZGlzdGNoZWNrLgoqIGRpc3RjaGVjay1ob29rOjog ICAgICAgICAgICAgUnVubmluZyBjb21tYW5kcyBhZnRlciBkaXN0Y2hlY2suCiogZHZpIGFuZCBk aXN0Y2hlY2s6OiAgICAgICAgICBPdmVycmlkaW5nIHRoZSBkaXN0Y2hlY2sgZG9jIHRhcmdldC4K KiBkaXN0Y2xlYW5jaGVjazo6ICAgICAgICAgICAgIEhhbmRsaW5nIGZpbGVzIG5vdCBjbGVhbmVk LgoqIGRpc3R1bmluc3RhbGxjaGVjazo6ICAgICAgICAgT3ZlcnJpZGluZyB0aGUgdW5pbnN0YWxs IGNoZWNrLgoqIEVycm9ycyB3aXRoIGRpc3RjbGVhbjo6CgpTdXBwb3J0IGZvciB0ZXN0IHN1aXRl cwoKKiBHZW5lcmFsaXRpZXMgYWJvdXQgVGVzdGluZzo6ICBDb25jZXB0cyBhbmQgdGVybWlub2xv Z3kgYWJvdXQgdGVzdGluZwoqIFNpbXBsZSBUZXN0czo6ICAgICAgICAgICAgICAgIExpc3Rpbmcg dGVzdCBzY3JpcHRzIGluIEBjb2Rle1RFU1RTfQoqIEN1c3RvbSBUZXN0IERyaXZlcnM6OiAgICAg ICAgIFdyaXRpbmcgYW5kIHVzaW5nIGN1c3RvbSB0ZXN0IGRyaXZlcnMKKiBVc2luZyB0aGUgVEFQ IHRlc3QgcHJvdG9jb2w6OiBJbnRlZ3JhdGluZyB0ZXN0IHNjcmlwdHMgdGhhdCB1c2UgdGhlIFRB UCBwcm90b2NvbAoqIERlamFHbnUgVGVzdHM6OiAgICAgICAgICAgICAgIEludGVyZmFjaW5nIHdp dGggdGhlIEBjb21tYW5ke2RlamFnbnV9IHRlc3RpbmcgZnJhbWV3b3JrCiogSW5zdGFsbCBUZXN0 czo6ICAgICAgICAgICAgICAgUnVubmluZyB0ZXN0cyBvbiBpbnN0YWxsZWQgcGFja2FnZXMKClNp bXBsZSBUZXN0cwoKKiBTY3JpcHRzLWJhc2VkIFRlc3RzdWl0ZXM6OiAgICBBdXRvbWFrZS1zcGVj aWZpYyBjb25jZXB0cyBhbmQgdGVybWlub2xvZ3kKKiBTZXJpYWwgVGVzdCBIYXJuZXNzOjogICAg ICAgICBPbGRlciAoYW5kIGRpc2NvdXJhZ2VkKSBzZXJpYWwgdGVzdCBoYXJuZXNzCiogUGFyYWxs ZWwgVGVzdCBIYXJuZXNzOjogICAgICAgR2VuZXJpYyBjb25jdXJyZW50IHRlc3QgaGFybmVzcwoK U2NyaXB0cy1iYXNlZCBUZXN0c3VpdGVzCgoqIFRlc3RzdWl0ZSBFbnZpcm9ubWVudCBPdmVycmlk ZXM6OgoKQ3VzdG9tIFRlc3QgRHJpdmVycwoKKiBPdmVydmlldyBvZiBDdXN0b20gVGVzdCBEcml2 ZXJzIFN1cHBvcnQ6OgoqIERlY2xhcmluZyBDdXN0b20gVGVzdCBEcml2ZXJzOjoKKiBBUEkgZm9y IEN1c3RvbSBUZXN0IERyaXZlcnM6OgoKQVBJIGZvciBDdXN0b20gVGVzdCBEcml2ZXJzCgoqIENv bW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIHRlc3QgZHJpdmVyczo6CiogTG9nIGZpbGVzIGdlbmVy YXRpb24gYW5kIHRlc3QgcmVzdWx0cyByZWNvcmRpbmc6OgoqIFRlc3RzdWl0ZSBwcm9ncmVzcyBv dXRwdXQ6OgoKVXNpbmcgdGhlIFRBUCB0ZXN0IHByb3RvY29sCgoqIEludHJvZHVjdGlvbiB0byBU QVA6OgoqIFVzZSBUQVAgd2l0aCB0aGUgQXV0b21ha2UgdGVzdCBoYXJuZXNzOjoKKiBJbmNvbXBh dGliaWxpdHkgd2l0aCBvdGhlciBUQVAgcGFyc2VycyBhbmQgZHJpdmVyczo6CiogTGlua3MgYW5k IGV4dGVybmFsIHJlc291cmNlcyBvbiBUQVA6OgoKQ2hhbmdpbmcgQXV0b21ha2UncyBCZWhhdmlv cgoKKiBPcHRpb25zIGdlbmVyYWxpdGllczo6ICAgICAgICBTZW1hbnRpY3Mgb2YgQXV0b21ha2Ug b3B0aW9uCiogTGlzdCBvZiBBdXRvbWFrZSBvcHRpb25zOjogICAgQSBjb21wcmVoZW5zaXZlIGxp c3Qgb2YgQXV0b21ha2Ugb3B0aW9ucwoKTWlzY2VsbGFuZW91cyBSdWxlcwoKKiBUYWdzOjogICAg ICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2luZyB0byBjc2NvcGUsIGV0YWdzIGFuZCBta2lk CiogU3VmZml4ZXM6OiAgICAgICAgICAgICAgICAgICAgSGFuZGxpbmcgbmV3IGZpbGUgZXh0ZW5z aW9ucwoKQ29uZGl0aW9uYWxzCgoqIFVzYWdlIG9mIENvbmRpdGlvbmFsczo6ICAgICAgIERlY2xh cmluZyBjb25kaXRpb25hbCBjb250ZW50CiogTGltaXRzIG9mIENvbmRpdGlvbmFsczo6ICAgICAg RW5jbG9zaW5nIGNvbXBsZXRlIHN0YXRlbWVudHMKClNpbGVuY2luZyBAY29tbWFuZHttYWtlfQoK KiBNYWtlIHZlcmJvc2l0eTo6ICAgICAgICAgICAgICBNYWtlIGlzIHZlcmJvc2UgYnkgZGVmYXVs dAoqIFRyaWNrcyBGb3IgU2lsZW5jaW5nIE1ha2U6OiAgIFN0YW5kYXJkIGFuZCBnZW5lcmljIHdh eXMgdG8gc2lsZW5jZSBtYWtlCiogQXV0b21ha2UgU2lsZW50IFJ1bGVzOjogICAgICAgSG93IEF1 dG9tYWtlIGNhbiBoZWxwIGluIHNpbGVuY2luZyBtYWtlCiogVW5zaWxlbmNpbmcgQXV0b21ha2U6 OiAgICAgICAgU2hvd2luZyBjb21tYW5kcy4KCldoZW4gQXV0b21ha2UgSXNuJ3QgRW5vdWdoCgoq IEV4dGVuZGluZzo6ICAgICAgICAgICAgICAgICAgIEFkZGluZyBuZXcgcnVsZXMgb3Igb3ZlcnJp ZGluZyBleGlzdGluZyBvbmVzLgoqIFRoaXJkLVBhcnR5IE1ha2VmaWxlczo6ICAgICAgIEludGVn cmF0aW5nIE5vbi1BdXRvbWFrZSBAZmlsZXtNYWtlZmlsZX1zLgoKRnJlcXVlbnRseSBBc2tlZCBR dWVzdGlvbnMgYWJvdXQgQXV0b21ha2UKCiogVmVyc2lvbiBDb250cm9sOjogICAgICAgICAgICAg VmVyc2lvbiBjb250cm9sIGFuZCBnZW5lcmF0ZWQgZmlsZXMKKiBtYWludGFpbmVyLW1vZGU6OiAg ICAgICAgICAgICBtaXNzaW5nIGFuZCBBTV9NQUlOVEFJTkVSX01PREUKKiBXaWxkY2FyZHM6OiAg ICAgICAgICAgICAgICAgICBXaHkgZG9lc24ndCBBdXRvbWFrZSBzdXBwb3J0IHdpbGRjYXJkcz8K KiBMaW1pdGF0aW9ucyBvbiBGaWxlIE5hbWVzOjogICBMaW1pdGF0aW9ucyBvbiBzb3VyY2UgYW5k IGluc3RhbGxlZCBmaWxlIG5hbWVzCiogRmxhZyBWYXJpYWJsZXMgT3JkZXJpbmc6OiAgICAgQ0ZM QUdTIHZzLkA6IEFNX0NGTEFHUyB2cy5AOiBtdW1ibGVfQ0ZMQUdTCiogUmVuYW1lZCBPYmplY3Rz OjogICAgICAgICAgICAgV2h5IGFyZSBvYmplY3QgZmlsZXMgc29tZXRpbWVzIHJlbmFtZWQ/Ciog UGVyLU9iamVjdCBGbGFnczo6ICAgICAgICAgICAgSG93IHRvIHNpbXVsYXRlIHBlci1vYmplY3Qg ZmxhZ3M/CiogTXVsdGlwbGUgT3V0cHV0czo6ICAgICAgICAgICAgV3JpdGluZyBydWxlcyBmb3Ig dG9vbHMgd2l0aCBtYW55IG91dHB1dCBmaWxlcwoqIEhhcmQtQ29kZWQgSW5zdGFsbCBQYXRoczo6 ICAgIEluc3RhbGxpbmcgdG8gaGFyZC1jb2RlZCBsb2NhdGlvbnMKKiBEZWJ1Z2dpbmcgTWFrZSBS dWxlczo6ICAgICAgICBTdHJhdGVnaWVzIHdoZW4gdGhpbmdzIGRvbid0IHdvcmsgYXMgZXhwZWN0 ZWQKKiBSZXBvcnRpbmcgQnVnczo6ICAgICAgICAgICAgICBGZWVkYmFjayBvbiBidWdzIGFuZCBm ZWF0dXJlIHJlcXVlc3RzCgpDb3B5aW5nIFRoaXMgTWFudWFsCgoqIEdOVSBGcmVlIERvY3VtZW50 YXRpb24gTGljZW5zZTo6ICBMaWNlbnNlIGZvciBjb3B5aW5nIHRoaXMgbWFudWFsCgpJbmRpY2Vz CgoqIE1hY3JvIEluZGV4OjogICAgICAgICAgICAgICAgIEluZGV4IG9mIEF1dG9jb25mIG1hY3Jv cwoqIFZhcmlhYmxlIEluZGV4OjogICAgICAgICAgICAgIEluZGV4IG9mIE1ha2VmaWxlIHZhcmlh YmxlcwoqIEdlbmVyYWwgSW5kZXg6OiAgICAgICAgICAgICAgIEdlbmVyYWwgaW5kZXgKCkBlbmQg ZGV0YWlsbWVudQpAZW5kIG1lbnUKCkBlbmQgaWZub3R0ZXgKCgpAbm9kZSBJbnRyb2R1Y3Rpb24K QGNoYXB0ZXIgSW50cm9kdWN0aW9uCgpBdXRvbWFrZSBpcyBhIHRvb2wgZm9yIGF1dG9tYXRpY2Fs bHkgZ2VuZXJhdGluZyBAZmlsZXtNYWtlZmlsZS5pbn1zCmZyb20gZmlsZXMgY2FsbGVkIEBmaWxl e01ha2VmaWxlLmFtfS4gIEVhY2ggQGZpbGV7TWFrZWZpbGUuYW19IGlzCmJhc2ljYWxseSBhIHNl cmllcyBvZiBAY29tbWFuZHttYWtlfSB2YXJpYWJsZQpkZWZpbml0aW9uc0Bmb290bm90ZXtUaGVz ZSB2YXJpYWJsZXMgYXJlIGFsc28gY2FsbGVkIEBkZm57bWFrZSBtYWNyb3N9CmluIE1ha2UgdGVy bWlub2xvZ3ksIGhvd2V2ZXIgaW4gdGhpcyBtYW51YWwgd2UgcmVzZXJ2ZSB0aGUgdGVybQpAZGZu e21hY3JvfSBmb3IgQXV0b2NvbmYncyBtYWNyb3MufSwgd2l0aCBydWxlcyBiZWluZyB0aHJvd24g aW4Kb2NjYXNpb25hbGx5LiAgVGhlIGdlbmVyYXRlZCBAZmlsZXtNYWtlZmlsZS5pbn1zIGFyZSBj b21wbGlhbnQgd2l0aAp0aGUgR05VIE1ha2VmaWxlIHN0YW5kYXJkcy4KCkBjaW5kZXggR05VIE1h a2VmaWxlIHN0YW5kYXJkcwoKVGhlIEdOVSBNYWtlZmlsZSBTdGFuZGFyZHMgRG9jdW1lbnQKKEBw eHJlZntNYWtlZmlsZSBDb252ZW50aW9ucywgLCAsIHN0YW5kYXJkcywgVGhlIEdOVSBDb2Rpbmcg U3RhbmRhcmRzfSkKaXMgbG9uZywgY29tcGxpY2F0ZWQsIGFuZCBzdWJqZWN0IHRvIGNoYW5nZS4g IFRoZSBnb2FsIG9mIEF1dG9tYWtlIGlzIHRvCnJlbW92ZSB0aGUgYnVyZGVuIG9mIE1ha2VmaWxl IG1haW50ZW5hbmNlIGZyb20gdGhlIGJhY2sgb2YgdGhlCmluZGl2aWR1YWwgR05VIG1haW50YWlu ZXIgKGFuZCBwdXQgaXQgb24gdGhlIGJhY2sgb2YgdGhlIEF1dG9tYWtlCm1haW50YWluZXJzKS4K ClRoZSB0eXBpY2FsIEF1dG9tYWtlIGlucHV0IGZpbGUgaXMgc2ltcGx5IGEgc2VyaWVzIG9mIHZh cmlhYmxlIGRlZmluaXRpb25zLgpFYWNoIHN1Y2ggZmlsZSBpcyBwcm9jZXNzZWQgdG8gY3JlYXRl IGEgQGZpbGV7TWFrZWZpbGUuaW59LgoKQGNpbmRleCBDb25zdHJhaW50cyBvZiBBdXRvbWFrZQpA Y2luZGV4IEF1dG9tYWtlIGNvbnN0cmFpbnRzCgpBdXRvbWFrZSBkb2VzIGNvbnN0cmFpbiBhIHBy b2plY3QgaW4gY2VydGFpbiB3YXlzOyBmb3IgaW5zdGFuY2UsIGl0CmFzc3VtZXMgdGhhdCB0aGUg cHJvamVjdCB1c2VzIEF1dG9jb25mIChAcHhyZWZ7VG9wLCAsIEludHJvZHVjdGlvbiwKYXV0b2Nv bmYsIFRoZSBBdXRvY29uZiBNYW51YWx9KSwgYW5kIGVuZm9yY2VzIGNlcnRhaW4gcmVzdHJpY3Rp b25zIG9uCnRoZSBAZmlsZXtjb25maWd1cmUuYWN9IGNvbnRlbnRzLgoKQGNpbmRleCBBdXRvbWFr ZSByZXF1aXJlbWVudHMKQGNpbmRleCBSZXF1aXJlbWVudHMsIEF1dG9tYWtlCgpBdXRvbWFrZSBy ZXF1aXJlcyBAY29tbWFuZHtwZXJsfSBpbiBvcmRlciB0byBnZW5lcmF0ZSB0aGUKQGZpbGV7TWFr ZWZpbGUuaW59cy4gIEhvd2V2ZXIsIHRoZSBkaXN0cmlidXRpb25zIGNyZWF0ZWQgYnkgQXV0b21h a2UgYXJlCmZ1bGx5IEdOVSBzdGFuZGFyZHMtY29tcGxpYW50LCBhbmQgZG8gbm90IHJlcXVpcmUg QGNvbW1hbmR7cGVybH0gaW4gb3JkZXIKdG8gYmUgYnVpbHQuCgpGb3IgbW9yZSBpbmZvcm1hdGlv biBvbiBidWcgcmVwb3J0cywgQHhyZWZ7UmVwb3J0aW5nIEJ1Z3N9LgoKQG5vZGUgQXV0b3Rvb2xz IEludHJvZHVjdGlvbgpAY2hhcHRlciBBbiBJbnRyb2R1Y3Rpb24gdG8gdGhlIEF1dG90b29scwoK SWYgeW91IGFyZSBuZXcgdG8gQXV0b21ha2UsIG1heWJlIHlvdSBrbm93IHRoYXQgaXQgaXMgcGFy dCBvZiBhIHNldCBvZgp0b29scyBjYWxsZWQgQGVtcGh7VGhlIEF1dG90b29sc30uICBNYXliZSB5 b3UndmUgYWxyZWFkeSBkZWx2ZWQgaW50byBhCnBhY2thZ2UgZnVsbCBvZiBmaWxlcyBuYW1lZCBA ZmlsZXtjb25maWd1cmV9LCBAZmlsZXtjb25maWd1cmUuYWN9LApAZmlsZXtNYWtlZmlsZS5pbn0s IEBmaWxle01ha2VmaWxlLmFtfSwgQGZpbGV7YWNsb2NhbC5tNH0sIEBkb3Rze30sCnNvbWUgb2Yg dGhlbSBjbGFpbWluZyB0byBiZSBAZW1waHtnZW5lcmF0ZWQgYnl9IEF1dG9jb25mIG9yIEF1dG9t YWtlLgpCdXQgdGhlIGV4YWN0IHB1cnBvc2Ugb2YgdGhlc2UgZmlsZXMgYW5kIHRoZWlyIHJlbGF0 aW9ucyBpcyBwcm9iYWJseQpmdXp6eS4gIFRoZSBnb2FsIG9mIHRoaXMgY2hhcHRlciBpcyB0byBp bnRyb2R1Y2UgeW91IHRvIHRoaXMgbWFjaGluZXJ5LAp0byBzaG93IHlvdSBob3cgaXQgd29ya3Mg YW5kIGhvdyBwb3dlcmZ1bCBpdCBpcy4gIElmIHlvdSd2ZSBuZXZlcgppbnN0YWxsZWQgb3Igc2Vl biBzdWNoIGEgcGFja2FnZSwgZG8gbm90IHdvcnJ5OiB0aGlzIGNoYXB0ZXIgd2lsbCB3YWxrCnlv dSB0aHJvdWdoIGl0LgoKSWYgeW91IG5lZWQgc29tZSB0ZWFjaGluZyBtYXRlcmlhbCwgbW9yZSBp bGx1c3RyYXRpb25zLCBvciBhIGxlc3MKQGNvbW1hbmR7YXV0b21ha2V9LWNlbnRlcmVkIGNvbnRp bnVhdGlvbiwgc29tZSBzbGlkZXMgZm9yIHRoaXMKaW50cm9kdWN0aW9uIGFyZSBhdmFpbGFibGUg aW4gQWxleGFuZHJlIER1cmV0LUx1dHoncwpAdXJlZntodHRwczovL3d3dy5scmRlLmVwaXRhLmZy L0AvfmFkbC9AL2F1dG90b29scy5odG1sLApBdXRvdG9vbHMgVHV0b3JpYWx9LgpUaGlzIGNoYXB0 ZXIgaXMgdGhlIHdyaXR0ZW4gdmVyc2lvbiBvZiB0aGUgZmlyc3QgcGFydCBvZiBoaXMgdHV0b3Jp YWwuCgpAbWVudQoqIEdOVSBCdWlsZCBTeXN0ZW06OiAgICAgICAgICAgIEludHJvZHVjaW5nIHRo ZSBHTlUgQnVpbGQgU3lzdGVtCiogVXNlIENhc2VzOjogICAgICAgICAgICAgICAgICAgVXNlIENh c2VzIGZvciB0aGUgR05VIEJ1aWxkIFN5c3RlbQoqIFdoeSBBdXRvdG9vbHM6OiAgICAgICAgICAg ICAgIEhvdyBBdXRvdG9vbHMgSGVscAoqIEhlbGxvIFdvcmxkOjogICAgICAgICAgICAgICAgIEEg U21hbGwgSGVsbG8gV29ybGQgUGFja2FnZQpAZW5kIG1lbnUKCkBub2RlIEdOVSBCdWlsZCBTeXN0 ZW0KQHNlY3Rpb24gSW50cm9kdWNpbmcgdGhlIEdOVSBCdWlsZCBTeXN0ZW0KQGNpbmRleCBHTlUg QnVpbGQgU3lzdGVtLCBpbnRyb2R1Y3Rpb24KCkl0IGlzIGEgdHJ1dGggdW5pdmVyc2FsbHkgYWNr bm93bGVkZ2VkLCB0aGF0IGFzIGEgZGV2ZWxvcGVyIGluCnBvc3Nlc3Npb24gb2YgYSBuZXcgcGFj a2FnZSwgeW91IG11c3QgYmUgaW4gd2FudCBvZiBhIGJ1aWxkIHN5c3RlbS4KCkluIHRoZSBVbml4 IHdvcmxkLCBzdWNoIGEgYnVpbGQgc3lzdGVtIGlzIHRyYWRpdGlvbmFsbHkgYWNoaWV2ZWQgdXNp bmcKdGhlIGNvbW1hbmQgQGNvbW1hbmR7bWFrZX0gKEBweHJlZntUb3AsICwgT3ZlcnZpZXcsIG1h a2UsIFRoZSBHTlUgTWFrZQpNYW51YWx9KS4gIFlvdSBleHByZXNzIHRoZSByZWNpcGUgdG8gYnVp bGQgeW91ciBwYWNrYWdlIGluIGEKQGZpbGV7TWFrZWZpbGV9LiAgVGhpcyBmaWxlIGlzIGEgc2V0 IG9mIHJ1bGVzIHRvIGJ1aWxkIHRoZSBmaWxlcyBpbgp0aGUgcGFja2FnZS4gIEZvciBpbnN0YW5j ZSB0aGUgcHJvZ3JhbSBAZmlsZXtwcm9nfSBtYXkgYmUgYnVpbHQgYnkKcnVubmluZyB0aGUgbGlu a2VyIG9uIHRoZSBmaWxlcyBAZmlsZXttYWluLm99LCBAZmlsZXtmb28ub30sIGFuZApAZmlsZXti YXIub307IHRoZSBmaWxlIEBmaWxle21haW4ub30gbWF5IGJlIGJ1aWx0IGJ5IHJ1bm5pbmcgdGhl CmNvbXBpbGVyIG9uIEBmaWxle21haW4uY307IGV0Yy4gIEVhY2ggdGltZSBAY29tbWFuZHttYWtl fSBpcyBydW4sIGl0CnJlYWRzIEBmaWxle01ha2VmaWxlfSwgY2hlY2tzIHRoZSBleGlzdGVuY2Ug YW5kIG1vZGlmaWNhdGlvbiB0aW1lIG9mCnRoZSBmaWxlcyBtZW50aW9uZWQsIGRlY2lkZXMgd2hh dCBmaWxlcyBuZWVkIHRvIGJlIGJ1aWx0IChvciByZWJ1aWx0KSwKYW5kIHJ1bnMgdGhlIGFzc29j aWF0ZWQgY29tbWFuZHMuCgpXaGVuIGEgcGFja2FnZSBuZWVkcyB0byBiZSBidWlsdCBvbiBhIGRp ZmZlcmVudCBwbGF0Zm9ybSB0aGFuIHRoZSBvbmUKaXQgd2FzIGRldmVsb3BlZCBvbiwgaXRzIEBm aWxle01ha2VmaWxlfSB1c3VhbGx5IG5lZWRzIHRvIGJlIGFkanVzdGVkLgpGb3IgaW5zdGFuY2Ug dGhlIGNvbXBpbGVyIG1heSBoYXZlIGFub3RoZXIgbmFtZSBvciByZXF1aXJlIG1vcmUKb3B0aW9u cy4gIEluIDE5OTEsIERhdmlkIEouIE1hY0tlbnppZSBnb3QgdGlyZWQgb2YgY3VzdG9taXppbmcK QGZpbGV7TWFrZWZpbGV9IGZvciB0aGUgMjAgcGxhdGZvcm1zIGhlIGhhZCB0byBkZWFsIHdpdGgu ICBJbnN0ZWFkLCBoZQpoYW5kY3JhZnRlZCBhIGxpdHRsZSBzaGVsbCBzY3JpcHQgY2FsbGVkIEBm aWxle2NvbmZpZ3VyZX0gdG8KYXV0b21hdGljYWxseSBhZGp1c3QgdGhlIEBmaWxle01ha2VmaWxl fSAoQHB4cmVme0dlbmVzaXMsICwgR2VuZXNpcywKYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51 YWx9KS4gIENvbXBpbGluZyBoaXMgcGFja2FnZSB3YXMgbm93CmFzIHNpbXBsZSBhcyBydW5uaW5n IEBjb2Rley4vY29uZmlndXJlICYmIG1ha2V9LgoKQGNpbmRleCBHTlUgQ29kaW5nIFN0YW5kYXJk cwoKVG9kYXkgdGhpcyBwcm9jZXNzIGhhcyBiZWVuIHN0YW5kYXJkaXplZCBpbiB0aGUgR05VIHBy b2plY3QuICBUaGUgR05VCkNvZGluZyBTdGFuZGFyZHMgKEBweHJlZntNYW5hZ2luZyBSZWxlYXNl cywgVGhlIFJlbGVhc2UgUHJvY2VzcywgLApzdGFuZGFyZHMsIFRoZSBHTlUgQ29kaW5nIFN0YW5k YXJkc30pIGV4cGxhaW5zIGhvdyBlYWNoIHBhY2thZ2Ugb2YgdGhlCkdOVSBwcm9qZWN0IHNob3Vs ZCBoYXZlIGEgQGZpbGV7Y29uZmlndXJlfSBzY3JpcHQsIGFuZCB0aGUgbWluaW1hbAppbnRlcmZh Y2UgaXQgc2hvdWxkIGhhdmUuICBUaGUgQGZpbGV7TWFrZWZpbGV9IHRvbyBzaG91bGQgZm9sbG93 IHNvbWUKZXN0YWJsaXNoZWQgY29udmVudGlvbnMuICBUaGUgcmVzdWx0PyAgQSB1bmlmaWVkIGJ1 aWxkIHN5c3RlbSB0aGF0Cm1ha2VzIGFsbCBwYWNrYWdlcyBhbG1vc3QgaW5kaXN0aW5ndWlzaGFi bGUgYnkgdGhlIGluc3RhbGxlci4gIEluIGl0cwpzaW1wbGVzdCBzY2VuYXJpbywgYWxsIHRoZSBp bnN0YWxsZXIgaGFzIHRvIGRvIGlzIHRvIHVucGFjayB0aGUKcGFja2FnZSwgcnVuIEBjb2Rley4v Y29uZmlndXJlICYmIG1ha2UgJiYgbWFrZSBpbnN0YWxsfSwgYW5kIHJlcGVhdAp3aXRoIHRoZSBu ZXh0IHBhY2thZ2UgdG8gaW5zdGFsbC4KCldlIGNhbGwgdGhpcyBidWlsZCBzeXN0ZW0gdGhlIEBk Zm57R05VIEJ1aWxkIFN5c3RlbX0sIHNpbmNlIGl0IHdhcwpncm93biBvdXQgb2YgdGhlIEdOVSBw cm9qZWN0LiAgSG93ZXZlciwgaXQgaXMgdXNlZCBieSBhIHZhc3QgbnVtYmVyIG9mCm90aGVyIHBh Y2thZ2VzOiBmb2xsb3dpbmcgYW55IGV4aXN0aW5nIGNvbnZlbnRpb24gaGFzIGl0cyBhZHZhbnRh Z2VzLgoKQGNpbmRleCBBdXRvdG9vbHMsIGludHJvZHVjdGlvbgoKVGhlIEF1dG90b29scyBhcmUg dG9vbHMgdGhhdCB3aWxsIGNyZWF0ZSBhIEdOVSBCdWlsZCBTeXN0ZW0gZm9yIHlvdXIKcGFja2Fn ZS4gIEF1dG9jb25mIG1vc3RseSBmb2N1c2VzIG9uIEBmaWxle2NvbmZpZ3VyZX0gYW5kIEF1dG9t YWtlIG9uCkBmaWxle01ha2VmaWxlfXMuICBJdCBpcyBlbnRpcmVseSBwb3NzaWJsZSB0byBjcmVh dGUgYSBHTlUgQnVpbGQKU3lzdGVtIHdpdGhvdXQgdGhlIGhlbHAgb2YgdGhlc2UgdG9vbHMsIGJ1 dCBpdCBpcyByYXRoZXIgYnVyZGVuc29tZQphbmQgZXJyb3ItcHJvbmUuICBXZSB3aWxsIGRpc2N1 c3MgdGhpcyBhZ2FpbiBhZnRlciBzb21lIGlsbHVzdHJhdGlvbgpvZiB0aGUgR05VIEJ1aWxkIFN5 c3RlbSBpbiBhY3Rpb24uCgpAbm9kZSBVc2UgQ2FzZXMKQHNlY3Rpb24gVXNlIENhc2VzIGZvciB0 aGUgR05VIEJ1aWxkIFN5c3RlbQpAY2luZGV4IEdOVSBCdWlsZCBTeXN0ZW0sIHVzZSBjYXNlcwpA Y2luZGV4IEdOVSBCdWlsZCBTeXN0ZW0sIGZlYXR1cmVzCkBjaW5kZXggRmVhdHVyZXMgb2YgdGhl IEdOVSBCdWlsZCBTeXN0ZW0KQGNpbmRleCBVc2UgQ2FzZXMgZm9yIHRoZSBHTlUgQnVpbGQgU3lz dGVtCkBjaW5kZXggQGZpbGV7YW1oZWxsby0xLjAudGFyLmd6fSwgbG9jYXRpb24KQGNpbmRleCBA ZmlsZXthbWhlbGxvLTEuMC50YXIuZ3p9LCB1c2UgY2FzZXMKCkluIHRoaXMgc2VjdGlvbiB3ZSBl eHBsb3JlIHNldmVyYWwgdXNlIGNhc2VzIGZvciB0aGUgR05VIEJ1aWxkIFN5c3RlbS4KWW91IGNh biByZXBsYXkgYWxsIG9mIHRoZXNlIGV4YW1wbGVzIG9uIHRoZSBAZmlsZXthbWhlbGxvLTEuMC50 YXIuZ3p9CnBhY2thZ2UgZGlzdHJpYnV0ZWQgd2l0aCBBdXRvbWFrZS4gIElmIEF1dG9tYWtlIGlz IGluc3RhbGxlZCBvbiB5b3VyCnN5c3RlbSwgeW91IHNob3VsZCBmaW5kIGEgY29weSBvZiB0aGlz IGZpbGUgaW4KQGZpbGV7QHZhcntwcmVmaXh9L3NoYXJlL2RvYy9hdXRvbWFrZS9hbWhlbGxvLTEu MC50YXIuZ3p9LCB3aGVyZQpAdmFye3ByZWZpeH0gaXMgdGhlIGluc3RhbGxhdGlvbiBwcmVmaXgg c3BlY2lmaWVkIGR1cmluZyBjb25maWd1cmF0aW9uCihAdmFye3ByZWZpeH0gZGVmYXVsdHMgdG8g QGZpbGV7L3Vzci9sb2NhbH0sIGhvd2V2ZXIgaWYgQXV0b21ha2Ugd2FzCmluc3RhbGxlZCBieSBz b21lIEdOVS9MaW51eCBkaXN0cmlidXRpb24gaXQgbW9zdCBsaWtlbHkgaGFzIGJlZW4gc2V0CnRv IEBmaWxley91c3J9KS4gIElmIHlvdSBkbyBub3QgaGF2ZSBhIGNvcHkgb2YgQXV0b21ha2UgaW5z dGFsbGVkLAp5b3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoaXMgZmlsZSBpbnNpZGUgdGhlIEBmaWxl e2RvYy99IGRpcmVjdG9yeSBvZgp0aGUgQXV0b21ha2UgcGFja2FnZS4KClNvbWUgb2YgdGhlIGZv bGxvd2luZyB1c2UgY2FzZXMgcHJlc2VudCBmZWF0dXJlcyB0aGF0IGFyZSBpbiBmYWN0CmV4dGVu c2lvbnMgdG8gdGhlIEdOVSBCdWlsZCBTeXN0ZW0uICBSZWFkOiB0aGV5IGFyZSBub3Qgc3BlY2lm aWVkIGJ5CnRoZSBHTlUgQ29kaW5nIFN0YW5kYXJkcywgYnV0IHRoZXkgYXJlIG5vbmV0aGVsZXNz IHBhcnQgb2YgdGhlIGJ1aWxkCnN5c3RlbSBjcmVhdGVkIGJ5IHRoZSBBdXRvdG9vbHMuICBUbyBr ZWVwIHRoaW5ncyBzaW1wbGUsIHdlIGRvIG5vdApwb2ludCBvdXQgdGhlIGRpZmZlcmVuY2UuICBP dXIgb2JqZWN0aXZlIGlzIHRvIHNob3cgeW91IG1hbnkgb2YgdGhlCmZlYXR1cmVzIHRoYXQgdGhl IGJ1aWxkIHN5c3RlbSBjcmVhdGVkIGJ5IHRoZSBBdXRvdG9vbHMgd2lsbCBvZmZlciB0bwp5b3Uu CgpAbWVudQoqIEJhc2ljIEluc3RhbGxhdGlvbjo6ICAgICAgICAgIENvbW1vbiBpbnN0YWxsYXRp b24gcHJvY2VkdXJlCiogU3RhbmRhcmQgVGFyZ2V0czo6ICAgICAgICAgICAgQSBsaXN0IG9mIHN0 YW5kYXJkIE1ha2VmaWxlIHRhcmdldHMKKiBTdGFuZGFyZCBEaXJlY3RvcnkgVmFyaWFibGVzOjog IEEgbGlzdCBvZiBzdGFuZGFyZCBkaXJlY3RvcnkgdmFyaWFibGVzCiogU3RhbmRhcmQgQ29uZmln dXJhdGlvbiBWYXJpYWJsZXM6OiAgVXNpbmcgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKiBjb25m aWcuc2l0ZTo6ICAgICAgICAgICAgICAgICBVc2luZyBhIGNvbmZpZy5zaXRlIGZpbGUKKiBWUEFU SCBCdWlsZHM6OiAgICAgICAgICAgICAgICBQYXJhbGxlbCBidWlsZCB0cmVlcwoqIFR3by1QYXJ0 IEluc3RhbGw6OiAgICAgICAgICAgIEluc3RhbGxpbmcgZGF0YSBhbmQgcHJvZ3JhbXMgc2VwYXJh dGVseQoqIENyb3NzLUNvbXBpbGF0aW9uOjogICAgICAgICAgIEJ1aWxkaW5nIGZvciBvdGhlciBh cmNoaXRlY3R1cmVzCiogUmVuYW1pbmc6OiAgICAgICAgICAgICAgICAgICAgUmVuYW1pbmcgcHJv Z3JhbXMgYXQgaW5zdGFsbCB0aW1lCiogREVTVERJUjo6ICAgICAgICAgICAgICAgICAgICAgQnVp bGRpbmcgYmluYXJ5IHBhY2thZ2VzIHdpdGggREVTVERJUgoqIFByZXBhcmluZyBEaXN0cmlidXRp b25zOjogICAgIFJvbGxpbmcgb3V0IHRhcmJhbGxzCiogRGVwZW5kZW5jeSBUcmFja2luZzo6ICAg ICAgICAgQXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcKKiBOZXN0ZWQgUGFja2FnZXM6OiAg ICAgICAgICAgICBUaGUgR05VIEJ1aWxkIFN5c3RlbXMgY2FuIGJlIG5lc3RlZApAZW5kIG1lbnUK CkBub2RlIEJhc2ljIEluc3RhbGxhdGlvbgpAc3Vic2VjdGlvbiBCYXNpYyBJbnN0YWxsYXRpb24K QGNpbmRleCBDb25maWd1cmF0aW9uLCBiYXNpY3MKQGNpbmRleCBJbnN0YWxsYXRpb24sIGJhc2lj cwpAY2luZGV4IEdOVSBCdWlsZCBTeXN0ZW0sIGJhc2ljcwoKVGhlIG1vc3QgY29tbW9uIGluc3Rh bGxhdGlvbiBwcm9jZWR1cmUgbG9va3MgYXMgZm9sbG93cy4KCkBleGFtcGxlCn4gJSBAa2Jke3Rh ciB6eGYgYW1oZWxsby0xLjAudGFyLmd6fQp+ICUgQGtiZHtjZCBhbWhlbGxvLTEuMH0Kfi9hbWhl bGxvLTEuMCAlIEBrYmR7Li9jb25maWd1cmV9CkBkb3Rze30KY29uZmlnLnN0YXR1czogY3JlYXRp bmcgTWFrZWZpbGUKY29uZmlnLnN0YXR1czogY3JlYXRpbmcgc3JjL01ha2VmaWxlCkBkb3Rze30K fi9hbWhlbGxvLTEuMCAlIEBrYmR7bWFrZX0KQGRvdHN7fQp+L2FtaGVsbG8tMS4wICUgQGtiZHtt YWtlIGNoZWNrfQpAZG90c3t9Cn4vYW1oZWxsby0xLjAgJSBAa2Jke3N1fQpQYXNzd29yZDoKL2hv bWUvYWRsL2FtaGVsbG8tMS4wICMgQGtiZHttYWtlIGluc3RhbGx9CkBkb3Rze30KL2hvbWUvYWRs L2FtaGVsbG8tMS4wICMgQGtiZHtleGl0fQp+L2FtaGVsbG8tMS4wICUgQGtiZHttYWtlIGluc3Rh bGxjaGVja30KQGRvdHN7fQpAZW5kIGV4YW1wbGUKCkBjaW5kZXggVW5wYWNraW5nCgpUaGUgdXNl ciBmaXJzdCB1bnBhY2tzIHRoZSBwYWNrYWdlLiAgSGVyZSwgYW5kIGluIHRoZSBmb2xsb3dpbmcK ZXhhbXBsZXMsIHdlIHdpbGwgdXNlIHRoZSBub24tcG9ydGFibGUgQGNvZGV7dGFyIHp4Zn0gY29t bWFuZCBmb3IKc2ltcGxpY2l0eS4gIE9uIGEgc3lzdGVtIHdpdGhvdXQgR05VIEBjb21tYW5ke3Rh cn0gaW5zdGFsbGVkLCB0aGlzCmNvbW1hbmQgc2hvdWxkIHJlYWQgQGNvZGV7Z3VuemlwIC1jIGFt aGVsbG8tMS4wLnRhci5neiB8IHRhciB4ZiAtfS4KClRoZSB1c2VyIHRoZW4gZW50ZXJzIHRoZSBu ZXdseSBjcmVhdGVkIGRpcmVjdG9yeSB0byBydW4gdGhlCkBmaWxle2NvbmZpZ3VyZX0gc2NyaXB0 LiAgVGhpcyBzY3JpcHQgcHJvYmVzIHRoZSBzeXN0ZW0gZm9yIHZhcmlvdXMKZmVhdHVyZXMsIGFu ZCBmaW5hbGx5IGNyZWF0ZXMgdGhlIEBmaWxle01ha2VmaWxlfXMuICBJbiB0aGlzIHRveQpleGFt cGxlIHRoZXJlIGFyZSBvbmx5IHR3byBAZmlsZXtNYWtlZmlsZX1zLCBidXQgaW4gcmVhbC13b3Js ZCBwcm9qZWN0cywKdGhlcmUgbWF5IGJlIG1hbnkgbW9yZSwgdXN1YWxseSBvbmUgQGZpbGV7TWFr ZWZpbGV9IHBlciBkaXJlY3RvcnkuCgpJdCBpcyBub3cgcG9zc2libGUgdG8gcnVuIEBjb2Rle21h a2V9LiAgVGhpcyB3aWxsIGNvbnN0cnVjdCBhbGwgdGhlCnByb2dyYW1zLCBsaWJyYXJpZXMsIGFu ZCBzY3JpcHRzIHRoYXQgbmVlZCB0byBiZSBjb25zdHJ1Y3RlZCBmb3IgdGhlCnBhY2thZ2UuICBJ biBvdXIgZXhhbXBsZSwgdGhpcyBjb21waWxlcyB0aGUgQGZpbGV7aGVsbG99IHByb2dyYW0uCkFs bCBmaWxlcyBhcmUgY29uc3RydWN0ZWQgaW4gcGxhY2UsIGluIHRoZSBzb3VyY2UgdHJlZTsgd2Ug d2lsbCBzZWUKbGF0ZXIgaG93IHRoaXMgY2FuIGJlIGNoYW5nZWQuCgpAY29kZXttYWtlIGNoZWNr fSBjYXVzZXMgdGhlIHBhY2thZ2UncyB0ZXN0cyB0byBiZSBydW4uICBUaGlzIHN0ZXAgaXMKbm90 IG1hbmRhdG9yeSwgYnV0IGl0IGlzIG9mdGVuIGdvb2QgdG8gbWFrZSBzdXJlIHRoZSBwcm9ncmFt cyB0aGF0CmhhdmUgYmVlbiBidWlsdCBiZWhhdmUgYXMgdGhleSBzaG91bGQsIGJlZm9yZSB5b3Ug ZGVjaWRlIHRvIGluc3RhbGwKdGhlbS4gIE91ciBleGFtcGxlIGRvZXMgbm90IGNvbnRhaW4gYW55 IHRlc3RzLCBzbyBydW5uaW5nIEBjb2Rle21ha2UKY2hlY2t9IGlzIGEgbm8tb3AuCgpAY2luZGV4 IHN1LCBiZWZvcmUgQGNvZGV7bWFrZSBpbnN0YWxsfQpBZnRlciBldmVyeXRoaW5nIGhhcyBiZWVu IGJ1aWx0LCBhbmQgbWF5YmUgdGVzdGVkLCBpdCBpcyB0aW1lIHRvCmluc3RhbGwgaXQgb24gdGhl IHN5c3RlbS4gIFRoYXQgbWVhbnMgY29weWluZyB0aGUgcHJvZ3JhbXMsCmxpYnJhcmllcywgaGVh ZGVyIGZpbGVzLCBzY3JpcHRzLCBhbmQgb3RoZXIgZGF0YSBmaWxlcyBmcm9tIHRoZQpzb3VyY2Ug ZGlyZWN0b3J5IHRvIHRoZWlyIGZpbmFsIGRlc3RpbmF0aW9uIG9uIHRoZSBzeXN0ZW0uICBUaGUK Y29tbWFuZCBAY29kZXttYWtlIGluc3RhbGx9IHdpbGwgZG8gdGhhdC4gIEhvd2V2ZXIsIGJ5IGRl ZmF1bHQKZXZlcnl0aGluZyB3aWxsIGJlIGluc3RhbGxlZCBpbiBzdWJkaXJlY3RvcmllcyBvZiBA ZmlsZXsvdXNyL2xvY2FsfToKYmluYXJpZXMgd2lsbCBnbyBpbnRvIEBmaWxley91c3IvbG9jYWwv YmlufSwgbGlicmFyaWVzIHdpbGwgZW5kIHVwIGluCkBmaWxley91c3IvbG9jYWwvbGlifSwgZXRj LiAgVGhpcyBkZXN0aW5hdGlvbiBpcyB1c3VhbGx5IG5vdCB3cml0YWJsZQpieSBhbnkgdXNlciwg c28gd2UgYXNzdW1lIHRoYXQgd2UgaGF2ZSB0byBiZWNvbWUgcm9vdCBiZWZvcmUgd2UgY2FuCnJ1 biBAY29kZXttYWtlIGluc3RhbGx9LiAgSW4gb3VyIGV4YW1wbGUsIHJ1bm5pbmcgQGNvZGV7bWFr ZSBpbnN0YWxsfQp3aWxsIGNvcHkgdGhlIHByb2dyYW0gQGZpbGV7aGVsbG99IGludG8gQGZpbGV7 L3Vzci9sb2NhbC9iaW59CmFuZCBAZmlsZXtSRUFETUV9IGludG8gQGZpbGV7L3Vzci9sb2NhbC9z aGFyZS9kb2MvYW1oZWxsb30uCgpBIGxhc3QgYW5kIG9wdGlvbmFsIHN0ZXAgaXMgdG8gcnVuIEBj b2Rle21ha2UgaW5zdGFsbGNoZWNrfS4gIFRoaXMKY29tbWFuZCBtYXkgcnVuIHRlc3RzIG9uIHRo ZSBpbnN0YWxsZWQgZmlsZXMuICBAY29kZXttYWtlIGNoZWNrfSB0ZXN0cwp0aGUgZmlsZXMgaW4g dGhlIHNvdXJjZSB0cmVlLCB3aGlsZSBAY29kZXttYWtlIGluc3RhbGxjaGVja30gdGVzdHMKdGhl aXIgaW5zdGFsbGVkIGNvcGllcy4gIFRoZSB0ZXN0cyBydW4gYnkgdGhlIGxhdHRlciBjYW4gYmUg ZGlmZmVyZW50CmZyb20gdGhvc2UgcnVuIGJ5IHRoZSBmb3JtZXIuICBGb3IgaW5zdGFuY2UsIHRo ZXJlIGFyZSB0ZXN0cyB0aGF0CmNhbm5vdCBiZSBydW4gaW4gdGhlIHNvdXJjZSB0cmVlLiAgQ29u dmVyc2VseSwgc29tZSBwYWNrYWdlcyBhcmUgc2V0CnVwIHNvIHRoYXQgQGNvZGV7bWFrZSBpbnN0 YWxsY2hlY2t9IHdpbGwgcnVuIHRoZSB2ZXJ5IHNhbWUgdGVzdHMgYXMKQGNvZGV7bWFrZSBjaGVj a30sIG9ubHkgb24gZGlmZmVyZW50IGZpbGVzIChub24taW5zdGFsbGVkCnZzLkA6IGluc3RhbGxl ZCkuICBJdCBjYW4gbWFrZSBhIGRpZmZlcmVuY2UsIGZvciBpbnN0YW5jZSB3aGVuIHRoZQpzb3Vy Y2UgdHJlZSdzIGxheW91dCBpcyBkaWZmZXJlbnQgZnJvbSB0aGF0IG9mIHRoZSBpbnN0YWxsYXRp b24uCkZ1cnRoZXJtb3JlIGl0IG1heSBoZWxwIHRvIGRpYWdub3NlIGFuIGluY29tcGxldGUgaW5z dGFsbGF0aW9uLgoKUHJlc2VudGx5IG1vc3QgcGFja2FnZXMgZG8gbm90IGhhdmUgYW55IEBjb2Rl e2luc3RhbGxjaGVja30gdGVzdHMKYmVjYXVzZSB0aGUgZXhpc3RlbmNlIG9mIEBjb2Rle2luc3Rh bGxjaGVja30gaXMgbGl0dGxlIGtub3duLCBhbmQgaXRzCnVzZWZ1bG5lc3MgaXMgbmVnbGVjdGVk LiAgT3VyIHRveSBwYWNrYWdlIGlzIG5vIGJldHRlcjogQGNvZGV7bWFrZQppbnN0YWxsY2hlY2t9 IGRvZXMgbm90aGluZy4KCkBub2RlIFN0YW5kYXJkIFRhcmdldHMKQHN1YnNlY3Rpb24gU3RhbmRh cmQgQGZpbGV7TWFrZWZpbGV9IFRhcmdldHMKClNvIGZhciB3ZSBoYXZlIGNvbWUgYWNyb3NzIGZv dXIgd2F5cyB0byBydW4gQGNvbW1hbmR7bWFrZX0gaW4gdGhlIEdOVQpCdWlsZCBTeXN0ZW06IEBj b2Rle21ha2V9LCBAY29kZXttYWtlIGNoZWNrfSwgQGNvZGV7bWFrZSBpbnN0YWxsfSwgYW5kCkBj b2Rle21ha2UgaW5zdGFsbGNoZWNrfS4gIFRoZSB3b3JkcyBAY29kZXtjaGVja30sIEBjb2Rle2lu c3RhbGx9LCBhbmQKQGNvZGV7aW5zdGFsbGNoZWNrfSwgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byBA Y29tbWFuZHttYWtlfSwgYXJlIGNhbGxlZApAZGZue3RhcmdldHN9LiAgQGNvZGV7bWFrZX0gaXMg YSBzaG9ydGhhbmQgZm9yIEBjb2Rle21ha2UgYWxsfSwKQGNvZGV7YWxsfSBiZWluZyB0aGUgZGVm YXVsdCB0YXJnZXQgaW4gdGhlIEdOVSBCdWlsZCBTeXN0ZW0uCgpIZXJlIGlzIGEgbGlzdCBvZiB0 aGUgbW9zdCBjb21tb25seSB1c2VmdWwgdGFyZ2V0cyB0aGF0IHRoZSBHTlUgQ29kaW5nClN0YW5k YXJkcyBzcGVjaWZ5LgoKQHRhYmxlIEBjb2RlCkBpdGVtIG1ha2UgYWxsCkB0cmluZGV4IGFsbApC dWlsZCBwcm9ncmFtcywgbGlicmFyaWVzLCBkb2N1bWVudGF0aW9uLCBldGMuQDogKHNhbWUgYXMg QGNvZGV7bWFrZX0pLgoKQGl0ZW0gbWFrZSBpbnN0YWxsCkB0cmluZGV4IGluc3RhbGwKSW5zdGFs bCB3aGF0IG5lZWRzIHRvIGJlIGluc3RhbGxlZCwgY29weWluZyB0aGUgZmlsZXMgZnJvbSB0aGUK cGFja2FnZSdzIHRyZWUgdG8gc3lzdGVtLXdpZGUgZGlyZWN0b3JpZXMuCgpAaXRlbSBtYWtlIHVu aW5zdGFsbApAdHJpbmRleCB1bmluc3RhbGwKVGhlIG9wcG9zaXRlIG9mIEBjb2Rle21ha2UgaW5z dGFsbH06IGVyYXNlIHRoZSBpbnN0YWxsZWQgZmlsZXMuCihUaGlzIG5lZWRzIHRvIGJlIHJ1biBm cm9tIHRoZSBzYW1lIGJ1aWxkIHRyZWUgdGhhdCB3YXMgaW5zdGFsbGVkLikKCkBpdGVtIG1ha2Ug Y2xlYW4KQHRyaW5kZXggY2xlYW4KRXJhc2UgZnJvbSB0aGUgYnVpbGQgdHJlZSB0aGUgZmlsZXMg YnVpbHQgYnkgQGNvZGV7bWFrZSBhbGx9LgoKQGl0ZW0gbWFrZSBkaXN0Y2xlYW4KQHRyaW5kZXgg ZGlzdGNsZWFuCkFkZGl0aW9uYWxseSBlcmFzZSBhbnl0aGluZyBAY29kZXsuL2NvbmZpZ3VyZX0g Y3JlYXRlZC4KCkBpdGVtIG1ha2UgY2hlY2sKQHRyaW5kZXggY2hlY2sKUnVuIHRoZSB0ZXN0IHN1 aXRlLCBpZiBhbnkuCgpAaXRlbSBtYWtlIGluc3RhbGxjaGVjawpAdHJpbmRleCBpbnN0YWxsY2hl Y2sKQ2hlY2sgdGhlIGluc3RhbGxlZCBwcm9ncmFtcyBvciBsaWJyYXJpZXMsIGlmIHN1cHBvcnRl ZC4KCkBpdGVtIG1ha2UgZGlzdApAdHJpbmRleCBkaXN0ClJlY3JlYXRlIEBmaWxle0B2YXJ7cGFj a2FnZX0tQHZhcnt2ZXJzaW9ufS50YXIuZ3p9IGZyb20gYWxsIHRoZSBzb3VyY2UKZmlsZXMuCkBl bmQgdGFibGUKCkBub2RlIFN0YW5kYXJkIERpcmVjdG9yeSBWYXJpYWJsZXMKQHN1YnNlY3Rpb24g U3RhbmRhcmQgRGlyZWN0b3J5IFZhcmlhYmxlcwpAY2luZGV4IGRpcmVjdG9yeSB2YXJpYWJsZXMK ClRoZSBHTlUgQ29kaW5nIFN0YW5kYXJkcyBhbHNvIHNwZWNpZnkgYSBoaWVyYXJjaHkgb2YgdmFy aWFibGVzIHRvCmRlbm90ZSBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuICBTb21lIG9mIHRoZXNl IGFyZToKCkBtdWx0aXRhYmxlIHtEaXJlY3RvcnkgdmFyaWFibGV9IHtAY29kZXskQHtkYXRhcm9v dGRpckB9L2RvYy8kQHtQQUNLQUdFQH19fQpAaGVhZGl0ZW0gRGlyZWN0b3J5IHZhcmlhYmxlICAg IEB0YWIgRGVmYXVsdCB2YWx1ZQpAaXRlbSBAY29kZXtwcmVmaXh9ICAgICAgICAgICAgICBAdGFi IEBjb2Rley91c3IvbG9jYWx9CkBpdGVtIEB3e0AgQCBAY29kZXtleGVjX3ByZWZpeH19IEB0YWIg QGNvZGV7JEB7cHJlZml4QH19CkBpdGVtIEB3e0AgQCBAIEAgQGNvZGV7YmluZGlyfX0gIEB0YWIg QGNvZGV7JEB7ZXhlY19wcmVmaXhAfS9iaW59CkBpdGVtIEB3e0AgQCBAIEAgQGNvZGV7bGliZGly fX0gIEB0YWIgQGNvZGV7JEB7ZXhlY19wcmVmaXhAfS9saWJ9CkBpdGVtIEB3e0AgQCBAIEAgQGRv dHN7fX0KQGl0ZW0gQHd7QCBAIEBjb2Rle2luY2x1ZGVkaXJ9fSAgQHRhYiBAY29kZXskQHtwcmVm aXhAfS9pbmNsdWRlfQpAaXRlbSBAd3tAIEAgQGNvZGV7ZGF0YXJvb3RkaXJ9fSBAdGFiIEBjb2Rl eyRAe3ByZWZpeEB9L3NoYXJlfQpAaXRlbSBAd3tAIEAgQCBAIEBjb2Rle2RhdGFkaXJ9fSBAdGFi IEBjb2RleyRAe2RhdGFyb290ZGlyQH19CkBpdGVtIEB3e0AgQCBAIEAgQGNvZGV7bWFuZGlyfX0g IEB0YWIgQGNvZGV7JEB7ZGF0YXJvb3RkaXJAfS9tYW59CkBpdGVtIEB3e0AgQCBAIEAgQGNvZGV7 aW5mb2Rpcn19IEB0YWIgQGNvZGV7JEB7ZGF0YXJvb3RkaXJAfS9pbmZvfQpAaXRlbSBAd3tAIEAg QCBAIEBjb2Rle2RvY2Rpcn19ICBAdGFiIEBjb2RleyRAe2RhdGFyb290ZGlyQH0vZG9jLyRAe1BB Q0tBR0VAfX0KQGl0ZW0gQHd7QCBAIEBkb3Rze319CkBlbmQgbXVsdGl0YWJsZQoKQGMgV2Ugc2hv dWxkIHByb3ZpZGUgYSBjb21wbGV0ZSB0YWJsZSBzb21ld2hlcmUsIGJ1dCBub3QgaGVyZS4gIFRo ZQpAYyBjb21wbGV0ZSBsaXN0IG9mIGRpcmVjdG9yeSB2YXJpYWJsZXMgaXQgdG9vIGNvbmZ1c2lu ZyBhcy1pcy4gIEl0CkBjIHJlcXVpcmVzIHNvbWUgZXhwbGFuYXRpb25zIHRoYXQgYXJlIHRvbyBj b21wbGljYXRlZCBmb3IgdGhpcwpAYyBpbnRyb2R1Y3Rpb24uICBCZXNpZGVzIGxpc3RpbmcgZGly ZWN0b3JpZXMgbGlrZSBsb2NhbHN0YXRlZGlyCkBjIHdvdWxkIG1ha2UgdGhlIGV4cGxhbmF0aW9u cyBpbiBgYFR3by1QYXJ0IEluc3RhbGwnJyBoYXJkZXIuCgpFYWNoIG9mIHRoZXNlIGRpcmVjdG9y aWVzIGhhcyBhIHJvbGUgd2hpY2ggaXMgb2Z0ZW4gb2J2aW91cyBmcm9tIGl0cwpuYW1lLiAgSW4g YSBwYWNrYWdlLCBhbnkgaW5zdGFsbGFibGUgZmlsZSB3aWxsIGJlIGluc3RhbGxlZCBpbiBvbmUg b2YKdGhlc2UgZGlyZWN0b3JpZXMuICBGb3IgaW5zdGFuY2UgaW4gQGNvZGV7YW1oZWxsby0xLjB9 LCB0aGUgcHJvZ3JhbQpAZmlsZXtoZWxsb30gaXMgdG8gYmUgaW5zdGFsbGVkIGluIEB2YXJ7Ymlu ZGlyfSwgdGhlIGRpcmVjdG9yeSBmb3IKYmluYXJpZXMuICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3Ig dGhpcyBkaXJlY3RvcnkgaXMKQGZpbGV7L3Vzci9sb2NhbC9iaW59LCBidXQgdGhlIHVzZXIgY2Fu IHN1cHBseSBhIGRpZmZlcmVudCB2YWx1ZSB3aGVuCmNhbGxpbmcgQGNvbW1hbmR7Y29uZmlndXJl fS4gIEFsc28gdGhlIGZpbGUgQGZpbGV7UkVBRE1FfSB3aWxsIGJlCmluc3RhbGxlZCBpbnRvIEB2 YXJ7ZG9jZGlyfSwgd2hpY2ggZGVmYXVsdHMgdG8KQGZpbGV7L3Vzci9sb2NhbC9zaGFyZS9kb2Mv YW1oZWxsb30uCgpAb3BpbmRleCAtLXByZWZpeAoKQXMgYSB1c2VyLCBpZiB5b3Ugd2lzaCB0byBp bnN0YWxsIGEgcGFja2FnZSBvbiB5b3VyIG93biBhY2NvdW50LCB5b3UKY291bGQgcHJvY2VlZCBh cyBmb2xsb3dzOgoKQGV4YW1wbGUKfi9hbWhlbGxvLTEuMCAlIEBrYmR7Li9jb25maWd1cmUgLS1w cmVmaXggfi91c3J9CkBkb3Rze30Kfi9hbWhlbGxvLTEuMCAlIEBrYmR7bWFrZX0KQGRvdHN7fQp+ L2FtaGVsbG8tMS4wICUgQGtiZHttYWtlIGluc3RhbGx9CkBkb3Rze30KQGVuZCBleGFtcGxlCgpU aGlzIHdvdWxkIGluc3RhbGwgQGZpbGV7fi91c3IvYmluL2hlbGxvfSBhbmQKQGZpbGV7fi91c3Iv c2hhcmUvZG9jL2FtaGVsbG8vUkVBRE1FfS4KClRoZSBsaXN0IG9mIGFsbCBzdWNoIGRpcmVjdG9y eSBvcHRpb25zIGlzIHNob3duIGJ5CkBjb2Rley4vY29uZmlndXJlIC0taGVscH0uCgpAbm9kZSBT dGFuZGFyZCBDb25maWd1cmF0aW9uIFZhcmlhYmxlcwpAc3Vic2VjdGlvbiBTdGFuZGFyZCBDb25m aWd1cmF0aW9uIFZhcmlhYmxlcwpAY2luZGV4IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLCBvdmVy cmlkaW5nCgpUaGUgR05VIENvZGluZyBTdGFuZGFyZHMgYWxzbyBkZWZpbmUgYSBzZXQgb2Ygc3Rh bmRhcmQgY29uZmlndXJhdGlvbgp2YXJpYWJsZXMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLiAgSGVy ZSBhcmUgc29tZToKCkB0YWJsZSBAYXNpcwpAaXRlbSBAY29kZXtDQ30KQyBjb21waWxlciBjb21t YW5kCkBpdGVtIEBjb2Rle0NGTEFHU30KQyBjb21waWxlciBmbGFncwpAaXRlbSBAY29kZXtDWFh9 CkMrKyBjb21waWxlciBjb21tYW5kCkBpdGVtIEBjb2Rle0NYWEZMQUdTfQpDKysgY29tcGlsZXIg ZmxhZ3MKQGl0ZW0gQGNvZGV7TERGTEFHU30KbGlua2VyIGZsYWdzCkBpdGVtIEBjb2Rle0NQUEZM QUdTfQpDL0MrKyBwcmVwcm9jZXNzb3IgZmxhZ3MKQGl0ZW0gQGRvdHN7fQpAZW5kIHRhYmxlCgpA Y29tbWFuZHtjb25maWd1cmV9IHVzdWFsbHkgZG9lcyBhIGdvb2Qgam9iIGF0IHNldHRpbmcgYXBw cm9wcmlhdGUKdmFsdWVzIGZvciB0aGVzZSB2YXJpYWJsZXMsIGJ1dCB0aGVyZSBhcmUgY2FzZXMg d2hlcmUgeW91IG1heSB3YW50IHRvCm92ZXJyaWRlIHRoZW0uICBGb3IgaW5zdGFuY2UgeW91IG1h eSBoYXZlIHNldmVyYWwgdmVyc2lvbnMgb2YgYQpjb21waWxlciBpbnN0YWxsZWQgYW5kIHdvdWxk IGxpa2UgdG8gdXNlIGFub3RoZXIgb25lLCB5b3UgbWF5IGhhdmUKaGVhZGVyIGZpbGVzIGluc3Rh bGxlZCBvdXRzaWRlIHRoZSBkZWZhdWx0IHNlYXJjaCBwYXRoIG9mIHRoZQpjb21waWxlciwgb3Ig ZXZlbiBsaWJyYXJpZXMgb3V0IG9mIHRoZSB3YXkgb2YgdGhlIGxpbmtlci4KCkhlcmUgaXMgaG93 IG9uZSB3b3VsZCBjYWxsIEBjb21tYW5ke2NvbmZpZ3VyZX0gdG8gZm9yY2UgaXQgdG8gdXNlCkBj b21tYW5ke2djYy0zfSBhcyBDIGNvbXBpbGVyLCB1c2UgaGVhZGVyIGZpbGVzIGZyb20KQGZpbGV7 fi91c3IvaW5jbHVkZX0gd2hlbiBjb21waWxpbmcsIGFuZCBsaWJyYXJpZXMgZnJvbQpAZmlsZXt+ L3Vzci9saWJ9IHdoZW4gbGlua2luZy4KCkBleGFtcGxlCn4vYW1oZWxsby0xLjAgJSBAa2Jkey4v Y29uZmlndXJlIC0tcHJlZml4IH4vdXNyIENDPWdjYy0zIFwKQ1BQRkxBR1M9LUkkSE9NRS91c3Iv aW5jbHVkZSBMREZMQUdTPS1MJEhPTUUvdXNyL2xpYn0KQGVuZCBleGFtcGxlCgpBZ2FpbiwgYSBm dWxsIGxpc3Qgb2YgdGhlc2UgdmFyaWFibGVzIGFwcGVhcnMgaW4gdGhlIG91dHB1dCBvZgpAY29k ZXsuL2NvbmZpZ3VyZSAtLWhlbHB9LgoKQG5vZGUgY29uZmlnLnNpdGUKQHN1YnNlY3Rpb24gT3Zl cnJpZGluZyBEZWZhdWx0IENvbmZpZ3VyYXRpb24gU2V0dGluZyB3aXRoIEBmaWxle2NvbmZpZy5z aXRlfQpAY2luZGV4IEBmaWxle2NvbmZpZy5zaXRlfSBleGFtcGxlCgpXaGVuIGluc3RhbGxpbmcg c2V2ZXJhbCBwYWNrYWdlcyB1c2luZyB0aGUgc2FtZSBzZXR1cCwgaXQgY2FuIGJlCmNvbnZlbmll bnQgdG8gY3JlYXRlIGEgZmlsZSB0byBjYXB0dXJlIGNvbW1vbiBzZXR0aW5ncy4KSWYgYSBmaWxl IG5hbWVkIEBmaWxle0B2YXJ7cHJlZml4fS9zaGFyZS9jb25maWcuc2l0ZX0gZXhpc3RzLApAY29t bWFuZHtjb25maWd1cmV9IHdpbGwgc291cmNlIGl0IGF0IHRoZSBiZWdpbm5pbmcgb2YgaXRzIGV4 ZWN1dGlvbi4KClJlY2FsbCB0aGUgY29tbWFuZCBmcm9tIHRoZSBwcmV2aW91cyBzZWN0aW9uOgoK QGV4YW1wbGUKfi9hbWhlbGxvLTEuMCAlIEBrYmR7Li9jb25maWd1cmUgLS1wcmVmaXggfi91c3Ig Q0M9Z2NjLTMgXApDUFBGTEFHUz0tSSRIT01FL3Vzci9pbmNsdWRlIExERkxBR1M9LUwkSE9NRS91 c3IvbGlifQpAZW5kIGV4YW1wbGUKCkFzc3VtaW5nIHdlIGFyZSBpbnN0YWxsaW5nIG1hbnkgcGFj a2FnZSBpbiBAZmlsZXt+L3Vzcn0sIGFuZCB3aWxsCmFsd2F5cyB3YW50IHRvIHVzZSB0aGVzZSBk ZWZpbml0aW9ucyBvZiBAY29kZXtDQ30sIEBjb2Rle0NQUEZMQUdTfSwgYW5kCkBjb2Rle0xERkxB R1N9LCB3ZSBjYW4gYXV0b21hdGUgdGhpcyBieSBjcmVhdGluZyB0aGUgZm9sbG93aW5nCkBmaWxl e34vdXNyL3NoYXJlL2NvbmZpZy5zaXRlfSBmaWxlOgoKQGV4YW1wbGUKdGVzdCAteiAiJENDIiAm JiBDQz1nY2MtMwp0ZXN0IC16ICIkQ1BQRkxBR1MiICYmIENQUEZMQUdTPS1JJEhPTUUvdXNyL2lu Y2x1ZGUKdGVzdCAteiAiJExERkxBR1MiICYmIExERkxBR1M9LUwkSE9NRS91c3IvbGliCkBlbmQg ZXhhbXBsZQoKTm93LCBhbnkgdGltZSBhIEBmaWxle2NvbmZpZ3VyZX0gc2NyaXB0IGlzIHVzaW5n IHRoZSBAZmlsZXt+L3Vzcn0KcHJlZml4LCBpdCB3aWxsIGV4ZWN1dGUgdGhlIGFib3ZlIEBmaWxl e2NvbmZpZy5zaXRlfSBhbmQgZGVmaW5lCnRoZXNlIHRocmVlIHZhcmlhYmxlcy4KCkBleGFtcGxl Cn4vYW1oZWxsby0xLjAgJSBAa2Jkey4vY29uZmlndXJlIC0tcHJlZml4IH4vdXNyfQpjb25maWd1 cmU6IGxvYWRpbmcgc2l0ZSBzY3JpcHQgL2hvbWUvYWRsL3Vzci9zaGFyZS9jb25maWcuc2l0ZQpA ZG90c3t9CkBlbmQgZXhhbXBsZQoKQHhyZWZ7U2l0ZSBEZWZhdWx0cywgLCBTZXR0aW5nIFNpdGUg RGVmYXVsdHMsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYKTWFudWFsfSwgZm9yIG1vcmUgaW5mb3Jt YXRpb24gYWJvdXQgdGhpcyBmZWF0dXJlLgoKCkBub2RlIFZQQVRIIEJ1aWxkcwpAc3Vic2VjdGlv biBQYXJhbGxlbCBCdWlsZCBUcmVlcyAoYS5rLmEuQDogVlBBVEggQnVpbGRzKQpAY2luZGV4IFBh cmFsbGVsIGJ1aWxkIHRyZWVzCkBjaW5kZXggVlBBVEggYnVpbGRzCkBjaW5kZXggc291cmNlIHRy ZWUgYW5kIGJ1aWxkIHRyZWUKQGNpbmRleCBidWlsZCB0cmVlIGFuZCBzb3VyY2UgdHJlZQpAY2lu ZGV4IHRyZWVzLCBzb3VyY2UgdnMuQDogYnVpbGQKClRoZSBHTlUgQnVpbGQgU3lzdGVtIGRpc3Rp bmd1aXNoZXMgdHdvIHRyZWVzOiB0aGUgc291cmNlIHRyZWUsIGFuZAp0aGUgYnVpbGQgdHJlZS4g IFRoZXNlIGFyZSB0d28gZGlyZWN0b3JpZXMgdGhhdCBtYXkgYmUgdGhlIHNhbWUsIG9yCmRpZmZl cmVudC4KClRoZSBzb3VyY2UgdHJlZSBpcyByb290ZWQgaW4gdGhlIGRpcmVjdG9yeSBjb250YWlu aW5nIHRoZQpAZmlsZXtjb25maWd1cmV9IHNjcmlwdC4gIEl0IGNvbnRhaW5zIGFsbCB0aGUgc291 cmNlIGZpbGVzICh0aG9zZSB0aGF0IGFyZQpkaXN0cmlidXRlZCksIGFuZCBtYXkgYmUgYXJyYW5n ZWQgdXNpbmcgc2V2ZXJhbCBzdWJkaXJlY3Rvcmllcy4KClRoZSBidWlsZCB0cmVlIGlzIHJvb3Rl ZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYXQgdGhlIHRpbWUgQGZpbGV7Y29uZmlndXJlfQp3 YXMgcnVuLCBhbmQgaXMgcG9wdWxhdGVkIHdpdGggYWxsIG9iamVjdCBmaWxlcywgcHJvZ3JhbXMs IGxpYnJhcmllcywKYW5kIG90aGVyIGRlcml2ZWQgZmlsZXMgYnVpbHQgZnJvbSB0aGUgc291cmNl cyAoYW5kIGhlbmNlIG5vdApkaXN0cmlidXRlZCkuICBUaGUgYnVpbGQgdHJlZSB1c3VhbGx5IGhh cyB0aGUgc2FtZSBzdWJkaXJlY3RvcnkgbGF5b3V0CmFzIHRoZSBzb3VyY2UgdHJlZTsgaXRzIHN1 YmRpcmVjdG9yaWVzIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkKdGhlIGJ1aWxkIHN5c3Rl bS4KCklmIEBmaWxle2NvbmZpZ3VyZX0gaXMgZXhlY3V0ZWQgaW4gaXRzIG93biBkaXJlY3Rvcnks IHRoZSBzb3VyY2UgYW5kCmJ1aWxkIHRyZWVzIGFyZSBjb21iaW5lZDogZGVyaXZlZCBmaWxlcyBh cmUgY29uc3RydWN0ZWQgaW4gdGhlIHNhbWUKZGlyZWN0b3JpZXMgYXMgdGhlaXIgc291cmNlcy4g IFRoaXMgd2FzIHRoZSBjYXNlIGluIG91ciBmaXJzdAppbnN0YWxsYXRpb24gZXhhbXBsZSAoQHB4 cmVme0Jhc2ljIEluc3RhbGxhdGlvbn0pLgoKQSBjb21tb24gcmVxdWVzdCBmcm9tIHVzZXJzIGlz IHRoYXQgdGhleSB3YW50IHRvIGNvbmZpbmUgYWxsIGRlcml2ZWQKZmlsZXMgdG8gYSBzaW5nbGUg ZGlyZWN0b3J5LCB0byBrZWVwIHRoZWlyIHNvdXJjZSBkaXJlY3Rvcmllcwp1bmNsdXR0ZXJlZC4g IEhlcmUgaXMgaG93IHdlIGNvdWxkIHJ1biBAZmlsZXtjb25maWd1cmV9IHRvIGNyZWF0ZQpldmVy eXRoaW5nIGluIGEgYnVpbGQgdHJlZSAodGhhdCBpcywgc3ViZGlyZWN0b3J5KSBjYWxsZWQgQGZp bGV7YnVpbGQvfS4KCkBleGFtcGxlCn4gJSBAa2Jke3RhciB6eGYgfi9hbWhlbGxvLTEuMC50YXIu Z3p9Cn4gJSBAa2Jke2NkIGFtaGVsbG8tMS4wfQp+L2FtaGVsbG8tMS4wICUgQGtiZHtta2RpciBi dWlsZCAmJiBjZCBidWlsZH0Kfi9hbWhlbGxvLTEuMC9idWlsZCAlIEBrYmR7Li4vY29uZmlndXJl fQpAZG90c3t9Cn4vYW1oZWxsby0xLjAvYnVpbGQgJSBAa2Jke21ha2V9CkBkb3Rze30KQGVuZCBl eGFtcGxlCgpUaGVzZSBzZXR1cHMsIHdoZXJlIHNvdXJjZSBhbmQgYnVpbGQgdHJlZXMgYXJlIGRp ZmZlcmVudCwgYXJlIG9mdGVuCmNhbGxlZCBAZGZue3BhcmFsbGVsIGJ1aWxkc30gb3IgQGRmbntW UEFUSCBidWlsZHN9LiAgVGhlIGV4cHJlc3Npb24KQGVtcGh7cGFyYWxsZWwgYnVpbGR9IGlzIG1p c2xlYWRpbmc6IHRoZSB3b3JkIEBlbXBoe3BhcmFsbGVsfSBpcyBhCnJlZmVyZW5jZSB0byB0aGUg d2F5IHRoZSBidWlsZCB0cmVlIHNoYWRvd3MgdGhlIHNvdXJjZSB0cmVlLCBpdCBpcyBub3QKYWJv dXQgc29tZSBjb25jdXJyZW5jeSBpbiB0aGUgd2F5IGJ1aWxkIGNvbW1hbmRzIGFyZSBydW4uICBG b3IgdGhpcwpyZWFzb24gd2UgcmVmZXIgdG8gc3VjaCBzZXR1cHMgdXNpbmcgdGhlIG5hbWUgQGVt cGh7VlBBVEggYnVpbGRzfSBpbgp0aGUgZm9sbG93aW5nLiAgQGVtcGh7VlBBVEh9IGlzIHRoZSBu YW1lIG9mIHRoZSBAY29tbWFuZHttYWtlfSBmZWF0dXJlCnVzZWQgYnkgdGhlIEBmaWxle01ha2Vm aWxlfXMgdG8gYWxsb3cgdGhlc2UgYnVpbGRzIChAcHhyZWZ7R2VuZXJhbApTZWFyY2gsICwgQGNv ZGV7VlBBVEh9IFNlYXJjaCBQYXRoIGZvciBBbGwgUHJlcmVxdWlzaXRlcywgbWFrZSwgVGhlCkdO VSBNYWtlIE1hbnVhbH0pLgoKQGNpbmRleCBtdWx0aXBsZSBjb25maWd1cmF0aW9ucywgZXhhbXBs ZQpAY2luZGV4IGRlYnVnIGJ1aWxkLCBleGFtcGxlCkBjaW5kZXggb3B0aW1pemVkIGJ1aWxkLCBl eGFtcGxlCgpWUEFUSCBidWlsZHMgaGF2ZSBvdGhlciBpbnRlcmVzdGluZyB1c2VzLiAgT25lIGlz IHRvIGJ1aWxkIHRoZSBzYW1lCnNvdXJjZXMgd2l0aCBtdWx0aXBsZSBjb25maWd1cmF0aW9ucy4g IEZvciBpbnN0YW5jZToKCkBjIEtlZXAgaW4gc3luYyB3aXRoIGFtaGVsbG8tY2ZsYWdzLnNoCkBl eGFtcGxlCn4gJSBAa2Jke3RhciB6eGYgfi9hbWhlbGxvLTEuMC50YXIuZ3p9Cn4gJSBAa2Jke2Nk IGFtaGVsbG8tMS4wfQp+L2FtaGVsbG8tMS4wICUgQGtiZHtta2RpciBkZWJ1ZyBvcHRpbSAmJiBj ZCBkZWJ1Z30Kfi9hbWhlbGxvLTEuMC9kZWJ1ZyAlIEBrYmR7Li4vY29uZmlndXJlIENGTEFHUz0n LWcgLU8wJ30KQGRvdHN7fQp+L2FtaGVsbG8tMS4wL2RlYnVnICUgQGtiZHttYWtlfQpAZG90c3t9 Cn4vYW1oZWxsby0xLjAvZGVidWcgJSBjZCAuLi9vcHRpbQp+L2FtaGVsbG8tMS4wL29wdGltICUg QGtiZHsuLi9jb25maWd1cmUgQ0ZMQUdTPSctTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXInfQpAZG90 c3t9Cn4vYW1oZWxsby0xLjAvb3B0aW0gJSBAa2Jke21ha2V9CkBkb3Rze30KQGVuZCBleGFtcGxl CgpXaXRoIG5ldHdvcmsgZmlsZSBzeXN0ZW1zLCBhIHNpbWlsYXIgYXBwcm9hY2ggY2FuIGJlIHVz ZWQgdG8gYnVpbGQgdGhlCnNhbWUgc291cmNlcyBvbiBkaWZmZXJlbnQgbWFjaGluZXMuICBGb3Ig aW5zdGFuY2UsIHN1cHBvc2UgdGhhdCB0aGUKc291cmNlcyBhcmUgaW5zdGFsbGVkIG9uIGEgZGly ZWN0b3J5IHNoYXJlZCBieSB0d28gaG9zdHM6IEBjb2Rle0hPU1QxfQphbmQgQGNvZGV7SE9TVDJ9 LCB3aGljaCBtYXkgYmUgZGlmZmVyZW50IHBsYXRmb3Jtcy4KCkBleGFtcGxlCn4gJSBAa2Jke2Nk IC9uZnMvc3JjfQovbmZzL3NyYyAlIEBrYmR7dGFyIHp4ZiB+L2FtaGVsbG8tMS4wLnRhci5nen0K QGVuZCBleGFtcGxlCgpPbiB0aGUgZmlyc3QgaG9zdCwgeW91IGNvdWxkIGNyZWF0ZSBhIGxvY2Fs IGJ1aWxkIGRpcmVjdG9yeToKQGV4YW1wbGUKW0hPU1QxXSB+ICUgQGtiZHtta2RpciAvdG1wL2Ft aCAmJiBjZCAvdG1wL2FtaH0KW0hPU1QxXSAvdG1wL2FtaCAlIEBrYmR7L25mcy9zcmMvYW1oZWxs by0xLjAvY29uZmlndXJlfQouLi4KW0hPU1QxXSAvdG1wL2FtaCAlIEBrYmR7bWFrZSAmJiBzdWRv IG1ha2UgaW5zdGFsbH0KLi4uCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CihIZXJlIHdlIGFzc3Vt ZSB0aGF0IHRoZSBpbnN0YWxsZXIgaGFzIGNvbmZpZ3VyZWQgQGNvbW1hbmR7c3Vkb30gc28gaXQK Y2FuIGV4ZWN1dGUgQGNvZGV7bWFrZSBpbnN0YWxsfSB3aXRoIHJvb3QgcHJpdmlsZWdlczsgaXQg aXMgbW9yZSBjb252ZW5pZW50CnRoYW4gdXNpbmcgQGNvbW1hbmR7c3V9IGxpa2UgaW4gQHJlZntC YXNpYyBJbnN0YWxsYXRpb259KS4KCk9uIHRoZSBzZWNvbmQgaG9zdCwgeW91IHdvdWxkIGRvIGV4 YWN0bHkgdGhlIHNhbWUsIHBvc3NpYmx5IGF0CnRoZSBzYW1lIHRpbWU6CkBleGFtcGxlCltIT1NU Ml0gfiAlIEBrYmR7bWtkaXIgL3RtcC9hbWggJiYgY2QgL3RtcC9hbWh9CltIT1NUMl0gL3RtcC9h bWggJSBAa2Jkey9uZnMvc3JjL2FtaGVsbG8tMS4wL2NvbmZpZ3VyZX0KLi4uCltIT1NUMl0gL3Rt cC9hbWggJSBAa2Jke21ha2UgJiYgc3VkbyBtYWtlIGluc3RhbGx9Ci4uLgpAZW5kIGV4YW1wbGUK CkBjaW5kZXggcmVhZC1vbmx5IHNvdXJjZSB0cmVlCkBjaW5kZXggc291cmNlIHRyZWUsIHJlYWQt b25seQoKSW4gdGhpcyBzY2VuYXJpbywgbm90aGluZyBmb3JiaWRzIHRoZSBAZmlsZXsvbmZzL3Ny Yy9hbWhlbGxvLTEuMH0KZGlyZWN0b3J5IGZyb20gYmVpbmcgcmVhZC1vbmx5LiAgSW4gZmFjdCBW UEFUSCBidWlsZHMgYXJlIGFsc28gYSBtZWFucwpvZiBidWlsZGluZyBwYWNrYWdlcyBmcm9tIGEg cmVhZC1vbmx5IG1lZGl1bSBzdWNoIGFzIGEgQ0QtUk9NLiAgKFRoZQpGU0YgdXNlZCB0byBzZWxs IENELVJPTXMgd2l0aCB1bnBhY2tlZCBzb3VyY2UgY29kZSwgYmVmb3JlIHRoZSBHTlUKcHJvamVj dCBncmV3IHNvIGJpZy4pCgpAbm9kZSBUd28tUGFydCBJbnN0YWxsCkBzdWJzZWN0aW9uIFR3by1Q YXJ0IEluc3RhbGxhdGlvbgoKSW4gb3VyIGxhc3QgZXhhbXBsZSAoQHB4cmVme1ZQQVRIIEJ1aWxk c30pLCBhIHNvdXJjZSB0cmVlIHdhcyBzaGFyZWQKYnkgdHdvIGhvc3RzLCBidXQgY29tcGlsYXRp b24gYW5kIGluc3RhbGxhdGlvbiB3ZXJlIGRvbmUgc2VwYXJhdGVseSBvbgplYWNoIGhvc3QuCgpU aGUgR05VIEJ1aWxkIFN5c3RlbSBhbHNvIHN1cHBvcnRzIG5ldHdvcmtlZCBzZXR1cHMgd2hlcmUg cGFydCBvZiB0aGUKaW5zdGFsbGVkIGZpbGVzIHNob3VsZCBiZSBzaGFyZWQgYW1vbmcgbXVsdGlw bGUgaG9zdHMuICBJdCBkb2VzIHNvCmJ5IGRpc3Rpbmd1aXNoaW5nIGFyY2hpdGVjdHVyZS1kZXBl bmRlbnQgZmlsZXMgZnJvbQphcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMsIGFuZCBwcm92 aWRpbmcgdHdvIEBmaWxle01ha2VmaWxlfQp0YXJnZXRzIHRvIGluc3RhbGwgZWFjaCBvZiB0aGVz ZSBjbGFzc2VzIG9mIGZpbGVzLgoKQHRyaW5kZXggaW5zdGFsbC1leGVjCkB0cmluZGV4IGluc3Rh bGwtZGF0YQoKVGhlc2UgdGFyZ2V0cyBhcmUgQGNvZGV7aW5zdGFsbC1leGVjfSBmb3IgYXJjaGl0 ZWN0dXJlLWRlcGVuZGVudCBmaWxlcwphbmQgQGNvZGV7aW5zdGFsbC1kYXRhfSBmb3IgYXJjaGl0 ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzLgpUaGUgY29tbWFuZCB3ZSB1c2VkIHVwIHRvIG5vdywg QGNvZGV7bWFrZSBpbnN0YWxsfSwgY2FuIGJlIHRob3VnaHQgb2YKYXMgYSBzaG9ydGhhbmQgZm9y IEBjb2Rle21ha2UgaW5zdGFsbC1leGVjIGluc3RhbGwtZGF0YX0uCgpGcm9tIHRoZSBHTlUgQnVp bGQgU3lzdGVtIHBvaW50IG9mIHZpZXcsIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuCmFyY2hpdGVj dHVyZS1kZXBlbmRlbnQgZmlsZXMgYW5kIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBp cwpiYXNlZCBleGNsdXNpdmVseSBvbiB0aGUgZGlyZWN0b3J5IHZhcmlhYmxlIHVzZWQgdG8gc3Bl Y2lmeSB0aGVpcgppbnN0YWxsYXRpb24gZGVzdGluYXRpb24uICBJbiB0aGUgbGlzdCBvZiBkaXJl Y3RvcnkgdmFyaWFibGVzIHdlCnByb3ZpZGVkIGVhcmxpZXIgKEBweHJlZntTdGFuZGFyZCBEaXJl Y3RvcnkgVmFyaWFibGVzfSksIGFsbCB0aGUKdmFyaWFibGVzIGJhc2VkIG9uIEB2YXJ7ZXhlYy1w cmVmaXh9IGRlc2lnbmF0ZSBhcmNoaXRlY3R1cmUtZGVwZW5kZW50CmRpcmVjdG9yaWVzIHdob3Nl IGZpbGVzIHdpbGwgYmUgaW5zdGFsbGVkIGJ5IEBjb2Rle21ha2UgaW5zdGFsbC1leGVjfS4KVGhl IG90aGVycyBkZXNpZ25hdGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRpcmVjdG9yaWVzIGFu ZCB3aWxsCnNlcnZlIGZpbGVzIGluc3RhbGxlZCBieSBAY29kZXttYWtlIGluc3RhbGwtZGF0YX0u ICBAeHJlZntUaGUgVHdvIFBhcnRzCm9mIEluc3RhbGx9LCBmb3IgbW9yZSBkZXRhaWxzLgoKSGVy ZSBpcyBob3cgd2UgY291bGQgcmV2aXNpdCBvdXIgdHdvLWhvc3QgaW5zdGFsbGF0aW9uIGV4YW1w bGUsCmFzc3VtaW5nIHRoYXQgKDEpIHdlIHdhbnQgdG8gaW5zdGFsbCB0aGUgcGFja2FnZSBkaXJl Y3RseSBpbgpAZmlsZXsvdXNyfSwgYW5kICgyKSB0aGUgZGlyZWN0b3J5IEBmaWxley91c3Ivc2hh cmV9IGlzIHNoYXJlZCBieSB0aGUKdHdvIGhvc3RzLgoKT24gdGhlIGZpcnN0IGhvc3Qgd2Ugd291 bGQgcnVuCkBleGFtcGxlCltIT1NUMV0gfiAlIEBrYmR7bWtkaXIgL3RtcC9hbWggJiYgY2QgL3Rt cC9hbWh9CltIT1NUMV0gL3RtcC9hbWggJSBAa2Jkey9uZnMvc3JjL2FtaGVsbG8tMS4wL2NvbmZp Z3VyZSAtLXByZWZpeCAvdXNyfQouLi4KW0hPU1QxXSAvdG1wL2FtaCAlIEBrYmR7bWFrZSAmJiBz dWRvIG1ha2UgaW5zdGFsbH0KLi4uCkBlbmQgZXhhbXBsZQoKT24gdGhlIHNlY29uZCBob3N0LCBo b3dldmVyLCB3ZSBuZWVkIG9ubHkgaW5zdGFsbCB0aGUKYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZp bGVzLgpAZXhhbXBsZQpbSE9TVDJdIH4gJSBAa2Jke21rZGlyIC90bXAvYW1oICYmIGNkIC90bXAv YW1ofQpbSE9TVDJdIC90bXAvYW1oICUgQGtiZHsvbmZzL3NyYy9hbWhlbGxvLTEuMC9jb25maWd1 cmUgLS1wcmVmaXggL3Vzcn0KLi4uCltIT1NUMl0gL3RtcC9hbWggJSBAa2Jke21ha2UgJiYgc3Vk byBtYWtlIGluc3RhbGwtZXhlY30KLi4uCkBlbmQgZXhhbXBsZQoKSW4gcGFja2FnZXMgdGhhdCBo YXZlIGluc3RhbGxhdGlvbiBjaGVja3MsIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gcnVuCkBjb2Rl e21ha2UgaW5zdGFsbGNoZWNrfSAoQHB4cmVme0Jhc2ljIEluc3RhbGxhdGlvbn0pIHRvIHZlcmlm eSB0aGF0CnRoZSBwYWNrYWdlIHdvcmtzIGNvcnJlY3RseSBkZXNwaXRlIHRoZSBhcHBhcmVudCBw YXJ0aWFsIGluc3RhbGxhdGlvbi4KCkBub2RlIENyb3NzLUNvbXBpbGF0aW9uCkBzdWJzZWN0aW9u IENyb3NzLUNvbXBpbGF0aW9uCkBjaW5kZXggY3Jvc3MtY29tcGlsYXRpb24KClRvIEBkZm57Y3Jv c3MtY29tcGlsZX0gaXMgdG8gYnVpbGQgb24gb25lIHBsYXRmb3JtIGEgYmluYXJ5IHRoYXQgd2ls bApydW4gb24gYW5vdGhlciBwbGF0Zm9ybS4gIFdoZW4gc3BlYWtpbmcgb2YgY3Jvc3MtY29tcGls YXRpb24sIGl0IGlzCmltcG9ydGFudCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBAZGZue2J1 aWxkIHBsYXRmb3JtfSBvbiB3aGljaAp0aGUgY29tcGlsYXRpb24gaXMgcGVyZm9ybWVkLCBhbmQg dGhlIEBkZm57aG9zdCBwbGF0Zm9ybX0gb24gd2hpY2ggdGhlCnJlc3VsdGluZyBleGVjdXRhYmxl IGlzIGV4cGVjdGVkIHRvIHJ1bi4gIFRoZSBmb2xsb3dpbmcKQGNvbW1hbmR7Y29uZmlndXJlfSBv cHRpb25zIGFyZSB1c2VkIHRvIHNwZWNpZnkgZWFjaCBvZiB0aGVtOgoKQHRhYmxlIEBvcHRpb24K QGl0ZW0gLS1idWlsZD1AdmFye2J1aWxkfQpAb3BpbmRleCAtLWJ1aWxkPUB2YXJ7YnVpbGR9ClRo ZSBzeXN0ZW0gb24gd2hpY2ggdGhlIHBhY2thZ2UgaXMgYnVpbHQuCkBpdGVtIC0taG9zdD1AdmFy e2hvc3R9CkBvcGluZGV4IC0taG9zdD1AdmFye2hvc3R9ClRoZSBzeXN0ZW0gd2hlcmUgYnVpbHQg cHJvZ3JhbXMgYW5kIGxpYnJhcmllcyB3aWxsIHJ1bi4KQGVuZCB0YWJsZQoKV2hlbiB0aGUgQG9w dGlvbnstLWhvc3R9IGlzIHVzZWQsIEBjb21tYW5ke2NvbmZpZ3VyZX0gd2lsbCBzZWFyY2ggZm9y CnRoZSBjcm9zcy1jb21waWxpbmcgc3VpdGUgZm9yIHRoaXMgcGxhdGZvcm0uICBDcm9zcy1jb21w aWxhdGlvbiB0b29scwpjb21tb25seSBoYXZlIHRoZWlyIHRhcmdldCBhcmNoaXRlY3R1cmUgYXMg cHJlZml4IG9mIHRoZWlyIG5hbWUuICBGb3IKaW5zdGFuY2UgbXkgY3Jvc3MtY29tcGlsZXIgZm9y IE1pbkdXMzIgaGFzIGl0cyBiaW5hcmllcyBjYWxsZWQKQGNvZGV7aTU4Ni1taW5ndzMybXN2Yy1n Y2N9LCBAY29kZXtpNTg2LW1pbmd3MzJtc3ZjLWxkfSwKQGNvZGV7aTU4Ni1taW5ndzMybXN2Yy1h c30sIGV0Yy4KCkBjaW5kZXggTWluR1cgY3Jvc3MtY29tcGlsYXRpb24gZXhhbXBsZQpAY2luZGV4 IGNyb3NzLWNvbXBpbGF0aW9uIGV4YW1wbGUKCkhlcmUgaXMgaG93IHdlIGNvdWxkIGJ1aWxkIEBj b2Rle2FtaGVsbG8tMS4wfSBmb3IKQGNvZGV7aTU4Ni1taW5ndzMybXN2Y30gb24gYSBHTlUvTGlu dXggUEMuCgpAYyBLZWVwIGluIHN5bmMgd2l0aCBhbWhlbGxvLWNyb3NzLWNvbXBpbGUuc2gKQHNt YWxsZXhhbXBsZQp+L2FtaGVsbG8tMS4wICUgQGtiZHsuL2NvbmZpZ3VyZSAtLWJ1aWxkIGk2ODYt cGMtbGludXgtZ251IC0taG9zdCBpNTg2LW1pbmd3MzJtc3ZjfQpjaGVja2luZyBmb3IgYSBCU0Qt Y29tcGF0aWJsZSBpbnN0YWxsLi4uIC91c3IvYmluL2luc3RhbGwgLWMKY2hlY2tpbmcgd2hldGhl ciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lLi4uIHllcwpjaGVja2luZyBmb3IgZ2F3ay4uLiBn YXdrCmNoZWNraW5nIHdoZXRoZXIgbWFrZSBzZXRzICQoTUFLRSkuLi4geWVzCmNoZWNraW5nIGZv ciBpNTg2LW1pbmd3MzJtc3ZjLXN0cmlwLi4uIGk1ODYtbWluZ3czMm1zdmMtc3RyaXAKY2hlY2tp bmcgZm9yIGk1ODYtbWluZ3czMm1zdmMtZ2NjLi4uIGk1ODYtbWluZ3czMm1zdmMtZ2NjCmNoZWNr aW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFtZS4uLiBhLmV4ZQpjaGVj a2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzLi4uIHllcwpjaGVja2luZyB3aGV0aGVy IHdlIGFyZSBjcm9zcyBjb21waWxpbmcuLi4geWVzCmNoZWNraW5nIGZvciBzdWZmaXggb2YgZXhl Y3V0YWJsZXMuLi4gLmV4ZQpjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcy4uLiBv CmNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlci4uLiB5ZXMK Y2hlY2tpbmcgd2hldGhlciBpNTg2LW1pbmd3MzJtc3ZjLWdjYyBhY2NlcHRzIC1nLi4uIHllcwpj aGVja2luZyBmb3IgaTU4Ni1taW5ndzMybXN2Yy1nY2Mgb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMu Li4KQGRvdHN7fQp+L2FtaGVsbG8tMS4wICUgQGtiZHttYWtlfQpAZG90c3t9Cn4vYW1oZWxsby0x LjAgJSBAa2Jke2NkIHNyYzsgZmlsZSBoZWxsby5leGV9CmhlbGxvLmV4ZTogTVMgV2luZG93cyBQ RSAzMi1iaXQgSW50ZWwgODAzODYgY29uc29sZSBleGVjdXRhYmxlIG5vdCByZWxvY2F0YWJsZQpA ZW5kIHNtYWxsZXhhbXBsZQoKVGhlIEBvcHRpb257LS1ob3N0fSBhbmQgQG9wdGlvbnstLWJ1aWxk fSBvcHRpb25zIGFyZSB1c3VhbGx5IGFsbCB3ZQpuZWVkIGZvciBjcm9zcy1jb21waWxpbmcuICBU aGUgb25seSBleGNlcHRpb24gaXMgaWYgdGhlIHBhY2thZ2UgYmVpbmcKYnVpbHQgaXMgaXRzZWxm IGEgY3Jvc3MtY29tcGlsZXI6IHdlIG5lZWQgYSB0aGlyZCBvcHRpb24gdG8gc3BlY2lmeQppdHMg dGFyZ2V0IGFyY2hpdGVjdHVyZS4KCkB0YWJsZSBAb3B0aW9uCkBpdGVtIC0tdGFyZ2V0PUB2YXJ7 dGFyZ2V0fQpAb3BpbmRleCAtLXRhcmdldD1AdmFye3RhcmdldH0KV2hlbiBidWlsZGluZyBjb21w aWxlciB0b29sczogdGhlIHN5c3RlbSBmb3Igd2hpY2ggdGhlIHRvb2xzIHdpbGwKY3JlYXRlIG91 dHB1dC4KQGVuZCB0YWJsZQoKRm9yIGluc3RhbmNlIHdoZW4gaW5zdGFsbGluZyBHQ0MsIHRoZSBH TlUgQ29tcGlsZXIgQ29sbGVjdGlvbiwgd2UgY2FuCnVzZSBAb3B0aW9uey0tdGFyZ2V0PUAvQHZh cnt0YXJnZXR9fSB0byBzcGVjaWZ5IHRoYXQgd2Ugd2FudCB0byBidWlsZApHQ0MgYXMgYSBjcm9z cy1jb21waWxlciBmb3IgQHZhcnt0YXJnZXR9LiAgTWl4aW5nIEBvcHRpb257LS1idWlsZH0gYW5k CkBvcHRpb257LS10YXJnZXR9LCB3ZSBjYW4gY3Jvc3MtY29tcGlsZSBhIGNyb3NzLWNvbXBpbGVy OyBzdWNoIGEKdGhyZWUtd2F5IGNyb3NzLWNvbXBpbGF0aW9uIGlzIGtub3duIGFzIGEgQGRmbntD YW5hZGlhbiBjcm9zc30uCgpAeHJlZntTcGVjaWZ5aW5nIE5hbWVzLCAsIFNwZWNpZnlpbmcgdGhl IFN5c3RlbSBUeXBlLCBhdXRvY29uZiwgVGhlCkF1dG9jb25mIE1hbnVhbH0sIGZvciBtb3JlIGlu Zm9ybWF0aW9uIGFib3V0IHRoZXNlIEBjb21tYW5ke2NvbmZpZ3VyZX0Kb3B0aW9ucy4KCkBub2Rl IFJlbmFtaW5nCkBzdWJzZWN0aW9uIFJlbmFtaW5nIFByb2dyYW1zIGF0IEluc3RhbGwgVGltZQpA Y2luZGV4IFJlbmFtaW5nIHByb2dyYW1zCkBjaW5kZXggVHJhbnNmb3JtaW5nIHByb2dyYW0gbmFt ZXMKQGNpbmRleCBQcm9ncmFtcywgcmVuYW1pbmcgZHVyaW5nIGluc3RhbGxhdGlvbgoKVGhlIEdO VSBCdWlsZCBTeXN0ZW0gcHJvdmlkZXMgbWVhbnMgdG8gYXV0b21hdGljYWxseSByZW5hbWUKZXhl Y3V0YWJsZXMgYW5kIG1hbnBhZ2VzIGJlZm9yZSB0aGV5IGFyZSBpbnN0YWxsZWQgKEBweHJlZntN YW4gUGFnZXN9KS4KVGhpcyBpcyBlc3BlY2lhbGx5IGNvbnZlbmllbnQKd2hlbiBpbnN0YWxsaW5n IGEgR05VIHBhY2thZ2Ugb24gYSBzeXN0ZW0gdGhhdCBhbHJlYWR5IGhhcyBhCnByb3ByaWV0YXJ5 IGltcGxlbWVudGF0aW9uIHlvdSBkbyBub3Qgd2FudCB0byBvdmVyd3JpdGUuICBGb3IgaW5zdGFu Y2UsCnlvdSBtYXkgd2FudCB0byBpbnN0YWxsIEdOVSBAY29tbWFuZHt0YXJ9IGFzIEBjb21tYW5k e2d0YXJ9IHNvIHlvdSBjYW4KZGlzdGluZ3Vpc2ggaXQgZnJvbSB5b3VyIHZlbmRvcidzIEBjb21t YW5ke3Rhcn0uCgpUaGlzIGNhbiBiZSBkb25lIHVzaW5nIG9uZSBvZiB0aGVzZSB0aHJlZSBAY29t bWFuZHtjb25maWd1cmV9IG9wdGlvbnMuCgpAdGFibGUgQG9wdGlvbgpAaXRlbSAtLXByb2dyYW0t cHJlZml4PUB2YXJ7cHJlZml4fQpAb3BpbmRleCAtLXByb2dyYW0tcHJlZml4PUB2YXJ7cHJlZml4 fQpQcmVwZW5kIEB2YXJ7cHJlZml4fSB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcy4KQGl0ZW0g LS1wcm9ncmFtLXN1ZmZpeD1AdmFye3N1ZmZpeH0KQG9waW5kZXggLS1wcm9ncmFtLXN1ZmZpeD1A dmFye3N1ZmZpeH0KQXBwZW5kIEB2YXJ7c3VmZml4fSB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1l cy4KQGl0ZW0gLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPUB2YXJ7cHJvZ3JhbX0KQG9waW5kZXgg LS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPUB2YXJ7cHJvZ3JhbX0KUnVuIEBjb2Rle3NlZCBAdmFy e3Byb2dyYW19fSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcy4KQGVuZCB0YWJsZQoKVGhlIGZv bGxvd2luZyBjb21tYW5kcyB3b3VsZCBpbnN0YWxsIEBmaWxle2hlbGxvfQphcyBAZmlsZXsvdXNy L2xvY2FsL2Jpbi90ZXN0LWhlbGxvfSwgZm9yIGluc3RhbmNlLgoKQGV4YW1wbGUKfi9hbWhlbGxv LTEuMCAlIEBrYmR7Li9jb25maWd1cmUgLS1wcm9ncmFtLXByZWZpeCB0ZXN0LX0KQGRvdHN7fQp+ L2FtaGVsbG8tMS4wICUgQGtiZHttYWtlfQpAZG90c3t9Cn4vYW1oZWxsby0xLjAgJSBAa2Jke3N1 ZG8gbWFrZSBpbnN0YWxsfQpAZG90c3t9CkBlbmQgZXhhbXBsZQoKQG5vZGUgREVTVERJUgpAc3Vi c2VjdGlvbiBCdWlsZGluZyBCaW5hcnkgUGFja2FnZXMgVXNpbmcgREVTVERJUgpAdmluZGV4IERF U1RESVIKClRoZSBHTlUgQnVpbGQgU3lzdGVtJ3MgQGNvZGV7bWFrZSBpbnN0YWxsfSBhbmQgQGNv ZGV7bWFrZSB1bmluc3RhbGx9CmludGVyZmFjZSBkb2VzIG5vdCBleGFjdGx5IGZpdCB0aGUgbmVl ZHMgb2YgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvcgp3aG8gaGFzIHRvIGRlcGxveSBhbmQgdXBncmFk ZSBwYWNrYWdlcyBvbiBsb3RzIG9mIGhvc3RzLiAgSW4gb3RoZXIKd29yZHMsIHRoZSBHTlUgQnVp bGQgU3lzdGVtIGRvZXMgbm90IHJlcGxhY2UgYSBwYWNrYWdlIG1hbmFnZXIuCgpTdWNoIHBhY2th Z2UgbWFuYWdlcnMgdXN1YWxseSBuZWVkIHRvIGtub3cgd2hpY2ggZmlsZXMgaGF2ZSBiZWVuCmlu c3RhbGxlZCBieSBhIHBhY2thZ2UsIHNvIGEgbWVyZSBAY29kZXttYWtlIGluc3RhbGx9IGlzCmlu YXBwcm9wcmlhdGUuCgpAY2luZGV4IFN0YWdlZCBpbnN0YWxsYXRpb24KClRoZSBAY29kZXtERVNU RElSfSB2YXJpYWJsZSBjYW4gYmUgdXNlZCB0byBwZXJmb3JtIGEgc3RhZ2VkCmluc3RhbGxhdGlv bi4gIFRoZSBwYWNrYWdlIHNob3VsZCBiZSBjb25maWd1cmVkIGFzIGlmIGl0IHdhcyBnb2luZyB0 bwpiZSBpbnN0YWxsZWQgaW4gaXRzIGZpbmFsIGxvY2F0aW9uIChlLmcuLCBAY29kZXstLXByZWZp eCAvdXNyfSksIGJ1dAp3aGVuIHJ1bm5pbmcgQGNvZGV7bWFrZSBpbnN0YWxsfSwgdGhlIEBjb2Rl e0RFU1RESVJ9IHNob3VsZCBiZSBzZXQgdG8KdGhlIGFic29sdXRlIG5hbWUgb2YgYSBkaXJlY3Rv cnkgaW50byB3aGljaCB0aGUgaW5zdGFsbGF0aW9uIHdpbGwgYmUKZGl2ZXJ0ZWQuICBGcm9tIHRo aXMgZGlyZWN0b3J5IGl0IGlzIGVhc3kgdG8gcmV2aWV3IHdoaWNoIGZpbGVzIGFyZQpiZWluZyBp bnN0YWxsZWQgd2hlcmUsIGFuZCBmaW5hbGx5IGNvcHkgdGhlbSB0byB0aGVpciBmaW5hbCBsb2Nh dGlvbgpieSBzb21lIG1lYW5zLgoKQGNpbmRleCBCaW5hcnkgcGFja2FnZQoKRm9yIGluc3RhbmNl IGhlcmUgaXMgaG93IHdlIGNvdWxkIGNyZWF0ZSBhIGJpbmFyeSBwYWNrYWdlIGNvbnRhaW5pbmcg YQpzbmFwc2hvdCBvZiBhbGwgdGhlIGZpbGVzIHRvIGJlIGluc3RhbGxlZC4KCkBjIEtlZXAgaW4g c3luYyB3aXRoIGFtaGVsbG8tYmlucGtnLnNoCkBleGFtcGxlCn4vYW1oZWxsby0xLjAgJSBAa2Jk ey4vY29uZmlndXJlIC0tcHJlZml4IC91c3J9CkBkb3Rze30Kfi9hbWhlbGxvLTEuMCAlIEBrYmR7 bWFrZX0KQGRvdHN7fQp+L2FtaGVsbG8tMS4wICUgQGtiZHttYWtlIERFU1RESVI9JEhPTUUvaW5z dCBpbnN0YWxsfQpAZG90c3t9Cn4vYW1oZWxsby0xLjAgJSBAa2Jke2NkIH4vaW5zdH0Kfi9pbnN0 ICUgQGtiZHtmaW5kIC4gLXR5cGUgZiAtcHJpbnQgPiAuLi9maWxlcy5sc3R9Cn4vaW5zdCAlIEBr YmR7dGFyIHpjdmYgfi9hbWhlbGxvLTEuMC1pNjg2LnRhci5neiBgY2F0IC4uL2ZpbGVzLmxzdGB9 Ci4vdXNyL2Jpbi9oZWxsbwouL3Vzci9zaGFyZS9kb2MvYW1oZWxsby9SRUFETUUKQGVuZCBleGFt cGxlCgpBZnRlciB0aGlzIGV4YW1wbGUsIEBjb2Rle2FtaGVsbG8tMS4wLWk2ODYudGFyLmd6fSBp cyByZWFkeSB0byBiZQpkZWNvbXByZXNzZWQgaW4gQGZpbGV7L30gb24gbWFueSBob3N0cy4gIChV c2luZyBAY29kZXtgY2F0IC4uL2ZpbGVzLmxzdGB9Cmluc3RlYWQgb2YgQHNhbXB7Ln0gYXMgYXJn dW1lbnQgZm9yIEBjb21tYW5ke3Rhcn0gYXZvaWRzIGVudHJpZXMgZm9yCmVhY2ggc3ViZGlyZWN0 b3J5IGluIHRoZSBhcmNoaXZlOiB3ZSB3b3VsZCBub3QgbGlrZSBAY29tbWFuZHt0YXJ9IHRvCnJl c3RvcmUgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9mIEBmaWxley99LCBAZmlsZXsvdXNyL30sIGV0 Yy4pCgpOb3RlIHRoYXQgd2hlbiBidWlsZGluZyBwYWNrYWdlcyBmb3Igc2V2ZXJhbCBhcmNoaXRl Y3R1cmVzLCBpdCBtaWdodApiZSBjb252ZW5pZW50IHRvIHVzZSBAY29kZXttYWtlIGluc3RhbGwt ZGF0YX0gYW5kIEBjb2Rle21ha2UKaW5zdGFsbC1leGVjfSAoQHB4cmVme1R3by1QYXJ0IEluc3Rh bGx9KSB0byBnYXRoZXIKYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzIGluIGEgc2luZ2xl IHBhY2thZ2UuCgpAeHJlZntJbnN0YWxsfSwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgpAYyBXZSBz aG91bGQgZG9jdW1lbnQgUFJFX0lOU1RBTEwvUE9TVF9JTlNUQUxML05PUk1BTF9JTlNUQUxMIGFu ZCB0aGVpcgpAYyBVTklOU1RBTEwgY291bnRlcnBhcnRzLgoKQG5vZGUgUHJlcGFyaW5nIERpc3Ry aWJ1dGlvbnMKQHN1YnNlY3Rpb24gUHJlcGFyaW5nIERpc3RyaWJ1dGlvbnMKQGNpbmRleCBQcmVw YXJpbmcgZGlzdHJpYnV0aW9ucwpAY2luZGV4IFBhY2thZ2VzLCBwcmVwYXJhdGlvbgpAY2luZGV4 IERpc3RyaWJ1dGlvbnMsIHByZXBhcmF0aW9uCgpXZSBoYXZlIGFscmVhZHkgbWVudGlvbmVkIEBj b2Rle21ha2UgZGlzdH0uICBUaGlzIHRhcmdldCBjb2xsZWN0cyBhbGwKeW91ciBzb3VyY2UgZmls ZXMgYW5kIHRoZSBuZWNlc3NhcnkgcGFydHMgb2YgdGhlIGJ1aWxkIHN5c3RlbSB0bwpjcmVhdGUg YSB0YXJiYWxsIG5hbWVkIEBmaWxle0B2YXJ7cGFja2FnZX0tQHZhcnt2ZXJzaW9ufS50YXIuZ3p9 LgoKQGNpbmRleCBAY29kZXtkaXN0Y2hlY2t9IGJldHRlciB0aGFuIEBjb2Rle2Rpc3R9CgpBbm90 aGVyLCBtb3JlIHVzZWZ1bCBjb21tYW5kIGlzIEBjb2Rle21ha2UgZGlzdGNoZWNrfS4gIFRoZQpA Y29kZXtkaXN0Y2hlY2t9IHRhcmdldCBjb25zdHJ1Y3RzCkBmaWxle0B2YXJ7cGFja2FnZX0tQHZh cnt2ZXJzaW9ufS50YXIuZ3p9IGp1c3QgYXMgd2VsbCBhcyBAY29kZXtkaXN0fSwKYnV0IGl0IGFk ZGl0aW9uYWxseSBlbnN1cmVzIG1vc3Qgb2YgdGhlIHVzZSBjYXNlcyBwcmVzZW50ZWQgc28gZmFy Cndvcms6CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkl0IGF0dGVtcHRzIGEgZnVsbCBjb21waWxh dGlvbiBvZiB0aGUgcGFja2FnZSAoQHB4cmVme0Jhc2ljCkluc3RhbGxhdGlvbn0pOiB1bnBhY2tp bmcgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIHRhcmJhbGwsIHJ1bm5pbmcKQGNvZGV7bWFrZX0sIEBj b2Rle21ha2UgZHZpfSwgQGNvZGV7bWFrZSBjaGVja30sIEBjb2Rle21ha2UgaW5zdGFsbH0sCmFz IHdlbGwgYXMgQGNvZGV7bWFrZSBpbnN0YWxsY2hlY2t9LCBhbmQgZXZlbiBAY29kZXttYWtlIGRp c3R9LApAaXRlbQppdCB0ZXN0cyBWUEFUSCBidWlsZHMgd2l0aCByZWFkLW9ubHkgc291cmNlIHRy ZWUgKEBweHJlZntWUEFUSCBCdWlsZHN9KSwKQGl0ZW0KaXQgbWFrZXMgc3VyZSBAY29kZXttYWtl IGNsZWFufSwgQGNvZGV7bWFrZSBkaXN0Y2xlYW59LCBhbmQgQGNvZGV7bWFrZQp1bmluc3RhbGx9 IGRvIG5vdCBvbWl0IGFueSBmaWxlIChAcHhyZWZ7U3RhbmRhcmQgVGFyZ2V0c30pLApAaXRlbQph bmQgaXQgY2hlY2tzIHRoYXQgQGNvZGV7REVTVERJUn0gaW5zdGFsbGF0aW9ucyB3b3JrIChAcHhy ZWZ7REVTVERJUn0pLgpAZW5kIGl0ZW1pemUKCkFsbCBvZiB0aGVzZSBhY3Rpb25zIGFyZSBwZXJm b3JtZWQgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LCBzbyB0aGF0Cm5vIHJvb3QgcHJpdmlsZWdl cyBhcmUgcmVxdWlyZWQuICBUaGUgZXhhY3QgbG9jYXRpb24gYW5kIHRoZSBleGFjdApzdHJ1Y3R1 cmUgb2Ygc3VjaCBhIHN1YmRpcmVjdG9yeSAod2hlcmUgdGhlIGV4dHJhY3RlZCBzb3VyY2VzIGFy ZQpwbGFjZWQsIGhvdyB0aGUgdGVtcG9yYXJ5IGJ1aWxkIGFuZCBpbnN0YWxsIGRpcmVjdG9yaWVz IGFyZSBuYW1lZCBhbmQKaG93IGRlZXBseSB0aGV5IGFyZSBuZXN0ZWQsIGV0Yy4pIGlzIHRvIGJl IGNvbnNpZGVyZWQgYW4KaW1wbGVtZW50YXRpb24gZGV0YWlsLCB3aGljaCBjYW4gY2hhbmdlIGF0 IGFueSB0aW1lOyBzbyBkbyBub3QgcmVseSBvbgppdC4KClJlbGVhc2luZyBhIHBhY2thZ2UgdGhh dCBmYWlscyBAY29kZXttYWtlIGRpc3RjaGVja30gbWVhbnMgdGhhdCBvbmUgb2YKdGhlIHNjZW5h cmlvcyB3ZSBwcmVzZW50ZWQgd2lsbCBub3Qgd29yayBhbmQgc29tZSB1c2VycyB3aWxsIGJlCmRp c2FwcG9pbnRlZC4gIFRoZXJlZm9yZSBpdCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8gcmVsZWFzZSBh IHBhY2thZ2UKb25seSBhZnRlciBhIHN1Y2Nlc3NmdWwgQGNvZGV7bWFrZSBkaXN0Y2hlY2t9LiAg VGhpcyBvZiBjb3Vyc2UgZG9lcwpub3QgaW1wbHkgdGhhdCB0aGUgcGFja2FnZSB3aWxsIGJlIGZs YXdsZXNzLCBidXQgYXQgbGVhc3QgaXQgd2lsbApwcmV2ZW50IHNvbWUgb2YgdGhlIGVtYmFycmFz c2luZyBlcnJvcnMgeW91IG1heSBmaW5kIGluIHBhY2thZ2VzCnJlbGVhc2VkIGJ5IHBlb3BsZSB3 aG8gaGF2ZSBuZXZlciBoZWFyZCBhYm91dCBAY29kZXtkaXN0Y2hlY2t9IChsaWtlCkBjb2Rle0RF U1RESVJ9IG5vdCB3b3JraW5nIGJlY2F1c2Ugb2YgYSB0eXBvLCBvciBhIGRpc3RyaWJ1dGVkIGZp bGUKYmVpbmcgZXJhc2VkIGJ5IEBjb2Rle21ha2UgY2xlYW59LCBvciBldmVuIEBjb2Rle1ZQQVRI fSBidWlsZHMgbm90CndvcmtpbmcpLgoKQHhyZWZ7Q3JlYXRpbmcgYW1oZWxsb30sIHRvIHJlY3Jl YXRlIEBmaWxle2FtaGVsbG8tMS4wLnRhci5nen0gdXNpbmcKQGNvZGV7bWFrZSBkaXN0Y2hlY2t9 LiAgQHhyZWZ7Q2hlY2tpbmcgdGhlIERpc3RyaWJ1dGlvbn0sIGZvciBtb3JlCmluZm9ybWF0aW9u IGFib3V0IEBjb2Rle2Rpc3RjaGVja30uCgpAbm9kZSBEZXBlbmRlbmN5IFRyYWNraW5nCkBzdWJz ZWN0aW9uIEF1dG9tYXRpYyBEZXBlbmRlbmN5IFRyYWNraW5nCkBjaW5kZXggRGVwZW5kZW5jeSB0 cmFja2luZwoKRGVwZW5kZW5jeSB0cmFja2luZyBpcyBwZXJmb3JtZWQgYXMgYSBzaWRlLWVmZmVj dCBvZiBjb21waWxhdGlvbi4KRWFjaCB0aW1lIHRoZSBidWlsZCBzeXN0ZW0gY29tcGlsZXMgYSBz b3VyY2UgZmlsZSwgaXQgY29tcHV0ZXMgaXRzCmxpc3Qgb2YgZGVwZW5kZW5jaWVzIChpbiBDIHRo ZXNlIGFyZSB0aGUgaGVhZGVyIGZpbGVzIGluY2x1ZGVkIGJ5IHRoZQpzb3VyY2UgYmVpbmcgY29t cGlsZWQpLiAgTGF0ZXIsIGFueSB0aW1lIEBjb21tYW5ke21ha2V9IGlzIHJ1biBhbmQgYQpkZXBl bmRlbmN5IGFwcGVhcnMgdG8gaGF2ZSBjaGFuZ2VkLCB0aGUgZGVwZW5kZW50IGZpbGVzIHdpbGwg YmUKcmVidWlsdC4KCkF1dG9tYWtlIGdlbmVyYXRlcyBjb2RlIGZvciBhdXRvbWF0aWMgZGVwZW5k ZW5jeSB0cmFja2luZyBieSBkZWZhdWx0LAp1bmxlc3MgdGhlIGRldmVsb3BlciBjaG9vc2VzIHRv IG92ZXJyaWRlIGl0OyBmb3IgbW9yZSBpbmZvcm1hdGlvbiwKQHB4cmVme0RlcGVuZGVuY2llc30u CgpXaGVuIEBjb21tYW5ke2NvbmZpZ3VyZX0gaXMgZXhlY3V0ZWQsIHlvdSBjYW4gc2VlIGl0IHBy b2JpbmcgZWFjaApjb21waWxlciBmb3IgdGhlIGRlcGVuZGVuY3kgbWVjaGFuaXNtIGl0IHN1cHBv cnRzIChzZXZlcmFsIG1lY2hhbmlzbXMKY2FuIGJlIHVzZWQpOgoKQGV4YW1wbGUKfi9hbWhlbGxv LTEuMCAlIEBrYmR7Li9jb25maWd1cmUgLS1wcmVmaXggL3Vzcn0KQGRvdHN7fQpjaGVja2luZyBk ZXBlbmRlbmN5IHN0eWxlIG9mIGdjYy4uLiBnY2MzCkBkb3Rze30KQGVuZCBleGFtcGxlCgpCZWNh dXNlIGRlcGVuZGVuY2llcyBhcmUgb25seSBjb21wdXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRo ZQpjb21waWxhdGlvbiwgbm8gZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBleGlzdHMgdGhlIGZpcnN0 IHRpbWUgYSBwYWNrYWdlCmlzIGJ1aWx0LiAgVGhpcyBpcyBPSyBiZWNhdXNlIGFsbCB0aGUgZmls ZXMgbmVlZCB0byBiZSBidWlsdCBhbnl3YXk6CkBjb2Rle21ha2V9IGRvZXMgbm90IGhhdmUgdG8g ZGVjaWRlIHdoaWNoIGZpbGVzIG5lZWQgdG8gYmUgcmVidWlsdC4KSW4gZmFjdCwgZGVwZW5kZW5j eSB0cmFja2luZyBpcyBjb21wbGV0ZWx5IHVzZWxlc3MgZm9yIG9uZS10aW1lIGJ1aWxkcwphbmQg dGhlcmUgaXMgYSBAY29tbWFuZHtjb25maWd1cmV9IG9wdGlvbiB0byBkaXNhYmxlIHRoaXM6CgpA dGFibGUgQG9wdGlvbgpAaXRlbSAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZwpAb3BpbmRl eCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZwpTcGVlZCB1cCBvbmUtdGltZSBidWlsZHMu CkBlbmQgdGFibGUKClNvbWUgY29tcGlsZXJzIGRvIG5vdCBvZmZlciBhbnkgcHJhY3RpY2FsIHdh eSB0byBkZXJpdmUgdGhlIGxpc3Qgb2YKZGVwZW5kZW5jaWVzIGFzIGEgc2lkZS1lZmZlY3Qgb2Yg dGhlIGNvbXBpbGF0aW9uLCByZXF1aXJpbmcgYSBzZXBhcmF0ZQpydW4gKG1heWJlIG9mIGFub3Ro ZXIgdG9vbCkgdG8gY29tcHV0ZSB0aGVzZSBkZXBlbmRlbmNpZXMuICBUaGUKcGVyZm9ybWFuY2Ug cGVuYWx0eSBpbXBsaWVkIGJ5IHRoZXNlIG1ldGhvZHMgaXMgaW1wb3J0YW50IGVub3VnaCB0bwpk aXNhYmxlIHRoZW0gYnkgZGVmYXVsdC4gIFRoZSBvcHRpb24gQG9wdGlvbnstLWVuYWJsZS1kZXBl bmRlbmN5LXRyYWNraW5nfQptdXN0IGJlIHBhc3NlZCB0byBAY29tbWFuZHtjb25maWd1cmV9IHRv IGFjdGl2YXRlIHRoZW0uCgpAdGFibGUgQG9wdGlvbgpAaXRlbSAtLWVuYWJsZS1kZXBlbmRlbmN5 LXRyYWNraW5nCkBvcGluZGV4IC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcKRG8gbm90IHJl amVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9ycy4KQGVuZCB0YWJsZQoKQHhyZWZ7RGVwZW5k ZW5jeSBUcmFja2luZyBFdm9sdXRpb24sICwgRGVwZW5kZW5jeSBUcmFja2luZyBFdm9sdXRpb24s CmF1dG9tYWtlLWhpc3RvcnksIEJyaWVmIEhpc3Rvcnkgb2YgQXV0b21ha2V9LCBmb3Igc29tZSBk aXNjdXNzaW9uIGFib3V0CnRoZSBkaWZmZXJlbnQgZGVwZW5kZW5jeSB0cmFja2luZyBzY2hlbWVz IHVzZWQgYnkgQXV0b21ha2Ugb3ZlciB0aGUgeWVhcnMuCgpAbm9kZSBOZXN0ZWQgUGFja2FnZXMK QHN1YnNlY3Rpb24gTmVzdGVkIFBhY2thZ2VzCkBjaW5kZXggTmVzdGVkIHBhY2thZ2VzCkBjaW5k ZXggUGFja2FnZXMsIG5lc3RlZApAY2luZGV4IFN1YnBhY2thZ2VzCgpBbHRob3VnaCBuZXN0aW5n IHBhY2thZ2VzIGlzbid0IHNvbWV0aGluZyB3ZSB3b3VsZCByZWNvbW1lbmQgdG8Kc29tZW9uZSB3 aG8gaXMgZGlzY292ZXJpbmcgdGhlIEF1dG90b29scywgaXQgaXMgYSBuaWNlIGZlYXR1cmUgd29y dGh5Cm9mIG1lbnRpb24gaW4gdGhpcyBzbWFsbCBhZHZlcnRpc2luZyB0b3VyLgoKQXV0b2NvbmZp c2NhdGVkIHBhY2thZ2VzIChtZWFuaW5nIHBhY2thZ2VzIHdob3NlIGJ1aWxkIHN5c3RlbSBoYXZl CmJlZW4gY3JlYXRlZCBieSBBdXRvY29uZiBhbmQgZnJpZW5kcykgY2FuIGJlIG5lc3RlZCB0byBh cmJpdHJhcnkKZGVwdGguCgpBIHR5cGljYWwgc2V0dXAgaXMgdGhhdCBwYWNrYWdlIEEgd2lsbCBk aXN0cmlidXRlIG9uZSBvZiB0aGUgbGlicmFyaWVzCml0IG5lZWRzIGluIGEgc3ViZGlyZWN0b3J5 LiAgVGhpcyBsaWJyYXJ5IEIgaXMgYSBjb21wbGV0ZSBwYWNrYWdlIHdpdGgKaXRzIG93biBHTlUg QnVpbGQgU3lzdGVtLiAgVGhlIEBjb21tYW5ke2NvbmZpZ3VyZX0gc2NyaXB0IG9mIEEgd2lsbApy dW4gdGhlIEBjb21tYW5ke2NvbmZpZ3VyZX0gc2NyaXB0IG9mIEIgYXMgcGFydCBvZiBpdHMgZXhl Y3V0aW9uOwpidWlsZGluZyBhbmQgaW5zdGFsbGluZyBBIHdpbGwgYWxzbyBidWlsZCBhbmQgaW5z dGFsbCBCLiAgR2VuZXJhdGluZyBhCmRpc3RyaWJ1dGlvbiBmb3IgQSB3aWxsIGFsc28gaW5jbHVk ZSBCLgoKSXQgaXMgcG9zc2libGUgdG8gZ2F0aGVyIHNldmVyYWwgcGFja2FnZXMgbGlrZSB0aGlz LiAgR0NDIGlzIGEgaGVhdnkKdXNlciBvZiB0aGlzIGZlYXR1cmUuICBUaGlzIGdpdmVzIGluc3Rh bGxlcnMgYSBzaW5nbGUgcGFja2FnZSB0bwpjb25maWd1cmUsIGJ1aWxkIGFuZCBpbnN0YWxsLCB3 aGlsZSBpdCBhbGxvd3MgZGV2ZWxvcGVycyB0byB3b3JrIG9uCnN1YnBhY2thZ2VzIGluZGVwZW5k ZW50bHkuCgpXaGVuIGNvbmZpZ3VyaW5nIG5lc3RlZCBwYWNrYWdlcywgdGhlIEBjb21tYW5ke2Nv bmZpZ3VyZX0gb3B0aW9ucwpnaXZlbiB0byB0aGUgdG9wLWxldmVsIEBjb21tYW5ke2NvbmZpZ3Vy ZX0gYXJlIHBhc3NlZCByZWN1cnNpdmVseSB0bwpuZXN0ZWQgQGNvbW1hbmR7Y29uZmlndXJlfXMu ICBBIHBhY2thZ2UgdGhhdCBkb2VzIG5vdCB1bmRlcnN0YW5kIGFuCm9wdGlvbiB3aWxsIGlnbm9y ZSBpdCwgYXNzdW1pbmcgaXQgaXMgbWVhbmluZ2Z1bCB0byBzb21lIG90aGVyCnBhY2thZ2UuCgpA b3BpbmRleCAtLWhlbHA9cmVjdXJzaXZlCgpUaGUgY29tbWFuZCBAY29kZXtjb25maWd1cmUgLS1o ZWxwPXJlY3Vyc2l2ZX0gY2FuIGJlIHVzZWQgdG8gZGlzcGxheQp0aGUgb3B0aW9ucyBzdXBwb3J0 ZWQgYnkgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcy4KCkB4cmVme1N1YnBhY2thZ2VzfSwgZm9y IGFuIGV4YW1wbGUgc2V0dXAuCgpAbm9kZSBXaHkgQXV0b3Rvb2xzCkBzZWN0aW9uIEhvdyBBdXRv dG9vbHMgSGVscApAY2luZGV4IEF1dG90b29scywgcHVycG9zZQoKVGhlcmUgYXJlIHNldmVyYWwg cmVhc29ucyB3aHkgeW91IG1heSBub3Qgd2FudCB0byBpbXBsZW1lbnQgdGhlIEdOVQpCdWlsZCBT eXN0ZW0geW91cnNlbGYgKHJlYWQ6IHdyaXRlIGEgQGZpbGV7Y29uZmlndXJlfSBzY3JpcHQgYW5k CkBmaWxle01ha2VmaWxlfXMgeW91cnNlbGYpLgoKQGl0ZW1pemUgQGJ1bGxldApAaXRlbQpBcyB3 ZSBoYXZlIHNlZW4sIHRoZSBHTlUgQnVpbGQgU3lzdGVtIGhhcyBhIGxvdCBvZgpmZWF0dXJlcyAo QHB4cmVme1VzZSBDYXNlc30pLgpTb21lIHVzZXJzIG1heSBleHBlY3QgZmVhdHVyZXMgeW91IGhh dmUgbm90IGltcGxlbWVudGVkIGJlY2F1c2UKeW91IGRpZCBub3QgbmVlZCB0aGVtLgpAaXRlbQpJ bXBsZW1lbnRpbmcgdGhlc2UgZmVhdHVyZXMgcG9ydGFibHkgaXMgZGlmZmljdWx0IGFuZCBleGhh dXN0aW5nLgpUaGluayBvZiB3cml0aW5nIHBvcnRhYmxlIHNoZWxsIHNjcmlwdHMsIGFuZCBwb3J0 YWJsZQpAZmlsZXtNYWtlZmlsZX1zLCBmb3Igc3lzdGVtcyB5b3UgbWF5IG5vdCBoYXZlIGhhbmR5 LiAgQHhyZWZ7UG9ydGFibGUKU2hlbGwsICwgUG9ydGFibGUgU2hlbGwgUHJvZ3JhbW1pbmcsIGF1 dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSwgdG8KY29udmluY2UgeW91cnNlbGYuCkBpdGVt CllvdSB3aWxsIGhhdmUgdG8gdXBncmFkZSB5b3VyIHNldHVwIHRvIGZvbGxvdyBjaGFuZ2VzIHRv IHRoZSBHTlUKQ29kaW5nIFN0YW5kYXJkcy4KQGVuZCBpdGVtaXplCgpUaGUgR05VIEF1dG90b29s cyB0YWtlIGFsbCB0aGlzIGJ1cmRlbiBvZmYgeW91ciBiYWNrIGFuZCBwcm92aWRlOgoKQGl0ZW1p emUgQGJ1bGxldApAaXRlbQpUb29scyB0byBjcmVhdGUgYSBwb3J0YWJsZSwgY29tcGxldGUsIGFu ZCBzZWxmLWNvbnRhaW5lZCBHTlUgQnVpbGQKU3lzdGVtLCBmcm9tIHNpbXBsZSBpbnN0cnVjdGlv bnMuCkBlbXBoe1NlbGYtY29udGFpbmVkfSBtZWFuaW5nIHRoZSByZXN1bHRpbmcgYnVpbGQgc3lz dGVtIGRvZXMgbm90CnJlcXVpcmUgdGhlIEdOVSBBdXRvdG9vbHMuCkBpdGVtCkEgY2VudHJhbCBw bGFjZSB3aGVyZSBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzIGFyZSBtYWRlOgphIGJ1Zy1maXggZm9y IGEgcG9ydGFiaWxpdHkgaXNzdWUgd2lsbCBiZW5lZml0IGV2ZXJ5IHBhY2thZ2UuCkBlbmQgaXRl bWl6ZQoKWWV0IHRoZXJlIGFsc28gZXhpc3QgcmVhc29ucyB3aHkgeW91IG1heSB3YW50IE5PVCB0 byB1c2UgdGhlCkF1dG90b29sc0BlbmRkb3Rze30gRm9yIGluc3RhbmNlIHlvdSBtYXkgYmUgYWxy ZWFkeSB1c2luZyAob3IgdXNlZCB0bykKYW5vdGhlciBpbmNvbXBhdGlibGUgYnVpbGQgc3lzdGVt LiAgQXV0b3Rvb2xzIHdpbGwgb25seSBiZSB1c2VmdWwgaWYKeW91IGRvIGFjY2VwdCB0aGUgY29u Y2VwdHMgb2YgdGhlIEdOVSBCdWlsZCBTeXN0ZW0uICBQZW9wbGUgd2hvIGhhdmUgdGhlaXIKb3du IGlkZWEgb2YgaG93IGEgYnVpbGQgc3lzdGVtIHNob3VsZCB3b3JrIHdpbGwgZmVlbCBmcnVzdHJh dGVkIGJ5IHRoZQpBdXRvdG9vbHMuCgpAbm9kZSBIZWxsbyBXb3JsZApAc2VjdGlvbiBBIFNtYWxs IEhlbGxvIFdvcmxkCkBjaW5kZXggRXhhbXBsZSBIZWxsbyBXb3JsZApAY2luZGV4IEhlbGxvIFdv cmxkIGV4YW1wbGUKQGNpbmRleCBAZmlsZXthbWhlbGxvLTEuMC50YXIuZ3p9LCBjcmVhdGlvbgoK SW4gdGhpcyBzZWN0aW9uIHdlIHJlY3JlYXRlIHRoZSBAZmlsZXthbWhlbGxvLTEuMH0gcGFja2Fn ZSBmcm9tCnNjcmF0Y2guICBUaGUgZmlyc3Qgc3Vic2VjdGlvbiBzaG93cyBob3cgdG8gY2FsbCB0 aGUgQXV0b3Rvb2xzIHRvCmluc3RhbnRpYXRlIHRoZSBHTlUgQnVpbGQgU3lzdGVtLCB3aGlsZSB0 aGUgc2Vjb25kIGV4cGxhaW5zIHRoZQptZWFuaW5nIG9mIHRoZSBAZmlsZXtjb25maWd1cmUuYWN9 IGFuZCBAZmlsZXtNYWtlZmlsZS5hbX0gZmlsZXMgcmVhZApieSB0aGUgQXV0b3Rvb2xzLgoKQGFu Y2hvcnthbWhlbGxvIEV4cGxhaW5lZH0KQG1lbnUKKiBDcmVhdGluZyBhbWhlbGxvOjogICAgICAg ICAgICBDcmVhdGUgQGZpbGV7YW1oZWxsby0xLjAudGFyLmd6fSBmcm9tIHNjcmF0Y2gKKiBhbWhl bGxvJ3MgY29uZmlndXJlLmFjIFNldHVwIEV4cGxhaW5lZDo6CiogYW1oZWxsbydzIE1ha2VmaWxl LmFtIFNldHVwIEV4cGxhaW5lZDo6CkBlbmQgbWVudQoKQG5vZGUgQ3JlYXRpbmcgYW1oZWxsbwpA c3Vic2VjdGlvbiBDcmVhdGluZyBAZmlsZXthbWhlbGxvLTEuMC50YXIuZ3p9CgpIZXJlIGlzIGhv dyB3ZSBjYW4gcmVjcmVhdGUgQGZpbGV7YW1oZWxsby0xLjAudGFyLmd6fSBmcm9tIHNjcmF0Y2gu ClRoZSBwYWNrYWdlIGlzIHNpbXBsZSBlbm91Z2ggc28gdGhhdCB3ZSB3aWxsIG9ubHkgbmVlZCB0 byB3cml0ZSA1CmZpbGVzLiAgKFlvdSBtYXkgY29weSB0aGVtIGZyb20gdGhlIGZpbmFsIEBmaWxl e2FtaGVsbG8tMS4wLnRhci5nen0KdGhhdCBpcyBkaXN0cmlidXRlZCB3aXRoIEF1dG9tYWtlIGlm IHlvdSBkbyBub3Qgd2FudCB0byB3cml0ZSB0aGVtLikKCkNyZWF0ZSB0aGUgZm9sbG93aW5nIGZp bGVzIGluIGFuIGVtcHR5IGRpcmVjdG9yeS4KCkBpdGVtaXplIEBidWxsZXQKCkBpdGVtCkBmaWxl e3NyYy9tYWluLmN9IGlzIHRoZSBzb3VyY2UgZmlsZSBmb3IgdGhlIEBmaWxle2hlbGxvfSBwcm9n cmFtLiAgV2UKc3RvcmUgaXQgaW4gdGhlIEBmaWxle3NyYy99IHN1YmRpcmVjdG9yeSwgYmVjYXVz ZSBsYXRlciwgd2hlbiB0aGUgcGFja2FnZQpldm9sdmVzLCBpdCB3aWxsIGVhc2UgdGhlIGFkZGl0 aW9uIG9mIGEgQGZpbGV7bWFuL30gZGlyZWN0b3J5IGZvciBtYW4KcGFnZXMsIGEgQGZpbGV7ZGF0 YS99IGRpcmVjdG9yeSBmb3IgZGF0YSBmaWxlcywgZXRjLgpAZXhhbXBsZQp+L2FtaGVsbG8gJSBA a2Jke2NhdCBzcmMvbWFpbi5jfQojaW5jbHVkZSA8Y29uZmlnLmg+CiNpbmNsdWRlIDxzdGRpby5o PgoKaW50Cm1haW4gKHZvaWQpCkB7CiAgcHV0cyAoIkhlbGxvIFdvcmxkISIpOwogIHB1dHMgKCJU aGlzIGlzICIgUEFDS0FHRV9TVFJJTkcgIi4iKTsKICByZXR1cm4gMDsKQH0KQGVuZCBleGFtcGxl CgpAaXRlbQpAZmlsZXtSRUFETUV9IGNvbnRhaW5zIHNvbWUgdmVyeSBsaW1pdGVkIGRvY3VtZW50 YXRpb24gZm9yIG91ciBsaXR0bGUKcGFja2FnZS4KQGV4YW1wbGUKfi9hbWhlbGxvICUgQGtiZHtj YXQgUkVBRE1FfQpUaGlzIGlzIGEgZGVtb25zdHJhdGlvbiBwYWNrYWdlIGZvciBHTlUgQXV0b21h a2UuClR5cGUgJ2luZm8gQXV0b21ha2UnIHRvIHJlYWQgdGhlIEF1dG9tYWtlIG1hbnVhbC4KQGVu ZCBleGFtcGxlCgpAaXRlbQpAZmlsZXtNYWtlZmlsZS5hbX0gYW5kIEBmaWxle3NyYy9NYWtlZmls ZS5hbX0gY29udGFpbiBBdXRvbWFrZQppbnN0cnVjdGlvbnMgZm9yIHRoZXNlIHR3byBkaXJlY3Rv cmllcy4KCkBleGFtcGxlCn4vYW1oZWxsbyAlIEBrYmR7Y2F0IHNyYy9NYWtlZmlsZS5hbX0KYmlu X1BST0dSQU1TID0gaGVsbG8KaGVsbG9fU09VUkNFUyA9IG1haW4uYwp+L2FtaGVsbG8gJSBAa2Jk e2NhdCBNYWtlZmlsZS5hbX0KU1VCRElSUyA9IHNyYwpkaXN0X2RvY19EQVRBID0gUkVBRE1FCkBl bmQgZXhhbXBsZQoKQGl0ZW0KRmluYWxseSwgQGZpbGV7Y29uZmlndXJlLmFjfSBjb250YWlucyBB dXRvY29uZiBpbnN0cnVjdGlvbnMgdG8KY3JlYXRlIHRoZSBAY29tbWFuZHtjb25maWd1cmV9IHNj cmlwdC4KCkBleGFtcGxlCn4vYW1oZWxsbyAlIEBrYmR7Y2F0IGNvbmZpZ3VyZS5hY30KQUNfSU5J VChbYW1oZWxsb10sIFsxLjBdLCBbQHZhbHVle1BBQ0tBR0VfQlVHUkVQT1JUfV0pCkFNX0lOSVRf QVVUT01BS0UoWy1XYWxsIC1XZXJyb3IgZm9yZWlnbl0pCkFDX1BST0dfQ0MKQUNfQ09ORklHX0hF QURFUlMoW2NvbmZpZy5oXSkKQUNfQ09ORklHX0ZJTEVTKFsKIE1ha2VmaWxlCiBzcmMvTWFrZWZp bGUKXSkKQUNfT1VUUFVUCkBlbmQgZXhhbXBsZQpAZW5kIGl0ZW1pemUKCkBjaW5kZXggQGNvbW1h bmR7YXV0b3JlY29uZn0sIGV4YW1wbGUKCk9uY2UgeW91IGhhdmUgdGhlc2UgZml2ZSBmaWxlcywg aXQgaXMgdGltZSB0byBydW4gdGhlIEF1dG90b29scyB0bwppbnN0YW50aWF0ZSB0aGUgYnVpbGQg c3lzdGVtLiAgRG8gdGhpcyB1c2luZyB0aGUgQGNvbW1hbmR7YXV0b3JlY29uZn0KY29tbWFuZCBh cyBmb2xsb3dzOgoKQGV4YW1wbGUKfi9hbWhlbGxvICUgQGtiZHthdXRvcmVjb25mIC0taW5zdGFs bH0KY29uZmlndXJlLmFjOiBpbnN0YWxsaW5nICcuL2luc3RhbGwtc2gnCmNvbmZpZ3VyZS5hYzog aW5zdGFsbGluZyAnLi9taXNzaW5nJwpjb25maWd1cmUuYWM6IGluc3RhbGxpbmcgJy4vY29tcGls ZScKc3JjL01ha2VmaWxlLmFtOiBpbnN0YWxsaW5nICcuL2RlcGNvbXAnCkBlbmQgZXhhbXBsZQoK QXQgdGhpcyBwb2ludCB0aGUgYnVpbGQgc3lzdGVtIGlzIGNvbXBsZXRlLgoKSW4gYWRkaXRpb24g dG8gdGhlIHRocmVlIHNjcmlwdHMgbWVudGlvbmVkIGluIGl0cyBvdXRwdXQsIHlvdSBjYW4gc2Vl CnRoYXQgQGNvbW1hbmR7YXV0b3JlY29uZn0gY3JlYXRlZCBmb3VyIG90aGVyIGZpbGVzOiBAZmls ZXtjb25maWd1cmV9LApAZmlsZXtjb25maWcuaC5pbn0sIEBmaWxle01ha2VmaWxlLmlufSwgYW5k IEBmaWxle3NyYy9NYWtlZmlsZS5pbn0uClRoZSBsYXR0ZXIgdGhyZWUgZmlsZXMgYXJlIHRlbXBs YXRlcyB0aGF0IHdpbGwgYmUgYWRhcHRlZCB0byB0aGUKc3lzdGVtIGJ5IEBjb21tYW5ke2NvbmZp Z3VyZX0gdW5kZXIgdGhlIG5hbWVzIEBmaWxle2NvbmZpZy5ofSwKQGZpbGV7TWFrZWZpbGV9LCBh bmQgQGZpbGV7c3JjL01ha2VmaWxlfS4gIExldCdzIGRvIHRoaXM6CgpAZXhhbXBsZQp+L2FtaGVs bG8gJSBAa2Jkey4vY29uZmlndXJlfQpjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0 YWxsLi4uIC91c3IvYmluL2luc3RhbGwgLWMKY2hlY2tpbmcgd2hldGhlciBidWlsZCBlbnZpcm9u bWVudCBpcyBzYW5lLi4uIHllcwpjaGVja2luZyBmb3IgZ2F3ay4uLiBubwpjaGVja2luZyBmb3Ig bWF3ay4uLiBtYXdrCmNoZWNraW5nIHdoZXRoZXIgbWFrZSBzZXRzICQoTUFLRSkuLi4geWVzCmNo ZWNraW5nIGZvciBnY2MuLi4gZ2NjCmNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0 cHV0IGZpbGUgbmFtZS4uLiBhLm91dApjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdv cmtzLi4uIHllcwpjaGVja2luZyB3aGV0aGVyIHdlIGFyZSBjcm9zcyBjb21waWxpbmcuLi4gbm8K Y2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcy4uLgpjaGVja2luZyBmb3Igc3VmZml4 IG9mIG9iamVjdCBmaWxlcy4uLiBvCmNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBH TlUgQyBjb21waWxlci4uLiB5ZXMKY2hlY2tpbmcgd2hldGhlciBnY2MgYWNjZXB0cyAtZy4uLiB5 ZXMKY2hlY2tpbmcgZm9yIGdjYyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkuLi4gbm9uZSBuZWVk ZWQKY2hlY2tpbmcgZm9yIHN0eWxlIG9mIGluY2x1ZGUgdXNlZCBieSBtYWtlLi4uIEdOVQpjaGVj a2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mIGdjYy4uLiBnY2MzCmNvbmZpZ3VyZTogY3JlYXRpbmcg Li9jb25maWcuc3RhdHVzCmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIE1ha2VmaWxlCmNvbmZpZy5z dGF0dXM6IGNyZWF0aW5nIHNyYy9NYWtlZmlsZQpjb25maWcuc3RhdHVzOiBjcmVhdGluZyBjb25m aWcuaApjb25maWcuc3RhdHVzOiBleGVjdXRpbmcgZGVwZmlsZXMgY29tbWFuZHMKQGVuZCBleGFt cGxlCgpAdHJpbmRleCBkaXN0Y2hlY2sKQGNpbmRleCBAY29kZXtkaXN0Y2hlY2t9IGV4YW1wbGUK CllvdSBjYW4gc2VlIEBmaWxle01ha2VmaWxlfSwgQGZpbGV7c3JjL01ha2VmaWxlfSwgYW5kIEBm aWxle2NvbmZpZy5ofQpiZWluZyBjcmVhdGVkIGF0IHRoZSBlbmQgYWZ0ZXIgQGNvbW1hbmR7Y29u ZmlndXJlfSBoYXMgcHJvYmVkIHRoZQpzeXN0ZW0uICBJdCBpcyBub3cgcG9zc2libGUgdG8gcnVu IGFsbCB0aGUgdGFyZ2V0cyB3ZSB3aXNoCihAcHhyZWZ7U3RhbmRhcmQgVGFyZ2V0c30pLiAgRm9y IGluc3RhbmNlOgoKQGV4YW1wbGUKfi9hbWhlbGxvICUgQGtiZHttYWtlfQpAZG90c3t9Cn4vYW1o ZWxsbyAlIEBrYmR7c3JjL2hlbGxvfQpIZWxsbyBXb3JsZCEKVGhpcyBpcyBhbWhlbGxvIDEuMC4K fi9hbWhlbGxvICUgQGtiZHttYWtlIGRpc3RjaGVja30KQGRvdHN7fQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYW1oZWxsby0xLjAgYXJjaGl2ZXMgcmVhZHkg Zm9yIGRpc3RyaWJ1dGlvbjoKYW1oZWxsby0xLjAudGFyLmd6Cj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpAZW5kIGV4YW1wbGUKClJ1bm5pbmcgQGNvbW1hbmR7 YXV0b3JlY29uZn0gaXMgb25seSBuZWVkZWQgaW5pdGlhbGx5LCB3aGVuCnRoZSBHTlUgQnVpbGQg U3lzdGVtIGRvZXMgbm90IGV4aXN0LiAgV2hlbiB5b3UgbGF0ZXIgY2hhbmdlIHNvbWUKaW5zdHJ1 Y3Rpb25zIGluIGEgQGZpbGV7TWFrZWZpbGUuYW19IG9yIEBmaWxle2NvbmZpZ3VyZS5hY30sIHRo ZQpyZWxldmFudCBwYXJ0IG9mIHRoZSBidWlsZCBzeXN0ZW0gd2lsbCBiZSByZWdlbmVyYXRlZCBh dXRvbWF0aWNhbGx5CndoZW4geW91IGV4ZWN1dGUgQGNvbW1hbmR7bWFrZX0uCgpAY29tbWFuZHth dXRvcmVjb25mfSBpcyBhIHNjcmlwdCB0aGF0IGNhbGxzIEBjb21tYW5ke2F1dG9jb25mfSwKQGNv bW1hbmR7YXV0b21ha2V9LCBhbmQgcmVsYXRlZCBjb21tYW5kcyBpbiB0aGUgcmlnaHQgb3JkZXIu ICBJZiB5b3UKYXJlIGJlZ2lubmluZyB3aXRoIHRoZXNlIHRvb2xzLCBpdCBpcyBub3QgaW1wb3J0 YW50IHRvIGZpZ3VyZSBvdXQgaW4Kd2hpY2ggb3JkZXIgYWxsIG9mIHRoZXNlIHRvb2xzIHNob3Vs ZCBiZSBpbnZva2VkIGFuZCB3aHkuIChCdXQgZm9yIHRoZQpjdXJpb3VzOiB0aGUgYmFzaWMgaWRl YSBpcyB0byBydW46CgpAZW51bWVyYXRlCkBpdGVtIEBjb21tYW5ke2FjbG9jYWx9IChAcHhyZWZ7 YWNsb2NhbCBJbnZvY2F0aW9ufSksCkBpdGVtIEBjb21tYW5ke2F1dG9jb25mfSAoQHB4cmVmeyws LGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSksCkBpdGVtIChpZiBuZWVkZWQpIEBjb21t YW5ke2F1dG9oZWFkZXJ9IChwYXJ0IG9mIHRoZQpBdXRvY29uZiBkaXN0cmlidXRpb24pLCBhbmQK QGl0ZW0gQGNvbW1hbmR7YXV0b21ha2V9IChAcHhyZWZ7YXV0b21ha2UgSW52b2NhdGlvbn0pLgpA ZW5kIGVudW1lcmF0ZQoKQG5vaW5kZW50CklmIG5lZWRlZCwgdG9vbHMgcmVsYXRlZCB0byBHZXR0 ZXh0IChAcHhyZWZ7LCwsZ2V0dGV4dCwgR05VIGdldHRleHQKdXRpbGl0aWVzfSkgYW5kIExpYnRv b2wgKEBweHJlZnssLCxsaWJ0b29sLCBUaGUgTGlidG9vbCBNYW51YWx9KSBhcmUgYWxzbwppbnZv a2VkIGF0IGRpZmZlcmVudCBwb2ludHMuICBUaHVzLCBhcyB5b3UgY2FuIHNlZSwgdXNpbmcKQGNv bW1hbmR7YXV0b3JlY29uZn0gaXMgcXVpdGUgYSBiaXQgbW9yZSBjb252ZW5pZW50LgoKTmV2ZXJ0 aGVsZXNzLCBiZWNhdXNlIEF1dG9jb25mIGFuZCBBdXRvbWFrZSBoYXZlIHNlcGFyYXRlIG1hbnVh bHMsIGFuCmVzc2VudGlhbCBpZGVhIHRvIHVuZGVyc3RhbmQgaXMgdGhhdCBBdXRvY29uZiBpcyBp biBjaGFyZ2Ugb2YgY3JlYXRpbmcKQGZpbGV7Y29uZmlndXJlfSBmcm9tIEBmaWxle2NvbmZpZ3Vy ZS5hY30sIHdoaWxlIEF1dG9tYWtlIGlzIGluIGNoYXJnZQpvZiBjcmVhdGluZyBAZmlsZXtNYWtl ZmlsZS5pbn1zIGZyb20gQGZpbGV7TWFrZWZpbGUuYW19cyBhbmQKQGZpbGV7Y29uZmlndXJlLmFj fS4gIFRoaXMgc2hvdWxkIGF0IGxlYXN0IGRpcmVjdCB5b3UgdG8gdGhlIHJpZ2h0Cm1hbnVhbCB3 aGVuIHNlZWtpbmcgYW5zd2Vycy4KCkBub2RlIGFtaGVsbG8ncyBjb25maWd1cmUuYWMgU2V0dXAg RXhwbGFpbmVkCkBzdWJzZWN0aW9uIEBjb2Rle2FtaGVsbG99J3MgQGZpbGV7Y29uZmlndXJlLmFj fSBTZXR1cCBFeHBsYWluZWQKCkBjaW5kZXggQGZpbGV7Y29uZmlndXJlLmFjfSwgSGVsbG8gV29y bGQKCkxldCB1cyBiZWdpbiB3aXRoIHRoZSBjb250ZW50cyBvZiBAZmlsZXtjb25maWd1cmUuYWN9 LgoKQGV4YW1wbGUKQUNfSU5JVChbYW1oZWxsb10sIFsxLjBdLCBbQHZhbHVle1BBQ0tBR0VfQlVH UkVQT1JUfV0pCkFNX0lOSVRfQVVUT01BS0UoWy1XYWxsIC1XZXJyb3IgZm9yZWlnbl0pCkFDX1BS T0dfQ0MKQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKQUNfQ09ORklHX0ZJTEVTKFsKIE1h a2VmaWxlCiBzcmMvTWFrZWZpbGUKXSkKQUNfT1VUUFVUCkBlbmQgZXhhbXBsZQoKVGhpcyBmaWxl IGlzIHJlYWQgYnkgYm90aCBAY29tbWFuZHthdXRvY29uZn0gKHRvIGNyZWF0ZQpAZmlsZXtjb25m aWd1cmV9KSBhbmQgQGNvbW1hbmR7YXV0b21ha2V9ICh0byBjcmVhdGUgdGhlIHZhcmlvdXMKQGZp bGV7TWFrZWZpbGUuaW59cykuICBJdCBjb250YWlucyBhIHNlcmllcyBvZiBNNCBtYWNyb3MgdGhh dCB3aWxsIGJlCmV4cGFuZGVkIGFzIHNoZWxsIGNvZGUgdG8gZmluYWxseSBmb3JtIHRoZSBAZmls ZXtjb25maWd1cmV9IHNjcmlwdC4KV2Ugd2lsbCBub3QgZWxhYm9yYXRlIG9uIHRoZSBzeW50YXgg b2YgdGhpcyBmaWxlLCBiZWNhdXNlIHRoZSBBdXRvY29uZgptYW51YWwgaGFzIGEgd2hvbGUgc2Vj dGlvbiBhYm91dCBpdCAoQHB4cmVme1dyaXRpbmcgQXV0b2NvbmYgSW5wdXQsICwKV3JpdGluZyBA ZmlsZXtjb25maWd1cmUuYWN9LCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0pLgoKVGhl IG1hY3JvcyBwcmVmaXhlZCB3aXRoIEBjb2Rle0FDX30gYXJlIEF1dG9jb25mIG1hY3JvcywgZG9j dW1lbnRlZAppbiB0aGUgQXV0b2NvbmYgbWFudWFsIChAcHhyZWZ7QXV0b2NvbmYgTWFjcm8gSW5k ZXgsICwgQXV0b2NvbmYgTWFjcm8KSW5kZXgsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFs fSkuICBUaGUgbWFjcm9zIHRoYXQgc3RhcnQgd2l0aApAY29kZXtBTV99IGFyZSBBdXRvbWFrZSBt YWNyb3MsIGRvY3VtZW50ZWQgbGF0ZXIgaW4gdGhpcyBtYW51YWwKKEBweHJlZntNYWNybyBJbmRl eH0pLgoKVGhlIGZpcnN0IHR3byBsaW5lcyBvZiBAZmlsZXtjb25maWd1cmUuYWN9IGluaXRpYWxp emUgQXV0b2NvbmYgYW5kCkF1dG9tYWtlLiAgQGNvZGV7QUNfSU5JVH0gdGFrZXMgaW4gYXMgcGFy YW1ldGVycyB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZSwKaXRzIHZlcnNpb24gbnVtYmVyLCBhbmQg YSBjb250YWN0IGFkZHJlc3MgZm9yIGJ1Zy1yZXBvcnRzIGFib3V0IHRoZQpwYWNrYWdlICh0aGlz IGFkZHJlc3MgaXMgb3V0cHV0IGF0IHRoZSBlbmQgb2YgQGNvZGV7Li9jb25maWd1cmUKLS1oZWxw fSwgZm9yIGluc3RhbmNlKS4gIFdoZW4gYWRhcHRpbmcgdGhpcyBzZXR1cCB0byB5b3VyIG93biBw YWNrYWdlLApieSBhbGwgbWVhbnMgcGxlYXNlIGRvIG5vdCBibGluZGx5IGNvcHkgQXV0b21ha2Un cyBhZGRyZXNzOiB1c2UgdGhlCm1haWxpbmcgbGlzdCBvZiB5b3VyIHBhY2thZ2UsIG9yIHlvdXIg b3duIG1haWwgYWRkcmVzcy4KCkBvcGluZGV4IC1XYWxsCkBvcGluZGV4IC1XZXJyb3IKQG9waW5k ZXggZm9yZWlnbgoKVGhlIGFyZ3VtZW50IHRvIEBjb2Rle0FNX0lOSVRfQVVUT01BS0V9IGlzIGEg bGlzdCBvZiBvcHRpb25zIGZvcgpAY29tbWFuZHthdXRvbWFrZX0gKEBweHJlZntPcHRpb25zfSku ICBAb3B0aW9uey1XYWxsfSBhbmQKQG9wdGlvbnstV2Vycm9yfSBhc2sgQGNvbW1hbmR7YXV0b21h a2V9IHRvIHR1cm4gb24gYWxsIHdhcm5pbmdzIGFuZApyZXBvcnQgdGhlbSBhcyBlcnJvcnMuICBX ZSBhcmUgc3BlYWtpbmcgb2YgQGVtcGh7QXV0b21ha2V9IHdhcm5pbmdzCmhlcmUsIHN1Y2ggYXMg ZHViaW91cyBpbnN0cnVjdGlvbnMgaW4gQGZpbGV7TWFrZWZpbGUuYW19LiAgVGhpcyBoYXMKYWJz b2x1dGVseSBub3RoaW5nIHRvIGRvIHdpdGggaG93IHRoZSBjb21waWxlciB3aWxsIGJlIGNhbGxl ZCwgZXZlbgp0aG91Z2ggaXQgbWF5IHN1cHBvcnQgb3B0aW9ucyB3aXRoIHNpbWlsYXIgbmFtZXMu ICBVc2luZyBAb3B0aW9uey1XYWxsCi1XZXJyb3J9IGlzIGEgc2FmZSBzZXR0aW5nIHdoZW4gc3Rh cnRpbmcgdG8gd29yayBvbiBhIHBhY2thZ2U6IHlvdSBkbwpub3Qgd2FudCB0byBtaXNzIGFueSBp c3N1ZXMuICBMYXRlciB5b3UgbWF5IGRlY2lkZSB0byByZWxheCB0aGluZ3MgYQpiaXQuICBUaGUg QG9wdGlvbntmb3JlaWdufSBvcHRpb24gdGVsbHMgQXV0b21ha2UgdGhhdCB0aGlzIHBhY2thZ2UK d2lsbCBub3QgZm9sbG93IHRoZSBHTlUgU3RhbmRhcmRzLiAgR05VIHBhY2thZ2VzIHNob3VsZCBh bHdheXMKZGlzdHJpYnV0ZSBhZGRpdGlvbmFsIGZpbGVzIHN1Y2ggYXMgQGZpbGV7Q2hhbmdlTG9n fSwgQGZpbGV7QVVUSE9SU30sCmV0Yy4gIFdlIGRvIG5vdCB3YW50IEBjb21tYW5ke2F1dG9tYWtl fSB0byBjb21wbGFpbiBhYm91dCB0aGVzZQptaXNzaW5nIGZpbGVzIGluIG91ciBzbWFsbCBleGFt cGxlLgoKVGhlIEBjb2Rle0FDX1BST0dfQ0N9IGxpbmUgY2F1c2VzIHRoZSBAY29tbWFuZHtjb25m aWd1cmV9IHNjcmlwdCB0bwpzZWFyY2ggZm9yIGEgQyBjb21waWxlciBhbmQgZGVmaW5lIHRoZSB2 YXJpYWJsZSBAY29kZXtDQ30gd2l0aCBpdHMKbmFtZS4gIFRoZSBAZmlsZXtzcmMvTWFrZWZpbGUu aW59IGZpbGUgZ2VuZXJhdGVkIGJ5IEF1dG9tYWtlIHVzZXMgdGhlCnZhcmlhYmxlIEBjb2Rle0ND fSB0byBidWlsZCBAZmlsZXtoZWxsb30sIHNvIHdoZW4gQGNvbW1hbmR7Y29uZmlndXJlfQpjcmVh dGVzIEBmaWxle3NyYy9NYWtlZmlsZX0gZnJvbSBAZmlsZXtzcmMvTWFrZWZpbGUuaW59LCBpdCB3 aWxsIGRlZmluZQpAY29kZXtDQ30gd2l0aCB0aGUgdmFsdWUgaXQgaGFzIGZvdW5kLiAgSWYgQXV0 b21ha2UgaXMgYXNrZWQgdG8gY3JlYXRlCmEgQGZpbGV7TWFrZWZpbGUuaW59IHRoYXQgdXNlcyBA Y29kZXtDQ30gYnV0IEBmaWxle2NvbmZpZ3VyZS5hY30gZG9lcwpub3QgZGVmaW5lIGl0LCBpdCB3 aWxsIHN1Z2dlc3QgeW91IGFkZCBhIGNhbGwgdG8gQGNvZGV7QUNfUFJPR19DQ30uCgpUaGUgQGNv ZGV7QUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSl9IGludm9jYXRpb24gY2F1c2VzIHRoZQpA Y29tbWFuZHtjb25maWd1cmV9IHNjcmlwdCB0byBjcmVhdGUgYSBAZmlsZXtjb25maWcuaH0gZmls ZSBnYXRoZXJpbmcKQHNhbXB7I2RlZmluZX1zIGRlZmluZWQgYnkgb3RoZXIgbWFjcm9zIGluIEBm aWxle2NvbmZpZ3VyZS5hY30uICBJbiBvdXIKY2FzZSwgdGhlIEBjb2Rle0FDX0lOSVR9IG1hY3Jv IGFscmVhZHkgZGVmaW5lZCBhIGZldyBvZiB0aGVtLiAgSGVyZQppcyBhbiBleGNlcnB0IG9mIEBm aWxle2NvbmZpZy5ofSBhZnRlciBAY29tbWFuZHtjb25maWd1cmV9IGhhcyBydW46CgpAc21hbGxl eGFtcGxlCkBkb3Rze30KLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRz IGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCiNkZWZpbmUgUEFDS0FHRV9CVUdS RVBPUlQgIkB2YWx1ZXtQQUNLQUdFX0JVR1JFUE9SVH0iCgovKiBEZWZpbmUgdG8gdGhlIGZ1bGwg bmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCiNkZWZpbmUgUEFDS0FHRV9TVFJJ TkcgImFtaGVsbG8gMS4wIgpAZG90c3t9CkBlbmQgc21hbGxleGFtcGxlCgpBcyB5b3UgcHJvYmFi bHkgbm90aWNlZCwgQGZpbGV7c3JjL21haW4uY30gaW5jbHVkZXMgQGZpbGV7Y29uZmlnLmh9IHNv Cml0IGNhbiB1c2UgQGNvZGV7UEFDS0FHRV9TVFJJTkd9LiAgSW4gYSByZWFsLXdvcmxkIHByb2pl Y3QsCkBmaWxle2NvbmZpZy5ofSBjYW4gZ3JvdyBxdWl0ZSBsYXJnZSwgd2l0aCBvbmUgQHNhbXB7 I2RlZmluZX0gcGVyCmZlYXR1cmUgcHJvYmVkIG9uIHRoZSBzeXN0ZW0uCgpUaGUgQGNvZGV7QUNf Q09ORklHX0ZJTEVTfSBtYWNybyBkZWNsYXJlcyB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0CkBjb21t YW5ke2NvbmZpZ3VyZX0gc2hvdWxkIGNyZWF0ZSBmcm9tIHRoZWlyIEBmaWxleyouaW59IHRlbXBs YXRlcy4KQXV0b21ha2UgYWxzbyBzY2FucyB0aGlzIGxpc3QgdG8gZmluZCB0aGUgQGZpbGV7TWFr ZWZpbGUuYW19IGZpbGVzIGl0IG11c3QKcHJvY2Vzcy4gIChUaGlzIGlzIGltcG9ydGFudCB0byBy ZW1lbWJlcjogd2hlbiBhZGRpbmcgYSBuZXcgZGlyZWN0b3J5CnRvIHlvdXIgcHJvamVjdCwgeW91 IHNob3VsZCBhZGQgaXRzIEBmaWxle01ha2VmaWxlfSB0byB0aGlzIGxpc3QsCm90aGVyd2lzZSBB dXRvbWFrZSB3aWxsIG5ldmVyIHByb2Nlc3MgdGhlIG5ldyBAZmlsZXtNYWtlZmlsZS5hbX0geW91 Cndyb3RlIGluIHRoYXQgZGlyZWN0b3J5LikKCkZpbmFsbHksIHRoZSBAY29kZXtBQ19PVVRQVVR9 IGxpbmUgaXMgYSBjbG9zaW5nIGNvbW1hbmQgdGhhdCBhY3R1YWxseQpwcm9kdWNlcyB0aGUgcGFy dCBvZiB0aGUgc2NyaXB0IGluIGNoYXJnZSBvZiBjcmVhdGluZyB0aGUgZmlsZXMKcmVnaXN0ZXJl ZCB3aXRoIEBjb2Rle0FDX0NPTkZJR19IRUFERVJTfSBhbmQgQGNvZGV7QUNfQ09ORklHX0ZJTEVT fS4KCkBjaW5kZXggQGNvbW1hbmR7YXV0b3NjYW59CgpXaGVuIHN0YXJ0aW5nIGEgbmV3IHByb2pl Y3QsIHdlIHN1Z2dlc3QgeW91IHN0YXJ0IHdpdGggc3VjaCBhIHNpbXBsZQpAZmlsZXtjb25maWd1 cmUuYWN9LCBhbmQgZ3JhZHVhbGx5IGFkZCB0aGUgb3RoZXIgdGVzdHMgaXQgcmVxdWlyZXMuClRo ZSBjb21tYW5kIEBjb21tYW5ke2F1dG9zY2FufSBjYW4gYWxzbyBzdWdnZXN0IGEgZmV3IG9mIHRo ZSB0ZXN0cwp5b3VyIHBhY2thZ2UgbWF5IG5lZWQgKEBweHJlZnthdXRvc2NhbiBJbnZvY2F0aW9u LCAsIFVzaW5nCkBjb21tYW5ke2F1dG9zY2FufSB0byBDcmVhdGUgQGZpbGV7Y29uZmlndXJlLmFj fSwgYXV0b2NvbmYsIFRoZQpBdXRvY29uZiBNYW51YWx9KS4KCgpAbm9kZSBhbWhlbGxvJ3MgTWFr ZWZpbGUuYW0gU2V0dXAgRXhwbGFpbmVkCkBzdWJzZWN0aW9uIEBjb2Rle2FtaGVsbG99J3MgQGZp bGV7TWFrZWZpbGUuYW19IFNldHVwIEV4cGxhaW5lZAoKQGNpbmRleCBAZmlsZXtNYWtlZmlsZS5h bX0sIEhlbGxvIFdvcmxkCgpXZSBub3cgdHVybiB0byBAZmlsZXtzcmMvTWFrZWZpbGUuYW19LiAg VGhpcyBmaWxlIGNvbnRhaW5zCkF1dG9tYWtlIGluc3RydWN0aW9ucyB0byBidWlsZCBhbmQgaW5z dGFsbCBAZmlsZXtoZWxsb30uCgpAZXhhbXBsZQpiaW5fUFJPR1JBTVMgPSBoZWxsbwpoZWxsb19T T1VSQ0VTID0gbWFpbi5jCkBlbmQgZXhhbXBsZQoKQSBAZmlsZXtNYWtlZmlsZS5hbX0gaGFzIHRo ZSBzYW1lIHN5bnRheCBhcyBhbiBvcmRpbmFyeQpAZmlsZXtNYWtlZmlsZX0uICBXaGVuIEBjb21t YW5ke2F1dG9tYWtlfSBwcm9jZXNzZXMgYQpAZmlsZXtNYWtlZmlsZS5hbX0gaXQgY29waWVzIHRo ZSBlbnRpcmUgZmlsZSBpbnRvIHRoZSBvdXRwdXQKQGZpbGV7TWFrZWZpbGUuaW59ICh0aGF0IHdp bGwgYmUgbGF0ZXIgdHVybmVkIGludG8gQGZpbGV7TWFrZWZpbGV9IGJ5CkBjb21tYW5ke2NvbmZp Z3VyZX0pIGJ1dCB3aWxsIHJlYWN0IHRvIGNlcnRhaW4gdmFyaWFibGUgZGVmaW5pdGlvbnMKYnkg Z2VuZXJhdGluZyBzb21lIGJ1aWxkIHJ1bGVzIGFuZCBvdGhlciB2YXJpYWJsZXMuCk9mdGVuIEBm aWxle01ha2VmaWxlLmFtfXMgY29udGFpbiBvbmx5IGEgbGlzdCBvZiB2YXJpYWJsZSBkZWZpbml0 aW9ucyBhcwphYm92ZSwgYnV0IHRoZXkgY2FuIGFsc28gY29udGFpbiBvdGhlciB2YXJpYWJsZSBh bmQgcnVsZSBkZWZpbml0aW9ucyB0aGF0CkBjb21tYW5ke2F1dG9tYWtlfSB3aWxsIHBhc3MgYWxv bmcgd2l0aG91dCBpbnRlcnByZXRhdGlvbi4KClZhcmlhYmxlcyB0aGF0IGVuZCB3aXRoIEBjb2Rl e19QUk9HUkFNU30gYXJlIHNwZWNpYWwgdmFyaWFibGVzCnRoYXQgbGlzdCBwcm9ncmFtcyB0aGF0 IHRoZSByZXN1bHRpbmcgQGZpbGV7TWFrZWZpbGV9IHNob3VsZCBidWlsZC4KSW4gQXV0b21ha2Ug c3BlYWssIHRoaXMgQGNvZGV7X1BST0dSQU1TfSBzdWZmaXggaXMgY2FsbGVkIGEKQGRmbntwcmlt YXJ5fTsgQXV0b21ha2UgcmVjb2duaXplcyBvdGhlciBwcmltYXJpZXMgc3VjaCBhcwpAY29kZXtf U0NSSVBUU30sIEBjb2Rle19EQVRBfSwgQGNvZGV7X0xJQlJBUklFU30sIGV0Yy5AOiBjb3JyZXNw b25kaW5nCnRvIGRpZmZlcmVudCB0eXBlcyBvZiBmaWxlcy4KClRoZSBAc2FtcHtiaW59IHBhcnQg b2YgdGhlIEBjb2Rle2Jpbl9QUk9HUkFNU30gdGVsbHMKQGNvbW1hbmR7YXV0b21ha2V9IHRoYXQg dGhlIHJlc3VsdGluZyBwcm9ncmFtcyBzaG91bGQgYmUgaW5zdGFsbGVkIGluCkB2YXJ7YmluZGly fS4gIFJlY2FsbCB0aGF0IHRoZSBHTlUgQnVpbGQgU3lzdGVtIHVzZXMgYSBzZXQgb2YgdmFyaWFi bGVzCnRvIGRlbm90ZSBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcyBhbmQgYWxsb3cgdXNlcnMgdG8g Y3VzdG9taXplIHRoZXNlCmxvY2F0aW9ucyAoQHB4cmVme1N0YW5kYXJkIERpcmVjdG9yeSBWYXJp YWJsZXN9KS4gIEFueSBzdWNoIGRpcmVjdG9yeQp2YXJpYWJsZSBjYW4gYmUgcHV0IGluIGZyb250 IG9mIGEgcHJpbWFyeSAob21pdHRpbmcgdGhlIEBjb2Rle2Rpcn0Kc3VmZml4KSB0byB0ZWxsIEBj b21tYW5ke2F1dG9tYWtlfSB3aGVyZSB0byBpbnN0YWxsIHRoZSBsaXN0ZWQgZmlsZXMuCgpQcm9n cmFtcyBuZWVkIHRvIGJlIGJ1aWx0IGZyb20gc291cmNlIGZpbGVzLCBzbyBmb3IgZWFjaCBwcm9n cmFtCkBjb2Rle0B2YXJ7cHJvZ319IGxpc3RlZCBpbiBhIEBjb2Rle0B3e19QUk9HUkFNU319IHZh cmlhYmxlLApAY29tbWFuZHthdXRvbWFrZX0gd2lsbCBsb29rIGZvciBhbm90aGVyIHZhcmlhYmxl IG5hbWVkCkBjb2Rle0B2YXJ7cHJvZ31fU09VUkNFU30gbGlzdGluZyBpdHMgc291cmNlIGZpbGVz LiAgVGhlcmUgbWF5IGJlIG1vcmUKdGhhbiBvbmUgc291cmNlIGZpbGU6IHRoZXkgd2lsbCBhbGwg YmUgY29tcGlsZWQgYW5kIGxpbmtlZCB0b2dldGhlci4KCkF1dG9tYWtlIGFsc28ga25vd3MgdGhh dCBzb3VyY2UgZmlsZXMgbmVlZCB0byBiZSBkaXN0cmlidXRlZCB3aGVuCmNyZWF0aW5nIGEgdGFy YmFsbCAodW5saWtlIGJ1aWx0IHByb2dyYW1zKS4gIFNvIGEgc2lkZS1lZmZlY3Qgb2YgdGhpcwpA Y29kZXtoZWxsb19TT1VSQ0VTfSBkZWNsYXJhdGlvbiBpcyB0aGF0IEBmaWxle21haW4uY30gd2ls bCBiZQpwYXJ0IG9mIHRoZSB0YXJiYWxsIGNyZWF0ZWQgYnkgQGNvZGV7bWFrZSBkaXN0fS4KCkZp bmFsbHkgaGVyZSBhcmUgc29tZSBleHBsYW5hdGlvbnMgcmVnYXJkaW5nIHRoZSB0b3AtbGV2ZWwK QGZpbGV7TWFrZWZpbGUuYW19LgoKQGV4YW1wbGUKU1VCRElSUyA9IHNyYwpkaXN0X2RvY19EQVRB ID0gUkVBRE1FCkBlbmQgZXhhbXBsZQoKQGNvZGV7U1VCRElSU30gaXMgYSBzcGVjaWFsIHZhcmlh YmxlIGxpc3RpbmcgYWxsIGRpcmVjdG9yaWVzIHRoYXQKQGNvbW1hbmR7bWFrZX0gc2hvdWxkIHJl Y3Vyc2UgaW50byBiZWZvcmUgcHJvY2Vzc2luZyB0aGUgY3VycmVudApkaXJlY3RvcnkuICBTbyB0 aGlzIGxpbmUgaXMgcmVzcG9uc2libGUgZm9yIEBjb21tYW5ke21ha2V9IGJ1aWxkaW5nCkBmaWxl e3NyYy9oZWxsb30gZXZlbiB0aG91Z2ggd2UgcnVuIGl0IGZyb20gdGhlIHRvcC1sZXZlbC4gIFRo aXMgbGluZQphbHNvIGNhdXNlcyBAY29kZXttYWtlIGluc3RhbGx9IHRvIGluc3RhbGwgQGZpbGV7 c3JjL2hlbGxvfSBiZWZvcmUKaW5zdGFsbGluZyBAZmlsZXtSRUFETUV9IChub3QgdGhhdCB0aGlz IG9yZGVyIG1hdHRlcnMpLgoKVGhlIGxpbmUgQGNvZGV7ZGlzdF9kb2NfREFUQSA9IFJFQURNRX0g Y2F1c2VzIEBmaWxle1JFQURNRX0gdG8gYmUKZGlzdHJpYnV0ZWQgYW5kIGluc3RhbGxlZCBpbiBA dmFye2RvY2Rpcn0uICBGaWxlcyBsaXN0ZWQgd2l0aCB0aGUKQGNvZGV7X0RBVEF9IHByaW1hcnkg YXJlIG5vdCBhdXRvbWF0aWNhbGx5IHBhcnQgb2YgdGhlIHRhcmJhbGwgYnVpbHQKd2l0aCBAY29k ZXttYWtlIGRpc3R9LCBzbyB3ZSBhZGQgdGhlIEBjb2Rle2Rpc3RffSBwcmVmaXggc28gdGhleSBn ZXQKZGlzdHJpYnV0ZWQuICBIb3dldmVyLCBmb3IgQGZpbGV7UkVBRE1FfSBpdCB3b3VsZCBub3Qg aGF2ZSBiZWVuCm5lY2Vzc2FyeTogQGNvbW1hbmR7YXV0b21ha2V9IGF1dG9tYXRpY2FsbHkgZGlz dHJpYnV0ZXMgYW55CkBmaWxle1JFQURNRX0gZmlsZSBpdCBlbmNvdW50ZXJzICh0aGUgbGlzdCBv ZiBvdGhlciBmaWxlcwphdXRvbWF0aWNhbGx5IGRpc3RyaWJ1dGVkIGlzIHByZXNlbnRlZCBieSBA Y29kZXthdXRvbWFrZSAtLWhlbHB9KS4KVGhlIG9ubHkgaW1wb3J0YW50IGVmZmVjdCBvZiB0aGlz IHNlY29uZCBsaW5lIGlzIHRoZXJlZm9yZSB0byBpbnN0YWxsCkBmaWxle1JFQURNRX0gZHVyaW5n IEBjb2Rle21ha2UgaW5zdGFsbH0uCgpPbmUgdGhpbmcgbm90IGNvdmVyZWQgaW4gdGhpcyBleGFt cGxlIGlzIGFjY2Vzc2luZyB0aGUgaW5zdGFsbGF0aW9uCmRpcmVjdG9yeSB2YWx1ZXMgKEBweHJl ZntTdGFuZGFyZCBEaXJlY3RvcnkgVmFyaWFibGVzfSkgZnJvbSB5b3VyCnByb2dyYW0gY29kZSwg dGhhdCBpcywgY29udmVydGluZyB0aGVtIGludG8gZGVmaW5lZCBtYWNyb3MuICBGb3IgdGhpcywK QHB4cmVme0RlZmluaW5nIERpcmVjdG9yaWVzLCwsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFu dWFsfS4KCgpAbm9kZSBHZW5lcmFsaXRpZXMKQGNoYXB0ZXIgR2VuZXJhbCBpZGVhcwoKVGhlIGZv bGxvd2luZyBzZWN0aW9ucyBjb3ZlciBhIGZldyBiYXNpYyBpZGVhcyB0aGF0IHdpbGwgaGVscCB5 b3UKdW5kZXJzdGFuZCBob3cgQXV0b21ha2Ugd29ya3MuCgpAbWVudQoqIEdlbmVyYWwgT3BlcmF0 aW9uOjogICAgICAgICAgIEdlbmVyYWwgb3BlcmF0aW9uIG9mIEF1dG9tYWtlCiogU3RyaWN0bmVz czo6ICAgICAgICAgICAgICAgICAgU3RhbmRhcmRzIGNvbmZvcm1hbmNlIGNoZWNraW5nCiogVW5p Zm9ybTo6ICAgICAgICAgICAgICAgICAgICAgVGhlIFVuaWZvcm0gTmFtaW5nIFNjaGVtZQoqIExl bmd0aCBMaW1pdGF0aW9uczo6ICAgICAgICAgIFN0YXlpbmcgYmVsb3cgdGhlIGNvbW1hbmQgbGlu ZSBsZW5ndGggbGltaXQKKiBDYW5vbmljYWxpemF0aW9uOjogICAgICAgICAgICBIb3cgZGVyaXZl ZCB2YXJpYWJsZXMgYXJlIG5hbWVkCiogVXNlciBWYXJpYWJsZXM6OiAgICAgICAgICAgICAgVmFy aWFibGVzIHJlc2VydmVkIGZvciB0aGUgdXNlcgoqIEF1eGlsaWFyeSBQcm9ncmFtczo6ICAgICAg ICAgIFByb2dyYW1zIGF1dG9tYWtlIG1pZ2h0IHJlcXVpcmUKQGVuZCBtZW51CgoKQG5vZGUgR2Vu ZXJhbCBPcGVyYXRpb24KQHNlY3Rpb24gR2VuZXJhbCBPcGVyYXRpb24KCkF1dG9tYWtlIHdvcmtz IGJ5IHJlYWRpbmcgYSBAZmlsZXtNYWtlZmlsZS5hbX0gYW5kIGdlbmVyYXRpbmcgYQpAZmlsZXtN YWtlZmlsZS5pbn0uICBDZXJ0YWluIHZhcmlhYmxlcyBhbmQgcnVsZXMgZGVmaW5lZCBpbiB0aGUK QGZpbGV7TWFrZWZpbGUuYW19IGluc3RydWN0IEF1dG9tYWtlIHRvIGdlbmVyYXRlIG1vcmUgc3Bl Y2lhbGl6ZWQgY29kZTsKZm9yIGluc3RhbmNlLCBhIEBjb2Rle2Jpbl9QUk9HUkFNU30gdmFyaWFi bGUgZGVmaW5pdGlvbiB3aWxsIGNhdXNlIHJ1bGVzCmZvciBjb21waWxpbmcgYW5kIGxpbmtpbmcg cHJvZ3JhbXMgdG8gYmUgZ2VuZXJhdGVkLgoKQGNpbmRleCBOb24tc3RhbmRhcmQgdGFyZ2V0cwpA Y2luZGV4IEBjb2Rle2dpdC1kaXN0fSwgbm9uLXN0YW5kYXJkIGV4YW1wbGUKQHRyaW5kZXggZ2l0 LWRpc3QKClRoZSB2YXJpYWJsZSBkZWZpbml0aW9ucyBhbmQgcnVsZXMgaW4gdGhlIEBmaWxle01h a2VmaWxlLmFtfSBhcmUKY29waWVkIG1vc3RseSB2ZXJiYXRpbSBpbnRvIHRoZSBnZW5lcmF0ZWQg ZmlsZSwgd2l0aCBhbGwgdmFyaWFibGUKZGVmaW5pdGlvbnMgcHJlY2VkaW5nIGFsbCBydWxlcy4g IFRoaXMgYWxsb3dzIHlvdSB0byBhZGQgYWxtb3N0CmFyYml0cmFyeSBjb2RlIGludG8gdGhlIGdl bmVyYXRlZCBAZmlsZXtNYWtlZmlsZS5pbn0uICBGb3IgaW5zdGFuY2UsCnRoZSBBdXRvbWFrZSBk aXN0cmlidXRpb24gaW5jbHVkZXMgYSBub24tc3RhbmRhcmQgcnVsZSBmb3IgdGhlCkBjb2Rle2dp dC1kaXN0fSB0YXJnZXQsIHdoaWNoIHRoZSBBdXRvbWFrZSBtYWludGFpbmVyIHVzZXMgdG8gbWFr ZQpkaXN0cmlidXRpb25zIGZyb20gdGhlIHNvdXJjZSBjb250cm9sIHN5c3RlbS4KCkBjaW5kZXgg R05VIE1ha2UgZXh0ZW5zaW9ucwoKTm90ZSB0aGF0IG1vc3QgR05VIE1ha2UgZXh0ZW5zaW9ucyBh cmUgbm90IHJlY29nbml6ZWQgYnkgQXV0b21ha2UuICBVc2luZwpzdWNoIGV4dGVuc2lvbnMgaW4g YSBAZmlsZXtNYWtlZmlsZS5hbX0gd2lsbCBsZWFkIHRvIGVycm9ycyBvciBjb25mdXNpbmcKYmVo YXZpb3IuCgpAY2luZGV4IEFwcGVuZCBvcGVyYXRvcgpAY21pbmRleCArPQpBIHNwZWNpYWwgZXhj ZXB0aW9uIGlzIHRoYXQgdGhlIEdOVSBNYWtlIGFwcGVuZCBvcGVyYXRvciwgQHNhbXB7Kz19LCBp cwpzdXBwb3J0ZWQuICBUaGlzIG9wZXJhdG9yIGFwcGVuZHMgaXRzIHJpZ2h0IGhhbmQgYXJndW1l bnQgdG8gdGhlIHZhcmlhYmxlCnNwZWNpZmllZCBvbiB0aGUgbGVmdC4gIEF1dG9tYWtlIHdpbGwg dHJhbnNsYXRlIHRoZSBvcGVyYXRvciBpbnRvCmFuIG9yZGluYXJ5IEBzYW1wez19IG9wZXJhdG9y OyBAc2FtcHsrPX0gd2lsbCB0aHVzIHdvcmsgd2l0aCBhbnkgbWFrZSBwcm9ncmFtLgoKQXV0b21h a2UgdHJpZXMgdG8ga2VlcCBjb21tZW50cyBncm91cGVkIHdpdGggYW55IGFkam9pbmluZyBydWxl cyBvcgp2YXJpYWJsZSBkZWZpbml0aW9ucy4KCkBjaW5kZXggTGltaXRhdGlvbnMgb2YgYXV0b21h a2UgcGFyc2VyCkBjaW5kZXggQXV0b21ha2UgcGFyc2VyLCBsaW1pdGF0aW9ucyBvZgpAY2luZGV4 IGluZGVudGF0aW9uIGluIE1ha2VmaWxlLmFtCkdlbmVyYWxseSwgQXV0b21ha2UgaXMgbm90IHBh cnRpY3VsYXJseSBzbWFydCBpbiB0aGUgcGFyc2luZyBvZiB1bnVzdWFsCkBmaWxle01ha2VmaWxl fSBjb25zdHJ1Y3RzLCBzbyB5b3UncmUgYWR2aXNlZCB0byBhdm9pZCBmYW5jeSBjb25zdHJ1Y3Rz IG9yCmBgY3JlYXRpdmUnJyB1c2Ugb2Ygd2hpdGVzcGFjZS4KQGMgS2VlcCB0aGlzIGluIHN5bmMg d2l0aCBkb2MtcGFyc2luZy1idWdsZXRzLXRhYnMuc2gKRm9yIGV4YW1wbGUsIEBrZXl7VEFCfSBj aGFyYWN0ZXJzIGNhbm5vdCBiZSB1c2VkIGJldHdlZW4gYSB0YXJnZXQgbmFtZQphbmQgdGhlIGZv bGxvd2luZyBgYEBjb2Rlezp9JycgY2hhcmFjdGVyLCBhbmQgdmFyaWFibGUgYXNzaWdubWVudHMK c2hvdWxkbid0IGJlIGluZGVudGVkIHdpdGggQGtleXtUQUJ9IGNoYXJhY3RlcnMuCkBjIEtlZXAg dGhpcyBpbiBzeW5jIHdpdGggZG9jLXBhcnNpbmctYnVnbGV0cy1jb2xuZXEtc3Vic3Quc2gKQWxz bywgdXNpbmcgbW9yZSBjb21wbGV4IG1hY3JvcyBpbiB0YXJnZXQgbmFtZXMgY2FuIGNhdXNlIHRy b3VibGU6CgpAZXhhbXBsZQolIEBrYmR7Y2F0IE1ha2VmaWxlLmFtfQokKEZPTzo9eCk6IGJhcgol IEBrYmR7YXV0b21ha2V9Ck1ha2VmaWxlLmFtOjE6IGJhZCBjaGFyYWN0ZXJzIGluIHZhcmlhYmxl IG5hbWUgJyQoRk9PJwpNYWtlZmlsZS5hbToxOiAnOj0nLXN0eWxlIGFzc2lnbm1lbnRzIGFyZSBu b3QgcG9ydGFibGUKQGVuZCBleGFtcGxlCgpAY2luZGV4IE1ha2UgdGFyZ2V0cywgb3ZlcnJpZGlu ZwpAY2luZGV4IE1ha2UgcnVsZXMsIG92ZXJyaWRpbmcKQGNpbmRleCBPdmVycmlkaW5nIG1ha2Ug cnVsZXMKQGNpbmRleCBPdmVycmlkaW5nIG1ha2UgdGFyZ2V0cwoKQSBydWxlIGRlZmluZWQgaW4g QGZpbGV7TWFrZWZpbGUuYW19IGdlbmVyYWxseSBvdmVycmlkZXMgYW55IHN1Y2gKcnVsZSBvZiBh IHNpbWlsYXIgbmFtZSB0aGF0IHdvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5CkBj b21tYW5ke2F1dG9tYWtlfS4gIEFsdGhvdWdoIHRoaXMgaXMgYSBzdXBwb3J0ZWQgZmVhdHVyZSwg aXQgaXMgZ2VuZXJhbGx5CmJlc3QgdG8gYXZvaWQgbWFraW5nIHVzZSBvZiBpdCwgYXMgc29tZXRp bWVzIHRoZSBnZW5lcmF0ZWQgcnVsZXMgYXJlCnZlcnkgcGFydGljdWxhci4KCkBjaW5kZXggVmFy aWFibGVzLCBvdmVycmlkaW5nCkBjaW5kZXggT3ZlcnJpZGluZyBtYWtlIHZhcmlhYmxlcwoKU2lt aWxhcmx5LCBhIHZhcmlhYmxlIGRlZmluZWQgaW4gQGZpbGV7TWFrZWZpbGUuYW19IG9yCkBjb2Rl e0FDX1NVQlNUfWVkIGZyb20gQGZpbGV7Y29uZmlndXJlLmFjfSB3aWxsIG92ZXJyaWRlIGFueQpk ZWZpbml0aW9uIG9mIHRoZSB2YXJpYWJsZSB0aGF0IEBjb21tYW5ke2F1dG9tYWtlfSB3b3VsZCBv cmRpbmFyaWx5CmNyZWF0ZS4gIFRoaXMgZmVhdHVyZSBpcyBvZnRlbiBtb3JlIHVzZWZ1bCB0aGFu IHRoZSBhYmlsaXR5IHRvCm92ZXJyaWRlIGEgcnVsZS4gIEJlIHdhcm5lZCB0aGF0IG1hbnkgb2Yg dGhlIHZhcmlhYmxlcyBnZW5lcmF0ZWQgYnkKQGNvbW1hbmR7YXV0b21ha2V9IGFyZSBjb25zaWRl cmVkIHRvIGJlIGZvciBpbnRlcm5hbCB1c2Ugb25seSwgYW5kIHRoZWlyCm5hbWVzIG1pZ2h0IGNo YW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMuCgpAY2luZGV4IFJlY3Vyc2l2ZSBvcGVyYXRpb24gb2Yg QXV0b21ha2UKQGNpbmRleCBBdXRvbWFrZSwgcmVjdXJzaXZlIG9wZXJhdGlvbgpAY2luZGV4IEV4 YW1wbGUgb2YgcmVjdXJzaXZlIG9wZXJhdGlvbgoKV2hlbiBleGFtaW5pbmcgYSB2YXJpYWJsZSBk ZWZpbml0aW9uLCBBdXRvbWFrZSB3aWxsIHJlY3Vyc2l2ZWx5IGV4YW1pbmUKdmFyaWFibGVzIHJl ZmVyZW5jZWQgaW4gdGhlIGRlZmluaXRpb24uICBGb3IgZXhhbXBsZSwgaWYgQXV0b21ha2UgaXMK bG9va2luZyBhdCB0aGUgY29udGVudCBvZiBAY29kZXtmb29fU09VUkNFU30gaW4gdGhpcyBzbmlw cGV0CgpAYyBLZWVwIGluIHN5bmMgd2l0aCBpbnRlcnAuc2gKQGV4YW1wbGUKeHMgPSBhLmMgYi5j CmZvb19TT1VSQ0VTID0gYy5jICQoeHMpCkBlbmQgZXhhbXBsZQoKaXQgd291bGQgdXNlIHRoZSBm aWxlcyBAZmlsZXthLmN9LCBAZmlsZXtiLmN9LCBhbmQgQGZpbGV7Yy5jfSBhcyB0aGUKY29udGVu dHMgb2YgQGNvZGV7Zm9vX1NPVVJDRVN9LgoKQGNpbmRleCBAY29kZXsjI30gKHNwZWNpYWwgQXV0 b21ha2UgY29tbWVudCkKQGNpbmRleCBTcGVjaWFsIEF1dG9tYWtlIGNvbW1lbnQKQGNpbmRleCBD b21tZW50LCBzcGVjaWFsIHRvIEF1dG9tYWtlCgpBdXRvbWFrZSBhbHNvIGFsbG93cyBhIGZvcm0g b2YgY29tbWVudCB0aGF0IGlzIEBlbXBoe25vdH0gY29waWVkIGludG8KdGhlIG91dHB1dDsgYWxs IGxpbmVzIGJlZ2lubmluZyB3aXRoIEBzYW1weyMjfSAobGVhZGluZyBzcGFjZXMgYWxsb3dlZCkK YXJlIGNvbXBsZXRlbHkgaWdub3JlZCBieSBBdXRvbWFrZS4KCkl0IGlzIGN1c3RvbWFyeSB0byBt YWtlIHRoZSBmaXJzdCBsaW5lIG9mIEBmaWxle01ha2VmaWxlLmFtfSByZWFkOgoKQGNpbmRleCBN YWtlZmlsZS5hbSwgZmlyc3QgbGluZQpAY2luZGV4IEZpcnN0IGxpbmUgb2YgTWFrZWZpbGUuYW0K CkBleGFtcGxlCiMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBN YWtlZmlsZS5pbgpAZW5kIGV4YW1wbGUKCkBjIEZJWE1FIGRvY3VtZW50IGN1c3RvbWFyeSBvcmRl cmluZyBvZiBNYWtlZmlsZS5hbSBoZXJlIQoKCkBub2RlIFN0cmljdG5lc3MKQHNlY3Rpb24gU3Ry aWN0bmVzcwpAYyAiR25pdHMiIHVzZWQgdG8gYmUgYSBzZXBhcmF0ZSBzZWN0aW9uLgpAYyBUaGlz IEBhbmNob3IgYWxsb3dzIG9sZCBsaW5rcyB0byBzdGlsbCB3b3JrLgpAYW5jaG9ye0duaXRzfQpA Y2luZGV4IE5vbi1HTlUgcGFja2FnZXMKCldoaWxlIEF1dG9tYWtlIGlzIGludGVuZGVkIHRvIGJl IHVzZWQgYnkgbWFpbnRhaW5lcnMgb2YgR05VIHBhY2thZ2VzLCBpdApkb2VzIG1ha2Ugc29tZSBl ZmZvcnQgdG8gYWNjb21tb2RhdGUgdGhvc2Ugd2hvIHdpc2ggdG8gdXNlIGl0LCBidXQgZG8Kbm90 IHdhbnQgdG8gdXNlIGFsbCB0aGUgR05VIGNvbnZlbnRpb25zLgoKQGNpbmRleCBTdHJpY3RuZXNz LCBkZWZpbmVkClRvIHRoaXMgZW5kLCBBdXRvbWFrZSBzdXBwb3J0cyB0aHJlZSBsZXZlbHMgb2Yg QGRmbntzdHJpY3RuZXNzfS0tLWhvdwpzdHJpbmdlbnRseSBBdXRvbWFrZSBzaG91bGQgZW5mb3Jj ZSBjb25mb3JtYW5jZSB3aXRoIEdOVSBjb252ZW50aW9ucy4KRWFjaCBzdHJpY3RuZXNzIGxldmVs IGNhbiBiZSBzZWxlY3RlZCB1c2luZyBhbiBvcHRpb24gb2YgdGhlIHNhbWUgbmFtZTsKc2VlIEBy ZWZ7T3B0aW9uc30uCgpUaGUgc3RyaWN0bmVzcyBsZXZlbHMgYXJlOgoKQHRhYmxlIEBvcHRpb24K QGl0ZW0gZ251CkBjaW5kZXggU3RyaWN0bmVzcywgQG9wdGlvbntnbnV9CkBjaW5kZXggQG9wdGlv bntnbnV9IHN0cmljdG5lc3MKQG9waW5kZXggLS1nbnUKVGhpcyBpcyB0aGUgZGVmYXVsdCBsZXZl bCBvZiBzdHJpY3RuZXNzLiAgQXV0b21ha2Ugd2lsbCBjaGVjayBmb3IKYmFzaWMgY29tcGxpYW5j ZSB3aXRoIHRoZSBHTlUgc3RhbmRhcmRzIGZvciBzb2Z0d2FyZSBwYWNrYWdpbmcuCkB4cmVme1Rv cCwsLCBzdGFuZGFyZHMsIFRoZSBHTlUgQ29kaW5nIFN0YW5kYXJkc30sIGZvciBmdWxsIGRldGFp bHMKb2YgdGhlc2Ugc3RhbmRhcmRzLiAgQ3VycmVudGx5IHRoZSBmb2xsb3dpbmcgY2hlY2tzIGFy ZSBtYWRlOgoKQGl0ZW1pemUgQGJ1bGxldApAaXRlbQpUaGUgZmlsZXMgQGZpbGV7SU5TVEFMTH0s IEBmaWxle05FV1N9LCBAZmlsZXtSRUFETUV9LCBAZmlsZXtBVVRIT1JTfSwKYW5kIEBmaWxle0No YW5nZUxvZ30sIHBsdXMgb25lIG9mIEBmaWxle0NPUFlJTkcuTElCfSwgQGZpbGV7Q09QWUlORy5M RVNTRVJ9Cm9yIEBmaWxle0NPUFlJTkd9LCBhcmUgcmVxdWlyZWQgYXQgdGhlIHRvcG1vc3QgZGly ZWN0b3J5IG9mIHRoZSBwYWNrYWdlLgoKSWYgdGhlIEBvcHRpb257LS1hZGQtbWlzc2luZ30gb3B0 aW9uIGlzIGdpdmVuLCBAY29tbWFuZHthdXRvbWFrZX0gd2lsbAphZGQgYSBnZW5lcmljIHZlcnNp b24gb2YgdGhlIEBmaWxle0lOU1RBTEx9IGZpbGUgYXMgd2VsbCBhcyB0aGUKQGZpbGV7Q09QWUlO R30gZmlsZSBjb250YWluaW5nIHRoZSB0ZXh0IG9mIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhl CkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGV4aXN0aW5nIGF0IHRoZSB0aW1lIG9mIHRoaXMg QXV0b21ha2UgcmVsZWFzZQoodmVyc2lvbiAzIGFzIHRoaXMgaXMgd3JpdHRlbiwKQHVyZWZ7aHR0 cHM6Ly93d3cuZ251Lm9yZy9AL2NvcHlsZWZ0L0AvZ3BsLmh0bWx9KS4KSG93ZXZlciwgYW4gZXhp c3RpbmcgQGZpbGV7Q09QWUlOR30gZmlsZSB3aWxsIG5ldmVyIGJlIG92ZXJ3cml0dGVuIGJ5CkBj b21tYW5ke2F1dG9tYWtlfS4KCkBpdGVtClRoZSBvcHRpb25zIEBvcHRpb257bm8taW5zdGFsbG1h bn0gYW5kIEBvcHRpb257bm8taW5zdGFsbGluZm99IGFyZQpwcm9oaWJpdGVkLgpAZW5kIGl0ZW1p emUKCkZ1dHVyZSB2ZXJzaW9ucyBvZiBBdXRvbWFrZSB3aWxsIGFkZCBtb3JlIGNoZWNrcyBhdCB0 aGlzIGxldmVsIG9mCnN0cmljdG5lc3M7IGl0IGlzIGFkdmlzYWJsZSB0byBiZSBmYW1pbGlhciB3 aXRoIHRoZSBwcmVjaXNlIHJlcXVpcmVtZW50cwpvZiB0aGUgR05VIHN0YW5kYXJkcy4KCkZ1dHVy ZSB2ZXJzaW9ucyBvZiBBdXRvbWFrZSBtYXksIGF0IHRoaXMgbGV2ZWwgb2Ygc3RyaWN0bmVzcywg cmVxdWlyZQpjZXJ0YWluIG5vbi1zdGFuZGFyZCBHTlUgdG9vbHMgdG8gYmUgYXZhaWxhYmxlIHRv IG1haW50YWluZXItb25seQpAZmlsZXtNYWtlZmlsZX0gcnVsZXMuICBGb3IgaW5zdGFuY2UsIGlu IHRoZSBmdXR1cmUgQGNvbW1hbmR7cGF0aGNoa30KKEBweHJlZntwYXRoY2hrIGludm9jYXRpb24s LCwgY29yZXV0aWxzLCBHTlUgQ29yZXV0aWxzfSkKbWF5IGJlIHJlcXVpcmVkIHRvIHJ1biBAc2Ft cHttYWtlIGRpc3R9LgoKQGl0ZW0gZm9yZWlnbgpAY2luZGV4IFN0cmljdG5lc3MsIEBvcHRpb257 Zm9yZWlnbn0KQGNpbmRleCBAb3B0aW9ue2ZvcmVpZ259IHN0cmljdG5lc3MKQG9waW5kZXggLS1m b3JlaWduCkF1dG9tYWtlIHdpbGwgY2hlY2sgZm9yIG9ubHkgdGhvc2UgdGhpbmdzIHRoYXQgYXJl IGFic29sdXRlbHkKcmVxdWlyZWQgZm9yIHByb3BlciBvcGVyYXRpb24uICBGb3IgaW5zdGFuY2Us IHdoZXJlYXMgR05VIHN0YW5kYXJkcwpkaWN0YXRlIHRoZSBleGlzdGVuY2Ugb2YgYSBAZmlsZXtO RVdTfSBmaWxlLCBpdCB3aWxsIG5vdCBiZSByZXF1aXJlZCBpbgp0aGlzIG1vZGUuICBUaGlzIHN0 cmljdG5lc3Mgd2lsbCBhbHNvIHR1cm4gb2ZmIHNvbWUgd2FybmluZ3MgYnkgZGVmYXVsdAooYW1v bmcgdGhlbSwgcG9ydGFiaWxpdHkgd2FybmluZ3MpLgoKQGl0ZW0gZ25pdHMKQGNpbmRleCBTdHJp Y3RuZXNzLCBAb3B0aW9ue2duaXRzfQpAY2luZGV4IEBvcHRpb257Z25pdHN9IHN0cmljdG5lc3MK QG9waW5kZXggLS1nbml0cwpBdXRvbWFrZSB3aWxsIGNoZWNrIGZvciBjb21wbGlhbmNlIHRvIHRo ZSBhcy15ZXQtdW53cml0dGVuIEBkZm57R25pdHMKc3RhbmRhcmRzfS4gIFRoZXNlIGFyZSBiYXNl ZCBvbiB0aGUgR05VIHN0YW5kYXJkcywgYnV0IGFyZSBldmVuIG1vcmUKZGV0YWlsZWQuICBVbmxl c3MgeW91IGFyZSBhIEduaXRzIHN0YW5kYXJkcyBjb250cmlidXRvciwgaXQgaXMKcmVjb21tZW5k ZWQgdGhhdCB5b3UgYXZvaWQgdGhpcyBvcHRpb24gdW50aWwgc3VjaCB0aW1lIGFzIHRoZSBHbml0 cwpzdGFuZGFyZCBpcyBwdWJsaXNoZWQgKHdoaWNoIGlzIHVubGlrZWx5IHRvIGV2ZXIgaGFwcGVu KS4KCkN1cnJlbnRseSwgQG9wdGlvbnstLWduaXRzfSBkb2VzIGFsbCB0aGUgY2hlY2tzIHRoYXQK QG9wdGlvbnstLWdudX0gZG9lcywgYW5kIGNoZWNrcyB0aGUgZm9sbG93aW5nIGFzIHdlbGw6CgpA aXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkBzYW1we21ha2UgaW5zdGFsbGNoZWNrfSB3aWxsIGNoZWNr IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQpAb3B0aW9uey0taGVscH0gYW5kIEBvcHRpb257LS12ZXJz aW9ufSBwcmludCBhIHVzYWdlIG1lc3NhZ2UgYW5kIGEKdmVyc2lvbiBzdHJpbmcsIHJlc3BlY3Rp dmVseS4gIFRoaXMgaXMgdGhlIEBvcHRpb257c3RkLW9wdGlvbnN9IG9wdGlvbgooQHB4cmVme09w dGlvbnN9KS4KCkBpdGVtCkBzYW1we21ha2UgZGlzdH0gd2lsbCBjaGVjayB0byBtYWtlIHN1cmUg dGhlIEBmaWxle05FV1N9IGZpbGUgaGFzIGJlZW4KdXBkYXRlZCB0byB0aGUgY3VycmVudCB2ZXJz aW9uLgoKQGl0ZW0KQGNvZGV7VkVSU0lPTn0gaXMgY2hlY2tlZCB0byBtYWtlIHN1cmUgaXRzIGZv cm1hdCBjb21wbGllcyB3aXRoIEduaXRzCnN0YW5kYXJkcy4KQGMgRklYTUUgeHJlZiB3aGVuIHN0 YW5kYXJkcyBhcmUgZmluaXNoZWQKCkBpdGVtCkBjaW5kZXggQGZpbGV7UkVBRE1FLWFscGhhfQpJ ZiBAY29kZXtWRVJTSU9OfSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGFuIGFscGhhIHJlbGVhc2Us IGFuZCB0aGUgZmlsZQpAZmlsZXtSRUFETUUtYWxwaGF9IGFwcGVhcnMgaW4gdGhlIHRvcG1vc3Qg ZGlyZWN0b3J5IG9mIGEgcGFja2FnZSwgdGhlbgppdCBpcyBpbmNsdWRlZCBpbiB0aGUgZGlzdHJp YnV0aW9uLiAgVGhpcyBpcyBkb25lIGluIEBvcHRpb257LS1nbml0c30KbW9kZSwgYW5kIG5vIG90 aGVyLCBiZWNhdXNlIHRoaXMgbW9kZSBpcyB0aGUgb25seSBvbmUgd2hlcmUgdmVyc2lvbgpudW1i ZXIgZm9ybWF0cyBhcmUgY29uc3RyYWluZWQsIGFuZCBoZW5jZSB0aGUgb25seSBtb2RlIHdoZXJl IEF1dG9tYWtlCmNhbiBhdXRvbWF0aWNhbGx5IGRldGVybWluZSB3aGV0aGVyIEBmaWxle1JFQURN RS1hbHBoYX0gc2hvdWxkIGJlCmluY2x1ZGVkLgoKQGl0ZW0KVGhlIGZpbGUgQGZpbGV7VEhBTktT fSBpcyByZXF1aXJlZC4KQGVuZCBpdGVtaXplCgpAZW5kIHRhYmxlCgoKCkBub2RlIFVuaWZvcm0K QHNlY3Rpb24gVGhlIFVuaWZvcm0gTmFtaW5nIFNjaGVtZQoKQGNpbmRleCBVbmlmb3JtIG5hbWlu ZyBzY2hlbWUKCkF1dG9tYWtlIHZhcmlhYmxlcyBnZW5lcmFsbHkgZm9sbG93IGEgQGRmbnt1bmlm b3JtIG5hbWluZyBzY2hlbWV9IHRoYXQKbWFrZXMgaXQgZWFzeSB0byBkZWNpZGUgaG93IHByb2dy YW1zIChhbmQgb3RoZXIgZGVyaXZlZCBvYmplY3RzKSBhcmUKYnVpbHQsIGFuZCBob3cgdGhleSBh cmUgaW5zdGFsbGVkLiAgVGhpcyBzY2hlbWUgYWxzbyBzdXBwb3J0cwpAY29tbWFuZHtjb25maWd1 cmV9IHRpbWUgZGV0ZXJtaW5hdGlvbiBvZiB3aGF0IHNob3VsZCBiZSBidWlsdC4KCkBjaW5kZXgg QGNvZGV7X1BST0dSQU1TfSBwcmltYXJ5IHZhcmlhYmxlCkBjaW5kZXggQGNvZGV7UFJPR1JBTVN9 IHByaW1hcnkgdmFyaWFibGUKQGNpbmRleCBQcmltYXJ5IHZhcmlhYmxlLCBAY29kZXtQUk9HUkFN U30KQGNpbmRleCBQcmltYXJ5IHZhcmlhYmxlLCBkZWZpbmVkCkB2aW5kZXggX1BST0dSQU1TCgpB dCBAY29tbWFuZHttYWtlfSB0aW1lLCBjZXJ0YWluIHZhcmlhYmxlcyBhcmUgdXNlZCB0byBkZXRl cm1pbmUgd2hpY2gKb2JqZWN0cyBhcmUgdG8gYmUgYnVpbHQuICBUaGUgdmFyaWFibGUgbmFtZXMg YXJlIG1hZGUgb2Ygc2V2ZXJhbCBwaWVjZXMKdGhhdCBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVy LgoKVGhlIHBpZWNlIHRoYXQgdGVsbHMgQGNvbW1hbmR7YXV0b21ha2V9IHdoYXQgaXMgYmVpbmcg YnVpbHQgaXMgY29tbW9ubHkgY2FsbGVkCnRoZSBAZGZue3ByaW1hcnl9LiAgRm9yIGluc3RhbmNl LCB0aGUgcHJpbWFyeSBAY29kZXtQUk9HUkFNU30gaG9sZHMgYQpsaXN0IG9mIHByb2dyYW1zIHRo YXQgYXJlIHRvIGJlIGNvbXBpbGVkIGFuZCBsaW5rZWQuCkB2aW5kZXggUFJPR1JBTVMKCkBjaW5k ZXggQGNvZGV7cGtnZGF0YWRpcn0sIGRlZmluZWQKQGNpbmRleCBAY29kZXtwa2dpbmNsdWRlZGly fSwgZGVmaW5lZApAY2luZGV4IEBjb2Rle3BrZ2xpYmRpcn0sIGRlZmluZWQKQGNpbmRleCBAY29k ZXtwa2dsaWJleGVjZGlyfSwgZGVmaW5lZAoKQHZpbmRleCBwa2dkYXRhZGlyCkB2aW5kZXggcGtn aW5jbHVkZWRpcgpAdmluZGV4IHBrZ2xpYmRpcgpAdmluZGV4IHBrZ2xpYmV4ZWNkaXIKCkBjaW5k ZXggQGNvZGV7UEFDS0FHRX0sIGRpcmVjdG9yeQpBIGRpZmZlcmVudCBzZXQgb2YgbmFtZXMgaXMg dXNlZCB0byBkZWNpZGUgd2hlcmUgdGhlIGJ1aWx0IG9iamVjdHMKc2hvdWxkIGJlIGluc3RhbGxl ZC4gIFRoZXNlIG5hbWVzIGFyZSBwcmVmaXhlcyB0byB0aGUgcHJpbWFyeSwgYW5kIHRoZXkKaW5k aWNhdGUgd2hpY2ggc3RhbmRhcmQgZGlyZWN0b3J5IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBpbnN0 YWxsYXRpb24KZGlyZWN0b3J5LiAgVGhlIHN0YW5kYXJkIGRpcmVjdG9yeSBuYW1lcyBhcmUgZ2l2 ZW4gaW4gdGhlIEdOVSBzdGFuZGFyZHMKKEBweHJlZntEaXJlY3RvcnkgVmFyaWFibGVzLCAsICwg c3RhbmRhcmRzLCBUaGUgR05VIENvZGluZyBTdGFuZGFyZHN9KS4KQXV0b21ha2UgZXh0ZW5kcyB0 aGlzIGxpc3Qgd2l0aCBAY29kZXtwa2dkYXRhZGlyfSwgQGNvZGV7cGtnaW5jbHVkZWRpcn0sCkBj b2Rle3BrZ2xpYmRpcn0sIGFuZCBAY29kZXtwa2dsaWJleGVjZGlyfTsgdGhlc2UgYXJlIHRoZSBz YW1lIGFzIHRoZQpub24tQHNhbXB7cGtnfSB2ZXJzaW9ucywgYnV0IHdpdGggQHNhbXB7JChQQUNL QUdFKX0gYXBwZW5kZWQuICBGb3IgaW5zdGFuY2UsCkBjb2Rle3BrZ2xpYmRpcn0gaXMgZGVmaW5l ZCBhcyBAc2FtcHskKGxpYmRpcikvJChQQUNLQUdFKX0uCgpAY2luZGV4IEBjb2Rle0VYVFJBX30s IHByZXBlbmRpbmcKRm9yIGVhY2ggcHJpbWFyeSwgdGhlcmUgaXMgb25lIGFkZGl0aW9uYWwgdmFy aWFibGUgbmFtZWQgYnkgcHJlcGVuZGluZwpAc2FtcHtFWFRSQV99IHRvIHRoZSBwcmltYXJ5IG5h bWUuICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgdG8gbGlzdApvYmplY3RzIHRoYXQgbWF5IG9yIG1h eSBub3QgYmUgYnVpbHQsIGRlcGVuZGluZyBvbiB3aGF0CkBjb21tYW5ke2NvbmZpZ3VyZX0gZGVj aWRlcy4gIFRoaXMgdmFyaWFibGUgaXMgcmVxdWlyZWQgYmVjYXVzZSBBdXRvbWFrZQptdXN0IHN0 YXRpY2FsbHkga25vdyB0aGUgZW50aXJlIGxpc3Qgb2Ygb2JqZWN0cyB0aGF0IG1heSBiZSBidWls dCBpbgpvcmRlciB0byBnZW5lcmF0ZSBhIEBmaWxle01ha2VmaWxlLmlufSB0aGF0IHdpbGwgd29y ayBpbiBhbGwgY2FzZXMuCgpAY2luZGV4IEBjb2Rle0VYVFJBX1BST0dSQU1TfSwgZGVmaW5lZApA Y2luZGV4IEV4YW1wbGUsIEBjb2Rle0VYVFJBX1BST0dSQU1TfQpAY2luZGV4IEBjb21tYW5ke2Nw aW99IGV4YW1wbGUKCkZvciBpbnN0YW5jZSwgQGNvbW1hbmR7Y3Bpb30gZGVjaWRlcyBhdCBjb25m aWd1cmUgdGltZSB3aGljaCBwcm9ncmFtcwpzaG91bGQgYmUgYnVpbHQuICBTb21lIG9mIHRoZSBw cm9ncmFtcyBhcmUgaW5zdGFsbGVkIGluIEBjb2Rle2JpbmRpcn0sCmFuZCBzb21lIGFyZSBpbnN0 YWxsZWQgaW4gQGNvZGV7c2JpbmRpcn06CgpAZXhhbXBsZQpFWFRSQV9QUk9HUkFNUyA9IG10IHJt dApiaW5fUFJPR1JBTVMgPSBjcGlvIHBheApzYmluX1BST0dSQU1TID0gJChNT1JFX1BST0dSQU1T KQpAZW5kIGV4YW1wbGUKCkRlZmluaW5nIGEgcHJpbWFyeSB3aXRob3V0IGEgcHJlZml4IGFzIGEg dmFyaWFibGUsIGUuZy4sCkBzYW1we1BST0dSQU1TfSwgaXMgYW4gZXJyb3IuCgpOb3RlIHRoYXQg dGhlIGNvbW1vbiBAc2FtcHtkaXJ9IHN1ZmZpeCBpcyBsZWZ0IG9mZiB3aGVuIGNvbnN0cnVjdGlu ZyB0aGUKdmFyaWFibGUgbmFtZXM7IHRodXMgb25lIHdyaXRlcyBAc2FtcHtiaW5fUFJPR1JBTVN9 IGFuZCBub3QKQHNhbXB7YmluZGlyX1BST0dSQU1TfS4KCk5vdCBldmVyeSBzb3J0IG9mIG9iamVj dCBjYW4gYmUgaW5zdGFsbGVkIGluIGV2ZXJ5IGRpcmVjdG9yeS4KQXV0b21ha2Ugd2lsbCBmbGFn IHRob3NlIGF0dGVtcHRzIGl0IGZpbmRzIGluIGVycm9yIChidXQgc2VlIGJlbG93IGhvdwp0byBv dmVycmlkZSB0aGUgY2hlY2sgaWYgeW91IG5lZWQgdG8pLiAgQXV0b21ha2Ugd2lsbCBhbHNvIGRp YWdub3NlCm9idmlvdXMgbWlzc3BlbGxpbmdzIGluIGRpcmVjdG9yeSBuYW1lcy4KCkBjaW5kZXgg RXh0ZW5kaW5nIGxpc3Qgb2YgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzCkBjaW5kZXggSW5zdGFs bGF0aW9uIGRpcmVjdG9yaWVzLCBleHRlbmRpbmcgbGlzdAoKU29tZXRpbWVzIHRoZSBzdGFuZGFy ZCBkaXJlY3Rvcmllcy0tLWV2ZW4gYXMgYXVnbWVudGVkIGJ5CkF1dG9tYWtlLS0tYXJlIG5vdCBl bm91Z2guICBJbiBwYXJ0aWN1bGFyIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwsIGZvcgpjbGFyaXR5 LCB0byBpbnN0YWxsIG9iamVjdHMgaW4gYSBzdWJkaXJlY3Rvcnkgb2Ygc29tZSBwcmVkZWZpbmVk CmRpcmVjdG9yeS4gIFRvIHRoaXMgZW5kLCBBdXRvbWFrZSBhbGxvd3MgeW91IHRvIGV4dGVuZCB0 aGUgbGlzdCBvZgpwb3NzaWJsZSBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuICBBIGdpdmVuIHBy ZWZpeCAoZS5nLiwgQHNhbXB7emFyfSkKaXMgdmFsaWQgaWYgYSB2YXJpYWJsZSBvZiB0aGUgc2Ft ZSBuYW1lIHdpdGggQHNhbXB7ZGlyfSBhcHBlbmRlZCBpcwpkZWZpbmVkIChlLmcuLCBAc2FtcHt6 YXJkaXJ9KS4KCkZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBzbmlwcGV0IHdpbGwgaW5zdGFs bCBAZmlsZXtmaWxlLnhtbH0gaW50bwpAc2FtcHskKGRhdGFkaXIpL3htbH0uCgpAYyBLZWVwIGlu IHN5bmMgd2l0aCBwcmltYXJ5LXByZWZpeC1jb3VwbGVzLWRvY3VtZW50ZWQtdmFsaWQuc2gKQGV4 YW1wbGUKeG1sZGlyID0gJChkYXRhZGlyKS94bWwKeG1sX0RBVEEgPSBmaWxlLnhtbApAZW5kIGV4 YW1wbGUKClRoaXMgZmVhdHVyZSBjYW4gYWxzbyBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBzYW5p dHkgY2hlY2tzIEF1dG9tYWtlCnBlcmZvcm1zIHRvIGRpYWdub3NlIHN1c3BpY2lvdXMgZGlyZWN0 b3J5L3ByaW1hcnkgY291cGxlcyAoaW4gdGhlCnVubGlrZWx5IGNhc2UgdGhhdCB5b3UgbmVlZCB0 byBvbWl0IHRoZXNlIGNoZWNrcykuICBGb3IgZXhhbXBsZSwKQXV0b21ha2Ugd291bGQgZXJyb3Ig b3V0IG9uIHRoaXMgaW5wdXQ6CgpAYyBTaG91bGQgYmUgdGVzdGVkIGluIHByaW1hcnktcHJlZml4 LWludmFsaWQtY291cGxlcy5zaApAZXhhbXBsZQojIEZvcmJpZGRlbiBkaXJlY3RvcnkgY29tYmlu YXRpb25zLCBhdXRvbWFrZSB3aWxsIGVycm9yIG91dCBvbiB0aGlzLgpwa2dsaWJfUFJPR1JBTVMg PSBmb28KZG9jX0xJQlJBUklFUyA9IGxpYnF1dXguYQpAZW5kIGV4YW1wbGUKCkBub2luZGVudApi dXQgaXQgd2lsbCBzdWNjZWVkIHdpdGggdGhpczoKCkBjIEtlZXAgaW4gc3luYyB3aXRoIHByaW1h cnktcHJlZml4LWNvdXBsZXMtZG9jdW1lbnRlZC12YWxpZC5zaApAZXhhbXBsZQojIFdvcmsgYXJv dW5kIGZvcmJpZGRlbiBkaXJlY3RvcnkgY29tYmluYXRpb25zLiAgRG8gbm90IHVzZSB0aGlzCiMg d2l0aG91dCBhIHZlcnkgZ29vZCByZWFzb24hCm15X2V4ZWNiaW5kaXIgPSAkKHBrZ2xpYmRpcikK bXlfZG9jbGliZGlyID0gJChkb2NkaXIpCm15X2V4ZWNiaW5fUFJPR1JBTVMgPSBmb28KbXlfZG9j bGliX0xJQlJBUklFUyA9IGxpYnF1dXguYQpAZW5kIGV4YW1wbGUKClRoZSBAc2FtcHtleGVjfSBz dWJzdHJpbmcgb2YgdGhlIEBzYW1we215X2V4ZWNiaW5kaXJ9IHZhcmlhYmxlIGxldHMKdGhlIGZp bGVzIGJlIGluc3RhbGxlZCBhdCB0aGUgcmlnaHQgdGltZSAoQHB4cmVme1RoZSBUd28gUGFydHMg b2YKSW5zdGFsbH0pLgoKQGNpbmRleCBAc2FtcHtub2luc3RffSBwcmltYXJ5IHByZWZpeCwgZGVm aW5pdGlvbgpAdmluZGV4IG5vaW5zdF8KClRoZSBzcGVjaWFsIHByZWZpeCBAc2FtcHtub2luc3Rf fSBpbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0cyBpbiBxdWVzdGlvbgpzaG91bGQgYmUgYnVpbHQg YnV0IG5vdCBpbnN0YWxsZWQgYXQgYWxsLiAgVGhpcyBpcyB1c3VhbGx5IHVzZWQgZm9yCm9iamVj dHMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHJlc3Qgb2YgeW91ciBwYWNrYWdlLCBmb3IgaW5zdGFu Y2Ugc3RhdGljCmxpYnJhcmllcyAoQHB4cmVme0EgTGlicmFyeX0pLCBvciBoZWxwZXIgc2NyaXB0 cy4KCkBjaW5kZXggQHNhbXB7Y2hlY2tffSBwcmltYXJ5IHByZWZpeCwgZGVmaW5pdGlvbgpAdmlu ZGV4IGNoZWNrXwoKVGhlIHNwZWNpYWwgcHJlZml4IEBzYW1we2NoZWNrX30gaW5kaWNhdGVzIHRo YXQgdGhlIG9iamVjdHMgaW4gcXVlc3Rpb24Kc2hvdWxkIG5vdCBiZSBidWlsdCB1bnRpbCB0aGUg QHNhbXB7bWFrZSBjaGVja30gY29tbWFuZCBpcyBydW4uICBUaG9zZQpvYmplY3RzIGFyZSBub3Qg aW5zdGFsbGVkIGVpdGhlci4KClRoZSBjdXJyZW50IHByaW1hcnkgbmFtZXMgYXJlIEBzYW1we1BS T0dSQU1TfSwgQHNhbXB7TElCUkFSSUVTfSwKQHNhbXB7TFRMSUJSQVJJRVN9LCBAc2FtcHtMSVNQ fSwgQHNhbXB7UFlUSE9OfSwgQHNhbXB7SkFWQX0sCkBzYW1we1NDUklQVFN9LCBAc2FtcHtEQVRB fSwgQHNhbXB7SEVBREVSU30sIEBzYW1we01BTlN9LCBhbmQKQHNhbXB7VEVYSU5GT1N9LgpAdmlu ZGV4IFBST0dSQU1TCkB2aW5kZXggTElCUkFSSUVTCkB2aW5kZXggTFRMSUJSQVJJRVMKQHZpbmRl eCBMSVNQCkB2aW5kZXggUFlUSE9OCkB2aW5kZXggSkFWQQpAdmluZGV4IFNDUklQVFMKQHZpbmRl eCBEQVRBCkB2aW5kZXggSEVBREVSUwpAdmluZGV4IE1BTlMKQHZpbmRleCBURVhJTkZPUwoKU29t ZSBwcmltYXJpZXMgYWxzbyBhbGxvdyBhZGRpdGlvbmFsIHByZWZpeGVzIHRoYXQgY29udHJvbCBv dGhlcgphc3BlY3RzIG9mIEBjb21tYW5ke2F1dG9tYWtlfSdzIGJlaGF2aW9yLiAgVGhlIGN1cnJl bnRseSBkZWZpbmVkIHByZWZpeGVzCmFyZSBAc2FtcHtkaXN0X30sIEBzYW1we25vZGlzdF99LCBA c2FtcHtub2Jhc2VffSwgYW5kIEBzYW1we25vdHJhbnNffS4KVGhlc2UgcHJlZml4ZXMgYXJlIGV4 cGxhaW5lZCBsYXRlciAoQHB4cmVme1Byb2dyYW0gYW5kIExpYnJhcnkgVmFyaWFibGVzfSkKKEBw eHJlZntNYW4gUGFnZXN9KS4KCgpAbm9kZSBMZW5ndGggTGltaXRhdGlvbnMKQHNlY3Rpb24gU3Rh eWluZyBiZWxvdyB0aGUgY29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdAoKQGNpbmRleCBjb21tYW5k IGxpbmUgbGVuZ3RoIGxpbWl0CkBjaW5kZXggQVJHX01BWAoKVHJhZGl0aW9uYWxseSwgbW9zdCB1 bml4LWxpa2Ugc3lzdGVtcyBoYXZlIGEgbGVuZ3RoIGxpbWl0YXRpb24gZm9yIHRoZQpjb21tYW5k IGxpbmUgYXJndW1lbnRzIGFuZCBlbnZpcm9ubWVudCBjb250ZW50cyB3aGVuIGNyZWF0aW5nIG5l dwpwcm9jZXNzZXMgKHNlZSBmb3IgZXhhbXBsZQpAdXJlZntodHRwczovL3d3dy5pbi11bG0uZGUv QC9+bWFzY2hlY2svQC92YXJpb3VzL0AvYXJnbWF4L30gZm9yIGFuCm92ZXJ2aWV3IG9uIHRoaXMg aXNzdWUpLAp3aGljaCBvZiBjb3Vyc2UgYWxzbyBhcHBsaWVzIHRvIGNvbW1hbmRzIHNwYXduZWQg YnkgQGNvbW1hbmR7bWFrZX0uClBPU0lYIHJlcXVpcmVzIHRoaXMgbGltaXQgdG8gYmUgYXQgbGVh c3QgNDA5NiBieXRlcywgYW5kIG1vc3QgbW9kZXJuCnN5c3RlbXMgaGF2ZSBxdWl0ZSBoaWdoIGxp bWl0cyAob3IgYXJlIHVubGltaXRlZCkuCgpJbiBvcmRlciB0byBjcmVhdGUgcG9ydGFibGUgTWFr ZWZpbGVzIHRoYXQgZG8gbm90IHRyaXAgb3ZlciB0aGVzZQpsaW1pdHMsIGl0IGlzIG5lY2Vzc2Fy eSB0byBrZWVwIHRoZSBsZW5ndGggb2YgZmlsZSBsaXN0cyBib3VuZGVkLgpVbmZvcnR1bmF0ZWx5 LCBpdCBpcyBub3QgcG9zc2libGUgdG8gZG8gc28gZnVsbHkgdHJhbnNwYXJlbnRseSB3aXRoaW4K QXV0b21ha2UsIHNvIHlvdXIgaGVscCBtYXkgYmUgbmVlZGVkLiAgVHlwaWNhbGx5LCB5b3UgY2Fu IHNwbGl0IGxvbmcKZmlsZSBsaXN0cyBtYW51YWxseSBhbmQgdXNlIGRpZmZlcmVudCBpbnN0YWxs YXRpb24gZGlyZWN0b3J5IG5hbWVzIGZvcgplYWNoIGxpc3QuICBGb3IgZXhhbXBsZSwKCkBleGFt cGxlCmRhdGFfREFUQSA9IGZpbGUxIEBkb3Rze30gZmlsZUB2YXJ7Tn0gZmlsZUB2YXJ7TisxfSBA ZG90c3t9IGZpbGVAdmFyezJOfQpAZW5kIGV4YW1wbGUKCkBub2luZGVudAptYXkgYWxzbyBiZSB3 cml0dGVuIGFzCgpAYyBLZWVwIGluIHN5bmMgd2l0aCBwcmltYXJ5LXByZWZpeC1jb3VwbGVzLWRv Y3VtZW50ZWQtdmFsaWQuc2gKQGV4YW1wbGUKZGF0YV9EQVRBID0gZmlsZTEgQGRvdHN7fSBmaWxl QHZhcntOfQpkYXRhMmRpciA9ICQoZGF0YWRpcikKZGF0YTJfREFUQSA9IGZpbGVAdmFye04rMX0g QGRvdHN7fSBmaWxlQHZhcnsyTn0KQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKYW5kIHdpbGwgY2F1 c2UgQXV0b21ha2UgdG8gdHJlYXQgdGhlIHR3byBsaXN0cyBzZXBhcmF0ZWx5IGR1cmluZwpAY29k ZXttYWtlIGluc3RhbGx9LiAgU2VlIEByZWZ7VGhlIFR3byBQYXJ0cyBvZiBJbnN0YWxsfSBmb3Ig Y2hvb3NpbmcKZGlyZWN0b3J5IG5hbWVzIHRoYXQgd2lsbCBrZWVwIHRoZSBvcmRlcmluZyBvZiB0 aGUgdHdvIHBhcnRzIG9mCmluc3RhbGxhdGlvbiBOb3RlIHRoYXQgQGNvZGV7bWFrZSBkaXN0fSBt YXkgc3RpbGwgb25seSB3b3JrIG9uIGEgaG9zdAp3aXRoIGEgaGlnaGVyIGxlbmd0aCBsaW1pdCBp biB0aGlzIGV4YW1wbGUuCgpBdXRvbWFrZSBpdHNlbGYgZW1wbG95cyBhIGNvdXBsZSBvZiBzdHJh dGVnaWVzIHRvIGF2b2lkIGxvbmcgY29tbWFuZApsaW5lcy4gIEZvciBleGFtcGxlLCB3aGVuIEBz YW1weyRAe3NyY2RpckB9L30gaXMgcHJlcGVuZGVkIHRvIGZpbGUKbmFtZXMsIGFzIGNhbiBoYXBw ZW4gd2l0aCBhYm92ZSBAY29kZXskKGRhdGFfREFUQSl9IGxpc3RzLCBpdCBsaW1pdHMKdGhlIGFt b3VudCBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIGV4dGVybmFsIGNvbW1hbmRzLgoKVW5mb3J0dW5h dGVseSwgc29tZSBzeXN0ZW1zJyBAY29tbWFuZHttYWtlfSBjb21tYW5kcyBtYXkgcHJlcGVuZApA Y29kZXtWUEFUSH0gcHJlZml4ZXMgbGlrZSBAc2FtcHskQHtzcmNkaXJAfS99IHRvIGZpbGUgbmFt ZXMgZnJvbSB0aGUKc291cmNlIHRyZWUgYXV0b21hdGljYWxseSAoQHB4cmVme0F1dG9tYXRpYyBS dWxlIFJld3JpdGluZywgLCBBdXRvbWF0aWMKUnVsZSBSZXdyaXRpbmcsIGF1dG9jb25mLCBUaGUg QXV0b2NvbmYgTWFudWFsfSkuICBJbiB0aGlzIGNhc2UsIHRoZSB1c2VyCm1heSBoYXZlIHRvIHN3 aXRjaCB0byB1c2UgR05VIE1ha2UsIG9yIHJlZnJhaW4gZnJvbSB1c2luZyBWUEFUSCBidWlsZHMs CmluIG9yZGVyIHRvIHN0YXkgYmVsb3cgdGhlIGxlbmd0aCBsaW1pdC4KCkZvciBsaWJyYXJpZXMg YW5kIHByb2dyYW1zIGJ1aWx0IGZyb20gbWFueSBzb3VyY2VzLCBjb252ZW5pZW5jZSBhcmNoaXZl cwptYXkgYmUgdXNlZCBhcyBpbnRlcm1lZGlhdGVzIGluIG9yZGVyIHRvIGxpbWl0IHRoZSBvYmpl Y3QgbGlzdCBsZW5ndGgKKEBweHJlZntMaWJ0b29sIENvbnZlbmllbmNlIExpYnJhcmllc30pLgoK CkBub2RlIENhbm9uaWNhbGl6YXRpb24KQHNlY3Rpb24gSG93IGRlcml2ZWQgdmFyaWFibGVzIGFy ZSBuYW1lZAoKQGNpbmRleCBjYW5vbmljYWxpemluZyBBdXRvbWFrZSB2YXJpYWJsZXMKClNvbWV0 aW1lcyBhIE1ha2VmaWxlIHZhcmlhYmxlIG5hbWUgaXMgZGVyaXZlZCBmcm9tIHNvbWUgdGV4dCB0 aGUKbWFpbnRhaW5lciBzdXBwbGllcy4gIEZvciBpbnN0YW5jZSwgYSBwcm9ncmFtIG5hbWUgbGlz dGVkIGluCkBzYW1we19QUk9HUkFNU30gaXMgcmV3cml0dGVuIGludG8gdGhlIG5hbWUgb2YgYSBA c2FtcHtfU09VUkNFU30KdmFyaWFibGUuICBJbiBjYXNlcyBsaWtlIHRoaXMsIEF1dG9tYWtlIGNh bm9uaWNhbGl6ZXMgdGhlIHRleHQsIHNvIHRoYXQKcHJvZ3JhbSBuYW1lcyBhbmQgdGhlIGxpa2Ug ZG8gbm90IGhhdmUgdG8gZm9sbG93IE1ha2VmaWxlIHZhcmlhYmxlIG5hbWluZwpydWxlcy4gIEFs bCBjaGFyYWN0ZXJzIGluIHRoZSBuYW1lIGV4Y2VwdCBmb3IgbGV0dGVycywgbnVtYmVycywgdGhl CnN0cnVkZWwgKEBAKSwgYW5kIHRoZSB1bmRlcnNjb3JlIGFyZSB0dXJuZWQgaW50byB1bmRlcnNj b3JlcyB3aGVuIG1ha2luZwp2YXJpYWJsZSByZWZlcmVuY2VzLgoKRm9yIGV4YW1wbGUsIGlmIHlv dXIgcHJvZ3JhbSBpcyBuYW1lZCBAZmlsZXtzbmlmZi1nbHVlfSwgdGhlIGRlcml2ZWQKdmFyaWFi bGUgbmFtZSB3b3VsZCBiZSBAc2FtcHtzbmlmZl9nbHVlX1NPVVJDRVN9LCBub3QKQHNhbXB7c25p ZmYtZ2x1ZV9TT1VSQ0VTfS4gIFNpbWlsYXJseSB0aGUgc291cmNlcyBmb3IgYSBsaWJyYXJ5IG5h bWVkCkBmaWxle2xpYm11bWJsZSsrLmF9IHNob3VsZCBiZSBsaXN0ZWQgaW4gdGhlCkBzYW1we2xp Ym11bWJsZV9fX2FfU09VUkNFU30gdmFyaWFibGUuCgpUaGUgc3RydWRlbCBpcyBhbiBhZGRpdGlv biwgdG8gbWFrZSB0aGUgdXNlIG9mIEF1dG9jb25mIHN1YnN0aXR1dGlvbnMgaW4KdmFyaWFibGUg bmFtZXMgbGVzcyBvYmZ1c2NhdGluZy4KCgpAbm9kZSBVc2VyIFZhcmlhYmxlcwpAc2VjdGlvbiBW YXJpYWJsZXMgcmVzZXJ2ZWQgZm9yIHRoZSB1c2VyCgpAY2luZGV4IHZhcmlhYmxlcywgcmVzZXJ2 ZWQgZm9yIHRoZSB1c2VyCkBjaW5kZXggdXNlciB2YXJpYWJsZXMKClNvbWUgQGZpbGV7TWFrZWZp bGV9IHZhcmlhYmxlcyBhcmUgcmVzZXJ2ZWQgYnkgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzCmZv ciB0aGUgdXNlIG9mIHRoZSBgYHVzZXInJy0tLXRoZSBwZXJzb24gYnVpbGRpbmcgdGhlIHBhY2th Z2UuICBGb3IKaW5zdGFuY2UsIEBjb2Rle0NGTEFHU30gaXMgb25lIHN1Y2ggdmFyaWFibGUuCgpT b21ldGltZXMgcGFja2FnZSBkZXZlbG9wZXJzIGFyZSB0ZW1wdGVkIHRvIHNldCB1c2VyIHZhcmlh YmxlcyBzdWNoIGFzCkBjb2Rle0NGTEFHU30gYmVjYXVzZSBpdCBhcHBlYXJzIHRvIG1ha2UgdGhl aXIgam9iIGVhc2llci4gIEhvd2V2ZXIsCnRoZSBwYWNrYWdlIGl0c2VsZiBzaG91bGQgbmV2ZXIg c2V0IGEgdXNlciB2YXJpYWJsZSwgcGFydGljdWxhcmx5IG5vdAp0byBpbmNsdWRlIHN3aXRjaGVz IHRoYXQgYXJlIHJlcXVpcmVkIGZvciBwcm9wZXIgY29tcGlsYXRpb24gb2YgdGhlCnBhY2thZ2Uu ICBTaW5jZSB0aGVzZSB2YXJpYWJsZXMgYXJlIGRvY3VtZW50ZWQgYXMgYmVpbmcgZm9yIHRoZQpw YWNrYWdlIGJ1aWxkZXIsIHRoYXQgcGVyc29uIHJpZ2h0ZnVsbHkgZXhwZWN0cyB0byBiZSBhYmxl IHRvIG92ZXJyaWRlCmFueSBvZiB0aGVzZSB2YXJpYWJsZXMgYXQgYnVpbGQgdGltZS4KClRvIGdl dCBhcm91bmQgdGhpcyBwcm9ibGVtLCBBdXRvbWFrZSBpbnRyb2R1Y2VzIGFuIGF1dG9tYWtlLXNw ZWNpZmljCnNoYWRvdyB2YXJpYWJsZSBmb3IgZWFjaCB1c2VyIGZsYWcgdmFyaWFibGUuICAoU2hh ZG93IHZhcmlhYmxlcyBhcmUKbm90IGludHJvZHVjZWQgZm9yIHZhcmlhYmxlcyBsaWtlIEBjb2Rl e0NDfSwgd2hlcmUgdGhleSB3b3VsZCBtYWtlIG5vCnNlbnNlLikgIFRoZSBzaGFkb3cgdmFyaWFi bGUgaXMgbmFtZWQgYnkgcHJlcGVuZGluZyBAc2FtcHtBTV99IHRvIHRoZQp1c2VyIHZhcmlhYmxl J3MgbmFtZS4gIEZvciBpbnN0YW5jZSwgdGhlIHNoYWRvdyB2YXJpYWJsZSBmb3IKQGNvZGV7WUZM QUdTfSBpcyBAY29kZXtBTV9ZRkxBR1N9LiAgVGhlIHBhY2thZ2UgbWFpbnRhaW5lci0tLXRoYXQg aXMsCnRoZSBhdXRob3Iocykgb2YgdGhlIEBmaWxle01ha2VmaWxlLmFtfSBhbmQgQGZpbGV7Y29u ZmlndXJlLmFjfQpmaWxlcy0tLW1heSBhZGp1c3QgdGhlc2Ugc2hhZG93IHZhcmlhYmxlcyBob3dl dmVyIG5lY2Vzc2FyeS4KCkB4cmVme0ZsYWcgVmFyaWFibGVzIE9yZGVyaW5nfSwgZm9yIG1vcmUg ZGlzY3Vzc2lvbiBhYm91dCB0aGVzZQp2YXJpYWJsZXMgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdp dGggcGVyLXRhcmdldCB2YXJpYWJsZXMuCgpAbm9kZSBBdXhpbGlhcnkgUHJvZ3JhbXMKQHNlY3Rp b24gUHJvZ3JhbXMgYXV0b21ha2UgbWlnaHQgcmVxdWlyZQoKQGNpbmRleCBQcm9ncmFtcywgYXV4 aWxpYXJ5CkBjaW5kZXggQXV4aWxpYXJ5IHByb2dyYW1zCgpBdXRvbWFrZSBzb21ldGltZXMgcmVx dWlyZXMgaGVscGVyIHByb2dyYW1zIHNvIHRoYXQgdGhlIGdlbmVyYXRlZApAZmlsZXtNYWtlZmls ZX0gY2FuIGRvIGl0cyB3b3JrIHByb3Blcmx5LiAgVGhlcmUgYXJlIGEgZmFpcmx5IGxhcmdlCm51 bWJlciBvZiB0aGVtLCBhbmQgd2UgbGlzdCB0aGVtIGhlcmUuCgpBbHRob3VnaCBhbGwgb2YgdGhl c2UgZmlsZXMgYXJlIGRpc3RyaWJ1dGVkIGFuZCBpbnN0YWxsZWQgd2l0aApBdXRvbWFrZSwgYSBj b3VwbGUgb2YgdGhlbSBhcmUgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5LiAgVGhlIEF1dG9tYWtlCmNv cGllcyBhcmUgdXBkYXRlZCBiZWZvcmUgZWFjaCByZWxlYXNlLCBidXQgd2UgbWVudGlvbiB0aGUg b3JpZ2luYWwKc291cmNlIGluIGNhc2UgeW91IG5lZWQgbW9yZSByZWNlbnQgdmVyc2lvbnMuCgpA dGFibGUgQGNvZGUKQGl0ZW0gYXItbGliCkBjbWluZGV4IGFyLWxpYgpUaGlzIGlzIGEgd3JhcHBl ciBwcmltYXJpbHkgZm9yIHRoZSBNaWNyb3NvZnQgbGliIGFyY2hpdmVyLCB0byBtYWtlCml0IG1v cmUgUE9TSVgtbGlrZS4KCkBpdGVtIGNvbXBpbGUKQGNtaW5kZXggY29tcGlsZQpUaGlzIGlzIGEg d3JhcHBlciBmb3IgY29tcGlsZXJzIHRoYXQgZG8gbm90IGFjY2VwdCBvcHRpb25zIEBvcHRpb257 LWN9CmFuZCBAb3B0aW9uey1vfSBhdCB0aGUgc2FtZSB0aW1lLiAgSXQgaXMgb25seSB1c2VkIHdo ZW4gYWJzb2x1dGVseQpyZXF1aXJlZC4gIFN1Y2ggY29tcGlsZXJzIGFyZSByYXJlLCB3aXRoIHRo ZSBNaWNyb3NvZnQgQy9DKysgQ29tcGlsZXIKYXMgdGhlIG1vc3Qgbm90YWJsZSBleGNlcHRpb24u IFRoaXMgd3JhcHBlciBhbHNvIG1ha2VzIHRoZSBmb2xsb3dpbmcKY29tbW9uIG9wdGlvbnMgYXZh aWxhYmxlIGZvciB0aGF0IGNvbXBpbGVyLCB3aGlsZSBwZXJmb3JtaW5nIGZpbGUgbmFtZQp0cmFu c2xhdGlvbiB3aGVyZSBuZWVkZWQ6IEBvcHRpb257LUl9LCBAb3B0aW9uey1MfSwgQG9wdGlvbnst bH0sCkBvcHRpb257LVdsLH0gYW5kIEBvcHRpb257LVhsaW5rZXJ9LgoKQGl0ZW0gY29uZmlnLmd1 ZXNzCkBpdGVteCBjb25maWcuc3ViCkBjbWluZGV4IGNvbmZpZy5ndWVzcwpAY21pbmRleCBjb25m aWcuc3ViClRoZXNlIHR3byBwcm9ncmFtcyBjb21wdXRlIHRoZSBjYW5vbmljYWwgdHJpcGxldHMg Zm9yIHRoZSBnaXZlbiBidWlsZCwKaG9zdCwgb3IgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gIFRoZXNl IHByb2dyYW1zIGFyZSB1cGRhdGVkIHJlZ3VsYXJseSB0bwpzdXBwb3J0IG5ldyBhcmNoaXRlY3R1 cmVzIGFuZCBmaXggcHJvYmVzIGJyb2tlbiBieSBjaGFuZ2VzIGluIG5ldwprZXJuZWwgdmVyc2lv bnMuICBFYWNoIG5ldyByZWxlYXNlIG9mIEF1dG9tYWtlIGNvbWVzIHdpdGggdXAtdG8tZGF0ZQpj b3BpZXMgb2YgdGhlc2UgcHJvZ3JhbXMuICBJZiB5b3VyIGNvcHkgb2YgQXV0b21ha2UgaXMgZ2V0 dGluZyBvbGQsCnlvdSBhcmUgZW5jb3VyYWdlZCB0byBmZXRjaCB0aGUgbGF0ZXN0IHZlcnNpb25z IG9mIHRoZXNlIGZpbGVzIGZyb20KQHVybHtodHRwczovL3NhdmFubmFoLmdudS5vcmcvZ2l0Lz9n cm91cD1jb25maWd9IGJlZm9yZSBtYWtpbmcgYQpyZWxlYXNlLgoKQGl0ZW0gZGVwY29tcApAY21p bmRleCBkZXBjb21wClRoaXMgcHJvZ3JhbSB1bmRlcnN0YW5kcyBob3cgdG8gcnVuIGEgY29tcGls ZXIgc28gdGhhdCBpdCB3aWxsCmdlbmVyYXRlIG5vdCBvbmx5IHRoZSBkZXNpcmVkIG91dHB1dCBi dXQgYWxzbyBkZXBlbmRlbmN5IGluZm9ybWF0aW9uCnRoYXQgaXMgdGhlbiB1c2VkIGJ5IHRoZSBh dXRvbWF0aWMgZGVwZW5kZW5jeSB0cmFja2luZyBmZWF0dXJlCihAcHhyZWZ7RGVwZW5kZW5jaWVz fSkuCgpAaXRlbSBpbnN0YWxsLXNoCkBjbWluZGV4IGluc3RhbGwtc2gKVGhpcyBpcyBhIHJlcGxh Y2VtZW50IGZvciB0aGUgQGNvbW1hbmR7aW5zdGFsbH0gcHJvZ3JhbSB0aGF0IHdvcmtzIG9uCnBs YXRmb3JtcyB3aGVyZSBAY29tbWFuZHtpbnN0YWxsfSBpcyB1bmF2YWlsYWJsZSBvciB1bnVzYWJs ZS4KCkBpdGVtIG1kYXRlLXNoCkBjbWluZGV4IG1kYXRlLXNoClRoaXMgc2NyaXB0IGlzIHVzZWQg dG8gZ2VuZXJhdGUgYSBAZmlsZXt2ZXJzaW9uLnRleGl9IGZpbGUuICBJdCBleGFtaW5lcwphIGZp bGUgYW5kIHByaW50cyBzb21lIGRhdGUgaW5mb3JtYXRpb24gYWJvdXQgaXQuCgpAaXRlbSBtaXNz aW5nCkBjbWluZGV4IG1pc3NpbmcgQHJ7cHJvZ3JhbX0KVGhpcyB3cmFwcyBhIG51bWJlciBvZiBw cm9ncmFtcyB0aGF0IGFyZSB0eXBpY2FsbHkgb25seSByZXF1aXJlZCBieQptYWludGFpbmVycy4g IElmIHRoZSBwcm9ncmFtIGluIHF1ZXN0aW9uIGRvZXNuJ3QgZXhpc3QsIG9yIHNlZW1zIHRvbyBv bGQsCkBjb21tYW5ke21pc3Npbmd9IHdpbGwgcHJpbnQgYW4gaW5mb3JtYXRpdmUgd2FybmluZyBi ZWZvcmUgZmFpbGluZyBvdXQsCnRvIHByb3ZpZGUgdGhlIHVzZXIgd2l0aCBtb3JlIGNvbnRleHQg YW5kIGluZm9ybWF0aW9uLgoKQGl0ZW0gbWtpbnN0YWxsZGlycwpAY21pbmRleCBta2luc3RhbGxk aXJzClRoaXMgc2NyaXB0IHVzZWQgdG8gYmUgYSB3cmFwcGVyIGFyb3VuZCBAc2FtcHtta2RpciAt cH0sIHdoaWNoIGlzIG5vdApwb3J0YWJsZS4gIE5vdyB3ZSBwcmVmZXIgdG8gdXNlIEBzYW1we2lu c3RhbGwtc2ggLWR9IHdoZW4gQGNvbW1hbmR7Y29uZmlndXJlfQpmaW5kcyB0aGF0IEBzYW1we21r ZGlyIC1wfSBkb2VzIG5vdCB3b3JrOyB0aGlzIG1ha2VzIGZvciBvbmUgbGVzcyBzY3JpcHQgdG8K ZGlzdHJpYnV0ZS4KCkZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IEBmaWxle21raW5zdGFsbGRp cnN9IGlzIHN0aWxsIHVzZWQgYW5kCmRpc3RyaWJ1dGVkIHdoZW4gQGNvbW1hbmR7YXV0b21ha2V9 IGZpbmRzIGl0IGluIGEgcGFja2FnZS4gIEJ1dCBpdCBpcyBubwpsb25nZXIgaW5zdGFsbGVkIGF1 dG9tYXRpY2FsbHksIGFuZCBpdCBzaG91bGQgYmUgc2FmZSB0byByZW1vdmUgaXQuCgpAaXRlbSBw eS1jb21waWxlCkBjbWluZGV4IHB5LWNvbXBpbGUKVGhpcyBpcyB1c2VkIHRvIGJ5dGUtY29tcGls ZSBQeXRob24gc2NyaXB0cy4KCkBpdGVtIHRlc3QtZHJpdmVyCkBjbWluZGV4IHRlc3QtZHJpdmVy ClRoaXMgaW1wbGVtZW50cyB0aGUgZGVmYXVsdCB0ZXN0IGRyaXZlciBvZmZlcmVkIGJ5IHRoZSBw YXJhbGxlbAp0ZXN0c3VpdGUgaGFybmVzcy4KCkBpdGVtIHRleGluZm8udGV4CkBjbWluZGV4IHRl eGluZm8udGV4CldoZW4gVGV4aW5mbyBzb3VyY2VzIGFyZSBpbiB0aGUgcGFja2FnZSwgdGhpcyBm aWxlIGlzIHJlcXVpcmVkIGZvcgpAc2FtcHttYWtlIGR2aX0sIEBzYW1we21ha2UgcHN9IGFuZCBA c2FtcHttYWtlIHBkZn0uIFRoZSBsYXRlc3QKdmVyc2lvbiBjYW4gYmUgZG93bmxvYWRlZCBmcm9t CkB1cmx7aHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90ZXhpbmZvL30uICBBIHdvcmtpbmcg QFRlWHt9CmRpc3RyaWJ1dGlvbiwgb3IgYXQgbGVhc3QgYSBAZmlsZXt0ZXh9IHByb2dyYW0sIGlz IGFsc28gcmVxdWlyZWQuCkZ1cnRoZXJtb3JlLCBAc2FtcHttYWtlIGRpc3R9IGludm9rZXMgQHNh bXB7bWFrZSBkdml9LCBzbyB0aGVzZSBiZWNvbWUKcmVxdWlyZW1lbnRzIGZvciBtYWtpbmcgYSBk aXN0cmlidXRpb24gd2l0aCBUZXhpbmZvIHNvdXJjZXMuCgpAaXRlbSB5bHdyYXAKQGNtaW5kZXgg eWx3cmFwClRoaXMgcHJvZ3JhbSB3cmFwcyBAY29tbWFuZHtsZXh9IGFuZCBAY29tbWFuZHt5YWNj fSB0byByZW5hbWUgdGhlaXIKb3V0cHV0IGZpbGVzLiAgSXQgYWxzbyBlbnN1cmVzIHRoYXQsIGZv ciBpbnN0YW5jZSwgbXVsdGlwbGUKQGNvbW1hbmR7eWFjY30gaW5zdGFuY2VzIGNhbiBiZSBpbnZv a2VkIGluIGEgc2luZ2xlIGRpcmVjdG9yeSBpbgpwYXJhbGxlbC4KCkBlbmQgdGFibGUKCgpAbm9k ZSBFeGFtcGxlcwpAY2hhcHRlciBTb21lIGV4YW1wbGUgcGFja2FnZXMKClRoaXMgc2VjdGlvbiBj b250YWlucyB0d28gc21hbGwgZXhhbXBsZXMuCgpUaGUgZmlyc3QgZXhhbXBsZSAoQHB4cmVme0Nv bXBsZXRlfSkgYXNzdW1lcyB5b3UgaGF2ZSBhbiBleGlzdGluZwpwcm9qZWN0IGFscmVhZHkgdXNp bmcgQXV0b2NvbmYsIHdpdGggaGFuZGNyYWZ0ZWQgQGZpbGV7TWFrZWZpbGV9cywgYW5kCnRoYXQg eW91IHdhbnQgdG8gY29udmVydCBpdCB0byB1c2luZyBBdXRvbWFrZS4gIElmIHlvdSBhcmUgZGlz Y292ZXJpbmcKYm90aCB0b29scywgaXQgaXMgcHJvYmFibHkgYmV0dGVyIHRoYXQgeW91IGxvb2sg YXQgdGhlIEhlbGxvIFdvcmxkCmV4YW1wbGUgcHJlc2VudGVkIGVhcmxpZXIgKEBweHJlZntIZWxs byBXb3JsZH0pLgoKVGhlIHNlY29uZCBleGFtcGxlIChAcHhyZWZ7dHJ1ZX0pIHNob3dzIGhvdyB0 d28gcHJvZ3JhbXMgY2FuIGJlIGJ1aWx0CmZyb20gdGhlIHNhbWUgZmlsZSwgdXNpbmcgZGlmZmVy ZW50IGNvbXBpbGF0aW9uIHBhcmFtZXRlcnMuICBJdApjb250YWlucyBzb21lIHRlY2huaWNhbCBk aWdyZXNzaW9ucyB0aGF0IGFyZSBwcm9iYWJseSBiZXN0IHNraXBwZWQgb24KZmlyc3QgcmVhZC4K CkBtZW51CiogQ29tcGxldGU6OiAgICAgICAgICAgICAgICAgICAgQSBzaW1wbGUgZXhhbXBsZSwg c3RhcnQgdG8gZmluaXNoCiogdHJ1ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGRpbmcg dHJ1ZSBhbmQgZmFsc2UKQGVuZCBtZW51CgoKQG5vZGUgQ29tcGxldGUKQHNlY3Rpb24gQSBzaW1w bGUgZXhhbXBsZSwgc3RhcnQgdG8gZmluaXNoCgpAY2luZGV4IENvbXBsZXRlIGV4YW1wbGUKCkxl dCdzIHN1cHBvc2UgeW91IGp1c3QgZmluaXNoZWQgd3JpdGluZyBAY29kZXt6YXJkb3p9LCBhIHBy b2dyYW0gdG8gbWFrZQp5b3VyIGhlYWQgZmxvYXQgZnJvbSB2b3J0ZXggdG8gdm9ydGV4LiAgWW91 J3ZlIGJlZW4gdXNpbmcgQXV0b2NvbmYgdG8KcHJvdmlkZSBhIHBvcnRhYmlsaXR5IGZyYW1ld29y aywgYnV0IHlvdXIgQGZpbGV7TWFrZWZpbGUuaW59cyBoYXZlIGJlZW4KYWQtaG9jLiAgWW91IHdh bnQgdG8gbWFrZSB0aGVtIGJ1bGxldHByb29mLCBzbyB5b3UgdHVybiB0byBBdXRvbWFrZS4KCkBj aW5kZXggQGNvZGV7QU1fSU5JVF9BVVRPTUFLRX0sIGV4YW1wbGUgdXNlCgpUaGUgZmlyc3Qgc3Rl cCBpcyB0byB1cGRhdGUgeW91ciBAZmlsZXtjb25maWd1cmUuYWN9IHRvIGluY2x1ZGUgdGhlCmNv bW1hbmRzIHRoYXQgQGNvbW1hbmR7YXV0b21ha2V9IG5lZWRzLiAgVGhlIHdheSB0byBkbyB0aGlz IGlzIHRvIGFkZCBhbgpAY29kZXtBTV9JTklUX0FVVE9NQUtFfSBjYWxsIGp1c3QgYWZ0ZXIgQGNv ZGV7QUNfSU5JVH06CgpAZXhhbXBsZQpBQ19JTklUKFt6YXJkb3pdLCBbMS4wXSkKQU1fSU5JVF9B VVRPTUFLRQpAZG90c3t9CkBlbmQgZXhhbXBsZQoKU2luY2UgeW91ciBwcm9ncmFtIGRvZXNuJ3Qg aGF2ZSBhbnkgY29tcGxpY2F0aW5nIGZhY3RvcnMgKGUuZy4sIGl0CmRvZXNuJ3QgdXNlIEBjb2Rl e2dldHRleHR9LCBpdCBkb2Vzbid0IHdhbnQgdG8gYnVpbGQgYSBzaGFyZWQgbGlicmFyeSksCnlv dSdyZSBkb25lIHdpdGggdGhpcyBwYXJ0LiAgVGhhdCB3YXMgZWFzeSEKCkBjaW5kZXggQGNvbW1h bmR7YWNsb2NhbH0gcHJvZ3JhbSwgaW50cm9kdWN0aW9uCkBjaW5kZXggQGZpbGV7YWNsb2NhbC5t NH0sIHByZWV4aXN0aW5nCkBjaW5kZXggQGZpbGV7YWNpbmNsdWRlLm00fSwgZGVmaW5lZAoKTm93 IHlvdSBtdXN0IHJlZ2VuZXJhdGUgQGZpbGV7Y29uZmlndXJlfS4gIEJ1dCB0byBkbyB0aGF0LCB5 b3UnbGwgbmVlZAp0byB0ZWxsIEBjb21tYW5ke2F1dG9jb25mfSBob3cgdG8gZmluZCB0aGUgbmV3 IG1hY3JvIHlvdSd2ZSB1c2VkLiAgVGhlCmVhc2llc3Qgd2F5IHRvIGRvIHRoaXMgaXMgdG8gdXNl IHRoZSBAY29tbWFuZHthY2xvY2FsfSBwcm9ncmFtIHRvCmdlbmVyYXRlIHlvdXIgQGZpbGV7YWNs b2NhbC5tNH0gZm9yIHlvdS4gIEJ1dCB3YWl0QGRvdHN7fSBtYXliZSB5b3UKYWxyZWFkeSBoYXZl IGFuIEBmaWxle2FjbG9jYWwubTR9LCBiZWNhdXNlIHlvdSBoYWQgdG8gd3JpdGUgc29tZSBoYWly eQptYWNyb3MgZm9yIHlvdXIgcHJvZ3JhbS4gIFRoZSBAY29tbWFuZHthY2xvY2FsfSBwcm9ncmFt IGxldHMgeW91IHB1dAp5b3VyIG93biBtYWNyb3MgaW50byBAZmlsZXthY2luY2x1ZGUubTR9LCBz byBzaW1wbHkgcmVuYW1lIGFuZCB0aGVuCnJ1bjoKCkBleGFtcGxlCm12IGFjbG9jYWwubTQgYWNp bmNsdWRlLm00CmFjbG9jYWwKYXV0b2NvbmYKQGVuZCBleGFtcGxlCgpAY2luZGV4IEBjb21tYW5k e3phcmRven0gZXhhbXBsZQoKTm93IGl0IGlzIHRpbWUgdG8gd3JpdGUgeW91ciBAZmlsZXtNYWtl ZmlsZS5hbX0gZm9yIEBjb2Rle3phcmRven0uClNpbmNlIEBjb2Rle3phcmRven0gaXMgYSB1c2Vy IHByb2dyYW0sIHlvdSB3YW50IHRvIGluc3RhbGwgaXQgd2hlcmUgdGhlCnJlc3Qgb2YgdGhlIHVz ZXIgcHJvZ3JhbXMgZ286IEBjb2Rle2JpbmRpcn0uICBBZGRpdGlvbmFsbHksCkBjb2Rle3phcmRv en0gaGFzIHNvbWUgVGV4aW5mbyBkb2N1bWVudGF0aW9uLiAgWW91ciBAZmlsZXtjb25maWd1cmUu YWN9CnNjcmlwdCB1c2VzIEBjb2Rle0FDX1JFUExBQ0VfRlVOQ1N9LCBzbyB5b3UgbmVlZCB0byBs aW5rIGFnYWluc3QKQHNhbXB7JChMSUJPQkpTKX0uICBTbyBoZXJlJ3Mgd2hhdCB5b3UnZCB3cml0 ZToKCkBleGFtcGxlCmJpbl9QUk9HUkFNUyA9IHphcmRvegp6YXJkb3pfU09VUkNFUyA9IG1haW4u YyBoZWFkLmMgZmxvYXQuYyB2b3J0ZXg5LmMgZ3VuLmMKemFyZG96X0xEQUREID0gJChMSUJPQkpT KQoKaW5mb19URVhJTkZPUyA9IHphcmRvei50ZXhpCkBlbmQgZXhhbXBsZQoKTm93IHlvdSBjYW4g cnVuIEBzYW1we2F1dG9tYWtlIC0tYWRkLW1pc3Npbmd9IHRvIGdlbmVyYXRlIHlvdXIKQGZpbGV7 TWFrZWZpbGUuaW59IGFuZCBncmFiIGFueSBhdXhpbGlhcnkgZmlsZXMgeW91IG1pZ2h0IG5lZWQs IGFuZAp5b3UncmUgZG9uZSEKCgpAbm9kZSB0cnVlCkBzZWN0aW9uIEJ1aWxkaW5nIHRydWUgYW5k IGZhbHNlCgpAY2luZGV4IEV4YW1wbGUsIEBjb21tYW5ke2ZhbHNlfSBhbmQgQGNvbW1hbmR7dHJ1 ZX0KQGNpbmRleCBAY29tbWFuZHtmYWxzZX0gRXhhbXBsZQpAY2luZGV4IEBjb21tYW5ke3RydWV9 IEV4YW1wbGUKCkhlcmUgaXMgYW5vdGhlciwgdHJpY2tpZXIgZXhhbXBsZS4gIEl0IHNob3dzIGhv dyB0byBnZW5lcmF0ZSB0d28KcHJvZ3JhbXMgKEBjb2Rle3RydWV9IGFuZCBAY29kZXtmYWxzZX0p IGZyb20gdGhlIHNhbWUgc291cmNlIGZpbGUKKEBmaWxle3RydWUuY30pLiAgVGhlIGRpZmZpY3Vs dCBwYXJ0IGlzIHRoYXQgZWFjaCBjb21waWxhdGlvbiBvZgpAZmlsZXt0cnVlLmN9IHJlcXVpcmVz IGRpZmZlcmVudCBAY29kZXtjcHB9IGZsYWdzLgoKQGV4YW1wbGUKYmluX1BST0dSQU1TID0gdHJ1 ZSBmYWxzZQpmYWxzZV9TT1VSQ0VTID0KZmFsc2VfTERBREQgPSBmYWxzZS5vCgp0cnVlLm86IHRy dWUuYwogICAgICAgICQoQ09NUElMRSkgLURFWElUX0NPREU9MCAtYyB0cnVlLmMKCmZhbHNlLm86 IHRydWUuYwogICAgICAgICQoQ09NUElMRSkgLURFWElUX0NPREU9MSAtbyBmYWxzZS5vIC1jIHRy dWUuYwpAZW5kIGV4YW1wbGUKCk5vdGUgdGhhdCB0aGVyZSBpcyBubyBAY29kZXt0cnVlX1NPVVJD RVN9IGRlZmluaXRpb24uICBBdXRvbWFrZSB3aWxsCmltcGxpY2l0bHkgYXNzdW1lIHRoYXQgdGhl cmUgaXMgYSBzb3VyY2UgZmlsZSBuYW1lZCBAZmlsZXt0cnVlLmN9CihAcHhyZWZ7RGVmYXVsdCBf U09VUkNFU30pLCBhbmQKZGVmaW5lIHJ1bGVzIHRvIGNvbXBpbGUgQGZpbGV7dHJ1ZS5vfSBhbmQg bGluayBAZmlsZXt0cnVlfS4gIFRoZQpAc2FtcHt0cnVlLm86IHRydWUuY30gcnVsZSBzdXBwbGll ZCBieSB0aGUgYWJvdmUgQGZpbGV7TWFrZWZpbGUuYW19LAp3aWxsIG92ZXJyaWRlIHRoZSBBdXRv bWFrZSBnZW5lcmF0ZWQgcnVsZSB0byBidWlsZCBAZmlsZXt0cnVlLm99LgoKQGNvZGV7ZmFsc2Vf U09VUkNFU30gaXMgZGVmaW5lZCB0byBiZSBlbXB0eS0tLXRoYXQgd2F5IG5vIGltcGxpY2l0IHZh bHVlCmlzIHN1YnN0aXR1dGVkLiAgQmVjYXVzZSB3ZSBoYXZlIG5vdCBsaXN0ZWQgdGhlIHNvdXJj ZSBvZgpAZmlsZXtmYWxzZX0sIHdlIGhhdmUgdG8gdGVsbCBBdXRvbWFrZSBob3cgdG8gbGluayB0 aGUgcHJvZ3JhbS4gIFRoaXMgaXMKdGhlIHB1cnBvc2Ugb2YgdGhlIEBjb2Rle2ZhbHNlX0xEQURE fSBsaW5lLiAgQSBAY29kZXtmYWxzZV9ERVBFTkRFTkNJRVN9CnZhcmlhYmxlLCBob2xkaW5nIHRo ZSBkZXBlbmRlbmNpZXMgb2YgdGhlIEBmaWxle2ZhbHNlfSB0YXJnZXQgd2lsbCBiZQphdXRvbWF0 aWNhbGx5IGdlbmVyYXRlZCBieSBBdXRvbWFrZSBmcm9tIHRoZSBjb250ZW50IG9mCkBjb2Rle2Zh bHNlX0xEQUREfS4KClRoZSBhYm92ZSBydWxlcyB3b24ndCB3b3JrIGlmIHlvdXIgY29tcGlsZXIg ZG9lc24ndCBhY2NlcHQgYm90aApAb3B0aW9uey1jfSBhbmQgQG9wdGlvbnstb30uICBUaGUgc2lt cGxlc3QgZml4IGZvciB0aGlzIGlzIHRvIGludHJvZHVjZSBhCmJvZ3VzIGRlcGVuZGVuY3kgKHRv IGF2b2lkIHByb2JsZW1zIHdpdGggYSBwYXJhbGxlbCBAY29tbWFuZHttYWtlfSk6CgpAZXhhbXBs ZQp0cnVlLm86IHRydWUuYyBmYWxzZS5vCiAgICAgICAgJChDT01QSUxFKSAtREVYSVRfQ09ERT0w IC1jIHRydWUuYwoKZmFsc2UubzogdHJ1ZS5jCiAgICAgICAgJChDT01QSUxFKSAtREVYSVRfQ09E RT0xIC1jIHRydWUuYyAmJiBtdiB0cnVlLm8gZmFsc2UubwpAZW5kIGV4YW1wbGUKCkFzIGl0IHR1 cm5zIG91dCwgdGhlcmUgaXMgYWxzbyBhIG11Y2ggZWFzaWVyIHdheSB0byBkbyB0aGlzIHNhbWUg dGFzay4KU29tZSBvZiB0aGUgYWJvdmUgdGVjaG5pcXVlIGlzIHVzZWZ1bCBlbm91Z2ggdGhhdCB3 ZSd2ZSBrZXB0IHRoZQpleGFtcGxlIGluIHRoZSBtYW51YWwuICBIb3dldmVyIGlmIHlvdSB3ZXJl IHRvIGJ1aWxkIEBjb2Rle3RydWV9IGFuZApAY29kZXtmYWxzZX0gaW4gcmVhbCBsaWZlLCB5b3Ug d291bGQgcHJvYmFibHkgdXNlIHBlci1wcm9ncmFtCmNvbXBpbGF0aW9uIGZsYWdzLCBsaWtlIHNv OgoKQGMgS2VlcCBpbiBzeW5jIHdpdGggc3BlY2ZsZzcuc2ggYW5kIHNwZWNmbGc4LnNoCkBleGFt cGxlCmJpbl9QUk9HUkFNUyA9IGZhbHNlIHRydWUKCmZhbHNlX1NPVVJDRVMgPSB0cnVlLmMKZmFs c2VfQ1BQRkxBR1MgPSAtREVYSVRfQ09ERT0xCgp0cnVlX1NPVVJDRVMgPSB0cnVlLmMKdHJ1ZV9D UFBGTEFHUyA9IC1ERVhJVF9DT0RFPTAKQGVuZCBleGFtcGxlCgpJbiB0aGlzIGNhc2UgQXV0b21h a2Ugd2lsbCBjYXVzZSBAZmlsZXt0cnVlLmN9IHRvIGJlIGNvbXBpbGVkIHR3aWNlLAp3aXRoIGRp ZmZlcmVudCBmbGFncy4gIEluIHRoaXMgaW5zdGFuY2UsIHRoZSBuYW1lcyBvZiB0aGUgb2JqZWN0 IGZpbGVzCndvdWxkIGJlIGNob3NlbiBieSBhdXRvbWFrZTsgdGhleSB3b3VsZCBiZSBAZmlsZXtm YWxzZS10cnVlLm99IGFuZApAZmlsZXt0cnVlLXRydWUub30uIChUaGUgbmFtZSBvZiB0aGUgb2Jq ZWN0IGZpbGVzIHJhcmVseSBtYXR0ZXJzLikKCkBub2RlIGF1dG9tYWtlIEludm9jYXRpb24KQGNo YXB0ZXIgQ3JlYXRpbmcgYSBAZmlsZXtNYWtlZmlsZS5pbn06IEludm9raW5nIEBjb21tYW5ke2F1 dG9tYWtlfQpAYyBUaGlzIG5vZGUgdXNlZCB0byBiZSBuYW1lZCAiSW52b2tpbmcgYXV0b21ha2Ui LiAgVGhpcyBAYW5jaG9yCkBjIGFsbG93cyBvbGQgbGlua3MgdG8gc3RpbGwgd29yay4KQGFuY2hv cntJbnZva2luZyBhdXRvbWFrZX0KCkBjaW5kZXggTXVsdGlwbGUgQGZpbGV7Y29uZmlndXJlLmFj fSBmaWxlcwpAY2luZGV4IEludm9raW5nIEBjb21tYW5ke2F1dG9tYWtlfQpAY2luZGV4IEBjb21t YW5ke2F1dG9tYWtlfSwgaW52b2tpbmcKQGNpbmRleCBJbnZvY2F0aW9uIG9mIEBjb21tYW5ke2F1 dG9tYWtlfQpAY2luZGV4IEBjb21tYW5ke2F1dG9tYWtlfSwgaW52b2NhdGlvbgoKVG8gY3JlYXRl IGFsbCB0aGUgQGZpbGV7TWFrZWZpbGUuaW59cyBmb3IgYSBwYWNrYWdlLCBydW4gdGhlCkBjb21t YW5ke2F1dG9tYWtlfSBwcm9ncmFtIGluIHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5LCB3aXRoIG5v CmFyZ3VtZW50cy4gIEBjb21tYW5ke2F1dG9tYWtlfSB3aWxsIGF1dG9tYXRpY2FsbHkgZmluZCBl YWNoCmFwcHJvcHJpYXRlIEBmaWxle01ha2VmaWxlLmFtfSAoYnkgc2Nhbm5pbmcgQGZpbGV7Y29u ZmlndXJlLmFjfTsKQHB4cmVme2NvbmZpZ3VyZX0pIGFuZCBnZW5lcmF0ZSB0aGUgY29ycmVzcG9u ZGluZyBAZmlsZXtNYWtlZmlsZS5pbn0uCk5vdGUgdGhhdCBAY29tbWFuZHthdXRvbWFrZX0gaGFz IGEgcmF0aGVyIHNpbXBsaXN0aWMgdmlldyBvZiB3aGF0CmNvbnN0aXR1dGVzIGEgcGFja2FnZTsg aXQgYXNzdW1lcyB0aGF0IGEgcGFja2FnZSBoYXMgb25seSBvbmUKQGZpbGV7Y29uZmlndXJlLmFj fSwgYXQgdGhlIHRvcC4gIElmIHlvdXIgcGFja2FnZSBoYXMgbXVsdGlwbGUKQGZpbGV7Y29uZmln dXJlLmFjfXMsIHRoZW4geW91IG11c3QgcnVuIEBjb21tYW5ke2F1dG9tYWtlfSBpbiBlYWNoCmRp cmVjdG9yeSBob2xkaW5nIGEgQGZpbGV7Y29uZmlndXJlLmFjfS4gIChBbHRlcm5hdGl2ZWx5LCB5 b3UgbWF5IHJlbHkKb24gQXV0b2NvbmYncyBAY29tbWFuZHthdXRvcmVjb25mfSwgd2hpY2ggaXMg YWJsZSB0byByZWN1cnNlIHlvdXIKcGFja2FnZSB0cmVlIGFuZCBydW4gQGNvbW1hbmR7YXV0b21h a2V9IHdoZXJlIGFwcHJvcHJpYXRlLikKCllvdSBjYW4gb3B0aW9uYWxseSBnaXZlIEBjb21tYW5k e2F1dG9tYWtlfSBhbiBhcmd1bWVudDsgQGZpbGV7LmFtfSBpcwphcHBlbmRlZCB0byB0aGUgYXJn dW1lbnQgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUKaW5wdXQgZmls ZS4gIFRoaXMgZmVhdHVyZSBpcyBnZW5lcmFsbHkgb25seSB1c2VkIHRvIGF1dG9tYXRpY2FsbHkK cmVidWlsZCBhbiBvdXQtb2YtZGF0ZSBAZmlsZXtNYWtlZmlsZS5pbn0uICBOb3RlIHRoYXQKQGNv bW1hbmR7YXV0b21ha2V9IG11c3QgYWx3YXlzIGJlIHJ1biBmcm9tIHRoZSB0b3Btb3N0IGRpcmVj dG9yeSBvZiBhCnByb2plY3QsIGV2ZW4gaWYgYmVpbmcgdXNlZCB0byByZWdlbmVyYXRlIHRoZSBA ZmlsZXtNYWtlZmlsZS5pbn0gaW4Kc29tZSBzdWJkaXJlY3RvcnkuICBUaGlzIGlzIG5lY2Vzc2Fy eSBiZWNhdXNlIEBjb21tYW5ke2F1dG9tYWtlfSBtdXN0CnNjYW4gQGZpbGV7Y29uZmlndXJlLmFj fSwgYW5kIGJlY2F1c2UgQGNvbW1hbmR7YXV0b21ha2V9IHVzZXMgdGhlCmtub3dsZWRnZSB0aGF0 IGEgQGZpbGV7TWFrZWZpbGUuaW59IGlzIGluIGEgc3ViZGlyZWN0b3J5IHRvIGNoYW5nZSBpdHMK YmVoYXZpb3IgaW4gc29tZSBjYXNlcy4KCkB2aW5kZXggQVVUT0NPTkYKQXV0b21ha2Ugd2lsbCBy dW4gQGNvbW1hbmR7YXV0b2NvbmZ9IHRvIHNjYW4gQGZpbGV7Y29uZmlndXJlLmFjfSBhbmQKaXRz IGRlcGVuZGVuY2llcyAoaS5lLiwgQGZpbGV7YWNsb2NhbC5tNH0gYW5kIGFueSBpbmNsdWRlZCBm aWxlKSwKdGhlcmVmb3JlIEBjb21tYW5ke2F1dG9jb25mfSBtdXN0IGJlIGluIHlvdXIgQGVudntQ QVRIfS4gIElmIHRoZXJlIGlzCmFuIEBlbnZ7QVVUT0NPTkZ9IHZhcmlhYmxlIGluIHlvdXIgZW52 aXJvbm1lbnQgaXQgd2lsbCBiZSB1c2VkCmluc3RlYWQgb2YgQGNvbW1hbmR7YXV0b2NvbmZ9OyB0 aGlzIGFsbG93cyB5b3UgdG8gc2VsZWN0IGEgcGFydGljdWxhcgp2ZXJzaW9uIG9mIEF1dG9jb25m LiAgQnkgdGhlIHdheSwgZG9uJ3QgbWlzdW5kZXJzdGFuZCB0aGlzIHBhcmFncmFwaDoKQGNvbW1h bmR7YXV0b21ha2V9IHJ1bnMgQGNvbW1hbmR7YXV0b2NvbmZ9IHRvIEBlbXBoe3NjYW59IHlvdXIK QGZpbGV7Y29uZmlndXJlLmFjfTsgdGhpcyB3b24ndCBidWlsZCBAZmlsZXtjb25maWd1cmV9IGFu ZCB5b3Ugc3RpbGwKaGF2ZSB0byBydW4gQGNvbW1hbmR7YXV0b2NvbmZ9IHlvdXJzZWxmIGZvciB0 aGlzIHB1cnBvc2UuCgpAY2luZGV4IEBjb21tYW5ke2F1dG9tYWtlfSBvcHRpb25zCkBjaW5kZXgg T3B0aW9ucywgQGNvbW1hbmR7YXV0b21ha2V9CkBjaW5kZXggU3RyaWN0bmVzcywgY29tbWFuZCBs aW5lCgpAY29tbWFuZHthdXRvbWFrZX0gYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CgpA Y2luZGV4IEV4dHJhIGZpbGVzIGRpc3RyaWJ1dGVkIHdpdGggQXV0b21ha2UKQGNpbmRleCBGaWxl cyBkaXN0cmlidXRlZCB3aXRoIEF1dG9tYWtlCkBjaW5kZXggQGZpbGV7Y29uZmlnLmd1ZXNzfQoK QHRhYmxlIEBjb2RlCkBpdGVtIC1hCkBpdGVteCAtLWFkZC1taXNzaW5nCkBvcGluZGV4IC1hCkBv cGluZGV4IC0tYWRkLW1pc3NpbmcKQXV0b21ha2UgcmVxdWlyZXMgY2VydGFpbiBjb21tb24gZmls ZXMgdG8gZXhpc3QgaW4gY2VydGFpbiBzaXR1YXRpb25zOwpmb3IgaW5zdGFuY2UsIEBmaWxle2Nv bmZpZy5ndWVzc30gaXMgcmVxdWlyZWQgaWYgQGZpbGV7Y29uZmlndXJlLmFjfSBpbnZva2VzCkBj b2Rle0FDX0NBTk9OSUNBTF9IT1NUfS4gIEF1dG9tYWtlIGlzIGRpc3RyaWJ1dGVkIHdpdGggc2V2 ZXJhbCBvZiB0aGVzZQpmaWxlcyAoQHB4cmVme0F1eGlsaWFyeSBQcm9ncmFtc30pOyB0aGlzIG9w dGlvbiB3aWxsIGNhdXNlIHRoZSBtaXNzaW5nCm9uZXMgdG8gYmUgYXV0b21hdGljYWxseSBhZGRl ZCB0byB0aGUgcGFja2FnZSwgd2hlbmV2ZXIgcG9zc2libGUuICBJbgpnZW5lcmFsIGlmIEF1dG9t YWtlIHRlbGxzIHlvdSBhIGZpbGUgaXMgbWlzc2luZywgdHJ5IHVzaW5nIHRoaXMgb3B0aW9uLgpC eSBkZWZhdWx0IEF1dG9tYWtlIHRyaWVzIHRvIG1ha2UgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5n IHRvIGl0cyBvd24KY29weSBvZiB0aGUgbWlzc2luZyBmaWxlOyB0aGlzIGNhbiBiZSBjaGFuZ2Vk IHdpdGggQG9wdGlvbnstLWNvcHl9LgoKTWFueSBvZiB0aGUgcG90ZW50aWFsbHktbWlzc2luZyBm aWxlcyBhcmUgY29tbW9uIHNjcmlwdHMgd2hvc2UKbG9jYXRpb24gbWF5IGJlIHNwZWNpZmllZCB2 aWEgdGhlIEBjb2Rle0FDX0NPTkZJR19BVVhfRElSfSBtYWNyby4KVGhlcmVmb3JlLCBAY29kZXtB Q19DT05GSUdfQVVYX0RJUn0ncyBzZXR0aW5nIGFmZmVjdHMgd2hldGhlciBhCmZpbGUgaXMgY29u c2lkZXJlZCBtaXNzaW5nLCBhbmQgd2hlcmUgdGhlIG1pc3NpbmcgZmlsZSBpcyBhZGRlZAooQHB4 cmVme09wdGlvbmFsfSkuCgpJbiBzb21lIHN0cmljdG5lc3MgbW9kZXMsIGFkZGl0aW9uYWwgZmls ZXMgYXJlIGluc3RhbGxlZCwgc2VlIEByZWZ7R25pdHN9CmZvciBtb3JlIGluZm9ybWF0aW9uLgoK QGl0ZW0gLS1saWJkaXI9QHZhcntkaXJ9CkBvcGluZGV4IC0tbGliZGlyCkxvb2sgZm9yIEF1dG9t YWtlIGRhdGEgZmlsZXMgaW4gZGlyZWN0b3J5IEB2YXJ7ZGlyfSBpbnN0ZWFkIG9mIGluIHRoZQpp bnN0YWxsYXRpb24gZGlyZWN0b3J5LiAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdn aW5nLgoKQHZpbmRleCBBVVRPTUFLRV9MSUJESVIKVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEBl bnZ7QVVUT01BS0VfTElCRElSfSBwcm92aWRlcyBhbm90aGVyIHdheSB0bwpzZXQgdGhlIGRpcmVj dG9yeSBjb250YWluaW5nIEF1dG9tYWtlIGRhdGEgZmlsZXMuICBUaGUKQG9wdGlvbnstLWxpYmRp cn0gb3B0aW9uIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBpdC4KCkBpdGVtIC0tcHJpbnQtbGliZGly CkBvcGluZGV4IC0tcHJpbnQtbGliZGlyClByaW50IHRoZSBwYXRoIG9mIHRoZSBpbnN0YWxsYXRp b24gZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXV0b21ha2UtcHJvdmlkZWQKc2NyaXB0cyBhbmQgZGF0 YSBmaWxlcyAoZS5nLiwgQGZpbGV7dGV4aW5mby50ZXhpfSBhbmQKQGZpbGV7aW5zdGFsbC1zaH0p LgoKQGl0ZW0gLWMKQG9waW5kZXggLWMKQGl0ZW14IC0tY29weQpAb3BpbmRleCAtLWNvcHkKV2hl biB1c2VkIHdpdGggQG9wdGlvbnstLWFkZC1taXNzaW5nfSwgY2F1c2VzIGluc3RhbGxlZCBmaWxl cyB0byBiZQpjb3BpZWQuICBUaGUgZGVmYXVsdCBpcyB0byBtYWtlIGEgc3ltYm9saWMgbGluay4K CkBpdGVtIC1mCkBvcGluZGV4IC1mCkBpdGVteCAtLWZvcmNlLW1pc3NpbmcKQG9waW5kZXggLS1m b3JjZS1taXNzaW5nCldoZW4gdXNlZCB3aXRoIEBvcHRpb257LS1hZGQtbWlzc2luZ30sIGNhdXNl cyBzdGFuZGFyZCBmaWxlcyB0byBiZSByZWluc3RhbGxlZApldmVuIGlmIHRoZXkgYWxyZWFkeSBl eGlzdCBpbiB0aGUgc291cmNlIHRyZWUuICBUaGlzIGludm9sdmVzIHJlbW92aW5nCnRoZSBmaWxl IGZyb20gdGhlIHNvdXJjZSB0cmVlIGJlZm9yZSBjcmVhdGluZyB0aGUgbmV3IHN5bWxpbmsgKG9y LCB3aXRoCkBvcHRpb257LS1jb3B5fSwgY29weWluZyB0aGUgbmV3IGZpbGUpLgoKQGl0ZW0gLS1m b3JlaWduCkBvcGluZGV4IC0tZm9yZWlnbgpTZXQgdGhlIGdsb2JhbCBzdHJpY3RuZXNzIHRvIEBv cHRpb257Zm9yZWlnbn0uICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCkByZWZ7U3RyaWN0bmVz c30uCgpAaXRlbSAtLWduaXRzCkBvcGluZGV4IC0tZ25pdHMKU2V0IHRoZSBnbG9iYWwgc3RyaWN0 bmVzcyB0byBAb3B0aW9ue2duaXRzfS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKQHJlZntT dHJpY3RuZXNzfS4KCkBpdGVtIC0tZ251CkBvcGluZGV4IC0tZ251ClNldCB0aGUgZ2xvYmFsIHN0 cmljdG5lc3MgdG8gQG9wdGlvbntnbnV9LiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQpAcmVm e1N0cmljdG5lc3N9LiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBzdHJpY3RuZXNzLgoKQGl0ZW0gLS1o ZWxwCkBvcGluZGV4IC0taGVscApQcmludCBhIHN1bW1hcnkgb2YgdGhlIGNvbW1hbmQgbGluZSBv cHRpb25zIGFuZCBleGl0LgoKQGl0ZW0gLWkKQGl0ZW14IC0taWdub3JlLWRlcHMKQG9waW5kZXgg LWkKVGhpcyBkaXNhYmxlcyB0aGUgZGVwZW5kZW5jeSB0cmFja2luZyBmZWF0dXJlIGluIGdlbmVy YXRlZApAZmlsZXtNYWtlZmlsZX1zOyBzZWUgQHJlZntEZXBlbmRlbmNpZXN9LgoKQGl0ZW0gLS1p bmNsdWRlLWRlcHMKQG9waW5kZXggLS1pbmNsdWRlLWRlcHMKVGhpcyBlbmFibGVzIHRoZSBkZXBl bmRlbmN5IHRyYWNraW5nIGZlYXR1cmUuICBUaGlzIGZlYXR1cmUgaXMgZW5hYmxlZApieSBkZWZh dWx0LiAgVGhpcyBvcHRpb24gaXMgcHJvdmlkZWQgZm9yIGhpc3RvcmljYWwgcmVhc29ucyBvbmx5 IGFuZApwcm9iYWJseSBzaG91bGQgbm90IGJlIHVzZWQuCgpAaXRlbSAtLW5vLWZvcmNlCkBvcGlu ZGV4IC0tbm8tZm9yY2UKT3JkaW5hcmlseSBAY29tbWFuZHthdXRvbWFrZX0gY3JlYXRlcyBhbGwg QGZpbGV7TWFrZWZpbGUuaW59cyBtZW50aW9uZWQgaW4KQGZpbGV7Y29uZmlndXJlLmFjfS4gIFRo aXMgb3B0aW9uIGNhdXNlcyBpdCB0byBvbmx5IHVwZGF0ZSB0aG9zZQpAZmlsZXtNYWtlZmlsZS5p bn1zIHRoYXQgYXJlIG91dCBvZiBkYXRlIHdpdGggcmVzcGVjdCB0byBvbmUgb2YgdGhlaXIKZGVw ZW5kZW50cy4KCkBpdGVtIC1vIEB2YXJ7ZGlyfQpAaXRlbXggLS1vdXRwdXQtZGlyPUB2YXJ7ZGly fQpAb3BpbmRleCAtbwpAb3BpbmRleCAtLW91dHB1dC1kaXIKUHV0IHRoZSBnZW5lcmF0ZWQgQGZp bGV7TWFrZWZpbGUuaW59IGluIHRoZSBkaXJlY3RvcnkgQHZhcntkaXJ9LgpPcmRpbmFyaWx5IGVh Y2ggQGZpbGV7TWFrZWZpbGUuaW59IGlzIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSBvZiB0aGUK Y29ycmVzcG9uZGluZyBAZmlsZXtNYWtlZmlsZS5hbX0uICBUaGlzIG9wdGlvbiBpcyBkZXByZWNh dGVkIGFuZCB3aWxsIGJlCnJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KCkBpdGVtIC12CkBp dGVteCAtLXZlcmJvc2UKQG9waW5kZXggLXYKQG9waW5kZXggLS12ZXJib3NlCkNhdXNlIEF1dG9t YWtlIHRvIHByaW50IGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIGZpbGVzIGFyZSBiZWluZyByZWFk IG9yCmNyZWF0ZWQuCgpAaXRlbSAtLXZlcnNpb24KQG9waW5kZXggLS12ZXJzaW9uClByaW50IHRo ZSB2ZXJzaW9uIG51bWJlciBvZiBBdXRvbWFrZSBhbmQgZXhpdC4KCkBpdGVtIC1XIEB2YXJ7Y2F0 ZWdvcnl9WyxAdmFye2NhdGVnb3J5fS4uLl0KQGl0ZW14IC0td2FybmluZ3M9QHZhcntjYXRlZ29y eX1bLEB2YXJ7Y2F0ZWdvcnl9Li4uXQpAb3BpbmRleCAtVwpAb3BpbmRleCAtLXdhcm5pbmdzCk91 dHB1dCB3YXJuaW5ncyBhYm91dCBhIEB2YXJ7Y2F0ZWdvcnl9IG9mIHBvdGVudGlhbCBwcm9ibGVt cyB3aXRoIHRoZQpwYWNrYWdlLiAgQHZhcntjYXRlZ29yeX0gY2FuIGJlIGFueSBvZjoKCkB0YWJs ZSBAY29kZQpAaXRlbSBjcm9zcwpDb25zdHJ1Y3RzIGNvbXByb21pc2luZyB0aGUgYWJpbGl0eSB0 byBjcm9zcy1jb21waWxlIHRoZSBwYWNrYWdlLgpAaXRlbSBnbnUKTWlub3IgZGV2aWF0aW9ucyBm cm9tIHRoZSBHTlUgQ29kaW5nIFN0YW5kYXJkcwooQHB4cmVme1RvcCwgLCAsIHN0YW5kYXJkcywg VGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzfSkuCkBpdGVtIG9ic29sZXRlCk9ic29sZXRlIGZlYXR1 cmVzIG9yIGNvbnN0cnVjdGlvbnMuCkBpdGVtIG92ZXJyaWRlClJlZGVmaW5pdGlvbnMgb2YgQXV0 b21ha2UgcnVsZXMgb3IgdmFyaWFibGVzLgpAaXRlbSBwb3J0YWJpbGl0eQpQb3J0YWJpbGl0eSBp c3N1ZXMgKGUuZy4sIHVzZSBvZiBAY29tbWFuZHttYWtlfSBmZWF0dXJlcyB0aGF0IGFyZQprbm93 biB0byBiZSBub3QgcG9ydGFibGUpLgpAaXRlbSBwb3J0YWJpbGl0eS1yZWN1cnNpdmUKUmVjdXJz aXZlLCBvciBuZXN0ZWQsIE1ha2UgdmFyaWFibGUgZXhwYW5zaW9ucyAoQGNvZGV7JChmb28kKHgp KX0pLgpUaGVzZSBhcmUgbm90IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCwgYnV0IGFyZSBtb3JlIHBv cnRhYmxlIHRoYW4gdGhlCm90aGVyIG5vbi1wb3J0YWJsZSBjb25zdHJ1Y3RzIGRpYWdub3NlZCBi eSBAb3B0aW9uey1XcG9ydGFiaWxpdHl9LgpUaGVzZSB3YXJuaW5ncyBhcmUgdHVybmVkIG9uIGJ5 IEBvcHRpb257LVdwb3J0YWJpbGl0eX0gYnV0IGNhbiB0aGVuIGJlCnR1cm5lZCBvZmYgc3BlY2lm aWNhbGx5IGJ5IEBvcHRpb257LVduby1wb3J0YWJpbGl0eS1yZWN1cnNpdmV9LgpAaXRlbSBleHRy YS1wb3J0YWJpbGl0eQpFeHRyYSBwb3J0YWJpbGl0eSBpc3N1ZXMsIHJlbGF0ZWQgdG8gcmFyZWx5 LXVzZWQgdG9vbHMgc3VjaCBhcwp0aGUgTWljcm9zb2Z0IEBjb21tYW5ke2xpYn0gYXJjaGl2ZXIu CkBpdGVtIHN5bnRheApRdWVzdGlvbmFibGUgc3ludGF4LCB1bnVzZWQgdmFyaWFibGVzLCB0eXBv cywgZXRjLgpAaXRlbSB1bnN1cHBvcnRlZApVbnN1cHBvcnRlZCBvciBpbmNvbXBsZXRlIGZlYXR1 cmVzLgpAaXRlbSBhbGwKVHVybiBvbiBhbGwgdGhlIGFib3ZlIGNhdGVnb3JpZXMgb2Ygd2Fybmlu Z3MuCkBpdGVtIG5vbmUKVHVybiBvZmYgYWxsIHRoZSBhYm92ZSBjYXRlZ29yaWVzIG9mIHdhcm5p bmdzLgpAaXRlbSBlcnJvcgpUcmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMuCkBlbmQgdGFibGUKCkEg Y2F0ZWdvcnkgY2FuIGJlIHR1cm5lZCBvZmYgYnkgcHJlZml4aW5nIGl0cyBuYW1lIHdpdGggQHNh bXB7bm8tfS4gIEZvcgppbnN0YW5jZSwgQG9wdGlvbnstV25vLXN5bnRheH0gd2lsbCBoaWRlIHRo ZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQKdmFyaWFibGVzLgoKV2FybmluZ3MgaW4gdGhlIEBzYW1w e2dudX0sIEBzYW1we29ic29sZXRlfSwgQHNhbXB7cG9ydGFiaWxpdHl9LApAc2FtcHtzeW50YXh9 LCBhbmQgQHNhbXB7dW5zdXBwb3J0ZWR9IGNhdGVnb3JpZXMgYXJlIHR1cm5lZCBvbiBieQpkZWZh dWx0LiAgVGhlIEBzYW1we2dudX0gYW5kIEBzYW1we3BvcnRhYmlsaXR5fSBjYXRlZ29yaWVzIGFy ZSB0dXJuZWQKb2ZmIGluIEBvcHRpb257LS1mb3JlaWdufSBzdHJpY3RuZXNzLgoKQGMgQ2hlY2tl ZCBieSBleHRyYS1wb3J0YWJpbGl0eS5zaApUdXJuaW5nIG9mZiBAc2FtcHtwb3J0YWJpbGl0eX0g d2lsbCBhbHNvIHR1cm4gb2ZmIEBzYW1we2V4dHJhLXBvcnRhYmlsaXR5fSwKYW5kIHNpbWlsYXJs eSB0dXJuaW5nIG9uIEBzYW1we2V4dHJhLXBvcnRhYmlsaXR5fSB3aWxsIGFsc28gdHVybiBvbgpA c2FtcHtwb3J0YWJpbGl0eX0uICBIb3dldmVyLCB0dXJuaW5nIG9uIEBzYW1we3BvcnRhYmlsaXR5 fSBvciB0dXJuaW5nCm9mZiBAc2FtcHtleHRyYS1wb3J0YWJpbGl0eX0gd2lsbCBub3QgYWZmZWN0 IHRoZSBvdGhlciBjYXRlZ29yeS4KClVua25vd24gd2FybmluZyBjYXRlZ29yaWVzIHN1cHBsaWVk IGFzIGFuIGFyZ3VtZW50IHRvIEBvcHRpb257LVd9IHdpbGwKdGhlbXNlbHZlcyBwcm9kdWNlIGEg d2FybmluZywgaW4gdGhlIEBzYW1we3Vuc3VwcG9ydGVkfSBjYXRlZ29yeS4gIFRoaXMKd2Fybmlu ZyBpcyBuZXZlciB0cmVhdGVkIGFzIGFuIGVycm9yLgoKQHZpbmRleCBXQVJOSU5HUwpUaGUgZW52 aXJvbm1lbnQgdmFyaWFibGUgQGVudntXQVJOSU5HU30gY2FuIGNvbnRhaW4gYSBjb21tYSBzZXBh cmF0ZWQKbGlzdCBvZiBjYXRlZ29yaWVzIHRvIGVuYWJsZS4gIEBvcHRpb257LVd9IHNldHRpbmdz IG9uIHRoZSBjb21tYW5kIGxpbmUKdGFrZSBwcmVjZWRlbmNlOyBmb3IgaW5zdGFuY2UsIEBvcHRp b257LVdub25lfSBhbHNvIHR1cm5zIG9mZiBhbnkKd2FybmluZyBjYXRlZ29yaWVzIGVuYWJsZWQg YnkgQGVudntXQVJOSU5HU30uCgpVbmtub3duIHdhcm5pbmcgY2F0ZWdvcmllcyBuYW1lZCBpbiBA ZW52e1dBUk5JTkdTfSBhcmUgc2lsZW50bHkgaWdub3JlZC4KCkBlbmQgdGFibGUKCkB2aW5kZXgg QVVUT01BS0VfSk9CUwpJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQGVudntBVVRPTUFLRV9K T0JTfSBjb250YWlucyBhIHBvc2l0aXZlCm51bWJlciwgaXQgaXMgdGFrZW4gYXMgdGhlIG1heGlt dW0gbnVtYmVyIG9mIFBlcmwgdGhyZWFkcyB0byB1c2UgaW4KQGNvbW1hbmR7YXV0b21ha2V9IGZv ciBnZW5lcmF0aW5nIG11bHRpcGxlIEBmaWxle01ha2VmaWxlLmlufSBmaWxlcwpjb25jdXJyZW50 bHkuICBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlLgoKCkBub2RlIGNvbmZpZ3VyZQpA Y2hhcHRlciBTY2FubmluZyBAZmlsZXtjb25maWd1cmUuYWN9LCB1c2luZyBAY29tbWFuZHthY2xv Y2FsfQoKQGNpbmRleCBAZmlsZXtjb25maWd1cmUuYWN9LCBzY2FubmluZwpAY2luZGV4IFNjYW5u aW5nIEBmaWxle2NvbmZpZ3VyZS5hY30KQGNpbmRleCBVc2luZyBAY29tbWFuZHthY2xvY2FsfQpA Y2luZGV4IEBjb21tYW5ke2FjbG9jYWx9LCB1c2luZwoKQXV0b21ha2Ugc2NhbnMgdGhlIHBhY2th Z2UncyBAZmlsZXtjb25maWd1cmUuYWN9IHRvIGRldGVybWluZSBjZXJ0YWluCmluZm9ybWF0aW9u IGFib3V0IHRoZSBwYWNrYWdlLiAgU29tZSBAY29tbWFuZHthdXRvY29uZn0gbWFjcm9zIGFyZSBy ZXF1aXJlZAphbmQgc29tZSB2YXJpYWJsZXMgbXVzdCBiZSBkZWZpbmVkIGluIEBmaWxle2NvbmZp Z3VyZS5hY30uICBBdXRvbWFrZQp3aWxsIGFsc28gdXNlIGluZm9ybWF0aW9uIGZyb20gQGZpbGV7 Y29uZmlndXJlLmFjfSB0byBmdXJ0aGVyIHRhaWxvciBpdHMKb3V0cHV0LgoKQXV0b21ha2UgYWxz byBzdXBwbGllcyBzb21lIEF1dG9jb25mIG1hY3JvcyB0byBtYWtlIHRoZSBtYWludGVuYW5jZQpl YXNpZXIuICBUaGVzZSBtYWNyb3MgY2FuIGF1dG9tYXRpY2FsbHkgYmUgcHV0IGludG8geW91cgpA ZmlsZXthY2xvY2FsLm00fSB1c2luZyB0aGUgQGNvbW1hbmR7YWNsb2NhbH0gcHJvZ3JhbS4KCkBt ZW51CiogUmVxdWlyZW1lbnRzOjogICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiByZXF1aXJl bWVudHMKKiBPcHRpb25hbDo6ICAgICAgICAgICAgICAgICAgICBPdGhlciB0aGluZ3MgQXV0b21h a2UgcmVjb2duaXplcwoqIGFjbG9jYWwgSW52b2NhdGlvbjo6ICAgICAgICAgIEF1dG8tZ2VuZXJh dGluZyBhY2xvY2FsLm00CiogTWFjcm9zOjogICAgICAgICAgICAgICAgICAgICAgQXV0b2NvbmYg bWFjcm9zIHN1cHBsaWVkIHdpdGggQXV0b21ha2UKQGVuZCBtZW51CgoKQG5vZGUgUmVxdWlyZW1l bnRzCkBzZWN0aW9uIENvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzCgpAY2luZGV4IEF1dG9tYWtl IHJlcXVpcmVtZW50cwpAY2luZGV4IFJlcXVpcmVtZW50cyBvZiBBdXRvbWFrZQoKQGFjaW5kZXgg QU1fSU5JVF9BVVRPTUFLRQpUaGUgb25lIHJlYWwgcmVxdWlyZW1lbnQgb2YgQXV0b21ha2UgaXMg dGhhdCB5b3VyIEBmaWxle2NvbmZpZ3VyZS5hY30KY2FsbCBAY29kZXtBTV9JTklUX0FVVE9NQUtF fS4gIFRoaXMgbWFjcm8gZG9lcyBzZXZlcmFsIHRoaW5ncyB0aGF0IGFyZQpyZXF1aXJlZCBmb3Ig cHJvcGVyIEF1dG9tYWtlIG9wZXJhdGlvbiAoQHB4cmVme01hY3Jvc30pLgoKSGVyZSBhcmUgdGhl IG90aGVyIG1hY3JvcyB0aGF0IEF1dG9tYWtlIHJlcXVpcmVzIGJ1dCB3aGljaCBhcmUgbm90IHJ1 bgpieSBAY29kZXtBTV9JTklUX0FVVE9NQUtFfToKCkB0YWJsZSBAY29kZQpAaXRlbSBBQ19DT05G SUdfRklMRVMKQGl0ZW14IEFDX09VVFBVVApAYWNpbmRleCBBQ19DT05GSUdfRklMRVMKQGFjaW5k ZXggQUNfT1VUUFVUClRoZXNlIHR3byBtYWNyb3MgYXJlIHVzdWFsbHkgaW52b2tlZCBhcyBmb2xs b3dzIG5lYXIgdGhlIGVuZCBvZgpAZmlsZXtjb25maWd1cmUuYWN9LgoKQGV4YW1wbGUKQGRvdHN7 fQpBQ19DT05GSUdfRklMRVMoWwogIE1ha2VmaWxlCiAgZG9jL01ha2VmaWxlCiAgc3JjL01ha2Vm aWxlCiAgc3JjL2xpYi9NYWtlZmlsZQogIEBkb3Rze30KXSkKQUNfT1VUUFVUCkBlbmQgZXhhbXBs ZQoKQXV0b21ha2UgdXNlcyB0aGVzZSB0byBkZXRlcm1pbmUgd2hpY2ggZmlsZXMgdG8gY3JlYXRl IChAcHhyZWZ7T3V0cHV0LCAsCkNyZWF0aW5nIE91dHB1dCBGaWxlcywgYXV0b2NvbmYsIFRoZSBB dXRvY29uZiBNYW51YWx9KS4gIEEgbGlzdGVkIGZpbGUKaXMgY29uc2lkZXJlZCB0byBiZSBhbiBB dXRvbWFrZSBnZW5lcmF0ZWQgQGZpbGV7TWFrZWZpbGV9IGlmIHRoZXJlCmV4aXN0cyBhIGZpbGUg d2l0aCB0aGUgc2FtZSBuYW1lIGFuZCB0aGUgQGZpbGV7LmFtfSBleHRlbnNpb24gYXBwZW5kZWQu ClR5cGljYWxseSwgQHNhbXB7QUNfQ09ORklHX0ZJTEVTKFtmb28vTWFrZWZpbGVdKX0gd2lsbCBj YXVzZSBBdXRvbWFrZSB0bwpnZW5lcmF0ZSBAZmlsZXtmb28vTWFrZWZpbGUuaW59IGlmIEBmaWxl e2Zvby9NYWtlZmlsZS5hbX0gZXhpc3RzLgoKV2hlbiB1c2luZyBAY29kZXtBQ19DT05GSUdfRklM RVN9IHdpdGggbXVsdGlwbGUgaW5wdXQgZmlsZXMsIGFzIGluCgpAZXhhbXBsZQpBQ19DT05GSUdf RklMRVMoW01ha2VmaWxlOnRvcC5pbjpNYWtlZmlsZS5pbjpib3QuaW5dKQpAZW5kIGV4YW1wbGUK CkBub2luZGVudApAY29tbWFuZHthdXRvbWFrZX0gd2lsbCBnZW5lcmF0ZSB0aGUgZmlyc3QgQGZp bGV7LmlufSBpbnB1dCBmaWxlIGZvcgp3aGljaCBhIEBmaWxley5hbX0gZmlsZSBleGlzdHMuICBJ ZiBubyBzdWNoIGZpbGUgZXhpc3RzIHRoZSBvdXRwdXQKZmlsZSBpcyBub3QgY29uc2lkZXJlZCB0 byBiZSBnZW5lcmF0ZWQgYnkgQXV0b21ha2UuCgpGaWxlcyBjcmVhdGVkIGJ5IEBjb2Rle0FDX0NP TkZJR19GSUxFU30sIGJlIHRoZXkgQXV0b21ha2UKQGZpbGV7TWFrZWZpbGV9cyBvciBub3QsIGFy ZSBhbGwgcmVtb3ZlZCBieSBAc2FtcHttYWtlIGRpc3RjbGVhbn0uClRoZWlyIGlucHV0cyBhcmUg YXV0b21hdGljYWxseSBkaXN0cmlidXRlZCwgdW5sZXNzIHRoZXkKYXJlIHRoZSBvdXRwdXQgb2Yg cHJpb3IgQGNvZGV7QUNfQ09ORklHX0ZJTEVTfSBjb21tYW5kcy4KRmluYWxseSwgcmVidWlsZCBy dWxlcyBhcmUgZ2VuZXJhdGVkIGluIHRoZSBBdXRvbWFrZSBAZmlsZXtNYWtlZmlsZX0KZXhpc3Rp bmcgaW4gdGhlIHN1YmRpcmVjdG9yeSBvZiB0aGUgb3V0cHV0IGZpbGUsIGlmIHRoZXJlIGlzIG9u ZSwgb3IKaW4gdGhlIHRvcC1sZXZlbCBAZmlsZXtNYWtlZmlsZX0gb3RoZXJ3aXNlLgoKVGhlIGFi b3ZlIG1hY2hpbmVyeSAoY2xlYW5pbmcsIGRpc3RyaWJ1dGluZywgYW5kIHJlYnVpbGRpbmcpIHdv cmtzCmZpbmUgaWYgdGhlIEBjb2Rle0FDX0NPTkZJR19GSUxFU30gc3BlY2lmaWNhdGlvbnMgY29u dGFpbiBvbmx5CmxpdGVyYWxzLiAgSWYgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbiB1c2VzIHNo ZWxsIHZhcmlhYmxlcywKQGNvbW1hbmR7YXV0b21ha2V9IHdpbGwgbm90IGJlIGFibGUgdG8gZnVs ZmlsbCB0aGlzIHNldHVwLCBhbmQgeW91IHdpbGwKaGF2ZSB0byBjb21wbGV0ZSB0aGUgbWlzc2lu ZyBiaXRzIGJ5IGhhbmQuICBGb3IgaW5zdGFuY2UsIG9uCgpAYyBLZWVwIGluIHN5bmMgd2l0aCBv dXRwdXQxMS5zaApAZXhhbXBsZQpmaWxlPWlucHV0CkBkb3Rze30KQUNfQ09ORklHX0ZJTEVTKFtv dXRwdXQ6JGZpbGVdLCwgW2ZpbGU9JGZpbGVdKQpAZW5kIGV4YW1wbGUKCkBub2luZGVudApAY29t bWFuZHthdXRvbWFrZX0gd2lsbCBvdXRwdXQgcnVsZXMgdG8gY2xlYW4gQGZpbGV7b3V0cHV0fSwg YW5kCnJlYnVpbGQgaXQuICBIb3dldmVyIHRoZSByZWJ1aWxkIHJ1bGUgd2lsbCBub3QgZGVwZW5k IG9uIEBmaWxle2lucHV0fSwKYW5kIHRoaXMgZmlsZSB3aWxsIG5vdCBiZSBkaXN0cmlidXRlZCBl aXRoZXIuICAoWW91IG11c3QgYWRkCkBzYW1we0VYVFJBX0RJU1QgPSBpbnB1dH0gdG8geW91ciBA ZmlsZXtNYWtlZmlsZS5hbX0gaWYgQGZpbGV7aW5wdXR9IGlzIGEKc291cmNlIGZpbGUuKQoKU2lt aWxhcmx5CgpAYyBLZWVwIGluIHN5bmMgd2l0aCBvdXRwdXQxMS5zaApAZXhhbXBsZQpmaWxlPW91 dHB1dApmaWxlMj1vdXQ6aW4KQGRvdHN7fQpBQ19DT05GSUdfRklMRVMoWyRmaWxlOmlucHV0XSws IFtmaWxlPSRmaWxlXSkKQUNfQ09ORklHX0ZJTEVTKFskZmlsZTJdLCwgW2ZpbGUyPSRmaWxlMl0p CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CndpbGwgb25seSBjYXVzZSBAZmlsZXtpbnB1dH0gdG8g YmUgZGlzdHJpYnV0ZWQuICBObyBmaWxlIHdpbGwgYmUKY2xlYW5lZCBhdXRvbWF0aWNhbGx5IChh ZGQgQHNhbXB7RElTVENMRUFORklMRVMgPSBvdXRwdXQgb3V0fQp5b3Vyc2VsZiksIGFuZCBubyBy ZWJ1aWxkIHJ1bGUgd2lsbCBiZSBvdXRwdXQuCgpPYnZpb3VzbHkgQGNvbW1hbmR7YXV0b21ha2V9 IGNhbm5vdCBndWVzcyB3aGF0IHZhbHVlIEBzYW1weyRmaWxlfSBpcwpnb2luZyB0byBob2xkIGxh dGVyIHdoZW4gQGZpbGV7Y29uZmlndXJlfSBpcyBydW4sIGFuZCBpdCBjYW5ub3QgdXNlCnRoZSBz aGVsbCB2YXJpYWJsZSBAc2FtcHskZmlsZX0gaW4gYSBAZmlsZXtNYWtlZmlsZX0uICBIb3dldmVy LCBpZiB5b3UKbWFrZSByZWZlcmVuY2UgdG8gQHNhbXB7JGZpbGV9IGFzIEBzYW1weyRAe2ZpbGVA fX0gKGkuZS4sIGluIGEgd2F5CnRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIEBjb21tYW5ke21ha2V9 J3Mgc3ludGF4KSBhbmQgZnVydGhlcm1vcmUgdXNlCkBjb2Rle0FDX1NVQlNUfSB0byBlbnN1cmUg dGhhdCBAc2FtcHskQHtmaWxlQH19IGlzIG1lYW5pbmdmdWwgaW4gYQpAZmlsZXtNYWtlZmlsZX0s IHRoZW4gQGNvbW1hbmR7YXV0b21ha2V9IHdpbGwgYmUgYWJsZSB0byB1c2UKQHNhbXB7JEB7Zmls ZUB9fSB0byBnZW5lcmF0ZSBhbGwgb2YgdGhlc2UgcnVsZXMuICBGb3IgaW5zdGFuY2UsIGhlcmUg aXMKaG93IHRoZSBBdXRvbWFrZSBwYWNrYWdlIGl0c2VsZiBnZW5lcmF0ZXMgdmVyc2lvbmVkIHNj cmlwdHMgZm9yIGl0cwp0ZXN0IHN1aXRlOgoKQGV4YW1wbGUKQUNfU1VCU1QoW0FQSVZFUlNJT05d LCBAZG90c3t9KQpAZG90c3t9CkFDX0NPTkZJR19GSUxFUygKICBbdGVzdHMvYWNsb2NhbC0kQHtB UElWRVJTSU9OQH06dGVzdHMvYWNsb2NhbC5pbl0sCiAgW2NobW9kICt4IHRlc3RzL2FjbG9jYWwt JEB7QVBJVkVSU0lPTkB9XSwKICBbQVBJVkVSU0lPTj0kQVBJVkVSU0lPTl0pCkFDX0NPTkZJR19G SUxFUygKICBbdGVzdHMvYXV0b21ha2UtJEB7QVBJVkVSU0lPTkB9OnRlc3RzL2F1dG9tYWtlLmlu XSwKICBbY2htb2QgK3ggdGVzdHMvYXV0b21ha2UtJEB7QVBJVkVSU0lPTkB9XSkKQGVuZCBleGFt cGxlCgpAbm9pbmRlbnQKSGVyZSBjbGVhbmluZywgZGlzdHJpYnV0aW5nLCBhbmQgcmVidWlsZGlu ZyBhcmUgZG9uZSBhdXRvbWF0aWNhbGx5LApiZWNhdXNlIEBzYW1weyRAe0FQSVZFUlNJT05AfX0g aXMga25vd24gYXQgQGNvbW1hbmR7bWFrZX0tdGltZS4KCk5vdGUgdGhhdCB5b3Ugc2hvdWxkIG5v dCB1c2Ugc2hlbGwgdmFyaWFibGVzIHRvIGRlY2xhcmUKQGZpbGV7TWFrZWZpbGV9IGZpbGVzIGZv ciB3aGljaCBAY29tbWFuZHthdXRvbWFrZX0gbXVzdCBjcmVhdGUKQGZpbGV7TWFrZWZpbGUuaW59 LiAgRXZlbiBAY29kZXtBQ19TVUJTVH0gZG9lcyBub3QgaGVscCBoZXJlLCBiZWNhdXNlCkBjb21t YW5ke2F1dG9tYWtlfSBuZWVkcyB0byBrbm93IHRoZSBmaWxlIG5hbWUgd2hlbiBpdCBydW5zIGlu IG9yZGVyCnRvIGNoZWNrIHdoZXRoZXIgQGZpbGV7TWFrZWZpbGUuYW19IGV4aXN0cy4gIChJbiB0 aGUgdmVyeSBoYWlyeSBjYXNlCnRoYXQgeW91ciBzZXR1cCByZXF1aXJlcyBzdWNoIHVzZSBvZiB2 YXJpYWJsZXMsIHlvdSB3aWxsIGhhdmUgdG8gdGVsbApBdXRvbWFrZSB3aGljaCBAZmlsZXtNYWtl ZmlsZS5pbn1zIHRvIGdlbmVyYXRlIG9uIHRoZSBjb21tYW5kLWxpbmUuKQoKSXQgaXMgcG9zc2li bGUgdG8gbGV0IEBjb21tYW5ke2F1dG9tYWtlfSBlbWl0IGNvbmRpdGlvbmFsIHJ1bGVzIGZvcgpA Y29kZXtBQ19DT05GSUdfRklMRVN9IHdpdGggdGhlIGhlbHAgb2YgQGNvZGV7QU1fQ09ORF9JRn0K KEBweHJlZntPcHRpb25hbH0pLgoKVG8gc3VtbWFyaXplOgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVt ClVzZSBsaXRlcmFscyBmb3IgQGZpbGV7TWFrZWZpbGV9cywgYW5kIGZvciBvdGhlciBmaWxlcyB3 aGVuZXZlciBwb3NzaWJsZS4KQGl0ZW0KVXNlIEBzYW1weyRmaWxlfSAob3IgQHNhbXB7JEB7Zmls ZUB9fSB3aXRob3V0IEBzYW1we0FDX1NVQlNUKFtmaWxlXSl9KQpmb3IgZmlsZXMgdGhhdCBAY29t bWFuZHthdXRvbWFrZX0gc2hvdWxkIGlnbm9yZS4KQGl0ZW0KVXNlIEBzYW1weyRAe2ZpbGVAfX0g YW5kIEBzYW1we0FDX1NVQlNUKFtmaWxlXSl9IGZvciBmaWxlcwp0aGF0IEBjb21tYW5ke2F1dG9t YWtlfSBzaG91bGQgbm90IGlnbm9yZS4KQGVuZCBpdGVtaXplCgpAZW5kIHRhYmxlCgoKQG5vZGUg T3B0aW9uYWwKQHNlY3Rpb24gT3RoZXIgdGhpbmdzIEF1dG9tYWtlIHJlY29nbml6ZXMKCkBjaW5k ZXggTWFjcm9zIEF1dG9tYWtlIHJlY29nbml6ZXMKQGNpbmRleCBSZWNvZ25pemVkIG1hY3JvcyBi eSBBdXRvbWFrZQoKRXZlcnkgdGltZSBBdXRvbWFrZSBpcyBydW4gaXQgY2FsbHMgQXV0b2NvbmYg dG8gdHJhY2UKQGZpbGV7Y29uZmlndXJlLmFjfS4gIFRoaXMgd2F5IGl0IGNhbiByZWNvZ25pemUg dGhlIHVzZSBvZiBjZXJ0YWluCm1hY3JvcyBhbmQgdGFpbG9yIHRoZSBnZW5lcmF0ZWQgQGZpbGV7 TWFrZWZpbGUuaW59IGFwcHJvcHJpYXRlbHkuCkN1cnJlbnRseSByZWNvZ25pemVkIG1hY3JvcyBh bmQgdGhlaXIgZWZmZWN0cyBhcmU6CgpAZnRhYmxlIEBjb2RlCkBpdGVtIEFDX0NBTk9OSUNBTF9C VUlMRApAaXRlbXggQUNfQ0FOT05JQ0FMX0hPU1QKQGl0ZW14IEFDX0NBTk9OSUNBTF9UQVJHRVQK QHZpbmRleCBidWlsZF90cmlwbGV0CkB2aW5kZXggaG9zdF90cmlwbGV0CkB2aW5kZXggdGFyZ2V0 X3RyaXBsZXQKQXV0b21ha2Ugd2lsbCBlbnN1cmUgdGhhdCBAZmlsZXtjb25maWcuZ3Vlc3N9IGFu ZCBAZmlsZXtjb25maWcuc3VifQpleGlzdC4gIEFsc28sIHRoZSBAZmlsZXtNYWtlZmlsZX0gdmFy aWFibGVzIEBjb2Rle2J1aWxkX3RyaXBsZXR9LApAY29kZXtob3N0X3RyaXBsZXR9IGFuZCBAY29k ZXt0YXJnZXRfdHJpcGxldH0gYXJlIGludHJvZHVjZWQuICBTZWUKQHJlZntDYW5vbmljYWxpemlu ZywgLCBHZXR0aW5nIHRoZSBDYW5vbmljYWwgU3lzdGVtIFR5cGUsIGF1dG9jb25mLApUaGUgQXV0 b2NvbmYgTWFudWFsfS4KCkBpdGVtIEFDX0NPTkZJR19BVVhfRElSCkF1dG9tYWtlIHdpbGwgbG9v ayBmb3IgdmFyaW91cyBoZWxwZXIgc2NyaXB0cywgc3VjaCBhcwpAZmlsZXtpbnN0YWxsLXNofSwg aW4gdGhlIGRpcmVjdG9yeSBuYW1lZCBpbiB0aGlzIG1hY3JvIGludm9jYXRpb24uCkBjIFRoaXMg bGlzdCBpcyBhY2N1cmF0ZSByZWxhdGl2ZSB0byB2ZXJzaW9uIDEuMTEKKFRoZSBmdWxsIGxpc3Qg b2Ygc2NyaXB0cyBpczoKQGZpbGV7YXItbGlifSwKQGZpbGV7Y29uZmlnLmd1ZXNzfSwKQGZpbGV7 Y29uZmlnLnN1Yn0sCkBmaWxle2RlcGNvbXB9LApAZmlsZXtjb21waWxlfSwKQGZpbGV7aW5zdGFs bC1zaH0sCkBmaWxle2x0bWFpbi5zaH0sCkBmaWxle21kYXRlLXNofSwKQGZpbGV7bWlzc2luZ30s CkBmaWxle21raW5zdGFsbGRpcnN9LApAZmlsZXtweS1jb21waWxlfSwKQGZpbGV7dGVzdC1kcml2 ZXJ9LApAZmlsZXt0ZXhpbmZvLnRleH0sCkBmaWxle3lsd3JhcH0uKQpOb3QgYWxsIHNjcmlwdHMg YXJlIGFsd2F5cyBzZWFyY2hlZCBmb3I7IHNvbWUgc2NyaXB0cwp3aWxsIG9ubHkgYmUgc291Z2h0 IGlmIHRoZSBnZW5lcmF0ZWQgQGZpbGV7TWFrZWZpbGUuaW59IHJlcXVpcmVzIHRoZW0uCgpJZiBA Y29kZXtBQ19DT05GSUdfQVVYX0RJUn0gaXMgdXNlZCwgaXQgbXVzdCBiZSBnaXZlbiBiZWZvcmUg dGhlIGNhbGwKdG8gQGNvZGV7QU1fSU5JVF9BVVRPTUFLRX07IEF1dG9tYWtlIHdpbGwgd2FybiBh Ym91dCB0aGlzIGlmIGl0IGlzIG5vdApzby4gIEFsbCBvdGhlciBAY29kZXtBQ19DT05GSUdfLi4u fSBtYWNyb3MgYXJlIGNvbnZlbnRpb25hbGx5IGNhbGxlZAphZnRlciBAY29kZXtBTV9JTklUX0FV VE9NQUtFfSwgdGhvdWdoIHRoZXkgbWF5IG9yIG1heSBub3Qgd29yayBpbgpvdGhlciBsb2NhdGlv bnMsIHdpdGggb3Igd2l0aG91dCB3YXJuaW5ncy4KCklmIEBjb2Rle0FDX0NPTkZJR19BVVhfRElS fSBpcyBub3QgZ2l2ZW4sIHRoZSBzY3JpcHRzIGFyZSBsb29rZWQgZm9yIGluCnRoZWlyIHN0YW5k YXJkIGxvY2F0aW9ucy4gIEZvciBAZmlsZXttZGF0ZS1zaH0sCkBmaWxle3RleGluZm8udGV4fSwg YW5kIEBmaWxle3lsd3JhcH0sIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBpcyB0aGUKc291cmNlIGRp cmVjdG9yeSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50IEBmaWxle01ha2VmaWxlLmFtfS4g IEZvcgp0aGUgcmVzdCwgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGlzIHRoZSBmaXJzdCBvbmUgb2Yg QGZpbGV7Ln0sIEBmaWxley4ufSwKb3IgQGZpbGV7Li4vLi59IChyZWxhdGl2ZSB0byB0aGUgdG9w IHNvdXJjZSBkaXJlY3RvcnkpIHRoYXQgcHJvdmlkZXMgYW55Cm9uZSBvZiB0aGUgaGVscGVyIHNj cmlwdHMuICBAeHJlZntJbnB1dCwgLCBGaW5kaW5nIGBjb25maWd1cmUnIElucHV0LAphdXRvY29u ZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0uCgpSZXF1aXJlZCBmaWxlcyBmcm9tIEBjb2Rle0FDX0NP TkZJR19BVVhfRElSfSBhcmUgYXV0b21hdGljYWxseQpkaXN0cmlidXRlZCwgZXZlbiBpZiB0aGVy ZSBpcyBubyBAZmlsZXtNYWtlZmlsZS5hbX0gaW4gdGhpcyBkaXJlY3RvcnkuCgpAaXRlbSBBQ19D T05GSUdfTElCT0JKX0RJUgpBdXRvbWFrZSB3aWxsIHJlcXVpcmUgdGhlIHNvdXJjZXMgZmlsZSBk ZWNsYXJlZCB3aXRoCkBjb2Rle0FDX0xJQlNPVVJDRX0gKHNlZSBiZWxvdykgaW4gdGhlIGRpcmVj dG9yeSBzcGVjaWZpZWQgYnkgdGhpcwptYWNyby4KCkBpdGVtIEFDX0NPTkZJR19IRUFERVJTCkF1 dG9tYWtlIHdpbGwgZ2VuZXJhdGUgcnVsZXMgdG8gcmVidWlsZCB0aGVzZSBoZWFkZXJzIGZyb20g dGhlCmNvcnJlc3BvbmRpbmcgdGVtcGxhdGVzICh1c3VhbGx5LCB0aGUgdGVtcGxhdGUgZm9yIGEg QGZpbGV7Zm9vLmh9CmhlYWRlciBiZWluZyBAZmlsZXtmb28uaC5pbn0pLgoKQXMgd2l0aCBAY29k ZXtBQ19DT05GSUdfRklMRVN9IChAcHhyZWZ7UmVxdWlyZW1lbnRzfSksIHBhcnRzIG9mIHRoZQpz cGVjaWZpY2F0aW9uIHVzaW5nIHNoZWxsIHZhcmlhYmxlcyB3aWxsIGJlIGlnbm9yZWQgYXMgZmFy IGFzCmNsZWFuaW5nLCBkaXN0cmlidXRpbmcsIGFuZCByZWJ1aWxkaW5nIGlzIGNvbmNlcm5lZC4K Ck9sZGVyIHZlcnNpb25zIG9mIEF1dG9tYWtlIHJlcXVpcmVkIHRoZSB1c2Ugb2YKQGNvZGV7QU1f Q09ORklHX0hFQURFUn07IHRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLCBhbmQgdGhhdCBtYWNy bwpoYXMgaW5kZWVkIGJlZW4gcmVtb3ZlZC4KCkBpdGVtIEFDX0NPTkZJR19MSU5LUwpBdXRvbWFr ZSB3aWxsIGdlbmVyYXRlIHJ1bGVzIHRvIHJlbW92ZSBAZmlsZXtjb25maWd1cmV9IGdlbmVyYXRl ZApsaW5rcyBvbiBAc2FtcHttYWtlIGRpc3RjbGVhbn0gYW5kIHRvIGRpc3RyaWJ1dGUgbmFtZWQg c291cmNlIGZpbGVzIGFzCnBhcnQgb2YgQHNhbXB7bWFrZSBkaXN0fS4KCkFzIHdpdGggQGNvZGV7 QUNfQ09ORklHX0ZJTEVTfSAoQHB4cmVme1JlcXVpcmVtZW50c30pLCBwYXJ0cyBvZiB0aGUKc3Bl Y2lmaWNhdGlvbiB1c2luZyBzaGVsbCB2YXJpYWJsZXMgd2lsbCBiZSBpZ25vcmVkIGFzIGZhciBh cyBjbGVhbmluZwphbmQgZGlzdHJpYnV0aW5nIGlzIGNvbmNlcm5lZC4gIChUaGVyZSBhcmUgbm8g cmVidWlsZCBydWxlcyBmb3IgbGlua3MuKQoKQGl0ZW0gQUNfTElCT0JKCkBpdGVteCBBQ19MSUJT T1VSQ0UKQGl0ZW14IEFDX0xJQlNPVVJDRVMKQHZpbmRleCBMSUJPQkpTCkF1dG9tYWtlIHdpbGwg YXV0b21hdGljYWxseSBkaXN0cmlidXRlIGFueSBmaWxlIGxpc3RlZCBpbgpAY29kZXtBQ19MSUJT T1VSQ0V9IG9yIEBjb2Rle0FDX0xJQlNPVVJDRVN9LgoKTm90ZSB0aGF0IHRoZSBAY29kZXtBQ19M SUJPQkp9IG1hY3JvIGNhbGxzIEBjb2Rle0FDX0xJQlNPVVJDRX0uICBTbyBpZgphbiBBdXRvY29u ZiBtYWNybyBpcyBkb2N1bWVudGVkIHRvIGNhbGwgQHNhbXB7QUNfTElCT0JKKFtmaWxlXSl9LCB0 aGVuCkBmaWxle2ZpbGUuY30gd2lsbCBiZSBkaXN0cmlidXRlZCBhdXRvbWF0aWNhbGx5IGJ5IEF1 dG9tYWtlLiAgVGhpcwplbmNvbXBhc3NlcyBtYW55IG1hY3JvcyBsaWtlIEBjb2Rle0FDX0ZVTkNf QUxMT0NBfSwKQGNvZGV7QUNfRlVOQ19NRU1DTVB9LCBAY29kZXtBQ19SRVBMQUNFX0ZVTkNTfSwg YW5kIG90aGVycy4KCkJ5IHRoZSB3YXksIGRpcmVjdCBhc3NpZ25tZW50cyB0byBAY29kZXtMSUJP QkpTfSBhcmUgbm8gbG9uZ2VyCnN1cHBvcnRlZC4gIFlvdSBzaG91bGQgYWx3YXlzIHVzZSBAY29k ZXtBQ19MSUJPQkp9IGZvciB0aGlzIHB1cnBvc2UuCkB4cmVme0FDX0xJQk9CSiB2cyBMSUJPQkpT LCAsIEBjb2Rle0FDX0xJQk9CSn0gdnMuQDogQGNvZGV7TElCT0JKU30sCmF1dG9jb25mLCBUaGUg QXV0b2NvbmYgTWFudWFsfS4KCkBpdGVtIEFDX1BST0dfUkFOTElCClRoaXMgaXMgcmVxdWlyZWQg aWYgYW55IGxpYnJhcmllcyBhcmUgYnVpbHQgaW4gdGhlIHBhY2thZ2UuCkB4cmVme1BhcnRpY3Vs YXIgUHJvZ3JhbXMsICwgUGFydGljdWxhciBQcm9ncmFtIENoZWNrcywgYXV0b2NvbmYsIFRoZQpB dXRvY29uZiBNYW51YWx9LgoKQGl0ZW0gQUNfUFJPR19DWFgKVGhpcyBpcyByZXF1aXJlZCBpZiBh bnkgQysrIHNvdXJjZSBpcyBpbmNsdWRlZC4gIEB4cmVme1BhcnRpY3VsYXIKUHJvZ3JhbXMsICwg UGFydGljdWxhciBQcm9ncmFtIENoZWNrcywgYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9 LgoKQGl0ZW0gQUNfUFJPR19PQkpDClRoaXMgaXMgcmVxdWlyZWQgaWYgYW55IE9iamVjdGl2ZSBD IHNvdXJjZSBpcyBpbmNsdWRlZC4gIEB4cmVme1BhcnRpY3VsYXIKUHJvZ3JhbXMsICwgUGFydGlj dWxhciBQcm9ncmFtIENoZWNrcywgYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9LgoKQGl0 ZW0gQUNfUFJPR19PQkpDWFgKVGhpcyBpcyByZXF1aXJlZCBpZiBhbnkgT2JqZWN0aXZlIEMrKyBz b3VyY2UgaXMgaW5jbHVkZWQuICBAeHJlZntQYXJ0aWN1bGFyClByb2dyYW1zLCAsIFBhcnRpY3Vs YXIgUHJvZ3JhbSBDaGVja3MsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfS4KCkBpdGVt IEFDX1BST0dfRjc3ClRoaXMgaXMgcmVxdWlyZWQgaWYgYW55IEZvcnRyYW4gNzcgc291cmNlIGlz IGluY2x1ZGVkLiAgQHhyZWZ7UGFydGljdWxhcgpQcm9ncmFtcywgLCBQYXJ0aWN1bGFyIFByb2dy YW0gQ2hlY2tzLCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0uCgpAaXRlbSBBQ19GNzdf TElCUkFSWV9MREZMQUdTClRoaXMgaXMgcmVxdWlyZWQgZm9yIHByb2dyYW1zIGFuZCBzaGFyZWQg bGlicmFyaWVzIHRoYXQgYXJlIGEgbWl4dHVyZSBvZgpsYW5ndWFnZXMgdGhhdCBpbmNsdWRlIEZv cnRyYW4gNzcgKEBweHJlZntNaXhpbmcgRm9ydHJhbiA3NyBXaXRoIEMgYW5kCkMrK30pLiAgQHhy ZWZ7TWFjcm9zLCAsIEF1dG9jb25mIG1hY3JvcyBzdXBwbGllZCB3aXRoIEF1dG9tYWtlfS4KCkBp dGVtIEFDX0ZDX1NSQ0VYVApBdXRvbWFrZSB3aWxsIGFkZCB0aGUgZmxhZ3MgY29tcHV0ZWQgYnkg QGNvZGV7QUNfRkNfU1JDRVhUfSB0byBjb21waWxhdGlvbgpvZiBmaWxlcyB3aXRoIHRoZSByZXNw ZWN0aXZlIHNvdXJjZSBleHRlbnNpb24gKEBweHJlZntGb3J0cmFuIENvbXBpbGVyLCAsCkZvcnRy YW4gQ29tcGlsZXIgQ2hhcmFjdGVyaXN0aWNzLCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVh bH0pLgoKQGl0ZW0gQUNfUFJPR19GQwpUaGlzIGlzIHJlcXVpcmVkIGlmIGFueSBGb3J0cmFuIDkw Lzk1IHNvdXJjZSBpcyBpbmNsdWRlZC4gIFRoaXMgbWFjcm8gaXMKZGlzdHJpYnV0ZWQgd2l0aCBB dXRvY29uZiB2ZXJzaW9uIDIuNTggYW5kIGxhdGVyLiAgQHhyZWZ7UGFydGljdWxhcgpQcm9ncmFt cywgLCBQYXJ0aWN1bGFyIFByb2dyYW0gQ2hlY2tzLCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1h bnVhbH0uCgpAaXRlbSBBQ19QUk9HX0xJQlRPT0wKQGl0ZW14IExUX0lOSVQKQXV0b21ha2Ugd2ls bCB0dXJuIG9uIHByb2Nlc3NpbmcgZm9yIEBjb21tYW5ke2xpYnRvb2x9IChAcHhyZWZ7VG9wLCAs CkludHJvZHVjdGlvbiwgbGlidG9vbCwgVGhlIExpYnRvb2wgTWFudWFsfSkuCgpAaXRlbSBBQ19Q Uk9HX1lBQ0MKQHZpbmRleCBZQUNDCklmIGEgWWFjYyBzb3VyY2UgZmlsZSBpcyBzZWVuLCB0aGVu IHlvdSBtdXN0IGVpdGhlciB1c2UgdGhpcyBtYWNybyBvcgpkZWZpbmUgdGhlIHZhcmlhYmxlIEBj b2Rle1lBQ0N9IGluIEBmaWxle2NvbmZpZ3VyZS5hY30uICBUaGUgZm9ybWVyIGlzCnByZWZlcnJl ZCAoQHB4cmVme1BhcnRpY3VsYXIgUHJvZ3JhbXMsICwgUGFydGljdWxhciBQcm9ncmFtIENoZWNr cywKYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9KS4KCkBpdGVtIEFDX1BST0dfTEVYCklm IGEgTGV4IHNvdXJjZSBmaWxlIGlzIHNlZW4sIHRoZW4gdGhpcyBtYWNybyBtdXN0IGJlIHVzZWQu CkB4cmVme1BhcnRpY3VsYXIgUHJvZ3JhbXMsICwgUGFydGljdWxhciBQcm9ncmFtIENoZWNrcywg YXV0b2NvbmYsIFRoZQpBdXRvY29uZiBNYW51YWx9LgoKQGl0ZW0gQUNfUkVRVUlSRV9BVVhfRklM RQpGb3IgZWFjaCBAY29kZXtBQ19SRVFVSVJFX0FVWF9GSUxFKFtAdmFye2ZpbGV9XSl9LApAY29t bWFuZHthdXRvbWFrZX0gd2lsbCBlbnN1cmUgdGhhdCBAZmlsZXtAdmFye2ZpbGV9fSBleGlzdHMg aW4gdGhlCmF1eCBkaXJlY3RvcnksIGFuZCB3aWxsIGNvbXBsYWluIG90aGVyd2lzZS4gIEl0Cndp bGwgYWxzbyBhdXRvbWF0aWNhbGx5IGRpc3RyaWJ1dGUgdGhlIGZpbGUuICBUaGlzIG1hY3JvIHNo b3VsZCBiZQp1c2VkIGJ5IHRoaXJkLXBhcnR5IEF1dG9jb25mIG1hY3JvcyB0aGF0IHJlcXVpcmUg c29tZSBzdXBwb3J0aW5nCmZpbGVzIGluIHRoZSBhdXggZGlyZWN0b3J5IHNwZWNpZmllZCB3aXRo IEBjb2Rle0FDX0NPTkZJR19BVVhfRElSfQphYm92ZS4gIEB4cmVme0lucHV0LCAsIEZpbmRpbmcg QGNvbW1hbmR7Y29uZmlndXJlfSBJbnB1dCwgYXV0b2NvbmYsClRoZSBBdXRvY29uZiBNYW51YWx9 LgoKQGl0ZW0gQUNfU1VCU1QKVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGF1dG9tYXRpY2FsbHkgZGVm aW5lZCBhcyBhIHZhcmlhYmxlIGluIGVhY2gKZ2VuZXJhdGVkIEBmaWxle01ha2VmaWxlLmlufSwg dW5sZXNzIEBjb2Rle0FNX1NVQlNUX05PVE1BS0V9IGlzIGFsc28KdXNlZCBmb3IgdGhpcyB2YXJp YWJsZS4gIEB4cmVme1NldHRpbmcgT3V0cHV0IFZhcmlhYmxlcywgLCBTZXR0aW5nCk91dHB1dCBW YXJpYWJsZXMsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfS4KCkZvciBldmVyeSBzdWJz dGl0dXRlZCB2YXJpYWJsZSBAdmFye3Zhcn0sIEBjb21tYW5ke2F1dG9tYWtlfSB3aWxsIGFkZAph IGxpbmUgQGNvZGV7QHZhcnt2YXJ9ID0gQHZhcnt2YWx1ZX19IHRvIGVhY2ggQGZpbGV7TWFrZWZp bGUuaW59IGZpbGUuCk1hbnkgQXV0b2NvbmYgbWFjcm9zIGludm9rZSBAY29kZXtBQ19TVUJTVH0g dG8gc2V0IG91dHB1dCB2YXJpYWJsZXMKdGhpcyB3YXksIGUuZy4sIEBjb2Rle0FDX1BBVEhfWFRS QX0gZGVmaW5lcyBAY29kZXtYX0NGTEFHU30gYW5kCkBjb2Rle1hfTElCU30uICBUaHVzLCB5b3Ug Y2FuIGFjY2VzcyB0aGVzZSB2YXJpYWJsZXMgYXMKQGNvZGV7JChYX0NGTEFHUyl9IGFuZCBAY29k ZXskKFhfTElCUyl9IGluIGFueSBAZmlsZXtNYWtlZmlsZS5hbX0KaWYgQGNvZGV7QUNfUEFUSF9Y VFJBfSBpcyBjYWxsZWQuCgpAaXRlbSBBTV9DT05ESVRJT05BTApUaGlzIGludHJvZHVjZXMgYW4g QXV0b21ha2UgY29uZGl0aW9uYWwgKEBweHJlZntDb25kaXRpb25hbHN9KS4KCkBpdGVtIEFNX0NP TkRfSUYKVGhpcyBtYWNybyBhbGxvd3MgQGNvZGV7YXV0b21ha2V9IHRvIGRldGVjdCBzdWJzZXF1 ZW50IGFjY2VzcyB3aXRoaW4KQGZpbGV7Y29uZmlndXJlLmFjfSB0byBhIGNvbmRpdGlvbmFsIHBy ZXZpb3VzbHkgaW50cm9kdWNlZCB3aXRoCkBjb2Rle0FNX0NPTkRJVElPTkFMfSwgdGh1cyBlbmFi bGluZyBjb25kaXRpb25hbCBAY29kZXtBQ19DT05GSUdfRklMRVN9CihAcHhyZWZ7VXNhZ2Ugb2Yg Q29uZGl0aW9uYWxzfSkuCgpAaXRlbSBBTV9HTlVfR0VUVEVYVApUaGlzIG1hY3JvIGlzIHJlcXVp cmVkIGZvciBwYWNrYWdlcyB0aGF0IHVzZSBHTlUgZ2V0dGV4dAooQHB4cmVme2dldHRleHR9KS4g IEl0IGlzIGRpc3RyaWJ1dGVkIHdpdGggZ2V0dGV4dC4gIElmIEF1dG9tYWtlIHNlZXMKdGhpcyBt YWNybyBpdCBlbnN1cmVzIHRoYXQgdGhlIHBhY2thZ2UgbWVldHMgc29tZSBvZiBnZXR0ZXh0J3MK cmVxdWlyZW1lbnRzLgoKQGl0ZW0gQU1fR05VX0dFVFRFWFRfSU5UTF9TVUJESVIKVGhpcyBtYWNy byBzcGVjaWZpZXMgdGhhdCB0aGUgQGZpbGV7aW50bC99IHN1YmRpcmVjdG9yeSBpcyB0byBiZSBi dWlsdCwKZXZlbiBpZiB0aGUgQGNvZGV7QU1fR05VX0dFVFRFWFR9IG1hY3JvIHdhcyBpbnZva2Vk IHdpdGggYSBmaXJzdCBhcmd1bWVudApvZiBAc2FtcHtleHRlcm5hbH0uCgpAaXRlbSBBTV9NQUlO VEFJTkVSX01PREUoQG92YXJ7ZGVmYXVsdC1tb2RlfSkKQG9waW5kZXggLS1lbmFibGUtbWFpbnRh aW5lci1tb2RlCkBvcGluZGV4IC0tZGlzYWJsZS1tYWludGFpbmVyLW1vZGUKVGhpcyBtYWNybyBh ZGRzIGFuIEBvcHRpb257LS1lbmFibGUtbWFpbnRhaW5lci1tb2RlfSBvcHRpb24gdG8KQGNvbW1h bmR7Y29uZmlndXJlfS4gIElmIHRoaXMgaXMgdXNlZCwgQGNvbW1hbmR7YXV0b21ha2V9IHdpbGwg Y2F1c2UKYGBtYWludGFpbmVyLW9ubHknJyBydWxlcyB0byBiZSB0dXJuZWQgb2ZmIGJ5IGRlZmF1 bHQgaW4gdGhlCmdlbmVyYXRlZCBAZmlsZXtNYWtlZmlsZS5pbn1zLCB1bmxlc3MgQHZhcntkZWZh dWx0LW1vZGV9IGlzCkBzYW1we2VuYWJsZX0uICBUaGlzIG1hY3JvIGRlZmluZXMgdGhlIEBjb2Rl e01BSU5UQUlORVJfTU9ERX0KY29uZGl0aW9uYWwsIHdoaWNoIHlvdSBjYW4gdXNlIGluIHlvdXIg b3duIEBmaWxle01ha2VmaWxlLmFtfS4KQHhyZWZ7bWFpbnRhaW5lci1tb2RlfS4KCkBpdGVtIEFN X1NVQlNUX05PVE1BS0UoQHZhcnt2YXJ9KQpQcmV2ZW50IEF1dG9tYWtlIGZyb20gZGVmaW5pbmcg YSB2YXJpYWJsZSBAdmFye3Zhcn0sIGV2ZW4gaWYgaXQgaXMKc3Vic3RpdHV0ZWQgYnkgQGNvbW1h bmR7Y29uZmlnLnN0YXR1c30uICBOb3JtYWxseSwgQXV0b21ha2UgZGVmaW5lcyBhCkBjb21tYW5k e21ha2V9IHZhcmlhYmxlIGZvciBlYWNoIEBjb21tYW5ke2NvbmZpZ3VyZX0gc3Vic3RpdHV0aW9u LAppLmUuLCBmb3IgZWFjaCBAY29kZXtBQ19TVUJTVChbQHZhcnt2YXJ9XSl9LiAgVGhpcyBtYWNy byBwcmV2ZW50cyB0aGF0CmRlZmluaXRpb24gZnJvbSBBdXRvbWFrZS4gIElmIEBjb2Rle0FDX1NV QlNUfSBoYXMgbm90IGJlZW4gY2FsbGVkCmZvciB0aGlzIHZhcmlhYmxlLCB0aGVuIEBjb2Rle0FN X1NVQlNUX05PVE1BS0V9IGhhcyBubyBlZmZlY3RzLgpQcmV2ZW50aW5nIHZhcmlhYmxlIGRlZmlu aXRpb25zIG1heSBiZSB1c2VmdWwgZm9yIHN1YnN0aXR1dGlvbiBvZgptdWx0aS1saW5lIHZhbHVl cywgd2hlcmUgQGNvZGV7QHZhcnt2YXJ9ID0gQEBAdmFye3ZhbHVlfUBAfSBtaWdodCB5aWVsZAp1 bmludGVuZGVkIHJlc3VsdHMuCgpAaXRlbSBtNF9pbmNsdWRlCkZpbGVzIGluY2x1ZGVkIGJ5IEBm aWxle2NvbmZpZ3VyZS5hY30gdXNpbmcgdGhpcyBtYWNybyB3aWxsIGJlCmRldGVjdGVkIGJ5IEF1 dG9tYWtlIGFuZCBhdXRvbWF0aWNhbGx5IGRpc3RyaWJ1dGVkLiAgVGhleSB3aWxsIGFsc28KYXBw ZWFyIGFzIGRlcGVuZGVuY2llcyBpbiBAZmlsZXtNYWtlZmlsZX0gcnVsZXMuCgpAY29kZXttNF9p bmNsdWRlfSBpcyBzZWxkb20gdXNlZCBieSBAZmlsZXtjb25maWd1cmUuYWN9IGF1dGhvcnMsIGJ1 dApjYW4gYXBwZWFyIGluIEBmaWxle2FjbG9jYWwubTR9IHdoZW4gQGNvbW1hbmR7YWNsb2NhbH0g ZGV0ZWN0cyB0aGF0CnNvbWUgcmVxdWlyZWQgbWFjcm9zIGNvbWUgZnJvbSBmaWxlcyBsb2NhbCB0 byB5b3VyIHBhY2thZ2UgKGFzIG9wcG9zZWQgdG8KbWFjcm9zIGluc3RhbGxlZCBpbiBhIHN5c3Rl bS13aWRlIGRpcmVjdG9yeTsgQHB4cmVme2FjbG9jYWwgSW52b2NhdGlvbn0pLgoKQGVuZCBmdGFi bGUKCkBub2RlIGFjbG9jYWwgSW52b2NhdGlvbgpAc2VjdGlvbiBBdXRvLWdlbmVyYXRpbmcgYWNs b2NhbC5tNDogSW52b2tpbmcgQGNvbW1hbmR7YWNsb2NhbH0KQGMgVGhpcyBub2RlIHVzZWQgdG8g YmUgbmFtZWQgIkludm9raW5nIGFjbG9jYWwiLiAgVGhpcyBAYW5jaG9yCkBjIGFsbG93cyBvbGQg bGlua3MgdG8gc3RpbGwgd29yay4KQGFuY2hvcntJbnZva2luZyBhY2xvY2FsfQoKQGNpbmRleCBJ bnZvY2F0aW9uIG9mIEBjb21tYW5ke2FjbG9jYWx9CkBjaW5kZXggQGNvbW1hbmR7YWNsb2NhbH0s IEludm9jYXRpb24KQGNpbmRleCBJbnZva2luZyBAY29tbWFuZHthY2xvY2FsfQpAY2luZGV4IEBj b21tYW5ke2FjbG9jYWx9LCBJbnZva2luZwoKQXV0b21ha2UgaW5jbHVkZXMgYSBudW1iZXIgb2Yg QXV0b2NvbmYgbWFjcm9zIHRoYXQgY2FuIGJlIHVzZWQgaW4geW91cgpwYWNrYWdlIChAcHhyZWZ7 TWFjcm9zfSk7IHNvbWUgb2YgdGhlbSBhcmUgcmVxdWlyZWQgYnkgQXV0b21ha2UgaW4KY2VydGFp biBzaXR1YXRpb25zLiAgVGhlc2UgbWFjcm9zIG11c3QgYmUgZGVmaW5lZCBpbiB5b3VyCkBmaWxl e2FjbG9jYWwubTR9OyBvdGhlcndpc2UgdGhleSB3aWxsIG5vdCBiZSBzZWVuIGJ5CkBjb21tYW5k e2F1dG9jb25mfS4KClRoZSBAY29tbWFuZHthY2xvY2FsfSBwcm9ncmFtIHdpbGwgYXV0b21hdGlj YWxseSBnZW5lcmF0ZQpAZmlsZXthY2xvY2FsLm00fSBmaWxlcyBiYXNlZCBvbiB0aGUgY29udGVu dHMgb2YgQGZpbGV7Y29uZmlndXJlLmFjfS4KVGhpcyBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5 IHRvIGdldCBBdXRvbWFrZS1wcm92aWRlZCBtYWNyb3MsCndpdGhvdXQgaGF2aW5nIHRvIHNlYXJj aCBhcm91bmQuICBUaGUgQGNvbW1hbmR7YWNsb2NhbH0gbWVjaGFuaXNtCmFsbG93cyBvdGhlciBw YWNrYWdlcyB0byBzdXBwbHkgdGhlaXIgb3duIG1hY3JvcyAoQHB4cmVme0V4dGVuZGluZwphY2xv Y2FsfSkuICBZb3UgY2FuIGFsc28gdXNlIGl0IHRvIG1haW50YWluIHlvdXIgb3duIHNldCBvZiBj dXN0b20KbWFjcm9zIChAcHhyZWZ7TG9jYWwgTWFjcm9zfSkuCgpBdCBzdGFydHVwLCBAY29tbWFu ZHthY2xvY2FsfSBzY2FucyBhbGwgdGhlIEBmaWxley5tNH0gZmlsZXMgaXQgY2FuCmZpbmQsIGxv b2tpbmcgZm9yIG1hY3JvIGRlZmluaXRpb25zIChAcHhyZWZ7TWFjcm8gU2VhcmNoIFBhdGh9KS4g IFRoZW4KaXQgc2NhbnMgQGZpbGV7Y29uZmlndXJlLmFjfS4gIEFueSBtZW50aW9uIG9mIG9uZSBv ZiB0aGUgbWFjcm9zIGZvdW5kCmluIHRoZSBmaXJzdCBzdGVwIGNhdXNlcyB0aGF0IG1hY3JvLCBh bmQgYW55IG1hY3JvcyBpdCBpbiB0dXJuCnJlcXVpcmVzLCB0byBiZSBwdXQgaW50byBAZmlsZXth Y2xvY2FsLm00fS4KCkBlbXBoe1B1dHRpbmd9IHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIG1h Y3JvIGRlZmluaXRpb24gaW50bwpAZmlsZXthY2xvY2FsLm00fSBpcyB1c3VhbGx5IGRvbmUgYnkg Y29weWluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhpcwpmaWxlLCBpbmNsdWRpbmcgdW51c2VkIG1h Y3JvIGRlZmluaXRpb25zIGFzIHdlbGwgYXMgYm90aCBAc2FtcHsjfSBhbmQKQHNhbXB7ZG5sfSBj b21tZW50cy4gIElmIHlvdSB3YW50IHRvIG1ha2UgYSBjb21tZW50IHRoYXQgd2lsbCBiZQpjb21w bGV0ZWx5IGlnbm9yZWQgYnkgQGNvbW1hbmR7YWNsb2NhbH0sIHVzZSBAc2FtcHsjI30gYXMgdGhl IGNvbW1lbnQKbGVhZGVyLgoKV2hlbiBhIGZpbGUgc2VsZWN0ZWQgYnkgQGNvbW1hbmR7YWNsb2Nh bH0gaXMgbG9jYXRlZCBpbiBhIHN1YmRpcmVjdG9yeQpzcGVjaWZpZWQgYXMgYSByZWxhdGl2ZSBz ZWFyY2ggcGF0aCB3aXRoIEBjb21tYW5ke2FjbG9jYWx9J3MgQG9wdGlvbnstSX0KYXJndW1lbnQs IEBjb21tYW5ke2FjbG9jYWx9IGFzc3VtZXMgdGhlIGZpbGUgYmVsb25ncyB0byB0aGUgcGFja2Fn ZQphbmQgdXNlcyBAY29kZXttNF9pbmNsdWRlfSBpbnN0ZWFkIG9mIGNvcHlpbmcgaXQgaW50bwpA ZmlsZXthY2xvY2FsLm00fS4gIFRoaXMgbWFrZXMgdGhlIHBhY2thZ2Ugc21hbGxlciwgZWFzZXMg ZGVwZW5kZW5jeQp0cmFja2luZywgYW5kIGNhdXNlcyB0aGUgZmlsZSB0byBiZSBkaXN0cmlidXRl ZCBhdXRvbWF0aWNhbGx5LgooQHhyZWZ7TG9jYWwgTWFjcm9zfSwgZm9yIGFuIGV4YW1wbGUuKSAg QW55IG1hY3JvIHRoYXQgaXMgZm91bmQgaW4gYQpzeXN0ZW0td2lkZSBkaXJlY3Rvcnkgb3Igdmlh IGFuIGFic29sdXRlIHNlYXJjaCBwYXRoIHdpbGwgYmUgY29waWVkLgpTbyB1c2UgQHNhbXB7LUkg YHB3ZGAvcmVsZGlyfSBpbnN0ZWFkIG9mIEBzYW1wey1JIHJlbGRpcn0gd2hlbmV2ZXIKYSByZWxh dGl2ZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gYmUgb3V0c2lkZSB0aGUgcGFj a2FnZS4KClRoZSBjb250ZW50cyBvZiBAZmlsZXthY2luY2x1ZGUubTR9LCBpZiB0aGlzIGZpbGUg ZXhpc3RzLCBhcmUgYWxzbwphdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGluIEBmaWxle2FjbG9jYWwu bTR9LiAgV2UgbW9zdGx5IHJlY29tbWVuZCBhZ2FpbnN0CnVzaW5nIEBmaWxle2FjaW5jbHVkZS5t NH0gaW4gbmV3IHBhY2thZ2VzIChAcHhyZWZ7TG9jYWwgTWFjcm9zfSkuCgpAdmluZGV4IEFVVE9N NFRFCkBjaW5kZXggYXV0b200dGUKV2hpbGUgY29tcHV0aW5nIEBmaWxle2FjbG9jYWwubTR9LCBA Y29tbWFuZHthY2xvY2FsfSBydW5zCkBjb21tYW5ke2F1dG9tNHRlfSAoQHB4cmVme1VzaW5nIGF1 dG9tNHRlLCAsIFVzaW5nIEBjb21tYW5ke0F1dG9tNHRlfSwKYXV0b2NvbmYsIFRoZSBBdXRvY29u ZiBNYW51YWx9KSBpbiBvcmRlciB0byB0cmFjZSB0aGUgbWFjcm9zIHRoYXQgYXJlCnVzZWQsIGFu ZCBvbWl0IGZyb20gQGZpbGV7YWNsb2NhbC5tNH0gYWxsIG1hY3JvcyB0aGF0IGFyZSBtZW50aW9u ZWQKYnV0IG90aGVyd2lzZSB1bmV4cGFuZGVkICh0aGlzIGNhbiBoYXBwZW4gd2hlbiBhIG1hY3Jv IGlzIGNhbGxlZApjb25kaXRpb25hbGx5KS4gIEBjb21tYW5ke2F1dG9tNHRlfSBpcyBleHBlY3Rl ZCB0byBiZSBpbiB0aGUKQGVudntQQVRIfSwganVzdCBsaWtlIEBjb21tYW5ke2F1dG9jb25mfS4g IEl0cyBsb2NhdGlvbiBjYW4gYmUKb3ZlcnJpZGRlbiB1c2luZyB0aGUgQGVudntBVVRPTTRURX0g ZW52aXJvbm1lbnQgdmFyaWFibGUuCgpJbiBwcmFjdGljZSBpdCBpcyB1c3VhbGx5IHNpbXBsZXIg dG8gcnVuIEBjb21tYW5ke2F1dG9yZWNvbmZ9IGluc3RlYWQKb2Ygd29ycnlpbmcgYWJvdXQgdGhl IHJlcXVpcmVkIG9yZGVyIG9mIHRoZSB2YXJpb3VzIHRvb2xzCihAcHhyZWZ7YXV0b3JlY29uZiBJ bnZvY2F0aW9uLCAsIFVzaW5nIEBjb21tYW5ke2F1dG9yZWNvbmZ9LCBhdXRvY29uZiwKVGhlIEF1 dG9jb25mIE1hbnVhbH0pLgoKVGhpcyBzZWN0aW9uIGV4cGxhaW5zIHRoZSBkZXRhaWxzIG9mIEBj b21tYW5ke2FjbG9jYWx9LgoKQG1lbnUKKiBhY2xvY2FsIE9wdGlvbnM6OiAgICAgICAgICAgICBP cHRpb25zIHN1cHBvcnRlZCBieSBhY2xvY2FsCiogTWFjcm8gU2VhcmNoIFBhdGg6OiAgICAgICAg ICAgSG93IGFjbG9jYWwgZmluZHMgLm00IGZpbGVzCiogRXh0ZW5kaW5nIGFjbG9jYWw6OiAgICAg ICAgICAgV3JpdGluZyB5b3VyIG93biBhY2xvY2FsIG1hY3JvcwoqIExvY2FsIE1hY3Jvczo6ICAg ICAgICAgICAgICAgIE9yZ2FuaXppbmcgbG9jYWwgbWFjcm9zCiogU2VyaWFsczo6ICAgICAgICAg ICAgICAgICAgICAgU2VyaWFsIGxpbmVzIGluIEF1dG9jb25mIG1hY3JvcwoqIEZ1dHVyZSBvZiBh Y2xvY2FsOjogICAgICAgICAgIGFjbG9jYWwncyBzY2hlZHVsZWQgZGVhdGgKQGVuZCBtZW51CgpA bm9kZSBhY2xvY2FsIE9wdGlvbnMKQHN1YnNlY3Rpb24gYWNsb2NhbCBPcHRpb25zCgpAY2luZGV4 IEBjb21tYW5ke2FjbG9jYWx9LCBPcHRpb25zCkBjaW5kZXggT3B0aW9ucywgQGNvbW1hbmR7YWNs b2NhbH0KCkBjb21tYW5ke2FjbG9jYWx9IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgoK QHRhYmxlIEBjb2RlCkBpdGVtIC0tYXV0b21ha2UtYWNkaXI9QHZhcntkaXJ9CkBvcGluZGV4IC0t YXV0b21ha2UtYWNkaXIKTG9vayBmb3IgQXV0b21ha2UtcHJvdmlkZWQgbWFjcm8gZmlsZXMgaW4g QHZhcntkaXJ9IGluc3RlYWQgb2YKaW4gdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuICBUaGlz IGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcuCgpAdmluZGV4IEFDTE9DQUxfQVVUT01B S0VfRElSCklmIHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB2YWx1ZSBvZiB0aGUg ZW52aXJvbm1lbnQgdmFyaWFibGUKQGVudntBQ0xPQ0FMX0FVVE9NQUtFX0RJUn0sIGlmIHNldCwg aXMgdXNlZCB0byBzZXQgdGhlIGRpcmVjdG9yeQpjb250YWluaW5nIEF1dG9tYWtlLXByb3ZpZGVk IG1hY3JvIGZpbGVzLiAgT3RoZXJ3aXNlIGFuIGluc3RhbGwtdGltZQpkZWZhdWx0IGlzIHVzZWQu CgpAaXRlbSAtLWFjbG9jYWwtcGF0aD1AdmFye3BhdGh9CkBvcGluZGV4IC0tYWNsb2NhbC1wYXRo Ckxvb2sgZm9yIGxvY2FsIHRoaXJkLXBhcnR5IG1hY3JvIGZpbGVzIChhbmQgdGhlIHNwZWNpYWwg QGZpbGV7ZGlybGlzdH0KZmlsZSwgQHB4cmVme2Rpcmxpc3R9KSBhbG9uZyBAdmFye3BhdGh9IChh IGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mCmRpcmVjdG9yaWVzKSBpbnN0ZWFkIG9mIGluIHRoZSBp bnN0YWxsYXRpb24gZGlyZWN0b3J5LiAgKFRoaXMgY2FuIGJlCnVzZWQgZm9yIGJ1aWxkaW5nIGFn YWluc3QgYWx0ZXJuYXRpdmUgc3lzdGVtIHJvb3RzIChgYHN5c3Jvb3RzJycpIGZvcgpmaW5kaW5n IGhlYWRlcnMgYW5kIGxpYnJhcmllcy4pCgpAdmluZGV4IEFDTE9DQUxfUEFUSApJZiB0aGlzIG9w dGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlh YmxlCkBlbnZ7QUNMT0NBTF9QQVRIfSwgaWYgc2V0LCBpcyB1c2VkIHRvIHNldCB0aGUgc2VhcmNo IHBhdGggY29udGFpbmluZwpsb2NhbCB0aGlyZC1wYXJ0eSBtYWNybyBmaWxlcy4gT3RoZXJ3aXNl IGFuIGluc3RhbGwtdGltZSBkZWZhdWx0IGlzCnVzZWQuCgpAaXRlbSAtLXN5c3RlbS1hY2Rpcj1A dmFye2Rpcn0KQG9waW5kZXggLS1zeXN0ZW0tYWNkaXIKTG9vayBmb3IgdGhlIHN5c3RlbS13aWRl IHRoaXJkLXBhcnR5IG1hY3JvIGZpbGVzIChhbmQgdGhlIHNwZWNpYWwKQGZpbGV7ZGlybGlzdH0g ZmlsZSkgaW4gQHZhcntkaXJ9IGluc3RlYWQgb2YgaW4gdGhlIGluc3RhbGxhdGlvbgpkaXJlY3Rv cnkuICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcuCgpAaXRlbSAtLWRpZmZb PUB2YXJ7Y29tbWFuZH1dCkBvcGluZGV4IC0tZGlmZgpSdW4gQHZhcntjb21tYW5kfSBvbiB0aGUg TTQgZmlsZSB0aGF0IHdvdWxkIGJlIGluc3RhbGxlZCBvciBvdmVyd3JpdHRlbgpieSBAb3B0aW9u ey0taW5zdGFsbH0uICBUaGUgZGVmYXVsdCBAdmFye2NvbW1hbmR9IGlzIEBzYW1we2RpZmYgLXV9 LgpUaGlzIG9wdGlvbiBpbXBsaWVzIEBvcHRpb257LS1pbnN0YWxsfSBhbmQgQG9wdGlvbnstLWRy eS1ydW59LgoKQGl0ZW0gLS1kcnktcnVuCkBvcGluZGV4IC0tZHJ5LXJ1bgpEbyBub3Qgb3Zlcndy aXRlIChvciBjcmVhdGUpIEBmaWxle2FjbG9jYWwubTR9IGFuZCBNNCBmaWxlcyBpbnN0YWxsZWQK YnkgQG9wdGlvbnstLWluc3RhbGx9LgoKQGl0ZW0gLS1oZWxwCkBvcGluZGV4IC0taGVscApQcmlu dCBhIHN1bW1hcnkgb2YgdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIGFuZCBleGl0IHN1Y2Nlc3Nm dWxseS4KCkBpdGVtIC1JIEB2YXJ7ZGlyfQpAb3BpbmRleCAtSQpBZGQgdGhlIGRpcmVjdG9yeSBA dmFye2Rpcn0gdG8gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgc2VhcmNoZWQgZm9yCkBmaWxley5t NH0gZmlsZXMuCgpAaXRlbSAtLWluc3RhbGwKQG9waW5kZXggLS1pbnN0YWxsCkluc3RhbGwgc3lz dGVtLXdpZGUgdGhpcmQtcGFydHkgbWFjcm9zIGludG8gdGhlIGZpcnN0IGRpcmVjdG9yeQpzcGVj aWZpZWQgd2l0aCBAc2FtcHstSSBAdmFye2Rpcn19IGluc3RlYWQgb2YgY29weWluZyB0aGVtIGlu dG8gdGhlCm91dHB1dCBmaWxlLgpAYyBLZWVwIGluIHN5bmMgd2l0aCBhY2xvY2FsLWluc3RhbGwt YWJzZGlyLnNoClRoaXMgaXMgYWxzbyBkb25lIGlmIEB2YXJ7ZGlyfSBpcyBhbiBhYnNvbHV0ZSBw YXRoLgoKQGNpbmRleCBzZXJpYWwgbnVtYmVyIGFuZCBAb3B0aW9uey0taW5zdGFsbH0KV2hlbiB0 aGlzIG9wdGlvbiBpcyB1c2VkLCBhbmQgb25seSB3aGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQsCkBj b21tYW5ke2FjbG9jYWx9IHdpbGwgYWxzbyBob25vciBAc2FtcHsjc2VyaWFsIEB2YXJ7bnVtYmVy fX0gbGluZXMKdGhhdCBhcHBlYXIgaW4gbWFjcm9zOiBhbiBNNCBmaWxlIGlzIGlnbm9yZWQgaWYg dGhlcmUgZXhpc3RzIGFub3RoZXIKTTQgZmlsZSB3aXRoIHRoZSBzYW1lIGJhc2VuYW1lIGFuZCBh IGdyZWF0ZXIgc2VyaWFsIG51bWJlciBpbiB0aGUKc2VhcmNoIHBhdGggKEBweHJlZntTZXJpYWxz fSkuCgpAaXRlbSAtLWZvcmNlCkBvcGluZGV4IC0tZm9yY2UKQWx3YXlzIG92ZXJ3cml0ZSB0aGUg b3V0cHV0IGZpbGUuICBUaGUgZGVmYXVsdCBpcyB0byBvdmVyd3JpdGUgdGhlCm91dHB1dCBmaWxl IG9ubHkgd2hlbiBuZWVkZWQsIGkuZS4sIHdoZW4gaXRzIGNvbnRlbnRzIGNoYW5nZSBvciBpZiBv bmUKb2YgaXRzIGRlcGVuZGVuY2llcyBpcyB5b3VuZ2VyLgoKVGhpcyBvcHRpb24gZm9yY2VzIHRo ZSB1cGRhdGUgb2YgQGZpbGV7YWNsb2NhbC5tNH0gKG9yIHRoZSBmaWxlCnNwZWNpZmllZCB3aXRo IEBmaWxley0tb3V0cHV0fSBiZWxvdykgYW5kIG9ubHkgdGhpcyBmaWxlOyBpdCBoYXMgbm8KaW5m bHVlbmNlIG9uIGZpbGVzIHRoYXQgbWF5IG5lZWQgdG8gYmUgaW5zdGFsbGVkIGJ5CkBvcHRpb257 LS1pbnN0YWxsfS4KCkBpdGVtIC0tb3V0cHV0PUB2YXJ7ZmlsZX0KQG9waW5kZXggLS1vdXRwdXQK Q2F1c2UgdGhlIG91dHB1dCB0byBiZSBwdXQgaW50byBAdmFye2ZpbGV9IGluc3RlYWQgb2YgQGZp bGV7YWNsb2NhbC5tNH0uCgpAaXRlbSAtLXByaW50LWFjLWRpcgpAb3BpbmRleCAtLXByaW50LWFj LWRpcgpQcmludCB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgQGNvbW1hbmR7YWNsb2Nh bH0gd2lsbCBzZWFyY2ggdG8KZmluZCB0aGlyZC1wYXJ0eSBAZmlsZXsubTR9IGZpbGVzLiAgV2hl biB0aGlzIG9wdGlvbiBpcyBnaXZlbiwgbm9ybWFsCnByb2Nlc3NpbmcgaXMgc3VwcHJlc3NlZC4g IFRoaXMgb3B0aW9uIHdhcyB1c2VkIEBlbXBoe2luIHRoZSBwYXN0fSBieQp0aGlyZC1wYXJ0eSBw YWNrYWdlcyB0byBkZXRlcm1pbmUgd2hlcmUgdG8gaW5zdGFsbCBAZmlsZXsubTR9IG1hY3JvCmZp bGVzLCBidXQgQGVtcGh7dGhpcyB1c2FnZSBpcyB0b2RheSBkaXNjb3VyYWdlZH0sIHNpbmNlIGl0 IGNhdXNlcwpAc2FtcHskKHByZWZpeCl9IG5vdCB0byBiZSB0aG9yb3VnaGx5IGhvbm9yZWQgKHZp b2xhdGluZyB0aGUgR05VCkNvZGluZyBTdGFuZGFyZHMpLiBBbmQgc2ltaWxhciBzZW1hbnRpY3Mg Y2FuIGJlIGJldHRlciBvYnRhaW5lZCB3aXRoCnRoZSBAZW52e0FDTE9DQUxfUEFUSH0gZW52aXJv bm1lbnQgdmFyaWFibGUgKEBweHJlZntFeHRlbmRpbmcKYWNsb2NhbH0pLgoKQGl0ZW0gLS12ZXJi b3NlCkBvcGluZGV4IC0tdmVyYm9zZQpQcmludCB0aGUgbmFtZXMgb2YgZmlsZXMgZXhhbWluZWQu CgpAaXRlbSAtLXZlcnNpb24KQG9waW5kZXggLS12ZXJzaW9uClByaW50IHRoZSB2ZXJzaW9uIG51 bWJlciBvZiBBdXRvbWFrZSBhbmQgZXhpdCBzdWNjZXNzZnVsbHkuCgpAaXRlbSAtVyBDQVRFR09S WQpAaXRlbSAtLXdhcm5pbmdzPUB2YXJ7Y2F0ZWdvcnl9CkBvcGluZGV4IC1XCkBvcGluZGV4IC0t d2FybmluZ3MKT3V0cHV0IHdhcm5pbmdzIGZhbGxpbmcgaW4gQHZhcntjYXRlZ29yeX0sIG9uZSBv ZjoKQHRhYmxlIEBjb2RlCkBpdGVtIHN5bnRheApkdWJpb3VzIHN5bnRhY3RpYyBjb25zdHJ1Y3Rz LCB1bmRlcnF1b3RlZCBtYWNyb3MsIHVudXNlZCBtYWNyb3MsIGV0Yy4KQGl0ZW0gdW5zdXBwb3J0 ZWQKdW5rbm93biBtYWNyb3MuCkBpdGVtIGFsbAphbGwgdGhlIHdhcm5pbmdzOyB0aGlzIGlzIHRo ZSBkZWZhdWx0LgpAaXRlbSBub25lCnR1cm4gb2ZmIGFsbCB0aGUgd2FybmluZ3MuCkBpdGVtIG5v LUB2YXJ7Y2F0ZWdvcnl9CnR1cm4gb2ZmIHdhcm5pbmdzIGluIEB2YXJ7Y2F0ZWdvcnl9LgpAaXRl bSBlcnJvcgp0cmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMuCkBlbmQgdGFibGUKCkFsbCB3YXJuaW5n cyBhcmUgb3V0cHV0IGJ5IGRlZmF1bHQuCgpAdmluZGV4IFdBUk5JTkdTClRoZSBlbnZpcm9ubWVu dCB2YXJpYWJsZSBAZW52e1dBUk5JTkdTfSBpcyBob25vcmVkIGluIHRoZSBzYW1lCndheSBhcyBp dCBpcyBmb3IgQGNvbW1hbmR7YXV0b21ha2V9IChAcHhyZWZ7YXV0b21ha2UgSW52b2NhdGlvbn0p LgoKQGVuZCB0YWJsZQoKQG5vZGUgTWFjcm8gU2VhcmNoIFBhdGgKQHN1YnNlY3Rpb24gTWFjcm8g U2VhcmNoIFBhdGgKCkBjaW5kZXggTWFjcm8gc2VhcmNoIHBhdGgKQGNpbmRleCBAY29tbWFuZHth Y2xvY2FsfSBzZWFyY2ggcGF0aAoKQnkgZGVmYXVsdCwgQGNvbW1hbmR7YWNsb2NhbH0gc2VhcmNo ZXMgZm9yIEBmaWxley5tNH0gZmlsZXMgaW4gdGhlIGZvbGxvd2luZwpkaXJlY3RvcmllcywgaW4g dGhpcyBvcmRlcjoKCkB0YWJsZSBAY29kZQpAaXRlbSBAdmFye2FjZGlyLUFQSVZFUlNJT059ClRo aXMgaXMgd2hlcmUgdGhlIEBmaWxley5tNH0gbWFjcm9zIGRpc3RyaWJ1dGVkIHdpdGggQXV0b21h a2UgaXRzZWxmCmFyZSBzdG9yZWQuICBAdmFye0FQSVZFUlNJT059IGRlcGVuZHMgb24gdGhlIEF1 dG9tYWtlIHJlbGVhc2UgdXNlZDsKZm9yIGV4YW1wbGUsIGZvciBBdXRvbWFrZSAxLjExLngsIEB2 YXJ7QVBJVkVSU0lPTn0gPSBAY29kZXsxLjExfS4KCkBpdGVtIEB2YXJ7YWNkaXJ9ClRoaXMgZGly ZWN0b3J5IGlzIGludGVuZGVkIGZvciB0aGlyZCBwYXJ0eSBAZmlsZXsubTR9IGZpbGVzLCBhbmQg aXMKY29uZmlndXJlZCB3aGVuIEBjb21tYW5ke2F1dG9tYWtlfSBpdHNlbGYgaXMgYnVpbHQuICBJ dCBpcwpAZmlsZXtAQGRhdGFkaXJAQC9hY2xvY2FsL30sIHdoaWNoIHR5cGljYWxseQpleHBhbmRz IHRvIEBmaWxleyRAe3ByZWZpeEB9L3NoYXJlL2FjbG9jYWwvfS4gIFRvIGZpbmQgdGhlIGNvbXBp bGVkLWluCnZhbHVlIG9mIEB2YXJ7YWNkaXJ9LCB1c2UgdGhlIEBvcHRpb257LS1wcmludC1hYy1k aXJ9IG9wdGlvbgooQHB4cmVme2FjbG9jYWwgT3B0aW9uc30pLgpAZW5kIHRhYmxlCgpGb3IgZXhh bXBsZSwgc3VwcG9zZSB0aGF0IEF1dG9tYWtlIDEuMTEuMiB3YXMgY29uZmlndXJlZCB3aXRoCkBv cHRpb257LS1wcmVmaXg9QC0vdXNyL2xvY2FsfS4gIFRoZW4sIHRoZSBzZWFyY2ggcGF0aCB3b3Vs ZCBiZToKCkBlbnVtZXJhdGUKQGl0ZW0gQGZpbGV7L3Vzci9sb2NhbC9zaGFyZS9hY2xvY2FsLTEu MTEuMi99CkBpdGVtIEBmaWxley91c3IvbG9jYWwvc2hhcmUvYWNsb2NhbC99CkBlbmQgZW51bWVy YXRlCgpUaGUgcGF0aHMgZm9yIHRoZSBAdmFye2FjZGlyfSBhbmQgQHZhcnthY2Rpci1BUElWRVJT SU9OfSBkaXJlY3RvcmllcwpjYW4gYmUgY2hhbmdlZCByZXNwZWN0aXZlbHkgdGhyb3VnaCB0aGUg QGNvbW1hbmR7YWNsb2NhbH0gb3B0aW9ucwpAb3B0aW9uey0tc3lzdGVtLWFjZGlyfSBhbmQgQG9w dGlvbnstLWF1dG9tYWtlLWFjZGlyfSAoQHB4cmVme2FjbG9jYWwKT3B0aW9uc30pLiAgVGhlc2Ug b3B0aW9ucyBhcmUgbm90IG9yZGluYXJpbHkgbmVlZGVkIGJ5IGVuZC11c2VyczsKdGhleSdyZSBt YWlubHkgaW50ZW5kZWQgZm9yIHVzZSBieSB0aGUgQXV0b21ha2UgdGVzdCBzdWl0ZSwgb3IgZm9y CmRlYnVnZ2luZy4KCkFzIGFsc28gbGlzdGVkIGluIChAcHhyZWZ7YWNsb2NhbCBPcHRpb25zfSks IHNldmVyYWwgb3RoZXIgb3B0aW9ucyBjYW4KYmUgdXNlZCB0byBjaGFuZ2Ugb3IgZXh0ZW5kIHRo ZSBtYWNybyBzZWFyY2ggcGF0aC4KCkBzdWJzdWJoZWFkaW5nIE1vZGlmeWluZyB0aGUgTWFjcm8g U2VhcmNoIFBhdGg6IEBzYW1wey1JIEB2YXJ7ZGlyfX0KCkFueSBkaXJlY3RvcmllcyBzcGVjaWZp ZWQgdXNpbmcgQG9wdGlvbnstSX0gb3B0aW9ucyAoQHB4cmVme2FjbG9jYWwKT3B0aW9uc30pIGFy ZSBAZW1waHtwcmVwZW5kZWR9IHRvIHRoaXMgc2VhcmNoIGxpc3QuICBUaHVzLApAc2FtcHthY2xv Y2FsIC1JIC9mb28gLUkgL2Jhcn0gcmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nIHNlYXJjaCBwYXRo OgoKQGVudW1lcmF0ZQpAaXRlbSBAZmlsZXsvZm9vfQpAaXRlbSBAZmlsZXsvYmFyfQpAaXRlbSBA dmFye2FjZGlyfS1AdmFye0FQSVZFUlNJT059CkBpdGVtIEB2YXJ7YWNkaXJ9CkBlbmQgZW51bWVy YXRlCgpAYW5jaG9ye2Rpcmxpc3R9CkBzdWJzdWJoZWFkaW5nIE1vZGlmeWluZyB0aGUgTWFjcm8g U2VhcmNoIFBhdGg6IEBmaWxle2Rpcmxpc3R9CkBjaW5kZXggQGZpbGV7ZGlybGlzdH0KClRoZXJl IGlzIGEgdGhpcmQgbWVjaGFuaXNtIGZvciBjdXN0b21pemluZyB0aGUgc2VhcmNoIHBhdGg6IGlm IGEKQGZpbGV7ZGlybGlzdH0gZmlsZSBleGlzdHMgaW4gQHZhcnthY2Rpcn0sIHRoZW4gdGhhdCBm aWxlIGlzIGFzc3VtZWQKdG8gY29udGFpbiBhIGxpc3Qgb2YgZGlyZWN0b3J5IHBhdHRlcm5zLCBv bmUgcGVyIGxpbmUuCkBjb21tYW5ke2FjbG9jYWx9IGV4cGFuZHMgdGhlc2UgcGF0dGVybnMgdG8g ZGlyZWN0b3J5IG5hbWVzLCBhbmQgYWRkcwp0aGVtIHRvIHRoZSBzZWFyY2ggbGlzdCBAZW1waHth ZnRlcn0gYWxsIG90aGVyIGRpcmVjdG9yaWVzLgpAZmlsZXtkaXJsaXN0fSBlbnRyaWVzIG1heSB1 c2Ugc2hlbGwgd2lsZGNhcmRzIHN1Y2ggYXMgQHNhbXB7Kn0sCkBzYW1wez99LCBvciBAY29kZXtb Li4uXX0uCgpGb3IgZXhhbXBsZSwgc3VwcG9zZQpAZmlsZXtAdmFye2FjZGlyfS9kaXJsaXN0fSBj b250YWlucyB0aGUgZm9sbG93aW5nOgoKQGV4YW1wbGUKL3Rlc3QxCi90ZXN0MgovdGVzdDMqCkBl bmQgZXhhbXBsZQoKQG5vaW5kZW50CmFuZCB0aGF0IEBjb21tYW5ke2FjbG9jYWx9IHdhcyBjYWxs ZWQgd2l0aCB0aGUgQHNhbXB7LUkgL2ZvbyAtSSAvYmFyfSBvcHRpb25zLgpUaGVuLCB0aGUgc2Vh cmNoIHBhdGggd291bGQgYmUKCkBjIEBjb2RlIGxvb2tzIGJldHRlciB0aGFuIEBmaWxlIGhlcmUK QGVudW1lcmF0ZQpAaXRlbSBAY29kZXsvZm9vfQpAaXRlbSBAY29kZXsvYmFyfQpAaXRlbSBAdmFy e2FjZGlyfS1AdmFye0FQSVZFUlNJT059CkBpdGVtIEB2YXJ7YWNkaXJ9CkBpdGVtIEBjb2Rley90 ZXN0MX0KQGl0ZW0gQGNvZGV7L3Rlc3QyfQpAaXRlbSBhbGwgZGlyZWN0b3JpZXMgd2l0aCBwYXRo IG5hbWVzIHN0YXJ0aW5nIHdpdGggQGNvZGV7L3Rlc3QzfS4KQGVuZCBlbnVtZXJhdGUKCklmIHRo ZSBAb3B0aW9uey0tc3lzdGVtLWFjZGlyPUB2YXJ7ZGlyfX0gb3B0aW9uIGlzIHVzZWQsIHRoZW4K QGNvbW1hbmR7YWNsb2NhbH0gd2lsbCBzZWFyY2ggZm9yIHRoZSBAZmlsZXtkaXJsaXN0fSBmaWxl IGluIHRoYXQKQHZhcntkaXJ9LgoKQGZpbGV7ZGlybGlzdH0gaXMgdXNlZnVsIGluIHRoZSBmb2xs b3dpbmcgc2l0dWF0aW9uOiBzdXBwb3NlIHRoYXQKQXV0b21ha2UgMS4xMS4yIGlzIGluc3RhbGxl ZCB3aXRoIEBzYW1wey0tcHJlZml4PS91c3J9IGJ5IHRoZSBzeXN0ZW0KdmVuZG9yLiAgVGh1cywg dGhlIGRlZmF1bHQgc2VhcmNoIGRpcmVjdG9yaWVzIGFyZQoKQGMgQGNvZGUgbG9va3MgYmV0dGVy IHRoYW4gQGZpbGUgaGVyZQpAZW51bWVyYXRlCkBpdGVtIEBjb2Rley91c3Ivc2hhcmUvYWNsb2Nh bC0xLjExL30KQGl0ZW0gQGNvZGV7L3Vzci9zaGFyZS9hY2xvY2FsL30KQGVuZCBlbnVtZXJhdGUK Ckhvd2V2ZXIsIHN1cHBvc2UgZnVydGhlciB0aGF0IG1hbnkgcGFja2FnZXMgaGF2ZSBiZWVuIG1h bnVhbGx5Cmluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLCB3aXRoIEBjb2RleyRwcmVmaXg9L3Vzci9s b2NhbH0sIGFzIGlzCnR5cGljYWwuICBJbiB0aGF0IGNhc2UsIG1hbnkgb2YgdGhlc2UgYGBleHRy YScnIEBmaWxley5tNH0gZmlsZXMgYXJlCmluIEBmaWxley91c3IvbG9jYWwvc2hhcmUvYWNsb2Nh bH0uICBXaXRob3V0IEBmaWxle2Rpcmxpc3R9LCB0aGUgb25seQp3YXkgdG8gZm9yY2UgQGZpbGV7 L3Vzci9iaW4vYWNsb2NhbH0gdG8gZmluZCB0aGVzZSBgYGV4dHJhJycKQGZpbGV7Lm00fSBmaWxl cyBpcyB0byBhbHdheXMgY2FsbCBAc2FtcHthY2xvY2FsIC1JCi91c3IvbG9jYWwvc2hhcmUvYWNs b2NhbH0uICBUaGlzIGlzIGluY29udmVuaWVudC4gIFdpdGgKQGZpbGV7ZGlybGlzdH0sIG9uZSBj YW4gY3JlYXRlIGEgZmlsZQpAZmlsZXsvdXNyL3NoYXJlL2FjbG9jYWwvZGlybGlzdH0gY29udGFp bmluZyB0aGUgc2luZ2xlIGxpbmUKCkBleGFtcGxlCi91c3IvbG9jYWwvc2hhcmUvYWNsb2NhbApA ZW5kIGV4YW1wbGUKCk5vdywgdGhlIGBgZGVmYXVsdCcnIHNlYXJjaCBwYXRoIG9uIHRoZSBhZmZl Y3RlZCBzeXN0ZW0gaXMKCkBjIEBjb2RlIGxvb2tzIGJldHRlciB0aGFuIEBmaWxlIGhlcmUKQGVu dW1lcmF0ZQpAaXRlbSBAY29kZXsvdXNyL3NoYXJlL2FjbG9jYWwtMS4xMS99CkBpdGVtIEBjb2Rl ey91c3Ivc2hhcmUvYWNsb2NhbC99CkBpdGVtIEBjb2Rley91c3IvbG9jYWwvc2hhcmUvYWNsb2Nh bC99CkBlbmQgZW51bWVyYXRlCgpAbm9pbmRlbnQKVGhpcyB3YXksIEBvcHRpb257LUl9IG9wdGlv bnMgY2FuIGJlIHJlc2VydmVkIGZvciBwcm9qZWN0LXNwZWNpZmljCm5lZWRzIChAZmlsZXtteS1z b3VyY2UtZGlyL200L30pLCByYXRoZXIgdGhhbiB1c2luZyB0aGVtIHRvIHdvcmsKYXJvdW5kIGxv Y2FsIHN5c3RlbS1kZXBlbmRlbnQgdG9vbCBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuCgpTaW1p bGFybHksIEBmaWxle2Rpcmxpc3R9IGNhbiBiZSBoYW5keSBpZiB5b3UgaGF2ZSBpbnN0YWxsZWQg YSBsb2NhbApjb3B5IG9mIEF1dG9tYWtlIGluIHlvdXIgYWNjb3VudCBhbmQgd2FudCBAY29tbWFu ZHthY2xvY2FsfSB0byBsb29rIGZvcgptYWNyb3MgaW5zdGFsbGVkIGF0IG90aGVyIHBsYWNlcyBv biB0aGUgc3lzdGVtLgoKQGFuY2hvcntBQ0xPQ0FMX1BBVEh9CkBzdWJzdWJoZWFkaW5nIE1vZGlm eWluZyB0aGUgTWFjcm8gU2VhcmNoIFBhdGg6IEBvcHRpb257LS1hY2xvY2FsLXBhdGh9L0BmaWxl e0FDTE9DQUxfUEFUSH0KQG9waW5kZXggQG9wdGlvbnstLWFjbG9jYWwtcGF0aH0KQGNpbmRleCBA ZW52e0FDTE9DQUxfUEFUSH0KClRoZSBmb3VydGggYW5kIGxhc3QgbWVjaGFuaXNtIHRvIGN1c3Rv bWl6ZSB0aGUgbWFjcm8gc2VhcmNoIHBhdGg6IGFueQpkaXJlY3RvcnkgaW5jbHVkZWQgaW4gdGhl IGNvbG9uLXNlcGFyYXRlZCBwYXRoIGdpdmVuIHRvIHRoZQpAb3B0aW9uey0tYWNsb2NhbC1wYXRo fSBjb21tYW5kLWxpbmUgb3B0aW9uLCBvciAoaWYgdGhlIG9wdGlvbiBpcyBub3QKc3BlY2lmaWVk KSBpbiB0aGUgQGVudntBQ0xPQ0FMX1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxlLCBpcyBhZGRl ZCB0bwp0aGUgc2VhcmNoIHBhdGguCkBjIEtlZXAgaW4gc3luYyB3aXRoIGFjbG9jYWwtcGF0aC1w cmVjZWRlbmNlLnNoClRoZXNlIGRpcmVjdG9yaWVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHN5c3Rl bSBkaXJlY3RvcmllcywgaW5jbHVkaW5nCnRob3NlIGZvdW5kIHZpYSBAZmlsZXtkaXJsaXN0fSwg d2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSB2ZXJzaW9uZWQKZGlyZWN0b3J5IEB2YXJ7YWNkaXIt QVBJVkVSU0lPTn0gKEBweHJlZntNYWNybyBTZWFyY2ggUGF0aH0pLgpIb3dldmVyLCBkaXJlY3Rv cmllcyBwYXNzZWQgdmlhIEBvcHRpb257LUl9IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIKZGly ZWN0b3JpZXMgaW4gQG9wdGlvbnstLWFjbG9jYWwtcGF0aH0vQGVudntBQ0xPQ0FMX1BBVEh9LgoK QGMgS2VlcCBpbiBzeW5jIHdpdGggYWNsb2NhbC1wYXRoLWluc3RhbGwuc2gKSWYgdGhlIEBvcHRp b257LS1pbnN0YWxsfSBvcHRpb24gaXMgdXNlZCwgYW55IEBmaWxley5tNH0gZmlsZQpjb250YWlu aW5nIGEgcmVxdWlyZWQgbWFjcm8gdGhhdCBpcyBmb3VuZCBpbiBhIGRpcmVjdG9yeSBsaXN0ZWQg aW4KQG9wdGlvbnstLWFjbG9jYWwtcGF0aH0vQGVudntBQ0xPQ0FMX1BBVEh9IHdpbGwgYmUgaW5z dGFsbGVkIGxvY2FsbHkuCkBjIEtlZXAgaW4gc3luYyB3aXRoIGFjbG9jYWwtcGF0aC1pbnN0YWxs LXNlcmlhbC5zaApJbiB0aGlzIGNhc2UsIHNlcmlhbCBudW1iZXJzIGluIEBmaWxley5tNH0gYXJl IGhvbm9yZWQgdG9vCihAcHhyZWZ7U2VyaWFsc30pLgoKQG9wdGlvbnstLWFjbG9jYWwtcGF0aH0v QGVudntBQ0xPQ0FMX1BBVEh9IGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nCmEgZ2xvYmFsIGNv cHkgb2YgQXV0b21ha2UgYW5kIHdhbnQgQGNvbW1hbmR7YWNsb2NhbH0gdG8gbG9vayBmb3IKbWFj cm9zIHNvbWV3aGVyZSB1bmRlciB5b3VyIGhvbWUgZGlyZWN0b3J5LiBUaGlzIGlzIG1vcmUgb3Ig bGVzcyB0aGUKb3Bwb3NpdGUgb2YgQGZpbGV7ZGlybGlzdH0uCgpAc3Vic3ViaGVhZGluZyBQb3Nz aWJsZSBmdXR1cmUgaW5jb21wYXRpYmlsaXR5IGluIEBjb21tYW5ke2FjbG9jYWx9CgpUaGUgb3Jk ZXIgaW4gd2hpY2ggdGhlIGRpcmVjdG9yaWVzIGluIHRoZSBtYWNybyBzZWFyY2ggcGF0aCBhcmUK Y3VycmVudGx5IGxvb2tlZCB1cCBpcyBjb25mdXNpbmcgYW5kL29yIHN1Ym9wdGltYWwgaW4gdmFy aW91cyBhc3BlY3RzLgpJbiBwYXJ0aWN1bGFyLCBkaXJlY3RvcmllcyBpbgpAb3B0aW9uey0tYWNs b2NhbC1wYXRofS9AZW52e0FDTE9DQUxfUEFUSH0gYW5kIEBmaWxle0B2YXJ7YWNkaXJ9fQptaWdo dCBlbmQgdXAgdGFraW5nIHByZWNlZGVuY2Ugb3ZlciBAZmlsZXtAdmFye2FjZGlyLUFQSVZFUlNJ T059fSwgYW5kCmRpcmVjdG9yaWVzIGluIEBmaWxle0B2YXJ7YWNkaXJ9L2Rpcmxpc3R9IG1pZ2h0 IGVuZCB1cCB0YWtpbmcKcHJlY2VkZW5jZSBvdmVyIEBmaWxle0B2YXJ7YWNkaXJ9fS4gIFRoZXJl IGFyZSBubyBkZWZpbml0ZSBwbGFucyB0bwpjaGFuZ2UgdGhlIGN1cnJlbnQgYmVoYXZpb3IsIGJ1 dCBpZiBidWcgcmVwb3J0cyBzaG93IHRoZSBuZWVkIChzbwpwbGVhc2UgcmVwb3J0IGlzc3Vlcyks IHRoZSBkZWZhdWx0IG1pZ2h0IG5lZWQgdG8gYmUgY2hhbmdlZCwgYW5kIHRoZQpjdXJyZW50IGJl aGF2aW9yIHJldGFpbmVkIGFzIGFuIG9wdGlvbi4KCkBub2RlIEV4dGVuZGluZyBhY2xvY2FsCkBz dWJzZWN0aW9uIFdyaXRpbmcgeW91ciBvd24gYWNsb2NhbCBtYWNyb3MKCkBjaW5kZXggQGNvbW1h bmR7YWNsb2NhbH0sIGV4dGVuZGluZwpAY2luZGV4IEV4dGVuZGluZyBAY29tbWFuZHthY2xvY2Fs fQoKVGhlIEBjb21tYW5ke2FjbG9jYWx9IHByb2dyYW0gZG9lc24ndCBoYXZlIGJ1aWx0LWluIGtu b3dsZWRnZSBvZiBhbnkKbWFjcm9zLiBZb3UgY2FuIGV4dGVuZCBpdCB3aXRoIHlvdXIgb3duIG1h Y3Jvcy4KCkxpYnJhcmllcywgZm9yIGV4YW1wbGUsIHVzdWFsbHkgd2FudCB0byBzdXBwbHkgdGhl aXIgb3duIEF1dG9jb25mCm1hY3JvcyBmb3IgdXNlIGJ5IG90aGVyIHByb2dyYW1zLiAgRm9yIGlu c3RhbmNlLCB0aGUgQGNvbW1hbmR7Z2V0dGV4dH0KbGlicmFyeSBzdXBwbGllcyBhIG1hY3JvIEBj b2Rle0FNX0dOVV9HRVRURVhUfSB0aGF0IHNob3VsZCBiZSB1c2VkIGJ5CmFueSBwYWNrYWdlIHVz aW5nIEBjb21tYW5ke2dldHRleHR9LiAgV2hlbiB0aGUgbGlicmFyeSBpcyBpbnN0YWxsZWQsCml0 IGluc3RhbGxzIHRoaXMgbWFjcm8gc28gdGhhdCBAY29tbWFuZHthY2xvY2FsfSB3aWxsIGZpbmQg aXQuCgpBIG1hY3JvIGZpbGUncyBuYW1lIHNob3VsZCBlbmQgaW4gQGZpbGV7Lm00fS4gIFN1Y2gg ZmlsZXMgc2hvdWxkIGJlCmluc3RhbGxlZCBpbiBAZmlsZXskKGRhdGFkaXIpL2FjbG9jYWx9LiAg VGhpcyBjYW4gYmUgZG9uZSB3aXRoOgoKQGMgS2VlcCBpbiBzeW5jIHdpdGggcHJpbWFyeS1wcmVm aXgtY291cGxlcy1kb2N1bWVudGVkLXZhbGlkLnNoCkBleGFtcGxlCmFjbG9jYWxkaXIgPSAkKGRh dGFkaXIpL2FjbG9jYWwKYWNsb2NhbF9EQVRBID0gbXltYWNyby5tNCBteW90aGVybWFjcm8ubTQK QGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKUGxlYXNlIGRvIHVzZSBAZmlsZXskKGRhdGFkaXIpL2Fj bG9jYWx9LCBhbmQgbm90IHNvbWV0aGluZyBiYXNlZCBvbgp0aGUgcmVzdWx0IG9mIEBzYW1we2Fj bG9jYWwgLS1wcmludC1hYy1kaXJ9IChAcHhyZWZ7SGFyZC1Db2RlZCBJbnN0YWxsClBhdGhzfSwg Zm9yIGFyZ3VtZW50cykuICBJdCBtaWdodCBhbHNvIGJlIGhlbHBmdWwgdG8gc3VnZ2VzdCB0bwp0 aGUgdXNlciB0byBhZGQgdGhlIEBmaWxleyQoZGF0YWRpcikvYWNsb2NhbH0gZGlyZWN0b3J5IHRv IHRoZWlyCkBlbnZ7QUNMT0NBTF9QQVRIfSB2YXJpYWJsZSAoQHB4cmVme0FDTE9DQUxfUEFUSH0p IHNvIHRoYXQKQGNvbW1hbmR7YWNsb2NhbH0gd2lsbCBmaW5kIHRoZSBAZmlsZXsubTR9IGZpbGVz IGluc3RhbGxlZCBieSB5b3VyCnBhY2thZ2UgYXV0b21hdGljYWxseS4KCkEgZmlsZSBvZiBtYWNy b3Mgc2hvdWxkIGJlIGEgc2VyaWVzIG9mIHByb3Blcmx5IHF1b3RlZApAY29kZXtBQ19ERUZVTn0n cyAoQHB4cmVme01hY3JvIERlZmluaXRpb25zLCAsICwgYXV0b2NvbmYsIFRoZQpBdXRvY29uZiBN YW51YWx9KS4gIFRoZSBAY29tbWFuZHthY2xvY2FsfSBwcm9ncmFtIGFsc28gdW5kZXJzdGFuZHMK QGNvZGV7QUNfUkVRVUlSRX0gKEBweHJlZntQcmVyZXF1aXNpdGUgTWFjcm9zLCAsICwgYXV0b2Nv bmYsIFRoZQpBdXRvY29uZiBNYW51YWx9KSwgc28gaXQgaXMgc2FmZSB0byBwdXQgZWFjaCBtYWNy byBpbiBhIHNlcGFyYXRlIGZpbGUuCkVhY2ggZmlsZSBzaG91bGQgaGF2ZSBubyBzaWRlIGVmZmVj dHMgZXhjZXB0IGZvciBkZWZpbmluZyB0aGUKbWFjcm8ocykuICBJbiBwYXJ0aWN1bGFyLCBhbnkg Y2FsbCB0byBAY29kZXtBQ19QUkVSRVF9IHNob3VsZCBiZSBkb25lCmluc2lkZSB0aGUgZGVmaW5l ZCBtYWNybywgbm90IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuCgpAY2luZGV4IHVuZGVy cXVvdGVkIEBjb2Rle0FDX0RFRlVOfQpAYWNpbmRleCBBQ19ERUZVTgpAYWNpbmRleCBBQ19QUkVS RVEKClN0YXJ0aW5nIHdpdGggQXV0b21ha2UgMS44LCBAY29tbWFuZHthY2xvY2FsfSB3YXJucyBh Ym91dCBhbGwKdW5kZXJxdW90ZWQgY2FsbHMgdG8gQGNvZGV7QUNfREVGVU59LiAgV2UgcmVhbGl6 ZSB0aGlzIGFubm95cyBzb21lCnBlb3BsZSwgYmVjYXVzZSBAY29tbWFuZHthY2xvY2FsfSB3YXMg bm90IHNvIHN0cmljdCBpbiB0aGUgcGFzdCBhbmQKbWFueSB0aGlyZCBwYXJ0eSBtYWNyb3MgYXJl IHVuZGVycXVvdGVkOyBhbmQgd2UgaGF2ZSB0byBhcG9sb2dpemUgZm9yCnRoaXMgdGVtcG9yYXJ5 IGluY29udmVuaWVuY2UuICBUaGUgcmVhc29uIHdlIGhhdmUgdG8gYmUgc3RyaWN0ZXIgaXMKdGhh dCBhIHBvc3NpYmxlIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbiBvZiBAY29tbWFuZHthY2xvY2FsfQoo QHB4cmVme0Z1dHVyZSBvZiBhY2xvY2FsfSkgd2lsbCBoYXZlIHRvIHRlbXBvcmFyaWx5IGluY2x1 ZGUgYWxsIG9mCnRoZXNlIHRoaXJkIHBhcnR5IEBmaWxley5tNH0gZmlsZXMsIG1heWJlIHNldmVy YWwgdGltZXMsIGV2ZW4KaW5jbHVkaW5nIGZpbGVzIHRoYXQgZW5kIHVwIG5vdCBiZWluZyBuZWVk ZWQuICBEb2luZyBzbyBzaG91bGQKYWxsZXZpYXRlIG1hbnkgcHJvYmxlbXMgb2YgdGhlIGN1cnJl bnQgaW1wbGVtZW50YXRpb247IGhvd2V2ZXIsIGl0CnJlcXVpcmVzIGEgc3RyaWN0ZXIgc3R5bGUg ZnJvbSBtYWNybyBhdXRob3JzLiAgSG9wZWZ1bGx5IGl0IGlzIGVhc3kgdG8KcmV2aXNlIHRoZSBl eGlzdGluZyBtYWNyb3MuICBGb3IgaW5zdGFuY2UsCgpAZXhhbXBsZQojIGJhZCBzdHlsZQpBQ19Q UkVSRVEoMi42OCkKQUNfREVGVU4oQVhfRk9PQkFSLApbQUNfUkVRVUlSRShbQVhfU09NRVRISU5H XSlkbmwKQVhfRk9PCkFYX0JBUgpdKQpAZW5kIGV4YW1wbGUKCkBub2luZGVudApzaG91bGQgYmUg cmV3cml0dGVuIGFzCgpAZXhhbXBsZQpBQ19ERUZVTihbQVhfRk9PQkFSXSwKW0FDX1BSRVJFUShb Mi42OF0pZG5sCkFDX1JFUVVJUkUoW0FYX1NPTUVUSElOR10pZG5sCkFYX0ZPTwpBWF9CQVIKXSkK QGVuZCBleGFtcGxlCgpXcmFwcGluZyB0aGUgQGNvZGV7QUNfUFJFUkVRKFsyLjY4XSl9IGNhbGwg aW5zaWRlIHRoZSBtYWNybyBlbnN1cmVzCnRoYXQgdGhlIEF1dG9jb25mIDIuNjggd2lsbCBub3Qg YmUgYSBwcmVyZXF1aXNpdGUgaWYgQGNvZGV7QVhfRk9PQkFSfQppcyBub3QgdXNlZC4gIE1vc3Qg aW1wb3J0YW50bHksIHF1b3RpbmcgdGhlIGZpcnN0IGFyZ3VtZW50IG9mCkBjb2Rle0FDX0RFRlVO fSBhbGxvd3MgdGhlIG1hY3JvIHRvIGJlIHJlZGVmaW5lZCBvciBpbmNsdWRlZCB0d2ljZQoob3Ro ZXJ3aXNlIHRoaXMgZmlyc3QgYXJndW1lbnQgd291bGQgYmUgZXhwYW5kZWQgZHVyaW5nIHRoZSBz ZWNvbmQKZGVmaW5pdGlvbikuICBGb3IgY29uc2lzdGVuY3kgd2UgbGlrZSB0byBxdW90ZSBldmVu IGFyZ3VtZW50cyBzdWNoIGFzCkBjb2RlezIuNjh9IHRoYXQgZG8gbm90IHJlcXVpcmUgaXQuCgpJ ZiB5b3UgaGF2ZSBiZWVuIGRpcmVjdGVkIGhlcmUgYnkgdGhlIEBjb21tYW5ke2FjbG9jYWx9IGRp YWdub3N0aWMgYnV0CmFyZSBub3QgdGhlIG1haW50YWluZXIgb2YgdGhlIGltcGxpY2F0ZWQgbWFj cm8sIHlvdSB3aWxsIHdhbnQgdG8KY29udGFjdCB0aGUgbWFpbnRhaW5lciBvZiB0aGF0IG1hY3Jv LiAgUGxlYXNlIHRyeSB0byBtYWtlIHN1cmUgeW91CmhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9m IHRoZSBtYWNybyBhbmQgdGhhdCB0aGUgcHJvYmxlbSBoYXNuJ3QKYWxyZWFkeSBiZWVuIHJlcG9y dGVkIGJlZm9yZSBkb2luZyBzby4KCkFub3RoZXIgc2l0dWF0aW9uIHdoZXJlIEBjb21tYW5ke2Fj bG9jYWx9IGlzIGNvbW1vbmx5IHVzZWQgaXMgdG8KbWFuYWdlIG1hY3JvcyB0aGF0IGFyZSB1c2Vk IGxvY2FsbHkgYnkgdGhlIHBhY2thZ2U7IEByZWZ7TG9jYWwKTWFjcm9zfS4KCkBub2RlIExvY2Fs IE1hY3JvcwpAc3Vic2VjdGlvbiBIYW5kbGluZyBMb2NhbCBNYWNyb3MKCkZlYXR1cmUgdGVzdHMg b2ZmZXJlZCBieSBBdXRvY29uZiBkbyBub3QgY292ZXIgYWxsIG5lZWRzLiAgUGVvcGxlCm9mdGVu IGhhdmUgdG8gc3VwcGxlbWVudCBleGlzdGluZyB0ZXN0cyB3aXRoIHRoZWlyIG93biBtYWNyb3Ms IG9yCndpdGggdGhpcmQtcGFydHkgbWFjcm9zLgoKVGhlcmUgYXJlIHR3byB3YXlzIHRvIG9yZ2Fu aXplIGN1c3RvbSBtYWNyb3MgaW4gYSBwYWNrYWdlLgoKVGhlIGZpcnN0IHBvc3NpYmlsaXR5ICh0 aGUgaGlzdG9yaWNhbCBwcmFjdGljZSkgaXMgdG8gbGlzdCBhbGwgeW91cgptYWNyb3MgaW4gQGZp bGV7YWNpbmNsdWRlLm00fS4gIFRoaXMgZmlsZSB3aWxsIGJlIGluY2x1ZGVkIGluCkBmaWxle2Fj bG9jYWwubTR9IHdoZW4geW91IHJ1biBAY29tbWFuZHthY2xvY2FsfSwgYW5kIGl0cyBtYWNybyhz KSB3aWxsCmhlbmNlZm9ydGggYmUgdmlzaWJsZSB0byBAY29tbWFuZHthdXRvY29uZn0uICBIb3dl dmVyLCBpZiBpdCBjb250YWlucwpudW1lcm91cyBtYWNyb3MsIGl0IHdpbGwgcmFwaWRseSBiZWNv bWUgZGlmZmljdWx0IHRvIG1haW50YWluLCBhbmQgaXQKd2lsbCBiZSBhbG1vc3QgaW1wb3NzaWJs ZSB0byBzaGFyZSBtYWNyb3MgYmV0d2VlbiBwYWNrYWdlcy4KClRoZSBzZWNvbmQgcG9zc2liaWxp dHksIHdoaWNoIHdlIHJlY29tbWVuZCwgaXMgdG8gd3JpdGUgZWFjaCBtYWNybyBpbgppdHMgb3du IGZpbGUgYW5kIGdhdGhlciBhbGwgdGhlc2UgZmlsZXMgaW4gYSBkaXJlY3RvcnkuICBUaGlzCmRp cmVjdG9yeSBpcyB1c3VhbGx5IGNhbGxlZCBAZmlsZXttNC99LiAgVGhlbiB5b3UgY2FuIHVwZGF0 ZQpAZmlsZXtjb25maWd1cmUuYWN9IGJ5IGFkZGluZyBhIHByb3BlciBjYWxsIHRvCkBjb2Rle0FD X0NPTkZJR19NQUNST19ESVJTfToKCkBleGFtcGxlCkFDX0NPTkZJR19NQUNST19ESVJTKFttNF0p CkBlbmQgZXhhbXBsZQoKQGNvbW1hbmR7YWNsb2NhbH0gd2lsbCB0aGVuIHRha2UgY2FyZSBvZiBh dXRvbWF0aWNhbGx5IGFkZGluZyBAZmlsZXttNC99CnRvIGl0cyBzZWFyY2ggcGF0aCBmb3IgTTQg ZmlsZXMuCgpXaGVuIEBjb21tYW5ke2FjbG9jYWx9IGlzIHJ1biwgaXQgd2lsbCBidWlsZCBhbiBA ZmlsZXthY2xvY2FsLm00fSB0aGF0CkBjb2Rle200X2luY2x1ZGV9cyBhbnkgZmlsZSBmcm9tIEBm aWxle200L30gdGhhdCBkZWZpbmVzIGEgcmVxdWlyZWQKbWFjcm8uICBNYWNyb3Mgbm90IGZvdW5k IGxvY2FsbHkgd2lsbCBzdGlsbCBiZSBzZWFyY2hlZCBpbiBzeXN0ZW0td2lkZQpkaXJlY3Rvcmll cywgYXMgZXhwbGFpbmVkIGluIEByZWZ7TWFjcm8gU2VhcmNoIFBhdGh9LgoKQ3VzdG9tIG1hY3Jv cyBzaG91bGQgYmUgZGlzdHJpYnV0ZWQgZm9yIHRoZSBzYW1lIHJlYXNvbiB0aGF0CkBmaWxle2Nv bmZpZ3VyZS5hY30gaXM6IHNvIHRoYXQgb3RoZXIgcGVvcGxlIGhhdmUgYWxsIHRoZSBzb3VyY2Vz IG9mCnlvdXIgcGFja2FnZSBpZiB0aGV5IHdhbnQgdG8gd29yayBvbiBpdC4gIEluIGZhY3QsIHRo aXMgZGlzdHJpYnV0aW9uCmhhcHBlbnMgYXV0b21hdGljYWxseSBiZWNhdXNlIGFsbCBAY29kZXtt NF9pbmNsdWRlfWQgZmlsZXMgYXJlCmRpc3RyaWJ1dGVkLgoKVGhlcmUgaXMgbm8gY29uc2Vuc3Vz IG9uIHRoZSBkaXN0cmlidXRpb24gb2YgdGhpcmQtcGFydHkgbWFjcm9zIHRoYXQKeW91ciBwYWNr YWdlIG1heSB1c2UuICBNYW55IGxpYnJhcmllcyBpbnN0YWxsIHRoZWlyIG93biBtYWNybyBpbiB0 aGUKc3lzdGVtLXdpZGUgQGNvbW1hbmR7YWNsb2NhbH0gZGlyZWN0b3J5IChAcHhyZWZ7RXh0ZW5k aW5nIGFjbG9jYWx9KS4KRm9yIGluc3RhbmNlLCBHdWlsZSBzaGlwcyB3aXRoIGEgZmlsZSBjYWxs ZWQgQGZpbGV7Z3VpbGUubTR9IHRoYXQKY29udGFpbnMgdGhlIG1hY3JvIEBjb2Rle0dVSUxFX0ZM QUdTfSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZQpjb21waWxlciBhbmQgbGlua2VyIGZsYWdz IGFwcHJvcHJpYXRlIGZvciB1c2luZyBHdWlsZS4gIFVzaW5nCkBjb2Rle0dVSUxFX0ZMQUdTfSBp biBAZmlsZXtjb25maWd1cmUuYWN9IHdpbGwgY2F1c2UgQGNvbW1hbmR7YWNsb2NhbH0KdG8gY29w eSBAZmlsZXtndWlsZS5tNH0gaW50byBAZmlsZXthY2xvY2FsLm00fSwgYnV0IGFzIEBmaWxle2d1 aWxlLm00fQppcyBub3QgcGFydCBvZiB0aGUgcHJvamVjdCwgaXQgd2lsbCBub3QgYmUgZGlzdHJp YnV0ZWQuICBUZWNobmljYWxseSwKdGhhdCBtZWFucyBhIHVzZXIgd2hvIG5lZWRzIHRvIHJlYnVp bGQgQGZpbGV7YWNsb2NhbC5tNH0gd2lsbCBoYXZlIHRvCmluc3RhbGwgR3VpbGUgZmlyc3QuICBU aGlzIGlzIHByb2JhYmx5IE9LLCBpZiBHdWlsZSBhbHJlYWR5IGlzIGEKcmVxdWlyZW1lbnQgdG8g YnVpbGQgdGhlIHBhY2thZ2UuICBIb3dldmVyLCBpZiBHdWlsZSBpcyBvbmx5IGFuCm9wdGlvbmFs IGZlYXR1cmUsIG9yIGlmIHlvdXIgcGFja2FnZSBtaWdodCBydW4gb24gYXJjaGl0ZWN0dXJlcyB3 aGVyZQpHdWlsZSBjYW5ub3QgYmUgaW5zdGFsbGVkLCB0aGlzIHJlcXVpcmVtZW50IHdpbGwgaGlu ZGVyIGRldmVsb3BtZW50LgpBbiBlYXN5IHNvbHV0aW9uIGlzIHRvIGNvcHkgc3VjaCB0aGlyZC1w YXJ0eSBtYWNyb3MgaW4geW91ciBsb2NhbApAZmlsZXttNC99IGRpcmVjdG9yeSBzbyB0aGV5IGdl dCBkaXN0cmlidXRlZC4KClNpbmNlIEF1dG9tYWtlIDEuMTAsIEBjb21tYW5ke2FjbG9jYWx9IG9m ZmVycyB0aGUgb3B0aW9uIEBjb2Rley0taW5zdGFsbH0KdG8gY29weSB0aGVzZSBzeXN0ZW0td2lk ZSB0aGlyZC1wYXJ0eSBtYWNyb3MgaW4geW91ciBsb2NhbCBtYWNybyBkaXJlY3RvcnksCmhlbHBp bmcgdG8gc29sdmUgdGhlIGFib3ZlIHByb2JsZW0uCgpXaXRoIHRoaXMgc2V0dXAsIHN5c3RlbS13 aWRlIG1hY3JvcyB3aWxsIGJlIGNvcGllZCB0byBAZmlsZXttNC99CnRoZSBmaXJzdCB0aW1lIHlv dSBydW4gQGNvbW1hbmR7YWNsb2NhbH0uICBUaGVuIHRoZSBsb2NhbGx5IGluc3RhbGxlZAptYWNy b3Mgd2lsbCBoYXZlIHByZWNlZGVuY2Ugb3ZlciB0aGUgc3lzdGVtLXdpZGUgaW5zdGFsbGVkIG1h Y3JvcwplYWNoIHRpbWUgQGNvbW1hbmR7YWNsb2NhbH0gaXMgcnVuIGFnYWluLgoKT25lIHJlYXNv biB3aHkgeW91IHNob3VsZCBrZWVwIEBvcHRpb257LS1pbnN0YWxsfSBpbiB0aGUgZmxhZ3MgZXZl bgphZnRlciB0aGUgZmlyc3QgcnVuIGlzIHRoYXQgd2hlbiB5b3UgbGF0ZXIgZWRpdCBAZmlsZXtj b25maWd1cmUuYWN9CmFuZCBkZXBlbmQgb24gYSBuZXcgbWFjcm8sIHRoaXMgbWFjcm8gd2lsbCBi ZSBpbnN0YWxsZWQgaW4geW91cgpAZmlsZXttNC99IGF1dG9tYXRpY2FsbHkuICBBbm90aGVyIG9u ZSBpcyB0aGF0IHNlcmlhbCBudW1iZXJzCihAcHhyZWZ7U2VyaWFsc30pIGNhbiBiZSB1c2VkIHRv IHVwZGF0ZSB0aGUgbWFjcm9zIGluIHlvdXIgc291cmNlIHRyZWUKYXV0b21hdGljYWxseSB3aGVu IG5ldyBzeXN0ZW0td2lkZSB2ZXJzaW9ucyBhcmUgaW5zdGFsbGVkLiBJdCBpcyBnb29kCnByYWN0 aWNlIHRvIG1haW50YWluIGEgc2VyaWFsIG51bWJlciBmb3IgZWFjaCBtYWNybyB5b3UgZGlzdHJp YnV0ZSwKZXZlbiBpZiB5b3UgZG8gbm90IHVzZSB0aGUgQG9wdGlvbnstLWluc3RhbGx9IG9wdGlv biBvZgpAY29tbWFuZHthY2xvY2FsfTogdGhpcyBhbGxvd3Mgb3RoZXIgcGVvcGxlIHRvIHVzZSBp dC4KCgpAbm9kZSBTZXJpYWxzCkBzdWJzZWN0aW9uIFNlcmlhbCBOdW1iZXJzCkBjaW5kZXggc2Vy aWFsIG51bWJlcnMgaW4gbWFjcm9zCkBjaW5kZXggbWFjcm8gc2VyaWFsIG51bWJlcnMKQGNpbmRl eCBAY29kZXsjc2VyaWFsfSBzeW50YXgKQGNpbmRleCBAY29tbWFuZHthY2xvY2FsfSBhbmQgc2Vy aWFsIG51bWJlcnMKCkJlY2F1c2UgdGhpcmQtcGFydHkgbWFjcm9zIGRlZmluZWQgaW4gQGZpbGV7 Ki5tNH0gZmlsZXMgYXJlIG5hdHVyYWxseQpzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBwcm9qZWN0 cywgcGVvcGxlIGxpa2UgdG8gdmVyc2lvbiB0aGVtLiAgVGhpcwptYWtlcyBpdCBlYXNpZXIgdG8g dGVsbCB3aGljaCBvZiB0d28gTTQgZmlsZXMgaXMgbmV3ZXIuICBTaW5jZSBhdApsZWFzdCAxOTk2 LCB0aGUgY29udmVudGlvbiBpcyB0byB1c2UgYSBAc2FtcHsjc2VyaWFsfSBsaW5lIGZvciB0aGlz LgoKU3VjaCBhIHNlcmlhbCBudW1iZXIgc2hvdWxkIGJlIGEgc2luZ2xlIGxpbmUgb2YgdGhlIGZv cm0KCkBleGFtcGxlCiMgc2VyaWFsIEB2YXJ7dmVyc2lvbn0KQGVuZCBleGFtcGxlCgpAbm9pbmRl bnQKd2hlcmUgQHZhcnt2ZXJzaW9ufSBpcyBhIHZlcnNpb24gbnVtYmVyIGNvbnRhaW5pbmcgb25s eSBkaWdpdHMgYW5kCmRvdHMuICBVc3VhbGx5IHBlb3BsZSB1c2UgYSBzaW5nbGUgaW50ZWdlciwg YW5kIHRoZXkgaW5jcmVtZW50IGl0IGVhY2gKdGltZSB0aGV5IGNoYW5nZSB0aGUgbWFjcm8gKGhl bmNlIHRoZSBuYW1lIG9mIGBgc2VyaWFsJycpLiAgU3VjaCBhCmxpbmUgc2hvdWxkIGFwcGVhciBp biB0aGUgTTQgZmlsZSBiZWZvcmUgYW55IG1hY3JvIGRlZmluaXRpb24uCgpUaGUgQHNhbXB7I30g bXVzdCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9uIHRoZSBsaW5lLAphbmQgaXQgaXMgT0sgdG8g aGF2ZSBleHRyYSB3b3JkcyBhZnRlciB0aGUgdmVyc2lvbiwgYXMgaW4KCkBleGFtcGxlCiNzZXJp YWwgQHZhcnt2ZXJzaW9ufSBAdmFye2dhcmJhZ2V9CkBlbmQgZXhhbXBsZQoKTm9ybWFsbHkgdGhl c2Ugc2VyaWFsIG51bWJlcnMgYXJlIGNvbXBsZXRlbHkgaWdub3JlZCBieQpAY29tbWFuZHthY2xv Y2FsfSBhbmQgQGNvbW1hbmR7YXV0b2NvbmZ9LCBsaWtlIGFueSBnZW51aW5lIGNvbW1lbnQuCkhv d2V2ZXIgd2hlbiB1c2luZyBAY29tbWFuZHthY2xvY2FsfSdzIEBvcHRpb257LS1pbnN0YWxsfSBm ZWF0dXJlLCB0aGVzZQpzZXJpYWwgbnVtYmVycyB3aWxsIG1vZGlmeSB0aGUgd2F5IEBjb21tYW5k e2FjbG9jYWx9IHNlbGVjdHMgdGhlCm1hY3JvcyB0byBpbnN0YWxsIGluIHRoZSBwYWNrYWdlOiBp ZiB0d28gZmlsZXMgd2l0aCB0aGUgc2FtZSBiYXNlbmFtZQpleGlzdCBpbiB5b3VyIHNlYXJjaCBw YXRoLCBhbmQgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdXNlcyBhCkBzYW1weyNzZXJpYWx9IGxp bmUsIEBjb21tYW5ke2FjbG9jYWx9IHdpbGwgaWdub3JlIHRoZSBmaWxlIHRoYXQgaGFzCnRoZSBv bGRlciBAc2FtcHsjc2VyaWFsfSBsaW5lIChvciB0aGUgZmlsZSB0aGF0IGhhcyBub25lKS4KCkEg c2VyaWFsIG51bWJlciBhcHBsaWVzIHRvIGEgd2hvbGUgTTQgZmlsZSwgbm90IHRvIGFueSBtYWNy byBpdApjb250YWlucy4gIEEgZmlsZSBjYW4gY29udGFpbiBtdWx0aXBsZSBtYWNyb3MsIGJ1dCBv bmx5IG9uZSBzZXJpYWwKbnVtYmVyLgoKQHN1YnN1YmhlYWRpbmcgU2VyaWFsIE51bWJlciBFeGFt cGxlCgpIZXJlIGlzIGEgdXNlIGNhc2UgdGhhdCBpbGx1c3RyYXRlcyB0aGUgdXNlIG9mIEBvcHRp b257LS1pbnN0YWxsfSBhbmQKaXRzIGludGVyYWN0aW9uIHdpdGggc2VyaWFsIG51bWJlcnMuICBM ZXQncyBhc3N1bWUgd2UgbWFpbnRhaW4gYQpwYWNrYWdlIGNhbGxlZCBNeVBhY2thZ2UsIHRoZSBA ZmlsZXtjb25maWd1cmUuYWN9IG9mIHdoaWNoIHJlcXVpcmVzIGEKdGhpcmQtcGFydHkgbWFjcm8g QGNvZGV7QVhfVEhJUkRfUEFSVFl9IGRlZmluZWQgaW4KQGZpbGV7L3Vzci9zaGFyZS9hY2xvY2Fs L3RoaXJkcGFydHkubTR9IGFzIGZvbGxvd3M6CgpAZXhhbXBsZQojIHNlcmlhbCAxCkFDX0RFRlVO KFtBWF9USElSRF9QQVJUWV0sIFsuLi5dKQpAZW5kIGV4YW1wbGUKCk15UGFja2FnZSB1c2VzIGFu IEBmaWxle200L30gZGlyZWN0b3J5IHRvIHN0b3JlIGxvY2FsIG1hY3JvcyBhcwpleHBsYWluZWQg aW4gQHJlZntMb2NhbCBNYWNyb3N9LCBhbmQgaGFzCgpAZXhhbXBsZQpBQ19DT05GSUdfTUFDUk9f RElSUyhbbTRdKQpAZW5kIGV4YW1wbGUKCkBub2luZGVudAppbiBpdHMgQGZpbGV7Y29uZmlndXJl LmFjfS4KCkluaXRpYWxseSB0aGUgQGZpbGV7bTQvfSBkaXJlY3RvcnkgaXMgZW1wdHkuICBUaGUg Zmlyc3QgdGltZSB3ZSBydW4KQGNvbW1hbmR7YWNsb2NhbCAtLWluc3RhbGx9LCBpdCB3aWxsIG5v dGljZSB0aGF0CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkBmaWxle2NvbmZpZ3VyZS5hY30gdXNl cyBAY29kZXtBWF9USElSRF9QQVJUWX0KQGl0ZW0KTm8gbG9jYWwgbWFjcm9zIGRlZmluZSBAY29k ZXtBWF9USElSRF9QQVJUWX0KQGl0ZW0KQGZpbGV7L3Vzci9zaGFyZS9hY2xvY2FsL3RoaXJkcGFy dHkubTR9IGRlZmluZXMgQGNvZGV7QVhfVEhJUkRfUEFSVFl9CndpdGggc2VyaWFsIEB3e251bWJl ciAxfS4KQGVuZCBpdGVtaXplCgpAbm9pbmRlbnQKQmVjYXVzZSBAZmlsZXsvdXNyL3NoYXJlL2Fj bG9jYWwvdGhpcmRwYXJ0eS5tNH0gaXMgYSBzeXN0ZW0td2lkZSBtYWNybwphbmQgQGNvbW1hbmR7 YWNsb2NhbH0gd2FzIGdpdmVuIHRoZSBAb3B0aW9uey0taW5zdGFsbH0gb3B0aW9uLCBpdCB3aWxs CmNvcHkgdGhpcyBmaWxlIGluIEBmaWxle200L3RoaXJkcGFydHkubTR9LCBhbmQgb3V0cHV0IGFu CkBmaWxle2FjbG9jYWwubTR9IHRoYXQgY29udGFpbnMgQHNhbXB7bTRfaW5jbHVkZShbbTQvdGhp cmRwYXJ0eS5tNF0pfS4KClRoZSBuZXh0IHRpbWUgQHNhbXB7YWNsb2NhbCAtLWluc3RhbGx9IGlz IHJ1biwgc29tZXRoaW5nIGRpZmZlcmVudApoYXBwZW5zLiAgQGNvbW1hbmR7YWNsb2NhbH0gbm90 aWNlcyB0aGF0CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkBmaWxle2NvbmZpZ3VyZS5hY30gdXNl cyBAY29kZXtBWF9USElSRF9QQVJUWX0KQGl0ZW0KQGZpbGV7bTQvdGhpcmRwYXJ0eS5tNH0gZGVm aW5lcyBAY29kZXtBWF9USElSRF9QQVJUWX0Kd2l0aCBzZXJpYWwgQHd7bnVtYmVyIDF9LgpAaXRl bQpAZmlsZXsvdXNyL3NoYXJlL2FjbG9jYWwvdGhpcmRwYXJ0eS5tNH0gZGVmaW5lcyBAY29kZXtB WF9USElSRF9QQVJUWX0Kd2l0aCBzZXJpYWwgQHd7bnVtYmVyIDF9LgpAZW5kIGl0ZW1pemUKCkBu b2luZGVudApCZWNhdXNlIGJvdGggZmlsZXMgaGF2ZSB0aGUgc2FtZSBzZXJpYWwgbnVtYmVyLCBA Y29tbWFuZHthY2xvY2FsfSB1c2VzCnRoZSBmaXJzdCBpdCBmb3VuZCBpbiBpdHMgc2VhcmNoIHBh dGggb3JkZXIgKEBweHJlZntNYWNybyBTZWFyY2gKUGF0aH0pLiAgQGNvbW1hbmR7YWNsb2NhbH0g dGhlcmVmb3JlIGlnbm9yZXMKQGZpbGV7L3Vzci9zaGFyZS9hY2xvY2FsL3RoaXJkcGFydHkubTR9 IGFuZCBvdXRwdXRzIGFuCkBmaWxle2FjbG9jYWwubTR9IHRoYXQgY29udGFpbnMgQHNhbXB7bTRf aW5jbHVkZShbbTQvdGhpcmRwYXJ0eS5tNF0pfS4KCkxvY2FsIGRpcmVjdG9yaWVzIHNwZWNpZmll ZCB3aXRoIEBvcHRpb257LUl9IGFyZSBhbHdheXMgc2VhcmNoZWQgYmVmb3JlCnN5c3RlbS13aWRl IGRpcmVjdG9yaWVzLCBzbyBhIGxvY2FsIGZpbGUgd2lsbCBhbHdheXMgYmUgcHJlZmVycmVkIHRv CnRoZSBzeXN0ZW0td2lkZSBmaWxlIGluIGNhc2Ugb2YgZXF1YWwgc2VyaWFsIG51bWJlcnMuCgpO b3cgc3VwcG9zZSB0aGUgc3lzdGVtLXdpZGUgdGhpcmQtcGFydHkgbWFjcm8gaXMgY2hhbmdlZC4g IFRoaXMgY2FuCmhhcHBlbiBpZiB0aGUgcGFja2FnZSBpbnN0YWxsaW5nIHRoaXMgbWFjcm8gaXMg dXBkYXRlZC4gIExldCdzIHN1cHBvc2UKdGhlIG5ldyBtYWNybyBoYXMgc2VyaWFsIEB3e251bWJl ciAyfS4gIFRoZSBuZXh0IHRpbWUgQHNhbXB7YWNsb2NhbCAtLWluc3RhbGx9CmlzIHJ1biB0aGUg c2l0dWF0aW9uIGlzIHRoZSBmb2xsb3dpbmc6CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkBmaWxl e2NvbmZpZ3VyZS5hY30gdXNlcyBAY29kZXtBWF9USElSRF9QQVJUWX0KQGl0ZW0KQGZpbGV7bTQv dGhpcmRwYXJ0eS5tNH0gZGVmaW5lcyBAY29kZXtBWF9USElSRF9QQVJUWX0Kd2l0aCBzZXJpYWwg QHd7bnVtYmVyIDF9LgpAaXRlbQpAZmlsZXsvdXNyL3NoYXJlL2FjbG9jYWwvdGhpcmRwYXJ0eS5t NH0gZGVmaW5lcyBAY29kZXtBWF9USElSRF9QQVJUWX0Kd2l0aCBAd3tzZXJpYWwgMn0uCkBlbmQg aXRlbWl6ZQoKQG5vaW5kZW50CldoZW4gQGNvbW1hbmR7YWNsb2NhbH0gc2VlcyBhIGdyZWF0ZXIg c2VyaWFsIG51bWJlciwgaXQgaW1tZWRpYXRlbHkKZm9yZ2V0cyBhbnl0aGluZyBpdCBrbm93cyBm cm9tIGZpbGVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBiYXNlbmFtZSBhbmQgYQpzbWFsbGVyIHNlcmlh bCBudW1iZXIuICBTbyBhZnRlciBpdCBoYXMgZm91bmQKQGZpbGV7L3Vzci9zaGFyZS9hY2xvY2Fs L3RoaXJkcGFydHkubTR9IHdpdGggc2VyaWFsIDIsCkBjb21tYW5ke2FjbG9jYWx9IHdpbGwgcHJv Y2VlZCBhcyBpZiBpdCBoYWQgbmV2ZXIgc2VlbgpAZmlsZXttNC90aGlyZHBhcnR5Lm00fS4gIFRo aXMgYnJpbmdzIHVzIGJhY2sgdG8gYSBzaXR1YXRpb24gc2ltaWxhcgp0byB0aGF0IGF0IHRoZSBi ZWdpbm5pbmcgb2Ygb3VyIGV4YW1wbGUsIHdoZXJlIG5vIGxvY2FsIGZpbGUgZGVmaW5lZAp0aGUg bWFjcm8uICBAY29tbWFuZHthY2xvY2FsfSB3aWxsIGluc3RhbGwgdGhlIG5ldyB2ZXJzaW9uIG9m IHRoZQptYWNybyBpbiBAZmlsZXttNC90aGlyZHBhcnR5Lm00fSwgaW4gdGhpcyBjYXNlIG92ZXJy aWRpbmcgdGhlIG9sZAp2ZXJzaW9uLiAgTXlQYWNrYWdlIGp1c3QgaGFkIGl0cyBtYWNybyB1cGRh dGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2YKcnVubmluZyBAY29tbWFuZHthY2xvY2FsfS4KCklmIHlv dSBhcmUgbGVlcnkgb2YgbGV0dGluZyBAY29tbWFuZHthY2xvY2FsfSB1cGRhdGUgeW91ciBsb2Nh bAptYWNybywgeW91IGNhbiBydW4gQHNhbXB7YWNsb2NhbCAtLWRpZmZ9IHRvIHJldmlldyB0aGUg Y2hhbmdlcwpAc2FtcHthY2xvY2FsIC0taW5zdGFsbH0gd291bGQgcGVyZm9ybSBvbiB0aGVzZSBt YWNyb3MuCgpGaW5hbGx5LCBub3RlIHRoYXQgdGhlIEBvcHRpb257LS1mb3JjZX0gb3B0aW9uIG9m IEBjb21tYW5ke2FjbG9jYWx9CmhhcyBubyBlZmZlY3Qgb24gdGhlIGZpbGVzIGluc3RhbGxlZCBi eSBAb3B0aW9uey0taW5zdGFsbH0uICBGb3IKaW5zdGFuY2UsIGlmIHlvdSBoYXZlIG1vZGlmaWVk IHlvdXIgbG9jYWwgbWFjcm9zLCBkbyBub3QgZXhwZWN0CkBvcHRpb257LS1pbnN0YWxsIC0tZm9y Y2V9IHRvIHJlcGxhY2UgdGhlIGxvY2FsIG1hY3JvcyBieSB0aGVpcgpzeXN0ZW0td2lkZSB2ZXJz aW9ucy4gIElmIHlvdSB3YW50IHRvIGRvIHNvLCBzaW1wbHkgZXJhc2UgdGhlIGxvY2FsCm1hY3Jv cyB5b3Ugd2FudCB0byByZXZlcnQsIGFuZCBydW4gQHNhbXB7YWNsb2NhbCAtLWluc3RhbGx9LgoK CkBub2RlIEZ1dHVyZSBvZiBhY2xvY2FsCkBzdWJzZWN0aW9uIFRoZSBGdXR1cmUgb2YgQGNvbW1h bmR7YWNsb2NhbH0KQGNpbmRleCBAY29tbWFuZHthY2xvY2FsfSdzIHNjaGVkdWxlZCBkZWF0aAoK SWRlYWxseSwgQGNvbW1hbmR7YWNsb2NhbH0gc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIEF1dG9tYWtl LiAgQXV0b21ha2UKc2hvdWxkIGZvY3VzIG9uIGdlbmVyYXRpbmcgQGZpbGV7TWFrZWZpbGV9czsg ZGVhbGluZyB3aXRoIE00IG1hY3JvcyBpcwptb3JlIEF1dG9jb25mJ3Mgam9iLiAgVGhlIGZhY3Qg dGhhdCBzb21lIHBlb3BsZSBpbnN0YWxsIEF1dG9tYWtlIGp1c3QKdG8gdXNlIEBjb21tYW5ke2Fj bG9jYWx9LCBidXQgZG8gbm90IHVzZSBBdXRvbWFrZSBvdGhlcndpc2UsIGlzIGFuCmluZGljYXRp b24gb2YgaG93IHRoYXQgZmVhdHVyZSBpcyBtaXNwbGFjZWQuCgpBIG5ldyBpbXBsZW1lbnRhdGlv biB3b3VsZCBwcm9iYWJseSBiZSBkb25lIHNsaWdodGx5IGRpZmZlcmVudGx5LiAgRm9yCmluc3Rh bmNlLCBpdCBjb3VsZCBlbmZvcmNlIHRoZSBAZmlsZXttNC99LXN0eWxlIGxheW91dCBkaXNjdXNz ZWQgaW4KQHJlZntMb2NhbCBNYWNyb3N9LgoKV2UgZG8gbm90IGtub3cgd2hlbiBvciB3aGV0aGVy IHRoaXMgd2lsbCBoYXBwZW4uICBJdCBoYXMgYmVlbgpkaXNjdXNzZWQgc2V2ZXJhbCB0aW1lcywg YnV0IHNvbWVvbmUgc3RpbGwgaGFzIHRvIGNvbW1pdCB0byBleGVjdXRpbmcKdGhpcyBub24tdHJp dmlhbCB0YXNrLgoKRnJvbSB0aGUgdXNlcidzIHBvaW50IG9mIHZpZXcsIEBjb21tYW5ke2FjbG9j YWx9J3MgcmVtb3ZhbCBtaWdodCB0dXJuCm91dCB0byBiZSBwYWluZnVsLiAgVGhlcmUgaXMgYSBz aW1wbGUgcHJlY2F1dGlvbiB0aGF0IHlvdSBtYXkgdGFrZSB0bwptYWtlIHRoYXQgc3dpdGNoIG1v cmUgc2VhbWxlc3M6IG5ldmVyIGNhbGwgQGNvbW1hbmR7YWNsb2NhbH0geW91cnNlbGYuCktlZXAg aXRzIGludm9jYXRpb24gdW5kZXIgdGhlIGV4Y2x1c2l2ZSBjb250cm9sIG9mCkBjb21tYW5ke2F1 dG9yZWNvbmZ9IGFuZCBBdXRvbWFrZSdzIHJlYnVpbGQgcnVsZXMuICBIb3BlZnVsbHkgeW91Cndv bid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhpbmdzIGJyZWFraW5nOyB3aGVuIEBjb21tYW5ke2Fj bG9jYWx9CmRpc2FwcGVhcnMsIGJlY2F1c2UgZXZlcnl0aGluZyB3aWxsIGhhdmUgYmVlbiB0YWtl biBjYXJlIG9mLiAgSWYKb3RoZXJ3aXNlIHlvdSB1c2VkIHRvIGNhbGwgQGNvbW1hbmR7YWNsb2Nh bH0gZGlyZWN0bHkgeW91cnNlbGYgb3IgZnJvbQpzb21lIHNjcmlwdCwgeW91IHdpbGwgcXVpY2ts eSBub3RpY2UgdGhlIGNoYW5nZS4KCk1hbnkgcGFja2FnZXMgY29tZSB3aXRoIGEgc2NyaXB0IGNh bGxlZCBAZmlsZXtib290c3RyYXB9IG9yCkBmaWxle2F1dG9nZW4uc2h9IHRoYXQgY2FsbHMgQGNv bW1hbmR7YWNsb2NhbH0sIEBjb21tYW5ke2xpYnRvb2xpemV9LApAY29tbWFuZHtnZXR0ZXh0aXpl fSBvciBAY29tbWFuZHthdXRvcG9pbnR9LCBAY29tbWFuZHthdXRvY29uZn0sCkBjb21tYW5ke2F1 dG9oZWFkZXJ9LCBhbmQgQGNvbW1hbmR7YXV0b21ha2V9IGluIHRoZSByaWdodCBvcmRlci4gIElu CmZhY3QsIHRoaXMgaXMgcHJlY2lzZWx5IHdoYXQgQGNvbW1hbmR7YXV0b3JlY29uZn0gY2FuIGRv IGZvciB5b3UuICBJZgp5b3VyIHBhY2thZ2UgaGFzIHN1Y2ggYSBAZmlsZXtib290c3RyYXB9IG9y IEBmaWxle2F1dG9nZW4uc2h9IHNjcmlwdCwKY29uc2lkZXIgdXNpbmcgQGNvbW1hbmR7YXV0b3Jl Y29uZn0uICBUaGF0IHNob3VsZCBzaW1wbGlmeSBpdHMgbG9naWMKKGFsbCB0byB0aGUgZ29vZCks IGFuZCBtb3JlIHRvIHRoZSBwb2ludCB5b3Ugd2lsbCBub3QgY2FsbApAY29tbWFuZHthY2xvY2Fs fSBkaXJlY3RseSBhbnltb3JlLgoKRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGlyZC1wYXJ0eSBwYWNr YWdlcyBzaG91bGQgY29udGludWUgdG8gaW5zdGFsbApwdWJsaWMgbWFjcm9zIGludG8gQGZpbGV7 L3Vzci9zaGFyZS9hY2xvY2FsL30uICBJZiBAY29tbWFuZHthY2xvY2FsfQppcyByZXBsYWNlZCBi eSBhbm90aGVyIHRvb2wgaXQgbWlnaHQgbWFrZSBzZW5zZSB0byByZW5hbWUgdGhlCmRpcmVjdG9y eSwgYnV0IHN1cHBvcnRpbmcgQGZpbGV7L3Vzci9zaGFyZS9hY2xvY2FsL30gZm9yIGJhY2t3YXJk CmNvbXBhdGliaWxpdHkgc2hvdWxkIGJlIGZlYXNpYmxlLCBwcm92aWRlZCBhbGwgbWFjcm9zIGFy ZSBwcm9wZXJseQp3cml0dGVuIChAcHhyZWZ7RXh0ZW5kaW5nIGFjbG9jYWx9KS4KCkBub2RlIE1h Y3JvcwpAc2VjdGlvbiBBdXRvY29uZiBtYWNyb3Mgc3VwcGxpZWQgd2l0aCBBdXRvbWFrZQoKQXV0 b21ha2Ugc2hpcHMgd2l0aCBzZXZlcmFsIEF1dG9jb25mIG1hY3JvcyB0aGF0IHlvdSBjYW4gdXNl IGZyb20geW91cgpAZmlsZXtjb25maWd1cmUuYWN9LiAgV2hlbiB5b3UgdXNlIG9uZSBvZiB0aGVt IGl0IHdpbGwgYmUgaW5jbHVkZWQgYnkKQGNvbW1hbmR7YWNsb2NhbH0gaW4gQGZpbGV7YWNsb2Nh bC5tNH0uCgpAbWVudQoqIFB1YmxpYyBNYWNyb3M6OiAgICAgICAgICAgICAgIE1hY3JvcyB0aGF0 IHlvdSBjYW4gdXNlLgoqIE9ic29sZXRlIE1hY3Jvczo6ICAgICAgICAgICAgIE1hY3JvcyB0aGF0 IHdpbGwgc29vbiBiZSByZW1vdmVkLgoqIFByaXZhdGUgTWFjcm9zOjogICAgICAgICAgICAgIE1h Y3JvcyB0aGF0IHlvdSBzaG91bGQgbm90IHVzZS4KQGVuZCBtZW51CgpAYyBjb25zaWRlciBnZW5l cmF0aW5nIHRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgYXV0b21hdGljYWxseSBmcm9tIG00IGZp bGVzLgoKQG5vZGUgUHVibGljIE1hY3JvcwpAc3Vic2VjdGlvbiBQdWJsaWMgTWFjcm9zCgpAdGFi bGUgQGNvZGUKCkBpdGVtIEFNX0lOSVRfQVVUT01BS0UoW0B2YXJ7b3B0aW9uc31dKQpAYWNpbmRl eCBBTV9JTklUX0FVVE9NQUtFClJ1bnMgbWFueSBtYWNyb3MgcmVxdWlyZWQgZm9yIHByb3BlciBv cGVyYXRpb24gb2YgdGhlIGdlbmVyYXRlZCBNYWtlZmlsZXMuCgpAdmluZGV4IEFVVE9NQUtFX09Q VElPTlMKVG9kYXksIEBjb2Rle0FNX0lOSVRfQVVUT01BS0V9IGlzIGNhbGxlZCB3aXRoIGEgc2lu Z2xlIGFyZ3VtZW50OiBhCnNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIEF1dG9tYWtlIG9wdGlvbnMg dGhhdCBzaG91bGQgYmUgYXBwbGllZCB0bwpldmVyeSBAZmlsZXtNYWtlZmlsZS5hbX0gaW4gdGhl IHRyZWUuICBUaGUgZWZmZWN0IGlzIGFzIGlmCmVhY2ggb3B0aW9uIHdlcmUgbGlzdGVkIGluIEBj b2Rle0FVVE9NQUtFX09QVElPTlN9IChAcHhyZWZ7T3B0aW9uc30pLgoKQGFjaW5kZXggQUNfSU5J VApUaGlzIG1hY3JvIGNhbiBhbHNvIGJlIGNhbGxlZCBpbiBhbm90aGVyLCBAZW1waHtkZXByZWNh dGVkfSBmb3JtOgpAY29kZXtBTV9JTklUX0FVVE9NQUtFKFBBQ0tBR0UsIFZFUlNJT04sIFtOTy1E RUZJTkVdKX0uICBJbiB0aGlzIGZvcm0sCnRoZXJlIGFyZSB0d28gcmVxdWlyZWQgYXJndW1lbnRz OiB0aGUgcGFja2FnZSBhbmQgdGhlIHZlcnNpb24gbnVtYmVyLgpUaGlzIHVzYWdlIGlzIG1vc3Rs eSBvYnNvbGV0ZSBiZWNhdXNlIHRoZSBAdmFye3BhY2thZ2V9IGFuZCBAdmFye3ZlcnNpb259CmNh biBiZSBvYnRhaW5lZCBmcm9tIEF1dG9jb25mJ3MgQGNvZGV7QUNfSU5JVH0gbWFjcm8uICBIb3dl dmVyLApkaWZmZXJlbnRseSBmcm9tIHdoYXQgaGFwcGVucyBmb3IgQGNvZGV7QUNfSU5JVH0gaW52 b2NhdGlvbnMsIHRoaXMKQGNvZGV7QU1fSU5JVF9BVVRPTUFLRX0gaW52b2NhdGlvbiBzdXBwb3J0 cyBzaGVsbCB2YXJpYWJsZXMnIGV4cGFuc2lvbnMKaW4gdGhlIEBjb2Rle1BBQ0tBR0V9IGFuZCBA Y29kZXtWRVJTSU9OfSBhcmd1bWVudHMgKHdoaWNoIG90aGVyd2lzZQpkZWZhdWx0cywgcmVzcGVj dGl2ZWx5LCB0byB0aGUgQGNvZGV7UEFDS0FHRV9UQVJOQU1FfSBhbmQKQGNvZGV7UEFDS0FHRV9W RVJTSU9OfSBkZWZpbmVkIHZpYSB0aGUgQGNvZGV7QUNfSU5JVH0gaW52b2NhdGlvbjsKQHB4cmVm e0FDX0lOSVQsICwgVGhlIEBjb2Rle0FDX0lOSVR9IG1hY3JvLCBhdXRvY29uZiwgVGhlIEF1dG9j b25mIE1hbnVhbH0pOwphbmQgdGhpcyBjYW4gc3RpbGwgYmUgdXNlZnVsIGluIHNvbWUgc2VsZWN0 ZWQgc2l0dWF0aW9ucy4KT3VyIGhvcGUgaXMgdGhhdCBmdXR1cmUgQXV0b2NvbmYgdmVyc2lvbnMg d2lsbCBpbXByb3ZlIHRoZWlyIHN1cHBvcnQKZm9yIHBhY2thZ2UgdmVyc2lvbnMgZGVmaW5lZCBk eW5hbWljYWxseSBhdCBjb25maWd1cmUgcnVudGltZTsgd2hlbgooYW5kIGlmKSB0aGlzIGhhcHBl bnMsIHN1cHBvcnQgZm9yIHRoZSB0d28tYXJncyBAY29kZXtBTV9JTklUX0FVVE9NQUtFfQppbnZv Y2F0aW9uIHdpbGwgbGlrZWx5IGJlIHJlbW92ZWQgZnJvbSBBdXRvbWFrZS4KCkBhbmNob3J7TW9k ZXJuaXplIEFNX0lOSVRfQVVUT01BS0UgaW52b2NhdGlvbn0KSWYgeW91ciBAZmlsZXtjb25maWd1 cmUuYWN9IGhhczoKCkBleGFtcGxlCkFDX0lOSVQoW3NyYy9mb28uY10pCkFNX0lOSVRfQVVUT01B S0UoW211bWJsZV0sIFsxLjVdKQpAZW5kIGV4YW1wbGUKCkBub2luZGVudAp5b3Ugc2hvdWxkIG1v ZGVybml6ZSBpdCBhcyBmb2xsb3dzOgoKQGV4YW1wbGUKQUNfSU5JVChbbXVtYmxlXSwgWzEuNV0p CkFDX0NPTkZJR19TUkNESVIoW3NyYy9mb28uY10pCkFNX0lOSVRfQVVUT01BS0UKQGVuZCBleGFt cGxlCgpOb3RlIHRoYXQgaWYgeW91J3JlIHVwZ3JhZGluZyB5b3VyIEBmaWxle2NvbmZpZ3VyZS5h Y30gZnJvbSBhbiBlYXJsaWVyCnZlcnNpb24gb2YgQXV0b21ha2UsIGl0IGlzIG5vdCBhbHdheXMg Y29ycmVjdCB0byBzaW1wbHkgbW92ZSB0aGUKcGFja2FnZSBhbmQgdmVyc2lvbiBhcmd1bWVudHMg ZnJvbSBAY29kZXtBTV9JTklUX0FVVE9NQUtFfSBkaXJlY3RseSB0bwpAY29kZXtBQ19JTklUfSwg YXMgaW4gdGhlIGV4YW1wbGUgYWJvdmUuICBUaGUgZmlyc3QgYXJndW1lbnQgdG8KQGNvZGV7QUNf SU5JVH0gc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHlvdXIgcGFja2FnZSAoZS5nLiwgQHNhbXB7R05V CkF1dG9tYWtlfSksIG5vdCB0aGUgdGFyYmFsbCBuYW1lIChlLmcuLCBAc2FtcHthdXRvbWFrZX0p IHRoYXQgeW91IHVzZWQKdG8gcGFzcyB0byBAY29kZXtBTV9JTklUX0FVVE9NQUtFfS4gIEF1dG9j b25mIHRyaWVzIHRvIGRlcml2ZSBhCnRhcmJhbGwgbmFtZSBmcm9tIHRoZSBwYWNrYWdlIG5hbWUs IHdoaWNoIHNob3VsZCB3b3JrIGZvciBtb3N0IGJ1dCBub3QKYWxsIHBhY2thZ2UgbmFtZXMuICAo SWYgaXQgZG9lc24ndCB3b3JrIGZvciB5b3VycywgeW91IGNhbiB1c2UgdGhlCmZvdXItYXJndW1l bnQgZm9ybSBvZiBAY29kZXtBQ19JTklUfSB0byBwcm92aWRlIHRoZSB0YXJiYWxsIG5hbWUKZXhw bGljaXRseSkuCgpAY2luZGV4IEBjb2Rle1BBQ0tBR0V9LCBwcmV2ZW50IGRlZmluaXRpb24KQGNp bmRleCBAY29kZXtWRVJTSU9OfSwgcHJldmVudCBkZWZpbml0aW9uCkBvcGluZGV4IG5vLWRlZmlu ZQpCeSBkZWZhdWx0IHRoaXMgbWFjcm8gQGNvZGV7QUNfREVGSU5FfSdzIEBjb2Rle1BBQ0tBR0V9 IGFuZApAY29kZXtWRVJTSU9OfS4gIFRoaXMgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyB0aGUg QG9wdGlvbntuby1kZWZpbmV9Cm9wdGlvbiAoQHB4cmVme0xpc3Qgb2YgQXV0b21ha2Ugb3B0aW9u c30pOgpAZXhhbXBsZQpBTV9JTklUX0FVVE9NQUtFKFtuby1kZWZpbmUgLi4uXSkKQGVuZCBleGFt cGxlCgpAaXRlbSBBTV9PUFRJT05BTF9BVVRPTUFLRShbQHZhcntvcHRpb25zfV0pCkBhY2luZGV4 IEFNX09QVElPTkFMX0FVVE9NQUtFCkBjaW5kZXggT3B0aW9uYWwgQGNvZGV7ZGlzdC19IGFyY2hp dmVzCkBjb21tZW50IGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1 Zz04MTA0MApAdmFye29wdGlvbnN9IGlzIGEgd2hpdGVzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBA Y29kZXtkaXN0LX0gb3B0aW9uCm5hbWVzLCB1c2luZyB0aGUgc2FtZSBzcGVsbGluZ3MgQGNvZGV7 QU1fSU5JVF9BVVRPTUFLRX0gYWNjZXB0czoKQG9wdGlvbntkaXN0LWJ6aXAyfSwgQG9wdGlvbntk aXN0LWJ6aXAzfSwgQG9wdGlvbntkaXN0LXh6fSwKQG9wdGlvbntkaXN0LWx6aXB9LCBAb3B0aW9u e2Rpc3QtenN0ZH0sIEBvcHRpb257ZGlzdC16aXB9LApAb3B0aW9ue2Rpc3Qtc2hhcn0sIGFuZCBA b3B0aW9ue2Rpc3QtdGFyWn0uICBGb3IgZWFjaCwgQHNhbXB7bWFrZQpkaXN0fSBidWlsZHMgdGhl IG1hdGNoaW5nIGFyY2hpdmUgd2hlbiBpdHMgY29tcHJlc3NvciBvciBhcmNoaXZlciBpcwphdmFp bGFibGUgYW5kIHNraXBzIGl0IG90aGVyd2lzZSwgaW5jbHVkaW5nIHdoZW4gYSB0b29sIHByZXNl bnQgYXQKQGNvbW1hbmR7Y29uZmlndXJlfSB0aW1lIGlzIGdvbmUgYnkgQHNhbXB7bWFrZSBkaXN0 fSB0aW1lOyBhIG1pc3NpbmcKbGlzdGVkIHRvb2wgZG9lcyBub3QgbWFrZSBAc2FtcHttYWtlIGRp c3R9IGZhaWwuICBBbiB1bmtub3duCkB2YXJ7b3B0aW9ufSBpcyByZXBvcnRlZCBhcyBhIEBjb2Rl e3N5bnRheH0gd2FybmluZyBhbmQgaWdub3JlZC4KCkBjaW5kZXggbWluaW1hbCBzeXN0ZW0gaW1h Z2VzCkBjaW5kZXggQ0kgaW1hZ2VzLCBtaW5pbWFsCkBjaW5kZXggY29udGFpbmVyIGltYWdlcywg bWluaW1hbApAY2luZGV4IGNvbXByZXNzaW9uIHRvb2xzLCBtYWtpbmcgb3B0aW9uYWwKVGhpcyBp cyBtZWFudCBmb3Igc3lzdGVtcyB0aGF0IGludGVudGlvbmFsbHkgbGFjayBzb21lIGNvbXByZXNz aW9uCnRvb2xzLCBzdWNoIGFzIG1pbmltYWwgY29udGFpbmVyIG9yIENJIGltYWdlcywgd2hlcmUg aW5zdGFsbGluZwpAY29tbWFuZHtiemlwM30sIEBjb21tYW5ke2x6aXB9LCBAY29tbWFuZHt6c3Rk fSwgZXRjLkA6IG9ubHkgc28gdGhhdApAc2FtcHttYWtlIGRpc3RjaGVja30gc3VjY2VlZHMgaXMg dW5kZXNpcmFibGUuICBJdCBhdm9pZHMgb3ZlcnJpZGluZwpAY29kZXtESVNUX1RBUkdFVFN9IG9y IEBjb2Rle0RJU1RfQVJDSElWRVN9IGJ5IGhhbmQuCgpUaGUgbWFjcm8gZG9lcyBub3QgcGFzcyB0 aGUgb3B0aW9ucyB0byBAY29tbWFuZHthdXRvbWFrZX07IGl0IHVzZXMKb25seSB0aGUgQGNvZGV7 ZGlzdGRpcn0gdGFyZ2V0IGFuZCBAY29kZXskKGFtX190YXIpfSwgcHJlc2VudCBzaW5jZQpBdXRv bWFrZSAxLjEwLCBzbyBhbiBvbGRlciBAY29tbWFuZHthdXRvbWFrZX0gdGhhdCBkb2VzIG5vdCBy ZWNvZ25pemUKYW4gb3B0aW9uIChzdWNoIGFzIEBvcHRpb257ZGlzdC1iemlwM30pIGlzIG5vdCBh IHByb2JsZW0uCgpAZXhhbXBsZQpBTV9JTklUX0FVVE9NQUtFKFstV2FsbCBmb3JlaWduIGRpc3Qt YnppcDIgZGlzdC14eiBkaXN0LXppcF0pCkFNX09QVElPTkFMX0FVVE9NQUtFKFtkaXN0LWJ6aXAz XSkKQGVuZCBleGFtcGxlCgpIZXJlIEBmaWxley50YXIuZ3p9LCBAZmlsZXsudGFyLmJ6Mn0sIEBm aWxley50YXIueHp9LCBhbmQgQGZpbGV7LnppcH0KYXJlIGFsd2F5cyBidWlsdCAoYW5kIEBzYW1w e21ha2UgZGlzdH0gZmFpbHMgaWYgdGhlaXIgdG9vbHMgYXJlCm1pc3NpbmcpLCB3aGlsZSBAZmls ZXsudGFyLmJ6M30gaXMgYnVpbHQgb25seSBpZiBAY29tbWFuZHtiemlwM30gaXMKaW5zdGFsbGVk LgoKQSBnaXZlbiBAY29kZXtkaXN0LX0gb3B0aW9uIHNob3VsZCBhcHBlYXIgaW4gQGNvZGV7QU1f SU5JVF9BVVRPTUFLRX0Kb3IgQGNvZGV7QU1fT1BUSU9OQUxfQVVUT01BS0V9LCBub3QgYm90aDsg bGlzdGluZyBpdCBpbgpAY29kZXtBTV9JTklUX0FVVE9NQUtFfSBhbHJlYWR5IG1ha2VzIHRoYXQg Zm9ybWF0IG1hbmRhdG9yeS4gIFRoZQptYWNybyBtYXkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNl OyByZXBlYXRpbmcgYW4gb3B0aW9uIGlzIGEgbm8tb3AuCgpAaXRlbSBBTV9QQVRIX0xJU1BESVIK QGFjaW5kZXggQU1fUEFUSF9MSVNQRElSCkB2aW5kZXggRU1BQ1MKQHZpbmRleCBsaXNwZGlyClNl YXJjaGVzIGZvciB0aGUgcHJvZ3JhbSBAY29tbWFuZHtlbWFjc30sIGFuZCwgaWYgZm91bmQsIHNl dHMgdGhlCm91dHB1dCB2YXJpYWJsZSBAY29kZXtsaXNwZGlyfSB0byB0aGUgZnVsbCBwYXRoIHRv IEVtYWNzJyBzaXRlLWxpc3AKZGlyZWN0b3J5LgoKTm90ZSB0aGF0IHRoaXMgdGVzdCBhc3N1bWVz IHRoZSBAY29tbWFuZHtlbWFjc30gZm91bmQgdG8gYmUgYSB2ZXJzaW9uCnRoYXQgc3VwcG9ydHMg RW1hY3MgTGlzcCAoc3VjaCBhcyBHTlUgRW1hY3Mgb3IgWEVtYWNzKS4gIE90aGVyCmVtYWNzZW4g Y2FuIGNhdXNlIHRoaXMgdGVzdCB0byBoYW5nIChzb21lLCBsaWtlIG9sZCB2ZXJzaW9ucyBvZgpN aWNyb0VtYWNzLCBzdGFydCB1cCBpbiBpbnRlcmFjdGl2ZSBtb2RlLCByZXF1aXJpbmcgQGtiZHtD LXggQy1jfSB0bwpleGl0LCB3aGljaCBpcyBoYXJkbHkgb2J2aW91cyBmb3IgYSBub24tZW1hY3Mg dXNlcikuICBJbiBtb3N0IGNhc2VzLApob3dldmVyLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gdXNl IEBrYmR7Qy1jfSB0byBraWxsIHRoZSB0ZXN0LiAgSW4Kb3JkZXIgdG8gYXZvaWQgcHJvYmxlbXMs IHlvdSBjYW4gc2V0IEBlbnZ7RU1BQ1N9IHRvIGBgbm8nJyBpbiB0aGUKZW52aXJvbm1lbnQsIG9y IHVzZSB0aGUgQG9wdGlvbnstLXdpdGgtbGlzcGRpcn0gb3B0aW9uIHRvCkBjb21tYW5ke2NvbmZp Z3VyZX0gdG8gZXhwbGljaXRseSBzZXQgdGhlIGNvcnJlY3QgcGF0aCAoaWYgeW91J3JlIHN1cmUK eW91IGhhdmUgYW4gQGNvbW1hbmR7ZW1hY3N9IHRoYXQgc3VwcG9ydHMgRW1hY3MgTGlzcCkuCgpA aXRlbSBBTV9QUk9HX0FSKEBvdmFye2FjdC1pZi1mYWlsfSkKQGFjaW5kZXggQU1fUFJPR19BUgpA dmluZGV4IEFSCllvdSBtdXN0IHVzZSB0aGlzIG1hY3JvIHdoZW4geW91IHVzZSB0aGUgYXJjaGl2 ZXIgaW4geW91ciBwcm9qZWN0LCBpZgp5b3Ugd2FudCBzdXBwb3J0IGZvciB1bnVzdWFsIGFyY2hp dmVycyBzdWNoIGFzIE1pY3Jvc29mdCBAY29tbWFuZHtsaWJ9LgpUaGUgY29udGVudCBvZiB0aGUg b3B0aW9uYWwgYXJndW1lbnQgaXMgZXhlY3V0ZWQgaWYgdGhlIGFyY2hpdmVyCmludGVyZmFjZSBp cyBub3QgcmVjb2duaXplZDsgdGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIGFib3J0IGNvbmZpZ3Vy ZQp3aXRoIGFuIGVycm9yIG1lc3NhZ2UuCgpAaXRlbSBBTV9QUk9HX0FTCkBhY2luZGV4IEFNX1BS T0dfQVMKQHZpbmRleCBDQ0FTCkB2aW5kZXggQ0NBU0ZMQUdTClVzZSB0aGlzIG1hY3JvIHdoZW4g eW91IGhhdmUgYXNzZW1ibHkgY29kZSBpbiB5b3VyIHByb2plY3QuICBUaGlzIHdpbGwKY2hvb3Nl IHRoZSBhc3NlbWJsZXIgZm9yIHlvdSAoYnkgZGVmYXVsdCB0aGUgQyBjb21waWxlcikgYW5kIHNl dApAY29kZXtDQ0FTfSwgYW5kIHdpbGwgYWxzbyBzZXQgQGNvZGV7Q0NBU0ZMQUdTfSBpZiByZXF1 aXJlZC4KCkBpdGVtIEFNX1BST0dfQ0NfQ19PCkBhY2luZGV4IEFNX1BST0dfQ0NfQ19PClRoaXMg aXMgYW4gb2Jzb2xlc2NlbnQgbWFjcm8gdGhhdCBjaGVja3MgdGhhdCB0aGUgQyBjb21waWxlciBz dXBwb3J0cwp0aGUgQG9wdGlvbnstY30gYW5kIEBvcHRpb257LW99IG9wdGlvbnMgdG9nZXRoZXIu ICBOb3RlIHRoYXQsIHNpbmNlCkF1dG9tYWtlIDEuMTQsIHRoZSBAY29kZXtBQ19QUk9HX0NDfSBp cyByZXdyaXR0ZW4gdG8gaW1wbGVtZW50IHN1Y2gKY2hlY2tzIGl0c2VsZiwgYW5kIHRodXMgdGhl IGV4cGxpY2l0IHVzZSBvZiBAY29kZXtBTV9QUk9HX0NDX0NfT30Kc2hvdWxkIG5vIGxvbmdlciBi ZSByZXF1aXJlZC4KCkBpdGVtIEFNX1BST0dfTEVYKFtAdmFye29wdGlvbnN9XSkKQGFjaW5kZXgg QU1fUFJPR19MRVgKQGFjaW5kZXggQUNfUFJPR19MRVgKQGNpbmRleCBIUC1VWCAxMCwgQGNvbW1h bmR7bGV4fSBwcm9ibGVtcwpAY2luZGV4IEBjb21tYW5ke2xleH0gcHJvYmxlbXMgd2l0aCBIUC1V WCAxMApMaWtlIEBjb2Rle0FDX1BST0dfTEVYfSAoQHB4cmVme1BhcnRpY3VsYXIgUHJvZ3JhbXMs ICwgUGFydGljdWxhcgpQcm9ncmFtIENoZWNrcywgYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51 YWx9KSwgYnV0IHVzZXMgdGhlCkBjb21tYW5ke21pc3Npbmd9IHNjcmlwdCBvbiBzeXN0ZW1zIHRo YXQgZG8gbm90IGhhdmUgQGNvbW1hbmR7bGV4fS4KSFAtVVggMTAgaXMgb25lIHN1Y2ggc3lzdGVt LiBAdmFye29wdGlvbnN9IGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8KQGNvZGV7QUNfUFJPR19MRVh9 LgoKQGl0ZW0gQU1fUFJPR19HQ0oKQGFjaW5kZXggQU1fUFJPR19HQ0oKQHZpbmRleCBHQ0oKQHZp bmRleCBHQ0pGTEFHUwpUaGlzIG1hY3JvIGZpbmRzIHRoZSBAY29tbWFuZHtnY2p9IHByb2dyYW0g b3IgY2F1c2VzIGFuIGVycm9yLiAgSXQgc2V0cwpAY29kZXtHQ0p9IGFuZCBAY29kZXtHQ0pGTEFH U30uICBAY29tbWFuZHtnY2p9IGlzIHRoZSBKYXZhIGZyb250LWVuZCB0byB0aGUKR05VIENvbXBp bGVyIENvbGxlY3Rpb24uCgpAaXRlbSBBTV9QUk9HX1VQQyhbQHZhcntjb21waWxlci1zZWFyY2gt bGlzdH1dKQpAYWNpbmRleCBBTV9QUk9HX1VQQwpAdmluZGV4IFVQQwpGaW5kIGEgY29tcGlsZXIg Zm9yIFVuaWZpZWQgUGFyYWxsZWwgQyBhbmQgZGVmaW5lIHRoZSBAY29kZXtVUEN9CnZhcmlhYmxl LiAgVGhlIGRlZmF1bHQgQHZhcntjb21waWxlci1zZWFyY2gtbGlzdH0gaXMgQHNhbXB7dXBjYyB1 cGN9LgpUaGlzIG1hY3JvIHdpbGwgYWJvcnQgQGNvbW1hbmR7Y29uZmlndXJlfSBpZiBubyBVbmlm aWVkIFBhcmFsbGVsIEMKY29tcGlsZXIgaXMgZm91bmQuCgpAaXRlbSBBTV9NSVNTSU5HX1BST0co QHZhcntuYW1lfSwgQHZhcntwcm9ncmFtfSkKQGFjaW5kZXggQU1fTUlTU0lOR19QUk9HCkB2aW5k ZXggTUlTU0lORwpGaW5kIGEgbWFpbnRhaW5lciB0b29sIEB2YXJ7cHJvZ3JhbX0gYW5kIGRlZmlu ZSB0aGUgQHZhcntuYW1lfQplbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIGl0cyBsb2NhdGlvbi4g IElmIEB2YXJ7cHJvZ3JhbX0gaXMgbm90CmRldGVjdGVkLCB0aGVuIEB2YXJ7bmFtZX0gd2lsbCBp bnN0ZWFkIGludm9rZSB0aGUgQGNvbW1hbmR7bWlzc2luZ30Kc2NyaXB0LCBpbiBvcmRlciB0byBn aXZlIHVzZWZ1bCBhZHZpY2UgdG8gdGhlIHVzZXIgYWJvdXQgdGhlIG1pc3NpbmcKbWFpbnRhaW5l ciB0b29sLiAgQHhyZWZ7bWFpbnRhaW5lci1tb2RlfSwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24g d2hlbgp0aGUgQGNvbW1hbmR7bWlzc2luZ30gc2NyaXB0IGlzIGFwcHJvcHJpYXRlLgoKQGl0ZW0g QU1fU0lMRU5UX1JVTEVTCkBhY2luZGV4IEFNX1NJTEVOVF9SVUxFUwpDb250cm9sIHRoZSBtYWNo aW5lcnkgZm9yIGxlc3MgdmVyYm9zZSBidWlsZCBvdXRwdXQKKEBweHJlZntBdXRvbWFrZSBTaWxl bnQgUnVsZXN9KS4KCkBpdGVtIEFNX1dJVEhfRE1BTExPQwpAYWNpbmRleCBBTV9XSVRIX0RNQUxM T0MKQGNpbmRleCBAY29tbWFuZHtkbWFsbG9jfSwgc3VwcG9ydCBmb3IKQHZpbmRleCBXSVRIX0RN QUxMT0MKQG9waW5kZXggLS13aXRoLWRtYWxsb2MKQWRkIHN1cHBvcnQgZm9yIHRoZSBAdXJlZnto dHRwczovL2RtYWxsb2MuY29tLywgRG1hbGxvYyBwYWNrYWdlfS4gIElmCnRoZSB1c2VyIHJ1bnMg QGNvbW1hbmR7Y29uZmlndXJlfSB3aXRoIEBvcHRpb257LS13aXRoLWRtYWxsb2N9LCB0aGVuCmRl ZmluZSBAY29kZXtXSVRIX0RNQUxMT0N9IGFuZCBhZGQgQG9wdGlvbnstbGRtYWxsb2N9IHRvIEBj b2Rle0xJQlN9LgoKQGVuZCB0YWJsZQoKCkBub2RlIE9ic29sZXRlIE1hY3JvcwpAc3Vic2VjdGlv biBPYnNvbGV0ZSBNYWNyb3MKQGNpbmRleCBvYnNvbGV0ZSBtYWNyb3MKQGNpbmRleCBhdXRvdXBk YXRlCgpBbHRob3VnaCB1c2luZyBzb21lIG9mIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHdhcyByZXF1 aXJlZCBpbiBwYXN0CnJlbGVhc2VzLCB5b3Ugc2hvdWxkIG5vdCB1c2UgYW55IG9mIHRoZW0gaW4g bmV3IGNvZGUuICBAZW1waHtBbGwKdGhlc2UgbWFjcm9zIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUg bmV4dCBtYWpvciBBdXRvbWFrZSB2ZXJzaW9ufTsKaWYgeW91IGFyZSBzdGlsbCB1c2luZyB0aGVt LCBydW5uaW5nIEBjb21tYW5ke2F1dG91cGRhdGV9IHNob3VsZAphZGp1c3QgeW91ciBAZmlsZXtj b25maWd1cmUuYWN9IGF1dG9tYXRpY2FsbHkgKEBweHJlZnthdXRvdXBkYXRlCkludm9jYXRpb24s ICwgVXNpbmcgQGNvbW1hbmR7YXV0b3VwZGF0ZX0gdG8gTW9kZXJuaXplCkBmaWxle2NvbmZpZ3Vy ZS5hY30sIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSkuCkBlbXBoe0RvIGl0IE5PVyF9 CgpAdGFibGUgQGNvZGUKCkBpdGVtIEFNX1BST0dfTUtESVJfUApAYWNpbmRleCBBTV9QUk9HX01L RElSX1AKQGNpbmRleCBAY29kZXtta2RpciAtcH0sIG1hY3JvIGNoZWNrCkB2aW5kZXggTUtESVJf UApAdmluZGV4IG1rZGlyX3AKCkZyb20gQXV0b21ha2UgMS44IHRvIDEuOS42IHRoaXMgbWFjcm8g dXNlZCB0byBkZWZpbmUgdGhlIG91dHB1dAp2YXJpYWJsZSBAY29kZXtta2Rpcl9wfSB0byBvbmUg b2YgQGNvZGV7bWtkaXIgLXB9LCBAY29kZXtpbnN0YWxsLXNoCi1kfSwgb3IgQGNvZGV7bWtpbnN0 YWxsZGlyc30uCgpOb3dhZGF5cyBBdXRvY29uZiBwcm92aWRlcyBhIHNpbWlsYXIgZnVuY3Rpb25h bGl0eSB3aXRoCkBjb2Rle0FDX1BST0dfTUtESVJfUH0gKEBweHJlZntQYXJ0aWN1bGFyIFByb2dy YW1zLCAsIFBhcnRpY3VsYXIKUHJvZ3JhbSBDaGVja3MsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYg TWFudWFsfSksIGhvd2V2ZXIgdGhpcyBkZWZpbmVzCnRoZSBvdXRwdXQgdmFyaWFibGUgQGNvZGV7 TUtESVJfUH0gaW5zdGVhZC4gIEluIGNhc2UgeW91IGFyZSBzdGlsbAp1c2luZyB0aGUgQGNvZGV7 QU1fUFJPR19NS0RJUl9QfSBtYWNybyBpbiB5b3VyIEBmaWxle2NvbmZpZ3VyZS5hY30sCm9yIGl0 cyBwcm92aWRlZCB2YXJpYWJsZSBAY29kZXskKG1rZGlyX3ApfSBpbiB5b3VyIEBmaWxle01ha2Vm aWxlLmFtfSwKeW91IGFyZSBhZHZpc2VkIHRvIHN3aXRjaCBBU0FQIHRvIHRoZSBtb3JlIG1vZGVy biBBdXRvY29uZi1wcm92aWRlZAppbnRlcmZhY2UgaW5zdGVhZDsgYm90aCB0aGUgbWFjcm8gYW5k IHRoZSB2YXJpYWJsZSBtaWdodCBiZSByZW1vdmVkCmluIGEgZnV0dXJlIG1ham9yIEF1dG9tYWtl IHJlbGVhc2UuCgpAZW5kIHRhYmxlCgoKQG5vZGUgUHJpdmF0ZSBNYWNyb3MKQHN1YnNlY3Rpb24g UHJpdmF0ZSBNYWNyb3MKClRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSBwcml2YXRlIG1hY3JvcyB5 b3Ugc2hvdWxkIG5vdCBjYWxsIGRpcmVjdGx5LgpUaGV5IGFyZSBjYWxsZWQgYnkgdGhlIG90aGVy IHB1YmxpYyBtYWNyb3Mgd2hlbiBhcHByb3ByaWF0ZS4gIERvIG5vdApyZWx5IG9uIHRoZW0sIGFz IHRoZXkgbWlnaHQgYmUgY2hhbmdlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiAgQ29uc2lkZXIKdGhl bSBhcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzOyBvciBiZXR0ZXIsIGRvIG5vdCBjb25zaWRlciB0 aGVtIGF0IGFsbDoKc2tpcCB0aGlzIHNlY3Rpb24hCgpAZnRhYmxlIEBjb2RlCkBpdGVtIF9BTV9E RVBFTkRFTkNJRVMKQGl0ZW14IEFNX1NFVF9ERVBESVIKQGl0ZW14IEFNX0RFUF9UUkFDSwpAaXRl bXggQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFMKVGhlc2UgbWFjcm9zIGFyZSB1c2VkIHRv IGltcGxlbWVudCBBdXRvbWFrZSdzIGF1dG9tYXRpYyBkZXBlbmRlbmN5CnRyYWNraW5nIHNjaGVt ZS4gIFRoZXkgYXJlIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IEF1dG9tYWtlIHdoZW4KcmVxdWly ZWQsIGFuZCB0aGVyZSBzaG91bGQgYmUgbm8gbmVlZCB0byBpbnZva2UgdGhlbSBtYW51YWxseS4K CkBpdGVtIEFNX01BS0VfSU5DTFVERQpUaGlzIG1hY3JvIGlzIHVzZWQgdG8gZGlzY292ZXIgaG93 IHRoZSB1c2VyJ3MgQGNvbW1hbmR7bWFrZX0gaGFuZGxlcwpAY29kZXtpbmNsdWRlfSBzdGF0ZW1l bnRzLiAgVGhpcyBtYWNybyBpcyBhdXRvbWF0aWNhbGx5IGludm9rZWQgd2hlbgpuZWVkZWQ7IHRo ZXJlIHNob3VsZCBiZSBubyBuZWVkIHRvIGludm9rZSBpdCBtYW51YWxseS4KCkBpdGVtIEFNX1BS T0dfSU5TVEFMTF9TVFJJUApUaGlzIGlzIHVzZWQgdG8gZmluZCBhIHZlcnNpb24gb2YgQGNvZGV7 aW5zdGFsbH0gdGhhdCBjYW4gYmUgdXNlZCB0bwpzdHJpcCBhIHByb2dyYW0gYXQgaW5zdGFsbGF0 aW9uIHRpbWUuICBUaGlzIG1hY3JvIGlzIGF1dG9tYXRpY2FsbHkKaW5jbHVkZWQgd2hlbiByZXF1 aXJlZC4KCkBpdGVtIEFNX1NBTklUWV9DSEVDSwpUaGlzIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhh dCBhIGZpbGUgY3JlYXRlZCBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5IGlzCm5ld2VyIHRoYW4gYSBm aWxlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LiAgVGhpcyBjYW4gZmFpbCBvbiBzeXN0ZW1zCndo ZXJlIHRoZSBjbG9jayBpcyBzZXQgaW5jb3JyZWN0bHkuICBUaGlzIG1hY3JvIGlzIGF1dG9tYXRp Y2FsbHkgcnVuCmZyb20gQGNvZGV7QU1fSU5JVF9BVVRPTUFLRX0uCgpAZW5kIGZ0YWJsZQoKCkBu b2RlIERpcmVjdG9yaWVzCkBjaGFwdGVyIERpcmVjdG9yaWVzCgpGb3Igc2ltcGxlIHByb2plY3Rz IHRoYXQgZGlzdHJpYnV0ZSBhbGwgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Cml0IGlzIGVu b3VnaCB0byBoYXZlIGEgc2luZ2xlIEBmaWxle01ha2VmaWxlLmFtfSB0aGF0IGJ1aWxkcwpldmVy eXRoaW5nIGluIHBsYWNlLgoKSW4gbGFyZ2VyIHByb2plY3RzLCBpdCBpcyBjb21tb24gdG8gb3Jn YW5pemUgZmlsZXMgaW4gZGlmZmVyZW50CmRpcmVjdG9yaWVzLCBpbiBhIHRyZWUuICBGb3IgZXhh bXBsZSwgdGhlcmUgY291bGQgYmUgYSBkaXJlY3RvcnkKZm9yIHRoZSBwcm9ncmFtJ3Mgc291cmNl LCBvbmUgZm9yIHRoZSB0ZXN0c3VpdGUsIGFuZCBvbmUgZm9yIHRoZQpkb2N1bWVudGF0aW9uOyBv ciwgZm9yIHZlcnkgbGFyZ2UgcHJvamVjdHMsIHRoZXJlIGNvdWxkIGJlIG9uZQpkaXJlY3Rvcnkg cGVyIHByb2dyYW0sIHBlciBsaWJyYXJ5IG9yIHBlciBtb2R1bGUuCgpUaGUgdHJhZGl0aW9uYWwg YXBwcm9hY2ggaXMgdG8gYnVpbGQgdGhlc2Ugc3ViZGlyZWN0b3JpZXMgcmVjdXJzaXZlbHksCmVt cGxveWluZyBAZW1waHttYWtlIHJlY3Vyc2lvbn06IGVhY2ggZGlyZWN0b3J5IGNvbnRhaW5zIGl0 cwpvd24gQGZpbGV7TWFrZWZpbGV9LCBhbmQgd2hlbiBAY29tbWFuZHttYWtlfSBpcyBydW4gZnJv bSB0aGUgdG9wLWxldmVsCmRpcmVjdG9yeSwgaXQgZW50ZXJzIGVhY2ggc3ViZGlyZWN0b3J5IGlu IHR1cm4sIGFuZCBpbnZva2VzIHRoZXJlIGEKbmV3IEBjb21tYW5ke21ha2V9IGluc3RhbmNlIHRv IGJ1aWxkIHRoZSBkaXJlY3RvcnkncyBjb250ZW50cy4KCkJlY2F1c2UgdGhpcyBhcHByb2FjaCBp cyB2ZXJ5IHdpZGVzcHJlYWQsIEF1dG9tYWtlIG9mZmVycyBidWlsdC1pbgpzdXBwb3J0IGZvciBp dC4gIEhvd2V2ZXIsIGl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHRoZSB1c2Ugb2YgbWFrZQpyZWN1 cnNpb24gaGFzIGl0cyBvd24gc2VyaW91cyBpc3N1ZXMgYW5kIGRyYXdiYWNrcywgYW5kIHRoYXQg aXQncwp3ZWxsIHBvc3NpYmxlIHRvIGhhdmUgcGFja2FnZXMgd2l0aCBhIG11bHRpIGRpcmVjdG9y eSBsYXlvdXQgdGhhdAptYWtlIGxpdHRsZSBvciBubyB1c2Ugb2Ygc3VjaCByZWN1cnNpb24gKGV4 YW1wbGVzIG9mIHN1Y2ggcGFja2FnZXMKYXJlIEdOVSBCaXNvbiBhbmQgR05VIEF1dG9tYWtlIGl0 c2VsZik7IHNlZSBhbHNvIHRoZSBAcmVme0FsdGVybmF0aXZlfQpzZWN0aW9uIGJlbG93LgoKQG1l bnUKKiBTdWJkaXJlY3Rvcmllczo6ICAgICAgICAgICAgICBCdWlsZGluZyBzdWJkaXJlY3Rvcmll cyByZWN1cnNpdmVseQoqIENvbmRpdGlvbmFsIFN1YmRpcmVjdG9yaWVzOjogIENvbmRpdGlvbmFs bHkgbm90IGJ1aWxkaW5nIGRpcmVjdG9yaWVzCiogQWx0ZXJuYXRpdmU6OiAgICAgICAgICAgICAg ICAgU3ViZGlyZWN0b3JpZXMgd2l0aG91dCByZWN1cnNpb24KKiBTdWJwYWNrYWdlczo6ICAgICAg ICAgICAgICAgICBOZXN0aW5nIHBhY2thZ2VzCkBlbmQgbWVudQoKQG5vZGUgU3ViZGlyZWN0b3Jp ZXMKQHNlY3Rpb24gUmVjdXJzaW5nIHN1YmRpcmVjdG9yaWVzCgpAY2luZGV4IEBjb2Rle1NVQkRJ UlN9LCBleHBsYWluZWQKCkluIHBhY2thZ2VzIHVzaW5nIG1ha2UgcmVjdXJzaW9uLCB0aGUgdG9w IGxldmVsIEBmaWxle01ha2VmaWxlLmFtfSBtdXN0CnRlbGwgQXV0b21ha2Ugd2hpY2ggc3ViZGly ZWN0b3JpZXMgYXJlIHRvIGJlIGJ1aWx0LiAgVGhpcyBpcyBkb25lIHZpYQp0aGUgQGNvZGV7U1VC RElSU30gdmFyaWFibGUuCkB2aW5kZXggU1VCRElSUwoKVGhlIEBjb2Rle1NVQkRJUlN9IHZhcmlh YmxlIGhvbGRzIGEgbGlzdCBvZiBzdWJkaXJlY3RvcmllcyBpbiB3aGljaApidWlsZGluZyBvZiB2 YXJpb3VzIHNvcnRzIGNhbiBvY2N1ci4gIFRoZSBydWxlcyBmb3IgbWFueSB0YXJnZXRzCihlLmcu LCBAY29kZXthbGx9KSBpbiB0aGUgZ2VuZXJhdGVkIEBmaWxle01ha2VmaWxlfSB3aWxsIHJ1biBj b21tYW5kcwpib3RoIGxvY2FsbHkgYW5kIGluIGFsbCBzcGVjaWZpZWQgc3ViZGlyZWN0b3JpZXMu ICBOb3RlIHRoYXQgdGhlCmRpcmVjdG9yaWVzIGxpc3RlZCBpbiBAY29kZXtTVUJESVJTfSBhcmUg bm90IHJlcXVpcmVkIHRvIGNvbnRhaW4KQGZpbGV7TWFrZWZpbGUuYW19czsgb25seSBAZmlsZXtN YWtlZmlsZX1zIChhZnRlciBjb25maWd1cmF0aW9uKS4KVGhpcyBhbGxvd3MgaW5jbHVzaW9uIG9m IGxpYnJhcmllcyBmcm9tIHBhY2thZ2VzIHRoYXQgZG8gbm90IHVzZQpBdXRvbWFrZSAoc3VjaCBh cyBAY29kZXtnZXR0ZXh0fTsgc2VlIGFsc28gQHJlZntUaGlyZC1QYXJ0eQpNYWtlZmlsZXN9KS4K CkluIHBhY2thZ2VzIHRoYXQgdXNlIHN1YmRpcmVjdG9yaWVzLCB0aGUgdG9wLWxldmVsIEBmaWxl e01ha2VmaWxlLmFtfSBpcwpvZnRlbiB2ZXJ5IHNob3J0LiAgRm9yIGluc3RhbmNlLCBoZXJlIGlz IHRoZSBAZmlsZXtNYWtlZmlsZS5hbX0gZnJvbSB0aGUKR05VIEhlbGxvIGRpc3RyaWJ1dGlvbjoK CkBleGFtcGxlCkVYVFJBX0RJU1QgPSBCVUdTIENoYW5nZUxvZy5PIFJFQURNRS1hbHBoYQpTVUJE SVJTID0gZG9jIGludGwgcG8gc3JjIHRlc3RzCkBlbmQgZXhhbXBsZQoKV2hlbiBBdXRvbWFrZSBp bnZva2VzIEBjb21tYW5ke21ha2V9IGluIGEgc3ViZGlyZWN0b3J5LCBpdCB1c2VzIHRoZSB2YWx1 ZQpvZiB0aGUgQGNvZGV7TUFLRX0gdmFyaWFibGUuICBJdCBwYXNzZXMgdGhlIHZhbHVlIG9mIHRo ZSB2YXJpYWJsZQpAY29kZXtBTV9NQUtFRkxBR1N9IHRvIHRoZSBAY29tbWFuZHttYWtlfSBpbnZv Y2F0aW9uOyB0aGlzIGNhbiBiZSBzZXQgaW4KQGZpbGV7TWFrZWZpbGUuYW19IGlmIHRoZXJlIGFy ZSBmbGFncyB5b3UgbXVzdCBhbHdheXMgcGFzcyB0bwpAY29tbWFuZHttYWtlfS4KQHZpbmRleCBN QUtFCkB2aW5kZXggQU1fTUFLRUZMQUdTCgpUaGUgZGlyZWN0b3JpZXMgbWVudGlvbmVkIGluIEBj b2Rle1NVQkRJUlN9IGFyZSB1c3VhbGx5IGRpcmVjdApjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBk aXJlY3RvcnksIGVhY2ggc3ViZGlyZWN0b3J5IGNvbnRhaW5pbmcgaXRzCm93biBAZmlsZXtNYWtl ZmlsZS5hbX0gd2l0aCBhIEBjb2Rle1NVQkRJUlN9IHBvaW50aW5nIHRvIGRlZXBlcgpzdWJkaXJl Y3Rvcmllcy4gIEF1dG9tYWtlIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBwYWNrYWdlcyBvZgph cmJpdHJhcnkgZGVwdGggdGhpcyB3YXkuCgpCeSBkZWZhdWx0LCBBdXRvbWFrZSBnZW5lcmF0ZXMg QGZpbGV7TWFrZWZpbGVzfSB0aGF0IHdvcmsgZGVwdGgtZmlyc3QKaW4gcG9zdGZpeCBvcmRlcjog dGhlIHN1YmRpcmVjdG9yaWVzIGFyZSBidWlsdCBiZWZvcmUgdGhlIGN1cnJlbnQKZGlyZWN0b3J5 LiAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoaXMgb3JkZXJpbmcuICBZb3Ug Y2FuCmRvIHRoaXMgYnkgcHV0dGluZyBAc2FtcHsufSBpbnRvIEBjb2Rle1NVQkRJUlN9LiAgRm9y IGluc3RhbmNlLApwdXR0aW5nIEBzYW1wey59IGZpcnN0IHdpbGwgY2F1c2UgYSBwcmVmaXggb3Jk ZXJpbmcgb2YKZGlyZWN0b3JpZXMuCgpVc2luZwoKQGV4YW1wbGUKU1VCRElSUyA9IGxpYiBzcmMg LiB0ZXN0CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CndpbGwgY2F1c2UgQGZpbGV7bGliL30gdG8g YmUgYnVpbHQgYmVmb3JlIEBmaWxle3NyYy99LCB0aGVuIHRoZQpjdXJyZW50IGRpcmVjdG9yeSB3 aWxsIGJlIGJ1aWx0LCBmaW5hbGx5IHRoZSBAZmlsZXt0ZXN0L30gZGlyZWN0b3J5CndpbGwgYmUg YnVpbHQuICBJdCBpcyBjdXN0b21hcnkgdG8gYXJyYW5nZSB0ZXN0IGRpcmVjdG9yaWVzIHRvIGJl CmJ1aWx0IGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSBzaW5jZSB0aGV5IGFyZSBtZWFudCB0byB0ZXN0 IHdoYXQgaGFzCmJlZW4gY29uc3RydWN0ZWQuCgpJbiBhZGRpdGlvbiB0byB0aGUgYnVpbHQtaW4g cmVjdXJzaXZlIHRhcmdldHMgZGVmaW5lZCBieSBBdXRvbWFrZQooQGNvZGV7YWxsfSwgQGNvZGV7 Y2hlY2t9LCBldGMuKSwgdGhlIGRldmVsb3BlciBjYW4gYWxzbyBkZWZpbmUgaGlzCm93biByZWN1 cnNpdmUgdGFyZ2V0cy4gIFRoYXQgaXMgZG9uZSBieSBwYXNzaW5nIHRoZSBuYW1lcyBvZiBzdWNo CnRhcmdldHMgYXMgYXJndW1lbnRzIHRvIHRoZSBNNCBtYWNybyBAY29kZXtBTV9FWFRSQV9SRUNV UlNJVkVfVEFSR0VUU30KaW4gQGZpbGV7Y29uZmlndXJlLmFjfS4gIEF1dG9tYWtlIGdlbmVyYXRl cyBydWxlcyB0byBoYW5kbGUgdGhlCnJlY3Vyc2lvbiBmb3Igc3VjaCB0YXJnZXRzOyBhbmQgdGhl IGRldmVsb3BlciBjYW4gZGVmaW5lIHJlYWwgYWN0aW9ucwpmb3IgdGhlbSBieSBkZWZpbmluZyBj b3JyZXNwb25kaW5nIEBjb2Rley1sb2NhbH0gdGFyZ2V0cy4KCkBleGFtcGxlCiUgQGtiZHtjYXQg Y29uZmlndXJlLmFjfQpBQ19JTklUKFtwa2ctbmFtZV0sIFsxLjBdKQpBTV9JTklUX0FVVE9NQUtF CkFNX0VYVFJBX1JFQ1VSU0lWRV9UQVJHRVRTKFtmb29dKQpBQ19DT05GSUdfRklMRVMoW01ha2Vm aWxlIHN1Yi9NYWtlZmlsZSBzdWIvc3JjL01ha2VmaWxlXSkKQUNfT1VUUFVUCiUgQGtiZHtjYXQg TWFrZWZpbGUuYW19ClNVQkRJUlMgPSBzdWIKZm9vLWxvY2FsOgogICAgICAgIEBAZWNobyBUaGlz IHdpbGwgYmUgcnVuIGJ5ICJtYWtlIGZvbyIuCiUgQGtiZHtjYXQgc3ViL01ha2VmaWxlLmFtfQpT VUJESVJTID0gc3JjCiUgQGtiZHtjYXQgc3ViL3NyYy9NYWtlZmlsZS5hbX0KZm9vLWxvY2FsOgog ICAgICAgIEBAZWNobyBUaGlzIHRvbyB3aWxsIGJlIHJ1biBieSBhICJtYWtlIGZvbyIgaXNzdWVk IGVpdGhlciBpbgogICAgICAgIEBAZWNobyB0aGUgJ3N1Yi9zcmMvJyBkaXJlY3RvcnksIHRoZSAn c3ViLycgZGlyZWN0b3J5LCBvciB0aGUKICAgICAgICBAQGVjaG8gdG9wLWxldmVsIGRpcmVjdG9y eS4KQGVuZCBleGFtcGxlCgpAbm9kZSBDb25kaXRpb25hbCBTdWJkaXJlY3RvcmllcwpAc2VjdGlv biBDb25kaXRpb25hbCBTdWJkaXJlY3RvcmllcwpAY2luZGV4IFN1YmRpcmVjdG9yaWVzLCBidWls ZGluZyBjb25kaXRpb25hbGx5CkBjaW5kZXggQ29uZGl0aW9uYWwgc3ViZGlyZWN0b3JpZXMKQGNp bmRleCBAY29kZXtTVUJESVJTfSwgY29uZGl0aW9uYWwKQGNpbmRleCBDb25kaXRpb25hbCBAY29k ZXtTVUJESVJTfQoKSXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIHRoZSBAY29kZXtTVUJESVJTfSB2 YXJpYWJsZSBjb25kaXRpb25hbGx5IGlmLApsaWtlIGluIHRoZSBjYXNlIG9mIEdOVSBJbmV0dXRp bHMsIHlvdSB3YW50IHRvIG9ubHkgYnVpbGQgYSBzdWJzZXQgb2YKdGhlIGVudGlyZSBwYWNrYWdl LgoKVG8gaWxsdXN0cmF0ZSBob3cgdGhpcyB3b3JrcywgbGV0J3MgYXNzdW1lIHdlIGhhdmUgdHdv IGRpcmVjdG9yaWVzLApAZmlsZXtzcmMvfSBhbmQgQGZpbGV7b3B0L30uICBAZmlsZXtzcmMvfSBz aG91bGQgYWx3YXlzIGJlIGJ1aWx0LCBidXQgd2UKd2FudCB0byBkZWNpZGUgaW4gQGNvbW1hbmR7 Y29uZmlndXJlfSB3aGV0aGVyIEBmaWxle29wdC99IHdpbGwgYmUgYnVpbHQKb3Igbm90LiAgKEZv ciB0aGlzIGV4YW1wbGUgd2Ugd2lsbCBhc3N1bWUgdGhhdCBAZmlsZXtvcHQvfSBzaG91bGQgYmUK YnVpbHQgd2hlbiB0aGUgdmFyaWFibGUgQHNhbXB7JHdhbnRfb3B0fSB3YXMgc2V0IHRvIEBzYW1w e3llc30uKQoKUnVubmluZyBAY29tbWFuZHttYWtlfSBzaG91bGQgdGh1cyByZWN1cnNlIGludG8g QGZpbGV7c3JjL30gYWx3YXlzLCBhbmQKdGhlbiBtYXliZSBpbiBAZmlsZXtvcHQvfS4KCkhvd2V2 ZXIgQHNhbXB7bWFrZSBkaXN0fSBzaG91bGQgYWx3YXlzIHJlY3Vyc2UgaW50byBib3RoIEBmaWxl e3NyYy99CmFuZCBAZmlsZXtvcHQvfSwgYmVjYXVzZSBAZmlsZXtvcHQvfSBzaG91bGQgYmUgZGlz dHJpYnV0ZWQgZXZlbiBpZiBpdAppcyBub3QgbmVlZGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3Vy YXRpb24uICBUaGlzIG1lYW5zCkBmaWxle29wdC9NYWtlZmlsZX0gc2hvdWxkIGJlIGNyZWF0ZWQg QGVtcGh7dW5jb25kaXRpb25hbGx5fS4KClRoZXJlIGFyZSB0d28gd2F5cyB0byBzZXQgdXAgYSBw cm9qZWN0IGxpa2UgdGhpcy4gIFlvdSBjYW4gdXNlIEF1dG9tYWtlCmNvbmRpdGlvbmFscyAoQHB4 cmVme0NvbmRpdGlvbmFsc30pIG9yIHVzZSBBdXRvY29uZiBAY29kZXtBQ19TVUJTVH0KdmFyaWFi bGVzIChAcHhyZWZ7U2V0dGluZyBPdXRwdXQgVmFyaWFibGVzLCAsIFNldHRpbmcgT3V0cHV0ClZh cmlhYmxlcywgYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9KS4gIFVzaW5nIEF1dG9tYWtl CmNvbmRpdGlvbmFscyBpcyB0aGUgcHJlZmVycmVkIHNvbHV0aW9uLiAgQmVmb3JlIHdlIGlsbHVz dHJhdGUgdGhlc2UKdHdvIHBvc3NpYmlsaXRpZXMsIGxldCdzIGludHJvZHVjZSBAY29kZXtESVNU X1NVQkRJUlN9LgoKQG1lbnUKKiBTVUJESVJTIHZzIERJU1RfU1VCRElSUzo6ICAgICBUd28gc2V0 cyBvZiBkaXJlY3RvcmllcwoqIFN1YmRpcmVjdG9yaWVzIHdpdGggQU1fQ09ORElUSU9OQUw6OiAg U3BlY2lmeWluZyBjb25kaXRpb25hbCBzdWJkaXJlY3RvcmllcwoqIFN1YmRpcmVjdG9yaWVzIHdp dGggQUNfU1VCU1Q6OiAgQW5vdGhlciB3YXkgZm9yIGNvbmRpdGlvbmFsIHJlY3Vyc2lvbgoqIFVu Y29uZmlndXJlZCBTdWJkaXJlY3Rvcmllczo6ICBOb3QgZXZlbiBjcmVhdGluZyBhIEBzYW1we01h a2VmaWxlfQpAZW5kIG1lbnUKCkBub2RlIFNVQkRJUlMgdnMgRElTVF9TVUJESVJTCkBzdWJzZWN0 aW9uIEBjb2Rle1NVQkRJUlN9IHZzLkA6IEBjb2Rle0RJU1RfU1VCRElSU30KQGNpbmRleCBAY29k ZXtESVNUX1NVQkRJUlN9LCBleHBsYWluZWQKCkF1dG9tYWtlIGNvbnNpZGVycyB0d28gc2V0cyBv ZiBkaXJlY3RvcmllcywgZGVmaW5lZCBieSB0aGUgdmFyaWFibGVzCkBjb2Rle1NVQkRJUlN9IGFu ZCBAY29kZXtESVNUX1NVQkRJUlN9LgoKQGNvZGV7U1VCRElSU30gY29udGFpbnMgdGhlIHN1YmRp cmVjdG9yaWVzIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeQp0aGF0IG11c3QgYmUgYnVpbHQgKEBw eHJlZntTdWJkaXJlY3Rvcmllc30pLiAgSXQgbXVzdCBiZSBkZWZpbmVkCm1hbnVhbGx5OyBBdXRv bWFrZSB3aWxsIG5ldmVyIGd1ZXNzIGEgZGlyZWN0b3J5IGlzIHRvIGJlIGJ1aWx0LiAgQXMgd2UK d2lsbCBzZWUgaW4gdGhlIG5leHQgdHdvIHNlY3Rpb25zLCBpdCBpcyBwb3NzaWJsZSB0byBkZWZp bmUgaXQKY29uZGl0aW9uYWxseSBzbyB0aGF0IHNvbWUgZGlyZWN0b3J5IHdpbGwgYmUgb21pdHRl ZCBmcm9tIHRoZSBidWlsZC4KCkBjb2Rle0RJU1RfU1VCRElSU30gaXMgdXNlZCBpbiBydWxlcyB0 aGF0IG5lZWQgdG8gcmVjdXJzZSBpbiBhbGwKZGlyZWN0b3JpZXMsIGV2ZW4gdGhvc2UgdGhhdCBo YXZlIGJlZW4gY29uZGl0aW9uYWxseSBsZWZ0IG91dCBvZiB0aGUKYnVpbGQuICBSZWNhbGwgb3Vy IGV4YW1wbGUgd2hlcmUgd2UgbWF5IG5vdCB3YW50IHRvIGJ1aWxkIHN1YmRpcmVjdG9yeQpAZmls ZXtvcHQvfSwgYnV0IHlldCB3ZSB3YW50IHRvIGRpc3RyaWJ1dGUgaXQ/ICBUaGlzIGlzIHdoZXJl CkBjb2Rle0RJU1RfU1VCRElSU30gY29tZXMgaW50byBwbGF5OiBAc2FtcHtvcHR9IG1heSBub3Qg YXBwZWFyIGluCkBjb2Rle1NVQkRJUlN9LCBidXQgaXQgbXVzdCBhcHBlYXIgaW4gQGNvZGV7RElT VF9TVUJESVJTfS4KClByZWNpc2VseSwgQGNvZGV7RElTVF9TVUJESVJTfSBpcyB1c2VkIGJ5IEBz YW1we21ha2UKbWFpbnRhaW5lci1jbGVhbn0sIEBzYW1we21ha2UgZGlzdGNsZWFufSBhbmQgQHNh bXB7bWFrZSBkaXN0fS4gIEFsbApvdGhlciByZWN1cnNpdmUgcnVsZXMgdXNlIEBjb2Rle1NVQkRJ UlN9LgoKSWYgQGNvZGV7U1VCRElSU30gaXMgZGVmaW5lZCBjb25kaXRpb25hbGx5IHVzaW5nIEF1 dG9tYWtlCmNvbmRpdGlvbmFscywgQXV0b21ha2Ugd2lsbCBkZWZpbmUgQGNvZGV7RElTVF9TVUJE SVJTfSBhdXRvbWF0aWNhbGx5CmZyb20gdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBAY29kZXtTVUJE SVJTfSBpbiBhbGwgY29uZGl0aW9ucy4KCklmIEBjb2Rle1NVQkRJUlN9IGNvbnRhaW5zIEBjb2Rl e0FDX1NVQlNUfSB2YXJpYWJsZXMsCkBjb2Rle0RJU1RfU1VCRElSU30gd2lsbCBub3QgYmUgZGVm aW5lZCBjb3JyZWN0bHkgYmVjYXVzZSBBdXRvbWFrZQpkb2VzIG5vdCBrbm93IHRoZSBwb3NzaWJs ZSB2YWx1ZXMgb2YgdGhlc2UgdmFyaWFibGVzLiAgSW4gdGhpcyBjYXNlCkBjb2Rle0RJU1RfU1VC RElSU30gbmVlZHMgdG8gYmUgZGVmaW5lZCBtYW51YWxseS4KCkBub2RlIFN1YmRpcmVjdG9yaWVz IHdpdGggQU1fQ09ORElUSU9OQUwKQHN1YnNlY3Rpb24gU3ViZGlyZWN0b3JpZXMgd2l0aCBAY29k ZXtBTV9DT05ESVRJT05BTH0KQGNpbmRleCBAY29kZXtTVUJESVJTfSBhbmQgQGNvZGV7QU1fQ09O RElUSU9OQUx9CkBjaW5kZXggQGNvZGV7QU1fQ09ORElUSU9OQUx9IGFuZCBAY29kZXtTVUJESVJT fQoKQGMgS2VlcCBpbiBzeW5jIHdpdGggc3ViZGlyLWFtLWNvbmQuc2gKCkBmaWxle2NvbmZpZ3Vy ZX0gc2hvdWxkIG91dHB1dCB0aGUgQGZpbGV7TWFrZWZpbGV9IGZvciBlYWNoIGRpcmVjdG9yeQph bmQgZGVmaW5lIGEgY29uZGl0aW9uIGludG8gd2hpY2ggQGZpbGV7b3B0L30gc2hvdWxkIGJlIGJ1 aWx0LgoKQGV4YW1wbGUKQGRvdHN7fQpBTV9DT05ESVRJT05BTChbQ09ORF9PUFRdLCBbdGVzdCAi JHdhbnRfb3B0IiA9IHllc10pCkFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGUgc3JjL01ha2VmaWxl IG9wdC9NYWtlZmlsZV0pCkBkb3Rze30KQGVuZCBleGFtcGxlCgpUaGVuIEBjb2Rle1NVQkRJUlN9 IGNhbiBiZSBkZWZpbmVkIGluIHRoZSB0b3AtbGV2ZWwgQGZpbGV7TWFrZWZpbGUuYW19CmFzIGZv bGxvd3MuCgpAZXhhbXBsZQppZiBDT05EX09QVAogIE1BWUJFX09QVCA9IG9wdAplbmRpZgpTVUJE SVJTID0gc3JjICQoTUFZQkVfT1BUKQpAZW5kIGV4YW1wbGUKCkFzIHlvdSBjYW4gc2VlLCBydW5u aW5nIEBjb21tYW5ke21ha2V9IHdpbGwgcmlnaHRseSByZWN1cnNlIGludG8KQGZpbGV7c3JjL30g YW5kIG1heWJlIEBmaWxle29wdC99LgoKQHZpbmRleCBESVNUX1NVQkRJUlMKQXMgeW91IGNhbid0 IHNlZSwgcnVubmluZyBAc2FtcHttYWtlIGRpc3R9IHdpbGwgcmVjdXJzZSBpbnRvIGJvdGgKQGZp bGV7c3JjL30gYW5kIEBmaWxle29wdC99IGRpcmVjdG9yaWVzIGJlY2F1c2UgQHNhbXB7bWFrZSBk aXN0fSwgdW5saWtlCkBzYW1we21ha2UgYWxsfSwgZG9lc24ndCB1c2UgdGhlIEBjb2Rle1NVQkRJ UlN9IHZhcmlhYmxlLiAgSXQgdXNlcyB0aGUKQGNvZGV7RElTVF9TVUJESVJTfSB2YXJpYWJsZS4K CkluIHRoaXMgY2FzZSBBdXRvbWFrZSB3aWxsIGRlZmluZSBAc2FtcHtESVNUX1NVQkRJUlMgPSBz cmMgb3B0fQphdXRvbWF0aWNhbGx5IGJlY2F1c2UgaXQga25vd3MgdGhhdCBAY29kZXtNQVlCRV9P UFR9IGNhbiBjb250YWluCkBzYW1we29wdH0gaW4gc29tZSBjb25kaXRpb24uCgpAbm9kZSBTdWJk aXJlY3RvcmllcyB3aXRoIEFDX1NVQlNUCkBzdWJzZWN0aW9uIFN1YmRpcmVjdG9yaWVzIHdpdGgg QGNvZGV7QUNfU1VCU1R9CkBjaW5kZXggQGNvZGV7U1VCRElSU30gYW5kIEBjb2Rle0FDX1NVQlNU fQpAY2luZGV4IEBjb2Rle0FDX1NVQlNUfSBhbmQgQGNvZGV7U1VCRElSU30KCkBjIEtlZXAgaW4g c3luYyB3aXRoIHN1YmRpci1hYy1zdWJzdC5zaAoKQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0byBk ZWZpbmUgQGNvZGV7TUFZQkVfT1BUfSBmcm9tCkBmaWxley4vY29uZmlndXJlfSB1c2luZyBAY29k ZXtBQ19TVUJTVH06CgpAZXhhbXBsZQpAZG90c3t9CmlmIHRlc3QgIiR3YW50X29wdCIgPSB5ZXM7 IHRoZW4KICBNQVlCRV9PUFQ9b3B0CmVsc2UKICBNQVlCRV9PUFQ9CmZpCkFDX1NVQlNUKFtNQVlC RV9PUFRdKQpBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlIHNyYy9NYWtlZmlsZSBvcHQvTWFrZWZp bGVdKQpAZG90c3t9CkBlbmQgZXhhbXBsZQoKSW4gdGhpcyBjYXNlIHRoZSB0b3AtbGV2ZWwgQGZp bGV7TWFrZWZpbGUuYW19IHNob3VsZCBsb29rIGFzIGZvbGxvd3MuCgpAZXhhbXBsZQpTVUJESVJT ID0gc3JjICQoTUFZQkVfT1BUKQpESVNUX1NVQkRJUlMgPSBzcmMgb3B0CkBlbmQgZXhhbXBsZQoK VGhlIGRyYXdiYWNrIGlzIHRoYXQgc2luY2UgQXV0b21ha2UgY2Fubm90IGd1ZXNzIHdoYXQgdGhl IHBvc3NpYmxlCnZhbHVlcyBvZiBAY29kZXtNQVlCRV9PUFR9IGFyZSwgaXQgaXMgbmVjZXNzYXJ5 IHRvIGRlZmluZQpAY29kZXtESVNUX1NVQkRJUlN9LgoKQG5vZGUgVW5jb25maWd1cmVkIFN1YmRp cmVjdG9yaWVzCkBzdWJzZWN0aW9uIFVuY29uZmlndXJlZCBTdWJkaXJlY3RvcmllcwpAY2luZGV4 IFN1YmRpcmVjdG9yaWVzLCBjb25maWd1cmVkIGNvbmRpdGlvbmFsbHkKClRoZSBzZW1hbnRpY3Mg b2YgQGNvZGV7RElTVF9TVUJESVJTfSBhcmUgb2Z0ZW4gbWlzdW5kZXJzdG9vZCBieSBzb21lCnVz ZXJzIHRoYXQgdHJ5IHRvIEBlbXBoe2NvbmZpZ3VyZSBhbmQgYnVpbGR9IHN1YmRpcmVjdG9yaWVz CmNvbmRpdGlvbmFsbHkuICBIZXJlIGJ5IGNvbmZpZ3VyaW5nIHdlIG1lYW4gY3JlYXRpbmcgdGhl CkBmaWxle01ha2VmaWxlfSAoaXQgbWlnaHQgYWxzbyBpbnZvbHZlIHJ1bm5pbmcgYSBuZXN0ZWQK QGNvbW1hbmR7Y29uZmlndXJlfSBzY3JpcHQ6IHRoaXMgaXMgYSBjb3N0bHkgb3BlcmF0aW9uIHRo YXQgZXhwbGFpbnMKd2h5IHBlb3BsZSB3YW50IHRvIGRvIGl0IGNvbmRpdGlvbmFsbHksIGJ1dCBv bmx5IHRoZSBAZmlsZXtNYWtlZmlsZX0KaXMgcmVsZXZhbnQgdG8gdGhlIGRpc2N1c3Npb24pLgoK VGhlIGFib3ZlIGV4YW1wbGVzIGFsbCBhc3N1bWUgdGhhdCBldmVyeSBAZmlsZXtNYWtlZmlsZX0g aXMgY3JlYXRlZCwKZXZlbiBpbiBkaXJlY3RvcmllcyB0aGF0IGFyZSBub3QgZ29pbmcgdG8gYmUg YnVpbHQuICBUaGUgc2ltcGxlIHJlYXNvbgppcyB0aGF0IHdlIHdhbnQgQHNhbXB7bWFrZSBkaXN0 fSB0byBkaXN0cmlidXRlIGV2ZW4gdGhlIGRpcmVjdG9yaWVzCnRoYXQgYXJlIG5vdCBiZWluZyBi dWlsdCAoZS5nLiwgcGxhdGZvcm0tZGVwZW5kZW50IGNvZGUpLCBoZW5jZQpAZmlsZXttYWtlIGRp c3R9IG11c3QgcmVjdXJzZSBpbnRvIHRoZSBzdWJkaXJlY3RvcnksIGhlbmNlIHRoaXMKZGlyZWN0 b3J5IG11c3QgYmUgY29uZmlndXJlZCBhbmQgYXBwZWFyIGluIEBjb2Rle0RJU1RfU1VCRElSU30u CgpCdWlsZGluZyBwYWNrYWdlcyB0aGF0IGRvIG5vdCBjb25maWd1cmUgZXZlcnkgc3ViZGlyZWN0 b3J5IGlzIGEgdHJpY2t5CmJ1c2luZXNzLCBhbmQgd2UgZG8gbm90IHJlY29tbWVuZCBpdCB0byB0 aGUgbm92aWNlIGFzIGl0IGlzIGVhc3kgdG8KcHJvZHVjZSBhbiBpbmNvbXBsZXRlIHRhcmJhbGwg YnkgbWlzdGFrZS4gIFdlIHdpbGwgbm90IGRpc2N1c3MgdGhpcwp0b3BpYyBpbiBkZXB0aCBoZXJl LCB5ZXQgZm9yIHRoZSBhZHZlbnR1cm91cyBoZXJlIGFyZSBhIGZldyBydWxlcyB0bwpyZW1lbWJl ci4KCkBjYXJ0b3VjaGUKQGl0ZW1pemUKQGl0ZW0gQGNvZGV7U1VCRElSU30gc2hvdWxkIGFsd2F5 cyBiZSBhIHN1YnNldCBvZiBAY29kZXtESVNUX1NVQkRJUlN9LgoKSXQgbWFrZXMgbGl0dGxlIHNl bnNlIHRvIGhhdmUgYSBkaXJlY3RvcnkgaW4gQGNvZGV7U1VCRElSU30gdGhhdAppcyBub3QgaW4g QGNvZGV7RElTVF9TVUJESVJTfS4gIFRoaW5rIG9mIHRoZSBmb3JtZXIgYXMgYSB3YXkgdG8gdGVs bAp3aGljaCBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gdGhlIGxhdHRlciBzaG91bGQgYmUgYnVpbHQu CkBpdGVtIEFueSBkaXJlY3RvcnkgbGlzdGVkIGluIEBjb2Rle0RJU1RfU1VCRElSU30gYW5kIEBj b2Rle1NVQkRJUlN9Cm11c3QgYmUgY29uZmlndXJlZC4KClRoYXQgaXMsIHRoZSBAZmlsZXtNYWtl ZmlsZX0gbXVzdCBleGlzdCBvciB0aGUgcmVjdXJzaXZlIEBjb21tYW5ke21ha2V9CnJ1bGVzIHdp bGwgbm90IGJlIGFibGUgdG8gcHJvY2VzcyB0aGUgZGlyZWN0b3J5LgpAaXRlbSBBbnkgY29uZmln dXJlZCBkaXJlY3RvcnkgbXVzdCBiZSBsaXN0ZWQgaW4gQGNvZGV7RElTVF9TVUJESVJTfS4KClRo aXMgaXMgc28gdGhlIGNsZWFuaW5nIHJ1bGVzIHJlbW92ZSB0aGUgZ2VuZXJhdGVkIEBmaWxle01h a2VmaWxlfXMuCkl0IHdvdWxkIGJlIGNvcnJlY3QgdG8gc2VlIEBjb2Rle0RJU1RfU1VCRElSU30g YXMgYSB2YXJpYWJsZSB0aGF0Cmxpc3RzIGFsbCB0aGUgZGlyZWN0b3JpZXMgdGhhdCBoYXZlIGJl ZW4gY29uZmlndXJlZC4KQGVuZCBpdGVtaXplCkBlbmQgY2FydG91Y2hlCgpJbiBvcmRlciB0byBw cmV2ZW50IHJlY3Vyc2lvbiBpbiBzb21lIHVuY29uZmlndXJlZCBkaXJlY3RvcnkgeW91Cm11c3Qg dGhlcmVmb3JlIGVuc3VyZSB0aGF0IHRoaXMgZGlyZWN0b3J5IGRvZXMgbm90IGFwcGVhciBpbgpA Y29kZXtESVNUX1NVQkRJUlN9IChhbmQgQGNvZGV7U1VCRElSU30pLiAgRm9yIGluc3RhbmNlLCBp ZiB5b3UgZGVmaW5lCkBjb2Rle1NVQkRJUlN9IGNvbmRpdGlvbmFsbHkgdXNpbmcgQGNvZGV7QUNf U1VCU1R9IGFuZCBkbyBub3QgZGVmaW5lCkBjb2Rle0RJU1RfU1VCRElSU30gZXhwbGljaXRseSwg aXQgd2lsbCBiZSBkZWZhdWx0IHRvCkBzYW1weyQoU1VCRElSUyl9OyBhbm90aGVyIHBvc3NpYmls aXR5IGlzIHRvIGZvcmNlIEBjb2Rle0RJU1RfU1VCRElSUwo9ICQoU1VCRElSUyl9LgoKT2YgY291 cnNlLCBkaXJlY3RvcmllcyB0aGF0IGFyZSBvbWl0dGVkIGZyb20gQGNvZGV7RElTVF9TVUJESVJT fSB3aWxsCm5vdCBiZSBkaXN0cmlidXRlZCB1bmxlc3MgeW91IG1ha2Ugb3RoZXIgYXJyYW5nZW1l bnRzIGZvciB0aGlzIHRvCmhhcHBlbiAoZm9yIGluc3RhbmNlLCBhbHdheXMgcnVubmluZyBAc2Ft cHttYWtlIGRpc3R9IGluIGEKY29uZmlndXJhdGlvbiB3aGVyZSBhbGwgZGlyZWN0b3JpZXMgYXJl IGtub3duIHRvIGFwcGVhciBpbgpAY29kZXtESVNUX1NVQkRJUlN9OyBvciB3cml0aW5nIGEgQGNv ZGV7ZGlzdC1ob29rfSB0YXJnZXQgdG8KZGlzdHJpYnV0ZSB0aGVzZSBkaXJlY3RvcmllcykuCgpA Y2luZGV4IFN1YmRpcmVjdG9yaWVzLCBub3QgZGlzdHJpYnV0ZWQKSW4gYSBmZXcgcGFja2FnZXMs IHVuY29uZmlndXJlZCBkaXJlY3RvcmllcyBhcmUgbm90IGV2ZW4gZXhwZWN0ZWQgdG8KYmUgZGlz dHJpYnV0ZWQuICBBbHRob3VnaCB0aGVzZSBwYWNrYWdlcyBkbyBub3QgcmVxdWlyZSB0aGUKYWZv cmVtZW50aW9uZWQgZXh0cmEgYXJyYW5nZW1lbnRzLCB0aGVyZSBpcyBhbm90aGVyIHBpdGZhbGwu ICBJZiB0aGUKbmFtZSBvZiBhIGRpcmVjdG9yeSBhcHBlYXJzIGluIEBjb2Rle1NVQkRJUlN9IG9y IEBjb2Rle0RJU1RfU1VCRElSU30sCkBjb21tYW5ke2F1dG9tYWtlfSB3aWxsIG1ha2Ugc3VyZSB0 aGUgZGlyZWN0b3J5IGV4aXN0cy4gIENvbnNlcXVlbnRseQpAY29tbWFuZHthdXRvbWFrZX0gY2Fu bm90IGJlIHJ1biBvbiBzdWNoIGEgZGlzdHJpYnV0aW9uIHdoZW4gb25lCmRpcmVjdG9yeSBoYXMg YmVlbiBvbWl0dGVkLiAgT25lIHdheSB0byBhdm9pZCB0aGlzIGNoZWNrIGlzIHRvIHVzZSB0aGUK QGNvZGV7QUNfU1VCU1R9IG1ldGhvZCB0byBkZWNsYXJlIGNvbmRpdGlvbmFsIGRpcmVjdG9yaWVz OyBzaW5jZQpAY29tbWFuZHthdXRvbWFrZX0gZG9lcyBub3Qga25vdyB0aGUgdmFsdWVzIG9mIEBj b2Rle0FDX1NVQlNUfQp2YXJpYWJsZXMgaXQgY2Fubm90IGVuc3VyZSB0aGUgY29ycmVzcG9uZGlu ZyBkaXJlY3RvcnkgZXhpc3RzLgoKQG5vZGUgQWx0ZXJuYXRpdmUKQHNlY3Rpb24gQW4gQWx0ZXJu YXRpdmUgQXBwcm9hY2ggdG8gU3ViZGlyZWN0b3JpZXMKCklmIHlvdSd2ZSBldmVyIHJlYWQgUGV0 ZXIgTWlsbGVyJ3MgZXhjZWxsZW50IHBhcGVyLCBAY2l0ZXtSZWN1cnNpdmUKTWFrZSBDb25zaWRl cmVkIEhhcm1mdWx9LCB0aGUgcHJlY2VkaW5nIHNlY3Rpb25zIG9uIHRoZSB1c2Ugb2YgbWFrZQpy ZWN1cnNpb24gd2lsbCBwcm9iYWJseSBjb21lIGFzIHVud2VsY29tZSBhZHZpY2UuICBGb3IgdGhv c2Ugd2hvCmhhdmVuJ3QgcmVhZCB0aGUgcGFwZXIsIE1pbGxlcidzIG1haW4gdGhlc2lzIGlzIHRo YXQgcmVjdXJzaXZlCkBjb21tYW5ke21ha2V9IGludm9jYXRpb25zIGFyZSBib3RoIHNsb3cgYW5k IGVycm9yLXByb25lLgoKQXV0b21ha2UgaXMgaW50ZW5kZWQgdG8gaGF2ZSBzdWZmaWNpZW50IGNy b3NzLWRpcmVjdG9yeSBzdXBwb3J0IHRvCmVuYWJsZSB5b3UgdG8gd3JpdGUgYSBzaW5nbGUgQGZp bGV7TWFrZWZpbGUuYW19IGZvciBhIGNvbXBsZXgKbXVsdGktZGlyZWN0b3J5IHBhY2thZ2UuICAo SWYgaXQgc2VlbXMgdG8gYmUgbGFja2luZywgcGxlYXNlIHJlcG9ydAp0aGUgaXNzdWUgYXMgdXN1 YWwuKQoKQnkgZGVmYXVsdCBhbiBpbnN0YWxsYWJsZSBmaWxlIHNwZWNpZmllZCBpbiBhIHN1YmRp cmVjdG9yeSB3aWxsIGhhdmUgaXRzCmRpcmVjdG9yeSBuYW1lIHN0cmlwcGVkIGJlZm9yZSBpbnN0 YWxsYXRpb24uICBGb3IgaW5zdGFuY2UsIGluIHRoaXMKZXhhbXBsZSwgdGhlIGhlYWRlciBmaWxl IHdpbGwgYmUgaW5zdGFsbGVkIGFzCkBmaWxleyQoaW5jbHVkZWRpcikvc3RkaW8uaH06CgpAZXhh bXBsZQppbmNsdWRlX0hFQURFUlMgPSBpbmMvc3RkaW8uaApAZW5kIGV4YW1wbGUKCkB2aW5kZXgg bm9iYXNlXwpAY2luZGV4IEBjb2Rle25vYmFzZV99IHByZWZpeApAY2luZGV4IFBhdGggc3RyaXBw aW5nLCBhdm9pZGluZwpAY2luZGV4IEF2b2lkaW5nIHBhdGggc3RyaXBwaW5nCgpIb3dldmVyLCB0 aGUgQHNhbXB7bm9iYXNlX30gcHJlZml4IGNhbiBiZSB1c2VkIHRvIGNpcmN1bXZlbnQgdGhpcyBw YXRoCnN0cmlwcGluZy4gIEluIHRoaXMgZXhhbXBsZSwgdGhlIGhlYWRlciBmaWxlIHdpbGwgYmUg aW5zdGFsbGVkIGFzCkBmaWxleyQoaW5jbHVkZWRpcikvc3lzL3R5cGVzLmh9OgoKQGV4YW1wbGUK bm9iYXNlX2luY2x1ZGVfSEVBREVSUyA9IHN5cy90eXBlcy5oCkBlbmQgZXhhbXBsZQoKQGNpbmRl eCBAY29kZXtub2Jhc2VffSBhbmQgQGNvZGV7ZGlzdF99IG9yIEBjb2Rle25vZGlzdF99CkBjaW5k ZXggQGNvZGV7ZGlzdF99IGFuZCBAY29kZXtub2Jhc2VffQpAY2luZGV4IEBjb2Rle25vZGlzdF99 IGFuZCBAY29kZXtub2Jhc2VffQpAdmluZGV4IGRpc3RfCkB2aW5kZXggbm9kaXN0XwoKQHNhbXB7 bm9iYXNlX30gc2hvdWxkIGJlIHNwZWNpZmllZCBmaXJzdCB3aGVuIHVzZWQgaW4gY29uanVuY3Rp b24gd2l0aAplaXRoZXIgQHNhbXB7ZGlzdF99IG9yIEBzYW1we25vZGlzdF99IChAcHhyZWZ7Rmlu ZS1ncmFpbmVkIERpc3RyaWJ1dGlvbgpDb250cm9sfSkuICBGb3IgaW5zdGFuY2U6CgpAZXhhbXBs ZQpub2Jhc2VfZGlzdF9wa2dkYXRhX0RBVEEgPSBpbWFnZXMvdm9ydGV4LnBnbSBzb3VuZHMvd2hp cmwub2dnCkBlbmQgZXhhbXBsZQoKRmluYWxseSwgbm90ZSB0aGF0IGEgdmFyaWFibGUgdXNpbmcg dGhlIEBzYW1we25vYmFzZV99IHByZWZpeCBjYW4Kb2Z0ZW4gYmUgcmVwbGFjZWQgYnkgc2V2ZXJh bCB2YXJpYWJsZXMsIG9uZSBmb3IgZWFjaCBkZXN0aW5hdGlvbgpkaXJlY3RvcnkgKEBweHJlZntV bmlmb3JtfSkuICBGb3IgaW5zdGFuY2UsIHRoZSBsYXN0IGV4YW1wbGUgY291bGQgYmUKcmV3cml0 dGVuIGFzIGZvbGxvd3M6CgpAYyBLZWVwIGluIHN5bmMgd2l0aCBwcmltYXJ5LXByZWZpeC1jb3Vw bGVzLWRvY3VtZW50ZWQtdmFsaWQuc2gKQGV4YW1wbGUKaW1hZ2VzZGlyID0gJChwa2dkYXRhZGly KS9pbWFnZXMKc291bmRzZGlyID0gJChwa2dkYXRhZGlyKS9zb3VuZHMKZGlzdF9pbWFnZXNfREFU QSA9IGltYWdlcy92b3J0ZXgucGdtCmRpc3Rfc291bmRzX0RBVEEgPSBzb3VuZHMvd2hpcmwub2dn CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50ClRoaXMgbGF0dGVyIHN5bnRheCBtYWtlcyBpdCBwb3Nz aWJsZSB0byBjaGFuZ2Ugb25lIGRlc3RpbmF0aW9uCmRpcmVjdG9yeSB3aXRob3V0IGNoYW5naW5n IHRoZSBsYXlvdXQgb2YgdGhlIHNvdXJjZSB0cmVlLgoKQ3VycmVudGx5LCBAc2FtcHtub2Jhc2Vf Kl9MVExJQlJBUklFU30gYXJlIHRoZSBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzCnJ1bGUsIGluIHRo YXQgdGhlcmUgaXMgbm8gcGFydGljdWxhciBpbnN0YWxsYXRpb24gb3JkZXIgZ3VhcmFudGVlIGZv cgphbiBvdGhlcndpc2UgZXF1aXZhbGVudCBzZXQgb2YgdmFyaWFibGVzIHdpdGhvdXQgQHNhbXB7 bm9iYXNlX30gcHJlZml4LgoKQG5vZGUgU3VicGFja2FnZXMKQHNlY3Rpb24gTmVzdGluZyBQYWNr YWdlcwpAY2luZGV4IE5lc3RpbmcgcGFja2FnZXMKQGNpbmRleCBTdWJwYWNrYWdlcwpAYWNpbmRl eCBBQ19DT05GSUdfU1VCRElSUwpAYWNpbmRleCBBQ19DT05GSUdfQVVYX0RJUgoKSW4gdGhlIEdO VSBCdWlsZCBTeXN0ZW0sIHBhY2thZ2VzIGNhbiBiZSBuZXN0ZWQgdG8gYXJiaXRyYXJ5IGRlcHRo LgpUaGlzIG1lYW5zIHRoYXQgYSBwYWNrYWdlIGNhbiBlbWJlZCBvdGhlciBwYWNrYWdlcyB3aXRo IHRoZWlyIG93bgpAZmlsZXtjb25maWd1cmV9LCBAZmlsZXtNYWtlZmlsZX1zLCBldGMuCgpUaGVz ZSBvdGhlciBwYWNrYWdlcyBzaG91bGQganVzdCBhcHBlYXIgYXMgc3ViZGlyZWN0b3JpZXMgb2Yg dGhlaXIKcGFyZW50IHBhY2thZ2UuICBUaGV5IG11c3QgYmUgbGlzdGVkIGluIEBjb2Rle1NVQkRJ UlN9IGxpa2Ugb3RoZXIKb3JkaW5hcnkgZGlyZWN0b3JpZXMuICBIb3dldmVyIHRoZSBzdWJwYWNr YWdlJ3MgQGZpbGV7TWFrZWZpbGV9cwpzaG91bGQgYmUgb3V0cHV0IGJ5IGl0cyBvd24gQGZpbGV7 Y29uZmlndXJlfSBzY3JpcHQsIG5vdCBieSB0aGUKcGFyZW50J3MgQGZpbGV7Y29uZmlndXJlfS4g IFRoaXMgaXMgYWNoaWV2ZWQgdXNpbmcgdGhlCkBjb2Rle0FDX0NPTkZJR19TVUJESVJTfSBBdXRv Y29uZiBtYWNybyAoQHB4cmVme1N1YmRpcmVjdG9yaWVzLApBQ19DT05GSUdfU1VCRElSUywgQ29u ZmlndXJpbmcgT3RoZXIgUGFja2FnZXMgaW4gU3ViZGlyZWN0b3JpZXMsCmF1dG9jb25mLCBUaGUg QXV0b2NvbmYgTWFudWFsfSkuCgpIZXJlIGlzIGFuIGV4YW1wbGUgcGFja2FnZSBmb3IgYW4gQGNv ZGV7YXJtfSBwcm9ncmFtIHRoYXQgbGlua3Mgd2l0aAphIEBjb2Rle2hhbmR9IGxpYnJhcnkgdGhh dCBpcyBhIG5lc3RlZCBwYWNrYWdlIGluIHN1YmRpcmVjdG9yeQpAZmlsZXtoYW5kL30uCgpAY29k ZXthcm19J3MgQGZpbGV7Y29uZmlndXJlLmFjfToKCkBleGFtcGxlCkFDX0lOSVQoW2FybV0sIFsx LjBdKQpBQ19DT05GSUdfQVVYX0RJUihbLl0pCkFNX0lOSVRfQVVUT01BS0UKQUNfUFJPR19DQwpB Q19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKIyBDYWxsIGhhbmQncyAuL2NvbmZpZ3VyZSBzY3Jp cHQgcmVjdXJzaXZlbHkuCkFDX0NPTkZJR19TVUJESVJTKFtoYW5kXSkKQUNfT1VUUFVUCkBlbmQg ZXhhbXBsZQoKQGNvZGV7YXJtfSdzIEBmaWxle01ha2VmaWxlLmFtfToKCkBleGFtcGxlCiMgQnVp bGQgdGhlIGxpYnJhcnkgaW4gdGhlIGhhbmQgc3ViZGlyZWN0b3J5IGZpcnN0LgpTVUJESVJTID0g aGFuZAoKIyBJbmNsdWRlIGhhbmQncyBoZWFkZXIgd2hlbiBjb21waWxpbmcgdGhpcyBkaXJlY3Rv cnkuCkFNX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvaGFuZAoKYmluX1BST0dSQU1TID0gYXJtCmFy bV9TT1VSQ0VTID0gYXJtLmMKIyBsaW5rIHdpdGggdGhlIGhhbmQgbGlicmFyeS4KYXJtX0xEQURE ID0gaGFuZC9saWJoYW5kLmEKQGVuZCBleGFtcGxlCgpOb3cgaGVyZSBpcyBAY29kZXtoYW5kfSdz IEBmaWxle2hhbmQvY29uZmlndXJlLmFjfToKCkBleGFtcGxlCkFDX0lOSVQoW2hhbmRdLCBbMS4y XSkKQUNfQ09ORklHX0FVWF9ESVIoWy5dKQpBTV9JTklUX0FVVE9NQUtFCkFDX1BST0dfQ0MKQU1f UFJPR19BUgpBQ19QUk9HX1JBTkxJQgpBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKQUNfT1VU UFVUCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CmFuZCBpdHMgQGZpbGV7aGFuZC9NYWtlZmlsZS5h bX06CgpAZXhhbXBsZQpsaWJfTElCUkFSSUVTID0gbGliaGFuZC5hCmxpYmhhbmRfYV9TT1VSQ0VT ID0gaGFuZC5jCkBlbmQgZXhhbXBsZQoKV2hlbiBAc2FtcHttYWtlIGRpc3R9IGlzIHJ1biBmcm9t IHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IGl0IHdpbGwKY3JlYXRlIGFuIGFyY2hpdmUgQGZpbGV7 YXJtLTEuMC50YXIuZ3p9IHRoYXQgY29udGFpbnMgdGhlIEBjb2Rle2FybX0KY29kZSBhcyB3ZWxs IGFzIHRoZSBAZmlsZXtoYW5kfSBzdWJkaXJlY3RvcnkuICBUaGlzIHBhY2thZ2UgY2FuIGJlCmJ1 aWx0IGFuZCBpbnN0YWxsZWQgbGlrZSBhbnkgb3JkaW5hcnkgcGFja2FnZSwgd2l0aCB0aGUgdXN1 YWwKQHNhbXB7Li9jb25maWd1cmUgJiYgbWFrZSAmJiBtYWtlIGluc3RhbGx9IHNlcXVlbmNlICh0 aGUgQGNvZGV7aGFuZH0Kc3VicGFja2FnZSB3aWxsIGJlIGJ1aWx0IGFuZCBpbnN0YWxsZWQgYnkg dGhlIHByb2Nlc3MpLgoKV2hlbiBAc2FtcHttYWtlIGRpc3R9IGlzIHJ1biBmcm9tIHRoZSBoYW5k IGRpcmVjdG9yeSwgaXQgd2lsbCBjcmVhdGUgYQpzZWxmLWNvbnRhaW5lZCBAZmlsZXtoYW5kLTEu Mi50YXIuZ3p9IGFyY2hpdmUuICBTbyBhbHRob3VnaCBpdCBhcHBlYXJzCnRvIGJlIGVtYmVkZGVk IGluIGFub3RoZXIgcGFja2FnZSwgaXQgY2FuIHN0aWxsIGJlIHVzZWQgc2VwYXJhdGVseS4KClRo ZSBwdXJwb3NlIG9mIHRoZSBAc2FtcHtBQ19DT05GSUdfQVVYX0RJUihbLl0pfSBpbnN0cnVjdGlv biBpcyB0bwpmb3JjZSBBdXRvbWFrZSBhbmQgQXV0b2NvbmYgdG8gc2VhcmNoIGZvciBhdXhpbGlh cnkgc2NyaXB0cyBpbiB0aGUKY3VycmVudCBkaXJlY3RvcnkuICBGb3IgaW5zdGFuY2UsIHRoaXMg bWVhbnMgdGhhdCB0aGVyZSB3aWxsIGJlIHR3bwpjb3BpZXMgb2YgQGZpbGV7aW5zdGFsbC1zaH06 IG9uZSBpbiB0aGUgdG9wLWxldmVsIG9mIHRoZSBAY29kZXthcm19CnBhY2thZ2UsIGFuZCBhbm90 aGVyIG9uZSBpbiB0aGUgQGZpbGV7aGFuZC99IHN1YmRpcmVjdG9yeSBmb3IgdGhlCkBjb2Rle2hh bmR9IHBhY2thZ2UuCgpUaGUgaGlzdG9yaWNhbCBkZWZhdWx0IGlzIHRvIHNlYXJjaCBmb3IgdGhl c2UgYXV4aWxpYXJ5IHNjcmlwdHMgaW4gdGhlCnBhcmVudCBkaXJlY3RvcnkgYW5kIHRoZSBncmFu ZHBhcmVudCBkaXJlY3RvcnkuICBTbyBpZiB0aGUKQHNhbXB7QUNfQ09ORklHX0FVWF9ESVIoWy5d KX0gbGluZSB3YXMgcmVtb3ZlZCBmcm9tCkBmaWxle2hhbmQvY29uZmlndXJlLmFjfSwgdGhhdCBz dWJwYWNrYWdlIHdvdWxkIHNoYXJlIHRoZSBhdXhpbGlhcnkKc2NyaXB0IG9mIHRoZSBAY29kZXth cm19IHBhY2thZ2UuICBUaGlzIG1heSBsb29rIGxpa2UgYSBnYWluIGluIHNpemUKKGEgZmV3IGtp bG9ieXRlcyksIGJ1dCBtb3JlIGltcG9ydGFudGx5LCBpdCBpcyBhIGxvc3Mgb2YgbW9kdWxhcml0 eSBhcwp0aGUgQGNvZGV7aGFuZH0gc3VicGFja2FnZSBpcyBubyBsb25nZXIgc2VsZi1jb250YWlu ZWQgKEBzYW1we21ha2UKZGlzdH0gaW4gdGhlIHN1YmRpcmVjdG9yeSB3aWxsIG5vdCB3b3JrIGFu eW1vcmUpLgoKUGFja2FnZXMgdGhhdCBkbyBub3QgdXNlIEF1dG9tYWtlIG5lZWQgbW9yZSB3b3Jr IHRvIGJlIGludGVncmF0ZWQgdGhpcwp3YXkuICBAeHJlZntUaGlyZC1QYXJ0eSBNYWtlZmlsZXN9 LgoKQG5vZGUgUHJvZ3JhbXMKQGNoYXB0ZXIgQnVpbGRpbmcgUHJvZ3JhbXMgYW5kIExpYnJhcmll cwoKQSBsYXJnZSBwYXJ0IG9mIEF1dG9tYWtlJ3MgZnVuY3Rpb25hbGl0eSBpcyBkZWRpY2F0ZWQg dG8gbWFraW5nIGl0IGVhc3kKdG8gYnVpbGQgcHJvZ3JhbXMgYW5kIGxpYnJhcmllcy4KCkBtZW51 CiogQSBQcm9ncmFtOjogICAgICAgICAgICAgICAgICAgQnVpbGRpbmcgYSBwcm9ncmFtCiogQSBM aWJyYXJ5OjogICAgICAgICAgICAgICAgICAgQnVpbGRpbmcgYSBsaWJyYXJ5CiogQSBTaGFyZWQg TGlicmFyeTo6ICAgICAgICAgICAgQnVpbGRpbmcgYSBMaWJ0b29sIGxpYnJhcnkKKiBQcm9ncmFt IGFuZCBMaWJyYXJ5IFZhcmlhYmxlczo6ICBWYXJpYWJsZXMgY29udHJvbGxpbmcgcHJvZ3JhbSBh bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IGJ1aWxkcwoqIERlZmF1 bHQgX1NPVVJDRVM6OiAgICAgICAgICAgIERlZmF1bHQgc291cmNlIGZpbGVzCiogTElCT0JKUzo6 ICAgICAgICAgICAgICAgICAgICAgU3BlY2lhbCBoYW5kbGluZyBmb3IgTElCT0JKUyBhbmQgQUxM T0NBCiogUHJvZ3JhbSBWYXJpYWJsZXM6OiAgICAgICAgICAgVmFyaWFibGVzIHVzZWQgd2hlbiBi dWlsZGluZyBhIHByb2dyYW0KKiBZYWNjIGFuZCBMZXg6OiAgICAgICAgICAgICAgICBZYWNjIGFu ZCBMZXggc3VwcG9ydAoqIEMrKyBTdXBwb3J0OjogICAgICAgICAgICAgICAgIENvbXBpbGluZyBD Kysgc291cmNlcwoqIE9iamVjdGl2ZSBDIFN1cHBvcnQ6OiAgICAgICAgIENvbXBpbGluZyBPYmpl Y3RpdmUgQyBzb3VyY2VzCiogT2JqZWN0aXZlIEMrKyBTdXBwb3J0OjogICAgICAgQ29tcGlsaW5n IE9iamVjdGl2ZSBDKysgc291cmNlcwoqIFVuaWZpZWQgUGFyYWxsZWwgQyBTdXBwb3J0OjogIENv bXBpbGluZyBVbmlmaWVkIFBhcmFsbGVsIEMgc291cmNlcwoqIEFzc2VtYmx5IFN1cHBvcnQ6OiAg ICAgICAgICAgIENvbXBpbGluZyBhc3NlbWJseSBzb3VyY2VzCiogRm9ydHJhbiA3NyBTdXBwb3J0 OjogICAgICAgICAgQ29tcGlsaW5nIEZvcnRyYW4gNzcgc291cmNlcwoqIEZvcnRyYW4gOXggU3Vw cG9ydDo6ICAgICAgICAgIENvbXBpbGluZyBGb3J0cmFuIDl4IHNvdXJjZXMKKiBKYXZhIFN1cHBv cnQgd2l0aCBnY2o6OiAgICAgICBDb21waWxpbmcgSmF2YSBzb3VyY2VzIHVzaW5nIGdjagoqIFZh bGEgU3VwcG9ydDo6ICAgICAgICAgICAgICAgIENvbXBpbGluZyBWYWxhIHNvdXJjZXMKKiBBbGdv bCA2OCBTdXBwb3J0OjogICAgICAgICAgICBDb21waWxpbmcgQWxnb2wgNjggc291cmNlcwoqIFN1 cHBvcnQgZm9yIE90aGVyIExhbmd1YWdlczo6ICBDb21waWxpbmcgb3RoZXIgbGFuZ3VhZ2VzCiog RGVwZW5kZW5jaWVzOjogICAgICAgICAgICAgICAgQXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tp bmcKKiBFWEVFWFQ6OiAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciBleGVjdXRhYmxl IGV4dGVuc2lvbnMKQGVuZCBtZW51CgoKQG5vZGUgQSBQcm9ncmFtCkBzZWN0aW9uIEJ1aWxkaW5n IGEgcHJvZ3JhbQoKSW4gb3JkZXIgdG8gYnVpbGQgYSBwcm9ncmFtLCB5b3UgbmVlZCB0byB0ZWxs IEF1dG9tYWtlIHdoaWNoIHNvdXJjZXMKYXJlIHBhcnQgb2YgaXQsIGFuZCB3aGljaCBsaWJyYXJp ZXMgaXQgc2hvdWxkIGJlIGxpbmtlZCB3aXRoLgoKVGhpcyBzZWN0aW9uIGFsc28gY292ZXJzIGNv bmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIHNvdXJjZXMgb3IKcHJvZ3JhbXMuICBNb3N0IG9mIHRo ZSBjb21tZW50cyBhYm91dCB0aGVzZSBhbHNvIGFwcGx5IHRvIGxpYnJhcmllcwooQHB4cmVme0Eg TGlicmFyeX0pIGFuZCBsaWJ0b29sIGxpYnJhcmllcyAoQHB4cmVme0EgU2hhcmVkIExpYnJhcnl9 KS4KCkBtZW51CiogUHJvZ3JhbSBTb3VyY2VzOjogICAgICAgICAgICAgRGVmaW5pbmcgcHJvZ3Jh bSBzb3VyY2VzCiogTGlua2luZzo6ICAgICAgICAgICAgICAgICAgICAgTGlua2luZyB3aXRoIGxp YnJhcmllcyBvciBleHRyYSBvYmplY3RzCiogQ29uZGl0aW9uYWwgU291cmNlczo6ICAgICAgICAg SGFuZGxpbmcgY29uZGl0aW9uYWwgc291cmNlcwoqIENvbmRpdGlvbmFsIFByb2dyYW1zOjogICAg ICAgIEJ1aWxkaW5nIGEgcHJvZ3JhbSBjb25kaXRpb25hbGx5CkBlbmQgbWVudQoKQG5vZGUgUHJv Z3JhbSBTb3VyY2VzCkBzdWJzZWN0aW9uIERlZmluaW5nIHByb2dyYW0gc291cmNlcwoKQGNpbmRl eCBAY29kZXtQUk9HUkFNU30sIEBjb2Rle2JpbmRpcn0KQHZpbmRleCBfUFJPR1JBTVMKQHZpbmRl eCBiaW5fUFJPR1JBTVMKQHZpbmRleCBzYmluX1BST0dSQU1TCkB2aW5kZXggbGliZXhlY19QUk9H UkFNUwpAdmluZGV4IHBrZ2xpYmV4ZWNfUFJPR1JBTVMKQHZpbmRleCBub2luc3RfUFJPR1JBTVMK QHZpbmRleCBjaGVja19QUk9HUkFNUwoKSW4gYSBkaXJlY3RvcnkgY29udGFpbmluZyBzb3VyY2Ug dGhhdCBnZXRzIGJ1aWx0IGludG8gYSBwcm9ncmFtIChhcwpvcHBvc2VkIHRvIGEgbGlicmFyeSBv ciBhIHNjcmlwdCksIHRoZSBAY29kZXtQUk9HUkFNU30gcHJpbWFyeSBpcyB1c2VkLgpQcm9ncmFt cyBjYW4gYmUgaW5zdGFsbGVkIGluIEBjb2Rle2JpbmRpcn0sIEBjb2Rle3NiaW5kaXJ9LApAY29k ZXtsaWJleGVjZGlyfSwgQGNvZGV7cGtnbGliZXhlY2Rpcn0sIG9yIG5vdCBhdCBhbGwKKEBjb2Rl e25vaW5zdF99KS4gIFRoZXkgY2FuIGFsc28gYmUgYnVpbHQgb25seSBmb3IgQHNhbXB7bWFrZSBj aGVja30sIGluCndoaWNoIGNhc2UgdGhlIHByZWZpeCBpcyBAc2FtcHtjaGVja199LgoKRm9yIGlu c3RhbmNlOgoKQGV4YW1wbGUKYmluX1BST0dSQU1TID0gaGVsbG8KQGVuZCBleGFtcGxlCgpJbiB0 aGlzIHNpbXBsZSBjYXNlLCB0aGUgcmVzdWx0aW5nIEBmaWxle01ha2VmaWxlLmlufSB3aWxsIGNv bnRhaW4gY29kZQp0byBnZW5lcmF0ZSBhIHByb2dyYW0gbmFtZWQgQGNvZGV7aGVsbG99LgoKQXNz b2NpYXRlZCB3aXRoIGVhY2ggcHJvZ3JhbSBhcmUgc2V2ZXJhbCBhc3Npc3RpbmcgdmFyaWFibGVz IHRoYXQgYXJlCm5hbWVkIGFmdGVyIHRoZSBwcm9ncmFtLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBh bGwgb3B0aW9uYWwsIGFuZCBoYXZlCnJlYXNvbmFibGUgZGVmYXVsdHMuICBFYWNoIHZhcmlhYmxl LCBpdHMgdXNlLCBhbmQgZGVmYXVsdCBpcyBzcGVsbGVkIG91dApiZWxvdzsgd2UgdXNlIHRoZSBg YGhlbGxvJycgZXhhbXBsZSB0aHJvdWdob3V0LgoKVGhlIHZhcmlhYmxlIEBjb2Rle2hlbGxvX1NP VVJDRVN9IGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBzb3VyY2UgZmlsZXMKZ2V0IGJ1aWx0IGlu dG8gYW4gZXhlY3V0YWJsZToKCkBleGFtcGxlCmhlbGxvX1NPVVJDRVMgPSBoZWxsby5jIHZlcnNp b24uYyBnZXRvcHQuYyBnZXRvcHQxLmMgZ2V0b3B0Lmggc3lzdGVtLmgKQGVuZCBleGFtcGxlCgpU aGlzIGNhdXNlcyBlYWNoIG1lbnRpb25lZCBAZmlsZXsuY30gZmlsZSB0byBiZSBjb21waWxlZCBp bnRvIHRoZQpjb3JyZXNwb25kaW5nIEBmaWxley5vfS4gIFRoZW4gYWxsIGFyZSBsaW5rZWQgdG8g cHJvZHVjZSBAZmlsZXtoZWxsb30uCgpAY2luZGV4IEBjb2Rle19TT1VSQ0VTfSBwcmltYXJ5LCBk ZWZpbmVkCkBjaW5kZXggQGNvZGV7U09VUkNFU30gcHJpbWFyeSwgZGVmaW5lZApAY2luZGV4IFBy aW1hcnkgdmFyaWFibGUsIEBjb2Rle1NPVVJDRVN9CkB2aW5kZXggX1NPVVJDRVMKCklmIEBjb2Rl e2hlbGxvX1NPVVJDRVN9IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gaXQgZGVmYXVsdHMgdG8gdGhl IHNpbmdsZQpmaWxlIEBmaWxle2hlbGxvLmN9IChAcHhyZWZ7RGVmYXVsdCBfU09VUkNFU30pLgpA dmluZGV4IF9TT1VSQ0VTCkB2aW5kZXggU09VUkNFUwoKTXVsdGlwbGUgcHJvZ3JhbXMgY2FuIGJl IGJ1aWx0IGluIGEgc2luZ2xlIGRpcmVjdG9yeS4gIE11bHRpcGxlIHByb2dyYW1zCmNhbiBzaGFy ZSBhIHNpbmdsZSBzb3VyY2UgZmlsZSwgd2hpY2ggbXVzdCBiZSBsaXN0ZWQgaW4gZWFjaApAY29k ZXtfU09VUkNFU30gZGVmaW5pdGlvbi4KCkBjaW5kZXggSGVhZGVyIGZpbGVzIGluIEBjb2Rle19T T1VSQ0VTfQpAY2luZGV4IEBjb2Rle19TT1VSQ0VTfSBhbmQgaGVhZGVyIGZpbGVzCgpIZWFkZXIg ZmlsZXMgbGlzdGVkIGluIGEgQGNvZGV7X1NPVVJDRVN9IGRlZmluaXRpb24gd2lsbCBiZSBpbmNs dWRlZCBpbgp0aGUgZGlzdHJpYnV0aW9uIGJ1dCBvdGhlcndpc2UgaWdub3JlZC4gIEluIGNhc2Ug aXQgaXNuJ3Qgb2J2aW91cywgeW91CnNob3VsZCBub3QgaW5jbHVkZSB0aGUgaGVhZGVyIGZpbGUg Z2VuZXJhdGVkIGJ5IEBmaWxle2NvbmZpZ3VyZX0gaW4gYQpAY29kZXtfU09VUkNFU30gdmFyaWFi bGU7IHRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGRpc3RyaWJ1dGVkLiAgTGV4CihAZmlsZXsubH0p IGFuZCBZYWNjIChAZmlsZXsueX0pIGZpbGVzIGNhbiBhbHNvIGJlIGxpc3RlZDsgc2VlIEByZWZ7 WWFjYwphbmQgTGV4fS4KCgpAbm9kZSBMaW5raW5nCkBzdWJzZWN0aW9uIExpbmtpbmcgdGhlIHBy b2dyYW0KCklmIHlvdSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBsaWJyYXJpZXMgdGhhdCBhcmUgbm90 IGZvdW5kIGJ5CkBjb21tYW5ke2NvbmZpZ3VyZX0sIHlvdSBjYW4gdXNlIEBjb2Rle0xEQUREfSB0 byBkbyBzby4gIFRoaXMgdmFyaWFibGUgaXMKdXNlZCB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgb2Jq ZWN0cyBvciBsaWJyYXJpZXMgdG8gbGluayB3aXRoLgpMaWJyYXJpZXMgdG8gbGluayB3aXRoIGNh biBiZSBpbmRpY2F0ZWQgZWl0aGVyIGFzIGZpbGUgbmFtZXMgb3IKdGhyb3VnaCBAY29kZXstTH0g YW5kIEBjb2Rley1sfSBvcHRpb25zLgoKRm9yIG90aGVyIGxpbmtlciBvcHRpb25zIChub3QgQGNv ZGV7LUx9IG9yIEBjb2Rley1sfSksIEBjb2Rle0xEQUREfQppcyBpbmFwcHJvcHJpYXRlLiAgWW91 IHNob3VsZCB1c2UgQGNvZGV7QU1fTERGTEFHU30gZm9yIHRoaXMgcHVycG9zZS4KQHZpbmRleCBM REFERApAdmluZGV4IEFNX0xERkxBR1MKCkBjaW5kZXggQGNvZGV7cHJvZ19MREFERH0sIGRlZmlu ZWQKClNvbWV0aW1lcywgbXVsdGlwbGUgcHJvZ3JhbXMgYXJlIGJ1aWx0IGluIG9uZSBkaXJlY3Rv cnkgYnV0IGRvIG5vdCBzaGFyZQp0aGUgc2FtZSBsaW5rLXRpbWUgcmVxdWlyZW1lbnRzLiAgSW4g dGhpcyBjYXNlLCB5b3UgY2FuIHVzZSB0aGUKQGNvZGV7QHZhcntwcm9nfV9MREFERH0gdmFyaWFi bGUgKHdoZXJlIEB2YXJ7cHJvZ30gaXMgdGhlIG5hbWUgb2YgdGhlCnByb2dyYW0gYXMgaXQgYXBw ZWFycyBpbiBzb21lIEBjb2Rle19QUk9HUkFNU30gdmFyaWFibGUsIGFuZCB1c3VhbGx5CndyaXR0 ZW4gaW4gbG93ZXJjYXNlKSB0byBvdmVycmlkZSBAY29kZXtMREFERH0uICBJZiB0aGlzIHZhcmlh YmxlIGV4aXN0cwpmb3IgYSBnaXZlbiBwcm9ncmFtLCB0aGVuIHRoYXQgcHJvZ3JhbSBpcyBub3Qg bGlua2VkIHVzaW5nIEBjb2Rle0xEQUREfS4KQHZpbmRleCBtYXVkZV9MREFERAoKRm9yIGluc3Rh bmNlLCBpbiBHTlUgY3BpbywgQGNvZGV7cGF4fSwgQGNvZGV7Y3Bpb30gYW5kIEBjb2Rle210fSBh cmUKbGlua2VkIGFnYWluc3QgdGhlIGxpYnJhcnkgQGZpbGV7bGliY3Bpby5hfS4gIEhvd2V2ZXIs IEBjb2Rle3JtdH0gaXMKYnVpbHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBhbmQgaGFzIG5vIHN1 Y2ggbGluayByZXF1aXJlbWVudC4gIEFsc28sCkBjb2Rle210fSBhbmQgQGNvZGV7cm10fSBhcmUg b25seSBidWlsdCBvbiBjZXJ0YWluIGFyY2hpdGVjdHVyZXMuICBIZXJlCmlzIHdoYXQgY3Bpbydz IEBmaWxle3NyYy9NYWtlZmlsZS5hbX0gbG9va3MgbGlrZSAoYWJyaWRnZWQpOgoKQGV4YW1wbGUK YmluX1BST0dSQU1TID0gY3BpbyBwYXggJChNVCkKbGliZXhlY19QUk9HUkFNUyA9ICQoUk1UKQpF WFRSQV9QUk9HUkFNUyA9IG10IHJtdAoKTERBREQgPSAuLi9saWIvbGliY3Bpby5hICQoSU5UTExJ QlMpCnJtdF9MREFERCA9CgpjcGlvX1NPVVJDRVMgPSBAZG90c3t9CnBheF9TT1VSQ0VTID0gQGRv dHN7fQptdF9TT1VSQ0VTID0gQGRvdHN7fQpybXRfU09VUkNFUyA9IEBkb3Rze30KQGVuZCBleGFt cGxlCgpAY2luZGV4IEBjb2Rle19MREZMQUdTfSwgZGVmaW5lZApAdmluZGV4IG1hdWRlX0xERkxB R1MKQGNvZGV7QHZhcntwcm9nfV9MREFERH0gaXMgaW5hcHByb3ByaWF0ZSBmb3IgcGFzc2luZyBw cm9ncmFtLXNwZWNpZmljCmxpbmtlciBmbGFncyAoZXhjZXB0IGZvciBAb3B0aW9uey1sfSwgQG9w dGlvbnstTH0sIEBvcHRpb257LWRsb3Blbn0gYW5kCkBvcHRpb257LWRscHJlb3Blbn0pLiAgU28s IHVzZSB0aGUgQGNvZGV7QHZhcntwcm9nfV9MREZMQUdTfSB2YXJpYWJsZSBmb3IKdGhpcyBwdXJw b3NlLgoKQGNpbmRleCBAY29kZXtfREVQRU5ERU5DSUVTfSwgZGVmaW5lZApAdmluZGV4IG1hdWRl X0RFUEVOREVOQ0lFUwpAdmluZGV4IEVYVFJBX21hdWRlX0RFUEVOREVOQ0lFUwpJdCBpcyBhbHNv IG9jY2FzaW9uYWxseSB1c2VmdWwgdG8gaGF2ZSBhIHByb2dyYW0gZGVwZW5kIG9uIHNvbWUgb3Ro ZXIKdGFyZ2V0IHRoYXQgaXMgbm90IGluIGZhY3QgcGFydCBvZiB0aGF0IHByb2dyYW0uICBUaGlz IGNhbiBiZSBkb25lCnVzaW5nIGVpdGhlciB0aGUgQGNvZGV7QHZhcntwcm9nfV9ERVBFTkRFTkNJ RVN9IG9yIHRoZQpAY29kZXtFWFRSQV9AdmFye3Byb2d9X0RFUEVOREVOQ0lFU30gdmFyaWFibGUu ICBFYWNoIHByb2dyYW0gZGVwZW5kcyBvbgp0aGUgY29udGVudHMgYm90aCB2YXJpYWJsZXMsIGJ1 dCBubyBmdXJ0aGVyIGludGVycHJldGF0aW9uIGlzIGRvbmUuCgpTaW5jZSB0aGVzZSBkZXBlbmRl bmNpZXMgYXJlIGFzc29jaWF0ZWQgdG8gdGhlIGxpbmsgcnVsZSB1c2VkIHRvCmNyZWF0ZSB0aGUg cHJvZ3JhbXMgdGhleSBzaG91bGQgbm9ybWFsbHkgbGlzdCBmaWxlcyB1c2VkIGJ5IHRoZSBsaW5r CmNvbW1hbmQuICBUaGF0IGlzIEBmaWxleyouJChPQkpFWFQpfSwgQGZpbGV7Ki5hfSwgb3IgQGZp bGV7Ki5sYX0KZmlsZXMuICBJbiByYXJlIGNhc2VzIHlvdSBtYXkgbmVlZCB0byBhZGQgb3RoZXIg a2luZHMgb2YgZmlsZXMgc3VjaCBhcwpsaW5rZXIgc2NyaXB0cywgYnV0IEBlbXBoe2xpc3Rpbmcg YSBzb3VyY2UgZmlsZSBpbgpAY29kZXtfREVQRU5ERU5DSUVTfSBpcyB3cm9uZ30uICBJZiBzb21l IHNvdXJjZSBmaWxlIG5lZWRzIHRvIGJlIGJ1aWx0CmJlZm9yZSBhbGwgdGhlIGNvbXBvbmVudHMg b2YgYSBwcm9ncmFtIGFyZSBidWlsdCwgY29uc2lkZXIgdXNpbmcgdGhlCkBjb2Rle0JVSUxUX1NP VVJDRVN9IHZhcmlhYmxlIGluc3RlYWQgKEBweHJlZntTb3VyY2VzfSkuCgpJZiBAY29kZXtAdmFy e3Byb2d9X0RFUEVOREVOQ0lFU30gaXMgbm90IHN1cHBsaWVkLCBpdCBpcyBjb21wdXRlZCBieQpB dXRvbWFrZS4gIFRoZSBhdXRvbWF0aWNhbGx5LWFzc2lnbmVkIHZhbHVlIGlzIHRoZSBjb250ZW50 cyBvZgpAY29kZXtAdmFye3Byb2d9X0xEQUREfSwgd2l0aCBtb3N0IGNvbmZpZ3VyZSBzdWJzdGl0 dXRpb25zLCBAb3B0aW9uey1sfSwKQG9wdGlvbnstTH0sIEBvcHRpb257LWRsb3Blbn0gYW5kIEBv cHRpb257LWRscHJlb3Blbn0gb3B0aW9ucyByZW1vdmVkLiAgVGhlCmNvbmZpZ3VyZSBzdWJzdGl0 dXRpb25zIHRoYXQgYXJlIGxlZnQgaW4gYXJlIG9ubHkgQHNhbXB7JChMSUJPQkpTKX0gYW5kCkBz YW1weyQoQUxMT0NBKX07IHRoZXNlIGFyZSBsZWZ0IGJlY2F1c2UgaXQgaXMga25vd24gdGhhdCB0 aGV5IHdpbGwgbm90CmNhdXNlIGFuIGludmFsaWQgdmFsdWUgZm9yIEBjb2Rle0B2YXJ7cHJvZ31f REVQRU5ERU5DSUVTfSB0byBiZQpnZW5lcmF0ZWQuCgpAcmVme0NvbmRpdGlvbmFsIFNvdXJjZXN9 IHNob3dzIGEgc2l0dWF0aW9uIHdoZXJlIEBjb2Rle19ERVBFTkRFTkNJRVN9Cm1heSBiZSB1c2Vk LgoKVGhlIEBjb2Rle0VYVFJBX0B2YXJ7cHJvZ31fREVQRU5ERU5DSUVTfSBtYXkgYmUgdXNlZnVs IGZvciBjYXNlcyB3aGVyZQp5b3UgbWVyZWx5IHdhbnQgdG8gYXVnbWVudCB0aGUgQGNvbW1hbmR7 YXV0b21ha2V9LWdlbmVyYXRlZApAY29kZXtAdmFye3Byb2d9X0RFUEVOREVOQ0lFU30gcmF0aGVy IHRoYW4gcmVwbGFjaW5nIGl0LgoKQGNpbmRleCBAY29kZXtMREFERH0gYW5kIEBvcHRpb257LWx9 CkBjaW5kZXggQG9wdGlvbnstbH0gYW5kIEBjb2Rle0xEQUREfQpXZSByZWNvbW1lbmQgdGhhdCB5 b3UgYXZvaWQgdXNpbmcgQG9wdGlvbnstbH0gb3B0aW9ucyBpbiBAY29kZXtMREFERH0Kb3IgQGNv ZGV7QHZhcntwcm9nfV9MREFERH0gd2hlbiByZWZlcnJpbmcgdG8gbGlicmFyaWVzIGJ1aWx0IGJ5 IHlvdXIKcGFja2FnZS4gIEluc3RlYWQsIHdyaXRlIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGxpYnJh cnkgZXhwbGljaXRseSBhcyBpbgp0aGUgYWJvdmUgQGNvZGV7Y3Bpb30gZXhhbXBsZS4gIFVzZSBA b3B0aW9uey1sfSBvbmx5IHRvIGxpc3QKdGhpcmQtcGFydHkgbGlicmFyaWVzLiAgSWYgeW91IGZv bGxvdyB0aGlzIHJ1bGUsIHRoZSBkZWZhdWx0IHZhbHVlIG9mCkBjb2Rle0B2YXJ7cHJvZ31fREVQ RU5ERU5DSUVTfSB3aWxsIGxpc3QgYWxsIHlvdXIgbG9jYWwgbGlicmFyaWVzIGFuZApvbWl0IHRo ZSBvdGhlciBvbmVzLgoKCkBub2RlIENvbmRpdGlvbmFsIFNvdXJjZXMKQHN1YnNlY3Rpb24gQ29u ZGl0aW9uYWwgY29tcGlsYXRpb24gb2Ygc291cmNlcwoKWW91IGNhbid0IHB1dCBhIGNvbmZpZ3Vy ZSBzdWJzdGl0dXRpb24gKGUuZy4sIEBzYW1we0BARk9PQEB9IG9yCkBzYW1weyQoRk9PKX0gd2hl cmUgQGNvZGV7Rk9PfSBpcyBkZWZpbmVkIHZpYSBAY29kZXtBQ19TVUJTVH0pIGludG8gYQpAY29k ZXtfU09VUkNFU30gdmFyaWFibGUuICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGEgYml0IGhhcmQg dG8KZXhwbGFpbiwgYnV0IHN1ZmZpY2UgdG8gc2F5IHRoYXQgaXQgc2ltcGx5IHdvbid0IHdvcmsu ICBBdXRvbWFrZSB3aWxsCmdpdmUgYW4gZXJyb3IgaWYgeW91IHRyeSB0byBkbyB0aGlzLgoKRm9y dHVuYXRlbHkgdGhlcmUgYXJlIHR3byBvdGhlciB3YXlzIHRvIGFjaGlldmUgdGhlIHNhbWUgcmVz dWx0LiAgT25lIGlzCnRvIHVzZSBjb25maWd1cmUgc3Vic3RpdHV0aW9ucyBpbiBAY29kZXtfTERB RER9IHZhcmlhYmxlcywgdGhlIG90aGVyIGlzCnRvIHVzZSBhbiBBdXRvbWFrZSBjb25kaXRpb25h bC4KCkBzdWJzdWJoZWFkaW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIHVzaW5nIEBjb2Rle19M REFERH0gU3Vic3RpdHV0aW9ucwoKQGNpbmRleCBAY29kZXtFWFRSQV9wcm9nX1NPVVJDRVN9LCBk ZWZpbmVkCgpBdXRvbWFrZSBtdXN0IGtub3cgYWxsIHRoZSBzb3VyY2UgZmlsZXMgdGhhdCBjb3Vs ZCBwb3NzaWJseSBnbyBpbnRvIGEKcHJvZ3JhbSwgZXZlbiBpZiBub3QgYWxsIHRoZSBmaWxlcyBh cmUgYnVpbHQgaW4gZXZlcnkgY2lyY3Vtc3RhbmNlLiAgQW55CmZpbGVzIHRoYXQgYXJlIG9ubHkg Y29uZGl0aW9uYWxseSBidWlsdCBzaG91bGQgYmUgbGlzdGVkIGluIHRoZQphcHByb3ByaWF0ZSBA Y29kZXtFWFRSQV99IHZhcmlhYmxlLiAgRm9yIGluc3RhbmNlLCBpZgpAZmlsZXtoZWxsby1saW51 eC5jfSBvciBAZmlsZXtoZWxsby1nZW5lcmljLmN9IHdlcmUgY29uZGl0aW9uYWxseSBpbmNsdWRl ZAppbiBAY29kZXtoZWxsb30sIHRoZSBAZmlsZXtNYWtlZmlsZS5hbX0gd291bGQgY29udGFpbjoK CkBleGFtcGxlCmJpbl9QUk9HUkFNUyA9IGhlbGxvCmhlbGxvX1NPVVJDRVMgPSBoZWxsby1jb21t b24uYwpFWFRSQV9oZWxsb19TT1VSQ0VTID0gaGVsbG8tbGludXguYyBoZWxsby1nZW5lcmljLmMK aGVsbG9fTERBREQgPSAkKEhFTExPX1NZU1RFTSkKaGVsbG9fREVQRU5ERU5DSUVTID0gJChIRUxM T19TWVNURU0pCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CllvdSBjYW4gdGhlbiBzZXQgdXAgdGhl IEBzYW1weyQoSEVMTE9fU1lTVEVNKX0gc3Vic3RpdHV0aW9uIGZyb20KQGZpbGV7Y29uZmlndXJl LmFjfToKCkBleGFtcGxlCkBkb3Rze30KY2FzZSAkaG9zdCBpbgogICpsaW51eCopIEhFTExPX1NZ U1RFTT0naGVsbG8tbGludXguJChPQkpFWFQpJyA7OwogICopICAgICAgIEhFTExPX1NZU1RFTT0n aGVsbG8tZ2VuZXJpYy4kKE9CSkVYVCknIDs7CmVzYWMKQUNfU1VCU1QoW0hFTExPX1NZU1RFTV0p CkBkb3Rze30KQGVuZCBleGFtcGxlCgpJbiB0aGlzIGNhc2UsIHRoZSB2YXJpYWJsZSBAY29kZXtI RUxMT19TWVNURU19IHNob3VsZCBiZSByZXBsYWNlZCBieQplaXRoZXIgQGZpbGV7aGVsbG8tbGlu dXgub30gb3IgQGZpbGV7aGVsbG8tZ2VuZXJpYy5vfSwgYW5kIGFkZGVkIHRvCmJvdGggQGNvZGV7 aGVsbG9fREVQRU5ERU5DSUVTfSBhbmQgQGNvZGV7aGVsbG9fTERBRER9IGluIG9yZGVyIHRvIGJl CmJ1aWx0IGFuZCBsaW5rZWQgaW4uCgpAc3Vic3ViaGVhZGluZyBDb25kaXRpb25hbCBDb21waWxh dGlvbiB1c2luZyBBdXRvbWFrZSBDb25kaXRpb25hbHMKCkFuIG9mdGVuIHNpbXBsZXIgd2F5IHRv IGNvbXBpbGUgc291cmNlIGZpbGVzIGNvbmRpdGlvbmFsbHkgaXMgdG8gdXNlCkF1dG9tYWtlIGNv bmRpdGlvbmFscy4gIEZvciBpbnN0YW5jZSwgeW91IGNvdWxkIHVzZSB0aGlzCkBmaWxle01ha2Vm aWxlLmFtfSBjb25zdHJ1Y3QgdG8gYnVpbGQgdGhlIHNhbWUgQGZpbGV7aGVsbG99IGV4YW1wbGU6 CgpAZXhhbXBsZQpiaW5fUFJPR1JBTVMgPSBoZWxsbwppZiBMSU5VWApoZWxsb19TT1VSQ0VTID0g aGVsbG8tbGludXguYyBoZWxsby1jb21tb24uYwplbHNlCmhlbGxvX1NPVVJDRVMgPSBoZWxsby1n ZW5lcmljLmMgaGVsbG8tY29tbW9uLmMKZW5kaWYKQGVuZCBleGFtcGxlCgpJbiB0aGlzIGNhc2Us IEBmaWxle2NvbmZpZ3VyZS5hY30gc2hvdWxkIHNldCB1cCB0aGUgQGNvZGV7TElOVVh9CmNvbmRp dGlvbmFsIHVzaW5nIEBjb2Rle0FNX0NPTkRJVElPTkFMfSAoQHB4cmVme0NvbmRpdGlvbmFsc30p LgoKV2hlbiB1c2luZyBjb25kaXRpb25hbHMgbGlrZSB0aGlzIHlvdSBkb24ndCBuZWVkIHRvIHVz ZSB0aGUKQGNvZGV7RVhUUkFffSB2YXJpYWJsZSwgYmVjYXVzZSBBdXRvbWFrZSB3aWxsIGV4YW1p bmUgdGhlIGNvbnRlbnRzIG9mCmVhY2ggdmFyaWFibGUgdG8gY29uc3RydWN0IHRoZSBjb21wbGV0 ZSBsaXN0IG9mIHNvdXJjZSBmaWxlcy4KCklmIHlvdXIgcHJvZ3JhbSB1c2VzIGEgbG90IG9mIGZp bGVzLCB5b3Ugd2lsbCBwcm9iYWJseSBwcmVmZXIgYQpjb25kaXRpb25hbCBAc2FtcHsrPX0uCgpA ZXhhbXBsZQpiaW5fUFJPR1JBTVMgPSBoZWxsbwpoZWxsb19TT1VSQ0VTID0gaGVsbG8tY29tbW9u LmMKaWYgTElOVVgKaGVsbG9fU09VUkNFUyArPSBoZWxsby1saW51eC5jCmVsc2UKaGVsbG9fU09V UkNFUyArPSBoZWxsby1nZW5lcmljLmMKZW5kaWYKQGVuZCBleGFtcGxlCgpAbm9kZSBDb25kaXRp b25hbCBQcm9ncmFtcwpAc3Vic2VjdGlvbiBDb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBwcm9n cmFtcwpAY2luZGV4IENvbmRpdGlvbmFsIHByb2dyYW1zCkBjaW5kZXggUHJvZ3JhbXMsIGNvbmRp dGlvbmFsCgpTb21ldGltZXMgaXQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgcHJvZ3JhbXMg dGhhdCBhcmUgdG8gYmUgYnVpbHQKYXQgY29uZmlndXJlIHRpbWUuICBGb3IgaW5zdGFuY2UsIEdO VSBAY29kZXtjcGlvfSBvbmx5IGJ1aWxkcwpAY29kZXttdH0gYW5kIEBjb2Rle3JtdH0gdW5kZXIg c3BlY2lhbCBjaXJjdW1zdGFuY2VzLiAgVGhlIG1lYW5zIHRvCmFjaGlldmUgY29uZGl0aW9uYWwg Y29tcGlsYXRpb24gb2YgcHJvZ3JhbXMgYXJlIHRoZSBzYW1lIHlvdSBjYW4gdXNlCnRvIGNvbXBp bGUgc291cmNlIGZpbGVzIGNvbmRpdGlvbmFsbHk6IHN1YnN0aXR1dGlvbnMgb3IgY29uZGl0aW9u YWxzLgoKQHN1YnN1YmhlYWRpbmcgQ29uZGl0aW9uYWwgUHJvZ3JhbXMgdXNpbmcgQGNvbW1hbmR7 Y29uZmlndXJlfSBTdWJzdGl0dXRpb25zCgpAdmluZGV4IEVYVFJBX1BST0dSQU1TCkBjaW5kZXgg QGNvZGV7RVhUUkFfUFJPR1JBTVN9LCBkZWZpbmVkCkluIHRoaXMgY2FzZSwgeW91IG11c3Qgbm90 aWZ5IEF1dG9tYWtlIG9mIGFsbCB0aGUgcHJvZ3JhbXMgdGhhdCBjYW4KcG9zc2libHkgYmUgYnVp bHQsIGJ1dCBhdCB0aGUgc2FtZSB0aW1lIGNhdXNlIHRoZSBnZW5lcmF0ZWQKQGZpbGV7TWFrZWZp bGUuaW59IHRvIHVzZSB0aGUgcHJvZ3JhbXMgc3BlY2lmaWVkIGJ5IEBjb21tYW5ke2NvbmZpZ3Vy ZX0uClRoaXMgaXMgZG9uZSBieSBoYXZpbmcgQGNvbW1hbmR7Y29uZmlndXJlfSBzdWJzdGl0dXRl IHZhbHVlcyBpbnRvIGVhY2gKQGNvZGV7X1BST0dSQU1TfSBkZWZpbml0aW9uLCB3aGlsZSBsaXN0 aW5nIGFsbCBvcHRpb25hbGx5IGJ1aWx0IHByb2dyYW1zCmluIEBjb2Rle0VYVFJBX1BST0dSQU1T fS4KCkBleGFtcGxlCmJpbl9QUk9HUkFNUyA9IGNwaW8gcGF4ICQoTVQpCmxpYmV4ZWNfUFJPR1JB TVMgPSAkKFJNVCkKRVhUUkFfUFJPR1JBTVMgPSBtdCBybXQKQGVuZCBleGFtcGxlCgpBcyBleHBs YWluZWQgaW4gQHJlZntFWEVFWFR9LCBBdXRvbWFrZSB3aWxsIHJld3JpdGUKQGNvZGV7YmluX1BS T0dSQU1TfSwgQGNvZGV7bGliZXhlY19QUk9HUkFNU30sIGFuZApAY29kZXtFWFRSQV9QUk9HUkFN U30sIGFwcGVuZGluZyBAc2FtcHskKEVYRUVYVCl9IHRvIGVhY2ggYmluYXJ5LgpPYnZpb3VzbHkg aXQgY2Fubm90IHJld3JpdGUgdmFsdWVzIG9idGFpbmVkIGF0IHJ1bi10aW1lIHRocm91Z2gKQGNv bW1hbmR7Y29uZmlndXJlfSBzdWJzdGl0dXRpb25zLCB0aGVyZWZvcmUgeW91IHNob3VsZCB0YWtl IGNhcmUgb2YKYXBwZW5kaW5nIEBzYW1weyQoRVhFRVhUKX0geW91cnNlbGYsIGFzIGluIEBzYW1w e0FDX1NVQlNUKFtNVF0sClsnbXQkQHtFWEVFWFRAfSddKX0uCgpAc3Vic3ViaGVhZGluZyBDb25k aXRpb25hbCBQcm9ncmFtcyB1c2luZyBBdXRvbWFrZSBDb25kaXRpb25hbHMKCllvdSBjYW4gYWxz byB1c2UgQXV0b21ha2UgY29uZGl0aW9uYWxzIChAcHhyZWZ7Q29uZGl0aW9uYWxzfSkgdG8Kc2Vs ZWN0IHByb2dyYW1zIHRvIGJlIGJ1aWx0LiAgSW4gdGhpcyBjYXNlIHlvdSBkb24ndCBoYXZlIHRv IHdvcnJ5CmFib3V0IEBzYW1weyQoRVhFRVhUKX0gb3IgQGNvZGV7RVhUUkFfUFJPR1JBTVN9LgoK QGMgS2VlcCBpbiBzeW5jIHdpdGggZXhlZXh0LnNoCkBleGFtcGxlCmJpbl9QUk9HUkFNUyA9IGNw aW8gcGF4CmlmIFdBTlRfTVQKICBiaW5fUFJPR1JBTVMgKz0gbXQKZW5kaWYKaWYgV0FOVF9STVQK ICBsaWJleGVjX1BST0dSQU1TID0gcm10CmVuZGlmCkBlbmQgZXhhbXBsZQoKCkBub2RlIEEgTGli cmFyeQpAc2VjdGlvbiBCdWlsZGluZyBhIGxpYnJhcnkKCkBjaW5kZXggQGNvZGV7X0xJQlJBUklF U30gcHJpbWFyeSwgZGVmaW5lZApAY2luZGV4IEBjb2Rle0xJQlJBUklFU30gcHJpbWFyeSwgZGVm aW5lZApAY2luZGV4IFByaW1hcnkgdmFyaWFibGUsIEBjb2Rle0xJQlJBUklFU30KQHZpbmRleCBf TElCUkFSSUVTCgpAdmluZGV4IGxpYl9MSUJSQVJJRVMKQHZpbmRleCBwa2dsaWJfTElCUkFSSUVT CkB2aW5kZXggbm9pbnN0X0xJQlJBUklFUwoKQnVpbGRpbmcgYSBsaWJyYXJ5IGlzIG11Y2ggbGlr ZSBidWlsZGluZyBhIHByb2dyYW0uICBJbiB0aGlzIGNhc2UsIHRoZQpuYW1lIG9mIHRoZSBwcmlt YXJ5IGlzIEBjb2Rle0xJQlJBUklFU30uICBMaWJyYXJpZXMgY2FuIGJlIGluc3RhbGxlZCBpbgpA Y29kZXtsaWJkaXJ9IG9yIEBjb2Rle3BrZ2xpYmRpcn0uCgpAeHJlZntBIFNoYXJlZCBMaWJyYXJ5 fSwgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBidWlsZCBzaGFyZWQKbGlicmFyaWVzIHVzaW5n IExpYnRvb2wgYW5kIHRoZSBAY29kZXtMVExJQlJBUklFU30gcHJpbWFyeS4KCkVhY2ggQGNvZGV7 X0xJQlJBUklFU30gdmFyaWFibGUgaXMgYSBsaXN0IG9mIHRoZSBsaWJyYXJpZXMgdG8gYmUgYnVp bHQuCkZvciBpbnN0YW5jZSwgdG8gY3JlYXRlIGEgbGlicmFyeSBuYW1lZCBAZmlsZXtsaWJjcGlv LmF9LCBidXQgbm90IGluc3RhbGwKaXQsIHlvdSB3b3VsZCB3cml0ZToKCkBleGFtcGxlCm5vaW5z dF9MSUJSQVJJRVMgPSBsaWJjcGlvLmEKbGliY3Bpb19hX1NPVVJDRVMgPSBAZG90c3t9CkBlbmQg ZXhhbXBsZQoKVGhlIHNvdXJjZXMgdGhhdCBnbyBpbnRvIGEgbGlicmFyeSBhcmUgZGV0ZXJtaW5l ZCBleGFjdGx5IGFzIHRoZXkgYXJlCmZvciBwcm9ncmFtcywgdmlhIHRoZSBAY29kZXtfU09VUkNF U30gdmFyaWFibGVzLiAgTm90ZSB0aGF0IHRoZSBsaWJyYXJ5Cm5hbWUgaXMgY2Fub25pY2FsaXpl ZCAoQHB4cmVme0Nhbm9uaWNhbGl6YXRpb259KSwgc28gdGhlIEBjb2Rle19TT1VSQ0VTfQp2YXJp YWJsZSBjb3JyZXNwb25kaW5nIHRvIEBmaWxle2xpYmNwaW8uYX0gaXMgQHNhbXB7bGliY3Bpb19h X1NPVVJDRVN9LApub3QgQHNhbXB7bGliY3Bpby5hX1NPVVJDRVN9LgoKQHZpbmRleCBtYXVkZV9M SUJBREQKRXh0cmEgb2JqZWN0cyBjYW4gYmUgYWRkZWQgdG8gYSBsaWJyYXJ5IHVzaW5nIHRoZQpA Y29kZXtAdmFye2xpYnJhcnl9X0xJQkFERH0gdmFyaWFibGUuICBUaGlzIHNob3VsZCBiZSB1c2Vk IGZvciBvYmplY3RzCmRldGVybWluZWQgYnkgQGNvbW1hbmR7Y29uZmlndXJlfS4gIEFnYWluIGZy b20gQGNvZGV7Y3Bpb306CgpAYyBLZWVwIGluIHN5bmMgd2l0aCBwcjQwMWMuc2gKQGV4YW1wbGUK bGliY3Bpb19hX0xJQkFERCA9ICQoTElCT0JKUykgJChBTExPQ0EpCkBlbmQgZXhhbXBsZQoKSW4g YWRkaXRpb24sIHNvdXJjZXMgZm9yIGV4dHJhIG9iamVjdHMgdGhhdCB3aWxsIG5vdCBleGlzdCB1 bnRpbApjb25maWd1cmUtdGltZSBtdXN0IGJlIGFkZGVkIHRvIHRoZSBAY29kZXtCVUlMVF9TT1VS Q0VTfSB2YXJpYWJsZQooQHB4cmVme1NvdXJjZXN9KS4KCkJ1aWxkaW5nIGEgc3RhdGljIGxpYnJh cnkgaXMgZG9uZSBieSBjb21waWxpbmcgYWxsIG9iamVjdCBmaWxlcywgdGhlbgpieSBpbnZva2lu ZyBAc2FtcHskKEFSKSAkKEFSRkxBR1MpfSBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZiB0aGUKbGli cmFyeSBhbmQgdGhlIGxpc3Qgb2Ygb2JqZWN0cywgYW5kIGZpbmFsbHkgYnkgY2FsbGluZwpAc2Ft cHskKFJBTkxJQil9IG9uIHRoYXQgbGlicmFyeS4gIFlvdSBzaG91bGQgY2FsbApAY29kZXtBQ19Q Uk9HX1JBTkxJQn0gZnJvbSB5b3VyIEBmaWxle2NvbmZpZ3VyZS5hY30gdG8gZGVmaW5lCkBjb2Rl e1JBTkxJQn0gKEF1dG9tYWtlIHdpbGwgY29tcGxhaW4gb3RoZXJ3aXNlKS4gIFlvdSBzaG91bGQg YWxzbwpjYWxsIEBjb2Rle0FNX1BST0dfQVJ9IHRvIGRlZmluZSBAY29kZXtBUn0sIGluIG9yZGVy IHRvIHN1cHBvcnQgdW51c3VhbAphcmNoaXZlcnMgc3VjaCBhcyBNaWNyb3NvZnQgbGliLiAgQGNv ZGV7QVJGTEFHU30gd2lsbCBkZWZhdWx0IHRvCkBjb2Rle2NyfTsgeW91IGNhbiBvdmVycmlkZSB0 aGlzIHZhcmlhYmxlIGJ5IHNldHRpbmcgaXQgaW4geW91cgpAZmlsZXtNYWtlZmlsZS5hbX0gb3Ig YnkgQGNvZGV7QUNfU1VCU1R9aW5nIGl0IGZyb20geW91cgpAZmlsZXtjb25maWd1cmUuYWN9LiAg WW91IGNhbiBvdmVycmlkZSB0aGUgQGNvZGV7QVJ9IHZhcmlhYmxlIGJ5CmRlZmluaW5nIGEgcGVy LWxpYnJhcnkgQGNvZGV7bWF1ZGVfQVJ9IHZhcmlhYmxlIChAcHhyZWZ7UHJvZ3JhbSBhbmQKTGli cmFyeSBWYXJpYWJsZXN9KS4KCkBjaW5kZXggRW1wdHkgbGlicmFyaWVzCkJlIGNhcmVmdWwgd2hl biBzZWxlY3RpbmcgbGlicmFyeSBjb21wb25lbnRzIGNvbmRpdGlvbmFsbHkuICBCZWNhdXNlCmJ1 aWxkaW5nIGFuIGVtcHR5IGxpYnJhcnkgaXMgbm90IHBvcnRhYmxlLCB5b3Ugc2hvdWxkIGVuc3Vy ZSB0aGF0IGFueQpsaWJyYXJ5IGFsd2F5cyBjb250YWlucyBhdCBsZWFzdCBvbmUgb2JqZWN0LgoK VG8gdXNlIGEgc3RhdGljIGxpYnJhcnkgd2hlbiBidWlsZGluZyBhIHByb2dyYW0sIGFkZCBpdCB0 bwpAY29kZXtMREFERH0gZm9yIHRoaXMgcHJvZ3JhbS4gIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBs ZSwgdGhlIHByb2dyYW0KQGZpbGV7Y3Bpb30gaXMgc3RhdGljYWxseSBsaW5rZWQgd2l0aCB0aGUg bGlicmFyeSBAZmlsZXtsaWJjcGlvLmF9LgoKQGV4YW1wbGUKbm9pbnN0X0xJQlJBUklFUyA9IGxp YmNwaW8uYQpsaWJjcGlvX2FfU09VUkNFUyA9IEBkb3Rze30KCmJpbl9QUk9HUkFNUyA9IGNwaW8K Y3Bpb19TT1VSQ0VTID0gY3Bpby5jIEBkb3Rze30KY3Bpb19MREFERCA9IGxpYmNwaW8uYQpAZW5k IGV4YW1wbGUKCgpAbm9kZSBBIFNoYXJlZCBMaWJyYXJ5CkBzZWN0aW9uIEJ1aWxkaW5nIGEgU2hh cmVkIExpYnJhcnkKCkBjaW5kZXggU2hhcmVkIGxpYnJhcmllcywgc3VwcG9ydCBmb3IKCkJ1aWxk aW5nIHNoYXJlZCBsaWJyYXJpZXMgcG9ydGFibHkgaXMgYSByZWxhdGl2ZWx5IGNvbXBsZXggbWF0 dGVyLgpGb3IgdGhpcyByZWFzb24sIEdOVSBMaWJ0b29sIChAcHhyZWZ7VG9wLCAsIEludHJvZHVj dGlvbiwgbGlidG9vbCwgVGhlCkxpYnRvb2wgTWFudWFsfSkgd2FzIGNyZWF0ZWQgdG8gaGVscCBi dWlsZCBzaGFyZWQgbGlicmFyaWVzIGluIGEKcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5LgoKQG1l bnUKKiBMaWJ0b29sIENvbmNlcHQ6OiAgICAgICAgICAgICBJbnRyb2R1Y2luZyBMaWJ0b29sCiog TGlidG9vbCBMaWJyYXJpZXM6OiAgICAgICAgICAgRGVjbGFyaW5nIExpYnRvb2wgTGlicmFyaWVz CiogQ29uZGl0aW9uYWwgTGlidG9vbCBMaWJyYXJpZXM6OiAgQnVpbGRpbmcgTGlidG9vbCBMaWJy YXJpZXMgQ29uZGl0aW9uYWxseQoqIENvbmRpdGlvbmFsIExpYnRvb2wgU291cmNlczo6ICBDaG9v c2luZyBMaWJyYXJ5IFNvdXJjZXMgQ29uZGl0aW9uYWxseQoqIExpYnRvb2wgQ29udmVuaWVuY2Ug TGlicmFyaWVzOjogIEJ1aWxkaW5nIENvbnZlbmllbmNlIExpYnRvb2wgTGlicmFyaWVzCiogTGli dG9vbCBNb2R1bGVzOjogICAgICAgICAgICAgQnVpbGRpbmcgTGlidG9vbCBNb2R1bGVzCiogTGli dG9vbCBGbGFnczo6ICAgICAgICAgICAgICAgVXNpbmcgX0xJQkFERCwgX0xERkxBR1MsIGFuZCBf TElCVE9PTEZMQUdTCiogTFRMSUJPQkpTOjogICAgICAgICAgICAgICAgICAgVXNpbmcgJChMVExJ Qk9CSlMpIGFuZCAkKExUQUxMT0NBKQoqIExpYnRvb2wgSXNzdWVzOjogICAgICAgICAgICAgIENv bW1vbiBJc3N1ZXMgUmVsYXRlZCB0byBMaWJ0b29sJ3MgVXNlCkBlbmQgbWVudQoKQG5vZGUgTGli dG9vbCBDb25jZXB0CkBzdWJzZWN0aW9uIFRoZSBMaWJ0b29sIENvbmNlcHQKCkBjaW5kZXggQGNv bW1hbmR7bGlidG9vbH0sIGludHJvZHVjdGlvbgpAY2luZGV4IGxpYnRvb2wgbGlicmFyeSwgZGVm aW5pdGlvbgpAY2luZGV4IHN1ZmZpeCBAZmlsZXsubGF9LCBkZWZpbmVkCkBjaW5kZXggQGZpbGV7 LmxhfSBzdWZmaXgsIGRlZmluZWQKCkxpYnRvb2wgYWJzdHJhY3RzIHNoYXJlZCBhbmQgc3RhdGlj IGxpYnJhcmllcyBpbnRvIGEgdW5pZmllZCBjb25jZXB0CmhlbmNlZm9ydGggY2FsbGVkIEBkZm57 bGlidG9vbCBsaWJyYXJpZXN9LiAgTGlidG9vbCBsaWJyYXJpZXMgYXJlCmZpbGVzIHVzaW5nIHRo ZSBAZmlsZXsubGF9IHN1ZmZpeCwgYW5kIGNhbiBkZXNpZ25hdGUgYSBzdGF0aWMgbGlicmFyeSwK YSBzaGFyZWQgbGlicmFyeSwgb3IgbWF5YmUgYm90aC4gIFRoZWlyIGV4YWN0IG5hdHVyZSBjYW5u b3QgYmUKZGV0ZXJtaW5lZCB1bnRpbCBAZmlsZXsuL2NvbmZpZ3VyZX0gaXMgcnVuOiBub3QgYWxs IHBsYXRmb3JtcyBzdXBwb3J0CmFsbCBraW5kcyBvZiBsaWJyYXJpZXMsIGFuZCB1c2VycyBjYW4g ZXhwbGljaXRseSBzZWxlY3Qgd2hpY2gKbGlicmFyaWVzIHNob3VsZCBiZSBidWlsdC4gIChIb3dl dmVyIHRoZSBwYWNrYWdlJ3MgbWFpbnRhaW5lcnMgY2FuCnR1bmUgdGhlIGRlZmF1bHQ7IEBweHJl ZntMVF9JTklULCAsIFRoZSBAY29kZXtMVF9JTklUfQptYWNybywgbGlidG9vbCwgVGhlIExpYnRv b2wgTWFudWFsfS4pCgpAY2luZGV4IHN1ZmZpeCBAZmlsZXsubG99LCBkZWZpbmVkCkJlY2F1c2Ug b2JqZWN0IGZpbGVzIGZvciBzaGFyZWQgYW5kIHN0YXRpYyBsaWJyYXJpZXMgbXVzdCBiZSBjb21w aWxlZApkaWZmZXJlbnRseSwgTGlidG9vbCBpcyBhbHNvIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9u LiAgT2JqZWN0IGZpbGVzCmJ1aWx0IGJ5IExpYnRvb2wgYXJlIGNhbGxlZCBAZGZue2xpYnRvb2wg b2JqZWN0c306IHRoZXNlIGFyZSBmaWxlcwp1c2luZyB0aGUgQGZpbGV7LmxvfSBzdWZmaXguICBM aWJ0b29sIGxpYnJhcmllcyBhcmUgYnVpbHQgZnJvbSB0aGVzZQpsaWJ0b29sIG9iamVjdHMuCgpZ b3Ugc2hvdWxkIG5vdCBhc3N1bWUgYW55dGhpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZSBvZiBAZmls ZXsubGF9IG9yCkBmaWxley5sb30gZmlsZXMgYW5kIGhvdyBMaWJ0b29sIGNvbnN0cnVjdHMgdGhl bTsgdGhpcyBpcyBMaWJ0b29sJ3MKY29uY2Vybi4gSG93ZXZlciwgdGhlIGV4aXN0ZW5jZSBvZiB0 aGVzZSBmaWxlcyBtYXR0ZXJzLCBiZWNhdXNlIHRoZXkKYXJlIHVzZWQgYXMgdGFyZ2V0cyBhbmQg ZGVwZW5kZW5jaWVzIGluIEBmaWxle01ha2VmaWxlfSBydWxlcyB3aGVuCmJ1aWxkaW5nIExpYnRv b2wgbGlicmFyaWVzLiAgVGhlcmUgYXJlIHNpdHVhdGlvbnMgd2hlcmUgeW91IG1heSBoYXZlCnRv IHJlZmVyIHRvIHRoZXNlLCBmb3IgaW5zdGFuY2Ugd2hlbiBleHByZXNzaW5nIGRlcGVuZGVuY2ll cyBmb3IKYnVpbGRpbmcgc291cmNlIGZpbGVzIGNvbmRpdGlvbmFsbHkgKEBweHJlZntDb25kaXRp b25hbCBMaWJ0b29sClNvdXJjZXN9KS4KCkBjaW5kZXggQGZpbGV7bGlibHRkbH0sIGludHJvZHVj dGlvbgoKUGVvcGxlIGNvbnNpZGVyaW5nIHdyaXRpbmcgYSBwbHVnLWluIHN5c3RlbSwgd2l0aCBk eW5hbWljYWxseSBsb2FkZWQKbW9kdWxlcywgc2hvdWxkIGxvb2sgaW50byBAZmlsZXtsaWJsdGRs fTogTGlidG9vbCdzIGRsb3BlbmluZyBsaWJyYXJ5CihAcHhyZWZ7VXNpbmcgbGlibHRkbCwgLCBV c2luZyBsaWJsdGRsLCBsaWJ0b29sLCBUaGUgTGlidG9vbCBNYW51YWx9KS4KVGhpcyBvZmZlcnMg YSBwb3J0YWJsZSBkbG9wZW5pbmcgZmFjaWxpdHkgdG8gbG9hZCBMaWJ0b29sIGxpYnJhcmllcwpk eW5hbWljYWxseSwgYW5kIGNhbiBhbHNvIGFjaGlldmUgc3RhdGljIGxpbmtpbmcgd2hlcmUgdW5h dm9pZGFibGUuCgpCZWZvcmUgd2UgZGlzY3VzcyBob3cgdG8gdXNlIExpYnRvb2wgd2l0aCBBdXRv bWFrZSBpbiBkZXRhaWwsIGl0CnNob3VsZCBiZSBub3RlZCB0aGF0IHRoZSBMaWJ0b29sIG1hbnVh bCBhbHNvIGhhcyBhIHNlY3Rpb24gYWJvdXQgaG93CnRvIHVzZSBBdXRvbWFrZSB3aXRoIExpYnRv b2wgKEBweHJlZntVc2luZyBBdXRvbWFrZSwgLCBVc2luZyBBdXRvbWFrZQp3aXRoIExpYnRvb2ws IGxpYnRvb2wsIFRoZSBMaWJ0b29sIE1hbnVhbH0pLgoKQG5vZGUgTGlidG9vbCBMaWJyYXJpZXMK QHN1YnNlY3Rpb24gQnVpbGRpbmcgTGlidG9vbCBMaWJyYXJpZXMKCkBjaW5kZXggQGNvZGV7X0xU TElCUkFSSUVTfSBwcmltYXJ5LCBkZWZpbmVkCkBjaW5kZXggQGNvZGV7TFRMSUJSQVJJRVN9IHBy aW1hcnksIGRlZmluZWQKQGNpbmRleCBQcmltYXJ5IHZhcmlhYmxlLCBAY29kZXtMVExJQlJBUklF U30KQGNpbmRleCBFeGFtcGxlIG9mIHNoYXJlZCBsaWJyYXJpZXMKQHZpbmRleCBsaWJfTFRMSUJS QVJJRVMKQHZpbmRleCBwa2dsaWJfTFRMSUJSQVJJRVMKQHZpbmRleCBfTFRMSUJSQVJJRVMKCkF1 dG9tYWtlIHVzZXMgTGlidG9vbCB0byBidWlsZCBsaWJyYXJpZXMgZGVjbGFyZWQgd2l0aCB0aGUK QGNvZGV7TFRMSUJSQVJJRVN9IHByaW1hcnkuICBFYWNoIEBjb2Rle19MVExJQlJBUklFU30gdmFy aWFibGUgaXMgYQpsaXN0IG9mIExpYnRvb2wgbGlicmFyaWVzIHRvIGJ1aWxkLiAgRm9yIGluc3Rh bmNlLCB0byBjcmVhdGUgYSBsaWJ0b29sCmxpYnJhcnkgbmFtZWQgQGZpbGV7bGliZ2V0dGV4dC5s YX0sIGFuZCBpbnN0YWxsIGl0IGluIEBjb2Rle2xpYmRpcn0sCndyaXRlOgoKQGV4YW1wbGUKbGli X0xUTElCUkFSSUVTID0gbGliZ2V0dGV4dC5sYQpsaWJnZXR0ZXh0X2xhX1NPVVJDRVMgPSBnZXR0 ZXh0LmMgZ2V0dGV4dC5oIEBkb3Rze30KQGVuZCBleGFtcGxlCgpBdXRvbWFrZSBwcmVkZWZpbmVz IHRoZSB2YXJpYWJsZSBAY29kZXtwa2dsaWJkaXJ9LCBzbyB5b3UgY2FuIHVzZQpAY29kZXtwa2ds aWJfTFRMSUJSQVJJRVN9IHRvIGluc3RhbGwgbGlicmFyaWVzIGluCkBzYW1weyQobGliZGlyKS9A QFBBQ0tBR0VAQC99LgoKSWYgQGZpbGV7Z2V0dGV4dC5ofSBpcyBhIHB1YmxpYyBoZWFkZXIgZmls ZSB0aGF0IG5lZWRzIHRvIGJlIGluc3RhbGxlZAppbiBvcmRlciBmb3IgcGVvcGxlIHRvIHVzZSB0 aGUgbGlicmFyeSwgaXQgc2hvdWxkIGJlIGRlY2xhcmVkIHVzaW5nIGEKQGNvZGV7X0hFQURFUlN9 IHZhcmlhYmxlLCBub3QgaW4gQGNvZGV7bGliZ2V0dGV4dF9sYV9TT1VSQ0VTfS4KSGVhZGVycyBs aXN0ZWQgaW4gdGhlIGxhdHRlciBzaG91bGQgYmUgaW50ZXJuYWwgaGVhZGVycyB0aGF0IGFyZSBu b3QKcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4KCkBleGFtcGxlCmxpYl9MVExJQlJBUklF UyA9IGxpYmdldHRleHQubGEKbGliZ2V0dGV4dF9sYV9TT1VSQ0VTID0gZ2V0dGV4dC5jIEBkb3Rz e30KaW5jbHVkZV9IRUFERVJTID0gZ2V0dGV4dC5oIEBkb3Rze30KQGVuZCBleGFtcGxlCgpBIHBh Y2thZ2UgY2FuIGJ1aWxkIGFuZCBpbnN0YWxsIHN1Y2ggYSBsaWJyYXJ5IGFsb25nIHdpdGggb3Ro ZXIKcHJvZ3JhbXMgdGhhdCB1c2UgaXQuICBUaGlzIGRlcGVuZGVuY3kgc2hvdWxkIGJlIHNwZWNp ZmllZCB1c2luZwpAY29kZXtMREFERH0uICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgYnVpbGRzIGEg cHJvZ3JhbSBuYW1lZApAZmlsZXtoZWxsb30gdGhhdCBpcyBsaW5rZWQgd2l0aCBAZmlsZXtsaWJn ZXR0ZXh0LmxhfS4KCkBleGFtcGxlCmxpYl9MVExJQlJBUklFUyA9IGxpYmdldHRleHQubGEKbGli Z2V0dGV4dF9sYV9TT1VSQ0VTID0gZ2V0dGV4dC5jIEBkb3Rze30KCmJpbl9QUk9HUkFNUyA9IGhl bGxvCmhlbGxvX1NPVVJDRVMgPSBoZWxsby5jIEBkb3Rze30KaGVsbG9fTERBREQgPSBsaWJnZXR0 ZXh0LmxhCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CldoZXRoZXIgQGZpbGV7aGVsbG99IGlzIHN0 YXRpY2FsbHkgb3IgZHluYW1pY2FsbHkgbGlua2VkIHdpdGgKQGZpbGV7bGliZ2V0dGV4dC5sYX0g aXMgbm90IHlldCBrbm93bjogdGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUKY29uZmlndXJhdGlvbiBv ZiBMaWJ0b29sIGFuZCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBob3N0LgoKCkBub2RlIENvbmRp dGlvbmFsIExpYnRvb2wgTGlicmFyaWVzCkBzdWJzZWN0aW9uIEJ1aWxkaW5nIExpYnRvb2wgTGli cmFyaWVzIENvbmRpdGlvbmFsbHkKQGNpbmRleCBsaWJ0b29sIGxpYnJhcmllcywgY29uZGl0aW9u YWwKQGNpbmRleCBjb25kaXRpb25hbCBsaWJ0b29sIGxpYnJhcmllcwoKTGlrZSBjb25kaXRpb25h bCBwcm9ncmFtcyAoQHB4cmVme0NvbmRpdGlvbmFsIFByb2dyYW1zfSksIHRoZXJlIGFyZQp0d28g bWFpbiB3YXlzIHRvIGJ1aWxkIGNvbmRpdGlvbmFsIGxpYnJhcmllczogdXNpbmcgQXV0b21ha2UK Y29uZGl0aW9uYWxzIG9yIHVzaW5nIEF1dG9jb25mIEBjb2Rle0FDX1NVQlNUfWl0dXRpb25zLgoK VGhlIGltcG9ydGFudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgeW91IGhhdmUgdG8gYmUgYXdhcmUg b2YgaXMgdGhhdAp0aGUgcGxhY2Ugd2hlcmUgYSBsaWJyYXJ5IHdpbGwgYmUgaW5zdGFsbGVkIG1h dHRlcnMgdG8gTGlidG9vbDogaXQKbmVlZHMgdG8gYmUgaW5kaWNhdGVkIEBlbXBoe2F0IGxpbmst dGltZX0gdXNpbmcgdGhlIEBvcHRpb257LXJwYXRofQpvcHRpb24uCgpGb3IgbGlicmFyaWVzIHdo b3NlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBpcyBrbm93biB3aGVuIEF1dG9tYWtlIHJ1bnMsCkF1 dG9tYWtlIHdpbGwgYXV0b21hdGljYWxseSBzdXBwbHkgdGhlIGFwcHJvcHJpYXRlIEBvcHRpb257 LXJwYXRofQpvcHRpb24gdG8gQGNvbW1hbmR7bGlidG9vbH0uICBUaGlzIGlzIHRoZSBjYXNlIGZv ciBsaWJyYXJpZXMgbGlzdGVkCmV4cGxpY2l0bHkgaW4gc29tZSBpbnN0YWxsYWJsZSBAY29kZXtf TFRMSUJSQVJJRVN9IHZhcmlhYmxlcyBzdWNoIGFzCkBjb2Rle2xpYl9MVExJQlJBUklFU30uCgpI b3dldmVyLCBmb3IgbGlicmFyaWVzIGRldGVybWluZWQgYXQgY29uZmlndXJlIHRpbWUgKGFuZCB0 aHVzCm1lbnRpb25lZCBpbiBAY29kZXtFWFRSQV9MVExJQlJBUklFU30pLCBBdXRvbWFrZSBkb2Vz IG5vdCBrbm93IHRoZQpmaW5hbCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LiAgRm9yIHN1Y2ggbGli cmFyaWVzIHlvdSBtdXN0IGFkZCB0aGUKQG9wdGlvbnstcnBhdGh9IG9wdGlvbiB0byB0aGUgYXBw cm9wcmlhdGUgQGNvZGV7X0xERkxBR1N9IHZhcmlhYmxlIGJ5CmhhbmQuCgpUaGUgZXhhbXBsZXMg YmVsb3cgaWxsdXN0cmF0ZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVzZSB0d28gbWV0aG9k cy4KCkhlcmUgaXMgYW4gZXhhbXBsZSB3aGVyZSBAY29kZXtXQU5URURMSUJTfSBpcyBhbiBAY29k ZXtBQ19TVUJTVH1lZAp2YXJpYWJsZSBzZXQgYXQgQGZpbGV7Li9jb25maWd1cmV9LXRpbWUgdG8g ZWl0aGVyIEBmaWxle2xpYmZvby5sYX0sCkBmaWxle2xpYmJhci5sYX0sIGJvdGgsIG9yIG5vbmUu ICBBbHRob3VnaCBAc2FtcHskKFdBTlRFRExJQlMpfQphcHBlYXJzIGluIHRoZSBAY29kZXtsaWJf TFRMSUJSQVJJRVN9LCBBdXRvbWFrZSBjYW5ub3QgZ3Vlc3MgaXQKcmVsYXRlcyB0byBAZmlsZXts aWJmb28ubGF9IG9yIEBmaWxle2xpYmJhci5sYX0gYXQgdGhlIHRpbWUgaXQgY3JlYXRlcwp0aGUg bGluayBydWxlIGZvciB0aGVzZSB0d28gbGlicmFyaWVzLiAgVGhlcmVmb3JlIHRoZSBAb3B0aW9u ey1ycGF0aH0KYXJndW1lbnQgbXVzdCBiZSBleHBsaWNpdGx5IHN1cHBsaWVkLgoKQGMgS2VlcCBp biBzeW5jIHdpdGggbHRjb25kLnNoCkBleGFtcGxlCkVYVFJBX0xUTElCUkFSSUVTID0gbGliZm9v LmxhIGxpYmJhci5sYQpsaWJfTFRMSUJSQVJJRVMgPSAkKFdBTlRFRExJQlMpCmxpYmZvb19sYV9T T1VSQ0VTID0gZm9vLmMgQGRvdHN7fQpsaWJmb29fbGFfTERGTEFHUyA9IC1ycGF0aCAnJChsaWJk aXIpJwpsaWJiYXJfbGFfU09VUkNFUyA9IGJhci5jIEBkb3Rze30KbGliYmFyX2xhX0xERkxBR1Mg PSAtcnBhdGggJyQobGliZGlyKScKQGVuZCBleGFtcGxlCgpIZXJlIGlzIGhvdyB0aGUgc2FtZSBA ZmlsZXtNYWtlZmlsZS5hbX0gd291bGQgbG9vayB1c2luZyBBdXRvbWFrZQpjb25kaXRpb25hbHMg bmFtZWQgQGNvZGV7V0FOVF9MSUJGT099IGFuZCBAY29kZXtXQU5UX0xJQkJBUn0uICBOb3cKQXV0 b21ha2UgaXMgYWJsZSB0byBjb21wdXRlIHRoZSBAb3B0aW9uey1ycGF0aH0gc2V0dGluZyBpdHNl bGYsIGJlY2F1c2UKaXQncyBjbGVhciB0aGF0IGJvdGggbGlicmFyaWVzIHdpbGwgZW5kIHVwIGlu IEBzYW1weyQobGliZGlyKX0gaWYgdGhleQphcmUgaW5zdGFsbGVkLgoKQGMgS2VlcCBpbiBzeW5j IHdpdGggbHRjb25kLnNoCkBleGFtcGxlCmxpYl9MVExJQlJBUklFUyA9CmlmIFdBTlRfTElCRk9P CmxpYl9MVExJQlJBUklFUyArPSBsaWJmb28ubGEKZW5kaWYKaWYgV0FOVF9MSUJCQVIKbGliX0xU TElCUkFSSUVTICs9IGxpYmJhci5sYQplbmRpZgpsaWJmb29fbGFfU09VUkNFUyA9IGZvby5jIEBk b3Rze30KbGliYmFyX2xhX1NPVVJDRVMgPSBiYXIuYyBAZG90c3t9CkBlbmQgZXhhbXBsZQoKQG5v ZGUgQ29uZGl0aW9uYWwgTGlidG9vbCBTb3VyY2VzCkBzdWJzZWN0aW9uIExpYnRvb2wgTGlicmFy aWVzIHdpdGggQ29uZGl0aW9uYWwgU291cmNlcwoKQ29uZGl0aW9uYWwgY29tcGlsYXRpb24gb2Yg c291cmNlcyBpbiBhIGxpYnJhcnkgY2FuIGJlIGFjaGlldmVkIGluIHRoZQpzYW1lIHdheSBhcyBj b25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBzb3VyY2VzIGluIGEgcHJvZ3JhbQooQHB4cmVme0Nv bmRpdGlvbmFsIFNvdXJjZXN9KS4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdApAY29kZXtf TElCQUREfSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIEBjb2Rle19MREFERH0gYW5kIHRoYXQg aXQKc2hvdWxkIG1lbnRpb24gbGlidG9vbCBvYmplY3RzIChAZmlsZXsubG99IGZpbGVzKS4KClNv LCB0byBtaW1pYyB0aGUgQGZpbGV7aGVsbG99IGV4YW1wbGUgZnJvbSBAcmVme0NvbmRpdGlvbmFs IFNvdXJjZXN9LAp3ZSBjb3VsZCBidWlsZCBhIEBmaWxle2xpYmhlbGxvLmxhfSBsaWJyYXJ5IHVz aW5nIGVpdGhlcgpAZmlsZXtoZWxsby1saW51eC5jfSBvciBAZmlsZXtoZWxsby1nZW5lcmljLmN9 IHdpdGggdGhlIGZvbGxvd2luZwpAZmlsZXtNYWtlZmlsZS5hbX0uCgpAYyBLZWVwIGluIHN5bmMg d2l0aCBsdGNvbmQyLnNoCkBleGFtcGxlCmxpYl9MVExJQlJBUklFUyA9IGxpYmhlbGxvLmxhCmxp YmhlbGxvX2xhX1NPVVJDRVMgPSBoZWxsby1jb21tb24uYwpFWFRSQV9saWJoZWxsb19sYV9TT1VS Q0VTID0gaGVsbG8tbGludXguYyBoZWxsby1nZW5lcmljLmMKbGliaGVsbG9fbGFfTElCQUREID0g JChIRUxMT19TWVNURU0pCmxpYmhlbGxvX2xhX0RFUEVOREVOQ0lFUyA9ICQoSEVMTE9fU1lTVEVN KQpAZW5kIGV4YW1wbGUKCkBub2luZGVudApBbmQgbWFrZSBzdXJlIEBjb21tYW5ke2NvbmZpZ3Vy ZX0gZGVmaW5lcyBAY29kZXtIRUxMT19TWVNURU19IGFzCmVpdGhlciBAZmlsZXtoZWxsby1saW51 eC5sb30gb3IgQGZpbGV7aGVsbG8tQC1nZW5lcmljLmxvfS4KCk9yIHdlIGNvdWxkIHNpbXBseSB1 c2UgYW4gQXV0b21ha2UgY29uZGl0aW9uYWwgYXMgZm9sbG93cy4KCkBjIEtlZXAgaW4gc3luYyB3 aXRoIGx0Y29uZDIuc2gKQGV4YW1wbGUKbGliX0xUTElCUkFSSUVTID0gbGliaGVsbG8ubGEKbGli aGVsbG9fbGFfU09VUkNFUyA9IGhlbGxvLWNvbW1vbi5jCmlmIExJTlVYCmxpYmhlbGxvX2xhX1NP VVJDRVMgKz0gaGVsbG8tbGludXguYwplbHNlCmxpYmhlbGxvX2xhX1NPVVJDRVMgKz0gaGVsbG8t Z2VuZXJpYy5jCmVuZGlmCkBlbmQgZXhhbXBsZQoKQG5vZGUgTGlidG9vbCBDb252ZW5pZW5jZSBM aWJyYXJpZXMKQHN1YnNlY3Rpb24gTGlidG9vbCBDb252ZW5pZW5jZSBMaWJyYXJpZXMKQGNpbmRl eCBjb252ZW5pZW5jZSBsaWJyYXJpZXMsIGxpYnRvb2wKQGNpbmRleCBsaWJ0b29sIGNvbnZlbmll bmNlIGxpYnJhcmllcwpAdmluZGV4IG5vaW5zdF9MVExJQlJBUklFUwpAdmluZGV4IGNoZWNrX0xU TElCUkFSSUVTCgpTb21ldGltZXMgeW91IHdhbnQgdG8gYnVpbGQgTGlidG9vbCBsaWJyYXJpZXMg dGhhdCBzaG91bGQgbm90IGJlCmluc3RhbGxlZC4gIFRoZXNlIGFyZSBjYWxsZWQgQGRmbntsaWJ0 b29sIGNvbnZlbmllbmNlIGxpYnJhcmllc30gYW5kCmFyZSB0eXBpY2FsbHkgdXNlZCB0byBlbmNh cHN1bGF0ZSBtYW55IHN1YmxpYnJhcmllcywgbGF0ZXIgZ2F0aGVyZWQKaW50byBvbmUgYmlnIGlu c3RhbGxlZCBsaWJyYXJ5LgoKTGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgYXJlIGRlY2xh cmVkIGJ5IGRpcmVjdG9yeS1sZXNzIHZhcmlhYmxlcwpzdWNoIGFzIEBjb2Rle25vaW5zdF9MVExJ QlJBUklFU30sIEBjb2Rle2NoZWNrX0xUTElCUkFSSUVTfSwgb3IgZXZlbgpAY29kZXtFWFRSQV9M VExJQlJBUklFU30uICBVbmxpa2UgaW5zdGFsbGVkIExpYnRvb2wgbGlicmFyaWVzIHRoZXkgZG8K bm90IG5lZWQgYW4gQG9wdGlvbnstcnBhdGh9IGZsYWcgYXQgbGluayB0aW1lICh0aGlzIGlzIGlu IGZhY3QgdGhlIG9ubHkKZGlmZmVyZW5jZSkuCgpDb252ZW5pZW5jZSBsaWJyYXJpZXMgbGlzdGVk IGluIEBjb2Rle25vaW5zdF9MVExJQlJBUklFU30gYXJlIGFsd2F5cwpidWlsdC4gIFRob3NlIGxp c3RlZCBpbiBAY29kZXtjaGVja19MVExJQlJBUklFU30gYXJlIGJ1aWx0IG9ubHkgdXBvbgpAc2Ft cHttYWtlIGNoZWNrfS4gIEZpbmFsbHksIGxpYnJhcmllcyBsaXN0ZWQgaW4KQGNvZGV7RVhUUkFf TFRMSUJSQVJJRVN9IGFyZSBuZXZlciBidWlsdCBleHBsaWNpdGx5OiBBdXRvbWFrZSBvdXRwdXRz CnJ1bGVzIHRvIGJ1aWxkIHRoZW0sIGJ1dCBpZiB0aGUgbGlicmFyeSBkb2VzIG5vdCBhcHBlYXIg YXMgYSBAZmlsZXtNYWtlZmlsZX0KZGVwZW5kZW5jeSBhbnl3aGVyZSBpdCB3b24ndCBiZSBidWls dCAodGhpcyBpcyB3aHkKQGNvZGV7RVhUUkFfTFRMSUJSQVJJRVN9IGlzIHVzZWQgZm9yIGNvbmRp dGlvbmFsIGNvbXBpbGF0aW9uKS4KCkhlcmUgaXMgYSBzYW1wbGUgc2V0dXAgbWVyZ2luZyBMaWJ0 b29sIGNvbnZlbmllbmNlIGxpYnJhcmllcyBmcm9tCnN1YmRpcmVjdG9yaWVzIGludG8gb25lIG1h aW4gQGZpbGV7bGlidG9wLmxhfSBsaWJyYXJ5LgoKQGMgS2VlcCBpbiBzeW5jIHdpdGggbHRjb252 LnNoCkBleGFtcGxlCiMgLS0gVG9wLWxldmVsIE1ha2VmaWxlLmFtIC0tClNVQkRJUlMgPSBzdWIx IHN1YjIgQGRvdHN7fQpsaWJfTFRMSUJSQVJJRVMgPSBsaWJ0b3AubGEKbGlidG9wX2xhX1NPVVJD RVMgPQpsaWJ0b3BfbGFfTElCQUREID0gXAogIHN1YjEvbGlic3ViMS5sYSBcCiAgc3ViMi9saWJz dWIyLmxhIFwKICBAZG90c3t9CgojIC0tIHN1YjEvTWFrZWZpbGUuYW0gLS0Kbm9pbnN0X0xUTElC UkFSSUVTID0gbGlic3ViMS5sYQpsaWJzdWIxX2xhX1NPVVJDRVMgPSBAZG90c3t9CgojIC0tIHN1 YjIvTWFrZWZpbGUuYW0gLS0KIyBzaG93aW5nIG5lc3RlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMK U1VCRElSUyA9IHN1YjIuMSBzdWIyLjIgQGRvdHN7fQpub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJz dWIyLmxhCmxpYnN1YjJfbGFfU09VUkNFUyA9CmxpYnN1YjJfbGFfTElCQUREID0gXAogIHN1YjIx L2xpYnN1YjIxLmxhIFwKICBzdWIyMi9saWJzdWIyMi5sYSBcCiAgQGRvdHN7fQpAZW5kIGV4YW1w bGUKCldoZW4gdXNpbmcgc3VjaCBhIHNldHVwLCBiZXdhcmUgdGhhdCBAY29tbWFuZHthdXRvbWFr ZX0gd2lsbCBhc3N1bWUKQGZpbGV7bGlidG9wLmxhfSBpcyB0byBiZSBsaW5rZWQgd2l0aCB0aGUg QyBsaW5rZXIuICBUaGlzIGlzIGJlY2F1c2UKQGNvZGV7bGlidG9wX2xhX1NPVVJDRVN9IGlzIGVt cHR5LCBzbyBAY29tbWFuZHthdXRvbWFrZX0gcGlja3MgQyBhcwpkZWZhdWx0IGxhbmd1YWdlLiAg SWYgQGNvZGV7bGlidG9wX2xhX1NPVVJDRVN9IHdhcyBub3QgZW1wdHksCkBjb21tYW5ke2F1dG9t YWtlfSB3b3VsZCBzZWxlY3QgdGhlIGxpbmtlciBhcyBleHBsYWluZWQgaW4gQHJlZntIb3cKdGhl IExpbmtlciBpcyBDaG9zZW59LgoKSWYgb25lIG9mIHRoZSBzdWJsaWJyYXJpZXMgY29udGFpbnMg bm9uLUMgc291cmNlLCBpdCBpcyBpbXBvcnRhbnQgdGhhdAp0aGUgYXBwcm9wcmlhdGUgbGlua2Vy IGJlIGNob3Nlbi4gIE9uZSB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvCnByZXRlbmQgdGhhdCB0 aGVyZSBpcyBzdWNoIGEgbm9uLUMgZmlsZSBhbW9uZyB0aGUgc291cmNlcyBvZiB0aGUKbGlicmFy eSwgdGh1cyBmb3JjaW5nIEBjb21tYW5ke2F1dG9tYWtlfSB0byBzZWxlY3QgdGhlIGFwcHJvcHJp YXRlCmxpbmtlci4gIEhlcmUgaXMgdGhlIHRvcC1sZXZlbCBAZmlsZXtNYWtlZmlsZX0gb2Ygb3Vy IGV4YW1wbGUgdXBkYXRlZAp0byBmb3JjZSBDKysgbGlua2luZy4KCkBleGFtcGxlClNVQkRJUlMg PSBzdWIxIHN1YjIgQGRvdHN7fQpsaWJfTFRMSUJSQVJJRVMgPSBsaWJ0b3AubGEKbGlidG9wX2xh X1NPVVJDRVMgPQojIER1bW15IEMrKyBzb3VyY2UgdG8gY2F1c2UgQysrIGxpbmtpbmcuCm5vZGlz dF9FWFRSQV9saWJ0b3BfbGFfU09VUkNFUyA9IGR1bW15LmN4eApsaWJ0b3BfbGFfTElCQUREID0g XAogIHN1YjEvbGlic3ViMS5sYSBcCiAgc3ViMi9saWJzdWIyLmxhIFwKICBAZG90c3t9CkBlbmQg ZXhhbXBsZQoKQHNhbXB7RVhUUkFfKl9TT1VSQ0VTfSB2YXJpYWJsZXMgYXJlIHVzZWQgdG8ga2Vl cCB0cmFjayBvZiBzb3VyY2UKZmlsZXMgdGhhdCBtaWdodCBiZSBjb21waWxlZCAodGhpcyBpcyBt b3N0bHkgdXNlZnVsIHdoZW4gZG9pbmcKY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdXNpbmcgQGNv ZGV7QUNfU1VCU1R9OyBAcHhyZWZ7Q29uZGl0aW9uYWwKTGlidG9vbCBTb3VyY2VzfSksIGFuZCB0 aGUgQGNvZGV7bm9kaXN0X30gcHJlZml4IG1lYW5zIHRoZSBsaXN0ZWQKc291cmNlcyBhcmUgbm90 IHRvIGJlIGRpc3RyaWJ1dGVkIChAcHhyZWZ7UHJvZ3JhbSBhbmQgTGlicmFyeQpWYXJpYWJsZXN9 KS4gIEluIGVmZmVjdCB0aGUgZmlsZSBAZmlsZXtkdW1teS5jeHh9IGRvZXMgbm90IG5lZWQgdG8K ZXhpc3QgaW4gdGhlIHNvdXJjZSB0cmVlLiAgT2YgY291cnNlIGlmIHlvdSBoYXZlIHNvbWUgcmVh bCBzb3VyY2UgZmlsZQp0byBsaXN0IGluIEBjb2Rle2xpYnRvcF9sYV9TT1VSQ0VTfSB0aGVyZSBp cyBubyBwb2ludCBpbiBjaGVhdGluZyB3aXRoCkBjb2Rle25vZGlzdF9FWFRSQV9saWJ0b3BfbGFf U09VUkNFU30uCgoKQG5vZGUgTGlidG9vbCBNb2R1bGVzCkBzdWJzZWN0aW9uIExpYnRvb2wgTW9k dWxlcwpAY2luZGV4IG1vZHVsZXMsIGxpYnRvb2wKQGNpbmRleCBsaWJ0b29sIG1vZHVsZXMKQGNp bmRleCBAb3B0aW9uey1tb2R1bGV9LCBsaWJ0b29sCgpUaGVzZSBhcmUgTGlidG9vbCBsaWJyYXJp ZXMgbWVhbnQgdG8gYmUgZGxvcGVuZWQuICBUaGV5IGFyZQppbmRpY2F0ZWQgdG8gQGNvbW1hbmR7 bGlidG9vbH0gYnkgcGFzc2luZyBAb3B0aW9uey1tb2R1bGV9IGF0IGxpbmstdGltZS4KCkBleGFt cGxlCnBrZ2xpYl9MVExJQlJBUklFUyA9IG15bW9kdWxlLmxhCm15bW9kdWxlX2xhX1NPVVJDRVMg PSBkb2l0LmMKbXltb2R1bGVfbGFfTERGTEFHUyA9IC1tb2R1bGUKQGVuZCBleGFtcGxlCgpPcmRp bmFyaWx5LCBBdXRvbWFrZSByZXF1aXJlcyB0aGF0IGEgbGlicmFyeSdzIG5hbWUgc3RhcnQgd2l0 aApAY29kZXtsaWJ9LiAgSG93ZXZlciwgd2hlbiBidWlsZGluZyBhIGR5bmFtaWNhbGx5IGxvYWRh YmxlIG1vZHVsZSB5b3UKbWlnaHQgd2lzaCB0byB1c2UgYSBgYG5vbnN0YW5kYXJkJycgbmFtZS4g IEF1dG9tYWtlIHdpbGwgbm90IGNvbXBsYWluCmFib3V0IHN1Y2ggbm9uc3RhbmRhcmQgbmFtZXMg aWYgaXQga25vd3MgdGhlIGxpYnJhcnkgYmVpbmcgYnVpbHQgaXMgYQpsaWJ0b29sIG1vZHVsZSwg aS5lLiwgaWYgQG9wdGlvbnstbW9kdWxlfSBleHBsaWNpdGx5IGFwcGVhcnMgaW4gdGhlCmxpYnJh cnkncyBAY29kZXtfTERGTEFHU30gdmFyaWFibGUgKG9yIGluIHRoZSBjb21tb24gQGNvZGV7QU1f TERGTEFHU30KdmFyaWFibGUgd2hlbiBubyBwZXItbGlicmFyeSBAY29kZXtfTERGTEFHU30gdmFy aWFibGUgaXMgZGVmaW5lZCkuCgpBcyBhbHdheXMsIEBjb2Rle0FDX1NVQlNUfSB2YXJpYWJsZXMg YXJlIGJsYWNrIGJveGVzIHRvIEF1dG9tYWtlIHNpbmNlCnRoZWlyIHZhbHVlcyBhcmUgbm90IHll dCBrbm93biB3aGVuIEBjb21tYW5ke2F1dG9tYWtlfSBpcyBydW4uClRoZXJlZm9yZSBpZiBAb3B0 aW9uey1tb2R1bGV9IGlzIHNldCB2aWEgc3VjaCBhIHZhcmlhYmxlLCBBdXRvbWFrZQpjYW5ub3Qg bm90aWNlIGl0IGFuZCB3aWxsIHByb2NlZWQgYXMgaWYgdGhlIGxpYnJhcnkgd2FzIGFuIG9yZGlu YXJ5CmxpYnRvb2wgbGlicmFyeSwgd2l0aCBzdHJpY3QgbmFtaW5nLgoKSWYgQGNvZGV7bXltb2R1 bGVfbGFfU09VUkNFU30gaXMgbm90IHNwZWNpZmllZCwgdGhlbiBpdCBkZWZhdWx0cyB0bwp0aGUg c2luZ2xlIGZpbGUgQGZpbGV7bXltb2R1bGUuY30gKEBweHJlZntEZWZhdWx0IF9TT1VSQ0VTfSku CgpAbm9kZSBMaWJ0b29sIEZsYWdzCkBzdWJzZWN0aW9uIEBjb2Rle19MSUJBRER9LCBAY29kZXtf TERGTEFHU30sIGFuZCBAY29kZXtfTElCVE9PTEZMQUdTfQpAY2luZGV4IEBjb2Rle19MSUJBRER9 LCBsaWJ0b29sCkBjaW5kZXggQGNvZGV7X0xERkxBR1N9LCBsaWJ0b29sCkBjaW5kZXggQGNvZGV7 X0xJQlRPT0xGTEFHU30sIGxpYnRvb2wKQHZpbmRleCBBTV9MSUJUT09MRkxBR1MKQHZpbmRleCBM SUJUT09MRkxBR1MKQHZpbmRleCBtYXVkZV9MSUJUT09MRkxBR1MKCkFzIHNob3duIGluIHByZXZp b3VzIHNlY3Rpb25zLCB0aGUgQHNhbXB7QHZhcntsaWJyYXJ5fV9MSUJBRER9CnZhcmlhYmxlIHNo b3VsZCBiZSB1c2VkIHRvIGxpc3QgZXh0cmEgbGlidG9vbCBvYmplY3RzIChAZmlsZXsubG99CmZp bGVzKSBvciBsaWJ0b29sIGxpYnJhcmllcyAoQGZpbGV7LmxhfSkgdG8gYWRkIHRvIEB2YXJ7bGli cmFyeX0uCgpUaGUgQHNhbXB7QHZhcntsaWJyYXJ5fV9MREZMQUdTfSB2YXJpYWJsZSBpcyB0aGUg cGxhY2UgdG8gbGlzdAphZGRpdGlvbmFsIEBjb21tYW5ke2xpYnRvb2x9IGxpbmtpbmcgZmxhZ3Ms IHN1Y2ggYXMKQG9wdGlvbnstdmVyc2lvbi1pbmZvfSwgQG9wdGlvbnstc3RhdGljfSwgYW5kIGEg bG90IG1vcmUuICBAeHJlZntMaW5rCm1vZGUsLCwgbGlidG9vbCwgVGhlIExpYnRvb2wgTWFudWFs fS4KClRoZSBAY29tbWFuZHtsaWJ0b29sfSBjb21tYW5kIGhhcyB0d28ga2luZHMgb2Ygb3B0aW9u czogbW9kZS1zcGVjaWZpYwpvcHRpb25zIGFuZCBnZW5lcmljIG9wdGlvbnMuICBNb2RlLXNwZWNp ZmljIG9wdGlvbnMgc3VjaCBhcyB0aGUKYWZvcmVtZW50aW9uZWQgbGlua2luZyBmbGFncyBzaG91 bGQgYmUgbHVtcGVkIHdpdGggdGhlIG90aGVyIGZsYWdzCnBhc3NlZCB0byB0aGUgdG9vbCBpbnZv a2VkIGJ5IEBjb21tYW5ke2xpYnRvb2x9IChoZW5jZSB0aGUgdXNlIG9mCkBzYW1we0B2YXJ7bGli cmFyeX1fTERGTEFHU30gZm9yIGxpYnRvb2wgbGlua2luZyBmbGFncykuICBHZW5lcmljCm9wdGlv bnMgaW5jbHVkZSBAb3B0aW9uey0tdGFnPUB2YXJ7dGFnfX0gYW5kIEBvcHRpb257LS1zaWxlbnR9 CihAcHhyZWZ7SW52b2tpbmcgbGlidG9vbCwgLCBJbnZva2luZyBAY29tbWFuZHtsaWJ0b29sfSwg bGlidG9vbCwgVGhlCkxpYnRvb2wgTWFudWFsfSBmb3IgbW9yZSBvcHRpb25zKS4gIFRoZXkgc2hv dWxkIGFwcGVhciBiZWZvcmUgdGhlIG1vZGUKc2VsZWN0aW9uIG9uIHRoZSBjb21tYW5kIGxpbmU7 IGluIEBmaWxle01ha2VmaWxlLmFtfXMgdGhleSBzaG91bGQKYmUgbGlzdGVkIGluIHRoZSBAc2Ft cHtAdmFye2xpYnJhcnl9X0xJQlRPT0xGTEFHU30gdmFyaWFibGUuCgpJZiBAc2FtcHtAdmFye2xp YnJhcnl9X0xJQlRPT0xGTEFHU30gaXMgbm90IGRlZmluZWQsIHRoZW4gdGhlIHZhcmlhYmxlCkBj b2Rle0FNX0xJQlRPT0xGTEFHU30gaXMgdXNlZCBpbnN0ZWFkLgoKVGhlc2UgZmxhZ3MgYXJlIHBh c3NlZCB0byBAY29tbWFuZHtsaWJ0b29sfSBhZnRlciB0aGUKQG9wdGlvbnstLXRhZz1AdmFye3Rh Z319IG9wdGlvbiBjb21wdXRlZCBieSBBdXRvbWFrZSAoaWYgYW55KSwgc28KQHNhbXB7QHZhcnts aWJyYXJ5fV9MSUJUT09MRkxBR1N9IChvciBAY29kZXtBTV9MSUJUT09MRkxBR1N9KSBpcyBhCmdv b2QgcGxhY2UgdG8gb3ZlcnJpZGUgb3Igc3VwcGxlbWVudCB0aGUgQG9wdGlvbnstLXRhZz1AdmFy e3RhZ319CnNldHRpbmcuCgpUaGUgbGlidG9vbCBydWxlcyBhbHNvIHVzZSBhIEBjb2Rle0xJQlRP T0xGTEFHU30gdmFyaWFibGUgdGhhdCBzaG91bGQKbm90IGJlIHNldCBpbiBAZmlsZXtNYWtlZmls ZS5hbX06IHRoaXMgaXMgYSB1c2VyIHZhcmlhYmxlIChAcHhyZWZ7RmxhZwpWYXJpYWJsZXMgT3Jk ZXJpbmd9KS4gIEl0IGFsbG93cyB1c2VycyB0byBydW4gQHNhbXB7bWFrZQpMSUJUT09MRkxBR1M9 LS1zaWxlbnR9LCBmb3IgaW5zdGFuY2UuICBOb3RlIHRoYXQgdGhlIHZlcmJvc2l0eSBvZgpAY29t bWFuZHtsaWJ0b29sfSBjYW4gYWxzbyBiZSBpbmZsdWVuY2VkIGJ5IHRoZSBBdXRvbWFrZSBzdXBw b3J0CmZvciBzaWxlbnQgcnVsZXMgKEBweHJlZntBdXRvbWFrZSBTaWxlbnQgUnVsZXN9KS4KCkBu b2RlIExUTElCT0JKUywgTGlidG9vbCBJc3N1ZXMsIExpYnRvb2wgRmxhZ3MsIEEgU2hhcmVkIExp YnJhcnkKQHN1YnNlY3Rpb24gQGNvZGV7TFRMSUJPQkpTfSBhbmQgQGNvZGV7TFRBTExPQ0F9CkBj aW5kZXggQGNvZGV7TFRMSUJPQkpTfSwgc3BlY2lhbCBoYW5kbGluZwpAY2luZGV4IEBjb2Rle0xJ Qk9CSlN9LCBhbmQgTGlidG9vbApAY2luZGV4IEBjb2Rle0xUQUxMT0NBfSwgc3BlY2lhbCBoYW5k bGluZwpAY2luZGV4IEBjb2Rle0FMTE9DQX0sIGFuZCBMaWJ0b29sCkB2aW5kZXggTFRMSUJPQkpT CkB2aW5kZXggTElCT0JKUwpAdmluZGV4IExUQUxMT0NBCkB2aW5kZXggQUxMT0NBCkBhY2luZGV4 IEFDX0xJQk9CSgoKV2hlcmUgYW4gb3JkaW5hcnkgbGlicmFyeSBtaWdodCBpbmNsdWRlIEBzYW1w eyQoTElCT0JKUyl9IG9yCkBzYW1weyQoQUxMT0NBKX0gKEBweHJlZntMSUJPQkpTfSksIGEgbGli dG9vbCBsaWJyYXJ5IG11c3QgdXNlCkBzYW1weyQoTFRMSUJPQkpTKX0gb3IgQHNhbXB7JChMVEFM TE9DQSl9LiAgVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlCnRoZSBvYmplY3QgZmlsZXMgdGhhdCBs aWJ0b29sIG9wZXJhdGVzIG9uIGRvIG5vdCBuZWNlc3NhcmlseSBlbmQgaW4KQGZpbGV7Lm99LgoK Tm93YWRheXMsIHRoZSBjb21wdXRhdGlvbiBvZiBAY29kZXtMVExJQk9CSlN9IGZyb20gQGNvZGV7 TElCT0JKU30gaXMKcGVyZm9ybWVkIGF1dG9tYXRpY2FsbHkgYnkgQXV0b2NvbmYgKEBweHJlZntB Q19MSUJPQkogdnMgTElCT0JKUywgLApAY29kZXtBQ19MSUJPQkp9IHZzLkA6IEBjb2Rle0xJQk9C SlN9LCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0pLgoKQG5vZGUgTGlidG9vbCBJc3N1 ZXMKQHN1YnNlY3Rpb24gQ29tbW9uIElzc3VlcyBSZWxhdGVkIHRvIExpYnRvb2wncyBVc2UKCkBt ZW51CiogRXJyb3IgcmVxdWlyZWQgZmlsZSBsdG1haW4uc2ggbm90IGZvdW5kOjogICAgICAgIFRo ZSBuZWVkIHRvIHJ1biBsaWJ0b29saXplCiogTGlidG9vbCBsaWJyYXJ5IHVzZWQgYnV0IExJQlRP T0wgaXMgdW5kZWZpbmVkOjogIGFjbG9jYWwgYW5kIHRlc3QgcmVsZWFzZXMKKiBPYmplY3RzIGNy ZWF0ZWQgYm90aCB3aXRoIGxpYnRvb2wgYW5kIHdpdGhvdXQ6OiAgQXZvaWQgYSBzcGVjaWZpYyBi dWlsZCByYWNlCkBlbmQgbWVudQoKQG5vZGUgRXJyb3IgcmVxdWlyZWQgZmlsZSBsdG1haW4uc2gg bm90IGZvdW5kCkBzdWJzdWJzZWN0aW9uIEVycm9yOiBAc2FtcHtyZXF1aXJlZCBmaWxlICcuL2x0 bWFpbi5zaCcgbm90IGZvdW5kfS0tLUBjb21tYW5ke2xpYnRvb2xpemV9IG5lZWRlZApAY2luZGV4 IEBmaWxle2x0bWFpbi5zaH0gbm90IGZvdW5kCkBjaW5kZXggQGNvbW1hbmR7bGlidG9vbGl6ZX0s IG5vIGxvbmdlciBydW4gYnkgQGNvbW1hbmR7YXV0b21ha2V9CkBjaW5kZXggQGNvbW1hbmR7bGli dG9vbGl6ZX0gYW5kIEBjb21tYW5ke2F1dG9yZWNvbmZ9CkBjaW5kZXggQGNvbW1hbmR7YXV0b3Jl Y29uZn0gYW5kIEBjb21tYW5ke2xpYnRvb2xpemV9CkBjaW5kZXggQGZpbGV7Ym9vdHN0cmFwfSBh bmQgQGNvbW1hbmR7YXV0b3JlY29uZn0KQGNpbmRleCBAZmlsZXthdXRvZ2VuLnNofSBhbmQgQGNv bW1hbmR7YXV0b3JlY29uZn0KCkxpYnRvb2wgY29tZXMgd2l0aCBhIHRvb2wgY2FsbGVkIEBjb21t YW5ke2xpYnRvb2xpemV9IHRoYXQgd2lsbAppbnN0YWxsIExpYnRvb2wncyBzdXBwb3J0aW5nIGZp bGVzIGludG8gYSBwYWNrYWdlLiAgUnVubmluZyB0aGlzCmNvbW1hbmQgd2lsbCBpbnN0YWxsIEBm aWxle2x0bWFpbi5zaH0uICBZb3Ugc2hvdWxkIGV4ZWN1dGUgaXQgYmVmb3JlCkBjb21tYW5ke2Fj bG9jYWx9IGFuZCBAY29tbWFuZHthdXRvbWFrZX0uCgpQZW9wbGUgdXBncmFkaW5nIG9sZCBwYWNr YWdlcyB0byBuZXdlciBhdXRvdG9vbHMgYXJlIGxpa2VseSB0byBmYWNlCnRoaXMgaXNzdWUgYmVj YXVzZSBvbGRlciBBdXRvbWFrZSB2ZXJzaW9ucyB1c2VkIHRvIGNhbGwKQGNvbW1hbmR7bGlidG9v bGl6ZX0uICBUaGVyZWZvcmUgb2xkIGJ1aWxkIHNjcmlwdHMgZG8gbm90IGNhbGwKQGNvbW1hbmR7 bGlidG9vbGl6ZX0uCgpTaW5jZSBBdXRvbWFrZSAxLjYsIGl0IGhhcyBiZWVuIGRlY2lkZWQgdGhh dCBydW5uaW5nCkBjb21tYW5ke2xpYnRvb2xpemV9IHdhcyBub3QgQXV0b21ha2UncyBidXNpbmVz cy4gIEluc3RlYWQsIHRoYXQKZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBA Y29tbWFuZHthdXRvcmVjb25mfSBjb21tYW5kCihAcHhyZWZ7YXV0b3JlY29uZiBJbnZvY2F0aW9u LCAsIFVzaW5nIEBjb21tYW5ke2F1dG9yZWNvbmZ9LCBhdXRvY29uZiwKVGhlIEF1dG9jb25mIE1h bnVhbH0pLiAgVGhlIEBjb21tYW5ke2F1dG9yZWNvbmZ9IGNvbW1hbmQgc2F2ZXMgeW91CmZyb20g aGF2aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggaW5mcmFzdHJ1Y3R1cmUgc2NyaXB0cyB0byBydW4g aW4gd2hhdApvcmRlci4gIEF1Z21lbnRpbmcgZXhpc3RpbmcgQGZpbGV7Ym9vdHN0cmFwfSBvciBA ZmlsZXthdXRvZ2VuLnNofQpzY3JpcHRzIHdpdGggYSBjYWxsIHRvIEBjb21tYW5ke2F1dG9yZWNv bmZ9IHNob3VsZCBhbHNvIGZyZWUgeW91IGZyb20KYW55IHNpbWlsYXIgaW5jb21wYXRpYmxlIGNo YW5nZSBpbiB0aGUgZnV0dXJlLgoKQG5vZGUgTGlidG9vbCBsaWJyYXJ5IHVzZWQgYnV0IExJQlRP T0wgaXMgdW5kZWZpbmVkCkBzdWJzdWJzZWN0aW9uIEVycm9yOiBAc2FtcHtMaWJ0b29sIGxpYnJh cnkgdXNlZCBidXQgJ0xJQlRPT0wnIGlzIHVuZGVmaW5lZH0tLS1AY29tbWFuZHtsaWJ0b29saXpl fSByZWR1eApAY2luZGV4IExpYnRvb2wgbGlicmFyeSB1c2VkIGJ1dCBAc2FtcHtMSUJUT09MfSBp cyB1bmRlZmluZWQKQGNpbmRleCBAc2FtcHtMSUJUT09MfSBpcyB1bmRlZmluZWQKClRoaXMgZXJy b3IgbWVzc2FnZSByZXN1bHRzIGZyb20gQXV0b21ha2Ugc2VlaW5nIExpYnRvb2wgYmVpbmcgdXNl ZCBpbgpAZmlsZXtNYWtlZmlsZS5hbX0sIGJ1dCB0aGUgQGNvZGV7TElCVE9PTH0gdmFyaWFibGUg aXMgbm90IGRlZmluZWQuClRoZXJlIGFyZSB0d28gY29tbW9uIHJlYXNvbnMgZm9yIHRoaXMuICBG aXJzdCwgQGNvZGV7TFRfSU5JVH0gaXMKbWlzc2luZyBmcm9tIEBmaWxle2NvbmZpZ3VyZS5hY307 IGl0IGNhbiBzaW1wbHkgYmUgYWRkZWQuCgpUaGUgc2Vjb25kIHJlYXNvbiBpcyBtb3JlIGNvbXBs aWNhdGVkOiBpZiB5b3UndmUgaW5zdGFsbGVkIEF1dG9tYWtlCnVuZGVyIGEgc2VwYXJhdGUgcHJl Zml4LCBBdXRvbWFrZSBjYW5ub3Qga25vdyB3aGVyZSB0byBmaW5kIHRoZQpAY29kZXtMVF9JTklU fSBtYWNyby4gIEF1dG9tYWtlIGxvb2tzIGluIHRoZSBAZmlsZXthY2xvY2FsLm00fSBmaWxlLAp3 aGljaCBpcyBnZW5lcmF0ZWQgYnkgdGhlIEBjb21tYW5ke2FjbG9jYWx9IGNvbW1hbmQgKEBweHJl ZnthY2xvY2FsCkludm9jYXRpb259KS4gQnV0IHNpbmNlIHRoZSBkZWZhdWx0IHNlYXJjaCBwYXRo cyBmb3IgQGNvbW1hbmR7YWNsb2NhbH0KYXJlIGJhc2VkIG9uIHdoZXJlIGl0IGlzIGluc3RhbGxl ZCAoQHB4cmVme01hY3JvIFNlYXJjaCBQYXRofSksIGlmCkF1dG9tYWtlIGlzIGluc3RhbGxlZCBp biBvbmUgcGxhY2UgKGUuZy4sIGJlY2F1c2UgaXQncyBmb3IgYSB0ZXN0CnJlbGVhc2UpLCBhbmQg TGlidG9vbCBpbiBhbm90aGVyIChlLmcuLCBmb3IgZ2VuZXJhbCBzeXN0ZW0gdXNlKSwKQGZpbGV7 bGlidG9vbC5tNH0gd29uJ3QgYmUgZm91bmQgYnkgQGNvbW1hbmR7YWNsb2NhbH0gYW5kIHRodXMK QGNvZGV7TFRfSU5JVH0gd29uJ3QgYmUgZGVmaW5lZC4KClRoZSBiZXN0IHNvbHV0aW9uIGlzIHRv IHJ1biBAY29tbWFuZHtsaWJ0b29saXplfSBpbiB0aGUgdHJlZSB0aGF0IGlzCnVzaW5nIHRoZSBz ZXBhcmF0ZWx5LWluc3RhbGxlZCBBdXRvbWFrZS4gIFRoYXQgd2lsbCBjb3B5CkBmaWxle2xpYnRv b2wubTR9IGFuZCB0aGUgb3RoZXIgTGlidG9vbCBNNCBmaWxlcyBhbmQgc2NyaXB0cyBpbnRvIHlv dXIKcGFja2FnZSwgaW5jbHVkaW5nIEBmaWxle2x0bWFpbi5zaH0gKHNlZSBwcmV2aW91cyBzZWN0 aW9uKS4gIElmIHlvdQpoYXZlIHN1YnBhY2thZ2VzIHRoYXQgdXNlIExpYnRvb2wgaW5kZXBlbmRl bnRseSwgeW91J2xsIG5lZWQgdG8gcnVuCkBjb21tYW5ke2xpYnRvb2xpemV9IGluIGVhY2ggb2Yg dGhlbS4gQHhyZWZ7SW52b2tpbmcgbGlidG9vbGl6ZSwsLApsaWJ0b29sLCBUaGUgTGlidG9vbCBN YW51YWx9LgoKVGhlIEBjb21tYW5ke2xpYnRvb2xpemV9IG91dHB1dCBzdWdnZXN0cyB1c2luZyBh biBAZmlsZXttNH0gc3ViZGlyZWN0b3J5OgoKQGV4YW1wbGUKbGlidG9vbGl6ZTogQ29uc2lkZXIg YWRkaW5nICdBQ19DT05GSUdfTUFDUk9fRElSUyhbbTRdKScgdG8gY29uZmlndXJlLmFjLApsaWJ0 b29saXplOiBhbmQgcmVydW5uaW5nIGxpYnRvb2xpemUgYW5kIGFjbG9jYWwuCmxpYnRvb2xpemU6 IENvbnNpZGVyIGFkZGluZyAnLUkgbTQnIHRvIEFDTE9DQUxfQU1GTEFHUyBpbiBNYWtlZmlsZS5h bS4KQGVuZCBleGFtcGxlCgpGb3IgcHVycG9zZXMgb2YgTGlidG9vbCBhbmQgQXV0b21ha2UsIGhv d2V2ZXIsIGFuIG00IHN1YmRpcmVjdG9yeSBpcwpyZXF1aXJlZCwgbm90IGp1c3Qgc29tZXRoaW5n IHRvIGNvbnNpZGVyLiAgV2l0aG91dCBoYXZpbmcgdGhlIExpYnRvb2wKTTQgZmlsZXMgaW4gdGhl IGxvY2FsIHBhY2thZ2UsIEBjb21tYW5ke2FjbG9jYWx9IHdpbGwgKGZydXN0cmF0aW5nbHkpCnJl cG9ydCB0aGUgc2FtZSBAc2FtcHtMaWJ0b29sIGxpYnJhcnkgdXNlZCBidXQgLi4ufSBlcnJvci4g IChUaGUgbmFtZQpvZiB0aGUgc3ViZGlyZWN0b3J5IGZvciB0aGUgTTQgZmlsZXMgY2FuIGJlIGFu eXRoaW5nLCBidXQgQHNhbXB7bTR9IGlzCmJ5IGZhciB0aGUgbW9zdCBjb21tb24gY29udmVudGlv bi4pCgpIZXJlIGlzIGEgY29uY3JldGUgZXhhbXBsZS4gIFN1cHBvc2UgeW91J3ZlIGluc3RhbGxl ZCBhIHRlc3QKcmVsZWFzZSBvZiBBdXRvbWFrZSAodGhhbmsgeW91KSB3aXRoIEBjb2Rley0tcHJl Zml4PS90bXAvYW10ZXN0fSwgYW5kCnRodXMgcHV0IEBjb2Rley90bXAvYW10ZXN0L2Jpbn0gZmly c3QgaW4geW91ciBAZW52e1BBVEh9LiAgWW91IGFscmVhZHkKaGF2ZSBMaWJ0b29sIGluc3RhbGxl ZCB1bmRlciBAY29kZXsvdXNyL2xvY2FsL2dudX0uICBUaGVuLCB5b3VyCkxpYnRvb2wtdXNpbmcg cGFja2FnZSB3aWxsIGZhaWwgdG8gYm9vdHN0cmFwLCB3aXRoIHRoZSBlcnJvcjoKCkBleGFtcGxl Ck1ha2VmaWxlLmFtOjE2MTogZXJyb3I6IExpYnRvb2wgbGlicmFyeSB1c2VkIGJ1dCAnTElCVE9P TCcgaXMgdW5kZWZpbmVkCi4uLgpAZW5kIGV4YW1wbGUKCllvdSBjYW4gcmVzb2x2ZSB0aGlzIGJ5 IGVuc3VyaW5nIHlvdXIgQGZpbGV7Y29uZmlndXJlLmFjfSBpbmNsdWRlcwp0aGVzZSBsaW5lcyAo YWZ0ZXIgdGhlIEBjb2Rle0FNX0lOSVRfQVVUT01BS0V9KToKCkBleGFtcGxlCkFDX0NPTkZJR19N QUNST19ESVJTKFttNF0pCkFNX1BST0dfQVIKTFRfSU5JVApAZW5kIGV4YW1wbGUKCkBub2luZGVu dAphbmQgdGhlbiBydW5uaW5nOgoKQGV4YW1wbGUKbGlidG9vbGl6ZQphdXRvcmVjb25mCkBlbmQg ZXhhbXBsZQoKQG5vaW5kZW50ClRvIHN1bW1hcml6ZSwgdGhlIEBjb21tYW5ke2xpYnRvb2xpemV9 IChmcm9tIHRoZSBzeXN0ZW0gZGlyZWN0b3J5KQpjb3BpZXMgQGZpbGV7bGlidG9vbC5tNH0gYW5k IHRoZSBvdGhlciBMaWJ0b29sIHN1cHBvcnQgZmlsZXMgaW50byB5b3VyCnBhY2thZ2UuIFRoZSBz dWJzZXF1ZW50IEBjb21tYW5ke2F1dG9yZWNvbmZ9IHRoZW4gcnVucwpAY29tbWFuZHthY2xvY2Fs fSAodW5kZXIgdGhlIHRlc3QgcHJlZml4KSB3aGljaCBjYW4gbm93IGZpbmQKQGNvZGV7TFRfSU5J VH0uCgooRm9yIG1vcmUgZGlzY3Vzc2lvbiBvZiB0aGlzLCBzZWUgQHVybHtodHRwczovL2J1Z3Mu Z251Lm9yZy83MTg0N30uCgpAbm9kZSBPYmplY3RzIGNyZWF0ZWQgYm90aCB3aXRoIGxpYnRvb2wg YW5kIHdpdGhvdXQKQHN1YnN1YnNlY3Rpb24gT2JqZWN0cyBAc2FtcHtjcmVhdGVkIHdpdGggYm90 aCBsaWJ0b29sIGFuZCB3aXRob3V0fQoKU29tZXRpbWVzLCB0aGUgc2FtZSBzb3VyY2UgZmlsZSBp cyB1c2VkIGJvdGggdG8gYnVpbGQgYSBMaWJ0b29sCmxpYnJhcnkgYW5kIHRvIGJ1aWxkIGFub3Ro ZXIgbm9uLWxpYnRvb2wgdGFyZ2V0IChiZSBpdCBhIHByb2dyYW0gb3IKYW5vdGhlciBsaWJyYXJ5 KS4KCkxldCdzIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgQGZpbGV7TWFrZWZpbGUuYW19LgoKQGV4 YW1wbGUKYmluX1BST0dSQU1TID0gcHJvZwpwcm9nX1NPVVJDRVMgPSBwcm9nLmMgZm9vLmMgQGRv dHN7fQoKbGliX0xUTElCUkFSSUVTID0gbGliZm9vLmxhCmxpYmZvb19sYV9TT1VSQ0VTID0gZm9v LmMgQGRvdHN7fQpAZW5kIGV4YW1wbGUKCkBub2luZGVudAooSW4gdGhpcyB0cml2aWFsIGNhc2Ug dGhlIGlzc3VlIGNvdWxkIGJlIGF2b2lkZWQgYnkgbGlua2luZwpAZmlsZXtsaWJmb28ubGF9IHdp dGggQGZpbGV7cHJvZ30gaW5zdGVhZCBvZiBsaXN0aW5nIEBmaWxle2Zvby5jfSBpbgpAY29kZXtw cm9nX1NPVVJDRVN9LiAgQnV0IGxldCdzIGFzc3VtZSB3ZSB3YW50IHRvIGtlZXAgQGZpbGV7cHJv Z30gYW5kCkBmaWxle2xpYmZvby5sYX0gc2VwYXJhdGUuKQoKVGVjaG5pY2FsbHksIGl0IG1lYW5z IHRoYXQgd2Ugc2hvdWxkIGJ1aWxkIEBmaWxle2Zvby4kKE9CSkVYVCl9IGZvcgpAZmlsZXtwcm9n fSwgYW5kIEBmaWxle2Zvby5sb30gZm9yIEBmaWxle2xpYmZvby5sYX0uICBUaGUgcHJvYmxlbSBp cwp0aGF0IGluIHRoZSBjb3Vyc2Ugb2YgY3JlYXRpbmcgQGZpbGV7Zm9vLmxvfSwgTGlidG9vbCBt YXkgZXJhc2UgKG9yCnJlcGxhY2UpIEBmaWxle2Zvby4kKE9CSkVYVCl9LCBhbmQgdGhpcyBjYW5u b3QgYmUgYXZvaWRlZC4KClRoZXJlZm9yZSwgd2hlbiBBdXRvbWFrZSBkZXRlY3RzIHRoaXMgc2l0 dWF0aW9uIGl0IHdpbGwgY29tcGxhaW4Kd2l0aCBhIG1lc3NhZ2Ugc3VjaCBhcwpAZXhhbXBsZQpv YmplY3QgJ2Zvby4kKE9CSkVYVCknIGNyZWF0ZWQgYm90aCB3aXRoIGxpYnRvb2wgYW5kIHdpdGhv dXQKQGVuZCBleGFtcGxlCgpBIHdvcmthcm91bmQgZm9yIHRoaXMgaXNzdWUgaXMgdG8gZW5zdXJl IHRoYXQgdGhlc2UgdHdvIG9iamVjdHMgZ2V0CmRpZmZlcmVudCBiYXNlbmFtZXMuICBBcyBleHBs YWluZWQgaW4gQHJlZntSZW5hbWVkIE9iamVjdHN9LCB0aGlzCmhhcHBlbnMgYXV0b21hdGljYWxs eSB3aGVuIHBlci10YXJnZXQgZmxhZ3MgYXJlIHVzZWQuCgpAZXhhbXBsZQpiaW5fUFJPR1JBTVMg PSBwcm9nCnByb2dfU09VUkNFUyA9IHByb2cuYyBmb28uYyBAZG90c3t9CnByb2dfQ0ZMQUdTID0g JChBTV9DRkxBR1MpCgpsaWJfTFRMSUJSQVJJRVMgPSBsaWJmb28ubGEKbGliZm9vX2xhX1NPVVJD RVMgPSBmb28uYyBAZG90c3t9CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CkFkZGluZyBAc2FtcHtw cm9nX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKX0gaXMgYWxtb3N0IGEgbm8tb3AsIGJlY2F1c2UKd2hl biB0aGUgQGNvZGV7cHJvZ19DRkxBR1N9IGlzIGRlZmluZWQsIGl0IGlzIHVzZWQgaW5zdGVhZCBv ZgpAY29kZXtBTV9DRkxBR1N9LiAgSG93ZXZlciBhcyBhIHNpZGUgZWZmZWN0IGl0IHdpbGwgY2F1 c2UKQGZpbGV7cHJvZy5jfSBhbmQgQGZpbGV7Zm9vLmN9IHRvIGJlIGNvbXBpbGVkIGFzCkBmaWxl e3Byb2ctcHJvZy4kKE9CSkVYVCl9IGFuZCBAZmlsZXtwcm9nLWZvby4kKE9CSkVYVCl9LCB3aGlj aCBzb2x2ZXMKdGhlIGlzc3VlLgoKQG5vZGUgUHJvZ3JhbSBhbmQgTGlicmFyeSBWYXJpYWJsZXMK QHNlY3Rpb24gUHJvZ3JhbSBhbmQgTGlicmFyeSBWYXJpYWJsZXMKCkFzc29jaWF0ZWQgd2l0aCBl YWNoIHByb2dyYW0gaXMgYSBjb2xsZWN0aW9uIG9mIHZhcmlhYmxlcyB0aGF0IGNhbiBiZQp1c2Vk IHRvIG1vZGlmeSBob3cgdGhhdCBwcm9ncmFtIGlzIGJ1aWx0LiAgVGhlcmUgaXMgYSBzaW1pbGFy IGxpc3Qgb2YKc3VjaCB2YXJpYWJsZXMgZm9yIGVhY2ggbGlicmFyeS4gIFRoZSBjYW5vbmljYWwg bmFtZSBvZiB0aGUgcHJvZ3JhbSAob3IKbGlicmFyeSkgaXMgdXNlZCBhcyBhIGJhc2UgZm9yIG5h bWluZyB0aGVzZSB2YXJpYWJsZXMuCgpJbiB0aGUgbGlzdCBiZWxvdywgd2UgdXNlIHRoZSBuYW1l IGBgbWF1ZGUnJyB0byByZWZlciB0byB0aGUgcHJvZ3JhbSBvcgpsaWJyYXJ5LiAgSW4geW91ciBA ZmlsZXtNYWtlZmlsZS5hbX0geW91IHdvdWxkIHJlcGxhY2UgdGhpcyB3aXRoIHRoZQpjYW5vbmlj YWwgbmFtZSBvZiB5b3VyIHByb2dyYW0uICBUaGlzIGxpc3QgYWxzbyByZWZlcnMgdG8gYGBtYXVk ZScnIGFzIGEKcHJvZ3JhbSwgYnV0IGluIGdlbmVyYWwgdGhlIHNhbWUgcnVsZXMgYXBwbHkgZm9y IGJvdGggc3RhdGljIGFuZCBkeW5hbWljCmxpYnJhcmllczsgdGhlIGRvY3VtZW50YXRpb24gYmVs b3cgbm90ZXMgc2l0dWF0aW9ucyB3aGVyZSBwcm9ncmFtcyBhbmQKbGlicmFyaWVzIGRpZmZlci4K CkB2dGFibGUgQGNvZGUKQGl0ZW0gbWF1ZGVfU09VUkNFUwpUaGlzIHZhcmlhYmxlLCBpZiBpdCBl eGlzdHMsIGxpc3RzIGFsbCB0aGUgc291cmNlIGZpbGVzIHRoYXQgYXJlCmNvbXBpbGVkIHRvIGJ1 aWxkIHRoZSBwcm9ncmFtLiAgVGhlc2UgZmlsZXMgYXJlIGFkZGVkIHRvIHRoZQpkaXN0cmlidXRp b24gYnkgZGVmYXVsdC4gIFdoZW4gYnVpbGRpbmcgdGhlIHByb2dyYW0sIEF1dG9tYWtlIHdpbGwg Y2F1c2UKZWFjaCBzb3VyY2UgZmlsZSB0byBiZSBjb21waWxlZCB0byBhIHNpbmdsZSBAZmlsZXsu b30gZmlsZSAob3IKQGZpbGV7LmxvfSB3aGVuIHVzaW5nIExpYnRvb2wpLiAgTm9ybWFsbHkgdGhl c2Ugb2JqZWN0IGZpbGVzIGFyZSBuYW1lZAphZnRlciB0aGUgc291cmNlIGZpbGUsIGJ1dCBvdGhl ciBmYWN0b3JzIGNhbiBjaGFuZ2UgdGhpcy4gIElmIGEgZmlsZSBpbgp0aGUgQGNvZGV7X1NPVVJD RVN9IHZhcmlhYmxlIGhhcyBhbiB1bnJlY29nbml6ZWQgZXh0ZW5zaW9uLCBBdXRvbWFrZQp3aWxs IGRvIG9uZSBvZiB0d28gdGhpbmdzIHdpdGggaXQuICBJZiBhIHN1ZmZpeCBydWxlIGV4aXN0cyBm b3IgdHVybmluZwpmaWxlcyB3aXRoIHRoZSB1bnJlY29nbml6ZWQgZXh0ZW5zaW9uIGludG8gQGZp bGV7Lm99IGZpbGVzLCB0aGVuCkBjb21tYW5ke2F1dG9tYWtlfSB3aWxsIHRyZWF0IHRoaXMgZmls ZSBhcyBpdCB3aWxsIGFueSBvdGhlciBzb3VyY2UgZmlsZQooQHB4cmVme1N1cHBvcnQgZm9yIE90 aGVyIExhbmd1YWdlc30pLiAgT3RoZXJ3aXNlLCB0aGUgZmlsZSB3aWxsIGJlCmlnbm9yZWQgYXMg dGhvdWdoIGl0IHdlcmUgYSBoZWFkZXIgZmlsZS4KClRoZSBwcmVmaXhlcyBAY29kZXtkaXN0X30g YW5kIEBjb2Rle25vZGlzdF99IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wKd2hldGhlciBmaWxlcyBs aXN0ZWQgaW4gYSBAY29kZXtfU09VUkNFU30gdmFyaWFibGUgYXJlIGRpc3RyaWJ1dGVkLgpAY29k ZXtkaXN0X30gaXMgcmVkdW5kYW50LCBhcyBzb3VyY2VzIGFyZSBkaXN0cmlidXRlZCBieSBkZWZh dWx0LCBidXQgaXQKY2FuIGJlIHNwZWNpZmllZCBmb3IgY2xhcml0eSBpZiBkZXNpcmVkLgoKSXQg aXMgcG9zc2libGUgdG8gaGF2ZSBib3RoIEBjb2Rle2Rpc3RffSBhbmQgQGNvZGV7bm9kaXN0X30g dmFyaWFudHMgb2YKYSBnaXZlbiBAY29kZXtfU09VUkNFU30gdmFyaWFibGUgYXQgb25jZTsgdGhp cyBsZXRzIHlvdSBlYXNpbHkKZGlzdHJpYnV0ZSBzb21lIGZpbGVzIGFuZCBub3Qgb3RoZXJzLCBm b3IgaW5zdGFuY2U6CgpAZXhhbXBsZQpub2Rpc3RfbWF1ZGVfU09VUkNFUyA9IG5vZGlzdC5jCmRp c3RfbWF1ZGVfU09VUkNFUyA9IGRpc3QtbWUuYwpAZW5kIGV4YW1wbGUKCkJ5IGRlZmF1bHQgdGhl IG91dHB1dCBmaWxlIChvbiBVbml4IHN5c3RlbXMsIHRoZSBAZmlsZXsub30gZmlsZSkgd2lsbApi ZSBwdXQgaW50byB0aGUgY3VycmVudCBidWlsZCBkaXJlY3RvcnkuICBIb3dldmVyLCBpZiB0aGUg b3B0aW9uCkBvcHRpb257c3ViZGlyLW9iamVjdHN9IGlzIGluIGVmZmVjdCBpbiB0aGUgY3VycmVu dCBkaXJlY3RvcnkgdGhlbiB0aGUKQGZpbGV7Lm99IGZpbGUgd2lsbCBiZSBwdXQgaW50byB0aGUg c3ViZGlyZWN0b3J5IG5hbWVkIGFmdGVyIHRoZQpzb3VyY2UgZmlsZS4gIEZvciBpbnN0YW5jZSwg d2l0aCBAb3B0aW9ue3N1YmRpci1vYmplY3RzfSBlbmFibGVkLApAZmlsZXtzdWIvZGlyL2ZpbGUu Y30gd2lsbCBiZSBjb21waWxlZCB0byBAZmlsZXtzdWIvZGlyL2ZpbGUub30uICBTb21lCnByb2pl Y3RzIHByZWZlciBvciByZXF1aXJlIHRoaXMgbW9kZSBvZiBvcGVyYXRpb24uICBZb3UgY2FuIHNw ZWNpZnkKQG9wdGlvbntzdWJkaXItb2JqZWN0c30gaW4gQGNvZGV7QVVUT01BS0VfT1BUSU9OU30g KEBweHJlZntPcHRpb25zfSkuCkBjaW5kZXggU3ViZGlyZWN0b3J5LCBvYmplY3RzIGluCkBjaW5k ZXggT2JqZWN0cyBpbiBzdWJkaXJlY3RvcnkKCkBjIGh0dHBzOi8vYnVncy5nbnUub3JnLzIwNjk5 CldoZW4gQG9wdGlvbntzdWJkaXItb2JqZWN0c30gaXMgc3BlY2lmaWVkLCBhbmQgc291cmNlIGZp bGVzIHdoaWNoIGxpZQpvdXRzaWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB0cmVlIGFyZSBuZXZl cnRoZWxlc3Mgc3BlY2lmaWVkLCBhcyBpbgpAY29kZXtmb29fU09VUkNFUyA9IC4uL2xpYi9vdGhl ci5jfSwgQXV0b21ha2Ugd2lsbCBzdGlsbCByZW1vdmUKQGZpbGV7Li4vbGliL290aGVyLm99LCBp biBmYWN0LCBAZmlsZXsuLi9saWIvKi5vfSAoZS5nLiwgYXQgQGNvZGV7bWFrZQpjbGVhbn0sIGV2 ZW4gdGhvdWdoIGl0IGlzIGFyZ3VhYmx5IHdyb25nIGZvciBvbmUgc3ViZGlyZWN0b3J5IHRvCmNs ZWFuIGluIGEgc2libGluZy4gIFRoaXMgbWF5IG9yIG1heSBub3QgYmUgY2hhbmdlZCBpbiB0aGUg ZnV0dXJlLgoKQGl0ZW0gRVhUUkFfbWF1ZGVfU09VUkNFUwpBdXRvbWFrZSBuZWVkcyB0byBrbm93 IHRoZSBsaXN0IG9mIGZpbGVzIHlvdSBpbnRlbmQgdG8gY29tcGlsZQpAZW1waHtzdGF0aWNhbGx5 fS4gIEZvciBvbmUgdGhpbmcsIHRoaXMgaXMgdGhlIG9ubHkgd2F5IEF1dG9tYWtlIGhhcyBvZgpr bm93aW5nIHdoYXQgc29ydCBvZiBsYW5ndWFnZSBzdXBwb3J0IGEgZ2l2ZW4gQGZpbGV7TWFrZWZp bGUuaW59CnJlcXVpcmVzLiAgKFRoZXJlIGFyZSBvdGhlciwgbW9yZSBvYnNjdXJlIHJlYXNvbnMg Zm9yCnRoaXMgbGltaXRhdGlvbiBhcyB3ZWxsLikgIFRoaXMgbWVhbnMgdGhhdCwgZm9yIGV4YW1w bGUsIHlvdSBjYW4ndCBwdXQgYQpjb25maWd1cmUgc3Vic3RpdHV0aW9uIGxpa2UgQHNhbXB7QEBt eV9zb3VyY2VzQEB9IGludG8gYSBAc2FtcHtfU09VUkNFU30KdmFyaWFibGUuICBJZiB5b3UgaW50 ZW5kIHRvIGNvbmRpdGlvbmFsbHkgY29tcGlsZSBzb3VyY2UgZmlsZXMgYW5kIHVzZQpAZmlsZXtj b25maWd1cmV9IHRvIHN1YnN0aXR1dGUgdGhlIGFwcHJvcHJpYXRlIG9iamVjdCBuYW1lcyBpbnRv LCBlLmcuLApAY29kZXtfTERBRER9IChzZWUgYmVsb3cpLCB0aGVuIHlvdSBzaG91bGQgbGlzdCB0 aGUgY29ycmVzcG9uZGluZyBzb3VyY2UKZmlsZXMgaW4gdGhlIEBjb2Rle0VYVFJBX30gdmFyaWFi bGUuCgpUaGlzIHZhcmlhYmxlIGFsc28gc3VwcG9ydHMgQGNvZGV7ZGlzdF99IGFuZCBAY29kZXtu b2Rpc3RffSBwcmVmaXhlcy4KRm9yIGluc3RhbmNlLCBAY29kZXtub2Rpc3RfRVhUUkFfbWF1ZGVf U09VUkNFU30gd291bGQgbGlzdCBleHRyYQpzb3VyY2VzIHRoYXQgbWF5IG5lZWQgdG8gYmUgYnVp bHQsIGJ1dCBzaG91bGQgbm90IGJlIGRpc3RyaWJ1dGVkLgoKQGl0ZW0gbWF1ZGVfQVIKQSBzdGF0 aWMgbGlicmFyeSBpcyBjcmVhdGVkIGJ5IGRlZmF1bHQgYnkgaW52b2tpbmcgQHNhbXB7JChBUikK JChBUkZMQUdTKX0gZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgYW5kIHRoZW4g dGhlIG9iamVjdHMKYmVpbmcgcHV0IGludG8gdGhlIGxpYnJhcnkuICBZb3UgY2FuIG92ZXJyaWRl IHRoaXMgYnkgc2V0dGluZyB0aGUKQGNvZGV7X0FSfSB2YXJpYWJsZS4gIFRoaXMgaXMgdXN1YWxs eSB1c2VkIHdpdGggQysrOyBzb21lIEMrKwpjb21waWxlcnMgcmVxdWlyZSBhIHNwZWNpYWwgaW52 b2NhdGlvbiBpbiBvcmRlciB0byBpbnN0YW50aWF0ZSBhbGwgdGhlCnRlbXBsYXRlcyB0aGF0IHNo b3VsZCBnbyBpbnRvIGEgbGlicmFyeS4gIEZvciBpbnN0YW5jZSwgdGhlIFNHSSBDKysKY29tcGls ZXIgbGlrZXMgdGhpcyB2YXJpYWJsZSBzZXQgbGlrZSBzbzoKQGV4YW1wbGUKbGlibWF1ZGVfYV9B UiA9ICQoQ1hYKSAtYXIgLW8KQGVuZCBleGFtcGxlCgpAaXRlbSBtYXVkZV9SQU5MSUIKQSBzdGF0 aWMgbGlicmFyeSdzIGluZGV4IGlzIHVwZGF0ZWQgYnkgZGVmYXVsdCBieSBpbnZva2luZyBAc2Ft cHskKFJBTkxJQil9CmZvbGxvd2VkIGJ5IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5LiAgWW91IGNh biBvdmVycmlkZSB0aGlzIGJ5IHNldHRpbmcgdGhlCkBjb2Rle19SQU5MSUJ9IHZhcmlhYmxlLgoK QGl0ZW0gbWF1ZGVfTElCQURECkV4dHJhIG9iamVjdHMgY2FuIGJlIGFkZGVkIHRvIGEgQGVtcGh7 bGlicmFyeX0gdXNpbmcgdGhlIEBjb2Rle19MSUJBRER9CnZhcmlhYmxlLiAgRm9yIGluc3RhbmNl LCB0aGlzIHNob3VsZCBiZSB1c2VkIGZvciBvYmplY3RzIGRldGVybWluZWQgYnkKQGNvbW1hbmR7 Y29uZmlndXJlfSAoQHB4cmVme0EgTGlicmFyeX0pLgoKSW4gdGhlIGNhc2Ugb2YgTGlidG9vbCBs aWJyYXJpZXMsIEBjb2Rle21hdWRlX0xJQkFERH0gY2FuIGFsc28gcmVmZXIKdG8gb3RoZXIgTGli dG9vbCBsaWJyYXJpZXMuCgpAaXRlbSBtYXVkZV9MREFERApFeHRyYSBvYmplY3RzIChAZmlsZXsq LiQoT0JKRVhUKX0pIGFuZCBsaWJyYXJpZXMgKEBmaWxleyouYX0sCkBmaWxleyoubGF9KSBjYW4g YmUgYWRkZWQgdG8gYSBAZW1waHtwcm9ncmFtfSBieSBsaXN0aW5nIHRoZW0gaW4gdGhlCkBjb2Rl e19MREFERH0gdmFyaWFibGUuICBGb3IgaW5zdGFuY2UsIHRoaXMgc2hvdWxkIGJlIHVzZWQgZm9y IG9iamVjdHMKZGV0ZXJtaW5lZCBieSBAY29tbWFuZHtjb25maWd1cmV9IChAcHhyZWZ7TGlua2lu Z30pLgoKQGNvZGV7X0xEQUREfSBhbmQgQGNvZGV7X0xJQkFERH0gYXJlIGluYXBwcm9wcmlhdGUg Zm9yIHBhc3NpbmcKcHJvZ3JhbS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MgKGV4Y2VwdCBmb3IgQG9w dGlvbnstbH0sIEBvcHRpb257LUx9LApAb3B0aW9uey1kbG9wZW59IGFuZCBAb3B0aW9uey1kbHBy ZW9wZW59KS4gIFVzZSB0aGUgQGNvZGV7X0xERkxBR1N9IHZhcmlhYmxlCmZvciB0aGlzIHB1cnBv c2UuCgpGb3IgaW5zdGFuY2UsIGlmIHlvdXIgQGZpbGV7Y29uZmlndXJlLmFjfSB1c2VzIEBjb2Rl e0FDX1BBVEhfWFRSQX0sIHlvdQpjb3VsZCBsaW5rIHlvdXIgcHJvZ3JhbSBhZ2FpbnN0IHRoZSBY IGxpYnJhcmllcyBsaWtlIHNvOgoKQGV4YW1wbGUKbWF1ZGVfTERBREQgPSAkKFhfUFJFX0xJQlMp ICQoWF9MSUJTKSAkKFhfRVhUUkFfTElCUykKQGVuZCBleGFtcGxlCgpXZSByZWNvbW1lbmQgdGhh dCB5b3UgdXNlIEBvcHRpb257LWx9IGFuZCBAb3B0aW9uey1MfSBvbmx5IHdoZW4KcmVmZXJyaW5n IHRvIHRoaXJkLXBhcnR5IGxpYnJhcmllcywgYW5kIGdpdmUgdGhlIGV4cGxpY2l0IGZpbGUgbmFt ZXMKb2YgYW55IGxpYnJhcnkgYnVpbHQgYnkgeW91ciBwYWNrYWdlLiAgRG9pbmcgc28gd2lsbCBl bnN1cmUgdGhhdApAY29kZXttYXVkZV9ERVBFTkRFTkNJRVN9IChzZWUgYmVsb3cpIGlzIGNvcnJl Y3RseSBkZWZpbmVkIGJ5IGRlZmF1bHQuCgpAaXRlbSBtYXVkZV9MREZMQUdTClRoaXMgdmFyaWFi bGUgaXMgdXNlZCB0byBwYXNzIGV4dHJhIGZsYWdzIHRvIHRoZSBsaW5rIHN0ZXAgb2YgYSBwcm9n cmFtCm9yIGEgc2hhcmVkIGxpYnJhcnkuICBJdCBvdmVycmlkZXMgdGhlIEBjb2Rle0FNX0xERkxB R1N9IHZhcmlhYmxlLApldmVuIGlmIGl0IGlzIGRlZmluZWQgb25seSBpbiBhIGZhbHNlIGJyYW5j aCBvZiBhIGNvbmRpdGlvbmFsOyBpbgpvdGhlciB3b3JkcywgaWYgQGNvZGV7QHZhcntwcm9nfV9M REZMQUdTfSBpcyBkZWZpbmVkIGF0IGFsbCwKQGNvZGV7QU1fTERGTEFHU30gd2lsbCBub3QgYmUg dXNlZC4KQGMgaHR0cHM6Ly9idWdzLmdudS5vcmcvMzQ5MjUKCkBpdGVtIG1hdWRlX0xJQlRPT0xG TEFHUwpUaGlzIHZhcmlhYmxlIGlzIHVzZWQgdG8gcGFzcyBleHRyYSBvcHRpb25zIHRvIEBjb21t YW5ke2xpYnRvb2x9LgpJdCBvdmVycmlkZXMgdGhlIEBjb2Rle0FNX0xJQlRPT0xGTEFHU30gdmFy aWFibGUuClRoZXNlIG9wdGlvbnMgYXJlIG91dHB1dCBiZWZvcmUgQGNvbW1hbmR7bGlidG9vbH0n cyBAb3B0aW9uey0tbW9kZT1AdmFye21vZGV9fQpvcHRpb24sIHNvIHRoZXkgc2hvdWxkIG5vdCBi ZSBtb2RlLXNwZWNpZmljIG9wdGlvbnMgKHRob3NlIGJlbG9uZyB0bwp0aGUgY29tcGlsZXIgb3Ig bGlua2VyIGZsYWdzKS4gIEB4cmVme0xpYnRvb2wgRmxhZ3N9LgoKQGl0ZW0gbWF1ZGVfREVQRU5E RU5DSUVTCkBpdGVteCBFWFRSQV9tYXVkZV9ERVBFTkRFTkNJRVMKSXQgaXMgYWxzbyBvY2Nhc2lv bmFsbHkgdXNlZnVsIHRvIGhhdmUgYSB0YXJnZXQgKHByb2dyYW0gb3IgbGlicmFyeSkKZGVwZW5k IG9uIHNvbWUgb3RoZXIgZmlsZSB0aGF0IGlzIG5vdCBpbiBmYWN0IHBhcnQgb2YgdGhhdCB0YXJn ZXQuClRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgdGhlIEBjb2Rle19ERVBFTkRFTkNJRVN9IHZhcmlh YmxlLiAgRWFjaAp0YXJnZXQgZGVwZW5kcyBvbiB0aGUgY29udGVudHMgb2Ygc3VjaCBhIHZhcmlh YmxlLCBidXQgbm8gZnVydGhlcgppbnRlcnByZXRhdGlvbiBpcyBkb25lLgoKU2luY2UgdGhlc2Ug ZGVwZW5kZW5jaWVzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxpbmsgcnVsZSB1c2VkIHRvCmNy ZWF0ZSB0aGUgcHJvZ3JhbXMgdGhleSBzaG91bGQgbm9ybWFsbHkgbGlzdCBmaWxlcyB1c2VkIGJ5 IHRoZSBsaW5rCmNvbW1hbmQuICBUaGF0IGlzIEBmaWxleyouJChPQkpFWFQpfSwgQGZpbGV7Ki5h fSwgb3IgQGZpbGV7Ki5sYX0gZmlsZXMKZm9yIHByb2dyYW1zOyBAZmlsZXsqLmxvfSBhbmQgQGZp bGV7Ki5sYX0gZmlsZXMgZm9yIExpYnRvb2wgbGlicmFyaWVzOwphbmQgQGZpbGV7Ki4kKE9CSkVY VCl9IGZpbGVzIGZvciBzdGF0aWMgbGlicmFyaWVzLiAgSW4gcmFyZSBjYXNlcyB5b3UKbWF5IG5l ZWQgdG8gYWRkIG90aGVyIGtpbmRzIG9mIGZpbGVzIHN1Y2ggYXMgbGlua2VyIHNjcmlwdHMsIGJ1 dApAZW1waHtsaXN0aW5nIGEgc291cmNlIGZpbGUgaW4gQGNvZGV7X0RFUEVOREVOQ0lFU30gaXMg d3Jvbmd9LiAgSWYKc29tZSBzb3VyY2UgZmlsZSBuZWVkcyB0byBiZSBidWlsdCBiZWZvcmUgYWxs IHRoZSBjb21wb25lbnRzIG9mIGEKcHJvZ3JhbSBhcmUgYnVpbHQsIGNvbnNpZGVyIHVzaW5nIHRo ZSBAY29kZXtCVUlMVF9TT1VSQ0VTfSB2YXJpYWJsZQooQHB4cmVme1NvdXJjZXN9KS4KCklmIEBj b2Rle19ERVBFTkRFTkNJRVN9IGlzIG5vdCBzdXBwbGllZCwgaXQgaXMgY29tcHV0ZWQgYnkgQXV0 b21ha2UuClRoZSBhdXRvbWF0aWNhbGx5LWFzc2lnbmVkIHZhbHVlIGlzIHRoZSBjb250ZW50cyBv ZiBAY29kZXtfTERBRER9IG9yCkBjb2Rle19MSUJBRER9LCB3aXRoIG1vc3QgY29uZmlndXJlIHN1 YnN0aXR1dGlvbnMsIEBvcHRpb257LWx9LCBAb3B0aW9uey1MfSwKQG9wdGlvbnstZGxvcGVufSBh bmQgQG9wdGlvbnstZGxwcmVvcGVufSBvcHRpb25zIHJlbW92ZWQuICBUaGUgY29uZmlndXJlCnN1 YnN0aXR1dGlvbnMgdGhhdCBhcmUgbGVmdCBpbiBhcmUgb25seSBAc2FtcHskKExJQk9CSlMpfSBh bmQKQHNhbXB7JChBTExPQ0EpfTsgdGhlc2UgYXJlIGxlZnQgYmVjYXVzZSBpdCBpcyBrbm93biB0 aGF0IHRoZXkgd2lsbCBub3QKY2F1c2UgYW4gaW52YWxpZCB2YWx1ZSBmb3IgQGNvZGV7X0RFUEVO REVOQ0lFU30gdG8gYmUgZ2VuZXJhdGVkLgoKQGNvZGV7X0RFUEVOREVOQ0lFU30gaXMgbW9yZSBs aWtlbHkgdXNlZCB0byBwZXJmb3JtIGNvbmRpdGlvbmFsCmNvbXBpbGF0aW9uIHVzaW5nIGFuIEBj b2Rle0FDX1NVQlNUfSB2YXJpYWJsZSB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZgpvYmplY3RzLiAg QHhyZWZ7Q29uZGl0aW9uYWwgU291cmNlc30sIGFuZCBAcmVme0NvbmRpdGlvbmFsIExpYnRvb2wK U291cmNlc30uCgpUaGUgQGNvZGV7RVhUUkFfKl9ERVBFTkRFTkNJRVN9IHZhcmlhYmxlIG1heSBi ZSB1c2VmdWwgZm9yIGNhc2VzIHdoZXJlCnlvdSBtZXJlbHkgd2FudCB0byBhdWdtZW50IHRoZSBA Y29tbWFuZHthdXRvbWFrZX0tZ2VuZXJhdGVkCkBjb2Rle19ERVBFTkRFTkNJRVN9IHZhcmlhYmxl IHJhdGhlciB0aGFuIHJlcGxhY2luZyBpdC4KCkBpdGVtIG1hdWRlX0xJTksKWW91IGNhbiBvdmVy cmlkZSB0aGUgbGlua2VyIG9uIGEgcGVyLXByb2dyYW0gYmFzaXMuICBCeSBkZWZhdWx0IHRoZQps aW5rZXIgaXMgY2hvc2VuIGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2VzIHVzZWQgYnkgdGhlIHBy b2dyYW0uICBGb3IKaW5zdGFuY2UsIGEgcHJvZ3JhbSB0aGF0IGluY2x1ZGVzIEMrKyBzb3VyY2Ug Y29kZSB3b3VsZCB1c2UgdGhlIEMrKwpjb21waWxlciB0byBsaW5rLiAgVGhlIEBjb2Rle19MSU5L fSB2YXJpYWJsZSBtdXN0IGhvbGQgdGhlIG5hbWUgb2YgYQpjb21tYW5kIHRoYXQgY2FuIGJlIHBh c3NlZCBhbGwgdGhlIEBmaWxley5vfSBmaWxlIG5hbWVzIGFuZCBsaWJyYXJpZXMKdG8gbGluayBh Z2FpbnN0IGFzIGFyZ3VtZW50cy4gIE5vdGUgdGhhdCB0aGUgbmFtZSBvZiB0aGUgdW5kZXJseWlu Zwpwcm9ncmFtIGlzIEBlbXBoe25vdH0gcGFzc2VkIHRvIEBjb2Rle19MSU5LfTsgdHlwaWNhbGx5 IG9uZSB1c2VzCkBzYW1weyRAQH06CgpAZXhhbXBsZQptYXVkZV9MSU5LID0gJChDQ0xEKSAtbWFn aWMgLW8gJEBACkBlbmQgZXhhbXBsZQoKSWYgYSBAY29kZXtfTElOS30gdmFyaWFibGUgaXMgbm90 IHN1cHBsaWVkLCBpdCBtYXkgc3RpbGwgYmUgZ2VuZXJhdGVkCmFuZCB1c2VkIGJ5IEF1dG9tYWtl IGR1ZSB0byB0aGUgdXNlIG9mIHBlci10YXJnZXQgbGluayBmbGFncyBzdWNoIGFzCkBjb2Rle19D RkxBR1N9LCBAY29kZXtfTERGTEFHU30gb3IgQGNvZGV7X0xJQlRPT0xGTEFHU30sIGluIGNhc2Vz IHdoZXJlCnRoZXkgYXBwbHkuCgpJZiB0aGUgdmFyaWFibGUgQGNvZGV7QU1fVl8qX0xJTkt9IGV4 aXN0cywgaXQgaXMgdXNlZCB0byBvdXRwdXQgYQpzdGF0dXMgbGluZSBpbiBzaWxlbnQgbW9kZTsg b3RoZXJ3aXNlLCBAY29kZXtBTV9WX0dFTn0gaXMgdXNlZC4KCkBpdGVtIG1hdWRlX0NDQVNGTEFH UwpAaXRlbXggbWF1ZGVfQ0ZMQUdTCkBpdGVteCBtYXVkZV9DUFBGTEFHUwpAaXRlbXggbWF1ZGVf Q1hYRkxBR1MKQGl0ZW14IG1hdWRlX0ZGTEFHUwpAaXRlbXggbWF1ZGVfR0NKRkxBR1MKQGl0ZW14 IG1hdWRlX0xGTEFHUwpAaXRlbXggbWF1ZGVfT0JKQ0ZMQUdTCkBpdGVteCBtYXVkZV9PQkpDWFhG TEFHUwpAaXRlbXggbWF1ZGVfUkZMQUdTCkBpdGVteCBtYXVkZV9VUENGTEFHUwpAaXRlbXggbWF1 ZGVfWUZMQUdTCkBjaW5kZXggcGVyLXRhcmdldCBjb21waWxhdGlvbiBmbGFncywgZGVmaW5lZApB dXRvbWFrZSBhbGxvd3MgeW91IHRvIHNldCBjb21waWxhdGlvbiBmbGFncyBvbiBhIHBlci1wcm9n cmFtIChvcgpwZXItbGlicmFyeSkgYmFzaXMuICBBIHNpbmdsZSBzb3VyY2UgZmlsZSBjYW4gYmUg aW5jbHVkZWQgaW4gc2V2ZXJhbApwcm9ncmFtcywgYW5kIGl0IHdpbGwgcG90ZW50aWFsbHkgYmUg Y29tcGlsZWQgd2l0aCBkaWZmZXJlbnQgZmxhZ3MgZm9yCmVhY2ggcHJvZ3JhbS4gIFRoaXMgd29y a3MgZm9yIGFueSBsYW5ndWFnZSBkaXJlY3RseSBzdXBwb3J0ZWQgYnkKQXV0b21ha2UuICBUaGVz ZSBAZGZue3Blci10YXJnZXQgY29tcGlsYXRpb24gZmxhZ3N9IGFyZQpAc2FtcHtfQ0NBU0ZMQUdT fSwKQHNhbXB7X0NGTEFHU30sCkBzYW1we19DUFBGTEFHU30sCkBzYW1we19DWFhGTEFHU30sCkBz YW1we19GRkxBR1N9LApAc2FtcHtfR0NKRkxBR1N9LApAc2FtcHtfTEZMQUdTfSwKQHNhbXB7X09C SkNGTEFHU30sCkBzYW1we19PQkpDWFhGTEFHU30sCkBzYW1we19SRkxBR1N9LApAc2FtcHtfVVBD RkxBR1N9LCBhbmQKQHNhbXB7X1lGTEFHU30uCgpXaGVuIHVzaW5nIGEgcGVyLXRhcmdldCBjb21w aWxhdGlvbiBmbGFnLCBBdXRvbWFrZSB3aWxsIGNob29zZSBhCmRpZmZlcmVudCBuYW1lIGZvciB0 aGUgaW50ZXJtZWRpYXRlIG9iamVjdCBmaWxlcy4gIE9yZGluYXJpbHkgYSBmaWxlCmxpa2UgQGZp bGV7c2FtcGxlLmN9IHdpbGwgYmUgY29tcGlsZWQgdG8gcHJvZHVjZSBAZmlsZXtzYW1wbGUub30u Ckhvd2V2ZXIsIGlmIHRoZSBwcm9ncmFtJ3MgQGNvZGV7X0NGTEFHU30gdmFyaWFibGUgaXMgc2V0 LCB0aGVuIHRoZQpvYmplY3QgZmlsZSB3aWxsIGJlIG5hbWVkLCBmb3IgaW5zdGFuY2UsIEBmaWxl e21hdWRlLXNhbXBsZS5vfS4gIChTZWUKYWxzbyBAcmVme1JlbmFtZWQgT2JqZWN0c30uKQoKSW4g Y29tcGlsYXRpb25zIHdpdGggcGVyLXRhcmdldCBmbGFncywgdGhlIG9yZGluYXJ5IEBzYW1we0FN X30gZm9ybSBvZgp0aGUgZmxhZ3MgdmFyaWFibGUgaXMgQGVtcGh7bm90fSBhdXRvbWF0aWNhbGx5 IGluY2x1ZGVkIGluIHRoZQpjb21waWxhdGlvbiAoaG93ZXZlciwgdGhlIHVzZXIgZm9ybSBvZiB0 aGUgdmFyaWFibGUgQGVtcGh7aXN9IGluY2x1ZGVkKS4KU28gZm9yIGluc3RhbmNlLCBpZiB5b3Ug d2FudCB0aGUgaHlwb3RoZXRpY2FsIEBmaWxle21hdWRlfSBjb21waWxhdGlvbnMKdG8gYWxzbyB1 c2UgdGhlIHZhbHVlIG9mIEBjb2Rle0FNX0NGTEFHU30sIHlvdSB3b3VsZCBuZWVkIHRvIHdyaXRl OgoKQGV4YW1wbGUKbWF1ZGVfQ0ZMQUdTID0gQGRvdHN7fSB5b3VyIGZsYWdzIEBkb3Rze30gJChB TV9DRkxBR1MpCkBlbmQgZXhhbXBsZQoKQHhyZWZ7RmxhZyBWYXJpYWJsZXMgT3JkZXJpbmd9LCBm b3IgbW9yZSBkaXNjdXNzaW9uIGFib3V0IHRoZQppbnRlcmFjdGlvbiBiZXR3ZWVuIHVzZXIgdmFy aWFibGVzLCBAc2FtcHtBTV99IHNoYWRvdyB2YXJpYWJsZXMsIGFuZApwZXItdGFyZ2V0IHZhcmlh Ymxlcy4KCkBpdGVtIG1hdWRlX1NIT1JUTkFNRQpPbiBzb21lIHBsYXRmb3JtcyB0aGUgYWxsb3dh YmxlIGZpbGUgbmFtZXMgYXJlIHZlcnkgc2hvcnQuICBJbiBvcmRlciB0bwpzdXBwb3J0IHRoZXNl IHN5c3RlbXMgYW5kIHBlci10YXJnZXQgY29tcGlsYXRpb24gZmxhZ3MgYXQgdGhlIHNhbWUKdGlt ZSwgQXV0b21ha2UgYWxsb3dzIHlvdSB0byBzZXQgYSBgYHNob3J0IG5hbWUnJyB0aGF0IHdpbGwg aW5mbHVlbmNlCmhvdyBpbnRlcm1lZGlhdGUgb2JqZWN0IGZpbGVzIGFyZSBuYW1lZC4gIEZvciBp bnN0YW5jZSwgaW4gdGhlIGZvbGxvd2luZwpleGFtcGxlLAoKQGV4YW1wbGUKYmluX1BST0dSQU1T ID0gbWF1ZGUKbWF1ZGVfQ1BQRkxBR1MgPSAtRFNPTUVGTEFHCm1hdWRlX1NIT1JUTkFNRSA9IG0K bWF1ZGVfU09VUkNFUyA9IHNhbXBsZS5jIEBkb3Rze30KQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQK dGhlIG9iamVjdCBmaWxlIHdvdWxkIGJlIG5hbWVkIEBmaWxle20tc2FtcGxlLm99IHJhdGhlciB0 aGFuCkBmaWxle21hdWRlLXNhbXBsZS5vfS4KClRoaXMgZmFjaWxpdHkgaXMgcmFyZWx5IG5lZWRl ZCBpbiBwcmFjdGljZSwKYW5kIHdlIHJlY29tbWVuZCBhdm9pZGluZyBpdCB1bnRpbCB5b3UgZmlu ZCBpdCBpcyByZXF1aXJlZC4KQGVuZCB2dGFibGUKCkBub2RlIERlZmF1bHQgX1NPVVJDRVMKQHNl Y3Rpb24gRGVmYXVsdCBAY29kZXtfU09VUkNFU30KCkB2aW5kZXggX1NPVVJDRVMKQHZpbmRleCBT T1VSQ0VTCkBjaW5kZXggQGNvZGV7X1NPVVJDRVN9LCBkZWZhdWx0CkBjaW5kZXggZGVmYXVsdCBA Y29kZXtfU09VUkNFU30KQHZpbmRleCBBTV9ERUZBVUxUX1NPVVJDRV9FWFQKCkBjb2Rle19TT1VS Q0VTfSB2YXJpYWJsZXMgYXJlIHVzZWQgdG8gc3BlY2lmeSBzb3VyY2UgZmlsZXMgb2YgcHJvZ3Jh bXMKKEBweHJlZntBIFByb2dyYW19KSwgbGlicmFyaWVzIChAcHhyZWZ7QSBMaWJyYXJ5fSksIGFu ZCBMaWJ0b29sCmxpYnJhcmllcyAoQHB4cmVme0EgU2hhcmVkIExpYnJhcnl9KS4KCldoZW4gbm8g c3VjaCB2YXJpYWJsZSBpcyBzcGVjaWZpZWQgZm9yIGEgdGFyZ2V0LCBBdXRvbWFrZSB3aWxsIGRl ZmluZQpvbmUgaXRzZWxmLiAgVGhlIGRlZmF1bHQgaXMgdG8gY29tcGlsZSBhIHNpbmdsZSBDIGZp bGUgd2hvc2UgYmFzZSBuYW1lCmlzIHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgaXRzZWxmLCB3aXRo IGFueSBleHRlbnNpb24gcmVwbGFjZWQgYnkKQGNvZGV7QU1fREVGQVVMVF9TT1VSQ0VfRVhUfSwg d2hpY2ggZGVmYXVsdHMgdG8gQGZpbGV7LmN9LgoKRm9yIGV4YW1wbGUgaWYgeW91IGhhdmUgdGhl IGZvbGxvd2luZyBzb21ld2hlcmUgaW4geW91cgpAZmlsZXtNYWtlZmlsZS5hbX0gd2l0aCBubyBj b3JyZXNwb25kaW5nIEBjb2Rle2xpYmZvb19hX1NPVVJDRVN9OgoKQGV4YW1wbGUKbGliX0xJQlJB UklFUyA9IGxpYmZvby5hIHN1Yi9saWJjKysuYQpAZW5kIGV4YW1wbGUKCkBub2luZGVudApAZmls ZXtsaWJmb28uYX0gd2lsbCBiZSBidWlsdCB1c2luZyBhIGRlZmF1bHQgc291cmNlIGZpbGUgbmFt ZWQKQGZpbGV7bGliZm9vLmN9LCBhbmQgQGZpbGV7c3ViL2xpYmMrKy5hfSB3aWxsIGJlIGJ1aWx0 IGZyb20KQGZpbGV7c3ViL2xpYmMrKy5jfS4gIChJbiBvbGRlciB2ZXJzaW9ucyBAZmlsZXtzdWIv bGliYysrLmF9CndvdWxkIGJlIGJ1aWx0IGZyb20gQGZpbGV7c3ViX2xpYmNfX19hLmN9LCBpLmUu LCB0aGUgZGVmYXVsdCBzb3VyY2UKd2FzIHRoZSBjYW5vbmljYWxpemVkIG5hbWUgb2YgdGhlIHRh cmdldCwgd2l0aCBAZmlsZXsuY30gYXBwZW5kZWQuCldlIGJlbGlldmUgdGhlIG5ldyBiZWhhdmlv ciBpcyBtb3JlIHNlbnNpYmxlLCBidXQgZm9yIGJhY2t3YXJkCmNvbXBhdGliaWxpdHkgQGNvbW1h bmR7YXV0b21ha2V9IHdpbGwgdXNlIHRoZSBvbGQgbmFtZSBpZiBhIGZpbGUgb3IgYSBydWxlCndp dGggdGhhdCBuYW1lIGV4aXN0cyBhbmQgQGNvZGV7QU1fREVGQVVMVF9TT1VSQ0VfRVhUfSBpcyBu b3QgdXNlZC4pCgpAY2luZGV4IEBjb2Rle2NoZWNrX1BST0dSQU1TfSBleGFtcGxlCkB2aW5kZXgg Y2hlY2tfUFJPR1JBTVMKRGVmYXVsdCBzb3VyY2VzIGFyZSBtYWlubHkgdXNlZnVsIGluIHRlc3Qg c3VpdGVzLCB3aGVuIGJ1aWxkaW5nIG1hbnkKdGVzdCBwcm9ncmFtcyBlYWNoIGZyb20gYSBzaW5n bGUgc291cmNlLiAgRm9yIGluc3RhbmNlLCBpbgoKQGV4YW1wbGUKY2hlY2tfUFJPR1JBTVMgPSB0 ZXN0MSB0ZXN0MiB0ZXN0MwpBTV9ERUZBVUxUX1NPVVJDRV9FWFQgPSAuY3BwCkBlbmQgZXhhbXBs ZQoKQG5vaW5kZW50CkBmaWxle3Rlc3QxfSwgQGZpbGV7dGVzdDJ9LCBhbmQgQGZpbGV7dGVzdDN9 IHdpbGwgYmUgYnVpbHQKZnJvbSBAZmlsZXt0ZXN0MS5jcHB9LCBAZmlsZXt0ZXN0Mi5jcHB9LCBh bmQgQGZpbGV7dGVzdDMuY3BwfS4KV2l0aG91dCB0aGUgbGFzdCBsaW5lLCB0aGV5IHdpbGwgYmUg YnVpbHQgZnJvbSBAZmlsZXt0ZXN0MS5jfSwKQGZpbGV7dGVzdDIuY30sIGFuZCBAZmlsZXt0ZXN0 My5jfS4KCkBjaW5kZXggbGlidG9vbCBtb2R1bGVzLCBkZWZhdWx0IHNvdXJjZSBleGFtcGxlCkBj aW5kZXggZGVmYXVsdCBzb3VyY2UsIGxpYnRvb2wgbW9kdWxlcyBleGFtcGxlCkFub3RoZXIgY2Fz ZSB3aGVyZSB0aGlzIGlzIGNvbnZlbmllbnQgaXMgYnVpbGRpbmcgbWFueSBMaWJ0b29sIG1vZHVs ZXMKKEBmaWxle21vZHVsZUB2YXJ7bn0ubGF9KSwgZWFjaCBkZWZpbmVkIGluIGl0cyBvd24gZmls ZQooQGZpbGV7bW9kdWxlQHZhcntufS5jfSkuCgpAZXhhbXBsZQpBTV9MREZMQUdTID0gLW1vZHVs ZQpsaWJfTFRMSUJSQVJJRVMgPSBtb2R1bGUxLmxhIG1vZHVsZTIubGEgbW9kdWxlMy5sYQpAZW5k IGV4YW1wbGUKCkBjaW5kZXggZW1wdHkgQGNvZGV7X1NPVVJDRVN9CkBjaW5kZXggQGNvZGV7X1NP VVJDRVN9LCBlbXB0eQpGaW5hbGx5LCB0aGVyZSBpcyBvbmUgc2l0dWF0aW9uIHdoZXJlIHRoaXMg ZGVmYXVsdCBzb3VyY2UgY29tcHV0YXRpb24KbmVlZHMgdG8gYmUgYXZvaWRlZDogd2hlbiBhIHRh cmdldCBzaG91bGQgbm90IGJlIGJ1aWx0IGZyb20gc291cmNlcy4KV2UgYWxyZWFkeSBzYXcgc3Vj aCBhbiBleGFtcGxlIGluIEByZWZ7dHJ1ZX07IHRoaXMgaGFwcGVucyB3aGVuIGFsbAp0aGUgY29u c3RpdHVlbnRzIG9mIGEgdGFyZ2V0IGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkIGFuZCBqdXN0 IG5lZWQKdG8gYmUgY29tYmluZWQgdXNpbmcgYSBAY29kZXtfTERBRER9IHZhcmlhYmxlLiAgVGhl biBpdCBpcyBuZWNlc3NhcnkKdG8gZGVmaW5lIGFuIGVtcHR5IEBjb2Rle19TT1VSQ0VTfSB2YXJp YWJsZSwgc28gdGhhdCBAY29tbWFuZHthdXRvbWFrZX0KZG9lcyBub3QgY29tcHV0ZSBhIGRlZmF1 bHQuCgpAZXhhbXBsZQpiaW5fUFJPR1JBTVMgPSB0YXJnZXQKdGFyZ2V0X1NPVVJDRVMgPQp0YXJn ZXRfTERBREQgPSBsaWJtYWluLmEgbGlibWlzYy5hCkBlbmQgZXhhbXBsZQoKQG5vZGUgTElCT0JK UwpAc2VjdGlvbiBTcGVjaWFsIGhhbmRsaW5nIGZvciBAY29kZXtMSUJPQkpTfSBhbmQgQGNvZGV7 QUxMT0NBfQoKQGNpbmRleCBAY29kZXtMSUJPQkpTfSwgZXhhbXBsZQpAY2luZGV4IEBjb2Rle0FM TE9DQX0sIGV4YW1wbGUKQGNpbmRleCBAY29kZXtMSUJPQkpTfSwgc3BlY2lhbCBoYW5kbGluZwpA Y2luZGV4IEBjb2Rle0FMTE9DQX0sIHNwZWNpYWwgaGFuZGxpbmcKQHZpbmRleCBMVExJQk9CSlMK QHZpbmRleCBMSUJPQkpTCkB2aW5kZXggTFRBTExPQ0EKQHZpbmRleCBBTExPQ0EKClRoZSBAc2Ft cHskKExJQk9CSlMpfSBhbmQgQHNhbXB7JChBTExPQ0EpfSB2YXJpYWJsZXMgbGlzdCBvYmplY3QK ZmlsZXMgdGhhdCBzaG91bGQgYmUgY29tcGlsZWQgaW50byB0aGUgcHJvamVjdCB0byBwcm92aWRl IGFuCmltcGxlbWVudGF0aW9uIGZvciBmdW5jdGlvbnMgdGhhdCBhcmUgbWlzc2luZyBvciBicm9r ZW4gb24gdGhlIGhvc3QKc3lzdGVtLiAgVGhleSBhcmUgc3Vic3RpdHV0ZWQgYnkgQGZpbGV7Y29u ZmlndXJlfS4KCkBhY2luZGV4IEFDX0xJQk9CSgoKVGhlc2UgdmFyaWFibGVzIGFyZSBkZWZpbmVk IGJ5IEF1dG9jb25mIG1hY3JvcyBzdWNoIGFzCkBjb2Rle0FDX0xJQk9CSn0sIEBjb2Rle0FDX1JF UExBQ0VfRlVOQ1N9IChAcHhyZWZ7R2VuZXJpYyBGdW5jdGlvbnMsICwKR2VuZXJpYyBGdW5jdGlv biBDaGVja3MsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSksIG9yCkBjb2Rle0FDX0ZV TkNfQUxMT0NBfSAoQHB4cmVme1BhcnRpY3VsYXIgRnVuY3Rpb25zLCAsIFBhcnRpY3VsYXIKRnVu Y3Rpb24gQ2hlY2tzLCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0pLiAgTWFueSBvdGhl ciBBdXRvY29uZgptYWNyb3MgY2FsbCBAY29kZXtBQ19MSUJPQkp9IG9yIEBjb2Rle0FDX1JFUExB Q0VfRlVOQ1N9IHRvCnBvcHVsYXRlIEBzYW1weyQoTElCT0JKUyl9LgoKQGFjaW5kZXggQUNfTElC U09VUkNFCgpVc2luZyB0aGVzZSB2YXJpYWJsZXMgaXMgdmVyeSBzaW1pbGFyIHRvIGRvaW5nIGNv bmRpdGlvbmFsIGNvbXBpbGF0aW9uCnVzaW5nIEBjb2Rle0FDX1NVQlNUfSB2YXJpYWJsZXMsIGFz IGRlc2NyaWJlZCBpbiBAcmVme0NvbmRpdGlvbmFsClNvdXJjZXN9LiAgVGhhdCBpcywgd2hlbiBi dWlsZGluZyBhIHByb2dyYW0sIEBzYW1weyQoTElCT0JKUyl9IGFuZApAc2FtcHskKEFMTE9DQSl9 IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYXNzb2NpYXRlZCBAc2FtcHsqX0xEQUREfQp2YXJpYWJs ZSwgb3IgdG8gdGhlIEBzYW1weypfTElCQUREfSB2YXJpYWJsZSB3aGVuIGJ1aWxkaW5nIGEgbGli cmFyeS4KSG93ZXZlciB0aGVyZSBpcyBubyBuZWVkIHRvIGxpc3QgdGhlIGNvcnJlc3BvbmRpbmcg c291cmNlcyBpbgpAc2FtcHtFWFRSQV8qX1NPVVJDRVN9IG5vciB0byBkZWZpbmUgQHNhbXB7Kl9E RVBFTkRFTkNJRVN9LiAgQXV0b21ha2UKYXV0b21hdGljYWxseSBhZGRzIEBzYW1weyQoTElCT0JK Uyl9IGFuZCBAc2FtcHskKEFMTE9DQSl9IHRvIHRoZQpkZXBlbmRlbmNpZXMsIGFuZCBpdCB3aWxs IGRpc2NvdmVyIHRoZSBsaXN0IG9mIGNvcnJlc3BvbmRpbmcgc291cmNlCmZpbGVzIGF1dG9tYXRp Y2FsbHkgKGJ5IHRyYWNpbmcgdGhlIGludm9jYXRpb25zIG9mIHRoZQpAY29kZXtBQ19MSUJTT1VS Q0V9IEF1dG9jb25mIG1hY3JvcykuICBJZiB5b3UgaGF2ZSBhbHJlYWR5IGRlZmluZWQKQHNhbXB7 Kl9ERVBFTkRFTkNJRVN9IGV4cGxpY2l0bHkgZm9yIGFuIHVucmVsYXRlZCByZWFzb24sIHRoZW4g eW91CmVpdGhlciBuZWVkIHRvIGFkZCB0aGVzZSB2YXJpYWJsZXMgbWFudWFsbHksIG9yIHVzZQpA c2FtcHtFWFRSQV8qX0RFUEVOREVOQ0lFU30gaW5zdGVhZCBvZiBAc2FtcHsqX0RFUEVOREVOQ0lF U30uCgpUaGVzZSB2YXJpYWJsZXMgYXJlIHVzdWFsbHkgdXNlZCB0byBidWlsZCBhIHBvcnRhYmls aXR5IGxpYnJhcnkgdGhhdAppcyBsaW5rZWQgd2l0aCBhbGwgdGhlIHByb2dyYW1zIG9mIHRoZSBw cm9qZWN0LiAgV2Ugbm93IHJldmlldyBhCnNhbXBsZSBzZXR1cC4gIEZpcnN0LCBAZmlsZXtjb25m aWd1cmUuYWN9IGNvbnRhaW5zIHNvbWUgY2hlY2tzIHRoYXQKYWZmZWN0IGVpdGhlciBAY29kZXtM SUJPQkpTfSBvciBAY29kZXtBTExPQ0F9LgoKQGV4YW1wbGUKIyBjb25maWd1cmUuYWMKQGRvdHN7 fQpBQ19DT05GSUdfTElCT0JKX0RJUihbbGliXSkKQGRvdHN7fQpBQ19GVU5DX01BTExPQyAgICAg ICAgICAgICBkbmwgTWF5IGFkZCBtYWxsb2MuJChPQkpFWFQpIHRvIExJQk9CSlMKQUNfRlVOQ19N RU1DTVAgICAgICAgICAgICAgZG5sIE1heSBhZGQgbWVtY21wLiQoT0JKRVhUKSB0byBMSUJPQkpT CkFDX1JFUExBQ0VfRlVOQ1MoW3N0cmR1cF0pIGRubCBNYXkgYWRkIHN0cmR1cC4kKE9CSkVYVCkg dG8gTElCT0JKUwpBQ19GVU5DX0FMTE9DQSAgICAgICAgICAgICBkbmwgTWF5IGFkZCBhbGxvY2Eu JChPQkpFWFQpIHRvIEFMTE9DQQpAZG90c3t9CkFDX0NPTkZJR19GSUxFUyhbCiAgbGliL01ha2Vm aWxlCiAgc3JjL01ha2VmaWxlCl0pCkFDX09VVFBVVApAZW5kIGV4YW1wbGUKCkBhY2luZGV4IEFD X0NPTkZJR19MSUJPQkpfRElSCgpUaGUgQGNvZGV7QUNfQ09ORklHX0xJQk9CSl9ESVJ9IHRlbGxz IEF1dG9jb25mIHRoYXQgdGhlIHNvdXJjZSBmaWxlcwpvZiB0aGVzZSBvYmplY3QgZmlsZXMgYXJl IHRvIGJlIGZvdW5kIGluIHRoZSBAZmlsZXtsaWIvfSBkaXJlY3RvcnkuCkF1dG9tYWtlIGNhbiBh bHNvIHVzZSB0aGlzIGluZm9ybWF0aW9uLCBvdGhlcndpc2UgaXQgZXhwZWN0cyB0aGUKc291cmNl IGZpbGVzIGFyZSB0byBiZSBpbiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBAc2FtcHskKExJQk9C SlMpfQphbmQgQHNhbXB7JChBTExPQ0EpfSB2YXJpYWJsZXMgYXJlIHVzZWQuCgpUaGUgQGZpbGV7 bGliL30gZGlyZWN0b3J5IHNob3VsZCB0aGVyZWZvcmUgY29udGFpbiBAZmlsZXttYWxsb2MuY30s CkBmaWxle21lbWNtcC5jfSwgQGZpbGV7c3RyZHVwLmN9LCBAZmlsZXthbGxvY2EuY30uICBIZXJl IGlzIGl0cwpAZmlsZXtNYWtlZmlsZS5hbX06CgpAZXhhbXBsZQojIGxpYi9NYWtlZmlsZS5hbQoK bm9pbnN0X0xJQlJBUklFUyA9IGxpYmNvbXBhdC5hCmxpYmNvbXBhdF9hX1NPVVJDRVMgPQpsaWJj b21wYXRfYV9MSUJBREQgPSAkKExJQk9CSlMpICQoQUxMT0NBKQpAZW5kIGV4YW1wbGUKClRoZSBs aWJyYXJ5IGNhbiBoYXZlIGFueSBuYW1lLCBvZiBjb3Vyc2UsIGFuZCBhbnl3YXkgaXQgaXMgbm90 IGdvaW5nCnRvIGJlIGluc3RhbGxlZDogaXQganVzdCBob2xkcyB0aGUgcmVwbGFjZW1lbnQgdmVy c2lvbnMgb2YgdGhlIG1pc3NpbmcKb3IgYnJva2VuIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gbGF0ZXIg bGluayB0aGVtIGluLiAgTWFueSBwcm9qZWN0cwphbHNvIGluY2x1ZGUgZXh0cmEgZnVuY3Rpb25z LCBzcGVjaWZpYyB0byB0aGUgcHJvamVjdCwgaW4gdGhhdApsaWJyYXJ5OiB0aGV5IGFyZSBzaW1w bHkgYWRkZWQgb24gdGhlIEBjb2Rle19TT1VSQ0VTfSBsaW5lLgoKQGNpbmRleCBFbXB0eSBsaWJy YXJpZXMgYW5kIEBzYW1weyQoTElCT0JKUyl9CkBjaW5kZXggQHNhbXB7JChMSUJPQkpTKX0gYW5k IGVtcHR5IGxpYnJhcmllcwpUaGVyZSBpcyBhIHNtYWxsIHRyYXAgaGVyZSwgdGhvdWdoOiBAc2Ft cHskKExJQk9CSlMpfSBhbmQKQHNhbXB7JChBTExPQ0EpfSBtaWdodCBiZSBlbXB0eSwgYW5kIGJ1 aWxkaW5nIGFuIGVtcHR5IGxpYnJhcnkgaXMgbm90CnBvcnRhYmxlLiAgWW91IHNob3VsZCBlbnN1 cmUgdGhhdCB0aGVyZSBpcyBhbHdheXMgc29tZXRoaW5nIHRvIHB1dCBpbgpAZmlsZXtsaWJjb21w YXQuYX0uICBNb3N0IHByb2plY3RzIHdpbGwgYWxzbyBhZGQgc29tZSB1dGlsaXR5CmZ1bmN0aW9u cyBpbiB0aGF0IGRpcmVjdG9yeSwgYW5kIGxpc3QgdGhlbSBpbgpAY29kZXtsaWJjb21wYXRfYV9T T1VSQ0VTfSwgc28gaW4gcHJhY3RpY2UgQGZpbGV7bGliY29tcGF0LmF9IGNhbm5vdApiZSBlbXB0 eS4KCkZpbmFsbHkgaGVyZSBpcyBob3cgdGhpcyBsaWJyYXJ5IGNvdWxkIGJlIHVzZWQgZnJvbSB0 aGUgQGZpbGV7c3JjL30KZGlyZWN0b3J5LgoKQGV4YW1wbGUKIyBzcmMvTWFrZWZpbGUuYW0KCiMg TGluayBhbGwgcHJvZ3JhbXMgaW4gdGhpcyBkaXJlY3Rvcnkgd2l0aCBsaWJjb21wYXQuYQpMREFE RCA9IC4uL2xpYi9saWJjb21wYXQuYQoKYmluX1BST0dSQU1TID0gdG9vbDEgdG9vbDIgQGRvdHN7 fQp0b29sMV9TT1VSQ0VTID0gQGRvdHN7fQp0b29sMl9TT1VSQ0VTID0gQGRvdHN7fQpAZW5kIGV4 YW1wbGUKCldoZW4gb3B0aW9uIEBvcHRpb257c3ViZGlyLW9iamVjdHN9IGlzIG5vdCB1c2VkLCBh cyBpbiB0aGUgYWJvdmUKZXhhbXBsZSwgdGhlIHZhcmlhYmxlcyBAc2FtcHskKExJQk9CSlMpfSBv ciBAc2FtcHskKEFMTE9DQSl9IGNhbiBvbmx5CmJlIHVzZWQgaW4gdGhlIGRpcmVjdG9yeSB3aGVy ZSB0aGVpciBzb3VyY2VzIGxpZS4gIEUuZy4sIGhlcmUgaXQgd291bGQKYmUgd3JvbmcgdG8gdXNl IEBzYW1weyQoTElCT0JKUyl9IG9yIEBzYW1weyQoQUxMT0NBKX0gaW4KQGZpbGV7c3JjL01ha2Vm aWxlLmFtfS4gIEhvd2V2ZXIgaWYgYm90aCBAb3B0aW9ue3N1YmRpci1vYmplY3RzfSBhbmQKQGNv ZGV7QUNfQ09ORklHX0xJQk9CSl9ESVJ9IGFyZSB1c2VkLCBpdCBpcyBPSyB0byB1c2UgdGhlc2Ug dmFyaWFibGVzCmluIG90aGVyIGRpcmVjdG9yaWVzLiAgRm9yIGluc3RhbmNlIEBmaWxle3NyYy9N YWtlZmlsZS5hbX0gY291bGQgYmUKY2hhbmdlZCBhcyBmb2xsb3dzLgoKQGV4YW1wbGUKIyBzcmMv TWFrZWZpbGUuYW0KCkFVVE9NQUtFX09QVElPTlMgPSBzdWJkaXItb2JqZWN0cwpMREFERCA9ICQo TElCT0JKUykgJChBTExPQ0EpCgpiaW5fUFJPR1JBTVMgPSB0b29sMSB0b29sMiBAZG90c3t9CnRv b2wxX1NPVVJDRVMgPSBAZG90c3t9CnRvb2wyX1NPVVJDRVMgPSBAZG90c3t9CkBlbmQgZXhhbXBs ZQoKQmVjYXVzZSBAc2FtcHskKExJQk9CSlMpfSBhbmQgQHNhbXB7JChBTExPQ0EpfSBjb250YWlu IG9iamVjdApmaWxlIG5hbWVzIHRoYXQgZW5kIHdpdGggQHNhbXB7LiQoT0JKRVhUKX0sIHRoZXkg YXJlIG5vdCBzdWl0YWJsZSBmb3IKTGlidG9vbCBsaWJyYXJpZXMgKHdoZXJlIHRoZSBleHBlY3Rl ZCBvYmplY3QgZXh0ZW5zaW9uIGlzIEBmaWxley5sb30pOgpAY29kZXtMVExJQk9CSlN9IGFuZCBA Y29kZXtMVEFMTE9DQX0gc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KCkBjb2Rle0xUTElCT0JKU30g aXMgZGVmaW5lZCBhdXRvbWF0aWNhbGx5IGJ5IEF1dG9jb25mIGFuZCBzaG91bGQgbm90CmJlIGRl ZmluZWQgYnkgaGFuZCAoYXMgaW4gdGhlIHBhc3QpLCBob3dldmVyIGF0IHRoZSB0aW1lIG9mIHdy aXRpbmcKQGNvZGV7TFRBTExPQ0F9IHN0aWxsIG5lZWRzIHRvIGJlIGRlZmluZWQgZnJvbSBAY29k ZXtBTExPQ0F9IG1hbnVhbGx5LgpAeHJlZntBQ19MSUJPQkogdnMgTElCT0JKUywgLCBAY29kZXtB Q19MSUJPQkp9IHZzLkA6IEBjb2Rle0xJQk9CSlN9LAphdXRvY29uZiwgVGhlIEF1dG9jb25mIE1h bnVhbH0uCgoKQG5vZGUgUHJvZ3JhbSBWYXJpYWJsZXMKQHNlY3Rpb24gVmFyaWFibGVzIHVzZWQg d2hlbiBidWlsZGluZyBhIHByb2dyYW0KCk9jY2FzaW9uYWxseSBpdCBpcyB1c2VmdWwgdG8ga25v dyB3aGljaCBAZmlsZXtNYWtlZmlsZX0gdmFyaWFibGVzCkF1dG9tYWtlIHVzZXMgZm9yIGNvbXBp bGF0aW9ucywgYW5kIGluIHdoaWNoIG9yZGVyIChAcHhyZWZ7RmxhZwpWYXJpYWJsZXMgT3JkZXJp bmd9KTsgZm9yIGluc3RhbmNlLCB5b3UgbWlnaHQgbmVlZCB0byBkbyB5b3VyIG93bgpjb21waWxh dGlvbiBpbiBzb21lIHNwZWNpYWwgY2FzZXMuCgpTb21lIHZhcmlhYmxlcyBhcmUgaW5oZXJpdGVk IGZyb20gQXV0b2NvbmY7IHRoZXNlIGFyZSBAY29kZXtDQ30sCkBjb2Rle0NGTEFHU30sIEBjb2Rl e0NQUEZMQUdTfSwgQGNvZGV7REVGU30sIEBjb2Rle0xERkxBR1N9LCBhbmQKQGNvZGV7TElCU30u CkB2aW5kZXggQ0MKQHZpbmRleCBDRkxBR1MKQHZpbmRleCBDUFBGTEFHUwpAdmluZGV4IERFRlMK QHZpbmRleCBMREZMQUdTCkB2aW5kZXggTElCUwoKVGhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB2 YXJpYWJsZXMgdGhhdCBBdXRvbWFrZSBkZWZpbmVzIG9uIGl0cyBvd246CgpAdnRhYmxlIEBjb2Rl CkBpdGVtIEFNX0NQUEZMQUdTClRoZSBjb250ZW50cyBvZiB0aGlzIHZhcmlhYmxlIGFyZSBwYXNz ZWQgdG8gZXZlcnkgY29tcGlsYXRpb24gdGhhdCBpbnZva2VzCnRoZSBDIHByZXByb2Nlc3Nvcjsg aXQgaXMgYSBsaXN0IG9mIGFyZ3VtZW50cyB0byB0aGUgcHJlcHJvY2Vzc29yLiAgRm9yCmluc3Rh bmNlLCBAb3B0aW9uey1JfSBhbmQgQG9wdGlvbnstRH0gb3B0aW9ucyBzaG91bGQgYmUgbGlzdGVk IGhlcmUuCgpBdXRvbWFrZSBhbHJlYWR5IHByb3ZpZGVzIHNvbWUgQG9wdGlvbnstSX0gb3B0aW9u cyBhdXRvbWF0aWNhbGx5LCBpbiBhCnNlcGFyYXRlIHZhcmlhYmxlIHRoYXQgaXMgYWxzbyBwYXNz ZWQgdG8gZXZlcnkgY29tcGlsYXRpb24gdGhhdCBpbnZva2VzCnRoZSBDIHByZXByb2Nlc3Nvci4g IEluIHBhcnRpY3VsYXIgaXQgZ2VuZXJhdGVzIEBzYW1wey1JLn0sCkBzYW1wey1JJChzcmNkaXIp fSwgYW5kIGEgQG9wdGlvbnstSX0gcG9pbnRpbmcgdG8gdGhlIGRpcmVjdG9yeSBob2xkaW5nCkBm aWxle2NvbmZpZy5ofSAoaWYgeW91J3ZlIHVzZWQgQGNvZGV7QUNfQ09ORklHX0hFQURFUlN9KS4g IFlvdSBjYW4KZGlzYWJsZSB0aGUgZGVmYXVsdCBAb3B0aW9uey1JfSBvcHRpb25zIHVzaW5nIHRo ZSBAb3B0aW9ue25vc3RkaW5jfQpvcHRpb24uCgpXaGVuIGEgZmlsZSB0byBiZSBpbmNsdWRlZCBp cyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBidWlsZCBhbmQgbm90IHBhcnQKb2YgYSBkaXN0cmlidXRp b24gdGFyYmFsbCwgaXRzIGxvY2F0aW9uIGlzIHVuZGVyIEBjb2RleyQoYnVpbGRkaXIpfSwKbm90 IHVuZGVyIEBjb2RleyQoc3JjZGlyKX0uICBUaGlzIG1hdHRlcnMgZXNwZWNpYWxseSBmb3IgcGFj a2FnZXMgdGhhdAp1c2UgaGVhZGVyIGZpbGVzIHBsYWNlZCBpbiBzdWItZGlyZWN0b3JpZXMgYW5k IHdhbnQgdG8gYWxsb3cgYnVpbGRzCm91dHNpZGUgdGhlIHNvdXJjZSB0cmVlIChAcHhyZWZ7VlBB VEggQnVpbGRzfSkuIEluIHRoYXQgY2FzZSB3ZQpyZWNvbW1lbmQgdXNpbmcgYSBwYWlyIG9mIEBv cHRpb257LUl9IG9wdGlvbnMsIHN1Y2ggYXMsIGUuZy4sCkBzYW1wey1Jc29tZS9zdWJkaXIgLUkk KHNyY2Rpcikvc29tZS9zdWJkaXJ9IG9yCkBzYW1wey1JJCh0b3BfYnVpbGRkaXIpL3NvbWUvc3Vi ZGlyIC1JJCh0b3Bfc3JjZGlyKS9zb21lL3N1YmRpcn0uCk5vdGUgdGhhdCB0aGUgcmVmZXJlbmNl IHRvIHRoZSBidWlsZCB0cmVlIHNob3VsZCBjb21lIGJlZm9yZSB0aGUKcmVmZXJlbmNlIHRvIHRo ZSBzb3VyY2UgdHJlZSwgc28gdGhhdCBhY2NpZGVudGFsbHkgbGVmdG92ZXIgZ2VuZXJhdGVkCmZp bGVzIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5IGFyZSBpZ25vcmVkLgoKQGNvZGV7QU1fQ1BQRkxB R1N9IGlzIGlnbm9yZWQgaW4gcHJlZmVyZW5jZSB0byBhIHBlci1leGVjdXRhYmxlIChvcgpwZXIt bGlicmFyeSkgQGNvZGV7X0NQUEZMQUdTfSB2YXJpYWJsZSBpZiBpdCBpcyBkZWZpbmVkLgoKQGl0 ZW0gSU5DTFVERVMKVGhpcyBkb2VzIHRoZSBzYW1lIGpvYiBhcyBAY29kZXtBTV9DUFBGTEFHU30g KG9yIGFueSBwZXItdGFyZ2V0CkBjb2Rle19DUFBGTEFHU30gdmFyaWFibGUgaWYgaXQgaXMgdXNl ZCkuICBJdCBpcyBhbiBvbGRlciBuYW1lIGZvciB0aGUKc2FtZSBmdW5jdGlvbmFsaXR5LiAgVGhp cyB2YXJpYWJsZSBpcyBkZXByZWNhdGVkOyB3ZSBzdWdnZXN0IHVzaW5nCkBjb2Rle0FNX0NQUEZM QUdTfSBhbmQgcGVyLXRhcmdldCBAY29kZXtfQ1BQRkxBR1N9IGluc3RlYWQuCgpAaXRlbSBBTV9D RkxBR1MKVGhpcyBpcyB0aGUgdmFyaWFibGUgdGhlIEBmaWxle01ha2VmaWxlLmFtfSBhdXRob3Ig Y2FuIHVzZSB0byBwYXNzCmluIGFkZGl0aW9uYWwgQyBjb21waWxlciBmbGFncy4gIEluIHNvbWUg c2l0dWF0aW9ucywgdGhpcyBpcwpub3QgdXNlZCwgaW4gcHJlZmVyZW5jZSB0byB0aGUgcGVyLWV4 ZWN1dGFibGUgKG9yIHBlci1saWJyYXJ5KQpAY29kZXtfQ0ZMQUdTfS4KCkBpdGVtIENPTVBJTEUK VGhpcyBpcyB0aGUgY29tbWFuZCB1c2VkIHRvIGNvbXBpbGUgYSBDIHNvdXJjZSBmaWxlLiAgVGhl IGZpbGUgbmFtZSBpcwphcHBlbmRlZCB0byBmb3JtIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUu CgpAaXRlbSBBTV9MREZMQUdTClRoaXMgaXMgdGhlIHZhcmlhYmxlIHRoZSBAZmlsZXtNYWtlZmls ZS5hbX0gYXV0aG9yIGNhbiB1c2UgdG8gcGFzcwppbiBhZGRpdGlvbmFsIGxpbmtlciBmbGFncy4g IEluIHNvbWUgc2l0dWF0aW9ucywgdGhpcyBpcyBub3QgdXNlZCwgaW4KcHJlZmVyZW5jZSB0byB0 aGUgcGVyLWV4ZWN1dGFibGUgKG9yIHBlci1saWJyYXJ5KSBAY29kZXtfTERGTEFHU30uCgpAaXRl bSBMSU5LClRoaXMgaXMgdGhlIGNvbW1hbmQgdXNlZCB0byBsaW5rIGEgQyBwcm9ncmFtLiAgSXQg YWxyZWFkeSBpbmNsdWRlcwpAc2FtcHstbyAkQEB9IGFuZCB0aGUgdXN1YWwgdmFyaWFibGUgcmVm ZXJlbmNlcyAoZm9yIGluc3RhbmNlLApAY29kZXtDRkxBR1N9KTsgaXQgdGFrZXMgYXMgYGBhcmd1 bWVudHMnJyB0aGUgbmFtZXMgb2YgdGhlIG9iamVjdApmaWxlcyBhbmQgbGlicmFyaWVzIHRvIGxp bmsgaW4uICBUaGlzIHZhcmlhYmxlIGlzIG5vdCB1c2VkIHdoZW4gdGhlCmxpbmtlciBpcyBvdmVy cmlkZGVuIHdpdGggYSBwZXItdGFyZ2V0IEBjb2Rle19MSU5LfSB2YXJpYWJsZSBvcgpwZXItdGFy Z2V0IGZsYWdzIGNhdXNlIEF1dG9tYWtlIHRvIGRlZmluZSBzdWNoIGEgQGNvZGV7X0xJTkt9CnZh cmlhYmxlLgpAZW5kIHZ0YWJsZQoKCkBub2RlIFlhY2MgYW5kIExleApAc2VjdGlvbiBZYWNjIGFu ZCBMZXggc3VwcG9ydAoKQXV0b21ha2UgaGFzIHNvbWV3aGF0IGlkaW9zeW5jcmF0aWMgc3VwcG9y dCBmb3IgWWFjYyBhbmQgTGV4LgoKQXV0b21ha2UgYXNzdW1lcyB0aGF0IHRoZSBAZmlsZXsuY30g ZmlsZSBnZW5lcmF0ZWQgYnkgQGNvbW1hbmR7eWFjY30Kb3IgQGNvbW1hbmR7bGV4fSBzaG91bGQg YmUgbmFtZWQgdXNpbmcgdGhlIGJhc2VuYW1lIG9mIHRoZSBpbnB1dApmaWxlLiAgVGhhdCBpcywg Zm9yIGEgWWFjYyBzb3VyY2UgZmlsZSBAZmlsZXtmb28ueX0sIEF1dG9tYWtlIHdpbGwKY2F1c2Ug dGhlIGludGVybWVkaWF0ZSBmaWxlIHRvIGJlIG5hbWVkIEBmaWxle2Zvby5jfSAoYXMgb3Bwb3Nl ZCB0bwpAZmlsZXt5LnRhYi5jfSwgd2hpY2ggaXMgbW9yZSB0cmFkaXRpb25hbCkuCgpUaGUgZXh0 ZW5zaW9uIG9mIGEgWWFjYyBzb3VyY2UgZmlsZSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgZXh0 ZW5zaW9uCm9mIHRoZSByZXN1bHRpbmcgQyBvciBDKysgc291cmNlIGFuZCBoZWFkZXIgZmlsZXMu ICBCZSBhd2FyZSB0aGF0IGhlYWRlcgpmaWxlcyBhcmUgZ2VuZXJhdGVkIG9ubHkgd2hlbiB0aGUg b3B0aW9uIEBvcHRpb257LWR9IGlzIGdpdmVuIHRvIFlhY2M7IHNlZQpiZWxvdyBmb3IgbW9yZSBp bmZvcm1hdGlvbiBhYm91dCB0aGlzIGZsYWcsIGFuZCBob3cgdG8gc3BlY2lmeSBpdC4KRmlsZXMg d2l0aCB0aGUgZXh0ZW5zaW9uIEBmaWxley55fSB3aWxsIHRodXMgYmUgdHVybmVkIGludG8gQGZp bGV7LmN9CnNvdXJjZXMgYW5kIEBmaWxley5ofSBoZWFkZXJzOyBsaWtld2lzZSwgQGZpbGV7Lnl5 fSB3aWxsIGJlY29tZQpAZmlsZXsuY2N9IGFuZCBAZmlsZXsuaGh9LCBAZmlsZXsueSsrfSB3aWxs IGJlY29tZSBAZmlsZXtjKyt9IGFuZApAZmlsZXtoKyt9LCBAZmlsZXsueXh4fSB3aWxsIGJlY29t ZSBAZmlsZXsuY3h4fSBhbmQgQGZpbGV7Lmh4eH0sCmFuZCBAZmlsZXsueXBwfSB3aWxsIGJlY29t ZSBAZmlsZXsuY3BwfSBhbmQgQGZpbGV7LmhwcH0uCgpTaW1pbGFybHksIExleCBzb3VyY2UgZmls ZXMgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgQyBvciBDKys7IHRoZQpleHRlbnNpb25zIEBmaWxl ey5sfSwgQGZpbGV7LmxsfSwgQGZpbGV7LmwrK30sIEBmaWxley5seHh9LCBhbmQKQGZpbGV7Lmxw cH0gYXJlIHJlY29nbml6ZWQuCgpZb3Ugc2hvdWxkIG5ldmVyIGV4cGxpY2l0bHkgbWVudGlvbiB0 aGUgaW50ZXJtZWRpYXRlIChDIG9yIEMrKykgZmlsZQppbiBhbnkgQGNvZGV7U09VUkNFU30gdmFy aWFibGUgKGV4Y2VwdCBAY29kZXtCVUlMVF9TT1VSQ0VTfSwgc2VlIGJlbG93KTsKb25seSBsaXN0 IHRoZSBzb3VyY2UgZmlsZS4KClRoZSBpbnRlcm1lZGlhdGUgZmlsZXMgZ2VuZXJhdGVkIGJ5IEBj b21tYW5ke3lhY2N9IChvciBAY29tbWFuZHtsZXh9KQp3aWxsIGJlIGluY2x1ZGVkIGluIGFueSBk aXN0cmlidXRpb24gdGhhdCBpcyBtYWRlLiAgVGhhdCB3YXkgdGhlIHVzZXIKZG9lc24ndCBuZWVk IHRvIGhhdmUgQGNvbW1hbmR7eWFjY30gb3IgQGNvbW1hbmR7bGV4fS4KCklmIGEgWWFjYyBzb3Vy Y2UgZmlsZSBpcyBzZWVuLCB0aGVuIHlvdXIgQGZpbGV7Y29uZmlndXJlLmFjfSBtdXN0CmRlZmlu ZSB0aGUgdmFyaWFibGUgQGNvZGV7WUFDQ30uICBUaGlzIGlzIG1vc3QgZWFzaWx5IGRvbmUgYnkg aW52b2tpbmcKdGhlIG1hY3JvIEBjb2Rle0FDX1BST0dfWUFDQ30gKEBweHJlZntQYXJ0aWN1bGFy IFByb2dyYW1zLCAsClBhcnRpY3VsYXIgUHJvZ3JhbSBDaGVja3MsIGF1dG9jb25mLCBUaGUgQXV0 b2NvbmYgTWFudWFsfSkuCgpAdmluZGV4IFlGTEFHUwpAdmluZGV4IEFNX1lGTEFHUwpXaGVuIEBj b2Rle3lhY2N9IGlzIGludm9rZWQsIGl0IGlzIHBhc3NlZCBAY29kZXtBTV9ZRkxBR1N9IGFuZApA Y29kZXtZRkxBR1N9LiAgVGhlIGxhdHRlciBpcyBhIHVzZXIgdmFyaWFibGUgYW5kIHRoZSBmb3Jt ZXIgaXMKaW50ZW5kZWQgZm9yIHRoZSBAZmlsZXtNYWtlZmlsZS5hbX0gYXV0aG9yLgoKQGNvZGV7 QU1fWUZMQUdTfSBpcyB1c3VhbGx5IHVzZWQgdG8gcGFzcyB0aGUgQG9wdGlvbnstZH0gb3B0aW9u IHRvCkBjb21tYW5ke3lhY2N9LiAgQXV0b21ha2Uga25vd3Mgd2hhdCB0aGlzIG1lYW5zIGFuZCB3 aWxsIGF1dG9tYXRpY2FsbHkKYWRqdXN0IGl0cyBydWxlcyB0byB1cGRhdGUgYW5kIGRpc3RyaWJ1 dGUgdGhlIGhlYWRlciBmaWxlIGJ1aWx0IGJ5CkBzYW1we3lhY2MgLWR9LiAgQ2F2ZWF0OiBAY29t bWFuZHthdXRvbWFrZX0gcmVjb2duaXplcyBAb3B0aW9uey1kfSBpbgpAY29kZXtBTV9ZRkxBR1N9 IG9ubHkgaWYgaXQgaXMgbm90IGNsdXN0ZXJlZCB3aXRoIG90aGVyIG9wdGlvbnM7IGZvcgpleGFt cGxlLCBpdCB3b24ndCBiZSByZWNvZ25pemVkIGlmIEBjb2Rle0FNX1lGTEFHU30gaXMgQG9wdGlv bnstZHR9LApidXQgaXQgd2lsbCBiZSBpZiBAY29kZXtBTV9ZRkxBR1N9IGlzIEBvcHRpb257LWQg LXR9IG9yIEBvcHRpb257LXQKLWR9LgoKV2hhdCBBdXRvbWFrZSBjYW5ub3QgZ3Vlc3MsIHRob3Vn aCwgaXMgd2hlcmUgdGhpcyBoZWFkZXIgd2lsbCBiZSB1c2VkOgppdCBpcyB1cCB0byB5b3UgdG8g ZW5zdXJlIHRoZSBoZWFkZXIgZ2V0cyBidWlsdCBiZWZvcmUgaXQgaXMgZmlyc3QKdXNlZC4gIFR5 cGljYWxseSB0aGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgZGVwZW5kZW5jeSB0cmFja2lu ZyB0bwp3b3JrIHdoZW4gdGhlIGhlYWRlciBpcyBpbmNsdWRlZCBieSBhbm90aGVyIGZpbGUuICBU aGUgY29tbW9uIHNvbHV0aW9uCmlzIGxpc3RpbmcgdGhlIGhlYWRlciBmaWxlLCBhbmQgdGhlIGNv cnJlc3BvbmRpbmcgQyBmaWxlLCBpbgpAY29kZXtCVUlMVF9TT1VSQ0VTfSAoQHB4cmVme1NvdXJj ZXN9KSBhcyBmb2xsb3dzLgoKQGV4YW1wbGUKQlVJTFRfU09VUkNFUyA9IHBhcnNlci5oIHBhcnNl ci5jCkFNX1lGTEFHUyA9IC1kCmJpbl9QUk9HUkFNUyA9IGZvbwpmb29fU09VUkNFUyA9IEBkb3Rz e30gcGFyc2VyLnkgQGRvdHN7fQpAZW5kIGV4YW1wbGUKCklmIGEgTGV4IHNvdXJjZSBmaWxlIGlz IHNlZW4sIHRoZW4geW91ciBAZmlsZXtjb25maWd1cmUuYWN9IG11c3QKZGVmaW5lIHRoZSB2YXJp YWJsZSBAY29kZXtMRVh9LiAgWW91IGNhbiB1c2UgQGNvZGV7QUNfUFJPR19MRVh9IHRvIGRvCnRo aXMgKEBweHJlZntQYXJ0aWN1bGFyIFByb2dyYW1zLCAsIFBhcnRpY3VsYXIgUHJvZ3JhbSBDaGVj a3MsCmF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSksIGJ1dCB1c2luZyB0aGUgQGNvZGV7 QU1fUFJPR19MRVh9Cm1hY3JvIChAcHhyZWZ7TWFjcm9zfSkgaXMgcmVjb21tZW5kZWQuCgpAdmlu ZGV4IExGTEFHUwpAdmluZGV4IEFNX0xGTEFHUwpXaGVuIEBjb21tYW5ke2xleH0gaXMgaW52b2tl ZCwgaXQgaXMgcGFzc2VkIEBjb2Rle0FNX0xGTEFHU30gYW5kCkBjb2Rle0xGTEFHU30uICBUaGUg bGF0dGVyIGlzIGEgdXNlciB2YXJpYWJsZSBhbmQgdGhlIGZvcm1lciBpcwppbnRlbmRlZCBmb3Ig dGhlIEBmaWxle01ha2VmaWxlLmFtfSBhdXRob3IuCgpXaGVuIEBjb2Rle0FNX01BSU5UQUlORVJf TU9ERX0gKEBweHJlZnttYWludGFpbmVyLW1vZGV9KSBpcyBpbiBlZmZlY3QsCnRoZSByZWJ1aWxk IHJ1bGVzIGZvciBkaXN0cmlidXRlZCBZYWNjIGFuZCBMZXggc291cmNlcyBhcmUgb25seSB1c2Vk CndoZW4gQGNvZGV7bWFpbnRhaW5lci1tb2RlfSBpcyBlbmFibGVkLCBvciB3aGVuIHRoZSBmaWxl cyBoYXZlIGJlZW4KZXJhc2VkLgoKQGNpbmRleCBAY29tbWFuZHt5bHdyYXB9CkBjaW5kZXggQGNv bW1hbmR7eWFjY30sIG11bHRpcGxlIHBhcnNlcnMKQGNpbmRleCBNdWx0aXBsZSBAY29tbWFuZHt5 YWNjfSBwYXJzZXJzCkBjaW5kZXggTXVsdGlwbGUgQGNvbW1hbmR7bGV4fSBsZXhlcnMKQGNpbmRl eCBAY29tbWFuZHtsZXh9LCBtdWx0aXBsZSBsZXhlcnMKCldoZW4gWWFjYyBvciBMZXggc291cmNl cyBhcmUgdXNlZCwgQGNvZGV7YXV0b21ha2UgLWF9IGF1dG9tYXRpY2FsbHkKaW5zdGFsbHMgYW4g YXV4aWxpYXJ5IHByb2dyYW0gY2FsbGVkIEBjb21tYW5ke3lsd3JhcH0gaW4geW91ciBwYWNrYWdl CihAcHhyZWZ7QXV4aWxpYXJ5IFByb2dyYW1zfSkuICBUaGlzIHByb2dyYW0gaXMgdXNlZCBieSB0 aGUgYnVpbGQgcnVsZXMKdG8gcmVuYW1lIHRoZSBvdXRwdXQgb2YgdGhlc2UgdG9vbHMsIGFuZCBt YWtlcyBpdCBwb3NzaWJsZSB0byBpbmNsdWRlCm11bHRpcGxlIEBjb21tYW5ke3lhY2N9IChvciBA Y29tbWFuZHtsZXh9KSBzb3VyY2UgZmlsZXMgaW4gYSBzaW5nbGUKZGlyZWN0b3J5LiAgVGhpcyBp cyBuZWNlc3NhcnkgYmVjYXVzZSBZYWNjJ3Mgb3V0cHV0IGZpbGUgbmFtZSBpcwpmaXhlZCwgYW5k IGEgcGFyYWxsZWwgbWFrZSBjb3VsZCBpbnZva2UgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBvZgpA Y29tbWFuZHt5YWNjfSBzaW11bHRhbmVvdXNseS4KCkBtZW51CiogTGlua2luZyBNdWx0aXBsZSBZ YWNjIFBhcnNlcnM6OgpAZW5kIG1lbnUKCkBub2RlIExpbmtpbmcgTXVsdGlwbGUgWWFjYyBQYXJz ZXJzCkBzdWJzZWN0aW9uIExpbmtpbmcgTXVsdGlwbGUgWWFjYyBQYXJzZXJzCgpAY2luZGV4IExp bmtpbmcgbXVsdGlwbGUgQGNvbW1hbmR7eWFjY30gcGFyc2VycwoKRm9yIEBjb21tYW5ke3lhY2N9 LCBzaW1wbHkgbWFuYWdpbmcgbG9ja2luZyBhcyB3aXRoIEBjb2Rle3lsd3JhcH0gaXMKaW5zdWZm aWNpZW50LiAgVGhlIG91dHB1dCBvZiBAY29tbWFuZHt5YWNjfSBhbHdheXMgdXNlcyB0aGUgc2Ft ZQpzeW1ib2wgbmFtZXMgaW50ZXJuYWxseSwgc28gaXQgaXNuJ3QgcG9zc2libGUgdG8gbGluayB0 d28KQGNvbW1hbmR7eWFjY30gcGFyc2VycyBpbnRvIHRoZSBzYW1lIGV4ZWN1dGFibGUuCgpXZSBy ZWNvbW1lbmQgdXNpbmcgdGhlIGZvbGxvd2luZyByZW5hbWluZyBoYWNrIHVzZWQgaW4gQGNvbW1h bmR7Z2RifToKQGV4YW1wbGUKI2RlZmluZSB5eW1heGRlcHRoIGNfbWF4ZGVwdGgKI2RlZmluZSB5 eXBhcnNlIGNfcGFyc2UKI2RlZmluZSB5eWxleCAgIGNfbGV4CiNkZWZpbmUgeXllcnJvciBjX2Vy cm9yCiNkZWZpbmUgeXlsdmFsICBjX2x2YWwKI2RlZmluZSB5eWNoYXIgIGNfY2hhcgojZGVmaW5l IHl5ZGVidWcgY19kZWJ1ZwojZGVmaW5lIHl5cGFjdCAgY19wYWN0CiNkZWZpbmUgeXlyMSAgICBj X3IxCiNkZWZpbmUgeXlyMiAgICBjX3IyCiNkZWZpbmUgeXlkZWYgICBjX2RlZgojZGVmaW5lIHl5 Y2hrICAgY19jaGsKI2RlZmluZSB5eXBnbyAgIGNfcGdvCiNkZWZpbmUgeXlhY3QgICBjX2FjdAoj ZGVmaW5lIHl5ZXhjYSAgY19leGNhCiNkZWZpbmUgeXllcnJmbGFnIGNfZXJyZmxhZwojZGVmaW5l IHl5bmVycnMgY19uZXJycwojZGVmaW5lIHl5cHMgICAgY19wcwojZGVmaW5lIHl5cHYgICAgY19w dgojZGVmaW5lIHl5cyAgICAgY19zCiNkZWZpbmUgeXlfeXlzICBjX3l5cwojZGVmaW5lIHl5c3Rh dGUgY19zdGF0ZQojZGVmaW5lIHl5dG1wICAgY190bXAKI2RlZmluZSB5eXYgICAgIGNfdgojZGVm aW5lIHl5X3l5diAgY195eXYKI2RlZmluZSB5eXZhbCAgIGNfdmFsCiNkZWZpbmUgeXlsbG9jICBj X2xsb2MKI2RlZmluZSB5eXJlZHMgIGNfcmVkcwojZGVmaW5lIHl5dG9rcyAgY190b2tzCiNkZWZp bmUgeXlsaHMgICBjX3l5bGhzCiNkZWZpbmUgeXlsZW4gICBjX3l5bGVuCiNkZWZpbmUgeXlkZWZy ZWQgY195eWRlZnJlZAojZGVmaW5lIHl5ZGdvdG8gIGNfeXlkZ290bwojZGVmaW5lIHl5c2luZGV4 IGNfeXlzaW5kZXgKI2RlZmluZSB5eXJpbmRleCBjX3l5cmluZGV4CiNkZWZpbmUgeXlnaW5kZXgg Y195eWdpbmRleAojZGVmaW5lIHl5dGFibGUgIGNfeXl0YWJsZQojZGVmaW5lIHl5Y2hlY2sgIGNf eXljaGVjawojZGVmaW5lIHl5bmFtZSAgIGNfeXluYW1lCiNkZWZpbmUgeXlydWxlICAgY195eXJ1 bGUKQGVuZCBleGFtcGxlCgpGb3IgZWFjaCBkZWZpbmUsIHJlcGxhY2UgdGhlIEBzYW1we2NffSBw cmVmaXggd2l0aCB3aGF0ZXZlciB5b3UgbGlrZS4KVGhlc2UgZGVmaW5lcyB3b3JrIGZvciBAY29t bWFuZHtiaXNvbn0sIEBjb21tYW5ke2J5YWNjfSwgYW5kCnRyYWRpdGlvbmFsIEBjb2Rle3lhY2N9 cy4gIElmIHlvdSBmaW5kIGEgcGFyc2VyIGdlbmVyYXRvciB0aGF0IHVzZXMgYQpzeW1ib2wgbm90 IGNvdmVyZWQgaGVyZSwgcGxlYXNlIHJlcG9ydCB0aGUgbmV3IG5hbWUgc28gaXQgY2FuIGJlIGFk ZGVkCnRvIHRoZSBsaXN0LgoKCkBub2RlIEMrKyBTdXBwb3J0CkBzZWN0aW9uIEMrKyBTdXBwb3J0 CgpAY2luZGV4IEMrKyBzdXBwb3J0CkBjaW5kZXggU3VwcG9ydCBmb3IgQysrCgpBdXRvbWFrZSBp bmNsdWRlcyBmdWxsIHN1cHBvcnQgZm9yIEMrKy4KCkFueSBwYWNrYWdlIGluY2x1ZGluZyBDKysg Y29kZSBtdXN0IGRlZmluZSB0aGUgb3V0cHV0IHZhcmlhYmxlCkBjb2Rle0NYWH0gaW4gQGZpbGV7 Y29uZmlndXJlLmFjfTsgdGhlIHNpbXBsZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIHVzZQp0aGUg QGNvZGV7QUNfUFJPR19DWFh9IG1hY3JvIChAcHhyZWZ7UGFydGljdWxhciBQcm9ncmFtcywgLCBQ YXJ0aWN1bGFyClByb2dyYW0gQ2hlY2tzLCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0p LgoKQSBmZXcgYWRkaXRpb25hbCB2YXJpYWJsZXMgYXJlIGRlZmluZWQgd2hlbiBhIEMrKyBzb3Vy Y2UgZmlsZSBpcyBzZWVuOgoKQHZ0YWJsZSBAY29kZQpAaXRlbSBDWFgKVGhlIG5hbWUgb2YgdGhl IEMrKyBjb21waWxlci4KCkBpdGVtIENYWEZMQUdTCkFueSBmbGFncyB0byBwYXNzIHRvIHRoZSBD KysgY29tcGlsZXIuCgpAaXRlbSBBTV9DWFhGTEFHUwpUaGUgbWFpbnRhaW5lcidzIHZhcmlhbnQg b2YgQGNvZGV7Q1hYRkxBR1N9LgoKQGl0ZW0gQ1hYQ09NUElMRQpUaGUgY29tbWFuZCB1c2VkIHRv IGNvbXBpbGUgYSBDKysgc291cmNlIGZpbGUuICBUaGUgZmlsZSBuYW1lIGlzCmFwcGVuZGVkIHRv IGZvcm0gdGhlIGNvbXBsZXRlIGNvbW1hbmQgbGluZS4KCkBpdGVtIENYWExJTksKVGhlIGNvbW1h bmQgdXNlZCB0byBsaW5rIGEgQysrIHByb2dyYW0uCkBlbmQgdnRhYmxlCgoKQG5vZGUgT2JqZWN0 aXZlIEMgU3VwcG9ydApAc2VjdGlvbiBPYmplY3RpdmUgQyBTdXBwb3J0CgpAY2luZGV4IE9iamVj dGl2ZSBDIHN1cHBvcnQKQGNpbmRleCBTdXBwb3J0IGZvciBPYmplY3RpdmUgQwoKQXV0b21ha2Ug aW5jbHVkZXMgc29tZSBzdXBwb3J0IGZvciBPYmplY3RpdmUgQy4KCkFueSBwYWNrYWdlIGluY2x1 ZGluZyBPYmplY3RpdmUgQyBjb2RlIG11c3QgZGVmaW5lIHRoZSBvdXRwdXQgdmFyaWFibGUKQGNv ZGV7T0JKQ30gaW4gQGZpbGV7Y29uZmlndXJlLmFjfTsgdGhlIHNpbXBsZXN0IHdheSB0byBkbyB0 aGlzIGlzIHRvIHVzZQp0aGUgQGNvZGV7QUNfUFJPR19PQkpDfSBtYWNybyAoQHB4cmVme1BhcnRp Y3VsYXIgUHJvZ3JhbXMsICwgUGFydGljdWxhcgpQcm9ncmFtIENoZWNrcywgYXV0b2NvbmYsIFRo ZSBBdXRvY29uZiBNYW51YWx9KS4KCkEgZmV3IGFkZGl0aW9uYWwgdmFyaWFibGVzIGFyZSBkZWZp bmVkIHdoZW4gYW4gT2JqZWN0aXZlIEMgc291cmNlIGZpbGUKaXMgc2VlbjoKCkB2dGFibGUgQGNv ZGUKQGl0ZW0gT0JKQwpUaGUgbmFtZSBvZiB0aGUgT2JqZWN0aXZlIEMgY29tcGlsZXIuCgpAaXRl bSBPQkpDRkxBR1MKQW55IGZsYWdzIHRvIHBhc3MgdG8gdGhlIE9iamVjdGl2ZSBDIGNvbXBpbGVy LgoKQGl0ZW0gQU1fT0JKQ0ZMQUdTClRoZSBtYWludGFpbmVyJ3MgdmFyaWFudCBvZiBAY29kZXtP QkpDRkxBR1N9LgoKQGl0ZW0gT0JKQ0NPTVBJTEUKVGhlIGNvbW1hbmQgdXNlZCB0byBjb21waWxl IGFuIE9iamVjdGl2ZSBDIHNvdXJjZSBmaWxlLiAgVGhlIGZpbGUgbmFtZQppcyBhcHBlbmRlZCB0 byBmb3JtIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUuCgpAaXRlbSBPQkpDTElOSwpUaGUgY29t bWFuZCB1c2VkIHRvIGxpbmsgYW4gT2JqZWN0aXZlIEMgcHJvZ3JhbS4KQGVuZCB2dGFibGUKCgpA bm9kZSBPYmplY3RpdmUgQysrIFN1cHBvcnQKQHNlY3Rpb24gT2JqZWN0aXZlIEMrKyBTdXBwb3J0 CgpAY2luZGV4IE9iamVjdGl2ZSBDKysgc3VwcG9ydApAY2luZGV4IFN1cHBvcnQgZm9yIE9iamVj dGl2ZSBDKysKCkF1dG9tYWtlIGluY2x1ZGVzIHNvbWUgc3VwcG9ydCBmb3IgT2JqZWN0aXZlIEMr Ky4KCkFueSBwYWNrYWdlIGluY2x1ZGluZyBPYmplY3RpdmUgQysrIGNvZGUgbXVzdCBkZWZpbmUg dGhlIG91dHB1dCB2YXJpYWJsZQpAY29kZXtPQkpDWFh9IGluIEBmaWxle2NvbmZpZ3VyZS5hY307 IHRoZSBzaW1wbGVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byB1c2UKdGhlIEBjb2Rle0FDX1BST0df T0JKQ1hYfSBtYWNybyAoQHB4cmVme1BhcnRpY3VsYXIgUHJvZ3JhbXMsICwgUGFydGljdWxhcgpQ cm9ncmFtIENoZWNrcywgYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9KS4KCkEgZmV3IGFk ZGl0aW9uYWwgdmFyaWFibGVzIGFyZSBkZWZpbmVkIHdoZW4gYW4gT2JqZWN0aXZlIEMrKyBzb3Vy Y2UgZmlsZQppcyBzZWVuOgoKQHZ0YWJsZSBAY29kZQpAaXRlbSBPQkpDWFgKVGhlIG5hbWUgb2Yg dGhlIE9iamVjdGl2ZSBDKysgY29tcGlsZXIuCgpAaXRlbSBPQkpDWFhGTEFHUwpBbnkgZmxhZ3Mg dG8gcGFzcyB0byB0aGUgT2JqZWN0aXZlIEMrKyBjb21waWxlci4KCkBpdGVtIEFNX09CSkNYWEZM QUdTClRoZSBtYWludGFpbmVyJ3MgdmFyaWFudCBvZiBAY29kZXtPQkpDWFhGTEFHU30uCgpAaXRl bSBPQkpDWFhDT01QSUxFClRoZSBjb21tYW5kIHVzZWQgdG8gY29tcGlsZSBhbiBPYmplY3RpdmUg QysrIHNvdXJjZSBmaWxlLiAgVGhlIGZpbGUKbmFtZSBpcyBhcHBlbmRlZCB0byBmb3JtIHRoZSBj b21wbGV0ZSBjb21tYW5kIGxpbmUuCgpAaXRlbSBPQkpDWFhMSU5LClRoZSBjb21tYW5kIHVzZWQg dG8gbGluayBhbiBPYmplY3RpdmUgQysrIHByb2dyYW0uCkBlbmQgdnRhYmxlCgoKQG5vZGUgVW5p ZmllZCBQYXJhbGxlbCBDIFN1cHBvcnQKQHNlY3Rpb24gVW5pZmllZCBQYXJhbGxlbCBDIFN1cHBv cnQKCkBjaW5kZXggVW5pZmllZCBQYXJhbGxlbCBDIHN1cHBvcnQKQGNpbmRleCBTdXBwb3J0IGZv ciBVbmlmaWVkIFBhcmFsbGVsIEMKCkF1dG9tYWtlIGluY2x1ZGVzIHNvbWUgc3VwcG9ydCBmb3Ig VW5pZmllZCBQYXJhbGxlbCBDLgoKQW55IHBhY2thZ2UgaW5jbHVkaW5nIFVuaWZpZWQgUGFyYWxs ZWwgQyBjb2RlIG11c3QgZGVmaW5lIHRoZSBvdXRwdXQKdmFyaWFibGUgQGNvZGV7VVBDfSBpbiBA ZmlsZXtjb25maWd1cmUuYWN9OyB0aGUgc2ltcGxlc3Qgd2F5IHRvIGRvCnRoaXMgaXMgdG8gdXNl IHRoZSBAY29kZXtBTV9QUk9HX1VQQ30gbWFjcm8gKEBweHJlZntQdWJsaWMgTWFjcm9zfSkuCgpB IGZldyBhZGRpdGlvbmFsIHZhcmlhYmxlcyBhcmUgZGVmaW5lZCB3aGVuIGEgVW5pZmllZCBQYXJh bGxlbCBDCnNvdXJjZSBmaWxlIGlzIHNlZW46CgpAdnRhYmxlIEBjb2RlCkBpdGVtIFVQQwpUaGUg bmFtZSBvZiB0aGUgVW5pZmllZCBQYXJhbGxlbCBDIGNvbXBpbGVyLgoKQGl0ZW0gVVBDRkxBR1MK QW55IGZsYWdzIHRvIHBhc3MgdG8gdGhlIFVuaWZpZWQgUGFyYWxsZWwgQyBjb21waWxlci4KCkBp dGVtIEFNX1VQQ0ZMQUdTClRoZSBtYWludGFpbmVyJ3MgdmFyaWFudCBvZiBAY29kZXtVUENGTEFH U30uCgpAaXRlbSBVUENDT01QSUxFClRoZSBjb21tYW5kIHVzZWQgdG8gY29tcGlsZSBhIFVuaWZp ZWQgUGFyYWxsZWwgQyBzb3VyY2UgZmlsZS4gIFRoZQpmaWxlIG5hbWUgaXMgYXBwZW5kZWQgdG8g Zm9ybSB0aGUgY29tcGxldGUgY29tbWFuZCBsaW5lLgoKQGl0ZW0gVVBDTElOSwpUaGUgY29tbWFu ZCB1c2VkIHRvIGxpbmsgYSBVbmlmaWVkIFBhcmFsbGVsIEMgcHJvZ3JhbS4KQGVuZCB2dGFibGUK CgpAbm9kZSBBc3NlbWJseSBTdXBwb3J0CkBzZWN0aW9uIEFzc2VtYmx5IFN1cHBvcnQKCkF1dG9t YWtlIGluY2x1ZGVzIHNvbWUgc3VwcG9ydCBmb3IgYXNzZW1ibHkgY29kZS4gIFRoZXJlIGFyZSB0 d28gZm9ybXMKb2YgYXNzZW1ibGVyIGZpbGVzOiBub3JtYWwgKEBmaWxleyouc30pIGFuZCBwcmVw cm9jZXNzZWQgYnkgQGNvZGV7Q1BQfQooQGZpbGV7Ki5TfSBvciBAZmlsZXsqLnN4fSkuCgpAdmlu ZGV4IENDQVMKQHZpbmRleCBDQ0FTRkxBR1MKQHZpbmRleCBDUFBGTEFHUwpAdmluZGV4IEFNX0ND QVNGTEFHUwpAdmluZGV4IEFNX0NQUEZMQUdTClRoZSB2YXJpYWJsZSBAY29kZXtDQ0FTfSBob2xk cyB0aGUgbmFtZSBvZiB0aGUgY29tcGlsZXIgdXNlZCB0byBidWlsZAphc3NlbWJseSBjb2RlLiAg VGhpcyBjb21waWxlciBtdXN0IHdvcmsgYSBiaXQgbGlrZSBhIEMgY29tcGlsZXI7IGluCnBhcnRp Y3VsYXIgaXQgbXVzdCBhY2NlcHQgQG9wdGlvbnstY30gYW5kIEBvcHRpb257LW99LiAgVGhlIHZh bHVlcyBvZgpAY29kZXtDQ0FTRkxBR1N9IGFuZCBAY29kZXtBTV9DQ0FTRkxBR1N9IChvciBpdHMg cGVyLXRhcmdldApkZWZpbml0aW9uKSBpcyBwYXNzZWQgdG8gdGhlIGNvbXBpbGF0aW9uLiAgRm9y IHByZXByb2Nlc3NlZCBmaWxlcywKQGNvZGV7REVGU30sIEBjb2Rle0RFRkFVTFRfSU5DTFVERVN9 LCBAY29kZXtJTkNMVURFU30sIEBjb2Rle0NQUEZMQUdTfQphbmQgQGNvZGV7QU1fQ1BQRkxBR1N9 IGFyZSBhbHNvIHVzZWQuCgpUaGUgYXV0b2NvbmYgbWFjcm8gQGNvZGV7QU1fUFJPR19BU30gd2ls bCBkZWZpbmUgQGNvZGV7Q0NBU30gYW5kCkBjb2Rle0NDQVNGTEFHU30gZm9yIHlvdSAodW5sZXNz IHRoZXkgYXJlIGFscmVhZHkgc2V0LCBpdCBzaW1wbHkgc2V0cwpAY29kZXtDQ0FTfSB0byB0aGUg QyBjb21waWxlciBhbmQgQGNvZGV7Q0NBU0ZMQUdTfSB0byB0aGUgQyBjb21waWxlcgpmbGFncyks IGJ1dCB5b3UgYXJlIGZyZWUgdG8gZGVmaW5lIHRoZXNlIHZhcmlhYmxlcyBieSBvdGhlciBtZWFu cy4KCk9ubHkgdGhlIHN1ZmZpeGVzIEBmaWxley5zfSwgQGZpbGV7LlN9LCBhbmQgQGZpbGV7LnN4 fSBhcmUgcmVjb2duaXplZCBieQpAY29tbWFuZHthdXRvbWFrZX0gYXMgYmVpbmcgZmlsZXMgY29u dGFpbmluZyBhc3NlbWJseSBjb2RlLgoKCkBub2RlIEZvcnRyYW4gNzcgU3VwcG9ydApAY29tbWVu dCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKQHNlY3Rpb24gRm9ydHJhbiA3NyBT dXBwb3J0CgpAY2luZGV4IEZvcnRyYW4gNzcgc3VwcG9ydApAY2luZGV4IFN1cHBvcnQgZm9yIEZv cnRyYW4gNzcKCkF1dG9tYWtlIGluY2x1ZGVzIGZ1bGwgc3VwcG9ydCBmb3IgRm9ydHJhbiA3Ny4K CkFueSBwYWNrYWdlIGluY2x1ZGluZyBGb3J0cmFuIDc3IGNvZGUgbXVzdCBkZWZpbmUgdGhlIG91 dHB1dCB2YXJpYWJsZQpAY29kZXtGNzd9IGluIEBmaWxle2NvbmZpZ3VyZS5hY307IHRoZSBzaW1w bGVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byB1c2UKdGhlIEBjb2Rle0FDX1BST0dfRjc3fSBtYWNy byAoQHB4cmVme1BhcnRpY3VsYXIgUHJvZ3JhbXMsICwgUGFydGljdWxhcgpQcm9ncmFtIENoZWNr cywgYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9KS4KCkEgZmV3IGFkZGl0aW9uYWwgdmFy aWFibGVzIGFyZSBkZWZpbmVkIHdoZW4gYSBGb3J0cmFuIDc3IHNvdXJjZSBmaWxlIGlzCnNlZW46 CgpAdnRhYmxlIEBjb2RlCgpAaXRlbSBGNzcKVGhlIG5hbWUgb2YgdGhlIEZvcnRyYW4gNzcgY29t cGlsZXIuCgpAaXRlbSBGRkxBR1MKQW55IGZsYWdzIHRvIHBhc3MgdG8gdGhlIEZvcnRyYW4gNzcg Y29tcGlsZXIuCgpAaXRlbSBBTV9GRkxBR1MKVGhlIG1haW50YWluZXIncyB2YXJpYW50IG9mIEBj b2Rle0ZGTEFHU30uCgpAaXRlbSBSRkxBR1MKQW55IGZsYWdzIHRvIHBhc3MgdG8gdGhlIFJhdGZv ciBjb21waWxlci4KCkBpdGVtIEFNX1JGTEFHUwpUaGUgbWFpbnRhaW5lcidzIHZhcmlhbnQgb2Yg QGNvZGV7UkZMQUdTfS4KCkBpdGVtIEY3N0NPTVBJTEUKVGhlIGNvbW1hbmQgdXNlZCB0byBjb21w aWxlIGEgRm9ydHJhbiA3NyBzb3VyY2UgZmlsZS4gIFRoZSBmaWxlIG5hbWUKaXMgYXBwZW5kZWQg dG8gZm9ybSB0aGUgY29tcGxldGUgY29tbWFuZCBsaW5lLgoKQGl0ZW0gRkxJTksKVGhlIGNvbW1h bmQgdXNlZCB0byBsaW5rIGEgcHVyZSBGb3J0cmFuIDc3IHByb2dyYW0gb3Igc2hhcmVkIGxpYnJh cnkuCkBlbmQgdnRhYmxlCgpBdXRvbWFrZSBjYW4gaGFuZGxlIHByZXByb2Nlc3NpbmcgRm9ydHJh biA3NyBhbmQgUmF0Zm9yIHNvdXJjZSBmaWxlcyBpbgphZGRpdGlvbiB0byBjb21waWxpbmcgdGhl bUBmb290bm90ZXtNdWNoLCBpZiBub3QgbW9zdCwgb2YgdGhlCmluZm9ybWF0aW9uIGluIHRoZSBm b2xsb3dpbmcgc2VjdGlvbnMgcGVydGFpbmluZyB0byBwcmVwcm9jZXNzaW5nCkZvcnRyYW4gNzcg cHJvZ3JhbXMgd2FzIHRha2VuIGFsbW9zdCB2ZXJiYXRpbSBmcm9tIEByZWZ7Q2F0YWxvZ3VlIG9m ClJ1bGVzLCAsIENhdGFsb2d1ZSBvZiBSdWxlcywgbWFrZSwgVGhlIEdOVSBNYWtlIE1hbnVhbH0u fS4gIEF1dG9tYWtlCmFsc28gY29udGFpbnMgc29tZSBzdXBwb3J0IGZvciBjcmVhdGluZyBwcm9n cmFtcyBhbmQgc2hhcmVkIGxpYnJhcmllcwp0aGF0IGFyZSBhIG1peHR1cmUgb2YgRm9ydHJhbiA3 NyBhbmQgb3RoZXIgbGFuZ3VhZ2VzIChAcHhyZWZ7TWl4aW5nCkZvcnRyYW4gNzcgV2l0aCBDIGFu ZCBDKyt9KS4KClRoZXNlIGlzc3VlcyBhcmUgY292ZXJlZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rp b25zLgoKQG1lbnUKKiBQcmVwcm9jZXNzaW5nIEZvcnRyYW4gNzc6OiAgICBQcmVwcm9jZXNzaW5n IEZvcnRyYW4gNzcgc291cmNlcwoqIENvbXBpbGluZyBGb3J0cmFuIDc3IEZpbGVzOjogIENvbXBp bGluZyBGb3J0cmFuIDc3IHNvdXJjZXMKKiBNaXhpbmcgRm9ydHJhbiA3NyBXaXRoIEMgYW5kIEMr Kzo6ICBNaXhpbmcgRm9ydHJhbiA3NyBXaXRoIEMgYW5kIEMrKwpAZW5kIG1lbnUKCgpAbm9kZSBQ cmVwcm9jZXNzaW5nIEZvcnRyYW4gNzcKQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2 aW91cywgIHVwCkBzdWJzZWN0aW9uIFByZXByb2Nlc3NpbmcgRm9ydHJhbiA3NwoKQGNpbmRleCBQ cmVwcm9jZXNzaW5nIEZvcnRyYW4gNzcKQGNpbmRleCBGb3J0cmFuIDc3LCBQcmVwcm9jZXNzaW5n CkBjaW5kZXggUmF0Zm9yIHByb2dyYW1zCgpAZmlsZXtOLmZ9IGlzIG1hZGUgYXV0b21hdGljYWxs eSBmcm9tIEBmaWxle04uRn0gb3IgQGZpbGV7Ti5yfS4gIFRoaXMKcnVsZSBydW5zIGp1c3QgdGhl IHByZXByb2Nlc3NvciB0byBjb252ZXJ0IGEgcHJlcHJvY2Vzc2FibGUgRm9ydHJhbiA3NwpvciBS YXRmb3Igc291cmNlIGZpbGUgaW50byBhIHN0cmljdCBGb3J0cmFuIDc3IHNvdXJjZSBmaWxlLiAg VGhlIHByZWNpc2UKY29tbWFuZCB1c2VkIGlzIGFzIGZvbGxvd3M6CgpAdGFibGUgQGZpbGUKCkBp dGVtIC5GCkBjb2RleyQoRjc3KSAtRiAkKERFRlMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1Mp ICQoQ1BQRkxBR1MpQCoKJChBTV9GRkxBR1MpICQoRkZMQUdTKX0KCkBpdGVtIC5yCkBjb2RleyQo Rjc3KSAtRiAkKEFNX0ZGTEFHUykgJChGRkxBR1MpICQoQU1fUkZMQUdTKSAkKFJGTEFHUyl9CgpA ZW5kIHRhYmxlCgoKQG5vZGUgQ29tcGlsaW5nIEZvcnRyYW4gNzcgRmlsZXMKQGNvbW1lbnQgIG5v ZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCkBzdWJzZWN0aW9uIENvbXBpbGluZyBGb3J0 cmFuIDc3IEZpbGVzCgpAZmlsZXtOLm99IGlzIG1hZGUgYXV0b21hdGljYWxseSBmcm9tIEBmaWxl e04uZn0sIEBmaWxle04uRn0gb3IKQGZpbGV7Ti5yfSBieSBydW5uaW5nIHRoZSBGb3J0cmFuIDc3 IGNvbXBpbGVyLiAgVGhlIHByZWNpc2UgY29tbWFuZCB1c2VkCmlzIGFzIGZvbGxvd3M6CgpAdGFi bGUgQGZpbGUKCkBpdGVtIC5mCkBjb2RleyQoRjc3KSAtYyAkKEFNX0ZGTEFHUykgJChGRkxBR1Mp fQoKQGl0ZW0gLkYKQGNvZGV7JChGNzcpIC1jICQoREVGUykgJChJTkNMVURFUykgJChBTV9DUFBG TEFHUykgJChDUFBGTEFHUylAKgokKEFNX0ZGTEFHUykgJChGRkxBR1MpfQoKQGl0ZW0gLnIKQGNv ZGV7JChGNzcpIC1jICQoQU1fRkZMQUdTKSAkKEZGTEFHUykgJChBTV9SRkxBR1MpICQoUkZMQUdT KX0KCkBlbmQgdGFibGUKCgpAbm9kZSBNaXhpbmcgRm9ydHJhbiA3NyBXaXRoIEMgYW5kIEMrKwpA Y29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKQHN1YnNlY3Rpb24gTWl4 aW5nIEZvcnRyYW4gNzcgV2l0aCBDIGFuZCBDKysKCkBjaW5kZXggRm9ydHJhbiA3NywgbWl4aW5n IHdpdGggQyBhbmQgQysrCkBjaW5kZXggTWl4aW5nIEZvcnRyYW4gNzcgd2l0aCBDIGFuZCBDKysK QGNpbmRleCBMaW5raW5nIEZvcnRyYW4gNzcgd2l0aCBDIGFuZCBDKysKQGNpbmRleCBjZm9ydHJh bgpAY2luZGV4IE1peGluZyBGb3J0cmFuIDc3IHdpdGggQyBhbmQvb3IgQysrCgpBdXRvbWFrZSBj dXJyZW50bHkgcHJvdmlkZXMgQGVtcGh7bGltaXRlZH0gc3VwcG9ydCBmb3IgY3JlYXRpbmcgcHJv Z3JhbXMKYW5kIHNoYXJlZCBsaWJyYXJpZXMgdGhhdCBhcmUgYSBtaXh0dXJlIG9mIEZvcnRyYW4g NzcgYW5kIEMgYW5kL29yIEMrKy4KSG93ZXZlciwgdGhlcmUgYXJlIG1hbnkgb3RoZXIgaXNzdWVz IHJlbGF0ZWQgdG8gbWl4aW5nIEZvcnRyYW4gNzcgd2l0aApvdGhlciBsYW5ndWFnZXMgdGhhdCBh cmUgQGVtcGh7bm90fSAoY3VycmVudGx5KSBoYW5kbGVkIGJ5IEF1dG9tYWtlLCBidXQKdGhhdCBh cmUgaGFuZGxlZCBieSBvdGhlciBwYWNrYWdlc0Bmb290bm90ZXtGb3IgZXhhbXBsZSwKQHVyZWZ7 aHR0cHM6Ly93d3ctemV1cy5kZXN5LmRlL35idXJvdy9jZm9ydHJhbi8sIHRoZSBjZm9ydHJhbiBw YWNrYWdlfQphZGRyZXNzZXMgYWxsIG9mIHRoZXNlIGludGVyLWxhbmd1YWdlIGlzc3VlcywgYW5k IHJ1bnMgdW5kZXIgbmVhcmx5IGFsbApGb3J0cmFuIDc3LCBDIGFuZCBDKysgY29tcGlsZXJzIG9u IG5lYXJseSBhbGwgcGxhdGZvcm1zLiAgSG93ZXZlciwKQGNvbW1hbmR7Y2ZvcnRyYW59IGlzIG5v dCB5ZXQgRnJlZSBTb2Z0d2FyZSwgYnV0IGl0IHdpbGwgYmUgaW4gdGhlIG5leHQKbWFqb3IgcmVs ZWFzZS59LgoKQXV0b21ha2UgY2FuIGhlbHAgaW4gdHdvIHdheXM6CgpAZW51bWVyYXRlCkBpdGVt CkF1dG9tYXRpYyBzZWxlY3Rpb24gb2YgdGhlIGxpbmtlciBkZXBlbmRpbmcgb24gd2hpY2ggY29t YmluYXRpb25zIG9mCnNvdXJjZSBjb2RlLgoKQGl0ZW0KQXV0b21hdGljIHNlbGVjdGlvbiBvZiB0 aGUgYXBwcm9wcmlhdGUgbGlua2VyIGZsYWdzIChlLmcuLCBAb3B0aW9uey1MfSBhbmQKQG9wdGlv bnstbH0pIHRvIHBhc3MgdG8gdGhlIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgbGlua2VyIGluIG9y ZGVyIHRvIGxpbmsKaW4gdGhlIGFwcHJvcHJpYXRlIEZvcnRyYW4gNzcgaW50cmluc2ljIGFuZCBy dW4tdGltZSBsaWJyYXJpZXMuCgpAY2luZGV4IEBjb2Rle0ZMSUJTfSwgZGVmaW5lZApAdmluZGV4 IEZMSUJTClRoZXNlIGV4dHJhIEZvcnRyYW4gNzcgbGlua2VyIGZsYWdzIGFyZSBzdXBwbGllZCBp biB0aGUgb3V0cHV0IHZhcmlhYmxlCkBjb2Rle0ZMSUJTfSBieSB0aGUgQGNvZGV7QUNfRjc3X0xJ QlJBUllfTERGTEFHU30gQXV0b2NvbmYgbWFjcm8uCkB4cmVme0ZvcnRyYW4gQ29tcGlsZXIsICwg Rm9ydHJhbiBDb21waWxlciBDaGFyYWN0ZXJpc3RpY3MsIGF1dG9jb25mLApUaGUgQXV0b2NvbmYg TWFudWFsfS4KQGVuZCBlbnVtZXJhdGUKCklmIEF1dG9tYWtlIGRldGVjdHMgdGhhdCBhIHByb2dy YW0gb3Igc2hhcmVkIGxpYnJhcnkgKGFzIG1lbnRpb25lZCBpbgpzb21lIEBjb2Rle19QUk9HUkFN U30gb3IgQGNvZGV7X0xUTElCUkFSSUVTfSBwcmltYXJ5KSBjb250YWlucyBzb3VyY2UKY29kZSB0 aGF0IGlzIGEgbWl4dHVyZSBvZiBGb3J0cmFuIDc3IGFuZCBDIGFuZC9vciBDKyssIHRoZW4gaXQg cmVxdWlyZXMKdGhhdCB0aGUgbWFjcm8gQGNvZGV7QUNfRjc3X0xJQlJBUllfTERGTEFHU30gYmUg Y2FsbGVkIGluCkBmaWxle2NvbmZpZ3VyZS5hY30sIGFuZCB0aGF0IGVpdGhlciBAY29kZXskKEZM SUJTKX0KYXBwZWFyIGluIHRoZSBhcHByb3ByaWF0ZSBAY29kZXtfTERBRER9IChmb3IgcHJvZ3Jh bXMpIG9yIEBjb2Rle19MSUJBRER9Cihmb3Igc2hhcmVkIGxpYnJhcmllcykgdmFyaWFibGVzLiAg SXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZQpwZXJzb24gd3JpdGluZyB0aGUgQGZpbGV7 TWFrZWZpbGUuYW19IHRvIG1ha2Ugc3VyZSB0aGF0IEBzYW1weyQoRkxJQlMpfQphcHBlYXJzIGlu IHRoZSBhcHByb3ByaWF0ZSBAY29kZXtfTERBRER9IG9yCkBjb2Rle19MSUJBRER9IHZhcmlhYmxl LgoKQGNpbmRleCBNaXhlZCBsYW5ndWFnZSBleGFtcGxlCkBjaW5kZXggRXhhbXBsZSwgbWl4ZWQg bGFuZ3VhZ2UKCkZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIEBmaWxle01ha2Vm aWxlLmFtfToKCkBleGFtcGxlCmJpbl9QUk9HUkFNUyA9IGZvbwpmb29fU09VUkNFUyAgPSBtYWlu LmNjIGZvby5mCmZvb19MREFERCAgICA9IGxpYmZvby5sYSAkKEZMSUJTKQoKcGtnbGliX0xUTElC UkFSSUVTID0gbGliZm9vLmxhCmxpYmZvb19sYV9TT1VSQ0VTICA9IGJhci5mIGJhei5jIHphcmRv ei5jYwpsaWJmb29fbGFfTElCQUREICAgPSAkKEZMSUJTKQpAZW5kIGV4YW1wbGUKCkluIHRoaXMg Y2FzZSwgQXV0b21ha2Ugd2lsbCBpbnNpc3QgdGhhdCBAY29kZXtBQ19GNzdfTElCUkFSWV9MREZM QUdTfQppcyBtZW50aW9uZWQgaW4gQGZpbGV7Y29uZmlndXJlLmFjfS4gIEFsc28sIGlmIEBzYW1w eyQoRkxJQlMpfSBoYWRuJ3QKYmVlbiBtZW50aW9uZWQgaW4gQGNvZGV7Zm9vX0xEQUREfSBhbmQg QGNvZGV7bGliZm9vX2xhX0xJQkFERH0sIHRoZW4KQXV0b21ha2Ugd291bGQgaGF2ZSBpc3N1ZWQg YSB3YXJuaW5nLgoKQG1lbnUKKiBIb3cgdGhlIExpbmtlciBpcyBDaG9zZW46OiAgICBBdXRvbWF0 aWMgbGlua2VyIHNlbGVjdGlvbgpAZW5kIG1lbnUKCkBub2RlIEhvdyB0aGUgTGlua2VyIGlzIENo b3NlbgpAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKQHN1YnN1YnNl Y3Rpb24gSG93IHRoZSBMaW5rZXIgaXMgQ2hvc2VuCgpAY2luZGV4IEF1dG9tYXRpYyBsaW5rZXIg c2VsZWN0aW9uCkBjaW5kZXggU2VsZWN0aW5nIHRoZSBsaW5rZXIgYXV0b21hdGljYWxseQoKV2hl biBhIHByb2dyYW0gb3IgbGlicmFyeSBtaXhlcyBzZXZlcmFsIGxhbmd1YWdlcywgQXV0b21ha2Ug Y2hvb3NlcyB0aGUKbGlua2VyIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHByaW9yaXRpZXMu ICAoVGhlIG5hbWVzIGluCnBhcmVudGhlc2VzIGFyZSB0aGUgdmFyaWFibGVzIGNvbnRhaW5pbmcg dGhlIGxpbmsgY29tbWFuZC4pCgpAZW51bWVyYXRlCkBpdGVtCkB2aW5kZXggR0NKTElOSwpOYXRp dmUgSmF2YSAoQGNvZGV7R0NKTElOS30pCkBpdGVtCkB2aW5kZXggT0JKQ1hYTElOSwpPYmplY3Rp dmUgQysrIChAY29kZXtPQkpDWFhMSU5LfSkKQGl0ZW0KQHZpbmRleCBDWFhMSU5LCkMrKyAoQGNv ZGV7Q1hYTElOS30pCkBpdGVtCkB2aW5kZXggRjc3TElOSwpGb3J0cmFuIDc3IChAY29kZXtGNzdM SU5LfSkKQGl0ZW0KQHZpbmRleCBGQ0xJTksKRm9ydHJhbiAoQGNvZGV7RkNMSU5LfSkKQGl0ZW0K QHZpbmRleCBPQkpDTElOSwpPYmplY3RpdmUgQyAoQGNvZGV7T0JKQ0xJTkt9KQpAaXRlbQpAdmlu ZGV4IFVQQ0xJTksKVW5pZmllZCBQYXJhbGxlbCBDIChAY29kZXtVUENMSU5LfSkKQGl0ZW0KQHZp bmRleCBMSU5LCkMgKEBjb2Rle0xJTkt9KQpAZW5kIGVudW1lcmF0ZQoKRm9yIGV4YW1wbGUsIGlm IEZvcnRyYW4gNzcsIEMgYW5kIEMrKyBzb3VyY2UgY29kZSBpcyBjb21waWxlZAppbnRvIGEgcHJv Z3JhbSwgdGhlbiB0aGUgQysrIGxpbmtlciB3aWxsIGJlIHVzZWQuICBJbiB0aGlzIGNhc2UsIGlm IHRoZQpDIG9yIEZvcnRyYW4gNzcgbGlua2VycyByZXF1aXJlZCBhbnkgc3BlY2lhbCBsaWJyYXJp ZXMgdGhhdCB3ZXJlbid0CmluY2x1ZGVkIGJ5IHRoZSBDKysgbGlua2VyLCB0aGVuIHRoZXkgbXVz dCBiZSBtYW51YWxseSBhZGRlZCB0byBhbgpAY29kZXtfTERBRER9IG9yIEBjb2Rle19MSUJBRER9 IHZhcmlhYmxlIGJ5IHRoZSB1c2VyIHdyaXRpbmcgdGhlCkBmaWxle01ha2VmaWxlLmFtfS4KCkF1 dG9tYWtlIG9ubHkgbG9va3MgYXQgdGhlIGZpbGUgbmFtZXMgbGlzdGVkIGluIEBmaWxle19TT1VS Q0VTfQp2YXJpYWJsZXMgdG8gY2hvb3NlIHRoZSBsaW5rZXIsIGFuZCBkZWZhdWx0cyB0byB0aGUg QyBsaW5rZXIuClNvbWV0aW1lcyB0aGlzIGlzIGluY29udmVuaWVudCBiZWNhdXNlIHlvdSBhcmUg bGlua2luZyBhZ2FpbnN0IGEKbGlicmFyeSB3cml0dGVuIGluIGFub3RoZXIgbGFuZ3VhZ2UgYW5k IHdvdWxkIGxpa2UgdG8gc2V0IHRoZSBsaW5rZXIKbW9yZSBhcHByb3ByaWF0ZWx5LiAgQHhyZWZ7 TGlidG9vbCBDb252ZW5pZW5jZSBMaWJyYXJpZXN9LCBmb3IgYQp0cmljayB3aXRoIEBjb2Rle25v ZGlzdF9FWFRSQV9AZG90c3t9X1NPVVJDRVN9LgoKQSBwZXItdGFyZ2V0IEBjb2Rle19MSU5LfSB2 YXJpYWJsZSB3aWxsIG92ZXJyaWRlIHRoZSBhYm92ZSBzZWxlY3Rpb24uClBlci10YXJnZXQgbGlu ayBmbGFncyB3aWxsIGNhdXNlIEF1dG9tYWtlIHRvIHdyaXRlIGEgcGVyLXRhcmdldApAY29kZXtf TElOS30gdmFyaWFibGUgYWNjb3JkaW5nIHRvIHRoZSBsYW5ndWFnZSBjaG9zZW4gYXMgYWJvdmUu CgoKQG5vZGUgRm9ydHJhbiA5eCBTdXBwb3J0CkBjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAg cHJldmlvdXMsICB1cApAc2VjdGlvbiBGb3J0cmFuIDl4IFN1cHBvcnQKCkBjaW5kZXggRm9ydHJh biA5eCBzdXBwb3J0CkBjaW5kZXggU3VwcG9ydCBmb3IgRm9ydHJhbiA5eAoKQXV0b21ha2UgaW5j bHVkZXMgc3VwcG9ydCBmb3IgRm9ydHJhbiA5eC4KCkFueSBwYWNrYWdlIGluY2x1ZGluZyBGb3J0 cmFuIDl4IGNvZGUgbXVzdCBkZWZpbmUgdGhlIG91dHB1dCB2YXJpYWJsZQpAY29kZXtGQ30gaW4g QGZpbGV7Y29uZmlndXJlLmFjfTsgdGhlIHNpbXBsZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIHVz ZQp0aGUgQGNvZGV7QUNfUFJPR19GQ30gbWFjcm8gKEBweHJlZntQYXJ0aWN1bGFyIFByb2dyYW1z LCAsIFBhcnRpY3VsYXIKUHJvZ3JhbSBDaGVja3MsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFu dWFsfSkuCgpBIGZldyBhZGRpdGlvbmFsIHZhcmlhYmxlcyBhcmUgZGVmaW5lZCB3aGVuIGEgRm9y dHJhbiA5eCBzb3VyY2UgZmlsZSBpcwpzZWVuOgoKQHZ0YWJsZSBAY29kZQoKQGl0ZW0gRkMKVGhl IG5hbWUgb2YgdGhlIEZvcnRyYW4gOXggY29tcGlsZXIuCgpAaXRlbSBGQ0ZMQUdTCkFueSBmbGFn cyB0byBwYXNzIHRvIHRoZSBGb3J0cmFuIDl4IGNvbXBpbGVyLgoKQGl0ZW0gQU1fRkNGTEFHUwpU aGUgbWFpbnRhaW5lcidzIHZhcmlhbnQgb2YgQGNvZGV7RkNGTEFHU30uCgpAaXRlbSBGQ0NPTVBJ TEUKVGhlIGNvbW1hbmQgdXNlZCB0byBjb21waWxlIGEgRm9ydHJhbiA5eCBzb3VyY2UgZmlsZS4g IFRoZSBmaWxlIG5hbWUKaXMgYXBwZW5kZWQgdG8gZm9ybSB0aGUgY29tcGxldGUgY29tbWFuZCBs aW5lLgoKQGl0ZW0gRkNMSU5LClRoZSBjb21tYW5kIHVzZWQgdG8gbGluayBhIHB1cmUgRm9ydHJh biA5eCBwcm9ncmFtIG9yIHNoYXJlZCBsaWJyYXJ5LgpAZW5kIHZ0YWJsZQoKQG1lbnUKKiBDb21w aWxpbmcgRm9ydHJhbiA5eCBGaWxlczo6ICBDb21waWxpbmcgRm9ydHJhbiA5eCBzb3VyY2VzCkBl bmQgbWVudQoKQG5vZGUgQ29tcGlsaW5nIEZvcnRyYW4gOXggRmlsZXMKQGNvbW1lbnQgIG5vZGUt bmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCkBzdWJzZWN0aW9uIENvbXBpbGluZyBGb3J0cmFu IDl4IEZpbGVzCgpAZmlsZXtAdmFye2ZpbGV9Lm99IGlzIG1hZGUgYXV0b21hdGljYWxseSBmcm9t IEBmaWxle0B2YXJ7ZmlsZX0uZjkwfSwKQGZpbGV7QHZhcntmaWxlfS5mOTV9LCBAZmlsZXtAdmFy e2ZpbGV9LmYwM30sIG9yIEBmaWxle0B2YXJ7ZmlsZX0uZjA4fQpieSBydW5uaW5nIHRoZSBGb3J0 cmFuIDl4IGNvbXBpbGVyLiAgVGhlIHByZWNpc2UgY29tbWFuZCB1c2VkCmlzIGFzIGZvbGxvd3M6 CgpAdGFibGUgQGZpbGUKCkBpdGVtIC5mOTAKQGNvZGV7JChGQykgJChBTV9GQ0ZMQUdTKSAkKEZD RkxBR1MpIC1jICQoRkNGTEFHU19mOTApICQ8fQoKQGl0ZW0gLmY5NQpAY29kZXskKEZDKSAkKEFN X0ZDRkxBR1MpICQoRkNGTEFHUykgLWMgJChGQ0ZMQUdTX2Y5NSkgJDx9CgpAaXRlbSAuZjAzCkBj b2RleyQoRkMpICQoQU1fRkNGTEFHUykgJChGQ0ZMQUdTKSAtYyAkKEZDRkxBR1NfZjAzKSAkPH0K CkBpdGVtIC5mMDgKQGNvZGV7JChGQykgJChBTV9GQ0ZMQUdTKSAkKEZDRkxBR1MpIC1jICQoRkNG TEFHU19mMDgpICQ8fQoKQGVuZCB0YWJsZQoKQG5vZGUgSmF2YSBTdXBwb3J0IHdpdGggZ2NqCkBj b21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cApAc2VjdGlvbiBDb21waWxp bmcgSmF2YSBzb3VyY2VzIHVzaW5nIGdjagoKQGNpbmRleCBKYXZhIHN1cHBvcnQgd2l0aCBnY2oK QGNpbmRleCBTdXBwb3J0IGZvciBKYXZhIHdpdGggZ2NqCkBjaW5kZXggSmF2YSB0byBuYXRpdmUg Y29kZSwgY29tcGlsYXRpb24KQGNpbmRleCBDb21waWxhdGlvbiBvZiBKYXZhIHRvIG5hdGl2ZSBj b2RlCgpBdXRvbWFrZSBpbmNsdWRlcyBzdXBwb3J0IGZvciBuYXRpdmVseSBjb21waWxlZCBKYXZh LCB1c2luZyBAY29tbWFuZHtnY2p9LAp0aGUgSmF2YSBmcm9udCBlbmQgdG8gdGhlIEdOVSBDb21w aWxlciBDb2xsZWN0aW9uIChydWRpbWVudGFyeSBzdXBwb3J0CmZvciBjb21waWxpbmcgSmF2YSB0 byBieXRlY29kZSB1c2luZyB0aGUgQGNvbW1hbmR7amF2YWN9IGNvbXBpbGVyIGlzCmFsc28gcHJl c2VudCwgQGVtcGh7YWxiZWl0IGRlcHJlY2F0ZWR9OyBAcHhyZWZ7SmF2YX0pLgoKQW55IHBhY2th Z2UgaW5jbHVkaW5nIEphdmEgY29kZSB0byBiZSBjb21waWxlZCBtdXN0IGRlZmluZSB0aGUgb3V0 cHV0CnZhcmlhYmxlIEBjb2Rle0dDSn0gaW4gQGZpbGV7Y29uZmlndXJlLmFjfTsgdGhlIHZhcmlh YmxlIEBjb2Rle0dDSkZMQUdTfQptdXN0IGFsc28gYmUgZGVmaW5lZCBzb21laG93IChlaXRoZXIg aW4gQGZpbGV7Y29uZmlndXJlLmFjfSBvcgpAZmlsZXtNYWtlZmlsZS5hbX0pLiAgVGhlIHNpbXBs ZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIHVzZSB0aGUKQGNvZGV7QU1fUFJPR19HQ0p9IG1hY3Jv LgoKQHZpbmRleCBHQ0pGTEFHUwoKQnkgZGVmYXVsdCwgcHJvZ3JhbXMgaW5jbHVkaW5nIEphdmEg c291cmNlIGZpbGVzIGFyZSBsaW5rZWQgd2l0aApAY29tbWFuZHtnY2p9LgoKQXMgYWx3YXlzLCB0 aGUgY29udGVudHMgb2YgQGNvZGV7QU1fR0NKRkxBR1N9IGFyZSBwYXNzZWQgdG8gZXZlcnkKY29t cGlsYXRpb24gaW52b2tpbmcgQGNvbW1hbmR7Z2NqfSAoaW4gaXRzIHJvbGUgYXMgYW4gYWhlYWQt b2YtdGltZQpjb21waWxlciwgd2hlbiBpbnZva2luZyBpdCB0byBjcmVhdGUgQGZpbGV7LmNsYXNz fSBmaWxlcywKQGNvZGV7QU1fSkFWQUNGTEFHU30gaXMgdXNlZCBpbnN0ZWFkKS4gIElmIGl0IGlz IG5lY2Vzc2FyeSB0byBwYXNzCm9wdGlvbnMgdG8gQGNvbW1hbmR7Z2NqfSBmcm9tIEBmaWxle01h a2VmaWxlLmFtfSwgdGhpcyB2YXJpYWJsZSwgYW5kIG5vdAp0aGUgdXNlciB2YXJpYWJsZSBAY29k ZXtHQ0pGTEFHU30sIHNob3VsZCBiZSB1c2VkLgoKQHZpbmRleCBBTV9HQ0pGTEFHUwoKQGNvbW1h bmR7Z2NqfSBjYW4gYmUgdXNlZCB0byBjb21waWxlIEBmaWxley5qYXZhfSwgQGZpbGV7LmNsYXNz fSwKQGZpbGV7LnppcH0sIG9yIEBmaWxley5qYXJ9IGZpbGVzLgoKV2hlbiBsaW5raW5nLCBAY29t bWFuZHtnY2p9IHJlcXVpcmVzIHRoYXQgdGhlIG1haW4gY2xhc3MgYmUgc3BlY2lmaWVkCnVzaW5n IHRoZSBAb3B0aW9uey0tbWFpbj19IG9wdGlvbi4gIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGlz IGlzIHRvIHVzZQp0aGUgQGNvZGV7X0xERkxBR1N9IHZhcmlhYmxlIGZvciB0aGUgcHJvZ3JhbS4K CgpAbm9kZSBWYWxhIFN1cHBvcnQKQHNlY3Rpb24gVmFsYSBTdXBwb3J0CgpAY2luZGV4IFZhbGEg c3VwcG9ydApAY2luZGV4IFN1cHBvcnQgZm9yIFZhbGEKQGNpbmRleCBHTlUgTWFrZSwgcmVxdWly ZWQgYnkgVmFsYQoKQXV0b21ha2Ugc3VwcG9ydHMgVmFsYSAoQHVyZWZ7aHR0cHM6Ly92YWxhLmRl di99KS4KVmFsYSBzdXBwb3J0IHJlcXVpcmVzIHRoZSB1c2VyIHRvIHVzZSBHTlUgQGNvbW1hbmR7 bWFrZX0uCgpAZXhhbXBsZQpmb29fU09VUkNFUyA9IGZvby52YWxhIGJhci52YWxhIHphcmRvei5j CkBlbmQgZXhhbXBsZQoKQW55IEBmaWxley52YWxhfSBmaWxlIGxpc3RlZCBpbiBhIEBjb2Rle19T T1VSQ0VTfSB2YXJpYWJsZSB3aWxsIGJlCmNvbXBpbGVkIGludG8gQyBjb2RlIGJ5IHRoZSBWYWxh IGNvbXBpbGVyLiAgVGhlIGdlbmVyYXRlZCBAZmlsZXsuY30KZmlsZXMgYXJlIGRpc3RyaWJ1dGVk LiBUaGUgZW5kIHVzZXIgZG9lcyBub3QgbmVlZCB0byBoYXZlIGEgVmFsYQpjb21waWxlciBpbnN0 YWxsZWQuCgpCZWNhdXNlIGFsbCBDIGZpbGVzIG11c3QgYmUgZ2VuZXJhdGVkLCBhbmQgdGhlIFZh bGEgY29tcGlsZXIgY29tcGlsZXMKYWxsIHRoZSBAZmlsZXsudmFsYX0gZmlsZXMgZm9yIGEgdGFy Z2V0IGF0IG9uY2UsIGl0IGlzIG5vdCBwb3NzaWJsZSB0bwphZGQgZmlsZXMgdG8gYSBAY29kZXtf U09VUkNFU30gdmFyaWFibGUgdGhhdCBjYW5ub3QgYmUgY29tcGlsZWQKdG9nZXRoZXI7IGZvciBl eGFtcGxlLCBhbHRlcm5hdGl2ZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZWZpbml0aW9ucyBvZgp0aGUg c2FtZSBtZXRob2RzLgoKQXV0b21ha2Ugc2hpcHMgd2l0aCBhbiBBdXRvY29uZiBtYWNybyBjYWxs ZWQgQGNvZGV7QU1fUFJPR19WQUxBQ30KdGhhdCB3aWxsIGxvY2F0ZSB0aGUgVmFsYSBjb21waWxl ciBhbmQgb3B0aW9uYWxseSBjaGVjayBpdHMgdmVyc2lvbgpudW1iZXIuCgpAZGVmbWFjIEFNX1BS T0dfVkFMQUMgKEBvdmFye21pbmltdW0tdmVyc2lvbn0sIEBvdmFye2FjdGlvbi1pZi1mb3VuZH0s CiAgQG92YXJ7YWN0aW9uLWlmLW5vdC1mb3VuZH0pClNlYXJjaCBmb3IgYSBWYWxhIGNvbXBpbGVy IGluIEBlbnZ7UEFUSH0uICBJZiBpdCBpcyBmb3VuZCwgdGhlIHZhcmlhYmxlCkBjb2Rle1ZBTEFD fSBpcyBzZXQgdG8gcG9pbnQgdG8gaXQgKHNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzKS4gIFRo aXMKbWFjcm8gdGFrZXMgdGhyZWUgb3B0aW9uYWwgYXJndW1lbnRzLiAgVGhlIGZpcnN0IGFyZ3Vt ZW50LCBpZiBwcmVzZW50LAppcyB0aGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBWYWxhIEFQSSBy ZXF1aXJlZCB0byBjb21waWxlIHRoaXMgcGFja2FnZS4KRm9yIFZhbGEgcmVsZWFzZXMsIHRoaXMg aXMgdGhlIHNhbWUgYXMgdGhlIG1ham9yIGFuZCBtaW5vciByZWxlYXNlCm51bWJlcjsgZS5nLiwg d2hlbiBAY29kZXt2YWxhYyAtLXZlcnNpb259IHJlcG9ydHMgQGNvZGV7MC40OC43fSwKQGNvZGV7 dmFsYWMgLS1hcGktdmVyc2lvbn0gcmVwb3J0cyBAY29kZXswLjQ4fS4gIElmIGEgY29tcGlsZXIg aXMgZm91bmQKYW5kIHNhdGlzZmllcyBAdmFye21pbmltdW0tdmVyc2lvbn0sIHRoZW4gQHZhcnth Y3Rpb24taWYtZm91bmR9IGlzIHJ1bgoodGhpcyBkZWZhdWx0cyB0byBkbyBub3RoaW5nKS4gIE90 aGVyd2lzZSwgQHZhcnthY3Rpb24taWYtbm90LWZvdW5kfSBpcwpydW4uICBJZiBAdmFye2FjdGlv bi1pZi1ub3QtZm91bmR9IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlCmlzIHRv IHByaW50IGEgd2FybmluZyBpbiBjYXNlIG5vIGNvbXBpbGVyIGlzIGZvdW5kLCBvciBpZiBhIHRv by1vbGQKdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgaXMgZm91bmQuCkBlbmQgZGVmbWFjCgpUaGVy ZSBhcmUgYSBmZXcgdmFyaWFibGVzIHRoYXQgYXJlIHVzZWQgd2hlbiBjb21waWxpbmcgVmFsYSBz b3VyY2VzOgoKQHZ0YWJsZSBAY29kZQpAaXRlbSBWQUxBQwpBYnNvbHV0ZSBwYXRoIHRvIHRoZSBW YWxhIGNvbXBpbGVyLCBvciBzaW1wbHkgQHNhbXB7dmFsYWN9IGlmIG5vCnN1aXRhYmxlIFZhbGEg Y29tcGlsZXIgY291bGQgYmUgZm91bmQgYXQgY29uZmlndXJlIHJ1bnRpbWUuCgpAaXRlbSBWQUxB RkxBR1MKQWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIHRoZSBWYWxhIGNvbXBpbGVyLgoKQGl0ZW0g QU1fVkFMQUZMQUdTClRoZSBtYWludGFpbmVyJ3MgdmFyaWFudCBvZiBAY29kZXtWQUxBRkxBR1N9 LgoKQGV4YW1wbGUKbGliX0xUTElCUkFSSUVTID0gbGliZm9vLmxhCmxpYmZvb19sYV9TT1VSQ0VT ID0gZm9vLnZhbGEKQGVuZCBleGFtcGxlCkBlbmQgdnRhYmxlCgpOb3RlIHRoYXQgY3VycmVudGx5 LCB5b3UgY2Fubm90IHVzZSBwZXItdGFyZ2V0IEBjb2RleypfVkFMQUZMQUdTfQooQHB4cmVme1Jl bmFtZWQgT2JqZWN0c30pIHRvIHByb2R1Y2UgZGlmZmVyZW50IEMgZmlsZXMgZnJvbSBvbmUgVmFs YQpzb3VyY2UgZmlsZS4KCkBub2RlIEFsZ29sIDY4IFN1cHBvcnQKQHNlY3Rpb24gQWxnb2wgNjgg U3VwcG9ydAoKQGNpbmRleCBBbGdvbCA2OCBzdXBwb3J0CkBjaW5kZXggU3VwcG9ydCBmb3IgQWxn b2wgNjgKCkF1dG9tYWtlIGluY2x1ZGVzIHN1cHBvcnQgZm9yIEFsZ29sIDY4LCB1c2luZyBHQ0Mu CgpBbnkgcGFja2FnZSBpbmNsdWRpbmcgQWxnb2wgNjggY29kZSBtdXN0IGRlZmluZSB0aGUgb3V0 cHV0IHZhcmlhYmxlCkBjb2Rle0E2OH0gaW4gQGZpbGV7Y29uZmlndXJlLmFjfTsgdGhlIHNpbXBs ZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIHVzZQp0aGUgQGNvZGV7QUNfUFJPR19BNjh9IG1hY3Jv IChAcHhyZWZ7UGFydGljdWxhciBQcm9ncmFtcywgLCBQYXJ0aWN1bGFyClByb2dyYW0gQ2hlY2tz LCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0pLgoKQSBmZXcgYWRkaXRpb25hbCB2YXJp YWJsZXMgYXJlIGRlZmluZWQgd2hlbiBhbiBBbGdvbCA2OCBzb3VyY2UgZmlsZSBpcwpzZWVuOgoK QHZ0YWJsZSBAY29kZQpAaXRlbSBBNjgKVGhlIG5hbWUgb2YgdGhlIEFsZ29sIDY4IGNvbXBpbGVy LgoKQGl0ZW0gQTY4RkxBR1MKQW55IGZsYWdzIHRvIHBhc3MgdG8gdGhlIEFsZ29sIDY4IGNvbXBp bGVyLgoKQGl0ZW0gQU1fQTY4RkxBR1MKVGhlIG1haW50YWluZXIncyB2YXJpYW50IG9mIEBjb2Rl e0E2OEZMQUdTfS4KCkBpdGVtIEE2OENPTVBJTEUKVGhlIGNvbW1hbmQgdXNlZCB0byBjb21waWxl IGFuIEFsZ29sIDY4IHNvdXJjZSBmaWxlLiAgVGhlIGZpbGUgbmFtZSBpcwphcHBlbmRlZCB0byBm b3JtIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUuCgpAaXRlbSBBNjhMSU5LClRoZSBjb21tYW5k IHVzZWQgdG8gbGluayBhIHB1cmUgQWxnb2wgNjggcHJvZ3JhbSBvciBzaGFyZWQgbGlicmFyeS4K CkBlbmQgdnRhYmxlCgpAbm9kZSBTdXBwb3J0IGZvciBPdGhlciBMYW5ndWFnZXMKQGNvbW1lbnQg IG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCkBzZWN0aW9uIFN1cHBvcnQgZm9yIE90 aGVyIExhbmd1YWdlcwoKQXV0b21ha2UgY3VycmVudGx5IG9ubHkgaW5jbHVkZXMgZnVsbCBzdXBw b3J0IGZvciBDLCBDKysgKEBweHJlZntDKysKU3VwcG9ydH0pLCBPYmplY3RpdmUgQyAoQHB4cmVm e09iamVjdGl2ZSBDIFN1cHBvcnR9KSwKT2JqZWN0aXZlIEMrKyAoQHB4cmVme09iamVjdGl2ZSBD KysgU3VwcG9ydH0pLApGb3J0cmFuIDc3CihAcHhyZWZ7Rm9ydHJhbiA3NyBTdXBwb3J0fSksIEZv cnRyYW4gOXggKEBweHJlZntGb3J0cmFuIDl4IFN1cHBvcnR9KSwKYW5kIEphdmEgKEBweHJlZntK YXZhIFN1cHBvcnQgd2l0aCBnY2p9KS4gIFRoZXJlIGlzIG9ubHkgcnVkaW1lbnRhcnkKc3VwcG9y dCBmb3Igb3RoZXIgbGFuZ3VhZ2VzLCBzdXBwb3J0IGZvciB3aGljaCB3aWxsIGJlIGltcHJvdmVk IGJhc2VkCm9uIHVzZXIgZGVtYW5kLgoKU29tZSBsaW1pdGVkIHN1cHBvcnQgZm9yIGFkZGluZyB5 b3VyIG93biBsYW5ndWFnZXMgaXMgYXZhaWxhYmxlIHZpYSB0aGUKc3VmZml4IHJ1bGUgaGFuZGxp bmcgKEBweHJlZntTdWZmaXhlc30pLgoKQG5vZGUgRGVwZW5kZW5jaWVzCkBzZWN0aW9uIEF1dG9t YXRpYyBkZXBlbmRlbmN5IHRyYWNraW5nCgpBcyBhIGRldmVsb3BlciBpdCBpcyBwYWluZnVsIHRv IGNvbnRpbnVhbGx5IHVwZGF0ZSB0aGUKQGZpbGV7TWFrZWZpbGUuYW19IHdoZW5ldmVyIHRoZSBp bmNsdWRlLWZpbGUgZGVwZW5kZW5jaWVzIGNoYW5nZSBpbiBhCnByb2plY3QuICBBdXRvbWFrZSBz dXBwbGllcyBhIHdheSB0byBhdXRvbWF0aWNhbGx5IHRyYWNrIGRlcGVuZGVuY3kKY2hhbmdlcyAo QHB4cmVme0RlcGVuZGVuY3kgVHJhY2tpbmd9KS4KCkBjaW5kZXggRGVwZW5kZW5jeSB0cmFja2lu ZwpAY2luZGV4IEF1dG9tYXRpYyBkZXBlbmRlbmN5IHRyYWNraW5nCgpBdXRvbWFrZSBhbHdheXMg dXNlcyBjb21wbGV0ZSBkZXBlbmRlbmNpZXMgZm9yIGEgY29tcGlsYXRpb24sCmluY2x1ZGluZyBz eXN0ZW0gaGVhZGVycy4gIEF1dG9tYWtlJ3MgbW9kZWwgaXMgdGhhdCBkZXBlbmRlbmN5CmNvbXB1 dGF0aW9uIHNob3VsZCBiZSBhIHNpZGUgZWZmZWN0IG9mIHRoZSBidWlsZC4gIFRvIHRoaXMgZW5k LApkZXBlbmRlbmNpZXMgYXJlIGNvbXB1dGVkIGJ5IHJ1bm5pbmcgYWxsIGNvbXBpbGF0aW9ucyB0 aHJvdWdoIGEKc3BlY2lhbCB3cmFwcGVyIHByb2dyYW0gY2FsbGVkIEBjb21tYW5ke2RlcGNvbXB9 LiAgQGNvbW1hbmR7ZGVwY29tcH0KdW5kZXJzdGFuZHMgaG93IHRvIGNvYXggbWFueSBkaWZmZXJl bnQgQyBhbmQgQysrIGNvbXBpbGVycyBpbnRvCmdlbmVyYXRpbmcgZGVwZW5kZW5jeSBpbmZvcm1h dGlvbiBpbiB0aGUgZm9ybWF0IGl0IHJlcXVpcmVzLgpAc2FtcHthdXRvbWFrZSAtYX0gd2lsbCBp bnN0YWxsIEBjb21tYW5ke2RlcGNvbXB9IGludG8geW91ciBzb3VyY2UKdHJlZSBmb3IgeW91LiAg SWYgQGNvbW1hbmR7ZGVwY29tcH0gY2FuJ3QgZmlndXJlIG91dCBob3cgdG8gcHJvcGVybHkKaW52 b2tlIHlvdXIgY29tcGlsZXIsIGRlcGVuZGVuY3kgdHJhY2tpbmcgd2lsbCBzaW1wbHkgYmUgZGlz YWJsZWQgZm9yCnlvdXIgYnVpbGQuCgpAY2luZGV4IEBjb21tYW5ke2RlcGNvbXB9CgpFeHBlcmll bmNlIHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiBBdXRvbWFrZSAoQHB4cmVme0RlcGVuZGVuY3kg VHJhY2tpbmcKRXZvbHV0aW9uLCAsIERlcGVuZGVuY3kgVHJhY2tpbmcgRXZvbHV0aW9uLCBhdXRv bWFrZS1oaXN0b3J5LCBCcmllZiBIaXN0b3J5Cm9mIEF1dG9tYWtlfSkgdGF1Z2h0IHVzIHRoYXQg aXQgaXMgbm90IHJlbGlhYmxlIHRvIGdlbmVyYXRlIGRlcGVuZGVuY2llcwpvbmx5IG9uIHRoZSBt YWludGFpbmVyJ3Mgc3lzdGVtLCBhcyBjb25maWd1cmF0aW9ucyB2YXJ5IHRvbyBtdWNoLiAgU28K aW5zdGVhZCBBdXRvbWFrZSBpbXBsZW1lbnRzIGRlcGVuZGVuY3kgdHJhY2tpbmcgYXQgYnVpbGQg dGltZS4KClRoaXMgYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcgY2FuIGJlIHN1cHByZXNz ZWQgYnkgcHV0dGluZwpAb3B0aW9ue25vLWRlcGVuZGVuY2llc30gaW4gdGhlIHZhcmlhYmxlIEBj b2Rle0FVVE9NQUtFX09QVElPTlN9LCBvcgpwYXNzaW5nIEBvcHRpb257bm8tZGVwZW5kZW5jaWVz fSBhcyBhbiBhcmd1bWVudCB0byBAY29kZXtBTV9JTklUX0FVVE9NQUtFfQoodGhpcyBzaG91bGQg YmUgdGhlIHByZWZlcnJlZCB3YXkpLiAgT3IsIHlvdSBjYW4gaW52b2tlIEBjb21tYW5ke2F1dG9t YWtlfQp3aXRoIHRoZSBAb3B0aW9uey1pfSBvcHRpb24uICBEZXBlbmRlbmN5IHRyYWNraW5nIGlz IGVuYWJsZWQgYnkgZGVmYXVsdC4KCkB2aW5kZXggQVVUT01BS0VfT1BUSU9OUwpAb3BpbmRleCBu by1kZXBlbmRlbmNpZXMKCkBjaW5kZXggRGlzYWJsaW5nIGRlcGVuZGVuY3kgdHJhY2tpbmcKQGNp bmRleCBEZXBlbmRlbmN5IHRyYWNraW5nLCBkaXNhYmxpbmcKVGhlIHBlcnNvbiBidWlsZGluZyB5 b3VyIHBhY2thZ2UgYWxzbyBjYW4gY2hvb3NlIHRvIGRpc2FibGUgZGVwZW5kZW5jeQp0cmFja2lu ZyBieSBjb25maWd1cmluZyB3aXRoIEBvcHRpb257LS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tp bmd9LgoKQGNpbmRleCBDb25kaXRpb25hbCBmb3IgZGVwZW5kZW5jeSB0cmFja2luZwpJZiwgYXMg dGhlIHBhY2thZ2UgbWFpbnRhaW5lciwgeW91IHdpc2ggdG8gY29uZGl0aW9uYWxpemUgeW91cgpA Y29kZXtNYWtlZmlsZS5hbX0gYWNjb3JkaW5nIHRvIHdoZXRoZXIgZGVwZW5kZW5jeSB0cmFja2lu ZyBpcwplbmFibGVkLCB0aGUgYmVzdCB3YXkgaXMgdG8gZGVmaW5lIHlvdXIgb3duIGNvbmRpdGlv bmFsIGluCkBjb2Rle2NvbmZpZ3VyZS5hY30gYWNjb3JkaW5nIHRvIHRoZSBzaGVsbCB2YXJpYWJs ZQpAY29kZXskZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmd9IChhbGwKQGNvZGV7LS1lbmFibGV9 L0Bjb2Rley0tZGlzYWJsZX0gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFzIHNoZWxsCnZhcmlhYmxl czsgQHB4cmVme1BhY2thZ2UgT3B0aW9ucywgLCAsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFu dWFsfSk6CgpAZXhhbXBsZQpBTV9DT05ESVRJT05BTChbTk9fREVQX1RSQUNLSU5HXSwKICAgICAg ICAgICAgICAgW3Rlc3QgeCIkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciID0geCJubyJdKQpA ZW5kIGV4YW1wbGUKCkFuZCB0aGVuIGluIHlvdXIgQGNvZGV7TWFrZWZpbGUuYW19OgoKQGV4YW1w bGUKaWYgTk9fREVQX1RSQUNLSU5HCiMgc3R1ZmYgdG8gZG8gd2hlbiBkZXBlbmRlbmN5IHRyYWNr aW5nIGlzIGRpc2FibGVkCmVsc2UKIyBzdHVmZiB0byBkbyB3aGVuIGl0J3MgZW5hYmxlZAplbmRp ZgpAZW5kIGV4YW1wbGUKCkF1dG9tYWtlIGRvZXMgbm90IGhhdmUgc3VwcG9ydCBmb3IgZXh0ZW5k aW5nIHRoZSBkZXBlbmRlbmN5IHRyYWNraW5nCmF0IHJ1bnRpbWUsIGUuZy4sIGlmIHlvdSB3YW50 IHRvIGhhdmUgZGVwZW5kZW5jaWVzIGZvciBhIG5ldyBsYW5ndWFnZS4KSG93ZXZlciwgTmljayBC b3dsZXIgc2tldGNoZWQgaG93IHRvIGRvIHRoaXMgaW4gYSBtZXNzYWdlIHRvIHRoZQpAY29kZXth dXRvbWFrZX0gbWFpbGluZyBsaXN0OgpAdXJse2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZl L2h0bWwvYXV0b21ha2UvMjAyNS0wNy9tc2cwMDAxNC5odG1sfS4KQWx0aG91Z2ggdGhpcyBuZWNl c3NhcmlseSB1c2VzIHZhcmlvdXMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZgpBdXRvbWFrZSwg YW5kIHRodXMgY2FuJ3QgYmUgY29uc2lkZXJlZCBmdXR1cmUtcHJvb2YsIHdlIGRvbid0IGhhdmUg YW55CnBsYW5zIG9yIGV4cGVjdGF0aW9ucyBmb3IgY2hhbmdpbmcgdGhlIGRlcGVuZGVuY3kgaW1w bGVtZW50YXRpb24gaW4KYW55IHN1YnN0YW50aXZlIHdheS4KCkBub2RlIEVYRUVYVApAc2VjdGlv biBTdXBwb3J0IGZvciBleGVjdXRhYmxlIGV4dGVuc2lvbnMKCkBjaW5kZXggRXhlY3V0YWJsZSBl eHRlbnNpb24KQGNpbmRleCBFeHRlbnNpb24sIGV4ZWN1dGFibGUKQGNpbmRleCBXaW5kb3dzCgpP biBzb21lIHBsYXRmb3Jtcywgc3VjaCBhcyBXaW5kb3dzLCBleGVjdXRhYmxlcyBhcmUgZXhwZWN0 ZWQgdG8gaGF2ZSBhbgpleHRlbnNpb24gc3VjaCBhcyBAZmlsZXsuZXhlfS4gIE9uIHRoZXNlIHBs YXRmb3Jtcywgc29tZSBjb21waWxlcnMgKEdDQwphbW9uZyB0aGVtKSB3aWxsIGF1dG9tYXRpY2Fs bHkgZ2VuZXJhdGUgQGZpbGV7Zm9vLmV4ZX0gd2hlbiBhc2tlZCB0bwpnZW5lcmF0ZSBAZmlsZXtm b299LgoKQXV0b21ha2UgcHJvdmlkZXMgbW9zdGx5LXRyYW5zcGFyZW50IHN1cHBvcnQgZm9yIHRo aXMuICBVbmZvcnR1bmF0ZWx5CkBlbXBoe21vc3RseX0gZG9lc24ndCB5ZXQgbWVhbiBAZW1waHtm dWxseX0uICBVbnRpbCB0aGUgRW5nbGlzaApkaWN0aW9uYXJ5IGlzIHJldmlzZWQsIHlvdSB3aWxs IGhhdmUgdG8gYXNzaXN0IEF1dG9tYWtlIGlmIHlvdXIgcGFja2FnZQptdXN0IHN1cHBvcnQgdGhv c2UgcGxhdGZvcm1zLgoKT25lIHRoaW5nIHlvdSBtdXN0IGJlIGF3YXJlIG9mIGlzIHRoYXQsIGlu dGVybmFsbHksIEF1dG9tYWtlIHJld3JpdGVzCnNvbWV0aGluZyBsaWtlIHRoaXM6CgpAZXhhbXBs ZQpiaW5fUFJPR1JBTVMgPSBsaXZlcgpAZW5kIGV4YW1wbGUKCkBub2luZGVudAp0byB0aGlzOgoK QGV4YW1wbGUKYmluX1BST0dSQU1TID0gbGl2ZXIkKEVYRUVYVCkKQGVuZCBleGFtcGxlCgpUaGUg dGFyZ2V0cyBBdXRvbWFrZSBnZW5lcmF0ZXMgYXJlIGxpa2V3aXNlIGdpdmVuIHRoZSBAc2FtcHsk KEVYRUVYVCl9CmV4dGVuc2lvbi4KClRoZSB2YXJpYWJsZXMgQGNvZGV7VEVTVFN9IGFuZCBAY29k ZXtYRkFJTF9URVNUU30gKEBweHJlZntTaW1wbGUgVGVzdHN9KQphcmUgYWxzbyByZXdyaXR0ZW4g aWYgdGhleSBjb250YWluIGZpbGVuYW1lcyB0aGF0IGhhdmUgYmVlbiBkZWNsYXJlZCBhcwpwcm9n cmFtcyBpbiB0aGUgc2FtZSBAZmlsZXtNYWtlZmlsZX0uICAoVGhpcyBpcyBtb3N0bHkgdXNlZnVs IHdoZW4gc29tZQpwcm9ncmFtcyBmcm9tIEBjb2Rle2NoZWNrX1BST0dSQU1TfSBhcmUgbGlzdGVk IGluIEBjb2Rle1RFU1RTfS4pCgpIb3dldmVyLCBBdXRvbWFrZSBjYW5ub3QgYXBwbHkgdGhpcyBy ZXdyaXRpbmcgdG8gQGNvbW1hbmR7Y29uZmlndXJlfQpzdWJzdGl0dXRpb25zLiAgVGhpcyBtZWFu cyB0aGF0IGlmIHlvdSBhcmUgY29uZGl0aW9uYWxseSBidWlsZGluZyBhCnByb2dyYW0gdXNpbmcg c3VjaCBhIHN1YnN0aXR1dGlvbiwgdGhlbiB5b3VyIEBmaWxle2NvbmZpZ3VyZS5hY30gbXVzdAp0 YWtlIGNhcmUgdG8gYWRkIEBzYW1weyQoRVhFRVhUKX0gd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIG91 dHB1dCB2YXJpYWJsZS4KClNvbWV0aW1lcyBtYWludGFpbmVycyBsaWtlIHRvIHdyaXRlIGFuIGV4 cGxpY2l0IGxpbmsgcnVsZSBmb3IgdGhlaXIKcHJvZ3JhbS4gIFdpdGhvdXQgZXhlY3V0YWJsZSBl eHRlbnNpb24gc3VwcG9ydCwgeW91IGNhbiBzaW1wbHkgd3JpdGUgYQpydWxlIHdob3NlIHRhcmdl dCBpcyB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbS4gIEhvd2V2ZXIsIHdoZW4KZXhlY3V0YWJsZSBl eHRlbnNpb24gc3VwcG9ydCBpcyBlbmFibGVkLCB5b3UgbXVzdCBpbnN0ZWFkIGFkZCB0aGUKQHNh bXB7JChFWEVFWFQpfSBzdWZmaXguCgpUaGlzIG1pZ2h0IGJlIGEgbnVpc2FuY2UgZm9yIG1haW50 YWluZXJzIHdobyBrbm93IHRoZWlyIHBhY2thZ2Ugd2lsbApuZXZlciBydW4gb24gYSBwbGF0Zm9y bSB0aGF0IGhhcwpleGVjdXRhYmxlIGV4dGVuc2lvbnMuICBGb3IgdGhvc2UgbWFpbnRhaW5lcnMs IHRoZSBAb3B0aW9ue25vLWV4ZWV4dH0Kb3B0aW9uIChAcHhyZWZ7T3B0aW9uc30pIHdpbGwgZGlz YWJsZSB0aGlzIGZlYXR1cmUuICBUaGlzIHdvcmtzIGluIGEKZmFpcmx5IHVnbHkgd2F5OyBpZiBA b3B0aW9ue25vLWV4ZWV4dH0gaXMgc2VlbiwgdGhlbiB0aGUgcHJlc2VuY2Ugb2YgYQpydWxlIGZv ciBhIHRhcmdldCBuYW1lZCBAY29kZXtmb299IGluIEBmaWxle01ha2VmaWxlLmFtfSB3aWxsIG92 ZXJyaWRlCmFuIEBjb21tYW5ke2F1dG9tYWtlfS1nZW5lcmF0ZWQgcnVsZSBmb3IgQHNhbXB7Zm9v JChFWEVFWFQpfS4gIFdpdGhvdXQKdGhlIEBvcHRpb257bm8tZXhlZXh0fSBvcHRpb24sIHRoaXMg dXNlIHdpbGwgZ2l2ZSBhIGRpYWdub3N0aWMuCgoKQG5vZGUgT3RoZXIgT2JqZWN0cwpAY2hhcHRl ciBPdGhlciBEZXJpdmVkIE9iamVjdHMKCkF1dG9tYWtlIGNhbiBoYW5kbGUgZGVyaXZlZCBvYmpl Y3RzIHRoYXQgYXJlIG5vdCBDIHByb2dyYW1zLgpTb21ldGltZXMgdGhlIHN1cHBvcnQgZm9yIGJ1 aWxkaW5nIHN1Y2ggb2JqZWN0cyBtdXN0IGJlIGV4cGxpY2l0bHkKc3VwcGxpZWQsIGJ1dCBBdXRv bWFrZSBjYW4gc3RpbGwgYXV0b21hdGljYWxseSBoYW5kbGUgaW5zdGFsbGF0aW9uIGFuZApkaXN0 cmlidXRpb24uCgpAbWVudQoqIFNjcmlwdHM6OiAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGFi bGUgc2NyaXB0cwoqIEhlYWRlcnM6OiAgICAgICAgICAgICAgICAgICAgIEhlYWRlciBmaWxlcwoq IERhdGE6OiAgICAgICAgICAgICAgICAgICAgICAgIEFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBk YXRhIGZpbGVzCiogU291cmNlczo6ICAgICAgICAgICAgICAgICAgICAgRGVyaXZlZCBzb3VyY2Vz CkBlbmQgbWVudQoKCkBub2RlIFNjcmlwdHMKQHNlY3Rpb24gRXhlY3V0YWJsZSBTY3JpcHRzCgpA Y2luZGV4IEBjb2Rle19TQ1JJUFRTfSBwcmltYXJ5LCBkZWZpbmVkCkBjaW5kZXggQGNvZGV7U0NS SVBUU30gcHJpbWFyeSwgZGVmaW5lZApAY2luZGV4IFByaW1hcnkgdmFyaWFibGUsIEBjb2Rle1ND UklQVFN9CkB2aW5kZXggX1NDUklQVFMKQGNpbmRleCBJbnN0YWxsaW5nIHNjcmlwdHMKCkl0IGlz IHBvc3NpYmxlIHRvIGRlZmluZSBhbmQgaW5zdGFsbCBwcm9ncmFtcyB0aGF0IGFyZSBzY3JpcHRz LiAgU3VjaApwcm9ncmFtcyBhcmUgbGlzdGVkIHVzaW5nIHRoZSBAY29kZXtTQ1JJUFRTfSBwcmlt YXJ5IG5hbWUuICBXaGVuIHRoZQpzY3JpcHQgaXMgZGlzdHJpYnV0ZWQgaW4gaXRzIGZpbmFsLCBp bnN0YWxsYWJsZSBmb3JtLCB0aGUKQGZpbGV7TWFrZWZpbGV9IHVzdWFsbHkgbG9va3MgYXMgZm9s bG93czoKQHZpbmRleCBTQ1JJUFRTCgpAZXhhbXBsZQojIEluc3RhbGwgbXlfc2NyaXB0IGluICQo YmluZGlyKSBhbmQgZGlzdHJpYnV0ZSBpdC4KZGlzdF9iaW5fU0NSSVBUUyA9IG15X3NjcmlwdApA ZW5kIGV4YW1wbGUKClNjcmlwdHMgYXJlIG5vdCBkaXN0cmlidXRlZCBieSBkZWZhdWx0OyBhcyB3 ZSBoYXZlIGp1c3Qgc2VlbiwgdGhvc2UKdGhhdCBzaG91bGQgYmUgZGlzdHJpYnV0ZWQgY2FuIGJl IHNwZWNpZmllZCB1c2luZyBhIEBjb2Rle2Rpc3RffQpwcmVmaXggYXMgd2l0aCBvdGhlciBwcmlt YXJpZXMuCgpAY2luZGV4IEBjb2Rle1NDUklQVFN9LCBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMK QHZpbmRleCBiaW5fU0NSSVBUUwpAdmluZGV4IHNiaW5fU0NSSVBUUwpAdmluZGV4IGxpYmV4ZWNf U0NSSVBUUwpAdmluZGV4IHBrZ2RhdGFfU0NSSVBUUwpAdmluZGV4IHBrZ2xpYmV4ZWNfU0NSSVBU UwpAdmluZGV4IG5vaW5zdF9TQ1JJUFRTCkB2aW5kZXggY2hlY2tfU0NSSVBUUwoKU2NyaXB0cyBj YW4gYmUgaW5zdGFsbGVkIGluIEBjb2Rle2JpbmRpcn0sIEBjb2Rle3NiaW5kaXJ9LApAY29kZXts aWJleGVjZGlyfSwgQGNvZGV7cGtnbGliZXhlY2Rpcn0sIG9yIEBjb2Rle3BrZ2RhdGFkaXJ9LgoK U2NyaXB0cyB0aGF0IG5lZWQgbm90IGJlIGluc3RhbGxlZCBjYW4gYmUgbGlzdGVkIGluCkBjb2Rl e25vaW5zdF9TQ1JJUFRTfSwgYW5kIGFtb25nIHRoZW0sIHRob3NlIHdoaWNoIGFyZSBuZWVkZWQg b25seSBieQpAc2FtcHttYWtlIGNoZWNrfSBzaG91bGQgZ28gaW4gQGNvZGV7Y2hlY2tfU0NSSVBU U30uCgpXaGVuIGEgc2NyaXB0IG5lZWRzIHRvIGJlIGJ1aWx0LCB0aGUgQGZpbGV7TWFrZWZpbGUu YW19IHNob3VsZCBpbmNsdWRlCnRoZSBhcHByb3ByaWF0ZSBydWxlcy4gIEZvciBpbnN0YW5jZSB0 aGUgQGNvbW1hbmR7YXV0b21ha2V9IHByb2dyYW0KaXRzZWxmIGlzIGEgUGVybCBzY3JpcHQgdGhh dCBpcyBnZW5lcmF0ZWQgZnJvbSBAZmlsZXthdXRvbWFrZS5pbn0uCkhlcmUgaXMgaG93IHRoaXMg aXMgaGFuZGxlZDoKCkBleGFtcGxlCmJpbl9TQ1JJUFRTID0gYXV0b21ha2UKQ0xFQU5GSUxFUyA9 ICQoYmluX1NDUklQVFMpCkVYVFJBX0RJU1QgPSBhdXRvbWFrZS5pbgoKZG9fc3Vic3QgPSBzZWQg LWUgJ3MsW0BAXWRhdGFkaXJbQEBdLCQoZGF0YWRpciksZycgXAogICAgICAgICAgICAtZSAncyxb QEBdUEVSTFtAQF0sJChQRVJMKSxnJyBcCiAgICAgICAgICAgIC1lICdzLFtAQF1QQUNLQUdFW0BA XSwkKFBBQ0tBR0UpLGcnIFwKICAgICAgICAgICAgLWUgJ3MsW0BAXVZFUlNJT05bQEBdLCQoVkVS U0lPTiksZycgXAogICAgICAgICAgICBAZG90c3t9CgphdXRvbWFrZTogYXV0b21ha2UuaW4gTWFr ZWZpbGUKICAgICAgICAkKGRvX3N1YnN0KSA8ICQoc3JjZGlyKS9hdXRvbWFrZS5pbiA+IGF1dG9t YWtlCiAgICAgICAgY2htb2QgK3ggYXV0b21ha2UKQGVuZCBleGFtcGxlCgpTdWNoIHNjcmlwdHMg Zm9yIHdoaWNoIGEgYnVpbGQgcnVsZSBoYXMgYmVlbiBzdXBwbGllZCBuZWVkIHRvIGJlCmRlbGV0 ZWQgZXhwbGljaXRseSB1c2luZyBAY29kZXtDTEVBTkZJTEVTfSAoQHB4cmVme0NsZWFufSksIGFu ZCB0aGVpcgpzb3VyY2VzIGhhdmUgdG8gYmUgZGlzdHJpYnV0ZWQsIHVzdWFsbHkgd2l0aCBAY29k ZXtFWFRSQV9ESVNUfQooQHB4cmVme0Jhc2ljcyBvZiBEaXN0cmlidXRpb259KS4KCkFub3RoZXIg Y29tbW9uIHdheSB0byBidWlsZCBzY3JpcHRzIGlzIHRvIHByb2Nlc3MgdGhlbSBmcm9tCkBmaWxl e2NvbmZpZ3VyZX0gd2l0aCBAY29kZXtBQ19DT05GSUdfRklMRVN9LiAgSW4gdGhpcyBzaXR1YXRp b24KQXV0b21ha2Uga25vd3Mgd2hpY2ggZmlsZXMgc2hvdWxkIGJlIGNsZWFuZWQgYW5kIGRpc3Ry aWJ1dGVkLCBhbmQgd2hhdAp0aGUgcmVidWlsZCBydWxlcyBzaG91bGQgbG9vayBsaWtlLgoKRm9y IGluc3RhbmNlIGlmIEBmaWxle2NvbmZpZ3VyZS5hY30gY29udGFpbnMKCkBleGFtcGxlCkFDX0NP TkZJR19GSUxFUyhbc3JjL215X3NjcmlwdF0sIFtjaG1vZCAreCBzcmMvbXlfc2NyaXB0XSkKQGVu ZCBleGFtcGxlCgpAbm9pbmRlbnQKdG8gYnVpbGQgQGZpbGV7c3JjL215X3NjcmlwdH0gZnJvbSBA ZmlsZXtzcmMvbXlfc2NyaXB0LmlufSwgdGhlbiBhCkBmaWxle3NyYy9NYWtlZmlsZS5hbX0gdG8g aW5zdGFsbCB0aGlzIHNjcmlwdCBpbiBAY29kZXskKGJpbmRpcil9IGNhbgpiZSBhcyBzaW1wbGUg YXMKCkBleGFtcGxlCmJpbl9TQ1JJUFRTID0gbXlfc2NyaXB0CkNMRUFORklMRVMgPSAkKGJpbl9T Q1JJUFRTKQpAZW5kIGV4YW1wbGUKCkBub2luZGVudApUaGVyZSBpcyBubyBuZWVkIGZvciBAY29k ZXtFWFRSQV9ESVNUfSBvciBhbnkgYnVpbGQgcnVsZTogQXV0b21ha2UKaW5mZXJzIHRoZW0gZnJv bSBAY29kZXtBQ19DT05GSUdfRklMRVN9IChAcHhyZWZ7UmVxdWlyZW1lbnRzfSkuCkBjb2Rle0NM RUFORklMRVN9IGlzIHN0aWxsIHVzZWZ1bCwgYmVjYXVzZSBieSBkZWZhdWx0IEF1dG9tYWtlIHdp bGwKY2xlYW4gdGFyZ2V0cyBvZiBAY29kZXtBQ19DT05GSUdfRklMRVN9IGluIEBjb2Rle2Rpc3Rj bGVhbn0sIG5vdApAY29kZXtjbGVhbn0uCgpBbHRob3VnaCB0aGlzIGxvb2tzIHNpbXBsZXIsIGJ1 aWxkaW5nIHNjcmlwdHMgdGhpcyB3YXkgaGFzIG9uZQpkcmF3YmFjazogZGlyZWN0b3J5IHZhcmlh YmxlcyBzdWNoIGFzIEBjb2RleyQoZGF0YWRpcil9IGFyZSBub3QgZnVsbHkKZXhwYW5kZWQgYW5k IG1heSByZWZlciB0byBvdGhlciBkaXJlY3RvcnkgdmFyaWFibGVzLgoKQG5vZGUgSGVhZGVycwpA c2VjdGlvbiBIZWFkZXIgZmlsZXMKCkBjaW5kZXggQGNvZGV7X0hFQURFUlN9IHByaW1hcnksIGRl ZmluZWQKQGNpbmRleCBAY29kZXtIRUFERVJTfSBwcmltYXJ5LCBkZWZpbmVkCkBjaW5kZXggUHJp bWFyeSB2YXJpYWJsZSwgQGNvZGV7SEVBREVSU30KQHZpbmRleCBfSEVBREVSUwpAdmluZGV4IG5v aW5zdF9IRUFERVJTCkBjaW5kZXggQGNvZGV7SEVBREVSU30sIGluc3RhbGxhdGlvbiBkaXJlY3Rv cmllcwpAY2luZGV4IEluc3RhbGxpbmcgaGVhZGVycwpAdmluZGV4IGluY2x1ZGVfSEVBREVSUwpA dmluZGV4IG9sZGluY2x1ZGVfSEVBREVSUwpAdmluZGV4IHBrZ2luY2x1ZGVfSEVBREVSUwoKCkhl YWRlciBmaWxlcyB0aGF0IG11c3QgYmUgaW5zdGFsbGVkIGFyZSBzcGVjaWZpZWQgYnkgdGhlCkBj b2Rle0hFQURFUlN9IGZhbWlseSBvZiB2YXJpYWJsZXMuICBIZWFkZXJzIGNhbiBiZSBpbnN0YWxs ZWQgaW4KQGNvZGV7aW5jbHVkZWRpcn0sIEBjb2Rle29sZGluY2x1ZGVkaXJ9LCBAY29kZXtwa2dp bmNsdWRlZGlyfSBvciBhbnkKb3RoZXIgZGlyZWN0b3J5IHlvdSBtYXkgaGF2ZSBkZWZpbmVkIChA cHhyZWZ7VW5pZm9ybX0pLiAgRm9yIGluc3RhbmNlLAoKQGV4YW1wbGUKaW5jbHVkZV9IRUFERVJT ID0gZm9vLmggYmFyL2Jhci5oCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CndpbGwgaW5zdGFsbCB0 aGUgdHdvIGZpbGVzIGFzIEBmaWxleyQoaW5jbHVkZWRpcikvZm9vLmh9IGFuZApAZmlsZXskKGlu Y2x1ZGVkaXIpL2Jhci5ofS4KClRoZSBAY29kZXtub2Jhc2VffSBwcmVmaXggaXMgYWxzbyBzdXBw b3J0ZWQ6CgpAZXhhbXBsZQpub2Jhc2VfaW5jbHVkZV9IRUFERVJTID0gZm9vLmggYmFyL2Jhci5o CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CndpbGwgaW5zdGFsbCB0aGUgdHdvIGZpbGVzIGFzIEBm aWxleyQoaW5jbHVkZWRpcikvZm9vLmh9IGFuZApAZmlsZXskKGluY2x1ZGVkaXIpL2Jhci9iYXIu aH0gKEBweHJlZntBbHRlcm5hdGl2ZX0pLgoKQHZpbmRleCBub2luc3RfSEVBREVSUwpVc3VhbGx5 LCBvbmx5IGhlYWRlciBmaWxlcyB0aGF0IGFjY29tcGFueSBpbnN0YWxsZWQgbGlicmFyaWVzIG5l ZWQgdG8KYmUgaW5zdGFsbGVkLiAgSGVhZGVycyB1c2VkIGJ5IHByb2dyYW1zIG9yIGNvbnZlbmll bmNlIGxpYnJhcmllcyBhcmUKbm90IGluc3RhbGxlZC4gIFRoZSBAY29kZXtub2luc3RfSEVBREVS U30gdmFyaWFibGUgY2FuIGJlIHVzZWQgZm9yCnN1Y2ggaGVhZGVycy4gIEhvd2V2ZXIsIHdoZW4g dGhlIGhlYWRlciBiZWxvbmdzIHRvIGEgc2luZ2xlCmNvbnZlbmllbmNlIGxpYnJhcnkgb3IgcHJv Z3JhbSwgd2UgcmVjb21tZW5kIGxpc3RpbmcgaXQgaW4gdGhlCnByb2dyYW0ncyBvciBsaWJyYXJ5 J3MgQGNvZGV7X1NPVVJDRVN9IHZhcmlhYmxlIChAcHhyZWZ7UHJvZ3JhbQpTb3VyY2VzfSkgaW5z dGVhZCBvZiBpbiBAY29kZXtub2luc3RfSEVBREVSU30uICBUaGlzIGlzIGNsZWFyZXIgZm9yCnRo ZSBAZmlsZXtNYWtlZmlsZS5hbX0gcmVhZGVyLiAgQGNvZGV7bm9pbnN0X0hFQURFUlN9IHdvdWxk IGJlIHRoZQpyaWdodCB2YXJpYWJsZSB0byB1c2UgaW4gYSBkaXJlY3RvcnkgY29udGFpbmluZyBv bmx5IGhlYWRlcnMgYW5kIG5vCmFzc29jaWF0ZWQgbGlicmFyeSBvciBwcm9ncmFtLgoKQWxsIGhl YWRlciBmaWxlcyBtdXN0IGJlIGxpc3RlZCBzb21ld2hlcmU7IGluIGEgQGNvZGV7X1NPVVJDRVN9 CnZhcmlhYmxlIG9yIGluIGEgQGNvZGV7X0hFQURFUlN9IHZhcmlhYmxlLiAgTWlzc2luZyBvbmVz IHdpbGwgbm90CmFwcGVhciBpbiB0aGUgZGlzdHJpYnV0aW9uLgoKRm9yIGhlYWRlciBmaWxlcyB0 aGF0IGFyZSBidWlsdCBhbmQgbXVzdCBub3QgYmUgZGlzdHJpYnV0ZWQsIHVzZSB0aGUKQGNvZGV7 bm9kaXN0X30gcHJlZml4IGFzIGluIEBjb2Rle25vZGlzdF9pbmNsdWRlX0hFQURFUlN9IG9yCkBj b2Rle25vZGlzdF9wcm9nX1NPVVJDRVN9LiAgSWYgdGhlc2UgZ2VuZXJhdGVkIGhlYWRlcnMgYXJl IG5lZWRlZApkdXJpbmcgdGhlIGJ1aWxkLCB5b3UgbXVzdCBhbHNvIGVuc3VyZSB0aGV5IGV4aXN0 IGJlZm9yZSB0aGV5IGFyZQp1c2VkIChAcHhyZWZ7U291cmNlc30pLgoKCkBub2RlIERhdGEKQHNl Y3Rpb24gQXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgZmlsZXMKCkBjaW5kZXggQGNvZGV7 X0RBVEF9IHByaW1hcnksIGRlZmluZWQKQGNpbmRleCBAY29kZXtEQVRBfSBwcmltYXJ5LCBkZWZp bmVkCkBjaW5kZXggUHJpbWFyeSB2YXJpYWJsZSwgQGNvZGV7REFUQX0KQHZpbmRleCBfREFUQQoK QXV0b21ha2Ugc3VwcG9ydHMgdGhlIGluc3RhbGxhdGlvbiBvZiBtaXNjZWxsYW5lb3VzIGRhdGEg ZmlsZXMgdXNpbmcgdGhlCkBjb2Rle0RBVEF9IGZhbWlseSBvZiB2YXJpYWJsZXMuCkB2aW5kZXgg REFUQQoKQHZpbmRleCBkYXRhX0RBVEEKQHZpbmRleCBkb2NfREFUQQpAdmluZGV4IGxpc3BfREFU QQpAdmluZGV4IHN5c2NvbmZfREFUQQpAdmluZGV4IHNoYXJlZHN0YXRlX0RBVEEKQHZpbmRleCBs b2NhbHN0YXRlX0RBVEEKQHZpbmRleCBwa2dkYXRhX0RBVEEKClN1Y2ggZGF0YSBjYW4gYmUgaW5z dGFsbGVkIGluIHRoZSBkaXJlY3RvcmllcyBAY29kZXtkYXRhZGlyfSwKQGNvZGV7ZG9jZGlyfSwg QGNvZGV7bGlzcGRpcn0sIEBjb2Rle3N5c2NvbmZkaXJ9LCBAY29kZXtzaGFyZWRzdGF0ZWRpcn0s CkBjb2Rle2xvY2Fsc3RhdGVkaXJ9LCBvciBAY29kZXtwa2dkYXRhZGlyfS4KCkJ5IGRlZmF1bHQs IGRhdGEgZmlsZXMgYXJlIEBlbXBoe25vdH0gaW5jbHVkZWQgaW4gYSBkaXN0cmlidXRpb24uICBP Zgpjb3Vyc2UsIHlvdSBjYW4gdXNlIHRoZSBAY29kZXtkaXN0X30gcHJlZml4IHRvIGNoYW5nZSB0 aGlzIG9uIGEKcGVyLXZhcmlhYmxlIGJhc2lzLgoKSGVyZSBpcyBob3cgQXV0b21ha2UgZGVjbGFy ZXMgaXRzIGF1eGlsaWFyeSBkYXRhIGZpbGVzOgoKQGV4YW1wbGUKZGlzdF9wa2dkYXRhX0RBVEEg PSBjbGVhbi1rci5hbSBjbGVhbi5hbSBAZG90c3t9CkBlbmQgZXhhbXBsZQoKCkBub2RlIFNvdXJj ZXMKQHNlY3Rpb24gQnVpbHQgU291cmNlcwoKQmVjYXVzZSBBdXRvbWFrZSdzIGF1dG9tYXRpYyBk ZXBlbmRlbmN5IHRyYWNraW5nIHdvcmtzIGFzIGEgc2lkZS1lZmZlY3QKb2YgY29tcGlsYXRpb24g KEBweHJlZntEZXBlbmRlbmNpZXN9KSB0aGVyZSBpcyBhIGJvb3RzdHJhcCBpc3N1ZTogYQp0YXJn ZXQgc2hvdWxkIG5vdCBiZSBjb21waWxlZCBiZWZvcmUgaXRzIGRlcGVuZGVuY2llcyBhcmUgbWFk ZSwgYnV0CnRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdW5rbm93biB1bnRpbCB0aGUgdGFyZ2V0IGlz IGZpcnN0IGNvbXBpbGVkLgoKT3JkaW5hcmlseSB0aGlzIGlzIG5vdCBhIHByb2JsZW0sIGJlY2F1 c2UgZGVwZW5kZW5jaWVzIGFyZSBkaXN0cmlidXRlZApzb3VyY2VzOiB0aGV5IHByZWV4aXN0IGFu ZCBkbyBub3QgbmVlZCB0byBiZSBidWlsdC4gIFN1cHBvc2UgdGhhdApAZmlsZXtmb28uY30gaW5j bHVkZXMgQGZpbGV7Zm9vLmh9LiAgV2hlbiBpdCBmaXJzdCBjb21waWxlcwpAZmlsZXtmb28ub30s IEBjb21tYW5ke21ha2V9IG9ubHkga25vd3MgdGhhdCBAZmlsZXtmb28ub30gZGVwZW5kcyBvbgpA ZmlsZXtmb28uY30uICBBcyBhIHNpZGUtZWZmZWN0IG9mIHRoaXMgY29tcGlsYXRpb24gQGNvbW1h bmR7ZGVwY29tcH0KcmVjb3JkcyB0aGUgQGZpbGV7Zm9vLmh9IGRlcGVuZGVuY3kgc28gdGhhdCBm b2xsb3dpbmcgaW52b2NhdGlvbnMgb2YKQGNvbW1hbmR7bWFrZX0gd2lsbCBob25vciBpdC4gIElu IHRoZXNlIGNvbmRpdGlvbnMsIGl0J3MgY2xlYXIgdGhlcmUgaXMKbm8gcHJvYmxlbTogZWl0aGVy IEBmaWxle2Zvby5vfSBkb2Vzbid0IGV4aXN0IGFuZCBoYXMgdG8gYmUgYnVpbHQKKHJlZ2FyZGxl c3Mgb2YgdGhlIGRlcGVuZGVuY2llcyksIG9yIGFjY3VyYXRlIGRlcGVuZGVuY2llcyBleGlzdCBh bmQKdGhleSBjYW4gYmUgdXNlZCB0byBkZWNpZGUgd2hldGhlciBAZmlsZXtmb28ub30gc2hvdWxk IGJlIHJlYnVpbHQuCgpJdCdzIGEgZGlmZmVyZW50IHN0b3J5IGlmIEBmaWxle2Zvby5ofSBkb2Vz bid0IGV4aXN0IGJ5IHRoZSBmaXJzdApAY29tbWFuZHttYWtlfSBydW4uICBGb3IgaW5zdGFuY2Us IHRoZXJlIG1pZ2h0IGJlIGEgcnVsZSB0byBidWlsZApAZmlsZXtmb28uaH0uICBUaGlzIHRpbWUg QGZpbGV7ZmlsZS5vfSdzIGJ1aWxkIHdpbGwgZmFpbCBiZWNhdXNlIHRoZQpjb21waWxlciBjYW4n dCBmaW5kIEBmaWxle2Zvby5ofS4gIEBjb21tYW5ke21ha2V9IGZhaWxlZCB0byB0cmlnZ2VyIHRo ZQpydWxlIHRvIGJ1aWxkIEBmaWxle2Zvby5ofSBmaXJzdCBieSBsYWNrIG9mIGRlcGVuZGVuY3kg aW5mb3JtYXRpb24uCgpAdmluZGV4IEJVSUxUX1NPVVJDRVMKQGNpbmRleCBAY29kZXtCVUlMVF9T T1VSQ0VTfSwgZGVmaW5lZAoKVGhlIEBjb2Rle0JVSUxUX1NPVVJDRVN9IHZhcmlhYmxlIGlzIGEg d29ya2Fyb3VuZCBmb3IgdGhpcyBwcm9ibGVtLiAgQQpzb3VyY2UgZmlsZSBsaXN0ZWQgaW4gQGNv ZGV7QlVJTFRfU09VUkNFU30gaXMgbWFkZSB3aGVuIEBzYW1we21ha2UKYWxsfSwgQHNhbXB7bWFr ZSBjaGVja30sIEBzYW1we21ha2UgaW5zdGFsbH0sIEBzYW1we21ha2UgaW5zdGFsbC1leGVjfQoo b3IgQGNvZGV7bWFrZSBkaXN0fSkgaXMgcnVuLCBiZWZvcmUgb3RoZXIgdGFyZ2V0cyBhcmUgcHJv Y2Vzc2VkLgpIb3dldmVyLCBzdWNoIGEgc291cmNlIGZpbGUgaXMgbm90IEBlbXBoe2NvbXBpbGVk fSB1bmxlc3MgZXhwbGljaXRseQpyZXF1ZXN0ZWQgYnkgbWVudGlvbmluZyBpdCBpbiBzb21lIG90 aGVyIEBjb2Rle19TT1VSQ0VTfSB2YXJpYWJsZS4KClNvLCB0byBjb25jbHVkZSBvdXIgaW50cm9k dWN0b3J5IGV4YW1wbGUsIHdlIGNvdWxkIHVzZQpAc2FtcHtCVUlMVF9TT1VSQ0VTID0gZm9vLmh9 IHRvIGVuc3VyZSBAZmlsZXtmb28uaH0gZ2V0cyBidWlsdCBiZWZvcmUKYW55IG90aGVyIHRhcmdl dCAoaW5jbHVkaW5nIEBmaWxle2Zvby5vfSkgZHVyaW5nIEBzYW1we21ha2UgYWxsfSBvcgpAc2Ft cHttYWtlIGNoZWNrfS4KCkBjb2Rle0JVSUxUX1NPVVJDRVN9IGlzIGEgYml0IG9mIGEgbWlzbm9t ZXIsIGFzIGFueSBmaWxlIHdoaWNoIG11c3QgYmUKY3JlYXRlZCBlYXJseSBpbiB0aGUgYnVpbGQg cHJvY2VzcyBjYW4gYmUgbGlzdGVkIGluIHRoaXMgdmFyaWFibGUuCk1vcmVvdmVyLCBhbGwgYnVp bHQgc291cmNlcyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBiZSBsaXN0ZWQgaW4KQGNvZGV7 QlVJTFRfU09VUkNFU30uICBGb3IgaW5zdGFuY2UsIGEgZ2VuZXJhdGVkIEBmaWxley5jfSBmaWxl CmRvZXNuJ3QgbmVlZCB0byBhcHBlYXIgaW4gQGNvZGV7QlVJTFRfU09VUkNFU30gKHVubGVzcyBp dCBpcyBpbmNsdWRlZApieSBhbm90aGVyIHNvdXJjZSksIGJlY2F1c2UgaXQncyBhIGtub3duIGRl cGVuZGVuY3kgb2YgdGhlIGFzc29jaWF0ZWQKb2JqZWN0LgoKVG8gZW1waGFzaXplLCBAY29kZXtC VUlMVF9TT1VSQ0VTfSBpcyBob25vcmVkIG9ubHkgYnkgQHNhbXB7bWFrZSBhbGx9LApAc2FtcHtt YWtlIGNoZWNrfSwgQHNhbXB7bWFrZSBpbnN0YWxsfSwgYW5kIEBjb2Rle21ha2UgaW5zdGFsbC1l eGVjfQooYW5kIEBzYW1we21ha2UgZGlzdH0pLiAgVGhpcyBtZWFucyB5b3UgY2Fubm90IGJ1aWxk IGFuIGFyYml0cmFyeQp0YXJnZXQgKGUuZy4sIEBzYW1we21ha2UgZm9vfSkgaW4gYSBjbGVhbiB0 cmVlIGlmIGl0IGRlcGVuZHMgb24gYQpidWlsdCBzb3VyY2UgKHVubGVzcyB5b3UgZXhwbGljaXRs eSBjcmVhdGUgYSBkZXBlbmRlbmN5IGZvciBAY29kZXtmb299Cm9uIEBjb2RleyQoQlVJTFRfU09V UkNFUyl9KS4gIEl0IHdpbGwgc3VjY2VlZCBpZiB5b3UgaGF2ZSBydW4KQHNhbXB7bWFrZSBhbGx9 IGVhcmxpZXIsIHRob3VnaCwgYmVjYXVzZSBhY2N1cmF0ZSBkZXBlbmRlbmNpZXMgYXJlCmFscmVh ZHkgYXZhaWxhYmxlLgoKVGhlIG5leHQgc2VjdGlvbiBpbGx1c3RyYXRlcyBhbmQgZGlzY3Vzc2Vz IHRoZSBoYW5kbGluZyBvZiBidWlsdCBzb3VyY2VzCm9uIGEgdG95IGV4YW1wbGUuCgpAbWVudQoq IEJ1aWx0IFNvdXJjZXMgRXhhbXBsZTo6ICAgICAgIFNldmVyYWwgd2F5cyB0byBoYW5kbGUgYnVp bHQgc291cmNlcy4KQGVuZCBtZW51CgpAbm9kZSBCdWlsdCBTb3VyY2VzIEV4YW1wbGUKQHN1YnNl Y3Rpb24gQnVpbHQgU291cmNlcyBFeGFtcGxlCgpTdXBwb3NlIHRoYXQgQGZpbGV7Zm9vLmN9IGlu Y2x1ZGVzIEBmaWxle2JpbmRpci5ofSwgd2hpY2ggaXMKaW5zdGFsbGF0aW9uLWRlcGVuZGVudCBh bmQgbm90IGRpc3RyaWJ1dGVkOiBpdCBuZWVkcyB0byBiZSBidWlsdC4gIEhlcmUKQGZpbGV7Ymlu ZGlyLmh9IGRlZmluZXMgdGhlIHByZXByb2Nlc3NvciBtYWNybyBAY29kZXtiaW5kaXJ9IHRvIHRo ZQp2YWx1ZSBvZiB0aGUgQGNvbW1hbmR7bWFrZX0gdmFyaWFibGUgQGNvZGV7YmluZGlyfSAoaW5o ZXJpdGVkIGZyb20KQGZpbGV7Y29uZmlndXJlfSkuCgpXZSBzdWdnZXN0IHNldmVyYWwgaW1wbGVt ZW50YXRpb25zIGJlbG93LiAgSXQncyBub3QgbWVhbnQgdG8gYmUgYW4KZXhoYXVzdGl2ZSBsaXN0 aW5nIG9mIGFsbCB3YXlzIHRvIGhhbmRsZSBidWlsdCBzb3VyY2VzLCBidXQgdG8gZ2l2ZQp5b3Ug YSBmZXcgaWRlYXMgaWYgeW91IGVuY291bnRlciB0aGlzIGlzc3VlLgoKQHN1YnN1YmhlYWRpbmcg Rmlyc3QgVHJ5CgpUaGlzIGZpcnN0IGltcGxlbWVudGF0aW9uIHdpbGwgaWxsdXN0cmF0ZSB0aGUg Ym9vdHN0cmFwIGlzc3VlIG1lbnRpb25lZAppbiB0aGUgcHJldmlvdXMgc2VjdGlvbiAoQHB4cmVm e1NvdXJjZXN9KS4KCkhlcmUgaXMgYSB0ZW50YXRpdmUgQGZpbGV7TWFrZWZpbGUuYW19LgoKQGV4 YW1wbGUKIyBUaGlzIHdvbid0IHdvcmsuCmJpbl9QUk9HUkFNUyA9IGZvbwpmb29fU09VUkNFUyA9 IGZvby5jCm5vZGlzdF9mb29fU09VUkNFUyA9IGJpbmRpci5oCkNMRUFORklMRVMgPSBiaW5kaXIu aApiaW5kaXIuaDogTWFrZWZpbGUKICAgICAgICBlY2hvICcjZGVmaW5lIGJpbmRpciAiJChiaW5k aXIpIicgPiRAQApAZW5kIGV4YW1wbGUKClRoaXMgc2V0dXAgZG9lc24ndCB3b3JrLCBiZWNhdXNl IEF1dG9tYWtlIGRvZXNuJ3Qga25vdyB0aGF0IEBmaWxle2Zvby5jfQppbmNsdWRlcyBAZmlsZXti aW5kaXIuaH0uICBSZW1lbWJlciwgYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcgd29ya3MK YXMgYSBzaWRlLWVmZmVjdCBvZiBjb21waWxhdGlvbiwgc28gdGhlIGRlcGVuZGVuY2llcyBvZiBA ZmlsZXtmb28ub30gd2lsbApiZSBrbm93biBvbmx5IGFmdGVyIEBmaWxle2Zvby5vfSBoYXMgYmVl biBjb21waWxlZCAoQHB4cmVme0RlcGVuZGVuY2llc30pLgpUaGUgc3ltcHRvbSBpcyBhcyBmb2xs b3dzLgoKQGV4YW1wbGUKJSBAa2Jke21ha2V9CnNvdXJjZT0nZm9vLmMnIG9iamVjdD0nZm9vLm8n IGxpYnRvb2w9bm8gXApkZXBmaWxlPScuZGVwcy9mb28uUG8nIHRtcGRlcGZpbGU9Jy5kZXBzL2Zv by5UUG8nIFwKZGVwbW9kZT1nY2MgL2Jpbi9zaCAuL2RlcGNvbXAgXApnY2MgLUkuIC1JLiAtZyAt TzIgLWMgYHRlc3QgLWYgJ2Zvby5jJyB8fCBlY2hvICcuLydgZm9vLmMKZm9vLmM6MjogYmluZGly Lmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKbWFrZTogKioqIFtmb28ub10gRXJyb3IgMQpA ZW5kIGV4YW1wbGUKCkluIHRoaXMgZXhhbXBsZSBAZmlsZXtiaW5kaXIuaH0gaXMgbm90IGRpc3Ry aWJ1dGVkIG5vciBpbnN0YWxsZWQsIGFuZAppdCBpcyBub3QgZXZlbiBiZWluZyBidWlsdCBvbi10 aW1lLgoKT25lIG1heSB3b25kZXIgaWYgdGhlIEBzYW1we25vZGlzdF9mb29fU09VUkNFUyA9IGJp bmRpci5ofSBsaW5lIGhhcwphbnkgdXNlIGF0IGFsbC4gIFRoaXMgbGluZSBtZXJlbHkgZGVjbGFy ZXMgdGhhdCBAZmlsZXtiaW5kaXIuaH0gaXMgYQpzb3VyY2Ugb2YgQGNvZGV7Zm9vfSwgc28gZm9y IGluc3RhbmNlLCBpdCBzaG91bGQgYmUgaW5zcGVjdGVkIHdoaWxlCmdlbmVyYXRpbmcgdGFncyAo QHB4cmVme1RhZ3N9KS4gIEluIG90aGVyIHdvcmRzLCBpdCBkb2VzIG5vdCBoZWxwIG91cgpwcmVz ZW50IHByb2JsZW0sIGFuZCB0aGUgYnVpbGQgd291bGQgZmFpbCBpZGVudGljYWxseSB3aXRob3V0 IGl0LgoKQHN1YnN1YmhlYWRpbmcgVXNpbmcgQGNvZGV7QlVJTFRfU09VUkNFU30KCk9uZSBzb2x1 dGlvbiBpcyB0byByZXF1aXJlIEBmaWxle2JpbmRpci5ofSB0byBiZSBidWlsdCBiZWZvcmUgYW55 dGhpbmcKZWxzZS4gIFRoaXMgaXMgd2hhdCBAY29kZXtCVUlMVF9TT1VSQ0VTfSBpcyBtZWFudCBm b3IgKEBweHJlZntTb3VyY2VzfSkuCgpAZXhhbXBsZQpiaW5fUFJPR1JBTVMgPSBmb28KZm9vX1NP VVJDRVMgPSBmb28uYwpub2Rpc3RfZm9vX1NPVVJDRVMgPSBiaW5kaXIuaApCVUlMVF9TT1VSQ0VT ID0gYmluZGlyLmgKQ0xFQU5GSUxFUyA9IGJpbmRpci5oCmJpbmRpci5oOiBNYWtlZmlsZQogICAg ICAgIGVjaG8gJyNkZWZpbmUgYmluZGlyICIkKGJpbmRpcikiJyA+JEBACkBlbmQgZXhhbXBsZQoK U2VlIGhvdyBAZmlsZXtiaW5kaXIuaH0gZ2V0cyBidWlsdCBmaXJzdDoKCkBleGFtcGxlCiUgQGti ZHttYWtlfQplY2hvICcjZGVmaW5lIGJpbmRpciAiL3Vzci9sb2NhbC9iaW4iJyA+YmluZGlyLmgK bWFrZSAgYWxsLWFtCm1ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSBgL2hvbWUvYWRsL3RtcCcK c291cmNlPSdmb28uYycgb2JqZWN0PSdmb28ubycgbGlidG9vbD1ubyBcCmRlcGZpbGU9Jy5kZXBz L2Zvby5QbycgdG1wZGVwZmlsZT0nLmRlcHMvZm9vLlRQbycgXApkZXBtb2RlPWdjYyAvYmluL3No IC4vZGVwY29tcCBcCmdjYyAtSS4gLUkuIC1nIC1PMiAtYyBgdGVzdCAtZiAnZm9vLmMnIHx8IGVj aG8gJy4vJ2Bmb28uYwpnY2MgIC1nIC1PMiAgIC1vIGZvbyAgZm9vLm8KbWFrZVsxXTogTGVhdmlu ZyBkaXJlY3RvcnkgYC9ob21lL2FkbC90bXAnCkBlbmQgZXhhbXBsZQoKSG93ZXZlciwgYXMgc2Fp ZCBlYXJsaWVyLCBAY29kZXtCVUlMVF9TT1VSQ0VTfSBhcHBsaWVzIG9ubHkgdG8gdGhlCkBjb2Rl e2FsbH0sIEBjb2Rle2NoZWNrfSwgYW5kIEBjb2Rle2luc3RhbGx9IHRhcmdldHMuICBJdCBzdGls bCBmYWlscwppZiB5b3UgdHJ5IHRvIHJ1biBAc2FtcHttYWtlIGZvb30gZXhwbGljaXRseToKCkBl eGFtcGxlCiUgQGtiZHttYWtlIGNsZWFufQp0ZXN0IC16ICJiaW5kaXIuaCIgfHwgcm0gLWYgYmlu ZGlyLmgKdGVzdCAteiAiZm9vIiB8fCBybSAtZiBmb28Kcm0gLWYgKi5vCiUgQGtiZHs6ID4gLmRl cHMvZm9vLlBvfSAjIFN1cHByZXNzIHByZXZpb3VzbHkgcmVjb3JkZWQgZGVwZW5kZW5jaWVzCiUg QGtiZHttYWtlIGZvb30Kc291cmNlPSdmb28uYycgb2JqZWN0PSdmb28ubycgbGlidG9vbD1ubyBc CmRlcGZpbGU9Jy5kZXBzL2Zvby5QbycgdG1wZGVwZmlsZT0nLmRlcHMvZm9vLlRQbycgXApkZXBt b2RlPWdjYyAvYmluL3NoIC4vZGVwY29tcCBcCmdjYyAtSS4gLUkuIC1nIC1PMiAtYyBgdGVzdCAt ZiAnZm9vLmMnIHx8IGVjaG8gJy4vJ2Bmb28uYwpmb28uYzoyOiBiaW5kaXIuaDogTm8gc3VjaCBm aWxlIG9yIGRpcmVjdG9yeQptYWtlOiAqKiogW2Zvby5vXSBFcnJvciAxCkBlbmQgZXhhbXBsZQoK QHN1YnN1YmhlYWRpbmcgUmVjb3JkaW5nIERlcGVuZGVuY2llcyBtYW51YWxseQoKVXN1YWxseSBw ZW9wbGUgYXJlIGhhcHB5IGVub3VnaCB3aXRoIEBjb2Rle0JVSUxUX1NPVVJDRVN9IGJlY2F1c2Ug dGhleQpuZXZlciBidWlsZCB0YXJnZXRzIHN1Y2ggYXMgQHNhbXB7bWFrZSBmb299IGJlZm9yZSBA c2FtcHttYWtlIGFsbH0sIGFzCmluIHRoZSBwcmV2aW91cyBleGFtcGxlLiAgSG93ZXZlciBpZiB0 aGlzIG1hdHRlcnMgdG8geW91LCB5b3UgY2FuCmF2b2lkIEBjb2Rle0JVSUxUX1NPVVJDRVN9IGFu ZCByZWNvcmQgc3VjaCBkZXBlbmRlbmNpZXMgZXhwbGljaXRseSBpbgp0aGUgQGZpbGV7TWFrZWZp bGUuYW19LgoKQGV4YW1wbGUKYmluX1BST0dSQU1TID0gZm9vCmZvb19TT1VSQ0VTID0gZm9vLmMK bm9kaXN0X2Zvb19TT1VSQ0VTID0gYmluZGlyLmgKZm9vLiQoT0JKRVhUKTogYmluZGlyLmgKQ0xF QU5GSUxFUyA9IGJpbmRpci5oCmJpbmRpci5oOiBNYWtlZmlsZQogICAgICAgIGVjaG8gJyNkZWZp bmUgYmluZGlyICIkKGJpbmRpcikiJyA+JEBACkBlbmQgZXhhbXBsZQoKWW91IGRvbid0IGhhdmUg dG8gbGlzdCBAZW1waHthbGx9IHRoZSBkZXBlbmRlbmNpZXMgb2YgQGZpbGV7Zm9vLm99CmV4cGxp Y2l0bHksIG9ubHkgdGhvc2UgdGhhdCBtaWdodCBuZWVkIHRvIGJlIGJ1aWx0LiAgSWYgYSBkZXBl bmRlbmN5CmFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIG5vdCBoaW5kZXIgdGhlIGZpcnN0IGNvbXBp bGF0aW9uIGFuZCB3aWxsIGJlCnJlY29yZGVkIGJ5IHRoZSBub3JtYWwgZGVwZW5kZW5jeSB0cmFj a2luZyBjb2RlLiAgQWZ0ZXIgdGhpcyBmaXJzdApjb21waWxhdGlvbiwgdGhlIGRlcGVuZGVuY3kg dHJhY2tpbmcgY29kZSB3aWxsIGFsc28gaGF2ZSByZWNvcmRlZCB0aGUKZGVwZW5kZW5jeSBiZXR3 ZWVuIEBmaWxle2Zvby5vfSBhbmQgQGZpbGV7YmluZGlyLmh9LCBzbyBvdXIgZXhwbGljaXQKZGVw ZW5kZW5jeSBpcyB1c2VmdWwgb25seSB0byB0aGUgZmlyc3QgYnVpbGQsIGJ1dCBkb2VzIG5vIGhh cm0uCgpBZGRpbmcgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGxpa2UgdGhpcyBjYW4gYmUgZGFuZ2Vy b3VzLCBiZWNhdXNlCkF1dG9tYWtlIGRvZXMgbm90IG92ZXJ3cml0ZSB5b3VyIG93biBydWxlcyAo aXQgYXNzdW1lcyB5b3Uga25vdyBiZXR0ZXIKdGhhbiBpdCkuICBUaHVzLCBAc2FtcHtmb28uJChP QkpFWFQpOiBiaW5kaXIuaH0gc3VwZXJzZWRlcyBhbnkgcnVsZQpBdXRvbWFrZSBtYXkgd2FudCB0 byBvdXRwdXQgdG8gYnVpbGQgQHNhbXB7Zm9vLiQoT0JKRVhUKX0uICBJdCB3b3JrcwppbiB0aGlz IGNhc2UgYmVjYXVzZSBBdXRvbWFrZSBkb2Vzbid0IG91dHB1dCBhbnkgQHNhbXB7Zm9vLiQoT0JK RVhUKTp9CnRhcmdldDogaXQgcmVsaWVzIG9uIGEgc3VmZml4IHJ1bGUgaW5zdGVhZCAoaS5lLiwK QHNhbXB7LmMuJChPQkpFWFQpOn0pLiAgU28sIGluIHRoaXMgYXBwcm9hY2gsIHlvdSBzaG91bGQg YWx3YXlzIGNoZWNrCnRoZSBnZW5lcmF0ZWQgQGZpbGV7TWFrZWZpbGUuaW59IGZvciBBdXRvbWFr ZS1nZW5lcmF0ZWQgcnVsZXMgd2l0aCB0aGUKc2FtZSB0YXJnZXQuCgpAc3Vic3ViaGVhZGluZyBC dWlsZCBAZmlsZXtiaW5kaXIuaH0gZnJvbSBAZmlsZXtjb25maWd1cmV9CgpJdCdzIHBvc3NpYmxl IHRvIGRlZmluZSB0aGlzIHByZXByb2Nlc3NvciBtYWNybyBmcm9tIEBmaWxle2NvbmZpZ3VyZX0s CmVpdGhlciBpbiBAZmlsZXtjb25maWcuaH0gKEBweHJlZntEZWZpbmluZyBEaXJlY3Rvcmllcywg LCBEZWZpbmluZwpEaXJlY3RvcmllcywgYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9KSwg b3IgYnkgcHJvY2Vzc2luZyBhCkBmaWxle2JpbmRpci5oLmlufSBmaWxlIHVzaW5nIEBjb2Rle0FD X0NPTkZJR19GSUxFU30KKEBweHJlZntDb25maWd1cmF0aW9uIEFjdGlvbnMsICxDb25maWd1cmF0 aW9uIEFjdGlvbnMsIGF1dG9jb25mLCBUaGUKQXV0b2NvbmYgTWFudWFsfSkuCgpBdCB0aGlzIHBv aW50IGl0IHNob3VsZCBiZSBjbGVhciB0aGF0IGJ1aWxkaW5nIEBmaWxle2JpbmRpci5ofSBmcm9t CkBmaWxle2NvbmZpZ3VyZX0gd29ya3Mgd2VsbCBmb3IgdGhpcyBleGFtcGxlLiAgQGZpbGV7Ymlu ZGlyLmh9IHdpbGwgZXhpc3QKYmVmb3JlIHlvdSBidWlsZCBhbnkgdGFyZ2V0LCBoZW5jZSB3aWxs IG5vdCBjYXVzZSBhbnkgZGVwZW5kZW5jeSBpc3N1ZS4KClRoZSBNYWtlZmlsZSBjYW4gYmUgc2hy dW5rIGFzIGZvbGxvd3MuICBXZSBkbyBub3QgZXZlbiBoYXZlIHRvIG1lbnRpb24KQGZpbGV7Ymlu ZGlyLmh9LgoKQGV4YW1wbGUKYmluX1BST0dSQU1TID0gZm9vCmZvb19TT1VSQ0VTID0gZm9vLmMK QGVuZCBleGFtcGxlCgpIb3dldmVyLCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gYnVpbGQg c291cmNlcyBmcm9tCkBmaWxle2NvbmZpZ3VyZX0sIGVzcGVjaWFsbHkgd2hlbiB0aGVzZSBzb3Vy Y2VzIGFyZSBnZW5lcmF0ZWQgYnkgYSB0b29sCnRoYXQgbmVlZHMgdG8gYmUgYnVpbHQgZmlyc3Qu CgpAc3Vic3ViaGVhZGluZyBCdWlsZCBAZmlsZXtiaW5kaXIuY30sIG5vdCBAZmlsZXtiaW5kaXIu aH0uCgpBbm90aGVyIGF0dHJhY3RpdmUgaWRlYSBpcyB0byBkZWZpbmUgQGNvZGV7YmluZGlyfSBh cyBhIHZhcmlhYmxlIG9yCmZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gQGZpbGV7YmluZGlyLm99LCBh bmQgYnVpbGQgQGZpbGV7YmluZGlyLmN9Cmluc3RlYWQgb2YgQGZpbGV7YmluZGlyLmh9LgoKQGV4 YW1wbGUKbm9pbnN0X1BST0dSQU1TID0gZm9vCmZvb19TT1VSQ0VTID0gZm9vLmMgYmluZGlyLmgK bm9kaXN0X2Zvb19TT1VSQ0VTID0gYmluZGlyLmMKQ0xFQU5GSUxFUyA9IGJpbmRpci5jCmJpbmRp ci5jOiBNYWtlZmlsZQogICAgICAgIGVjaG8gJ2NvbnN0IGNoYXIgYmluZGlyW10gPSAiJChiaW5k aXIpIjsnID4kQEAKQGVuZCBleGFtcGxlCgpAZmlsZXtiaW5kaXIuaH0gY29udGFpbnMganVzdCB0 aGUgdmFyaWFibGUncyBkZWNsYXJhdGlvbiBhbmQgZG9lc24ndApuZWVkIHRvIGJlIGJ1aWx0LCBz byBpdCB3b24ndCBjYXVzZSBhbnkgdHJvdWJsZS4gIEBmaWxle2JpbmRpci5vfSBpcwphbHdheXMg ZGVwZW5kZW50IG9uIEBmaWxle2JpbmRpci5jfSwgc28gQGZpbGV7YmluZGlyLmN9IHdpbGwgZ2V0 IGJ1aWx0CmZpcnN0LgoKQHN1YnN1YmhlYWRpbmcgV2hpY2ggaXMgYmVzdD8KClRoZXJlIGlzIG5v IHBhbmFjZWEuICBFYWNoIHNvbHV0aW9uIGhhcyBpdHMgbWVyaXRzIGFuZCBkcmF3YmFja3MuCgpZ b3UgY2Fubm90IHVzZSBAY29kZXtCVUlMVF9TT1VSQ0VTfSBpZiB0aGUgYWJpbGl0eSB0byBydW4g QHNhbXB7bWFrZQpmb299IGZvciBhbnkgQGNvZGV7Zm9vfSBvbiBhIGNsZWFuIHRyZWUgaXMgaW1w b3J0YW50IHRvIHlvdS4KCllvdSB3b24ndCB3YW50IHRvIGRlZmluZSBleHBsaWNpdCBkZXBlbmRl bmNpZXMgaWYgeW91IGFyZSBsZWVyeSBvZgpvdmVycmlkaW5nIGFuIEF1dG9tYWtlIHJ1bGUgYnkg bWlzdGFrZS4KCkJ1aWxkaW5nIGZpbGVzIGZyb20gQGZpbGV7Li9jb25maWd1cmV9IGlzIG5vdCBh bHdheXMgcG9zc2libGU7IG5laXRoZXIKaXMgY29udmVydGluZyBAZmlsZXsuaH0gZmlsZXMgaW50 byBAZmlsZXsuY30gZmlsZXMuCgoKQG5vZGUgT3RoZXIgR05VIFRvb2xzCkBjaGFwdGVyIE90aGVy IEdOVSBUb29scwoKU2luY2UgQXV0b21ha2UgaXMgcHJpbWFyaWx5IGludGVuZGVkIHRvIGdlbmVy YXRlIEBmaWxle01ha2VmaWxlLmlufXMgZm9yCnVzZSBpbiBHTlUgcHJvZ3JhbXMsIGl0IHRyaWVz IGhhcmQgdG8gaW50ZXJvcGVyYXRlIHdpdGggb3RoZXIgR05VIHRvb2xzLgoKQG1lbnUKKiBFbWFj cyBMaXNwOjogICAgICAgICAgICAgICAgICBFbWFjcyBMaXNwCiogZ2V0dGV4dDo6ICAgICAgICAg ICAgICAgICAgICAgR2V0dGV4dAoqIExpYnRvb2w6OiAgICAgICAgICAgICAgICAgICAgIExpYnRv b2wKKiBKYXZhOjogICAgICAgICAgICAgICAgICAgICAgICBKYXZhIGJ5dGVjb2RlIGNvbXBpbGF0 aW9uIChkZXByZWNhdGVkKQoqIFB5dGhvbjo6ICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbgpA ZW5kIG1lbnUKCgpAbm9kZSBFbWFjcyBMaXNwCkBzZWN0aW9uIEVtYWNzIExpc3AKCkBjaW5kZXgg QGNvZGV7X0xJU1B9IHByaW1hcnksIGRlZmluZWQKQGNpbmRleCBAY29kZXtMSVNQfSBwcmltYXJ5 LCBkZWZpbmVkCkBjaW5kZXggUHJpbWFyeSB2YXJpYWJsZSwgQGNvZGV7TElTUH0KCkB2aW5kZXgg X0xJU1AKQHZpbmRleCBsaXNwX0xJU1AKQHZpbmRleCBub2luc3RfTElTUAoKQXV0b21ha2UgcHJv dmlkZXMgc29tZSBzdXBwb3J0IGZvciBFbWFjcyBMaXNwLiAgVGhlIEBjb2Rle0xJU1B9IHByaW1h cnkKaXMgdXNlZCB0byBob2xkIGEgbGlzdCBvZiBAZmlsZXsuZWx9IGZpbGVzLiAgUG9zc2libGUg cHJlZml4ZXMgZm9yIHRoaXMKcHJpbWFyeSBhcmUgQGNvZGV7bGlzcF99IGFuZCBAY29kZXtub2lu c3RffS4gIE5vdGUgdGhhdCBpZgpAY29kZXtsaXNwX0xJU1B9IGlzIGRlZmluZWQsIHRoZW4gQGZp bGV7Y29uZmlndXJlLmFjfSBtdXN0IHJ1bgpAY29kZXtBTV9QQVRIX0xJU1BESVJ9IChAcHhyZWZ7 TWFjcm9zfSkuCgpAdmluZGV4IGRpc3RfbGlzcF9MSVNQCkB2aW5kZXggZGlzdF9ub2luc3RfTElT UApMaXNwIHNvdXJjZXMgYXJlIG5vdCBkaXN0cmlidXRlZCBieSBkZWZhdWx0LiAgWW91IGNhbiBw cmVmaXggdGhlCkBjb2Rle0xJU1B9IHByaW1hcnkgd2l0aCBAY29kZXtkaXN0X30sIGFzIGluIEBj b2Rle2Rpc3RfbGlzcF9MSVNQfSBvcgpAY29kZXtkaXN0X25vaW5zdF9MSVNQfSwgdG8gaW5kaWNh dGUgdGhhdCB0aGVzZSBmaWxlcyBzaG91bGQgYmUKZGlzdHJpYnV0ZWQuCgpBdXRvbWFrZSB3aWxs IGJ5dGUtY29tcGlsZSBhbGwgRW1hY3MgTGlzcCBzb3VyY2UgZmlsZXMgdXNpbmcgdGhlIEVtYWNz CmZvdW5kIGJ5IEBjb2Rle0FNX1BBVEhfTElTUERJUn0sIGlmIGFueSB3YXMgZm91bmQuICBXaGVu IHBlcmZvcm1pbmcgc3VjaApieXRlLWNvbXBpbGF0aW9uLCB0aGUgZmxhZ3Mgc3BlY2lmaWVkIGlu IHRoZSAoZGV2ZWxvcGVyLXJlc2VydmVkKQpAY29kZXtBTV9FTENGTEFHU30gYW5kICh1c2VyLXJl c2VydmVkKSBAY29kZXtFTENGTEFHU30gbWFrZSB2YXJpYWJsZXMKd2lsbCBiZSBwYXNzZWQgdG8g dGhlIEVtYWNzIGludm9jYXRpb24uCgpCeXRlLWNvbXBpbGVkIEVtYWNzIExpc3AgZmlsZXMgYXJl IG5vdCBwb3J0YWJsZSBhbW9uZyBhbGwgdmVyc2lvbnMgb2YKRW1hY3MsIHNvIGl0IG1ha2VzIHNl bnNlIHRvIHR1cm4gdGhpcyBvZmYgaWYgeW91IGV4cGVjdCBzaXRlcyB0byBoYXZlCm1vcmUgdGhh biBvbmUgdmVyc2lvbiBvZiBFbWFjcyBpbnN0YWxsZWQuICBGdXJ0aGVybW9yZSwgbWFueSBwYWNr YWdlcwpkbyBub3QgYWN0dWFsbHkgYmVuZWZpdCBmcm9tIGJ5dGUtY29tcGlsYXRpb24uICBTdGls bCwgd2UgcmVjb21tZW5kCnRoYXQgeW91IGJ5dGUtY29tcGlsZSB5b3VyIEVtYWNzIExpc3Agc291 cmNlcy4gIEl0IGlzIHByb2JhYmx5IGJldHRlcgpmb3Igc2l0ZXMgd2l0aCBzdHJhbmdlIHNldHVw cyB0byBjb3BlIGZvciB0aGVtc2VsdmVzIHRoYW4gdG8gbWFrZSB0aGUKaW5zdGFsbGF0aW9uIGxl c3MgbmljZSBmb3IgZXZlcnlib2R5IGVsc2UuCgpUaGVyZSBhcmUgdHdvIHdheXMgdG8gYXZvaWQg Ynl0ZS1jb21waWxpbmcuICBIaXN0b3JpY2FsbHksIHdlIGhhdmUKcmVjb21tZW5kZWQgdGhlIGZv bGxvd2luZyBjb25zdHJ1Y3QuCgpAZXhhbXBsZQpsaXNwX0xJU1AgPSBmaWxlMS5lbCBmaWxlMi5l bApFTENGSUxFUyA9CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CkBjb2Rle0VMQ0ZJTEVTfSBpcyBh biBpbnRlcm5hbCBBdXRvbWFrZSB2YXJpYWJsZSB0aGF0IG5vcm1hbGx5IGxpc3RzCmFsbCBAZmls ZXsuZWxjfSBmaWxlcyB0aGF0IG11c3QgYmUgYnl0ZS1jb21waWxlZC4gIEF1dG9tYWtlIGRlZmlu ZXMKQGNvZGV7RUxDRklMRVN9IGF1dG9tYXRpY2FsbHkgZnJvbSBAY29kZXtsaXNwX0xJU1B9LiAg RW1wdHlpbmcgdGhpcwp2YXJpYWJsZSBleHBsaWNpdGx5IHByZXZlbnRzIGJ5dGUtY29tcGlsYXRp b24uCgpTaW5jZSBBdXRvbWFrZSAxLjgsIHdlIG5vdyByZWNvbW1lbmQgdXNpbmcgQGNvZGV7bGlz cF9EQVRBfSBpbnN0ZWFkOgoKQGMgS2VlcCBpbiBzeW5jIHdpdGggcHJpbWFyeS1wcmVmaXgtY291 cGxlcy1kb2N1bWVudGVkLXZhbGlkLnNoCkBleGFtcGxlCmxpc3BfREFUQSA9IGZpbGUxLmVsIGZp bGUyLmVsCkBlbmQgZXhhbXBsZQoKTm90ZSB0aGF0IHRoZXNlIHR3byBjb25zdHJ1Y3RzIGFyZSBu b3QgZXF1aXZhbGVudC4gIEBjb2Rle19MSVNQfSB3aWxsCm5vdCBpbnN0YWxsIGEgZmlsZSBpZiBF bWFjcyBpcyBub3QgaW5zdGFsbGVkLCB3aGlsZSBAY29kZXtfREFUQX0gd2lsbAphbHdheXMgaW5z dGFsbCBpdHMgZmlsZXMuCgpAbm9kZSBnZXR0ZXh0CkBzZWN0aW9uIEdldHRleHQKCkBjaW5kZXgg R05VIEdldHRleHQgc3VwcG9ydApAY2luZGV4IEdldHRleHQgc3VwcG9ydApAY2luZGV4IFN1cHBv cnQgZm9yIEdOVSBHZXR0ZXh0CgpJZiBAY29kZXtBTV9HTlVfR0VUVEVYVH0gaXMgc2VlbiBpbiBA ZmlsZXtjb25maWd1cmUuYWN9LCB0aGVuIEF1dG9tYWtlCnR1cm5zIG9uIHN1cHBvcnQgZm9yIEdO VSBnZXR0ZXh0LCBhIG1lc3NhZ2UgY2F0YWxvZyBzeXN0ZW0gZm9yCmludGVybmF0aW9uYWxpemF0 aW9uCihAcHhyZWZ7VG9wLCAsIEludHJvZHVjdGlvbiwgZ2V0dGV4dCwgR05VIGdldHRleHQgdXRp bGl0aWVzfSkuCgpUaGUgQGNvZGV7Z2V0dGV4dH0gc3VwcG9ydCBpbiBBdXRvbWFrZSByZXF1aXJl cyB0aGUgYWRkaXRpb24gb2Ygb25lIG9yCnR3byBzdWJkaXJlY3RvcmllcyB0byB0aGUgcGFja2Fn ZTogQGZpbGV7cG99IGFuZCBwb3NzaWJseSBhbHNvIEBmaWxle2ludGx9LgpUaGUgbGF0dGVyIGlz IG5lZWRlZCBpZiBAY29kZXtBTV9HTlVfR0VUVEVYVH0gaXMgbm90IGludm9rZWQgd2l0aCB0aGUK QHNhbXB7ZXh0ZXJuYWx9IGFyZ3VtZW50LCBvciBpZiBAY29kZXtBTV9HTlVfR0VUVEVYVF9JTlRM X1NVQkRJUn0gaXMgdXNlZC4KQXV0b21ha2UgZW5zdXJlcyB0aGF0IHRoZXNlIGRpcmVjdG9yaWVz IGV4aXN0IGFuZCBhcmUgbWVudGlvbmVkIGluCkBjb2Rle1NVQkRJUlN9LgoKQG5vZGUgTGlidG9v bApAc2VjdGlvbiBMaWJ0b29sCgpBdXRvbWFrZSBwcm92aWRlcyBzdXBwb3J0IGZvciBHTlUgTGli dG9vbCAoQHB4cmVme1RvcCwgLCBJbnRyb2R1Y3Rpb24sCmxpYnRvb2wsIFRoZSBMaWJ0b29sIE1h bnVhbH0pIHdpdGggdGhlIEBjb2Rle0xUTElCUkFSSUVTfSBwcmltYXJ5LgpAeHJlZntBIFNoYXJl ZCBMaWJyYXJ5fS4KCgpAbm9kZSBKYXZhCkBzZWN0aW9uIEphdmEgYnl0ZWNvZGUgY29tcGlsYXRp b24gKGRlcHJlY2F0ZWQpCgpAY2luZGV4IEBjb2Rle19KQVZBfSBwcmltYXJ5LCBkZWZpbmVkCkBj aW5kZXggQGNvZGV7SkFWQX0gcHJpbWFyeSwgZGVmaW5lZApAY2luZGV4IFByaW1hcnkgdmFyaWFi bGUsIEBjb2Rle0pBVkF9CkBjaW5kZXggSmF2YSB0byBieXRlY29kZSwgY29tcGlsYXRpb24KQGNp bmRleCBDb21waWxhdGlvbiBvZiBKYXZhIHRvIGJ5dGVjb2RlCgpBdXRvbWFrZSBwcm92aWRlcyBz b21lIG1pbmltYWwgc3VwcG9ydCBmb3IgSmF2YSBieXRlY29kZSBjb21waWxhdGlvbiB3aXRoCnRo ZSBAY29kZXtKQVZBfSBwcmltYXJ5IChpbiBhZGRpdGlvbiB0byB0aGUgc3VwcG9ydCBmb3IgY29t cGlsaW5nIEphdmEgdG8KbmF0aXZlIG1hY2hpbmUgY29kZTsgQHB4cmVme0phdmEgU3VwcG9ydCB3 aXRoIGdjan0pLiAgTm90ZSBob3dldmVyIHRoYXQKQGVtcGh7dGhlIGludGVyZmFjZSBhbmQgbW9z dCBmZWF0dXJlcyBkZXNjcmliZWQgaGVyZSBhcmUgZGVwcmVjYXRlZH0uCkZ1dHVyZSBBdXRvbWFr ZSByZWxlYXNlcyB3aWxsIHN0cml2ZSB0byBwcm92aWRlIGEgYmV0dGVyIGFuZCBjbGVhbmVyCmlu dGVyZmFjZSwgd2hpY2ggaG93ZXZlciBAZW1waHt3b24ndCBiZSBiYWNrd2FyZC1jb21wYXRpYmxl fTsgdGhlIHByZXNlbnQKaW50ZXJmYWNlIHdpbGwgcHJvYmFibHkgYmUgcmVtb3ZlZCBhbHRvZ2V0 aGVyIHNvbWUgdGltZSBhZnRlciB0aGUKaW50cm9kdWN0aW9uIG9mIHRoZSBuZXcgaW50ZXJmYWNl IChpZiB0aGF0IGV2ZXIgbWF0ZXJpYWxpemVzKS4gIEluIGFueQpjYXNlLCB0aGUgY3VycmVudCBA Y29kZXtKQVZBfSBwcmltYXJ5IGZlYXR1cmVzIGFyZSBmcm96ZW4gYW5kIHdpbGwgbm8KbG9uZ2Vy IGJlIGRldmVsb3BlZCwgbm90IGV2ZW4gdG8gdGFrZSBidWcgZml4ZXMuCgpBbnkgQGZpbGV7Lmph dmF9IGZpbGVzIGxpc3RlZCBpbiBhIEBjb2Rle19KQVZBfSB2YXJpYWJsZSB3aWxsIGJlCmNvbXBp bGVkIHdpdGggQGNvZGV7SkFWQUN9IGF0IGJ1aWxkIHRpbWUuICBCeSBkZWZhdWx0LCBAZmlsZXsu amF2YX0KZmlsZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgZGlzdHJpYnV0aW9uOyB5b3Ugc2hv dWxkIHVzZSB0aGUKQGNvZGV7ZGlzdF99IHByZWZpeCB0byBkaXN0cmlidXRlIHRoZW0uCgpIZXJl IGlzIGEgdHlwaWNhbCBzZXR1cCBmb3IgZGlzdHJpYnV0aW5nIEBmaWxley5qYXZhfSBmaWxlcyBh bmQKaW5zdGFsbGluZyB0aGUgQGZpbGV7LmNsYXNzfSBmaWxlcyByZXN1bHRpbmcgZnJvbSB0aGVp ciBjb21waWxhdGlvbi4KCkBjIEtlZXAgaW4gc3luYyB3aXRoIHByaW1hcnktcHJlZml4LWNvdXBs ZXMtZG9jdW1lbnRlZC12YWxpZC5zaApAZXhhbXBsZQpqYXZhZGlyID0gJChkYXRhZGlyKS9qYXZh CmRpc3RfamF2YV9KQVZBID0gYS5qYXZhIGIuamF2YSBAZG90c3t9CkBlbmQgZXhhbXBsZQoKQGNp bmRleCBAY29kZXtKQVZBfSByZXN0cmljdGlvbnMKQGNpbmRleCBSZXN0cmljdGlvbnMgZm9yIEBj b2Rle0pBVkF9CgpDdXJyZW50bHkgQXV0b21ha2UgZW5mb3JjZXMgdGhlIHJlc3RyaWN0aW9uIHRo YXQgb25seSBvbmUgQGNvZGV7X0pBVkF9CnByaW1hcnkgY2FuIGJlIHVzZWQgaW4gYSBnaXZlbiBA ZmlsZXtNYWtlZmlsZS5hbX0uICBUaGUgcmVhc29uIGZvciB0aGlzCnJlc3RyaWN0aW9uIGlzIHRo YXQsIGluIGdlbmVyYWwsIGl0IGlzbid0IHBvc3NpYmxlIHRvIGtub3cgd2hpY2gKQGZpbGV7LmNs YXNzfSBmaWxlcyB3ZXJlIGdlbmVyYXRlZCBmcm9tIHdoaWNoIEBmaWxley5qYXZhfSBmaWxlcywg c28KaXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBrbm93IHdoaWNoIGZpbGVzIHRvIGluc3RhbGwg d2hlcmUuICBGb3IKaW5zdGFuY2UsIGEgQGZpbGV7LmphdmF9IGZpbGUgY2FuIGRlZmluZSBtdWx0 aXBsZSBjbGFzc2VzOyB0aGUgcmVzdWx0aW5nCkBmaWxley5jbGFzc30gZmlsZSBuYW1lcyBjYW5u b3QgYmUgcHJlZGljdGVkIHdpdGhvdXQgcGFyc2luZyB0aGUKQGZpbGV7LmphdmF9IGZpbGUuCgpU aGVyZSBhcmUgYSBmZXcgdmFyaWFibGVzIHRoYXQgYXJlIHVzZWQgd2hlbiBjb21waWxpbmcgSmF2 YSBzb3VyY2VzOgoKQHZ0YWJsZSBAY29kZQpAaXRlbSBKQVZBQwpUaGUgbmFtZSBvZiB0aGUgSmF2 YSBjb21waWxlci4gIFRoaXMgZGVmYXVsdHMgdG8gQHNhbXB7amF2YWN9LgoKQGl0ZW0gSkFWQUNG TEFHUwpUaGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgY29tcGlsZXIuICBUaGlzIGlzIGNvbnNpZGVy ZWQgdG8gYmUgYSB1c2VyCnZhcmlhYmxlIChAcHhyZWZ7VXNlciBWYXJpYWJsZXN9KS4KCkBpdGVt IEFNX0pBVkFDRkxBR1MKTW9yZSBmbGFncyB0byBwYXNzIHRvIHRoZSBKYXZhIGNvbXBpbGVyLiAg VGhpcywgYW5kIG5vdApAY29kZXtKQVZBQ0ZMQUdTfSwgc2hvdWxkIGJlIHVzZWQgd2hlbiBpdCBp cyBuZWNlc3NhcnkgdG8gcHV0IEphdmEKY29tcGlsZXIgZmxhZ3MgaW50byBAZmlsZXtNYWtlZmls ZS5hbX0uCgpAaXRlbSBKQVZBUk9PVApUaGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyBwYXNz ZWQgdG8gdGhlIEBvcHRpb257LWR9IG9wdGlvbiB0bwpAY29kZXtqYXZhY30uICBJdCBkZWZhdWx0 cyB0byBAc2FtcHskKHRvcF9idWlsZGRpcil9LgoKQGl0ZW0gQ0xBU1NQQVRIX0VOVgpUaGlzIHZh cmlhYmxlIGlzIGEgc2hlbGwgZXhwcmVzc2lvbiB0aGF0IGlzIHVzZWQgdG8gc2V0IHRoZQpAZW52 e0NMQVNTUEFUSH0gZW52aXJvbm1lbnQgdmFyaWFibGUgb24gdGhlIEBjb2Rle2phdmFjfSBjb21t YW5kIGxpbmUuCihJbiB0aGUgZnV0dXJlIHdlIHdpbGwgcHJvYmFibHkgaGFuZGxlIGNsYXNzIHBh dGggc2V0dGluZyBkaWZmZXJlbnRseS4pCkBlbmQgdnRhYmxlCgoKQG5vZGUgUHl0aG9uCkBzZWN0 aW9uIFB5dGhvbgoKQGNpbmRleCBAY29kZXtfUFlUSE9OfSBwcmltYXJ5LCBkZWZpbmVkCkBjaW5k ZXggQGNvZGV7UFlUSE9OfSBwcmltYXJ5LCBkZWZpbmVkCkBjaW5kZXggUHJpbWFyeSB2YXJpYWJs ZSwgQGNvZGV7UFlUSE9OfQpAdmluZGV4IF9QWVRIT04KCkF1dG9tYWtlIHByb3ZpZGVzIHN1cHBv cnQgZm9yIFB5dGhvbiBjb21waWxhdGlvbiB3aXRoIHRoZQpAY29kZXtQWVRIT059IHByaW1hcnku ICBBIHR5cGljYWwgc2V0dXAgaXMgdG8gY2FsbApAY29kZXtBTV9QQVRIX1BZVEhPTn0gaW4gQGZp bGV7Y29uZmlndXJlLmFjfSBhbmQgdXNlIGEgbGluZSBsaWtlIHRoaXMKaW4gQGZpbGV7TWFrZWZp bGUuYW19OgoKQGV4YW1wbGUKcHl0aG9uX1BZVEhPTiA9IHRyZWUucHkgbGVhdmUucHkKQGVuZCBl eGFtcGxlCgpQeXRob24gc291cmNlIGZpbGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZGlzdHJpYnV0 aW9uIGJ5IGRlZmF1bHQ7CnByZXBlbmQgQGNvZGV7bm9kaXN0X30gKGFzIGluIEBjb2Rle25vZGlz dF9weXRob25fUFlUSE9OfSkgdG8gb21pdAp0aGVtLgoKQGNpbmRleCBAZmlsZXsucHljfSwgQGZp bGV7LnB5b30gZmlsZXMKQXQgaW5zdGFsbCB0aW1lLCBhbnkgZmlsZXMgbGlzdGVkIGluIGEgQGNv ZGV7X1BZVEhPTn0gdmFyaWFibGUgd2lsbCBiZQpieXRlLWNvbXBpbGVkIHdpdGggQGNvbW1hbmR7 cHktY29tcGlsZX0uICBAY29tbWFuZHtweS1jb21waWxlfSBjcmVhdGVzCmJvdGggc3RhbmRhcmQg KEBmaWxley5weWN9KSBhbmQgb3B0aW1pemVkIChAZmlsZXsucHlvfSkgYnl0ZS1jb21waWxlZAp2 ZXJzaW9ucyBvZiB0aGUgc291cmNlIGZpbGVzLiAgQmVjYXVzZSBieXRlLWNvbXBpbGF0aW9uIG9j Y3VycyBhdAppbnN0YWxsIHRpbWUsIGZpbGVzIGxpc3RlZCBpbiBAY29kZXtub2luc3RfUFlUSE9O fSB3aWxsIG5vdCBiZQpjb21waWxlZC4KCkF1dG9tYWtlIHNoaXBzIHdpdGggYW4gQXV0b2NvbmYg bWFjcm8gbmFtZWQgQGNvZGV7QU1fUEFUSF9QWVRIT059IHRoYXQKZGV0ZXJtaW5lcyBzb21lIFB5 dGhvbi1yZWxhdGVkIGRpcmVjdG9yeSB2YXJpYWJsZXMgKHNlZSBiZWxvdykuICBJZgp5b3UgaGF2 ZSBjYWxsZWQgQGNvZGV7QU1fUEFUSF9QWVRIT059IGZyb20gQGZpbGV7Y29uZmlndXJlLmFjfSwg dGhlbgp5b3UgbWF5IHVzZSB0aGUgdmFyaWFibGVzCkBjIEtlZXAgaW4gc3luYyB3aXRoIHByaW1h cnktcHJlZml4LWNvdXBsZXMtZG9jdW1lbnRlZC12YWxpZC5zaApAY29kZXtweXRob25fUFlUSE9O fSBhbmQgQGNvZGV7cGtncHl0aG9uX1BZVEhPTn0gdG8gbGlzdCBQeXRob24gc291cmNlCmZpbGVz IGluIHlvdXIgQGZpbGV7TWFrZWZpbGUuYW19LCBkZXBlbmRpbmcgb24gd2hldGhlciB5b3Ugd2Fu dCB5b3VyCmZpbGVzIGluc3RhbGxlZCBpbiBAY29kZXtweXRob25kaXJ9IG9yIEBjb2Rle3BrZ3B5 dGhvbmRpcn0sCnJlc3BlY3RpdmVseS4KCkBkZWZtYWMgQU1fUEFUSF9QWVRIT04gKEBvdmFye3Zl cnNpb259LCBAb3ZhcnthY3Rpb24taWYtZm91bmR9LAogIEBvdmFye2FjdGlvbi1pZi1ub3QtZm91 bmR9KQoKU2VhcmNoIGZvciBhIFB5dGhvbiBpbnRlcnByZXRlciBvbiB0aGUgc3lzdGVtLiAgVGhp cyBtYWNybyB0YWtlcyB0aHJlZQpvcHRpb25hbCBhcmd1bWVudHMuICBUaGUgZmlyc3QgYXJndW1l bnQsIGlmIHByZXNlbnQsIGlzIHRoZSBtaW5pbXVtCnZlcnNpb24gb2YgUHl0aG9uIHJlcXVpcmVk IGZvciB0aGlzIHBhY2thZ2U6IEBjb2Rle0FNX1BBVEhfUFlUSE9OfQp3aWxsIHNraXAgYW55IFB5 dGhvbiBpbnRlcnByZXRlciB0aGF0IGlzIG9sZGVyIHRoYW4gQHZhcnt2ZXJzaW9ufS4KSWYgYW4g aW50ZXJwcmV0ZXIgaXMgZm91bmQgYW5kIHNhdGlzZmllcyBAdmFye3ZlcnNpb259LCB0aGVuCkB2 YXJ7YWN0aW9uLWlmLWZvdW5kfSBpcyBydW4uICBPdGhlcndpc2UsIEB2YXJ7YWN0aW9uLWlmLW5v dC1mb3VuZH0gaXMKcnVuLgoKSWYgQHZhcnthY3Rpb24taWYtbm90LWZvdW5kfSBpcyBub3Qgc3Bl Y2lmaWVkLCBhcyBpbiB0aGUgZm9sbG93aW5nCmV4YW1wbGUsIHRoZSBkZWZhdWx0IGlzIHRvIGFi b3J0IEBjb21tYW5ke2NvbmZpZ3VyZX06CgpAZXhhbXBsZQpBTV9QQVRIX1BZVEhPTihbMi41XSkK QGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKVGhpcyBpcyBmaW5lIHdoZW4gUHl0aG9uIGlzIGFuIGFi c29sdXRlIHJlcXVpcmVtZW50IGZvciB0aGUgcGFja2FnZS4KSWYgUHl0aG9uIEBnZXF7fSAyLjUg d2FzIG9ubHkgQGVtcGh7b3B0aW9uYWx9IGZvciB0aGUgcGFja2FnZSwKQGNvZGV7QU1fUEFUSF9Q WVRIT059IGNvdWxkIGJlIGNhbGxlZCBhcyBmb2xsb3dzLgoKQGV4YW1wbGUKQU1fUEFUSF9QWVRI T04oWzIuNV0sLCBbOl0pCkBlbmQgZXhhbXBsZQoKSWYgdGhlIEBlbnZ7UFlUSE9OfSB2YXJpYWJs ZSBpcyBzZXQgd2hlbiBAY29kZXtBTV9QQVRIX1BZVEhPTn0gaXMKY2FsbGVkLCB0aGVuIHRoYXQg d2lsbCBiZSB0aGUgb25seSBQeXRob24gaW50ZXJwcmV0ZXIgdGhhdCBpcyB0cmllZC4KCkBjb2Rl e0FNX1BBVEhfUFlUSE9OfSBjcmVhdGVzIHRoZSBmb2xsb3dpbmcgb3V0cHV0IHZhcmlhYmxlcyBi YXNlZCBvbgp0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3VuZCBkdXJpbmcgY29uZmlndXJhdGlv bjoKQGVuZCBkZWZtYWMKCkB2dGFibGUgQGNvZGUKQGl0ZW0gUFlUSE9OClRoZSBuYW1lIG9mIHRo ZSBQeXRob24gZXhlY3V0YWJsZSwgb3IgQHNhbXB7On0gaWYgbm8gc3VpdGFibGUKaW50ZXJwcmV0 ZXIgY291bGQgYmUgZm91bmQuCgpBc3N1bWluZyBAdmFye2FjdGlvbi1pZi1ub3QtZm91bmR9IGlz IHVzZWQgKG90aGVyd2lzZSBAZmlsZXsuL2NvbmZpZ3VyZX0Kd2lsbCBhYm9ydCBpZiBQeXRob24g aXMgYWJzZW50KSwgdGhlIHZhbHVlIG9mIEBjb2Rle1BZVEhPTn0gY2FuIGJlIHVzZWQKdG8gc2V0 IHVwIGEgY29uZGl0aW9uYWwgaW4gb3JkZXIgdG8gZGlzYWJsZSB0aGUgcmVsZXZhbnQgcGFydCBv ZiBhIGJ1aWxkCmFzIGZvbGxvd3MuCgpAZXhhbXBsZQpBTV9QQVRIX1BZVEhPTigsLCBbOl0pCkFN X0NPTkRJVElPTkFMKFtIQVZFX1BZVEhPTl0sIFt0ZXN0ICIkUFlUSE9OIiAhPSA6XSkKQGVuZCBl eGFtcGxlCgpAaXRlbSBQWVRIT05fVkVSU0lPTgpAdmluZGV4IHN5cy52ZXJzaW9uX2luZm8gQHJ7 UHl0aG9uIHZhcmlhYmxlfQpUaGUgUHl0aG9uIHZlcnNpb24gbnVtYmVyLCBpbiB0aGUgZm9ybSBA dmFye21ham9yfS5AdmFye21pbm9yfQooZS5nLiwgQHNhbXB7Mi41fSkuICBUaGlzIGlzIHNldCB0 byBiZSB0aGUgdmFsdWUgb2YKQHNhbXB7JyV1LiV1JyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdfS4K CkBpdGVtIFBZVEhPTl9QUkVGSVgKQGl0ZW14IFBZVEhPTl9FWEVDX1BSRUZJWApAb3BpbmRleCAt LXdpdGgtcHl0aG9uLXN5cy1wcmVmaXgKQG9waW5kZXggLS13aXRoLXB5dGhvbl9wcmVmaXgKQG9w aW5kZXggLS13aXRoLXB5dGhvbl9leGVjX3ByZWZpeApAdmluZGV4IHN5cy5wcmVmaXggQHJ7UHl0 aG9uIHZhcmlhYmxlfQpAdmluZGV4IHN5cy5leGVjX3ByZWZpeCBAcntQeXRob24gdmFyaWFibGV9 CldpdGggbm8gc3BlY2lhbCBvcHRpb25zIGdpdmVuLCB0aGVzZSBoYXZlIHZhbHVlcyBAc2FtcHsk QHtwcmVmaXhAfX0KYW5kIEBzYW1weyRAe2V4ZWNfcHJlZml4QH19LCByZXNwZWN0aXZlbHkgKHVu ZXhwYW5kZWQ7IHNlZSBiZWxvdykuCgpUaGUgQGZpbGV7Y29uZmlndXJlfSBvcHRpb25zIEBvcHRp b257LS13aXRoLXB5dGhvbl9wcmVmaXh9CmFuZCBAb3B0aW9uey0td2l0aC1weXRob25fZXhlY19w cmVmaXh9IHNldCB0aGVtIHRvIGFuIGV4cGxpY2l0IHZhbHVlLgoKVGhlIEBmaWxle2NvbmZpZ3Vy ZX0gb3B0aW9uIEBvcHRpb257LS13aXRoLXB5dGhvbi1zeXMtcHJlZml4fSBzZXQgdGhlbQp0byB0 aGUgdmFsdWVzIG9mIFB5dGhvbidzIEBzYW1we3N5cy5wcmVmaXh9IGFuZCBAc2FtcHtzeXMuZXhl Y19wcmVmaXh9CnZhcmlhYmxlcy4gIFRoZXNlIG9mdGVuIGRpZmZlciBmcm9tIEBzYW1weyRAe3By ZWZpeEB9fSBhbmQKQHNhbXB7JEB7ZXhlY19wcmVmaXhAfX0sIGUuZy4sIG9uIHBsYXRmb3JtcyBz dWNoIGFzIE1hY0B0aWV7fU9TQHRpZXt9eAood2hlcmUgUHl0aG9uIGlzIHVzdWFsbHkgaW5zdGFs bGVkIGFzIGEgRnJhbWV3b3JrKS4KCkBpdGVtIFBZVEhPTl9QTEFURk9STQpAdmluZGV4IHN5cy5w bGF0Zm9ybSBAcntQeXRob24gdmFyaWFibGV9ClRoZSBjYW5vbmljYWwgbmFtZSB1c2VkIGJ5IFB5 dGhvbiB0byBkZXNjcmliZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSwgYXMKZ2l2ZW4gYnkgQHNhbXB7 c3lzLnBsYXRmb3JtfS4gIFRoaXMgdmFsdWUgaXMgc29tZXRpbWVzIG5lZWRlZCB3aGVuCmJ1aWxk aW5nIFB5dGhvbiBleHRlbnNpb25zLgoKQGl0ZW0gcHl0aG9uZGlyCkBjaW5kZXggQGZpbGV7c2l0 ZS1wYWNrYWdlc30gUHl0aG9uIGRpcmVjdG9yeQpAY2luZGV4IEBmaWxle2Rpc3QtcGFja2FnZXN9 IFB5dGhvbiBkaXJlY3RvcnkKVGhlIHN1YmRpcmVjdG9yeSBvZiB0aGUgUHl0aG9uIGluc3RhbGwg dHJlZSBpbiB3aGljaCB0byBpbnN0YWxsIFB5dGhvbgpzY3JpcHRzLiBCeSBkZWZhdWx0IHRoaXMg aXMsIG9uIGFsbCBzeXN0ZW1zLApAZmlsZXskUFlUSE9OX1BSRUZJWC9saWIvcHl0aG9uQHZhcnt2 ZXJzaW9ufS9zaXRlLXBhY2thZ2VzfSwgd2hlcmUKQGNvZGV7JFBZVEhPTl9QUkVGSVh9IGlzIGRl c2NyaWJlZCBhYm92ZSwgYW5kIEB2YXJ7dmVyc2lvbn0gaXMgdGhlClB5dGhvbiB2ZXJzaW9uLiAg KEZvciB0aG9zZSBrbm93bGVkZ2VhYmxlIGFib3V0IFB5dGhvbiBpbnN0YWxsYXRpb24KZGV0YWls czogc3lzdGVtcyBnZW5lcmFsbHkgaGF2ZSB0aGVpciBvd24gUHl0aG9uIGluc3RhbGxhdGlvbiBz Y2hlbWUsCnN1Y2ggYXMgQGNvZGV7cG9zaXhfbG9jYWx9IG9uIERlYmlhbiBhbmQgcmVsYXRlZCAo YXMgb2YKUHl0aG9uQHRpZXt9My4xMCksIHdoaWNoIGVuZHMgdXAgdXNpbmcgYSBkaXJlY3Rvcnkg bmFtZWQKQGZpbGV7ZGlzdC1wYWNrYWdlc307IEF1dG9tYWtlIHVzZXMgdGhlIEBjb2Rle3Bvc2l4 X3ByZWZpeH0gc2NoZW1lIGFuZApAZmlsZXtzaXRlLXBhY2thZ2VzfS4pCkBjIGh0dHBzOi8vYnVn cy5nbnUub3JnLzU0NDEyIGV0IGFsLgoKQGl0ZW0gcGtncHl0aG9uZGlyClRoaXMgaXMgdGhlIGRp cmVjdG9yeSB1bmRlciBAY29kZXtweXRob25kaXJ9IHRoYXQgaXMgbmFtZWQgYWZ0ZXIgdGhlCnBh Y2thZ2UuICBUaGF0IGlzLCBpdCBpcyBAc2FtcHskKHB5dGhvbmRpcikvJChQQUNLQUdFKX0uICBJ dCBpcyBwcm92aWRlZAphcyBhIGNvbnZlbmllbmNlLgoKQGl0ZW0gcHlleGVjZGlyClRoaXMgaXMg dGhlIGRpcmVjdG9yeSB3aGVyZSBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZXMgKHNoYXJlZCBsaWJy YXJpZXMpCnNob3VsZCBiZSBpbnN0YWxsZWQuICBBbiBleHRlbnNpb24gbW9kdWxlIHdyaXR0ZW4g aW4gQyBjb3VsZCBiZSBkZWNsYXJlZAphcyBmb2xsb3dzIHRvIEF1dG9tYWtlOgoKQGMgS2VlcCBp biBzeW5jIHdpdGggcHJpbWFyeS1wcmVmaXgtY291cGxlcy1kb2N1bWVudGVkLXZhbGlkLnNoCkBl eGFtcGxlCnB5ZXhlY19MVExJQlJBUklFUyA9IHF1YXRlcm5pb24ubGEKcXVhdGVybmlvbl9sYV9T T1VSQ0VTID0gcXVhdGVybmlvbi5jIHN1cHBvcnQuYyBzdXBwb3J0LmgKcXVhdGVybmlvbl9sYV9M REZMQUdTID0gLWF2b2lkLXZlcnNpb24gLW1vZHVsZQpAZW5kIGV4YW1wbGUKCkBpdGVtIHBrZ3B5 ZXhlY2RpcgpUaGlzIGlzIGEgY29udmVuaWVuY2UgdmFyaWFibGUgdGhhdCBpcyBkZWZpbmVkIGFz CkBzYW1weyQocHlleGVjZGlyKS8kKFBBQ0tBR0UpfS4KQGVuZCB2dGFibGUKCkFsbCBvZiB0aGVz ZSBkaXJlY3RvcnkgdmFyaWFibGVzIGhhdmUgdmFsdWVzIHRoYXQgY2FuIHN0YXJ0IHdpdGggZWl0 aGVyCkBzYW1weyRAe3ByZWZpeEB9fSBvciBAc2FtcHskQHtleGVjX3ByZWZpeEB9fSwgdW5leHBh bmRlZC4gIFRoaXMgd29ya3MKZmluZSBpbiBAZmlsZXtNYWtlZmlsZX1zLCBidXQgaXQgbWFrZXMg dGhlc2UgdmFyaWFibGVzIGhhcmQgdG8gdXNlIGluCkBmaWxle2NvbmZpZ3VyZX0uICBUaGlzIGlz IG1hbmRhdGVkIGJ5IHRoZSBHTlUgY29kaW5nIHN0YW5kYXJkcywgc28KdGhhdCB0aGUgdXNlciBj YW4gcnVuIEBzYW1we21ha2UgcHJlZml4PS9mb28gaW5zdGFsbH0uICBUaGUgQXV0b2NvbmYKbWFu dWFsIGhhcyBhIHNlY3Rpb24gd2l0aCBtb3JlIGRldGFpbHMgb24gdGhpcyB0b3BpYwooQHB4cmVm e0luc3RhbGxhdGlvbiBEaXJlY3RvcnkgVmFyaWFibGVzLCAsIEluc3RhbGxhdGlvbiBEaXJlY3Rv cnkKVmFyaWFibGVzLCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0pLiAgU2VlIGFsc28g QHJlZntIYXJkLUNvZGVkCkluc3RhbGwgUGF0aHN9LgoKQG1lbnUKKiBTdXBwb3J0ZWQgUHl0aG9u IHZlcnNpb25zOjoKQGVuZCBtZW51CgpAbm9kZSBTdXBwb3J0ZWQgUHl0aG9uIHZlcnNpb25zCkBz dWJzZWN0aW9uIFN1cHBvcnRlZCB2ZXJzaW9ucwoKQXV0b21ha2UgZ3VhcmFudGVlcyByZWxlYXNl cyB3aWxsIHN1cHBvcnQgYWxsIFB5dGhvbiB2ZXJzaW9ucyB0aGF0IGFyZSBzdGlsbApzdXBwb3J0 ZWQgYnkgdGhlIFB5dGhvbiBwcm9qZWN0IGF0IHRoZSB0aW1lIG9mIHRoZSBBdXRvbWFrZSByZWxl YXNlLiAgU3VwcG9ydApmb3IgRU9MIHZlcnNpb25zIG9mIFB5dGhvbiBhcmUgbm90IGd1YXJhbnRl ZWQsIGJ1dCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgbG9uZwphcyBpdCBpcyBub3Qgb25lcm91cyB0 byBkbyBzbywgYW5kIHRoZXJlIGFyZSBsYXJnZSBzdXBwb3J0ZWQgZGlzdHJvcyBpbmNsdWRpbmcK dGhlbS4gIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgb2xkZXIgUHl0aG9uIHZlcnNpb25zLCBwbGVh c2UgdXNlIGEgcHJldmlvdXMKQXV0b21ha2UgcmVsZWFzZS4KCkhlcmUgYXJlIHRoZSBjdXJyZW50 IHN1cHBvcnQgcGxhbnMuCgpAbXVsdGl0YWJsZSB7Mi4wIC0tIDMuNX0ge1Vuc3VwcG9ydGVkfQpA aGVhZGl0ZW0gVmVyc2lvbiBAdGFiIFN0YXR1cwpAaXRlbSAwLngKQHRhYiBOb3Qgc3VwcG9ydGVk CkBpdGVtIDEueApAdGFiIE5vdCBzdXBwb3J0ZWQKQGl0ZW0gMi4wLS0yLjYKQHRhYiBVbnRlc3Rl ZCwgYnV0IHNob3VsZCB3b3JrCkBpdGVtIDIuNwpAYyBEZWJpYW4gQnVsbHNleWUgZ29lcyBFT0wg aW4gQXByIDIwMjYuCkB0YWIgU3VwcG9ydGVkICh1bnRpbCBBcHIgMjAyNikKQGl0ZW0gMy4wLS0z LjMKQHRhYiBVbnRlc3RlZCwgYnV0IHNob3VsZCB3b3JrCkBpdGVtIDMuNApAYyBVYnVudHUgVHJ1 c3R5IGdvZXMgRU9MIGluIEFwciAyMDIyLgpAdGFiIFN1cHBvcnRlZCAodW50aWwgQXByIDIwMjIp CkBpdGVtIDMuNQpAYyBVYnVudHUgWGVuaWFsIGdvZXMgRU9MIGluIEFwciAyMDI0LgpAdGFiIFN1 cHBvcnRlZCAodW50aWwgQXByIDIwMjQpCkBpdGVtIDMuNgpAYyBVYnVudHUgQmlvbmljIGdvZXMg RU9MIGluIEFwciAyMDI4LgpAdGFiIFN1cHBvcnRlZCAodW50aWwgQXByIDIwMjgpCkBpdGVtIDMu NwpAYyBEZWJpYW4gQnVzdGVyIGdvZXMgRU9MIGluIEFwciAyMDI0LgpAYyBCdXQgc2hvdWxkIHN1 cHBvcnQgYXQgbGVhc3QgYXMgbG9uZyBhcyBwcmV2aW91cyBQeXRob24gdmVyc2lvbj8KQHRhYiBT dXBwb3J0ZWQgKHVudGlsIEFwciAyMDI4KQpAaXRlbSAzLjgKQGMgVWJ1bnR1IEZvY2FsIGdvZXMg RU9MIGluIEFwciAyMDMwCkB0YWIgU3VwcG9ydGVkICh1bnRpbCBBcHIgMjAzMCkKQGl0ZW0gMy45 CkBjIERlYmlhbiBCdWxsc2V5ZSBnb2VzIEVPTCBpbiBBcHIgMjAyNi4KQGMgQnV0IHNob3VsZCBz dXBwb3J0IGF0IGxlYXN0IGFzIGxvbmcgYXMgcHJldmlvdXMgUHl0aG9uIHZlcnNpb24/CkB0YWIg U3VwcG9ydGVkICh1bnRpbCBBcHIgMjAzMCkKQGl0ZW0gMy4xMApAYyBCdXQgc2hvdWxkIHN1cHBv cnQgYXQgbGVhc3QgYXMgbG9uZyBhcyBwcmV2aW91cyBQeXRob24gdmVyc2lvbj8KQHRhYiBTdXBw b3J0ZWQgKHVudGlsIEFwciAyMDMwKQpAZW5kIG11bHRpdGFibGUKCkBub2RlIERvY3VtZW50YXRp b24KQGNoYXB0ZXIgQnVpbGRpbmcgZG9jdW1lbnRhdGlvbgoKQ3VycmVudGx5IEF1dG9tYWtlIHBy b3ZpZGVzIHN1cHBvcnQgZm9yIFRleGluZm8gYW5kIG1hbiBwYWdlcy4KCkBtZW51CiogVGV4aW5m bzo6CiogTWFuIFBhZ2VzOjoKQGVuZCBtZW51CgoKQG5vZGUgVGV4aW5mbwpAc2VjdGlvbiBUZXhp bmZvCgpAY2luZGV4IFRleGluZm8gc3VwcG9ydApAY2luZGV4IEBjb2Rle19URVhJTkZPU30gcHJp bWFyeSwgZGVmaW5lZApAY2luZGV4IEBjb2Rle1RFWElORk9TfSBwcmltYXJ5LCBkZWZpbmVkCkBj aW5kZXggUHJpbWFyeSB2YXJpYWJsZSwgQGNvZGV7VEVYSU5GT1N9CkBjaW5kZXggSFRNTCBvdXRw dXQgdXNpbmcgVGV4aW5mbwpAY2luZGV4IFBERiBvdXRwdXQgdXNpbmcgVGV4aW5mbwpAY2luZGV4 IFBTIG91dHB1dCB1c2luZyBUZXhpbmZvCkBjaW5kZXggRFZJIG91dHB1dCB1c2luZyBUZXhpbmZv CkB2aW5kZXggX1RFWElORk9TCkB2aW5kZXggaW5mb19URVhJTkZPUwoKSWYgdGhlIGN1cnJlbnQg ZGlyZWN0b3J5IGNvbnRhaW5zIFRleGluZm8gc291cmNlLCB5b3UgbXVzdCBkZWNsYXJlIGl0Cndp dGggdGhlIEBjb2Rle1RFWElORk9TfSBwcmltYXJ5LiAgR2VuZXJhbGx5IFRleGluZm8gZmlsZXMg YXJlIGNvbnZlcnRlZAppbnRvIGluZm8sIGFuZCB0aHVzIHRoZSBAY29kZXtpbmZvX1RFWElORk9T fSB2YXJpYWJsZSBpcyBtb3N0IGNvbW1vbmx5IHVzZWQKaGVyZS4gIEFueSBUZXhpbmZvIHNvdXJj ZSBmaWxlIHNob3VsZCBoYXZlIHRoZSBAZmlsZXsudGV4aX0gZXh0ZW5zaW9uLgpBdXRvbWFrZSBh bHNvIGFjY2VwdHMgQGZpbGV7LnR4aX0gb3IgQGZpbGV7LnRleGluZm99IGV4dGVuc2lvbnMsIGJ1 dCB0aGVpcgp1c2UgaXMgZGlzY291cmFnZWQgbm93LCBhbmQgd2lsbCBlbGljaXQgcnVudGltZSB3 YXJuaW5ncy4KCkF1dG9tYWtlIGdlbmVyYXRlcyBydWxlcyB0byBidWlsZCBAZmlsZXsuaW5mb30s IEBmaWxley5kdml9LApAZmlsZXsucHN9LCBAZmlsZXsucGRmfSBhbmQgQGZpbGV7Lmh0bWx9IGZp bGVzIGZyb20geW91ciBUZXhpbmZvCnNvdXJjZXMuICBGb2xsb3dpbmcgdGhlIEdOVSBDb2Rpbmcg U3RhbmRhcmRzLCBvbmx5IHRoZSBAZmlsZXsuaW5mb30KZmlsZXMgYXJlIGJ1aWx0IGJ5IEBzYW1w e21ha2UgYWxsfSBhbmQgaW5zdGFsbGVkIGJ5IEBzYW1we21ha2UKaW5zdGFsbH0gKHVubGVzcyB5 b3UgdXNlIEBvcHRpb257bm8taW5zdGFsbGluZm99LCBzZWUgYmVsb3cpLgpGdXJ0aGVybW9yZSwg QGZpbGV7LmluZm99IGZpbGVzIGFyZSBhdXRvbWF0aWNhbGx5IGRpc3RyaWJ1dGVkIHNvIHRoYXQK VGV4aW5mbyBpcyBub3QgYSBwcmVyZXF1aXNpdGUgZm9yIGluc3RhbGxpbmcgeW91ciBwYWNrYWdl LgoKSXQgaXMgd29ydGggbm90aW5nIHRoYXQsIGNvbnRyYXJ5IHRvIHdoYXQgaGFwcGVucyB3aXRo IHRoZSBvdGhlciBmb3JtYXRzLAp0aGUgZ2VuZXJhdGVkIEBmaWxley5pbmZvfSBmaWxlcyBhcmUg YnkgZGVmYXVsdCBwbGFjZWQgaW4gQGNvZGV7c3JjZGlyfQpyYXRoZXIgdGhhbiBpbiB0aGUgQGNv ZGV7YnVpbGRkaXJ9LiAgVGhpcyBjYW4gYmUgY2hhbmdlZCB3aXRoIHRoZQpAb3B0aW9ue2luZm8t aW4tYnVpbGRkaXJ9IG9wdGlvbi4KCklmIHRoZSBUZXhpbmZvIHNvdXJjZXMgYXJlIGluIGEgc3Vi ZGlyZWN0b3J5IHJlbGF0aXZlIHRvIHRoZSBNYWtlZmlsZSwgdGhlbgpAY29kZXstSX0gZmxhZ3Mg Zm9yIHRoZSBzdWJkaXJlY3RvcnksIGJvdGggaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkgYW5kIGlu IHRoZQpidWlsZCBkaXJlY3RvcnksIHdpbGwgYXV0b21hdGljYWxseSBiZSBhZGRlZC4gIFRoZXJl IGlzIG5vIG5lZWQgdG8gc3BlY2lmeQp0aGVzZSBpbiBAc2FtcHskKE1BS0VJTkZPKX0sIEBzYW1w eyQoTUFLRUlORk9GTEFHUyl9LCBldGMuCgpAY2luZGV4IEBzYW1we0BAc2V0ZmlsZW5hbWV9IFRl eGluZm8gZGlyZWN0aXZlCklmIGEgVGV4aW5mbyBzb3VyY2UgZmlsZSBjb250YWlucyBhbiBAc2Ft cHtAQHNldGZpbGVuYW1lfSBkaXJlY3RpdmUsCmFuZCBpdHMgYXJndW1lbnQgaGFzIGV4dGVuc2lv biBAc2FtcHsuaW5mb30gKG9yIG5vIGV4dGVuc2lvbiwgYnV0IHRoaXMKaXMgZGlzY291cmFnZWQp LCB0aGF0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgYmFzZW5hbWUgb2YKdGhl IFRleGluZm8gZmlsZSwgZXh0ZW5kZWQgd2l0aCBAc2FtcHsuaW5mb30uICBUaGUgTWFrZSBydWxl cwpnZW5lcmF0ZWQgYnkgQXV0b21ha2UgYXNzdW1lIHRoaXMsIGFuZCB3aWxsIG5vdCB3b3JrIGlm IHRoZQpAc2FtcHtAQHNldGZpbGVuYW1lfSBpcyBmb3Igc29tZSBvdGhlciBuYW1lLgoKQGNpbmRl eCBAZmlsZXsudGV4aS5pbn0gZmlsZSwgcmVhZApJZiBhIFRleGluZm8gc291cmNlIEBzYW1we2Zv by50ZXhpfSBpcyBub3QgcHJlc2VudCwgYnV0CkBmaWxle2Zvby50ZXhpLmlufSBleGlzdHMsIFRl eGluZm8gd2lsbCByZWFkIHRoYXQgQGZpbGV7LnRleGkuaW59IGZpbGUKZm9yIEBjb2Rle0BAc2V0 ZmlsZW5hbWV9IGFuZCBAY29kZXtAQGluY2x1ZGUgdmVyc2lvbi50ZXhpfSAoZGVzY3JpYmVkCmJl bG93KS4KClRleGluZm8gc291cmNlIGZpbGVzIG5lZWQgbm90IGJlIHByZXNlbnQgYXQgYWxsLCBh bmQgaWYgcHJlc2VudCwgbmVlZApub3QgY29udGFpbiBAY29kZXtAQHNldGZpbGVuYW1lfS4gIFRo ZW4gdGhlIGZpbGUgbmFtZSBnaXZlbiBpbiB0aGUKTWFrZWZpbGUuYW0gd2lsbCBiZSB1c2VkLgoK QHRyaW5kZXggZHZpCkB0cmluZGV4IGh0bWwKQHRyaW5kZXggcGRmCkB0cmluZGV4IHBzCkB0cmlu ZGV4IGluc3RhbGwtZHZpCkB0cmluZGV4IGluc3RhbGwtaHRtbApAdHJpbmRleCBpbnN0YWxsLXBk ZgpAdHJpbmRleCBpbnN0YWxsLXBzCk90aGVyIGRvY3VtZW50YXRpb24gZm9ybWF0cyBjYW4gYmUg YnVpbHQgb24gcmVxdWVzdCBieSBAc2FtcHttYWtlCmR2aX0sIEBzYW1we21ha2UgcHN9LCBAc2Ft cHttYWtlIHBkZn0gYW5kIEBzYW1we21ha2UgaHRtbH0sIGFuZCB0aGV5CmNhbiBiZSBpbnN0YWxs ZWQgd2l0aCBAc2FtcHttYWtlIGluc3RhbGwtZHZpfSwgQHNhbXB7bWFrZSBpbnN0YWxsLXBzfSwK QHNhbXB7bWFrZSBpbnN0YWxsLXBkZn0gYW5kIEBzYW1we21ha2UgaW5zdGFsbC1odG1sfSBleHBs aWNpdGx5LgpAc2FtcHttYWtlIHVuaW5zdGFsbH0gd2lsbCByZW1vdmUgZXZlcnl0aGluZzogdGhl IFRleGluZm8KZG9jdW1lbnRhdGlvbiBpbnN0YWxsZWQgYnkgZGVmYXVsdCBhcyB3ZWxsIGFzIGFs bCB0aGUgYWJvdmUgb3B0aW9uYWwKZm9ybWF0cy4KCkFsbCBvZiB0aGVzZSB0YXJnZXRzIGNhbiBi ZSBleHRlbmRlZCB1c2luZyBAc2FtcHstbG9jYWx9IHJ1bGVzCihAcHhyZWZ7RXh0ZW5kaW5nfSku CgpAY2luZGV4IFRleGluZm8gZmxhZywgQGNvZGV7VkVSU0lPTn0KQGNpbmRleCBUZXhpbmZvIGZs YWcsIEBjb2Rle1VQREFURUR9CkBjaW5kZXggVGV4aW5mbyBmbGFnLCBAY29kZXtFRElUSU9OfQpA Y2luZGV4IFRleGluZm8gZmxhZywgQGNvZGV7VVBEQVRFRC1NT05USH0KCkBjaW5kZXggQGNvZGV7 VkVSU0lPTn0gVGV4aW5mbyBmbGFnCkBjaW5kZXggQGNvZGV7VVBEQVRFRH0gVGV4aW5mbyBmbGFn CkBjaW5kZXggQGNvZGV7RURJVElPTn0gVGV4aW5mbyBmbGFnCkBjaW5kZXggQGNvZGV7VVBEQVRF RC1NT05USH0gVGV4aW5mbyBmbGFnCgpAY2luZGV4IEBmaWxle21kYXRlLXNofSwgQXV0b21ha2Ug aGVscGVyIHNjcmlwdAoKSWYgYSBAZmlsZXsudGV4aX0gZmlsZSBAY29kZXtAQGluY2x1ZGV9cyBA ZmlsZXt2ZXJzaW9uLnRleGl9IChhY3R1YWxseQphbnkgZmlsZSBuYW1lZCBAZmlsZXt2ZXJzLi4u dGV4aX0sIHRoZW4gdGhhdCBmaWxlIHdpbGwgYmUKYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuICBU aGUgZmlsZSBAZmlsZXt2ZXJzaW9uLnRleGl9IGRlZmluZXMgZm91cgpUZXhpbmZvIGZsYWdzIHlv dSBjYW4gcmVmZXJlbmNlIHVzaW5nIEBjb2Rle0BAdmFsdWVAe0VESVRJT05AfX0sCkBjb2Rle0BA dmFsdWVAe1ZFUlNJT05AfX0sIEBjb2Rle0BAdmFsdWVAe1VQREFURURAfX0sIGFuZApAY29kZXtA QHZhbHVlQHtVUERBVEVELU1PTlRIQH19LgoKQHRhYmxlIEBjb2RlCkBpdGVtIEVESVRJT04KQGl0 ZW14IFZFUlNJT04KQm90aCBvZiB0aGVzZSBmbGFncyBob2xkIHRoZSB2ZXJzaW9uIG51bWJlciBv ZiB5b3VyIHByb2dyYW0uICBUaGV5IGFyZQprZXB0IHNlcGFyYXRlIGZvciBoaXN0b3JpY2FsIHJl YXNvbnMuCgpAaXRlbSBVUERBVEVEClRoaXMgaG9sZHMgdGhlIGRhdGUgdGhlIHByaW1hcnkgQGZp bGV7LnRleGl9IGZpbGUgd2FzIGxhc3QgbW9kaWZpZWQuCgpAaXRlbSBVUERBVEVELU1PTlRIClRo aXMgaG9sZHMgdGhlIG5hbWUgb2YgdGhlIG1vbnRoIGluIHdoaWNoIHRoZSBwcmltYXJ5IEBmaWxl ey50ZXhpfSBmaWxlCndhcyBsYXN0IG1vZGlmaWVkLgpAZW5kIHRhYmxlCgpUaGUgQGZpbGV7dmVy c2lvbi50ZXhpfSBzdXBwb3J0IHJlcXVpcmVzIHRoZSBAY29tbWFuZHttZGF0ZS1zaH0Kc2NyaXB0 OyB0aGlzIHNjcmlwdCBpcyBzdXBwbGllZCB3aXRoIEF1dG9tYWtlIGFuZCBhdXRvbWF0aWNhbGx5 CmluY2x1ZGVkIHdoZW4gQGNvbW1hbmR7YXV0b21ha2V9IGlzIGludm9rZWQgd2l0aCB0aGUKQG9w dGlvbnstLWFkZC1taXNzaW5nfSBvcHRpb24uCgpJZiB5b3UgaGF2ZSBtdWx0aXBsZSBUZXhpbmZv IGZpbGVzLCBhbmQgeW91IHdhbnQgdG8gdXNlIHRoZQpAZmlsZXt2ZXJzaW9uLnRleGl9IGZlYXR1 cmUsIHRoZW4geW91IGhhdmUgdG8gaGF2ZSBhIHNlcGFyYXRlIHZlcnNpb24KZmlsZSBmb3IgZWFj aCBUZXhpbmZvIGZpbGUuICBBdXRvbWFrZSB3aWxsIHRyZWF0IGFueSBpbmNsdWRlIGluIGEKVGV4 aW5mbyBmaWxlIHRoYXQgbWF0Y2hlcyBAZmlsZXt2ZXJzKi50ZXhpfSBqdXN0IGxpa2UgYW4gYXV0 b21hdGljYWxseQpnZW5lcmF0ZWQgdmVyc2lvbiBmaWxlLgoKT2Z0ZW4gYW4gSW5mbyBmaWxlIGRl cGVuZHMgb24gbW9yZSB0aGFuIG9uZSBAZmlsZXsudGV4aX0gZmlsZS4gIEZvcgppbnN0YW5jZSwg aW4gR05VIEhlbGxvLCBAZmlsZXtoZWxsby50ZXhpfSBpbmNsdWRlcyB0aGUgZmlsZQpAZmlsZXtm ZGwudGV4aX0uICBZb3UgY2FuIHRlbGwgQXV0b21ha2UgYWJvdXQgdGhlc2UgZGVwZW5kZW5jaWVz IHVzaW5nCnRoZSBAY29kZXtAdmFye3RleGl9X1RFWElORk9TfSB2YXJpYWJsZS4gIEhlcmUgaXMg aG93IEdOVSBIZWxsbyBkb2VzCml0OgpAdmluZGV4IFRFWElORk9TCkB2aW5kZXggX1RFWElORk9T CgpAZXhhbXBsZQppbmZvX1RFWElORk9TID0gaGVsbG8udGV4aQpoZWxsb19URVhJTkZPUyA9IGZk bC50ZXhpCkBlbmQgZXhhbXBsZQoKQGNpbmRleCBAZmlsZXt0ZXhpbmZvLnRleH0KCkJ5IGRlZmF1 bHQsIEF1dG9tYWtlIHJlcXVpcmVzIHRoZSBmaWxlIEBmaWxle3RleGluZm8udGV4fSB0byBhcHBl YXIgaW4KdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBAZmlsZXtNYWtlZmlsZS5hbX0gZmlsZSB0 aGF0IGxpc3RzIHRoZQpAZmlsZXsudGV4aX0gZmlsZXMuICBJZiB5b3UgdXNlZCBAY29kZXtBQ19D T05GSUdfQVVYX0RJUn0gaW4KQGZpbGV7Y29uZmlndXJlLmFjfSAoQHB4cmVme0lucHV0LCAsIEZp bmRpbmcgYGNvbmZpZ3VyZScgSW5wdXQsCmF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSks IHRoZW4gQGZpbGV7dGV4aW5mby50ZXh9IGlzIGxvb2tlZCBmb3IKdGhlcmUuICBJbiBib3RoIGNh c2VzLCBAY29tbWFuZHthdXRvbWFrZX0gdGhlbiBzdXBwbGllcyBAZmlsZXt0ZXhpbmZvLnRleH0g aWYKQG9wdGlvbnstLWFkZC1taXNzaW5nfSBpcyBnaXZlbiwgYW5kIHRha2VzIGNhcmUgb2YgaXRz IGRpc3RyaWJ1dGlvbi4KSG93ZXZlciwgaWYgeW91IHNldCB0aGUgQGNvZGV7VEVYSU5GT19URVh9 IHZhcmlhYmxlIChzZWUgYmVsb3cpLAppdCBvdmVycmlkZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBm aWxlIGFuZCB0dXJucyBvZmYgaXRzIGluc3RhbGxhdGlvbgppbnRvIHRoZSBzb3VyY2UgYXMgd2Vs bCBhcyBpdHMgZGlzdHJpYnV0aW9uLgoKVGhlIG9wdGlvbiBAb3B0aW9ue25vLXRleGluZm8udGV4 fSBjYW4gYmUgdXNlZCB0byBlbGltaW5hdGUgdGhlCnJlcXVpcmVtZW50IGZvciB0aGUgZmlsZSBA ZmlsZXt0ZXhpbmZvLnRleH0uICBVc2Ugb2YgdGhlIHZhcmlhYmxlCkBjb2Rle1RFWElORk9fVEVY fSBpcyBwcmVmZXJhYmxlLCBob3dldmVyLCBiZWNhdXNlIHRoYXQgYWxsb3dzIHRoZQpAY29kZXtk dml9LCBAY29kZXtwc30sIGFuZCBAY29kZXtwZGZ9IHRhcmdldHMgdG8gc3RpbGwgd29yay4KCkBj aW5kZXggT3B0aW9uLCBAY29kZXtuby1pbnN0YWxsaW5mb30KQGNpbmRleCBUYXJnZXQsIEBjb2Rl e2luc3RhbGwtaW5mb30KQGNpbmRleCBAY29kZXtpbnN0YWxsLWluZm99IHRhcmdldApAY2luZGV4 IEBjb2Rle25vLWluc3RhbGxpbmZvfSBvcHRpb24KCkBvcGluZGV4IG5vLWluc3RhbGxpbmZvCkB0 cmluZGV4IGluc3RhbGwtaW5mbwoKQXV0b21ha2UgZ2VuZXJhdGVzIGFuIEBjb2Rle2luc3RhbGwt aW5mb30gcnVsZTsgc29tZSBwZW9wbGUgYXBwYXJlbnRseQp1c2UgdGhpcy4gIEJ5IGRlZmF1bHQs IGluZm8gcGFnZXMgYXJlIGluc3RhbGxlZCBieSBAc2FtcHttYWtlCmluc3RhbGx9LCBzbyBydW5u aW5nIEBjb2Rle21ha2UgaW5zdGFsbC1pbmZvfSBpcyBwb2ludGxlc3MuICBUaGlzIGNhbgpiZSBw cmV2ZW50ZWQgdmlhIHRoZSBAY29kZXtuby1pbnN0YWxsaW5mb30gb3B0aW9uLiAgSW4gdGhpcyBj YXNlLApAZmlsZXsuaW5mb30gZmlsZXMgYXJlIG5vdCBpbnN0YWxsZWQgYnkgZGVmYXVsdCwgYW5k IHVzZXIgbXVzdApyZXF1ZXN0IHRoaXMgZXhwbGljaXRseSB1c2luZyBAc2FtcHttYWtlIGluc3Rh bGwtaW5mb30uCgpAdmluZGV4IEFNX1VQREFURV9JTkZPX0RJUgpCeSBkZWZhdWx0LCBAY29kZXtt YWtlIGluc3RhbGwtaW5mb30gYW5kIEBjb2Rle21ha2UgdW5pbnN0YWxsLWluZm99CndpbGwgdHJ5 IHRvIHJ1biB0aGUgQGNvbW1hbmR7aW5zdGFsbC1pbmZvfSBwcm9ncmFtIChpZiBhdmFpbGFibGUp IHRvCnVwZGF0ZSAob3IgY3JlYXRlL3JlbW92ZSkgdGhlIEBmaWxle0Bjb2RleyRAe2luZm9kaXJA fX0vZGlyfSBpbmRleC4KSWYgdGhpcyBpcyB1bmRlc2lyZWQsIGl0IGNhbiBiZSBwcmV2ZW50ZWQg YnkgZXhwb3J0aW5nIHRoZQpAY29kZXtBTV9VUERBVEVfSU5GT19ESVJ9IHZhcmlhYmxlIHRvICJA Y29kZXtub30iLgoKVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgYXJlIHVzZWQgYnkgdGhlIFRleGlu Zm8gYnVpbGQgcnVsZXMuCgpAdnRhYmxlIEBjb2RlCkBpdGVtIE1BS0VJTkZPClRoZSBuYW1lIG9m IHRoZSBwcm9ncmFtIGludm9rZWQgdG8gYnVpbGQgQGZpbGV7LmluZm99IGZpbGVzLiAgVGhpcwp2 YXJpYWJsZSBpcyBkZWZpbmVkIGJ5IEF1dG9tYWtlLiAgSWYgdGhlIEBjb21tYW5ke21ha2VpbmZv fSBwcm9ncmFtIGlzCmZvdW5kIG9uIHRoZSBzeXN0ZW0gdGhlbiBpdCB3aWxsIGJlIHVzZWQgYnkg ZGVmYXVsdDsgb3RoZXJ3aXNlCkBjb21tYW5ke21pc3Npbmd9IHdpbGwgYmUgdXNlZCBpbnN0ZWFk LgoKQGl0ZW0gTUFLRUlORk9IVE1MClRoZSBjb21tYW5kIGludm9rZWQgdG8gYnVpbGQgQGZpbGV7 Lmh0bWx9IGZpbGVzLiAgQXV0b21ha2UKZGVmaW5lcyB0aGlzIHRvIEBzYW1weyQoTUFLRUlORk8p IC0taHRtbH0uCgpAaXRlbSBNQUtFSU5GT0ZMQUdTClVzZXIgZmxhZ3MgcGFzc2VkIHRvIGVhY2gg aW52b2NhdGlvbiBvZiBAc2FtcHskKE1BS0VJTkZPKX0gYW5kCkBzYW1weyQoTUFLRUlORk9IVE1M KX0uICBUaGlzIHVzZXIgdmFyaWFibGUgKEBweHJlZntVc2VyIFZhcmlhYmxlc30pIGlzCm5vdCBl eHBlY3RlZCB0byBiZSBkZWZpbmVkIGluIGFueSBAZmlsZXtNYWtlZmlsZX07IGl0IGNhbiBiZSB1 c2VkIGJ5CnVzZXJzIHRvIHBhc3MgZXh0cmEgZmxhZ3MgdG8gc3VpdCB0aGVpciBuZWVkcy4KCkBp dGVtIEFNX01BS0VJTkZPRkxBR1MKQGl0ZW14IEFNX01BS0VJTkZPSFRNTEZMQUdTCkBpdGVteCBB TV9URVhJMkZMQUdTCk1haW50YWluZXIgZmxhZ3MgcGFzc2VkIHRvIGVhY2ggQGNvbW1hbmR7bWFr ZWluZm99IGludm9jYXRpb24uICBVbmxpa2UKQGNvZGV7TUFLRUlORk9GTEFHU30sIHRoZXNlIHZh cmlhYmxlcyBhcmUgbWVhbnQgdG8gYmUgZGVmaW5lZCBieQptYWludGFpbmVycyBpbiBAZmlsZXtN YWtlZmlsZS5hbX0uICBAc2FtcHskKEFNX01BS0VJTkZPRkxBR1MpfSBpcwpwYXNzZWQgdG8gQGNv ZGV7bWFrZWluZm99IHdoZW4gYnVpbGRpbmcgQGZpbGV7LmluZm99IGZpbGVzOwpAc2FtcHskKEFN X01BS0VJTkZPSFRNTEZMQUdTKX0gaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIEBmaWxley5odG1sfQpm aWxlczsgYW5kIEBzYW1weyQoQU1fVEVYSTJGTEFHUyl9IGlzIHVzZWQgd2hlbiBidWlsZGluZyBA ZmlsZXsuZHZpfSBhbmQKQGZpbGV7LnBkZn0gZmlsZXMuCgpAYyBLZWVwIGluIHN5bmMgd2l0aCB0 eGluZm8tbWFueS1vdXRwdXQtZm9ybWF0cy5zaApGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcg c2V0dGluZyBjYW4gYmUgdXNlZCB0byBvYnRhaW4gb25lIHNpbmdsZQpAZmlsZXsuaHRtbH0gZmls ZSBwZXIgbWFudWFsLCB3aXRob3V0IG5vZGUgc2VwYXJhdG9ycy4KQGV4YW1wbGUKQU1fTUFLRUlO Rk9IVE1MRkxBR1MgPSAtLW5vLWhlYWRlcnMgLS1uby1zcGxpdApAZW5kIGV4YW1wbGUKCkBjb2Rl e0FNX01BS0VJTkZPSFRNTEZMQUdTfSBkZWZhdWx0cyB0byBAc2FtcHskKEFNX01BS0VJTkZPRkxB R1MpfS4KVGhpcyBtZWFucyB0aGF0IGRlZmluaW5nIEBjb2Rle0FNX01BS0VJTkZPRkxBR1N9IHdp dGhvdXQgZGVmaW5pbmcKQGNvZGV7QU1fTUFLRUlORk9IVE1MRkxBR1N9IHdpbGwgaW1wYWN0IGJ1 aWxkcyBvZiBib3RoIEBmaWxley5pbmZvfQphbmQgQGZpbGV7Lmh0bWx9IGZpbGVzLgoKQGl0ZW0g VEVYSTJEVkkKVGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQgdGhhdCBjb252ZXJ0cyBhIEBmaWxley50 ZXhpfSBmaWxlIGludG8gYQpAZmlsZXsuZHZpfSBmaWxlLiAgVGhpcyBkZWZhdWx0cyB0byBAc2Ft cHt0ZXhpMmR2aX0sIGEgc2NyaXB0IHRoYXQgc2hpcHMKd2l0aCB0aGUgVGV4aW5mbyBwYWNrYWdl LgoKQGl0ZW0gVEVYSTJQREYKVGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQgdGhhdCB0cmFuc2xhdGVz IGEgQGZpbGV7LnRleGl9IGZpbGUgaW50byBhCkBmaWxley5wZGZ9IGZpbGUuICBUaGlzIGRlZmF1 bHRzIHRvIEBzYW1weyQoVEVYSTJEVkkpIC0tcGRmIC0tYmF0Y2h9LgoKQGl0ZW0gRFZJUFMKVGhl IG5hbWUgb2YgdGhlIGNvbW1hbmQgdGhhdCBidWlsZHMgYSBAZmlsZXsucHN9IGZpbGUgb3V0IG9m IGEKQGZpbGV7LmR2aX0gZmlsZS4gIFRoaXMgZGVmYXVsdHMgdG8gQHNhbXB7ZHZpcHN9LgoKQGl0 ZW0gVEVYSU5GT19URVgKSWYgeW91ciBwYWNrYWdlIGhhcyBUZXhpbmZvIGZpbGVzIGluIG1hbnkg ZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZQp2YXJpYWJsZSBAY29kZXtURVhJTkZPX1RFWH0g dG8gdGVsbCBBdXRvbWFrZSB3aGVyZSB0byBmaW5kIHRoZSBjYW5vbmljYWwKQGZpbGV7dGV4aW5m by50ZXh9IGZvciB5b3VyIHBhY2thZ2UuICBUaGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBzaG91 bGQKYmUgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgY3VycmVudCBAZmlsZXtNYWtlZmlsZS5h bX0gdG8KQGZpbGV7dGV4aW5mby50ZXh9OgoKQGV4YW1wbGUKVEVYSU5GT19URVggPSAuLi9kb2Mv dGV4aW5mby50ZXgKQGVuZCBleGFtcGxlCkBlbmQgdnRhYmxlCgoKQG5vZGUgTWFuIFBhZ2VzCkBz ZWN0aW9uIE1hbiBQYWdlcwoKQGNpbmRleCBAY29kZXtfTUFOU30gcHJpbWFyeSwgZGVmaW5lZApA Y2luZGV4IEBjb2Rle01BTlN9IHByaW1hcnksIGRlZmluZWQKQGNpbmRleCBQcmltYXJ5IHZhcmlh YmxlLCBAY29kZXtNQU5TfQoKQHZpbmRleCBfTUFOUwpAdmluZGV4IG1hbl9NQU5TCkEgcGFja2Fn ZSBjYW4gYWxzbyBpbmNsdWRlIG1hbiBwYWdlcyAoYnV0IHNlZSB0aGUgR05VIHN0YW5kYXJkcyBv biB0aGlzCm1hdHRlciwgQHJlZntNYW4gUGFnZXMsICwgLCBzdGFuZGFyZHMsIFRoZSBHTlUgQ29k aW5nIFN0YW5kYXJkc30uKSAgTWFuCnBhZ2VzIGFyZSBkZWNsYXJlZCB1c2luZyB0aGUgQGNvZGV7 TUFOU30gcHJpbWFyeS4gIEdlbmVyYWxseSB0aGUKQGNvZGV7bWFuX01BTlN9IHZhcmlhYmxlIGlz IHVzZWQuICBNYW4gcGFnZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkIGluCnRoZSBjb3Jy ZWN0IHN1YmRpcmVjdG9yeSBvZiBAY29kZXttYW5kaXJ9LCBiYXNlZCBvbiB0aGUgZmlsZSBleHRl bnNpb24uCgpGaWxlIGV4dGVuc2lvbnMgc3VjaCBhcyBAZmlsZXsuMWN9IGFyZSBoYW5kbGVkIGJ5 IGxvb2tpbmcgZm9yIHRoZSB2YWxpZApwYXJ0IG9mIHRoZSBleHRlbnNpb24gYW5kIHVzaW5nIHRo YXQgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0CnN1YmRpcmVjdG9yeSBvZiBAY29kZXttYW5kaXJ9 LiAgVmFsaWQgc2VjdGlvbiBuYW1lcyBhcmUgdGhlIGRpZ2l0cwpAc2FtcHswfSB0aHJvdWdoIEBz YW1wezl9LCBhbmQgdGhlIGxldHRlcnMgQHNhbXB7bH0gYW5kIEBzYW1we259LgoKU29tZXRpbWVz IGRldmVsb3BlcnMgcHJlZmVyIHRvIG5hbWUgYSBtYW4gcGFnZSBzb21ldGhpbmcgbGlrZQpAZmls ZXtmb28ubWFufSBpbiB0aGUgc291cmNlLCBhbmQgdGhlbiByZW5hbWUgaXQgdG8gaGF2ZSB0aGUg Y29ycmVjdApzdWZmaXgsIGZvciBleGFtcGxlIEBmaWxle2Zvby4xfSwgd2hlbiBpbnN0YWxsaW5n IHRoZSBmaWxlLiAgQXV0b21ha2UKYWxzbyBzdXBwb3J0cyB0aGlzIG1vZGUuICBGb3IgYSB2YWxp ZCBzZWN0aW9uIG5hbWVkIEB2YXJ7c2VjdGlvbn0sCnRoZXJlIGlzIGEgY29ycmVzcG9uZGluZyBk aXJlY3RvcnkgbmFtZWQgQHNhbXB7bWFuQHZhcntzZWN0aW9ufWRpcn0sCmFuZCBhIGNvcnJlc3Bv bmRpbmcgQGNvZGV7X01BTlN9IHZhcmlhYmxlLiAgRmlsZXMgbGlzdGVkIGluIHN1Y2ggYQp2YXJp YWJsZSBhcmUgaW5zdGFsbGVkIGluIHRoZSBpbmRpY2F0ZWQgc2VjdGlvbi4gIElmIHRoZSBmaWxl IGFscmVhZHkKaGFzIGEgdmFsaWQgc3VmZml4LCB0aGVuIGl0IGlzIGluc3RhbGxlZCBhcy1pczsg b3RoZXJ3aXNlIHRoZSBmaWxlCnN1ZmZpeCBpcyBjaGFuZ2VkIHRvIG1hdGNoIHRoZSBzZWN0aW9u LgoKRm9yIGluc3RhbmNlLCBjb25zaWRlciB0aGlzIGV4YW1wbGU6CkBleGFtcGxlCm1hbjFfTUFO UyA9IHJlbmFtZS5tYW4gdGhlc2FtZS4xIGFsc290aGVzYW1lLjFjCkBlbmQgZXhhbXBsZQoKQG5v aW5kZW50CkluIHRoaXMgY2FzZSwgQGZpbGV7cmVuYW1lLm1hbn0gd2lsbCBiZSByZW5hbWVkIHRv IEBmaWxle3JlbmFtZS4xfSB3aGVuCmluc3RhbGxlZCwgYnV0IHRoZSBvdGhlciBmaWxlcyB3aWxs IGtlZXAgdGhlaXIgbmFtZXMuCgpAY2luZGV4IFRhcmdldCwgQGNvZGV7aW5zdGFsbC1tYW59CkBj aW5kZXggT3B0aW9uLCBAb3B0aW9ue25vLWluc3RhbGxtYW59CkBjaW5kZXggQGNvZGV7aW5zdGFs bC1tYW59IHRhcmdldApAY2luZGV4IEBvcHRpb257bm8taW5zdGFsbG1hbn0gb3B0aW9uCkBvcGlu ZGV4IG5vLWluc3RhbGxtYW4KQHRyaW5kZXggaW5zdGFsbC1tYW4KCkJ5IGRlZmF1bHQsIG1hbiBw YWdlcyBhcmUgaW5zdGFsbGVkIGJ5IEBzYW1we21ha2UgaW5zdGFsbH0uICBIb3dldmVyLApzaW5j ZSB0aGUgR05VIHByb2plY3QgZG9lcyBub3QgcmVxdWlyZSBtYW4gcGFnZXMsIG1hbnkgbWFpbnRh aW5lcnMgZG8Kbm90IGV4cGVuZCBlZmZvcnQgdG8ga2VlcCB0aGUgbWFuIHBhZ2VzIHVwIHRvIGRh dGUuICBJbiB0aGVzZSBjYXNlcywgdGhlCkBvcHRpb257bm8taW5zdGFsbG1hbn0gb3B0aW9uIHdp bGwgcHJldmVudCB0aGUgbWFuIHBhZ2VzIGZyb20gYmVpbmcKaW5zdGFsbGVkIGJ5IGRlZmF1bHQu ICBUaGUgdXNlciBjYW4gc3RpbGwgZXhwbGljaXRseSBpbnN0YWxsIHRoZW0gdmlhCkBzYW1we21h a2UgaW5zdGFsbC1tYW59LgoKRm9yIGZhc3QgaW5zdGFsbGF0aW9uLCB3aXRoIG1hbnkgZmlsZXMg aXQgaXMgcHJlZmVyYWJsZSB0byB1c2UKQHNhbXB7bWFuQHZhcntzZWN0aW9ufV9NQU5TfSBvdmVy IEBzYW1we21hbl9NQU5TfSBhcyB3ZWxsIGFzIGZpbGVzIHRoYXQKZG8gbm90IG5lZWQgdG8gYmUg cmVuYW1lZC4KCk1hbiBwYWdlcyBhcmUgbm90IGN1cnJlbnRseSBjb25zaWRlcmVkIHRvIGJlIHNv dXJjZSwgYmVjYXVzZSBpdCBpcyBub3QKdW5jb21tb24gZm9yIG1hbiBwYWdlcyB0byBiZSBhdXRv bWF0aWNhbGx5IGdlbmVyYXRlZC4gIFRoZXJlZm9yZSB0aGV5CmFyZSBub3QgYXV0b21hdGljYWxs eSBpbmNsdWRlZCBpbiB0aGUgZGlzdHJpYnV0aW9uLiAgSG93ZXZlciwgdGhpcyBjYW4KYmUgY2hh bmdlZCBieSB1c2Ugb2YgdGhlIEBjb2Rle2Rpc3RffSBwcmVmaXguICBGb3IgaW5zdGFuY2UgaGVy ZSBpcwpob3cgdG8gZGlzdHJpYnV0ZSBhbmQgaW5zdGFsbCB0aGUgdHdvIG1hbiBwYWdlcyBvZiBH TlUgQGNvbW1hbmR7Y3Bpb30KKHdoaWNoIGluY2x1ZGVzIGJvdGggVGV4aW5mbyBkb2N1bWVudGF0 aW9uIGFuZCBtYW4gcGFnZXMpOgoKQGV4YW1wbGUKZGlzdF9tYW5fTUFOUyA9IGNwaW8uMSBtdC4x CkBlbmQgZXhhbXBsZQoKVGhlIEBjb2Rle25vYmFzZV99IHByZWZpeCBpcyBtZWFuaW5nbGVzcyBm b3IgbWFuIHBhZ2VzIGFuZCBpcwpkaXNhbGxvd2VkLgoKQHZpbmRleCBub3RyYW5zXwpAY2luZGV4 IEBjb2Rle25vdHJhbnNffSBwcmVmaXgKQGNpbmRleCBNYW4gcGFnZSByZW5hbWluZywgYXZvaWRp bmcKQGNpbmRleCBBdm9pZGluZyBtYW4gcGFnZSByZW5hbWluZwoKRXhlY3V0YWJsZXMgYW5kIG1h bnBhZ2VzIG1heSBiZSByZW5hbWVkIHVwb24gaW5zdGFsbGF0aW9uCihAcHhyZWZ7UmVuYW1pbmd9 KS4gIEZvciBtYW5wYWdlcyB0aGlzIGNhbiBiZSBhdm9pZGVkIGJ5IHVzZSBvZiB0aGUKQGNvZGV7 bm90cmFuc199IHByZWZpeC4gIEZvciBpbnN0YW5jZSwgc3VwcG9zZSBhbiBleGVjdXRhYmxlIEBz YW1we2Zvb30KYWxsb3dpbmcgdG8gYWNjZXNzIGEgbGlicmFyeSBmdW5jdGlvbiBAc2FtcHtmb299 IGZyb20gdGhlIGNvbW1hbmQgbGluZS4KVGhlIHdheSB0byBhdm9pZCByZW5hbWluZyBvZiB0aGUg QGZpbGV7Zm9vLjN9IG1hbnBhZ2UgaXM6CgpAZXhhbXBsZQptYW5fTUFOUyA9IGZvby4xCm5vdHJh bnNfbWFuX01BTlMgPSBmb28uMwpAZW5kIGV4YW1wbGUKCkBjaW5kZXggQGNvZGV7bm90cmFuc199 IGFuZCBAY29kZXtkaXN0X30gb3IgQGNvZGV7bm9kaXN0X30KQGNpbmRleCBAY29kZXtkaXN0X30g YW5kIEBjb2Rle25vdHJhbnNffQpAY2luZGV4IEBjb2Rle25vZGlzdF99IGFuZCBAY29kZXtub3Ry YW5zX30KCkBzYW1we25vdHJhbnNffSBtdXN0IGJlIHNwZWNpZmllZCBmaXJzdCB3aGVuIHVzZWQg aW4gY29uanVuY3Rpb24gd2l0aAplaXRoZXIgQHNhbXB7ZGlzdF99IG9yIEBzYW1we25vZGlzdF99 IChAcHhyZWZ7RmluZS1ncmFpbmVkIERpc3RyaWJ1dGlvbgpDb250cm9sfSkuICBGb3IgaW5zdGFu Y2U6CgpAZXhhbXBsZQpub3RyYW5zX2Rpc3RfbWFuM19NQU5TID0gYmFyLjMKQGVuZCBleGFtcGxl CgpAbm9kZSBJbnN0YWxsCkBjaGFwdGVyIFdoYXQgR2V0cyBJbnN0YWxsZWQKCkBjaW5kZXggSW5z dGFsbGF0aW9uIHN1cHBvcnQKQGNpbmRleCBAc2FtcHttYWtlIGluc3RhbGx9IHN1cHBvcnQKCk5h dHVyYWxseSwgQXV0b21ha2UgaGFuZGxlcyB0aGUgZGV0YWlscyBvZiBpbnN0YWxsaW5nIHlvdXIg cHJvZ3JhbQpvbmNlIGl0IGhhcyBiZWVuIGJ1aWx0LiAgQWxsIGZpbGVzIG5hbWVkIGJ5IHRoZSB2 YXJpb3VzIHByaW1hcmllcyBhcmUKYXV0b21hdGljYWxseSBpbnN0YWxsZWQgaW4gdGhlIGFwcHJv cHJpYXRlIHBsYWNlcyB3aGVuIHRoZSB1c2VyIHJ1bnMKQHNhbXB7bWFrZSBpbnN0YWxsfS4KCkBt ZW51CiogQmFzaWNzIG9mIEluc3RhbGxhdGlvbjo6ICAgICAgV2hhdCBnZXRzIGluc3RhbGxlZCB3 aGVyZQoqIFRoZSBUd28gUGFydHMgb2YgSW5zdGFsbDo6ICAgIEluc3RhbGxpbmcgZGF0YSBhbmQg cHJvZ3JhbXMgc2VwYXJhdGVseQoqIEV4dGVuZGluZyBJbnN0YWxsYXRpb246OiAgICAgIEFkZGlu ZyB5b3VyIG93biBydWxlcyBmb3IgaW5zdGFsbGF0aW9uCiogU3RhZ2VkIEluc3RhbGxzOjogICAg ICAgICAgICAgSW5zdGFsbGF0aW9uIGluIGEgdGVtcG9yYXJ5IGxvY2F0aW9uCiogSW5zdGFsbCBS dWxlcyBmb3IgdGhlIFVzZXI6OiAgVXNlZnVsIGFkZGl0aW9uYWwgcnVsZXMKQGVuZCBtZW51CgpA bm9kZSBCYXNpY3Mgb2YgSW5zdGFsbGF0aW9uCkBzZWN0aW9uIEJhc2ljcyBvZiBJbnN0YWxsYXRp b24KCkEgZmlsZSBuYW1lZCBpbiBhIHByaW1hcnkgaXMgaW5zdGFsbGVkIGJ5IGNvcHlpbmcgdGhl IGJ1aWx0IGZpbGUgaW50bwp0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5LiAgVGhlIGJhc2UgbmFt ZSBvZiB0aGUgZmlsZSBpcyB1c2VkIHdoZW4KaW5zdGFsbGluZy4KCkBleGFtcGxlCmJpbl9QUk9H UkFNUyA9IGhlbGxvIHN1YmRpci9nb29kYnllCkBlbmQgZXhhbXBsZQoKSW4gdGhpcyBleGFtcGxl LCBib3RoIEBzYW1we2hlbGxvfSBhbmQgQHNhbXB7Z29vZGJ5ZX0gd2lsbCBiZSBpbnN0YWxsZWQK aW4gQHNhbXB7JChiaW5kaXIpfS4KClNvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gYXZvaWQgdGhl IGJhc2VuYW1lIHN0ZXAgYXQgaW5zdGFsbCB0aW1lLiAgRm9yCmluc3RhbmNlLCB5b3UgbWlnaHQg aGF2ZSBhIG51bWJlciBvZiBoZWFkZXIgZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMgb2YKdGhlIHNv dXJjZSB0cmVlIHRoYXQgYXJlIGxhaWQgb3V0IHByZWNpc2VseSBob3cgeW91IHdhbnQgdG8gaW5z dGFsbAp0aGVtLiAgSW4gdGhpcyBzaXR1YXRpb24geW91IGNhbiB1c2UgdGhlIEBjb2Rle25vYmFz ZV99IHByZWZpeCB0bwpzdXBwcmVzcyB0aGUgYmFzZSBuYW1lIHN0ZXAuICBGb3IgZXhhbXBsZToK CkBleGFtcGxlCm5vYmFzZV9pbmNsdWRlX0hFQURFUlMgPSBzdGRpby5oIHN5cy90eXBlcy5oCkBl bmQgZXhhbXBsZQoKQG5vaW5kZW50CndpbGwgaW5zdGFsbCBAZmlsZXtzdGRpby5ofSBpbiBAc2Ft cHskKGluY2x1ZGVkaXIpfSBhbmQgQGZpbGV7dHlwZXMuaH0KaW4gQHNhbXB7JChpbmNsdWRlZGly KS9zeXN9LgoKRm9yIG1vc3QgZmlsZSB0eXBlcywgQXV0b21ha2Ugd2lsbCBpbnN0YWxsIG11bHRp cGxlIGZpbGVzIGF0IG9uY2UsIHdoaWxlCmF2b2lkaW5nIGNvbW1hbmQgbGluZSBsZW5ndGggaXNz dWVzIChAcHhyZWZ7TGVuZ3RoIExpbWl0YXRpb25zfSkuICBTaW5jZQpzb21lIEBjb21tYW5ke2lu c3RhbGx9IHByb2dyYW1zIHdpbGwgbm90IGluc3RhbGwgdGhlIHNhbWUgZmlsZSB0d2ljZSBpbgpv bmUgaW52b2NhdGlvbiwgeW91IG1heSBuZWVkIHRvIGVuc3VyZSB0aGF0IGZpbGUgbGlzdHMgYXJl IHVuaXF1ZSB3aXRoaW4Kb25lIHZhcmlhYmxlIHN1Y2ggYXMgQHNhbXB7bm9iYXNlX2luY2x1ZGVf SEVBREVSU30gYWJvdmUuCgpZb3Ugc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBvcmRlciBpbiB3aGlj aCBmaWxlcyBsaXN0ZWQgaW4gb25lIHZhcmlhYmxlCmFyZSBpbnN0YWxsZWQuICBMaWtld2lzZSwg dG8gY2F0ZXIgZm9yIHBhcmFsbGVsIG1ha2UsIHlvdSBzaG91bGQgbm90CnJlbHkgb24gYW55IHBh cnRpY3VsYXIgZmlsZSBpbnN0YWxsYXRpb24gb3JkZXIgZXZlbiBhbW9uZyBkaWZmZXJlbnQKZmls ZSB0eXBlcyAobGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGFuIGV4Y2VwdGlvbiBoZXJlKS4KCgpA bm9kZSBUaGUgVHdvIFBhcnRzIG9mIEluc3RhbGwKQHNlY3Rpb24gVGhlIFR3byBQYXJ0cyBvZiBJ bnN0YWxsCgpBdXRvbWFrZSBnZW5lcmF0ZXMgc2VwYXJhdGUgQGNvZGV7aW5zdGFsbC1kYXRhfSBh bmQgQGNvZGV7aW5zdGFsbC1leGVjfQpydWxlcywgaW4gY2FzZSB0aGUgaW5zdGFsbGVyIGlzIGlu c3RhbGxpbmcgb24gbXVsdGlwbGUgbWFjaGluZXMgdGhhdApzaGFyZSBkaXJlY3Rvcnkgc3RydWN0 dXJlLS0tdGhlc2UgdGFyZ2V0cyBhbGxvdyB0aGUgbWFjaGluZS1pbmRlcGVuZGVudApwYXJ0cyB0 byBiZSBpbnN0YWxsZWQgb25seSBvbmNlLiAgQGNvZGV7aW5zdGFsbC1leGVjfSBpbnN0YWxscwpw bGF0Zm9ybS1kZXBlbmRlbnQgZmlsZXMsIGFuZCBAY29kZXtpbnN0YWxsLWRhdGF9IGluc3RhbGxz CnBsYXRmb3JtLWluZGVwZW5kZW50IGZpbGVzLiAgVGhlIEBjb2Rle2luc3RhbGx9IHRhcmdldCBk ZXBlbmRzIG9uIGJvdGgKb2YgdGhlc2UgdGFyZ2V0cy4gIFdoaWxlIEF1dG9tYWtlIHRyaWVzIHRv IGF1dG9tYXRpY2FsbHkgc2VncmVnYXRlCm9iamVjdHMgaW50byB0aGUgY29ycmVjdCBjYXRlZ29y eSwgdGhlIEBmaWxle01ha2VmaWxlLmFtfSBhdXRob3IgaXMsIGluCnRoZSBlbmQsIHJlc3BvbnNp YmxlIGZvciBtYWtpbmcgc3VyZSB0aGlzIGlzIGRvbmUgY29ycmVjdGx5LgpAdHJpbmRleCBpbnN0 YWxsLWRhdGEKQHRyaW5kZXggaW5zdGFsbC1leGVjCkB0cmluZGV4IGluc3RhbGwKQGNpbmRleCBJ bnN0YWxsLCB0d28gcGFydHMgb2YKClZhcmlhYmxlcyB1c2luZyB0aGUgc3RhbmRhcmQgZGlyZWN0 b3J5IHByZWZpeGVzIEBzYW1we2RhdGF9LApAc2FtcHtpbmZvfSwgQHNhbXB7bWFufSwgQHNhbXB7 aW5jbHVkZX0sIEBzYW1we29sZGluY2x1ZGV9LApAc2FtcHtwa2dkYXRhfSwgb3IgQHNhbXB7cGtn aW5jbHVkZX0gYXJlIGluc3RhbGxlZCBieQpAY29kZXtpbnN0YWxsLWRhdGF9LgoKVmFyaWFibGVz IHVzaW5nIHRoZSBzdGFuZGFyZCBkaXJlY3RvcnkgcHJlZml4ZXMgQHNhbXB7YmlufSwKQHNhbXB7 c2Jpbn0sIEBzYW1we2xpYmV4ZWN9LCBAc2FtcHtzeXNjb25mfSwgQHNhbXB7bG9jYWxzdGF0ZX0s CkBzYW1we2xpYn0sIG9yIEBzYW1we3BrZ2xpYn0gYXJlIGluc3RhbGxlZCBieSBAY29kZXtpbnN0 YWxsLWV4ZWN9LgoKRm9yIGluc3RhbmNlLCBAY29kZXtkYXRhX0RBVEF9IGZpbGVzIGFyZSBpbnN0 YWxsZWQgYnkgQGNvZGV7aW5zdGFsbC1kYXRhfSwKd2hpbGUgQGNvZGV7YmluX1BST0dSQU1TfSBm aWxlcyBhcmUgaW5zdGFsbGVkIGJ5IEBjb2Rle2luc3RhbGwtZXhlY30uCgpBbnkgdmFyaWFibGUg dXNpbmcgYSB1c2VyLWRlZmluZWQgZGlyZWN0b3J5IHByZWZpeCB3aXRoCkBzYW1we2V4ZWN9IGlu IHRoZSBuYW1lIChlLmcuLApAYyBLZWVwIGluIHN5bmMgd2l0aCBwcmltYXJ5LXByZWZpeC1jb3Vw bGVzLWRvY3VtZW50ZWQtdmFsaWQuc2gKQGNvZGV7bXlleGVjYmluX1BST0dSQU1TfSkgaXMgaW5z dGFsbGVkIGJ5IEBjb2Rle2luc3RhbGwtZXhlY30uICBBbGwKb3RoZXIgdXNlci1kZWZpbmVkIHBy ZWZpeGVzIGFyZSBpbnN0YWxsZWQgYnkgQGNvZGV7aW5zdGFsbC1kYXRhfS4KCkBub2RlIEV4dGVu ZGluZyBJbnN0YWxsYXRpb24KQHNlY3Rpb24gRXh0ZW5kaW5nIEluc3RhbGxhdGlvbgoKSXQgaXMg cG9zc2libGUgdG8gZXh0ZW5kIHRoaXMgbWVjaGFuaXNtIGJ5IGRlZmluaW5nIGFuCkBjb2Rle2lu c3RhbGwtZXhlYy1sb2NhbH0gb3IgQGNvZGV7aW5zdGFsbC1kYXRhLWxvY2FsfSBydWxlLiAgSWYg dGhlc2UKcnVsZXMgZXhpc3QsIHRoZXkgd2lsbCBiZSBydW4gYXQgQHNhbXB7bWFrZSBpbnN0YWxs fSB0aW1lLiAgVGhlc2UKcnVsZXMgY2FuIGRvIGFsbW9zdCBhbnl0aGluZzsgY2FyZSBpcyByZXF1 aXJlZC4KQHRyaW5kZXggaW5zdGFsbC1leGVjLWxvY2FsCkB0cmluZGV4IGluc3RhbGwtZGF0YS1s b2NhbAoKQXV0b21ha2UgYWxzbyBzdXBwb3J0cyB0d28gaW5zdGFsbCBob29rcywgQGNvZGV7aW5z dGFsbC1leGVjLWhvb2t9IGFuZApAY29kZXtpbnN0YWxsLWRhdGEtaG9va30uICBUaGVzZSBob29r cyBhcmUgcnVuIGFmdGVyIGFsbCBvdGhlciBpbnN0YWxsCnJ1bGVzIG9mIHRoZSBhcHByb3ByaWF0 ZSB0eXBlLCBleGVjIG9yIGRhdGEsIGhhdmUgY29tcGxldGVkLiAgU28sIGZvcgppbnN0YW5jZSwg aXQgaXMgcG9zc2libGUgdG8gcGVyZm9ybSBwb3N0LWluc3RhbGxhdGlvbiBtb2RpZmljYXRpb25z CnVzaW5nIGFuIGluc3RhbGwgaG9vay4gIEB4cmVme0V4dGVuZGluZ30sIGZvciBzb21lIGV4YW1w bGVzLgpAY2luZGV4IEluc3RhbGwgaG9vawoKQG5vZGUgU3RhZ2VkIEluc3RhbGxzCkBzZWN0aW9u IFN0YWdlZCBJbnN0YWxscwoKQHZpbmRleCBERVNURElSCkF1dG9tYWtlIGdlbmVyYXRlcyBzdXBw b3J0IGZvciB0aGUgQGNvZGV7REVTVERJUn0gdmFyaWFibGUgaW4gYWxsCmluc3RhbGwgcnVsZXMu ICBAY29kZXtERVNURElSfSBpcyB1c2VkIGR1cmluZyB0aGUgQHNhbXB7bWFrZSBpbnN0YWxsfQpz dGVwIHRvIHJlbG9jYXRlIGluc3RhbGwgb2JqZWN0cyBpbnRvIGEgc3RhZ2luZyBhcmVhLiAgRWFj aCBvYmplY3QgYW5kCnBhdGggaXMgcHJlZml4ZWQgd2l0aCB0aGUgdmFsdWUgb2YgQGNvZGV7REVT VERJUn0gYmVmb3JlIGJlaW5nIGNvcGllZAppbnRvIHRoZSBpbnN0YWxsIGFyZWEuICBIZXJlIGlz IGFuIGV4YW1wbGUgb2YgdHlwaWNhbCBERVNURElSIHVzYWdlOgoKQGV4YW1wbGUKbWtkaXIgL3Rt cC9zdGFnaW5nICYmCm1ha2UgREVTVERJUj0vdG1wL3N0YWdpbmcgaW5zdGFsbApAZW5kIGV4YW1w bGUKClRoZSBAY29tbWFuZHtta2Rpcn0gY29tbWFuZCBhdm9pZHMgYSBzZWN1cml0eSBwcm9ibGVt IGlmIHRoZSBhdHRhY2tlcgpjcmVhdGVzIGEgc3ltYm9saWMgbGluayBmcm9tIEBmaWxley90bXAv c3RhZ2luZ30gdG8gYSB2aWN0aW0gYXJlYTsKdGhlbiBAY29tbWFuZHttYWtlfSBwbGFjZXMgaW5z dGFsbCBvYmplY3RzIGluIGEgZGlyZWN0b3J5IHRyZWUgYnVpbHQgdW5kZXIKQGZpbGV7L3RtcC9z dGFnaW5nfS4gIElmIEBmaWxley9nbnUvYmluL2Zvb30gYW5kCkBmaWxley9nbnUvc2hhcmUvYWNs b2NhbC9mb28ubTR9IGFyZSB0byBiZSBpbnN0YWxsZWQsIHRoZSBhYm92ZSBjb21tYW5kCndvdWxk IGluc3RhbGwgQGZpbGV7L3RtcC9zdGFnaW5nL2dudS9iaW4vZm9vfSBhbmQKQGZpbGV7L3RtcC9z dGFnaW5nL2dudS9zaGFyZS9hY2xvY2FsL2Zvby5tNH0uCgpUaGlzIGZlYXR1cmUgaXMgY29tbW9u bHkgdXNlZCB0byBidWlsZCBpbnN0YWxsIGltYWdlcyBhbmQgcGFja2FnZXMKKEBweHJlZntERVNU RElSfSkuCgpTdXBwb3J0IGZvciBAY29kZXtERVNURElSfSBpcyBpbXBsZW1lbnRlZCBieSBjb2Rp bmcgaXQgZGlyZWN0bHkgaW50bwp0aGUgaW5zdGFsbCBydWxlcy4gIElmIHlvdXIgQGZpbGV7TWFr ZWZpbGUuYW19IHVzZXMgYSBsb2NhbCBpbnN0YWxsCnJ1bGUgKGUuZy4sIEBjb2Rle2luc3RhbGwt ZXhlYy1sb2NhbH0pIG9yIGFuIGluc3RhbGwgaG9vaywgdGhlbiB5b3UKbXVzdCB3cml0ZSB0aGF0 IGNvZGUgdG8gcmVzcGVjdCBAY29kZXtERVNURElSfS4KCkB4cmVme01ha2VmaWxlIENvbnZlbnRp b25zLCAsICwgc3RhbmRhcmRzLCBUaGUgR05VIENvZGluZyBTdGFuZGFyZHN9LApmb3IgYW5vdGhl ciB1c2FnZSBleGFtcGxlLgoKQG5vZGUgSW5zdGFsbCBSdWxlcyBmb3IgdGhlIFVzZXIKQHNlY3Rp b24gSW5zdGFsbCBSdWxlcyBmb3IgdGhlIFVzZXIKCkF1dG9tYWtlIGFsc28gZ2VuZXJhdGVzIHJ1 bGVzIGZvciB0YXJnZXRzIEBjb2Rle3VuaW5zdGFsbH0sCkBjb2Rle2luc3RhbGxkaXJzfSwgYW5k IEBjb2Rle2luc3RhbGwtc3RyaXB9LgpAdHJpbmRleCB1bmluc3RhbGwKQHRyaW5kZXggaW5zdGFs bGRpcnMKQHRyaW5kZXggaW5zdGFsbC1zdHJpcAoKQXV0b21ha2Ugc3VwcG9ydHMgQGNvZGV7dW5p bnN0YWxsLWxvY2FsfSBhbmQgQGNvZGV7dW5pbnN0YWxsLWhvb2t9LgpUaGVyZSBpcyBubyBub3Rp b24gb2Ygc2VwYXJhdGUgdW5pbnN0YWxscyBmb3IgYGBleGVjJycgYW5kIGBgZGF0YScnLCBhcwp0 aGVzZSBmZWF0dXJlcyB3b3VsZCBub3QgcHJvdmlkZSBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHku CgpOb3RlIHRoYXQgQGNvZGV7dW5pbnN0YWxsfSBpcyBub3QgbWVhbnQgYXMgYSByZXBsYWNlbWVu dCBmb3IgYSByZWFsCnBhY2thZ2luZyB0b29sLgoKCkBub2RlIENsZWFuCkBjaGFwdGVyIFdoYXQg R2V0cyBDbGVhbmVkCgpAY2luZGV4IEBzYW1we21ha2UgY2xlYW59IHN1cHBvcnQKClRoZSBHTlUg TWFrZWZpbGUgU3RhbmRhcmRzIHNwZWNpZnkgYSBudW1iZXIgb2YgZGlmZmVyZW50IGNsZWFuIHJ1 bGVzLgpAeHJlZntTdGFuZGFyZCBUYXJnZXRzLCAsIFN0YW5kYXJkIFRhcmdldHMgZm9yIFVzZXJz LCBzdGFuZGFyZHMsClRoZSBHTlUgQ29kaW5nIFN0YW5kYXJkc30uCgpHZW5lcmFsbHkgdGhlIGZp bGVzIHRoYXQgY2FuIGJlIGNsZWFuZWQgYXJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSBieQpB dXRvbWFrZS4gIE9mIGNvdXJzZSwgQXV0b21ha2UgYWxzbyByZWNvZ25pemVzIHNvbWUgdmFyaWFi bGVzIHRoYXQgY2FuCmJlIGRlZmluZWQgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIGZpbGVzIHRvIGNs ZWFuLiAgVGhlc2UgdmFyaWFibGVzIGFyZQpAY29kZXtNT1NUTFlDTEVBTkZJTEVTfSwgQGNvZGV7 Q0xFQU5GSUxFU30sIEBjb2Rle0RJU1RDTEVBTkZJTEVTfSwgYW5kCkBjb2Rle01BSU5UQUlORVJD TEVBTkZJTEVTfS4KQHZpbmRleCBNT1NUTFlDTEVBTkZJTEVTCkB2aW5kZXggQ0xFQU5GSUxFUwpA dmluZGV4IERJU1RDTEVBTkZJTEVTCkB2aW5kZXggTUFJTlRBSU5FUkNMRUFORklMRVMKCkB0cmlu ZGV4IG1vc3RseWNsZWFuLWxvY2FsCkB0cmluZGV4IGNsZWFuLWxvY2FsCkB0cmluZGV4IGRpc3Rj bGVhbi1sb2NhbApAdHJpbmRleCBtYWludGFpbmVyLWNsZWFuLWxvY2FsCldoZW4gY2xlYW5pbmcg aW52b2x2ZXMgbW9yZSB0aGFuIGRlbGV0aW5nIHNvbWUgaGFyZC1jb2RlZCBsaXN0IG9mCmZpbGVz LCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHN1cHBsZW1lbnQgdGhlIGNsZWFuaW5nIHJ1bGVzIHdp dGggeW91cgpvd24gY29tbWFuZHMuICBTaW1wbHkgZGVmaW5lIGEgcnVsZSBmb3IgYW55IG9mIHRo ZQpAY29kZXttb3N0bHljbGVhbi1sb2NhbH0sIEBjb2Rle2NsZWFuLWxvY2FsfSwgQGNvZGV7ZGlz dGNsZWFuLWxvY2FsfSwKb3IgQGNvZGV7bWFpbnRhaW5lci1jbGVhbi1sb2NhbH0gdGFyZ2V0cyAo QHB4cmVme0V4dGVuZGluZ30pLiAgQSBjb21tb24KY2FzZSBpcyBkZWxldGluZyBhIGRpcmVjdG9y eSwgZm9yIGluc3RhbmNlLCBhIGRpcmVjdG9yeSBjcmVhdGVkIGJ5IHRoZQp0ZXN0IHN1aXRlOgoK QGV4YW1wbGUKY2xlYW4tbG9jYWw6CiAgICAgICAgLXJtIC1yZiB0ZXN0U3ViRGlyCkBlbmQgZXhh bXBsZQoKU2luY2UgQGNvbW1hbmR7bWFrZX0gYWxsb3dzIG9ubHkgb25lIHNldCBvZiBydWxlcyBm b3IgYSBnaXZlbiB0YXJnZXQsCmEgbW9yZSBleHRlbnNpYmxlIHdheSBvZiB3cml0aW5nIHRoaXMg aXMgdG8gdXNlIGEgc2VwYXJhdGUgdGFyZ2V0Cmxpc3RlZCBhcyBhIGRlcGVuZGVuY3k6CgpAZXhh bXBsZQpjbGVhbi1sb2NhbDogY2xlYW4tbG9jYWwtY2hlY2sKLlBIT05ZOiBjbGVhbi1sb2NhbC1j aGVjawpjbGVhbi1sb2NhbC1jaGVjazoKICAgICAgICAtcm0gLXJmIHRlc3RTdWJEaXIKQGVuZCBl eGFtcGxlCgpBcyB0aGUgR05VIFN0YW5kYXJkcyBhcmVuJ3QgYWx3YXlzIGV4cGxpY2l0IGFzIHRv IHdoaWNoIGZpbGVzIHNob3VsZApiZSByZW1vdmVkIGJ5IHdoaWNoIHJ1bGUsIHdlJ3ZlIGFkb3B0 ZWQgYSBoZXVyaXN0aWMgdGhhdCB3ZSBiZWxpZXZlCndhcyBmaXJzdCBmb3JtdWxhdGVkIGJ5IEZy YW5ALHtjfW9pcyBQaW5hcmQ6CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCklmIEBjb21tYW5ke21h a2V9IGJ1aWx0IGl0LCBhbmQgaXQgaXMgY29tbW9ubHkgc29tZXRoaW5nIHRoYXQgb25lIHdvdWxk CndhbnQgdG8gcmVidWlsZCAoZm9yIGluc3RhbmNlLCBhIEBmaWxley5vfSBmaWxlKSwgdGhlbgpA Y29kZXttb3N0bHljbGVhbn0gc2hvdWxkIGRlbGV0ZSBpdC4KCkBpdGVtCk90aGVyd2lzZSwgaWYg QGNvbW1hbmR7bWFrZX0gYnVpbHQgaXQsIHRoZW4gQGNvZGV7Y2xlYW59IHNob3VsZCBkZWxldGUg aXQuCgpAaXRlbQpJZiBAY29tbWFuZHtjb25maWd1cmV9IGJ1aWx0IGl0LCB0aGVuIEBjb2Rle2Rp c3RjbGVhbn0gc2hvdWxkIGRlbGV0ZSBpdC4KCkBpdGVtCklmIHRoZSBtYWludGFpbmVyIGJ1aWx0 IGl0IChmb3IgaW5zdGFuY2UsIGEgQGZpbGV7LmluZm99IGZpbGUpLCB0aGVuCkBjb2Rle21haW50 YWluZXItY2xlYW59IHNob3VsZCBkZWxldGUgaXQuICBIb3dldmVyCkBjb2Rle21haW50YWluZXIt Y2xlYW59IHNob3VsZCBub3QgZGVsZXRlIGFueXRoaW5nIHRoYXQgbmVlZHMgdG8gZXhpc3QKaW4g b3JkZXIgdG8gcnVuIEBzYW1wey4vY29uZmlndXJlICYmIG1ha2V9LgpAZW5kIGl0ZW1pemUKCldl IHJlY29tbWVuZCB0aGF0IHlvdSBmb2xsb3cgdGhpcyBzYW1lIHNldCBvZiBoZXVyaXN0aWNzIGlu IHlvdXIKQGZpbGV7TWFrZWZpbGUuYW19LgoKCkBub2RlIERpc3QKQGNoYXB0ZXIgV2hhdCBHb2Vz IGluIGEgRGlzdHJpYnV0aW9uCgpAbWVudQoqIEJhc2ljcyBvZiBEaXN0cmlidXRpb246OiAgICAg IEZpbGVzIGRpc3RyaWJ1dGVkIGJ5IGRlZmF1bHQKKiBGaW5lLWdyYWluZWQgRGlzdHJpYnV0aW9u IENvbnRyb2w6OiAgQGNvZGV7ZGlzdF99IGFuZCBAY29kZXtub2Rpc3RffSBwcmVmaXhlcwoqIFRo ZSBkaXN0IEhvb2s6OiAgICAgICAgICAgICAgIEEgdGFyZ2V0IGZvciBsYXN0LW1pbnV0ZSBkaXN0 cmlidXRpb24gY2hhbmdlcwoqIENoZWNraW5nIHRoZSBEaXN0cmlidXRpb246OiAgIEBzYW1we21h a2UgZGlzdGNoZWNrfSBleHBsYWluZWQKKiBUaGUgVHlwZXMgb2YgRGlzdHJpYnV0aW9uczo6ICBB IHZhcmlldHkgb2YgZm9ybWF0cyBhbmQgY29tcHJlc3Npb24gbWV0aG9kcwpAZW5kIG1lbnUKCkBu b2RlIEJhc2ljcyBvZiBEaXN0cmlidXRpb24KQHNlY3Rpb24gQmFzaWNzIG9mIERpc3RyaWJ1dGlv bgoKQGNpbmRleCBAc2FtcHttYWtlIGRpc3R9CgpAdmluZGV4IFBBQ0tBR0UKQHZpbmRleCBWRVJT SU9OCkB0cmluZGV4IGRpc3QKVGhlIEBjb2Rle2Rpc3R9IHJ1bGUgaW4gdGhlIGdlbmVyYXRlZCBA ZmlsZXtNYWtlZmlsZS5pbn0gY2FuIGJlIHVzZWQKdG8gZ2VuZXJhdGUgYSBnemlwcGVkIEBjb2Rl e3Rhcn0gZmlsZSBhbmQvb3Igb3RoZXIgZmxhdm9ycyBvZiBhcmNoaXZlcwpmb3IgZGlzdHJpYnV0 aW9uLiAgVGhlIGZpbGUgaXMgbmFtZWQgYmFzZWQgb24gdGhlIEBjb2Rle1BBQ0tBR0V9IGFuZApA Y29kZXtWRVJTSU9OfSB2YXJpYWJsZXMgYXV0b21hdGljYWxseSBkZWZpbmVkIGJ5IGVpdGhlciB0 aGUKQGNvZGV7QUNfSU5JVH0gaW52b2NhdGlvbiBvciBieSBhIEBlbXBoe2RlcHJlY2F0ZWR9IHR3 by1hcmd1bWVudHMKaW52b2NhdGlvbiBvZiB0aGUgQGNvZGV7QU1fSU5JVF9BVVRPTUFLRX0gbWFj cm8gKHNlZSBAcmVme1B1YmxpYwpNYWNyb3N9IGZvciBob3cgdGhlc2UgdmFyaWFibGVzIGdldCB0 aGVpciB2YWx1ZXMsIGZyb20gZWl0aGVyIGRlZmF1bHRzCm9yIGV4cGxpY2l0IHZhbHVlcy0tLWl0 J3Mgc2xpZ2h0bHkgdHJpY2tpZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0KS4KTW9yZSBwcmVjaXNl bHksIHRoZSBnemlwcGVkIEBjb2Rle3Rhcn0gZmlsZSBpcyBuYW1lZApAc2FtcHskQHtQQUNLQUdF QH0tJEB7VkVSU0lPTkB9LnRhci5nen0uCgpAYyBTZWUgYXV0b21ha2UgIzk4MjIuCkB2aW5kZXgg VEFSCllvdSBjYW4gc2V0IHRoZSBlbnZpcm9ubWVudCAob3IgQGNvZGV7TWFrZWZpbGUuYW19KSB2 YXJpYWJsZSBAY29kZXtUQVJ9CnRvIG92ZXJyaWRlIHRoZSB0YXIgcHJvZ3JhbSB1c2VkOyBpdCBk ZWZhdWx0cyB0byBAY29kZXt0YXJ9LgpAeHJlZntUaGUgVHlwZXMgb2YgRGlzdHJpYnV0aW9uc30s IGZvciBob3cgdG8gZ2VuZXJhdGUgb3RoZXIga2luZHMgb2YKYXJjaGl2ZXMuCgpAdmluZGV4IFRB Ul9PUFRJT05TCldpdGggR05VIHRhciwgeW91IGNhbiBhbHNvIHNldCB0aGUgZW52aXJvbm1lbnQg KG9yIEBjb2Rle01ha2VmaWxlLmFtfSkKdmFyaWFibGUgQGNvZGV7VEFSX09QVElPTlN9IHRvIHBh c3Mgb3B0aW9ucyB0byBAY29kZXt0YXJ9LiAgT25lIGNvbW1vbgpjYXNlIGZvciB1c2luZyB0aGlz IGlzIHRvIGF2b2lkIGhhdmluZyB0aGUgbG9jYWwgdXNlcidzIHVpZCBhbmQgZ2lkIGluCnRoZSB0 YXIgZmlsZSwgb3IgdGhlIHVpZCBiZWluZyBsYXJnZXIgdGhhbiBpcyBzdXBwb3J0ZWQgYnkgdGhl IHRhcgpmb3JtYXQuIFRoaXMgY2FuIGJlIGRvbmUgd2l0aCwgZm9yIGV4YW1wbGU6CgpAY2luZGV4 IHRhciB1aWQvZ2lkIHNldHRpbmcKQGNpbmRleCB1aWQvZ2lkLCBzZXR0aW5nIGZvciB0YXIKQGNp bmRleCB0b28tbGFyZ2UgdWlkL2dpZCBmb3IgdGFyCkBleGFtcGxlClRBUl9PUFRJT05TID0gLS1v d25lcj0wIC0tZ3JvdXA9MApleHBvcnQgVEFSX09QVElPTlMKQGVuZCBleGFtcGxlCgpAbm9pbmRl bnQKVGhlIEBjb2Rle2V4cG9ydH0gKGEgR05VIG1ha2UgZmVhdHVyZSkgaXMgbmVjZXNzYXJ5IHRv IHBhc3MgdGhlCnZhcmlhYmxlIGluIHRoZSBlbnZpcm9ubWVudCB0byB0aGUgQGNvZGV7dGFyfSBp bnZvY2F0aW9uLiBBbm90aGVyCnBvc3NpYmxlIGZpeCBpcyB0byB1c2UgdGhlIEBjb2Rle3Rhci1w YXh9IG9wdGlvbgooQHB4cmVme3Rhci1mb3JtYXRzfSksIHRob3VnaCB0aGlzIHJlZHVjZXMgcG9y dGFiaWxpdHkuCihGb3IgbW9yZSBkaXNjdXNzaW9uLCBzZWUgQHVybHtodHRwczovL2J1Z3MuZ251 Lm9yZy8xOTYxNX0KYW5kIEB1cmx7aHR0cHM6Ly9idWdzLmdudS5vcmcvNzMzMTZ9LikKCkZvciB0 aGUgbW9zdCBwYXJ0LCB0aGUgZmlsZXMgdG8gZGlzdHJpYnV0ZSBhcmUgYXV0b21hdGljYWxseQpm b3VuZCBieSBBdXRvbWFrZToKCkBpdGVtaXplIEBidWxsZXQKQGl0ZW0KQWxsIHNvdXJjZSBmaWxl cyBhcmUgYXV0b21hdGljYWxseSBpbmNsdWRlZCBpbiBhIGRpc3RyaWJ1dGlvbiwgYXMgYXJlCmFs bCBAZmlsZXtNYWtlZmlsZS5hbX0gYW5kIEBmaWxle01ha2VmaWxlLmlufSBmaWxlcy4KCkBhY2lu ZGV4IEFDX0NPTkZJR19GSUxFUwpAaXRlbQpGaWxlcyB0aGF0IGFyZSByZWFkIGJ5IEBjb21tYW5k e2NvbmZpZ3VyZX0gYXJlIGF1dG9tYXRpY2FsbHkKZGlzdHJpYnV0ZWQuICBUaGVzZSBhcmUgdGhl IHNvdXJjZSBmaWxlcyBhcyBzcGVjaWZpZWQgaW4gdmFyaW91cwpBdXRvY29uZiBtYWNyb3Mgc3Vj aCBhcyBAY29kZXtBQ19DT05GSUdfRklMRVN9IGFuZCBzaWJsaW5ncy4KCkBjaW5kZXggQGNvZGV7 bTRfaW5jbHVkZX0sIGRpc3RyaWJ1dGlvbgpAY2luZGV4IEBjb2Rle2luY2x1ZGV9LCBkaXN0cmli dXRpb24KQGFjaW5kZXggbTRfaW5jbHVkZQpAY21pbmRleCBpbmNsdWRlCkBpdGVtCkZpbGVzIGlu Y2x1ZGVkIGluIGEgQGZpbGV7TWFrZWZpbGUuYW19ICh1c2luZyBAY29kZXtpbmNsdWRlfSkgb3Ig aW4KQGZpbGV7Y29uZmlndXJlLmFjfSAodXNpbmcgQGNvZGV7bTRfaW5jbHVkZX0pLgoKQGl0ZW0K QXV0b21ha2UgaGFzIGEgYnVpbHQtaW4gbGlzdCBvZiBjb21tb25seSB1c2VkIGZpbGVzIGF1dG9t YXRpY2FsbHkKaW5jbHVkZWQgaW4gdGhlIGRpc3RyaWJ1dGlvbiBpZiB0aGV5IGFyZSBmb3VuZCBp biB0aGUgY3VycmVudApkaXJlY3RvcnkgKGVpdGhlciBwaHlzaWNhbGx5LCBvciBhcyB0aGUgdGFy Z2V0IG9mIGEgQGZpbGV7TWFrZWZpbGUuYW19CnJ1bGUpLiAgU29tZSBjb21tb24gZXhhbXBsZXM6 IEBmaWxle0FCT1VULUdOVX0sIEBmaWxle0NPUFlJTkd9LApAZmlsZXtUT0RPfS4KClRoaXMgbGlz dCBhbHNvIGluY2x1ZGVzIGhlbHBlciBzY3JpcHRzIGluc3RhbGxlZCB3aXRoIEBzYW1we2F1dG9t YWtlCi0tYWRkLW1pc3Npbmd9LiAgU29tZSBjb21tb24gZXhhbXBsZXM6IEBmaWxle2NvbXBpbGV9 LApAZmlsZXtjb25maWcuZ3Vlc3N9LCBAZmlsZXtjb25maWcucnBhdGh9LCBAZmlsZXtjb25maWcu c3VifSwKQGZpbGV7dGV4aW5mby50ZXh9LgoKQGl0ZW0KQXV0b21ha2UgaGFzIGFub3RoZXIgYnVp bHQtaW4gbGlzdCBvZiBmaWxlcyBhdXRvbWF0aWNhbGx5IGRpc3RyaWJ1dGVkCmlmIHRoZXkgYXJl IGZvdW5kIGVpdGhlciB3aXRoIHRoZSBwbGFpbiBuYW1lLCBvciB3aXRoIGV4dGVuc2lvbgpAZmls ZXsubWR9IChwcmVzdW1hYmx5IE1hcmtEb3duLCB0aG91Z2ggdGhpcyBub3QgY2hlY2tlZCkuICBU aGV5IGFyZQpjaGVja2VkIGZvciBpbiB0aGF0IG9yZGVyLCBzbyB0aGUgcGxhaW4gbmFtZSBpcyBw cmVmZXJyZWQuICBUaGVzZSBhcmU6CkBmaWxle0FVVEhPUlMgQ2hhbmdlTG9nIElOU1RBTEwgTkVX UyBSRUFETUUgUkVBRE1FLWFscGhhIFRIQU5LU30uCgpAaXRlbQpBIGZpbmFsIGJ1aWx0LWluIGxp c3Qgb2YgZmlsZXMgYXJlIHRob3NlIGRpc3RyaWJ1dGVkIG9ubHkgaWYgb3RoZXIKY2VydGFpbiBj b25kaXRpb25zIGhvbGQuIEZvciBleGFtcGxlLApAYyBLZWVwIGluIHN5bmMgd2l0aCBhdXRvZGlz dC1jb25maWctaGVhZGVycy5zaAp0aGUgZmlsZXMgQGZpbGV7Y29uZmlnLmgudG9wfSBhbmQgQGZp bGV7Y29uZmlnLmguYm90fSBhcmUKYXV0b21hdGljYWxseSBkaXN0cmlidXRlZCBvbmx5IGlmLCBl LmcuLApAc2FtcHtBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKX0gaXMgdXNlZCBpbiBAZmls ZXtjb25maWd1cmUuYWN9KS4KQGZpbGV7UkVBRE1FLWFscGhhfSBpcyBhbm90aGVyIHN1Y2ggZmls ZSwgd2l0aCBAZmlsZXtSRUFETUUtYWxwaGEubWR9CmRpc3RyaWJ1dGVkIGlmIHRoYXQgaXMgd2hh dCBpcyBhdmFpbGFibGU7IEBweHJlZntTdHJpY3RuZXNzfSwgZm9yIGl0cwpjb25kaXRpb25zIGZv ciBkaXN0cmlidXRpb24uCgpAZW5kIGl0ZW1pemUKCkBub2luZGVudApUaGVzZSB0aHJlZSBsaXN0 cyBvZiBmaWxlcyBhcmUgZ2l2ZW4gaW4gdGhlaXIgZW50aXJldHkgaW4gdGhlIG91dHB1dApmcm9t IEBjb2Rle2F1dG9tYWtlIC0taGVscH0uCgpAdmluZGV4IEVYVFJBX0RJU1QKRGVzcGl0ZSBhbGwg dGhpcyBhdXRvbWF0aWMgaW5jbHVzaW9uLCBpdCBpcyBzdGlsbCBjb21tb24gdG8gaGF2ZSBmaWxl cwp0byBiZSBkaXN0cmlidXRlZCB3aGljaCBhcmUgbm90IGZvdW5kIGJ5IHRoZSBhdXRvbWF0aWMg cnVsZXMuICBZb3UKc2hvdWxkIGxpc3RlZCB0aGVzZSBmaWxlcyBpbiB0aGUgQGNvZGV7RVhUUkFf RElTVH0gdmFyaWFibGUuICBZb3UgY2FuCm1lbnRpb24gZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMg aW4gQGNvZGV7RVhUUkFfRElTVH0uCgpZb3UgY2FuIGFsc28gbWVudGlvbiBhIGRpcmVjdG9yeSBp biBAY29kZXtFWFRSQV9ESVNUfTsgaW4gdGhpcyBjYXNlCnRoZSBlbnRpcmUgZGlyZWN0b3J5IHdp bGwgYmUgcmVjdXJzaXZlbHkgY29waWVkIGludG8gdGhlIGRpc3RyaWJ1dGlvbi4KVG8gZW1waGFz aXplLCB0aGlzIGNvcGllcyBAZW1waHtldmVyeXRoaW5nfSBpbiB0aGUgZGlyZWN0b3J5LAppbmNs dWRpbmcgdGVtcG9yYXJ5IGVkaXRvciBmaWxlcywgaW50ZXJtZWRpYXRlIGJ1aWxkIGZpbGVzLCB2 ZXJzaW9uCmNvbnRyb2wgZmlsZXMsIGV0Yy47IHRodXMgd2UgcmVjb21tZW5kIGFnYWluc3QgdXNp bmcgdGhpcyBmZWF0dXJlCmFzLWlzLiAgSG93ZXZlciwgeW91IGNhbiB1c2UgdGhlIEBjb2Rle2Rp c3QtaG9va30gZmVhdHVyZSB0bwphbWVsaW9yYXRlIHRoZSBwcm9ibGVtOyBAcHhyZWZ7VGhlIGRp c3QgSG9va30uCgpAdmluZGV4IFNVQkRJUlMKQHZpbmRleCBESVNUX1NVQkRJUlMKSWYgeW91IGRl ZmluZSBAY29kZXtTVUJESVJTfSwgQXV0b21ha2Ugd2lsbCByZWN1cnNpdmVseSBpbmNsdWRlIHRo ZQpzdWJkaXJlY3RvcmllcyBpbiB0aGUgZGlzdHJpYnV0aW9uLiAgSWYgQGNvZGV7U1VCRElSU30g aXMgZGVmaW5lZApjb25kaXRpb25hbGx5IChAcHhyZWZ7Q29uZGl0aW9uYWxzfSksIEF1dG9tYWtl IHdpbGwgbm9ybWFsbHkgaW5jbHVkZQphbGwgZGlyZWN0b3JpZXMgdGhhdCBjb3VsZCBwb3NzaWJs eSBhcHBlYXIgaW4gQGNvZGV7U1VCRElSU30gaW4gdGhlCmRpc3RyaWJ1dGlvbi4gIElmIHlvdSBu ZWVkIHRvIHNwZWNpZnkgdGhlIHNldCBvZiBkaXJlY3Rvcmllcwpjb25kaXRpb25hbGx5LCB5b3Ug Y2FuIHNldCB0aGUgdmFyaWFibGUgQGNvZGV7RElTVF9TVUJESVJTfSB0byB0aGUKZXhhY3QgbGlz dCBvZiBzdWJkaXJlY3RvcmllcyB0byBpbmNsdWRlIGluIHRoZSBkaXN0cmlidXRpb24KKEBweHJl ZntDb25kaXRpb25hbCBTdWJkaXJlY3Rvcmllc30pLgoKCkBub2RlIEZpbmUtZ3JhaW5lZCBEaXN0 cmlidXRpb24gQ29udHJvbApAc2VjdGlvbiBGaW5lLWdyYWluZWQgRGlzdHJpYnV0aW9uIENvbnRy b2wKCkB2aW5kZXggZGlzdF8KQHZpbmRleCBub2Rpc3RfClNvbWV0aW1lcyB5b3UgbmVlZCB0aWdo dGVyIGNvbnRyb2wgb3ZlciB3aGF0IGRvZXMgQGVtcGh7bm90fSBnbyBpbnRvIHRoZQpkaXN0cmli dXRpb247IGZvciBpbnN0YW5jZSwgeW91IG1pZ2h0IGhhdmUgc291cmNlIGZpbGVzIHRoYXQgYXJl CmdlbmVyYXRlZCBhbmQgdGhhdCB5b3UgZG8gbm90IHdhbnQgdG8gZGlzdHJpYnV0ZS4gIEluIHRo aXMgY2FzZQpBdXRvbWFrZSBnaXZlcyBmaW5lLWdyYWluZWQgY29udHJvbCB1c2luZyB0aGUgQGNv ZGV7ZGlzdH0gYW5kCkBjb2Rle25vZGlzdH0gcHJlZml4ZXMuICBBbnkgcHJpbWFyeSBvciBAY29k ZXtfU09VUkNFU30gdmFyaWFibGUgY2FuIGJlCnByZWZpeGVkIHdpdGggQGNvZGV7ZGlzdF99IHRv IGFkZCB0aGUgbGlzdGVkIGZpbGVzIHRvIHRoZSBkaXN0cmlidXRpb24uClNpbWlsYXJseSwgQGNv ZGV7bm9kaXN0X30gY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgZmlsZXMgZnJvbSB0aGUKZGlzdHJp YnV0aW9uLgoKQXMgYW4gZXhhbXBsZSwgaGVyZSBpcyBob3cgeW91IHdvdWxkIGNhdXNlIHNvbWUg ZGF0YSB0byBiZSBkaXN0cmlidXRlZAp3aGlsZSBsZWF2aW5nIHNvbWUgc291cmNlIGNvZGUgb3V0 IG9mIHRoZSBkaXN0cmlidXRpb246CgpAZXhhbXBsZQpkaXN0X2RhdGFfREFUQSA9IGRpc3RyaWJ1 dGUtdGhpcwpiaW5fUFJPR1JBTVMgPSBmb28Kbm9kaXN0X2Zvb19TT1VSQ0VTID0gZG8tbm90LWRp c3RyaWJ1dGUuYwpAZW5kIGV4YW1wbGUKCkBub2RlIFRoZSBkaXN0IEhvb2sKQHNlY3Rpb24gVGhl IGRpc3QgSG9vawoKQHRyaW5kZXggZGlzdC1ob29rCgpPY2Nhc2lvbmFsbHkgaXQgaXMgdXNlZnVs IHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBkaXN0cmlidXRpb24gYmVmb3JlCml0IGlzIHBhY2th Z2VkIHVwLiAgSWYgdGhlIEBjb2Rle2Rpc3QtaG9va30gcnVsZSBleGlzdHMsIGl0IGlzIHJ1bgph ZnRlciB0aGUgZGlzdHJpYnV0aW9uIGRpcmVjdG9yeSBpcyBmaWxsZWQsIGJ1dCBiZWZvcmUgdGhl IGFjdHVhbApkaXN0cmlidXRpb24gYXJjaGl2ZXMgYXJlIGNyZWF0ZWQuICBPbmUgd2F5IHRvIHVz ZSB0aGlzIGlzIGZvcgpyZW1vdmluZyB1bm5lY2Vzc2FyeSBmaWxlcyB0aGF0IGdldCByZWN1cnNp dmVseSBpbmNsdWRlZCBieSBzcGVjaWZ5aW5nCmEgZGlyZWN0b3J5IGluIEBjb2Rle0VYVFJBX0RJ U1R9OgoKQGV4YW1wbGUKRVhUUkFfRElTVCA9IGRvYwpkaXN0LWhvb2s6CiAgICAgICAgY2htb2Qg LVIgdSt3ICQoZGlzdGRpcikvZG9jCiAgICAgICAgcm0gLXJmIGBmaW5kICQoZGlzdGRpcikvZG9j IC10eXBlIGQgLW5hbWUgUkNTYApAZW5kIGV4YW1wbGUKCkBjIFRoZSBjYXZlYXRzIGRlc2NyaWJl ZCBoZXJlIHNob3VsZCBiZSBkb2N1bWVudGVkIGluICdkaXN0aG9vay5zaCcuCkBub2luZGVudApU aGUgQGNvZGV7ZGlzdC1ob29rfSByZWNpcGUgc2hvdWxkIG5vdCBhc3N1bWUgdGhhdCB0aGUgcmVn dWxhciBmaWxlcwppbiB0aGUgZGlzdHJpYnV0aW9uIGRpcmVjdG9yeSBhcmUgd3JpdGFibGU7IHRo aXMgbWlnaHQgbm90IGJlIHRoZSBjYXNlCmlmIG9uZSBpcyBwYWNrYWdpbmcgZnJvbSBhIHJlYWQt b25seSBzb3VyY2UgdHJlZSwgb3Igd2hlbiBhIEBjb2Rle21ha2UKZGlzdGNoZWNrfSBpcyBiZWlu ZyBkb25lLiAgU2ltaWxhcmx5LCB0aGUgcmVjaXBlIHNob3VsZCBub3QgYXNzdW1lCnRoYXQgdGhl IHN1YmRpcmVjdG9yaWVzIHB1dCBpbnRvIHRoZSBkaXN0cmlidXRpb24gZGlyZWN0b3J5IGFzIGEK cmVzdWx0IG9mIGJlaW5nIGxpc3RlZCBpbiBAY29kZXtFWFRSQV9ESVNUfSBhcmUgd3JpdGFibGUu ICBTbywgaWYgdGhlCkBjb2Rle2Rpc3QtaG9va30gcmVjaXBlIHdhbnRzIHRvIG1vZGlmeSB0aGUg Y29udGVudCBvZiBhbiBleGlzdGluZwpmaWxlIChvciBAY29kZXtFWFRSQV9ESVNUfSBzdWJkaXJl Y3RvcnkpIGluIHRoZSBkaXN0cmlidXRpb24KZGlyZWN0b3J5LCBpdCBzaG91bGQgZXhwbGljaXRs eSB0byBtYWtlIGl0IHdyaXRhYmxlIGZpcnN0OgoKQGV4YW1wbGUKRVhUUkFfRElTVCA9IFJFQURN RSBkb2MKZGlzdC1ob29rOgogICAgICAgIGNobW9kIHUrdyAkKGRpc3RkaXIpL1JFQURNRSAkKGRp c3RkaXIpL2RvYwogICAgICAgIGVjaG8gIkRpc3RyaWJ1dGlvbiBkYXRlOiBgZGF0ZWAiID4+ICQo ZGlzdGRpcikvUkVBRE1FCiAgICAgICAgcm0gLWYgJChkaXN0ZGlyKS9kb2MvSEFDS0lORwpAZW5k IGV4YW1wbGUKCkB2aW5kZXggZGlzdGRpcgpAdmluZGV4IHRvcF9kaXN0ZGlyClR3byB2YXJpYWJs ZXMgdGhhdCBjb21lIGhhbmR5IHdoZW4gd3JpdGluZyBAY29kZXtkaXN0LWhvb2t9IHJ1bGVzIGFy ZQpAc2FtcHskKGRpc3RkaXIpfSBhbmQgQHNhbXB7JCh0b3BfZGlzdGRpcil9LgoKQHNhbXB7JChk aXN0ZGlyKX0gcG9pbnRzIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIEBjb2Rle2Rpc3R9IHJ1 bGUKd2lsbCBjb3B5IGZpbGVzIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGJlZm9yZSBjcmVh dGluZyB0aGUKdGFyYmFsbC4gIElmIHlvdSBhcmUgYXQgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnks IHRoZW4gQHNhbXB7ZGlzdGRpciA9CiQoUEFDS0FHRSktJChWRVJTSU9OKX0uICBXaGVuIHVzZWQg ZnJvbSBzdWJkaXJlY3RvcnkgbmFtZWQKQGZpbGV7Zm9vL30sIHRoZW4gQHNhbXB7ZGlzdGRpciA9 IC4uLyQoUEFDS0FHRSktJChWRVJTSU9OKS9mb299LgpAc2FtcHskKGRpc3RkaXIpfSBjYW4gYmUg ZWl0aGVyIGEgcmVsYXRpdmUgb3IgYWJzb2x1dGUgcGF0aDsgZG8gbm90CmFzc3VtZSBhIHBhcnRp Y3VsYXIgZm9ybS4KCkBzYW1weyQodG9wX2Rpc3RkaXIpfSBhbHdheXMgcG9pbnRzIHRvIHRoZSBy b290IGRpcmVjdG9yeSBvZiB0aGUKZGlzdHJpYnV0ZWQgdHJlZS4gIEF0IHRoZSB0b3AgbGV2ZWwg aXQncyBlcXVhbCB0byBAc2FtcHskKGRpc3RkaXIpfS4KSW4gdGhlIEBmaWxle2Zvby99IHN1YmRp cmVjdG9yeSBAc2FtcHt0b3BfZGlzdGRpciA9Ci4uLyQoUEFDS0FHRSktJChWRVJTSU9OKX0uICBA c2FtcHskKHRvcF9kaXN0ZGlyKX0gY2FuIGFsc28gYmUgZWl0aGVyIGEKcmVsYXRpdmUgb3IgYWJz b2x1dGUgcGF0aC4KCkBhY2luZGV4IEFDX0NPTkZJR19TVUJESVJTCldoZW4gcGFja2FnZXMgYXJl IG5lc3RlZCB1c2luZyBAY29kZXtBQ19DT05GSUdfU1VCRElSU30KKEBweHJlZntTdWJwYWNrYWdl c30pLCB0aGVuIEBzYW1weyQoZGlzdGRpcil9IGFuZApAc2FtcHskKHRvcF9kaXN0ZGlyKX0gYXJl IHJlbGF0aXZlIHRvIHRoZSBwYWNrYWdlIHdoZXJlIEBzYW1we21ha2UKZGlzdH0gd2FzIHJ1biwg bm90IHRvIGFueSBzdWItcGFja2FnZXMgaW52b2x2ZWQuCgpAbm9kZSBDaGVja2luZyB0aGUgRGlz dHJpYnV0aW9uCkBzZWN0aW9uIENoZWNraW5nIHRoZSBEaXN0cmlidXRpb24KCkBjaW5kZXggQHNh bXB7bWFrZSBkaXN0Y2hlY2t9CkB0cmluZGV4IGRpc3RjaGVjawpBdXRvbWFrZSBhbHNvIGdlbmVy YXRlcyBhIEBjb2Rle2Rpc3RjaGVja30gcnVsZSB0aGF0IGNhbiBiZSBvZiBoZWxwCnRvIGVuc3Vy ZSB0aGF0IGEgZ2l2ZW4gZGlzdHJpYnV0aW9uIHdpbGwgYWN0dWFsbHkgd29yay4gIFNpbXBsaWZ5 aW5nCmEgYml0LCB3ZSBjYW4gc2F5IHRoaXMgcnVsZSBmaXJzdCBtYWtlcyBhIGRpc3RyaWJ1dGlv biwgYW5kIHRoZW4sCkBlbXBoe29wZXJhdGluZyBmcm9tIGl0fSwgdGFrZXMgdGhlIGZvbGxvd2lu ZyBzdGVwcyAoaW4gdGhpcyBvcmRlcik6CkBpdGVtaXplCkBpdGVtCmRvZXMgYSBAY29kZXtWUEFU SH0gYnVpbGQgKEBweHJlZntWUEFUSCBCdWlsZHN9KSwgd2l0aCB0aGUKQGNvZGV7c3JjZGlyfSBh bmQgYWxsIGl0cyBjb250ZW50IG1hZGUgQGVtcGh7cmVhZC1vbmx5fTsKQGl0ZW0KbWFrZXMgdGhl IHByaW50YWJsZSBkb2N1bWVudGF0aW9uICh3aXRoIEBjb21tYW5ke21ha2UgZHZpfSksIGlmIGFu eSwKQGl0ZW0KcnVucyB0aGUgdGVzdCBzdWl0ZSAod2l0aCBAY29tbWFuZHttYWtlIGNoZWNrfSkg b24gdGhpcyBmcmVzaCBidWlsZDsKQGl0ZW0KaW5zdGFsbHMgdGhlIHBhY2thZ2UgaW4gYSB0ZW1w b3JhcnkgZGlyZWN0b3J5ICh3aXRoIEBjb21tYW5ke21ha2UKaW5zdGFsbH0pLCBhbmQgcnVucyB0 aGUgdGVzdCBzdWl0ZSBvbiB0aGUgcmVzdWx0aW5nIGluc3RhbGxhdGlvbgood2l0aCBAY29tbWFu ZHttYWtlIGluc3RhbGxjaGVja30pOwpAaXRlbQpjaGVja3MgdGhhdCB0aGUgcGFja2FnZSBjYW4g YmUgY29ycmVjdGx5IHVuaW5zdGFsbGVkIChieSBAY29tbWFuZHttYWtlCnVuaW5zdGFsbH0pIGFu ZCBjbGVhbmVkIChieSBAY29kZXttYWtlIGRpc3RjbGVhbn0pOwpAaXRlbQpmaW5hbGx5LCBtYWtl cyBhbm90aGVyIHRhcmJhbGwgdG8gZW5zdXJlIHRoZSBkaXN0cmlidXRpb24gaXMKc2VsZi1jb250 YWluZWQuCkBlbmQgaXRlbWl6ZQoKQWxsIG9mIHRoZXNlIGFjdGlvbnMgYXJlIHBlcmZvcm1lZCBp biBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuICBUaGUKZXhhY3QgbG9jYXRpb24gYW5kIHRoZSBleGFj dCBzdHJ1Y3R1cmUgb2Ygc3VjaCBhIGRpcmVjdG9yeSAod2hlcmUgdGhlCnJlYWQtb25seSBzb3Vy Y2VzIGFyZSBwbGFjZWQsIGhvdyB0aGUgdGVtcG9yYXJ5IGJ1aWxkIGFuZCBpbnN0YWxsCmRpcmVj dG9yaWVzIGFyZSBuYW1lZCBhbmQgaG93IGRlZXBseSB0aGV5IGFyZSBuZXN0ZWQsIGV0Yy4pIGlz IHRvIGJlCmNvbnNpZGVyZWQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB3aGljaCBjYW4gY2hh bmdlIGF0IGFueSB0aW1lLCBzbwpwbGVhc2UgZG8gbm90IHJlbHkgb24gaXQuCgpAbWVudQoqIERJ U1RDSEVDS19DT05GSUdVUkVfRkxBR1M6OiAgT3ZlcnJpZGluZyBjb25maWd1cmUgZmxhZ3MgaW4g ZGlzdGNoZWNrLgoqIGRpc3RjaGVjay1ob29rOjogICAgICAgICAgICAgUnVubmluZyBjb21tYW5k cyBhZnRlciBkaXN0Y2hlY2suCiogZHZpIGFuZCBkaXN0Y2hlY2s6OiAgICAgICAgICBPdmVycmlk aW5nIHRoZSBkaXN0Y2hlY2sgZG9jIHRhcmdldC4KKiBkaXN0Y2xlYW5jaGVjazo6ICAgICAgICAg ICAgIEhhbmRsaW5nIGZpbGVzIG5vdCBjbGVhbmVkLgoqIGRpc3R1bmluc3RhbGxjaGVjazo6ICAg ICAgICAgT3ZlcnJpZGluZyB0aGUgdW5pbnN0YWxsIGNoZWNrLgoqIEVycm9ycyB3aXRoIGRpc3Rj bGVhbjo6CkBlbmQgbWVudQoKQG5vZGUgRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUwpAc3Vic2Vj dGlvbiBAY29kZXtESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTfQpAdmluZGV4IEFNX0RJU1RDSEVD S19DT05GSUdVUkVfRkxBR1MKQHZpbmRleCBESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTCgpCdWls ZGluZyB0aGUgcGFja2FnZSBpbnZvbHZlcyBydW5uaW5nIEBzYW1wey4vY29uZmlndXJlfS4gIElm IHlvdSBuZWVkCnRvIHN1cHBseSBhZGRpdGlvbmFsIGZsYWdzIHRvIEBjb21tYW5ke2NvbmZpZ3Vy ZX0sIGRlZmluZSB0aGVtIGluIHRoZQpAY29kZXtBTV9ESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdT fSB2YXJpYWJsZSBpbiB5b3VyIHRvcC1sZXZlbApAZmlsZXtNYWtlZmlsZS5hbX0uICBUaGUgdXNl ciBjYW4gc3RpbGwgZXh0ZW5kIG9yIG92ZXJyaWRlIHRoZSBmbGFncwpwcm92aWRlZCB0aGVyZSBi eSBkZWZpbmluZyB0aGUgQGNvZGV7RElTVENIRUNLX0NPTkZJR1VSRV9GTEFHU30gdmFyaWFibGUs Cm9uIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBpbnZva2luZyBAY29tbWFuZHttYWtlfS4KQGMgU2Vl IGF1dG9tYWtlIGJ1ZyMxNDk5MSBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyB0aGUgZm9sbG93 aW5nIGhvbGRzLgpJdCdzIHdvcnRoIG5vdGluZyB0aGF0IEBjb21tYW5ke21ha2UgZGlzdGNoZWNr fSBuZWVkcyBjb21wbGV0ZSBjb250cm9sCm92ZXIgdGhlIEBjb21tYW5ke2NvbmZpZ3VyZX0gb3B0 aW9ucyBAb3B0aW9uey0tc3JjZGlyfSBhbmQKQG9wdGlvbnstLXByZWZpeH0sIHNvIHRob3NlIG9w dGlvbnMgY2Fubm90IGJlIG92ZXJyaWRkZW4gYnkKQGNvZGV7QU1fRElTVENIRUNLX0NPTkZJR1VS RV9GTEFHU30gbm9yIGJ5CkBjb2Rle0RJU1RDSEVDS19DT05GSUdVUkVfRkxBR1N9LgoKRGV2ZWxv cGVycyBhcmUgZW5jb3VyYWdlZCB0byBzdHJpdmUgdG8gbWFrZSB0aGVpciBjb2RlIGJ1aWxkYWJs ZQp3aXRob3V0IHJlcXVpcmluZyBhbnkgc3BlY2lhbCBjb25maWd1cmUgb3B0aW9uOyB0aHVzLCBp biBnZW5lcmFsLCB5b3UKc2hvdWxkbid0IGRlZmluZSBAY29kZXtBTV9ESVNUQ0hFQ0tfQ09ORklH VVJFX0ZMQUdTfS4gIEdOVQpAY29tbWFuZHttNH0gb2ZmZXJzIGFuIGV4YW1wbGUgb2Ygd2hlbiBp dHMgdXNlIGlzIGp1c3RpZmllZCwgaG93ZXZlci4KR05VIEBjb21tYW5ke200fSBjb25maWd1cmVz IGJ5IGRlZmF1bHQgd2l0aCBpdHMgZXhwZXJpbWVudGFsIGFuZApzZWxkb20gdXNlZCBAc2FtcHtj aGFuZ2V3b3JkfSBmZWF0dXJlIGRpc2FibGVkOyBzbyBpbiB0aGlzIGNhc2UgaXQgaXMKdXNlZnVs IHRvIGhhdmUgQGNvbW1hbmR7bWFrZSBkaXN0Y2hlY2t9IHJ1biBjb25maWd1cmUgd2l0aCB0aGUK QG9wdGlvbnstLXdpdGgtY2hhbmdld29yZH0gb3B0aW9uLCB0byBlbnN1cmUgdGhhdCB0aGUgY29k ZSBmb3IKY2hhbmdld29yZCBzdXBwb3J0IHN0aWxsIGNvbXBpbGVzIGNvcnJlY3RseS4gIEdOVSBA Y29tbWFuZHttNH0gYWxzbwplbXBsb3lzIHRoZSBAY29kZXtBTV9ESVNUQ0hFQ0tfQ09ORklHVVJF X0ZMQUdTfSB2YXJpYWJsZSB0bwpzdHJlc3MtdGVzdCB0aGUgdXNlIG9mIEBvcHRpb257LS1wcm9n cmFtLXByZWZpeD1nfSwgc2luY2UgYXQgb25lIHBvaW50CnRoZSBAY29tbWFuZHttNH0gYnVpbGQg c3lzdGVtIGhhZCBhIGJ1ZyB3aGVyZSBAY29tbWFuZHttYWtlCmluc3RhbGxjaGVja30gd2FzIHdy b25nbHkgYXNzdW1pbmcgaXQgY291bGQgYmxpbmRseSB0ZXN0IEBzYW1we200fSwKcmF0aGVyIHRo YW4gdGhlIGp1c3QtaW5zdGFsbGVkIEBzYW1we2dtNH0uCgpAbm9kZSBkaXN0Y2hlY2staG9vawpA c3Vic2VjdGlvbiBAY29kZXtkaXN0Y2hlY2staG9va30KQHRyaW5kZXggZGlzdGNoZWNrLWhvb2sK CklmIHRoZSBAY29kZXtkaXN0Y2hlY2staG9va30gcnVsZSBpcyBkZWZpbmVkIGluIHlvdXIgdG9w LWxldmVsCkBmaWxle01ha2VmaWxlLmFtfSwgdGhlbiBpdCB3aWxsIGJlIGludm9rZWQgYnkgQGNv ZGV7ZGlzdGNoZWNrfSBhZnRlcgp0aGUgbmV3IGRpc3RyaWJ1dGlvbiBoYXMgYmVlbiB1bnBhY2tl ZCwgYnV0IGJlZm9yZSB0aGUgdW5wYWNrZWQgY29weQppcyBjb25maWd1cmVkIGFuZCBidWlsdC4g IFlvdXIgQGNvZGV7ZGlzdGNoZWNrLWhvb2t9IGNhbiBkbyBhbG1vc3QKYW55dGhpbmcsIHRob3Vn aCBhcyBhbHdheXMgY2F1dGlvbiBpcyBhZHZpc2VkLiAgR2VuZXJhbGx5IHRoaXMgaG9vayBpcwp1 c2VkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgZGlzdHJpYnV0aW9uIGVycm9ycyBub3QgY2F1Z2h0 IGJ5IHRoZQpzdGFuZGFyZCBtZWNoYW5pc20uCgpAY29kZXtkaXN0Y2hlY2staG9va30sIGFzIHdl bGwgYXMgQGNvZGV7QU1fRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHU30KYW5kIEBjb2Rle0RJU1RD SEVDS19DT05GSUdVUkVfRkxBR1N9LCBhcmUgbm90IGhvbm9yZWQgaW4gYSBzdWJwYWNrYWdlCkBm aWxle01ha2VmaWxlLmFtfSwgYnV0IHRoZSBmbGFncyBmcm9tCkBjb2Rle0FNX0RJU1RDSEVDS19D T05GSUdVUkVfRkxBR1N9IGFuZApAY29kZXtESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTfSBhcmUg cGFzc2VkIGRvd24gdG8gdGhlCkBjb21tYW5ke2NvbmZpZ3VyZX0gc2NyaXB0IG9mIHRoZSBzdWJw YWNrYWdlLgoKQG5vZGUgZHZpIGFuZCBkaXN0Y2hlY2sKQHN1YnNlY3Rpb24gQGNvZGV7ZHZpfSBh bmQgQGNvZGV7ZGlzdGNoZWNrfQpAdHJpbmRleCBkdmkKCk9yZGluYXJpbHksIEBjb21tYW5ke21h a2UgZGlzdGNoZWNrfSBydW5zIEBjb21tYW5ke21ha2UgZHZpfS4gIEl0IGRvZXMKbm90aGluZyBp ZiB0aGUgZGlzdHJpYnV0aW9uIGNvbnRhaW5zIG5vIFRleGluZm8gc291cmNlcy4gIElmIHRoZQpk aXN0cmlidXRpb24gZG9lcyBjb250YWluIGEgVGV4aW5mbyBtYW51YWwsIGJ5IGRlZmF1bHQgdGhl IEBjb2Rle2R2aX0KdGFyZ2V0IHdpbGwgcnVuIEBUZVh7fSB0byBtYWtlIHN1cmUgaXQgY2FuIGJl IHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQKKEBweHJlZntUZXhpbmZvfSkuCgpAdmluZGV4IEFNX0RJ U1RDSEVDS19EVklfVEFSR0VUCkBjaW5kZXggQGNvZGV7ZXBzfSBpbWFnZXMsIGFuZCBAY29kZXtk aXN0Y2hlY2t9Ckhvd2V2ZXIsIHlvdSBtYXkgd2lzaCB0byB0ZXN0IHRoZSBtYW51YWwgYnkgcHJv ZHVjaW5nIEBjb2Rle3BkZn0KKGUuZy4sIGlmIHlvdXIgbWFudWFsIHVzZXMgaW1hZ2VzIGluIGZv cm1hdHMgb3RoZXIgdGhhbiBAY29kZXtlcHN9KSwKQGNvZGV7aHRtbH0gKGlmIHlvdSBkb24ndCBo YXZlIEBUZVh7fSBhdCBhbGwpLCBzb21lIG90aGVyIGZvcm1hdCwgb3IKanVzdCBza2lwIHRoZSB0 ZXN0IGVudGlyZWx5IChub3QgcmVjb21tZW5kZWQpLiAgWW91IGNhbiBjaGFuZ2UgdGhlCnRhcmdl dCB0aGF0IGlzIHJ1biBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZQpAY29kZXtBTV9ESVNUQ0hFQ0tf RFZJX1RBUkdFVH0gaW4geW91ciBAY29kZXtNYWtlZmlsZS5hbX07IGZvcgpleGFtcGxlLAoKQGV4 YW1wbGUKQU1fRElTVENIRUNLX0RWSV9UQVJHRVQgPSBwZGYKQGVuZCBleGFtcGxlCgpUbyBtYWtl IEBjb2Rle2R2aX0gaW50byBhIGRvLW5vdGhpbmcgdGFyZ2V0LCBzZWUgdGhlIGV4YW1wbGUgZm9y CkBjb2Rle0VNUFRZX0FVVE9NQUtFX1RBUkdFVFN9IGluIEByZWZ7VGhpcmQtUGFydHkgTWFrZWZp bGVzfS4KCkBub2RlIGRpc3RjbGVhbmNoZWNrCkBzdWJzZWN0aW9uIEBjb2Rle2Rpc3RjbGVhbmNo ZWNrfQpAY2luZGV4IEBzYW1we21ha2UgZGlzdGNsZWFuY2hlY2t9CkB0cmluZGV4IGRpc3RjbGVh bmNoZWNrCkB2aW5kZXggRElTVENMRUFORklMRVMKQHZpbmRleCBkaXN0Y2xlYW5jaGVja19saXN0 ZmlsZXMKCkBjb2Rle2Rpc3RjaGVja30gZW5zdXJlcyB0aGF0IHRoZSBAY29kZXtkaXN0Y2xlYW59 IHJ1bGUgYWN0dWFsbHkKcmVtb3ZlcyBhbGwgYnVpbHQgZmlsZXMuICBUaGlzIGlzIGRvbmUgYnkg cnVubmluZyBAc2FtcHttYWtlCmRpc3RjbGVhbmNoZWNrfSBhdCB0aGUgZW5kIG9mIHRoZSBAY29k ZXtWUEFUSH0gYnVpbGQuICBCeSBkZWZhdWx0LApAY29kZXtkaXN0Y2xlYW5jaGVja30gd2lsbCBy dW4gQGNvZGV7ZGlzdGNsZWFufSBhbmQgdGhlbiBtYWtlIHN1cmUgdGhlCmJ1aWxkIHRyZWUgaGFz IGJlZW4gZW1wdGllZCBieSBydW5uaW5nIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUKQHNhbXB7 JChkaXN0Y2xlYW5jaGVja19saXN0ZmlsZXMpfS4gIE9mdGVuIHRoaXMgY2hlY2sgd2lsbCBmaW5k CmdlbmVyYXRlZCBmaWxlcyB0aGF0IHlvdSBmb3Jnb3QgdG8gYWRkIHRvIHRoZSBAY29kZXtESVNU Q0xFQU5GSUxFU30KdmFyaWFibGUgKEBweHJlZntDbGVhbn0pLgoKVGhlIEBjb2Rle2Rpc3RjbGVh bmNoZWNrfSBiZWhhdmlvciBzaG91bGQgYmUgT0sgZm9yIG1vc3QgcGFja2FnZXMsCm90aGVyd2lz ZSB5b3UgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gb3ZlcnJpZGUgdGhlIGRlZmluaXRpb24gb2YK ZWl0aGVyIHRoZSBAY29kZXtkaXN0Y2xlYW5jaGVja30gcnVsZSwgb3IgdGhlCkBzYW1weyQoZGlz dGNsZWFuY2hlY2tfbGlzdGZpbGVzKX0gdmFyaWFibGUuICBGb3IgaW5zdGFuY2UsIHRvIGRpc2Fi bGUKQGNvZGV7ZGlzdGNsZWFuY2hlY2t9IGNvbXBsZXRlbHkgKG5vdCByZWNvbW1lbmRlZCksIGFk ZCB0aGUgZm9sbG93aW5nCnJ1bGUgdG8geW91ciB0b3AtbGV2ZWwgQGZpbGV7TWFrZWZpbGUuYW19 OgoKQGV4YW1wbGUKZGlzdGNsZWFuY2hlY2s6CiAgICAgICAgQEA6CkBlbmQgZXhhbXBsZQoKSWYg eW91IHdhbnQgQGNvZGV7ZGlzdGNsZWFuY2hlY2t9IHRvIGlnbm9yZSBidWlsdCBmaWxlcyB0aGF0 IGhhdmUgbm90CmJlZW4gY2xlYW5lZCBiZWNhdXNlIHRoZXkgYXJlIGFsc28gcGFydCBvZiB0aGUg ZGlzdHJpYnV0aW9uLCBtYWtlIHRoZQpmb2xsb3dpbmcgZGVmaW5pdGlvbjoKCkBjIEtlZXAgaW4g c3luYyB3aXRoIHQvZGlzdGNsZWFuY2hlY2suc2guCkBleGFtcGxlCmRpc3RjbGVhbmNoZWNrX2xp c3RmaWxlcyA9IFwKICBmaW5kIC4gLXR5cGUgZiAtZXhlYyBzaCAtYyAndGVzdCAtZiAkKHNyY2Rp cikvJCQxIHx8IGVjaG8gJCQxJyBcCiAgICAgICBzaCAnQHtAfScgJzsnCkBlbmQgZXhhbXBsZQoK VGhlIGFib3ZlIGRlZmluaXRpb24gaXMgbm90IHRoZSBkZWZhdWx0IGJlY2F1c2UgaXQncyB1c3Vh bGx5IGFuIGVycm9yCmlmIHlvdXIgTWFrZWZpbGVzIGNhdXNlIHNvbWUgZGlzdHJpYnV0ZWQgZmls ZXMgdG8gYmUgcmVidWlsdCB3aGVuIHRoZQp1c2VyIGJ1aWxkcyB0aGUgcGFja2FnZTogY29uc2lk ZXIgdGhlIHVzZXIgbWlzc2luZyB0aGUgdG9vbCByZXF1aXJlZAp0byBidWlsZCB0aGUgZmlsZTsg b3IgaWYgdGhlIHJlcXVpcmVkIHRvb2wgaXMgYnVpbHQgYnkgeW91ciBwYWNrYWdlLApjb25zaWRl ciB0aGUgY3Jvc3MtY29tcGlsYXRpb24gY2FzZSB3aGVyZSBpdCBjYW4ndCBiZSBydW4uCgpQbGVh c2Ugc2VlIHRoZSAoZm9sbG93aW5nKSBzZWN0aW9uIEByZWZ7RXJyb3JzIHdpdGggZGlzdGNsZWFu fSBiZWZvcmUKcGxheWluZyB3aXRoIEBjb2Rle2Rpc3RjbGVhbmNoZWNrX2xpc3RmaWxlc30uCgpA bm9kZSBkaXN0dW5pbnN0YWxsY2hlY2sKQHN1YnNlY3Rpb24gQGNvZGV7ZGlzdHVuaW5zdGFsbGNo ZWNrfQpAY2luZGV4IEBzYW1we21ha2UgZGlzdHVuaW5zdGFsbGNoZWNrfQpAdHJpbmRleCBkaXN0 dW5pbnN0YWxsY2hlY2sKQHZpbmRleCBkaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzCgpAY29k ZXtkaXN0Y2hlY2t9IGFsc28gY2hlY2tzIHRoYXQgdGhlIEBjb2Rle3VuaW5zdGFsbH0gcnVsZSB3 b3Jrcwpwcm9wZXJseSwgYm90aCBmb3Igb3JkaW5hcnkgYW5kIEBjb2Rle0RFU1RESVJ9IGJ1aWxk cy4gIEl0IGRvZXMgdGhpcwpieSBpbnZva2luZyBAc2FtcHttYWtlIHVuaW5zdGFsbH0sIGFuZCB0 aGVuIGl0IGNoZWNrcyB0aGUgaW5zdGFsbCB0cmVlCnRvIHNlZSBpZiBhbnkgZmlsZXMgYXJlIGxl ZnQgb3Zlci4gIFRoaXMgY2hlY2sgd2lsbCBtYWtlIHN1cmUgdGhhdCB5b3UKY29ycmVjdGx5IGNv ZGVkIHlvdXIgQGNvZGV7dW5pbnN0YWxsfS1yZWxhdGVkIHJ1bGVzLgoKQnkgZGVmYXVsdCwgdGhl IGNoZWNraW5nIGlzIGRvbmUgYnkgdGhlIEBjb2Rle2Rpc3R1bmluc3RhbGxjaGVja30KcnVsZSwg YW5kIHRoZSBsaXN0IG9mIGZpbGVzIGluIHRoZSBpbnN0YWxsIHRyZWUgaXMgZ2VuZXJhdGVkIGJ5 CkBzYW1weyQoZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcyl9LiBUaGUgdmFsdWUgb2YgdGhl IGxhdHRlcgp2YXJpYWJsZSBpcyB0YWtlbiB0byBiZSBhIHNoZWxsIGNvbW1hbmQgdG8gcnVuIHRo YXQgcHJpbnRzIHRoZSBsaXN0IG9mCmZpbGVzIHRvIHN0ZG91dC4KCkVpdGhlciBvZiB0aGVzZSBj YW4gYmUgb3ZlcnJpZGRlbiB0byBtb2RpZnkgdGhlIGJlaGF2aW9yIG9mCkBjb2Rle2Rpc3RjaGVj a30uICBGb3IgaW5zdGFuY2UsIHRvIGRpc2FibGUgdGhpcyBjaGVjayBjb21wbGV0ZWx5IChub3QK cmVjb21tZW5kZWQpLCB5b3Ugd291bGQgd3JpdGU6CgpAZXhhbXBsZQpkaXN0dW5pbnN0YWxsY2hl Y2s6CiAgICAgICAgQEA6CkBlbmQgZXhhbXBsZQoKQG5vZGUgRXJyb3JzIHdpdGggZGlzdGNsZWFu CkBzdWJzZWN0aW9uIEVycm9ycyB3aXRoIEBjb2Rle2Rpc3RjbGVhbn0KQGNpbmRleCBAY29kZXtk aXN0Y2xlYW59LCBkaWFnbm9zdGljCkBjaW5kZXggQHNhbXB7bWFrZSBkaXN0Y2xlYW59LCBkaWFn bm9zdGljCkBjaW5kZXggZGVwZW5kZW5jaWVzIGFuZCBkaXN0cmlidXRlZCBmaWxlcwpAdHJpbmRl eCBkaXN0Y2xlYW4KCkFzIGV4cGxhaW5lZCBpbiB0aGUgc2VjdGlvbiBhYm92ZSAoQHB4cmVme0No ZWNraW5nIHRoZSBEaXN0cmlidXRpb259KSwKQHNhbXB7bWFrZSBkaXN0Y2hlY2t9IGF0dGVtcHRz IHRvIGJ1aWxkIGFuZCBjaGVjayB5b3VyIHBhY2thZ2UgZm9yCmVycm9ycy4gT25lIHN1Y2ggZXJy b3IgeW91IG1pZ2h0IHNlZSBpczoKCkBleGFtcGxlCkVSUk9SOiBmaWxlcyBsZWZ0IGluIGJ1aWxk IGRpcmVjdG9yeSBhZnRlciBkaXN0Y2xlYW46CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50IFRoZSBm aWxlKHMpIGxlZnQgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSBhZnRlciBAc2FtcHttYWtlIGRpc3Rj bGVhbn0KaGFzIHJ1biBhcmUgbGlzdGVkIGFmdGVyIHRoaXMgZXJyb3IgbWVzc2FnZS4gVGhpcyBj YW4gaGFwcGVuIGluIHR3bwp3YXlzOgoKQGl0ZW1pemUgQGJ1bGxldApAaXRlbSBmaWxlcyB0aGF0 IHdlcmUgZm9yZ290dGVuIHRvIGJlIGRpc3RjbGVhbi1lZDsKQGl0ZW0gZGlzdHJpYnV0ZWQgZmls ZXMgdGhhdCBhcmUgZXJyb25lb3VzbHkgcmVidWlsdC4KQGVuZCBpdGVtaXplCgpJbiB0aGUgZmly c3QgY2FzZSBvZiBzaW1wbGUgbGVmdC1vdmVyIGZpbGVzIG5vdCBpbnRlbmRlZCB0byBiZQpkaXN0 cmlidXRlZCwgdGhlIGZpeCBpcyB0byBpbmNsdWRlIHRoZW0gZm9yIGNsZWFuaW5nIChAcHhyZWZ7 Q2xlYW59KTsKdGhpcyBpcyBzdHJhaWdodGZvcndhcmQgYW5kIGRvZXNuJ3QgbmVlZCBtb3JlIGV4 cGxhbmF0aW9uLgoKQGNtaW5kZXggaGVscDJtYW4KQGNpbmRleCBtYW4gcGFnZXMsIGdlbmVyYXRp bmcgYW5kIGRpc3RyaWJ1dGluZwpUaGUgc2Vjb25kIGNhc2UsIGhvd2V2ZXIsIGlzIG5vdCBhbHdh eXMgZWFzeSB0byB1bmRlcnN0YW5kIGFuZCBmaXgsIHNvCmxldCdzIHByb2NlZWQgd2l0aCBhbiBl eGFtcGxlLiAgU3VwcG9zZSBvdXIgcGFja2FnZSBjb250YWlucyBhIHByb2dyYW0KZm9yIHdoaWNo IHdlIHdhbnQgdG8gYnVpbGQgYSBtYW4gcGFnZSB1c2luZyBAY29tbWFuZHtoZWxwMm1hbn0uICBH TlUKQGNvbW1hbmR7aGVscDJtYW59IHByb2R1Y2VzIHNpbXBsZSBtYW51YWwgcGFnZXMgZnJvbSB0 aGUKQG9wdGlvbnstLWhlbHB9IGFuZCBAb3B0aW9uey0tdmVyc2lvbn0gb3V0cHV0IG9mIG90aGVy IGNvbW1hbmRzCihAcHhyZWZ7LCwsaGVscDJtYW4sIFRoZSBIZWxwMm1hbiBNYW51YWx9KS4gIEJl Y2F1c2Ugd2UgZG9uJ3Qgd2FudCB0bwpmb3JjZSBvdXIgdXNlcnMgdG8gaW5zdGFsbCBAY29tbWFu ZHtoZWxwMm1hbn0sIHdlIGRpc3RyaWJ1dGUgdGhlCmdlbmVyYXRlZCBtYW4gcGFnZSB1c2luZyB0 aGUgZm9sbG93aW5nIHNldHVwLgoKQGV4YW1wbGUKIyBUaGlzIE1ha2VmaWxlLmFtIGlzIGJvZ3Vz LgpiaW5fUFJPR1JBTVMgPSBmb28KZm9vX1NPVVJDRVMgPSBmb28uYwpkaXN0X21hbl9NQU5TID0g Zm9vLjEKCmZvby4xOiBmb28kKEVYRUVYVCkKICAgICAgICBoZWxwMm1hbiAtLW91dHB1dD1mb28u MSAuL2ZvbyQoRVhFRVhUKQpAZW5kIGV4YW1wbGUKClRoaXMgd2lsbCBlZmZlY3RpdmVseSBkaXN0 cmlidXRlIHRoZSBtYW4gcGFnZS4gIEhvd2V2ZXIsCkBzYW1we21ha2UgZGlzdGNoZWNrfSB3aWxs IGZhaWwgd2l0aDoKCkBleGFtcGxlCkVSUk9SOiBmaWxlcyBsZWZ0IGluIGJ1aWxkIGRpcmVjdG9y eSBhZnRlciBkaXN0Y2xlYW46Ci4vZm9vLjEKQGVuZCBleGFtcGxlCgpXaHkgd2FzIEBmaWxle2Zv by4xfSByZWJ1aWx0PyAgQmVjYXVzZSBhbHRob3VnaCBkaXN0cmlidXRlZCwKQGZpbGV7Zm9vLjF9 IGRlcGVuZHMgb24gYSBub24tZGlzdHJpYnV0ZWQgYnVpbHQgZmlsZToKQGZpbGV7Zm9vJChFWEVF WFQpfS4gIEBmaWxle2ZvbyQoRVhFRVhUKX0gaXMgYnVpbHQgYnkgdGhlIHVzZXIsIHNvIGl0Cndp bGwgYWx3YXlzIGFwcGVhciB0byBiZSBuZXdlciB0aGFuIHRoZSBkaXN0cmlidXRlZCBAZmlsZXtm b28uMX0uCgpJbiBvdGhlciB3b3JkcywgQHNhbXB7bWFrZSBkaXN0Y2hlY2t9IGNhdWdodCBhbiBp bmNvbnNpc3RlbmN5IGluIG91cgpwYWNrYWdlLiAgT3VyIGludGVudCB3YXMgdG8gZGlzdHJpYnV0 ZSBAZmlsZXtmb28uMX0gc28gdXNlcnMgZG8gbm90Cm5lZWQgdG8gaW5zdGFsbCBAY29tbWFuZHto ZWxwMm1hbn0sIGJ1dCBzaW5jZSB0aGlzIHJ1bGUgY2F1c2VzIHRoaXMKZmlsZSB0byBiZSBhbHdh eXMgcmVidWlsdCwgdXNlcnMgQGVtcGh7ZG99IG5lZWQgQGNvbW1hbmR7aGVscDJtYW59LgpFaXRo ZXIgd2Ugc2hvdWxkIGVuc3VyZSB0aGF0IEBmaWxle2Zvby4xfSBpcyBub3QgcmVidWlsdCBieSB1 c2Vycywgb3IKdGhlcmUgaXMgbm8gcG9pbnQgaW4gZGlzdHJpYnV0aW5nIEBmaWxle2Zvby4xfS4K Ck1vcmUgZ2VuZXJhbGx5LCB0aGUgcnVsZSBpcyB0aGF0IGRpc3RyaWJ1dGVkIGZpbGVzIHNob3Vs ZCBuZXZlciBkZXBlbmQKb24gbm9uLWRpc3RyaWJ1dGVkIGJ1aWx0IGZpbGVzLiAgSWYgeW91IGRp c3RyaWJ1dGUgc29tZXRoaW5nCmdlbmVyYXRlZCwgZGlzdHJpYnV0ZSBhbGwgaXRzIHNvdXJjZXMu CgpPbmUgd2F5IHRvIGZpeCB0aGUgYWJvdmUgZXhhbXBsZSwgd2hpbGUgc3RpbGwgZGlzdHJpYnV0 aW5nCkBmaWxle2Zvby4xfSwgaXMgdG8gbm90IGRlcGVuZCBvbiBAZmlsZXtmb28kKEVYRUVYVCl9 LCBidXQgaW5zdGVhZCBvbgpyZWxldmFudCBzb3VyY2UgZmlsZXMuICBGb3IgaW5zdGFuY2UsIGFz c3VtaW5nIEBjb21tYW5ke2ZvbyAtLXZlcnNpb259CmFuZCBAY29tbWFuZHtmb28gLS1oZWxwfSBk byBub3QgY2hhbmdlIHVubGVzcyBAZmlsZXtmb28uY30gb3IKQGZpbGV7Y29uZmlndXJlLmFjfSBj aGFuZ2UsIHdlIGNvdWxkIHdyaXRlIHRoZSBmb2xsb3dpbmcKQGZpbGV7TWFrZWZpbGUuYW19OgoK QGV4YW1wbGUKYmluX1BST0dSQU1TID0gZm9vCmZvb19TT1VSQ0VTID0gZm9vLmMKZGlzdF9tYW5f TUFOUyA9IGZvby4xCgpmb28uMTogZm9vLmMgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKICAg ICAgICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBmb28kKEVYRUVYVCkKICAgICAgICBoZWxwMm1h biAtLW91dHB1dD1mb28uMSAuL2ZvbyQoRVhFRVhUKQpAZW5kIGV4YW1wbGUKClRoaXMgd2F5LCBA ZmlsZXtmb28uMX0gd2lsbCBub3QgZ2V0IHJlYnVpbHQgZXZlcnkgdGltZQpAZmlsZXtmb28kKEVY RUVYVCl9IGNoYW5nZXMuICBUaGUgQGNvbW1hbmR7bWFrZX0gY2FsbCBtYWtlcyBzdXJlCkBmaWxl e2ZvbyQoRVhFRVhUKX0gaXMgdXAtdG8tZGF0ZSBiZWZvcmUgQGNvbW1hbmR7aGVscDJtYW59LgoK QW5vdGhlciBzdGVwIHRvd2FyZHMgZW5zdXJpbmcgdGhpcyB3b3VsZCBiZSB0byB1c2Ugc2VwYXJh dGUKZGlyZWN0b3JpZXMgZm9yIGJpbmFyaWVzIGFuZCBtYW4gcGFnZXMsIGFuZCBzZXQgQGNvZGV7 U1VCRElSU30gc28gdGhhdApiaW5hcmllcyBhcmUgYnVpbHQgYmVmb3JlIG1hbiBwYWdlcy4gIFVu Zm9ydHVuYXRlbHksIHRoaXMgYWxvbmUgaXMsIGluCmdlbmVyYWwsIG5vdCBzdWZmaWNpZW50LiBJ biBvcmRlciB0byBhdm9pZCB0byBhdm9pZCBjb25jdXJyZW5jeSBidWdzLAppdCBtYXkgYmUgbmVj ZXNzYXJ5IHRvIGluY2x1ZGUgd3JhcHBlcnM7IHRoaXMgaXMgZG9uZSBieSBHTlUgQXV0b2NvbmYs CmFzIG1lbnRpb25lZCBiZWxvdy4KCldlIGNvdWxkIGFsc28gZGVjaWRlIG5vdCB0byBkaXN0cmli dXRlIEBmaWxle2Zvby4xfS4gIEluIHRoaXMgY2FzZQppdCdzIGZpbmUgdG8gaGF2ZSBAZmlsZXtm b28uMX0gZGVwZW5kZW50IHVwb24gQGZpbGV7Zm9vJChFWEVFWFQpfSwKc2luY2UgYm90aCB3aWxs IGhhdmUgdG8gYmUgcmVidWlsdC4gIEhvd2V2ZXIsIGl0IG1pZ2h0IGJlIGltcG9zc2libGUKdG8g YnVpbGQgdGhlIHBhY2thZ2UgaW4gYSBjcm9zcy1jb21waWxhdGlvbiwgYmVjYXVzZSBidWlsZGlu ZwpAZmlsZXtmb28uMX0gaW52b2x2ZXMgYW4gQGVtcGh7ZXhlY3V0aW9ufSBvZiBAZmlsZXtmb28k KEVYRUVYVCl9LiAgVGhlCmV4Y2VwdGlvbiB3b3VsZCBiZSBpZiBAZmlsZXtmb299IGlzIGEgcGxh dGZvcm0taW5kZXBlbmRlbnQgc2NyaXB0LApzdWNoIGFzIEBjb21tYW5ke2hlbHAybWFufS4KCkFu b3RoZXIgY29udGV4dCB3aGVyZSBzdWNoIGVycm9ycyBhcmUgY29tbW9uIGlzIHdoZW4gZGlzdHJp YnV0ZWQgZmlsZXMKYXJlIGJ1aWx0IGJ5IHRvb2xzIHRoYXQgYXJlIGJ1aWx0IGJ5IHRoZSBwYWNr YWdlLiAgVGhlIHBhdHRlcm4gaXMKc2ltaWxhcjoKCkBleGFtcGxlCmRpc3RyaWJ1dGVkLWZpbGU6 IGJ1aWx0LXRvb2xzIGRpc3RyaWJ1dGVkLXNvdXJjZXMKICAgICAgICBidWlsZC1jb21tYW5kCkBl bmQgZXhhbXBsZQoKQG5vaW5kZW50CnNob3VsZCBiZSBjaGFuZ2VkIHRvCgpAZXhhbXBsZQpkaXN0 cmlidXRlZC1maWxlOiBkaXN0cmlidXRlZC1zb3VyY2VzCiAgICAgICAgJChNQUtFKSAkKEFNX01B S0VGTEFHUykgYnVpbHQtdG9vbHMKICAgICAgICBidWlsZC1jb21tYW5kCkBlbmQgZXhhbXBsZQoK QG5vaW5kZW50Cm9yIHlvdSBjb3VsZCBjaG9vc2Ugbm90IHRvIGRpc3RyaWJ1dGUgQGZpbGV7ZGlz dHJpYnV0ZWQtZmlsZX0sIGlmCmNyb3NzLWNvbXBpbGF0aW9uIGRvZXMgbm90IG1hdHRlci4KClRo ZSBwb2ludHMgbWFkZSB0aHJvdWdoIHRoZXNlIGV4YW1wbGVzIGFyZSB3b3J0aCBzdW1tYXJpemlu ZzoKCkBjYXJ0b3VjaGUKQGl0ZW1pemUKQGl0ZW0gRGlzdHJpYnV0ZWQgZmlsZXMgc2hvdWxkIG5l dmVyIGRlcGVuZCB1cG9uIG5vbi1kaXN0cmlidXRlZCBidWlsdCBmaWxlcy4KCkBpdGVtIERpc3Ry aWJ1dGVkIGZpbGVzIHNob3VsZCBiZSBkaXN0cmlidXRlZCB3aXRoIGFsbCB0aGVpciBkZXBlbmRl bmNpZXMuCgpAaXRlbSBJZiBhIGZpbGUgaXMgQGVtcGh7aW50ZW5kZWR9IHRvIGJlIHJlYnVpbHQg YnkgdXNlcnMsIHRoZW4gdGhlcmUKaXMgbm8gcG9pbnQgaW4gZGlzdHJpYnV0aW5nIGl0LgpAZW5k IGl0ZW1pemUKQGVuZCBjYXJ0b3VjaGUKClJlYWwtd29ybGQgZXhhbXBsZXMgZm9yIEBjb2Rle2hl bHAybWFufToKCkBpdGVtaXplCkBpdGVtCkF1dG9jb25mIHRha2VzIHRoZSBhcHByb2FjaCBkZXNj cmliZWQgYWJvdmUsIGluY2x1ZGluZyBtYW4gcGFnZXMgaW4KaXRzIHJlbGVhc2VzLiBBIHdyYXBw ZXIgZm9yIGVhY2ggc2NyaXB0IGlzIG5lZWRlZCB0byBhdm9pZCBjb25jdXJyZW5jeQpwcm9ibGVt cy4gIFNlZSBpdHMgc291cmNlIGZpbGUgQGNvZGV7YXV0b2NvbmYvbWFuL2xvY2FsLm1rfSwgd2hp Y2ggaGFzCmEgZ29vZCBkaXNjdXNzaW9uIG9mIHRoZSBuZWNlc3NhcnkgYWRkaXRpb25hbCBkZXRh aWxzLgoKQGl0ZW0KQXV0b21ha2UgaXRzZWxmIHRha2VzIGFub3RoZXIgYXBwcm9hY2g6IGl0IGRv ZXMgQGVtcGh7bm90fSBpbmNsdWRlIG1hbgpwYWdlcyBpbiBkaXN0cmlidXRpb25zOyB0aHVzLCBl dmVyeSB1c2VyIGdlbmVyYXRlcyB0aGVtIHdoZW4gYnVpbGRpbmcKZnJvbSB0aGUgcmVsZWFzZSB0 YXJiYWxscy4gIFRoaXMgaXMgb2sgKG9ubHkpIGJlY2F1c2UgQXV0b21ha2UgYWxzbwppbmNsdWRl cyBhIGNvcHkgb2YgdGhlIEBjb21tYW5ke2hlbHAybWFufSBzY3JpcHQsIHdoaWNoIGlzIHBsYXVz aWJsZQpiZWNhdXNlIEBjb21tYW5ke2hlbHAybWFufSBpcyBzbWFsbCwgc2VsZi1jb250YWluZWQs IGFuZApwbGF0Zm9ybS1pbmRlcGVuZGVudC4gIFNlZSB0aGUgc291cmNlIGZpbGUKQGNvZGV7YXV0 b21ha2UvZG9jL2xvY2FsLm1rfS4KQGVuZCBpdGVtaXplCgpAdnJpbmRleCBkaXN0Y2xlYW5jaGVj a19saXN0ZmlsZXMKSWYgeW91J3JlIGRlc3BlcmF0ZSwgaXQncyBwb3NzaWJsZSB0byBkaXNhYmxl IHRoaXMgY2hlY2sgY29tcGxldGVseSBieQpzZXR0aW5nIEBjb2Rle2Rpc3RjbGVhbmNoZWNrX2xp c3RmaWxlc30gKEBweHJlZntkaXN0Y2xlYW5jaGVja30pLgpNYWtlIHN1cmUgeW91IHVuZGVyc3Rh bmQgdGhlIHJlYXNvbiB3aHkgQHNhbXB7bWFrZSBkaXN0Y2hlY2t9CmNvbXBsYWlucyBmaXJzdC4g IEBjb2Rle2Rpc3RjbGVhbmNoZWNrX2xpc3RmaWxlc30gaXMgYSB3YXkgdG8KQGVtcGh7aGlkZX0g ZXJyb3JzLCBub3QgdG8gZml4IHRoZW0uICBZb3UgY2FuIGFsd2F5cyBkbyBiZXR0ZXIuCgpAbm9k ZSBUaGUgVHlwZXMgb2YgRGlzdHJpYnV0aW9ucwpAc2VjdGlvbiBUaGUgVHlwZXMgb2YgRGlzdHJp YnV0aW9ucwoKQXV0b21ha2UgZ2VuZXJhdGVzIHJ1bGVzIHRvIHByb3ZpZGUgYXJjaGl2ZXMgb2Yg dGhlIHByb2plY3QgZm9yCmRpc3RyaWJ1dGlvbnMgaW4gdmFyaW91cyBmb3JtYXRzLiAgVGhlaXIg dGFyZ2V0cyBhcmU6CgpAdGFibGUgQGFzaXMKQGl0ZW0gQGNvZGV7ZGlzdC1nemlwfQpAdHJpbmRl eCBkaXN0LWd6aXAKQGNtaW5kZXggZ3ppcApAdmluZGV4IEdaSVBfRU5WCkBjIFNlZSBodHRwczov L2J1Z3MuZ251Lm9yZy82ODE1MSBhYm91dCB1c2luZyAtOSBpbnN0ZWFkIG9mIC0tYmVzdC4KR2Vu ZXJhdGUgYSBAc2FtcHtnemlwfSB0YXIgYXJjaGl2ZSBvZiB0aGUgZGlzdHJpYnV0aW9uLiAgVGhp cyBpcyB0aGUKb25seSBmb3JtYXQgZW5hYmxlZCBieSBkZWZhdWx0LiAgQnkgZGVmYXVsdCwgdGhp cyBydWxlIG1ha2VzCkBjb21tYW5ke2d6aXB9IHVzZSBhIGNvbXByZXNzaW9uIG9wdGlvbiBvZiBA b3B0aW9uey05fSAobW9yZSB3aWRlbHkKc3VwcG9ydGVkIHRoYW4gQG9wdGlvbnstLWJlc3R9KS4g IFRvIG1ha2UKaXQgdXNlIGEgZGlmZmVyZW50IG9uZSwgc2V0IHRoZSBAZW52e0daSVBfRU5WfSBl bnZpcm9ubWVudCB2YXJpYWJsZS4KRm9yIGV4YW1wbGUsIEBzYW1we21ha2UgZGlzdC1nemlwIEda SVBfRU5WPS03fS4gQGVudntHWklQX0VOVn0gaXMgbm90CnVzZWQgd2hlbiBkZWNvbXByZXNzaW5n LgoKQGl0ZW0gQGNvZGV7ZGlzdC1iemlwMn0KQHRyaW5kZXggZGlzdC1iemlwMgpAY21pbmRleCBi emlwMgpAdmluZGV4IEJaSVAyCkdlbmVyYXRlIGEgQHNhbXB7YnppcDJ9IHRhciBhcmNoaXZlIG9m IHRoZSBkaXN0cmlidXRpb24uICBiemlwMgphcmNoaXZlcyBhcmUgdXN1YWxseSBzbWFsbGVyIHRo YW4gZ3ppcHBlZCBhcmNoaXZlcy4gIEJ5IGRlZmF1bHQsIHRoaXMKcnVsZSBtYWtlcyBAc2FtcHti emlwMn0gdXNlIGEgY29tcHJlc3Npb24gb3B0aW9uIG9mIEBvcHRpb257LTl9LiAgVG8KbWFrZSBp dCB1c2UgYSBkaWZmZXJlbnQgb25lLCBzZXQgdGhlIEBlbnZ7QlpJUDJ9IGVudmlyb25tZW50IHZh cmlhYmxlLgoKQGl0ZW0gQGNvZGV7ZGlzdC1iemlwM30KQHRyaW5kZXggZGlzdC1iemlwMwpAY21p bmRleCBiemlwMwpAdmluZGV4IEJaSVAzCkdlbmVyYXRlIGEgQHNhbXB7YnppcDN9IHRhciBhcmNo aXZlIG9mIHRoZSBkaXN0cmlidXRpb24uICBVbmxpa2UgdGhlCm90aGVyIGNvbXByZXNzaW9uIHBy b2dyYW1zIGhlcmUsIEBjb21tYW5ke2J6aXAzfSBkb2VzIG5vdCByZWFkIGFueQplbnZpcm9ubWVu dCB2YXJpYWJsZXMuICBUbyBidWlsZCB0aGlzIG9ubHkgd2hlbiBAY29tbWFuZHtiemlwM30gaXMK cHJlc2VudCwgc2VlIEBjb2Rle0FNX09QVElPTkFMX0FVVE9NQUtFfSAoQHB4cmVme1B1YmxpYyBN YWNyb3N9KS4KCkBpdGVtIEBjb2Rle2Rpc3QtbHppcH0KQHRyaW5kZXggZGlzdC1semlwCkBjbWlu ZGV4IGx6aXAKQHZpbmRleCBMWklQX09QVApHZW5lcmF0ZSBhbiBAc2FtcHtsemlwfSB0YXIgYXJj aGl2ZSBvZiB0aGUgZGlzdHJpYnV0aW9uLgpAY29tbWFuZHtsemlwfSBhcmNoaXZlcyBhcmUgdXN1 YWxseSBzbWFsbGVyIHRoYW4KQGNvbW1hbmR7YnppcDJ9LWNvbXByZXNzZWQgYXJjaGl2ZXMuICBC eSBkZWZhdWx0LCB0aGlzIHJ1bGUgbWFrZXMKQHNhbXB7bHppcH0gdXNlIGEgY29tcHJlc3Npb24g b3B0aW9uIG9mIEBvcHRpb257LTl9LiAgVG8gbWFrZSBpdCB1c2UgYQpkaWZmZXJlbnQgb25lLCBz ZXQgdGhlIEBlbnZ7TFpJUF9PUFR9IGVudmlyb25tZW50IHZhcmlhYmxlLiAgVG8gYnVpbGQKdGhp cyBvbmx5IHdoZW4gQGNvbW1hbmR7bHppcH0gaXMgcHJlc2VudCwgc2VlCkBjb2Rle0FNX09QVElP TkFMX0FVVE9NQUtFfSAoQHB4cmVme1B1YmxpYyBNYWNyb3N9KS4KCkBpdGVtIEBjb2Rle2Rpc3Qt eHp9CkB0cmluZGV4IGRpc3QteHoKQGNtaW5kZXggeHoKQHZpbmRleCBYWl9PUFQKR2VuZXJhdGUg YW4gQHNhbXB7eHp9IHRhciBhcmNoaXZlIG9mIHRoZSBkaXN0cmlidXRpb24uICBAY29tbWFuZHt4 en0KYXJjaGl2ZXMgYXJlIHVzdWFsbHkgc21hbGxlciB0aGFuIEBjb21tYW5ke2J6aXAyfS1jb21w cmVzc2VkIGFyY2hpdmVzLgpCeSBkZWZhdWx0LCB0aGlzIHJ1bGUgbWFrZXMgQHNhbXB7eHp9IHVz ZSBhIGNvbXByZXNzaW9uIG9wdGlvbiBvZgpAb3B0aW9uey1lfS4gIFRvIG1ha2UgaXQgdXNlIGEg ZGlmZmVyZW50IG9uZSwgc2V0IHRoZSBAZW52e1haX09QVH0KZW52aXJvbm1lbnQgdmFyaWFibGUu ICBGb3IgZXhhbXBsZSwgcnVuIHRoaXMgY29tbWFuZCB0byB1c2UgdGhlCmRlZmF1bHQgY29tcHJl c3Npb24gcmF0aW8sIGJ1dCB3aXRoIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yOiBAc2FtcHttYWtlCmRp c3QteHogWFpfT1BUPS12ZX0uCgpAdHJpbmRleCBkaXN0LXppcApAY21pbmRleCB6aXAKQGl0ZW0g QGNvZGV7ZGlzdC16aXB9CkdlbmVyYXRlIGEgQHNhbXB7emlwfSBhcmNoaXZlIG9mIHRoZSBkaXN0 cmlidXRpb24uCgpAaXRlbSBAY29kZXtkaXN0LXpzdGR9CkB0cmluZGV4IGRpc3QtenN0ZApAY21p bmRleCB6c3RkCkB2aW5kZXggWlNURF9PUFQKQHZpbmRleCBaU1REX0NMRVZFTApHZW5lcmF0ZSBh IEBjb2Rle3pzdGR9IHRhciBhcmNoaXZlIG9mIHRoZSBkaXN0cmlidXRpb24uICBCeSBkZWZhdWx0 LAp0aGlzIHJ1bGUgbWFrZXMgQGNvbW1hbmR7enN0ZH0gdXNlIGEgY29tcHJlc3Npb24gb3B0aW9u IG9mCkBvcHRpb257LTE5fS4gIFRvIHVzZSBhIGRpZmZlcmVudCBzZXR0aW5nLCBzZXQgdGhlIEBl bnZ7WlNURF9PUFR9CmVudmlyb25tZW50IHZhcmlhYmxlLiAgRm9yIGV4YW1wbGUsIHJ1biB0aGlz IGNvbW1hbmQgdG8gdXNlIHRoZQpkZWZhdWx0IGNvbXByZXNzaW9uIHJhdGlvLCBidXQgd2l0aCBh IHByb2dyZXNzIGluZGljYXRvcjogQHNhbXB7bWFrZQpkaXN0LXpzdGQgWlNURF9PUFQ9LTE5dn0u ICBIb3dldmVyLCBub3RlIHRoYXQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aApAY29tbWFuZHt6c3Rk fSBpdHNlbGYsIHlvdSBtYXkgaW5zdGVhZCBzZXQgdGhlIEBlbnZ7WlNURF9DTEVWRUx9CmVudmly b25tZW50IHZhcmlhYmxlLCBpbiB3aGljaCBjYXNlLCBhbnkgQGVudntaU1REX09QVH0gc2V0dGlu ZyBpcwppZ25vcmVkLiAgVG8gYnVpbGQgdGhpcyBvbmx5IHdoZW4gQGNvbW1hbmR7enN0ZH0gaXMg cHJlc2VudCwgc2VlCkBjb2Rle0FNX09QVElPTkFMX0FVVE9NQUtFfSAoQHB4cmVme1B1YmxpYyBN YWNyb3N9KS4KCkBpdGVtIEBjb2Rle2Rpc3Qtc2hhcn0KQHRyaW5kZXggZGlzdC1zaGFyCkBjbWlu ZGV4IHNoYXIKR2VuZXJhdGUgYSBAc2FtcHtzaGFyfSBhcmNoaXZlIG9mIHRoZSBkaXN0cmlidXRp b24uICBUaGlzIGZvcm1hdAphcmNoaXZlIGlzIG9ic29sZXNjZW50LCBhbmQgdXNlIG9mIHRoaXMg b3B0aW9uIGlzIGRlcHJlY2F0ZWQuCkl0IGFuZCB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbmFs aXR5IHdpbGwgYmUgcmVtb3ZlZCBhbHRvZ2V0aGVyCmluIEF1dG9tYWtlIDIuMC4KCkBpdGVtIEBj b2Rle2Rpc3QtdGFyWn0KQHRyaW5kZXggZGlzdC10YXJaCkBjbWluZGV4IGNvbXByZXNzCkdlbmVy YXRlIGEgdGFyIGFyY2hpdmUgb2YgdGhlIGRpc3RyaWJ1dGlvbiwgY29tcHJlc3NlZCB3aXRoIHRo ZQpoaXN0b3JpY2FsIChhbmQgb2Jzb2xlc2NlbnQpIHByb2dyYW0gQGNvbW1hbmR7Y29tcHJlc3N9 LiAgVGhpcwpvcHRpb24gaXMgZGVwcmVjYXRlZCwgYW5kIGl0IGFuZCB0aGUgY29ycmVzcG9uZGlu ZyBmdW5jdGlvbmFsaXR5CndpbGwgYmUgcmVtb3ZlZCBhbHRvZ2V0aGVyIGluIEF1dG9tYWtlIDIu MC4KCkBlbmQgdGFibGUKCkB0cmluZGV4IGRpc3QtYWxsClRoZSBydWxlIEBjb2Rle2Rpc3R9IChh bmQgaXRzIGhpc3RvcmljYWwgc3lub255bSBAY29kZXtkaXN0LWFsbH0pCndpbGwgY3JlYXRlIGFy Y2hpdmVzIGluIGFsbCB0aGUgZW5hYmxlZCBmb3JtYXRzIChAcHhyZWZ7TGlzdCBvZgpBdXRvbWFr ZSBvcHRpb25zfSBmb3IgaG93IHRvIGNoYW5nZSB0aGlzIGxpc3QpLiAgQnkgZGVmYXVsdCwgb25s eQp0aGUgQGNvZGV7ZGlzdC1nemlwfSB0YXJnZXQgaXMgZW5hYmxlZCBieSBAY29kZXtkaXN0fS4K CgpAbm9kZSBUZXN0cwpAY2hhcHRlciBTdXBwb3J0IGZvciB0ZXN0IHN1aXRlcwoKQGNpbmRleCBU ZXN0IHN1aXRlcwpAY2luZGV4IEBjb2Rle21ha2UgY2hlY2t9CkB0cmluZGV4IGNoZWNrCgpBdXRv bWFrZSBjYW4gZ2VuZXJhdGUgY29kZSB0byBoYW5kbGUgdHdvIGtpbmRzIG9mIHRlc3Qgc3VpdGVz LiAgT25lIGlzCmJhc2VkIG9uIGludGVncmF0aW9uIHdpdGggdGhlIEBjb21tYW5ke2RlamFnbnV9 IGZyYW1ld29yay4gIFRoZSBvdGhlcgooYW5kIG1vc3QgdXNlZCkgZm9ybSBpcyBiYXNlZCBvbiB0 aGUgdXNlIG9mIGdlbmVyaWMgdGVzdCBzY3JpcHRzLCBhbmQKaXRzIGFjdGl2YXRpb24gaXMgdHJp Z2dlcmVkIGJ5IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBzcGVjaWFsIEBjb2Rle1RFU1RTfQp2YXJp YWJsZS4gIFRoaXMgc2Vjb25kIGZvcm0gYWxsb3dzIGZvciB2YXJpb3VzIGRlZ3JlZXMgb2Ygc29w aGlzdGljYXRpb24KYW5kIGN1c3RvbWl6YXRpb247IGluIHBhcnRpY3VsYXIsIGl0IGFsbG93cyBm b3IgY29uY3VycmVudCBleGVjdXRpb24Kb2YgdGVzdCBzY3JpcHRzLCB1c2Ugb2YgZXN0YWJsaXNo ZWQgdGVzdCBwcm90b2NvbHMgc3VjaCBhcyBUQVAsIGFuZApkZWZpbml0aW9uIG9mIGN1c3RvbSB0 ZXN0IGRyaXZlcnMgYW5kIHRlc3QgcnVubmVycy4KCkBub2luZGVudApJbiBlaXRoZXIgY2FzZSwg dGhlIHRlc3RzdWl0ZSBpcyBpbnZva2VkIHZpYSBAc2FtcHttYWtlIGNoZWNrfS4KCkBtZW51Ciog R2VuZXJhbGl0aWVzIGFib3V0IFRlc3Rpbmc6OiAgQ29uY2VwdHMgYW5kIHRlcm1pbm9sb2d5IGFi b3V0IHRlc3RpbmcKKiBTaW1wbGUgVGVzdHM6OiAgICAgICAgICAgICAgICBMaXN0aW5nIHRlc3Qg c2NyaXB0cyBpbiBAY29kZXtURVNUU30KKiBDdXN0b20gVGVzdCBEcml2ZXJzOjogICAgICAgICBX cml0aW5nIGFuZCB1c2luZyBjdXN0b20gdGVzdCBkcml2ZXJzCiogVXNpbmcgdGhlIFRBUCB0ZXN0 IHByb3RvY29sOjogSW50ZWdyYXRpbmcgdGVzdCBzY3JpcHRzIHRoYXQgdXNlIHRoZSBUQVAgcHJv dG9jb2wKKiBEZWphR251IFRlc3RzOjogICAgICAgICAgICAgICBJbnRlcmZhY2luZyB3aXRoIHRo ZSBAY29tbWFuZHtkZWphZ251fSB0ZXN0aW5nIGZyYW1ld29yawoqIEluc3RhbGwgVGVzdHM6OiAg ICAgICAgICAgICAgIFJ1bm5pbmcgdGVzdHMgb24gaW5zdGFsbGVkIHBhY2thZ2VzCkBlbmQgbWVu dQoKQG5vZGUgR2VuZXJhbGl0aWVzIGFib3V0IFRlc3RpbmcKQHNlY3Rpb24gR2VuZXJhbGl0aWVz IGFib3V0IFRlc3RpbmcKClRoZSBwdXJwb3NlIG9mIHRlc3RpbmcgaXMgdG8gZGV0ZXJtaW5lIHdo ZXRoZXIgYSBwcm9ncmFtIG9yIHN5c3RlbSBiZWhhdmVzCmFzIGV4cGVjdGVkIChlLmcuLCBrbm93 biBpbnB1dHMgcHJvZHVjZSB0aGUgZXhwZWN0ZWQgb3V0cHV0cywgZXJyb3IKY29uZGl0aW9ucyBh cmUgY29ycmVjdGx5IGhhbmRsZWQgb3IgcmVwb3J0ZWQsIGFuZCBvbGRlciBidWdzIGRvIG5vdApy ZXN1cmZhY2UpLgoKQGNpbmRleCB0ZXN0IGNhc2UKVGhlIG1pbmltYWwgdW5pdCBvZiB0ZXN0aW5n IGlzIHVzdWFsbHkgY2FsbGVkIEBlbXBoe3Rlc3QgY2FzZX0sIG9yIHNpbXBseQpAZW1waHt0ZXN0 fS4gIEhvdyBhIHRlc3QgY2FzZSBpcyBkZWZpbmVkIG9yIGRlbGltaXRlZCwgYW5kIGV2ZW4gd2hh dApleGFjdGx5IEBlbXBoe2NvbnN0aXR1dGVzfSBhIHRlc3QgY2FzZSwgZGVwZW5kcyBoZWF2aWx5 IG9uIHRoZSB0ZXN0aW5nCnBhcmFkaWdtIGFuZC9vciBmcmFtZXdvcmsgaW4gdXNlLCBzbyB3ZSB3 b24ndCBhdHRlbXB0IGFueSBtb3JlIHByZWNpc2UKZGVmaW5pdGlvbi4gIFRoZSBzZXQgb2YgdGhl IHRlc3QgY2FzZXMgZm9yIGEgZ2l2ZW4gcHJvZ3JhbSBvciBzeXN0ZW0KY29uc3RpdHV0ZXMgaXRz IEBlbXBoe3Rlc3RzdWl0ZX0uCgpAY2luZGV4IHRlc3QgaGFybmVzcwpAY2luZGV4IHRlc3RzdWl0 ZSBoYXJuZXNzCkEgQGVtcGh7dGVzdCBoYXJuZXNzfSAoYWxzbyBAZW1waHt0ZXN0c3VpdGUgaGFy bmVzc30pIGlzIGEgcHJvZ3JhbSBvcgpzb2Z0d2FyZSBjb21wb25lbnQgdGhhdCBleGVjdXRlcyBh bGwgKG9yIHBhcnQgb2YpIHRoZSBkZWZpbmVkIHRlc3QgY2FzZXMsCmFuYWx5emVzIHRoZWlyIG91 dGNvbWVzLCBhbmQgcmVwb3J0cyBvciByZWdpc3RlcnMgdGhlc2Ugb3V0Y29tZXMKYXBwcm9wcmlh dGVseS4gIEFnYWluLCB0aGUgZGV0YWlscyBvZiBob3cgdGhpcyBpcyBhY2NvbXBsaXNoZWQgKGFu ZCBob3cKdGhlIGRldmVsb3BlciBhbmQgdXNlciBjYW4gaW5mbHVlbmNlIGl0IG9yIGludGVyZmFj ZSB3aXRoIGl0KSB2YXJpZXMKd2lsZGx5LCBhbmQgd2UnbGwgYXR0ZW1wdCBubyBwcmVjaXNlIGRl ZmluaXRpb24uCgpAY2luZGV4IHRlc3QgcGFzcwpAY2luZGV4IHRlc3QgZmFpbHVyZQpBIHRlc3Qg aXMgc2FpZCB0byBAZW1waHtwYXNzfSB3aGVuIGl0IGNhbiBkZXRlcm1pbmUgdGhhdCB0aGUgY29u ZGl0aW9uIG9yCmJlaGF2aW9yIGl0IG1lYW5zIHRvIHZlcmlmeSBob2xkcywgYW5kIGlzIHNhaWQg dG8gQGVtcGh7ZmFpbH0gd2hlbiBpdCBjYW4KZGV0ZXJtaW5lIHRoYXQgc3VjaCBjb25kaXRpb24g b2YgYmVoYXZpb3IgZG9lcyBAZW1waHtub3R9IGhvbGQuCgpAY2luZGV4IHRlc3Qgc2tpcApTb21l dGltZXMsIHRlc3RzIGNhbiByZWx5IG9uIG5vbi1wb3J0YWJsZSB0b29scyBvciBwcmVyZXF1aXNp dGVzLCBvcgpzaW1wbHkgbWFrZSBubyBzZW5zZSBvbiBhIGdpdmVuIHN5c3RlbSAoZm9yIGV4YW1w bGUsIGEgdGVzdCBjaGVja2luZyBhCldpbmRvd3Mtc3BlY2lmaWMgZmVhdHVyZSBtYWtlcyBubyBz ZW5zZSBvbiBhIEdOVS9MaW51eCBzeXN0ZW0pLiAgSW4KdGhpcyBjYXNlLCBhY2NvcmRpbmdseSB0 byB0aGUgZGVmaW5pdGlvbiBhYm92ZSwgdGhlIHRlc3RzIGNhbiBuZWl0aGVyCmJlIGNvbnNpZGVy ZWQgcGFzc2VkIG5vciBmYWlsZWQ7IGluc3RlYWQsIHRoZXkgYXJlIEBlbXBoe3NraXBwZWR9LAp0 aGF0IGlzLCB0aGV5IGFyZSBub3QgcnVuLCBvciB0aGVpciByZXN1bHQgaXMgaW4gYW55IGNhc2Ug aWdub3JlZCBmb3IKd2hhdCBjb25jZXJucyB0aGUgY291bnQgb2YgZmFpbHVyZXMgYW5kIHN1Y2Nl c3Nlcy4gIFNraXBzIGFyZSB1c3VhbGx5CmV4cGxpY2l0bHkgcmVwb3J0ZWQgdGhvdWdoLCBzbyB0 aGF0IHRoZSB1c2VyIHdpbGwgYmUgYXdhcmUgdGhhdCBub3QKYWxsIG9mIHRoZSB0ZXN0c3VpdGUg aGFzIGJlZW4gcnVuLgoKQGNpbmRleCB4ZmFpbApAY2luZGV4IGV4cGVjdGVkIGZhaWx1cmUKQGNp bmRleCBleHBlY3RlZCB0ZXN0IGZhaWx1cmUKQGNpbmRleCB4cGFzcwpAY2luZGV4IHVuZXhwZWN0 ZWQgcGFzcwpAY2luZGV4IHVuZXhwZWN0ZWQgdGVzdCBwYXNzCkl0J3Mgbm90IHVuY29tbW9uLCBl c3BlY2lhbGx5IGR1cmluZyBlYXJseSBkZXZlbG9wbWVudCBzdGFnZXMsIHRoYXQKc29tZSB0ZXN0 cyBmYWlsIGZvciBrbm93biByZWFzb25zLCBhbmQgdGhhdCB0aGUgZGV2ZWxvcGVyIGRvZXNuJ3Qg d2FudAp0byB0YWNrbGUgdGhlc2UgZmFpbHVyZXMgaW1tZWRpYXRlbHkgKHRoaXMgaXMgZXNwZWNp YWxseSB0cnVlIHdoZW4gdGhlCmZhaWxpbmcgdGVzdHMgZGVhbCB3aXRoIGNvcm5lciBjYXNlcyku ICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIGJldHRlcgpwb2xpY3kgaXMgdG8gZGVjbGFyZSB0aGF0 IGVhY2ggb2YgdGhvc2UgZmFpbHVyZXMgaXMgYW4gQGVtcGh7ZXhwZWN0ZWQKZmFpbHVyZX0gKG9y IEBlbXBoe3hmYWlsfSkuICBXaGVuIHdyaXRpbmcgc3VjaCBhIHRlc3QsIGl0IGlzIGhpZ2hseQpk ZXNpcmFibGUgdG8gbm90ZSBpbiB0aGUgdGVzdCB3aGF0IGhhcyB0byBoYXBwZW4gdG8gbWFrZSB0 aGUgdGVzdApzdWNjZWVkLiAgSW4gY2FzZSBhIHRlc3QgdGhhdCBpcyBleHBlY3RlZCB0byBmYWls IGVuZHMgdXAgcGFzc2luZwppbnN0ZWFkLCBtYW55IHRlc3RpbmcgZW52aXJvbm1lbnRzIHdpbGwg ZmxhZyB0aGUgcmVzdWx0IGFzIGEgc3BlY2lhbApraW5kIG9mIGZhaWx1cmUgY2FsbGVkIEBlbXBo e3VuZXhwZWN0ZWQgcGFzc30gKG9yIEBlbXBoe3hwYXNzfSkuCgpBbiBleHBlY3RlZCBmYWlsdXJl IHJlc3VsdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgY29udGVudHMgb2YgdGhlIHRlc3QKaXRzZWxm LiAgRm9yIGV4YW1wbGUsIGEgdGVzdCBtaWdodCBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gc3lzdGVt IGNhbGwKY29ycmVjdGx5IHJldHVybnMgZmFpbHVyZSBnaXZlbiBhbiBpbnZhbGlkIGFyZ3VtZW50 LiAgSWYgc28sIHRoZW4gdGhlCkBlbXBoe3Rlc3R9IHBhc3NlcywgZXZlbiB0aG91Z2ggaXQgd2Fz IHRlc3RpbmcgYSBmYWlsdXJlIGNvbmRpdGlvbi4KCkBjaW5kZXggaGFyZCBlcnJvcgpAY2luZGV4 IERpc3RpbmN0aW9uIGJldHdlZW4gZXJyb3JzIGFuZCBmYWlsdXJlcyBpbiB0ZXN0c3VpdGVzCk1h bnkgdGVzdGluZyBlbnZpcm9ubWVudHMgYW5kIGZyYW1ld29ya3MgZGlzdGluZ3Vpc2ggYmV0d2Vl biB0ZXN0IGZhaWx1cmVzCmFuZCBoYXJkIGVycm9ycy4gIEFzIHdlJ3ZlIHNlZW4sIGEgdGVzdCBm YWlsdXJlIGhhcHBlbnMgd2hlbiBzb21lIGludmFyaWFudApvciBleHBlY3RlZCBiZWhhdmlvciBv ZiB0aGUgc29mdHdhcmUgdW5kZXIgdGVzdCBpcyBub3QgbWV0LiAgQSBAZW1waHtoYXJkCmVycm9y fSBoYXBwZW5zIHdoZW4gZS5nLiwgdGhlIHNldC11cCBvZiBhIHRlc3QgY2FzZSBzY2VuYXJpbyBm YWlscywgb3Igd2hlbgpzb21lIG90aGVyIHVuZXhwZWN0ZWQgb3IgaGlnaGx5IHVuZGVzaXJhYmxl IGNvbmRpdGlvbiBpcyBlbmNvdW50ZXJlZCAoZm9yCmV4YW1wbGUsIHRoZSBwcm9ncmFtIHVuZGVy IHRlc3QgZXhwZXJpZW5jZXMgYSBzZWdtZW50YXRpb24gZmF1bHQpLgoKQG5vZGUgU2ltcGxlIFRl c3RzCkBzZWN0aW9uIFNpbXBsZSBUZXN0cwoKQG1lbnUKKiBTY3JpcHRzLWJhc2VkIFRlc3RzdWl0 ZXM6OiAgICBBdXRvbWFrZS1zcGVjaWZpYyBjb25jZXB0cyBhbmQgdGVybWlub2xvZ3kKKiBTZXJp YWwgVGVzdCBIYXJuZXNzOjogICAgICAgICBPbGRlciAoYW5kIGRpc2NvdXJhZ2VkKSBzZXJpYWwg dGVzdCBoYXJuZXNzCiogUGFyYWxsZWwgVGVzdCBIYXJuZXNzOjogICAgICAgR2VuZXJpYyBjb25j dXJyZW50IHRlc3QgaGFybmVzcwpAZW5kIG1lbnUKCkBub2RlIFNjcmlwdHMtYmFzZWQgVGVzdHN1 aXRlcwpAc3Vic2VjdGlvbiBTY3JpcHRzLWJhc2VkIFRlc3RzdWl0ZXMKCklmIHRoZSBzcGVjaWFs IHZhcmlhYmxlIEBjb2Rle1RFU1RTfSBpcyBkZWZpbmVkLCBpdHMgdmFsdWUgaXMgdGFrZW4gdG8g YmUKYSBsaXN0IG9mIHByb2dyYW1zIG9yIHNjcmlwdHMgdG8gcnVuIGluIG9yZGVyIHRvIGRvIHRo ZSB0ZXN0aW5nLiAgVW5kZXIKdGhlIGFwcHJvcHJpYXRlIGNpcmN1bXN0YW5jZXMsIGl0J3MgcG9z c2libGUgZm9yIEBjb2Rle1RFU1RTfSB0byBsaXN0CmFsc28gZGF0YSBmaWxlcyB0byBiZSBwYXNz ZWQgdG8gb25lIG9yIG1vcmUgdGVzdCBzY3JpcHRzIGRlZmluZWQgYnkKZGlmZmVyZW50IG1lYW5z ICh0aGUgc28tY2FsbGVkIGBgbG9nIGNvbXBpbGVycycnLCBAcHhyZWZ7UGFyYWxsZWwgVGVzdApI YXJuZXNzfSkuCgpUZXN0IHNjcmlwdHMgY2FuIGJlIGV4ZWN1dGVkIHNlcmlhbGx5IG9yIGNvbmN1 cnJlbnRseS4gIEF1dG9tYWtlIHN1cHBvcnRzCmJvdGggdGhlc2Uga2luZHMgb2YgdGVzdCBleGVj dXRpb24sIHdpdGggdGhlIHBhcmFsbGVsIHRlc3QgaGFybmVzcyBiZWluZwp0aGUgZGVmYXVsdC4g IFRoZSBjb25jdXJyZW50IHRlc3QgaGFybmVzcyByZWxpZXMgb24gdGhlIGNvbmN1cnJlbmNlCmNh cGFiaWxpdGllcyAoaWYgYW55KSBvZmZlcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIEBjb21tYW5ke21h a2V9CmltcGxlbWVudGF0aW9uLCBhbmQgY2FuIHRodXMgb25seSBiZSBhcyBnb29kIGFzIHRob3Nl IGFyZS4KCkJ5IGRlZmF1bHQsIG9ubHkgdGhlIGV4aXQgc3RhdHVzZXMgb2YgdGhlIHRlc3Qgc2Ny aXB0cyBhcmUgY29uc2lkZXJlZCB3aGVuCmRldGVybWluaW5nIHRoZSB0ZXN0c3VpdGUgb3V0Y29t ZS4gIEJ1dCBBdXRvbWFrZSBhbGxvd3MgYWxzbyB0aGUgdXNlIG9mCm1vcmUgY29tcGxleCB0ZXN0 IHByb3RvY29scywgZWl0aGVyIHN0YW5kYXJkIChAcHhyZWZ7VXNpbmcgdGhlIFRBUCB0ZXN0CnBy b3RvY29sfSkgb3IgY3VzdG9tIChAcHhyZWZ7Q3VzdG9tIFRlc3QgRHJpdmVyc30pLiAgWW91IGNh bid0CmVuYWJsZSBzdWNoIHByb3RvY29scyB3aGVuIHRoZSBzZXJpYWwgaGFybmVzcyBpcyB1c2Vk LCB0aG91Z2guCkluIHRoZSByZXN0IG9mIHRoaXMgc2VjdGlvbiB3ZSBhcmUgZ29pbmcgdG8gY29u Y2VudHJhdGUgbW9zdGx5IG9uCnByb3RvY29sLWxlc3MgdGVzdHMsIHNpbmNlIHdlIGNvdmVyIHRl c3QgcHJvdG9jb2xzIGluIGEgbGF0ZXIgc2VjdGlvbgooYWdhaW4sIEBweHJlZntDdXN0b20gVGVz dCBEcml2ZXJzfSkuCgpAY2luZGV4IEV4aXQgc3RhdHVzIDc3LCBzcGVjaWFsIGludGVycHJldGF0 aW9uCkBjaW5kZXggRXhpdCBzdGF0dXMgOTksIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24KV2hlbiBu byB0ZXN0IHByb3RvY29sIGlzIGluIHVzZSwgYW4gZXhpdCBzdGF0dXMgb2YgMCBmcm9tIGEgdGVz dCBzY3JpcHQgd2lsbApkZW5vdGUgYSBzdWNjZXNzLCBhbiBleGl0IHN0YXR1cyBvZiA3NyBhIHNr aXBwZWQgdGVzdCwgYW4gZXhpdCBzdGF0dXMgb2YgOTkKYSBoYXJkIGVycm9yLCBhbmQgYW55IG90 aGVyIGV4aXQgc3RhdHVzIHdpbGwgZGVub3RlIGEgZmFpbHVyZS4KCkBjaW5kZXggVGVzdHMsIGV4 cGVjdGVkIGZhaWx1cmUKQGNpbmRleCBFeHBlY3RlZCB0ZXN0IGZhaWx1cmUKQHZpbmRleCBYRkFJ TF9URVNUUwpAdmluZGV4IERJU0FCTEVfSEFSRF9FUlJPUlMKQGNpbmRleCBEaXNhYmxpbmcgaGFy ZCBlcnJvcnMKWW91IG1heSBkZWZpbmUgdGhlIHZhcmlhYmxlIEBjb2Rle1hGQUlMX1RFU1RTfSB0 byBhIGxpc3Qgb2YgdGVzdHMKKHVzdWFsbHkgYSBzdWJzZXQgb2YgQGNvZGV7VEVTVFN9KSB0aGF0 IGFyZSBleHBlY3RlZCB0byBmYWlsOyB0aGlzIHdpbGwKZWZmZWN0aXZlbHkgcmV2ZXJzZSB0aGUg cmVzdWx0IG9mIHRob3NlIHRlc3RzICh3aXRoIHRoZSBwcm92aXNpb24gdGhhdApza2lwcyBhbmQg aGFyZCBlcnJvcnMgcmVtYWluIHVudG91Y2hlZCkuICBZb3UgbWF5IGFsc28gaW5zdHJ1Y3QgdGhl CnRlc3RzdWl0ZSBoYXJuZXNzIHRvIHRyZWF0IGhhcmQgZXJyb3JzIGxpa2Ugc2ltcGxlIGZhaWx1 cmVzLCBieSBkZWZpbmluZwp0aGUgQGNvZGV7RElTQUJMRV9IQVJEX0VSUk9SU30gbWFrZSB2YXJp YWJsZSB0byBhIG5vbmVtcHR5IHZhbHVlLgoKTm90ZSBob3dldmVyIHRoYXQsIGZvciB0ZXN0cyBi YXNlZCBvbiBtb3JlIGNvbXBsZXggdGVzdCBwcm90b2NvbHMsCnRoZSBleGFjdCBlZmZlY3RzIG9m IEBjb2Rle1hGQUlMX1RFU1RTfSBhbmQgQGNvZGV7RElTQUJMRV9IQVJEX0VSUk9SU30KbWlnaHQg Y2hhbmdlLCBvciB0aGV5IG1pZ2h0IGV2ZW4gaGF2ZSBubyBlZmZlY3QgYXQgYWxsIChmb3IgZXhh bXBsZSwKQGMgS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0YXAtbm8tZGlzYWJsZS1oYXJkLWVycm9y cy5zaAppbiB0ZXN0cyB1c2luZyBUQVAsIHRoZXJlIGlzIG5vIHdheSB0byBkaXNhYmxlIGhhcmQg ZXJyb3JzLCBhbmQgdGhlCkBjb2Rle0RJU0FCTEVfSEFSRF9FUlJPUlN9IHZhcmlhYmxlIGhhcyBu byBlZmZlY3Qgb24gdGhlbSkuCgpAYW5jaG9ye1Rlc3RzdWl0ZSBwcm9ncmVzcyBvbiBjb25zb2xl fQpAY2luZGV4IFRlc3RzdWl0ZSBwcm9ncmVzcyBvbiBjb25zb2xlClRoZSByZXN1bHQgb2YgZWFj aCB0ZXN0IGNhc2UgcnVuIGJ5IHRoZSBzY3JpcHRzIGluIEBjb2Rle1RFU1RTfSB3aWxsIGJlCnBy aW50ZWQgb24gc3RhbmRhcmQgb3V0cHV0LCBhbG9uZyB3aXRoIHRoZSB0ZXN0IG5hbWUuICBGb3Ig dGVzdCBwcm90b2NvbHMKdGhhdCBhbGxvdyBtb3JlIHRlc3QgY2FzZXMgcGVyIHRlc3Qgc2NyaXB0 IChzdWNoIGFzIFRBUCksIGEgbnVtYmVyLAppZGVudGlmaWVyIGFuZC9vciBicmllZiBkZXNjcmlw dGlvbiBzcGVjaWZpYyBmb3IgdGhlIHNpbmdsZSB0ZXN0IGNhc2UgaXMKZXhwZWN0ZWQgdG8gYmUg cHJpbnRlZCBpbiBhZGRpdGlvbiB0byB0aGUgbmFtZSBvZiB0aGUgdGVzdCBzY3JpcHQuICBUaGUK cG9zc2libGUgcmVzdWx0cyAod2hvc2UgbWVhbmluZ3Mgc2hvdWxkIGJlIGNsZWFyIGZyb20gdGhl IHByZXZpb3VzCkByZWZ7R2VuZXJhbGl0aWVzIGFib3V0IFRlc3Rpbmd9KSBhcmUgQGNvZGV7UEFT U30sIEBjb2Rle0ZBSUx9LApAY29kZXtTS0lQfSwgQGNvZGV7WEZBSUx9LCBAY29kZXtYUEFTU30g YW5kIEBjb2Rle0VSUk9SfS4gIEhlcmUgaXMgYW4KZXhhbXBsZSBvZiBvdXRwdXQgZnJvbSBhIGh5 cG90aGV0aWNhbCB0ZXN0c3VpdGUgdGhhdCB1c2VzIGJvdGggcGxhaW4KYW5kIFRBUCB0ZXN0czoK QGMgS2VlcCBpbiBzeW5jIHdpdGggdGFwLWRvYy5zaApAZXhhbXBsZQpQQVNTOiBmb28uc2gKUEFT UzogemFyZG96LnRhcCAxIC0gRGFlbW9uIHN0YXJ0ZWQKUEFTUzogemFyZG96LnRhcCAyIC0gRGFl bW9uIHJlc3BvbmRpbmcKU0tJUDogemFyZG96LnRhcCAzIC0gRGFlbW9uIHVzZXMgL3Byb2MgIyBT S0lQIC9wcm9jIGlzIG5vdCBtb3VudGVkClBBU1M6IHphcmRvei50YXAgNCAtIERhZW1vbiBzdG9w cGVkClNLSVA6IGJhci5zaApQQVNTOiBtdS50YXAgMQpYRkFJTDogbXUudGFwIDIgIyBUT0RPIGZy b2JuaWNhdGlvbiBub3QgeWV0IGltcGxlbWVudGVkCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CkEg dGVzdHN1aXRlIHN1bW1hcnkgKGV4cGVjdGVkIHRvIHJlcG9ydCBhdCBsZWFzdCB0aGUgbnVtYmVy IG9mIHJ1biwKc2tpcHBlZCBhbmQgZmFpbGVkIHRlc3RzKSB3aWxsIGJlIHByaW50ZWQgYXQgdGhl IGVuZCBvZiB0aGUgdGVzdHN1aXRlCnJ1bi4gIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBsaW5lIG9m IHRoZSBzdW1tYXJ5IGhhcyB0aGUgZm9ybToKCkBleGFtcGxlClRlc3RzdWl0ZSBzdW1tYXJ5IGZv ciBAdmFye3BhY2thZ2Utc3RyaW5nfQpAZW5kIGV4YW1wbGUKCkBjIFNlZSBhdXRvbWFrZSBidWcj MTE3NDUuCkB2aW5kZXggQU1fVEVTVFNVSVRFX1NVTU1BUllfSEVBREVSCkBub2luZGVudAp3aGVy ZSBAdmFye3BhY2thZ2Utc3RyaW5nfSBpcyB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGUgcGFj a2FnZS4gIElmCnlvdSBoYXZlIHNldmVyYWwgaW5kZXBlbmRlbnQgdGVzdCBzdWl0ZXMgZm9yIGRp ZmZlcmVudCBwYXJ0cyBvZiB0aGUKcGFja2FnZSwgdGhvdWdoLCBpdCBjYW4gYmUgbWlzbGVhZGlu ZyBmb3IgZWFjaCBzdWl0ZSB0byBpbXBseSBpdCBpcwpmb3IgdGhlIHdob2xlIHBhY2thZ2UuICBP ciwgaW4gY29tcGxleCBwcm9qZWN0cywgeW91IG1heSB3aXNoIHRvIGFkZAp0aGUgY3VycmVudCBk aXJlY3Rvcnkgb3Igb3RoZXIgaW5mb3JtYXRpb24gdG8gdGhlIHRlc3RzdWl0ZSBoZWFkZXIKbGlu ZS4gIFNvIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIEBzYW1weyBmb3IgQHZhcntwYWNrYWdlLXN0cmlu Z319IHN1ZmZpeApvbiB0aGF0IGxpbmUgYnkgc2V0dGluZyB0aGUgQGNvZGV7QU1fVEVTVFNVSVRF X1NVTU1BUllfSEVBREVSfQp2YXJpYWJsZS4gIFRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGlz IHVzZWQgdW5xdW90ZWQgaW4gYSBzaGVsbCBlY2hvCmNvbW1hbmQsIHNvIHlvdSBtdXN0IGluY2x1 ZGUgYW55IG5lY2Vzc2FyeSBxdW90ZXMuICBGb3IgZXhhbXBsZSwgdGhlCmRlZmF1bHQgdmFsdWUg aXMKCkBleGFtcGxlCkFNX1RFU1RTVUlURV9TVU1NQVJZX0hFQURFUiA9ICcgZm9yICQoUEFDS0FH RV9TVFJJTkcpJwpAZW5kIGV4YW1wbGUKCkBub2luZGVudAppbmNsdWRpbmcgdGhlIGRvdWJsZSBx dW90ZXMgKGludGVycHJldGVkIGJ5IHRoZSBzaGVsbCkgYW5kIHRoZSBsZWFkaW5nCnNwYWNlIChz aW5jZSB0aGUgdmFsdWUgaXMgb3V0cHV0IGRpcmVjdGx5IGFmdGVyIHRoZSBAc2FtcHtUZXN0c3Vp dGUKc3VtbWFyeX0pLiAgVGhlIEBjb2RleyQoUEFDS0FHRV9TVFJJTkcpfSBpcyBzdWJzdGl0dXRl ZCBieSBAY29kZXttYWtlfS4KCkBhbmNob3J7U2ltcGxlIHRlc3RzIGFuZCBjb2xvci10ZXN0c30K QHZpbmRleCBBTV9DT0xPUl9URVNUUwpAY2luZGV4IENvbG9yaXplZCB0ZXN0c3VpdGUgb3V0cHV0 CklmIHRoZSBzdGFuZGFyZCBvdXRwdXQgaXMgY29ubmVjdGVkIHRvIGEgY2FwYWJsZSB0ZXJtaW5h bCwgdGhlbiB0aGUgdGVzdApyZXN1bHRzIGFuZCB0aGUgc3VtbWFyeSBhcmUgY29sb3JlZCBhcHBy b3ByaWF0ZWx5LiAgVGhlIGRldmVsb3BlciBhbmQgdGhlCnVzZXIgY2FuIGRpc2FibGUgY29sb3Jl ZCBvdXRwdXQgYnkgc2V0dGluZyB0aGUgQGNvbW1hbmR7bWFrZX0gdmFyaWFibGUKQHNhbXB7QU1f Q09MT1JfVEVTVFM9bm99OyB0aGUgdXNlciBjYW4gaW4gYWRkaXRpb24gZm9yY2UgY29sb3JlZCBv dXRwdXQKZXZlbiB3aXRob3V0IGEgY29ubmVjdGluZyB0ZXJtaW5hbCB3aXRoIEBzYW1we0FNX0NP TE9SX1RFU1RTPWFsd2F5c30uCkl0J3MgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCBzb21lIEBjb21t YW5ke21ha2V9IGltcGxlbWVudGF0aW9ucywKd2hlbiB1c2VkIGluIHBhcmFsbGVsIG1vZGUsIGhh dmUgc2xpZ2h0bHkgZGlmZmVyZW50IHNlbWFudGljcwooQHB4cmVme1BhcmFsbGVsIG1ha2UsLCwg YXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9KSwgd2hpY2ggY2FuCmJyZWFrIHRoZSBhdXRv bWF0aWMgZGV0ZWN0aW9uIG9mIGEgY29ubmVjdGlvbiB0byBhIGNhcGFibGUgdGVybWluYWwuCklm IHRoaXMgaXMgdGhlIGNhc2UsIHRoZSB1c2VyIHdpbGwgaGF2ZSB0byByZXNvcnQgdG8gdGhlIHVz ZSBvZgpAc2FtcHtBTV9DT0xPUl9URVNUUz1hbHdheXN9IGluIG9yZGVyIHRvIGhhdmUgdGhlIHRl c3RzdWl0ZSBvdXRwdXQKY29sb3JpemVkLgoKVGVzdCBwcm9ncmFtcyB0aGF0IG5lZWQgZGF0YSBm aWxlcyBzaG91bGQgbG9vayBmb3IgdGhlbSBpbiBAY29kZXtzcmNkaXJ9Cih3aGljaCBpcyBib3Ro IGEgbWFrZSB2YXJpYWJsZSBhbmQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbWFkZSBhdmFpbGFi bGUKdG8gdGhlIHRlc3RzKSwgc28gdGhhdCB0aGV5IHdvcmsgd2hlbiBidWlsZGluZyBpbiBhIHNl cGFyYXRlIGRpcmVjdG9yeQooQHB4cmVme0J1aWxkIERpcmVjdG9yaWVzLCAsIEJ1aWxkIERpcmVj dG9yaWVzICwgYXV0b2NvbmYsClRoZSBBdXRvY29uZiBNYW51YWx9KSwgYW5kIGluIHBhcnRpY3Vs YXIgZm9yIHRoZSBAY29kZXtkaXN0Y2hlY2t9IHJ1bGUKKEBweHJlZntDaGVja2luZyB0aGUgRGlz dHJpYnV0aW9ufSkuCgpAdmluZGV4IFRFU1RTCkF1dG9tYWtlIGVuc3VyZXMgdGhhdCBlYWNoIGZp bGUgbGlzdGVkIGluIEBjb2Rle1RFU1RTfSBpcyBidWlsdCBiZWZvcmUKaXQgaXMgcnVuOyB5b3Ug Y2FuIGxpc3QgYm90aCBzb3VyY2UgYW5kIGRlcml2ZWQgcHJvZ3JhbXMgKG9yIHNjcmlwdHMpCmlu IEBjb2Rle1RFU1RTfTsgdGhlIGdlbmVyYXRlZCBydWxlIHdpbGwgbG9vayBib3RoIGluIEBjb2Rl e3NyY2Rpcn0gYW5kCmBAZmlsZXsuLn0nLiAgRm9yIGluc3RhbmNlLCB5b3UgbWlnaHQgd2FudCB0 byBydW4gYSBDIHByb2dyYW0gYXMgYSB0ZXN0LgpUbyBkbyB0aGlzIHlvdSB3b3VsZCBsaXN0IGl0 cyBuYW1lIGluIEBjb2Rle1RFU1RTfSBhbmQgYWxzbyBpbgpAY29kZXtjaGVja19QUk9HUkFNU30s IGFuZCB0aGVuIHNwZWNpZnkgaXQgYXMgeW91IHdvdWxkIGFueSBvdGhlcgpwcm9ncmFtLgoKQHZp bmRleCBjaGVja19QUk9HUkFNUwpQcm9ncmFtcyBsaXN0ZWQgaW4gQGNvZGV7Y2hlY2tfUFJPR1JB TVN9IChhbmQgQGNvZGV7Y2hlY2tfTElCUkFSSUVTfSwKQGNvZGV7Y2hlY2tfTFRMSUJSQVJJRVN9 LCAuLi4pIGFyZSBvbmx5IGJ1aWx0IGR1cmluZyBAY29kZXttYWtlCmNoZWNrfSwgbm90IGR1cmlu ZyBAY29kZXttYWtlIGFsbH0uICBZb3Ugc2hvdWxkIGxpc3QgdGhlcmUgYW55IHByb2dyYW0KbmVl ZGVkIGJ5IHlvdXIgdGVzdHMgdGhhdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGJ1aWx0IGJ5IEBjb2Rl e21ha2UKYWxsfS4gIFRoZSBwcm9ncmFtcyBpbiBAY29kZXtjaGVja19QUk9HUkFNU30gYXJlIEBl bXBoe25vdH0KYXV0b21hdGljYWxseSBhZGRlZCB0byBAY29kZXtURVNUU30gYmVjYXVzZSBAY29k ZXtjaGVja19QUk9HUkFNU30KdXN1YWxseSBsaXN0cyBwcm9ncmFtcyB1c2VkIGJ5IHRoZSB0ZXN0 cywgbm90IHRoZSB0ZXN0cyB0aGVtc2VsdmVzLgpJZiBhbGwgeW91ciBwcm9ncmFtcyBhcmUgaW4g ZmFjdCB0ZXN0IGNhc2VzLCB5b3UgY2FuIHNldCBAY29kZXtURVNUUyA9CiQoY2hlY2tfUFJPR1JB TVMpfS4KCkBtZW51CiogVGVzdHN1aXRlIEVudmlyb25tZW50IE92ZXJyaWRlczo6CkBlbmQgbWVu dQoKQG5vZGUgVGVzdHN1aXRlIEVudmlyb25tZW50IE92ZXJyaWRlcwpAc3Vic3Vic2VjdGlvbiBU ZXN0c3VpdGUgRW52aXJvbm1lbnQgT3ZlcnJpZGVzCgpAY2luZGV4IFRlc3RzdWl0ZSBlbnZpcm9u bWVudCBvdmVycmlkZXMKQGNpbmRleCBPdmVycmlkaW5nIHRlc3RzdWl0ZSBlbnZpcm9ubWVudAoK QHZpbmRleCBURVNUU19FTlZJUk9OTUVOVApAdmluZGV4IEFNX1RFU1RTX0VOVklST05NRU5UClRo ZSBAY29kZXtBTV9URVNUU19FTlZJUk9OTUVOVH0gYW5kIEBjb2Rle1RFU1RTX0VOVklST05NRU5U fSB2YXJpYWJsZXMgY2FuCmJlIHVzZWQgdG8gcnVuIGluaXRpYWxpemF0aW9uIGNvZGUgYW5kIHNl dCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZQp0ZXN0IHNjcmlwdHMuICBUaGUgZm9ybWVy IHZhcmlhYmxlIGlzIGRldmVsb3Blci1yZXNlcnZlZCwgYW5kIGNhbiBiZQpkZWZpbmVkIGluIHRo ZSBAZmlsZXtNYWtlZmlsZS5hbX0sIHdoaWxlIHRoZSBsYXR0ZXIgaXMgcmVzZXJ2ZWQgZm9yIHRo ZQp1c2VyLCB3aGljaCBjYW4gZW1wbG95IGl0IHRvIGV4dGVuZCBvciBvdmVycmlkZSB0aGUgc2V0 dGluZ3MgaW4gdGhlCmZvcm1lcjsgZm9yIHRoaXMgdG8gd29yayBwb3J0YWJseSwgaG93ZXZlciwg dGhlIGNvbnRlbnRzIG9mIGEgbm9uLWVtcHR5CkBjb2Rle0FNX1RFU1RTX0VOVklST05NRU5UfSBA ZW1waHttdXN0fSBiZSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaWNvbG9uLgoKQHZpbmRleCBBTV9URVNU U19GRF9SRURJUkVDVApUaGUgQGNvZGV7QU1fVEVTVFNfRkRfUkVESVJFQ1R9IHZhcmlhYmxlIGNh biBiZSB1c2VkIHRvIGRlZmluZSBmaWxlCmRlc2NyaXB0b3IgcmVkaXJlY3Rpb25zIGZvciB0aGUg dGVzdCBzY3JpcHRzLiAgT25lIG1pZ2h0IHRoaW5rIHRoYXQKQGNvZGV7QU1fVEVTVFNfRU5WSVJP Tk1FTlR9IGNvdWxkIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZSwgYnV0IGV4cGVyaWVuY2UKaGFz IHNob3duIHRoYXQgZG9pbmcgc28gcG9ydGFibHkgaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZS4g IFRoZSBtYWluCmh1cmRsZSBpcyBjb25zdGl0dXRlZCBieSBLb3JuIHNoZWxscywgd2hpY2ggdXN1 YWxseSBzZXQgdGhlIGNsb3NlLW9uLWV4ZWMKZmxhZyBvbiBmaWxlIGRlc2NyaXB0b3JzIG9wZW5l ZCB3aXRoIHRoZSBAY29tbWFuZHtleGVjfSBidWlsdGluLCB0aHVzCnJlbmRlcmluZyBhbiBpZGlv bSBsaWtlIEBjb2Rle0FNX1RFU1RTX0VOVklST05NRU5UID0gZXhlYyA5PiYyO30KaW5lZmZlY3R1 YWwuICBUaGlzIGlzc3VlIGFsc28gYWZmZWN0cyBzb21lIEJvdXJuZSBzaGVsbHMsIHN1Y2ggYXMg dGhlCkhQLVVYJ3MgQGNvbW1hbmR7L2Jpbi9zaH0uCgpAYyBLZWVwIGluIHN5bmMgd2l0aCB0ZXN0 cy1lbnZpcm9ubWVudC1iYWNrY29tcGF0LnNoCkBleGFtcGxlCkFNX1RFU1RTX0VOVklST05NRU5U ID0gXAojIyBTb21lIGVudmlyb25tZW50IGluaXRpYWxpemF0aW9ucyBhcmUga2VwdCBpbiBhIHNl cGFyYXRlIHNoZWxsCiMjIGZpbGUgJ3Rlc3RzLWVudi5zaCcsIHdoaWNoIGNhbiBtYWtlIGl0IGVh c2llciB0byBhbHNvIHJ1biB0ZXN0cwojIyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAgLiAkKHNy Y2RpcikvdGVzdHMtZW52LnNoOyBcCiMjIE9uIFNvbGFyaXMsIHByZWZlciBtb3JlIFBPU0lYLWNv bXBsaWFudCB2ZXJzaW9ucyBvZiB0aGUgc3RhbmRhcmQKIyMgdG9vbHMgYnkgZGVmYXVsdC4KICBp ZiB0ZXN0IC1kIC91c3IveHBnNC9iaW47IHRoZW4gXAogICAgUEFUSD0vdXNyL3hwZzQvYmluOiQk UEFUSDsgZXhwb3J0IFBBVEg7IFwKICBmaTsKCkBjICQkIHJlc3RvcmUgZm9udC1sb2NrCiMjIFdp dGggdGhpcywgdGhlIHRlc3Qgc2NyaXB0cyB3aWxsIGJlIGFibGUgdG8gcHJpbnQgZGlhZ25vc3Rp YwojIyBtZXNzYWdlcyB0byB0aGUgb3JpZ2luYWwgc3RhbmRhcmQgZXJyb3Igc3RyZWFtLCBldmVu IGlmIHRoZSB0ZXN0CiMjIGRyaXZlciByZWRpcmVjdHMgdGhlIHN0ZGVyciBvZiB0aGUgdGVzdCBz Y3JpcHRzIHRvIGEgbG9nIGZpbGUKIyMgYmVmb3JlIGV4ZWN1dGluZyB0aGVtLgpBTV9URVNUU19G RF9SRURJUkVDVCA9IDk+JjIKQGVuZCBleGFtcGxlCgpAYyBodHRwczovL2J1Z3MuZ251Lm9yZy80 OTMwOQpBcyBhbm90aGVyIGV4YW1wbGUsIGEgbm90aWNlIHRoYXQgYSB0ZXN0IGlzIHN0YXJ0aW5n IGNhbiBiZSBlbWl0dGVkCnVzaW5nIEBjb2Rle0FNX1RFU1RTX0VOVklST05NRU5UfSAoZm9yIHBh Y2thZ2UgbWFpbnRhaW5lcnMpIG9yCkBjb2Rle1RFU1RTX0VOVklST05NRU5UfSBieSB1c2VyczoK CkBleGFtcGxlCm1ha2UgLWoxMiAuLi4gVEVTVFNfRU5WSVJPTk1FTlQ9J2VjaG8gUlVOTklORzog IiQkZiI7JyBjaGVjawpAZW5kIGV4YW1wbGUKCkBub2luZGVudApUaGUgc2hlbGwgdmFyaWFibGUg QGNvZGV7JGZ9IGNvbnRhaW5zIHRoZSB0ZXN0IG5hbWUuIChBbHRob3VnaAp0ZWNobmljYWxseSB0 aGlzIGlzIG5vdCBndWFyYW50ZWVkLCBpbiBwcmFjdGljZSBpdCBpcyBleHRyZW1lbHkKdW5saWtl bHkgdG8gZXZlciBjaGFuZ2UuKSAgVGhpcyBjYW4gYmUgaGVscGZ1bCB0byBzZWUgd2hlbiB0cnlp bmcgdG8KZGVidWcgdGVzdCBmYWlsdXJlcy4KCk5vdHdpdGhzdGFuZGluZyB0aGVzZSBiZW5lZml0 cywgQGNvZGV7QU1fVEVTVFNfRU5WSVJPTk1FTlR9IGlzLCBmb3IKaGlzdG9yaWNhbCBhbmQgaW1w bGVtZW50YXRpb24gcmVhc29ucywgQGVtcGh7bm90fSBzdXBwb3J0ZWQgYnkgdGhlCnNlcmlhbCBo YXJuZXNzIChAcHhyZWZ7U2VyaWFsIFRlc3QgSGFybmVzc30pLgoKQG5vZGUgU2VyaWFsIFRlc3Qg SGFybmVzcwpAc3Vic2VjdGlvbiBPbGRlciAoYW5kIGRpc2NvdXJhZ2VkKSBTZXJpYWwgVGVzdCBI YXJuZXNzCkBjaW5kZXggQG9wdGlvbntzZXJpYWwtdGVzdHN9LCBVc2luZwoKRmlyc3QsIG5vdGUg dGhhdCB0b2RheSB0aGUgdXNlIG9mIHRoaXMgaGFybmVzcyBpcyBzdHJvbmdseSBkaXNjb3VyYWdl ZCBpbgpmYXZvciBvZiB0aGUgcGFyYWxsZWwgdGVzdCBoYXJuZXNzIChAcHhyZWZ7UGFyYWxsZWwg VGVzdCBIYXJuZXNzfSkuClN0aWxsLCB0aGVyZSBhcmUgYSBAZW1waHtmZXd9IHNpdHVhdGlvbnMg d2hlbiB0aGUgYWR2YW50YWdlcyBvZmZlcmVkIGJ5CnRoZSBwYXJhbGxlbCBoYXJuZXNzIGFyZSBp cnJlbGV2YW50LCBhbmQgd2hlbiB0ZXN0IGNvbmN1cnJlbmN5IGNhbgpldmVuIGNhdXNlIHRyaWNr eSBwcm9ibGVtcy4gIEluIHRob3NlIGNhc2VzLCBpdCBtaWdodCBtYWtlIHNlbnNlIHRvCnN0aWxs IHVzZSB0aGUgc2VyaWFsIGhhcm5lc3MsIGZvciBzaW1wbGljaXR5IGFuZCByZWxpYWJpbGl0eSAo d2Ugc3RpbGwKc3VnZ2VzdCB0cnlpbmcgdG8gZ2l2ZSB0aGUgcGFyYWxsZWwgaGFybmVzcyBhIHNo b3QgdGhvdWdoKS4KClRoZSBzZXJpYWwgdGVzdCBoYXJuZXNzIGlzIGVuYWJsZWQgYnkgdGhlIEF1 dG9tYWtlIG9wdGlvbgpAb3B0aW9ue3NlcmlhbC10ZXN0c30uIEl0IG9wZXJhdGVzIGJ5IHNpbXBs eSBydW5uaW5nIHRoZSB0ZXN0cyBzZXJpYWxseSwKb25lIGF0IHRoZSB0aW1lLCB3aXRob3V0IGFu eSBJL08gcmVkaXJlY3Rpb24uICBJdCdzIHVwIHRvIHRoZSB1c2VyIHRvCmltcGxlbWVudCBsb2dn aW5nIG9mIHRlc3RzJyBvdXRwdXQsIGlmIHRoYXQncyByZXF1aXJlZCBvciBkZXNpcmVkLgoKRm9y IGhpc3RvcmljYWwgYW5kIGltcGxlbWVudGF0aW9uIHJlYXNvbnMsIHRoZSBAY29kZXtBTV9URVNU U19FTlZJUk9OTUVOVH0KdmFyaWFibGUgaXMgQGVtcGh7bm90fSBzdXBwb3J0ZWQgYnkgdGhpcyBo YXJuZXNzIChpdCB3aWxsIGJlIHNpbGVudGx5Cmlnbm9yZWQgaWYgZGVmaW5lZCk7IG9ubHkgQGNv ZGV7VEVTVFNfRU5WSVJPTk1FTlR9IGlzLCBhbmQgaXQgaXMgdG8gYmUKY29uc2lkZXJlZCBhIGRl dmVsb3Blci1yZXNlcnZlZCB2YXJpYWJsZS4gIFRoaXMgaXMgZG9uZSBzbyB0aGF0LCB3aGVuCnVz aW5nIHRoZSBzZXJpYWwgaGFybmVzcywgQGNvZGV7VEVTVFNfRU5WSVJPTk1FTlR9IGNhbiBiZSBk ZWZpbmVkIHRvIGFuCmludm9jYXRpb24gb2YgYW4gaW50ZXJwcmV0ZXIgdGhyb3VnaCB3aGljaCB0 aGUgdGVzdHMgYXJlIHRvIGJlIHJ1bi4KRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHNldHVw IG1heSBiZSB1c2VkIHRvIHJ1biB0ZXN0cyB3aXRoIFBlcmw6CgpAZXhhbXBsZQpURVNUU19FTlZJ Uk9OTUVOVCA9ICQoUEVSTCkgLU1zdHJpY3QgLXcKVEVTVFMgPSBmb28ucGwgYmFyLnBsIGJhei5w bApAZW5kIGV4YW1wbGUKCkBub2luZGVudApJdCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhl IHVzZSBvZiBAY29kZXtURVNUU19FTlZJUk9OTUVOVH0gZW5kb3JzZWQKaGVyZSB3b3VsZCBiZSBA ZW1waHtpbnZhbGlkfSB3aXRoIHRoZSBwYXJhbGxlbCBoYXJuZXNzLiAgVGhhdCBoYXJuZXNzCnBy b3ZpZGVzIGEgbW9yZSBlbGVnYW50IHdheSB0byBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCwgd2l0 aCB0aGUgZnVydGhlcgpiZW5lZml0IG9mIGZyZWVpbmcgdGhlIEBjb2Rle1RFU1RTX0VOVklST05N RU5UfSB2YXJpYWJsZSBmb3IgdGhlIHVzZXIKKEBweHJlZntQYXJhbGxlbCBUZXN0IEhhcm5lc3N9 KS4KCkFub3RoZXIsIGxlc3Mgc2VyaW91cyBsaW1pdGF0aW9uIG9mIHRoZSBzZXJpYWwgaGFybmVz cyBpcyB0aGF0IGl0CmRvZXNuJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBzaW1wbGUgZmFpbHVyZXMg YW5kIGhhcmQgZXJyb3JzOyB0aGlzIGlzCmZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGFuZCBtaWdo dCBiZSBmaXhlZCBpbiBmdXR1cmUgQXV0b21ha2UKdmVyc2lvbnMuCgpAbm9kZSBQYXJhbGxlbCBU ZXN0IEhhcm5lc3MKQHN1YnNlY3Rpb24gUGFyYWxsZWwgVGVzdCBIYXJuZXNzCgpCeSBkZWZhdWx0 LCBBdXRvbWFrZSBnZW5lcmF0ZXMgYSBwYXJhbGxlbCAoY29uY3VycmVudCkgdGVzdCBoYXJuZXNz LiAgSXQKZmVhdHVyZXMgYXV0b21hdGljIGNvbGxlY3Rpb24gb2YgdGhlIHRlc3Qgc2NyaXB0cyBv dXRwdXQgaW4gQGZpbGV7LmxvZ30KZmlsZXMsIGNvbmN1cnJlbnQgZXhlY3V0aW9uIG9mIHRlc3Rz IHdpdGggQGNvZGV7bWFrZSAtan0sIHNwZWNpZmljYXRpb24Kb2YgaW50ZXItdGVzdCBkZXBlbmRl bmNpZXMsIGxhenkgcmVydW5zIG9mIHRlc3RzIHRoYXQgaGF2ZSBub3QgY29tcGxldGVkCmluIGEg cHJpb3IgcnVuLCBhbmQgaGFyZCBlcnJvcnMgZm9yIGV4Y2VwdGlvbmFsIGZhaWx1cmVzLgoKQGFu Y2hvcntCYXNpY3Mgb2YgdGVzdCBtZXRhZGF0YX0KQHZpbmRleCBURVNUUwpAY2luZGV4IEBmaWxl ey5sb2d9IGZpbGVzCkBjaW5kZXggQGZpbGV7LnRyc30gZmlsZXMKQGNpbmRleCB0ZXN0IG1ldGFk YXRhClRoZSBwYXJhbGxlbCB0ZXN0IGhhcm5lc3Mgb3BlcmF0ZXMgYnkgZGVmaW5pbmcgYSBzZXQg b2YgQGNvbW1hbmR7bWFrZX0KcnVsZXMgdGhhdCBydW4gdGhlIHRlc3Qgc2NyaXB0cyBsaXN0ZWQg aW4gQGNvZGV7VEVTVFN9LCBhbmQsIGZvciBlYWNoCnN1Y2ggc2NyaXB0LCBzYXZlIGl0cyBvdXRw dXQgaW4gYSBjb3JyZXNwb25kaW5nIEBmaWxley5sb2d9IGZpbGUgYW5kCml0cyByZXN1bHRzIChh bmQgb3RoZXIgYGBtZXRhZGF0YScnLCBAcHhyZWZ7QVBJIGZvciBDdXN0b20gVGVzdCBEcml2ZXJz fSkKaW4gYSBjb3JyZXNwb25kaW5nIEBmaWxley50cnN9IChhcyBpbiBAYntUfWVzdCBAYntSfWVA YntTfXVsdHMpIGZpbGUuCkBjIFdlIGNob29zZSB0aGUgJy50cnMnIGV4dGVuc2lvbiBhbHNvIGJl Y2F1c2UsIGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsCkBjIGl0IGlzbid0IGFscmVhZHkgdXNlZCBm b3Igb3RoZXIgc2lnbmlmaWNhbnQgcHVycG9zZXM7IHNlZSBlLmcuOgpAYyAgIC0gaHR0cDovL2Zp bGV4dC5jb20vZmlsZS1leHRlbnNpb24vdHJzCkBjICAgLSBodHRwOi8vd3d3LmZpbGUtZXh0ZW5z aW9ucy5vcmcvc2VhcmNoLz9zZWFyY2hzdHJpbmc9dHJzClRoZSBAZmlsZXsubG9nfSBmaWxlIHdp bGwgY29udGFpbiBhbGwgdGhlIG91dHB1dCBlbWl0dGVkIGJ5IHRoZSB0ZXN0IG9uCml0cyBzdGFu ZGFyZCBvdXRwdXQgYW5kIGl0cyBzdGFuZGFyZCBlcnJvci4gIFRoZSBAZmlsZXsudHJzfSBmaWxl IHdpbGwKY29udGFpbiwgYW1vbmcgdGhlIG90aGVyIHRoaW5ncywgdGhlIHJlc3VsdHMgb2YgdGhl IHRlc3QgY2FzZXMgcnVuIGJ5CnRoZSBzY3JpcHQuCgpAdmluZGV4IFRFU1RfU1VJVEVfTE9HCkB2 aW5kZXggSUdOT1JFX1NLSVBQRURfTE9HUwpUaGUgcGFyYWxsZWwgdGVzdCBoYXJuZXNzIHdpbGwg YWxzbyBjcmVhdGUgYSBzdW1tYXJ5IGxvZyBmaWxlLApAY29kZXtURVNUX1NVSVRFX0xPR30sIHdo aWNoIGRlZmF1bHRzIHRvIEBmaWxle3Rlc3Qtc3VpdGUubG9nfSBhbmQgcmVxdWlyZXMKYSBAZmls ZXsubG9nfSBzdWZmaXguICBUaGlzIGZpbGUgZGVwZW5kcyB1cG9uIGFsbCB0aGUgQGZpbGV7Lmxv Z30gYW5kCkBmaWxley50cnN9IGZpbGVzIGNyZWF0ZWQgZm9yIHRoZSB0ZXN0IHNjcmlwdHMgbGlz dGVkIGluIEBjb2Rle1RFU1RTfS4KSXQgY29udGFpbnMgdGhlIG91dHB1dCBvZiBhbGwgdGVzdHMg dGhhdCBmYWlsZWQsIGVuY291bnRlcmVkIGEgaGFyZCBlcnJvciwKc3VjY2VlZGVkIHVuZXhwZWN0 ZWRseSwgb3ItLS11bmxlc3MgdGhlIHZhcmlhYmxlIEBjb2Rle0lHTk9SRV9TS0lQUEVEX0xPR1N9 CmlzIHNldCB0byBhIG5vbi1lbXB0eSB2YWx1ZS0tLXdlcmUgc2tpcHBlZC4KCkB2aW5kZXggVkVS Qk9TRQpBcyB3aXRoIHRoZSBzZXJpYWwgaGFybmVzcyBhYm92ZSwgYnkgZGVmYXVsdCBvbmUgc3Rh dHVzIGxpbmUgaXMgcHJpbnRlZApwZXIgY29tcGxldGVkIHRlc3QsIGFuZCBhIHNob3J0IHN1bW1h cnkgYWZ0ZXIgdGhlIHN1aXRlIGhhcyBjb21wbGV0ZWQuCkhvd2V2ZXIsIHN0YW5kYXJkIG91dHB1 dCBhbmQgc3RhbmRhcmQgZXJyb3Igb2YgdGhlIHRlc3QgYXJlIHJlZGlyZWN0ZWQKdG8gYSBwZXIt dGVzdCBsb2cgZmlsZSwgc28gdGhhdCBwYXJhbGxlbCBleGVjdXRpb24gZG9lcyBub3QgcHJvZHVj ZQppbnRlcm1pbmdsZWQgb3V0cHV0LiAgVGhlIG91dHB1dCBmcm9tIGZhaWxlZCB0ZXN0cyBpcyBj b2xsZWN0ZWQgaW4gdGhlCkBmaWxle3Rlc3Qtc3VpdGUubG9nfSBmaWxlLiAgSWYgdGhlIHZhcmlh YmxlIEBzYW1we1ZFUkJPU0V9IGlzIHNldCwgdGhpcwpmaWxlIGlzIG91dHB1dCBhZnRlciB0aGUg c3VtbWFyeS4KCkB2aW5kZXggVEVTVF9FWFRFTlNJT05TCkB2aW5kZXggVEVTVF9MT0dTCkVhY2gg Y291cGxlIG9mIEBmaWxley5sb2d9IGFuZCBAZmlsZXsudHJzfSBmaWxlcyBpcyBjcmVhdGVkIHdo ZW4gdGhlCmNvcnJlc3BvbmRpbmcgdGVzdCBoYXMgY29tcGxldGVkLiAgVGhlIHNldCBvZiBsb2cg ZmlsZXMgaXMgbGlzdGVkIGluCnRoZSByZWFkLW9ubHkgdmFyaWFibGUgQGNvZGV7VEVTVF9MT0dT fSwgYW5kIGRlZmF1bHRzIHRvIEBjb2Rle1RFU1RTfSwKd2l0aCB0aGUgZXhlY3V0YWJsZSBleHRl bnNpb24gaWYgYW55IChAcHhyZWZ7RVhFRVhUfSksIGFzIHdlbGwgYXMgYW55CnN1ZmZpeCBsaXN0 ZWQgaW4gQGNvZGV7VEVTVF9FWFRFTlNJT05TfSByZW1vdmVkLCBhbmQgQGZpbGV7LmxvZ30gYXBw ZW5kZWQuClJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiBhIHRlc3QgZmlsZSBuYW1lIGVuZHMgaW4g c2V2ZXJhbCBjb25jYXRlbmF0ZWQKc3VmZml4ZXMuICBAY29kZXtURVNUX0VYVEVOU0lPTlN9IGRl ZmF1bHRzIHRvIEBmaWxley50ZXN0fTsgaXQgY2FuIGJlCm92ZXJyaWRkZW4gYnkgdGhlIHVzZXIs IGluIHdoaWNoIGNhc2UgYW55IGV4dGVuc2lvbiBsaXN0ZWQgaW4gaXQgbXVzdCBiZQpjb25zdGl0 dXRlZCBieSBhIGRvdCwgZm9sbG93ZWQgYnkgYSBub24tZGlnaXQgYWxwaGFiZXRpYyBjaGFyYWN0 ZXIsCmZvbGxvd2VkIGJ5IGFueSBudW1iZXIgb2YgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzLgpAYyBL ZWVwIGluIHN5bmMgd2l0aCB0ZXN0LWV4dGVuc2lvbnMuc2gKRm9yIGV4YW1wbGUsIEBzYW1wey5z aH0sIEBzYW1wey5UfSBhbmQgQHNhbXB7LnQxfSBhcmUgdmFsaWQgZXh0ZW5zaW9ucywKd2hpbGUg QHNhbXB7LngteX0sIEBzYW1wey42Y30gYW5kIEBzYW1wey50LjF9IGFyZSBub3QuCgpAY2luZGV4 IENvbmZpZ3VyZSBzdWJzdGl0dXRpb25zIGluIEBjb2Rle1RFU1RTfQpJdCBpcyBpbXBvcnRhbnQg dG8gbm90ZSB0aGF0LCBkdWUgdG8gY3VycmVudCBsaW1pdGF0aW9ucyAodW5saWtlbHkgdG8gYmUK bGlmdGVkKSwgY29uZmlndXJlIHN1YnN0aXR1dGlvbnMgaW4gdGhlIGRlZmluaXRpb24gb2YgQGNv ZGV7VEVTVFN9IGNhbgpvbmx5IHdvcmsgaWYgdGhleSB3aWxsIGV4cGFuZCB0byBhIGxpc3Qgb2Yg dGVzdHMgdGhhdCBoYXZlIGEgc3VmZml4IGxpc3RlZAppbiBAY29kZXtURVNUX0VYVEVOU0lPTlN9 LgoKQHZpbmRleCBfTE9HX0NPTVBJTEUKQHZpbmRleCBfTE9HX0NPTVBJTEVSCkB2aW5kZXggX0xP R19GTEFHUwpAdmluZGV4IExPR19DT01QSUxFCkB2aW5kZXggTE9HX0NPTVBJTEVSCkB2aW5kZXgg TE9HX0ZMQUdTCkB2aW5kZXggQHZhcntleHR9X0xPR19DT01QSUxFCkB2aW5kZXggQHZhcntleHR9 X0xPR19DT01QSUxFUgpAdmluZGV4IEB2YXJ7ZXh0fV9MT0dfRkxBR1MKQHZpbmRleCBBTV9AdmFy e2V4dH1fTE9HX0ZMQUdTCkB2aW5kZXggQU1fTE9HX0ZMQUdTCkZvciB0ZXN0cyB0aGF0IG1hdGNo IGFuIGV4dGVuc2lvbiBAY29kZXsuQHZhcntleHR9fSBsaXN0ZWQgaW4KQGNvZGV7VEVTVF9FWFRF TlNJT05TfSwgeW91IGNhbiBwcm92aWRlIGEgY3VzdG9tIGBgdGVzdCBydW5uZXInJyB1c2luZwp0 aGUgdmFyaWFibGUgQGNvZGV7QHZhcntleHR9X0xPR19DT01QSUxFUn0gKG5vdGUgdGhlIHVwcGVy LWNhc2UKZXh0ZW5zaW9uKSBhbmQgcGFzcyBvcHRpb25zIGluIEBjb2Rle0FNX0B2YXJ7ZXh0fV9M T0dfRkxBR1N9IGFuZCBhbGxvdwp0aGUgdXNlciB0byBwYXNzIG9wdGlvbnMgaW4gQGNvZGV7QHZh cntleHR9X0xPR19GTEFHU30uICBJdCB3aWxsIGNhdXNlCmFsbCB0ZXN0cyB3aXRoIHRoaXMgZXh0 ZW5zaW9uIHRvIGJlIGNhbGxlZCB3aXRoIHRoaXMgcnVubmVyLiAgRm9yIGFsbAp0ZXN0cyB3aXRo b3V0IGEgcmVnaXN0ZXJlZCBleHRlbnNpb24sIHRoZSB2YXJpYWJsZXMgQGNvZGV7TE9HX0NPTVBJ TEVSfSwKQGNvZGV7QU1fTE9HX0ZMQUdTfSwgYW5kIEBjb2Rle0xPR19GTEFHU30gbWF5IGJlIHVz ZWQuICBGb3IgZXhhbXBsZSwKCkBjIEtlZXAgaW4gc3luYyB3aXRoIHBhcmFsbGVsLXRlc3RzLWxv Zy1jb21waWxlci1leGFtcGxlLnNoCkBleGFtcGxlClRFU1RTID0gZm9vLnBsIGJhci5weSBiYXoK VEVTVF9FWFRFTlNJT05TID0gLnBsIC5weQpQTF9MT0dfQ09NUElMRVIgPSAkKFBFUkwpCkFNX1BM X0xPR19GTEFHUyA9IC13ClBZX0xPR19DT01QSUxFUiA9ICQoUFlUSE9OKQpBTV9QWV9MT0dfRkxB R1MgPSAtdgpMT0dfQ09NUElMRVIgPSAuL3dyYXBwZXItc2NyaXB0CkFNX0xPR19GTEFHUyA9IC1k CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CndpbGwgaW52b2tlIEBzYW1weyQoUEVSTCkgLXcgZm9v LnBsfSwgQHNhbXB7JChQWVRIT04pIC12IGJhci5weX0sCmFuZCBAc2FtcHsuL3dyYXBwZXItc2Ny aXB0IC1kIGJhen0gdG8gcHJvZHVjZSBAZmlsZXtmb28ubG9nfSwKQGZpbGV7YmFyLmxvZ30sIGFu ZCBAZmlsZXtiYXoubG9nfSwgcmVzcGVjdGl2ZWx5LiAgVGhlIEBmaWxle2Zvby50cnN9LApAZmls ZXtiYXIudHJzfSBhbmQgQGZpbGV7YmF6LnRyc30gZmlsZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5 IHByb2R1Y2VkCmFzIGEgc2lkZS1lZmZlY3QuCgpJdCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQs IGRpZmZlcmVudGx5IGZyb20gd2hhdCB3ZSd2ZSBzZWVuIGZvciB0aGUKc2VyaWFsIHRlc3QgaGFy bmVzcyAoQHB4cmVme1NlcmlhbCBUZXN0IEhhcm5lc3N9KSwgdGhlCkBjb2Rle0FNX1RFU1RTX0VO VklST05NRU5UfSBhbmQgQGNvZGV7VEVTVFNfRU5WSVJPTk1FTlR9IHZhcmlhYmxlcwpAZW1waHtj YW5ub3R9IGJlIHVzZWQgdG8gZGVmaW5lIGEgY3VzdG9tIHRlc3QgcnVubmVyOyB0aGUKQGNvZGV7 TE9HX0NPTVBJTEVSfSBhbmQgQGNvZGV7TE9HX0ZMQUdTfSAob3IgdGhlaXIgZXh0ZW5zaW9uLXNw ZWNpZmljCmNvdW50ZXJwYXJ0cykgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZDoKCkBleGFtcGxlCiMj IFRoaXMgaXMgV1JPTkchCkFNX1RFU1RTX0VOVklST05NRU5UID0gUEVSTDVMSUI9JyQoc3JjZGly KS9saWInICQoUEVSTCkgLU1zdHJpY3QgLXcKQGVuZCBleGFtcGxlCgpAZXhhbXBsZQojIyBEbyB0 aGlzIGluc3RlYWQuCkFNX1RFU1RTX0VOVklST05NRU5UID0gUEVSTDVMSUI9JyQoc3JjZGlyKS9s aWInOyBleHBvcnQgUEVSTDVMSUI7CkxPR19DT01QSUxFUiA9ICQoUEVSTCkKQU1fTE9HX0ZMQUdT ID0gLU1zdHJpY3QgLXcKQGVuZCBleGFtcGxlCgpCeSBkZWZhdWx0LCB0aGUgdGVzdCBzdWl0ZSBo YXJuZXNzIHdpbGwgcnVuIGFsbCB0ZXN0cywgYnV0IHRoZXJlIGFyZQpzZXZlcmFsIHdheXMgdG8g bGltaXQgdGhlIHNldCBvZiB0ZXN0cyB0aGF0IGFyZSBydW46CgpAaXRlbWl6ZSBAYnVsbGV0CkBp dGVtCllvdSBjYW4gc2V0IHRoZSBAY29kZXtURVNUU30gdmFyaWFibGUuICBGb3IgZXhhbXBsZSwg eW91IGNhbiB1c2UgYQpjb21tYW5kIGxpa2UgdGhpcyB0byBydW4gb25seSBhIHN1YnNldCBvZiB0 aGUgdGVzdHM6CgpAZXhhbXBsZQplbnYgVEVTVFM9ImZvby50ZXN0IGJhci50ZXN0IiBtYWtlIC1l IGNoZWNrCkBlbmQgZXhhbXBsZQoKQGMgaHR0cHM6Ly9idWdzLmdudS5vcmcvNDI4ODMKSWYgeW91 J3JlIHVzaW5nIGEgcmVjdXJzaXZlIG1ha2Ugc2V0dXAsIHlvdSdsbCBwcm9iYWJseSBhbHNvIG5l ZWQgdG8Kb3ZlcnJpZGUgQGNvZGV7U1VCRElSU306CgpAZXhhbXBsZQplbnYgVEVTVFM9ImZvby50 ZXN0IGJhci50ZXN0IiBtYWtlIC1lIGNoZWNrIFNVQkRJUlM9CkBlbmQgZXhhbXBsZQoKT3RoZXJ3 aXNlLCB0aGUgdGVzdCBoYXJuZXNzIHdpbGwgZGVzY2VuZCBpbnRvIGFsbCBzdWJkaXJlY3Rvcmll cywKd2hlcmUgdGhlIHRlc3RzIHByZXN1bWFibHkgZG8gbm90IGV4aXN0LCBhbmQgdGh1cyBmYWls LiAgKFBhdGNoIHRvCnByb3ZpZGUgYmV0dGVyIGJlaGF2aW9yIHdvdWxkIGJlIHdlbGNvbWUuKQoK QW5vdGhlciBpc3N1ZTogdGhlIGNvbW1hbmQgYWJvdmUgd2lsbCB1bmNvbmRpdGlvbmFsbHkgb3Zl cndyaXRlIHRoZQpAZmlsZXt0ZXN0LXN1aXRlLmxvZ30gZmlsZSwgdGh1cyBjbG9iYmVyaW5nIHRo ZSByZWNvcmRlZCByZXN1bHRzCm9mIGFueSBwcmV2aW91cyB0ZXN0c3VpdGUgcnVuLiAgVGhpcyBt aWdodCBiZSB1bmRlc2lyYWJsZSBmb3IgcGFja2FnZXMKd2hvc2UgdGVzdHN1aXRlIHRha2VzIGEg bG9uZyB0aW1lIHRvIGV4ZWN1dGUuICBMdWNraWx5LCB0aGlzIHByb2JsZW0gY2FuCmVhc2lseSBi ZSBhdm9pZGVkIGJ5IGFsc28gb3ZlcnJpZGluZyBAY29kZXtURVNUX1NVSVRFX0xPR30gYXQgcnVu dGltZTsKZm9yIGV4YW1wbGUsCgpAYyBLZWVwIGluIHN5bmMgd2l0aCBwYXJhbGxlbC10ZXN0cy1s b2ctb3ZlcnJpZGUtMi5zaApAZXhhbXBsZQplbnYgVEVTVF9TVUlURV9MT0c9cGFydGlhbC5sb2cg VEVTVFM9Ii4uLiIgbWFrZSAtZSBjaGVjawpAZW5kIGV4YW1wbGUKCndpbGwgd3JpdGUgdGhlIHJl c3VsdCBvZiB0aGUgcGFydGlhbCB0ZXN0c3VpdGUgcnVucyB0byB0aGUKQGZpbGV7cGFydGlhbC5s b2d9LCB3aXRob3V0IHRvdWNoaW5nIEBmaWxle3Rlc3Qtc3VpdGUubG9nfS4KCkBpdGVtCllvdSBj YW4gc2V0IHRoZSBAY29kZXtURVNUX0xPR1N9IHZhcmlhYmxlLiAgQnkgZGVmYXVsdCwgdGhpcyB2 YXJpYWJsZSBpcwpjb21wdXRlZCBhdCBAY29tbWFuZHttYWtlfSBydW4gdGltZSBmcm9tIHRoZSB2 YWx1ZSBvZiBAY29kZXtURVNUU30gYXMKZGVzY3JpYmVkIGFib3ZlLiAgRm9yIGV4YW1wbGUsIHlv dSBjYW4gdXNlIHRoZSBmb2xsb3dpbmc6CgpAZXhhbXBsZQpzZXQgeCBzdWJzZXQqLmxvZzsgc2hp ZnQKZW52IFRFU1RfTE9HUz0iZm9vLmxvZyAkKiIgbWFrZSAtZSBjaGVjawpAZW5kIGV4YW1wbGUK ClRoZSBjb21tZW50cyBtYWRlIGFib3ZlIGFib3V0IEBjb2Rle1RFU1RfU1VJVEVfTE9HfSBvdmVy cmlkaW5nIGFwcGxpZXMKaGVyZSB0b28uCgpAaXRlbQpAdmluZGV4IFJFQ0hFQ0tfTE9HUwpAY2lu ZGV4IGxhenkgdGVzdCBleGVjdXRpb24KQnkgZGVmYXVsdCwgdGhlIHRlc3QgaGFybmVzcyByZW1v dmVzIGFsbCBvbGQgcGVyLXRlc3QgQGZpbGV7LmxvZ30gYW5kCkBmaWxley50cnN9IGZpbGVzIGJl Zm9yZSBpdCBzdGFydHMgcnVubmluZyB0ZXN0cyB0byByZWdlbmVyYXRlIHRoZW0uICBUaGUKdmFy aWFibGUgQGNvZGV7UkVDSEVDS19MT0dTfSBjb250YWlucyB0aGUgc2V0IG9mIEBmaWxley5sb2d9 IChhbmQsIGJ5CmltcGxpY2F0aW9uLCBAZmlsZXsudHJzfSkgZmlsZXMgd2hpY2ggYXJlIHJlbW92 ZWQuICBAY29kZXtSRUNIRUNLX0xPR1N9CmRlZmF1bHRzIHRvIEBjb2Rle1RFU1RfTE9HU30sIHdo aWNoIG1lYW5zIGFsbCB0ZXN0cyBuZWVkIHRvIGJlIHJlY2hlY2tlZC4KQnkgb3ZlcnJpZGluZyB0 aGlzIHZhcmlhYmxlLCB5b3UgY2FuIGNob29zZSB3aGljaCB0ZXN0cyBuZWVkIHRvIGJlCnJlY29u c2lkZXJlZC4gIEZvciBleGFtcGxlLCB5b3UgY2FuIGxhemlseSByZXJ1biBvbmx5IHRob3NlIHRl c3RzIHdoaWNoCmFyZSBvdXRkYXRlZCwgaS5lLiwgb2xkZXIgdGhhbiB0aGVpciBwcmVyZXF1aXNp dGUgdGVzdCBmaWxlcywgYnkgc2V0dGluZwp0aGlzIHZhcmlhYmxlIHRvIHRoZSBlbXB0eSB2YWx1 ZToKCkBleGFtcGxlCmVudiBSRUNIRUNLX0xPR1M9IG1ha2UgLWUgY2hlY2sKQGVuZCBleGFtcGxl CgpAaXRlbQpAdHJpbmRleCByZWNoZWNrCllvdSBjYW4gZW5zdXJlIHRoYXQgYWxsIHRlc3RzIGFy ZSByZXJ1biB3aGljaCBoYXZlIGZhaWxlZCBvciBwYXNzZWQKdW5leHBlY3RlZGx5LCBieSBydW5u aW5nIEBjb2Rle21ha2UgcmVjaGVja30gaW4gdGhlIHRlc3QgZGlyZWN0b3J5LgpUaGlzIGNvbnZl bmllbmNlIHRhcmdldCB3aWxsIHNldCBAY29kZXtSRUNIRUNLX0xPR1N9IGFwcHJvcHJpYXRlbHkK YmVmb3JlIGludm9raW5nIHRoZSBtYWluIHRlc3QgaGFybmVzcy4KQGVuZCBpdGVtaXplCgpAbm9p bmRlbnQKSW4gb3JkZXIgdG8gZ3VhcmFudGVlIGFuIG9yZGVyaW5nIGJldHdlZW4gdGVzdHMgZXZl biB3aXRoIEBjb2Rle21ha2UKLWpAdmFye059fSwgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIGNv cnJlc3BvbmRpbmcgQGZpbGV7LmxvZ30gZmlsZXMKbWF5IGJlIHNwZWNpZmllZCB0aHJvdWdoIHVz dWFsIEBjb21tYW5ke21ha2V9IGRlcGVuZGVuY2llcy4gIEZvciBleGFtcGxlLAp0aGUgZm9sbG93 aW5nIHNuaXBwZXQgbGV0cyB0aGUgdGVzdCBuYW1lZCBAZmlsZXtmb28tZXhlY3V0ZS50ZXN0fSBk ZXBlbmQKdXBvbiBjb21wbGV0aW9uIG9mIHRoZSB0ZXN0IEBmaWxle2Zvby1jb21waWxlLnRlc3R9 OgoKQGV4YW1wbGUKVEVTVFMgPSBmb28tY29tcGlsZS50ZXN0IGZvby1leGVjdXRlLnRlc3QKZm9v LWV4ZWN1dGUubG9nOiBmb28tY29tcGlsZS5sb2cKQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKUGxl YXNlIG5vdGUgdGhhdCB0aGlzIG9yZGVyaW5nIGlnbm9yZXMgdGhlIEBlbXBoe3Jlc3VsdHN9IG9m IHJlcXVpcmVkCnRlc3RzLCB0aHVzIHRoZSB0ZXN0IEBmaWxle2Zvby1leGVjdXRlLnRlc3R9IGlz IHJ1biBldmVuIGlmIHRoZSB0ZXN0CkBmaWxle2Zvby1jb21waWxlLnRlc3R9IGZhaWxlZCBvciB3 YXMgc2tpcHBlZCBiZWZvcmVoYW5kLiAgRnVydGhlciwKcGxlYXNlIG5vdGUgdGhhdCBzcGVjaWZ5 aW5nIHN1Y2ggZGVwZW5kZW5jaWVzIGN1cnJlbnRseSB3b3JrcyBvbmx5IGZvcgp0ZXN0cyB0aGF0 IGVuZCBpbiBvbmUgb2YgdGhlIHN1ZmZpeGVzIGxpc3RlZCBpbiBAY29kZXtURVNUX0VYVEVOU0lP TlN9LgoKVGVzdHMgd2l0aG91dCBzdWNoIHNwZWNpZmllZCBkZXBlbmRlbmNpZXMgbWF5IGJlIHJ1 biBjb25jdXJyZW50bHkgd2l0aApwYXJhbGxlbCBAY29tbWFuZHttYWtlIC1qQHZhcntOfX0sIHNv IGJlIHN1cmUgdGhleSBhcmUgcHJlcGFyZWQgZm9yCmNvbmN1cnJlbnQgZXhlY3V0aW9uLgoKQGNp bmRleCBVbml0IHRlc3RzCkBjIEtlZXAgaW4gc3luYyB3aXRoICdwYXJhbGxlbC10ZXN0cy1leHRy YS1wcm9ncmFtcy5zaCcuClRoZSBjb21iaW5hdGlvbiBvZiBsYXp5IHRlc3QgZXhlY3V0aW9uIGFu ZCBjb3JyZWN0IGRlcGVuZGVuY2llcyBiZXR3ZWVuCnRlc3RzIGFuZCB0aGVpciBzb3VyY2VzIG1h eSBiZSBleHBsb2l0ZWQgZm9yIGVmZmljaWVudCB1bml0IHRlc3RpbmcKZHVyaW5nIGRldmVsb3Bt ZW50LiAgVG8gZnVydGhlciBzcGVlZCB1cCB0aGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUsIGl0 Cm1heSBldmVuIGJlIHVzZWZ1bCB0byBzcGVjaWZ5IGNvbXBpbGVkIHByb2dyYW1zIGluIEBjb2Rl e0VYVFJBX1BST0dSQU1TfQppbnN0ZWFkIG9mIHdpdGggQGNvZGV7Y2hlY2tfUFJPR1JBTVN9LCBh cyB0aGUgZm9ybWVyIGFsbG93cyBpbnRlcnR3aW5lZApjb21waWxhdGlvbiBhbmQgdGVzdCBleGVj dXRpb24gKGJ1dCBub3RlIHRoYXQgQGNvZGV7RVhUUkFfUFJPR1JBTVN9IGFyZQpub3QgY2xlYW5l ZCBhdXRvbWF0aWNhbGx5OyBAcHhyZWZ7VW5pZm9ybX0pLgoKVGhlIHZhcmlhYmxlcyBAY29kZXtU RVNUU30gYW5kIEBjb2Rle1hGQUlMX1RFU1RTfSBtYXkgY29udGFpbgpjb25kaXRpb25hbCBwYXJ0 cyBhcyB3ZWxsIGFzIGNvbmZpZ3VyZSBzdWJzdGl0dXRpb25zLiAgSW4gdGhlIGxhdHRlcgpjYXNl LCBob3dldmVyLCBjZXJ0YWluIHJlc3RyaWN0aW9ucyBhcHBseTogc3Vic3RpdHV0ZWQgdGVzdCBu YW1lcwptdXN0IGVuZCB3aXRoIGEgbm9uZW1wdHkgdGVzdCBzdWZmaXggbGlrZSBAZmlsZXsudGVz dH0sIHNvIHRoYXQgb25lIG9mCnRoZSBpbmZlcmVuY2UgcnVsZXMgZ2VuZXJhdGVkIGJ5IEBjb21t YW5ke2F1dG9tYWtlfSBjYW4gYXBwbHkuICBGb3IKbGl0ZXJhbCB0ZXN0IG5hbWVzLCBAY29tbWFu ZHthdXRvbWFrZX0gY2FuIGdlbmVyYXRlIHBlci10YXJnZXQgcnVsZXMKdG8gYXZvaWQgdGhpcyBs aW1pdGF0aW9uLgoKUGxlYXNlIG5vdGUgdGhhdCBpdCBpcyBjdXJyZW50bHkgbm90IHBvc3NpYmxl IHRvIHVzZSBAY29kZXskKHNyY2RpcikvfQpvciBAY29kZXskKHRvcF9zcmNkaXIpL30gaW4gdGhl IEBjb2Rle1RFU1RTfSB2YXJpYWJsZS4gIFRoaXMgdGVjaG5pY2FsCmxpbWl0YXRpb24gaXMgbmVj ZXNzYXJ5IHRvIGF2b2lkIGdlbmVyYXRpbmcgdGVzdCBsb2dzIGluIHRoZSBzb3VyY2UgdHJlZQph bmQgaGFzIHRoZSB1bmZvcnR1bmF0ZSBjb25zZXF1ZW5jZSB0aGF0IGl0IGlzIG5vdCBwb3NzaWJs ZSB0byBzcGVjaWZ5CmRpc3RyaWJ1dGVkIHRlc3RzIHRoYXQgYXJlIHRoZW1zZWx2ZXMgZ2VuZXJh dGVkIGJ5IG1lYW5zIG9mIGV4cGxpY2l0CnJ1bGVzLCBpbiBhIHdheSB0aGF0IGlzIHBvcnRhYmxl IHRvIGFsbCBAY29tbWFuZHttYWtlfSBpbXBsZW1lbnRhdGlvbnMKKEBweHJlZntNYWtlIFRhcmdl dCBMb29rdXAsLCwgYXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9LCB0aGUKc2VtYW50aWNz IG9mIEZyZWVCU0QgYW5kIE9wZW5CU0QgQGNvbW1hbmR7bWFrZX0gY29uZmxpY3Qgd2l0aCB0aGlz KS4KSW4gY2FzZSBvZiBkb3VidCB5b3UgbWF5IHdhbnQgdG8gcmVxdWlyZSB0byB1c2UgR05VIEBj b21tYW5ke21ha2V9LApvciB3b3JrIGFyb3VuZCB0aGUgaXNzdWUgd2l0aCBpbmZlcmVuY2UgcnVs ZXMgdG8gZ2VuZXJhdGUgdGhlIHRlc3RzLgoKQG5vZGUgQ3VzdG9tIFRlc3QgRHJpdmVycwpAc2Vj dGlvbiBDdXN0b20gVGVzdCBEcml2ZXJzCgpAbWVudQoqIE92ZXJ2aWV3IG9mIEN1c3RvbSBUZXN0 IERyaXZlcnMgU3VwcG9ydDo6CiogRGVjbGFyaW5nIEN1c3RvbSBUZXN0IERyaXZlcnM6OgoqIEFQ SSBmb3IgQ3VzdG9tIFRlc3QgRHJpdmVyczo6CkBlbmQgbWVudQoKQG5vZGUgT3ZlcnZpZXcgb2Yg Q3VzdG9tIFRlc3QgRHJpdmVycyBTdXBwb3J0CkBzdWJzZWN0aW9uIE92ZXJ2aWV3IG9mIEN1c3Rv bSBUZXN0IERyaXZlcnMgU3VwcG9ydAoKU3RhcnRpbmcgZnJvbSBBdXRvbWFrZSB2ZXJzaW9uIDEu MTIsIHRoZSBwYXJhbGxlbCB0ZXN0IGhhcm5lc3MgYWxsb3dzCnRoZSBwYWNrYWdlIGF1dGhvcnMg dG8gdXNlIHRoaXJkLXBhcnR5IGN1c3RvbSB0ZXN0IGRyaXZlcnMsIGluIGNhc2UgdGhlCmRlZmF1 bHQgb25lcyBhcmUgaW5hZGVxdWF0ZSBmb3IgdGhlaXIgcHVycG9zZXMsIG9yIGRvIG5vdCBzdXBw b3J0IHRoZWlyCnRlc3RpbmcgcHJvdG9jb2wgb2YgY2hvaWNlLgoKQSBjdXN0b20gdGVzdCBkcml2 ZXIgaXMgZXhwZWN0ZWQgdG8gcHJvcGVybHkgcnVuIHRoZSB0ZXN0IHByb2dyYW1zIHBhc3NlZAp0 byBpdCAoaW5jbHVkaW5nIHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHBhc3NlZCB0byB0aG9z ZSBwcm9ncmFtcywgaWYKYW55KSwgdG8gYW5hbHl6ZSB0aGVpciBleGVjdXRpb24gYW5kIG91dGNv bWUsIHRvIGNyZWF0ZSB0aGUgQGZpbGV7LmxvZ30KYW5kIEBmaWxley50cnN9IGZpbGVzIGFzc29j aWF0ZWQgdG8gdGhlc2UgdGVzdCBydW5zLCBhbmQgdG8gZGlzcGxheSB0aGUgdGVzdApyZXN1bHRz IG9uIHRoZSBjb25zb2xlLiBJdCBpcyByZXNwb25zaWJpbGl0eSBvZiB0aGUgYXV0aG9yIG9mIHRo ZSB0ZXN0CmRyaXZlciB0byBlbnN1cmUgdGhhdCBpdCBpbXBsZW1lbnRzIGFsbCB0aGUgYWJvdmUg c3RlcHMgbWVhbmluZ2Z1bGx5IGFuZApjb3JyZWN0bHk7IEF1dG9tYWtlIGlzbid0IGFuZCBjYW4n dCBiZSBvZiBhbnkgaGVscCBoZXJlLiAgT24gdGhlIG90aGVyCmhhbmQsIHRoZSBBdXRvbWFrZS1w cm92aWRlZCBjb2RlIGZvciB0ZXN0c3VpdGUgc3VtbWFyeSBnZW5lcmF0aW9uIG9mZmVycwpzdXBw b3J0IGZvciB0ZXN0IGRyaXZlcnMgYWxsb3dpbmcgc2V2ZXJhbCB0ZXN0IHJlc3VsdHMgcGVyIHRl c3Qgc2NyaXB0LAppZiB0aGV5IHRha2UgY2FyZSB0byByZWdpc3RlciBzdWNoIHJlc3VsdHMgcHJv cGVybHkgKEBweHJlZntMb2cgZmlsZXMKZ2VuZXJhdGlvbiBhbmQgdGVzdCByZXN1bHRzIHJlY29y ZGluZ30pLgoKVGhlIGV4YWN0IGRldGFpbHMgb2YgaG93IHRlc3Qgc2NyaXB0cycgcmVzdWx0cyBh cmUgdG8gYmUgZGV0ZXJtaW5lZCBhbmQKYW5hbHl6ZWQgaXMgbGVmdCB0byB0aGUgaW5kaXZpZHVh bCBkcml2ZXJzLiAgU29tZSBkcml2ZXJzIG1pZ2h0IG9ubHkKY29uc2lkZXIgdGhlIHRlc3Qgc2Ny aXB0IGV4aXQgc3RhdHVzICh0aGlzIGlzIGRvbmUgZm9yIGV4YW1wbGUgYnkgdGhlCmRlZmF1bHQg dGVzdCBkcml2ZXIgdXNlZCBieSB0aGUgcGFyYWxsZWwgdGVzdCBoYXJuZXNzLCBkZXNjcmliZWQK aW4gdGhlIHByZXZpb3VzIHNlY3Rpb24pLiAgT3RoZXIgZHJpdmVycyBtaWdodCBpbXBsZW1lbnQg bW9yZSBjb21wbGV4IGFuZAphZHZhbmNlZCB0ZXN0IHByb3RvY29scywgd2hpY2ggbWlnaHQgcmVx dWlyZSB0aGVtIHRvIHBhcnNlIGFuZCBpbnRlcnByZXQKdGhlIG91dHB1dCBlbWl0dGVkIGJ5IHRo ZSB0ZXN0IHNjcmlwdCB0aGV5J3JlIHJ1bm5pbmcgKGV4YW1wbGVzIG9mIHN1Y2gKcHJvdG9jb2xz IGFyZSBUQVAgYW5kIFN1YlVuaXQpLgoKSXQncyB2ZXJ5IGltcG9ydGFudCB0byBub3RlIHRoYXQs IGV2ZW4gd2hlbiB1c2luZyBjdXN0b20gdGVzdCBkcml2ZXJzLAptb3N0IG9mIHRoZSBpbmZyYXN0 cnVjdHVyZSBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gYWJvdXQgdGhlCnBhcmFs bGVsIGhhcm5lc3MgcmVtYWlucyBpbiBwbGFjZTsgdGhpcyBpbmNsdWRlczoKCkBpdGVtaXplCkBp dGVtCmxpc3Qgb2YgdGVzdCBzY3JpcHRzIGRlZmluZWQgaW4gQGNvZGV7VEVTVFN9LCBhbmQgb3Zl cnJpZGFibGUgYXQKcnVudGltZSB0aHJvdWdoIHRoZSByZWRlZmluaXRpb24gb2YgQGNvZGV7VEVT VFN9IG9yIEBjb2Rle1RFU1RfTE9HU307CkBpdGVtCmNvbmN1cnJlbmN5IHRocm91Z2ggdGhlIHVz ZSBvZiBAY29tbWFuZHttYWtlfSdzIG9wdGlvbiBAb3B0aW9uey1qfTsKQGl0ZW0KcGVyLXRlc3Qg QGZpbGV7LmxvZ30gYW5kIEBmaWxley50cnN9IGZpbGVzLCBhbmQgZ2VuZXJhdGlvbiBvZiBhIHN1 bW1hcnkKQGZpbGV7LmxvZ30gZmlsZSBmcm9tIHRoZW07CkBpdGVtCkBjb2Rle3JlY2hlY2t9IHRh cmdldCwgQGNvZGV7UkVDSEVDS19MT0dTfSB2YXJpYWJsZSwgYW5kIGxhenkgcmVydW5zCm9mIHRl c3RzOwpAaXRlbQppbnRlci10ZXN0IGRlcGVuZGVuY2llczsKQGl0ZW0Kc3VwcG9ydCBmb3IgQGNv ZGV7Y2hlY2tfKn0gdmFyaWFibGVzIChAY29kZXtjaGVja19QUk9HUkFNU30sCkBjb2Rle2NoZWNr X0xJQlJBUklFU30sIC4uLik7CkBpdGVtCnVzZSBvZiBAY29kZXtWRVJCT1NFfSBlbnZpcm9ubWVu dCB2YXJpYWJsZSB0byBnZXQgdmVyYm9zZSBvdXRwdXQgb24KdGVzdHN1aXRlIGZhaWx1cmVzOwpA aXRlbQpkZWZpbml0aW9uIGFuZCBob25vcmluZyBvZiBAY29kZXtURVNUU19FTlZJUk9OTUVOVH0s CkBjb2Rle0FNX1RFU1RTX0VOVklST05NRU5UfSBhbmQgQGNvZGV7QU1fVEVTVFNfRkRfUkVESVJF Q1R9CnZhcmlhYmxlczsKQGl0ZW0KZGVmaW5pdGlvbiBvZiBnZW5lcmljIGFuZCBleHRlbnNpb24t c3BlY2lmaWMgQGNvZGV7TE9HX0NPTVBJTEVSfSBhbmQKQGNvZGV7TE9HX0ZMQUdTfSB2YXJpYWJs ZXMuCkBlbmQgaXRlbWl6ZQoKQG5vaW5kZW50Ck9uIHRoZSBvdGhlciBoYW5kLCB0aGUgZXhhY3Qg c2VtYW50aWNzIG9mIGhvdyAoYW5kIGlmKSB0ZXN0c3VpdGUgb3V0cHV0CmNvbG9yaXphdGlvbiwg QGNvZGV7WEZBSUxfVEVTVFN9LCBhbmQgaGFyZCBlcnJvcnMgYXJlIHN1cHBvcnRlZCBhbmQKaGFu ZGxlZCBpcyBsZWZ0IHRvIHRoZSBpbmRpdmlkdWFsIHRlc3QgZHJpdmVycy4KCkBjIFRPRE86IFdl IHNob3VsZCBhZGQgYSB3b3JraW5nIGV4YW1wbGUgaW4gdGhlIGRvYy8gZGlyZWN0b3J5LApAYyBU T0RPOiBhbmQgcmVmZXJlbmNlIGl0IGZyb20gaGVyZS4KCkBub2RlIERlY2xhcmluZyBDdXN0b20g VGVzdCBEcml2ZXJzCkBzdWJzZWN0aW9uIERlY2xhcmluZyBDdXN0b20gVGVzdCBEcml2ZXJzCgpA dmluZGV4IF9MT0dfRFJJVkVSCkB2aW5kZXggX0xPR19EUklWRVJfRkxBR1MKQHZpbmRleCBMT0df RFJJVkVSCkB2aW5kZXggTE9HX0RSSVZFUl9GTEFHUwpAdmluZGV4IEB2YXJ7ZXh0fV9MT0dfRFJJ VkVSCkB2aW5kZXggQHZhcntleHR9X0xPR19EUklWRVJfRkxBR1MKQHZpbmRleCBBTV9AdmFye2V4 dH1fTE9HX0RSSVZFUl9GTEFHUwpAdmluZGV4IEFNX0xPR19EUklWRVJfRkxBR1MKQ3VzdG9tIHRl c3RzdWl0ZSBkcml2ZXJzIGFyZSBkZWNsYXJlZCBieSBkZWZpbmluZyB0aGUgbWFrZSB2YXJpYWJs ZXMKQGNvZGV7TE9HX0RSSVZFUn0gb3IgQGNvZGV7QHZhcntleHR9X0xPR19EUklWRVJ9ICh3aGVy ZSBAdmFye2V4dH0gbXVzdApiZSBkZWNsYXJlZCBpbiBAY29kZXtURVNUX0VYVEVOU0lPTlN9KS4g IFRoZXkgbXVzdCBiZSBkZWZpbmVkIHRvCnByb2dyYW1zIG9yIHNjcmlwdHMgdGhhdCB3aWxsIGJl IHVzZWQgdG8gZHJpdmUgdGhlIGV4ZWN1dGlvbiwgbG9nZ2luZywKYW5kIG91dGNvbWUgcmVwb3J0 IG9mIHRoZSB0ZXN0cyB3aXRoIGNvcnJlc3BvbmRpbmcgZXh0ZW5zaW9ucyAob3Igb2YKdGhvc2Ug d2l0aCBubyByZWdpc3RlcmVkIGV4dGVuc2lvbiBpbiB0aGUgY2FzZSBvZiBAY29kZXtMT0dfRFJJ VkVSfSkuCkNsZWFybHksIG11bHRpcGxlIGRpc3RpbmN0IHRlc3QgZHJpdmVycyBjYW4gYmUgZGVj bGFyZWQgaW4gdGhlIHNhbWUKQGZpbGV7TWFrZWZpbGUuYW19LiAgTm90ZSBtb3Jlb3ZlciB0aGF0 IHRoZSBAY29kZXtMT0dfRFJJVkVSfSB2YXJpYWJsZXMKYXJlIEBlbXBoe25vdH0gYSBzdWJzdGl0 dXRlIGZvciB0aGUgQGNvZGV7TE9HX0NPTVBJTEVSfSB2YXJpYWJsZXM6IHRoZQp0d28gc2V0cyBv ZiB2YXJpYWJsZXMgY2FuLCBhbmQgb2Z0ZW4gZG8sIHVzZWZ1bGx5IGFuZCBsZWdpdGltYXRlbHkK Y29leGlzdC4KCkBjIFRPRE86IFdlIHNob3VsZCBwb2ludCB0byBhIGNsYXJpZnlpbmcgZXhhbXBs ZSBoZXJlIQoKVGhlIGRldmVsb3Blci1yZXNlcnZlZCB2YXJpYWJsZSBAY29kZXtBTV9MT0dfRFJJ VkVSX0ZMQUdTfSBhbmQgdGhlCnVzZXItcmVzZXJ2ZWQgdmFyaWFibGUgQGNvZGV7TE9HX0RSSVZF Ul9GTEFHU30gY2FuIGJlIHVzZWQgdG8gZGVmaW5lCmZsYWdzIHRoYXQgd2lsbCBiZSBwYXNzZWQg dG8gZWFjaCBpbnZvY2F0aW9uIG9mIEBjb2Rle0xPR19EUklWRVJ9LAp3aXRoIHRoZSB1c2VyLWRl ZmluZWQgZmxhZ3Mgb2J2aW91c2x5IHRha2luZyBwcmVjZWRlbmNlIG92ZXIgdGhlCmRldmVsb3Bl ci1yZXNlcnZlZCBvbmVzLiAgU2ltaWxhcmx5LCBmb3IgZWFjaCBleHRlbnNpb24gQHZhcntleHR9 CmRlY2xhcmVkIGluIEBjb2Rle1RFU1RfRVhURU5TSU9OU30sIGZsYWdzIGxpc3RlZCBpbgpAY29k ZXtBTV9AdmFye2V4dH1fTE9HX0RSSVZFUl9GTEFHU30gYW5kCkBjb2Rle0B2YXJ7ZXh0fV9MT0df RFJJVkVSX0ZMQUdTfSB3aWxsIGJlIHBhc3NlZCB0bwppbnZvY2F0aW9ucyBvZiBAY29kZXtAdmFy e2V4dH1fTE9HX0RSSVZFUn0uCgpAbm9kZSBBUEkgZm9yIEN1c3RvbSBUZXN0IERyaXZlcnMKQHN1 YnNlY3Rpb24gQVBJIGZvciBDdXN0b20gVGVzdCBEcml2ZXJzCgpOb3RlIHRoYXQgQGVtcGh7dGhl IEFQSXMgZGVzY3JpYmVkIGhlcmUgYXJlIHN0aWxsIGhpZ2hseQpleHBlcmltZW50YWx9LCBhbmQg d2lsbCB2ZXJ5IGxpa2VseSB1bmRlcmdvIHRpZ2h0ZW5pbmcgYW5kIHBvc3NpYmx5CmV4dGVuc2l2 ZSBjaGFuZ2VzIGluIHRoZSBmdXR1cmUsIHRvIGFjY29tbW9kYXRlIGZvciBuZXcgZmVhdHVyZXMg b3IgdG8Kc2F0aXNmeSBhZGRpdGlvbmFsIHBvcnRhYmlsaXR5IHJlcXVpcmVtZW50cy4KClRoZSBt YWluIGNoYXJhY3RlcmlzdGljIG9mIHRoZXNlIEFQSXMgaXMgdGhhdCB0aGV5IGFyZSBkZXNpZ25l ZCB0byBzaGFyZQphcyBtdWNoIGluZnJhc3RydWN0dXJlLCBzZW1hbnRpY3MsIGFuZCBpbXBsZW1l bnRhdGlvbiBkZXRhaWwgYXMgcG9zc2libGUKd2l0aCB0aGUgcGFyYWxsZWwgdGVzdCBoYXJuZXNz IGFuZCBpdHMgZGVmYXVsdCBkcml2ZXIuCgpAbWVudQoqIENvbW1hbmQtbGluZSBhcmd1bWVudHMg Zm9yIHRlc3QgZHJpdmVyczo6CiogTG9nIGZpbGVzIGdlbmVyYXRpb24gYW5kIHRlc3QgcmVzdWx0 cyByZWNvcmRpbmc6OgoqIFRlc3RzdWl0ZSBwcm9ncmVzcyBvdXRwdXQ6OgpAZW5kIG1lbnUKCkBu b2RlIENvbW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIHRlc3QgZHJpdmVycwpAc3Vic3Vic2VjdGlv biBDb21tYW5kLWxpbmUgYXJndW1lbnRzIGZvciB0ZXN0IGRyaXZlcnMKCkEgY3VzdG9tIGRyaXZl ciBjYW4gcmVseSBvbiB2YXJpb3VzIGNvbW1hbmQtbGluZSBvcHRpb25zIGFuZCBhcmd1bWVudHMK YmVpbmcgcGFzc2VkIHRvIGl0IGF1dG9tYXRpY2FsbHkgYnkgdGhlIEF1dG9tYWtlLWdlbmVyYXRl ZCB0ZXN0Cmhhcm5lc3MuICBJdCBpcyBAZW1waHttYW5kYXRvcnl9IHRoYXQgaXQgdW5kZXJzdGFu ZHMgYWxsIG9mIHRoZW0gKGV2ZW4KaWYgdGhlIGV4YWN0IGludGVycHJldGF0aW9uIG9mIHRoZSBh c3NvY2lhdGVkIHNlbWFudGljcyBjYW4KbGVnaXRpbWF0ZWx5IGNoYW5nZSBiZXR3ZWVuIGEgdGVz dCBkcml2ZXIgYW5kIGFub3RoZXIsIGFuZCBldmVuIGJlIGEKbm8tb3AgaW4gc29tZSBkcml2ZXJz KS4gIE9wdGlvbnMgYXJlIHNlcGFyYXRlZCBmcm9tIHRoZWlyIGFyZ3VtZW50cyBieQp3aGl0ZXNw YWNlLkBmb290bm90ZXtSZWdyZXR0YWJseSwgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyBtYW51YWwg c3RhdGVkCnRoYXQgb3B0aW9uIGFyZ3VtZW50cyBzaG91bGQgYmUgam9pbmVkIHRvIHRoZWlyIG9w dGlvbnMgd2l0aCBhCkBjb2Rlez19IGNoYXJhY3RlciwgcmF0aGVyIHRoYW4gcGFzc2VkIGFzIGlu IHRoZSBmb2xsb3dpbmcgYXJndW1lbnQKd29yZCBhcyBzaG93biBoZXJlLiAgVGhlIHN5bnRheCB3 aXRoIEBjb2Rlez19IGhhcyBuZXZlciBiZWVuIGFjY2VwdGVkCmJ5IHRoZSB0ZXN0IGRyaXZlcnMg c3VwcGxpZWQgd2l0aCBBdXRvbWFrZSwgYW5kIGhhcyBuZXZlciBiZWVuCnByb2R1Y2VkIGJ5IEBm aWxle01ha2VmaWxlfXMgZ2VuZXJhdGVkIGJ5IEF1dG9tYWtlLn0KCkBub2luZGVudApIZXJlIGlz IHRoZSBsaXN0IG9mIG9wdGlvbnM6CgpAdGFibGUgQG9wdGlvbgpAaXRlbSAtLXRlc3QtbmFtZSBA dmFye05BTUV9ClRoZSBuYW1lIG9mIHRoZSB0ZXN0LCB3aXRoIFZQQVRIIHByZWZpeCAoaWYgYW55 KSByZW1vdmVkLiAgVGhpcyBjYW4gaGF2ZSBhCnN1ZmZpeCBhbmQgYSBkaXJlY3RvcnkgY29tcG9u ZW50IChhcyBpbiBlLmcuLCBAZmlsZXtzdWIvZm9vLnRlc3R9KSwgYW5kIGlzCm1vc3RseSBtZWFu dCB0byBiZSB1c2VkIGluIGNvbnNvbGUgcmVwb3J0cyBhYm91dCB0ZXN0c3VpdGUgYWR2YW5jZW1l bnRzIGFuZApyZXN1bHRzIChAcHhyZWZ7VGVzdHN1aXRlIHByb2dyZXNzIG91dHB1dH0pLgpAaXRl bSAtLWxvZy1maWxlIEBmaWxle0B2YXJ7UEFUSH0ubG9nfQpUaGUgQGZpbGV7LmxvZ30gZmlsZSB0 aGUgdGVzdCBkcml2ZXIgbXVzdCBjcmVhdGUgKEBweHJlZntCYXNpY3Mgb2YKdGVzdCBtZXRhZGF0 YX0pLiAgSWYgaXQgaGFzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCAoYXMgaW4gZS5nLiwKQGZpbGV7 c3ViL2Zvby5sb2d9KSwgdGhlIHRlc3QgaGFybmVzcyB3aWxsIGVuc3VyZSB0aGF0IHN1Y2ggZGly ZWN0b3J5CmV4aXN0cyBAZW1waHtiZWZvcmV9IHRoZSB0ZXN0IGRyaXZlciBpcyBjYWxsZWQuCkBp dGVtIC0tdHJzLWZpbGUgQGZpbGV7QHZhcntQQVRIfS50cnN9ClRoZSBAZmlsZXsudHJzfSBmaWxl IHRoZSB0ZXN0IGRyaXZlciBtdXN0IGNyZWF0ZSAoQHB4cmVme0Jhc2ljcyBvZgp0ZXN0IG1ldGFk YXRhfSkuICBJZiBpdCBoYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IChhcyBpbiBlLmcuLApAZmls ZXtzdWIvZm9vLnRyc30pLCB0aGUgdGVzdCBoYXJuZXNzIHdpbGwgZW5zdXJlIHRoYXQgc3VjaCBk aXJlY3RvcnkKZXhpc3RzIEBlbXBoe2JlZm9yZX0gdGhlIHRlc3QgZHJpdmVyIGlzIGNhbGxlZC4K QGl0ZW0gLS1jb2xvci10ZXN0cyBAe3llc3xub0B9CldoZXRoZXIgdGhlIGNvbnNvbGUgb3V0cHV0 IHNob3VsZCBiZSBjb2xvcml6ZWQgb3Igbm90IChAcHhyZWZ7U2ltcGxlCnRlc3RzIGFuZCBjb2xv ci10ZXN0c30sIHRvIGxlYXJuIHdoZW4gdGhpcyBvcHRpb24gZ2V0cyBhY3RpdmF0ZWQgYW5kCndo ZW4gaXQgZG9lc24ndCkuCkBpdGVtIC0tY29sbGVjdC1za2lwcGVkLWxvZ3MgQHt5ZXN8bm9AfQpX aGV0aGVyIHRvIGluY2x1ZGUgdGhlIGxvZ3Mgb2Ygc2tpcHBlZCB0ZXN0cyBpbiB0aGUgZ2xvYmFs CkBmaWxle3Rlc3Qtc3VpdGUubG9nfSBmaWxlLgpAaXRlbSAtLWV4cGVjdC1mYWlsdXJlIEB7eWVz fG5vQH0KV2hldGhlciB0aGUgdGVzdGVkIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFpbC4KQGl0 ZW0gLS1lbmFibGUtaGFyZC1lcnJvcnMgQHt5ZXN8bm9AfQpXaGV0aGVyIGBgaGFyZCBlcnJvcnMn JyBpbiB0aGUgdGVzdGVkIHByb2dyYW0gc2hvdWxkIGJlIHRyZWF0ZWQgZGlmZmVyZW50bHkKZnJv bSBub3JtYWwgZmFpbHVyZXMgb3Igbm90ICh0aGUgZGVmYXVsdCBzaG91bGQgYmUgQGNvZGV7eWVz fSkuICBUaGUgZXhhY3QKbWVhbmluZyBvZiBgYGhhcmQgZXJyb3InJyBpcyBoaWdobHkgZGVwZW5k ZW50IGZyb20gdGhlIHRlc3QgcHJvdG9jb2xzIG9yCmNvbnZlbnRpb25zIGluIHVzZS4KQGl0ZW0g LS0KRXhwbGljaXRseSB0ZXJtaW5hdGUgdGhlIGxpc3Qgb2Ygb3B0aW9ucy4KQGVuZCB0YWJsZQoK QG5vaW5kZW50ClRoZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgdGVz dCBkcml2ZXIgaXMgdGhlIHByb2dyYW0gdG8KYmUgcnVuLCBhbmQgYWxsIHRoZSBmb2xsb3dpbmcg b25lcyBhcmUgY29tbWFuZC1saW5lIG9wdGlvbnMgYW5kIGFyZ3VtZW50cwpmb3IgdGhpcyBwcm9n cmFtLgoKRXhhY3Qgc2VtYW50aWNzIGF0dGFjaGVkIHRvIHRoZSBAb3B0aW9uey0tY29sb3ItdGVz dHN9LApAb3B0aW9uey0tY29sbGVjdC1za2lwcGVkLWxvZ3N9LCBAb3B0aW9uey0tZXhwZWN0LWZh aWx1cmV9LCBhbmQKQG9wdGlvbnstLWVuYWJsZS1oYXJkLWVycm9yc30gb3B0aW9ucyBhcmUgbGVm dCB1cCB0byB0aGUgaW5kaXZpZHVhbAp0ZXN0IGRyaXZlcnMuICBTdGlsbCwgaGF2aW5nIGEgYmVo YXZpb3IgY29tcGF0aWJsZSBvciBhdCBsZWFzdCBzaW1pbGFyCnRvIHRoYXQgcHJvdmlkZWQgYnkg dGhlIGRlZmF1bHQgZHJpdmVyIGlzIGFkdmlzZWQsIGFzIHRoYXQgcmVzdWx0cwppbiBiZXR0ZXIg Y29uc2lzdGVuY3kgYW5kIHRodXMgYSBtb3JlIHBsZWFzYW50IHVzZXIgZXhwZXJpZW5jZS4KCkBu b2RlIExvZyBmaWxlcyBnZW5lcmF0aW9uIGFuZCB0ZXN0IHJlc3VsdHMgcmVjb3JkaW5nCkBzdWJz dWJzZWN0aW9uIExvZyBmaWxlcyBnZW5lcmF0aW9uIGFuZCB0ZXN0IHJlc3VsdHMgcmVjb3JkaW5n CgpUaGUgdGVzdCBkcml2ZXIgbXVzdCBjb3JyZWN0bHkgZ2VuZXJhdGUgdGhlIGZpbGVzIHNwZWNp ZmllZCBieSB0aGUKQG9wdGlvbnstLWxvZy1maWxlfSBhbmQgQG9wdGlvbnstLXRycy1maWxlfSBv cHRpb24gKGV2ZW4gd2hlbiB0aGUgdGVzdGVkCnByb2dyYW0gZmFpbHMgb3IgY3Jhc2hlcykuCgpU aGUgQGZpbGV7LmxvZ30gZmlsZSBzaG91bGQgaWRlYWxseSBjb250YWluIGFsbCB0aGUgb3V0cHV0 IHByb2R1Y2VkIGJ5IHRoZQp0ZXN0ZWQgcHJvZ3JhbSwgcGx1cyBvcHRpb25hbGx5IG90aGVyIGlu Zm9ybWF0aW9uIHRoYXQgbWlnaHQgZmFjaWxpdGF0ZQpkZWJ1Z2dpbmcgb3IgYW5hbHlzaXMgb2Yg YnVnIHJlcG9ydHMuICBBcGFydCBmcm9tIHRoYXQsIGl0cyBmb3JtYXQgaXMKYmFzaWNhbGx5IGZy ZWUuCgpUaGUgQGZpbGV7LnRyc30gZmlsZSBpcyB1c2VkIHRvIHJlZ2lzdGVyIHNvbWUgbWV0YWRh dGEgdGhyb3VnaCB0aGUgdXNlCm9mIGN1c3RvbSByZVN0cnVjdHVyZWRUZXh0IGZpZWxkcy4gIFRo aXMgbWV0YWRhdGEgaXMgZXhwZWN0ZWQgdG8gYmUKZW1wbG95ZWQgaW4gdmFyaW91cyB3YXlzIGJ5 IHRoZSBwYXJhbGxlbCB0ZXN0IGhhcm5lc3M7IGZvciBleGFtcGxlLCB0bwpjb3VudCB0aGUgdGVz dCByZXN1bHRzIHdoZW4gcHJpbnRpbmcgdGhlIHRlc3RzdWl0ZSBzdW1tYXJ5LCBvciB0byBkZWNp ZGUKd2hpY2ggdGVzdHMgdG8gcmVydW4gdXBvbiBAY29tbWFuZHttYWtlIHJlY2hlY2t9LiAgVW5y ZWNvZ25pemVkIG1ldGFkYXRhCmluIGEgQGZpbGV7LnRyc30gZmlsZSBpcyBjdXJyZW50bHkgaWdu b3JlZCBieSB0aGUgaGFybmVzcywgYnV0IHRoaXMgbWlnaHQKY2hhbmdlIGluIHRoZSBmdXR1cmUu IFRoZSBsaXN0IG9mIGN1cnJlbnRseSByZWNvZ25pemVkIG1ldGFkYXRhIGZvbGxvd3MuCgpAdGFi bGUgQGNvZGUKCkBpdGVtIDp0ZXN0LXJlc3VsdDoKQGNpbmRleCBSZWdpc3RlciB0ZXN0IHJlc3Vs dApAY2luZGV4IFJlZ2lzdGVyIHRlc3QgY2FzZSByZXN1bHQKQGNpbmRleCBUZXN0IHJlc3VsdCwg cmVnaXN0ZXJpbmcKQGNpbmRleCBUZXN0IGNhc2UgcmVzdWx0LCByZWdpc3RlcmluZwpAY2luZGV4 IEBjb2Rlezp0ZXN0LXJlc3VsdDp9CkBjaW5kZXggcmVTdHJ1Y3R1cmVkVGV4dCBmaWVsZCwgQGNv ZGV7OnRlc3QtcmVzdWx0On0KVGhlIHRlc3QgZHJpdmVyIG11c3QgdXNlIHRoaXMgZmllbGQgdG8g cmVnaXN0ZXIgdGhlIHJlc3VsdHMgb2YgQGVtcGh7ZWFjaH0KdGVzdCBjYXNlIHJ1biBieSBhIHRl c3Qgc2NyaXB0IGZpbGUuICBTZXZlcmFsIEBjb2Rlezp0ZXN0LXJlc3VsdDp9IGZpZWxkcwpjYW4g YmUgcHJlc2VudCBpbiB0aGUgc2FtZSBAZmlsZXsudHJzfSBmaWxlOyB0aGlzIGlzIGRvbmUgaW4g b3JkZXIgdG8Kc3VwcG9ydCB0ZXN0IHByb3RvY29scyB0aGF0IGFsbG93IGEgc2luZ2xlIHRlc3Qg c2NyaXB0IHRvIHJ1biBtb3JlIHRlc3QKY2FzZXMuCgpAYyBLZWVwIHRoaXMgaW4gc3luYyB3aXRo IGxpYi9hbS9jaGVjay1hbTokKFRFU1RfU1VJVEVfTE9HKS4KVGhlIG9ubHkgcmVjb2duaXplZCB0 ZXN0IHJlc3VsdHMgYXJlIGN1cnJlbnRseSBAY29kZXtQQVNTfSwgQGNvZGV7WEZBSUx9LApAY29k ZXtTS0lQfSwgQGNvZGV7RkFJTH0sIEBjb2Rle1hQQVNTfSBhbmQgQGNvZGV7RVJST1J9LiAgVGhl c2UgcmVzdWx0cywKd2hlbiBkZWNsYXJlZCB3aXRoIEBjb2Rlezp0ZXN0LXJlc3VsdDp9LCBjYW4g YmUgb3B0aW9uYWxseSBmb2xsb3dlZCBieQp0ZXh0IGhvbGRpbmcgdGhlIG5hbWUgYW5kL29yIGEg YnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcKdGVzdDsgdGhlIGhhcm5lc3Mg d2lsbCBpZ25vcmUgc3VjaCBleHRyYSB0ZXh0IHdoZW4gZ2VuZXJhdGluZwpAZmlsZXt0ZXN0LXN1 aXRlLmxvZ30gYW5kIHByZXBhcmluZyB0aGUgdGVzdHN1aXRlIHN1bW1hcnkuCgpAYyBLZWVwIGlu IHN5bmMgd2l0aCAndGVzdC1tZXRhZGF0YS1yZWNoZWNrLnNoJy4KQGl0ZW0gQGNvZGV7OnJlY2hl Y2s6fQpAY2luZGV4IDpyZWNoZWNrOgpAY2luZGV4IHJlU3RydWN0dXJlZFRleHQgZmllbGQsIEBj b2RlezpyZWNoZWNrOn0KSWYgdGhpcyBmaWVsZCBpcyBwcmVzZW50IGFuZCBkZWZpbmVkIHRvIEBj b2Rle25vfSwgdGhlbiB0aGUgY29ycmVzcG9uZGluZwp0ZXN0IHNjcmlwdCB3aWxsIEBlbXBoe25v dH0gYmUgcnVuIHVwb24gYSBAY29tbWFuZHttYWtlIHJlY2hlY2t9LiAgV2hhdApoYXBwZW5zIHdo ZW4gdHdvIG9yIG1vcmUgQGNvZGV7OnJlY2hlY2s6fSBmaWVsZHMgYXJlIHByZXNlbnQgaW4gdGhl IHNhbWUKQGZpbGV7LnRyc30gZmlsZSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCgpAYyBLZWVwIGlu IHN5bmMgd2l0aCAndGVzdC1tZXRhZGF0YS1nbG9iYWwtbG9nLnNoJy4KQGl0ZW0gQGNvZGV7OmNv cHktaW4tZ2xvYmFsLWxvZzp9CkBjaW5kZXggOmNvcHktaW4tZ2xvYmFsLWxvZzoKQGNpbmRleCBy ZVN0cnVjdHVyZWRUZXh0IGZpZWxkLCBAY29kZXs6Y29weS1pbi1nbG9iYWwtbG9nOn0KSWYgdGhp cyBmaWVsZCBpcyBwcmVzZW50IGFuZCBkZWZpbmVkIHRvIEBjb2Rle25vfSwgdGhlbiB0aGUgY29u dGVudApvZiB0aGUgQGZpbGV7LmxvZ30gZmlsZSB3aWxsIEBlbXBoe25vdH0gYmUgY29waWVkIGlu dG8gdGhlIGdsb2JhbApAZmlsZXt0ZXN0LXN1aXRlLmxvZ30uICBXZSBhbGxvdyB0byBmb3JzYWtl IHN1Y2ggY29weWluZyBiZWNhdXNlLCB3aGlsZQppdCBjYW4gYmUgdXNlZnVsIGluIGRlYnVnZ2lu ZyBhbmQgYW5hbHlzaXMgb2YgYnVnIHJlcG9ydCwgaXQgY2FuIGFsc28gYmUKanVzdCBhIHdhc3Rl IG9mIHNwYWNlIGluIG5vcm1hbCBzaXR1YXRpb25zLCBlLmcuLCB3aGVuIGEgdGVzdCBzY3JpcHQg aXMKc3VjY2Vzc2Z1bC4gIFdoYXQgaGFwcGVucyB3aGVuIHR3byBvciBtb3JlIEBjb2Rlezpjb3B5 LWluLWdsb2JhbC1sb2c6fQpmaWVsZHMgYXJlIHByZXNlbnQgaW4gdGhlIHNhbWUgQGZpbGV7LnRy c30gZmlsZSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuCgpAYyBLZWVwIGluIHN5bmMgd2l0aCAndGVz dC1tZXRhZGF0YS1nbG9iYWwtcmVzdWx0LnNoJy4KQGl0ZW0gQGNvZGV7Omdsb2JhbC10ZXN0LXJl c3VsdDp9CkBjaW5kZXggOmdsb2JhbC10ZXN0LXJlc3VsdDoKQGNpbmRleCByZVN0cnVjdHVyZWRU ZXh0IGZpZWxkLCBAY29kZXs6Z2xvYmFsLXRlc3QtcmVzdWx0On0KVGhpcyBpcyB1c2VkIHRvIGRl Y2xhcmUgdGhlIGBgZ2xvYmFsIHJlc3VsdCcnIG9mIHRoZSBzY3JpcHQuICBDdXJyZW50bHksCnRo ZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGlzIG9ubHkgbmVlZGVkIHRvIGJlIHJlcG9ydGVkIChtb3Jl IG9yIGxlc3MKdmVyYmF0aW0pIGluIHRoZSBnZW5lcmF0ZWQgZ2xvYmFsIGxvZyBmaWxlIEBjb2Rl eyQoVEVTVF9TVUlURV9MT0cpfSwKc28gaXQncyBxdWl0ZSBmcmVlLWZvcm0uICBGb3IgZXhhbXBs ZSwgYSB0ZXN0IHNjcmlwdCB3aGljaCBydW5zIDEwIHRlc3QKY2FzZXMsIDYgb2Ygd2hpY2ggcGFz cyBhbmQgNCBvZiB3aGljaCBhcmUgc2tpcHBlZCwgY291bGQgcmVhc29uYWJseSBoYXZlCmEgQGNv ZGV7UEFTUy9TS0lQfSB2YWx1ZSBmb3IgdGhpcyBmaWVsZCwgd2hpbGUgYSB0ZXN0IHNjcmlwdCB3 aGljaCBydW5zCjE5IHN1Y2Nlc3NmdWwgdGVzdHMgYW5kIG9uZSBmYWlsZWQgdGVzdCBjb3VsZCBo YXZlIGFuIEBjb2Rle0FMTU9TVApQQVNTRUR9IHZhbHVlLiAgV2hhdCBoYXBwZW5zIHdoZW4gdHdv IG9yIG1vcmUgQGNvZGV7Omdsb2JhbC10ZXN0LXJlc3VsdDp9CmZpZWxkcyBhcmUgcHJlc2VudCBp biB0aGUgc2FtZSBAZmlsZXsudHJzfSBmaWxlIGlzIHVuZGVmaW5lZCBiZWhhdmlvci4KQGVuZCB0 YWJsZQoKQG5vaW5kZW50CkxldCdzIHNlZSBhIHNtYWxsIGV4YW1wbGUuICBBc3N1bWUgYSBAZmls ZXsudHJzfSBmaWxlIGNvbnRhaW5zIHRoZQpmb2xsb3dpbmcgbGluZXM6CgpAZXhhbXBsZQo6dGVz dC1yZXN1bHQ6IFBBU1Mgc2VydmVyIHN0YXJ0cwo6Z2xvYmFsLWxvZy1jb3B5OiBubwo6dGVzdC1y ZXN1bHQ6IFBBU1MgSFRUUC8xLjEgcmVxdWVzdAo6dGVzdC1yZXN1bHQ6IEZBSUwgSFRUUC8xLjAg cmVxdWVzdAo6cmVjaGVjazogeWVzCjp0ZXN0LXJlc3VsdDogU0tJUCBIVFRQUyByZXF1ZXN0IChU TFMgbGlicmFyeSB3YXNuJ3QgYXZhaWxhYmxlKQo6dGVzdC1yZXN1bHQ6IFBBU1Mgc2VydmVyIHN0 b3BzCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50ClRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgdGVzdCBz Y3JpcHQgd2lsbCBiZSByZXJ1biBieSBAY29tbWFuZHttYWtlIGNoZWNrfSwKd2lsbCBjb250cmli dXRlIHdpdGggQGVtcGh7Zml2ZX0gdGVzdCByZXN1bHRzIHRvIHRoZSB0ZXN0c3VpdGUgc3VtbWFy eQoodGhyZWUgb2YgdGhlc2UgdGVzdHMgYmVpbmcgc3VjY2Vzc2Z1bCwgb25lIGZhaWxlZCwgYW5k IG9uZSBza2lwcGVkKSwgYW5kCnRoZSBjb250ZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIEBmaWxl ey5sb2d9IGZpbGUgd2lsbCBAZW1waHtub3R9IGJlCmNvcGllZCBpbnRvIHRoZSBnbG9iYWwgbG9n IGZpbGUgQGZpbGV7dGVzdC1zdWl0ZS5sb2d9LgoKQG5vZGUgVGVzdHN1aXRlIHByb2dyZXNzIG91 dHB1dApAc3Vic3Vic2VjdGlvbiBUZXN0c3VpdGUgcHJvZ3Jlc3Mgb3V0cHV0CgpBIGN1c3RvbSB0 ZXN0IGRyaXZlciBhbHNvIGhhcyB0aGUgdGFzayBvZiBkaXNwbGF5aW5nLCBvbiB0aGUgc3RhbmRh cmQKb3V0cHV0LCB0aGUgdGVzdCByZXN1bHRzIGFzIHNvb24gYXMgdGhleSBiZWNvbWUgYXZhaWxh YmxlLiAgRGVwZW5kaW5nIG9uCnRoZSBwcm90b2NvbCBpbiB1c2UsIGl0IGNhbiBhbHNvIGRpc3Bs YXkgdGhlIHJlYXNvbnMgZm9yIGZhaWx1cmVzIGFuZApza2lwcywgYW5kLCBtb3JlIGdlbmVyYWxs eSwgYW55IHVzZWZ1bCBkaWFnbm9zdGljIG91dHB1dCAoYnV0IHJlbWVtYmVyCnRoYXQgZWFjaCBs aW5lIG9uIHRoZSBzY3JlZW4gaXMgcHJlY2lvdXMsIHNvIHRoYXQgY2x1dHRlcmluZyB0aGUgc2Ny ZWVuCndpdGggb3Zlcmx5IHZlcmJvc2UgaW5mb3JtYXRpb24gaXMgYmFkIGlkZWEpLiAgVGhlIGV4 YWN0IGZvcm1hdCBvZiB0aGlzCnByb2dyZXNzIG91dHB1dCBpcyBsZWZ0IHVwIHRvIHRoZSB0ZXN0 IGRyaXZlcjsgaW4gZmFjdCwgYSBjdXN0b20gdGVzdApkcml2ZXIgbWlnaHQgQGVtcGh7dGhlb3Jl dGljYWxseX0gZXZlbiBkZWNpZGUgbm90IHRvIGRvIGFueSBzdWNoIHJlcG9ydCwKbGVhdmluZyBp dCBhbGwgdG8gdGhlIHRlc3RzdWl0ZSBzdW1tYXJ5ICh0aGF0IHdvdWxkIGJlIGEgdmVyeSBsb3Vz eSBpZGVhLApvZiBjb3Vyc2UsIGFuZCBzZXJ2ZXMgb25seSB0byBpbGx1c3RyYXRlIHRoZSBmbGV4 aWJpbGl0eSB0aGF0IGlzCmdyYW50ZWQgaGVyZSkuCgpSZW1lbWJlciB0aGF0IGNvbnNpc3RlbmN5 IGlzIGdvb2Q7IHNvLCBpZiBwb3NzaWJsZSwgdHJ5IHRvIGJlIGNvbnNpc3RlbnQKd2l0aCB0aGUg b3V0cHV0IG9mIHRoZSBidWlsdC1pbiBBdXRvbWFrZSB0ZXN0IGRyaXZlcnMsIHByb3ZpZGluZyBh IHNpbWlsYXIKYGBsb29rICYgZmVlbCcnLiAgSW4gcGFydGljdWxhciwgdGhlIHRlc3RzdWl0ZSBw cm9ncmVzcyBvdXRwdXQgc2hvdWxkIGJlCmNvbG9yaXplZCB3aGVuIHRoZSBAb3B0aW9uey0tY29s b3ItdGVzdHN9IGlzIHBhc3NlZCB0byB0aGUgZHJpdmVyLiAgT24gdGhlCm90aGVyIGVuZCwgaWYg eW91IGFyZSB1c2luZyBhIGtub3duIGFuZCB3aWRlc3ByZWFkIHRlc3QgcHJvdG9jb2wgd2l0aAp3 ZWxsLWVzdGFibGlzaGVkIGltcGxlbWVudGF0aW9ucywgYmVpbmcgY29uc2lzdGVudCB3aXRoIHRo b3NlCmltcGxlbWVudGF0aW9ucycgb3V0cHV0IG1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRvby4KCkBu b2RlIFVzaW5nIHRoZSBUQVAgdGVzdCBwcm90b2NvbApAc2VjdGlvbiBVc2luZyB0aGUgVEFQIHRl c3QgcHJvdG9jb2wKCkBtZW51CiogSW50cm9kdWN0aW9uIHRvIFRBUDo6CiogVXNlIFRBUCB3aXRo IHRoZSBBdXRvbWFrZSB0ZXN0IGhhcm5lc3M6OgoqIEluY29tcGF0aWJpbGl0eSB3aXRoIG90aGVy IFRBUCBwYXJzZXJzIGFuZCBkcml2ZXJzOjoKKiBMaW5rcyBhbmQgZXh0ZXJuYWwgcmVzb3VyY2Vz IG9uIFRBUDo6CkBlbmQgbWVudQoKQG5vZGUgSW50cm9kdWN0aW9uIHRvIFRBUApAc3Vic2VjdGlv biBJbnRyb2R1Y3Rpb24gdG8gVEFQCgpUQVAsIHRoZSBUZXN0IEFueXRoaW5nIFByb3RvY29sLCBp cyBhIHNpbXBsZSB0ZXh0LWJhc2VkIGludGVyZmFjZSBiZXR3ZWVuCnRlc3RpbmcgbW9kdWxlcyBv ciBwcm9ncmFtcyBhbmQgYSB0ZXN0IGhhcm5lc3MuICBUaGUgdGVzdHMgKGFsc28gY2FsbGVkCmBg VEFQIHByb2R1Y2VycycnIGluIHRoaXMgY29udGV4dCkgd3JpdGUgdGVzdCByZXN1bHRzIGluIGEg c2ltcGxlIGZvcm1hdApvbiBzdGFuZGFyZCBvdXRwdXQ7IGEgdGVzdCBoYXJuZXNzIChhbHNvIGNh bGxlZCBgYFRBUCBjb25zdW1lcicnKSB3aWxsCnBhcnNlIGFuZCBpbnRlcnByZXQgdGhlc2UgcmVz dWx0cywgYW5kIHByb3Blcmx5IHByZXNlbnQgdGhlbSB0byB0aGUgdXNlciwKYW5kL29yIHJlZ2lz dGVyIHRoZW0gZm9yIGxhdGVyIGFuYWx5c2lzLiAgVGhlIGV4YWN0IGRldGFpbHMgb2YgaG93IHRo aXMKaXMgYWNjb21wbGlzaGVkIGNhbiB2YXJ5IGFtb25nIGRpZmZlcmVudCB0ZXN0IGhhcm5lc3Nl cy4gIFRoZSBBdXRvbWFrZQpoYXJuZXNzIHdpbGwgcHJlc2VudCB0aGUgcmVzdWx0cyBvbiB0aGUg Y29uc29sZSBpbiB0aGUgdXN1YWwKZmFzaGlvbiAoQHB4cmVme1Rlc3RzdWl0ZSBwcm9ncmVzcyBv biBjb25zb2xlfSksIGFuZCB3aWxsIHVzZSB0aGUKQGZpbGV7LnRyc30gZmlsZXMgKEBweHJlZntC YXNpY3Mgb2YgdGVzdCBtZXRhZGF0YX0pIHRvIHN0b3JlIHRoZSB0ZXN0CnJlc3VsdHMgYW5kIHJl bGF0ZWQgbWV0YWRhdGEuICBBcGFydCBmcm9tIHRoYXQsIGl0IHdpbGwgdHJ5IHRvIHJlbWFpbgph cyBjb21wYXRpYmxlIGFzIHBvc3NpYmxlIHdpdGggcHJlLWV4aXN0aW5nIGFuZCB3aWRlc3ByZWFk IHV0aWxpdGllcywKc3VjaCBhcyB0aGUKQHVyZWZ7aHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL2Rp c3RyaWJ1dGlvbi9UZXN0LUhhcm5lc3MvYmluL3Byb3ZlLApAY29tbWFuZHtwcm92ZX0gdXRpbGl0 eX0sIGF0IGxlYXN0IGZvciB0aGUgc2ltcGxlciB1c2FnZXMuCgpUQVAgc3RhcnRlZCBpdHMgbGlm ZSBhcyBwYXJ0IG9mIHRoZSB0ZXN0IGhhcm5lc3MgZm9yIFBlcmwsIGJ1dCB0b2RheQppdCBoYXMg YmVlbiAobW9zdGx5KSBzdGFuZGFyZGl6ZWQsIGFuZCBoYXMgdmFyaW91cyBpbmRlcGVuZGVudApp bXBsZW1lbnRhdGlvbnMgaW4gZGlmZmVyZW50IGxhbmd1YWdlczsgYW1vbmcgdGhlbSwgQywgQysr LCBQZXJsLApQeXRob24sIFBIUCwgYW5kIEphdmEuICBGb3IgYSBzZW1pLW9mZmljaWFsIHNwZWNp ZmljYXRpb24gb2YgdGhlClRBUCBwcm90b2NvbCwgcGxlYXNlIHJlZmVyIHRvIHRoZSBkb2N1bWVu dGF0aW9uIG9mCkB1cmVme2h0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9UZXN0OjpIYXJuZXNzLCBA c2FtcHtUZXN0OjpIYXJuZXNzfX0uCgpUaGUgbW9zdCByZWxldmFudCByZWFsLXdvcmxkIHVzYWdl cyBvZiBUQVAgYXJlIG9idmlvdXNseSBpbiB0aGUgdGVzdHN1aXRlcwpvZiBAY29tbWFuZHtwZXJs fSBhbmQgb2YgbWFueSBQZXJsIG1vZHVsZXMuICBTdGlsbCwgb3RoZXIgaW1wb3J0YW50CnRoaXJk LXBhcnR5IHBhY2thZ2VzLCBzdWNoIGFzIEB1cmVme2h0dHBzOi8vZ2l0LXNjbS5jb20vLCBAY29t bWFuZHtnaXR9fSwKYWxzbyB1c2UgVEFQIGluIHRoZWlyIHRlc3RzdWl0ZS4KCkBub2RlIFVzZSBU QVAgd2l0aCB0aGUgQXV0b21ha2UgdGVzdCBoYXJuZXNzCkBzdWJzZWN0aW9uIFVzZSBUQVAgd2l0 aCB0aGUgQXV0b21ha2UgdGVzdCBoYXJuZXNzCgpDdXJyZW50bHksIHRoZSBUQVAgZHJpdmVyIHRo YXQgY29tZXMgd2l0aCBBdXRvbWFrZSByZXF1aXJlcyBzb21lIGJ5LWhhbmQKc3RlcHMgb24gdGhl IGRldmVsb3BlcidzIHBhcnQgKHRoaXMgc2l0dWF0aW9uIHNob3VsZCBob3BlZnVsbHkgYmUgaW1w cm92ZWQKaW4gZnV0dXJlIEF1dG9tYWtlIHZlcnNpb25zKS4gIFlvdSdsbCBoYXZlIHRvIGdyYWIg dGhlIEBmaWxle3RhcC1kcml2ZXIuc2h9CnNjcmlwdCBmcm9tIHRoZSBBdXRvbWFrZSBkaXN0cmli dXRpb24gYnkgaGFuZCwgY29weSBpdCBpbiB5b3VyIHNvdXJjZSB0cmVlLAphbmQgdXNlIHRoZSBB dXRvbWFrZSBzdXBwb3J0IGZvciB0aGlyZC1wYXJ0eSB0ZXN0IGRyaXZlcnMgdG8gaW5zdHJ1Y3Qg dGhlCmhhcm5lc3MgdG8gdXNlIHRoZSBAZmlsZXt0YXAtZHJpdmVyLnNofSBzY3JpcHQgYW5kIHRo ZSBhd2sgcHJvZ3JhbSBmb3VuZApieSBAY29kZXtBTV9JTklUX0FVVE9NQUtFfSB0byBydW4geW91 ciBUQVAtcHJvZHVjaW5nIHRlc3RzLiAgU2VlIHRoZSBleGFtcGxlCmJlbG93IGZvciBjbGFyaWZp Y2F0aW9uLgoKQXBhcnQgZnJvbSB0aGUgb3B0aW9ucyBjb21tb24gdG8gYWxsIHRoZSBBdXRvbWFr ZSB0ZXN0IGRyaXZlcnMKKEBweHJlZntDb21tYW5kLWxpbmUgYXJndW1lbnRzIGZvciB0ZXN0IGRy aXZlcnN9KSwgQGZpbGV7dGFwLWRyaXZlci5zaH0Kc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBvcHRp b25zLCB3aG9zZSBuYW1lcyBhcmUgY2hvc2VuIGZvciBlbmhhbmNlZApjb21wYXRpYmlsaXR5IHdp dGggdGhlIEBjb21tYW5ke3Byb3ZlfSB1dGlsaXR5LgoKQHRhYmxlIEBvcHRpb24KQGMgS2VlcCBp biBzeW5jIHdpdGggJ3RhcC1leGl0LnNoJyBhbmQgJ3RhcC1zaWduYWwudGFwJy4KQGl0ZW0gLS1p Z25vcmUtZXhpdApDYXVzZXMgdGhlIHRlc3QgZHJpdmVyIHRvIGlnbm9yZSB0aGUgZXhpdCBzdGF0 dXMgb2YgdGhlIHRlc3Qgc2NyaXB0czsKYnkgZGVmYXVsdCwgdGhlIGRyaXZlciB3aWxsIHJlcG9y dCBhbiBlcnJvciBpZiB0aGUgc2NyaXB0IGV4aXRzIHdpdGggYQpub24temVybyBzdGF0dXMuICBU aGlzIG9wdGlvbiBoYXMgZWZmZWN0IGFsc28gb24gbm9uLXplcm8gZXhpdCBzdGF0dXNlcwpkdWUg dG8gdGVybWluYXRpb24gYnkgYSBzaWduYWwuCkBpdGVtIC0tY29tbWVudHMKSW5zdHJ1Y3QgdGhl IHRlc3QgZHJpdmVyIHRvIGRpc3BsYXkgVEFQIGRpYWdub3N0aWNzIChpLmUuLCBsaW5lcyBiZWdp bm5pbmcKd2l0aCB0aGUgQHNhbXB7I30gY2hhcmFjdGVyKSBpbiB0aGUgdGVzdHN1aXRlIHByb2dy ZXNzIG91dHB1dCB0b287IGJ5CmRlZmF1bHQsIFRBUCBkaWFnbm9zdGljcyBhcmUgb25seSBjb3Bp ZWQgdG8gdGhlIEBmaWxley5sb2d9IGZpbGUuCkBpdGVtIC0tbm8tY29tbWVudHMKUmV2ZXJ0IHRo ZSBlZmZlY3RzIG9mIEBvcHRpb257LS1jb21tZW50c30uCgpAaXRlbSAtLW1lcmdlCkluc3RydWN0 IHRoZSB0ZXN0IGRyaXZlciB0byBtZXJnZSB0aGUgdGVzdCBzY3JpcHRzJyBzdGFuZGFyZCBlcnJv ciBpbnRvCnRoZWlyIHN0YW5kYXJkIG91dHB1dC4gIFRoaXMgaXMgbmVjZXNzYXJ5IGlmIHlvdSB3 YW50IHRvIGVuc3VyZSB0aGF0CmRpYWdub3N0aWNzIGZyb20gdGhlIHRlc3Qgc2NyaXB0cyBhcmUg ZGlzcGxheWVkIGluIHRoZSBjb3JyZWN0IG9yZGVyCnJlbGF0aXZlIHRvIHRlc3QgcmVzdWx0czsg dGhpcyBjYW4gYmUgb2YgZ3JlYXQgaGVscCBpbiBkZWJ1Z2dpbmcKKGVzcGVjaWFsbHkgaWYgeW91 ciB0ZXN0IHNjcmlwdHMgYXJlIHNoZWxsIHNjcmlwdHMgcnVuIHdpdGggc2hlbGwKdHJhY2luZyBh Y3RpdmUpLiAgQXMgYSBkb3duc2lkZSwgdGhpcyBvcHRpb24gbWlnaHQgY2F1c2UgdGhlIHRlc3QK aGFybmVzcyB0byBnZXQgY29uZnVzZWQgaWYgYW55dGhpbmcgdGhhdCBhcHBlYXJzIG9uIHN0YW5k YXJkIGVycm9yCmxvb2tzIGxpa2UgYSB0ZXN0IHJlc3VsdC4gIFVzZSBAb3B0aW9uey0tc3RkZXJy LXByZWZpeH0gdG8gcHJlZml4IGVhY2gKbGluZSBvZiBzdGFuZGFyZCBlcnJvciB0byBhdm9pZCB0 aGlzIHByb2JsZW0uCgpAaXRlbSAtLW5vLW1lcmdlClJldmVydCB0aGUgZWZmZWN0cyBvZiBAb3B0 aW9uey0tbWVyZ2V9LgoKQGl0ZW0gLS1zdGRlcnItcHJlZml4IEB2YXJ7U1RSSU5HfQpQcmVmaXgg ZWFjaCBsaW5lIG9mIHRoZSB0ZXN0IHNjcmlwdCdzIHN0YW5kYXJkIGVycm9yIHdpdGgKQGNvZGV7 QHZhcntTVFJJTkd9fS4gIERlZmF1bHRzIHRvIHRoZSBlbXB0eSBzdHJpbmcuICBUaGlzIG9wdGlv biBtYWtlcwppdCBwb3NzaWJsZSB0byBhdm9pZCBwYXJzaW5nIGFtYmlndWl0eSB3aGVuIEBvcHRp b257LS1tZXJnZX0gaXMgaW4gdXNlLApidXQgaXQgY2FuIGFsc28gYmUgdXNlZCB3aXRob3V0IEBv cHRpb257LS1tZXJnZX0gdG8gbWFrZSBpdCBlYXNpZXIgdG8KcmVhZCB0ZXN0IGxvZyBmaWxlcy4g IFdoZW4gdXNlZCB3aXRoIEBvcHRpb257LS1tZXJnZX0sIHVzZXJzIHdpbGwKdHlwaWNhbGx5IHdh bnQgdG8gc3RhcnQgQGNvZGV7QHZhcntTVFJJTkd9fSB3aXRoIEBzYW1weyN9LCB3aGljaCBzdGFy dHMKYSBUQVAgY29tbWVudC4gIFRoZSBAc2FtcHsjfSBjaGFyYWN0ZXIgaXMgZGlmZmljdWx0IHRv IHBvcnRhYmx5IGluY2x1ZGUKaW4gYSBAY29tbWFuZHttYWtlfSB2YXJpYWJsZSwgc28gdGhlIGZv bGxvd2luZyBxdWFkcmlncmFwaApzdWJzdGl0dXRpb25zLCBjb3BpZWQgZnJvbSBBdXRvY29uZiAo QHB4cmVme1F1YWRyaWdyYXBocywgLCAsIGF1dG9jb25mLApUaGUgQXV0b2NvbmYgTWFudWFsfSks IGFyZSBwZXJmb3JtZWQgb24gQGNvZGV7QHZhcntTVFJJTkd9fToKCkB0YWJsZSBAc2FtcApAaXRl bSBAQCU6QEAKUmVwbGFjZWQgd2l0aCBAc2FtcHsjfS4KQGl0ZW0gQEAmdEBAClJlcGxhY2VkIHdp dGggdGhlIGVtcHR5IHN0cmluZy4gIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaW5jbHVkZSB0 aGUKbGl0ZXJhbCBjaGFyYWN0ZXJzIEBzYW1we0BAJTpAQH0gaW4gdGhlIHByZWZpeCAoQHNhbXB7 QEAlQEAmdEBAOkBAfSwgZm9yCmV4YW1wbGUpLgpAZW5kIHRhYmxlCgpGb3IgZXhhbXBsZSwgdGhl IG9wdGlvbiBAc2FtcHstLXN0ZGVyci1wcmVmaXggIkBAJTpAQFtzdGRlcnJdICJ9CnBhc3NlZCBv biB0aGUgY29tbWFuZCBsaW5lIHdpbGwgcHJlZml4IGVhY2ggbGluZSBvZiB0aGUgdGVzdCBzY3Jp cHQncwpzdGFuZGFyZCBlcnJvciB3aXRoIEBzYW1weyNbc3RkZXJyXSB9LgoKRm9yIG1vcmUgZGV0 YWlscyBvbiBAb3B0aW9uey0tc3RkZXJyLXByZWZpeH0gcHJvY2Vzc2luZywgZXNwZWNpYWxseQp0 aGUgb2NjYXNpb25hbCBvdXRwdXQgcmVvcmRlcmluZyBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbiwg QHB4cmVme1RBUApwcmVmaXhpbmcgc3RkZXJyfS4KCkBpdGVtIC0tZGlhZ25vc3RpYy1zdHJpbmcg QHZhcntTVFJJTkd9CkNoYW5nZSB0aGUgc3RyaW5nIHRoYXQgaW50cm9kdWNlcyBUQVAgZGlhZ25v c3RpY3MgZnJvbSB0aGUgZGVmYXVsdCB2YWx1ZQpvZiBgYEBjb2RleyN9JycgdG8gQGNvZGV7QHZh cntTVFJJTkd9fS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3VyClRBUC1iYXNlZCB0ZXN0IHNj cmlwdHMgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCBvbiB3aGljaCB0aGV5IGhhdmUgbGltaXRlZApj b250cm9sIChiZWNhdXNlLCBzYXksIHRoZSBvdXRwdXQgY29tZXMgZnJvbSBvdGhlciB0b29scyBp bnZva2VkIGluIHRoZQpzY3JpcHRzKSwgYW5kIGl0IG1pZ2h0IGNvbnRhaW4gdGV4dCB0aGF0IGdl dHMgc3B1cmlvdXNseSBpbnRlcnByZXRlZCBhcwpUQVAgZGlhZ25vc3RpY3M6IHN1Y2ggYW4gaXNz dWUgY2FuIGJlIHNvbHZlZCBieSByZWRlZmluaW5nIHRoZSBzdHJpbmcgdGhhdAphY3RpdmF0ZXMg VEFQIGRpYWdub3N0aWNzIHRvIGEgdmFsdWUgeW91IGtub3cgd29uJ3QgYXBwZWFyIGJ5IGNoYW5j ZSBpbgp0aGUgdGVzdHMnIG91dHB1dC4gIE5vdGUgaG93ZXZlciB0aGF0IHRoaXMgZmVhdHVyZSBp cyBub24tc3RhbmRhcmQsIGFzCnRoZSBgYG9mZmljaWFsJycgVEFQIHByb3RvY29sIGRvZXMgbm90 IGFsbG93IGZvciBzdWNoIGEgY3VzdG9taXphdGlvbjsgc28KZG9uJ3QgdXNlIGl0IGlmIHlvdSBj YW4gYXZvaWQgaXQuCkBlbmQgdGFibGUKCkBtZW51CiogVEFQIHNldHVwIGFuZCBleGFtcGxlczo6 IFNldHVwIGFuZCBleGFtcGxlcyBvZiBUQVAgdXNhZ2UuCiogVEFQIHN0ZGVyciBleGFtcGxlczo6 ICAgIEV4YW1wbGVzIG9mIHN0ZGVyciBpc3N1ZXMgYW5kIHByb2Nlc3NpbmcuCiogVEFQIHByZWZp eGluZyBzdGRlcnI6OiAgIERldGFpbHMgYWJvdXQgQG9wdGlvbnstLXN0ZGVyci1wcmVmaXh9IHBy b2Nlc3NpbmcuCkBlbmQgbWVudQoKQG5vZGUgVEFQIHNldHVwIGFuZCBleGFtcGxlcwpAc3Vic3Vi c2VjdGlvbiBUQVAgc2V0dXAgYW5kIGV4YW1wbGVzCgpAY2luZGV4IFRBUCBzZXR1cCwgZXhhbXBs ZSBvZgpAY2luZGV4IHNldHRpbmcgdXAgVEFQLCBleGFtcGxlCgpIZXJlIGlzIGFuIGV4YW1wbGUg b2YgaG93IHRoZSBUQVAgZHJpdmVyIGNhbiBiZSBzZXQgdXAgYW5kIHVzZWQuCgpAYyBLZWVwIGlu IHN5bmMgd2l0aCB0YXAtZG9jMi5zaApAZXhhbXBsZQolIEBrYmR7Y2F0IGNvbmZpZ3VyZS5hY30K QUNfSU5JVChbR05VIFRyeSBUYXBdLCBbMS4wXSwgW2J1Zy1hdXRvbWFrZUBAZ251Lm9yZ10pCkFD X0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQpBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIC1X YWxsIC1XZXJyb3JdKQpBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKQUNfUkVRVUlSRV9BVVhf RklMRShbdGFwLWRyaXZlci5zaF0pCkFDX09VVFBVVAoKJSBAa2Jke2NhdCBNYWtlZmlsZS5hbX0K VEVTVF9MT0dfRFJJVkVSID0gZW52IEFNX1RBUF9BV0s9JyQoQVdLKScgJChTSEVMTCkgXAogICAg ICAgICAgICAgICAgICAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC90YXAtZHJpdmVyLnNoClRFU1RT ID0gZm9vLnRlc3QgYmFyLnRlc3QgYmF6LnRlc3QKRVhUUkFfRElTVCA9ICQoVEVTVFMpCgolIEBr YmR7Y2F0IGZvby50ZXN0fQojIS9iaW4vc2gKZWNobyAxLi40ICMgTnVtYmVyIG9mIHRlc3RzIHRv IGJlIGV4ZWN1dGVkLgplY2hvICdvayAxIC0gU3dhbGxvd3MgZmx5JwplY2hvICdub3Qgb2sgMiAt IENhdGVycGlsbGFycyBmbHkgIyBUT0RPIG1ldGFtb3JwaG9zaXMgaW4gcHJvZ3Jlc3MnCmVjaG8g J29rIDMgLSBQaWdzIGZseSAjIFNLSVAgbm90IGVub3VnaCBhY2lkJwplY2hvICcjIEkganVzdCBs b3ZlIHdvcmQgcGxheXMgLi4uJwplY2hvICdvayA0IC0gRmxpZXMgZmx5IHRvbyA6LSknCgolIEBr YmR7Y2F0IGJhci50ZXN0fQojIS9iaW4vc2gKZWNobyAxLi4zCmVjaG8gJ25vdCBvayAxIC0gQnVt bWVyLCB0aGlzIHRlc3QgaGFzIGZhaWxlZC4nCmVjaG8gJ29rIDIgLSBUaGlzIHBhc3NlZCB0aG91 Z2guJwplY2hvICdCYWlsIG91dCEgRW5udWkga2lja2luZyBpbiwgc29ycnkuLi4nCmVjaG8gJ29r IDMgLSBUaGlzIHdpbGwgbm90IGJlIHNlZW4uJwoKJSBAa2Jke2NhdCBiYXoudGVzdH0KIyEvYmlu L3NoCmVjaG8gMS4uMQplY2hvIG9rIDEKIyBFeGl0IHdpdGggZXJyb3IsIGV2ZW4gaWYgYWxsIHRo ZSB0ZXN0cyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bC4KZXhpdCA3CgolIEBrYmR7Y3AgQHZhcntQUkVG SVh9L3NoYXJlL2F1dG9tYWtlLUB2YXJ7QVBJVkVSU0lPTn0vdGFwLWRyaXZlci5zaCAufQolIEBr YmR7YXV0b3JlY29uZiAtdmkgJiYgLi9jb25maWd1cmUgJiYgbWFrZSBjaGVja30KLi4uClBBU1M6 IGZvby50ZXN0IDEgLSBTd2FsbG93cyBmbHkKWEZBSUw6IGZvby50ZXN0IDIgLSBDYXRlcnBpbGxh cnMgZmx5ICMgVE9ETyBtZXRhbW9ycGhvc2lzIGluIHByb2dyZXNzClNLSVA6IGZvby50ZXN0IDMg LSBQaWdzIGZseSAjIFNLSVAgbm90IGVub3VnaCBhY2lkClBBU1M6IGZvby50ZXN0IDQgLSBGbGll cyBmbHkgdG9vIDotKQpGQUlMOiBiYXIudGVzdCAxIC0gQnVtbWVyLCB0aGlzIHRlc3QgaGFzIGZh aWxlZC4KUEFTUzogYmFyLnRlc3QgMiAtIFRoaXMgcGFzc2VkIHRob3VnaC4KRVJST1I6IGJhci50 ZXN0IC0gQmFpbCBvdXQhIEVubnVpIGtpY2tpbmcgaW4sIHNvcnJ5Li4uClBBU1M6IGJhei50ZXN0 IDEKRVJST1I6IGJhei50ZXN0IC0gZXhpdGVkIHdpdGggc3RhdHVzIDcKLi4uClBsZWFzZSByZXBv cnQgdG8gYnVnLWF1dG9tYWtlQEBnbnUub3JnCi4uLgolIEBrYmR7ZWNobyBleGl0IHN0YXR1czog JD99CmV4aXQgc3RhdHVzOiAxCgpAYyBLZWVwIHRoZSAic2tld2VkIiBpbmRlbnRhdGlvbiBiZWxv dywgaXQgcHJvZHVjZXMgcHJldHR5IFBERiBvdXRwdXQuCiUgQGtiZHtlbnYgVEVTVF9MT0dfRFJJ VkVSX0ZMQUdTPSctLWNvbW1lbnRzIC0taWdub3JlLWV4aXQnIFwKICAgICAgVEVTVFM9J2Zvby50 ZXN0IGJhei50ZXN0JyBtYWtlIC1lIGNoZWNrfQouLi4KUEFTUzogZm9vLnRlc3QgMSAtIFN3YWxs b3dzIGZseQpYRkFJTDogZm9vLnRlc3QgMiAtIENhdGVycGlsbGFycyBmbHkgIyBUT0RPIG1ldGFt b3JwaG9zaXMgaW4gcHJvZ3Jlc3MKU0tJUDogZm9vLnRlc3QgMyAtIFBpZ3MgZmx5ICMgU0tJUCBu b3QgZW5vdWdoIGFjaWQKIyBmb28udGVzdDogSSBqdXN0IGxvdmUgd29yZCBwbGF5cy4uLgpQQVNT OiBmb28udGVzdCA0IC0gRmxpZXMgZmx5IHRvbyA6LSkKUEFTUzogYmF6LnRlc3QgMQouLi4KJSBA a2Jke2VjaG8gZXhpdCBzdGF0dXM6ICQ/fQpleGl0IHN0YXR1czogMApAZW5kIGV4YW1wbGUKCkBu b2RlIFRBUCBzdGRlcnIgZXhhbXBsZXMKQHN1YnN1YnNlY3Rpb24gVEFQIHN0ZGVyciBleGFtcGxl cwoKQGNpbmRleCBUQVAgc3RkZXJyIGV4YW1wbGUKQGNpbmRleCBzdGRlcnIgZXhhbXBsZSBpbiBU QVAKCkhlcmUgaXMgYSBzZXF1ZW5jZSBvZiBleGFtcGxlcyBzaG93aW5nIHRoZSBpc3N1ZSB3aXRo IG1lcmdpbmcgc3Rkb3V0CmFuZCBzdGRlcnIsIGFuZCB0aGUgcmVzb2x1dGlvbiB3aXRoIEBvcHRp b257LS1zdGRlcnItcHJlZml4fS4gIFJlYWQKdGhlIGNvbW1lbnRzIGZvciBzcGVjaWZpY3MuCgpA ZXhhbXBsZQolIEBrYmR7Y2F0IHN0ZGVyci1kZW1vLnRlc3R9CiMhL2Jpbi9zaAplY2hvICdvayAx JwojIFRoZXNlIHNsZWVwcyBoZWxwIGhpZ2hsaWdodCB0aGUgcmVvcmRlcmluZyBvZiBzdGFuZGFy ZCBvdXRwdXQgYW5kCiMgc3RhbmRhcmQgZXJyb3IgbGluZXMgdGhhdCBjYW4gaGFwcGVuIGlmIC0t bWVyZ2UgaXMgbm90IHVzZWQuCnNsZWVwIDEKIyBOb3RlIHRoYXQgdGhpcyBpcyBhIGRpYWdub3N0 aWMgbWVzc2FnZSB3cml0dGVuIHRvIHN0YW5kYXJkIGVycm9yLCBzbwojIGl0IHNob3VsZCBub3Qg YWZmZWN0IHRoZSB0ZXN0cy4gIEhvd2V2ZXIsIGl0IHdpbGwgYnJlYWsgdGhlIHRlc3RzIGlmCiMg LS1tZXJnZSBpcyB1c2VkIHdpdGhvdXQgLS1zdGRlcnItcHJlZml4IGJlY2F1c2UgIkJhaWwgb3V0 ISIgd2lsbCBiZQojIGludGVycHJldGVkIGFzIGEgVEFQIGRpcmVjdGl2ZS4KZWNobyAnQmFpbCBv dXQhICh0aGlzIHNob3VsZCBub3QgYWN0dWFsbHkgYmFpbCBvdXQpJyA+JjIKc2xlZXAgMQplY2hv ICdvayAyJwplY2hvICcxLi4yJwoKJSBAa2Jke21ha2UgY2hlY2sgVEVTVFM9c3RkZXJyLWRlbW8u dGVzdH0KLi4uClBBU1M6IHN0ZGVyci1kZW1vLnRlc3QgMQpQQVNTOiBzdGRlcnItZGVtby50ZXN0 IDIKLi4uCgolIEBrYmR7Y2F0IHN0ZGVyci1kZW1vLmxvZ30KQmFpbCBvdXQhICh0aGlzIHNob3Vs ZCBub3QgYWN0dWFsbHkgYmFpbCBvdXQpCm9rIDEKUEFTUzogc3RkZXJyLWRlbW8udGVzdCAxCm9r IDIKUEFTUzogc3RkZXJyLWRlbW8udGVzdCAyCjEuLjIKCiUgQGtiZHttYWtlIGNoZWNrIFRFU1RT PXN0ZGVyci1kZW1vLnRlc3QgXAogICAgICBURVNUX0xPR19EUklWRVJfRkxBR1M9Jy0tbWVyZ2Un fQouLi4KUEFTUzogc3RkZXJyLWRlbW8udGVzdCAxCkVSUk9SOiBzdGRlcnItZGVtby50ZXN0IC0g QmFpbCBvdXQhICh0aGlzIHNob3VsZCBub3QgYWN0dWFsbHkgYmFpbCBvdXQpCi4uLgoKJSBAa2Jk e21ha2UgY2hlY2sgVEVTVFM9c3RkZXJyLWRlbW8udGVzdCBcCiAgICAgIFRFU1RfTE9HX0RSSVZF Ul9GTEFHUz0nLS1tZXJnZSAtLXN0ZGVyci1wcmVmaXggIkBAJTpAQFtzdGRlcnJdICInfQouLi4K UEFTUzogc3RkZXJyLWRlbW8udGVzdCAxClBBU1M6IHN0ZGVyci1kZW1vLnRlc3QgMgouLi4KCiUg QGtiZHtjYXQgc3RkZXJyLWRlbW8ubG9nfQpvayAxClBBU1M6IHN0ZGVyci1kZW1vLnRlc3QgMQoj W3N0ZGVycl0gQmFpbCBvdXQhICh0aGlzIHNob3VsZCBub3QgYWN0dWFsbHkgYmFpbCBvdXQpCm9r IDIKUEFTUzogc3RkZXJyLWRlbW8udGVzdCAyCjEuLjIKQGVuZCBleGFtcGxlCgpAbm9kZSBUQVAg cHJlZml4aW5nIHN0ZGVycgpAc3Vic3Vic2VjdGlvbiBUQVAgcHJlZml4aW5nIHN0ZGVycgoKQGNp bmRleCBUQVAgcHJlZml4aW5nIHN0ZGVycgpAY2luZGV4IHByZWZpeGluZyBzdGRlcnIgaW4gVEFQ CkBjaW5kZXggc3RkZXJyIHByZWZpeGluZyBpbiBUQVAKQGNpbmRleCByYWNlIGNvbmRpdGlvbiBp biBzdGRlcnIgcHJlZml4aW5nCgpAYyBzZWUgaHR0cHM6Ly9idWdzLmdudS5vcmcvNzI1MzYgZm9y IHRoaXMgZmVhdHVyZSBhbmQgZGlzY3Vzc2lvbi4KCldoZW4gdXNpbmcgdGhlIGFib3ZlIEBvcHRp b257LS1zdGRlcnItcHJlZml4fSBUQVAgb3B0aW9uLCB0aGUgdGVzdApwcm9ncmFtJ3Mgc3RhbmRh cmQgZXJyb3IgbGluZXMgbWlnaHQgb2NjYXNpb25hbGx5IGJlIHByb2Nlc3NlZCBvdXQgb2YKb3Jk ZXIgcmVsYXRpdmUgdG8gdGhlIHRlc3QgcHJvZ3JhbSdzIHN0YW5kYXJkIG91dHB1dCBsaW5lcywg ZXZlbiB3aGVuCkBvcHRpb257LS1tZXJnZX0gaXMgYWxzbyB1c2VkLiAgVGhpcyBjYW4gY2F1c2Ug Y29uZnVzaW9uIHdoZW4gcmVhZGluZyBhCnRlc3QncyBsb2cgYmVjYXVzZSBhIHN0ZG91dCBsaW5l IG1pZ2h0IGFwcGVhciBlYXJsaWVyIChvciBsYXRlcikgdGhhbiBhCnN0ZGVyciBsaW5lIGRlc3Bp dGUgYmVpbmcgb3V0cHV0IGJ5IHRoZSB0ZXN0IHByb2dyYW0gYWZ0ZXIgKG9yIGJlZm9yZSkKdGhl IHN0ZGVyciBsaW5lLiAgVGhpcyByZW9yZGVyaW5nIGNhbiBiZSBkdWUgdG8gbWFueSBmYWN0b3Jz LCBpbmNsdWRpbmc6CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCk91dHB1dCBidWZmZXJpbmcgaW4g dGhlIHRlc3QgcHJvZ3JhbTogVGhlIHRlc3QgcHJvZ3JhbSBtaWdodCBiZQphY2N1bXVsYXRpbmcg b3V0cHV0IGRhdGEgYW5kIHdyaXRpbmcgaXQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4KYmF0 Y2hlcywgbm90IGFzIHNvb24gYXMgaXQgaXMgYXZhaWxhYmxlLiAgWW91IGNhbiB0cnkgc2V0dmJ1 ZigzKSB0bwpjaGFuZ2UgdGhlIGJ1ZmZlcmluZyBtb2RlIGluIHRoZSB0ZXN0IHByb2dyYW0sIG9y IHlvdSBjYW4gYWRkIHJlZ3VsYXIKZmx1c2hlcy4gIE9TLXNwZWNpZmljIHV0aWxpdGllcyB0byBj b250cm9sIGJ1ZmZlcmluZyBtYXkgYmUgYXZhaWxhYmxlLApzdWNoIGFzIHN0ZGJ1ZigxKSBvbiBH TlUvTGludXggc3lzdGVtcy4KCkBpdGVtCklucHV0IGJ1ZmZlcmluZyBpbiB0aGUgVEFQIGRyaXZl cjogVGhlIFRBUCBkcml2ZXIgcmVsaWVzIG9uIHRoZSBhd2soMSkKdXRpbGl0eSwgYW5kIHNvbWUg YXdrIGltcGxlbWVudGF0aW9ucyAobm90YWJseSBtYXdrKSBhZ2dyZXNzaXZlbHkgYnVmZmVyCnRo ZWlyIGlucHV0ICh0aGUgdGVzdCBwcm9ncmFtIG91dHB1dCkuICBUaGlzIGNhdXNlcyBzdGRlcnIg bGluZXMgdG8KYXBwZWFyIGluIHRoZSB0ZXN0IGxvZyBtdWNoIGVhcmxpZXIgdGhhbiBzdGRvdXQg bGluZXMuICBUaGUKQG9wdGlvbnstLW1lcmdlfSBvcHRpb24gYWRkcmVzc2VzIHRoaXMgYnkgc2Vu ZGluZyB0aGUgc3RkZXJyIGxpbmVzIHRvCmF3ayBhbG9uZyB3aXRoIHRoZSBzdGRvdXQgbGluZXMs IHJlbmRlcmluZyBhd2sncyBpbnB1dCBidWZmZXJpbmcKaXJyZWxldmFudC4gIChUaGlzIGlzc3Vl IGFsc28gYXBwbGllcyB3aGVuIEBvcHRpb257LS1zdGRlcnItcHJlZml4fSBpcwpub3QgdXNlZC4p CgpAaXRlbQpDb25jdXJyZW50IHByb2Nlc3Npbmcgb2Ygc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFu ZGFyZCBlcnJvcjogRHVlIHRvIGEKbGltaXRhdGlvbiBvZiB0aGUgc2hlbGwgY29tbWFuZCBsYW5n dWFnZSwgdGhlIFRBUCBkcml2ZXIgcHJvY2Vzc2VzCnN0YW5kYXJkIG91dHB1dCBpbiBhIGRpZmZl cmVudCB0aHJlYWQgb3IgcHJvY2VzcyB0aGFuIHN0YW5kYXJkIGVycm9yLApjYXVzaW5nIGEgcmFj ZSBjb25kaXRpb24uICBQcm9jZXNzaW5nIG9yZGVyIGlzIGluZmx1ZW5jZWQgYnkgaG93IHRoZQpv cGVyYXRpbmcgc3lzdGVtIHNjaGVkdWxlcyB0aGUgdHdvIHRocmVhZHMgb3IgcHJvY2Vzc2VzIGZv ciBleGVjdXRpb24sCndoaWNoIGlzIG91dHNpZGUgdGhlIFRBUCBkcml2ZXIncyBjb250cm9sLgoK QGl0ZW0KTGluZS1iYXNlZCBwcm9jZXNzaW5nOiBXaGVuIHByZWZpeGluZyBzdGFuZGFyZCBlcnJv ciwgdGhlIFRBUCBkcml2ZXIKd2FpdHMgdW50aWwgYSBjb21wbGV0ZSBsaW5lIGlzIHJlYWQgZnJv bSB0aGUgdGVzdCBwcm9ncmFtIGJlZm9yZQpwcm9jZXNzaW5nIHRoZSBsaW5lLiAgVGhpcyByZWR1 Y2VzIHRoZSBjaGFuY2VzIHRoYXQgY2hhcmFjdGVycyBmcm9tIGEKc3RhbmRhcmQgb3V0cHV0IGxp bmUgYXJlIG1peGVkIHdpdGggY2hhcmFjdGVycyBmcm9tIGEgc3RhbmRhcmQgZXJyb3IKbGluZSwg YnV0IGl0IGRlbGF5cyBwcm9jZXNzaW5nIHVudGlsIHRoZSBsaW5lIHRlcm1pbmF0b3IgaXMgZW5j b3VudGVyZWQuCkBlbmQgaXRlbWl6ZQoKQWxsIHN0ZGVyciBsaW5lcyBhcmUgc3RpbGwgcHJvY2Vz c2VkIGluIG9yZGVyIHJlbGF0aXZlIHRvIG90aGVyIHN0ZGVycgpsaW5lcywgYW5kIHRoZSBzYW1l IGdvZXMgZm9yIHRoZSBzdGRvdXQgbGluZXMgcmVsYXRpdmUgdG8gb3RoZXIgc3Rkb3V0CmxpbmVz LiAgU28gdGhlIHJlb3JkZXJpbmcgc2hvdWxkbid0IGJyZWFrIGEgcGFja2FnZSdzIFRBUCB0ZXN0 cywgc2luY2UKdGhlcmUncyBubyByZWFzb24gdG8gb3V0cHV0IFRBUCBjb21tYW5kcyB0byBzdGRl cnI7IGV2ZW4gbW9yZSBzbyB3aGVuCnN0ZGVyciBsaW5lcyBhcmUgcHJlZml4ZWQuCgpXaGVuIHRy b3VibGVzaG9vdGluZyBhIHBhcnRpY3VsYXIgdGVzdCwgaWYgeW91IGZpbmQgdGhlIHJlb3JkZXJp bmcgaXMKY2F1c2luZyBjb25mdXNpb24sIHlvdSBjYW4gb21pdCBAb3B0aW9uey0tc3RkZXJyLXBy ZWZpeH0sIG9yIHJ1biB0aGUKdGVzdCBwcm9ncmFtIGRpcmVjdGx5IChub3QgdmlhIHRoZSBUQVAg ZHJpdmVyKSB0byBnZXQgYSBtb3JlIGFjY3VyYXRlCnVuZGVyc3RhbmRpbmcgb2Ygb3V0cHV0IHRp bWluZy4KCk92ZXJhbGwsIHRob3VnaCwgdGhlIG9yZGVyIG9mIHByb2Nlc3NpbmcgKGFuZCBsb2dn aW5nKSBzaG91bGQgbm90CmRpZmZlciBmcm9tIHRoZSBvcmRlciBvZiB0aGUgdGVzdCBwcm9ncmFt J3Mgd3JpdGUoMikgY2FsbHMgYnkgbXVjaC4KT3V0LW9mLW9yZGVyIHByb2Nlc3Npbmcgb25seSBo YXBwZW5zIGlmIHRoZSB0ZXN0IHByb2dyYW0gd3JpdGVzIHRvCnN0ZG91dCB0aGVuIHN0ZGVyciBi dXQgdGhlIGtlcm5lbCB3YWtlcyB1cCB0aGUgVEFQIGRyaXZlcidzCnRocmVhZC9wcm9jZXNzIHRo YXQgaXMgcmVhZGluZyBzdGRlcnIgYmVmb3JlIGl0IHdha2VzIHVwIHRoZSBUQVAKZHJpdmVyJ3Mg dGhyZWFkL3Byb2Nlc3MgdGhhdCBpcyByZWFkaW5nIHN0ZG91dCwgb3IgdmljZSB2ZXJzYS4KCkBu b2RlIEluY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIFRBUCBwYXJzZXJzIGFuZCBkcml2ZXJzCkBz dWJzZWN0aW9uIEluY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIFRBUCBwYXJzZXJzIGFuZCBkcml2 ZXJzCgpGb3IgaW1wbGVtZW50YXRpb24gb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGUgVEFQIGRy aXZlciBhbmQgaGFybmVzcyBhcwppbXBsZW1lbnRlZCBieSBBdXRvbWFrZSBoYXZlIHNvbWUgbWlu b3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCB0aGUKbWFpbnN0cmVhbSB2ZXJzaW9ucywgd2hp Y2ggeW91IHNob3VsZCBiZSBhd2FyZSBvZi4KCkBpdGVtaXplIEBidWxsZXQKQGl0ZW0KQSBAY29k ZXtCYWlsIG91dCF9IGRpcmVjdGl2ZSBkb2Vzbid0IHN0b3AgdGhlIHdob2xlIHRlc3RzdWl0ZSwg YnV0IG9ubHkKdGhlIHRlc3Qgc2NyaXB0IGl0IG9jY3VycyBpbi4gIFRoaXMgZG9lc24ndCBmb2xs b3cgVEFQIHNwZWNpZmljYXRpb25zLApidXQgb24gdGhlIG90aGVyIGhhbmQgaXQgbWF4aW1pemVz IGNvbXBhdGliaWxpdHkgKGFuZCBjb2RlIHNoYXJpbmcpIHdpdGgKdGhlIGBgaGFyZCBlcnJvcicn IGNvbmNlcHQgb2YgdGhlIGRlZmF1bHQgdGVzdHN1aXRlIGRyaXZlci4KQGl0ZW0KVGhlIEBjb2Rl e3ZlcnNpb259IGFuZCBAY29kZXtwcmFnbWF9IGRpcmVjdGl2ZXMgYXJlIG5vdCBzdXBwb3J0ZWQu CkBpdGVtClRoZSBAb3B0aW9uey0tZGlhZ25vc3RpYy1zdHJpbmd9IG9wdGlvbiBvZiBvdXIgZHJp dmVyIGFsbG93cyBtb2RpZmljYXRpb24gb2YKdGhlIHN0cmluZyB0aGF0IGludHJvZHVjZXMgVEFQ IGRpYWdub3N0aWNzIGZyb20gdGhlIGRlZmF1bHQgdmFsdWUKb2YgYGBAY29kZXsjfScnLiAgVGhl IHN0YW5kYXJkIFRBUCBwcm90b2NvbCBjdXJyZW50bHkgaGFzIG5vIHdheSB0bwphbGxvdyB0aGlz LCBzbyBpZiB5b3UgdXNlIGl0IHlvdXIgZGlhZ25vc3RpYyB3aWxsIGJlIGxvc3QgdG8gbW9yZQpj b21wbGlhbnQgdG9vbHMgbGlrZSBAY29tbWFuZHtwcm92ZX0gYW5kIEBjb2Rle1Rlc3Q6Okhhcm5l c3N9CkBpdGVtCkFuZCB0aGVyZSBhcmUgcHJvYmFibHkgc29tZSBvdGhlciBzbWFsbCBhbmQgeWV0 IHVuZGlzY292ZXJlZApjb21wYXRpYmlsaXR5IGlzc3VlcywgZXNwZWNpYWxseSBpbiBjb3JuZXIg Y2FzZXMgb3Igd2l0aCByYXJlIHVzYWdlcy4KQGVuZCBpdGVtaXplCgpAbm9kZSBMaW5rcyBhbmQg ZXh0ZXJuYWwgcmVzb3VyY2VzIG9uIFRBUApAc3Vic2VjdGlvbiBMaW5rcyBhbmQgZXh0ZXJuYWwg cmVzb3VyY2VzIG9uIFRBUAoKQG5vaW5kZW50CkhlcmUgYXJlIHNvbWUgbGlua3MgdG8gbW9yZSBl eHRlbnNpdmUgb2ZmaWNpYWwgb3IgdGhpcmQtcGFydHkKZG9jdW1lbnRhdGlvbiBhbmQgcmVzb3Vy Y2VzIGFib3V0IHRoZSBUQVAgcHJvdG9jb2wgYW5kIHJlbGF0ZWQKdG9vbHMgYW5kIGxpYnJhcmll cy4KQGl0ZW1pemUgQGJ1bGxldApAaXRlbQpAdXJlZntodHRwczovL21ldGFjcGFuLm9yZy9wb2Qv VGVzdDo6SGFybmVzcywgQHNhbXB7VGVzdDo6SGFybmVzc319LAp0aGUgKG1vc3RseSkgb2ZmaWNp YWwgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgVEFQIGZvcm1hdCBhbmQgcHJvdG9jb2wuCkBpdGVt CkB1cmVme2h0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9kaXN0cmlidXRpb24vVGVzdC1IYXJuZXNz L2Jpbi9wcm92ZSwKICAgICAgQGNvbW1hbmR7cHJvdmV9fSwKdGhlIG1vc3QgZmFtb3VzIGNvbW1h bmQtbGluZSBUQVAgdGVzdCBkcml2ZXIsIGluY2x1ZGVkIGluIHRoZSBkaXN0cmlidXRpb24Kb2Yg QGNvbW1hbmR7cGVybH0gYW5kCkB1cmVme2h0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9kaXN0cmli dXRpb24vVGVzdC1IYXJuZXNzL2xpYi9UZXN0L0hhcm5lc3MucG0sCiAgICAgIEBzYW1we1Rlc3Q6 Okhhcm5lc3N9fS4KQGl0ZW0KVGhlIEB1cmVme2h0dHBzOi8vdGVzdGFueXRoaW5nLm9yZy8sVEFQ IHdpa2l9LgpAaXRlbQpBIGBgZ2VudGxlIGludHJvZHVjdGlvbicnIHRvIHRlc3RpbmcgZm9yIFBl cmwgY29kZXJzOgpAdXJlZntodHRwczovL21ldGFjcGFuLm9yZy9wb2QvZGlzdHJpYnV0aW9uL1Rl c3QtU2ltcGxlL2xpYi9UZXN0L1R1dG9yaWFsLnBvZCwKICAgICAgQHNhbXB7VGVzdDo6VHV0b3Jp YWx9fS4KQGl0ZW0KQHVyZWZ7aHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL2Rpc3RyaWJ1dGlvbi9U ZXN0LVNpbXBsZS9saWIvVGVzdC9TaW1wbGUucG0sCiAgICAgIEBzYW1we1Rlc3Q6OlNpbXBsZX19 CmFuZApAdXJlZntodHRwczovL21ldGFjcGFuLm9yZy9wb2QvZGlzdHJpYnV0aW9uL1Rlc3QtU2lt cGxlL2xpYi9UZXN0L01vcmUucG0sCiAgICAgIEBzYW1we1Rlc3Q6Ok1vcmV9fSwKdGhlIHN0YW5k YXJkIFBlcmwgdGVzdGluZyBsaWJyYXJpZXMsIHdoaWNoIGFyZSBiYXNlZCBvbiBUQVAuCkBpdGVt CkB1cmVme2h0dHBzOi8vd3d3LmV5cmllLm9yZy9+ZWFnbGUvc29mdHdhcmUvYy10YXAtaGFybmVz cy8sQyBUQVAgSGFybmVzc30sCmEgQy1iYXNlZCBwcm9qZWN0IGltcGxlbWVudGluZyBib3RoIGEg VEFQIHByb2R1Y2VyIGFuZCBhIFRBUCBjb25zdW1lci4KQGl0ZW0KQHVyZWZ7aHR0cHM6Ly90YXA0 ai5vcmcvLHRhcDRqfSwKYSBKYXZhLWJhc2VkIHByb2plY3QgaW1wbGVtZW50aW5nIGJvdGggYSBU QVAgcHJvZHVjZXIgYW5kIGEgVEFQIGNvbnN1bWVyLgpAZW5kIGl0ZW1pemUKCkBub2RlIERlamFH bnUgVGVzdHMKQHNlY3Rpb24gRGVqYUdudSBUZXN0cwoKSWYgQGNvbW1hbmR7ZGVqYWdudX0gKEBw eHJlZntUb3AsICwgSW50cm9kdWN0aW9uLCBkZWphZ251LCBEZWphR251fSkKYXBwZWFycyBpbiBA Y29kZXtBVVRPTUFLRV9PUFRJT05TfSwgdGhlbiBhIEBjb21tYW5ke2RlamFnbnV9LWJhc2VkCnRl c3Qgc3VpdGUgaXMgYXNzdW1lZC4gIFRoZSB2YXJpYWJsZSBAY29kZXtERUpBVE9PTH0gaXMgYSBs aXN0IG9mCm5hbWVzIHRoYXQgYXJlIHBhc3NlZCwgb25lIGF0IGEgdGltZSwgYXMgdGhlIEBvcHRp b257LS10b29sfSBhcmd1bWVudAp0byBAY29tbWFuZHtydW50ZXN0fSBpbnZvY2F0aW9uczsgaXQg ZGVmYXVsdHMgdG8gdGhlIG5hbWUgb2YgdGhlCnBhY2thZ2UuCgpUaGUgdmFyaWFibGUgQGNvZGV7 UlVOVEVTVERFRkFVTFRGTEFHU30gaG9sZHMgdGhlIEBvcHRpb257LS10b29sfSBhbmQKQG9wdGlv bnstLXNyY2Rpcn0gZmxhZ3MgdGhhdCBhcmUgcGFzc2VkIHRvIGRlamFnbnUgYnkgZGVmYXVsdDsg dGhpcyBjYW4gYmUKb3ZlcnJpZGRlbiBpZiBuZWNlc3NhcnkuCkB2aW5kZXggUlVOVEVTVERFRkFV TFRGTEFHUwoKVGhlIHZhcmlhYmxlcyBAY29kZXtFWFBFQ1R9IGFuZCBAY29kZXtSVU5URVNUfSBj YW4KYWxzbyBiZSBvdmVycmlkZGVuIHRvIHByb3ZpZGUgcHJvamVjdC1zcGVjaWZpYyB2YWx1ZXMu ICBGb3IgaW5zdGFuY2UsCnlvdSB3aWxsIG5lZWQgdG8gZG8gdGhpcyBpZiB5b3UgYXJlIHRlc3Rp bmcgYSBjb21waWxlciB0b29sY2hhaW4sCmJlY2F1c2UgdGhlIGRlZmF1bHQgdmFsdWVzIGRvIG5v dCB0YWtlIGludG8gYWNjb3VudCBob3N0IGFuZCB0YXJnZXQKbmFtZXMuCkBvcGluZGV4IGRlamFn bnUKQHZpbmRleCBERUpBVE9PTApAdmluZGV4IEVYUEVDVApAdmluZGV4IFJVTlRFU1QKClRoZSBj b250ZW50cyBvZiB0aGUgdmFyaWFibGUgQGNvZGV7UlVOVEVTVEZMQUdTfSBhcmUgcGFzc2VkIHRv IHRoZQpAY29kZXtydW50ZXN0fSBpbnZvY2F0aW9uLiAgVGhpcyBpcyBjb25zaWRlcmVkIGEgYGB1 c2VyIHZhcmlhYmxlJycKKEBweHJlZntVc2VyIFZhcmlhYmxlc30pLiAgSWYgeW91IG5lZWQgdG8g c2V0IEBjb21tYW5ke3J1bnRlc3R9IGZsYWdzIGluCkBmaWxle01ha2VmaWxlLmFtfSwgeW91IGNh biB1c2UgQGNvZGV7QU1fUlVOVEVTVEZMQUdTfSBpbnN0ZWFkLgpAdmluZGV4IFJVTlRFU1RGTEFH UwpAdmluZGV4IEFNX1JVTlRFU1RGTEFHUwoKQGNpbmRleCBAZmlsZXtzaXRlLmV4cH0KQXV0b21h a2Ugd2lsbCBnZW5lcmF0ZSBydWxlcyB0byBjcmVhdGUgYSBsb2NhbCBAZmlsZXtzaXRlLmV4cH0g ZmlsZSwKZGVmaW5pbmcgdmFyaW91cyB2YXJpYWJsZXMgZGV0ZWN0ZWQgYnkgQGNvbW1hbmR7Y29u ZmlndXJlfS4gIFRoaXMgZmlsZQppcyBhdXRvbWF0aWNhbGx5IHJlYWQgYnkgRGVqYUdudS4gIEl0 IGlzIE9LIGZvciB0aGUgdXNlciBvZiBhIHBhY2thZ2UKdG8gZWRpdCB0aGlzIGZpbGUgaW4gb3Jk ZXIgdG8gdHVuZSB0aGUgdGVzdCBzdWl0ZS4gIEhvd2V2ZXIgdGhpcyBpcwpub3QgdGhlIHBsYWNl IHdoZXJlIHRoZSB0ZXN0IHN1aXRlIGF1dGhvciBzaG91bGQgZGVmaW5lIG5ldyB2YXJpYWJsZXM6 CnRoaXMgc2hvdWxkIGJlIGRvbmUgZWxzZXdoZXJlIGluIHRoZSByZWFsIHRlc3Qgc3VpdGUgY29k ZS4KRXNwZWNpYWxseSwgQGZpbGV7c2l0ZS5leHB9IHNob3VsZCBub3QgYmUgZGlzdHJpYnV0ZWQu CgpTdGlsbCwgaWYgdGhlIHBhY2thZ2UgYXV0aG9yIGhhcyBsZWdpdGltYXRlIHJlYXNvbnMgdG8g ZXh0ZW5kCkBmaWxle3NpdGUuZXhwfSBhdCBAY29tbWFuZHttYWtlfSB0aW1lLCBoZSBjYW4gZG8g c28gYnkgZGVmaW5pbmcKdGhlIHZhcmlhYmxlIEBjb2Rle0VYVFJBX0RFSkFHTlVfU0lURV9DT05G SUd9OyB0aGUgZmlsZXMgbGlzdGVkCnRoZXJlIHdpbGwgYmUgY29uc2lkZXJlZCBAZmlsZXtzaXRl LmV4cH0gcHJlcmVxdWlzaXRlcywgYW5kIHRoZWlyCmNvbnRlbnQgd2lsbCBiZSBhcHBlbmRlZCB0 byBpdCAoaW4gdGhlIHNhbWUgb3JkZXIgaW4gd2hpY2ggdGhleQphcHBlYXIgaW4gQGNvZGV7RVhU UkFfREVKQUdOVV9TSVRFX0NPTkZJR30pLiAgTm90ZSB0aGF0IGZpbGVzIGFyZQpAZW1waHtub3R9 IGRpc3RyaWJ1dGVkIGJ5IGRlZmF1bHQuCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWdhcmRpbmcg RGVqYUdudSB0ZXN0IHN1aXRlcywgc2VlIEByZWZ7VG9wLCAsICwKZGVqYWdudSwgVGhlIERlamFH bnUgTWFudWFsfS4KCkBub2RlIEluc3RhbGwgVGVzdHMKQHNlY3Rpb24gSW5zdGFsbCBUZXN0cwoK VGhlIEBjb2Rle2luc3RhbGxjaGVja30gdGFyZ2V0IGlzIGF2YWlsYWJsZSB0byB0aGUgdXNlciBh cyBhIHdheSB0bwpydW4gYW55IHRlc3RzIGFmdGVyIHRoZSBwYWNrYWdlIGhhcyBiZWVuIGluc3Rh bGxlZC4gIFlvdSBjYW4gYWRkIHRlc3RzCnRvIHRoaXMgYnkgd3JpdGluZyBhbiBAY29kZXtpbnN0 YWxsY2hlY2stbG9jYWx9IHJ1bGUuCgoKQG5vZGUgUmVidWlsZGluZwpAY2hhcHRlciBSZWJ1aWxk aW5nIE1ha2VmaWxlcwpAY2luZGV4IHJlYnVpbGQgcnVsZXMKCkF1dG9tYWtlIGdlbmVyYXRlcyBy dWxlcyB0byBhdXRvbWF0aWNhbGx5IHJlYnVpbGQgQGZpbGV7TWFrZWZpbGV9cywKQGZpbGV7Y29u ZmlndXJlfSwgYW5kIG90aGVyIGRlcml2ZWQgZmlsZXMgbGlrZSBAZmlsZXtNYWtlZmlsZS5pbn0u CgpAYWNpbmRleCBBTV9NQUlOVEFJTkVSX01PREUKSWYgeW91IGFyZSB1c2luZyBAY29kZXtBTV9N QUlOVEFJTkVSX01PREV9IGluIEBmaWxle2NvbmZpZ3VyZS5hY30sIHRoZW4KdGhlc2UgYXV0b21h dGljIHJlYnVpbGRpbmcgcnVsZXMgYXJlIG9ubHkgZW5hYmxlZCBpbiBtYWludGFpbmVyIG1vZGUu CgpAdmluZGV4IENPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTCkB2aW5kZXggQ09ORklHVVJFX0RF UEVOREVOQ0lFUwpAY2luZGV4IEBmaWxle3ZlcnNpb24uc2h9LCBleGFtcGxlCkBjaW5kZXggQGZp bGV7dmVyc2lvbi5tNH0sIGV4YW1wbGUKClNvbWV0aW1lcyBpdCBpcyBjb252ZW5pZW50IHRvIHN1 cHBsZW1lbnQgdGhlIHJlYnVpbGQgcnVsZXMgZm9yCkBmaWxle2NvbmZpZ3VyZX0gb3IgQGZpbGV7 Y29uZmlnLnN0YXR1c30gd2l0aCBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcy4KVGhlIHZhcmlhYmxl cyBAY29kZXtDT05GSUdVUkVfREVQRU5ERU5DSUVTfSBhbmQKQGNvZGV7Q09ORklHX1NUQVRVU19E RVBFTkRFTkNJRVN9IGNhbiBiZSB1c2VkIHRvIGxpc3QgdGhlc2UgZXh0cmEKZGVwZW5kZW5jaWVz LiAgVGhlc2UgdmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGluIGFsbApAZmlsZXtNYWtlZmls ZX1zIG9mIHRoZSB0cmVlIChiZWNhdXNlIHRoZXNlIHR3byByZWJ1aWxkIHJ1bGVzIGFyZQpvdXRw dXQgaW4gYWxsIG9mIHRoZW0pLCBzbyBpdCBpcyBzYWZlciBhbmQgZWFzaWVyIHRvIEBjb2Rle0FD X1NVQlNUfSB0aGVtCmZyb20gQGZpbGV7Y29uZmlndXJlLmFjfS4gIEZvciBpbnN0YW5jZSwgdGhl IGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbApjYXVzZSBAZmlsZXtjb25maWd1cmV9IHRvIGJlIHJl cnVuIGVhY2ggdGltZSBAZmlsZXt2ZXJzaW9uLnNofSBpcwpjaGFuZ2VkLgoKQGMgS2VlcCBpbiBz eW5jIHdpdGggcmVtYWtlLWNvbmZpZy1zdGF0dXMtZGVwZW5kZW5jaWVzLnNoCkBleGFtcGxlCkFD X1NVQlNUKFtDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFU10sIFsnJCh0b3Bfc3JjZGlyKS92ZXJz aW9uLnNoJ10pCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50Ck5vdGUgdGhlIEBzYW1weyQodG9wX3Ny Y2RpcikvfSBpbiB0aGUgZmlsZSBuYW1lLiAgU2luY2UgdGhpcyB2YXJpYWJsZQppcyB0byBiZSB1 c2VkIGluIGFsbCBAZmlsZXtNYWtlZmlsZX1zLCBpdHMgdmFsdWUgbXVzdCBiZSBzZW5zaWJsZSBh dAphbnkgbGV2ZWwgaW4gdGhlIGJ1aWxkIGhpZXJhcmNoeS4KCkJld2FyZSBub3QgdG8gbWlzdGFr ZSBAY29kZXtDT05GSUdVUkVfREVQRU5ERU5DSUVTfSBmb3IKQGNvZGV7Q09ORklHX1NUQVRVU19E RVBFTkRFTkNJRVN9LgoKQGMgS2VlcCBpbiBzeW5jIHdpdGggcmVtYWtlLWNvbmZpZ3VyZS1kZXBl bmRlbmNpZXMuc2gKQGNvZGV7Q09ORklHVVJFX0RFUEVOREVOQ0lFU30gYWRkcyBkZXBlbmRlbmNp ZXMgdG8gdGhlCkBmaWxle2NvbmZpZ3VyZX0gcnVsZSwgd2hvc2UgZWZmZWN0IGlzIHRvIHJ1biBA Y29tbWFuZHthdXRvY29uZn0uClRoaXMgdmFyaWFibGUgc2hvdWxkIGJlIHNlbGRvbSB1c2VkLCBi ZWNhdXNlIEBjb21tYW5ke2F1dG9tYWtlfQphbHJlYWR5IHRyYWNrcyBAY29kZXttNF9pbmNsdWRl fWQgZmlsZXMsIGJ1dCBpdCBjYW4gYmUgdXNlZnVsIHdoZW4KcGxheWluZyB0cmlja3kgZ2FtZXMg d2l0aCBAY29kZXttNF9lc3lzY21kfSBvciBzaW1pbGFyCm5vbi1yZWNvbW1lbmRhYmxlIG1hY3Jv cyB3aXRoIHNpZGUgZWZmZWN0cy4gIEFsc28gYmUgYXdhcmUgdGhhdAppbnRlcmFjdGlvbnMgb2Yg dGhpcyB2YXJpYWJsZSB3aXRoIHRoZSBAcmVme0F1dG9tNHRlIENhY2hlLCAsIGF1dG9tNHRlCmNh Y2hlLCBhdXRvY29uZiwgVGhlIEF1dG9jb25mIE1hbnVhbH0gYXJlIHF1aXRlIHByb2JsZW1hdGlj IGFuZCBjYW4KY2F1c2Ugc3VidGxlIGJyZWFrYWdlLCBzbyB5b3UgbWlnaHQgd2FudCB0byBkaXNh YmxlIHRoZSBjYWNoZSBpZiB5b3UKd2FudCB0byB1c2UgQGNvZGV7Q09ORklHVVJFX0RFUEVOREVO Q0lFU30uCgpAY29kZXtDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFU30gYWRkcyBkZXBlbmRlbmNp ZXMgdG8gdGhlCkBmaWxle2NvbmZpZy5zdGF0dXN9IHJ1bGUsIHdob3NlIGVmZmVjdCBpcyB0byBy dW4gQGZpbGV7Y29uZmlndXJlfS4KVGhpcyB2YXJpYWJsZSBzaG91bGQgdGhlcmVmb3JlIGNhcnJ5 IGFueSBub24tc3RhbmRhcmQgc291cmNlIHRoYXQgbWF5CmJlIHJlYWQgYXMgYSBzaWRlIGVmZmVj dCBvZiBydW5uaW5nIEBjb21tYW5ke2NvbmZpZ3VyZX0sIGxpa2UgQGZpbGV7dmVyc2lvbi5zaH0K aW4gdGhlIGV4YW1wbGUgYWJvdmUuCgpTcGVha2luZyBvZiBAZmlsZXt2ZXJzaW9uLnNofSBzY3Jp cHRzLCB3ZSByZWNvbW1lbmQgYWdhaW5zdCB0aGVtCnRvZGF5LiAgVGhleSBhcmUgbWFpbmx5IHVz ZWQgd2hlbiB0aGUgdmVyc2lvbiBvZiBhIHBhY2thZ2UgaXMgdXBkYXRlZAphdXRvbWF0aWNhbGx5 IGJ5IGEgc2NyaXB0IChlLmcuLCBpbiBkYWlseSBidWlsZHMpLiAgSGVyZSBpcyB3aGF0IHNvbWUK b2xkLXN0eWxlIEBmaWxle2NvbmZpZ3VyZS5hY31zIG1heSBsb29rIGxpa2U6CgpAZXhhbXBsZQpB Q19JTklUCi4gJHNyY2Rpci92ZXJzaW9uLnNoCkFNX0lOSVRfQVVUT01BS0UoW25hbWVdLCAkVkVS U0lPTl9OVU1CRVIpCkBkb3Rze30KQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKSGVyZSwgQGZpbGV7 dmVyc2lvbi5zaH0gaXMgYSBzaGVsbCBmcmFnbWVudCB0aGF0IHNldHMKQGNvZGV7VkVSU0lPTl9O VU1CRVJ9LiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGV4YW1wbGUgaXMgdGhhdApAY29tbWFuZHth dXRvbWFrZX0gY2Fubm90IHRyYWNrIGRlcGVuZGVuY2llcyAobGlzdGluZyBAZmlsZXt2ZXJzaW9u LnNofQppbiBAY29tbWFuZHtDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFU30sIGFuZCBkaXN0cmli dXRpbmcgdGhpcyBmaWxlIGlzIHVwCnRvIHRoZSB1c2VyKSwgYW5kIHRoYXQgaXQgdXNlcyB0aGUg b2Jzb2xldGUgZm9ybSBvZiBAY29kZXtBQ19JTklUfSBhbmQKQGNvZGV7QU1fSU5JVF9BVVRPTUFL RX0uICBVcGdyYWRpbmcgdG8gdGhlIG5ldyBzeW50YXggaXMgbm90CnN0cmFpZ2h0Zm9yd2FyZCwg YmVjYXVzZSBzaGVsbCB2YXJpYWJsZXMgYXJlIG5vdCBhbGxvd2VkIGluCkBjb2Rle0FDX0lOSVR9 J3MgYXJndW1lbnRzLiAgV2UgcmVjb21tZW5kIHRoYXQgQGZpbGV7dmVyc2lvbi5zaH0gYmUKcmVw bGFjZWQgYnkgYW4gTTQgZmlsZSB0aGF0IGlzIGluY2x1ZGVkIGJ5IEBmaWxle2NvbmZpZ3VyZS5h Y306CgpAZXhhbXBsZQptNF9pbmNsdWRlKFt2ZXJzaW9uLm00XSkKQUNfSU5JVChbbmFtZV0sIFZF UlNJT05fTlVNQkVSKQpBTV9JTklUX0FVVE9NQUtFCkBkb3Rze30KQGVuZCBleGFtcGxlCgpAbm9p bmRlbnQKSGVyZSBAZmlsZXt2ZXJzaW9uLm00fSBjb3VsZCBjb250YWluIHNvbWV0aGluZyBsaWtl CkBzYW1we200X2RlZmluZShbVkVSU0lPTl9OVU1CRVJdLCBbMS4yXSl9LiAgVGhlIGFkdmFudGFn ZSBvZiB0aGlzCnNlY29uZCBmb3JtIGlzIHRoYXQgQGNvbW1hbmR7YXV0b21ha2V9IHdpbGwgdGFr ZSBjYXJlIG9mIHRoZQpkZXBlbmRlbmNpZXMgd2hlbiBkZWZpbmluZyB0aGUgcmVidWlsZCBydWxl LCBhbmQgd2lsbCBhbHNvIGRpc3RyaWJ1dGUKdGhlIGZpbGUgYXV0b21hdGljYWxseS4gIEFuIGlu Y29udmVuaWVuY2UgaXMgdGhhdCBAY29tbWFuZHthdXRvY29uZn0Kd2lsbCBub3cgYmUgcmVydW4g ZWFjaCB0aW1lIHRoZSB2ZXJzaW9uIG51bWJlciBpcyBidW1wZWQsIHdoZW4gb25seQpAZmlsZXtj b25maWd1cmV9IGhhZCB0byBiZSByZXJ1biBpbiB0aGUgcHJldmlvdXMgc2V0dXAuCgpAb3BpbmRl eCAtLWFsd2F5cy1tYWtlIEBye0dOVSBNYWtlIG9wdGlvbn0KR05VIE1ha2UsIGF0IGxlYXN0LCBo YXMgYW4gb3B0aW9uIEBvcHRpb257LS1hbHdheXMtbWFrZX0gd2hpY2ggdGVsbHMKTWFrZSB0byBj b25zaWRlciB0aGF0IGFsbCB0YXJnZXRzIGFyZSBvdXQgb2YgZGF0ZS4gIFRoaXMgaW50ZXJhY3Rz CmJhZGx5IHdpdGggQXV0b21ha2UtZ2VuZXJhdGVkIE1ha2VmaWxlcywgd2hpY2ggaW1wbGVtZW50 IHRoZWlyIG93bgpjYXJlZnVsIHJ1bGVzIGZvciB3aGVuIHRvIHJlZ2VuZXJhdGUgTWFrZWZpbGVz LCBhcyBkZXNjcmliZWQgYWJvdmUuClRoZSByZXN1bHQgaXMgYW4gZW5kbGVzcyBsb29wLCBvciBv dGhlciBwb29yIGJlaGF2aW9yLiAgVGhlIG9ubHkgdGhpbmcKdG8gZG8sIGFzIGZhciBhcyB3ZSBr bm93LCBpcyB0byByZWZyYWluIGZyb20gdXNpbmcKQG9wdGlvbnstLWFsd2F5cy1tYWtlfS4KCgpA bm9kZSBPcHRpb25zCkBjaGFwdGVyIENoYW5naW5nIEF1dG9tYWtlJ3MgQmVoYXZpb3IKCkBtZW51 CiogT3B0aW9ucyBnZW5lcmFsaXRpZXM6OiAgICAgICAgU2VtYW50aWNzIG9mIEF1dG9tYWtlIG9w dGlvbgoqIExpc3Qgb2YgQXV0b21ha2Ugb3B0aW9uczo6ICAgIEEgY29tcHJlaGVuc2l2ZSBsaXN0 IG9mIEF1dG9tYWtlIG9wdGlvbnMKQGVuZCBtZW51CgpAbm9kZSBPcHRpb25zIGdlbmVyYWxpdGll cwpAc2VjdGlvbiBPcHRpb25zIGdlbmVyYWxpdGllcwoKVmFyaW91cyBmZWF0dXJlcyBvZiBBdXRv bWFrZSBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25zLiAgRXhjZXB0IHdoZXJlCm5vdGVkIG90 aGVyd2lzZSwgb3B0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIGluIG9uZSBvZiBzZXZlcmFsIHdheXMu ICBNb3N0Cm9wdGlvbnMgY2FuIGJlIGFwcGxpZWQgb24gYSBwZXItQGZpbGV7TWFrZWZpbGV9IGJh c2lzIHdoZW4gbGlzdGVkIGluIGEKc3BlY2lhbCBAZmlsZXtNYWtlZmlsZX0gdmFyaWFibGUgbmFt ZWQgQGNvZGV7QVVUT01BS0VfT1BUSU9OU30uICBTb21lCm9mIHRoZXNlIG9wdGlvbnMgb25seSBt YWtlIHNlbnNlIHdoZW4gc3BlY2lmaWVkIGluIHRoZSB0b3BsZXZlbApAZmlsZXtNYWtlZmlsZS5h bX0gZmlsZS4gIE9wdGlvbnMgYXJlIGFwcGxpZWQgZ2xvYmFsbHkgdG8gYWxsIHByb2Nlc3NlZApA ZmlsZXtNYWtlZmlsZX0gZmlsZXMgd2hlbiBsaXN0ZWQgaW4gdGhlIGZpcnN0IGFyZ3VtZW50IG9m CkBjb2Rle0FNX0lOSVRfQVVUT01BS0V9IGluIEBmaWxle2NvbmZpZ3VyZS5hY30sIGFuZCBzb21l IG9wdGlvbnMgd2hpY2gKcmVxdWlyZSBjaGFuZ2VzIHRvIHRoZSBAY29tbWFuZHtjb25maWd1cmV9 IHNjcmlwdCBjYW4gb25seSBiZSBzcGVjaWZpZWQKdGhlcmUuICBUaGVzZSBhcmUgYW5ub3RhdGVk IGJlbG93LgoKQXMgYSBnZW5lcmFsIHJ1bGUsIG9wdGlvbnMgc3BlY2lmaWVkIGluIEBjb2Rle0FV VE9NQUtFX09QVElPTlN9IHRha2UKcHJlY2VkZW5jZSBvdmVyIHRob3NlIHNwZWNpZmllZCBpbiBA Y29kZXtBTV9JTklUX0FVVE9NQUtFfSwgd2hpY2ggaW4KdHVybiB0YWtlIHByZWNlZGVuY2Ugb3Zl ciB0aG9zZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCkFsc28sIHNvbWUgY2FyZSBt dXN0IGJlIHRha2VuIGFib3V0IHRoZSBpbnRlcmFjdGlvbnMgYW1vbmcgc3RyaWN0bmVzcwpsZXZl bCBhbmQgd2FybmluZyBjYXRlZ29yaWVzLiAgQXMgYSBnZW5lcmFsIHJ1bGUsIHN0cmljdG5lc3Mt aW1wbGllZAp3YXJuaW5ncyBhcmUgb3ZlcnJpZGRlbiBieSB0aG9zZSBzcGVjaWZpZWQgYnkgZXhw bGljaXQgb3B0aW9ucy4gIEZvcgpleGFtcGxlLCBldmVuIGlmIEBzYW1we3BvcnRhYmlsaXR5fSB3 YXJuaW5ncyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdAppbiBAb3B0aW9ue2ZvcmVpZ259IHN0cmlj dG5lc3MsIGEgdXNhZ2UgbGlrZSB0aGlzIHdpbGwgZW5kIHVwIGVuYWJsaW5nCnRoZW06CgpAZXhh bXBsZQpBVVRPTUFLRV9PUFRJT05TID0gLVdwb3J0YWJpbGl0eSBmb3JlaWduCkBlbmQgZXhhbXBs ZQoKSG93ZXZlciwgYSBzdHJpY3RuZXNzIGxldmVsIHNwZWNpZmllZCBpbiBhIGhpZ2hlci1wcmlv cml0eSBjb250ZXh0CndpbGwgb3ZlcnJpZGUgYWxsIHRoZSBleHBsaWNpdCB3YXJuaW5ncyBzcGVj aWZpZWQgaW4gYSBsb3dlci1wcmlvcml0eQpjb250ZXh0LiAgRm9yIGV4YW1wbGUsIGlmIEBmaWxl e2NvbmZpZ3VyZS5hY30gY29udGFpbnM6CgpAZXhhbXBsZQpBTV9JTklUX0FVVE9NQUtFKFstV3Bv cnRhYmlsaXR5XSkKQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKYW5kIEBmaWxle01ha2VmaWxlLmFt fSBjb250YWluczoKCkBleGFtcGxlCkFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCkBlbmQgZXhh bXBsZQoKQG5vaW5kZW50CnRoZW4gQHNhbXB7cG9ydGFiaWxpdHl9IHdhcm5pbmdzIHdpbGwgYmUg QGVtcGh7ZGlzYWJsZWR9IGluCkBmaWxle01ha2VmaWxlLmFtfS4KCkBub2RlIExpc3Qgb2YgQXV0 b21ha2Ugb3B0aW9ucwpAc2VjdGlvbiBMaXN0IG9mIEF1dG9tYWtlIG9wdGlvbnMKCkB2aW5kZXgg QVVUT01BS0VfT1BUSU9OUwoKQHRhYmxlIEBhc2lzCkBpdGVtIEBvcHRpb257Z25pdHN9CkBpdGVt eCBAb3B0aW9ue2dudX0KQGl0ZW14IEBvcHRpb257Zm9yZWlnbn0KQGNpbmRleCBPcHRpb24sIEBv cHRpb257Z25pdHN9CkBjaW5kZXggT3B0aW9uLCBAb3B0aW9ue2dudX0KQGNpbmRleCBPcHRpb24s IEBvcHRpb257Zm9yZWlnbn0KQG9waW5kZXggZ25pdHMKQG9waW5kZXggZ251CkBvcGluZGV4IGZv cmVpZ24KClNldCB0aGUgc3RyaWN0bmVzcyBhcyBhcHByb3ByaWF0ZS4gIEB4cmVme1N0cmljdG5l c3N9LgpUaGUgQG9wdGlvbntnbml0c30gb3B0aW9uIGFsc28gaW1wbGllcyBvcHRpb25zIEBvcHRp b257cmVhZG1lLWFscGhhfSBhbmQKQG9wdGlvbntjaGVjay1uZXdzfS4KCkBpdGVtIEBvcHRpb257 Y2hlY2stbmV3c30KQGNpbmRleCBPcHRpb24sIEBvcHRpb257Y2hlY2stbmV3c30KQG9waW5kZXgg Y2hlY2stbmV3cwpDYXVzZSBAc2FtcHttYWtlIGRpc3R9IHRvIGZhaWwgdW5sZXNzIHRoZSBjdXJy ZW50IHZlcnNpb24gbnVtYmVyIGFwcGVhcnMKaW4gdGhlIGZpcnN0IGZldyBsaW5lcyBvZiB0aGUg QGZpbGV7TkVXU30gZmlsZS4KCkBpdGVtIEBvcHRpb257ZGVqYWdudX0KQGNpbmRleCBPcHRpb24s IEBvcHRpb257ZGVqYWdudX0KQG9waW5kZXggZGVqYWdudQpDYXVzZSBAY29tbWFuZHtkZWphZ251 fS1zcGVjaWZpYyBydWxlcyB0byBiZSBnZW5lcmF0ZWQuICBAeHJlZntEZWphR251IFRlc3RzfS4K CkBpdGVtIEBvcHRpb257ZGlzdC1iemlwMn0KQGNpbmRleCBPcHRpb24sIEBvcHRpb257ZGlzdC1i emlwMn0KQG9waW5kZXggZGlzdC1iemlwMgpIb29rIEBjb2Rle2Rpc3QtYnppcDJ9IHRvIEBjb2Rl e2Rpc3R9LgpAdHJpbmRleCBkaXN0LWJ6aXAyCgpAaXRlbSBAb3B0aW9ue2Rpc3QtYnppcDN9CkBj aW5kZXggT3B0aW9uLCBAb3B0aW9ue2Rpc3QtYnppcDN9CkBvcGluZGV4IGRpc3QtYnppcDMKSG9v ayBAY29kZXtkaXN0LWJ6aXAzfSB0byBAY29kZXtkaXN0fS4KQHRyaW5kZXggZGlzdC1iemlwMwoK QGl0ZW0gQG9wdGlvbntkaXN0LWx6aXB9CkBjaW5kZXggT3B0aW9uLCBAb3B0aW9ue2Rpc3QtbHpp cH0KQG9waW5kZXggZGlzdC1semlwCkhvb2sgQGNvZGV7ZGlzdC1semlwfSB0byBAY29kZXtkaXN0 fS4KQHRyaW5kZXggZGlzdC1semlwCgpAaXRlbSBAb3B0aW9ue2Rpc3QteHp9CkBjaW5kZXggT3B0 aW9uLCBAb3B0aW9ue2Rpc3QteHp9CkBvcGluZGV4IGRpc3QteHoKSG9vayBAY29kZXtkaXN0LXh6 fSB0byBAY29kZXtkaXN0fS4KQHRyaW5kZXggZGlzdC14egoKQGl0ZW0gQG9wdGlvbntkaXN0LXpp cH0KQGNpbmRleCBPcHRpb24sIEBvcHRpb257ZGlzdC16aXB9CkBvcGluZGV4IGRpc3QtemlwCkhv b2sgQGNvZGV7ZGlzdC16aXB9IHRvIEBjb2Rle2Rpc3R9LgpAdHJpbmRleCBkaXN0LXppcAoKQGl0 ZW0gQG9wdGlvbntkaXN0LXpzdGR9CkBjaW5kZXggT3B0aW9uLCBAb3B0aW9ue2Rpc3QtenN0ZH0K QG9waW5kZXggZGlzdC16c3RkCkhvb2sgQGNvZGV7ZGlzdC16c3RkfSB0byBAY29kZXtkaXN0fS4K QHRyaW5kZXggZGlzdC16c3RkCgpAaXRlbSBAb3B0aW9ue2Rpc3Qtc2hhcn0KQGNpbmRleCBPcHRp b24sIEBvcHRpb257ZGlzdC1zaGFyfQpAb3BpbmRleCBkaXN0LXNoYXIKSG9vayBAY29kZXtkaXN0 LXNoYXJ9IHRvIEBjb2Rle2Rpc3R9LiAgVXNlIG9mIHRoaXMgb3B0aW9uCmlzIGRlcHJlY2F0ZWQs IGFzIHRoZSBAc2FtcHtzaGFyfSBmb3JtYXQgaXMgb2Jzb2xlc2NlbnQgYW5kCnByb2JsZW1hdGlj LiAgU3VwcG9ydCBmb3IgaXQgd2lsbCBiZSByZW1vdmVkIGFsdG9nZXRoZXIgaW4KQXV0b21ha2Ug Mi4wLgpAdHJpbmRleCBkaXN0LXNoYXIKCkBpdGVtIEBvcHRpb257ZGlzdC10YXJafQpAY2luZGV4 IE9wdGlvbiwgQG9wdGlvbntkaXN0LXRhclp9CkBvcGluZGV4IGRpc3QtdGFyWgpIb29rIEBjb2Rl e2Rpc3QtdGFyWn0gdG8gQGNvZGV7ZGlzdH0uICBVc2Ugb2YgdGhpcyBvcHRpb24KaXMgZGVwcmVj YXRlZCwgYXMgdGhlIEBzYW1we2NvbXByZXNzfSBwcm9ncmFtIGlzIG9ic29sZXRlLgpTdXBwb3J0 IGZvciBpdCB3aWxsIGJlIHJlbW92ZWQgYWx0b2dldGhlciBpbiBBdXRvbWFrZSAyLjAuCkB0cmlu ZGV4IGRpc3QtdGFyWgoKQGl0ZW0gQG9wdGlvbntmaWxlbmFtZS1sZW5ndGgtbWF4PTk5fQpAY2lu ZGV4IE9wdGlvbiwgQG9wdGlvbntmaWxlbmFtZS1sZW5ndGgtbWF4PTk5fQpAb3BpbmRleCBmaWxl bmFtZS1sZW5ndGgtbWF4PTk5CkFib3J0IGlmIGZpbGUgbmFtZXMgbG9uZ2VyIHRoYW4gOTkgY2hh cmFjdGVycyBhcmUgZm91bmQgZHVyaW5nCkBzYW1we21ha2UgZGlzdH0uICBTdWNoIGxvbmcgZmls ZSBuYW1lcyBhcmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgbm90IHRvCmJlIHBvcnRhYmxlIGluIHRh cmJhbGxzLiAgU2VlIHRoZSBAb3B0aW9ue3Rhci12N30gYW5kIEBvcHRpb257dGFyLXVzdGFyfQpv cHRpb25zIGJlbG93LiAgVGhpcyBvcHRpb24gc2hvdWxkIGJlIHVzZWQgaW4gdGhlIHRvcC1sZXZl bApAZmlsZXtNYWtlZmlsZS5hbX0gb3IgYXMgYW4gYXJndW1lbnQgb2YgQGNvZGV7QU1fSU5JVF9B VVRPTUFLRX0gaW4KQGZpbGV7Y29uZmlndXJlLmFjfTsgaXQgd2lsbCBiZSBpZ25vcmVkIG90aGVy d2lzZS4gIEl0IHdpbGwgYWxzbyBiZQppZ25vcmVkIGluIHN1Yi1wYWNrYWdlcyBvZiBuZXN0ZWQg cGFja2FnZXMgKEBweHJlZntTdWJwYWNrYWdlc30pLgoKQGl0ZW0gQG9wdGlvbntpbmZvLWluLWJ1 aWxkZGlyfQpAY2luZGV4IE9wdGlvbiwgQG9wdGlvbntpbmZvLWluLWJ1aWxkZGlyfQpAb3BpbmRl eCBpbmZvLWluLWJ1aWxkZGlyCkluc3RydWN0IEF1dG9tYWtlIHRvIHBsYWNlIHRoZSBnZW5lcmF0 ZWQgQGZpbGV7LmluZm99IGZpbGVzIGluIHRoZQpAY29kZXtidWlsZGRpcn0gcmF0aGVyIHRoYW4g aW4gdGhlIEBjb2Rle3NyY2Rpcn0uICBOb3RlIHRoYXQgdGhpcwptaWdodCBtYWtlIFZQQVRIIGJ1 aWxkcyB3aXRoIHNvbWUgbm9uLUdOVSBtYWtlIGltcGxlbWVudGF0aW9ucyBtb3JlCmJyaXR0bGUu CgpAaXRlbSBAb3B0aW9ue25vLWRlZmluZX0KQGNpbmRleCBPcHRpb24sIEBvcHRpb257bm8tZGVm aW5lfQpAb3BpbmRleCBuby1kZWZpbmUKVGhpcyBvcHRpb24gaXMgbWVhbmluZ2Z1bCBvbmx5IHdo ZW4gcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvCkBjb2Rle0FNX0lOSVRfQVVUT01BS0V9LiAgSXQg d2lsbCBwcmV2ZW50IHRoZSBAY29kZXtQQUNLQUdFfSBhbmQKQGNvZGV7VkVSU0lPTn0gdmFyaWFi bGVzIGZyb20gYmVpbmcgQGNvZGV7QUNfREVGSU5FfWQuICBCdXQgbm90aWNlCnRoYXQgdGhleSB3 aWxsIHJlbWFpbiBkZWZpbmVkIGFzIHNoZWxsIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdGVkCkBj b2Rle2NvbmZpZ3VyZX0sIGFuZCBhcyBtYWtlIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdGVkCkBj b2Rle01ha2VmaWxlfTsgdGhpcyBpcyBkZWxpYmVyYXRlLCBhbmQgcmVxdWlyZWQgZm9yIGJhY2t3 YXJkCmNvbXBhdGliaWxpdHkuCgpAaXRlbSBAb3B0aW9ue25vLWRlcGVuZGVuY2llc30KQGNpbmRl eCBPcHRpb24sIEBvcHRpb257bm8tZGVwZW5kZW5jaWVzfQpAb3BpbmRleCBuby1kZXBlbmRlbmNp ZXMKVGhpcyBpcyBzaW1pbGFyIHRvIHVzaW5nIEBvcHRpb257LS1pZ25vcmUtZGVwc30gb24gdGhl IGNvbW1hbmQgbGluZSwKYnV0IGlzIHVzZWZ1bCBmb3IgdGhvc2Ugc2l0dWF0aW9ucyB3aGVyZSB5 b3UgZG9uJ3QgaGF2ZSB0aGUgbmVjZXNzYXJ5CmJpdHMgdG8gbWFrZSBhdXRvbWF0aWMgZGVwZW5k ZW5jeSB0cmFja2luZyB3b3JrCihAcHhyZWZ7RGVwZW5kZW5jaWVzfSkuICBJbiB0aGlzIGNhc2Ug dGhlIGVmZmVjdCBpcyB0byBlZmZlY3RpdmVseQpkaXNhYmxlIGF1dG9tYXRpYyBkZXBlbmRlbmN5 IHRyYWNraW5nLgoKQGl0ZW0gQG9wdGlvbntuby1kaXN0fQpAY2luZGV4IE9wdGlvbiwgQG9wdGlv bntuby1kaXN0fQpAb3BpbmRleCBuby1kaXN0CkRvbid0IGVtaXQgYW55IGNvZGUgcmVsYXRlZCB0 byBAY29kZXtkaXN0fSB0YXJnZXQuICBUaGlzIGlzIHVzZWZ1bAp3aGVuIGEgcGFja2FnZSBoYXMg aXRzIG93biBtZXRob2QgZm9yIG1ha2luZyBkaXN0cmlidXRpb25zLgoKQGl0ZW0gQG9wdGlvbntu by1kaXN0LWJ1aWx0LXNvdXJjZXN9CkBjaW5kZXggT3B0aW9uLCBAb3B0aW9ue25vLWRpc3QtYnVp bHQtc291cmNlc30KQG9waW5kZXggbm8tZGlzdC1idWlsdC1zb3VyY2VzCkBjaW5kZXggQGNvbW1h bmR7aGVscDJtYW59LCBhbmQgQHNhbXB7ZGlzdH0gdGFyZ2V0CkB2aW5kZXggQlVJTFRfU09VUkNF UywgYW5kIEBzYW1we2Rpc3R9IHRhcmdldApEb24ndCBidWlsZCBAY29kZXtCVUlMVF9TT1VSQ0VT fSBhcyBwYXJ0IG9mIEBjb2Rle2Rpc3R9LiAgVGhpcyBvcHRpb24KY2FuIGJlIHNldCBpZiBidWls ZGluZyB0aGUgZGlzdHJpYnV0aW9uIG9ubHkgcmVxdWlyZXMgdGhlIHNvdXJjZQpmaWxlcywgYW5k IGRvZXNuJ3QgY29tcGlsZSBhbnl0aGluZyBhcyBhIHNpZGUtZWZmZWN0LiAgVGhlIGRlZmF1bHQg aXMKZm9yIEBzYW1weyQoZGlzdGRpcil9IHRvIGRlcGVuZCBvbiBAc2FtcHskKEJVSUxUX1NPVVJD RVMpfSBiZWNhdXNlIGl0CmlzIGNvbW1vbiwgYXQgbGVhc3QgYW1vbmcgR05VIHBhY2thZ2VzLCB0 byB3YW50IHRvIGJ1aWxkIHRoZSBwcm9ncmFtCnRvIGdlbmVyYXRlIG1hbiBwYWdlcyB3aXRoIEBj b2Rle2hlbHAybWFufSAoQHB4cmVme0Vycm9ycyB3aXRoCmRpc3RjbGVhbn0pLiAgQWRtaXR0ZWRs eSB0aGUgZGVmYXVsdCBiZWhhdmlvciBzaG91bGQgcGVyaGFwcyBiZSB0bwpvbWl0IHRoZSBkZXBl bmRlbmN5LCBidXQgdG8gcHJlc2VydmUgY29tcGF0aWJpbGl0eSwgd2UgZG9uJ3Qgd2FudCB0bwpj aGFuZ2UgaXQgbm93LgoKQGl0ZW0gQG9wdGlvbntuby1kaXN0LWd6aXB9CkBjaW5kZXggT3B0aW9u LCBAb3B0aW9ue25vLWRpc3QtZ3ppcH0KQG9waW5kZXggbm8tZGlzdC1nemlwCkRvIG5vdCBob29r IEBjb2Rle2Rpc3QtZ3ppcH0gdG8gQGNvZGV7ZGlzdH0uCkB0cmluZGV4IG5vLWRpc3QtZ3ppcAoK QGl0ZW0gQG9wdGlvbntuby1leGVleHR9CkBjaW5kZXggT3B0aW9uLCBAb3B0aW9ue25vLWV4ZWV4 dH0KQG9waW5kZXggbm8tZXhlZXh0CklmIHlvdXIgQGZpbGV7TWFrZWZpbGUuYW19IGRlZmluZXMg YSBydWxlIGZvciB0YXJnZXQgQGNvZGV7Zm9vfSwgaXQKd2lsbCBvdmVycmlkZSBhIHJ1bGUgZm9y IGEgdGFyZ2V0IG5hbWVkIEBzYW1we2ZvbyQoRVhFRVhUKX0uICBUaGlzIGlzCm5lY2Vzc2FyeSB3 aGVuIEBjb2Rle0VYRUVYVH0gaXMgZm91bmQgdG8gYmUgZW1wdHkuICBIb3dldmVyLCBieQpkZWZh dWx0IEBjb21tYW5ke2F1dG9tYWtlfSB3aWxsIGdlbmVyYXRlIGFuIGVycm9yIGZvciB0aGlzIHVz ZS4gIFRoZQpAb3B0aW9ue25vLWV4ZWV4dH0gb3B0aW9uIHdpbGwgZGlzYWJsZSB0aGlzIGVycm9y LiAgVGhpcyBpcyBpbnRlbmRlZCBmb3IKdXNlIG9ubHkgd2hlcmUgaXQgaXMga25vd24gaW4gYWR2 YW5jZSB0aGF0IHRoZSBwYWNrYWdlIHdpbGwgbm90IGJlCnBvcnRlZCB0byBXaW5kb3dzLCBvciBh bnkgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbSB1c2luZyBleHRlbnNpb25zIG9uCmV4ZWN1dGFibGVz LgoKQGl0ZW0gQG9wdGlvbntuby1pbnN0YWxsaW5mb30KQGNpbmRleCBPcHRpb24sIEBvcHRpb257 bm8taW5zdGFsbGluZm99CkBvcGluZGV4IG5vLWluc3RhbGxpbmZvClRoZSBnZW5lcmF0ZWQgQGZp bGV7TWFrZWZpbGUuaW59IHdpbGwgbm90IGNhdXNlIGluZm8gcGFnZXMgdG8gYmUgYnVpbHQKb3Ig aW5zdGFsbGVkIGJ5IGRlZmF1bHQuICBIb3dldmVyLCBAY29kZXtpbmZvfSBhbmQgQGNvZGV7aW5z dGFsbC1pbmZvfQp0YXJnZXRzIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLiAgVGhpcyBvcHRpb24g aXMgZGlzYWxsb3dlZCBhdApAb3B0aW9ue2dudX0gc3RyaWN0bmVzcyBhbmQgYWJvdmUuCkB0cmlu ZGV4IGluZm8KQHRyaW5kZXggaW5zdGFsbC1pbmZvCgpAaXRlbSBAb3B0aW9ue25vLWluc3RhbGxt YW59CkBjaW5kZXggT3B0aW9uLCBAb3B0aW9ue25vLWluc3RhbGxtYW59CkBvcGluZGV4IG5vLWlu c3RhbGxtYW4KVGhlIGdlbmVyYXRlZCBAZmlsZXtNYWtlZmlsZS5pbn0gd2lsbCBub3QgY2F1c2Ug bWFuIHBhZ2VzIHRvIGJlCmluc3RhbGxlZCBieSBkZWZhdWx0LiAgSG93ZXZlciwgYW4gQGNvZGV7 aW5zdGFsbC1tYW59IHRhcmdldCB3aWxsIHN0aWxsCmJlIGF2YWlsYWJsZSBmb3Igb3B0aW9uYWwg aW5zdGFsbGF0aW9uLiAgVGhpcyBvcHRpb24gaXMgZGlzYWxsb3dlZCBhdApAb3B0aW9ue2dudX0g c3RyaWN0bmVzcyBhbmQgYWJvdmUuCkB0cmluZGV4IGluc3RhbGwtbWFuCgpAaXRlbSBAb3B0aW9u e25vc3RkaW5jfQpAY2luZGV4IE9wdGlvbiwgQG9wdGlvbntub3N0ZGluY30KQG9waW5kZXggbm9z dGRpbmMKVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSB0aGUgc3RhbmRhcmQgQG9w dGlvbnstSX0gb3B0aW9ucyB0aGF0CmFyZSBvcmRpbmFyaWx5IGF1dG9tYXRpY2FsbHkgcHJvdmlk ZWQgYnkgQXV0b21ha2UuCgpAaXRlbSBAb3B0aW9ue25vLXRleGluZm8udGV4fQpAY2luZGV4IE9w dGlvbiwgQG9wdGlvbntuby10ZXhpbmZvLnRleH0KQG9waW5kZXggbm8tdGV4aW5mby50ZXgKRG9u J3QgcmVxdWlyZSBAZmlsZXt0ZXhpbmZvLnRleH0sIGV2ZW4gaWYgdGhlcmUgYXJlIHRleGluZm8g ZmlsZXMgaW4KdGhpcyBkaXJlY3RvcnkuCgpAaXRlbSBAb3B0aW9ue3Bvc2l4fQpAY2luZGV4IE9w dGlvbiwgQG9wdGlvbntwb3NpeH0KQG9waW5kZXggcG9zaXgKR2VuZXJhdGUgdGhlIHNwZWNpYWwg dGFyZ2V0IEBjb2Rley5QT1NJWH0gYXMgdGhlIGZpcnN0IG5vbi1jb21tZW50CmxpbmUgaW4gdGhl IEBmaWxle01ha2VmaWxlLmlufSBmaWxlcy4gIFRoaXMgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiB0 aGUKQGNvZGV7bWFrZX0gcHJvZ3JhbS4gIEB4cmVme1NwZWNpYWwgdGFyZ2V0cywsLCBtYWtlLCBU aGUgR05VIE1ha2UKTWFudWFsfS4KCkBpdGVtIEBvcHRpb257c2VyaWFsLXRlc3RzfQpAY2luZGV4 IE9wdGlvbiwgQG9wdGlvbntzZXJpYWwtdGVzdHN9CkBvcGluZGV4IHNlcmlhbC10ZXN0cwpFbmFi bGUgdGhlIG9sZGVyIHNlcmlhbCB0ZXN0IHN1aXRlIGhhcm5lc3MgZm9yIEBjb2Rle1RFU1RTfSAo QHB4cmVme1NlcmlhbApUZXN0IEhhcm5lc3N9LCBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCgpAaXRl bSBAb3B0aW9ue3BhcmFsbGVsLXRlc3RzfQpAY2luZGV4IE9wdGlvbiwgQG9wdGlvbntwYXJhbGxl bC10ZXN0c30KQG9waW5kZXggcGFyYWxsZWwtdGVzdHMKRW5hYmxlIHRlc3Qgc3VpdGUgaGFybmVz cyBmb3IgQGNvZGV7VEVTVFN9IHRoYXQgY2FuIHJ1biB0ZXN0cyBpbiBwYXJhbGxlbAooQHB4cmVm e1BhcmFsbGVsIFRlc3QgSGFybmVzc30sIGZvciBtb3JlIGluZm9ybWF0aW9uKS4gIFRoaXMgb3B0 aW9uIGlzCm9ubHkga2VwdCBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSwgc2luY2UgdGhlIHBh cmFsbGVsIHRlc3QgaGFybmVzcyBpcwp0aGUgZGVmYXVsdCBub3cuCgpAaXRlbSBAb3B0aW9ue3Jl YWRtZS1hbHBoYX0KQGNpbmRleCBPcHRpb24sIEBvcHRpb257cmVhZG1lLWFscGhhfQpAb3BpbmRl eCByZWFkbWUtYWxwaGEKSWYgdGhpcyByZWxlYXNlIGlzIGFuIGFscGhhIHJlbGVhc2UsIGFuZCB0 aGUgZmlsZSBAZmlsZXtSRUFETUUtYWxwaGF9CmV4aXN0cywgdGhlbiBpdCB3aWxsIGJlIGFkZGVk IHRvIHRoZSBkaXN0cmlidXRpb24uICBJZiB0aGlzIG9wdGlvbiBpcwpnaXZlbiwgdmVyc2lvbiBu dW1iZXJzIGFyZSBleHBlY3RlZCB0byBmb2xsb3cgb25lIG9mIHR3byBmb3Jtcy4gIFRoZQpmaXJz dCBmb3JtIGlzIEBzYW1we0B2YXJ7bWFqb3J9LkB2YXJ7bWlub3J9LkB2YXJ7YWxwaGF9fSwgd2hl cmUgZWFjaAplbGVtZW50IGlzIGEgbnVtYmVyOyB0aGUgZmluYWwgcGVyaW9kIGFuZCBudW1iZXIg c2hvdWxkIGJlIGxlZnQgb2ZmIGZvcgpub24tYWxwaGEgcmVsZWFzZXMuICBUaGUgc2Vjb25kIGZv cm0gaXMKQHNhbXB7QHZhcnttYWpvcn0uQHZhcnttaW5vcn1AdmFye2FscGhhfX0sIHdoZXJlIEB2 YXJ7YWxwaGF9IGlzIGEKbGV0dGVyOyBpdCBzaG91bGQgYmUgb21pdHRlZCBmb3Igbm9uLWFscGhh IHJlbGVhc2VzLgoKQGl0ZW0gQG9wdGlvbntzdGQtb3B0aW9uc30KQGNpbmRleCBPcHRpb25zLCBA b3B0aW9ue3N0ZC1vcHRpb25zfQpAY2luZGV4IEBzYW1we21ha2UgaW5zdGFsbGNoZWNrfSwgdGVz dGluZyBAb3B0aW9uey0taGVscH0gYW5kIEBvcHRpb257LS12ZXJzaW9ufQpAY2luZGV4IEBvcHRp b257LS1oZWxwfSBjaGVjawpAY2luZGV4IEBvcHRpb257LS12ZXJzaW9ufSBjaGVjawpAb3BpbmRl eCBzdGQtb3B0aW9ucwoKTWFrZSB0aGUgQGNvZGV7aW5zdGFsbGNoZWNrfSBydWxlIGNoZWNrIHRo YXQgaW5zdGFsbGVkIHNjcmlwdHMgYW5kCnByb2dyYW1zIHN1cHBvcnQgdGhlIEBvcHRpb257LS1o ZWxwfSBhbmQgQG9wdGlvbnstLXZlcnNpb259IG9wdGlvbnMuClRoaXMgYWxzbyBwcm92aWRlcyBh IGJhc2ljIGNoZWNrIHRoYXQgdGhlIHByb2dyYW0ncwpydW4tdGltZSBkZXBlbmRlbmNpZXMgYXJl IHNhdGlzZmllZCBhZnRlciBpbnN0YWxsYXRpb24uCgpAdmluZGV4IEFNX0lOU1RBTExDSEVDS19T VERfT1BUSU9OU19FWEVNUFQKSW4gYSBmZXcgc2l0dWF0aW9ucywgcHJvZ3JhbXMgKG9yIHNjcmlw dHMpIGhhdmUgdG8gYmUgZXhlbXB0ZWQgZnJvbSB0aGlzCnRlc3QuICBGb3IgaW5zdGFuY2UsIEBj b21tYW5ke2ZhbHNlfSAoZnJvbSBHTlUgY29yZXV0aWxzKSBpcyBuZXZlcgpzdWNjZXNzZnVsLCBl dmVuIGZvciBAb3B0aW9uey0taGVscH0gb3IgQG9wdGlvbnstLXZlcnNpb259LiAgWW91IGNhbiBs aXN0CnN1Y2ggcHJvZ3JhbXMgaW4gdGhlIHZhcmlhYmxlIEBjb2Rle0FNX0lOU1RBTExDSEVDS19T VERfT1BUSU9OU19FWEVNUFR9LgpQcm9ncmFtcyAobm90IHNjcmlwdHMpIGxpc3RlZCBpbiB0aGlz IHZhcmlhYmxlIHNob3VsZCBiZSBzdWZmaXhlZCBieQpAc2FtcHskKEVYRUVYVCl9IGZvciB0aGUg c2FrZSBvZiBXaW5kb3dzIG9yIE9TLzIuICBGb3IgaW5zdGFuY2UsIHN1cHBvc2Ugd2UKYnVpbGQg QGZpbGV7ZmFsc2V9IGFzIGEgcHJvZ3JhbSBidXQgQGZpbGV7dHJ1ZS5zaH0gYXMgYSBzY3JpcHQs IGFuZCB0aGF0Cm5laXRoZXIgb2YgdGhlbSBzdXBwb3J0IEBvcHRpb257LS1oZWxwfSBvciBAb3B0 aW9uey0tdmVyc2lvbn06CgpAZXhhbXBsZQpBVVRPTUFLRV9PUFRJT05TID0gc3RkLW9wdGlvbnMK YmluX1BST0dSQU1TID0gZmFsc2UgLi4uCmJpbl9TQ1JJUFRTID0gdHJ1ZS5zaCAuLi4KQU1fSU5T VEFMTENIRUNLX1NURF9PUFRJT05TX0VYRU1QVCA9IGZhbHNlJChFWEVFWFQpIHRydWUuc2gKQGVu ZCBleGFtcGxlCgpAaXRlbSBAb3B0aW9ue3N1YmRpci1vYmplY3RzfQpAY2luZGV4IE9wdGlvbnMs IEBvcHRpb257c3ViZGlyLW9iamVjdHN9CkBvcGluZGV4IHN1YmRpci1vYmplY3RzCklmIHRoaXMg b3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlbiBvYmplY3RzIGFyZSBwbGFjZWQgaW50byB0aGUKc3Vi ZGlyZWN0b3J5IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkgY29ycmVzcG9uZGluZyB0byB0aGUgc3Vi ZGlyZWN0b3J5IG9mCnRoZSBzb3VyY2UgZmlsZS4gIEZvciBpbnN0YW5jZSwgaWYgdGhlIHNvdXJj ZSBmaWxlIGlzCkBmaWxle3N1YmRpci9maWxlLmN4eH0sIHRoZW4gdGhlIG91dHB1dCBmaWxlIHdv dWxkIGJlCkBmaWxle3N1YmRpci9maWxlLm99LiAgQHhyZWZ7UHJvZ3JhbSBhbmQgTGlicmFyeSBW YXJpYWJsZXN9LgoKQGFuY2hvcnt0YXItZm9ybWF0c30KQGl0ZW0gQG9wdGlvbnt0YXItdjd9CkBp dGVteCBAb3B0aW9ue3Rhci11c3Rhcn0KQGl0ZW14IEBvcHRpb257dGFyLXBheH0KQGNpbmRleCBP cHRpb24sIEBvcHRpb257dGFyLXY3fQpAY2luZGV4IE9wdGlvbiwgQG9wdGlvbnt0YXItdXN0YXJ9 CkBjaW5kZXggT3B0aW9uLCBAb3B0aW9ue3Rhci1wYXh9CkBjaW5kZXggQGNvbW1hbmR7dGFyfSBm b3JtYXRzCkBjaW5kZXggdjcgQGNvbW1hbmR7dGFyfSBmb3JtYXQKQGNpbmRleCB1c3RhciBmb3Jt YXQKQGNpbmRleCBwYXggZm9ybWF0CkBvcGluZGV4IHRhci12NwpAb3BpbmRleCB0YXItdXN0YXIK QG9waW5kZXggdGFyLXBheAoKVGhlc2UgdGhyZWUgbXV0dWFsbHkgZXhjbHVzaXZlIG9wdGlvbnMg c2VsZWN0IHRoZSB0YXIgZm9ybWF0IHRvIHVzZQp3aGVuIGdlbmVyYXRpbmcgdGFyYmFsbHMgd2l0 aCBAc2FtcHttYWtlIGRpc3R9LiAgKFRoZSB0YXIgZmlsZSBjcmVhdGVkCmlzIHRoZW4gY29tcHJl c3NlZCBhY2NvcmRpbmcgdG8gdGhlIHNldCBvZiBAb3B0aW9ue25vLWRpc3QtZ3ppcH0sCkBvcHRp b257ZGlzdC1iemlwMn0sIEBvcHRpb257ZGlzdC1iemlwM30sIEBvcHRpb257ZGlzdC1semlwfSwg QG9wdGlvbntkaXN0LXh6fSwKQG9wdGlvbntkaXN0LXpzdGR9IGFuZCBAb3B0aW9ue2Rpc3QtdGFy Wn0gb3B0aW9ucyBpbiB1c2UuKQoKVGhlc2Ugb3B0aW9ucyBtdXN0IGJlIHBhc3NlZCBhcyBhcmd1 bWVudHMgdG8gQGNvZGV7QU1fSU5JVF9BVVRPTUFLRX0KKEBweHJlZntNYWNyb3N9KSBiZWNhdXNl IHRoZXkgY2FuIHJlcXVpcmUgYWRkaXRpb25hbCBjb25maWd1cmUgY2hlY2tzLgpBdXRvbWFrZSB3 aWxsIGNvbXBsYWluIGlmIGl0IHNlZXMgc3VjaCBvcHRpb25zIGluIGFuCkBjb2Rle0FVVE9NQUtF X09QVElPTlN9IHZhcmlhYmxlLgoKQG9wdGlvbnt0YXItdjd9IHNlbGVjdHMgdGhlIG9sZCBWNyB0 YXIgZm9ybWF0LiAgVGhpcyB3YXMgdGhlIGhpc3RvcmljYWwKZGVmYXVsdC4gIFRoaXMgYW50aXF1 YXRlZCBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBhbGwgdGFyCmltcGxlbWVudGF0aW9ucyBhbmQg c3VwcG9ydHMgZmlsZSBuYW1lcyB3aXRoIHVwIHRvIDk5IGNoYXJhY3RlcnMuICBXaGVuCmdpdmVu IGxvbmdlciBmaWxlIG5hbWVzIHNvbWUgdGFyIGltcGxlbWVudGF0aW9ucyB3aWxsIGRpYWdub3Nl IHRoZQpwcm9ibGVtIHdoaWxlIG90aGVycyB3aWxsIGdlbmVyYXRlIGJyb2tlbiB0YXJiYWxscyBv ciB1c2Ugbm9uLXBvcnRhYmxlCmV4dGVuc2lvbnMuICBGdXJ0aGVybW9yZSwgdGhlIFY3IGZvcm1h dCBjYW5ub3Qgc3RvcmUgZW1wdHkKZGlyZWN0b3JpZXMuICBXaGVuIHVzaW5nIHRoaXMgZm9ybWF0 LCBjb25zaWRlciB1c2luZyB0aGUKQG9wdGlvbntmaWxlbmFtZS1sZW5ndGgtbWF4PTk5fSBvcHRp b24gdG8gY2F0Y2ggZmlsZSBuYW1lcyB0b28gbG9uZy4KCkBvcHRpb257dGFyLXVzdGFyfSBzZWxl Y3RzIHRoZSB1c3RhciBmb3JtYXQgZGVmaW5lZCBieSBQT1NJWAoxMDAzLjEtMTk4OC4gIFRoaXMg Zm9ybWF0IGJlY2FtZSB0aGUgZGVmYXVsdCBpbiBBdXRvbWFrZSB2ZXJzaW9uIDEuMTgKKHJlbGVh c2VkIGluIDIwMjUpLgpBcyBvZiAyMDE4LCBpdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIG5hdGl2ZSBA Y29kZXt0YXJ9IGNvbW1hbmQgb24KR05VLCBGcmVlQlNELCBOZXRCU0QsIE9wZW5CU0QsIEFJWCwg SFAtVVgsIGFuZCBTb2xhcmlzLCBhdCBsZWFzdC4KSXQgZnVsbHkgc3VwcG9ydHMgZW1wdHkgZGly ZWN0b3JpZXMuICBJdCBjYW4gc3RvcmUgZmlsZSBuYW1lcyB3aXRoIHVwCnRvIDI1NiBjaGFyYWN0 ZXJzLCBwcm92aWRlZCB0aGF0IHRoZSBmaWxlIG5hbWUgY2FuIGJlIHNwbGl0IGF0CmRpcmVjdG9y eSBzZXBhcmF0b3IgaW4gdHdvIHBhcnRzLCBmaXJzdCBvZiB0aGVtIGJlaW5nIGF0IG1vc3QgMTU1 CmJ5dGVzIGxvbmcuICBTbywgaW4gbW9zdCBjYXNlcyB0aGUgbWF4aW11bSBmaWxlIG5hbWUgbGVu Z3RoIHdpbGwgYmUKc2hvcnRlciB0aGFuIDI1NiBjaGFyYWN0ZXJzLgoKQG9wdGlvbnt0YXItcGF4 fSBzZWxlY3RzIHRoZSBuZXcgcGF4IGludGVyY2hhbmdlIGZvcm1hdCBkZWZpbmVkIGJ5IFBPU0lY CjEwMDMuMS0yMDAxLiAgSXQgZG9lcyBub3QgbGltaXQgdGhlIGxlbmd0aCBvZiBmaWxlIG5hbWVz LiAgSG93ZXZlciwKdGhpcyBmb3JtYXQgaXMgcmVsYXRpdmVseSB5b3VuZyBhbmQgc2hvdWxkIHBy b2JhYmx5IGJlIHJlc3RyaWN0ZWQgdG8KcGFja2FnZXMgdGhhdCB0YXJnZXQgbW9kZXJuIHBsYXRm b3Jtcy4KQXMgb2YgMjAxOCwgdGhpcyBmb3JtYXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSBuYXRpdmUg QGNvZGV7dGFyfSBjb21tYW5kIG9ubHkKb24gR05VLCBGcmVlQlNELCBhbmQgT3BlbkJTRCBzeXN0 ZW1zOyBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBuYXRpdmUKQGNvZGV7dGFyfSBjb21tYW5k IG9uIE5ldEJTRCwgQUlYLCBIUC1VWCwgb3IgU29sYXJpcy4KVGhlcmUgYXJlIG1vdmVzIHRvCmNo YW5nZSB0aGUgcGF4IGZvcm1hdCBpbiBhbiB1cHdhcmQtY29tcGF0aWJsZSB3YXksIHNvIHRoaXMg b3B0aW9uIG1heQpyZWZlciB0byBhIG1vcmUgcmVjZW50IHZlcnNpb24gaW4gdGhlIGZ1dHVyZS4K CkB4cmVme0Zvcm1hdHMsICwgQ29udHJvbGxpbmcgdGhlIEFyY2hpdmUgRm9ybWF0LCB0YXIsIEdO VSBUYXJ9LCBmb3IKZnVydGhlciBkaXNjdXNzaW9uIGFib3V0IHRhciBmb3JtYXRzLgoKQGNvbW1h bmR7Y29uZmlndXJlfSBrbm93cyBzZXZlcmFsIHdheXMgdG8gY29uc3RydWN0IHRoZXNlIGZvcm1h dHMuICBJdAp3aWxsIG5vdCBhYm9ydCBpZiBpdCBjYW5ub3QgZmluZCBhIHRvb2wgdXAgdG8gdGhl IHRhc2sgKHNvIHRoYXQgdGhlCnBhY2thZ2UgY2FuIHN0aWxsIGJlIGJ1aWx0KSwgYnV0IEBzYW1w e21ha2UgZGlzdH0gd2lsbCBmYWlsLgoKQGl0ZW0gQHZhcnt2ZXJzaW9ufQpAY2luZGV4IE9wdGlv biwgQHZhcnt2ZXJzaW9ufQpBIHZlcnNpb24gbnVtYmVyIChlLmcuLCBAc2FtcHswLjMwfSkgY2Fu IGJlIHNwZWNpZmllZC4gIElmIEF1dG9tYWtlIGlzIG5vdAp0aGUgc2FtZSB2ZXJzaW9uIG9yCm5l d2VyIHRoYW4gdGhlIHZlcnNpb24gc3BlY2lmaWVkLCBjcmVhdGlvbiBvZiB0aGUgQGZpbGV7TWFr ZWZpbGUuaW59CndpbGwgYmUgc3VwcHJlc3NlZC4KCkBpdGVtIEBvcHRpb257LVdAdmFye2NhdGVn b3J5fX0gb3IgQG9wdGlvbnstLXdhcm5pbmdzPUB2YXJ7Y2F0ZWdvcnl9fQpAY2luZGV4IE9wdGlv biwgd2FybmluZ3MKQGNpbmRleCBPcHRpb24sIEBvcHRpb257LVdAdmFye2NhdGVnb3J5fX0KQGNp bmRleCBPcHRpb24sIEBvcHRpb257LS13YXJuaW5ncz1AdmFye2NhdGVnb3J5fX0KVGhlc2Ugb3B0 aW9ucyBiZWhhdmUgZXhhY3RseSBsaWtlIHRoZWlyIGNvbW1hbmQtbGluZSBjb3VudGVycGFydAoo QHB4cmVme2F1dG9tYWtlIEludm9jYXRpb259KS4gIFRoaXMgYWxsb3dzIHlvdSB0byBlbmFibGUg b3IgZGlzYWJsZSBzb21lCndhcm5pbmcgY2F0ZWdvcmllcyBvbiBhIHBlci1maWxlIGJhc2lzLiAg WW91IGNhbiBhbHNvIHNldHVwIHNvbWUgd2FybmluZ3MKZm9yIHlvdXIgZW50aXJlIHByb2plY3Q7 IGZvciBpbnN0YW5jZSwgdHJ5IEBzYW1we0FNX0lOSVRfQVVUT01BS0UoWy1XYWxsXSl9CmluIHlv dXIgQGZpbGV7Y29uZmlndXJlLmFjfS4KCkBlbmQgdGFibGUKClVucmVjb2duaXplZCBvcHRpb25z IGFyZSBkaWFnbm9zZWQgYnkgQGNvbW1hbmR7YXV0b21ha2V9LgoKSWYgeW91IHdhbnQgYW4gb3B0 aW9uIHRvIGFwcGx5IHRvIGFsbCB0aGUgZmlsZXMgaW4gdGhlIHRyZWUsIHlvdSBjYW4gdXNlCnRo ZSBAY29kZXtBTV9JTklUX0FVVE9NQUtFfSBtYWNybyBpbiBAZmlsZXtjb25maWd1cmUuYWN9LgpA eHJlZntNYWNyb3N9LgoKCkBub2RlIE1pc2NlbGxhbmVvdXMKQGNoYXB0ZXIgTWlzY2VsbGFuZW91 cyBSdWxlcwoKVGhlcmUgYXJlIGEgZmV3IHJ1bGVzIGFuZCB2YXJpYWJsZXMgdGhhdCBkaWRuJ3Qg Zml0IGFueXdoZXJlIGVsc2UuCgpAbWVudQoqIFRhZ3M6OiAgICAgICAgICAgICAgICAgICAgICAg IEludGVyZmFjaW5nIHRvIGNzY29wZSwgZXRhZ3MgYW5kIG1raWQKKiBTdWZmaXhlczo6ICAgICAg ICAgICAgICAgICAgICBIYW5kbGluZyBuZXcgZmlsZSBleHRlbnNpb25zCkBlbmQgbWVudQoKCkBu b2RlIFRhZ3MKQHNlY3Rpb24gSW50ZXJmYWNpbmcgdG8gQGNvbW1hbmR7ZXRhZ3N9CgpAY2luZGV4 IEBmaWxle1RBR1N9IHN1cHBvcnQKCkF1dG9tYWtlIHdpbGwgZ2VuZXJhdGUgcnVsZXMgdG8gZ2Vu ZXJhdGUgQGZpbGV7VEFHU30gZmlsZXMgZm9yIHVzZSB3aXRoCkdOVSBFbWFjcyB1bmRlciBzb21l IGNpcmN1bXN0YW5jZXMuCgpAdHJpbmRleCB0YWdzCklmIGFueSBDLCBDKysgb3IgRm9ydHJhbiA3 NyBzb3VyY2UgY29kZSBvciBoZWFkZXJzIGFyZSBwcmVzZW50LCB0aGVuCkBjb2Rle3RhZ3N9IGFu ZCBAY29kZXtUQUdTfSBydWxlcyB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgdGhlIGRpcmVjdG9yeS4K QWxsIGZpbGVzIGxpc3RlZCB1c2luZyB0aGUgQGNvZGV7X1NPVVJDRVN9LCBAY29kZXtfSEVBREVS U30sIGFuZApAY29kZXtfTElTUH0gcHJpbWFyaWVzIHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0 YWdzLiAgR2VuZXJhdGVkCnNvdXJjZSBmaWxlcyB0aGF0IGFyZSBub3QgZGlzdHJpYnV0ZWQgbXVz dCBiZSBkZWNsYXJlZCBpbiB2YXJpYWJsZXMKbGlrZSBAY29kZXtub2Rpc3Rfbm9pbnN0X0hFQURF UlN9IG9yIEBjb2Rle25vZGlzdF9AdmFye3Byb2d9X1NPVVJDRVN9Cm9yIHRoZXkgd2lsbCBiZSBp Z25vcmVkLgoKQSBAY29kZXt0YWdzfSBydWxlIHdpbGwgYmUgb3V0cHV0IGF0IHRoZSB0b3Btb3N0 IGRpcmVjdG9yeSBvZiBhCm11bHRpLWRpcmVjdG9yeSBwYWNrYWdlLiAgV2hlbiBydW4gZnJvbSB0 aGlzIHRvcG1vc3QgZGlyZWN0b3J5LApAc2FtcHttYWtlIHRhZ3N9IHdpbGwgZ2VuZXJhdGUgYSBA ZmlsZXtUQUdTfSBmaWxlIHRoYXQgaW5jbHVkZXMgYnkKcmVmZXJlbmNlIGFsbCBAZmlsZXtUQUdT fSBmaWxlcyBmcm9tIHN1YmRpcmVjdG9yaWVzLgoKVGhlIEBjb2Rle3RhZ3N9IHJ1bGUgd2lsbCBh bHNvIGJlIGdlbmVyYXRlZCBpZiB0aGUgdmFyaWFibGUKQGNvZGV7RVRBR1NfQVJHU30gaXMgZGVm aW5lZC4gIFRoaXMgdmFyaWFibGUgaXMgaW50ZW5kZWQgZm9yIHVzZSBpbgpkaXJlY3RvcmllcyB0 aGF0IGNvbnRhaW4gdGFnZ2FibGUgc291cmNlIHRoYXQgQGNvbW1hbmR7ZXRhZ3N9IGRvZXMKbm90 IHVuZGVyc3RhbmQuICBUaGUgdXNlciBjYW4gdXNlIHRoZSBAY29kZXtFVEFHU0ZMQUdTfSB0byBw YXNzCmFkZGl0aW9uYWwgZmxhZ3MgdG8gQGNvbW1hbmR7ZXRhZ3N9OyBAY29kZXtBTV9FVEFHU0ZM QUdTfSBpcyBhbHNvCmF2YWlsYWJsZSBmb3IgdXNlIGluIEBmaWxle01ha2VmaWxlLmFtfS4gIFRo ZSB2YXJpYWJsZSBAY29kZXtFVEFHU30KaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gaW52 b2tlIChieSBkZWZhdWx0IEBjb21tYW5ke2V0YWdzfSkuCkB2aW5kZXggRVRBR1NfQVJHUwpAdmlu ZGV4IEVUQUdTRkxBR1MKQHZpbmRleCBBTV9FVEFHU0ZMQUdTCkB2aW5kZXggRVRBR1MKCkhlcmUg aXMgaG93IEF1dG9tYWtlIGdlbmVyYXRlcyB0YWdzIGZvciBpdHMgc291cmNlLCBhbmQgZm9yIG5v ZGVzIGluIGl0cwpUZXhpbmZvIGZpbGU6CgpAZXhhbXBsZQpFVEFHU19BUkdTID0gYXV0b21ha2Uu aW4gLS1sYW5nPW5vbmUgXAogLS1yZWdleD0nL15AQG5vZGVbIFx0XStcKFteLF0rXCkvXDEvJyBh dXRvbWFrZS50ZXhpCkBlbmQgZXhhbXBsZQoKSWYgeW91IGFkZCBmaWxlIG5hbWVzIHRvIEBjb2Rl e0VUQUdTX0FSR1N9LCB5b3Ugd2lsbCBwcm9iYWJseSBhbHNvCndhbnQgdG8gZGVmaW5lIEBjb2Rl e1RBR1NfREVQRU5ERU5DSUVTfS4gIFRoZSBjb250ZW50cyBvZiB0aGlzIHZhcmlhYmxlCmFyZSBh ZGRlZCBkaXJlY3RseSB0byB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgQGNvZGV7dGFnc30gcnVs ZS4KQHZpbmRleCBUQUdTX0RFUEVOREVOQ0lFUwoKQXV0b21ha2UgYWxzbyBnZW5lcmF0ZXMgYSBA Y29kZXtjdGFnc30gcnVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvCmJ1aWxkIEBjb21tYW5ke3ZpfS1z dHlsZSBAZmlsZXt0YWdzfSBmaWxlcy4gIFRoZSB2YXJpYWJsZSBAY29kZXtDVEFHU30KaXMgdGhl IG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gaW52b2tlIChieSBkZWZhdWx0IEBjb21tYW5ke2N0YWdz fSk7CkBjb2Rle0NUQUdTRkxBR1N9IGNhbiBiZSB1c2VkIGJ5IHRoZSB1c2VyIHRvIHBhc3MgYWRk aXRpb25hbCBmbGFncywKYW5kIEBjb2Rle0FNX0NUQUdTRkxBR1N9IGNhbiBiZSB1c2VkIGJ5IHRo ZSBAZmlsZXtNYWtlZmlsZS5hbX0uCkB2aW5kZXggQ1RBR1NfQVJHUwpAdmluZGV4IENUQUdTRkxB R1MKQHZpbmRleCBDVEFHUwoKQHRyaW5kZXggaWQKQXV0b21ha2Ugd2lsbCBhbHNvIGdlbmVyYXRl IGFuIEBjb2Rle0lEfSBydWxlIHRoYXQgd2lsbCBydW4KQGNvbW1hbmR7bWtpZH0gb24gdGhlIHNv dXJjZS4gIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgb24gYQpkaXJlY3RvcnktYnktZGlyZWN0b3J5 IGJhc2lzLgoKU2ltaWxhcmx5LCB0aGUgQGNvZGV7Y3Njb3BlfSBydWxlIHdpbGwgY3JlYXRlIGEg bGlzdCBvZiBhbGwgdGhlIHNvdXJjZQpmaWxlcyBpbiB0aGUgdHJlZSBhbmQgcnVuIEBjb21tYW5k e2NzY29wZX0gdG8gYnVpbGQgYW4gaW52ZXJ0ZWQgaW5kZXgKZGF0YWJhc2UuICBUaGUgdmFyaWFi bGUgQGNvZGV7Q1NDT1BFfSBpcyB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSB0byBpbnZva2UKKGJ5 IGRlZmF1bHQgQGNvbW1hbmR7Y3Njb3BlfSk7IEBjb2Rle0NTQ09QRUZMQUdTfSBhbmQKQGNvZGV7 Q1NDT1BFX0FSR1N9IGNhbiBiZSB1c2VkIGJ5IHRoZSB1c2VyIHRvIHBhc3MgYWRkaXRpb25hbCBm bGFncyBhbmQKZmlsZSBuYW1lcyByZXNwZWN0aXZlbHksIHdoaWxlIEBjb2Rle0FNX0NTQ09QRUZM QUdTfSBjYW4gYmUgdXNlZCBieSB0aGUKQGZpbGV7TWFrZWZpbGUuYW19LiAgTm90ZSB0aGF0LCBj dXJyZW50bHksIHRoZSBBdXRvbWFrZS1wcm92aWRlZApAY29kZXtjc2NvcGV9IHN1cHBvcnQsIHdo ZW4gdXNlZCBpbiBhIFZQQVRIIGJ1aWxkLCBtaWdodCBub3Qgd29yayB3ZWxsCndpdGggbm9uLUdO VSBtYWtlIGltcGxlbWVudGF0aW9ucyAoZXNwZWNpYWxseSB3aXRoIG1ha2UgaW1wbGVtZW50YXRp b25zCnBlcmZvcm1pbmcgQHJlZntBdXRvbWF0aWMgUnVsZSBSZXdyaXRpbmcsICwgVlBBVEggcmV3 cml0ZXMsIGF1dG9jb25mLApUaGUgQXV0b2NvbmYgTWFudWFsfSkuCkB2aW5kZXggQ1NDT1BFX0FS R1MKQHZpbmRleCBDU0NPUEVGTEFHUwpAdmluZGV4IENTQ09QRQoKRmluYWxseSwgQXV0b21ha2Ug YWxzbyBlbWl0cyBydWxlcyB0byBzdXBwb3J0IHRoZQpAdXJlZntodHRwczovL3d3dy5nbnUub3Jn L3NvZnR3YXJlL2dsb2JhbC8sIEdOVSBHbG9iYWwgVGFncyBwcm9ncmFtfS4KVGhlIEBjb2Rle0dU QUdTfSBydWxlIHJ1bnMgR2xvYmFsIFRhZ3MgYW5kIHB1dHMgdGhlCnJlc3VsdCBpbiB0aGUgdG9w IGJ1aWxkIGRpcmVjdG9yeS4gIFRoZSB2YXJpYWJsZSBAY29kZXtHVEFHU19BUkdTfQpob2xkcyBh cmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvIEBjb21tYW5ke2d0YWdzfS4KQHZpbmRleCBHVEFH U19BUkdTCgoKQG5vZGUgU3VmZml4ZXMKQHNlY3Rpb24gSGFuZGxpbmcgbmV3IGZpbGUgZXh0ZW5z aW9ucwoKQGNpbmRleCBBZGRpbmcgbmV3IEBjb2Rle1NVRkZJWEVTfQpAY2luZGV4IEBjb2Rle1NV RkZJWEVTfSwgYWRkaW5nCkB2aW5kZXggU1VGRklYRVMKCkl0IGlzIHNvbWV0aW1lcyB1c2VmdWwg dG8gaW50cm9kdWNlIGEgbmV3IGltcGxpY2l0IHJ1bGUgdG8gaGFuZGxlIGEgZmlsZQp0eXBlIHRo YXQgQXV0b21ha2UgZG9lcyBub3Qga25vdyBhYm91dC4KCkZvciBpbnN0YW5jZSwgc3VwcG9zZSB5 b3UgaGFkIGEgY29tcGlsZXIgdGhhdCBjb3VsZCBjb21waWxlIEBmaWxley5mb299CmZpbGVzIHRv IEBmaWxley5vfSBmaWxlcy4gIFlvdSB3b3VsZCBzaW1wbHkgZGVmaW5lIGEgc3VmZml4IHJ1bGUg Zm9yCnlvdXIgbGFuZ3VhZ2U6CgpAZXhhbXBsZQouZm9vLm86CiAgICAgICAgZm9vY2MgLWMgLW8g JEBAICQ8CkBlbmQgZXhhbXBsZQoKVGhlbiB5b3UgY291bGQgZGlyZWN0bHkgdXNlIGEgQGZpbGV7 LmZvb30gZmlsZSBpbiBhIEBjb2Rle19TT1VSQ0VTfQp2YXJpYWJsZSBhbmQgZXhwZWN0IHRoZSBj b3JyZWN0IHJlc3VsdHM6CgpAZXhhbXBsZQpiaW5fUFJPR1JBTVMgPSBkb2l0CmRvaXRfU09VUkNF UyA9IGRvaXQuZm9vCkBlbmQgZXhhbXBsZQoKVGhhdCBpcyB0aGUgc2ltcGxlciBhbmQgbW9yZSBj b21tb24gY2FzZS4gIEluIG90aGVyIGNhc2VzLCB5b3UgaGF2ZSB0bwpoZWxwIEF1dG9tYWtlIHRv IGZpZ3VyZSBvdXQgd2hpY2ggZXh0ZW5zaW9ucyB5b3UgYXJlIGRlZmluaW5nIHlvdXIKc3VmZml4 IHJ1bGUgZm9yLiAgVGhpcyB1c3VhbGx5IGhhcHBlbnMgd2hlbiB5b3VyIGV4dGVuc2lvbiBkb2Vz IG5vdApzdGFydCB3aXRoIGEgZG90LiAgVGhlbiwgeW91IGhhdmUgdG8gcHV0IHRoZSBsaXN0IG9m IG5ldyBzdWZmaXhlcyBpbgp0aGUgQGNvZGV7U1VGRklYRVN9IHZhcmlhYmxlIEBlbXBoe2JlZm9y ZX0geW91IGRlZmluZSB5b3VyIGltcGxpY2l0CnJ1bGUuCgpGb3IgaW5zdGFuY2UsIHRoZSBmb2xs b3dpbmcgZGVmaW5pdGlvbiBwcmV2ZW50cyBBdXRvbWFrZSBmcm9tIG1pc2ludGVycHJldGluZwp0 aGUgQHNhbXB7LmlkbEMuY3BwOn0gcnVsZSBhcyBhbiBhdHRlbXB0IHRvIHRyYW5zZm9ybSBAZmls ZXsuaWRsQ30gZmlsZXMgaW50bwpAZmlsZXsuY3BwfSBmaWxlcy4KCkBjIEtlZXAgaW4gc3luYyB3 aXRoIHN1ZmZpeDcuc2gKQGV4YW1wbGUKU1VGRklYRVMgPSAuaWRsIEMuY3BwCi5pZGxDLmNwcDoK ICAgICAgICAjIHdoYXRldmVyCkBlbmQgZXhhbXBsZQoKQXMgeW91IG1heSBoYXZlIG5vdGVkLCB0 aGUgQGNvZGV7U1VGRklYRVN9IHZhcmlhYmxlIGJlaGF2ZXMgbGlrZSB0aGUKQGNvZGV7LlNVRkZJ WEVTfSBzcGVjaWFsIHRhcmdldCBvZiBAY29tbWFuZHttYWtlfS4gIFlvdSBzaG91bGQgbm90IHRv dWNoCkBjb2Rley5TVUZGSVhFU30geW91cnNlbGYsIGJ1dCB1c2UgQGNvZGV7U1VGRklYRVN9IGlu c3RlYWQgYW5kIGxldApBdXRvbWFrZSBnZW5lcmF0ZSB0aGUgc3VmZml4IGxpc3QgZm9yIEBjb2Rl ey5TVUZGSVhFU30uICBBbnkgZ2l2ZW4KQGNvZGV7U1VGRklYRVN9IGdvIGF0IHRoZSBzdGFydCBv ZiB0aGUgZ2VuZXJhdGVkIHN1ZmZpeGVzIGxpc3QsIGZvbGxvd2VkCmJ5IEF1dG9tYWtlIGdlbmVy YXRlZCBzdWZmaXhlcyBub3QgYWxyZWFkeSBpbiB0aGUgbGlzdC4KCkBjIGh0dHBzOi8vYnVncy5n bnUub3JnLzY0NzQzLgpAY2luZGV4IGJ1aWx0LWluIHN1ZmZpeCBhbmQgcGF0dGVybiBydWxlcywg ZGlzYWJsZWQKQGNpbmRleCBzdWZmaXggcnVsZXMgb2YgTWFrZSwgZGlzYWJsZWQKQGNpbmRleCBw YXR0ZXJuIHJ1bGVzIG9mIEdOVSBNYWtlLCBkaXNhYmxlZApBdXRvbWFrZSBkaXNhYmxlcyB0aGUg TWFrZSBwcm9ncmFtJ3MgYnVpbHQtaW4gcnVsZXMgd2l0aCBhCkBjb2Rley5TVUZGSVhFUzp9IHJ1 bGUsIGFuZCB0aGVuIGFkZHMgd2hhdGV2ZXIgc3VmZml4ZXMgYXJlCm5lY2Vzc2FyeS4gIEF1dG9t YWtlIGFsc28gZGlzYWJsZXMgR05VIE1ha2UncyBidWlsdC1pbiBwYXR0ZXJuIHJ1bGVzLgoKQG5v ZGUgSW5jbHVkZQpAY2hhcHRlciBJbmNsdWRlCgpAY21pbmRleCBpbmNsdWRlCkBjaW5kZXggSW5j bHVkaW5nIEBmaWxle01ha2VmaWxlfSBmcmFnbWVudApAY2luZGV4IEBmaWxle01ha2VmaWxlfSBm cmFnbWVudCwgaW5jbHVkaW5nCgpBdXRvbWFrZSBzdXBwb3J0cyBhbiBAY29kZXtpbmNsdWRlfSBk aXJlY3RpdmUgdGhhdCBjYW4gYmUgdXNlZCB0bwppbmNsdWRlIG90aGVyIEBmaWxle01ha2VmaWxl fSBmcmFnbWVudHMgd2hlbiBAY29tbWFuZHthdXRvbWFrZX0gaXMgcnVuLgpOb3RlIHRoYXQgdGhl c2UgZnJhZ21lbnRzIGFyZSByZWFkIGFuZCBpbnRlcnByZXRlZCBieSBAY29tbWFuZHthdXRvbWFr ZX0sCm5vdCBieSBAY29tbWFuZHttYWtlfS4gIEFzIHdpdGggY29uZGl0aW9uYWxzLCBAY29tbWFu ZHttYWtlfSBoYXMgbm8gaWRlYSB0aGF0CkBjb2Rle2luY2x1ZGV9IGlzIGluIHVzZS4KClRoZXJl IGFyZSB0d28gZm9ybXMgb2YgQGNvZGV7aW5jbHVkZX06CgpAdGFibGUgQGNvZGUKQGl0ZW0gaW5j bHVkZSAkKHNyY2RpcikvZmlsZQpJbmNsdWRlIGEgZnJhZ21lbnQgdGhhdCBpcyBmb3VuZCByZWxh dGl2ZSB0byB0aGUgY3VycmVudCBzb3VyY2UKZGlyZWN0b3J5LgoKQGl0ZW0gaW5jbHVkZSAkKHRv cF9zcmNkaXIpL2ZpbGUKSW5jbHVkZSBhIGZyYWdtZW50IHRoYXQgaXMgZm91bmQgcmVsYXRpdmUg dG8gdGhlIHRvcCBzb3VyY2UgZGlyZWN0b3J5LgpAZW5kIHRhYmxlCgpOb3RlIHRoYXQgaWYgYSBm cmFnbWVudCBpcyBpbmNsdWRlZCBpbnNpZGUgYSBjb25kaXRpb25hbCwgdGhlbiB0aGUKY29uZGl0 aW9uIGFwcGxpZXMgdG8gdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGF0IGZyYWdtZW50LgoKQGZp bGV7TWFrZWZpbGV9IGZyYWdtZW50cyBpbmNsdWRlZCB0aGlzIHdheSBhcmUgYWx3YXlzIGRpc3Ry aWJ1dGVkIGJlY2F1c2UKdGhleSBhcmUgbmVlZGVkIHRvIHJlYnVpbGQgQGZpbGV7TWFrZWZpbGUu aW59LgoKSW5zaWRlIGEgZnJhZ21lbnQsIHRoZSBjb25zdHJ1Y3QgQGNvZGV7JXJlbGRpciV9IGlz IHJlcGxhY2VkIHdpdGggdGhlCmRpcmVjdG9yeSBvZiB0aGUgZnJhZ21lbnQgcmVsYXRpdmUgdG8g dGhlIGJhc2UgQGZpbGV7TWFrZWZpbGUuYW19LgpTaW1pbGFybHksIEBjb2RleyVjYW5vbl9yZWxk aXIlfSBpcyByZXBsYWNlZCB3aXRoIHRoZSBjYW5vbmljYWxpemVkCihAcHhyZWZ7Q2Fub25pY2Fs aXphdGlvbn0pIGZvcm0gb2YgQGNvZGV7JXJlbGRpciV9LiAgQXMgYSBjb252ZW5pZW5jZSwKQGNv ZGV7JUQlfSBpcyBhIHN5bm9ueW0gZm9yIEBjb2RleyVyZWxkaXIlfSwgYW5kIEBjb2RleyVDJX0K aXMgYSBzeW5vbnltIGZvciBAY29kZXslY2Fub25fcmVsZGlyJX0uCgpBIHNwZWNpYWwgZmVhdHVy ZSBpcyB0aGF0IGlmIHRoZSBmcmFnbWVudCBpcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMKdGhl IGJhc2UgQGZpbGV7TWFrZWZpbGUuYW19IChpLmUuLCBAY29kZXslcmVsZGlyJX0gaXMgQGNvZGV7 Ln0pLCB0aGVuOgoKQHRhYmxlIEBjb2RlCkBpdGVtICVyZWxkaXIlCnRvZ2V0aGVyIHdpdGggYSBm b2xsb3dpbmcgc2xhc2ggZXhwYW5kcyB0byB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UKaXQg ZXhwYW5kcyB0byBhIGRvdDsKCkBpdGVtICVjYW5vbl9yZWxkaXIlCnRvZ2V0aGVyIHdpdGggYSBm b2xsb3dpbmcgdW5kZXJzY29yZSBleHBhbmRzIHRvIHRoZSBlbXB0eSBzdHJpbmcsIG90aGVyd2lz ZQppdCBleHBhbmRzIHRvIGFuIHVuZGVyc2NvcmUuCgpAZW5kIHRhYmxlCgpUaHVzLCBhIEBmaWxl e01ha2VmaWxlfSBmcmFnbWVudCBtaWdodCBsb29rIGxpa2UgdGhpczoKCkBleGFtcGxlCmJpbl9Q Uk9HUkFNUyArPSAlcmVsZGlyJS9tdW1ibGUKJWNhbm9uX3JlbGRpciVfbXVtYmxlX1NPVVJDRVMg PSAlcmVsZGlyJS9vbmUuYwpAZW5kIGV4YW1wbGUKCkBub2RlIENvbmRpdGlvbmFscwpAY2hhcHRl ciBDb25kaXRpb25hbHMKCkBjaW5kZXggQ29uZGl0aW9uYWxzCgpBdXRvbWFrZSBzdXBwb3J0cyBh IHNpbXBsZSB0eXBlIG9mIGNvbmRpdGlvbmFsLgoKVGhlc2UgY29uZGl0aW9uYWxzIGFyZSBub3Qg dGhlIHNhbWUgYXMgY29uZGl0aW9uYWxzIGluCkdOVSBNYWtlLiAgQXV0b21ha2UgY29uZGl0aW9u YWxzIGFyZSBjaGVja2VkIGF0IGNvbmZpZ3VyZSB0aW1lIGJ5IHRoZQpAZmlsZXtjb25maWd1cmV9 IHNjcmlwdCwgYW5kIGFmZmVjdCB0aGUgdHJhbnNsYXRpb24gZnJvbQpAZmlsZXtNYWtlZmlsZS5p bn0gdG8gQGZpbGV7TWFrZWZpbGV9LiAgVGhleSBhcmUgYmFzZWQgb24gb3B0aW9ucyBwYXNzZWQK dG8gQGZpbGV7Y29uZmlndXJlfSBhbmQgb24gcmVzdWx0cyB0aGF0IEBmaWxle2NvbmZpZ3VyZX0g aGFzIGRpc2NvdmVyZWQKYWJvdXQgdGhlIGhvc3Qgc3lzdGVtLiAgR05VIE1ha2UgY29uZGl0aW9u YWxzIGFyZSBjaGVja2VkIGF0IEBjb21tYW5ke21ha2V9CnRpbWUsIGFuZCBhcmUgYmFzZWQgb24g dmFyaWFibGVzIHBhc3NlZCB0byB0aGUgbWFrZSBwcm9ncmFtIG9yIGRlZmluZWQKaW4gdGhlIEBm aWxle01ha2VmaWxlfS4KCkF1dG9tYWtlIGNvbmRpdGlvbmFscyB3aWxsIHdvcmsgd2l0aCBhbnkg bWFrZSBwcm9ncmFtLgoKQG1lbnUKKiBVc2FnZSBvZiBDb25kaXRpb25hbHM6OiAgICAgICBEZWNs YXJpbmcgY29uZGl0aW9uYWwgY29udGVudAoqIExpbWl0cyBvZiBDb25kaXRpb25hbHM6OiAgICAg IEVuY2xvc2luZyBjb21wbGV0ZSBzdGF0ZW1lbnRzCkBlbmQgbWVudQoKQG5vZGUgVXNhZ2Ugb2Yg Q29uZGl0aW9uYWxzCkBzZWN0aW9uIFVzYWdlIG9mIENvbmRpdGlvbmFscwoKQGFjaW5kZXggQU1f Q09ORElUSU9OQUwKQmVmb3JlIHVzaW5nIGEgY29uZGl0aW9uYWwsIHlvdSBtdXN0IGRlZmluZSBp dCBieSB1c2luZwpAY29kZXtBTV9DT05ESVRJT05BTH0gaW4gdGhlIEBmaWxle2NvbmZpZ3VyZS5h Y30gZmlsZSAoQHB4cmVme01hY3Jvc30pLgoKQGRlZm1hYyBBTV9DT05ESVRJT05BTCAoQHZhcntj b25kaXRpb25hbH0sIEB2YXJ7Y29uZGl0aW9ufSkKVGhlIGNvbmRpdGlvbmFsIG5hbWUsIEB2YXJ7 Y29uZGl0aW9uYWx9LCBzaG91bGQgYmUgYSBzaW1wbGUgc3RyaW5nCnN0YXJ0aW5nIHdpdGggYSBs ZXR0ZXIgYW5kIGNvbnRhaW5pbmcgb25seSBsZXR0ZXJzLCBkaWdpdHMsIGFuZAp1bmRlcnNjb3Jl cy4gIEl0IG11c3QgYmUgZGlmZmVyZW50IGZyb20gQHNhbXB7VFJVRX0gYW5kIEBzYW1we0ZBTFNF fSwKd2hpY2ggYXJlIHJlc2VydmVkIGJ5IEF1dG9tYWtlLgoKVGhlIHNoZWxsIEB2YXJ7Y29uZGl0 aW9ufSAoc3VpdGFibGUgZm9yIHVzZSBpbiBhIHNoZWxsIEBjb2Rle2lmfQpzdGF0ZW1lbnQpIGlz IGV2YWx1YXRlZCB3aGVuIEBjb21tYW5ke2NvbmZpZ3VyZX0gaXMgcnVuLiAgTm90ZSB0aGF0IHlv dQptdXN0IGFycmFuZ2UgZm9yIEBlbXBoe2V2ZXJ5fSBAY29kZXtBTV9DT05ESVRJT05BTH0gdG8g YmUgaW52b2tlZCBldmVyeQp0aW1lIEBjb21tYW5ke2NvbmZpZ3VyZX0gaXMgcnVuLiAgSWYgQGNv ZGV7QU1fQ09ORElUSU9OQUx9IGlzIHJ1bgpjb25kaXRpb25hbGx5IChlLmcuLCBpbiBhIHNoZWxs IEBjb2Rle2lmfSBzdGF0ZW1lbnQpLCB0aGVuIHRoZSByZXN1bHQKd2lsbCBjb25mdXNlIEBjb21t YW5ke2F1dG9tYWtlfS4KCkZvciBwb3J0YWJpbGl0eSwgaXQgaXMgYmVzdCB0byB1c2Ugc2hlbGwg b3BlcmF0b3JzIEBjb2RleyYmfSBhbmQKQGNvZGV7fHx9IGFuZCBwYXJlbnRoZXNlcywgd2hlbiBj b25zdHJ1Y3RpbmcgYSBjb21wb3VuZApAdmFye2NvbmRpdGlvbn0gdXNpbmcgdGhlIEBjb21tYW5k e3Rlc3R9IGNvbW1hbmQsIGFuZCBub3QgdGhlCkBjb2Rley1hfSBhbmQgQGNvZGV7LW99IG9wdGlv bnMgYW5kIHBhcmVudGhlc2VzIGFzIG9wdGlvbnMgdG8KQGNvbW1hbmR7dGVzdH0sIGFsbCBvZiB3 aGljaCBoYXZlIGJlZW4gbWFya2VkIG9ic29sZXNjZW50IGJ5IFBPU0lYCihAdXJse2h0dHBzOi8v cHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvdGVzdC5o dG1sI3RhZ18yMF8xMjhfMTYxfSkuClRoZSBuYW1lIEBjb2Rle3Rlc3R9IGlzIGFsc28gbW9yZSBw b3J0YWJsZSB0aGFuIEBjb2Rle1t9LgpAeHJlZntMaW1pdGF0aW9ucyBvZiBCdWlsdGlucywgLCwg YXV0b2NvbmYsIFRoZSBBdXRvY29uZiBNYW51YWx9LgoKQGVuZCBkZWZtYWMKCkBjaW5kZXggQG9w dGlvbnstLWVuYWJsZS1kZWJ1Z30sIGV4YW1wbGUKQGNpbmRleCBFeGFtcGxlIGNvbmRpdGlvbmFs IEBvcHRpb257LS1lbmFibGUtZGVidWd9CkBjaW5kZXggQ29uZGl0aW9uYWwgZXhhbXBsZSwgQG9w dGlvbnstLWVuYWJsZS1kZWJ1Z30KCkNvbmRpdGlvbmFscyB0eXBpY2FsbHkgZGVwZW5kIHVwb24g b3B0aW9ucyB0aGF0IHRoZSB1c2VyIHByb3ZpZGVzIHRvCnRoZSBAY29tbWFuZHtjb25maWd1cmV9 IHNjcmlwdC4gIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gd3JpdGUgYQpjb25kaXRpb25h bCB0aGF0IGlzIHRydWUgaWYgdGhlIHVzZXIgdXNlcyB0aGUgQG9wdGlvbnstLWVuYWJsZS1kZWJ1 Z30Kb3B0aW9uLgoKQGV4YW1wbGUKQUNfQVJHX0VOQUJMRShbZGVidWddLApbICAtLWVuYWJsZS1k ZWJ1ZyAgICBUdXJuIG9uIGRlYnVnZ2luZ10sCltjYXNlICIkQHtlbmFibGV2YWxAfSIgaW4KICB5 ZXMpIGRlYnVnPXRydWUgOzsKICBubykgIGRlYnVnPWZhbHNlIDs7CiAgKikgQUNfTVNHX0VSUk9S KFtiYWQgdmFsdWUgJEB7ZW5hYmxldmFsQH0gZm9yIC0tZW5hYmxlLWRlYnVnXSkgOzsKZXNhY10s W2RlYnVnPWZhbHNlXSkKQU1fQ09ORElUSU9OQUwoW0RFQlVHXSwgW3Rlc3QgeCRkZWJ1ZyA9IHh0 cnVlXSkKQGVuZCBleGFtcGxlCgpIZXJlIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZSB0aGF0 IGNvbmRpdGlvbmFsIGluIEBmaWxle01ha2VmaWxlLmFtfToKCkBjbWluZGV4IGlmCkBjbWluZGV4 IGVuZGlmCkBjbWluZGV4IGVsc2UKCkBleGFtcGxlCmlmIERFQlVHCkRCRyA9IGRlYnVnCmVsc2UK REJHID0KZW5kaWYKbm9pbnN0X1BST0dSQU1TID0gJChEQkcpCkBlbmQgZXhhbXBsZQoKVGhpcyB0 cml2aWFsIGV4YW1wbGUgY291bGQgYWxzbyBiZSBoYW5kbGVkIHVzaW5nIEBjb2Rle0VYVFJBX1BS T0dSQU1TfQooQHB4cmVme0NvbmRpdGlvbmFsIFByb2dyYW1zfSkuCgpZb3UgbWF5IG9ubHkgdGVz dCBhIHNpbmdsZSB2YXJpYWJsZSBpbiBhbiBAY29kZXtpZn0gc3RhdGVtZW50LCBwb3NzaWJseQpu ZWdhdGVkIHVzaW5nIEBzYW1weyF9LiAgVGhlIEBjb2Rle2Vsc2V9IHN0YXRlbWVudCBtYXkgYmUg b21pdHRlZC4KQ29uZGl0aW9uYWxzIG1heSBiZSBuZXN0ZWQgdG8gYW55IGRlcHRoLiAgWW91IG1h eSBzcGVjaWZ5IGFuIGFyZ3VtZW50IHRvCkBjb2Rle2Vsc2V9IGluIHdoaWNoIGNhc2UgaXQgbXVz dCBiZSB0aGUgbmVnYXRpb24gb2YgdGhlIGNvbmRpdGlvbiB1c2VkCmZvciB0aGUgY3VycmVudCBA Y29kZXtpZn0uICBTaW1pbGFybHkgeW91IG1heSBzcGVjaWZ5IHRoZSBjb25kaXRpb24KdGhhdCBp cyBjbG9zZWQgb24gdGhlIEBjb2Rle2VuZGlmfSBsaW5lOgoKQGV4YW1wbGUKaWYgREVCVUcKREJH ID0gZGVidWcKZWxzZSAhREVCVUcKREJHID0KZW5kaWYgIURFQlVHCkBlbmQgZXhhbXBsZQoKQG5v aW5kZW50ClVuYmFsYW5jZWQgY29uZGl0aW9ucyBhcmUgZXJyb3JzLiAgVGhlIEBjb2Rle2lmfSwg QGNvZGV7ZWxzZX0sIGFuZApAY29kZXtlbmRpZn0gc3RhdGVtZW50cyBzaG91bGQgbm90IGJlIGlu ZGVudGVkLCBpLmUuLCBzdGFydCBvbiBjb2x1bW4Kb25lLgoKVGhlIEBjb2Rle2Vsc2V9IGJyYW5j aCBvZiB0aGUgYWJvdmUgdHdvIGV4YW1wbGVzIGNvdWxkIGJlIG9taXR0ZWQsCnNpbmNlIGFzc2ln bmluZyB0aGUgZW1wdHkgc3RyaW5nIHRvIGFuIG90aGVyd2lzZSB1bmRlZmluZWQgdmFyaWFibGUK bWFrZXMgbm8gZGlmZmVyZW5jZS4KCkBhY2luZGV4IEFNX0NPTkRfSUYKSW4gb3JkZXIgdG8gYWxs b3cgYWNjZXNzIHRvIHRoZSBjb25kaXRpb24gcmVnaXN0ZXJlZCBieQpAY29kZXtBTV9DT05ESVRJ T05BTH0gaW5zaWRlIEBmaWxle2NvbmZpZ3VyZS5hY30sIGFuZCB0byBhbGxvdwpjb25kaXRpb25h bCBAY29kZXtBQ19DT05GSUdfRklMRVN9LCBAY29kZXtBTV9DT05EX0lGfSBtYXkgYmUgdXNlZDoK CkBkZWZtYWMgQU1fQ09ORF9JRiAoQHZhcntjb25kaXRpb25hbH0sIEBvdmFye2lmLXRydWV9LCBA b3ZhcntpZi1mYWxzZX0pCklmIEB2YXJ7Y29uZGl0aW9uYWx9IGlzIGZ1bGZpbGxlZCwgZXhlY3V0 ZSBAdmFye2lmLXRydWV9LCBvdGhlcndpc2UKZXhlY3V0ZSBAdmFye2lmLWZhbHNlfS4gIElmIGVp dGhlciBicmFuY2ggY29udGFpbnMgQGNvZGV7QUNfQ09ORklHX0ZJTEVTfSwKaXQgd2lsbCBjYXVz ZSBAY29tbWFuZHthdXRvbWFrZX0gdG8gb3V0cHV0IHRoZSBydWxlcyBmb3IgdGhlIHJlc3BlY3Rp dmUKZmlsZXMgb25seSBmb3IgdGhlIGdpdmVuIGNvbmRpdGlvbi4KQGVuZCBkZWZtYWMKCkBjb2Rl e0FNX0NPTkRfSUZ9IG1hY3JvcyBtYXkgYmUgbmVzdGVkIHdoZW4gTTQgcXVvdGF0aW9uIGlzIHVz ZWQKcHJvcGVybHkgKEBweHJlZntNNCBRdW90YXRpb24sICwsIGF1dG9jb25mLCBUaGUgQXV0b2Nv bmYgTWFudWFsfSkuCgpAY2luZGV4IEV4YW1wbGUgY29uZGl0aW9uYWwgQGNvZGV7QUNfQ09ORklH X0ZJTEVTfQpAY2luZGV4IEBjb2Rle0FDX0NPTkZJR19GSUxFU30sIGNvbmRpdGlvbmFsCgpIZXJl IGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGRlZmluZSBhIGNvbmRpdGlvbmFsIGNvbmZpZyBmaWxl OgoKQGV4YW1wbGUKQU1fQ09ORElUSU9OQUwoW1NIRUxMX1dSQVBQRVJdLCBbdGVzdCAieCR3aXRo X3dyYXBwZXIiID0geHRydWVdKQpBTV9DT05EX0lGKFtTSEVMTF9XUkFQUEVSXSwKICAgICAgICAg ICBbQUNfQ09ORklHX0ZJTEVTKFt3cmFwcGVyOndyYXBwZXIuaW5dKV0pCkBlbmQgZXhhbXBsZQoK QG5vZGUgTGltaXRzIG9mIENvbmRpdGlvbmFscwpAc2VjdGlvbiBMaW1pdHMgb2YgQ29uZGl0aW9u YWxzCgpDb25kaXRpb25hbHMgc2hvdWxkIGVuY2xvc2UgY29tcGxldGUgc3RhdGVtZW50cyBsaWtl IHZhcmlhYmxlcyBvcgpydWxlcyBkZWZpbml0aW9ucy4gIEF1dG9tYWtlIGNhbm5vdCBkZWFsIHdp dGggY29uZGl0aW9uYWxzIHVzZWQgaW5zaWRlCmEgdmFyaWFibGUgZGVmaW5pdGlvbiwgZm9yIGlu c3RhbmNlLCBhbmQgaXMgbm90IGV2ZW4gYWJsZSB0byBkaWFnbm9zZQp0aGlzIHNpdHVhdGlvbi4g IFRoZSBmb2xsb3dpbmcgZXhhbXBsZSB3b3VsZCBub3Qgd29yazoKCkBleGFtcGxlCiMgVGhpcyBz eW50YXggaXMgbm90IHVuZGVyc3Rvb2QgYnkgQXV0b21ha2UKQU1fQ1BQRkxBR1MgPSBcCiAgLURG RUFUVVJFX0EgXAppZiBXQU5UX0RFQlVHCiAgLURERUJVRyBcCmVuZGlmCiAgLURGRUFUVVJFX0IK QGVuZCBleGFtcGxlCgpIb3dldmVyIHRoZSBpbnRlbmRlZCBkZWZpbml0aW9uIG9mIEBjb2Rle0FN X0NQUEZMQUdTfSBjYW4gYmUgYWNoaWV2ZWQKd2l0aAoKQGV4YW1wbGUKaWYgV0FOVF9ERUJVRwog IERFQlVHRkxBR1MgPSAtRERFQlVHCmVuZGlmCkFNX0NQUEZMQUdTID0gLURGRUFUVVJFX0EgJChE RUJVR0ZMQUdTKSAtREZFQVRVUkVfQgpAZW5kIGV4YW1wbGUKCkBub2luZGVudApvcgoKQGV4YW1w bGUKQU1fQ1BQRkxBR1MgPSAtREZFQVRVUkVfQQppZiBXQU5UX0RFQlVHCkFNX0NQUEZMQUdTICs9 IC1EREVCVUcKZW5kaWYKQU1fQ1BQRkxBR1MgKz0gLURGRUFUVVJFX0IKQGVuZCBleGFtcGxlCgpN b3JlIGRldGFpbHMgYW5kIGV4YW1wbGVzIG9mIGNvbmRpdGlvbmFscyBhcmUgZGVzY3JpYmVkIGFs b25nc2lkZQp2YXJpb3VzIEF1dG9tYWtlIGZlYXR1cmVzIGluIHRoaXMgbWFudWFsIChAcHhyZWZ7 Q29uZGl0aW9uYWwKU3ViZGlyZWN0b3JpZXN9LCBAcHhyZWZ7Q29uZGl0aW9uYWwgU291cmNlc30s IEBweHJlZntDb25kaXRpb25hbApQcm9ncmFtc30sIEBweHJlZntDb25kaXRpb25hbCBMaWJ0b29s IExpYnJhcmllc30sIEBweHJlZntDb25kaXRpb25hbApMaWJ0b29sIFNvdXJjZXN9KS4KCkBub2Rl IFNpbGVuY2luZyBNYWtlCkBjaGFwdGVyIFNpbGVuY2luZyBAY29tbWFuZHttYWtlfQoKQGNpbmRl eCBTaWxlbnQgQGNvbW1hbmR7bWFrZX0KQGNpbmRleCBTaWxlbmNpbmcgQGNvbW1hbmR7bWFrZX0K QGNpbmRleCBTaWxlbnQgcnVsZXMKQGNpbmRleCBTaWxlbnQgQGNvbW1hbmR7bWFrZX0gcnVsZXMK CkBtZW51CiogTWFrZSB2ZXJib3NpdHk6OiAgICAgICAgICAgICAgTWFrZSBpcyB2ZXJib3NlIGJ5 IGRlZmF1bHQKKiBUcmlja3MgRm9yIFNpbGVuY2luZyBNYWtlOjogICBTdGFuZGFyZCBhbmQgZ2Vu ZXJpYyB3YXlzIHRvIHNpbGVuY2UgbWFrZQoqIEF1dG9tYWtlIFNpbGVudCBSdWxlczo6ICAgICAg IEhvdyBBdXRvbWFrZSBjYW4gaGVscCBpbiBzaWxlbmNpbmcgbWFrZQoqIFVuc2lsZW5jaW5nIEF1 dG9tYWtlOjogICAgICAgIFNob3dpbmcgY29tbWFuZHMuCkBlbmQgbWVudQoKQG5vZGUgTWFrZSB2 ZXJib3NpdHkKQHNlY3Rpb24gTWFrZSBpcyB2ZXJib3NlIGJ5IGRlZmF1bHQKCk5vcm1hbGx5LCB3 aGVuIGV4ZWN1dGluZyB0aGUgc2V0IG9mIHJ1bGVzIGFzc29jaWF0ZWQgd2l0aCBhIHRhcmdldCwK QGNvbW1hbmR7bWFrZX0gcHJpbnRzIGVhY2ggcnVsZSBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuICBU aGlzIGJlaGF2aW9yLApkZXNwaXRlIGhhdmluZyBiZWVuIGluIHBsYWNlIHNpbmNlIHRoZSBiZWdp bm5pbmcgb2YgQGNvbW1hbmR7bWFrZX0sCmFuZCBiZWluZyBtYW5kYXRlZCBieSB0aGUgUE9TSVgg c3RhbmRhcmQsIHN0YXJrbHkgdmlvbGF0ZXMgdGhlCmBgc2lsZW5jZSBpcyBnb2xkZW4nJyBVTklY IHByaW5jaXBsZUBmb290bm90ZXtTZWUgYWxzbwpAdXJlZntodHRwOi8vY2F0Yi5vcmcvfmVzci93 cml0aW5ncy90YW91cC9odG1sL2NoMTFzMDkuaHRtbH0ufToKCkBxdW90YXRpb24KV2hlbiBhIHBy b2dyYW0gaGFzIG5vdGhpbmcgaW50ZXJlc3Rpbmcgb3Igc3VycHJpc2luZyB0byBzYXksIGl0IHNo b3VsZApzYXkgbm90aGluZy4gIFdlbGwtYmVoYXZlZCBVbml4IHByb2dyYW1zIGRvIHRoZWlyIGpv YnMgdW5vYnRydXNpdmVseSwKd2l0aCBhIG1pbmltdW0gb2YgZnVzcyBhbmQgYm90aGVyLiAgU2ls ZW5jZSBpcyBnb2xkZW4uCkBlbmQgcXVvdGF0aW9uCgpUaGUgdHJhZGl0aW9uYWwgdmVyYm9zaXR5 IG9mIEBjb21tYW5ke21ha2V9IGlzIHVuZGVyc3RhbmRhYmxlLCBhcyBpdAppcyB1c2VmdWwsIG9m dGVuIG5lY2Vzc2FyeSwgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCByZWFzb25zIG9mCmZhaWx1cmVz LiBIb3dldmVyLCBpdCBjYW4gYWxzbyBoaWRlIHdhcm5pbmcgYW5kIGVycm9yIG1lc3NhZ2VzIGZy b20KQGNvbW1hbmR7bWFrZX0taW52b2tlZCB0b29scywgZHJvd25pbmcgdGhlbSBpbiB1bmludGVy ZXN0aW5nIGFuZApzZWxkb20gdXNlZnVsIG1lc3NhZ2VzLCBhbmQgdGh1cyBhbGxvd2luZyB0aGVt IHRvIGVhc2lseSBnbwp1bmRldGVjdGVkLgoKVGhpcyBjYW4gYmUgcXVpdGUgcHJvYmxlbWF0aWMs IGVzcGVjaWFsbHkgZm9yIGRldmVsb3BlcnMsIHdobyB1c3VhbGx5Cmtub3cgcXVpdGUgd2VsbCB3 aGF0J3MgZ29pbmcgb24gYmVoaW5kIHRoZSBzY2VuZXMsIGFuZCBmb3Igd2hvbSB0aGUKdmVyYm9z ZSBvdXRwdXQgZnJvbSBAY29tbWFuZHttYWtlfSBlbmRzIHVwIGJlaW5nIG1vc3RseSBub2lzZSB0 aGF0CmhhbXBlcnMgdGhlIGVhc3kgZGV0ZWN0aW9uIG9mIHBvdGVudGlhbGx5IGltcG9ydGFudCB3 YXJuaW5nIG1lc3NhZ2VzLgoKU28gQXV0b21ha2UgcHJvdmlkZXMgc29tZSBzdXBwb3J0IGZvciBz aWxlbmNpbmcgQGNvbW1hbmR7bWFrZX0uCgpAbm9kZSBUcmlja3MgRm9yIFNpbGVuY2luZyBNYWtl CkBzZWN0aW9uIFN0YW5kYXJkIGFuZCBnZW5lcmljIHdheXMgdG8gc2lsZW5jZSBNYWtlCgpIZXJl IHdlIGRlc2NyaWJlIHNvbWUgY29tbW9uIGlkaW9tcy90cmlja3MgdG8gb2J0YWluIGEgcXVpZXRl cgpAY29tbWFuZHttYWtlfSBvdXRwdXQsIHdpdGggdGhlaXIgcmVsYXRpdmUgYWR2YW50YWdlcyBh bmQgZHJhd2JhY2tzLgpJbiB0aGUgbmV4dCBzZWN0aW9uIChAcmVme0F1dG9tYWtlIFNpbGVudCBS dWxlc30pIHdlJ2xsIHNlZSBob3cKQXV0b21ha2UgY2FuIGhlbHAgaW4gdGhpcyByZXNwZWN0LCBw cm92aWRpbmcgbW9yZSBlbGFib3JhdGUgYW5kCmZsZXhpYmxlIGlkaW9tcy4KCkBpdGVtaXplIEBi dWxsZXQKCkBpdGVtIEBjb21tYW5ke21ha2UgLXN9CgpUaGlzIHNpbXBseSBjYXVzZXMgQGNvbW1h bmR7bWFrZX0gbm90IHRvIHByaW50IEBlbXBoe2FueX0gcnVsZSBiZWZvcmUKZXhlY3V0aW5nIGl0 LgoKVGhlIEBvcHRpb257LXN9IGZsYWcgaXMgbWFuZGF0ZWQgYnkgUE9TSVgsIHVuaXZlcnNhbGx5 IHN1cHBvcnRlZCwgYW5kCml0cyBwdXJwb3NlIGFuZCBmdW5jdGlvbiBhcmUgZWFzeSB0byB1bmRl cnN0YW5kLgoKQnV0IGl0IGFsc28gaGFzIHNlcmlvdXMgbGltaXRhdGlvbnMuICBGaXJzdCBvZiBh bGwsIGl0IGVtYm9kaWVzIGFuCmBgYWxsIG9yIG5vdGhpbmcnJyBzdHJhdGVneSwgaS5lLiwgZWl0 aGVyIGV2ZXJ5dGhpbmcgaXMgc2lsZW5jZWQsIG9yCm5vdGhpbmcgaXM7IGluIHByYWN0aWNlLCB0 aGlzIGxhY2sgb2YgZ3JhbnVsYXJpdHkgbWFrZXMgaXQgdW5zdWl0YWJsZQphcyBhIGdlbmVyYWwg c29sdXRpb24uICBXaGVuIHRoZSBAb3B0aW9uey1zfSBmbGFnIGlzIHVzZWQsIHRoZQpAY29tbWFu ZHttYWtlfSBvdXRwdXQgbWlnaHQgdHVybiBvdXQgdG8gYmUgdG9vIHRlcnNlOyBpbiBjYXNlIG9m CmVycm9ycywgdGhlIHVzZXIgd29uJ3QgYmUgYWJsZSB0byBlYXNpbHkgc2VlIHdoYXQgcnVsZSBv ciBjb21tYW5kIGhhdmUKY2F1c2VkIHRoZW0sIG9yIGV2ZW4sIGluIGNhc2Ugb2YgdG9vbHMgd2l0 aCBwb29yIGVycm9yIHJlcG9ydGluZywgd2hhdAp0aGUgZXJyb3JzIHdlcmUuCgpAaXRlbSBAY29t bWFuZHttYWtlID4vZGV2L251bGwgfHwgbWFrZX0KCkFwcGFyZW50bHksIHRoaXMgcGVyZmVjdGx5 IG9iZXlzIHRoZSBgYHNpbGVuY2UgaXMgZ29sZGVuJycgcnVsZTogd2FybmluZ3MKZnJvbSBzdGRl cnIgYXJlIHBhc3NlZCB0aHJvdWdoLCBvdXRwdXQgcmVwb3J0aW5nIGlzIGRvbmUgb25seSBpbiBj YXNlIG9mCmVycm9yLCBhbmQgaW4gdGhhdCBjYXNlIGl0IHNob3VsZCBwcm92aWRlIGEgdmVyYm9z ZS1lbm91Z2ggcmVwb3J0IHRvIGFsbG93CmFuIGVhc3kgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgZXJy b3IgbG9jYXRpb24gYW5kIGNhdXNlcy4KCkhvd2V2ZXIsIGNhbGxpbmcgQGNvbW1hbmR7bWFrZX0g dHdvIHRpbWVzIGluIGEgcm93IG1pZ2h0IGhpZGUgZXJyb3JzCihlc3BlY2lhbGx5IGludGVybWl0 dGVudCBvbmVzKSwgb3Igc3VidGx5IGNoYW5nZSB0aGUgZXhwZWN0ZWQKc2VtYW50aWNzIG9mIHRo ZSBAY29tbWFuZHttYWtlfSBjYWxscy0tLXRoZXNlIHRoaW5ncyBjYW4gY2xlYXJseSBtYWtlCmRl YnVnZ2luZyBhbmQgZXJyb3IgYXNzZXNzbWVudCB2ZXJ5IGRpZmZpY3VsdC4KCkBpdGVtIEBjb21t YW5ke21ha2UgLS1uby1wcmludC1kaXJlY3Rvcnl9CgpUaGlzIGlzIEdOVSBAY29tbWFuZHttYWtl fSBzcGVjaWZpYy4gIFdoZW4gY2FsbGVkIHdpdGggdGhlCkBvcHRpb257LS1uby1wcmludC1kaXJl Y3Rvcnl9IG9wdGlvbiwgR05VIEBjb21tYW5ke21ha2V9IHdpbGwgZGlzYWJsZQpwcmludGluZyBv ZiB0aGUgd29ya2luZyBkaXJlY3RvcnkgYnkgaW52b2tlZCBzdWItQGNvbW1hbmR7bWFrZX1zICh0 aGUKd2VsbC1rbm93biBgYEBpe0VudGVyaW5nL0xlYXZpbmcgZGlyZWN0b3J5IEBkb3Rze319Jycg bWVzc2FnZXMpLiAgVGhpcwpoZWxwcyB0byBkZWNyZWFzZSB0aGUgdmVyYm9zaXR5IG9mIHRoZSBv dXRwdXQsIGJ1dCBleHBlcmllbmNlIGhhcwpzaG93biB0aGF0IGl0IGNhbiBhbHNvIG9mdGVuIHJl bmRlciBkZWJ1Z2dpbmcgY29uc2lkZXJhYmx5IGhhcmRlciBpbgpwcm9qZWN0cyB1c2luZyBkZWVw bHktbmVzdGVkIEBjb21tYW5ke21ha2V9IHJlY3Vyc2lvbi4KCkFzIGFuIGFzaWRlLCB0aGUgQG9w dGlvbnstLW5vLXByaW50LWRpcmVjdG9yeX0gb3B0aW9uIGlzIGF1dG9tYXRpY2FsbHkKYWN0aXZh dGVkIGlmIHRoZSBAb3B0aW9uey1zfSBmbGFnIGlzIHVzZWQuCgpAYyBUT0RPOiBPdGhlciB0cmlj a3M/CkBjIFRPRE86IE1heWJlIHNwZWFrIGFib3V0IHRoZSBAY29kZXsuU0lMRU5UfSB0YXJnZXQ/ CkBjIFRPRE86ICAtIFByb3M6IE1vcmUgZ3JhbnVsYXJpdHkgb24gd2hhdCB0byBzaWxlbmNlLgpA YyBUT0RPOiAgLSBDb25zOiBObyBlYXN5IHdheSB0byB0ZW1wb3JhcmlseSBvdmVycmlkZS4KCkBl bmQgaXRlbWl6ZQoKQG5vZGUgQXV0b21ha2UgU2lsZW50IFJ1bGVzCkBzZWN0aW9uIEhvdyBBdXRv bWFrZSBjYW4gaGVscCBpbiBzaWxlbmNpbmcgTWFrZQoKVGhlIHRyaWNrcyBhbmQgaWRpb21zIGZv ciBzaWxlbmNpbmcgQGNvbW1hbmR7bWFrZX0gZGVzY3JpYmVkIGluIHRoZQpwcmV2aW91cyBzZWN0 aW9uIGNhbiBiZSB1c2VmdWwgZnJvbSB0aW1lIHRvIHRpbWUsIGJ1dCB3ZSd2ZSBzZWVuIHRoYXQK dGhleSBhbGwgaGF2ZSB0aGVpciBzZXJpb3VzIGRyYXdiYWNrcyBhbmQgbGltaXRhdGlvbnMuICBU aGF0J3Mgd2h5CmF1dG9tYWtlIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGEgbW9yZSBhZHZhbmNlZCBh bmQgZmxleGlibGUgd2F5IG9mCm9idGFpbmluZyBxdWlldGVyIG91dHB1dCBmcm9tIEBjb21tYW5k e21ha2V9IChmb3IgbW9zdCBydWxlcyBhdCBsZWFzdCkuCgpUbyBnaXZlIHRoZSBnaXN0IG9mIHdo YXQgQXV0b21ha2UgY2FuIGRvIGluIHRoaXMgcmVzcGVjdCwgaGVyZSBpcyBhIHNpbXBsZQpjb21w YXJpc29uIGJldHdlZW4gYSB0eXBpY2FsIEBjb21tYW5ke21ha2V9IG91dHB1dCAod2hlcmUgc2ls ZW50IHJ1bGVzCmFyZSBkaXNhYmxlZCkgYW5kIG9uZSB3aXRoIHNpbGVudCBydWxlcyBlbmFibGVk OgoKQGV4YW1wbGUKJSBAa2Jke2NhdCBNYWtlZmlsZS5hbX0KYmluX1BST0dSQU1TID0gZm9vCmZv b19TT1VSQ0VTID0gbWFpbi5jIGZ1bmMuYwolIEBrYmR7Y2F0IG1haW4uY30KaW50IG1haW4gKHZv aWQpIEB7IHJldHVybiBmdW5jICgpOyBAfSAgLyogZnVuYyB1c2VkIHVuZGVjbGFyZWQgKi8KJSBA a2Jke2NhdCBmdW5jLmN9CmludCBmdW5jICh2b2lkKSBAeyBpbnQgaTsgcmV0dXJuIGk7IEB9IC8q IGkgdXNlZCB1bmluaXRpYWxpemVkICovCgpAaXtUaGUgbWFrZSBvdXRwdXQgaXMgYnkgZGVmYXVs dCB2ZXJ5IHZlcmJvc2UuICBUaGlzIGNhdXNlcyB3YXJuaW5ncwpmcm9tIHRoZSBjb21waWxlciB0 byBiZSBzb21ld2hhdCBoaWRkZW4sIGFuZCBub3QgaW1tZWRpYXRlIHRvIHNwb3QufQolIEBrYmR7 bWFrZSBDRkxBR1M9LVdhbGx9CmdjYyAtRFBBQ0tBR0VfTkFNRT1cImZvb1wiIC1EUEFDS0FHRV9U QVJOQU1FPVwiZm9vXCIgLi4uCi1EUEFDS0FHRV9TVFJJTkc9XCJmb29cIDEuMFwiIC1EUEFDS0FH RV9CVUdSRVBPUlQ9XCJcIiAuLi4KLURQQUNLQUdFPVwiZm9vXCIgLURWRVJTSU9OPVwiMS4wXCIg LUkuIC1XYWxsIC1NVCBtYWluLm8KLU1EIC1NUCAtTUYgLmRlcHMvbWFpbi5UcG8gLWMgLW8gbWFp bi5vIG1haW4uYwptYWluLmM6IEluIGZ1bmN0aW9uIOKAmG1haW7igJk6Cm1haW4uYzozOjM6IHdh cm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIOKAmGZ1bmPigJkKbXYgLWYg LmRlcHMvbWFpbi5UcG8gLmRlcHMvbWFpbi5QbwpnY2MgLURQQUNLQUdFX05BTUU9XCJmb29cIiAt RFBBQ0tBR0VfVEFSTkFNRT1cImZvb1wiIC4uLgotRFBBQ0tBR0VfU1RSSU5HPVwiZm9vXCAxLjBc IiAtRFBBQ0tBR0VfQlVHUkVQT1JUPVwiXCIgLi4uCi1EUEFDS0FHRT1cImZvb1wiIC1EVkVSU0lP Tj1cIjEuMFwiIC1JLiAtV2FsbCAtTVQgZnVuYy5vCi1NRCAtTVAgLU1GIC5kZXBzL2Z1bmMuVHBv IC1jIC1vIGZ1bmMubyBmdW5jLmMKZnVuYy5jOiBJbiBmdW5jdGlvbiDigJhmdW5j4oCZOgpmdW5j LmM6NDozOiB3YXJuaW5nOiDigJhp4oCZIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0 aW9uCm12IC1mIC5kZXBzL2Z1bmMuVHBvIC5kZXBzL2Z1bmMuUG8KZ2NjIC1XYWxsIC1vIGZvbyBt YWluLm8gZnVuYy5vCgpAaXtDbGVhbiB1cCwgc28gdGhhdCB3ZSBjYW4gcmVidWlsZCBldmVyeXRo aW5nIGZyb20gc2NyYXRjaC59CiUgQGtiZHttYWtlIGNsZWFufQp0ZXN0IC16ICJmb28iIHx8IHJt IC1mIGZvbwpybSAtZiAqLm8KCkBpe1NpbGVudCBydWxlcyBlbmFibGVkOiB0aGUgb3V0cHV0IGlz IG1pbmltYWwgYnV0IGluZm9ybWF0aXZlLgpUaGUgd2FybmluZ3MgZnJvbSB0aGUgY29tcGlsZXIg c3RpY2sgb3V0IHZlcnkgY2xlYXJseS59CiUgQGtiZHttYWtlIFY9MCBDRkxBR1M9LVdhbGx9CiAg Q0MgICAgIG1haW4ubwptYWluLmM6IEluIGZ1bmN0aW9uIOKAmG1haW7igJk6Cm1haW4uYzozOjM6 IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIOKAmGZ1bmPigJkKICBD QyAgICAgZnVuYy5vCmZ1bmMuYzogSW4gZnVuY3Rpb24g4oCYZnVuY+KAmToKZnVuYy5jOjQ6Mzog d2FybmluZzog4oCYaeKAmSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgogIEND TEQgICBmb28KQGVuZCBleGFtcGxlCgpAY2luZGV4IHNpbGVudCBydWxlcyBhbmQgbGlidG9vbApB bHNvLCBpbiBwcm9qZWN0cyB1c2luZyBMaWJ0b29sLCB0aGUgdXNlIG9mIHNpbGVudCBydWxlcyBj YW4KYXV0b21hdGljYWxseSBlbmFibGUgQGNvbW1hbmR7bGlidG9vbH0ncyBAb3B0aW9uey0tc2ls ZW50fSBvcHRpb246CgpAZXhhbXBsZQolIEBrYmR7Y2F0IE1ha2VmaWxlLmFtfQpsaWJfTFRMSUJS QVJJRVMgPSBsaWJ4LmxhCgolIEBrYmR7bWFrZSAjIEJvdGggbWFrZSBhbmQgbGlidG9vbCBhcmUg dmVyYm9zZSBieSBkZWZhdWx0Ln0KLi4uCmxpYnRvb2w6IGNvbXBpbGU6IGdjYyAtRFBBQ0tBR0Vf TkFNRT1cImZvb1wiIC4uLiAtRExUX09CSkRJUj1cIi5saWJzL1wiCiAgLUkuIC1nIC1PMiAtTVQg bGlieC5sbyAtTUQgLU1QIC1NRiAuZGVwcy9saWJ4LlRwbyAtYyBsaWJ4LmMgLWZQSUMKICAtRFBJ QyAtbyAubGlicy9saWJ4Lm8KbXYgLWYgLmRlcHMvbGlieC5UcG8gLmRlcHMvbGlieC5QbG8KL2Jp bi9zaCAuL2xpYnRvb2wgLS10YWc9Q0MgLS1tb2RlPWxpbmsgZ2NjIC1nIC1PMiAtbyBsaWJ4Lmxh IC1ycGF0aAogIC91c3IvbG9jYWwvbGliIGxpYngubG8KbGlidG9vbDogbGluazogZ2NjIC1zaGFy ZWQgLmxpYnMvbGlieC5vIC1XbCwtc29uYW1lIC1XbCxsaWJ4LnNvLjAKICAtbyAubGlicy9saWJ4 LnNvLjAuMC4wCmxpYnRvb2w6IGxpbms6IGNkIC5saWJzICYmIHJtIC1mIGxpYnguc28gJiYgbG4g LXMgbGlieC5zby4wLjAuMCBsaWJ4LnNvCi4uLgoKJSBAa2Jke21ha2UgVj0wfQogIENDICAgICBs aWJ4LmxvCiAgQ0NMRCAgIGxpYngubGEKQGVuZCBleGFtcGxlCgpGb3IgQXV0b21ha2UtZ2VuZXJh dGVkIEBmaWxle01ha2VmaWxlfXMsIHRoZSB1c2VyIG1heSBpbmZsdWVuY2UgdGhlCnZlcmJvc2l0 eSBhdCBAY29tbWFuZHtjb25maWd1cmV9IHJ1biB0aW1lIGFzIHdlbGwgYXMgYXQgQGNvbW1hbmR7 bWFrZX0KcnVuIHRpbWU6CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkBvcGluZGV4IC0tZW5hYmxl LXNpbGVudC1ydWxlcwpAb3BpbmRleCAtLWRpc2FibGUtc2lsZW50LXJ1bGVzClBhc3NpbmcgQG9w dGlvbnstLWVuYWJsZS1zaWxlbnQtcnVsZXN9IHRvIEBjb21tYW5ke2NvbmZpZ3VyZX0gd2lsbCBj YXVzZQpidWlsZCBydWxlcyB0byBiZSBsZXNzIHZlcmJvc2U7IHRoZSBvcHRpb24gQG9wdGlvbnst LWRpc2FibGUtc2lsZW50LXJ1bGVzfQp3aWxsIGNhdXNlIG5vcm1hbCB2ZXJib3NlIG91dHB1dC4K CkBpdGVtCkB2aW5kZXggQGNvZGV7Vn0KQXQgQGNvbW1hbmR7bWFrZX0gcnVuIHRpbWUsIHRoZSBk ZWZhdWx0IGNob3NlbiBhdCBAY29tbWFuZHtjb25maWd1cmV9CnRpbWUgbWF5IGJlIG92ZXJyaWRk ZW46IEBjb2Rle21ha2UgVj0xfSB3aWxsIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQsCkBjb2Rle21h a2UgVj0wfSBsZXNzIHZlcmJvc2Ugb3V0cHV0LgoKVW5mb3J0dW5hdGVseSwgaWYgQGNvZGV7Vn0g aXMgYXNzaWduZWQgYSB2YWx1ZSBvdGhlciB0aGFuIDAgb3IgMSwKZXJyb3JzIHdpbGwgcmVzdWx0 LiAgVGhpcyBpcyBwcm9ibGVtYXRpYyB3aGVuIGEgdGhpcmQtcGFydHkgcHJvZ3JhbSBvcgpsaWJy YXJ5IGlzIGJ1aWx0IGluIHRoZSBzYW1lIHRyZWUgYW5kIGFsc28gdXNlcyB0aGUgbWFrZSB2YXJp YWJsZQpAY29kZXtWfSwgd2l0aCBkaWZmZXJlbnQgdmFsdWVzLiAgVGhlIGJlc3Qgd29ya2Fyb3Vu ZCBpcyBwcm9iYWJseSB0bwpzZXQgQGNvZGV7QU1fVl9QPXRydWV9IChvciBzaW1pbGFyKSwgZWl0 aGVyIG9uIHRoZSBtYWtlIGNvbW1hbmQgbGluZQpvciBpbiB0aGUgQGNvZGV7Vn0tdXNpbmcgcHJv amVjdCdzIEBjb2Rle01ha2VmaWxlLmFtfS4gIChGb3IgbW9yZQpkaXNjdXNzaW9uLCBzZWUgQHVy bHtodHRwczovL2J1Z3MuZ251Lm9yZy8yMDA3N30uKQpAZW5kIGl0ZW1pemUKCkBjaW5kZXggZGVm YXVsdCB2ZXJib3NpdHkgZm9yIHNpbGVudCBydWxlcwpTaWxlbnQgcnVsZXMgYXJlIEBlbXBoe2Rp c2FibGVkfSBieSBkZWZhdWx0OyB0aGUgdXNlciBtdXN0IGVuYWJsZSB0aGVtCmV4cGxpY2l0bHkg YXQgZWl0aGVyIEBjb21tYW5ke2NvbmZpZ3VyZX0gcnVuIHRpbWUgb3IgYXQgQGNvbW1hbmR7bWFr ZX0KcnVuIHRpbWUuICBXZSB0aGluayB0aGF0IHRoaXMgaXMgYSBnb29kIHBvbGljeSwgc2luY2Ug aXQgcHJvdmlkZXMgdGhlCmNhc3VhbCB1c2VyIHdpdGggZW5vdWdoIGluZm9ybWF0aW9uIHRvIHBy ZXBhcmUgYSBnb29kIGJ1ZyByZXBvcnQgaW4KY2FzZSBhbnl0aGluZyBicmVha3MuCgpOb3R3aXRo c3RhbmRpbmcgdGhvc2UgcmF0aW9uYWxlcywgZGV2ZWxvcGVycyB3aG8gd2FudCB0byBlbmFibGUg c2lsZW50CnJ1bGVzIGJ5IGRlZmF1bHQgaW4gdGhlaXIgb3duIHBhY2thZ2VzIGNhbiBkbyBzbyBi eSBjYWxsaW5nCkBjb2Rle0FNX1NJTEVOVF9SVUxFUyhbeWVzXSl9IGluIEBmaWxle2NvbmZpZ3Vy ZS5hY30uCgpAYyBLZWVwIGluIHN5bmMgd2l0aCBzaWxlbnQtY29uZmlnc2l0ZS5zaApBbmFsb2dv dXNseSwgdXNlcnMgd2hvIHByZWZlciB0byBoYXZlIHNpbGVudCBydWxlcyBlbmFibGVkIGJ5IGRl ZmF1bHQKZm9yIGV2ZXJ5dGhpbmcgb24gdGhlaXIgc3lzdGVtIGNhbiBlZGl0IHRoZWlyIEBmaWxl e2NvbmZpZy5zaXRlfSBmaWxlCnRvIG1ha2UgdGhlIHZhcmlhYmxlIEBjb2Rle2VuYWJsZV9zaWxl bnRfcnVsZXN9IGRlZmF1bHQgdG8gQHNhbXB7eWVzfS4KVGhpcyBzdGlsbCBhbGxvd3MgZGlzYWJs aW5nIHNpbGVudCBydWxlcyBhdCBAY29tbWFuZHtjb25maWd1cmV9IHRpbWUKYW5kIGF0IEBjb21t YW5ke21ha2V9IHRpbWUuCgpUbyB3b3JrIGJlc3QsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9u IG9mIHRoaXMgZmVhdHVyZSBub3JtYWxseSB1c2VzCm5lc3RlZCB2YXJpYWJsZSBleHBhbnNpb24g QHNhbXB7JChAdmFye3ZhcjF9JChWKSl9LCBhIEBmaWxle01ha2VmaWxlfQpmZWF0dXJlIHRoYXQg aXMgbm90IHJlcXVpcmVkIGJ5IFBPU0lYIDIwMDggYnV0IGlzIHdpZGVseSBzdXBwb3J0ZWQgaW4K cHJhY3RpY2UuICBPbiB0aGUgcmFyZSBAY29tbWFuZHttYWtlfSBpbXBsZW1lbnRhdGlvbnMgdGhh dCBkbyBub3QKc3VwcG9ydCBuZXN0ZWQgdmFyaWFibGUgZXhwYW5zaW9uLCB3aGV0aGVyIHJ1bGVz IGFyZSBzaWxlbnQgaXMgYWx3YXlzCmRldGVybWluZWQgYXQgY29uZmlndXJlIHRpbWUsIGFuZCBj YW5ub3QgYmUgb3ZlcnJpZGRlbiBhdCBtYWtlIHRpbWUuCkZ1dHVyZSB2ZXJzaW9ucyBvZiBQT1NJ WCBhcmUgbGlrZWx5IHRvIHJlcXVpcmUgbmVzdGVkIHZhcmlhYmxlCmV4cGFuc2lvbiwgc28gdGhp cyBtaW5vciBsaW1pdGF0aW9uIHNob3VsZCBnbyBhd2F5IHdpdGggdGltZS4KCkB2aW5kZXggQGNv ZGV7QU1fVl9HRU59CkB2aW5kZXggQGNvZGV7QU1fVl9hdH0KQHZpbmRleCBAY29kZXtBTV9ERUZB VUxUX1ZFUkJPU0lUWX0KQHZpbmRleCBAY29kZXtBTV9WfQpAdmluZGV4IEBjb2Rle0FNX0RFRkFV TFRfVn0KVG8gZXh0ZW5kIHRoZSBzaWxlbnQgbW9kZSB0byB5b3VyIG93biBydWxlcywgeW91IGhh dmUgYSBmZXcgY2hvaWNlczoKCkBpdGVtaXplIEBidWxsZXQKQGl0ZW0KWW91IGNhbiB1c2UgdGhl IHByZWRlZmluZWQgdmFyaWFibGUgQGNvZGV7QU1fVl9HRU59IGFzIGEgcHJlZml4IHRvCmNvbW1h bmRzIHRoYXQgc2hvdWxkIG91dHB1dCBhIHN0YXR1cyBsaW5lIGluIHNpbGVudCBtb2RlLCBhbmQK QGNvZGV7QU1fVl9hdH0gYXMgYSBwcmVmaXggdG8gY29tbWFuZHMgdGhhdCBzaG91bGQgbm90IG91 dHB1dCBhbnl0aGluZwppbiBzaWxlbnQgbW9kZS4gIFdoZW4gb3V0cHV0IGlzIHRvIGJlIHZlcmJv c2UsIGJvdGggb2YgdGhlc2UgdmFyaWFibGVzCndpbGwgZXhwYW5kIHRvIHRoZSBlbXB0eSBzdHJp bmcuCgpAaXRlbQpZb3UgY2FuIHNpbGVuY2UgYSByZWNpcGUgdW5jb25kaXRpb25hbGx5IHdpdGgg QGNvZGV7QEB9LCBhbmQgdGhlbiB1c2UKdGhlIHByZWRlZmluZWQgdmFyaWFibGUgQGNvZGV7QU1f Vl9QfSB0byBrbm93IHdoZXRoZXIgbWFrZSBpcyBiZWluZyBydW4KaW4gc2lsZW50IG9yIHZlcmJv c2UgbW9kZTsgYWRqdXN0IHRoZSB2ZXJib3NlIGluZm9ybWF0aW9uIHlvdXIgcmVjaXBlCmRpc3Bs YXlzIGFjY29yZGluZ2x5LiBGb3IgZXhhbXBsZToKCkBjIHNtYWxsZXhhbXBsZSBiZWNhdXNlIHRl eHQgaXMgdG9vIHdpZGUgZm9yIG5vcm1hbCBleGFtcGxlLgpAc21hbGxleGFtcGxlCmdlbmVyYXRl LWhlYWRlcnM6CiAgICAgICAgQEBzZXQgLWU7IFwKICAgICAgICAuLi4gW2NvbW1hbmRzIGRlZmlu aW5nIHNoZWxsIHZhcmlhYmxlICckaGVhZGVycyddIC4uLjsgXAogICAgICAgIGlmICQoQU1fVl9Q KTsgdGhlbiBzZXQgLXg7IGVsc2UgZWNobyAiIEdFTiAgIFtoZWFkZXJzXSI7IGZpOyBcCiAgICAg ICAgcm0gLWYgJCRoZWFkZXJzICYmIGdlbmVyYXRlLWhlYWRlciAtLWZsYWdzICQkaGVhZGVycwpA ZW5kIHNtYWxsZXhhbXBsZQoKQGNvZGV7QU1fVl9QfSBpcyAobXVzdCBiZSkgYWx3YXlzIHNldCB0 byBhIHNpbXBsZSBjb21tYW5kLCBub3QgbmVlZGluZwpzaGVsbCBxdW90aW5nLCB0eXBpY2FsbHkg ZWl0aGVyIEBjb2Rlezp9IG9yIEBjb2Rle3RydWV9IG9yCkBjb2Rle2ZhbHNlfS4KCkBpdGVtCllv dSBjYW4gYWRkIHlvdXIgb3duIHZhcmlhYmxlcywgc28gc3RyaW5ncyBvZiB5b3VyIG93biBjaG9p Y2UgYXJlIHNob3duLgpUaGUgZm9sbG93aW5nIHNuaXBwZXQgc2hvd3MgaG93IHlvdSB3b3VsZCBk ZWZpbmUgeW91ciBvd24gZXF1aXZhbGVudCBvZgpAY29kZXtBTV9WX0dFTn0sIHNheSBhIHN0cmlu ZyBAc2FtcHtQS0ctR0VOfToKCkBjIHNtYWxsZXhhbXBsZSBiZWNhdXNlIHJlZ3VsYXIgZXhhbXBs ZSB3b3VsZCBsb29rIHdlaXJkCkBjIG5leHQgdG8gdGhlIHNtYWxsZXhhbXBsZSBhYm92ZS4KQHNt YWxsZXhhbXBsZQpwa2dfdmVyYm9zZSA9ICQocGtnX3ZlcmJvc2VfQEBBTV9WQEApCnBrZ192ZXJi b3NlXyA9ICQocGtnX3ZlcmJvc2VfQEBBTV9ERUZBVUxUX1ZAQCkKcGtnX3ZlcmJvc2VfMCA9IEBA ZWNobyBQS0ctR0VOICRAQDsKCmZvbzogZm9vLmluCiAgICAgICAgJChwa2dfdmVyYm9zZSljcCAk KHNyY2RpcikvZm9vLmluICRAQApAZW5kIHNtYWxsZXhhbXBsZQoKQGVuZCBpdGVtaXplCgpFdmVu IHdoZW4gc2lsZW50IHJ1bGVzIGFyZSBlbmFibGVkLCB0aGUgQG9wdGlvbnstLW5vLXByaW50LWRp cmVjdG9yeX0Kb3B0aW9uIGlzIHN0aWxsIHJlcXVpcmVkIHdpdGggR05VIEBjb21tYW5ke21ha2V9 IGlmIHRoZQpgYEBpe0VudGVyaW5nL0xlYXZpbmcgZGlyZWN0b3J5IEBkb3Rze319JycgbWVzc2Fn ZXMgYXJlIHRvIGJlIGVsaWRlZC4KCkBub2RlIFVuc2lsZW5jaW5nIEF1dG9tYWtlCkBzZWN0aW9u IFVuc2lsZW5jaW5nIEF1dG9tYWtlCgpAY2luZGV4IHVuc2lsZW5jaW5nIEF1dG9tYWtlCkBjaW5k ZXggdmVyYm9zZSBvdXRwdXQgZnJvbSBBdXRvbWFrZQoKV2l0aCB0aGUgQGNvZGV7QU1fU0lMRU5U X1JVTEVTfSBtYWNybyBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzCnNlY3Rpb24sIEF1dG9tYWtl IGRvZXMgYSBnb29kIGpvYiByZWR1Y2luZyBAY29tbWFuZHttYWtlfSBvdXRwdXQgdG8gYQpiYXJl IG1pbmltdW0uICBTb21ldGltZXMgeW91IHdhbnQgdG8gc2VlIG1vcmUgdGhhbiB0aGF0LCBlc3Bl Y2lhbGx5CndoZW4gZGVidWdnaW5nLiAgTGV0J3Mgc3VtbWFyaXplIHdheXMgdG8gZ2V0IG1vcmUg aW5mb3JtYXRpb24gb3V0IG9mCkF1dG9tYWtlIHBhY2thZ2VzOgoKQGl0ZW1pemUKQGl0ZW0KUnVu bmluZyBAY29kZXttYWtlIFY9MX0gd2lsbCBwcm9kdWNlIGdlbmVyYWxseSB2ZXJib3NlIG91dHB1 dC4KCkBpdGVtCkFkZGluZyBAY29kZXtBTV9WX0dFTj0gQU1fVl9hdD19IHdpbGwgdW5zaWxlbmNl IG1vcmUgcnVsZXMuIFRodXMsIGluIGFsbDoKQGNvZGV7bWFrZSBWPTEgQU1fVl9HRU49IEFNX1Zf YXQ9fS4KCkBjIFZFUkJPU0U9MSBpcyAoaGlnaGx5KSByZWxldmFudCB0byB0aGUgQXV0b21ha2Ug dGVzdCBzdWl0ZSwKQGMgYnV0IG5vdCBpbiBnZW5lcmFsLCBzbyBzaG91bGRuJ3QgYmUgbWVudGlv bmVkIGhlcmUuIFNlZSBhdXRvbWFrZS9IQUNLSU5HLgpAYyBpdGVtCkBjIEFkZGluZyBAY29kZXtW RVJCT1NFPTF9IGNhbiB1bnNpbGVuY2UgeWV0IG1vcmUuIFRodXMsIGluIGFsbDoKQGMgb2Rle21h a2UgVj0xIEFNX1ZfR0VOPSBBTV9WX2F0PSBWRVJCT1NFPTF9LgoKQGl0ZW0KRXZlbiB0aGlzIHdp bGwgbm90IHVuc2lsZW5jZSBldmVyeXRoaW5nLiBUbyBzZWUgdGhlIHJlYWwgdHJ1dGggb2Ygd2hh dApnZXRzIGV4ZWN1dGVkLCByZXNvcnQgdG8gR05VIE1ha2UncyBkZWJ1Z2dpbmcgZmVhdHVyZTog QGNvZGV7bWFrZQotLWRlYnVnPXAgLi4uIEB2YXJ7b3RoZXJhcmdzfSAuLi59LiAgVGhpcyByZXBv cnRzIGV2ZXJ5IGNvbW1hbmQgYmVpbmcKcnVuLCBpZ25vcmluZyB0aGUgQGNvZGV7QEB9IHByZWZp eCBvbiBydWxlcyAod2hpY2ggaXMgd2hhdCBzaWxlbmNlcwp0aGVtKS4gIEluIHRoZSBjYXNlIG9m IEF1dG9tYWtlLCB0aGVzZSBjb21tYW5kcyBhcmUgZ2VuZXJhbGx5IGNvbXBsZXgKc2hlbGwgY29u c3RydWN0cywgYW5kIHlvdSdsbCB3YW50IHRvIHRyYWNrIGRvd24gdGhlIHNvdXJjZSBmaWxlcyBp bgpBdXRvbWFrZSB0byBhY3R1YWxseSB1bmRlcnN0YW5kIHRoZW07IGJ1dCBhdCBsZWFzdCB5b3Un bGwgaGF2ZSB0aGUKdGV4dCB0byBzZWFyY2ggZm9yLiAgWW91IG1heSB3aXNoIHRvIGluY2x1ZGUg b3RoZXIgZGVidWdnaW5nIG9wdGlvbnMuCkB4cmVme09wdGlvbnMgU3VtbWFyeSwsLG1ha2UsIFRo ZSBHTlUgTWFrZSBNYW51YWx9LgoKQGVuZCBpdGVtaXplCgpAbm9kZSBOb3QgRW5vdWdoCkBjaGFw dGVyIFdoZW4gQXV0b21ha2UgSXNuJ3QgRW5vdWdoCgpJbiBzb21lIHNpdHVhdGlvbnMsIHdoZXJl IEF1dG9tYWtlIGlzIG5vdCB1cCB0byBvbmUgdGFzaywgb25lIGhhcyB0bwpyZXNvcnQgdG8gaGFu ZHdyaXR0ZW4gcnVsZXMgb3IgZXZlbiBoYW5kd3JpdHRlbiBAZmlsZXtNYWtlZmlsZX1zLgoKQG1l bnUKKiBFeHRlbmRpbmc6OiAgICAgICAgICAgICAgICAgICBBZGRpbmcgbmV3IHJ1bGVzIG9yIG92 ZXJyaWRpbmcgZXhpc3Rpbmcgb25lcy4KKiBUaGlyZC1QYXJ0eSBNYWtlZmlsZXM6OiAgICAgICBJ bnRlZ3JhdGluZyBOb24tQXV0b21ha2UgQGZpbGV7TWFrZWZpbGV9cy4KQGVuZCBtZW51CgpAbm9k ZSBFeHRlbmRpbmcKQHNlY3Rpb24gRXh0ZW5kaW5nIEF1dG9tYWtlIFJ1bGVzCgpXaXRoIHNvbWUg bWlub3IgZXhjZXB0aW9ucyAoZm9yIGV4YW1wbGUgQGNvZGV7X1BST0dSQU1TfSB2YXJpYWJsZXMs CkBjb2Rle1RFU1RTfSwgb3IgQGNvZGV7WEZBSUxfVEVTVFN9KSBiZWluZyByZXdyaXR0ZW4gdG8g YXBwZW5kCkBzYW1weyQoRVhFRVhUKX0pLCB0aGUgY29udGVudHMgb2YgYSBAZmlsZXtNYWtlZmls ZS5hbX0gaXMgY29waWVkIHRvCkBmaWxle01ha2VmaWxlLmlufSB2ZXJiYXRpbS4KCkBjaW5kZXgg Y29weWluZyBzZW1hbnRpY3MKClRoZXNlIGNvcHlpbmcgc2VtYW50aWNzIG1lYW4gdGhhdCBtYW55 IHByb2JsZW1zIGNhbiBiZSB3b3JrZWQgYXJvdW5kCmJ5IHNpbXBseSBhZGRpbmcgc29tZSBAY29t bWFuZHttYWtlfSB2YXJpYWJsZXMgYW5kIHJ1bGVzIHRvCkBmaWxle01ha2VmaWxlLmFtfS4gIEF1 dG9tYWtlIHdpbGwgaWdub3JlIHRoZXNlIGFkZGl0aW9ucy4KCkBjaW5kZXggY29uZmxpY3Rpbmcg ZGVmaW5pdGlvbnMKQGNpbmRleCBydWxlcywgY29uZmxpY3RpbmcKQGNpbmRleCB2YXJpYWJsZXMs IGNvbmZsaWN0aW5nCkBjaW5kZXggZGVmaW5pdGlvbnMsIGNvbmZsaWN0cwoKU2luY2UgYSBAZmls ZXtNYWtlZmlsZS5pbn0gaXMgYnVpbHQgZnJvbSBkYXRhIGdhdGhlcmVkIGZyb20gdGhyZWUKZGlm ZmVyZW50IHBsYWNlcyAoQGZpbGV7TWFrZWZpbGUuYW19LCBAZmlsZXtjb25maWd1cmUuYWN9LCBh bmQKQGNvbW1hbmR7YXV0b21ha2V9IGl0c2VsZiksIGl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgY29u ZmxpY3RpbmcKZGVmaW5pdGlvbnMgb2YgcnVsZXMgb3IgdmFyaWFibGVzLiAgV2hlbiBidWlsZGlu ZyBAZmlsZXtNYWtlZmlsZS5pbn0KdGhlIGZvbGxvd2luZyBwcmlvcml0aWVzIGFyZSByZXNwZWN0 ZWQgYnkgQGNvbW1hbmR7YXV0b21ha2V9IHRvIGVuc3VyZQp0aGUgdXNlciBhbHdheXMgaGFzIHRo ZSBsYXN0IHdvcmQ6CgpAaXRlbWl6ZQpAaXRlbQpVc2VyIGRlZmluZWQgdmFyaWFibGVzIGluIEBm aWxle01ha2VmaWxlLmFtfSBoYXZlIHByaW9yaXR5IG92ZXIKdmFyaWFibGVzIEBjb2Rle0FDX1NV QlNUfWVkIGZyb20gQGZpbGV7Y29uZmlndXJlLmFjfSwgYW5kCkBjb2Rle0FDX1NVQlNUfWVkIHZh cmlhYmxlcyBoYXZlIHByaW9yaXR5IG92ZXIKQGNvbW1hbmR7YXV0b21ha2V9LWRlZmluZWQgdmFy aWFibGVzLgpAaXRlbQpBcyBmYXIgYXMgcnVsZXMgYXJlIGNvbmNlcm5lZCwgYSB1c2VyLWRlZmlu ZWQgcnVsZSBvdmVycmlkZXMgYW55CkBjb21tYW5ke2F1dG9tYWtlfS1kZWZpbmVkIHJ1bGUgZm9y IHRoZSBzYW1lIHRhcmdldC4KQGVuZCBpdGVtaXplCgpAY2luZGV4IG92ZXJyaWRpbmcgcnVsZXMK QGNpbmRleCBvdmVycmlkaW5nIHNlbWFudGljcwpAY2luZGV4IHJ1bGVzLCBvdmVycmlkaW5nCgpU aGVzZSBvdmVycmlkaW5nIHNlbWFudGljcyBtYWtlIGl0IHBvc3NpYmxlIHRvIGZpbmUgdHVuZSBz b21lIGRlZmF1bHQKc2V0dGluZ3Mgb2YgQXV0b21ha2UsIG9yIHJlcGxhY2Ugc29tZSBvZiBpdHMg cnVsZXMuICBPdmVycmlkaW5nCkF1dG9tYWtlIHJ1bGVzIGlzIG9mdGVuIGluYWR2aXNhYmxlLCBw YXJ0aWN1bGFybHkgaW4gdGhlIHRvcG1vc3QKZGlyZWN0b3J5IG9mIGEgcGFja2FnZSB3aXRoIHN1 YmRpcmVjdG9yaWVzLiAgVGhlIEBvcHRpb257LVdvdmVycmlkZX0Kb3B0aW9uIChAcHhyZWZ7YXV0 b21ha2UgSW52b2NhdGlvbn0pIGNvbWVzIGluIGhhbmR5IHRvIGNhdGNoIG92ZXJyaWRkZW4KZGVm aW5pdGlvbnMuCgpOb3RlIHRoYXQgQXV0b21ha2UgZG9lcyBub3QgbWFrZSBhbnkgZGlzdGluY3Rp b24gYmV0d2VlbiBydWxlcyB3aXRoCmNvbW1hbmRzIGFuZCBydWxlcyB0aGF0IG9ubHkgc3BlY2lm eSBkZXBlbmRlbmNpZXMuICBTbyBpdCBpcyBub3QKcG9zc2libGUgdG8gYXBwZW5kIG5ldyBkZXBl bmRlbmNpZXMgdG8gYW4gQGNvbW1hbmR7YXV0b21ha2V9LWRlZmluZWQKdGFyZ2V0IHdpdGhvdXQg cmVkZWZpbmluZyB0aGUgZW50aXJlIHJ1bGUuCgpAY2luZGV4IEBvcHRpb257LWxvY2FsfSB0YXJn ZXRzCkBjaW5kZXggbG9jYWwgdGFyZ2V0cwoKSG93ZXZlciwgdmFyaW91cyB1c2VmdWwgdGFyZ2V0 cyBoYXZlIGEgQHNhbXB7LWxvY2FsfSB2ZXJzaW9uIHlvdSBjYW4Kc3BlY2lmeSBpbiB5b3VyIEBm aWxle01ha2VmaWxlLmFtfS4gIEF1dG9tYWtlIHdpbGwgc3VwcGxlbWVudCB0aGUKc3RhbmRhcmQg dGFyZ2V0IHdpdGggdGhlc2UgdXNlci1zdXBwbGllZCB0YXJnZXRzLgoKQHRyaW5kZXggIGFsbApA dHJpbmRleCAgYWxsLWxvY2FsCkB0cmluZGV4ICBpbmZvCkB0cmluZGV4ICBpbmZvLWxvY2FsCkB0 cmluZGV4ICBkdmkKQHRyaW5kZXggIGR2aS1sb2NhbApAdHJpbmRleCAgcHMKQHRyaW5kZXggIHBz LWxvY2FsCkB0cmluZGV4ICBwZGYKQHRyaW5kZXggIHBkZi1sb2NhbApAdHJpbmRleCAgaHRtbApA dHJpbmRleCAgaHRtbC1sb2NhbApAdHJpbmRleCAgY2hlY2sKQHRyaW5kZXggIGNoZWNrLWxvY2Fs CkB0cmluZGV4ICBpbnN0YWxsCkB0cmluZGV4ICBpbnN0YWxsLWRhdGEKQHRyaW5kZXggIGluc3Rh bGwtZGF0YS1sb2NhbApAdHJpbmRleCAgaW5zdGFsbC1kdmkKQHRyaW5kZXggIGluc3RhbGwtZHZp LWxvY2FsCkB0cmluZGV4ICBpbnN0YWxsLWV4ZWMKQHRyaW5kZXggIGluc3RhbGwtZXhlYy1sb2Nh bApAdHJpbmRleCAgaW5zdGFsbC1odG1sCkB0cmluZGV4ICBpbnN0YWxsLWh0bWwtbG9jYWwKQHRy aW5kZXggIGluc3RhbGwtaW5mbwpAdHJpbmRleCAgaW5zdGFsbC1pbmZvLWxvY2FsCkB0cmluZGV4 ICBpbnN0YWxsLXBkZgpAdHJpbmRleCAgaW5zdGFsbC1wZGYtbG9jYWwKQHRyaW5kZXggIGluc3Rh bGwtcHMKQHRyaW5kZXggIGluc3RhbGwtcHMtbG9jYWwKQHRyaW5kZXggIHVuaW5zdGFsbApAdHJp bmRleCAgdW5pbnN0YWxsLWxvY2FsCkB0cmluZGV4ICBtb3N0bHljbGVhbgpAdHJpbmRleCAgbW9z dGx5Y2xlYW4tbG9jYWwKQHRyaW5kZXggIGNsZWFuCkB0cmluZGV4ICBjbGVhbi1sb2NhbApAdHJp bmRleCAgZGlzdGNsZWFuCkB0cmluZGV4ICBkaXN0Y2xlYW4tbG9jYWwKQHRyaW5kZXggIGluc3Rh bGxkaXJzCkB0cmluZGV4ICBpbnN0YWxsZGlycy1sb2NhbApAdHJpbmRleCAgaW5zdGFsbGNoZWNr CkB0cmluZGV4ICBpbnN0YWxsY2hlY2stbG9jYWwKClRoZSB0YXJnZXRzIHRoYXQgc3VwcG9ydCBh IGxvY2FsIHZlcnNpb24gYXJlIEBjb2Rle2FsbH0sIEBjb2Rle2luZm99LApAY29kZXtkdml9LCBA Y29kZXtwc30sIEBjb2Rle3BkZn0sIEBjb2Rle2h0bWx9LCBAY29kZXtjaGVja30sCkBjb2Rle2lu c3RhbGwtZGF0YX0sIEBjb2Rle2luc3RhbGwtZHZpfSwgQGNvZGV7aW5zdGFsbC1leGVjfSwKQGNv ZGV7aW5zdGFsbC1odG1sfSwgQGNvZGV7aW5zdGFsbC1pbmZvfSwgQGNvZGV7aW5zdGFsbC1wZGZ9 LApAY29kZXtpbnN0YWxsLXBzfSwgQGNvZGV7dW5pbnN0YWxsfSwgQGNvZGV7aW5zdGFsbGRpcnN9 LApAY29kZXtpbnN0YWxsY2hlY2t9IGFuZCB0aGUgdmFyaW91cyBAY29kZXtjbGVhbn0gdGFyZ2V0 cwooQGNvZGV7bW9zdGx5Y2xlYW59LCBAY29kZXtjbGVhbn0sIEBjb2Rle2Rpc3RjbGVhbn0sIGFu ZApAY29kZXttYWludGFpbmVyLWNsZWFufSkuCgpOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIEBjb2Rl e3VuaW5zdGFsbC1leGVjLWxvY2FsfSBvcgpAY29kZXt1bmluc3RhbGwtZGF0YS1sb2NhbH0gdGFy Z2V0czsganVzdCB1c2UgQGNvZGV7dW5pbnN0YWxsLWxvY2FsfS4KSXQgZG9lc24ndCBtYWtlIHNl bnNlIHRvIHVuaW5zdGFsbCBqdXN0IGRhdGEgb3IganVzdCBleGVjdXRhYmxlcy4KCkZvciBpbnN0 YW5jZSwgaGVyZSBpcyBvbmUgd2F5IHRvIGVyYXNlIGEgc3ViZGlyZWN0b3J5IGR1cmluZwpAc2Ft cHttYWtlIGNsZWFufSAoQHB4cmVme0NsZWFufSkuCgpAZXhhbXBsZQpjbGVhbi1sb2NhbDoKICAg ICAgICAtcm0gLXJmIHRlc3RTdWJEaXIKQGVuZCBleGFtcGxlCgpZb3UgbWF5IGJlIHRlbXB0ZWQg dG8gdXNlIEBjb2Rle2luc3RhbGwtZGF0YS1sb2NhbH0gdG8gaW5zdGFsbCBhIGZpbGUKdG8gc29t ZSBoYXJkLWNvZGVkIGxvY2F0aW9uLCBidXQgeW91IHNob3VsZCBhdm9pZCB0aGlzCihAcHhyZWZ7 SGFyZC1Db2RlZCBJbnN0YWxsIFBhdGhzfSkuCgpXaXRoIHRoZSBAY29kZXstbG9jYWx9IHRhcmdl dHMsIHRoZXJlIGlzIG5vIHBhcnRpY3VsYXIgZ3VhcmFudGVlIG9mCmV4ZWN1dGlvbiBvcmRlcjsg dHlwaWNhbGx5LCB0aGV5IGFyZSBydW4gZWFybHksIGJ1dCB3aXRoIHBhcmFsbGVsCm1ha2UsIHRo ZXJlIGlzIG5vIHdheSB0byBiZSBzdXJlIG9mIHRoYXQuCgpAY2luZGV4IEBvcHRpb257LWhvb2t9 IHRhcmdldHMKQGNpbmRleCBob29rIHRhcmdldHMKQHRyaW5kZXggaW5zdGFsbC1kYXRhLWhvb2sK QHRyaW5kZXggaW5zdGFsbC1leGVjLWhvb2sKQHRyaW5kZXggdW5pbnN0YWxsLWhvb2sKQHRyaW5k ZXggZGlzdC1ob29rCgpJbiBjb250cmFzdCwgc29tZSBydWxlcyBhbHNvIGhhdmUgYSB3YXkgdG8g cnVuIGFub3RoZXIgcnVsZSwgY2FsbGVkIGEKQGRmbntob29rfTsgaG9va3MgYXJlIGFsd2F5cyBl eGVjdXRlZCBhZnRlciB0aGUgbWFpbiBydWxlJ3Mgd29yayBpcyBkb25lLgpUaGUgaG9vayBpcyBu YW1lZCBhZnRlciB0aGUgcHJpbmNpcGFsIHRhcmdldCwgd2l0aCBAc2FtcHstaG9va30gYXBwZW5k ZWQuClRoZSB0YXJnZXRzIGFsbG93aW5nIGhvb2tzIGFyZSBAY29kZXtpbnN0YWxsLWRhdGF9LApA Y29kZXtpbnN0YWxsLWV4ZWN9LCBAY29kZXt1bmluc3RhbGx9LCBAY29kZXtkaXN0fSwgYW5kCkBj b2Rle2Rpc3RjaGVja30uCgpGb3IgaW5zdGFuY2UsIGhlcmUgaXMgaG93IHRvIGNyZWF0ZSBhIGhh cmQgbGluayB0byBhbiBpbnN0YWxsZWQgcHJvZ3JhbToKCkBleGFtcGxlCmluc3RhbGwtZXhlYy1o b29rOgogICAgICAgIGxuICQoREVTVERJUikkKGJpbmRpcikvcHJvZ3JhbSQoRVhFRVhUKSBcCiAg ICAgICAgICAgJChERVNURElSKSQoYmluZGlyKS9wcm9nbGluayQoRVhFRVhUKQpAZW5kIGV4YW1w bGUKCkFsdGhvdWdoIGNoZWFwZXIgYW5kIG1vcmUgcG9ydGFibGUgdGhhbiBzeW1ib2xpYyBsaW5r cywgaGFyZCBsaW5rcwp3aWxsIG5vdCB3b3JrIGV2ZXJ5d2hlcmUgKGZvciBpbnN0YW5jZSwgT1Mv MiBkb2VzIG5vdCBoYXZlCkBjb21tYW5ke2xufSkuICBJZGVhbGx5IHlvdSBzaG91bGQgZmFsbCBi YWNrIHRvIEBzYW1we2NwIC1wfSB3aGVuCkBjb21tYW5ke2xufSBkb2VzIG5vdCB3b3JrLiAgQW4g ZWFzeSB3YXksIGlmIHN5bWJvbGljIGxpbmtzIGFyZQphY2NlcHRhYmxlIHRvIHlvdSwgaXMgdG8g YWRkIEBjb2Rle0FDX1BST0dfTE5fU30gdG8KQGZpbGV7Y29uZmlndXJlLmFjfSAoQHB4cmVme1Bh cnRpY3VsYXIgUHJvZ3JhbXMsICwgUGFydGljdWxhciBQcm9ncmFtCkNoZWNrcywgYXV0b2NvbmYs IFRoZSBBdXRvY29uZiBNYW51YWx9KSBhbmQgdXNlIEBzYW1weyQoTE5fUyl9IGluCkBmaWxle01h a2VmaWxlLmFtfS4KCkBjaW5kZXggdmVyc2lvbmVkIGJpbmFyaWVzLCBpbnN0YWxsaW5nCkBjaW5k ZXggaW5zdGFsbGluZyB2ZXJzaW9uZWQgYmluYXJpZXMKQGNpbmRleCBAY29kZXtMTl9TfSBleGFt cGxlCkZvciBpbnN0YW5jZSwgaGVyZSBpcyBob3cgeW91IGNvdWxkIGluc3RhbGwgYSB2ZXJzaW9u ZWQgY29weSBvZiBhCnByb2dyYW0gdXNpbmcgQHNhbXB7JChMTl9TKX06CgpAYyBLZWVwIGluIHN5 bmMgd2l0aCBpbnN0aG9vay5zaApAZXhhbXBsZQppbnN0YWxsLWV4ZWMtaG9vazoKICAgICAgICBj ZCAkKERFU1RESVIpJChiaW5kaXIpICYmIFwKICAgICAgICAgIG12IC1mIHByb2ckKEVYRUVYVCkg cHJvZy0kKFZFUlNJT04pJChFWEVFWFQpICYmIFwKICAgICAgICAgICQoTE5fUykgcHJvZy0kKFZF UlNJT04pJChFWEVFWFQpIHByb2ckKEVYRUVYVCkKQGVuZCBleGFtcGxlCgpOb3RlIHRoYXQgd2Ug cmVuYW1lIHRoZSBwcm9ncmFtIHNvIHRoYXQgYSBuZXcgdmVyc2lvbiB3aWxsIGVyYXNlIHRoZQpz eW1ib2xpYyBsaW5rLCBub3QgdGhlIHJlYWwgYmluYXJ5LiAgQWxzbyB3ZSBAY29tbWFuZHtjZH0g aW50byB0aGUKZGVzdGluYXRpb24gZGlyZWN0b3J5IGluIG9yZGVyIHRvIGNyZWF0ZSByZWxhdGl2 ZSBsaW5rcy4KCldoZW4gd3JpdGluZyBAY29kZXtpbnN0YWxsLWV4ZWMtaG9va30gb3IgQGNvZGV7 aW5zdGFsbC1kYXRhLWhvb2t9LApwbGVhc2UgYmVhciBpbiBtaW5kIHRoYXQgdGhlIGV4ZWMvZGF0 YSBkaXN0aW5jdGlvbiBpcyBiYXNlZCBvbiB0aGUKaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSwgbm90 IG9uIHRoZSBwcmltYXJ5IHVzZWQgKEBweHJlZntUaGUgVHdvIFBhcnRzIG9mCkluc3RhbGx9KS4K QGMgS2VlcCBpbiBzeW5jIHdpdGggcHJpbWFyeS1wcmVmaXgtY291cGxlcy1kb2N1bWVudGVkLXZh bGlkLnNoClNvIGEgQGNvZGV7Zm9vX1NDUklQVFN9IHdpbGwgYmUgaW5zdGFsbGVkIGJ5CkBjb2Rl e2luc3RhbGwtZGF0YX0sIGFuZCBhIEBjb2Rle2JhcmV4ZWNfU0NSSVBUU30gd2lsbCBiZSBpbnN0 YWxsZWQgYnkKQGNvZGV7aW5zdGFsbC1leGVjfS4gIFlvdSBzaG91bGQgZGVmaW5lIHlvdXIgaG9v a3MgYWNjb3JkaW5nbHkuCgpAYyBGSVhNRSBzaG91bGQgaW5jbHVkZSBkaXNjdXNzaW9uIG9mIHZh cmlhYmxlcyB5b3UgY2FuIHVzZSBpbiB0aGVzZQpAYyBydWxlcwoKQG5vZGUgVGhpcmQtUGFydHkg TWFrZWZpbGVzCkBzZWN0aW9uIFRoaXJkLVBhcnR5IEBmaWxle01ha2VmaWxlfXMKCkBjaW5kZXgg VGhpcmQtcGFydHkgcGFja2FnZXMsIGludGVyZmFjaW5nIHdpdGgKQGNpbmRleCBJbnRlcmZhY2lu ZyB3aXRoIHRoaXJkLXBhcnR5IHBhY2thZ2VzCgpJbiBtb3N0IHByb2plY3RzIGFsbCBAZmlsZXtN YWtlZmlsZX1zIGFyZSBnZW5lcmF0ZWQgYnkgQXV0b21ha2UuICBJbgpzb21lIGNhc2VzLCBob3dl dmVyLCBwcm9qZWN0cyBuZWVkIHRvIGVtYmVkIHN1YmRpcmVjdG9yaWVzIHdpdGgKaGFuZHdyaXR0 ZW4gQGZpbGV7TWFrZWZpbGV9cy4gIEZvciBpbnN0YW5jZSwgb25lIHN1YmRpcmVjdG9yeSBjb3Vs ZCBiZQphIHRoaXJkLXBhcnR5IHByb2plY3Qgd2l0aCBpdHMgb3duIGJ1aWxkIHN5c3RlbSwgbm90 IHVzaW5nIEF1dG9tYWtlLgoKSXQgaXMgcG9zc2libGUgdG8gbGlzdCBhcmJpdHJhcnkgZGlyZWN0 b3JpZXMgaW4gQGNvZGV7U1VCRElSU30gb3IKQGNvZGV7RElTVF9TVUJESVJTfSBwcm92aWRlZCBl YWNoIG9mIHRoZXNlIGRpcmVjdG9yaWVzIGhhcyBhCkBmaWxle01ha2VmaWxlfSB0aGF0IHJlY29n bml6ZXMgYWxsIHRoZSBmb2xsb3dpbmcgcmVjdXJzaXZlIHRhcmdldHMuCgpAY2luZGV4IHJlY3Vy c2l2ZSB0YXJnZXRzIGFuZCB0aGlyZC1wYXJ0eSBAZmlsZXtNYWtlZmlsZX1zCldoZW4gYSB1c2Vy IHJ1bnMgb25lIG9mIHRoZXNlIHRhcmdldHMsIHRoYXQgdGFyZ2V0IGlzIHJ1biByZWN1cnNpdmVs eQppbiBhbGwgc3ViZGlyZWN0b3JpZXMuICBUaGlzIGlzIHdoeSBpdCBpcyBpbXBvcnRhbnQgdGhh dCBldmVuCnRoaXJkLXBhcnR5IEBmaWxle01ha2VmaWxlfXMgc3VwcG9ydCB0aGVtLgoKQHRhYmxl IEBjb2RlCkBpdGVtIGFsbApDb21waWxlIHRoZSBlbnRpcmUgcGFja2FnZS4gIFRoaXMgaXMgdGhl IGRlZmF1bHQgdGFyZ2V0IGluCkF1dG9tYWtlLWdlbmVyYXRlZCBAZmlsZXtNYWtlZmlsZX1zLCBi dXQgaXQgZG9lcyBub3QgbmVlZCB0byBiZSB0aGUKZGVmYXVsdCBpbiB0aGlyZC1wYXJ0eSBAZmls ZXtNYWtlZmlsZX1zLgoKQGl0ZW0gZGlzdGRpcgpAdHJpbmRleCBkaXN0ZGlyCkB2aW5kZXggZGlz dGRpcgpAdmluZGV4IHRvcF9kaXN0ZGlyCkNvcHkgZmlsZXMgdG8gZGlzdHJpYnV0ZSBpbnRvIEBz YW1weyQoZGlzdGRpcil9LCBiZWZvcmUgYSB0YXJiYWxsIGlzCmNvbnN0cnVjdGVkLiAgT2YgY291 cnNlIHRoaXMgdGFyZ2V0IGlzIG5vdCByZXF1aXJlZCBpZiB0aGUKQG9wdGlvbntuby1kaXN0fSBv cHRpb24gKEBweHJlZntPcHRpb25zfSkgaXMgdXNlZC4KClRoZSB2YXJpYWJsZXMgQHNhbXB7JCh0 b3BfZGlzdGRpcil9IGFuZCBAc2FtcHskKGRpc3RkaXIpfQooQHB4cmVme1RoZSBkaXN0IEhvb2t9 KSB3aWxsIGJlIHBhc3NlZCBmcm9tIHRoZSBvdXRlciBwYWNrYWdlIHRvIHRoZSBzdWJwYWNrYWdl CndoZW4gdGhlIEBjb2Rle2Rpc3RkaXJ9IHRhcmdldCBpcyBpbnZva2VkLiAgVGhlc2UgdHdvIHZh cmlhYmxlcyBoYXZlCmJlZW4gYWRqdXN0ZWQgZm9yIHRoZSBkaXJlY3RvcnkgdGhhdCBpcyBiZWlu ZyByZWN1cnNlZCBpbnRvLCBzbyB0aGV5CmFyZSByZWFkeSB0byB1c2UuCgpAaXRlbSBpbnN0YWxs CkBpdGVteCBpbnN0YWxsLWRhdGEKQGl0ZW14IGluc3RhbGwtZXhlYwpAaXRlbXggdW5pbnN0YWxs Ckluc3RhbGwgb3IgdW5pbnN0YWxsIGZpbGVzIChAcHhyZWZ7SW5zdGFsbH0pLgoKQGl0ZW0gaW5z dGFsbC1kdmkKQGl0ZW14IGluc3RhbGwtaHRtbApAaXRlbXggaW5zdGFsbC1pbmZvCkBpdGVteCBp bnN0YWxsLXBzCkBpdGVteCBpbnN0YWxsLXBkZgpJbnN0YWxsIG9ubHkgc29tZSBzcGVjaWZpYyBk b2N1bWVudGF0aW9uIGZvcm1hdCAoQHB4cmVme1RleGluZm99KS4KCkBpdGVtIGluc3RhbGxkaXJz CkNyZWF0ZSBpbnN0YWxsIGRpcmVjdG9yaWVzLCBidXQgZG8gbm90IGluc3RhbGwgYW55IGZpbGVz LgoKQGl0ZW0gY2hlY2sKQGl0ZW14IGluc3RhbGxjaGVjawpDaGVjayB0aGUgcGFja2FnZSAoQHB4 cmVme1Rlc3RzfSkuCgpAaXRlbSBtb3N0bHljbGVhbgpAaXRlbXggY2xlYW4KQGl0ZW14IGRpc3Rj bGVhbgpAaXRlbXggbWFpbnRhaW5lci1jbGVhbgpDbGVhbmluZyBydWxlcyAoQHB4cmVme0NsZWFu fSkuCgpAaXRlbSBkdmkKQGl0ZW14IHBkZgpAaXRlbXggcHMKQGl0ZW14IGluZm8KQGl0ZW14IGh0 bWwKQnVpbGQgdGhlIGRvY3VtZW50YXRpb24gaW4gdmFyaW91cyBmb3JtYXRzIChAcHhyZWZ7VGV4 aW5mb30pLgoKQGl0ZW0gdGFncwpAaXRlbXggY3RhZ3MKQnVpbGQgQGZpbGV7VEFHU30gYW5kIEBm aWxle0NUQUdTfSAoQHB4cmVme1RhZ3N9KS4KQGVuZCB0YWJsZQoKSWYgeW91IGhhdmUgZXZlciB1 c2VkIEdldHRleHQgaW4gYSBwcm9qZWN0LCB0aGlzIGlzIGEgZ29vZCBleGFtcGxlIG9mCmhvdyB0 aGlyZC1wYXJ0eSBAZmlsZXtNYWtlZmlsZX1zIGNhbiBiZSB1c2VkIHdpdGggQXV0b21ha2UuICBU aGUKQGZpbGV7TWFrZWZpbGV9cyB0aGF0IEBjb21tYW5ke2dldHRleHRpemV9IHB1dHMgaW4gdGhl IEBmaWxle3BvL30gYW5kCkBmaWxle2ludGwvfSBkaXJlY3RvcmllcyBhcmUgaGFuZHdyaXR0ZW4g QGZpbGV7TWFrZWZpbGV9cyB0aGF0CmltcGxlbWVudCBhbGwgb2YgdGhlc2UgdGFyZ2V0cy4gIFRo YXQgd2F5IHRoZXkgY2FuIGJlIGFkZGVkIHRvCkBjb2Rle1NVQkRJUlN9IGluIEF1dG9tYWtlIHBh Y2thZ2VzLgoKRGlyZWN0b3JpZXMgdGhhdCBhcmUgb25seSBsaXN0ZWQgaW4gQGNvZGV7RElTVF9T VUJESVJTfSBidXQgbm90IGluCkBjb2Rle1NVQkRJUlN9IG5lZWQgb25seSB0aGUgQGNvZGV7ZGlz dGNsZWFufSwKQGNvZGV7bWFpbnRhaW5lci1jbGVhbn0sIGFuZCBAY29kZXtkaXN0ZGlyfSBydWxl cyAoQHB4cmVme0NvbmRpdGlvbmFsClN1YmRpcmVjdG9yaWVzfSkuCgpVc3VhbGx5LCBtYW55IG9m IHRoZXNlIHJ1bGVzIGFyZSBpcnJlbGV2YW50IHRvIHRoZSB0aGlyZC1wYXJ0eQpzdWJwcm9qZWN0 LCBidXQgdGhleSBhcmUgcmVxdWlyZWQgZm9yIHRoZSB3aG9sZSBwYWNrYWdlIHRvIHdvcmsuICBJ dCdzCk9LIHRvIGhhdmUgYSBydWxlIHRoYXQgZG9lcyBub3RoaW5nLCBzbyBpZiB5b3UgYXJlIGlu dGVncmF0aW5nIGEKdGhpcmQtcGFydHkgcHJvamVjdCB3aXRoIG5vIGRvY3VtZW50YXRpb24gb3Ig dGFnIHN1cHBvcnQsIHlvdSBjb3VsZAphdWdtZW50IGl0cyBAZmlsZXtNYWtlZmlsZX0gYXMgZm9s bG93czoKCkB2aW5kZXggRU1QVFlfQVVUT01BS0VfVEFSR0VUUwpAY2luZGV4IEF1dG9tYWtlIHRh cmdldHMsIG5vLW9wCkBjaW5kZXggZG8tbm90aGluZyBBdXRvbWFrZSB0YXJnZXRzCkBjaW5kZXgg ZW1wdHkgQXV0b21ha2UgdGFyZ2V0cwpAY2luZGV4IG5vLW9wIEF1dG9tYWtlIHRhcmdldHMKQGNp bmRleCB0YXJnZXRzLCBtYWtpbmcgaW50byBuby1vcApAZXhhbXBsZQpFTVBUWV9BVVRPTUFLRV9U QVJHRVRTID0gZHZpIHBkZiBwcyBpbmZvIGh0bWwgdGFncyBjdGFncwouUEhPTlk6ICQoRU1QVFlf QVVUT01BS0VfVEFSR0VUUykKJChFTVBUWV9BVVRPTUFLRV9UQVJHRVRTKToKQGVuZCBleGFtcGxl CgpUbyBiZSBjbGVhciwgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSB2YXJpYWJs ZSBuYW1lCkBjb2Rle0VNUFRZX0FVVE9NQUtFX1RBUkdFVFN9OyB0aGUgbmFtZSBjb3VsZCBiZSBh bnl0aGluZy4KCkFub3RoZXIgYXNwZWN0IG9mIGludGVncmF0aW5nIHRoaXJkLXBhcnR5IGJ1aWxk IHN5c3RlbXMgaXMgd2hldGhlcgp0aGV5IHN1cHBvcnQgVlBBVEggYnVpbGRzIChAcHhyZWZ7VlBB VEggQnVpbGRzfSkuICBPYnZpb3VzbHkgaWYgdGhlCnN1YnBhY2thZ2UgZG9lcyBub3Qgc3VwcG9y dCBWUEFUSCBidWlsZHMgdGhlIHdob2xlIHBhY2thZ2Ugd2lsbCBub3QKc3VwcG9ydCBWUEFUSCBi dWlsZHMuICBUaGlzIGluIHR1cm5zIG1lYW5zIHRoYXQgQHNhbXB7bWFrZSBkaXN0Y2hlY2t9Cndp bGwgbm90IHdvcmssIGJlY2F1c2UgaXQgcmVsaWVzIG9uIFZQQVRIIGJ1aWxkcy4gIFNvbWUgcGVv cGxlIGNhbgpsaXZlIHdpdGhvdXQgdGhpcyAoaW5kZWVkLCBtYW55IEF1dG9tYWtlIHVzZXJzIGhh dmUgbmV2ZXIgaGVhcmQgb2YKQHNhbXB7bWFrZSBkaXN0Y2hlY2t9KS4gIE90aGVyIHBlb3BsZSBt YXkgcHJlZmVyIHRvIHJldmFtcCB0aGUKZXhpc3RpbmcgQGZpbGV7TWFrZWZpbGV9cyB0byBzdXBw b3J0IFZQQVRIQC4gIERvaW5nIHNvIGRvZXMgbm90Cm5lY2Vzc2FyaWx5IHJlcXVpcmUgQXV0b21h a2U7IG9ubHkgQXV0b2NvbmYgaXMgbmVlZGVkIChAcHhyZWZ7QnVpbGQKRGlyZWN0b3JpZXMsICwg QnVpbGQgRGlyZWN0b3JpZXMsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSkuClRoZSBu ZWNlc3Nhcnkgc3Vic3RpdHV0aW9uczogQHNhbXB7QEBzcmNkaXJAQH0sIEBzYW1we0BAdG9wX3Ny Y2RpckBAfSwKYW5kIEBzYW1we0BAdG9wX2J1aWxkZGlyQEB9IGFyZSBkZWZpbmVkIGJ5IEBmaWxl e2NvbmZpZ3VyZX0gd2hlbiBpdApwcm9jZXNzZXMgYSBAZmlsZXtNYWtlZmlsZX0gKEBweHJlZntQ cmVzZXQgT3V0cHV0IFZhcmlhYmxlcywgLCBQcmVzZXQKT3V0cHV0IFZhcmlhYmxlcywgYXV0b2Nv bmYsIFRoZSBBdXRvY29uZiBNYW51YWx9KTsgdGhleSBhcmUgbm90CmNvbXB1dGVkIGJ5IHRoZSBA ZmlsZXtNYWtlZmlsZX0gbGlrZSB0aGUgYWZvcmVtZW50aW9uZWQgQHNhbXB7JChkaXN0ZGlyKX0g YW5kCkBzYW1weyQodG9wX2Rpc3RkaXIpfSB2YXJpYWJsZXMuCgpJdCBpcyBzb21ldGltZXMgaW5j b252ZW5pZW50IHRvIG1vZGlmeSBhIHRoaXJkLXBhcnR5IEBmaWxle01ha2VmaWxlfQp0byBpbnRy b2R1Y2UgdGhlIGFib3ZlIHJlcXVpcmVkIHRhcmdldHMuICBGb3IgaW5zdGFuY2UsIG9uZSBtYXkg d2FudCB0bwprZWVwIHRoZSB0aGlyZC1wYXJ0eSBzb3VyY2VzIHVudG91Y2hlZCB0byBlYXNlIHVw Z3JhZGVzIHRvIG5ldwp2ZXJzaW9ucy4KCkBjaW5kZXggQGZpbGV7R05VbWFrZWZpbGV9IGluY2x1 ZGluZyBAZmlsZXtNYWtlZmlsZX0KSGVyZSBhcmUgdHdvIG90aGVyIGlkZWFzLiAgSWYgR05VIE1h a2UgaXMgYXNzdW1lZCwgb25lIHBvc3NpYmlsaXR5IGlzCnRvIGFkZCB0byB0aGF0IHN1YmRpcmVj dG9yeSBhIEBmaWxle0dOVW1ha2VmaWxlfSB0aGF0IGRlZmluZXMgdGhlCnJlcXVpcmVkIHRhcmdl dHMgYW5kIGluY2x1ZGVzIHRoZSB0aGlyZC1wYXJ0eSBAZmlsZXtNYWtlZmlsZX0uICBGb3IKdGhp cyB0byB3b3JrIGluIFZQQVRIIGJ1aWxkcywgQGZpbGV7R05VbWFrZWZpbGV9IG11c3QgbGllIGlu IHRoZSBidWlsZApkaXJlY3Rvcnk7IHRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIHdy aXRlIGEKQGZpbGV7R05VbWFrZWZpbGUuaW59IGluc3RlYWQsIGFuZCBoYXZlIGl0IHByb2Nlc3Nl ZCB3aXRoCkBjb2Rle0FDX0NPTkZJR19GSUxFU30gZnJvbSB0aGUgb3V0ZXIgcGFja2FnZS4gIEZv ciBleGFtcGxlLCBpZiB3ZQphc3N1bWUgQGZpbGV7TWFrZWZpbGV9IGRlZmluZXMgYWxsIHRhcmdl dHMgZXhjZXB0IHRoZSBkb2N1bWVudGF0aW9uCnRhcmdldHMsIGFuZCB0aGF0IHRoZSByZWFsIEBj b2Rle2NoZWNrfSB0YXJnZXQgaXMgbmFtZWQgQGNvZGV7dGVzdH0sCndlIGNvdWxkIHdyaXRlIEBm aWxle0dOVW1ha2VmaWxlfSAob3IgQGZpbGV7R05VbWFrZWZpbGUuaW59KSBsaWtlCnRoaXM6CgpA ZXhhbXBsZQojIEZpcnN0LCBpbmNsdWRlIHRoZSByZWFsIE1ha2VmaWxlCmluY2x1ZGUgTWFrZWZp bGUKIyBUaGVuLCBkZWZpbmUgdGhlIG90aGVyIHRhcmdldHMgbmVlZGVkIGJ5IEF1dG9tYWtlIE1h a2VmaWxlcy4KLlBIT05ZOiBkdmkgcGRmIHBzIGluZm8gaHRtbCBjaGVjawpkdmkgcGRmIHBzIGlu Zm8gaHRtbDoKY2hlY2s6IHRlc3QKQGVuZCBleGFtcGxlCgpAY2luZGV4IFByb3h5IEBmaWxle01h a2VmaWxlfSBmb3IgdGhpcmQtcGFydHkgcGFja2FnZXMKQSBzaW1pbGFyIGlkZWEgdGhhdCBkb2Vz IG5vdCB1c2UgQGNvZGV7aW5jbHVkZX0gaXMgdG8gd3JpdGUgYSBwcm94eQpAZmlsZXtNYWtlZmls ZX0gdGhhdCBkaXNwYXRjaGVzIHJ1bGVzIHRvIHRoZSByZWFsIEBmaWxle01ha2VmaWxlfSwKZWl0 aGVyIHdpdGggQHNhbXB7JChNQUtFKSAtZiBNYWtlZmlsZS5yZWFsICQoQU1fTUFLRUZMQUdTKSB0 YXJnZXR9IChpZgppdCdzIE9LIHRvIHJlbmFtZSB0aGUgb3JpZ2luYWwgQGZpbGV7TWFrZWZpbGV9 KSBvciB3aXRoIEBzYW1we2NkCnN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSB0YXJn ZXR9IChpZiBpdCdzIE9LIHRvIHN0b3JlIHRoZQpzdWJkaXJlY3RvcnkgcHJvamVjdCBvbmUgZGly ZWN0b3J5IGRlZXBlcikuICBUaGUgZ29vZCBuZXdzIGlzIHRoYXQKdGhpcyBwcm94eSBAZmlsZXtN YWtlZmlsZX0gY2FuIGJlIGdlbmVyYXRlZCB3aXRoIEF1dG9tYWtlLiAgQWxsIHdlCm5lZWQgYXJl IEBvcHRpb257LWxvY2FsfSB0YXJnZXRzIChAcHhyZWZ7RXh0ZW5kaW5nfSkgdGhhdCBwZXJmb3Jt IHRoZQpkaXNwYXRjaC4gIE9mIGNvdXJzZSB0aGUgb3RoZXIgQXV0b21ha2UgZmVhdHVyZXMgYXJl IGF2YWlsYWJsZSwgc28geW91CmNvdWxkIGRlY2lkZSB0byBsZXQgQXV0b21ha2UgcGVyZm9ybSBk aXN0cmlidXRpb24gb3IgaW5zdGFsbGF0aW9uLgpIZXJlIGlzIGEgcG9zc2libGUgQGZpbGV7TWFr ZWZpbGUuYW19OgoKQGV4YW1wbGUKYWxsLWxvY2FsOgogICAgICAgIGNkIHN1YmRpciAmJiAkKE1B S0UpICQoQU1fTUFLRUZMQUdTKSBhbGwKY2hlY2stbG9jYWw6CiAgICAgICAgY2Qgc3ViZGlyICYm ICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHRlc3QKY2xlYW4tbG9jYWw6CiAgICAgICAgY2Qgc3Vi ZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGNsZWFuCgojIEFzc3VtaW5nIHRoZSBwYWNr YWdlIGtub3dzIGhvdyB0byBpbnN0YWxsIGl0c2VsZgppbnN0YWxsLWRhdGEtbG9jYWw6CiAgICAg ICAgY2Qgc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwtZGF0YQppbnN0 YWxsLWV4ZWMtbG9jYWw6CiAgICAgICAgY2Qgc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxB R1MpIGluc3RhbGwtZXhlYwp1bmluc3RhbGwtbG9jYWw6CiAgICAgICAgY2Qgc3ViZGlyICYmICQo TUFLRSkgJChBTV9NQUtFRkxBR1MpIHVuaW5zdGFsbAoKIyBEaXN0cmlidXRlIGZpbGVzIGZyb20g aGVyZS4KRVhUUkFfRElTVCA9IHN1YmRpci9NYWtlZmlsZSBzdWJkaXIvcHJvZ3JhbS5jIC4uLgpA ZW5kIGV4YW1wbGUKClB1c2hpbmcgdGhpcyBpZGVhIHRvIHRoZSBleHRyZW1lLCBpdCBpcyBhbHNv IHBvc3NpYmxlIHRvIGlnbm9yZSB0aGUKc3VicHJvamVjdCBidWlsZCBzeXN0ZW0gYW5kIGJ1aWxk IGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIHByb3h5CkBmaWxle01ha2VmaWxlLmFtfS4gIFRoaXMgbWln aHQgd2VsbCBiZSBzZW5zaWJsZSBpZiB5b3UgbmVlZCBWUEFUSApidWlsZHMgYnV0IHRoZSBzdWJw cm9qZWN0IGRvZXMgbm90IHN1cHBvcnQgdGhlbS4KCkBub2RlIERpc3RyaWJ1dGluZwpAY2hhcHRl ciBEaXN0cmlidXRpbmcgQGZpbGV7TWFrZWZpbGUuaW59cwoKQXV0b21ha2UgcGxhY2VzIG5vIHJl c3RyaWN0aW9ucyBvbiB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSByZXN1bHRpbmcKQGZpbGV7TWFr ZWZpbGUuaW59cy4gIFdlIGVuY291cmFnZSBzb2Z0d2FyZSBhdXRob3JzIHRvIGRpc3RyaWJ1dGUK dGhlaXIgd29yayB1bmRlciB0ZXJtcyBsaWtlIHRob3NlIG9mIHRoZSBHUEwsIGJ1dCBkb2luZyBz byBpcyBub3QKcmVxdWlyZWQgdG8gdXNlIEF1dG9tYWtlLgoKU29tZSBvZiB0aGUgZmlsZXMgdGhh dCBjYW4gYmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQgdmlhIHRoZQpAb3B0aW9uey0tYWRkLW1p c3Npbmd9IHN3aXRjaCBkbyBmYWxsIHVuZGVyIHRoZSBHUExALiAgSG93ZXZlciwgdGhlc2UgYWxz bwpoYXZlIGEgc3BlY2lhbCBleGNlcHRpb24gYWxsb3dpbmcgeW91IHRvIGRpc3RyaWJ1dGUgdGhl bSB3aXRoIHlvdXIKcGFja2FnZSwgcmVnYXJkbGVzcyBvZiB0aGUgbGljZW5zaW5nIHlvdSBjaG9v c2UuCgpAbm9kZSBBUEkgVmVyc2lvbmluZwpAY2hhcHRlciBBdXRvbWFrZSBBUEkgVmVyc2lvbmlu ZwoKTmV3IEF1dG9tYWtlIHJlbGVhc2VzIHVzdWFsbHkgaW5jbHVkZSBidWcgZml4ZXMgYW5kIG5l dyBmZWF0dXJlcy4KVW5mb3J0dW5hdGVseSB0aGV5IG1heSBhbHNvIGludHJvZHVjZSBuZXcgYnVn cyBhbmQgaW5jb21wYXRpYmlsaXR5LgpUaGlzIG1ha2VzIGZvdXIgcmVhc29ucyB3aHkgYSBwYWNr YWdlIG1heSByZXF1aXJlIGEgcGFydGljdWxhciBBdXRvbWFrZQp2ZXJzaW9uLgoKVGhpbmdzIGdl dCB3b3JzZSB3aGVuIG1haW50YWluaW5nIGEgbGFyZ2UgdHJlZSBvZiBwYWNrYWdlcywgZWFjaCBv bmUKcmVxdWlyaW5nIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgQXV0b21ha2UuICBJbiB0aGUgcGFz dCwgdGhpcyBtZWFudCB0aGF0CmFueSBkZXZlbG9wZXIgKGFuZCBzb21ldGltZXMgdXNlcnMpIGhh ZCB0byBpbnN0YWxsIHNldmVyYWwgdmVyc2lvbnMgb2YKQXV0b21ha2UgaW4gZGlmZmVyZW50IHBs YWNlcywgYW5kIHN3aXRjaCBAc2FtcHskUEFUSH0gYXBwcm9wcmlhdGVseSBmb3IKZWFjaCBwYWNr YWdlLgoKU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNiwgQXV0b21ha2UgaW5zdGFsbHMgdmVyc2lv bmVkIGJpbmFyaWVzLiAgVGhpcwptZWFucyB5b3UgY2FuIGluc3RhbGwgc2V2ZXJhbCB2ZXJzaW9u cyBvZiBBdXRvbWFrZSBpbiB0aGUgc2FtZQpAc2FtcHskcHJlZml4fSwgYW5kIGNhbiBzZWxlY3Qg YW4gYXJiaXRyYXJ5IEF1dG9tYWtlIHZlcnNpb24gYnkgcnVubmluZwpAY29tbWFuZHthdXRvbWFr ZS0xLjZ9IG9yIEBjb21tYW5ke2F1dG9tYWtlLTEuN30gd2l0aG91dCBqdWdnbGluZyB3aXRoCkBz YW1weyRQQVRIfS4gIEZ1cnRoZXJtb3JlLCBAZmlsZXtNYWtlZmlsZX1zIGdlbmVyYXRlZCBieSBB dXRvbWFrZSAxLjYKd2lsbCB1c2UgQGNvbW1hbmR7YXV0b21ha2UtMS42fSBleHBsaWNpdGx5IGlu IHRoZWlyIHJlYnVpbGQgcnVsZXMuCgpUaGUgbnVtYmVyIEBzYW1wezEuNn0gaW4gQGNvbW1hbmR7 YXV0b21ha2UtMS42fSBpcyBBdXRvbWFrZSdzIEFQSSB2ZXJzaW9uLApub3QgQXV0b21ha2UncyB2 ZXJzaW9uLiAgSWYgYSBidWcgZml4IHJlbGVhc2UgaXMgbWFkZSwgZm9yIGluc3RhbmNlCkF1dG9t YWtlIDEuNi4xLCB0aGUgQVBJIHZlcnNpb24gd2lsbCByZW1haW4gMS42LiAgVGhpcyBtZWFucyB0 aGF0IGEKcGFja2FnZSB0aGF0IHdvcmtzIHdpdGggQXV0b21ha2UgMS42IHNob3VsZCBhbHNvIHdv cmsgd2l0aCAxLjYuMTsgYWZ0ZXIKYWxsLCB0aGlzIGlzIHdoYXQgcGVvcGxlIGV4cGVjdCBmcm9t IGJ1ZyBmaXggcmVsZWFzZXMuCgpJZiB5b3VyIHBhY2thZ2UgcmVsaWVzIG9uIGEgZmVhdHVyZSBv ciBhIGJ1ZyBmaXggaW50cm9kdWNlZCBpbgphIHJlbGVhc2UsIHlvdSBjYW4gcGFzcyB0aGlzIHZl cnNpb24gYXMgYW4gb3B0aW9uIHRvIEF1dG9tYWtlIHRvIGVuc3VyZQpvbGRlciByZWxlYXNlcyB3 aWxsIG5vdCBiZSB1c2VkLiAgRm9yIGluc3RhbmNlLCB1c2UgdGhpcyBpbiB5b3VyCkBmaWxle2Nv bmZpZ3VyZS5hY306CgpAZXhhbXBsZQogIEFNX0lOSVRfQVVUT01BS0UoWzEuNi4xXSkgICAgZG5s IFJlcXVpcmUgQXV0b21ha2UgMS42LjEgb3IgYmV0dGVyLgpAZW5kIGV4YW1wbGUKCkBub2luZGVu dApvciwgaW4gYSBwYXJ0aWN1bGFyIEBmaWxle01ha2VmaWxlLmFtfToKCkBleGFtcGxlCiAgQVVU T01BS0VfT1BUSU9OUyA9IDEuNi4xICAgIyBSZXF1aXJlIEF1dG9tYWtlIDEuNi4xIG9yIGJldHRl ci4KQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKQXV0b21ha2Ugd2lsbCBwcmludCBhbiBlcnJvciBt ZXNzYWdlIGlmIGl0cyB2ZXJzaW9uIGlzCm9sZGVyIHRoYW4gdGhlIHJlcXVlc3RlZCB2ZXJzaW9u LgoKCkBoZWFkaW5nIFdoYXQgaXMgaW4gdGhlIEFQSQoKQXV0b21ha2UncyBwcm9ncmFtbWluZyBp bnRlcmZhY2UgaXMgbm90IGVhc3kgdG8gZGVmaW5lLiAgSXQgaW5jbHVkZXMKYXQgbGVhc3QgYWxs IGRvY3VtZW50ZWQgdmFyaWFibGVzIGFuZCB0YXJnZXRzIHRoYXQgYQpAZmlsZXtNYWtlZmlsZS5h bX0gYXV0aG9yIGNhbiB1c2UsIGFueSBiZWhhdmlvciBhc3NvY2lhdGVkIHdpdGggdGhlbQooZS5n LiwgdGhlIHBsYWNlcyB3aGVyZSBAc2FtcHstaG9va30ncyBhcmUgcnVuKSwgdGhlIGNvbW1hbmQg bGluZQppbnRlcmZhY2Ugb2YgQGNvbW1hbmR7YXV0b21ha2V9IGFuZCBAY29tbWFuZHthY2xvY2Fs fSwgQGRvdHN7fQoKQGhlYWRpbmcgV2hhdCBpcyBub3QgaW4gdGhlIEFQSQoKRXZlcnkgdW5kb2N1 bWVudGVkIHZhcmlhYmxlLCB0YXJnZXQsIG9yIGNvbW1hbmQgbGluZSBvcHRpb24gaXMgbm90IHBh cnQKb2YgdGhlIEFQSUAuICBZb3Ugc2hvdWxkIGF2b2lkIHVzaW5nIHRoZW0sIGFzIHRoZXkgY291 bGQgY2hhbmdlIGZyb20gb25lCnZlcnNpb24gdG8gdGhlIG90aGVyIChldmVuIGluIGJ1ZyBmaXgg cmVsZWFzZXMsIGlmIHRoaXMgaGVscHMgdG8gZml4IGEKYnVnKS4KCklmIGl0IHR1cm5zIG91dCB5 b3UgbmVlZCB0byB1c2Ugc3VjaCBhbiB1bmRvY3VtZW50ZWQgZmVhdHVyZSwgY29udGFjdApAZW1h aWx7YXV0b21ha2VAQGdudS5vcmd9IGFuZCB0cnkgdG8gZ2V0IGl0IGRvY3VtZW50ZWQgYW5kIGV4 ZXJjaXNlZCBieQp0aGUgdGVzdC1zdWl0ZS4KCkBub2RlIFVwZ3JhZGluZwpAY2hhcHRlciBVcGdy YWRpbmcgYSBQYWNrYWdlIHRvIGEgTmV3ZXIgQXV0b21ha2UgVmVyc2lvbgoKQXV0b21ha2UgbWFp bnRhaW5zIHRocmVlIGtpbmRzIG9mIGZpbGVzIGluIGEgcGFja2FnZS4KCkBpdGVtaXplCkBpdGVt IEBmaWxle2FjbG9jYWwubTR9CkBpdGVtIEBmaWxle01ha2VmaWxlLmlufXMKQGl0ZW0gYXV4aWxp YXJ5IHRvb2xzIGxpa2UgQGZpbGV7aW5zdGFsbC1zaH0gb3IgQGZpbGV7cHktY29tcGlsZX0KQGVu ZCBpdGVtaXplCgpAZmlsZXthY2xvY2FsLm00fSBpcyBnZW5lcmF0ZWQgYnkgQGNvbW1hbmR7YWNs b2NhbH0gYW5kIGNvbnRhaW5zIHNvbWUKQXV0b21ha2Utc3VwcGxpZWQgTTQgbWFjcm9zLiAgQXV4 aWxpYXJ5IHRvb2xzIGFyZSBpbnN0YWxsZWQgYnkKQHNhbXB7YXV0b21ha2UgLS1hZGQtbWlzc2lu Z30gd2hlbiBuZWVkZWQuICBAZmlsZXtNYWtlZmlsZS5pbn1zIGFyZQpidWlsdCBmcm9tIEBmaWxl e01ha2VmaWxlLmFtfSBieSBAY29tbWFuZHthdXRvbWFrZX0sIGFuZCByZWx5IG9uIHRoZQpkZWZp bml0aW9ucyBvZiB0aGUgTTQgbWFjcm9zIHB1dCBpbiBAZmlsZXthY2xvY2FsLm00fSBhcyB3ZWxs IGFzIHRoZQpiZWhhdmlvciBvZiB0aGUgYXV4aWxpYXJ5IHRvb2xzIGluc3RhbGxlZC4KCkJlY2F1 c2UgYWxsIG9mIHRoZXNlIGZpbGVzIGFyZSBjbG9zZWx5IHJlbGF0ZWQsIGl0IGlzIGltcG9ydGFu dCB0bwpyZWdlbmVyYXRlIGFsbCBvZiB0aGVtIHdoZW4gdXBncmFkaW5nIHRvIGEgbmV3ZXIgQXV0 b21ha2UgcmVsZWFzZS4KVGhlIHVzdWFsIHdheSB0byBkbyB0aGF0IGlzCgpAZXhhbXBsZQphY2xv Y2FsICMgd2l0aCBhbnkgb3B0aW9uIG5lZWRlZCAoc3VjaCBhcyAtSSBtNCkKYXV0b2NvbmYKYXV0 b21ha2UgLS1hZGQtbWlzc2luZyAtLWZvcmNlLW1pc3NpbmcKQGVuZCBleGFtcGxlCgpAbm9pbmRl bnQKb3IgbW9yZSBjb252ZW5pZW50bHk6CgpAZXhhbXBsZQphdXRvcmVjb25mIC12ZmkKQGVuZCBl eGFtcGxlCgpUaGUgdXNlIG9mIEBvcHRpb257LS1mb3JjZS1taXNzaW5nfSBlbnN1cmVzIHRoYXQg YXV4aWxpYXJ5IHRvb2xzIHdpbGwgYmUKb3ZlcnJpZGRlbiBieSBuZXcgdmVyc2lvbnMgKEBweHJl ZnthdXRvbWFrZSBJbnZvY2F0aW9ufSkuCgpJdCBpcyBpbXBvcnRhbnQgdG8gcmVnZW5lcmF0ZSBh bGwgb2YgdGhlc2UgZmlsZXMgZWFjaCB0aW1lIEF1dG9tYWtlIGlzCnVwZ3JhZGVkLCBldmVuIGJl dHdlZW4gYnVnIGZpeCByZWxlYXNlcy4gIEZvciBpbnN0YW5jZSwgaXQgaXMgbm90CnVudXN1YWwg Zm9yIGEgYnVnIGZpeCB0byBpbnZvbHZlIGNoYW5nZXMgdG8gYm90aCB0aGUgcnVsZXMgZ2VuZXJh dGVkCmluIEBmaWxle01ha2VmaWxlLmlufSBhbmQgdGhlIHN1cHBvcnRpbmcgTTQgbWFjcm9zIGNv cGllZCB0bwpAZmlsZXthY2xvY2FsLm00fS4KClByZXNlbnRseSBAY29tbWFuZHthdXRvbWFrZX0g aXMgYWJsZSB0byBkaWFnbm9zZSBzaXR1YXRpb25zIHdoZXJlCkBmaWxle2FjbG9jYWwubTR9IGhh cyBiZWVuIGdlbmVyYXRlZCB3aXRoIGFub3RoZXIgdmVyc2lvbiBvZgpAY29tbWFuZHthY2xvY2Fs fSwgYnV0IGl0IG5ldmVyIGNoZWNrcyB3aGV0aGVyIGF1eGlsaWFyeSBzY3JpcHRzIGFyZQp1cC10 by1kYXRlLiAgSW4gb3RoZXIgd29yZHMsIEBjb21tYW5ke2F1dG9tYWtlfSB3aWxsIHRlbGwgeW91 IHdoZW4KQGNvbW1hbmR7YWNsb2NhbH0gbmVlZHMgdG8gYmUgcmVydW4sIGJ1dCBpdCB3aWxsIG5l dmVyIGRpYWdub3NlIGEKbWlzc2luZyBAb3B0aW9uey0tZm9yY2UtbWlzc2luZ30uCgpCZWZvcmUg dXBncmFkaW5nIHRvIGEgbmV3IG1ham9yIHJlbGVhc2UsIGl0IGlzIGEgZ29vZCBpZGVhIHRvIHJl YWQgdGhlCmZpbGUgQGZpbGV7TkVXU30uICBUaGlzIGZpbGUgbGlzdHMgYWxsIGNoYW5nZXMgYmV0 d2VlbiByZWxlYXNlczogbmV3CmZlYXR1cmVzLCBvYnNvbGV0ZSBjb25zdHJ1Y3RzLCBrbm93biBp bmNvbXBhdGliaWxpdHksIGFuZAp3b3JrYXJvdW5kcy4KCkBub2RlIEZBUQpAY2hhcHRlciBGcmVx dWVudGx5IEFza2VkIFF1ZXN0aW9ucyBhYm91dCBBdXRvbWFrZQoKVGhpcyBjaGFwdGVyIGNvdmVy cyBzb21lIHF1ZXN0aW9ucyB0aGF0IG9mdGVuIGNvbWUgdXAgb24gdGhlIG1haWxpbmcKbGlzdHMu CgpAbWVudQoqIFZlcnNpb24gQ29udHJvbDo6ICAgICAgICAgICAgIFZlcnNpb24gY29udHJvbCBh bmQgZ2VuZXJhdGVkIGZpbGVzCiogbWFpbnRhaW5lci1tb2RlOjogICAgICAgICAgICAgbWlzc2lu ZyBhbmQgQU1fTUFJTlRBSU5FUl9NT0RFCiogV2lsZGNhcmRzOjogICAgICAgICAgICAgICAgICAg V2h5IGRvZXNuJ3QgQXV0b21ha2Ugc3VwcG9ydCB3aWxkY2FyZHM/CiogTGltaXRhdGlvbnMgb24g RmlsZSBOYW1lczo6ICAgTGltaXRhdGlvbnMgb24gc291cmNlIGFuZCBpbnN0YWxsZWQgZmlsZSBu YW1lcwoqIEZsYWcgVmFyaWFibGVzIE9yZGVyaW5nOjogICAgIENGTEFHUyB2cy5AOiBBTV9DRkxB R1MgdnMuQDogbXVtYmxlX0NGTEFHUwoqIFJlbmFtZWQgT2JqZWN0czo6ICAgICAgICAgICAgIFdo eSBhcmUgb2JqZWN0IGZpbGVzIHNvbWV0aW1lcyByZW5hbWVkPwoqIFBlci1PYmplY3QgRmxhZ3M6 OiAgICAgICAgICAgIEhvdyB0byBzaW11bGF0ZSBwZXItb2JqZWN0IGZsYWdzPwoqIE11bHRpcGxl IE91dHB1dHM6OiAgICAgICAgICAgIFdyaXRpbmcgcnVsZXMgZm9yIHRvb2xzIHdpdGggbWFueSBv dXRwdXQgZmlsZXMKKiBIYXJkLUNvZGVkIEluc3RhbGwgUGF0aHM6OiAgICBJbnN0YWxsaW5nIHRv IGhhcmQtY29kZWQgbG9jYXRpb25zCiogRGVidWdnaW5nIE1ha2UgUnVsZXM6OiAgICAgICAgU3Ry YXRlZ2llcyB3aGVuIHRoaW5ncyBkb24ndCB3b3JrIGFzIGV4cGVjdGVkCiogUmVwb3J0aW5nIEJ1 Z3M6OiAgICAgICAgICAgICAgRmVlZGJhY2sgb24gYnVncyBhbmQgZmVhdHVyZSByZXF1ZXN0cwpA ZW5kIG1lbnUKCkBub2RlIFZlcnNpb24gQ29udHJvbApAc2VjdGlvbiBWZXJzaW9uIGNvbnRyb2wg YW5kIGdlbmVyYXRlZCBmaWxlcwoKQGFuY2hvcntDVlN9QGMgb2xkIG5hbWUgb2Ygbm9kZSwga2Vl cCBmb3IgY29tcGF0aWJpbGl0eQpAc3ViaGVhZGluZyBCYWNrZ3JvdW5kOiBkaXN0cmlidXRlZCBn ZW5lcmF0ZWQgRmlsZXMKQGNpbmRleCBnZW5lcmF0ZWQgZmlsZXMsIGRpc3RyaWJ1dGVkCkBjaW5k ZXggcmVidWlsZCBydWxlcwoKUGFja2FnZXMgbWFkZSB3aXRoIEF1dG9jb25mIGFuZCBBdXRvbWFr ZSBzaGlwIHdpdGggc29tZSBnZW5lcmF0ZWQKZmlsZXMgbGlrZSBAZmlsZXtjb25maWd1cmV9IG9y IEBmaWxle01ha2VmaWxlLmlufS4gIFRoZXNlIGZpbGVzIHdlcmUKZ2VuZXJhdGVkIG9uIHRoZSBk ZXZlbG9wZXIncyBtYWNoaW5lIGFuZCBhcmUgZGlzdHJpYnV0ZWQgc28gdGhhdAplbmQtdXNlcnMg ZG8gbm90IGhhdmUgdG8gaW5zdGFsbCB0aGUgbWFpbnRhaW5lciB0b29scyByZXF1aXJlZCB0bwpy ZWJ1aWxkIHRoZW0uICBPdGhlciBnZW5lcmF0ZWQgZmlsZXMgbGlrZSBMZXggc2Nhbm5lcnMsIFlh Y2MgcGFyc2VycywKb3IgSW5mbyBkb2N1bWVudGF0aW9uIGFyZSB1c3VhbGx5IGRpc3RyaWJ1dGVk IG9uIHNpbWlsYXIgZ3JvdW5kcy4KCkF1dG9tYWtlIG91dHB1dCBnZW5lcmF0ZXMgcnVsZXMgaW4g QGZpbGV7TWFrZWZpbGV9cyB0byByZWJ1aWxkIHRoZXNlCmZpbGVzLiAgRm9yIGluc3RhbmNlLCBA Y29tbWFuZHttYWtlfSB3aWxsIHJ1biBAY29tbWFuZHthdXRvY29uZn0gdG8KcmVidWlsZCBAZmls ZXtjb25maWd1cmV9IHdoZW5ldmVyIEBmaWxle2NvbmZpZ3VyZS5hY30gaXMgY2hhbmdlZC4KVGhp cyBtYWtlcyBkZXZlbG9wbWVudCBzYWZlciBieSBlbnN1cmluZyBhIEBmaWxle2NvbmZpZ3VyZX0g aXMgbmV2ZXIKb3V0LW9mLWRhdGUgd2l0aCByZXNwZWN0IHRvIEBmaWxle2NvbmZpZ3VyZS5hY30u CgpBcyBnZW5lcmF0ZWQgZmlsZXMgc2hpcHBlZCBpbiBwYWNrYWdlcyBhcmUgdXAtdG8tZGF0ZSwg YW5kIGJlY2F1c2UKQGNvbW1hbmR7dGFyfSBwcmVzZXJ2ZXMgdGltZXN0YW1wcywgdGhlc2UgcmVi dWlsZCBydWxlcyBhcmUgbm90CnRyaWdnZXJlZCB3aGVuIGEgdXNlciB1bnBhY2tzIGFuZCBidWls ZHMgYSBwYWNrYWdlLgoKQHN1YmhlYWRpbmcgQmFja2dyb3VuZDogVmVyc2lvbiBDb250cm9sIGFu ZCBUaW1lc3RhbXBzCkBjaW5kZXggdGltZXN0YW1wcyBhbmQgdmVyc2lvbiBjb250cm9sCkBjaW5k ZXggdmVyc2lvbiBjb250cm9sIGFuZCB0aW1lc3RhbXBzCgpUeXBpY2FsbHkgd2hlbiB5b3UgdXBk YXRlIGZpbGVzIHdpdGggdmVyc2lvbiBjb250cm9sIGNvbW1hbmRzLCB3b3JraW5nCmZpbGVzIHdp bGwgaGF2ZSB0aGUgdGltZXN0YW1wIG9mIHlvdXIgdXBkYXRlLCBub3QgdGhlIG9yaWdpbmFsCnRp bWVzdGFtcCBvZiB0aGUgY29tbWl0LiAgVGhpcyBpcyBtZWFudCB0byBtYWtlIHN1cmUgdGhhdApA Y29tbWFuZHttYWtlfSBub3RpY2VzIHRoYXQgc291cmNlIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVk LgoKVGhpcyB0aW1lc3RhbXAgc2hpZnQgaXMgdHJvdWJsZXNvbWUgd2hlbiBib3RoIHNvdXJjZXMg YW5kIGdlbmVyYXRlZApmaWxlcyBhcmUga2VwdCB1bmRlciB2ZXJzaW9uIGNvbnRyb2wuICBCZWNh dXNlIHZlcnNpb24gY29udHJvbApjb21tYW5kcyBvZnRlbiBwcm9jZXNzIGZpbGVzIGluIGxleGlj YWwgb3JkZXIsIEBmaWxle2NvbmZpZ3VyZS5hY30Kd2lsbCBhcHBlYXIgbmV3ZXIgdGhhbiBAZmls ZXtjb25maWd1cmV9IGFmdGVyIGEgdmVyc2lvbiBjb250cm9sCmNvbW1hbmQgdGhhdCB1cGRhdGVz IGJvdGggZmlsZXMsIGV2ZW4gaWYgQGZpbGV7Y29uZmlndXJlfSB3YXMgbmV3ZXIKdGhhbiBAZmls ZXtjb25maWd1cmUuYWN9IHdoZW4gaXQgd2FzIGNvbW1pdHRlZC4gIENhbGxpbmcKQGNvbW1hbmR7 bWFrZX0gd2lsbCB0aGVuIHRyaWdnZXIgYSBzcHVyaW91cyByZWJ1aWxkIG9mCkBmaWxle2NvbmZp Z3VyZX0uCgpAc3ViaGVhZGluZyBMaXZpbmcgd2l0aCBWZXJzaW9uIENvbnRyb2wgaW4gQXV0b2Nv bmZpc2NhdGVkIFByb2plY3RzCkBjaW5kZXggdmVyc2lvbiBjb250cm9sIGFuZCBnZW5lcmF0ZWQg ZmlsZXMKQGNpbmRleCBnZW5lcmF0ZWQgZmlsZXMgYW5kIHZlcnNpb24gY29udHJvbAoKVGhlcmUg YXJlIGJhc2ljYWxseSB0d28gY2xhbnMgYW1vbmcgbWFpbnRhaW5lcnM6IHRob3NlIHdobyBrZWVw IGFsbApkaXN0cmlidXRlZCBmaWxlcyB1bmRlciB2ZXJzaW9uIGNvbnRyb2wsIGluY2x1ZGluZyBn ZW5lcmF0ZWQgZmlsZXMsIGFuZAp0aG9zZSB3aG8ga2VlcCBnZW5lcmF0ZWQgZmlsZXMgQGVtcGh7 b3V0fSBvZiB2ZXJzaW9uIGNvbnRyb2wuCgpAc3Vic3ViaGVhZGluZyBBbGwgRmlsZXMgdW5kZXIg VmVyc2lvbiBDb250cm9sCgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtClRoZSByZXBvc2l0b3J5IGNv bnRhaW5zIGFsbCBkaXN0cmlidXRlZCBmaWxlcyBzbyB5b3Uga25vdyBleGFjdGx5CndoYXQgaXMg ZGlzdHJpYnV0ZWQsIGFuZCB5b3UgY2FuIGNoZWNrIG91dCBhbnkgcHJpb3IgdmVyc2lvbiBlbnRp cmVseS4KCkBpdGVtCk1haW50YWluZXJzIGNhbiBzZWUgaG93IGdlbmVyYXRlZCBmaWxlcyBldm9s dmUgKGZvciBpbnN0YW5jZSwgeW91IGNhbgpzZWUgd2hhdCBoYXBwZW5zIHRvIHlvdXIgQGZpbGV7 TWFrZWZpbGUuaW59cyB3aGVuIHlvdSB1cGdyYWRlIEF1dG9tYWtlCmFuZCBtYWtlIHN1cmUgdGhl eSBsb29rIE9LKS4KCkBpdGVtClVzZXJzIGRvIG5vdCBuZWVkIEF1dG90b29scyB0byBidWlsZCBh IGNoZWNrLW91dCBvZiB0aGUgcHJvamVjdDsgaXQKd29ya3MganVzdCBsaWtlIGEgcmVsZWFzZWQg dGFyYmFsbC4KCkBpdGVtCklmIHVzZXJzIHVzZSB2ZXJzaW9uIGNvbnRyb2wgdG8gdXBkYXRlIHRo ZWlyIGNvcHksIHRpbWVzdGFtcHMgd2lsbCBsaWtlbHkgYmUKaW5hY2N1cmF0ZS4gIFNvbWUgcmVi dWlsZCBydWxlcyB3aWxsIGJlIHRyaWdnZXJlZCBhbmQgYXR0ZW1wdCB0bwpydW4gZGV2ZWxvcGVy IHRvb2xzIHN1Y2ggYXMgQGNvbW1hbmR7YXV0b2NvbmZ9IG9yIEBjb21tYW5ke2F1dG9tYWtlfS4K CkNhbGxzIHRvIHN1Y2ggdG9vbHMgYXJlIGFsbCB3cmFwcGVkIGludG8gYSBjYWxsIHRvIHRoZSBA Y29tbWFuZHttaXNzaW5nfQpzY3JpcHQgZGlzY3Vzc2VkIGxhdGVyIChAcHhyZWZ7bWFpbnRhaW5l ci1tb2RlfSksIHNvIHRoYXQgdGhlIHVzZXIgd2lsbApzZWUgbW9yZSBkZXNjcmlwdGl2ZSB3YXJu aW5ncyBhYm91dCBtaXNzaW5nIG9yIG91dC1vZi1kYXRlIHRvb2xzLCBhbmQKcG9zc2libGUgc3Vn Z2VzdGlvbnMgYWJvdXQgaG93IHRvIG9idGFpbiB0aGVtLCByYXRoZXIgdGhhbiBqdXN0IHNvbWUK YGBjb21tYW5kIG5vdCBmb3VuZCcnIGVycm9yLCBvciAod29yc2UpIHNvbWUgb2JzY3VyZSBtZXNz YWdlIGZyb20gc29tZQpvbGRlciB2ZXJzaW9uIG9mIHRoZSByZXF1aXJlZCB0b29sIHRoZXkgaGFw cGVuIHRvIGhhdmUgaW5zdGFsbGVkLgoKTWFpbnRhaW5lcnMgaW50ZXJlc3RlZCBpbiBrZWVwaW5n IHRoZWlyIHBhY2thZ2UgYnVpbGRhYmxlIGZyb20gYQpjaGVja291dCBldmVuIGZvciB0aG9zZSB1 c2VycyB0aGF0IGxhY2sgbWFpbnRhaW5lci1zcGVjaWZpYyB0b29scyBtaWdodAp3YW50IHRvIHBy b3ZpZGUgYSBoZWxwZXIgc2NyaXB0IChvciB0byBlbmhhbmNlIHRoZWlyIGV4aXN0aW5nIGJvb3Rz dHJhcApzY3JpcHQpIHRvIGZpeCB0aGUgdGltZXN0YW1wcyBhZnRlciBhIGNoZWNrb3V0LCB0byBw cmV2ZW50IHNwdXJpb3VzCnJlYnVpbGRzLiAgSW4gY2FzZSBvZiBhIHByb2plY3QgY29tbWl0dGlu ZyB0aGUgQXV0b3Rvb2xzLWdlbmVyYXRlZApmaWxlcywgYXMgd2VsbCBhcyB0aGUgZ2VuZXJhdGVk IEBmaWxley5pbmZvfSBmaWxlcywgc3VjaCBhIHNjcmlwdCBtaWdodApsb29rIHNvbWV0aGluZyBs aWtlIHRoaXM6CgpAc21hbGxleGFtcGxlCiMhL2Jpbi9zaAojIGZpeC10aW1lc3RhbXAuc2g6IFBy ZXZlbnQgdXNlbGVzcyByZWJ1aWxkcyBhZnRlciAiZ2l0IHB1bGwiLgpzbGVlcCAxCiMgYWNsb2Nh bC1nZW5lcmF0ZWQgYWNsb2NhbC5tNCBkZXBlbmRzIG9uIGxvY2FsbHktaW5zdGFsbGVkCiMgJy5t NCcgbWFjcm8gZmlsZXMsIGFzIHdlbGwgYXMgb24gJ2NvbmZpZ3VyZS5hYycuCnRvdWNoIGFjbG9j YWwubTQKc2xlZXAgMQojIGF1dG9jb25mLWdlbmVyYXRlZCAnY29uZmlndXJlJyBhbmQgYXV0b2hl YWRlci1nZW5lcmF0ZWQKIyBjb25maWcuaC5pbiBib3RoIGRlcGVuZCBvbiBhY2xvY2FsLm00IGFu ZCBvbiBjb25maWd1cmUuYWMuCnRvdWNoIGNvbmZpZ3VyZSBjb25maWcuaC5pbgojIEF1dG9tYWtl LWdlbmVyYXRlZCBNYWtlZmlsZS5pbiBmaWxlcyBkZXBlbmQgb24gTWFrZWZpbGUuYW0sCiMgYW5k IG1ha2VpbmZvLWdlbmVyYXRlZCAnLmluZm8nIGZpbGVzIGRlcGVuZCBvbiB0aGUKIyBjb3JyZXNw b25kaW5nICcudGV4aScgZmlsZXMuCnRvdWNoICQoZ2l0IGxzLWZpbGVzICcqL01ha2VmaWxlLmlu JyAnKi5pbmZvJykKQGVuZCBzbWFsbGV4YW1wbGUKCkBpdGVtCkluIGRpc3RyaWJ1dGVkIGRldmVs b3BtZW50LCBkZXZlbG9wZXJzIGFyZSBsaWtlbHkgdG8gaGF2ZSBkaWZmZXJlbnQKdmVyc2lvbnMg b2YgdGhlIG1haW50YWluZXIgdG9vbHMgaW5zdGFsbGVkLiAgSW4gdGhpcyBjYXNlIHJlYnVpbGRz CnRyaWdnZXJlZCBieSBjbG9jayBza2V3IGNhbiBsZWFkIHRvIHNwdXJpb3VzIGNoYW5nZXMgdG8g Z2VuZXJhdGVkCmZpbGVzLiAgVGhlcmUgYXJlIHNldmVyYWwgc29sdXRpb25zIHRvIHRoaXM6CgpA aXRlbWl6ZQpAaXRlbQpBbGwgZGV2ZWxvcGVycyBzaG91bGQgdXNlIHRoZSBzYW1lIHZlcnNpb25z LCBzbyB0aGF0IHRoZSByZWJ1aWx0IGZpbGVzCmFyZSBpZGVudGljYWwgdG8gZmlsZXMgaW4gdGhl IHJlcG9zaXRvcnkuICAoVGhpcyBiZWNvbWVzIGRpZmZpY3VsdAp3aGVuIGRpZmZlcmVudCBwcm9q ZWN0cyBvbiB3aGljaCB5b3UgYXJlIHdvcmtpbmcgdXNlIGRpZmZlcmVudCB2ZXJzaW9ucy4pCkBp dGVtCk9yIHBlb3BsZSB1c2UgYSBzY3JpcHQgdG8gZml4IHRoZSB0aW1lc3RhbXAgYWZ0ZXIgYSBj aGVja291dCAodGhlIEdDQwpmb2xrcyBoYXZlIHN1Y2ggYSBzY3JpcHQpLgpAaXRlbQpPciBAZmls ZXtjb25maWd1cmUuYWN9IHVzZXMgQGNvZGV7QU1fTUFJTlRBSU5FUl9NT0RFfSwgd2hpY2ggZGlz YWJsZXMKYWxsIG9mIHRoZXNlIHJlYnVpbGQgcnVsZXMgYnkgZGVmYXVsdC4gIFRoaXMgaXMgZnVy dGhlciBkaXNjdXNzZWQgaW4KQHJlZnttYWludGFpbmVyLW1vZGV9LgpAZW5kIGl0ZW1pemUKCkBp dGVtCkFsdGhvdWdoIHdlIGZvY3VzZWQgb24gc3B1cmlvdXMgcmVidWlsZHMsIHRoZSBjb252ZXJz ZSBjYW4gYWxzbwpoYXBwZW4uICBWZXJzaW9uIGNvbnRyb2wgdGltZXN0YW1wIGhhbmRsaW5nIGNh biBhbHNvIGxldCB5b3UgdGhpbmsgYW4Kb3V0LW9mLWRhdGUgZmlsZSBpcyB1cC10by1kYXRlLgoK Rm9yIGluc3RhbmNlLCBzdXBwb3NlIGEgZGV2ZWxvcGVyIGhhcyBtb2RpZmllZCBAZmlsZXtNYWtl ZmlsZS5hbX0gYW5kCmhhcyByZWJ1aWx0IEBmaWxle01ha2VmaWxlLmlufSwgYW5kIHRoZW4gZGVj aWRlcyB0byBkbyBhIGxhc3QtbWludXRlCmNoYW5nZSB0byBAZmlsZXtNYWtlZmlsZS5hbX0gcmln aHQgYmVmb3JlIGNoZWNraW5nIGluIGJvdGggZmlsZXMKKHdpdGhvdXQgcmVidWlsZGluZyBAZmls ZXtNYWtlZmlsZS5pbn0gdG8gYWNjb3VudCBmb3IgdGhlIGNoYW5nZSkuCgpUaGlzIGxhc3QgY2hh bmdlIHRvIEBmaWxle01ha2VmaWxlLmFtfSBtYWtlcyB0aGUgY29weSBvZgpAZmlsZXtNYWtlZmls ZS5pbn0gb3V0LW9mLWRhdGUuICBBc3N1bWluZyB2ZXJzaW9uIGNvbnRyb2wgcHJvY2Vzc2VzCmZp bGVzIGFscGhhYmV0aWNhbGx5LCB3aGVuIGFub3RoZXIgZGV2ZWxvcGVyIHVwZGF0ZXMgdGhlaXIg dHJlZSwKQGZpbGV7TWFrZWZpbGUuaW59IHdpbGwgaGFwcGVuIHRvIGJlIG5ld2VyIHRoYW4gQGZp bGV7TWFrZWZpbGUuYW19LgpUaGlzIG90aGVyIGRldmVsb3BlciB3aWxsIG5vdCBzZWUgdGhhdCBA ZmlsZXtNYWtlZmlsZS5pbn0gaXMKb3V0LW9mLWRhdGUuCgpAZW5kIGl0ZW1pemUKCkBzdWJzdWJo ZWFkaW5nIEdlbmVyYXRlZCBGaWxlcyBvdXQgb2YgVmVyc2lvbiBDb250cm9sCgpPbmUgd2F5IHRv IGdldCB2ZXJzaW9uIGNvbnRyb2wgYW5kIEBjb21tYW5ke21ha2V9IHdvcmtpbmcgcGVhY2VmdWxs eQppcyB0byBuZXZlciBzdG9yZSBnZW5lcmF0ZWQgZmlsZXMgaW4gdmVyc2lvbiBjb250cm9sLCBp LmUuLCBkbyBub3QKdmVyc2lvbi1jb250cm9sIGZpbGVzIHRoYXQgYXJlIEBmaWxle01ha2VmaWxl fSB0YXJnZXRzIChhbHNvIGNhbGxlZApAZW1waHtkZXJpdmVkfSBmaWxlcykuCgpUaGlzIHdheSBk ZXZlbG9wZXJzIGFyZSBub3QgYW5ub3llZCBieSBjaGFuZ2VzIHRvIGdlbmVyYXRlZCBmaWxlcy4g IEl0CmRvZXMgbm90IG1hdHRlciBpZiB0aGV5IGFsbCBoYXZlIGRpZmZlcmVudCB2ZXJzaW9ucyAo YXNzdW1pbmcgdGhleSBhcmUKY29tcGF0aWJsZSwgb2YgY291cnNlKS4gIEFuZCBmaW5hbGx5LCB0 aW1lc3RhbXBzIGFyZSBub3QgbG9zdDsgY2hhbmdlcwp0byBzb3VyY2UgZmlsZXMgY2FuJ3QgYmUg bWlzc2VkIGFzIGluIHRoZQpAZmlsZXtNYWtlZmlsZS5hbX0vQGZpbGV7TWFrZWZpbGUuaW59IGV4 YW1wbGUgZGlzY3Vzc2VkIGVhcmxpZXIuCgpUaGUgZHJhd2JhY2sgaXMgdGhhdCB0aGUgcmVwb3Np dG9yeSBkb2VzIG5vdCBjb250YWluIHNvbWUgZmlsZXMgdGhhdAphcmUgaXMgZGlzdHJpYnV0ZWQs IHNvIGJ1aWxkZXJzIG5vdyBuZWVkIHRvIGluc3RhbGwgdmFyaW91cwpkZXZlbG9wbWVudCB0b29s cyAobWF5YmUgZXZlbiBzcGVjaWZpYyB2ZXJzaW9ucykgYmVmb3JlIHRoZXkgY2FuIGJ1aWxkCmEg Y2hlY2tvdXQuICBCdXQsIGFmdGVyIGFsbCwgdGhlIGpvYiBvZiB2ZXJzaW9uIGNvbnRyb2wgaXMg dmVyc2lvbmluZywKbm90IGRpc3RyaWJ1dGlvbi4KCkFsbG93aW5nIGRldmVsb3BlcnMgdG8gdXNl IGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGVpciB0b29scyBjYW4gYWxzbwpoaWRlIGJ1Z3MgZHVy aW5nIGRpc3RyaWJ1dGVkIGRldmVsb3BtZW50LiAgSW5kZWVkLCBkZXZlbG9wZXJzIHdpbGwgYmUK dXNpbmcgKGhlbmNlIHRlc3RpbmcpIHRoZWlyIG93biBnZW5lcmF0ZWQgZmlsZXMsIGluc3RlYWQg b2YgdGhlCmdlbmVyYXRlZCBmaWxlcyB0aGF0IHdpbGwgYmUgcmVsZWFzZWQuICBUaGUgZGV2ZWxv cGVyIHdobyBwcmVwYXJlcyB0aGUKdGFyYmFsbCBtaWdodCBiZSB1c2luZyBhIHZlcnNpb24gb2Yg dGhlIHRvb2wgdGhhdCBwcm9kdWNlcyBib2d1cwpvdXRwdXQgKGZvciBpbnN0YW5jZSBhIG5vbi1w b3J0YWJsZSBDIGZpbGUpLCBzb21ldGhpbmcgb3RoZXIKZGV2ZWxvcGVycyBjb3VsZCBoYXZlIG5v dGljZWQgaWYgdGhleSB3ZXJlbid0IHVzaW5nIHRoZWlyIG93biB2ZXJzaW9ucwpvZiB0aGlzIHRv b2wuCgpAc3ViaGVhZGluZyBUaGlyZC1wYXJ0eSBGaWxlcwpAY2luZGV4IHZlcnNpb24gY29udHJv bCBhbmQgdGhpcmQtcGFydHkgZmlsZXMKQGNpbmRleCB0aGlyZC1wYXJ0eSBmaWxlcyBhbmQgdmVy c2lvbiBjb250cm9sCgpBbm90aGVyIGNsYXNzIG9mIGZpbGVzIG5vdCBkaXNjdXNzZWQgaGVyZSAo YmVjYXVzZSB0aGV5IGRvIG5vdCBjYXVzZQp0aW1lc3RhbXAgaXNzdWVzKSBhcmUgZmlsZXMgdGhh dCBhcmUgc2hpcHBlZCB3aXRoIGEgcGFja2FnZSwgYnV0Cm1haW50YWluZWQgZWxzZXdoZXJlLiAg Rm9yIGluc3RhbmNlLCB0b29scyBsaWtlIEBjb21tYW5ke2dldHRleHRpemV9CmFuZCBAY29tbWFu ZHthdXRvcG9pbnR9IChmcm9tIEdldHRleHQpIG9yIEBjb21tYW5ke2xpYnRvb2xpemV9IChmcm9t CkxpYnRvb2wpLCB3aWxsIGluc3RhbGwgb3IgdXBkYXRlIGZpbGVzIGluIHlvdXIgcGFja2FnZS4K ClRoZXNlIGZpbGVzLCB3aGV0aGVyIHRoZXkgYXJlIGtlcHQgdW5kZXIgdmVyc2lvbiBjb250cm9s IG9yIG5vdCwgcmFpc2UKc2ltaWxhciBjb25jZXJucyBhYm91dCB2ZXJzaW9uIG1pc21hdGNoIGJl dHdlZW4gZGV2ZWxvcGVycycgdG9vbHMuClRoZSBHZXR0ZXh0IG1hbnVhbCBoYXMgYSBzZWN0aW9u IGFib3V0IHRoaXM7IHNlZSBAcmVme1ZlcnNpb24gQ29udHJvbApJc3N1ZXMsLCBJbnRlZ3JhdGlu ZyB3aXRoIFZlcnNpb24gQ29udHJvbCBTeXN0ZW1zLCBnZXR0ZXh0LCBHTlUKZ2V0dGV4dCB0b29s c30uCgpAbm9kZSBtYWludGFpbmVyLW1vZGUKQHNlY3Rpb24gQGNvbW1hbmR7bWlzc2luZ30gYW5k IEBjb2Rle0FNX01BSU5UQUlORVJfTU9ERX0KCkBzdWJoZWFkaW5nIEBjb21tYW5ke21pc3Npbmd9 CkBjaW5kZXggQGNvbW1hbmR7bWlzc2luZ30sIHB1cnBvc2UKClRoZSBAY29tbWFuZHttaXNzaW5n fSBzY3JpcHQgaXMgYSB3cmFwcGVyIGFyb3VuZCBzZXZlcmFsIG1haW50YWluZXIKdG9vbHMsIGRl c2lnbmVkIHRvIHdhcm4gdXNlcnMgaWYgYSBtYWludGFpbmVyIHRvb2wgaXMgcmVxdWlyZWQgYnV0 Cm1pc3NpbmcuICBUeXBpY2FsIG1haW50YWluZXIgdG9vbHMgYXJlIEBjb21tYW5ke2F1dG9jb25m fSwKQGNvbW1hbmR7YXV0b21ha2V9LCBAY29tbWFuZHtiaXNvbn0sIGV0Yy4gIEJlY2F1c2UgZmls ZXMgZ2VuZXJhdGVkIGJ5CnRoZXNlIHRvb2xzIGFyZSBzaGlwcGVkIHdpdGggdGhlIG90aGVyIHNv dXJjZXMgb2YgYSBwYWNrYWdlLCB0aGVzZQp0b29scyBzaG91bGRuJ3QgYmUgcmVxdWlyZWQgZHVy aW5nIGEgdXNlciBidWlsZCBhbmQgdGhleSBhcmUgbm90CmNoZWNrZWQgZm9yIGluIEBmaWxle2Nv bmZpZ3VyZX0uCgpIb3dldmVyLCBpZiBmb3Igc29tZSByZWFzb24gYSByZWJ1aWxkIHJ1bGUgaXMg dHJpZ2dlcmVkIGFuZCBpbnZvbHZlcyBhCm1pc3NpbmcgdG9vbCwgQGNvbW1hbmR7bWlzc2luZ30g d2lsbCBub3RpY2UgaXQgYW5kIHdhcm4gdGhlIHVzZXIsIGV2ZW4Kc3VnZ2VzdGluZyBob3cgdG8g b2J0YWluIHN1Y2ggYSB0b29sIChhdCBsZWFzdCBpbiBjYXNlIGl0IGlzIGEgd2VsbC1rbm93bgpv bmUsIGxpa2UgQGNvbW1hbmR7bWFrZWluZm99IG9yIEBjb21tYW5ke2Jpc29ufSkuICBUaGlzIGlz IG1vcmUgaGVscGZ1bAphbmQgdXNlci1mcmllbmRseSB0aGFuIGp1c3QgaGF2aW5nIHRoZSByZWJ1 aWxkIHJ1bGVzIHNwZXdpbmcgb3V0IGEgdGVyc2UKZXJyb3IgbWVzc2FnZSBsaWtlIEBzYW1we3No OiBAdmFye3Rvb2x9OiBjb21tYW5kIG5vdCBmb3VuZH0uICBTaW1pbGFybHksCkBjb21tYW5ke21p c3Npbmd9IHdpbGwgd2FybiB0aGUgdXNlciBpZiBpdCBkZXRlY3RzIHRoYXQgYSBtYWludGFpbmVy CnRvb2wgaXQgYXR0ZW1wdGVkIHRvIHVzZSBzZWVtcyB0b28gb2xkIChiZSB3YXJuZWQgdGhhdCBk aWFnbm9zaW5nIHRoaXMKY29ycmVjdGx5IGlzIHR5cGljYWxseSBtb3JlIGRpZmZpY3VsdCB0aGFu IGRldGVjdGluZyBtaXNzaW5nIHRvb2xzLCBhbmQKcmVxdWlyZXMgY29vcGVyYXRpb24gZnJvbSB0 aGUgdG9vbCBpdHNlbGYsIHNvIGl0IHdvbid0IGFsd2F5cyB3b3JrKS4KCklmIHRoZSByZXF1aXJl ZCB0b29sIGlzIGluc3RhbGxlZCwgQGNvbW1hbmR7bWlzc2luZ30gd2lsbCBydW4gaXQgYW5kCndv bid0IGF0dGVtcHQgdG8gY29udGludWUgYWZ0ZXIgZmFpbHVyZXMuICBUaGlzIGlzIGNvcnJlY3Qg YmVoYXZpb3IgZHVyaW5nCmRldmVsb3BtZW50OiBkZXZlbG9wZXJzIGxvdmUgZml4aW5nIGZhaWx1 cmVzLiAgSG93ZXZlciwgdXNlcnMgd2l0aAptaXNzaW5nIG9yIHRvbyBvbGQgbWFpbnRhaW5lciB0 b29scyBtYXkgZ2V0IGFuIGVycm9yIHdoZW4gdGhlIHJlYnVpbGQKcnVsZSBpcyBzcHVyaW91c2x5 IHRyaWdnZXJlZCwgaGFsdGluZyB0aGUgYnVpbGQuICBUaGlzIGZhaWx1cmUgdG8gbGV0CnRoZSBi dWlsZCBjb250aW51ZSBpcyBvbmUgb2YgdGhlIGFyZ3VtZW50cyBvZiB0aGUKQGNvZGV7QU1fTUFJ TlRBSU5FUl9NT0RFfSBhZHZvY2F0ZXMuCgpAc3ViaGVhZGluZyBAY29kZXtBTV9NQUlOVEFJTkVS X01PREV9CkBjaW5kZXggQGNvZGV7QU1fTUFJTlRBSU5FUl9NT0RFfSwgcHVycG9zZQpAYWNpbmRl eCBBTV9NQUlOVEFJTkVSX01PREUKCkBjb2Rle0FNX01BSU5UQUlORVJfTU9ERX0gYWxsb3dzIHlv dSB0byBjaG9vc2Ugd2hldGhlciB0aGUgc28gY2FsbGVkCiJyZWJ1aWxkIHJ1bGVzIiBzaG91bGQg YmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gIFdpdGgKQGNvZGV7QU1fTUFJTlRBSU5FUl9NT0RFKFtl bmFibGVdKX0sIHRoZXkgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdDsKb3RoZXJ3aXNlIHRoZXkgYXJl IGRpc2FibGVkIGJ5IGRlZmF1bHQuICBJbiB0aGUgbGF0dGVyIGNhc2UsIGlmIHlvdQpoYXZlIEBj b2Rle0FNX01BSU5UQUlORVJfTU9ERX0gaW4gQGZpbGV7Y29uZmlndXJlLmFjfSwgYW5kIHJ1bgpA c2FtcHsuL2NvbmZpZ3VyZSAmJiBtYWtlfSwgdGhlbiBAY29tbWFuZHttYWtlfSB3aWxsICpuZXZl ciogYXR0ZW1wdAp0byByZWJ1aWxkIEBmaWxle2NvbmZpZ3VyZX0sIEBmaWxle01ha2VmaWxlLmlu fXMsIExleCBvciBZYWNjIG91dHB1dHMsCmV0Yy4gIFRoYXQgaXMsIHRoaXMgZGlzYWJsZXMgYnVp bGQgcnVsZXMgZm9yIGZpbGVzIHRoYXQgYXJlIHVzdWFsbHkKZGlzdHJpYnV0ZWQgYW5kIHRoYXQg dXNlcnMgc2hvdWxkIG5vcm1hbGx5IG5vdCBoYXZlIHRvIHVwZGF0ZS4KClRoZSB1c2VyIGNhbiBv dmVycmlkZSB0aGUgZGVmYXVsdCBzZXR0aW5nIGJ5IHBhc3NpbmcgZWl0aGVyCkBzYW1wey0tZW5h YmxlLW1haW50YWluZXItbW9kZX0gb3IgQHNhbXB7LS1kaXNhYmxlLW1haW50YWluZXItbW9kZX0K dG8gQGNvbW1hbmR7Y29uZmlndXJlfS4KClBlb3BsZSB1c2UgQGNvZGV7QU1fTUFJTlRBSU5FUl9N T0RFfSBlaXRoZXIgYmVjYXVzZSB0aGV5IGRvIG5vdCB3YW50IHRoZWlyCnVzZXJzIChvciB0aGVt c2VsdmVzKSBhbm5veWVkIGJ5IGNsb2NrIHNrZXcgKEBweHJlZntWZXJzaW9uIENvbnRyb2x9KSwg b3IKYmVjYXVzZSB0aGV5IHNpbXBseSBjYW4ndCBzdGFuZCB0aGUgcmVidWlsZCBydWxlcyBhbmQg cHJlZmVyIHJ1bm5pbmcKbWFpbnRhaW5lciB0b29scyBleHBsaWNpdGx5LgoKQGNvZGV7QU1fTUFJ TlRBSU5FUl9NT0RFfSBhbHNvIGFsbG93cyB5b3UgdG8gZGlzYWJsZSBzb21lIGN1c3RvbSBidWls ZApydWxlcyBjb25kaXRpb25hbGx5LiAgU29tZSBkZXZlbG9wZXJzIHVzZSB0aGlzIGZlYXR1cmUg dG8gZGlzYWJsZQpydWxlcyB0aGF0IG5lZWQgZXhvdGljIHRvb2xzIHRoYXQgdXNlcnMgbWF5IG5v dCBoYXZlIGF2YWlsYWJsZS4KClNldmVyYWwgeWVhcnMgYWdvIEZyYW5ALHtjfW9pcyBQaW5hcmQg cG9pbnRlZCBvdXQgc2V2ZXJhbCBhcmd1bWVudHMKYWdhaW5zdCB0aGlzIEBjb2Rle0FNX01BSU5U QUlORVJfTU9ERX0gbWFjcm8uICBNb3N0IG9mIHRoZW0gcmVsYXRlIHRvCmluc2VjdXJpdHkuICBC eSByZW1vdmluZyBkZXBlbmRlbmNpZXMgeW91IGdldCBub24tZGVwZW5kYWJsZSBidWlsZHM6CmNo YW5nZXMgdG8gc291cmNlIGZpbGVzIGNhbiBoYXZlIG5vIGVmZmVjdCBvbiBnZW5lcmF0ZWQgZmls ZXMgYW5kIHRoaXMKY2FuIGJlIHZlcnkgY29uZnVzaW5nIHdoZW4gdW5ub3RpY2VkLiAgSGUgYWRk cyB0aGF0IHNlY3VyaXR5IHNob3VsZG4ndApiZSByZXNlcnZlZCB0byBtYWludGFpbmVycyAod2hh dCBAb3B0aW9uey0tZW5hYmxlLW1haW50YWluZXItbW9kZX0Kc3VnZ2VzdHMpLCBvbiB0aGUgY29u dHJhcnkuICBJZiBvbmUgdXNlciBoYXMgdG8gbW9kaWZ5IGEKQGZpbGV7TWFrZWZpbGUuYW19LCB0 aGVuIGVpdGhlciBAZmlsZXtNYWtlZmlsZS5pbn0gc2hvdWxkIGJlIHVwZGF0ZWQKb3IgYSB3YXJu aW5nIHNob3VsZCBiZSBvdXRwdXQgKHRoaXMgaXMgd2hhdCBBdXRvbWFrZSB1c2VzCkBjb21tYW5k e21pc3Npbmd9IGZvcikgYnV0IHRoZSBsYXN0IHRoaW5nIHlvdSB3YW50IGlzIHRoYXQgbm90aGlu ZwpoYXBwZW5zIGFuZCB0aGUgdXNlciBkb2Vzbid0IG5vdGljZSBpdCAodGhpcyBpcyB3aGF0IGhh cHBlbnMgd2hlbgpyZWJ1aWxkIHJ1bGVzIGFyZSBkaXNhYmxlZCBieSBAY29kZXtBTV9NQUlOVEFJ TkVSX01PREV9KS4KCkppbSBNZXllcmluZywgdGhlIGludmVudG9yIG9mIHRoZSBAY29kZXtBTV9N QUlOVEFJTkVSX01PREV9IG1hY3JvLCB3YXMKc3dheWVkIGJ5IEZyYW5ALHtjfW9pcycgYXJndW1l bnRzLCBhbmQgZ290IHJpZCBvZgpAY29kZXtBTV9NQUlOVEFJTkVSX01PREV9IGluIGFsbCBvZiBo aXMgcGFja2FnZXMuCgpTdGlsbCBtYW55IHBlb3BsZSBjb250aW51ZSB0byB1c2UgQGNvZGV7QU1f TUFJTlRBSU5FUl9NT0RFfSwgYmVjYXVzZQppdCBoZWxwcyB0aGVtIHdvcmtpbmcgb24gcHJvamVj dHMgd2hlcmUgYWxsIGZpbGVzIGFyZSBrZXB0IHVuZGVyIHZlcnNpb24KY29udHJvbCwgYW5kIGJl Y2F1c2UgQGNvbW1hbmR7bWlzc2luZ30gaXNuJ3QgZW5vdWdoIGlmIHlvdSBoYXZlIHRoZQp3cm9u ZyB2ZXJzaW9uIG9mIHRoZSB0b29scy4KCgpAbm9kZSBXaWxkY2FyZHMKQHNlY3Rpb24gV2h5IGRv ZXNuJ3QgQXV0b21ha2Ugc3VwcG9ydCB3aWxkY2FyZHM/CkBjaW5kZXggd2lsZGNhcmRzCgpEZXZl bG9wZXJzIGFyZSBsYXp5LiAgVGhleSB3b3VsZCBvZnRlbiBsaWtlIHRvIHVzZSB3aWxkY2FyZHMg aW4KQGZpbGV7TWFrZWZpbGUuYW19cywgc28gdGhhdCB0aGV5IHdvdWxkIG5vdCBuZWVkIHRvIHJl bWVtYmVyIHRvCnVwZGF0ZSBAZmlsZXtNYWtlZmlsZS5hbX1zIGV2ZXJ5IHRpbWUgdGhleSBhZGQs IGRlbGV0ZSwgb3IgcmVuYW1lCmEgZmlsZS4KClRoZXJlIGFyZSBzZXZlcmFsIG9iamVjdGlvbnMg dG8gdGhpczoKQGl0ZW1pemUKQGl0ZW0KV2hlbiB1c2luZyB2ZXJzaW9uIGNvbnRyb2wsIGRldmVs b3BlcnMgbmVlZCB0byByZW1lbWJlciB0aGV5IGhhdmUgdG8KYWRkIG9yIHJlbW92ZSBmaWxlcyBm cm9tIHZlcnNpb24gY29udHJvbCBhbnl3YXkuICBVcGRhdGluZwpAZmlsZXtNYWtlZmlsZS5hbX0g YWNjb3JkaW5nbHkgcXVpY2tseSBiZWNvbWVzIGEgcmVmbGV4LgoKQ29udmVyc2VseSwgaWYgeW91 ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNvbXBpbGUKYmVjYXVzZSB5b3UgZm9yZ290IHRvIGFkZCBh IGZpbGUgaW4gQGZpbGV7TWFrZWZpbGUuYW19LCBpdCB3aWxsIGhlbHAKeW91IHJlbWVtYmVyIHRv IGFkZCB0aGUgZmlsZSB0byB2ZXJzaW9uIGNvbnRyb2wuCgpAaXRlbQpVc2luZyB3aWxkY2FyZHMg bWFrZXMgaXQgZWFzeSB0byBkaXN0cmlidXRlIGZpbGVzIGJ5IG1pc3Rha2UuICBGb3IKaW5zdGFu Y2UsIHNvbWUgY29kZSBhIGRldmVsb3BlciBpcyBleHBlcmltZW50aW5nIHdpdGggKGEgdGVzdCBj YXNlLApzYXkpIHRoYXQgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoZSBkaXN0cmlidXRpb24uCgpA aXRlbQpVc2luZyB3aWxkY2FyZHMgaXQncyBlYXN5IHRvIG9taXQgc29tZSBmaWxlcyBieSBtaXN0 YWtlLiAgRm9yCmluc3RhbmNlLCBvbmUgZGV2ZWxvcGVyIGNyZWF0ZXMgYSBuZXcgZmlsZSwgdXNl cyBpdCBpbiBtYW55IHBsYWNlcywKYnV0IGZvcmdldHMgdG8gY29tbWl0IGl0LiAgQW5vdGhlciBk ZXZlbG9wZXIgdGhlbiBjaGVja3Mgb3V0IHRoZQppbmNvbXBsZXRlIHByb2plY3QgYW5kIGlzIGFi bGUgdG8gcnVuIEBzYW1we21ha2UgZGlzdH0gc3VjY2Vzc2Z1bGx5LApldmVuIHRob3VnaCBhIGZp bGUgaXMgbWlzc2luZy4gQnkgbGlzdGluZyBmaWxlcywgQHNhbXB7bWFrZSBkaXN0fQpAZW1waHt3 aWxsfSBjb21wbGFpbi4KCkBpdGVtCldpbGRjYXJkcyBhcmUgbm90IHBvcnRhYmxlIHRvIHNvbWUg bm9uLUdOVSBAY29tbWFuZHttYWtlfSBpbXBsZW1lbnRhdGlvbnMsCmUuZy4sIE5ldEJTRCBAY29t bWFuZHttYWtlfSB3aWxsIG5vdCBleHBhbmQgZ2xvYnMgc3VjaCBhcyBAc2FtcHsqfSBpbgpwcmVy ZXF1aXNpdGVzIG9mIGEgdGFyZ2V0LgoKQGl0ZW0KRmluYWxseSwgaXQncyBxdWl0ZSBoYXJkIHRv IEBlbXBoe2ZvcmdldH0gdG8gYWRkIGEgZmlsZSB0bwpAZmlsZXtNYWtlZmlsZS5hbX06IGZpbGVz IHRoYXQgYXJlIG5vdCBsaXN0ZWQgaW4gQGZpbGV7TWFrZWZpbGUuYW19CmFyZSBub3QgY29tcGls ZWQgb3IgaW5zdGFsbGVkLCBzbyB5b3UgY2FuJ3QgZXZlbiB0ZXN0IHRoZW0uCkBlbmQgaXRlbWl6 ZQoKU3RpbGwsIHRoZXNlIGFyZSBwaGlsb3NvcGhpY2FsIG9iamVjdGlvbnMsIGFuZCBhcyBzdWNo IHlvdSBtYXkgZGlzYWdyZWUsCm9yIGZpbmQgZW5vdWdoIHZhbHVlIGluIHdpbGRjYXJkcyB0byBk aXNtaXNzIGFsbCBvZiB0aGVtLiAgQmVmb3JlIHlvdQpzdGFydCB3cml0aW5nIGEgcGF0Y2ggYWdh aW5zdCBBdXRvbWFrZSB0byB0ZWFjaCBpdCBhYm91dCB3aWxkY2FyZHMsCmxldCdzIHNlZSB0aGUg bWFpbiB0ZWNobmljYWwgaXNzdWU6IHBvcnRhYmlsaXR5LgoKQWx0aG91Z2ggQHNhbXB7JCh3aWxk Y2FyZCAuLi4pfSB3b3JrcyB3aXRoIEdOVSBAY29tbWFuZHttYWtlfSwgaXQgaXMKbm90IHBvcnRh YmxlIHRvIG90aGVyIEBjb21tYW5ke21ha2V9IGltcGxlbWVudGF0aW9ucy4KClRoZSBvbmx5IHdh eSBBdXRvbWFrZSBjb3VsZCBzdXBwb3J0IEBjb21tYW5keyQod2lsZGNhcmQgLi4uKX0gaXMgYnkK ZXhwYW5kaW5nIEBjb21tYW5keyQod2lsZGNhcmQgLi4uKX0gd2hlbiBAY29tbWFuZHthdXRvbWFr ZX0gaXMgcnVuLgpUaGUgcmVzdWx0aW5nIEBmaWxle01ha2VmaWxlLmlufXMgd291bGQgYmUgcG9y dGFibGUgc2luY2UgdGhleSB3b3VsZApsaXN0IGFsbCBmaWxlcyBhbmQgbm90IHVzZSBAc2FtcHsk KHdpbGRjYXJkIC4uLil9LiAgSG93ZXZlciB0aGF0Cm1lYW5zIGRldmVsb3BlcnMgd291bGQgbmVl ZCB0byByZW1lbWJlciB0byBydW4gQGNvbW1hbmR7YXV0b21ha2V9IGVhY2gKdGltZSB0aGV5IGFk ZCwgZGVsZXRlLCBvciByZW5hbWUgZmlsZXMuCgpDb21wYXJlZCB0byBlZGl0aW5nIEBmaWxle01h a2VmaWxlLmFtfSwgdGhpcyBpcyBhIHZlcnkgc21hbGwgZ2Fpbi4gIFN1cmUsCml0J3MgZWFzaWVy IGFuZCBmYXN0ZXIgdG8gdHlwZSBAc2FtcHthdXRvbWFrZTsgbWFrZX0gdGhhbiB0byB0eXBlCkBz YW1we2VtYWNzIE1ha2VmaWxlLmFtOyBtYWtlfS4gIEJ1dCBub2JvZHkgYm90aGVyZWQgZW5vdWdo IHRvIHdyaXRlIGEKcGF0Y2ggdG8gYWRkIHN1cHBvcnQgZm9yIHRoaXMgc3ludGF4LiAgU29tZSBw ZW9wbGUgdXNlIHNjcmlwdHMgdG8KZ2VuZXJhdGUgZmlsZSBsaXN0cyBpbiBAZmlsZXtNYWtlZmls ZS5hbX0gb3IgaW4gc2VwYXJhdGUKQGZpbGV7TWFrZWZpbGV9IGZyYWdtZW50cy4KCkV2ZW4gaWYg eW91IGRvbid0IGNhcmUgYWJvdXQgcG9ydGFiaWxpdHksIGFuZCBhcmUgdGVtcHRlZCB0byB1c2UK QHNhbXB7JCh3aWxkY2FyZCAuLi4pfSBhbnl3YXkgYmVjYXVzZSB5b3UgdGFyZ2V0IG9ubHkgR05V IE1ha2UsIHlvdQpzaG91bGQga25vdyB0aGVyZSBhcmUgbWFueSBwbGFjZXMgd2hlcmUgQXV0b21h a2UgbmVlZHMgdG8ga25vdyBleGFjdGx5CndoaWNoIGZpbGVzIHNob3VsZCBiZSBwcm9jZXNzZWQu ICBBcyBBdXRvbWFrZSBkb2Vzbid0IGtub3cgaG93IHRvCmV4cGFuZCBAc2FtcHskKHdpbGRjYXJk IC4uLil9LCB5b3UgY2Fubm90IHVzZSBpdCBpbiB0aGVzZSBwbGFjZXMuCkBzYW1weyQod2lsZGNh cmQgLi4uKX0gaXMgYSBibGFjayBib3ggY29tcGFyYWJsZSB0byBAY29kZXtBQ19TVUJTVH1lZAp2 YXJpYWJsZXMgYXMgZmFyIEF1dG9tYWtlIGlzIGNvbmNlcm5lZC4KCllvdSBjYW4gZ2V0IHdhcm5p bmdzIGFib3V0IEBzYW1weyQod2lsZGNhcmQgLi4ufSkgY29uc3RydWN0cyB1c2luZyB0aGUKQG9w dGlvbnstV3BvcnRhYmlsaXR5fSBmbGFnLgoKQG5vZGUgTGltaXRhdGlvbnMgb24gRmlsZSBOYW1l cwpAc2VjdGlvbiBMaW1pdGF0aW9ucyBvbiBGaWxlIE5hbWVzCkBjaW5kZXggZmlsZSBuYW1lcywg bGltaXRhdGlvbnMgb24KCkF1dG9tYWtlIGF0dGVtcHRzIHRvIHN1cHBvcnQgYWxsIGtpbmRzIG9m IGZpbGUgbmFtZXMsIGV2ZW4gdGhvc2UgdGhhdApjb250YWluIHVudXN1YWwgY2hhcmFjdGVycyBv ciBhcmUgdW51c3VhbGx5IGxvbmcuICBIb3dldmVyLCBzb21lCmxpbWl0YXRpb25zIGFyZSBpbXBv c2VkIGJ5IHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHRvb2xzLgoKTW9zdCBv cGVyYXRpbmcgc3lzdGVtcyBwcm9oaWJpdCB0aGUgdXNlIG9mIHRoZSBudWxsIGJ5dGUgaW4gZmls ZQpuYW1lcywgYW5kIHJlc2VydmUgQHNhbXB7L30gYXMgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yLiAg QWxzbywgdGhleQpyZXF1aXJlIHRoYXQgZmlsZSBuYW1lcyBhcmUgcHJvcGVybHkgZW5jb2RlZCBm b3IgdGhlIHVzZXIncyBsb2NhbGUuCkF1dG9tYWtlIGlzIHN1YmplY3QgdG8gdGhlc2UgbGltaXRz LgoKUG9ydGFibGUgcGFja2FnZXMgc2hvdWxkIGxpbWl0IHRoZW1zZWx2ZXMgdG8gUE9TSVggZmls ZQpuYW1lcy4gIFRoZXNlIGNhbiBjb250YWluIEFTQ0lJIGxldHRlcnMgYW5kIGRpZ2l0cywKQHNh bXB7X30sIEBzYW1wey59LCBhbmQgQHNhbXB7LX0uICBGaWxlIG5hbWVzIGNvbnNpc3Qgb2YgY29t cG9uZW50cwpzZXBhcmF0ZWQgYnkgQHNhbXB7L30uICBGaWxlIG5hbWUgY29tcG9uZW50cyBjYW5u b3QgYmVnaW4gd2l0aApAc2FtcHstfS4KClBvcnRhYmxlIFBPU0lYIGZpbGUgbmFtZXMgY2Fubm90 IGNvbnRhaW4gY29tcG9uZW50cyB0aGF0IGV4Y2VlZCBhCjE0LWJ5dGUgbGltaXQsIGJ1dCBub3dh ZGF5cyBpdCdzIG5vcm1hbGx5IHNhZmUgdG8gYXNzdW1lIHRoZQptb3JlLWdlbmVyb3VzIFhPUEVO IGxpbWl0IG9mIDI1NSBieXRlcy4gIFBPU0lYCmxpbWl0cyBmaWxlIG5hbWVzIHRvIDI1NSBieXRl cyAoWE9QRU4gYWxsb3dzIDEwMjMgYnl0ZXMpLApidXQgeW91IG1heSB3YW50IHRvIGxpbWl0IGEg c291cmNlIHRhcmJhbGwgdG8gZmlsZSBuYW1lcyBvZiA5OSBieXRlcwp0byBhdm9pZCBpbnRlcm9w ZXJhYmlsaXR5IHByb2JsZW1zIHdpdGggb2xkIHZlcnNpb25zIG9mIEBjb21tYW5ke3Rhcn0uCgpJ ZiB5b3UgZGVwYXJ0IGZyb20gdGhlc2UgcnVsZXMgKGUuZy4sIGJ5IHVzaW5nIG5vbi1BU0NJSQpj aGFyYWN0ZXJzIGluIGZpbGUgbmFtZXMsIG9yIGJ5IHVzaW5nIGxlbmd0aHkgZmlsZSBuYW1lcyks IHlvdXIKaW5zdGFsbGVycyBtYXkgaGF2ZSBwcm9ibGVtcyBmb3IgcmVhc29ucyB1bnJlbGF0ZWQg dG8gQXV0b21ha2UuCkhvd2V2ZXIsIGlmIHRoaXMgZG9lcyBub3QgY29uY2VybiB5b3UsIHlvdSBz aG91bGQga25vdyBhYm91dCB0aGUKbGltaXRhdGlvbnMgaW1wb3NlZCBieSBBdXRvbWFrZSBpdHNl bGYuICBUaGVzZSBsaW1pdGF0aW9ucyBhcmUKdW5kZXNpcmFibGUsIGJ1dCBzb21lIG9mIHRoZW0g c2VlbSB0byBiZSBpbmhlcmVudCB0byB1bmRlcmx5aW5nIHRvb2xzCmxpa2UgQXV0b2NvbmYsIE1h a2UsIE00LCBhbmQgdGhlIHNoZWxsLiAgVGhleSBmYWxsIGludG8gdGhyZWUKY2F0ZWdvcmllczog aW5zdGFsbCBkaXJlY3RvcmllcywgYnVpbGQgZGlyZWN0b3JpZXMsIGFuZCBmaWxlIG5hbWVzLgoK VGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOgoKQGV4YW1wbGUKQHJ7bmV3bGluZX0gIiAjICQgJyBg CkBlbmQgZXhhbXBsZQoKc2hvdWxkIG5vdCBhcHBlYXIgaW4gdGhlIG5hbWVzIG9mIGluc3RhbGwg ZGlyZWN0b3JpZXMuICBGb3IgZXhhbXBsZSwKdGhlIG9wZXJhbmQgb2YgQGNvbW1hbmR7Y29uZmln dXJlfSdzIEBvcHRpb257LS1wcmVmaXh9IG9wdGlvbiBzaG91bGQKbm90IGNvbnRhaW4gdGhlc2Ug Y2hhcmFjdGVycy4KCkJ1aWxkIGRpcmVjdG9yaWVzIHN1ZmZlciB0aGUgc2FtZSBsaW1pdGF0aW9u cyBhcyBpbnN0YWxsIGRpcmVjdG9yaWVzLAphbmQgaW4gYWRkaXRpb24gc2hvdWxkIG5vdCBjb250 YWluIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczoKCkBleGFtcGxlCiYgQEAgXApAZW5kIGV4YW1w bGUKCkZvciBleGFtcGxlLCB0aGUgZnVsbCBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmlu ZyB0aGUgc291cmNlCmZpbGVzIHNob3VsZCBub3QgY29udGFpbiB0aGVzZSBjaGFyYWN0ZXJzLgoK U291cmNlIGFuZCBpbnN0YWxsYXRpb24gZmlsZSBuYW1lcyBsaWtlIEBmaWxle21haW4uY30gYXJl IGxpbWl0ZWQgZXZlbgpmdXJ0aGVyOiB0aGV5IHNob3VsZCBjb25mb3JtIHRvIHRoZSBQT1NJWC9Y T1BFTgpydWxlcyBkZXNjcmliZWQgYWJvdmUuICBJbiBhZGRpdGlvbiwgaWYgeW91IHBsYW4gdG8g cG9ydCB0bwpub24tUE9TSVggZW52aXJvbm1lbnRzLCB5b3Ugc2hvdWxkIGF2b2lkIGZpbGUgbmFt ZXMgdGhhdApkaWZmZXIgb25seSBpbiBjYXNlIChlLmcuLCBAZmlsZXttYWtlZmlsZX0gYW5kIEBm aWxle01ha2VmaWxlfSkuCk5vd2FkYXlzIGl0IGlzIG5vIGxvbmdlciB3b3J0aCB3b3JyeWluZyBh Ym91dCB0aGUgOC4zIGxpbWl0cyBvZgpET1MgZmlsZSBzeXN0ZW1zLgoKQG5vZGUgRmxhZyBWYXJp YWJsZXMgT3JkZXJpbmcKQHNlY3Rpb24gRmxhZyBWYXJpYWJsZXMgT3JkZXJpbmcKQGNpbmRleCBP cmRlcmluZyBmbGFnIHZhcmlhYmxlcwpAY2luZGV4IEZsYWcgdmFyaWFibGVzLCBvcmRlcmluZwoK QGRpc3BsYXkKV2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEBjb2Rle0FNX0NGTEFHU30s IEBjb2Rle0NGTEFHU30sIGFuZApAY29kZXttdW1ibGVfQ0ZMQUdTfT8KQGVuZCBkaXNwbGF5CgpA ZGlzcGxheQpXaHkgZG9lcyBAY29tbWFuZHthdXRvbWFrZX0gb3V0cHV0IEBjb2Rle0NQUEZMQUdT fSBhZnRlcgpAY29kZXtBTV9DUFBGTEFHU30gb24gY29tcGlsZSBsaW5lcz8gIFNob3VsZG4ndCBp dCBiZSB0aGUgY29udmVyc2U/CkBlbmQgZGlzcGxheQoKQGRpc3BsYXkKTXkgQGZpbGV7Y29uZmln dXJlfSBhZGRzIHNvbWUgd2FybmluZyBmbGFncyBpbnRvIEBjb2Rle0NYWEZMQUdTfS4gIEluCm9u ZSBAZmlsZXtNYWtlZmlsZS5hbX0gSSB3b3VsZCBsaWtlIHRvIGFwcGVuZCBhIG5ldyBmbGFnLCBo b3dldmVyIGlmIEkKcHV0IHRoZSBmbGFnIGludG8gQGNvZGV7QU1fQ1hYRkxBR1N9IGl0IGlzIHBy ZXBlbmRlZCB0byB0aGUgb3RoZXIKZmxhZ3MsIG5vdCBhcHBlbmRlZC4KQGVuZCBkaXNwbGF5CgpA c3ViaGVhZGluZyBDb21waWxlIEZsYWcgVmFyaWFibGVzCkBjaW5kZXggRmxhZyBWYXJpYWJsZXMs IE9yZGVyaW5nCkBjaW5kZXggQ29tcGlsZSBGbGFnIFZhcmlhYmxlcwpAY2luZGV4IEBjb2Rle0FN X0NDQVNGTEFHU30gYW5kIEBjb2Rle0NDQVNGTEFHU30KQGNpbmRleCBAY29kZXtBTV9DRkxBR1N9 IGFuZCBAY29kZXtDRkxBR1N9CkBjaW5kZXggQGNvZGV7QU1fQ1BQRkxBR1N9IGFuZCBAY29kZXtD UFBGTEFHU30KQGNpbmRleCBAY29kZXtBTV9DWFhGTEFHU30gYW5kIEBjb2Rle0NYWEZMQUdTfQpA Y2luZGV4IEBjb2Rle0FNX0ZDRkxBR1N9IGFuZCBAY29kZXtGQ0ZMQUdTfQpAY2luZGV4IEBjb2Rl e0FNX0ZGTEFHU30gYW5kIEBjb2Rle0ZGTEFHU30KQGNpbmRleCBAY29kZXtBTV9HQ0pGTEFHU30g YW5kIEBjb2Rle0dDSkZMQUdTfQpAY2luZGV4IEBjb2Rle0FNX0xERkxBR1N9IGFuZCBAY29kZXtM REZMQUdTfQpAY2luZGV4IEBjb2Rle0FNX0xGTEFHU30gYW5kIEBjb2Rle0xGTEFHU30KQGNpbmRl eCBAY29kZXtBTV9MSUJUT09MRkxBR1N9IGFuZCBAY29kZXtMSUJUT09MRkxBR1N9CkBjaW5kZXgg QGNvZGV7QU1fT0JKQ0ZMQUdTfSBhbmQgQGNvZGV7T0JKQ0ZMQUdTfQpAY2luZGV4IEBjb2Rle0FN X09CSkNYWEZMQUdTfSBhbmQgQGNvZGV7T0JKWFhDRkxBR1N9CkBjaW5kZXggQGNvZGV7QU1fUkZM QUdTfSBhbmQgQGNvZGV7UkZMQUdTfQpAY2luZGV4IEBjb2Rle0FNX1VQQ0ZMQUdTfSBhbmQgQGNv ZGV7VVBDRkxBR1N9CkBjaW5kZXggQGNvZGV7QU1fWUZMQUdTfSBhbmQgQGNvZGV7WUZMQUdTfQpA Y2luZGV4IEBjb2Rle0NDQVNGTEFHU30gYW5kIEBjb2Rle0FNX0NDQVNGTEFHU30KQGNpbmRleCBA Y29kZXtDRkxBR1N9IGFuZCBAY29kZXtBTV9DRkxBR1N9CkBjaW5kZXggQGNvZGV7Q1BQRkxBR1N9 IGFuZCBAY29kZXtBTV9DUFBGTEFHU30KQGNpbmRleCBAY29kZXtDWFhGTEFHU30gYW5kIEBjb2Rl e0FNX0NYWEZMQUdTfQpAY2luZGV4IEBjb2Rle0ZDRkxBR1N9IGFuZCBAY29kZXtBTV9GQ0ZMQUdT fQpAY2luZGV4IEBjb2Rle0ZGTEFHU30gYW5kIEBjb2Rle0FNX0ZGTEFHU30KQGNpbmRleCBAY29k ZXtHQ0pGTEFHU30gYW5kIEBjb2Rle0FNX0dDSkZMQUdTfQpAY2luZGV4IEBjb2Rle0xERkxBR1N9 IGFuZCBAY29kZXtBTV9MREZMQUdTfQpAY2luZGV4IEBjb2Rle0xGTEFHU30gYW5kIEBjb2Rle0FN X0xGTEFHU30KQGNpbmRleCBAY29kZXtMSUJUT09MRkxBR1N9IGFuZCBAY29kZXtBTV9MSUJUT09M RkxBR1N9CkBjaW5kZXggQGNvZGV7T0JKQ0ZMQUdTfSBhbmQgQGNvZGV7QU1fT0JKQ0ZMQUdTfQpA Y2luZGV4IEBjb2Rle09CSkNYWEZMQUdTfSBhbmQgQGNvZGV7QU1fT0JKQ1hYRkxBR1N9CkBjaW5k ZXggQGNvZGV7UkZMQUdTfSBhbmQgQGNvZGV7QU1fUkZMQUdTfQpAY2luZGV4IEBjb2Rle1VQQ0ZM QUdTfSBhbmQgQGNvZGV7QU1fVVBDRkxBR1N9CkBjaW5kZXggQGNvZGV7WUZMQUdTfSBhbmQgQGNv ZGV7QU1fWUZMQUdTfQoKVGhpcyBzZWN0aW9uIGF0dGVtcHRzIHRvIGFuc3dlciBhbGwgdGhlIGFi b3ZlIHF1ZXN0aW9ucy4gIFdlIHdpbGwKbW9zdGx5IGRpc2N1c3MgQGNvZGV7Q1BQRkxBR1N9IGlu IG91ciBleGFtcGxlcywgYnV0IHRoZSBhbnN3ZXIgaG9sZHMKZm9yIGFsbCB0aGUgY29tcGlsZSBm bGFncyB1c2VkIGluIEF1dG9tYWtlOiBAY29kZXtDQ0FTRkxBR1N9LApAY29kZXtDRkxBR1N9LCBA Y29kZXtDUFBGTEFHU30sIEBjb2Rle0NYWEZMQUdTfSwgQGNvZGV7RkNGTEFHU30sCkBjb2Rle0ZG TEFHU30sIEBjb2Rle0dDSkZMQUdTfSwgQGNvZGV7TERGTEFHU30sIEBjb2Rle0xGTEFHU30sCkBj b2Rle0xJQlRPT0xGTEFHU30sIEBjb2Rle09CSkNGTEFHU30sIEBjb2Rle09CSkNYWEZMQUdTfSwK QGNvZGV7UkZMQUdTfSwgQGNvZGV7VVBDRkxBR1N9LCBhbmQgQGNvZGV7WUZMQUdTfS4KCkBjb2Rl e0NQUEZMQUdTfSwgQGNvZGV7QU1fQ1BQRkxBR1N9LCBhbmQgQGNvZGV7bXVtYmxlX0NQUEZMQUdT fSBhcmUKdGhyZWUgdmFyaWFibGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFzcyBmbGFncyB0byB0 aGUgQyBwcmVwcm9jZXNzb3IgKAp0aGVzZSB2YXJpYWJsZXMgYXJlIGFsc28gdXNlZCBmb3Igb3Ro ZXIgbGFuZ3VhZ2VzIGxpa2UgQysrIG9yCnByZXByb2Nlc3NlZCBGb3J0cmFuKS4gIEBjb2Rle0NQ UEZMQUdTfSBpcyB0aGUgdXNlciB2YXJpYWJsZQooQHB4cmVme1VzZXIgVmFyaWFibGVzfSksIEBj b2Rle0FNX0NQUEZMQUdTfSBpcyB0aGUgQXV0b21ha2UgdmFyaWFibGUsCmFuZCBAY29kZXttdW1i bGVfQ1BQRkxBR1N9IGlzIHRoZSB2YXJpYWJsZSBzcGVjaWZpYyB0byB0aGUKQGNvZGV7bXVtYmxl fSB0YXJnZXQgKHdlIGNhbGwgdGhpcyBhIHBlci10YXJnZXQgdmFyaWFibGUsCkBweHJlZntQcm9n cmFtIGFuZCBMaWJyYXJ5IFZhcmlhYmxlc30pLgoKQXV0b21ha2UgYWx3YXlzIHVzZXMgdHdvIG9m IHRoZXNlIHZhcmlhYmxlcyB3aGVuIGNvbXBpbGluZyBDIHNvdXJjZXMKZmlsZXMuICBXaGVuIGNv bXBpbGluZyBhbiBvYmplY3QgZmlsZSBmb3IgdGhlIEBjb2Rle211bWJsZX0gdGFyZ2V0LAp0aGUg Zmlyc3QgdmFyaWFibGUgd2lsbCBiZSBAY29kZXttdW1ibGVfQ1BQRkxBR1N9IGlmIGl0IGlzIGRl ZmluZWQsIG9yCkBjb2Rle0FNX0NQUEZMQUdTfSBvdGhlcndpc2UuICBUaGUgc2Vjb25kIHZhcmlh YmxlIGlzIGFsd2F5cwpAY29kZXtDUFBGTEFHU30uCgpJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUs CgpAZXhhbXBsZQpiaW5fUFJPR1JBTVMgPSBmb28gYmFyCmZvb19TT1VSQ0VTID0geHl6LmMKYmFy X1NPVVJDRVMgPSBtYWluLmMKZm9vX0NQUEZMQUdTID0gLURGT08KQU1fQ1BQRkxBR1MgPSAtREJB WgpAZW5kIGV4YW1wbGUKCkBub2luZGVudApAZmlsZXt4eXoub30gd2lsbCBiZSBjb21waWxlZCB3 aXRoIEBzYW1weyQoZm9vX0NQUEZMQUdTKSAkKENQUEZMQUdTKX0sCihiZWNhdXNlIEBmaWxle3h5 ei5vfSBpcyBwYXJ0IG9mIHRoZSBAY29kZXtmb299IHRhcmdldCksIHdoaWxlCkBmaWxle21haW4u b30gd2lsbCBiZSBjb21waWxlZCB3aXRoIEBzYW1weyQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1Mp fQooYmVjYXVzZSB0aGVyZSBpcyBubyBwZXItdGFyZ2V0IHZhcmlhYmxlIGZvciB0YXJnZXQgQGNv ZGV7YmFyfSkuCgpUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEBjb2Rle211bWJsZV9DUFBGTEFHU30g YW5kIEBjb2Rle0FNX0NQUEZMQUdTfQpiZWluZyBjbGVhciBlbm91Z2gsIGxldCdzIGZvY3VzIG9u IEBjb2Rle0NQUEZMQUdTfS4gIEBjb2Rle0NQUEZMQUdTfQppcyBhIHVzZXIgdmFyaWFibGUsIGku ZS4sIGEgdmFyaWFibGUgdGhhdCB1c2VycyBhcmUgZW50aXRsZWQgdG8gbW9kaWZ5CmluIG9yZGVy IHRvIGNvbXBpbGUgdGhlIHBhY2thZ2UuICBUaGlzIHZhcmlhYmxlLCBsaWtlIG1hbnkgb3RoZXJz LAppcyBkb2N1bWVudGVkIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dCBvZiBAc2FtcHtjb25maWd1 cmUgLS1oZWxwfS4KCkZvciBpbnN0YW5jZSwgc29tZW9uZSB3aG8gbmVlZHMgdG8gYWRkIEBmaWxl ey9ob21lL215L3Vzci9pbmNsdWRlfSB0bwp0aGUgQyBjb21waWxlcidzIHNlYXJjaCBwYXRoIHdv dWxkIGNvbmZpZ3VyZSBhIHBhY2thZ2Ugd2l0aAoKQGV4YW1wbGUKLi9jb25maWd1cmUgQ1BQRkxB R1M9Jy1JIC9ob21lL215L3Vzci9pbmNsdWRlJwpAZW5kIGV4YW1wbGUKCkBub2luZGVudAphbmQg dGhpcyBmbGFnIHdvdWxkIGJlIHByb3BhZ2F0ZWQgdG8gdGhlIGNvbXBpbGUgcnVsZXMgb2YgYWxs CkBmaWxle01ha2VmaWxlfXMuCgpJdCBpcyBhbHNvIG5vdCB1bmNvbW1vbiB0byBvdmVycmlkZSBh IHVzZXIgdmFyaWFibGUgYXQKQGNvbW1hbmR7bWFrZX0tdGltZS4gIE1hbnkgaW5zdGFsbGVycyBk byB0aGlzIHdpdGggQGNvZGV7cHJlZml4fSwgYnV0CnRoaXMgY2FuIGJlIHVzZWZ1bCB3aXRoIGNv bXBpbGVyIGZsYWdzIHRvby4gIEZvciBpbnN0YW5jZSwgd2hpbGUKZGVidWdnaW5nIGEgQysrIHBy b2plY3QsIGlmIHlvdSBuZWVkIHRvIGRpc2FibGUgb3B0aW1pemF0aW9uIGluIG9uZQpzcGVjaWZp YyBvYmplY3QgZmlsZSwgeW91IGNhbiBydW4gc29tZXRoaW5nIGxpa2UKCkBleGFtcGxlCnJtIGZp bGUubwptYWtlIENYWEZMQUdTPS1PMCBmaWxlLm8KbWFrZQpAZW5kIGV4YW1wbGUKClRoZSByZWFz b24gQHNhbXB7JChDUFBGTEFHUyl9IGFwcGVhcnMgYWZ0ZXIgQHNhbXB7JChBTV9DUFBGTEFHUyl9 IG9yCkBzYW1weyQobXVtYmxlX0NQUEZMQUdTKX0gaW4gdGhlIGNvbXBpbGUgY29tbWFuZCBpcyB0 aGF0IHVzZXJzIHNob3VsZApoYXZlIHRoZSBsYXN0IHNheS4gIEluIHRoZSBleGFtcGxlIGFib3Zl LCB0aGUgZGVzaXJlIGlzIGZvciB0aGUKQHNhbXB7Q1hYRkxBR1M9LU8wfSB0byBzdXBlcnNlZGUg YW55IG90aGVyIHN3aXRjaCBmcm9tCkBjb2Rle0FNX0NYWEZMQUdTfSBvciBAY29kZXttdW1ibGVf Q1hYRkxBR1N9LgoKQGMgaHR0cHM6Ly9idWdzLmdudS5vcmcvMzU1MjYKSXQncyB0cnVlIHRoYXQg bm90IGFsbCBvcHRpb25zIHRvIGFsbCBwcm9ncmFtcyBjYW4gYmUgb3ZlcnJpZGRlbi4gIFNvCmlu IGdlbmVyYWwsIHVzZXJzIGNvdWxkIGNvbmNlaXZhYmx5IHdhbnQgdG8gcGxhY2Ugb3B0aW9ucyBh dCBhcmJpdHJhcnkKcGxhY2VzIGluIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCBBdXRvbWFrZSBkb2Vz IG5vdCBzdXBwb3J0IHRoaXMuICBJdAp3b3VsZCBiZSBkaWZmaWN1bHQgdG8gbWFrZSBzdWNoIGdl bmVyYWxpdHkgY29tcHJlaGVuc2libGUuICBCZWluZyBhYmxlCnRvIHNwZWNpZnkgdGhlIGZpbmFs IG9wdGlvbnMgY29tbW9ubHkgc3VmZmljZXMuCgpUaHVzLCB5b3Ugc2hvdWxkIG5ldmVyIHJlZGVm aW5lIGEgdXNlciB2YXJpYWJsZSBzdWNoIGFzCkBjb2Rle0NQUEZMQUdTfSBpbiBAZmlsZXtNYWtl ZmlsZS5hbX0uICBVc2UgQHNhbXB7YXV0b21ha2UgLVdvdmVycmlkZX0KdG8gZGlhZ25vc2Ugc3Vj aCBtaXN0YWtlcy4gIEV2ZW4gc29tZXRoaW5nIGxpa2UKCkBleGFtcGxlCkNQUEZMQUdTID0gLURE QVRBRElSPVwiJChkYXRhZGlyKVwiIEBAQ1BQRkxBR1NAQApAZW5kIGV4YW1wbGUKCkBub2luZGVu dAppcyBlcnJvbmVvdXMuICBBbHRob3VnaCB0aGlzIHByZXNlcnZlcyBAZmlsZXtjb25maWd1cmV9 J3MgdmFsdWUgb2YKQGNvZGV7Q1BQRkxBR1N9LCB0aGUgZGVmaW5pdGlvbiBvZiBAY29kZXtEQVRB RElSfSB3aWxsIGRpc2FwcGVhciBpZiBhCnVzZXIgYXR0ZW1wdHMgdG8gb3ZlcnJpZGUgQGNvZGV7 Q1BQRkxBR1N9IGZyb20gdGhlIEBjb21tYW5ke21ha2V9CmNvbW1hbmQgbGluZS4KCkBleGFtcGxl CkFNX0NQUEZMQUdTID0gLUREQVRBRElSPVwiJChkYXRhZGlyKVwiCkBlbmQgZXhhbXBsZQoKQG5v aW5kZW50CmlzIGFsbCB0aGF0IGlzIG5lZWRlZCBoZXJlIGlmIG5vIHBlci10YXJnZXQgZmxhZ3Mg YXJlIHVzZWQuCgpZb3Ugc2hvdWxkIG5vdCBhZGQgb3B0aW9ucyB0byB0aGVzZSB1c2VyIHZhcmlh YmxlcyB3aXRoaW4KQGZpbGV7Y29uZmlndXJlfSBlaXRoZXIsIGZvciB0aGUgc2FtZSByZWFzb24u ICBPY2Nhc2lvbmFsbHkgeW91IG5lZWQKdG8gbW9kaWZ5IHRoZXNlIHZhcmlhYmxlcyB0byBwZXJm b3JtIGEgdGVzdCwgYnV0IHlvdSBzaG91bGQgcmVzZXQKdGhlaXIgdmFsdWVzIGFmdGVyd2FyZHMu ICBJbiBjb250cmFzdCwgaXQgaXMgT0sgdG8gbW9kaWZ5IHRoZQpAc2FtcHtBTV99IHZhcmlhYmxl cyB3aXRoaW4gQGZpbGV7Y29uZmlndXJlfSBpZiB5b3UgQGNvZGV7QUNfU1VCU1R9CnRoZW0sIGJ1 dCBpdCBpcyByYXRoZXIgcmFyZSB0aGF0IHlvdSBuZWVkIHRvIGRvIHRoaXMsIHVubGVzcyB5b3Ug d2FudAp0byBjaGFuZ2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbnMgb2YgdGhlIEBzYW1we0FNX30g dmFyaWFibGVzIGluIGFsbApAZmlsZXtNYWtlZmlsZX1zLgoKV2hhdCB3ZSByZWNvbW1lbmQgaXMg dGhhdCB5b3UgZGVmaW5lIGV4dHJhIGZsYWdzIGluIHNlcGFyYXRlCnZhcmlhYmxlcy4gIEZvciBp bnN0YW5jZSwgeW91IG1heSB3cml0ZSBhbiBBdXRvY29uZiBtYWNybyB0aGF0IGNvbXB1dGVzCmEg c2V0IG9mIHdhcm5pbmcgb3B0aW9ucyBmb3IgdGhlIEMgY29tcGlsZXIsIGFuZCBAY29kZXtBQ19T VUJTVH0gdGhlbQppbiBAY29kZXtXQVJOSU5HQ0ZMQUdTfTsgeW91IG1heSBhbHNvIGhhdmUgYW4g QXV0b2NvbmYgbWFjcm8gdGhhdApkZXRlcm1pbmVzIHdoaWNoIGNvbXBpbGVyIGFuZCB3aGljaCBs aW5rZXIgZmxhZ3Mgc2hvdWxkIGJlIHVzZWQgdG8KbGluayB3aXRoIGxpYnJhcnkgQGZpbGV7bGli Zm9vfSwgYW5kIEBjb2Rle0FDX1NVQlNUfSB0aGVzZSBpbgpAY29kZXtMSUJGT09DRkxBR1N9IGFu ZCBAY29kZXtMSUJGT09MREZMQUdTfS4gIFRoZW4sIGEKQGZpbGV7TWFrZWZpbGUuYW19IGNvdWxk IHVzZSB0aGVzZSB2YXJpYWJsZXMgYXMgZm9sbG93czoKCkBleGFtcGxlCkFNX0NGTEFHUyA9ICQo V0FSTklOR0NGTEFHUykKYmluX1BST0dSQU1TID0gcHJvZzEgcHJvZzIKcHJvZzFfU09VUkNFUyA9 IEBkb3Rze30KcHJvZzJfU09VUkNFUyA9IEBkb3Rze30KcHJvZzJfQ0ZMQUdTID0gJChMSUJGT09D RkxBR1MpICQoQU1fQ0ZMQUdTKQpwcm9nMl9MREZMQUdTID0gJChMSUJGT09MREZMQUdTKQpAZW5k IGV4YW1wbGUKCkluIHRoaXMgZXhhbXBsZSBib3RoIHByb2dyYW1zIHdpbGwgYmUgY29tcGlsZWQg d2l0aCB0aGUgZmxhZ3MKc3Vic3RpdHV0ZWQgaW50byBAc2FtcHskKFdBUk5JTkdDRkxBR1MpfSwg YW5kIEBjb2Rle3Byb2cyfSB3aWxsCmFkZGl0aW9uYWxseSBiZSBjb21waWxlZCB3aXRoIHRoZSBm bGFncyByZXF1aXJlZCB0byBsaW5rIHdpdGgKQGZpbGV7bGliZm9vfS4KCk5vdGUgdGhhdCBsaXN0 aW5nIEBjb2Rle0FNX0NGTEFHU30gaW4gYSBwZXItdGFyZ2V0IEBjb2Rle0NGTEFHU30KdmFyaWFi bGUgaXMgYSBjb21tb24gaWRpb20gdG8gZW5zdXJlIHRoYXQgQGNvZGV7QU1fQ0ZMQUdTfSBhcHBs aWVzIHRvCmV2ZXJ5IHRhcmdldCBpbiBhIEBmaWxle01ha2VmaWxlLmlufS4KClVzaW5nIHZhcmlh YmxlcyBsaWtlIHRoaXMgZ2l2ZXMgeW91IGZ1bGwgY29udHJvbCBvdmVyIHRoZSBvcmRlcmluZyBv Zgp0aGUgZmxhZ3MuICBGb3IgaW5zdGFuY2UsIGlmIHRoZXJlIGlzIGEgZmxhZyBpbiAkKFdBUk5J TkdDRkxBR1MpIHRoYXQKeW91IHdhbnQgdG8gbmVnYXRlIGZvciBhIHBhcnRpY3VsYXIgdGFyZ2V0 LCB5b3UgY2FuIHVzZSBzb21ldGhpbmcgbGlrZQpAc2FtcHtwcm9nMV9DRkxBR1MgPSAkKEFNX0NG TEFHUykgLW5vLWZsYWd9LiAgSWYgYWxsIG9mIHRoZXNlIGZsYWdzIGhhZApiZWVuIGZvcmNlZnVs bHkgYXBwZW5kZWQgdG8gQGNvZGV7Q0ZMQUdTfSwgdGhlcmUgd291bGQgYmUgbm8gd2F5IHRvCmRp c2FibGUgb25lIGZsYWcuICBZZXQgYW5vdGhlciByZWFzb24gdG8gbGVhdmUgdXNlciB2YXJpYWJs ZXMgdG8KdXNlcnMuCgpGaW5hbGx5LCB3ZSBoYXZlIGF2b2lkZWQgbmFtaW5nIHRoZSB2YXJpYWJs ZSBvZiB0aGUgZXhhbXBsZQpAY29kZXtMSUJGT09fTERGTEFHU30gKHdpdGggYW4gdW5kZXJzY29y ZSkgYmVjYXVzZSB0aGF0IHdvdWxkIGNhdXNlCkF1dG9tYWtlIHRvIHRoaW5rIHRoYXQgdGhpcyBp cyBhIHBlci10YXJnZXQgdmFyaWFibGUgKGxpa2UKQGNvZGV7bXVtYmxlX0xERkxBR1N9KSBmb3Ig c29tZSBub24tZGVjbGFyZWQgQGNvZGV7TElCRk9PfSB0YXJnZXQuCgpAc3ViaGVhZGluZyBPdGhl ciBWYXJpYWJsZXMKClRoZXJlIGFyZSBvdGhlciB2YXJpYWJsZXMgaW4gQXV0b21ha2UgdGhhdCBm b2xsb3cgc2ltaWxhciBwcmluY2lwbGVzCnRvIGFsbG93IHVzZXIgb3B0aW9ucy4gIEZvciBpbnN0 YW5jZSwgVGV4aW5mbyBydWxlcyAoQHB4cmVme1RleGluZm99KQp1c2UgQGNvZGV7TUFLRUlORk9G TEFHU30gYW5kIEBjb2Rle0FNX01BS0VJTkZPRkxBR1N9LiAgU2ltaWxhcmx5LApEZWphR251IHRl c3RzIChAcHhyZWZ7RGVqYUdudSBUZXN0c30pIHVzZSBAY29kZXtSVU5URVNURkxBR1N9IGFuZApA Y29kZXtBTV9SVU5URVNURkxBR1N9LiAgVGhlIHRhZ3MgYW5kIGN0YWdzIHJ1bGVzCihAcHhyZWZ7 VGFnc30pIHVzZSBAY29kZXtFVEFHU0ZMQUdTfSwgQGNvZGV7QU1fRVRBR1NGTEFHU30sCkBjb2Rl e0NUQUdTRkxBR1N9LCBhbmQgQGNvZGV7QU1fQ1RBR1NGTEFHU30uICBKYXZhIHJ1bGVzCihAcHhy ZWZ7SmF2YX0pIHVzZSBAY29kZXtKQVZBQ0ZMQUdTfSBhbmQgQGNvZGV7QU1fSkFWQUNGTEFHU30u ICBOb25lCm9mIHRoZXNlIHJ1bGVzIHN1cHBvcnQgcGVyLXRhcmdldCBmbGFncyAoeWV0KS4KClRv IHNvbWUgZXh0ZW50LCBldmVuIEBjb2Rle0FNX01BS0VGTEFHU30gKEBweHJlZntTdWJkaXJlY3Rv cmllc30pCm9iZXlzIHRoaXMgbmFtaW5nIHNjaGVtZS4gIFRoZSBzbGlnaHQgZGlmZmVyZW5jZSBp cyB0aGF0CkBjb2Rle01BS0VGTEFHU30gaXMgcGFzc2VkIHRvIHN1Yi1AY29tbWFuZHttYWtlfXMg aW1wbGljaXRseSBieQpAY29tbWFuZHttYWtlfSBpdHNlbGYuCgpAY29kZXtBUkZMQUdTfSAoQHB4 cmVme0EgTGlicmFyeX0pIGlzIHVzdWFsbHkgZGVmaW5lZCBieSBBdXRvbWFrZSBhbmQKaGFzIG5l aXRoZXIgYW4gQGNvZGV7QU1ffSBub3IgYSBwZXItdGFyZ2V0IGNvdXNpbi4KCkZpbmFsbHkgeW91 IHNob3VsZCBub3QgdGhpbmsgdGhhdCB0aGUgZXhpc3RlbmNlIG9mIGEgcGVyLXRhcmdldAp2YXJp YWJsZSBpbXBsaWVzIHRoZSBleGlzdGVuY2Ugb2YgYW4gQGNvZGV7QU1ffSB2YXJpYWJsZSBvciBv ZiBhIHVzZXIKdmFyaWFibGUuICBGb3IgaW5zdGFuY2UsIHRoZSBAY29kZXttdW1ibGVfTERBRER9 IHBlci10YXJnZXQgdmFyaWFibGUKb3ZlcnJpZGVzIHRoZSBtYWtlZmlsZS13aWRlIEBjb2Rle0xE QUREfSB2YXJpYWJsZSAod2hpY2ggaXMgbm90IGEgdXNlcgp2YXJpYWJsZSksIGFuZCBAY29kZXtt dW1ibGVfTElCQUREfSBleGlzdHMgb25seSBhcyBhIHBlci10YXJnZXQKdmFyaWFibGUuICBAeHJl ZntQcm9ncmFtIGFuZCBMaWJyYXJ5IFZhcmlhYmxlc30uCgoKQG5vZGUgUmVuYW1lZCBPYmplY3Rz CkBzZWN0aW9uIFdoeSBhcmUgb2JqZWN0IGZpbGVzIHNvbWV0aW1lcyByZW5hbWVkPwoKVGhpcyBo YXBwZW5zIHdoZW4gcGVyLXRhcmdldCBjb21waWxhdGlvbiBmbGFncyBhcmUgdXNlZC4gIE9iamVj dApmaWxlcyBuZWVkIHRvIGJlIHJlbmFtZWQganVzdCBpbiBjYXNlIHRoZXkgd291bGQgY2xhc2gg d2l0aCBvYmplY3QKZmlsZXMgY29tcGlsZWQgZnJvbSB0aGUgc2FtZSBzb3VyY2VzLCBidXQgd2l0 aCBkaWZmZXJlbnQgZmxhZ3MuCkNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZS4KCkBleGFt cGxlCmJpbl9QUk9HUkFNUyA9IHRydWUgZmFsc2UKdHJ1ZV9TT1VSQ0VTID0gZ2VuZXJpYy5jCnRy dWVfQ1BQRkxBR1MgPSAtREVYSVRfQ09ERT0wCmZhbHNlX1NPVVJDRVMgPSBnZW5lcmljLmMKZmFs c2VfQ1BQRkxBR1MgPSAtREVYSVRfQ09ERT0xCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50Ck9idmlv dXNseSB0aGUgdHdvIHByb2dyYW1zIGFyZSBidWlsdCBmcm9tIHRoZSBzYW1lIHNvdXJjZSwgYnV0 IGl0CndvdWxkIGJlIGJhZCBpZiB0aGV5IHNoYXJlZCB0aGUgc2FtZSBvYmplY3QsIGJlY2F1c2Ug QGZpbGV7Z2VuZXJpYy5vfQpjYW5ub3QgYmUgYnVpbHQgd2l0aCBib3RoIEBzYW1wey1ERVhJVF9D T0RFPTB9IEBlbXBoe2FuZH0KQHNhbXB7LURFWElUX0NPREU9MX0uICBUaGVyZWZvcmUgQGNvbW1h bmR7YXV0b21ha2V9IG91dHB1dHMgcnVsZXMgdG8KYnVpbGQgdHdvIGRpZmZlcmVudCBvYmplY3Rz OiBAZmlsZXt0cnVlLWdlbmVyaWMub30gYW5kCkBmaWxle2ZhbHNlLWdlbmVyaWMub30uCgpBdXRv bWFrZSBkb2Vzbid0IGFjdHVhbGx5IGRldGVybWluZSB3aGV0aGVyIHNvdXJjZSBmaWxlcyBhcmUg c2hhcmVkIHRvCmRlY2lkZSBpZiBpdCBtdXN0IHJlbmFtZSBvYmplY3RzLiAgSXQganVzdCByZW5h bWVzIGFsbCBvYmplY3RzIG9mIGEKdGFyZ2V0IGFzIHNvb24gYXMgaXQgc2VlcyB0aGF0IHBlci10 YXJnZXQgY29tcGlsYXRpb24gZmxhZ3MgYXJlIHVzZWQuCgpJdCdzIE9LIHRvIHNoYXJlIG9iamVj dCBmaWxlcyB3aGVuIHBlci10YXJnZXQgY29tcGlsYXRpb24gZmxhZ3MgYXJlIG5vdAp1c2VkLiAg Rm9yIGluc3RhbmNlLCBAZmlsZXt0cnVlfSBhbmQgQGZpbGV7ZmFsc2V9IHdpbGwgYm90aCB1c2UK QGZpbGV7dmVyc2lvbi5vfSBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUuCgpAZXhhbXBsZQpBTV9D UFBGTEFHUyA9IC1EVkVSU0lPTj0xLjAKYmluX1BST0dSQU1TID0gdHJ1ZSBmYWxzZQp0cnVlX1NP VVJDRVMgPSB0cnVlLmMgdmVyc2lvbi5jCmZhbHNlX1NPVVJDRVMgPSBmYWxzZS5jIHZlcnNpb24u YwpAZW5kIGV4YW1wbGUKCk5vdGUgdGhhdCB0aGUgcmVuYW1pbmcgb2Ygb2JqZWN0cyBpcyBhbHNv IGFmZmVjdGVkIGJ5IHRoZQpAY29kZXtfU0hPUlROQU1FfSB2YXJpYWJsZSAoQHB4cmVme1Byb2dy YW0gYW5kIExpYnJhcnkgVmFyaWFibGVzfSkuCgoKQG5vZGUgUGVyLU9iamVjdCBGbGFncwpAc2Vj dGlvbiBQZXItT2JqZWN0IEZsYWdzIEVtdWxhdGlvbgpAY2luZGV4IFBlci1vYmplY3QgZmxhZ3Ms IGVtdWxhdGVkCgpAZGlzcGxheQpPbmUgb2YgbXkgc291cmNlIGZpbGVzIG5lZWRzIHRvIGJlIGNv bXBpbGVkIHdpdGggZGlmZmVyZW50IGZsYWdzLiAgSG93CmRvIEkgZG8gdGhhdD8KQGVuZCBkaXNw bGF5CgpBdXRvbWFrZSBzdXBwb3J0cyBwZXItcHJvZ3JhbSBhbmQgcGVyLWxpYnJhcnkgY29tcGls YXRpb24gZmxhZ3MgKHNlZQpAcmVme1Byb2dyYW0gYW5kIExpYnJhcnkgVmFyaWFibGVzfSBhbmQg QHJlZntGbGFnIFZhcmlhYmxlcwpPcmRlcmluZ30pLiAgV2l0aCB0aGlzIHlvdSBjYW4gZGVmaW5l IGNvbXBpbGF0aW9uIGZsYWdzIHRoYXQgYXBwbHkgdG8KYWxsIGZpbGVzIGNvbXBpbGVkIGZvciBh IHRhcmdldC4gIEZvciBpbnN0YW5jZSwgaW4KCkBleGFtcGxlCmJpbl9QUk9HUkFNUyA9IGZvbwpm b29fU09VUkNFUyA9IGZvby5jIGZvby5oIGJhci5jIGJhci5oIG1haW4uYwpmb29fQ0ZMQUdTID0g LXNvbWUgLWZsYWdzCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50CkBmaWxle2Zvby1mb28ub30sIEBm aWxle2Zvby1iYXIub30sIGFuZCBAZmlsZXtmb28tbWFpbi5vfSB3aWxsIGFsbCBiZQpjb21waWxl ZCB3aXRoIEBzYW1wey1zb21lIC1mbGFnc30uICAoSWYgeW91IHdvbmRlciBhYm91dCB0aGUgbmFt ZXMgb2YKdGhlc2Ugb2JqZWN0IGZpbGVzLCBzZWUgQHJlZntSZW5hbWVkIE9iamVjdHN9LikgIE5v dGUgdGhhdApAY29kZXtmb29fQ0ZMQUdTfSBnaXZlcyB0aGUgZmxhZ3MgdG8gdXNlIHdoZW4gY29t cGlsaW5nIGFsbCB0aGUgQwpzb3VyY2VzIG9mIHRoZSBAZW1waHtwcm9ncmFtfSBAY29kZXtmb299 OyBpdCBoYXMgbm90aGluZyB0byBkbyB3aXRoCkBmaWxle2Zvby5jfSBvciBAZmlsZXtmb28tZm9v Lm99IHNwZWNpZmljYWxseS4KCldoYXQgaWYgQGZpbGV7Zm9vLmN9IG5lZWRzIHRvIGJlIGNvbXBp bGVkIGludG8gQGZpbGV7Zm9vLm99IHVzaW5nIHNvbWUKc3BlY2lmaWMgZmxhZ3MsIHRoYXQgbm9u ZSBvZiB0aGUgb3RoZXIgZmlsZXMgcmVxdWlyZXM/ICBPYnZpb3VzbHkKcGVyLXByb2dyYW0gZmxh Z3MgYXJlIG5vdCBkaXJlY3RseSBhcHBsaWNhYmxlIGhlcmUuICBTb21ldGhpbmcgbGlrZQpwZXIt b2JqZWN0IGZsYWdzIGFyZSBleHBlY3RlZCwgaS5lLiwgZmxhZ3MgdGhhdCB3b3VsZCBiZSB1c2Vk IG9ubHkKd2hlbiBjcmVhdGluZyBAZmlsZXtmb28tZm9vLm99LiAgQXV0b21ha2UgZG9lcyBub3Qg c3VwcG9ydCB0aGF0Owpob3dldmVyIHRoaXMgaXMgZWFzeSB0byBzaW11bGF0ZSB1c2luZyBhIGxp YnJhcnkgdGhhdCBjb250YWlucyBvbmx5CnRoYXQgb2JqZWN0LCBhbmQgY29tcGlsaW5nIHRoaXMg bGlicmFyeSB3aXRoIHBlci1saWJyYXJ5IGZsYWdzLgoKQGV4YW1wbGUKYmluX1BST0dSQU1TID0g Zm9vCmZvb19TT1VSQ0VTID0gYmFyLmMgYmFyLmggbWFpbi5jCmZvb19DRkxBR1MgPSAtc29tZSAt ZmxhZ3MKZm9vX0xEQUREID0gbGliZm9vLmEKbm9pbnN0X0xJQlJBUklFUyA9IGxpYmZvby5hCmxp YmZvb19hX1NPVVJDRVMgPSBmb28uYyBmb28uaApsaWJmb29fYV9DRkxBR1MgPSAtc29tZSAtb3Ro ZXIgLWZsYWdzCkBlbmQgZXhhbXBsZQoKSGVyZSBAZmlsZXtmb28tYmFyLm99IGFuZCBAZmlsZXtm b28tbWFpbi5vfSB3aWxsIGFsbCBiZQpjb21waWxlZCB3aXRoIEBzYW1wey1zb21lIC1mbGFnc30s IHdoaWxlIEBmaWxle2xpYmZvb19hLWZvby5vfSB3aWxsCmJlIGNvbXBpbGVkIHVzaW5nIEBzYW1w ey1zb21lIC1vdGhlciAtZmxhZ3N9LiAgRXZlbnR1YWxseSwgYWxsCnRocmVlIG9iamVjdHMgd2ls bCBiZSBsaW5rZWQgdG8gZm9ybSBAZmlsZXtmb299LgoKVGhpcyB0cmljayBjYW4gYWxzbyBiZSBh Y2hpZXZlZCB1c2luZyBMaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcmllcywKZm9yIGluc3RhbmNl IEBzYW1we25vaW5zdF9MVExJQlJBUklFUyA9IGxpYmZvby5sYX0gKEBweHJlZntMaWJ0b29sCkNv bnZlbmllbmNlIExpYnJhcmllc30pLgoKQW5vdGhlciB0ZW1wdGluZyBpZGVhIHRvIGltcGxlbWVu dCBwZXItb2JqZWN0IGZsYWdzIGlzIHRvIG92ZXJyaWRlIHRoZQpjb21waWxlIHJ1bGVzIEBjb21t YW5ke2F1dG9tYWtlfSB3b3VsZCBvdXRwdXQgZm9yIHRoZXNlIGZpbGVzLgpBdXRvbWFrZSB3aWxs IG5vdCBkZWZpbmUgYSBydWxlIGZvciBhIHRhcmdldCB5b3UgaGF2ZSBkZWZpbmVkLCBzbyB5b3UK Y291bGQgdGhpbmsgYWJvdXQgZGVmaW5pbmcgdGhlIEBzYW1we2Zvby1mb28ubzogZm9vLmN9IHJ1 bGUgeW91cnNlbGYuCldlIHJlY29tbWVuZCBhZ2FpbnN0IHRoaXMsIGJlY2F1c2UgdGhpcyBpcyBl cnJvciBwcm9uZS4gIEZvciBpbnN0YW5jZSwKaWYgeW91IGFkZCBzdWNoIGEgcnVsZSB0byB0aGUg Zmlyc3QgZXhhbXBsZSwgaXQgd2lsbCBicmVhayB0aGUgZGF5IHlvdQpkZWNpZGUgdG8gcmVtb3Zl IEBjb2Rle2Zvb19DRkxBR1N9IChiZWNhdXNlIEBmaWxle2Zvby5jfSB3aWxsIHRoZW4gYmUKY29t cGlsZWQgYXMgQGZpbGV7Zm9vLm99IGluc3RlYWQgb2YgQGZpbGV7Zm9vLWZvby5vfSwgQHB4cmVm e1JlbmFtZWQKT2JqZWN0c30pLiAgQWxzbyBpbiBvcmRlciB0byBzdXBwb3J0IGRlcGVuZGVuY3kg dHJhY2tpbmcsIHRoZSB0d28KQGZpbGV7Lm99L0BmaWxley5vYmp9IGV4dGVuc2lvbnMsIGFuZCBh bGwgdGhlIG90aGVyIGZsYWdzIHZhcmlhYmxlcwppbnZvbHZlZCBpbiBhIGNvbXBpbGF0aW9uLCB5 b3Ugd2lsbCBlbmQgdXAgbW9kaWZ5aW5nIGEgY29weSBvZiB0aGUKcnVsZSBwcmV2aW91c2x5IG91 dHB1dCBieSBAY29tbWFuZHthdXRvbWFrZX0gZm9yIHRoaXMgZmlsZS4gIElmIGEgbmV3CnJlbGVh c2Ugb2YgQXV0b21ha2UgZ2VuZXJhdGVzIGEgZGlmZmVyZW50IHJ1bGUsIHlvdXIgY29weSB3aWxs IG5lZWQgdG8KYmUgdXBkYXRlZCBieSBoYW5kLgoKQG5vZGUgTXVsdGlwbGUgT3V0cHV0cwpAc2Vj dGlvbiBIYW5kbGluZyBUb29scyB0aGF0IFByb2R1Y2UgTWFueSBPdXRwdXRzCkBjaW5kZXggbXVs dGlwbGUgb3V0cHV0cywgcnVsZXMgd2l0aApAY2luZGV4IG1hbnkgb3V0cHV0cywgcnVsZXMgd2l0 aApAY2luZGV4IHJ1bGVzIHdpdGggbXVsdGlwbGUgb3V0cHV0cwoKVGhpcyBzZWN0aW9uIGRlc2Ny aWJlcyBhIEBjb21tYW5ke21ha2V9IGlkaW9tIHRoYXQgY2FuIGJlIHVzZWQgd2hlbiBhCnRvb2wg cHJvZHVjZXMgbXVsdGlwbGUgb3V0cHV0IGZpbGVzLiAgSXQgaXMgbm90IHNwZWNpZmljIHRvIEF1 dG9tYWtlCmFuZCBjYW4gYmUgdXNlZCBpbiBvcmRpbmFyeSBAZmlsZXtNYWtlZmlsZX1zLgoKRmly c3QsIGhvd2V2ZXI6IEdOVSBAY29tbWFuZHttYWtlfSBpcyBhYmxlIHRvIGV4cHJlc3MgcnVsZXMg d2l0aAptdWx0aXBsZSBvdXRwdXQgZmlsZXMgdXNpbmcgcGF0dGVybiBydWxlcyAoQHB4cmVme1Bh dHRlcm4gRXhhbXBsZXMsICwKUGF0dGVybiBSdWxlIEV4YW1wbGVzLCBtYWtlLCBUaGUgR05VIE1h a2UgTWFudWFsfSkuICBXZSBkbyBub3QgZGlzY3VzcwpwYXR0ZXJuIHJ1bGVzIGhlcmUgYmVjYXVz ZSB0aGV5IGFyZSBub3QgcG9ydGFibGUsIGJ1dCBpZiB5b3UncmUgYWJsZQp0byBhc3N1bWUgR05V IEBjb21tYW5ke21ha2V9LCB0aGV5IGFyZSB0eXBpY2FsbHkgbW9yZSBjb252ZW5pZW50IHRoYW4K YW55IG9mIHRoZSBiZWxvdyBhcHByb2FjaGVzLgoKU3VwcG9zZSB3ZSBoYXZlIGEgcHJvZ3JhbSBj YWxsZWQgQGNvbW1hbmR7Zm9vfSB0aGF0IHdpbGwgcmVhZCBvbmUgZmlsZQpjYWxsZWQgQGZpbGV7 ZGF0YS5mb299IGFuZCBwcm9kdWNlIHR3byBmaWxlcyBuYW1lZCBAZmlsZXtkYXRhLmN9IGFuZApA ZmlsZXtkYXRhLmh9LiAgV2Ugd2FudCB0byB3cml0ZSBhIEBmaWxle01ha2VmaWxlfSBydWxlIHRo YXQgY2FwdHVyZXMKdGhpcyBvbmUtdG8tdHdvIGRlcGVuZGVuY3kuCgpUaGUgbmFpdmUgcnVsZSBp cyBpbmNvcnJlY3Q6CgpAZXhhbXBsZQojIFRoaXMgaXMgaW5jb3JyZWN0LgpkYXRhLmMgZGF0YS5o OiBkYXRhLmZvbwogICAgICAgIGZvbyBkYXRhLmZvbwpAZW5kIGV4YW1wbGUKCkBub2luZGVudApX aGF0IHRoZSBhYm92ZSBydWxlIHNheXMgaXMgdGhhdCBAZmlsZXtkYXRhLmN9IGFuZCBAZmlsZXtk YXRhLmh9IGVhY2gKZGVwZW5kIG9uIEBmaWxle2RhdGEuZm9vfSwgYW5kIGNhbiBlYWNoIGJlIGJ1 aWx0IGJ5IHJ1bm5pbmcgQHNhbXB7Zm9vCmRhdGEuZm9vfS4gIEluIG90aGVyIHdvcmRzIGl0IGlz IGVxdWl2YWxlbnQgdG86CgpAZXhhbXBsZQojIFdlIGRvIG5vdCB3YW50IHRoaXMuCmRhdGEuYzog ZGF0YS5mb28KICAgICAgICBmb28gZGF0YS5mb28KZGF0YS5oOiBkYXRhLmZvbwogICAgICAgIGZv byBkYXRhLmZvbwpAZW5kIGV4YW1wbGUKCkBub2luZGVudAp3aGljaCBtZWFucyB0aGF0IEBjb21t YW5ke2Zvb30gY2FuIGJlIHJ1biB0d2ljZS4gIFVzdWFsbHkgaXQgd2lsbCBub3QKYmUgcnVuIHR3 aWNlLCBiZWNhdXNlIEBjb21tYW5ke21ha2V9IGltcGxlbWVudGF0aW9ucyBhcmUgc21hcnQgZW5v dWdoCnRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSBzZWNvbmQgZmlsZSBhZnRlciB0 aGUgZmlyc3Qgb25lIGhhcwpiZWVuIGJ1aWx0OyB0aGV5IHdpbGwgdGhlcmVmb3JlIGRldGVjdCB0 aGF0IGl0IGFscmVhZHkgZXhpc3RzLgpIb3dldmVyIHRoZXJlIGFyZSBhIGZldyBzaXR1YXRpb25z IHdoZXJlIGl0IGNhbiBydW4gdHdpY2UgYW55d2F5OgoKQGl0ZW1pemUKQGl0ZW0KVGhlIG1vc3Qg d29ycnlpbmcgY2FzZSBpcyB3aGVuIHJ1bm5pbmcgYSBwYXJhbGxlbCBAY29tbWFuZHttYWtlfS4g IElmCkBmaWxle2RhdGEuY30gYW5kIEBmaWxle2RhdGEuaH0gYXJlIGJ1aWx0IGluIHBhcmFsbGVs LCB0d28gQHNhbXB7Zm9vCmRhdGEuZm9vfSBjb21tYW5kcyB3aWxsIHJ1biBjb25jdXJyZW50bHku ICBUaGlzIGlzIGhhcm1mdWwuCkBpdGVtCkFub3RoZXIgY2FzZSBpcyB3aGVuIHRoZSBkZXBlbmRl bmN5IChoZXJlIEBmaWxle2RhdGEuZm9vfSkgaXMKKG9yIGRlcGVuZHMgdXBvbikgYSBwaG9ueSB0 YXJnZXQuCkBlbmQgaXRlbWl6ZQoKSWRlYWxseSwgd2Ugd2FudCBhIHNjaGVtZSB0aGF0IHdpbGwg c3VwcG9ydCBhbnkgbnVtYmVyIG9mIG91dHB1dApmaWxlcywgYW5kIHRoYXQgd29ya3Mgd2l0aCBw YXJhbGxlbCBAY29tbWFuZHttYWtlfSBpbnZvY2F0aW9ucywgYW5kCnRoYXQgZG9lcyBub3RoaW5n IHdoZW4gQHNhbXB7bWFrZSAtbn0gaXMgcnVuLiAgSXQgaXMgYXBwYXJlbnRseSBub3QKcG9zc2li bGUgdG8gYWNoaWV2ZSBhIHBlcmZlY3Qgc29sdXRpb24uICBFdmVuIGFuIGFjY2VwdGFibGUgc29s dXRpb24KZm9yIHRoZSBtYWpvcml0eSBvZiBjYXNlcyBnZXRzIGNvbXBsaWNhdGVkLCBzbyB3ZSB3 aWxsIHRha2UgaXQgc3RlcCBieQpzdGVwLgoKT25lIGlkZWEgaXMgdG8gd3JpdGUgdGhlIGZvbGxv d2luZzoKCkBleGFtcGxlCiMgVGhlcmUgaXMgc3RpbGwgYSBwcm9ibGVtIHdpdGggdGhpcyBvbmUu CmRhdGEuYzogZGF0YS5mb28KICAgICAgICBmb28gZGF0YS5mb28KZGF0YS5oOiBkYXRhLmMKQGVu ZCBleGFtcGxlCgpAbm9pbmRlbnQKVGhlIGlkZWEgaXMgdGhhdCBAc2FtcHtmb28gZGF0YS5mb299 IGlzIHJ1biBvbmx5IHdoZW4gQGZpbGV7ZGF0YS5jfQpuZWVkcyB0byBiZSB1cGRhdGVkLCBidXQg d2UgZnVydGhlciBzdGF0ZSB0aGF0IEBmaWxle2RhdGEuaH0gZGVwZW5kcwp1cG9uIEBmaWxle2Rh dGEuY30uICBUaGF0IHdheSwgaWYgQGZpbGV7ZGF0YS5ofSBpcyByZXF1aXJlZCBhbmQKQGZpbGV7 ZGF0YS5mb299IGlzIG91dCBvZiBkYXRlLCB0aGUgZGVwZW5kZW5jeSBvbiBAZmlsZXtkYXRhLmN9 IHdpbGwKdHJpZ2dlciB0aGUgYnVpbGQuCgpUaGlzIGlzIGFsbW9zdCBwZXJmZWN0LCBidXQgc3Vw cG9zZSB3ZSBoYXZlIGJ1aWx0IEBmaWxle2RhdGEuaH0gYW5kCkBmaWxle2RhdGEuY30sIGFuZCB0 aGVuIHdlIGVyYXNlIEBmaWxle2RhdGEuaH0uICBUaGVuLCBydW5uaW5nCkBzYW1we21ha2UgZGF0 YS5ofSB3aWxsIG5vdCByZWJ1aWxkIEBmaWxle2RhdGEuaH0uICBUaGUgYWJvdmUgcnVsZXMKanVz dCBzdGF0ZSB0aGF0IEBmaWxle2RhdGEuY30gbXVzdCBiZSB1cC10by1kYXRlIHdpdGggcmVzcGVj dCB0bwpAZmlsZXtkYXRhLmZvb30sIGFuZCB0aGlzIGlzIGFscmVhZHkgdGhlIGNhc2UuCgpXaGF0 IHdlIG5lZWQgaXMgYSBydWxlIHRoYXQgZm9yY2VzIGEgcmVidWlsZCB3aGVuIEBmaWxle2RhdGEu aH0gaXMKbWlzc2luZy4gIEhlcmUgaXQgaXM6CgpAZXhhbXBsZQojIE1vcmUgb3IgbGVzcyB3b3Jr cywgYnV0IG5vdCBlYXN5IHRvIGdlbmVyYWxpemUuCmRhdGEuYzogZGF0YS5mb28KICAgICAgICBm b28gZGF0YS5mb28KZGF0YS5oOiBkYXRhLmMKIyMgUmVjb3ZlciBmcm9tIHRoZSByZW1vdmFsIG9m ICRAQAogICAgICAgIEBAdGVzdCAtZiAkQEAgfHwgcm0gLWYgZGF0YS5jCiAgICAgICAgQEB0ZXN0 IC1mICRAQCB8fCAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkYXRhLmMKQGVuZCBleGFtcGxlCgpJ dCBpcyB0ZW1wdGluZyB0byB1c2UgYSBzaW5nbGUgdGVzdCBhcyBmb2xsb3dzOgoKQGV4YW1wbGUK IyBUaGlzIGJyZWFrcyBtYWtlIC1uLgpkYXRhLmg6IGRhdGEuYwojIyBSZWNvdmVyIGZyb20gdGhl IHJlbW92YWwgb2YgJEBACiAgICAgICAgQEBpZiB0ZXN0IC1mICRAQDsgdGhlbiA6OyBlbHNlIFwK ICAgICAgICAgIHJtIC1mIGRhdGEuYzsgXAogICAgICAgICAgJChNQUtFKSAkKEFNX01BS0VGTEFH UykgZGF0YS5jOyBcCiAgICAgICAgZmkKQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQKYnV0IHRoYXQg d291bGQgYnJlYWsgQHNhbXB7bWFrZSAtbn06IGF0IGxlYXN0IEdOVSBAY29tbWFuZHttYWtlfSBh bmQKU29sYXJpcyBAY29tbWFuZHttYWtlfSBleGVjdXRlIHJlY2lwZXMgY29udGFpbmluZyB0aGUg QHNhbXB7JChNQUtFKX0Kc3RyaW5nIGV2ZW4gd2hlbiB0aGV5IGFyZSBydW5uaW5nIGluIGRyeSBt b2RlLiAgU28gaWYgd2UgZGlkbid0IGJyZWFrCnRoZSByZWNpcGUgYWJvdmUgaW4gdHdvIGludm9j YXRpb25zLCB0aGUgZmlsZSBAZmlsZXtkYXRhLmN9IHdvdWxkIGJlCnJlbW92ZWQgZXZlbiB1cG9u IEBzYW1we21ha2UgLW59LiAgTm90IG5pY2UuCgoKVGhlIGFib3ZlIHNjaGVtZSBjYW4gYmUgZXh0 ZW5kZWQgdG8gaGFuZGxlIG1vcmUgb3V0cHV0cyBhbmQgbW9yZQppbnB1dHMuICBPbmUgb2YgdGhl IG91dHB1dHMgaXMgc2VsZWN0ZWQgdG8gc2VydmUgYXMgYSB3aXRuZXNzIHRvIHRoZQpzdWNjZXNz ZnVsIGNvbXBsZXRpb24gb2YgdGhlIGNvbW1hbmQsIGl0IGRlcGVuZHMgdXBvbiBhbGwgaW5wdXRz LCBhbmQKYWxsIG90aGVyIG91dHB1dHMgZGVwZW5kIHVwb24gaXQuICBGb3IgaW5zdGFuY2UsIGlm IEBjb21tYW5ke2Zvb30Kc2hvdWxkIGFkZGl0aW9uYWxseSByZWFkIEBmaWxle2RhdGEuYmFyfSBh bmQgYWxzbyBwcm9kdWNlCkBmaWxle2RhdGEud30gYW5kIEBmaWxle2RhdGEueH0sIHdlIHdvdWxk IHdyaXRlOgoKQGV4YW1wbGUKZGF0YS5jOiBkYXRhLmZvbyBkYXRhLmJhcgogICAgICAgIGZvbyBk YXRhLmZvbyBkYXRhLmJhcgpkYXRhLmggZGF0YS53IGRhdGEueDogZGF0YS5jCiMjIFJlY292ZXIg ZnJvbSB0aGUgcmVtb3ZhbCBvZiAkQEAKICAgICAgICBAQHRlc3QgLWYgJEBAIHx8IHJtIC1mIGRh dGEuYwogICAgICAgIEBAdGVzdCAtZiAkQEAgfHwgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgZGF0 YS5jCkBlbmQgZXhhbXBsZQoKSG93ZXZlciB0aGVyZSBhcmUgbm93IHRocmVlIHByb2JsZW1zIGlu IHRoaXMgc2V0dXAuICBPbmUgaXMgcmVsYXRlZCB0bwp0aGUgdGltZXN0YW1wIG9yZGVyaW5nIG9m IEBmaWxle2RhdGEuaH0sIEBmaWxle2RhdGEud30sIEBmaWxle2RhdGEueH0sCmFuZCBAZmlsZXtk YXRhLmN9LiAgQSBzZWNvbmQgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiBhIHBhcmFsbGVsCkBjb21t YW5ke21ha2V9IGF0dGVtcHRzIHRvIHJ1biBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHJlY292 ZXIgYmxvY2sKYXQgb25jZS4gIEZpbmFsbHksIHRoZSByZWN1cnNpdmUgcnVsZSBicmVha3MgQHNh bXB7bWFrZSAtbn0gd2hlbiBydW4Kd2l0aCBHTlUgQGNvbW1hbmR7bWFrZX0gKGFzIHdlbGwgYXMg c29tZSBvdGhlciBAY29tbWFuZHttYWtlfQppbXBsZW1lbnRhdGlvbnMpLCBhcyBpdCBtYXkgcmVt b3ZlIEBmaWxle2RhdGEuaH0gZXZlbiB3aGVuIGl0IHNob3VsZApub3QgKEBweHJlZntNQUtFIFZh cmlhYmxlLCAsIEhvdyB0aGUgQGNvZGV7TUFLRX0gVmFyaWFibGUgV29ya3MsIG1ha2UsClRoZSBH TlUgTWFrZSBNYW51YWx9KS4KCkxldCB1cyBkZWFsIHdpdGggdGhlIGZpcnN0IHByb2JsZW0uICBA Y29tbWFuZHtmb299IG91dHB1dHMgZm91ciBmaWxlcywKYnV0IHdlIGRvIG5vdCBrbm93IGluIHdo aWNoIG9yZGVyIHRoZXNlIGZpbGVzIGFyZSBjcmVhdGVkLiAgU3VwcG9zZQp0aGF0IEBmaWxle2Rh dGEuaH0gaXMgY3JlYXRlZCBiZWZvcmUgQGZpbGV7ZGF0YS5jfS4gIFRoZW4gd2UgaGF2ZSBhCndl aXJkIHNpdHVhdGlvbi4gIFRoZSBuZXh0IHRpbWUgQGNvbW1hbmR7bWFrZX0gaXMgcnVuLCBAZmls ZXtkYXRhLmh9CndpbGwgYXBwZWFyIG9sZGVyIHRoYW4gQGZpbGV7ZGF0YS5jfSwgdGhlIHNlY29u ZCBydWxlIHdpbGwgYmUKdHJpZ2dlcmVkLCBhIHNoZWxsIHdpbGwgYmUgc3RhcnRlZCB0byBleGVj dXRlIHRoZSBAc2FtcHtpZkBkb3Rze31maX0KY29tbWFuZCwgYnV0IGl0IHdpbGwganVzdCBleGVj dXRlIHRoZSBAY29kZXt0aGVufSBicmFuY2gsIHRoYXQgaXM6Cm5vdGhpbmcuICBJbiBvdGhlciB3 b3JkcywgYmVjYXVzZSB0aGUgd2l0bmVzcyB3ZSBzZWxlY3RlZCBpcyBub3QgdGhlCmZpcnN0IGZp bGUgY3JlYXRlZCBieSBAY29tbWFuZHtmb299LCBAY29tbWFuZHttYWtlfSB3aWxsIHN0YXJ0IGEg c2hlbGwKdG8gZG8gbm90aGluZyBlYWNoIHRpbWUgaXQgaXMgcnVuLgoKQSBzaW1wbGUgcmlwb3N0 ZSBpcyB0byBmaXggdGhlIHRpbWVzdGFtcHMgd2hlbiB0aGlzIGhhcHBlbnMuCgpAZXhhbXBsZQpk YXRhLmM6IGRhdGEuZm9vIGRhdGEuYmFyCiAgICAgICAgZm9vIGRhdGEuZm9vIGRhdGEuYmFyCmRh dGEuaCBkYXRhLncgZGF0YS54OiBkYXRhLmMKICAgICAgICBAQHRlc3QgISAtZiAkQEAgfHwgdG91 Y2ggJEBACiMjIFJlY292ZXIgZnJvbSB0aGUgcmVtb3ZhbCBvZiAkQEAKICAgICAgICBAQHRlc3Qg LWYgJEBAIHx8IHJtIC1mIGRhdGEuYwogICAgICAgIEBAdGVzdCAtZiAkQEAgfHwgJChNQUtFKSAk KEFNX01BS0VGTEFHUykgZGF0YS5jCkBlbmQgZXhhbXBsZQoKQW5vdGhlciBzb2x1dGlvbiBpcyB0 byB1c2UgYSBkaWZmZXJlbnQgYW5kIGRlZGljYXRlZCBmaWxlIGFzIHdpdG5lc3MsCnJhdGhlciB0 aGFuIHVzaW5nIGFueSBvZiBAY29tbWFuZHtmb299J3Mgb3V0cHV0cy4KCkBleGFtcGxlCmRhdGEu c3RhbXA6IGRhdGEuZm9vIGRhdGEuYmFyCiAgICAgICAgQEBybSAtZiBkYXRhLnRtcAogICAgICAg IEBAdG91Y2ggZGF0YS50bXAKICAgICAgICBmb28gZGF0YS5mb28gZGF0YS5iYXIKICAgICAgICBA QG12IC1mIGRhdGEudG1wICRAQApkYXRhLmMgZGF0YS5oIGRhdGEudyBkYXRhLng6IGRhdGEuc3Rh bXAKIyMgUmVjb3ZlciBmcm9tIHRoZSByZW1vdmFsIG9mICRAQAogICAgICAgIEBAdGVzdCAtZiAk QEAgfHwgcm0gLWYgZGF0YS5zdGFtcAogICAgICAgIEBAdGVzdCAtZiAkQEAgfHwgJChNQUtFKSAk KEFNX01BS0VGTEFHUykgZGF0YS5zdGFtcApAZW5kIGV4YW1wbGUKCkBmaWxle2RhdGEudG1wfSBp cyBjcmVhdGVkIGJlZm9yZSBAY29tbWFuZHtmb299IGlzIHJ1biwgc28gaXQgaGFzIGEKdGltZXN0 YW1wIG9sZGVyIHRoYW4gb3V0cHV0IGZpbGVzIG91dHB1dCBieSBAY29tbWFuZHtmb299LiAgSXQg aXMgdGhlbgpyZW5hbWVkIHRvIEBmaWxle2RhdGEuc3RhbXB9IGFmdGVyIEBjb21tYW5ke2Zvb30g aGFzIHJ1biwgYmVjYXVzZSB3ZQpkbyBub3Qgd2FudCB0byB1cGRhdGUgQGZpbGV7ZGF0YS5zdGFt cH0gaWYgQGNvbW1hbmR7Zm9vfSBmYWlscy4KClRoaXMgc29sdXRpb24gc3RpbGwgc3VmZmVycyBm cm9tIHRoZSBzZWNvbmQgcHJvYmxlbTogdGhlIHJhY2UKY29uZGl0aW9uIGluIHRoZSByZWNvdmVy IHJ1bGUuICBJZiwgYWZ0ZXIgYSBzdWNjZXNzZnVsIGJ1aWxkLCBhIHVzZXIKZXJhc2VzIEBmaWxl e2RhdGEuY30gYW5kIEBmaWxle2RhdGEuaH0sIGFuZCBydW5zIEBzYW1we21ha2UgLWp9LCB0aGVu CkBjb21tYW5ke21ha2V9IG1heSBzdGFydCBib3RoIHJlY292ZXIgcnVsZXMgaW4gcGFyYWxsZWwu ICBJZiB0aGUgdHdvCmluc3RhbmNlcyBvZiB0aGUgcnVsZSBleGVjdXRlIEBzYW1weyQoTUFLRSkg JChBTV9NQUtFRkxBR1MpCmRhdGEuc3RhbXB9IGNvbmN1cnJlbnRseSB0aGUgYnVpbGQgaXMgbGlr ZWx5IHRvIGZhaWwgKGZvciBpbnN0YW5jZSwgdGhlCnR3byBydWxlcyB3aWxsIGNyZWF0ZSBAZmls ZXtkYXRhLnRtcH0sIGJ1dCBvbmx5IG9uZSBjYW4gcmVuYW1lIGl0KS4KCkFkbWl0dGVkbHksIHN1 Y2ggYSB3ZWlyZCBzaXR1YXRpb24gZG9lcyBub3QgYXJpc2UgZHVyaW5nIG9yZGluYXJ5CmJ1aWxk cy4gIEl0IG9jY3VycyBvbmx5IHdoZW4gdGhlIGJ1aWxkIHRyZWUgaXMgbXV0aWxhdGVkLiAgSGVy ZQpAZmlsZXtkYXRhLmN9IGFuZCBAZmlsZXtkYXRhLmh9IGhhdmUgYmVlbiBleHBsaWNpdGx5IHJl bW92ZWQgd2l0aG91dAphbHNvIHJlbW92aW5nIEBmaWxle2RhdGEuc3RhbXB9IGFuZCB0aGUgb3Ro ZXIgb3V0cHV0IGZpbGVzLgpAY29kZXttYWtlIGNsZWFuOyBtYWtlfSB3aWxsIGFsd2F5cyByZWNv dmVyIGZyb20gdGhlc2Ugc2l0dWF0aW9ucyBldmVuCndpdGggcGFyYWxsZWwgbWFrZXMsIHNvIHlv dSBtYXkgZGVjaWRlIHRoYXQgdGhlIHJlY292ZXIgcnVsZSBpcyBzb2xlbHkKdG8gaGVscCBub24t cGFyYWxsZWwgbWFrZSB1c2VycyBhbmQgbGVhdmUgdGhpbmdzIGFzLWlzLiAgRml4aW5nIHRoaXMK cmVxdWlyZXMgc29tZSBsb2NraW5nIG1lY2hhbmlzbSB0byBlbnN1cmUgb25seSBvbmUgaW5zdGFu Y2Ugb2YgdGhlCnJlY292ZXIgcnVsZSByZWJ1aWxkcyBAZmlsZXtkYXRhLnN0YW1wfS4gIE9uZSBj b3VsZCBpbWFnaW5lIHNvbWV0aGluZwphbG9uZyB0aGUgZm9sbG93aW5nIGxpbmVzLgoKQGV4YW1w bGUKZGF0YS5jIGRhdGEuaCBkYXRhLncgZGF0YS54OiBkYXRhLnN0YW1wCiMjIFJlY292ZXIgZnJv bSB0aGUgcmVtb3ZhbCBvZiAkQEAKICAgICAgICBAQGlmIHRlc3QgLWYgJEBAOyB0aGVuIDo7IGVs c2UgXAogICAgICAgICAgdHJhcCAncm0gLXJmIGRhdGEubG9jayBkYXRhLnN0YW1wJyAxIDIgMTMg MTU7IFwKIyMgbWtkaXIgaXMgYSBwb3J0YWJsZSB0ZXN0LWFuZC1zZXQKICAgICAgICAgIGlmIG1r ZGlyIGRhdGEubG9jayAyPi9kZXYvbnVsbDsgdGhlbiBcCiMjIFRoaXMgY29kZSBpcyBiZWluZyBl eGVjdXRlZCBieSB0aGUgZmlyc3QgcHJvY2Vzcy4KICAgICAgICAgICAgcm0gLWYgZGF0YS5zdGFt cDsgXAogICAgICAgICAgICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkYXRhLnN0YW1wOyBcCiAg ICAgICAgICAgIHJlc3VsdD0kJD87IHJtIC1yZiBkYXRhLmxvY2s7IGV4aXQgJCRyZXN1bHQ7IFwK ICAgICAgICAgIGVsc2UgXAojIyBUaGlzIGNvZGUgaXMgYmVpbmcgZXhlY3V0ZWQgYnkgdGhlIGZv bGxvd2VyIHByb2Nlc3Nlcy4KIyMgV2FpdCB1bnRpbCB0aGUgZmlyc3QgcHJvY2VzcyBpcyBkb25l LgogICAgICAgICAgICB3aGlsZSB0ZXN0IC1kIGRhdGEubG9jazsgZG8gc2xlZXAgMTsgZG9uZTsg XAojIyBTdWNjZWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBmaXJzdCBwcm9jZXNzIHN1Y2NlZWRlZC4K ICAgICAgICAgICAgdGVzdCAtZiBkYXRhLnN0YW1wOyBcCiAgICAgICAgICBmaTsgXAogICAgICAg IGZpCkBlbmQgZXhhbXBsZQoKVXNpbmcgYSBkZWRpY2F0ZWQgd2l0bmVzcywgbGlrZSBAZmlsZXtk YXRhLnN0YW1wfSwgaXMgdmVyeSBoYW5keSB3aGVuCnRoZSBsaXN0IG9mIG91dHB1dCBmaWxlcyBp cyBub3Qga25vd24gYmVmb3JlaGFuZC4gIEFzIGFuIGlsbHVzdHJhdGlvbiwKY29uc2lkZXIgdGhl IGZvbGxvd2luZyBydWxlcyB0byBjb21waWxlIG1hbnkgQGZpbGV7Ki5lbH0gZmlsZXMgaW50bwpA ZmlsZXsqLmVsY30gZmlsZXMgaW4gYSBzaW5nbGUgY29tbWFuZC4gIEl0IGRvZXMgbm90IG1hdHRl ciBob3cKQGNvZGV7RUxGSUxFU30gaXMgZGVmaW5lZCAoYXMgbG9uZyBhcyBpdCBpcyBub3QgZW1w dHk6IGVtcHR5IHRhcmdldHMKYXJlIG5vdCBhY2NlcHRlZCBieSBQT1NJWCkuCgpAZXhhbXBsZQpF TEZJTEVTID0gb25lLmVsIHR3by5lbCB0aHJlZS5lbCBAZG90c3t9CkVMQ0ZJTEVTID0gJChFTEZJ TEVTOj1jKQoKZWxjLXN0YW1wOiAkKEVMRklMRVMpCiAgICAgICAgQEBybSAtZiBlbGMtdGVtcAog ICAgICAgIEBAdG91Y2ggZWxjLXRlbXAKICAgICAgICAkKGVsaXNwX2NvbXApICQoRUxGSUxFUykK ICAgICAgICBAQG12IC1mIGVsYy10ZW1wICRAQAoKJChFTENGSUxFUyk6IGVsYy1zdGFtcAogICAg ICAgIEBAaWYgdGVzdCAtZiAkQEA7IHRoZW4gOjsgZWxzZSBcCiMjIFJlY292ZXIgZnJvbSB0aGUg cmVtb3ZhbCBvZiAkQEAKICAgICAgICAgIHRyYXAgJ3JtIC1yZiBlbGMtbG9jayBlbGMtc3RhbXAn IDEgMiAxMyAxNTsgXAogICAgICAgICAgaWYgbWtkaXIgZWxjLWxvY2sgMj4vZGV2L251bGw7IHRo ZW4gXAojIyBUaGlzIGNvZGUgaXMgYmVpbmcgZXhlY3V0ZWQgYnkgdGhlIGZpcnN0IHByb2Nlc3Mu CiAgICAgICAgICAgIHJtIC1mIGVsYy1zdGFtcDsgXAogICAgICAgICAgICAkKE1BS0UpICQoQU1f TUFLRUZMQUdTKSBlbGMtc3RhbXA7IFwKICAgICAgICAgICAgcm1kaXIgZWxjLWxvY2s7IFwKICAg ICAgICAgIGVsc2UgXAojIyBUaGlzIGNvZGUgaXMgYmVpbmcgZXhlY3V0ZWQgYnkgdGhlIGZvbGxv d2VyIHByb2Nlc3Nlcy4KIyMgV2FpdCB1bnRpbCB0aGUgZmlyc3QgcHJvY2VzcyBpcyBkb25lLgog ICAgICAgICAgICB3aGlsZSB0ZXN0IC1kIGVsYy1sb2NrOyBkbyBzbGVlcCAxOyBkb25lOyBcCiMj IFN1Y2NlZWQgaWYgYW5kIG9ubHkgaWYgdGhlIGZpcnN0IHByb2Nlc3Mgc3VjY2VlZGVkLgogICAg ICAgICAgICB0ZXN0IC1mIGVsYy1zdGFtcDsgZXhpdCAkJD87IFwKQGMgJCQKICAgICAgICAgIGZp OyBcCiAgICAgICAgZmkKQGVuZCBleGFtcGxlCgpUaGVzZSBzb2x1dGlvbnMgYWxsIHN0aWxsIHN1 ZmZlciBmcm9tIHRoZSB0aGlyZCBwcm9ibGVtLCBuYW1lbHkgdGhhdAp0aGV5IGJyZWFrIHRoZSBw cm9taXNlIHRoYXQgQHNhbXB7bWFrZSAtbn0gc2hvdWxkIG5vdCBjYXVzZSBhbnkgYWN0dWFsCmNo YW5nZXMgdG8gdGhlIHRyZWUuICBGb3IgdGhvc2Ugc29sdXRpb25zIHRoYXQgZG8gbm90IGNyZWF0 ZSBsb2NrIGZpbGVzLAppdCBpcyBwb3NzaWJsZSB0byBzcGxpdCB0aGUgcmVjb3ZlciBydWxlcyBp bnRvIHR3byBzZXBhcmF0ZSByZWNpcGUKY29tbWFuZHMsIG9uZSBvZiB3aGljaCBkb2VzIGFsbCB3 b3JrIGJ1dCB0aGUgcmVjdXJzaW9uLCBhbmQgdGhlCm90aGVyIGludm9rZXMgdGhlIHJlY3Vyc2l2 ZSBAc2FtcHskKE1BS0UpfS4gIFRoZSBzb2x1dGlvbnMgaW52b2x2aW5nCmxvY2tpbmcgY291bGQg YWN0IHVwb24gdGhlIGNvbnRlbnRzIG9mIHRoZSBAc2FtcHtNQUtFRkxBR1N9IHZhcmlhYmxlLApi dXQgcGFyc2luZyB0aGF0IHBvcnRhYmx5IGlzIG5vdCBlYXN5IChAcHhyZWZ7VGhlIE1ha2UgTWFj cm8gTUFLRUZMQUdTLCwsCmF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSkuICBIZXJlIGlz IGFuIGV4YW1wbGU6CgpAZXhhbXBsZQpFTEZJTEVTID0gb25lLmVsIHR3by5lbCB0aHJlZS5lbCBA ZG90c3t9CkVMQ0ZJTEVTID0gJChFTEZJTEVTOj1jKQoKZWxjLXN0YW1wOiAkKEVMRklMRVMpCiAg ICAgICAgQEBybSAtZiBlbGMtdGVtcAogICAgICAgIEBAdG91Y2ggZWxjLXRlbXAKICAgICAgICAk KGVsaXNwX2NvbXApICQoRUxGSUxFUykKICAgICAgICBAQG12IC1mIGVsYy10ZW1wICRAQAoKJChF TENGSUxFUyk6IGVsYy1zdGFtcAojIyBSZWNvdmVyIGZyb20gdGhlIHJlbW92YWwgb2YgJEBACiAg ICAgICAgQEBkcnk9OyBmb3IgZiBpbiB4ICQkTUFLRUZMQUdTOyBkbyBcCiAgICAgICAgICBjYXNl ICQkZiBpbiBcCiAgICAgICAgICAgICo9KnwtLSopOzsgXAogICAgICAgICAgICAqbiopIGRyeT06 OzsgXAogICAgICAgICAgZXNhYzsgXAogICAgICAgIGRvbmU7IFwKICAgICAgICBpZiB0ZXN0IC1m ICRAQDsgdGhlbiA6OyBlbHNlIFwKICAgICAgICAgICQkZHJ5IHRyYXAgJ3JtIC1yZiBlbGMtbG9j ayBlbGMtc3RhbXAnIDEgMiAxMyAxNTsgXAogICAgICAgICAgaWYgJCRkcnkgbWtkaXIgZWxjLWxv Y2sgMj4vZGV2L251bGw7IHRoZW4gXAojIyBUaGlzIGNvZGUgaXMgYmVpbmcgZXhlY3V0ZWQgYnkg dGhlIGZpcnN0IHByb2Nlc3MuCiAgICAgICAgICAgICQkZHJ5IHJtIC1mIGVsYy1zdGFtcDsgXAog ICAgICAgICAgICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBlbGMtc3RhbXA7IFwKICAgICAgICAg ICAgJCRkcnkgcm1kaXIgZWxjLWxvY2s7IFwKICAgICAgICAgIGVsc2UgXAojIyBUaGlzIGNvZGUg aXMgYmVpbmcgZXhlY3V0ZWQgYnkgdGhlIGZvbGxvd2VyIHByb2Nlc3Nlcy4KIyMgV2FpdCB1bnRp bCB0aGUgZmlyc3QgcHJvY2VzcyBpcyBkb25lLgogICAgICAgICAgICB3aGlsZSB0ZXN0IC1kIGVs Yy1sb2NrICYmIHRlc3QgLXogIiQkZHJ5IjsgZG8gXApAYyAkJAogICAgICAgICAgICAgIHNsZWVw IDE7IFwKICAgICAgICAgICAgZG9uZTsgXAojIyBTdWNjZWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBm aXJzdCBwcm9jZXNzIHN1Y2NlZWRlZC4KICAgICAgICAgICAgJCRkcnkgdGVzdCAtZiBlbGMtc3Rh bXA7IGV4aXQgJCQ/OyBcCiAgICAgICAgICBmaTsgXAogICAgICAgIGZpCkBlbmQgZXhhbXBsZQoK CkBub2RlIEhhcmQtQ29kZWQgSW5zdGFsbCBQYXRocwpAc2VjdGlvbiBJbnN0YWxsaW5nIHRvIEhh cmQtQ29kZWQgTG9jYXRpb25zCgpAZGlzcGxheQpNeSBwYWNrYWdlIG5lZWRzIHRvIGluc3RhbGwg c29tZSBjb25maWd1cmF0aW9uIGZpbGUuICBJIHRyaWVkIHRvIHVzZQp0aGUgZm9sbG93aW5nIHJ1 bGUsIGJ1dCBAc2FtcHttYWtlIGRpc3RjaGVja30gZmFpbHMuICBXaHk/CgpAZXhhbXBsZQojIERv IG5vdCBkbyB0aGlzLgppbnN0YWxsLWRhdGEtbG9jYWw6CiAgICAgICAgJChJTlNUQUxMX0RBVEEp ICQoc3JjZGlyKS9hZmlsZSAkKERFU1RESVIpL2V0Yy9hZmlsZQpAZW5kIGV4YW1wbGUKQGVuZCBk aXNwbGF5CgpAZGlzcGxheQpNeSBwYWNrYWdlIG5lZWRzIHRvIHBvcHVsYXRlIHRoZSBpbnN0YWxs YXRpb24gZGlyZWN0b3J5IG9mIGFub3RoZXIKcGFja2FnZSBhdCBpbnN0YWxsLXRpbWUuICBJIGNh biBlYXNpbHkgY29tcHV0ZSB0aGF0IGluc3RhbGxhdGlvbgpkaXJlY3RvcnkgaW4gQGZpbGV7Y29u ZmlndXJlfSwgYnV0IGlmIEkgaW5zdGFsbCBmaWxlcyB0aGVyZWluLApAc2FtcHttYWtlIGRpc3Rj aGVja30gZmFpbHMuICBIb3cgZWxzZSBzaG91bGQgSSBkbyBpdD8KQGVuZCBkaXNwbGF5CgpUaGVz ZSB0d28gc2V0dXBzIHNoYXJlIHRoZWlyIHN5bXB0b21zOiBAc2FtcHttYWtlIGRpc3RjaGVja30g ZmFpbHMKYmVjYXVzZSB0aGV5IGFyZSBpbnN0YWxsaW5nIGZpbGVzIHRvIGhhcmQtY29kZWQgcGF0 aHMuICBJbiB0aGUgbGF0dGVyCmNhc2UgdGhlIHBhdGggaXMgbm90IGhhcmQtY29kZWQgaW4gdGhl IHBhY2thZ2UsIGJ1dCB3ZSBjYW4gY29uc2lkZXIgaXQKdG8gYmUgaGFyZC1jb2RlZCBpbiB0aGUg c3lzdGVtIChvciBpbiB3aGljaGV2ZXIgdG9vbCB0aGF0IHN1cHBsaWVzIHRoZQpwYXRoKS4gIEFz IGxvbmcgYXMgdGhlIHBhdGggZG9lcyBub3QgdXNlIGFueSBvZiB0aGUgc3RhbmRhcmQgZGlyZWN0 b3J5CnZhcmlhYmxlcyAoQHNhbXB7JChwcmVmaXgpfSwgQHNhbXB7JChiaW5kaXIpfSwgQHNhbXB7 JChkYXRhZGlyKX0sCmV0Yy4pLCB0aGUgZWZmZWN0IHdpbGwgYmUgdGhlIHNhbWU6IHVzZXItaW5z dGFsbGF0aW9ucyBhcmUgaW1wb3NzaWJsZS4KCkFzIGEgKG5vbi1yb290KSB1c2VyIHdobyB3YW50 cyB0byBpbnN0YWxsIGEgcGFja2FnZSwgeW91IHVzdWFsbHkgaGF2ZSBubwpyaWdodCB0byBpbnN0 YWxsIGFueXRoaW5nIGluIEBmaWxley91c3J9IG9yIEBmaWxley91c3IvbG9jYWx9LiAgU28geW91 CmRvIHNvbWV0aGluZyBsaWtlIEBzYW1wey4vY29uZmlndXJlIC0tcHJlZml4IH4vdXNyfSB0byBp bnN0YWxsIGEKcGFja2FnZSBpbiB5b3VyIG93biBAZmlsZXt+L3Vzcn0gdHJlZS4KCklmIGEgcGFj a2FnZSBhdHRlbXB0cyB0byBpbnN0YWxsIHNvbWV0aGluZyB0byBzb21lIGhhcmQtY29kZWQgcGF0 aAooZS5nLiwgQGZpbGV7L2V0Yy9hZmlsZX0pLCByZWdhcmRsZXNzIG9mIHRoaXMgQG9wdGlvbnst LXByZWZpeH0gc2V0dGluZywKdGhlbiB0aGUgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC4gIEBzYW1w e21ha2UgZGlzdGNoZWNrfSBwZXJmb3JtcyBzdWNoCmEgQG9wdGlvbnstLXByZWZpeH0gaW5zdGFs bGF0aW9uLCBoZW5jZSBpdCB3aWxsIGZhaWwgdG9vLgoKTm93LCB0aGVyZSBhcmUgc29tZSBlYXN5 IHNvbHV0aW9ucy4KClRoZSBhYm92ZSBAY29kZXtpbnN0YWxsLWRhdGEtbG9jYWx9IGV4YW1wbGUg Zm9yIGluc3RhbGxpbmcKQGZpbGV7L2V0Yy9hZmlsZX0gd291bGQgYmUgYmV0dGVyIHJlcGxhY2Vk IGJ5CgpAZXhhbXBsZQpzeXNjb25mX0RBVEEgPSBhZmlsZQpAZW5kIGV4YW1wbGUKCkBub2luZGVu dApCeSBkZWZhdWx0IEBjb2Rle3N5c2NvbmZkaXJ9IHdpbGwgYmUgQHNhbXB7JChwcmVmaXgpL2V0 Y30sIGJlY2F1c2UKdGhpcyBpcyB3aGF0IHRoZSBHTlUgU3RhbmRhcmRzIHJlcXVpcmUuICBXaGVu IHN1Y2ggYSBwYWNrYWdlIGlzCmluc3RhbGxlZCBvbiBhbiBGSFMgY29tcGxpYW50IHN5c3RlbSwg dGhlIGluc3RhbGxlciB3aWxsIGhhdmUgdG8gc2V0CkBzYW1wey0tc3lzY29uZmRpcj0vZXRjfS4g IEFzIHRoZSBtYWludGFpbmVyIG9mIHRoZSBwYWNrYWdlIHlvdQpzaG91bGQgbm90IGJlIGNvbmNl cm5lZCBieSBzdWNoIHNpdGUgcG9saWNpZXM6IHVzZSB0aGUgYXBwcm9wcmlhdGUKc3RhbmRhcmQg ZGlyZWN0b3J5IHZhcmlhYmxlIHRvIGluc3RhbGwgeW91ciBmaWxlcyBzbyB0aGF0IHRoZSBpbnN0 YWxsZXIKY2FuIGVhc2lseSByZWRlZmluZSB0aGVzZSB2YXJpYWJsZXMgdG8gbWF0Y2ggdGhlaXIg c2l0ZSBjb252ZW50aW9ucy4KCkluc3RhbGxpbmcgZmlsZXMgdGhhdCBzaG91bGQgYmUgdXNlZCBi eSBhbm90aGVyIHBhY2thZ2UgaXMgc2xpZ2h0bHkKbW9yZSBpbnZvbHZlZC4gIExldCdzIHRha2Ug YW4gZXhhbXBsZSBhbmQgYXNzdW1lIHlvdSB3YW50IHRvIGluc3RhbGwKYSBzaGFyZWQgbGlicmFy eSB0aGF0IGlzIGEgUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGUuICBJZiB5b3UgYXNrIFB5dGhvbgp3 aGVyZSB0byBpbnN0YWxsIHRoZSBsaWJyYXJ5LCBpdCB3aWxsIGFuc3dlciBzb21ldGhpbmcgbGlr ZSB0aGlzOgoKQGV4YW1wbGUKJSBAa2Jke3B5dGhvbiAtYyAnZnJvbSBkaXN0dXRpbHMgaW1wb3J0 IHN5c2NvbmZpZzsKICAgICAgICAgICAgIHByaW50IHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigx LDApJ30KL3Vzci9saWIvcHl0aG9uMi41L3NpdGUtcGFja2FnZXMKQGVuZCBleGFtcGxlCgpJZiB5 b3UgaW5kZWVkIHVzZSB0aGlzIGFic29sdXRlIHBhdGggdG8gaW5zdGFsbCB5b3VyIHNoYXJlZCBs aWJyYXJ5LApub24tcm9vdCB1c2VycyB3aWxsIG5vdCBiZSBhYmxlIHRvIGluc3RhbGwgdGhlIHBh Y2thZ2U7IGhlbmNlCmRpc3RjaGVjayBmYWlscy4KCkxldCdzIGRvIGJldHRlci4gIFRoZSBAc2Ft cHtzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoKX0gZnVuY3Rpb24KYWNjZXB0cyBhIHRoaXJkIGFy Z3VtZW50IHRoYXQgd2lsbCByZXBsYWNlIFB5dGhvbidzIGluc3RhbGxhdGlvbgpwcmVmaXguCgpA ZXhhbXBsZQolIEBrYmR7cHl0aG9uIC1jICdmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmln OwogICAgICAgICAgICAgcHJpbnQgc3lzY29uZmlnLmdldF9weXRob25fbGliKDEsMCwiJEB7ZXhl Y19wcmVmaXhAfSIpJ30KJEB7ZXhlY19wcmVmaXhAfS9saWIvcHl0aG9uMi41L3NpdGUtcGFja2Fn ZXMKQGVuZCBleGFtcGxlCgpZb3UgY2FuIGFsc28gdXNlIHRoaXMgbmV3IHBhdGguICBJZiB5b3Ug ZG8KQGl0ZW1pemUgQGJ1bGxldApAaXRlbQpyb290IHVzZXJzIGNhbiBpbnN0YWxsIHlvdXIgcGFj a2FnZSB3aXRoIHRoZSBzYW1lIEBvcHRpb257LS1wcmVmaXh9CmFzIFB5dGhvbiAoeW91IGdldCB0 aGUgYmVoYXZpb3Igb2YgdGhlIHByZXZpb3VzIGF0dGVtcHQpCgpAaXRlbQpub24tcm9vdCB1c2Vy cyBjYW4gaW5zdGFsbCB5b3VyIHBhY2thZ2UgdG9vOyB0aGV5IHdpbGwgaGF2ZSB0aGUKZXh0ZW5z aW9uIG1vZHVsZSBpbiBhIHBsYWNlIHRoYXQgaXMgbm90IHNlYXJjaGVkIGJ5IFB5dGhvbiBidXQg dGhleQpjYW4gd29yayBhcm91bmQgdGhpcyB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGFu ZCBpZiB5b3UgaW5zdGFsbGVkCnNjcmlwdHMgdGhhdCB1c2UgdGhpcyBzaGFyZWQgbGlicmFyeSwg aXQncyBlYXN5IHRvIHRlbGwgUHl0aG9uIHdoZXJlIHRvCmxvb2sgaW4gdGhlIGJlZ2lubmluZyBv ZiB5b3VyIHNjcmlwdCwgc28gdGhlIHNjcmlwdCB3b3JrcyBpbiBib3RoCmNhc2VzKS4KQGVuZCBp dGVtaXplCgpUaGUgQGNvZGV7QU1fUEFUSF9QWVRIT059IG1hY3JvIHVzZXMgc2ltaWxhciBjb21t YW5kcyB0byBkZWZpbmUKQHNhbXB7JChweXRob25kaXIpfSBhbmQgQHNhbXB7JChweWV4ZWNkaXIp fSAoQHB4cmVme1B5dGhvbn0pLgoKT2YgY291cnNlIG5vdCBhbGwgdG9vbHMgYXJlIGFzIGFkdmFu Y2VkIGFzIFB5dGhvbiByZWdhcmRpbmcgdGhhdApzdWJzdGl0dXRpb24gb2YgQHZhcntwcmVmaXh9 LiAgU28gYW5vdGhlciBzdHJhdGVneSBpcyB0byBmaWd1cmUgb3V0IHRoZQpwYXJ0IG9mIHRoZSBp bnN0YWxsYXRpb24gZGlyZWN0b3J5IHRoYXQgbXVzdCBiZSBwcmVzZXJ2ZWQuICBGb3IKaW5zdGFu Y2UsIGhlcmUgaXMgaG93IEBjb2Rle0FNX1BBVEhfTElTUERJUn0gKEBweHJlZntFbWFjcyBMaXNw fSkKY29tcHV0ZXMgQHNhbXB7JChsaXNwZGlyKX06CgpAZXhhbXBsZQokRU1BQ1MgLWJhdGNoIC1u by1zaXRlLWZpbGUgLWV2YWwgJyh3aGlsZSBsb2FkLXBhdGgKICAocHJpbmMgKGNvbmNhdCAoY2Fy IGxvYWQtcGF0aCkgIlxuIikpCiAgKHNldHEgbG9hZC1wYXRoIChjZHIgbG9hZC1wYXRoKSkpJyA+ Y29uZnRlc3Qub3V0Cmxpc3BkaXI9YHNlZCAtbgogIC1lICdzLC8kLCwnCiAgLWUgJy8uKlwvbGli XC94KmVtYWNzXC9zaXRlLWxpc3AkL0B7CiAgICAgICAgcywuKi9saWIvXCh4KmVtYWNzL3NpdGUt bGlzcFwpJCwkQHtsaWJkaXJAfS9cMSw7cDtxOwogICAgICBAfScKICAtZSAnLy4qXC9zaGFyZVwv eCplbWFjc1wvc2l0ZS1saXNwJC9AewogICAgICAgIHMsLiovc2hhcmUvXCh4KmVtYWNzL3NpdGUt bGlzcFwpLCRAe2RhdGFyb290ZGlyQH0vXDEsO3A7cTsKICAgICAgQH0nCiAgY29uZnRlc3Qub3V0 YApAZW5kIGV4YW1wbGUKClRoYXQgaXMsIGl0IGp1c3QgcGlja3MgdGhlIGZpcnN0IGRpcmVjdG9y eSB0aGF0IGxvb2tzIGxpa2UKQGZpbGV7Ki9saWIvKmVtYWNzL3NpdGUtbGlzcH0gb3IgQGZpbGV7 Ki9zaGFyZS8qZW1hY3Mvc2l0ZS1saXNwfSBpbgp0aGUgc2VhcmNoIHBhdGggb2YgZW1hY3MsIGFu ZCB0aGVuIHN1YnN0aXR1dGVzIEBzYW1weyRAe2xpYmRpckB9fSBvcgpAc2FtcHskQHtkYXRhZGly QH19IGFwcHJvcHJpYXRlbHkuCgpUaGUgZW1hY3MgY2FzZSBsb29rcyBjb21wbGljYXRlZCBiZWNh dXNlIGl0IHByb2Nlc3NlcyBhIGxpc3QgYW5kCmV4cGVjdHMgdHdvIHBvc3NpYmxlIGxheW91dHM7 IG90aGVyd2lzZSBpdCdzIGVhc3ksIGFuZCB0aGUgYmVuZWZpdHMKZm9yIG5vbi1yb290IHVzZXJz IGFyZSB3b3J0aCB0aGUgZXh0cmEgQGNvbW1hbmR7c2VkfSBpbnZvY2F0aW9uLgoKCkBub2RlIERl YnVnZ2luZyBNYWtlIFJ1bGVzCkBzZWN0aW9uIERlYnVnZ2luZyBNYWtlIFJ1bGVzCkBjaW5kZXgg ZGVidWdnaW5nIHJ1bGVzCkBjaW5kZXggcnVsZXMsIGRlYnVnZ2luZwoKVGhlIHJ1bGVzIGFuZCBk ZXBlbmRlbmN5IHRyZWVzIGdlbmVyYXRlZCBieSBAY29tbWFuZHthdXRvbWFrZX0gY2FuIGdldApy YXRoZXIgY29tcGxleCwgYW5kIGxlYXZlIHRoZSBkZXZlbG9wZXIgaGVhZC1zY3JhdGNoaW5nIHdo ZW4gdGhpbmdzCmRvbid0IHdvcmsgYXMgZXhwZWN0ZWQuICBCZXNpZGVzIHRoZSBkZWJ1ZyBvcHRp b25zIHByb3ZpZGVkIGJ5IHRoZQpAY29tbWFuZHttYWtlfSBjb21tYW5kIChAcHhyZWZ7T3B0aW9u cyBTdW1tYXJ5LCwsIG1ha2UsIFRoZSBHTlUgTWFrZQpNYW51YWx9KSwgaGVyZSdzIGEgY291cGxl IG9mIGZ1cnRoZXIgaGludHMgZm9yIGRlYnVnZ2luZyBtYWtlZmlsZXMKZ2VuZXJhdGVkIGJ5IEBj b21tYW5ke2F1dG9tYWtlfSBlZmZlY3RpdmVseToKCkBpdGVtaXplCkBpdGVtCklmIGxlc3MgdmVy Ym9zZSBvdXRwdXQgaGFzIGJlZW4gZW5hYmxlZCBpbiB0aGUgcGFja2FnZSB3aXRoIHRoZSB1c2UK b2Ygc2lsZW50IHJ1bGVzIChAcHhyZWZ7QXV0b21ha2UgU2lsZW50IFJ1bGVzfSksIHlvdSdsbCBw cm9iYWJseSB3YW50CnVuZG8gdGhhdCBhbmQgc2VlIHRoZSBhY3R1YWwgY29tbWFuZHMgYmVpbmcg cnVuOiBAcHhyZWZ7VW5zaWxlbmNpbmcKQXV0b21ha2V9LgoKQGl0ZW0KQGNvZGV7bWFrZSAtbn0g Y2FuIGhlbHAgc2hvdyB3aGF0IHdvdWxkIGJlIGRvbmUgd2l0aG91dCBhY3R1YWxseSBkb2luZwpp dC4gIEhvd2V2ZXIsIHRoaXMgQGVtcGh7c3RpbGwgZXhlY3V0ZXN9IGNvbW1hbmRzIHByZWZpeGVk IHdpdGgKQHNhbXB7K30sIGFuZCwgd2hlbiB1c2luZyBHTlUgQGNvbW1hbmR7bWFrZX0sIGNvbW1h bmRzIHRoYXQgY29udGFpbgp0aGUgc3RyaW5ncyBAc2FtcHskKE1BS0UpfSBvciBAc2FtcHskQHtN QUtFQH19IChAcHhyZWZ7SW5zdGVhZCBvZgpFeGVjdXRpb24sLCwgbWFrZSwgVGhlIEdOVSBNYWtl IE1hbnVhbH0pLiAgVHlwaWNhbGx5LCB0aGlzIGlzIGhlbHBmdWwKdG8gc2hvdyB3aGF0IHJlY3Vy c2l2ZSBydWxlcyB3b3VsZCBkbywgYnV0IGl0IG1lYW5zIHRoYXQsIGluIHlvdXIgb3duCnJ1bGVz LCB5b3Ugc2hvdWxkIG5vdCBtaXggc3VjaCByZWN1cnNpb24gd2l0aCBhY3Rpb25zIHRoYXQgY2hh bmdlIGFueQpmaWxlcy5AZm9vdG5vdGV7QXV0b21ha2UncyBAc2FtcHtkaXN0fSBhbmQgQHNhbXB7 ZGlzdGNoZWNrfSBydWxlcyBoYWQKYSBidWcgaW4gdGhpcyByZWdhcmQgaW4gdGhhdCB0aGV5IGNy ZWF0ZWQgZGlyZWN0b3JpZXMgZXZlbiB3aXRoCkBvcHRpb257LW59LCBidXQgdGhpcyBoYXMgYmVl biBmaXhlZCBpbiBBdXRvbWFrZSAxLjExLn0gIEZ1cnRoZXJtb3JlLApHTlUgQGNvbW1hbmR7bWFr ZX0gd2lsbCB1cGRhdGUgcHJlcmVxdWlzaXRlcyBmb3IgdGhlIEBmaWxle01ha2VmaWxlfQpmaWxl IGl0c2VsZiBldmVuIHdpdGggQG9wdGlvbnstbn0gKEBweHJlZntSZW1ha2luZyBNYWtlZmlsZXMs LCwgbWFrZSwKVGhlIEdOVSBNYWtlIE1hbnVhbH0pLgoKQGl0ZW0KQGNvZGV7bWFrZSBTSEVMTD0i L2Jpbi9iYXNoIC12eCJ9IGNhbiBoZWxwIGRlYnVnIGNvbXBsZXggcnVsZXMuCkB4cmVme1RoZSBN YWtlIE1hY3JvIFNIRUxMLCwsIGF1dG9jb25mLCBUaGUgQXV0b2NvbmYgTWFudWFsfSwgZm9yIHNv bWUKcG9ydGFiaWxpdHkgcXVpcmtzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnN0cnVjdC4KCkBp dGVtCkBjb2Rle2VjaG8gJ3ByaW50OiA7IEBAZWNobyAiJChWQVIpIicgfCBtYWtlIC1mIE1ha2Vm aWxlIC1mIC0gcHJpbnR9CmNhbiBiZSBoYW5keSB0byBleGFtaW5lIHRoZSBleHBhbmRlZCB2YWx1 ZSBvZiB2YXJpYWJsZXMuICBZb3UgbWF5IG5lZWQKdG8gdXNlIGEgdGFyZ2V0IG90aGVyIHRoYW4g QHNhbXB7cHJpbnR9IGlmIHRoYXQgaXMgYWxyZWFkeSB1c2VkIG9yIGEKZmlsZSB3aXRoIHRoYXQg bmFtZSBleGlzdHMuCgpAaXRlbQpAdXJse2h0dHA6Ly9iYXNoZGIuc291cmNlZm9yZ2UubmV0L0Av cmVtYWtlL30gcHJvdmlkZXMgYSBtb2RpZmllZApHTlUgQGNvbW1hbmR7bWFrZX0gY29tbWFuZCBj YWxsZWQgQGNvbW1hbmR7cmVtYWtlfSB0aGF0IGNvcGVzIHdpdGgKY29tcGxleCBHTlUgQGNvbW1h bmR7bWFrZX0tc3BlY2lmaWMgTWFrZWZpbGVzIGFuZCBhbGxvd3MgdHJhY2luZwpleGVjdXRpb24s IGV4YW1pbmluZyB2YXJpYWJsZXMsIGFuZCBjYWxsaW5nIHJ1bGVzIGludGVyYWN0aXZlbHksIG11 Y2ggbGlrZQphIGRlYnVnZ2VyLgpAZW5kIGl0ZW1pemUKCgpAbm9kZSBSZXBvcnRpbmcgQnVncwpA c2VjdGlvbiBSZXBvcnRpbmcgQnVncwoKQGNpbmRleCBCdWdzLCByZXBvcnRpbmcKQGNpbmRleCBS ZXBvcnRpbmcgYnVncwoKTW9zdCBub250cml2aWFsIHNvZnR3YXJlIGhhcyBidWdzLiAgQXV0b21h a2UgaXMgbm8gZXhjZXB0aW9uLiAgV2UKY2Fubm90IHByb21pc2Ugd2UgY2FuIG9yIHdpbGwgZml4 IGEgYnVnLCBhbmQgd2UgbWlnaHQgbm90IGV2ZW4gYWdyZWUKdGhhdCBpdCBpcyBhIGJ1ZywgYnV0 IHdlIHdhbnQgdG8gaGVhciBhYm91dCBwcm9ibGVtcyB5b3UKZW5jb3VudGVyLiBPZnRlbiB3ZSBh Z3JlZSB0aGV5IGFyZSBidWdzIGFuZCB3YW50IHRvIGZpeCB0aGVtLgoKU28sIHRvIG1ha2UgaXQg cG9zc2libGUgZm9yIHVzIHRvIGZpeCBhIGJ1ZywgcGxlYXNlIHJlcG9ydCBpdC4KSWYgeW91IGNh biwgdGhvdWdoLCBpdCBpcyBoZWxwZnVsIGlmIHlvdSBjaGVjayBpZiBpdCBpcyBhbHJlYWR5IGtu b3duLgpZb3UgY2FuIGxvb2sgYXQgdGhlIEB1cmVme2h0dHBzOi8vZGViYnVncy5nbnUub3JnLywg R05VIEJ1ZyBUcmFja2VyfQphbmQgdGhlIEB1cmVme2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9AL2Fy Y2hpdmUvQC9odG1sL0AvYnVnLWF1dG9tYWtlLywKYnVnLWF1dG9tYWtlIG1haWxpbmcgbGlzdCBh cmNoaXZlc30gZm9yIHByZXZpb3VzIGJ1ZyByZXBvcnRzLiAgKFdlCnByZXZpb3VzbHkgdXNlZCBh IEduYXRzIGRhdGFiYXNlIGZvciBidWcgdHJhY2tpbmcsIGJ1dCBpdCBpcyBubyBsb25nZXIKb25s aW5lLikKCklmIHRoZSBidWcgaXMgbm90IGFscmVhZHkga25vd24sIGl0IHNob3VsZCBiZSByZXBv cnRlZC4gIFRvIHJlcG9ydApidWdzIGluIGEgd2F5IHRoYXQgaXMgdXNlZnVsIGFuZCBlZmZpY2ll bnQsIHBsZWFzZSByZWFkCkB1cmVme2h0dHBzOi8vd3d3LmNoaWFyay5ncmVlbmVuZC5vcmcudWsv QC9+c2d0YXRoYW0vQC9idWdzLmh0bWwsIEhvdwp0byBSZXBvcnQgQnVncyBFZmZlY3RpdmVseX0g YW5kCkB1cmVme2h0dHA6Ly9jYXRiLm9yZy9AL35lc3IvQC9mYXFzL0Avc21hcnQtcXVlc3Rpb25z Lmh0bWwsIEhvdyB0byBBc2sKUXVlc3Rpb25zIHRoZSBTbWFydCBXYXl9LiAgR29vZCBidWcgcmVw b3J0cyBzYXZlIHRpbWUgZm9yIGV2ZXJ5b25lLgoKRm9yIGEgYnVnIHJlcG9ydCwgYSBmZWF0dXJl IHJlcXVlc3Qgb3Igb3RoZXIgc3VnZ2VzdGlvbnMsIHBsZWFzZSBzZW5kCmVtYWlsIHRvIEBlbWFp bHtAdmFsdWV7UEFDS0FHRV9CVUdSRVBPUlR9fS4gIFRoaXMgd2lsbCB0aGVuIG9wZW4gYSBuZXcK YnVnIGluIHRoZSBAdXJlZntodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9AL2F1dG9tYWtlLCBidWcg dHJhY2tlcn0uICBCZQpzdXJlIHRvIGluY2x1ZGUgdGhlIHZlcnNpb25zIG9mIEF1dG9jb25mIGFu ZCBBdXRvbWFrZSB0aGF0IHlvdSB1c2UgYW5kCnRoZSBraW5kIG9mIHN5c3RlbSB5b3UncmUgb24u ICBJZGVhbGx5LCBwb3N0IGEgbWluaW1hbApAZmlsZXtNYWtlZmlsZS5hbX0gYW5kIEBmaWxle2Nv bmZpZ3VyZS5hY30gdGhhdCByZXByb2R1Y2VzIHRoZSBwcm9ibGVtCnlvdSBlbmNvdW50ZXIuICBJ ZiB5b3UgaGF2ZSBlbmNvdW50ZXJlZCB0ZXN0IHN1aXRlIGZhaWx1cmVzLCBwbGVhc2UKYXR0YWNo IHRoZSBAZmlsZXt0ZXN0LXN1aXRlLmxvZ30gZmlsZS4KCkBjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQXBwZW5kaWNlcwoKQHBhZ2UK QG5vZGUgQ29weWluZyBUaGlzIE1hbnVhbApAYXBwZW5kaXggQ29weWluZyBUaGlzIE1hbnVhbAoK QG1lbnUKKiBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2U6OiAgTGljZW5zZSBmb3IgY29w eWluZyB0aGlzIG1hbnVhbApAZW5kIG1lbnUKCkBub2RlIEdOVSBGcmVlIERvY3VtZW50YXRpb24g TGljZW5zZQpAYXBwZW5kaXhzZWMgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCkBpbmNs dWRlIGZkbC50ZXhpCgpAcGFnZQpAbm9kZSBJbmRpY2VzCkBhcHBlbmRpeCBJbmRpY2VzCgpAbWVu dQoqIE1hY3JvIEluZGV4OjogICAgICAgICAgICAgICAgIEluZGV4IG9mIEF1dG9jb25mIG1hY3Jv cwoqIFZhcmlhYmxlIEluZGV4OjogICAgICAgICAgICAgIEluZGV4IG9mIE1ha2VmaWxlIHZhcmlh YmxlcwoqIEdlbmVyYWwgSW5kZXg6OiAgICAgICAgICAgICAgIEdlbmVyYWwgaW5kZXgKQGVuZCBt ZW51CgpAbm9kZSBNYWNybyBJbmRleApAYXBwZW5kaXhzZWMgTWFjcm8gSW5kZXgKCkBwcmludGlu ZGV4IGZuCgpAbm9kZSBWYXJpYWJsZSBJbmRleApAYXBwZW5kaXhzZWMgVmFyaWFibGUgSW5kZXgK CkBwcmludGluZGV4IHZyCgpAbm9kZSBHZW5lcmFsIEluZGV4CkBhcHBlbmRpeHNlYyBHZW5lcmFs IEluZGV4CgpAcHJpbnRpbmRleCBjcAoKQGJ5ZQoKQGMgIExvY2FsV29yZHM6ICB0ZXhpbmZvIHNl dGZpbGVuYW1lIHNldHRpdGxlIHNldGNoYXB0ZXJuZXdwYWdlIHRleGkgZGlyZW50cnkKQGMgIExv Y2FsV29yZHM6ICBkaXJjYXRlZ29yeSBpbidzIGFjbG9jYWwgaWZpbmZvIHRpdGxlcGFnZSBUcm9t ZXkgdnNraXAgcHQgc3AKQGMgIExvY2FsV29yZHM6ICBmaWxsbCBkZWZjb2RlaW5kZXggb3YgY3Yg b3AgdHIgc3luY29kZWluZGV4IGZuIGNwIHZyIGlmbm90dGV4CkBjICBMb2NhbFdvcmRzOiAgZGly IEF1dG9tYWtlJ3MgYWMgRGlzdCBHbml0cyBnbml0cyBkZm4gQXV0b2NvbmYncyBweHJlZgpAYyAg TG9jYWxXb3JkczogIGNpbmRleCBBdXRvY29uZiBhdXRvY29uZiBwZXJsIHNhbXAgZGlzdCB0cmlu ZGV4IFNVQlNUIGZvbwpAYyAgTG9jYWxXb3JkczogIHhzIGVtcGggRklYTUUgcmVmIHZpbmRleCBw a2dsaWJkaXIgcGtnaW5jbHVkZWRpciBwa2dkYXRhZGlyIG10CkBjICBMb2NhbFdvcmRzOiAgcGtn IGxpYmRpciBjcGlvIGJpbmRpciBzYmluZGlyIHJtdCBwYXggc2JpbiB6YXIgemFyZGlyIGFjaW5k ZXgKQGMgIExvY2FsV29yZHM6ICBIVE1MIGh0bWxkaXIgaHRtbCBub2luc3QgVEVYSU5GT1Mgbm9k aXN0IG5vYmFzZSBzdHJ1ZGVsIENGTEFHUwpAYyAgTG9jYWxXb3JkczogIGxpYm11bWJsZSBDQyBZ RkxBR1MgaXRlbXggZGUgZmljYXRpb24gY29uZmlnIHVybCBjb21wCkBjICBMb2NhbFdvcmRzOiAg ZGVwY29tcCBlbGlzcCBzaCBtZGF0ZSBta2luc3RhbGxkaXJzIG1rZGlyIHB5IHRleCBkdmkgcHMg cGRmCkBjICBMb2NhbFdvcmRzOiAgeWx3cmFwIHphcmRveiBJTklUIGdldHRleHQgYWNpbmNsdWRl IG12IEZVTkNTIExJQk9CSlMgTERBREQgZnIKQGMgIExvY2FsV29yZHM6ICB1cmVmIGZlYXR1cmVm dWwgZG5sIHNyYyBMSU5HVUFTIGVzIGtvIG5sIHBsIHNsIHN2IFBST0cgSVNDIGRvYwpAYyAgTG9j YWxXb3JkczogIFBPU0lYIFNUREMgZmNudGwgRlVOQyBBTExPQ0EgYmxrc2l6ZSBzdHJ1Y3Qgc3Rh dCBpbnRsIHBvIGNobW9kCkBjICBMb2NhbFdvcmRzOiAgQ2hhbmdlTG9nIFNVQkRJUlMgZ2V0dGV4 dGl6ZSBncGwgdGVzdGRhdGEgZ2V0b3B0IElOVExMSUJTIGNwcApAYyAgTG9jYWxXb3JkczogIGxv Y2FsZWRpciBkYXRhZGlyIERMT0NBTEVESVIgREVYSVQgQ1BQRkxBR1MgYXV0b3JlY29uZiBvcGlu ZGV4CkBjICBMb2NhbFdvcmRzOiAgQVVYIHZhciBzeW1saW5rIGRlcHMgV25vIFdub25lIHBhY2th Z2UncyBhY2xvY2FsJ3MgZGlzdGNsZWFuCkBjICBMb2NhbFdvcmRzOiAgbHRtYWluIHhyZWYgTElC U09VUkNFIExJQlNPVVJDRVMgTElCT0JKIE1FTUNNUCB2cyBSQU5MSUIgQ1hYCkBjICBMb2NhbFdv cmRzOiAgTERGTEFHUyBMSUJUT09MIGxpYnRvb2wgWFRSQSBMSUJTIGdldHRleHQncyBhY2RpciBB UElWRVJTSU9OCkBjICBMb2NhbFdvcmRzOiAgZGlybGlzdCBub2luZGVudCB1c3IgVElPQ0dXSU5T WiBzYwpAYyAgTG9jYWxXb3JkczogIEdXSU5TWiB0ZXJtaW9zIFNSQ0RJUiB0YXJiYWxsIGJ6aXAg TElTUERJUiBsaXNwZGlyIFhFbWFjcyBDQ0FTCkBjICBMb2NhbFdvcmRzOiAgZW1hY3NlbiBNaWNy b0VtYWNzIENDQVNGTEFHUyBVWCBHQ0ogZ2NqIEdDSkZMQUdTIHBvc2l4IERNQUxMT0MKQGMgIExv Y2FsV29yZHM6ICBkbWFsbG9jIGxkbWFsbG9jIFJFR0VYIHJlZ2V4IERFUERJUiBERVAgREVGVU4g YWNsb2NhbGRpciBmaQpAYyAgTG9jYWxXb3JkczogIG15bWFjcm8gbXlvdGhlcm1hY3JvIEFNRkxB R1MgYXV0b3BvaW50IGF1dG9nZW4gbGlidG9vbGl6ZSB5dW0KQGMgIExvY2FsV29yZHM6ICBhdXRv aGVhZGVyIFJFQURNRSBNQUtFRkxBR1Mgc3ViZGlyIEluZXR1dGlscyBzeW5jIENPTkQgZW5kaWYK QGMgIExvY2FsV29yZHM6ICBNaWxsZXIncyBpbnN0YWxsYWJsZSBpbmNsdWRlZGlyIGluYyBwa2dk YXRhIEVYRUVYVCBsaWJleGVjIGJzZApAYyAgTG9jYWxXb3JkczogIHBrZ2xpYiBsaWJleGVjZGly IHByb2cgbGliY3BpbyBjcGlvJ3MgZGxvcGVuIGRscHJlb3BlbiBsaW51eApAYyAgTG9jYWxXb3Jk czogIHN1YnN1YnNlY3Rpb24gT0JKRVhUIGVzYWMgbGliIExUTElCUkFSSUVTIGxpYmxvYiBMSUJB REQgQVIgYXIKQGMgIExvY2FsV29yZHM6ICBBUkZMQUdTIGNyIGluZyBtYXVkZSBsaWJnZXR0ZXh0 IGxvIExUTElCT0JKUyBycGF0aCBTR0kgUFJFIHl5CkBjICBMb2NhbFdvcmRzOiAgbGlibWF1ZGUg Q0NMRCBDWFhGTEFHUyBGRkxBR1MgTEZMQUdTIE9CSkNGTEFHUyBSRkxBR1MgREVGUyBjYwpAYyAg TG9jYWxXb3JkczogIE9CSkNYWEZMQUdTCkBjICBMb2NhbFdvcmRzOiAgU0hPUlROQU1FIHZ0YWJs ZSBzcmNkaXIgbm9zdGRpbmMgYmFzZW5hbWUgeXh4IGN4eCBsbCBseHggZ2RiCkBjICBMb2NhbFdv cmRzOiAgbGV4ZXJzIHl5bWF4ZGVwdGggbWF4ZGVwdGggeXlwYXJzZSB5eWxleCB5eWVycm9yIHl5 bHZhbCBsdmFsCkBjICBMb2NhbFdvcmRzOiAgeXljaGFyIHl5ZGVidWcgeXlwYWN0IHl5ciB5eWRl ZiBkZWYgeXljaGsgY2hrIHl5cGdvIHBnbyB5eWFjdApAYyAgTG9jYWxXb3JkczogIHl5ZXhjYSBl eGNhIHl5ZXJyZmxhZyBlcnJmbGFnIHl5bmVycnMgbmVycnMgeXlwcyB5eXB2IHB2IHl5cwpAYyAg TG9jYWxXb3JkczogIHl5c3RhdGUgeXl0bXAgdG1wIHl5diB5eXZhbCB2YWwgeXlsbG9jIGxsb2Mg eXlyZWRzIHl5dG9rcyB0b2tzCkBjICBMb2NhbFdvcmRzOiAgeXlsaHMgeXlsZW4geXlkZWZyZWQg eXlkZ290byB5eXNpbmRleCB5eXJpbmRleCB5eWdpbmRleCB5eW5hbWUKQGMgIExvY2FsV29yZHM6 ICB5eXRhYmxlIHl5Y2hlY2sgeXlydWxlIGJ5YWNjIENYWENPTVBJTEUgQ1hYTElOSyBGTElOSyBj Zm9ydHJhbgpAYyAgTG9jYWxXb3JkczogIENhdGFsb2d1ZSBwcmVwcm9jZXNzYWJsZSBGTElCUyBs aWJmb28gYmF6IEpBVkFDRkxBR1MgamF2YSBleGUKQGMgIExvY2FsV29yZHM6ICBTdW5PUyBiYXNl bmFtZXMgZXhlZXh0IHVuaW5zdGFsbGVkIG9sZGluY2x1ZGUga3IgRlNGJ3MKQGMgIExvY2FsV29y ZHM6ICBwa2dpbmNsdWRlIG9sZGluY2x1ZGVkaXIgc3lzY29uZiBzaGFyZWRzdGF0ZSBsb2NhbHN0 YXRlIGdjYyBybQpAYyAgTG9jYWxXb3JkczogIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9j YWxzdGF0ZWRpciBwcmVleGlzdCBDTEVBTkZJTEVTIGd6CkBjICBMb2NhbFdvcmRzOiAgZGVwZmls ZSB0bXBkZXBmaWxlIGRlcG1vZGUgY29uc3QgaW50ZXJvcGVyYXRlCkBjICBMb2NhbFdvcmRzOiAg SkFWQUMgamF2YWMgSkFWQVJPT1QgYnVpbGRkaXIgQ0xBU1NQQVRIIEVOViBweWMgcHlvIHBrZ3B5 dGhvbgpAYyAgTG9jYWxXb3JkczogIHB5ZXhlY2RpciBwa2dweWV4ZWNkaXIgUHl0aG9uJ3MgcHl0 aG9uZGlyIHBrZ3B5dGhvbmRpciB0eGkgb2lzCkBjICBMb2NhbFdvcmRzOiAgaW5zdGFsbGluZm8g dmVycyBNQUtFSU5GTyBtYWtlaW5mbyBNQUtFSU5GT0ZMQUdTIG5vaW5zdGFsbCByZgpAYyAgTG9j YWxXb3JkczogIG1hbmRpciB0aGVzYW1lIGFsc290aGVzYW1lIGluc3RhbGxtYW4gbXlleGVjYmlu IERFU1RESVIgUGluYXJkCkBjICBMb2NhbFdvcmRzOiAgdW5pbnN0YWxsIGluc3RhbGxkaXJzIHVu aW5zdGFsbHMgTU9TVExZQ0xFQU5GSUxFUyBtb3N0bHljbGVhbgpAYyAgTG9jYWxXb3JkczogIERJ U1RDTEVBTkZJTEVTIE1BSU5UQUlORVJDTEVBTkZJTEVTIEdaSVAgZ3ppcCBzaGFyIGV4cApAYyAg TG9jYWxXb3JkczogIGRpc3RkaXIgZGlzdGNoZWNrIGRpc3RjbGVhbmNoZWNrIGxpc3RmaWxlcyBk aXN0dW5pbnN0YWxsY2hlY2sKQGMgIExvY2FsV29yZHM6ICBWUEFUSCB0YXJmaWxlIHN0ZG91dCBY RkFJTCBEZWphR251IGRlamFnbnUgREVKQVRPT0wgcnVudGVzdCBsbgpAYyAgTG9jYWxXb3Jkczog IFJVTlRFU1RERUZBVUxURkxBR1MgdG9vbGNoYWluIFJVTlRFU1RGTEFHUyBhc2lzIHJlYWRtZSBE VklQUwpAYyAgTG9jYWxXb3JkczogIGluc3RhbGxjaGVjayBnemlwcGVkIHRhclogc3RkIHV0aWxz IGV0YWdzIG1raWQgY2QKQGMgIExvY2FsV29yZHM6ICBBUkdTIHRhZ2dhYmxlIEVUQUdTRkxBR1Mg bGFuZyBjdGFncyBDVEFHU0ZMQUdTIEdUQUdTIGd0YWdzIGlkbApAYyAgTG9jYWxXb3JkczogIGZv b2NjIGRvaXQgaWRsQyBtdWx0aWxpYnMgQUJJcyBjbWluZGV4IGRlZm1hYyBBUkcgZW5hYmxldmFs IEZDCkBjICBMb2NhbFdvcmRzOiAgTVNHIHh0cnVlIERCRyBwYXRoY2hrIENZR1dJTiBhZmlsZSBw cm9nbGluayB2ZXJzaW9uZWQgVEUKQGMgIExvY2FsV29yZHM6ICB3aWxkY2FyZHMgQXV0b2NvbmZp c2NhdGVkIHN1YnN1YmhlYWRpbmcgYXV0b3Rvb2xzIE1leWVyaW5nIEFQSQpAYyAgTG9jYWxXb3Jk czogIG9pcydzIHdpbGRjYXJkIFdwb3J0YWJpbGl0eSBjYXJ0b3VjaGUgdnJpbmRleCBwcmludGlu ZGV4IER1cmV0CkBjICBMb2NhbFdvcmRzOiAgRFNPTUVGTEFHIERWRVJTSU9OIGF1dG9tYWtlIEx1 dHogaW5zZXJ0Y29weWluZyB2ZXJzaW9uaW5nIEZBUQpAYyAgTG9jYWxXb3JkczogIExUTElCT0JK IExpYnRvb2wncyBsaWJ0b29sJ3MgbGlibHRkbCBkbG9wZW5pbmcgaXR1dGlvbnMgbGliYmFyCkBj ICBMb2NhbFdvcmRzOiAgV0FOVEVETElCUyBsaWJoZWxsbyBzdWJsaWJyYXJpZXMgbGlidG9wIGxp YnN1YiBkbG9wZW5lZCBSYXRmb3IKQGMgIExvY2FsV29yZHM6ICBteW1vZHVsZSB0aW1lc3RhbXBz IHRpbWVzdGFtcCB1bmRlcnF1b3RlZCBNQUtFSU5GT0hUTUxGTEFHUyB0ZQpAYyAgTG9jYWxXb3Jk czogIEdOVW1ha2VmaWxlIFN1YnBhY2thZ2VzIHN1YnBhY2thZ2UncyBzdWJwYWNrYWdlcyBhdXgK QGMgIExvY2FsV29yZHM6ICBkZXRhaWxtZW51IFRpbWVsaW5lIHB3ZCByZWxkaXIgQVVUT00gYXV0 b20gUFJFUkVRIEZPT0JBUiBsaWJjCkBjICBMb2NhbFdvcmRzOiAgbGliaGFuZCBzdWJwYWNrYWdl IG1vZHVsZU4gbGlibWFpbiBsaWJtaXNjIEZDRkxBR1MgRkNDT01QSUxFCkBjICBMb2NhbFdvcmRz OiAgRkNMSU5LIHN1YnN0IHNlZCBFTENGSUxFUyBlbGMgTUFLRUlORk9IVE1MIGR2aXBzIGVzeXNj bWQgdXN0YXIKQGMgIExvY2FsV29yZHM6ICB0YXJiYWxscyBXb3ZlcnJpZGUgdmZpIEVMRklMRVMg ZGptIEF1dG9NYWtlIGhvbmtpbiBGU0YKQGMgIExvY2FsV29yZHM6ICBmaWxldXRpbHMgcHJlY2Fu bmVkIE1hY0tlbnppZSdzIHJlaW1wbGVtZW50IHRlcm11dGlscyBUcm9tZXkncwpAYyAgTG9jYWxX b3JkczogIGNvaXMgZ25pdHNpYW5zIExJQlBST0dSQU1TIHByb2dzIExJQkxJQlJBUklFUyBUZXh0 dXRpbHMgVWxyaWNoCkBjICBMb2NhbFdvcmRzOiAgTWF0emlna2VpdCBEcmVwcGVyJ3MgR29yZCBN YXR6aWdrZWl0J3Mgam0gRGFsbGV5IERlYmlhbiBvcmcKQGMgIExvY2FsV29yZHM6ICBBZG1pbmlz dHJpdmlhIElMVSBDT1JCQSBTb3VyY2V3YXJlIE1vbGVuZGEgc291cmNld2FyZSBFbGxpc3RvbgpA YyAgTG9jYWxXb3JkczogIGRlcCBPbGl2YSBBa2ltIERlbWFpbGxlIEFpaWVlZWUgRGVtYWlsbGF0 b3IgQWtpbSdzIHNvdXJjZXF1YWtlCkBjICBMb2NhbFdvcmRzOiAgZ3JlcCBiYWNrcG9ydGVkIHNj cmVlbnNob3RzIGxpYmdjaiBLQiB1bm51bWJlcmVkc3Vic3Vic2VjIHByZQpAYyAgTG9jYWxXb3Jk czogIHByZWNvbXB1dGluZyBoYWNreSBtYWtlZGVwZW5kIGlubGluZSBjbGVhcm1ha2UgTEQgUFJF TE9BRCBSZWwKQGMgIExvY2FsV29yZHM6ICBzeXNjYWxscyBwZXJsaGlzdCBhY2wgcG0gbXVsdGl0 YWJsZSBoZWFkaXRlbSBmZGwgYXBwZW5kaXhzZWMKQGMgIExvY2FsV29yZHM6ICBMVEFMTE9DQSBN QUxMT0MgbWFsbG9jIG1lbWNtcCBzdHJkdXAgYWxsb2NhIGxpYmNvbXBhdCB4eXogREZPTwpAYyAg TG9jYWxXb3JkczogIHVucHJlZml4ZWQgYnVpbGRhYmxlIHByZXByb2Nlc3NlZCBEQkFaIEREQVRB RElSIFdBUk5JTkdDRkxBR1MKQGMgIExvY2FsV29yZHM6ICBMSUJGT09DRkxBR1MgTElCRk9PTERG TEFHUyBmdGFibGUgdGVzdFN1YkRpciBvYmogTElCVE9PTEZMQUdTCkBjICBMb2NhbFdvcmRzOiAg YmFyZXhlYyBQaW5hcmQncyBhdXRvbWF0aXplIGluaXRpYWxpemUgbHppcCB4eiB6c3RkIGNzY29w ZQo= --sb1P4XLmoM Content-Type: application/octet-stream Content-Disposition: attachment; filename="am-optional-automake.sh" Content-Transfer-Encoding: base64 IyEgL2Jpbi9zaAojIENvcHlyaWdodCAoQykgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiMgYW55IGxh dGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CgojIENoZWNrIEFNX09QVElPTkFMX0FVVE9NQUtFLiAgRml2ZSBzY2VuYXJpb3M6CiMgICgxKSBU aGUgdG9vbCBpcyBvbiBQQVRIIGF0IGNvbmZpZ3VyZSB0aW1lIC0+IGRpc3QtYnppcDMgcHJvZHVj ZXMKIyAgICAgICRkaXN0ZGlyLnRhci5iejMgYWxvbmdzaWRlIHRoZSBhbHdheXMtYnVpbHQgJGRp c3RkaXIudGFyLmd6LgojICAoMikgQW4gdW5rbm93biBvcHRpb24gcHJvZHVjZXMgYW4gYXV0b3Jl Y29uZi10aW1lIGBzeW50YXgnIHdhcm5pbmcKIyAgICAgIGJ1dCBkb2VzIG5vdCBicmVhayBjb25m aWd1cmUgb3IgbWFrZSBkaXN0LgojICAoMykgVGhlIHRvb2wgaXMgbWlzc2luZyBhdCBjb25maWd1 cmUgdGltZSAtPiBubyBleHRyYSBydWxlIGlzCiMgICAgICBhcHBlbmRlZDsgYG1ha2UgZGlzdCcg cnVucyBjbGVhbmx5IGFuZCBkb2VzIG5vdCBwcm9kdWNlCiMgICAgICAkZGlzdGRpci50YXIuYnoz LgojICAoNCkgVGhlIHRvb2wgaXMgcHJlc2VudCBhdCBjb25maWd1cmUgdGltZSBidXQgYWJzZW50 IHdoZW4KIyAgICAgIGBtYWtlIGRpc3QnIHJ1bnMgLT4gaW52b2tpbmcgaXQgZmFpbHMsIHRoZSBy ZWNpcGUgY2xlYW5zIHVwLAojICAgICAgcHJpbnRzIGEgd2FybmluZyB0byBzdGRlcnIsIGBtYWtl IGRpc3QnIHN0aWxsIHN1Y2NlZWRzLCBhbmQgbm8KIyAgICAgICRkaXN0ZGlyLnRhci5iejMgYXBw ZWFycyAobm8gYGNvbW1hbmQgLXYnIHByb2JlIGludm9sdmVkKS4KIyAgKDUpIGRpc3Qtc2hhciBh bmQgZGlzdC10YXJaLCB0aGUgdHdvIG5vbi10YXItcGlwZSBmb3JtYXRzLgoKcmVxdWlyZWQ9J2J6 aXAzJwouIHRlc3QtaW5pdC5zaAoKIyAMCjogIlRlc3QgMTogYnppcDMgb24gUEFUSCBhdCBjb25m aWd1cmUgdGltZS4iCgpjYXQgPiBjb25maWd1cmUuYWMgPDwnRU5EJwpBQ19JTklUKFthbS1vcHRp b25hbC1hdXRvbWFrZV0sIFsxLjBdKQpBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKQU1fT1BU SU9OQUxfQVVUT01BS0UoW2Rpc3QtYnppcDNdKQpBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkK QUNfT1VUUFVUCkVORAo6ID4gTWFrZWZpbGUuYW0KCiRBQ0xPQ0FMCiRBVVRPQ09ORgokQVVUT01B S0UgLS1hZGQtbWlzc2luZwouL2NvbmZpZ3VyZQokTUFLRSBkaXN0CnRlc3QgLXMgYW0tb3B0aW9u YWwtYXV0b21ha2UtMS4wLnRhci5negp0ZXN0IC1zIGFtLW9wdGlvbmFsLWF1dG9tYWtlLTEuMC50 YXIuYnozCiMgVGhlc2UgYXJjaGl2ZXMgYXJlIG5vdCBpbiAkKERJU1RfQVJDSElWRVMpOyBkaXN0 Y2hlY2sgbXVzdCBzdGlsbAojIHBhc3MgKGl0cyBpbi10cmVlIGNvcGllcyBnZXQgY2xlYW5lZCBi ZWZvcmUgZGlzdGNsZWFuY2hlY2spLgokTUFLRSBkaXN0Y2hlY2sKdGVzdCAtcyBhbS1vcHRpb25h bC1hdXRvbWFrZS0xLjAudGFyLmJ6MwoKcm0gLXJmIGF1dG9tNHRlKi5jYWNoZSBhY2xvY2FsLm00 IGNvbmZpZ3VyZSBNYWtlZmlsZS5pbiBpbnN0YWxsLXNoIFwKICAgICAgIG1pc3NpbmcgY29uZmln LnN0YXR1cyBjb25maWcubG9nIE1ha2VmaWxlIFwKICAgICAgIGFtLW9wdGlvbmFsLWF1dG9tYWtl LTEuMCBhbS1vcHRpb25hbC1hdXRvbWFrZS0xLjAudGFyLioKCiMgDAo6ICJUZXN0IDI6IFVua25v d24gb3B0aW9uIGlzIGEgd2FybmluZywgbm90IGFuIGVycm9yLiIKCmNhdCA+IGNvbmZpZ3VyZS5h YyA8PCdFTkQnCkFDX0lOSVQoW2FtLW9wdGlvbmFsLWF1dG9tYWtlXSwgWzEuMF0pCkFNX0lOSVRf QVVUT01BS0UoW2ZvcmVpZ25dKQpBTV9PUFRJT05BTF9BVVRPTUFLRShbZGlzdC1iYW5hbmEgZGlz dC1iemlwM10pCkFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQpBQ19PVVRQVVQKRU5ECjogPiBN YWtlZmlsZS5hbQoKIyBhY2xvY2FsL2F1dG9jb25mIG11c3Qgc3VjY2VlZC4gIFRoZSBgc3ludGF4 JyB3YXJuaW5nIGlzIGVtaXR0ZWQgYnkKIyBtNF93YXJuKCkgZHVyaW5nIG1hY3JvIGV4cGFuc2lv biwgd2hpY2ggaGFwcGVucyB3aGVuIGF1dG9jb25mIHJ1bnMKIyAoYWNsb2NhbCBvbmx5IHNjYW5z KS4gIFdlIGRvbid0IHByb21vdGUgaXQgdG8gZXJyb3IgaGVyZTogQU1fSU5JVCdzCiMgZGVmYXVs dCB3YXJuaW5nIHNldCBpcyBwbGVudHkuICBDYXB0dXJlIGF1dG9jb25mJ3Mgc3RkZXJyIGFuZAoj IGFzc2VydCB0aGUgd2FybmluZyBtZW50aW9ucyB0aGUgb2ZmZW5kaW5nIHRva2VuLgokQUNMT0NB TAokQVVUT0NPTkYgLVduby1lcnJvciAyPnN0ZGVycgpncmVwICJkaXN0LWJhbmFuYSIgc3RkZXJy CgokQVVUT01BS0UgLS1hZGQtbWlzc2luZwouL2NvbmZpZ3VyZQokTUFLRSBkaXN0CnRlc3QgLXMg YW0tb3B0aW9uYWwtYXV0b21ha2UtMS4wLnRhci5iejMKCnJtIC1yZiBhdXRvbTR0ZSouY2FjaGUg YWNsb2NhbC5tNCBjb25maWd1cmUgTWFrZWZpbGUuaW4gaW5zdGFsbC1zaCBcCiAgICAgICBtaXNz aW5nIGNvbmZpZy5zdGF0dXMgY29uZmlnLmxvZyBNYWtlZmlsZSBzdGRlcnIgXAogICAgICAgYW0t b3B0aW9uYWwtYXV0b21ha2UtMS4wIGFtLW9wdGlvbmFsLWF1dG9tYWtlLTEuMC50YXIuKgoKIyAM CjogIlRlc3QgMzogYnppcDMgbWlzc2luZyBhdCBjb25maWd1cmUgdGltZS4iCgpjYXQgPiBjb25m aWd1cmUuYWMgPDwnRU5EJwpBQ19JTklUKFthbS1vcHRpb25hbC1hdXRvbWFrZV0sIFsxLjBdKQpB TV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKQU1fT1BUSU9OQUxfQVVUT01BS0UoW2Rpc3QtYnpp cDNdKQpBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKQUNfT1VUUFVUCkVORAo6ID4gTWFrZWZp bGUuYW0KCiMgSGlkZSBiemlwMyBmcm9tIFBBVEggYnkgd2Fsa2luZyAkUEFUSCBhbmQgY3JlYXRp bmcgYSBmcmVzaCBzYW5kYm94CiMgZGlyZWN0b3J5IG9mIHN5bWxpbmtzIHRvIGV2ZXJ5IGV4ZWN1 dGFibGUgZXhjZXB0IGJ6aXAzLiAgWWlrZXMuCiMgT3RoZXIgdG9vbHMgdGhlIHRlc3QgaGFybmVz cyBuZWVkcyAoJGFtX2JpbmRpciwgdC9heCkgY29tZSBmcm9tCiMgYXV0b21ha2UncyBidWlsZCB0 cmVlIGFuZCBhcmUgbm90IGFmZmVjdGVkLgpta2RpciBzYW5kYm94LWJpbgooIElGUz06CiAgZm9y IGQgaW4gJFBBVEg7IGRvCiAgICB0ZXN0IC1kICIkZCIgfHwgY29udGludWUKICAgIGZvciBmIGlu ICIkZCIvKjsgZG8KICAgICAgdGVzdCAtZiAiJGYiIHx8IGNvbnRpbnVlCiAgICAgIGJuPWBiYXNl bmFtZSAiJGYiYAogICAgICB0ZXN0IHgiJGJuIiA9IHhiemlwMyAmJiBjb250aW51ZQogICAgICB0 ZXN0IC14ICIkZiIgJiYgbG4gLXNmICIkZiIgInNhbmRib3gtYmluLyRibiIgMj4vZGV2L251bGwK ICAgIGRvbmUKICBkb25lICkKdGVzdCAhIC1lIHNhbmRib3gtYmluL2J6aXAzCgpzYXZlZF9QQVRI PSRQQVRIClBBVEg9YHB3ZGAvc2FuZGJveC1iaW46JGFtX2JpbmRpcjokYW1fdG9wX3NyY2Rpci90 L2F4CgokQUNMT0NBTAokQVVUT0NPTkYKJEFVVE9NQUtFIC0tYWRkLW1pc3NpbmcKLi9jb25maWd1 cmUKJE1BS0UgZGlzdAp0ZXN0IC1zIGFtLW9wdGlvbmFsLWF1dG9tYWtlLTEuMC50YXIuZ3oKdGVz dCAhIC1lIGFtLW9wdGlvbmFsLWF1dG9tYWtlLTEuMC50YXIuYnozCgpQQVRIPSRzYXZlZF9QQVRI CnJtIC1yZiBzYW5kYm94LWJpbiBhdXRvbTR0ZSouY2FjaGUgYWNsb2NhbC5tNCBjb25maWd1cmUg TWFrZWZpbGUuaW4gXAogICAgICAgaW5zdGFsbC1zaCBtaXNzaW5nIGNvbmZpZy5zdGF0dXMgY29u ZmlnLmxvZyBNYWtlZmlsZSBcCiAgICAgICBhbS1vcHRpb25hbC1hdXRvbWFrZS0xLjAgYW0tb3B0 aW9uYWwtYXV0b21ha2UtMS4wLnRhci4qCgojIAwKOiAiVGVzdCA0OiBiemlwMyBwcmVzZW50IGF0 IGNvbmZpZ3VyZSwgdmFuaXNoZWQgYXQgbWFrZSBkaXN0LiIKCmNhdCA+IGNvbmZpZ3VyZS5hYyA8 PCdFTkQnCkFDX0lOSVQoW2FtLW9wdGlvbmFsLWF1dG9tYWtlXSwgWzEuMF0pCkFNX0lOSVRfQVVU T01BS0UoW2ZvcmVpZ25dKQpBTV9PUFRJT05BTF9BVVRPTUFLRShbZGlzdC1iemlwM10pCkFDX0NP TkZJR19GSUxFUyhbTWFrZWZpbGVdKQpBQ19PVVRQVVQKRU5ECjogPiBNYWtlZmlsZS5hbQoKJEFD TE9DQUwKJEFVVE9DT05GCiRBVVRPTUFLRSAtLWFkZC1taXNzaW5nCi4vY29uZmlndXJlICAjIGJ6 aXAzIElTIG9uIFBBVEggaGVyZSwgc28gdGhlIHJ1bGUgaXMgYXBwZW5kZWQKCiMgTm93IHJlLXJ1 biBgbWFrZSBkaXN0JyB3aXRoIGJ6aXAzIGhpZGRlbi4gIEludm9raW5nIHRoZSBtaXNzaW5nCiMg dG9vbCBmYWlscyB0aGUgcGlwZWxpbmU7IHRoZSByZWNpcGUgbXVzdCBjbGVhbiB1cCwgcHJpbnQg YSB3YXJuaW5nLAojIGxlYXZlIHRoZSByZXN0IG9mIGBtYWtlIGRpc3QnIHJ1bm5pbmcsIGFuZCBl eGl0IDAuICBUaGVyZSBpcyBubwojIGBjb21tYW5kIC12JyBwcm9iZSwgc28gdGhpcyB3b3JrcyBv biBzaGVsbHMgbGFja2luZyB0aGF0IGJ1aWx0aW4uCm1rZGlyIHNhbmRib3gtYmluCiggSUZTPToK ICBmb3IgZCBpbiAkUEFUSDsgZG8KICAgIHRlc3QgLWQgIiRkIiB8fCBjb250aW51ZQogICAgZm9y IGYgaW4gIiRkIi8qOyBkbwogICAgICB0ZXN0IC1mICIkZiIgfHwgY29udGludWUKICAgICAgYm49 YGJhc2VuYW1lICIkZiJgCiAgICAgIHRlc3QgeCIkYm4iID0geGJ6aXAzICYmIGNvbnRpbnVlCiAg ICAgIHRlc3QgLXggIiRmIiAmJiBsbiAtc2YgIiRmIiAic2FuZGJveC1iaW4vJGJuIiAyPi9kZXYv bnVsbAogICAgZG9uZQogIGRvbmUgKQp0ZXN0ICEgLWUgc2FuZGJveC1iaW4vYnppcDMKCnNhdmVk X1BBVEg9JFBBVEgKUEFUSD1gcHdkYC9zYW5kYm94LWJpbjokYW1fYmluZGlyOiRhbV90b3Bfc3Jj ZGlyL3QvYXgKJE1BS0UgZGlzdCAyPnN0ZGVycgpQQVRIPSRzYXZlZF9QQVRICgp0ZXN0IC1zIGFt LW9wdGlvbmFsLWF1dG9tYWtlLTEuMC50YXIuZ3oKdGVzdCAhIC1lIGFtLW9wdGlvbmFsLWF1dG9t YWtlLTEuMC50YXIuYnozCmdyZXAgJ2FtLW9wdGlvbmFsOi4qZGlzdC1iemlwMyBmYWlsZWQnIHN0 ZGVycgoKcm0gLXJmIHNhbmRib3gtYmluIGF1dG9tNHRlKi5jYWNoZSBhY2xvY2FsLm00IGNvbmZp Z3VyZSBNYWtlZmlsZS5pbiBcCiAgICAgICBpbnN0YWxsLXNoIG1pc3NpbmcgY29uZmlnLnN0YXR1 cyBjb25maWcubG9nIE1ha2VmaWxlIHN0ZGVyciBcCiAgICAgICBhbS1vcHRpb25hbC1hdXRvbWFr ZS0xLjAgYW0tb3B0aW9uYWwtYXV0b21ha2UtMS4wLnRhci4qCgojIAwKOiAiVGVzdCA1OiBkaXN0 LXNoYXIgYW5kIGRpc3QtdGFyWiBhbG9uZ3NpZGUgdGhlIHRhci1waXBlIGZvcm1zLiIKIyBUaGVz ZSB0d28gZm9ybWF0cyBkbyBub3QgZm9sbG93IHRoZSBzaW5nbGUtdG9vbCB0YXItcGlwZSBwYXR0 ZXJuLAojIHNvIHRoZXkgZ2V0IHRoZWlyIG93biBleGVyY2lzZS4gIHNoYXIgYW5kIGNvbXByZXNz IGFyZSByYXJlbHkKIyBpbnN0YWxsZWQsIHNvIG9ubHkgYXNzZXJ0IHRoZSBhcmNoaXZlIHdoZW4g dGhlIHRvb2wgaXMgYWN0dWFsbHkKIyBwcmVzZW50OyBvdGhlcndpc2Ugd2UganVzdCBjaGVjayB0 aGF0IGBtYWtlIGRpc3QnIGRpZCBub3QgZmFpbC4KCmNhdCA+IGNvbmZpZ3VyZS5hYyA8PCdFTkQn CkFDX0lOSVQoW2FtLW9wdGlvbmFsLWF1dG9tYWtlXSwgWzEuMF0pCkFNX0lOSVRfQVVUT01BS0Uo W2ZvcmVpZ25dKQpBTV9PUFRJT05BTF9BVVRPTUFLRShbZGlzdC1zaGFyIGRpc3QtdGFyWl0pCkFD X0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQpBQ19PVVRQVVQKRU5ECjogPiBNYWtlZmlsZS5hbQoK JEFDTE9DQUwKJEFVVE9DT05GCiRBVVRPTUFLRSAtLWFkZC1taXNzaW5nCi4vY29uZmlndXJlCiRN QUtFIGRpc3QKdGVzdCAtcyBhbS1vcHRpb25hbC1hdXRvbWFrZS0xLjAudGFyLmd6CgppZiAoY29t bWFuZCAtdiBzaGFyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICB0ZXN0IC1zIGFtLW9wdGlvbmFs LWF1dG9tYWtlLTEuMC5zaGFyLmd6CiAgIyBUaGUgaW50ZXJtZWRpYXRlIHVuY29tcHJlc3NlZCAu c2hhciBtdXN0IG5vdCBiZSBsZWZ0IGJlaGluZC4KICB0ZXN0ICEgLWUgYW0tb3B0aW9uYWwtYXV0 b21ha2UtMS4wLnNoYXIKZmkKaWYgKGNvbW1hbmQgLXYgY29tcHJlc3MpID4vZGV2L251bGwgMj4m MTsgdGhlbgogIHRlc3QgLXMgYW0tb3B0aW9uYWwtYXV0b21ha2UtMS4wLnRhci5aCmZpCgpleGl0 IDQ0Cg== --sb1P4XLmoM--