PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KPGh0bWwKCjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPG1ldGEgbmFtZT0iQXV0aG9yIiBjb250ZW50PSJKb2UgV2luY2hlc3RlciI+CjxtZXRhIG5hbWU9IkdFTkVSQVRPUiIgY29udGVudD0iTWljcm9zb2Z0IEZyb250UGFnZSA0LjAiPgo8bWV0YSBuYW1lPSJQcm9nSWQiIGNvbnRlbnQ9IkZyb250UGFnZS5FZGl0b3IuRG9jdW1lbnQiPgo8dGl0bGU+VGFraW5nIGEgbG9vayBhdCBTV1QgSW1hZ2VzPC90aXRsZT4KPGxpbmsgaHJlZj0iLi4vZGVmYXVsdF9zdHlsZS5jc3MiIHJlbD1zdHlsZXNoZWV0Pgo8L2hlYWQ+Cgo8Ym9keT4KCjxkaXYgYWxpZ249InJpZ2h0Ij4KICA8Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4sIFRpbWVzLCBzZXJpZiI+PGZvbnQgc2l6ZT0iLTEiPkNvcHlyaWdodCAmY29weTsgMjAwMwogIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycC48L2ZvbnQ+PC9mb250Pgo8L2Rpdj4KPGRpdiBhbGlnbj0icmlnaHQiPgogIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMiIgd2lkdGg9IjEwMCUiPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249IkxFRlQiIHZhbGlnbj0iVE9QIiBjb2xzcGFuPSIyIiBiZ2NvbG9yPSIjMDA4MEMwIj48Yj48Zm9udCBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPjxmb250IGNvbG9yPSIjRkZGRkZGIj5FY2xpcHNlCiAgICAgICAgQ29ybmVyIEFydGljbGU8L2ZvbnQ+PC9mb250PjwvYj48L3RkPgogICAgPC90cj4KICA8L3RhYmxlPgo8L2Rpdj4KPGgxPjxpbWcgc3JjPSJpbWFnZXMvSWRlYS5qcGciIGhlaWdodD0iODYiIHdpZHRoPSIxMjAiIGFsaWduPSJDRU5URVIiPjwvaDE+CjxjZW50ZXI+CiAgPGgxPlRha2luZyBhIGxvb2sgYXQgU1dUIEltYWdlczwvaDE+CjwvY2VudGVyPgo8YmxvY2txdW90ZT4KICA8Yj5TdW1tYXJ5PC9iPjxicj4KICBTV1QncyBJbWFnZSBjbGFzcyBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IGltYWdlcyBpbiBhIEdVSS4gVGhlIG1vc3QgY29tbW9uCiAgc291cmNlIG9mIGltYWdlcyBpcyB0byBsb2FkIGZyb20gYSBzdGFuZGFyZCBmaWxlIGZvcm1hdCBzdWNoIGFzIEdJRiwgSlBFRywKICBQTkcsIG9yIEJNUC4gU29tZSBjb250cm9scywgaW5jbHVkaW5nIEJ1dHRvbnMgYW5kIFRyZWVJdGVtcywgYXJlIGFibGUgdG8KICBkaXNwbGF5IGFuIEltYWdlIGRpcmVjdGx5IHRocm91Z2ggdGhlIHNldEltYWdlKEltYWdlKSBtZXRob2QsIGJ1dCBhbnkKICBjb250cm9sJ3MgcGFpbnQgZXZlbnQgYWxsb3dzIGltYWdlcyB0byBiZSBkcmF3biB0aHJvdWdoIHRoZSBjYWxsYmFjaydzIGdyYXBoaWMKICBjb250ZXh0LiBTV1QncyBJbWFnZURhdGEgY2xhc3MgcmVwcmVzZW50cyB0aGUgcmF3IGRhdGEgbWFraW5nIHVwIGFuIFNXVCBJbWFnZQogIGFuZCBkZXRlcm1pbmVzIHRoZSBjb2xvciBmb3IgZWFjaCBwaXhlbCBjb29yZGluYXRlLiBUaGlzIGFydGljbGUgc2hvd3MgdGhlCiAgY29ycmVjdCB1c2VzIG9mIEltYWdlRGF0YSBhbmQgSW1hZ2UsIHNob3dzIGhvdyB0byBsb2FkIGltYWdlcyBmcm9tIGZpbGVzLCBhbmQKICBob3cgdG8gYWNoaWV2ZSBncmFwaGljIGVmZmVjdHMgc3VjaCBhcyB0cmFuc3BhcmVuY3ksIGFscGhhIGJsZW5kaW5nLAogIGFuaW1hdGlvbiwgc2NhbGluZywgYW5kIGN1c3RvbSBjdXJzb3JzLgogIDxwPjxiPkJ5IEpvZSBXaW5jaGVzdGVyLCBJQk08L2I+PGJyPgogICAgPGZvbnQgc2l6ZT0iLTEiPlNlcHRlbWJlciAxMHRoLCAyMDAzPC9mb250PjwvYmxvY2txdW90ZT4KPGhyIHdpZHRoPSIxMDAlIj4KPHA+VGhpcyBmaXJzdCBzZWN0aW9uIG9mIHRoaXMgYXJ0aWNsZSBnaXZlcyBhbiBpbnRyb2R1Y3Rpb24gdG8gY29sb3JzIGFuZCBzaG93cwpob3cgYW4gaW1hZ2UgcmVjb3JkcyB0aGUgY29sb3IgdmFsdWUgb2YgZWFjaCBwaXhlbC4KPHVsPgogIDxsaT48YSBocmVmPSIjSW50cm9kdWN0aW9uIj5JbnRyb2R1Y3Rpb248L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0ltYWdlIGxpZmVjeWNsZSI+SW1hZ2UgbGlmZWN5Y2xlPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNJbWFnZURhdGEiPkltYWdlRGF0YTwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjQ29sb3JzIj5Db2xvcjwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjUGFsZXR0ZURhdGEiPlBhbGV0dGVEYXRhPC9hPjwvbGk+CiAgPHVsPgogICAgPGxpPjxhIGhyZWY9IiNJbmRleGVkIHBhbGV0dGUiPkluZGV4ZWQgcGFsZXR0ZTwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNEaXJlY3QgcGFsZXR0ZSI+RGlyZWN0IHBhbGV0dGU8L2E+PC9saT4KICA8L3VsPgo8L3VsPgpUaGUgbmV4dCBzZWN0aW9uIGRlc2NyaWJlcyBpbWFnZSB0cmFuc3BhcmVuY3ksIGFscGhhIGJsZW5kaW5nLCBhbmltYXRpb24sIGFuZApob3cgdG8gc2NhbGUgaW1hZ2VzLgo8dWw+CiAgPGxpPjxhIGhyZWY9IiNUcmFuc3BhcmVuY3kiPlRyYW5zcGFyZW5jeTwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjTWFuaXB1bGF0aW5nIEltYWdlIERhdGEiPk1hbmlwdWxhdGluZyBJbWFnZURhdGE8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1NhdmluZyBJbWFnZXMiPlNhdmluZyBJbWFnZXM8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0JsZW5kaW5nIj5CbGVuZGluZzwvYT48L2xpPgogIDx1bD4KICAgIDxsaT48YSBocmVmPSIjU2luZ2xlIGFscGhhIHZhbHVlIj5TaW5nbGUgYWxwaGEgdmFsdWU8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjRGlmZmVyZW50IGFscGhhIHZhbHVlIHBlciBwaXhlbCI+RGlmZmVyZW50IGFscGhhIHZhbHVlIHBlcgogICAgICBwaXhlbDwvYT48L2xpPgogIDwvdWw+CiAgPGxpPjxhIGhyZWY9IiNJbWFnZSBFZmZlY3RzIj5JbWFnZSBlZmZlY3RzPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNBbmltYXRpb24iPkdJRiBhbmltYXRpb248L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1NjYWxpbmciPlNjYWxpbmc8L2E+PC9saT4KPC91bD4KRmluYWxseSwgdGhlIGFydGljbGUgc2hvd3MgaG93IHRvIGNyZWF0ZSBjdXJzb3JzIGZyb20gaW1hZ2VzLCBieSB1c2luZyBhIHNvdXJjZQppbWFnZSB0b2dldGhlciB3aXRoIGEgbWFzay4KPHVsPgogIDxsaT48YSBocmVmPSIjQ3Vyc29yIj5DdXJzb3JzPC9hPjwvbGk+CiAgPHVsPgogICAgPGxpPjxhIGhyZWY9IiNQbGF0Zm9ybSBjdXJzb3JzIj5QbGF0Zm9ybSBjdXJzb3JzPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI0N1c3RvbSBjdXJzb3JzIj5DdXN0b20gY3Vyc29yczwvYT48L2xpPgogIDwvdWw+CjwvdWw+CjxoMT48YSBuYW1lPSJJbnRyb2R1Y3Rpb24iPjwvYT5JbnRyb2R1Y3Rpb248L2gxPgpUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBhbiBTV1QgSW1hZ2UgaXMgdG8gbG9hZCBpdCBmcm9tIGEgcmVjb2duaXplZCBncmFwaGljCmZpbGUgZm9ybWF0LiBUaGlzIGluY2x1ZGVzIEdJRiwgQk1QIChXaW5kb3dzIGZvcm1hdCBiaXRtYXApLCBKUEcsIGFuZCBQTkcuIFRoZQpUSUZGIGZvcm1hdCBpcyBhbHNvIHN1cHBvcnRlZCBpbiBtb3JlIHJlY2VudCBFY2xpcHNlIHJlbGVhc2VzLiBJbWFnZXMgY2FuIGJlCmxvYWRlZCBmcm9tIGEga25vd24gbG9jYXRpb24gaW4gdGhlIGZpbGUgc3lzdGVtIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciA8dHQ+SW1hZ2UoRGlzcGxheQpkaXNwbGF5LCBTdHJpbmcgZmlsZUxvY2F0aW9uKTwvdHQ+Ogo8cD48dHQ+SW1hZ2UgaW1hZ2UgPSBuZXcgSW1hZ2UoZGlzcGxheSw8YnI+CiZuYnNwOyZuYnNwOwomcXVvdDtDOi9lY2xpcHNlL2VjbGlwc2UvcGx1Z2lucy9vcmcuZWNsaXBzZS5wbGF0Zm9ybV8yLjAuMi9lY2xpcHNlX2xnLmdpZiZxdW90Oyk7PC90dD4KPHA+SW5zdGVhZCBvZiBoYXJkLWNvZGluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGltYWdlLCBpdCdzIG1vcmUgY29tbW9uIHRvIGxvYWQKdGhlIEltYWdlIGZyb20gYSBmb2xkZXIgbG9jYXRpb24gcmVsYXRpdmUgdG8gYSBnaXZlbiBjbGFzcy4gVGhpcyBpcyBkb25lIGJ5CmNyZWF0aW5nIGFuIElucHV0U3RyZWFtIHBvaW50aW5nIHRvIHRoZSBmaWxlIHdpdGggdGhlIG1ldGhvZCA8dHQ+Q2xhc3MuZ2V0UmVzb3VyY2VBc1N0cmVhbShTdHJpbmcKbmFtZSk8L3R0PiwgYW5kIHVzaW5nIHRoZSByZXN1bHQgYXMgdGhlIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciA8dHQ+SW1hZ2UoRGlzcGxheQpkaXNwbGF5LCBJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSk8L3R0Pi4KPHA+VGhlIEVjbGlwc2UgcGFja2FnZSBleHBsb3JlciBiZWxvdyBzaG93cyB0aGUgY2xhc3MgPHR0PmNvbS5mb28uU2hlbGxXaXRoQnV0dG9uU2hvd2luZ0VjbGlwc2VMb2dvCjwvdHQ+YW5kIHRoZSA8dHQ+ZWNsaXBzZV9sZy5naWY8L3R0PiBpbiB0aGUgc2FtZSBmb2xkZXIuIFRvIGZvbGxvd2luZyBjb2RlIHdvdWxkCmxvYWQgdGhlIGdyYXBoaWMgZnJvbSBpdHMgbG9jYXRpb24gcmVsYXRpdmUgdG8gdGhlIGNsYXNzLgo8cD48dHQ+SW1hZ2UgaW1hZ2UgPSBuZXcgSW1hZ2UoZGlzcGxheSwgPGJyPgombmJzcDsmbmJzcDsmbmJzcDsKU2hlbGxXaXRoQnV0dG9uU2hvd2luZ0VjbGlwc2VMb2dvLmNsYXNzLmdldFJlc291cmNlQXNTdHJlYW0oPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmcXVvdDtlY2xpcHNlX2xnLmdpZiZxdW90OykpOzwvdHQ+CjxwPjxpbWcgc3JjPSJpbWFnZXMvSW50cm9kdWN0aW9uUmVsYXRpdmVJY29uLmdpZiIgaGVpZ2h0PSIxODQiIHdpZHRoPSIyOTgiPgo8cD5PbmNlIHRoZSBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGl0IGNhbiBiZSB1c2VkIGFzIHBhcnQgb2YgYSBjb250cm9sIHN1Y2ggYXMgYQpCdXR0b24gb3IgTGFiZWwgdGhhdCBpcyBhYmxlIHRvIHJlbmRlciB0aGUgZ3JhcGhpYyBhcyBwYXJ0IG9mIHRoZWlyIDx0dD5zZXRJbWFnZShJbWFnZQppbWFnZSk8L3R0PiBtZXRob2RzLgo8cD48dHQ+QnV0dG9uIGJ1dHRvbiA9IG5ldyBCdXR0b24oc2hlbGwsU1dULlBVU0gpOzwvdHQ+PGJyPgo8dHQ+YnV0dG9uLnNldEltYWdlKGltYWdlKTs8L3R0Pgo8cD48aW1nIHNyYz0iaW1hZ2VzL0J1dG9uTG9nby5naWYiIGhlaWdodD0iMjIwIiB3aWR0aD0iMjc4Ij4KPHA+SW1hZ2VzIGNhbiBiZSBkcmF3biBvbnRvIHVzaW5nIGEgZ3JhcGhpY3MgY29udGV4dCB0aGF0IGlzIGNyZWF0ZWQgd2l0aCB0aGUKY29uc3RydWN0b3IgPHR0PkdDKERyYXdhYmxlIGRyYXdhYmxlKTwvdHQ+IHdpdGggdGhlIEltYWdlIGFzIHRoZSBhcmd1bWVudC4KPHA+PHR0PkdDIGdjID0gbmV3IEdDKGltYWdlKTs8L3R0Pjxicj4KPHR0PmdjLnNldEZvcmVncm91bmQoZGlzcGxheS5nZXRTeXN0ZW1Db2xvcihTV1QuQ09MT1JfV0hJVEUpKTs8L3R0Pjxicj4KPHR0PmdjLmRyYXdUZXh0KCZxdW90O0kndmUgYmVlbiBkcmF3biBvbiZxdW90OywwLDAsdHJ1ZSk7PC90dD48YnI+Cjx0dD5nYy5kaXNwb3NlKCk7PC90dD4KPHA+PGltZyBzcmM9ImltYWdlcy9JdmVCZWVuRHJhd25Pbi5naWYiIGhlaWdodD0iMjE4IiB3aWR0aD0iMjc2Ij4KPHA+VXNpbmcgYSBHQyB0byBkcmF3IG9udG8gYW4gSW1hZ2UgcGVybWFuZW50bHkgYWx0ZXJzIHRoZSBncmFwaGljLiBNb3JlCmluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgYSBHQyBpcyBjb3ZlcmVkIGluIHRoZSBhcnRpY2xlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvYXJ0aWNsZXMvQXJ0aWNsZS1TV1QtZ3JhcGhpY3MvU1dUX2dyYXBoaWNzLmh0bWwiPkdyYXBoaWNzCkNvbnRleHQgLSBRdWljayBvbiB0aGUgZHJhdy48L2E+CjxoMT48YSBuYW1lPSJJbWFnZSBsaWZlY3ljbGUiPjwvYT5JbWFnZSBsaWZlY3ljbGU8L2gxPgpXaGVuIGFuIGltYWdlIGlzIGxvYWRlZCwgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gY3JlYXRlIGRldmljZSBpbmRlcGVuZGVudCBJbWFnZURhdGEgCnJlcHJlc2VudGVkIGJ5IHRoZSBjbGFzcyA8dHQ+b3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlRGF0YTwvdHQ+LiBGb2xsb3dpbmcgCnRoaXMsIHRoZSBkYXRhIGlzIHByZXBhcmVkIGZvciBhIHNwZWNpZmljIGRldmljZSBieSBjcmVhdGluZyBhbiBhY3R1YWwgSW1hZ2UgaW5zdGFuY2UuIAo8cD5BcyB3ZWxsIGFzIGxvYWRpbmcgYW4gSW1hZ2UgZGlyZWN0bHkgZnJvbSBhIGZpbGUsIHlvdSBjYW4gc2VwYXJhdGVseSBjcmVhdGUgCiAgdGhlIEltYWdlRGF0YSBvYmplY3QgYW5kIHRoZW4gY29uc3RydWN0IHRoZSBJbWFnZSB1c2luZyA8dHQ+SW1hZ2UoRGV2aWNlIGRldmljZSwgCiAgSW1hZ2VEYXRhIGltYWdlRGF0YSk8L3R0Pi4gVGhlIGRhdGEgZm9yIGFuIGV4aXN0aW5nIEltYWdlIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgCiAgPHR0PmdldEltYWdlRGF0YSgpPC90dD4sIGFsdGhvdWdoIHRoaXMgd2lsbCBub3QgYmUgdGhlIHNhbWUgb2JqZWN0IHRoYXQgd2FzIAogIHVzZWQgdG8gY3JlYXRlIHRoZSBpbWFnZS4gVGhpcyBpcyBiZWNhdXNlIHdoZW4gcHJlcGFyaW5nIGFuIGltYWdlIHRvIGJlIGRyYXduIAogIG9udG8gYSBzY3JlZW4sIHByb3BlcnRpZXMgc3VjaCBhcyBpdHMgY29sb3IgZGVwdGggbWlnaHQgYmUgZGlmZmVyZW50IGZyb20gdGhlIAogIGluaXRpYWwgaW1hZ2UgZGF0YS4gCjxwPkluc3RhbmNlcyBvZiBJbWFnZSByZXByZXNlbnQgYW4gdW5kZXJseWluZyByZXNvdXJjZSB0aGF0IGhhcyBiZWVuIHByZXBhcmVkCmZvciBhIHNwZWNpZmljIGRldmljZSBhbmQgdGhleSBtdXN0IGJlIGRpc3Bvc2VkIHdoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIHJlcXVpcmVkCnRvIGZyZWUgdXAgdGhlIGFsbG9jYXRlZCByZXNvdXJjZS4gVGhlcmUgaXMgbm8gZmluYWxpemF0aW9uIG9mIHJlc291cmNlcyBpbiBTV1QKd2hlbiBhbiBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2FydGljbGVzL3N3dC1kZXNpZ24tMi9zd3QtZGVzaWduLTIuaHRtbCI+U1dUOgpUaGUgU3RhbmRhcmQgV2lkZ2V0IFRvb2xraXQ6IE1hbmFnaW5nIE9wZXJhdGluZyBTeXN0ZW0gUmVzb3VyY2VzLjwvYT4KPGgyPjxhIG5hbWU9IkltYWdlRGF0YSI+PC9hPkltYWdlRGF0YTwvaDI+CkltYWdlRGF0YSBjYW4gYmUgdGhvdWdodCBvZiBhcyB0aGUgbW9kZWwgZm9yIGFuIGltYWdlLCB3aGVyZWFzIHRoZSBJbWFnZSBpcyB0aGUKdmlldyB0aGF0J3MgYmVlbiBwcmVwYXJlZCBmb3Igb3V0cHV0IG9udG8gYSBzcGVjaWZpYyBkZXZpY2UuIFRoZSBJbWFnZURhdGEgaGFzIGEKd2lkdGggYW5kIGhlaWdodCwgYW5kIGEgcGl4ZWwgdmFsdWUgZm9yIGVhY2ggY29vcmRpbmF0ZS4gVGhlIHJhdyBkYXRhIG9mIHRoZQppbWFnZSBpcyBhIGJ5dGVbXSwgYW5kIHRoZSBkZXB0aCBvZiB0aGUgaW1hZ2Ugc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYml0cyB0aGF0CmFyZSB1c2VkIGZvciBlYWNoIGNvb3JkaW5hdGUuIEFuIGltYWdlIGRlcHRoIG9mIDEgY2FuIHN0b3JlIHR3byBwb3NzaWJsZSB2YWx1ZXMKZm9yIGVhY2ggcGl4ZWwgKDAgYW5kIDEpLCBhIGRlcHRoIG9mIDQgY2FuIHN0b3JlIDJeND0xNiwgYSBkZXB0aCBvZiA4IGNhbgpzdG9yZSAyXjg9MjU2IHZhbHVlcyBhbmQgYSBkZXB0aCBvZiAyNCBjYW4gcmVwcmVzZW50IDJeMjQ9MTYgbWlsbGlvbiBkaWZmZXJlbnQKdmFsdWVzIHBlciBwaXhlbC4gVGhlIGxhcmdlciB0aGUgZGVwdGggb2YgYW4gaW1hZ2UgdGhlIG1vcmUgYnl0ZXMgYXJlIHJlcXVpcmVkCmZvciBpdHMgcGl4ZWxzLCBhbmQgc29tZSBmb3JtYXRzIHN1Y2ggYXMgR0lGIHRoYXQgd2VyZSBpbml0aWFsbHkgZGVzaWduZWQgZm9yCmRvd25sb2FkIGFjcm9zcyBpbnRlcm5ldCBjb25uZWN0aW9ucyBvbmx5IHN1cHBvcnQgYSBtYXhpbXVtIGRlcHRoIG9mIDguIEhvdyB0aGUKdmFsdWUgb2YgZWFjaCBwaXhlbCB2YWx1ZSB0cmFuc2xhdGVzIGludG8gYW4gYWN0dWFsIGNvbG9yIGRlcGVuZHMgb24gaXRzIHBhbGV0dGUKcmVwcmVzZW50ZWQgYnkgdGhlIGNsYXNzIDx0dD5vcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuUGFsZXR0ZURhdGEuPC90dD4KPHA+VGhlIG5leHQgc2VjdGlvbiBkZXNjcmliZXMgaG93IDxhIGhyZWY9IiNDb2xvcnMiPmNvbG9yczwvYT4gYXJlIHJlcHJlc2VudGVkCmJ5IHRoZWlyIFJHQiB2YWx1ZXMsIGFuZCBob3cgPGEgaHJlZj0iI1BhbGV0dGVEYXRhIj5QYWxldHRlRGF0YTwvYT4gbWFwcyBhIG1hcApwaXhlbCB2YWx1ZSB0byBhIHBhcnRpY3VsYXIgY29sb3IuCjxoMj48YSBuYW1lPSJDb2xvcnMiPjwvYT5Db2xvcjwvaDI+ClRoZSBjbGFzcyA8dHQ+b3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkNvbG9yIDwvdHQ+aXMgdXNlZCB0byBtYW5hZ2UgcmVzb3VyY2VzCnRoYXQgaW1wbGVtZW50IHRoZSBSR0IgY29sb3IgbW9kZWwuIEVhY2ggY29sb3IgaXMgZGVzY3JpYmVkIGluIHRlcm1zIG9mIGl0cyByZWQsCmdyZWVuIGFuZCBibHVlIGNvbXBvbmVudCAoZWFjaCBleHByZXNzZWQgYXMgYW4gaW50ZWdlciB2YWx1ZSBmcm9tIDAgZm9yIG5vIGNvbG9yCnRvIDI1NSBmb3IgZnVsbCBjb2xvcikuCjxwPjx0dD5Db2xvciBjeWFuQ29sb3IgPSBuZXcgQ29sb3IoZGlzcGxheSwwLDI1NSwyNTUpOzwvdHQ+PGJyPgo8dHQ+PGZvbnQgY29sb3I9IiMwMENDMDAiPi8vIC4uLiBDb2RlIHRvIHVzZSB0aGUgQ29sb3I8L2ZvbnQ+PC90dD48YnI+Cjx0dD5jeWFuQ29sb3IuZGlzcG9zZSgpOzwvdHQ+CjxwPlRoZSBjb252ZW5pZW5jZSBjbGFzcyA8dHQ+b3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLlJHQiA8L3R0PmV4aXN0cyBpbiBTV1QKdGhhdCBjb21iaW5lcyBhIGNvbG9yJ3MgcmVkLCBncmVlbiBhbmQgYmx1ZSB2YWx1ZXMgaW50byBhIHNpbmdsZSBvYmplY3QuCjxwPjx0dD5SR0IgY3lhblJHQiA9IG5ldyBSR0IoMCwyNTUsMjU1KTs8L3R0Pjxicj4KPHR0PkNvbG9yIGN5YW5Db2xvciA9IG5ldyBDb2xvcihkaXNwbGF5LGN5YW5SR0IpOzwvdHQ+PGJyPgo8dHQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPi8vIC4uLiBDb2RlIHRvIHVzZSB0aGUgQ29sb3I8L2ZvbnQ+PC90dD48YnI+Cjx0dD5jeWFuQ29sb3IuZGlzcG9zZSgpOzwvdHQ+CjxwPlRoZSBDb2xvciBpbnN0YW5jZSBzaG91bGQgYmUgZGlzcG9zZWQgd2hlbiBpdCBpcyBubyBsb25nZXIgcmVxdWlyZWQsIHdoZXJlYXMKdGhlIFJHQiBoYXMgbm8gbmVlZCB0byBiZSBkaXNwb3NlZC4gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbgphbiBJbWFnZSBhbmQgaXRzIEltYWdlRGF0YSwgd2hlcmUgQ29sb3IgYW5kIEltYWdlIGFyZSBkZXZpY2Ugc3BlY2lmaWMgb2JqZWN0cwp1c2luZyB1bmRlcmx5aW5nIG5hdGl2ZSByZXNvdXJjZXMsIHdoaWxlIFJHQiBhbmQgSW1hZ2VEYXRhIGFyZSB0aGUgdW5kZXJseWluZwptb2RlbCBkYXRhLgo8cD5UbyBhdm9pZCBoYXZpbmcgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgaW5zdGFuY2VzIG9mIHRoZSBjb21tb25seSB1c2VkIGNvbG9ycywKdGhlIERpc3BsYXkgY2xhc3MgYWxsb3cgdGhlc2UgdG8gYmUgcmV0cmlldmVkIHVzaW5nIHRoZSBtZXRob2QgPHR0PkRpc3BsYXkuZ2V0U3lzdGVtQ29sb3IoaW50CmlkKTwvdHQ+Lgo8cD48dHQ+Q29sb3IgY3lhbkNvbG9yID0gZGlzcGxheS5nZXRTeXN0ZW1Db2xvcihTV1QuQ09MT1JfQ1lBTik8L3R0Pgo8cD5XaGVuIGEgQ29sb3IgaXMgb2J0YWluZWQgYnkgYW4gU1dUIHByb2dyYW0gdXNpbmcgdGhlIG1ldGhvZCA8dHQ+RGlzcGxheS5nZXRTeXN0ZW1Db2xvcihpbnQKaWQpIDwvdHQ+bWV0aG9kLCBpdCBtdXN0IG5vdCBiZSBkaXNwb3NlZC4gVGhlIHJ1bGUgb2YgdGh1bWIgdGhhdCB3b3JrcyBmb3IgYW55ClNXVCByZXNvdXJjZSBpcyA8aT4mcXVvdDtJZiB5b3UgY3JlYXRlZCBpdCwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgZGlzcG9zaW5nIGl0PC9pPiZxdW90Oy4KQmVjYXVzZSB0aGUgc3RhdGVtZW50IGFib3ZlIHJldHJpZXZlZCB0aGUgY3lhbiBjb2xvciBpbnN0YW5jZSwgYW5kIGRpZG4ndApleHBsaWNpdGx5IGNvbnN0cnVjdCBpdCwgaXQgc2hvdWxkIG5vdCBiZSBkaXNwb3NlZC4KPHA+SG93IGEgQ29sb3IgaXMgYWN0dWFsbHkgcmVwcmVzZW50ZWQgb24gdGhlIGRpc3BsYXkgZGVwZW5kcyBvbiBmYWN0b3JzIHN1Y2ggCiAgYXMgdGhlIHJlc29sdXRpb24gYW5kIGRlcHRoIG9mIHRoZSBkaXNwbGF5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGFuZCAKICB0aGUgU1dUIGNvbG9yIG1vZGVsIHNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2FydGljbGVzL1NXVCUyMENvbG9yJTIwTW9kZWwvc3d0LWNvbG9yLW1vZGVsLmh0bSI+U1dUIAogIENvbG9yIE1vZGVsLjwvYT4gCjxoMj48YSBuYW1lPSJQYWxldHRlRGF0YSI+PC9hPlBhbGV0dGVEYXRhPC9oMj4KVGhlcmUgYXJlIHR3byBraW5kcyBvZiBQYWxldHRlRGF0YSwgYW4gPGEgaHJlZj0iI0luZGV4ZWQgcGFsZXR0ZSI+aW5kZXhlZCBwYWxldHRlIAo8L2E+YW5kIGEgPGEgaHJlZj0iI0RpcmVjdCBwYWxldHRlIj5kaXJlY3QgcGFsZXR0ZTwvYT4uIFBhbGV0dGVEYXRhIGlzIGEgbW9kZWwgCm9mIGhvdyBwaXhlbCB2YWx1ZXMgbWFwIHRvIFJHQiB2YWx1ZXMsIGFuZCBiZWNhdXNlIHRoZXkgZG8gbm90IHJlcHJlc2VudCBhbiB1bmRlcmx5aW5nIApyZXNvdXJjZSwgdGhleSBkbyBub3QgcmVxdWlyZSBkaXNwb3NpbmcuIAo8aDM+PGEgbmFtZT0iSW5kZXhlZCBwYWxldHRlIj48L2E+SW5kZXhlZCBwYWxldHRlPC9oMz4KV2l0aCBhbiBpbmRleGVkIHBhbGV0dGUgZWFjaCBwaXhlbCB2YWx1ZSByZXByZXNlbnRzIGEgbnVtYmVyIHRoYXQgaXMgdGhlbiBjcm9zcwppbmRleGVkIHdpdGggdGhlIHBhbGV0dGUgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwgY29sb3IuIFRoZSByYW5nZSBvZiBhbGxvd2FibGUKcGl4ZWwgdmFsdWVzIGlzIHRoZSBkZXB0aCBvZiB0aGUgaW1hZ2UuCjxwPlRoZSBleGFtcGxlIGJlbG93IGlzIGEgNDggYnkgNDggc3F1YXJlIGltYWdlIGNyZWF0ZWQgd2l0aCBhIGRlcHRoIG9mIDEsIGFuZCAKICBhbiBpbmRleGVkIGNvbG9yIHBhbGV0dGUuIFRoZSBpbmRleGVkIHBhbGV0dGUgYXNzaWducyA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18xLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4gCiAgMCB0byBiZSByZWQgYW5kIDEgdG8gYmUgZ3JlZW4gKGJ5IHZpcnR1ZSBvZiB0aGVpciBvcmRlciBpbiB0aGUgUkdCW10gaW4gdGhlIAogIGNvbnN0cnVjdG9yKS4gVGhlIEltYWdlRGF0YSdzIHVuLWluaXRpYWxpemVkIHBpeGVsIHZhbHVlcyB3aWxsIGluaXRpYWxseSBiZSAKICAwIChyZWQpLCBhbmQgdHdvIGZvciBsb29wcyA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4gCiAgc2V0IGEgMzQgYnkgMzQgc3F1YXJlIGluIHRoZSBjZW50ZXIgb2YgdGhlIEltYWdlRGF0YSB0byBiZSAxIChncmVlbikuIAo8cD48aW1nIHNyYz0iaW1hZ2VzL3RhZ18xLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+IFBhbGV0dGVEYXRhCnBhbGV0dGVEYXRhID0gbmV3IFBhbGV0dGVEYXRhKDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG5ldyBSR0JbXSB7bmV3IFJHQigyNTUsMCwwKSwgbmV3ClJHQigwLDI1NSwwKX0pOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IEltYWdlRGF0YSBpbWFnZURhdGEgPSBuZXcgSW1hZ2VEYXRhKDQ4LDQ4LDEscGFsZXR0ZURhdGEpOzwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+IGZvcihpbnQKeD0xMTt4Jmx0OzM1O3grKyl7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZm9yKGludCB5PTExO3kmbHQ7MzU7eSsrKXs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwppbWFnZURhdGEuc2V0UGl4ZWwoeCx5LDEpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyB9PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgSW1hZ2UgaW1hZ2UgPSBuZXcgSW1hZ2UoZGlzcGxheSxpbWFnZURhdGEpOzwvdHQ+CjxwPjxpbWcgc3JjPSJpbWFnZXMvUmVkR3JlZW5JbWFnZS5naWYiIGhlaWdodD0iNDgiIHdpZHRoPSI0OCI+CjxwPlRoZSBhYm92ZSBleGFtcGxlIGhhcyBhIGRlcHRoIG9mIDEgc28gaXQgY2FuIHN0b3JlIDIgY29sb3JzLCBidXQgYXMgdGhlIGNvbG9yIAogIGRlcHRoIG9mIHRoZSBJbWFnZURhdGEgaW5jcmVhc2VzIHRoZW4gc28gY2FuIHRoZSBudW1iZXIgb2YgY29sb3JzIGluIHRoZSBwYWxldHRlLiZuYnNwOyAKICBBbiBpbmRleGVkIHBhbGV0dGUgY2FuIGhhdmUgYSAxLCAyLCA0LCBvciA4IGJpdCBkZXB0aHMsIGFuZCBhbiA4IGJpdCBkZXB0aCBwcm92aWRlcyAKICAyXjggPSAyNTYgcG9zc2libGUgY29sb3JzLiZuYnNwOyBUbyBoYXZlIGEgaGlnaGVyIGNvbG9yIGRlcHRoIChzdWNoIGFzIDE2LCAyNCwgCiAgb3IgMzIpIGEgZGlyZWN0IHBhbGV0dGUgbXVzdCBiZSB1c2VkLiAKPGgzPjxhIG5hbWU9IkRpcmVjdCBwYWxldHRlIj48L2E+RGlyZWN0IHBhbGV0dGU8L2gzPgpJbnN0ZWFkIG9mIGhhdmluZyBlYWNoIHBpeGVsIHZhbHVlIHJlcHJlc2VudCBhbiBpbmRleCBpbiB0aGUgcGFsZXR0ZQpjb3JyZXNwb25kaW5nIHRvIGl0cyBjb2xvciwgYSBkaXJlY3QgcGFsZXR0ZSBhbGxvd3MgZWFjaCBwaXhlbCB2YWx1ZSB0byBkaXJlY3RseQpyZWNvcmQgaXRzIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50LiZuYnNwOyBBIGRpcmVjdCA8dHQ+UGFsZXR0ZURhdGE8L3R0PgpkZWZpbmVzIHJlZCwgZ3JlZW4gYW5kIGJsdWUgbWFza3MuJm5ic3A7IFRoZXNlIG1hc2tzIGFyZSBudW1iZXIgb2YgYml0cyByZXF1aXJlZAp0byBzaGlmdCBhIHBpeGVsIHZhbHVlIHRvIHRoZSBsZWZ0IHNvIHRoZSBoaWdoIGJpdCBvZiB0aGUgbWFzayBhbGlnbnMgd2l0aCB0aGUKaGlnaCBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgb2YgY29sb3IuJm5ic3A7IEZvciBleGFtcGxlLCBhIDI0IGJpdCBkaXJlY3QgcGFsZXR0ZQpjYW4gZGl2aWRlIGl0c2VsZiBpbnRvIDMgcG9ydGlvbnMsIHN0b3JpbmcgcmVkIGluIHRoZSBsb3dlc3QgOCBiaXRzLCBncmVlbiBpbgp0aGUgY2VudHJhbCA4IGJpdHMgYW5kIGJsdWUgaW4gdGhlIGhpZ2hlc3QgOCBiaXRzLiZuYnNwOyBUaGUgcmVkIHNoaWZ0IG1hc2sKd291bGQgYmUgMHhGRiwgZ3JlZW4gMHhGRjAwIGFuZCBibHVlIDB4RkYwMDAwLgo8cD48aW1nIHNyYz0iaW1hZ2VzL0RpcmVjdFBhbGV0dGVfMDIuZ2lmIiBoZWlnaHQ9IjI1MCIgd2lkdGg9IjU5NiI+CjxwPlRoZSB2YWx1ZSBmb3IgZWFjaCBwaXhlbCByZXByZXNlbnRzIGEgY29tYmluYXRpb24gb2YgdGhlIHJlZCwgZ3JlZW4gYW5kIGJsdWUKY29tcG9uZW50cyBpbnRvIGEgc2luZ2xlIDI0IGJpdCBpbnRlZ2VyLiBUbyBjb25zdHJ1Y3QgYW4gaW5kZXhlZCBwYWxldHRlIHRoZQpjb25zdHJ1Y3RvciB1c2VkIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPiBhbGxvd3MKdGhlIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29sb3IgbWFza3MgdG8gYmUgc3BlY2lmaWVkLgo8cD48aW1nIHNyYz0iaW1hZ2VzL3RhZ18xLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+IFBhbGV0dGVEYXRhIHBhbGV0dGUgPQpuZXcgUGFsZXR0ZURhdGEoMHhGRiAsIDB4RkYwMCAsIDB4RkYwMDAwKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBJbWFnZURhdGEgaW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YSg0OCw0OCwyNCxwYWxldHRlKTs8L3R0Pgo8cD5Vc2luZyB0aGUgc2FtZSB0ZWNobmlxdWUgYXMgZWFybGllciwgdGhlIGNvZGUgaXRlcmF0ZXMgb3ZlciBldmVyeSBwaXhlbCBjb29yZGluYXRlIAogIHNldHRpbmcgaXQgdG8gZWl0aGVyIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzIuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPiAKICAweEZGIChmb3IgcmVkKSBvciA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18zLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4gMHhGRjAwIAogIChmb3IgZ3JlZW4pLiAKPHA+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBmb3IgKGludCB4PTA7eCZsdDs0ODt4KyspezwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZvcihpbnQgeT0wO3kmbHQ7NDg7eSsrKXs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZih5ICZndDsKMTEgJmFtcDsmYW1wOyB5ICZsdDsgMzUgJmFtcDsmYW1wOyB4ICZndDsgMTEgJmFtcDsmYW1wOyB4ICZsdDsgMzUpezwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CmltYWdlRGF0YS5zZXRQaXhlbCh4LHksMHhGRjAwKTsmbmJzcDsmbmJzcDsgPGZvbnQgY29sb3I9IiMwMDk5MDAiPi8vIFNldCB0aGUKY2VudGVyIHRvIGdyZWVuPC9mb250PjwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH0gZWxzZSB7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKaW1hZ2VEYXRhLnNldFBpeGVsKHgseSwweEZGKTsmbmJzcDsmbmJzcDsgPGZvbnQgY29sb3I9IiMwMDk5MDAiPi8vIGFuZApldmVyeXRoaW5nIGVsc2UgdG8gcmVkPC9mb250PjwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18xLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Cn08L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgfTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBJbWFnZSBpbWFnZSA9IG5ldyBJbWFnZShkaXNwbGF5LGltYWdlRGF0YSk7PC90dD4KPHA+VGhpcyBjcmVhdGVzIHRoZSByZXN1bHQgYmVsb3cgd2hlcmUgdGhlIGltYWdlIGlzIHJlZCB3aXRoIGEgZ3JlZW4gY2VudGVyLgo8cD48aW1nIHNyYz0iaW1hZ2VzL1JlZEdyZWVuSW1hZ2UuZ2lmIiBoZWlnaHQ9IjQ4IiB3aWR0aD0iNDgiPgo8cD5CZWNhdXNlIHlvdSBjYW4gdXNlIGNvbG9yIGRlcHRocyBvZiAxNiwgMjQgYW5kIDMyIGJpdHMgd2l0aCBkaXJlY3QgcGFsZXR0ZXMsIAogIHlvdSBjYW4gcmVwcmVzZW50IG1vcmUgY29sb3JzIHRoYW4gYXJlIGF2YWlsYWJsZSB3aXRoIGFuIGluZGV4ZWQgcGFsZXR0ZSB3aG9zZSAKICBtYXhpbXVtIGRlcHRoIGlzIDguIEEgY29sb3IgZGVwdGggb2YgMjQgYWxsb3dzIHlvdSB0byByZXByZXNlbnQgMTYgbWlsbGlvbiBjb2xvcnMgCiAgKDJeMjQpLiBUaGUgdHJhZGVvZmYgaG93ZXZlciBpcyBzaXplLCBiZWNhdXNlIGFuIGluZGV4ZWQgcGFsZXR0ZSB3aXRoIGEgZGVwdGggCiAgb2YgOCByZXF1aXJlcyBvbmUgYnl0ZSBwZXIgaW1hZ2UgY29vcmRpbmF0ZSB3aGVyZWFzIGEgZGlyZWN0IHBhbGV0dGUgd2l0aCBhIAogIGRlcHRoIG9mIDI0IHJlcXVpcmVzIHRocmVlIGJ5dGVzIHBlciBpbWFnZSBjb29yZGluYXRlLiAKPHA+V2l0aCBib3RoIGRpcmVjdCBhbmQgaW5kZXhlZCBwYWxldHRlcyB5b3UgY2FuIGdvIGZyb20gYW4gUkdCIHRvIGEgcGl4ZWwgdmFsdWUKYW5kIHZpY2UtdmVyc2EgdXNpbmcgdGhlIHB1YmxpYyBtZXRob2RzIDx0dD5pbnQgZ2V0UGl4ZWwoUkdCIHJnYik8L3R0PiBhbmQgPHR0PlJHQiBnZXRSR0IoaW50CnBpeGVsVmFsdWUpPC90dD4uCjxoMj48YSBuYW1lPSJUcmFuc3BhcmVuY3kiPjwvYT5UcmFuc3BhcmVuY3k8L2gyPgpUaGUgcHVycG9zZSBvZiB0cmFuc3BhcmVuY3kgaXMgdG8gbWFrZSBhIHBvcnRpb24gb2YgdGhlIGltYWdlIG5vbi1vcGFxdWUsIHNvCndoZW4gaXQgaXMgZHJhd24gb24gYSBHVUkgc3VyZmFjZSB0aGUgb3JpZ2luYWwgYmFja2dyb3VuZCBzaG93cyB0aHJvdWdoLiBUaGlzIGlzCmRvbmUgYnkgc3BlY2lmeWluZyB0aGF0IG9uZSBvZiB0aGUgaW1hZ2UgY29sb3JzIGlzIHRyYW5zcGFyZW50LiBXaGVuZXZlciBhIHBpeGVsCndpdGggdGhlIHRyYW5zcGFyZW50IGNvbG9yIHZhbHVlIGlzIGRyYXduLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBSR0IgdmFsdWUKZGVmaW5lZCBpbiB0aGUgcGFsZXR0ZSB0aGUgb3JpZ2luYWwgZGVzdGluYXRpb24gYmFja2dyb3VuZCBwaXhlbCBjb2xvciBpcyB1c2VkCmluc3RlYWQuIFRoZSBlZmZlY3QgdG8gdGhlIHVzZXIgaXMgdGhhdCB0aGUgYXJlYXMgb2YgdGhlIGltYWdlIHRoYXQgZXF1YWwgdGhlCnRyYW5zcGFyZW50IHBpeGVsIHNob3cgdGhlIGJhY2tncm91bmQgb2Ygd2hhdGV2ZXIgdGhlIGltYWdlIGlzIGJlaW5nIGRyYXduIG92ZXIsCnRodXMgYWNoaWV2aW5nIHRyYW5zcGFyZW5jeS4gUGVyc2lzdGVkIGltYWdlIGZpbGUgZm9ybWF0cyBzdWNoIGFzIEdJRiBvciBCTVAKYWxsb3cgeW91IHRvIHNwZWNpZnkgYSB0cmFuc3BhcmVudCBwaXhlbCB2YWx1ZSwgYWx0aG91Z2ggb25seSBpZiB0aGUgcGFsZXR0ZSBpcwppbmRleGVkIGFuZCB0aGUgY29sb3IgZGVwdGggaXMgOCBvciBsZXNzLgo8cD5XaGVuIEltYWdlcyBhcmUgdXNlZCBkaXJlY3RseSBvbiBjb250cm9scyBzdWNoIGFzIEJ1dHRvbiBvciBMYWJlbCB0aGUgbmF0aXZlCmJlaGF2aW9yIG1heSBiZSB0aGF0IHRyYW5zcGFyZW50IHBpeGVscyBhcmUgaWdub3JlZCBhbmQgZHJhd24gaW4gdGhlIHBpeGVsIGNvbG9yCnNwZWNpZmllZCBieSB0aGUgc291cmNlLiBOYXRpdmUgaW1hZ2UgdHJhbnNwYXJlbmN5IGhvd2V2ZXIgaXMgc3VwcG9ydGVkIGluIFNXVApmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgYSBHQy4gVG8gaWxsdXN0cmF0ZSB0aGlzIHRoZSBmb2xsb3dpbmcgZmlsZSBJZGVhLmdpZgpoYXMgYSBjb2xvciBkZXB0aCBvZiA4LCBhbmQgdGhlIHdoaXRlIHBpeGVsIChpbmRleCAyNTUgaW4gdGhlIHBhbGV0dGUpIHNldCB0byBiZQp0aGUgdHJhbnNwYXJlbnQgcGl4ZWwuCjxwPjxpbWcgc3JjPSJpbWFnZXMvSWRlYS5naWYiIGJvcmRlcj0iMCIgaGVpZ2h0PSI4NiIgd2lkdGg9IjEyMCI+CjxwPlRoZSBzaGVsbCBiZWxvdyBoYXMgYSBMYWJlbCBvbiB0aGUgbGVmdCB3aXRoIGEgQ2FudmFzIG5leHQgdG8gaXQuIFRoZQpJZGVhLmdpZiBpcyB1c2VkIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPiBhcyB0aGUKbGFiZWwncyBpbWFnZSwgYW5kIGFsc28gaW4gdGhlIHBhaW50IGV2ZW50IDxpbWcgc3JjPSJpbWFnZXMvdGFnXzIuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgpvZiB0aGUgQ2FudmFzLiBCZWNhdXNlIHRoZSBMYWJlbCBkb2VzIG5vdCBzdXBwb3J0IG5hdGl2ZSB0cmFuc3BhcmVuY3kgdGhlCm9yaWdpbmFsIHdoaXRlIGNvbG9yIG9mIHRoZSB0cmFuc3BhcmVudCBwaXhlbCBpcyB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kLCBob3dldmVyCnRoZSBHQyBpbiB0aGUgcGFpbnQgZXZlbnQgcmVzcGVjdHMgdGhlIHRyYW5zcGFyZW50IHBpeGVsIGFuZCB0aGUgZ3JleSBiYWNrZ3JvdW5kCnNob3dzIHRocm91Z2guCjxwPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgSW1hZ2UgaWRlYUltYWdlID0gbmV3CkltYWdlRGF0YShnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0oJnF1b3Q7SWRlYS5naWYmcXVvdDspKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBMYWJlbCBsYWJlbCA9IG5ldyBMYWJlbChzaGVsbCxTV1QuTk9ORSk7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4KbGFiZWwuc2V0SW1hZ2UoaWRlYUltYWdlKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBDYW52YXMgY2FudmFzID0gbmV3IENhbnZhcyhzaGVsbCxTV1QuTk9fUkVEUkFXX1JFU0laRSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgY2FudmFzLmFkZFBhaW50TGlzdGVuZXIobmV3IFBhaW50TGlzdGVuZXIoKSB7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcHVibGljIHZvaWQKcGFpbnRDb250cm9sKFBhaW50RXZlbnQgZSkgezwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CmUuZ2MuZHJhd0ltYWdlKGlkZWFJbWFnZSwwLDApOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyB9KTs8L3R0Pgo8cD48aW1nIHNyYz0iaW1hZ2VzL1RyYW5zcGFyZW50SWRlYS5naWYiIGhlaWdodD0iMTQ2IiB3aWR0aD0iMjcwIj4KPHA+Rm9yIHRoZSBhYm92ZSBleGFtcGxlIEkgc3RhY2tlZCB0aGUgZGVjayBpbiBteSBmYXZvciwgYmVjYXVzZSBJIGRpZG4ndAphY3R1YWxseSB1c2UgdGhlIGlkZWEgZ3JhcGhpYyB0aGF0IGlzIGluY2x1ZGVkIHdpdGggZWNsaXBzZSBhcnRpY2xlcyBpbiB0aGVpcgpiYW5uZXIuIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgb3JpZ2luYWwgZ3JhcGhpYyBpcyBhIEpQRyBmaWxlIHdoaWNoIGRvZXNuJ3QKc3VwcG9ydCB0cmFuc3BhcmVuY3ksIHNvIEkgdXNlZCBhIGdyYXBoaWNzIHRvb2wgdG8gY29udmVydCBpdCB0byBhIEdJRiBhbmQgc2V0CnRoZSB2YWx1ZSBvZiB0aGUgd2hpdGUgcGl4ZWwgaW4gdGhlIHBhbGV0dGUgdG8gYmUgdGhlIHRyYW5zcGFyZW5jeSBwaXhlbC4gVGhlCm9yaWdpbmFsIElkZWEuanBnIGlzIHNob3duIGJlbG93LCBhbmQgYWx0aG91Z2ggaXQgbG9va3MgdGhlIHNhbWUgYXMgdGhlCklkZWEuZ2lmLCB0aGlzIGlzIGJlY2F1c2UgaXQgaXMgb24gdGhlIHdoaXRlIGJhY2tncm91bmQgb2YgdGhlIEhUTUwgYnJvd3Nlci4KPHA+PGltZyBzcmM9ImltYWdlcy9JZGVhLmpwZyIgYm9yZGVyPSIwIiBoZWlnaHQ9Ijg2IiB3aWR0aD0iMTIwIj4KPHA+QnkgdXNpbmcgdGhlIG9yaWdpbmFsIEpQRyBmaWxlIHRoaXMgb2ZmZXJzIGEgZ29vZCBleGFtcGxlIG9mIGhvdyB3ZSB0bwphY2hpZXZlIGEgdHJhbnNwYXJlbmN5IGVmZmVjdCBwcm9ncm1hdGljYWxseSBieSBtYW5wdWxhdGluZyBpdHMgSW1hZ2VEYXRhLiBUaGUKSW1hZ2VEYXRhIGNsYXNzIGhhcyBhIHB1YmxpYyBmaWVsZCA8dHQ+dHJhbnNwYXJlbnRQaXhlbDwvdHQ+IHRvIHNwZWNpZnkgd2hpY2gKcGl4ZWwgaXMgdHJhbnNwYXJlbnQgdGhhdCBjYW4gYmUgc2V0IG9uY2UgYSBwZXJzaXN0ZWQgaW1hZ2UgZmlsZSBpcyBsb2FkZWQgaW50bwphbiBJbWFnZURhdGEgaW5zdGFuY2UsIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIHRoZSBwZXJzaXN0ZWQgZmlsZSBmb3JtYXQKc3VwcG9ydHMgdHJhbnNwYXJlbmN5Lgo8cD5UaGUgY29kZSBiZWxvdyBsb2FkcyB0aGUgSWRlYS5qcGcgZmlsZSBpbiBhbiBJbWFnZURhdGEgb2JqZWN0IGFuZCA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18xLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4Kc2V0cyB0aGUgdHJhbnNwYXJlbnQgcGl4ZWwgZm9yIHRoZSBJbWFnZURhdGEgdG8gYmUgdGhlIHBpeGVsIHZhbHVlIG9mIHRoZSBjb2xvcgp3aGl0ZSBpbiB0aGUgcGFsZXR0ZS4gVGhlIHBpeGVsIHZhbHVlIGluIHRoZSBpbmRleGVkIHBhbGV0dGUgdGhhdCByZXByZXNlbnRzCndoaXRlIGlzIHJldHJpZXZlZCA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4gYnkKdXNpbmcgZ2V0UGl4ZWwoUkdCKS4gVGhlIG1hbmlwdWxhdGVkIEltYWdlRGF0YSBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBJbWFnZQp0cmFuc3BhcmVudElkZWFJbWFnZSB0aGF0IG5vdyBoYXMgdGhlIHdoaXRlIHBpeGVsIHZhbHVlIHNwZWNpZmllZCB0byBiZQp0cmFuc3BhcmVudC4KPHA+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBJbWFnZURhdGEgaWRlYURhdGEgPSBuZXcgSW1hZ2VEYXRhKDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CmdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbSgmcXVvdDtJZGVhLmpwZyZxdW90OykpOzwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+IGludCB3aGl0ZVBpeGVsID0KaWRlYURhdGEucGFsZXR0ZS5nZXRQaXhlbChuZXcgUkdCKDI1NSwyNTUsMjU1KSk7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4KaWRlYURhdGEudHJhbnNwYXJlbnRQaXhlbCA9IHdoaXRlUGl4ZWw7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgSW1hZ2UgdHJhbnNwYXJlbnRJZGVhSW1hZ2UgPSBuZXcgSW1hZ2UoZGlzcGxheSxpZGVhRGF0YSk7PC90dD4KPHA+TmV4dCBhIFNoZWxsIHVzZXMgdGhlIG5ld2x5IGNyZWF0ZWQgaW1hZ2UgPGltZyBzcmM9ImltYWdlcy90YWdfMy5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+CmluIGEgbmF0aXZlIExhYmVsIGFuZCBhbHNvIGluIHRoZSBwYWludCBldmVudCA8aW1nIHNyYz0iaW1hZ2VzL3RhZ180LmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4Kb2YgYSBDYW52YXMuIEEgV2luZG93cyBMYWJlbCBkb2VzIG5vdCBzdXBwb3J0IG5hdGl2ZSB0cmFuc3BhcmVuY3kgc28gaXQgc3RpbGwKYXBwZWFycyB3aXRoIGEgd2hpdGUgYmFja2dyb3VuZCwgaG93ZXZlciB0aGUgR0MgZm9yIHRoZSBDYW52YXMgdXNlcyB0aGUgZXhpc3RpbmcKYmFja2dyb3VuZCBjb2xvciB3aGVuZXZlciBhIHdoaXRlIHBpeGVsIGlzIGVuY291bnRlcmVkIGluIHRoZSBzb3VyY2UgaW1hZ2UsIHNvCnRoZSBpbWFnZSBhcHBlYXJzIGFzIHRyYW5zcGFyZW50Lgo8cD48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IExhYmVsIHRyYW5zcGFyZW50SWRlYUxhYmVsID0gbmV3CkxhYmVsKHNoZWxsLFNXVC5OT05FKTs8L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfMy5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0Pgp0cmFuc3BhcmVudElkZWFMYWJlbC5zZXRJbWFnZSh0cmFuc3BhcmVudElkZWFJbWFnZSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgQ2FudmFzIGNhbnZhcyA9IG5ldyBDYW52YXMoc2hlbGwsU1dULk5PTkUpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNhbnZhcy5hZGRQYWludExpc3RlbmVyKG5ldyBQYWludExpc3RlbmVyKCkgezwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1YmxpYyB2b2lkCnBhaW50Q29udHJvbChQYWludEV2ZW50IGUpIHs8L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfNC5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwplLmdjLmRyYXdJbWFnZSh0cmFuc3BhcmVudElkZWFJbWFnZSwwLDApOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyB9KTs8L3R0Pgo8cD48aW1nIHNyYz0iaW1hZ2VzL0lkZWFUcmFuc3BhcmVuY3kuZ2lmIiBoZWlnaHQ9IjE0NiIgd2lkdGg9IjI4MCI+CjxwPkFzIGNhbiBiZSBzZWVuIGZyb20gdGhlIHNlY29uZCBvZiB0aGUgdHdvIGltYWdlcyAoZHJhd24gb24gdGhlIENhbnZhcyB3aXRoIAogIHRoZSB3aGl0ZSBwaXhlbCBzZXQgdG8gdHJhbnNwYXJlbnQpLCB0aGVyZSBhcmUgc3RpbGwgc29tZSBwYXRjaGVzIG9mIHdoaXRlLiAKICBDbG9zZXIgYW5hbHlzaXMgcmV2ZWFscyB0aGF0IHRoaXMgaXMgbm90IGEgYnVnLCBidXQgdGhhdCB0aGVzZSByZWdpb25zIGFyZSBub3QgCiAgcHVyZSB3aGl0ZSAoMjU1LDI1NSwyNTUpLCBidXQgYXJlIHNsaWdobHkgb2ZmLXdoaXRlIChzdWNoIGFzIDI1NSwyNTQsMjU0KS4gVGhlIAogIHRyYW5zcGFyZW50IHBpeGVsIG9mIGFuIEltYWdlRGF0YSBjYW4gb25seSBiZSB1c2VkIGZvciBhIHNpbmdsZSB2YWx1ZS4gVGhpcyAKICBub3cgcHJlc2VudHMgdGhlIG5leHQgcHJvYmxlbSB0byBiZSBzb2x2ZWQgLSBsb2NhdGUgYWxsIG9mIHRoZSBvZmYtd2hpdGUgcGl4ZWxzIAogIGluIHRoZSBJbWFnZURhdGEgYW5kIGNvbnZlcnQgdGhlbSB0byBwdXJlLXdoaXRlLiBUbyBkbyB0aGlzIHdlIHdpbGwgaXRlcmF0ZSAKICBvdmVyIGVhY2ggcGl4ZWwgaW4gdGhlIGltYWdlIGRhdGEgYW5kIG1vZGlmeSB0aG9zZSB0aGF0IGFyZSBjbG9zZSB0byB3aGl0ZSB0byAKICBiZSBwdXJlIHdoaXRlLiAKPGgyPjxhIG5hbWU9Ik1hbmlwdWxhdGluZyBJbWFnZSBEYXRhIj48L2E+TWFuaXB1bGF0aW5nIEltYWdlRGF0YTwvaDI+CkJlY2F1c2UgdGhlIGdyYXBoaWMgSWRlYS5qcGcgaXNuJ3QgYXMgd2hpdGUgYXMgd2UnZCBsaWtlIGl0LCB3ZSdsbCBpdGVyYXRlIG92ZXIKaXRzIGltYWdlRGF0YSBhbmQgY29udmVydCB0aGUgb2ZmLXdoaXRlIHBpeGVscyB0byBwdXJlIHdoaXRlIGFuZCB0aGVuIHdlJ2xsIHNhdmUKdGhpcyBpbnRvIGEgbmV3IGZpbGUgSWRlYV93aGl0ZS5qcGcuIEluIHByYWN0aWNlIGl0J3MgdW5saWtlbHkgdGhhdCB5b3UnZCBldmVyCmRvIHRoaXMga2luZCBvZiBwcm9ncmFtbWluZyBpbiBTV1QsIGhvd2V2ZXIgaXQncyBhIGdvb2QgZXhhbXBsZSB0byB1c2Ugc2hvd2luZwpob3cgSW1hZ2VEYXRhIGNhbiBiZSBhbmFseXplZCBhbmQgbWFuaXB1bGF0ZWQuCjxwPlRoZSBmaXJzdCBzdGVwIGlzIHRvIGxvYWQgdGhlIGltYWdlIGFuZCB0aGVuIGl0ZXJhdGUgb3ZlciBlYWNoIHBpeGVsCmluZGl2aWR1YWxseSBsb29raW5nIGF0IGl0cyBjb2xvci4gQmVjYXVzZSBJZGVhLmpwZyBpcyB1c2luZyBhIGRpcmVjdCBwYWxldHRlLAp0aGUgcGl4ZWwgdmFsdWUgaXMgYW4gaW50IHRoYXQgY29udGFpbnMgdGhlIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50IGFzCm1hc2tlZCBiaXQgYXJlYXMuIFRoZXNlIG1hc2sgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHBhbGV0dGUuCjxwPjx0dD5JbWFnZURhdGEgaWRlYUltYWdlRGF0YSA9IG5ldyBJbWFnZURhdGEoPGJyPgombmJzcDsmbmJzcDsmbmJzcDsgZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKCZxdW90O0lkZWEuanBnJnF1b3Q7KSk7PC90dD48YnI+Cjx0dD5pbnQgcmVkTWFzayA9IGlkZWFJbWFnZURhdGEucGFsZXR0ZS5yZWRNYXNrOzwvdHQ+PGJyPgo8dHQ+aW50IGJsdWVNYXNrID0gaWRlYUltYWdlRGF0YS5wYWxldHRlLmJsdWVNYXNrOzwvdHQ+PGJyPgo8dHQ+aW50IGdyZWVuTWFzayA9IGlkZWFJbWFnZURhdGEucGFsZXR0ZS5ncmVlbk1hc2s7PC90dD4KPHA+Rm9yIGFueSBwaXhlbCB2YWx1ZSB3ZSBjYW4gYml0d2lzZSBBTkQgaXQgd2l0aCB0aGUgbWFzayB0byBzZWUgd2hhdCB0aGUgY29sb3IKY29tcG9uZW50IGlzLiBUaGUgcmVkIGNvbXBvbmVudCBpcyB0aGUgbG93IG9yZGVyIGJpdHMgc28gdGhpcyB3aWxsIGJlIHRoZSBhY3R1YWwKdmFsdWUgKGZyb20gMCB0byAyNTUpLCBob3dldmVyIHRoZSBncmVlbiBhbmQgYmx1ZSB2YWx1ZXMgbmVlZCBhZGp1c3RpbmcgYXMgdGhleQphcmUgdGhlIGhpZ2ggb3JkZXIgYml0cyBpbiB0aGUgcGl4ZWwgdmFsdWUuIFRvIG1ha2UgdGhpcyBhZGp1c3RtZW50IHRoZSBjb2xvcgpjb21wb25lbnQgY2FuIGJlIGJpdCBzaGlmdGVkIHRvIHRoZSByaWdodCB1c2luZyB0aGUgJmd0OyZndDsgb3BlcmF0b3IuIElmIHlvdQphcmUgd3JpdGluZyBnZW5lcmljIGNvZGUgdG8gZG8gdGhpcyBraW5kIG9mIG1hbmlwdWxhdGluZywgdGFrZSBjYXJlIHRoYXQgZGlyZWN0CnBhbGV0dGVzIGZvciBjb2xvciBkZXB0aHMgb2YgMjQgb3IgMzIgc3RvcmUgdGhlaXIgY29sb3IgY29tcG9uZW50cyB3aXRoIHJlZApiZWluZyB0aGUgbG93IG9yZGVyIGJpdHMsIGhvd2V2ZXIgZm9yIGNvbG9yIGRlcHRoIG9mIDE2IHRoZSBjb2xvcnMgYXJlIHJldmVyc2VkCmFuZCByZWQgaXMgaGlnaCBvcmRlciB3aXRoIGJsdWUgYmVpbmcgbG93IG9yZGVyLiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRvIGJlCnRoZSBzYW1lIGFzIGhvdyBXaW5kb3dzIHN0b3JlcyBpbWFnZXMgaW50ZXJuYWxseSBzbyB0aGVyZSBpcyBsZXNzIGNvbnZlcnNpb24Kd2hlbiBjcmVhdGluZyB0aGUgaW1hZ2UuCjxwPlR3byBmb3IgbG9vcHMgd2lsbCBpdGVyYXRlIG92ZXIgdGhlIGltYWdlRGF0YS4gVGhlIGZpcnN0IGlzIHRyYXZlcnNpbmcgdGhlCmltYWdlIGZyb20gdG9wIHRvIGJvdHRvbSBhIGxpbmUgYXQgYSB0aW1lLCBhbmQgPGltZyBzcmM9ImltYWdlcy90YWdfMS5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+CmNyZWF0ZXMgYW4gaW50W10gdG8gaG9sZCBlYWNoIGxpbmUgb2YgZGF0YS4gVGhlIG1ldGhvZDx0dD4KSW1hZ2VEYXRhLmdldFBpeGVscyhpbnQgeCwgaW50IHksIGludCBnZXRXaWR0aCwgaW50W10gcGl4ZWxzLCBpbnQgc3RhcnRJbmRleCk8L3R0PgppcyB1c2VkIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzIuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPiB0byBleHRyYWN0IGEKbGluZSBhdCBhIHRpbWUgZnJvbSB0aGUgaW1hZ2VEYXRhJ3MgYnl0ZXMuIFRoZSBBUEkgZm9yIHRoaXMgbWV0aG9kIGlzIHNsaWdodGx5CmlycmVndWxhciwgYmVjYXVzZSByYXRoZXIgdGhhbiByZXR1cm5pbmcgdGhlIHJlc3VsdGluZyBkYXRhIGl0IGluc3RlYWQgaXMKZGVjbGFyZWQgYXMgPHR0PnZvaWQ8L3R0PiwgYW5kIHRoZSByZXN1bHRpbmcgcGl4ZWwgZGF0YSBpcyBpbmplY3RlZCBpbnRvIHRoZQppbnRbXSB0aGF0IGlzIHBhc3NlZCBpbiBhcyBhIG1ldGhvZCBhcmd1bWVudC4gVGhlIGludFtdIG9mIHBpeGVscyBpcyB0aGVuCml0ZXJhdGVkIG92ZXIgYW5kIGVhY2ggdmFsdWUgaGFzIGl0cyA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18zLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4KcmVkLCA8aW1nIHNyYz0iaW1hZ2VzL3RhZ180LmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4gZ3JlZW4gYW5kIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzUuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgpibHVlIGNvbXBvbmVudCBleHRyYWN0ZWQuIFRoZSBkZXNpcmVkIGVmZmVjdCB3ZSB3YW50IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZQpwaXhlbCBpcyBvZmYtd2hpdGUgYW5kIGlmIHNvIHRvIG1ha2UgaXQgcHVyZSB3aGl0ZSAtIGEgcnVsZSB0aGF0IHdvcmtzIHdlbGwgaXMKdG8gYXNzdW1lIHRoYXQgYW55dGhpbmcgd2hvc2UgcmVkIGFuZCBncmVlbiBjb21wb25lbnQgYXJlIGhpZ2hlciB0aGFuIDIzMCA8aW1nIHNyYz0iaW1hZ2VzL3RhZ182LmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4KYW5kIGJsdWUgY29tcG9uZW50IGhpZ2hlciB0aGFuIDE1MCBpcyBhbiBvZmYtd2hpdGUuCjxwPjxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4gaW50W10gbGluZURhdGEgPSBuZXcKaW50W2lkZWFJbWFnZURhdGEud2lkdGhdOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZvciAoaW50IHkgPSAwOyB5ICZsdDsgaWRlYUltYWdlRGF0YS5oZWlnaHQ7IHkrKykgezwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CmlkZWFJbWFnZURhdGEuZ2V0UGl4ZWxzKDAseSx3aWR0aCxsaW5lRGF0YSwwKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxmb250IGNvbG9yPSIjMDA5OTAwIj4mbmJzcDsgLy8gQW5hbHl6ZQplYWNoIHBpeGVsIHZhbHVlIGluIHRoZSBsaW5lPC9mb250PjwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZvciAoaW50IHg9MDsKeCZsdDtsaW5lRGF0YS5sZW5ndGg7IHgrKyl7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPGZvbnQgY29sb3I9IiMwMDk5MDAiPi8vCkV4dHJhY3QgdGhlIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50PC9mb250PjwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludApwaXhlbFZhbHVlID0gbGluZURhdGFbeF07PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzMuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKaW50IHIgPSBwaXhlbFZhbHVlICZhbXA7IHJlZFNoaWZ0OzwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ180LmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CmludCBnID0gKHBpeGVsVmFsdWUgJmFtcDsgZ3JlZW5TaGlmdCkgJmd0OyZndDsgODs8L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfNS5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwppbnQgYiA9IChwaXhlbFZhbHVlICZhbXA7IGJsdWVTaGlmdCkgJmd0OyZndDsgMTY7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzYuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKaWYgKHIgJmd0OyAyMzAgJmFtcDsmYW1wOyBnICZndDsgMjMwICZhbXA7JmFtcDsgYiAmZ3Q7IDE1MCl7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKaWRlYUltYWdlRGF0YS5zZXRQaXhlbCh4LHksMHhGRkZGRkYpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgfTs8L3R0Pgo8cD5IYXZpbmcgbWFuaXB1bGF0ZWQgdGhlIHJhdyBieXRlcyBtYWtpbmcgdXAgdGhlIEltYWdlRGF0YSB3ZSBoYXZlIG5vdwpzdWNjZXNzZnVsbHkgY2hhbmdlZCB0aGUgb2ZmLXdoaXRlIHZhbHVlcyB0byBwdXJlIHdoaXRlLgo8aDI+PGEgbmFtZT0iU2F2aW5nIEltYWdlcyI+PC9hPlNhdmluZyBJbWFnZXM8L2gyPgpOb3cgdGhhdCB3ZSBoYXZlIHRoZSBJbWFnZURhdGEgd2hlcmUgYWxsIG9mIHRoZSB3aGl0aXNoIHBpeGVscyBoYXZlIGJlZW4KY29udmVydGVkIHRvIHdoaXRlLCBhbmQgdGhlIHRyYW5zcGFyZW5jeSBwaXhlbCBvZiB0aGUgcGFsZXR0ZSBoYXMgYmVlbiBzZXQgdG8gYmUKdGhlIGNvbG9yIHdoaXRlLCB3ZSdsbCBzYXZlIHRoaXMgaW1hZ2Ugc28gdGhhdCBuZXh0IHRpbWUgYW4gU1dUIHByb2dyYW0gbmVlZHMKdGhlIHB1cmUgd2hpdGUgSlBGIGl0IGNhbiBqdXN0IGxvYWQgdGhlIGZpbGUgYW5kIHVzZSBpdCBhcyBpcy4gVG8gc2F2ZSBJbWFnZURhdGEKaW50byBhIGZpbGUgdXNlIHRoZSBjbGFzcyA8dHQ+b3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlTG9hZGVyPC90dD4uIFRoZQppbWFnZSBsb2FkZXIgaGFzIGEgcHVibGljIGZpZWxkIGRhdGEgdHlwZWQgdG8gSW1hZ2VEYXRhW10uIFRoZSByZWFzb24gdGhlIGRhdGEKZmllbGQgaXMgYW4gYXJyYXkgb2YgSW1hZ2VEYXRhIGlzIHRvIHN1cHBvcnQgaW1hZ2UgZmlsZSBmb3JtYXRzIHdpdGggbW9yZSB0aGFuCm9uZSBmcmFtZSBzdWNoIGFzIGFuaW1hdGVkIEdJRnMgb3IgaW50ZXJsYWNlZCBKUEVHIGZpbGVzLiBUaGVzZSBhcmUgY292ZXJlZCBtb3JlCmluIHRoZSA8YSBocmVmPSIjQW5pbWF0aW9uIj5BbmltYXRpb248L2E+IHNlY3Rpb24gbGF0ZXIuCjxwPjx0dD5JbWFnZUxvYWRlciBpbWFnZUxvYWRlciA9IG5ldyBJbWFnZUxvYWRlcigpOzwvdHQ+PGJyPgo8dHQ+aW1hZ2VMb2FkZXIuZGF0YSA9IG5ldyBJbWFnZURhdGFbXSB7aWRlYUltYWdlRGF0YX07PC90dD48YnI+Cjx0dD5pbWFnZUxvYWRlci5zYXZlKCZxdW90O0M6L3RlbXAvSWRlYV9QdXJlV2hpdGUuanBnJnF1b3Q7LFNXVC5JTUFHRV9KUEVHKTs8L3R0Pgo8cD5UaGUgZmluaXNoZWQgcmVzdWx0IGlzIHNob3duIGJlbG93Lgo8cD48aW1nIHNyYz0iaW1hZ2VzL0lkZWFfdHJhbnNwYXJlbnQuanBnIiBoZWlnaHQ9Ijg2IiB3aWR0aD0iMTIwIj4KPHA+SXQgZG9lc24ndCBsb29rIG11Y2ggZGlmZmVyZW50IHRvIHRoZSBvcmlnaW5hbCBJZGVhLmpwZyBiZWNhdXNlIGl0IGlzIGRyYXduCm9uIGEgd2hpdGUgYmFja2dyb3VuZCwgYnV0IHdoZW4gaXQgaXMgZHJhd24gb24gYSBDYW52YXMgd2l0aCB0aGUgd2hpdGUgcGl4ZWwgc2V0CnRvIGJlIHRoZSB0cmFuc3BhcmVudCBwaXhlbCB0aGUgYmFja2dyb3VuZCBzaG93cyB0aHJvdWdoIGFjaGlldmluZyB0aGUgZGVzaXJlZAplZmZlY3QuCjxwPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgSW1hZ2VEYXRhIHB1cmVXaGl0ZUlkZWFJbWFnZURhdGEgPTxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7bmV3IEltYWdlRGF0YSgmcXVvdDtDOi90ZW1wL0lkZWFfUHVyZVdoaXRlLmpwZyZxdW90Oyk7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4KcHVyZVdoaXRlSWRlYUltYWdlRGF0YS50cmFuc3BhcmVudFBpeGVsID08YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwpwdXJlV2hpdGVJZGVhSW1hZ2VEYXRhLnBhbGV0dGUuZ2V0UGl4ZWwobmV3IFJHQigyNTUsMjU1LDI1NSkpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZpbmFsIEltYWdlIHRyYW5zcGFyZW50SWRlYUltYWdlID0gbmV3CkltYWdlKGRpc3BsYXkscHVyZVdoaXRlSWRlYUltYWdlRGF0YSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgQ2FudmFzIGNhbnZhcyA9IG5ldyBDYW52YXMoc2hlbGwsU1dULk5PTkUpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNhbnZhcy5hZGRQYWludExpc3RlbmVyKG5ldyBQYWludExpc3RlbmVyKCkgezwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1YmxpYyB2b2lkCnBhaW50Q29udHJvbChQYWludEV2ZW50IGUpIHs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwplLmdjLmRyYXdJbWFnZSh0cmFuc3BhcmVudElkZWFJbWFnZSwwLDApOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyB9KTs8L3R0Pgo8cD48aW1nIHNyYz0iaW1hZ2VzL0lkZWFfVHJhbnNwYXJlbnRfRHJhd25PbkNhbnZhcy5naWYiIGhlaWdodD0iMTUwIiB3aWR0aD0iMTczIj4KPHA+PGltZyBzcmM9ImltYWdlcy9Ob3RlLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjYyIj4gSXQgbWlnaHQgc2VlbSBvZGQgdGhhdCBpbgp0aGUgYWJvdmUgY29kZSB0aGF0IGFmdGVyIGxvYWRpbmcgdGhlIElkZWFfUHVyZVdoaXRlLmpwZyBmaWxlIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgp0aGUgdHJhbnNwYXJlbnQgcGl4ZWwgd2FzIHNldCB0byBiZSB3aGl0ZS4gV2h5IG5vdCBzZXQgdGhlIHRyYW5zcGFyZW50IHBpeGVsCmJlZm9yZSB3ZSB1c2VkIHRoZSBJbWFnZUxvYWRlciB0byBjcmVhdGUgdGhlIHBlcnNpc3RlZCBJZGVhX1B1cmVXaGl0ZS5qcGcgZmlsZT8KVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSBKUEVHIGltYWdlIGZpbGUgZm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgdHJhbnNwYXJlbmN5LiBBCkdJRiBmaWxlIHN1cHBvcnRzIG5hdGl2ZSB0cmFuc3BhcmVuY3ksIGhvd2V2ZXIgY2hhbmdpbmcgdGhlIGZpbGUgdHlwZSB0bwpTV1QuSU1BR0VfR0lGIG9uIHRoZSBJbWFnZUxvYWRlciB3b3VsZCBub3QgaGF2ZSB3b3JrZWQsIGJlY2F1c2UgR0lGIHN1cHBvcnRzIGEKbWF4aW11bSBpbWFnZSBkZXB0aCBvZiA4IGFuZCB1c2VzIGFuIGluZGV4ZWQgcGFsZXR0ZSwgd2hlcmVhcyB0aGUgSlBFRyBoYXMgYW4KaW1hZ2UgZGVwdGggb2YgMjQgYW5kIGEgZGlyZWN0IHBhbGV0dGUuIFRvIGNvbnZlcnQgYmV0d2VlbiB0aGUgdHdvIGZvcm1hdHMgd291bGQKcmVxdWlyZSBhbmFseXppbmcgdGhlIGNvbG91cnMgdXNlZCBieSB0aGUgSlBFRyB0byBjcmVhdGUgdGhlIGJlc3QgZml0IDI1NiBjb2xvcgpwYWxldHRlLCBiZWZvcmUgaXRlcmF0aW5nIG92ZXIgZWFjaCBKUEVHIHBpeGVsIHZhbHVlIGFuZCBjcmVhdGluZyB0aGUgR0lGIGltYWdlCmRhdGEgYnkgZmluZGluZyB0aGUgY2xvc2VzdCBjb2xvci4gRG9pbmcgdGhpcyBjb252ZXJzaW9uIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mCnRoaXMgYXJ0aWNsZSwgYWx0aG91Z2ggaXQgY2FuIGJlIGRvbmUgYnkgbW9zdCBjb21tZXJjaWFsIGdyYXBoaWNzIHRvb2xzLiBUbwptYXRjaCBwaXhlbCB2YWx1ZXMgYXMgdGhlIGNvbG9yIGRlcHRoIGRlY3JlYXNlcyBmcm9tIDI0IHRvIDggaW52b2x2ZXMgYWxnb3JpdGhtcwp0aGF0IGZpbmQgdGhlIHJpZ2h0IGNvbG9yIG1hdGNoIGZvciBhIGJsb2NrIG9mIHBpeGVscyByYXRoZXIgdGhhbiBhIHNpbmdsZSBwaXhlbAp2YWx1ZSwgYW5kIGlzIHdoeSBpbWFnZSBxdWFsaXR5IGNhbiBzb21ldGltZXMgYmUgcmVkdWNlZCB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuCmRpZmZlcmVudCBmb3JtYXRzLgo8cD5XZSBoYXZlIHNob3duIGhvdyBhbiBJbWFnZURhdGEgaXMgYW4gYXJyYXkgb2YgaW50IHZhbHVlcyByZXByZXNlbnRpbmcgZWFjaApwaXhlbCBjb29yZGluYXRlLCBhbmQgaG93IGVhY2ggcGl4ZWwgdmFsdWUgaXMgbWFwcGVkIHRvIGEgY29sb3IgdGhyb3VnaCB0aGUKcGFsZXR0ZS4gVGhpcyBhbGxvd2VkIHVzIHRvIGl0ZXJhdGUgb3ZlciB0aGUgaW1hZ2UgZGF0YSBmb3IgdGhlIElkZWEuanBnLCBxdWVyeQpwaXhlbCB2YWx1ZXMgdGhhdCB3ZXJlIGNsb3NlIHRvIHdoaXRlLCBhbmQgY29udmVydCB0aGVzZSB0byBhIHB1cmUgd2hpdGUgUkdCCnZhbHVlLiBUaGUgZW5kIHJlc3VsdCBvZiB0aGlzIHdhcyB0aGF0IHdlIHdlcmUgYWJsZSB0byBjcmVhdGUgdGhlCklkZWFfUHVyZVdoaXRlLmpwZyBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSB0cmFuc3BhcmVudCBKUEcgYnkgc2V0dGluZyB0aGUKd2hpdGUgcGl4ZWwgdG8gYmUgdHJhbnNwYXJlbnQuIFRyYW5zcGFyZW5jeSB3b3JrcyBieSBoYXZpbmcgYSBzb3VyY2UgcGl4ZWwgdmFsdWUKKHRoZSBpbWFnZSBiZWluZyBkcmF3biksIGEgZGVzdGluYXRpb24gcGl4ZWwgdmFsdWUgKHRoZSBpbWFnZSBiZWluZyBkcmF3biBvbnRvKQphbmQgYSBydWxlIGJ5IHdoaWNoIHRoZSByZXN1bHRpbmcgZGVzdGluYXRpb24gcGl4ZWwgdmFsdWUgaXMgZGV0ZXJtaW5lZC4gRm9yCnRyYW5zcGFyZW5jeSB0aGUgcnVsZSBpcyB0aGF0IHRoZSBzb3VyY2UgcGl4ZWwgdmFsdWUgaXMgdXNlZCB1bmxlc3MgaXQncwp0cmFuc3BhcmVudCBpbiB3aGljaCBjYXNlIHRoZSBkZXN0aW5hdGlvbiBwaXhlbCBpcyB1c2VkLiBBbm90aGVyIHRlY2huaXF1ZSBpcyB0bwp1c2UgYWxwaGEgdmFsdWVzIHRoYXQgc3BlY2lmeSB0aGUgd2VpZ2h0IGFwcGxpZWQgdG8gdGhlIHNvdXJjZSByZWxhdGl2ZSB0byB0aGUKZGVzdGluYXRpb24gdG8gY3JlYXRlIHRoZSBmaW5hbCBwaXhlbCB2YWx1ZS4gVGhpcyBhbGxvd3MgdGhlIGJsZW5kaW5nIGJldHdlZW4KdGhlIHNvdXJjZSBpbWFnZSBhbmQgdGhlIGV4aXN0aW5nIGJhY2tncm91bmQgaXQgaXMgYmVpbmcgZHJhd24gb250by4KPGgyPjxhIG5hbWU9IkJsZW5kaW5nIj48L2E+QmxlbmRpbmc8L2gyPgpBbHBoYSBibGVuZGluZyBpcyBhIHRlY2huaXF1ZSB1c2VkIHRvIG1lcmdlIHR3byBwaXhlbCB2YWx1ZXMsIHdoZXJlIHRoZSBzb3VyY2UKYW5kIGRlc3RpbmF0aW9uIHBpeGVsIGVhY2ggc3BlY2lmeSBhbiBhbHBoYSB2YWx1ZSB0aGF0IHdlaWdodHMgaG93IG11Y2ggdGhleQp3aWxsIGFmZmVjdCB0aGUgZmluYWwgZGVzdGluYXRpb24gcGl4ZWwuIEFuIGFscGhhIHZhbHVlIG9mIDI1NSBpcyBmdWxsIHdlaWdodCwKYW5kIDAgaXMgbm8gd2VpZ2h0LiBTV1Qgc3VwcG9ydHMgYSA8YSBocmVmPSIjU2luZ2xlIGFscGhhIHZhbHVlIj5zaW5nbGUgYWxwaGEKdmFsdWU8L2E+IGZvciB0aGUgZW50aXJlIEltYWdlRGF0YSwgb3IgZWxzZSBlYWNoIHBpeGVsIGNhbiBoYXZlIGl0cyA8YSBocmVmPSIjRGlmZmVyZW50IGFscGhhIHZhbHVlIHBlciBwaXhlbCI+b3duCmFscGhhIHZhbHVlLjwvYT4KPGgzPjxhIG5hbWU9IlNpbmdsZSBhbHBoYSB2YWx1ZSI+PC9hPlNpbmdsZSBhbHBoYSB2YWx1ZTwvaDM+ClRoZSA8dHQ+aW50PC90dD4gZmllbGQgPHR0PmFscGhhVmFsdWU8L3R0PiBvZiBJbWFnZURhdGEgaXMgdXNlZCB0byBzcGVjaWZ5IGEKc2luZ2xlIHZhbHVlIHRoYXQgd2VpZ2h0cyBob3cgdGhlIHNvdXJjZSBwaXhlbHMgYXJlIGNvbWJpbmVkIHdpdGggdGhlCmRlc3RpbmF0aW9uIGlucHV0IHRvIGNyZWF0ZSB0aGUgZGVzdGluYXRpb24gb3V0cHV0LiBUaGUgbGlzdGluZyBiZWxvdyBzaG93cyBob3cKdGhlIHNhbWUgSW1hZ2VEYXRhIGZvciB0aGUgSWRlYV9QdXJlV2hpdGUuanBnIGlzIHVzZWQgZm9yIHRocmVlIHNlcGFyYXRlIGltYWdlcy4KVGhlIGZpcnN0IDxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPiBpcyB0aGUKb3JpZ2luYWwsIHRoZW4gPGltZyBzcmM9ImltYWdlcy90YWdfMi5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+IGFuIGFscGhhCm9mIDEyOCBpcyB1c2VkLCBhbmQgZmluYWxseSA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18zLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4KYW4gYWxwaGEgb2YgNjQuIE5vdGUgdGhhdCB0aGUgc2FtZSBJbWFnZURhdGEgaXMgY29udGludWFsbHkgbWFuaXB1bGF0ZWQgYnkKaGF2aW5nIGl0cyBhbHBoYSBjaGFuZ2VkIGJlZm9yZSBjcmVhdGluZyBlYWNoIEltYWdlLCBhbmQgY2hhbmdpbmcgdGhlIEltYWdlRGF0YQpoYXMgbm8gYWZmZWN0IG9uIEltYWdlcyBhbHJlYWR5IGNvbnN0cnVjdGVkIHVzaW5nIGl0LiBUaGlzIGlzIGJlY2F1c2UgdGhlIEltYWdlCmlzIHByZXBhcmVkIGZvciBkaXNwbGF5IG9uIHRoZSBkZXZpY2UgZnJvbSB0aGUgSW1hZ2VEYXRhIGF0IGNvbnN0cnVjdGlvbiB0aW1lLgo8cD48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IFNoZWxsIHNoZWxsID0gbmV3IFNoZWxsKGRpc3BsYXkpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNoZWxsLnNldExheW91dChuZXcgRmlsbExheW91dCgpKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBJbWFnZURhdGEgaW1hZ2VEYXRhID0gbmV3CkltYWdlRGF0YSgmcXVvdDtDOi90ZW1wL0lkZWFfUHVyZVdoaXRlLmpwZyZxdW90Oyk7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4gZmluYWwgSW1hZ2UgZnVsbEltYWdlID0KbmV3IEltYWdlKGRpc3BsYXksaW1hZ2VEYXRhKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBpbWFnZURhdGEuYWxwaGEgPSAxMjg7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzIuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4gZmluYWwgSW1hZ2UgaGFsZkltYWdlID0KbmV3IEltYWdlKGRpc3BsYXksaW1hZ2VEYXRhKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBpbWFnZURhdGEuYWxwaGEgPSA2NDs8L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfMy5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiBmaW5hbCBJbWFnZSBxdWFydGVySW1hZ2UKPSBuZXcgSW1hZ2UoZGlzcGxheSxpbWFnZURhdGEpOzwvdHQ+CjxwPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgQ2FudmFzIGNhbnZhcyA9IG5ldwpDYW52YXMoc2hlbGwsU1dULk5PX1JFRFJBV19SRVNJWkUpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNhbnZhcy5hZGRQYWludExpc3RlbmVyKG5ldyBQYWludExpc3RlbmVyKCkgezwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1YmxpYyB2b2lkCnBhaW50Q29udHJvbChQYWludEV2ZW50IGUpIHs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwplLmdjLmRyYXdJbWFnZShmdWxsSW1hZ2UsMCwwKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwplLmdjLmRyYXdJbWFnZShoYWxmSW1hZ2UsMTQwLDApOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CmUuZ2MuZHJhd0ltYWdlKHF1YXJ0ZXJJbWFnZSwyODAsMCk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IH0pOzwvdHQ+CjxwPjxpbWcgc3JjPSJpbWFnZXMvU2luZ2xlQWxwaGFDaGFubmVsLmdpZiIgaGVpZ2h0PSIxMzciIHdpZHRoPSI0MTciPgo8aDM+PGEgbmFtZT0iRGlmZmVyZW50IGFscGhhIHZhbHVlIHBlciBwaXhlbCI+PC9hPkRpZmZlcmVudCBhbHBoYSB2YWx1ZSBwZXIKcGl4ZWw8L2gzPgpBcyB3ZWxsIGFzIGhhdmluZyBhIHNpbmdsZSBhbHBoYSB2YWx1ZSB0aGF0IGFwcGxpZWQgdG8gYWxsIHBpeGVscyBpbiB0aGUgc291cmNlCmltYWdlLCBJbWFnZURhdGEgYWxsb3dzIGVhY2ggcGl4ZWwgdG8gaGF2ZSBpdHMgb3duIGluZGl2aWR1YWwgYWxwaGEgdmFsdWUuIFRoaXMKaXMgZG9uZSB3aXRoIHRoZSA8dHQ+Ynl0ZVtdPC90dD4gZmllbGQgPHR0PmFscGhhRGF0YTwvdHQ+LiBUaGlzIGFsbG93cyBlZmZlY3RzIHRvIGJlCmFjaGlldmVkLCBzdWNoIGFzIGhhdmluZyBhbiBpbWFnZSBmYWRlIGZyb20gaXRzIHRvcCB0byBib3R0b20uCjxwPlRoZSBmb2xsb3dpbmcgY29kZSBjcmVhdGVzIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgphbiBhbHBoYURhdGEgPHR0PmJ5dGVbXTwvdHQ+LCBhbmQgdGhlbiBoYXMgdHdvIGxvb3BzLiBUaGUgb3V0ZXIgbG9vcCB5IDxpbWcgc3JjPSJpbWFnZXMvdGFnXzIuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgppcyBmcm9tIDAgdG8gdGhlIGltYWdlRGF0YSdzIGhlaWdodCwgYW5kIHRoZSBpbm5lciBsb29wIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzMuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgpjcmVhdGVzIGEgPHR0PmJ5dGVbXTwvdHQ+IGZvciB0aGUgd2lkdGggb2YgdGhlIGltYWdlRGF0YSBhbmQgaW5pdGlhbGl6ZXMgaXQgd2l0aAphIHZhbHVlIHRoYXQgaW5jcmVhc2VzIGZyb20gMCBmb3IgdGhlIHRvcCByb3cgdGhyb3VnaCB0byAyNTUgZm9yIHRoZSBib3R0b20gcm93LgpBIFN5c3RlbS5hcnJheUNvcHkgPGltZyBzcmM9ImltYWdlcy90YWdfNC5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+IHRoZW4KYnVpbGRzIHVwIHRoZSBhbHBoYURhdGEgPHR0PmJ5dGVbXTwvdHQ+IHdpdGggZWFjaCByb3cuCjxwPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgSW1hZ2VEYXRhIGZ1bGxJbWFnZURhdGEgPSBuZXcKSW1hZ2VEYXRhKCZxdW90O0M6L3RlbXAvSWRlYV9QdXJlV2hpdGUuanBnJnF1b3Q7KTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBpbnQgd2lkdGggPSBmdWxsSW1hZ2VEYXRhLndpZHRoOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludCBoZWlnaHQgPSBmdWxsSW1hZ2VEYXRhLmhlaWdodDs8L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfMS5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiBieXRlW10gYWxwaGFEYXRhID0gbmV3CmJ5dGVbaGVpZ2h0ICogd2lkdGhdOzwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+IGZvcihpbnQKeT0wO3kmbHQ7aGVpZ2h0O3krKyl7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYnl0ZVtdIGFscGhhUm93ID0gbmV3CmJ5dGVbd2lkdGhdOzwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18zLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CmZvcihpbnQgeD0wO3gmbHQ7d2lkdGg7eCsrKXs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwphbHBoYVJvd1t4XSA9IChieXRlKSAoKDI1NSAqIHkpIC9oZWlnaHQpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfNC5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwpTeXN0ZW0uYXJyYXljb3B5KGFscGhhUm93LDAsYWxwaGFEYXRhLHkqd2lkdGgsd2lkdGgpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBmdWxsSW1hZ2VEYXRhLmFscGhhRGF0YSA9IGFscGhhRGF0YTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBJbWFnZSBmdWxsSW1hZ2UgPSBuZXcgSW1hZ2UoZGlzcGxheSxmdWxsSW1hZ2VEYXRhKTs8L3R0Pgo8cD5UaGUgcmVzdWx0aW5nIGltYWdlIGlzIHNob3duIGJlbG93LCBhbmQgdGhlIGFscGhhRGF0YSA8dHQ+Ynl0ZVtdPC90dD4gbWFrZXMKdGhlIHRvcCBvZiB0aGUgaW1hZ2UgdHJhbnNwYXJlbnQgYW5kIHRoZSBib3R0b20gb3BhcXVlLCB3aXRoIGEgZ3JhZHVhbCBmYWRpbmcKYmV0d2VlbiB0aGUgdHdvLgo8cD48aW1nIHNyYz0iaW1hZ2VzL0ltYWdlQmxlbmRlZC5naWYiIGhlaWdodD0iMTQ0IiB3aWR0aD0iMTg2Ij4KPGgyPjxhIG5hbWU9IkltYWdlIEVmZmVjdHMiPjwvYT5JbWFnZSBlZmZlY3RzPC9oMj4KQXMgd2VsbCBhcyBhcmJpdHJhcnkgaW1hZ2UgZWZmZWN0cyB0aGF0IGNhbiBiZSBhY2hpZXZlZCBieSBtYW5pcHVsYXRpbmcgaW1hZ2UKZGF0YSwgU1dUIHByb3ZpZGVzIGEgbnVtYmVyIG9mIHByZS1kZWZpbmVkIHdheXMgb2YgY3JlYXRpbmcgbmV3IGltYWdlcyBiYXNlZCBvbgpleGlzdGluZyBpbWFnZXMgY29tYmluZWQgd2l0aCBjZXJ0YWluIHN0eWxlcy4gVGhpcyBpcyB1c2VkIGlmLCBmb3IgZXhhbXBsZSwgeW91CmhhdmUgYW4gaW1hZ2UgYmVpbmcgdXNlZCBvbiBhIHRvb2xiYXIgYnV0dG9uIGFuZCB5b3Ugd2lzaCB0byBjcmVhdGUgYSB2ZXJzaW9uCnRoYXQgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYnV0dG9uIGlzIGRpc2FibGVkIG9yIHRoYXQgaXQgaXMgaW5hY3RpdmUuCjxwPlRvIGNyZWF0ZSBhbiBlZmZlY3QgYmFzZWQgb24gYW4gZXhpc3RpbmcgaW1hZ2UgYW5kIGEgc3R5bGUgZmxhZyB1c2UgdGhlCmNvbnN0cnVjdG9yIDx0dD5JbWFnZShEaXNwbGF5IGRpc3BsYXksIEltYWdlIGltYWdlLCBpbnQgZmxhZyk8L3R0Pi4gVGhlIGZsYWcKYXJndW1lbnQgaXMgYSBzdGF0aWMgY29uc3RhbnQgb2YgZWl0aGVyIFNXVC5JTUFHRV9DT1BZLCBTV1QuSU1BR0VfRElTQUJMRSBvcgpTV1QuSU1BR0VfR1JBWS4gQ29weSBjcmVhdGVzIGEgbmV3IGltYWdlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBidXQgd2l0aCBhIGNvcHkKb2YgaXRzIGltYWdlRGF0YSwgd2hlcmVhcyBEaXNhYmxlIGFuZCBHcmF5IGNyZWF0ZSBhIG5ldyBpbWFnZSBhcHBseWluZyBwbGF0Zm9ybQpzcGVjaWZpYyBlZmZlY3RzLiBUaGUgZm9sbG93aW5nIGNvZGUgc2hvd3MgdGhlIElkZWEuanBnLCB0b2dldGhlciB3aXRoIHRocmVlCm1vcmUgaW1hZ2VzIHRoYXQgd2UgY3JlYXRlZCB1c2luZyB0aGUgc3R5bGUgYml0cyA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18xLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4KSU1BR0VfRElTQUJMRSwgPGltZyBzcmM9ImltYWdlcy90YWdfMi5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+CklNQUdFX0dSQVkgYW5kIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzMuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgpJTUFHRV9DT1BZLiBUbyBzaG93IHRoYXQgSU1BR0VfQ09QWSBjcmVhdGVzIGEgbmV3IGltYWdlIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzQuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgphIEdDIGlzIHVzZWQgdG8gZHJhdyBvbnRvIGl0IHRoYXQgYWZmZWN0cyBvbmx5IHRoZSBjb3BpZWQgaW1hZ2UsIG5vdCB0aGUKb3JpZ2luYWwuCjxwPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgSW1hZ2UgaWRlYUltYWdlID0gbmV3IEltYWdlKGRpc3BsYXksPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0oJnF1b3Q7L2ljb25zL0lkZWEuanBnJnF1b3Q7KTs8L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfMS5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiBJbWFnZQpkaXNhYmxlZEltYWdlJm5ic3A7ID0gbmV3IEltYWdlKGRpc3BsYXksaW1hZ2UsU1dULklNQUdFX0RJU0FCTEUpOzwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+IEltYWdlIGdyYXlJbWFnZSA9IG5ldwpJbWFnZShkaXNwbGF5LGltYWdlLFNXVC5JTUFHRV9HUkFZKTs8L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfMy5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiBJbWFnZSBjb3B5SW1hZ2UgPSBuZXcKSW1hZ2UoZGlzcGxheSxpZGVhSW1hZ2UsU1dULklNQUdFX0NPUFkpOzwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ180LmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+IEdDIGdjID0gbmV3CkdDKGNvcHlJbWFnZSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgZ2MuZHJhd1RleHQoJnF1b3Q7VGhpcyBpcyBhIGNvcHkmcXVvdDssMCwwKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBnYy5kaXNwb3NlKCk7PC90dD4KPGgxPjxpbWcgc3JjPSJpbWFnZXMvR3JhcGhpY3NFZmZlY3RzXzAxLkpQRyIgaGVpZ2h0PSIxMzYiIHdpZHRoPSI1MTciPjwvaDE+CjxoMT48YSBuYW1lPSJBbmltYXRpb24iPjwvYT5HSUYgQW5pbWF0aW9uPC9oMT4KQW5vdGhlciBpbXBvcnRhbnQgdG9waWMgZm9yIGltYWdlcyBpcyB1bmRlcnN0YW5kaW5nIGFuaW1hdGlvbiB3aGVyZSBhbiBpbWFnZSBjYW4KY29udGFpbiBhIG51bWJlciBvZiBmcmFtZXMgdGhhdCBhcmUgYW5pbWF0ZWQgaW4gc2VxdWVuY2UuIEltYWdlIGFuaW1hdGlvbiBpcwpzdXBwb3J0ZWQgYnkgR0lGIGltYWdlcywgd2hlcmUgYSBzaW5nbGUgaW1hZ2UgZmlsZSBjYW4gY29udGFpbiBtdWx0aXBsZSBzZXRzIG9mCkltYWdlRGF0YS4gV2ViIGJyb3dzZXJzIHN1cHBvcnQgbmF0aXZlIGFuaW1hdGlvbiwgYW5kIHRoZSBmb2xsb3dpbmcgaW1hZ2UgaXMKbWFkZSB1cCBvZiAxNSBmcmFtZXMgc2hvd2luZyB0aGUgcGVuIHJvdGF0aW5nIGFuZCB3cml0aW5nIHRoZSB3b3JkcyBTV1QgYmVuZWF0aAp0aGUgSWRlYSBsb2dvLgo8cD48aW1nIHNyYz0iaW1hZ2VzL0lkZWFfU1dUX0FuaW1hdGlvbi5naWYiIGhlaWdodD0iMTIwIiB3aWR0aD0iMTIwIj4KPHA+V2hpbGUgdGhlIHdlYiBicm93c2VyIHlvdSdyZSB1c2luZyB0byByZWFkIHRoaXMgYXJ0aWNsZSBzaG91bGQgc2hvdyB0aGUgSWRlYV9TV1RfQW5pbWF0aW9uLmdpZiAKICBmaWxlIGFzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgbW92aW5nIHBlbiwgdGhpcyBpcyBub3QgdHJ1ZSBvZiBuYXRpdmUgU1dUIGNvbnRyb2xzIAogIGRpc3BsYXlpbmcgdGhlIGdyYXBoaWMuIFRoZSBhbmltYXRpb24gbXVzdCBiZSBkb25lIHByb2dyYW1tYXRpY2FsbHksIGFuZCB0aGUgCiAgY2xhc3MgPHR0Pm9yZy5lY2xpcHNlLnN3dC5leGFtcGxlcy5JbWFnZUFuYWx5emVyPC90dD4gc2hvd3MgaG93IHRoaXMgY2FuIGJlIAogIGFjaGlldmVkLiBUaGUgSW1hZ2VBbmFseXplciBjbGFzcyBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgPGEgaHJlZj0iaHR0cDovL2Rldi5lY2xpcHNlLm9yZy92aWV3Y3ZzL2luZGV4LmNnaS9vcmcuZWNsaXBzZS5zd3QuZXhhbXBsZXMvIj5TV1QgCiAgZXhhbXBsZXMgcHJvamVjdDwvYT4gaW4gdGhlIEVjbGlwc2UgQ1ZTIHJlcG9zaXRvcnkuCjxwPldoZW4gYW4gYW5pbWF0ZWQgR0lGIGlzIGxvYWRlZCBieSB0aGUgSW1hZ2VMb2FkZXIgY2xhc3MsIGVhY2ggaW5kaXZpZHVhbApmcmFtZSBpcyBhIHNlcGFyYXRlIGVsZW1lbnQgaW4gdGhlIGRhdGEgZmllbGQgYXJyYXkgdHlwZWQgdG8gSW1hZ2VEYXRhW10uJm5ic3A7CkluIHRoZSBhbmltYXRpb24gc2VxdWVuY2UgZWFjaCBJbWFnZURhdGEgcmVjb3JkcyBob3cgbWFueSBtaWxsaXNlY29uZHMgaXQgc2hvdWxkCmJlIGRpc3BsYXllZCBmb3IgaW4gdGhlIGludCBmaWVsZCBkZWxheVRpbWUuIFRoZSBudW1iZXIgb2YgdGltZXMgdGhlIHNlcXVlbmNlCnNob3VsZCByZXBlYXQgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBmaWVsZCBsb2FkZXIucmVwZWF0Q291bnQsIGEgdmFsdWUgb2YgLTEKaW5kaWNhdGVzIHRoYXQgdGhlIGFuaW1hdGlvbiBzaG91bGQgcmVwZWF0IGluZGVmaW5pdGVseSBhbmQKSWRlYV9TV1RfQW5pbWF0aW9uLmdpZiBoYXMgdGhpcyB2YWx1ZS4gV2hlbiBzd2l0Y2hpbmcgZnJvbSBvbmUgZnJhbWUgdG8gdGhlIG5leHQKdGhlcmUgYXJlIHRocmVlIHdheXMgdGhhdCB0aGUgbmV3IGZyYW1lIGNhbiByZXBsYWNlIHRoZSBwcmV2aW91cyBvbmUsIHNwZWNpZmllZApieSB0aGUgaW50IGZpZWxkIDx0dD5JbWFnZURhdGEuZGlzcG9zYWxNZXRob2Q8L3R0Pi4gVGhpcyBjYW4gdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlcwpkZWZpbmVkIGluIHRoZSBjb25zdGFudCBjbGFzcyA8dHQ+b3JnLmVjbGlwc2Uuc3d0LlNXVDwvdHQ+Ljxicj4KJm5ic3A7Cjx0YWJsZSBib3JkZXI9IjEiPgogIDx0cj4KICAgIDx0ZD5ETV9GSUxMX05PTkU8L3RkPgogICAgPHRkPkxlYXZlIHRoZSBwcmV2aW91cyBpbWFnZSBpbiBwbGFjZSBhbmQganVzdCBkcmF3IHRoZSBpbWFnZSBvbiB0b3AuJm5ic3A7CiAgICAgIEVhY2ggZnJhbWUgYWRkcyB0byB0aGUgcHJldmlvdXMgb25lLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+RE1fRklMTF9CQUNLR1JPVU5EPC90ZD4KICAgIDx0ZD5GaWxsIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IgYmVmb3JlIHBhaW50aW5nIGVhY2ggZnJhbWUuIFRoZSBwaXhlbAogICAgICB2YWx1ZSBmb3IgdGhpcyBpcyBkZWZpbmVkIGluIHRoZSBmaWVsZCBsb2FkZXIuYmFja2dyb3VuZFBpeGVsPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5ETV9GSUxMX1BSRVZJT1VTPC90ZD4KICAgIDx0ZD5SZXN0b3JlIHRoZSBwcmV2aW91cyBwaWN0dXJlJm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5ETV9GSUxMX1VOU1BFQ0lGSUVEPC90ZD4KICAgIDx0ZD5ObyBkaXNwb3NhbCBtZXRob2QgaGFzIGJlZW4gZGVmaW5lZDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHA+VG8gY29uc2VydmUgb24gc3BhY2UsIGFuaW1hdGVkIEdJRnMgYXJlIGdlbmVyYWxseSBvcHRpbWl6ZWQgdG8ganVzdCBzdG9yZSB0aGUKZGVsdGEgdGhhdCBuZWVkcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBwcmV2aW91cyBpbWFnZS4gSW4gdGhlCklkZWFfU1dUX0FuaW1hdGlvbi5naWYgYWJvdmUgdGhlIDE1IGZyYW1lcyBhcmUgc2hvd24gYmVsb3cuIEVhY2ggZnJhbWUgc3RvcmVzIGEKZGVsdGEgYWdhaW5zdCB0aGUgcHJldmlvdXMgaW1hZ2UsIGFuZCB0aGlzIHdhcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSB0aGUKdG9vbCBJIGNyZWF0ZSB0aGUgYW5pbWF0ZWQgR0lGIHdpdGguIFRoZSBkaXNwb3NhbCBtZXRob2QgZm9yIGVhY2ggZnJhbWUgaXMKRE1fTk9ORSBzbyB0aGUgZWFjaCBpbWFnZSBzaG91bGQgYmUgZHJhd24gb24gdG9wIG9mIHRoZSBwcmV2aW91cyBvbmUuIEVhY2gKaW5kaXZpZHVhbCBJbWFnZURhdGEgZWxlbWVudCBoYXMgdGhlIHggYW5kIHkgZm9yIGl0cyB0b3AgbGVmdCBjb3JuZXIsIGFzIHdlbGwgYXMKaXRzIHdpZHRoIGFuZCBoZWlnaHQuIFRoZSBvdmVyYWxsIHNpemUgdG8gdXNlIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSBmaWVsZHM8dHQ+CmxvYWRlci5sb2dpY2FsU2NyZWVuV2lkdGg8L3R0PiBhbmQgPHR0PmxvYWRlci5sb2dpY2FsU2NyZWVuSGVpZ2h0LjwvdHQ+CjxwPjxpbWcgc3JjPSJpbWFnZXMvQW5pbWF0aW9uRnJhbWVzLmdpZiIgaGVpZ2h0PSI0ODEiIHdpZHRoPSI0ODEiPgo8cD5UbyBpbGx1c3RyYXRlIGhvdyB0byBkaXNwbGF5IGFuIGFuaW1hdGVkIEdJRiBpbiBTV1Qgd2UnbGwgY3JlYXRlIGFuIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgppbml0aWFsIEltYWdlIGZyb20gdGhlIGZpcnN0IGZyYW1lIGFuZCBhIGNvdW50ZXIgdG8gc3RvcmUgd2hpY2ggZnJhbWUgaXMgYmVpbmcKZGlzcGxheWVkLiBUaGUgaW1hZ2UgaXMgZHJhd24gPGltZyBzcmM9ImltYWdlcy90YWdfMi5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+CmEgcGFpbnQgZXZlbnQgb24gYSBDYW52YXMsIGFuZCBhIEdDIGlzIGNyZWF0ZWQgPGltZyBzcmM9ImltYWdlcy90YWdfMy5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+CnRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcgdGhlIHN1YnNlcXVlbnQgZnJhbWVzIG9udG8gdGhlIGltYWdlLgo8cD48dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IEltYWdlTG9hZGVyIGxvYWRlciA9IG5ldyBJbWFnZUxvYWRlcigpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7CmxvYWRlci5sb2FkKGdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbSgmcXVvdDtJZGVhX1NXVF9BbmltYXRpb24uZ2lmJnF1b3Q7KSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgQ2FudmFzIGNhbnZhcyA9IG5ldyBDYW52YXMoc2hlbGwsU1dULk5PTkUpOzwvdHQ+PGJyPgo8aW1nIHNyYz0iaW1hZ2VzL3RhZ18xLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij48dHQ+IGltYWdlID0gbmV3CkltYWdlKGRpc3BsYXksbG9hZGVyLmRhdGFbMF0pOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludCBpbWFnZU51bWJlcjs8L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfMy5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiBmaW5hbCBHQyBnYyA9IG5ldwpHQyhpbWFnZSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgY2FudmFzLmFkZFBhaW50TGlzdGVuZXIobmV3IFBhaW50TGlzdGVuZXIoKXs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwdWJsaWMgdm9pZCBwYWludENvbnRyb2woUGFpbnRFdmVudCBldmVudCl7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzIuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKZXZlbnQuZ2MuZHJhd0ltYWdlKGltYWdlLDAsMCk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IH0pOzwvdHQ+CjxwPlRoZSBib2R5IG9mIHRoZSBleGFtcGxlIHdpbGwgY3JlYXRlIGEgdGhyZWFkIHRoYXQgaXRlcmF0ZXMgdGhyb3VnaCBlYWNoCmZyYW1lLCB3YWl0aW5nIHVudGlsIHRoZSA8aW1nIHNyYz0iaW1hZ2VzL3RhZ180LmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij5kZWxheVRpbWUKaGFzIHBhc3NlZC4gRm9yIGVhY2ggZnJhbWUgdGhlIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzUuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPgpJbWFnZURhdGEgaXMgcmV0cmlldmVkIGZyb20gdGhlIGxvYWRlciBhbmQgYSB0ZW1wb3JhcnkgSW1hZ2UgY3JlYXRlZC4gVGhpcyBpcwp0aGVuIGRyYXduIG9udG8gdGhlIGltYWdlIGJlaW5nIGRpc3BsYXllZCBvbiB0aGUgY2FudmFzLCBhdCB0aGUgeCBhbmQgeSBwb3NpdGlvbgpzcGVjaWZpZWQgYnkgdGhlIGZyYW1lJ3MgSW1hZ2VEYXRhLiBCZWNhdXNlIHdlIGNyZWF0ZWQgdGhlIHRlbXBvcmFyeQpmcmFtZUltYWdlIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzcuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPiB3ZSBtdXN0CmRpc3Bvc2UgaXQgd2hlbiBpdCdzIG5vIGxvbmdlciBiZWluZyB1c2VkIHRvIGZyZWUgdXAgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2UuCjxwPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgVGhyZWFkIHRocmVhZCA9IG5ldyBUaHJlYWQoKXs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwdWJsaWMgdm9pZCBydW4oKXs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBsb25nIGN1cnJlbnRUaW1lID0KU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50IGRlbGF5VGltZSA9CmxvYWRlci5kYXRhW2ltYWdlTnVtYmVyXS5kZWxheVRpbWU7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzQuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKd2hpbGUoY3VycmVudFRpbWUgKyBkZWxheVRpbWUgKiAxMCAmZ3Q7IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKXs8L3R0Pjxicj4KPHR0Pjxmb250IGNvbG9yPSIjMDA5OTAwIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKLy8gV2FpdCB0aWxsIHRoZSBkZWxheSB0aW1lIGhhcyBwYXNzZWQ8L2ZvbnQ+PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGRpc3BsYXkuYXN5bmNFeGVjKG5ldyBSdW5uYWJsZSgpezwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1YmxpYyB2b2lkIHJ1bigpezwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGZvbnQgY29sb3I9IiMwMDk5MDAiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwovLyBJbmNyZWFzZSB0aGUgdmFyaWFibGUgaG9sZGluZyB0aGUgZnJhbWUgbnVtYmVyPC9mb250PjwvdHQ+PGJyPgogIDx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW1hZ2VOdW1iZXIgCiAgPSBpbWFnZU51bWJlciA9PSBsb2FkZXIuZGF0YS5sZW5ndGgtMSA/IDAgOiBpbWFnZU51bWJlcisxOzwvdHQ+PGJyPgo8dHQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwovLyBEcmF3IHRoZSBuZXcgZGF0YSBvbnRvIHRoZSBpbWFnZTwvZm9udD48L3R0Pjxicj4KPGltZyBzcmM9ImltYWdlcy90YWdfNS5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwpJbWFnZURhdGEgbmV4dEZyYW1lRGF0YSA9IGxvYWRlci5kYXRhW2ltYWdlTnVtYmVyXTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBJbWFnZQpmcmFtZUltYWdlID0gbmV3IEltYWdlKGRpc3BsYXksbmV4dEZyYW1lRGF0YSk7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzYuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKZ2MuZHJhd0ltYWdlKGZyYW1lSW1hZ2UsbmV4dEZyYW1lRGF0YS54LG5leHRGcmFtZURhdGEueSk7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzcuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKZnJhbWVJbWFnZS5kaXNwb3NlKCk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKY2FudmFzLnJlZHJhdygpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9KTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgfTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBzaGVsbC5vcGVuKCk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgdGhyZWFkLnN0YXJ0KCk7PC90dD4KPGgxPjxhIG5hbWU9IlNjYWxpbmciPjwvYT5TY2FsaW5nPC9oMT4KSW4gdGhlIGV4YW1wbGVzIHNvIGZhciB3ZSBoYXZlIGxvYWRlZCBhbiBpbWFnZSBmcm9tIGEgZmlsZSBhbmQgZHJhd24gaXQgb24gdGhlIApHVUkgYXQgaXRzIG9yaWdpbmFsIHNpemUuIFRoZXJlIGFyZSB0aW1lcyB3aGVuIHRoaXMgd2lsbCBub3QgYWx3YXlzIGJlIHRoZSBjYXNlIAphbmQgeW91IG5lZWQgdG8gc3RyZXRjaCBvciBzaHJpbmsgdGhlIGltYWdlLCBhbmQgdGhlcmUgYXJlIHR3byB3YXlzIHRvIGRvIGFjaGlldmUgCnRoaXMuIFRoZSBmaXJzdCBpcyB0byB1c2UgdGhlIEdDIHRvIHN0cmV0Y2ggYW5kIGNsaXAgaXQsIHVzaW5nIDx0dD48Zm9udCBjb2xvcj0iIzAwMDAwMCI+R0MuZHJhd0ltYWdlKEltYWdlIAppbWFnZSwgaW50IHNyY1gsIGludCBzcmNZLCBpbnQgc3JjV2lkdGgsIGludCBzcmNIZWlnaHQsIGludCBkc3RYLCBpbnQgZHN0WSwgaW50IApkc3RXaWR0aCwgaW50IGRzdEhlaWdodCk8L2ZvbnQ+PC90dD4sIGFuZCB0aGUgc2Vjb25kIGlzIHRvIHVzZSA8dHQ+SW1hZ2VEYXRhLnNjYWxlZFRvKGludCAKd2lkdGgsIGludCBoZWlnaHQpIDwvdHQ+dG8gY3JlYXRlIGEgbmV3IEltYWdlRGF0YSBvYmplY3QgYmFzZWQgb24gc2NhbGluZyB0aGUgCnJlY2VpdmVyLgo8cD5UaGUgZm9sbG93aW5nIGNvZGUgbG9hZHMgdGhlIElkZWEuanBnIGltYWdlIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzEuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPiwKYW5kIHNjYWxlcyB0aGlzIHRvIDEvMiBhbmQgMiB0aW1lcyBpdHMgb3JpZ2luYWwgc2l6ZSA8aW1nIHNyYz0iaW1hZ2VzL3RhZ18yLmdpZiIgaGVpZ2h0PSIxMyIgd2lkdGg9IjI0Ij4KdXNpbmcgdGhlPHR0PiBJbWFnZURhdGEuc2NhbGVkVG8oaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTwvdHQ+LiBUaGUgaW1hZ2UgaXMgYWxzbwpyZXNpemVkIHVzaW5nIDx0dD5HQy5kcmF3SW1hZ2UoLi4uKTwvdHQ+LCBhbmQgdGhlIGV4YW1wbGUgc2hvd3MgdHdvIHdheXMgdG8KYWNoaWV2ZSB0aGlzLiBUaGUgZmlyc3QgdGVjaG5pcXVlPGltZyBzcmM9ImltYWdlcy90YWdfMy5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+CmlzIHRvIHNwZWNpZnkgdGhlIG5ldyB3aWR0aCBhbmQgaGVpZ2h0IGFzIHBhcnQgdGhlIHBhaW50IGV2ZW50LiBUaGlzIGlzCnBvdGVudGlhbGx5IGluZWZmaWNpZW50IGJlY2F1c2UgdGhlIHNjYWxpbmcgbXVzdCBiZSBkb25lIGVhY2ggdGltZSB0aGUgY2FudmFzCnJlcGFpbnRzIGl0c2VsZi4gQSBtb3JlIG9wdGltaXplZCB0ZWNobmlxdWUgaXMgdG8gY3JlYXRlIGFuIGltYWdlIGF0IHRoZSBmaW5hbApkZXNpcmVkIHNpemUsIDxpbWcgc3JjPSJpbWFnZXMvdGFnXzQuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPiBjb25zdHJ1Y3QKYSBHQyBvdmVyIHRoZSB0aGlzIGFuZCB0aGVuIHBhaW50IG9udG8gaXQgc28gYSBwZXJtYW5lbnQgc2NhbGVkIGltYWdlIGV4aXN0cyBpbgp0aGUgcHJvZ3JhbS4KPHA+PGZvbnQgY29sb3I9IiMwMDAwMDAiPlRoZSBlbmQgcmVzdWx0IGlzIHNob3duIGJlbG93LCBhbmQgYm90aCB0ZWNobmlxdWVzCnByb2R1Y2UgYWxtb3N0IGlkZW50aWNhbCByZXN1bHRzLjwvZm9udD4KPHA+PGltZyBzcmM9ImltYWdlcy90YWdfMS5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiBmaW5hbCBJbWFnZSBpbWFnZSA9Cm5ldyBJbWFnZShkaXNwbGF5LDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CmdldENsYXNzKCksZ2V0UmVzb3VyY2VBc1N0cmVhbSgmcXVvdDtJZGVhLmpwZyZxdW90OykpOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZpbmFsIGludCB3aWR0aCA9IGltYWdlLmdldEJvdW5kcygpLndpZHRoOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZpbmFsIGludCBoZWlnaHQgPSBpbWFnZS5nZXRCb3VuZHMoKS5oZWlnaHQ7PC90dD4KPHA+PGltZyBzcmM9ImltYWdlcy90YWdfMi5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiBmaW5hbCBJbWFnZSBzY2FsZWQwNTAKPSBuZXcgSW1hZ2UoZGlzcGxheSw8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwppbWFnZS5nZXRJbWFnZURhdGEoKS5zY2FsZWRUbygoaW50KSh3aWR0aCowLjUpLChpbnQpKGhlaWdodCowLjUpKSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgZmluYWwgSW1hZ2Ugc2NhbGVkMjAwID0gbmV3IEltYWdlKGRpc3BsYXksPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKaW1hZ2UuZ2V0SW1hZ2VEYXRhKCkuc2NhbGVkVG8oKGludCkod2lkdGgqMiksKGludCkoaGVpZ2h0KjIpKSk7PC90dD4KPHA+PGltZyBzcmM9ImltYWdlcy90YWdfNC5naWYiIGhlaWdodD0iMTMiIHdpZHRoPSIyNCI+PHR0PiBmaW5hbCBJbWFnZQpzY2FsZWRHQzIwMCA9IG5ldyBJbWFnZShkaXNwbGF5LChpbnQpKHdpZHRoKjIpLChpbnQpKGhlaWdodCoyKSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsgR0MgZ2MgPSBuZXcgR0Moc2NhbGVkR0MyMDApOzwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7CmdjLmRyYXdJbWFnZShpbWFnZSwwLDAsd2lkdGgsaGVpZ2h0LDAsMCx3aWR0aCoyLGhlaWdodCoyKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBnYy5kaXNwb3NlKCk7PC90dD4KPHA+PHR0PiZuYnNwOyZuYnNwOyZuYnNwOyBjYW52YXMuYWRkUGFpbnRMaXN0ZW5lcihuZXcgUGFpbnRMaXN0ZW5lcigpIHs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwdWJsaWMgdm9pZCBwYWludENvbnRyb2woUGFpbnRFdmVudCBlKSB7PC90dD48YnI+CjxpbWcgc3JjPSJpbWFnZXMvdGFnXzMuZ2lmIiBoZWlnaHQ9IjEzIiB3aWR0aD0iMjQiPjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKZS5nYy5kcmF3SW1hZ2UoaW1hZ2UsMCwwLHdpZHRoLGhlaWdodCwwLDAsKGludCkod2lkdGgqMC41KSwoaW50KShoZWlnaHQqMC41KSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZS5nYy5kcmF3SW1hZ2Uoc2NhbGVkMDUwLDEwMCwwKTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBlLmdjLmRyYXdJbWFnZShzY2FsZWRHQzIwMCwwLDc1KTs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwplLmdjLmRyYXdJbWFnZShzY2FsZWQyMDAsMjI1LDE3NSk7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7IH0pOzwvdHQ+CjxwPjxpbWcgc3JjPSJpbWFnZXMvU2NhbGVkSW1hZ2VzXzAxLmdpZiIgaGVpZ2h0PSIzMDAiIHdpZHRoPSI0MjUiPgo8cD5XaGVuIHRvIHVzZSBHQyBzY2FsaW5nLCBhbmQgd2hlbiB0byB1c2UgPHR0PkltYWdlRGF0YS5zY2FsZWRUbyguLi4pPC90dD4sIGRlcGVuZHMgCiAgb24gdGhlIHBhcnRpY3VsYXIgc2NlbmFyaW8uIFRoZSBHQyBzY2FsaW5nIGlzIGZhc3RlciBiZWNhdXNlIGl0IGlzIG5hdGl2ZSwgaG93ZXZlciAKICBpdCBkb2VzIGFzc3VtZSB0aGF0IHlvdSBoYXZlIGEgR0MgYW5kIGFuIEltYWdlIHRvIHdvcmsgd2l0aC4gVXNpbmcganVzdCB0aGUgCiAgSW1hZ2VEYXRhIG1lYW5zIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gaGF2ZSBwcmVwYXJlZCBhbiBJbWFnZSAodGhhdCByZXF1aXJlcyAKICBhIG5hdGl2ZSByZXNvdXJjZSBhbmQgcmVxdWlyZXMgZGlzcG9zaW5nKSwgYW5kIGFuIEltYWdlRGF0YSBjYW4gYmUgbG9hZGVkIGRpcmVjdGx5IAogIGZyb20gYSBncmFwaGljIGZpbGUgKHVzaW5nIHRoZSBjb25zdHJ1Y3RvciA8dHQ+SW1hZ2VEYXRhKFN0cmluZyBmaWxlTmFtZSk8L3R0PiAKICBvciA8dHQ+SW1hZ2VEYXRhKElucHV0U3RyZWFtIHN0cmVhbSk8L3R0PikuIEJ5IHVzaW5nIHJhdyBJbWFnZURhdGEgeW91IGFyZSBkZWxheWluZyAKICB0aGUgcG9pbnQgYXQgd2hpY2ggeW91IHdpbGwgbmVlZCBuYXRpdmUgZGlzcGxheSByZXNvdXJjZXMsIGhvd2V2ZXIgeW91IHdpbGwgCiAgZXZlbnR1YWxseSBuZWVkIHRvIGNyZWF0ZSBhbiBJbWFnZSBmcm9tIHRoZSBzY2FsZWQgSW1hZ2VEYXRhIGJlZm9yZSBpdCBjYW4gYmUgCiAgcmVuZGVyZWQgb250byBhIGRldmljZS4gCjxoMT48YSBuYW1lPSJDdXJzb3IiPjwvYT5DdXJzb3I8L2gxPgpUaGUgZmluYWwgc2VjdGlvbiBvZiB0aGlzIGFydGljbGUgY292ZXJzIHRoZSBjbGFzcyA8dHQ+b3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkN1cnNvcjwvdHQ+CnJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgb3BlcmF0aW5nIHN5c3RlbSByZXNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1vdXNlCnBvaW50ZXIuIFRoZSByZWFzb24gY3Vyc29ycyBhcmUgY292ZXJlZCBpbiBhbiBhcnRpY2xlIG9uIGltYWdlcyBpcyBiZWNhdXNlIHlvdQpjYW4gY3JlYXRlIGFyYml0cmFyeSBjdXJzb3JzIGZyb20gaW1hZ2VzLCBhbmQgdGhleSBpbGx1c3RyYXRlIGhvdyBpbWFnZSBtYXNrcwp3b3JrLgo8cD5DdXJzb3JzIGNhbiBiZSBjcmVhdGVkIGluIHR3byB3YXlzLCBlaXRoZXIgZnJvbSBhIHByZS1kZWZpbmVkIHN0eWxlIG9yIHVzaW5nCnNvdXJjZSBhbmQgbWFzayBpbWFnZXMuCjxoMj48YSBuYW1lPSJQbGF0Zm9ybSBjdXJzb3JzIj48L2E+UGxhdGZvcm0gY3Vyc29yczwvaDI+ClRoZSBsaXN0IG9mIHByZS1kZWZpbmVkIHN0eWxlcyBhcmUgU1dUIGNvbnN0YW50cyBzaG93biBiZWxvdywgdG9nZXRoZXIgd2l0aApzYW1wbGUgaW1hZ2VzIGFsdGhvdWdoIHRoZXNlIHdpbGwgdmFyeSBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kCnBsYXRmb3JtIHNldHRpbmdzLjxicj4KJm5ic3A7Cjx0YWJsZSBib3JkZXI9IjEiPgogIDx0cj4KICAgIDx0ZD5DVVJTT1JfQVBQU1RBUlRJTkc8L3RkPgogICAgPHRkPjxpbWcgc3JjPSJpbWFnZXMvSW1hZ2VfY3Vyc29yX2FwcHN0YXJ0aW5nLmdpZiIgaGVpZ2h0PSIyOCIgd2lkdGg9IjI4Ij48L3RkPgogICAgPHRkPkNVUlNPUl9JQkVBTTwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZV9jdXJzb3JfaWJlYW0uZ2lmIiBoZWlnaHQ9IjMyIiB3aWR0aD0iMzIiPjwvdGQ+CiAgICA8dGQ+Q1VSU09SX1NJWkVORTwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZV9jdXJzb3JfTkVTVy5naWYiIGhlaWdodD0iMzIiIHdpZHRoPSIzMiI+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5DVVJTT1JfQVJST1c8L3RkPgogICAgPHRkPjxpbWcgc3JjPSJpbWFnZXMvSW1hZ2VfY3Vyc29yX2Fycm93LmdpZiIgaGVpZ2h0PSIzMiIgd2lkdGg9IjMyIj48L3RkPgogICAgPHRkPkNVUlNPUl9OTzwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZV9jdXJzb3Jfbm90LmdpZiIgaGVpZ2h0PSIzMiIgd2lkdGg9IjMyIj48L3RkPgogICAgPHRkPkNVUlNPUl9TSVpFTkVTVzwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZV9jdXJzb3JfTkVTVy5naWYiIGhlaWdodD0iMzIiIHdpZHRoPSIzMiI+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5DVVJTT1JfQ1JPU1M8L3RkPgogICAgPHRkPjxpbWcgc3JjPSJpbWFnZXMvSW1hZ2VfY3Vyc29yX2Nyb3NzLmdpZiIgaGVpZ2h0PSIzMiIgd2lkdGg9IjMyIj48L3RkPgogICAgPHRkPkNVUlNPUl9TSVpFQUxMPC90ZD4KICAgIDx0ZD48aW1nIHNyYz0iaW1hZ2VzL0ltYWdlX2N1cnNvcl9zaXplYWxsLmdpZiIgaGVpZ2h0PSIyNyIgd2lkdGg9IjI2Ij48L3RkPgogICAgPHRkPkNVUlNPUl9TSVpFTlM8L3RkPgogICAgPHRkPjxpbWcgc3JjPSJpbWFnZXMvSW1hZ2VfTlMuZ2lmIiBoZWlnaHQ9IjMyIiB3aWR0aD0iMzIiPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Q1VSU09SX0hBTkQ8L3RkPgogICAgPHRkPjxpbWcgc3JjPSJpbWFnZXMvSW1hZ2VfY3Vyc29yX2hhbmQuZ2lmIiBoZWlnaHQ9IjMyIiB3aWR0aD0iMzIiPjwvdGQ+CiAgICA8dGQ+Q1VSU09SX1NJWkVFPC90ZD4KICAgIDx0ZD48aW1nIHNyYz0iaW1hZ2VzL0ltYWdlX2N1cnNvcl9FLmdpZiIgaGVpZ2h0PSIzMiIgd2lkdGg9IjMyIj48L3RkPgogICAgPHRkPkNVUlNPUl9TSVpFTlc8L3RkPgogICAgPHRkPjxpbWcgc3JjPSJpbWFnZXMvSW1hZ2VfY3Vyc29yX05XLmdpZiIgaGVpZ2h0PSIzMiIgd2lkdGg9IjMyIj48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPkNVUlNPUl9IRUxQPC90ZD4KICAgIDx0ZD48aW1nIHNyYz0iaW1hZ2VzL0ltYWdlX2N1cnNvcl9oZWxwLmdpZiIgaGVpZ2h0PSIzMSIgd2lkdGg9IjMyIj48L3RkPgogICAgPHRkPkNVUlNPUl9TSVpFTjwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZV9jdXJzb3JfTi5naWYiIGhlaWdodD0iMzIiIHdpZHRoPSIzMiI+PC90ZD4KICAgIDx0ZD5DVVJTT1JfU0laRVNOV1NFPC90ZD4KICAgIDx0ZD48aW1nIHNyYz0iaW1hZ2VzL0ltYWdlX2N1cnNvcl9OVy5naWYiIGhlaWdodD0iMzIiIHdpZHRoPSIzMiI+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5DVVJTT1JfU0laRVM8L3RkPgogICAgPHRkPjxpbWcgc3JjPSJpbWFnZXMvSW1hZ2VfY3Vyc29yX1MuZ2lmIiBoZWlnaHQ9IjMyIiB3aWR0aD0iMzIiPjwvdGQ+CiAgICA8dGQ+Q1VSU09SX1NJWkVTRTwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZV9jdXJzb3JfU0UuZ2lmIiBoZWlnaHQ9IjMyIiB3aWR0aD0iMzIiPjwvdGQ+CiAgICA8dGQ+Q1VSU09SX1NJWkVTVzwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZV9jdXJzb3JfU1cuZ2lmIiBoZWlnaHQ9IjMyIiB3aWR0aD0iMzMiPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Q1VSU09SX1NJWkVXRTwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZV9jdXJzb3JfVy5naWYiIGhlaWdodD0iMzIiIHdpZHRoPSIzMiI+PC90ZD4KICAgIDx0ZD5DVVJTT1JfVVBBUlJPVzwvdGQ+CiAgICA8dGQ+PGltZyBzcmM9ImltYWdlcy9JbWFnZWN1cnNvcl91cGFycm93LmdpZiIgaGVpZ2h0PSI0MCIgd2lkdGg9IjQwIj48L3RkPgogICAgPHRkPkNVUlNPUl9XQUlUPC90ZD4KICAgIDx0ZD48aW1nIHNyYz0iaW1hZ2VzL0ltYWdlX2N1cnNvcl9idXN5LmdpZiIgaGVpZ2h0PSIzMiIgd2lkdGg9IjMyIj48L3RkPgogIDwvdHI+CjwvdGFibGU+CjxwPkV2ZXJ5IENvbnRyb2wgY2FuIGhhdmUgYSBjdXJzb3IgYXNzb2NpYXRlZCB3aXRoIGl0LCBhbmQgd2hlbiB0aGUgbW91c2UKcG9pbnRlciBtb3ZlcyBvdmVyIHRoZSBjb250cm9sIGl0IGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCBjdXJzb3IuJm5ic3A7CkNoYW5naW5nIGEgY3Vyc29yIGFsc28gYWZmZWN0cyBhbnkgY2hpbGQgY29udHJvbHMsIHNvIGlmIHlvdSB1cGRhdGUgdGhlIGN1cnNvcgpvbiBhIFNoZWxsIHRoaXMgYWZmZWN0cyB0aGUgbW91c2UgcG9pbnRlciBmb3IgYW55d2hlcmUgb24gdGhlIHNoZWxsLCBhbHRob3VnaCBpZgp0aGUgY2hpbGQgY29udHJvbCBpdHNlbGYgaGFzIGFuIGV4cGxpY2l0IGN1cnNvciwgb3IgdXNlcyBpdHMgb3duIGN1cnNvciBzdWNoIGFzCmFuIEkgYmVhbiBmb3IgVGV4dCBvciBDb21ibywgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIHBhcmVudCdzIGRlZmluZWQKY3Vyc29yLiBUaGUgZm9sbG93aW5nIGNvZGUgaWxsdXN0cmF0ZXMgdGhpcywgYnkgY2hhbmdpbmcgdGhlIHNoZWxsJ3MgY3Vyc29yIHRvCmJlIGhhbmQgY3Vyc29yLCBhbmQgdGhlIGxpc3QncyBjdXJzb3IgdG8gYSBjcm9zcy4gV2hlbiB0aGUgbW91c2UgaXMgb3ZlciB0aGUKc2hlbGwgKG9yIGl0cyBjaGlsZEJ1dHRvbiB0aGF0IGhhcyBubyBleHBsaWNpdCBjdXJzb3IpIGl0IGlzIGEgaGFuZCwgYW5kIHdoZW4gaXQKaXMgb3ZlciB0aGUgbGlzdCBpdCBpcyBhIGNyb3NzLgo8cD48dHQ+TGlzdCBsaXN0ID0gbmV3IExpc3Qoc2hlbGwsU1dULkJPUkRFUik7PC90dD48YnI+Cjx0dD5CdXR0b24gYnV0dG9uID0gbmV3IEJ1dHRvbihzaGVsbCxTV1QuTk9ORSk7PC90dD48YnI+Cjx0dD5idXR0b24uc2V0VGV4dCgmcXVvdDtCdXR0b24mcXVvdDspOzwvdHQ+PGJyPgo8dHQ+Q3Vyc29yIGhhbmRDdXJzb3IgPSBuZXcgQ3Vyc29yKGRpc3BsYXksU1dULkNVUlNPUl9IQU5EKTs8L3R0Pjxicj4KPHR0PnNoZWxsLnNldEN1cnNvcihoYW5kQ3Vyc29yKTs8L3R0Pjxicj4KPHR0PkN1cnNvciBjcm9zc0N1cnNvciA9IG5ldyBDdXJzb3IoZGlzcGxheSxTV1QuQ1VSU09SX0NST1NTKTs8L3R0Pjxicj4KPHR0Pmxpc3Quc2V0Q3Vyc29yKGNyb3NzQ3Vyc29yKTs8L3R0Pgo8cD48aW1nIHNyYz0iaW1hZ2VzL1NoZWxsQ3Vyc29ycy5naWYiIGhlaWdodD0iMTEwIiB3aWR0aD0iNTQ4Ij4KPHA+Q3Vyc29ycyB1c2UgdW5kZXJseWluZyBuYXRpdmUgcmVzb3VyY2VzIGFuZCBzaG91bGQgYmUgZGlzcG9zZWQgd2hlbiB0aGV5IGFyZQpubyBsb25nZXIgcmVxdWlyZWQuIEluIHRoZSBhYm92ZSBjb2RlIHRoaXMgd291bGQgYmUgd2hlbiB0aGUgc2hlbGwgaGFzIGJlZW4KZGlzcG9zZWQgYW5kIHRoZXJlIGFyZSBubyByZW1haW5pbmcgY29udHJvbHMgdXNpbmcgZWl0aGVyIHRoZSBoYW5kQ3Vyc29yIG9yCmNyb3NzQ3Vyc29yIGZpZWxkcy4KPGgyPjxhIG5hbWU9IkN1c3RvbSBjdXJzb3JzIj48L2E+Q3VzdG9tIGN1cnNvcnM8L2gyPgpBcyB3ZWxsIGFzIHVzaW5nIGEgcHJlLWRlZmluZWQgc3R5bGUsIGEgY3Vyc29yIGNhbiBiZSBjcmVhdGVkIGZyb20gaW1hZ2VzJm5ic3A7CnVzaW5nIHRoZSBjb25zdHJ1Y3RvciA8dHQ+Q3Vyc29yKERldmljZSBkZXZpY2UsIEltYWdlRGF0YSBzb3VyY2UsIEltYWdlRGF0YQptYXNrLCBpbnQgaG90c3BvdHgsIGludCBob3RzcG90eSkuIDwvdHQ+VGhlIHNvdXJjZSBpbWFnZWRhdGEgYXJndW1lbnQgaXMgdGhlCmdyYXBoaWMgZm9yIHRoZSBjdXJzb3Igc2hhcGUsIGFuZCB0aGUgbWFzayBpcyB1c2VkIHRvIHNwZWNpZnkgdHJhbnNwYXJlbmN5LiBUaGUKZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRvIGNyZWF0ZSBhIG1vbm9jaHJvbWUgY3VzdG9tIGN1cnNvciwgd2hlcmUgdGhlIHRoZQpzb3VyY2UgYW5kIG1hc2sgaW1hZ2UgZGF0YSBoYXZlIGEgY29sb3IgZGVwdGggb2YgMSBhbmQgaW5kZXhlZCBwYWxldHRlcyB3aXRoIHR3bwpjb2xvcnMuIFRoZSBJbWFnZURhdGGScyBoZWlnaHQgYW5kIHdpZHRoIHNob3VsZCBiZSBubyBsYXJnZXIgdGhhbiAzMiBhbmQgaXQKZG9lcyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBiZSBzcXVhcmUsIGFsdGhvdWdoIHRoZSBtYXNrIGFuZCBzb3VyY2Ugc2hvdWxkIGJlCnRoZSBzYW1lIHNpemUuIFRoZSBob3RzcG90IGlzIHRoZSBwb2ludCBvbiB0aGUgY3Vyc29yIHRoYXQgcmVwcmVzZW50cyB0aGUKcHJlY2lzZSBsb2NhdGlvbiBvZiB0aGUgbW91c2UgcG9pbnRlci4KPHA+VGhlIHNvdXJjZSBhbmQgbWFzayBpbWFnZSBkYXRhIHBpeGVscyBhcmUgY29tYmluZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlCmN1cnNvciBwaXhlbCBzaG91bGQgYmUgd2hpdGUsIGJsYWNrIG9yIHRyYW5zcGFyZW50Ljxicj4KJm5ic3A7Cjx0YWJsZSBib3JkZXI9IjEiPgogIDx0cj4KICAgIDx0ZD5JbWFnZTwvdGQ+CiAgICA8dGQ+TWFzazwvdGQ+CiAgICA8dGQ+Q3Vyc29yIGNvbG9yPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD4xPC90ZD4KICAgIDx0ZD4wPC90ZD4KICAgIDx0ZD5UcmFuc3BhcmVudDwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+MDwvdGQ+CiAgICA8dGQ+MDwvdGQ+CiAgICA8dGQ+QmxhY2s8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjE8L3RkPgogICAgPHRkPjE8L3RkPgogICAgPHRkPkJsYWNrPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD4wPC90ZD4KICAgIDx0ZD4xPC90ZD4KICAgIDx0ZD5XaGl0ZTwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHA+VGhlIEltYWdlRGF0YSBjYW4gYmUgbG9hZGVkIGZyb20gZmlsZXMsIGFuZCBFY2xpcHNlIGl0c2VsZiBkb2VzIHRoaXMgZm9yIHNvbWUKb2YgaXRzIGRyYWcgYW5kIGRyb3AgY3Vyc29ycyBkZWZpbmVkIGluIDx0dD5vcmcuZWNsaXBzZS51aS9pY29ucy9mdWxsL2RuZC4gPC90dD5Zb3UKY2FuIGFsc28gZGlyZWN0bHkgY3JlYXRlIGFuZCBtYW5pcHVsYXRlIHRoZSBpbWFnZSBkYXRhIHdpdGhpbiB5b3VyIHByb2dyYW0uIFRoZQpjb2RlIHNhbXBsZSBiZWxvdyBjcmVhdGVzIGFuIGluZGV4ZWQgcGFsZXR0ZSB3aXRoIHR3byBjb2xvcnMuIFRoZSBzb3VyY2UgYW5kCm1hc2sgSW1hZ2VEYXRhIGFyZSAzMiBieSAzMiB3aXRoIGEgY29sb3IgZGVwdGggb2YgMS4gVGhlIGludFtdIGZvciB0aGUgc291cmNlCmFuZCBtYXNrIGRlZmluZSBhbiB1cCBhcnJvdywgdGhlIDBzIGZvciB0aGUgc291cmNlIGFuZCAxcyBmb3IgdGhlIG1hc2sgYXJlIHNob3duCmluIGJvbGQgdG8gc2hvdyBob3cgdGhlIGFycm93IGlzIGRlZmluZWQgd2l0aCB0aGUgYXJyYXlzLiAwIGFuZCAxIG1ha2VzIHdoaXRlCndoaWNoIGlzIHRoZSBjZW50ZXIgb2YgdGhlIGFycm93LCAxIGFuZCAxIGlzIGJsYWNrIGZvciB0aGUgZWRnZSBvZiB0aGUgYXJyb3csCmFuZCAxIGFuZCAwIHRyYW5zcGFyZW50IGZvciB0aGUgcmVtYWluZGVyLiBUaGUgdGlwIG9mIHRoZSBhcnJvdyBpcyAxNiwzIHNvIHRoaXMKaXMgbWFkZSB0aGUgY3Vyc29yIGhvdHNwb3Qgd2hlbiBpdCBpcyBjcmVhdGVkLgo8cD48dHQ+UGFsZXR0ZURhdGEgcGFsZXR0ZURhdGEgPSBuZXcgUGFsZXR0ZURhdGEobmV3IFJHQltdIHs8L3R0Pjxicj4KPHR0PiZuYnNwO25ldyBSR0IoMCwwLDApICwgbmV3IFJHQigyNTUsMjU1LDI1NSk8L3R0Pjxicj4KPHR0Pn0pOzwvdHQ+PGJyPgo8dHQ+SW1hZ2VEYXRhIHNvdXJjZURhdGEgPSBuZXcgSW1hZ2VEYXRhKDMyLDMyLDEscGFsZXR0ZURhdGEpOzwvdHQ+PGJyPgo8dHQ+SW1hZ2VEYXRhIG1hc2tEYXRhID0gbmV3IEltYWdlRGF0YSgzMiwzMiwxLHBhbGV0dGVEYXRhKTs8L3R0Pgo8cD48dHQ+aW50W10gY3Vyc29yU291cmNlID0gbmV3IGludFtdIHs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwoxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjAsMCwwPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjAsMCwwLDAsMDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wLDAsMDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPGI+MDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPGI+MDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPGI+MDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPGI+MDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPGI+MDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPGI+MDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPGI+MDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPGI+MDwvYj4sMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSw8Yj4wPC9iPiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDxiPjA8L2I+LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSB9OzwvdHQ+CjxwPjx0dD5pbnRbXSBjdXJzb3JNYXNrID0gbmV3IGludFtdIHs8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwowLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDEsMSwxLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDxiPjEsMSwxPC9iPiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8L3R0Pjxicj4KPHR0PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPGI+MSwxLDE8L2I+LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDwvdHQ+PGJyPgo8dHQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw8Yj4xLDEsMTwvYj4sMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsPC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLCB9OzwvdHQ+CjxwPjx0dD5zb3VyY2VEYXRhLnNldFBpeGVscygwLDAsMTAyNCxjdXJzb3JTb3VyY2UsMCk7PC90dD48YnI+Cjx0dD5tYXNrRGF0YS5zZXRQaXhlbHMoMCwwLDEwMjQsY3Vyc29yTWFzaywwKTs8L3R0Pjxicj4KPHR0PkN1cnNvciBjdXJzb3IgPSBuZXcgQ3Vyc29yKGRpc3BsYXksc291cmNlRGF0YSxtYXNrRGF0YSwxNiwzKTs8L3R0Pjxicj4KPHR0PnNoZWxsLnNldEN1cnNvcihjdXJzb3IpOzwvdHQ+CjxwPjxpbWcgc3JjPSJpbWFnZXMvQ3VzdG9tQ3Vyc29yLmdpZiIgaGVpZ2h0PSIxMDciIHdpZHRoPSIxNTciPgo8cD5UbyBrZWVwIHRoZSBjb2RlIGxpc3RpbmdzIG5hcnJvdyB0aGUgYWJvdmUgc2FtcGxlIHVzZWQgYW4gPGNvZGU+aW50W108L2NvZGU+CnRvIGRlZmluZSB0aGUgc291cmNlIGFuZCBtYXNrIGltYWdlRGF0YS4gQSBieXRlIHVzZXMgbGVzcyBtZW1vcnkgdGhhbiBhbgp1bnNpZ25lZCBpbnQsIHNvIHdoZW4gY3JlYXRpbmcgY3VzdG9tIGN1cnNvcnMgaXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gdXNlIGEKYnl0ZVtdIGluc3RlYWQsIHN1Y2ggYXM6CjxwPjx0dD5ieXRlW10gY3Vyc29yU291cmNlID0gbmV3IGJ5dGVbXSB7PC90dD48YnI+Cjx0dD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKGJ5dGUpMHgwMCwgKGJ5dGUpMHgwMCwgKGJ5dGUpMHgwMSwgKGJ5dGUpMHgwMSwKKGJ5dGUpMHgwMCwgLy8gZXRjLi4uPC90dD4KPHA+Q3VzdG9tIGN1cnNvcnMgbmVlZCB0byBiZSBkaXNwb3NlZCBpbiBqdXN0IHRoZSBzYW1lIHdheSBhcyBwcmUtZGVmaW5lZCBzeXN0ZW0KY3Vyc29ycywgc28gd2hlbiB0aGVyZSBpcyBubyByZW1haW5pbmcgY29udHJvbCB1c2luZyB0aGUgY3Vyc29yIGlzIG11c3QgYmUgc2VuZAp0aGUgbWV0aG9kIDx0dD5kaXNwb3NlKCk8L3R0PiB0byBmcmVlIHVwIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSByZXNvdXJjZS4KPHA+QWx0aG91Z2ggdGhlIGFib3ZlIGV4YW1wbGUgaXMgZm9yIGEgbW9ub2Nocm9tZSBjdXJzb3IsIEVjbGlwc2UgMy4wIHN1cHBvcnRzIAogIGNvbG9yIGN1cnNvcnMgb24gcGxhdGZvcm1zIHRoYXQgYWxsb3cgaXQgKHN1Y2ggYXMgV2luZG93cykuIFR3byBTV1QgY29kZSBzbmlwcGV0cyAKICBzaG93aW5nIGhvdyB0byBkbyB0aGlzIGFyZSBoZXJlOiA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvaW5kZXguY2dpL35jaGVja291dH4vcGxhdGZvcm0tc3d0LWhvbWUvc25pcHBpdHMvc25pcHBldDExOC5odG1sIj5zbmlwcGV0IAogIDE8L2E+LCA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvaW5kZXguY2dpL35jaGVja291dH4vcGxhdGZvcm0tc3d0LWhvbWUvc25pcHBpdHMvc25pcHBldDExOS5odG1sIj5zbmlwcGV0IAogIDI8L2E+LiAKPGgxPjxhIG5hbWU9IkNvbmNsdXNpb24iPjwvYT5Db25jbHVzaW9uPC9oMT4KVGhpcyBhcnRpY2xlIGhhcyBzaG93ZWQgaG93IHRvIGNyZWF0ZSBhbmQgbWFuaXB1bGF0ZSBTV1QgaW1hZ2VzLgpVbmRlcmx5aW5nIGVhY2ggSW1hZ2UgaXMgaXRzIEltYWdlRGF0YSB0aGF0IHJlY29yZHMgdGhlIHBpeGVsIHZhbHVlIGZvciBlYWNoCmNvb3JkaW5hdGUsIGFuZCB0aGUgcGFsZXR0ZSB0aGF0IG1hcHMgdGhpcyB0byBhIHNwZWNpZmljIGNvbG9yLiBCeSB1bmRlcnN0YW5kaW5nCkltYWdlRGF0YSBpdCBpcyBwb3NzaWJsZSB0byBhY2hpZXZlIGVmZmVjdHMgc3VjaCBhcyB0cmFuc3BhcmVuY3ksIGFscGhhCmJsZW5kaW5nLCBhbmltYXRpb24sIGFzIHdlbGwgYXMgY3VzdG9taXplZCBjdXJzb3JzLgo8cD48Zm9udCBzaXplPSItMSI+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhbmQgbG9nb3MgYXJlIHRyYWRlbWFya3MKb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyCmNvdW50cmllcywgb3IgYm90aC48L2ZvbnQ+CjxwPjxmb250IHNpemU9Ii0xIj5XaW5kb3dzIGlzIGEgdHJhZGVtYXJrIG9mIE1pY3Jvc29mdCBjb3Jwb3JhdGlvbiBpbiB0aGUgVW5pdGVkClN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLjwvZm9udD4KPHA+PGZvbnQgc2l6ZT0iLTEiPk90aGVyIGNvbXBhbnksIHByb2R1Y3QsIGFuZCBzZXJ2aWNlIG5hbWVzIG1heSBiZSB0cmFkZW1hcmtzIG9yCnNlcnZpY2UgbWFya3Mgb2Ygb3RoZXJzLjwvZm9udD4KPC9ib2R5PgoKPC9odG1sPgo=