bw0NCgAAAAClNI1jcYoAAOMAAAAAAAAAAAAAAAAAAAAACgAAAEAAAABzAgEAAGQAWgBkAWQCbAFaAWQBZAJsAloCZAFkAmwDWgNkAWQCbARaAmQBZANsBW0GWgYBAGQBZARsB20IWggBAGQBZAVsCW0KWgptC1oLbQxaDAEAZAFkBmwNbQ5aDm0PWg9tEFoQAQB6BmQBZAJsEVoRVwBuCwQAZRJ5QwEAAQABAGQCWhFZAG4BdwBkB2cBWhNlFGQIgwFkCWUUZAqDAWQLZRRkDIMBZA1lFGQOgwFkD2UUZBCDAWQRaQVaFWUVZgFkEmQThAFaFmQUZBWEAFoXZBZkF4QAWhhkGFoZZBllGRcAZBoXAFoaZBtaG2QcWhxHAGQdZAeEAGQHZQiDA1odZAJTACkees8KICAgIHB5Z21lbnRzLmZvcm1hdHRlcnMuaHRtbAogICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgogICAgRm9ybWF0dGVyIGZvciBIVE1MIG91dHB1dC4KCiAgICA6Y29weXJpZ2h0OiBDb3B5cmlnaHQgMjAwNi0yMDIyIGJ5IHRoZSBQeWdtZW50cyB0ZWFtLCBzZWUgQVVUSE9SUy4KICAgIDpsaWNlbnNlOiBCU0QsIHNlZSBMSUNFTlNFIGZvciBkZXRhaWxzLgrpAAAAAE4pAdoIU3RyaW5nSU8pAdoJRm9ybWF0dGVyKQPaBVRva2Vu2gRUZXh02g5TVEFOREFSRF9UWVBFUykD2gxnZXRfYm9vbF9vcHTaC2dldF9pbnRfb3B02gxnZXRfbGlzdF9vcHTaDUh0bWxGb3JtYXR0ZXL6ASZ6BSZhbXA7+gE8egQmbHQ7+gE+egQmZ3Q7+gEiegYmcXVvdDv6ASd6BSYjMzk7YwIAAAAAAAAAAAAAAAIAAAADAAAAQwAAAHMKAAAAfACgAHwBoQFTACkBejxFc2NhcGUgJiwgPCwgPiBhcyB3ZWxsIGFzIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlcyBmb3IgSFRNTC4pAdoJdHJhbnNsYXRlKQLaBHRleHTaBXRhYmxlqQByEwAAAPpvL3Jvb3QvZ2YxODAtZGVtby9jYXJhdmVsX3VzZXJfcHJvamVjdC92ZW52L2xpYi9weXRob24zLjEwL3NpdGUtcGFja2FnZXMvcGlwL192ZW5kb3IvcHlnbWVudHMvZm9ybWF0dGVycy9odG1sLnB52gtlc2NhcGVfaHRtbCYAAABzAgAAAAoCchUAAABjAQAAAAAAAAAAAAAAAQAAAAMAAABDAAAAcyAAAAB8AKAAZAGhAXMKfACgAGQCoQFyDHwAUwBkA3wAFwBTACkETtoEY2FsY9oDdmFy+gEjKQHaCnN0YXJ0c3dpdGgpAdoFY29sb3JyEwAAAHITAAAAchQAAADaBndlYmlmeSsAAABzBgAAABQBBAEIAnIbAAAAYwEAAAAAAAAAAAAAAAMAAAADAAAAQwAAAHNOAAAAdACgAXwAoQF9AXwBcgl8AVMAZAF9AnwBZAB1AHIjZAJ8AGQDGQAXAHwCFwB9AnwAagJ9AHQAoAF8AKEBfQF8AWQAdQBzD3wBfAIXAFMAKQRO2gD6AS3p/////ykDcgYAAADaA2dldNoGcGFyZW50KQPaBXR0eXBl2gVmbmFtZdoFYW5hbWVyEwAAAHITAAAAchQAAADaEF9nZXRfdHR5cGVfY2xhc3MyAAAAcxQAAAAKAQQBBAEEAQgBEAEGAQoBCP0IBHIkAAAAeqUvKgpnZW5lcmF0ZWQgYnkgUHlnbWVudHMgPGh0dHBzOi8vcHlnbWVudHMub3JnLz4KQ29weXJpZ2h0IDIwMDYtMjAyMiBieSB0aGUgUHlnbWVudHMgdGVhbS4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBsaWNlbnNlLCBzZWUgTElDRU5TRSBmb3IgZGV0YWlscy4KKi8KJShzdHlsZWRlZnMpcwphiAEAADwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgo8IS0tCmdlbmVyYXRlZCBieSBQeWdtZW50cyA8aHR0cHM6Ly9weWdtZW50cy5vcmcvPgpDb3B5cmlnaHQgMjAwNi0yMDIyIGJ5IHRoZSBQeWdtZW50cyB0ZWFtLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIGxpY2Vuc2UsIHNlZSBMSUNFTlNFIGZvciBkZXRhaWxzLgotLT4KPGh0bWw+CjxoZWFkPgogIDx0aXRsZT4lKHRpdGxlKXM8L3RpdGxlPgogIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PSUoZW5jb2RpbmcpcyI+CiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4Kei8KICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8aDI+JSh0aXRsZSlzPC9oMj4KCmE1AQAAPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgogICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cgo8aHRtbD4KPGhlYWQ+CiAgPHRpdGxlPiUodGl0bGUpczwvdGl0bGU+CiAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JShlbmNvZGluZylzIj4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IiUoY3NzZmlsZSlzIiB0eXBlPSJ0ZXh0L2NzcyI+CjwvaGVhZD4KPGJvZHk+CjxoMj4lKHRpdGxlKXM8L2gyPgoKehA8L2JvZHk+CjwvaHRtbD4KYwAAAAAAAAAAAAAAAAAAAAADAAAAQAAAAHMgAQAAZQBaAWQAWgJkAVoDZAJaBGQDZwFaBWQEZAVnAloGZAZkB4QAWgdkCGQJhABaCGQKZAuEAFoJZAxkDYQAWgpkDmQPhABaC2RBZBFkEoQBWgxkQWQTZBSEAVoNZEFkFWQWhAFaDmQXZBiEAFoPZBlkGoQAWhBlEWQbZByEAIMBWhJlEWQdZB6EAIMBWhNlEWQfZCCEAIMBWhRkIWQihABaFWQjZCSEAFoWZCVkJoQAWhdkJ2QohABaGGQpZCqEAFoZZCtkLIQAWhpkLWQuhABaG2QvZDCEAFocZDFkMoQAWh1lHmofZDNkNI0BZDVkNoQAgwFaIGQ3ZDiEAFohZDlkOoQAWiJkO2Q8hABaI2Q9ZD6EAFokZD9kQIQAWiVkEFMAKUJyCgAAAGFaLAAACiAgICBGb3JtYXQgdG9rZW5zIGFzIEhUTUwgNCBgYDxzcGFuPmBgIHRhZ3Mgd2l0aGluIGEgYGA8cHJlPmBgIHRhZywgd3JhcHBlZAogICAgaW4gYSBgYDxkaXY+YGAgdGFnLiBUaGUgYGA8ZGl2PmBgJ3MgQ1NTIGNsYXNzIGNhbiBiZSBzZXQgYnkgdGhlIGBjc3NjbGFzc2AKICAgIG9wdGlvbi4KCiAgICBJZiB0aGUgYGxpbmVub3NgIG9wdGlvbiBpcyBzZXQgdG8gYGAidGFibGUiYGAsIHRoZSBgYDxwcmU+YGAgaXMKICAgIGFkZGl0aW9uYWxseSB3cmFwcGVkIGluc2lkZSBhIGBgPHRhYmxlPmBgIHdoaWNoIGhhcyBvbmUgcm93IGFuZCB0d28KICAgIGNlbGxzOiBvbmUgY29udGFpbmluZyB0aGUgbGluZSBudW1iZXJzIGFuZCBvbmUgY29udGFpbmluZyB0aGUgY29kZS4KICAgIEV4YW1wbGU6CgogICAgLi4gc291cmNlY29kZTo6IGh0bWwKCiAgICAgICAgPGRpdiBjbGFzcz0iaGlnaGxpZ2h0IiA+CiAgICAgICAgPHRhYmxlPjx0cj4KICAgICAgICAgIDx0ZCBjbGFzcz0ibGluZW5vcyIgdGl0bGU9ImNsaWNrIHRvIHRvZ2dsZSIKICAgICAgICAgICAgb25jbGljaz0id2l0aCAodGhpcy5maXJzdENoaWxkLnN0eWxlKQogICAgICAgICAgICAgICAgICAgICB7IGRpc3BsYXkgPSAoZGlzcGxheSA9PSAnJykgPyAnbm9uZScgOiAnJyB9Ij4KICAgICAgICAgICAgPHByZT4xCiAgICAgICAgICAgIDI8L3ByZT4KICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPgogICAgICAgICAgICA8cHJlPjxzcGFuIGNsYXNzPSJLZSI+ZGVmIDwvc3Bhbj48c3BhbiBjbGFzcz0iTmFGdSI+Zm9vPC9zcGFuPihiYXIpOgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZSI+cGFzczwvc3Bhbj4KICAgICAgICAgICAgPC9wcmU+CiAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+PC90YWJsZT48L2Rpdj4KCiAgICAod2hpdGVzcGFjZSBhZGRlZCB0byBpbXByb3ZlIGNsYXJpdHkpLgoKICAgIFdyYXBwaW5nIGNhbiBiZSBkaXNhYmxlZCB1c2luZyB0aGUgYG5vd3JhcGAgb3B0aW9uLgoKICAgIEEgbGlzdCBvZiBsaW5lcyBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHRoZSBgaGxfbGluZXNgIG9wdGlvbiB0byBtYWtlIHRoZXNlCiAgICBsaW5lcyBoaWdobGlnaHRlZCAoYXMgb2YgUHlnbWVudHMgMC4xMSkuCgogICAgV2l0aCB0aGUgYGZ1bGxgIG9wdGlvbiwgYSBjb21wbGV0ZSBIVE1MIDQgZG9jdW1lbnQgaXMgb3V0cHV0LCBpbmNsdWRpbmcKICAgIHRoZSBzdHlsZSBkZWZpbml0aW9ucyBpbnNpZGUgYSBgYDxzdHlsZT5gYCB0YWcsIG9yIGluIGEgc2VwYXJhdGUgZmlsZSBpZgogICAgdGhlIGBjc3NmaWxlYCBvcHRpb24gaXMgZ2l2ZW4uCgogICAgV2hlbiBgdGFnc2ZpbGVgIGlzIHNldCB0byB0aGUgcGF0aCBvZiBhIGN0YWdzIGluZGV4IGZpbGUsIGl0IGlzIHVzZWQgdG8KICAgIGdlbmVyYXRlIGh5cGVybGlua3MgZnJvbSBuYW1lcyB0byB0aGVpciBkZWZpbml0aW9uLiAgWW91IG11c3QgZW5hYmxlCiAgICBgbGluZWFuY2hvcnNgIGFuZCBydW4gY3RhZ3Mgd2l0aCB0aGUgYC1uYCBvcHRpb24gZm9yIHRoaXMgdG8gd29yay4gIFRoZQogICAgYHB5dGhvbi1jdGFnc2AgbW9kdWxlIGZyb20gUHlQSSBtdXN0IGJlIGluc3RhbGxlZCB0byB1c2UgdGhpcyBmZWF0dXJlOwogICAgb3RoZXJ3aXNlIGEgYFJ1bnRpbWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCgogICAgVGhlIGBnZXRfc3R5bGVfZGVmcyhhcmc9JycpYCBtZXRob2Qgb2YgYSBgSHRtbEZvcm1hdHRlcmAgcmV0dXJucyBhIHN0cmluZwogICAgY29udGFpbmluZyBDU1MgcnVsZXMgZm9yIHRoZSBDU1MgY2xhc3NlcyB1c2VkIGJ5IHRoZSBmb3JtYXR0ZXIuIFRoZQogICAgYXJndW1lbnQgYGFyZ2AgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIENTUyBzZWxlY3RvcnMgdGhhdAogICAgYXJlIHByZXBlbmRlZCB0byB0aGUgY2xhc3Nlcy4gQSBjYWxsIGBmbXRlci5nZXRfc3R5bGVfZGVmcygndGQgLmNvZGUnKWAKICAgIHdvdWxkIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIENTUyBjbGFzc2VzOgoKICAgIC4uIHNvdXJjZWNvZGU6OiBjc3MKCiAgICAgICAgdGQgLmNvZGUgLmt3IHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjMDBGRjAwIH0KICAgICAgICB0ZCAuY29kZSAuY20geyBjb2xvcjogIzk5OTk5OSB9CiAgICAgICAgLi4uCgogICAgSWYgeW91IGhhdmUgUHlnbWVudHMgMC42IG9yIGhpZ2hlciwgeW91IGNhbiBhbHNvIHBhc3MgYSBsaXN0IG9yIHR1cGxlIHRvIHRoZQogICAgYGdldF9zdHlsZV9kZWZzKClgIG1ldGhvZCB0byByZXF1ZXN0IG11bHRpcGxlIHByZWZpeGVzIGZvciB0aGUgdG9rZW5zOgoKICAgIC4uIHNvdXJjZWNvZGU6OiBweXRob24KCiAgICAgICAgZm9ybWF0dGVyLmdldF9zdHlsZV9kZWZzKFsnZGl2LnN5bnRheCBwcmUnLCAncHJlLnN5bnRheCddKQoKICAgIFRoZSBvdXRwdXQgd291bGQgdGhlbiBsb29rIGxpa2UgdGhpczoKCiAgICAuLiBzb3VyY2Vjb2RlOjogY3NzCgogICAgICAgIGRpdi5zeW50YXggcHJlIC5rdywKICAgICAgICBwcmUuc3ludGF4IC5rdyB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogIzAwRkYwMCB9CiAgICAgICAgZGl2LnN5bnRheCBwcmUgLmNtLAogICAgICAgIHByZS5zeW50YXggLmNtIHsgY29sb3I6ICM5OTk5OTkgfQogICAgICAgIC4uLgoKICAgIEFkZGl0aW9uYWwgb3B0aW9ucyBhY2NlcHRlZDoKCiAgICBgbm93cmFwYAogICAgICAgIElmIHNldCB0byBgYFRydWVgYCwgZG9uJ3Qgd3JhcCB0aGUgdG9rZW5zIGF0IGFsbCwgbm90IGV2ZW4gaW5zaWRlIGEgYGA8cHJlPmBgCiAgICAgICAgdGFnLiBUaGlzIGRpc2FibGVzIG1vc3Qgb3RoZXIgb3B0aW9ucyAoZGVmYXVsdDogYGBGYWxzZWBgKS4KCiAgICBgZnVsbGAKICAgICAgICBUZWxscyB0aGUgZm9ybWF0dGVyIHRvIG91dHB1dCBhICJmdWxsIiBkb2N1bWVudCwgaS5lLiBhIGNvbXBsZXRlCiAgICAgICAgc2VsZi1jb250YWluZWQgZG9jdW1lbnQgKGRlZmF1bHQ6IGBgRmFsc2VgYCkuCgogICAgYHRpdGxlYAogICAgICAgIElmIGBmdWxsYCBpcyB0cnVlLCB0aGUgdGl0bGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBjYXB0aW9uIHRoZQogICAgICAgIGRvY3VtZW50IChkZWZhdWx0OiBgYCcnYGApLgoKICAgIGBzdHlsZWAKICAgICAgICBUaGUgc3R5bGUgdG8gdXNlLCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBTdHlsZSBzdWJjbGFzcyAoZGVmYXVsdDoKICAgICAgICBgYCdkZWZhdWx0J2BgKS4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBpZiB0aGUgYGNzc2ZpbGVgCiAgICAgICAgYW5kIGBub2Nsb2JiZXJfY3NzZmlsZWAgb3B0aW9uIGFyZSBnaXZlbiBhbmQgdGhlIGZpbGUgc3BlY2lmaWVkIGluCiAgICAgICAgYGNzc2ZpbGVgIGV4aXN0cy4KCiAgICBgbm9jbGFzc2VzYAogICAgICAgIElmIHNldCB0byB0cnVlLCB0b2tlbiBgYDxzcGFuPmBgIHRhZ3MgKGFzIHdlbGwgYXMgbGluZSBudW1iZXIgZWxlbWVudHMpCiAgICAgICAgd2lsbCBub3QgdXNlIENTUyBjbGFzc2VzLCBidXQgaW5saW5lIHN0eWxlcy4gVGhpcyBpcyBub3QgcmVjb21tZW5kZWQKICAgICAgICBmb3IgbGFyZ2VyIHBpZWNlcyBvZiBjb2RlIHNpbmNlIGl0IGluY3JlYXNlcyBvdXRwdXQgc2l6ZSBieSBxdWl0ZSBhIGJpdAogICAgICAgIChkZWZhdWx0OiBgYEZhbHNlYGApLgoKICAgIGBjbGFzc3ByZWZpeGAKICAgICAgICBTaW5jZSB0aGUgdG9rZW4gdHlwZXMgdXNlIHJlbGF0aXZlbHkgc2hvcnQgY2xhc3MgbmFtZXMsIHRoZXkgbWF5IGNsYXNoCiAgICAgICAgd2l0aCBzb21lIG9mIHlvdXIgb3duIGNsYXNzIG5hbWVzLiBJbiB0aGlzIGNhc2UgeW91IGNhbiB1c2UgdGhlCiAgICAgICAgYGNsYXNzcHJlZml4YCBvcHRpb24gdG8gZ2l2ZSBhIHN0cmluZyB0byBwcmVwZW5kIHRvIGFsbCBQeWdtZW50cy1nZW5lcmF0ZWQKICAgICAgICBDU1MgY2xhc3MgbmFtZXMgZm9yIHRva2VuIHR5cGVzLgogICAgICAgIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBhbHNvIGFmZmVjdHMgdGhlIG91dHB1dCBvZiBgZ2V0X3N0eWxlX2RlZnMoKWAuCgogICAgYGNzc2NsYXNzYAogICAgICAgIENTUyBjbGFzcyBmb3IgdGhlIHdyYXBwaW5nIGBgPGRpdj5gYCB0YWcgKGRlZmF1bHQ6IGBgJ2hpZ2hsaWdodCdgYCkuCiAgICAgICAgSWYgeW91IHNldCB0aGlzIG9wdGlvbiwgdGhlIGRlZmF1bHQgc2VsZWN0b3IgZm9yIGBnZXRfc3R5bGVfZGVmcygpYAogICAgICAgIHdpbGwgYmUgdGhpcyBjbGFzcy4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC45CiAgICAgICAgICAgSWYgeW91IHNlbGVjdCB0aGUgYGAndGFibGUnYGAgbGluZSBudW1iZXJzLCB0aGUgd3JhcHBpbmcgdGFibGUgd2lsbAogICAgICAgICAgIGhhdmUgYSBDU1MgY2xhc3Mgb2YgdGhpcyBzdHJpbmcgcGx1cyBgYCd0YWJsZSdgYCwgdGhlIGRlZmF1bHQgaXMKICAgICAgICAgICBhY2NvcmRpbmdseSBgYCdoaWdobGlnaHR0YWJsZSdgYC4KCiAgICBgY3Nzc3R5bGVzYAogICAgICAgIElubGluZSBDU1Mgc3R5bGVzIGZvciB0aGUgd3JhcHBpbmcgYGA8ZGl2PmBgIHRhZyAoZGVmYXVsdDogYGAnJ2BgKS4KCiAgICBgcHJlc3R5bGVzYAogICAgICAgIElubGluZSBDU1Mgc3R5bGVzIGZvciB0aGUgYGA8cHJlPmBgIHRhZyAoZGVmYXVsdDogYGAnJ2BgKS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xMQoKICAgIGBjc3NmaWxlYAogICAgICAgIElmIHRoZSBgZnVsbGAgb3B0aW9uIGlzIHRydWUgYW5kIHRoaXMgb3B0aW9uIGlzIGdpdmVuLCBpdCBtdXN0IGJlIHRoZQogICAgICAgIG5hbWUgb2YgYW4gZXh0ZXJuYWwgZmlsZS4gSWYgdGhlIGZpbGVuYW1lIGRvZXMgbm90IGluY2x1ZGUgYW4gYWJzb2x1dGUKICAgICAgICBwYXRoLCB0aGUgZmlsZSdzIHBhdGggd2lsbCBiZSBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBtYWluIG91dHB1dAogICAgICAgIGZpbGUncyBwYXRoLCBpZiB0aGUgbGF0dGVyIGNhbiBiZSBmb3VuZC4gVGhlIHN0eWxlc2hlZXQgaXMgdGhlbiB3cml0dGVuCiAgICAgICAgdG8gdGhpcyBmaWxlIGluc3RlYWQgb2YgdGhlIEhUTUwgZmlsZS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC42CgogICAgYG5vY2xvYmJlcl9jc3NmaWxlYAogICAgICAgIElmIGBjc3NmaWxlYCBpcyBnaXZlbiBhbmQgdGhlIHNwZWNpZmllZCBmaWxlIGV4aXN0cywgdGhlIGNzcyBmaWxlIHdpbGwKICAgICAgICBub3QgYmUgb3ZlcndyaXR0ZW4uIFRoaXMgYWxsb3dzIHRoZSB1c2Ugb2YgdGhlIGBmdWxsYCBvcHRpb24gaW4KICAgICAgICBjb21iaW5hdGlvbiB3aXRoIGEgdXNlciBzcGVjaWZpZWQgY3NzIGZpbGUuIERlZmF1bHQgaXMgYGBGYWxzZWBgLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjEKCiAgICBgbGluZW5vc2AKICAgICAgICBJZiBzZXQgdG8gYGAndGFibGUnYGAsIG91dHB1dCBsaW5lIG51bWJlcnMgYXMgYSB0YWJsZSB3aXRoIHR3byBjZWxscywKICAgICAgICBvbmUgY29udGFpbmluZyB0aGUgbGluZSBudW1iZXJzLCB0aGUgb3RoZXIgdGhlIHdob2xlIGNvZGUuICBUaGlzIGlzCiAgICAgICAgY29weS1hbmQtcGFzdGUtZnJpZW5kbHksIGJ1dCBtYXkgY2F1c2UgYWxpZ25tZW50IHByb2JsZW1zIHdpdGggc29tZQogICAgICAgIGJyb3dzZXJzIG9yIGZvbnRzLiAgSWYgc2V0IHRvIGBgJ2lubGluZSdgYCwgdGhlIGxpbmUgbnVtYmVycyB3aWxsIGJlCiAgICAgICAgaW50ZWdyYXRlZCBpbiB0aGUgYGA8cHJlPmBgIHRhZyB0aGF0IGNvbnRhaW5zIHRoZSBjb2RlICh0aGF0IHNldHRpbmcKICAgICAgICBpcyAqbmV3IGluIFB5Z21lbnRzIDAuOCopLgoKICAgICAgICBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFB5Z21lbnRzIDAuNyBhbmQgZWFybGllciwgZXZlcnkgdHJ1ZSB2YWx1ZQogICAgICAgIGV4Y2VwdCBgYCdpbmxpbmUnYGAgbWVhbnMgdGhlIHNhbWUgYXMgYGAndGFibGUnYGAgKGluIHBhcnRpY3VsYXIsIHRoYXQKICAgICAgICBtZWFucyBhbHNvIGBgVHJ1ZWBgKS4KCiAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGBGYWxzZWBgLCB3aGljaCBtZWFucyBubyBsaW5lIG51bWJlcnMgYXQgYWxsLgoKICAgICAgICAqKk5vdGU6Kiogd2l0aCB0aGUgZGVmYXVsdCAoInRhYmxlIikgbGluZSBudW1iZXIgbWVjaGFuaXNtLCB0aGUgbGluZQogICAgICAgIG51bWJlcnMgYW5kIGNvZGUgY2FuIGhhdmUgZGlmZmVyZW50IGxpbmUgaGVpZ2h0cyBpbiBJbnRlcm5ldCBFeHBsb3JlcgogICAgICAgIHVubGVzcyB5b3UgZ2l2ZSB0aGUgZW5jbG9zaW5nIGBgPHByZT5gYCB0YWdzIGFuIGV4cGxpY2l0IGBgbGluZS1oZWlnaHRgYAogICAgICAgIENTUyBwcm9wZXJ0eSAoeW91IGdldCB0aGUgZGVmYXVsdCBsaW5lIHNwYWNpbmcgd2l0aCBgYGxpbmUtaGVpZ2h0OgogICAgICAgIDEyNSVgYCkuCgogICAgYGhsX2xpbmVzYAogICAgICAgIFNwZWNpZnkgYSBsaXN0IG9mIGxpbmVzIHRvIGJlIGhpZ2hsaWdodGVkLiBUaGUgbGluZSBudW1iZXJzIGFyZSBhbHdheXMKICAgICAgICByZWxhdGl2ZSB0byB0aGUgaW5wdXQgKGkuZS4gdGhlIGZpcnN0IGxpbmUgaXMgbGluZSAxKSBhbmQgYXJlCiAgICAgICAgaW5kZXBlbmRlbnQgb2YgYGxpbmVub3N0YXJ0YC4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xMQoKICAgIGBsaW5lbm9zdGFydGAKICAgICAgICBUaGUgbGluZSBudW1iZXIgZm9yIHRoZSBmaXJzdCBsaW5lIChkZWZhdWx0OiBgYDFgYCkuCgogICAgYGxpbmVub3N0ZXBgCiAgICAgICAgSWYgc2V0IHRvIGEgbnVtYmVyIG4gPiAxLCBvbmx5IGV2ZXJ5IG50aCBsaW5lIG51bWJlciBpcyBwcmludGVkLgoKICAgIGBsaW5lbm9zcGVjaWFsYAogICAgICAgIElmIHNldCB0byBhIG51bWJlciBuID4gMCwgZXZlcnkgbnRoIGxpbmUgbnVtYmVyIGlzIGdpdmVuIHRoZSBDU1MKICAgICAgICBjbGFzcyBgYCJzcGVjaWFsImBgIChkZWZhdWx0OiBgYDBgYCkuCgogICAgYG5vYmFja2dyb3VuZGAKICAgICAgICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZSBmb3JtYXR0ZXIgd29uJ3Qgb3V0cHV0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yCiAgICAgICAgZm9yIHRoZSB3cmFwcGluZyBlbGVtZW50ICh0aGlzIGF1dG9tYXRpY2FsbHkgZGVmYXVsdHMgdG8gYGBGYWxzZWBgCiAgICAgICAgd2hlbiB0aGVyZSBpcyBubyB3cmFwcGluZyBlbGVtZW50IFtlZzogbm8gYXJndW1lbnQgZm9yIHRoZQogICAgICAgIGBnZXRfc3ludGF4X2RlZnNgIG1ldGhvZCBnaXZlbl0pIChkZWZhdWx0OiBgYEZhbHNlYGApLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjYKCiAgICBgbGluZXNlcGFyYXRvcmAKICAgICAgICBUaGlzIHN0cmluZyBpcyBvdXRwdXQgYmV0d2VlbiBsaW5lcyBvZiBjb2RlLiBJdCBkZWZhdWx0cyB0byBgYCJcbiJgYCwKICAgICAgICB3aGljaCBpcyBlbm91Z2ggdG8gYnJlYWsgYSBsaW5lIGluc2lkZSBgYDxwcmU+YGAgdGFncywgYnV0IHlvdSBjYW4KICAgICAgICBlLmcuIHNldCBpdCB0byBgYCI8YnI+ImBgIHRvIGdldCBIVE1MIGxpbmUgYnJlYWtzLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjcKCiAgICBgbGluZWFuY2hvcnNgCiAgICAgICAgSWYgc2V0IHRvIGEgbm9uZW1wdHkgc3RyaW5nLCBlLmcuIGBgZm9vYGAsIHRoZSBmb3JtYXR0ZXIgd2lsbCB3cmFwIGVhY2gKICAgICAgICBvdXRwdXQgbGluZSBpbiBhbiBhbmNob3IgdGFnIHdpdGggYW4gYGBpZGBgIChhbmQgYG5hbWVgKSBvZiBgYGZvby1saW5lbnVtYmVyYGAuCiAgICAgICAgVGhpcyBhbGxvd3MgZWFzeSBsaW5raW5nIHRvIGNlcnRhaW4gbGluZXMuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuOQoKICAgIGBsaW5lc3BhbnNgCiAgICAgICAgSWYgc2V0IHRvIGEgbm9uZW1wdHkgc3RyaW5nLCBlLmcuIGBgZm9vYGAsIHRoZSBmb3JtYXR0ZXIgd2lsbCB3cmFwIGVhY2gKICAgICAgICBvdXRwdXQgbGluZSBpbiBhIHNwYW4gdGFnIHdpdGggYW4gYGBpZGBgIG9mIGBgZm9vLWxpbmVudW1iZXJgYC4KICAgICAgICBUaGlzIGFsbG93cyBlYXN5IGFjY2VzcyB0byBsaW5lcyB2aWEgamF2YXNjcmlwdC4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS42CgogICAgYGFuY2hvcmxpbmVub3NgCiAgICAgICAgSWYgc2V0IHRvIGBUcnVlYCwgd2lsbCB3cmFwIGxpbmUgbnVtYmVycyBpbiA8YT4gdGFncy4gVXNlZCBpbgogICAgICAgIGNvbWJpbmF0aW9uIHdpdGggYGxpbmVub3NgIGFuZCBgbGluZWFuY2hvcnNgLgoKICAgIGB0YWdzZmlsZWAKICAgICAgICBJZiBzZXQgdG8gdGhlIHBhdGggb2YgYSBjdGFncyBmaWxlLCB3cmFwIG5hbWVzIGluIGFuY2hvciB0YWdzIHRoYXQKICAgICAgICBsaW5rIHRvIHRoZWlyIGRlZmluaXRpb25zLiBgbGluZWFuY2hvcnNgIHNob3VsZCBiZSB1c2VkLCBhbmQgdGhlCiAgICAgICAgdGFncyBmaWxlIHNob3VsZCBzcGVjaWZ5IGxpbmUgbnVtYmVycyAoc2VlIHRoZSBgLW5gIG9wdGlvbiB0byBjdGFncykuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNgoKICAgIGB0YWd1cmxmb3JtYXRgCiAgICAgICAgQSBzdHJpbmcgZm9ybWF0dGluZyBwYXR0ZXJuIHVzZWQgdG8gZ2VuZXJhdGUgbGlua3MgdG8gY3RhZ3MgZGVmaW5pdGlvbnMuCiAgICAgICAgQXZhaWxhYmxlIHZhcmlhYmxlcyBhcmUgYCUocGF0aClzYCwgYCUoZm5hbWUpc2AgYW5kIGAlKGZleHQpc2AuCiAgICAgICAgRGVmYXVsdHMgdG8gYW4gZW1wdHkgc3RyaW5nLCByZXN1bHRpbmcgaW4ganVzdCBgI3ByZWZpeC1udW1iZXJgIGxpbmtzLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjYKCiAgICBgZmlsZW5hbWVgCiAgICAgICAgQSBzdHJpbmcgdXNlZCB0byBnZW5lcmF0ZSBhIGZpbGVuYW1lIHdoZW4gcmVuZGVyaW5nIGBgPHByZT5gYCBibG9ja3MsCiAgICAgICAgZm9yIGV4YW1wbGUgaWYgZGlzcGxheWluZyBzb3VyY2UgY29kZS4gSWYgYGxpbmVub3NgIGlzIHNldCB0bwogICAgICAgIGBgJ3RhYmxlJ2BgIHRoZW4gdGhlIGZpbGVuYW1lIHdpbGwgYmUgcmVuZGVyZWQgaW4gYW4gaW5pdGlhbCByb3cKICAgICAgICBjb250YWluaW5nIGEgc2luZ2xlIGA8dGg+YCB3aGljaCBzcGFucyBib3RoIGNvbHVtbnMuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuMQoKICAgIGB3cmFwY29kZWAKICAgICAgICBXcmFwIHRoZSBjb2RlIGluc2lkZSBgYDxwcmU+YGAgYmxvY2tzIHVzaW5nIGBgPGNvZGU+YGAsIGFzIHJlY29tbWVuZGVkCiAgICAgICAgYnkgdGhlIEhUTUw1IHNwZWNpZmljYXRpb24uCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNAoKICAgIGBkZWJ1Z190b2tlbl90eXBlc2AKICAgICAgICBBZGQgYGB0aXRsZWBgIGF0dHJpYnV0ZXMgdG8gYWxsIHRva2VuIGBgPHNwYW4+YGAgdGFncyB0aGF0IHNob3cgdGhlCiAgICAgICAgbmFtZSBvZiB0aGUgdG9rZW4uCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuMTAKCgogICAgKipTdWJjbGFzc2luZyB0aGUgSFRNTCBmb3JtYXR0ZXIqKgoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuNwoKICAgIFRoZSBIVE1MIGZvcm1hdHRlciBpcyBub3cgYnVpbHQgaW4gYSB3YXkgdGhhdCBhbGxvd3MgZWFzeSBzdWJjbGFzc2luZywgdGh1cwogICAgY3VzdG9taXppbmcgdGhlIG91dHB1dCBIVE1MIGNvZGUuIFRoZSBgZm9ybWF0KClgIG1ldGhvZCBjYWxscwogICAgYHNlbGYuX2Zvcm1hdF9saW5lcygpYCB3aGljaCByZXR1cm5zIGEgZ2VuZXJhdG9yIHRoYXQgeWllbGRzIHR1cGxlcyBvZiBgYCgxLAogICAgbGluZSlgYCwgd2hlcmUgdGhlIGBgMWBgIGluZGljYXRlcyB0aGF0IHRoZSBgYGxpbmVgYCBpcyBhIGxpbmUgb2YgdGhlCiAgICBmb3JtYXR0ZWQgc291cmNlIGNvZGUuCgogICAgSWYgdGhlIGBub3dyYXBgIG9wdGlvbiBpcyBzZXQsIHRoZSBnZW5lcmF0b3IgaXMgdGhlIGl0ZXJhdGVkIG92ZXIgYW5kIHRoZQogICAgcmVzdWx0aW5nIEhUTUwgaXMgb3V0cHV0LgoKICAgIE90aGVyd2lzZSwgYGZvcm1hdCgpYCBjYWxscyBgc2VsZi53cmFwKClgLCB3aGljaCB3cmFwcyB0aGUgZ2VuZXJhdG9yIHdpdGgKICAgIG90aGVyIGdlbmVyYXRvcnMuIFRoZXNlIG1heSBhZGQgc29tZSBIVE1MIGNvZGUgdG8gdGhlIG9uZSBnZW5lcmF0ZWQgYnkKICAgIGBfZm9ybWF0X2xpbmVzKClgLCBlaXRoZXIgYnkgbW9kaWZ5aW5nIHRoZSBsaW5lcyBnZW5lcmF0ZWQgYnkgdGhlIGxhdHRlciwKICAgIHRoZW4geWllbGRpbmcgdGhlbSBhZ2FpbiB3aXRoIGBgKDEsIGxpbmUpYGAsIGFuZC9vciBieSB5aWVsZGluZyBvdGhlciBIVE1MCiAgICBjb2RlIGJlZm9yZSBvciBhZnRlciB0aGUgbGluZXMsIHdpdGggYGAoMCwgaHRtbClgYC4gVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4KICAgIHNvdXJjZSBsaW5lcyBhbmQgb3RoZXIgY29kZSBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cmFwIHRoZSBnZW5lcmF0b3IgbXVsdGlwbGUKICAgIHRpbWVzLgoKICAgIFRoZSBkZWZhdWx0IGB3cmFwKClgIGltcGxlbWVudGF0aW9uIGFkZHMgYSBgYDxkaXY+YGAgYW5kIGEgYGA8cHJlPmBgIHRhZy4KCiAgICBBIGN1c3RvbSBgSHRtbEZvcm1hdHRlcmAgc3ViY2xhc3MgY291bGQgbG9vayBsaWtlIHRoaXM6CgogICAgLi4gc291cmNlY29kZTo6IHB5dGhvbgoKICAgICAgICBjbGFzcyBDb2RlSHRtbEZvcm1hdHRlcihIdG1sRm9ybWF0dGVyKToKCiAgICAgICAgICAgIGRlZiB3cmFwKHNlbGYsIHNvdXJjZSwgKiwgaW5jbHVkZV9kaXYpOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dyYXBfY29kZShzb3VyY2UpCgogICAgICAgICAgICBkZWYgX3dyYXBfY29kZShzZWxmLCBzb3VyY2UpOgogICAgICAgICAgICAgICAgeWllbGQgMCwgJzxjb2RlPicKICAgICAgICAgICAgICAgIGZvciBpLCB0IGluIHNvdXJjZToKICAgICAgICAgICAgICAgICAgICBpZiBpID09IDE6CiAgICAgICAgICAgICAgICAgICAgICAgICMgaXQncyBhIGxpbmUg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