Content-Type: multipart/related; start=; boundary=----------03SxQvmNdK56fCZXxHrajT Content-Location: http://business.timesonline.co.uk/tol/business/industry_sectors/transport/article6590907.ece Subject: =?utf-8?Q?At=20last,=20Britain=20is=20ready=20to=20build=20hybrid=20cars=20-=20Times=20Online?= MIME-Version: 1.0 ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=article6590907.htm Content-Type: text/html; charset=ISO-8859-1; name=article6590907.htm Content-Id: Content-Location: http://business.timesonline.co.uk/tol/business/industry_sectors/transport/article6590907.ece Content-Transfer-Encoding: Base64 CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRy YW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFRE L3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93 d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iPgo8 aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0 ZXh0L2h0bWw7Y2hhcnNldD1JU08tODg1OS0xIiAvPgo8bWV0YSBuYW1lPSJST0JP VFMiIGNvbnRlbnQ9Ik5PQVJDSElWRSxOT09EUCIgLz4KPG1ldGEgbmFtZT0ibGFu Z3VhZ2UiIGNvbnRlbnQ9ImVuIiAvPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj cmlwdCI+CjwhLS0KLy8gVmFyaWFibGVzIHJlcXVpcmVkIGZvciBEQVJULiBNVVNU IEJFIElOIFRIRSBIRUFELgp2YXIgdGltZSA9IG5ldyBEYXRlKCk7CnJhbmRudW0g PSAodGltZS5nZXRUaW1lKCkpOwp2YXIgY2F0ZWdvcnlWYWx1ZXMgPSAnJzsKaWYg KGRvY3VtZW50LnJlZmVycmVyICE9IG51bGwpIHsgCmlmIChkb2N1bWVudC5yZWZl cnJlci5tYXRjaCgiLmdvb2dsZS4iKSAhPSBudWxsIHx8IApkb2N1bWVudC5yZWZl cnJlci5tYXRjaCgiLnlhaG9vLiIpICE9IG51bGwgfHwKZG9jdW1lbnQucmVmZXJy ZXIubWF0Y2goIi5seWNvcy4iKSAhPSBudWxsIHx8CmRvY3VtZW50LnJlZmVycmVy Lm1hdGNoKCIuYXNrLiIpICE9IG51bGwgfHwKZG9jdW1lbnQucmVmZXJyZXIubWF0 Y2goIi5tc24uIikgIT0gbnVsbCkgewpjYXRlZ29yeVZhbHVlcyA9ICchY2F0ZWdv cnk9c3Vub3ZlcmxheXM7JzsKfQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5 cGU9InRleHQvamF2YXNjcmlwdCI+CnZhciBwbHVja1VzZXJUaWVycyA9ICJTdGFu ZGFyZCxUcnVzdGVkLEVkaXRvciI7CmRvY3VtZW50LmRvbWFpbiA9ICJ0aW1lc29u bGluZS5jby51ayI7CnZhciBzdGF0aWNQYXRoID0gImh0dHA6Ly93d3cudGltZXNv bmxpbmUuY28udWsiOwp2YXIgY29tbWVudHNSb290VXJsID0gImNvbW11bml0eS50 aW1lc29ubGluZS5jby51ayI7Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQv amF2YXNjcmlwdCIgc3JjPSIvdG9sL2pzL3NpdGVsaWZlcHJveHkuanMiPjwvc2Ny aXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPScvdG9sL2pz L3lhaG9vLW1pbi5qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZh c2NyaXB0JyBzcmM9Jy90b2wvanMvanNvbi1taW4uanMnPjwvc2NyaXB0Pgo8c2Ny aXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPScvdG9sL2pzL3BvcmsuaWZy YW1lLmpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQn IHNyYz0nL3RvbC9qcy9yZXF1ZXN0YmF0Y2guanMnPjwvc2NyaXB0PgkKPHNjcmlw dCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nL3RvbC9qcy9yZXF1ZXN0dHlw ZXMuanMnPjwvc2NyaXB0Pgo8IS0tIENvZGUgdG8gZGlzcGxheSB0aXRsZSBvZiB0 aGUgSFRNTCBwYWdlIC0tPgo8dGl0bGU+IEF0IGxhc3QsIEJyaXRhaW4gaXMgcmVh ZHkgdG8gYnVpbGQgaHlicmlkIGNhcnMgLSBUaW1lcyBPbmxpbmUgPC90aXRsZT4g CjxtZXRhIG5hbWU9IkRlc2NyaXB0aW9uIiBjb250ZW50PSIgQlJJVEFJTiBpcyB0 byBtYWtlIGh5YnJpZCBjYXJzIGZvciB0aGUgZmlyc3QgdGltZSBhZnRlciBhIGRl Y2lzaW9uIGJ5IFRveW90YSB0byBzdGFydCBwcm9kdWN0aW9uIG9mIHRoZSBoaWdo LXRlY2ggdmVoaWNsZXMgYXQgaXRzIEJ1cm5hc3RvbiBwbGFudCBuZWFyIERlcmJ5 LiIgLz4gCjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtbGFuZ3VhZ2UiIGNvbnRl bnQ9ImVuIiAvPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdl L3gtaWNvbiIgaHJlZj0iL3RvbC9pbWcvZmF2aWNvbi5pY28iIC8+CjxsaW5rIHJl bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii90b2wvY3NzL2Fs dGVybmF0ZS5jc3MiIHRpdGxlPSJBbHRlcm5hdGUgU3R5bGUgU2hlZXQiIC8+Cjxs aW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii90b2wv Y3NzL3RvbC5jc3MiIC8+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4 dC9jc3MiIGhyZWY9Ii90b2wvY3NzL2llLmNzcyIgLz4KPGxpbmsgcmVsPSJzdHls ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL3RvbC9jc3MvdHlwb2dyYXBo eS5jc3MiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90 b2wvanMvdG9sLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz Y3JpcHQiIHNyYz0iL3RvbC9qcy9jb21tZW50UGx1Y2suanMiPjwvc2NyaXB0Pgo8 c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvdG9sL2pzL2Nvb2tp ZS5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InRvcCIvPgo8 ZGl2IGlkPSJzaGVsbCI+CjxkaXYgaWQ9InBhZ2UiPgkKPCEtLSBBcnRpY2xlIFB1 Ymxpc2hlZCBEYXRlIDogSnVuIDI4LCAyMDA5IDEyOjAwIEFNIC0tPgo8IS0tIGZv ciBhcnRpY2xlIHR5cGVzIGFydGljbGUscmV2aWV3cyxwb3N0aW5nIGFuZCBRIGFu ZCBBIGFydGljbGUgdGVtcGxhdGUgd2lsbCBiZSBjYWxsZWQgLS0+CjxzY3JpcHQg dHlwZT0idGV4dC9KYXZhc2NyaXB0Ij4KdmFyIGFydGljbGVIZWFkbGluZXMgPSBu ZXcgQXJyYXkoKTsKdmFyIGFydGljbGVQYXRocyA9IG5ldyBBcnJheSgpOwp2YXIg aXNBcnRpY2xlID0gJ3RydWUnOwp2YXIgbW9zdENvbW1lbnRlZERheXMgPSAnMSc7 CnZhciBwZ29mZnNldCA9ICcwJzsKPC9zY3JpcHQ+CjwhLS0gU1RBUlQgUkVWRU5V RSBTQ0lFTkNFIFBJWEVMTElORyBDT0RFIC0tPgo8c2NyaXB0IHR5cGU9InRleHQv amF2YXNjcmlwdCIgc3JjPSIvdG9sL2pzL0RNX2NsaWVudC5qcyI+PC9zY3JpcHQ+ CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQpETV9hZGRUb0xv YygiTmV0d29yayIsZXNjYXBlKCJUaW1lcyIpKTsKRE1fYWRkVG9Mb2MoIlNpdGVO YW1lIixlc2NhcGUoIlRpbWVzIE9ubGluZSIpKTsKLy8tLT4KPC9zY3JpcHQ+CQo8 c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IAo8IS0tCi8vIEFydGljbGUg cGFnZSBmb3IgUmV2ZW51ZSBzY2llbmNlcy0tPgkKRE1fYWRkVG9Mb2MoIlRlbXBs YXRlTmFtZSIsZXNjYXBlKCJBcnRpY2xlIikpOwpETV9hZGRUb0xvYygiQXJ0aWNs ZU5hbWUiLGVzY2FwZSgiQXQgbGFzdCwgQnJpdGFpbiBpcyByZWFkeSB0byBidWls ZCBoeWJyaWQgY2FycyIpKTsgCi8vLS0+Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9 InRleHQvamF2YXNjcmlwdCI+CjwhLS0KRE1fdGFnKCk7IC8vIEZpeCBmb3IgUmV2 ZW51ZSBzY2llbmNlcyAxNC8zLzA3IC0gYWsKLy8tLT4KPC9zY3JpcHQ+Cjxub3Nj cmlwdD4KPGltZyBzcmM9Imh0dHA6Ly9waXgwMS5yZXZzY2kubmV0L0owNTUzMC9h My8wLzAvMC8wLzAvMC8wLzAvMC9ub3NjcmlwdC5naWYiIGFsdD0iIiAvPgo8L25v c2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRw Oi8vanMucmV2c2NpLm5ldC9nYXRld2F5L2d3LmpzP2NzaWQ9SjA1NTMwIiBjaGFy c2V0PSJJU08tODg1OS0xIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiPgo8IS0tIApmdW5jdGlvbiBTZXRDb29raWUoY29va2llTmFtZSxj b29raWVWYWx1ZSxjb29raWVEb21haW4sY29va2llUGF0aCxuRGF5cykgewp2YXIg dG9kYXkgPSBuZXcgRGF0ZSgpOwp2YXIgZXhwaXJlID0gbmV3IERhdGUoKTsKaWYg KG5EYXlzPT1udWxsIHx8IG5EYXlzPT0wKSBuRGF5cz0xOwpleHBpcmUuc2V0VGlt ZSh0b2RheS5nZXRUaW1lKCkgKyAzNjAwMDAwKjI0Km5EYXlzKTsKZG9jdW1lbnQu Y29va2llID0gY29va2llTmFtZSsiPSIrZXNjYXBlKGNvb2tpZVZhbHVlKQorICI7 ZXhwaXJlcz0iK2V4cGlyZS50b0dNVFN0cmluZygpOworICI7cGF0aD0iK2Nvb2tp ZVBhdGg7CisgIjtkb21haW49Iitjb29raWVEb21haW47Cn0KdmFyIHNlZ1FTID0g cnNpbmV0c2Vncy5sZW5ndGggPiAwID8gInNlZzA9IiArIHJzaW5ldHNlZ3NbMF0g KyI7IiA6ICIiOwpmb3IgKHZhciBpID0gMTsgaSA8IHJzaW5ldHNlZ3MubGVuZ3Ro ICYmIGkgPCA2OyBpKyspCnNlZ1FTICs9ICgic2VnIiArIGkgKyAiPSIgKyByc2lu ZXRzZWdzW2ldICsgIjsiKTsgClNldENvb2tpZSgncmV2U2NpJyxzZWdRUywndGlt ZXNvbmxpbmUuY28udWsnLCcvJywyOCk7Ci8vLS0+Cjwvc2NyaXB0Pgo8IS0tIEVO RCBSRVZFTlVFIFNDSUVOQ0UgUElYRUxMSU5HIENPREUgLS0+CjwhLS0gU1RBUlQg SElUQk9YIENPREUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K PCEtLQp2YXIgc2VjdGlvblBhdGggPSAiL0hvbWUiOyAKLy8tLT4KPC9zY3JpcHQ+ CjwhLS1XRUJTSURFU1RPUlkgQ09ERSBIQlgxLjAgKFVuaXZlcnNhbCktLT4KPCEt LUNPUFlSSUdIVCAxOTk3LTIwMDQgV0VCU0lERVNUT1JZLElOQy4gQUxMIFJJR0hU UyBSRVNFUlZFRC4gVS5TLlBBVEVOVCBOby4gNiwzOTMsNDc5QjEuIE1PUkUgSU5G TzpodHRwOi8vd2Vic2lkZXN0b3J5LmNvbS9wcml2YWN5LS0+CjxzY3JpcHQgdHlw ZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQp2YXIgX2hiRUM9MCxfaGJFPW5ldyBB cnJheTtmdW5jdGlvbiBfaGJFdmVudChhLGIpe2I9X2hiRVtfaGJFQysrXT1uZXcg T2JqZWN0KCk7Yi5fTj1hO2IuX0M9MDtyZXR1cm4gYjt9CnZhciBoYng9X2hiRXZl bnQoInB2Iik7aGJ4LnZwYz0iSEJYMDEwMHUiO2hieC5nbj0idGdkLnRpbWVzb25s aW5lLmNvLnVrIjsKdmFyIGN2PV9oYkV2ZW50KCJjdiIpOwovLyBzZXQgdmFycyB0 byBiZSB1c2VkIGJlbG93CnZhciB1cmxSZXR1cm5DaWQgPSAiIjsgCnZhciB1cmxS ZXR1cm5BdHRyID0gIiI7Ci8vIEZpcnN0LCB3ZSBsb2FkIHRoZSBVUkwgaW50byBh IHZhcmlhYmxlCnZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKLy8gTmV4 dCwgc3BsaXQgdGhlIHVybCBieSB0aGUgIwp2YXIgcXBhcnRzID0gdXJsLnNwbGl0 KCIjIik7Ci8vIENoZWNrIHRoYXQgdGhlcmUgaXMgYSBxdWVyeXN0cmluZwppZiAo cXBhcnRzLmxlbmd0aCA9PSAyKSB7Ci8vIFNldCB0aGUgc2Vjb25kIGhhbGYgb2Yg c3RyaW5nIHRvIHZhcgp2YXIgcXVlcnkgPSBxcGFydHNbMV07Ci8vIE5leHQsIHNw bGl0IHRoYXQgc3RyaW5nIGJ5IHRoZSAiJmFtcCIKdmFyIHZhclEgPSBxdWVyeS5z cGxpdCgiJiIpOwppZiAodmFyUS5sZW5ndGggPT0gMikgewovLyBMYXN0bHkgc3Bs aXQgYnkgPSBhbmQgYXNzaWduIHRvIHZhcnMKdmFyIHJldFExID0gdmFyUVswXS5z cGxpdCgiPSIpOwp2YXIgcmV0UTIgPSB2YXJRWzFdLnNwbGl0KCI9Iik7CnVybFJl dHVybkNpZCA9IHJldFExWzFdOwp1cmxSZXR1cm5BdHRyID0gcmV0UTJbMV07Cn0K fQovL0JFR0lOIEVESVRBQkxFIFNFQ1RJT04KLy9DT05GSUdVUkFUSU9OIFZBUklB QkxFUwpoYngucG49IiI7Ly9QQUdFIE5BTUUoUykKaGJ4Lm1sYz0iIjsvL01VTFRJ LUxFVkVMIENPTlRFTlQgQ0FURUdPUlkKaGJ4LnBuZGVmPSJ0aXRsZSI7Ly9ERUZB VUxUIFBBR0UgTkFNRQpoYnguY3RkZWY9ImZ1bGwiOy8vREVGQVVMVCBDT05URU5U IENBVEVHT1JZCi8vT1BUSU9OQUwgUEFHRSBWQVJJQUJMRVMKLy9BQ1RJT04gU0VU VElOR1MKaGJ4LmZ2PSIiOy8vRk9STSBWQUxJREFUSU9OIE1JTklNVU0gRUxFTUVO VFMgT1IgU1VCTUlUIEZVTkNUSU9OIE5BTUUKaGJ4Lmx0PSJub25lIjsvL0xJTksg VFJBQ0tJTkcKaGJ4LmRsZj0ibiI7Ly9ET1dOTE9BRCBGSUxURVIKaGJ4LmRmdD0i biI7Ly9ET1dOTE9BRCBGSUxFIE5BTUlORwpoYnguZWxmPSJuIjsvL0VYSVQgTElO SyBGSUxURVIKLy9TRUdNRU5UUyBBTkQgRlVOTkVMUwpoYnguc2VnPSIiOy8vVklT SVRPUiBTRUdNRU5UQVRJT04KaGJ4LmZubD0iIjsvL0ZVTk5FTFMKLy9DQU1QQUlH TlMKaGJ4LmNtcD11cmxSZXR1cm5DaWQ7Ly9DQU1QQUlHTiBJRApoYnguY21wbj0i IjsvL0NBTVBBSUdOIElEIElOIFFVRVJZCmhieC5kY21wPSIiOy8vRFlOQU1JQyBD QU1QQUlHTiBJRApoYnguZGNtcG49IiI7Ly9EWU5BTUlDIENBTVBBSUdOIElEIElO IFFVRVJZCmhieC5kY21wZT0iIjsvL0RZTkFNSUMgQ0FNUEFJR04gRVhQSVJBVElP TgpoYnguZGNtcHJlPSIiOy8vRFlOQU1JQyBDQU1QQUlHTiBSRVNQT05TRSBFWFBJ UkFUSU9OCmhieC5ocmE9dXJsUmV0dXJuQXR0cjsvL1JFU1BPTlNFIEFUVFJJQlVU RQpoYnguaHFzcj0iIjsvL1JFU1BPTlNFIEFUVFJJQlVURSBJTiBSRUZFUlJBTCBR VUVSWQpoYnguaHFzcD0iIjsvL1JFU1BPTlNFIEFUVFJJQlVURSBJTiBRVUVSWQpo YnguaGx0PSIiOy8vTEVBRCBUUkFDS0lORwpoYnguaGxhPSIiOy8vTEVBRCBBVFRS SUJVVEUKaGJ4LmdwPSIiOy8vQ0FNUEFJR04gR09BTApoYnguZ3BuPSIiOy8vQ0FN UEFJR04gR09BTCBJTiBRVUVSWQpoYnguaGNuPSIiOy8vQ09OVkVSU0lPTiBBVFRS SUJVVEUKaGJ4Lmhjdj0iIjsvL0NPTlZFUlNJT04gVkFMVUUKaGJ4LmNwPSJudWxs IjsvL0xFR0FDWSBDQU1QQUlHTiAKaGJ4LmNwZD0iIjsvL0NBTVBBSUdOIERPTUFJ TgovL0NVU1RPTSBWQVJJQUJMRVMKaGJ4LmNpPSIiOy8vQ1VTVE9NRVIgSUQKaGJ4 LmhjMT0iIjsvL0NVU1RPTSAxCmhieC5oYzI9IiI7Ly9DVVNUT00gMgpoYnguaGMz PSIiOy8vQ1VTVE9NIDMKaGJ4LmhjND0iIjsvL0NVU1RPTSA0CmhieC5ocmY9IiI7 Ly9DVVNUT00gUkVGRVJSRVIKaGJ4LnBlYz0iIjsvL0VSUk9SIENPREVTCmN2LmM1 PSIiOwpjdi5jNj0iIjsgCmN2LmM3PSIiOwpjdi5jOD0iIjsKY3YuYzk9IiI7Ci8v SU5TRVJUIENVU1RPTSBFVkVOVFMKLy9FTkQgRURJVEFCTEUgU0VDVElPTgpoYngu YWNjdD0iRE01MzA4MDcyQkVGIjsvL0FDQ09VTlQgTlVNQkVSKFMpCmhieC5sdD0i bWFudWFsIjsvL0xJTksgVFJBQ0tJTkcKLy8gQXJ0aWNsZSBQYWdlIEZvciBIaXQg Qm94CmhieC5tbGMgPSAiL0hvbWUvYnVzaW5lc3MvaW5kdXN0cnkrc2VjdG9ycy90 cmFuc3BvcnQvIjsKaGJ4LnBuID0gIkF0K2xhc3QrQnJpdGFpbitpcytyZWFkeSt0 bytidWlsZCtoeWJyaWQrY2FycytBUlRLLVNEVFMtNjU5MDkwNytwYWdlbnVtYmVy XzEiOyAvLytfcGFnZW51bWJlciAvL1BBR0UgTkFNRShTKQpoYnguaGMxID0gIjY1 OTA5MDd8QXQrbGFzdCtCcml0YWluK2lzK3JlYWR5K3RvK2J1aWxkK2h5YnJpZCtj YXJzIjsKaGJ4LmhjMiA9ICI2NTkwOTA3fDEiOyAKaGJ4LmhjMyA9ICIyODA2MjAw OSI7CmN2LmM3PSJSYXkrSHV0dG9uIjsKLy8tLT4KaGJ4LnBuZGVmPSJ0aXRsZSI7 Ly9ERUZBVUxUIFBBR0UgTkFNRSAKaGJ4LmN0ZGVmPSJmdWxsIjsvL0RFRkFVTFQg Q09OVEVOVCBDQVRFR09SWQo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiIHNyYz0iaHR0cDovL3d3dy50aW1lc29ubGluZS5jby51ay9qcy9o YnguanMiPjwvc2NyaXB0Pgo8IS0tRU5EIFdFQlNJREVTVE9SWSBDT0RFLS0+Cjwh LS0gRU5EIEhJVEJPWCBDT0RFIC0tPgo8IS0tIEJFR0lOOiBSZWdpb24gZm9yIHRv cCBhZCAtLT4KPGRpdiBpZD0icmVnaW9uLXRvcC1hZCI+CjwhLS0gQkVHSU46IE1v ZHVsZSAtIEFkdmVydDpUb3AgLS0+CjxkaXYgaWQ9ImFkLXRvcCI+CjxkaXYgY2xh c3M9ImZsb2F0LWxlZnQgd2lkdGgtNzI4Ij4KPCEtLSBCRUdJTjogTW9kdWxlIC0g QWR2ZXJ0OlRvcCAtLT4KPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8 IS0tCi8vUmV0cmlldmUgeWFvbyBDb29raWUgVmFsdWUKdmFyIHlhaG9vID0gIm5v IjsKdmFyIElzWWFob289Im5vIjsKaWYgKEdldFF1ZXJ5U3RyaW5nKCJ5YWhvbyIp PT0ieWVzIiB8fCBnZXRfY29va2llKCdZSCcpID09ICJ5ZXMiKSBJc1lhaG9vPSJ5 ZXMiOwppZiAoSXNZYWhvbyA9PSAieWVzIiB8fCBnZXRfY29va2llKCdZSCcpID09 ICdvcGVuJykgewpzZXRfY29va2llICgiWUgiLCAieWVzIiwgIiIsICIiICk7Cnlh aG9vID0gInllcyI7Cn0gZWxzZSB7CnNldF9jb29raWUgKCJZSCIsICJubyIsICIi LCAiIiApOwp5YWhvbyA9ICJubyI7Cn0Kd2luZG93Lm9udW5sb2FkID0gc2V0WWFo b29Db29raWU7Ci8vLS0+CjwvU0NSSVBUPgo8IS0tIEZvciBUcmF2ZWwgU2VhcmNo IC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KdmFyIFJT dGFnID0gIiI7CnRyeXsKUlN0YWcgPSBzZWdRUzsKfQpjYXRjaChlKXsKUlN0YWcg PSAiIjsKfQpkb2N1bWVudC53cml0ZSgnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz Y3JpcHQiIHNyYz0iaHR0cDovL2FkLnVrLmRvdWJsZWNsaWNrLm5ldC9hZGovYnVz aW5lc3MudGltZXNvbmxpbmUuY28udWsvaW5kdXN0cnlzZWN0b3JzL3RyYW5zcG9y dDtjYXQ9O3Bvcz1sZWFkZXJib2FyZDtkY29wdD1pc3Q7c3o9NzI4eDkwOycrIFJT dGFnICsndGlsZT0xOycrY2F0ZWdvcnlWYWx1ZXMrJ3lhaG9vPScreWFob28rJztv cmQ9JytyYW5kbnVtKyc/Ij48XC9zY3JpcHQ+Jyk7CQovLy0tPgo8L3NjcmlwdD4K PG5vc2NyaXB0Pgo8YSBocmVmPSJodHRwOi8vYWQudWsuZG91YmxlY2xpY2submV0 L2Fkai9idXNpbmVzcy50aW1lc29ubGluZS5jby51ay9pbmR1c3RyeXNlY3RvcnMv dHJhbnNwb3J0O3Bvcz1sZWFkZXJib2FyZDtkY29wdD1pc3Q7c3o9NzI4eDkwO3Rp bGU9MTt5YWhvbz1ObztvcmQ9MTI0Nzk0MzQyNTY5NT8iPjwvYT4KPC9ub3Njcmlw dD4KPCEtLVNFQ1RJT046cGFyYW1ldGVyIHBhcmFtZXRlcj0iZGFydC5zZXJ2ZXIi IC8tLT4KPCEtLSBFTkQ6IE1vZHVsZSAtIEFkdmVydDpUb3AgLS0+CjwvZGl2Pgo8 IS0tIERpc3BsYXkgQ29tbWVyY2lhbCBBZCAtLT4KPCEtLSBEaXNwbGF5IENvbW1l cmNpYWwgQWQgUHVibGlzaGVkIERhdGUgOiBNYXIgMjYsIDIwMDkgOTowOSBBTS0t Pgo8ZGl2Pgo8ZGl2IGNsYXNzPSJwcm9wLTkwIGFkLXRvcC1yaWdodCIgc3R5bGU9 ImJhY2tncm91bmQtY29sb3I6ICNiNmU2MDAiPgo8IS0tIE5vIGFydGljbGUgaXMg YXR0YWNoZWQtLT4KPGgxIGNsYXNzPSJpbmRleCBwYWRkaW5nLWJvdHRvbS01Ij48 YSBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9zcG9ydC9j b21tZXJjaWFsL2FydGljbGU2NzE0ODQ2LmVjZSIgY2xhc3M9ImxpbmstMDZjIiB0 YXJnZXQ9Il9ibGFuayI+R2xvcnkgRGF5czwvYT48L2gxPgo8cCBjbGFzcz0ic21h bGwiPldpbiB0aWNrZXRzIHRvIEdsb3Jpb3VzIEdvb2R3b29kPC9wPiAKPC9kaXY+ CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4K PCEtLSBFTkQ6IE1vZHVsZSAtIEFkdmVydDpUb3AgLS0+CjxoMiBjbGFzcz0iYWNj ZXNzLXRleHQiPk5hdmlnYXRpb24gLSBsaW5rIHRvIG90aGVyIG1haW4gc2VjdGlv bnMgZnJvbSBoZXJlPC9oMj4KPGRpdj48YSBjbGFzcz0iYWNjZXNzLXRleHQiIGhy ZWY9IiNyZWdpb24tYm9keS1hbmQtZm9vdGVyIj5Ta2lwIE5hdmlnYXRpb248L2E+ PGJyIGNsYXNzPSJhY2Nlc3MtdGV4dCIgLz48YnIgY2xhc3M9ImFjY2Vzcy10ZXh0 IiAvPjwvZGl2Pgo8ZGl2IGlkPSJyZWdpb24tbmF2Ij4KPCEtLSBCRUdJTjogTTc2 IEdsb2JhbCBOYXZpZ2F0aW9uIC0gSGVhZGVyIC0tPgo8ZGl2IGNsYXNzPSJjbGVh ciI+PC9kaXY+CjxkaXYgaWQ9ImhlYWRlciI+CQo8ZGl2IGlkPSJsb2dvLWFuZC1x dW90ZS1jb250YWluZXIiIGNsYXNzPSJoZWlnaHQtNzAgb3ZlcmZsb3ctaGlkZGVu Ij4KPHNwYW4gY2xhc3M9ImZsb2F0LWxlZnQiPjxhIGhyZWY9Ii90b2wvbmV3cy8i PjxpbWcgc3JjPSIvdG9sL2ltZy9nbG9iYWwvdG9sLWxvZ28uZ2lmIiB3aWR0aD0i NDYwIiBoZWlnaHQ9IjcwIiBib3JkZXI9IjAiIGFsdD0iVGltZXMgT25saW5lIiB0 aXRsZT0iVGltZXMgT25saW5lIiAvPjwvYT48L3NwYW4+CjxkaXYgY2xhc3M9ImZs b2F0LXJpZ2h0Ij4KPCEtLUNvbW1lbnRzIFB1Ymxpc2hlZCBEYXRlIDogSnVsIDEz LCAyMDA5IDM6MDUgUE0gLS0+Cjxmb3JtIG5hbWU9ImNvbW1lbnQiIG1ldGhvZD0i cG9zdCIgYWN0aW9uPSIiPgkKPGRpdiBjbGFzcz0iaGVhZGVyLXF1b3RlLWNvbnRh aW5lciI+CjxkaXYgY2xhc3M9ImhlYWRlci1xdW90ZS1sZWZ0Ij4KPGEgaHJlZj0i L3RvbC9jb21tZW50L2NvbHVtbmlzdHMvZ3Vlc3RfY29udHJpYnV0b3JzL2FydGlj bGU2Njk1MTA2LmVjZSI+PGltZyBzcmM9Jy9tdWx0aW1lZGlhL2FyY2hpdmUvMDA1 ODgvYnVzdGVyXzU4ODU2MGIuanBnJyBhbHQ9J1JveSBIYXR0ZXJzbGV5J3MgZG9n LCBCdXN0ZXInIHdpZHRoPSI3MCIgaGVpZ2h0PSI3MCIgYm9yZGVyPSIwIiBjbGFz cz0iZGlzcGxheS1ibG9jayIgLz4gPC9hPgo8L2Rpdj4KPGRpdiBjbGFzcz0iaGVh ZGVyLXF1b3RlLXJpZ2h0Ij4KPGRpdiBjbGFzcz0icGFkZGluZy10b3AtNyI+Cjxo MiBjbGFzcz0ic3ViLWhlYWRpbmcgZGlzcGxheS1pbmxpbmUiPjxzcGFuIGNsYXNz PSJoZWFkZXItcXVvdGUtb3BlbiI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7PC9zcGFuPjxhIGNsYXNzPSJsaW5rLTMzMyBwYWRkaW5nLWxlZnQtNSIgaHJl Zj0iL3RvbC9jb21tZW50L2NvbHVtbmlzdHMvZ3Vlc3RfY29udHJpYnV0b3JzL2Fy dGljbGU2Njk1MTA2LmVjZSI+QXNzYXVsdHMgYnkgaHVtYW5zIGFyZSBhIHRob3Vz YW5kIHRpbWVzIG1vcmUgZnJlcXVlbnQgdGhhbiBhdHRhY2tzIGJ5IGRvZ3M8L2E+ PHNwYW4gY2xhc3M9ImhlYWRlci1xdW90ZS1jbG9zZSI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvaDI+CjxwIGNsYXNzPSJieWxpbmUiPkJ1 c3RlciBIYXR0ZXJzbGV5IDwvcD4KPC9kaXY+CjwvZGl2PiAKPC9kaXY+CjwvZm9y bT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUiPjwvZGl2 Pgo8IS0tIEVORDogTG9nbyBhbmQgUXVvdGUgLS0+CjwhLS0gQkVHSU46IE5hdiAo SGVhZGVyKSAtLT4KPGRpdiBjbGFzcz0nbmF2LXByaW1hcnknPjx1bCBjbGFzcz0n ZmxvYXQtbGVmdCc+PGxpPjxhIGhyZWY9Jy90b2wvbmV3cy8nIGNsYXNzPSdwcmlt YXJ5LWxpbmsnPk5ld3M8L2E+PC9saT48bGk+PGEgaHJlZj0nL3RvbC9jb21tZW50 LycgY2xhc3M9J3ByaW1hcnktbGluayc+Q29tbWVudDwvYT48L2xpPjxsaT48YSBo cmVmPScvdG9sL2J1c2luZXNzLycgY2xhc3M9J3ByaW1hcnktc2VsZWN0ZWQnPkJ1 c2luZXNzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Jy90b2wvbW9uZXkvJyBjbGFzcz0n cHJpbWFyeS1saW5rJz5Nb25leTwvYT48L2xpPjxsaT48YSBocmVmPScvdG9sL3Nw b3J0LycgY2xhc3M9J3ByaW1hcnktbGluayc+U3BvcnQ8L2E+PC9saT48bGk+PGEg aHJlZj0nL3RvbC9saWZlX2FuZF9zdHlsZS8nIGNsYXNzPSdwcmltYXJ5LWxpbmsn PkxpZmUgJiBTdHlsZTwvYT48L2xpPjxsaT48YSBocmVmPScvdG9sL3RyYXZlbC8n IGNsYXNzPSdwcmltYXJ5LWxpbmsnPlRyYXZlbDwvYT48L2xpPjxsaT48YSBocmVm PScvdG9sL2RyaXZpbmcvJyBjbGFzcz0ncHJpbWFyeS1saW5rJz5Ecml2aW5nPC9h PjwvbGk+PGxpPjxhIGhyZWY9Jy90b2wvYXJ0c19hbmRfZW50ZXJ0YWlubWVudC8n IGNsYXNzPSdwcmltYXJ5LWxpbmsnPkFydHMgJiBFbnRzPC9hPjwvbGk+PGxpPjxh IGhyZWY9Jy90b2wvYXJjaGl2ZS8nIGNsYXNzPSdwcmltYXJ5LWxpbmstbm8tcGlw ZSc+QXJjaGl2ZTwvYT48L2xpPjwvdWw+PHVsIGNsYXNzPSdmbG9hdC1yaWdodCc+ PGxpPjxhIGhyZWY9Jy90b2wvbmV3c3BhcGVycy8nIGNsYXNzPSdwcmltYXJ5LWxp bmstcmlnaHQnPk91ciBQYXBlcnM8L2E+PC9saT48bGk+PGEgaHJlZj0nL3RvbC90 b29sc19hbmRfc2VydmljZXMvc3Vic2NyaXB0aW9ucy8nIGNsYXNzPSdwcmltYXJ5 LWxpbmstcmlnaHQtbm8tcGlwZSc+U3Vic2NyaXB0aW9uczwvYT48L2xpPjwvdWw+ PC9kaXY+PGRpdiBjbGFzcz0nbmF2LXNlY29uZGFyeSc+PHVsIGNsYXNzPSdmbG9h dC1sZWZ0Jz48bGk+PGEgaHJlZj0nL3RvbC9idXNpbmVzcy9tYXJrZXRzLycgY2xh c3M9J3NlY29uZGFyeS1saW5rJz5NYXJrZXRzPC9hPjwvbGk+PGxpPjxhIGhyZWY9 J2h0dHA6Ly9tb3JuaW5nc3Rhci50aW1lc29ubGluZS5jby51ay8nIGNsYXNzPSdz ZWNvbmRhcnktbGluayc+TWFya2V0IERhdGE8L2E+PC9saT48bGk+PGEgaHJlZj0n L3RvbC9idXNpbmVzcy9lY29ub21pY3MvJyBjbGFzcz0nc2Vjb25kYXJ5LWxpbmsn PkVjb25vbWljczwvYT48L2xpPjxsaT48YSBocmVmPScvdG9sL2J1c2luZXNzL2lu ZHVzdHJ5X3NlY3RvcnMvJyBjbGFzcz0nc2Vjb25kYXJ5LXNlbGVjdGVkJz5JbmR1 c3RyeSBTZWN0b3JzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Jy90b2wvYnVzaW5lc3Mv Y29sdW1uaXN0cy8nIGNsYXNzPSdzZWNvbmRhcnktbGluayc+Q29sdW1uaXN0czwv YT48L2xpPjxsaT48YSBocmVmPScvdG9sL2J1c2luZXNzL21vdmVyc19hbmRfc2hh a2Vycy8nIGNsYXNzPSdzZWNvbmRhcnktbGluayc+TW92ZXJzICYgU2hha2Vyczwv YT48L2xpPjxsaT48YSBocmVmPScvdG9sL2J1c2luZXNzL2xhdy8nIGNsYXNzPSdz ZWNvbmRhcnktbGluayc+TGF3PC9hPjwvbGk+PGxpPjxhIGhyZWY9Jy90b2wvYnVz aW5lc3MvY2FyZWVyX2FuZF9qb2JzLycgY2xhc3M9J3NlY29uZGFyeS1saW5rJz5D YXJlZXI8L2E+PC9saT48bGk+PGEgaHJlZj0nL3RvbC9idXNpbmVzcy9tYW5hZ2Vt ZW50LycgY2xhc3M9J3NlY29uZGFyeS1saW5rJz5NYW5hZ2VtZW50PC9hPjwvbGk+ PC91bD48dWwgY2xhc3M9J2Zsb2F0LXJpZ2h0Jz48L3VsPjwvZGl2Pgo8IS0tIEVO RDogTmF2IChIZWFkZXIpIC0tPgo8IS0tIEJFR0lOOiBDcnVtYnRyYWlsIGFuZCBH bG9iYWwgc2VhcmNoIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+ CjwhLS0KZnVuY3Rpb24gdmFsaWRhdGUoKQp7CnZhciBxdWVyeSA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCJoZWFkZXJJZCIpLnF1ZXJ5LnZhbHVlOwppZihxdWVy eSA9PSAiIikKewphbGVydCgiUGxlYXNlIEVudGVyIEtleXdvcmQgVG8gU2VhcmNo LiIpOwpyZXR1cm4gZmFsc2U7Cn0KZWxzZQp7CnJldHVybiB0cnVlOwp9Cn0KZnVu Y3Rpb24gT25CdXR0b25DbGljaygpCnsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ImhlYWRlcklkIikuc3VibWl0KCk7Cn0KLy8tLT4KPC9zY3JpcHQ+CQo8ZGl2IGNs YXNzPSJjcnVtYnRyYWlsLWFuZC1zZWFyY2giPgo8c2NyaXB0IHR5cGU9InRleHQv amF2YXNjcmlwdCIgc3JjPSIvdG9sL2pzL2hlYWRlci1zZWFyY2guanMiPjwvc2Ny aXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KdmFyIGFB Y3Rpb25VcmxzVG9wU2VhcmNoPW5ldyBBcnJheSgpOyAvLyBUaGlzIGFycmF5IHdp bGwgaG9sZCB0aGUgdmFsdWVzIGZvcm0gYWN0aW9ucwovLy0tPgo8L3NjcmlwdD4J CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQphQWN0aW9uVXJs c1RvcFNlYXJjaFswXT17YWN0aW9uOicvdG9sL3NpdGVzZWFyY2guZG8nLHNlYXJj aFRleHROYW1lOidxdWVyeScscGFyYW1ldGVyczp7dHVybk9mZkdvb2dsZUFkczoi ZmFsc2UiLCBzdWJtaXRTdGF0dXM6InNlYXJjaEZvcm1TdWJtaXR0ZWQiLCBtb2Rl OiJzaW1wbGUiLHNlY3Rpb25JZDoiODIxIn19OwkKYUFjdGlvblVybHNUb3BTZWFy Y2hbMV09e2FjdGlvbjonL3RvbC92aWV3U2VhcmNoUmVzdWx0cy5hcmMnLCBzZWFy Y2hUZXh0TmFtZToncXVlcnlLZXl3b3JkcycscGFyYW1ldGVyczp7fX07CQphQWN0 aW9uVXJsc1RvcFNlYXJjaFsyXT17YWN0aW9uOicvdG9sL2dvb2dsZVNlYXJjaC5k bycsIHNlYXJjaFRleHROYW1lOidxdWVyeUtleXdvcmRzJyxwYXJhbWV0ZXJzOntz ZWFyY2htb2RlOiJhZHNhbmRyZXN1bHRzIixwYWdlTnVtOiIxIixyZXN1bHRzUGVy UGFnZToiMTAifX07CQovLy0tPgo8L3NjcmlwdD4KPGZvcm0gaWQ9InNlYXJjaEhl YWRlcklkIiBuYW1lPSJzZWFyY2hIZWFkZXJJZCIgYWN0aW9uPSIiIG1ldGhvZD0i Z2V0IiBvbnN1Ym1pdD0icmV0dXJuIGZWYWxpZGF0ZURhdGEoKTsiPgo8ZGl2IHN0 eWxlPSJwYWRkaW5nLWxlZnQ6IDdweDsiIGNsYXNzPSJmbG9hdC1yaWdodCI+Cjxp bnB1dCB0eXBlPSJpbWFnZSIgc3JjPSIvdG9sL2ltZy9nbG9iYWwvYnV0dG9uL2J1 dHRvbi1zZWFyY2guZ2lmIiBjbGFzcz0iZ2xvYmFsLXNlYXJjaC1nbyIgYWx0PSJT ZWFyY2giIC8+CQo8L2Rpdj4KPGRpdiBjbGFzcz0iZmxvYXQtcmlnaHQiPgkKPGRp diBjbGFzcz0iZmxvYXQtbGVmdCBwYWRkaW5nLXRvcC0xOSI+PC9kaXY+CQo8aW5w dXQgdHlwZT0idGV4dCIgbmFtZT0icXVlcnkiIGlkPSJ0b3Atc2VhcmNoLXF1ZXJ5 IiBtYXhsZW5ndGg9IjEwMCIgc2l6ZT0iMTAiIGNsYXNzPSJnbG9iYWwtc2VhcmNo LXRleHQtd2l0aC1kcm9wZG93biIgYWx0PSJxdWVyeSIgLz4KPHNlbGVjdCBpZD0i c2VhcmNoT3B0aW9uIiBjbGFzcz0iZ2xvYmFsLXNlYXJjaC1vcHRpb24iPgo8b3B0 aW9uIHZhbHVlPSIwIj5UaW1lcyBPbmxpbmU8L29wdGlvbj4JCjxvcHRpb24gdmFs dWU9IjEiPlRpbWVzIEFyY2hpdmU8L29wdGlvbj4JCjxvcHRpb24gdmFsdWU9IjIi Pkdvb2dsZTwvb3B0aW9uPgkKPC9zZWxlY3Q+CjwvZGl2Pgo8ZGl2IGlkPSJzZWFy Y2hIZWFkZXJJZC1hZGRpdGlvbmFsLXBhcmFtZXRlcnMiIGNsYXNzPSJhY2Nlc3Mt dGV4dCI+PC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEt LQp2YXIgc0N1cnJlbnRXaW5kb3dMb2NhdGlvbj1kb2N1bWVudC5sb2NhdGlvbisi IjsKZm9yKGk9MDsgaTxhQWN0aW9uVXJsc1RvcFNlYXJjaC5sZW5ndGg7IGkrKykg ewppZihzQ3VycmVudFdpbmRvd0xvY2F0aW9uLm1hdGNoKGFBY3Rpb25VcmxzVG9w U2VhcmNoW2ldLmFjdGlvbikgIT0gbnVsbCApIHsKZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoInNlYXJjaE9wdGlvbiIpLnZhbHVlPWk7Cn0JCn0KLy8tLT4KPC9zY3Jp cHQ+CjwvZm9ybT4KPGRpdiBjbGFzcz0iY3J1bWJ0cmFpbC1wcmVmaXgiPgkKPHAg Y2xhc3M9InNtYWxsIHdoZXJlLWFtLWkiPldoZXJlIGFtIEk/PC9wPgo8YSBjbGFz cz0iY3J1bWJ0cmFpbCIgaHJlZj0nL3RvbC9uZXdzLyc+SG9tZTwvYT4KPHVsIGNs YXNzPSJkaXNwbGF5LWlubGluZSI+CjxsaSBjbGFzcz0iZGlzcGxheS1pbmxpbmUi Pgo8YSBjbGFzcz0iY3J1bWJ0cmFpbCIgaHJlZj0iL3RvbC9idXNpbmVzcy8iIC8+ QnVzaW5lc3M8L2E+CjxhIGNsYXNzPSJjcnVtYnRyYWlsIiBocmVmPSIvdG9sL2J1 c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMvIiAvPkluZHVzdHJ5IFNlY3RvcnM8L2E+ CjxhIGNsYXNzPSJjcnVtYnRyYWlsLXNlbGVjdGVkIiBocmVmPSIvdG9sL2J1c2lu ZXNzL2luZHVzdHJ5X3NlY3RvcnMvdHJhbnNwb3J0LyIgLz5UcmFuc3BvcnQ8L2E+ CjwvbGk+CjwvdWw+CjwvZGl2Pgo8L2Rpdj4KPCEtLSBFTkQ6IENydW1idHJhaWwg YW5kIEdsb2JhbCBzZWFyY2ggLS0+CjwhLS0gQkVHSU46IFNvdXJjZSBhbmQgR2xv YmFsIGxpbmtzIC0tPgo8ZGl2IGNsYXNzPSJzb3VyY2UtYW5kLWdsb2JhbC1saW5r cy1jb250YWluZXIiPgo8IS0tU3RhcnQgZGF0ZSBkaXNwbGF5LS0+CjwhLS1FbmQg ZGF0ZSBkaXNwbGF5LS0+CQo8ZGl2IGNsYXNzPSJmbG9hdC1yaWdodCI+Cjx1bCBj bGFzcz0iZGlzcGxheS1pbmxpbmUiPgo8IS0tIFNUQVJUOiBBZGRpdGlvbiBvZiBC bHVlIExpbmtzIC0tPgo8IS0tQmxvZyBUZWFzZXIgUHVibGlzaGVkIERhdGUgOiBK dWwgMTcsIDIwMDggMjo1OSBQTSAtLT4KPGEgY2xhc3M9InRvb2xzLTA2YyBnbG9i YWwtbGlua3Mtc2VwZXJhdG9yIiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5l LmNvLnVrL3RvbC90b29sc19hbmRfc2VydmljZXMvc3Vic2NyaXB0aW9ucy9teV9w cm9maWxlLyI+CQpNWSBQUk9GSUxFPC9hPgo8YSBjbGFzcz0idG9vbHMtMDZjIGds b2JhbC1saW5rcy1zZXBlcmF0b3IiIGhyZWY9Imh0dHA6Ly93d3cudGltZXNvbmxp bmUuY28udWsvdG9sL2NsYXNzaWZpZWRzL3Nob3AvIj4JClNIT1A8L2E+CjxhIGNs YXNzPSJ0b29scy0wNmMgZ2xvYmFsLWxpbmtzLXNlcGVyYXRvciIgaHJlZj0iaHR0 cDovL2pvYnMudGltZXNvbmxpbmUuY28udWsiPgkKSk9CUzwvYT4KPGEgY2xhc3M9 InRvb2xzLTA2YyBnbG9iYWwtbGlua3Mtc2VwZXJhdG9yIiBocmVmPSJodHRwOi8v d3d3LnRpbWVzb25saW5lLmNvLnVrL3Byb3BlcnR5Ij4JClBST1BFUlRZPC9hPgo8 YSBjbGFzcz0idG9vbHMtMDZjIGdsb2JhbC1saW5rcy1zZXBlcmF0b3ItbGFzdCIg aHJlZj0iaHR0cDovL3d3dy50aW1lc29ubGluZS5jby51ay9jbGFzc2lmaWVkcyI+ CQpDTEFTU0lGSUVEUzwvYT4KPCEtLSBFTkQ6IERpc3BsYXlpbmcgQmx1ZSBMaW5r cyAtLT4KPCEtLSBFTkQ6IEFkZGl0aW9uIG9mIEJsdWUgTGlua3MgLS0+CQo8L3Vs Pgo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pgo8IS0tIEVO RDogU291cmNlIGFuZCBHbG9iYWwgbGlua3MgLS0+CjwvZGl2Pgo8IS0tIGRpdiBj bGFzcz0iZ3JleS1saW5lIj48L2Rpdi0tPgo8L2Rpdj4KPCEtLSBFTkQ6IE03NiBH bG9iYWwgTmF2aWdhdGlvbiAtIEhlYWRlciAtLT4KPCEtLSBCRUdJTjogUmVnaW9u IGZvciBhbGwgY29udGVudCAtLT4KPGRpdiBpZD0icmVnaW9uLWNvbnRlbnQiPgo8 ZGl2IGlkPSJyZWdpb24tYm9keS1hbmQtZm9vdGVyIj4KPGRpdiBpZD0icmVnaW9u LWJvZHkiPgo8ZGl2IGlkPSJyZWdpb24tY29sdW1uMWFuZDItY29udGFpbmVyLWxh eW91dDIiPgo8ZGl2IGlkPSJyZWdpb24tY29sdW1uMWFuZDItbGF5b3V0MiI+Cjwh LS0gQkVHSU46IE1vZHVsZSAtIE1haW4gSGVhZGluZyAtLT4KPGRpdiBjbGFzcz0i ZmxvYXQtbGVmdCBwb3NpdGlvbi1yZWxhdGl2ZSBtYXJnaW4tdG9wLW1pbnVzLTIy Ij48c3BhbiBjbGFzcz0ic21hbGwiPgpGcm9tIDwvc3Bhbj48c3BhbiBjbGFzcz0i YnlsaW5lIj5UaGUgU3VuZGF5IFRpbWVzPC9zcGFuPgo8L2Rpdj4KPGRpdiBjbGFz cz0iZmxvYXQtcmlnaHQgdGV4dC1yaWdodCBwb3NpdGlvbi1yZWxhdGl2ZSBtYXJn aW4tdG9wLW1pbnVzLTIwIj4KPCEtLSBCRUdJTjogTW9kdWxlIC0gQWR2ZXJ0OlRv cCAtLT4KPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCi8vUmV0 cmlldmUgeWFvbyBDb29raWUgVmFsdWUKdmFyIHlhaG9vID0gIm5vIjsKdmFyIElz WWFob289Im5vIjsKaWYgKEdldFF1ZXJ5U3RyaW5nKCJ5YWhvbyIpPT0ieWVzIiB8 fCBnZXRfY29va2llKCdZSCcpID09ICJ5ZXMiKSBJc1lhaG9vPSJ5ZXMiOwppZiAo SXNZYWhvbyA9PSAieWVzIiB8fCBnZXRfY29va2llKCdZSCcpID09ICdvcGVuJykg ewpzZXRfY29va2llICgiWUgiLCAieWVzIiwgIiIsICIiICk7CnlhaG9vID0gInll cyI7Cn0gZWxzZSB7CnNldF9jb29raWUgKCJZSCIsICJubyIsICIiLCAiIiApOwp5 YWhvbyA9ICJubyI7Cn0Kd2luZG93Lm9udW5sb2FkID0gc2V0WWFob29Db29raWU7 Ci8vLS0+CjwvU0NSSVBUPgo8IS0tIEZvciBUcmF2ZWwgU2VhcmNoIC0tPgo8IS0t U0VDVElPTjpwYXJhbWV0ZXIgcGFyYW1ldGVyPSJkYXJ0LnNlcnZlciIgLy0tPgo8 IS0tIEVORDogTW9kdWxlIC0gQWR2ZXJ0OlRvcCAtLT4KPC9kaXY+CjxkaXYgY2xh c3M9InNtYWxsIGNvbG9yLTY2NiI+Ckp1bmUgMjgsIDIwMDk8L2JyPiAKPC9kaXY+ CjxkaXYgY2xhc3M9ImNsZWFyLXNpbXBsZSI+PC9kaXY+CjxoMSBjbGFzcz0iaGVh ZGluZyI+QXQgbGFzdCwgQnJpdGFpbiBpcyByZWFkeSB0byBidWlsZCBoeWJyaWQg Y2FyczwvaDE+CjxoMiBjbGFzcz0ic3ViLWhlYWRpbmcgcGFkZGluZy10b3AtNSBw YWRkaW5nLWJvdHRvbS0xNSI+VG95b3RhIGV4cGVjdHMgdG8gc3RhcnQgbWFraW5n IHRoZSBBdXJpcyBoYXRjaGJhY2sgYXQgaXRzIHBsYW50IG5lYXIgRGVyYnkgYmVm b3JlIHRoZSBlbmQgb2YgdGhlIHllYXI8L2gyPgo8IS0tIEVORDogTW9kdWxlIC0g TWFpbiBIZWFkaW5nIC0tPgkKPC9kaXY+CjxkaXYgaWQ9InJlZ2lvbi1jb2x1bW4x LWxheW91dDIiPgo8IS0tQ01BIHVzZXIgQ2FsbCBEaWZmcmVuZXQgVmFyaWF0aW9u IE9mIEltYWdlIC0tPgo8IS0tIEJFR0lOOiBNMjQgQXJ0aWNsZSBIZWFkbGluZSB3 aXRoIGxhbmRzY2FwZSBpbWFnZSAoZCkgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9q YXZhc2NyaXB0IiBzcmM9Ii90b2wvanMvbTI0LWltYWdlLWJyb3dzZXIuanMiPjwv c2NyaXB0Pgo8IS0tIEJFR0lOOiBNb2R1bGUgLSBNMjQgQXJ0aWNsZSBIZWFkbGlu ZSB3aXRoIGxhbmRzY2FwZSBpbWFnZSAoZCkgLS0+CjxzY3JpcHQgdHlwZT0idGV4 dC9qYXZhc2NyaXB0Ij4KPCEtLQovKiBHbG9iYWwgdmFyaWFibGVzIHRoYXQgYXJl IHVzZWQgZm9yICJpbWFnZSBicm93c2luZyIuIFVzZWQgb24gYXJ0aWNsZSBwYWdl cyB0byByb3RhdGUgdGhlIGltYWdlcyBvZiBhIHN0b3J5LiAqLwp2YXIgc0ltYWdl QnJvd3NlckltYWdlUGF0aCA9ICcnOwp2YXIgYUFydGljbGVJbWFnZXMgPSBuZXcg QXJyYXkoKTsKdmFyIGFJbWFnZURlc2NyaXB0aW9ucyA9IG5ldyBBcnJheSgpOwp2 YXIgYUltYWdlRW5sYXJnZUxpbmsgPSBuZXcgQXJyYXkoKTsKdmFyIGFJbWFnZUVu bGFyZ2VQb3B1cFdpZHRoID0gJzUwMCc7CnZhciBhSW1hZ2VFbmxhcmdlUG9wdXBI ZWlnaHQgPSAnNTAwJzsKdmFyIGFJbWFnZVBob3RvZ3JhcGhlciA9IG5ldyBBcnJh eSgpOwp2YXIgblNlbGVjdGVkQXJ0aWNsZUltYWdlID0gMDsKdmFyIGFJbWFnZUFs dFRleHQ9IG5ldyBBcnJheSgpOyAKdmFyIGk9MDsKLy8tLT4KPC9zY3JpcHQ+Cjxz Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQphQXJ0aWNsZUltYWdl c1tpXSA9ICcvbXVsdGltZWRpYS9hcmNoaXZlLzAwNTgwL0J1c2luZXNzXzU4MDM1 NGEuanBnJzsKLy8tLT4KPC9zY3JpcHQ+CjwhLS1Eb24ndCBEaXNwbGF5IHVuZGlm aW5lZCB0ZXN0IGZvciBjcmVkaXQgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZh c2NyaXB0Ij4KPCEtLQphSW1hZ2VBbHRUZXh0W2ldID0gIlRveW90YSIgOwkKYUlt YWdlQWx0VGV4dFtpXSA9IGFJbWFnZUFsdFRleHRbaV0ucmVwbGFjZSgvJnF1b3Q7 L2csIlwiIik7Ci8vLS0+CQo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiPgo8IS0tCmFJbWFnZUVubGFyZ2VMaW5rW2ldID0gJy9tdWx0aW1l ZGlhL2FyY2hpdmUvMDA1ODAvQnVzaW5lc3NfNTgwMzU0YS5qcGcnOwppPWkrMTsK Ly8tLT4KPC9zY3JpcHQ+CQo8ZGl2IGlkPSJkeW5hbWljLWltYWdlLWhvbGRlciI+ PGltZyBzcmM9Ii9tdWx0aW1lZGlhL2FyY2hpdmUvMDA1ODAvQnVzaW5lc3NfNTgw MzU0YS5qcGciIHdpZHRoPSIzODUiIGhlaWdodD0iMTg1IiBib3JkZXI9IjAiIGFs dD0iVG95b3RhIiAvPjwvZGl2Pgo8IS0tIFJlbW92ZSBmb2xsb3dpbmcgPGRpdj4g dG8gbm90IHNob3cgcGhvdG9ncmFwaGVyIGluZm9ybWF0aW9uIC0tPgo8IS0tIFJl bW92ZSBmb2xsb3dpbmcgPGRpdj4gdG8gbm90IHNob3cgaW1hZ2UgZGVzY3JpcHRp b24gLS0+CjwhLS0gUmVtb3ZlIGZvbGxvd2luZyA8ZGl2PiB0byBub3Qgc2hvdyBl bmxhcmdlIG9wdGlvbiAtLT4KPCEtLS0tPgo8ZGl2IGlkPSJwYWdpbmF0aW9uLWNv bnRhaW5lciIgY2xhc3M9InBhZ2luYXRpb24tY29udGFpbmVyIj4KPHNjcmlwdCB0 eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCmZDcmVhdGVJbWFnZUJyb3dzZXIo blNlbGVjdGVkQXJ0aWNsZUltYWdlLCdsYW5kc2NhcGUnLCIvdG9sLyIpOwovLy0t Pgo8L3NjcmlwdD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4KPGRp diBjbGFzcz0icGFkZGluZy1ib3R0b20tMTUiPjwvZGl2Pgo8IS0tIFByaW50IEF1 dGhvciBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgYXJ0aWNsZSAtLT4KPGRpdiBp ZD0ibWFpbi1hcnRpY2xlIj4KPGRpdiBjbGFzcz0iYXJ0aWNsZS1hdXRob3IiPgo8 IS0tIFByaW50IEF1dGhvciBuYW1lIGZyb20gQnkgTGluZSBhc3NvY2lhdGVkIHdp dGggdGhlIGFydGljbGUgLS0+CQo8c3BhbiBjbGFzcz0ic21hbGwiPjwvc3Bhbj48 c3BhbiBjbGFzcz0iYnlsaW5lIj4KUmF5IEh1dHRvbgo8L3NwYW4+CjxkaXYgY2xh c3M9ImNsZWFyIj48L2Rpdj4KPC9kaXY+CjwvZGl2PiAKPGRpdiBpZD0icmVsYXRl ZC1hcnRpY2xlLWxpbmtzIj4JCjxkaXYgY2xhc3M9InBhZGRpbmctbGVmdC1yaWdo dC01Ij4KPCEtLSBCRUdJTjogTTE5IC0gQXJ0aWNsZSB0b29scyAtLT4KPHNwYW4g Y2xhc3M9ImZsb2F0LWxlZnQgcGFkZGluZy1sZWZ0LTggcGFkZGluZy10b3AtMiI+ CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZ1NpdGVMaWZlLlJlY29t bWVuZCgiRXh0ZXJuYWxSZXNvdXJjZSIsICI2NTkwOTA3IiwiaHR0cDovL3d3dy50 aW1lc29ubGluZS5jby51ay90b2wvYnVzaW5lc3MvaW5kdXN0cnlfc2VjdG9ycy90 cmFuc3BvcnQvYXJ0aWNsZTY1OTA5MDcuZWNlIik7Cjwvc2NyaXB0Pgo8ZGl2IGNs YXNzPSJwYWRkaW5nLXRvcC04Ij48L2Rpdj4JCjwvc3Bhbj4JCjxkaXYgY2xhc3M9 ImNsZWFyIj48L2Rpdj4JCjwhLS0gPGRpdiBjbGFzcz0icGFkZGluZy1ib3R0b20t MTAiPjwvZGl2PiAtLT4KPCEtLSBFTkQ6IE0xOSAtIEFydGljbGUgdG9vbHMgLS0+ CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjb21tZW50LWdyZXktbGluZSI+PC9kaXY+Cjxk aXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rpdj4KPC9kaXY+CQo8IS0tIEVO RDogTW9kdWxlIC0gTTI0IEFydGljbGUgSGVhZGxpbmUgd2l0aCBsYW5kc2NhcGUg aW1hZ2UgKGQpIC0tPgo8IS0tIEJFR0lOOiBNb2R1bGUgLSBNYWluIEFydGljbGUg LS0+CjwhLS0gQ2hlY2sgdGhlIEFydGljbGUgVHlwZSBhbmQgZGlzcGxheSBhY2Nv cmRpbmdseS0tPgo8IS0tIFByaW50IEF1dGhvciBpbWFnZSBhc3NvY2lhdGVkIHdp dGggdGhlIEF1dGhvci0tPgo8IS0tIFByaW50IHRoZSBib2R5IG9mIHRoZSBhcnRp Y2xlLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmRpdiNyZWxhdGVkLWFydGlj bGUtbGlua3MgcCBhLCBkaXYjcmVsYXRlZC1hcnRpY2xlLWxpbmtzIHAgYTp2aXNp dGVkIHsKY29sb3I6IzA2YzsKfSAKPC9zdHlsZT4JCjxkaXYgaWQ9InJlbGF0ZWQt YXJ0aWNsZS1saW5rcyI+CjwhLS0gUGFnaW5hdGlvbiAtLT4KPHA+IEJSSVRBSU4g aXMgdG8gbWFrZSBoeWJyaWQgY2FycyBmb3IgdGhlIGZpcnN0IHRpbWUgYWZ0ZXIg YSBkZWNpc2lvbiBieSBUb3lvdGEgdG8gc3RhcnQgcHJvZHVjdGlvbiBvZiB0aGUg aGlnaC10ZWNoIHZlaGljbGVzIGF0IGl0cyBCdXJuYXN0b24gcGxhbnQgbmVhciBE ZXJieS48L3A+CjxwPlRoZSBVSyBpcyB0aGUgZmlyc3QgRXVyb3BlYW4gY291bnRy eSB0aGUgSmFwYW5lc2UgY2FyIGdpYW50IGhhcyBjaG9zZW4gZm9yIGh5YnJpZCBw cm9kdWN0aW9uLCBhbmQgb25seSB0aGUgdGhpcmQgb3V0c2lkZSBKYXBhbi4gVG95 b3RhIG1ha2VzIG5lYXJseSBhbGwgaXRzIGh5YnJpZHMgaW4gSmFwYW4sIHdpdGgg c21hbGwgbnVtYmVycyBwcm9kdWNlZCBpbiBDaGluYSBhbmQgQW1lcmljYS4gVGhl IGJlc3Qga25vd24gb2YgdGhlc2UgY2FycyBpcyB0aGUgUHJpdXMuPC9wPgo8cD5U aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBuZXcgdmVoaWNsZSB0byBCdXJuYXN0b24g JiMxNTA7IGEgaHlicmlkIHZlcnNpb24gb2YgdGhlIEF1cmlzIGhhdGNoYmFjayAm IzE1MDsgZm9sbG93cyBpbnRlbnNlIG5lZ290aWF0aW9ucyB3aXRoIHRoZSBnb3Zl cm5tZW50IGluIHJlY2VudCBtb250aHMuIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCBC cml0YWluIHdpbGwgcHJvdmlkZSBmaW5hbmNpYWwgYXNzaXN0YW5jZSB0byBoZWxw IHRoZSBtb3ZlLjwvcD4KPHA+T2ZmaWNpYWwgY29uZmlybWF0aW9uIGlzIGV4cGVj dGVkIGluIHRoZSBuZXh0IGZldyBtb250aHMsIHdpdGggR29yZG9uIEJyb3duIGV4 cGVjdGVkIHRvIHZpc2l0IHRoZSBCdXJuYXN0b24gcGxhbnQgZm9yIHRoZSBhbm5v dW5jZW1lbnQuIFRoZSBTdW5kYXkgVGltZXMgaGFzIGxlYXJudCB0aGF0IHByb2R1 Y3Rpb24gaXMgZXhwZWN0ZWQgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGlzIHll YXIuPC9wPgo8IS0tI2luY2x1ZGUgZmlsZT0ibTYzLWFydGljbGUtcmVsYXRlZC1h dHRhY2hlbWVudHMuaHRtbCItLT4gCjwhLS0gQkVHSU46IE1vZHVsZSAtIE02MyAt IEFydGljbGUgUmVsYXRlZCBBdHRhY2hlbWVudHMgLS0+CjxzY3JpcHQgdHlwZT0i dGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90b2wvanMvcGljdHVyZS1nYWxsZXJ5Lmpz Ij48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpmdW5j dGlvbiBzbGlkZXNob3dQb3BVcCh1cmwpCnsKcGljdHVyZUdhbGxlcnlQb3B1cFBp Yyh1cmwpOwpyZXR1cm4gZmFsc2U7Cn0KPC9zY3JpcHQ+CjwhLS0gQkVHSU46IENv bW1lbnQgVGVhc2VyIE1vZHVsZSAtLT4KPGRpdiBjbGFzcz0iZmxvYXQtbGVmdCBy ZWxhdGVkLWF0dGFjaGVtZW50cy1jb250YWluZXIiPgo8IS0tIEVORDogQ29tbWVu dCBUZWFzZXIgTW9kdWxlIC0tPgkKPCEtLSBCRUdJTjogTW9kdWxlIC0gTTYzIC0g QXJ0aWNsZSBSZWxhdGVkIFBhY2thZ2UgLS0+CjwhLS0gRU5EOiBNb2R1bGUgLSBN NjMgLSBBcnRpY2xlIFJlbGF0ZWQgUGFja2FnZSAtLT4KPGRpdiBjbGFzcz0icmVs YXRlZC1hdHRhY2hlbWVudHMtdG9wIHBhZGRpbmctdG9wLTEwIj4KPGgzIGNsYXNz PSJzZWN0aW9uLWhlYWRpbmciPlJlbGF0ZWQgTGlua3M8L2gzPgo8L2Rpdj4KPGRp diBjbGFzcz0icmVsYXRlZC1hdHRhY2hlbWVudHMtc2lkZSBwYWRkaW5nLXRvcC03 IHBhZGRpbmctYm90dG9tLTEwIHBhZGRpbmctcmlnaHQtNyI+CjxkaXYgY2xhc3M9 InBhZGRpbmctYm90dG9tLTUgcGFkZGluZy10b3AtMyI+Cjxmb3JtIG5hbWU9InJl bGF0ZWRMaW5rc2Zvcm0iIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgo8L2Zvcm0+ Cjx1bCBjbGFzcz0iY2hldnJvbi1saXN0IGNoZXZyb24tYmx1ZSI+CjxsaT48YSBo cmVmPScvdG9sL2J1c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMvdHJhbnNwb3J0L2Fy dGljbGU2NTkwOTg0LmVjZScgY2xhc3M9ImxpbmstNjY2Ij4KUmFpbCBmcmFuY2hp c2UgdGFsa3MgY29sbGFwc2UKPC9hPjwvbGk+CjwvdWw+Cjxmb3JtIG5hbWU9InJl bGF0ZWRMaW5rc2Zvcm0iIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgo8L2Zvcm0+ CjwvZGl2Pgo8L2Rpdj4KPCEtLSBCRUdJTjogUE9MTCAtLT4KPCEtLVRoaXMgYmxv Y2sgd2lsbCBleGVjdXRlIGlmIGFuIGFydGljbGUgb2YgdHlwZSBQb2xsIGlzIGF0 dGFjaGVkLS0+CQo8IS0tIEVORCA6IFBPTEwgLS0+CjwhLS0gQkVHSU46IERFQkFU RS0tPgo8IS0tIEVORDogREVCQVRFLS0+CjxkaXYgY2xhc3M9ImNsZWFyIHJlbGF0 ZWQtYXR0YWNoZW1lbnRzLWJvdHRvbSI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRp bmctdG9wLTUiPjwvZGl2Pgo8L2Rpdj4KPCEtLSBFTkQ6IE1vZHVsZSAtIE02MyAt IEFydGljbGUgUmVsYXRlZCBBdHRhY2hlbWVudHMgLS0+CjxwPk1pbmlzdGVycyBh cmUgZXhwZWN0ZWQgdG8gdHJ1bXBldCB0aGUgbW92ZSBhcyBhbiBleGFtcGxlIG9m IEJyaXRhaW4gcHJvc3BlcmluZyBmcm9tIGEgbmV3IGxvdy1jYXJib24gbWFudWZh Y3R1cmluZyBzZWN0b3IuIE1pbmlzdGVycyBoYXZlIGZvcmVjYXN0IDFtICZsZHF1 bztncmVlbi1jb2xsYXImcmRxdW87IGpvYnMgYW5kIGhhdmUgZnVubmVsbGVkIGZp bmFuY2lhbCBhc3Npc3RhbmNlIGZvciB0aGUgbW90b3IgaW5kdXN0cnkgdG93YXJk cyBoeWJyaWQgYW5kIGVsZWN0cmljLXZlaGljbGUgcHJvamVjdHMuPC9wPgo8cD5F YXJsaWVyIHRoaXMgeWVhciBCcm93biBhbmQgTG9yZCBNYW5kZWwtc29uLCB0aGUg YnVzaW5lc3Mgc2VjcmV0YXJ5LCBzYWlkIHRoZXkgcGxhbm5lZCB0byBtYWtlIEJy aXRhaW4gYSBjZW50cmUgZm9yIHRoZSBwcm9kdWN0aW9uIG9mIGxvdy1lbWlzc2lv biB2ZWhpY2xlcy48L3A+CjxwPkxvcmQgQWRvbmlzLCB0aGUgdHJhbnNwb3J0IHNl Y3JldGFyeSwgYW5kIExvcmQgRHJheXNvbiwgdGhlIHNjaWVuY2UgbWluaXN0ZXIs IGxhc3Qgd2VlayBhbm5vdW5jZWQgdGhlIGF3YXJkIG9mIGdyYW50cyB1bmRlciBh ICZwb3VuZDsyNW0gZWxlY3RyaWMgY2FyIHRyaWFsIChzZWUgcGFuZWwgb24gdGhl IHJpZ2h0KS48L3A+CjxwPkJlc2lkZXMgaW50cm9kdWNpbmcgdGhlIGh5YnJpZCBB dXJpcywgVG95b3RhIHdpbGwgYWxzbyBwYXJ0aWNpcGF0ZSBpbiB0aGlzIGVsZWN0 cmljLXZlaGljbGUgdHJpYWwuIEEgbnVtYmVyIG9mIHBsdWctaW4gUHJpdXMgcHJv dG90eXBlcyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSAzNDAtbW9kZWwgdWx0cmEt bG93LWNhcmJvbiB2ZWhpY2xlIGRlbW9uc3RyYXRpb24gcHJvZ3JhbW1lIHNldCB1 cCBieSB0aGUgVHJhbnNwb3J0IFN0cmF0ZWd5IEJvYXJkLjwvcD4KPHA+VGhlIEF1 cmlzIGh5YnJpZCB3aWxsIG5vdCBoYXZlIGEgcGx1Zy1pbiBmYWNpbGl0eSwgYnV0 IHdpbGwgdXNlIGEgcGV0cm9sIGVuZ2luZSB0byBkcml2ZSB0aGUgY2FyIGluIGNv bWJpbmF0aW9uIHdpdGggYW4gZWxlY3RyaWMgbW90b3IuIEl0IHdpbGwgc2hhcmUg dGhlIDEuOGxpdHJlIHBldHJvbCBlbmdpbmUgYW5kIGVsZWN0cmljIG1vdG9yIHdp dGggdGhlIG5ldyBQcml1cywgd2hpY2ggaGFzIHRoZSBsb3dlc3QgY2FyYm9uIGRp b3hpZGUgZW1pc3Npb25zIG9mIGFueSBmaXZlLXNlYXRlciBjYXIsIGF0IDg5ZyBw ZXIga2lsb21ldHJlLCBhbmQgYW4gb2ZmaWNpYWwgYXZlcmFnZSBmdWVsIGNvbnN1 bXB0aW9uIGZpZ3VyZSBvZiA3Mi40bXBnLjwvcD4KPHA+QWx0aG91Z2ggdGhlIEF1 cmlzIGFuZCBQcml1cyBhcmUgYnVpbHQgb24gdGhlIHNhbWUgY2hhc3NpcyBwbGF0 Zm9ybSwgdGhlIEF1cmlzIGlzIHNtYWxsZXIgYW5kIGxpZ2h0ZXIgYW5kIHNvIGlz IGxpa2VseSB0byBoYXZlIGFuIGV2ZW4gbG93ZXIgY2FyYm9uLWRpb3hpZGUgcmF0 aW5nLjwvcD4KPHA+V2hlbiBpdCBnb2VzIG9uIHNhbGUgZWFybHkgbmV4dCB5ZWFy LCBpdCBpcyBleHBlY3RlZCB0byBiZSBwcmljZWQgYmVsb3cgdGhlICZwb3VuZDsx OCwzNzAgUHJpdXMsIGNsb3NlciB0byB0aGUgcmVjZW50bHkgbGF1bmNoZWQgSG9u ZGEgSW5zaWdodCBIeWJyaWQsIHdoaWNoIHN0YXJ0cyBhdCAmcG91bmQ7MTUsNDkw LjwvcD4KPHA+QnVybmFzdG9uIG1ha2VzIHRoZSBBdXJpcyBhbmQgdGhlIGxhcmdl ciBBdmVuc2lzIGluIHRoZWlyIGVudGlyZXR5LCB1c2luZyBlbmdpbmVzIGJ1aWx0 IGF0IERlZXNpZGUsIE5vcnRoIFdhbGVzLCBidXQgdGhlIGh5YnJpZCZyc3F1bztz IGRyaXZlIHN5c3RlbSAoZW5naW5lLCBtb3RvciwgYmF0dGVyaWVzIGFuZCBlbGVj dHJvbmljcykgd2lsbCBiZSBpbXBvcnRlZCBmcm9tIEphcGFuLjwvcD4KPHA+VGhp cyB3aWxsIGJlIHRoZSBmaXJzdCBoeWJyaWQgYmFzZWQgb24gYW4gZXhpc3Rpbmcg cHJvZHVjdGlvbiBtb2RlbCB0aGF0IFRveW90YSBoYXMgc29sZCBpbiBFdXJvcGUu PC9wPgo8cD5UaGUgcG9wdWxhcml0eSBvZiB0aGUgUHJpdXMgb24gYm90aCBzaWRl cyBvZiB0aGUgQXRsYW50aWMgaXMgYXQgbGVhc3QgcGFydGx5IGJlY2F1c2UgaXRz IGZ1dHVyaXN0aWMgc3R5bGluZyBpZGVudGlmaWVzIGl0IGFzIGEgc3BlY2lhbCBt b2RlbCAmIzE1MDsgb3duZXJzIGNhbiBiZSBzZWVuIHRvIGJlIGdyZWVuLiBNb3Jl IHRoYW4gMW0gUHJpdXNlcyBoYXZlIGJlZW4gc29sZCB3b3JsZC13aWRlIHNpbmNl IGl0IGZpcnN0IGFwcGVhcmVkIGluIDE5OTcuPC9wPgo8cD5JdCByZW1haW5zIHRv IGJlIHNlZW4gd2hldGhlciBhbiBBdXJpcyBoeWJyaWQgdGhhdCBsb29rcyBsaWtl IGl0cyBwZXRyb2wgYW5kIGRpZXNlbCBjb3VudGVycGFydHMgd2lsbCBiZSBhIHN1 Y2Nlc3MuIFRoZSBIb25kYSBDaXZpYyBIeWJyaWQgJiMxNTA7IGEgdmVyc2lvbiBv ZiBhbiBleGlzdGluZyBtb2RlbCAmIzE1MDsgZGlkIG5vdCBzZWxsIGFzIHdlbGwg YXMgdGhlIFByaXVzLCB3aGljaCBpcyB3aHkgdGhlIG5ldyBJbnNpZ2h0IHdhcyBl c3RhYmxpc2hlZCBhcyBhIHNlcGFyYXRlIG1vZGVsIHdpdGggYSByZW1hcmthYmxl IHNpbWlsYXJpdHkgdG8gVG95b3RhJnJzcXVvO3MgdHJlbmRzZXR0ZXIuPC9wPgo8 cD5Ub3lvdGEgaXMgd29ya2luZyBvbiBhIHB1cmUgZWxlY3RyaWMgc21hbGwgY2Fy LCBiYXNlZCBvbiB0aGUgaVEsIHRoYXQgd2lsbCBiZSByZWNoYXJnZWQgYnkgcGx1 Z2dpbmcgaXQgaW50byBhbiBleHRlcm5hbCBlbGVjdHJpY2l0eSBzdXBwbHksIGJ1 dCB0aGUgY29tcGFueSBjb250aW51ZXMgdG8gZmF2b3VyIHRoZSBwZXRyb2wtZWxl Y3RyaWMgaHlicmlkIHN5c3RlbSBmb3IgbWFpbnN0cmVhbSBtb2RlbHMuPC9wPgo8 cD5JdCBoYXMgYSB0YXJnZXQgdG8gYnVpbGQgMW0gaHlicmlkcyBhIHllYXIuIFRo b3NlIHdpbGwgaW5jbHVkZSBhIHdpZGVyIHZhcmlldHkgb2YgTGV4dXMgcHJlbWl1 bSBtb2RlbHMgYW5kIGh5YnJpZCB2ZXJzaW9ucyBvZiB0aGUgVG95b3RhIFlhcmlz IGFuZCBSYXY0LjwvcD4KPHA+Q3VycmVudCBwbGFucyBmb3IgaHlicmlkIHByb2R1 Y3Rpb24gYXQgQnVybmFzdG9uIGRvIG5vdCBleHRlbmQgYmV5b25kIHRoZSBBdXJp cy48L3A+CjxwPkZvciBtb3N0IEV1cm9wZWFuIG1hcmtldHMsIGRpZXNlbCBlbmdp bmVzIGFyZSBhIHN0cm9uZ2VyIHByb3Bvc2l0aW9uIGluIHRoZSBBdmVuc2lzIHNp emUgYW5kIHByaWNlIGNsYXNzLjwvcD4KPHA+VG95b3RhIGlzIG9uZSBvZiBCcml0 YWluJnJzcXVvO3MgbGFyZ2VzdCBtb3Rvci1pbmR1c3RyeSBlbXBsb3llcnMsIHdp dGggNCwzMDAgc3RhZmYgYXQgdHdvIHBsYW50cyAmIzE1MDsgQnVybmFzdG9uIGFu ZCBpdHMgZW5naW5lIHBsYW50IGF0IERlZXNpZGUuPC9wPgo8cD5TbyBmYXIgdGhl IHBsYW50cyBoYXZlIGVzY2FwZWQgdGhlIHdvcnN0IG9mIHRoZSByZWNlc3Npb24u IFdoaWxlIHNldmVyYWwgQnJpdGlzaCBmYWN0b3JpZXMgaGF2ZSBoYWQgdG8gY2xv c2UgZm9yIHNldmVyYWwgbW9udGhzLCB0aGUgVG95b3RhIGZhY2lsaXRpZXMgaGF2 ZSBiZWVuIGFibGUgdG8gbGltaXQgdGhlIGZhbGxvdXQgdG8gYSBzZXJpZXMgb2Yg d2Vlay1sb25nIHN0b3BwYWdlcywgc2hvcnQtdGltZSB3b3JraW5nIGFuZCBhIDEw JSBhY3Jvc3MtdGhlLWJvYXJkIHBheSBjdXQuPC9wPgo8cD5MYXN0IHllYXIgVG95 b3RhJnJzcXVvO3MgY2FyIHByb2R1Y3Rpb24gaW4gdGhlIFVLIGZlbGwgYnkgMjAl IHRvIDIxMywwMDAuIEl0cyBzYWxlcyBvZiBjYXJzIGluIHRoZSBVSyBmZWxsIDEz JSB0byAxMjQsMzgyLjwvcD4KPHA+QWtpbyBUb3lvZGEsIHdobyByZWNlbnRseSB0 b29rIG92ZXIgYXMgcHJlc2lkZW50IG9mIFRveW90YSwgbGFzdCB3ZWVrIHBsZWRn ZWQgYSBzd2VlcGluZyByZXN0cnVjdHVyaW5nIG9mIHRoZSBncm91cCB0byByZXR1 cm4gaXQgdG8gcHJvZml0LiBJdCBsb3N0ICQ0LjYgYmlsbGlvbiAoJnBvdW5kOzIu OCBiaWxsaW9uKSBsYXN0IHllYXIgYW5kIGZvcmVjYXN0cyBhIGJpZ2dlciBkZWZp Y2l0IHRoaXMgeWVhci48L3A+CjxwPgo8Yj5JTiBUSEUgTUFHQVpJTkU8L2I+Cjxi cj5Ib3cgdG8gbWFrZSBCcml0YWluIGdyZWVuIGFuZCBjbGVhbiBQYXJ0IG9uZTog U2VhLCBzaG9yZSBhbmQgYmVhY2ggCjxiPlRIRSBTVU5EQVkgVElNRVMgTUFHQVpJ TkUgVFJJQUwgSElUUyBUSEUgU1RSRUVUUzwvYj4KPGJyPkVJR0hUIGdyb3VwcyBo YXZlIGJlZW4gaGFuZGVkICZwb3VuZDsyNW0gYnkgdGhlIERlcGFydG1lbnQgZm9y IFRyYW5zcG9ydCB0byB0ZXN0LWRyaXZlIGVsZWN0cmljIGNhcnMgb24gb3VyIHN0 cmVldHMuIFRoZSByZWNpcGllbnRzIHJhbmdlIGZyb20gY2FyIGdpYW50cyB0byBn cm91cHMgbGVkIGJ5IGxvY2FsIGNvdW5jaWxzIGFuZCB0ZWNobm9sb2d5IGNvbXBh bmllcy4gRm9yZCB3aWxsIHRlc3QgYSBiYXR0ZXJ5LXBvd2VyZWQgdmVyc2lvbiBv ZiB0aGUgRm9jdXMsIEJyaXRhaW4mcnNxdW87cyBiZXN0LXNlbGxpbmcgY2FyLCB3 aGlsZSBCTVcgd2lsbCBsZWFkIGEgdGVhbSB0ZXN0aW5nIGFuIGVsZWN0cmljIE1p bmksIGFuZCBUb3lvdGEgd2lsbCB0cnkgb3V0IGEgcGx1Zy1pbiBQcml1cy4gVGhl IGFpbSBpcyB0byBtYWtlIHVsdHJhLWxvdy1jYXJib24gdmVoaWNsZXMgYW4gZXZl cnlkYXkgZmVhdHVyZSBvZiBCcml0aXNoIGxpZmUgaW4gbGVzcyB0aGFuIGZpdmUg eWVhcnMuCjwvcD4KPHA+SW4gYSBzZXBhcmF0ZSBtb3ZlLCBmb3VyIG90aGVyIGNv bXBhbmllcyAmIzE1MDsgQXNod29vZHMsIEFsbGllZCBWZWhpY2xlcywgTW9kZWMg YW5kIFNtaXRoIEVsZWN0cmljIFZlaGljbGVzICYjMTUwOyBoYXZlIGJlZW4gY2hv c2VuIGJ5IHRoZSBEZXBhcnRtZW50IGZvciBUcmFuc3BvcnQgdG8gcHJvdmlkZSBs b3ctY2FyYm9uIGFuZCBlbGVjdHJpYyB2YW5zIGZvciBnb3Zlcm5tZW50IGFuZCBj b3VuY2lsIGZsZWV0IHRyaWFscy48L3A+CjxwPlRoZSBmb3VyIHdpbGwgc2hhcmUg JnBvdW5kOzIwbSBvZiBnb3Zlcm5tZW50IG1vbmV5IHRvIHByb2R1Y2UgYSBmbGVl dCBvZiAxMDAgdG8gMTUwIHZlaGljbGVzIHRoYXQgd2lsbCBiZSBwdXQgaW50byBz ZXJ2aWNlIHdpdGggY291bmNpbCBhbmQgZ292ZXJubWVudCBkZXBhcnRtZW50cyB0 byBhc3Nlc3MgdGhlaXIgcHJhY3RpY2FsaXR5IGFuZCBwb3RlbnRpYWwgZm9yIGZ1 ZWwgc2F2aW5ncy4gRXZlbnR1YWxseSwgdGhlc2UgdHJpYWxzIHdpbGwgYmUgdXNl ZCBhcyB0aGUgZm91bmRhdGlvbiBmb3IgYSBsYXJnZXIsIGdvdmVybm1lbnQtd2lk ZSBwdXJjaGFzZSBvZiBsb3ctZW1pc3Npb24gdmFucy48L3A+CjwvZGl2Pgo8IS0t IEVuZCBvZiBwYWdpbmF0aW9uIC0tPgkKPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2 Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC01Ij48L2Rpdj4KPCEtLSBTaG93IHJh dGluZyBvZiB0aGlzIGFydGljbGUgLS0+CjwhLS0gQ29udGV4dHVhbCBsaW5rcyBN b2R1bGUgLS0+CjwhLS0gRW5kIENvbnRleHR1YWwgbGlua3MgTW9kdWxlIC0tPgo8 IS0tIEJFR0lOOiBNMTkgLSBBcnRpY2xlIHRvb2xzIC0tPgo8c2NyaXB0IHR5cGU9 InRleHQvamF2YXNjcmlwdCI+CjwhLS0KcmFuZG51bSA9IHJhbmRudW07Ci8vZm9y IHByaW50ZnJpZW5kbHkgcG9wVXAgdG9rZW4gYWRkIGZvciB0d28gY2FzZXMgaWYg YXJ0aWNsZSBoYXZlIGRpcmVjdCBwcmV2aWV3ZCBhbmQgYW5vdGhlciB1c2luZyBz ZWN0aW9uCmZ1bmN0aW9uIHByaW50UG9wVXAodXJsLHRva2VuKXsKdmFyIHBhZ2VV cmw9dXJsOwppZih0b2tlbi5sZW5ndGghPTApewpwYWdlVXJsID0gdXJsKyI/dG9r ZW49Iit0b2tlbisiJnByaW50PXllcyIrIiZyYW5kbnVtPSIrcmFuZG51bTsKfQpl bHNleyAKcGFnZVVybCA9IHVybCsiP3ByaW50PXllcyIrIiZyYW5kbnVtPSIrcmFu ZG51bTsKfQpyZXR1cm4gd2luZG93Lm9wZW4ocGFnZVVybCwncHJpbnQnLCdzY3Jv bGxiYXJzPXllcyx0b29sYmFyPW5vLHdpZHRoPTY1MCxoZWlnaHQ9NjUwLHJlc2l6 YWJsZT15ZXMnKTsKfQovLy0tPgo8L3NjcmlwdD4KPGRpdiBjbGFzcz0iZ3JleS1s aW5lIj48L2Rpdj4KPGRpdiBjbGFzcz0iZmxvYXQtbGVmdCBwYWRkaW5nLWJvdHRv bS01IHBhZGRpbmctdG9wLTgiPgo8c3BhbiBjbGFzcz0iZmxvYXQtbGVmdCBwYWRk aW5nLWxlZnQtMyI+PHVsPjxsaSBjbGFzcz0icHJpbnQtY29tbWVudCI+PGEgY2xh c3M9ImxpbmstOTk5IiBocmVmPSJqYXZhc2NyaXB0OjsiIG9uQ2xpY2s9InJldHVy biBwcmludFBvcFVwKCcvdG9sL2J1c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMvdHJh bnNwb3J0L2FydGljbGU2NTkwOTA3LmVjZScsJycpIj5QcmludDwvYT48L2xpPjwv dWw+PC9zcGFuPgo8c3BhbiBjbGFzcz0iZmxvYXQtbGVmdCBwYWRkaW5nLWxlZnQt MTAiPjx1bD48bGkgY2xhc3M9ImNvbW1lbnQtZW1haWwiPjxhIGNsYXNzPSJsaW5r LTk5OSIgaHJlZj0ibWFpbHRvOj9TdWJqZWN0PUkgc2F3IHRoaXMgb24gVGltZXMg T25saW5lIGFuZCB0aG91Z2h0IHlvdSBtaWdodCBiZSBpbnRlcmVzdGVkJkJvZHk9 QXQgbGFzdCwgQnJpdGFpbiBpcyByZWFkeSB0byBidWlsZCBoeWJyaWQgY2FycyUw QSUwQWh0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsvdG9sL2J1c2luZXNzL2lu ZHVzdHJ5X3NlY3RvcnMvdHJhbnNwb3J0L2FydGljbGU2NTkwOTA3LmVjZSI+RW1h aWw8L2E+PC9saT48L3VsPjwvc3Bhbj4KPHNwYW4gY2xhc3M9ImZsb2F0LWxlZnQg cGFkZGluZy1sZWZ0LTEwIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+ dmFyIGFkZHRoaXNfcHViPSJhcnRpY2xldG9sIjs8L3NjcmlwdD4KPGEgaHJlZj0i aHR0cDovL3d3dy5hZGR0aGlzLmNvbS9ib29rbWFyay5waHA/dj0yMCIgb25tb3Vz ZW92ZXI9InJldHVybiBhZGR0aGlzX29wZW4odGhpcywgJycsICdbVVJMXScsICdb VElUTEVdJykiIG9ubW91c2VvdXQ9ImFkZHRoaXNfY2xvc2UoKSIgb25jbGljaz0i cmV0dXJuIGFkZHRoaXNfc2VuZHRvKCkiPjxpbWcgc3JjPSJodHRwOi8vczcuYWRk dGhpcy5jb20vc3RhdGljL2J0bi9sZy1zaGFyZS1lbi5naWYiIHdpZHRoPSIxMjUi IGhlaWdodD0iMTYiIGFsdD0iQm9va21hcmsgYW5kIFNoYXJlIiBzdHlsZT0iYm9y ZGVyOjAiLz48L2E+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i aHR0cDovL3M3LmFkZHRoaXMuY29tL2pzLzIwMC9hZGR0aGlzX3dpZGdldC5qcyI+ PC9zY3JpcHQ+PC9zcGFuPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2 Pgo8IS0tIDxkaXYgY2xhc3M9InBhZGRpbmctYm90dG9tLTEwIj48L2Rpdj4gLS0+ CjwhLS0gRU5EOiBNMTkgLSBBcnRpY2xlIHRvb2xzIC0tPgo8c2NyaXB0IHR5cGU9 InRleHQvamF2YXNjcmlwdCI+CnZhciBkaXNwbGF5QmVoYXZpb3VyYWxOYXYgPSB0 cnVlOwo8L3NjcmlwdD4KPCEtLSBCRUdJTjogTTk0IC0gR29vZ2xlIEFkcyAtLT4J CjwhLS0gQkVHSU46IE1vZHVsZSAtIEFkdmVydDpUb3AgLS0+CjwhRE9DVFlQRSBI VE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9F TiI+CjxIVE1MPgo8SEVBRD4KPCEtLSBCRUdJTjogTTk0IC0gR29vZ2xlIEFkcyAt LT4KPCEtLVdoZW4gY2hlY2tlZCwgY2F1c2VzIHRoZSBhZCBub3QgdG8gYmUgZGlz cGxheWVkIC0tPgo8ZGl2IGlkPSJnb29nbGUtYWQtYXJ0Ij4gCjwhLS0gdGhpcyB3 aWxsIGJlIHBvcHVsYXRlZCBmcm9tIENNUyAtLT4KPHNjcmlwdCBsYW5ndWFnZT0i SmF2YVNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gZ29vZ2xlX2FkX3JlcXVlc3RfZG9u ZShnb29nbGVfYWRzKSB7Ci8qCiogVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBh bmQgaXMgdXNlZCB0byBkaXNwbGF5CiogdGhlIGFkcyB0aGF0IGFyZSByZXR1cm5l ZCBmcm9tIHRoZSBKYXZhU2NyaXB0CiogcmVxdWVzdC4gWW91IHNob3VsZCBtb2Rp ZnkgdGhlIGRvY3VtZW50LndyaXRlCiogY29tbWFuZHMgc28gdGhhdCB0aGUgSFRN TCB0aGV5IHdyaXRlIG91dCBmaXRzCiogd2l0aCB5b3VyIGRlc2lyZWQgYWQgbGF5 b3V0LgoqLwp2YXIgcyA9ICcnOwp2YXIgaTsKLyoKKiBWZXJpZnkgdGhhdCB0aGVy ZSBhcmUgYWN0dWFsbHkgYWRzIHRvIGRpc3BsYXkuCiovCmlmIChnb29nbGVfYWRz Lmxlbmd0aCA9PSAwKQpyZXR1cm47Ci8qCiogSWYgYW4gaW1hZ2Ugb3IgRmxhc2gg YWQgaXMgcmV0dXJuZWQsIGRpc3BsYXkgdGhhdCBhZC4KKiBJZiBhIHJpY2ggbWVk aWEgYWQgaXMgcmV0dXJuZWQsIGRpc3BsYXkgdGhhdCBhcyAiYXMgaXMuIgoqIE90 aGVyd2lzZSwgYnVpbGQgYSBzdHJpbmcgY29udGFpbmluZyBhbGwgb2YgdGhlIGFk cyBhbmQKKiB0aGVuIHVzZSBhIGRvY3VtZW50LndyaXRlKCkgY29tbWFuZCB0byBw cmludCB0aGF0IHN0cmluZy4KKi8KaWYgKGdvb2dsZV9hZHNbMF0udHlwZSA9PSAi dGV4dCIpIHsKcyArPSAnPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O2ZhY2U9 ImFyaWFsLHNhbnMtc2VyaWYiO2NvbG9yPSIjMDAwMDAwIjtmb250LXNpemU6MTFw eCI+QWRzIGJ5IEdvb2dsZTwvZGl2Pic7CmlmIChnb29nbGVfYWRzLmxlbmd0aCA9 PSAxKSB7Ci8qCiogUGFydG5lcnMgc2hvdWxkIGFkanVzdCB0ZXh0IHNpemVzCiog c28gYWRzIG9jY3VweSB0aGUgbWFqb3JpdHkgb2YgYWQgc3BhY2UuCiovCnMgKz0g JzxiciAvPjxhIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Iicg KyBnb29nbGVfYWRzWzBdLnVybCArICciICcgKwonb25tb3VzZW91dD0id2luZG93 LnN0YXR1cz1cJ1wnIiAnICsKJ29ubW91c2VvdmVyPSJ3aW5kb3cuc3RhdHVzPVwn Z28gdG8gJyArCmdvb2dsZV9hZHNbMF0udmlzaWJsZV91cmwgKyAnXCc7cmV0dXJu IHRydWU7Ij4gJysnIDxoMiBjbGFzcz0ic3ViLWhlYWRpbmctcHVmZiBjb2xvci0w NmMgcGFkZGluZy10b3AtNSBsaW5rLTA2YyIgc3R5bGU9InRleHQtZGVjb3JhdGlv bjp1bmRlcmxpbmU7Ij4nICsKJzxiPicgKyBnb29nbGVfYWRzWzBdLmxpbmUxICsg JzwvYj48YnIgLz48L2gyPicgKyc8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxM3B4 O2xpbmUtaGVpZ2h0OjE0cHg7Y29sb3I6IzAwMDAwMDsiPicgKwpnb29nbGVfYWRz WzBdLmxpbmUyICsgJzwvc3Bhbj4nICsnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTog MTNweDtsaW5lLWhlaWdodDoxNHB4O2NvbG9yOiMwMDAwMDA7Ij4nKwpnb29nbGVf YWRzWzBdLmxpbmUzICsgJzxiciAvPjwvc3Bhbj4nICsKJzxzcGFuIHN0eWxlPSJj b2xvcjojOTk5OTk5OyI+JyArCmdvb2dsZV9hZHNbMF0udmlzaWJsZV91cmwgKyAn PC9zcGFuPjwvYT48YnIgLz4nCn0KZWxzZSBpZiAoZ29vZ2xlX2Fkcy5sZW5ndGgg PiAxKSB7Ci8qCiogRm9yIHRleHQgYWRzLCBhcHBlbmQgZWFjaCBhZCB0byB0aGUg c3RyaW5nLgoqLwkKZm9yKGk9MDsgaSA8IGdvb2dsZV9hZHMubGVuZ3RoOyArK2kp IHsKcyArPSAnPGJyIC8+PGEgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lOyIg aHJlZj0iJyArIGdvb2dsZV9hZHNbaV0udXJsICsgJyIgJyArCidvbm1vdXNlb3V0 PSJ3aW5kb3cuc3RhdHVzPVwnXCciICcgKwonb25tb3VzZW92ZXI9IndpbmRvdy5z dGF0dXM9XCdnbyB0byAnICsKZ29vZ2xlX2Fkc1tpXS52aXNpYmxlX3VybCArICdc JztyZXR1cm4gdHJ1ZTsiPiAnKycgPGgyIGNsYXNzPSJzdWItaGVhZGluZy1wdWZm IGNvbG9yLTA2YyBwYWRkaW5nLXRvcC01IGxpbmstMDZjIiBzdHlsZT0idGV4dC1k ZWNvcmF0aW9uOnVuZGVybGluZTsiPicgKwonPGI+JyArIGdvb2dsZV9hZHNbaV0u bGluZTEgKyAnPC9iPjxiciAvPjwvaDI+JyArJzxzcGFuIHN0eWxlPSJmb250LXNp emU6IDEzcHg7bGluZS1oZWlnaHQ6MTRweDtjb2xvcjojMDAwMDAwOyI+JyArCmdv b2dsZV9hZHNbaV0ubGluZTIgKyAnPC9zcGFuPicgKyc8c3BhbiBzdHlsZT0iZm9u dC1zaXplOiAxM3B4O2xpbmUtaGVpZ2h0OjE0cHg7Y29sb3I6IzAwMDAwMDsiPicr Cmdvb2dsZV9hZHNbaV0ubGluZTMgKyAnPGJyIC8+PC9zcGFuPicgKwonPHNwYW4g c3R5bGU9ImNvbG9yOiM5OTk5OTk7Ij4nICsKZ29vZ2xlX2Fkc1tpXS52aXNpYmxl X3VybCArICc8L3NwYW4+PC9hPjxiciAvPic7Cn0KfQp9CmRvY3VtZW50LndyaXRl KHMpOwpyZXR1cm47Cn0KLy9nb29nbGVfYWRfd2lkdGggPSAnMzM2JzsKLy9nb29n bGVfYWRfaGVpZ2h0ID0gJzI4MCc7Cmdvb2dsZV9hZF9jbGllbnQgPSAnY2EtdGlt ZXNncm91cGRpZ2l0YWxfaW5kZXhfaHRtbCc7IC8vIHN1YnN0aXR1dGUgeW91ciBj bGllbnRfaWQKZ29vZ2xlX2FkX2NoYW5uZWwgPSAnYnVzaW5lc3MnOwpnb29nbGVf YWRfdHlwZSA9ICd0ZXh0JzsgLy8gdHlwZSBvZiBhZHMgdG8gZGlzcGxheQpnb29n bGVfYWRfb3V0cHV0ID0gJ2pzJzsKZ29vZ2xlX21heF9udW1fYWRzID0gJzMnOwpn b29nbGVfbGFuZ3VhZ2UgPSAnZW4nOwpnb29nbGVfZW5jb2RpbmcgPSAndXRmOCc7 Cmdvb2dsZV9zYWZlID0gJ2hpZ2gnOwpnb29nbGVfYWR0ZXN0ID0gJ29mZic7Ci8v IC0tPgo8L3NjcmlwdD4KPCEtLQovKgoqIFRoZSBKYXZhU2NyaXB0IHJldHVybmVk IGZyb20gdGhlIGZvbGxvd2luZyBwYWdlIHVzZXMKKiB0aGUgcGFyYW1ldGVyIHZh bHVlcyBhc3NpZ25lZCBhYm92ZSB0byBwb3B1bGF0ZSBhbgphcnJheQoqIG9mIGFk IG9iamVjdHMuIE9uY2UgdGhhdCBhcnJheSBoYXMgYmVlbiBwb3B1bGF0ZWQsCiog dGhlIEphdmFTY3JpcHQgd2lsbCBjYWxsIHRoZSBnb29nbGVfYWRfcmVxdWVzdF9k b25lCiogZnVuY3Rpb24gdG8gZGlzcGxheSB0aGUgYWRzLgoqLwotLT4KPHNjcmlw dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0naHR0cDovL3BhZ2VhZDIuZ29v Z2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qcycgPgo8L3Njcmlw dD4KPC9kaXY+CjwhLS0gRU5EOiBNOTQgLSBHb29nbGUgQWRzIC0tPgo8L0hFQUQ+ CjwvSFRNTD4KPCEtLSBFTkQ6IE1vZHVsZSAtIEFkdmVydDpUb3AgLS0+CjwhLS0g RU5EOiBNOTQgLSBHb29nbGUgQWRzIC0tPgo8ZGl2IGNsYXNzPSJwdWZmLXRvcCI+ CjxkaXYgY2xhc3M9InB1ZmYtc2lkZXMtMzg1Ij4KPGRpdiBjbGFzcz0icHVmZi1w YWRkaW5nIj4KPHVsIGNsYXNzPSJwYWRkaW5nLWJvdHRvbS0xMCI+CjwhLS0gRm9y IHRvcGljcyBpbiB0aGlzIFNlY3Rpb24gLS0+CjwvdWw+CjwhLS0gQWxzbyBpbiBm b3IgUGFyZW50IFNlY3Rpb24gLS0+CQo8aDMgY2xhc3M9InNlY3Rpb24taGVhZGlu ZyI+QWxzbyBpbiBUcmFuc3BvcnQgPC9oMz4KPGRpdiBjbGFzcz0id2lkdGgtMTAw LXBlcmNlbnQiPgo8dWwgY2xhc3M9ImNoZXZyb24tbGlzdCBjaGV2cm9uLWJsdWUi Pgo8bGk+PGEgY2xhc3M9ImxpbmstNjY2IiBocmVmPScvdG9sL2J1c2luZXNzL2lu ZHVzdHJ5X3NlY3RvcnMvdHJhbnNwb3J0L2FydGljbGU2NzE4NjUxLmVjZScgLz5Q ZW5zaW9uIGZ1bmQgYmFpbHMgb3V0IEJyaXRpc2ggQWlyd2F5cyB3aXRoICYjMTYz OzMzMG0gaW5qZWN0aW9uIHRvIGtlZXAgaXQgaW4gdGhlIGFpcjwvYT48L2xpPgo8 bGk+PGEgY2xhc3M9ImxpbmstNjY2IiBocmVmPScvdG9sL2J1c2luZXNzL2NvbHVt bmlzdHMvYXJ0aWNsZTY3MTg2NjIuZWNlJyAvPkJBIGZ1bmQgbWFrZXMgYSBjYWxj dWxhdGVkIGdhbWJsZTwvYT48L2xpPgo8bGk+PGEgY2xhc3M9ImxpbmstNjY2IiBo cmVmPScvdG9sL2J1c2luZXNzL2NvbHVtbmlzdHMvYXJ0aWNsZTY3MTcyOTUuZWNl JyAvPkJyb3duIHJvbGxzIHVwIHRoZSB3ZWxjb21lIG1hdCBmb3IgdG91cmlzdHM8 L2E+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFyLXNpbXBsZSI+ PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctYm90dG9tLTEwIj48L2Rpdj4KPCEt LSBBbHNvIGluIGZvciBHcmFuZCBQYXJlbnQgU2VjdGlvbiAtLT4KPGgzIGNsYXNz PSJzZWN0aW9uLWhlYWRpbmciPkFsc28gaW4gSW5kdXN0cnkgU2VjdG9ycyA8L2gz Pgo8ZGl2IGNsYXNzPSJ3aWR0aC0xMDAtcGVyY2VudCI+Cjx1bCBjbGFzcz0iY2hl dnJvbi1saXN0IGNoZXZyb24tYmx1ZSI+CjxsaT48YSBjbGFzcz0ibGluay02NjYi IGhyZWY9Jy90b2wvYnVzaW5lc3MvaW5kdXN0cnlfc2VjdG9ycy9hcnRpY2xlNjcx ODYzMi5lY2UnIC8+R2VuZXJhbCBFbGVjdHJpYyBwcm9maXRzIGhhbHZlIGFzIGhl YXZ5IGluZHVzdHJpYWwgdW5pdHMgZmVlbCB3ZWlnaHQgb2YgcmVjZXNzaW9uPC9h PjwvbGk+CjxsaT48YSBjbGFzcz0ibGluay02NjYiIGhyZWY9Jy90b2wvYnVzaW5l c3MvaW5kdXN0cnlfc2VjdG9ycy9hcnRpY2xlNjcxODYzNS5lY2UnIC8+U21pdGgg QmFybmV5IHNhbGUgYWxsb3dzIENpdGlncm91cCB0byBzaG93IHByb2ZpdDwvYT48 L2xpPgo8bGk+PGEgY2xhc3M9ImxpbmstNjY2IiBocmVmPScvdG9sL2J1c2luZXNz L2luZHVzdHJ5X3NlY3RvcnMvaW5kdXN0cmlhbHMvYXJ0aWNsZTY3MTg2NDMuZWNl JyAvPlJlZHVuZGFuY3kgZmVhcnMgcmlzZSBhcyBSaXBwbGV3b29kIGV5ZXMgVmF1 eGhhbGw8L2E+PC9saT4KPC91bD4KPC9kaXY+CQo8ZGl2IGNsYXNzPSJjbGVhci1z aW1wbGUiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWJvdHRvbS0xMCI+PC9k aXY+CjwhLS0gTGFzdCByZWFkIC0tPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIt c2ltcGxlIj48L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy1ib3R0b20tMTAiPjwv ZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPGRp diBjbGFzcz0icHVmZi10b3AiPgo8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+Cjwv ZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWJvdHRvbS0xNSI+PC9kaXY+CjwhLS0g QkVHSU46U2VyZW5kaXBpdHkgQ2VsbCAtLT4KPCEtLSBFTkQ6U2VyZW5kaXBpdHkg Q2VsbCAtLT4JCjwvZGl2Pgo8ZGl2IGlkPSJyZWdpb24tY29sdW1uMi1sYXlvdXQy Ij4KPCEtLSBTZWN0aW9uIEVkaXRvciBDaG9pY2UgbW9kdWxlIC0tPgkKPCEtLUNv bW1lcmNpYWwgQWQgUHVibGlzaGVkIERhdGUgOiBGZWIgMywgMjAwNyA0OjM2IFBN LS0+CjwhLS1CdXNpbmVzcyBMb2dpYyBmb3IgU2VjdGlvbiBFZGl0b3IgUGlja3Mg b25seSBvbiBBcnRpY2xlIFBhZ2VzIC0tPgo8IS0tIEVuZCBCdXNpbmVzcyBMb2dp YyBmb3IgU2VjdGlvbiBFZGl0b3IgUGlja3Mgb25seSBvbiBBcnRpY2xlIFBhZ2Vz IC0tPgo8IS0tIEJFR0lOOiBNNjggU2VjdGlvbiBFZGl0b3IncyBQaWNrcyAtLT4K PGRpdiBpZD0iZWRpdG9ycy1ib3giPgo8IS0td2hlbiBBcnRpY2xlIE5vdCBBdHRh Y2hlZCBNb2R1bGUgSGFlZGxpbmUgZG8nbnQgZGlzcGxheSAtLT4KPGgzIGNsYXNz PSJzZWN0aW9uLWhlYWRpbmcgd2hpdGUtbGluZSI+PHNwYW4gY2xhc3M9ImNvbG9y LWY4ZjFkOCI+VGltZXMgUmVjb21tZW5kczwvc3Bhbj48L2gzPgo8dWwgY2xhc3M9 ImNoZXZyb24tbGlzdCBjaGV2cm9uLXdoaXRlIHBhZGRpbmctdG9wLTUiPgo8bGk+ PGEgY2xhc3M9ImxpbmstZmZmIiBocmVmPScvdG9sL2J1c2luZXNzL2luZHVzdHJ5 X3NlY3RvcnMvYmFua2luZ19hbmRfZmluYW5jZS9hcnRpY2xlNjQ2MDUyMi5lY2Un PgpDJmFtcDtHIGF4ZWQgLSAxLDY2MCBqb2JzIHRvIGJlIGxvc3Q8L2E+PC9saT4K PGxpPjxhIGNsYXNzPSJsaW5rLWZmZiIgaHJlZj0nL3RvbC9idXNpbmVzcy9lY29u b21pY3MvYXJ0aWNsZTY0NjEyODYuZWNlJz4KVUsgaG91c2UgcHJpY2VzIHJpc2Ug MS4xJSBhcyBidXllcnMgcmV0dXJuPC9hPjwvbGk+CjxsaT48YSBjbGFzcz0ibGlu ay1mZmYiIGhyZWY9Jy90b2wvYnVzaW5lc3MvbWFya2V0cy9hcnRpY2xlNjQ2MDgy Ni5lY2UnPgpNaXhlZCByZWFjdGlvbiB0byBVUyBiYW5rcyByZXBheWluZyBiYWls b3V0czwvYT48L2xpPgo8L3VsPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwv ZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWJvdHRvbS0xNSI+PC9kaXY+CjwhLS0g RU5EOiBNNjggU2VjdGlvbiBFZGl0b3IncyBQaWNrcyAtLT4KPCEtLSAKLS0+Cjwh LS0gQkVHSU46IEhlYWRsaW5lcyBJbiBicmllZiBNb2R1bGUgLS0+CjwhLS0gRU5E OiBIZWFkbGluZXMgSW4gYnJpZWYgTW9kdWxlIC0tPgo8IS0tSm91cm5hbGlzdCBw cm9maWxlIG1vZHVsZSAtLT4KPCEtLSBCRUdJTjogTWlkZGxlIEluaGVyaXRhbmNl IEdyaWRzIC0tPgo8IS0tIEJFR0lOOk1pZGRsZSBJbmhlcml0ZW5jZSBUb3AgR3Jp ZCAtLT4KPCEtLVB1ZmYgTW9kdWxlIFB1Ymxpc2hlZCBEYXRlIDogU2VwIDE2LCAy MDA3IDU6MDggQU0tLT4KPGZvcm0gbmFtZT0idG9scHVmZjAiIG1ldGhvZD0icG9z dCIgYWN0aW9uPSIiPgo8ZGl2IGNsYXNzPSJ3aWR0aC0xODUgZmxvYXQtbGVmdCI+ CjxkaXYgY2xhc3M9InB1ZmYtY29udGFpbmVyIj4KPGRpdiBjbGFzcz0icHVmZi10 b3Atbm8tcGFkZGluZyI+CjxkaXYgY2xhc3M9InB1ZmYtc2lkZXMiPgo8ZGl2IGNs YXNzPSJwdWZmLXBhZGRpbmciPgo8aDMgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+ TWV0cm9uZXQgbWVzczwvaDM+CQo8ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUgcGFk ZGluZy10b3AtMyI+PC9kaXY+CjxkaXYgY2xhc3M9ImZsb2F0LWxlZnQiPgo8YSBo cmVmPSIvdG9sL2J1c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMvdHJhbnNwb3J0L2Fy dGljbGUyMTE1MTU1LmVjZSI+CjxpbWcgc3JjPSIvbXVsdGltZWRpYS9hcmNoaXZl LzAwMjA4L01ldHJvbmV0X3JhaWx3YXlfXzIwODk4N3AuanBnIiBjbGFzcz0iZGlz cGxheS1ibG9jayIgd2lkdGg9IjE2NSIgaGVpZ2h0PSI3MCIgYm9yZGVyPSIwIiBh bHQ9J01ldHJvbmV0IHJhaWx3YXkgZW5naW5lZXJzIGhhcmQgYXQgd29yayBkZWVw IHVuZGVyZ3JvdW5kIG9uIHRoZSBXYXRlcmxvbyBhbmQgQ2l0eSBMaW5lICcvPgo8 L2E+CjwvZGl2PgkKPGRpdiBjbGFzcz0iY2xlYXItc2ltcGxlIHBhZGRpbmctdG9w LTMiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUgcGFkZGluZy10b3At NSI+PC9kaXY+CjxoMiBjbGFzcz0ic3ViLWhlYWRpbmctcHVmZiI+PGEgY2xhc3M9 ImxpbmstMDZjIiBocmVmPScvdG9sL2J1c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMv dHJhbnNwb3J0L2FydGljbGUyMTE1MTU1LmVjZSc+CkRvd24gdGhlIFR1YmUJCjwv YT48L2gyPiAKPGRpdiBjbGFzcz0iY2xlYXItc2ltcGxlIHBhZGRpbmctdG9wLTMi PjwvZGl2Pgo8cCBjbGFzcz0ic21hbGwiPlJldmlzaXQgdGhlIHN0b3J5IG9mIE1l dHJvbmV0J3MgZmFsbDwvcD4gCjxkaXYgY2xhc3M9ImNsZWFyLXNpbXBsZSBwYWRk aW5nLXRvcC0zIj48L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXItc2ltcGxlIHBhZGRp bmctdG9wLTMiPjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2 Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIi PjwvZGl2Pgo8L2Zvcm0+CjwhLS1JLUZyYW1lIFB1Ymxpc2hlZCBEYXRlIDogQXVn IDI2LCAyMDA4IDM6NDMgUE0tLT4KPGRpdiBjbGFzcz0idGV4dC1jZW50ZXIiPjwh LS0gQnVnIGZpeCBmb3IgbW96aWxhIEJyb3dzZXIgLS0+CjxpZnJhbWUgc3JjPSdo dHRwOi8vbW9ybmluZ3N0YXIudGltZXNvbmxpbmUuY28udWsvdGltZXNvbmxpbmUv dGltZXNvbmxpbmUuanNwP3BhZ2U9cXVvdGUtc2VhcmNoLXNsaW0nIHNjcm9sbGlu Zz0nbm8nIHdpZHRoPScxODUnIGFsaWduPSdsZWZ0JyB2YWxpZ249J3RvcCcgaGVp Z2h0PScxNDEnIGZyYW1lYm9yZGVyPScwJyBtYXJnaW5oZWlnaHQ9JzAnIG1hcmdp bndpZHRoPScwJyB0aXRsZT0nJyA+IApZb3VyIEJyb3dzZXIgZG9lc24ndCBzdXBw b3J0IElubGluZSBmcmFtZXMKPC9pZnJhbWU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJj bGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctYm90dG9tLTE1Ij48L2Rp dj4KPCEtLUktRnJhbWUgUHVibGlzaGVkIERhdGUgOiBEZWMgMjEsIDIwMDYgMjow NiBQTS0tPgo8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+PCEtLSBCdWcgZml4IGZv ciBtb3ppbGEgQnJvd3NlciAtLT4KPGlmcmFtZSBzcmM9J2h0dHA6Ly9tb3JuaW5n c3Rhci50aW1lc29ubGluZS5jby51ay90aW1lc29ubGluZS90aW1lc29ubGluZS5q c3A/cGFnZT13b3JsZC1tYXJrZXRzLXNsaW0nIHNjcm9sbGluZz0nbm8nIHdpZHRo PScxODUnIGFsaWduPSdsZWZ0JyB2YWxpZ249J3RvcCcgaGVpZ2h0PScyMjgnIGZy YW1lYm9yZGVyPSdubycgbWFyZ2luaGVpZ2h0PScwJyBtYXJnaW53aWR0aD0nMCcg dGl0bGU9JycgPiAKWW91ciBCcm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBJbmxpbmUg ZnJhbWVzCjwvaWZyYW1lPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2 Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWJvdHRvbS0xNSI+PC9kaXY+CjwhLS0gRU5E Ok1pZGRsZSBJbmhlcml0ZW5jZSBUb3AgR3JpZCAtLT4KPCEtLSBCRUdJTjpNaWRk bGUgSW5oZXJpdGVuY2UgTWlkZGxlIEdyaWQgLS0+CjwhLS1JLUZyYW1lIFB1Ymxp c2hlZCBEYXRlIDogTm92IDEyLCAyMDA4IDQ6MDEgUE0tLT4KPGRpdiBjbGFzcz0i dGV4dC1jZW50ZXIiPjwhLS0gQnVnIGZpeCBmb3IgbW96aWxhIEJyb3dzZXIgLS0+ CjxpZnJhbWUgc3JjPSdodHRwOi8vZXh0cmFzLnRpbWVzb25saW5lLmNvLnVrL2h0 bWwvcnNzZmVlZF9tYXJrZXR3YXRjaC5odG1sJyBzY3JvbGxpbmc9J25vJyB3aWR0 aD0nMTg1JyBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnIGhlaWdodD0nMjcyJyBm cmFtZWJvcmRlcj0nMCcgbWFyZ2luaGVpZ2h0PScwJyBtYXJnaW53aWR0aD0nMCcg dGl0bGU9JycgPiAKWW91ciBCcm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBJbmxpbmUg ZnJhbWVzCjwvaWZyYW1lPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2 Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWJvdHRvbS0xNSI+PC9kaXY+CjwhLS1QdWZm IE1vZHVsZSBQdWJsaXNoZWQgRGF0ZSA6IEp1bCAxNCwgMjAwOCA1OjI5IFBNLS0+ Cjxmb3JtIG5hbWU9InN1cGVyUHVmZkZvcm0wIiBhY3Rpb249IiIgbWV0aG9kPSJw b3N0Ij4KPCEtLSBCRUdJTjogTTU3IC0gUHVmZiAmIFN1cGVyIFB1ZmYgKE5hcnJv dykgLS0+CjxkaXYgY2xhc3M9IndpZHRoLTE4NSI+CjxkaXYgY2xhc3M9InB1ZmYt Y29udGFpbmVyIj4KPGRpdiBjbGFzcz0icHVmZi10b3AiPgo8ZGl2IGNsYXNzPSJw dWZmLXNpZGVzIj4KPGRpdiBjbGFzcz0icHVmZi1wYWRkaW5nIj4KPGgzIGNsYXNz PSJzZWN0aW9uLWhlYWRpbmciPk1vbmV5IENlbnRyYWw8L2gzPgkKPGRpdiBjbGFz cz0iZmxvYXQtbGVmdCI+PGEgaHJlZj0iaHR0cDovL3RpbWVzYnVzaW5lc3MudHlw ZXBhZC5jb20vbW9uZXlfd2VibG9nLzIwMDkvMDcvdGhlLXRlbi1wZW9wbGUtd2hv LWhhdmUtbWFkZS10aGUtbW9zdC1tb25leS1mcm9tLWRpdm9yY2UuaHRtbCI+PGlt ZyBzcmM9Ii9tdWx0aW1lZGlhL2FyY2hpdmUvMDA1ODkvR3V5X1JpdGNoaWVfNTg5 NTkwYS5qcGciIHdpZHRoPSIxNjUiIGhlaWdodD0iMTY1IiBhbHQ9J0d1eSBSaXRj aGllJyAvPjwvYT48L2Rpdj4KPCEtLSBTaG93aW5nIEltYWdlIC0tPgkKPGRpdiBj bGFzcz0iY2xlYXItc2ltcGxlIHBhZGRpbmctdG9wLTMiPjwvZGl2PgkKPGgyIGNs YXNzPSJzdWItaGVhZGluZy1wdWZmIj48YSBjbGFzcz0ibGluay0wNmMiCmhyZWY9 Imh0dHA6Ly90aW1lc2J1c2luZXNzLnR5cGVwYWQuY29tL21vbmV5X3dlYmxvZy8y MDA5LzA3L3RoZS10ZW4tcGVvcGxlLXdoby1oYXZlLW1hZGUtdGhlLW1vc3QtbW9u ZXktZnJvbS1kaXZvcmNlLmh0bWwiPgpUaGUgMTAgcmljaGVzdCBkaXZvcmNlZXMg aW4gdGhlIFVLIAo8L2E+CjwvaDI+CjxkaXYgY2xhc3M9ImNsZWFyLXNpbXBsZSBw YWRkaW5nLXRvcC0zIj48L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXItc2ltcGxlIHBh ZGRpbmctdG9wLTMiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWJvdHRvbS01 Ij48L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+ CjwvZGl2PgkKPGRpdiBjbGFzcz0icHVmZi10b3AiPgo8ZGl2IGNsYXNzPSJwdWZm LXNpZGVzIj4KPGRpdiBjbGFzcz0icHVmZi1wYWRkaW5nIj4KPGgzIGNsYXNzPSJz ZWN0aW9uLWhlYWRpbmciPjwvaDM+CQo8ZGl2IGNsYXNzPSJmbG9hdC1sZWZ0Ij48 YSBocmVmPSJodHRwOi8vdGltZXNidXNpbmVzcy50eXBlcGFkLmNvbS9tb25leV93 ZWJsb2cvMjAwOS8wNy90ZW4tY2hlYXBlc3QtY29zdGFsLXRvd25zLmh0bWwiPjxp bWcgc3JjPSIvbXVsdGltZWRpYS9hcmNoaXZlLzAwMzY4L0NhbXBlcl92YW5fbWFu X1dlZWtfMzY4NDEycC5qcGciIHdpZHRoPSIxNjUiIGhlaWdodD0iNzAiIGFsdD0n Q2FtcGVyIHZhbiBtYW4gV2VlayAyOiBCcmlkbGluZ3RvbicvPjwvYT48L2Rpdj4K PCEtLSBTaG93aW5nIEltYWdlIC0tPgkKPGRpdiBjbGFzcz0iY2xlYXItc2ltcGxl IHBhZGRpbmctdG9wLTMiPjwvZGl2PgkKPGgyIGNsYXNzPSJzdWItaGVhZGluZy1w dWZmIj48YSBjbGFzcz0ibGluay0wNmMiCmhyZWY9Imh0dHA6Ly90aW1lc2J1c2lu ZXNzLnR5cGVwYWQuY29tL21vbmV5X3dlYmxvZy8yMDA5LzA3L3Rlbi1jaGVhcGVz dC1jb3N0YWwtdG93bnMuaHRtbCI+ClRoZSAxMCBtb3N0IGFmZm9yZGFibGUgY29h c3RhbCB0b3ducyB0byBidXkgYSBob21lCjwvYT4KPC9oMj4KPGRpdiBjbGFzcz0i Y2xlYXItc2ltcGxlIHBhZGRpbmctdG9wLTMiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJj bGVhci1zaW1wbGUgcGFkZGluZy10b3AtMyI+PC9kaXY+Cjx1bCBjbGFzcz0iY2hl dnJvbi1saXN0IGNoZXZyb24tYmx1ZSBwYWRkaW5nLXRvcC01Ij4KPC91bD4KPHVs IGNsYXNzPSJjaGV2cm9uLWxpc3QgY2hldnJvbi1ibHVlIHBhZGRpbmctdG9wLTUi Pgo8bGk+PGEgY2xhc3M9ImxpbmstNjY2IgpocmVmPSIgaHR0cDovL3RpbWVzYnVz aW5lc3MudHlwZXBhZC5jb20vbW9uZXlfd2VibG9nLyI+TW9uZXkgQ2VudHJhbDwv YT48L2xpPgo8L3VsPgo8L3VsPgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWJvdHRvbS01 Ij48L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+ CjwvZGl2PgkKPC9kaXY+CjwvZGl2PgkKPC9mb3JtPgo8IS0tIEVORDpNaWRkbGUg SW5oZXJpdGVuY2UgTWlkZGxlIEdyaWQgLS0+CjwhLS0gQkVHSU46TWlkZGxlIElu aGVyaXRlbmNlIEJvdHRvbSBHcmlkIC0tPgo8IS0tIEJFR0lOOiBNODAgLSBDdXN0 b20gSFRNTCBQdWJsaXNoZWQgRGF0ZSA6IE1hciAxMCwgMjAwOSA2OjI0IFBNIC0t Pgo8IS0tIEJFR0lOOiBNODAgLSBDdXN0b20gSFRNTCAtLT4KPCEtLSBCRUdJTjog TTgwIC0gQ3VzdG9tIEhUTUwgLS0+CjxkaXYgY2xhc3M9IndpZHRoLTEwMC1wZXJj ZW50IHBhZGRpbmctYm90dG9tLTEwIj4gCjxkaXYgY2xhc3M9ImJnLWZmZiI+CQo8 cCBjbGFzcz0ic21hbGwiPjwhLS0gQkVHSU46IE01NyAtIFB1ZmYgJmFtcDsgU3Vw ZXIgUHVmZiAoTmFycm93KSAtLT4KPGRpdiBjbGFzcz0id2lkdGgtMTg1IGZsb2F0 LXJpZ2h0Ij4KPGRpdiBjbGFzcz0icHVmZi1jb250YWluZXIiPgo8ZGl2IGNsYXNz PSJwdWZmLXRvcCI+CjxkaXYgY2xhc3M9InB1ZmYtc2lkZXMiPgo8ZGl2IGNsYXNz PSJwdWZmLXBhZGRpbmciPgo8aDMgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+VHJh bnNwb3J0IGpvYnM8L2gzPiAKPCEtLSBCRUdJTjogTGlzdCBvZiBsaW5rcyAtLT4K PHVsIGNsYXNzPSJjaGV2cm9uLWxpc3QgY2hldnJvbi1ibHVlIHBhZGRpbmctdG9w LTMiPgo8bGk+PGEgY2xhc3M9ImxpbmstNjY2IiBocmVmPSJodHRwOi8vam9icy50 aW1lc29ubGluZS5jby51ay9pdC1kaXJlY3Rvci1qb2JzLmh0bWwiPklUIERpcmVj dG9yIEpvYnM8L2E+PC9saT4KPGxpPjxhIGNsYXNzPSJsaW5rLTY2NiIgaHJlZj0i aHR0cDovL2pvYnMudGltZXNvbmxpbmUuY28udWsvaXQtbWFuYWdlci1qb2JzLmh0 bWwiPklUIE1hbmFnZXIgSm9iczwvYT48L2xpPgo8bGk+PGEgY2xhc3M9Imxpbmst NjY2IiBocmVmPSJodHRwOi8vam9icy50aW1lc29ubGluZS5jby51ay9vcGVyYXRp b25zLWRpcmVjdG9yLWpvYnMuaHRtbCI+T3BlcmF0aW9ucyBEaXJlY3RvciBKb2Jz PC9hPjwvbGk+CjxsaT48YSBjbGFzcz0ibGluay02NjYiIGhyZWY9Imh0dHA6Ly9q b2JzLnRpbWVzb25saW5lLmNvLnVrL29wZXJhdGlvbnMtbWFuYWdlci1qb2JzLmh0 bWwiPk9wZXJhdGlvbnMgTWFuYWdlciBKb2JzPC9hPjwvbGk+CjxsaT48YSBjbGFz cz0ibGluay02NjYiIGhyZWY9Imh0dHA6Ly9qb2JzLnRpbWVzb25saW5lLmNvLnVr L2pvYnMvaXQvIj5JVCBKb2JzPC9hPjwvbGk+CjwvdWw+CjwhLS0gQkVHSU46IExp c3Qgb2YgbGlua3MgLS0+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rp dj4KPC9wPgo8L2Rpdj4KPC9kaXY+CjwhLS0gRU5EOiBNODAgLSBDdXN0b20gSFRN TCAtLT4KPCEtLSBFTkQ6IE04MCAtIEN1c3RvbSBIVE1MIC0tPgo8IS0tIEVORDpN aWRkbGUgSW5oZXJpdGVuY2UgQm90dG9tIEdyaWQgLS0+CjwhLS0gRU5EOiBNaWRk bGUgSW5oZXJpdGFuY2UgR3JpZHMgLS0+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBpZD0i Z3JpZC1jb2x1bW40Ij4KPGRpdiBpZD0iZ3JpZC1jb2x1bW40LW5vbi1ncmV5Ij4J CjwhLS0gaW5oZXJpdGFuY2UgbG9naWMgZm9yIGJlaGF2aW91cmFsIG5hdiAtLT4K PCEtLUJlaGF2aW91cmFsIE5hdmlnYXRpb24gUHVibGlzaGVkIERhdGUgOiBEZWMg MTgsIDIwMDYgMTI6MDEgQU0gLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny aXB0IiBzcmM9Ii90b2wvanMvbTMxLWJlaGF2aW91cmFsLW5hdi5qcyI+PC9zY3Jp cHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQp2YXIgYUJl aGF2aW91cmFsQ2F0ZWdvcmllcyA9IG5ldyBBcnJheSgnTU9TVCBSRUFEJywnTU9T VCBDT01NRU5URUQnLCdNT1NUIENVUklPVVMnKTsgLy8gQXJyYXkgb2YgY2F0ZWdv cnkgbGFiZWxzCnZhciBzU2VsZWN0ZWRCZWhhdmlvdXJhbCA9ICdiZWhhdmlvdXJh bC0xJzsgLy8gSW5pdGlhbCBzZWN0aW9uIHRvIGRpc3BsYXkuIE9wdGlvbnMgYXJl IDEgPSBtb3N0IHJlYWQgfCAyID0gbW9zdCBjb21tZW5ldGVkIHwgMyA9IGZhbmN5 IHRoYXQKdmFyIHNTZWxlY3RlZEJlaGF2aW91cmFsVGFiID0gJyc7Ci8vLS0+Cjwv c2NyaXB0Pgo8IS0tIEJFR0lOOiBNb2R1bGUgLSBNMzEgQmVoYXZpb3VyYWwgTmF2 IChiKSAtLT4KPGRpdiBjbGFzcz0icGFkZGluZy1ib3R0b20tMTUiPgo8ZGl2IGlk PSJiZWhhdmlvdXJhbC1saW5rcyIgY2xhc3M9ImRhcmstdGFiLWxpbmtzLXdpZGUi Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KLy8gV3JpdGVz IG91dCBiZWhhdmlvdXJhbCBjYXRlZ29yeSB0YWJzCmZHZW5lcmF0ZUJlaGF2aW91 cmFsTGlua3MoKTsKLy8tLT4KPC9zY3JpcHQ+Cjxub3NjcmlwdD4KPHVsIGNsYXNz PSJzbWFsbCI+CjxsaSBjbGFzcz0icGFkZGluZy1sZWZ0LXJpZ2h0LTkgZGFyay10 YWIiPjxhIGNsYXNzPSJ0b29scy0wNmMiIGhyZWY9IiNzdGFydG9mY29tbWVudGVk Ij5NT1NUIFJFQUQ8L2E+PC9saT4KPGxpIGNsYXNzPSJwYWRkaW5nLWxlZnQtcmln aHQtOSBkYXJrLXRhYiI+PGEgY2xhc3M9InRvb2xzLTA2YyIgaHJlZj0iI3N0YXJ0 b2ZmYW5jeSI+TU9TVCBDT01NRU5URUQ8L2E+PC9saT4KPGxpIGNsYXNzPSJwYWRk aW5nLWxlZnQtcmlnaHQtOSBkYXJrLXRhYiI+PGEgY2xhc3M9InRvb2xzLTA2YyIg aHJlZj0iI3N0YXJ0b2ZyZWFkIj5NT1NUIENVUklPVVM8L2E+PC9saT4KPC91bD4K PGRpdiBjbGFzcz0icGFkZGluZy10b3AtMTAgYWNjZXNzLXRleHQiPjwvZGl2Pgo8 L25vc2NyaXB0Pgo8ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUiPjwvZGl2Pgo8L2Rp dj4KPGRpdiBjbGFzcz0iZGFyay1zaGFkb3ctaGVhZGVyLXdpZGUiPjxkaXYgY2xh c3M9InBhZGRpbmctdG9wLTYiPjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iZGFy ay1zaGFkb3ctc2VnbWVudC13aWRlIHBhZGRpbmctbGVmdC1yaWdodC0xMCI+Cjwh LS0gU3RhcnQgb2YgbW9zdCByZWFkIHNlY3Rpb24gLS0+CjwhLS0gU3RhcnQgb2Yg bW9zdCBjb21tZW50ZWQgc2VjdGlvbiAtLT4KPGRpdiBpZD0iYmVoYXZpb3VyYWwt MS1jb250ZW50Ij4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0t Ci8vIEhpZGUgbW9zdCByZWFkIHNlY3Rpb24KZlNob3dIaWRlRWxlbWVudCgnYmVo YXZpb3VyYWwtMS1jb250ZW50Jyk7Ci8vLS0+Cjwvc2NyaXB0Pgo8YSBuYW1lPSJz dGFydG9mbW9zdHJlYWQiPjwvYT4KPGgzIGNsYXNzPSJzZWN0aW9uLWhlYWRpbmcg YWNjZXNzLXRleHQiPk1vc3QgUmVhZDwvaDM+CjxhIGhyZWY9IiNlbmRvZmNvbW1l bnRlZCIgY2xhc3M9ImFjY2Vzcy10ZXh0Ij5Ta2lwIE1vc3QgUmVhZDwvYT48YnIg Y2xhc3M9ImFjY2Vzcy10ZXh0IiAvPjxiciBjbGFzcz0iYWNjZXNzLXRleHQiIC8+ CjxoMyBjbGFzcz0ic2VjdGlvbi1oZWFkaW5nIj5Ub2RheTwvaDM+Cjx1bCBjbGFz cz0iY2hldnJvbi1saXN0IGNoZXZyb24tYmx1ZSI+CjxsaT48YSBocmVmPSIvdG9s L3Nwb3J0L2Zvb3RiYWxsL3ByZW1pZXJfbGVhZ3VlL2FydGljbGU2NzE4NTU1LmVj ZSIgY2xhc3M9ImxpbmstNjY2Ij5MaXZlcnBvb2wgdG8gc3RlcCB1cCBiaWQgZm9y IERhdmlkIFNpbHZhPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iL3RvbC9saWZlX2Fu ZF9zdHlsZS9tZW4vYXJ0aWNsZTY3MTUyNTUuZWNlIiBjbGFzcz0ibGluay02NjYi PjEwMSB1c2VzIGZvciBhIHdvbWFuPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iL3Rv bC9uZXdzL2Vudmlyb25tZW50L2FydGljbGU2NzE4Njg5LmVjZSIgY2xhc3M9Imxp bmstNjY2Ij5Ccml0YWluJiM4MjE3O3MgZGlydHkgbGl0dGxlIHNlY3JldCBhcyBh Li4uPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iL3RvbC9saWZlX2FuZF9zdHlsZS9t ZW4vYXJ0aWNsZTY2Njk4MDcuZWNlIiBjbGFzcz0ibGluay02NjYiPjEwMSB1c2Vz IGZvciBhIG1hbjwvYT48L2xpPiAKPC91bD4KPGEgbmFtZT0iZW5kb2Ztb3N0cmVh ZCI+PC9hPgo8L2Rpdj4KPCEtLSBFbmQgb2YgbW9zdCBjb21tZW50ZWQgc2VjdGlv biAtLT4KPCEtLSBTdGFydCBvZiBmYW5jeSB0aGF0IHNlY3Rpb24gLS0+CjxkaXYg aWQ9ImJlaGF2aW91cmFsLTItY29udGVudCI+CQo8c2NyaXB0IHR5cGU9InRleHQv amF2YXNjcmlwdCI+CjwhLS0KLy8gSGlkZSBtb3N0IHJlYWQgc2VjdGlvbgpmU2hv d0hpZGVFbGVtZW50KCdiZWhhdmlvdXJhbC0yLWNvbnRlbnQnKTsKLy8tLT4KPC9z Y3JpcHQ+CjxhIG5hbWU9InN0YXJ0b2Zjb21tZW50ZWQiPjwvYT4KPGgzIGNsYXNz PSJzZWN0aW9uLWhlYWRpbmcgYWNjZXNzLXRleHQiPk1PU1QgQ09NTUVOVEVEPC9o Mz4KPGEgaHJlZj0iI2VuZG9mZmFuY3kiIGNsYXNzPSJhY2Nlc3MtdGV4dCI+U2tp cCBFZGl0b3IncyBQaWNrPC9hPjxiciBjbGFzcz0iYWNjZXNzLXRleHQiIC8+PGJy IGNsYXNzPSJhY2Nlc3MtdGV4dCIgLz4KPGgzIGNsYXNzPSJzZWN0aW9uLWhlYWRp bmciPlRvZGF5PC9oMz4KPHVsIGlkID0gIm1vc3Rjb21tZW50ZWQiIGNsYXNzPSJj aGV2cm9uLWxpc3QgY2hldnJvbi1ibHVlIj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiPgppZihpc0FydGljbGUgPT0gInRydWUiICYmIGFydGljbGVIZWFk bGluZXMubGVuZ3RoIT0wKXsKZm9yKHZhciBqPTA7IGo8YXJ0aWNsZUhlYWRsaW5l cy5sZW5ndGg7IGorKyl7CnZhciBoZWFkbGluZSA9IGFydGljbGVIZWFkbGluZXNb al07CmlmKGFydGljbGVIZWFkbGluZXNbal0ubGVuZ3RoPj00NSl7CmhlYWRsaW5l ID0gYXJ0aWNsZUhlYWRsaW5lc1tqXS5zdWJzdHJpbmcoMCw0NCkrIi4uLiI7Cn0K ZG9jdW1lbnQud3JpdGUoIjxsaT48YSBocmVmPSIrYXJ0aWNsZVBhdGhzW2pdKyIg Y2xhc3M9XCJsaW5rLTY2NlwiPiIraGVhZGxpbmUgKyI8XC9hPjxcL2xpPiIpOyAK fQp9ZWxzZXsKZlN1Ym1pdE1vc3RDb21tZW50ZWQoJ2h0dHA6Ly9jb21tdW5pdHku dGltZXNvbmxpbmUuY28udWsvdmVyMS4wL0RpcmVjdC9Qcm9jZXNzJyk7Cn0KPC9z Y3JpcHQ+CjwvdWw+CjxhIG5hbWU9ImVuZG9mY29tbWVudGVkIj48L2E+CjwvZGl2 Pgo8IS0tIEVuZCBvZiBmYW5jeSB0aGF0IHNlY3Rpb24gLS0+CjxkaXYgaWQ9ImJl aGF2aW91cmFsLTMtY29udGVudCI+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny aXB0Ij4KPCEtLQovLyBIaWRlIG1vc3QgcmVhZCBzZWN0aW9uCmZTaG93SGlkZUVs ZW1lbnQoJ2JlaGF2aW91cmFsLTMtY29udGVudCcpOwovLy0tPgo8L3NjcmlwdD4K PGEgbmFtZT0ic3RhcnRvZmN1cmlvdXMiPjwvYT4KPGgzIGNsYXNzPSJzZWN0aW9u LWhlYWRpbmcgYWNjZXNzLXRleHQiPk1PU1QgQ1VSSU9VUzwvaDM+CjxhIGhyZWY9 IiNlbmRvZnJlYWQiIGNsYXNzPSJhY2Nlc3MtdGV4dCI+U2tpcCBNb3N0IEN1cmlv dXM8L2E+CjxiciBjbGFzcz0iYWNjZXNzLXRleHQiIC8+PGJyIGNsYXNzPSJhY2Nl c3MtdGV4dCIgLz4KPGgzIGNsYXNzPSJzZWN0aW9uLWhlYWRpbmciPlRvZGF5PC9o Mz4KPGRpdiBjbGFzcz0ic21hbGwtbGlua3MtbGlzdC1jb250YWluZXIgIj4KPHVs IGNsYXNzPSJjaGV2cm9uLWxpc3QgY2hldnJvbi1ibHVlIj48bGk+CjxhIGNsYXNz PSJsaW5rLTY2NiIgaHJlZj0nL3RvbC9saWZlX2FuZF9zdHlsZS93b21lbi9yZWxh dGlvbnNoaXBzL2FydGljbGU2NzE1OTE2LmVjZSc+CQpGaW5kaW5nIE1yIFJpZ2h0 OiA3IFRpcHMgZnJvbSB0aGUgTW92aWVzPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRp diBjbGFzcz0ic21hbGwtbGlua3MtbGlzdC1jb250YWluZXIgIj4KPHVsIGNsYXNz PSJjaGV2cm9uLWxpc3QgY2hldnJvbi1ibHVlIj48bGk+CjxhIGNsYXNzPSJsaW5r LTY2NiIgaHJlZj0nL3RvbC9uZXdzL3VrL3NjaWVuY2UvYXJ0aWNsZTY3MTcyMjEu ZWNlJz4JCk5hc2EmcnNxdW87cyBNb29uLWxhbmRpbmcgdGFwZXMgcmVtYXN0ZXJl ZC4uLjwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InNtYWxsLWxpbmtz LWxpc3QtY29udGFpbmVyICI+Cjx1bCBjbGFzcz0iY2hldnJvbi1saXN0IGNoZXZy b24tYmx1ZSI+PGxpPgo8YSBjbGFzcz0ibGluay02NjYiIGhyZWY9Jy90b2wvY29t bWVudC9mYWl0aC9hcnRpY2xlNjcxNjMyMy5lY2UnPgkKWW91IHdpbGwsIEJlbmVk aWN0LCB5b3Ugd2lsbDogVmF0aWNhbiBjbGFpbXMuLi48L2E+PC9saT48L3VsPjwv ZGl2Pgo8ZGl2IGNsYXNzPSJzbWFsbC1saW5rcy1saXN0LWNvbnRhaW5lciAiPgo8 dWwgY2xhc3M9ImNoZXZyb24tbGlzdCBjaGV2cm9uLWJsdWUiPjxsaT4KPGEgY2xh c3M9ImxpbmstNjY2IiBocmVmPScvdG9sL2xpZmVfYW5kX3N0eWxlL2VkdWNhdGlv bi9zY2hvb2xfbGVhZ3VlX3RhYmxlcy9hcnRpY2xlNjcxNzI4Ny5lY2UnPgkKVGVh Y2hlcnMgYXR0YWNrIGV4YW1pbmVycyBmb3IgZG90dHkgU0FUcy4uLjwvYT48L2xp PjwvdWw+PC9kaXY+CjxhIG5hbWU9ImVuZG9mcmVhZCI+PC9hPgo8L2Rpdj4KPGRp diBjbGFzcz0iY2xlYXIiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWJvdHRv bS1tb3N0LXJlYWQiPjwvZGl2Pgo8L2Rpdj4KPCEtLSBFbmQgb2YgbW9zdCByZWFk IHNlY3Rpb24gLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEt LQovLyBEaXNwbGF5cyBpbml0aWFsIGNhdGVnb3J5CmZTaG93SGlkZUJlaGF2aW91 cmFsQ2F0ZWdvcnkoc1NlbGVjdGVkQmVoYXZpb3VyYWwpOwovLy0tPgo8L3Njcmlw dD4KPGRpdiBjbGFzcz0iZGFyay1zaGFkb3ctZm9vdGVyLXdpZGUiPjxkaXYgY2xh c3M9InBhZGRpbmctdG9wLTUiPjwvZGl2PjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFz cz0iY2xlYXIiPjwvZGl2Pgo8IS0tIEVORDogTW9kdWxlIC0gTTMxIEJlaGF2aW91 cmFsIE5hdiAoYikgLS0+CjwvZGl2Pgo8ZGl2IGlkPSJncmlkLWNvbHVtbjQtZ3Jl eSI+CjxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4KPCEtLSBjYWxsaW5nIHRoZSBh ZHZlcnRpc2VtZW50IC0tPgo8IS0tIEJFR0lOOiBNb2R1bGUgLSBBZHZlcnQ6VG9w IC0tPgo8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KLy9SZXRy aWV2ZSB5YW9vIENvb2tpZSBWYWx1ZQp2YXIgeWFob28gPSAibm8iOwp2YXIgSXNZ YWhvbz0ibm8iOwppZiAoR2V0UXVlcnlTdHJpbmcoInlhaG9vIik9PSJ5ZXMiIHx8 IGdldF9jb29raWUoJ1lIJykgPT0gInllcyIpIElzWWFob289InllcyI7CmlmIChJ c1lhaG9vID09ICJ5ZXMiIHx8IGdldF9jb29raWUoJ1lIJykgPT0gJ29wZW4nKSB7 CnNldF9jb29raWUgKCJZSCIsICJ5ZXMiLCAiIiwgIiIgKTsKeWFob28gPSAieWVz IjsKfSBlbHNlIHsKc2V0X2Nvb2tpZSAoIllIIiwgIm5vIiwgIiIsICIiICk7Cnlh aG9vID0gIm5vIjsKfQp3aW5kb3cub251bmxvYWQgPSBzZXRZYWhvb0Nvb2tpZTsK Ly8tLT4KPC9TQ1JJUFQ+CjwhLS0gRm9yIFRyYXZlbCBTZWFyY2ggLS0+CjxkaXYg Y2xhc3M9InF1aWNrLWxpbmtzLWNvbnRhaW5lciIgPgo8ZGl2IGNsYXNzPSJwYWRk aW5nLXRvcC0xMCBwYWRkaW5nLWJvdHRvbS0xMCB0ZXh0LWNlbnRlciI+CjxzY3Jp cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQp2YXIgUlN0YWcgPSAiIjsK dHJ5ewpSU3RhZyA9IHNlZ1FTOwp9CmNhdGNoKGUpewpSU3RhZyA9ICIiOwp9CmRv Y3VtZW50LndyaXRlKCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj PSJodHRwOi8vYWQudWsuZG91YmxlY2xpY2submV0L2Fkai9idXNpbmVzcy50aW1l c29ubGluZS5jby51ay9pbmR1c3RyeXNlY3RvcnMvdHJhbnNwb3J0O2NhdD07cG9z PXRvcDtzej0zMDB4MjUwOycrIFJTdGFnICsndGlsZT0yOycrY2F0ZWdvcnlWYWx1 ZXMrJ3lhaG9vPScreWFob28rJztvcmQ9JytyYW5kbnVtKyc/Ij48XC9zY3JpcHQ+ Jyk7CQovLy0tPgo8L3NjcmlwdD4KPC9kaXY+PC9kaXY+Cjxub3NjcmlwdD4KPGEg aHJlZj0iaHR0cDovL2FkLnVrLmRvdWJsZWNsaWNrLm5ldC9hZGovYnVzaW5lc3Mu dGltZXNvbmxpbmUuY28udWsvaW5kdXN0cnlzZWN0b3JzL3RyYW5zcG9ydDtwb3M9 dG9wO3N6PTMwMHgyNTA7dGlsZT0yO3lhaG9vPU5vO29yZD0xMjQ3OTQzNDI1Njk1 PyI+PC9hPgo8L25vc2NyaXB0Pgo8IS0tU0VDVElPTjpwYXJhbWV0ZXIgcGFyYW1l dGVyPSJkYXJ0LnNlcnZlciIgLy0tPgo8IS0tIEVORDogTW9kdWxlIC0gQWR2ZXJ0 OlRvcCAtLT4KPCEtLSBpbmhlcml0YW5jZSBsb2dpYyBmb3IgU3BlY2lhbCBSZXBv cnRzIC0tPgo8IS0tIFNwZWNpYWwgUmVwb3J0cyBQdWJsaXNoZWQgRGF0ZSA6IE1h ciAxMCwgMjAwOSAxMTo1OCBBTS0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj cmlwdCIgc3JjPSIvdG9sL2pzL2ZvY3VzLXpvbmUuanMiPjwvc2NyaXB0Pgo8c2Ny aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KdmFyIG4yQ29sVG90YWxD YXJvdXNlbEl0ZW1zRm9jdXM9MDsKdmFyIGFUZWFzZXIyQ29sRm9jdXMgPSBuZXcg QXJyYXkoKTsKLy8tLT4JCjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2 YXNjcmlwdCI+CjwhLS0KYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3Vz ZWxJdGVtc0ZvY3VzXT0gbmV3IEFycmF5KCk7CmFUZWFzZXIyQ29sRm9jdXNbbjJD b2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c11bMF09ICJodHRwOi8vYWQuZG91Ymxl Y2xpY2submV0L2NsazsyMTI1OTU2MDE7MTMzODE3NjY7Zj9odHRwOi8vd3d3LnRp bWVzb25saW5lLmNvLnVrL3RvbC90cmF2ZWwvcmVsYXRlZF9mZWF0dXJlcy9ub3J0 aGVybl9saWdodHMvIjsKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3Vz ZWxJdGVtc0ZvY3VzXVsxXT0gIk5vcnRoZXJuIExpZ2h0czoiOwovLy0tPgo8L3Nj cmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCmFUZWFz ZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c11bMl09ICIv bXVsdGltZWRpYS9hcmNoaXZlLzAwNTIzL25ld2Nhc3RsZV9hbmdlbDE2NV81MjM2 MTlsLmdpZiI7Ci8vLS0+Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2 YXNjcmlwdCI+CjwhLS0JCmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91 c2VsSXRlbXNGb2N1c11bM109ICJXaW4gYSBsdXh1cnkgd2Vla2VuZCB0byBOZXdj YXN0bGUgYW5kIGl0cyBuZWlnaGJvdXIgR2F0ZXNoZWFkLCBmaW5kIG91dCBtb3Jl IGhlcmUiOwkKbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1cysrOwovLy0tPgo8 L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCmFU ZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c109IG5l dyBBcnJheSgpOwphVGVhc2VyMkNvbEZvY3VzW24yQ29sVG90YWxDYXJvdXNlbEl0 ZW1zRm9jdXNdWzBdPSAiaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9jbGs7MjEw MDk5MzI0OzY3MDgzNTc7aj9odHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL3Rv bC9idXNpbmVzcy9yZWxhdGVkX3JlcG9ydHMvYnVzaW5lc3Nfc29sdXRpb25zLyI7 CmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c11b MV09ICJCdXNpbmVzcyBTb2x1dGlvbnM6IjsKLy8tLT4KPC9zY3JpcHQ+CjxzY3Jp cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQphVGVhc2VyMkNvbEZvY3Vz W24yQ29sVG90YWxDYXJvdXNlbEl0ZW1zRm9jdXNdWzJdPSAiL211bHRpbWVkaWEv YXJjaGl2ZS8wMDQ0Ni9idF9vbmVfZ3JhcGhpY18xNjV4XzQ0NjA4M2wuZ2lmIjsK Ly8tLT4KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K PCEtLQkKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0Zv Y3VzXVszXT0gIlJpc2ssIHJlc2lsaWVuY2UgYW5kIGVtYnJhY2luZyBuZXcgdGVj aG5vbG9neSI7CQpuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzKys7Ci8vLS0+ Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0K YVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzXT0g bmV3IEFycmF5KCk7CmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2Vs SXRlbXNGb2N1c11bMF09ICJodHRwOi8vYWQuZG91YmxlY2xpY2submV0L2Nsazsy MDk1MzQ5NzE7MTAzNDEwMjk7ej9odHRwOi8vYnVzaW5lc3MudGltZXNvbmxpbmUu Y28udWsvdG9sL2J1c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMvbmVlZF90b19rbm93 LyI7CmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1 c11bMV09ICJOZWVkIHRvIEtub3c6IjsKLy8tLT4KPC9zY3JpcHQ+CjxzY3JpcHQg dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQphVGVhc2VyMkNvbEZvY3VzW24y Q29sVG90YWxDYXJvdXNlbEl0ZW1zRm9jdXNdWzJdPSAiL211bHRpbWVkaWEvYXJj aGl2ZS8wMDQyMi9hY2NlbnR1cmUxNjV4NzBfNDIyMTE1bC5qcGciOwovLy0tPgo8 L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCQph VGVhc2VyMkNvbEZvY3VzW24yQ29sVG90YWxDYXJvdXNlbEl0ZW1zRm9jdXNdWzNd PSAiSW5kdXN0cnkgc2VjdG9ycyBuZXdzIGF0IGEgZ2xhbmNlLiBJbnRlcmFjdGl2 ZSBoZWF0bWFwLCB2aWRlbyBhbmQgcG9kY2FzdCI7CQpuMkNvbFRvdGFsQ2Fyb3Vz ZWxJdGVtc0ZvY3VzKys7Ci8vLS0+Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRl eHQvamF2YXNjcmlwdCI+CjwhLS0KYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFs Q2Fyb3VzZWxJdGVtc0ZvY3VzXT0gbmV3IEFycmF5KCk7CmFUZWFzZXIyQ29sRm9j dXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c11bMF09ICJodHRwOi8vYWQu ZG91YmxlY2xpY2submV0L2NsazsyMTM5OTEyNDQ7MTgxODA1MzY7Zz9odHRwOi8v YnVzaW5lc3MudGltZXNvbmxpbmUuY28udWsvdG9sL2J1c2luZXNzL3JlbGF0ZWRf cmVwb3J0cy9idXNpbmVzc193aXNkb20vIjsKYVRlYXNlcjJDb2xGb2N1c1tuMkNv bFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzXVsxXT0gIkJ1c2luZXNzIFdpc2RvbToi OwovLy0tPgo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi Pgo8IS0tCmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNG b2N1c11bMl09ICIvbXVsdGltZWRpYS9hcmNoaXZlLzAwNDkxL2Npc2NvMTY1XzQ5 MTkxOWwuanBnIjsKLy8tLT4KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9q YXZhc2NyaXB0Ij4KPCEtLQkKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fy b3VzZWxJdGVtc0ZvY3VzXVszXT0gIkRpc2NvdmVyIHRoZSBwb3dlciBvZiBjb2xs ZWN0aXZlIHRoaW5raW5nLiBTdWJtaXQgYSBzb2x1dGlvbiBhbmQgYmUgaW4gd2l0 aCBhIGNoYW5jZSB0byB3aW4gYSBNZWRpYSBIdWIgSG9tZSBFbnRlcnRhaW5tZW50 IFN5c3RlbSAiOwkKbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1cysrOwovLy0t Pgo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0t CmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c109 IG5ldyBBcnJheSgpOwphVGVhc2VyMkNvbEZvY3VzW24yQ29sVG90YWxDYXJvdXNl bEl0ZW1zRm9jdXNdWzBdPSAiaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9jbGs7 MjA5NTI4Mjc5OzEzODczODQzO3U/aHR0cDovL2J1c2luZXNzLnRpbWVzb25saW5l LmNvLnVrL3RvbC9idXNpbmVzcy9yZWxhdGVkX3JlcG9ydHMvc29jaWFsX2VudHJl cHJlbmV1cnMvIjsKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJ dGVtc0ZvY3VzXVsxXT0gIlNvY2lhbCBFbnRyZXByZW5ldXJzOiI7Ci8vLS0+Cjwv c2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KYVRl YXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzXVsyXT0g Ii9tdWx0aW1lZGlhL2FyY2hpdmUvMDA0MzcvbGFzdC0zODVfNDM3NTMxbC5qcGci OwovLy0tPgo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi Pgo8IS0tCQphVGVhc2VyMkNvbEZvY3VzW24yQ29sVG90YWxDYXJvdXNlbEl0ZW1z Rm9jdXNdWzNdPSAiVGhlIGluc2lkZSB0cmFjayBvbiBjdXJyZW50IHRyZW5kcyBp biB0aGUgY2hhcml0eSwgbm90IGZvciBwcm9maXQgYW5kIHNvY2lhbCBlbnRlcnBy aXNlIHNlY3RvcnMiOwkKbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1cysrOwov Ly0tPgo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8 IS0tCmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1 c109IG5ldyBBcnJheSgpOwphVGVhc2VyMkNvbEZvY3VzW24yQ29sVG90YWxDYXJv dXNlbEl0ZW1zRm9jdXNdWzBdPSAiaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9j bGs7MTg2MDk3NTg3OzE1NDc5NzU1O2g/aHR0cDovL3d3dy50aW1lc29ubGluZS5j by51ay90b2wvdHJhdmVsL2J1c2luZXNzLyI7CmFUZWFzZXIyQ29sRm9jdXNbbjJD b2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c11bMV09ICJCdXNpbmVzcyBUcmF2ZWw6 IjsKLy8tLT4KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0 Ij4KPCEtLQphVGVhc2VyMkNvbEZvY3VzW24yQ29sVG90YWxDYXJvdXNlbEl0ZW1z Rm9jdXNdWzJdPSAiL211bHRpbWVkaWEvYXJjaGl2ZS8wMDM1My9iYV9jbG91ZHNf MTAwXzM1Mzg4MGEuanBnIjsKLy8tLT4KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0i dGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQkKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRv dGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzXVszXT0gIkV2ZXJ5dGhpbmcgdGhlIEJ1c2lu ZXNzIFRyYXZlbGxlciBuZWVkcyB0byBrbm93IHRvIG1ha2UgYSBiZXR0ZXIgdHJp cCI7CQpuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzKys7Ci8vLS0+Cjwvc2Ny aXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KYVRlYXNl cjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzXT0gbmV3IEFy cmF5KCk7CmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNG b2N1c11bMF09ICJodHRwOi8vYWQuZG91YmxlY2xpY2submV0L2NsazsyMTQyMjU5 MjI7ODk0Mzc1MztsP2h0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsvdG9sL2xp ZmVfYW5kX3N0eWxlL3JlbGF0ZWRfZmVhdHVyZXMvZ3JlYXRfYnJpdGlzaF9zdW1t ZXIvIjsKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0Zv Y3VzXVsxXT0gIkdyZWF0IEJyaXRpc2ggU3VtbWVyIDoiOwovLy0tPgo8L3Njcmlw dD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCmFUZWFzZXIy Q29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c11bMl09ICIvbXVs dGltZWRpYS9hcmNoaXZlLzAwNTY3L2JvYXRzMTY1XzU2NzgyMGwuZ2lmIjsKLy8t LT4KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEt LQkKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3Vz XVszXT0gIk1ha2UgdGhlIG1vc3Qgb2YgdGhlIHN1bW1lciBhbmQgZW50ZXIgb3Vy IGZhYnVsb3VzIHBob3RvZ3JhcGhpYyBjb21wZXRpdGlvbiwgeW91IGNvdWxkIHdp biBhIKM1MDAwIGhvbGlkYXkiOwkKbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1 cysrOwovLy0tPgo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp cHQiPgo8IS0tCmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRl bXNGb2N1c109IG5ldyBBcnJheSgpOwphVGVhc2VyMkNvbEZvY3VzW24yQ29sVG90 YWxDYXJvdXNlbEl0ZW1zRm9jdXNdWzBdPSAiaHR0cDovL2FkLmRvdWJsZWNsaWNr Lm5ldC9jbGs7MjE1NDk4MzczOzM4MzgxNDk5O2E/aHR0cDovL3d3dy50aW1lc29u bGluZS5jby51ay90b2wvdHJhdmVsL3JlbGF0ZWRfZmVhdHVyZXMvY29yc2ljYS10 cmF2ZWwvIjsKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVt c0ZvY3VzXVsxXT0gIkNvcnNpY2EgVHJhdmVsOiI7Ci8vLS0+Cjwvc2NyaXB0Pgo8 c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KYVRlYXNlcjJDb2xG b2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzXVsyXT0gIi9tdWx0aW1l ZGlhL2FyY2hpdmUvMDA1ODIvY29yc2ljYTE2NV81ODI3MTZsLmpwZyI7Ci8vLS0+ Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0J CmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c11b M109ICJDb3JzaWNhIGlzIGFuIGlzbGFuZCBvZiBiZWF1dHkgYW5kIGNvbnRyYXN0 LCBhbiBpZGVhbCBob2xpZGF5IGRlc3RpbmF0aW9uIjsJCm4yQ29sVG90YWxDYXJv dXNlbEl0ZW1zRm9jdXMrKzsKLy8tLT4KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0i dGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQphVGVhc2VyMkNvbEZvY3VzW24yQ29sVG90 YWxDYXJvdXNlbEl0ZW1zRm9jdXNdPSBuZXcgQXJyYXkoKTsKYVRlYXNlcjJDb2xG b2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJdGVtc0ZvY3VzXVswXT0gImh0dHA6Ly93 d3cudGltZXNvbmxpbmUuY28udWsvdG9sL2xpZmVfYW5kX3N0eWxlL3JlbGF0ZWRf ZmVhdHVyZXMvIjsKYVRlYXNlcjJDb2xGb2N1c1tuMkNvbFRvdGFsQ2Fyb3VzZWxJ dGVtc0ZvY3VzXVsxXT0gIk1vcmUgcmVwb3J0czoiOwovLy0tPgo8L3NjcmlwdD4K PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCmFUZWFzZXIyQ29s Rm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1c11bMl09ICIvbXVsdGlt ZWRpYS9hcmNoaXZlLzAwNTAxL01vcmVfUmVwb3J0c181MDE3MjdhLkpQRyI7Ci8v LS0+Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cjwh LS0JCmFUZWFzZXIyQ29sRm9jdXNbbjJDb2xUb3RhbENhcm91c2VsSXRlbXNGb2N1 c11bM109ICJFbmpveSBmdXJ0aGVyIHJlYWRpbmcgZnJvbSBUcmF2ZWwgdG8gRmFz aGlvbiwgQnVzaW5lc3MgdG8gU3BvcnQsIGRpc2NvdmVyIG1vcmUiOwkKbjJDb2xU b3RhbENhcm91c2VsSXRlbXNGb2N1cysrOwovLy0tPgo8L3NjcmlwdD4KPGRpdiBj bGFzcz0icmVwb3J0cy1jb250YWluZXIgdGV4dC1sZWZ0Ij4KPGgzIGNsYXNzPSJz ZWN0aW9uLWhlYWRpbmciPkZvY3VzIFpvbmU8L2gzPgo8ZGl2IGNsYXNzPSJjbGVh ci1zaW1wbGUiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC01Ij48L2Rp dj4KPGRpdiBjbGFzcz0idGV4dC1sZWZ0IGJnLTAwMCI+CjxkaXYgY2xhc3M9ImJn LWY1ZjVmNSI+CjxkaXYgY2xhc3M9ImZsb2F0LWxlZnQiIGlkPSJDYXJvdXNlbDJD b2xGb2N1czEiPgo8ZGl2IGNsYXNzPSJhY3RpdmVibG9ja3MiIHN0eWxlPSJkaXNw bGF5OmJsb2NrIj4KPGRpdiBjbGFzcz0idGV4dC1sZWZ0IGJnLTAwMCBoZWlnaHQt MTAwIHdpZHRoLTMxNiI+CjxkaXYgY2xhc3M9ImZsb2F0LXJpZ2h0IHBhZGRpbmct bGVmdC0xMCI+CQo8YSBocmVmPSJodHRwOi8vYWQuZG91YmxlY2xpY2submV0L2Ns azsyMTI1OTU2MDE7MTMzODE3NjY7Zj9odHRwOi8vd3d3LnRpbWVzb25saW5lLmNv LnVrL3RvbC90cmF2ZWwvcmVsYXRlZF9mZWF0dXJlcy9ub3J0aGVybl9saWdodHMv Ij48aW1nIHNyYz0iL211bHRpbWVkaWEvYXJjaGl2ZS8wMDUyMy9uZXdjYXN0bGVf YW5nZWwxNjVfNTIzNjE5bC5naWYiIGNsYXNzPSJkaXNwbGF5LWJsb2NrIiB3aWR0 aD0iMTAwIiBoZWlnaHQ9IjEwMCIgYWx0PSJBbmdlbCBvZiB0aGUgbm9ydGgiIC8+ PC9hPgkKPC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctbGVmdC0xMCBwYWRkaW5n LXRvcC01Ij4JCjxoMiBjbGFzcz0ic3ViLWhlYWRpbmcgcGFkZGluZy1ib3R0b20t MyBwYWRkaW5nLXRvcC0zIj48YSBocmVmPSJodHRwOi8vYWQuZG91YmxlY2xpY2su bmV0L2NsazsyMTI1OTU2MDE7MTMzODE3NjY7Zj9odHRwOi8vd3d3LnRpbWVzb25s aW5lLmNvLnVrL3RvbC90cmF2ZWwvcmVsYXRlZF9mZWF0dXJlcy9ub3J0aGVybl9s aWdodHMvIiBjbGFzcz0ibGluay1mZmYiPk5vcnRoZXJuIExpZ2h0czo8L2E+PC9o Mj4KPHAgY2xhc3M9InNtYWxsIGNvbG9yLWZmZiI+V2luIGEgbHV4dXJ5IHdlZWtl bmQgdG8gTmV3Y2FzdGxlIGFuZCBpdHMgbmVpZ2hib3VyIEdhdGVzaGVhZCwgZmlu ZCBvdXQgbW9yZSBoZXJlPC9wPgkKPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBj bGFzcz0iYWN0aXZlYmxvY2tzIj4KPGRpdiBjbGFzcz0idGV4dC1sZWZ0IGJnLTAw MCBoZWlnaHQtMTAwIHdpZHRoLTMxNiI+CjxkaXYgY2xhc3M9ImZsb2F0LXJpZ2h0 IHBhZGRpbmctbGVmdC0xMCI+CjxhIGhyZWY9Imh0dHA6Ly9hZC5kb3VibGVjbGlj ay5uZXQvY2xrOzIxMDA5OTMyNDs2NzA4MzU3O2o/aHR0cDovL3d3dy50aW1lc29u bGluZS5jby51ay90b2wvYnVzaW5lc3MvcmVsYXRlZF9yZXBvcnRzL2J1c2luZXNz X3NvbHV0aW9ucy8iPjxpbWcgc3JjPSIvbXVsdGltZWRpYS9hcmNoaXZlLzAwNDQ2 L2J0X29uZV9ncmFwaGljXzE2NXhfNDQ2MDgzbC5naWYiIHdpZHRoPSIxMDAiIGhl aWdodD0iMTAwIiBjbGFzcz0iZGlzcGxheS1ibG9jayIgYWx0PSJCVCIgLz48L2E+ CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWxlZnQtMTAgcGFkZGluZy10b3At NSI+CQo8aDIgY2xhc3M9InN1Yi1oZWFkaW5nIHBhZGRpbmctYm90dG9tLTMgcGFk ZGluZy10b3AtMyI+PGEgaHJlZj0iaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9j bGs7MjEwMDk5MzI0OzY3MDgzNTc7aj9odHRwOi8vd3d3LnRpbWVzb25saW5lLmNv LnVrL3RvbC9idXNpbmVzcy9yZWxhdGVkX3JlcG9ydHMvYnVzaW5lc3Nfc29sdXRp b25zLyIgY2xhc3M9ImxpbmstZmZmIj5CdXNpbmVzcyBTb2x1dGlvbnM6PC9hPjwv aDI+CjxwIGNsYXNzPSJzbWFsbCBjb2xvci1mZmYiPlJpc2ssIHJlc2lsaWVuY2Ug YW5kIGVtYnJhY2luZyBuZXcgdGVjaG5vbG9neTwvcD4JCjwvZGl2Pgo8L2Rpdj4K PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGl2ZWJsb2NrcyI+CjxkaXYgY2xhc3M9InRl eHQtbGVmdCBiZy0wMDAgaGVpZ2h0LTEwMCB3aWR0aC0zMTYiPgo8ZGl2IGNsYXNz PSJmbG9hdC1yaWdodCBwYWRkaW5nLWxlZnQtMTAiPgo8YSBocmVmPSJodHRwOi8v YWQuZG91YmxlY2xpY2submV0L2NsazsyMDk1MzQ5NzE7MTAzNDEwMjk7ej9odHRw Oi8vYnVzaW5lc3MudGltZXNvbmxpbmUuY28udWsvdG9sL2J1c2luZXNzL2luZHVz dHJ5X3NlY3RvcnMvbmVlZF90b19rbm93LyI+PGltZyBzcmM9Ii9tdWx0aW1lZGlh L2FyY2hpdmUvMDA0MjIvYWNjZW50dXJlMTY1eDcwXzQyMjExNWwuanBnIiB3aWR0 aD0iMTAwIiBoZWlnaHQ9IjEwMCIgY2xhc3M9ImRpc3BsYXktYmxvY2siIGFsdD0i YWNjZW50dXJlIiAvPjwvYT4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctbGVm dC0xMCBwYWRkaW5nLXRvcC01Ij4JCjxoMiBjbGFzcz0ic3ViLWhlYWRpbmcgcGFk ZGluZy1ib3R0b20tMyBwYWRkaW5nLXRvcC0zIj48YSBocmVmPSJodHRwOi8vYWQu ZG91YmxlY2xpY2submV0L2NsazsyMDk1MzQ5NzE7MTAzNDEwMjk7ej9odHRwOi8v YnVzaW5lc3MudGltZXNvbmxpbmUuY28udWsvdG9sL2J1c2luZXNzL2luZHVzdHJ5 X3NlY3RvcnMvbmVlZF90b19rbm93LyIgY2xhc3M9ImxpbmstZmZmIj5OZWVkIHRv IEtub3c6PC9hPjwvaDI+CjxwIGNsYXNzPSJzbWFsbCBjb2xvci1mZmYiPkluZHVz dHJ5IHNlY3RvcnMgbmV3cyBhdCBhIGdsYW5jZS4gSW50ZXJhY3RpdmUgaGVhdG1h cCwgdmlkZW8gYW5kIHBvZGNhc3Q8L3A+CQo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8 ZGl2IGNsYXNzPSJhY3RpdmVibG9ja3MiPgo8ZGl2IGNsYXNzPSJ0ZXh0LWxlZnQg YmctMDAwIGhlaWdodC0xMDAgd2lkdGgtMzE2Ij4KPGRpdiBjbGFzcz0iZmxvYXQt cmlnaHQgcGFkZGluZy1sZWZ0LTEwIj4KPGEgaHJlZj0iaHR0cDovL2FkLmRvdWJs ZWNsaWNrLm5ldC9jbGs7MjEzOTkxMjQ0OzE4MTgwNTM2O2c/aHR0cDovL2J1c2lu ZXNzLnRpbWVzb25saW5lLmNvLnVrL3RvbC9idXNpbmVzcy9yZWxhdGVkX3JlcG9y dHMvYnVzaW5lc3Nfd2lzZG9tLyI+PGltZyBzcmM9Ii9tdWx0aW1lZGlhL2FyY2hp dmUvMDA0OTEvY2lzY28xNjVfNDkxOTE5bC5qcGciIHdpZHRoPSIxMDAiIGhlaWdo dD0iMTAwIiBjbGFzcz0iZGlzcGxheS1ibG9jayIgYWx0PSJDaXNjbyIgLz48L2E+ CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWxlZnQtMTAgcGFkZGluZy10b3At NSI+CQo8aDIgY2xhc3M9InN1Yi1oZWFkaW5nIHBhZGRpbmctYm90dG9tLTMgcGFk ZGluZy10b3AtMyI+PGEgaHJlZj0iaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9j bGs7MjEzOTkxMjQ0OzE4MTgwNTM2O2c/aHR0cDovL2J1c2luZXNzLnRpbWVzb25s aW5lLmNvLnVrL3RvbC9idXNpbmVzcy9yZWxhdGVkX3JlcG9ydHMvYnVzaW5lc3Nf d2lzZG9tLyIgY2xhc3M9ImxpbmstZmZmIj5CdXNpbmVzcyBXaXNkb206PC9hPjwv aDI+CjxwIGNsYXNzPSJzbWFsbCBjb2xvci1mZmYiPkRpc2NvdmVyIHRoZSBwb3dl ciBvZiBjb2xsZWN0aXZlIHRoaW5raW5nLiBTdWJtaXQgYSBzb2x1dGlvbiBhbmQg YmUgaW4gd2l0aCBhIGNoYW5jZSB0byB3aW4gYSBNZWRpYSBIdWIgSG9tZSBFbnRl cnRhaW5tZW50IFN5c3RlbSA8L3A+CQo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2 IGNsYXNzPSJhY3RpdmVibG9ja3MiPgo8ZGl2IGNsYXNzPSJ0ZXh0LWxlZnQgYmct MDAwIGhlaWdodC0xMDAgd2lkdGgtMzE2Ij4KPGRpdiBjbGFzcz0iZmxvYXQtcmln aHQgcGFkZGluZy1sZWZ0LTEwIj4KPGEgaHJlZj0iaHR0cDovL2FkLmRvdWJsZWNs aWNrLm5ldC9jbGs7MjA5NTI4Mjc5OzEzODczODQzO3U/aHR0cDovL2J1c2luZXNz LnRpbWVzb25saW5lLmNvLnVrL3RvbC9idXNpbmVzcy9yZWxhdGVkX3JlcG9ydHMv c29jaWFsX2VudHJlcHJlbmV1cnMvIj48aW1nIHNyYz0iL211bHRpbWVkaWEvYXJj aGl2ZS8wMDQzNy9sYXN0LTM4NV80Mzc1MzFsLmpwZyIgd2lkdGg9IjEwMCIgaGVp Z2h0PSIxMDAiIGNsYXNzPSJkaXNwbGF5LWJsb2NrIiBhbHQ9IlNvY2lhbCBFbnRy ZXByZW5ldXIiIC8+PC9hPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy1sZWZ0 LTEwIHBhZGRpbmctdG9wLTUiPgkKPGgyIGNsYXNzPSJzdWItaGVhZGluZyBwYWRk aW5nLWJvdHRvbS0zIHBhZGRpbmctdG9wLTMiPjxhIGhyZWY9Imh0dHA6Ly9hZC5k b3VibGVjbGljay5uZXQvY2xrOzIwOTUyODI3OTsxMzg3Mzg0Mzt1P2h0dHA6Ly9i dXNpbmVzcy50aW1lc29ubGluZS5jby51ay90b2wvYnVzaW5lc3MvcmVsYXRlZF9y ZXBvcnRzL3NvY2lhbF9lbnRyZXByZW5ldXJzLyIgY2xhc3M9ImxpbmstZmZmIj5T b2NpYWwgRW50cmVwcmVuZXVyczo8L2E+PC9oMj4KPHAgY2xhc3M9InNtYWxsIGNv bG9yLWZmZiI+VGhlIGluc2lkZSB0cmFjayBvbiBjdXJyZW50IHRyZW5kcyBpbiB0 aGUgY2hhcml0eSwgbm90IGZvciBwcm9maXQgYW5kIHNvY2lhbCBlbnRlcnByaXNl IHNlY3RvcnM8L3A+CQo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJh Y3RpdmVibG9ja3MiPgo8ZGl2IGNsYXNzPSJ0ZXh0LWxlZnQgYmctMDAwIGhlaWdo dC0xMDAgd2lkdGgtMzE2Ij4KPGRpdiBjbGFzcz0iZmxvYXQtcmlnaHQgcGFkZGlu Zy1sZWZ0LTEwIj4KPGEgaHJlZj0iaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9j bGs7MTg2MDk3NTg3OzE1NDc5NzU1O2g/aHR0cDovL3d3dy50aW1lc29ubGluZS5j by51ay90b2wvdHJhdmVsL2J1c2luZXNzLyI+PGltZyBzcmM9Ii9tdWx0aW1lZGlh L2FyY2hpdmUvMDAzNTMvYmFfY2xvdWRzXzEwMF8zNTM4ODBhLmpwZyIgd2lkdGg9 IjEwMCIgaGVpZ2h0PSIxMDAiIGNsYXNzPSJkaXNwbGF5LWJsb2NrIiBhbHQ9ImJh IGJ1c2luZXNzIHRyYXZlbCBjbG91ZHMiIC8+PC9hPgo8L2Rpdj4KPGRpdiBjbGFz cz0icGFkZGluZy1sZWZ0LTEwIHBhZGRpbmctdG9wLTUiPgkKPGgyIGNsYXNzPSJz dWItaGVhZGluZyBwYWRkaW5nLWJvdHRvbS0zIHBhZGRpbmctdG9wLTMiPjxhIGhy ZWY9Imh0dHA6Ly9hZC5kb3VibGVjbGljay5uZXQvY2xrOzE4NjA5NzU4NzsxNTQ3 OTc1NTtoP2h0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsvdG9sL3RyYXZlbC9i dXNpbmVzcy8iIGNsYXNzPSJsaW5rLWZmZiI+QnVzaW5lc3MgVHJhdmVsOjwvYT48 L2gyPgo8cCBjbGFzcz0ic21hbGwgY29sb3ItZmZmIj5FdmVyeXRoaW5nIHRoZSBC dXNpbmVzcyBUcmF2ZWxsZXIgbmVlZHMgdG8ga25vdyB0byBtYWtlIGEgYmV0dGVy IHRyaXA8L3A+CQo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3Rp dmVibG9ja3MiPgo8ZGl2IGNsYXNzPSJ0ZXh0LWxlZnQgYmctMDAwIGhlaWdodC0x MDAgd2lkdGgtMzE2Ij4KPGRpdiBjbGFzcz0iZmxvYXQtcmlnaHQgcGFkZGluZy1s ZWZ0LTEwIj4KPGEgaHJlZj0iaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9jbGs7 MjE0MjI1OTIyOzg5NDM3NTM7bD9odHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVr L3RvbC9saWZlX2FuZF9zdHlsZS9yZWxhdGVkX2ZlYXR1cmVzL2dyZWF0X2JyaXRp c2hfc3VtbWVyLyI+PGltZyBzcmM9Ii9tdWx0aW1lZGlhL2FyY2hpdmUvMDA1Njcv Ym9hdHMxNjVfNTY3ODIwbC5naWYiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBj bGFzcz0iZGlzcGxheS1ibG9jayIgYWx0PSJyb3dpbmcgYm9hdHMiIC8+PC9hPgo8 L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy1sZWZ0LTEwIHBhZGRpbmctdG9wLTUi PgkKPGgyIGNsYXNzPSJzdWItaGVhZGluZyBwYWRkaW5nLWJvdHRvbS0zIHBhZGRp bmctdG9wLTMiPjxhIGhyZWY9Imh0dHA6Ly9hZC5kb3VibGVjbGljay5uZXQvY2xr OzIxNDIyNTkyMjs4OTQzNzUzO2w/aHR0cDovL3d3dy50aW1lc29ubGluZS5jby51 ay90b2wvbGlmZV9hbmRfc3R5bGUvcmVsYXRlZF9mZWF0dXJlcy9ncmVhdF9icml0 aXNoX3N1bW1lci8iIGNsYXNzPSJsaW5rLWZmZiI+R3JlYXQgQnJpdGlzaCBTdW1t ZXIgOjwvYT48L2gyPgo8cCBjbGFzcz0ic21hbGwgY29sb3ItZmZmIj5NYWtlIHRo ZSBtb3N0IG9mIHRoZSBzdW1tZXIgYW5kIGVudGVyIG91ciBmYWJ1bG91cyBwaG90 b2dyYXBoaWMgY29tcGV0aXRpb24sIHlvdSBjb3VsZCB3aW4gYSCjNTAwMCBob2xp ZGF5PC9wPgkKPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0aXZl YmxvY2tzIj4KPGRpdiBjbGFzcz0idGV4dC1sZWZ0IGJnLTAwMCBoZWlnaHQtMTAw IHdpZHRoLTMxNiI+CjxkaXYgY2xhc3M9ImZsb2F0LXJpZ2h0IHBhZGRpbmctbGVm dC0xMCI+CjxhIGhyZWY9Imh0dHA6Ly9hZC5kb3VibGVjbGljay5uZXQvY2xrOzIx NTQ5ODM3MzszODM4MTQ5OTthP2h0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsv dG9sL3RyYXZlbC9yZWxhdGVkX2ZlYXR1cmVzL2NvcnNpY2EtdHJhdmVsLyI+PGlt ZyBzcmM9Ii9tdWx0aW1lZGlhL2FyY2hpdmUvMDA1ODIvY29yc2ljYTE2NV81ODI3 MTZsLmpwZyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGNsYXNzPSJkaXNwbGF5 LWJsb2NrIiBhbHQ9IkNvcnNpY2EiIC8+PC9hPgo8L2Rpdj4KPGRpdiBjbGFzcz0i cGFkZGluZy1sZWZ0LTEwIHBhZGRpbmctdG9wLTUiPgkKPGgyIGNsYXNzPSJzdWIt aGVhZGluZyBwYWRkaW5nLWJvdHRvbS0zIHBhZGRpbmctdG9wLTMiPjxhIGhyZWY9 Imh0dHA6Ly9hZC5kb3VibGVjbGljay5uZXQvY2xrOzIxNTQ5ODM3MzszODM4MTQ5 OTthP2h0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsvdG9sL3RyYXZlbC9yZWxh dGVkX2ZlYXR1cmVzL2NvcnNpY2EtdHJhdmVsLyIgY2xhc3M9ImxpbmstZmZmIj5D b3JzaWNhIFRyYXZlbDo8L2E+PC9oMj4KPHAgY2xhc3M9InNtYWxsIGNvbG9yLWZm ZiI+Q29yc2ljYSBpcyBhbiBpc2xhbmQgb2YgYmVhdXR5IGFuZCBjb250cmFzdCwg YW4gaWRlYWwgaG9saWRheSBkZXN0aW5hdGlvbjwvcD4JCjwvZGl2Pgo8L2Rpdj4K PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGl2ZWJsb2NrcyI+CjxkaXYgY2xhc3M9InRl eHQtbGVmdCBiZy0wMDAgaGVpZ2h0LTEwMCB3aWR0aC0zMTYiPgo8ZGl2IGNsYXNz PSJmbG9hdC1yaWdodCBwYWRkaW5nLWxlZnQtMTAiPgo8YSBocmVmPSJodHRwOi8v d3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9saWZlX2FuZF9zdHlsZS9yZWxhdGVk X2ZlYXR1cmVzLyI+PGltZyBzcmM9Ii9tdWx0aW1lZGlhL2FyY2hpdmUvMDA1MDEv TW9yZV9SZXBvcnRzXzUwMTcyN2EuSlBHIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw MCIgY2xhc3M9ImRpc3BsYXktYmxvY2siIGFsdD0iTW9yZSBSZXBvcnRzIiAvPjwv YT4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctbGVmdC0xMCBwYWRkaW5nLXRv cC01Ij4JCjxoMiBjbGFzcz0ic3ViLWhlYWRpbmcgcGFkZGluZy1ib3R0b20tMyBw YWRkaW5nLXRvcC0zIj48YSBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNv LnVrL3RvbC9saWZlX2FuZF9zdHlsZS9yZWxhdGVkX2ZlYXR1cmVzLyIgY2xhc3M9 ImxpbmstZmZmIj5Nb3JlIHJlcG9ydHM6PC9hPjwvaDI+CjxwIGNsYXNzPSJzbWFs bCBjb2xvci1mZmYiPkVuam95IGZ1cnRoZXIgcmVhZGluZyBmcm9tIFRyYXZlbCB0 byBGYXNoaW9uLCBCdXNpbmVzcyB0byBTcG9ydCwgZGlzY292ZXIgbW9yZTwvcD4J CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxkaXYg Y2xhc3M9InRleHQtY2VudGVyIHdpZHRoLTMxNiBiZy1mNWY1ZjUgcGFkZGluZy1i b3R0b20tNSBwYWRkaW5nLXRvcC0yIj4gPHNwYW4gY2xhc3M9ImJyb3dzZXItbGVm dC1hbmQtcmlnaHQiPjxhIGhyZWY9IiMiIG9uY2xpY2s9ImphdmFzY3JpcHQ6cmV0 dXJuICEgZk1vdmVDYXJvdXNlbDJDb2xGb2N1cygwLDEpOyIgb25rZXlwcmVzcz0i amF2YXNjcmlwdDpyZXR1cm4gISBmTW92ZUNhcm91c2VsMkNvbEZvY3VzKDAsMSk7 Ij48aW1nIHNyYz0iaHR0cDovL3d3dy50aW1lc29ubGluZS5jby51ay90b2wvaW1n L2dsb2JhbC9idXR0b24vYnV0dG9uLWxlZnQuZ2lmIiB3aWR0aD0iMTQiIGhlaWdo dD0iMTQiIGJvcmRlcj0iMCIgYWx0PSJwcmV2aW91cyIgLz48L2E+PC9zcGFuPiA8 c3BhbiBjbGFzcz0iYnJvd3Nlci1sZWZ0LWFuZC1yaWdodCI+PGEgaHJlZj0iIyIg b25jbGljaz0iamF2YXNjcmlwdDpyZXR1cm4gISBmTW92ZUNhcm91c2VsMkNvbEZv Y3VzKDEsMSk7IiBvbmtleXByZXNzPSJqYXZhc2NyaXB0OnJldHVybiAhIGZNb3Zl Q2Fyb3VzZWwyQ29sRm9jdXMoMSwxKTsiPjxpbWcgc3JjPSJodHRwOi8vd3d3LnRp bWVzb25saW5lLmNvLnVrL3RvbC9pbWcvZ2xvYmFsL2J1dHRvbi9idXR0b24tcmln aHQuZ2lmIiB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIGJvcmRlcj0iMCIgYWx0PSJu ZXh0IiAvPjwvYT48L3NwYW4+IDwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhci1zaW1w bGUiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC0xMCI+PC9kaXY+Cjxk aXYgaWQ9ImJvdHRvbS1saW5rcy1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJmbG9h dC1sZWZ0IHdpZHRoLTE0NSI+Cjx1bCBjbGFzcz0iY2hldnJvbi1saXN0IGNoZXZy b24tYmx1ZSI+CjxsaT48YSBjbGFzcz0ibGluay0wNmMiIGhyZWY9Imh0dHA6Ly9h ZC5kb3VibGVjbGljay5uZXQvY2xrOzIxMjU5NTYwMTsxMzM4MTc2NjtmP2h0dHA6 Ly93d3cudGltZXNvbmxpbmUuY28udWsvdG9sL3RyYXZlbC9yZWxhdGVkX2ZlYXR1 cmVzL25vcnRoZXJuX2xpZ2h0cy8iPk5vcnRoZXJuIExpZ2h0czwvYT48L2xpPgo8 bGk+PGEgY2xhc3M9ImxpbmstNjY2IiBocmVmPSJodHRwOi8vYWQuZG91YmxlY2xp Y2submV0L2NsazsyMTAwOTkzMjQ7NjcwODM1NztqP2h0dHA6Ly93d3cudGltZXNv bmxpbmUuY28udWsvdG9sL2J1c2luZXNzL3JlbGF0ZWRfcmVwb3J0cy9idXNpbmVz c19zb2x1dGlvbnMvIj5CdXNpbmVzcyBTb2x1dGlvbnM8L2E+PC9saT4JCjxsaT48 YSBjbGFzcz0ibGluay02NjYiIGhyZWY9Imh0dHA6Ly9hZC5kb3VibGVjbGljay5u ZXQvY2xrOzIwOTUzNDk3MTsxMDM0MTAyOTt6P2h0dHA6Ly9idXNpbmVzcy50aW1l c29ubGluZS5jby51ay90b2wvYnVzaW5lc3MvaW5kdXN0cnlfc2VjdG9ycy9uZWVk X3RvX2tub3cvIj5OZWVkIHRvIEtub3c8L2E+PC9saT4JCjxsaT48YSBjbGFzcz0i bGluay02NjYiIGhyZWY9Imh0dHA6Ly9hZC5kb3VibGVjbGljay5uZXQvY2xrOzIx Mzk5MTI0NDsxODE4MDUzNjtnP2h0dHA6Ly9idXNpbmVzcy50aW1lc29ubGluZS5j by51ay90b2wvYnVzaW5lc3MvcmVsYXRlZF9yZXBvcnRzL2J1c2luZXNzX3dpc2Rv bS8iPkJ1c2luZXNzIFdpc2RvbTwvYT48L2xpPgkKPC91bD4KPC9kaXY+CjxkaXYg Y2xhc3M9ImZsb2F0LWxlZnQgd2lkdGgtMTQ1Ij4KPHVsIGNsYXNzPSJjaGV2cm9u LWxpc3QgY2hldnJvbi1ibHVlIj4KPGxpPjxhIGNsYXNzPSJsaW5rLTY2NiIgaHJl Zj0iaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9jbGs7MjA5NTI4Mjc5OzEzODcz ODQzO3U/aHR0cDovL2J1c2luZXNzLnRpbWVzb25saW5lLmNvLnVrL3RvbC9idXNp bmVzcy9yZWxhdGVkX3JlcG9ydHMvc29jaWFsX2VudHJlcHJlbmV1cnMvIj5Tb2Np YWwgRW50cmVwcmVuZXVyczwvYT48L2xpPgkKPGxpPjxhIGNsYXNzPSJsaW5rLTY2 NiIgaHJlZj0iaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9jbGs7MTg2MDk3NTg3 OzE1NDc5NzU1O2g/aHR0cDovL3d3dy50aW1lc29ubGluZS5jby51ay90b2wvdHJh dmVsL2J1c2luZXNzLyI+QnVzaW5lc3MgVHJhdmVsPC9hPjwvbGk+CQo8bGk+PGEg Y2xhc3M9ImxpbmstNjY2IiBocmVmPSJodHRwOi8vYWQuZG91YmxlY2xpY2submV0 L2NsazsyMTQyMjU5MjI7ODk0Mzc1MztsP2h0dHA6Ly93d3cudGltZXNvbmxpbmUu Y28udWsvdG9sL2xpZmVfYW5kX3N0eWxlL3JlbGF0ZWRfZmVhdHVyZXMvZ3JlYXRf YnJpdGlzaF9zdW1tZXIvIj5HcmVhdCBCcml0aXNoIFN1bW1lciA8L2E+PC9saT4J CjxsaT48YSBjbGFzcz0ibGluay02NjYiIGhyZWY9Imh0dHA6Ly9hZC5kb3VibGVj bGljay5uZXQvY2xrOzIxNTQ5ODM3MzszODM4MTQ5OTthP2h0dHA6Ly93d3cudGlt ZXNvbmxpbmUuY28udWsvdG9sL3RyYXZlbC9yZWxhdGVkX2ZlYXR1cmVzL2NvcnNp Y2EtdHJhdmVsLyI+Q29yc2ljYSBUcmF2ZWw8L2E+PC9saT4JCjxsaT48YSBjbGFz cz0ibGluay02NjYiIGhyZWY9Imh0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsv dG9sL2xpZmVfYW5kX3N0eWxlL3JlbGF0ZWRfZmVhdHVyZXMvIj5Nb3JlIHJlcG9y dHM8L2E+PC9saT4JCjwvdWw+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xl YXIiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC01Ij48L2Rpdj4KPC9k aXY+CjxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0 L2phdmFzY3JpcHQiPgo8IS0tCmlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKSAK ewpnZXRFbGVtZW50QnlDbGFzc0ZvY3VzKCJhY3RpdmVibG9ja3MiKTsKc2V0SW50 ZXJ2YWwoInN3YXBjb250ZW50Rm9jdXMoKSIsIDUwMDApOwp9Ci8vLS0+Cjwvc2Ny aXB0Pgo8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+CjwhLS0gQkVHSU46SW5oZXJp dGVkIFJJR0hUIFRPUCBJTkhFUklURU5DRSBPUEVOIE1vZHVsZXMgLS0+CjwhLS1Q dWZmIE1vZHVsZSBQdWJsaXNoZWQgRGF0ZSA6IEFwciAyNSwgMjAwNyA2OjAxIFBN LS0+Cjxmb3JtIG5hbWU9InB1ZmZGb3JtMiIgbWV0aG9kPSJwb3N0IiBhY3Rpb249 IiI+CjxkaXYgY2xhc3M9InB1ZmYtc3F1YXJlIj4KPGRpdiBjbGFzcz0iZmxvYXQt cmlnaHQiPgo8YSBocmVmPSJodHRwOi8vd3d3LnRoZWZ1bGxlcmN2LmNvbS90aW1l c29ubGluZS5hc3AiPgo8aW1nIHNyYz0iL211bHRpbWVkaWEvYXJjaGl2ZS8wMDUw MC9Kb2JfSW50ZXJ2aWV3XzUwMDk5MHAuanBnIiBjbGFzcz0iZGlzcGxheS1ibG9j ayIgd2lkdGg9IjE2NSIgaGVpZ2h0PSI3MCIgYWx0PSJHZW5lcmljIHBob3RvIG9m IGEgam9iIGludGVydmlldy4iIC8+CjwvYT4KPC9kaXY+CjxkaXYgY2xhc3M9Indp ZHRoLTE2OSBmbG9hdC1sZWZ0Ij4KPGRpdiBjbGFzcz0icGFkZGluZy1sZWZ0LXJp Z2h0LTkgcGFkZGluZy10b3AtNS1ib3R0b20tNCI+CjxoMyBjbGFzcz0ic2VjdGlv bi1oZWFkaW5nIj48L2gzPgkKPGgyIGNsYXNzPSJzdWItaGVhZGluZy1wdWZmIj4K PGEgY2xhc3M9ImxpbmstMDZjIiBocmVmPSJodHRwOi8vd3d3LnRoZWZ1bGxlcmN2 LmNvbS90aW1lc29ubGluZS5hc3AiIHJlbD0ibm9mb2xsb3ciPkZyZWUgQ1YgUmV2 aWV3PC9hPgo8L2gyPgo8IS0tPGRpdiBjbGFzcz0iY2xlYXItc2ltcGxlIHBhZGRp bmctdG9wLTMiPjwvZGl2Pi0tPgo8cCBjbGFzcz0ic21hbGwiPlNlbGwgeW91cnNl bGYhIEhhdmUgeW91ciBDViByZXZpZXdlZCBieSBleHBlcnRzPC9wPiAKPCEtLTxk aXYgY2xhc3M9ImNsZWFyLXNpbXBsZSBwYWRkaW5nLXRvcC0zIj48L2Rpdj4tLT4K PCEtLSBQYWRkaW5nIGJvdHRvbSA3IGFwcGxpZWQgYXMgdGhlcmUgaXMgYW5vdGhl ciAicHVmZiIgYWZ0ZXIgaXQuIFJlbW92ZSBpZiB0aGlzIGlzIHRoZSBsYXN0IHB1 ZmYuIC0tPgo8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4K PC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4KPC9mb3JtPgo8IS0tUHVm ZiBNb2R1bGUgUHVibGlzaGVkIERhdGUgOiBNYXIgMiwgMjAwNyA0OjQ3IFBNLS0+ Cjxmb3JtIG5hbWU9InB1ZmZGb3JtMyIgbWV0aG9kPSJwb3N0IiBhY3Rpb249IiI+ CjxkaXYgY2xhc3M9InB1ZmYtc3F1YXJlIj4KPGRpdiBjbGFzcz0iZmxvYXQtcmln aHQiPgo8YSBocmVmPSJodHRwOi8vd3d3LmJjZ2xvY2F0aW9ucy5jb20iPgo8aW1n IHNyYz0iL211bHRpbWVkaWEvYXJjaGl2ZS8wMDE1MC9iY2dfMTY1XzE1MDk0MWEu anBnIiBjbGFzcz0iZGlzcGxheS1ibG9jayIgd2lkdGg9IjE2NSIgaGVpZ2h0PSI3 MCIgYWx0PSJUaGUgU2luZ2Fwb3JlIHNreWxpbmUgcGljdHVyZWQgYXQgbmlnaHQi IC8+CjwvYT4KPC9kaXY+CjxkaXYgY2xhc3M9IndpZHRoLTE2OSBmbG9hdC1sZWZ0 Ij4KPGRpdiBjbGFzcz0icGFkZGluZy1sZWZ0LXJpZ2h0LTkgcGFkZGluZy10b3At NS1ib3R0b20tNCI+CjxoMyBjbGFzcz0ic2VjdGlvbi1oZWFkaW5nIj48L2gzPgkK PGgyIGNsYXNzPSJzdWItaGVhZGluZy1wdWZmIj4KPGEgY2xhc3M9ImxpbmstMDZj IiBocmVmPSJodHRwOi8vd3d3LmJjZ2xvY2F0aW9ucy5jb20iIHJlbD0ibm9mb2xs b3ciPkJ1c2luZXNzIGNpdHkgZ3VpZGVzPC9hPgo8L2gyPgo8IS0tPGRpdiBjbGFz cz0iY2xlYXItc2ltcGxlIHBhZGRpbmctdG9wLTMiPjwvZGl2Pi0tPgo8cCBjbGFz cz0ic21hbGwiPk92ZXJzZWFzIGNvbnRhY3RzIGFuZCBsb2NhbCBidXNpbmVzcyBp bmZvcm1hdGlvbjwvcD4gCjwhLS08ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUgcGFk ZGluZy10b3AtMyI+PC9kaXY+LS0+CjwhLS0gUGFkZGluZyBib3R0b20gNyBhcHBs aWVkIGFzIHRoZXJlIGlzIGFub3RoZXIgInB1ZmYiIGFmdGVyIGl0LiBSZW1vdmUg aWYgdGhpcyBpcyB0aGUgbGFzdCBwdWZmLiAtLT4KPGRpdiBjbGFzcz0iY2xlYXIi PjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhciI+ PC9kaXY+CjwvZm9ybT4KPCEtLUVORDogSW5oZXJpdGVkIFJJR0hUIFRPUCBJTkhF UklURU5DRSBPUEVOIE1vZHVsZXMgLS0+CjwhLS1CRUdJTjpJbmhlcml0ZWQgUklH SFQgQk9UVE9NIElOSEVSSVRFTkNFIE9QRU4gTW9kdWxlcyAtLT4KPCEtLVB1ZmYg TW9kdWxlIFB1Ymxpc2hlZCBEYXRlIDogSnVsIDE2LCAyMDA5IDU6MDQgUE0tLT4K PGZvcm0gbmFtZT0icHVmZkZvcm00IiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIj4K PGRpdiBjbGFzcz0icHVmZi1zcXVhcmUiPgo8ZGl2IGNsYXNzPSJmbG9hdC1yaWdo dCI+CjxhIGhyZWY9Imh0dHA6Ly9idXNpbmVzcy50aW1lc29ubGluZS5jby51ay90 b2wvYnVzaW5lc3MvaW5kdXN0cnlfc2VjdG9ycy9hcnRpY2xlNjcxNjczMS5lY2Ui Pgo8aW1nIHNyYz0iL211bHRpbWVkaWEvYXJjaGl2ZS8wMDQyMi9ncmFwaF80MjI1 MDFhLmpwZyIgY2xhc3M9ImRpc3BsYXktYmxvY2siIHdpZHRoPSIxNjUiIGhlaWdo dD0iNzAiIGFsdD0iSWxsdXN0cmF0aW9uIG9mIGEgbWFuIHdhbGtpbmcgdXAgYSBn cmFwaCIgLz4KPC9hPgo8L2Rpdj4KPGRpdiBjbGFzcz0id2lkdGgtMTY5IGZsb2F0 LWxlZnQiPgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWxlZnQtcmlnaHQtOSBwYWRkaW5n LXRvcC01LWJvdHRvbS00Ij4KPGgzIGNsYXNzPSJzZWN0aW9uLWhlYWRpbmciPjwv aDM+CQo8aDIgY2xhc3M9InN1Yi1oZWFkaW5nLXB1ZmYiPgo8YSBjbGFzcz0ibGlu ay0wNmMiIGhyZWY9Imh0dHA6Ly9idXNpbmVzcy50aW1lc29ubGluZS5jby51ay90 b2wvYnVzaW5lc3MvaW5kdXN0cnlfc2VjdG9ycy9hcnRpY2xlNjcxNjczMS5lY2Ui PkhpZ2ggUGVyZm9ybWFuY2U8L2E+CjwvaDI+CjwhLS08ZGl2IGNsYXNzPSJjbGVh ci1zaW1wbGUgcGFkZGluZy10b3AtMyI+PC9kaXY+LS0+CjxwIGNsYXNzPSJzbWFs bCI+SW5ub3ZhdGlvbiBhZGRzIHNvbWUgZml6eiB0byBCcml0dmljIHRyYWRpbmcg cmVzdWx0czwvcD4gCjwhLS08ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUgcGFkZGlu Zy10b3AtMyI+PC9kaXY+LS0+CjwhLS0gUGFkZGluZyBib3R0b20gNyBhcHBsaWVk IGFzIHRoZXJlIGlzIGFub3RoZXIgInB1ZmYiIGFmdGVyIGl0LiBSZW1vdmUgaWYg dGhpcyBpcyB0aGUgbGFzdCBwdWZmLiAtLT4KPGRpdiBjbGFzcz0iY2xlYXIiPjwv ZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhciI+PC9k aXY+CjwvZm9ybT4KPCEtLVB1ZmYgTW9kdWxlIFB1Ymxpc2hlZCBEYXRlIDogSmFu IDMwLCAyMDA5IDQ6NTQgUE0tLT4KPGZvcm0gbmFtZT0icHVmZkZvcm01IiBtZXRo b2Q9InBvc3QiIGFjdGlvbj0iIj4KPGRpdiBjbGFzcz0icHVmZi1zcXVhcmUiPgo8 ZGl2IGNsYXNzPSJmbG9hdC1yaWdodCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cudGFr ZWxlZ2FsYWR2aWNlLmNvbS9hZmZpbGlhdGVzLz9pZD1UaW1lcy0oUGVyc29uYWwp Ij4KPGltZyBzcmM9Ii9tdWx0aW1lZGlhL2FyY2hpdmUvMDA0NzgvanVkZ2UzODVf NDc4MjcxcC5qcGciIGNsYXNzPSJkaXNwbGF5LWJsb2NrIiB3aWR0aD0iMTY1IiBo ZWlnaHQ9IjcwIiBhbHQ9IkEgbGF3eWVyIHdpdGggZ293biBhbmQgd2lnIiAvPgo8 L2E+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ3aWR0aC0xNjkgZmxvYXQtbGVmdCI+Cjxk aXYgY2xhc3M9InBhZGRpbmctbGVmdC1yaWdodC05IHBhZGRpbmctdG9wLTUtYm90 dG9tLTQiPgo8aDMgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+PC9oMz4JCjxoMiBj bGFzcz0ic3ViLWhlYWRpbmctcHVmZiI+CjxhIGNsYXNzPSJsaW5rLTA2YyIgaHJl Zj0iaHR0cDovL3d3dy50YWtlbGVnYWxhZHZpY2UuY29tL2FmZmlsaWF0ZXMvP2lk PVRpbWVzLShQZXJzb25hbCkiIHJlbD0ibm9mb2xsb3ciPkZpbmQgYSBMYXd5ZXI8 L2E+CjwvaDI+CjwhLS08ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUgcGFkZGluZy10 b3AtMyI+PC9kaXY+LS0+CjxwIGNsYXNzPSJzbWFsbCI+Q3V0IHlvdXIgbGVnYWwg Y29zdHM8L3A+IAo8IS0tPGRpdiBjbGFzcz0iY2xlYXItc2ltcGxlIHBhZGRpbmct dG9wLTMiPjwvZGl2Pi0tPgo8IS0tIFBhZGRpbmcgYm90dG9tIDcgYXBwbGllZCBh cyB0aGVyZSBpcyBhbm90aGVyICJwdWZmIiBhZnRlciBpdC4gUmVtb3ZlIGlmIHRo aXMgaXMgdGhlIGxhc3QgcHVmZi4gLS0+CjxkaXYgY2xhc3M9ImNsZWFyIj48L2Rp dj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2 Pgo8L2Zvcm0+CjwhLS1QdWZmIE1vZHVsZSBQdWJsaXNoZWQgRGF0ZSA6IE1hciAx OCwgMjAwOSAxMDoxOCBBTS0tPgo8Zm9ybSBuYW1lPSJwdWZmRm9ybTYiIG1ldGhv ZD0icG9zdCIgYWN0aW9uPSIiPgo8ZGl2IGNsYXNzPSJwdWZmLXNxdWFyZSI+Cjxk aXYgY2xhc3M9ImZsb2F0LXJpZ2h0Ij4KPGEgaHJlZj0iaHR0cDovL3d3dy5qb2lu Y3JlZGl0ZXhwZXJ0LmNvbS9mcmVlY3JlZGl0cmVwb3J0Lz9zYz00MTAwMTcmYW1w O2JjZD10aW1lc2NyZWRpdGNlbnRyZWZyZSI+CjxpbWcgc3JjPSIvbXVsdGltZWRp YS9hcmNoaXZlLzAwNTAxL01vbmV5XzUwMTAyMnAuanBnIiBjbGFzcz0iZGlzcGxh eS1ibG9jayIgd2lkdGg9IjE2NSIgaGVpZ2h0PSI3MCIgYWx0PSIiIC8+CjwvYT4K PC9kaXY+CjxkaXYgY2xhc3M9IndpZHRoLTE2OSBmbG9hdC1sZWZ0Ij4KPGRpdiBj bGFzcz0icGFkZGluZy1sZWZ0LXJpZ2h0LTkgcGFkZGluZy10b3AtNS1ib3R0b20t NCI+CjxoMyBjbGFzcz0ic2VjdGlvbi1oZWFkaW5nIj48L2gzPgkKPGgyIGNsYXNz PSJzdWItaGVhZGluZy1wdWZmIj4KPGEgY2xhc3M9ImxpbmstMDZjIiBocmVmPSJo dHRwOi8vd3d3LmpvaW5jcmVkaXRleHBlcnQuY29tL2ZyZWVjcmVkaXRyZXBvcnQv P3NjPTQxMDAxNyZiY2Q9dGltZXNjcmVkaXRjZW50cmVmcmUiIHJlbD0ibm9mb2xs b3ciPkZyZWUgY3JlZGl0IHJlcG9ydDwvYT4KPC9oMj4KPCEtLTxkaXYgY2xhc3M9 ImNsZWFyLXNpbXBsZSBwYWRkaW5nLXRvcC0zIj48L2Rpdj4tLT4KPHAgY2xhc3M9 InNtYWxsIj5PbmxpbmUgY3JlZGl0IGhpc3Rvcnkgd2l0aCBDcmVkaXRFeHBlcnQg ZnJvbSBFeHBlcmlhbjwvcD4gCjwhLS08ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUg cGFkZGluZy10b3AtMyI+PC9kaXY+LS0+CjwhLS0gUGFkZGluZyBib3R0b20gNyBh cHBsaWVkIGFzIHRoZXJlIGlzIGFub3RoZXIgInB1ZmYiIGFmdGVyIGl0LiBSZW1v dmUgaWYgdGhpcyBpcyB0aGUgbGFzdCBwdWZmLiAtLT4KPGRpdiBjbGFzcz0iY2xl YXIiPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVh ciI+PC9kaXY+CjwvZm9ybT4KPCEtLSBFTkQ6IEluaGVyaXRlZCBSSUdIVCBCT1RU T00gSU5IRVJJVEVOQ0UgT1BFTiBNb2R1bGVzIC0tPgo8ZGl2IGNsYXNzPSJ0ZXh0 LWxlZnQgd2lkdGgtMzM2Ij4KPGRpdiBjbGFzcz0id2lkdGgtMTAwLXBlcmNlbnQi Pgo8ZGl2IGNsYXNzPSJiZy1mNWY1ZjUiPgo8ZGl2IGNsYXNzPSJxdWljay1saW5r cy1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWxlZnQtcmlnaHQtOSBw YWRkaW5nLXRvcC01IHBhZGRpbmctYm90dG9tLTIiPgo8aDMgY2xhc3M9InNlY3Rp b24taGVhZGluZyI+PHNwYW4gY2xhc3M9ImNvbG9yLTY2NiI+UG9wdWxhciBTZWFy Y2hlcyBvbiBUaW1lcyBPbmxpbmU8L3NwYW4+PC9oMz4KPC9kaXY+CjxkaXYgY2xh c3M9ImdyZXktbGluZSI+PC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4K PGRpdiBjbGFzcz0icGFkZGluZy1sZWZ0LXJpZ2h0LTcgcGFkZGluZy1ib3R0b20t NyI+CQo8c3BhbiBjbGFzcz0idG9wLXNlYXJjaDAxIj4KPGEgY2xhc3M9Imxpbmst MDZjIiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9zcG9y dC9jcmlja2V0LyI+CjxzdHJvbmc+IGFzaGVzPC9zdHJvbmc+CjwvYT48L3NwYW4+ JiN4MDAyMDsKPHNwYW4gY2xhc3M9InNlYXJjaC1zZXBlcmF0b3IiPnw8L3NwYW4+ JiN4MDAyMDsKPHNwYW4gY2xhc3M9InRvcC1zZWFyY2gwMyI+CjxhIGNsYXNzPSJs aW5rLTA2YyIgaHJlZj0iaHR0cDovL2VudGVydGFpbm1lbnQudGltZXNvbmxpbmUu Y28udWsvdG9sL2FydHNfYW5kX2VudGVydGFpbm1lbnQvYm9va3MvIj4KPHN0cm9u Zz4gYm9va3MgPC9zdHJvbmc+CjwvYT48L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xh c3M9InNlYXJjaC1zZXBlcmF0b3IiPnw8L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xh c3M9InRvcC1zZWFyY2gwMSI+CjxhIGNsYXNzPSJsaW5rLTA2YyIgaHJlZj0iaHR0 cDovL2VudGVydGFpbm1lbnQudGltZXNvbmxpbmUuY28udWsvdG9sL2FydHNfYW5k X2VudGVydGFpbm1lbnQvZ2FtZXNfYW5kX3B1enpsZXMvY2hlc3MvIj4KPHN0cm9u Zz4gY2hlc3MgPC9zdHJvbmc+CjwvYT48L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xh c3M9InNlYXJjaC1zZXBlcmF0b3IiPnw8L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xh c3M9InRvcC1zZWFyY2gwMyI+CjxhIGNsYXNzPSJsaW5rLTA2YyIgaHJlZj0iaHR0 cDovL3dvbWVuLnRpbWVzb25saW5lLmNvLnVrL3RvbC9saWZlX2FuZF9zdHlsZS93 b21lbi9mYXNoaW9uLyI+CjxzdHJvbmc+IGZhc2hpb24gPC9zdHJvbmc+CjwvYT48 L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xhc3M9InNlYXJjaC1zZXBlcmF0b3IiPnw8 L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xhc3M9InRvcC1zZWFyY2gwMiI+CjxhIGNs YXNzPSJsaW5rLTA2YyIgaHJlZj0iaHR0cDovL3d3dy50aW1lc29ubGluZS5jby51 ay90b2wvc3BvcnQvZm9vdGJhbGwvIj4KPHN0cm9uZz4gZm9vdGJhbGwgPC9zdHJv bmc+CjwvYT48L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xhc3M9InNlYXJjaC1zZXBl cmF0b3IiPnw8L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xhc3M9InRvcC1zZWFyY2gw MSI+CjxhIGNsYXNzPSJsaW5rLTA2YyIgaHJlZj0iaHR0cDovL3d3dy50aW1lc29u bGluZS5jby51ay90b2wvc3BvcnQvZm9ybXVsYV8xLyI+CjxzdHJvbmc+IGZvcm11 bGEgMSA8L3N0cm9uZz4KPC9hPjwvc3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0i c2VhcmNoLXNlcGVyYXRvciI+fDwvc3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0i dG9wLXNlYXJjaDAxIj4KPGEgY2xhc3M9ImxpbmstMDZjIiBocmVmPSJodHRwOi8v d3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9zeXN0ZW0vdG9waWNSb290L01pY2hh ZWxfSmFja3Nvbi8iPgo8c3Ryb25nPiBNaWNoYWVsIEphY2tzb248L3N0cm9uZz4K PC9hPjwvc3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0ic2VhcmNoLXNlcGVyYXRv ciI+fDwvc3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0idG9wLXNlYXJjaDAyIj4K PGEgY2xhc3M9ImxpbmstMDZjIiBocmVmPSJodHRwOi8vYnVzaW5lc3MudGltZXNv bmxpbmUuY28udWsvdG9sL2J1c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMvbmVlZF90 b19rbm93LyI+CjxzdHJvbmc+IG5lZWQgdG8ga25vdyA8L3N0cm9uZz4KPC9hPjwv c3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0ic2VhcmNoLXNlcGVyYXRvciI+fDwv c3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0idG9wLXNlYXJjaDAyIj4KPGEgY2xh c3M9ImxpbmstMDZjIiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVr L3RvbC9jb21tZW50L29iaXR1YXJpZXMvIj4KPHN0cm9uZz4gb2JpdHVhcmllczwv c3Ryb25nPgo8L2E+PC9zcGFuPiYjeDAwMjA7CjxzcGFuIGNsYXNzPSJzZWFyY2gt c2VwZXJhdG9yIj58PC9zcGFuPiYjeDAwMjA7CjxzcGFuIGNsYXNzPSJ0b3Atc2Vh cmNoMDIiPgo8YSBjbGFzcz0ibGluay0wNmMiIGhyZWY9Imh0dHA6Ly93d3cudGlt ZXNvbmxpbmUuY28udWsvdG9sL2xpZmVfYW5kX3N0eWxlL2Zvb2RfYW5kX2RyaW5r L3JlY2lwZXMvIj4KPHN0cm9uZz4gcmVjaXBlcyA8L3N0cm9uZz4KPC9hPjwvc3Bh bj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0ic2VhcmNoLXNlcGVyYXRvciI+fDwvc3Bh bj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0idG9wLXNlYXJjaDAyIj4KPGEgY2xhc3M9 ImxpbmstMDZjIiBocmVmPSJodHRwOi8vYnVzaW5lc3MudGltZXNvbmxpbmUuY28u dWsvdG9sL2J1c2luZXNzL2NvbW1lcmNpYWwvY2FsY3VsYXRvci8iPgo8c3Ryb25n PiByZWR1bmRhbmN5IGNhbGN1bGF0b3IgPC9zdHJvbmc+CjwvYT48L3NwYW4+JiN4 MDAyMDsKPHNwYW4gY2xhc3M9InNlYXJjaC1zZXBlcmF0b3IiPnw8L3NwYW4+JiN4 MDAyMDsKPHNwYW4gY2xhc3M9InRvcC1zZWFyY2gwMSI+CjxhIGNsYXNzPSJsaW5r LTA2YyIgaHJlZj0iaHR0cDovL2J1c2luZXNzLnRpbWVzb25saW5lLmNvLnVrL3Rv bC9idXNpbmVzcy9zcGVjaWFscy9yaWNoX2xpc3QvIj4KPHN0cm9uZz4gcmljaCBs aXN0PC9zdHJvbmc+CjwvYT48L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xhc3M9InNl YXJjaC1zZXBlcmF0b3IiPnw8L3NwYW4+JiN4MDAyMDsKPHNwYW4gY2xhc3M9InRv cC1zZWFyY2gwMyI+CjxhIGNsYXNzPSJsaW5rLTA2YyIgaHJlZj0iaHR0cDovL3d3 dy50aW1lc29ubGluZS5jby51ay90b2wvbW9uZXkvc2F2aW5ncy8iPgo8c3Ryb25n PiBzYXZpbmdzIDwvc3Ryb25nPgo8L2E+PC9zcGFuPiYjeDAwMjA7CjxzcGFuIGNs YXNzPSJzZWFyY2gtc2VwZXJhdG9yIj58PC9zcGFuPiYjeDAwMjA7CjxzcGFuIGNs YXNzPSJ0b3Atc2VhcmNoMDEiPgo8YSBjbGFzcz0ibGluay0wNmMiIGhyZWY9Imh0 dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsvdG9sL25ld3MvdWsvc2NpZW5jZS8i Pgo8c3Ryb25nPiBzY2llbmNlPC9zdHJvbmc+CjwvYT48L3NwYW4+JiN4MDAyMDsK PHNwYW4gY2xhc3M9InNlYXJjaC1zZXBlcmF0b3IiPnw8L3NwYW4+JiN4MDAyMDsK PHNwYW4gY2xhc3M9InRvcC1zZWFyY2gwMiI+CjxhIGNsYXNzPSJsaW5rLTA2YyIg aHJlZj0iaHR0cDovL2VudGVydGFpbm1lbnQudGltZXNvbmxpbmUuY28udWsvdG9s L2FydHNfYW5kX2VudGVydGFpbm1lbnQvZ2FtZXNfYW5kX3B1enpsZXMvc3Vkb2t1 LyI+CjxzdHJvbmc+IHN1ZG9rdSA8L3N0cm9uZz4KPC9hPjwvc3Bhbj4mI3gwMDIw Owo8c3BhbiBjbGFzcz0ic2VhcmNoLXNlcGVyYXRvciI+fDwvc3Bhbj4mI3gwMDIw Owo8c3BhbiBjbGFzcz0idG9wLXNlYXJjaDAxIj4KPGEgY2xhc3M9ImxpbmstMDZj IiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9zeXN0ZW0v dG9waWNSb290L1N3aW5lX2ZsdS8iPgo8c3Ryb25nPiBzd2luZSBmbHU8L3N0cm9u Zz4KPC9hPjwvc3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0ic2VhcmNoLXNlcGVy YXRvciI+fDwvc3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0idG9wLXNlYXJjaDAx Ij4KPGEgY2xhc3M9ImxpbmstMDZjIiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25s aW5lLmNvLnVrL3RvbC90b29sc19hbmRfc2VydmljZXMvdHdpdHRlci8iPgo8c3Ry b25nPiB0d2l0dGVyIDwvc3Ryb25nPgo8L2E+PC9zcGFuPiYjeDAwMjA7CjxzcGFu IGNsYXNzPSJzZWFyY2gtc2VwZXJhdG9yIj58PC9zcGFuPiYjeDAwMjA7CjxzcGFu IGNsYXNzPSJ0b3Atc2VhcmNoMDMiPgo8YSBjbGFzcz0ibGluay0wNmMiIGhyZWY9 Imh0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsvdG9sL2xpZmVfYW5kX3N0eWxl L2VkdWNhdGlvbi9nb29kX3VuaXZlcnNpdHlfZ3VpZGUvIj4KPHN0cm9uZz4gdW5p dmVyc2l0eSBndWlkZTwvc3Ryb25nPgo8L2E+PC9zcGFuPiYjeDAwMjA7CjxzcGFu IGNsYXNzPSJzZWFyY2gtc2VwZXJhdG9yIj58PC9zcGFuPiYjeDAwMjA7CjxzcGFu IGNsYXNzPSJ0b3Atc2VhcmNoMDEiPgo8YSBjbGFzcz0ibGluay0wNmMiIGhyZWY9 Imh0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsvdG9sL2xpZmVfYW5kX3N0eWxl L2Zvb2RfYW5kX2RyaW5rL3dpbmUvIj4KPHN0cm9uZz4gd2luZSA8L3N0cm9uZz4K PC9hPjwvc3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0ic2VhcmNoLXNlcGVyYXRv ciI+fDwvc3Bhbj4mI3gwMDIwOwo8c3BhbiBjbGFzcz0idG9wLXNlYXJjaDAzIj4K PGEgY2xhc3M9ImxpbmstMDZjIiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5l LmNvLnVrL3RvbC90cmF2ZWwvbmV3cy9hcnRpY2xlNTMxNDI3Ni5lY2UiPgo8c3Ry b25nPnRyYXZlbCBkZWFscyA8L3N0cm9uZz4KPC9hPjwvc3Bhbj4mI3gwMDIwOwo8 L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJncmV5 LWxpbmUiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLWxlZnQtcmlnaHQtOSBw YWRkaW5nLWJvdHRvbS03IHBhZGRpbmctdG9wLTIiPgo8cCBjbGFzcz0ieC1zbWFs bCI+U2hvcnRjdXRzIHRvIGhlbHAgeW91IGZpbmQgc2VjdGlvbnMgYW5kIGFydGlj bGVzPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pgo8L2Rpdj4K PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPCEtLSBCRUdJTjogQ2xhc3NpZmllZCBNdWx0 aXBsZSBRdWljayBTZWFyY2gtLT4KPGRpdiBjbGFzcz0iZmxvYXQtbGVmdCBwYWRk aW5nLWJvdHRvbS0xMCI+CjwhLS1DbGFzc2lmaWVkIE11bHRpcGxlIE5hcnJvdyBQ dWJsaXNoZWQgRGF0ZSA6IERlYyAyNywgMjAwNiAxMjoxNiBQTSAtLT4KPHNjcmlw dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3RvbC9qcy9mb3JtLXZhbGlk YXRpb24uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw dCIgc3JjPSIvdG9sL2pzL200Mi1jbGFzc2lmaWVkcy1xdWlja3NlYXJjaC5qcyI+ PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQp2 YXIgYUNsYXNzaWZpZWRzTG9uZ0NhdGVnb3JpZXMgPSBuZXcgQXJyYXkoJ0NhcnMn LCdKb2JzJywnUHJvcGVydHknLCdUcmF2ZWwnKTsgLy8gQXJyYXkgb2YgY2F0ZWdv cnkgbGFiZWxzCnZhciBzU2VsZWN0ZWRDbGFzc2lmaWVkc0xvbmcgPSAnY2xhc3Np ZmllZHMtbG9uZy0xJzsgLy8gSW5pdGlhbCBzZWN0aW9uIHRvIGRpc3BsYXkuIE9w dGlvbnMgYXJlIDEgPSBjYXJzIHwgMiA9IGpvYnMgfCAzID0gcHJvcGVydHkgfCA0 ID0gdHJhdmVsIG4uYi4gQ2FycyBtdXN0IHJlbWFpbiBubyAxIGFzIGl0IGlzIHJl ZmVycmVkIHRvIGluIHRoZSBmU2hvd0hpZGVDbGFzc2lmaWVkc0xvbmdDYXRlZ29y eSgpIGZ1bmN0aW9uIGluIHRoZSBtNDItY2xhc3NpZmllZHMtcXVpY2tzZWFyY2gu anMgZmlsZS4KdmFyIHNTZWxlY3RlZENsYXNzaWZpZWRzTG9uZ1RhYiA9ICcnOwov Ly0tPgo8L3NjcmlwdD4KPCEtLSBCRUdJTjogTW9kdWxlIC0gTTQyIENsYXNzaWZp ZWRzIFF1aWNrIFNlYXJjaCAoYikgLS0+CjxkaXYgY2xhc3M9ImNsYXNzaWZpZWRz LWxvbmctY29udGFpbmVyIGZsb2F0LWxlZnQgcGFkZGluZy10b3AtMyI+CjxkaXYg Y2xhc3M9ImNsYXNzaWZpZWRzLWxvbmctc2lkZXMgcGFkZGluZy10b3AtNSBwYWRk aW5nLWxlZnQtcmlnaHQtOSI+CjxoMyBjbGFzcz0ic2VjdGlvbi1oZWFkaW5nIj48 YSBocmVmPSIvdG9sL2NsYXNzaWZpZWRzLyIgY2xhc3M9ImxpbmstMzMzIHBhZGRp bmctcmlnaHQtMTAiPkNsYXNzaWZpZWRzPC9hPjxzcGFuIGNsYXNzPSJkb3VibGUt Y2hldnJvbi1yaWdodCI+Jm5ic3A7PC9zcGFuPjwvaDM+CjwvZGl2Pgo8ZGl2IGNs YXNzPSJjbGFzc2lmaWVkcy1sb25nLXNpZGVzIj4KPGRpdiBjbGFzcz0icGFkZGlu Zy10b3AtNSI+PC9kaXY+CjxkaXYgaWQ9ImNsYXNzaWZpZWRzLWxvbmctbGlua3Mi Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KLy8gV3JpdGVz IG91dCBjbGFzc2lmaWVkcyBsb25nIGNhdGVnb3J5IGxpbmtzCmZHZW5lcmF0ZUNs YXNzaWZpZWRzTG9uZ0xpbmtzKCk7Ci8vLS0+Cjwvc2NyaXB0Pgo8bm9zY3JpcHQ+ Cjx1bCBjbGFzcz0ic21hbGwiPgo8bGkgY2xhc3M9InBhZGRpbmctbGVmdC1yaWdo dC05IHdoaXRlLXRhYiI+PGEgY2xhc3M9InRvb2xzLTA2YyIgaHJlZj0iI3N0YXJ0 b2ZjYXJzIj5DYXJzPC9hPjxiciAvPjwvbGk+CjxsaSBjbGFzcz0icGFkZGluZy1s ZWZ0LXJpZ2h0LTkgd2hpdGUtdGFiIj48YSBjbGFzcz0idG9vbHMtMDZjIiBocmVm PSIjc3RhcnRvZmpvYnMiPkpvYnM8L2E+PGJyIC8+PC9saT4KPGxpIGNsYXNzPSJw YWRkaW5nLWxlZnQtcmlnaHQtOSB3aGl0ZS10YWIiPjxhIGNsYXNzPSJ0b29scy0w NmMiIGhyZWY9IiNzdGFydG9mcHJvcGVydHkiPlByb3BlcnR5PC9hPjxiciAvPjwv bGk+CjxsaSBjbGFzcz0icGFkZGluZy1sZWZ0LXJpZ2h0LTkgd2hpdGUtdGFiIj48 YSBjbGFzcz0idG9vbHMtMDZjIiBocmVmPSIjc3RhcnRvZnRyYXZlbCI+VHJhdmVs PC9hPjxiciAvPjwvbGk+CjwvdWw+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTUi PjwvZGl2Pgo8L25vc2NyaXB0Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXItc2lt cGxlIj48L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy10b3AtNSI+PC9kaXY+Cjwv ZGl2Pgo8ZGl2IGNsYXNzPSJjbGFzc2lmaWVkcy1sb25nLXNpZGVzIHBhZGRpbmct bGVmdC1yaWdodC05Ij4KPCEtLSBTdGFydCBvZiBDYXJzIHNlY3Rpb24gLS0+Cjxk aXYgaWQ9ImNsYXNzaWZpZWRzLWxvbmctMS1jb250ZW50Ij4KPHNjcmlwdCB0eXBl PSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCi8vIEhpZGUgY2FycyBzZWN0aW9uCmZT aG93SGlkZUVsZW1lbnQoJ2NsYXNzaWZpZWRzLWxvbmctMS1jb250ZW50Jyk7Ci8v LS0+Cjwvc2NyaXB0Pgo8YSBuYW1lPSJzdGFydG9mY2FycyI+PC9hPgo8aDMgY2xh c3M9InNlY3Rpb24taGVhZGluZyI+Q2FyczwvaDM+CjxkaXYgY2xhc3M9InBhZGRp bmctdG9wLTUiPjwvZGl2Pgo8YSBocmVmPSIjZW5kb2ZjYXJzIiBjbGFzcz0iYWNj ZXNzLXRleHQiPlNraXAgQ2FycyBvZiB0aGUgV2VlazwvYT48YnIgY2xhc3M9ImFj Y2Vzcy10ZXh0IiAvPjxiciBjbGFzcz0iYWNjZXNzLXRleHQiIC8+CjxkaXY+Cjxh IGhyZWY9J2h0dHA6Ly9jYXJsZWFzaW5nbWFkZXNpbXBsZS5jb20vP3RpbWVzb25s aW5lJyBjbGFzcz0icmVnLWJvbGQiIHJlbD0ibm9mb2xsb3ciPkNhciBsZWFzaW5n IDwvYT4KPHAgY2xhc3M9InNtYWxsIj4KPGJyIC8+ClRoZSBjbGV2ZXIgd2F5IHRv IGxlYXNlIGEgbmV3IGNhciBpcyB3aXRoIENhciBsZWFzaW5nIG1hZGUgc2ltcGxl JnRyYWRlOyA8YnIgLz4KPGJyIC8+IAo8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJj bGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rpdj4K PGRpdiBjbGFzcz0icHVmZi10b3AgY2xlYXIiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJw YWRkaW5nLXRvcC0xMCI+PC9kaXY+CjxkaXY+CjxhIGhyZWY9JyBodHRwOi8vY2Fy bGVhc2luZ21hZGVzaW1wbGUuY29tL3BlcnNvbmFsLWNhci1sZWFzaW5nLzM5NTM1 L2F1ZGktYTUtY291cGUvNDM1OTQtMzYxME4tODA0Lz90aW1lc29ubGluZScgY2xh c3M9InJlZy1ib2xkIiByZWw9Im5vZm9sbG93Ij5OZXcgQXVkaSBBNSBDb3VwZSBm cm9tICZwb3VuZDszOTkuOTkgaW5jIFZBVCA8L2E+CjxwIGNsYXNzPSJzbWFsbCI+ CjIwMDk8YnIgLz4KcGVyIG1vbnRoIG9uIDM2LW1vbnRoPGJyIC8+ClBlcnNvbmFs IENvbnRyYWN0IEhpcmUgKFBDSCk8YnIgLz4KPC9wPgo8L2Rpdj4KPGRpdiBjbGFz cz0iY2xlYXIiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC0xMCI+PC9k aXY+CjxkaXYgY2xhc3M9InB1ZmYtdG9wIGNsZWFyIj48L2Rpdj4KPGRpdiBjbGFz cz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8ZGl2Pgo8YSBocmVmPSdodHRwOi8v Y2FybG9jYXRvci50aW1lc29ubGluZS5jby51ay9jbGFzc2lmaWVkX21vdG9yc19w b3B1cC5hc3B4P3B1PU9pUUlwM0tWTWRoOGxwalc3Z2JLV0EmYW1wO2N1PTY1NSZh bXA7a3c9dG9wMTBhbmRyZWNlbnQmYW1wO2NhPSZhbXA7c3Q9JmFtcDthdD0yJmFt cDthZz02NTUqODgqLTUxNTI4JmFtcDtwZz0xJmFtcDtzaT1DQVIqMSoqMCZhbXA7 Y3I9MiZhbXA7c249MSZhbXA7a3dlPXRvcDEwYW5kcmVjZW50JmFtcDtyZWY9aHR0 cCUzYSUyZiUyZmNhcmxvY2F0b3IudGltZXNvbmxpbmUuY28udWslMmZhdWRpLnho dG1sJmFtcDt1aWQ9ZXN5dm9ibjFqZXR4b3U0NXQwc2swZGZ2JmFtcDtjYz0yLjEn IGNsYXNzPSJyZWctYm9sZCIgcmVsPSJub2ZvbGxvdyI+Qk1XIDYgU2VyaWVzIENv bnZlcnRpYmxlIDY1MGkgU3BvcnQgMmRyIEF1dG8gPC9hPgo8cCBjbGFzcz0ic21h bGwiPgoyMDA4PGJyIC8+CjQyODUwPGJyIC8+CjxiciAvPgo8L3A+CjwvZGl2Pgo8 ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9w LTEwIj48L2Rpdj4KPGRpdiBjbGFzcz0icHVmZi10b3AgY2xlYXIiPjwvZGl2Pgo8 ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC0xMCI+PC9kaXY+CjxkaXY+CjxhIGhyZWY9 J2h0dHA6Ly93d3cuaW5zdXJlYW5kZ28uY29tL0Nhci1JbnN1cmFuY2UuaHRtbCcg Y2xhc3M9InJlZy1ib2xkIiByZWw9Im5vZm9sbG93Ij5HcmVhdCBjYXIgaW5zdXJh bmNlIGRlYWxzIG9ubGluZSA8L2E+CjxwIGNsYXNzPSJzbWFsbCI+CkNhciBJbnN1 cmFuY2U8YnIgLz4KPGJyIC8+CjxiciAvPgo8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNz PSJjbGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rp dj4KPGRpdiBjbGFzcz0icHVmZi10b3AgY2xlYXIiPjwvZGl2Pgo8ZGl2IGNsYXNz PSJwYWRkaW5nLXRvcC0xMCI+PC9kaXY+Cjx1bCBjbGFzcz0iY2hldnJvbi1saXN0 IGNoZXZyb24tYmx1ZSI+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25s aW5lLmNvLnVrL2NhcmxvY2F0b3IiIGNsYXNzPSJsaW5rLTY2NiI+U2VhcmNoIGZv ciBtb3JlIGNhcnMgYW5kIGJpa2VzPC9hPjwvbGk+CjwvdWw+CjxkaXYgY2xhc3M9 InBhZGRpbmctdG9wLTEwIj48L2Rpdj4KPGEgbmFtZT0iZW5kb2ZjYXJzIj48L2E+ CjwvZGl2Pgo8IS0tIEVuZCBvZiBDYXJzIHNlY3Rpb24gLS0+CjwhLS0gU3RhcnQg b2YgSm9icyBzZWN0aW9uIC0tPgo8ZGl2IGlkPSJjbGFzc2lmaWVkcy1sb25nLTIt Y29udGVudCI+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQov LyBIaWRlIGpvYnMgc2VjdGlvbgpmU2hvd0hpZGVFbGVtZW50KCdjbGFzc2lmaWVk cy1sb25nLTItY29udGVudCcpOwovLy0tPgo8L3NjcmlwdD4KPGEgbmFtZT0ic3Rh cnRvZmpvYnMiPjwvYT4KPGgzIGNsYXNzPSJzZWN0aW9uLWhlYWRpbmciPkpvYnM8 L2gzPiAKPGRpdiBjbGFzcz0icGFkZGluZy10b3AtNSI+PC9kaXY+CjxhIGhyZWY9 IiNlbmRvZmpvYnMiIGNsYXNzPSJhY2Nlc3MtdGV4dCI+U2tpcCBKb2JzIG9mIHRo ZSBXZWVrPC9hPjxiciBjbGFzcz0iYWNjZXNzLXRleHQiIC8+CjxkaXY+CjxhIGNs YXNzPSJyZWctYm9sZCIgaHJlZj0naHR0cDovL2pvYnMudGltZXNvbmxpbmUuY28u dWsvam9iLzM3MjIwNy9tYW5hZ2luZy1kaXJlY3RvcicgcmVsPSJub2ZvbGxvdyI+ TWFuYWdpbmcgRGlyZWN0b3I8L2E+CjxwIGNsYXNzPSJzbWFsbCI+CkNvbXBldGl0 aXZlIFNhbGFyeTxiciAvPgpSb2Rkb25zPGJyIC8+Ck1hcmNoLCBDYW1icmlkZ2Vz aGlyZTxiciAvPgo8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+ CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rpdj4KPGRpdiBjbGFzcz0i cHVmZi10b3AgY2xlYXIiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC0x MCI+PC9kaXY+CjxkaXY+CjxhIGNsYXNzPSJyZWctYm9sZCIgaHJlZj0naHR0cDov L2pvYnMudGltZXNvbmxpbmUuY28udWsvam9iLzM2OTAxMC9vcGVyYXRpb25hbC1p bnRlbGxpZ2VuY2Utb2ZmaWNlcnMnIHJlbD0ibm9mb2xsb3ciPk9wZXJhdGlvbmFs IEludGVsbGlnZW5jZSBPZmZpY2VyczwvYT4KPHAgY2xhc3M9InNtYWxsIj4KJnBv dW5kOzM1LDQyNSBiYXNlZCBvbiBza2lsbHM8YnIgLz4KTUk1PGJyIC8+CkNlbnRy YWwgTG9uZG9uPGJyIC8+CjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFyIj48 L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8ZGl2IGNs YXNzPSJwdWZmLXRvcCBjbGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmct dG9wLTEwIj48L2Rpdj4KPGRpdj4KPGEgY2xhc3M9InJlZy1ib2xkIiBocmVmPSdo dHRwOi8vam9icy50aW1lc29ubGluZS5jby51ay9qb2IvMzcyMzA4L2F1ZGl0LXF1 YWxpdHktY29udHJvbC1hbmQtdGVjaG5pY2FsLXBhcnRuZXInIHJlbD0ibm9mb2xs b3ciPkF1ZGl0LCBRdWFsaXR5IENvbnRyb2wgYW5kIFRlY2huaWNhbCBQYXJ0bmVy PC9hPgo8cCBjbGFzcz0ic21hbGwiPgokMjAwLDAwMCB0YXggZnJlZSAtIG5lZy48 YnIgLz4KTWF0dXJlIEFjY291bnRhbnRzIEx0ZDxiciAvPgpCYWhyYWluPGJyIC8+ CjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4KPGRpdiBjbGFz cz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwdWZmLXRvcCBj bGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rpdj4K PGRpdj4KPGEgY2xhc3M9InJlZy1ib2xkIiBocmVmPSdodHRwOi8vam9icy50aW1l c29ubGluZS5jby51ay9qb2IvMzcyMjExL2NoYWlyJyByZWw9Im5vZm9sbG93Ij5D aGFpcjwvYT4KPHAgY2xhc3M9InNtYWxsIj4KSG91cmx5PGJyIC8+CkFjdGlvbkFp ZCBVSzxiciAvPgpMb25kb248YnIgLz4KPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0i Y2xlYXIiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC0xMCI+PC9kaXY+ CjxkaXYgY2xhc3M9InB1ZmYtdG9wIGNsZWFyIj48L2Rpdj4KPGRpdiBjbGFzcz0i cGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8dWwgY2xhc3M9ImNoZXZyb24tbGlzdCBj aGV2cm9uLWJsdWUiPgo8bGk+PGEgaHJlZj0iaHR0cDovL2pvYnMudGltZXNvbmxp bmUuY28udWsvSm9icy9Kb2JTZWFyY2guYXNweCIgdGFyZ2V0PSJibGFuayIgY2xh c3M9ImxpbmstNjY2Ij5TZWFyY2ggbW9yZSBKb2JzPC9hPjwvbGk+CjwvdWw+Cjxk aXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rpdj4KPGEgbmFtZT0iZW5kb2Zq b2JzIj48L2E+CjwvZGl2Pgo8IS0tIEVuZCBvZiBKb2JzIHNlY3Rpb24gLS0+Cjwh LS0gU3RhcnQgb2YgUHJvcGVydHkgc2VjdGlvbiAtLT4KPGRpdiBpZD0iY2xhc3Np ZmllZHMtbG9uZy0zLWNvbnRlbnQiPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj cmlwdCI+CjwhLS0KLy8gSGlkZSBwcm9wZXJ0eSBzZWN0aW9uCmZTaG93SGlkZUVs ZW1lbnQoJ2NsYXNzaWZpZWRzLWxvbmctMy1jb250ZW50Jyk7Ci8vLS0+Cjwvc2Ny aXB0Pgo8YSBuYW1lPSJzdGFydG9mcHJvcGVydHkiPjwvYT4KPGgzIGNsYXNzPSJz ZWN0aW9uLWhlYWRpbmciPlByb3BlcnRpZXM8L2gzPgo8ZGl2IGNsYXNzPSJwYWRk aW5nLXRvcC01Ij48L2Rpdj4KPGRpdj4KPGEgaHJlZj0naHR0cDovL3d3dy5rZmgu Y28udWsvcmVzaWRlbnRpYWwtcHJvcGVydHknIGNsYXNzPSJyZWctYm9sZCIgcmVs PSJub2ZvbGxvdyI+TG9va2luZyB0byBCdXk/IExvb2tpbmcgdG8gU2VsbD8gS2lu bGVpZ2ggRm9sa2FyZCAmYW1wOyBIYXl3YXJkPC9hPgo8cCBjbGFzcz0ic21hbGwi PgpDb21wbGV0ZWx5IExvbmRvbjxiciAvPgo8YnIgLz4KPC9wPgo8L2Rpdj4KPGRp diBjbGFzcz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwdWZm LXRvcCBjbGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48 L2Rpdj4KPGRpdj4KPGEgaHJlZj0naHR0cDovL3d3dy50aGVydXNobW9yZXJpdmVy c2lkZS5jb20vJyBjbGFzcz0icmVnLWJvbGQiIHJlbD0ibm9mb2xsb3ciPlJ1c2ht b3JlIENvbmRvJ3MgPC9hPgo8cCBjbGFzcz0ic21hbGwiPgpMdXh1cnkgQ29uZG8n cyBpbiBNYW5oYXR0YW4gd2l0aCBOWUMgdmlld3M8YnIgLz4KPGJyIC8+CjwvcD4K PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rpdj4KPGRpdiBj bGFzcz0icHVmZi10b3AgY2xlYXIiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWRkaW5n LXRvcC0xMCI+PC9kaXY+CjxkaXY+CjxhIGhyZWY9J2h0dHA6Ly93d3cuZGlhZGVt aG9tZXMuY29tLycgY2xhc3M9InJlZy1ib2xkIiByZWw9Im5vZm9sbG93Ij5EaWFk ZW0gSG9tZXMgPC9hPgo8cCBjbGFzcz0ic21hbGwiPgpUaGUgYmVzdCBuZXcgaG9t ZXMgaW4gV2ltYmxlZG9uPzxiciAvPgo8YnIgLz4KPC9wPgo8L2Rpdj4KPGRpdiBj bGFzcz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwdWZmLXRv cCBjbGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rp dj4KPGRpdj4KPGEgaHJlZj0naHR0cDovL3Byb3BlcnR5LnRpbWVzb25saW5lLmNv LnVrL3RvbC9saWZlX2FuZF9zdHlsZS9wcm9wZXJ0eS8gJyBjbGFzcz0icmVnLWJv bGQiIHJlbD0ibm9mb2xsb3ciPlRpbWVzIE9ubGluZSBQcm9wZXJ0eSBTZWFyY2gg PC9hPgo8cCBjbGFzcz0ic21hbGwiPgpOYXRpb253aWRlPGJyIC8+CQo8YnIgLz4K PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8 ZGl2IGNsYXNzPSJwdWZmLXRvcCBjbGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBh ZGRpbmctdG9wLTEwIj48L2Rpdj4KPHVsIGNsYXNzPSJjaGV2cm9uLWxpc3QgY2hl dnJvbi1ibHVlIj4KPGxpPjxhIGhyZWY9Imh0dHA6Ly91ay5wcm9wZXJ0eWZpbmRl ci5jb20vMi9wZi9kYS90aW1lc29ubGluZS9ob21lLmRvIiB0YXJnZXQ9ImJsYW5r IiBjbGFzcz0ibGluay02NjYiPlNlYXJjaCBmb3IgbW9yZSBwcm9wZXJ0aWVzPC9h PjwvbGk+CjwvdWw+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rpdj4K PGEgbmFtZT0iZW5kb2Zwcm9wZXJ0eSI+PC9hPgo8L2Rpdj4KPCEtLSBFbmQgb2Yg UHJvcGVydHkgc2VjdGlvbiAtLT4KPCEtLSBTdGFydCBvZiBUcmF2ZWwgc2VjdGlv biAtLT4KPGRpdiBpZD0iY2xhc3NpZmllZHMtbG9uZy00LWNvbnRlbnQiPgo8c2Ny aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KLy8gSGlkZSB0cmF2ZWwg c2VjdGlvbgpmU2hvd0hpZGVFbGVtZW50KCdjbGFzc2lmaWVkcy1sb25nLTQtY29u dGVudCcpOwovLy0tPgo8L3NjcmlwdD4KPGEgbmFtZT0ic3RhcnRvZnRyYXZlbCI+ PC9hPgo8aDMgY2xhc3M9InNlY3Rpb24taGVhZGluZyI+SG9saWRheXM8L2gzPgo8 ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC01Ij48L2Rpdj4KPGEgaHJlZj0iI2VuZG9m dHJhdmVsIiBjbGFzcz0iYWNjZXNzLXRleHQiPlNraXAgVHJhdmVsIG9mIHRoZSBX ZWVrPC9hPjxiciBjbGFzcz0iYWNjZXNzLXRleHQiIC8+PGJyIGNsYXNzPSJhY2Nl c3MtdGV4dCIgLz4KPGRpdj4KPGEgaHJlZj0naHR0cDovL3d3dy52aXJnaW5ob2xp ZGF5c2NydWlzZXMuY28udWsvVGltZXNWQScgY2xhc3M9InJlZy1ib2xkIiByZWw9 Im5vZm9sbG93Ij5WaXJnaW4gQXRsYW50aWMgMjAwOSBDcnVpc2UgRGVhbHM8L2E+ CjxwIGNsYXNzPSJzbWFsbCI+CQpGYWJ1bG91cyBDcnVpc2UgQW5kIENydWlzZSAm YW1wOyBTdGF5IE9mZmVycyBJbmNsdWRpbmcgVmlyZ2luIEF0bGFudGljIEZsaWdo dHMgUHJpY2VzIFN0YXJ0IEZyb20gT25seSAmcG91bmQ7Njk5cHAhPGJyIC8+Cjxi ciAvPgo8YnIgLz4KPC9wPgo8L2Rpdj4gCjxkaXYgY2xhc3M9InBhZGRpbmctdG9w LTEwIj48L2Rpdj4KPGRpdiBjbGFzcz0icHVmZi10b3AgY2xlYXIiPjwvZGl2Pgo8 ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC0xMCI+PC9kaXY+CjxkaXY+CjxhIGhyZWY9 J2h0dHA6Ly93d3cudmlyZ2luaG9saWRheXNjcnVpc2VzLmNvLnVrL1RpbWVzSG9t ZScgY2xhc3M9InJlZy1ib2xkIiByZWw9Im5vZm9sbG93Ij5BbWF6aW5nIENydWlz ZSBEZWFscyBXaXRoIFZpcmdpbiBIb2xpZGF5cyBDcnVpc2VzPC9hPgo8cCBjbGFz cz0ic21hbGwiPgkKTGFzdCBNaW51dGUgQ3J1aXNlIEFuZCBDcnVpc2UgJmFtcDsg U3RheSBPZmZlcnMuIE1lZCBGcm9tICZwb3VuZDs0OTlwcCwgQ2FyaWJiZWFuIEZy b20gJnBvdW5kOzY5OXBwITxiciAvPiAKPGJyIC8+CjxiciAvPgo8L3A+CjwvZGl2 Pgo8ZGl2IGNsYXNzPSJwYWRkaW5nLXRvcC0xMCI+PC9kaXY+CjxkaXYgY2xhc3M9 InB1ZmYtdG9wIGNsZWFyIj48L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy10b3At MTAiPjwvZGl2Pgo8ZGl2Pgo8YSBocmVmPSdodHRwOi8vd3d3LnJlZ2VudC1ob2xp ZGF5cy5jby51ay9vZmZlcnMvb2ZmZXIyLmh0bWwnIGNsYXNzPSJyZWctYm9sZCIg cmVsPSJub2ZvbGxvdyI+NSAqIE1vc2NvdyBicmVhayBmcm9tICZwb3VuZDs0OTkg cHAgaW5jIGZsaWdodHM8L2E+CjxwIGNsYXNzPSJzbWFsbCI+CQo1IHN0YXIgcXVh bGl0eSBhdCBhIDMgc3RhciBwcmljZS4gPGJyIC8+CjxiciAvPgo8YnIgLz4KPC9w Pgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8ZGl2 IGNsYXNzPSJwdWZmLXRvcCBjbGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRp bmctdG9wLTEwIj48L2Rpdj4KPGRpdj4KPGEgaHJlZj0naHR0cDovL2FkLmRvdWJs ZWNsaWNrLm5ldC9jbGs7MjE1MzM3ODcyOzM3NDc3NzM2O3YJJyBjbGFzcz0icmVn LWJvbGQiIHJlbD0ibm9mb2xsb3ciPkNhbmFkYSBmb3IgTGVzcy4uIGZseSBmcm9t ICZwb3VuZDsxMjkgb25lIHdheSBpbmMgdGF4ZXM8L2E+CjxwIGNsYXNzPSJzbWFs bCI+CQo4IGZhYnVsb3VzIENhbmFkaWFuIGNpdGllcyAuLi55b3Ugd29uJnJzcXVv O3QgZmluZCBjaGVhcGVyPGJyIC8+CjxiciAvPgo8YnIgLz4KPC9wPgo8L2Rpdj4K PGRpdiBjbGFzcz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJw dWZmLXRvcCBjbGVhciI+PC9kaXY+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEw Ij48L2Rpdj4KPHVsIGNsYXNzPSJjaGV2cm9uLWxpc3QgY2hldnJvbi1ibHVlIj4K PGxpPjxhIGhyZWY9Imh0dHA6Ly90cmF2ZWxkaXJlY3RvcnkudGltZXNvbmxpbmUu Y28udWsvIiB0YXJnZXQ9ImJsYW5rIiBjbGFzcz0ibGluay02NjYiPlNlYXJjaCBm b3IgbW9yZSBob2xpZGF5czwvYT48L2xpPgo8L3VsPgo8ZGl2IGNsYXNzPSJwYWRk aW5nLXRvcC0xMCI+PC9kaXY+CjxhIG5hbWU9ImVuZG9mdHJhdmVsIj48L2E+Cjwv ZGl2Pgo8IS0tIEVuZCBvZiBUcmF2ZWwgc2VjdGlvbiAtLT4KPHNjcmlwdCB0eXBl PSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCi8vIERpc3BsYXlzIGluaXRpYWwgY2F0 ZWdvcnkKdmFyIG5SYW5kb209TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQpOwpz U2VsZWN0ZWRDbGFzc2lmaWVkc0xvbmc9J2NsYXNzaWZpZWRzLWxvbmctJysoblJh bmRvbSsxKTsgLy9TZWxlY3RpbmcgcmFuZG9tIGNsYXNzaWZpZWRzCmZTaG93SGlk ZUNsYXNzaWZpZWRzTG9uZ0NhdGVnb3J5KHNTZWxlY3RlZENsYXNzaWZpZWRzTG9u Zyk7Ci8vLS0+Cjwvc2NyaXB0Pgo8IS0tIHN0YXJ0IG9mIGNsYXNzaWZpZWRzIGxv bmcgZm9vdGVyIC0tPgo8ZGl2IGNsYXNzPSJwdWZmLXRvcCBjbGVhciI+PC9kaXY+ CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rpdj4KPGEgaHJlZj0iaHR0 cHM6Ly93d3cuYWR2ZXJ0aXNpbmcubmV3c2ludC5jby51ay93ZWJBZHZlcnRpc2lu Zy9wcml2YXRlL2FkTWFuYWdlciIgY2xhc3M9InJlZy1ib2xkIj5QbGFjZSB5b3Vy IGFkdmVydCBub3c8L2E+CjxkaXYgY2xhc3M9InBhZGRpbmctdG9wLTEwIj48L2Rp dj4KPGRpdiBpZD0iZHluYW1pYy1hZC1yZWZlcmVuY2UiIGNsYXNzPSIgIj4KPGRp diBjbGFzcz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8Zm9ybSBpZD0iYWQtc2Vh cmNoLXRhbGwiIG9uc3VibWl0PSJyZXR1cm4gZlZhbGlkYXRlTm9uZVJlcXVpcmVk KHRoaXMuaWQpOyIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii90b2wvY2xhc3NpZmll ZHMvY2Fycy8iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1cmwiIHZhbHVl PSJodHRwOi8vZHJpdmluZy50aW1lc29ubGluZS5jby51ay9fbmlwZC9jbGFzcy9t b3RvclNyY2hSZXMucGhwIiAvPgo8cCBjbGFzcz0ic21hbGwiPjxsYWJlbCBmb3I9 ImVudGVycHJpc2UiPlNlYXJjaCBBZCBSZWZlcmVuY2U6PC9sYWJlbD48L3A+Cjxk aXYgY2xhc3M9ImZsb2F0LWxlZnQgcGFkZGluZy10b3AtNSBwYWRkaW5nLXJpZ2h0 LTciPgo8aW5wdXQgaWQ9ImVudGVycHJpc2UiIG5hbWU9ImVudGVycHJpc2UiIHR5 cGU9InRleHQiIHNpemU9IjgiIGNsYXNzPSJ3aWR0aC1pbnB1dC03OSIgdmFsdWU9 IiIgYWx0PSJlbnRlcnByaXNlIiAvPgo8L2Rpdj4KPGRpdiBjbGFzcz0iZmxvYXQt cmlnaHQgcGFkZGluZy10b3AtNiI+CjxpbnB1dCB0eXBlPSJpbWFnZSIgYWx0PSJT ZWFyY2giIHNyYz0iL3RvbC9pbWcvZ2xvYmFsL2J1dHRvbi9idXR0b24tc2VhcmNo LmdpZiIgLz4KPC9kaXY+CjwvZm9ybT4KPC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFy Ij48L2Rpdj4KPGRpdiBjbGFzcz0icGFkZGluZy10b3AtMTAiPjwvZGl2Pgo8L2Rp dj4KPGRpdiBjbGFzcz0iY2xlYXItc2ltcGxlIj48L2Rpdj4KPGRpdiBjbGFzcz0i Y2xhc3NpZmllZHMtbG9uZy1ib3R0b20iPjxkaXYgY2xhc3M9InBhZGRpbmctdG9w LTUiPjwvZGl2PjwvZGl2Pgo8L2Rpdj4KPCEtLSBFTkQ6IE1vZHVsZSAtIE00MiBD bGFzc2lmaWVkcyBRdWljayBTZWFyY2ggKGIpIC0tPgo8c2NyaXB0IHR5cGU9InRl eHQvamF2YXNjcmlwdCI+CjwhLS0KaWYocHViU3RhdHVzID09ICdjbGFzc2lmaWVk cy1sb25nLTInKXsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R5bmFtaWMtYWQt cmVmZXJlbmNlJykuY2xhc3NOYW1lID0gJ2FjY2Vzcy10ZXh0JzsKfQplbHNlewpk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHluYW1pYy1hZC1yZWZlcmVuY2UnKS5j bGFzc05hbWU9Jyc7Cn0KLy8tLT4KPC9zY3JpcHQ+CjwhLS0gRU5EOiBDbGFzc2lm aWVkIE11bHRpcGxlIFF1aWNrIFNlYXJjaCAtLT4gCjwhLS0gY2FsbGlnIHRoZSBh ZHZlcnRpc2VtZW50IC0tPgo8ZGl2IGNsYXNzPSJhZHZlcnQtbG9uZy1jb250YWlu ZXIiPgo8IS0tIEJFR0lOOiBNb2R1bGUgLSBBZHZlcnQ6VG9wIC0tPgo8U0NSSVBU IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KLy9SZXRyaWV2ZSB5YW9vIENv b2tpZSBWYWx1ZQp2YXIgeWFob28gPSAibm8iOwp2YXIgSXNZYWhvbz0ibm8iOwpp ZiAoR2V0UXVlcnlTdHJpbmcoInlhaG9vIik9PSJ5ZXMiIHx8IGdldF9jb29raWUo J1lIJykgPT0gInllcyIpIElzWWFob289InllcyI7CmlmIChJc1lhaG9vID09ICJ5 ZXMiIHx8IGdldF9jb29raWUoJ1lIJykgPT0gJ29wZW4nKSB7CnNldF9jb29raWUg KCJZSCIsICJ5ZXMiLCAiIiwgIiIgKTsKeWFob28gPSAieWVzIjsKfSBlbHNlIHsK c2V0X2Nvb2tpZSAoIllIIiwgIm5vIiwgIiIsICIiICk7CnlhaG9vID0gIm5vIjsK fQp3aW5kb3cub251bmxvYWQgPSBzZXRZYWhvb0Nvb2tpZTsKLy8tLT4KPC9TQ1JJ UFQ+CjwhLS0gRm9yIFRyYXZlbCBTZWFyY2ggLS0+CjxzY3JpcHQgdHlwZT0idGV4 dC9qYXZhc2NyaXB0Ij4KPCEtLQp2YXIgUlN0YWcgPSAiIjsKdHJ5ewpSU3RhZyA9 IHNlZ1FTOwp9CmNhdGNoKGUpewpSU3RhZyA9ICIiOwp9CmRvY3VtZW50LndyaXRl KCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWQu dWsuZG91YmxlY2xpY2submV0L2Fkai9idXNpbmVzcy50aW1lc29ubGluZS5jby51 ay9pbmR1c3RyeXNlY3RvcnMvdHJhbnNwb3J0O2NhdD07cG9zPWJvdHRvbTtzej0x NjB4NjAwOycrIFJTdGFnICsndGlsZT0zOycrY2F0ZWdvcnlWYWx1ZXMrJ3lhaG9v PScreWFob28rJztvcmQ9JytyYW5kbnVtKyc/Ij48XC9zY3JpcHQ+Jyk7CQovLy0t Pgo8L3NjcmlwdD4KPG5vc2NyaXB0Pgo8YSBocmVmPSJodHRwOi8vYWQudWsuZG91 YmxlY2xpY2submV0L2Fkai9idXNpbmVzcy50aW1lc29ubGluZS5jby51ay9pbmR1 c3RyeXNlY3RvcnMvdHJhbnNwb3J0O3Bvcz1ib3R0b207c3o9MTYweDYwMDt0aWxl PTM7eWFob289Tm87b3JkPTEyNDc5NDM0MjU2OTU/Ij48L2E+Cjwvbm9zY3JpcHQ+ CjwhLS1TRUNUSU9OOnBhcmFtZXRlciBwYXJhbWV0ZXI9ImRhcnQuc2VydmVyIiAv LS0+CjwhLS0gRU5EOiBNb2R1bGUgLSBBZHZlcnQ6VG9wIC0tPgo8L2Rpdj4KPC9k aXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhci1zaW1wbGUiPjwvZGl2PgkKPC9k aXY+CjwhLS0gQkVHSU46IFJlZ2lvbiBmb3IgZm9vdGVyIC0tPgo8IS0tIEJFR0lO OiBSZWdpb24gZm9yIGZvb3RlciAtLT4KPCEtLSBCRUdJTjogTTc2IEdsb2JhbCBO YXZpZ2F0aW9uIC0gRm9vdGVyIC0tPgo8ZGl2IGlkPSJyZWdpb24tZm9vdGVyIj4K PGRpdiBjbGFzcz0iZmxvYXQtbGVmdCBwYWRkaW5nLWJvdHRvbS01IHBhZGRpbmct dG9wLTEwIj4KPGRpdiBjbGFzcz0iZmxvYXQtbGVmdCI+CjxwIGNsYXNzPSJzbWFs bCB3aGVyZS1hbS1pIj5XaGVyZSBhbSBJPzwvcD4KPGEgY2xhc3M9ImNydW1idHJh aWwiIGhyZWY9Ii90b2wvbmV3cy8iPkhvbWU8L2E+CjwhLS0gQkVHSU46QnJlYWRj cnVtYiBzcGVjaWZpYyB0byBhcmNoaXZlLS0+Cjx1bCBjbGFzcz0iZGlzcGxheS1p bmxpbmUiPgo8bGkgY2xhc3M9ImRpc3BsYXktaW5saW5lIj4KPGEgY2xhc3M9ImNy dW1idHJhaWwiIGhyZWY9Jy90b2wvYnVzaW5lc3MvJyAvPkJ1c2luZXNzPC9hPgo8 YSBjbGFzcz0iY3J1bWJ0cmFpbCIgaHJlZj0nL3RvbC9idXNpbmVzcy9pbmR1c3Ry eV9zZWN0b3JzLycgLz5JbmR1c3RyeSBTZWN0b3JzPC9hPgo8YSBjbGFzcz0iY3J1 bWJ0cmFpbC1zZWxlY3RlZCIgaHJlZj0nL3RvbC9idXNpbmVzcy9pbmR1c3RyeV9z ZWN0b3JzL3RyYW5zcG9ydC8nIC8+VHJhbnNwb3J0PC9hPgo8L2xpPgo8L3VsPgo8 L2Rpdj4KPC9kaXY+Cjx1bCBjbGFzcz0iZmxvYXQtcmlnaHQgbWFyZ2luLXRvcC1w b2ludDktZW0iPgo8bGkgY2xhc3M9ImNvbnRhY3QtdXMgZmxvYXQtbGVmdCI+PGEg Y2xhc3M9InRvb2xzIiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVr L3RvbC90b29sc19hbmRfc2VydmljZXMvc2VydmljZXMvY29udGFjdF91cy8iID5D b250YWN0IHVzPC9hPjwvbGk+CjxsaSBjbGFzcz0iZmxvYXQtbGVmdCBwYWRkaW5n LXRvcC0xIj48YSBjbGFzcz0idG9vbHMgaWNvbi1iYWNrLXRvLXRvcCIgaHJlZj0i I3RvcCI+QmFjayB0byB0b3A8L2E+PC9saT4KPC91bD4KPHNjcmlwdCB0eXBlPSJ0 ZXh0L2phdmFzY3JpcHQiPgo8IS0tCmZ1bmN0aW9uIHZhbGlkYXRlRm9vdGVyKCkK ewp2YXIgcXVlcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9vdGVySWQi KS5xdWVyeS52YWx1ZTsKaWYocXVlcnkgPT0gIiIpCnsKYWxlcnQoIlBsZWFzZSBF bnRlciBLZXl3b3JkIFRvIFNlYXJjaC4iKTsKcmV0dXJuIGZhbHNlOwp9CmVsc2UK ewpyZXR1cm4gdHJ1ZTsKfQp9CmZ1bmN0aW9uIE9uRm9vdGVyQnV0dG9uQ2xpY2so KQp7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb290ZXJJZCIpLnN1Ym1pdCgp Owp9Ci8vLS0+Cjwvc2NyaXB0Pgo8ZGl2IGNsYXNzPSJmb290ZXItbmF2LWNvbnRh aW5lciI+CjxkaXYgY2xhc3M9ImNydW1idHJhaWwtYW5kLXNlYXJjaCI+CjxkaXYg Y2xhc3M9J2Zsb2F0LWxlZnQgcGFkZGluZy10b3AtMTAgcGFkZGluZy1sZWZ0LTIn Pjx1bCBjbGFzcz0nZGlzcGxheS1pbmxpbmUnPjxsaSBjbGFzcz0nZGlzcGxheS1p bmxpbmUnPjxhIGhyZWY9Jy90b2wvbmV3cy8nIGNsYXNzPSd0b29scy0wNmMgZ2xv YmFsLWxpbmtzLXNlcGVyYXRvcic+TmV3czwvYT48L2xpPjxsaSBjbGFzcz0nZGlz cGxheS1pbmxpbmUnPjxhIGhyZWY9Jy90b2wvY29tbWVudC8nIGNsYXNzPSd0b29s cy0wNmMgZ2xvYmFsLWxpbmtzLXNlcGVyYXRvcic+Q29tbWVudDwvYT48L2xpPjxs aSBjbGFzcz0nZGlzcGxheS1pbmxpbmUnPjxhIGhyZWY9Jy90b2wvYnVzaW5lc3Mv JyBjbGFzcz0ndG9vbHMtMDZjIGdsb2JhbC1saW5rcy1zZXBlcmF0b3InPkJ1c2lu ZXNzPC9hPjwvbGk+PGxpIGNsYXNzPSdkaXNwbGF5LWlubGluZSc+PGEgaHJlZj0n L3RvbC9tb25leS8nIGNsYXNzPSd0b29scy0wNmMgZ2xvYmFsLWxpbmtzLXNlcGVy YXRvcic+TW9uZXk8L2E+PC9saT48bGkgY2xhc3M9J2Rpc3BsYXktaW5saW5lJz48 YSBocmVmPScvdG9sL3Nwb3J0LycgY2xhc3M9J3Rvb2xzLTA2YyBnbG9iYWwtbGlu a3Mtc2VwZXJhdG9yJz5TcG9ydDwvYT48L2xpPjxsaSBjbGFzcz0nZGlzcGxheS1p bmxpbmUnPjxhIGhyZWY9Jy90b2wvbGlmZV9hbmRfc3R5bGUvJyBjbGFzcz0ndG9v bHMtMDZjIGdsb2JhbC1saW5rcy1zZXBlcmF0b3InPkxpZmUgJiBTdHlsZTwvYT48 L2xpPjxsaSBjbGFzcz0nZGlzcGxheS1pbmxpbmUnPjxhIGhyZWY9Jy90b2wvdHJh dmVsLycgY2xhc3M9J3Rvb2xzLTA2YyBnbG9iYWwtbGlua3Mtc2VwZXJhdG9yJz5U cmF2ZWw8L2E+PC9saT48bGkgY2xhc3M9J2Rpc3BsYXktaW5saW5lJz48YSBocmVm PScvdG9sL2RyaXZpbmcvJyBjbGFzcz0ndG9vbHMtMDZjIGdsb2JhbC1saW5rcy1z ZXBlcmF0b3InPkRyaXZpbmc8L2E+PC9saT48bGkgY2xhc3M9J2Rpc3BsYXktaW5s aW5lJz48YSBocmVmPScvdG9sL2FydHNfYW5kX2VudGVydGFpbm1lbnQvJyBjbGFz cz0ndG9vbHMtMDZjIGdsb2JhbC1saW5rcy1zZXBlcmF0b3InPkFydHMgJiBFbnRz PC9hPjwvbGk+PGxpIGNsYXNzPSdkaXNwbGF5LWlubGluZSc+PGEgaHJlZj0nL3Rv bC9hcmNoaXZlLycgY2xhc3M9J3Rvb2xzLTA2YyBnbG9iYWwtbGlua3Mtc2VwZXJh dG9yLWxhc3QnPkFyY2hpdmU8L2E+PC9saT48L3VsPjwvZGl2Pgo8c2NyaXB0IHR5 cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvdG9sL2pzL2hlYWRlci1zZWFyY2gu anMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cjwh LS0KdmFyIGFBY3Rpb25VcmxzQm90dG9tU2VhcmNoPW5ldyBBcnJheSgpOyAvLyBU aGlzIGFycmF5IHdpbGwgaG9sZCB0aGUgdmFsdWVzIGZvcm0gYWN0aW9ucwovLy0t Pgo8L3NjcmlwdD4JCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEt LQphQWN0aW9uVXJsc0JvdHRvbVNlYXJjaFswXT17YWN0aW9uOicvdG9sL3NpdGVz ZWFyY2guZG8nLHNlYXJjaFRleHROYW1lOidxdWVyeScscGFyYW1ldGVyczp7dHVy bk9mZkdvb2dsZUFkczoiZmFsc2UiLCBzdWJtaXRTdGF0dXM6InNlYXJjaEZvcm1T dWJtaXR0ZWQiLCBtb2RlOiJzaW1wbGUiLHNlY3Rpb25JZDoiODIxIn19OwkKYUFj dGlvblVybHNCb3R0b21TZWFyY2hbMV09e2FjdGlvbjonL3RvbC92aWV3U2VhcmNo UmVzdWx0cy5hcmMnLCBzZWFyY2hUZXh0TmFtZToncXVlcnlLZXl3b3JkcycscGFy YW1ldGVyczp7fX07CQphQWN0aW9uVXJsc0JvdHRvbVNlYXJjaFsyXT17YWN0aW9u OicvdG9sL2dvb2dsZVNlYXJjaC5kbycsIHNlYXJjaFRleHROYW1lOidxdWVyeUtl eXdvcmRzJyxwYXJhbWV0ZXJzOntzZWFyY2htb2RlOiJhZHNhbmRyZXN1bHRzIixw YWdlTnVtOiIxIixyZXN1bHRzUGVyUGFnZToiMTAifX07CQovLy0tPgo8L3Njcmlw dD4KPGZvcm0gaWQ9InNlYXJjaEZvb3RlcklkIiBuYW1lPSJzZWFyY2hGb290ZXJJ ZCIgYWN0aW9uPSIiIG1ldGhvZD0iZ2V0IiBvbnN1Ym1pdD0icmV0dXJuIGZWYWxp ZGF0ZURhdGFGb290ZXIoKTsiPgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDdw eDsiIGNsYXNzPSJmbG9hdC1yaWdodCI+CjxpbnB1dCB0eXBlPSJpbWFnZSIgc3Jj PSIvdG9sL2ltZy9nbG9iYWwvYnV0dG9uL2J1dHRvbi1zZWFyY2guZ2lmIiBjbGFz cz0iZ2xvYmFsLXNlYXJjaC1nbyIgYWx0PSJTZWFyY2giIC8+CQo8L2Rpdj4JCjxk aXYgY2xhc3M9ImZsb2F0LXJpZ2h0Ij4KPGRpdiBjbGFzcz0iZmxvYXQtbGVmdCBw YWRkaW5nLXRvcC0xOSI+PC9kaXY+CQo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0i cXVlcnkiIGlkPSJib3R0b20tc2VhcmNoLXF1ZXJ5IiBtYXhsZW5ndGg9IjEwMCIg c2l6ZT0iMTAiIGNsYXNzPSJnbG9iYWwtc2VhcmNoLXRleHQtd2l0aC1kcm9wZG93 biIgYWx0PSJxdWVyeSIgLz4KPHNlbGVjdCBpZD0ic2VhcmNoT3B0aW9uRm9vdGVy IiBjbGFzcz0iZ2xvYmFsLXNlYXJjaC1vcHRpb24iPgo8b3B0aW9uIHZhbHVlPSIw Ij5UaW1lcyBPbmxpbmU8L29wdGlvbj4JCjxvcHRpb24gdmFsdWU9IjEiPlRpbWVz IEFyY2hpdmU8L29wdGlvbj4JCjxvcHRpb24gdmFsdWU9IjIiPkdvb2dsZTwvb3B0 aW9uPgkKPC9zZWxlY3Q+CjwvZGl2Pgo8ZGl2IGlkPSJzZWFyY2hGb290ZXJJZC1h ZGRpdGlvbmFsLXBhcmFtZXRlcnMiIGNsYXNzPSJhY2Nlc3MtdGV4dCI+PC9kaXY+ CQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KdmFyIHNDdXJy ZW50V2luZG93TG9jYXRpb249ZG9jdW1lbnQubG9jYXRpb24rIiI7CmZvcihpPTA7 IGk8YUFjdGlvblVybHNUb3BTZWFyY2gubGVuZ3RoOyBpKyspIHsKaWYoc0N1cnJl bnRXaW5kb3dMb2NhdGlvbi5tYXRjaChhQWN0aW9uVXJsc1RvcFNlYXJjaFtpXS5h Y3Rpb24pICE9IG51bGwgKSB7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWFy Y2hPcHRpb25Gb290ZXIiKS52YWx1ZT1pOwp9CQp9Ci8vLS0+Cjwvc2NyaXB0Pgo8 L2Zvcm0+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2xlYXIgcGFkZGluZy1i b3R0b20tMTUiPjwvZGl2Pgo8IS0tIEJFR0lOOiBNODAgLSBDdXN0b20gSFRNTCBQ dWJsaXNoZWQgRGF0ZSA6IEp1biAyMywgMjAwOSA0OjQzIFBNIC0tPgo8IS0tIEJF R0lOOiBNODAgLSBDdXN0b20gSFRNTCAtLT4KPCEtLSBCRUdJTjogTTgwIC0gQ3Vz dG9tIEhUTUwgLS0+CjxkaXYgY2xhc3M9IndpZHRoLTEwMC1wZXJjZW50IHBhZGRp bmctYm90dG9tLTEwIj4gCjxkaXYgY2xhc3M9ImJnLWZmZiI+CQo8cCBjbGFzcz0i c21hbGwiPjxwIGNsYXNzPSJ4LXNtYWxsIGNvbG9yLTY2NiI+PGEgaHJlZj0iaHR0 cDovL3d3dy50aW1lc29ubGluZS5jby51ay90b2wvdG9vbHNfYW5kX3NlcnZpY2Vz L3NlcnZpY2VzL2FkdmVydGlzaW5nLyIgY2xhc3M9ImNvbG9yLTA2YyI+Q29udGFj dCBvdXIgYWR2ZXJ0aXNpbmcgdGVhbTwvYT4gZm9yIGFkdmVydGlzaW5nIGFuZCBz cG9uc29yc2hpcCBpbiBUaW1lcyBPbmxpbmUsIFRoZSBUaW1lcyBhbmQgVGhlIFN1 bmRheSBUaW1lcywgb3IgcGxhY2UgeW91ciA8YSBocmVmPSJodHRwczovL2RpeS5u ZXdzaW50LmNvLnVrIiBjbGFzcz0iY29sb3ItMDZjIiByZWw9Im5vZm9sbG93Ij5h ZHZlcnRpc2VtZW50PC9hPi48L3A+PHAgY2xhc3M9Ingtc21hbGwgY29sb3ItNjY2 Ij4mbmJzcDs8L3A+CjxwIGNsYXNzPSJ4LXNtYWxsIGNvbG9yLTY2NiI+PGI+VGlt ZXMgT25saW5lIFNlcnZpY2VzOjwvYj4gPGEgaHJlZj0iaHR0cDovL3d3dy5lbmNv dW50ZXJzLnRpbWVzb25saW5lLmNvLnVrL3MvIiBjbGFzcz0iY29sb3ItMDZjIj5E YXRpbmc8L2E+IHwgPGEgaHJlZj0iaHR0cDovL2pvYnMudGltZXNvbmxpbmUuY28u dWsvIiBjbGFzcz0iY29sb3ItMDZjIj5Kb2JzPC9hPiB8IDxhIGhyZWY9Imh0dHA6 Ly90aW1lc29ubGluZS5nbG9icml4LmNvbSIgY2xhc3M9ImNvbG9yLTA2YyIgcmVs PSJub2ZvbGxvdyI+UHJvcGVydHkgU2VhcmNoPC9hPiB8IDxhIGhyZWY9Imh0dHA6 Ly9jYXJsb2NhdG9yLnRpbWVzb25saW5lLmNvLnVrLyIgY2xhc3M9ImNvbG9yLTA2 YyIgcmVsPSJub2ZvbGxvdyI+VXNlZCBDYXJzPC9hPiB8IDxhIGhyZWY9Imh0dHA6 Ly90cmF2ZWxkaXJlY3RvcnkudGltZXNvbmxpbmUuY28udWsvIiBjbGFzcz0iY29s b3ItMDZjIiByZWw9Im5vZm9sbG93Ij5Ib2xpZGF5czwvYT4gfCA8YSBocmVmPSJo dHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9saWZlX2FuZF9zdHlsZS9j b3VydF9hbmRfc29jaWFsL2Fubm91bmNlbWVudHMvIiBjbGFzcz0iY29sb3ItMDZj Ij5CaXJ0aHMsIE1hcnJpYWdlcywgRGVhdGhzPC9hPiB8IDxhIGhyZWY9Imh0dHBz Oi8vc3Vic2NyaXB0aW9ucy50aW1lc29ubGluZS5jby51ay8iIGNsYXNzPSJjb2xv ci0wNmMiPlN1YnNjcmlwdGlvbnM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3RpbWVz b25saW5lLm5ld3NwYXBlcmRpcmVjdC5jb20vIiBjbGFzcz0iY29sb3ItMDZjIj5F LXBhcGVyPC9hPiA8L3A+CjxwIGNsYXNzPSJ4LXNtYWxsIGNvbG9yLTY2NiI+PGI+ TmV3cyBJbnRlcm5hdGlvbmFsIGFzc29jaWF0ZWQgd2Vic2l0ZXM6PC9iPiA8YSBo cmVmPSJodHRwOi8vd3d3Lmdsb2JyaXguY29tIiBjbGFzcz0iY29sb3ItMDZjIj5H bG9icml4IFByb3BlcnR5IFNlYXJjaDwvYT4gfCA8YSBocmVmPSJodHRwOi8vd3d3 LnByb3BlcnR5ZmluZGVyLmNvbS9jZ2ktYmluL3JzZWFyY2g/Y3U9dG5sJmFtcDth PXNmJmFtcDt0PXJlcyZhbXA7c25mPXJicyIgY2xhc3M9ImNvbG9yLTA2YyIgcmVs PSJub2ZvbGxvdyI+UHJvcGVydHkgRmluZGVyPC9hPiB8IDxhIGhyZWY9Imh0dHA6 Ly93d3cubWlsa3JvdW5kLmNvbSIgY2xhc3M9ImNvbG9yLTA2YyI+TWlsa3JvdW5k PC9hPjwvcD4KPHAgY2xhc3M9Ingtc21hbGwgY29sb3ItNjY2Ij4mbmJzcDs8L3A+ PHAgY2xhc3M9Ingtc21hbGwgY29sb3ItNjY2Ij5Db3B5cmlnaHQgMjAwOSBUaW1l cyBOZXdzcGFwZXJzIEx0ZC48L3A+CjxwIGNsYXNzPSJ4LXNtYWxsIGNvbG9yLTY2 NiI+VGhpcyBzZXJ2aWNlIGlzIHByb3ZpZGVkIG9uIFRpbWVzIE5ld3NwYXBlcnMn IDxhIGhyZWY9Ii90b2wvdG9vbHNfYW5kX3NlcnZpY2VzL3NlcnZpY2VzL3Rlcm1z X2FuZF9jb25kaXRpb25zLyIgY2xhc3M9ImNvbG9yLTA2YyIgcmVsPSJub2ZvbGxv dyI+c3RhbmRhcmQgVGVybXMgYW5kIENvbmRpdGlvbnM8L2E+LiBQbGVhc2UgcmVh ZCBvdXIgPGEgaHJlZj0iaHR0cDovL3d3dy5uaWRwLmNvbSIgY2xhc3M9ImNvbG9y LTA2YyIgcmVsPSJub2ZvbGxvdyI+UHJpdmFjeSBQb2xpY3k8L2E+LlRvIGlucXVp cmUgYWJvdXQgYSBsaWNlbmNlIHRvIHJlcHJvZHVjZSBtYXRlcmlhbCBmcm9tIFRp bWVzIE9ubGluZSwgVGhlIFRpbWVzIG9yIFRoZSBTdW5kYXkgVGltZXMsIGNsaWNr IDxhIGNsYXNzPSJjb2xvci0wNmMiIGhyZWY9Ii90b2wvdG9vbHNfYW5kX3NlcnZp Y2VzL3NlcnZpY2VzL3N5bmRpY2F0aW9uLyIgcmVsPSJub2ZvbGxvdyI+IGhlcmU8 L2E+LlRoaXMgd2Vic2l0ZSBpcyBwdWJsaXNoZWQgYnkgYSBtZW1iZXIgb2YgdGhl IE5ld3MgSW50ZXJuYXRpb25hbCBHcm91cC4gTmV3cyBJbnRlcm5hdGlvbmFsIExp bWl0ZWQsIDEgVmlyZ2luaWEgU3QsIExvbmRvbiBFOTggMVhZLCBpcyB0aGUgaG9s ZGluZyBjb21wYW55IGZvciB0aGUgTmV3cyBJbnRlcm5hdGlvbmFsIGdyb3VwIGFu ZCBpcyByZWdpc3RlcmVkIGluIEVuZ2xhbmQgTm8gODE3MDEuIFZBVCBudW1iZXIg R0IgMjQzIDgwNTQgNjkuPC9wPgo8cCBjbGFzcz0ieC1zbWFsbCBjb2xvci02NjYi PiZuYnNwOzwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3RoZS1hY2FwLm9yZy9hY2Fw LWVuYWJsZWQucGhwIiBib3JkZXI9IjAiIHRhcmdldD0ibmV3Ij48aW1nIHNyYz0i aHR0cDovL3d3dy50aW1lc29ubGluZS5jby51ay9tdWx0aW1lZGlhL2FyY2hpdmUv MDAyNzYvYWNhcF9lbmFibGVkX3NtYWxsXzI3NjYzOWEuZ2lmIiBib3JkZXI9IjAi IC8+PC9hPjwvcD4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFwcGxpY2F0 aW9uL3Jzcyt4bWwiIHRpdGxlPSJUb3AgU3RvcmllcyBmcm9tIFRpbWVzT25saW5l IiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9mZWVkcy9y c3MvdG9wc3Rvcmllcy54bWwiIC8+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBl PSJhcHBsaWNhdGlvbi9yc3MreG1sIiB0aXRsZT0iVUsgTmV3cyBmcm9tIFRpbWVz T25saW5lIiBocmVmPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9m ZWVkcy9yc3MvdWtuZXdzLnhtbCIgLz4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5 cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIHRpdGxlPSJXb3JsZCBOZXdzIGZyb20g VGltZXNPbmxpbmUiIGhyZWY9Imh0dHA6Ly93d3cudGltZXNvbmxpbmUuY28udWsv dG9sL2ZlZWRzL3Jzcy93b3JsZG5ld3MueG1sIiAvPgo8bGluayByZWw9ImFsdGVy bmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgdGl0bGU9IkNvbW1lbnQg ZnJvbSBUaW1lc09ubGluZSIgaHJlZj0iaHR0cDovL3d3dy50aW1lc29ubGluZS5j by51ay90b2wvZmVlZHMvcnNzL2NvbW1lbnQueG1sIiAvPgo8bGluayByZWw9ImFs dGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgdGl0bGU9IkJ1c2lu ZXNzIE5ld3MgZnJvbSBUaW1lc09ubGluZSIgaHJlZj0iaHR0cDovL3d3dy50aW1l c29ubGluZS5jby51ay90b2wvZmVlZHMvcnNzL2J1c2luZXNzLnhtbCIgLz4KPGxp bmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIHRp dGxlPSJTcG9ydHMgTmV3cyBmcm9tIFRpbWVzT25saW5lIiBocmVmPSJodHRwOi8v d3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9mZWVkcy9yc3Mvc3BvcnQueG1sIiAv Pgo8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3ht bCIgdGl0bGU9IkN1cmlvdXMgU3RvcmllcyBmcm9tIFRpbWVzT25saW5lIiBocmVm PSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL3RvbC9mZWVkcy9yc3MvbW9z dF9jdXJpb3VzLnhtbCIgLz4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFw cGxpY2F0aW9uL3Jzcyt4bWwiIHRpdGxlPSJUZWNobm9sb2d5IE5ld3MgZnJvbSBU aW1lc09ubGluZSIgaHJlZj0iaHR0cDovL3d3dy50aW1lc29ubGluZS5jby51ay90 b2wvZmVlZHMvcnNzL3RlY2gueG1sIiAvPgo8bGluayByZWw9InNlYXJjaCIgdHlw ZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0i aHR0cDovL3d3dy50aW1lc29ubGluZS5jby51ay94bWwvb3BlbnNlYXJjaC54bWwi IHRpdGxlPSJUaW1lc09ubGluZSBhcnRpY2xlIHNlYXJjaCIgLz4KPGxpbmsgcmVs PSJhbHRlcm5hdGUiIG1lZGlhPSJoYW5kaGVsZCIgaHJlZj0iaHR0cDovL3RpbWVz bW9iaWxlLm1vYmkvIiAvPgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0 eXBlPSJ0ZXh0L0phdmFTY3JpcHQiIHNyYz0iaHR0cDovL2pzLmZvcnJlc3RlcnN1 cnZleXMuY29tL3NvY3JhdG9zXzEwOTQ2Ni5qcyI+PC9zY3JpcHQ+PC9wPgo8L2Rp dj4KPC9kaXY+CjwhLS0gRU5EOiBNODAgLSBDdXN0b20gSFRNTCAtLT4KPCEtLSBF TkQ6IE04MCAtIEN1c3RvbSBIVE1MIC0tPiAKPC9kaXY+CjwhLS0gRU5EOiBNNzYg R2xvYmFsIE5hdmlnYXRpb24gLSBGb290ZXIgLS0+CjwhLS0gRU5EOiBSZWdpb24g Zm9yIGZvb3RlciAtLT4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPCEtLSBFTkQ6IFJl Z2lvbiBmb3IgYWxsIGNvbnRlbnQgLS0+CjwhLS0gRXNjZW5pYyBBbmFseXNpcyBF bmdpbmUgY2xpZW50IHNjcmlwdCBzdGFydCAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0 L2phdmFzY3JpcHQiPgo8IS0tCnZhciByZWY9ZXNjYXBlKGRvY3VtZW50LnJlZmVy cmVyKTsKaWYgKHJlZi5sZW5ndGg+PTI1MikgcmVmPXJlZi5zdWJzdHJpbmcoMCwy NTIpKyIuLi4iOwp2YXIgaXNKUzEwID0gMTsKLy8tLT4KPC9zY3JpcHQ+CjxzY3Jp cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQp2YXIgaXNKUzEwPTA7CnZh ciBqc1VybCA9ICIvdG9sL2J1c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMvdHJhbnNw b3J0L2FydGljbGU2NTkwOTA3LmVjZSI7CnZhciBqc1R5cGUgPSAiYXJ0aWNsZSI7 CnZhciBqc09iaklkID0gIjY1OTA5MDciOwp2YXIganNUaXRsZSA9ICJBdCBsYXN0 LCBCcml0YWluIGlzIHJlYWR5IHRvIGJ1aWxkIGh5YnJpZCBjYXJzIjsKdmFyIGpz UHViSWQgPSAiMTciOwp2YXIganNDYXQgPSAiIjsKdmFyIGpzUnQgPSAiMSI7CnZh ciBqc0N0eElkID0gIjgyMSI7CmRvY3VtZW50LndyaXRlKCc8aW1nIHNyYz0iaHR0 cDovL3d3dy50aW1lc29ubGluZS5jby51ay9lYWUtbG9nZ2VyL0xvZ2dlcj9jbGll bnREVD0nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKSArICcmcnQ9JyArIGpzUnQr ICcmb2JqSWQ9JyArIGpzT2JqSWQgKyAnJnR5cGU9JyArIGpzVHlwZSArICcmY3R4 SWQ9JyArIGpzQ3R4SWQgKyAnJnB1YklkPScgKyBqc1B1YklkICsgJyZjYXQ9JyAr IGpzQ2F0ICsgCicmdGl0bGU9JyArIGpzVGl0bGUgKyAnJnVybD0nICsganNVcmwg KyAnIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPicpOwovLy0tPgo8L3NjcmlwdD4K PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCnZhciBqc1VybCA9 ICIvdG9sL2J1c2luZXNzL2luZHVzdHJ5X3NlY3RvcnMvdHJhbnNwb3J0L2FydGlj bGU2NTkwOTA3LmVjZSI7CnZhciBqc1R5cGUgPSAiYXJ0aWNsZSI7CnZhciBqc09i aklkID0gIjY1OTA5MDciOwp2YXIganNUaXRsZSA9ICJBdCBsYXN0LCBCcml0YWlu IGlzIHJlYWR5IHRvIGJ1aWxkIGh5YnJpZCBjYXJzIjsKdmFyIGpzUHViSWQgPSAi MTciOwp2YXIganNDYXQgPSAiIjsKdmFyIGpzUnQgPSAiMSI7CnZhciBqc0N0eElk ID0gIjgyMSI7CmlmKGlzSlMxMCl7CmRvY3VtZW50LndyaXRlKCc8aW1nIHNyYz0i aHR0cDovL3d3dy50aW1lc29ubGluZS5jby51ay9lYWUtbG9nZ2VyL0xvZ2dlcj9y dD0nICsganNSdCArICcmb2JqSWQ9JyArIGpzT2JqSWQgKyAnJnR5cGU9JyArIGpz VHlwZSArICcmY3R4SWQ9JyArIGpzQ3R4SWQgKyAnJnB1YklkPScgKyBqc1B1Yklk ICsgJyZjYXQ9JyArIGpzQ2F0ICsgJyZ0aXRsZT0nICsgCmpzVGl0bGUgKyAnJnVy bD0nICsganNVcmwgKyAnIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPicpOwp9Ci8v LS0+Cjwvc2NyaXB0Pgo8Tk9TQ1JJUFQ+CjwhLS0gZWFlTm9zY3JpcHRNYXJrIC0t PjxpbWcgc3JjPSJodHRwOi8vd3d3LnRpbWVzb25saW5lLmNvLnVrL2VhZS1sb2dn ZXIvTG9nZ2VyP3J0PTEmb2JqSWQ9NjU5MDkwNyZ1cmw9JTJGdG9sJTJGYnVzaW5l c3MlMkZpbmR1c3RyeV9zZWN0b3JzJTJGdHJhbnNwb3J0JTJGYXJ0aWNsZTY1OTA5 MDcuZWNlJnR5cGU9YXJ0aWNsZSZwdWJJZD0xNyZjdHhJZD04MjEmY2F0PSZ0aXRs ZT1BdCtsYXN0JTJDK0JyaXRhaW4raXMrcmVhZHkrdG8rYnVpbGQraHlicmlkK2Nh cnMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIiAvPgo8L05PU0NSSVBUPgo8 IS0tIEVzY2VuaWMgQW5hbHlzaXMgRW5naW5lIGNsaWVudCBzY3JpcHQgc3RhcnQg LS0+CjwhLS0gdGhlIGZvbGxvd2luZyBjYXNlIHdpbGwgZm9sbG93IG9ubHkgd2hl biBpbmRpdmlkdWFsIG1vZHVsZSBkaXNwbGF5IGlzIGFza2VkIGZvciAtLT4gCjwv ZGl2Pgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=sitelifeproxy.js Content-Type: application/javascript; charset=ISO-8859-1; name=sitelifeproxy.js Content-Location: http://business.timesonline.co.uk/tol/js/sitelifeproxy.js Content-Transfer-Encoding: Base64 ICAgIC8vbXVsdGkgc2l0ZSBlbmFibGVkIC0tIHNpZDogY29tbXVuaXR5c3RhZ2Uu c2UubmV3c2ludC5jby51ayAKICAgIGRvY3VtZW50LndyaXRlKCI8bGluayBocmVm PSciK3N0YXRpY1BhdGgrIi9jc3MvU2l0ZUxpZmVDc3MuY3NzJyByZWw9J3N0eWxl c2hlZXQnIHR5cGU9J3RleHQvY3NzJyAvPiIpOwogICAgZG9jdW1lbnQud3JpdGUo IjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9JyIrc3RhdGljUGF0 aCsiL2pzL1NpdGVMaWZlU2NyaXB0cy5qcyc+PC9zY3JpcHQ+Iik7CiAgICBkb2N1 bWVudC53cml0ZSgiPGxpbmsgaHJlZj0nIitzdGF0aWNQYXRoKyIvY3NzL3NpdGVs aWZlLmNzcycgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2NzcycgLz4iKTsK Ci8vLzxzdW1tYXJ5PmNvbnN0cnVjdG9yIHRvIGNyZWF0ZSBhIG5ldyBTaXRlTGlm ZVByb3h5PC9zdW1tYXJ5PgpmdW5jdGlvbiBTaXRlTGlmZVByb3h5KHVybCkgewog ICAgLy8gVXNlciBDb25maWd1cmFibGUgUHJvcGVydGllcyAtIHRoZXNlIGNhbiBi ZSBzZXQgYXQgYW55IHRpbWUKCiAgICAvLyB5b3VyIGFwaUtleSwgdGhpcyB2YWx1 ZSBtdXN0IGJlIHNldCEKICAgIHRoaXMuYXBpS2V5ID0gbnVsbDsKICAgIAogICAg dGhpcy5zaXRlTGlmZURvbWFpbk92ZXJyaWRlID0gbnVsbDsKICAgIHRoaXMuc2l0 ZUxpZmVTZXJ2ZXJCYXNlT3ZlcnJpZGUgPSBudWxsOwogICAgdGhpcy5jdXN0b21l ckNTU092ZXJyaWRlID0gbnVsbDsKICAgIHRoaXMuY3VzdG9tZXJGb3J1bVBhZ2VQ YXRoT3ZlcnJpZGUgPSBudWxsOwoKICAgIC8vIHNuaWZmIHRoZSBicm93c2VyIGZv ciBjdXN0b20gYmVoYXZpb3JzCiAgICB0aGlzLl9faXNFeHBsb3JlciA9IG5hdmln YXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtc2llJykgIT0g LTE7CiAgICB0aGlzLl9faXNTYWZhcmkgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRv TG93ZXJDYXNlKCkuaW5kZXhPZignc2FmYXJpJykgIT0gLTE7CiAgICB0aGlzLl9f aXNNYWMgPSBuYXZpZ2F0b3IucGxhdGZvcm0udG9Mb3dlckNhc2UoKS5pbmRleE9m KCdtYWMnKSAhPSAtMTsKICAgIHRoaXMuX19pc01hY0lFID0gdGhpcy5fX2lzTWFj ICYmIHRoaXMuX19pc0V4cGxvcmVyOwogICAgCiAgICAvLyBpZiBlbmFibGVkLCBz cGl0IG91dCBkZWJ1ZyBpbmZvcm1hdGlvbiB0aHJvdWdoIGFsZXJ0KCkKICAgIHRo aXMuZGVidWcgPSBmYWxzZTsKICAgIAogICAgLy8gdXNlZCB0byB0cmFjayB0aGUg aWQgb2YgdGhlIGhhbmRsZXIgZXhwZWN0aW5nIHRoZSByZXN1bHRzIGZyb20gdGhl IGltbWVkaWF0ZWx5IHByZWNlZWRpbmcgbWV0aG9kIGludm9jYXRpb24KICAgIC8v IHRoaXMgaXMgdXNlZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzCiAgICB0aGlz Lmxhc3RIYW5kbGVySWQgPSAiIjsKICAgIAogICAgLy8gTWV0aG9kcyBZb3UgY2Fu IE92ZXJpZGUKICAgIC8vCiAgICAvLyBPblN1Y2Nlc3MocmV0dXJuVmFsdWUpIC0g aXMgcGFzc2VkIHRoZSByZXR1cm4gdmFsdWUgYXQgdGhlIGVuZCBvZiBhIHN1Y2Nl c3NmdWwgY2FsbCwgZGVmYXVsdCBkb2VzIG5vdGhpbmcKICAgIC8vIE9uRXJyb3Io bXNnKSAtIGlzIHBhc3NlZCBhbiBlcnJvciBtZXNzYWdlIGlmIGEgcHJvYmxlbSBv Y2N1cnMKICAgIC8vIE9uRGVidWcobXNnKSAtIGlzIGNhbGxlZCB3aGVuIGRlYnVn Z2luZyBpcyBlbmFibGVkCiAgICAgCiAgICB0aGlzLl9fYmFzZVVybCA9IHVybDsK ICAgIHRoaXMuX19zZW5kSW52b2tlQ291bnQgPSAwOwogICAgCiAgICB0aGlzLl9f ZXZlbnRIYW5kbGVycyA9IG5ldyBPYmplY3QoKTsKfTsKClNpdGVMaWZlUHJveHku cHJvdG90eXBlLkFkZEV2ZW50SGFuZGxlciA9IGZ1bmN0aW9uIChldmVudF9uYW1l LCBjYWxsYmFjaykgewoJdmFyIGV2ZW50TGlzdCA9IHRoaXMuX19ldmVudEhhbmRs ZXJzW2V2ZW50X25hbWVdOwoJaWYgKCFldmVudExpc3QpewoJCWV2ZW50TGlzdCA9 IG5ldyBBcnJheSgpOwoJCXRoaXMuX19ldmVudEhhbmRsZXJzW2V2ZW50X25hbWVd ID0gZXZlbnRMaXN0OwoJfQoJZXZlbnRMaXN0LnB1c2goY2FsbGJhY2spOwp9OwoK U2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuRmlyZUV2ZW50ID0gZnVuY3Rpb24gKGV2 ZW50X25hbWUpIHsKICAgIHZhciBmdW5jOwogICAgaWYoaGFuZGxlcnMgPSB0aGlz Ll9fZXZlbnRIYW5kbGVyc1tldmVudF9uYW1lXSkgewogICAgICAgIHZhciBBID0g bmV3IEFycmF5KCk7IGZvciAodmFyIGkgPSAxOyBpIDwgIHRoaXMuRmlyZUV2ZW50 LmFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7IEFbaSAtIDFdID0gdGhpcy5GaXJlRXZl bnQuYXJndW1lbnRzW2ldO30KICAgICAgICBmb3IodmFyIHg9MDt4PGhhbmRsZXJz Lmxlbmd0aDt4KyspewoJCQlmdW5jID0gaGFuZGxlcnNbeF07CgkJCWlmIChmdW5j Ll9fQm91bmQpewoJCQkgICBpZiAoaGFuZGxlcnMubGVuZ3RoID09IDEpIHJldHVy biBmdW5jKCk7CgkJCSAgIGZ1bmMoKTsKCQkJfQoJCQlpZiAoaGFuZGxlcnMubGVu Z3RoID09IDEpIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIEEpOwoJCQlmdW5jLmFw cGx5KHRoaXMsIEEpOwogICAgfQp9Cn07CgpTaXRlTGlmZVByb3h5LnByb3RvdHlw ZS5TY3JpcHRJZCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fX3NjcmlwdElk ID0gIl9iYl9zY3JpcHRfIiArIHRoaXMuX19zZW5kSW52b2tlQ291bnQrKzsgfQoK Ly8gRGVmYXVsdCBlcnJvciBoYW5kbGVyIGZvciB0aGUgcHJveHkgb2JqZWN0LCBz aW1wbGUgYWxlcnQKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuT25FcnJvciA9IGZ1 bmN0aW9uKG1zZykgewogICBhbGVydCgiT25FcnJvcjogIiArIG1zZyk7Cn0KCi8v IERlZmF1bHQgZGVidWcgaGFuZGxlciBmb3IgdGhlIHByb3h5IG9iamVjdCwgc2lt cGxlIGFsZXJ0ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLk9uRGVidWcgPSBmdW5j dGlvbihtc2cpIHsKICAgIGlmICh0aGlzLmRlYnVnKQogICAgICAgIGFsZXJ0KCJE ZWJ1ZzogIiArIG1zZyk7Cn0KCi8vIGZldGNoIGEgbmFtZWQgcmVxdWVzdCBwYXJh bWV0ZXIgZnJvbSB0aGUgcGFnZSBVUkwKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUu R2V0UGFyYW1ldGVyID0gZnVuY3Rpb24ocGFyYW1ldGVyTmFtZSkgewogICAgdmFy IGtleSA9IHBhcmFtZXRlck5hbWUgKyAiPSI7CiAgICB2YXIgcGFyYW1ldGVycyA9 IGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkuc3BsaXQoIiYi KTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7IGkr KykKICAgIHsKICAgICAgICBpZiAocGFyYW1ldGVyc1tpXS5pbmRleE9mKGtleSkg PT0gMCkKICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNbaV0uc3Vic3RyaW5n KGtleS5sZW5ndGgpOwogICAgfQogICAgcmV0dXJuIG51bGw7Cn07CgovLyBicm93 c2VyIGluZGVwZW5kZW50IG1ldGhvZCB0byBnZXQgZWxlbWVudHMgYnkgSUQKU2l0 ZUxpZmVQcm94eS5wcm90b3R5cGUuR2V0RWxlbWVudCA9IGZ1bmN0aW9uKGlkKSB7 CiAgICB0aGlzLk9uRGVidWcoIkdldEVsZW1lbnQgIiArIGlkKTsKICAgIGlmIChk b2N1bWVudC5nZXRFbGVtZW50QnlJZCkKICAgICAgICByZXR1cm4gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAgaWYgKGRvY3VtZW50LmFsbCkKICAgICAg ICByZXR1cm4gZG9jdW1lbnQuYWxsW2lkXTsKICAgIHRoaXMuT25FcnJvcigiTm8g c3VwcG9ydCBmb3IgR2V0RWxlbWVudCgpIGluIHRoaXMgYnJvd3NlciIpOwogICAg cmV0dXJuIG51bGw7Cn0KCi8vIGJyb3dzZXIgaW5kZXBlbmRlbnQgbWV0aG9kIHRv IGdldCBlbGVtZW50cyBieSB0YWcgbmFtZQpTaXRlTGlmZVByb3h5LnByb3RvdHlw ZS5HZXRUYWdzID0gZnVuY3Rpb24odGFnTmFtZSkgewogICAgdGhpcy5PbkRlYnVn KCJHZXRUYWdzICIgKyB0YWdOYW1lKTsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVt ZW50c0J5VGFnTmFtZSkKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVu dHNCeVRhZ05hbWUodGFnTmFtZSk7CiAgICBpZiAoZG9jdW1lbnQuYWxsKQogICAg ICAgcmV0dXJuIGRvY3VtZW50LnRhZ3ModGFnTmFtZSk7CiAgICB0aGlzLk9uRXJy b3IoIk5vIHN1cHBvcnQgZm9yIEdldFRhZ3MoKSBpbiB0aGlzIGJyb3dzZXIiKTsK ICAgIHJldHVybiBudWxsOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Ucmlt ID0gZnVuY3Rpb24ocykgewoJcmV0dXJuIHMucmVwbGFjZSgvXlxzK3xccyskL2cs IiIpOwoKfTsKClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkVzY2FwZVZhbHVlID0g ZnVuY3Rpb24ocykgewogICAgaWYgKHMgPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAg ICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHMpOwp9OwoKU2l0ZUxpZmVQcm94 eS5wcm90b3R5cGUuX19BcnJheVZhbGlkYXRpb24gPSBmdW5jdGlvbihzKQp7CiAg ICBpZiAoKHR5cGVvZiBzID09ICd1bmRlZmluZWQnKSB8fCAocy5sZW5ndGggPCAx KSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4g dHJ1ZTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuX19DaGVja0Vycm9ySGFu ZGxlciA9IGZ1bmN0aW9uKG9uRXJyb3IpIHsKICAgIHRoaXMuT25EZWJ1ZygiX19D aGVja0Vycm9ySGFuZGxlciAiICsgb25FcnJvcik7CiAgICBpZiAoKHR5cGVvZiBv bkVycm9yID09ICd1bmRlZmluZWQnKSB8fCAoZXZhbCgid2luZG93LiIgKyBvbkVy cm9yKSA9PSBudWxsKSkKICAgIHsKICAgICAgcmV0dXJuICJnU2l0ZUxpZmUuT25F cnJvciI7CiAgICB9CiAgICByZXR1cm4gb25FcnJvcjsKfQpTaXRlTGlmZVByb3h5 LnByb3RvdHlwZS5TZXRDb29raWUgPSBmdW5jdGlvbiBTZXRDb29raWUoIG5hbWUs IHZhbHVlKSB7CiAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpOyB0b2RheS5zZXRU aW1lKCB0b2RheS5nZXRUaW1lKCkgKTsKICAgIAogICAgdmFyIGV4cGlyZXNfZGF0 ZSA9IG5ldyBEYXRlKCB0b2RheS5nZXRUaW1lKCkgKyAxMjYxNDQwMDAwMDAgKTsK ICAgIAogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICI9IiArZXNjYXBlKCB2 YWx1ZSApICsKICAgICI7ZXhwaXJlcz0iICsgZXhwaXJlc19kYXRlLnRvR01UU3Ry aW5nKCkgKyAKICAgICI7cGF0aD0vIiArICI7ZG9tYWluPW5ld3NpbnQuY28udWsi IDsKfQovLyB2YWxpZGF0ZSBhbmQgZmV0Y2ggYXJndW1lbnRzLCBpZiB0aGUgYXJn dW1lbnQgaXMgbWlzc2luZyBhbmQgb3B0aW9uYWwsIHdlIHJldHVybiBhbiBlbXB0 eSBzdHJpbmcgICAgICAgIApTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5fX0dldEFy Z3VtZW50ID0gZnVuY3Rpb24odmFyaWFibGVOYW1lLCB2YXJpYWJsZVZhbHVlLCBp c1JlcXVpcmVkLCBpc0FycmF5KSB7CiAgICB0aGlzLk9uRGVidWcoIl9fR2V0QXJn dW1lbnQgIiArIHZhcmlhYmxlTmFtZSArICIsIiArIHZhcmlhYmxlVmFsdWUgKyAi LCIgKyBpc1JlcXVpcmVkICsgIiwiICsgaXNBcnJheSk7CiAgICBpZiAodHlwZW9m IHZhcmlhYmxlVmFsdWUgPT0gInVuZGVmaW5lZCIgfHwgdmFyaWFibGVWYWx1ZSA9 PSBudWxsIHx8IHZhcmlhYmxlVmFsdWUgPT0gIiIpCiAgICB7CiAgICAgICAgaWYg KGlzUmVxdWlyZWQpCiAgICAgICAgewogICAgICAgICAgICB0aGlzLk9uRXJyb3Io Ik1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyICIgKyB2YXJpYWJsZU5hbWUpOwog ICAgICAgICAgICB0aGlzLl9faXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICBy ZXR1cm4gIiI7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0 dXJuICIiOwogICAgfQogICAgaWYgKGlzUmVxdWlyZWQgJiYgaXNBcnJheSkgCiAg ICB7CiAgICAgICAgaWYgKCF0aGlzLl9fQXJyYXlWYWxpZGF0aW9uKHZhcmlhYmxl VmFsdWUpKSAKICAgICAgICB7CiAgICAgICAgICAgIHRoaXMuT25FcnJvcigiSW52 YWxpZCBhcnJheSBwYXJhbWV0ZXIgIiArIHZhcmlhYmxlTmFtZSk7CiAgICAgICAg ICAgIHRoaXMuX19pc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIHJldHVybiAi IjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gIiYiICsgdmFyaWFibGVOYW1l ICsgIj0iICsgdGhpcy5Fc2NhcGVWYWx1ZSh2YXJpYWJsZVZhbHVlKTsKfTsKClNp dGVMaWZlUHJveHkucHJvdG90eXBlLl9fU3RyaXBBbmNob3JGcm9tVXJsID0gZnVu Y3Rpb24odXJsKSB7CiAgICB2YXIgYUlkeCA9IHVybC5pbmRleE9mKCIjIik7CiAg ICByZXR1cm4gYUlkeCA9PSAtMSA/IHVybCA6IHVybC5zdWJzdHJpbmcoMCwgYUlk eCk7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLl9fU2FmZUFwcGVuZFVybFZh bHVlID0gZnVuY3Rpb24odXJsLCBrZXksIHZhbHVlKSB7CiAgICB1cmwgKz0gdXJs LmluZGV4T2YoIj8iKSAhPSAtMSA/ICImIiA6ICI/IjsKICAgIHJldHVybiB1cmwg KyBrZXkgKyAiPSIgKyB2YWx1ZTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUu X19BcHBlbmRVcmxWYWx1ZXMgPSBmdW5jdGlvbiAodXJsKQp7Cgl0aW1lID0gbmV3 IERhdGUoKTsKICAgIHVybCArPSB0aGlzLl9fR2V0QXJndW1lbnQoInBsY2tOb0Nh Y2hlIiwgdGltZS5nZXRUaW1lKCksIGZhbHNlLCBmYWxzZSk7CiAgICB1cmwgKz0g dGhpcy5fX0dldEFyZ3VtZW50KCJwbGNrQXBpS2V5IiwgdGhpcy5hcGlLZXksIHRy dWUsIGZhbHNlKTsKICAgIHVybCArPSB0aGlzLl9fR2V0QXJndW1lbnQoInBja3Ns ZCIsIHRoaXMuc2l0ZUxpZmVEb21haW5PdmVycmlkZSwgZmFsc2UsIGZhbHNlKTsK ICAgIHVybCArPSB0aGlzLl9fR2V0QXJndW1lbnQoInBja3NidSIsIHRoaXMuc2l0 ZUxpZmVTZXJ2ZXJCYXNlT3ZlcnJpZGUsIGZhbHNlLCBmYWxzZSk7CiAgICB1cmwg Kz0gdGhpcy5fX0dldEFyZ3VtZW50KCJwY2tjc3MiLCB0aGlzLmN1c3RvbWVyQ1NT T3ZlcnJpZGUsIGZhbHNlLCBmYWxzZSk7CiAgICB1cmwgKz0gdGhpcy5fX0dldEFy Z3VtZW50KCJwY2tmcHAiLCB0aGlzLmN1c3RvbWVyRm9ydW1QYWdlUGF0aE92ZXJy aWRlLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICB1cmwg Kz0gdGhpcy5fX0dldEFyZ3VtZW50KCJzaWQiLCBnU2l0ZUxpZmUuU0lELCBmYWxz ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgCiAgICByZXR1cm4gdXJsOwp9CgpT aXRlTGlmZVByb3h5LnByb3RvdHlwZS5SZWxvYWRQYWdlID0gZnVuY3Rpb24ocGFy YW1zKSB7CiAgICB2YXIgc1NlYXJjaCA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gu c3Vic3RyaW5nKDEpOwogICAgdmFyIHNOVlBzID0gc1NlYXJjaC5zcGxpdCgnJicp OwogICAgdmFyIG5ld1NlYXJjaCA9ICIiOwogICAgdmFyIGFuY2hvclBvaW50ID0g IiI7CiAgICBmb3IodmFyIGsgaW4gcGFyYW1zKSB7CiAgICAgICAgaWYoayA9PSAi ZXh0ZW5kIikgY29udGludWU7CgkJaWYoayA9PSAiIyIpIHsKCQkJYW5jaG9yUG9p bnQgPSAnIycgKyBwYXJhbXNba107CgkJCWNvbnRpbnVlOwoJCX0JCQogICAgICAg IGlmKG5ld1NlYXJjaCA9PSAiIikgbmV3U2VhcmNoICs9ICI/IjsgZWxzZSBuZXdT ZWFyY2ggKz0gIiYiOwogICAgICAgIG5ld1NlYXJjaCArPSBrICsgJz0nICsgcGFy YW1zW2tdOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzTlZQcy5sZW5n dGg7IGkrKykgewogICAgICAgIHZhciBrdiA9IHNOVlBzW2ldLnNwbGl0KCc9Jyk7 CiAgICAgICAgaWYoa3ZbMF0gJiYga3ZbMF0uaW5kZXhPZigncGxjaycpICE9IDAg JiYgISBwYXJhbXNba3ZbMF1dKSB7CiAgICAgICAgICAgIG5ld1NlYXJjaCArPSAi JiIgKyBzTlZQc1tpXTsgICAgICAgIAogICAgICAgIH0KICAgIH0KICAgICAgICAg ICAgCiAgICBpZihhbmNob3JQb2ludCAhPSAiIil7IAogICAgICAgIHdpbmRvdy5s b2NhdGlvbi5oYXNoID0gYW5jaG9yUG9pbnQ7CiAgICB9CiAgICB3aW5kb3cubG9j YXRpb24uc2VhcmNoID0gbmV3U2VhcmNoOwp9CgpmdW5jdGlvbiBsb2FkU2NyaXB0 ICh1cmwsIGNhbGxiYWNrKSB7Cgl2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnc2NyaXB0Jyk7CglzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3Jp cHQnOwoJc2NyaXB0LmNoYXJzZXQgPSAndXRmLTgnOwoJaWYgKGNhbGxiYWNrKQoJ CXNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVu Y3Rpb24oKSB7CgkJCWlmIChzY3JpcHQucmVhZHlTdGF0ZSAmJiBzY3JpcHQucmVh ZHlTdGF0ZSAhPSAnbG9hZGVkJyAmJiBzY3JpcHQucmVhZHlTdGF0ZSAhPSAnY29t cGxldGUnKQoJCQkJcmV0dXJuOwoJCQlzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdl ID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7CgkJCWNhbGxiYWNrKCk7CgkJfTsKCXNj cmlwdC5zcmMgPSB1cmw7Cglkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn aGVhZCcpWzBdLmFwcGVuZENoaWxkIChzY3JpcHQpOwp9CgpTaXRlTGlmZVByb3h5 LnByb3RvdHlwZS5fX1NlbmQgPSBmdW5jdGlvbih1cmwsIHNjcmlwdFRvVXNlLCBj YWxsYmFja05hbWUsIGFyZ3MpIHsKICAgIHRoaXMuT25EZWJ1ZygiX1NlbmQgIiAr IHVybCk7CiAgICBmdW5jdGlvbiBnTG9hZFNjcmlwdCh1cmwsIGNhbGxiYWNrTmFt ZSkgewogICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn c2NyaXB0Jyk7CiAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4 dC9qYXZhc2NyaXB0Jyk7CiAgICAJc2NyaXB0LnNldEF0dHJpYnV0ZSgnY2hhcnNl dCcsICd1dGYtOCcpOwogICAgCXNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3NyYycsIHVy bCArIChjYWxsYmFja05hbWUgPyAnJkVWRU5UX0lEPScgKyBjYWxsYmFja05hbWUg OiAnJykpOwogICAgCWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFk JylbMF0uYXBwZW5kQ2hpbGQgKHNjcmlwdCk7CiAgICB9CiAgICBmdW5jdGlvbiBi aW5kKF9mdW5jdGlvbiwgX3RoaXMsIF9hcmd1bWVudHMpIHsKICAgICAgdmFyIGYg PSBmdW5jdGlvbigpIHsKICAgICAgICBfZnVuY3Rpb24uYXBwbHkoX3RoaXMsIF9h cmd1bWVudHMpOwogICAgICB9OwogICAgICBmWydfX0JvdW5kJ10gPSB0cnVlOwog ICAgICByZXR1cm4gZjsKICAgIH07CiAgICB2YXIgZnVuYzsKICAgIGlmICgodHlw ZW9mIGNhbGxiYWNrTmFtZSA9PSAnc3RyaW5nJykgJiYgKGZ1bmMgPSB0aGlzLl9f ZXZlbnRIYW5kbGVyc1tjYWxsYmFja05hbWVdKSAmJiAodHlwZW9mIGZ1bmMgPT0g J2Z1bmN0aW9uJykgJiYgIWZ1bmNbJ19fQm91bmQnXSkgewogICAgICB0aGlzLl9f ZXZlbnRIYW5kbGVyc1tjYWxsYmFja05hbWVdID0gYmluZChmdW5jLCB0aGlzLCBh cmdzKTsKICAgIH0KICAgIAogICAgLy9hcHBlbmQgb3VyIHZhcmlvdXMgcGFyYW1l dGVycyBhcyBuZWNlc3NhcnkKICAgIHVybCA9IHRoaXMuX19BcHBlbmRVcmxWYWx1 ZXModXJsKTsKICAgIHRoaXMuT25EZWJ1ZygiX1NlbmQgKHVwZGF0ZWQpICIgKyB1 cmwpOwogICAgLy8gYWRkIHRoZSBzY3JpcHQgbm9kZSB0byB0aGUgZG9jdW1lbnQK ICAgIGlmIChkb2N1bWVudC5jcmVhdGVFbGVtZW50ICYmICEgdGhpcy5fX2lzTWFj SUUpIHsKICAgICAgICBnTG9hZFNjcmlwdCh1cmwsIGNhbGxiYWNrTmFtZSk7CiAg ICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIGNvdWxkIGZhbGwgYmFjayB0byBz eW5jIGF0IHRoaXMgcG9pbnQsIGJ1dCB3aWxsIGJ1c3QgaWYgdGhlIHBhZ2UgaXMg YWxyZWFkeSBsb2FkZWQKCiAgICB0aGlzLk9uRXJyb3IoIk5vIHN1cHBvcnQgZm9y IGFzeW5jIGluIHRoaXMgYnJvd3NlciIpOwp9CgpTaXRlTGlmZVByb3h5LnByb3Rv dHlwZS5Mb2dvdXQgPSBmdW5jdGlvbihTY3JpcHRUb1VzZSwgSXNSZXN0UGFnZSkg ewogICAgdmFyIHBsY2tSZXN0ID0gSXNSZXN0UGFnZSA/IHRydWUgOiBmYWxzZTsK ICAgIHRoaXMuX19TZW5kKHRoaXMuX19iYXNlVXJsICsgJy9VdGlsaXR5L0xvZ291 dD9wbGNrUmVkaXJlY3RVcmw9JyArIGVzY2FwZSh3aW5kb3cubG9jYXRpb24uaHJl ZikgKyAnJnBsY2tSZXN0PScgKyBwbGNrUmVzdCwgU2NyaXB0VG9Vc2UpOwogICAg cmV0dXJuIGZhbHNlOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5BZGRMb2Fk RXZlbnQgPSBmdW5jdGlvbihmdW5jKSB7CmlmKHdpbmRvdy5hZGRFdmVudExpc3Rl bmVyKXsKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuYywgZmFs c2UpOwp9ZWxzZXsKIGlmKHdpbmRvdy5hdHRhY2hFdmVudCl7CiAgIHdpbmRvdy5h dHRhY2hFdmVudCgib25sb2FkIiwgZnVuYyk7CiB9ZWxzZXsKICAgaWYoZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQpewogICAgdmFyIG9sZG9ubG9hZCA9IHdpbmRvdy5v bmxvYWQ7CiAgICBpZiAodHlwZW9mIHdpbmRvdy5vbmxvYWQgIT0gJ2Z1bmN0aW9u JykgewogICAgICB3aW5kb3cub25sb2FkID0gZnVuYzsKICAgIH0gZWxzZSB7CiAg ICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgIGlmIChvbGRv bmxvYWQpIHsKICAgICAgICBvbGRvbmxvYWQoKTsKICAgICAgIH0KICAgICAgIGZ1 bmMoKTsKfX19fX19CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5BZEluc2VydEhl bHBlciA9IGZ1bmN0aW9uKCkgewogICAgZm9yKHZhciBzcmMgaW4gZ1NpdGVMaWZl Ll9fYWRzVG9JbnNlcnQpIHsKICAgICAgICBpZihzcmMgPT0gImV4dGVuZCIpIGNv bnRpbnVlOwogICAgICAgIHZhciBkZXN0ID0gZ1NpdGVMaWZlLl9fYWRzVG9JbnNl cnRbc3JjXTsKICAgICAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoZGVzdCk7CgkJdmFyIG5ld0NoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoc3JjKTsKCQlpZiggISBwYXJlbnQgfHwgISBuZXdDaGlsZCApIHtjb250 aW51ZTsgfQoJCXBhcmVudC5yZXBsYWNlQ2hpbGQoIG5ld0NoaWxkLCBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZChkZXN0ICsgIkNoaWxkIikpOwoJCW5ld0NoaWxkLnN0 eWxlLmRpc3BsYXkgPSAiYmxvY2siOyBwYXJlbnQuc3R5bGUuZGlzcGxheSA9ICJi bG9jayI7CiAgICB9Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkluc2VydEFk cyA9IGZ1bmN0aW9uKHNvdXJjZSwgZGVzdGluYXRpb24pIHsKZ1NpdGVMaWZlLl9f YWRzVG9JbnNlcnQgPSBuZXcgT2JqZWN0KCk7CmZvcihpaT0wOyBpaTwgdGhpcy5J bnNlcnRBZHMuYXJndW1lbnRzLmxlbmd0aDsgaWkrPTIpIHsgZ1NpdGVMaWZlLl9f YWRzVG9JbnNlcnRbdGhpcy5JbnNlcnRBZHMuYXJndW1lbnRzW2lpXV0gPSB0aGlz Lkluc2VydEFkcy5hcmd1bWVudHNbaWkrMV07fQp0aGlzLkFkZExvYWRFdmVudChn U2l0ZUxpZmUuQWRJbnNlcnRIZWxwZXIpOwp9CgpTaXRlTGlmZVByb3h5LnByb3Rv dHlwZS5UaXRsZVRhZyA9IGZ1bmN0aW9uKCkgewogdmFyIHRpdGxlVGFnID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsY2tUaXRsZVRhZyIpOwogcmV0dXJuIHRp dGxlVGFnID8gdGl0bGVUYWcuaW5uZXJUZXh0IHx8IHRpdGxlVGFnLnRleHRDb250 ZW50IDogbnVsbDsKIH0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLldyaXRlRGl2 ID0gZnVuY3Rpb24oaWQsIGRpdkNsYXNzKSB7CiAgICB2YXIgY3NzQ2xhc3MgPSBk aXZDbGFzcyA/IGRpdkNsYXNzIDogIiI7CiAgICBkb2N1bWVudC53cml0ZSgnPGRp diBpZD0iJytpZCsnIiBjbGFzcz0iJytjc3NDbGFzcysnIj48L2Rpdj4nKTsgcmV0 dXJuIGlkOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Jbm5lckh0bWxXcml0 ZSA9IGZ1bmN0aW9uKGVsZW1lbnRJZCwgaW5uZXJDb250ZW50cyApIHsKICAgIHZh ciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgdHJ5IHsK ICAgICAgICBpZihkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImRlYnVn PXRydWUiKSA+IC0xKSB7CiAgICAgICAgICAgIGVsLmlubmVySFRNTCArPSAiPGRp diBzdHlsZT0nYm9yZGVyOjFweCBzb2xpZCByZWQ7Jz48c3BhbiBzdHlsZT0nYmFj a2dyb3VuZC1jb2xvcjpyZWQ7IGNvbG9yOndoaXRlOyBwb3NpdGlvbjphYnNvbHV0 ZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTo4cHQ7JyBvbmNsaWNrPSdEZWJ1 Z1Nob3dJbm5lckhUTUwoXCIke3BsY2tFbGVtZW50SWR9XCIsXCJodHRwOi8vXCIr Y29tbWVudHNSb290VXJsK1wiL3ZlcjEuMC9Qcm94aWVzL0RlZmF1bHQucmFpbHNc Iik7Jz4mbmJzcDs/Jm5ic3A7PC9zcGFuPjxkaXY+IiArIGlubmVyQ29udGVudHMg KyAiPC9kaXY+PC9kaXY+IjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBl bC5pbm5lckhUTUwgKz0gaW5uZXJDb250ZW50czsKICAgICAgICAgICAgZWwuc3R5 bGUuZGlzcGxheSA9ICJpbmxpbmUiOwogICAgICAgIH0KICAgICAgICB2YXIgZGVz dERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CiAgICAg ICAgd2hpbGUgKGRlc3REaXYuY2hpbGROb2Rlcy5sZW5ndGggPj0gMSkgewogICAg ICAgICAgICAgZGVzdERpdi5yZW1vdmVDaGlsZChkZXN0RGl2LmNoaWxkTm9kZXNb MF0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZXN0RGl2LmFwcGVuZENo aWxkKGVsKTsKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgYWxlcnQoZWxl bWVudElkICsgIiBFcnJvciAiICArIGVycm9yLm51bWJlciArICI6ICIgKyBlcnJv ci5kZXNjcmlwdGlvbik7CiAgICB9Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBl LlNvcnRUaW1lU3RhbXBEZXNjZW5kaW5nID0gIlRpbWVTdGFtcERlc2NlbmRpbmci OwpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Tb3J0VGltZVN0YW1wQXNjZW5kaW5n ID0gIlRpbWVTdGFtcEFzY2VuZGluZyI7ClNpdGVMaWZlUHJveHkucHJvdG90eXBl LlNvcnRSZWNvbW1lbmRhdGlvbnNEZXNjZW5kaW5nID0gIlJlY29tbWVuZGF0aW9u c0Rlc2NlbmRpbmciOwpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Tb3J0UmVjb21t ZW5kYXRpb25zQXNjZW5kaW5nID0gIlJlY29tbWVuZGF0aW9uc0FzY2VuZGluZyI7 ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlNvcnRSYXRpbmdEZXNjZW5kaW5nID0g IlJhdGluZ0Rlc2NlbmRpbmciOwpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Tb3J0 UmF0aW5nQXNjZW5kaW5nID0gIlJhdGluZ0FzY2VuZGluZyI7ClNpdGVMaWZlUHJv eHkucHJvdG90eXBlLlNvcnRBbHBoYWJldGljYWxBc2NlbmRpbmcgPSAiQWxwaGFi ZXRpY2FsQXNjZW5kaW5nIjsKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuU29ydEFs cGhhYmV0aWNhbERlc2NlbmRpbmcgPSAiQWxwaGFiZXRpY2FsRGVzY2VuZGluZyI7 ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLktleVR5cGVFeHRlcm5hbFJlc291cmNl ID0gIkV4dGVybmFsUmVzb3VyY2UiOwogICAgICAgIAoKCgpTaXRlTGlmZVByb3h5 LnByb3RvdHlwZS5QZXJzb25hSGVhZGVyUmVxdWVzdCA9IGZ1bmN0aW9uKFVzZXJJ ZCkgewogICAgdmFyIHVybCA9IHRoaXMuX19iYXNlVXJsICsgJy9QZXJzb25hL1Bl cnNvbmFIZWFkZXI/cGxja0VsZW1lbnRJZD1wZXJzb25hSERlc3QmcGxja1VzZXJJ ZD0nKyBVc2VySWQ7CiAgICB0aGlzLl9fU2VuZCh1cmwsICJwZXJzb25hSGVhZGVy U2NyaXB0IiwgJ3BlcnNvbmE6aGVhZGVyJywgYXJndW1lbnRzKTsKfQpTaXRlTGlm ZVByb3h5LnByb3RvdHlwZS5QZXJzb25hSGVhZGVyID0gZnVuY3Rpb24oVXNlcklk KSB7CiAgICB0aGlzLldyaXRlRGl2KCJwZXJzb25hSERlc3QiLCAiUGVyc29uYV9N YWluIik7CiAgICAgICAgdGhpcy5QZXJzb25hSGVhZGVyUmVxdWVzdChVc2VySWQp OyAKfQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5QZXJzb25hSGVhZGVySW5ib3gg PSBmdW5jdGlvbigpIHsKCS8vIGlmIERBQVBJIHByb3h5IGlzIG5vdCBwcmVzZW50 LCBmYWlsIGdyYWNlZnVsbHkKCWlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J1ByaXZhdGVNZXNzYWdlSW5ib3gnKSB8fCAhd2luZG93LlJlcXVlc3RCYXRjaCB8 fCAhd2luZG93LlByaXZhdGVNZXNzYWdlRm9sZGVyTGlzdCkgewoJCXZhciBwbUNv bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdQZXJzb25hSGVhZGVy X1ByaXZhdGVNZXNzYWdlQ29udGVudCcpOwoJCWlmIChwbUNvbnRhaW5lcikgewoJ CQlwbUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwoJCX0KCQlyZXR1 cm47Cgl9CgoJdmFyIHJiID0gbmV3IFJlcXVlc3RCYXRjaCgpOwoJcmIuQWRkVG9S ZXF1ZXN0KG5ldyBQcml2YXRlTWVzc2FnZUZvbGRlckxpc3QoKSk7CglyYi5CZWdp blJlcXVlc3Qoc2VydmVyVXJsLAoJCWZ1bmN0aW9uKHJlc3BvbnNlQmF0Y2gpIHsK CQkJdmFyIGNvdW50ID0gJyc7CgkJCXRyeSB7CgkJCQlpZiAocmVzcG9uc2VCYXRj aCAmJiByZXNwb25zZUJhdGNoLk1lc3NhZ2VzICYmIHJlc3BvbnNlQmF0Y2guTWVz c2FnZXMubGVuZ3RoICYmIHJlc3BvbnNlQmF0Y2guTWVzc2FnZXNbMF0uTWVzc2Fn ZSA9PSAnb2snKSB7CgkJCQkJdmFyIGZvbGRlcnMgPSByZXNwb25zZUJhdGNoLlJl c3BvbnNlc1swXS5Qcml2YXRlTWVzc2FnZUZvbGRlckxpc3QuRm9sZGVyTGlzdDsK CQkJCQlmb3IgKHZhciBpID0gMDsgaSA8IGZvbGRlcnMubGVuZ3RoOyBpKyspIHsK CQkJCQkJdmFyIGYgPSBmb2xkZXJzW2ldOwoJCQkJCQlpZiAoZi5Gb2xkZXJJRCA9 PSAnSW5ib3gnKSB7IGNvdW50ID0gZi5VbnJlYWRNZXNzYWdlQ291bnQ7IGJyZWFr OyB9CgkJCQkJfQoJCQkJfQoJCQl9IGNhdGNoIChlKSB7fQoJCQl2YXIgaW5ib3hT dHIgPSAiSW5ib3ggKHswfSkiOwoJCQl2YXIgaWR4ID0gaW5ib3hTdHIuaW5kZXhP ZigiezB9Iik7CgkJCWlmIChpbmJveFN0ciA9PSAnJyB8fCBpZHggPj0gLTEpCgkJ CQlpbmJveFN0ciA9IGluYm94U3RyLnN1YnN0cmluZygwLCBpZHgpICsgY291bnQg KyBpbmJveFN0ci5zdWJzdHJpbmcoaWR4KzMpOwoJCQl2YXIgaW5ib3ggPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnUHJpdmF0ZU1lc3NhZ2VJbmJveCcpOwoJCQlp bmJveC5pbm5lckhUTUwgPSBpbmJveFN0cjsKCQkJaWYgKGNvdW50ID4gMCkgaW5i b3guc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJzsKCQl9KTsKfQoKU2l0ZUxpZmVQ cm94eS5wcm90b3R5cGUuUGVyc29uYSA9IGZ1bmN0aW9uKFVzZXJJZCkgewogICAg dGhpcy5Xcml0ZURpdigicGVyc29uYURlc3QiLCAiUGVyc29uYV9NYWluIik7CiAg ICB2YXIgYWN0aW9uID0gdGhpcy5HZXRQYXJhbWV0ZXIoInBsY2tQZXJzb25hUGFn ZSIpOwogICAgaWYoYWN0aW9uICYmICh0eXBlb2YgdGhpc1thY3Rpb25dID09ICdm dW5jdGlvbicpKSB0aGlzW2FjdGlvbl0oVXNlcklkKTsKICAgICAgICAgICAgIGVs c2UgdGhpcy5QZXJzb25hSG9tZShVc2VySWQpOwogICAgfQpTaXRlTGlmZVByb3h5 LnByb3RvdHlwZS5Mb2FkUGVyc29uYVBhZ2UgPSBmdW5jdGlvbihQYWdlTmFtZSwg VXNlcklkKSB7CiAgICB2YXIgcGFyYW1zID0gbmV3IE9iamVjdCgpOyBwYXJhbXNb J3BsY2tQZXJzb25hUGFnZSddID0gUGFnZU5hbWU7IHBhcmFtc1sncGxja1VzZXJJ ZCddID0gVXNlcklkOwogICAgICAgICAgICBwYXJhbXNbJ3VzZXJJZCddID0gVXNl cklkOwogICAgICAgIGZvcihpaT0yOyBpaTwgdGhpcy5Mb2FkUGVyc29uYVBhZ2Uu YXJndW1lbnRzLmxlbmd0aDsgaWkrPTIpIHsgcGFyYW1zW3RoaXMuTG9hZFBlcnNv bmFQYWdlLmFyZ3VtZW50c1tpaV1dID0gdGhpcy5Mb2FkUGVyc29uYVBhZ2UuYXJn dW1lbnRzW2lpKzFdO30KICAgIHRoaXMuUmVsb2FkUGFnZShwYXJhbXMpOwogICAg cmV0dXJuIGZhbHNlOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5QZXJzb25h SG9tZSA9IGZ1bmN0aW9uKFVzZXJJZCkgewoKICAgIHZhciBtZSA9IHRoaXM7CiAg ICB0aGlzLkFkZEV2ZW50SGFuZGxlcigncGVyc29uYTpob21lOmNvbXBsZXRlJywg ZnVuY3Rpb24oKSB7IG1lLlBvcHVsYXRlR3JvdXBzRGl2KFVzZXJJZCwgMSk7IH0p OwogICAgcmV0dXJuIHRoaXMuUGVyc29uYVNlbmQoJ1BlcnNvbmFIb21lJywgJ3Bl cnNvbmFEZXN0JywgJ3BlcnNvbmFTY3JpcHQnLCBVc2VySWQsIG51bGwsICdwZXJz b25hOmhvbWU6Y29tcGxldGUnKTsKCSAgCn0KClNpdGVMaWZlUHJveHkuaHRtbEVu Y29kZSA9IGZ1bmN0aW9uKHN0cil7CgkvLyBGaXggSFRNTAoJdmFyIHJldCA9IHN0 cjsKCXZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKCXZh ciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKTsKCWRpdi5hcHBl bmRDaGlsZCh0ZXh0KTsKCXJldCA9IG5ldyBTdHJpbmcoZGl2LmlubmVySFRNTCk7 CQkJCQoJCgkvLyBUaGUgYWJvdmUgZG9lc24ndCB0YWtlIGNhcmUgb2YgcXVvdGVz LgoJcmV0ID0gcmV0LnJlcGxhY2UoLyIvZywgJyZxdW90OycpOwoJCglyZXR1cm4g cmV0Owp9OwoJCQkKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuUG9wdWxhdGVHcm91 cHNEaXYgPSBmdW5jdGlvbihVc2VySWQsIE9uUGFnZSkgewogICAgICAgIC8vIGEg dXRpbGl0eSBmdW5jdGlvbiB0byBjb21wYXJlIHR3byB1cmxzIGZvciBwdXJwb3Nl cyBvZiBkZXRlcm1pbmluZyBzaXRlIG9mIG9yaWdpbgogICAgdmFyIGlzRnJvbVRo aXNTaXRlID0gZnVuY3Rpb24oc2l0ZU9mT3JpZ2luLCBjdXJyZW50SG9zdCkgewog ICAgICAgIC8vIGFzc3VtZSBlYWNoIHVybCBoYXMgcGVyaW9kcyBpbiBpdAogICAg ICAgIHZhciBzaXRlT2ZPcmlnaW5Eb3RJbmRleCA9IHNpdGVPZk9yaWdpbi5pbmRl eE9mKCcuJyk7CiAgICAgICAgdmFyIGN1cnJlbnRIb3N0RG90SW5kZXggPSBjdXJy ZW50SG9zdC5pbmRleE9mKCcuJykKICAgICAgICBpZiAoc2l0ZU9mT3JpZ2luRG90 SW5kZXggPCAwIHx8IGN1cnJlbnRIb3N0RG90SW5kZXggPCAwKSB7CiAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAg ICAgICAgIHJldHVybiBzaXRlT2ZPcmlnaW4uc2xpY2Uoc2l0ZU9mT3JpZ2luRG90 SW5kZXgpLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudEhvc3Quc2xpY2UoY3VycmVu dEhvc3REb3RJbmRleCkudG9Mb3dlckNhc2UoKTsKICAgICAgICB9CiAgICB9CiAg ICAgICAgLy8gY2hlY2sgZm9yIERBQVBJIG9iamVjdHM7IGlmIG5vdCB0aGVyZSwg ZmFpbCBncmFjZWZ1bGx5CiAgICBpZiAod2luZG93LlJlcXVlc3RCYXRjaCAmJiB3 aW5kb3cuQ29tbXVuaXR5R3JvdXBNZW1iZXJzaGlwUGFnZSAmJiB3aW5kb3cuVXNl cktleSkgewogICAgICAgIHZhciByZXF1ZXN0QmF0Y2ggPSBuZXcgUmVxdWVzdEJh dGNoKCk7CiAgICAgICAgcmVxdWVzdEJhdGNoLkFkZFRvUmVxdWVzdChuZXcgQ29t bXVuaXR5R3JvdXBNZW1iZXJzaGlwUGFnZShuZXcgVXNlcktleShVc2VySWQrIiIp LCA4LCBPblBhZ2UsICJUaW1lU3RhbXBBc2NlbmRpbmciLCAiTWVtYmVyIikpOwog ICAgICAgIHJlcXVlc3RCYXRjaC5CZWdpblJlcXVlc3QoImh0dHA6Ly8iK2NvbW1l bnRzUm9vdFVybCsiL3ZlcjEuMC9EaXJlY3QvUHJvY2VzcyIsIGZ1bmN0aW9uKHJl c3BvbnNlQmF0Y2gpIHsgICAKICAgICAgICAgICAgaWYgKHJlc3BvbnNlQmF0Y2gu UmVzcG9uc2VzLmxlbmd0aCA+IDAgJiYgcmVzcG9uc2VCYXRjaC5SZXNwb25zZXNb MF0uQ29tbXVuaXR5R3JvdXBNZW1iZXJzaGlwUGFnZSkgewogICAgICAgICAgICAg ICAgLy8gY3JlYXRlIHRoZSBkaXYgdGhhdCB3aWxsIGhvdXNlIGFsbCB0aGlzIGlu Zm8KICAgICAgICAgICAgICAgIHZhciBncm91cHNEaXYgPSBkb2N1bWVudC5jcmVh dGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgIGdyb3Vwc0Rpdi5jbGFz c05hbWUgPSAnUGVyc29uYVN0eWxlX0l0ZW1Db250YWluZXInOwogICAgICAgICAg ICAgICAgdmFyIGdyb3Vwc0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdQZXJzb25hU3R5bGVfR3JvdXBzQ29udGFpbmVyJyk7CiAgICAgICAgICAg ICAgICAvLyBDaGVjayBncm91cHNDb250YWluZXIgaXMgbnVsbCBiZWNhdXNlIFBl cnNvbmFTdHlsZV9Hcm91cENvbnRhaW5lciBtYXkgYmUgYWJzZW50IGR1ZSB0byBw cml2YXRlIHBlcnNvbmEgZmlsZXMuCiAgICAgICAgICAgICAgICBpZiAoZ3JvdXBz Q29udGFpbmVyICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBncm91cHND b250YWluZXIuYXBwZW5kQ2hpbGQoZ3JvdXBzRGl2KTsKICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3VwQmFzZVVybCA9 ICJodHRwOi8vdG9sc2kxLnNlLm5ld3NpbnQuY28udWsvZ3JvdXBzL0NvbW11bml0 eUdyb3VwLmh0bWwiOwogICAgICAgICAgICAgICAgICAgIHZhciBncm91cE1lbWJl cnNoaXBQYWdlID0gcmVzcG9uc2VCYXRjaC5SZXNwb25zZXNbMF0uQ29tbXVuaXR5 R3JvdXBNZW1iZXJzaGlwUGFnZTsKICAgICAgICAgICAgICAgICAgICB2YXIgZ3Jv dXBzSHRtbCA9ICI8ZGl2IGNsYXNzPVwiUGVyc29uYVN0eWxlX1NlY3Rpb25IZWFk XCI+R3JvdXBzPC9kaXY+IjsKICAgICAgICAgICAgICAgICAgICBncm91cHNIdG1s ICs9ICI8ZGl2IGNsYXNzPVwiUGVyc29uYVN0eWxlX0dyb3VwTGlzdFwiPiI7CiAg ICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGdy b3VwTWVtYmVyc2hpcFBhZ2UuQ29tbXVuaXR5R3JvdXBNZW1iZXJzaGlwcy5sZW5n dGg7IGluZGV4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJl bnRHcm91cCA9IGdyb3VwTWVtYmVyc2hpcFBhZ2UuQ29tbXVuaXR5R3JvdXBNZW1i ZXJzaGlwc1tpbmRleF0uQ29tbXVuaXR5R3JvdXA7CiAgICAgICAgICAgICAgICAg ICAgICAgIC8vIGlmIGN1cnJlbnQgZ3JvdXAgaXMgcHJpdmF0ZSBhbmQgdXNlciBp cyBub24tbWVtYmVyLCBkb24ndCBkaXNwbGF5CiAgICAgICAgICAgICAgICAgICAg ICAgIHZhciBkaXNwbGF5ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGN1cnJlbnRHcm91cC5Db21tdW5pdHlHcm91cFZpc2liaWxpdHkgPT0gJ1By aXZhdGUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ID0g KGN1cnJlbnRHcm91cC5SZXF1ZXN0aW5nVXNlcnNNZW1iZXJzaGlwVGllciAhPSAn Tm9uTWVtYmVyJyAmJiBjdXJyZW50R3JvdXAuUmVxdWVzdGluZ1VzZXJzTWVtYmVy c2hpcFRpZXIgIT0gJ0Jhbm5lZCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXNwbGF5KSB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YXIgZ3JvdXBVcmwgPSBncm91cEJhc2VVcmwg KyAiP3NsR3JvdXBLZXk9IiArIGN1cnJlbnRHcm91cC5Db21tdW5pdHlHcm91cEtl eS5LZXk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmICghaXNGcm9tVGhpc1NpdGUoY3VycmVudEdy b3VwLlNpdGVPZk9yaWdpbiwgd2luZG93LmxvY2F0aW9uLmhvc3QpKSB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwc0h0bWwgKz0gIjxp bWcgaGVpZ2h0PVwiNTBcIiB3aWR0aD1cIjUwXCIgdGl0bGU9XCIiICsgU2l0ZUxp ZmVQcm94eS5odG1sRW5jb2RlKGN1cnJlbnRHcm91cC5UaXRsZSkgKyAiXCIgc3Jj PVwiIiArIGN1cnJlbnRHcm91cC5BdmF0YXJJbWFnZVVybCArICJcIiAvPiI7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBncm91cHNIdG1sICs9ICI8YSBocmVmPVwiIiArIGdyb3VwVXJs ICsgIlwiPjxpbWcgaGVpZ2h0PVwiNTBcIiB3aWR0aD1cIjUwXCIgdGl0bGU9XCIi ICsgU2l0ZUxpZmVQcm94eS5odG1sRW5jb2RlKGN1cnJlbnRHcm91cC5UaXRsZSkg KyAiXCIgc3JjPVwiIiArIGN1cnJlbnRHcm91cC5BdmF0YXJJbWFnZVVybCArICJc IiAvPjwvYT4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy9Q YWdpbmF0aW9uIGZvciBHcm91cCBMaXN0CiAgICAgICAgICAgICAgICAgICAgZ3Jv dXBzSHRtbCArPSAiPHA+PHVsIGNsYXNzPVwiUGVyc29uYVN0eWxlX0dyb3VwTGlz dFBhZ2luYXRpb25cIj4iOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgIGlmIChncm91cE1lbWJlcnNoaXBQYWdlLk9uUGFnZSA+IDEpICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzSHRt bCArPSAiPGxpPjxhIGhyZWY9JyNQcmV2aW91c0dyb3VwJyBvbmNsaWNrPSdnU2l0 ZUxpZmUuUG9wdWxhdGVHcm91cHNEaXYoXCIiICsgVXNlcklkICsgIlwiLCAiICsg KHBhcnNlSW50KGdyb3VwTWVtYmVyc2hpcFBhZ2UuT25QYWdlKSAtIDEpICsgIik7 Jz4mbHQ7Jmx0O1ByZXZpb3VzPC9hPjwvbGk+IjsKICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYg KGdyb3VwTWVtYmVyc2hpcFBhZ2UuTnVtYmVyT2ZDb21tdW5pdHlHcm91cE1lbWJl cnNoaXBzID4gKGdyb3VwTWVtYmVyc2hpcFBhZ2UuTnVtYmVyUGVyUGFnZSAqIGdy b3VwTWVtYmVyc2hpcFBhZ2UuT25QYWdlKSkgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBncm91cHNIdG1sICs9ICI8bGk+PGEgaHJlZj0n I05leHRHcm91cCcgb25jbGljaz0nZ1NpdGVMaWZlLlBvcHVsYXRlR3JvdXBzRGl2 KFwiIiArIFVzZXJJZCArICJcIiwgIiArIChwYXJzZUludChncm91cE1lbWJlcnNo aXBQYWdlLk9uUGFnZSkgKyAxKSArICIpOyc+TmV4dCZndCZndDs8L2E+PC9saT4i OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBncm91 cHNIdG1sICs9ICI8L3A+IjsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAvL0VuZCBQYWdpbmF0aW9uIGZvciBHcm91cCBMaXN0ICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzSHRtbCArPSAiPC91bD48 ZGl2IGNsYXNzPVwiUGVyc29uYVN0eWxlX0dyb3VwTGlzdENsZWFyXCI+PC9kaXY+ IjsgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZ3JvdXBz SHRtbCArPSAiPC9kaXY+IjsgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgZ3JvdXBzRGl2LmlubmVySFRNTCA9IGdyb3Vwc0h0bWw7CiAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgd2hpbGUoZ3JvdXBz Q29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkgewogICAgICAgICAgICAgICAgICAg ICAgICBncm91cHNDb250YWluZXIucmVtb3ZlQ2hpbGQoZ3JvdXBzQ29udGFpbmVy LmNoaWxkTm9kZXNbMF0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICBncm91cHNDb250YWluZXIuYXBwZW5kQ2hpbGQoZ3JvdXBzRGl2 KTsKICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgfQogICAgICAgIH0p OwogICAgfQogICAgLy8gZmlyZSBhbnkgb3RoZXIgZXZlbnRzCiAgICB0aGlzLkZp cmVFdmVudCgncGVyc29uYTpob21lJyk7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90 eXBlLldhdGNoSXRlbSA9IGZ1bmN0aW9uKENvbnRyb2xsZXIsTWV0aG9kLFdhdGNo S2V5LCB0YXJnZXREaXYpIHsKICAgIHZhciB1cmwgPSB0aGlzLl9fYmFzZVVybCAr ICcvJytDb250cm9sbGVyKycvJyArIE1ldGhvZCArICc/JyArICdwbGNrV2F0Y2hL ZXk9JyArIFdhdGNoS2V5ICsgJyZwbGNrRWxlbWVudElkPScgKyB0YXJnZXREaXYg KyAnJnBsY2tXYXRjaFVybD0nICsgdGhpcy5Fc2NhcGVWYWx1ZSh3aW5kb3cubG9j YXRpb24uaHJlZik7CiAgICB0aGlzLl9fU2VuZCh1cmwsICJBZGRXYXRjaFNjcmlw dCIpOwogICAgcmV0dXJuIGZhbHNlOwp9ClNpdGVMaWZlUHJveHkucHJvdG90eXBl LlBlcnNvbmFSZW1vdmVXYXRjaEl0ZW09IGZ1bmN0aW9uKFVzZXJJZCwgV2F0Y2hL ZXksIERpdiwgVmlldykgewogICByZXR1cm4gdGhpcy5QZXJzb25hU2VuZCgnUGVy c29uYVJlbW92ZVdhdGNoSXRlbScsIERpdiwgJ3BlcnNvbmFTY3JpcHQnLCBVc2Vy SWQsICdwbGNrV2F0Y2hWaWV3PScgKyBWaWV3ICsgJyZwbGNrV2F0Y2hLZXk9JyAr IFdhdGNoS2V5KTsKfQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5QZXJzb25hQWRk RnJpZW5kPSBmdW5jdGlvbihVc2VySWQpIHsKICAgcmV0dXJuIHRoaXMuUGVyc29u YVNlbmQoJ1BlcnNvbmFBZGRGcmllbmQnLCAncGVyc29uYUhEZXN0JywgJ3BlcnNv bmFTY3JpcHQnLCBVc2VySWQpOwp9ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlBl cnNvbmFSZW1vdmVGcmllbmQgPSBmdW5jdGlvbihVc2VySWQsIEZyaWVuZCwgRGl2 LCBWaWV3LCBFeHBhbmRlZCwgY29uZmlybU1zZykgewogICBpZighRXhwYW5kZWQp IEV4cGFuZGVkID0gImZhbHNlIjsKICAgaWYgKGNvbmZpcm0oY29uZmlybU1zZykg PT0gdHJ1ZSkgewogICAgcmV0dXJuIHRoaXMuUGVyc29uYVNlbmQoJ1BlcnNvbmFS ZW1vdmVGcmllbmQnLCBEaXYsICdwZXJzb25hU2NyaXB0JywgVXNlcklkLCAncGxj a0ZyaWVuZFZpZXc9JyArIFZpZXcgKyAnJnBsY2tGcmllbmQ9JyArIEZyaWVuZCAr ICcmcGxja0V4cGFuZGVkPScgKyBFeHBhbmRlZCk7CiAgIH0KICAgcmV0dXJuIGZh bHNlOwp9ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlBlcnNvbmFSZW1vdmVQZW5k aW5nRnJpZW5kID0gZnVuY3Rpb24oVXNlcklkLCBQZW5kaW5nRnJpZW5kLCBEaXYs IGNvbmZpcm1Nc2cpIHsKICAgaWYgKGNvbmZpcm0oY29uZmlybU1zZykgPT0gdHJ1 ZSkgewogICAgcmV0dXJuIHRoaXMuUGVyc29uYVNlbmQoJ1BlcnNvbmFSZW1vdmVQ ZW5kaW5nRnJpZW5kJywgRGl2LCAncGVyc29uYVNjcmlwdCcsIFVzZXJJZCwgJ3Bs Y2tQZW5kaW5nRnJpZW5kPScgKyBQZW5kaW5nRnJpZW5kKTsKICAgfQogICByZXR1 cm4gZmFsc2U7Cn0KU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuUGVyc29uYUFkZFBl bmRpbmdGcmllbmQgPSBmdW5jdGlvbihVc2VySWQsIFBlbmRpbmdGcmllbmQsIERp dikgewogICAgcmV0dXJuIHRoaXMuUGVyc29uYVNlbmQoJ1BlcnNvbmFBZGRQZW5k aW5nRnJpZW5kJywgRGl2LCAncGVyc29uYVNjcmlwdCcsIFVzZXJJZCwgJ3BsY2tQ ZW5kaW5nRnJpZW5kPScgKyBQZW5kaW5nRnJpZW5kKTsKfQpTaXRlTGlmZVByb3h5 LnByb3RvdHlwZS5QZXJzb25hTWVzc2FnZXMgPSBmdW5jdGlvbihVc2VySWQpIHsK ICAgdmFyIEFkUGFyYW1zID0gdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tDdXJyZW50 UGFnZScpID8gJ3BsY2tDdXJyZW50UGFnZT0nICsgdGhpcy5HZXRQYXJhbWV0ZXIo J3BsY2tDdXJyZW50UGFnZScpIDogIiI7CiAgIHZhciBzY3JsID0gdGhpcy5HZXRQ YXJhbWV0ZXIoJ3BsY2tTY3JvbGxUb0FuY2hvcicpOyAgaWYoc2NybCl7IGlmKEFk UGFyYW1zKSB7QWRQYXJhbXMgKz0nJic7fSBBZFBhcmFtcyArPSAncGxja1Njcm9s bFRvQW5jaG9yPScgKyBzY3JsO30KICAgaWYodGhpcy5HZXRQYXJhbWV0ZXIoJ3Bs Y2tNZXNzYWdlU3VibWl0dGVkJykpe2lmKEFkUGFyYW1zKSB7QWRQYXJhbXMgKz0n Jic7fSBBZFBhcmFtcyArPSAncGxja01lc3NhZ2VTdWJtaXR0ZWQ9JyArIHRoaXMu R2V0UGFyYW1ldGVyKCdwbGNrTWVzc2FnZVN1Ym1pdHRlZCcpO30KICAgcmV0dXJu IHRoaXMuUGVyc29uYVNlbmQoJ1BlcnNvbmFNZXNzYWdlcycsICdwZXJzb25hRGVz dCcsICdwZXJzb25hU2NyaXB0JywgVXNlcklkLCBBZFBhcmFtcywgJ3BlcnNvbmE6 bWVzc2FnZXMnKTsKfQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5QZXJzb25hQ29t bWVudHMgPSBmdW5jdGlvbihVc2VySWQpIHsKICAgdmFyIEFkUGFyYW1zID0gdGhp cy5HZXRQYXJhbWV0ZXIoJ3BsY2tDdXJyZW50UGFnZScpID8gJ3BsY2tDdXJyZW50 UGFnZT0nICsgdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tDdXJyZW50UGFnZScpIDog IiI7CiAgIHJldHVybiB0aGlzLlBlcnNvbmFTZW5kKCdQZXJzb25hQ29tbWVudHMn LCAncGVyc29uYURlc3QnLCAncGVyc29uYVNjcmlwdCcsIFVzZXJJZCwgQWRQYXJh bXMsICdwZXJzb25hOmNvbW1lbnRzJyk7Cn0KU2l0ZUxpZmVQcm94eS5wcm90b3R5 cGUuUGVyc29uYUJsb2cgPSBmdW5jdGlvbihVc2VySWQpIHsKICAgdmFyIEFkUGFy YW1zID0gdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tDdXJyZW50UGFnZScpID8gJ3Bs Y2tDdXJyZW50UGFnZT0nICsgdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tDdXJyZW50 UGFnZScpIDogIiI7CiAgIGlmKEFkUGFyYW1zKSB7QWRQYXJhbXMgKz0nJic7fSBB ZFBhcmFtcyArPSAncGxja0Jsb2dJZD0nICsgVXNlcklkOwogICB2YXIgdXJsID0g dGhpcy5fX2Jhc2VVcmwgKyAnL1BlcnNvbmFCbG9nL1BlcnNvbmFCbG9nP3BsY2tF bGVtZW50SWQ9cGVyc29uYURlc3QmcGxja1VzZXJJZD0nKyBVc2VySWQgKyAnJicg KyBBZFBhcmFtczsKICAgdGhpcy5fX1NlbmQodXJsLCAncGVyc29uYVNjcmlwdCcs ICdwZXJzb25hOmJsb2cnLCBhcmd1bWVudHMpOwogICByZXR1cm4gZmFsc2U7Cn0K U2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuUGVyc29uYVByb2ZpbGUgPSBmdW5jdGlv bihVc2VySWQpIHsKICAgIHJldHVybiB0aGlzLlBlcnNvbmFTZW5kKCdQZXJzb25h UHJvZmlsZScsICdwZXJzb25hRGVzdCcsICdwZXJzb25hU2NyaXB0JywgVXNlcklk LCBudWxsLCAncGVyc29uYTpwcm9maWxlJyk7Cn0KU2l0ZUxpZmVQcm94eS5wcm90 b3R5cGUuUGVyc29uYVdhdGNoTGlzdFBhZ2luYXRlID0gZnVuY3Rpb24oVXNlcklk LCBwYWdlTnVtKSB7IAogICAgcmV0dXJuIHRoaXMuUGVyc29uYVBhZ2luYXRlKCdX YXRjaExpc3QnLCBwYWdlTnVtLCBVc2VySWQpOwp9ClNpdGVMaWZlUHJveHkucHJv dG90eXBlLlBlcnNvbmFGcmllbmRzUGFnaW5hdGUgPSBmdW5jdGlvbihVc2VySWQs IHBhZ2VOdW0pIHsgCgl2YXIgQWRQYXJhbSA9ICJwbGNrRnVsbEZyaWVuZHNMaXN0 PXRydWUiOwogICAgcmV0dXJuIHRoaXMuUGVyc29uYVBhZ2luYXRlKCdGcmllbmRz JywgcGFnZU51bSwgVXNlcklkLCBBZFBhcmFtKTsKfQoKU2l0ZUxpZmVQcm94eS5w cm90b3R5cGUuUGVyc29uYUZyaWVuZHNFeHBhbmQ9IGZ1bmN0aW9uKFVzZXJJZCkg eyAKICAgIHZhciB1cmwgPSB0aGlzLl9fYmFzZVVybCArICcvUGVyc29uYS9QZXJz b25hRnJpZW5kcz9wbGNrRnVsbEZyaWVuZHNMaXN0PXRydWUmcGxja0ZyaWVuZHNQ YWdlTnVtPTAmcGxja0VsZW1lbnRJZD1QZXJzb25hRnJpZW5kc0Rlc3QmcGxja1Vz ZXJJZD0nKyBVc2VySWQ7CiAgICB0aGlzLl9fU2VuZCh1cmwsICdQZXJzb25hRnJp ZW5kc1NjcmlwdCcpOwogICAgcmV0dXJuIGZhbHNlOwp9ClNpdGVMaWZlUHJveHku cHJvdG90eXBlLlBlcnNvbmFGcmllbmRzQ29sbGFwc2U9IGZ1bmN0aW9uKFVzZXJJ ZCwgcGFnZU51bSkgeyAKICAgIHZhciB1cmwgPSB0aGlzLl9fYmFzZVVybCArICcv UGVyc29uYS9QZXJzb25hRnJpZW5kcz9wbGNrRnVsbEZyaWVuZHNMaXN0PWZhbHNl JnBsY2tGcmllbmRzUGFnZU51bT0wJnBsY2tFbGVtZW50SWQ9UGVyc29uYUZyaWVu ZHNEZXN0JnBsY2tVc2VySWQ9JysgVXNlcklkOwogICAgdGhpcy5fX1NlbmQodXJs LCAnUGVyc29uYUZyaWVuZHNTY3JpcHQnKTsKICAgIHJldHVybiBmYWxzZTsKfQoK U2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuUGVyc29uYVBlbmRpbmdGcmllbmRzUGFn aW5hdGUgPSBmdW5jdGlvbihVc2VySWQsIHBhZ2VOdW0pIHsgCiAgICB2YXIgQWRQ YXJhbSA9ICJwbGNrUGVuZGluZ0ZyaWVuZHNQYWdlTnVtPSIgKyBwYWdlTnVtOwog ICAgcmV0dXJuIHRoaXMuUGVyc29uYVBhZ2luYXRlKCdGcmllbmRzJywgMCwgVXNl cklkLEFkUGFyYW0pOwp9ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlBlcnNvbmFN ZXNzYWdlc1ByZXZpZXdQYWdpbmF0ZSA9IGZ1bmN0aW9uKFVzZXJJZCwgcGFnZU51 bSkgeyAKICAgIHJldHVybiB0aGlzLlBlcnNvbmFQYWdpbmF0ZSgnTWVzc2FnZXNQ cmV2aWV3JywgcGFnZU51bSwgVXNlcklkKTsKfQpTaXRlTGlmZVByb3h5LnByb3Rv dHlwZS5QZXJzb25hTWVzc2FnZVJlbW92ZSA9IGZ1bmN0aW9uKFVzZXJJZCwgcGFn ZU51bSwgTWVzc2FnZUtleSwgY29uZmlybU1zZykgeyAKICAgaWYgKGNvbmZpcm0o Y29uZmlybU1zZykgPT0gdHJ1ZSkgewogICAgICAgIHJldHVybiB0aGlzLlBlcnNv bmFTZW5kKCdQZXJzb25hUmVtb3ZlTWVzc2FnZScsICdwZXJzb25hRGVzdCcsICdQ ZXJzb25hTWVzc2FnZXNQYWdlU2NyaXB0JywgVXNlcklkLCAncGxja0N1cnJlbnRQ YWdlPScrIHBhZ2VOdW0gKyAnJnBsY2tNZXNzYWdlS2V5PScrTWVzc2FnZUtleSk7 CiAgIH0KICAgcmV0dXJuIGZhbHNlOwp9ClNpdGVMaWZlUHJveHkucHJvdG90eXBl LlBlcnNvbmFTZW5kID0gZnVuY3Rpb24oQXBpTmFtZSwgRGVzdERpdiwgU2NyaXB0 TmFtZSwgVXNlcklkLCBBZGRQYXJhbXMsIGV2ZW50SWQpewogICAgdmFyIHVybCA9 IHRoaXMuX19iYXNlVXJsICsgJy9QZXJzb25hLycgKyBBcGlOYW1lICsgJz9wbGNr RWxlbWVudElkPScgKyBEZXN0RGl2ICsgJyZwbGNrVXNlcklkPScrIFVzZXJJZDsK ICAgIGlmKEFkZFBhcmFtcykgdXJsICs9ICcmJyArIEFkZFBhcmFtczsKICAgIHRo aXMuX19TZW5kKHVybCwgU2NyaXB0TmFtZSwgZXZlbnRJZCwgYXJndW1lbnRzKTsK ICAgIHJldHVybiBmYWxzZTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuUGVy c29uYVBhZ2luYXRlID0gZnVuY3Rpb24oQXBpTmFtZSwgUGFnZU51bSwgVXNlcklk LCBBZGRQYXJhbXMpewogICAgdmFyIHVybCA9IHRoaXMuX19iYXNlVXJsICsgJy9Q ZXJzb25hL1BlcnNvbmEnICsgQXBpTmFtZSArICc/cGxjaycgKyBBcGlOYW1lICsg J1BhZ2VOdW09JyArIFBhZ2VOdW0gKyAnJnBsY2tFbGVtZW50SWQ9UGVyc29uYScg KyBBcGlOYW1lICsgJ0Rlc3QmcGxja1VzZXJJZD0nKyBVc2VySWQ7CiAgICBpZihB ZGRQYXJhbXMpIHVybCArPSAnJicgKyBBZGRQYXJhbXM7ICAgIAogICAgdGhpcy5f X1NlbmQodXJsLCAnUGVyc29uYScrIEFwaU5hbWUgKyAnU2NyaXB0Jyk7CiAgICBy ZXR1cm4gZmFsc2U7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlBlcnNvbmFQ aG90b1NlbmQgPSBmdW5jdGlvbihBcGlOYW1lLCBEZXN0RGl2LCBTY3JpcHROYW1l LCBVc2VySWQsIEFkZFBhcmFtcywgZXZlbnRJZCl7CiAgICB2YXIgdXJsID0gdGhp cy5fX2Jhc2VVcmwgKyAnL1BlcnNvbmFQaG90by8nICsgQXBpTmFtZSArICc/cGxj a0VsZW1lbnRJZD0nICsgRGVzdERpdiArICcmcGxja1VzZXJJZD0nKyBVc2VySWQ7 CiAgICBpZihBZGRQYXJhbXMpIHVybCArPSAnJicgKyBBZGRQYXJhbXM7CiAgICB0 aGlzLl9fU2VuZCh1cmwsIFNjcmlwdE5hbWUsIGV2ZW50SWQsIGFyZ3VtZW50cyk7 CiAgICByZXR1cm4gZmFsc2U7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlBl cnNvbmFNb3N0UmVjZW50ID0gZnVuY3Rpb24oVXNlcklkLCBQaG90b0lELCBEZXN0 RGl2KSB7CiAgIHJldHVybiB0aGlzLlBlcnNvbmFQaG90b1NlbmQoJ1BlcnNvbmFN b3N0UmVjZW50JywgRGVzdERpdiwgJ3BlcnNvbmFTY3JpcHQnLCBVc2VySWQsJ3Bs Y2tQaG90b0lEPScgKyBQaG90b0lEKTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5 cGUuUGVyc29uYUNvbW11bml0eUdyb3Vwc1BhZ2luYXRlID0gZnVuY3Rpb24oVXNl cklkLCBQYWdlTnVtKXsKCXJldHVybiB0aGlzLlBlcnNvbmFQYWdpbmF0ZSgnQ29t bXVuaXR5R3JvdXBzJywgUGFnZU51bSwgVXNlcklkKTsKfQoKU2l0ZUxpZmVQcm94 eS5wcm90b3R5cGUuUGVyc29uYUNyZWF0ZUdhbGxlcnkgPSBmdW5jdGlvbihVc2Vy SWQpIHsKICAgICByZXR1cm4gdGhpcy5QZXJzb25hUGhvdG9TZW5kKCdVc2VyR2Fs bGVyeUNyZWF0ZScsICdwZXJzb25hRGVzdFBob3RvJywgJ3BlcnNvbmFTY3JpcHQn LCBVc2VySWQpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5QZXJzb25hRWRp dEdhbGxlcnkgPSBmdW5jdGlvbihVc2VySWQsR2FsbGVyeUlEKSB7CiAgICAgcmV0 dXJuIHRoaXMuUGVyc29uYVBob3RvU2VuZCgnVXNlckdhbGxlcnlFZGl0JywgJ3Vz ZXJHYWxsZXJ5RGVzdCcsICdwZXJzb25hU2NyaXB0JywgVXNlcklkLCdwbGNrR2Fs bGVyeUlEPScgKyBHYWxsZXJ5SUQpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlw ZS5QZXJzb25hVXBsb2FkVG9Vc2VyR2FsbGVyeSA9IGZ1bmN0aW9uKEdhbGxlcnlJ ZCkgewogICAgdmFyIHVybCA9IHRoaXMuX19iYXNlVXJsICsgJy9QaG90by9QaG90 b1VwbG9hZD9wbGNrRWxlbWVudElkPXVzZXJHYWxsZXJ5RGVzdCZwbGNrR2FsbGVy eUlEPScrIEdhbGxlcnlJZDsKICAgIHRoaXMuX19TZW5kKHVybCk7CiAgICByZXR1 cm4gZmFsc2U7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlBlcnNvbmFQaG90 b3MgPSBmdW5jdGlvbihVc2VySWQpIHsKICAgICByZXR1cm4gdGhpcy5QZXJzb25h UGhvdG9TZW5kKCdQZXJzb25hUGhvdG9zJywgJ3BlcnNvbmFEZXN0JywgJ3BlcnNv bmFTY3JpcHQnLCBVc2VySWQsIG51bGwsICdwZXJzb25hOnBob3RvcycpOwp9ClNp dGVMaWZlUHJveHkucHJvdG90eXBlLlBlcnNvbmFBbGxQaG90b3MgPSBmdW5jdGlv bihVc2VySWQpIHsKICAgICByZXR1cm4gdGhpcy5QZXJzb25hUGhvdG9TZW5kKCdQ ZXJzb25hQWxsUGhvdG9zJywgJ3BlcnNvbmFEZXN0JywgJ3BlcnNvbmFTY3JpcHQn LCBVc2VySWQpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5QZXJzb25hR2Fs bGVyeVBob3RvID0gZnVuY3Rpb24oVXNlcklkLCBwbGNrRmluZENvbW1lbnRLZXkp IHsKCXZhciBmaW5kQ29tbWVudEtleSA9IGdTaXRlTGlmZS5SZWFkRmluZENvbW1l bnRLZXkoZmluZENvbW1lbnRLZXksICJ3aWRnZXQ6cGVyc29uYUdhbGxlcnlQaG90 byIpOwoJCiAgICByZXR1cm4gdGhpcy5QZXJzb25hUGhvdG9TZW5kKCdQZXJzb25h R2FsbGVyeVBob3RvJywgJ3BlcnNvbmFEZXN0JywgJ3BlcnNvbmFTY3JpcHQnLCBV c2VySWQsICdwbGNrRmluZENvbW1lbnRLZXk9JyArIGZpbmRDb21tZW50S2V5LCAi d2lkZ2V0OnBlcnNvbmFHYWxsZXJ5UGhvdG8iKTsKfQpTaXRlTGlmZVByb3h5LnBy b3RvdHlwZS5QZXJzb25hTXlSZWNlbnRQaG90b3MgPSBmdW5jdGlvbihVc2VySWQs RWxlbWVudElkLCBQYWdlTnVtKSB7CiAgICAgcmV0dXJuIHRoaXMuUGVyc29uYVBo b3RvU2VuZCgnUGVyc29uYU15UmVjZW50UGhvdG9zJywgRWxlbWVudElkLCAncGVy c29uYVNjcmlwdCcsIFVzZXJJZCwncGxja1BhZ2VOdW09JyArIFBhZ2VOdW0pOwp9 CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5QZXJzb25hR2FsbGVyeSA9IGZ1bmN0 aW9uKFVzZXJJZCxHYWxsZXJ5SWQsUGFnZU51bSkgewogICAgIGlmKCFQYWdlTnVt KXsKICAgICAgICBQYWdlTnVtID0gZ1NpdGVMaWZlLkdldFBhcmFtZXRlcigicGxj a1BhZ2VOdW0iKSA/IGdTaXRlTGlmZS5HZXRQYXJhbWV0ZXIoInBsY2tQYWdlTnVt IikgOiAwOwogICAgIH0KICAgICBpZighR2FsbGVyeUlkKSB7CiAgICAgICAgR2Fs bGVyeUlkID0gZ1NpdGVMaWZlLkdldFBhcmFtZXRlcigicGxja0dhbGxlcnlJRCIp OwogICAgIH0KICAgICByZXR1cm4gdGhpcy5QZXJzb25hUGhvdG9TZW5kKCdQZXJz b25hR2FsbGVyeScsICdwZXJzb25hRGVzdCcsICdwZXJzb25hU2NyaXB0JywgVXNl cklkLCdwbGNrR2FsbGVyeUlEPScrIEdhbGxlcnlJZCArICcmcGxja1BhZ2VOdW09 JyArIFBhZ2VOdW0pOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Vc2VyR2Fs bGVyeUxpc3QgPSBmdW5jdGlvbihVc2VySWQsRWxlbWVudElkLCBQYWdlTnVtKSB7 CiAgICAgcmV0dXJuIHRoaXMuUGVyc29uYVBob3RvU2VuZCgnVXNlckdhbGxlcnlM aXN0JywgRWxlbWVudElkLCAncGVyc29uYVNjcmlwdCcsIFVzZXJJZCwncGxja1Bh Z2VOdW09JyArIFBhZ2VOdW0pOwp9ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlBl cnNvbmFHYWxsZXJ5U3VibWlzc2lvbnMgPSBmdW5jdGlvbihVc2VySWQsRWxlbWVu dElkLCBQYWdlTnVtKXsKICAgICByZXR1cm4gdGhpcy5QZXJzb25hUGhvdG9TZW5k KCdQZXJzb25hR2FsbGVyeVN1Ym1pc3Npb25zJywgRWxlbWVudElkLCAncGVyc29u YVNjcmlwdCcsIFVzZXJJZCwncGxja1BhZ2VOdW09JyArIFBhZ2VOdW0pOwp9IAoK U2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuUGVyc29uYUdhbGxlcnlQaG90byA9IGZ1 bmN0aW9uKFVzZXJJZCwgcGxja0ZpbmRDb21tZW50S2V5KSB7Cgl2YXIgZmluZENv bW1lbnRLZXkgPSBnU2l0ZUxpZmUuUmVhZEZpbmRDb21tZW50S2V5KGZpbmRDb21t ZW50S2V5LCAid2lkZ2V0OnBlcnNvbmFQaG90byIpOwogICAgCiAgICB2YXIgcGhv dG9pZCA9IGdTaXRlTGlmZS5HZXRQYXJhbWV0ZXIoJ3BsY2tQaG90b0lEJyk7CiAg ICByZXR1cm4gdGhpcy5QZXJzb25hUGhvdG9TZW5kKCdQZXJzb25hR2FsbGVyeVBo b3RvJywgJ3BlcnNvbmFEZXN0JywncGVyc29uYVNjcmlwdCcsIFVzZXJJZCwnJnBs Y2tQaG90b0lEPScgK3Bob3RvaWQgKyAnJnBsY2tGaW5kQ29tbWVudEtleT0nICtm aW5kQ29tbWVudEtleSwgIndpZGdldDpwZXJzb25hUGhvdG8iKTsKfQpTaXRlTGlm ZVByb3h5LnByb3RvdHlwZS5QZXJzb25hUmVjZW50R2FsbGVyeVBob3RvID0gZnVu Y3Rpb24oVXNlcklkKSB7CiAgICB2YXIgcGhvdG9pZCA9IGdTaXRlTGlmZS5HZXRQ YXJhbWV0ZXIoJ3BsY2tQaG90b0lEJyk7CiAgICByZXR1cm4gdGhpcy5QZXJzb25h UGhvdG9TZW5kKCdQZXJzb25hUmVjZW50R2FsbGVyeVBob3RvJywgJ3BlcnNvbmFE ZXN0JywncGVyc29uYVNjcmlwdCcsIFVzZXJJZCwnJnBsY2tQaG90b0lEPScgK3Bo b3RvaWQpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Mb2FkUGVyc29uYUdh bGxlcnlQYWdlID0gZnVuY3Rpb24oVXNlcklkLEdhbGxlcnlJRCkgewogICAgdmFy IHBhcmFtcyA9IG5ldyBPYmplY3QoKTsgcGFyYW1zWydwbGNrUGVyc29uYVBhZ2Un XSA9ICdQZXJzb25hR2FsbGVyeSc7IHBhcmFtc1sncGxja1VzZXJJZCddID0gVXNl cklkOyAKICAgICAgICAgICAgcGFyYW1zWyd1c2VySWQnXSA9IFVzZXJJZDsKICAg ICAgICBwYXJhbXNbJ3BsY2tHYWxsZXJ5SUQnXSA9IEdhbGxlcnlJRDsKICAgIHRo aXMuUmVsb2FkUGFnZShwYXJhbXMpOwogICAgcmV0dXJuIGZhbHNlOwp9ClNpdGVM aWZlUHJveHkucHJvdG90eXBlLkxvYWRQZXJzb25hUGhvdG9QYWdlID0gZnVuY3Rp b24oVXNlcklkLFBob3RvSUQpIHsKICAgIHZhciBwYXJhbXMgPSBuZXcgT2JqZWN0 KCk7IHBhcmFtc1sncGxja1BlcnNvbmFQYWdlJ10gPSAnUGVyc29uYUdhbGxlcnlQ aG90byc7IHBhcmFtc1sncGxja1VzZXJJZCddID0gVXNlcklkOwogICAgICAgICAg ICBwYXJhbXNbJ3VzZXJJZCddID0gVXNlcklkOwogICAgICAgIHBhcmFtc1sncGxj a1Bob3RvSUQnXSA9IFBob3RvSUQ7CiAgICB0aGlzLlJlbG9hZFBhZ2UocGFyYW1z KTsKICAgIHJldHVybiBmYWxzZTsKfQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5M b2FkUGVyc29uYVJlY2VudFBob3RvUGFnZSA9IGZ1bmN0aW9uKFVzZXJJZCxQaG90 b0lEKSB7CiAgICB2YXIgcGFyYW1zID0gbmV3IE9iamVjdCgpOyBwYXJhbXNbJ3Bs Y2tQZXJzb25hUGFnZSddID0gJ1BlcnNvbmFSZWNlbnRHYWxsZXJ5UGhvdG8nOyBw YXJhbXNbJ3BsY2tVc2VySWQnXSA9IFVzZXJJZDsKICAgICAgICAgICAgcGFyYW1z Wyd1c2VySWQnXSA9IFVzZXJJZDsKICAgICAgICBwYXJhbXNbJ3BsY2tQaG90b0lE J10gPSBQaG90b0lEOwogICAgdGhpcy5SZWxvYWRQYWdlKHBhcmFtcyk7CiAgICBy ZXR1cm4gZmFsc2U7Cn0KCnZhciBmYkhlbHBEaWFsb2dUaW1lb3V0OwpTaXRlTGlm ZVByb3h5LnByb3RvdHlwZS5TaG93RmFjZWJvb2tIZWxwRGlhbG9nID0gZnVuY3Rp b24oaWNvbil7Cgl2YXIgeCA9IDA7Cgl2YXIgeSA9IGljb24uY2xpZW50SGVpZ2h0 LzI7CgoJZG8gewoJCXggKz0gaWNvbi5vZmZzZXRMZWZ0OwoJCXkgKz0gaWNvbi5v ZmZzZXRUb3A7Cgl9Cgl3aGlsZShpY29uID0gaWNvbi5vZmZzZXRQYXJlbnQpOwoK CXZhciBmYl9kaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUGVyc29uYV9G YWNlYm9va0hlbHBEaWFsb2ciKTsKCQoJZmJfZGl2LnN0eWxlLnBvc2l0aW9uID0g ImFic29sdXRlIjsKCWZiX2Rpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCQoJ Ly8gcG9zaXRpb24gZGl2IHRvIHRoZSBsZWZ0IG9mIGljb24uCgl2YXIgbmV3WCA9 IHggLSBmYl9kaXYuY2xpZW50V2lkdGg7Cgl2YXIgbmV3WSA9IHkgLSBNYXRoLmZs b29yKGZiX2Rpdi5jbGllbnRIZWlnaHQvMik7CgkKCWZiX2Rpdi5zdHlsZS5sZWZ0 ID0gbmV3WCArICJweCI7CglmYl9kaXYuc3R5bGUudG9wID0gbmV3WSArICJweCI7 CgoJcmV0dXJuIGZhbHNlOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5IaWRl RmFjZWJvb2tIZWxwRGlhbG9nID0gZnVuY3Rpb24oKXsKCXZhciBmYl9kaXYgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUGVyc29uYV9GYWNlYm9va0hlbHBEaWFs b2ciKTsKCWZiX2Rpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwp9CgpTaXRlTGlm ZVByb3h5LnByb3RvdHlwZS5Db3B5UnNzVXJsVG9DbGlwYm9hcmQgPSBmdW5jdGlv bigpewkKCXJzc1VybCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyc3NVcmwi KTsKCWNvcHkocnNzVXJsKTsKCQoJcmV0dXJuIGZhbHNlOwp9CgovKiBub3RlOiBk b2Vzbid0IHdvcmsgd2l0aCBmbGFzaCAxMCAqLwpmdW5jdGlvbiBjb3B5KGluRWxl bWVudCkgewogIGlmIChpbkVsZW1lbnQuY3JlYXRlVGV4dFJhbmdlKSB7CiAgICB2 YXIgcmFuZ2UgPSBpbkVsZW1lbnQuY3JlYXRlVGV4dFJhbmdlKCk7CiAgICBpZiAo cmFuZ2UpCiAgICAgIHJhbmdlLmV4ZWNDb21tYW5kKCdDb3B5Jyk7CiAgfSBlbHNl IHsKICAgIHZhciBmbGFzaGNvcGllciA9ICdmbGFzaGNvcGllcic7CiAgICBpZigh ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmxhc2hjb3BpZXIpKSB7CiAgICAgIHZh ciBkaXZob2xkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAg ICAgZGl2aG9sZGVyLmlkID0gZmxhc2hjb3BpZXI7CiAgICAgIGRvY3VtZW50LmJv ZHkuYXBwZW5kQ2hpbGQoZGl2aG9sZGVyKTsKICAgIH0KICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKGZsYXNoY29waWVyKS5pbm5lckhUTUwgPSAnJzsKICAgIHZh ciBkaXZpbmZvID0gJzxlbWJlZCBzcmM9IicgKyBnU2l0ZUxpZmUuX19iYXNlVXJs ICsgJy9Db250ZW50L3N3Zi9jbGlwYm9hcmQuc3dmIiBGbGFzaFZhcnM9ImNsaXBi b2FyZD0nK2VuY29kZVVSSUNvbXBvbmVudChpbkVsZW1lbnQudmFsdWUpKyciIHdp ZHRoPSIwIiBoZWlnaHQ9IjAiIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZl LWZsYXNoIj48L2VtYmVkPic7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChm bGFzaGNvcGllcikuaW5uZXJIVE1MID0gZGl2aW5mbzsKICB9Cn0KClNpdGVMaWZl UHJveHkucHJvdG90eXBlLlVwZGF0ZUV4dGVybmFsVXNlcklkID0gZnVuY3Rpb24o RXh0ZXJuYWxTaXRlTmFtZSwgRXh0ZXJuYWxTaXRlVXNlcklkKSB7Cgl2YXIgYWRQ YXJhbSA9IHRoaXMuQmFzZUFkUGFyYW0oKTsKCWFkUGFyYW0gKz0gIiZleHRlcm5h bFNpdGVOYW1lPSIgKyBFeHRlcm5hbFNpdGVOYW1lOwoJYWRQYXJhbSArPSAiJmV4 dGVybmFsU2l0ZVVzZXJJZD0iICsgRXh0ZXJuYWxTaXRlVXNlcklkOwoJcmV0dXJu IHRoaXMuUGVyc29uYVNlbmQoJ1VwZGF0ZUV4dGVybmFsVXNlcklkJywgJ3BlcnNv bmFIRGVzdCcsICdwZXJzb25hU2NyaXB0JywgYWRQYXJhbSk7Cn0KCgoKCgoKU2l0 ZUxpZmVQcm94eS5wcm90b3R5cGUuU29saWNpdFBob3RvID0gZnVuY3Rpb24oZ2Fs bGVyeUlEKSB7Cgl2YXIgZWxlbWVudElkID0gJ3BsY2tzb2xpY2l0JyArIGdhbGxl cnlJRDsKCXRoaXMuV3JpdGVEaXYoZWxlbWVudElkKTsKICAgIHZhciB1cmwgPSB0 aGlzLl9fYmFzZVVybCArICcvUGhvdG8vU29saWNpdFBob3RvP3BsY2tFbGVtZW50 SWQ9JyArIGVsZW1lbnRJZCArICcmcGxja0dhbGxlcnlJRD0nICtnYWxsZXJ5SUQ7 CiAgICB0aGlzLl9fU2VuZCh1cmwpOwogICAgcmV0dXJuIGZhbHNlOwp9CgpTaXRl TGlmZVByb3h5LnByb3RvdHlwZS5QaG90b1VwbG9hZCA9IGZ1bmN0aW9uKCkgewoJ dmFyIGVsZW1lbnRJZCA9ICdwbGNrc3VibWl0JzsKCXRoaXMuV3JpdGVEaXYoZWxl bWVudElkKTsKICAgIHZhciBnYWxsZXJ5SUQgPSBnU2l0ZUxpZmUuR2V0UGFyYW1l dGVyKCdwbGNrR2FsbGVyeUlEJyk7CgogICAgdmFyIHVybCA9IHRoaXMuX19iYXNl VXJsICsgJy9QaG90by9QaG90b1VwbG9hZD9wbGNrRWxlbWVudElkPScgKyBlbGVt ZW50SWQgKyAnJnBsY2tHYWxsZXJ5SUQ9JyArZ2FsbGVyeUlEOwogICAgdGhpcy5f X1NlbmQodXJsKTsKICAgIHJldHVybiBmYWxzZTsKfQoKU2l0ZUxpZmVQcm94eS5w cm90b3R5cGUuUHVibGljR2FsbGVyeSA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGVs ZW1lbnRJZCA9ICdwbGNrZ2FsbGVyeSc7Cgl0aGlzLldyaXRlRGl2KGVsZW1lbnRJ ZCk7Cgl2YXIgZ2FsbGVyeUlEID0gZ1NpdGVMaWZlLkdldFBhcmFtZXRlcigncGxj a0dhbGxlcnlJRCcpOwogICAgdmFyIHBhZ2VOdW0gPSBnU2l0ZUxpZmUuR2V0UGFy YW1ldGVyKCdwbGNrUGFnZU51bScpOwoJCiAgICB2YXIgdXJsID0gdGhpcy5fX2Jh c2VVcmwgKyAnL1Bob3RvL1B1YmxpY0dhbGxlcnk/cGxja0VsZW1lbnRJZD0nICsg ZWxlbWVudElkICsgJyZwbGNrR2FsbGVyeUlEPScgK2dhbGxlcnlJRCArICcmcGxj a1BhZ2VOdW09JyArcGFnZU51bTsKCXRoaXMuX19TZW5kKHVybCk7CglyZXR1cm4g ZmFsc2U7Cn0KCgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5HYWxsZXJ5UGhvdG8g PSBmdW5jdGlvbigpIHsKCXZhciBlbGVtZW50SWQgPSAncGxja3Bob3RvJzsKCXRo aXMuV3JpdGVEaXYoZWxlbWVudElkKTsKICAgIHZhciBwaG90b2lkID0gZ1NpdGVM aWZlLkdldFBhcmFtZXRlcigncGxja1Bob3RvSUQnKTsKICAgIHZhciBmaW5kQ29t bWVudEtleSA9IGdTaXRlTGlmZS5SZWFkRmluZENvbW1lbnRLZXkobnVsbCwgIndp ZGdldDpnYWxsZXJ5UGhvdG8iKTsKCiAgICB2YXIgdXJsID0gdGhpcy5fX2Jhc2VV cmwgKyAnL1Bob3RvL0dhbGxlcnlQaG90bz9wbGNrRWxlbWVudElkPScgKyBlbGVt ZW50SWQgKyAnJnBsY2tQaG90b0lEPScgK3Bob3RvaWQgKyAnJnBsY2tGaW5kQ29t bWVudEtleT0nICsgZmluZENvbW1lbnRLZXk7Cgl0aGlzLl9fU2VuZCh1cmwsIG51 bGwsICJ3aWRnZXQ6Z2FsbGVyeVBob3RvIik7CglyZXR1cm4gZmFsc2U7Cn0KClNp dGVMaWZlUHJveHkucHJvdG90eXBlLlB1YmxpY0dhbGxlcmllcyA9IGZ1bmN0aW9u KCkgewoJdmFyIGVsZW1lbnRJZCA9ICdwbGNrZ2FsbGVyaWVzJzsKCXRoaXMuV3Jp dGVEaXYoZWxlbWVudElkKTsKICAgIHZhciBwYWdlTnVtID0gZ1NpdGVMaWZlLkdl dFBhcmFtZXRlcigncGxja1BhZ2VOdW0nKSA/ICBnU2l0ZUxpZmUuR2V0UGFyYW1l dGVyKCdwbGNrUGFnZU51bScpIDogIjAiOwoKICAgIHZhciB1cmwgPSB0aGlzLl9f YmFzZVVybCArICcvUGhvdG8vUHVibGljR2FsbGVyaWVzP3BsY2tFbGVtZW50SWQ9 JyArIGVsZW1lbnRJZCArICcmcGxja1BhZ2VOdW09JyArIHBhZ2VOdW07CiAgICB0 aGlzLl9fU2VuZCh1cmwpOwogICAgcmV0dXJuIGZhbHNlOwp9CgpTaXRlTGlmZVBy b3h5LnByb3RvdHlwZS5QaG90b1JlY29tbWVuZCA9IGZ1bmN0aW9uKHRhcmdldGlk LHJlY29tbWVuZERpdixpc0dhbGxlcnkpIHsKICAgIHZhciB1cmwgPSB0aGlzLl9f YmFzZVVybCArICcvUGhvdG8vUmVjb21tZW5kP3BsY2tFbGVtZW50SWQ9JyArIHJl Y29tbWVuZERpdiArICcmcGxja1RhcmdldGlkPScgK3RhcmdldGlkICsgJyZwbGNr SXNHYWxsZXJ5PScgK2lzR2FsbGVyeSA7CiAgICB0aGlzLl9fU2VuZCh1cmwpOwog ICAgcmV0dXJuIGZhbHNlOwp9CgovLzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny aXB0Ij4KCi8vcGFyZW50S2V5VHlwZSBjYW4gYmUgYW55IGdTaXRlTGlmZS5LZXlU eXBlKiB2YWx1ZSwgYnV0IGZvciBpbmNsdWRpbmcgdGhpcyB3aWRnZXQgb24gYW4g YXJ0aWNsZSBwYWdlIHRoZSB2YWx1ZSBpcyAKLy90eXBpY2FsbHkgZ1NpdGVMaWZl LktleVR5cGVFeHRlcm5hbFJlc291cmNlClNpdGVMaWZlUHJveHkucHJvdG90eXBl LkNvbW1lbnRzID0gZnVuY3Rpb24ocGFyZW50S2V5VHlwZSwgcGFyZW50S2V5LCBw YWdlU2l6ZSwgc29ydCwgc2hvd1RhYnMsIHRhYiwgcGFyZW50VXJsLCBwYXJlbnRU aXRsZSwgcmVmcmVzaFBhZ2UsIGZpbmRDb21tZW50S2V5KQp7CglyZXR1cm4gdGhp cy5Db21tZW50c0ludGVybmFsKHBhcmVudEtleVR5cGUsIHBhcmVudEtleSwgcGFn ZVNpemUsIHNvcnQsIHNob3dUYWJzLCB0YWIsIHBhcmVudFVybCwgcGFyZW50VGl0 bGUsIGZhbHNlLCBmYWxzZSwgbnVsbCwgcmVmcmVzaFBhZ2UsIGZpbmRDb21tZW50 S2V5KTsKfTsKClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkNvbW1lbnRzSW5wdXQg PSBmdW5jdGlvbihwYXJlbnRLZXlUeXBlLCBwYXJlbnRLZXksIHJlZGlyZWN0VG9V cmwpCnsgICAgCiAgICByZXR1cm4gdGhpcy5Db21tZW50c0ludGVybmFsKHBhcmVu dEtleVR5cGUsIHBhcmVudEtleSwgbnVsbCwgIlRpbWVTdGFtcERlc2NlbmRpbmci LCBudWxsLCBudWxsLCBudWxsLCBudWxsLCB0cnVlLCBmYWxzZSwgcmVkaXJlY3RU b1VybCwgZmFsc2UsIG51bGwpOwp9OwoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUu Q29tbWVudHNPdXRwdXQgPSBmdW5jdGlvbihwYXJlbnRLZXlUeXBlLCBwYXJlbnRL ZXksIHJlZnJlc2hQYWdlLCBwYWdlU2l6ZSwgc29ydE9yZGVyKQp7CiAgICBzb3J0 T3JkZXIgPSBzb3J0T3JkZXIgfHwgIlRpbWVTdGFtcERlc2NlbmRpbmciOwoJcmV0 dXJuIHRoaXMuQ29tbWVudHNJbnRlcm5hbChwYXJlbnRLZXlUeXBlLCBwYXJlbnRL ZXksIHBhZ2VTaXplLCBzb3J0T3JkZXIsIG51bGwsIG51bGwsIG51bGwsIG51bGws IGZhbHNlLCB0cnVlLCBudWxsLCByZWZyZXNoUGFnZSwgbnVsbCk7Cn0KClNpdGVM aWZlUHJveHkucHJvdG90eXBlLkNvbW1lbnRzUmVmcmVzaCA9IGZ1bmN0aW9uKHBh cmVudEtleVR5cGUsIHBhcmVudEtleSwgcGFnZVNpemUsIHNvcnRPcmRlcikKewog ICAgaWYgKCFwYXJlbnRLZXkgfHwgcGFyZW50S2V5ID09ICIiKSB0aHJvdyAiTXVz dCBwYXNzIGluIHZhbHVlIGZvciBwYXJlbnRLZXkhIjsKICAgIHJldHVybiB0aGlz LkNvbW1lbnRzSW50ZXJuYWwocGFyZW50S2V5VHlwZSwgcGFyZW50S2V5LCBwYWdl U2l6ZSwgc29ydE9yZGVyLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBmYWxzZSwg ZmFsc2UsIG51bGwsIHRydWUsIG51bGwpOwp9CgpTaXRlTGlmZVByb3h5LnByb3Rv dHlwZS5Db21tZW50c0ludGVybmFsID0gZnVuY3Rpb24ocGFyZW50S2V5VHlwZSwg cGFyZW50S2V5LCBwYWdlU2l6ZSwgc29ydCwgc2hvd1RhYnMsIHRhYiwgcGFyZW50 VXJsLCBwYXJlbnRUaXRsZSwgaGlkZVZpZXcsIGhpZGVJbnB1dCwgcmVkaXJlY3RU b1VybCwgcmVmcmVzaFBhZ2UsIGZpbmRDb21tZW50S2V5KQp7CiAgICB2YXIgZGl2 SWQgPSAnQ29tbWVudHNfQ29udGFpbmVyJzsKICAgIGlmKHRoaXMubnVtQ29tbWVu dHNXaWRnZXRzKXsgZGl2SWQgKz0gdGhpcy5udW1Db21tZW50c1dpZGdldHMrKzsg fSBlbHNlIHsgdGhpcy5udW1Db21tZW50c1dpZGdldHMgPSAxOyB9CiAgICAKICAg IGRvY3VtZW50LndyaXRlKCI8ZGl2IGlkPSciICsgZGl2SWQgKyAiJz48L2Rpdj4i KTsKICAgIAogICAgcmV0dXJuIHRoaXMuR2V0Q29tbWVudHMocGFyZW50S2V5VHlw ZSwgcGFyZW50S2V5LCBwYXJlbnRVcmwsIHBhcmVudFRpdGxlLCAwLCBwYWdlU2l6 ZSwgc29ydCwgc2hvd1RhYnMsIHRhYiwgaGlkZVZpZXcsIGhpZGVJbnB1dCwgcmVk aXJlY3RUb1VybCwgcmVmcmVzaFBhZ2UsIGRpdklkLCBmaW5kQ29tbWVudEtleSk7 Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlJlYWRGaW5kQ29tbWVudEtleSA9 IGZ1bmN0aW9uKHBsY2tGaW5kQ29tbWVudEtleSwgZXZlbnROYW1lKXsKCXZhciBm aW5kQ29tbWVudEtleSA9IHBsY2tGaW5kQ29tbWVudEtleSB8fCBnU2l0ZUxpZmUu R2V0UGFyYW1ldGVyKCJwbGNrRmluZENvbW1lbnRLZXkiKSB8fCAiIjsKICAgIGlm KGZpbmRDb21tZW50S2V5ID09ICJub25lIil7CgkJZmluZENvbW1lbnRLZXkgPSAi IjsKICAgIH0KICAgIAogICAgaWYoZmluZENvbW1lbnRLZXkgIT0gIiIgJiYgZXZl bnROYW1lKXsKCQl0aGlzLkFkZEV2ZW50SGFuZGxlcihldmVudE5hbWUsIGZ1bmN0 aW9uKCl7Z1NpdGVMaWZlLlNjcm9sbFRvQ29tbWVudChmaW5kQ29tbWVudEtleSl9 KTsKICAgIH0KICAgIAogICAgcmV0dXJuIGZpbmRDb21tZW50S2V5Owp9CgpTaXRl TGlmZVByb3h5LnByb3RvdHlwZS5HZXRDb21tZW50cyA9IGZ1bmN0aW9uKHBhcmVu dEtleVR5cGUsIHBhcmVudEtleSwgcGFyZW50VXJsLCBwYXJlbnRUaXRsZSwgcGFn ZSwgcGFnZVNpemUsIHNvcnQsIHNob3dUYWJzLCB0YWIsIGhpZGVWaWV3LCBoaWRl SW5wdXQsIHJlZGlyZWN0VG8sIHJlZnJlc2hQYWdlLCBkaXZJZCwgZmluZENvbW1l bnRLZXkpCnsKICAgIHBhcmVudEtleVR5cGUgPSBwYXJlbnRLZXlUeXBlIHx8ICJF eHRlcm5hbFJlc291cmNlIjsKICAgIHBhcmVudFVybCA9IHBhcmVudFVybCB8fCBn U2l0ZUxpZmUuX19TdHJpcEFuY2hvckZyb21Vcmwod2luZG93LmxvY2F0aW9uLmhy ZWYpOwogICAgcGFyZW50VXJsID0gZ1NpdGVMaWZlLkVzY2FwZVZhbHVlKHBhcmVu dFVybCk7CiAgICBwYXJlbnRLZXkgPSBwYXJlbnRLZXkgfHwgZ1NpdGVMaWZlLl9f U3RyaXBBbmNob3JGcm9tVXJsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKICAgIHBh cmVudFRpdGxlID0gcGFyZW50VGl0bGUgfHwgZ1NpdGVMaWZlLkVzY2FwZVZhbHVl KGdTaXRlTGlmZS5UcmltKGRvY3VtZW50LnRpdGxlKSk7CiAgICBwYWdlID0gcGFn ZSB8fCBnU2l0ZUxpZmUuR2V0UGFyYW1ldGVyKCdwbGNrQ3VycmVudFBhZ2UnKSB8 fCAwOwogICAgcGFnZVNpemUgPSBwYWdlU2l6ZSB8fCAxMDsKICAgIHNvcnQgPSBz b3J0IHx8ICJUaW1lU3RhbXBBc2NlbmRpbmciOwogICAgc2hvd1RhYnMgPSBzaG93 VGFicyB8fCBmYWxzZTsKICAgIHRhYiA9IHRhYiB8fCAiTW9zdFJlY2VudCI7CiAg ICBoaWRlVmlldyA9IGhpZGVWaWV3IHx8IGZhbHNlOwogICAgaGlkZUlucHV0ID0g aGlkZUlucHV0IHx8IGZhbHNlOwogICAgcmVkaXJlY3RUbyA9Z1NpdGVMaWZlLkVz Y2FwZVZhbHVlKHJlZGlyZWN0VG8pIHx8ICIiOwogICAgcmVmcmVzaFBhZ2UgPSBy ZWZyZXNoUGFnZSB8fCBmYWxzZTsKICAgIGZpbmRDb21tZW50S2V5ID0gZ1NpdGVM aWZlLlJlYWRGaW5kQ29tbWVudEtleShmaW5kQ29tbWVudEtleSwgIndpZGdldDpj b21tZW50cyIpOwogICAgCiAgICB2YXIgdXJsID0gdGhpcy5fX2Jhc2VVcmwgKyAK ICAgICAgICAnL0NvbW1lbnQvR2V0UGFnZS5yYWlscz9wbGNrVGFyZ2V0S2V5VHlw ZT0nKyBwYXJlbnRLZXlUeXBlICsgCiAgICAgICAgJyZwbGNrVGFyZ2V0S2V5PScg KyBlc2NhcGUocGFyZW50S2V5KSArIAogICAgICAgICImcGxja0N1cnJlbnRQYWdl PSIgKyBwYWdlICsgCiAgICAgICAgIiZwbGNrSXRlbXNQZXJQYWdlPSIgKyBwYWdl U2l6ZSArIAogICAgICAgICImcGxja1NvcnQ9IiArIHNvcnQgKyAKICAgICAgICAi JnBsY2tFbGVtZW50SWQ9IiArIGRpdklkICsKICAgICAgICAiJnBsY2tUYXJnZXRV cmw9IiArIHBhcmVudFVybCArCiAgICAgICAgIiZwbGNrVGFyZ2V0VGl0bGU9IiAr IHBhcmVudFRpdGxlICsKICAgICAgICAiJnBsY2tIaWRlVmlldz0iICsgaGlkZVZp ZXcgKwogICAgICAgICImcGxja0hpZGVJbnB1dD0iICsgaGlkZUlucHV0ICsKICAg ICAgICAiJnBsY2tSZWZyZXNoUGFnZT0iICsgcmVmcmVzaFBhZ2UgKwogICAgICAg ICImcGxja1JlZGlyZWN0VG9Vcmw9IiArIHJlZGlyZWN0VG8gKwogICAgICAgICIm cGxja0ZpbmRDb21tZW50S2V5PSIgKyBmaW5kQ29tbWVudEtleTsKCiAgICBpZiAo c2hvd1RhYnMpIHsKICAgICAgICB1cmwgPSB1cmwgKyAiJnBsY2tTaG93VGFicz10 cnVlJnBsY2tUYWI9IiArIHRhYjsKICAgIH0KICAgIHRoaXMuX19TZW5kKHVybCwg bnVsbCwgIndpZGdldDpjb21tZW50cyIpOwogICAgcmV0dXJuIGZhbHNlOwp9OwoK U2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuV2FpdEZvckltYWdlcyA9IGZ1bmN0aW9u KGNhbGxiYWNrKXsKCXZhciBhbGxJbWdzID0gZG9jdW1lbnQuaW1hZ2VzOwoJCn0K ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlNjcm9sbFRvQ29tbWVudCA9IGZ1bmN0 aW9uKGNvbW1lbnRLZXkpewoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKXsKCQl3aW5k b3cubG9jYXRpb24uaGFzaCA9ICIjIiArIGNvbW1lbnRLZXk7Cgl9LCAzMDApOwp9 CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5CbG9nID0gZnVuY3Rpb24oQmxvZ0lk KSB7CiAgICB0aGlzLldyaXRlRGl2KCJibG9nRGVzdCIsICJQZXJzb25hX01haW4i KTsKICAgIHZhciBhY3Rpb24gPSB0aGlzLkdldFBhcmFtZXRlcigicGxja0Jsb2dQ YWdlIik7CiAgICAvLyBJZiBCbG9nSWQgd2FzIG5vdCBleHBsaWNpdGx5IHN0YXRl ZCwgZ3JhYiBpdCBmcm9tIHRoZSBVUkwgcGFyYW1ldGVyLi4uCiAgICBpZighQmxv Z0lkKXsKCQlCbG9nSWQgPSB0aGlzLkdldFBhcmFtZXRlcigncGxja0Jsb2dJZCcp OwogICAgfQogICAgCiAgICAgICAgCglpZihhY3Rpb24gJiYgYWN0aW9uICE9ICJC bG9nIiAmJiAodHlwZW9mIHRoaXNbYWN0aW9uXSA9PSAnZnVuY3Rpb24nKSl7Cgkg cmV0dXJuIHRoaXNbYWN0aW9uXShCbG9nSWQpOwoJfWVsc2V7CgkgICB2YXIgQWRQ YXJhbXMgPSB0aGlzLkdldFBhcmFtZXRlcigncGxja0N1cnJlbnRQYWdlJykgPyAn cGxja0N1cnJlbnRQYWdlPScgKyB0aGlzLkdldFBhcmFtZXRlcigncGxja0N1cnJl bnRQYWdlJykgOiAiIjsKCSAgIHJldHVybiB0aGlzLkJsb2dTZW5kKCdCbG9nJywg J0Jsb2cnLCAnYmxvZ0Rlc3QnLCAnYmxvZ1NjcmlwdCcsIEJsb2dJZCwgQWRQYXJh bXMpOwoJfQp9ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkxvYWRCbG9nUGFnZSA9 IGZ1bmN0aW9uKFBhZ2VOYW1lLCBCbG9nSWQpIHsKICAgIHZhciBwYXJhbXMgPSBu ZXcgT2JqZWN0KCk7IHBhcmFtc1sncGxja0Jsb2dQYWdlJ10gPSBQYWdlTmFtZTsg cGFyYW1zWydwbGNrQmxvZ0lkJ10gPSBCbG9nSWQ7IAogICAgZm9yKGlpPTI7IGlp PCB0aGlzLkxvYWRCbG9nUGFnZS5hcmd1bWVudHMubGVuZ3RoOyBpaSs9MikgeyBw YXJhbXNbdGhpcy5Mb2FkQmxvZ1BhZ2UuYXJndW1lbnRzW2lpXV0gPSB0aGlzLkxv YWRCbG9nUGFnZS5hcmd1bWVudHNbaWkrMV07fQogICAgdGhpcy5SZWxvYWRQYWdl KHBhcmFtcyk7CiAgICByZXR1cm4gZmFsc2U7Cn0KClNpdGVMaWZlUHJveHkucHJv dG90eXBlLkJsb2dWaWV3RWRpdCA9IGZ1bmN0aW9uKGJsb2dJZCkgewogICByZXR1 cm4gdGhpcy5CbG9nU2VuZChudWxsLCAnQmxvZ1ZpZXdFZGl0JywgbnVsbCwgbnVs bCwgYmxvZ0lkKTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuQmxvZ1Bvc3RD cmVhdGUgPSBmdW5jdGlvbihibG9nSWQpIHsKICAgcmV0dXJuIHRoaXMuQmxvZ1Nl bmQobnVsbCwgJ0Jsb2dQb3N0Q3JlYXRlJywgbnVsbCwgbnVsbCwgYmxvZ0lkLCAn cGxja1JlZGlyZWN0VXJsPScgKyB0aGlzLkdldFBhcmFtZXRlcigicGxja1JlZGly ZWN0VXJsIikpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5CbG9nUGVuZGlu Z0NvbW1lbnRzID0gZnVuY3Rpb24oYmxvZ0lkLCBjdXJyZW50UGFnZSkgewogICBp ZiggIWN1cnJlbnRQYWdlKSBjdXJyZW50UGFnZSA9IDA7CiAgIHJldHVybiB0aGlz LkJsb2dTZW5kKG51bGwsICdCbG9nUGVuZGluZ0NvbW1lbnRzJywgbnVsbCwgbnVs bCwgYmxvZ0lkLCAncGxja0N1cnJlbnRQYWdlPScrY3VycmVudFBhZ2UpOwp9CgpT aXRlTGlmZVByb3h5LnByb3RvdHlwZS5CbG9nU2V0dGluZ3MgPSBmdW5jdGlvbihi bG9nSWQpIHsKICAgcmV0dXJuIHRoaXMuQmxvZ1NlbmQobnVsbCwgJ0Jsb2dTZXR0 aW5ncycsIG51bGwsIG51bGwsIGJsb2dJZCk7Cn0KClNpdGVMaWZlUHJveHkucHJv dG90eXBlLkJsb2dFZGl0UG9zdCA9IGZ1bmN0aW9uKGJsb2dJZCwgY29udHJvbGxl ciwgZGl2LCBzY3JpcHQsIHBvc3RJZCwgc2VsZWN0aW9uLCBkYXlzQmFjaykgewoJ cmV0dXJuIHRoaXMuQmxvZ1NlbmQoY29udHJvbGxlciwgJ0Jsb2dQb3N0RWRpdCcs IGRpdiwgc2NyaXB0LCBibG9nSWQsICdwbGNrUG9zdElkPScgKyBwb3N0SWQgKyAn JnBsY2tTZWxlY3Rpb249JyArIHNlbGVjdGlvbiArICcmcGxja0RheXNCYWNrPScg KyBkYXlzQmFjayArICcmcGxja1JlZGlyZWN0VXJsPScgKyB0aGlzLkVzY2FwZVZh bHVlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSk7Cn0KClNpdGVMaWZlUHJveHkucHJv dG90eXBlLkJsb2dSZW1vdmVQb3N0ID0gZnVuY3Rpb24oYmxvZ0lkLCBjb250cm9s bGVyLCBkaXYsIHNjcmlwdCwgcG9zdElkLCBzZWxlY3Rpb24sIGRheXNCYWNrLCBj b25maXJtTXNnKSB7CiAgaWYgKGNvbmZpcm0oY29uZmlybU1zZykgPT0gdHJ1ZSkg ewogICAgcmV0dXJuIHRoaXMuQmxvZ1NlbmQoY29udHJvbGxlciwgJ0Jsb2dSZW1v dmVQb3N0JywgZGl2LCBzY3JpcHQsIGJsb2dJZCwgJ3BsY2tQb3N0SWQ9JyArIHBv c3RJZCArICcmcGxja1NlbGVjdGlvbj0nICsgc2VsZWN0aW9uICsgJyZwbGNrRGF5 c0JhY2s9JyArIGRheXNCYWNrICk7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKU2l0 ZUxpZmVQcm94eS5wcm90b3R5cGUuQmxvZ1ZpZXdQb3N0ID0gZnVuY3Rpb24oYmxv Z0lkLCBwb3N0SWQsIHNlbGVjdGlvbiwgZGF5c0JhY2spIHsKICAgIGlmKCFwb3N0 SWQgKSB7IHBvc3RJZCA9IGdTaXRlTGlmZS5HZXRQYXJhbWV0ZXIoJ3BsY2tQb3N0 SWQnKTsgfQogICAgdmFyIGZpbmRDb21tZW50S2V5ID0gZ1NpdGVMaWZlLlJlYWRG aW5kQ29tbWVudEtleShudWxsLCAid2lkZ2V0OmJsb2ciKTsKCXJldHVybiB0aGlz LkJsb2dTZW5kKG51bGwsICdCbG9nVmlld1Bvc3QnLCBudWxsLCBudWxsLCBibG9n SWQsICdwbGNrUG9zdElkPScgKyBwb3N0SWQgKyAnJnBsY2tTZWxlY3Rpb249JyAr IHNlbGVjdGlvbiArICcmcGxja0RheXNCYWNrPScgKyBkYXlzQmFjayArICcmcGxj a0NvbW1lbnRTb3J0T3JkZXI9JyArIHRoaXMuR2V0UGFyYW1ldGVyKCdwbGNrQ29t bWVudFNvcnRPcmRlcicpICsgJyZwbGNrRmluZENvbW1lbnRLZXk9JyArIGZpbmRD b21tZW50S2V5KTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuQmxvZ1ZpZXdN b250aCA9IGZ1bmN0aW9uKGJsb2dJZCwgbW9udGhJZCkgewoJaWYoIW1vbnRoSWQg KSB7IG1vbnRoSWQgPSBnU2l0ZUxpZmUuR2V0UGFyYW1ldGVyKCdwbGNrTW9udGhJ ZCcpOyB9Cgl2YXIgQWRQYXJhbXMgPSAncGxja01vbnRoSWQ9JyArIG1vbnRoSWQ7 CglBZFBhcmFtcyArPSB0aGlzLkdldFBhcmFtZXRlcigncGxja0N1cnJlbnRQYWdl JykgPyAnJnBsY2tDdXJyZW50UGFnZT0nICsgdGhpcy5HZXRQYXJhbWV0ZXIoJ3Bs Y2tDdXJyZW50UGFnZScpIDogIiI7CglyZXR1cm4gdGhpcy5CbG9nU2VuZChudWxs LCAnQmxvZ1ZpZXdNb250aCcsIG51bGwsIG51bGwsIGJsb2dJZCwgIEFkUGFyYW1z KTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuQWRkQmxvZ1dhdGNoSXRlbT0g ZnVuY3Rpb24oYmxvZ0lkLCBjb250cm9sbGVyLCBzY3JpcHQsIFVybCwgV2F0Y2hL ZXkpIHsKICAgcmV0dXJuIHRoaXMuQmxvZ1NlbmQoY29udHJvbGxlciwgJ0FkZEJs b2dXYXRjaCcsICdwbGNrQmxvZ1dhdGNoRGl2Jywgc2NyaXB0LCBibG9nSWQsICdw bGNrV2F0Y2hLZXk9JyArIFdhdGNoS2V5ICsgJyZwbGNrV2F0Y2hVcmw9JyArIHRo aXMuRXNjYXBlVmFsdWUoVXJsKSk7Cn0KU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUu UmVtb3ZlQmxvZ1dhdGNoSXRlbT0gZnVuY3Rpb24oYmxvZ0lkLCBjb250cm9sbGVy LCBzY3JpcHQsIFdhdGNoS2V5KSB7CiAgIHJldHVybiB0aGlzLkJsb2dTZW5kKGNv bnRyb2xsZXIsICdSZW1vdmVCbG9nV2F0Y2gnLCAncGxja0Jsb2dXYXRjaERpdics IHNjcmlwdCwgYmxvZ0lkLCAncGxja1dhdGNoS2V5PScgKyBXYXRjaEtleSk7Cn0K ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkJsb2dWaWV3VGFnID0gZnVuY3Rpb24o YmxvZ0lkLCB0YWcpIHsKCWlmKCF0YWcgKSB7IHRhZyA9IGdTaXRlTGlmZS5HZXRQ YXJhbWV0ZXIoJ3BsY2tUYWcnKTsgfQoJdmFyIEFkUGFyYW1zID0gJ3BsY2tUYWc9 JyArIHRhZzsKCUFkUGFyYW1zICs9IHRoaXMuR2V0UGFyYW1ldGVyKCdwbGNrQ3Vy cmVudFBhZ2UnKSA/ICcmcGxja0N1cnJlbnRQYWdlPScgKyB0aGlzLkdldFBhcmFt ZXRlcigncGxja0N1cnJlbnRQYWdlJykgOiAiIjsKCXJldHVybiB0aGlzLkJsb2dT ZW5kKG51bGwsICdCbG9nVmlld1RhZycsIG51bGwsIG51bGwsIGJsb2dJZCwgQWRQ YXJhbXMgKTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuQmxvZ1JlZnJlc2hW aWV3RWRpdExpc3Q9IGZ1bmN0aW9uKGJsb2dJZCwgY29udHJvbGxlciwgZGl2LCBz Y3JpcHQsIHNlbGVjdGlvbiwgZGF5c0JhY2spIHsKCXJldHVybiB0aGlzLkJsb2dT ZW5kKGNvbnRyb2xsZXIsICdCbG9nUmVmcmVzaFZpZXdFZGl0TGlzdCcsIGRpdiwg c2NyaXB0LCBibG9nSWQsICdwbGNrU2VsZWN0aW9uPScgKyBzZWxlY3Rpb24gKyAn JnBsY2tEYXlzQmFjaz0nICsgZGF5c0JhY2sgICk7Cn0KClNpdGVMaWZlUHJveHku cHJvdG90eXBlLkJsb2dTZW5kID0gZnVuY3Rpb24oY29udHJvbGxlciwgYXBpTmFt ZSwgZGVzdERpdiwgc2NyaXB0TmFtZSwgYmxvZ0lkLCBhZGRQYXJhbXMpewogICAg aWYoIWNvbnRyb2xsZXIpIGNvbnRyb2xsZXIgPSB0aGlzLkdldFBhcmFtZXRlcign cGxja0NvbnRyb2xsZXInKSB8fCAiQmxvZyI7CiAgICBpZighZGVzdERpdikgZGVz dERpdiA9IHRoaXMuR2V0UGFyYW1ldGVyKCdwbGNrRWxlbWVudElkJykgfHwgImJs b2dEZXN0IjsKICAgIGlmKCFzY3JpcHROYW1lKSBzY3JpcHROYW1lID0gdGhpcy5H ZXRQYXJhbWV0ZXIoJ3BsY2tTY3JpcHQnKSB8fCAiYmxvZ1NjcmlwdCI7CiAgICB2 YXIgdXJsID0gdGhpcy5fX2Jhc2VVcmwgKyAnLycgKyBjb250cm9sbGVyICsgJy8n ICsgYXBpTmFtZSArICc/cGxja0VsZW1lbnRJZD0nICsgZGVzdERpdiArICcmcGxj a0Jsb2dJZD0nICsgYmxvZ0lkICsgJyYnICsgYWRkUGFyYW1zOwogICAgdGhpcy5f X1NlbmQodXJsLCBzY3JpcHROYW1lLCAnd2lkZ2V0OmJsb2cnKTsKICAgIHJldHVy biBmYWxzZTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuUmVjb21tZW5kID0g ZnVuY3Rpb24oY29udHJvbGxlciwgaXRlbUlkLCByZWNvbW1lbmREaXYpIHsKICAg IHZhciB1cmwgPSB0aGlzLl9fYmFzZVVybCArICcvJyArIGNvbnRyb2xsZXIgKyAn L1JlY29tbWVuZD9wbGNrRWxlbWVudElkPScgKyByZWNvbW1lbmREaXYgKyAnJnBs Y2tJdGVtSWQ9JyAraXRlbUlkOwogICAgdGhpcy5fX1NlbmQodXJsKTsKICAgIHJl dHVybiBmYWxzZTsKfQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5CbG9nU2VsZWN0 UGVuZGluZ0NvbW1lbnRzID0gZnVuY3Rpb24oZm9ybUlkLCBjaGVja2VkKSB7ICAg CiAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZvcm1JZCk7 CiAgICBmb3IgKGk9MDsgaTxmb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAg ICAgICAgdmFyIGlucHV0ID0gZm9ybS5lbGVtZW50c1tpXTsgICAgICAgIAogICAg ICAgIGlucHV0LmNoZWNrZWQgPSBjaGVja2VkOwogICAgfQp9CgpTaXRlTGlmZVBy b3h5LnByb3RvdHlwZS5Gb3J1bXMgPSBmdW5jdGlvbihudW1QZXJQYWdlKSB7ICAg IAoJdGhpcy5Xcml0ZURpdigiZm9ydW1EZXN0IiwgIkZvcnVtX01haW4iKTsKCQoJ dmFyIGFjdGlvbiA9IHRoaXMuR2V0UGFyYW1ldGVyKCJwbGNrRm9ydW1QYWdlIik7 CgkJCgkJCgl2YXIgZm9ydW1JZCA9IHRoaXMuR2V0UGFyYW1ldGVyKCdwbGNrRm9y dW1JZCcpOyAgICAgICAgCglpZiAoZm9ydW1JZCkKCXsKCQlmb3J1bUlkID0gdW5l c2NhcGUoZm9ydW1JZCk7CgkJdmFyIGkgPSBmb3J1bUlkLmluZGV4T2YoJ0ZvcnVt OicpOwoJCWZvcnVtSWQgPSBmb3J1bUlkLnN1YnN0cmluZyhpKS5yZXBsYWNlKCc6 JywgJ18nKTsgICAgCgl9CgllbHNlCgl7CgkJdmFyIGRpc2N1c3Npb25JZCA9IHRo aXMuR2V0UGFyYW1ldGVyKCdwbGNrRGlzY3Vzc2lvbklkJyk7CgkJaWYgKGRpc2N1 c3Npb25JZCkKCQl7ICAgICAgICAgICAgICAgICAgICAKCQkJZGlzY3Vzc2lvbklk ID0gdW5lc2NhcGUoZGlzY3Vzc2lvbklkKTsKCQkJdmFyIGkgPSBkaXNjdXNzaW9u SWQuaW5kZXhPZignRm9ydW06Jyk7CgkJCXZhciBqID0gZGlzY3Vzc2lvbklkLmlu ZGV4T2YoJ0Rpc2N1c3Npb246Jyk7CgkJCWZvcnVtSWQgPSBkaXNjdXNzaW9uSWQu c3Vic3RyaW5nKGksIGopLnJlcGxhY2UoJzonLCAnXycpOwoJCX0KCX0KICAgIAoJ dmFyIGNhdGVnb3J5Q3VycmVudFBhZ2UgPSB0aGlzLkdldFBhcmFtZXRlcigncGxj a0NhdGVnb3J5Q3VycmVudFBhZ2UnKTsKCWlmKGFjdGlvbiAmJiAodHlwZW9mIHRo aXNbYWN0aW9uXSA9PSAnZnVuY3Rpb24nKSAmJiBhY3Rpb24gIT0gJ0ZvcnVtQ2F0 ZWdvcmllcycpewoJCXRoaXNbYWN0aW9uXSgpOwoJfQoJZWxzZSB7ICAgICAKCQlp ZiggbnVtUGVyUGFnZSA9PSBudWxsICl7CgkJCW51bVBlclBhZ2UgPSB0aGlzLkdl dFBhcmFtZXRlcigncGxja051bVBlclBhZ2UnKTsKCQl9CgkJdGhpcy5Gb3J1bUNh dGVnb3JpZXMobnVtUGVyUGFnZSwgY2F0ZWdvcnlDdXJyZW50UGFnZSk7Cgl9Cn0K ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlNldHVwQ2FsbGJhY2tzID0gZnVuY3Rp b24oKXsKCXZhciBhZFBhcmFtID0gIiI7CiAgICB2YXIgc2hvd0ZpcnN0VW5yZWFk ID0gdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tTaG93Rmlyc3RVbnJlYWQnKTsgCiAg ICB2YXIgZmluZFBvc3RLZXkgPSB0aGlzLkdldFBhcmFtZXRlcigncGxja0ZpbmRQ b3N0S2V5Jyk7CiAgICBpZihzaG93Rmlyc3RVbnJlYWQgIT0gbnVsbCl7CgkJYWRQ YXJhbSArPSAiJnBsY2tTaG93Rmlyc3RVbnJlYWQ9IiArIHNob3dGaXJzdFVucmVh ZDsKCQl0aGlzLkFkZEV2ZW50SGFuZGxlcigid2lkZ2V0OmZvcnVtcyIsIGZ1bmN0 aW9uKCl7Z1NpdGVMaWZlLkRpc2N1c3Npb25TY3JvbGxUb1Bvc3QoKX0pOwogICAg fQogICAgaWYoZmluZFBvc3RLZXkgIT0gbnVsbCAmJiBmaW5kUG9zdEtleSAhPSAi Iil7CgkJYWRQYXJhbSArPSAiJnBsY2tGaW5kUG9zdEtleT0iICsgZmluZFBvc3RL ZXk7CgkJdGhpcy5BZGRFdmVudEhhbmRsZXIoIndpZGdldDpmb3J1bXMiLCBmdW5j dGlvbigpe2dTaXRlTGlmZS5EaXNjdXNzaW9uU2Nyb2xsVG9Qb3N0KCl9KTsKICAg IH0KICAgIHZhciBzaG93TGF0ZXN0UG9zdCA9IHRoaXMuR2V0UGFyYW1ldGVyKCdw bGNrU2hvd0xhdGVzdFBvc3QnKTsgCiAgICBpZihzaG93TGF0ZXN0UG9zdCAhPSBu dWxsKXsKCQlhZFBhcmFtICs9ICImcGxja1Nob3dMYXRlc3RQb3N0PSIgKyBzaG93 TGF0ZXN0UG9zdDsKCQl0aGlzLkFkZEV2ZW50SGFuZGxlcigid2lkZ2V0OmZvcnVt cyIsIGZ1bmN0aW9uKCl7Z1NpdGVMaWZlLkRpc2N1c3Npb25TY3JvbGxUb1Bvc3Qo KX0pOwogICAgfQogICAgCiAgICB0aGlzLkFkZEV2ZW50SGFuZGxlcigid2lkZ2V0 OmZvcnVtcyIsIGZ1bmN0aW9uKCl7CgkJZ1NpdGVMaWZlLkRpc2N1c3Npb25TY2Fu Rm9yVW5yZWFkKCk7CgoJCS8vIGluc2VydCBwb2xsIHdpZGdldCBpZiB0aGUgZGlz Y3Vzc2lvbiBpcyBhIHBvbGwJCQoKCQl2YXIgbWUgPSB0aGlzOwoJCXZhciBpbnNl cnRQb2xsID0gZnVuY3Rpb24ocmV0cnlDb3VudCkgewoJCQlpZiAocmV0cnlDb3Vu dCA+IDEwKSB7CgkJCQlyZXR1cm47CgkJCX0KCQkJaWYgKHR5cGVvZihyZXRyeUNv dW50KSA9PT0gJ3VuZGVmaW5lZCcpIHsKCQkJCXJldHJ5Q291bnQgPSAwOwoJCQl9 CgkJCXZhciBwb2xsV2lkZ2V0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J0Rpc2N1c3Npb25fUG9sbF9Db250YWluZXInKTsKCQkJaWYgKHBvbGxXaWRnZXRE aXYpIHsKCQkJCXZhciBkaXNjdXNzaW9uS2V5ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ0Rpc2N1c3Npb25LZXlDb250YWluZXInKS52YWx1ZTsKCQkJCXNsR2V0 RGlzY3Vzc2lvblBvbGxPbktleSA9IGZ1bmN0aW9uKCkgewoJCQkJCXJldHVybiBk aXNjdXNzaW9uS2V5OwoJCQkJfQoJCQkJd2luZG93LnNsUG9sbFdpZGdldERpdiA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEaXNjdXNzaW9uX1BvbGwnKTsKCQkJ CXZhciBwb2xsSW5zZXJ0aW9uU2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgnc2NyaXB0Jyk7CgkJCQlwb2xsSW5zZXJ0aW9uU2NyaXB0LnR5cGUgPSAndGV4 dC9qYXZhc2NyaXB0JzsKCQkJCXBvbGxJbnNlcnRpb25TY3JpcHQuc3JjID0gImh0 dHA6Ly8iK2NvbW1lbnRzUm9vdFVybCsnL3ZlcjEuMC9Gb3J1bXMvUG9sbFBhcmFt cz9wbGNrRGlzY3Vzc2lvbklkPScgKyBkaXNjdXNzaW9uS2V5OwoJCQkJZG9jdW1l bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChw b2xsSW5zZXJ0aW9uU2NyaXB0KTsKCQkJfQoJCQllbHNlIHsKCQkJCXNldFRpbWVv dXQoZnVuY3Rpb24oKSB7CgkJCQkJaW5zZXJ0UG9sbChyZXRyeUNvdW50ICsgMSk7 CgkJCQl9LCAxMDApOwoJCQl9CgkJfQoJCWluc2VydFBvbGwoKTsKCiAgICAJfSk7 CgoJLy8gSGFjayBmb3IgdGhlIGFuY2hvciBvbiB0aGUgY2F0ZWdvcmllcyBwYWdl Li4uCgl0aGlzLkFkZEV2ZW50SGFuZGxlcigid2lkZ2V0OmZvcnVtcyIsIGZ1bmN0 aW9uKCl7CgkJaWYoZG9jdW1lbnQubG9jYXRpb24uaGFzaCl7CgkJCXZhciBmb28g PSBkb2N1bWVudC5sb2NhdGlvbi5oYXNoICsgIiI7CgkJCWRvY3VtZW50LmxvY2F0 aW9uLmhhc2ggPSBmb287CgkJfQoJfSk7CiAgICAKICAgIHJldHVybiBhZFBhcmFt Owp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bUNhdGVnb3JpZXMgPSBm dW5jdGlvbihudW1QZXJQYWdlLCBjYXRlZ29yeUN1cnJlbnRQYWdlKSB7CiAgICB2 YXIgcGFnZU51bSA9IHRoaXMuR2V0UGFyYW1ldGVyKCdwbGNrQ3VycmVudFBhZ2Un KTsgaWYocGFnZU51bSA9PSBudWxsKSBwYWdlTnVtID0gMDsKICAgIHZhciB1cmxQ YWdlSW5mb1N0ciA9ICcnOwogICAgdXJsUGFnZUluZm9TdHIgPSAnJnBsY2tOdW1Q ZXJQYWdlPScgKyBudW1QZXJQYWdlOyAgICAgICAgCiAgICB1cmxQYWdlSW5mb1N0 ciArPSAnJnBsY2tDYXRlZ29yeUN1cnJlbnRQYWdlPScgKyBjYXRlZ29yeUN1cnJl bnRQYWdlOwogICAgcmV0dXJuIHRoaXMuRm9ydW1TZW5kKCJGb3J1bUNhdGVnb3Jp ZXMiLCAiZm9ydW1EZXN0IiwgIkZvcnVtTWFpbiIsICdwbGNrQ3VycmVudFBhZ2U9 JyArIHBhZ2VOdW0gKyB1cmxQYWdlSW5mb1N0cik7Cn0KU2l0ZUxpZmVQcm94eS5w cm90b3R5cGUuRm9ydW0gPSBmdW5jdGlvbigpIHsKICAgIHZhciBmb3J1bUlkID0g dGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tGb3J1bUlkJyk7CiAgICB2YXIgY2F0ZWdv cnlQYWdlTnVtID0gdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tDYXRlZ29yeUN1cnJl bnRQYWdlJyk7CiAgICBpZihjYXRlZ29yeVBhZ2VOdW0gPT0gbnVsbCkgeyBjYXRl Z29yeVBhZ2VOdW0gPSAwOyB9CiAgICB2YXIgZGlzY3Vzc2lvblBhZ2VOdW0gPSB0 aGlzLkdldFBhcmFtZXRlcigncGxja0N1cnJlbnRQYWdlJyk7CiAgICBpZiAoZGlz Y3Vzc2lvblBhZ2VOdW0gPT0gbnVsbCkgeyBkaXNjdXNzaW9uUGFnZU51bSA9IDA7 IH0KICAgIHZhciBudW1QZXJQYWdlID0gdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tO dW1QZXJQYWdlJyk7CiAgICB2YXIgdXJsUGFnZUluZm9TdHIgPSAnJzsKICAgIGlm KCBudW1QZXJQYWdlICE9IG51bGwgKXsKICAgICAgICB1cmxQYWdlSW5mb1N0ciA9 ICcmcGxja051bVBlclBhZ2U9JyArIG51bVBlclBhZ2U7CiAgICB9CiAgIHJldHVy biB0aGlzLkZvcnVtU2VuZCgnRm9ydW0nLCAnZm9ydW1EZXN0JywgJ0ZvcnVtTWFp bicsICdwbGNrRm9ydW1JZD0nICsgZm9ydW1JZCArICcmcGxja0N1cnJlbnRQYWdl PScgKyBkaXNjdXNzaW9uUGFnZU51bSArICcmcGxja0NhdGVnb3J5Q3VycmVudFBh Z2U9JyArIGNhdGVnb3J5UGFnZU51bSArIHVybFBhZ2VJbmZvU3RyICk7Cn0KU2l0 ZUxpZmVQcm94eS5wcm90b3R5cGUuRm9ydW1EaXNjdXNzaW9uID0gZnVuY3Rpb24o KSB7CiAgICB2YXIgZElkID0gdGhpcy5HZXRQYXJhbWV0ZXIoInBsY2tEaXNjdXNz aW9uSWQiKTsKICAgIHZhciBhZFBhcmFtID0gInBsY2tEaXNjdXNzaW9uSWQ9IiAr IGRJZDsKICAgIHZhciBzaG93TGFzdCA9IHRoaXMuR2V0UGFyYW1ldGVyKCJwbGNr U2hvd0xhc3RQYWdlIik7IGlmKHNob3dMYXN0KSBhZFBhcmFtICs9ICImcGxja1No b3dMYXN0UGFnZT10cnVlIjsKICAgIHZhciBwYWdlTnVtID0gdGhpcy5HZXRQYXJh bWV0ZXIoJ3BsY2tDdXJyZW50UGFnZScpOyBpZihwYWdlTnVtID09IG51bGwpIHBh Z2VOdW0gPSAwOwoJYWRQYXJhbSArPSB0aGlzLlNldHVwQ2FsbGJhY2tzKCk7IAog ICAgYWRQYXJhbSArPSAiJnBsY2tDdXJyZW50UGFnZT0iICsgcGFnZU51bTsKICAg IGFkUGFyYW0gKz0gIiZwbGNrQ2F0ZWdvcnlDdXJyZW50UGFnZT0iICsgdGhpcy5H ZXRQYXJhbWV0ZXIoJ3BsY2tDYXRlZ29yeUN1cnJlbnRQYWdlJyk7ICAgCiAgICAK ICAgIHJldHVybiB0aGlzLkZvcnVtU2VuZCgiRm9ydW1EaXNjdXNzaW9uIiwgImZv cnVtRGVzdCIsICJGb3J1bU1haW4iLCBhZFBhcmFtKTsKfQoKU2l0ZUxpZmVQcm94 eS5wcm90b3R5cGUuRGlzY3Vzc2lvblNjYW5Gb3JVbnJlYWQgPSBmdW5jdGlvbihk aXNjdXNzaW9uS2V5KXsKCXZhciBwb3N0RGF0ZXNDb250YWluZXIgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgiUG9zdERhdGVJbmZvQ29udGFpbmVyIik7CglpZigh cG9zdERhdGVzQ29udGFpbmVyKXsKCQlyZXR1cm47Cgl9CgkKCXRoaXMucG9zdERh dGVzID0gZXZhbChwb3N0RGF0ZXNDb250YWluZXIudmFsdWUpOwoJdGhpcy5sYXRl c3RQb3N0ID0gbmV3IERhdGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxhc3RS ZWFkQ29udGFpbmVyIikudmFsdWUpOwoJdGhpcy5zY3JlZW5Cb3R0b20gPSAwOwoJ aWYoZGlzY3Vzc2lvbktleSl7CgkJdGhpcy5kaXNjdXNzaW9uS2V5ID0gZGlzY3Vz c2lvbktleTsKCX0KCWVsc2UgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdE aXNjdXNzaW9uS2V5Q29udGFpbmVyJykpewoJCXRoaXMuZGlzY3Vzc2lvbktleSA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEaXNjdXNzaW9uS2V5Q29udGFpbmVy JykudmFsdWU7Cgl9CgkKCXRoaXMuY2hlY2tGb3JSZWFkSW50ZXJ2YWwgPSBzZXRJ bnRlcnZhbChmdW5jdGlvbigpe2dTaXRlTGlmZS5EaXNjdXNzaW9uQ2hlY2tGb3JM YXRlc3RQb3N0KCk7fSwgMTAwMCk7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBl LkRpc2N1c3Npb25TY3JvbGxUb1Bvc3QgPSBmdW5jdGlvbigpewoJaWYoIWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCJEaXNjdXNzaW9uX1Njcm9sbFRvUG9zdEtleSIp KXsKCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCXZhciBwb3N0S2V5ID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoIkRpc2N1c3Npb25fU2Nyb2xsVG9Qb3N0S2V5IikudmFs dWU7Cgl2YXIgcG9zdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBvc3RLZXkp OwoJCglpZighcG9zdCl7CgkJcmV0dXJuIGZhbHNlOwoJfQoJCgl2YXIgcG9zdFRv cCA9IDA7CglpZihwb3N0Lm9mZnNldFBhcmVudCl7CgkJb2JqID0gcG9zdDsKCQlk b3sKCQkJcG9zdFRvcCArPSBvYmoub2Zmc2V0VG9wOwoJCX0KCQl3aGlsZShvYmog PSBvYmoub2Zmc2V0UGFyZW50KTsKCQl3aW5kb3cuc2Nyb2xsQnkoMCwgcG9zdFRv cCk7Cgl9Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLklzUG9zdE9uU2NyZWVu ID0gZnVuY3Rpb24oc2NyZWVuQm90dG9tLCBwb3N0SW5kZXgpewoJdmFyIHBvc3RJ ZCA9ICJyZWFkSW5kaWNhdG9yXyIgKyB0aGlzLnBvc3REYXRlc1twb3N0SW5kZXhd LktleTsKCXZhciBwb3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocG9zdElk KTsKCWlmKHBvc3QpewoJCXZhciBwb3N0VG9wID0gMDsKCQlpZihwb3N0Lm9mZnNl dFBhcmVudCl7CgkJCW9iaiA9IHBvc3Q7CgkJCWRvewoJCQkJcG9zdFRvcCArPSBv Ymoub2Zmc2V0VG9wOwoJCQl9CgkJCXdoaWxlKG9iaiA9IG9iai5vZmZzZXRQYXJl bnQpOwoJCX0KCQl2YXIgcG9zdEJvdHRvbSA9IHBvc3RUb3AgKyBwb3N0Lm9mZnNl dEhlaWdodDsKCQkKCQlpZihwb3N0Qm90dG9tIDwgc2NyZWVuQm90dG9tKXsKCQkJ cmV0dXJuIHRydWU7CgkJfQoJfQoJCglyZXR1cm4gZmFsc2U7Cn0KClNpdGVMaWZl UHJveHkucHJvdG90eXBlLkRpc2N1c3Npb25DaGVja0ZvckxhdGVzdFBvc3QgPSBm dW5jdGlvbigpewoJdmFyIHNjcmVlblRvcCA9IDA7CglpZiAodHlwZW9mKHdpbmRv dy5wYWdlWU9mZnNldCkgIT09ICd1bmRlZmluZWQnKSB7CgkJc2NyZWVuVG9wID0g d2luZG93LnBhZ2VZT2Zmc2V0OwoJfQoJZWxzZSBpZiAodHlwZW9mKGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudCkgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZihkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wKSAhPT0gJ3VuZGVmaW5lZCcg JiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA+IDApIHsKCQlz Y3JlZW5Ub3AgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwoJ fQoJZWxzZSBpZiAodHlwZW9mKGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSAhPT0g J3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPiAwKSB7CgkJ c2NyZWVuVG9wID0gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7Cgl9CgkKCXZhciBz Y3JlZW5Cb3R0b20gPSBNYXRoLnBvdygyLDUyKTsgLypTdXBwb3Npbmcgb3VyIGJy b3dzZXIgY2FuJ3QgZ2V0IHRoZSBoZWlnaHQsIHdlIG1hcmsgZXZlcnl0aGluZyBh cyByZWFkLiovCglpZih3aW5kb3cuaW5uZXJIZWlnaHQpewoJCXNjcmVlbkJvdHRv bSA9IHNjcmVlblRvcCArIHdpbmRvdy5pbm5lckhlaWdodDsKCX0KCWVsc2UgaWYo ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAmJiBkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICE9IDApewoJCXNjcmVlbkJv dHRvbSA9IHNjcmVlblRvcCArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGll bnRIZWlnaHQ7Cgl9CgllbHNlIGlmKGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0 KXsKCQlzY3JlZW5Cb3R0b20gPSBzY3JlZW5Ub3AgKyBkb2N1bWVudC5ib2R5LmNs aWVudEhlaWdodDsKCX0KCQoJLyogT25seSB1cGRhdGUgaWYgd2UndmUgc2Nyb2xs ZWQgZG93biBzaW5jZSBsYXN0IHBvbGwuICovCglpZihzY3JlZW5Cb3R0b20gPD0g dGhpcy5zY3JlZW5Cb3R0b20pewoJCXJldHVybjsKCX0KCQoJLyogSnVzdCBnaXZl IHVwIGlmIHRoZXJlIGFyZSBubyBwb3N0cy4gKi8KCWlmKCF0aGlzLnBvc3REYXRl cyB8fCB0aGlzLnBvc3REYXRlcy5sZW5ndGggPD0gMCl7CgkJY2xlYXJJbnRlcnZh bCh0aGlzLmNoZWNrRm9yUmVhZEludGVydmFsKTsKCQlyZXR1cm47Cgl9CgkKCS8q IElmIHRoZSBsYXN0IHBvc3QgaXMgYWxyZWFkeSBtYXJrZWQgcmVhZCwgZG9uJ3Qg Ym90aGVyIHBvbGxpbmcuICovCglpZih0aGlzLnBvc3REYXRlc1sodGhpcy5wb3N0 RGF0ZXMubGVuZ3RoIC0gMSldLlRpbWVzdGFtcCA8PSB0aGlzLmxhdGVzdFBvc3Qp ewoJCWNsZWFySW50ZXJ2YWwodGhpcy5jaGVja0ZvclJlYWRJbnRlcnZhbCk7CgkJ cmV0dXJuOwoJfQoJCgl0aGlzLnNjcmVlbkJvdHRvbSA9IHNjcmVlbkJvdHRvbTsK CQoJdmFyIGxhdGVzdEtleSA9IG51bGw7CgkKCWZvcihpPTA7IGkgPCB0aGlzLnBv c3REYXRlcy5sZW5ndGg7IGkrKyl7CgkJaWYodGhpcy5Jc1Bvc3RPblNjcmVlbihz Y3JlZW5Cb3R0b20sIGkpKXsKCQkJaWYodGhpcy5wb3N0RGF0ZXNbaV0uVGltZXN0 YW1wID49IHRoaXMubGF0ZXN0UG9zdCl7CgkJCQlsYXRlc3RLZXkgPSB0aGlzLnBv c3REYXRlc1tpXS5LZXk7CgkJCQl0aGlzLmxhdGVzdFBvc3QgPSB0aGlzLnBvc3RE YXRlc1tpXS5UaW1lc3RhbXA7CgkJCX0KCQl9Cgl9CgoJaWYobGF0ZXN0S2V5KXsK CQl0aGlzLkZvcnVtU2V0TGFzdFJlYWQodGhpcy5kaXNjdXNzaW9uS2V5LCBsYXRl c3RLZXkpOwoJfQp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bUNyZWF0 ZURpc2N1c3Npb24gPSBmdW5jdGlvbigpIHsKICAgIHZhciBhZFBhcmFtID0gInBs Y2tSZWRpcmVjdFVybD0iICsgdGhpcy5HZXRQYXJhbWV0ZXIoInBsY2tSZWRpcmVj dFVybCIpOwogICAgdmFyIGZJZCA9IHRoaXMuR2V0UGFyYW1ldGVyKCJwbGNrRm9y dW1JZCIpOyBhZFBhcmFtICs9ICImcGxja0ZvcnVtSWQ9IiArIGZJZDsKICAgIHZh ciBjdXJWaWV3ID0gdGhpcy5HZXRQYXJhbWV0ZXIoInBsY2tDdXJyZW50VmlldyIp OyBpZihjdXJWaWV3KSBhZFBhcmFtICs9ICImcGxja0N1cnJlbnRWaWV3PSIgKyBj dXJWaWV3OwogICAgdmFyIGN1clBhZ2UgPSB0aGlzLkdldFBhcmFtZXRlcigicGxj a0N1cnJlbnRQYWdlIik7IGlmKGN1clBhZ2UpIGFkUGFyYW0gKz0gIiZwbGNrQ3Vy cmVudFBhZ2U9IiArIGN1clBhZ2U7CiAgICB2YXIgZElkID0gdGhpcy5HZXRQYXJh bWV0ZXIoInBsY2tEaXNjdXNzaW9uSWQiKTsgaWYoZElkKSBhZFBhcmFtICs9ICIm cGxja0Rpc2N1c3Npb25JZD0iICsgZElkOwogICAgYWRQYXJhbSArPSAiJnBsY2tD YXRlZ29yeUN1cnJlbnRQYWdlPSIgKyB0aGlzLkdldFBhcmFtZXRlcigncGxja0Nh dGVnb3J5Q3VycmVudFBhZ2UnKTsgICAgCiAgICByZXR1cm4gdGhpcy5Gb3J1bVNl bmQoIkZvcnVtQ3JlYXRlRGlzY3Vzc2lvbiIsICJmb3J1bURlc3QiLCAiRm9ydW1N YWluIiwgYWRQYXJhbSk7Cn0KU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuRm9ydW1N YWluID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5Gb3J1bVNlbmQoIkZv cnVtTWFpbiIsICJmb3J1bURlc3QiLCAiRm9ydW1NYWluIik7Cn0KU2l0ZUxpZmVQ cm94eS5wcm90b3R5cGUuRm9ydW1DcmVhdGVQb3N0ID0gZnVuY3Rpb24oKSB7CiAg ICB2YXIgYWRQYXJhbSA9ICJwbGNrRGlzY3Vzc2lvbklkPSIgKyB0aGlzLkdldFBh cmFtZXRlcigicGxja0Rpc2N1c3Npb25JZCIpICsgIiZwbGNrUmVkaXJlY3RVcmw9 IiArIHRoaXMuRXNjYXBlVmFsdWUod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAg dmFyIFBvc3RJZCA9IHRoaXMuR2V0UGFyYW1ldGVyKCJwbGNrUG9zdElkIik7IGlm KFBvc3RJZCkgYWRQYXJhbSA9IGFkUGFyYW0gKyAiJnBsY2tQb3N0SWQ9IiArIFBv c3RJZDsKICAgIHZhciBJc1JlcGx5ID0gdGhpcy5HZXRQYXJhbWV0ZXIoInBsY2tJ c1JlcGx5Iik7IGlmKElzUmVwbHkpIGFkUGFyYW0gPSBhZFBhcmFtICsgIiZwbGNr SXNSZXBseT0iICsgSXNSZXBseTsKICAgIHZhciBjdXJQYWdlID0gdGhpcy5HZXRQ YXJhbWV0ZXIoInBsY2tDdXJyZW50UGFnZSIpOyBpZihjdXJQYWdlKSBhZFBhcmFt ID0gYWRQYXJhbSArICImcGxja0N1cnJlbnRQYWdlPSIgKyBjdXJQYWdlOwogICAg YWRQYXJhbSArPSAiJnBsY2tDYXRlZ29yeUN1cnJlbnRQYWdlPSIgKyB0aGlzLkdl dFBhcmFtZXRlcigicGxja0NhdGVnb3J5Q3VycmVudFBhZ2UiKTsgCiAgICByZXR1 cm4gdGhpcy5Gb3J1bVNlbmQoIkZvcnVtQ3JlYXRlUG9zdCIsICJmb3J1bURlc3Qi LCAiRm9ydW1NYWluIiwgYWRQYXJhbSk7Cn0KU2l0ZUxpZmVQcm94eS5wcm90b3R5 cGUuRm9ydW1FZGl0UG9zdCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFkUGFyYW0g PSAicGxja0Rpc2N1c3Npb25JZD0iICsgdGhpcy5HZXRQYXJhbWV0ZXIoInBsY2tE aXNjdXNzaW9uSWQiKSArICImcGxja1JlZGlyZWN0VXJsPSIgKyB0aGlzLkVzY2Fw ZVZhbHVlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKICAgIHZhciBQb3N0SWQgPSB0 aGlzLkdldFBhcmFtZXRlcigicGxja1Bvc3RJZCIpOyBpZihQb3N0SWQpIGFkUGFy YW0gPSBhZFBhcmFtICsgIiZwbGNrUG9zdElkPSIgKyBQb3N0SWQ7CiAgICB2YXIg Q3VyclBhZ2UgPSB0aGlzLkdldFBhcmFtZXRlcigicGxja0N1cnJlbnRQYWdlIik7 IGlmKCFDdXJyUGFnZSkgQ3VyclBhZ2U9IjAiOyBhZFBhcmFtID0gYWRQYXJhbSAr ICImcGxja0N1cnJlbnRQYWdlPSIgKyBDdXJyUGFnZTsKICAgIGFkUGFyYW0gKz0g IiZwbGNrQ2F0ZWdvcnlDdXJyZW50UGFnZT0iICsgdGhpcy5HZXRQYXJhbWV0ZXIo J3BsY2tDYXRlZ29yeUN1cnJlbnRQYWdlJyk7ICAgIAogICAgcmV0dXJuIHRoaXMu Rm9ydW1TZW5kKCJGb3J1bUVkaXRQb3N0IiwgImZvcnVtRGVzdCIsICJGb3J1bU1h aW4iLCBhZFBhcmFtKTsKfQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bUVk aXRQcm9maWxlID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5Gb3J1bVNl bmQoIkZvcnVtRWRpdFByb2ZpbGUiLCAiZm9ydW1EZXN0IiwgIkZvcnVtTWFpbiIs ICJwbGNrUmVkaXJlY3RVcmw9IiArIHRoaXMuRXNjYXBlVmFsdWUod2luZG93Lmxv Y2F0aW9uLmhyZWYpKTsKfQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Ub2dnbGVF eHBhbmQgPSBmdW5jdGlvbihpbWFnZUlkLCB0YWJsZUlkKSB7CiAgaWYgKCF0aGlz LmNvbGxhcHNlZENhdGVnb3JpZXMpIHsKICAgIHZhciBjb29raWUgPSBkb2N1bWVu dC5jb29raWUgJiYgZG9jdW1lbnQuY29va2llLm1hdGNoKC9mb3J1bUNhdFN0YXRl PShbXjtdKykvKTsgCiAgICBjb29raWUgPSAoY29va2llID8gY29va2llWzFdLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgOiBbXSk7IAogICAgdGhpcy5jb2xsYXBz ZWRDYXRlZ29yaWVzID0gKGNvb2tpZS5sZW5ndGggPyB1bmVzY2FwZShjb29raWUp LnNwbGl0KCd8JykgOiBbXSk7CiAgfQogIHZhciB0YWJsZUVsZW0gPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCh0YWJsZUlkKSwgaW1nRWxlbSA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKGltYWdlSWQpLAogICAgICBpZCA9IHRhYmxlSWQuc3BsaXQo JzonKVsxXSwgY2F0cyA9IHRoaXMuY29sbGFwc2VkQ2F0ZWdvcmllcywgZXhwaXJl OwogIGlmICh0YWJsZUVsZW0uc3R5bGUuZGlzcGxheSA9PSAnbm9uZScpIHsKICAg IHRhYmxlRWxlbS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIGltZ0VsZW0u c3JjID0gdGhpcy5fX2Jhc2VVcmwgKyAnL0NvbnRlbnQvaW1hZ2VzL2ZvcnVtcy9t aW51cy5naWYnOwogICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGNhdHMubGVu Z3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKChjYXRzW2ldID09IGlk KSB8fCAoY2F0c1tpXSA9PT0gJycpKQogICAgICAgIGNhdHMuc3BsaWNlKGksMSk7 CiAgICB9CiAgfQogIGVsc2UgewogICAgdGFibGVFbGVtLnN0eWxlLmRpc3BsYXkg PSAnbm9uZSc7CiAgICBjYXRzLnB1c2goaWQpOyAKICAgIGltZ0VsZW0uc3JjID0g dGhpcy5fX2Jhc2VVcmwgKyAnL0NvbnRlbnQvaW1hZ2VzL2ZvcnVtcy9wbHVzLmdp Zic7CiAgfQogIHRoaXMuU2V0Q29va2llKCdmb3J1bUNhdFN0YXRlJywgY2F0cy5q b2luKCd8JykpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bVNlYXJj aCA9IGZ1bmN0aW9uKHN1ZmZpeCkgewogICAgdmFyIHNlYXJjaFRleHQgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgncGxja1NlYXJjaFRleHQnK3N1ZmZpeCkudmFs dWU7CiAgICBzZWFyY2hUZXh0ID0gRml4U2VhcmNoU3RyaW5nKHNlYXJjaFRleHQp OwogICAgdmFyIHNlYXJjaEFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn cGxja1NlYXJjaEFyZWEnK3N1ZmZpeCkudmFsdWU7CiAgICB0aGlzLkxvYWRGb3J1 bVBhZ2UoIkZvcnVtU2VhcmNoUGFnaW5hdGUiLCAicGxja1NlYXJjaFRleHQiLCBz ZWFyY2hUZXh0LCAicGxja1NlYXJjaEFyZWEiLCBzZWFyY2hBcmVhLCAicGxja0N1 cnJlbnRQYWdlIiwgIjAiKTsKICAgIHJldHVybiBmYWxzZTsKfQpTaXRlTGlmZVBy b3h5LnByb3RvdHlwZS5Gb3J1bVNlYXJjaEtleVByZXNzID0gZnVuY3Rpb24oZXZl bnQsIHN1ZmZpeCkgewogICAgaWYoSXNFbnRlcihldmVudCkpe3JldHVybiB0aGlz LkZvcnVtU2VhcmNoKHN1ZmZpeCk7fWVsc2V7cmV0dXJuIHRydWU7fQp9ClNpdGVM aWZlUHJveHkucHJvdG90eXBlLkZvcnVtU2VhcmNoUGFnaW5hdGUgPSBmdW5jdGlv bigpIHsJCiAgICByZXR1cm4gdGhpcy5Gb3J1bVNlbmQoJ0ZvcnVtU2VhcmNoUGFn aW5hdGUnLCAnZm9ydW1EZXN0JywgJ0ZvcnVtTWFpbicsICdwbGNrU2VhcmNoQXJl YT0nICsgdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tTZWFyY2hBcmVhJykgKyAnJnBs Y2tTZWFyY2hUZXh0PScgKyB0aGlzLkdldFBhcmFtZXRlcigncGxja1NlYXJjaFRl eHQnKSArICcmcGxja0N1cnJlbnRQYWdlPScgKyB0aGlzLkdldFBhcmFtZXRlcign cGxja0N1cnJlbnRQYWdlJykpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5G b3J1bVNwZWNpZmljRm9ydW1TZWFyY2hLZXlQcmVzcyA9IGZ1bmN0aW9uKGV2ZW50 LCBzdWZmaXgsIGZvcnVtSWQpIHsKICAgIGlmKElzRW50ZXIoZXZlbnQpKXtyZXR1 cm4gdGhpcy5Gb3J1bVNwZWNpZmljRm9ydW1TZWFyY2goc3VmZml4LCBmb3J1bUlk KTt9ZWxzZXtyZXR1cm4gdHJ1ZTt9Cn0KU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUu Rm9ydW1TcGVjaWZpY0ZvcnVtU2VhcmNoID0gZnVuY3Rpb24oc3VmZml4LCBmb3J1 bUlkKSB7CiAgICB2YXIgc2VhcmNoVGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdwbGNrU2VhcmNoVGV4dCcrc3VmZml4KS52YWx1ZTsKICAgIHNlYXJjaFRl eHQgPSBGaXhTZWFyY2hTdHJpbmcoc2VhcmNoVGV4dCk7CiAgICB0aGlzLkxvYWRG b3J1bVBhZ2UoIkZvcnVtU2VhcmNoU3BlY2lmaWNGb3J1bVBhZ2luYXRlIiwgInBs Y2tTZWFyY2hUZXh0Iiwgc2VhcmNoVGV4dCwgInBsY2tGb3J1bUlkIiwgZm9ydW1J ZCwgInBsY2tDdXJyZW50UGFnZSIsICIwIik7CiAgICByZXR1cm4gZmFsc2U7Cn0K U2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuRm9ydW1TZWFyY2hTcGVjaWZpY0ZvcnVt UGFnaW5hdGUgPSBmdW5jdGlvbih0aXRsZSkgewkKICAgIHJldHVybiB0aGlzLkZv cnVtU2VuZCgnRm9ydW1TZWFyY2hTcGVjaWZpY0ZvcnVtUGFnaW5hdGUnLCAnZm9y dW1EZXN0JywgJ0ZvcnVtTWFpbicsICdwbGNrRm9ydW1JZD0nICsgdGhpcy5HZXRQ YXJhbWV0ZXIoJ3BsY2tGb3J1bUlkJykgKyAnJnBsY2tTZWFyY2hUZXh0PScgKyB0 aGlzLkdldFBhcmFtZXRlcigncGxja1NlYXJjaFRleHQnKSArICcmcGxja0N1cnJl bnRQYWdlPScgKyB0aGlzLkdldFBhcmFtZXRlcigncGxja0N1cnJlbnRQYWdlJykp Owp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Mb2FkRm9ydW1QYWdlID0gZnVu Y3Rpb24oUGFnZU5hbWUsIHBhcmFtTmFtZSwgcGFyYW1WYWwpIHsKICAgIHZhciBw YXJhbXMgPSBuZXcgT2JqZWN0KCk7IAogICAgcGFyYW1zWydwbGNrRm9ydW1QYWdl J10gPSBQYWdlTmFtZTsKICAgIGZvcihpaT0xOyBpaTwgdGhpcy5Mb2FkRm9ydW1Q YWdlLmFyZ3VtZW50cy5sZW5ndGg7IGlpKz0yKSB7IHBhcmFtc1t0aGlzLkxvYWRG b3J1bVBhZ2UuYXJndW1lbnRzW2lpXV0gPSB0aGlzLkxvYWRGb3J1bVBhZ2UuYXJn dW1lbnRzW2lpKzFdO30KICAgIHRoaXMuUmVsb2FkUGFnZShwYXJhbXMpOwogICAg cmV0dXJuIGZhbHNlOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bVNl bmQgPSBmdW5jdGlvbihBcGlOYW1lLCBEZXN0RGl2LCBTY3JpcHROYW1lLCBBZGRQ YXJhbXMpewogICAgdmFyIHVybCA9IHRoaXMuX19iYXNlVXJsICsgJy9Gb3J1bXMv JyArIEFwaU5hbWUgKyAnP3BsY2tFbGVtZW50SWQ9JyArIERlc3REaXY7CiAgICBp ZihBZGRQYXJhbXMpIHVybCArPSAnJicgKyBBZGRQYXJhbXM7CiAgICB2YXIgcGxj a1Bvc3RTb3J0ID0gdGhpcy5HZXRQYXJhbWV0ZXIoJ3BsY2tQb3N0U29ydCcpOwog ICAgaWYgKHBsY2tQb3N0U29ydCAhPSBudWxsKXsKCQl1cmwgKz0gIiZwbGNrUG9z dFNvcnQ9IiArIHBsY2tQb3N0U29ydDsKCX0KICAgIHRoaXMuX19TZW5kKHVybCwg U2NyaXB0TmFtZSwgJ3dpZGdldDpmb3J1bXMnLCBhcmd1bWVudHMpOwogICAgcmV0 dXJuIGZhbHNlOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bURpc2N1 c3Npb25FZGl0ID0gZnVuY3Rpb24oZGlzY3Vzc2lvbklkLCBjdXJWaWV3LCBjdXJQ YWdlKSB7CiAgICByZXR1cm4gdGhpcy5Gb3J1bVNlbmQoJ0ZvcnVtRGlzY3Vzc2lv bkVkaXQnLCAnZm9ydW1EZXN0JywgJ0ZvcnVtTWFpbicsICdwbGNrRGlzY3Vzc2lv bklkPScgKyBkaXNjdXNzaW9uSWQgKyAnJnBsY2tDdXJyZW50Vmlldz0nICsgY3Vy VmlldyArICcmcGxja0N1cnJlbnRQYWdlPScgKyBjdXJQYWdlICsgJyZwbGNrUmVk aXJlY3RVcmw9JyArIHRoaXMuRXNjYXBlVmFsdWUod2luZG93LmxvY2F0aW9uLmhy ZWYpKTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuRm9ydW1Qb3N0RWRpdCA9 IGZ1bmN0aW9uKGRpc2N1c3Npb25JZCwgcG9zdElkLCBjdXJWaWV3LCBjdXJQYWdl KSB7CiAgICByZXR1cm4gdGhpcy5Gb3J1bVNlbmQoJ0ZvcnVtRWRpdFBvc3QnLCAn Zm9ydW1EZXN0JywgJ0ZvcnVtTWFpbicsICdwbGNrRGlzY3Vzc2lvbklkPScgKyBk aXNjdXNzaW9uSWQgKyAnJnBsY2tQb3N0SWQ9JyArIHBvc3RJZCArICcmcGxja0N1 cnJlbnRWaWV3PScgKyBjdXJWaWV3ICsgJyZwbGNrQ3VycmVudFBhZ2U9JyArIGN1 clBhZ2UgKyAnJnBsY2tSZWRpcmVjdFVybD0nICsgdGhpcy5Fc2NhcGVWYWx1ZSh3 aW5kb3cubG9jYXRpb24uaHJlZikpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlw ZS5Gb3J1bURpc2N1c3Npb25Ub2dnbGVJc1N0aWNreSA9IGZ1bmN0aW9uKGRpc2N1 c3Npb25JZCwgY3VyVmlldywgY3VyUGFnZSkgewoJcmV0dXJuIHRoaXMuRm9ydW1T ZW5kKCdGb3J1bURpc2N1c3Npb25Ub2dnbGVJc1N0aWNreScsICdmb3J1bURlc3Qn LCAnRm9ydW1NYWluJywgJ3BsY2tEaXNjdXNzaW9uSWQ9JyArIGRpc2N1c3Npb25J ZCArICcmcGxja0N1clZpZXc9JyArIGN1clZpZXcgKyAnJnBsY2tDdXJyZW50UGFn ZT0nICsgY3VyUGFnZSk7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkZvcnVt RGlzY3Vzc2lvblRvZ2dsZUlzQ2xvc2VkID0gZnVuY3Rpb24oZGlzY3Vzc2lvbklk LCBjdXJWaWV3LCBjdXJQYWdlKSB7CiAgICByZXR1cm4gdGhpcy5Gb3J1bVNlbmQo J0ZvcnVtRGlzY3Vzc2lvblRvZ2dsZUlzQ2xvc2VkJywgJ2ZvcnVtRGVzdCcsICdG b3J1bU1haW4nLCAncGxja0Rpc2N1c3Npb25JZD0nICsgZGlzY3Vzc2lvbklkICsg JyZwbGNrQ3VyVmlldz0nICsgY3VyVmlldyArICcmcGxja0N1cnJlbnRQYWdlPScg KyBjdXJQYWdlICk7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkZvcnVtRGlz Y3Vzc2lvbkRlbGV0ZSA9IGZ1bmN0aW9uKGRpc2N1c3Npb25JZCwgY3VyUGFnZSwg Y29uZmlybU1zZykgewogIGlmIChjb25maXJtKGNvbmZpcm1Nc2cpID09IHRydWUp IHsKICAgIHJldHVybiB0aGlzLkZvcnVtU2VuZCgnRm9ydW1EaXNjdXNzaW9uRGVs ZXRlJywgJ2ZvcnVtRGVzdCcsICdGb3J1bU1haW4nLCAncGxja0Rpc2N1c3Npb25J ZD0nICsgZGlzY3Vzc2lvbklkICsgJyZwbGNrQ3VycmVudFBhZ2U9JyArIGN1clBh Z2UgKTsKICB9CiAgZWxzZSB7CglyZXR1cm4gZmFsc2U7CiAgfQp9CgpTaXRlTGlm ZVByb3h5LnByb3RvdHlwZS5Nb3ZlRGlzY3Vzc2lvbiA9IGZ1bmN0aW9uKGRpc2N1 c3Npb25LZXksIHRvRm9ydW0sIGN1clZpZXcsIGN1clBhZ2UpIHsKICAgIHJldHVy biB0aGlzLkZvcnVtU2VuZCgnTW92ZURpc2N1c3Npb24nLCAnZm9ydW1EZXN0Jywg J0ZvcnVtTWFpbicsICdkaXNjdXNzaW9uS2V5PScgKyBkaXNjdXNzaW9uS2V5ICsg JyZ0b0ZvcnVtPScgKyB0b0ZvcnVtICsgJyZwbGNrQ3VyVmlldz0nICsgY3VyVmll dyArICcmcGxja0N1cnJlbnRQYWdlPScgKyBjdXJQYWdlICk7Cn0KClNpdGVMaWZl UHJveHkucHJvdG90eXBlLkZvcnVtRWRpdCA9IGZ1bmN0aW9uKGZvcnVtSWQsIGN1 clBhZ2UpIHsKICAgIHJldHVybiB0aGlzLkZvcnVtU2VuZCgnRm9ydW1FZGl0Jywg J2ZvcnVtRGVzdCcsICdGb3J1bU1haW4nLCAncGxja0ZvcnVtSWQ9JyArIGZvcnVt SWQgKyAnJnBsY2tDdXJyZW50UGFnZT0nICsgY3VyUGFnZSAgKTsKfQoKU2l0ZUxp ZmVQcm94eS5wcm90b3R5cGUuRm9ydW1Ub2dnbGVJc0Nsb3NlZCA9IGZ1bmN0aW9u KGZvcnVtSWQsIGN1clBhZ2UpIHsKICAgIHJldHVybiB0aGlzLkZvcnVtU2VuZCgn Rm9ydW1Ub2dnbGVJc0Nsb3NlZCcsICdmb3J1bURlc3QnLCAnRm9ydW1NYWluJywg J3BsY2tGb3J1bUlkPScgKyBmb3J1bUlkICsgJyZwbGNrQ3VycmVudFBhZ2U9JyAr IGN1clBhZ2UgICk7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkZvcnVtRGVs ZXRlID0gZnVuY3Rpb24oZm9ydW1JZCwgY29uZmlybU1zZykgewogIGlmIChjb25m aXJtKGNvbmZpcm1Nc2cpID09IHRydWUpIHsKICAgIHJldHVybiB0aGlzLkZvcnVt U2VuZCgnRm9ydW1EZWxldGUnLCAnZm9ydW1EZXN0JywgJ0ZvcnVtTWFpbicsICdw bGNrRm9ydW1JZD0nICsgZm9ydW1JZCApOwogIH0KICBlbHNlIHsKCXJldHVybiBm YWxzZTsKICB9Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkZvcnVtUG9zdERl bGV0ZSA9IGZ1bmN0aW9uKHBvc3RJZCwgY3VyUGFnZSwgY29uZmlybU1zZykgewog IGlmIChjb25maXJtKGNvbmZpcm1Nc2cpID09IHRydWUpIHsKICAgIHJldHVybiB0 aGlzLkZvcnVtU2VuZCgnRm9ydW1Qb3N0RGVsZXRlJywgJ2ZvcnVtRGVzdCcsICdG b3J1bU1haW4nLCAncGxja1Bvc3RJZD0nICsgcG9zdElkICsgJyZwbGNrQ3VyUGFn ZT0nICsgY3VyUGFnZSk7CiAgfQogIGVsc2UgewoJcmV0dXJuIGZhbHNlOwogIH0K fQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuRm9ydW1CbG9ja1VzZXIgPSBmdW5j dGlvbihwb3N0SWQsIHVzZXJJZCwgdmFsdWUsIGN1clBhZ2UpIHsKICAgIHJldHVy biB0aGlzLkZvcnVtU2VuZCgnRm9ydW1CbG9ja1VzZXInLCAnZm9ydW1EZXN0Jywg J0ZvcnVtTWFpbicsICdwbGNrUG9zdElkPScgKyBwb3N0SWQgKyAnJnBsY2tVc2Vy SWQ9JyArIHVzZXJJZCArICcmcGxja1ZhbHVlPScgKyB2YWx1ZSArICcmcGxja0N1 clBhZ2U9JyArIGN1clBhZ2UpOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5G b3J1bU15RGlzY3Vzc2lvbnNQYWdpbmF0ZSA9IGZ1bmN0aW9uKHBhZ2VOdW0pIHsK ICAgIHJldHVybiB0aGlzLkZvcnVtU2VuZCgnRm9ydW1NeURpc2N1c3Npb25zUGFn aW5hdGUnLCAnRm9ydW1NeURpc2N1c3Npb25zRGl2JywgJ0ZvcnVtTWFpbicsICdw bGNrTXlEaXNjdXNzaW9uc1BhZ2U9JyArIHBhZ2VOdW0pOwp9CgpTaXRlTGlmZVBy b3h5LnByb3RvdHlwZS5Gb3J1bUltYWdlID0gZnVuY3Rpb24oKSB7CiAgICB2YXIg YWRQYXJhbSA9ICJwbGNrUmVkaXJlY3RVcmw9IiArIHRoaXMuR2V0UGFyYW1ldGVy KCJwbGNrUmVkaXJlY3RVcmwiKTsKICAgIHZhciBwSWQgPSB0aGlzLkdldFBhcmFt ZXRlcigicGxja1Bob3RvSWQiKTsgYWRQYXJhbSArPSAiJnBsY2tQaG90b0lkPSIg KyBwSWQ7CiAgICByZXR1cm4gdGhpcy5Gb3J1bVNlbmQoJ0ZvcnVtSW1hZ2UnLCAn Zm9ydW1EZXN0JywgJ0ZvcnVtTWFpbicsIGFkUGFyYW0pOwp9CgpTaXRlTGlmZVBy b3h5LnByb3RvdHlwZS5CYXNlQWRQYXJhbSA9IGZ1bmN0aW9uICgpIHsKICAgIHZh ciBhZFBhcmFtID0gInBsY2tSZWRpcmVjdFVybD0iICsgdGhpcy5Fc2NhcGVWYWx1 ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7CiAgICB2YXIgZklkID0gdGhpcy5HZXRQ YXJhbWV0ZXIoInBsY2tGb3J1bUlkIik7IGFkUGFyYW0gKz0gIiZwbGNrRm9ydW1J ZD0iICsgZklkOwogICAgdmFyIGN1clZpZXcgPSB0aGlzLkdldFBhcmFtZXRlcigi cGxja0N1cnJlbnRWaWV3Iik7IGlmKGN1clZpZXcpIGFkUGFyYW0gKz0gIiZwbGNr Q3VycmVudFZpZXc9IiArIGN1clZpZXc7CiAgICB2YXIgY3VyUGFnZSA9IHRoaXMu R2V0UGFyYW1ldGVyKCJwbGNrQ3VycmVudFBhZ2UiKTsgaWYoY3VyUGFnZSkgYWRQ YXJhbSArPSAiJnBsY2tDdXJyZW50UGFnZT0iICsgY3VyUGFnZTsKICAgIHJldHVy biBhZFBhcmFtOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bUpvaW5H cm91cCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFkUGFyYW0gPSB0aGlzLkJhc2VB ZFBhcmFtKCk7CiAgICB2YXIgZElkID0gdGhpcy5HZXRQYXJhbWV0ZXIoInBsY2tE aXNjdXNzaW9uSWQiKTsgaWYoZElkKSBhZFBhcmFtICs9ICImcGxja0Rpc2N1c3Np b25JZD0iICsgZElkOwogICAgcmV0dXJuIHRoaXMuRm9ydW1TZW5kKCJGb3J1bUpv aW5Hcm91cCIsICJmb3J1bURlc3QiLCAiRm9ydW1NYWluIiwgYWRQYXJhbSk7Cn0K ClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkZvcnVtTGVhdmVHcm91cCA9IGZ1bmN0 aW9uKCkgewogICAgdmFyIGFkUGFyYW0gPSB0aGlzLkJhc2VBZFBhcmFtKCk7CiAg ICB2YXIgZElkID0gdGhpcy5HZXRQYXJhbWV0ZXIoInBsY2tEaXNjdXNzaW9uSWQi KTsgaWYoZElkKSBhZFBhcmFtICs9ICImcGxja0Rpc2N1c3Npb25JZD0iICsgZElk OwogICAgcmV0dXJuIHRoaXMuRm9ydW1TZW5kKCJGb3J1bUxlYXZlR3JvdXAiLCAi Zm9ydW1EZXN0IiwgIkZvcnVtTWFpbiIsIGFkUGFyYW0pOwp9CgpTaXRlTGlmZVBy b3h5LnByb3RvdHlwZS5Gb3J1bUdyb3VwTWVtYmVyTGlzdCA9IGZ1bmN0aW9uKCkg ewogICAgdmFyIGFkUGFyYW0gPSB0aGlzLkJhc2VBZFBhcmFtKCk7CiAgICByZXR1 cm4gdGhpcy5Gb3J1bVNlbmQoIkZvcnVtR3JvdXBNZW1iZXJMaXN0IiwgImZvcnVt RGVzdCIsICJGb3J1bU1haW4iLCBhZFBhcmFtKTsKfQoKU2l0ZUxpZmVQcm94eS5w cm90b3R5cGUuRm9ydW1JbnZpdGVVc2VyID0gZnVuY3Rpb24oKSB7CiAgICB2YXIg YWRQYXJhbSA9IHRoaXMuQmFzZUFkUGFyYW0oKTsKICAgIHJldHVybiB0aGlzLkZv cnVtU2VuZCgiRm9ydW1JbnZpdGVVc2VyIiwgImZvcnVtRGVzdCIsICJGb3J1bU1h aW4iLCBhZFBhcmFtKTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuRm9ydW1H cm91cENvbmZpcm0gPSBmdW5jdGlvbigpIHsKICAgIHZhciBhZFBhcmFtID0gdGhp cy5CYXNlQWRQYXJhbSgpOwogICAgdmFyIGNvbmZpcm1UeXBlID0gdGhpcy5HZXRQ YXJhbWV0ZXIoInBsY2tDb25maXJtVHlwZSIpOyBpZiAoY29uZmlybVR5cGUpIGFk UGFyYW0gKz0gIiZwbGNrQ29uZmlybVR5cGU9IiArIGNvbmZpcm1UeXBlOwogICAg cmV0dXJuIHRoaXMuRm9ydW1TZW5kKCJGb3J1bUdyb3VwQ29uZmlybSIsICJmb3J1 bURlc3QiLCAiRm9ydW1NYWluIiwgYWRQYXJhbSk7Cn0KClNpdGVMaWZlUHJveHku cHJvdG90eXBlLkZvcnVtU2VuZEludml0ZVRvVXNlciA9IGZ1bmN0aW9uKHVzZXJu YW1lLCBlbWFpbCkgewogICAgdmFyIGFkUGFyYW0gPSB0aGlzLkJhc2VBZFBhcmFt KCk7CiAgICB2YXIgdXNlcm5hbWUgPSB0aGlzLkdldFBhcmFtZXRlcigicGxja1Vz ZXJuYW1lIik7IGlmICh1c2VybmFtZSkgYWRQYXJhbSArPSAiJnBsY2tVc2VybmFt ZT0iICsgdXNlcm5hbWU7CiAgICB2YXIgZW1haWwgPSB0aGlzLkdldFBhcmFtZXRl cigicGxja1VzZXJFbWFpbCIpOyBpZiAoZW1haWwpIGFkUGFyYW0gKz0gIiZwbGNr VXNlckVtYWlsIiArIGVtYWlsOwogICAgcmV0dXJuIHRoaXMuRm9ydW1TZW5kKCJG b3J1bVNlbmRJbnZpdGVUb1VzZXIiLCAiZm9ydW1EZXN0IiwgIkZvcnVtTWFpbiIs IGFkUGFyYW0pOwp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bUFkZEVu ZW15ID0gZnVuY3Rpb24oZW5lbXlLZXkpIHsKICAgIHZhciBhZFBhcmFtID0gdGhp cy5CYXNlQWRQYXJhbSgpOwogICAgYWRQYXJhbSArPSAiJmVuZW15S2V5PSIgKyBl bmVteUtleTsKICAgIHZhciBkSWQgPSB0aGlzLkdldFBhcmFtZXRlcigicGxja0Rp c2N1c3Npb25JZCIpOyBpZihkSWQpIGFkUGFyYW0gKz0gIiZwbGNrRGlzY3Vzc2lv bklkPSIgKyBkSWQ7CiAgICByZXR1cm4gdGhpcy5Gb3J1bVNlbmQoIkZvcnVtQWRk RW5lbXkiLCAiZm9ydW1EZXN0IiwgIkZvcnVtTWFpbiIsIGFkUGFyYW0pOwp9CgpT aXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1bVJlbW92ZUVuZW15ID0gZnVuY3Rp b24oZW5lbXlLZXkpIHsKICAgIHZhciBhZFBhcmFtID0gdGhpcy5CYXNlQWRQYXJh bSgpOwogICAgYWRQYXJhbSArPSAiJmVuZW15S2V5PSIgKyBlbmVteUtleTsKICAg IHZhciBkSWQgPSB0aGlzLkdldFBhcmFtZXRlcigicGxja0Rpc2N1c3Npb25JZCIp OyBpZihkSWQpIGFkUGFyYW0gKz0gIiZwbGNrRGlzY3Vzc2lvbklkPSIgKyBkSWQ7 CiAgICByZXR1cm4gdGhpcy5Gb3J1bVNlbmQoIkZvcnVtUmVtb3ZlRW5lbXkiLCAi Zm9ydW1EZXN0IiwgIkZvcnVtTWFpbiIsIGFkUGFyYW0pOwp9CgpmdW5jdGlvbiBz bEdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NuYW1lLCBub2RlKSAgewogICAg aWYoIW5vZGUpIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi Ym9keSIpWzBdOwogICAgdmFyIGEgPSBbXTsKICAgIHZhciByZSA9IG5ldyBSZWdF eHAoJ1xcYicgKyBjbGFzc25hbWUgKyAnXFxiJyk7CiAgICB2YXIgZWxzID0gbm9k ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgZm9yKHZhciBpPTAsaj1l bHMubGVuZ3RoOyBpPGo7IGkrKykKICAgICAgICBpZihyZS50ZXN0KGVsc1tpXS5j bGFzc05hbWUpKWEucHVzaChlbHNbaV0pOwogICAgcmV0dXJuIGE7Cn0KCglmdW5j dGlvbiBoaWRlQWxsUG9zdHNGcm9tVXNlcih1c2VyS2V5KXsKCSAgdmFyIHBvc3Rz ID0gc2xHZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJwb3N0VmlzaWJpbGl0eUNvbnRh aW5lcl8iK3VzZXJLZXksIGRvY3VtZW50KTsKCSAgdmFyIGhpZGRlbk1lc3NhZ2Vz ID0gc2xHZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJwb3N0SGlkZGVuTWVzc2FnZV8i K3VzZXJLZXksIGRvY3VtZW50KTsKCSAgCgkgIGZvcihpPTA7IGkgPCBwb3N0cy5s ZW5ndGg7IGkrKyl7CgkgICAgcG9zdHNbaV0uc3R5bGUuZGlzcGxheSA9ICJub25l IjsKCSAgICBoaWRkZW5NZXNzYWdlc1tpXS5zdHlsZS5kaXNwbGF5ID0gImJsb2Nr IjsKCSAgfQoJICAKCSAgZ1NpdGVMaWZlLkZvcnVtQWRkRW5lbXkodXNlcktleSk7 Cgl9CgkKCWZ1bmN0aW9uIHNob3dBbGxQb3N0c0Zyb21Vc2VyKHVzZXJLZXkpewoJ ICB2YXIgcG9zdHMgPSBzbEdldEVsZW1lbnRzQnlDbGFzc05hbWUoInBvc3RWaXNp YmlsaXR5Q29udGFpbmVyXyIrdXNlcktleSwgZG9jdW1lbnQpOwoJICB2YXIgaGlk ZGVuTWVzc2FnZXMgPSBzbEdldEVsZW1lbnRzQnlDbGFzc05hbWUoInBvc3RIaWRk ZW5NZXNzYWdlXyIrdXNlcktleSwgZG9jdW1lbnQpOwoJICAJICAKCSAgZm9yKGk9 MDsgaSA8IHBvc3RzLmxlbmd0aDsgaSsrKXsKCSAgICBwb3N0c1tpXS5zdHlsZS5k aXNwbGF5ID0gImJsb2NrIjsKCSAgICBoaWRkZW5NZXNzYWdlc1tpXS5zdHlsZS5k aXNwbGF5ID0gIm5vbmUiOwoJICB9CgkgIAoJICBnU2l0ZUxpZmUuRm9ydW1SZW1v dmVFbmVteSh1c2VyS2V5KTsKCX0KCQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5G b3J1bUNoYW5nZVNvcnQgPSBmdW5jdGlvbihzb3J0UGFyYW1OYW1lLCBzb3J0RGly ZWN0aW9uKSB7CgkJdmFyIGN1cnJlbnRVcmwgPSBkb2N1bWVudC5sb2NhdGlvbi5o cmVmOwoJCXZhciBuZXdVcmw7CgkJLy8gcmVwbGFjZSB0aGUgc29ydCBwYXJhbSBp biB0aGUgdXJsLCBpZiBmb3VuZAoJCXZhciByZSA9IG5ldyBSZWdFeHAoIihbP3wm XSkiICsgc29ydFBhcmFtTmFtZSArICI9Lio/KCZ8JCkiLCJpIik7CgkJaWYgKGN1 cnJlbnRVcmwubWF0Y2gocmUpKSB7CgkJCW5ld1VybCA9IGN1cnJlbnRVcmwucmVw bGFjZShyZSwgJyQxJyArIHNvcnRQYXJhbU5hbWUgKyAiPSIgKyBzb3J0RGlyZWN0 aW9uICsgJyQyJyk7CgkJfQoJCWVsc2UgewoJCQlpZihjdXJyZW50VXJsLmluZGV4 T2YoJz8nKSA+PSAwKXsKCQkJCW5ld1VybCA9IGN1cnJlbnRVcmwgKyAnJicgKyBz b3J0UGFyYW1OYW1lICsgIj0iICsgc29ydERpcmVjdGlvbjsKCQkJfQoJCQllbHNl ewoJCQkJbmV3VXJsID0gY3VycmVudFVybCArICc/JyArIHNvcnRQYXJhbU5hbWUg KyAiPSIgKyBzb3J0RGlyZWN0aW9uOwoJCQl9CgkJfQoJCWRvY3VtZW50LmxvY2F0 aW9uLmhyZWYgPSBuZXdVcmw7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLkZv cnVtU2V0TGFzdFJlYWQgPSBmdW5jdGlvbihkaXNjdXNzaW9uS2V5LCBwb3N0S2V5 KSB7CiAgICB2YXIgYWRQYXJhbSA9IHRoaXMuQmFzZUFkUGFyYW0oKTsKICAgIGFk UGFyYW0gKz0gIiZkaXNjdXNzaW9uS2V5PSIgKyBkaXNjdXNzaW9uS2V5OwogICAg aWYocG9zdEtleSl7CgkJYWRQYXJhbSArPSAiJnBvc3RLZXk9IiArIHBvc3RLZXk7 Cgl9CiAgICB2YXIgcmV0ID0gdGhpcy5Gb3J1bVNlbmQoIkZvcnVtU2V0TGFzdFJl YWQiLCAiZm9ydW1EZXN0IiwgIkZvcnVtTWFpbiIsIGFkUGFyYW0pOwogICAgCiAg ICBpZighcG9zdEtleSl7CgkJbG9jYXRpb24ucmVsb2FkKCk7CiAgICB9CiAgICAK ICAgIHJldHVybiByZXQ7Cn0gCgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5Gb3J1 bURpc2N1c3Npb25TdWJzY3JpYmUgPSBmdW5jdGlvbihkaXNjdXNzaW9uS2V5LCB0 YXJnZXREaXYpIHsKICAgIHZhciB1cmwgPSB0aGlzLl9fYmFzZVVybCArICcvRm9y dW1zL0ZvcnVtRGlzY3Vzc2lvblN1YnNjcmliZT8nICsgJ3BsY2tEaXNjdXNzaW9u SWQ9JyArIGRpc2N1c3Npb25LZXkgKyAnJnBsY2tFbGVtZW50SWQ9JyArIHRhcmdl dERpdjsKICAgIHRoaXMuX19TZW5kKHVybCwgIkZvcnVtRGlzY3Vzc2lvblN1YnNj cmliZSIpOwogICAgcmV0dXJuIGZhbHNlOwp9CgpTaXRlTGlmZVByb3h5LnByb3Rv dHlwZS5Gb3J1bURpc2N1c3Npb25VblN1YnNjcmliZSA9IGZ1bmN0aW9uKGRpc2N1 c3Npb25LZXksIHRhcmdldERpdikgewogICAgdmFyIHVybCA9IHRoaXMuX19iYXNl VXJsICsgJy9Gb3J1bXMvRm9ydW1EaXNjdXNzaW9uVW5TdWJzY3JpYmU/JyArICdw bGNrRGlzY3Vzc2lvbklkPScgKyBkaXNjdXNzaW9uS2V5ICsgJyZwbGNrRWxlbWVu dElkPScgKyB0YXJnZXREaXY7CiAgICB0aGlzLl9fU2VuZCh1cmwsICJGb3J1bURp c2N1c3Npb25VblN1YnNjcmliZSIpOwogICAgcmV0dXJuIGZhbHNlOwp9CgoKU2l0 ZUxpZmVQcm94eS5wcm90b3R5cGUuUmVjb21tZW5kID0gZnVuY3Rpb24oa2V5VHlw ZSwgdGFyZ2V0S2V5LCBwYXJlbnRVcmwpIHsKICAgIGtleVR5cGUgPSBrZXlUeXBl IHx8ICJFeHRlcm5hbFJlc291cmNlIjsKICAgIHRhcmdldEtleSA9IHRhcmdldEtl eSB8fCBnU2l0ZUxpZmUuX19TdHJpcEFuY2hvckZyb21Vcmwod2luZG93LmxvY2F0 aW9uLmhyZWYpOwogICAgcGFyZW50VXJsID0gcGFyZW50VXJsIHx8IHdpbmRvdy5s b2NhdGlvbi5ocmVmOwogICAgdGFyZ2V0S2V5ID0gdGFyZ2V0S2V5OwogICAgdmFy IGRpdklkID0gIlJlY29tbWVuZCIgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAg IHRoaXMuV3JpdGVEaXYoZGl2SWQsICJSZWNvbW1lbmQiKTsKICAgIHZhciB1cmwg PSB0aGlzLl9fYmFzZVVybCArIAogICAgICAgICcvUmVjb21tZW5kL1JlY29tbWVu ZD9wbGNrRWxlbWVudElkPScgKyBkaXZJZCArIAogICAgICAgICcmcGxja1Rhcmdl dEtleT0nICsgZ1NpdGVMaWZlLkVzY2FwZVZhbHVlKHRhcmdldEtleSkgKyAKICAg ICAgICAnJnBsY2tUYXJnZXRLZXlUeXBlPScgKyBrZXlUeXBlICsKICAgICAgICAn JnBsY2tUYXJnZXRVcmw9JyArIGdTaXRlTGlmZS5Fc2NhcGVWYWx1ZShwYXJlbnRV cmwpOwogICAgdGhpcy5fX1NlbmQodXJsKTsKICAgIHJldHVybiBmYWxzZTsgICAK fQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuUG9zdFJlY29tbWVuZGF0aW9uID0g ZnVuY3Rpb24oa2V5VHlwZSwgdGFyZ2V0S2V5LCByZWNvbW1lbmREaXYsIHBhcmVu dFRpdGxlLCBwYXJlbnRVcmwpIHsKICAgIHBhcmVudFVybCA9IHBhcmVudFVybCB8 fCB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgIHZhciB1cmwgPSB0aGlzLl9fYmFz ZVVybCArIAogICAgICAgICcvUmVjb21tZW5kL1Bvc3RSZWNvbW1lbmRhdGlvbj9w bGNrRWxlbWVudElkPScgKyByZWNvbW1lbmREaXYgKyAKICAgICAgICAnJnBsY2tU YXJnZXRLZXk9JyArIGdTaXRlTGlmZS5Fc2NhcGVWYWx1ZSh0YXJnZXRLZXkpICsg CiAgICAgICAgJyZwbGNrVGFyZ2V0S2V5VHlwZT0nICsga2V5VHlwZSArCiAgICAg ICAgJyZwbGNrVGFyZ2V0VXJsPScgKyBnU2l0ZUxpZmUuRXNjYXBlVmFsdWUocGFy ZW50VXJsKTsKICAgIGlmKHBhcmVudFRpdGxlKSB1cmwgKz0gJyZwbGNrUGFyZW50 VGl0bGU9JyArIGdTaXRlTGlmZS5Fc2NhcGVWYWx1ZShwYXJlbnRUaXRsZSk7CiAg ICAKICAgIHRoaXMuX19TZW5kKHVybCk7CiAgICByZXR1cm4gZmFsc2U7Cn0KCgpT aXRlTGlmZVByb3h5LnByb3RvdHlwZS5SYXRlSXRlbSA9IGZ1bmN0aW9uIChpdGVt SWQsIGl0ZW1UeXBlLCByYXRpbmcsIHRhcmdldERpdiwgcGFyZW50VGl0bGUsIHBh cmVudFVybCkgewogICAgdmFyIHVybCA9IHRoaXMuX19iYXNlVXJsICsgJy9SYXRp bmcvUmF0ZT9wbGNrRWxlbWVudElkPScgKyB0YXJnZXREaXYgKyAKICAgICAgICAn JnBsY2tUYXJnZXRLZXk9JyArIGdTaXRlTGlmZS5Fc2NhcGVWYWx1ZShpdGVtSWQp ICsgCiAgICAgICAgJyZwbGNrVGFyZ2V0S2V5VHlwZT0nICsgaXRlbVR5cGUgKyAK ICAgICAgICAnJnBsY2tSYXRpbmc9JyArIHJhdGluZyArCiAgICAgICAgJyZwbGNr VGFyZ2V0VXJsPScgKyBnU2l0ZUxpZmUuRXNjYXBlVmFsdWUocGFyZW50VXJsKTsK ICAgICAgICBpZihwYXJlbnRUaXRsZSkgdXJsICs9ICcmcGxja1BhcmVudFRpdGxl PScgKyBwYXJlbnRUaXRsZTsKICAgIHRoaXMuX19TZW5kKHVybCk7CiAgICByZXR1 cm4gZmFsc2U7Cn0KClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlJhdGluZyA9IGZ1 bmN0aW9uKGl0ZW1UeXBlLCBpdGVtSWQsIHBhcmVudFVybCkgewogICAgaXRlbVR5 cGUgPSBpdGVtVHlwZSB8fCAiRXh0ZXJuYWxSZXNvdXJjZSI7CiAgICBpdGVtSWQg PSBpdGVtSWQgfHwgZ1NpdGVMaWZlLl9fU3RyaXBBbmNob3JGcm9tVXJsKHdpbmRv dy5sb2NhdGlvbi5ocmVmKTsKICAgIHBhcmVudFVybCA9IHBhcmVudFVybCB8fCB3 aW5kb3cubG9jYXRpb24uaHJlZjsKICAgIHZhciBkaXZJZCA9IGl0ZW1JZCArICJf cGxja1JhdGVEaXZfIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgTWF0aC5mbG9v cihNYXRoLnJhbmRvbSgpKjEwMDApOwogICAgdGhpcy5Xcml0ZURpdihkaXZJZCwg IlJhdGluZyIpOwogICAgdmFyIHVybCA9IHRoaXMuX19iYXNlVXJsICsgJy9SYXRp bmcvR2V0UmF0aW5nP3BsY2tFbGVtZW50SWQ9JyArIGRpdklkICsKICAgICAgICAn JnBsY2tUYXJnZXRLZXk9JyArIGdTaXRlTGlmZS5Fc2NhcGVWYWx1ZShpdGVtSWQp ICsgCiAgICAgICAgJyZwbGNrVGFyZ2V0S2V5VHlwZT0nICsgaXRlbVR5cGUgKwog ICAgICAgICcmcGxja1RhcmdldFVybD0nICsgZ1NpdGVMaWZlLkVzY2FwZVZhbHVl KHBhcmVudFVybCk7CiAgICB0aGlzLl9fU2VuZCh1cmwpOwogICAgcmV0dXJuIGZh bHNlOyAgIAp9CgpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5SYXRpbmdDbGlja1N0 YXIgPSBmdW5jdGlvbiAoaW5kZXgsIHRhcmdldEtleSwgdGFyZ2V0S2V5VHlwZSwg dGFyZ2V0RGl2LCBwYXJlbnRUaXRsZSwgcGFyZW50VXJsKSB7CiAgICBnU2l0ZUxp ZmUuUmF0ZUl0ZW0odGFyZ2V0S2V5LCB0YXJnZXRLZXlUeXBlLCBpbmRleCwgdGFy Z2V0RGl2LCBwYXJlbnRUaXRsZSwgcGFyZW50VXJsKTsKICAgIAp9CgpTaXRlTGlm ZVByb3h5LnByb3RvdHlwZS5SYXRpbmdGaWxsU3RhciA9IGZ1bmN0aW9uKGluZGV4 LCB0YXJnZXRLZXksIGxibCkgewogICAgdmFyIHN0YXJzID0gZG9jdW1lbnQuZ2V0 RWxlbWVudHNCeU5hbWUodGFyZ2V0S2V5KyJTdGFycyIpOwogICAgdmFyIGxhYmVs ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0S2V5ICsgIlJhdGluZy1s YWJlbCIpOwogICAgdmFyIHNlbGVjdGVkSW5kZXggPSBwYXJzZUludChkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRLZXkrIlJhdGluZy12YWx1ZSIpLnZhbHVl KTsKICAgIAogICAgaWYgKGluZGV4IDwgMCAmJiBzZWxlY3RlZEluZGV4ID49IDAp IGluZGV4ID0gc2VsZWN0ZWRJbmRleDsKICAgIGZvcihpPTE7IGkgPD0gc3RhcnMu bGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoaW5kZXggPiAwICYmIGkgPD0gaW5k ZXgpIHsKICAgICAgICAgICAgc3RhcnNbaS0xXS5zcmMgPSB0aGlzLl9fYmFzZVVy bCArICIvQ29udGVudC9pbWFnZXMvaWNvbnMvZnVsbHN0YXIuZ2lmIjsKICAgICAg ICB9ZWxzZSB7CiAgICAgICAgICAgIHN0YXJzW2ktMV0uc3JjID0gdGhpcy5fX2Jh c2VVcmwgKyAiL0NvbnRlbnQvaW1hZ2VzL2ljb25zL2VtcHR5c3Rhci5naWYiOwog ICAgICAgIH0KICAgIH0KICAgIGxhYmVsLmlubmVySFRNTCA9IGxibDsKfQoKU2l0 ZUxpZmVQcm94eS5wcm90b3R5cGUuUmV2aWV3ID0gZnVuY3Rpb24ocGFyZW50S2V5 VHlwZSwgcGFyZW50S2V5LCByZXZpZXdlZFRpdGxlLCByZXZpZXdDYXRlZ29yeSwg cGFnZVNpemUsIHNvcnQsIGN1cnJlbnRQYWdlKSB7CiAgICAKICAgIHZhciBkaXZJ ZCA9ICJSZXZpZXdzX0NvbnRhaW5lciI7CiAgICB0aGlzLldyaXRlRGl2KGRpdklk KTsKICAgIHJldHVybiB0aGlzLkdldFJldmlld3MocGFyZW50S2V5VHlwZSwgcGFy ZW50S2V5LCByZXZpZXdlZFRpdGxlLCByZXZpZXdDYXRlZ29yeSwgcGFnZVNpemUs IHNvcnQsIGN1cnJlbnRQYWdlKTsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUu UmV2aWV3Q2xpY2tTdGFyID0gZnVuY3Rpb24gKGluZGV4LCB0YXJnZXRLZXkpIHsK ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldEtleSsiUmF0aW5nLXZh bHVlIikudmFsdWUgPSBpbmRleDsKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUu R2V0UmV2aWV3cyA9IGZ1bmN0aW9uKHBhcmVudEtleVR5cGUsIHBhcmVudEtleSwg cmV2aWV3ZWRUaXRsZSwgcmV2aWV3Q2F0ZWdvcnksIHBhZ2VTaXplLCBzb3J0LCBj dXJyZW50UGFnZSkgewogICAgcGFyZW50S2V5VHlwZSA9IHBhcmVudEtleVR5cGUg fHwgIkV4dGVybmFsUmVzb3VyY2UiOwogICAgcGFyZW50S2V5ID0gZ1NpdGVMaWZl LkVzY2FwZVZhbHVlKHBhcmVudEtleSkgfHwgZ1NpdGVMaWZlLkVzY2FwZVZhbHVl KGdTaXRlTGlmZS5fX1N0cmlwQW5jaG9yRnJvbVVybCh3aW5kb3cubG9jYXRpb24u aHJlZikpOwogICAgcmV2aWV3ZWRUaXRsZSA9IGdTaXRlTGlmZS5Fc2NhcGVWYWx1 ZShyZXZpZXdlZFRpdGxlKSB8fCBnU2l0ZUxpZmUuRXNjYXBlVmFsdWUoZG9jdW1l bnQudGl0bGUpOwogICAgcmV2aWV3Q2F0ZWdvcnkgPSByZXZpZXdDYXRlZ29yeSB8 fCAiVW5jYXRlZ29yaXplZCI7CiAgICBwYWdlU2l6ZSA9IHBhZ2VTaXplIHx8IDEw OwogICAgc29ydCA9IHNvcnQgfHwgIlRpbWVTdGFtcEFzY2VuZGluZyI7CiAgICBj dXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlIHx8IDA7CiAgICB2YXIgdXJsID0gdGhp cy5fX2Jhc2VVcmwgKyAnL1Jldmlldy9SZXZpZXdzP3BsY2tFbGVtZW50SWQ9UmV2 aWV3c19Db250YWluZXInICsKICAgICAgICAnJnBsY2tUYXJnZXRLZXk9JyArIHBh cmVudEtleSArIAogICAgICAgICcmcGxja1RhcmdldEtleVR5cGU9JyArIHBhcmVu dEtleVR5cGUgKwogICAgICAgICcmcGxja1Jldmlld2VkVGl0bGU9JyArIHJldmll d2VkVGl0bGUgKwogICAgICAgICcmcGxja1Jldmlld0NhdGVnb3J5PScgKyByZXZp ZXdDYXRlZ29yeSArCiAgICAgICAgJyZwbGNrU29ydD0nICsgc29ydCArIAogICAg ICAgICcmcGxja1BhcmVudFVybD0nICsgZ1NpdGVMaWZlLkVzY2FwZVZhbHVlKGdT aXRlTGlmZS5fX1N0cmlwQW5jaG9yRnJvbVVybCh3aW5kb3cubG9jYXRpb24uaHJl ZikpICsgCiAgICAgICAgJyZwbGNrUGFyZW50VGl0bGU9JyArIGdTaXRlTGlmZS5F c2NhcGVWYWx1ZShkb2N1bWVudC50aXRsZSkgKwogICAgICAgICcmcGxja0N1cnJl bnRQYWdlPScgKyBjdXJyZW50UGFnZSArCiAgICAgICAgJyZwbGNrUGFnZVNpemU9 JyArIHBhZ2VTaXplOwogICAgdGhpcy5fX1NlbmQodXJsKTsKICAgIHJldHVybiBm YWxzZTsgICAKfQoKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuU3VtbWFyeUFydGlj bGVzTW9zdENvbW1lbnRlZCA9IGZ1bmN0aW9uKGNvdW50KSB7CiByZXR1cm4gdGhp cy5TdW1tYXJ5UGFuZWwoIlN1bW1hcnlBcnRpY2xlc01vc3RDb21tZW50ZWQiLCBj b3VudCk7IAp9IApTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5TdW1tYXJ5QXJ0aWNs ZXNNb3N0UmVjb21tZW5kZWQgPSBmdW5jdGlvbihjb3VudCkgewogcmV0dXJuIHRo aXMuU3VtbWFyeVBhbmVsKCJTdW1tYXJ5QXJ0aWNsZXNNb3N0UmVjb21tZW5kZWQi LCBjb3VudCk7IAp9IApTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5TdW1tYXJ5UGhv dG9zUmVjZW50UGhvdG9zQnlUYWcgPSBmdW5jdGlvbihjb3VudCwgdGFnRmlsdGVy LCBmaWx0ZXJCeVNpdGVPZk9yaWdpbikgewogcmV0dXJuIHRoaXMuU3VtbWFyeVBh bmVsKCJTdW1tYXJ5UGhvdG9zUmVjZW50UGhvdG9zQnlUYWciLCBjb3VudCwgdGFn RmlsdGVyLCBmaWx0ZXJCeVNpdGVPZk9yaWdpbik7IAp9IApTaXRlTGlmZVByb3h5 LnByb3RvdHlwZS5TdW1tYXJ5UGhvdG9zUmVjZW50VXNlclBob3RvcyA9IGZ1bmN0 aW9uKGNvdW50LCB0YWdGaWx0ZXIsIGZpbHRlckJ5U2l0ZU9mT3JpZ2luKSB7CiBy ZXR1cm4gdGhpcy5TdW1tYXJ5UGFuZWwoIlN1bW1hcnlQaG90b3NSZWNlbnRVc2Vy UGhvdG9zIiwgY291bnQsIHRhZ0ZpbHRlciwgZmlsdGVyQnlTaXRlT2ZPcmlnaW4p Owp9IApTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5TdW1tYXJ5UGhvdG9zUmVjZW50 UGhvdG9zID0gZnVuY3Rpb24oY291bnQsIHRhZ0ZpbHRlciwgZmlsdGVyQnlTaXRl T2ZPcmlnaW4pIHsKIHJldHVybiB0aGlzLlN1bW1hcnlQYW5lbCgiU3VtbWFyeVBo b3Rvc1JlY2VudFBob3RvcyIsIGNvdW50LCB0YWdGaWx0ZXIsIGZpbHRlckJ5U2l0 ZU9mT3JpZ2luKTsgCn0gClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlN1bW1hcnlQ aG90b3NNb3N0UmVjb21tZW5kZWRQaG90b3MgPSBmdW5jdGlvbihjb3VudCwgZmls dGVyQnlTaXRlT2ZPcmlnaW4pIHsKIHJldHVybiB0aGlzLlN1bW1hcnlQYW5lbCgi U3VtbWFyeVBob3Rvc01vc3RSZWNvbW1lbmRlZFBob3RvcyIsIGNvdW50LCAiIiwg ZmlsdGVyQnlTaXRlT2ZPcmlnaW4pOyAKfSAKU2l0ZUxpZmVQcm94eS5wcm90b3R5 cGUuU3VtbWFyeVBob3Rvc01vc3RSZWNvbW1lbmRlZFVzZXJQaG90b3MgPSBmdW5j dGlvbihjb3VudCwgZmlsdGVyQnlTaXRlT2ZPcmlnaW4pIHsKIHJldHVybiB0aGlz LlN1bW1hcnlQYW5lbCgiU3VtbWFyeVBob3Rvc01vc3RSZWNvbW1lbmRlZFVzZXJQ aG90b3MiLCBjb3VudCwgIiIsIGZpbHRlckJ5U2l0ZU9mT3JpZ2luKTsgCn0gClNp dGVMaWZlUHJveHkucHJvdG90eXBlLlN1bW1hcnlQaG90b3NNb3N0UmVjb21tZW5k ZWRHYWxsZXJpZXMgPSBmdW5jdGlvbihjb3VudCkgewogcmV0dXJuIHRoaXMuU3Vt bWFyeVBhbmVsKCJTdW1tYXJ5UGhvdG9zTW9zdFJlY29tbWVuZGVkR2FsbGVyaWVz IiwgY291bnQpOyAKfSAKU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuU3VtbWFyeUZv cnVtc1JlY2VudERpc2N1c3Npb25zID0gZnVuY3Rpb24oY291bnQsIGZpbHRlckJ5 U2l0ZU9mT3JpZ2luLCBwYXJlbnRJZHMpIHsKICAgIHZhciBkaXZJZD0gIlN1bW1h cnlfQ29udGFpbmVyIiArIHRoaXMuU0lEOwogICAgaWYodGhpcy5udW1TdW1tYXJ5 V2lkZ2V0cyl7IGRpdklkICs9IHRoaXMubnVtU3VtbWFyeVdpZGdldHMrKzsgfSBl bHNlIHsgdGhpcy5udW1TdW1tYXJ5V2lkZ2V0cyA9IDE7IH0KICAgIHRoaXMuV3Jp dGVEaXYoZGl2SWQsIGRpdklkKTsKICAgIHZhciBtZXRob2ROYW1lID0gIlN1bW1h cnlGb3J1bXNSZWNlbnREaXNjdXNzaW9ucyI7CiAgICB2YXIgdGFnRmlsdGVyID0g IiI7CiAgICByZXR1cm4gdGhpcy5TdW1tYXJ5U2VuZChtZXRob2ROYW1lLCBkaXZJ ZCwgZGl2SWQgKyAiU2NyaXB0IiwgInBsY2tDb3VudCIsIGNvdW50LCAicGxja1Rh Z0ZpbHRlciIsIHRhZ0ZpbHRlciwgInBsY2tGaWx0ZXJCeVNpdGVPZk9yaWdpbiIs IGZpbHRlckJ5U2l0ZU9mT3JpZ2luLCAicGxja1BhcmVudElkcyIsIHBhcmVudElk cyk7Cn0gClNpdGVMaWZlUHJveHkucHJvdG90eXBlLlN1bW1hcnlCbG9nc1JlY2Vu dCA9IGZ1bmN0aW9uKGNvdW50LCB0YWdGaWx0ZXIpIHsKICAgIHJldHVybiB0aGlz LlN1bW1hcnlQYW5lbCgiU3VtbWFyeUJsb2dzUmVjZW50IiwgY291bnQsIHRhZ0Zp bHRlcik7Cn0KU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuU3VtbWFyeUJsb2dzUmVj ZW50UG9zdHNCeVRhZyA9IGZ1bmN0aW9uKGNvdW50LCB0YWdGaWx0ZXIsIGZpbHRl ckJ5U2l0ZU9mT3JpZ2luKSB7CiByZXR1cm4gdGhpcy5TdW1tYXJ5UGFuZWwoIlN1 bW1hcnlCbG9nc1JlY2VudFBvc3RzQnlUYWciLCBjb3VudCwgdGFnRmlsdGVyLCBm aWx0ZXJCeVNpdGVPZk9yaWdpbik7IAp9IApTaXRlTGlmZVByb3h5LnByb3RvdHlw ZS5TdW1tYXJ5QmxvZ3NSZWNlbnRQb3N0cyA9IGZ1bmN0aW9uKGNvdW50LCB0YWdG aWx0ZXIsIGZpbHRlckJ5U2l0ZU9mT3JpZ2luKSB7CiByZXR1cm4gdGhpcy5TdW1t YXJ5UGFuZWwoIlN1bW1hcnlCbG9nc1JlY2VudFBvc3RzIiwgY291bnQsIHRhZ0Zp bHRlciwgZmlsdGVyQnlTaXRlT2ZPcmlnaW4pOyAKfSAKU2l0ZUxpZmVQcm94eS5w cm90b3R5cGUuU3VtbWFyeUJsb2dzTW9zdFJlY29tbWVuZGVkUG9zdHMgPSBmdW5j dGlvbihjb3VudCwgdGFnRmlsdGVyLCBmaWx0ZXJCeVNpdGVPZk9yaWdpbikgewog ICAgcmV0dXJuIHRoaXMuU3VtbWFyeVBhbmVsKCJTdW1tYXJ5QmxvZ3NNb3N0UmVj b21tZW5kZWRQb3N0cyIsIGNvdW50LCB0YWdGaWx0ZXIsIGZpbHRlckJ5U2l0ZU9m T3JpZ2luKTsKfQpTaXRlTGlmZVByb3h5LnByb3RvdHlwZS5TdW1tYXJ5UGVyc29u YVByb2ZpbGVSZWNlbnQgPSBmdW5jdGlvbihjb3VudCkgewogICAgcmV0dXJuIHRo aXMuU3VtbWFyeVBhbmVsKCJTdW1tYXJ5UGVyc29uYVByb2ZpbGVSZWNlbnQiLCBj b3VudCk7Cn0KU2l0ZUxpZmVQcm94eS5wcm90b3R5cGUuU3VtbWFyeVBhbmVsID0g ZnVuY3Rpb24obWV0aG9kTmFtZSwgY291bnQsIHRhZ0ZpbHRlciwgZmlsdGVyQnlT aXRlT2ZPcmlnaW4pIHsKICAgIHZhciBkaXZJZD0gIlN1bW1hcnlfQ29udGFpbmVy IiArIHRoaXMuU0lEOwogICAgaWYodGhpcy5udW1TdW1tYXJ5V2lkZ2V0cyl7IGRp dklkICs9IHRoaXMubnVtU3VtbWFyeVdpZGdldHMrKzsgfSBlbHNlIHsgdGhpcy5u dW1TdW1tYXJ5V2lkZ2V0cyA9IDE7IH0KICAgIHRoaXMuV3JpdGVEaXYoZGl2SWQs IGRpdklkKTsKICAgIHJldHVybiB0aGlzLlN1bW1hcnlTZW5kKG1ldGhvZE5hbWUs IGRpdklkLCBkaXZJZCArICJTY3JpcHQiLCAicGxja0NvdW50IiwgY291bnQsICJw bGNrVGFnRmlsdGVyIiwgdGFnRmlsdGVyLCAicGxja0ZpbHRlckJ5U2l0ZU9mT3Jp Z2luIiwgZmlsdGVyQnlTaXRlT2ZPcmlnaW4pOwp9ClNpdGVMaWZlUHJveHkucHJv dG90eXBlLlN1bW1hcnlTZW5kID0gZnVuY3Rpb24oQXBpTmFtZSwgRGVzdERpdiwg U2NyaXB0TmFtZSkgewogICAgdmFyIHVybCA9IHRoaXMuX19iYXNlVXJsICsgJy9T dW1tYXJ5LycgKyBBcGlOYW1lICsgJz9wbGNrRWxlbWVudElkPScgKyBEZXN0RGl2 OwogICAgZm9yKGlpPTM7IGlpPCB0aGlzLlN1bW1hcnlTZW5kLmFyZ3VtZW50cy5s ZW5ndGg7IGlpKz0yKSB7IGlmKHRoaXMuU3VtbWFyeVNlbmQuYXJndW1lbnRzW2lp KzFdKSB7IHVybCArPSAiJiIgKyB0aGlzLlN1bW1hcnlTZW5kLmFyZ3VtZW50c1tp aV0gKyAiPSIgKyB0aGlzLlN1bW1hcnlTZW5kLmFyZ3VtZW50c1tpaSsxXTt9IH0K ICAgIHRoaXMuX19TZW5kKHVybCwgU2NyaXB0TmFtZSk7CiAgICByZXR1cm4gZmFs c2U7Cn0KCgoKCnZhciBnU2l0ZUxpZmUgPSBuZXcgU2l0ZUxpZmVQcm94eSgiaHR0 cDovLyIrY29tbWVudHNSb290VXJsKyIvdmVyMS4wIik7CmdTaXRlTGlmZS5hcGlL ZXkgPSAiJHtBUElLZXl9IjsKZ1NpdGVMaWZlLlNJRCA9IGNvbW1lbnRzUm9vdFVy bDsKCgoKICAgIC8vIFdlIG5lZWQgdG8gcmV0dXJuIHRydWUgaGVyZSBhcyBvdXIg ZGVmYXVsdCBiZWhhdmlvciBhbGxvd2luZyBub3JtYWwgbGluayBuYXZpZ2F0aW9u CiAgICBnU2l0ZUxpZmUuQWRkRXZlbnRIYW5kbGVyKCdFeHRlcm5hbFJlc291cmNl TGluaycsIGZ1bmN0aW9uKCkge3JldHVybiB0cnVlO30pOwoKaWYoZ1NpdGVMaWZl LkdldFBhcmFtZXRlcigncGxja1BlcnNvbmFQYWdlJykgJiYgZ1NpdGVMaWZlLkdl dFBhcmFtZXRlcigncGxja1BlcnNvbmFQYWdlJykuaW5kZXhPZignUGVyc29uYUJs b2cnKSA9PSAwKSB7CmRvY3VtZW50LndyaXRlKCI8bGluayBocmVmPSdodHRwOi8v IiArY29tbWVudHNSb290VXJsKyAiL3ZlcjEuMC9ibG9nL0Jsb2dSc3M/cGxja0Js b2dJZD0iICsgZ1NpdGVMaWZlLkdldFBhcmFtZXRlcigndXNlcklkJykgKyAiJyB0 aXRsZT0nIiArIGdTaXRlTGlmZS5HZXRQYXJhbWV0ZXIoJ3VzZXJJZCcpICsgIiBC bG9nJyIgKyAicmVsPSdhbHRlcm5hdGUnIHR5cGU9J2FwcGxpY2F0aW9uL3Jzcyt4 bWwnIC8+Iik7IH0K ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=yahoo-min.js Content-Type: application/javascript; charset=ISO-8859-1; name=yahoo-min.js Content-Location: http://business.timesonline.co.uk/tol/js/yahoo-min.js Content-Transfer-Encoding: Base64 LyoNCkNvcHlyaWdodCAoYykgMjAwOCwgWWFob28hIEluYy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCkNvZGUgbGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlOg0K aHR0cDovL2RldmVsb3Blci55YWhvby5uZXQveXVpL2xpY2Vuc2UudHh0DQp2ZXJz aW9uOiAyLjYuMA0KKi8NCmlmKHR5cGVvZiBZQUhPTz09InVuZGVmaW5lZCJ8fCFZ QUhPTyl7dmFyIFlBSE9PPXt9O31ZQUhPTy5uYW1lc3BhY2U9ZnVuY3Rpb24oKXt2 YXIgQT1hcmd1bWVudHMsRT1udWxsLEMsQixEO2ZvcihDPTA7QzxBLmxlbmd0aDtD PUMrMSl7RD1BW0NdLnNwbGl0KCIuIik7RT1ZQUhPTztmb3IoQj0oRFswXT09IllB SE9PIik/MTowO0I8RC5sZW5ndGg7Qj1CKzEpe0VbRFtCXV09RVtEW0JdXXx8e307 RT1FW0RbQl1dO319cmV0dXJuIEU7fTtZQUhPTy5sb2c9ZnVuY3Rpb24oRCxBLEMp e3ZhciBCPVlBSE9PLndpZGdldC5Mb2dnZXI7aWYoQiYmQi5sb2cpe3JldHVybiBC LmxvZyhELEEsQyk7fWVsc2V7cmV0dXJuIGZhbHNlO319O1lBSE9PLnJlZ2lzdGVy PWZ1bmN0aW9uKEEsRSxEKXt2YXIgST1ZQUhPTy5lbnYubW9kdWxlcztpZighSVtB XSl7SVtBXT17dmVyc2lvbnM6W10sYnVpbGRzOltdfTt9dmFyIEI9SVtBXSxIPUQu dmVyc2lvbixHPUQuYnVpbGQsRj1ZQUhPTy5lbnYubGlzdGVuZXJzO0IubmFtZT1B O0IudmVyc2lvbj1IO0IuYnVpbGQ9RztCLnZlcnNpb25zLnB1c2goSCk7Qi5idWls ZHMucHVzaChHKTtCLm1haW5DbGFzcz1FO2Zvcih2YXIgQz0wO0M8Ri5sZW5ndGg7 Qz1DKzEpe0ZbQ10oQik7fWlmKEUpe0UuVkVSU0lPTj1IO0UuQlVJTEQ9Rzt9ZWxz ZXtZQUhPTy5sb2coIm1haW5DbGFzcyBpcyB1bmRlZmluZWQgZm9yIG1vZHVsZSAi K0EsIndhcm4iKTt9fTtZQUhPTy5lbnY9WUFIT08uZW52fHx7bW9kdWxlczpbXSxs aXN0ZW5lcnM6W119O1lBSE9PLmVudi5nZXRWZXJzaW9uPWZ1bmN0aW9uKEEpe3Jl dHVybiBZQUhPTy5lbnYubW9kdWxlc1tBXXx8bnVsbDt9O1lBSE9PLmVudi51YT1m dW5jdGlvbigpe3ZhciBDPXtpZTowLG9wZXJhOjAsZ2Vja286MCx3ZWJraXQ6MCxt b2JpbGU6bnVsbCxhaXI6MH07dmFyIEI9bmF2aWdhdG9yLnVzZXJBZ2VudCxBO2lm KCgvS0hUTUwvKS50ZXN0KEIpKXtDLndlYmtpdD0xO31BPUIubWF0Y2goL0FwcGxl V2ViS2l0XC8oW15cc10qKS8pO2lmKEEmJkFbMV0pe0Mud2Via2l0PXBhcnNlRmxv YXQoQVsxXSk7aWYoLyBNb2JpbGVcLy8udGVzdChCKSl7Qy5tb2JpbGU9IkFwcGxl Ijt9ZWxzZXtBPUIubWF0Y2goL05va2lhTlteXC9dKi8pO2lmKEEpe0MubW9iaWxl PUFbMF07fX1BPUIubWF0Y2goL0Fkb2JlQUlSXC8oW15cc10qKS8pO2lmKEEpe0Mu YWlyPUFbMF07fX1pZighQy53ZWJraXQpe0E9Qi5tYXRjaCgvT3BlcmFbXHNcL10o W15cc10qKS8pO2lmKEEmJkFbMV0pe0Mub3BlcmE9cGFyc2VGbG9hdChBWzFdKTtB PUIubWF0Y2goL09wZXJhIE1pbmlbXjtdKi8pO2lmKEEpe0MubW9iaWxlPUFbMF07 fX1lbHNle0E9Qi5tYXRjaCgvTVNJRVxzKFteO10qKS8pO2lmKEEmJkFbMV0pe0Mu aWU9cGFyc2VGbG9hdChBWzFdKTt9ZWxzZXtBPUIubWF0Y2goL0dlY2tvXC8oW15c c10qKS8pO2lmKEEpe0MuZ2Vja289MTtBPUIubWF0Y2goL3J2OihbXlxzXCldKikv KTtpZihBJiZBWzFdKXtDLmdlY2tvPXBhcnNlRmxvYXQoQVsxXSk7fX19fX1yZXR1 cm4gQzt9KCk7KGZ1bmN0aW9uKCl7WUFIT08ubmFtZXNwYWNlKCJ1dGlsIiwid2lk Z2V0IiwiZXhhbXBsZSIpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFlBSE9PX2Nv bmZpZyl7dmFyIEI9WUFIT09fY29uZmlnLmxpc3RlbmVyLEE9WUFIT08uZW52Lmxp c3RlbmVycyxEPXRydWUsQztpZihCKXtmb3IoQz0wO0M8QS5sZW5ndGg7Qz1DKzEp e2lmKEFbQ109PUIpe0Q9ZmFsc2U7YnJlYWs7fX1pZihEKXtBLnB1c2goQik7fX19 fSkoKTtZQUhPTy5sYW5nPVlBSE9PLmxhbmd8fHt9OyhmdW5jdGlvbigpe3ZhciBB PVlBSE9PLmxhbmcsQz1bInRvU3RyaW5nIiwidmFsdWVPZiJdLEI9e2lzQXJyYXk6 ZnVuY3Rpb24oRCl7aWYoRCl7cmV0dXJuIEEuaXNOdW1iZXIoRC5sZW5ndGgpJiZB LmlzRnVuY3Rpb24oRC5zcGxpY2UpO31yZXR1cm4gZmFsc2U7fSxpc0Jvb2xlYW46 ZnVuY3Rpb24oRCl7cmV0dXJuIHR5cGVvZiBEPT09ImJvb2xlYW4iO30saXNGdW5j dGlvbjpmdW5jdGlvbihEKXtyZXR1cm4gdHlwZW9mIEQ9PT0iZnVuY3Rpb24iO30s aXNOdWxsOmZ1bmN0aW9uKEQpe3JldHVybiBEPT09bnVsbDt9LGlzTnVtYmVyOmZ1 bmN0aW9uKEQpe3JldHVybiB0eXBlb2YgRD09PSJudW1iZXIiJiZpc0Zpbml0ZShE KTt9LGlzT2JqZWN0OmZ1bmN0aW9uKEQpe3JldHVybihEJiYodHlwZW9mIEQ9PT0i b2JqZWN0Inx8QS5pc0Z1bmN0aW9uKEQpKSl8fGZhbHNlO30saXNTdHJpbmc6ZnVu Y3Rpb24oRCl7cmV0dXJuIHR5cGVvZiBEPT09InN0cmluZyI7fSxpc1VuZGVmaW5l ZDpmdW5jdGlvbihEKXtyZXR1cm4gdHlwZW9mIEQ9PT0idW5kZWZpbmVkIjt9LF9J RUVudW1GaXg6KFlBSE9PLmVudi51YS5pZSk/ZnVuY3Rpb24oRixFKXtmb3IodmFy IEQ9MDtEPEMubGVuZ3RoO0Q9RCsxKXt2YXIgSD1DW0RdLEc9RVtIXTtpZihBLmlz RnVuY3Rpb24oRykmJkchPU9iamVjdC5wcm90b3R5cGVbSF0pe0ZbSF09Rzt9fX06 ZnVuY3Rpb24oKXt9LGV4dGVuZDpmdW5jdGlvbihILEksRyl7aWYoIUl8fCFIKXt0 aHJvdyBuZXcgRXJyb3IoImV4dGVuZCBmYWlsZWQsIHBsZWFzZSBjaGVjayB0aGF0 ICIrImFsbCBkZXBlbmRlbmNpZXMgYXJlIGluY2x1ZGVkLiIpO312YXIgRT1mdW5j dGlvbigpe307RS5wcm90b3R5cGU9SS5wcm90b3R5cGU7SC5wcm90b3R5cGU9bmV3 IEUoKTtILnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IO0guc3VwZXJjbGFzcz1JLnBy b3RvdHlwZTtpZihJLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj09T2JqZWN0LnByb3Rv dHlwZS5jb25zdHJ1Y3Rvcil7SS5wcm90b3R5cGUuY29uc3RydWN0b3I9STt9aWYo Ryl7Zm9yKHZhciBEIGluIEcpe2lmKEEuaGFzT3duUHJvcGVydHkoRyxEKSl7SC5w cm90b3R5cGVbRF09R1tEXTt9fUEuX0lFRW51bUZpeChILnByb3RvdHlwZSxHKTt9 fSxhdWdtZW50T2JqZWN0OmZ1bmN0aW9uKEgsRyl7aWYoIUd8fCFIKXt0aHJvdyBu ZXcgRXJyb3IoIkFic29yYiBmYWlsZWQsIHZlcmlmeSBkZXBlbmRlbmNpZXMuIik7 fXZhciBEPWFyZ3VtZW50cyxGLEksRT1EWzJdO2lmKEUmJkUhPT10cnVlKXtmb3Io Rj0yO0Y8RC5sZW5ndGg7Rj1GKzEpe0hbRFtGXV09R1tEW0ZdXTt9fWVsc2V7Zm9y KEkgaW4gRyl7aWYoRXx8IShJIGluIEgpKXtIW0ldPUdbSV07fX1BLl9JRUVudW1G aXgoSCxHKTt9fSxhdWdtZW50UHJvdG86ZnVuY3Rpb24oRyxGKXtpZighRnx8IUcp e3Rocm93IG5ldyBFcnJvcigiQXVnbWVudCBmYWlsZWQsIHZlcmlmeSBkZXBlbmRl bmNpZXMuIik7fXZhciBEPVtHLnByb3RvdHlwZSxGLnByb3RvdHlwZV07Zm9yKHZh ciBFPTI7RTxhcmd1bWVudHMubGVuZ3RoO0U9RSsxKXtELnB1c2goYXJndW1lbnRz W0VdKTt9QS5hdWdtZW50T2JqZWN0LmFwcGx5KHRoaXMsRCk7fSxkdW1wOmZ1bmN0 aW9uKEQsSSl7dmFyIEYsSCxLPVtdLEw9InsuLi59IixFPSJmKCl7Li4ufSIsSj0i LCAiLEc9IiA9PiAiO2lmKCFBLmlzT2JqZWN0KEQpKXtyZXR1cm4gRCsiIjt9ZWxz ZXtpZihEIGluc3RhbmNlb2YgRGF0ZXx8KCJub2RlVHlwZSIgaW4gRCYmInRhZ05h bWUiIGluIEQpKXtyZXR1cm4gRDt9ZWxzZXtpZihBLmlzRnVuY3Rpb24oRCkpe3Jl dHVybiBFO319fUk9KEEuaXNOdW1iZXIoSSkpP0k6MztpZihBLmlzQXJyYXkoRCkp e0sucHVzaCgiWyIpO2ZvcihGPTAsSD1ELmxlbmd0aDtGPEg7Rj1GKzEpe2lmKEEu aXNPYmplY3QoRFtGXSkpe0sucHVzaCgoST4wKT9BLmR1bXAoRFtGXSxJLTEpOkwp O31lbHNle0sucHVzaChEW0ZdKTt9Sy5wdXNoKEopO31pZihLLmxlbmd0aD4xKXtL LnBvcCgpO31LLnB1c2goIl0iKTt9ZWxzZXtLLnB1c2goInsiKTtmb3IoRiBpbiBE KXtpZihBLmhhc093blByb3BlcnR5KEQsRikpe0sucHVzaChGK0cpO2lmKEEuaXNP YmplY3QoRFtGXSkpe0sucHVzaCgoST4wKT9BLmR1bXAoRFtGXSxJLTEpOkwpO31l bHNle0sucHVzaChEW0ZdKTt9Sy5wdXNoKEopO319aWYoSy5sZW5ndGg+MSl7Sy5w b3AoKTt9Sy5wdXNoKCJ9Iik7fXJldHVybiBLLmpvaW4oIiIpO30sc3Vic3RpdHV0 ZTpmdW5jdGlvbihTLEUsTCl7dmFyIEksSCxHLE8sUCxSLE49W10sRixKPSJkdW1w IixNPSIgIixEPSJ7IixRPSJ9Ijtmb3IoOzspe0k9Uy5sYXN0SW5kZXhPZihEKTtp ZihJPDApe2JyZWFrO31IPVMuaW5kZXhPZihRLEkpO2lmKEkrMT49SCl7YnJlYWs7 fUY9Uy5zdWJzdHJpbmcoSSsxLEgpO089RjtSPW51bGw7Rz1PLmluZGV4T2YoTSk7 aWYoRz4tMSl7Uj1PLnN1YnN0cmluZyhHKzEpO089Ty5zdWJzdHJpbmcoMCxHKTt9 UD1FW09dO2lmKEwpe1A9TChPLFAsUik7fWlmKEEuaXNPYmplY3QoUCkpe2lmKEEu aXNBcnJheShQKSl7UD1BLmR1bXAoUCxwYXJzZUludChSLDEwKSk7fWVsc2V7Uj1S fHwiIjt2YXIgSz1SLmluZGV4T2YoSik7aWYoSz4tMSl7Uj1SLnN1YnN0cmluZyg0 KTt9aWYoUC50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmd8fEs+ LTEpe1A9QS5kdW1wKFAscGFyc2VJbnQoUiwxMCkpO31lbHNle1A9UC50b1N0cmlu ZygpO319fWVsc2V7aWYoIUEuaXNTdHJpbmcoUCkmJiFBLmlzTnVtYmVyKFApKXtQ PSJ+LSIrTi5sZW5ndGgrIi1+IjtOW04ubGVuZ3RoXT1GO319Uz1TLnN1YnN0cmlu ZygwLEkpK1ArUy5zdWJzdHJpbmcoSCsxKTt9Zm9yKEk9Ti5sZW5ndGgtMTtJPj0w O0k9SS0xKXtTPVMucmVwbGFjZShuZXcgUmVnRXhwKCJ+LSIrSSsiLX4iKSwieyIr TltJXSsifSIsImciKTt9cmV0dXJuIFM7fSx0cmltOmZ1bmN0aW9uKEQpe3RyeXty ZXR1cm4gRC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik7fWNhdGNoKEUpe3JldHVy biBEO319LG1lcmdlOmZ1bmN0aW9uKCl7dmFyIEc9e30sRT1hcmd1bWVudHM7Zm9y KHZhciBGPTAsRD1FLmxlbmd0aDtGPEQ7Rj1GKzEpe0EuYXVnbWVudE9iamVjdChH LEVbRl0sdHJ1ZSk7fXJldHVybiBHO30sbGF0ZXI6ZnVuY3Rpb24oSyxFLEwsRyxI KXtLPUt8fDA7RT1FfHx7fTt2YXIgRj1MLEo9RyxJLEQ7aWYoQS5pc1N0cmluZyhM KSl7Rj1FW0xdO31pZighRil7dGhyb3cgbmV3IFR5cGVFcnJvcigibWV0aG9kIHVu ZGVmaW5lZCIpO31pZighQS5pc0FycmF5KEopKXtKPVtHXTt9ST1mdW5jdGlvbigp e0YuYXBwbHkoRSxKKTt9O0Q9KEgpP3NldEludGVydmFsKEksSyk6c2V0VGltZW91 dChJLEspO3JldHVybntpbnRlcnZhbDpILGNhbmNlbDpmdW5jdGlvbigpe2lmKHRo aXMuaW50ZXJ2YWwpe2NsZWFySW50ZXJ2YWwoRCk7fWVsc2V7Y2xlYXJUaW1lb3V0 KEQpO319fTt9LGlzVmFsdWU6ZnVuY3Rpb24oRCl7cmV0dXJuKEEuaXNPYmplY3Qo RCl8fEEuaXNTdHJpbmcoRCl8fEEuaXNOdW1iZXIoRCl8fEEuaXNCb29sZWFuKEQp KTt9fTtBLmhhc093blByb3BlcnR5PShPYmplY3QucHJvdG90eXBlLmhhc093blBy b3BlcnR5KT9mdW5jdGlvbihELEUpe3JldHVybiBEJiZELmhhc093blByb3BlcnR5 KEUpO306ZnVuY3Rpb24oRCxFKXtyZXR1cm4gIUEuaXNVbmRlZmluZWQoRFtFXSkm JkQuY29uc3RydWN0b3IucHJvdG90eXBlW0VdIT09RFtFXTt9O0IuYXVnbWVudE9i amVjdChBLEIsdHJ1ZSk7WUFIT08udXRpbC5MYW5nPUE7QS5hdWdtZW50PUEuYXVn bWVudFByb3RvO1lBSE9PLmF1Z21lbnQ9QS5hdWdtZW50UHJvdG87WUFIT08uZXh0 ZW5kPUEuZXh0ZW5kO30pKCk7WUFIT08ucmVnaXN0ZXIoInlhaG9vIixZQUhPTyx7 dmVyc2lvbjoiMi42LjAiLGJ1aWxkOiIxMzIxIn0pOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=json-min.js Content-Type: application/javascript; charset=ISO-8859-1; name=json-min.js Content-Location: http://business.timesonline.co.uk/tol/js/json-min.js Content-Transfer-Encoding: Base64 LyoNCkNvcHlyaWdodCAoYykgMjAwOCwgWWFob28hIEluYy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCkNvZGUgbGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlOg0K aHR0cDovL2RldmVsb3Blci55YWhvby5uZXQveXVpL2xpY2Vuc2UudHh0DQp2ZXJz aW9uOiAyLjYuMA0KKi8NCllBSE9PLmxhbmcuSlNPTj0oZnVuY3Rpb24oKXt2YXIg bD1ZQUhPTy5sYW5nLF9VTklDT0RFX0VYQ0VQVElPTlM9L1tcdTAwMDBcdTAwYWRc dTA2MDAtXHUwNjA0XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAy OC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vZyxfRVND QVBFUz0vXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLF9WQUxV RVM9LyJbXiJcXFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCop Pyg/OltlRV1bK1wtXT9cZCspPy9nLF9CUkFDS0VUUz0vKD86Xnw6fCwpKD86XHMq XFspKy9nLF9JTlZBTElEPS9eW1xdLDp7fVxzXSokLyxfU1BFQ0lBTF9DSEFSUz0v W1xcXCJceDAwLVx4MWZceDdmLVx4OWZcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBm XHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUy MDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vZyxfQ0hBUlM9eyJcYiI6IlxcYiIsIlx0 IjoiXFx0IiwiXG4iOiJcXG4iLCJcZiI6IlxcZiIsIlxyIjoiXFxyIiwnIic6J1xc IicsIlxcIjoiXFxcXCJ9O2Z1bmN0aW9uIF9yZXZpdmUoZGF0YSxyZXZpdmVyKXt2 YXIgd2Fsaz1mdW5jdGlvbihvLGtleSl7dmFyIGssdix2YWx1ZT1vW2tleV07aWYo dmFsdWUmJnR5cGVvZiB2YWx1ZT09PSJvYmplY3QiKXtmb3IoayBpbiB2YWx1ZSl7 aWYobC5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSxrKSl7dj13YWxrKHZhbHVlLGspO2lm KHY9PT11bmRlZmluZWQpe2RlbGV0ZSB2YWx1ZVtrXTt9ZWxzZXt2YWx1ZVtrXT12 O319fX1yZXR1cm4gcmV2aXZlci5jYWxsKG8sa2V5LHZhbHVlKTt9O3JldHVybiB0 eXBlb2YgcmV2aXZlcj09PSJmdW5jdGlvbiI/d2Fsayh7IiI6ZGF0YX0sIiIpOmRh dGE7fWZ1bmN0aW9uIF9jaGFyKGMpe2lmKCFfQ0hBUlNbY10pe19DSEFSU1tjXT0i XFx1IisoIjAwMDAiKygrKGMuY2hhckNvZGVBdCgwKSkpLnRvU3RyaW5nKDE2KSku c2xpY2UoLTQpO31yZXR1cm4gX0NIQVJTW2NdO31mdW5jdGlvbiBfcHJlcGFyZShz KXtyZXR1cm4gcy5yZXBsYWNlKF9VTklDT0RFX0VYQ0VQVElPTlMsX2NoYXIpO31m dW5jdGlvbiBfaXNWYWxpZChzdHIpe3JldHVybiBsLmlzU3RyaW5nKHN0cikmJl9J TlZBTElELnRlc3Qoc3RyLnJlcGxhY2UoX0VTQ0FQRVMsIkAiKS5yZXBsYWNlKF9W QUxVRVMsIl0iKS5yZXBsYWNlKF9CUkFDS0VUUywiIikpO31mdW5jdGlvbiBfc3Ry aW5nKHMpe3JldHVybiciJytzLnJlcGxhY2UoX1NQRUNJQUxfQ0hBUlMsX2NoYXIp KyciJzt9ZnVuY3Rpb24gX3N0cmluZ2lmeShoLGtleSxkLHcscHN0YWNrKXt2YXIg bz10eXBlb2Ygdz09PSJmdW5jdGlvbiI/dy5jYWxsKGgsa2V5LGhba2V5XSk6aFtr ZXldLGksbGVuLGosayx2LGlzQXJyYXksYTtpZihvIGluc3RhbmNlb2YgRGF0ZSl7 bz1sLkpTT04uZGF0ZVRvU3RyaW5nKG8pO31lbHNle2lmKG8gaW5zdGFuY2VvZiBT dHJpbmd8fG8gaW5zdGFuY2VvZiBCb29sZWFufHxvIGluc3RhbmNlb2YgTnVtYmVy KXtvPW8udmFsdWVPZigpO319c3dpdGNoKHR5cGVvZiBvKXtjYXNlInN0cmluZyI6 cmV0dXJuIF9zdHJpbmcobyk7Y2FzZSJudW1iZXIiOnJldHVybiBpc0Zpbml0ZShv KT9TdHJpbmcobyk6Im51bGwiO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIFN0cmluZyhv KTtjYXNlIm9iamVjdCI6aWYobz09PW51bGwpe3JldHVybiJudWxsIjt9Zm9yKGk9 cHN0YWNrLmxlbmd0aC0xO2k+PTA7LS1pKXtpZihwc3RhY2tbaV09PT1vKXtyZXR1 cm4ibnVsbCI7fX1wc3RhY2tbcHN0YWNrLmxlbmd0aF09bzthPVtdO2lzQXJyYXk9 bC5pc0FycmF5KG8pO2lmKGQ+MCl7aWYoaXNBcnJheSl7Zm9yKGk9by5sZW5ndGgt MTtpPj0wOy0taSl7YVtpXT1fc3RyaW5naWZ5KG8saSxkLTEsdyxwc3RhY2spfHwi bnVsbCI7fX1lbHNle2o9MDtpZihsLmlzQXJyYXkodykpe2ZvcihpPTAsbGVuPXcu bGVuZ3RoO2k8bGVuOysraSl7az13W2ldO3Y9X3N0cmluZ2lmeShvLGssZC0xLHcs cHN0YWNrKTtpZih2KXthW2orK109X3N0cmluZyhrKSsiOiIrdjt9fX1lbHNle2Zv cihrIGluIG8pe2lmKHR5cGVvZiBrPT09InN0cmluZyImJmwuaGFzT3duUHJvcGVy dHkobyxrKSl7dj1fc3RyaW5naWZ5KG8sayxkLTEsdyxwc3RhY2spO2lmKHYpe2Fb aisrXT1fc3RyaW5nKGspKyI6Iit2O319fX1hLnNvcnQoKTt9fXBzdGFjay5wb3Ao KTtyZXR1cm4gaXNBcnJheT8iWyIrYS5qb2luKCIsIikrIl0iOiJ7IithLmpvaW4o IiwiKSsifSI7fXJldHVybiB1bmRlZmluZWQ7fXJldHVybntpc1ZhbGlkOmZ1bmN0 aW9uKHMpe3JldHVybiBfaXNWYWxpZChfcHJlcGFyZShzKSk7fSxwYXJzZTpmdW5j dGlvbihzLHJldml2ZXIpe3M9X3ByZXBhcmUocyk7aWYoX2lzVmFsaWQocykpe3Jl dHVybiBfcmV2aXZlKGV2YWwoIigiK3MrIikiKSxyZXZpdmVyKTt9dGhyb3cgbmV3 IFN5bnRheEVycm9yKCJwYXJzZUpTT04iKTt9LHN0cmluZ2lmeTpmdW5jdGlvbihv LHcsZCl7aWYobyE9PXVuZGVmaW5lZCl7aWYobC5pc0FycmF5KHcpKXt3PShmdW5j dGlvbihhKXt2YXIgdW5pcT1bXSxtYXA9e30sdixpLGosbGVuO2ZvcihpPTAsaj0w LGxlbj1hLmxlbmd0aDtpPGxlbjsrK2kpe3Y9YVtpXTtpZih0eXBlb2Ygdj09PSJz dHJpbmciJiZtYXBbdl09PT11bmRlZmluZWQpe3VuaXFbKG1hcFt2XT1qKyspXT12 O319cmV0dXJuIHVuaXE7fSkodyk7fWQ9ZD49MD9kOjEvMDtyZXR1cm4gX3N0cmlu Z2lmeSh7IiI6b30sIiIsZCx3LFtdKTt9cmV0dXJuIHVuZGVmaW5lZDt9LGRhdGVU b1N0cmluZzpmdW5jdGlvbihkKXtmdW5jdGlvbiBfemVyb1BhZCh2KXtyZXR1cm4g djwxMD8iMCIrdjp2O31yZXR1cm4gZC5nZXRVVENGdWxsWWVhcigpKyItIitfemVy b1BhZChkLmdldFVUQ01vbnRoKCkrMSkrIi0iK196ZXJvUGFkKGQuZ2V0VVRDRGF0 ZSgpKSsiVCIrX3plcm9QYWQoZC5nZXRVVENIb3VycygpKSsiOiIrX3plcm9QYWQo ZC5nZXRVVENNaW51dGVzKCkpKyI6IitfemVyb1BhZChkLmdldFVUQ1NlY29uZHMo KSkrIloiO30sc3RyaW5nVG9EYXRlOmZ1bmN0aW9uKHN0cil7aWYoL14oXGR7NH0p LShcZHsyfSktKFxkezJ9KVQoXGR7Mn0pOihcZHsyfSk6KFxkezJ9KVokLy50ZXN0 KHN0cikpe3ZhciBkPW5ldyBEYXRlKCk7ZC5zZXRVVENGdWxsWWVhcihSZWdFeHAu JDEsKFJlZ0V4cC4kMnwwKS0xLFJlZ0V4cC4kMyk7ZC5zZXRVVENIb3VycyhSZWdF eHAuJDQsUmVnRXhwLiQ1LFJlZ0V4cC4kNik7cmV0dXJuIGQ7fXJldHVybiBzdHI7 fX07fSkoKTtZQUhPTy5yZWdpc3RlcigianNvbiIsWUFIT08ubGFuZy5KU09OLHt2 ZXJzaW9uOiIyLjYuMCIsYnVpbGQ6IjEzMjEifSk7 ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=pork.iframe.js Content-Type: application/javascript; charset=ISO-8859-1; name=pork.iframe.js Content-Location: http://business.timesonline.co.uk/tol/js/pork.iframe.js Content-Transfer-Encoding: Base64 ZG9jdW1lbnQuaWZyYW1lTG9hZGVycyA9IHt9Ow0KDQppZnJhbWUgPSBmdW5jdGlv bigpIHsgdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH07 DQppZnJhbWUucHJvdG90eXBlID0gew0KCWluaXRpYWxpemU6IGZ1bmN0aW9uKGZv cm0sIG9wdGlvbnMsY291bnQpew0KCQlpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7 fTsNCgkJdGhpcy5mb3JtID0gZm9ybTsNCgkJdGhpcy51bmlxdWVJZCA9IGNvdW50 Ow0KCQlkb2N1bWVudC5pZnJhbWVMb2FkZXJzW3RoaXMudW5pcXVlSWRdID0gdGhp czsNCgkJdmFyIHVybCA9IGZvcm0uYWN0aW9uICsgJz9qc29uUmVxdWVzdD0nICsg ZXNjYXBlKGZvcm0uZWxlbWVudHNbMF0udmFsdWUpOyAvLyBjaGFuZ2UgZm9ybSBz dWJtaXQgdG8gc3RyaW5nOyBzaW1pbGFyIHRvIGNoYW5naW5nIGZvcm0gbWV0aG9k IHRvIGdldA0KCQl2YXIgZmlyc3RTbGFzaCA9IHVybC5pbmRleE9mKCIvIiwgdXJs LmluZGV4T2YoIi8vIikrMik7DQoJCXRoaXMudHJhbnNwb3J0ID0gdGhpcy5nZXRU cmFuc3BvcnQoKGZpcnN0U2xhc2ggPiAwKSA/IHVybC5zdWJzdHJpbmcoMCwgZmly c3RTbGFzaCkgOiAiIik7DQoJCXRoaXMub25Db21wbGV0ZSA9IG9wdGlvbnMub25D b21wbGV0ZSB8fCBudWxsOw0KCQl0aGlzLnVwZGF0ZSA9IHRoaXMuJChvcHRpb25z LnVwZGF0ZSkgfHwgbnVsbDsNCgkJdGhpcy51cGRhdGVNdWx0aXBsZSA9IG9wdGlv bnMubXVsdGlwbGUgfHwgZmFsc2U7DQoJCWlmICgoKG5hdmlnYXRvci52ZW5kb3Ig JiYgKG5hdmlnYXRvci52ZW5kb3IuaW5kZXhPZignQXBwbGUnKSkgPiAtMSkgfHwg d2luZG93Lm9wZXJhKSAvLyBzYWZhcmkgYW5kIG9wZXJhIG9ubHkNCiAgICAgJiYg KC9cL0RpcmVjdFwvUHJvY2VzcyhcP3wkKS8udGVzdChmb3JtLmFjdGlvbikpICYm IGZvcm0uZWxlbWVudHMgJiYgKGZvcm0uZWxlbWVudHMubGVuZ3RoID09IDEpKSB7 IC8vIG9ubHkgY2hhbmdlIGNhbGxzIHRoYXQgY29udGFpbiAxIGVsZW1lbnQgYW5k IHdob3NlIGFjdGlvbnMgZW5kIHdpdGggL0RpcmVjdC9Qcm9jZXNzDQoJCQl2YXIg ZG9jID0gdGhpcy50cmFuc3BvcnQuY29udGVudFdpbmRvdyB8fCB0aGlzLnRyYW5z cG9ydC5jb250ZW50RG9jdW1lbnQ7IC8vIHJldHJpZXZlIHRoZSBkb2N1bWVudCBv ZiB0aGUgaWZyYW1lDQoJCQlpZiAodXJsLmxlbmd0aCA8IDgwMDAwKSB7IC8vIGFs bG93IGZhbGxiYWNrIHRvIG5vcm1hbCBzdWJtaXNzaW9uICg4MGsgaXMgdGhlIG1h eCBsZW5ndGggZm9yIHVybHMgaW4gc2FmYXJpKQ0KCQkJCWlmIChkb2MuZG9jdW1l bnQpIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBkb2N1bWVudCBhbmQgbm90IHRo ZSB3aW5kb3cNCgkJCQkJZG9jID0gZG9jLmRvY3VtZW50Ow0KCQkJCQ0KCQkJCXRy eSB7IC8vIGlmIHRoaXMgZmFpbHMsIGZhbGxiYWNrIHRvIG5vcm1hbCBzdWJtaXNz aW9uDQoJCQkJCWRvYy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7IC8vIHVzZSBsb2Nh dGlvbi5yZXBsYWNlIHRvIG92ZXJ3cml0ZSBlbGVtZW50cyBpbiBoaXN0b3J5IA0K CQkJCQlyZXR1cm47DQoJCQkJfSBjYXRjaCAoZSkgeyB9Ow0KCQkJfQ0KCQl9DQoJ CWZvcm0udGFyZ2V0PSAnZnJhbWVfJyt0aGlzLnVuaXF1ZUlkOw0KCQlmb3JtLnNl dEF0dHJpYnV0ZSgidGFyZ2V0IiwgJ2ZyYW1lXycrdGhpcy51bmlxdWVJZCk7IC8v IGluIGNhc2UgdGhlIG90aGVyIG9uZSBmYWlscy4NCgkJZm9ybS5zdWJtaXQoKTsN Cgl9LA0KDQoJb25TdGF0ZUNoYW5nZTogZnVuY3Rpb24oKSB7DQoJCXRoaXMudHJh bnNwb3J0ID0gdGhpcy4kKCdmcmFtZV8nK3RoaXMudW5pcXVlSWQpOw0KCQl0cnkg ewkgdmFyIGRvYyA9IHRoaXMudHJhbnNwb3J0LmNvbnRlbnREb2N1bWVudC5ib2R5 LmlubmVySFRNTDsgdGhpcy50cmFuc3BvcnQuY29udGVudERvY3VtZW50LmNsb3Nl KCk7IH0JLy8gRm9yIE5TNg0KCQljYXRjaCAoZSl7IA0KCQkJdHJ5eyB2YXIgZG9j ID0gdGhpcy50cmFuc3BvcnQuY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5Lmlu bmVySFRNTDsgdGhpcy50cmFuc3BvcnQuY29udGVudFdpbmRvdy5kb2N1bWVudC5j bG9zZSgpOyB9IC8vIEZvciBJRTUuNSBhbmQgSUU2DQoJCQkgY2F0Y2ggKGUpew0K CQkJCSB0cnkgeyB2YXIgZG9jID0gdGhpcy50cmFuc3BvcnQuZG9jdW1lbnQuYm9k eS5pbm5lckhUTUw7IHRoaXMudHJhbnNwb3J0LmRvY3VtZW50LmJvZHkuY2xvc2Uo KTsgfSAvLyBmb3IgSUU1DQoJCQkJCWNhdGNoIChlKSB7DQoJCQkJCQl0cnkJeyB2 YXIgZG9jID0gd2luZG93LmZyYW1lc1snZnJhbWVfJyt0aGlzLnVuaXF1ZUlkXS5k b2N1bWVudC5ib2R5LmlubmVyVGV4dDsgfSAvLyBmb3IgcmVhbGx5IG5hc3R5IGJy b3dzZXJzDQoJCQkJCQljYXRjaCAoZSkgeyAvL2FsZXJ0KGUpOyANCgkJCQkJCX0g Ly8gZm9yZ2V0IGl0Lg0KCQkJCSB9DQoJCQl9DQoJCX0NCgkJdGhpcy50cmFuc3Bv cnQucmVzcG9uc2VUZXh0ID0gZG9jOw0KCQlpZiAodGhpcy5vbkNvbXBsZXRlKSBz ZXRUaW1lb3V0KHRoaXMuYmluZChmdW5jdGlvbigpe3RoaXMub25Db21wbGV0ZSh0 aGlzLnRyYW5zcG9ydCk7fSwgdGhpcyksIDEwKTsNCgkJaWYgKHRoaXMudXBkYXRl KSBzZXRUaW1lb3V0KHRoaXMuYmluZChmdW5jdGlvbigpe3RoaXMudXBkYXRlLmlu bmVySFRNTCA9IHRoaXMudHJhbnNwb3J0LnJlc3BvbnNlVGV4dDt9LCB0aGlzKSwg MTApOw0KCQlpZiAodGhpcy51cGRhdGVNdWx0aXBsZSl7IHNldFRpbWVvdXQodGhp cy5iaW5kKGZ1bmN0aW9uKCl7IC8vIEpTT04gc3VwcG9ydCENCgkJCQl0cnkJeyB2 YXIgaGFzc2NyaXB0ID0gZmFsc2U7IGV2YWwoInZhciBpbnB1dE9iamVjdCA9ICIr dGhpcy50cmFuc3BvcnQucmVzcG9uc2VUZXh0KTsJLy8gd2UncmUgZXhwZWN0aW5n IGEgSlNPTiBvYmplY3QsIGV2YWwgaXQgdG8gaW5wdXRPYmplY3QNCgkJCQkJZm9y ICh2YXIgaSBpbiBpbnB1dE9iamVjdCkgeyBpZiAoaSA9PSAnc2NyaXB0JykgeyBo YXNzY3JpcHQgPSB0cnVlOyB9IC8vIGNoZWNrIGlmIHdlIHBhc3NlZCBzb21lIGph dmFzY3JpcHQgYWxvbmcgdG9vDQoJCQkJCQllbHNlIHtpZiAoIGVsbSA9IHRoaXMu JChpKSkgeyBlbG0uaW5uZXJIVE1MID0gaW5wdXRPYmplY3RbaV07IH0gZWxzZSB7 IA0KCQkJCQkJLy9hbGVydCgiZWxlbWVudCAiK2krIiBub3QgZm91bmQhIik7IA0K CQkJCQkJfSB9IC8vIGlmIGl0J3Mgbm90IHNjcmlwdCwgdXBkYXRlIHRoZSBjb3Jy ZXNwb25kaW5nIGRpdg0KCQkJCQl9IGlmIChoYXNzY3JpcHQpIGV2YWwoaW5wdXRP YmplY3RbJ3NjcmlwdCddKTsgLy8gc29tZSBvbi10aGUtZmx5LWphdmFzY3JpcHQg ZXhjaGFuZ2luZyBzdXBwb3J0IHRvbw0KCQkJCX0gY2F0Y2ggKGUpIHsgLy9hbGVy dCgnVGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3Npbmc6ICcrdGhpcy50cmFuc3Bv cnQucmVzcG9uc2VUZXh0KTsgDQoJCQkJfSAvLyBpbiBjYXNlIG9mIGFuIGVycm9y CQkJCQkNCgkJCX0sIHRoaXMpLCAxMCk7DQoJCX0JDQoJfSwNCg0KCWdldFRyYW5z cG9ydDogZnVuY3Rpb24oYmFzZVVybCkgew0KCQl2YXIgZGl2RWxtID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgnRElWJyksIGZyYW1lOw0KCQlkaXZFbG0uc2V0QXR0 cmlidXRlKCdzdHlsZScsICd3aWR0aDogMDsgaGVpZ2h0OiAwOyBtYXJnaW46IDA7 IHBhZGRpbmc6IDA7IHZpc2liaWxpdHk6IGhpZGRlbjsgb3ZlcmZsb3c6IGhpZGRl bicpOw0KCQlpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykg PiAwICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignT3BlcmEnKSA9PSAt MSkgey8vIHN3aXRjaCB0byB0aGUgY3JhcHB5IHNvbHV0aW9uIGZvciBJRQ0KCQkJ ZGl2RWxtLnN0eWxlLndpZHRoID0gMDsNCgkJCWRpdkVsbS5zdHlsZS5oZWlnaHQg PSAwOw0KCQkJZGl2RWxtLnN0eWxlLm1hcmdpbiA9IDA7DQoJCQlkaXZFbG0uc3R5 bGUucGFkZGluZyA9IDA7DQoJCQlkaXZFbG0uc3R5bGUudmlzaWJpbGl0eSA9ICdo aWRkZW4nOw0KCQkJZGl2RWxtLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7DQoJ CQlkaXZFbG0uaW5uZXJIVE1MID0gJzxpZnJhbWUgbmFtZT1cImZyYW1lXycrdGhp cy51bmlxdWVJZCsnXCIgaWQ9XCJmcmFtZV8nK3RoaXMudW5pcXVlSWQrJ1wiIHNy Yz1cIicgKyBiYXNlVXJsICsgJy92ZXIxLjAvQ29udGVudC9ibGFuay5odG1sXCIg b25sb2FkPVwic2V0VGltZW91dChmdW5jdGlvbigpe2RvY3VtZW50LmlmcmFtZUxv YWRlcnNbJyt0aGlzLnVuaXF1ZUlkKyddLm9uU3RhdGVDaGFuZ2UoKX0sMjApOyI+ PC9pZnJhbWU+JzsNCgkJfSBlbHNlIHsNCgkJCWZyYW1lID0gZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgiaWZyYW1lIik7DQoJCQlmcmFtZS5zZXRBdHRyaWJ1dGUoIm5h bWUiLCAiZnJhbWVfIit0aGlzLnVuaXF1ZUlkKTsNCgkJCWZyYW1lLnNldEF0dHJp YnV0ZSgiaWQiLCAiZnJhbWVfIit0aGlzLnVuaXF1ZUlkKTsNCgkJCWZyYW1lLmFk ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0aGlzLmJpbmQoZnVuY3Rpb24oKXsgdGhp cy5vblN0YXRlQ2hhbmdlKCk7IH0sIHRoaXMpLCBmYWxzZSk7DQoJCQlkaXZFbG0u YXBwZW5kQ2hpbGQoZnJhbWUpOw0KCQl9DQogICAgKFJlcXVlc3RCYXRjaC5jb250 YWluZXIgfHwgZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQoZGl2RWxtKTsNCgkJ cmV0dXJuIGZyYW1lOw0KCX0sDQogIA0KICBiaW5kOiBmdW5jdGlvbihmdW5jdGlv bk9iamVjdCwgcmVmZXJlbmNlT2JqZWN0KSB7DQogICAgcmV0dXJuIGZ1bmN0aW9u KCkgew0KICAgICAgcmV0dXJuIGZ1bmN0aW9uT2JqZWN0LmFwcGx5KHJlZmVyZW5j ZU9iamVjdCwgYXJndW1lbnRzKTsNCiAgICB9DQogIH0sDQogIA0KICAnJCc6IGZ1 bmN0aW9uKGlkKSB7DQogICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KGlkKTsNCiAgfQ0KfTsNCg== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=requestbatch.js Content-Type: application/javascript; charset=ISO-8859-1; name=requestbatch.js Content-Location: http://business.timesonline.co.uk/tol/js/requestbatch.js Content-Transfer-Encoding: Base64 aWYgKHR5cGVvZihSZXF1ZXN0QmF0Y2gpID09PSAndW5kZWZpbmVkJykgew0KICAg IFJlcXVlc3RCYXRjaCA9IGZ1bmN0aW9uKCkgew0KICAgICAgdGhpcy5pbml0aWFs aXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCiAgICAvLyBmb3Ig dW5pcXVlIGlkDQogICAgdmFyIGNvdW50ZXIgPSAwOw0KDQogICAgLy8gaG93IG1h bnkgcmVxdWVzdHMgYXJlIHN0aWxsIHBlbmRpbmc/DQogICAgdmFyIHBlbmRpbmdS ZXF1ZXN0cyA9IDA7DQoNCiAgICBmdW5jdGlvbiBEaXJlY3RBY2Nlc3NFcnJvckhh bmRsZXIobXNnLGV4KXsNCiAgICAvL2FsZXJ0KG1zZyk7DQogICAgfQ0KICAgIChm dW5jdGlvbigpIHsNCg0KICAgICAgICBmdW5jdGlvbiBidWlsZEpzb25wVXJsKHNl cnZlclVybCwganNvblN0cmluZywgY2FsbGJhY2tOYW1lKSB7DQogICAgICAgICAg ICB2YXIgc2VwYXJhdG9yID0gc2VydmVyVXJsLmluZGV4T2YoJz8nKSA9PSAtMSA/ ICI/IiA6ICImIjsNCiAgICAgICAgICAgIC8vIHVzZSBKc29ucCBlbmRwb2ludCBp bnN0ZWFkIG9mIFByb2Nlc3MNCiAgICAgICAgICAgIHNlcnZlclVybCA9IHNlcnZl clVybC5yZXBsYWNlKCcvUHJvY2VzcycsICcvSnNvbnAnKTsNCiAgICAgICAgICAg IHJldHVybiBzZXJ2ZXJVcmwgKyBzZXBhcmF0b3IgKyAicj0iICsgZW5jb2RlVVJJ Q29tcG9uZW50KGpzb25TdHJpbmcpICsgJyZjYj0nICsgY2FsbGJhY2tOYW1lOw0K ICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNlSnNvbnAoc2VydmVyVXJs LCBqc29uU3RyaW5nLCBjYWxsYmFja05hbWUpIHsNCiAgICAgICAgICAgIC8vIHVz ZSBKc29ucCBlbmRwb2ludCBpbnN0ZWFkIG9mIFByb2Nlc3MNCiAgICAgICAgICAg IHNlcnZlclVybCA9IGJ1aWxkSnNvbnBVcmwoc2VydmVyVXJsLCBqc29uU3RyaW5n LCBjYWxsYmFja05hbWUpOw0KICAgICAgICAgICAgdmFyIGlzSUUgPSAvKkBjY19v biFAKi9mYWxzZTsNCiAgICAgICAgICAgIGlmICgoaXNJRSAmJiBzZXJ2ZXJVcmwu bGVuZ3RoIDwgMjA4MykgfHwgKCFpc0lFICYmIHNlcnZlclVybC5sZW5ndGggPCA0 MDAwKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBzZXJ2ZXJVcmw7DQogICAg ICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0N Cg0KICAgICAgICAvLyB0aGUgY29yZSBvYmplY3QgdG8gcmVxdWVzdCBiYXRjaGVz DQogICAgICAgIFJlcXVlc3RCYXRjaC5wcm90b3R5cGUgPSB7DQogICAgICAgICAg ICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB0aGlz LlVuaXF1ZUlkID0gY291bnRlcisrOw0KICAgICAgICAgICAgICAgIHRoaXMuUmVx dWVzdHMgPSBuZXcgQXJyYXkoKQ0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAg ICAgSGFzVGVtcGxhdGU6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHJl dHVybiB0eXBlb2YgKHRoaXNbIlRlbXBsYXRlIl0pICE9ICJ1bmRlZmluZWQiOw0K ICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgQWRkVG9SZXF1ZXN0OiBmdW5j dGlvbihyZXF1ZXN0VGhpcykgew0KICAgICAgICAgICAgICAgIHRoaXMuUmVxdWVz dHNbdGhpcy5SZXF1ZXN0cy5sZW5ndGhdID0gcmVxdWVzdFRoaXM7DQogICAgICAg ICAgICB9LA0KDQogICAgICAgICAgICBCZWdpblJlcXVlc3Q6IGZ1bmN0aW9uKHNl cnZlclVybCwgY2FsbGJhY2spIHsNCiAgICAgICAgICAgICAgICBwZW5kaW5nUmVx dWVzdHMrKzsNCg0KICAgICAgICAgICAgICAgIGlmICghUmVxdWVzdEJhdGNoLmNh bGxiYWNrcykgew0KICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0QmF0Y2guY2Fs bGJhY2tzID0ge307DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAg ICAgLy8gdGhlIGNjX29uIGNvbW1lbnQgYmVsb3cgaXMgaW1wb3J0YW50Li4gaWYg eW91IHJlbW92ZSBpdCwgaXQgd2lsbCBjaGFuZ2UgdGhlIHByb2Nlc3Npbmcgb2Yg dGhlIHNjcmlwdA0KICAgICAgICAgICAgICAgIC8vIHNlZSBodHRwOi8vbXNkbi5t aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvOGthOTBrMmUoVlMuODUpLmFzcHgg Zm9yIGRldGFpbHMgb2YgY29uZGl0aW9uYWwgY29tcGlsYXRpb24NCiAgICAgICAg ICAgICAgICB2YXIganNvblN0cmluZyA9IFlBSE9PLmxhbmcuSlNPTi5zdHJpbmdp ZnkodGhpcyksIGllID0gLypAY2Nfb24hQCovZmFsc2U7DQogICAgICAgICAgICAg ICAgaWYgKGllICYmICFSZXF1ZXN0QmF0Y2guY29udGFpbmVyKSB7IC8vIGZvcmNp Ymx5IHRha2UgdGhpcyByb3V0ZSBvbmx5IGZvciBpZQ0KICAgICAgICAgICAgICAg ICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHksIGRpdjsNCiAgICAgICAgICAg ICAgICAgICAgUmVxdWVzdEJhdGNoLmNvbnRhaW5lciA9IGRpdiA9IGJvZHkuaW5z ZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBib2R5LmZp cnN0Q2hpbGQpOw0KICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuaGVpZ2h0 ID0gZGl2LnN0eWxlLndpZHRoID0gZGl2LnN0eWxlLm1hcmdpbiA9IGRpdi5zdHls ZS5wYWRkaW5nID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZGl2LnN0eWxlLnZp c2liaWxpdHkgPSBkaXYuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsNCiAgICAg ICAgICAgICAgICAgICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC8vIGdlbmVyYXRlIG91ciBj YWxsYmFjayBmdW5jdGlvbiB0aGF0IHdpbGwgY2FsbCB0aGVpciBjYWxsYmFjayBm dW5jdGlvbiB2aWEgY2xvc3VyZSBzZW1hbnRpY3MNCiAgICAgICAgICAgICAgICB2 YXIgZGFhcGlDYWxsYmFja05hbWUgPSAnZGFhcGlDYWxsYmFjaycgKyB0aGlzLlVu aXF1ZUlkOw0KICAgICAgICAgICAgICAgIHZhciB0aGlzUmVxdWVzdCA9IHRoaXM7 DQogICAgICAgICAgICAgICAgaWYgKGpzb25wU2VydmVyVXJsID0gdXNlSnNvbnAo c2VydmVyVXJsLCBqc29uU3RyaW5nLCAnUmVxdWVzdEJhdGNoLmNhbGxiYWNrcy4n ICsgZGFhcGlDYWxsYmFja05hbWUpKSB7DQogICAgICAgICAgICAgICAgICAgIC8v IGluc2VydCBzY3JpcHQgbm9kZSB3aXRoIGNhbGxiYWNrIGZ1bmN0aW9uID0gZGFh cGlDYWxsYmFja05hbWUNCiAgICAgICAgICAgICAgICAgICAgdmFyIGpzb25wU2Ny aXB0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOw0KICAg ICAgICAgICAgICAgICAgICBqc29ucFNjcmlwdE5vZGUudHlwZSA9ICJ0ZXh0L2ph dmFzY3JpcHQiOw0KICAgICAgICAgICAgICAgICAgICBqc29ucFNjcmlwdE5vZGUu c3JjID0ganNvbnBTZXJ2ZXJVcmw7DQogICAgICAgICAgICAgICAgICAgIHZhciBo ZWFkRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylb MF07DQogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RCYXRjaC5jYWxsYmFja3Nb ZGFhcGlDYWxsYmFja05hbWVdID0gKGZ1bmN0aW9uKHVzZXJDYWxsYmFjaywgaGVh ZEVsZW0sIHNjcmlwdE5vZGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBmdW5jdGlvbihyZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAodGhpc1JlcXVlc3QuSGFzVGVtcGxhdGUoKSkgew0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2socmVzcG9uc2Vz KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhbiB1cCBhZnRlciBvdXJz ZWx2ZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckNhbGxi YWNrKHJlc3BvbnNlcy5SZXNwb25zZUJhdGNoKTsNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrID0gaGVhZEVsZW0gPSBzY3JpcHRO b2RlID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pKGNh bGxiYWNrLCBoZWFkRWxlbSwganNvbnBTY3JpcHROb2RlKTsNCiAgICAgICAgICAg ICAgICAgICAgaGVhZEVsZW0uYXBwZW5kQ2hpbGQoanNvbnBTY3JpcHROb2RlKTsN CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAg ICAgICAgICAgICAgICAgIHZhciBmb3JtID0gZ2VuZXJhdGVGb3JtKHRoaXMuVW5p cXVlSWQsIHNlcnZlclVybCwganNvblN0cmluZyk7DQogICAgICAgICAgICAgICAg ICAgIG5ldyBpZnJhbWUoZm9ybSwgeyBvbkNvbXBsZXRlOiBmdW5jdGlvbihyZXF1 ZXN0KSB7IHByb2Nlc3NSZXNwb25zZShjYWxsYmFjaywgcmVxdWVzdCwgdGhpc1Jl cXVlc3QuSGFzVGVtcGxhdGUoKSk7IH0gfSwgdGhpcy5VbmlxdWVJZCk7DQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC8vIGluIGNhc2UgdGhleSBy ZXVzZSB0aGUgcmVxdWVzdGJhdGNoDQogICAgICAgICAgICAgICAgdGhpcy5Vbmlx dWVJZCA9IGNvdW50ZXIrKzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfTsNCiAg ICB9KSgpOw0KfQ0KDQpmdW5jdGlvbiBnZW5lcmF0ZUZvcm0oZm9ybUlkLCBzZXJ2 ZXJVcmwsIGlucHV0VmFsKSB7DQogICAgLy8gY3JlYXRlIHRoZSBmb3JtDQoJdmFy IGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIik7DQoJZm9ybS5h Y2NlcHRDaGFyc2V0ID0gIlVURi04IjsNCglmb3JtLm5hbWUgPSAiZiIgKyBmb3Jt SWQ7DQoJZm9ybS5pZCA9ICJmIiArIGZvcm1JZDsNCglmb3JtLmFjdGlvbiA9IHNl cnZlclVybDsNCg0KCS8vIGNyZWF0ZSB0aGUgaW5wdXQgZWxlbWVudCBvbiB0aGUg Zm9ybQ0KCXZhciBpbnB1dEVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp bnB1dCIpOw0KCWlucHV0RWxlbS5uYW1lID0gImpzb25SZXF1ZXN0IjsNCglpbnB1 dEVsZW0udHlwZSA9ICJoaWRkZW4iOw0KCWlucHV0RWxlbS52YWx1ZSA9IGlucHV0 VmFsOw0KCWZvcm0uYXBwZW5kQ2hpbGQoaW5wdXRFbGVtKTsNCg0KCS8vIEZpcmVm b3ggaGFzIGEgYmVoYXZpb3Igb24gcmVmcmVzaCB0aGF0IGRpc3BsYXlzIGEgcG9w dXAgY29uZmlybWluZyB0aGF0IGlzIGl0IHJlbG9hZGluZyBhIGZvcm0uDQoJLy8g V2Ugd29yayBhcm91bmQgdGhpcyBieSBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYSBn ZXQgYWN0aW9uIGlmIHRoZSBzaXplIGlzIGJlbG93IGEgdGhyZXNob2xkLCBlbHNl DQoJLy8gd2Ugd2lsbCBydW4gYXMgYSBwb3N0DQoJZm9ybS5tZXRob2QgPSAicG9z dCI7DQogICAgaWYobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmlu ZGV4T2YoJ2ZpcmVmb3gnKSAhPSAtMSkgew0KICAgICAgICB2YXIgc2VwYXJhdG9y ID0gc2VydmVyVXJsLmluZGV4T2YoJz8nKSA9PSAtMSA/ICI/IiA6ICImIjsNCiAg ICAgICAgdmFyIGZ1bGxSZXF1ZXN0VVJMID0gc2VydmVyVXJsICsgc2VwYXJhdG9y ICsgImpzb25SZXF1ZXN0PSIrIGVzY2FwZShpbnB1dFZhbCk7DQogICAgICAgIGlm IChmdWxsUmVxdWVzdFVSTC5sZW5ndGggPCA0MDAwKSB7DQogICAgICAgICAgICAv LyB3ZSBwbGFuIHRvIHBlcmZvcm0gYSBnZXQsIHNvIHdlIG5lZWQgdG8gcGFyc2Ug dGhlIHNpZCBvdXQgb2YgdGhlIHVybCBhbmQgcGxhY2UgaXQNCiAgICAgICAgICAg IC8vIGluc2lkZSB0aGUgZm9ybQ0KICAgICAgICAgICAgdmFyIHNpZFBvcyA9IHNl cnZlclVybC5pbmRleE9mKCdzaWQ9Jyk7DQogICAgICAgICAgICBpZiAoc2lkUG9z ICE9IC0xKSB7DQogICAgICAgICAgICAgICAgdmFyIGVuZFBvcyA9IHNlcnZlclVy bC5pbmRleE9mKCcmJywgc2lkUG9zKTsNCiAgICAgICAgICAgICAgICB2YXIgc2lk ID0gc2VydmVyVXJsLnN1YnN0cmluZyhzaWRQb3MgKyAnc2lkPScubGVuZ3RoLCBl bmRQb3MgPT0gLTEgPyBzZXJ2ZXJVcmwubGVuZ3RoIDogZW5kUG9zKTsNCgkgICAg ICAgICAgICB2YXIgc2lkSW5wdXRFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgiaW5wdXQiKTsNCgkgICAgICAgICAgICBzaWRJbnB1dEVsZW0ubmFtZSA9ICJz aWQiOw0KCSAgICAgICAgICAgIHNpZElucHV0RWxlbS50eXBlID0gImhpZGRlbiI7 DQoJICAgICAgICAgICAgc2lkSW5wdXRFbGVtLnZhbHVlID0gc2lkOw0KCSAgICAg ICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoc2lkSW5wdXRFbGVtKTsNCgkgICAgICAg ICAgICAvLyByZW1vdmUgdGhlIHNpZCBmcm9tIHRoZSB1cmwNCgkgICAgICAgICAg ICBmb3JtLmFjdGlvbiA9IHNlcnZlclVybC5zdWJzdHJpbmcoMCwgc2lkUG9zLTEp Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZm9ybS5tZXRob2QgPSAiZ2V0 IjsNCiAgICAgICAgfQ0KICAgIH0NCg0KCShSZXF1ZXN0QmF0Y2guY29udGFpbmVy IHx8IGRvY3VtZW50LmJvZHkpLmFwcGVuZENoaWxkKGZvcm0pOw0KCXJldHVybiBm b3JtOw0KfQ0KDQpmdW5jdGlvbiBwcm9jZXNzUmVzcG9uc2UoY2FsbGJhY2ssIHJl cXVlc3QsIGlzVGVtcGxhdGVkKQ0Kew0KICAgIHBlbmRpbmdSZXF1ZXN0cy0tOw0K ICAgIHRyeSB7DQogICAgICAgIGlmIChpc1RlbXBsYXRlZCkgew0KICAgICAgICAg ICAgY2FsbGJhY2socmVxdWVzdC5SZXNwb25zZVRleHQpOw0KICAgICAgICB9IGVs c2Ugew0KICAgICAgICAgICAgdmFyIGpzb25SZXNwb25zZSA9IHVuZXNjYXBlKHJl cXVlc3QucmVzcG9uc2VUZXh0KTsNCiAgICAgICAgICAgIGpzb25SZXNwb25zZSA9 IGpzb25SZXNwb25zZS5yZXBsYWNlKC9cXFw+L2csICI+Iik7DQogICAgICAgICAg ICB2YXIgcmVzcG9uc2VPYmplY3QgPSBZQUhPTy5sYW5nLkpTT04ucGFyc2UoanNv blJlc3BvbnNlKTsNCiAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAg Y2FsbGJhY2socmVzcG9uc2VPYmplY3QuUmVzcG9uc2VCYXRjaCk7DQogICAgICAg ICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICAgICAgRGlyZWN0QWNjZXNz RXJyb3JIYW5kbGVyKCJleGNlcHRpb24gZHVyaW5nIGNsaWVudCBjYWxsYmFjayIs IGUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSBjYXRjaCAoZSkg ew0KICAgICAgICBEaXJlY3RBY2Nlc3NFcnJvckhhbmRsZXIoImV4Y2VwdGlvbiBk dXJpbmcgcHJvY2Vzc1Jlc3BvbnNlIiwgZSk7DQogICAgfQ0KfQ0KDQpmdW5jdGlv biBnZXRQZW5kaW5nUmVxdWVzdENvdW50KCkNCnsNCiAgICByZXR1cm4gcGVuZGlu Z1JlcXVlc3RzOw0KfQ0K ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=requesttypes.js Content-Type: application/javascript; charset=ISO-8859-1; name=requesttypes.js Content-Location: http://business.timesonline.co.uk/tol/js/requesttypes.js Content-Transfer-Encoding: Base64 DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIFRo aXMgZmlsZSBjb250YWlucyBhbGwgdGhlIHJlcXVlc3QgdHlwZSBvYmplY3RzIGZv ciB0aGUgU2l0ZUxpZmUgSlNPTiBEaXJlY3QgQVBJLg0KLy8gQ3JlYXRlIGluc3Rh bmNlcyBvZiB0aGVzZSBvYmplY3RzLCBwbGFjZSB0aGVtIGluIGEgUmVxdWVzdEJh dGNoLCBhbmQgc2VuZCB0aGVtIG9mZi4NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KDQooZnVuY3Rpb24oKSB7IC8vIHdyYXBwZWQgaW4g YSBmdW5jdGlvbiB0byBrZWVwIHRoZSBDbGFzcyB2YXJpYWJsZSBvdXQgb2YgdGhl IGdsb2JhbCBzY29wZQ0KdmFyIENsYXNzID0gZnVuY3Rpb24oKSB7DQogIHJldHVy biBmdW5jdGlvbigpIHsNCiAgICB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywg YXJndW1lbnRzKTsNCiAgfQ0KfTsNCi8vIElkZW50aWZ5IGEgdXNlcg0KVXNlcktl eSA9IENsYXNzKCk7DQpVc2VyS2V5LnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKGtleSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmpl Y3QoKTsNCiAgICAgICAgZGF0YS5LZXkgPSBrZXk7DQogICAgICAgIHRoaXMuVXNl cktleSA9IGRhdGE7DQogICB9DQp9Ow0KLy8gSWRlbnRpZnkgYSBjb21tZW50DQpD b21tZW50S2V5ID0gQ2xhc3MoKTsNCkNvbW1lbnRLZXkucHJvdG90eXBlID0gew0K ICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oa2V5KSB7DQogICAgICAgIHZhciBkYXRh ID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLktleSA9IGtleTsNCiAgICAg ICAgdGhpcy5Db21tZW50S2V5ID0gZGF0YTsNCiAgIH0NCn07DQovLyBJZGVudGlm eSBhbiBhcnRpY2xlDQpBcnRpY2xlS2V5ID0gQ2xhc3MoKTsNCkFydGljbGVLZXku cHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oa2V5KSB7DQog ICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLktl eSA9IGtleTsNCiAgICAgICAgdGhpcy5BcnRpY2xlS2V5ID0gZGF0YTsNCiAgIH0N Cn07DQoNCi8vIElkZW50aWZ5IGEgcGVyc29uYSBtZXNzYWdlDQpQZXJzb25hTWVz c2FnZUtleSA9IENsYXNzKCk7DQpQZXJzb25hTWVzc2FnZUtleS5wcm90b3R5cGUg PSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXkpIHsNCiAgICAgICAgdmFy IGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuS2V5ID0ga2V5Ow0K ICAgICAgICB0aGlzLlBlcnNvbmFNZXNzYWdlS2V5ID0gZGF0YTsNCiAgIH0NCn07 DQoNCi8vIElkZW50aWZ5IGEgcmV2aWV3DQpSZXZpZXdLZXkgPSBDbGFzcygpOw0K UmV2aWV3S2V5LnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9u KGtleSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAg ICAgZGF0YS5LZXkgPSBrZXk7DQogICAgICAgIHRoaXMuUmV2aWV3S2V5ID0gZGF0 YTsNCiAgIH0NCn07DQoNCi8vIElkZW50aWZ5IGEgZ2FsbGVyeQ0KR2FsbGVyeUtl eSA9IENsYXNzKCk7DQpHYWxsZXJ5S2V5LnByb3RvdHlwZSA9IHsNCiAgICBpbml0 aWFsaXplOiBmdW5jdGlvbihrZXkpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcg T2JqZWN0KCk7DQogICAgICAgIGRhdGEuS2V5ID0ga2V5Ow0KICAgICAgICB0aGlz LkdhbGxlcnlLZXkgPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIElkZW50aWZ5IGEg cGhvdG8NClBob3RvS2V5ID0gQ2xhc3MoKTsNClBob3RvS2V5LnByb3RvdHlwZSA9 IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXkpIHsNCiAgICAgICAgdmFy IGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuS2V5ID0ga2V5Ow0K ICAgICAgICB0aGlzLlBob3RvS2V5ID0gZGF0YTsNCiAgICB9DQp9Ow0KDQovLyBJ ZGVudGlmeSBhIHZpZGVvDQpWaWRlb0tleSA9IENsYXNzKCk7DQpWaWRlb0tleS5w cm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oa2V5KSB7DQog ICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLktl eSA9IGtleTsNCiAgICAgICAgdGhpcy5WaWRlb0tleSA9IGRhdGE7DQogICAgfQ0K fTsNCg0KLy8gSWRlbnRpZnkgYSBibG9nIHdpdGggdGhpcyBibG9nIGtleQ0KQmxv Z0tleSA9IENsYXNzKCk7DQpCbG9nS2V5LnByb3RvdHlwZSA9IHsNCiAgIGluaXRp YWxpemU6IGZ1bmN0aW9uKGtleSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBP YmplY3QoKTsNCiAgICAgICAgZGF0YS5LZXkgPSBrZXk7DQogICAgICAgIHRoaXMu QmxvZ0tleSA9IGRhdGE7DQogICB9DQp9Ow0KDQovLyBJZGVudGlmeSBhIGJsb2cg cG9zdCB3aXRoIHRoaXMgYmxvZyBwb3N0IGtleQ0KQmxvZ1Bvc3RLZXkgPSBDbGFz cygpOw0KQmxvZ1Bvc3RLZXkucHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24oa2V5KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgp Ow0KICAgICAgICBkYXRhLktleSA9IGtleTsNCiAgICAgICAgdGhpcy5CbG9nUG9z dEtleSA9IGRhdGE7DQogICB9DQp9Ow0KDQovLyBJZGVudGlmeSBhIGN1c3RvbSBp dGVtIHdpdGggdGhpcyBDdXN0b21JdGVtS2V5DQpDdXN0b21JdGVtS2V5ID0gQ2xh c3MoKTsNCkN1c3RvbUl0ZW1LZXkucHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6 ZTogZnVuY3Rpb24oa2V5KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVj dCgpOw0KICAgICAgICBkYXRhLktleSA9IGtleTsNCiAgICAgICAgdGhpcy5DdXN0 b21JdGVtS2V5ID0gZGF0YTsNCiAgIH0NCn07DQoNCi8vIElkZW50aWZ5IGEgY3Vz dG9tIGNvbGxlY3Rpb24gd2l0aCB0aGlzIEN1c3RvbUNvbGxlY3Rpb25LZXkNCkN1 c3RvbUNvbGxlY3Rpb25LZXkgPSBDbGFzcygpOw0KQ3VzdG9tQ29sbGVjdGlvbktl eS5wcm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXkpIHsN CiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEu S2V5ID0ga2V5Ow0KICAgICAgICB0aGlzLkN1c3RvbUNvbGxlY3Rpb25LZXkgPSBk YXRhOw0KICAgfQ0KfTsNCg0KDQovLyBJZGVudGlmeSBhIEZvcnVtIENhdGVnb3J5 DQpGb3J1bUNhdGVnb3J5S2V5ID0gQ2xhc3MoKTsNCkZvcnVtQ2F0ZWdvcnlLZXku cHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGtleSkgew0K ICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5L ZXkgPSBrZXk7DQogICAgICAgIHRoaXMuRm9ydW1DYXRlZ29yeUtleSA9IGRhdGE7 DQogICAgfQ0KfTsNCg0KLy8gSWRlbnRpZnkgYSBGb3J1bQ0KRm9ydW1LZXkgPSBD bGFzcygpOw0KRm9ydW1LZXkucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6 IGZ1bmN0aW9uKGtleSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3Qo KTsNCiAgICAgICAgZGF0YS5LZXkgPSBrZXk7DQogICAgICAgIHRoaXMuRm9ydW1L ZXkgPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIElkZW50aWZ5IGEgZm9ydW0gZGlz Y3Vzc2lvbiB3aXRoIHRoaXMgRGlzY3Vzc2lvbktleSANCkRpc2N1c3Npb25LZXkg PSBDbGFzcygpOw0KRGlzY3Vzc2lvbktleS5wcm90b3R5cGUgPSB7DQogICBpbml0 aWFsaXplOiBmdW5jdGlvbihrZXkpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcg T2JqZWN0KCk7DQogICAgICAgIGRhdGEuS2V5ID0ga2V5Ow0KICAgICAgICB0aGlz LkRpc2N1c3Npb25LZXkgPSBkYXRhOw0KICAgfQ0KfTsNCg0KLy8gSWRlbnRpZnkg YSBGb3J1bSBQb3N0DQpGb3J1bVBvc3RLZXkgPSBDbGFzcygpOw0KRm9ydW1Qb3N0 S2V5LnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXkp IHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRh dGEuS2V5ID0ga2V5Ow0KICAgICAgICB0aGlzLkZvcnVtUG9zdEtleSA9IGRhdGE7 DQogICAgfQ0KfTsNCg0KLy8gSWRlbnRpZnkgYW4gRXZlbnQNCkV2ZW50S2V5ID0g Q2xhc3MoKTsNCkV2ZW50S2V5LnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXpl OiBmdW5jdGlvbihrZXkpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0 KCk7DQogICAgICAgIGRhdGEuS2V5ID0ga2V5Ow0KICAgICAgICB0aGlzLkV2ZW50 S2V5ID0gZGF0YTsNCiAgICB9DQp9Ow0KDQovLyBJZGVudGlmeSBhbiBFdmVudA0K RXZlbnRTZXRLZXkgPSBDbGFzcygpOw0KRXZlbnRTZXRLZXkucHJvdG90eXBlID0g ew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGtleSkgew0KICAgICAgICB2YXIg ZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5LZXkgPSBrZXk7DQog ICAgICAgIHRoaXMuRXZlbnRTZXRLZXkgPSBkYXRhOw0KICAgIH0NCn07DQoNCi8v IElkZW50aWZ5IGEgQ29tbXVuaXR5IEdyb3VwDQpDb21tdW5pdHlHcm91cEtleSA9 IENsYXNzKCk7DQpDb21tdW5pdHlHcm91cEtleS5wcm90b3R5cGUgPSB7DQogICAg aW5pdGlhbGl6ZTogZnVuY3Rpb24oa2V5KSB7DQogICAgICAgIHZhciBkYXRhID0g bmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLktleSA9IGtleTsNCiAgICAgICAg dGhpcy5Db21tdW5pdHlHcm91cEtleSA9IGRhdGE7DQogICAgfQ0KfTsNCg0KLy8g SWRlbnRpZnkgYSBDb21tdW5pdHlHcm91cCBNZW1iZXJzaGlwDQpDb21tdW5pdHlH cm91cE1lbWJlcnNoaXBLZXkgPSBDbGFzcygpOw0KQ29tbXVuaXR5R3JvdXBNZW1i ZXJzaGlwS2V5LnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlv bihjb21tdW5pdHlHcm91cEtleSwgdXNlcktleSkgew0KICAgICAgICB2YXIgZGF0 YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5Db21tdW5pdHlHcm91cEtl eSA9IGNvbW11bml0eUdyb3VwS2V5Ow0KICAgICAgICBkYXRhLlVzZXJLZXkgPSB1 c2VyS2V5Ow0KICAgICAgICB0aGlzLkNvbW11bml0eUdyb3VwTWVtYmVyc2hpcEtl eSA9IGRhdGE7DQogICAgfQ0KfTsNCg0KDQovLyBJZGVudGlmeSBhIENvbW11bml0 eUdyb3VwIEludml0YXRpb24NCkNvbW11bml0eUdyb3VwSW52aXRhdGlvbktleSA9 IENsYXNzKCk7DQpDb21tdW5pdHlHcm91cEludml0YXRpb25LZXkucHJvdG90eXBl ID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGNvbW11bml0eUdyb3VwS2V5 LCB1c2VyS2V5KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0K ICAgICAgICBkYXRhLkNvbW11bml0eUdyb3VwS2V5ID0gY29tbXVuaXR5R3JvdXBL ZXk7DQogICAgICAgIGRhdGEuVXNlcktleSA9IHVzZXJLZXk7DQogICAgICAgIHRo aXMuQ29tbXVuaXR5R3JvdXBJbnZpdGF0aW9uS2V5ID0gZGF0YTsNCiAgICB9DQp9 Ow0KDQovLyBJZGVudGlmeSBhIENvbW11bml0eUdyb3VwIFJlZ2lzdHJhbnQNCkNv bW11bml0eUdyb3VwUmVnaXN0cmFudEtleSA9IENsYXNzKCk7DQpDb21tdW5pdHlH cm91cFJlZ2lzdHJhbnRLZXkucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6 IGZ1bmN0aW9uKGNvbW11bml0eUdyb3VwS2V5LCB1c2VyS2V5KSB7DQogICAgICAg IHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkNvbW11bml0 eUdyb3VwS2V5ID0gY29tbXVuaXR5R3JvdXBLZXk7DQogICAgICAgIGRhdGEuVXNl cktleSA9IHVzZXJLZXk7DQogICAgICAgIHRoaXMuQ29tbXVuaXR5R3JvdXBSZWdp c3RyYW50S2V5ID0gZGF0YTsNCiAgICB9DQp9Ow0KDQovLyBJZGVudGlmeSBhIENv bW11bml0eUdyb3VwIEJhbm5lZCBVc2VyDQpDb21tdW5pdHlHcm91cEJhbm5lZFVz ZXJLZXkgPSBDbGFzcygpOw0KQ29tbXVuaXR5R3JvdXBCYW5uZWRVc2VyS2V5LnBy b3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihjb21tdW5pdHlH cm91cEtleSwgdXNlcktleSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmpl Y3QoKTsNCiAgICAgICAgZGF0YS5Db21tdW5pdHlHcm91cEtleSA9IGNvbW11bml0 eUdyb3VwS2V5Ow0KICAgICAgICBkYXRhLlVzZXJLZXkgPSB1c2VyS2V5Ow0KICAg ICAgICB0aGlzLkNvbW11bml0eUdyb3VwQmFubmVkVXNlcktleSA9IGRhdGE7DQog ICAgfQ0KfTsNCg0KUG9sbEtleSA9IENsYXNzKCk7DQpQb2xsS2V5LnByb3RvdHlw ZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihwb2xsS2V5KSB7DQogICAg ICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLktleSA9 IHBvbGxLZXk7DQogICAgICAgIHRoaXMuUG9sbEtleSA9IGRhdGE7DQogICAgfQ0K fQ0KDQovLyBQb2ludHMvQmFkZ2luZw0KQmFkZ2VGYW1pbHlLZXkgPSBDbGFzcygp Ow0KQmFkZ2VGYW1pbHlLZXkucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6 IGZ1bmN0aW9uKGJhZGdlRmFtaWx5S2V5KSB7DQogICAgICAgIHZhciBkYXRhID0g bmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLktleSA9IGJhZGdlRmFtaWx5S2V5 Ow0KICAgICAgICB0aGlzLkJhZGdlRmFtaWx5S2V5ID0gZGF0YTsNCiAgICB9DQp9 DQoNCkxlYWRlcmJvYXJkS2V5ID0gQ2xhc3MoKTsNCkxlYWRlcmJvYXJkS2V5LnBy b3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihsZWFkZXJib2Fy ZEtleSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAg ICAgZGF0YS5LZXkgPSBsZWFkZXJib2FyZEtleTsNCiAgICAgICAgdGhpcy5MZWFk ZXJib2FyZEtleSA9IGRhdGE7DQogICAgfQ0KfQ0KDQovLyBXcmFwcGVyIHRvIHJl cXVlc3QgYSBjb21tZW50IHBhZ2UNCkNvbW1lbnRQYWdlID0gQ2xhc3MoKTsNCkNv bW1lbnRQYWdlLnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9u KGFydGljbGVLZXksIG51bWJlclBlclBhZ2UsIG9uUGFnZSwgc29ydCwgZmluZENv bW1lbnRLZXkpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQog ICAgICAgIGRhdGEuQXJ0aWNsZUtleSA9IGFydGljbGVLZXk7DQogICAgICAgIGRh dGEuTnVtYmVyUGVyUGFnZSA9IG51bWJlclBlclBhZ2U7DQogICAgICAgIGRhdGEu T25QYWdlID0gb25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQgPSBzb3J0Ow0KICAg ICAgICBkYXRhLkZpbmRDb21tZW50S2V5ID0gZmluZENvbW1lbnRLZXk7DQogICAg ICAgIHRoaXMuQ29tbWVudFBhZ2UgPSBkYXRhOw0KICAgfQ0KfTsNCg0KLy8gV3Jh cHBlciB0byByZXF1ZXN0IGEgcGVyc29uYSBtZXNzYWdlIHBhZ2UNClBlcnNvbmFN ZXNzYWdlUGFnZSA9IENsYXNzKCk7DQpQZXJzb25hTWVzc2FnZVBhZ2UucHJvdG90 eXBlID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odXNlcktleSwgbnVtYmVy UGVyUGFnZSwgb25QYWdlLCBzb3J0KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3 IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlVzZXJLZXkgPSB1c2VyS2V5Ow0KICAg ICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAg ICBkYXRhLk9uUGFnZSA9IG9uUGFnZTsNCiAgICAgICAgZGF0YS5Tb3J0ID0gc29y dDsNCiAgICAgICAgdGhpcy5QZXJzb25hTWVzc2FnZVBhZ2UgPSBkYXRhOw0KICAg fQ0KfTsNCg0KLy8gV3JhcHBlciB0byByZXF1ZXN0IGEgcmV2aWV3IHBhZ2UNClJl dmlld1BhZ2UgPSBDbGFzcygpOw0KUmV2aWV3UGFnZS5wcm90b3R5cGUgPSB7DQog ICBpbml0aWFsaXplOiBmdW5jdGlvbihhcnRpY2xlS2V5LCBudW1iZXJQZXJQYWdl LCBvblBhZ2Usc29ydCkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3Qo KTsNCiAgICAgICAgZGF0YS5BcnRpY2xlS2V5ID0gYXJ0aWNsZUtleTsNCiAgICAg ICAgZGF0YS5OdW1iZXJQZXJQYWdlID0gbnVtYmVyUGVyUGFnZTsNCiAgICAgICAg ZGF0YS5PblBhZ2UgPSBvblBhZ2U7DQogICAgICAgIGRhdGEuU29ydCA9IHNvcnQ7 DQogICAgICAgIHRoaXMuUmV2aWV3UGFnZSA9IGRhdGE7DQogICB9DQp9Ow0KDQov LyB3cmFwcGVyIHRvIHJlcXVlc3QgYSBwYWdlIG9mIHJldmlld3MgYnkgdXNlcg0K VXNlclJldmlld1BhZ2UgPSBDbGFzcygpOw0KVXNlclJldmlld1BhZ2UucHJvdG90 eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHVzZXJLZXksIG51bWJl clBlclBhZ2UsIG9uUGFnZSwgc29ydCkgew0KICAgICAgICB2YXIgZGF0YSA9IG5l dyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5Vc2VyS2V5ID0gdXNlcktleTsNCiAg ICAgICAgZGF0YS5OdW1iZXJQZXJQYWdlID0gbnVtYmVyUGVyUGFnZTsNCiAgICAg ICAgZGF0YS5PblBhZ2UgPSBvblBhZ2U7DQogICAgICAgIGRhdGEuU29ydCA9IHNv cnQ7DQogICAgICAgIHRoaXMuVXNlclJldmlld1BhZ2UgPSBkYXRhOw0KICAgIH0N Cn07DQoNCi8vIFdyYXBwZXIgb2YgdHlwZXMgYSBnYWxsZXJ5IGNhbiBjb250YWlu DQpNZWRpYVR5cGUgPSBDbGFzcygpOw0KTWVkaWFUeXBlLnByb3RvdHlwZSA9IHsN CiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihuYW1lKSB7DQogICAgICAgIHZhciBk YXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLk5hbWUgPSBuYW1lOw0K ICAgICAgICB0aGlzLk1lZGlhVHlwZSA9IGRhdGE7DQogICAgfQ0KfTsNCi8vIFdy YXBwZXIgdG8gcmVxdWVzdCBhIHBhZ2Ugb2YgcHVibGljIGdhbGxlcmllcw0KUHVi bGljR2FsbGVyeVBhZ2UgPSBDbGFzcygpOw0KUHVibGljR2FsbGVyeVBhZ2UucHJv dG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG51bWJlclBlclBh Z2UsIG9uUGFnZSwgbWVkaWFUeXBlKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3 IE9iamVjdCgpOw0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQ ZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uUGFnZTsNCiAgICAgICAg ZGF0YS5NZWRpYVR5cGUgPSBtZWRpYVR5cGU7DQogICAgICAgIHRoaXMuUHVibGlj R2FsbGVyeVBhZ2UgPSBkYXRhOw0KICAgIH0NCn07DQovLyBXcmFwcGVyIHRvIHJl cXVlc3QgYSBwYWdlIG9mIHVzZXIgZ2FsbGVyaWVzDQpVc2VyR2FsbGVyeVBhZ2Ug PSBDbGFzcygpOw0KVXNlckdhbGxlcnlQYWdlLnByb3RvdHlwZSA9IHsNCiAgICBp bml0aWFsaXplOiBmdW5jdGlvbih1c2VyS2V5LCBudW1iZXJQZXJQYWdlLCBvblBh Z2UsIG1lZGlhVHlwZSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3Qo KTsNCiAgICAgICAgZGF0YS5Vc2VyS2V5ID0gdXNlcktleTsNCiAgICAgICAgZGF0 YS5OdW1iZXJQZXJQYWdlID0gbnVtYmVyUGVyUGFnZTsNCiAgICAgICAgZGF0YS5P blBhZ2UgPSBvblBhZ2U7DQogICAgICAgIGRhdGEuTWVkaWFUeXBlID0gbWVkaWFU eXBlOw0KICAgICAgICB0aGlzLlVzZXJHYWxsZXJ5UGFnZSA9IGRhdGE7DQogICAg fQ0KfTsNCi8vIFdyYXBwZXIgdG8gcmVxdWVzdCBhIHBhZ2Ugb2YgcGhvdG9zDQpQ aG90b1BhZ2UgPSBDbGFzcygpOw0KUGhvdG9QYWdlLnByb3RvdHlwZSA9IHsNCiAg ICBpbml0aWFsaXplOiBmdW5jdGlvbihnYWxsZXJ5S2V5LCBudW1iZXJQZXJQYWdl LCBvblBhZ2UsIHNvcnQpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0 KCk7DQogICAgICAgIGRhdGEuR2FsbGVyeUtleSA9IGdhbGxlcnlLZXk7DQogICAg ICAgIGRhdGEuTnVtYmVyUGVyUGFnZSA9IG51bWJlclBlclBhZ2U7DQogICAgICAg IGRhdGEuT25QYWdlID0gb25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQgPSBzb3J0 Ow0KICAgICAgICB0aGlzLlBob3RvUGFnZSA9IGRhdGE7DQogICAgfQ0KfTsNCi8v IFdyYXBwZXIgdG8gcmVxdWVzdCBhIHBhZ2Ugb2YgdmlkZW9zDQpWaWRlb1BhZ2Ug PSBDbGFzcygpOw0KVmlkZW9QYWdlLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFs aXplOiBmdW5jdGlvbihnYWxsZXJ5S2V5LCBudW1iZXJQZXJQYWdlLCBvblBhZ2Us IHNvcnQpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAg ICAgIGRhdGEuR2FsbGVyeUtleSA9IGdhbGxlcnlLZXk7DQogICAgICAgIGRhdGEu TnVtYmVyUGVyUGFnZSA9IG51bWJlclBlclBhZ2U7DQogICAgICAgIGRhdGEuT25Q YWdlID0gb25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQgPSBzb3J0Ow0KICAgICAg ICB0aGlzLlZpZGVvUGFnZSA9IGRhdGE7DQogICAgfQ0KfTsNCi8vIFdyYXBwZXIg dG8gcmVxdWVzdCBhIGNvbW1lbnQgYWN0aW9uDQpDb21tZW50QWN0aW9uID0gQ2xh c3MoKTsNCkNvbW1lbnRBY3Rpb24ucHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6 ZTogZnVuY3Rpb24oY29tbWVudE9uS2V5LCBvblBhZ2VVcmwsIG9uUGFnZVRpdGxl LCBjb21tZW50Qm9keSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3Qo KTsNCiAgICAgICAgZGF0YS5Db21tZW50T25LZXkgPSBjb21tZW50T25LZXk7DQog ICAgICAgIGRhdGEuT25QYWdlVXJsID0gb25QYWdlVXJsOw0KICAgICAgICBkYXRh Lk9uUGFnZVRpdGxlID0gb25QYWdlVGl0bGU7DQogICAgICAgIGRhdGEuQ29tbWVu dEJvZHkgPSBjb21tZW50Qm9keTsNCiAgICAgICAgdGhpcy5Db21tZW50QWN0aW9u ID0gZGF0YTsNCiAgIH0NCn07DQovLyBXcmFwcGVyIHRvIHJlcXVlc3QgYSByZXZp ZXcgYWN0aW9uDQpSZXZpZXdBY3Rpb24gPSBDbGFzcygpOw0KUmV2aWV3QWN0aW9u LnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHJldmlld09u VGhpc0tleSwgb25QYWdlVXJsLCBvblBhZ2VUaXRsZSwgDQogICAgICAgICAgICAg ICAgICAgICAgICByZXZpZXdUaXRsZSwgcmV2aWV3UmF0aW5nLCByZXZpZXdCb2R5 LCByZXZpZXdQcm9zLCByZXZpZXdDb25zKSB7DQogICAgICAgIHZhciBkYXRhID0g bmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlJldmlld09uS2V5ID0gcmV2aWV3 T25UaGlzS2V5Ow0KICAgICAgICBkYXRhLk9uUGFnZVVybCA9IG9uUGFnZVVybDsN CiAgICAgICAgZGF0YS5PblBhZ2VUaXRsZSA9IG9uUGFnZVRpdGxlOw0KICAgICAg ICBkYXRhLlJldmlld1RpdGxlID0gcmV2aWV3VGl0bGU7DQogICAgICAgIGRhdGEu UmV2aWV3UmF0aW5nID0gcmV2aWV3UmF0aW5nOw0KICAgICAgICBkYXRhLlJldmll d0JvZHkgPSByZXZpZXdCb2R5Ow0KICAgICAgICBkYXRhLlJldmlld1Byb3MgPSBy ZXZpZXdQcm9zOw0KICAgICAgICBkYXRhLlJldmlld0NvbnMgPSByZXZpZXdDb25z Ow0KICAgICAgICB0aGlzLlJldmlld0FjdGlvbiA9IGRhdGE7DQogICB9DQp9Ow0K Ly8gV3JhcHBlciB0byByZXF1ZXN0IGEgcmVjb21tZW5kIGFjdGlvbg0KUmVjb21t ZW5kQWN0aW9uID0gQ2xhc3MoKTsNClJlY29tbWVuZEFjdGlvbi5wcm90b3R5cGUg PSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbihyZWNvbW1lbmRUaGlzS2V5LCBh cnRpY2xlVGl0bGUpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7 DQogICAgICAgIGRhdGEuUmVjb21tZW5kVGhpc0tleSA9IHJlY29tbWVuZFRoaXNL ZXk7DQogICAgICAgIGlmKGFydGljbGVUaXRsZSl7DQoJCQlkYXRhLk9uUGFnZVRp dGxlID0gYXJ0aWNsZVRpdGxlOw0KCQl9DQoJCQ0KICAgICAgICB0aGlzLlJlY29t bWVuZEFjdGlvbiA9IGRhdGE7DQogICB9DQp9Ow0KLy8gV3JhcHBlciB0byByZXF1 ZXN0IGEgcmF0ZSBhY3Rpb24NClJhdGVBY3Rpb24gPSBDbGFzcygpOw0KUmF0ZUFj dGlvbi5wcm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbihyYXRl VGhpc0tleSwgcmF0aW5nKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVj dCgpOw0KICAgICAgICBkYXRhLlJhdGVUaGlzS2V5ID0gcmF0ZVRoaXNLZXk7DQog ICAgICAgIGRhdGEuUmF0aW5nID0gcmF0aW5nOw0KICAgICAgICB0aGlzLlJhdGVB Y3Rpb24gPSBkYXRhOw0KICAgfQ0KfTsNCg0KLy8gUGVybWFuZW50bHkgZGVsZXRl IGEgZ2FsbGVyeSwgdmlkZW8gb3IgcGhvdG8NCkRlbGV0ZUNvbnRlbnRBY3Rpb24g PSBDbGFzcygpOw0KRGVsZXRlQ29udGVudEFjdGlvbi5wcm90b3R5cGUgPSB7DQog ICBpbml0aWFsaXplOiBmdW5jdGlvbihkZWxldGVUaGlzQ29udGVudCkgew0KICAg ICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5EZWxl dGVUaGlzQ29udGVudCA9IGRlbGV0ZVRoaXNDb250ZW50Ow0KICAgICAgICB0aGlz LkRlbGV0ZUNvbnRlbnRBY3Rpb24gPSBkYXRhOw0KICAgfQ0KfTsNCg0KLy8gRW1h aWwgZnJvbSB0aGUgU2l0ZUxpZmUgc3lzdGVtDQpFbWFpbENvbnRlbnRBY3Rpb24g PSBDbGFzcygpOw0KRW1haWxDb250ZW50QWN0aW9uLnByb3RvdHlwZSA9IHsNCiAg IGluaXRpYWxpemU6IGZ1bmN0aW9uKHRvQWRkcmVzcywgc3ViamVjdCwgYm9keSkg ew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0 YS5Ub0FkZHJlc3MgPSB0b0FkZHJlc3M7DQogICAgICAgIGRhdGEuU3ViamVjdCA9 IHN1YmplY3Q7DQogICAgICAgIGRhdGEuQm9keSA9IGJvZHk7DQogICAgICAgIHRo aXMuRW1haWxDb250ZW50QWN0aW9uID0gZGF0YTsNCiAgIH0NCn07DQoNCi8vIEVt YWlsIGZyb20gdGhlIFNpdGVMaWZlIHN5c3RlbSB3aXRoIHVzZXIga2V5IGFzIHRh cmdldA0KRW1haWxDb250ZW50V2l0aFVzZXJJREFjdGlvbiA9IENsYXNzKCk7DQpF bWFpbENvbnRlbnRXaXRoVXNlcklEQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgIGlu aXRpYWxpemU6IGZ1bmN0aW9uKHRvVXNlcktleSwgc3ViamVjdCwgYm9keSkgew0K ICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5V c2VyS2V5ID0gdG9Vc2VyS2V5Ow0KICAgICAgICBkYXRhLlN1YmplY3QgPSBzdWJq ZWN0Ow0KICAgICAgICBkYXRhLkJvZHkgPSBib2R5Ow0KICAgICAgICB0aGlzLkVt YWlsQ29udGVudFdpdGhVc2VySURBY3Rpb24gPSBkYXRhOw0KICAgfQ0KfTsNCg0K Ly8gV3JhcHBlciB0byByZXF1ZXN0IGEgcmVwb3J0IGFidXNlIGFjdGlvbg0KUmVw b3J0QWJ1c2VBY3Rpb24gPSBDbGFzcygpOw0KUmVwb3J0QWJ1c2VBY3Rpb24ucHJv dG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocmVwb3J0VGhpc0tl eSwgYWJ1c2VSZWFzb24sIGFidXNlRGVzY3JpcHRpb24pIHsNCiAgICAgICAgdmFy IGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuUmVwb3J0VGhpc0tl eSA9IHJlcG9ydFRoaXNLZXk7DQogICAgICAgIGRhdGEuQWJ1c2VSZWFzb24gPSBh YnVzZVJlYXNvbjsNCiAgICAgICAgZGF0YS5BYnVzZURlc2NyaXB0aW9uID0gYWJ1 c2VEZXNjcmlwdGlvbjsNCiAgICAgICAgdGhpcy5SZXBvcnRBYnVzZUFjdGlvbiA9 IGRhdGE7DQogICB9DQp9Ow0KLy8gQ2F0ZWdvcnkgdXNlZCBmb3IgZGlzY292ZXJ5 DQpDYXRlZ29yeSA9IENsYXNzKCk7DQpDYXRlZ29yeS5wcm90b3R5cGUgPSB7DQog ICBpbml0aWFsaXplOiBmdW5jdGlvbihuYW1lKSB7DQogICAgICAgIHZhciBkYXRh ID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLk5hbWUgPSBuYW1lOw0KICAg ICAgICB0aGlzLkNhdGVnb3J5ID0gZGF0YTsNCiAgIH0NCn07DQovLyBTZWN0aW9u IHVzZWQgZm9yIGRpc2NvdmVyeQ0KU2VjdGlvbiA9IENsYXNzKCk7DQpTZWN0aW9u LnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihuYW1lKSB7 DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRh Lk5hbWUgPSBuYW1lOw0KICAgICAgICB0aGlzLlNlY3Rpb24gPSBkYXRhOw0KICAg IH0NCn07DQovLyBVcGRhdGUgb3IgY3JlYXRlIGFuIGFydGljbGUNClVwZGF0ZUFy dGljbGVBY3Rpb24gPSBDbGFzcygpOw0KVXBkYXRlQXJ0aWNsZUFjdGlvbi5wcm90 b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbih1cGRhdGVBcnRpY2xl LCBvblBhZ2VVcmwsIG9uUGFnZVRpdGxlLCBzZWN0aW9uLGNhdGVnb3JpZXMpIHsN CiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEu VXBkYXRlQXJ0aWNsZSA9IHVwZGF0ZUFydGljbGU7DQogICAgICAgIGRhdGEuT25Q YWdlVXJsID0gb25QYWdlVXJsOw0KICAgICAgICBkYXRhLk9uUGFnZVRpdGxlID0g b25QYWdlVGl0bGU7DQogICAgICAgIGRhdGEuU2VjdGlvbiA9IHNlY3Rpb247DQog ICAgICAgIGRhdGEuQ2F0ZWdvcmllcyA9IGNhdGVnb3JpZXM7DQogICAgICAgIHRo aXMuVXBkYXRlQXJ0aWNsZUFjdGlvbiA9IGRhdGE7DQogICB9DQp9Ow0KLy8gVXBk YXRlIG9yIGNyZWF0ZSBhIGdhbGxlcnkNClVwZGF0ZUdhbGxlcnlBY3Rpb24gPSBD bGFzcygpOw0KVXBkYXRlR2FsbGVyeUFjdGlvbi5wcm90b3R5cGUgPSB7DQogICAg aW5pdGlhbGl6ZTogZnVuY3Rpb24odXBkYXRlR2FsbGVyeSwgZ2FsbGVyeVR5cGUs IG1lZGlhVHlwZSwgdGl0bGUsIGRlc2NyaXB0aW9uLCB0YWdzLCBzZWN0aW9uLCBn YWxsZXJ5UHJvbW8pIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7 DQogICAgICAgIGRhdGEuVXBkYXRlR2FsbGVyeSA9IHVwZGF0ZUdhbGxlcnk7DQog ICAgICAgIGRhdGEuR2FsbGVyeVR5cGUgPSBnYWxsZXJ5VHlwZTsNCiAgICAgICAg ZGF0YS5NZWRpYVR5cGUgPSBtZWRpYVR5cGU7DQogICAgICAgIGRhdGEuVGl0bGUg PSB0aXRsZTsNCiAgICAgICAgZGF0YS5EZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9u Ow0KICAgICAgICBkYXRhLlRhZ3MgPSB0YWdzOw0KICAgICAgICBkYXRhLlNlY3Rp b24gPSBzZWN0aW9uOw0KICAgICAgICBkYXRhLkdhbGxlcnlQcm9tbyA9IGdhbGxl cnlQcm9tbzsNCiAgICAgICAgdGhpcy5VcGRhdGVHYWxsZXJ5QWN0aW9uID0gZGF0 YTsNCiAgICB9DQp9Ow0KLy8gVXBkYXRlIG9yIGNyZWF0ZSBhIHBob3RvDQpVcGRh dGVQaG90b0FjdGlvbiA9IENsYXNzKCk7DQpVcGRhdGVQaG90b0FjdGlvbi5wcm90 b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odXBkYXRlUGhvdG8s IHRpdGxlLCBkZXNjcmlwdGlvbiwgdGFncywgc2VjdGlvbikgew0KICAgICAgICB2 YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5VcGRhdGVQaG90 byA9IHVwZGF0ZVBob3RvOw0KICAgICAgICBkYXRhLlRpdGxlID0gdGl0bGU7DQog ICAgICAgIGRhdGEuRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsNCiAgICAgICAg ZGF0YS5UYWdzID0gdGFnczsNCiAgICAgICAgZGF0YS5TZWN0aW9uID0gc2VjdGlv bjsNCiAgICAgICAgdGhpcy5VcGRhdGVQaG90b0FjdGlvbiA9IGRhdGE7DQogICAg fQ0KfTsNCi8vIFVwZGF0ZSBvciBjcmVhdGUgYSB2aWRlbw0KVXBkYXRlVmlkZW9B Y3Rpb24gPSBDbGFzcygpOw0KVXBkYXRlVmlkZW9BY3Rpb24ucHJvdG90eXBlID0g ew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHVwZGF0ZVZpZGVvLCB0aXRsZSwg ZGVzY3JpcHRpb24sIHRhZ3MsIHNlY3Rpb24pIHsNCiAgICAgICAgdmFyIGRhdGEg PSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuVXBkYXRlVmlkZW8gPSB1cGRh dGVWaWRlbzsNCiAgICAgICAgZGF0YS5UaXRsZSA9IHRpdGxlOw0KICAgICAgICBk YXRhLkRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247DQogICAgICAgIGRhdGEuVGFn cyA9IHRhZ3M7DQogICAgICAgIGRhdGEuU2VjdGlvbiA9IHNlY3Rpb247DQogICAg ICAgIHRoaXMuVXBkYXRlVmlkZW9BY3Rpb24gPSBkYXRhOw0KICAgIH0NCn07DQov LyANCkdhbGxlcnlUeXBlID0gQ2xhc3MoKTsNCkdhbGxlcnlUeXBlLnByb3RvdHlw ZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihuYW1lKSB7DQogICAgICAg IHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLk5hbWUgPSBu YW1lOw0KICAgICAgICB0aGlzLkdhbGxlcnlUeXBlID0gZGF0YTsNCiAgICB9DQp9 Ow0KLy8gR2FsbGVyeVByb21vIHVzZWQgZm9yIHNldHRpbmcgcHJvbW90aW9uYWwg dGV4dCBmb3IgcHVibGljIGdhbGxlcmllcw0KR2FsbGVyeVByb21vID0gQ2xhc3Mo KTsNCkdhbGxlcnlQcm9tby5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24odGl0bGUsIGJvZHksIHBob3RvS2V5KSB7DQogICAgICAgIHZhciBk YXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlRpdGxlID0gdGl0bGU7 DQogICAgICAgIGRhdGEuQm9keSA9IGJvZHk7DQogICAgICAgIGRhdGEuUGhvdG9L ZXkgPSBwaG90b0tleTsNCiAgICAgICAgdGhpcy5HYWxsZXJ5UHJvbW8gPSBkYXRh Ow0KICAgIH0NCn07DQovLyBVc2VyVGllciB1c2VkIGZvciBkaXNjb3ZlcnkNClVz ZXJUaWVyID0gQ2xhc3MoKTsNClVzZXJUaWVyLnByb3RvdHlwZSA9IHsNCiAgICBp bml0aWFsaXplOiBmdW5jdGlvbihuYW1lKSB7DQogICAgICAgIHZhciBkYXRhID0g bmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLk5hbWUgPSBuYW1lOw0KICAgICAg ICB0aGlzLlVzZXJUaWVyID0gZGF0YTsNCiAgICB9DQp9Ow0KLy8gTWVtYmVyc2hp cFRpZXIgdXNlZCBmb3IgY29tbXVuaXR5IGdyb3Vwcw0KTWVtYmVyc2hpcFRpZXIg PSBDbGFzcygpOw0KTWVtYmVyc2hpcFRpZXIucHJvdG90eXBlID0gew0KICAgIGlu aXRpYWxpemU6IGZ1bmN0aW9uKG5hbWUpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBu ZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuTmFtZSA9IG5hbWU7DQogICAgICAg IHRoaXMuTWVtYmVyc2hpcFRpZXIgPSBkYXRhOw0KICAgIH0NCn07DQovLyBBY3Rp dml0eSB1c2VkIGZvciBkaXNjb3ZlcnkNCkFjdGl2aXR5ID0gQ2xhc3MoKTsNCkFj dGl2aXR5LnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihu YW1lKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAg ICBkYXRhLk5hbWUgPSBuYW1lOw0KICAgICAgICB0aGlzLkFjdGl2aXR5ID0gZGF0 YTsNCiAgICB9DQp9Ow0KLy8gRGlzY292ZXJ5IG9uIGFydGljbGVzDQpEaXNjb3Zl ckFydGljbGVzQWN0aW9uID0gQ2xhc3MoKTsNCkRpc2NvdmVyQXJ0aWNsZXNBY3Rp b24ucHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oc2VhcmNo U2VjdGlvbnMsc2VhcmNoQ2F0ZWdvcmllcyxsaW1pdFRvQ29udHJpYnV0b3JzLGFj dGl2aXR5LGFnZSxtYXhpbXVtTnVtYmVyT2ZEaXNjb3Zlcmllcykgew0KICAgICAg ICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5TZWFyY2hT ZWN0aW9ucyA9IHNlYXJjaFNlY3Rpb25zOw0KICAgICAgICBkYXRhLlNlYXJjaENh dGVnb3JpZXMgPSBzZWFyY2hDYXRlZ29yaWVzOw0KICAgICAgICBkYXRhLkxpbWl0 VG9Db250cmlidXRvcnMgPSBsaW1pdFRvQ29udHJpYnV0b3JzOw0KICAgICAgICBk YXRhLkFjdGl2aXR5ID0gYWN0aXZpdHk7DQogICAgICAgIGRhdGEuQWdlID0gYWdl Ow0KICAgICAgICBkYXRhLk1heGltdW1OdW1iZXJPZkRpc2NvdmVyaWVzID0gbWF4 aW11bU51bWJlck9mRGlzY292ZXJpZXM7DQoNCiAgICAgICAgdGhpcy5EaXNjb3Zl ckFydGljbGVzQWN0aW9uID0gZGF0YTsNCiAgIH0NCn07DQoNCi8vIEFjdGlvbiB1 c2VkIHRvIGFkZCBhIGZyaWVuZA0KQWRkRnJpZW5kQWN0aW9uID0gQ2xhc3MoKTsN CkFkZEZyaWVuZEFjdGlvbi5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24oZnJpZW5kVXNlcktleSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5l dyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5GcmllbmRVc2VyS2V5ID0gZnJpZW5k VXNlcktleTsNCiAgICAgICAgdGhpcy5BZGRGcmllbmRBY3Rpb24gPSBkYXRhOw0K ICAgIH0NCn07DQoNCi8vIEFjdGlvbiB1c2VkIHRvIGFkZCBhIG1lc3NhZ2UNCkFk ZFBlcnNvbmFNZXNzYWdlQWN0aW9uID0gQ2xhc3MoKTsNCkFkZFBlcnNvbmFNZXNz YWdlQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlv bih0b1VzZXJLZXksIGJvZHkpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2Jq ZWN0KCk7DQogICAgICAgIGRhdGEuVG9Vc2VyS2V5ID0gdG9Vc2VyS2V5Ow0KICAg ICAgICBkYXRhLkJvZHkgPSBib2R5Ow0KICAgICAgICB0aGlzLkFkZFBlcnNvbmFN ZXNzYWdlQWN0aW9uID0gZGF0YTsNCiAgICB9DQp9Ow0KDQovLyBBY3Rpb24gdXNl ZCB0byByZW1vdmUgYSBtZXNzYWdlDQpSZW1vdmVQZXJzb25hTWVzc2FnZUFjdGlv biA9IENsYXNzKCk7DQpSZW1vdmVQZXJzb25hTWVzc2FnZUFjdGlvbi5wcm90b3R5 cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocGVyc29uYU1lc3NhZ2VL ZXkpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAg IGRhdGEuUGVyc29uYU1lc3NhZ2VLZXkgPSBwZXJzb25hTWVzc2FnZUtleTsNCiAg ICAgICAgdGhpcy5SZW1vdmVQZXJzb25hTWVzc2FnZUFjdGlvbiA9IGRhdGE7DQog ICAgfQ0KfTsNCg0KLy8gQWN0aW9uIHVzZWQgdG8gYXBwcm92ZSBhIGZyaWVuZA0K QXBwcm92ZUZyaWVuZEFjdGlvbiA9IENsYXNzKCk7DQpBcHByb3ZlRnJpZW5kQWN0 aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihmcmll bmRVc2VyS2V5LCBpc0FwcHJvdmVkKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3 IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkZyaWVuZFVzZXJLZXkgPSBmcmllbmRV c2VyS2V5Ow0KICAgICAgICBkYXRhLklzQXBwcm92ZWQgPSBpc0FwcHJvdmVkOw0K ICAgICAgICB0aGlzLkFwcHJvdmVGcmllbmRBY3Rpb24gPSBkYXRhOw0KICAgIH0N Cn07DQoNCi8vIEFjdGlvbiB1c2VkIHRvIHJlbW92ZSBhIGZyaWVuZA0KUmVtb3Zl RnJpZW5kQWN0aW9uID0gQ2xhc3MoKTsNClJlbW92ZUZyaWVuZEFjdGlvbi5wcm90 b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZnJpZW5kVXNlcktl eSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAg ZGF0YS5GcmllbmRVc2VyS2V5ID0gZnJpZW5kVXNlcktleTsNCiAgICAgICAgdGhp cy5SZW1vdmVGcmllbmRBY3Rpb24gPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIEFj dGlvbiB1c2VkIHRvIGFkZCBhbiBlbmVteQ0KQWRkRW5lbXlBY3Rpb24gPSBDbGFz cygpOw0KQWRkRW5lbXlBY3Rpb24ucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKGVuZW15VXNlcktleSkgew0KICAgICAgICB2YXIgZGF0YSA9 IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5FbmVteVVzZXJLZXkgPSBlbmVt eVVzZXJLZXk7DQogICAgICAgIHRoaXMuQWRkRW5lbXlBY3Rpb24gPSBkYXRhOw0K ICAgIH0NCn07DQoNCi8vIEFjdGlvbiB1c2VkIHRvIHJlbW92ZSBhbiBlbmVteQ0K UmVtb3ZlRW5lbXlBY3Rpb24gPSBDbGFzcygpOw0KUmVtb3ZlRW5lbXlBY3Rpb24u cHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVuZW15VXNl cktleSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAg ICAgZGF0YS5FbmVteVVzZXJLZXkgPSBlbmVteVVzZXJLZXk7DQogICAgICAgIHRo aXMuUmVtb3ZlRW5lbXlBY3Rpb24gPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIFdy YXBwZXIgdG8gcmVxdWVzdCBhIGZyaWVuZCBwYWdlDQpGcmllbmRQYWdlID0gQ2xh c3MoKTsNCkZyaWVuZFBhZ2UucHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24odXNlcktleSwgbnVtYmVyUGVyUGFnZSwgb25QYWdlLCBpc1BlbmRp bmdMaXN0LCBmaWx0ZXJLZXksIGZpbHRlclZhbHVlKSB7DQogICAgICAgIHZhciBk YXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlVzZXJLZXkgPSB1c2Vy S2V5Ow0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdl Ow0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uUGFnZTsNCiAgICAgICAgZGF0YS5J c1BlbmRpbmdMaXN0ID0gaXNQZW5kaW5nTGlzdDsNCiAgICAgICAgZGF0YS5GaWx0 ZXJLZXkgPSBmaWx0ZXJLZXk7DQogICAgICAgIGRhdGEuRmlsdGVyVmFsdWUgPSBm aWx0ZXJWYWx1ZTsNCiAgICAgICAgdGhpcy5GcmllbmRQYWdlID0gZGF0YTsNCiAg IH0NCn07DQoNCi8vIFdyYXBwZXIgdG8gcmVxdWVzdCBpZiBhIGdpdmVuIHVzZXIg a2V5IGlzIGEgZnJpZW5kIG9mIHRoZSB1c2VyIHNwZWNpZmllZCBieSB0aGUgc2Vj b25kIHBhcmFtZXRlcg0KLy8gaWYgdGhlIHVzZXJLZXkgcGFyYW1ldGVyIGlzIG5v dCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50bHkgbG9nZ2VkLWluIHVzZXIgaXMgdXNl ZA0KSXNGcmllbmQgPSBDbGFzcygpOw0KSXNGcmllbmQucHJvdG90eXBlID0gew0K ICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZnJpZW5kVXNlcktleSwgdXNlcktleSkg ew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0 YS5GcmllbmRVc2VyS2V5ID0gZnJpZW5kVXNlcktleTsNCiAgICAgICAgZGF0YS5V c2VyS2V5ID0gdXNlcktleTsNCiAgICAgICAgdGhpcy5Jc0ZyaWVuZCA9IGRhdGE7 DQogICB9DQp9Ow0KCQkJCQkJCQkJCQkJDQovLyBXcmFwcGVyIHRvIHJlcXVlc3Qg YSBmcmllbmQgcGFnZQ0KRW5lbXlQYWdlID0gQ2xhc3MoKTsNCkVuZW15UGFnZS5w cm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbih1c2VyS2V5LCBu dW1iZXJQZXJQYWdlLCBvblBhZ2UsIHNvcnQpIHsNCiAgICAgICAgdmFyIGRhdGEg PSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuVXNlcktleSA9IHVzZXJLZXk7 DQogICAgICAgIGRhdGEuTnVtYmVyUGVyUGFnZSA9IG51bWJlclBlclBhZ2U7DQog ICAgICAgIGRhdGEuT25QYWdlID0gb25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQg PSBzb3J0Ow0KICAgICAgICB0aGlzLkVuZW15UGFnZSA9IGRhdGE7DQogICB9DQp9 Ow0KCQkJCQkJCQkJCQkJDQovLyBEaXNjb3Zlcnkgb24gY29udGVudA0KRGlzY292 ZXJDb250ZW50QWN0aW9uID0gQ2xhc3MoKTsNCkRpc2NvdmVyQ29udGVudEFjdGlv bi5wcm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbihzZWFyY2hT ZWN0aW9ucyxzZWFyY2hDYXRlZ29yaWVzLGxpbWl0VG9Db250cmlidXRvcnMsYWN0 aXZpdHksY29udGVudFR5cGUsYWdlLG1heGltdW1OdW1iZXJPZkRpc2NvdmVyaWVz LCBmaWx0ZXJCeVNpdGVPZk9yaWdpbiwgcGFyZW50S2V5cykgew0KICAgICAgICB2 YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5TZWFyY2hTZWN0 aW9ucyA9IHNlYXJjaFNlY3Rpb25zOw0KICAgICAgICBkYXRhLlNlYXJjaENhdGVn b3JpZXMgPSBzZWFyY2hDYXRlZ29yaWVzOw0KICAgICAgICBkYXRhLkxpbWl0VG9D b250cmlidXRvcnMgPSBsaW1pdFRvQ29udHJpYnV0b3JzOw0KICAgICAgICBkYXRh LkFjdGl2aXR5ID0gYWN0aXZpdHk7DQogICAgICAgIGRhdGEuQ29udGVudFR5cGUg PSBjb250ZW50VHlwZTsNCiAgICAgICAgZGF0YS5BZ2UgPSBhZ2U7DQogICAgICAg IGRhdGEuTWF4aW11bU51bWJlck9mRGlzY292ZXJpZXMgPSBtYXhpbXVtTnVtYmVy T2ZEaXNjb3ZlcmllczsNCiAgICAgICAgZGF0YS5GaWx0ZXJCeVNpdGVPZk9yaWdp biA9IGZpbHRlckJ5U2l0ZU9mT3JpZ2luOw0KICAgICAgICBpZihwYXJlbnRLZXlz KXsNCgkJCWRhdGEuUGFyZW50S2V5cyA9IHBhcmVudEtleXM7DQoJCX0JDQogICAg ICAgIHRoaXMuRGlzY292ZXJDb250ZW50QWN0aW9uID0gZGF0YTsNCiAgIH0NCn07 DQoNCi8vIENvbnRlbnQgdHlwZSBmb3IgZGlzY292ZXJ5DQpDb250ZW50VHlwZSA9 IENsYXNzKCk7DQpDb250ZW50VHlwZS5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlh bGl6ZTogZnVuY3Rpb24obmFtZSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBP YmplY3QoKTsNCiAgICAgICAgZGF0YS5OYW1lID0gbmFtZTsNCiAgICAgICAgdGhp cy5Db250ZW50VHlwZSA9IGRhdGE7DQogICAgfQ0KfTsNCgkJCQkJCQkJCQkJCQ0K VXBkYXRlVXNlclByb2ZpbGVBY3Rpb24gPSBDbGFzcygpOw0KVXBkYXRlVXNlclBy b2ZpbGVBY3Rpb24ucHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rp b24oICAgdXNlcktleSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJv dXRNZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24sDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGVPZkJpcnRoLCANCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXgsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBlcnNvbmFQcml2YWN5TW9kZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWVudHNUYWJWaXNpYmxlLCANCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwaG90b3NUYWJWaXNpYmxlLCANCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtZXNzYWdlc09wZW5Ub0V2ZXJ5b25lLCANCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpc0VtYWlsTm90aWZpY2F0aW9uc0VuYWJsZWQsIA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU3R5bGVJZCwgDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgY3VzdG9tQW5zd2VycywgDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRQcm9maWxlKSB7DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgDQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVj dCgpOw0KICAgICAgICBkYXRhLlVzZXJLZXkgPSB1c2VyS2V5Ow0KICAgICAgICBk YXRhLkFib3V0TWUgPSBhYm91dE1lOw0KICAgICAgICBkYXRhLkxvY2F0aW9uID0g bG9jYXRpb247DQogICAgICAgIGRhdGEuU2lnbmF0dXJlID0gc2lnbmF0dXJlOw0K ICAgICAgICBkYXRhLkRhdGVPZkJpcnRoID0gZGF0ZU9mQmlydGg7DQogICAgICAg IGRhdGEuU2V4ID0gc2V4Ow0KCQlkYXRhLlBlcnNvbmFQcml2YWN5TW9kZSA9IHBl cnNvbmFQcml2YWN5TW9kZTsNCgkJZGF0YS5Db21tZW50c1RhYlZpc2libGUgPSBj b21tZW50c1RhYlZpc2libGU7DQoJCWRhdGEuUGhvdG9zVGFiVmlzaWJsZSA9IHBo b3Rvc1RhYlZpc2libGU7DQoJCWRhdGEuTWVzc2FnZXNPcGVuVG9FdmVyeW9uZSA9 IG1lc3NhZ2VzT3BlblRvRXZlcnlvbmU7DQoJCWRhdGEuSXNFbWFpbE5vdGlmaWNh dGlvbnNFbmFibGVkID0gaXNFbWFpbE5vdGlmaWNhdGlvbnNFbmFibGVkOw0KCQlk YXRhLlNlbGVjdGVkU3R5bGVJZCA9IHNlbGVjdGVkU3R5bGVJZDsNCgkJZGF0YS5D dXN0b21BbnN3ZXJzID0gY3VzdG9tQW5zd2VyczsNCgkJZGF0YS5FeHRlbmRlZFBy b2ZpbGUgPSBleHRlbmRlZFByb2ZpbGU7ICAgICAgICANCiAgICAgICAgdGhpcy5V cGRhdGVVc2VyUHJvZmlsZUFjdGlvbiA9IGRhdGE7DQogICB9DQp9Ow0KDQpVcGRh dGVVc2VyQmxvY2tlZFNldHRpbmdBY3Rpb24gPSBDbGFzcygpOw0KVXBkYXRlVXNl ckJsb2NrZWRTZXR0aW5nQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFs aXplOiBmdW5jdGlvbiggdXNlcktleSwgaXNCbG9ja2VkICl7DQogICAgICAgIHZh ciBkYXRhID0gbmV3IE9iamVjdDsNCiAgICAgICAgZGF0YS5Vc2VyS2V5ID0gdXNl cktleTsNCiAgICAgICAgZGF0YS5Jc0Jsb2NrZWQgPSBpc0Jsb2NrZWQ7DQogICAg ICAgIHRoaXMuVXBkYXRlVXNlckJsb2NrZWRTZXR0aW5nQWN0aW9uID0gZGF0YTsN CiAgICB9ICAgIA0KfTsNCg0KU2VhcmNoQWN0aW9uID0gQ2xhc3MoKTsNClNlYXJj aEFjdGlvbi5wcm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbihz ZWFyY2hUeXBlLCBzZWFyY2hTdHJpbmcsIG51bWJlclBlclBhZ2UsIG9uUGFnZSAp IHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRh dGEuU2VhcmNoVHlwZSA9IHNlYXJjaFR5cGU7DQogICAgICAgIGRhdGEuU2VhcmNo U3RyaW5nID0gc2VhcmNoU3RyaW5nOw0KICAgICAgICBkYXRhLk51bWJlclBlclBh Z2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uUGFn ZTsNCiAgICAgICAgdGhpcy5TZWFyY2hBY3Rpb24gPSBkYXRhOw0KICAgfQ0KfTsN Cg0KLy8gV3JhcHBlciB0byByZXF1ZXN0IGEgd2F0Y2ggaXRlbSBwYWdlDQpXYXRj aEl0ZW1QYWdlID0gQ2xhc3MoKTsNCldhdGNoSXRlbVBhZ2UucHJvdG90eXBlID0g ew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odXNlcktleSwgbnVtYmVyUGVyUGFn ZSwgb25QYWdlKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0K ICAgICAgICBkYXRhLlVzZXJLZXkgPSB1c2VyS2V5Ow0KICAgICAgICBkYXRhLk51 bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFn ZSA9IG9uUGFnZTsNCiAgICAgICAgdGhpcy5XYXRjaEl0ZW1QYWdlID0gZGF0YTsN CiAgIH0NCn07DQoNCi8vIFdyYXBwZXIgdG8gYWRkIGEgd2F0Y2ggaXRlbQ0KQWRk V2F0Y2hJdGVtQWN0aW9uID0gQ2xhc3MoKTsNCkFkZFdhdGNoSXRlbUFjdGlvbi5w cm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbih1c2VyS2V5LCB3 YXRjaFRhcmdldEtleSwgdGl0bGUsIHVybCApIHsNCiAgICAgICAgdmFyIGRhdGEg PSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuVXNlcktleSA9IHVzZXJLZXk7 DQogICAgICAgIGRhdGEuV2F0Y2hUYXJnZXRLZXkgPSB3YXRjaFRhcmdldEtleTsN CiAgICAgICAgZGF0YS5XYXRjaEl0ZW1UaXRsZSA9IHRpdGxlOw0KICAgICAgICBk YXRhLldhdGNoSXRlbVVybCA9IHVybDsNCiAgICAgICAgdGhpcy5BZGRXYXRjaEl0 ZW1BY3Rpb24gPSBkYXRhOw0KICAgfQ0KfTsNCg0KLy8gV3JhcHBlciB0byBkZWxl dGUgYSB3YXRjaCBpdGVtDQpEZWxldGVXYXRjaEl0ZW1BY3Rpb24gPSBDbGFzcygp Ow0KRGVsZXRlV2F0Y2hJdGVtQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgIGluaXRp YWxpemU6IGZ1bmN0aW9uKHVzZXJLZXksIHdhdGNoVGFyZ2V0S2V5KSB7DQogICAg ICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlVzZXJL ZXkgPSB1c2VyS2V5Ow0KICAgICAgICBkYXRhLldhdGNoVGFyZ2V0S2V5ID0gd2F0 Y2hUYXJnZXRLZXk7DQogICAgICAgIHRoaXMuRGVsZXRlV2F0Y2hJdGVtQWN0aW9u ID0gZGF0YTsNCiAgIH0NCn07DQoNCi8vIFdyYXBwZXIgdG8gcmVxdWVzdCBhIGJs b2cgcG9zdCBwYWdlDQpCbG9nUG9zdFBhZ2UgPSBDbGFzcygpOw0KQmxvZ1Bvc3RQ YWdlLnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJsb2dL ZXksIG51bWJlclBlclBhZ2UsIG9uUGFnZSwgc29ydCwgYmxvZ1Bvc3RTdGF0ZSwg cmVzdHJpY3RUb093bmVyLCBpbmNsdWRlRnV0dXJlUG9zdHMpIHsNCiAgICAgICAg dmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuQmxvZ0tleSA9 IGJsb2dLZXk7DQogICAgICAgIGRhdGEuTnVtYmVyUGVyUGFnZSA9IG51bWJlclBl clBhZ2U7DQogICAgICAgIGRhdGEuT25QYWdlID0gb25QYWdlOw0KICAgICAgICBk YXRhLlNvcnQgPSBzb3J0Ow0KICAgICAgICBkYXRhLkJsb2dQb3N0U3RhdGUgPSBi bG9nUG9zdFN0YXRlOw0KICAgICAgICBpZiAoKHR5cGVvZihyZXN0cmljdFRvT3du ZXIpID09ICd1bmRlZmluZWQnKSB8fCAocmVzdHJpY3RUb093bmVyID09IG51bGwp KSB7DQogICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGZhbHNlIGZvciBiYWNrd2Fy ZHMgY29tcGF0aWJpbGl0eQ0KICAgICAgICAgICAgcmVzdHJpY3RUb093bmVyID0g ZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgZGF0YS5SZXN0cmljdFRvT3duZXIg PSByZXN0cmljdFRvT3duZXIudG9TdHJpbmcoKTsNCiAgICAgICAgaWYgKCh0eXBl b2YoaW5jbHVkZUZ1dHVyZVBvc3RzKSA9PSAndW5kZWZpbmVkJykgfHwgKGluY2x1 ZGVGdXR1cmVQb3N0cyA9PSBudWxsKSkgew0KICAgICAgICAgICAgLy8gRGVmYXVs dCB0byBmYWxzZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkNCiAgICAgICAg ICAgIGluY2x1ZGVGdXR1cmVQb3N0cyA9IGZhbHNlOw0KICAgICAgICB9DQogICAg ICAgIGRhdGEuSW5jbHVkZUZ1dHVyZVBvc3RzID0gaW5jbHVkZUZ1dHVyZVBvc3Rz LnRvU3RyaW5nKCk7DQogICAgICAgIHRoaXMuQmxvZ1Bvc3RQYWdlID0gZGF0YTsN CiAgIH0NCn07DQoNCi8vIFdyYXBwZXIgdG8gcmVxdWVzdCBhIGJsb2cgcG9zdCBw YWdlIGJ5IFRhZw0KQmxvZ1Bvc3RzQnlUYWdQYWdlID0gQ2xhc3MoKTsNCkJsb2dQ b3N0c0J5VGFnUGFnZS5wcm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5j dGlvbihibG9nS2V5LCB0YWcsIG51bWJlclBlclBhZ2UsIG9uUGFnZSwgc29ydCkg ew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0 YS5CbG9nS2V5ID0gYmxvZ0tleTsNCiAgICAgICAgZGF0YS5UYWcgPSB0YWc7DQog ICAgICAgIGRhdGEuTnVtYmVyUGVyUGFnZSA9IG51bWJlclBlclBhZ2U7DQogICAg ICAgIGRhdGEuT25QYWdlID0gb25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQgPSBz b3J0Ow0KICAgICAgICB0aGlzLkJsb2dQb3N0c0J5VGFnUGFnZSA9IGRhdGE7DQog ICB9DQp9Ow0KDQoNCi8vIFdyYXBwZXIgdG8gcmVxdWVzdCBhIGJsb2cgcG9zdCBh cmNoaXZlIGNvdW50DQpCbG9nUG9zdEFyY2hpdmVDb3VudCA9IENsYXNzKCk7DQpC bG9nUG9zdEFyY2hpdmVDb3VudC5wcm90b3R5cGUgPSB7DQogICBpbml0aWFsaXpl OiBmdW5jdGlvbihibG9nS2V5KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9i amVjdCgpOw0KICAgICAgICBkYXRhLkJsb2dLZXkgPSBibG9nS2V5Ow0KICAgICAg ICB0aGlzLkJsb2dQb3N0QXJjaGl2ZUNvdW50ID0gZGF0YTsNCiAgIH0NCn07DQoN Cg0KLy8gV3JhcHBlciB0byByZXF1ZXN0IGEgYmxvZyBwb3N0IGFyY2hpdmUgY29u dGVudCBwYWdlDQpCbG9nUG9zdEFyY2hpdmVDb250ZW50UGFnZSA9IENsYXNzKCk7 DQpCbG9nUG9zdEFyY2hpdmVDb250ZW50UGFnZSAucHJvdG90eXBlID0gew0KICAg aW5pdGlhbGl6ZTogZnVuY3Rpb24oYmxvZ0tleSwgbW9udGgsIG51bWJlclBlclBh Z2UsIG9uUGFnZSwgc29ydCkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmpl Y3QoKTsNCiAgICAgICAgZGF0YS5CbG9nS2V5ID0gYmxvZ0tleTsNCiAgICAgICAg ZGF0YS5Nb250aCA9IG1vbnRoOw0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2Ug PSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uUGFnZTsN CiAgICAgICAgZGF0YS5Tb3J0ID0gc29ydDsNCiAgICAgICAgdGhpcy5CbG9nUG9z dEFyY2hpdmVDb250ZW50UGFnZSA9IGRhdGE7DQogICB9DQp9Ow0KDQoNCi8vIFdy YXBwZXIgdG8gcmVxdWVzdCBhIHVzZXIgY29tbWVudCBwYWdlDQpVc2VyQ29tbWVu dFBhZ2UgPSBDbGFzcygpOw0KVXNlckNvbW1lbnRQYWdlLnByb3RvdHlwZSA9IHsN CiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHVzZXJLZXksIG51bWJlclBlclBhZ2Us IG9uUGFnZSwgc29ydCwgY29tbWVudHNPbmx5KSB7DQogICAgICAgIHZhciBkYXRh ID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlVzZXJLZXkgPSB1c2VyS2V5 Ow0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0K ICAgICAgICBkYXRhLk9uUGFnZSA9IG9uUGFnZTsNCiAgICAgICAgZGF0YS5Tb3J0 ID0gc29ydDsNCiAgICAgICAgZGF0YS5Db21tZW50c09ubHkgPSBjb21tZW50c09u bHk7DQogICAgICAgIHRoaXMuVXNlckNvbW1lbnRQYWdlID0gZGF0YTsNCiAgIH0N Cn07DQoNCg0KLy8gV3JhcHBlciB0byByZXF1ZXN0IGJsb2cgdGFnIA0KUmVjZW50 QmxvZ1RhZyA9IENsYXNzKCk7DQpSZWNlbnRCbG9nVGFnLnByb3RvdHlwZSA9IHsN CiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJsb2dLZXkpIHsNCiAgICAgICAgdmFy IGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuQmxvZ0tleSA9IGJs b2dLZXk7DQogICAgICAgIHRoaXMuUmVjZW50QmxvZ1RhZyA9IGRhdGE7DQogICB9 DQp9Ow0KDQoNCi8vIFdyYXBwZXIgdG8gcmVxdWVzdCByZWNlbnQgdXNlciBwaG90 byBwYWdlDQpSZWNlbnRVc2VyUGhvdG9QYWdlID0gQ2xhc3MoKTsNClJlY2VudFVz ZXJQaG90b1BhZ2UucHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rp b24odXNlcktleSwgbnVtYmVyUGVyUGFnZSwgb25QYWdlKSB7DQogICAgICAgIHZh ciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlVzZXJLZXkgPSB1 c2VyS2V5Ow0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQ YWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uUGFnZTsNCiAgICAgICAgdGhp cy5SZWNlbnRVc2VyUGhvdG9QYWdlID0gZGF0YTsNCiAgIH0NCn07DQoNCi8vIFdy YXBwZXIgdG8gcmVxdWVzdCByZWNlbnQgdXNlciB2aWRlbyBwYWdlDQpSZWNlbnRV c2VyVmlkZW9QYWdlID0gQ2xhc3MoKTsNClJlY2VudFVzZXJWaWRlb1BhZ2UgLnBy b3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHVzZXJLZXksIG51 bWJlclBlclBhZ2UsIG9uUGFnZSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBP YmplY3QoKTsNCiAgICAgICAgZGF0YS5Vc2VyS2V5ID0gdXNlcktleTsNCiAgICAg ICAgZGF0YS5OdW1iZXJQZXJQYWdlID0gbnVtYmVyUGVyUGFnZTsNCiAgICAgICAg ZGF0YS5PblBhZ2UgPSBvblBhZ2U7DQogICAgICAgIHRoaXMuUmVjZW50VXNlclZp ZGVvUGFnZSAgPSBkYXRhOw0KICAgfQ0KfTsNCg0KDQovLyBXcmFwcGVyIHRvIHJl cXVlc3QgcmVjZW50IHB1YmxpYyBnYWxsZXJ5IHBhZ2UNClJlY2VudFB1YmxpY0dh bGxlcnlQYWdlID0gQ2xhc3MoKTsNClJlY2VudFB1YmxpY0dhbGxlcnlQYWdlIC5w cm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbih1c2VyS2V5LCBu dW1iZXJQZXJQYWdlLCBvblBhZ2UpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcg T2JqZWN0KCk7DQogICAgICAgIGRhdGEuVXNlcktleSA9IHVzZXJLZXk7DQogICAg ICAgIGRhdGEuTnVtYmVyUGVyUGFnZSA9IG51bWJlclBlclBhZ2U7DQogICAgICAg IGRhdGEuT25QYWdlID0gb25QYWdlOw0KICAgICAgICB0aGlzLlJlY2VudFB1Ymxp Y0dhbGxlcnlQYWdlICA9IGRhdGE7DQogICB9DQp9Ow0KICAgIA0KICAgIA0KLy8g V3JhcHBlciB0byByZXF1ZXN0IHJlY2VudCB1c2VyIGFjdGl2aXR5IHBhZ2UNClJl Y2VudFVzZXJBY3Rpdml0eSA9IENsYXNzKCk7DQpSZWNlbnRVc2VyQWN0aXZpdHkg LnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHVzZXJLZXkp IHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRh dGEuVXNlcktleSA9IHVzZXJLZXk7DQogICAgICAgdGhpcy5SZWNlbnRVc2VyQWN0 aXZpdHkgID0gZGF0YTsNCiAgIH0NCn07DQoNCiAgDQovLyBXcmFwcGVyIHRvIHJl cXVlc3QgcGFnZSBvZiB1c2VyIG1lZGlhIHN1Ym1pc3Npb24gY291bnRzDQpVc2Vy TWVkaWFTdWJtaXNzaW9uc0NvdW50UGFnZSA9IENsYXNzKCk7DQpVc2VyTWVkaWFT dWJtaXNzaW9uc0NvdW50UGFnZSAucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKHVzZXJLZXksIG1lZGlhVHlwZSwgbnVtYmVyUGVyUGFnZSwg b25QYWdlKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAg ICAgICBkYXRhLlVzZXJLZXkgPSB1c2VyS2V5Ow0KICAgICAgICBkYXRhLk1lZGlh VHlwZSA9IG1lZGlhVHlwZTsNCiAgICAgICAgZGF0YS5OdW1iZXJQZXJQYWdlID0g bnVtYmVyUGVyUGFnZTsNCiAgICAgICAgZGF0YS5PblBhZ2UgPSBvblBhZ2U7DQog ICAgICAgIHRoaXMuVXNlck1lZGlhU3VibWlzc2lvbnNDb3VudFBhZ2UgPSBkYXRh Ow0KICAgIH0NCn07DQoNCg0KLy8gV3JhcHBlciB0byByZXF1ZXN0IHJlY2VudCBm b3J1bSBkaXNjdXNzaW9uIHBhZ2UNClJlY2VudEZvcnVtRGlzY3Vzc2lvblBhZ2Ug PSBDbGFzcygpOw0KUmVjZW50Rm9ydW1EaXNjdXNzaW9uUGFnZSAucHJvdG90eXBl ID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odXNlcktleSwgbnVtYmVyUGVy UGFnZSwgb25QYWdlKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgp Ow0KICAgICAgICBkYXRhLlVzZXJLZXkgPSB1c2VyS2V5Ow0KICAgICAgICBkYXRh Lk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9u UGFnZSA9IG9uUGFnZTsNCiAgICAgICAgdGhpcy5SZWNlbnRGb3J1bURpc2N1c3Np b25QYWdlID0gZGF0YTsNCiAgIH0NCn07DQoNCiAgICANCi8vIFdyYXBwZXIgdG8g cmVxdWVzdCB1c2VyIGdyb3VwIGZvcnVtIHBhZ2UNClVzZXJHcm91cEZvcnVtUGFn ZSA9IENsYXNzKCk7DQpVc2VyR3JvdXBGb3J1bVBhZ2UgLnByb3RvdHlwZSA9IHsN CiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHVzZXJLZXksIG51bWJlclBlclBhZ2Us IG9uUGFnZSwgc29ydCkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3Qo KTsNCiAgICAgICAgZGF0YS5Vc2VyS2V5ID0gdXNlcktleTsNCiAgICAgICAgZGF0 YS5OdW1iZXJQZXJQYWdlID0gbnVtYmVyUGVyUGFnZTsNCiAgICAgICAgZGF0YS5P blBhZ2UgPSBvblBhZ2U7DQogICAgICAgIGRhdGEuU29ydCA9IHNvcnQ7DQogICAg ICAgIHRoaXMuVXNlckdyb3VwRm9ydW1QYWdlID0gZGF0YTsNCiAgIH0NCn07DQoN Ci8vIFRoZSBibG9nUm9sbEVudHJ5IHVzZWQgaW4gVXBkYXRlQmxvZ0FjdGlvbg0K QmxvZ1JvbGxFbnRyeSA9IENsYXNzKCk7DQpCbG9nUm9sbEVudHJ5LnByb3RvdHlw ZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG5hbWUsIHVybCkgew0KICAg ICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5OYW1l ID0gbmFtZTsNCiAgICAgICAgZGF0YS5VcmwgPSB1cmw7DQogICAgICAgIHRoaXMu QmxvZ1JvbGxFbnRyeSA9IGRhdGE7DQogICB9DQp9Ow0KDQovLyBCb29rbWFyayB1 c2VkIGluIFVwZGF0ZUNvbW11bml0eUdyb3VwQWN0aW9uDQpCb29rbWFyayA9IENs YXNzKCk7DQpCb29rbWFyay5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24odGl0bGUsIGxpbmspIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcg T2JqZWN0KCk7DQogICAgICAgIGRhdGEuVGl0bGUgPSB0aXRsZTsNCiAgICAgICAg ZGF0YS5MaW5rID0gbGluazsNCiAgICAgICAgdGhpcy5Cb29rbWFyayA9IGRhdGE7 DQogICB9DQp9Ow0KDQovLyBDb21tdW5pdHlHcm91cFZpc2liaWxpdHkgdXNlZCBp biBVcGRhdGVDb21tdW5pdHlHcm91cEFjdGlvbg0KQ29tbXVuaXR5R3JvdXBWaXNp YmlsaXR5ID0gQ2xhc3MoKTsNCkNvbW11bml0eUdyb3VwVmlzaWJpbGl0eS5wcm90 b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24obmFtZSkgew0KICAg ICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5OYW1l ID0gbmFtZTsNCiAgICAgICAgdGhpcy5Db21tdW5pdHlHcm91cFZpc2liaWxpdHkg PSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIFVwZGF0ZSBvciBjcmVhdGUgYSBibG9n DQpVcGRhdGVCbG9nQWN0aW9uID0gQ2xhc3MoKTsNClVwZGF0ZUJsb2dBY3Rpb24u cHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odXBkYXRlQmxv ZywgdGl0bGUsIHRhZ2xpbmUsIGJsb2dSb2xsRW50cmllcywgYmxvZ1R5cGUpIHsN CiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEu QmxvZ0tleSA9IHVwZGF0ZUJsb2c7DQogICAgICAgIGRhdGEuVGl0bGUgPSB0aXRs ZTsNCiAgICAgICAgZGF0YS5UYWdsaW5lID0gdGFnbGluZTsNCiAgICAgICAgZGF0 YS5CbG9nUm9sbEVudHJpZXMgPSBibG9nUm9sbEVudHJpZXM7DQogICAgICAgIGRh dGEuQmxvZ1R5cGUgPSBibG9nVHlwZTsNCiAgICAgICAgdGhpcy5VcGRhdGVCbG9n QWN0aW9uID0gZGF0YTsNCiAgIH0NCn07DQoNCi8vIFVwZGF0ZSBvciBjcmVhdGUg YSBibG9nIHBvc3QsIGtleSBjYW4gYmUgZWl0aGVyIGEgcG9zdCBrZXkgKHVwZGF0 ZSBjYXNlKQ0KLy8gb3IgYSBibG9nIGtleSAoY3JlYXRlIGNhc2UpDQpVcGRhdGVC bG9nUG9zdEFjdGlvbiA9IENsYXNzKCk7DQpVcGRhdGVCbG9nUG9zdEFjdGlvbi5w cm90b3R5cGUgPSB7DQogICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXksIHRpdGxl LCBib2R5LCB0YWdzLCBwdWJsaXNoRGF0ZSwgcHVibGlzaGVkKSB7DQogICAgICAg IHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlRhcmdldFRo aXMgPSBrZXk7DQogICAgICAgIGRhdGEuVGl0bGUgPSB0aXRsZTsNCiAgICAgICAg ZGF0YS5Cb2R5ID0gYm9keTsNCiAgICAgICAgZGF0YS5UYWdzID0gdGFnczsNCiAg ICAgICAgZGF0YS5EYXRlID0gcHVibGlzaERhdGU7DQogICAgICAgIGRhdGEuUHVi bGlzaGVkID0gcHVibGlzaGVkOw0KICAgICAgICB0aGlzLlVwZGF0ZUJsb2dQb3N0 QWN0aW9uID0gZGF0YTsNCiAgIH0NCn07DQoNCi8vIElkZW50aWZ5IGEgZm9ydW0g ZGlzY3Vzc2lvbiB3aXRoIHRoaXMgRGlzY3Vzc2lvbktleSANCkRpc2N1c3Npb25L ZXkgPSBDbGFzcygpOw0KRGlzY3Vzc2lvbktleS5wcm90b3R5cGUgPSB7DQogICBp bml0aWFsaXplOiBmdW5jdGlvbihrZXkpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBu ZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuS2V5ID0ga2V5Ow0KICAgICAgICB0 aGlzLkRpc2N1c3Npb25LZXkgPSBkYXRhOw0KICAgfQ0KfTsNCg0KLy8gSWRlbnRp ZnkgYSBjdXN0b20gaXRlbSB3aXRoIHRoaXMgQ3VzdG9tSXRlbUtleQ0KQ3VzdG9t SXRlbUtleSA9IENsYXNzKCk7DQpDdXN0b21JdGVtS2V5LnByb3RvdHlwZSA9IHsN CiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGtleSkgew0KICAgICAgICB2YXIgZGF0 YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5LZXkgPSBrZXk7DQogICAg ICAgIHRoaXMuQ3VzdG9tSXRlbUtleSA9IGRhdGE7DQogICB9DQp9Ow0KDQovLyBJ ZGVudGlmeSBhIGN1c3RvbSBjb2xsZWN0aW9uIHdpdGggdGhpcyBDdXN0b21Db2xs ZWN0aW9uS2V5DQpDdXN0b21Db2xsZWN0aW9uS2V5ID0gQ2xhc3MoKTsNCkN1c3Rv bUNvbGxlY3Rpb25LZXkucHJvdG90eXBlID0gew0KICAgaW5pdGlhbGl6ZTogZnVu Y3Rpb24oa2V5KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0K ICAgICAgICBkYXRhLktleSA9IGtleTsNCiAgICAgICAgdGhpcy5DdXN0b21Db2xs ZWN0aW9uS2V5ID0gZGF0YTsNCiAgIH0NCn07DQoNCi8vIFVwZGF0ZSBvciBjcmVh dGUgYSBjdXN0b20gaXRlbSBpbiBzdG9yYWdlDQpVcGRhdGVDdXN0b21JdGVtQWN0 aW9uID0gQ2xhc3MoKTsNClVwZGF0ZUN1c3RvbUl0ZW1BY3Rpb24ucHJvdG90eXBl ID0gew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oY3VzdG9tSXRlbUtleSwgbmFt ZSwgbWltZVR5cGUsIGRpc3BsYXlUZXh0LCBjb250ZW50LCBpbmNsdWRlSW5SZWNl bnRBY3Rpdml0eSkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsN CiAgICAgICAgZGF0YS5DdXN0b21JdGVtS2V5ID0gY3VzdG9tSXRlbUtleTsNCiAg ICAgICAgZGF0YS5OYW1lID0gbmFtZTsNCiAgICAgICAgZGF0YS5NaW1lVHlwZSA9 IG1pbWVUeXBlOw0KICAgICAgICBkYXRhLkRpc3BsYXlUZXh0ID0gZGlzcGxheVRl eHQ7DQogICAgICAgIGRhdGEuQ29udGVudCA9IGNvbnRlbnQ7DQogICAgICAgIGlm ICgodHlwZW9mKGluY2x1ZGVJblJlY2VudEFjdGl2aXR5KSA9PSAndW5kZWZpbmVk JykgfHwgKGluY2x1ZGVJblJlY2VudEFjdGl2aXR5ID09IG51bGwpKSB7DQogICAg ICAgICAgICAvLyBEZWZhdWx0IHRvIHRydWUgZm9yIGJhY2t3YXJkcyBjb21wYXRp YmlsaXR5DQogICAgICAgICAgICBpbmNsdWRlSW5SZWNlbnRBY3Rpdml0eSA9IHRy dWU7DQogICAgICAgIH0NCiAgICAgICAgZGF0YS5JbmNsdWRlSW5SZWNlbnRBY3Rp dml0eSA9IGluY2x1ZGVJblJlY2VudEFjdGl2aXR5DQogICAgICAgIHRoaXMuVXBk YXRlQ3VzdG9tSXRlbUFjdGlvbiA9IGRhdGE7DQogICB9DQp9Ow0KDQovLyBBZGQg YSBuZXcgY3VzdG9tIGNvbGxlY3Rpb24gdG8gc3RvcmFnZQ0KQWRkQ3VzdG9tQ29s bGVjdGlvbkFjdGlvbiA9IENsYXNzKCk7DQpBZGRDdXN0b21Db2xsZWN0aW9uQWN0 aW9uLnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGN1c3Rv bUNvbGxlY3Rpb25LZXksIGN1c3RvbUNvbGxlY3Rpb25OYW1lKSB7DQogICAgICAg IHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkN1c3RvbUNv bGxlY3Rpb25LZXkgPSBjdXN0b21Db2xsZWN0aW9uS2V5Ow0KICAgICAgICBkYXRh LkN1c3RvbUNvbGxlY3Rpb25OYW1lID0gY3VzdG9tQ29sbGVjdGlvbk5hbWU7DQog ICAgICAgIHRoaXMuQWRkQ3VzdG9tQ29sbGVjdGlvbkFjdGlvbiA9IGRhdGE7DQog ICB9DQp9Ow0KDQovLyBJbnNlcnQgYW4gaXRlbSBpbnRvIGEgY3VzdG9tIGNvbGxl Y3Rpb24NCkluc2VydEludG9Db2xsZWN0aW9uQWN0aW9uID0gQ2xhc3MoKTsNCklu c2VydEludG9Db2xsZWN0aW9uQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgIGluaXRp YWxpemU6IGZ1bmN0aW9uKGN1c3RvbUNvbGxlY3Rpb25LZXksIGluc2VydFRoaXNL ZXksIHBvc2l0aW9uKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgp Ow0KICAgICAgICBkYXRhLkN1c3RvbUNvbGxlY3Rpb25LZXkgPSBjdXN0b21Db2xs ZWN0aW9uS2V5Ow0KICAgICAgICBkYXRhLkluc2VydFRoaXNLZXkgPSBpbnNlcnRU aGlzS2V5Ow0KICAgICAgICBkYXRhLlBvc2l0aW9uID0gcG9zaXRpb247DQogICAg ICAgIHRoaXMuSW5zZXJ0SW50b0NvbGxlY3Rpb25BY3Rpb24gPSBkYXRhOw0KICAg fQ0KfTsNCg0KLy8gUmVtb3ZlIGFuIGl0ZW0gZnJvbSBhIGN1c3RvbSBjb2xsZWN0 aW9uIChwb3NpdGlvbiBjYW4gYmUgbnVsbCB0byBzcGVjaWZ5IHRvIHJlbW92ZSBh bGwgb2NjdXJyZW5jZXMgb2YgaXRlbSkNClJlbW92ZUZyb21Db2xsZWN0aW9uQWN0 aW9uID0gQ2xhc3MoKTsNClJlbW92ZUZyb21Db2xsZWN0aW9uQWN0aW9uLnByb3Rv dHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGN1c3RvbUNvbGxlY3Rp b25LZXksIHJlbW92ZVRoaXNLZXksIHBvc2l0aW9uKSB7DQogICAgICAgIHZhciBk YXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkN1c3RvbUNvbGxlY3Rp b25LZXkgPSBjdXN0b21Db2xsZWN0aW9uS2V5Ow0KICAgICAgICBkYXRhLlJlbW92 ZVRoaXNLZXkgPSByZW1vdmVUaGlzS2V5Ow0KICAgICAgICBkYXRhLlBvc2l0aW9u ID0gcG9zaXRpb247DQogICAgICAgIHRoaXMuUmVtb3ZlRnJvbUNvbGxlY3Rpb25B Y3Rpb24gPSBkYXRhOw0KICAgfQ0KfTsNCg0KLy8gR2V0IGEgcGFnZSBvZiBpdGVt cyBvdXQgb2YgYSBjdXN0b20gY29sbGVjdGlvbg0KQ3VzdG9tQ29sbGVjdGlvblBh Z2UgPSBDbGFzcygpOw0KQ3VzdG9tQ29sbGVjdGlvblBhZ2UucHJvdG90eXBlID0g ew0KICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oY3VzdG9tQ29sbGVjdGlvbktleSwg bnVtYmVyUGVyUGFnZSwgb25QYWdlLCBzb3J0KSB7DQogICAgICAgIHZhciBkYXRh ID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkN1c3RvbUNvbGxlY3Rpb25L ZXkgPSBjdXN0b21Db2xsZWN0aW9uS2V5Ow0KICAgICAgICBkYXRhLk51bWJlclBl clBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9u UGFnZTsNCiAgICAgICAgZGF0YS5Tb3J0ID0gc29ydDsNCiAgICAgICAgdGhpcy5D dXN0b21Db2xsZWN0aW9uUGFnZSA9IGRhdGE7DQogICB9DQp9Ow0KDQoNCi8vIEdl dCBhIHBhZ2Ugb2YgaXRlbXMgb3V0IG9mIGEgY3VzdG9tIGNvbGxlY3Rpb24NCkVk aXRvck1lc3NhZ2VSZXF1ZXN0ID0gQ2xhc3MoKTsNCkVkaXRvck1lc3NhZ2VSZXF1 ZXN0LnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgew0K ICAgICAgdGhpcy5FZGl0b3JNZXNzYWdlUmVxdWVzdCA9IG5ldyBPYmplY3QoKTsN CiAgIH0NCn07DQoNCi8vIFJldHJpZXZlIGEgdXNlcidzIHRhZ3MgZm9yIHRoZSBn aXZlbiBjb250ZW50IHR5cGUNClVzZXJUYWdzID0gQ2xhc3MoKTsNClVzZXJUYWdz LnByb3RvdHlwZSA9IHsNCiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHVzZXJLZXks IGNvbnRlbnRUeXBlKSB7DQogICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsN CiAgICAgIGRhdGEuVXNlcktleSA9IHVzZXJLZXk7DQogICAgICBkYXRhLkNvbnRl bnRUeXBlID0gY29udGVudFR5cGU7DQogICAgICB0aGlzLlVzZXJUYWdzID0gZGF0 YTsNCiAgIH0NCn07DQoNCg0KLy8gR2V0IGFuIGl0ZW0ncyBDb250ZW50UG9saWN5 DQpHZXRDb250ZW50UG9saWN5QWN0aW9uID0gQ2xhc3MoKTsNCkdldENvbnRlbnRQ b2xpY3lBY3Rpb24ucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0 aW9uKHRhcmdldEtleSwgdXNlclRpZXIsIGFjdGlvbikgew0KICAgICAgICB2YXIg ZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5UYXJnZXRLZXkgPSB0 YXJnZXRLZXk7DQogICAgICAgIGRhdGEuVXNlclRpZXIgPSB1c2VyVGllcjsNCiAg ICAgICAgZGF0YS5Db250ZW50UG9saWN5QWN0aW9uVHlwZSA9IGFjdGlvbjsNCiAg ICAgICAgdGhpcy5HZXRDb250ZW50UG9saWN5QWN0aW9uID0gZGF0YTsNCiAgICB9 DQp9DQoNCi8vIFNldCBhbiBpdGVtJ3MgQ29udGVudFBvbGljeQ0KU2V0Q29udGVu dFBvbGljeUFjdGlvbiA9IENsYXNzKCk7DQpTZXRDb250ZW50UG9saWN5QWN0aW9u LnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbih0YXJnZXRL ZXksIHVzZXJUaWVyLCBhY3Rpb24sIHBvbGljeSkgew0KICAgICAgICB2YXIgZGF0 YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5UYXJnZXRLZXkgPSB0YXJn ZXRLZXk7DQogICAgICAgIGRhdGEuVXNlclRpZXIgPSB1c2VyVGllcjsNCiAgICAg ICAgZGF0YS5Db250ZW50UG9saWN5QWN0aW9uVHlwZSA9IGFjdGlvbjsNCiAgICAg ICAgZGF0YS5Db250ZW50UG9saWN5ID0gcG9saWN5Ow0KICAgICAgICB0aGlzLlNl dENvbnRlbnRQb2xpY3lBY3Rpb24gPSBkYXRhOw0KICAgIH0NCn0NCg0KQ29udGVu dFBvbGljeSA9IENsYXNzKCk7DQpDb250ZW50UG9saWN5LnByb3RvdHlwZSA9IHsN CiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihuYW1lKSB7DQogICAgICAgIHZhciBk YXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLk5hbWUgPSBuYW1lOw0K ICAgICAgICB0aGlzLkNvbnRlbnRQb2xpY3kgPSBkYXRhOw0KICAgIH0NCn07DQoN CkNvbnRlbnRQb2xpY3lBY3Rpb25UeXBlID0gQ2xhc3MoKTsNCkNvbnRlbnRQb2xp Y3lBY3Rpb25UeXBlLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5j dGlvbihuYW1lKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0K ICAgICAgICBkYXRhLk5hbWUgPSBuYW1lOw0KICAgICAgICB0aGlzLkNvbnRlbnRQ b2xpY3lBY3Rpb25UeXBlID0gZGF0YTsNCiAgICB9DQp9Ow0KDQovLyBVcGRhdGVz IGEgRm9ydW0ncyBtZXRhIGRhdGENClVwZGF0ZUZvcnVtQWN0aW9uID0gQ2xhc3Mo KTsNClVwZGF0ZUZvcnVtQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFs aXplOiBmdW5jdGlvbihmb3J1bUtleSwgdGl0bGUsIGRlc2NyaXB0aW9uKSB7DQog ICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkZv cnVtS2V5ID0gZm9ydW1LZXk7DQogICAgICAgIGRhdGEuVGl0bGUgPSB0aXRsZTsN CiAgICAgICAgZGF0YS5EZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOw0KICAgICAg ICB0aGlzLlVwZGF0ZUZvcnVtQWN0aW9uID0gZGF0YTsNCiAgICB9DQp9Ow0KDQov L0FkZHMvVXBkYXRlcyBhIEZvcnVtIERpc2N1c3Npb24ncyBtZXRhIGRhdGEuIElm IHRoZSBrZXkgaXMgYSBGb3J1bUtleSwgaXQgd2lsbCBiZSBhZGRlZCBhcyBhIG5l dyBEaXNjdXNzaW9uLg0KLy9JZiB0aGUga2V5IGlzIGEgRm9ydW1EaXNjdXNzaW9u S2V5LCB0aGUgZXhpc3RpbmcgZm9ydW0gZGlzY3Vzc2lvbiB3aWxsIGJlIHVwZGF0 ZWQuDQpVcGRhdGVGb3J1bURpc2N1c3Npb25BY3Rpb24gPSBDbGFzcygpOw0KVXBk YXRlRm9ydW1EaXNjdXNzaW9uQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0 aWFsaXplOiBmdW5jdGlvbihrZXksIHRpdGxlLCBib2R5LCBpc1F1ZXN0aW9uLCBp c1BvbGwpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAg ICAgIGRhdGEuVGFyZ2V0VGhpcyA9IGtleTsNCiAgICAgICAgZGF0YS5UaXRsZSA9 IHRpdGxlOw0KICAgICAgICBkYXRhLkJvZHkgPSBib2R5Ow0KICAgICAgICBkYXRh LklzUXVlc3Rpb24gPSB0eXBlb2YoaXNRdWVzdGlvbikgPT0gJ3N0cmluZycgPyBp c1F1ZXN0aW9uIDogKGlzUXVlc3Rpb24gPyAidHJ1ZSIgOiAiZmFsc2UiKTsNCiAg ICAgICAgZGF0YS5Jc1BvbGwgPSB0eXBlb2YoaXNQb2xsKSA9PSAnc3RyaW5nJyA/ IGlzUG9sbCA6IChpc1BvbGwgPyAidHJ1ZSIgOiAiZmFsc2UiKTsNCiAgICAgICAg dGhpcy5VcGRhdGVGb3J1bURpc2N1c3Npb25BY3Rpb24gPSBkYXRhOw0KICAgIH0N Cn07DQoNCi8vQWRkcy9VcGRhdGVzIGEgRm9ydW0gUG9zdCdzIG1ldGEgZGF0YS4g SWYgdGhlIGtleSBpcyBhIEZvcnVtRGlzY3Vzc2lvbktleSwgaXQgd2lsbCBiZSBh ZGRlZCBhcyBhIG5ldyBQb3N0Lg0KLy9JZiB0aGUga2V5IGlzIGEgRm9ydW1Qb3N0 S2V5LCB0aGUgZXhpc3RpbmcgZm9ydW0gcG9zdCB3aWxsIGJlIHVwZGF0ZWQuDQpV cGRhdGVGb3J1bVBvc3RBY3Rpb24gPSBDbGFzcygpOw0KVXBkYXRlRm9ydW1Qb3N0 QWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihr ZXksIHRpdGxlLCBib2R5LCBpc1F1ZXN0aW9uKSB7DQogICAgICAgIHZhciBkYXRh ID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlRhcmdldFRoaXMgPSBrZXk7 DQogICAgICAgIGRhdGEuVGl0bGUgPSB0aXRsZTsNCiAgICAgICAgZGF0YS5Cb2R5 ID0gYm9keTsNCiAgICAgICAgZGF0YS5Jc1F1ZXN0aW9uID0gaXNRdWVzdGlvbjsN CiAgICAgICAgdGhpcy5VcGRhdGVGb3J1bVBvc3RBY3Rpb24gPSBkYXRhOw0KICAg IH0NCn07DQoNCi8vVXBkYXRlcyBhIEZvcnVtIERpc2N1c3Npb24ncyBTdGlja3kg ZmxhZw0KRm9ydW1Ub2dnbGVEaXNjdXNzaW9uU3RpY2t5QWN0aW9uID0gQ2xhc3Mo KTsNCkZvcnVtVG9nZ2xlRGlzY3Vzc2lvblN0aWNreUFjdGlvbi5wcm90b3R5cGUg PSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZGlzY3Vzc2lvbktleSkgew0K ICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5E aXNjdXNzaW9uS2V5ID0gZGlzY3Vzc2lvbktleTsNCiAgICAgICAgdGhpcy5Gb3J1 bVRvZ2dsZURpc2N1c3Npb25TdGlja3lBY3Rpb24gPSBkYXRhOw0KICAgIH0NCn07 DQoNCi8vT3BlbnMvQ2xvc2VzIGEgRm9ydW0gRGlzY3Vzc2lvbg0KRm9ydW1Ub2dn bGVEaXNjdXNzaW9uQ2xvc2VkQWN0aW9uID0gQ2xhc3MoKTsNCkZvcnVtVG9nZ2xl RGlzY3Vzc2lvbkNsb3NlZEFjdGlvbi5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlh bGl6ZTogZnVuY3Rpb24oZGlzY3Vzc2lvbktleSkgew0KICAgICAgICB2YXIgZGF0 YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5EaXNjdXNzaW9uS2V5ID0g ZGlzY3Vzc2lvbktleTsNCiAgICAgICAgdGhpcy5Gb3J1bVRvZ2dsZURpc2N1c3Np b25DbG9zZWRBY3Rpb24gPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vUmV0cmlldmVz IGEgcGFnaW5hdGVkIGxpc3Qgb2YgRGlzY3Vzc2lvbnMgZm9yIGEgcGFydGljdWxh ciBGb3J1bQ0KRm9ydW1EaXNjdXNzaW9uc1BhZ2UgPSBDbGFzcygpOw0KRm9ydW1E aXNjdXNzaW9uc1BhZ2UucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1 bmN0aW9uKGZvcnVtS2V5LCBudW1iZXJQZXJQYWdlLCBvbmVCYXNlZE9uUGFnZSwg c29ydCkgew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAg ICAgZGF0YS5Gb3J1bUtleSA9IGZvcnVtS2V5Ow0KICAgICAgICBkYXRhLk51bWJl clBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9 IG9uZUJhc2VkT25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQgPSBzb3J0Ow0KICAg ICAgICB0aGlzLkZvcnVtRGlzY3Vzc2lvbnNQYWdlID0gZGF0YTsNCiAgICB9DQp9 Ow0KDQovL1JldHJpZXZlcyBhIHBhZ2luYXRlZCBsaXN0IG9mIFBvc3RzIGZvciBh IHBhcnRpY3VsYXIgRm9ydW0NCkZvcnVtUG9zdHNQYWdlID0gQ2xhc3MoKTsNCkZv cnVtUG9zdHNQYWdlLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5j dGlvbihmb3J1bURpc2N1c3Npb25LZXksIG51bWJlclBlclBhZ2UsIG9uZUJhc2Vk T25QYWdlLCBzb3J0LCBmaW5kUG9zdEtleSkgew0KICAgICAgICB2YXIgZGF0YSA9 IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5EaXNjdXNzaW9uS2V5ID0gZm9y dW1EaXNjdXNzaW9uS2V5Ow0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBu dW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uZUJhc2VkT25Q YWdlOw0KICAgICAgICBkYXRhLlNvcnQgPSBzb3J0Ow0KICAgICAgICBkYXRhLkZp bmRQb3N0S2V5ID0gZmluZFBvc3RLZXk7DQogICAgICAgIHRoaXMuRm9ydW1Qb3N0 c1BhZ2UgPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vUmV0cmlldmVzIGEgcGFnaW5h dGVkIGxpc3Qgb2YgZm9ydW1zIGZvciBhIHBhcnRpY3VsYXIgY2F0ZWdvcnkNCkZv cnVtQ2F0ZWdvcmllc1BhZ2UgPSBDbGFzcygpOw0KRm9ydW1DYXRlZ29yaWVzUGFn ZS5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24obnVtYmVy UGVyUGFnZSwgb25lQmFzZWRPblBhZ2UpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBu ZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuTnVtYmVyUGVyUGFnZSA9IG51bWJl clBlclBhZ2U7DQogICAgICAgIGRhdGEuT25QYWdlID0gb25lQmFzZWRPblBhZ2U7 DQogICAgICAgIHRoaXMuRm9ydW1DYXRlZ29yaWVzUGFnZSA9IGRhdGE7DQogICAg fQ0KfTsNCg0KLy9SZXRyaWV2ZXMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBmb3J1bXMg Zm9yIGEgcGFydGljdWxhciBjYXRlZ29yeQ0KRm9ydW1zUGFnZSA9IENsYXNzKCk7 DQpGb3J1bXNQYWdlLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5j dGlvbihjYXRlZ29yeUtleSwgbnVtYmVyUGVyUGFnZSwgb25lQmFzZWRPblBhZ2Us IHNvcnQpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAg ICAgIGRhdGEuRm9ydW1DYXRlZ29yeUtleSA9IGNhdGVnb3J5S2V5Ow0KICAgICAg ICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBk YXRhLk9uUGFnZSA9IG9uZUJhc2VkT25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQg PSBzb3J0Ow0KICAgICAgICB0aGlzLkZvcnVtc1BhZ2UgPSBkYXRhOw0KICAgIH0N Cn07DQoNCkZvcnVtU2VhcmNoQWN0aW9uID0gQ2xhc3MoKTsNCkZvcnVtU2VhcmNo QWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihz ZWFyY2hLZXksIHNlYXJjaFN0cmluZywgbnVtYmVyUGVyUGFnZSwgb25QYWdlKSB7 DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRh LlRhcmdldFRoaXMgPSBzZWFyY2hLZXk7DQogICAgICAgIGRhdGEuU2VhcmNoU3Ry aW5nID0gc2VhcmNoU3RyaW5nOw0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2Ug PSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uUGFnZTsN CiAgICAgICAgdGhpcy5Gb3J1bVNlYXJjaEFjdGlvbiA9IGRhdGE7DQogICAgfQ0K fTsNCg0KLy8gUmV0cmlldmVzIGEgcGFnaW5hdGVkIGxpc3Qgb2YgY29tbXVuaXR5 IGdyb3Vwcw0KQ29tbXVuaXR5R3JvdXBQYWdlID0gQ2xhc3MoKTsNCkNvbW11bml0 eUdyb3VwUGFnZS5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rp b24obnVtYmVyUGVyUGFnZSwgb25lQmFzZWRPblBhZ2UsIHNvcnQsIHNlY3Rpb24p IHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRh dGEuTnVtYmVyUGVyUGFnZSA9IG51bWJlclBlclBhZ2U7DQogICAgICAgIGRhdGEu T25QYWdlID0gb25lQmFzZWRPblBhZ2U7DQogICAgICAgIGRhdGEuU29ydCA9IHNv cnQ7DQogICAgICAgIGlmICgodHlwZW9mKHNlY3Rpb24pID09ICd1bmRlZmluZWQn KSB8fCAoc2VjdGlvbiA9PSBudWxsKSkgew0KICAgICAgICAgICAgLy8gRGVmYXVs dCBzZWN0aW9uIHRvIEFsbA0KICAgICAgICAgICAgc2VjdGlvbiA9IG5ldyBTZWN0 aW9uKCJBbGwiKTsNCiAgICAgICAgfQ0KICAgICAgICBkYXRhLlNlY3Rpb24gPSBz ZWN0aW9uOw0KICAgICAgICB0aGlzLkNvbW11bml0eUdyb3VwUGFnZSA9IGRhdGE7 DQogICAgfQ0KfTsNCg0KLy8gUmV0cmlldmVzIGEgcGFnaW5hdGVkIGxpc3Qgb2Yg Y29tbXVuaXR5IGdyb3Vwcw0KQ29tbXVuaXR5R3JvdXBNZW1iZXJzaGlwID0gQ2xh c3MoKTsNCkNvbW11bml0eUdyb3VwTWVtYmVyc2hpcC5wcm90b3R5cGUgPSB7DQog ICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZ3JvdXBLZXksIHVzZXJLZXkpIHsNCiAg ICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuQ29t bXVuaXR5R3JvdXBLZXkgPSBncm91cEtleTsNCiAgICAgICAgZGF0YS5Vc2VyS2V5 ID0gdXNlcktleTsNCiAgICAgICAgdGhpcy5Db21tdW5pdHlHcm91cE1lbWJlcnNo aXAgPSBkYXRhOw0KICAgIH0NCn07DQoNCg0KLy8gUmV0cmlldmVzIGEgcGFnaW5h dGVkIGxpc3Qgb2YgY29tbXVuaXR5IGdyb3Vwcw0KQ29tbXVuaXR5R3JvdXBNZW1i ZXJzaGlwUGFnZSA9IENsYXNzKCk7DQpDb21tdW5pdHlHcm91cE1lbWJlcnNoaXBQ YWdlLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXks IG51bWJlclBlclBhZ2UsIG9uZUJhc2VkT25QYWdlLCBzb3J0LCBtZW1iZXJzaGlw RmlsdGVyKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAg ICAgICBkYXRhLktleSA9IGtleTsNCiAgICAgICAgZGF0YS5OdW1iZXJQZXJQYWdl ID0gbnVtYmVyUGVyUGFnZTsNCiAgICAgICAgZGF0YS5PblBhZ2UgPSBvbmVCYXNl ZE9uUGFnZTsNCiAgICAgICAgZGF0YS5Tb3J0ID0gc29ydDsNCiAgICAgICAgZGF0 YS5NZW1iZXJzaGlwRmlsdGVyID0gbWVtYmVyc2hpcEZpbHRlcjsNCiAgICAgICAg dGhpcy5Db21tdW5pdHlHcm91cE1lbWJlcnNoaXBQYWdlID0gZGF0YTsNCiAgICB9 DQp9Ow0KDQovLyBSZXRyaWV2ZXMgYSBwYWdpbmF0ZWQgbGlzdCBvZiByZWdpc3Ry YW50cw0KQ29tbXVuaXR5R3JvdXBSZWdpc3RyYW50UGFnZSA9IENsYXNzKCk7DQpD b21tdW5pdHlHcm91cFJlZ2lzdHJhbnRQYWdlLnByb3RvdHlwZSA9IHsNCiAgICBp bml0aWFsaXplOiBmdW5jdGlvbihrZXksIG51bWJlclBlclBhZ2UsIG9uZUJhc2Vk T25QYWdlLCBzb3J0KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgp Ow0KICAgICAgICBkYXRhLkNvbW11bml0eUdyb3VwS2V5ID0ga2V5Ow0KICAgICAg ICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBk YXRhLk9uUGFnZSA9IG9uZUJhc2VkT25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQg PSBzb3J0Ow0KICAgICAgICB0aGlzLkNvbW11bml0eUdyb3VwUmVnaXN0cmFudFBh Z2UgPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIFJldHJpZXZlcyBhIHBhZ2luYXRl ZCBsaXN0IG9mIGJhbm5lZCB1c2Vycw0KQ29tbXVuaXR5R3JvdXBCYW5uZWRVc2Vy UGFnZSA9IENsYXNzKCk7DQpDb21tdW5pdHlHcm91cEJhbm5lZFVzZXJQYWdlLnBy b3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXksIG51bWJl clBlclBhZ2UsIG9uZUJhc2VkT25QYWdlLCBzb3J0KSB7DQogICAgICAgIHZhciBk YXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkNvbW11bml0eUdyb3Vw S2V5ID0ga2V5Ow0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQ ZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uZUJhc2VkT25QYWdlOw0K ICAgICAgICBkYXRhLlNvcnQgPSBzb3J0Ow0KICAgICAgICB0aGlzLkNvbW11bml0 eUdyb3VwQmFubmVkVXNlclBhZ2UgPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIFJl dHJpZXZlcyBhIHBhZ2luYXRlZCBsaXN0IG9mIGludml0ZWQgdXNlcnMNCkNvbW11 bml0eUdyb3VwSW52aXRlZFVzZXJQYWdlID0gQ2xhc3MoKTsNCkNvbW11bml0eUdy b3VwSW52aXRlZFVzZXJQYWdlLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXpl OiBmdW5jdGlvbihrZXksIG51bWJlclBlclBhZ2UsIG9uZUJhc2VkT25QYWdlLCBz b3J0KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAg ICBkYXRhLkNvbW11bml0eUdyb3VwS2V5ID0ga2V5Ow0KICAgICAgICBkYXRhLk51 bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBkYXRhLk9uUGFn ZSA9IG9uZUJhc2VkT25QYWdlOw0KICAgICAgICBkYXRhLlNvcnQgPSBzb3J0Ow0K ICAgICAgICB0aGlzLkNvbW11bml0eUdyb3VwSW52aXRlZFVzZXJQYWdlID0gZGF0 YTsNCiAgICB9DQp9Ow0KDQoNCg0KLy8gQ3JlYXRlcyBhIG5ldyBvciB1cGRhdGVz IGFuIGV4aXN0aW5nIGNvbW11bml0eSBncm91cA0KVXBkYXRlQ29tbXVuaXR5R3Jv dXBBY3Rpb24gPSBDbGFzcygpOw0KVXBkYXRlQ29tbXVuaXR5R3JvdXBBY3Rpb24u cHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGtleSwgdGl0 bGUsIGRlc2NyaXB0aW9uLCBjYXRlZ29yaWVzLCB2aXNpYmlsaXR5LCBib29rbWFy a3MsIHNlY3Rpb24sIHBob3RvS2V5KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3 IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkNvbW11bml0eUdyb3VwS2V5ID0ga2V5 Ow0KICAgICAgICBkYXRhLlRpdGxlID0gdGl0bGU7DQogICAgICAgIGRhdGEuRGVz Y3JpcHRpb24gPSBkZXNjcmlwdGlvbjsNCiAgICAgICAgZGF0YS5DYXRlZ29yaWVz ID0gY2F0ZWdvcmllczsNCiAgICAgICAgZGF0YS5WaXNpYmlsaXR5ID0gdmlzaWJp bGl0eSwNCiAgICAgICAgZGF0YS5Cb29rbWFya3MgPSBib29rbWFya3M7ICAgICAg ICANCiAgICAgICAgZGF0YS5TZWN0aW9uID0gc2VjdGlvbjsNCiAgICAgICAgZGF0 YS5QaG90b0tleSA9IHBob3RvS2V5Ow0KICAgICAgICB0aGlzLlVwZGF0ZUNvbW11 bml0eUdyb3VwQWN0aW9uID0gZGF0YTsNCiAgICB9DQp9Ow0KDQovLyBVcGRhdGVz IGFuIGV4aXN0aW5nIGNvbW1uaXR5IGdyb3VwJ3MgYm9va21hcmtzDQpVcGRhdGVD b21tdW5pdHlHcm91cEJvb2ttYXJrc0FjdGlvbiA9IENsYXNzKCk7DQpVcGRhdGVD b21tdW5pdHlHcm91cEJvb2ttYXJrc0FjdGlvbi5wcm90b3R5cGUgPSB7DQogICAg aW5pdGlhbGl6ZTogZnVuY3Rpb24oa2V5LCBib29rbWFya3MpIHsNCiAgICAgICAg dmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuQ29tbXVuaXR5 R3JvdXBLZXkgPSBrZXk7DQogICAgICAgIGRhdGEuQm9va21hcmtzID0gYm9va21h cmtzOyAgICAgICAgDQogICAgICAgIHRoaXMuVXBkYXRlQ29tbXVuaXR5R3JvdXBC b29rbWFya3NBY3Rpb24gPSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIENyZWF0ZXMg b3IgdXBkYXRlcyBhIHVzZXIncyBtZW1iZXJzaGlwIGluIGEgZ3JvdXAsIHdpdGgg b3B0aW9ucyB0byBiYW4gdGhlIHVzZXIgZnJvbSB0aGUgZ3JvdXAuDQpVcGRhdGVD b21tdW5pdHlHcm91cE1lbWJlcnNoaXBBY3Rpb24gPSBDbGFzcygpOw0KVXBkYXRl Q29tbXVuaXR5R3JvdXBNZW1iZXJzaGlwQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAg ICBpbml0aWFsaXplOiBmdW5jdGlvbihjb21tdW5pdHlHcm91cEtleSwgdXNlcktl eSwgbWVtYmVyc2hpcFRpZXIsIGlzQmFubmVkLCBiYW5NZXNzYWdlKSB7DQogICAg ICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkNvbW11 bml0eUdyb3VwS2V5ID0gY29tbXVuaXR5R3JvdXBLZXk7DQogICAgICAgIGRhdGEu VXNlcktleSA9IHVzZXJLZXk7DQogICAgICAgIGRhdGEuTWVtYmVyc2hpcFRpZXIg PSBtZW1iZXJzaGlwVGllcjsNCiAgICAgICAgZGF0YS5Jc0Jhbm5lZCA9IGlzQmFu bmVkOw0KICAgICAgICBkYXRhLkJhbk1lc3NhZ2UgPSBiYW5NZXNzYWdlOw0KICAg ICAgICB0aGlzLlVwZGF0ZUNvbW11bml0eUdyb3VwTWVtYmVyc2hpcEFjdGlvbiA9 IGRhdGE7DQogICAgfQ0KfTsNCg0KLy8gRW5hYmxlcyBhIHVzZXIgdG8gcmVxdWVz dCBtZW1iZXJzaGlwIGluIGEgY29tbXVuaXR5IGdyb3VwIG9yIGFuIGFkbWluIHRv IGludml0ZSBhIG5vbi1tZW1iZXIuDQpSZXF1ZXN0Q29tbXVuaXR5R3JvdXBNZW1i ZXJzaGlwQWN0aW9uID0gQ2xhc3MoKTsNClJlcXVlc3RDb21tdW5pdHlHcm91cE1l bWJlcnNoaXBBY3Rpb24ucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1 bmN0aW9uKGNvbW11bml0eUdyb3VwS2V5LCB1c2VyS2V5LCBtZXNzYWdlKSB7DQog ICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkNv bW11bml0eUdyb3VwS2V5ID0gY29tbXVuaXR5R3JvdXBLZXk7DQogICAgICAgIGRh dGEuVXNlcktleSA9IHVzZXJLZXk7DQogICAgICAgIGRhdGEuTWVzc2FnZSA9IG1l c3NhZ2U7DQogICAgICAgIHRoaXMuUmVxdWVzdENvbW11bml0eUdyb3VwTWVtYmVy c2hpcEFjdGlvbiA9IGRhdGE7DQogICAgfQ0KfTsNCg0KLy9SZXRyaWV2ZXMgYSBw YWdpbmF0ZWQgbGlzdCBvZiBFdmVudHMgZm9yIGEgcGFydGljdWxhciBFdmVudFNl dEtleQ0KRXZlbnRzUGFnZSA9IENsYXNzKCk7DQpFdmVudHNQYWdlLnByb3RvdHlw ZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihldmVudFNldEtleSwgc3Rh cnREYXRlLCBlbmREYXRlLG51bWJlclBlclBhZ2UsIG9uZUJhc2VkT25QYWdlLCBz b3J0KSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAg ICBkYXRhLkV2ZW50U2V0S2V5ID0gZXZlbnRTZXRLZXk7DQogICAgICAgIGRhdGEu U3RhcnREYXRlID0gc3RhcnREYXRlOw0KICAgICAgICBkYXRhLkVuZERhdGUgPSBl bmREYXRlOw0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQ YWdlOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uZUJhc2VkT25QYWdlOw0KICAg ICAgICBkYXRhLlNvcnQgPSBzb3J0Ow0KICAgICAgICB0aGlzLkV2ZW50c1BhZ2Ug PSBkYXRhOw0KICAgIH0NCn07DQoNCi8vIFVwZGF0ZSBvciBjcmVhdGVzIGFuIEV2 ZW50LCBrZXkgY2FuIGJlIGVpdGhlciBhbiBFdmVudEtleSAodXBkYXRlIGNhc2Up DQovLyBvciBhbiBFdmVudFNldEtleSAoY3JlYXRlIGNhc2UpDQpVcGRhdGVFdmVu dEFjdGlvbiA9IENsYXNzKCk7DQpVcGRhdGVFdmVudEFjdGlvbi5wcm90b3R5cGUg PSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oa2V5LCB0aXRsZSwgZGVzY3Jp cHRpb24sIGxvY2F0aW9uLCBib29rbWFya05hbWUsIGJvb2ttYXJrVXJsLCBzdGFy dERhdGUsIGVuZERhdGUsIHV0Y09mZnNldCkgew0KICAgICAgICB2YXIgZGF0YSA9 IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5UYXJnZXRUaGlzID0ga2V5Ow0K ICAgICAgICBkYXRhLlRpdGxlID0gdGl0bGU7DQogICAgICAgIGRhdGEuRGVzY3Jp cHRpb24gPSBkZXNjcmlwdGlvbjsNCiAgICAgICAgZGF0YS5Mb2NhdGlvbiA9IGxv Y2F0aW9uOw0KICAgICAgICBkYXRhLkJvb2ttYXJrTmFtZSA9IGJvb2ttYXJrTmFt ZTsNCiAgICAgICAgZGF0YS5Cb29rbWFya1VybCA9IGJvb2ttYXJrVXJsOw0KICAg ICAgICBkYXRhLlN0YXJ0RGF0ZSA9IHN0YXJ0RGF0ZTsNCiAgICAgICAgZGF0YS5F bmREYXRlID0gZW5kRGF0ZTsNCiAgICAgICAgZGF0YS5VdGNPZmZzZXQgPSB1dGNP ZmZzZXQ7DQogICAgICAgIHRoaXMuVXBkYXRlRXZlbnRBY3Rpb24gPSBkYXRhOw0K ICAgIH0NCn07DQoNCg0KLy8gUmV0cmlldmUgYSBwYWdpbmF0ZWQgbGlzdCBvZiBy ZWNlbnQgZ3JvdXAgYWN0aXZpdGllcw0KUmVjZW50TWluaUZlZWRBY3Rpdml0eSA9 IENsYXNzKCk7DQpSZWNlbnRNaW5pRmVlZEFjdGl2aXR5LnByb3RvdHlwZSA9IHsN CiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihjb21tdW5pdHlHcm91cEtleSwgb25Q YWdlLCBudW1iZXJQZXJQYWdlKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9i amVjdCgpOw0KICAgICAgICBkYXRhLkNvbW11bml0eUdyb3VwS2V5ID0gY29tbXVu aXR5R3JvdXBLZXk7DQogICAgICAgIGRhdGEuT25QYWdlID0gb25QYWdlOw0KICAg ICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlDQogICAgICAg IHRoaXMuUmVjZW50TWluaUZlZWRBY3Rpdml0eSA9IGRhdGE7DQogICAgfQ0KfQ0K DQovL1JldHJpZXZlIGEgbGlzdCBvZiBNb3N0IEFjdGl2ZSBVc2VycyBpbiBhIENv bW11bml0eUdyb3VwDQpDb21tdW5pdHlHcm91cE1vc3RBY3RpdmVNZW1iZXJzID0g Q2xhc3MoKTsNCkNvbW11bml0eUdyb3VwTW9zdEFjdGl2ZU1lbWJlcnMucHJvdG90 eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGNvbW11bml0eUdyb3Vw S2V5LCBhZ2UsIG1heGltdW1OdW1iZXJPZk1lbWJlcnMpIHsNCiAgICAgICAgdmFy IGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuQ29tbXVuaXR5R3Jv dXBLZXkgPSBjb21tdW5pdHlHcm91cEtleTsNCiAgICAgICAgZGF0YS5BZ2UgPSBh Z2U7DQogICAgICAgIGRhdGEuTWF4aW11bU51bWJlck9mTWVtYmVycyA9IG1heGlt dW1OdW1iZXJPZk1lbWJlcnMNCiAgICAgICAgdGhpcy5Db21tdW5pdHlHcm91cE1v c3RBY3RpdmVNZW1iZXJzID0gZGF0YTsNCiAgICB9DQp9DQoNCi8vIHBlcmZvcm0g YSBzZWFyY2ggZm9yIGNvbnRlbnQgd2l0aGluIGEgc3BlY2lmaWMgY29tbXVuaXR5 IGdyb3VwDQpDb21tdW5pdHlHcm91cFNlYXJjaEFjdGlvbiA9IENsYXNzKCk7DQpD b21tdW5pdHlHcm91cFNlYXJjaEFjdGlvbi5wcm90b3R5cGUgPSB7DQogICAgaW5p dGlhbGl6ZTogZnVuY3Rpb24oY29tbXVuaXR5R3JvdXBLZXksIHNlYXJjaFR5cGUs IHNlYXJjaFN0cmluZywgbnVtYmVyUGVyUGFnZSwgb25QYWdlKSB7DQogICAgICAg IHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkNvbW11bml0 eUdyb3VwS2V5ID0gY29tbXVuaXR5R3JvdXBLZXk7DQogICAgICAgIGRhdGEuU2Vh cmNoVHlwZSA9IHNlYXJjaFR5cGU7DQogICAgICAgIGRhdGEuU2VhcmNoU3RyaW5n ID0gc2VhcmNoU3RyaW5nOw0KICAgICAgICBkYXRhLk9uUGFnZSA9IG9uUGFnZTsN CiAgICAgICAgZGF0YS5OdW1iZXJQZXJQYWdlID0gbnVtYmVyUGVyUGFnZTsNCiAg ICAgICAgdGhpcy5Db21tdW5pdHlHcm91cFNlYXJjaEFjdGlvbiA9IGRhdGE7DQog ICAgfQ0KfQ0KDQovLyBwZXJmb3JtIGEgc2VhcmNoIGZvciBjb250ZW50IHdpdGhp biBhIHNwZWNpZmljIGNvbW11bml0eSBncm91cA0KUmVxdWVzdERlbGV0ZUNvbW11 bml0eUdyb3VwQWN0aW9uID0gQ2xhc3MoKTsNClJlcXVlc3REZWxldGVDb21tdW5p dHlHcm91cEFjdGlvbi5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVu Y3Rpb24oY29tbXVuaXR5R3JvdXBLZXksIGRlbGV0ZVJlYXNvbikgew0KICAgICAg ICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5Db21tdW5p dHlHcm91cEtleSA9IGNvbW11bml0eUdyb3VwS2V5Ow0KICAgICAgICBkYXRhLkRl bGV0ZVJlYXNvbiA9IGRlbGV0ZVJlYXNvbjsNCiAgICAgICAgdGhpcy5SZXF1ZXN0 RGVsZXRlQ29tbXVuaXR5R3JvdXBBY3Rpb24gPSBkYXRhOw0KICAgIH0NCn0NCg0K Q29tbXVuaXR5R3JvdXBSZWNlbnRGb3J1bURpc2N1c3Npb25zID0gQ2xhc3MoKTsN CkNvbW11bml0eUdyb3VwUmVjZW50Rm9ydW1EaXNjdXNzaW9ucy5wcm90b3R5cGUg PSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oY29tbXVuaXR5R3JvdXBLZXks IGFnZSwgbWF4aW11bU51bWJlck9mRGlzY3Vzc2lvbnMpIHsNCiAgICAgICAgdmFy IGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuQ29tbXVuaXR5R3Jv dXBLZXkgPSBjb21tdW5pdHlHcm91cEtleTsNCiAgICAgICAgZGF0YS5BZ2UgPSBh Z2U7DQogICAgICAgIGRhdGEuTWF4aW11bU51bWJlck9mRGlzY3Vzc2lvbnMgPSBt YXhpbXVtTnVtYmVyT2ZEaXNjdXNzaW9uczsNCiAgICAgICAgdGhpcy5Db21tdW5p dHlHcm91cFJlY2VudEZvcnVtRGlzY3Vzc2lvbnMgPSBkYXRhOw0KICAgIH0NCn0N Cg0KDQpTeXN0ZW1UaW1lSW5mbyA9IENsYXNzKCk7DQpTeXN0ZW1UaW1lSW5mby5w cm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKXsNCiAgICAg ICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIHRoaXMuU3lzdGVt VGltZUluZm8gPSBkYXRhOw0KICAgIH0NCn0NCg0KUHJpdmF0ZU1lc3NhZ2VGb2xk ZXJMaXN0ID0gQ2xhc3MoKTsNClByaXZhdGVNZXNzYWdlRm9sZGVyTGlzdC5wcm90 b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKXsNCiAgICAgICAg dmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIHRoaXMuUHJpdmF0ZU1l c3NhZ2VGb2xkZXJMaXN0ID0gZGF0YTsNCiAgICB9DQp9DQoNCg0KUHJpdmF0ZU1l c3NhZ2UgPSBDbGFzcygpOw0KUHJpdmF0ZU1lc3NhZ2UucHJvdG90eXBlID0gew0K ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGZvbGRlcklELCBtZXNzYWdlSUQpew0K ICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5G b2xkZXJJRCA9IGZvbGRlcklEOw0KICAgICAgICBkYXRhLk1lc3NhZ2VJRCA9IG1l c3NhZ2VJRDsNCiAgICAgICAgdGhpcy5Qcml2YXRlTWVzc2FnZSA9IGRhdGE7DQog ICAgfQ0KfQ0KDQpQcml2YXRlTWVzc2FnZVBhZ2UgPSBDbGFzcygpOw0KUHJpdmF0 ZU1lc3NhZ2VQYWdlLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5j dGlvbihmb2xkZXJJRCwgbnVtYmVyUGVyUGFnZSwgb25QYWdlLCBtZXNzYWdlUmVh ZFN0YXRlKXsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAg ICAgIGRhdGEuRm9sZGVySUQgPSBmb2xkZXJJRDsNCiAgICAgICAgZGF0YS5OdW1i ZXJQZXJQYWdlID0gbnVtYmVyUGVyUGFnZTsNCiAgICAgICAgZGF0YS5PblBhZ2Ug PSBvblBhZ2U7DQogICAgICAgIGRhdGEuTWVzc2FnZVJlYWRTdGF0ZSA9IG1lc3Nh Z2VSZWFkU3RhdGU7DQogICAgICAgIHRoaXMuUHJpdmF0ZU1lc3NhZ2VQYWdlID0g ZGF0YTsNCiAgICB9DQp9DQoNClByaXZhdGVNZXNzYWdlU2VuZEFjdGlvbiA9IENs YXNzKCk7DQpQcml2YXRlTWVzc2FnZVNlbmRBY3Rpb24ucHJvdG90eXBlID0gew0K ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHN1YmplY3QsIGJvZHksIHJlY2lwaWVu dExpc3Qpew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3QoKTsNCiAgICAg ICAgZGF0YS5TdWJqZWN0ID0gc3ViamVjdDsNCiAgICAgICAgZGF0YS5Cb2R5ID0g Ym9keTsNCiAgICAgICAgZGF0YS5SZWNpcGllbnRMaXN0ID0gcmVjaXBpZW50TGlz dDsNCiAgICAgICAgdGhpcy5Qcml2YXRlTWVzc2FnZVNlbmRBY3Rpb24gPSBkYXRh Ow0KICAgIH0NCn0NCg0KUHJpdmF0ZU1lc3NhZ2VNb3ZlTWVzc2FnZUFjdGlvbiA9 IENsYXNzKCk7DQpQcml2YXRlTWVzc2FnZU1vdmVNZXNzYWdlQWN0aW9uLnByb3Rv dHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihzb3VyY2VGb2xkZXJJ RCwgZGVzdGluYXRpb25Gb2xkZXJJRCwgbWVzc2FnZUlETGlzdCl7DQogICAgICAg IHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLlNvdXJjZUZv bGRlcklEID0gc291cmNlRm9sZGVySUQ7DQogICAgICAgIGRhdGEuRGVzdGluYXRp b25Gb2xkZXJJRCA9IGRlc3RpbmF0aW9uRm9sZGVySUQ7DQogICAgICAgIGRhdGEu TWVzc2FnZUlETGlzdCA9IG1lc3NhZ2VJRExpc3Q7DQogICAgICAgIHRoaXMuUHJp dmF0ZU1lc3NhZ2VNb3ZlTWVzc2FnZUFjdGlvbiA9IGRhdGE7DQogICAgfQ0KfQ0K DQpQcml2YXRlTWVzc2FnZURlbGV0ZU1lc3NhZ2VBY3Rpb24gPSBDbGFzcygpOw0K UHJpdmF0ZU1lc3NhZ2VEZWxldGVNZXNzYWdlQWN0aW9uLnByb3RvdHlwZSA9IHsN CiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihzb3VyY2VGb2xkZXJJRCwgbWVzc2Fn ZUlETGlzdCl7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAg ICAgICBkYXRhLlNvdXJjZUZvbGRlcklEID0gc291cmNlRm9sZGVySUQ7DQogICAg ICAgIGRhdGEuTWVzc2FnZUlETGlzdCA9IG1lc3NhZ2VJRExpc3Q7DQogICAgICAg IHRoaXMuUHJpdmF0ZU1lc3NhZ2VEZWxldGVNZXNzYWdlQWN0aW9uID0gZGF0YTsN CiAgICB9DQp9DQoNClByaXZhdGVNZXNzYWdlRW1wdHlUcmFzaEFjdGlvbiA9IENs YXNzKCk7DQpQcml2YXRlTWVzc2FnZUVtcHR5VHJhc2hBY3Rpb24ucHJvdG90eXBl ID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCl7DQogICAgICAgIHZhciBk YXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICB0aGlzLlByaXZhdGVNZXNzYWdl RW1wdHlUcmFzaEFjdGlvbiA9IGRhdGE7DQogICAgfQ0KfQ0KDQoNClByaXZhdGVN ZXNzYWdlQ3JlYXRlRm9sZGVyQWN0aW9uID0gQ2xhc3MoKTsNClByaXZhdGVNZXNz YWdlQ3JlYXRlRm9sZGVyQWN0aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFs aXplOiBmdW5jdGlvbigpew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBPYmplY3Qo KTsNCiAgICAgICAgZGF0YS5Gb2xkZXJJRCA9ICJJbmJveCI7DQogICAgICAgIHRo aXMuUHJpdmF0ZU1lc3NhZ2VDcmVhdGVGb2xkZXJBY3Rpb24gPSBkYXRhOw0KICAg IH0NCn0NCg0KRmlyc3RVbnJlYWRQb3N0ID0gQ2xhc3MoKTsNCkZpcnN0VW5yZWFk UG9zdC5wcm90b3R5cGUgPSB7DQoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oZGlzY3Vz c2lvbktleSwgbnVtYmVyUGVyUGFnZSwgc29ydCl7DQoJCXZhciBkYXRhID0gbmV3 IE9iamVjdCgpOw0KCQlkYXRhLkRpc2N1c3Npb25LZXkgPSBkaXNjdXNzaW9uS2V5 Ow0KICAgICAgICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0K ICAgICAgICBkYXRhLlNvcnQgPSBzb3J0Ow0KICAgICAgICB0aGlzLkZpcnN0VW5y ZWFkUG9zdCA9IGRhdGE7DQoJfQ0KfQ0KDQpMYXRlc3RQb3N0ID0gQ2xhc3MoKTsN CkxhdGVzdFBvc3QucHJvdG90eXBlID0gew0KCWluaXRpYWxpemU6IGZ1bmN0aW9u KGRpc2N1c3Npb25LZXksIG51bWJlclBlclBhZ2UsIHNvcnQpew0KCQl2YXIgZGF0 YSA9IG5ldyBPYmplY3QoKTsNCgkJZGF0YS5EaXNjdXNzaW9uS2V5ID0gZGlzY3Vz c2lvbktleTsNCiAgICAgICAgZGF0YS5OdW1iZXJQZXJQYWdlID0gbnVtYmVyUGVy UGFnZTsNCiAgICAgICAgZGF0YS5Tb3J0ID0gc29ydDsNCiAgICAgICAgdGhpcy5M YXRlc3RQb3N0ID0gZGF0YTsNCgl9DQp9DQoNClVwZGF0ZURpc2N1c3Npb25MYXN0 UmVhZEFjdGlvbiA9IENsYXNzKCk7DQpVcGRhdGVEaXNjdXNzaW9uTGFzdFJlYWRB Y3Rpb24ucHJvdG90eXBlID0gew0KCWluaXRpYWxpemU6IGZ1bmN0aW9uKGRpc2N1 c3Npb25LZXksIHBvc3RLZXksIGZvcmNlVXBkYXRlKXsNCgkJdmFyIGRhdGEgPSBu ZXcgT2JqZWN0KCk7DQoJCWRhdGEuRGlzY3Vzc2lvbktleSA9IGRpc2N1c3Npb25L ZXk7DQoJCWlmKHBvc3RLZXkpew0KCQkJZGF0YS5Gb3J1bVBvc3RLZXkgPSBwb3N0 S2V5Ow0KCQl9DQoJCWlmKGZvcmNlVXBkYXRlKXsNCgkJCWRhdGEuRm9yY2VVcGRh dGUgPSB0cnVlOw0KCQl9DQoJCWVsc2V7DQoJCQlkYXRhLkZvcmNlVXBkYXRlID0g ZmFsc2U7DQoJCX0NCgkJdGhpcy5VcGRhdGVEaXNjdXNzaW9uTGFzdFJlYWRBY3Rp b24gPSBkYXRhOw0KCX0NCn0NCg0KVXBkYXRlRXh0ZXJuYWxVc2VySWRBY3Rpb24g PSBDbGFzcygpOw0KVXBkYXRlRXh0ZXJuYWxVc2VySWRBY3Rpb24ucHJvdG90eXBl ID0gew0KCWluaXRpYWxpemU6IGZ1bmN0aW9uKGV4dGVybmFsU2l0ZU5hbWUsIGV4 dGVybmFsU2l0ZVVzZXJJZCwgZm9yVXNlcil7DQoJCXZhciBkYXRhID0gbmV3IE9i amVjdCgpOw0KCQlkYXRhLkV4dGVybmFsU2l0ZU5hbWUgPSBleHRlcm5hbFNpdGVO YW1lOw0KCQlkYXRhLkV4dGVybmFsU2l0ZVVzZXJJZCA9IGV4dGVybmFsU2l0ZVVz ZXJJZDsNCgkJZGF0YS5Gb3JVc2VyID0gZm9yVXNlcjsNCgkJdGhpcy5VcGRhdGVF eHRlcm5hbFVzZXJJZEFjdGlvbiA9IGRhdGE7DQoJfQ0KfQ0KDQpVcGRhdGVTdWJz Y3JpcHRpb25BY3Rpb24gPSBDbGFzcygpOw0KVXBkYXRlU3Vic2NyaXB0aW9uQWN0 aW9uLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihkaXNj dXNzaW9uS2V5LCBzdWJzY3JpYmUpew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBP YmplY3QoKTsNCiAgICAgICAgZGF0YS5EaXNjdXNzaW9uS2V5ID0gZGlzY3Vzc2lv bktleTsNCiAgICAgICAgZGF0YS5TdWJzY3JpYmUgPSBzdWJzY3JpYmU7DQogICAg ICAgIHRoaXMuVXBkYXRlU3Vic2NyaXB0aW9uQWN0aW9uID0gZGF0YTsNCiAgICB9 DQp9DQoNClVwZGF0ZVBvbGxBY3Rpb24gPSBDbGFzcygpOw0KVXBkYXRlUG9sbEFj dGlvbi5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocG9s bE9uS2V5LCBxdWVzdGlvbiwgYW5zd2Vycykgew0KICAgICAgICB2YXIgZGF0YSA9 IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5Qb2xsT25LZXkgPSBwb2xsT25L ZXk7DQogICAgICAgIGRhdGEuUXVlc3Rpb24gPSBxdWVzdGlvbjsNCiAgICAgICAg ZGF0YS5BbnN3ZXJzID0gYW5zd2VyczsNCiAgICAgICAgdGhpcy5VcGRhdGVQb2xs QWN0aW9uID0gZGF0YTsNCiAgICB9DQp9DQoNClRvZ2dsZVBvbGxJc0Nsb3NlZEFj dGlvbiA9IENsYXNzKCk7DQpUb2dnbGVQb2xsSXNDbG9zZWRBY3Rpb24ucHJvdG90 eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHBvbGxLZXkpIHsNCiAg ICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuVG9n Z2xlVGhpc1BvbGwgPSBwb2xsS2V5Ow0KICAgICAgICB0aGlzLlRvZ2dsZVBvbGxJ c0Nsb3NlZEFjdGlvbiA9IGRhdGE7DQogICAgfQ0KfQ0KDQpQb3N0UG9sbEFuc3dl ckFjdGlvbiA9IENsYXNzKCk7DQpQb3N0UG9sbEFuc3dlckFjdGlvbi5wcm90b3R5 cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocG9sbFRvQW5zd2VyLCBp bmRleE9mQW5zd2VyKSB7DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgp Ow0KICAgICAgICBkYXRhLlBvbGxUb0Fuc3dlciA9IHBvbGxUb0Fuc3dlcjsNCiAg ICAgICAgZGF0YS5JbmRleE9mQW5zd2VyID0gaW5kZXhPZkFuc3dlcjsNCiAgICAg ICAgdGhpcy5Qb3N0UG9sbEFuc3dlckFjdGlvbiA9IGRhdGE7DQogICAgfQ0KfQ0K DQpQb2xsUGFnZSA9IENsYXNzKCk7DQpQb2xsUGFnZS5wcm90b3R5cGUgPSB7DQog ICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocG9sbE9uS2V5LCBudW1iZXJQZXJQYWdl LCBvblBhZ2UsIHNvcnQpIHsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0 KCk7DQogICAgICAgIGRhdGEuUG9sbE9uS2V5ID0gcG9sbE9uS2V5Ow0KICAgICAg ICBkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0KICAgICAgICBk YXRhLk9uUGFnZSA9IG9uUGFnZTsNCiAgICAgICAgZGF0YS5Tb3J0ID0gc29ydDsN CiAgICAgICAgdGhpcy5Qb2xsUGFnZSA9IGRhdGE7DQogICAgfQ0KfQ0KDQpDaGVj a0ZpbHRlcmVkV29yZHMgPSBDbGFzcygpOw0KQ2hlY2tGaWx0ZXJlZFdvcmRzLnBy b3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihrZXlWYWx1ZURp Y3Rpb25hcnkpIHsgLy8ga2V5IGlzIHRoZSBzdHJpbmcgSUQsIHZhbHVlIGlzIHRo ZSBzdHJpbmcgdG8gYmUgY2hlY2tlZCAtIGZvcm1hdHRlZCBsaWtlIHsgImtleTEi OiJzdHJpbmcxIiwgImtleTIiOiJzdHJpbmcyIiB9Lg0KICAgICAgICB2YXIgZGF0 YSA9IG5ldyBPYmplY3QoKTsNCiAgICAgICAgZGF0YS5Xb3JkRGljdGlvbmFyeSA9 IGtleVZhbHVlRGljdGlvbmFyeTsNCiAgICAgICAgdGhpcy5DaGVja0ZpbHRlcmVk V29yZHMgPSBkYXRhOw0KICAgIH0NCn0NCg0KLy9Qb2ludHMmQmFkZ2luZw0KQXdh cmRQb2ludHNBY3Rpb24gPSBDbGFzcygpOw0KQXdhcmRQb2ludHNBY3Rpb24ucHJv dG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKHVzZXJLZXksIHBv aW50cywgY3VycmVuY3lUeXBlKSB7IA0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBP YmplY3QoKTsNCiAgICAgICAgZGF0YS5Vc2VyS2V5ID0gdXNlcktleTsNCiAgICAg ICAgZGF0YS5Qb2ludHMgPSBwb2ludHM7DQogICAgICAgIGRhdGEuQ3VycmVuY3lU eXBlID0gY3VycmVuY3lUeXBlOw0KICAgICAgICB0aGlzLkF3YXJkUG9pbnRzQWN0 aW9uID0gZGF0YTsNCiAgICB9DQp9DQoNCkJhZGdlRmFtaWx5ID0gQ2xhc3MoKTsN CkJhZGdlRmFtaWx5LnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5j dGlvbihiYWRnZUZhbWlseUtleSkgeyANCiAgICAgICAgdmFyIGRhdGEgPSBuZXcg T2JqZWN0KCk7DQogICAgICAgIGRhdGEuQmFkZ2VGYW1pbHlLZXkgPSBiYWRnZUZh bWlseUtleTsNCiAgICAgICAgdGhpcy5CYWRnZUZhbWlseSA9IGRhdGE7DQogICAg fQ0KfQ0KDQpCYWRnZUZhbWlsaWVzID0gQ2xhc3MoKTsNCkJhZGdlRmFtaWxpZXMu cHJvdG90eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgeyANCiAg ICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7ICAgICAgICANCiAgICAgICAg dGhpcy5CYWRnZUZhbWlsaWVzID0gZGF0YTsNCiAgICB9DQp9DQoNCkJhZGdpbmdF dmVudEFjdGlvbiA9IENsYXNzKCk7DQpCYWRnaW5nRXZlbnRBY3Rpb24ucHJvdG90 eXBlID0gew0KICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGFjdGl2aXR5TmFtZSwg YWN0aXZpdHlUYWdzLCB1c2VyVGFncykgeyANCiAgICAgICAgdmFyIGRhdGEgPSBu ZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuQWN0aXZpdHlOYW1lID0gYWN0aXZp dHlOYW1lOw0KICAgICAgICBkYXRhLkFjdGl2aXR5VGFncyA9IGFjdGl2aXR5VGFn cw0KICAgICAgICBkYXRhLlVzZXJUYWdzID0gdXNlclRhZ3M7DQogICAgICAgIHRo aXMuQmFkZ2luZ0V2ZW50QWN0aW9uID0gZGF0YTsNCiAgICB9DQp9DQoNCkdyYW50 QmFkZ2VBY3Rpb24gPSBDbGFzcygpOw0KR3JhbnRCYWRnZUFjdGlvbi5wcm90b3R5 cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24odXNlcktleSwgYmFkZ2VG YW1pbHlLZXksIGJhZGdlS2V5KSB7IA0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBP YmplY3QoKTsNCiAgICAgICAgZGF0YS5Vc2VyS2V5ID0gdXNlcktleTsNCiAgICAg ICAgZGF0YS5CYWRnZUZhbWlseUtleSA9IGJhZGdlRmFtaWx5S2V5DQogICAgICAg IGRhdGEuQmFkZ2VLZXkgPSBiYWRnZUtleTsNCiAgICAgICAgdGhpcy5HcmFudEJh ZGdlQWN0aW9uID0gZGF0YTsNCiAgICB9DQp9DQoNCkxlYWRlcmJvYXJkID0gQ2xh c3MoKTsNCkxlYWRlcmJvYXJkLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXpl OiBmdW5jdGlvbihsZWFkZXJib2FyZEtleSkgeyANCiAgICAgICAgdmFyIGRhdGEg PSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuTGVhZGVyYm9hcmRLZXkgPSBs ZWFkZXJib2FyZEtleTsNCiAgICAgICAgdGhpcy5MZWFkZXJib2FyZCA9IGRhdGE7 DQogICAgfQ0KfQ0KDQpMZWFkZXJib2FyZHMgPSBDbGFzcygpOw0KTGVhZGVyYm9h cmRzLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsg DQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOyAgICAgICAgDQogICAg ICAgIHRoaXMuTGVhZGVyYm9hcmRzID0gZGF0YTsNCiAgICB9DQp9DQoNCkxlYWRl cmJvYXJkUmFua2luZ3NQYWdlID0gQ2xhc3MoKTsNCkxlYWRlcmJvYXJkUmFua2lu Z3NQYWdlLnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFsaXplOiBmdW5jdGlvbihs ZWFkZXJib2FyZEtleSwgb25lQmFzZWRPblBhZ2UpIHsgDQogICAgICAgIHZhciBk YXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBkYXRhLkxlYWRlcmJvYXJkS2V5 ID0gbGVhZGVyYm9hcmRLZXk7DQogICAgICAgIGRhdGEuT25QYWdlID0gb25lQmFz ZWRPblBhZ2U7DQogICAgICAgIHRoaXMuTGVhZGVyYm9hcmRSYW5raW5nc1BhZ2Ug PSBkYXRhOw0KICAgIH0NCn0NCg0KUmV2b2tlQmFkZ2VBY3Rpb24gPSBDbGFzcygp Ow0KUmV2b2tlQmFkZ2VBY3Rpb24ucHJvdG90eXBlID0gew0KICAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKHVzZXJLZXksIGJhZGdlRmFtaWx5S2V5LCBiYWRnZUtleSkg eyANCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRh dGEuVXNlcktleSA9IHVzZXJLZXk7DQogICAgICAgIGRhdGEuQmFkZ2VGYW1pbHlL ZXkgPSBiYWRnZUZhbWlseUtleQ0KICAgICAgICBkYXRhLkJhZGdlS2V5ID0gYmFk Z2VLZXk7DQogICAgICAgIHRoaXMuUmV2b2tlQmFkZ2VBY3Rpb24gPSBkYXRhOw0K ICAgIH0NCn0NCg0KUG9pbnRzQW5kQmFkZ2luZ1J1bGVWYWxpZGF0aW9uQWN0aW9u ID0gQ2xhc3MoKTsNClBvaW50c0FuZEJhZGdpbmdSdWxlVmFsaWRhdGlvbkFjdGlv bi5wcm90b3R5cGUgPSB7DQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocnVsZXMp IHsgDQogICAgICAgIHZhciBkYXRhID0gbmV3IE9iamVjdCgpOw0KICAgICAgICBk YXRhLlJ1bGVzID0gcnVsZXM7DQogICAgICAgIHRoaXMuUG9pbnRzQW5kQmFkZ2lu Z1J1bGVWYWxpZGF0aW9uQWN0aW9uID0gZGF0YTsNCiAgICB9DQp9DQoNCkFidXNl SXRlbVBhZ2UgPSBDbGFzcygpOw0KQWJ1c2VJdGVtUGFnZS5wcm90b3R5cGUgPSB7 DQoJaW5pdGlhbGl6ZTogZnVuY3Rpb24obnVtYmVyUGVyUGFnZSwgb25QYWdlLCBz ZWN0aW9uLCBtYXhSZXBvcnRzUGVySXRlbSl7DQoJCXZhciBkYXRhID0gbmV3IE9i amVjdCgpOw0KCQlkYXRhLk51bWJlclBlclBhZ2UgPSBudW1iZXJQZXJQYWdlOw0K CQlkYXRhLk9uUGFnZSA9IG9uUGFnZTsNCgkJZGF0YS5TZWN0aW9uID0gc2VjdGlv bjsNCgkJZGF0YS5NYXhSZXBvcnRzUGVySXRlbSA9IG1heFJlcG9ydHNQZXJJdGVt Ow0KCQl0aGlzLkFidXNlSXRlbVBhZ2UgPSBkYXRhOw0KCX0NCn0NCg0KQWJ1c2VJ dGVtID0gQ2xhc3MoKTsNCkFidXNlSXRlbS5wcm90b3R5cGUgPSAgew0KCWluaXRp YWxpemU6IGZ1bmN0aW9uKHRhcmdldEtleSl7DQoJCXZhciBkYXRhID0gbmV3IE9i amVjdCgpOw0KCQlkYXRhLlRhcmdldEtleSA9IHRhcmdldEtleTsNCgkJdGhpcy5B YnVzZUl0ZW0gPSBkYXRhOw0KCX0NCn0NCg0KQ2xlYXJBYnVzZUFjdGlvbiA9IENs YXNzKCk7DQpDbGVhckFidXNlQWN0aW9uLnByb3RvdHlwZSA9ICB7DQoJaW5pdGlh bGl6ZTogZnVuY3Rpb24odGFyZ2V0S2V5KXsNCgkJdmFyIGRhdGEgPSBuZXcgT2Jq ZWN0KCk7DQoJCWRhdGEuVGFyZ2V0S2V5ID0gdGFyZ2V0S2V5Ow0KCQl0aGlzLkNs ZWFyQWJ1c2VBY3Rpb24gPSBkYXRhOw0KCX0NCn0NCg0KU2V0Q29tbWVudEJsb2Nr aW5nU3RhdGVBY3Rpb24gPSBDbGFzcygpOw0KU2V0Q29tbWVudEJsb2NraW5nU3Rh dGVBY3Rpb24ucHJvdG90eXBlID0gew0KCWluaXRpYWxpemU6IGZ1bmN0aW9uKGNv bW1lbnRLZXksIGJsb2NraW5nU3RhdGUpew0KCQl2YXIgZGF0YSA9IG5ldyBPYmpl Y3QoKTsNCgkJZGF0YS5Db21tZW50S2V5ID0gY29tbWVudEtleTsNCgkJZGF0YS5D b21tZW50QmxvY2tpbmdTdGF0ZSA9IGJsb2NraW5nU3RhdGU7DQoJCXRoaXMuU2V0 Q29tbWVudEJsb2NraW5nU3RhdGVBY3Rpb24gPSBkYXRhOw0KCX0NCn0NCi8vQ29t bXVuaXR5IGZlZWQgDQpSZWNlbnRBY3Rpdml0eVJlcXVlc3QgPSBDbGFzcygpOw0K UmVjZW50QWN0aXZpdHlSZXF1ZXN0LnByb3RvdHlwZSA9IHsNCiAgICBpbml0aWFs aXplOiBmdW5jdGlvbihhY3Rpdml0eUZvclR5cGVzLCBjb3VudCkgeyANCiAgICAg ICAgdmFyIGRhdGEgPSBuZXcgT2JqZWN0KCk7DQogICAgICAgIGRhdGEuQWN0aXZp dHlGb3JUeXBlcyA9IGFjdGl2aXR5Rm9yVHlwZXM7DQogICAgICAgIGRhdGEuQ291 bnQgPSBjb3VudDsNCiAgICAgICAgdGhpcy5SZWNlbnRBY3Rpdml0eVJlcXVlc3Qg PSBkYXRhOw0KICAgIH0NCn0JDQp9KSgpOw0K ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://business.timesonline.co.uk/tol/img/favicon.ico Content-Transfer-Encoding: Base64 AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAABML AAATCwAAAAAAAAAAAAAA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAc1sAKyIAAAAAAAAAHRcAc1sA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAc1sAAAAAAAAAc1sA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAc1sAAAAAAAAAc1sA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAc1sAAAAAAAAAc1sA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAc1sAAAAAAAAAc1sA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAc1sAAAAAAAAAc1sA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAc1sAAAAAAAAAc1sA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAc1sAAAAAAAAAc1sA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYAKyIA5rYA5rYAc1sAAAAAAAAAc1sA5rYA 5rYAOi4A5rYA5rYA5rYA5rYA5rYA5rYAAAAArIgA5rYAc1sAAAAAAAAAc1sA5rYA u5QAAAAA5rYA5rYA5rYA5rYA5rYA5rYAAAAAAAAAOi4AHRcAAAAAAAAAOi4AOi4A AAAAAAAA5rYA5rYA5rYA5rYA5rYA5rYArIgArIgArIgArIgArIgArIgArIgArIgA rIgArIgA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA 5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA5rYA 5rYA5rYA5rYA5rYA5rYAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP// ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=alternate.css Content-Type: text/css; charset=ISO-8859-1; name=alternate.css Content-Location: http://business.timesonline.co.uk/tol/css/alternate.css Content-Transfer-Encoding: 8bit /********************** Alternative stylesheet for user agents that does not implement the @import method. **********************/ ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=bg-page.gif Content-Type: image/gif; name=bg-page.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/bg-page.gif Content-Transfer-Encoding: Base64 R0lGODlhgAcBAIAAAP///9nZ2SH5BAAAAAAALAAAAACABwEAAAJCjI+py+0Po5y0 2ouz3rz7D4YfQJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMphMlikqn 1Kr1is1qt9YCADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=puff-sides-385.gif Content-Type: image/gif; name=puff-sides-385.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/puff-sides-385.gif Content-Transfer-Encoding: Base64 R0lGODlhgQEEAIABAKWkpP///yH5BAEAAAEALAAAAACBAQQAAAIqjI+py+0Po5y0 2ouz3rz7D4biSJbmiaZqCKzuC8fyTMdAW+f6zvc+CSgAADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=related-attachements-top.gif Content-Type: image/gif; name=related-attachements-top.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/related-attachements-top.gif Content-Transfer-Encoding: Base64 R0lGODlhpQBkAMQAAP///9nZ2fz8/N/f3+zs7NXV1c/Pz/X19czMzNLS0u/v7/n5 +dPT0+Xl5c7OztbW1tHR0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACwAAAAApQBkAAAF/2AgjmRpnmiqrmzrvjCaOARg33iu73zv /8CgcEgs+gKGmnHJbDqfUGFAgThEr9is9hoAEAzWrXhMJne9hkV5zW4Xz4BBQeCu 2+/w+PzO74vzACJ+g4ROgAIFA4WLjECAAIiKjZOUgTsLSZWahY82B5mboXg9BwgK oqhtnTdfYamvW6usYLC1WLI3DQx0tr1NuDdyvL7EQ8DBD8PFyz3HNpHM0TzOz4nS 1zfUNwwN2NcwCQgIEN7lxuboP9rp0uvszO7vxfHyvvT1tvf4sPr7qf3+RAEMuGkg wUoGD05KqJARw4acIGJ7KNEPxYp8LmK0o3Gjm44e2YAMWWYkyTEmT4nGUtkrJctb L2u5jAllJk1DN//lRGVzp5GePokADSqFqKahRtUlpYR06TSnjZpCzSF1ajarEbEO qoqVq1WvU8FCFeuU7FKzSdEaVUuUbVC3PuHulJuT7k27NPHG1PuSL0u/KgGfFEyS cEjDHhFvVIyRcUXHEiFDlNyQskLLBzET1ByQsz/P+wKEAAA7 ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=related-attachements-side.gif Content-Type: image/gif; name=related-attachements-side.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/related-attachements-side.gif Content-Transfer-Encoding: Base64 R0lGODlhpQABAIAAANnZ2f///yH5BAEAAAEALAAAAAClAAEAAAIMjI+py+0Po5y0 PlAAADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=related-attachements-bottom.gif Content-Type: image/gif; name=related-attachements-bottom.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/related-attachements-bottom.gif Content-Transfer-Encoding: Base64 R0lGODlhuQAEAJEBANnZ2QAAAAAAAAAAACH5BAEAAAEALAAAAAC5AAQAAAIZhI+p y+0Po5y02ouz3rz7D4biSJbmiaZpAQA7 ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=puff-bottom.gif Content-Type: image/gif; name=puff-bottom.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/puff-bottom.gif Content-Transfer-Encoding: Base64 R0lGODlhuQANAMQcAKWkpP////Tz8/n5+d3c3Ojo6NfX1+7u7tHR0cbGxtHQ0OLi 4ru6uqqpqaSioszLy9fW1qSjo8bFxbu5udfX1rW0tMG/v8HAv8HAwO7t7fPz86+u rv///wAAAAAAAAAAACH5BAEAABwALAAAAAC5AA0AAAXDYMCNZGmeaKqubOu+cCzP bQTQeK7vfA8fg1bi5isaj0ijZcPBQDgClECUrFqvWE4CQSoYOI3JQLEgOajZtHoN UwRTBoLGwbCx73h8vHVQCB4ERHmDhEkMByoDCAIIDyRohZGSNAUFKQMUBQsJb4+T n6AuDWUmBAQCF4gogqGtrQJRJV4DE6QqrK65khVPUG4SXy6QusSDBZiMCTIAAAEB zM7Qz83T0dTS2Nfa1tzV3tnd4N/b4+Hk4ujn6ubmGQQSsTIhADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=puff-top.gif Content-Type: image/gif; name=puff-top.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/puff-top.gif Content-Transfer-Encoding: Base64 R0lGODlhBAABAIABAKWkpP///yH5BAEAAAEALAAAAAAEAAEAAAIDBBIFADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=puff-sides.gif Content-Type: image/gif; name=puff-sides.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/puff-sides.gif Content-Transfer-Encoding: Base64 R0lGODlhuQAEAIABAKWkpP///yH5BAEAAAEALAAAAAC5AAQAAAIdjI+py+0Po5y0 2ouz3rz7C3ziSJamAoTnyrbuAhQAOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=sketch-top-160.gif Content-Type: image/gif; name=sketch-top-160.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/sketch-top-160.gif Content-Transfer-Encoding: Base64 R0lGODlhoAADAPcdANnZ2eDg4P/+9efn5+Pi4Ozs5+Xl4tvb2+Xl5d3d3efn5P38 8+Tk5Onp6d7e3eLi4vb17u7u6evr6+rp5e7u7t7e3vr68uDg3vj38PPz8/Pz7Ozs 7PDw8PX19QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAB0ALAAAAACgAAMAAAjdADsIHEiwoMGCGTJQGMCw AcOHAxpIYMgAwQAECAJo3MhRIwIGHB94ZACx5MYGEiVQmJixY4AKAGLKlPlyJs2a NnPqrOAywIGNDwtS4EChwYMECXwmOKCzqdOnUKNKnarzAQOZTBPk1Ir06c+OJB+2 7NnxwYANHQAIWLt2wQILBTRAiABBgYMLBhwQYArggF8ABgAQCHxh5gECBBwAcHAX sePHBiYQUDDZgAEFkgcbIFAgcgQFCjYTkFwgQgHOBVKrNq1AwwIMECCwXSAAg4W2 bHPjXntbt+/fwIMDCAgAOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=sketch-sides-160.gif Content-Type: image/gif; name=sketch-sides-160.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/sketch-sides-160.gif Content-Transfer-Encoding: Base64 R0lGODlhoAABAIAAANnZ2f/+9SH5BAAAAAAALAAAAACgAAEAAAIMRI6py+0Po5y0 WgUKADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=sketch-bottom-160.gif Content-Type: image/gif; name=sketch-bottom-160.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/sketch-bottom-160.gif Content-Transfer-Encoding: Base64 R0lGODlhoAADAPcdANnZ2ePi4P/+9ezs5+Dg4Ofn59vb2+Li4t7e3eTk5Orp5fPz 8+7u6d3d3efn5OXl5fb17vHw6+Xl4unp6e7u7uDg3t7e3vLy8v388/Dw8Ozs7Pj3 8PPz7PX19QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAB0ALAAAAACgAAMAAAjeAAEIGDhwgMEACA0gXIiw AoCHECNKjFgB4UQAFS8+rMgQoYIBESBEiMCAwUKDKFM6UIBQAsOVHWMGUPBRgQOD JFMaZIASAgYMBIMKHUr0IYcBLmXG/IjSQUwDGh8iQACAqkSqUB86kBC1q9evYMOK vWgAgcKpEhhA2NChrdu3cOPKndvhgtsFdPHWzdBBbwcKFDIs0JCgwIQCiBMXIGB4 8QMCBA4kSDDhwYHFBw5AfpAgcwICny1DHk3aQoMGABpAzvrQAgDNrwEYmP3QAIEG B0wnoDCBgoYCFxb4dRsQADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=shadow-sides-wide-356.gif Content-Type: image/gif; name=shadow-sides-wide-356.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/shadow-sides-wide-356.gif Content-Transfer-Encoding: Base64 R0lGODlhZAEBAJEAALKyspmZmf///wAAACH5BAAAAAAALAAAAABkAQEAAAIUjI6p y+0Po5y02ouz3rz7HoQhUAAAOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=shadow-header-wide-356.gif Content-Type: image/gif; name=shadow-header-wide-356.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/shadow-header-wide-356.gif Content-Transfer-Encoding: Base64 R0lGODlhZAEKAPcCAJmZmf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAABkAQoAAAiBAAEEGEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDNqzAhAgEePAjeKHEmypMmTKFOqXImw40cBIVnKnEmzps2b ODG6/Bgzp8+fQIMKHbpwJ0iiSJMqXcr0olGYTaNKnUo16NOeVbNq3cq14tWuYMOK Fft1rNmzaJOWTcu2rVuWTwMCADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=shadow-footer-wide-356.gif Content-Type: image/gif; name=shadow-footer-wide-356.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/border/shadow-footer-wide-356.gif Content-Transfer-Encoding: Base64 R0lGODlhZAEGAPcAAMzMzNnZ2bKyspmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAABkAQYAAAh8AAcIHEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDNqJCiAgMePHgFsHEmypMmTKFOqXGmyI8iPIlnKnEmzps2b OCu6fEkgZs6fQIMKHUoU4c6XPosqXcq0qVOIR0EGEEC1qtWrWLNq3cq1q9evYMOK HUu2rNmzaNOqXYs2IAA7 ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=classified-marker.gif Content-Type: image/gif; name=classified-marker.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/classified-marker.gif Content-Transfer-Encoding: Base64 R0lGODlhDwAHALMAALy8vLKysuzs7JWVlampqYKCgsXFxZ+fn29vb/X19WZmZv// /wAAAAAAAAAAAAAAACwAAAAADwAHAAAEHnDJSWsyFtdFUEjCgWjboSCKAmxUkR4s lRRDbCV2BAA7 ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=quote-left-red-beige-bg.gif Content-Type: image/gif; name=quote-left-red-beige-bg.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/quote-left-red-beige-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhCwAJALMAAPXhyuOBc+aRgu/Brc8QDvLRu9hAOt5gVttQSOyxnuFwZdIg HcwAAPjx2AAAAAAAACH5BAAAAAAALAAAAAALAAkAAAQxsElh5ETyrGTRbspSWCHQ JAwnoapCWOArGQyzDA1tD0jNHI1e7RDwKRrF2rEnkjALEQA7 ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=quote-right-red-beige-bg.gif Content-Type: image/gif; name=quote-right-red-beige-bg.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/quote-right-red-beige-bg.gif Content-Transfer-Encoding: Base64 R0lGODlhCwAJALMAAPXhyuOBc+aRgu/Brc8QDvLRu9hAOt5gVttQSOyxnuFwZdIg HcwAAPjx2AAAAAAAACH5BAAAAAAALAAAAAALAAkAAAQysCyGWpO0KcaD5kxwgNXI IcPEGE3KsRahWPHcJExC4zqw2JffbVGxJBYHC0JAaxiYlggAOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=14x14-email.gif Content-Type: image/gif; name=14x14-email.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/icon/14x14-email.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAOAMQaAP///wCJ2AB/1QCO2gB60wCT3AB10QCX3QCE1gBwzwCa3gBs ziSr5ACd3ySC1SSK1wBpzSST2ySW3SSn4ySh4CSO2SSk4iSG1ySp40yp4v///wAA AAAAAAAAAAAAAAAAACH5BAEAABoALAAAAAAOAA4AAAVaoCaKTAMwY0o2ZoOqGqbM wIyp06EfwD6NloJQCBgWLBrKYMkEMJeUgHQaAFClgKwWkEF4vxKBeEwWSzQRgnrN jowqhrg8XlE9Evj8A6a5LP4LF3wiDhAQDiohADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=14x14-print.gif Content-Type: image/gif; name=14x14-print.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/icon/14x14-print.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAOANUxAACQ2////wB10f3+/wBwz83n9wBszgCK2SOf4AKQ2wB60wB/ 1QCF1iSV3BCd3wCT3ACW3SSC1c/n9xCC1gBpzc3q+EKs5BCH2Nbu+geU3K/b86/V 8QWC1QB20c3o+AWc3wWe4AiT3L/e9L/k9gx/1CSr5CSK1ySO2c/o9wiP2h6T3ACA 1RCO2iSh4M/r+AeT3CSG1////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAADEALAAAAAAOAA4AAAZ2wJgwQAwIj8jAwDIgIo9K BAAxwDggJehACgBkKq4raGjpmhOV0ePxiUXN3VDA3CIOXmeP5sA/uDEFCQAJBSgs DIgMQhcSBSkFEhcrC5QNQgoTIgEbEwqeCpZCKgKkAh2lJ08cBKytJk9CJAazBjCw RxEUFBFPQQA7 ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=tol.css Content-Type: text/css; charset=ISO-8859-1; name=tol.css Content-Location: http://business.timesonline.co.uk/tol/css/tol.css Content-Transfer-Encoding: 8bit body { margin:0px; padding:0px; font-family:Arial, Helvetica, sans-serif; font-size:70%; line-height:1.0em; text-align:center; color:#000; background:#fff url(../img/global/bg-page.gif) repeat-y top; } .access-text { display:none; } .clear { overflow:hidden; clear:both; height:1px; margin:-1px 0px 0px 0px; font-size:1px; } .clear-simple { clear:both; } .display-inline { display:inline; } .width-460 { width:460px; } .display-block { display:block; } .float-left { float:left; display:inline; } .float-right { float:right; display:inline; } .text-left { text-align:left; } .text-right { text-align:right; } .text-center { text-align:center; } p.where-am-i { float:left; display:inline; padding:0px 9px; color:#666; } img { border:0px; } body.print-friendly { background:none; } #region-print-friendly { margin:10px 15px; padding-bottom:10px; text-align:left; } #shell { } #page { margin:auto; width:996px; text-align:left; padding:5px 0px 10px 0px; } #region-top-ad { display:block; width:956px; margin:0px 20px; padding-bottom:15px; border-bottom:1px solid #d9d9d9; } #region-nav { position:relative; left:20px; width:956px; margin:0px; padding:0px; } #region-content { display:block; width:956px; margin:0px 20px 0px 20px; } #region-body-and-footer { margin:0px; padding:0px; } #region-footer { clear:both; display:block; margin-top:-1px; padding-top:1px; } #grid-column4 { float:right; } #grid-column4-non-grey { width:356px; margin:0px; } #grid-column4-grey { background:#f0f0f0; margin:0px 0px 15px 0px; padding:10px 10px 0px 10px; width:356px; voice-family: "\"}\""; width:336px; } #grid-column4-grey-1 { background:#f0f0f0; margin:0px 0px 15px 0px; padding:10px 10px 0px 10px; width:356px; voice-family: "\"}\""; width:336px; } #google-ad { border:1px solid #d9d9d9; margin:0px 0px 15px 0px; padding:9px; width:356px; voice-family: "\"}\""; width:334px; } #google-ad-art { border:1px solid #d9d9d9; margin:0px 0px 15px 0px; padding:9px; width:356px; voice-family: "\"}\""; width:364px; } #region-column1and2-layout0 { display:inline; float:left; width:956px; margin:0px; padding:0px; } #region-column1-layout0 { display:inline; float:left; width:585px; margin:0px 15px 0px 0px; padding:0px; } #region-column1and2-container-layout2 { display:inline; float:left; width:600px; } * html #region-column1and2-layout2 { display:inline; float:left; width:585px; margin:0px 10px 0px 0px; padding:0px; } #region-column1and2-layout2 { display:inline; float:left; width:585px; margin:0px 15px 0px 0px; padding:0px; } #region-column1-layout2 { display:inline; float:left; width:385px; margin:0px 15px 0px 0px; padding:0px; overflow: visible } #region-column2-layout2 { display:inline; float:left; width:185px; margin:-1px 15px 0px 0px; padding:0px; } #region-column1-layout3 { display:inline; float:left; width:756px; margin:0px 15px 0px 0px; padding:0px; } #region-column2-top-layout3 { width:185px; margin:0px 0px 15px 0px; } #region-column2-middle-layout3 { background:#f0f0f0; margin:0px 0px 15px 0px; padding:13px 12px 13px 13px; width:185px; voice-family: "\"}\""; width:160px; } #region-column2-bottom-layout3 { width:185px; margin:0px 0px 15px 0px; } #ad-top { width:956px; } .prop-90 { min-height:90px; float:right; width:1px; } * html .prop-90{ height:90px; } .ad-top-right { float:right; padding:10px; min-height:70px; width:213px; voice-family: "\"}\""; width:193px; } * html .ad-top-right{ height:70px; } #header { clear:both; } .footer-nav-container { clear:both; border-top:2px solid #666; background:#f0f0f0; } #logo-and-quote-container { width:100%; } .header-quote-container { width:356px; } .header-quote-left { float:left; padding-right:10px; } .header-quote-right { display:inline; } .nav-primary { clear:both; float:left; width:100%; background:#d9d9d9; } .nav-secondary { clear:both; float:left; width:100%; background:#666; } .crumbtrail-and-search { clear:both; float:left; width:100%; background:#f0f0f0; } p.global-search-prefix { padding:5px 0px 5px 1px; float:left; } .global-search-sponsored-by { position:relative; top:-3px; } .global-search-go { float:left; margin:5px 8px 0px 0px; } .crumbtrail-prefix { float:left; padding:7px 0px 0px 0px; } .source-and-global-links-container { clear:both; float:left; width:100%; padding:8px 0px; } .global-links-seperator { padding:0px 9px 0px 7px; border-right:1px solid #b1b1b1; } .global-links-seperator-last { padding:0px 0px 0px 7px; } .text-separator { margin:0px 0px 0px 10px; border-left:1px solid #b1b1b1; padding:0px 0px 0px 10px; } .comments-pagination-links-seperator { padding:0px 4px 0px 4px; border-right:1px solid #b1b1b1; } .comments-pagination-links-seperator-last { padding:0px 0px 0px 4px; } .position-relative { position:relative; } .intro-html-container { background: #f7eebe; margin: 1px 0px 15px 0px; width: 353px; padding: 0px; } .intro-html { float: left; width: 165px; padding: 5px 0 0 15px; } img.header-quote-open { margin:0px 4px 0px 0px; } img.header-quote-close { margin:0px 8px 0px 4px; } ul { list-style-type:none; margin:0px; padding:0px; } li { display:inline; } li.block { display:block; } ol { list-style-type:decimal; list-style:inside; margin:0px; padding:0px; } form { margin:0px; padding:0px; } input, textarea, select { font-family:Arial, Helvetica, sans-serif; font-size:1.1em; } input.checkbox { margin-left:0px! important; margin-left:-4px; } .checkbox-label { float:left; display:inline; padding:2px 0px 0px 1px! important; padding:3px 0px 0px 1px; } .width-input-30 { width:30px; voice-family: "\"}\""; width:30px; } .width-input-35 { width:35px; voice-family: "\"}\""; width:35px; } .width-input-40 { width:40px; voice-family: "\"}\""; width:40px; } .width-input-50 { width:47px; voice-family: "\"}\""; width:50px; } .width-input-79 { width:79px; voice-family: "\"}\""; width:74px! important; width:72px; margin-top:1px! important; margin-top:0px; } .width-input-105 { width:105px; voice-family: "\"}\""; width:100px! important; width:98px; } .width-input-142 { width:142px; margin-top:-1px; voice-family: "\"}\""; width:138px! important; width:136px; margin-top:0px; } .width-input-152 { width:152px; margin-top:-1px; voice-family: "\"}\""; width:148px! important; width:146px; margin-top:0px; } .width-input-154 { width:154px; margin-top:-1px; voice-family: "\"}\""; width:150px! important; width:148px; margin-top:0px; } .width-input-158 { width:163px; voice-family: "\"}\""; width:158px; } .width-input-295 { width:295px; } .width-input-495 { width:495px! important; width:493px; } .width-select-40 { width:40px; voice-family: "\"}\""; width:40px; } .width-select-50 { width:47px; voice-family: "\"}\""; width:50px; } .width-select-57 { width:57px; } .width-select-60 { width:60px; voice-family: "\"}\""; width:60px; } .width-select-67 { width:67px; voice-family: "\"}\""; width:61px; } .width-select-80 { width:80px; voice-family: "\"}\""; width:77px; } .width-select-167 { width:167px; } .width-400 { width:400px; } .carousel-3-teaser-container { float:left; padding:0px 14px 0px 14px; margin:0px 0px 5px 0px; background:url(../img/global/border/carousel-divider-585.gif) repeat-y top left; } .carousel-navigation { clear:both; margin-top:1px; border-top:1px solid #d9d9d9; text-align:center; padding:2px 0px 5px 0px; } .browser-left-and-right { position:relative; top:3px; padding:0px 5px; } .midline-white-230 { background:url(../img/global/border/midline-white-230.gif) repeat-y; } .midline-white-393 { background:url(../img/global/border/midline-white-393.gif) repeat-y; } .article-author { border-bottom:1px solid #d9d9d9; padding:0px 0px 10px 0px; margin:0px 0px 5px 0px; } .reader-rating { margin:2px 0px -2px 1px; } .article-portrait-image { background:#f0f0f0; width:185px; padding:0px 0px 0px 0px; margin:0px 0px 5px 0px; } .article-portrait-image-pair { background:#fff; width:185px; margin:0px 0px 5px 0px; } .article-portrait-image-text-container { width:185px; background:#f0f0f0; } .article-landscape-image-text-container { width:385px; background:#f0f0f0; } .article-panorama-image-text-container { width:585px; background:#f0f0f0; } .pagination-container { clear:both; float:left; width:100%; background:#f0f0f0; text-align:center; } .image-navigation { border-top:1px solid #d9d9d9; padding:5px 0px 3px 0px; } .puff-sides-385 { background:url(../img/global/border/puff-sides-385.gif) repeat-y top left; } .carousel-2-teaser-container { float:left; padding:0px 14px 0px 14px; margin:3px 0px 5px 0px; background:url(../img/global/border/carousel-divider-385.gif) repeat-y top left; } .archive-2-teaser-container { float:left; padding:0px 14px 0px 0; margin:0px; background:url(http://timesonline.co.uk/tol/img/global/border/carousel-divider-385.gif) repeat-y top left; } .related-attachements-container { width:165px; margin:0px 16px 10px 0px; padding:4px 0px 0px 0px; } .related-attachements-top { background:transparent url(../img/global/border/related-attachements-top.gif) no-repeat top left; padding:0px 20px 0px 0px; } .related-attachements-top h3.section-heading { margin:0px; padding:0px; } .related-attachements-side { background:transparent url(../img/global/border/related-attachements-side.gif) repeat-y top left; } .related-attachements-bottom { background:transparent url(../img/global/border/related-attachements-bottom.gif) repeat-y top left; } .poll-result-label { width:120px; } .bg-poll { background:transparent url(../img/global/poll-blank-bar.gif) repeat-x 0px 6px; } .quote-box-left { float:left; display:inline; width:46.27%; voice-family: "\"}\""; width:49.85%; } .pagination-left { float:left; margin-top:-1.2em; } .pagination-center { text-align:center; } .pagination-right { float:right; margin-top:-1.2em; } .dotted-385-2col-divider { background:transparent url(../img/global/border/index-divider-2-col-385.gif) top left repeat-y; } .bg-grey-line-left { background:transparent url(../img/global/grey-line.gif) repeat-y top left; } .bg-grey-line-right { background:transparent url(../img/global/grey-line.gif) repeat-y top right; } .bg-grey-line-left-right { background: url(grey-line-left-right.gif); } .search-pagination-adjust { margin-top:-1.7em; } #editors-box { background:#06c; padding:6px 10px 6px 10px; } #nav-level-3 { background-color:#666; padding:6px 10px 6px 10px; } .puff-container { background:url(../img/global/border/puff-bottom.gif) no-repeat bottom left; padding-bottom:13px; margin-bottom:15px; } .puff-top { background:url(../img/global/border/puff-top.gif) repeat-x top left; margin-top: 1px; } .puff-sides { background:url(../img/global/border/puff-sides.gif) repeat-y top left; } .puff-padding { padding:6px 10px 0px 10px; } .puff-container-combine { background:none; padding-bottom:0; margin-bottom:0; zoom:1; z-index:2; } .puff-container-combine-yellow { background:none; padding-bottom:0; margin-bottom:0; zoom:1; z-index:2; } .puff-container-combine p.small{ padding-bottom:10px; } .puff-container-combine-yellow p.small{ } .puff-container-yellow { background:#f7eebe url(../assets/puff-bottom-yellow.gif) no-repeat bottom left; padding-bottom:13px; margin-bottom:15px; } .puff-container-yellow .puff-top { background-image:none; } .puff-container-combine-yellow .puff-top { background:#f7eebe url(puff-top-yellow.gif) repeat-x bottom left; } .puff-container-yellow .puff-sides, .puff-container-combine-yellow .puff-sides { background-image:none; } .puff-container-yellow .puff-padding { padding:6px 10px 0px 10px; } .blue-chevron-list-left{ background:url(../img/global/button/button-left.gif) no-repeat top left; height:16px; padding-left:20px; } .blue-chevron-list-right{ background:url(../img/global/button/button-right.gif) no-repeat top right; height:16px; padding-right:20px; } .bg-picture-gallery-top { background:transparent url(../img/global/bg-picture-gallery-top.gif) no-repeat top left; padding:6px 10px 0px 10px; } .bg-picture-gallery-bottom { background:transparent url(../img/global/bg-picture-gallery-bottom.gif) no-repeat top left; height:20px; margin:-8px 0px 15px 0px; } .dotted-585-right { background:transparent url(../img/global/border/index-divider-585-right.gif) top left repeat-y; } .dotted-585-left { background:transparent url(../img/global/border/index-divider-585-left.gif) top left repeat-y; } .dotted-585-both { background:transparent url(../img/global/border/index-divider-585-both.gif) top left repeat-y; } .advert-long-container { float:right; width:160px; } .reports-container { margin:0px 0px 10px 0px; border:1px solid #d9d9d9; background:#fff; padding:5px 9px 4px 9px; width:336px; voice-family: "\"}\""; width:316px; } .reports-container h3.section-heading { padding:0px; } .reports-long-container { float:left; display:inline; background:#fff; border:1px solid #d9d9d9; padding:0px; width:160px; voice-family: "\"}\""; width:158px; } .reports-long-container h3.section-heading { padding:5px 9px 7px 9px; } .puff-square { margin-bottom:10px; float:left; border:1px solid #d9d9d9; background:#fff; width:336px; voice-family: "\"}\""; width:334px; } .puff-square-non-grey { margin-bottom:10px; float:left; border:1px solid #d9d9d9; background:#fff; width:356px; voice-family: "\"}\""; width:354px; } .puff-square-high-impact { margin-bottom:10px; float:left; width:336px; background:#06c; } .puff-square-high-impact-non-grey { margin-bottom:10px; float:left; width:356px; background:#06c; } #grid-column4-non-grey .puff-square-high-impact { width:355px; } .superpuff-bottom { float:left; width:356px; height:13px; margin-top:-14px; background:url(../img/global/border/puff-bottom-356.gif) no-repeat bottom right; } .quick-links-container { background:#fff; border:1px solid #d9d9d9; margin-bottom:10px; } a.lowercase-white-tab, a.lowercase-white-tab:active, a.lowercase-white-tab:visited { color:#06c; padding:0px 12px 0px 0px; margin:0px; cursor:pointer; } a.lowercase-white-tab:hover { text-decoration:underline; } a.lowercase-white-tab-selected, a.lowercase-white-tab-selected:active, a.lowercase-white-tab-selected:visited, a.lowercase-white-tab-selected:hover { color:#666; background:#fff url(../img/global/quicklinks-marker.gif) no-repeat center right; padding:0px 12px 0px 0px; margin:0px; text-decoration:none; cursor:text; } .classifieds-container { background:transparent url(../img/global/border/sketch-top-336.gif) no-repeat left top; } .classifieds-sides { background:transparent url(../img/global/border/sketch-sides-336.gif) repeat-y left top; } .classifieds-sides-fff { margin-top:-1px; background:transparent url(../img/global/border/classifieds-sides-336-fff.gif) repeat-y left top; } .classifieds-bottom { background:transparent url(../img/global/border/sketch-bottom-336.gif) no-repeat left top; } .classifieds-vertical { background:transparent url(../img/global/border/puff-vertical.gif) repeat-y left top; } .classifieds-vertical-right { background:transparent url(../img/global/border/puff-vertical.gif) repeat-y right top; } .classifieds-width-70 { width:75px! important; width:70px; } .classifieds-links { border-bottom:1px solid #d9d9d9; padding:0px 0px 0px 0px; margin-right:1px; } .classifieds-long-container { width:160px; background:transparent url(../img/global/border/sketch-top-160.gif) no-repeat left top; } .classifieds-long-sides { background:transparent url(../img/global/border/sketch-sides-160.gif) repeat-y left top; } .classifieds-long-bottom { background:transparent url(../img/global/border/sketch-bottom-160.gif) no-repeat left top; } .classifieds-long-sides .classifieds-long { width:65px; } .classifieds-narrow-container { background:transparent url(../img/global/border/sketch-top-185.gif) no-repeat left top; margin:0px 0px 10px 0px; width:185px; } .classifieds-narrow-sides { background:transparent url(../img/global/border/sketch-sides-185.gif) repeat-y left top; } .classifieds-narrow-bottom { background:transparent url(../img/global/border/sketch-bottom-185.gif) no-repeat left top; } .classifieds-narrow-sides .classifieds-narrow { width:80px; } .classifieds-single-container { margin:0px 0px 5px 0px! important; margin:0px; } .classifieds-label { text-align:right; width:108px; voice-family: "\"}\""; width:100px; } .classifieds-label-mini { text-align:right; width:43px; voice-family: "\"}\""; width:37px; } .classifieds-single-container select { width:142px } .classifieds-single-container .mini select { width:80px } .classifieds-shadow-top { height:13px! important; height:5px; background:transparent url(../img/global/border/classifieds-shadow-top.gif) 0px 0px no-repeat; margin-bottom:-3px; } .classifieds-shadow-sides { background:transparent url(../img/global/border/classifieds-shadow-sides.gif) 0 0 repeat-y; padding-right:12px; } .classifieds-shadow-sides-fff { background:transparent url(../img/global/border/classifieds-shadow-sides-fff.gif) 0 0 repeat-y; padding-right:12px; } .classifieds-shadow-bottom { height:6px; background:transparent url(../img/global/border/classifieds-shadow-bottom.gif) 0px 0px no-repeat; margin-bottom:0px; } select.width-input-100 { width:99px; voice-family: "\"}\""; width:94px! important; width:98px; } input.width-input-100 { width:99px; voice-family: "\"}\""; width:94px! important; width:92px; } #scheduler-links { padding-top:0px! important; padding-top:2px; } .puff-sides-356 { background:url(../img/global/border/puff-sides-356.gif) repeat-y top left; } .puff-sides-336 { background:url(../img/global/border/puff-sides-336.gif) repeat-y top left; } .debate-quote-container { background:url(../img/global/border/puff-debate-bottom.gif) no-repeat bottom right; padding-bottom:15px; } .author-box { border:1px solid #d9d9d9; padding:2px 3px 2px 3px; } .midline-grey-393 { background:url(../img/global/border/midline-grey-393.gif) repeat-y; } .a2z-header { padding: 10px 0 20px; border-top: 1px solid #b1b1b1; font-family: georgia,serif; font-size: 1.5em; text-transform: uppercase; font-weight: bold; } .a2z-archive-header { padding: 10px 0 20px; font-family: georgia,serif; font-size: 1.5em; text-transform: uppercase; font-weight: bold; } .a2z-letters { padding: 10px 0; border-top: 1px solid #b1b1b1; border-bottom: 1px solid #b1b1b1; font-family: georgia,serif; font-size: 1.5em; text-transform: uppercase; font-weight: bold; letter-spacing: 1pt; } .a2z-selected-letter { padding: 15px 0px 2px; font-family: georgia,serif; font-size: 1.5em; text-transform: uppercase; font-weight: bold; } .a2z-column { float: left; margin: 0px 15px 0px 0px; padding: 0; width: 175px; } .a2z-column p { margin: 0; padding: 0; } .gallery-image-background { height:385px; background:transparent url(../img/global/border/picture-gallery.gif) no-repeat top left; } .gallery-image-background img { position:relative; top:0px; left:0px; } .grey-filter { margin-left:2px; margin-right:2px; height:50px; width:50px; } .gallery-target { background:transparent url(../img/global/gallery-target.gif) no-repeat top left; height:52px; width:52px; } .gallery-target img { margin:1px; } .popup-skyscraper { position:absolute; top:10px; right:10px; } .popup-variable-width { margin-right:175px; } .dark-tab-links { border-bottom:1px solid #666; padding:0px 0px 0px 0px; margin-right:4px; } .dark-shadow-segment { background:transparent url(../img/global/border/shadow-sides-336.gif) 0 0 repeat-y; } .dark-shadow-header { background:transparent url(../img/global/border/shadow-header-336.gif) 0px 0px repeat-y; } .dark-shadow-footer { background:transparent url(../img/global/border/shadow-footer-336.gif) 0px 0px no-repeat; } .dark-tab-links-wide { border-bottom:1px solid #999; padding:0px 0px 0px 0px; margin-right:5px; } .dark-shadow-segment-wide { background:transparent url(../img/global/border/shadow-sides-wide-356.gif) 0px 0px repeat-y; } .dark-shadow-header-wide { background:transparent url(../img/global/border/shadow-header-wide-356.gif) 0px 0px repeat-y; } .dark-shadow-footer-wide { background:transparent url(../img/global/border/shadow-footer-wide-356.gif) 0px 0px no-repeat; } .dark-tab { color:#000; background:#d9d9d9; margin:0px 5px 0px 0px; padding:6px 6px 3px 7px; float:left; border:1px solid #d9d9d9; border-bottom:0px; cursor:hand; voice-family: "\"}\""; cursor:pointer; } .dark-tab-simulated { color:#fff; background:#999; margin:0px 5px 0px 0px; padding:6px 6px 3px 7px; float:left; border:1px solid #999; border-bottom:0px; cursor:hand; voice-family: "\"}\""; cursor:pointer; } .dark-tab-selected { color:#000; background:#fff; margin:0px 5px -1px 0px; padding:6px 6px 4px 7px; float:left; border:1px solid #999; border-bottom:0px; } .light-links { border-bottom:1px solid #d9d9d9; padding:0px 0px 0px 0px; margin-right:1px; } .light-tab { color:#000; background:#d9d9d9; margin:0px 5px 0px 0px; padding:6px 8px 3px 9px; float:left; border:1px solid #d9d9d9; border-bottom:0px; cursor:hand; voice-family: "\"}\""; cursor:pointer; } .light-tab-simulated { color:#fff; background:#999; margin:0px 5px 0px 0px; padding:6px 8px 3px 9px; float:left; border:1px solid #999; border-bottom:0px; cursor:hand; voice-family: "\"}\""; cursor:pointer; } .light-tab-selected { color:#000; background:#fffef5; margin:0px 5px -1px 0px; padding:6px 8px 4px 9px; float:left; border:1px solid #d9d9d9; border-bottom:0px; } .white-tab { color:#000; background:#d9d9d9; padding:6px 0px 5px 4px! important; padding:6px 0px 5px 5px; margin:0px 0px 4px 4px! important; margin:0px 0px 2px 2px; float:left; cursor:hand; width:75px; voice-family: "\"}\""; width:70px; cursor:pointer; } .white-tab-simulated { color:#fff; background:#999; padding:6px 0px 5px 4px! important; padding:6px 0px 5px 5px; margin:0px 0px 4px 4px! important; margin:0px 0px 2px 2px; float:left; cursor:hand; width:75px; voice-family: "\"}\""; width:70px; cursor:pointer; } .white-tab-selected { color:#000; background:#fffef5 url(../img/global/classified-marker.gif) no-repeat center right; padding:6px 0px 5px 4px! important; padding:6px 0px 5px 5px; margin:0px 0px 4px 4px! important; margin:0px 0px 2px 2px; float:left; width:75px; voice-family: "\"}\""; width:70px; } .white-line { border-bottom:1px solid #fff; margin-bottom:4px; } .grey-line { border-bottom:1px solid #d9d9d9; margin-bottom:4px; } .grey-line-left { border-left:1px solid #d9d9d9; } .yellow-line { border-bottom:2px solid #f7eebe; margin-bottom:4px; } .curved-seperator-3-col { background:url(../img/global/seperator/page-end-585.gif) no-repeat bottom left; padding-bottom:9px; margin-bottom:15px; } .curved-seperator-2-col { background:url(../img/global/seperator/page-end-385.gif) no-repeat bottom left; padding-bottom:9px; margin-bottom:15px; } .link-seperator-first { padding:0px 5px 0px 5px; voice-family: "\"}\""; padding:0px 5px 0px 0px; } .link-seperator { padding:0px 5px 0px 5px; border-left:1px solid #b1b1b1; voice-family: "\"}\""; padding:0px 5px 0px 7px; } .link-seperator-sortby-last a, a:visited{ color:#06c; text-decoration:none; } .link-seperator-sortby-last a:hover{ color:#06c; text-decoration:underline; } * html .link-seperator-sortby-last{ padding:0px 5px 0px 7px;; } .link-seperator-sortby-last { padding:0px 5px 0px 5px; voice-family: "\"}\""; padding:0px 5px 0px 0px; } html>body .link-seperator-sortby-last{ *padding:0px 5px 0px 7px; } * html .link-seperator-sortby{ padding:0px 5px 0px 7px;; } .link-seperator-sortby a, a:visited{ color:#06c; text-decoration:none } .link-seperator-sortby a:hover{ color:#06c; text-decoration:underline; } .link-seperator-sortby { padding:0px 5px 0px 5px; border-right:1px solid #b1b1b1; voice-family: "\"}\""; padding:0px 5px 0px 0px; } html>body .link-seperator-sortby-last{ *padding:0px 5px 0px 7px; } .link-seperator-slash { background:transparent url(../img/global/slash.gif) no-repeat 95% 50%; border:1px solid #f0f0f0; padding:0px 7px 0px 0px; voice-family: "\"}\""; background:transparent url(../img/global/slash.gif) no-repeat 98% 50%!important; background:transparent url(../img/global/slash.gif) no-repeat 90% 50%; padding:0px 11px 0px 0px; } .link-seperator-slash-last { padding:0px 7px 0px 0px; voice-family: "\"}\""; padding:0px 11px 0px 0px; } .border-d9d9d9 { border:1px solid #d9d9d9; } .border-fff { border:1px solid #fff; } .border-f5f5f5 { border:1px solid #f0f0f0; } .border-top-d9d9d9 { border-top:1px solid #d9d9d9; } .border-bottom-d9d9d9 { border-bottom:1px solid #d9d9d9; } .border-right-d9d9d9 { border-right:1px solid #d9d9d9; } .border-left-d9d9d9 { border-left:1px solid #d9d9d9; } .invisible-border { border:1px solid #f7eebe; } .padding-top-1 { padding-top:1px; } .padding-top-2 { padding-top:2px; } .padding-top-3 { padding-top:3px; } .padding-top-4 { padding-top:4px; } .padding-top-5 { padding-top:5px; } .padding-top-6 { padding-top:6px; } .padding-top-7 { padding-top:7px; } .padding-top-9 { padding-top:9px; } .padding-top-10 { padding-top:10px; } .padding-top-11 { padding-top:11px; } .padding-top-8 { padding-top:8px; } .padding-top-15 { padding-top:15px; } .padding-top-16 { padding-top:16px; } .padding-top-19 { padding-top:19px; } .padding-top-20 { padding-top:20px; } .margin-top-4 { margin-top:4px; } .margin-top-15 { margin-top:15px; } .margin-top-10 { margin-top: 10px; } .padding-right-1 { padding-right:1px; } .padding-right-3 { padding-right:3px; } .padding-right-2 { padding-right:2px; } .padding-right-4 { padding-right:4px; } .padding-right-5 { padding-right:5px; } .padding-right-7 { padding-right:7px; } .padding-right-9 { padding-right:9px; } .padding-right-10 { padding-right:10px; } .padding-bottom-3 { padding-bottom:3px; } .padding-bottom-5 { padding-bottom:5px; } .padding-bottom-7 { padding-bottom:7px; } .padding-bottom-8 { padding-bottom:8px; } .padding-bottom-9 { padding-bottom:9px; } .padding-bottom-10 { padding-bottom:10px; } .padding-bottom-13{ padding-bottom:13px; } .padding-bottom-15 { padding-bottom:15px; } .padding-left-2 { padding-left:2px; } .padding-left-3 { padding-left:3px; } .padding-left-4 { padding-left:4px; } .padding-left-5 { padding-left:5px; } .padding-left-6 { padding-left:6px; } .padding-left-9 { padding-left:9px; } .padding-left-10 { padding-left:10px; } .padding-left-11 { padding-left:11px; } .padding-left-14 { padding-left:14px; } .padding-left-15 { padding-left:15px; } .padding-left-20 { padding-left:20px; } .padding-left-26 { padding-left:26px; } .padding-left-27 { padding-left:27px; } .padding-left-29 { padding-left:29px; } .padding-left-31 { padding-left:31px; } .padding-top-5-bottom-4 { padding-top:5px; padding-bottom:4px; } .padding-left-right-1 { padding-left:1px; padding-right:1px; } .padding-left-right-5 { padding-left:5px; padding-right:5px; } .padding-left-right-7 { padding-left:7px; padding-right:7px; } .padding-left-right-9 { padding-left:9px; padding-right:9px; } .padding-left-right-10 { padding-left:10px; padding-right:10px; } .padding-left-right-14 { padding-left:14px; padding-right:14px; } .padding-2 { padding:2px; } .padding-4 { padding:4px; } .padding-9 { padding:9px; } .padding-10 { padding:10px; } .margin-bottom-0 { margin-bottom:0px; } .margin-right-1 { margin-right:1px; } .margin-right-4 { margin-right:4px; } .margin-right-10 { margin-right:10px; } .margin-right-15 { margin-right:15px; } .margin-right-18 { margin-right:18px; } .margin-bottom-1-left-1 { margin-bottom:1px; margin-left:1px; } .margin-bottom-3 { margin-bottom:3px; } .margin-bottom-5 { margin-bottom:5px; } .margin-bottom-10 { margin-bottom:10px; } .margin-bottom-15 { margin-bottom:15px; } .margin-bottom-20 { margin-bottom:20px; } .margin-bottom-minus-4 { margin-bottom:-4px; } .margin-top-4 { margin-top:4px; } .margin-top-5 { margin-top:5px; } .margin-top-15 { margin-top: 15px; } .margin-top-9 { margin-top: 9px; } .margin-top-point9-em { margin-top:0.9em; } .margin-top-minus-22 { margin-top:-22px; } .margin-top-minus-20 { margin-top:-20px; } .margin-top-minus-10 { margin-top:-10px; } .ie-margin-top-minus-10 { margin-top:expression('-10px'); } .width-25 { width:25px; } .width-46 { width:46px; } .width-60 { width:60px; } .width-65 { width:65px; } .width-70 { width:70px; } .width-80 { width:80px; } .width-90 { width:90px; } .width-95 { width:95px; } .width-100 { width:100px; } .width-105 { width:105px; } .width-112 { width:112px; } .width-115 { width:115px; } .width-120 { width:120px; } .width-135 { width:135px; } .width-145 { width:145px; } .width-155 { width:155px; } .width-157 { width:157px; } .width-159 { width:159px; } .width-160 { width:160px; } .width-165 { width:165px; } .width-169 { width:169px; } .width-170 { width:170px; } .width-171 { width:171px; } .width-173 { width:173px; } .width-175 { width:175px; } .width-182 { width:182px; } .width-184 { width:184px; } .width-185 { width:185px; } .width-189 { width:189px; } .width-191 { width:191px; } .width-194 { width:194px; } .width-200 { width:200px; } .width-215 { width:215px; } .width-220 { width:220px; } .width-236 { width:236px; } .width-251 { width:251px; } .width-260 { width:260px; } .width-284 { width:284px; } .width-285 { width:285px; } .width-286 { width:286px; } .width-295 { width:295px; } .width-300 { width:300px; } .width-302 { width:302px; } .width-305 { width:305px; } .width-315 { width:315px; } .width-316 { width:316px; } .width-336 { width:336px; } .width-353 { width:353px; } .width-356 { width:356px; } .width-365 { width:365px; } .width-380 { width:380px; } .width-383 { width:383px; } .width-385 { width:385px; } .width-400 { width:400px; } .width-405 { width:405px; } .width-410 { width:410px; } .width-500 { width:500px; } .width-570 { width:570px; } .width-580 { width:580px; } .width-585 { width:585px; } .width-728 { width:728px; } .width-100-percent { width:100%; } .height-100 { height:100px; } .quickLinkWidth {width: 330px;} .activeblocks{ display:none; height:100px; width:315px; } .padding-bottom-most-read{ padding-bottom:8px; } * html .padding-bottom-most-read{ padding-bottom:5px; } html>body .padding-bottom-most-read{ *padding-bottom:5px; } .off-left { position: absolute; left: -999px; width: 990px; } .bold { font-weight:bold; } .height-100-percent { height:100%; } .height-150{ height:150px; } .height-125{ height:125px; } .grey-dotted-line{ background:url(../img/global/border/puff-top.gif) repeat-x bottom left; } .padding-left-70{ padding-left:70px; } .puff-sides-seprator{ background:url(../img/global/border/puff-sides.gif) repeat-y top left; margin-left:15px; padding-left:15px; } .yellow-thick-line{ border-bottom:3px solid #f7eebe; } .font-size-1-1em{ font-size:1.1em; } #leftColumn #resultsPagination { border-bottom:1px solid #ccc; border-top:1px solid #ccc; padding:10px 0; width: 385px; text-align:right; } #Changed for defect artf563337 .resultspaginationborder { border-bottom:1px solid #ccc; border-top:1px solid #ccc; padding:10px 0; width: 385px; text-align:left; } * html .padding-left-8-1 { padding-left:1px; } .padding-left-8-1 { padding-left:8px; } .margin-5{ margin:5px; } .margin-0{ margin:0; } .puff-top-no-padding { background:url(../img/global/border/puff-top.gif) repeat-x top left; margin-top: 1px; padding-top:0px; }.margin-bottom-minus-2{ margin-bottom:-2px; } .margin-left-minus-2{ margin-left: -2px; } .margin-left-4{ margin-left: 4px; } .margin-right-6{ margin-right: 6px; } a.link-000-no-underline:hover, a.link-000-no-underline:active { color:#06c; text-decoration:none; } a.link-000-no-underline, a.link-000-no-underline:visited { text-decoration:none; color:#000; } .link-separator-sort-by { padding:0 5px 0 5px; border-right:1px solid #ccc; } .link-separator-sort-by-last{ padding:0 5px 0 5px; border-right:none; padding-right:0; } .search-seperator { padding-left:1px; padding-right:1px; color:#b1b1b1; font-family:Arial, Helvetica, sans-serif; font-size:1.3em; } .padding-top-4{ padding-top:4px; } .padding-top-12{ padding-top:12px; } .margin-top-neg-1{ margin-top:-1px; } .margin-top-neg-3{ margin-top:-3px; } .margin-top-neg-4{ margin-top:-4px; } .margin-bottom-neg-1{ margin-bottom:-1px; } .padding-top-13{ padding-top:13px; } .padding-left-107 { padding-left: 107px; } .related-attachements-sepia-top { background:transparent url(../img/global/border/related-attachements-sepia-top.gif) no-repeat scroll left top; padding:0px 20px 0px 0px; } .related-attachements-sepia-dark { background:transparent url(../img/global/border/related-attachements-sepia-dark.gif) no-repeat scroll left top; padding:0px 20px 0px 0px; } .tolgallery-landscape-image-text { width:306px; background:#1a1a1a; text-align:left; } .tolgallery-pagination-container { clear:both; width:585px; background:#000000; text-align:center; float:left; } .tolgallery-x-of-y { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-weight:bold; font-size:1.1em; line-height:1.2em; letter-spacing:-0.4pt; color:#fff; } .g-text { font-size:1.0em; font-weight:bold; line-height:1.1em; text-decoration:none; text-transform:lowercase; color:#fff; } .g-text-large { font-family:Georgia, Times New Roman, Times, serif; font-size:2.2em; line-height:1.1em; font-weight:normal; color:#fff; } .g-text-large-title { font-family:Georgia, Times New Roman, Times, serif; font-size:1.5em; line-height:1.0em; font-weight:normal; color:#fff; text-transform:uppercase; } .tolgallery-bg-top { background:#000000 url(../img/global/tolg_bg_top_351292a.gif) no-repeat bottom left; } .tolgallery-bg-bottom { background:#000000 url(../img/global/tolg_bg_bottom_351293a.gif) no-repeat top left; } #gallery-column1-layout2 { width:1000px; margin:0px; padding:0px; float:left } .height-85 { height:85px; } .padding-left-36 { padding-left:36px; } .padding-top-20 { padding-top:20px; } .padding-left-18 { padding-left:18px; } .padding-top-36 { padding-top:36px; } .padding-right-20 { padding-right:20px; } .padding-right-36 { padding-right:36px; } .height-435 { height:435px; } .height-445 { height:445px; } .height-100 { height:100px; } .width-655 { width:655px; } .padding-top-25 { padding-top:25px; } .padding-bottom-20 { padding-bottom:20px; } .text-0066cc { margin:0px 0px 12px 0px; padding:0px; font-family:Arial, Helvetica, sans-serif; font-size:1.2em; line-height:1.2em; color:#0066cc; } .border-bottom-666 { border-bottom:1px solid #666666; } .border-left-666 { border-left:1px solid #666666; } .border-right-666 { border-right:1px solid #666666; } .width-133 { width:133px; } .width-138 { width:138px; } .width-170 { width:170px; } .width-276 { width:276px; } .width-234 { width:234px; } .padding-top-30 { padding-top:32px; } .padding-right-6 { padding-right:6px; } .padding-right-11 { padding-right:11px; } .bg-409 { background-color:#4095CB; } .bg-477 { background-color:#477694; } .bg-DE2 { background-color:#DE2128; } .bg-85 { background-color:#85AD55; } .bg-964 { background-color:#96468B; } .bg-3F8 { background-color:#3F8724; } .bg-E48 { background-color:#E48608; } .bg-409 { background-color:#4095CB; } .padding-right-8 { padding-right:8px; } .padding-left-8 { padding-left:8px; } .width-103 { width:103px; } .width-222 { width:222px; } .width-334 { width:334px; } .width-475 { width:475px; } a.link-7b7, a.link-7b7:visited { text-decoration:none; color:#0066cc; } a.link-7b7:hover, a.link-7b7:active { color:#06c; text-decoration:underline; } a.link-7b71, a.link-7b71:visited { text-decoration:none; color:#7b7b7b; } a.link-7b71:hover, a.link-7b71:active { color:#06c; text-decoration:underline; } .text-7b7b7b { margin:0px 0px 12px 0px; padding:0px; font-family:Arial, Helvetica, sans-serif; font-size:1.2em; line-height:1.2em; color:#7B7B7B; } .cite { color:green; font-style:normal; } .header-quote-open { background: url(/tol/img/global/quote-left-red-beige-bg.gif) no-repeat 4px 6px; } .header-quote-close { background: url(/tol/img/global/quote-right-red-beige-bg.gif) no-repeat 4px 6px; } .overflow-hidden { overflow: hidden; } .height-70 { height:70px; } #dynamic-video-holder { height: expression( document.getElementById("dynamic-video-holder").scrollHeight > 367 ? "368px" : "auto" ); max-height:368px; } .coloumnDruL { float:left; padding: 0 10px 0 0; } .coloumnDru { float:left; padding: 0 10px 0 10px; border-left:1px #ccc dashed; border-right:1px #ccc dashed; } .coloumnDruR { float:left; padding: 0 0 0 10px; } .coloumnDruTop{ padding: 10px 0 0 0; } .coloumnDruInn { width:181px; } .DruHeader1 { font-family:Arial,Helvetica,sans-serif;; font-weight: normal; font-size:1.5em; line-height:1.1em; color:#CC0000; text-decoration:none; text-align:left; } .DruHeader1 a { color:#0066cc; text-decoration:none } .DruHeader1 a:hover { color:#0066cc; text-decoration:underline } .DruHeader2 { font-family:Arial,Helvetica,sans-serif;; font-weight:normal; ;font-size:0.9em; line-height:1.1em; color:#CC0000; text-decoration:none; text-align:left; } .DruHeader2 a { color:#0066cc; text-decoration:none } .DruHeader2 a:hover { color:#0066cc; text-decoration:underline } .DruHeader3 { font-family:Arial,Helvetica,sans-serif;; font-weight: normal; font-size:1.1em; word-wrap:break-word; line-height:1.1em; color:#CC0000; text-decoration:none; text-transform:uppercase; text-align:left; } .DruHeader3 a { color:#0066cc; text-decoration:none } .DruHeader3 a:hover { color:#0066cc; text-decoration:underline } .DruHeader4 { font-family:Arial,Helvetica,sans-serif;; font-weight: normal; font-size:1.7em; word-wrap:break-word; line-height:1em; color:#CC0000; text-decoration:none; text-transform:uppercase; text-align:left; } .DruHeader4 a { color:#0066cc; text-decoration:none } .DruHeader4 a:hover { color:#0066cc; text-decoration:underline } .DruHeader5 { font-family:Arial,Helvetica,sans-serif;; font-weight: normal; font-size:1.9em; word-wrap:break-word; line-height:1em; color:#CC0000; text-decoration:none; text-transform:uppercase; text-align:left; } .DruHeader5 a { color:#0066cc; text-decoration:none } .DruHeader5 a:hover { color:#0066cc; text-decoration:underline } .DruByline { font-family:Arial,Helvetica,sans-serif;; font-size:0.9em; color:#666666; padding-top: 3px; padding-bottom:14px; } .DruImage {padding-bottom:4px;} .DruBottom { padding-bottom:6px; border-bottom:1px #ccc solid; margin-bottom:6px; clear:both; } .global-comment-seperator { padding:0px 6px 0px 3px; border-right:1px solid #b1b1b1; } .global-comment-seperator-last { padding:0px 0px 0px 3px; } .comment-grey-line { border-bottom:1px solid #d9d9d9; } .border-right-b1b1b1 { border-right:1px solid #b1b1b1; } ul li.comment-email { display:block; background-repeat:no-repeat; background-position:0px 1px; padding:2px 0px 1px 19px; font-size:0.9em; line-height:1.1em; text-transform:uppercase; background-image:url(../img/global/icon/14x14-email.gif); } /*.bg-submit { background:#fff url(http://www.timesonline.co.uk/multimedia/archive/00549/comment_bg_549102a.gif) no-repeat top; width:365px; height:263px; }*/ .height-20 { height:20px; } .your-comment { display:block; background-repeat:no-repeat; background-position:0px 1px; padding:2px 0px 1px 19px; font-size:0.9em; line-height:1.1em; text-transform:uppercase; background-image:url(../img/global/icon/14x14-send-your-views-white.gif); } .print-comment { display:block; background-repeat:no-repeat; background-position:0px 1px; padding:2px 0px 1px 19px; font-size:0.9em; line-height:1.1em; text-transform:uppercase; background-image:url(../img/global/icon/14x14-print.gif); } .comment-border-right { border-right:1px solid #b1b1b1; } div#related-article-links p a, div#related-article-links p a:visited { color:#06c; } div.hiddenDivComments{ visibility: hidden;} .bg-shadow { background:transparent url(http://www.timesonline.co.uk/multimedia/archive/00497/bg_shadow_grey_497252a.gif) repeat bottom } .bgd-graphs-361 {width:402px; border: 1px solid #d9d9d9; float:left;} .bgd-graphs-white-361 {width:402px; border: 1px solid #d9d9d9; float:left; background-color:#fff;} .height-20 { height:20px; } .comment-border-right { border-right:1px solid #b1b1b1; } .border-top-b1b { border-top:1px solid #b1b1b1; } .border-top-d9d { border-top:1px solid #d9d9d9; } .comment-filter { filter: progid:DXImageTransform.Microsoft.Shadow(color=#888888,direction=135,strength=9); } .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; min-height:100%; background-color: white; z-index:1001; -moz-opacity: 0.5; opacity:.50; filter: alpha(opacity=50); } .white_content { display: none; position: absolute; left: 35%; z-index:1002; overflow: auto; } .bgd-graphs-white-361 { width:402px; border: 1px solid #d9d9d9; float:left; background-color:#fff; } .bg-shadow-reg { background:transparent url(../img/global/comment_bg_fade_reg.gif) repeat bottom } ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=ie.css Content-Type: text/css; charset=ISO-8859-1; name=ie.css Content-Location: http://business.timesonline.co.uk/tol/css/ie.css Content-Transfer-Encoding: 8bit *html #competition { height:9.35em; } *html #property { height:9em; } *html #classifieds { height:9.7em; } *html #classifieds ul { margin:0px 0px 0px 15px; } *html #front-page-frontpage, *html #front-page-breaking, *html #front-page-pick { height:4.5em; overflow:visible; } *html #reports { padding:2px 0px 2px 8px; height:4em; overflow:visible; } *html #reports ul.reports { margin:2px 0px 10px 2px; padding:0px 0px 0px 0px; list-style-position:inside; list-style-image:url(../img/global/chevron16.gif); } *html #reports h3.also { padding-left:2px; color:#666; } *html .special-heading { padding:5px 0px 0px 0px; } *html #related-topic-box { padding:2px 0px 5px 8px; height:4em; overflow:visible; } *html #related-topic-box ul.topic { margin:2px 0px 10px 0px; padding:0px 0px 0px 0px; list-style-position:inside; list-style-image:url(../img/global/chevron16.gif); } *html #related-topic-box ul.left { float:left; width:160px; } *html #related-topic-box ul.right { float:right; width:180px; } ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=primary-nav-pipe.gif Content-Type: image/gif; name=primary-nav-pipe.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/primary-nav-pipe.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAOAIAAALGxsQAAACH5BAAAAAAALAAAAAABAA4AAAIDhI9YADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=chevron-small-links.gif Content-Type: image/gif; name=chevron-small-links.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/list/chevron-small-links.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAIAMQWAABxygBhwQCC0gBRud/y+5nF64LE6nrH7Oz3/BRcvrvi9QRL tman4Mbf9EKU2M3k9kC15mmz5EyR1l+n3w+X3Eug3v///wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAABYALAAAAAAFAAgAAAUdIERY5EEpJCIIBhkBQGVN QeA8w8BY0lKQiQbJEgIAOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=14x14-contact-us.gif Content-Type: image/gif; name=14x14-contact-us.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/icon/14x14-contact-us.gif Content-Transfer-Encoding: Base64 R0lGODlhDgAOAMQAAANz0djs+ZvQ8CeR2wCH2EOt5P///6/b8y2o43y450iW3BCV 3H/I7b/f9Bh/1QCb3+/3/GC25xCf4ECh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAOAA4AAAV7oCFCAvKcD3KIYiNJTCAG jBSJRyqzsyRAiwXEEIgUjAVBjUEQGA7BQ4FACAQIA4IB2DRMESLqxMBcbKnOK2E8 WRsE1KEgOzC02W7I4DAAQBgAAAN9DgkDCQYJAIgHCQ1vCQk7Bn1OPDMsEAoAEZMB CQ6TBg2bgQCFQwYhADs= ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=chevron-small-links-white.gif Content-Type: image/gif; name=chevron-small-links-white.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/list/chevron-small-links-white.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAIAMQTAP///7TS8DmI15nC66DG7DKE1r/Z8r3X8n2x5YW25/D2/LPR 8Gaj4ESP2vv9/pbA6uvz+yB50hNx0ABmzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAABMALAAAAAAFAAgAAAUaoBFNZKI0pAQACPmswUSs R7EO0+IwJCSQkxAAOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=chevron-back-to-top.gif Content-Type: image/gif; name=chevron-back-to-top.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/chevron-back-to-top.gif Content-Transfer-Encoding: Base64 R0lGODlhCAAFAMQWAOz3/N/y+0ug3mmz5JnF6wRLtkC15kyR1g+X3BRcvoLE6s3k 9kKU2HrH7Gan4F+n38bf9Lvi9QBRuQCC0gBhwQBxyv///wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAABYALAAAAAAIAAUAAAUaoCUygmg6VKWYhJROkQUV 0jNMSJAciwg0hhAAOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=double-chevron-blue.gif Content-Type: image/gif; name=double-chevron-blue.gif Content-Location: http://business.timesonline.co.uk/tol/img/global/list/double-chevron-blue.gif Content-Transfer-Encoding: Base64 R0lGODlhDAAIAMQWAABxygBhwQCC0gBRud/y+5nF64LE6nrH7Oz3/BRcvrvi9QRL tman4Mbf9EKU2M3k9kC15mmz5EyR1l+n3w+X3Eug3v///wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAABYALAAAAAAMAAgAAAUyIERYJCmWB6WUVrpaiCAY ZTyTEQBUZb5bk0DAUQoOH4MBo4RUWiSLAgsqtSQaLCuWFAIAOw== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=typography.css Content-Type: text/css; charset=ISO-8859-1; name=typography.css Content-Location: http://business.timesonline.co.uk/tol/css/typography.css Content-Transfer-Encoding: 8bit p { margin:0px 0px 12px 0px; padding:0px; font-family:Arial, Helvetica, sans-serif; font-size:1.2em; line-height:1.2em; } p.no-margin { margin:0px 0px 0px 0px; } .p-style-in-ol { font-family:Arial, Helvetica, sans-serif; font-size:1.0em; line-height:1.2em; } .small { margin:0px; padding:0px; font-size:1.1em; line-height:1.2em; } .x-small { margin:0px; padding:0px; font-size:1.0em; line-height:1.15em; } .x-smaller { font-size:0.9em; line-height:1.1em; } a, a:visited { text-decoration:none; } a:hover, a:active { text-decoration:underline; } a.primary-link, a.primary-link:visited { padding:9px 8px 9px 8px; color:#333; background:#d9d9d9 url(../img/global/primary-nav-pipe.gif) no-repeat right; font-family:Georgia, Times New Roman, Times, serif; font-weight:bold; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; display:block; float:left; white-space:nowrap; } a.primary-link:hover, a.primary-link:active { background:#999; color:#fff; text-decoration:underline; } a.primary-link-no-pipe, a.primary-link-no-pipe:visited { padding:9px 8px 9px 8px; color:#333; background:#d9d9d9; font-family:Georgia, Times New Roman, Times, serif; font-weight:bold; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; display:block; float:left; white-space:nowrap; } a.primary-link-no-pipe:hover, a.primary-link-no-pipe:active { color:#fff; background:#999; text-decoration:underline; } a.primary-selected, a.primary-selected:visited, a.primary-selected:hover, a.primary-selected:active { padding:9px 8px 9px 8px; color:#cf0; background:#666; font-family:Georgia, Times New Roman, Times, serif; font-weight:bold; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; display:block; float:left; white-space:nowrap; } a.primary-special, a.primary-special:visited { margin-top:4px; padding:5px 8px; color:#fff; background:#d9d9d9 url(../img/global/primary-special-bg.gif) repeat-x top left; font-family:Georgia, Times New Roman, Times, serif; font-weight:bold; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; display:block; float:left; white-space:nowrap; } a.primary-special:hover, a.primary-special:active { text-decoration:underline; } a.primary-link-right, a.primary-link-right:visited { padding:9px 7px 9px 7px; color:#333; background:#d9d9d9 url(../img/global/primary-nav-pipe.gif) no-repeat right; font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; display:block; float:left; white-space:nowrap; } a.primary-link-right:hover, a.primary-link-right:active { background:#999; color:#fff; text-decoration:underline; } a.primary-link-right-selected, a.primary-link-right-selected:visited, a.primary-link-right-selected:hover, a.primary-link-right-selected:active { padding:9px 7px 9px 7px; color:#cf0; background:#666; font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; display:block; float:left; white-space:nowrap; } a.primary-link-right-no-pipe, a.primary-link-right-no-pipe:visited { padding:9px 7px 9px 7px; color:#333; background:#d9d9d9; font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; display:block; float:left; white-space:nowrap; } a.primary-link-right-no-pipe:hover, a.primary-link-right-no-pipe:active { background:#999; color:#fff; text-decoration:underline; } a.archive-primary-link-right-no-pipe, a.archive-primary-link-right-no-pipe:visited { padding:9px 7px 9px 7px; color:#333; background:#d9d9d9; font-weight:bold; font-size:1.0em; line-height:1.1em; text-transform:normal; text-decoration:none; display:block; float:left; white-space:nowrap; } a.archive-primary-link-right-no-pipe:hover, a.archive-primary-link-right-no-pipe:active { background:#999; color:#fff; text-decoration:underline; } .font-georgia { font-family:Georgia, 'Times New Roman', Times, serif; line-height:1.5em; } .font-georgia-noline-height { font-family:Georgia, 'Times New Roman', Times, serif; } .font-arial { font-family:Arial, Helvetica, sans-serif; } .font-size-12{ font-size:1.07em; } a.secondary-selected, a.secondary-selected:visited { color:#cf0; padding:8px 9px 8px 9px; font-size:1.0em; line-height:1.1em; text-decoration:none; text-transform:uppercase; background:#666 url(../img/global/primary-nav-pipe.gif) no-repeat right; letter-spacing:0.05em; display:block; float:left; white-space:nowrap; } a.secondary-selected:hover, a.secondary-selected:active { text-decoration:underline; } a.secondary-selected-no-pipe, a.secondary-selected-no-pipe:visited { color:#cf0; padding:8px 9px 8px 9px; font-size:1.0em; line-height:1.1em; text-decoration:none; text-transform:uppercase; letter-spacing:0.05em; display:block; float:left; white-space:nowrap; } a.secondary-selected-no-pipe:hover, a.secondary-selected-no-pipe:active { text-decoration:underline; } a.secondary-link, a.secondary-link:visited { color:#fff; padding:8px 9px 8px 9px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; background:#666 url(../img/global/primary-nav-pipe.gif) no-repeat right; letter-spacing:0.05em; display:block; float:left; white-space:nowrap; } a.secondary-link:hover, a.secondary-link:active { text-decoration:underline; } a.secondary-link-no-pipe, a.secondary-link-no-pipe:visited { background:#666; color:#fff; padding:8px 9px 8px 9px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; text-decoration:none; letter-spacing:0.05em; display:block; float:left; white-space:nowrap; } a.secondary-link-no-pipe:hover, a.secondary-link-no-pipe:active { text-decoration:underline; } a.ticker, a.ticker:visited { color:#666; font-family:Georgia, Times New Roman, Times, serif; font-size:1.1em; line-height:1.25em; text-decoration:none; } a.ticker:hover, a.ticker:active { color:#06c; text-decoration:underline; } a.crumbtrail, a.crumbtrail:visited { color:#666; padding:0px 10px; font-size:1.1em; line-height:1.2em; float:left; display:inline; text-decoration:none; background:transparent url(../img/global/list/chevron-small-links.gif) no-repeat left; white-space:nowrap; } a.crumbtrail-no-image, a.crumbtrail-no-image:visited { color:#666; padding:0px 10px; font-size:1.1em; line-height:1.2em; float:left; display:inline; text-decoration:none; white-space:nowrap; } a.crumbtrail:hover, a.crumbtrail:active, a.crumbtrail-no-image:hover, a.crumbtrail-no-image:active { color:#06c; text-decoration:underline; } a.crumbtrail-selected, a.crumbtrail-selected:visited { color:#333; padding:0px 10px; font-size:1.1em; font-weight:bold; line-height:1.2em; float:left; display:inline; text-decoration:none; background:transparent url(../img/global/list/chevron-small-links.gif) no-repeat left; white-space:nowrap; } a.crumbtrail-selected:hover, a.crumbtrail-selected:active { color:#06c; text-decoration:underline; } a.reg, a.reg:visited { font-size:1.1em; line-height:1.1em; text-decoration:none; color:#06c; } a.reg:hover, a.reg:active { text-decoration:underline; } a.reg-666, a.reg-666:visited { font-size:1.1em; line-height:1.1em; text-decoration:none; color:#666; } a.reg-666:hover, a.reg-666:active { color:#06c; text-decoration:underline; } a.reg-bold, a.reg-bold:visited { font-size:1.1em; line-height:1.1em; text-decoration:none; color:#06c; font-weight:bold; } a.reg-bold:hover, a.reg-bold:active { text-decoration:underline; } a.link-666, a.link-666:visited { text-decoration:none; color:#666; } a.link-999, a.link-999:visited { text-decoration:none; color:#999; } a.link-333, a.link-333:visited { text-decoration:none; color:#333; } a.link-fff, a.link-fff:visited { text-decoration:none; color:#fff; } a.link-06c, a.link-06c:visited { text-decoration:none; color:#06c; } .link-fff-selected{ COLOR: #cf0 } a.link-666:hover, a.link-666:active, a.link-333:hover, a.link-333:active, a.link-06c:hover, a.link-06c:active, a.link-999:hover, a.link-999:active { color:#06c; text-decoration:underline; } a.link-fff:hover, a.link-fff:active { text-decoration:underline; } a.link-666-no-underline:hover, a.link-666-no-underline:active { color:#06c; text-decoration:none; } a.link-666-no-underline:hover span, a.link-666-no-underline:active span { color:#06c; text-decoration:underline; } a.link-666-no-underline, a.link-666-no-underline:visited { text-decoration:none; color:#666; } a.tags, a.tags:visited { display:inline; margin:0px 5px 0px 0px; padding:0px 2px; font-size:1.1em; line-height:1.1em; background:#f8f1d8; color:#333; text-decoration:none; } a.tags:hover, a.tags:active { color:#06c; text-decoration:underline; } a.previous, a.previous:visited { text-decoration:none; color:#06c; padding:0px 0px 0px 10px; background:transparent url(../img/global/list/chevron-small-links-previous.gif) no-repeat center left; } a.previous:hover, a.previous:active { text-decoration:underline; } a.next, a.next:visited { text-decoration:none; color:#06c; padding:0px 9px 0px 0px; background:transparent url(../img/global/list/chevron-small-links.gif) no-repeat center right; } a.next:hover, a.next:active { text-decoration:underline; } span.black-previous{ color:#000; text-transform:uppercase; padding:0px 0px 0px 10px; background:transparent url(../img/global/list/black-chevron-previous.gif) no-repeat center left; } span.black-next { text-transform:uppercase; color:#000; padding:0px 9px 0px 10px; background:transparent url(../img/global/list/black-chevron-next.gif) no-repeat center right; } h1.heading { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:2.7em; line-height:1.2em; font-weight:normal; } h1.index { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:2.2em; line-height:1.1em; font-weight:normal; } h1.section { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.5em; line-height:1.0em; font-weight:normal; color:#000; text-transform:uppercase; padding:4px 0px 2px 0px; } h2.sub-heading { color:#333; margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.4em; line-height:1.1em; font-weight:bold; letter-spacing:-0.06em; } h2.paginationHeading { color:#333; margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:14pt; line-height:1.1em; font-weight:bold; letter-spacing:-0.06em; } h2.pagination { color:#333; margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.4em; line-height:1.1em; font-weight:bold; letter-spacing:-0.06em; } h2.sub-heading-puff { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.4em; line-height:1.1em; font-weight:bold; letter-spacing:-0.06em; } h3.section-heading { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.0em; line-height:1.3em; text-transform:uppercase; color:#666; padding-bottom:4px; } h3.section-heading-white { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.0em; line-height:1.3em; text-transform:uppercase; color:#fff; padding-bottom:4px; } h3.section-heading-smaller { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:0.89em; line-height:1.0em; text-transform:uppercase; color:#666; padding-bottom:4px; } .color-000 { color:#000; } .color-06c_underline { color:#06c; text-decoration:underline; } .color-06c { color:#06c; } .color-06c-none a, a:visited{ color:#06c; text-decoration:none; } .color-06c-none a:hover{ text-decoration:underline; } .color-333 { color:#333; } .color-666 { color:#666; } .color-999 { color:#999; } .color-d9d9d9 { color:#d9d9d9; } .color-f8f1d8 { color:#f8f1d8; } .color-cbff00 { color:#cbff00; } .color-fff { color:#fff; } .color-bd0000 { color:#bd0000; } .color-ede1bf { color:#ede1bf } .font-size-11{ font-size:11px; } .font-georgia-11{ font-size:11px; font-family:Georgia, "Times New Roman", Times, serif; text-transform:capitalize; font-weight:normal; } .font-georgia-10{ font-size:10px; font-family:Georgia, "Times New Roman", Times, serif; font-weight:bold; text-transform:uppercase; } .font-arial-11{ font-size:11px; font-family:Arial, "Times New Roman", Times, serif; text-transform:capitalize; font-weight:normal; } .font-arial-12{ font-size:12px; font-family:Arial, Helvetica, sans-serif; text-transform:capitalize; font-weight:normal; } .font-arial-10{ font-size:10px; font-family:Arial, "Times New Roman", Times, serif; font-weight:bold; text-transform:uppercase; } .font-timesnew-11{ font-size:12px; font-family: "Times New Roman",Times, Georgia,serif; text-transform:capitalize; font-weight:strong; } ol li { list-style-type:decimal; list-style-position:inline; display:list-item; font-family:Georgia, Times New Roman, Times, serif; margin:0px 0px 12px 0px; font-size:1.2em; } ul.ul-tools li { float:left; background-repeat:no-repeat; background-position:0px 0px; padding:1px 0px 10px 19px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; width:33%; voice-family: "\"}\""; width:28%; } ul li.print { background-image:url(../img/global/icon/14x14-print.gif); } ul li.email { background-image:url(../img/global/icon/14x14-email.gif); } ul li.rate { background-image:url(../img/global/icon/14x14-rate.gif); } ul li.save { background-image:url(../img/global/icon/14x14-save.gif); } ul li.delicious { background-image:url(../img/global/icon/14x14-delicious.gif); } ul li.yahoo { background-image:url(../img/global/icon/14x14-yahoo-icon.gif); } ul li.digg { background-image:url(../img/global/icon/14x14-digg-icon.gif); } ul li.newsvine { background-image:url(../img/global/icon/14x14-newsvine.gif); } ul li.fark { background-image:url(../img/global/icon/icon_14_14_fark.gif); } ul li.ocr { background-image:url(../img/global/icon/Fulltext_Icon_14_14.gif); } ul li.help { background-image:url(../img/global/icon/14x14-help.gif); } ul li.contact-us { display:block; background-repeat:no-repeat; background-position:0px 0px; padding:1px 10px 2px 19px; background-image:url(../img/global/icon/14x14-contact-us.gif); border-right:1px solid #b1b1b1; } ul.ul-tools-no-indent li { float:left; background-repeat:no-repeat; padding:0px 0px 4px 0px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; width:33%; } ul.ul-tools-no-indent li span { position:relative; top:-10px; left:5px; } ul li.comment { display:block; background-repeat:no-repeat; background-position:0px 1px; padding:2px 0px 1px 19px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; background-image:url(../img/global/icon/14x14-send-your-views-white.gif); } ul li.icon-on-left { display:block; font-size:1.0em; line-height:1.1em; text-transform:uppercase; } ul li.icon-on-left span { position:relative; top:-3px; left:5px; } ul li.icon-on-right { display:block; font-size:1.0em; line-height:1.1em; text-transform:uppercase; } ul li.icon-on-right span { position:relative; top:-3px; padding-right:4px; } ul li.print-page { display:block; background-repeat:no-repeat; background-position:0px 1px; padding:2px 0px 1px 19px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; background-image:url(../img/global/icon/14x14-print.gif); } ul li.have-your-say { display:block; background-repeat:no-repeat; background-position:0px 1px; padding:2px 0px 1px 19px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; background-image:url(../img/global/icon/14x14-send-your-views-white.gif); } ul li.hide-the-form { display:block; background-repeat:no-repeat; background-position:0px 1px; padding:2px 0px 1px 19px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; } ul li.plus { display:block; background-repeat:no-repeat; background-position:right 1px; padding:2px 19px 1px 0px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; background-image:url(../img/global/icon/14x14-expand.gif); } ul li.minus { display:block; background-repeat:no-repeat; background-position:right 1px; padding:2px 19px 1px 0px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; background-image:url(../img/global/icon/14x14-collapse.gif); } ul li.blue-chevron { display:block; background-repeat:no-repeat; background-position:0px 4px; padding:0px 0px 2px 9px; font-size:1.1em; line-height:1.3em; background-image:url(../img/global/list/chevron-small-links.gif); } ul li.icon { display:block; background-repeat:no-repeat; background-position:0px 1px; padding:0px 0px 2px 18px; font-size:1.1em; line-height:1.3em; } ul li.video { background-image:url(../img/global/icon/14x14-timesonline-tv.gif); } ul li.video-latest { background-image:url(../img/global/icon/14x14-timesonline-tv-red.gif); } ul li.your-view { background-image:url(../img/global/icon/14x14-send-your-views-white.gif); } ul li.audio { background-image:url(../img/global/icon/14x14-audio.gif); } ul li.audio-latest { background-image:url(../img/global/icon/14x14-audio-red.gif); } ul li.podcast { background-image:url(../img/global/icon/14x14-podcast.gif); } ul li.podcast-latest { background-image:url(../img/global/icon/14x14-podcast-red.gif); } ul li.photos { background-image:url(../img/global/icon/14x14-picture-galleries.gif); } ul li.photos-latest { background-image:url(../img/global/icon/14x14-picture-galleries-red.gif); } ul li.blog { background-image:url(../img/global/icon/Icon_14_14_blog_blue.gif); } ul li.blog-latest { background-image:url(../img/global/icon/Icon_14_14_blog_red.gif); } ul li.external { background-image:url(../img/global/icon/Icon_14_14_external.gif); } ul li.external-latest { background-image:url(../img/global/icon/Icon_14_14_external_red.gif); } ul li.commentary { background-image:url(../img/global/icon/Icon_14_14_commentary.gif); } ul li.commentary-latest { background-image:url(../img/global/icon/Icon_14_14_commentary_red.gif); } ul li.download { background-image:url(../img/global/icon/14x14-download-white.gif); } ul li.archive { background-image:url(../img/global/icon/archive_icon_14x14.gif); } ul li.itunes { background-image:url(../img/global/icon/14x14-subscribe-itunes-whit.gif); } ul.chevron-list-ticker li { display:block; background-repeat:no-repeat; background-position:0px 0.5em; padding-left:9px; } ul.chevron-list li, li.chevron-list { display:block; background-repeat:no-repeat; background-position:0px 4px; padding-left:9px; } ul.chevron-green li { font-size:1.0em; line-height:1.3em; background-image:url(../img/global/list/chevron-small-links-green.gif); text-transform:uppercase; padding-left:10px; } ul.chevron-white li { font-size:1.1em; line-height:1.3em; background-image:url(../img/global/list/chevron-small-links-white.gif); } ul.chevron-blue li, li.chevron-blue { font-size:1.1em; line-height:1.3em; background-image:url(../img/global/list/chevron-small-links.gif); } ul.chevron-red li { font-size:1.1em; line-height:1.3em; background-image:url(../img/global/list/chevron-small-links-red.gif); } ul.chevron-white-on-grey li { font-size:1.1em; line-height:1.3em; background-image:url(../img/global/list/chevron-small-links-white-on-grey.gif); } ul.chevron-list red-chevron li { font-size:1.1em; line-height:1.3em; background-image:url(../img/global/list/chevron-small-links-red.gif); } ul.disc-list li { display:block; background-repeat:no-repeat; background-position:0px 6px; padding-left:9px; font-size:1.2em; line-height:1.3em; background-image:url(../img/global/list/disc-small-links.gif); } .icon-enlarge { padding:0px 0px 0px 19px; background:url(../img/global/icon/14x14-enlarge.gif) no-repeat 0px 0px; } .icon-your-view { padding:0px 0px 0px 19px; background:url(../img/global/icon/14x14-send-your-views-cream.gif) no-repeat 0px 0px; } .icon-back-to-top { margin-top:2px; margin-right:3px; padding:0px 12px 0px 10px; background:url(../img/global/chevron-back-to-top.gif) no-repeat right; } .icon-down { margin-top:2px; margin-right:3px; padding:0px 12px 0px 0px; background:url(../img/global/chevron-down.gif) no-repeat right; } .icon-archive { padding:2px 0px 2px 19px; background:url(icon-archive.gif) no-repeat left; text-decoration:none; } .double-chevron-right { padding-right:10px; margin-left:-8px; background:transparent url(../img/global/list/double-chevron-blue.gif) no-repeat center right; } .double-chevron-right-white { padding-right:10px; margin-left:-8px; background:transparent url(../img/global/list/double-chevron-white.gif) no-repeat center right; } .times-recommends { padding-right:13px; padding-top:1px; background:transparent url(../img/global/icon/times-recommends-search-11.gif) no-repeat center left; } .refine-category { padding-right:10px; background:transparent url(../img/global/bg-refine-category.gif) no-repeat center right; } .hide-category { padding-right:14px; background:transparent url(../img/global/bg-hide-category.gif) no-repeat center right; } .byline { display:inline; margin:0px; padding:0px 2px;; font-size:1.1em; line-height:1.1em; background:#f8f1d8; color:#666; } .bg-popup { background-color:#fff; background-image:none; } .bg-fff { background-color:#fff; } .bg-f8f1d8 { background-color:#f8f1d8; } .bg-f7eebe { background-color:#f7eebe; } .bg-fffef5 { background-color:#fffef5; } .bg-f5f5f5 { background-color:#f0f0f0; } .bg-d9d9d9 { background-color:#d9d9d9; } .bg-7eebe{ background-color:#f7eebe; } .bg-666 { background-color:#666; } .bg-06c { background-color:#06c; } .bg-000 { background-color:#000; } .bg-b39b62 { background-color:#b39b62; } .tab-selected { vertical-align:top; display:block; float:left; white-space:nowrap; padding:3px 6px 3px 7px; margin-right:5px; background:#f0f0f0; } a.tab-link, a.tab-link:visited { vertical-align:top; display:block; float:left; white-space:nowrap; padding:3px 6px 3px 7px; background:#d8d8d8; color:#06c; } a.tab-link:hover, a.tab-link:active { background:#999; color:#fff; text-decoration:none; } input.global-search-text { float:left; width:100px; padding:1px 0px 1px 2px; margin:5px 8px 0px 7px; } input.global-search-text-with-dropdown { float:left; width:100px; padding:1px 0px 1px 2px; margin:5px 2px 0px 2px; } select.global-search-option { float:left; width:110px; margin:5px 2px 0px 7px; } textarea.comments-form-textarea { float:left; width:359px; padding:1px 0px 1px 2px; } input.comments-form-text { float:left; width:165px; padding:1px 0px 1px 2px; } .tools { font-size:1.0em; line-height:1.1em; text-decoration:none; text-transform:uppercase; color:#666; } .tools-no-color { font-size:1.0em; line-height:1.1em; text-decoration:none; text-transform:uppercase; } .tools-06c { font-size:1.0em; line-height:1.1em; text-decoration:none; text-transform:uppercase; color:#06c; } .tools-fff { font-size:1.0em; line-height:1.1em; text-decoration:none; text-transform:uppercase; color:#fff; } .x-of-y { margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.2em; line-height:1.2em; letter-spacing:-0.06em; color:#666; } .tertiary-letter-spacing { letter-spacing:0.05em; } .caps { text-transform:uppercase; } .lowercase { text-transform:lowercase; } .poll-result { margin:0px; padding:0px 0px 0px 3px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.4em; line-height:1.1em; font-weight:bold; letter-spacing:-0.06em; } .poll-yes { color:#396; } .poll-no { color:#f90; } .poll-undecided { color:#351492; } .text-666{ color:#666; } .line-height-1em { line-height:1em; } a.link-000, a.link-000:visited { text-decoration:none; color:#000; } a.link-000:hover, a.link-000:active { color:#06c; text-decoration:underline; } h3.archive-full-text { margin:0px; font-family:Arial, Helvetica, sans-serif; font-size:1.1em; line-height:1.3em; text-transform:uppercase; padding-bottom:4px; } .font-georgia { font-family: Georgia, "Times New Roman", Times, serif; line-height:1.5em; } a.color-bd0000, a.color-bd0000:visited { color:#bd0000; } a.color-bd0000:hover { text-decoration:underline; } .top-search01 { margin:0px; font-family:Arial, Helvetica, sans-serif; font-size:1.5em; line-height:1.3em; color:#fff; } .top-search02 { margin:0px; font-family:Arial, Helvetica, sans-serif; font-size:1.3em; line-height:1.3em; color:#fff; } .top-search03 { margin:0px; font-family:Arial, Helvetica, sans-serif; font-size:1.0em; line-height:1.3em; color:#fff; } .light-tabs-left { color:#000; background:#d9d9d9; margin:0px 5px 0px 0px; padding:5px 3px 4px 4px; float:left; border-top:1px solid #d9d9d9; border-right:1px solid #d9d9d9; border-left:1px solid #d9d9d9; cursor:hand; voice-family: "\"}\""; cursor:pointer; } .light-tabs-left-simulated { color:#fff; background:#999; margin:0px 5px 0px 0px; padding:5px 3px 4px 4px; float:left; border-top:1px solid #d9d9d9; border-right:1px solid #d9d9d9; border-left:1px solid #d9d9d9; cursor:hand; voice-family: "\"}\""; cursor:pointer; } .light-tabs-left-selected { color:#000; margin:0px 5px -1px 0px; padding:5px 3px 5px 4px; float:left; border-bottom:0px; border-top:1px solid #d9d9d9; border-right:1px solid #d9d9d9; border-left:1px solid #f0f0f0; } .light-tabs-right { color:#000; background:#d9d9d9; margin:0px 5px 0px 0px; padding:5px 3px 4px 4px; float:left; border-top:1px solid #d9d9d9; border-right:1px solid #d9d9d9; border-left:1px solid #d9d9d9; cursor:hand; voice-family: "\"}\""; cursor:pointer; } .light-tabs-right-simulated { color:#fff; background:#999; margin:0px 5px 0px 0px; padding:5px 3px 4px 4px; float:left; border-top:1px solid #d9d9d9; border-right:1px solid #d9d9d9; border-left:1px solid #d9d9d9; cursor:hand; voice-family: "\"}\""; cursor:pointer; } .light-tabs-right-selected { color:#000; margin:0px 5px -1px 0px; padding:5px 3px 5px 4px; float:left; border-bottom:0px; border-top:1px solid #d9d9d9; border-right:1px solid #d9d9d9; border-left:1px solid #d9d9d9; } ul.ul-article li { background-repeat:no-repeat; background-position:0px 0px; padding-left:19px; padding-bottom:5px; font-size:1.0em; line-height:1.1em; text-transform:uppercase; float:left; display:inline; } .timestamp-lower-style{ font-family:Arial; text-decoration: none; font-size:9px; color:#663333; text-transform:lowercase; } .timestamp-caps-style{ font-family:Arial; text-decoration: none; font-size:9px; color:#663333; text-transform:uppercase; } .bg-quote-left { background:transparent url('../img/global/quote-left-red-beige-bg.gif') no-repeat left center; padding:0px 0px 0px 10px; } .bg-quote-right { background:transparent url('../img/global/quote-right-red-beige-bg.gif') no-repeat left center; padding:0px 10px 0px 10px; } .bg-green-quote-left { background:transparent url('../img/global/quote-left-green-beige-bg.gif') no-repeat left center; padding:0px 0px 0px 10px; } .bg-green-quote-right { background:transparent url('../img/global/quote-right-green-beige-bg.gif') no-repeat left center; padding:0px 10px 0px 10px; } h2.google-sub-heading { color:#06c; margin:0px; font-family:Georgia, Times New Roman, Times, serif; font-size:1.4em; line-height:1.1em; font-weight:bold; letter-spacing:-0.06em; } .blockz { width:80px; float:left; } .blockzl { width:179px; float:left; } .blockz2 { width:120px; float:left; } .printz { background-image:url(../img/global/icon/14x14-print.gif); background-position:0 0; background-repeat:no-repeat; font-size:1em; line-height:1.1em; padding:1px 0 10px 19px; text-transform:uppercase; color:cc22cc; } .emailz { background-image:url(../img/global/icon/14x14-email.gif); background-position:0 0; background-repeat:no-repeat; font-size:1em; line-height:1.1em; padding:1px 0 10px 19px; text-transform:uppercase; } .addThisz { float:left; font-size:1em; line-height:1.1em; padding:1px 0 10px 0px; text-transform:uppercase; } ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=tol.js Content-Type: application/javascript; charset=ISO-8859-1; name=tol.js Content-Location: http://business.timesonline.co.uk/tol/js/tol.js Content-Transfer-Encoding: Base64 PCEtLQ0KLyogRXhlY3V0ZSB0aGUgZnVuY3Rpb24gZldpbmRvd09uTG9hZCBvbiBs b2FkLiAqLw0Kd2luZG93Lm9ubG9hZCA9IGZXaW5kb3dPbkxvYWQ7DQp2YXIgblRv dGFsQ2hhcmFjdGVycyA9IDMwMCA7IC8vTWF4aW11bSBudW1iZXIgb2YgY2hhcmFj dGVycyB0byBiZSBlbnRlcmVkIGluIHRoZSBjb21tZW50IGZvcm0NCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQovLyBGVU5DVElPTjogZldpbmRvd09uTG9hZA0K Ly8gREVTQ1JJUFRJT046IEEgZnVuY3Rpb24gdGhhdCBnZXRzIGV4ZWN1dGUgb24g bG9hZC4NCi8vIEFSR1VNRU5UUzogTm9uZQ0KLy8gUkVUVVJOOiBOb25lDQovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gZldpbmRvd09uTG9hZCgp IHsNCn0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBGVU5DVElPTjog ZlBvcFVwDQovLyBERVNDUklQVElPTjogQSBmdW5jdGlvbiB0aGF0IG9wZW5zIGEg cG9wIHVwIHdpbmRvdy4NCi8vIEFSR1VNRU5UUzogV2lkdGgsIEhlaWdodCBhbmQg VVJMDQovLyBSRVRVUk46IFRydWUNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpmdW5jdGlvbiBmUG9wVXAobldpZHRoLG5IZWlnaHQsc1VybCkgew0KCXZhciBu U2NyV2lkdGggPSBuV2lkdGg7DQoJdmFyIG5TY3JIZWlnaHQgPSBuSGVpZ2h0Ow0K CS8vIFRpcDogVGhpcyBtYWtlcyB0aGUgd2luZG93IHRvcCByaWdodC4NCgkvLyBU aXA6IDExIHBpeGVscyBpcyBmb3IgdGhlIHZlcnRpY2FsIHNjcm9sbGJhciBvbiB0 aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSB3aW5kb3cNCgkvL3ZhciBuWFBvcyA9 IChzY3JlZW4uYXZhaWxXaWR0aCAtIG5TY3JXaWR0aCAtIDExKTsNCgl2YXIgbllQ b3MgPSAwOw0KCXZhciBuWFBvcyA9IDA7DQoJdmFyIHNPcHRpb25zID0gJ3Jlc2l6 YWJsZT0wLHRvb2xiYXI9MCxsb2NhdGlvbj0wLGRpcmVjdG9yaWVzPTAsc3RhdHVz PTAsbWVudWJhcj0wLHNjcm9sbGJhcnM9MSx0b3A9JyArIG5ZUG9zICsgJyxsZWZ0 PScgKyBuWFBvcyArJyx3aWR0aD0nICsgblNjcldpZHRoICsgJyxoZWlnaHQ9JyAr IG5TY3JIZWlnaHQ7DQoJb05ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHNVcmwsJ3Bv cHVwV2luZG93JyxzT3B0aW9ucyk7DQoJb05ld1dpbmRvdy5mb2N1cygpOw0KCXJl dHVybiB0cnVlOw0KfQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEZV TkNUSU9OOiBmRGV0ZWN0DQovLyBERVNDUklQVElPTjogQSBmdW5jdGlvbiB0aGF0 IGRldGVjdHMgd2hpY2ggT1MgYW5kIGJyb3dzZXIgdGhlIHVzZXIgaGFzLg0KLy8g QVJHVU1FTlRTOiBOb25lDQovLyBSRVRVUk46IE5vbmUNCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBmRGV0ZWN0KCkgew0KCXZhciBzQWdlbnQg PSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7DQoJLy8gRGV0ZWN0 IHBsYXRmb3JtDQoJdGhpcy5pc01hYyA9IChzQWdlbnQuaW5kZXhPZignbWFjJykg IT0gLTEpOw0KCXRoaXMuaXNXaW4gPSAoc0FnZW50LmluZGV4T2YoJ3dpbicpICE9 IC0xKTsNCgl0aGlzLmlzV2luMmsgPSAodGhpcy5pc1dpbiAmJiAoc0FnZW50Lmlu ZGV4T2YoJ250IDUnKSAhPSAtMSkpOw0KCXRoaXMuaXNXaW5TUDIgPSAodGhpcy5p c1dpbiAmJiAoc0FnZW50LmluZGV4T2YoJ3hwJykgIT0gLTEgfHwgc0FnZW50Lmlu ZGV4T2YoJ3N2MScpICE9IC0xKSk7DQoJdGhpcy5pc1VuaXggPSAoDQoJCQlzQWdl bnQuaW5kZXhPZigndW5peCcpICE9IC0xIHx8IA0KCQkJc0FnZW50LmluZGV4T2Yo J3N1bm9zJykgIT0gLTEgfHwgDQoJCQlzQWdlbnQuaW5kZXhPZignYnNkJykgIT0g LTEgfHwNCgkJCXNBZ2VudC5pbmRleE9mKCd4MTEnKSAhPSAtMSB8fCANCgkJCXNB Z2VudC5pbmRleE9mKCdsaW51eCcpICE9IC0xKTsJDQoJLy8gRGV0ZWN0IGJyb3dz ZXINCgl0aGlzLmlzU2FmYXJpID0gKHNBZ2VudC5pbmRleE9mKCdzYWZhcmknKSAh PSAtMSk7DQoJdGhpcy5pc1NhZmFyaTIgPSAodGhpcy5pc1NhZmFyaSAmJiAocGFy c2VGbG9hdChzQWdlbnQuc3Vic3RyaW5nKHNBZ2VudC5pbmRleE9mKCJhcHBsZXdl YmtpdC8iKSsiYXBwbGV3ZWJraXQvIi5sZW5ndGgsc0FnZW50Lmxlbmd0aCkuc3Vi c3RyaW5nKDAsc0FnZW50LnN1YnN0cmluZyhzQWdlbnQuaW5kZXhPZigiYXBwbGV3 ZWJraXQvIikrImFwcGxld2Via2l0LyIubGVuZ3RoLHNBZ2VudC5sZW5ndGgpLmlu ZGV4T2YoJyAnKSkpID49ICAzMDApKTsNCgl0aGlzLmlzT3BlcmEgPSAoc0FnZW50 LmluZGV4T2YoJ29wZXJhJykgIT0gLTEpOw0KCXRoaXMuaXNOTiA9IChzQWdlbnQu aW5kZXhPZignbmV0c2NhcGUnKSAhPSAtMSk7DQoJdGhpcy5pc0lFID0gKHNBZ2Vu dC5pbmRleE9mKCdtc2llJykgIT0gLTEpOw0KfQ0KLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCi8vIEZVTkNUSU9OOiBmU2hvd0hpZGVFbGVtZW50DQovLyBERVND UklQVElPTjogQSBmdW5jdGlvbiBzaG93cyBvciBoaWRlcyBhbiBlbGVtZW50Lg0K Ly8gQVJHVU1FTlRTOiBzRWxlbWVuZElkDQovLyBSRVRVUk46IE5vbmUNCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBmU2hvd0hpZGVFbGVtZW50 KHNFbGVtZW5kSWQpIHsNCgl2YXIgZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChzRWxlbWVuZElkKTsNCgl2YXIgc0NsYXNzTmFtZSA9IGVFbGVtZW50 LmNsYXNzTmFtZTsNCglpZiAoc0NsYXNzTmFtZS5tYXRjaCgnIGFjY2Vzcy10ZXh0 JykgfHwgc0NsYXNzTmFtZS5tYXRjaCgnYWNjZXNzLXRleHQnKSkgew0KCQkvLyBT aG93cyBlbGVtZW50DQoJCWVFbGVtZW50LmNsYXNzTmFtZSA9IGVFbGVtZW50LmNs YXNzTmFtZS5yZXBsYWNlKC9hY2Nlc3MtdGV4dC8sICcnKTsNCgl9IGVsc2Ugew0K CQkvLyBIaWRlcyBlbGVtZW50DQoJCWVFbGVtZW50LmNsYXNzTmFtZSA9IHNDbGFz c05hbWUgKyAnIGFjY2Vzcy10ZXh0JzsNCgl9DQp9DQovLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KLy8gRlVOQ1RJT046IGZDb3VudENoYXJhY3RlcnMNCi8vIERF U0NSSVBUSU9OOiBBIGZ1bmN0aW9uIHRoYXQgY29tcGFyZXMgdGhlIHRvdGFsIGFs bG93ZWQgY2hhcmFjdGVycyB0byB0aGUgdXNlcnMgaW5wdXQgYW5kIHJldHVybnMg dGhlIHJlbWFpbmRlci4NCi8vIEFSR1VNRU5UUzogc1ZhbHVlLCBzSWQNCi8vIFJF VFVSTjogTm9uZQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IGZDb3VudENoYXJhY3RlcnMoc1ZhbHVlLHNJZCkgew0KCXZhciBuUmVtYWluaW5n ID0gblRvdGFsQ2hhcmFjdGVycyAtIHNWYWx1ZS5sZW5ndGg7DQoJaWYoblJlbWFp bmluZyA8IDApew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzSWQpLnZhbHVl ID0gc1ZhbHVlLnNsaWNlKDAsblRvdGFsQ2hhcmFjdGVycyk7DQoJfSBlbHNlIHsN CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc0lkICsgJy1jaGFyYWN0ZXJzLWxl ZnQnKS5pbm5lckhUTUwgPSBuUmVtYWluaW5nICsgJyBjaGFyYWN0ZXJzIGxlZnQn Ow0KCX0NCn0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBGVU5DVElP TjogZlJldHVybkZyaWVuZGx5TmFtZQ0KLy8gREVTQ1JJUFRJT046IEEgZnVuY3Rp b24gdGhhdCBnZW5lcmF0ZXMgYSBmcmllbmRseSBmb3JtYXR0ZWQgbmFtZSBmcm9t IGFuIHVuZm9ybWF0dGVkIGVsZW1lbnQgaWQNCi8vIEFSR1VNRU5UUzogc1VuZnJp ZW5kbHlOYW1lDQovLyBSRVRVUk46IHNGcmllbmRseU5hbWUNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBmUmV0dXJuRnJpZW5kbHlOYW1lKHNV bmZyaWVuZGx5TmFtZSl7DQoJdmFyIHNUZW1wQ2hhciA9IHNVbmZyaWVuZGx5TmFt ZS5jaGFyQXQoMCk7DQoJdmFyIHNGcmllbmRseU5hbWUgPSBzVW5mcmllbmRseU5h bWUuc2xpY2UoMSk7DQoJc0ZyaWVuZGx5TmFtZSA9IHNUZW1wQ2hhci50b1VwcGVy Q2FzZSgpICsgc0ZyaWVuZGx5TmFtZTsNCgl2YXIgblRlbXBDaGFyID0gMDsNCglm b3Ioaj0xO2ohPTA7aisrKXsNCgkJblRlbXBDaGFyID0gc0ZyaWVuZGx5TmFtZS5p bmRleE9mKCdfJyk7DQoJCWlmKG5UZW1wQ2hhciAhPSAnLTEnKXsNCgkJCXNUZW1w Q2hhciA9IHNGcmllbmRseU5hbWUuY2hhckF0KG5UZW1wQ2hhcisxKTsNCgkJCXNG cmllbmRseU5hbWUgPSBzRnJpZW5kbHlOYW1lLnJlcGxhY2UoJ18nICsgc1RlbXBD aGFyLCcgJyArIHNUZW1wQ2hhci50b1VwcGVyQ2FzZSgpKTsNCgkJfSBlbHNlIHsN CgkJCWo9LTE7DQoJCX0NCgl9DQoJLy8gRm9yd2FyZCBzbGFzaCAiLyIgZGV0ZWN0 aW9uDQoJaWYoc0ZyaWVuZGx5TmFtZS5pbmRleE9mKCdGcycpICE9ICctMScpew0K CQlzRnJpZW5kbHlOYW1lID0gc0ZyaWVuZGx5TmFtZS5yZXBsYWNlKCdGcycsJy8n KTsNCgl9IA0KCXJldHVybiBzRnJpZW5kbHlOYW1lOw0KfQ0KLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCi8vIEZVTkNUSU9OOiBmQ2xlYXJPbkNsaWNrDQovLyBE RVNDUklQVElPTjogZW1wdGllcyBhIGZvcm0gZWxlbWVudCBvZiBpdCdzIHByZWRl ZmluZWQgdGV4dA0KLy8gQVJHVU1FTlRTOiBvVGhpcyA9IFRoZSBmb3JtIGZpZWxk LCBzRGVmYXVsdFRleHQgLSBUaGUgdGV4dCBoYXJkY29kZWQgdHAgdGhlIHRleHQg ZmllbGQNCi8vIFJFVFVSTjogTm9uZQ0KLy8gRVhBTVBMRToJb25jbGljaz0iZkNs ZWFyT25DbGljayh0aGlzLCdLZXl3b3JkJykiDQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gZkNsZWFyT25DbGljayhvVGhpcyxzRGVmYXVsdFRl eHQpIHsNCglpZihvVGhpcy52YWx1ZS50b0xvd2VyQ2FzZSgpID09IHNEZWZhdWx0 VGV4dC50b0xvd2VyQ2FzZSgpKSB7DQoJCW9UaGlzLnZhbHVlID0gIiI7DQoJfQ0K fQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEZVTkNUSU9OOiBmT3V0 cHV0SnNMaW5rDQovLyBERVNDUklQVElPTjogQSBmdW5jdGlvbiB0aGF0IGdlbmVy YXRlcyBhbiBhY3Rpb24gbGluayBzdWNoIGFzIFByaW50IGFuZCBDbG9zZSBXaW5k b3cNCi8vIEFSR1VNRU5UUzogc0FjdGlvblR5cGUNCi8vIFJFVFVSTjogTm9uZQ0K Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGZPdXRwdXRKc0xp bmsoc0FjdGlvblR5cGUsIHNJbWdVcmwpIHsNCgl2YXIgc0hUTUwgPSAnJzsNCglz SFRNTCArPSAnCTx1bD4nOw0KCXN3aXRjaChzQWN0aW9uVHlwZSl7DQoJCWNhc2Ug J2Nsb3NlJzoNCgkJCXNIVE1MICs9ICcJCTxsaSBjbGFzcz0iaWNvbi1vbi1sZWZ0 Ij48YSBjbGFzcz0ibGluay02NjYtbm8tdW5kZXJsaW5lIiBocmVmPSIjIiBvbmNs aWNrPSJ3aW5kb3cuY2xvc2UoKTsgcmV0dXJuIGZhbHNlOyIgb25rZXlwcmVzcz0i d2luZG93LmNsb3NlKCk7IHJldHVybiBmYWxzZTsiPjxpbWcgc3JjPSInICtzSW1n VXJsKyAnIiB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIGJvcmRlcj0iMCIgYWx0PSJD bG9zZSBXaW5kb3ciIC8+PHNwYW4+Q2xvc2UgV2luZG93PC9zcGFuPjwvYT48L2xp Pic7DQoJCWJyZWFrOw0KCQljYXNlICdwcmludCc6DQoJCQlzSFRNTCArPSAnCQk8 bGkgY2xhc3M9InByaW50LXBhZ2UiPjxhIGNsYXNzPSJsaW5rLTY2NiIgaHJlZj0i IyIgb25jbGljaz0id2luZG93LnByaW50KCk7IHJldHVybiBmYWxzZTsiIG9ua2V5 cHJlc3M9IndpbmRvdy5wcmludCgpOyByZXR1cm4gZmFsc2U7Ij5QcmludCB0aGlz IHBhZ2U8L2E+PC9saT4nOw0KCQlicmVhazsNCgkJZGVmYXVsdDoNCgl9DQoJc0hU TUwgKz0gJwk8L3VsPic7DQoJZG9jdW1lbnQud3JpdGUoc0hUTUwpOw0KfQ0KLy8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gRlVOQ1RJT046IGZHb1VSTA0KLy8g REVTQ1JJUFRJT046IEEgZnVuY3Rpb24gdGhhdCByZWRpcmVjdHMgdGhlIGJyb3dz ZXIgdG8gdGhlIHJlY2VpdmVkIHVybA0KLy8gQVJHVU1FTlRTOiBzVXJsDQovLyBS RVRVUk46IE5vbmUNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IGZHb1VSTChzVXJsKSB7DQoJd2luZG93LmxvY2F0aW9uPXNVcmw7DQp9DQoNCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEZVTkNUSU9OOiBmU3VibWl0DQov LyBERVNDUklQVElPTjogQSBmdW5jdGlvbiB0aGF0IHN1Ym1pdHMgdG8gYXJjaGl2 ZXMgYWN0aW9uDQovLyBBUkdVTUVOVFM6IHNVcmwNCi8vIFJFVFVSTjogTm9uZQ0K Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gZlN1Ym1pdChzVXJs ICwgZm9ybU5hbWUpIHsNCmRvY3VtZW50LmZvcm1zW2Zvcm1OYW1lXS5hY3Rpb249 c1VybDsNCmRvY3VtZW50LmZvcm1zW2Zvcm1OYW1lXS5zdWJtaXQoKTsNCn0NCg0K ZnVuY3Rpb24gR2V0UXVlcnlTdHJpbmcoc3RyKSB7DQoJaHUgPSB3aW5kb3cubG9j YXRpb24uc2VhcmNoLnN1YnN0cmluZygxKTsNCglneSA9IGh1LnNwbGl0KCImIik7 DQoJZm9yIChpPTA7aTxneS5sZW5ndGg7aSsrKSB7DQoJCWZ0ID0gZ3lbaV0uc3Bs aXQoIj0iKTsNCgkJaWYgKGZ0WzBdID09IHN0cikgew0KCQkJcmV0dXJuIGZ0WzFd Ow0KCQl9DQoJfQ0KfQ0KDQoNCmZ1bmN0aW9uIHNldFlhaG9vQ29va2llKCkgew0K CWlmIChnZXRfY29va2llKCdZSCcpID09ICJ5ZXMiIHx8IElzWWFob28gPT0gInll cyIpIHsNCgkJc2V0X2Nvb2tpZSAoIllIIiwgIm9wZW4iLCAiMzAiLCAiIiApOw0K CX0gZWxzZSB7DQoJCXNldF9jb29raWUgKCJZSCIsICJubyIsICIiLCAiIiApOw0K CX0NCglyZXR1cm4gdHJ1ZTsNCn0NCg0KDQovLy0tPg== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=commentPluck.js Content-Type: application/javascript; charset=ISO-8859-1; name=commentPluck.js Content-Location: http://business.timesonline.co.uk/tol/js/commentPluck.js Content-Transfer-Encoding: Base64 PCEtLQ0KdmFyIG5vT2ZDb21tZW50cyA9ICcwJzsNCg0KdmFyIG9Ccm93c2VyT2Jq ZWN0ID0gew0KCQljdXJyZW50QnJvd3NlcjogZnVuY3Rpb24oKSB7DQoJCQl2YXIg c0FnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOw0KCQkJ dmFyIGN1cnI7CQ0KCQkJY3VyciA9IChzQWdlbnQuaW5kZXhPZigiY2hyb21lIikg IT0gIi0xIikgPyAiY2hyb21lIiA6IChzQWdlbnQuaW5kZXhPZigiZmlyZWZveCIp ICE9ICItMSIpID8gImZpcmVmb3giIDogKHNBZ2VudC5pbmRleE9mKCJvcGVyYSIp ICE9ICItMSIpID8gIk9wZXJhIiA6KHNBZ2VudC5pbmRleE9mKCJzYWZhcmkiKSAh PSAiLTEiKSA/ICJTYWZhcmkiIDogKHNBZ2VudC5pbmRleE9mKCJtc2llIikgIT0g Ii0xIikgPyAiSUUiIDogKHNBZ2VudC5pbmRleE9mKCJuZXRzY2FwZSIpICE9ICIt MSIpID8gIm5ldHNjYXBlIjogIlVua25vd24iOw0KCQkJcmV0dXJuIGN1cnI7DQoJ CX0NCgl9Ow0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEZVTkNUSU9O OiBmU3VibWl0UmVxdWVzdEJhdGNoDQovLyBERVNDUklQVElPTjogQSBmdW5jdGlv biB0byBzZW5kIHRoZSByZXF1ZXN0IGJhdGNoIHRvIFBsdWNrDQovLyBBUkdVTUVO VFM6IGRhYXBpVXJsIGlzIHRoZSBQbHVjayBiZWdpbiByZXF1ZXN0IHVybC5hcnRp Y2xlSWQgaXMgdGhlIGFydGljbGUgaWQgb2YgdGhlIA0KLy8gYXJ0aWNsZSBiZWlu ZyB2aWV3ZWQNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmZ1bmN0aW9u IGZTdWJtaXRSZXF1ZXN0QmF0Y2goZGFhcGlCZWdpblJlcXVlc3RVcmwgLCBhcnRp Y2xlSWQpIHsNCgkNCgl2YXIgcmVxdWVzdEJhdGNoID0gbmV3IFJlcXVlc3RCYXRj aCgpOw0KCXZhciBhcnRpY2xlS2V5ID0gbmV3IEFydGljbGVLZXkoYXJ0aWNsZUlk KTsNCglpZihkaXNwbGF5QmVoYXZpb3VyYWxOYXYpew0KCQl2YXIgc2VjdGlvbnMg PSBuZXcgQXJyYXkobmV3IFNlY3Rpb24oIkFsbCIpKTsgIA0KICAgICAgIHZhciBj YXRlZ29yaWVzID0gbmV3IEFycmF5KG5ldyBDYXRlZ29yeSgiQWxsIikpOyAgDQog ICAgICAgdmFyIHVzZXJUaWVycyA9IHBsdWNrVXNlclRpZXJzLnNwbGl0KCcsJyk7 DQogICAgICAgDQogICAgICAgdmFyIGNvbnRyaWJ1dG9ycyA9IG5ldyBBcnJheSgp OyAgDQogICAgICAgZm9yKHZhciB0aWVySXRyID0gMCA7IHRpZXJJdHIgPCB1c2Vy VGllcnMubGVuZ3RoIDsgdGllckl0cisrICl7DQogICAgCSAgIGNvbnRyaWJ1dG9y c1t0aWVySXRyXSA9IG5ldyBVc2VyVGllcih1c2VyVGllcnNbdGllckl0cl0pOyAN CiAgICAgICB9ICAgICAgIA0KICAgICAgIHZhciBhY3Rpdml0eSA9IG5ldyBBY3Rp dml0eSgiQ29tbWVudGVkIik7ICANCiAgICAgICB2YXIgYWdlID0gZXZhbChtb3N0 Q29tbWVudGVkRGF5cyk7IC8vIG1heGltdW0gYWdlIGluIGRheXMgIA0KICAgICAg IHZhciBudW1JdGVtc1RvR2V0ID0gNDsgIA0KICAgICAgICAgICAgICAgDQogICAg ICAgIC8vIGNyZWF0ZSBhbmQgc2VuZCByZXF1ZXN0ICANCiAgICAgICAgdmFyIGRp c2NvdmVyeUFjdGlvbiA9IG5ldyBEaXNjb3ZlckFydGljbGVzQWN0aW9uKCAgDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25z LCAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh dGVnb3JpZXMsICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udHJpYnV0b3JzLCAgDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFjdGl2aXR5LCAgDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFnZSwgIA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudW1JdGVtc1RvR2V0KTsgIA0KICAgICAg ICAgICAgICAgICAgIA0KICAgICAgIHJlcXVlc3RCYXRjaC5BZGRUb1JlcXVlc3Qo ZGlzY292ZXJ5QWN0aW9uKTsgICAgIA0KCX0NCiAgICAgICByZXF1ZXN0QmF0Y2gu QWRkVG9SZXF1ZXN0KGFydGljbGVLZXkpOyAgICAgICAgICAgDQoJcmVxdWVzdEJh dGNoLkJlZ2luUmVxdWVzdChkYWFwaUJlZ2luUmVxdWVzdFVybCAsIGZSZW5kZXJO dW1iZXJPZkNvbW1lbnRzKTsNCg0KfQ0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KLy9GVU5DVElPTjogZkRpc3BsYXlDb21tZW50UGFnZU51bQ0KLy9ERVNDUklQ VElPTjogQSBmdW5jdGlvbiB0byBzZXQgdGhlIHBhZ2UgbnVtYmVycyBmb3IgY29t bWVudHMgZm9yIGVnLiBEaXNwbGF5aW5nIDEtMTANCi8vQVJHVU1FTlRTOnBnbnVt IC0gcGFnZSBudW1iZXIgb2YgY29tbWVudHMgcmVjZWl2ZWQgZnJvbSBQbHVjaywg cGVycGFnZSAtIG51bWJlciBvZiBjb21tZW50cyBkaXNwbGF5ZWQgcGVycGFnZQ0K Ly8NCmZ1bmN0aW9uIGZEaXNwbGF5Q29tbWVudFBhZ2VOdW0ocGdudW0sIHBlcnBh Z2Upew0KCXZhciBzdGFydCA9IChldmFsKHBnbnVtKS0xKSpwZXJwYWdlKzE7DQoJ dmFyIGVuZCA9IGV2YWwocGdudW0pKnBlcnBhZ2U7DQoJdmFyIGNvbW1lbnRzID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lbnQtYm90dG9tLXAnKS5pbm5l ckhUTUwgOw0KCXZhciB0bXBhcnIgPSBuZXcgQXJyYXkoKTsNCgl0bXBhcnIgPSBj b21tZW50cy5zcGxpdCgiICIpOw0KDQoJaWYoZXZhbCh0bXBhcnJbMF0pPGVuZCkN CgkJZW5kID0gdG1wYXJyWzBdOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj b21tZW50LWRpc3BsYXktcGFnZS1udW0nKS5pbm5lckhUTUwgPSAnIChEaXNwbGF5 aW5nICcrc3RhcnQrJy0nK2VuZCsnKSc7DQoNCn0NCg0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCi8vIEZVTkNUSU9OOiBmUmVuZGVyTnVtYmVyT2ZDb21tZW50 cw0KLy8gREVTQ1JJUFRJT046IEEgZnVuY3Rpb24gdG8gc2V0IHRoZSBub09mQ29t bWVudHMNCi8vIEFSR1VNRU5UUzpyZXNwb25zZUJhdGNoIGlzIHRoZSByZXNwb25z ZSByZWNlaXZlZCBmcm9tIFBsdWNrDQovLyANCmZ1bmN0aW9uIGZSZW5kZXJOdW1i ZXJPZkNvbW1lbnRzKHJlc3BvbnNlQmF0Y2gpIHsNCgkNCgl2YXIgaXNWYWxpZExl bmd0aCA9IGZhbHNlICwgaXNNb3N0Q29tbWVudGVkID0gZmFsc2U7DQoJDQoJaWYo cmVzcG9uc2VCYXRjaC5SZXNwb25zZXMubGVuZ3RoID4gMCl7DQoJCSAgaXNWYWxp ZExlbmd0aCA9IHRydWU7DQogICAgICAgICAgdmFyIHJlc3BvbnNlUGx1Y2sgPSBy ZXNwb25zZUJhdGNoLlJlc3BvbnNlc1swXTsNCiAgICAgICAgICBpZihyZXNwb25z ZVBsdWNrLkRpc2NvdmVyQXJ0aWNsZXNBY3Rpb24gIT0gbnVsbCl7DQoJCQkgIGlm KHJlc3BvbnNlUGx1Y2suRGlzY292ZXJBcnRpY2xlc0FjdGlvbi5EaXNjb3ZlcmVk QXJ0aWNsZXMubGVuZ3RoID4gMCApDQoJCQkJICBpc01vc3RDb21tZW50ZWQgPSB0 cnVlOw0KCSAgICAgICAgICBmb3IodmFyIGk9MDsgaTwgcmVzcG9uc2VQbHVjay5E aXNjb3ZlckFydGljbGVzQWN0aW9uLkRpc2NvdmVyZWRBcnRpY2xlcy5sZW5ndGg7 IGkrKyl7DQoJCQkJCSAgICANCgkJCSAgICAgICBhcnRpY2xlSGVhZGxpbmVzW2ld ID0gcmVzcG9uc2VQbHVjay5EaXNjb3ZlckFydGljbGVzQWN0aW9uLkRpc2NvdmVy ZWRBcnRpY2xlc1tpXS5QYWdlVGl0bGU7CQ0KCQkJICAgICAgIGFydGljbGVQYXRo c1tpXSA9IHJlc3BvbnNlUGx1Y2suRGlzY292ZXJBcnRpY2xlc0FjdGlvbi5EaXNj b3ZlcmVkQXJ0aWNsZXNbaV0uUGFnZVVybDsNCgkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIA0KCSAgICAgICAgICB9DQoJCX0NCiAgICAgfQ0KDQoJaWYo aXNWYWxpZExlbmd0aCl7DQoJCXZhciByZXNwb25zZVBsdWNrOw0KCQkJaWYoIWlz TW9zdENvbW1lbnRlZCkNCgkJCQkgcmVzcG9uc2VQbHVjayA9IHJlc3BvbnNlQmF0 Y2guUmVzcG9uc2VzWzBdOw0KCQkJZWxzZQ0KCQkJCSByZXNwb25zZVBsdWNrID0g cmVzcG9uc2VCYXRjaC5SZXNwb25zZXNbMV07DQoJCQkNCgkJICAgaWYgKHJlc3Bv bnNlUGx1Y2suQXJ0aWNsZSAhPSBudWxsKSB7IA0KCQkJCSBub09mQ29tbWVudHMg PSByZXNwb25zZVBsdWNrLkFydGljbGUuQ29tbWVudHMuTnVtYmVyT2ZDb21tZW50 czsJDQoJCQkJIGlmKG5vT2ZDb21tZW50cyA9PSAnMCcpew0KCQkJCQkgaWYocGdv ZmZzZXQgPT0gJzAnKXsNCgkJCQkJCSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn Y29tbWVudC1jb3VudCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCQkJCSB9 DQoJCQkJCSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbWVudC1zb3J0LW9y ZGVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJCQkJIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdkaXNhYmxlLW91dHB1dC13aWRnZXQnKS5zdHlsZS5kaXNw bGF5ID0gJ25vbmUnOwkNCgkJCQkgfQ0KCQkJCSBlbHNlIGlmICggbm9PZkNvbW1l bnRzID09ICcxJyApew0KCQkJCQkgaWYocGdvZmZzZXQgPT0gJzAnKXsNCgkJCQkJ CSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbWVudC1saW5rJykuaW5uZXJI VE1MID0gbm9PZkNvbW1lbnRzICsgJyBDb21tZW50JzsNCgkJCQkJIH0NCgkJCQkJ ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lbnQtYm90dG9tLXAnKS5pbm5l ckhUTUwgPSBub09mQ29tbWVudHMgKyAnIENvbW1lbnQnOw0KCQkJCQlkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnY29tbWVudC1zb3J0LW9yZGVyLW9ubHknKS5zdHls ZS5kaXNwbGF5ID0gJ25vbmUnOwkNCgkJCQkgfQ0KCQkJCSBlbHNlew0KCQkJCQkg aWYocGdvZmZzZXQgPT0gJzAnKXsNCgkJCQkJCSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnY29tbWVudC1saW5rJykuaW5uZXJIVE1MID0gbm9PZkNvbW1lbnRzICsg JyBDb21tZW50cyc7DQoJCQkJCSB9DQoJCQkJCWRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdjb21tZW50LWJvdHRvbS1wJykuaW5uZXJIVE1MID0gbm9PZkNvbW1lbnRz ICsgJyBDb21tZW50cyc7DQoJCQkJIH0NCgkJCX1lbHNlew0KCQkJCWlmKHBnb2Zm c2V0ID09ICcwJyl7DQoJCQkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21t ZW50LWNvdW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJCQl9DQoJCQkg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbWVudC1zb3J0LW9yZGVyJyku c3R5bGUuZGlzcGxheSA9ICdub25lJzsJDQoJCQkgICBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZGlzYWJsZS1vdXRwdXQtd2lkZ2V0Jykuc3R5bGUuZGlzcGxheSA9 ICdub25lJzsJDQoJCSAgICB9DQoJCX1lbHNlew0KCQkJaWYocGdvZmZzZXQgPT0g JzAnKXsNCgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbWVudC1jb3Vu dCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCQl9DQoJCQlkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnY29tbWVudC1zb3J0LW9yZGVyJykuc3R5bGUuZGlzcGxh eSA9ICdub25lJzsJDQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlzYWJs ZS1vdXRwdXQtd2lkZ2V0Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsJCQ0KCQl9 DQoJCQ0KCX0NCg0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gRlVO Q1RJT046IGZHZXRSZXF1ZXN0T2JqZWN0DQovLyBERVNDUklQVElPTjogQSBmdW5j dGlvbiB0aGF0IGdldHMgdGhlIHJlcXVlc3Qgb2JqZWN0IGZvciBkaWZmZXJlbnQg YnJvd3NlcnMNCi8vIEFSR1VNRU5UUzogDQovLyBSRVRVUk46IE5vbmUNCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp2YXIgYlJlcXVlc3QgPSBmYWxzZTsNCg0K ZnVuY3Rpb24gZkdldFJlcXVlc3RPYmplY3QoKSB7DQoJdHJ5IHsNCgkJYlJlcXVl c3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsNCgl9IA0KCWNhdGNoICh0cnltaWNy b3NvZnQpew0KCQl0cnkgew0KCQkJYlJlcXVlc3QgPSBuZXcgQWN0aXZlWE9iamVj dCgiTXN4bWwyLlhNTEhUVFAiKTsNCgkJfSANCgkJY2F0Y2ggKG90aGVybWljcm9z b2Z0KSB7DQoJCQl0cnkgew0KCQkJCWJSZXF1ZXN0ID0gbmV3IEFjdGl2ZVhPYmpl Y3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7CQkJDQoJCQl9IA0KCQkJY2F0Y2ggKGZh aWxlZCkgew0KCQkJCWJSZXF1ZXN0ID0gZmFsc2U7CQkJIA0KCQkJfSAgDQoJCX0N Cgl9DQoJaWYgKCFiUmVxdWVzdCkNCgkJYWxlcnQoIkVycm9yIGluaXRpYWxpemlu ZyBYTUxIdHRwUmVxdWVzdCEiKTsNCn0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KLy9GVU5DVElPTjogZkdldFJlcXVlc3RPYmplY3RMb2NhbA0KLy9ERVND UklQVElPTjogQSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIHJlcXVlc3Qgb2JqZWN0 IGZvciBkaWZmZXJlbnQgYnJvd3NlcnMNCi8vQVJHVU1FTlRTOiANCi8vUkVUVVJO OiBOb25lDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBmR2V0 UmVxdWVzdE9iamVjdExvY2FsKCkgew0KCXRyeSB7DQoJCWJSZXF1ZXN0ID0gbmV3 IFhNTEh0dHBSZXF1ZXN0KCk7DQoJfSANCgljYXRjaCAodHJ5bWljcm9zb2Z0KXsN CgkJdHJ5IHsNCgkJCWJSZXF1ZXN0ID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1s Mi5YTUxIVFRQIik7DQoJCX0gDQoJCWNhdGNoIChvdGhlcm1pY3Jvc29mdCkgew0K CQkJdHJ5IHsNCgkJCQliUmVxdWVzdCA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNy b3NvZnQuWE1MSFRUUCIpOwkJCQ0KCQkJfSANCgkJCWNhdGNoIChmYWlsZWQpIHsN CgkJCQliUmVxdWVzdCA9IGZhbHNlOwkJCSANCgkJCX0gIA0KCQl9DQoJfQ0KCWlm ICghYlJlcXVlc3QpDQoJCWFsZXJ0KCJFcnJvciBpbml0aWFsaXppbmcgWE1MSHR0 cFJlcXVlc3QhIik7DQoJcmV0dXJuIGJSZXF1ZXN0Ow0KfQ0KDQoNCg0KLy8tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy9GVU5DVElPTjogZlZhbGlkYXRlSXNOb3RF cXVhbA0KLy9ERVNDUklQVElPTjogQSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBmb3Ig aXMgbm90IGVxdWFsIHRvIGNvbmRpdGlvbi4NCi8vQVJHVU1FTlRTOiB0d28gcGFy YW1ldGVycyB0byBiZSBjb21wYXJlZA0KLy9SRVRVUk46IHRydWUgb3IgZmFsc2UN Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGZWYWxpZGF0ZUlz Tm90RXF1YWwoaW5wdXQsIHZhbHVlKXsNCglpZihpbnB1dCE9dmFsdWUpew0KCQly ZXR1cm4gdHJ1ZTsNCgl9ZWxzZXsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCn0NCg0K Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy9GVU5DVElPTjogZlZhbGlkYXRl SXNFcXVhbA0KLy9ERVNDUklQVElPTjogQSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBm b3IgaXMgZXF1YWwgdG8gY29uZGl0aW9uLg0KLy9BUkdVTUVOVFM6IHR3byBwYXJh bWV0ZXJzIHRvIGJlIGNvbXBhcmVkDQovL1JFVFVSTjogdHJ1ZSBvciBmYWxzZQ0K Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gZlZhbGlkYXRlSXNF cXVhbChpbnB1dCwgdmFsdWUpew0KCWlmKGlucHV0ID09IHZhbHVlKXsNCgkJcmV0 dXJuIHRydWU7DQoJfWVsc2V7DQoJCXJldHVybiBmYWxzZTsNCgl9DQp9DQoNCi8v LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vRlVOQ1RJT046IGZDYWxsT3Zlcmxh eQ0KLy9ERVNDUklQVElPTjogQSBmdW5jdGlvbiB0byBkaXNwbGF5IG92ZXJsYXkN Ci8vQVJHVU1FTlRTOiBsaWdodCAtIGlkIG9mIHRoZSBkaXYgdG8gaGlkZSBhbmQg ZmFkZSAtIGlkIHRvIGRpc3BsYXkgdGhlIGJhY2tncm91bmQNCi8vUkVUVVJOOiBO b25lDQovLw0KZnVuY3Rpb24gZkNhbGxPdmVybGF5KGxpZ2h0LGZhZGUpIHsNCgkN CgkNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmYWRlKS5zdHlsZS5kaXNwbGF5 PSdibG9jayc7DQoJLy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9naW4tZXJy b3IiKS5zdHlsZS5kaXNwbGF5PSdub25lJzsNCglkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChmYWRlKS5zdHlsZS5oZWlnaHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 Lm9mZnNldEhlaWdodCsicHgiOw0KCQ0KCQ0KCWlmKG9Ccm93c2VyT2JqZWN0LmN1 cnJlbnRCcm93c2VyKCk9PSAiSUUiKSB7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRC eUlkKGZhZGUpLnN0eWxlLmhlaWdodD1kb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdo dCsicHgiOw0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmYWRlKS5zdHlsZS53 aWR0aD1kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKyJweCI7DQoJCQ0KCX0NCgkg DQoJIGlmKGxpZ2h0ID09ICdsb2dpbi1saWdodCcgJiYgb0Jyb3dzZXJPYmplY3Qu Y3VycmVudEJyb3dzZXIoKT09ICJJRSIpewkNCgkJICANCiAgICAgICAgICAgICBk b2N1bWVudC5nZXRFbGVtZW50QnlJZChsaWdodCkuaW5uZXJIVE1MPSAnPGlmcmFt ZSBpZD0ibGZyYW1lIiBzcmM9IicrY29tbWVudHNVcmxQcmVmaXgrJ1wvZ2VucmVn XC9qc3BcL1RPTFwvY29tbWVudHNMb2dpbi5qc3A/YXJ0aWNsZVVybD0nK2FydGlj bGVVcmwrJyIgd2lkdGg9IjQyNiIgaGVpZ2h0PSIyOTQiIHNjcm9sbGluZz0ibm8i IGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD48XC9p ZnJhbWU+JyA7DQoJICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxm cmFtZSIpLnNyYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZnJhbWUiKS5z cmM7DQoJICAgICAgICAgDQogICAgICAgIH1lbHNlIGlmIChsaWdodCA9PSAnbG9n aW4tbGlnaHQnICYmIG9Ccm93c2VyT2JqZWN0LmN1cnJlbnRCcm93c2VyKCkgIT0g IklFIikNCiAgICAgICAgew0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKGxpZ2h0KS5pbm5lckhUTUw9JzxpZnJhbWUgc3JjPSInK2NvbW1l bnRzVXJsUHJlZml4KydcL2dlbnJlZ1wvanNwXC9UT0xcL2NvbW1lbnRzTG9naW4u anNwP2FydGljbGVVcmw9JythcnRpY2xlVXJsKyciIHN0eWxlPSJvdmVyZmxvdzpo aWRkZW47IiBzY3JvbGxpbmc9Im5vIiBjbGFzcz0iZmxvYXQtbGVmdCIgd2lkdGg9 IjQyNiIgaGVpZ2h0PSIyOTQiIGFsaWduPSJsZWZ0IiBmcmFtZWJvcmRlcj0wIG1h cmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+PFwvaWZyYW1lPicgOw0KDQogICAg ICAgIH1lbHNlIGlmIChsaWdodCA9PSAnbG9naW4tZmFkZScpDQogICAgICAgIHsN CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsaWdodCku aW5uZXJIVE1MPScnOw0KICAgICAgICB9ZWxzZSBpZihsaWdodCA9PSAncmVnaXN0 ZXItbGlnaHQnICYmIG9Ccm93c2VyT2JqZWN0LmN1cnJlbnRCcm93c2VyKCk9PSAi SUUiKXsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChs aWdodCkuaW5uZXJIVE1MPSc8aWZyYW1lIGlkPSJyZnJhbWUiIHNyYz0iJytjb21t ZW50c1VybFByZWZpeCsnXC9nZW5yZWdcL2pzcFwvVE9MXC9jb21tZW50c1JlZ2lz dHJhdGlvbi5qc3A/YXJ0aWNsZVVybD0nK2FydGljbGVVcmwrJyIgc2Nyb2xsaW5n PSJubyIgd2lkdGg9IjQyNiIgaGVpZ2h0PSI4OTAiIGZyYW1lYm9yZGVyPTAgbWFy Z2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD48XC9pZnJhbWU+Jzs7DQogICAgICAg ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJmcmFtZSIpLnNyYyA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZnJhbWUiKS5zcmM7DQoNCiAgICAg ICAgfWVsc2UgaWYgKGxpZ2h0ID09ICdyZWdpc3Rlci1saWdodCcgJiYgb0Jyb3dz ZXJPYmplY3QuY3VycmVudEJyb3dzZXIoKSAhPSAiSUUiKQ0KICAgICAgICB7DQog ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGlnaHQpLmlu bmVySFRNTD0nPGlmcmFtZSBzcmM9IicrY29tbWVudHNVcmxQcmVmaXgrJ1wvZ2Vu cmVnXC9qc3BcL1RPTFwvY29tbWVudHNSZWdpc3RyYXRpb24uanNwP2FydGljbGVV cmw9JythcnRpY2xlVXJsKyciIHNjcm9sbGluZz0ibm8iIGNsYXNzPSJmbG9hdC1s ZWZ0IiB3aWR0aD0iNDI2IiBoZWlnaHQ9Ijg5MCIgYWxpZ249ImxlZnQiIGZyYW1l Ym9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9MD48XC9pZnJhbWU+ Jzs7DQogICAgICAgIH1lbHNlIGlmIChsaWdodCA9PSAncmVnaXN0ZXItZmFkZScp DQogICAgICAgIHsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChsaWdodCkuaW5uZXJIVE1MPScnOw0KICAgICAgICB9ZWxzZSBpZihsaWdo dCA9PSAncGFydGljaXBhdGUtbGlnaHQnICYmIG9Ccm93c2VyT2JqZWN0LmN1cnJl bnRCcm93c2VyKCk9PSAiSUUiKXsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZChsaWdodCkuaW5uZXJIVE1MPSAnPGlmcmFtZSBpZD0icGZy YW1lIiBzcmM9IicrY29tbWVudHNVcmxQcmVmaXgrJ1wvZ2VucmVnXC9qc3BcL1RP TFwvY29tbWVudHNMb2dpbi5qc3A/YXJ0aWNsZVVybD0nK2FydGljbGVVcmwrJyZh Y3Rpb249Y29uZmlybSIgc2Nyb2xsaW5nPSJubyIgd2lkdGg9IjQyNiIgaGVpZ2h0 PSIyNjciIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWlnaHQ9 MD48XC9pZnJhbWU+JyA7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoInBmcmFtZSIpLnNyYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCJwZnJhbWUiKS5zcmM7DQoNCiAgICAgICAgfWVsc2UgaWYgKGxpZ2h0ID09ICdw YXJ0aWNpcGF0ZS1saWdodCcgJiYgb0Jyb3dzZXJPYmplY3QuY3VycmVudEJyb3dz ZXIoKSAhPSAiSUUiKQ0KICAgICAgICB7DQogICAgICAgICAgICAgICAgZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQobGlnaHQpLmlubmVySFRNTD0gJzxpZnJhbWUgc3Jj PSInK2NvbW1lbnRzVXJsUHJlZml4KydcL2dlbnJlZ1wvanNwXC9UT0xcL2NvbW1l bnRzTG9naW4uanNwP2FydGljbGVVcmw9JythcnRpY2xlVXJsKycmYWN0aW9uPWNv bmZpcm0iIHN0eWxlPSJvdmVyZmxvdzpoaWRkZW47IiBzY3JvbGxpbmc9Im5vIiBj bGFzcz0iZmxvYXQtbGVmdCIgd2lkdGg9IjQyNiIgaGVpZ2h0PSIyNjciIGFsaWdu PSJsZWZ0IiBmcmFtZWJvcmRlcj0wIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0 PTA+PFwvaWZyYW1lPicgOw0KICAgICAgICB9ZWxzZSBpZiAobGlnaHQgPT0gJ3Bh cnRpY2lwYXRlLWZhZGUnKQ0KICAgICAgICB7DQogICAgICAgICAgICAgICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQobGlnaHQpLmlubmVySFRNTD0nJzsNCiAgICAg ICAgfWVsc2UgaWYgKGxpZ2h0ID09ICdsb2dvdXQtbGlnaHQnICYmIG9Ccm93c2Vy T2JqZWN0LmN1cnJlbnRCcm93c2VyKCk9PSAiSUUiKXsNCiAgICAgICAgICAgICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsaWdodCkuaW5uZXJIVE1MPSAnPGlm cmFtZSBpZD0ibG9nb3V0ZnJhbWUiIHNyYz0iJytjb21tZW50c1VybFByZWZpeCsn XC9nZW5yZWdcL2pzcFwvVE9MXC9jb21tZW50c0xvZ291dC5qc3A/YXJ0aWNsZVVy bD0nK2FydGljbGVVcmwrJyIgc2Nyb2xsaW5nPSJubyIgd2lkdGg9IjQyNiIgaGVp Z2h0PSIyNjciIGZyYW1lYm9yZGVyPTAgbWFyZ2lud2lkdGg9MCBtYXJnaW5oZWln aHQ9MD48XC9pZnJhbWU+JyA7DQoJCSAgLy9hbGVydChkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgibG9nb3V0ZnJhbWUiKS5zcmMpOw0KICAgICAgICAgICAgICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dvdXRmcmFtZSIpLnNyYyA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCJsb2dvdXRmcmFtZSIpLnNyYzsNCg0KICAgICAg ICB9ZWxzZSBpZiAobGlnaHQgPT0gJ2xvZ291dC1saWdodCcgJiYgb0Jyb3dzZXJP YmplY3QuY3VycmVudEJyb3dzZXIoKSAhPSAiSUUiKQ0KICAgICAgICB7DQogICAg ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGlnaHQpLmlubmVy SFRNTD0gJzxpZnJhbWUgc3JjPSInK2NvbW1lbnRzVXJsUHJlZml4KydcL2dlbnJl Z1wvanNwXC9UT0xcL2NvbW1lbnRzTG9nb3V0LmpzcD9hcnRpY2xlVXJsPScrYXJ0 aWNsZVVybCsnJmFjdGlvbj1jb25maXJtIiBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVu OyIgc2Nyb2xsaW5nPSJubyIgY2xhc3M9ImZsb2F0LWxlZnQiIHdpZHRoPSI0MjYi IGhlaWdodD0iMjY3IiBhbGlnbj0ibGVmdCIgZnJhbWVib3JkZXI9MCBtYXJnaW53 aWR0aD0wIG1hcmdpbmhlaWdodD0wPjxcL2lmcmFtZT4nIDsNCiAgICAgICAgfWVs c2UgaWYgKGxpZ2h0ID09ICdsb2dvdXQtZmFkZScpew0KICAgICAgICAJCWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGxpZ2h0KS5pbm5lckhUTUw9Jyc7DQoJIH0NCg0K CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxpZ2h0KS5zdHlsZS5kaXNwbGF5PSdi bG9jayc7DQp9DQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovL0ZVTkNUSU9O OiBmUmVtb3ZlT3ZlcmxheQ0KLy9ERVNDUklQVElPTjogQSBmdW5jdGlvbiB0byBz aG93L2hpZGUgdGhlIGxvZ2luIHBvcCB1cCBhbmQgcGFnZQ0KLy9BUkdVTUVOVFM6 IGxpZ2h0IC0gaWQgb2YgdGhlIGRpdiB0byBoaWRlIGFuZCBmYWRlIC0gaWQgdG8g ZGlzcGxheSB0aGUgYmFja2dyb3VuZA0KLy9SRVRVUk46IE5vbmUNCi8vDQpmdW5j dGlvbiBmUmVtb3ZlT3ZlcmxheShsaWdodCxmYWRlKSB7DQoJZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQobGlnaHQpLnN0eWxlLmRpc3BsYXk9J25vbmUnOw0KCWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGZhZGUpLnN0eWxlLmRpc3BsYXk9J25vbmUnOw0K fQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovL0ZVTkNUSU9OOiBmUmVt b3ZlT3ZlcmxheVJlc2V0DQovL0RFU0NSSVBUSU9OOiBBIGZ1bmN0aW9uIHRvIHNo b3cvaGlkZSB0aGUgcmVnbiBwb3AgdXAgYW5kIHBhZ2UNCi8vQVJHVU1FTlRTOiBs aWdodCAtIGlkIG9mIHRoZSBkaXYgdG8gaGlkZSBhbmQgZmFkZSAtIGlkIHRvIGRp c3BsYXkgdGhlIGJhY2tncm91bmQNCi8vUkVUVVJOOiBOb25lDQovLw0KZnVuY3Rp b24gZlJlbW92ZU92ZXJsYXlSZXNldChsaWdodCxmYWRlLGZvcm0pIHsNCglkb2N1 bWVudC5nZXRFbGVtZW50QnlJZChmb3JtKS5yZXNldCgpOw0KDQoJaWYoZm9ybSA9 PSAiY29tbWVudFJlZ2lzdHJhdGlvbkZvcm0iKXsNCgkJZlJlc2V0UmVnaXN0cmF0 aW9uRXJyb3JzKCk7DQoJCWZSZWxvYWRDYXB0Y2hhKCk7DQoJfQ0KCWlmKGZvcm0g PT0gImNvbW1lbnRMb2dpbkZvcm0iKXsNCgkJZlJlc2V0TG9naW5FcnJvcnMoKTsN Cgl9DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGlnaHQpLnN0eWxlLmRpc3Bs YXk9J25vbmUnOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZhZGUpLnN0eWxl LmRpc3BsYXk9J25vbmUnOw0KCQ0KfQ0KDQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCi8vRlVOQ1RJT046IGZDYWxsV2lkZ2V0DQovL0RFU0NSSVBUSU9OOiBB IGZ1bmN0aW9uIHRvIHJlZnJlc2ggdGhlIHdpZGdldA0KLy9BUkdVTUVOVFM6IA0K Ly9SRVRVUk46IE5vbmUNCi8vDQpmdW5jdGlvbiBmQ2FsbFdpZGdldCgpew0KDQoJ ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpZGdldC1lbmFibGUnKS5zdHlsZS5k aXNwbGF5PSdub25lJzsJDQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dpZGdl dC1kaXNhYmxlJykuc3R5bGUuZGlzcGxheT0nYmxvY2snOwkNCn0NCg0KZG9jdW1l bnQub25tb3VzZWRvd249ZnVuY3Rpb24oKSB7CQ0KCX0NCg0KDQovLy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQovL0ZVTkNUSU9OOiBnZXREaXNwbGF5TmFtZQ0KLy9E RVNDUklQVElPTjogQSBmdW5jdGlvbiB0byBnZXQgZGlzcGxheSBuYW1lIGZvciB0 aGUgdXNlcg0KLy9BUkdVTUVOVFM6IA0KLy9SRVRVUk46IE5vbmUNCi8vLS0tLS0t LS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKCl7DQoJdmFy IGF0Q29va2llID0gZ2V0Q29va2llKCdhdCcpOw0KCXZhciBkaXNwbGF5TmFtZSA9 ICcnOw0KCWlmKGF0Q29va2llKXsNCgkJdmFyIGNvb2tpZVZhbEFycmF5ID0gYXRD b29raWUuc3BsaXQoJyYnKTsNCgkJZm9yKHZhciBpdHIgPSAwIDsgaXRyIDwgY29v a2llVmFsQXJyYXkubGVuZ3RoIDsgaXRyICsrICl7DQoJCQkJaWYoY29va2llVmFs QXJyYXlbaXRyXS5pbmRleE9mKCdhPScpICE9IC0xKXsNCgkJCQkJDQoJCQkJCWRp c3BsYXlOYW1lID0gcmVwbGFjZUFsbChjb29raWVWYWxBcnJheVtpdHJdLCdhPScs JycpOw0KCQkJCQkNCgkJCQkJZGlzcGxheU5hbWUgPSByZXBsYWNlQWxsKGRpc3Bs YXlOYW1lLCcrJywnICcpOw0KCQkJCQlicmVhazsNCgkJCQl9CQ0KCQl9DQoJfQ0K CQ0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXNwbGF5LW5hbWUnKS5pbm5l ckhUTUwgPSBkaXNwbGF5TmFtZTsNCn0NCg0KDQovLy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQovL0ZVTkNUSU9OOiBmR2V0TG9naW5TdGF0dXMNCi8vREVTQ1JJUFRJ T046IEEgZnVuY3Rpb24gdG8gZ2V0IHRoZSBsb2dpbiBzdGF0dXMNCi8vQVJHVU1F TlRTOiANCi8vUkVUVVJOOiBOb25lDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBmR2V0TG9naW5TdGF0dXMoKXsNCgl2YXIgYXRDb29raWUgPSBnZXRD b29raWUoJ2F0Jyk7DQoJdmFyIGVyaWdodHNDb29raWUgPSBnZXRDb29raWUoJ0VS SUdIVFMnKTsNCgl2YXIgc3RyQWZ0ZXJMb2dpbiA9Jyc7DQoJDQoJaWYoIGF0Q29v a2llICYmIGVyaWdodHNDb29raWUpew0KCQl2YXIgY3VycmVudERpc3BsYXlOYW1l ID0gIGZHZXRDdXJyZW50RGlzcGxheU5hbWUoKTsNCgkJc3RyQWZ0ZXJMb2dpbis9 Jwk8ZGl2IGNsYXNzPSJwYWRkaW5nLWxlZnQtcmlnaHQtMTAiPjxkaXYgY2xhc3M9 InBhZGRpbmctdG9wLTEwIj48XC9kaXY+PHAgY2xhc3M9InNtYWxsIHBhZGRpbmct Ym90dG9tLTUgY29sb3ItNjY2Ij48c3Ryb25nPicrIHNpZ25pblRleHQgKyc8XC9z dHJvbmc+PHN0cm9uZz4gJytjdXJyZW50RGlzcGxheU5hbWUrJzxcL3N0cm9uZz48 XC9wPic7DQoJCXN0ckFmdGVyTG9naW4rPScJPGRpdiBjbGFzcz0icGFkZGluZy10 b3AtNSI+PFwvZGl2Pic7DQoJCXN0ckFmdGVyTG9naW4rPScJPGRpdiBjbGFzcz0i ZmxvYXQtbGVmdCBwYWRkaW5nLXRvcC0yIj48YSBjbGFzcz0ibGluay0wNmMgc21h bGwiIGhyZWY9IicrbXlQcm9maWxlVXJsKyciPjxzdHJvbmc+JytteVByb2ZpbGVU ZXh0Kyc8XC9zdHJvbmc+PFwvYT48XC9kaXY+JzsNCgkJc3RyQWZ0ZXJMb2dpbis9 Jwk8ZGl2IGNsYXNzPSJmbG9hdC1sZWZ0IGNvbW1lbnQtYm9yZGVyLXJpZ2h0IHBh ZGRpbmctbGVmdC02IGhlaWdodC0yMCI+PFwvZGl2Pic7DQoJCXN0ckFmdGVyTG9n aW4rPScJPGRpdiBjbGFzcz0iZmxvYXQtbGVmdCBwYWRkaW5nLXRvcC0yIHBhZGRp bmctbGVmdC04Ij48YSBjbGFzcz0ibGluay0wNmMgc21hbGwiIGhyZWY9ImphdmFz Y3JpcHQ6dm9pZCgwKSIgb25jbGljayA9ICJmQ2FsbE92ZXJsYXkoXCdsb2dvdXQt bGlnaHRcJyxcJ2xvZ291dC1mYWRlXCcpOyI+PHN0cm9uZz4nK2xvZ291dFRleHQr JzxcL3N0cm9uZz48XC9hPjxcL2Rpdj4nOw0KCQlzdHJBZnRlckxvZ2luKz0nICAJ PGRpdiBjbGFzcz0iY2xlYXIiPjxcL2Rpdj48XC9kaXY+JzsNCgkJDQoJCWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCJsb2dpbi1zdGF0dXMiKS5pbm5lckhUTUw9c3Ry QWZ0ZXJMb2dpbjsNCgl9DQoJZWxzZSBpZiggIWF0Q29va2llICYmIGVyaWdodHND b29raWUpew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9naW4tc3RhdHVz IikuaW5uZXJIVE1MPXN0ckF0UGFydGljaXBhdGU7DQoJfQ0KCWVsc2V7DQoJCWRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dpbi1zdGF0dXMiKS5pbm5lckhUTUw9 c3RyQmVmb3JlTG9naW47DQoJfQ0KfQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQovL0ZVTkNUSU9OOiBmR2V0Q3VycmVudERpc3BsYXlOYW1lDQovL0RFU0NS SVBUSU9OOiBBIGZ1bmN0aW9uIHRvIGdldCB0aGUgZGlzcGxheSAgbmFtZQ0KLy9B UkdVTUVOVFM6IA0KLy9SRVRVUk46IE5vbmUNCi8vLS0tLS0tLS0tLS0tLS0tLS0t LS0NCmZ1bmN0aW9uIGZHZXRDdXJyZW50RGlzcGxheU5hbWUoKXsNCgkNCgl2YXIg YXRDb29raWUgPSBnZXRDb29raWUoJ2F0Jyk7DQoJdmFyIGRpc3BsYXlOYW1lID0g Jyc7DQoJaWYoYXRDb29raWUpew0KCQl2YXIgY29va2llVmFsQXJyYXkgPSBhdENv b2tpZS5zcGxpdCgnJicpOw0KCQlmb3IodmFyIGl0ciA9IDAgOyBpdHIgPCBjb29r aWVWYWxBcnJheS5sZW5ndGggOyBpdHIgKysgKXsNCgkJCQlpZihjb29raWVWYWxB cnJheVtpdHJdLmluZGV4T2YoJ2E9JykgIT0gLTEpew0KCQkJCQlkaXNwbGF5TmFt ZSA9IGNvb2tpZVZhbEFycmF5W2l0cl0ucmVwbGFjZSgnYT0nLCcnKS5yZXBsYWNl KCcrJywnICcpOw0KCQkJCQlicmVhazsNCgkJCQl9CQ0KCQl9DQoJfQ0KCXJldHVy biBkaXNwbGF5TmFtZTsNCn0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K Ly9GVU5DVElPTjogZkF1dG9SZXNpemVDb21tZW50SWZyYW1lDQovL0RFU0NSSVBU SU9OOiBBIGZ1bmN0aW9uIHRvIHJlc2l6ZSB0aGUgY29tbWVudHMgaW5wdXQgd2lk Z2V0DQovLwkJCSAgIGRlcGVuZGluZyB1cG9uIHRoZSBzcGFjZSBvY2N1cGllZCBi eSB0aGFuayB5b3UgDQovLwkJCSAgIGVycm9yIHRleHQNCi8vQVJHVU1FTlRTOiAN Ci8vUkVUVVJOOiBOb25lDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBmQXV0b1Jlc2l6ZUNvbW1lbnRJZnJhbWUoKSB7DQoJdmFyIGlmcmFtZSA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50c2lmcmFtZScpOw0KCWlmICgh aWZyYW1lKSB7IHJldHVybjsgfQ0KCQ0KCWZ1bmN0aW9uIGFkZEV2ZW50KGVsZW0s IG5hbWUsIGZuKSB7DQoJCWlmIChlbGVtLmFkZEV2ZW50TGlzdGVuZXIpDQoJCQll bGVtLmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgZm4sIGZhbHNlKTsNCgkJZWxzZSBp ZiAoZWxlbS5hdHRhY2hFdmVudCkNCgkJCWVsZW0uYXR0YWNoRXZlbnQoJ29uJyAr IG5hbWUsIGZuKTsgDQoJfQ0KCWZ1bmN0aW9uIGlmcmFtZUZpbmRlcigpIHsNCgkg ICAgdmFyIGRvYyA9IHdpbmRvdy5mcmFtZXNbJ2NvbW1lbnRzaWZyYW1lJ10uZG9j dW1lbnQNCgkgICAgCSxmb3VuZCA9IGZhbHNlICwgZm9ybSAsIHRleHRhcmVhICwg Y29udGFpbmVyICwgaXNQcmVzZW50ID0gZmFsc2U7DQoJICAgIGlmKGRvYyl7DQoJ ICAgIAlmb3JtID0gZG9jLmZvcm1zWzBdOw0KCSAgICAJY29udGFpbmVyID0gZG9j LmdldEVsZW1lbnRCeUlkKCdDb21tZW50c0NvbnRhaW5lcicpOw0KCSAgICB9DQoJ ICAgaWYoZm9ybSl7IA0KCSAgICAJdGV4dGFyZWEgPSBmb3JtLmVsZW1lbnRzWydj b21tZW50LkJvZHknXQ0KCQkgICAgLy8gc2V0IGJhY2tncm91bmQgY29sb3VyIGZv ciBkb2N1bWVudCBlbGVtZW50IChmaXggSUUgYnVnKQ0KCQkgICAgaWYgKC8qQGNj X29uIUAqL2ZhbHNlICYmIGNvbnRhaW5lciAmJiBjb250YWluZXIuY3VycmVudFN0 eWxlKQ0KCQkgICAgICBkb2MuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmJhY2tncm91 bmRDb2xvciA9IGNvbnRhaW5lci5jdXJyZW50U3R5bGUuYmFja2dyb3VuZENvbG9y Ow0KCQkgICAgDQoJCSAgICANCgkJCWZvciAodmFyIGkgPSAwLCBlbGVtcyA9IGZv cm0uZWxlbWVudHM7IGVsZW0gPSBlbGVtc1tpXTsgaSsrKSB7DQoJCQkJaWYgKGVs ZW0udHlwZSA9PSAnc3VibWl0Jykgew0KCQkJCQlmb3VuZCA9IHRydWU7DQoJCQkJ CWJyZWFrOw0KCQkJCX0NCgkJCX0NCgkJCQ0KCQkJaWYgKGZvdW5kKSB7DQoJCQkJ dmFyIG5vZGUgPSBlbGVtLCB0b3AgPSAwOw0KCQkJCWRvIHsNCgkJCQkJdG9wICs9 IG5vZGUub2Zmc2V0VG9wOw0KCQkJCX0gd2hpbGUobm9kZSA9IG5vZGUub2Zmc2V0 UGFyZW50KTsNCgkJCQkNCgkJCQlhZGRFdmVudChlbGVtLCAnY2xpY2snLCBmdW5j dGlvbihlKSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQoJCQkJCXZhciBmcmFt ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50c2lmcmFtZScpOw0K CQkJCQlmcmFtZS5zdHlsZS5oZWlnaHQgPSAodG9wICsgZWxlbS5vZmZzZXRIZWln aHQgKyAodGV4dGFyZWEudmFsdWUgIT09ICcnID8gMTYgOiAyNykpICsgJ3B4JzsN CgkJCQl9LDEwMCkgfSk7DQoJCQl9DQoJCX0NCgl9DQoJYWRkRXZlbnQoaWZyYW1l LCAnbG9hZCcsIGlmcmFtZUZpbmRlcik7DQp9DQovLy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQovL0ZVTkNUSU9OOiBmR2V0UGx1Y2tSZXF1ZXN0QmF0Y2gNCi8vREVT Q1JJUFRJT046IEEgZnVuY3Rpb24gZ2V0IHRoZSByZXF1ZXN0IGJhdGNoIGZvciBQ bHVjaw0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gZkdldFBs dWNrUmVxdWVzdEJhdGNoKCl7DQoJcmV0dXJuIChuZXcgUmVxdWVzdEJhdGNoKCkp Ow0KfQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovL0ZVTkNUSU9OOiBm Q3JlYXRlUmVxdWVzdEJhdGNoDQovL0RFU0NSSVBUSU9OOiBBIGZ1bmN0aW9uIGdl dCB0aGUgcmVxdWVzdCBiYXRjaCBmb3IgUGx1Y2sNCi8vQVJHVU1FTlRTOiByZXF1 ZXN0QmF0Y2ggLSBiYXRjaCBvZiByZXF1ZXN0cyB0byBiZSBzZW50IHRvIHBsdWNr IA0KLy8JCQkgYXJ0aWNsZUlkIC0gVW5pcXVlIGlkIG9mIGFuIGFydGljbGUNCi8v LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGZDcmVhdGVSZXF1ZXN0 QmF0Y2goIHJlcXVlc3RCYXRjaCAsIGFydGljbGVJZCApIHsNCgl2YXIgYXJ0aWNs ZUtleSA9IG5ldyBBcnRpY2xlS2V5KGFydGljbGVJZCk7DQoJcmVxdWVzdEJhdGNo LkFkZFRvUmVxdWVzdChhcnRpY2xlS2V5KTsgICAgICAgICAgIA0KDQp9DQoNCi8v LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vRlVOQ1RJT046IGZTdWJtaXRSZXFO b09mQ29tbWVudHMNCi8vREVTQ1JJUFRJT046IEEgZnVuY3Rpb24gdG8gc3VibWl0 IHJlcXVlc3QgYmF0Y2ggdG8gUGx1Y2sNCi8vQVJHVU1FTlRTOiByZXF1ZXN0QmF0 Y2ggLSBiYXRjaCBvZiByZXF1ZXN0cyB0byBiZSBzZW50IHRvIHBsdWNrIA0KLy8J CQkgZGFhcGlCZWdpblJlcXVlc3RVcmwgLSBwbHVjayBkYWFwaSB1cmwNCi8vLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGZTdWJtaXRSZXFOb09mQ29t bWVudHMoIHJlcXVlc3RCYXRjaCAsIGRhYXBpQmVnaW5SZXF1ZXN0VXJsICl7DQoJ cmVxdWVzdEJhdGNoLkJlZ2luUmVxdWVzdChkYWFwaUJlZ2luUmVxdWVzdFVybCAs IGZSZW5kZXJOdW1iZXJPZkNvbW1lbnRzTG9ja1VwKTsNCn0NCg0KZnVuY3Rpb24g ZlN1Ym1pdE1vc3RDb21tZW50ZWQoZGFhcGlCZWdpblJlcXVlc3RVcmwpew0KCQ0K CXZhciByZXF1ZXN0QmF0Y2ggPSBuZXcgUmVxdWVzdEJhdGNoKCk7DQoJdmFyIHNl Y3Rpb25zID0gbmV3IEFycmF5KG5ldyBTZWN0aW9uKCJBbGwiKSk7ICANCiAgICAg ICB2YXIgY2F0ZWdvcmllcyA9IG5ldyBBcnJheShuZXcgQ2F0ZWdvcnkoIkFsbCIp KTsgIA0KICAgICAgIHZhciB1c2VyVGllcnMgPSBwbHVja1VzZXJUaWVycy5zcGxp dCgnLCcpOw0KICAgICAgIA0KICAgICAgIHZhciBjb250cmlidXRvcnMgPSBuZXcg QXJyYXkoKTsgIA0KICAgICAgIGZvcih2YXIgdGllckl0ciA9IDAgOyB0aWVySXRy IDwgdXNlclRpZXJzLmxlbmd0aCA7IHRpZXJJdHIrKyApeyAgIAkgICANCiAgICAJ ICAgY29udHJpYnV0b3JzW3RpZXJJdHJdID0gbmV3IFVzZXJUaWVyKHVzZXJUaWVy c1t0aWVySXRyXSk7IA0KICAgICAgIH0gICAgICAgICAgIA0KICAgICAgIHZhciBh Y3Rpdml0eSA9IG5ldyBBY3Rpdml0eSgiQ29tbWVudGVkIik7ICANCiAgICAgICB2 YXIgYWdlID0gZXZhbChtb3N0Q29tbWVudGVkRGF5cyk7IC8vIG1heGltdW0gYWdl IGluIGRheXMgIA0KICAgICAgIHZhciBudW1JdGVtc1RvR2V0ID0gNDsgIA0KICAg ICAgICAgICAgICAgDQogICAgICAgIC8vIGNyZWF0ZSBhbmQgc2VuZCByZXF1ZXN0 ICANCiAgICAgICAgdmFyIGRpc2NvdmVyeUFjdGlvbiA9IG5ldyBEaXNjb3ZlckFy dGljbGVzQWN0aW9uKCAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlY3Rpb25zLCAgDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNhdGVnb3JpZXMsICANCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udHJpYnV0b3JzLCAgDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5LCAgDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZSwgIA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1JdGVt c1RvR2V0KTsgIA0KICAgICAgICAgICAgICAgICAgIA0KICAgICAgIHJlcXVlc3RC YXRjaC5BZGRUb1JlcXVlc3QoZGlzY292ZXJ5QWN0aW9uKTsgICAgIA0KICAgIA0K CXJlcXVlc3RCYXRjaC5CZWdpblJlcXVlc3QoZGFhcGlCZWdpblJlcXVlc3RVcmwg LCBmUmVuZGVyTW9zdENvbW1lbnRlZCk7CQ0KfQ0KDQpmdW5jdGlvbiBmUmVuZGVy TW9zdENvbW1lbnRlZChyZXNwb25zZUJhdGNoKXsNCgkNCgl2YXIgb3V0cHV0ID0g IiI7DQoJaWYocmVzcG9uc2VCYXRjaC5SZXNwb25zZXMubGVuZ3RoID4gMCl7DQog ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VQbHVjayA9IHJlc3Bv bnNlQmF0Y2guUmVzcG9uc2VzWzBdOw0KCQkJICANCg0KICAgICAgICAgICAgICAg ICAgICAgICAgZm9yKHZhciBpPTA7IGk8IHJlc3BvbnNlUGx1Y2suRGlzY292ZXJB cnRpY2xlc0FjdGlvbi5EaXNjb3ZlcmVkQXJ0aWNsZXMubGVuZ3RoOyBpKyspew0K CQkJCSAgICANCgkJICAgICAgICAgICAgICAgICAgYXJ0aWNsZUhlYWRsaW5lc1tp XSA9IHJlc3BvbnNlUGx1Y2suRGlzY292ZXJBcnRpY2xlc0FjdGlvbi5EaXNjb3Zl cmVkQXJ0aWNsZXNbaV0uUGFnZVRpdGxlOw0KCQ0KCQkJCSAgICANCgkJCQkgICAg YXJ0aWNsZVBhdGhzW2ldID0gcmVzcG9uc2VQbHVjay5EaXNjb3ZlckFydGljbGVz QWN0aW9uLkRpc2NvdmVyZWRBcnRpY2xlc1tpXS5QYWdlVXJsOw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAg IH0NCiANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg ICAgICAgICAgDQogICAgICAgIH0NCgkNCgkJCWZvcih2YXIgaj0wOyBqPGFydGlj bGVIZWFkbGluZXMubGVuZ3RoOyBqKyspew0KCQkJCQl2YXIgaGVhZGxpbmUgPSBh cnRpY2xlSGVhZGxpbmVzW2pdOw0KCQkJCQlpZihhcnRpY2xlSGVhZGxpbmVzW2pd Lmxlbmd0aD49NDUpew0KCQkJCQkJaGVhZGxpbmUgPSBhcnRpY2xlSGVhZGxpbmVz W2pdLnN1YnN0cmluZygwLDQ0KSsiLi4uIjsNCgkJCQkJfQ0KCSAgIAkJCQlvdXRw dXQgID0gb3V0cHV0ICArICI8bGk+PGEgaHJlZj0iK2FydGljbGVQYXRoc1tqXSsi IGNsYXNzPVwibGluay02NjZcIj4iK2hlYWRsaW5lICsiPFwvYT48XC9saT4iOyAN CgkJCSAgfQ0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb3N0Y29tbWVudGVk IikuaW5uZXJIVE1MID0gb3V0cHV0Ow0KDQoNCn0NCg0KLy8tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KLy9GVU5DVElPTjogZlJlbmRlck51bWJlck9mQ29tbWVudHNM b2NrVXANCi8vREVTQ1JJUFRJT046IEEgZnVuY3Rpb24gdG8gc2V0IHRoZSBub09m Q29tbWVudHMgZm9yIGluZGl2aWR1YWwgYXJ0aWNsZXMNCi8vQVJHVU1FTlRTOnJl c3BvbnNlQmF0Y2ggaXMgdGhlIHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gUGx1Y2sN Ci8vDQpmdW5jdGlvbiBmUmVuZGVyTnVtYmVyT2ZDb21tZW50c0xvY2tVcChyZXNw b25zZUJhdGNoKSB7DQoJdmFyIHJlc3BvbnNlSXRyICwgYXJ0SXRyICwgc3Bhbk5v ID0gMTsNCgl2YXIgcmVzcG9uc2VMZW5ndGggPSByZXNwb25zZUJhdGNoLlJlc3Bv bnNlcy5sZW5ndGg7DQoJDQoJaWYocmVzcG9uc2VMZW5ndGggIT0gMCl7DQoJCWZv ciggcmVzcG9uc2VJdHIgPSAwIDsgcmVzcG9uc2VJdHIgPCByZXNwb25zZUxlbmd0 aCA7IHJlc3BvbnNlSXRyKysgKXsNCgkJCSB2YXIgcmVzcG9uc2VQbHVjayA9IHJl c3BvbnNlQmF0Y2guUmVzcG9uc2VzW3Jlc3BvbnNlSXRyXTsNCgkJCSBpZiAocmVz cG9uc2VQbHVjay5BcnRpY2xlICE9IG51bGwpIHsgDQoJCQkJIA0KCQkJCSBub09m Q29tbWVudHMgPSByZXNwb25zZVBsdWNrLkFydGljbGUuQ29tbWVudHMuTnVtYmVy T2ZDb21tZW50czsNCgkJCQkgaWYobm9PZkNvbW1lbnRzID09ICcwJyl7DQoJCQkJ CSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbWVudC1jb3VudC0nK3NwYW5O bykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJCQkgfQ0KCQkJCSBlbHNlIGlm ICggbm9PZkNvbW1lbnRzID09ICcxJyApew0KCQkJCQkgaWYoc2hvd1BpcGUpDQoJ CQkJCQkgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lbnQtY291bnQtJytz cGFuTm8pLmlubmVySFRNTCA9ICcgfCAnKyBub09mQ29tbWVudHMgKyAnIENvbW1l bnQnOw0KCQkJCQkgZWxzZQ0KCQkJCQkJIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdjb21tZW50LWNvdW50LScrc3Bhbk5vKS5pbm5lckhUTUwgPSBub09mQ29tbWVu dHMgKyAnIENvbW1lbnQnOw0KCQkJCX0NCgkJCQkgZWxzZXsNCgkJCQkJIGlmKHNo b3dQaXBlKQ0KCQkJCQkJIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50 LWNvdW50LScrc3Bhbk5vKS5pbm5lckhUTUwgPSAnIHwgJysgbm9PZkNvbW1lbnRz ICsgJyBDb21tZW50cyc7DQoJCQkJCSBlbHNlDQoJCQkJCQkgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2NvbW1lbnQtY291bnQtJytzcGFuTm8pLmlubmVySFRNTCA9 ICBub09mQ29tbWVudHMgKyAnIENvbW1lbnRzJzsNCgkJCQkJDQoJCQkJIH0NCgkJ CX0NCgkJCSBzcGFuTm8rKzsNCgkJfQ0KCQl9ZWxzZXsNCgkJCWZvciggYXJ0SXRy ID0gMSA7IGFydEl0ciA8PSBub09mQXJ0aWNsZXMgOyBhcnRJdHIgKysgKXsNCgkJ CQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbWVudC1jb3VudC0nK2FydEl0 cikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJCX0NCgkJfQkJDQp9DQoNCi8v LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vRlVOQ1RJT046IHJlcGxhY2VBbGwN Ci8vREVTQ1JJUFRJT046IEEgZnVuY3Rpb24gdG8gcmVwbGFjZSBhbGwgb2NjdXJl bmNlcyBvZiBhIGdpdmVuIHN0cmluZw0KLy9BUkdVTUVOVFM6IA0KLy9SRVRVUk46 IE5vbmUNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHJlcGxhY2VB bGwoU291cmNlLHN0cmluZ1RvRmluZCxzdHJpbmdUb1JlcGxhY2Upew0KDQoJICB2 YXIgdGVtcCA9IFNvdXJjZTsNCg0KCSAgICB2YXIgaW5kZXggPSB0ZW1wLmluZGV4 T2Yoc3RyaW5nVG9GaW5kKTsNCg0KCSAgICAgICAgd2hpbGUoaW5kZXggIT0gLTEp ew0KDQoJICAgICAgICAgICAgdGVtcCA9IHRlbXAucmVwbGFjZShzdHJpbmdUb0Zp bmQsc3RyaW5nVG9SZXBsYWNlKTsNCg0KCSAgICAgICAgICAgIGluZGV4ID0gdGVt cC5pbmRleE9mKHN0cmluZ1RvRmluZCk7DQoNCgkgICAgICAgIH0NCg0KCSAgICAg ICAgcmV0dXJuIHRlbXA7DQoNCgl9DQovLy0tPg== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=cookie.js Content-Type: application/javascript; charset=ISO-8859-1; name=cookie.js Content-Location: http://business.timesonline.co.uk/tol/js/cookie.js Content-Transfer-Encoding: Base64 Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRlVOQ1RJT046IHNldF9jb29r aWUKLy8gREVTQ1JJUFRJT046IFNldHMgY29va2llIGluIGJyb3dzZXIuCi8vIEFS R1VNRU5UUzogbmFtZSAtIENvb2tpZSBuYW1lICwgdmFsdWUgLSBjb29raWUgdmFs dWUsIHNlY29uZHMgLSBUVEwgY29va2llLCBwYXRoIC0gY29va2llIHBhdGgKLy8g UkVUVVJOOiBOb25lCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpmdW5jdGlv biBzZXRfY29va2llICggbmFtZSwgdmFsdWUsIHNlY29uZHMsIHBhdGggKQp7CiAg dmFyIGNvb2tpZV9zdHJpbmcgPSBuYW1lICsgIj0iICsgZXNjYXBlICggdmFsdWUg KTsKCiAgaWYgKCBzZWNvbmRzICkKICB7CiAgICB2YXIgZXhwaXJlcyA9IG5ldyBE YXRlKCk7CiAgICBleHBpcmVzLnNldFRpbWUoZXhwaXJlcy5nZXRUaW1lKCkgKyAo c2Vjb25kcyoxMDAwKSk7CiAgICBjb29raWVfc3RyaW5nICs9ICI7IGV4cGlyZXM9 IiArIGV4cGlyZXMudG9HTVRTdHJpbmcoKTsKICB9CgogIGlmICggcGF0aCApCiAg ICAgICAgY29va2llX3N0cmluZyArPSAiOyBwYXRoPSIgKyBlc2NhcGUgKCBwYXRo ICk7CiAgZWxzZQoJCWNvb2tpZV9zdHJpbmcgKz0gIjsgcGF0aD0vIjsKCiAgIGRv Y3VtZW50LmNvb2tpZSA9IGNvb2tpZV9zdHJpbmc7Cn0KCgovLyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQovLyBGVU5DVElPTjogZ2V0X2Nvb2tpZQovLyBERVNDUklQ VElPTjogZ2V0cyBjb29raWUgd2l0aCBzdXBwbGllZCBuYW1lLgovLyBBUkdVTUVO VFM6IGNvb2tpZV9uYW1lIC0gbmFtZSBvZiBjb29raWUgdG8gYmUgcmV0cml2ZWQg Ci8vIFJFVFVSTjogY29va2llIHZhbHVlCi8vIApmdW5jdGlvbiBnZXRfY29va2ll ICggY29va2llX25hbWUgKQp7CiB2YXIgcmVzdWx0cyA9IGRvY3VtZW50LmNvb2tp ZS5tYXRjaCAoICcoXnw7KSA/JyArIGNvb2tpZV9uYW1lICsgJz0oW147XSopKDt8 JCknICk7CiAgaWYgKCByZXN1bHRzICkKICAgIHJldHVybiAoIHVuZXNjYXBlICgg cmVzdWx0c1syXSApICk7CiAgZWxzZQogICAgcmV0dXJuIG51bGw7Cn0KCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEZVTkNUSU9OOiBkZWxldGVfY29va2ll Ci8vIERFU0NSSVBUSU9OOiBkZWxldGVzIGNvb2tpZSB3aXRoIHN1cHBsaWVkIG5h bWUuCi8vIEFSR1VNRU5UUzogY29va2llX25hbWUgLSBuYW1lIG9mIGNvb2tpZSB0 byBiZSBkZWxldGVkIAovLyBSRVRVUk46IG5vbmUKLy8gCmZ1bmN0aW9uIGRlbGV0 ZV9jb29raWUgKCBjb29raWVfbmFtZSApCnsKICB2YXIgY29va2llX2RhdGUgPSBu ZXcgRGF0ZSAoICk7ICAvLyBjdXJyZW50IGRhdGUgJiB0aW1lCiAgY29va2llX2Rh dGUuc2V0VGltZSAoIGNvb2tpZV9kYXRlLmdldFRpbWUoKSAtIDEgKTsKICBkb2N1 bWVudC5jb29raWUgPSBjb29raWVfbmFtZSArPSAiPTsgZXhwaXJlcz0iICsgY29v a2llX2RhdGUudG9HTVRTdHJpbmcoKTsKfQ== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=DM_client.js Content-Type: application/javascript; charset=ISO-8859-1; name=DM_client.js Content-Location: http://business.timesonline.co.uk/tol/js/DM_client.js Content-Transfer-Encoding: Base64 Ly88IS0tQnVpbHQ6MTAvMDMvMDUNCi8vIFN0YXJ0IENvbmZpZyAvLyANCiB2YXIg RE1fQ1NJRCA9ICJKMDU1MzAiOw0KIHZhciBETV9VSURTID0gMzsNCiB2YXIgRE1f Q0hOID0gZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWU7DQogdmFyIERNX1BJWCA9 ICJwaXgwMS5yZXZzY2kubmV0IjsNCiB2YXIgRE1fQlBJWCA9ICJwaXgwMS5yZXZz Y2kubmV0IjsNCiB2YXIgRE1fVUlERCA9IGRvY3VtZW50LmxvY2F0aW9uLmhvc3Ru YW1lOw0KIHZhciBETV9VSURQID0gIi8iOw0KIHZhciBETV9VSURDID0gIiI7DQog dmFyIERNX1VJRE4gPSAiIjsNCiB2YXIgRE1fVUlERSA9IDA7DQogdmFyIERNX0FE TUcgPSAxOw0KIHZhciBETV9BTkxZID0gMTsNCiB2YXIgRE1fUlRSWSA9IDA7DQog dmFyIERNX0RSRUYgPSAwOyANCiB2YXIgRE1fTE9BRF9USU1FID0gMDsNCiB2YXIg RE1fVE9VVF9QSVhfUEFUSCA9ICIiOw0KIHZhciBETV9DU0VTID0gMDsNCiB2YXIg RE1fQ1RTVCA9IDA7DQogdmFyIERNX01VTFQgPSAwOw0KIHZhciBETV9GUkFHID0g MDsNCiB2YXIgRE1fUkNSQyA9IDA7DQogdmFyIERNX0JPT01fT04gPSAwOw0KIHZh ciBETV9CT09NX0RNTiA9ICIiOw0KIHZhciBETV9CT09NX1NSQyA9ICIiOw0KIHZh ciBETV9CT09NX0RDTiA9ICIiOw0KLy8gRW5kIENvbmZpZyAvLyANCiB2YXIgRE1f VEVTVCA9IDA7IHZhciBETV9SRVFTID0gMDsgdmFyIF9ETV9EVEUgPSBuZXcgRGF0 ZSgpOyB2YXIgX0RNX1VOViA9IG5hdmlnYXRvcjsgdmFyIF9ETV9VREMgPSBkb2N1 bWVudDsgdmFyIF9ETV9DSFIgPSBudWxsOyB2YXIgX0RNX3NJbWcgPSBuZXcgQXJy YXkoKTsgdmFyIF9ETV9ldnRzID0gbmV3IEFycmF5KCk7IHZhciBfRE1faGV4YyA9 IG5ldyBBcnJheSgiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4Iiwi OSIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIpOyB2YXIgX0RNX0JDTDEgPSAiPyY9 JS4oKSI7IHZhciBfRE1fR0NMMiA9ICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5P UFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7IHZhciBfRE1f VEdJRCA9ICJhIiArIF9ETV9oZXhjWyhETV9URVNUPDwzIHwgRE1fUkVRUzw8Mnwg RE1fQURNRzw8MSB8IERNX0FOTFkpXTsgdmFyIF9ETV9uYW1lID0gX0RNX1VEQy50 aXRsZTsgZm9yKF9ETV9DSFI9IiIsaT0wO2k8MjU2O2krKykgeyBfRE1fQ0hSICs9 IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7ICB9IHZhciBfRE1fQ1JDVGJsID0gbmV3 IEFycmF5KCAweDAwMDAwMDAwLCAweDc3MDczMDk2LCAweGVlMGU2MTJjLCAweDk5 MDk1MWJhLCAweDA3NmRjNDE5LCAweDcwNmFmNDhmLCAweGU5NjNhNTM1LCAweDll NjQ5NWEzLCAweDBlZGI4ODMyLCAweDc5ZGNiOGE0LCAweGUwZDVlOTFlLCAweDk3 ZDJkOTg4LCAweDA5YjY0YzJiLCAweDdlYjE3Y2JkLCAweGU3YjgyZDA3LCAweDkw YmYxZDkxLCAweDFkYjcxMDY0LCAweDZhYjAyMGYyLCAweGYzYjk3MTQ4LCAweDg0 YmU0MWRlLCAweDFhZGFkNDdkLCAweDZkZGRlNGViLCAweGY0ZDRiNTUxLCAweDgz ZDM4NWM3LCAweDEzNmM5ODU2LCAweDY0NmJhOGMwLCAweGZkNjJmOTdhLCAweDhh NjVjOWVjLCAweDE0MDE1YzRmLCAweDYzMDY2Y2Q5LCAweGZhMGYzZDYzLCAweDhk MDgwZGY1LCAweDNiNmUyMGM4LCAweDRjNjkxMDVlLCAweGQ1NjA0MWU0LCAweGEy Njc3MTcyLCAweDNjMDNlNGQxLCAweDRiMDRkNDQ3LCAweGQyMGQ4NWZkLCAweGE1 MGFiNTZiLCAweDM1YjVhOGZhLCAweDQyYjI5ODZjLCAweGRiYmJjOWQ2LCAweGFj YmNmOTQwLCAweDMyZDg2Y2UzLCAweDQ1ZGY1Yzc1LCAweGRjZDYwZGNmLCAweGFi ZDEzZDU5LCAweDI2ZDkzMGFjLCAweDUxZGUwMDNhLCAweGM4ZDc1MTgwLCAweGJm ZDA2MTE2LCAweDIxYjRmNGI1LCAweDU2YjNjNDIzLCAweGNmYmE5NTk5LCAweGI4 YmRhNTBmLCAweDI4MDJiODllLCAweDVmMDU4ODA4LCAweGM2MGNkOWIyLCAweGIx MGJlOTI0LCAweDJmNmY3Yzg3LCAweDU4Njg0YzExLCAweGMxNjExZGFiLCAweGI2 NjYyZDNkLCAweDc2ZGM0MTkwLCAweDAxZGI3MTA2LCAweDk4ZDIyMGJjLCAweGVm ZDUxMDJhLCAweDcxYjE4NTg5LCAweDA2YjZiNTFmLCAweDlmYmZlNGE1LCAweGU4 YjhkNDMzLCAweDc4MDdjOWEyLCAweDBmMDBmOTM0LCAweDk2MDlhODhlLCAweGUx MGU5ODE4LCAweDdmNmEwZGJiLCAweDA4NmQzZDJkLCAweDkxNjQ2Yzk3LCAweGU2 NjM1YzAxLCAweDZiNmI1MWY0LCAweDFjNmM2MTYyLCAweDg1NjUzMGQ4LCAweGYy NjIwMDRlLCAweDZjMDY5NWVkLCAweDFiMDFhNTdiLCAweDgyMDhmNGMxLCAweGY1 MGZjNDU3LCAweDY1YjBkOWM2LCAweDEyYjdlOTUwLCAweDhiYmViOGVhLCAweGZj Yjk4ODdjLCAweDYyZGQxZGRmLCAweDE1ZGEyZDQ5LCAweDhjZDM3Y2YzLCAweGZi ZDQ0YzY1LCAweDRkYjI2MTU4LCAweDNhYjU1MWNlLCAweGEzYmMwMDc0LCAweGQ0 YmIzMGUyLCAweDRhZGZhNTQxLCAweDNkZDg5NWQ3LCAweGE0ZDFjNDZkLCAweGQz ZDZmNGZiLCAweDQzNjllOTZhLCAweDM0NmVkOWZjLCAweGFkNjc4ODQ2LCAweGRh NjBiOGQwLCAweDQ0MDQyZDczLCAweDMzMDMxZGU1LCAweGFhMGE0YzVmLCAweGRk MGQ3Y2M5LCAweDUwMDU3MTNjLCAweDI3MDI0MWFhLCAweGJlMGIxMDEwLCAweGM5 MGMyMDg2LCAweDU3NjhiNTI1LCAweDIwNmY4NWIzLCAweGI5NjZkNDA5LCAweGNl NjFlNDlmLCAweDVlZGVmOTBlLCAweDI5ZDljOTk4LCAweGIwZDA5ODIyLCAweGM3 ZDdhOGI0LCAweDU5YjMzZDE3LCAweDJlYjQwZDgxLCAweGI3YmQ1YzNiLCAweGMw YmE2Y2FkLCAweGVkYjg4MzIwLCAweDlhYmZiM2I2LCAweDAzYjZlMjBjLCAweDc0 YjFkMjlhLCAweGVhZDU0NzM5LCAweDlkZDI3N2FmLCAweDA0ZGIyNjE1LCAweDcz ZGMxNjgzLCAweGUzNjMwYjEyLCAweDk0NjQzYjg0LCAweDBkNmQ2YTNlLCAweDdh NmE1YWE4LCAweGU0MGVjZjBiLCAweDkzMDlmZjlkLCAweDBhMDBhZTI3LCAweDdk MDc5ZWIxLCAweGYwMGY5MzQ0LCAweDg3MDhhM2QyLCAweDFlMDFmMjY4LCAweDY5 MDZjMmZlLCAweGY3NjI1NzVkLCAweDgwNjU2N2NiLCAweDE5NmMzNjcxLCAweDZl NmIwNmU3LCAweGZlZDQxYjc2LCAweDg5ZDMyYmUwLCAweDEwZGE3YTVhLCAweDY3 ZGQ0YWNjLCAweGY5YjlkZjZmLCAweDhlYmVlZmY5LCAweDE3YjdiZTQzLCAweDYw YjA4ZWQ1LCAweGQ2ZDZhM2U4LCAweGExZDE5MzdlLCAweDM4ZDhjMmM0LCAweDRm ZGZmMjUyLCAweGQxYmI2N2YxLCAweGE2YmM1NzY3LCAweDNmYjUwNmRkLCAweDQ4 YjIzNjRiLCAweGQ4MGQyYmRhLCAweGFmMGExYjRjLCAweDM2MDM0YWY2LCAweDQx MDQ3YTYwLCAweGRmNjBlZmMzLCAweGE4NjdkZjU1LCAweDMxNmU4ZWVmLCAweDQ2 NjliZTc5LCAweGNiNjFiMzhjLCAweGJjNjY4MzFhLCAweDI1NmZkMmEwLCAweDUy NjhlMjM2LCAweGNjMGM3Nzk1LCAweGJiMGI0NzAzLCAweDIyMDIxNmI5LCAweDU1 MDUyNjJmLCAweGM1YmEzYmJlLCAweGIyYmQwYjI4LCAweDJiYjQ1YTkyLCAweDVj YjM2YTA0LCAweGMyZDdmZmE3LCAweGI1ZDBjZjMxLCAweDJjZDk5ZThiLCAweDVi ZGVhZTFkLCAweDliNjRjMmIwLCAweGVjNjNmMjI2LCAweDc1NmFhMzljLCAweDAy NmQ5MzBhLCAweDljMDkwNmE5LCAweGViMGUzNjNmLCAweDcyMDc2Nzg1LCAweDA1 MDA1NzEzLCAweDk1YmY0YTgyLCAweGUyYjg3YTE0LCAweDdiYjEyYmFlLCAweDBj YjYxYjM4LCAweDkyZDI4ZTliLCAweGU1ZDViZTBkLCAweDdjZGNlZmI3LCAweDBi ZGJkZjIxLCAweDg2ZDNkMmQ0LCAweGYxZDRlMjQyLCAweDY4ZGRiM2Y4LCAweDFm ZGE4MzZlLCAweDgxYmUxNmNkLCAweGY2YjkyNjViLCAweDZmYjA3N2UxLCAweDE4 Yjc0Nzc3LCAweDg4MDg1YWU2LCAweGZmMGY2YTcwLCAweDY2MDYzYmNhLCAweDEx MDEwYjVjLCAweDhmNjU5ZWZmLCAweGY4NjJhZTY5LCAweDYxNmJmZmQzLCAweDE2 NmNjZjQ1LCAweGEwMGFlMjc4LCAweGQ3MGRkMmVlLCAweDRlMDQ4MzU0LCAweDM5 MDNiM2MyLCAweGE3NjcyNjYxLCAweGQwNjAxNmY3LCAweDQ5Njk0NzRkLCAweDNl NmU3N2RiLCAweGFlZDE2YTRhLCAweGQ5ZDY1YWRjLCAweDQwZGYwYjY2LCAweDM3 ZDgzYmYwLCAweGE5YmNhZTUzLCAweGRlYmI5ZWM1LCAweDQ3YjJjZjdmLCAweDMw YjVmZmU5LCAweGJkYmRmMjFjLCAweGNhYmFjMjhhLCAweDUzYjM5MzMwLCAweDI0 YjRhM2E2LCAweGJhZDAzNjA1LCAweGNkZDcwNjkzLCAweDU0ZGU1NzI5LCAweDIz ZDk2N2JmLCAweGIzNjY3YTJlLCAweGM0NjE0YWI4LCAweDVkNjgxYjAyLCAweDJh NmYyYjk0LCAweGI0MGJiZTM3LCAweGMzMGM4ZWExLCAweDVhMDVkZjFiLCAweDJk MDJlZjhkICk7IHZhciBfRE1fVUlEID0gMDsgIHZhciBfRE1fVVRaID0gKC0xKl9E TV9EVEUuZ2V0VGltZXpvbmVPZmZzZXQoKSkrNzIwOyB2YXIgX0RNX1VDUyA9ICgo RE1fQ1RTVCkgPyAoX0RNX2djKF9ETV9zYygiVEMwIiwxLERNX0NITiwiLyIsMCww KSkgPT0gMSA/IDE6MCkrKF9ETV9nYyhfRE1fc2MoIlRDMSIsMSxETV9DSE4sIi8i LDEsMCkpID09IDEgPyAyOjApOjApOyAgdmFyIF9ETV9VU0lEID0gKChETV9DU0VT KSA/IF9ETV9zZXNzSUQoKTowKTsgdmFyIF9ETV9DTlYgPSAiIjsgdmFyIF9ETV9M T0MgPSBfRE1fVURDLmxvY2F0aW9uLnRvU3RyaW5nKCk7IHZhciBfRE1fUkVGID0g X0RNX1VEQy5yZWZlcnJlci50b1N0cmluZygpOyB2YXIgX0RNX0NMRCA9IDA7ZnVu Y3Rpb24gRE1fdGFnKCkgeyBpZiAoX0RNX0NMRCA9PSAwIHx8IERNX01VTFQgPT0g MSkgeyBfRE1fQ0xEID0gMTsgc3dpdGNoKERNX1VJRFMpIHsgY2FzZSAxOiBjYXNl IDI6IGNhc2UgNTogdmFyIGNrZSA9IF9ETV9nYyhETV9VSURDKTsgaWYoY2tlPT1u dWxsKXsgX0RNX1VJRD0tMTsgfWVsc2UgaWYoY2tlLmluZGV4T2YoIi8iKT49MCB8 fCBja2UuaW5kZXhPZigiPyIpPj0wKXsgX0RNX1VJRD0tMTsgfWVsc2V7IF9ETV9V SUQ9IkRNSUQiK0RNX1VJRFMrIj0iK2VzY2FwZShja2UpOyB9IGJyZWFrOyBjYXNl IDQ6IGlmICgoX0RNX1VJRCA9IF9ETV9nYyhETV9VSUROKSkgPT0gbnVsbCkgeyBf RE1fVUlEID0gX0RNX2dlbklEKCk7IF9ETV9zYyhETV9VSUROLF9ETV9VSUQsRE1f VUlERCxETV9VSURQLERNX1VJREUsMCk7IH0gX0RNX1VJRCA9ICJETUlEND0iK19E TV9VSUQ7IGJyZWFrOyB9IGZvcih2YXIgaT0wO2k8X0RNX2V2dHMubGVuZ3RoO2kr Kyl7IF9ETV9hZGROVigiRE1fRVZULiIrX0RNX2V2dHNbaV0ubmFtZSxfRE1fZXZ0 c1tpXS5wcm9wcyk7IH0gaWYoRE1fRFJFRj09MSkgeyBfRE1fYWRkTlYoIkRNX0xP QyIsX0RNX2VuY2QoX0RNX1JFRixfRE1fQkNMMSwwKSk7IH0gZWxzZSB7IF9ETV9h ZGROVigiRE1fTE9DIixfRE1fZW5jZChfRE1fTE9DLF9ETV9CQ0wxLDApKTsgfSBf RE1fYWRkTlYoIkRNX1JFRiIsX0RNX2VuY2QoX0RNX1JFRixfRE1fQkNMMSwwKSk7 IChfRE1fVUlEIT0wICYmIF9ETV9VSUQhPS0xP19ETV9hZGROVigiRE1fSElEIixf RE1fZW5jZChfRE1fVUlELF9ETV9CQ0wxLDApKTowKTsgX0RNX2FkZE5WKCJETV9U SVQiLF9ETV9lbmNkKF9ETV9VREMudGl0bGUudG9TdHJpbmcoKSxfRE1fQkNMMSww KSk7IF9ETV9DTlYrPSImRE1fRU9NPTEiOyBpZihfRE1fcGFjayhfRE1fQ05WKSl7 IGlmKERNX0JPT01fT04peyBfRE1fY2hlY2tCb29tKCk7IH0gfSBfRE1fcnN0UmVx KCk7IH0gfSBmdW5jdGlvbiBfRE1fcGFjayhkKSB7IHZhciByZHRlID0gbmV3IERh dGUoKTsgdmFyIHJpZCA9IF9ETV90b0hleChNYXRoLmZsb29yKHJkdGUpKTsgdmFy IGJzZT0iIixoZHI9IiIsZGF0PSIiLHNlcT0xOyB2YXIgcHJ0PWxvY2F0aW9uLnBy b3RvY29sKyIvLyI7IHZhciBtc2w9KERNX1BJWC5sZW5ndGg+RE1fQlBJWC5sZW5n dGg/RE1fUElYLmxlbmd0aDpETV9CUElYLmxlbmd0aCk7IHZhciBtcmw9MjAwMCx1 c2Q9MDsgZD1fRE1fZW5jZChkLF9ETV9HQ0wyLDEpOyBmb3IodmFyIHNocGQ9MCxm PTE7KChETV9GUkFHKSA/IChzaHBkPGQubGVuZ3RoKTooZj09MSkpO3NocGQrPWRh dC5sZW5ndGgsZisrKXsgaGRyPSIvIitETV9DU0lEKyIvIitfRE1fVEdJRCsiLyIr X0RNX1VDUysiLyIrRE1fVUlEUysiLyIrX0RNX1VUWisiLyIrc2VxKyIvIitfRE1f VVNJRCsiLyIrcmlkKyIvIitfRE1fVUlEKyIvIjsgYnNlPSIvIitNYXRoLmZsb29y KE1hdGgucmFuZG9tKCkqTWF0aC5wb3coMTAsOSkpKyIuZ2lmP0Q9IjsgbHN0PShz aHBkKyhtcmwtbXNsLShwcnQraGRyK2JzZSkubGVuZ3RoLTEwKT5kLmxlbmd0aD8x OjApOyBpZighRE1fRlJBRyl7IHN0cz0wOyB9ZWxzZSBpZihmPT0xJiZsc3Q9PTAp eyBzdHM9MTsgfWVsc2UgaWYoZj4xJiZsc3Q9PTApeyBzdHM9MjsgfWVsc2UgaWYo Zj4xJiZsc3Q9PTEpeyBzdHM9MzsgfWVsc2V7IHN0cz0wOyB9IGhkcis9c3RzKyIv IjsgdXNkPShwcnQraGRyK2JzZSkubGVuZ3RoK21zbCs4OyBkYXQ9ZC5zdWJzdHIo c2hwZCwobXJsLXVzZC0oZC5jaGFyQXQoc2hwZCsobXJsLXVzZC0xKSk9PSclJz8x OihkLmNoYXJBdChzaHBkKyhtcmwtdXNkLTIpKT09JyUnPzI6MCkpKSk7IGhkcis9 X0RNX3BhZCgoKERNX1JDUkMpID8gX0RNX3RvSGV4KF9ETV9jcmMzMihkYXQpKTow KSw4KTsgX0RNX3NoaXAoX0RNX3RvSGV4KE1hdGguZmxvb3IoTWF0aC5yYW5kb20o KSpNYXRoLnBvdygxMCw5KSkpLHBydCxETV9QSVgsRE1fQlBJWCxoZHIrYnNlK2Rh dCwwKTsgc2VxKys7IH0gcmV0dXJuIDE7IH0gZnVuY3Rpb24gX0RNX3NoaXAoc3Js LHAsczEsczIsdSx0KSB7IGlmKF9ETV9zSW1nW3NybF09PW51bGwpIHsgX0RNX3NJ bWdbc3JsXT1uZXcgSW1hZ2UoMiwzKTsgfSBpZiAodDwyKSB7IF9ETV9zSW1nW3Ny bF0uc3JjID0gcCtzMSt1OyB9IGVsc2UgaWYodDw0KSB7IF9ETV9zSW1nW3NybF0u c3JjID0gcCtzMit1OyB9IGlmIChETV9MT0FEX1RJTUUgPiAwKSB7IHNldFRpbWVv dXQoImlzUGl4TG9hZGVkKF9ETV9zSW1nWyciK3NybCsiJ10pOyIscGFyc2VJbnQo RE1fTE9BRF9USU1FKSAqIDEwMDApOyB9IGlmIChETV9SVFJZPT0xICYmIERNX0xP QURfVElNRT09MCkgeyBfRE1fc0ltZ1tzcmxdLm9uZXJyb3I9IGZ1bmN0aW9uKCl7 c2V0VGltZW91dCgiX0RNX3NoaXAoJyIrc3JsKyInLCciK3ArIicsJyIrczErIics JyIrczIrIicsJyIrdSsiJywiKyh0KzEpKyIpIiw1MDAwKTt9OyB9IH0gZnVuY3Rp b24gaXNQaXhMb2FkZWQocGl4KSB7IHZhciBlbXB0eUltZyA9IG5ldyBJbWFnZSgp OyBpZiAocGl4LmNvbXBsZXRlKSB7IHJldHVybiBwaXg7IH0gZWxzZSB7IHJldHVy biBwaXguc3JjID0gRE1fVE9VVF9QSVhfUEFUSDsgfSB9IGZ1bmN0aW9uIF9ETV9h ZGROVihuLHYpIHsgIF9ETV9DTlYgKz0gKF9ETV9DTlY/IiYiOiIiKStuKyI9Iit2 OyAgfSBmdW5jdGlvbiBfRE1fZ2VuSUQoKSB7IHJldHVybiBfRE1fdG9IZXgoTWF0 aC5mbG9vcihfRE1fRFRFKSkgKyItIitfRE1fdG9IZXgoTWF0aC5mbG9vcihNYXRo LnJhbmRvbSgpKk1hdGgucG93KDEwLDE2KSkpICsiLSIrX0RNX3RvSGV4KF9ETV9j cmMzMigiIi5jb25jYXQoX0RNX1VEQy5yZWZlcnJlcixfRE1fVURDLmNvb2tpZSxf RE1fVU5WLnVzZXJBZ2VudCxfRE1fVVRaLHNjcmVlbi53aWR0aCxzY3JlZW4uaGVp Z2h0KSkpOyB9IGZ1bmN0aW9uIF9ETV9zZXNzSUQoKSB7IHZhciBzSUQ9X0RNX2dj KCJETVNJRCIpOyBpZiAoc0lEID09IG51bGwpeyBzSUQ9X0RNX2djKF9ETV9zYygi RE1TSUQiLF9ETV9nZW5JRCgpLERNX1VJREQsRE1fVUlEUCwwLDApKTt9IHJldHVy bihzSUQpOyAgfSBmdW5jdGlvbiBfRE1fc2Mobix2LGQscCxlLG8pIHsgdmFyIF9D RFRFID0gbmV3IERhdGUoKTsgaWYgKChuICE9ICIiICYmIHYgIT0gIiIpICYmIChf RE1fZ2MobikgPT0gbnVsbCB8fCBvID09IDEpKSB7IF9DRFRFLnNldERhdGUoX0RN X0RURS5nZXREYXRlKCkrZSk7IF9ETV9VREMuY29va2llID0gbisiPSIrdisocCAh PSAiIiA/ICI7cGF0aD0iK3A6IiIpKyhkICE9ICIiID8gIjtkb21haW49IitkOiIi KSsoZT4wID8gIjtleHBpcmVzPSIrX0NEVEUudG9HTVRTdHJpbmcoKToiIik7IH0g IHJldHVybiBuOyAgfSBmdW5jdGlvbiBfRE1fZ2MobikgeyB2YXIgY28gPSBfRE1f VURDLmNvb2tpZTsgdmFyIHBvcyA9IGNvLmluZGV4T2YobisiPSIpOyByZXR1cm4g cG9zICE9IC0xID8gY28uc3Vic3RyaW5nKHBvcytuLmxlbmd0aCsxLChjby5pbmRl eE9mKCI7ICIscG9zKSE9IC0xID8gY28uaW5kZXhPZigiOyAiLHBvcyk6Y28ubGVu Z3RoKSk6bnVsbDsgIH0gZnVuY3Rpb24gX0RNX2VuY2QocyxjaHJzLGIpeyBmb3Io dmFyIGk9MCxucz0iIixjPSIiO2k8cy5sZW5ndGg7aSsrKXsgaWYoKGI9PTEgPyBj aHJzLmluZGV4T2Yocy5jaGFyQXQoaSkpPj0wIDogY2hycy5pbmRleE9mKHMuY2hh ckF0KGkpKTwwKSl7IG5zKz1zLmNoYXJBdChpKTsgfWVsc2V7IGlmKChjPV9ETV9D SFIuaW5kZXhPZihzLmNoYXJBdChpKSkpPjApIG5zKz0iJSIrX0RNX3BhZChfRE1f dG9IZXgoYyksMik7IH0gfSByZXR1cm4gbnM7IH0gZnVuY3Rpb24gX0RNX2NyYzMy KGJ1ZikgeyBpPTA7IGNudCA9IGJ1Zi5sZW5ndGg7IGNyYyA9IDB4RkZGRkZGRkY7 IHdoaWxlIChjbnQtLSAhPSAwKSBjcmMgPSBfRE1fQ1JDVGJsWyhjcmMgXiBfRE1f Q0hSLmluZGV4T2YoYnVmLmNoYXJBdChpKyspKSkgJiAweEZGXSBeIChjcmMgPj4+ IDgpOyBjcmMgXj0gMHhGRkZGRkZGRjsgIGNyYyA9IChjcmMgJiAweDdGRkZGRkZG KSArICgoY3JjPDApPzB4ODAwMDAwMDA6MCk7IHJldHVybiBjcmM7IH0gZnVuY3Rp b24gX0RNX2FwcGVuZFRvVXJsKHUsbix2KSB7IHJldHVybiB1KygodS5pbmRleE9m KCI/Iik9PS0xKT8iPyI6IiYiKStuKyI9Iit2OyB9IGZ1bmN0aW9uIF9ETV90b0hl eChuKXsgdmFyIHJtZD0wLHF1bz0wLGhleD0iIjsgaWYobiA8IDE2KSB7IHJldHVy biBfRE1faGV4Y1tuXTsgfWVsc2V7IHJtZCA9IChuJTE2KTsgcXVvID0gTWF0aC5m bG9vcigobiAtIHJtZCkvMTYpOyByZXR1cm4gKF9ETV90b0hleChxdW8pK19ETV90 b0hleChybWQpKTsgfSB9IGZ1bmN0aW9uIF9ETV9wYWQoZCxwKXsgZCArPSAiIjsg d2hpbGUoZC5sZW5ndGggPCBwKXsgZCA9ICIwIitkOyB9IHJldHVybiBkOyB9IGZ1 bmN0aW9uIF9ETV9jaGVja0Jvb20oKXsgdmFyIHNlZ0M9IiIsIGJvbWM9IiIsc2Ny Yz0wLGJjcmM9MDsgaWYoKHNlZ0MgPSBfRE1fZ2MoIkRNU0VHIikpICE9IG51bGwp eyBpZigoYm9tYyA9IF9ETV9nYygiRE1CT00iKSkgIT0gbnVsbCl7IHNjcmMgPSBf RE1fcGFkKF9ETV90b0hleChfRE1fY3JjMzIoc2VnQykpLDgpOyBiY3JjID0gYm9t Yy5zdWJzdHIoMCxib21jLmluZGV4T2YoIiYiKSk7IGlmKHNjcmMgIT0gYmNyYyl7 IF9ETV9zZW5kQm9vbShzZWdDLHNjcmMsRE1fQk9PTV9ETU4sRE1fQk9PTV9TUkMs RE1fQk9PTV9EQ04pOyB9IH1lbHNleyBfRE1fc2VuZEJvb20oc2VnQyxfRE1fcGFk KF9ETV90b0hleChfRE1fY3JjMzIoc2VnQykpLDgpLERNX0JPT01fRE1OLERNX0JP T01fU1JDLERNX0JPT01fRENOKTsgfSB9IH0gZnVuY3Rpb24gX0RNX3NlbmRCb29t KHNlZ0MsY3JjLGRtbixzcmMsZGNuKXsgdmFyIGFUb2ssc2VncyxyaWQ9MCxpPTAs Ymw9IiIsdT0iIjsgc2VnQyA9IHVuZXNjYXBlKHNlZ0MpOyBhVG9rID0gc2VnQy5z cGxpdCgiJiIpOyBpZihhVG9rLmxlbmd0aCA+PSA2KXsgaWYoYVRva1s1XS5sZW5n dGggPiAwKXsgc2VncyA9IGFUb2tbNV0uc3BsaXQoIiwiKTsgd2hpbGUoaSA8IHNl Z3MubGVuZ3RoKXsgYmwgKz0gImJvb209IitzZWdzW2ldKyI7IjsgaSsrOyB9IHJp ZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpNYXRoLnBvdygxMCw5KSk7IHUg PSAiL3NyYz0iK3NyYysiO2RjbmV0PSIrZGNuKyI7IitibCsic3o9MXgxO29yZD0i K3JpZCsiPyI7IF9ETV9zaGlwKHJpZCxsb2NhdGlvbi5wcm90b2NvbCsiLy8iLGRt bixkbW4sdSwwKTsgX0RNX3NldEJvb20oY3JjLDEpOyB9ZWxzZXsgX0RNX3NldEJv b20oY3JjLDApOyB9IH1lbHNleyBfRE1fc2V0Qm9vbShjcmMsMCk7IH0gfSBmdW5j dGlvbiBfRE1fc2V0Qm9vbShjcmMsc250KXsgX0RNX3NjKCJETUJPTSIsY3JjKyIm IitfRE1fdG9IZXgoTWF0aC5mbG9vcihfRE1fRFRFKSkrIiYiK3NudCxETV9DSE4s Ii8iLDAsMSk7IH0gZnVuY3Rpb24gX0RNX3JzdFJlcSgpIHsgX0RNX0NOViA9ICIi OyBfRE1fTE9DID0gX0RNX1VEQy5sb2NhdGlvbi50b1N0cmluZygpOyBfRE1fUkVG ID0gX0RNX1VEQy5yZWZlcnJlci50b1N0cmluZygpOyBfRE1fVUlEID0gMDsgfSBm dW5jdGlvbiBETV9ldmVudChlLG4sdil7IGZvcih2YXIgaT0wO2k8X0RNX2V2dHMu bGVuZ3RoO2krKyl7IGlmKF9ETV9ldnRzW2ldLm5hbWUgPT0gZSl7IGlmKF9ETV9l dnRzW2ldLnByb3BzLmluZGV4T2YoIigiK19ETV9lbmNkKG4sX0RNX0JDTDEsMCkr Ii4iKTwwKXsgX0RNX2V2dHNbaV0ucHJvcHMrPSIoIitfRE1fZW5jZChuLF9ETV9C Q0wxLDApKyIuIitfRE1fZW5jZCh2LF9ETV9CQ0wxLDApKyIpIjsgcmV0dXJuIDE7 IH1lbHNleyByZXR1cm4gMDsgfSB9IH0gX0RNX2V2dHNbX0RNX2V2dHMubGVuZ3Ro XT17bmFtZTpfRE1fZW5jZChlLF9ETV9CQ0wxLDApLHByb3BzOiIoIitfRE1fZW5j ZChuLF9ETV9CQ0wxLDApKyIuIitfRE1fZW5jZCh2LF9ETV9CQ0wxLDApKyIpIn07 IHJldHVybiAxOyB9IGZ1bmN0aW9uIERNX2NhdChjYXQpIHsgX0RNX2FkZE5WKCJE TV9DQVQiLF9ETV9lbmNkKGNhdCxfRE1fQkNMMSwwKSkgfSBmdW5jdGlvbiBETV9u YW1lKGYpIHsgX0RNX2FkZE5WKCJETV9OQU0iLF9ETV9lbmNkKGYsX0RNX0JDTDEs MCkpIH0gZnVuY3Rpb24gRE1fa2V5d29yZHMoaykgeyBfRE1fYWRkTlYoIkRNX0tZ VyIsX0RNX2VuY2QoayxfRE1fQkNMMSwwKSkgfSBmdW5jdGlvbiBETV9zZWdtZW50 cyhzKSB7IF9ETV9hZGROVigiRE1fU0VHIixfRE1fZW5jZChzLF9ETV9CQ0wxLDAp KSB9IGZ1bmN0aW9uIERNX2FkZFRvTG9jKG4sdikgeyBfRE1fTE9DPV9ETV9hcHBl bmRUb1VybChfRE1fTE9DLG4sdik7IGlmKERNX0RSRUY9PTEpIHsgX0RNX1JFRj1f RE1fYXBwZW5kVG9VcmwoX0RNX1JFRixuLHYpOyB9IH0vLy0tPiANCg== ------------03SxQvmNdK56fCZXxHrajT Content-Disposition: inline; filename=gw.js Content-Type: text/javascript; charset=ISO-8859-1; name=gw.js Content-Location: http://js.revsci.net/gateway/gw.js?csid=J05530 Content-Transfer-Encoding: Quoted-Printable /* * Build version UW-11.1.0-94 */ var rsi_k; var rsi_now =3D new Date(); var rsi_csid =3D 'J05530'; if(typeof(csids)=3D=3D"undefined"){var csids=3D[rsi_csid];}else{csids.pu= sh(rsi_csid);}var _rsiaa=3D0;var _rsiba=3D1;var _rsica=3D0;var _rsida=3D= 0;var _rsiea=3D0;var _rsifa=3D"0902050";var _rsiga=3D"pix04.revsci.net";= var _rsiha=3D"js";var _rsiia=3D"b";var _rsija=3D"3";var _rsika=3D3;var _= rsila=3Dnew Array();var _rsima=3D0;var _rsina;var _rsioa;var _rsipa;var = _rsiqa;var _rsira;var _rsisa;_rsita();function DM_cat(Ba){_rsina=3DBa;}f= unction DM_name(Ca){_rsioa=3DCa;}function DM_keywords(st){_rsipa=3Dst;}f= unction DM_event(Da){_rsiqa=3DDa;}function DM_addToLoc(n,v){_rsira=3D_rs= iua(_rsira,n,v);}function DM_addEncToLoc(n,v){DM_addToLoc(_rsiva(n),_rsi= va(v));}function DM_setLoc(u){_rsira=3Du;}function DM_setCsid(Ea){rsi_cs= id=3DEa;}function rsi_c(Fa){rsi_csid=3DFa;}function rsi_ral(Ga){_rsiaa=3D= Ga;}function rsi_riu(Ha){_rsiba=3DHa;}function rsi_tiu(Ia){_rsica=3DIa;}= function rsi_m(Ja){_rsida=3DJa;}function rsi_dw(Ka){_rsiea=3DKa;}functio= n rsi_s(La){_rsiga=3DLa;}function rsi_t(Ma){_rsiha=3DMa;}function rsi_en= (Na){_rsiia=3DNa;}function rsi_cn(Oa){_rsija=3DOa;}function rsi_us(Pa){_= rsika=3DPa;}function DM_tag(){var Qa;if(_rsima=3D=3D0||_rsida=3D=3D1){if= (typeof(DM_prep)=3D=3D"function"){DM_prep(rsi_csid);}var Ra=3D_rsiwa();i= f(_rsiha=3D=3D"gif"){Qa=3Dnew Image(2,3);Qa.src=3DRa;_rsila[_rsila.lengt= h]=3DQa;}else if(_rsiha=3D=3D"js"){if(_rsiea=3D=3D1){document.write("<"+"/script>");}else{var Sa=3Ddocument.createElement("script");Sa.lan= guage=3D"JavaScript";Sa.type=3D"text/javascript";Sa.src=3DRa;if(document= .body=3D=3Dnull){document.getElementsByTagName("head")[0].appendChild(Sa= );}else{document.body.insertBefore(Sa,document.body.firstChild);}Qa=3DSa= ;}}_rsima=3D1;}_rsita();return Qa;}function _rsiwa(){var Ta=3D"";Ta=3D"D= M_LOC=3D"+_rsiva(_rsira);if(_rsina){Ta+=3D"&DM_CAT=3D"+_rsiva(_rsina);}i= f(_rsiqa){Ta+=3D"&DM_EVT=3D"+_rsiva(_rsiqa);}if(_rsipa){Ta+=3D"&DM_KYW=3D= "+_rsiva(_rsipa);}if(_rsiba=3D=3D1&&_rsisa){Ta+=3D"&DM_REF=3D"+_rsiva(_r= sisa);}if(_rsica=3D=3D1){Ta+=3D"&DM_TIT=3D"+_rsiva(document.title);}if(_= rsioa){Ta+=3D"&DM_NAM=3D"+_rsiva(_rsioa);}Ta+=3D"&DM_EOM=3D1";var Ua=3D"= http"+(location.protocol=3D=3D"https:"?"s":"")+"://";var Va=3D"/"+rsi_cs= id+"/"+_rsiia+_rsija+"/0/"+_rsika+"/"+_rsifa+"/";var Wa=3DMath.floor(Mat= h.random()*1000000000)+"."+_rsiha;var Xa=3DUa+_rsiga+Va+Wa+"?D=3D"+_rsiv= a(Ta)+"&C=3D"+_rsiva(csids);var Ya=3DXa.length;if(Ya>=3D2000){if(Xa.char= At(1998)=3D=3D'%'){Xa=3DXa.substr(0,1998);}else if(Xa.charAt(1999)=3D=3D= '%'){Xa=3DXa.substr(0,1999);}else{Xa=3DXa.substr(0,2000);}if(Xa.charAt(X= a.length-3)=3D=3D'%'&&Xa.charAt(Xa.length-2)=3D=3D'2'&&Xa.charAt(Xa.leng= th-1)=3D=3D'5'){Xa=3DXa.substr(0,Xa.length-3);}}return Xa;}function _rsi= xa(i){var Za=3Di.toString(16).toUpperCase();return Za.length<2?"0"+Za:Za= ;}function _rsiya(c){var i=3Dc.charCodeAt(0);if(isNaN(i))return "";if(i<= 128)return "%"+_rsixa(i);if(i<2048)return "%"+_rsixa(0xC0+(i>>6))+"%"+_r= sixa(0x80+(i&0x3F));if(i<65536)return "%"+_rsixa(0xE0+(i>>12))+"%"+_rsix= a(0x80+(i>>6&0x3F))+"%"+_rsixa(0x80+(i&0x3F));return "%"+_rsixa(0xF0+(i>= >18))+"%"+_rsixa(0x80+(i>>12&0x3F))+"%"+_rsixa(0x80+(i>>6&0x3F))+"%"+_rs= ixa(0x80+(i&0x3F));}var _rsiva;if(typeof(encodeURIComponent)=3D=3D"funct= ion"){_rsiva=3DencodeURIComponent;}else{var _rsiza=3Dnew RegExp("[\x00-\= x20]|[\x22-\x26]|[\x2B-\x2C]|\x2F|[\x3A-\x40]|[\x5B-\x5E]|\x60|[\x7B-\x7= D]|[\x7F-\uFFFF]","g");_rsiva=3Dfunction(v){return v.toString().replace(= _rsiza,_rsiya);}}function _rsiua(u,n,v){return u+(u.indexOf("?")=3D=3D-1= ?"?":"&")+n+"=3D"+v;}function _rsiAa(u){var i=3Du.indexOf('#');return(i>= =3D0)?u.substr(0,i):u;}function _rsita(){_rsisa=3D_rsiAa(document.referr= er.toString());_rsira=3D(_rsiaa=3D=3D1)?_rsisa:_rsiAa(window.location.hr= ef);_rsina=3Dnull;_rsioa=3Dnull;_rsipa=3Dnull;_rsiqa=3Dnull;} if(window[rsi_csid])window[rsi_csid].rsi_t("gif");else rsi_t("gif"); rsi_k =3D '&kr=3D' + Math.random(); document.writeln('