Content-Type: multipart/related; start=; boundary=----------iAFZvHdFZAFgV7ziFcVhyI Content-Location: http://blogs.mail.ru/mail/malvo_59/6A0FB98C5FD4D15C.html Subject: =?utf-8?Q?=D0=91=D0=BB=D0=BE=D0=B3=D0=B8@Mail.Ru:=20=D0=91=D0=B0=D0=BA=D0=BE=D1=82=D0=B0?= MIME-Version: 1.0 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=6A0FB98C5FD4D15C.html Content-Type: text/html; charset=windows-1251; name=6A0FB98C5FD4D15C.html Content-ID: Content-Location: http://blogs.mail.ru/mail/malvo_59/6A0FB98C5FD4D15C.html Content-Transfer-Encoding: Base64 CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8IWRvY3R5cGUgaHRtbCBwdWJsaWMgIi0v L1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3 LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgo8aHRtbD4KCgo8aGVhZD4KCgoK Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Lyo8IVtDREFUQVsqLw0K dHJ5IHsNCi8vIHNuOiBiZjExMA0KLy8gxO7h4OLr5e3o5SDx7uH78ujpDQpmdW5j dGlvbiB0aW1lSW50ZXJ2YWwoYlApIHsNCiAgICAgICAgaWYgKCFyVFtiUF0pIHJU W2JQXSA9IG5ldyBEYXRlKCk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAg ICAgIHJULmlbclQuaS5sZW5ndGhdID0gYlAgKyAnPScgKyAoIChuZXcgRGF0ZSgp KS5nZXRUaW1lKCkgLSByVFtiUF0uZ2V0VGltZSgpICk7DQogICAgICAgICAgICAg ICAgZGVsZXRlIHJUW2JQXTsNCiAgICAgICAgfQ0KfQ0KDQp2YXIgclQgPSB7fTsv L3JlbmRlclRpbWUNCnJULmkgPSBbXTsNCnRpbWVJbnRlcnZhbCgncmVuZGVyYnJv d3NlcicpOw0KclQuYWRkSGFuZGxlciA9IGZ1bmN0aW9uKG9iamVjdCwgZXZlbnQs IGhhbmRsZXIsIHVzZUNhcHR1cmUpIHsNCiAgICAgICAgaWYgKG9iamVjdC5hZGRF dmVudExpc3RlbmVyKSBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFu ZGxlciwgdXNlQ2FwdHVyZSA/IHVzZUNhcHR1cmUgOiBmYWxzZSk7DQogICAgICAg IGVsc2UgaWYgKG9iamVjdC5hdHRhY2hFdmVudCkgb2JqZWN0LmF0dGFjaEV2ZW50 KCdvbicgKyBldmVudCwgaGFuZGxlcik7DQp9DQpyVC5yYWRhcl90eXBlID0gJyc7 DQppZiAod2luZG93Lm5hbWUuaW5kZXhPZignc3J2dCcpICE9IC0xKSB7DQogICAg ICAgIHJULnNydnQgPSAoIG5ldyBEYXRlKCkgKS5nZXRUaW1lKCkgLSBwYXJzZUlu dCggd2luZG93Lm5hbWUuc3Vic3RyKDUpICk7DQogICAgICAgIHdpbmRvdy5uYW1l ID0gJyc7DQp9DQoNCnJULmFkZEhhbmRsZXIoZG9jdW1lbnQsICdjbGljaycsIGZ1 bmN0aW9uKCkgew0KICAgICAgICBpZiAoIXdpbmRvdy5uYW1lLmxlbmd0aCB8fCB3 aW5kb3cubmFtZS5pbmRleE9mKCdzcnZ0JykgPiAtMSkNCiAgICAgICAgICAgICAg ICB3aW5kb3cubmFtZSA9ICdzcnZ0PScgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgp Ow0KfSk7DQpyVC5hZGRIYW5kbGVyKGRvY3VtZW50LCAna2V5cHJlc3MnLCBmdW5j dGlvbigpIHsNCiAgICAgICAgaWYgKHdpbmRvdy5uYW1lLmluZGV4T2YoJ3NydnQn KSA+IC0xKSB3aW5kb3cubmFtZSA9ICcnOw0KfSk7DQoNCnJULmltZzAgPSBuZXcg SW1hZ2UoKTsNCnJULmltZzAuc3JjID0gJ2h0dHA6Ly9ibG9ncy5yYWRhci5pbWdz bWFpbC5ydS91cGRhdGU/JyArDQoncD1ibG9nczAnICsNCihyVC5yYWRhcl90eXBl ICE9ICcnID8gKCcmdD0nICsgclQucmFkYXJfdHlwZSkgOiAnJykgKw0KKHJULnNy dnQgPyAoJyZpPXNydnQ6JyArIHJULnNydnQpIDogJycpICsNCicmdj0wJnJuZD0x OTU4MDI4MzMnICsNCicnOw0KDQp9IGNhdGNoKGUpIHt9DQovKl1dPiovPC9zY3Jp cHQ+DQoNCg0KICAgICAgICAKCgoKCQoJCQoJCQkJCQkKCQkJCTxzY3JpcHQgdHlw ZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwoJCQkJdHJ5ewoJCQkJdGlt ZUludGVydmFsKCdqb3VybmFsX3NraW4nKTsKCQkJCX1jYXRjaChlKSB7fQoJCQkJ Ly8tLT48L3NjcmlwdD4JCQkKCQkJCQkKCQkKCQoKCgoKPHRpdGxlPgoKCsHr7uPo QE1haWwuUnU6IMHg6u7y4AoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8L3RpdGxlPgo8bWV0YSBodHRw LWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl dD13aW5kb3dzLTEyNTEiPgoKCgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp cHQiPi8vPCFbQ0RBVEFbCnRyeXsKdGltZUludGVydmFsKCd0ZXN0Jyk7Cn1jYXRj aChlKSB7fQovLy0tPjwvc2NyaXB0PgoKCgo8bGluayBocmVmPSJodHRwOi8vaW1n Lm1haWwucnUvbWFpbC9ydS9jc3MvYmxvZ3MvNDA5LmNzcz8xMCIgcmVsPSJzdHls ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cgo8bGluayBocmVmPSJodHRwOi8vaW1n Lm1haWwucnUvbWFpbC9ydS9jc3MvcGFkZG1hcmdfaS5jc3M/MSIgcmVsPSJzdHls ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Imh0dHA6Ly9pbWcu bWFpbC5ydS9tYWlsL3J1L2Nzcy9ibG9ncy90aGVtZXMuY3NzPzE4IiByZWw9InN0 eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iaHR0cDovL2lt Zy5tYWlsLnJ1L21haWwvcnUvY3NzL2Jsb2dzL3N0YXR1c19kb2dzLmNzcz8yIiBy ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iaHR0 cDovL2ltZy5tYWlsLnJ1L21haWwvcnUvY3NzL2Jsb2dzL2NhbGVuZGFyLmNzcz8x IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJT SE9SVENVVCBJQ09OIiBocmVmPSJodHRwOi8vaW1nLm1haWwucnUvbWFpbC9ydS9p bWFnZXMvYmxvZ3MvZmF2aWNvbi5pY28iPgoKPCEtLSBicmVuZCBraXR0eSAtLT4K PGxpbmsgaHJlZj0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvYnJlbmRzL2tp dHR5LmNzcz8xIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KCgoK CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci8qIElFOCBib29rbWFya3MgKi8KLnBy b21vX2Jvb2ttYXJrcyBpIHtiYWNrZ3JvdW5kOiB1cmwoaHR0cDovL2ltZzAuaW1n c21haWwucnUvbWFpbC9ydS9pbWFnZXMvbXkvX3Nwcml0ZV90b3AucG5nPzMpIG5v LXJlcGVhdCAwIC0xMDBweDt9Ci5wcm9tb19ib29rbWFya3Mge2JhY2tncm91bmQ6 IHVybChodHRwOi8vaW1nMC5pbWdzbWFpbC5ydS9tYWlsL3J1L2ltYWdlcy9teS9f c3ByaXRlX3RvcC5wbmc/Mykgbm8tcmVwZWF0IC0yMHB4IC0xMDBweDt9Ci5wcm9t b19ib29rbWFya3MgcyB7YmFja2dyb3VuZDogdXJsKGh0dHA6Ly9pbWcwLmltZ3Nt YWlsLnJ1L21haWwvcnUvaW1hZ2VzL215L19zcHJpdGVfdG9wLnBuZz8zKSBuby1y ZXBlYXQgMTAwJSAtMTAwcHggIWltcG9ydGFudDt9Cjwvc3R5bGU+CgoKCgoKPHNj cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2ltZzMuaW1n c21haWwucnUvbWFpbC9ydS9pbWFnZXMvanMvbXlqcy9wcm90b3R5cGUtMS42LjAu My5qcyI+PC9zY3JpcHQ+CgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi PgovLyB2YXJpYWJsZSBmb3IgaW5jbHVkZSBqcwp2YXIgVGhlbWVfdG1wbCA9IDE7 Cgp2YXIgUGVybFZhcl9Kb3VybmFsRW1haWwgPSAibWFsdm9fNTlAbWFpbC5ydSI7 CnZhciBQZXJsVmFyX0Jsb2dzUGVybEhvc3QgPSAiYmxvZ3MubWFpbC5ydSI7CnZh ciBQZXJsVmFyX0FDVElPTl9ESVIgPSAiL2NnaS1iaW4vam91cm5hbC8iOwp2YXIg UGVybFZhcl9iYWNrID0gImJhY2s9aHR0cCYjMDM3OzNhJiMwMzc7MmYmIzAzNzsy ZmJsb2dzLm1haWwucnUmIzAzNzsyZm1haWwmIzAzNzsyZm1hbHZvXzU5JiMwMzc7 MmY2QTBGQjk4QzVGRDREMTVDLmh0bWwiLnJlcGxhY2UoLyYjMDM3Oy9nLCclJyk7 CnZhciBQZXJsVmFyX0FjdGl2ZUVtYWlsID0gIiI7CnZhciBQZXJsVmFyX2JhY2tf dmFsdWUgPSAiaHR0cDovL2Jsb2dzLm1haWwucnUvbWFpbC9tYWx2b181OS82QTBG Qjk4QzVGRDREMTVDLmh0bWwiOwp2YXIgUGVybFZhcl9hY3RpdmVfc3Vic2NyaWJl ZCA9IDA7CnZhciBQZXJsVmFyX0pvdXJuYWxEaXIgPSAiL21haWwvbWFsdm9fNTkv IjsKdmFyIFBlcmxWYXJfRmF2b3JpdGVzUmVxdWVzdCA9IDA7CnZhciBQZXJsVmFy X3RhZ19zZWFyY2hfcGF0aCA9ICJ0YWcvIjsKCnZhciBQZXJsVmFyX0F1dGhQYWdl ID0gIi9tYWlsL21hbHZvXzU5LzZBMEZCOThDNUZENEQxNUMuaHRtbCI7CgoKdmFy IFBlcmxWYXJfRW50cnlfSUQgPSAiNkEwRkI5OEM1RkQ0RDE1QyI7CnZhciBQZXJs VmFyX1VSTCA9ICIvbWFpbC9tYWx2b181OS82QTBGQjk4QzVGRDREMTVDLmh0bWw/ dGhyZWFkPTAmYW1wO3BhZ2U9MSZhbXA7c2tpcD0wIjsKdmFyIFBlcmxWYXJfUHJv S2V5ID0gIjEiOwp2YXIgUGVybFZhcl9Qcm9LZXlFeHBpcmUgPSAiNTAwIjsKdmFy IFBlcmxWYXJfY29tbWVudHNfc3Vic2NyaWJlZCA9IDA7Cgp2YXIgUGVybFZhcl9F eHRsaW5rc19BbGVydCA9IDE7CnZhciBQZXJsVmFyX0FjdGl2ZUlEID0gJ0FjdGl2 ZUlEJzsKCnZhciBQaG90b1VybFBvcHVwID0gImh0dHA6Ly9mb3RvLm1haWwucnUv Y2dpLWJpbi9waG90by9hZGRwaG90bz9ibG9ncz0xJlRpdGxlPSI7CnZhciBWaWRl b1VybFBvcHVwID0gImh0dHA6Ly92aWRlby5tYWlsLnJ1L2NnaS1iaW4vcGhvdG8v YWRkdmlkZW8/YmxvZ3M9MSZUaXRsZT0iOwp2YXIgTXVzaWNVcmxQb3B1cCA9ICJo dHRwOi8vbXkubWFpbC5ydS9jZ2ktYmluL215L2FkZG11c2ljP2Jsb2dzPTEiOwp2 YXIgUG9sbFVybFBvcHVwID0gImh0dHA6Ly9ibG9ncy5tYWlsLnJ1L2NnaS1iaW4v am91cm5hbC9qcG9sbHM/YWRkcG9sbD0xIjsKdmFyIFBlcmxWYXJfbW5BID0gMDsK dmFyIFBlcmxWYXJfbW5CID0gMDsKPC9zY3JpcHQ+Cgo8c2NyaXB0IHR5cGU9InRl eHQvamF2YXNjcmlwdCI+CnZhciBNYWdpY2tTdHJpbmc9J0FqYXhSZXNwb25zZSc7 CnZhciBPS0NvbW1hbmQ9J09LJzsKdmFyIEVycm9yQ29tbWFuZD0nRXJyb3InOwp2 YXIgUmVkaXJlY3RDb21tYW5kPSdSZWRpcmVjdCc7Cjwvc2NyaXB0PjxzY3JpcHQg dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9y L2pzL2pzb24yLmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNj cmlwdCI+CmZ1bmN0aW9uIHNlbmRfYWpheF9yZXF1ZXN0KCkgewogICAgdmFyIG1l dGhvZCAgICAgID0gYXJndW1lbnRzWzBdOwogICAgdmFyIHNjcmlwdF9uYW1lID0g YXJndW1lbnRzWzFdOwogICAgdmFyIGZ1bmMgICAgICAgID0gYXJndW1lbnRzWzJd OwogICAgdmFyIGFyZ3MgICAgICAgID0gYXJndW1lbnRzWzNdOwogICAgdmFyIGZ1 bmNfYXJncyA9IFtdOwogICAgdmFyIGNhbGxiYWNrOwogICAgdmFyIGNhbGxiYWNr X29iamVjdDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkr KykgewogICAgICAgIGlmICh0eXBlb2YgYXJnc1tpXSAhPSAidW5kZWZpbmVkIiAm JiBhcmdzW2ldLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uKSB7CiAgICAgICAgICAg IGNhbGxiYWNrID0gYXJnc1tpXTsKICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3Ro ID4gaSArIDEpIHsKICAgICAgICAgICAgICAgIGNhbGxiYWNrX29iamVjdCA9IGFy Z3NbaSArIDFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZ1bmNfYXJnc1tmdW5jX2FyZ3MubGVu Z3RoXSA9IGFyZ3NbaV07CiAgICAgICAgfQogICAgfQogICAgdmFyIHJlcXVlc3Qg PSBuZXcgQWpheFJlcXVlc3QobWV0aG9kLCBzY3JpcHRfbmFtZSwgZnVuYywgZnVu Y19hcmdzLCBjYWxsYmFjaywgY2FsbGJhY2tfb2JqZWN0KTsKICAgIGFqYXhfcmVx dWVzdHMucHVzaChyZXF1ZXN0KTsKICAgIGlmICghcmVxdWVzdC5zZW5kKCkpIHsK ICAgICAgICBhamF4X3JlcXVlc3RzLnNwbGljZShhamF4X3JlcXVlc3RzLmxlbmd0 aCAtIDEsIDEpOwogICAgfQp9CmZ1bmN0aW9uIHBlcmxfZmV0Y2hfbGl2ZV9wb3N0 cygpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9f NTkvamFqYXgiLCAicGVybF9mZXRjaF9saXZlX3Bvc3RzIiwgYXJndW1lbnRzKTsK fQpmdW5jdGlvbiBwZXJsX2ZldGNoX3N1Z2dlc3QoKSB7CiAgICBzZW5kX2FqYXhf cmVxdWVzdCgiR0VUIiwgIi9tYWlsL21hbHZvXzU5L2phamF4IiwgInBlcmxfZmV0 Y2hfc3VnZ2VzdCIsIGFyZ3VtZW50cyk7Cn0KZnVuY3Rpb24gcGVybF9jaGFsbGVu Z2Vfdm90ZSgpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwv bWFsdm9fNTkvamFqYXgiLCAicGVybF9jaGFsbGVuZ2Vfdm90ZSIsIGFyZ3VtZW50 cyk7Cn0KZnVuY3Rpb24gcGVybF9jcmVhdGVfbXkoKSB7CiAgICBzZW5kX2FqYXhf cmVxdWVzdCgiR0VUIiwgIi9tYWlsL21hbHZvXzU5L2phamF4IiwgInBlcmxfY3Jl YXRlX215IiwgYXJndW1lbnRzKTsKfQpmdW5jdGlvbiBwZXJsX2dldF9jYWxlbmRh cigpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9f NTkvamFqYXgiLCAicGVybF9nZXRfY2FsZW5kYXIiLCBhcmd1bWVudHMpOwp9CmZ1 bmN0aW9uIHBlcmxfc2VuZF9jb21wbGFpbigpIHsKICAgIHNlbmRfYWpheF9yZXF1 ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF9zZW5kX2Nv bXBsYWluIiwgYXJndW1lbnRzKTsKfQpmdW5jdGlvbiBwZXJsX3Bvc3RzX2NvbW1l bnRzX3N1YnNjcmliZSgpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAi L21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF9wb3N0c19jb21tZW50c19zdWJz Y3JpYmUiLCBhcmd1bWVudHMpOwp9CmZ1bmN0aW9uIHBlcmxfcG9zdF9taWNyb3Bv c3QoKSB7CiAgICBzZW5kX2FqYXhfcmVxdWVzdCgiR0VUIiwgIi9tYWlsL21hbHZv XzU5L2phamF4IiwgInBlcmxfcG9zdF9taWNyb3Bvc3QiLCBhcmd1bWVudHMpOwp9 CmZ1bmN0aW9uIHBlcmxfY2hhbGxlbmdlX2NoZWNrX2NhcGNoYSgpIHsKICAgIHNl bmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9fNTkvamFqYXgiLCAi cGVybF9jaGFsbGVuZ2VfY2hlY2tfY2FwY2hhIiwgYXJndW1lbnRzKTsKfQpmdW5j dGlvbiBwZXJsX2xlbnRhX3JlYWQoKSB7CiAgICBzZW5kX2FqYXhfcmVxdWVzdCgi R0VUIiwgIi9tYWlsL21hbHZvXzU5L2phamF4IiwgInBlcmxfbGVudGFfcmVhZCIs IGFyZ3VtZW50cyk7Cn0KZnVuY3Rpb24gcGVybF9jaGFsbGVuZ2VfZ2V0X2NhcGNo YSgpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9f NTkvamFqYXgiLCAicGVybF9jaGFsbGVuZ2VfZ2V0X2NhcGNoYSIsIGFyZ3VtZW50 cyk7Cn0KZnVuY3Rpb24gcGVybF9hZGRfZnJpZW5kX2J5ZW1haWwoKSB7CiAgICBz ZW5kX2FqYXhfcmVxdWVzdCgiR0VUIiwgIi9tYWlsL21hbHZvXzU5L2phamF4Iiwg InBlcmxfYWRkX2ZyaWVuZF9ieWVtYWlsIiwgYXJndW1lbnRzKTsKfQpmdW5jdGlv biBwZXJsX3ZvdGVfcG9zdCgpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQi LCAiL21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF92b3RlX3Bvc3QiLCBhcmd1 bWVudHMpOwp9CmZ1bmN0aW9uIHBlcmxfdm90ZSgpIHsKICAgIHNlbmRfYWpheF9y ZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF92b3Rl IiwgYXJndW1lbnRzKTsKfQpmdW5jdGlvbiBwZXJsX3NldF9mYXZvcml0ZXNfdGFn cygpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9f NTkvamFqYXgiLCAicGVybF9zZXRfZmF2b3JpdGVzX3RhZ3MiLCBhcmd1bWVudHMp Owp9CmZ1bmN0aW9uIHBlcmxfcG9zdF9jb21tZW50KCkgewogICAgc2VuZF9hamF4 X3JlcXVlc3QoIkdFVCIsICIvbWFpbC9tYWx2b181OS9qYWpheCIsICJwZXJsX3Bv c3RfY29tbWVudCIsIGFyZ3VtZW50cyk7Cn0KZnVuY3Rpb24gcGVybF9nZXRfcG9z dF9wcm90ZWN0X2tleSgpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAi L21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF9nZXRfcG9zdF9wcm90ZWN0X2tl eSIsIGFyZ3VtZW50cyk7Cn0KZnVuY3Rpb24gcGVybF9hZGRfYmxhY2tsaXN0KCkg ewogICAgc2VuZF9hamF4X3JlcXVlc3QoIkdFVCIsICIvbWFpbC9tYWx2b181OS9q YWpheCIsICJwZXJsX2FkZF9ibGFja2xpc3QiLCBhcmd1bWVudHMpOwp9CmZ1bmN0 aW9uIHBlcmxfY29tbXNlYXJjaF9zdWdnZXN0KCkgewogICAgc2VuZF9hamF4X3Jl cXVlc3QoIkdFVCIsICIvbWFpbC9tYWx2b181OS9qYWpheCIsICJwZXJsX2NvbW1z ZWFyY2hfc3VnZ2VzdCIsIGFyZ3VtZW50cyk7Cn0KZnVuY3Rpb24gcGVybF9zY3Jl ZW5fcG9zdCgpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwv bWFsdm9fNTkvamFqYXgiLCAicGVybF9zY3JlZW5fcG9zdCIsIGFyZ3VtZW50cyk7 Cn0KZnVuY3Rpb24gcGVybF9wb2xsX3ZvdGUoKSB7CiAgICBzZW5kX2FqYXhfcmVx dWVzdCgiR0VUIiwgIi9tYWlsL21hbHZvXzU5L2phamF4IiwgInBlcmxfcG9sbF92 b3RlIiwgYXJndW1lbnRzKTsKfQpmdW5jdGlvbiBwZXJsX2dldF9mcmllbmRfc3Rh dHVzKCkgewogICAgc2VuZF9hamF4X3JlcXVlc3QoIkdFVCIsICIvbWFpbC9tYWx2 b181OS9qYWpheCIsICJwZXJsX2dldF9mcmllbmRfc3RhdHVzIiwgYXJndW1lbnRz KTsKfQpmdW5jdGlvbiBwZXJsX2NoZWNrX2ZyaWVuZHNoaXBfY2FwY2hhKCkgewog ICAgc2VuZF9hamF4X3JlcXVlc3QoIkdFVCIsICIvbWFpbC9tYWx2b181OS9qYWph eCIsICJwZXJsX2NoZWNrX2ZyaWVuZHNoaXBfY2FwY2hhIiwgYXJndW1lbnRzKTsK fQpmdW5jdGlvbiBwZXJsX2NoZWNrX2NhcGNoYSgpIHsKICAgIHNlbmRfYWpheF9y ZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF9jaGVj a19jYXBjaGEiLCBhcmd1bWVudHMpOwp9CmZ1bmN0aW9uIHBlcmxfYWRkX2ZyaWVu ZCgpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9f NTkvamFqYXgiLCAicGVybF9hZGRfZnJpZW5kIiwgYXJndW1lbnRzKTsKfQpmdW5j dGlvbiBwZXJsX2dldF9mcmllbmRzaGlwX2NhcGNoYSgpIHsKICAgIHNlbmRfYWph eF9yZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF9n ZXRfZnJpZW5kc2hpcF9jYXBjaGEiLCBhcmd1bWVudHMpOwp9CmZ1bmN0aW9uIHBl cmxfYWRkX2Zhdm9yaXRlcygpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQi LCAiL21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF9hZGRfZmF2b3JpdGVzIiwg YXJndW1lbnRzKTsKfQpmdW5jdGlvbiBwZXJsX2dldF9jYXBjaGFfaWQoKSB7CiAg ICBzZW5kX2FqYXhfcmVxdWVzdCgiR0VUIiwgIi9tYWlsL21hbHZvXzU5L2phamF4 IiwgInBlcmxfZ2V0X2NhcGNoYV9pZCIsIGFyZ3VtZW50cyk7Cn0KZnVuY3Rpb24g cGVybF9jaGVja19jYXBjaGFfbmVlZGVkKCkgewogICAgc2VuZF9hamF4X3JlcXVl c3QoIkdFVCIsICIvbWFpbC9tYWx2b181OS9qYWpheCIsICJwZXJsX2NoZWNrX2Nh cGNoYV9uZWVkZWQiLCBhcmd1bWVudHMpOwp9CmZ1bmN0aW9uIHBlcmxfY2hhbGxl bmdlX3Bvc3NpYmxlKCkgewogICAgc2VuZF9hamF4X3JlcXVlc3QoIkdFVCIsICIv bWFpbC9tYWx2b181OS9qYWpheCIsICJwZXJsX2NoYWxsZW5nZV9wb3NzaWJsZSIs IGFyZ3VtZW50cyk7Cn0KZnVuY3Rpb24gcGVybF9jaGFsbGVuZ2Vfb2ZmZXIoKSB7 CiAgICBzZW5kX2FqYXhfcmVxdWVzdCgiR0VUIiwgIi9tYWlsL21hbHZvXzU5L2ph amF4IiwgInBlcmxfY2hhbGxlbmdlX29mZmVyIiwgYXJndW1lbnRzKTsKfQpmdW5j dGlvbiBwZXJsX3Nob3dfY29tbWVudCgpIHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0 KCJHRVQiLCAiL21haWwvbWFsdm9fNTkvamFqYXgiLCAicGVybF9zaG93X2NvbW1l bnQiLCBhcmd1bWVudHMpOwp9CmZ1bmN0aW9uIHBlcmxfcHJldl9pbmZvcm1lcigp IHsKICAgIHNlbmRfYWpheF9yZXF1ZXN0KCJHRVQiLCAiL21haWwvbWFsdm9fNTkv amFqYXgiLCAicGVybF9wcmV2X2luZm9ybWVyIiwgYXJndW1lbnRzKTsKfQpmdW5j dGlvbiBwZXJsX2NvbXBvc3RfaW52aXRlX2luZm8oKSB7CiAgICBzZW5kX2FqYXhf cmVxdWVzdCgiR0VUIiwgIi9tYWlsL21hbHZvXzU5L2phamF4IiwgInBlcmxfY29t cG9zdF9pbnZpdGVfaW5mbyIsIGFyZ3VtZW50cyk7Cn0KZnVuY3Rpb24gcGVybF9z ZXRfcG9zdF90YWdzKCkgewogICAgc2VuZF9hamF4X3JlcXVlc3QoIkdFVCIsICIv bWFpbC9tYWx2b181OS9qYWpheCIsICJwZXJsX3NldF9wb3N0X3RhZ3MiLCBhcmd1 bWVudHMpOwp9Cgo8L3NjcmlwdD4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny aXB0IiBzcmM9Imh0dHA6Ly9qcy5pbWdzbWFpbC5ydS9yL2pzL2Jsb2dzL2Z1bmMu anM/MTUiPjwvc2NyaXB0PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi IHNyYz0iaHR0cDovL2pzLmltZ3NtYWlsLnJ1L3IvanMvYmxvZ3MvcHVsbGRvd24u anM/MTMiPjwvc2NyaXB0PgoKCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0 IiBzcmM9Imh0dHA6Ly9qcy5pbWdzbWFpbC5ydS9yL2pzL2Jsb2dzL2hlbHAuanM/ OCI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9 Imh0dHA6Ly9qcy5pbWdzbWFpbC5ydS9yL2pzL2Jsb2dzL2ZsdWVudF9vcGVuaW5n LmpzPzUiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg c3JjPSJodHRwOi8vanMuaW1nc21haWwucnUvci9qcy9ibG9ncy9tZW51X3VzZXIu anM/MTEiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg c3JjPSJodHRwOi8vanMuaW1nc21haWwucnUvci9qcy9ibG9ncy90YWdzLmpzPzci Pjwvc2NyaXB0PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i aHR0cDovL2pzLmltZ3NtYWlsLnJ1L3IvanMvYmxvZ3MvY2FsZW5kYXJfdGhlbWUu anM/MyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz cmM9Imh0dHA6Ly9qcy5pbWdzbWFpbC5ydS9yL2pzL2Jsb2dzL2R1ZWwuanM/NyI+ PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0 dHA6Ly9qcy5pbWdzbWFpbC5ydS9yL2pzL2Jsb2dzL3ZvdGUuanM/NiI+PC9zY3Jp cHQ+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8v anMuaW1nc21haWwucnUvci9qcy9ibG9ncy9tdXNpYy5qcz81Ij48L3NjcmlwdD4K CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9qcy5p bWdzbWFpbC5ydS9yL2pzL2Jsb2dzL2plbnRyeS5qcz85Ij48L3NjcmlwdD4KCgoK PCEtLVtpZiBsdCBJRSA3XT4KPCFbaWYgZ3RlIElFIDUuNV0+CjxzY3JpcHQgdHlw ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9qcy5pbWdzbWFpbC5ydS9y L2pzL2Jsb2dzL3BuZy5qcyI+PC9zY3JpcHQ+CjxzdHlsZSB0eXBlPSJ0ZXh0L2Nz cyI+IAouSUVwbmcgeyBmaWx0ZXI6ZXhwcmVzc2lvbihQTkcodGhpcykpOyB9IAou SUVwbmcgQSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfS8qIPHy6Ov8IOTr/yDt7vDs 4Ov87e7pIPDg4e7y+yDx8fvr7uog4iD96+Xs5e3y4PUg8SBQTkct9O7t7uwgKi8K LklFcG5nIGlucHV0IHsgcG9zaXRpb246IHJlbGF0aXZlOyB9Lyog8fLo6/wg5Ov/ IO3u8Ozg6/zt7ukg8ODh7vL7IPTu8Owg4iD96+Xs5e3y4PUg8SBQTkct9O7t7uwg Ki8KPC9zdHlsZT4KPCFbZW5kaWZdPgo8IVtlbmRpZl0tLT4KCjwhLS0gYmxvZ3Nf anNfdGVzdCAtLT4KPCEtLSAvYmxvZ3NfanNfdGVzdCAtLT4KCgo8c2NyaXB0IHR5 cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKdHJ5ewp0aW1lSW50ZXJ2 YWwoJ3Rlc3QnKTsKfWNhdGNoKGUpIHt9Ci8vLS0+PC9zY3JpcHQ+CgoKCgo8L2hl YWQ+CjwhLS0gQkVHSU46IHRvcF9iYXNlIC0tPgo8Ym9keSBhbGluaz0iI0YyNkQw MCIgbGluaz0iIzA4NTdBNiIgdmxpbms9IiMwODU3QTYiIG9ubG9hZD0iIj4KCjxk aXYgaWQ9ImNvbXBsYWluX2Zvcm0iIGNsYXNzPSJjb21wbGFpbl9mb3JtIiBzdHls ZT0iZGlzcGxheTpub25lIj48L2Rpdj4KCjxkaXYgc3R5bGU9InBvc2l0aW9uOmFi c29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7IHdpZHRoOjEwMCU7IGhlaWdo dDogMTUwMDsgb3BhY2l0eTowLjU7ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTsg ei1pbmRleDoyMDA7ZGlzcGxheTpub25lOyIgaWQ9InNoYWRvd19kaXYiPjxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9 IjEiIC8+PC9kaXY+Cgo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHdp ZHRoOiA0MDBweDsgYm9yZGVyOiAzcHggc29saWQgI0ZGRDE3NTsgYmFja2dyb3Vu ZDogI0ZGRkJGNDsgei1pbmRleDogMjU1OyBkaXNwbGF5OiBub25lOyIgaWQ9ImR1 ZWxfY29uZmlybV9kaXYiPjwvZGl2PgoKPGRpdiBzdHlsZT0iZGlzcGxheTogbm9u ZSIgaWQ9ImNoYWxsZW5nZV90aHJvd19kaXZjb250ZW50ZGVmYXVsdF8yNjI3NjU2 MiI+CiAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6ODFweDt3aWR0aDo4MHB4O2JhY2tn cm91bmQ6dXJsKGh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2NoYWxsZW5nZS9n YXVudGxldF93b21hbi5wbmcpIG5vLXJlcGVhdDtwb3NpdGlvbjpyZWxhdGl2ZTsg dG9wOi0xNXB4OyBsZWZ0Oi0xNXB4O2Zsb2F0OmxlZnQ7IiBjbGFzcz0iSUVwbmci PjwvZGl2PgogICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0i MCIgYm9yZGVyPSIwIj4KICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZD4KICAg ICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjojRjI0QjAxOyBmb250LXNp emU6MTZweDsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1mYW1pbHk6YXJpYWw7Ij7C +yDk5enx8uLo8uXr/O3uIPXu8ujy5TxiciAvPiDh8O7x6PL8IOL75+7iIO/u6/zn 7uLg8uXr/j88L3NwYW4+PGJyIC8+CiAgICAgICAgICAgICAgICA8YnIgLz4KICAg ICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXZ0LmZvdG8ubWFpbC5ydS9t YWlsL21hbHZvXzU5L19hdmF0YXJzbWFsbCIgYm9yZGVyPSIwIiBhbHQ9IiIgYWxp Z249ImFic21pZGRsZSIgY2xhc3M9Im1yNSIgPiAKICAgICAgICAgICAgICAgIDxh IGhyZWY9Imh0dHA6Ly93d3cubWFpbC5ydS9hZ2VudD9tZXNzYWdlJmFtcDt0bz1t YWx2b181OUBtYWlsLnJ1Ij48aW1nIHNyYz0iaHR0cDovL3N0YXR1cy5tYWlsLnJ1 Lz9tYWx2b181OUBtYWlsLnJ1IiBhbGlnbj0iYWJzbWlkZGxlIiBib3JkZXI9IjAi IGhlaWdodD0iMTMiIHdpZHRoPSIxMyI+PC9hPiZuYnNwOyZuYnNwOzxhIGhyZWY9 Ii9tYWlsL21hbHZvXzU5LyIgc3R5bGU9ImNvbG9yOiMwODU3QTY7Ij48Yj5NYWx2 aW48L2I+PC9hPjxiciAvPgogICAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+ CiAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8 dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAi IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6IC0zMHB4OyI+PHRyPgog ICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAg PGRpdiBzdHlsZT0id2lkdGg6MzBweDtoZWlnaHQ6NjZweDtiYWNrZ3JvdW5kOnVy bChodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9jaGFsbGVuZ2UvcmFta2EtYmln dGFpbC1sZWZ0LnBuZykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsiIGNsYXNzPSJJ RXBuZyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAg ICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBj ZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCIgd2lkdGg9 IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6N3B4Ij48ZGl2 IGNsYXNzPSJjb3JuZXIgdG9wbGVmdCBweDEiPjwvZGl2PjwvdGQ+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJidWJibGVfYmciPjwv dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3 aWR0aDo3cHgiPjxkaXYgY2xhc3M9ImNvcm5lciB0b3ByaWdodCBweDEiPjwvZGl2 PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0ZCBjbGFzcz0iYnViYmxlX2JnIj48L3RkPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYnViYmxlX2JnIj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIN8g4vvn++Lg/iDi4PEg7eAg 5PP96/wsIO/u8u7s8yD38u46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8dGV4dGFyZWEgbmFtZT0iZXZlbnQiIGlkPSJjaGFsbGVuZ2VfdGhyb3df dGV4dF9kZWZhdWx0IiBzdHlsZT0id2lkdGg6IDIyOHB4OyBib3JkZXI6IDFweCBz b2xpZCAjN0Y5REI5OyBoZWlnaHQ6IDUycHg7IG92ZXJmbG93LXg6IGhpZGRlbjsg b3ZlcmZsb3cteTogYXV0bzsiIG9ua2V5cHJlc3M9InJldHVybiBjaGVja190aHJv d19sZW5ndGgodGhpcykiIG9ua2V5dXA9InJldHVybiBjaGVja190aHJvd19sZW5n dGgodGhpcykiIG9ua2V5ZG93bj0icmV0dXJuIGNoZWNrX3Rocm93X2xlbmd0aCh0 aGlzKSIgb25jaGFuZ2U9InJldHVybiBjaGVja190aHJvd19sZW5ndGgodGhpcyki IHdyYXA9InZpcnR1YWwiPu3lIPfo8uDrIOLg+CDh6+7jLCDt7iDu8fPm5OD+ITwv dGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImJ1YmJs ZV9iZyI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDo3cHgiPjxkaXYgY2xhc3M9 ImNvcm5lciBib3R0b21sZWZ0IHB4MSI+PC9kaXY+PC90ZD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImJ1YmJsZV9iZyI+PC90ZD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRo OjdweCI+PGRpdiBjbGFzcz0iY29ybmVyIGJvdHRvbXJpZ2h0IHB4MSI+PC9kaXY+ PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAg ICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC90 ZD4KICAgICAgICAgICAgICAgIDwvdHI+PC90YWJsZT4KICAgICAgICAgICAgPC90 ZD4KICAgICAgICA8L3RyPgogICAgPC90YWJsZT4KCjxzY3JpcHQgdHlwZT0idGV4 dC9qYXZhc2NyaXB0Ij48IS0tCmZ1bmN0aW9uIGNvbmZpcm1fY2hhbGxlbmdlX29m ZmVyKEpvdXJuYWxJRCwgcXVlc3Rpb24pIHsKICAgIGlmICghcXVlc3Rpb24ubGVu Z3RoKSB7CiAgICAgICAgYWxlcnQoJ83l7uH17uTo7O4g4uLl8fLoIO/w6Pfo7fMg 4vvn7uLgIScpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHBlcmxfY2hhbGxl bmdlX29mZmVyKEpvdXJuYWxJRCwgcXVlc3Rpb24sIHBlcmxfY2hhbGxlbmdlX29m ZmVyX2NhbGxiYWNrKTsKICAgIGhpZGVfY2hhbGxlbmdlX2RpdnMoKTsKfQovLy0t Pjwvc2NyaXB0PgoKICAgIDxkaXYgY2xhc3M9InB0MTAgcGIxMCIgYWxpZ249ImNl bnRlciI+CiAgICAgICAgPGZvcm0gY2xhc3M9Im0wIiBhY3Rpb249Imh0dHA6Ly9i bG9ncy5tYWlsLnJ1L21haWwvbWFsdm9fNTkvamNoYWxsZW5nZSIgb25zdWJtaXQ9 ImNvbmZpcm1fY2hhbGxlbmdlX29mZmVyKCcyNjI3NjU2MicsIGdlYmkoJ2NoYWxs ZW5nZV90aHJvd190ZXh0X2RlZmF1bHQnKS52YWx1ZSk7IHJldHVybiBmYWxzZTsi PgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFs dWU9Im9mZmVyIiAvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9 ImJhY2siIHZhbHVlPSJodHRwOi8vYmxvZ3MubWFpbC5ydS9tYWlsL21hbHZvXzU5 LzZBMEZCOThDNUZENEQxNUMuaHRtbCIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0i c3VibWl0IiB2YWx1ZT0iwvvn4uDy/CIgY2xhc3M9Im1yMTAiIC8+CiAgICAgICAg PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Is7pISDfIO/l8OXk8+zg6yEiIG9u Y2xpY2s9ImhpZGVfY2hhbGxlbmdlX2RpdnMoKTsiIC8+PC9mb3JtPgogICAgPC9k aXY+CjwvZGl2Pgo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRo OiA2NTBweDsgYm9yZGVyOiAzcHggc29saWQgI0ZGRDE3NTsgYmFja2dyb3VuZDog I0ZGRkJGNDsgei1pbmRleDogMjU1OyBkaXNwbGF5OiBub25lOyIgaWQ9ImR1ZWxf YWNjZXB0X2RpdiI+PC9kaXY+Cgo8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lIiBp ZD0iY2hhbGxlbmdlX2FjY2VwdF9kaXZjb250ZW50Ij4KICA8dGFibGUgY2VsbHNw YWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIHdpZHRoPSIxMDAl Ij4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSI2NSIgc3R5bGU9InZlcnRpY2Fs LWFsaWduOiB0b3A7Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJnYXVudGxldCI+CiAg ICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPgogICAgICAg ICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2ltYWdlcy9ibG9n cy9jaGFsbGVuZ2UvZ2F1bnRsZXRfbWFuLnBuZyIgY2xhc3M9IklFcG5nIiB3aWR0 aD0iODAiIGhlaWdodD0iODEiIC8+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8 L2Rpdj4KICAgICAgPC90ZD4KICAgICAgPHRkPgogICAgICAgIDx0YWJsZSBjZWxs c3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgY2xhc3M9InB0 MTAgcHIxMCI+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0i cmlnaHQiIHdpZHRoPSI1MCUiIGNsYXNzPSJ2YWxpZ24gY2hhbGxlbmdlX2F1dG9w b3N0X2dyYWRlIj4KICAgICAgICAgICAgICA8c3Bhbj4wPC9zcGFuPjxiciAvPgog ICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIg cm93c3Bhbj0iMiIgY2xhc3M9InBsNSB2YWxpZ24gcHI1Ij4KICAgICAgICAgICAg ICA8YSBocmVmPSIiPjxpbWcgYm9yZGVyPSIwIiBhbHQ9IiIgc3JjPSJodHRwOi8v YXZ0LmZvdG8ubWFpbC5ydV9hdmF0YXIiIC8+PC9hPgogICAgICAgICAgICA8L3Rk PgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgcm93c3Bhbj0iMiIgY2xh c3M9ImNoYWxsZW5nZV9hdXRvcG9zdF90aW1lX2xlZnQgdmFsaWduIj4KICAgICAg ICAgICAgICA8aW1nIGJvcmRlcj0iMCIgY2xhc3M9IklFcG5nIiBzcmM9Imh0dHA6 Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2R1ZWwvcGlzdG9scy5wbmciIHdpZHRoPSI3 OCIgaGVpZ2h0PSI3OCIgLz48YnIgLz4KICAgICAgICAgICAgIDxzcGFuIHN0eWxl PSJkaXNwbGF5OiBub25lOyIgaWQ9ImNoYWNjcmVtXzEiPs7x8uDr7vH8IDI0IPfg 8eA8L3NwYW4+PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBpZD0iY2hhY2Ny ZW1fMyI+zvHy4Ovu8fwgMyDk7f88L3NwYW4+PHNwYW4gc3R5bGU9ImRpc3BsYXk6 IG5vbmU7IiBpZD0iY2hhY2NyZW1fNSI+zvHy4Ovu8fwgNSDk7eXpPC9zcGFuPjxz cGFuIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgaWQ9ImNoYWNjcmVtXzciPs7x8uDr 7vH8IDcg5O3l6Twvc3Bhbj4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAg PHRkIGFsaWduPSJjZW50ZXIiIHJvd3NwYW49IjIiIGNsYXNzPSJwbDUgdmFsaWdu IHByNSI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIj48aW1nIGJvcmRlcj0iMCIg YWx0PSIiIHNyYz0iaHR0cDovL2F2dC5mb3RvLm1haWwucnVfYXZhdGFyIiAvPjwv YT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0 IiB3aWR0aD0iNTAlIiBjbGFzcz0idmFsaWduIGNoYWxsZW5nZV9hdXRvcG9zdF9n cmFkZSI+CiAgICAgICAgICAgICAgPHNwYW4+MDwvc3Bhbj48YnIgLz4KICAgICAg ICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8dHI+CiAgICAg ICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYm90dG9tIiBjbGFzcz0i cGI1Ij4KICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm1haWwucnUv YWdlbnQ/bWVzc2FnZSZhbXA7dG89Ij48aW1nIGhlaWdodD0iMTMiIGJvcmRlcj0i MCIgYWxpZ249ImFic21pZGRsZSIgd2lkdGg9IjEzIiBjbGFzcz0iSUVwbmciIHNy Yz0iaHR0cDovL3N0YXR1cy5tYWlsLnJ1Lz8iLz48L2E+oDxhIGhyZWY9IiI+PGI+ PC9iPjwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWdu PSJsZWZ0IiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9InBiNSI+CiAgICAgICAgICAg ICAgPGEgaHJlZj0iaHR0cDovL3d3dy5tYWlsLnJ1L2FnZW50P21lc3NhZ2UmYW1w O3RvPSI+PGltZyBoZWlnaHQ9IjEzIiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRk bGUiIHdpZHRoPSIxMyIgY2xhc3M9IklFcG5nIiBzcmM9Imh0dHA6Ly9zdGF0dXMu bWFpbC5ydS8/IiAvPjwvYT6gPGEgaHJlZj0iIj48Yj48L2I+PC9hPgogICAgICAg ICAgICA8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0cj4KICAgICAg ICAgICAgPHRkIGNvbHNwYW49IjIiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQi PgogICAgICAgICAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNp bmc9IjAiIGJvcmRlcj0iMCI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAg ICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICA8dGQgdmFsaWdu PSJ0b3AiPjxkaXYgc3R5bGU9IndpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7YmFja2dy b3VuZDp1cmwoaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvY2hhbGxlbmdlL3Jh bWthMi1zbWFsbHRhaWwtbGVmdC5wbmcpIG5vLXJlcGVhdDtmbG9hdDpyaWdodDtt YXJnaW4tcmlnaHQ6NDBweDsiPjwvZGl2PjwvdGQ+CiAgICAgICAgICAgICAgICAg IDx0ZD48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAg IDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDo0cHgiPjxk aXYgY2xhc3M9ImNvcm5lcjIgdG9wbGVmdDIgcHgxIj48L2Rpdj48L3RkPgogICAg ICAgICAgICAgICAgICA8dGQgY2xhc3M9ImJ1YmJsZV9iZzIiPjwvdGQ+CiAgICAg ICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6NHB4Ij48ZGl2IGNsYXNzPSJj b3JuZXIyIHRvcHJpZ2h0MiBweDEiPjwvZGl2PjwvdGQ+CiAgICAgICAgICAgICAg ICA8L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8 dGQgY2xhc3M9ImJ1YmJsZV9iZzIiPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0 ZCBjbGFzcz0iYnViYmxlX2JnMiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBz dHlsZT0ibWFyZ2luOiAwIDZweDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij48L2Rpdj4K ICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPHRkIGNs YXNzPSJidWJibGVfYmcyIj48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAg ICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3 aWR0aDo0cHgiPjxkaXYgY2xhc3M9ImNvcm5lcjIgYm90dG9tbGVmdDIgcHgxIj48 L2Rpdj48L3RkPgogICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImJ1YmJsZV9i ZzIiPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6NHB4 Ij48ZGl2IGNsYXNzPSJjb3JuZXIyIGJvdHRvbXJpZ2h0MiBweDEiPjwvZGl2Pjwv dGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+ CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAg ICAgICA8dGQgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4K ICAgICAgICAgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5n PSIwIiBib3JkZXI9IjAiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAg ICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0i dG9wIj48ZGl2IHN0eWxlPSJ3aWR0aDoxOXB4O2hlaWdodDoxOXB4O2JhY2tncm91 bmQ6dXJsKGh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2NoYWxsZW5nZS9yYW1r YTItc21hbGx0YWlsLXJpZ2h0LnBuZykgbm8tcmVwZWF0O2Zsb2F0OmxlZnQ7bWFy Z2luLWxlZnQ6NDBweDsiPjwvZGl2PjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0 ZD48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0 cj4KICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDo0cHgiPjxkaXYg Y2xhc3M9ImNvcm5lcjIgdG9wbGVmdDIgcHgxIj48L2Rpdj48L3RkPgogICAgICAg ICAgICAgICAgICA8dGQgY2xhc3M9ImJ1YmJsZV9iZzIiPjwvdGQ+CiAgICAgICAg ICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6NHB4Ij48ZGl2IGNsYXNzPSJjb3Ju ZXIyIHRvcHJpZ2h0MiBweDEiPjwvZGl2PjwvdGQ+CiAgICAgICAgICAgICAgICA8 L3RyPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQg Y2xhc3M9ImJ1YmJsZV9iZzIiPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZCBj bGFzcz0iYnViYmxlX2JnMiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHls ZT0ibWFyZ2luOiAwIDZweDsgdGV4dC1hbGlnbjogbGVmdDsiPgogICAgICAgICAg ICAgICAgICAgICAgwuD4IO7y4uXyIO3gIOL75+7iOgogICAgICAgICAgICAgICAg ICAgICAgPGZvcm0gaWQ9ImFjY2VwdF9jaGFsbGVuZ2VfZm9ybSIgbWV0aG9kPSJH RVQiIGFjdGlvbj0iaHR0cDovL2Jsb2dzLm1haWwucnUvY2dpLWJpbi9qb3VybmFs L2pjaGFsbGVuZ2UiIHN0eWxlPSJtYXJnaW46MCI+CiAgICAgICAgICAgICAgICAg ICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9 ImFjY2VwdCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9 ImhpZGRlbiIgbmFtZT0iQ2hhbGxlbmdlSUQiIHZhbHVlPSIiIC8+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJhY2si IHZhbHVlPSJodHRwOi8vYmxvZ3MubWFpbC5ydS9tYWlsL21hbHZvXzU5LzZBMEZC OThDNUZENEQxNUMuaHRtbCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlu cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZHVyYXRpb24iIHZhbHVlPSIiIGlkPSJj aGFjY2R1cmF0aW9uIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFy ZWEgaWQ9ImFjY2VwdF9jaGFsbGVuZ2VfYW5zd2VyIiBuYW1lPSJhbnN3ZXIiIHN0 eWxlPSJ3aWR0aDogMjQ4cHg7IGJvcmRlcjogMXB4IHNvbGlkICM3RjlEQjk7IGhl aWdodDogNTJweDsgb3ZlcmZsb3cteDogaGlkZGVuOyBvdmVyZmxvdy15OiBhdXRv OyBtYXJnaW46IDAgYXV0bzsiIG9ua2V5cHJlc3M9InJldHVybiBjaGVja190aHJv d19sZW5ndGgodGhpcykiIG9ua2V5dXA9InJldHVybiBjaGVja190aHJvd19sZW5n dGgodGhpcykiIG9ua2V5ZG93bj0icmV0dXJuIGNoZWNrX3Rocm93X2xlbmd0aCh0 aGlzKSIgb25jaGFuZ2U9InJldHVybiBjaGVja190aHJvd19sZW5ndGgodGhpcyki IHdyYXA9InZpcnR1YWwiPvLu4+TgIOTz/ev8LCDy7uv86u4g5PP96/whPC90ZXh0 YXJlYT4KICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAg ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAg ICAgICAgICAgPHRkIGNsYXNzPSJidWJibGVfYmcyIj48L3RkPgogICAgICAgICAg ICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAg ICAgPHRkIHN0eWxlPSJ3aWR0aDo0cHgiPjxkaXYgY2xhc3M9ImNvcm5lcjIgYm90 dG9tbGVmdDIgcHgxIj48L2Rpdj48L3RkPgogICAgICAgICAgICAgICAgICA8dGQg Y2xhc3M9ImJ1YmJsZV9iZzIiPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDx0ZCBz dHlsZT0id2lkdGg6NHB4Ij48ZGl2IGNsYXNzPSJjb3JuZXIyIGJvdHRvbXJpZ2h0 MiBweDEiPjwvZGl2PjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAg ICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8L3Ry PgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PC90 ZD4KICAgICAgICAgICAgPHRkPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw dCI+PCEtLQpmdW5jdGlvbiBhY2NlcHRfY2hhbGxlbmdlX29mZmVyKCkgewogICAg dmFyIGFuc3dlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2NlcHRfY2hh bGxlbmdlX2Fuc3dlcicpLnZhbHVlOwogICAgaWYgKCFhbnN3ZXIubGVuZ3RoKSB7 CiAgICAgICAgYWxlcnQoJ83l7uH17uTo7O4g4uLl8fLoIO7y4uXyIO3gIOL75+7i IScpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdhY2NlcHRfY2hhbGxlbmdlX2Zvcm0nKS5zdWJtaXQoKTsKfQovLy0t Pjwvc2NyaXB0PgogICAgICAgICAgICAgIDxhIG9uY2xpY2s9ImFjY2VwdF9jaGFs bGVuZ2Vfb2ZmZXIoKTsgcmV0dXJuIGZhbHNlOyIgY2xhc3M9InBvaW50ZXIiIG5v aHJlZj0iIj48aW1nIGJvcmRlcj0iMCIgY2xhc3M9Im10NSIgdGl0bGU9Is3g9+Dy /CDk8/3r/CIgYWx0PSLN4Pfg8vwg5PP96/wiIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3IvYmxvZ3MvZHVlbC9tb3J0YWxfY29tYmF0LmdpZiIgLz48L2E+CiAgICAg ICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48L3RkPgog ICAgICAgICAgPC90cj4gCiAgICAgICAgPC90YWJsZT4KICAgICAgPC90ZD4KICAg IDwvdHI+CiAgPC90YWJsZT4KPC9kaXY+Cgo8ZGl2IHN0eWxlPSJwb3NpdGlvbjpy ZWxhdGl2ZTsgZGlzcGxheTpub25lOyB6LWluZGV4OjUxMjsiIGlkPSJmcmllbmRJ bnZpdGVEaXYiPiAKPGRpdiBzdHlsZT0id2lkdGg6NTAwcHg7IGhlaWdodDo0Njdw eDsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6I0ZGRjsgYm9y ZGVyOjJweCBzb2xpZCAjRkY4QjMzOyBib3JkZXItcmFkaXVzOjEwcHg7IC1tb3ot Ym9yZGVyLXJhZGl1czoxMHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MTBweDsg LWtodG1sLWJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzo0cHg7IiBpZD0iZnJp ZW5kSW52aXRlRGl2SW4iPgo8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3Iv YmxvZ3MvaWNvX2RlbC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVy PSIwIiBhbHQ9Isfg6vD78vwiIHRpdGxlPSLH4Orw+/L8IiBzdHlsZT0iY3Vyc29y OnBvaW50ZXI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDo4cHg7IHRvcDo2cHg7 IiBvbmNsaWNrPSJmcmllbmRJbnZpdGVDbG9zZSgnZnJpZW5kSW52aXRlRGl2Jyk7 IiBjbGFzcz0iSUVwbmciIC8+CjxpZnJhbWUgc3JjPSJodHRwOi8vaW1nLm1haWwu cnUvMC5naWYiIGZyYW1lYm9yZGVyPSIwIiBoZWlnaHQ9IjQ2NSIgd2lkdGg9IjUw MCIgc2Nyb2xsaW5nPSJubyIgaWQ9ImZyaWVuZEludml0ZUZyYW1lIiBzdHlsZT0i bWFyZ2luLXRvcDotMnB4OyI+PC9pZnJhbWU+CjwvZGl2Pgo8L2Rpdj4KCjxzY3Jp cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCmZ1bmN0aW9uIGZyaWVuZElu dml0ZVNob3coaWQsc3JjLHN0YXJ0T2JqKSB7CiAgICBmcmllbmRJbnZpdGVDbG9z ZShpZCk7CiAgICBnZWJpKCdmcmllbmRJbnZpdGVGcmFtZScpLnNyYz1zcmM7CiAg ICBzaGFkb3dEaXYoMSwnI0ZGRicpOwogICAgZ2ViaShpZCsnSW4nKS5zdHlsZS5s ZWZ0PXBhcnNlSW50KGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGgvMiktMjUwKydw eCc7CiAgICBnZWJpKGlkKydJbicpLnN0eWxlLnRvcCA9IHBhcnNlSW50KGdldENs aWVudEhlaWdodCgpLzIpK2dldEJvZHlTY3JvbGxUb3AoKS0yMDArJ3B4JzsKICAg IGdlYmkoaWQpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwp9Cgp2YXIgZnJpZW5k SW52aXRlRGl2SW5fT2xkX2hlaWdodCA9IGdlYmkoJ2ZyaWVuZEludml0ZURpdklu Jykuc3R5bGUuaGVpZ2h0Owp2YXIgZnJpZW5kSW52aXRlRGl2SW5fT2xkX3dpZHRo ID0gZ2ViaSgnZnJpZW5kSW52aXRlRGl2SW4nKS5zdHlsZS53aWR0aDsKdmFyIGZy aWVuZEludml0ZUZyYW1lX09sZF9oZWlnaHQgPSBnZWJpKCdmcmllbmRJbnZpdGVG cmFtZScpLnN0eWxlLmhlaWdodDsKdmFyIGZyaWVuZEludml0ZUZyYW1lX09sZF93 aWR0aCA9IGdlYmkoJ2ZyaWVuZEludml0ZUZyYW1lJykuc3R5bGUud2lkdGg7Cgpm dW5jdGlvbiBjaGFsbGVuZ2VTZXF1ZW5jZVNob3coKSB7CiAgICBmcmllbmRJbnZp dGVDbG9zZSgnZnJpZW5kSW52aXRlRGl2Jyk7CiAgICB2YXIgaWQgPSAnZnJpZW5k SW52aXRlRGl2SW4nOwoKICAgIGdlYmkoJ2ZyaWVuZEludml0ZUZyYW1lJykuc3R5 bGUuaGVpZ2h0ID0gJzI1MHB4JzsgLy8gZ29vZCBzdGFydAogICAgZ2ViaSgnZnJp ZW5kSW52aXRlRnJhbWUnKS5zdHlsZS53aWR0aCA9ICc1NTBweCc7IC8vIGdvb2Qg c3RhcnQKICAgIHZhciBmcmFtZVdpZHRoID0gcGFyc2VJbnQoZ2ViaSgnZnJpZW5k SW52aXRlRnJhbWUnKS5zdHlsZS53aWR0aCk7IC8vIGNhcCBPYnZpb3VzCiAgICBn ZWJpKGlkKS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7CiAgICBnZWJpKGlkKS5zdHls ZS53aWR0aCA9ICdhdXRvJzsKICAgIHNoYWRvd0RpdigxLCAnI0ZGRicpOwogICAg Z2ViaShpZCkuc3R5bGUubGVmdCA9IHBhcnNlSW50KGRvY3VtZW50LmJvZHkuc2Ny b2xsV2lkdGgvMiktZnJhbWVXaWR0aC8yKydweCc7CiAgICBnZWJpKGlkKS5zdHls ZS50b3AgID0gcGFyc2VJbnQoZ2V0Q2xpZW50SGVpZ2h0KCkvMikrZ2V0Qm9keVNj cm9sbFRvcCgpLTIwMCsncHgnOwogICAgZ2ViaSgnZnJpZW5kSW52aXRlRGl2Jyku c3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICBnZWJpKCdmcmllbmRJbnZpdGVG cmFtZScpLnNyYz0naHR0cDovL2Jsb2dzLm1haWwucnUvY2dpLWJpbi9qb3VybmFs L2pjaGFsbGVuZ2U/YWN0aW9uPXNlcXVlbmNlJzsKfQoKZnVuY3Rpb24gZnJpZW5k SW52aXRlQ2xvc2UoaWQpIHsKICAgIHNoYWRvd0RpdigwKTsKICAgIGdlYmkoaWQp LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBnZWJpKCdmcmllbmRJbnZpdGVE aXZJbicpLnN0eWxlLmhlaWdodCA9IGZyaWVuZEludml0ZURpdkluX09sZF9oZWln aHQ7CiAgICBnZWJpKCdmcmllbmRJbnZpdGVEaXZJbicpLnN0eWxlLndpZHRoID0g ZnJpZW5kSW52aXRlRGl2SW5fT2xkX3dpZHRoOwogICAgZ2ViaSgnZnJpZW5kSW52 aXRlRnJhbWUnKS5zdHlsZS5oZWlnaHQgPSAnJzsKICAgIGdlYmkoJ2ZyaWVuZElu dml0ZUZyYW1lJykuc3R5bGUud2lkdGggPSAnJzsKCWdlYmkoJ2ZyaWVuZEludml0 ZUZyYW1lJykuc3JjPScnOwp9CgpmdW5jdGlvbiBTaG93QmxvZ3NQb3B1cChzcmMs dyxoLGNvbG9yKSB7Cgl2YXIgaWQgPSAnZnJpZW5kSW52aXRlRGl2JzsKCUNsb3Nl QmxvZ3NQb3B1cCgpOwoJCiAgICBnZWJpKCdmcmllbmRJbnZpdGVGcmFtZScpLnNy Yz1zcmM7CgkKICAgIGlmKCFjb2xvcikgc2hhZG93RGl2KDApOwoJZWxzZSBpZihj b2xvciA9PSAxKSBzaGFkb3dEaXYoMSwnI0ZGRicpOwoJZWxzZSBzaGFkb3dEaXYo MSxjb2xvcik7CgkKCWlmKGgpIHsKCQlnZWJpKCdmcmllbmRJbnZpdGVGcmFtZScp LnN0eWxlLmhlaWdodCA9IGg7CgkJZ2ViaShpZCsnSW4nKS5zdHlsZS5oZWlnaHQg PSAnYXV0byc7ICAgIAoJfQogICAgaWYodykgewoJCWdlYmkoJ2ZyaWVuZEludml0 ZUZyYW1lJykuc3R5bGUud2lkdGggPSB3OwoJCWdlYmkoaWQrJ0luJykuc3R5bGUu d2lkdGggPSAnYXV0byc7Cgl9CiAgICBnZWJpKGlkKydJbicpLnN0eWxlLmxlZnQ9 cGFyc2VJbnQoZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aC8yKS0odz93LzI6MjUw KSsncHgnOwogICAgZ2ViaShpZCsnSW4nKS5zdHlsZS50b3AgPSBwYXJzZUludChn ZXRDbGllbnRIZWlnaHQoKS8yKStnZXRCb2R5U2Nyb2xsVG9wKCktKGg/aC8yOjIw MCkrJ3B4JzsKICAgIGdlYmkoaWQpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoJ cmV0dXJuIGZhbHNlOwp9CmZ1bmN0aW9uIENsb3NlQmxvZ3NQb3B1cCgpIHsKICAg IHZhciBpZCA9ICdmcmllbmRJbnZpdGVEaXYnOwoJc2hhZG93RGl2KDApOwogICAg Z2ViaShpZCkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIGdlYmkoJ2ZyaWVu ZEludml0ZURpdkluJykuc3R5bGUuaGVpZ2h0ID0gZnJpZW5kSW52aXRlRGl2SW5f T2xkX2hlaWdodDsKICAgIGdlYmkoJ2ZyaWVuZEludml0ZURpdkluJykuc3R5bGUu d2lkdGggPSBmcmllbmRJbnZpdGVEaXZJbl9PbGRfd2lkdGg7CiAgICBnZWJpKCdm cmllbmRJbnZpdGVGcmFtZScpLnN0eWxlLmhlaWdodCA9ICcnOwogICAgZ2ViaSgn ZnJpZW5kSW52aXRlRnJhbWUnKS5zdHlsZS53aWR0aCA9ICcnOwoJZ2ViaSgnZnJp ZW5kSW52aXRlRnJhbWUnKS5zcmM9Jyc7CglyZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0 aW9uIGdldENsaWVudEhlaWdodCgpIHsKICAgIHZhciBhPScnOwogICAgYT0oZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDxkb2N1bWVudC5ib2R5 LmNsaWVudEhlaWdodCk/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhl aWdodDpkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDsKICAgIGlmKGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ9PTAgfHwgZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50LmNsaWVudEhlaWdodD09J3VuZGVmaW5lZCcpIGE9ZG9jdW1l bnQuYm9keS5jbGllbnRIZWlnaHQ7CiAgICBpZihkb2N1bWVudC5ib2R5LmNsaWVu dEhlaWdodD09MCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodD09J3VuZGVm aW5lZCcpIGE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDsK ICAgIHJldHVybiBhOyAgCn0KLy8tLT48L3NjcmlwdD4KCgoKIAogPHN0eWxlPgog LyogUE9QVVAgKi8KZGl2LnBvcHVwRGl2SW4gewoJd2lkdGg6NTAwcHg7IAoJcG9z aXRpb246YWJzb2x1dGU7Cn0KZGl2LnBvcHVwRGl2SW4gZGl2LmNvbnRlbnQgewoJ Ym9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjYjdjZWRlOwoJYm9yZGVyLXJpZ2h0OiAy cHggc29saWQgI2I3Y2VkZTsKCWJhY2tncm91bmQtY29sb3I6I0VERUZGMjsKfQpp ZnJhbWUuUG9wdXBGcmFtZSB7Cgl3aWR0aDo0OTZweDsKCWhlaWdodDo0NjVweDsK fQoKZGl2LnBvcHVwRGl2SW4gZGl2LmJvcmRlcl90X2IgZGl2Lm5vdF9sLCBkaXYu cG9wdXBEaXZJbiBkaXYuYm9yZGVyX3RfYiBkaXYubm90X2wgZGl2IHsKCW1hcmdp bi1sZWZ0OjBweDsKCXBhZGRpbmctbGVmdDowcHg7Cglib3JkZXItbGVmdDpub25l OwkKfQpkaXYucG9wdXBEaXZJbiBkaXYuYm9yZGVyX3RfYiBkaXYubm90X3IsIGRp di5wb3B1cERpdkluIGRpdi5ib3JkZXJfdF9iIGRpdi5ub3RfciBkaXYgewoJbWFy Z2luLXJpZ2h0OjBweDsKCXBhZGRpbmctcmlnaHQ6MHB4OwoJYm9yZGVyLXJpZ2h0 Om5vbmU7CQp9CgovKiBwb3B1cCBidXR0b24gKi8KZGl2LnBvcHVwRGl2SW4gZGl2 Lm11bHRpX2J1dHRvbl9vbiB7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXJpZ2h0Oi05 OHB4OwoJdG9wOjA7Cgl6LWluZGV4OjMwMDsJCgl3aWR0aDoxMDBweDsKCWhlaWdo dDozNHB4Owp9CmRpdi5wb3B1cERpdkluIGRpdi5tdWx0aV9idXR0b25fb24gZGl2 LmJ1dHRvbiB7CglwYWRkaW5nLWxlZnQ6NHB4OwoJYmFja2dyb3VuZDogdXJsKGh0 dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL3d5c2l3eWcvcG9wdXBfYnV0X2JnLmdp ZikgI0VERUZGMiBib3R0b20gcmlnaHQgbm8tcmVwZWF0OwoJaGVpZ2h0OjMxcHg7 Cglmb250OiAxMnB4LzE0cHggQXJpYWwsc2Fucy1zZXJpZjsKCWNvbG9yOiM1NzU4 NWI7Cglib3JkZXItcmlnaHQ6MnB4IHNvbGlkICNCN0NFREU7Cn0KZGl2LnBvcHVw RGl2SW4gZGl2LnBvcHVwX2J1dF90IHsKCWJhY2tncm91bmQtY29sb3I6ICNCN0NF REU7CgloZWlnaHQ6MnB4OwoJZm9udDogMXB4LzFweDsKCXBvc2l0aW9uOnJlbGF0 aXZlOwoJdG9wOi0ycHg7Cgl6LWluZGV4OjMwMTsKCW1hcmdpbi1yaWdodDoycHg7 CgltYXJnaW4tYm90dG9tOi0ycHg7Cn0KZGl2LnBvcHVwRGl2SW4gZGl2LnBvcHVw X2J1dF90IGltZyB7CgltYXJnaW4tYm90dG9tOi0ycHg7Cglwb3NpdGlvbjphYnNv bHV0ZTsKCXJpZ2h0Oi0ycHg7Cn0KZGl2LnBvcHVwRGl2SW4gZGl2LnBvcHVwX2J1 dF9iIHsKCWJhY2tncm91bmQtY29sb3I6ICNCN0NFREU7CgloZWlnaHQ6MnB4OwoJ Zm9udDogMXB4LzFweDsKCXBvc2l0aW9uOnJlbGF0aXZlOwoJYm90dG9tOi0ycHg7 Cgl6LWluZGV4OjMwMTsKCW1hcmdpbi1yaWdodDoycHg7CgltYXJnaW4tdG9wOi0y cHg7Cn0KZGl2LnBvcHVwRGl2SW4gZGl2LnBvcHVwX2J1dF9iIGltZyB7CgltYXJn aW4tdG9wOi0ycHg7Cglwb3NpdGlvbjphYnNvbHV0ZTsKCXJpZ2h0Oi0ycHg7Cn0K Lyogc2hhZG93ICovCmRpdi5wb3B1cERpdkluIGRpdi5wb3B1cF9zaGFkb3cgewoJ aGVpZ2h0OjRweDsKCWZvbnQ6MXB4LzFweDsKCWJhY2tncm91bmQ6dXJsKGh0dHA6 Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL3d5c2l3eWcvcG9wdXBfc2hhZG93LnBuZykg dHJhbnNwYXJlbnQgcmVwZWF0LXg7Cglwb3NpdGlvbjpyZWxhdGl2ZTsKCWJvdHRv bTotNnB4OwoJei1pbmRleDozMDE7CgltYXJnaW4tdG9wOi00cHg7Cn0KZGl2LnBv cHVwRGl2SW4gZGl2LnBvcHVwX3NoYWRvdyBkaXYuc2hfciB7Cglmb250OjFweC8x cHg7CgloZWlnaHQ6NHB4OwoJd2lkdGg6M3B4OwoJYmFja2dyb3VuZDp1cmwoaHR0 cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3Mvd3lzaXd5Zy9wb3B1cF9zaGFkb3dfci5w bmcpIHRyYW5zcGFyZW50IHJpZ2h0IHRvcCBuby1yZXBlYXQ7CglmbG9hdDpyaWdo dDsKCW1hcmdpbi1yaWdodDotM3B4OwoJLy9wb3NpdGlvbjpyZWxhdGl2ZTsKfQpk aXYucG9wdXBEaXZJbiBkaXYucG9wdXBfc2hhZG93IGRpdi5zaF9sIHsKCWZvbnQ6 MXB4LzFweDsKCWhlaWdodDo0cHg7Cgl3aWR0aDozcHg7CgliYWNrZ3JvdW5kOnVy bChodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy93eXNpd3lnL3BvcHVwX3NoYWRv d19sLnBuZykgdHJhbnNwYXJlbnQgcmlnaHQgdG9wIG5vLXJlcGVhdDsKCWZsb2F0 OmxlZnQ7CgltYXJnaW4tbGVmdDotM3B4OwoJLy9wb3NpdGlvbjpyZWxhdGl2ZTsK fQoKZGl2LnBvcHVwRGl2SW4gZGl2LnBvcHVwX2Nvcl90IHsKCWJhY2tncm91bmQt Y29sb3I6ICNCN0NFREU7CgloZWlnaHQ6MnB4OwoJZm9udDogMXB4LzFweDsKCXBv c2l0aW9uOnJlbGF0aXZlOwoJdG9wOi0ycHg7Cgl6LWluZGV4OjMwMTsKCW1hcmdp bi1yaWdodDoycHg7CgltYXJnaW4tbGVmdDoycHg7CgltYXJnaW4tYm90dG9tOi0y cHg7Cn0KZGl2LnBvcHVwRGl2SW4gZGl2LnBvcHVwX2Nvcl90IGltZyB7CgltYXJn aW4tYm90dG9tOi0ycHg7Cglwb3NpdGlvbjphYnNvbHV0ZTsKfQoKZGl2LnBvcHVw RGl2SW4gZGl2LnBvcHVwX2Nvcl90IGltZy5jb3JfbCB7CglsZWZ0Oi0ycHg7Cn0K ZGl2LnBvcHVwRGl2SW4gZGl2LnBvcHVwX2Nvcl90IGltZy5jb3JfciB7CglyaWdo dDotMnB4Owp9CgpkaXYucG9wdXBEaXZJbiBkaXYucG9wdXBfY29yX2IgewoJYmFj a2dyb3VuZC1jb2xvcjogI0I3Q0VERTsKCWhlaWdodDoycHg7Cglmb250OiAxcHgv MXB4OwoJcG9zaXRpb246cmVsYXRpdmU7Cglib3R0b206LTJweDsKCXotaW5kZXg6 MzAxOwoJbWFyZ2luLXJpZ2h0OjJweDsKCW1hcmdpbi1sZWZ0OjJweDsKCW1hcmdp bi10b3A6LTJweDsKCXotaW5kZXg6MzAyOwp9CmRpdi5wb3B1cERpdkluIGRpdi5w b3B1cF9jb3JfYiBpbWcgewoJbWFyZ2luLXRvcDotMnB4OwoJcG9zaXRpb246YWJz b2x1dGU7Cn0KZGl2LnBvcHVwRGl2SW4gZGl2LnBvcHVwX2Nvcl9iIGltZy5jb3Jf bCB7CglsZWZ0Oi0ycHg7Cn0KZGl2LnBvcHVwRGl2SW4gZGl2LnBvcHVwX2Nvcl9i IGltZy5jb3JfciB7CglyaWdodDotMnB4Owp9CgogCiA8L3N0eWxlPgogCiA8c2Ny aXB0PiA8IS0tCmZ1bmN0aW9uIHJlc2l6ZUZyYW1lKGgpewkKCWg9aCszNDsKCXZh ciBjdXJ0U3RlcDsKCXZhciBzdGVwc0NvdW50ID0gNjsKCW9iaiA9IGdlYmkoJ1Bv cHVwRnJhbWUnKTsKCXZhciBjdXJIZWlnaHQgPSBvYmoub2Zmc2V0SGVpZ2h0OwoJ aWYgKGg+Y3VySGVpZ2h0KXsKCQljdXJ0U3RlcCA9IHBhcnNlSW50KChoLWN1ckhl aWdodCkvc3RlcHNDb3VudCk7CgkJaWYoY3VydFN0ZXA8NSkgY3VydFN0ZXA9NTsK CQlyZXNpemVGcmFtZURvKCcrJyxoLGN1cnRTdGVwKTsJCQkJCgl9CglpZiAoaDxj dXJIZWlnaHQpewoJCWN1cnRTdGVwID0gcGFyc2VJbnQoKGN1ckhlaWdodC1oKS9z dGVwc0NvdW50KTsJCgkJaWYoY3VydFN0ZXA8NSkgY3VydFN0ZXA9NTsJCQoJCXJl c2l6ZUZyYW1lRG8oJy0nLGgsY3VydFN0ZXApOwkJCQoJCX0JCQoJfQkJCgpmdW5j dGlvbiByZXNpemVGcmFtZURvKGRpcixoLGN1cnRTdGVwKXsKCW9iaiA9IGdlYmko J1BvcHVwRnJhbWUnKTsKCWlmKGRpcj09JysnKXsJCgkJb2JqLnN0eWxlLmhlaWdo dCA9IG9iai5vZmZzZXRIZWlnaHQgKyBjdXJ0U3RlcDsJCQkJCgkJaWYob2JqLm9m ZnNldEhlaWdodCA8IChoIC0gY3VydFN0ZXApKSB7c2V0VGltZW91dChmdW5jdGlv bigpIHtyZXNpemVGcmFtZURvKGRpcixoLGN1cnRTdGVwKX0sNTApO30KCQllbHNl IHtvYmouc3R5bGUuaGVpZ2h0ID0gaDt9CgkJc2hhZG93RGl2KDEpOwoJfQoJaWYo ZGlyPT0nLScpewoJCW9iai5zdHlsZS5oZWlnaHQ9b2JqLm9mZnNldEhlaWdodC1j dXJ0U3RlcDsJCQoJCWlmKG9iai5vZmZzZXRIZWlnaHQgPiAoaCArIGN1cnRTdGVw KSkge3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7cmVzaXplRnJhbWVEbyhkaXIsaCxj dXJ0U3RlcCl9LDUwKTt9CgkJZWxzZXtvYmouc3R5bGUuaGVpZ2h0ID0gaDt9CgkJ c2hhZG93RGl2KDEpOwoJfQkKfQoKZnVuY3Rpb24gcG9wdXBTaG93KGlkLHNyYyx3 LGgpewoJZ2ViaSgnUG9wdXBGcmFtZScpLnNyYz1zcmM7CglzaGFkb3dEaXYoMSk7 CglnZWJpKCdQb3B1cEZyYW1lJykuc3R5bGUud2lkdGggPSB3OwoJZ2ViaSgnUG9w dXBGcmFtZScpLnN0eWxlLmhlaWdodCA9IGg7CglnZWJpKGlkKS5zdHlsZS53aWR0 aCA9IHcrNDsKCWdlYmkoaWQpLnN0eWxlLmhlaWdodCA9IGgrNDsKCWdlYmkoaWQp LnN0eWxlLmxlZnQ9cGFyc2VJbnQoZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aC8y KS1wYXJzZUludCh3LzIpKydweCc7CglnZWJpKGlkKS5zdHlsZS50b3AgPSBwYXJz ZUludChnZXRDbGllbnRIZWlnaHQoKS8yKStnZXRCb2R5U2Nyb2xsVG9wKCktcGFy c2VJbnQoaC8yKSsncHgnOwoJZ2ViaSgncG9wdXBEaXYnKS5zdHlsZS5kaXNwbGF5 ID0gJ2Jsb2NrJzsKfQoKZnVuY3Rpb24gcG9wdXBDbG9zZShpZCl7CglzaGFkb3dE aXYoMCk7CglnZWJpKGlkKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp9CgpmdW5j dGlvbiB3eXNpd3lnUG9wdXBDbG9zZSgpewoJc2hhZG93RGl2KDApOwoJZ2ViaSgn cG9wdXBEaXYnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp9CgoKZnVuY3Rpb24g Z2V0Q2xpZW50SGVpZ2h0KCkKewp2YXIgYT0nJzsKCWE9KGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudC5jbGllbnRIZWlnaHQ8ZG9jdW1lbnQuYm9keS5jbGllbnRIZWln aHQpP2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ6ZG9jdW1l bnQuYm9keS5jbGllbnRIZWlnaHQ7CglpZihkb2N1bWVudC5kb2N1bWVudEVsZW1l bnQuY2xpZW50SGVpZ2h0PT0wIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5j bGllbnRIZWlnaHQ9PSd1bmRlZmluZWQnKSBhPWRvY3VtZW50LmJvZHkuY2xpZW50 SGVpZ2h0OwoJaWYoZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ9PTAgfHwgZG9j dW1lbnQuYm9keS5jbGllbnRIZWlnaHQ9PSd1bmRlZmluZWQnKSBhPWRvY3VtZW50 LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7CglyZXR1cm4gYTsgIAp9Cgov Ly0tPjwvc2NyaXB0PiAKIAo8ZGl2IHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsg ei1pbmRleDoyNTU7IGRpc3BsYXk6bm9uZTsiIGlkPSJwb3B1cERpdiI+IAoJPGRp diBjbGFzcz0icG9wdXBEaXZJbiIgaWQ9InBvcHVwRGl2SW4iPiAJCQoJCTxkaXYg c3R5bGU9ImJhY2tncm91bmQtY29sb3I6I0ZGRjsiPgkJCQoJCQk8ZGl2IGNsYXNz PSJwb3B1cF9jb3JfdCI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Js b2dzL3d5c2l3eWcvcG9wdXBfY29yX2xfdC5naWYiIHdpZHRoPSI0IiBoZWlnaHQ9 IjQiIGJvcmRlcj0iMCIgY2xhc3M9ImNvcl9sIj48aW1nIHNyYz0iaHR0cDovL2lt Zy5tYWlsLnJ1L3IvYmxvZ3Mvd3lzaXd5Zy9wb3B1cF9jb3Jfcl90LmdpZiIgd2lk dGg9IjQiIGhlaWdodD0iNCIgYm9yZGVyPSIwIiBjbGFzcz0iY29yX3IiPjwvZGl2 PgkJCQoJCQk8ZGl2IGNsYXNzPSJjb250ZW50Ij4KCQkJCTxpZnJhbWUgc3JjPSJo dHRwOi8vaW1nLm1haWwucnUvMC5naWYiIGZyYW1lYm9yZGVyPSIwIiBzY3JvbGxp bmc9Im5vIiBpZD0iUG9wdXBGcmFtZSIgY2xhc3M9IlBvcHVwRnJhbWUiPjwvaWZy YW1lPgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwb3B1cF9jb3Jf YiI+PGltZyBjbGFzcz0iY29yX2wiIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3Iv YmxvZ3Mvd3lzaXd5Zy9wb3B1cF9jb3JfbF9iLmdpZiIgd2lkdGg9IjQiIGhlaWdo dD0iNCIgYm9yZGVyPSIwIj48aW1nIGNsYXNzPSJjb3JfciIgc3JjPSJodHRwOi8v aW1nLm1haWwucnUvci9ibG9ncy93eXNpd3lnL3BvcHVwX2Nvcl9yX2IuZ2lmIiB3 aWR0aD0iNCIgaGVpZ2h0PSI0IiBib3JkZXI9IjAiPjwvZGl2PgoJCTxkaXYgY2xh c3M9InBvcHVwX3NoYWRvdyBJRXBuZyBtbDMgbXIzIj48ZGl2IGNsYXNzPSJzaF9s IElFcG5nIj48L2Rpdj48ZGl2IGNsYXNzPSJzaF9yIElFcG5nIj48L2Rpdj48L2Rp dj4KCTwvZGl2Pgo8L2Rpdj4gCgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw dCI+PCEtLQp2YXIgbWFzc3VybD0nJzsKCmZ1bmN0aW9uIHNob3dfYXZhKHVybCxh dmFfaWQpIHsJCQoJbWFzc3VybD11cmw7Cgl2YXIgZ2V0cG9zID0gZ2V0RWxlbWVu dFBvc2l0aW9uKCd1c2VyYXZhdGFyXycrYXZhX2lkKTsKCWdlYmkoJ2JpZ2F2YXBy ZXZpZXcnKS5zdHlsZS5sZWZ0PWdldHBvcy5sZWZ0OwoJZ2ViaSgnYmlnYXZhcHJl dmlldycpLnN0eWxlLnRvcCA9IGdldHBvcy50b3A7CQoJZ2ViaSgnYmlnYXZhaW1n Jykuc3JjPSdodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9sb2FkLmdpZic7Cgln ZWJpKCdpbWdmb3JzaXplJykuc3JjPXVybDsKCXNoYWRvd0RpdigxKTsJCQkJCgln ZWJpKCdiaWdhdmFwcmV2aWV3Jykuc3R5bGUuZGlzcGxheSA9ICcnOwp9IAoKZnVu Y3Rpb24gc2hvd19hdmFfZW5kKHVybCxpbWdoLGltZ3cpIHsKCWlmKHVybCE9Jycp ewoJCWdlYmkoJ2JpZ2F2YXByZXZpZXcnKS5zdHlsZS5sZWZ0PXBhcnNlSW50KGRv Y3VtZW50LmJvZHkuc2Nyb2xsV2lkdGgvMiktcGFyc2VJbnQoaW1ndy8yKSsncHgn OwoJCWdlYmkoJ2JpZ2F2YXByZXZpZXcnKS5zdHlsZS50b3AgPSBwYXJzZUludChn ZXRDbGllbnRIZWlnaHQoKS8yKStnZXRCb2R5U2Nyb2xsVG9wKCktcGFyc2VJbnQo aW1naC8yKSsncHgnOwoJCWdlYmkoJ2JpZ2F2YWltZycpLnNyYz11cmw7Cgl9CQp9 CgpmdW5jdGlvbiBwYXVzZShtcykgewogICAgdmFyIGRhdGU9bmV3IERhdGUoKTsK ICAgIHZhciBjdXJEYXRlPW51bGw7CiAgICBkbyB7CiAgICAgICAgY3VyRGF0ZT1u ZXcgRGF0ZSgpOwogICAgfSB3aGlsZSAoY3VyRGF0ZS1kYXRlPG1zKTsKfQoKZnVu Y3Rpb24gY2xvc2VfYXZhKCkgewoJZ2ViaSgnYmlnYXZhcHJldmlldycpLnN0eWxl LmRpc3BsYXkgPSAnbm9uZSc7CglzaGFkb3dEaXYoMCk7CglnZWJpKCdiaWdhdmFp bWcnKS5zcmM9J2h0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2xvYWQuZ2lmJzsK CWdlYmkoJ2ltZ2ZvcnNpemUnKS5zcmM9J2h0dHA6Ly9pbWcubWFpbC5ydS9yL2Js b2dzL2xvYWQuZ2lmJzsKfQovLy0tPjwvc2NyaXB0PgoKPGRpdiBzdHlsZT0iZGlz cGxheTpub25lOyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoyNTU7IiBpZD0i YmlnYXZhcHJldmlldyI+CjxkaXYgYWxpZ249InJpZ2h0Ij4KPGRpdiBhbGlnbj0i Y2VudGVyIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRkRGRkU1OyI+CjxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9sb2FkLmdpZiIgYm9yZGVy PSIwIiBhbHQ9IiIgaWQ9ImJpZ2F2YWltZyIgc3R5bGU9ImJvcmRlcjozcHggc29s aWQgI0ZERkZFNTsiIG9uY2xpY2s9ImNsb3NlX2F2YSgpOyIgY2xhc3M9InBvaW50 ZXIiIHRpdGxlPSLH4Orw+/L8IOjn7uHw4Obl7ejlIj4KPC9kaXY+CjxkaXYgb25j bGljaz0iY2xvc2VfYXZhKCk7IiBzdHlsZT0id2lkdGg6NjNweDsgYmFja2dyb3Vu ZC1jb2xvcjojRkRGRkU1O2ZvbnQtc2l6ZToxMnB4OyBwYWRkaW5nOjAgNHB4IDRw eCA0cHg7Y3Vyc29yOnBvaW50ZXI7IGNvbG9yOiM3Nzc7IGZvbnQtZmFtaWx5OnRh aG9tYTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsiIG9ubW91c2VvdmVyPSJ0 aGlzLnN0eWxlLmNvbG9yPScjRkZBQTAwJzsiIG9ubW91c2VvdXQ9InRoaXMuc3R5 bGUuY29sb3I9JyM3NzcnOyIgPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUv ci9ibG9ncy9pY29fZGVsLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3Jk ZXI9IjAiIGFsdD0i5+Dq8Pvy/CIgdGl0bGU9Iufg6vD78vwiIGNsYXNzPSJJRXBu ZyBtcjMiIGFsaWduPSJhYnNtaWRkbGUiPufg6vD78vw8L2Rpdj48L2Rpdj4KPC9k aXY+CjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIGlkPSJpbWdm b3JzaXplIiBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47IHBvc2l0aW9uOmFic29s dXRlOyB6LWluZGV4OjIwMDsiIG9ubG9hZD0ic2hvd19hdmFfZW5kKG1hc3N1cmws dGhpcy5vZmZzZXRIZWlnaHQsdGhpcy5vZmZzZXRXaWR0aCk7Ij4KCjxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy93YWl0LmdpZiIgaWQ9ImZvclVz ZXJQaWNTaG93IiBzdHlsZT0iYm9yZGVyOjVweCBzb2xpZCAjRTNFNUVCOyBkaXNw bGF5Om5vbmU7IHotaW5kZXg6MTA7IHBvc2l0aW9uOmFic29sdXRlOyI+CjxpbnB1 dCB0eXBlPSJoaWRkZW4iIGlkPSJiYWNrX3BhcmFtX2lucHV0IiB2YWx1ZT0iaHR0 cDovL2Jsb2dzLm1haWwucnUvbWFpbC9tYWx2b181OS82QTBGQjk4QzVGRDREMTVD Lmh0bWwiPgo8IS0tIEJFR0lOOiBkaXYgZm9yIHVzZXIgZGV0YWlscyAtLT4KPGRp diBpZD0idXNlckRyb3BEb3duSWQiIGNsYXNzPSJ1c2luZkFycm93IiBzdHlsZT0i ZGlzcGxheTpub25lIiBvbmNsaWNrPSJidWJibGUoKSI+PC9kaXY+CjwhLS0gRU5E OiBkaXYgZm9yIHVzZXIgZGV0YWlscyAtLT4KPGRpdiBpZD0iaGVscF9kaXYiIGNs YXNzPSJoZWxwX2RpdiIgYWxpZ249ImxlZnQiPjwvZGl2Pgo8ZGl2IGlkPSJjYXBj aGFfcG9wdXAiPjwvZGl2Pgo8dGFibGUgaWQ9ImJvZHlfbGVmdF9iZyIgd2lkdGg9 IjEwMCUiIGNsYXNzPSJib2R5X2JnIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNp bmc9IjAiPgo8dHI+Cgk8dGQgaWQ9ImJvZHlfYmciPgoJCTxkaXYgaWQ9ImJvZHlf ZGl2Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OjA7Zm9udDowLzA7Ij48aW1nIGNsYXNz PSJ0bnMtY291bnRlciIgc3JjPSJodHRwOi8vd3d3LnRucy1jb3VudGVyLnJ1L1Yx M2EqKioqbWFpbF9ydS9ydS9DUDEyNTEvdG1zZWM9bWFpbF9ibG9ncy1vdGhlci8i IHdpZHRoPSIxIiBoZWlnaHQ9IjEiICBhbHQ9IiIgLz4gDQoNCjwhLS1MaXZlSW50 ZXJuZXQgY291bnRlci0tPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48 IS0tDQpkb2N1bWVudC53cml0ZSgiPGltZyBzcmM9J2h0dHA6Ly9jb3VudGVyLnlh ZHJvLnJ1L2hpdD9yIisNCmVzY2FwZShkb2N1bWVudC5yZWZlcnJlcikrKCh0eXBl b2Yoc2NyZWVuKT09InVuZGVmaW5lZCIpPyIiOg0KIjtzIitzY3JlZW4ud2lkdGgr IioiK3NjcmVlbi5oZWlnaHQrIioiKyhzY3JlZW4uY29sb3JEZXB0aD8NCnNjcmVl bi5jb2xvckRlcHRoOnNjcmVlbi5waXhlbERlcHRoKSkrIjt1Iitlc2NhcGUoZG9j dW1lbnQuVVJMKSsNCiI7IitNYXRoLnJhbmRvbSgpKw0KIicgd2lkdGg9MSBoZWln aHQ9MSBhbHQ9Jyc+IikvLy0tPjwvc2NyaXB0PjwhLS0vTGl2ZUludGVybmV0LS0+ PC9kaXY+CjwhLS0gRU5EOiB0b3BfYmFzZSAtLT4KCjwhLS0gQkVHSU46IHRvcF9q b3VybmFsLS0+CgoKCjx0YWJsZSBpZD0ibWFpbl90YWJsZSIgY2VsbHBhZGRpbmc9 IjAiIGNlbGxzcGFjaW5nPSIwIj4KPHRyPgo8dGQgY29sc3Bhbj0iMyIgaGVpZ2h0 PSIyMnB4Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZCB3aWR0aD0iMyUiPiZu YnNwOzwvdGQ+Cjx0ZCBpZD0iY29udGVudCI+Cgk8IS0tIG1vdmUgRk9PVEVSIC0t PgoJPGRpdiBpZD0iYmFubmVyX3RvcF9jb250YWluZXIiPjwvZGl2PgoKCTx0YWJs ZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4K CTx0cj4KCQk8dGQgY2xhc3M9ImxlZnRfdG9wX3NoaWZ0Ij48aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9 IiI+PC90ZD4KCQk8dGQ+CgkJCQo8c3R5bGU+I3RvcF9tZW51ICNtZW51X2l0ZW1z IHRkLmNfdW5zZWx7cGFkZGluZzowIDNweDt9PC9zdHlsZT4KPHRhYmxlIGlkPSJ0 b3BfbWVudSIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2lu Zz0iMCI+Cjx0cj4KCTx0ZCBpZD0iYmxvZ19tYWlsIj4KCQk8dGFibGUgaWQ9Imxv Z29zIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgoJCTx0cj4KCQkJ PHRkIGlkPSJsb2dvc19sZWZ0Ij48ZGl2IGNsYXNzPSJkb3QiPjxpbWcgc3JjPSJo dHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFs dD0iIj48L2Rpdj48L3RkPgoJCQk8dGQgaWQ9ImxvZ29zX2NlbnRlciI+PGRpdiBj bGFzcz0ibG9nb3NfYmciPjxkaXYgc3R5bGU9IndpZHRoOiAxODBweCI+PGEgaHJl Zj0iLyIgdGl0bGU9IsHr7uPoIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1 L3IvYmxvZ3MvdGhlbWVzL2xvZ29fYmxvZy5naWYiIHdpZHRoPSI2NyIgaGVpZ2h0 PSIyMSIgYWx0PSIiPjwvYT48YSBocmVmPSJodHRwOi8vd3d3Lm1haWwucnUiIHRp dGxlPSJATWFpbC5ydSI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Js b2dzL3RoZW1lcy9sb2dvX21haWwuZ2lmIiB3aWR0aD0iMTA1IiBoZWlnaHQ9IjIx IiBhbHQ9IiI+PC9hPjwvZGl2PjwvZGl2PjwvdGQ+CgkJCTx0ZCBpZD0ibG9nb3Nf cmlnaHQiPjxpbWcgc3JjPSdodHRwOi8vaW1nLm1haWwucnUvMC5naWYnIHdpZHRo PSc3NycgaGVpZ2h0PSczNScgYWx0PScnPjwvdGQ+CgkJPC90cj4KCQk8L3RhYmxl PgoJPC90ZD4KCTx0ZCBpZD0ibGVmdF9iZyI+CgkJPGRpdiBjbGFzcz0ibWVudV9i ZyI+CgkJCTxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRo PSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj4KCQk8L2Rpdj4KCTwvdGQ+Cgk8dGQgd2lk dGg9Ijc3JSI+CgkJPGRpdiBpZD0idG9wX2VsZW1lbnRzIj48aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9 IiI+PC9kaXY+CgkJPHRhYmxlIHdpZHRoPSIxMDAlIiBpZD0ibWVudV9pdGVtcyIg Y2xhc3M9Im1lbnVfYmciIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+ CgkJPHRyPgoJCQk8dGQgY2xhc3M9Im1lbnVfaXRlbXMiPgoJCQkJPHRhYmxlIHdp ZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgoJCQkJ PHRyPgoJCQkJCTx0ZCB3aWR0aD0iMiI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFp bC5ydS8wLmdpZiIgd2lkdGg9IjUiIGhlaWdodD0iMjAiIGFsdD0iIj48L3RkPgoJ CQkJCTx0ZCBpZD0icG1sMSIgY2xhc3M9ImZsX3Vuc2VsIj4mbmJzcDs8L3RkPgoJ CQkJCTx0ZCB3aWR0aD0iMjUlIiBpZD0icG1jMSIgY2xhc3M9ImNfdW5zZWwiPjxh IGhyZWY9Imh0dHA6Ly93aW4ubWFpbC5ydS9jZ2ktYmluL3N0YXJ0IiB0aXRsZT0i z+738uAiPs/u9/LgPC9hPjwvdGQ+CgkJCQkJPHRkIGlkPSJwbXIxIiBjbGFzcz0i cl9ub3NlbCI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lk dGg9IjI0IiBoZWlnaHQ9IjIwIiBhbHQ9IiI+PC90ZD4KCQkJCQk8dGQgd2lkdGg9 IjI1JSIgaWQ9InBtYzIiIGNsYXNzPSJjX3Vuc2VsIj48YSBocmVmPSJodHRwOi8v bXkubWFpbC5ydT9mcm9tX2NvbW1lcmNpYWw9MTciIG5hbWU9ImNsbjM2NDQiIHRp dGxlPSLM7ukgzOjwIj7M7ukmbmJzcDvM6PA8L2E+PC90ZD4KCQkJCQk8dGQgaWQ9 InBtcjIiIGNsYXNzPSJyX25vc2VsIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1LzAuZ2lmIiB3aWR0aD0iMjQiIGhlaWdodD0iMjAiIGFsdD0iIj48L3RkPgoJ CQkJCTx0ZCB3aWR0aD0iMjUlIiBpZD0icG1jMyIgY2xhc3M9ImNfdW5zZWwiPjxh IGhyZWY9Imh0dHA6Ly9maWxlcy5tYWlsLnJ1IiBuYW1lPSJjbG40MTY3IiB0aXRs ZT0i1ODp6/siPtTg6ev7PC9hPjwvdGQ+CgkJCQkJPHRkIGlkPSJwbXIzIiBjbGFz cz0icl9ub3NlbCI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIg d2lkdGg9IjI0IiBoZWlnaHQ9IjIwIiBhbHQ9IiI+PC90ZD4KCQkJCQk8dGQgd2lk dGg9IjIwJSIgaWQ9InBtYzQiIGNsYXNzPSJjX3Vuc2VsIj48YSBocmVmPSJodHRw Oi8vZm90by5tYWlsLnJ1IiBuYW1lPSJjbG4zNjQ1IiB0aXRsZT0i1O7y7iI+1O7y 7jwvYT48L3RkPgoJCQkJCTx0ZCBpZD0icG1yNCIgY2xhc3M9InJfbm9zZWwiPjxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRoPSIyNCIgaGVp Z2h0PSIyMCIgYWx0PSIiPjwvdGQ+CgkJCQkJPHRkIHdpZHRoPSIyMCUiIGlkPSJw bWM1IiBjbGFzcz0iY191bnNlbCI+PGEgaHJlZj0iaHR0cDovL3ZpZGVvLm1haWwu cnUiIG5hbWU9ImNsbjM2NDYiIHRpdGxlPSLC6OTl7iI+wujk5e48L2E+PC90ZD4K CQkJCQk8dGQgaWQ9InBtcjUiIGNsYXNzPSJyX3Vuc2VsIj48aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMjQiIGhlaWdodD0iMjAiIGFs dD0iIj48L3RkPgoJCQkJCTx0ZCB3aWR0aD0iMjAlIiBpZD0icG1jNiIgY2xhc3M9 ImNfc2VsIj48YSBocmVmPSJodHRwOi8vYmxvZ3MubWFpbC5ydSIgbmFtZT0iY2xu MzY0NyIgdGl0bGU9IsHr7uPoIj7B6+7j6DwvYT48L3RkPgoJCQkJCTx0ZCBpZD0i cG1yNiIgY2xhc3M9ImxyX3NlbCI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5y dS8wLmdpZiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIwIiBhbHQ9IiI+PC90ZD4KCQkJ CQkKCQkJCQkKCQkJCQk8dGQ+PGRpdiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmUi PgoJCQkJCTxhIHN0eWxlPSJkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRl O2xlZnQ6LTIzcHg7dG9wOi0xMHB4OyIgaHJlZj0iaHR0cDovL3IubWFpbC5ydS9u NDc2NTczOTkiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2ltZy5t YWlsLnJ1L3IvYm9va21hcmtzL3JhbmV0a2ktYm9va21hcmstdC5naWYiIGFsdD0i 0ODt5fLq6CIgLz48L2E+CgkJCQkJPC9kaXY+PC90ZD4KCQkJCQkKCQkJCTwvdHI+ CgkJCQk8L3RhYmxlPgoJCQk8L3RkPgoJCQk8dGQgd2lkdGg9IjElIj48ZGl2IHN0 eWxlPSJ3aWR0aDogM3B4Ij48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAu Z2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PC9kaXY+PC90ZD4KCQkJ PGZvcm0gYWN0aW9uPS9jZ2ktYmluL2xvZ291dD4KCQkJPHRkIGlkPSJsb2dpbiIg bm93cmFwPu3u4vv1IOHr7uPu4iDoIPHu7uH55fHy4jogMjY3MzE8YnI+7e7i+/Ug 5+Dv6PHl6TogMjI2NjIxMzwvdGQ+CgkJCTx0ZCB3aWR0aD0iMSUiPiZuYnNwOyZu YnNwOzwvdGQ+CgkJCTwvZm9ybT4JCQkKCQkJPHRkPjxkaXYgc3R5bGU9IndpZHRo OjEwcHgiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRo PSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48L2Rpdj48L3RkPgoJCTwvdHI+CgkJPC90 YWJsZT4KCQk8ZGl2IGlkPSJib3R0b21fZWxlbWVudHMiPjxpbWcgc3JjPSdodHRw Oi8vaW1nLm1haWwucnUvMC5naWYnIHdpZHRoPScxJyBoZWlnaHQ9JzEnIGFsdD0n Jz48L2Rpdj4KCTwvdGQ+Cgk8dGQgaWQ9InJpZ2h0X2JnIj48ZGl2IGNsYXNzPSJt ZW51X2JnIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0 aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PC9kaXY+PC90ZD4KPC90cj4KPC90YWJs ZT4KCQkJCgkJCTwhLS0gQkVHSU46IGpvdXJuYWwgbWVudSAtLT4KCgo8c3R5bGU+ CnRhYmxlLnRvcF9uYXYgdGQuZW1wdHkgewogICAgYmFja2dyb3VuZDpub25lOwog ICAgd2lkdGg6MXB4OwogICAgcGFkZGluZzowcHg7Cn0KCnRhYmxlLnRvcF9uYXYg dGQucGFkMiBkaXYgewogICAgLy9wYWRkaW5nLXRvcDo0cHg7Cn0KdGFibGUudG9w X25hdiB0ZC5jdXJyIGRpdiB7CiAgICAvL3BhZGRpbmctdG9wOjRweDsKfQoKdGFi bGUudG9wX25hdiB0ZC5wYWQyIHsKICAgIHBhZGRpbmc6MXB4IDRweDsKICAgIGJv cmRlci10b3A6MXB4IHNvbGlkIG5vbmU7CiAgICBoZWlnaHQ6MjRweDsKICAgIGxp bmUtaGVpZ2h0OjJlbTsKfQp0YWJsZS50b3BfbmF2IHRkLmVtcHR5IGltZ3sKICAg IGJhY2tncm91bmQ6bm9uZTsKfQp0YWJsZS50b3BfbmF2IHRkLmN1cnIgYXsKCn0K dGFibGUudG9wX25hdiB0ZC5jdXJyIHsKICAgICAgICBwYWRkaW5nOjBweCA0cHg7 CiAgICAgICAgbGluZS1oZWlnaHQ6MmVtOwoKfQp0YWJsZS50b3BfbmF2IHRkLm5v X3BhZCB7CiAgICB3aWR0aDoxcHg7CiAgICBwYWRkaW5nOjBweDsKICAgIGJvcmRl ci10b3A6MXB4IHNvbGlkICNCRUQzRkU7Cn0KdGFibGUudG9wX25hdiB0ZC5ub19w YWQgaW1newogICAgYmFja2dyb3VuZDp1cmwoJ2h0dHA6Ly9pbWcubWFpbC5ydS9y L2Jsb2dzL21lbnVfZ3JhZC5naWYnKSBuby1yZXBlYXQgbGVmdCAtMXB4Owp9CgoK LnRlc3QgdGQgewogICAgYm9yZGVyOjFweCBzb2xpZCByZWQ7Cn0KCi5ub2Rpc3Bs YXkgewogICAgZGlzcGxheTpub25lOwp9CgoucG9zYWJzIHsKICAgIHBvc2l0aW9u OmFic29sdXRlOwp9Ci56MTEwewogICAgei1pbmRleDoxMTA7Cn0KPC9zdHlsZT4K CjxzY3JpcHQ+Cgp2YXIgb3JpZ2luYWxPYmogPSAwOwoKCgoKCgpmdW5jdGlvbiBw c2V1ZG9DaGFuZ2UoY3Vycm9iaikgewogICAgZm9yIChpPTE7aTw2O2krKyl7CiAg ICAgICAgZ2ViaSgndG9wTWVudScraSkuY2xhc3NOYW1lID0gJ3BhZDInOwogICAg ICAgIGdlYmkoJ3RvcE1lbnUnK2krJzEnKS5jbGFzc05hbWUgPSAnZW1wdHknOwog ICAgICAgIGdlYmkoJ3RvcE1lbnUnK2krJzInKS5jbGFzc05hbWUgPSAnZW1wdHkn OwogICAgICAgIGdlYmkoJ2RvcE1lbnUnK2kpLnN0eWxlLmRpc3BsYXk9J25vbmUn OwogICAgfQogICAgaWYgKGN1cnJvYmohPTApIHsKICAgICAgICBnZWJpKCd0b3BN ZW51JytjdXJyb2JqKS5jbGFzc05hbWU9J2N1cnInOwogICAgICAgIGdlYmkoJ3Rv cE1lbnUnK2N1cnJvYmorJzEnKS5jbGFzc05hbWU9J25vX3BhZCc7CiAgICAgICAg Z2ViaSgndG9wTWVudScrY3Vycm9iaisnMicpLmNsYXNzTmFtZT0nbm9fcGFkJzsK ICAgICAgICBnZWJpKCdkb3BNZW51JytjdXJyb2JqKS5zdHlsZS5kaXNwbGF5PSdi bG9jayc7CiAgICB9Cn0KPC9zY3JpcHQ+CgoKCgo8dGFibGUgY2VsbHBhZGRpbmc9 MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wIHdpZHRoPSI5MCUiPjx0cj48dGQ+CiAg ICA8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wIHdp ZHRoPSIxMDAlIiBjbGFzcz0idG9wX25hdiIgPgogICAgPGZvcm0gYWN0aW9uPSJo dHRwOi8vYmxvZ3MubWFpbC5ydS9jZ2ktYmluL2pvdXJuYWwvanNlYXJjaCI+CiAg ICA8dHIgdmFsaWduPW1pZGRsZT4KCgoKICAgICAgICA8dGQgaWQ9InRvcE1lbnUx MSIgY2xhc3M9ImVtcHR5IiB3aWR0aD0iMSIgdmFsaWduPSJ0b3AiIGFsaWduPSJs ZWZ0Ij48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0x IGhlaWdodD0yND48L3RkPgogICAgICAgIDx0ZCBpZD0idG9wTWVudTEiIGNsYXNz PSJwYWQyIiBub3dyYXAgYWxpZ249ImNlbnRlciIgd2lkdGg9IjExJSIgb25tb3Vz ZW92ZXI9InBzZXVkb0NoYW5nZSgxKTsiPgogICAgICAgICAgICA8ZGl2IGFsaWdu PSJjZW50ZXIiIGNsYXNzPSJtMCIgc3R5bGU9InZhbGlnbjpjZW50ZXI7IGhlaWdo dDoxMDAlO3dpZHRoOjk2cHg7Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICA8YSBocmVmPSIvY2dpLWJpbi9qb3VybmFsL2pvdXJuYWw/Zm9yY2VfbG9naW49 MSI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2ljb19ob21l LnBuZyIgd2lkdGg9MTYgaGVpZ2h0PTE2IGJvcmRlcj0wIGFsaWduPWFic21pZGRs ZSBjbGFzcz0iSUVwbmciPjwvYT4mbmJzcDsmbmJzcDsKICAgICAgICAgICAgPGEg aHJlZj0iL2NnaS1iaW4vam91cm5hbC9qb3VybmFsP2ZvcmNlX2xvZ2luPTEiPszu 6SDh6+7jPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RkPgogICAg ICAgIDx0ZCBpZD0idG9wTWVudTEyIiBjbGFzcz0iZW1wdHkiIHdpZHRoPSIxIiBh bGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBvbm1vdXNlb3Zlcj0icHNldWRvQ2hh bmdlKDEpOyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lk dGg9MSBoZWlnaHQ9MjQ+PC90ZD4KCgoKCiAgICAgICAgPHRkIGlkPSJ0b3BNZW51 MjEiIGNsYXNzPSJlbXB0eSIgd2lkdGg9IjEidmFsaWduPSJ0b3AiIGFsaWduPSJs ZWZ0IiBvbm1vdXNlb3Zlcj0icHNldWRvQ2hhbmdlKDIpOyI+PGltZyBzcmM9Imh0 dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lkdGg9MSBoZWlnaHQ9MjQ+PC90ZD4K ICAgICAgICA8dGQgaWQ9InRvcE1lbnUyIiBjbGFzcz0icGFkMiIgd2lkdGg9IjEx JSIgbm93cmFwIGFsaWduPSJjZW50ZXIiIG9ubW91c2VvdmVyPSJwc2V1ZG9DaGFu Z2UoMik7Ij4KICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiIGNsYXNzPSJtMCIg c3R5bGU9InZhbGlnbjpjZW50ZXI7IGhlaWdodDoxMDAlO3dpZHRoOjEwMHB4OyI+ CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2NnaS1iaW4v am91cm5hbC9qb3VybmFsP2ZvcmNlX2xvZ2luPTEmcmVxdWVzdD1mcmllbmRzIj48 aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX2ZyaWVuZHMu cG5nIiBjbGFzcz0iSUVwbmciIHdpZHRoPTE2IGhlaWdodD0xNiBib3JkZXI9MCBh bGlnbj1hYnNtaWRkbGU+PC9hPiZuYnNwOyZuYnNwOwogICAgICAgICAgICAKICAg ICAgICAgICAgPGEgaHJlZj0iL2NnaS1iaW4vam91cm5hbC9qb3VybmFsP3JlcXVl c3Q9ZnJpZW5kcyI+zO7oIOTw8+f8/zwvYT4KICAgICAgICA8L2Rpdj4KICAgICAg ICA8L3RkPgogICAgICAgIDx0ZCBpZD0idG9wTWVudTIyIiBjbGFzcz0iZW1wdHki IHdpZHRoPSIxIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBvbm1vdXNlb3Zl cj0icHNldWRvQ2hhbmdlKDIpOyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5y dS8wLmdpZiIgd2lkdGg9MSBoZWlnaHQ9MjQ+PC90ZD4KCgoKCiAgICAgICAgPHRk IGlkPSJ0b3BNZW51MzEiIGNsYXNzPSJlbXB0eSIgd2lkdGg9IjEidmFsaWduPSJ0 b3AiIGFsaWduPSJsZWZ0IiBvbm1vdXNlb3Zlcj0icHNldWRvQ2hhbmdlKDMpOyI+ PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lkdGg9MSBoZWln aHQ9MjQ+PC90ZD4KICAgICAgICA8dGQgaWQ9InRvcE1lbnUzIiBjbGFzcz0icGFk MiIgd2lkdGg9IjExJSIgbm93cmFwIGFsaWduPSJjZW50ZXIiIG9ubW91c2VvdmVy PSJwc2V1ZG9DaGFuZ2UoMyk7Ij4KICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2Vu dGVyIiBjbGFzcz0ibTAiIHN0eWxlPSJ2YWxpZ246Y2VudGVyOyBoZWlnaHQ6MTAw JTt3aWR0aDoxMDFweDsiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxh IGhyZWY9Ii9jYXRhbG9nLyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9y L2Jsb2dzL2ljb19jb21tX2IucG5nIiBjbGFzcz0iSUVwbmciIHdpZHRoPTE2IGhl aWdodD0xNiBib3JkZXI9MCBhbGlnbj1hYnNtaWRkbGU+PC9hPiZuYnNwOyZuYnNw OwogICAgICAgICAgICA8YSBocmVmPSIvY2F0YWxvZy8iPtHu7uH55fHy4uA8L2E+ CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkIGlk PSJ0b3BNZW51MzIiIGNsYXNzPSJlbXB0eSIgd2lkdGg9IjEiIGFsaWduPSJyaWdo dCIgdmFsaWduPSJ0b3AiIG9ubW91c2VvdmVyPSJwc2V1ZG9DaGFuZ2UoMyk7Ij48 aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0xIGhlaWdo dD0yND48L3RkPgoKCgoKICAgICAgICA8dGQgaWQ9InRvcE1lbnU0MSIgY2xhc3M9 ImVtcHR5IiB3aWR0aD0iMSJ2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIG9ubW91 c2VvdmVyPSJwc2V1ZG9DaGFuZ2UoNCk7Ij48aW1nIHNyYz0iaHR0cDovL2ltZy5t YWlsLnJ1LzAuZ2lmIiB3aWR0aD0xIGhlaWdodD0yND48L3RkPgogICAgICAgIDx0 ZCBpZD0idG9wTWVudTQiIGNsYXNzPSJwYWQyIiB3aWR0aD0iMTElIiBub3dyYXAg YWxpZ249ImNlbnRlciIgb25tb3VzZW92ZXI9InBzZXVkb0NoYW5nZSg0KTsiPgog ICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiIGNsYXNzPSJtMCIgc3R5bGU9 InZhbGlnbjpjZW50ZXI7IGhlaWdodDoxMDAlO3dpZHRoOjEwMHB4OyI+CiAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgPGEgaHJlZj0iL3RvcC8iPjxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fcmVhZC5wbmciIGNsYXNz PSJJRXBuZyIgd2lkdGg9MTYgaGVpZ2h0PTE2IGJvcmRlcj0wIGFsaWduPWFic21p ZGRsZT48L2E+Jm5ic3A7Jm5ic3A7CiAgICAgICAgICAgIDxhIGhyZWY9Ii90b3Av Ij7L/uToIO/o+PPyPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3Rk PgogICAgICAgIDx0ZCBpZD0idG9wTWVudTQyIiBjbGFzcz0iZW1wdHkiIHdpZHRo PSIxIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiBvbm1vdXNlb3Zlcj0icHNl dWRvQ2hhbmdlKDQpOyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdp ZiIgd2lkdGg9MSBoZWlnaHQ9MjQ+PC90ZD4KCgoKCgoKICAgICAgICA8dGQgaWQ9 InRvcE1lbnU1MSIgY2xhc3M9ImVtcHR5IiB2YWxpZ249InRvcCIgYWxpZ249Imxl ZnQiIG9ubW91c2VvdmVyPSJwc2V1ZG9DaGFuZ2UoNSk7Ij48aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0xIGhlaWdodD0yND48L3RkPgog ICAgICAgIDx0ZCBpZD0idG9wTWVudTUiIGNsYXNzPSJwYWQyIiB3aWR0aD0iOCUi IG5vd3JhcCBhbGlnbj0iY2VudGVyIiBvbm1vdXNlb3Zlcj0icHNldWRvQ2hhbmdl KDUpOyI+CiAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIiBjbGFzcz0ibTAiIHN0 eWxlPSJ2YWxpZ246Y2VudGVyOyBoZWlnaHQ6MTAwJTt3aWR0aDo3MHB4OyI+CiAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgPGEgaHJlZj0iL3RvcC9kdWVscyI+ PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2ljb19zZW5kX2No YWxsZW5nZS5wbmciIGNsYXNzPSJJRXBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2 IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+PC9hPiZuYnNwOyZuYnNw OwogICAgICAgICAgICA8YSBocmVmPSIvdG9wL2R1ZWxzIiBzdHlsZT0iY29sb3I6 I0YyNkQwMDsiPsTz/evoPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8 L3RkPgogICAgICAgIDx0ZCBpZD0idG9wTWVudTUyIiBjbGFzcz0iZW1wdHkiIHZh bGlnbj10b3AgYWxpZ249InJpZ2h0Ij48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1LzAuZ2lmIiB3aWR0aD0xIGhlaWdodD0yND48L3RkPgoKCgo8dGQgbm93cmFw IHdpZHRoPSIxMiUiIGFsaWduPSJyaWdodCIgY2xhc3M9InBhZDIiPjxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fc2VhcmNoLnBuZyIgY2xh c3M9IklFcG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWxp Z249ImFic21pZGRsZSI+PC90ZD4KPHRkIG5vd3JhcCBjbGFzcz0ibm9fcGFkMiIg d2lkdGg9IjE3JSI+PGlucHV0IHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDoyMjBw eDsiIGNsYXNzPSJ3XzEwMCIgbmFtZT0icSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlu cHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InNfMTAwIiB2YWx1ZT0iIM3g6fLoICI+ PGlucHV0IHR5cGU9ImhpZGRlbiIgSUQ9IlNlbGVjdDEiIE5BTUU9Inp2dHlwZSIg dmFsdWU9IiIgLz48L3RkPgo8dGQgbm93cmFwIGNsYXNzPSJub19wYWQyIiB3aWR0 aD0iNSUiPiZuYnNwOzwvdGQ+CgoKPHRkIG5vd3JhcCB3aWR0aD0iMTAlIiAgYWxp Z249cmlnaHQgY2xhc3M9cGFkMj4mbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJo dHRwOi8vYmxvZ3MubWFpbC5ydS9oZWxwIj7P7uzu+fw8L2E+PC90ZD4KCiAgICA8 L3RyPjwvZm9ybT48L3RhYmxlPgoKCiAgICA8dGFibGUgY2VsbHBhZGRpbmc9MCBj ZWxsc3BhY2luZz0wIGJvcmRlcj0wIHdpZHRoPSI5MCUiIGNsYXNzPSJkb3BfbWVu dSBub2Rpc3BsYXkgcG9zYWJzIHoxMTAiIGlkPSJkb3BNZW51MSIgb25tb3VzZW92 ZXI9InBzZXVkb0NoYW5nZSgxKTsiPgogICAgPHRyIHZhbGlnbj10b3A+CiAgICAg ICAgPHRkIGFsaWduPWNlbnRlciBub3dyYXA+PGEgaHJlZj0iL2NnaS1iaW4vam91 cm5hbC9qdXBkYXRlIj7k7uHg4ujy/CDn4O/o8fw8L2E+PC90ZD4KICAgICAgICA8 dGQgYWxpZ249Y2VudGVyIG5vd3JhcD48YSBocmVmPSIvY2dpLWJpbi9qb3VybmFs LyI+7O7oIOfg7+jx6DwvYT48L3RkPgogICAgICAgIDx0ZCBhbGlnbj1jZW50ZXIg bm93cmFwPjxhIGhyZWY9Ii9jZ2ktYmluL2pvdXJuYWwvanRhZ3MiPuzu6CDs5fLq 6DwvYT4mbmJzcDs8c3BhbiBjbGFzcz0ic20gYm9sZCIgc3R5bGU9ImNvbG9yOiNG RjdGMDA7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTRweDsiPm5ldzwvc3Bhbj48 L3RkPgogICAgICAgIDx0ZCBhbGlnbj1jZW50ZXIgIG5vd3JhcD48YSBocmVmPSIv Y2dpLWJpbi9qb3VybmFsL2pjaGFsbGVuZ2U/YWN0aW9uPW15Ij7s7ugg5PP96+g8 L2E+PC90ZD4KICAgICAgICA8dGQgYWxpZ249Y2VudGVyICBub3dyYXA+PGEgaHJl Zj0iL2NnaS1iaW4vam91cm5hbC9mYXZvcml0ZXMiPujn4fDg7e3u5TwvYT48L3Rk PgogICAgICAgIDx0ZCBhbGlnbj1jZW50ZXIgbm93cmFwPjxhIGhyZWY9Ii9jZ2kt YmluL2pvdXJuYWwvdXNlcmluZm8iPu7h7iDs7eU8L2E+PC90ZD4KICAgICAgICA8 dGQgYWxpZ249Y2VudGVyIG5vd3JhcD48YSBocmVmPSIvY2dpLWJpbi9qb3VybmFs L2plZGl0cHJvcHMiPu3g8fLw7unq6DwvYT48L3RkPgogICAgICAgIDx0ZCBhbGln bj1jZW50ZXIgbm93cmFwPjxhIGhyZWY9Ii9jZ2ktYmluL2pvdXJuYWwvamVkaXRw cm9wcz9wYWdlPTQmdHlwZT0xIj7u9O7w7Ovl7ejlPC9hPjwvdGQ+CiAgICAgICAg PHRkIHdpZHRoPSIxMDAlIj4mbmJzcDs8L3RkPgogICAgPC90cj48L3RhYmxlPgoK ICAgIDx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYm9yZGVyPTAg d2lkdGg9IjkwJSIgY2xhc3M9ImRvcF9tZW51IG5vZGlzcGxheSBwb3NhYnMgejEx MCIgaWQ9ImRvcE1lbnUyIiBvbm1vdXNlb3Zlcj0icHNldWRvQ2hhbmdlKDIpOyI+ CiAgICAgICAgPHRyIHZhbGlnbj10b3A+CiAgICAgICAgPHRkIGFsaWduPWNlbnRl ciBub3dyYXA+PGEgaHJlZj0iL2NnaS1iaW4vam91cm5hbC9mcmllbmRzP2dyb3Vw cz1hbGwiPvfo8uDy/CDi8eX1IOTw8+fl6TwvYT48L3RkPgogICAgICAgIDx0ZCBh bGlnbj0iY2VudGVyIiBub3dyYXA+PGEgaHJlZj0iaHR0cDovL215Lm1haWwucnUv bXkvZnJpZW5kcyI+8OXk4Ory6PDu4uDy/CDk8PPn5ek8L2E+PC90ZD4KICAgICAg ICA8dGQgYWxpZ249ImNlbnRlciIgbm93cmFwPjxhIGhyZWY9Imh0dHA6Ly9teS5t YWlsLnJ1L215L2VkaXRfZ3JvdXBzIj7w5eTg6vLo8O7i4PL8IOPw8+/v+zwvYT48 L3RkPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBub3dyYXA+PGEgaHJlZj0i aHR0cDovL215Lm1haWwucnUvbXkvZnJpZW5kcy1iaXJ0aHNkYXkiPuTt6CDw7ubk 5e3o/zwvYT48L3RkPgogICAgICAgIDx0ZCBhbGlnbj1jZW50ZXIgbm93cmFwPjxh IGhyZWY9Imh0dHA6Ly9teS5tYWlsLnJ1L215L2VkaXRfc3Vic2NyaWJlIj7t4PHy 8O7p6uAg7+7k7+jx6ug8L2E+PC90ZD4KICAgICAgICA8dGQgd2lkdGg9IjEwMCUi PiZuYnNwOzwvdGQ+CiAgICA8L3RyPjwvdGFibGU+CgogICAgPHRhYmxlIGNlbGxw YWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MCB3aWR0aD0iOTAlIiBjbGFz cz0iZG9wX21lbnUgbm9kaXNwbGF5IHBvc2FicyB6MTEwIiBpZD0iZG9wTWVudTMi IG9ubW91c2VvdmVyPSJwc2V1ZG9DaGFuZ2UoMyk7Ij4KICAgIDx0ciB2YWxpZ249 InRvcCI+CiAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIG5vd3JhcD48YSBocmVm PSJodHRwOi8vbXkubWFpbC5ydS9teS9lZGl0Y29tbXVuaXR5Ij7x7ufk4PL8IPHu 7uH55fHy4u48L2E+PC90ZD4KICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgbm93 cmFwPjxhIGhyZWY9Imh0dHA6Ly9teS5tYWlsLnJ1L215L2NvbW11bml0aWVzIj7s 7ugg8e7u4fnl8fLi4DwvYT48L3RkPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVy IiBub3dyYXA+PGEgaHJlZj0iaHR0cDovL215Lm1haWwucnUvY2F0YWxvZy8iPurg 8uDr7uMg8e7u4fnl8fLiPC9hPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSIxMDAl Ij4mbmJzcDs8L3RkPgogICAgPC90cj48L3RhYmxlPgoKICAgIDx0YWJsZSBjZWxs cGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYm9yZGVyPTAgd2lkdGg9IjkwJSIgY2xh c3M9ImRvcF9tZW51IG5vZGlzcGxheSBwb3NhYnMgejExMCIgaWQ9ImRvcE1lbnU0 IiBvbm1vdXNlb3Zlcj0icHNldWRvQ2hhbmdlKDQpOyI+PHRyIHZhbGlnbj10b3A+ CiAgICAgICAgPHRkIGFsaWduPWNlbnRlciAgbm93cmFwPjxhIGhyZWY9Ii90b3Av Y29tbWVudC8iPuru7Ozl7fLo8PPl7PvlPC9hPjwvdGQ+CiAgICAgICAgPHRkIGFs aWduPWNlbnRlciAgbm93cmFwPjxhIGhyZWY9Ii90b3Avd3JpdGUvIj7g6vLo4u37 5TwvYT48L3RkPgogICAgICAgIDx0ZCBhbGlnbj1jZW50ZXIgIG5vd3JhcD48YSBo cmVmPSIvdG9wL3JlYWQvIj7v7u/z6//w7fvlPC9hPjwvdGQ+CiAgICAgICAgPHRk IGFsaWduPWNlbnRlciAgbm93cmFwPjxhIGhyZWY9Ii90b3AvZnJpZW5kLyI+9+jy 4OXs++U8L2E+PC90ZD4KICAgICAgICA8dGQgYWxpZ249Y2VudGVyICBub3dyYXA+ PGEgaHJlZj0iL3RvcC9zdGFycy8iPufi5efk7fvlIOHr7uPoPC9hPjxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fc3Rhci5wbmciIGNsYXNz PSJJRXBuZyIgYWx0PSLH4uXn5O375SDh6+7j6CDt4CBNYWlsLlJ1IiBhbGlnbj0i dGV4dHRvcCIgYm9yZGVyPSIwIiBoZWlnaHQ9IjEwIiB3aWR0aD0iMTAiPjwvdGQ+ CiAgICAgICAgPHRkIGFsaWduPWNlbnRlciAgbm93cmFwPjxhIGhyZWY9Ii90b3Av cG9zdHMvIj7v7u/z6//w7fvlIOfg7+jx6DwvYT48L3RkPgogICAgICAgIDx0ZCBh bGlnbj1jZW50ZXIgIG5vd3JhcD48YSBocmVmPSIvY2dpLWJpbi9qb3VybmFsL2xh c3RfcHVibGljX3Bvc3RzIj7v7vHr5eTt6OUg5+Dv6PHoPC9hPjwvdGQ+CiAgICAg ICAgCiAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIG5vd3JhcD0ibm93cmFwIiA+ PGEgaHJlZj0iL3BvbGxzLyI+7u/w7vH7PC9hPjwvdGQ+CiAgICAgICAgPHRkIHdp ZHRoPSIxMDAlIj4mbmJzcDs8L3RkPgogICAgPC90cj48L3RhYmxlPgoKCgoKICAg IDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0i MCIgd2lkdGg9IjkwJSIgIGNsYXNzPSJkb3BfbWVudSBub2Rpc3BsYXkgcG9zYWJz IHoxMTAiIGlkPSJkb3BNZW51NSIgb25tb3VzZW92ZXI9InBzZXVkb0NoYW5nZSg1 KTsiPjx0ciB2YWxpZ249InRvcCI+CiAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIi IG5vd3JhcD48YSBocmVmPSIvY2dpLWJpbi9qb3VybmFsL2pjaGFsbGVuZ2U/YWN0 aW9uPW15Ij7s7ugg5PP96+g8L2E+PC90ZD4KICAgICAgICA8dGQgYWxpZ249ImNl bnRlciIgIG5vd3JhcD48YSBocmVmPSIvdG9wL2R1ZWxzL3dpbm5lcnMvIj7v7uHl 5Ps8L2E+PC90ZD4KICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgIG5vd3JhcD48 YSBocmVmPSIvdG9wL2R1ZWxzL2xvc2Vycy8iPu/u8ODm5e3o/zwvYT48L3RkPgog ICAgICAgIAogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiAgbm93cmFwPjxhIGhy ZWY9Ii9jZ2ktYmluL2pvdXJuYWwvamNoYWxsZW5nZT9hY3Rpb249bGl2ZWFpciI+ 7/D/7O7pIP306PA8L2E+PC90ZD4KICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIg IG5vd3JhcD48YSBocmVmPSIvZG91YmxlIj7k4vPx8uLu6+rgPC9hPiZuYnNwOzxz cGFuIGNsYXNzPSJzbSBib2xkIiBzdHlsZT0iY29sb3I6I0ZGN0YwMDsgcG9zaXRp b246cmVsYXRpdmU7IHRvcDotNHB4OyI+bmV3PC9zcGFuPjwvdGQ+CiAgICAgICAg PHRkIGFsaWduPSJjZW50ZXIiICBub3dyYXA+PGEgaHJlZj0iL21lZ2F2b3RlIj7i IOTl8f/y6vMhPC9hPiZuYnNwOzxzcGFuIGNsYXNzPSJzbSBib2xkIiBzdHlsZT0i Y29sb3I6I0ZGN0YwMDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotNHB4OyI+bmV3 PC9zcGFuPjwvdGQ+CiAgICAgICAgPHRkIHdpZHRoPSIxMDAlIj4mbmJzcDs8L3Rk PgogICAgPC90cj48L3RhYmxlPgoKICAgIDxkaXYgY2xhc3M9InB4MSIgc3R5bGU9 IndpZHRoOjc2MHB4Ij48L2Rpdj4KCgoKCjwvdGQ+PC90cj48L3RhYmxlPgo8IS0t IEVORDogam91cm5hbCBtZW51IC0tPgoKCQk8L3RkPgoJCTx0ZCBjbGFzcz0icmln aHRfdG9wX3NoaWZ0Ij48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lm IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PC90ZD4KCTwvdHI+Cgk8L3Rh YmxlPgoKCTx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxz cGFjaW5nPSIwIiAgb25tb3VzZW92ZXI9InBzZXVkb0NoYW5nZShvcmlnaW5hbE9i aik7IiBjbGFzcz0iY2VudHJhbF90YWJsZSI+Cgk8dHIgdmFsaWduPSJ0b3AiPgoJ CTx0ZCB3aWR0aD0iMTUiIGNsYXNzPSJsZWZ0X2JvdHRvbV9zaGlmdCI+PGltZyBz cmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0i MSIgYWx0PSIiPjwvdGQ+CgkJPHRkIHdpZHRoPSIyMyUiPgoJCQk8dGFibGUgaWQ9 ImxlZnRfYmxvY2siIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNw YWNpbmc9IjAiPgoJCQk8dHI+CgkJCQk8dGQgaWQ9ImxlZnRfYmxvY2tfdG9wX2Vs ZW1lbnRzIiBjb2xzcGFuPSIzIj4KCQkJCQk8dGFibGUgd2lkdGg9IjEwMCUiIGNl bGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CgkJCQkJPHRyPgoJCQkJCQk8 dGQgY2xhc3M9ImxlZnRfZWxlbWVudCI+PGRpdj48aW1nIHNyYz0iaHR0cDovL2lt Zy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PC9k aXY+PC90ZD4KCQkJCQkJPHRkIGNsYXNzPSJyaWdodF9lbGVtZW50Ij48ZGl2Pjxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRoPSIxIiBoZWln aHQ9IjEiIGFsdD0iIj48L2Rpdj48L3RkPgoJCQkJCTwvdHI+CgkJCQkJPC90YWJs ZT4KCQkJCTwvdGQ+CgkJCTwvdHI+CgkJCTx0ciBpZD0ibGVmdF9ibG9ja19jb250 ZW50Ij4KCQkJCTx0ZCBjbGFzcz0ibGVmdF9lbGVtZW50Ij4KCQkJCQk8aW1nIHNy Yz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiBjbGFzcz0idG9wIiB3aWR0aD0i MSIgaGVpZ2h0PSIxIiBhbHQ9IiI+CgkJCQkJPGltZyBzcmM9Imh0dHA6Ly9pbWcu bWFpbC5ydS8wLmdpZiIgY2xhc3M9ImJvdHRvbSIgd2lkdGg9IjEiIGhlaWdodD0i MSIgYWx0PSIiPgoJCQkJPC90ZD4KCQkJCTx0ZCBjbGFzcz0iY2VudGVyIj4KCQkJ CQk8ZGl2IGNsYXNzPSJjZW50ZXJfcGF0dGVybiI+CgkJCQkJCgkJCQkJPCEtLSBC RUdJTjogdXNlciBtZW51IC0tPgoKCjxkaXYgY2xhc3M9ImJsb2dlcl90b3BfZWxl bWVudCI+PC9kaXY+CjxkaXYgaWQ9ImJsb2dlcl9ncmFkIj48ZGl2IGlkPSJibG9n ZXIiPjxkaXYgY2xhc3M9InJpZ2h0X2JnIj4KPHRhYmxlIGNsYXNzPSJibG9nZXJf Y29udGVudCBJRXBuZyIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxs c3BhY2luZz0iMCIgPgo8dHI+Cgk8dGQgY2xhc3M9ImJvdHRvbV9iZyI+CgkJPHRh YmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MCB3aWR0aD0x MDAlIGNsYXNzPSJsb2dpbl9mb3JtIj4KCQk8dHI+PHRkIGNvbHNwYW49Mz7I7P8g Jm5ic3A7Jm5ic3A7ICgmbmJzcDs8Yj48YSBocmVmPWh0dHA6Ly93aW4ubWFpbC5y dS9jZ2ktYmluL3NpZ251cD9ibG9ncz0xIGNsYXNzPWZybTE+8OXj6PHy8OD26P88 L2E+PC9iPiZuYnNwOyk8L3RkPjwvdHI+CgkJCTxmb3JtIG1ldGhvZD0icG9zdCIg YWN0aW9uPSJodHRwOi8vd2luLm1haWwucnUvY2dpLWJpbi9hdXRoIiBuYW1lPSJB dXRoIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlIiB2YWx1ZT0iL21h aWwvbWFsdm9fNTkvNkEwRkI5OEM1RkQ0RDE1Qy5odG1sIj4KCQkJCgkJPHRyPgoJ CQk8dGQgY29sc3Bhbj0yPjxpbnB1dCB0eXBlPXRleHQgY2xhc3M9d18xMDAgIG5h bWU9IkxvZ2luIiB2YWx1ZT0ieW1ib2V2Ij48L3RkPgoJCQk8dGQ+PHNlbGVjdCBu YW1lPURvbWFpbiBzdHlsZT0id2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjJweDsi PgoJCQk8b3B0aW9uIHZhbHVlPSJtYWlsLnJ1IiAgU0VMRUNURUQ+QG1haWwucnU8 L29wdGlvbj48b3B0aW9uIHZhbHVlPSJpbmJveC5ydSIgPkBpbmJveC5ydTwvb3B0 aW9uPjxvcHRpb24gdmFsdWU9ImJrLnJ1IiA+QGJrLnJ1PC9vcHRpb24+PG9wdGlv biB2YWx1ZT0ibGlzdC5ydSIgPkBsaXN0LnJ1PC9vcHRpb24+PC9zZWxlY3Q+PC90 ZD4KCQk8L3RyPgoJCTx0cj48dGQgY29sc3Bhbj0zPjxpbWcgc3JjPWh0dHA6Ly9p bWcubWFpbC5ydS8wLmdpZiAgaGVpZ2h0PTggPjwvdGQ+PC90cj4KCQk8dHI+PHRk IGNvbHNwYW49Mz7P4PDu6/wgKCA8YSBocmVmPSJodHRwOi8vd3d3Lm1haWwucnUv cGFnZXMvaGVscC85Mi5odG1sIiBjbGFzcz1mcm0xPufg4fvr6D88L2E+KTwvdGQ+ PC90cj4KCQk8dHI+PHRkIGNvbHNwYW49Mz48aW5wdXQgdHlwZT1wYXNzd29yZCBj bGFzcz13XzEwMCBuYW1lPVBhc3N3b3JkPjwvdGQ+PC90cj4KCQk8dHI+PHRkIGNv bHNwYW49Mz48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUvMC5naWYgIGhlaWdo dD04ID48L3RkPjwvdHI+CgkJPHRyPgoJCQk8dGQgd2lkdGg9NiU+IDxpbnB1dCB0 eXBlPWNoZWNrYm94IGlkPWxjaGNrMSBuYW1lPWxldmVsIHZhbHVlPSIxIiA+PC90 ZD4KCQkJPHRkIHdpZHRoPTQ2JT4gPGxhYmVsIGZvcj1sY2hjazEgPtfz5u7pIOru 7O/8/vLl8DwvbGFiZWw+PC90ZD4KCQkJPHRkIHdpZHRoPTQ4JSBhbGlnbj1yaWdo dCA+IDxpbnB1dCB0eXBlPXN1Ym1pdCAgdmFsdWU9IsLu6fLoIiA+PC90ZD4KCQk8 L3RyPgoJCTwvZm9ybT4KCQk8L3RhYmxlPgoJPC90ZD4JCQkJCjwvdHI+CjwvdGFi bGU+CjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJibG9nZXJfYm90dG9t X2VsZW1lbnQiPjwvZGl2Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hdXRoLm1haWwu cnUvaHR0cHMuanM/MjM1ODg4NjEyMCI+PC9zY3JpcHQ+CgoKPGRpdiBjbGFzcz0i YmxvZ2VyX3RvcF9lbGVtZW50Ij48L2Rpdj4KPGRpdiBpZD0iYmxvZ2VyX2dyYWQi PjxkaXYgaWQ9ImJsb2dlciI+PGRpdiBjbGFzcz0icmlnaHRfYmciPgo8dGFibGUg Y2xhc3M9ImJsb2dlcl9jb250ZW50IElFcG5nIiB3aWR0aD0iMTAwJSIgY2VsbHBh ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KPHRyPgoJPHRkIGNsYXNzPSJib3R0 b21fYmciPgoJCQoJCQoJCQoJCTxkaXYgaWQ9InBhc3BvcnRfdG9wX2ltYWdlcyI+ PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgY2xhc3M9ImxlZnRf dG9wX2Nvcm5lciIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPjxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIGNsYXNzPSJyaWdodF90b3BfY29y bmVyIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PC9kaXY+CgkJPGRpdiBp ZD0idXNlcl9zdGF0dXMiPjxkaXYgY2xhc3M9InJpZ2h0X2Nvcm5lciI+PC9kaXY+ CgkJPGEgaHJlZj0iaHR0cDovL3d3dy5tYWlsLnJ1L2FnZW50P21lc3NhZ2UmdG89 bWFsdm9fNTlAbWFpbC5ydSI+PGkgY2xhc3M9InNwci1tcmltLTEzIElFcG5nIiBl bWFpbD0ibWFsdm9fNTlAbWFpbC5ydSI+PC9pPjwvYT48YSBocmVmPSIvbWFpbC9t YWx2b181OS8iIHN0eWxlPSJmbG9hdDpub25lO21hcmdpbi1yaWdodDowcHgiPk1h bHZpbjwvYT48L2Rpdj4KCQk8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5n PSIwIiBjZWxsc3BhY2luZz0iMCI+CgkJPHRyIHZhbGlnbj0idG9wIj4KCQkJPHRk IGlkPSJhdmF0YXIiPgoJCQkJCgkJCQkKCQkJCQk8ZGl2IGlkPSJ1c2VyYXZhdGFy Xy9tYWlsL21hbHZvXzU5LyI+PGEgaHJlZj0iL21haWwvbWFsdm9fNTkvIj48aW1n IHNyYz0iaHR0cDovL2F2dC5mb3RvLm1haWwucnUvbWFpbC9tYWx2b181OS9fYXZh dGFyIiBib3JkZXI9MCBjbGFzcz1hdmF0YXI+PC9hPjwvZGl2PgoJCQkJCTxkaXYg aWQ9ImxhcmdlciI+PGEgb25jbGljaz0ic2hvd19hdmEoJ2h0dHA6Ly9hdnQuZm90 by5tYWlsLnJ1L21haWwvbWFsdm9fNTkvX2F2YXRhcmJpZycsJy9tYWlsL21hbHZv XzU5LycpOyByZXR1cm4gZmFsc2U7IiBocmVmPSJodHRwOi8vbXkubWFpbC5ydS9t YWlsL21hbHZvXzU5L3pvb20uaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPvPi5evo9+jy /DwvYT48L2Rpdj4KCQkJCQoJCQkJCgkJCQkKCQkJCQkJCgkJCQkKCQkJPC90ZD4K CQkJPHRkIGlkPSJibG9nZXJfcGFnZXMiPgoJCQkKCgkJCSAgICAKCQkJCTxhIGhy ZWY9Ii9tYWlsL21hbHZvXzU5LyI+PGltZyBzcmM9aHR0cDovL2ltZy5tYWlsLnJ1 L3IvYmxvZ3MvaWNvX2hvbWUucG5nIHdpZHRoPTE2IGhlaWdodD0xNiBib3JkZXI9 MCBhbGlnbj1hYnNtaWRkbGUgY2xhc3M9IklFcG5nIj48L2E+Jm5ic3A7Jm5ic3A7 PGEgY2xhc3M9Y29yX2NvbCBocmVmPSIvbWFpbC9tYWx2b181OS8iPsHr7uM8L2E+ PGJyPgoJCQkgICAgCgoJCQkgICAgCgkJCQk8bm9icj48YSBocmVmPSIvbWFpbC9t YWx2b181OS9pbmZvIj48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUvci9ibG9n cy9pY29faW5mby5wbmcgd2lkdGg9MTYgaGVpZ2h0PTE2IGJvcmRlcj0wIGFsaWdu PWFic21pZGRsZSBjbGFzcz0iSUVwbmciPjwvYT4mbmJzcDsmbmJzcDs8YSBjbGFz cz1jb3JfY29sIGhyZWY9Ii9tYWlsL21hbHZvXzU5L2luZm8iPsjt9O48L2E+PC9u b2JyPjxicj4KCQkJICAgIAoKCQkJICAgIAoJCQkJCgkJCQk8YSBocmVmPSIvbWFp bC9tYWx2b181OS9mcmllbmRzIj48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUv ci9ibG9ncy9pY29fZnJpZW5kcy5wbmcgd2lkdGg9MTYgaGVpZ2h0PTE2IGJvcmRl cj0wIGFsaWduPWFic21pZGRsZSBjbGFzcz0iSUVwbmciPjwvYT4mbmJzcDsmbmJz cDs8YSBjbGFzcz1jb3JfY29sIGhyZWY9Ii9tYWlsL21hbHZvXzU5L2ZyaWVuZHMi PsTw8+f8/zwvYT48YnI+CgkJCQkKCQkJICAgIAoJCQkKCQkJPG5vYnI+PGEgaHJl Zj0iaHR0cDovL215Lm1haWwucnUvbWFpbC9tYWx2b181OS8/ZnJvbV9jb21tZXJj aWFsPTE4IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFp bC5ydS9yL2Jsb2dzL2ljb19teS5wbmciIGNsYXNzPSJJRXBuZyIgd2lkdGg9MTYg aGVpZ2h0PTE2IGJvcmRlcj0wIGFsaWduPWFic21pZGRsZT48L2E+Jm5ic3A7Jm5i c3A7PGEgaHJlZj0iaHR0cDovL215Lm1haWwucnUvbWFpbC9tYWx2b181OS8/ZnJv bV9jb21tZXJjaWFsPTE4IiBjbGFzcz1jb3JfY29sIHRhcmdldD0iX2JsYW5rIj7M 7ukmbmJzcDvM6PA8L2E+PC9ub2JyPjxicj48bm9icj48YSBocmVmPSJodHRwOi8v Zm90by5tYWlsLnJ1L21haWwvbWFsdm9fNTkvIiB0YXJnZXQ9Il9ibGFuayI+PGlt ZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2ljb19mb3RvLnBuZyIg Y2xhc3M9IklFcG5nIiB3aWR0aD0xNiBoZWlnaHQ9MTYgYm9yZGVyPTAgYWxpZ249 YWJzbWlkZGxlPjwvYT4mbmJzcDsmbmJzcDs8YSBocmVmPSJodHRwOi8vZm90by5t YWlsLnJ1L21haWwvbWFsdm9fNTkvIiBjbGFzcz1jb3JfY29sIHRhcmdldD0iX2Js YW5rIj7U7vLuPC9hPjwvbm9icj48YnI+PG5vYnI+PGEgaHJlZj0iaHR0cDovL3Zp ZGVvLm1haWwucnUvbWFpbC9tYWx2b181OS8iIHRhcmdldD0iX2JsYW5rIj48aW1n IHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX3ZpZGVvLnBuZyIg Y2xhc3M9IklFcG5nIiB3aWR0aD0xNiBoZWlnaHQ9MTYgYm9yZGVyPTAgYWxpZ249 YWJzbWlkZGxlPjwvYT4mbmJzcDsmbmJzcDs8YSBocmVmPSJodHRwOi8vdmlkZW8u bWFpbC5ydS9tYWlsL21hbHZvXzU5LyIgY2xhc3M9Y29yX2NvbCB0YXJnZXQ9Il9i bGFuayI+wujk5e48L2E+PC9ub2JyPjxicj4KCQkJPC90ZD4KCQk8L3RyPgoJCTwv dGFibGU+CQkJCQkJCQkJCQkKCQoJCgkJCgkJCgkJCgkJPHRhYmxlIGlkPSJ1c2Vy X3NlcnZpY2VzIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFj aW5nPSIwIj4KCQk8dHI+CgkJCTx0ZD4KCQkJCTxzY3JpcHQ+CgkJCQl2YXIgcnNz X2hlbHBfdGV4dD0KCQkJCSAgICAiUlNTJm5ic3A7Jm1kYXNoOyD98u4g9O7w7ODy LCDv8OXk7eDn7eD35e3t++kg5Ov/IPLw4O3x6//26Ogg6+Xt8iDt7uLu8fLl6Swg 4O3u7fHu4iDx8uDy5eksICDo5+zl7eXt6Okg4iDh6+7j4PUg6CDyLiDvLiDI7fTu 8Ozg9uj/IOjnIPDg5+vo9+379SDo8fLu9+3o6u7iLCDv8OXk8fLg4uvl7e3g/yDi ICD07vDs4PLlICBSU1MsICDs7ubl8iAg4fvy/CAg8e7h8ODt4CwgIO7h8ODh7vLg 7eAgIOgg7/Dl5PHy4OLr5e3gIO/u6/zn7uLg8uXr/iDiICDz5O7h7e7sIOTr/yDt 5ePuIOLo5OUg8e/l9ujg6/zt++zoIO/w7uPw4Ozs4OzoLeDj8OXj4PLu8ODs6C48 YnI+PGJyPtHz+eXx8uLz5fIgIO/w7uPw4Ozs7e7lICDu4eXx7+X35e3o5SAoUlNT LeDj8OXj4PLu8PssIFJTUy3w6OTl8PspLCDx7uHo8OD++eXlIOggIO7h8ODh4PL7 4uD++eXlICAgIOjt9O7w7OD26P4sICAg7/Dl5O7x8uDi6+Xt7fP+ICAg4iAgIPTu 8Ozg8uUgIFJTUy4gIMjx7+7r/Ofz/yAg8e/l9ujg6/zt++UgIO/w7uPw4Ozs+yAg 6OvoICDu7evg6e0g8eXw4ujx+yDi+yDs7ubl8uUg7+7k7+jx4PL88f8g7eAg7uHt 7uLr5e3o/yAg6/7h7uPuIOHr7uPgLCDx7u7h+eXx8uLgLCDr5e3y+yDx4u7o9SDk 8PPn5ekuPGJyPjxicj7X8u7h+yAg5O7h4OLo8vwgIO3u4vvpIOrg7eDrIOIgUlNT Lerr6OXt8iwg8eru7+jw8+ny5SDx8fvr6vMg7eAgUlNTLe/u8u7qIP3y7uPuICDq 4O3g6+Ag4iDi++Hw4O3t8/4g7/Du4/Dg7OzzIPfy5e3o/yBSU1MuIjsKCQkJCXZh ciBhZGRfY29tbXVuaXR5X3RvX2ZyaWVuZHNfaGVscF90ZXh0PQoJCQkJICAgICLE 7uHg4uv//yDx7u7h+eXx8uLuIOIgxPDz5/z/LCDt7iDt5SDi8fLz7+D/IOIg7eXj 7iwgwvsg7+7r8/fg5fLlIOLu5+zu5u3u8fL8IPfo8uDy/CDiIOvl7fLlIOTw8+fl 6SDu8urw+/L75SDn4O/o8egg/fLu4+4g8e7u4fnl8fLi4C4g1/Lu4fsg9+jy4PL8 IOLx5SDn4O/o8egsIO3z5u3uIOIg7eXj7iDi8fLz7+jy/C48YnI+yPHv7uv85+7i 4O3o5SD98u7j7iDx7+7x7uHgIPfy5e3o/yDx7u7h+eXx8uLgIOzu5uXyIOH78vwg 7+7r5eft7iwg5fHr6CDC+yDt5SD17vLo8uUsIPfy7uH7IO3gIPHy8ODt6PblIOjt 9O7w7OD26Ogg7iDC4PEg4fvr7iDt4O/o8eDt7iwg9/LuIML7ICZuZGFzaDsg8/fg 8fLt6Oog/fLu4+4g8e7u4fnl8fLi4C4iOwoJCQkJdmFyIGRlbGV0ZV9jb21tdW5p dHlfZnJvbV9mcmllbmRzX2hlbHBfdGV4dD0KCQkJCSAgICAi0+Tg6+jiIPHu7uH5 5fHy4u4g6OcgxPDz5+XpLCDC+yDv5fDl8fLg7eXy5SDi6OTl8vwg5ePuIOfg7+jx 6CDiIPHi7uXpIOvl7fLlIOTw8+fl6Swg7e4g7/DoIP3y7uwsIOXx6+ggwvsg/+Lr /+Xy5fH8IOXj7iDz9+Dx8u3o6u7sLCDC+yDx7vXw4O3o8uUg4vHlIO/w6OLo6+Xj 6Ogg8/fg8fLt6OrgIPHu7uH55fHy4uAuIjsKCQkJCTwvc2NyaXB0PgoKCQkJPCEt LWRpdiBjbGFzcz0ibWVudV9ocmxpbmUgbWI1Ij48aW1nIHNyYz1odHRwOi8vaW1n Lm1haWwucnUvMC5naWYgd2lkdGg9MSBoZWlnaHQ9MT48L2Rpdi0tPgoJCQkKCQkJ CQoJCQkJCTxkaXYgaWQ9ImNoYWxsZW5nZV90aHJvd19saW5rbGVmdF8yNjI3NjU2 MiI+PGEgaHJlZj0iaHR0cDovL2Jsb2dzLm1haWwucnUvbWFpbC9tYWx2b181OS9q Y2hhbGxlbmdlP2FjdGlvbj1vZmZlciZiYWNrPWh0dHAmIzAzNzszYSYjMDM3OzJm JiMwMzc7MmZibG9ncy5tYWlsLnJ1JiMwMzc7MmZtYWlsJiMwMzc7MmZtYWx2b181 OSYjMDM3OzJmNkEwRkI5OEM1RkQ0RDE1Qy5odG1sIiBvbmNsaWNrPSJjYWxsX29u X2NoYWxsZW5nZSgnMjYyNzY1NjInLCBldmVudCk7IHJldHVybiBmYWxzZTsiPjxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fc2VuZF9jaGFs bGVuZ2UucG5nIiBjbGFzcz0iSUVwbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIg Ym9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiB2c3BhY2U9IjMiIC8+PC9hPiZu YnNwOyZuYnNwOzxhIGhyZWY9Imh0dHA6Ly9ibG9ncy5tYWlsLnJ1L21haWwvbWFs dm9fNTkvamNoYWxsZW5nZT9hY3Rpb249b2ZmZXImYmFjaz1odHRwJiMwMzc7M2Em IzAzNzsyZiYjMDM3OzJmYmxvZ3MubWFpbC5ydSYjMDM3OzJmbWFpbCYjMDM3OzJm bWFsdm9fNTkmIzAzNzsyZjZBMEZCOThDNUZENEQxNUMuaHRtbCIgb25jbGljaz0i Y2FsbF9vbl9jaGFsbGVuZ2UoJzI2Mjc2NTYyJywgZXZlbnQpOyByZXR1cm4gZmFs c2U7IiBjbGFzcz0iY29yX2NvbCI+wvvn4uDy/CDt4CDk8/3r/DwvYT48L2Rpdj4K CQkJCQk8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lIiBpZD0iY2hhbGxlbmdlX3Ro cm93X3N1Y2Nlc3NsZWZ0XzI2Mjc2NTYyIj48aW1nIHNyYz0iaHR0cDovL2ltZy5t YWlsLnJ1L3IvYmxvZ3MvaWNvX3NlbmRfY2hhbGxlbmdlLnBuZyIgY2xhc3M9IklF cG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWxpZ249ImFi c21pZGRsZSIgdnNwYWNlPSIzIiAvPiZuYnNwOyZuYnNwOzxhIGNsYXNzPSJjb3Jf Y29sIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lIj7C++fu4iDh8O745e0h PC9hPjwvZGl2PgoJCQkJCgkgICAgCgkJCQkKCQkJCTxkaXYgaWQ9Zm9yX2ZyaWVu ZF9ncm91cF9zZWxlY3Rvcj48bm9icj48YSBtYz0xIGlkPSJmcmllbmRfbGluayIg b25jbGljaz0icmVnX2V2dChldmVudCk7cmV0dXJuIHNob3dfZnJpZW5kX2dyb3Vw X3NlbGVjdG9yKCdmb3JfZnJpZW5kX2dyb3VwX3NlbGVjdG9yJywnbWFsdm9fNTlA bWFpbC5ydScpOyIgaHJlZj0iL2NnaS1iaW4vam91cm5hbC9qYWRkZnJpZW5kP3Vz ZXI9bWFsdm9fNTlAbWFpbC5ydSZiYWNrPWh0dHAmIzAzNzszYSYjMDM3OzJmJiMw Mzc7MmZibG9ncy5tYWlsLnJ1JiMwMzc7MmZtYWlsJiMwMzc7MmZtYWx2b181OSYj MDM3OzJmNkEwRkI5OEM1RkQ0RDE1Qy5odG1sIj48aW1nIHNyYz1odHRwOi8vaW1n Lm1haWwucnUvci9ibG9ncy9pY29fYWRkX2ZyaWVuZC5wbmcgd2lkdGg9MTYgaGVp Z2h0PTE2IGJvcmRlcj0wIGFsaWduPWFic21pZGRsZSBjbGFzcz0iSUVwbmciPjwv YT4mbmJzcDsmbmJzcDs8YSBpZD0iZnJpZW5kX2xpbmsxIiBvbmNsaWNrPSJyZWdf ZXZ0KGV2ZW50KTtyZXR1cm4gc2hvd19mcmllbmRfZ3JvdXBfc2VsZWN0b3IoJ2Zv cl9mcmllbmRfZ3JvdXBfc2VsZWN0b3InLCdtYWx2b181OUBtYWlsLnJ1Jyk7IiBo cmVmPSIvY2dpLWJpbi9qb3VybmFsL2phZGRmcmllbmQ/dXNlcj1tYWx2b181OUBt YWlsLnJ1JmJhY2s9aHR0cCYjMDM3OzNhJiMwMzc7MmYmIzAzNzsyZmJsb2dzLm1h aWwucnUmIzAzNzsyZm1haWwmIzAzNzsyZm1hbHZvXzU5JiMwMzc7MmY2QTBGQjk4 QzVGRDREMTVDLmh0bWwiIGNsYXNzPWNvcl9jb2w+xO7h4OLo8vwg4iDE8PPn/P88 L2E+PC9ub2JyPjxicj48L2Rpdj4KCQkJCQoJCQkgICAgCgkJCQkJCQoJCQkKICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgIDxkaXY+PGEgaWQ9ImxlbnRhX2xpbmsiIG9uY2xpY2s9InJldHVybiBq b3VybmFsX3JlYWQoMSkiIGhyZWY9IiMiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1h aWwucnUvbWFpbC9ydS9pbWFnZXMvYmxvZ3MvaV9mYXZvcml0ZS5naWYiIGNsYXNz PSJJRXBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhbGlnbj0iYWJzbWlkZGxl IiAvPjwvYT48YSBpZD0ibGVudGFfbGluazIiIG9uY2xpY2s9InJldHVybiBqb3Vy bmFsX3JlYWQoMSkiIGhyZWY9IiMiPtfo8uDy/CDiIOvl7fLlPC9hPjwvZGl2Pgog ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCgkJCSAgICAKCQkJ CTxub2JyPjxhIGlkPSJzdWJzY3JfbGluayIgb25jbGljaz0icmV0dXJuIGpvdXJu YWxfc3Vic2NyaWJlKDApIiBocmVmPSIvY2dpLWJpbi9qb3VybmFsL2pjb21tZW50 c3N1YnNjcmliZT91c2VyPW1hbHZvXzU5QG1haWwucnUmcG9zdHM9MSZiYWNrPWh0 dHAmIzAzNzszYSYjMDM3OzJmJiMwMzc7MmZibG9ncy5tYWlsLnJ1JiMwMzc7MmZt YWlsJiMwMzc7MmZtYWx2b181OSYjMDM3OzJmNkEwRkI5OEM1RkQ0RDE1Qy5odG1s Ij48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fc3Vic2Ny aWJlLnBuZyBjbGFzcz0iSUVwbmciIHdpZHRoPTE2IGhlaWdodD0xNiBib3JkZXI9 MCBhbGlnbj1hYnNtaWRkbGU+PC9hPiZuYnNwOyZuYnNwOzxhIGlkPSJzdWJzY3Jf bGluazIiIG9uY2xpY2s9InJldHVybiBqb3VybmFsX3N1YnNjcmliZSgwKSIgY2xh c3M9Y29yX2NvbCBocmVmPSIvY2dpLWJpbi9qb3VybmFsL2pjb21tZW50c3N1YnNj cmliZT91c2VyPW1hbHZvXzU5QG1haWwucnUmcG9zdHM9MSZiYWNrPWh0dHAmIzAz NzszYSYjMDM3OzJmJiMwMzc7MmZibG9ncy5tYWlsLnJ1JiMwMzc7MmZtYWlsJiMw Mzc7MmZtYWx2b181OSYjMDM3OzJmNkEwRkI5OEM1RkQ0RDE1Qy5odG1sIj7P7uTv 6PHg8vzx/yDt4CDu4e3u4uvl7ej/PC9hPjwvbm9icj48YnI+CgkJCSAgICAKCQkJ CgkJCQoJCQkgICAgPGRpdj48bm9icj48YSBocmVmPSIvY2dpLWJpbi9qb3VybmFs L2Jsb2dzX2xlYWRlciIgb25jbGljaz0ic2hvd19zbXNfbGVhZGVyc2hpcF9ydWxl cygpOyByZXR1cm4gZmFsc2U7Ij48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1 L3IvYmxvZ3MvaWNvX3Ntc19sZWFkZXIucG5nIiBjbGFzcz0iSUVwbmciIHdpZHRo PTE2IGhlaWdodD0xNiBhbGlnbj1hYnNtaWRkbGUgYm9yZGVyPTA+PC9hPiZuYnNw OyZuYnNwOzxhIG9uY2xpY2s9InNob3dfc21zX2xlYWRlcnNoaXBfcnVsZXMoKTsg cmV0dXJuIGZhbHNlOyIgaHJlZj0iL2NnaS1iaW4vam91cm5hbC9ibG9nc19sZWFk ZXIiIGNsYXNzPSJ0MTEwIGNvcl9jb2wiPjxiPtHy4OLq4CDn4CDL6OTl8OA8L2I+ PC9hPjwvbm9icj48L2Rpdj4KCQkJICAgIDxkaXYgaWQ9InNtc19sZWFkZXJzaGlw X3J1bGVzIiBjbGFzcz0ic21zX2xlYWRlcnNoaXBfcnVsZXMiIHN0eWxlPSJkaXNw bGF5Om5vbmUiPtfy7uH7IPHk5evg8vwg/fLu8iDh6+7jIMvo5OXw7uwsIDxicj7u 8u/w4OL88uUg8SDs7uHo6/zt7uPuIPLl6+X07u3gIDxicj5zbXMgPGI+NDMrMjYy NzY1NjI8L2I+IO3gIO3u7OXwIDxiPjQ0NDY8L2I+PGJyPjxhIGhyZWY9Ii9jZ2kt YmluL2pvdXJuYWwvYmxvZ3NfbGVhZGVyIiBjbGFzcz1jb3JfY29sPjxiPs/w4OLo 6+Ag6OPw+zwvYj48L2E+PC9kaXY+CgkJCQoJCQkKCQkJPC90ZD4KCQk8L3RyPgoJ CTwvdGFibGU+CgoJCgkJPGRpdiBpZD0icGFzcG9ydF9ib3R0b21faW1hZ2VzIj4K CQkJPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgY2xhc3M9Imxl ZnRfYm90dG9tX2Nvcm5lciIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPgoJ CQk8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiBjbGFzcz0icmln aHRfYm90dG9tX2Nvcm5lciIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPgoJ CTwvZGl2PgoJCQoJPC90ZD4JCQkJCjwvdHI+CjwvdGFibGU+CjwvZGl2PjwvZGl2 PjwvZGl2Pgo8ZGl2IGNsYXNzPSJibG9nZXJfYm90dG9tX2VsZW1lbnQiPjwvZGl2 PgoKPGRpdiBjbGFzcz0ibXQxMCBtYjEwIj4KCQoKCgoKCjwvZGl2PgoKCgoKCgoK CjwhLS0gRU5EOiB1c2VyIG1lbnUgLS0+CgoJCQkJCQoJCQkJCTwhLS0gbW92ZSBG T09URVIgLS0+CgkJCQkJPGRpdiBpZD0iYmFubmVyX2xlZnRfY29udGFpbmVyIj48 L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKCQkJCQkJPCEtLSBiZWdpbjpzbXMt dG9wIGJsb2NrIC0tPgo8IS0tIGJlZ2luOnNtcy10b3AgYmxvY2sgLS0+Cgo8ZGl2 IGNsYXNzPSJsaWRlcl90b3AiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUv MC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48L2Rpdj4KPGRpdiBj bGFzcz0ibGlkZXJfb3V0Ij4KCTxkaXYgaWQ9ImxpZGVyX2Jsb2ciPgoJCTxkaXYg Y2xhc3M9ImxpZGVyX2luIj4KCQkJPGEgaHJlZj0iL2NnaS1iaW4vam91cm5hbC9i bG9nc19sZWFkZXIiIGNsYXNzPSJ0aXRsZSIgdGl0bGU9Isvo5OXwIOHr7uPu4iIg c3R5bGU9ImZsb2F0OmxlZnQ7Ij7L6OTl8CDh6+7j7uI8L2E+CgkJCTxkaXYgY2xh c3M9InNtIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7dGV4dC1hbGlnbjpyaWdodDttYXJn aW4tcmlnaHQ6MTBweDsiPgoJCQkJPGEgaHJlZj0iL2NnaS1iaW4vam91cm5hbC9i bG9nc19sZWFkZXIiIHN0eWxlPSJjb2xvcjojRDMwMDAwIj48Yj7H4O3/8vwg/fLu IOzl8fLuITwvYj48L2E+PGJyPgoJCQkJ0fLg4u7qOiA8c3Bhbj4xPC9zcGFuPgoJ CQk8L2Rpdj48YnIgY2xlYXI9ImFsbCI+CgkJCTxkaXYgaWQ9ImxpZGVyX2Jsb2dl cnMiPgoJCQkJCgkJCQk8dGFibGUgY2xhc3M9InN0YXR1cyIgY2VsbHBhZGRpbmc9 IjAiIGNlbGxzcGFjaW5nPSIwIj4KCQkJCTx0ciB2YWxpZ249InRvcCI+CgkJCQkJ PHRkPjEuPC90ZD4KCQkJCQk8dGg+CgkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cu bWFpbC5ydS9hZ2VudD9tZXNzYWdlJnRvPXYubGluam92QG1haWwucnUiIHRpdGxl PSLZ5evq7egsIPfy7uH7IO/u7uH54PL88f8g8SD98ujsIPfl6+7i5eru7CDiIE1h aWwuUnUgwOPl7fLlIj48aSBjbGFzcz0ic3ByLW1yaW0tMTMiIGVtYWlsPSJ2Lmxp bmpvdkBtYWlsLnJ1Ij48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ii9tYWlsL3YubGlu am92LyIgc3R5bGU9ImNvbG9yOiNGMjZEMDAiPsL/9+Xx6+DiPHdiciAvPiDL6O24 4jwvYT4KCQkJCQk8L3RoPgoJCQkJCTx0ZD4KCQkJCQkJPGltZyBzcmM9Imh0dHA6 Ly9pbWcubWFpbC5ydS9tYWlsL3J1L2ltYWdlcy9hZ2VudC9pY29fbS5naWYiIHdp ZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdGl0bGU9Iu/g8OXt/CIgYWxpZ249ImFic21p ZGRsZSIgYWx0PSIiPgoJCQkJCTwvdGQ+CgkJCQk8L3RyPgoJCQkJPC90YWJsZT4K CQkJCQoJCQkJPGEgaHJlZj0iL21haWwvdi5saW5qb3YvIj48aW1nIHNyYz0iaHR0 cDovL2F2dC5mb3RvLm1haWwucnUvbWFpbC92Lmxpbmpvdi9fYXZhdGFyIiBib3Jk ZXI9IjAiIGFsdD0iIj48L2E+CgkJCQkKCQkJCTxiciBjbGVhcj0iYWxsIj4JCQkK CgkJCQk8dGFibGUgY2xhc3M9InN0YXR1cyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxz cGFjaW5nPSIwIj4KCQkJCTx0ciB2YWxpZ249InRvcCI+CgkJCQkJPHRkPjIuPC90 ZD4KCQkJCQk8dGg+CgkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cubWFpbC5ydS9h Z2VudD9tZXNzYWdlJnRvPXYubGluam92QG1haWwucnUiIHRpdGxlPSLZ5evq7egs IPfy7uH7IO/u7uH54PL88f8g8SD98ujsIPfl6+7i5eru7CDiIE1haWwuUnUgwOPl 7fLlIj48aSBjbGFzcz0ic3ByLW1yaW0tMTMiIGVtYWlsPSJkaW5hc25uQGluYm94 LnJ1Ij48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ii9pbmJveC9kaW5hc25uLyI+RElO QTwvYT4KCQkJCQk8L3RoPgoJCQkJCTx0ZD4KCQkJCQkJPGltZyBzcmM9Imh0dHA6 Ly9pbWcubWFpbC5ydS9tYWlsL3J1L2ltYWdlcy9hZ2VudC9pY29fZi5naWYiIHdp ZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdGl0bGU9IuTl4vP46uAiIGFsaWduPSJhYnNt aWRkbGUiIGFsdD0iIj4KCQkJCQk8L3RkPgoJCQkJPC90cj4KCQkJCTwvdGFibGU+ CgoJCQkJPHRhYmxlIGNsYXNzPSJzdGF0dXMiIGNlbGxwYWRkaW5nPSIwIiBjZWxs c3BhY2luZz0iMCI+CgkJCQk8dHIgdmFsaWduPSJ0b3AiPgoJCQkJCTx0ZD4zLjwv dGQ+CgkJCQkJPHRoPgoJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3Lm1haWwucnUv YWdlbnQ/bWVzc2FnZSZ0bz12LmxpbmpvdkBtYWlsLnJ1IiB0aXRsZT0i2eXr6u3o LCD38u7h+yDv7u7h+eDy/PH/IPEg/fLo7CD35evu4uXq7uwg4iBNYWlsLlJ1IMDj 5e3y5SI+PGkgY2xhc3M9InNwci1tcmltLTEzIiBlbWFpbD0icm94aS44OEBtYWls LnJ1Ij48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ii9tYWlsL3JveGkuODgvIj5Sb3hp PC9hPgoJCQkJCTwvdGg+CgkJCQkJPHRkPgoJCQkJCQk8aW1nIHNyYz0iaHR0cDov L2ltZy5tYWlsLnJ1L21haWwvcnUvaW1hZ2VzL2FnZW50L2ljb19mLmdpZiIgd2lk dGg9IjE2IiBoZWlnaHQ9IjE2IiB0aXRsZT0i5OXi8/jq4CIgYWxpZ249ImFic21p ZGRsZSIgYWx0PSIiPgoJCQkJCTwvdGQ+CgkJCQk8L3RyPgoJCQkJPC90YWJsZT4K CgkJCTwvZGl2PgoJCTwvZGl2PgoJCQoJCTxkaXYgaWQ9InNtc190b3BfYmFubmVy Ij48L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ibGlkZXJfYm90dG9t Ij48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIg aGVpZ2h0PSIxIiBhbHQ9IiI+PC9kaXY+Cgo8IS0tIGVuZDpzbXMtdG9wIGJsb2Nr IC0tPgoKCQkJCQkKCQkJCQkKICAgICAgICAgICAgICAgICAgICAKCQkJCQkKCQkJ CQkKPCEtLSBCRUdJTjogY2FsZW5kYXIgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9q YXZhc2NyaXB0Ij4KdmFyIGNhbGVuZGFyX3Nob3duX3llYXIgPSBwYXJzZUludCgi Iik7CnZhciBjYWxlbmRhcl9zaG93bl9tb250aCA9IHBhcnNlSW50KCIiKTsKdmFy IGNhbGVuZGFyX3Nob3duX2RheSA9IHBhcnNlSW50KCIiKTsKdmFyIGNhbGVuZGFy X3Bvc3RzX2NvdW50cyA9IFtdOwp2YXIgY2FsZW5kYXJfeWVhciA9IHBhcnNlSW50 KCIiKTsKdmFyIGNhbGVuZGFyX21vbnRoID0gcGFyc2VJbnQoIiIpOwoKdmFyIGNh bGVuZGFyX21vbnRocyA9IFsi3+3i4PD8IiwgItTl4vDg6/wiLCAizODw8iIsICLA 7/Dl6/wiLCAizODpIiwgIsj+7fwiLCAiyP7r/CIsICLA4uPz8fIiLCAi0eXt8v/h 8PwiLCAizury/+Hw/CIsICLN7v/h8PwiLCAixOXq4OHw/CJdOwp2YXIgY2FsZW5k YXJfcG9zdF9mb3Jtc19kYXRhID0gWyLn4O/o8fwiLCAi5+Dv6PHoIiwgIufg7+jx 5ekiXTsKCmRvY3VtZW50LndyaXRlKAonPGRpdiBjbGFzcz0ibGluZWRfdG9wIj48 aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIgaGVp Z2h0PSIxIiBhbHQ9IiI+PC9kaXY+JysKJzxkaXYgY2xhc3M9ImxpbmVkX2Jsb2Nr Ij4nKwonCTxkaXYgY2xhc3M9ImxpbmVkX2Jsb2NrX2luIj4nKwonCQk8ZGl2IGlk PSJjYWxlbmRhciI+JwopOwoKZG9jdW1lbnQud3JpdGUoIjxwPiIgKyBsb2FkX2Nh bGVuZGFyX3N0YXRlKCkgKyAiPGEgb25jbGljaz0nc2hvd19oaWRlX2NhbGVuZGFy KCk7IHJldHVybiBmYWxzZTsnIGhyZWY9JyMnIGNsYXNzPSd0aXRsZSc+yuDr5e3k 4PD8PC9hPjwvcD4iKTsKZG9jdW1lbnQud3JpdGUoIjxkaXYgaWQ9XCJjYWxlbmRh cl9kaXZfaGlkZGVuXCIgY2xhc3M9XCJoaWRkZW5fZGl2XCI+PGRpdj48L2Rpdj48 L2Rpdj48ZGl2IGlkPVwiY2FsZW5kYXJfZGl2XCI+Iik7CmRvY3VtZW50LndyaXRl KCI8ZGl2IHN0eWxlPSdkaXNwbGF5OiIgKyAoZ2V0X2Nvb2tpZSgiY2FsZW5kYXJf c3RhdGUiKSA9PSAiaGlkZSIgPyAibm9uZSIgOiAiIikgKyAiJyBpZD1cImNhbGVu ZGFyX2Rpdl9pbm5lcmRpdlwiPiIKCSsgKGdldF9jb29raWUoImNhbGVuZGFyX3N0 YXRlIikgIT0gImhpZGUiID8gZHJhd19jYWxlbmRhcigpIDogIiIpICsgIjwvZGl2 PjwvZGl2PiIpOwpkb2N1bWVudC53cml0ZSgKJwkJPC9kaXY+JysKJwk8L2Rpdj4n KwonPC9kaXY+JysKJzxkaXYgY2xhc3M9ImxpbmVkX2JvdHRvbSI+PGltZyBzcmM9 Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSIg YWx0PSIiPjwvZGl2PicKKTsKPC9zY3JpcHQ+CjwhLS0gRU5EOiBjYWxlbmRhciAt LT4KCgoKCQkJCQkKCQkJCQkJPGRpdiBjbGFzcz0ibGluZWRfdG9wIj48aW1nIHNy Yz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIx IiBhbHQ9IiI+PC9kaXY+CjxkaXYgY2xhc3M9ImxpbmVkX2Jsb2NrIj4KCTxkaXYg Y2xhc3M9ImxpbmVkX2Jsb2NrX2luIj4KCTxmb3JtIGFjdGlvbj0iaHR0cDovL2Js b2dzLm1haWwucnUvY2dpLWJpbi9qb3VybmFsL2pzZWFyY2giPgoJCTxkaXYgaWQ9 InNlYXJjaF9pbl9ibG9nIj4KCQkJPHA+z+7o8eog7+4g4evu4/M8L3A+CgkJCTxp bnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJxIj4KCQkJPGlucHV0IHR5cGU9InN1Ym1p dCIgdmFsdWU9Is3g6fLoIj4KCQk8L2Rpdj4KCQk8aW5wdXQgdHlwZT0iaGlkZGVu IiBuYW1lPSJ6dnR5cGUiIHZhbHVlPSIiPgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4i IG5hbWU9Inp2aXRlbV9qb3VybmFsX2lkIiB2YWx1ZT0iMjYyNzY1NjIiPgoJPC9m b3JtPgoJPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJsaW5lZF9ib3R0b20iPjxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRoPSIxIiBoZWln aHQ9IjEiIGFsdD0iIj48L2Rpdj4KCQkJCQkKCgkJCQkJCgkJCQkJCgkJCQkJCQkJ CQkKCQkJCQk8aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUvMC5naWYgd2lkdGg9 MjQwIGhlaWdodD0xPjxicj4KCQkJCQk8L2Rpdj4JCQoJCQkJPC90ZD4KCQkJCTx0 ZCBjbGFzcz0icmlnaHRfZWxlbWVudCI+CgkJCQkJPGltZyBzcmM9Imh0dHA6Ly9p bWcubWFpbC5ydS8wLmdpZiIgY2xhc3M9InRvcCIgd2lkdGg9IjEiIGhlaWdodD0i MSIgYWx0PSIiPgoJCQkJCTxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5n aWYiIGNsYXNzPSJib3R0b20iIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj4K CQkJCTwvdGQ+CgkJCTwvdHI+CgkJCTx0cj4KCQkJCTx0ZCBpZD0ibGVmdF9ibG9j a19ib3R0b21fZWxlbWVudHMiIGNvbHNwYW49IjMiPgoJCQkJCTx0YWJsZSB3aWR0 aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KCQkJCQk8 dHI+CgkJCQkJCTx0ZCBjbGFzcz0ibGVmdF9lbGVtZW50Ij48aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9 IiI+PC90ZD4KCQkJCQkJPHRkIGNsYXNzPSJyaWdodF9lbGVtZW50Ij48aW1nIHNy Yz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIx IiBhbHQ9IiI+PC90ZD4KCQkJCQk8L3RyPgoJCQkJCTwvdGFibGU+CgkJCQk8L3Rk PgoJCQk8L3RyPgoJCQk8L3RhYmxlPgoJCTwvdGQ+CgkJPHRkIHdpZHRoPSIxJSIg aWQ9ImNlbnRlcl9zcGFjZSI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8w LmdpZiIgd2lkdGg9IjUiIGhlaWdodD0iMSIgYWx0PSIiPjwvdGQ+CgkJPHRkIHZh bGlnbj0idG9wIj48ZGl2IGlkPSJyaWdodF9ibG9jayI+CgkJCQoJCQkKPCEtLSBF TkQ6IHRvcF9qb3VybmFsIC0tPgoKPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLyog SUUgZm9yIGlucHV0IGFuZCB0ZXh0YXJlYSB2aXNpYmlsaXR5ICovCiNjb250X2Rp dl9jaGVjayBpbnB1dCwgI2NvbnRfZGl2X2NoZWNrIHRleHRhcmVhIHsKCS8vcG9z aXRpb246cmVsYXRpdmU7Cn0KLyogc2Nyb2xsIGluIHBvc3QgYW5kIGNvbW1lbnRz ICovCi5jb250LCAuY29tbWVudF90aXRsZV9jb2xvciB7CgkvL3dpZHRoOjEwMCU7 Cn0KLnBvc3RfdGV4dCB7CgltaW4taGVpZ2h0OjE3cHg7IC8qIGJ1ZyBmaXggZm9y IEZGKDE3cHggLSBoZWlnaHQgaG9yaXpvbnRhbCBzY3JvbGwpICovCglvdmVyZmxv dzogYXV0bzsKCW92ZXJmbG93LXg6YXV0bzsKCW92ZXJmbG93LXk6IGhpZGRlbjsK CS8vd2lkdGg6MTAwJTsgICAgICAgIAoJLy9wb3NpdGlvbjpyZWxhdGl2ZTsKCS8v ZmxvYXQ6bGVmdDsKfQppbWcucG9zdF9pbWcgewoJLy9wb3NpdGlvbjpzdGF0aWM7 Cn0KPC9zdHlsZT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLyDv 5fDl7OXt7eD/IOTr/yDv7u/g7+7iCnZhciBVc2VQb3B1cCA9IHRydWU7Cgp2YXIg UGVybFZhcl9MYXN0VGFncyA9ICcnOwpmdW5jdGlvbiBwb3N0X3Njcm9sbChpZCkg ewoJaWYoaXNJRSkgewoJCWRpdiA9IGdlYmkoJ3Bvc3RfdGV4dF8nK2lkKTsKCQkK CQl3ID0gZGl2Lm9mZnNldFdpZHRoOy8vIPjo8Ojt4CDk6OLgCgkJcyA9IGRpdi5z Y3JvbGxXaWR0aDsvLyD46PDo7eAg8e4g8erw7uvu7AkKCQkKCQlpZighdykgewoJ CQlzZXRUaW1lb3V0KCJwb3N0X3Njcm9sbCgnIitpZCsiJykiLDEwMDApOyAvLyDl 8evoIO3lIPPx7+XrIOfg4/Dz5+jy/PH/IO/u8fIKCQkJcmV0dXJuIGZhbHNlOwoJ CX0JCQkKCQkKCQkvLyBvbmx5IElFIOTu4eDi6//l7CDu8vHy8+8g8e3o5/Mg5fHr 6CDl8fL8IPHq8O7r6woJCWlmKHcgIT0gcykgCgkJCWRpdi5zdHlsZS5wYWRkaW5n Qm90dG9tID0gIjE3cHgiOwoJCWVsc2UgCgkJCWRpdi5zdHlsZS5wYWRkaW5nQm90 dG9tID0gIjBweCI7Cgl9Cn0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgoJdmFyIEFjdGl2 ZUVtYWlsID0gJyc7Cjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cDovL2ltZzMu aW1nc21haWwucnUvbWFpbC9ydS9pbWFnZXMvanMvYmxvZ3Mvbm90LXNwYW0uanMi Pjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnZhciBy YWl0aW5nX2hlbHBfdGV4dCA9ICLQ5eny6O3jIOfg7+jx6CDv7ufi7uv/5fIg5PDz 4+jsIO/u6/zn7uLg8uXr/+wg7vbl7eji4PL8IOLg+Ogg5+Dv6PHoIO/uIPLw5fXh 4Ovr/O3u6SD46uDr5To8YnI+7vIgKzEg5O4gKzMuPGJyPjxicj7F8evoIOL7IO3l IPXu8ujy5Swg9/LuIOH7IOLg+Ogg5+Dv6PHoIPP34PHy4u7i4OvoIOIg4+7r7vHu 4uDt6Ogg6OvoIPfy7uH7IOTw8+Po5SDv7uv85+7i4PLl6+gg7O7j6+gg4ujk5fL8 IOL78fLg4uvl7e375SDh4Ovr+yDn4CDi4PjzIOfg7+jx/Cwg4vsg7O7m5fLlIOjn 7OXt6PL8IP3y6CDt4PHy8O7p6ugg4iA8YSBocmVmPWh0dHA6Ly9ibG9ncy5tYWls LnJ1L2NnaS1iaW4vam91cm5hbC9qZWRpdHByb3BzIHRhcmdldD1fYmxhbms+7eDx 8vDu6erg9TwvYT4g8eLu5ePuIOHr7uPgLiI7Cjwvc2NyaXB0Pgo8IS0tIEJFR0lO OiBlbnRyeSAtLT4KCgo8ZGl2IGFsaWduPSJyaWdodCI+PGEgaWQ9InByZXZfcG9z dCIgaHJlZj0iamF2YXNjcmlwdDpjaGVja19nbyhmYWxzZSwnNkEwRkI5OEM1RkQ0 RDE1QycpIj4mbGFxdW87IM/w5eT75PP54P8g5+Dv6PH8PC9hPiZuYnNwOyZuYnNw OyZtaWRkb3Q7Jm5ic3A7Jm5ic3A7PGEgaWQ9Im5leHRfcG9zdCIgaHJlZj0iamF2 YXNjcmlwdDpjaGVja19nbyh0cnVlLCc2QTBGQjk4QzVGRDREMTVDJykiPtHr5eTz /vng/yDn4O/o8fwmbmJzcDsmcmFxdW87PC9hPjwvZGl2Pgo8YnI+CjxkaXYgY2xh c3M9Im1lc3NhZ2UiPgo8ZGl2IGNsYXNzPSJtZXNzYWdlX291dGVyIj4KPGRpdiBj bGFzcz0ibWVzc2FnZV9pbm5lciI+Cgk8ZGl2IGlkPXphcGlzX2Rpdj4KCTxkaXYg Y2xhc3M9ImRhdGUiPgoJCTxkaXYgY2xhc3M9ImNsaXBzIj48ZGl2PjxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEi IGFsdD0iIj48L2Rpdj48L2Rpdj4KCQk8cD4KCQkKCiAgICAgICAgCiAgICAgICAg ICAgIAogICAgICAgIAogICAgICAgIAoKCQkxNy0wMS0yMDA3IDAwOjMyICg8YSBo cmVmPSIvbWFpbC9tYWx2b181OS82QTBGQjk4QzVGRDREMTVDLmh0bWwiPvHx++vq 4DwvYT4pCgoJCQoJCTxzcGFuPgoJCQoJCTwvc3Bhbj4KCgkJPC9wPgoJPC9kaXY+ Cgk8L2Rpdj4JCgo8ZGl2IGNsYXNzPSJ0ZXh0IGplbnRyeV90ZXh0Ij48ZGl2IGNs YXNzPSJ0ZXh0X3BhdHRlcm4iPgoJCgkKCTxoMSBjbGFzcz0idGVtcyI+weDq7vLg PC9oMT4KICAgIAoJCgkKCQoJPGRpdiBjbGFzcz0icG9zdF90ZXh0IiBpZD0icG9z dF90ZXh0XzZBMEZCOThDNUZENEQxNUMiPgogICAgIAogICAgICAgICAgICAgICAg ICAgIDxwPgogICAgICAgIAoJCQrd8ugg5+Ll5+T7IC0g6PHq8Psg6u7x8vDgICw8 YnIgLz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDC 5+vl8uXi+OjlIOIg8ejt5eUg7eXh7iAsPGJyIC8+wCDj7vD7IJYg9fDg7Psg7O7t 4PHy+/D/LDxiciAvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgw+TlIObo4vPyIOH76/wg6CDt5eH76/wghTxiciAvPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAg ICAgKiAgICAgKiA8YnIgLz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGJyIC8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICDY8+wg7/Do4e7/IJYg+OXv7vIg7O7t4PXu4iw8YnIgLz4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIMHl5yDz8fLg6+7x 8uggLCDj8PPx8ugg6CDx8vDg9eAsPGJyIC8+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICDE7eXsIOgg7e73/P4gLCDxIPPy8OAg5O4g5+Dw 6CAsPGJyIC8+ICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICDO8u/l4uD+ +ej1IO3g+OggIOPw5fXoIIUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAg ICAgKiAgICAqIDxiciAvPiA8YnIgLz4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGJyIC8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgyCDo8ffl5+3z8iDiIOLu5OD1IMTt5fHy8OAsPGJyIC8+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIMLx5SDy8OXi7uPoIOL35fDg+O3l 4+4g5O3/LDxiciAvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIMfk5fH8IOHu6/wg7O7+IOjx9uXr6PIg7eDi8eXj5OAsPGJyIC8+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg1uXr5eHt++kg6PHy7vft 6Oog4eXnIOTt4IU8YnIgLz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICogICAgICo8YnIgLz4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+ ICAgICAgICAgICAgICAgICAgIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGJyIC8+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgINEg8O7k7ejq4CDt4O/8/vH8IOLu5PssPGJyIC8+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINPn5evu6iDxIO3g5OXm 5O7pIOfg4v/m8yw8YnIgLz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgx+Dj4OTg/iDy4Ont7uUg5uXr4O385Sw8YnIgLz4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgziDy5fUsIOru4+4g6/7h6/4g 6CDk7vDu5vOFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGJyIC8+PGJyIC8+PGJyIC8+weDq7vLgLMHg6u7y4C08YnIgLz7C5+Pr/+Qg 7Ojr+/Ug4+vg5yDy4u7o9SE8YnIgLz7B4Oru8uAsweDq7vLgLTxiciAvPtPn5evu 6iDt4OTl5uT7IOTr/yDk4u7o9SE8YnIgLz48YnIgLz4KCQkKICAgICAgICAgICAg PC9wPgogICAgICAgIAoJPC9kaXY+Cgk8YnIgY2xlYXI9YWxsIGNsYXNzPXRoaW5r PgoJPHAgY2xhc3M9Z3Jfc20+PGk+7eDx8vDu5e3o5TogzOX38uDy5ev87e7lPGJy PvXu9+Xy8f86IOIgweDq7vLzPGJyPvHr8/jg/jog8eLu5SDx5fDk9uU8YnI+PC9p PjwvcD4KCQoJCgk8L2Rpdj4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0 Ij4KCQlpZihpc0lFKQoJCQlzZXRUaW1lb3V0KCJwb3N0X3Njcm9sbCgnNkEwRkI5 OEM1RkQ0RDE1QycpIiwgMTAwMCk7Cgk8L3NjcmlwdD4KCTxkaXYgY2xhc3M9Im1l c3NhZ2VfbWluX3dpZHRoIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAu Z2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PC9kaXY+Cgk8ZGl2IGNs YXNzPSJib3R0b21fYmciPjxkaXY+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5y dS8wLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPjwvZGl2PjwvZGl2 PgoKPC9kaXY+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwhLS0gRU5EOiBl bnRyeSAtLT4KCgoKCjxpbWcgc3JjPWh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiB3 aWR0aD0xIGhlaWdodD0xNT48YnI+CjxkaXYgY2xhc3M9Z3JfbGluZT48aW1nIHNy Yz1odHRwOi8vaW1nLm1haWwucnUvMC5naWYgd2lkdGg9MSBoZWlnaHQ9MT48L2Rp dj4KPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVy PSIwIj4KICAgIDx0cj4KCTx0ZD48aDEgY2xhc3M9YmlnPsru7Ozl7fLg8OjoPC9o MT48L3RkPgoJPHRkPiZuYnNwOzwvdGQ+CiAgICA8L3RyPgo8L3RhYmxlPgo8c2Ny aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KCi8vzeDv6PHg8vwg6u7s 7OXt8uDw6OkKZnVuY3Rpb24gc2hvd19hZGRfY29tbWVudChpZCwgZGVmYXVsdF9o aWRlLCBiYWNrX3ZhbHVlLCBjaXQpCnsKICAgIGNsb3NlX2FkZF9jb21tZW50KCk7 CiAgICB2YXIgYXV0aD0iIjsKICAgIHZhciBwYXJlbnRfb2JqPWRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCJhZGRfIitpZCk7CiAgICAvL2lmKGlkPT0nYmVnaW4nIHx8 IGlkPT0nZW5kJykgaWQ9MDsKICAgIHZhciBjb250X2Rpdj1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCdkaXYnKTsKICAgIGNvbnRfZGl2LmlkPSJjb250X2Rpdl9jaGVj ayI7CiAgIAljb250X2Rpdi5jbGFzc05hbWU9ImNvbnRfZGl2IjsKICAgIHZhciBI VE1MPSI8Zm9ybSBuYW1lPVwicmVwbHlcIiBhY3Rpb249XCIvbWFpbC9tYWx2b181 OS82QTBGQjk4QzVGRDREMTVDLmh0bWw/dGhyZWFkPTAmYW1wO3BhZ2U9MSZhbXA7 c2tpcD0wI2NvbW1lbnRfIitpZCsiXCIgbWV0aG9kPVwiUE9TVFwiIGlkPVwiZHVw ZGF0ZVwiIG9uc3VibWl0PVwicmV0dXJuIGFkZF9jb21tZW50KHRoaXMpO1wiIG9u bW91c2Vtb3ZlPVwiY2hlY2tTdWJCdXRzKCk7Y2hlY2tIZWlnaHQoZ2ViaSgnY29t bWVudF90ZXh0JykpO1wiPiIgKyAnPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Im1u YSIgbmFtZT0ibW5hIiB2YWx1ZT0iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0i bW5iIiBuYW1lPSJtbmIiIHZhbHVlPSIiPicgKwoJICAgICsiPHRhYmxlIGNlbGxw YWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MCBzdHlsZT1cIm1hcmdpbi1i b3R0b206OHB4XCIgPiI7CiAgICBpZihhdXRoKSB7CglIVE1MKz0iPHRyPjx0ZD7C 4PjlJm5ic3A76Oz/OiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOzwvdGQ+IgoJICAgICsiICAgIDx0ZCB3aWR0aD0xMDAlPjxpbnB1dCB0 eXBlPXRleHQgbmFtZT1cIlBvc3RlclwiIHZhbHVlPVwiXCIgc3R5bGU9XCJ3aWR0 aDoxMDAlXCIgZGlzYWJsZWQ9MT48L3RkPjwvdHI+IjsKICAgIH0gZWxzZSB7CglI VE1MKz0iPHRyPiIKCSAgICArIgk8dGQgd2lkdGg9NTAlPjxzZWxlY3Qgc3R5bGU9 XCJ3aWR0aDoxMDAlXCIgb25jaGFuZ2U9XCJjaGFuZ2Vfc2VsZWN0ZWRfb3B0KHRo aXMpXCIgaWQ9XCJEb0F1dGhcIiBuYW1lPVwiRG9BdXRoXCI+IgoJICAgICsiCQkJ PG9wdGlvbiB2YWx1ZT0wIHNlbGVjdGVkPsDt7u3o7O3uPC9vcHRpb24+IgoJICAg ICsiCQkJPG9wdGlvbiB2YWx1ZT0xPs/u6/zn7uLg8uXr/Dwvb3B0aW9uPiIKCSAg ICArIgkJPC9zZWxlY3Q+PC90ZD4iCgkgICAgKyIJPHRkIHN0eWxlPVwicGFkZGlu ZzowIDE1cHggMCAyMHB4XCI+yOz/OiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOzwvdGQ+IgoJICAgICsiCTx0ZCB3aWR0aD01MCU+IgoJICAgICsi CQk8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAg Ym9yZGVyPTA+IgoJICAgICsiCQk8dHI+IgoJICAgICsiCQkJPHRkIHdpZHRoPTkw JSBjbGFzcz1ucD48aW5wdXQgdHlwZT10ZXh0IGNsYXNzPXdfMTAwICBuYW1lPVwi TG9naW5cIiB2YWx1ZT1cInltYm9ldlwiPjwvdGQ+IgoJICAgICsiCQkJPHRkIHN0 eWxlPVwiZGlzcGxheTpub25lXCIgaWQ9aGlkZXNfdGQgd2lkdGg9MTAlIGNsYXNz PW5wPjxzZWxlY3QgbmFtZT1cIkRvbWFpblwiPjxvcHRpb24gdmFsdWU9XCJtYWls LnJ1XCIgIFNFTEVDVEVEPkBtYWlsLnJ1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1c ImluYm94LnJ1XCIgPkBpbmJveC5ydTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJi ay5ydVwiID5AYmsucnU8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwibGlzdC5ydVwi ID5AbGlzdC5ydTwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+IgoJICAgICsiCQk8L3Ry PiIKCSAgICArIgkJPC90YWJsZT4iCgkgICAgKyIJPC90ZD4iCgkgICAgKyI8L3Ry PiIKCSAgICArIjx0ciBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGlkPWhpZGVzX3Ry PiIKCSAgICArIgk8dGQgaWQ9XCJpbnZhbGlkX2xvZ2luXCI+Jm5ic3A7PC90ZD4i CgkgICAgKyIJPHRkIHN0eWxlPVwicGFkZGluZzowIDE1cHggMCAyMHB4XCI+z+Dw 7uv8OjwvdGQ+IgoJICAgICsiCTx0ZCBub3dyYXA+PGlucHV0IHR5cGU9cGFzc3dv cmQgY2xhc3M9d18xMDAgbmFtZT1QYXNzd29yZD48L3RkPiIKCSAgICArIjwvdHI+ IgoJICAgICsiPHRyPiIKCSAgICArIgk8dGQgd2lkdGg9NTAlPjxpbWcgc3JjPWh0 dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiB3aWR0aD0xNTAgaGVpZ2h0PTE+PGJyPjwv dGQ+IgoJICAgICsiCTx0ZD48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUvMC5n aWYgd2lkdGg9MSBoZWlnaHQ9MT48YnI+PC90ZD4iCgkgICAgKyIJPHRkIHdpZHRo PTUwJT48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUvMC5naWYgd2lkdGg9MTUw IGhlaWdodD0xPjxicj48L3RkPiIKCSAgICArIjwvdHI+IjsKICAgIH0KICAgIEhU TUwrPSI8L3RhYmxlPjx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAg Ym9yZGVyPTA+IgoJKyI8dHI+PHRkPtLl7OA6Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90 ZD48dGQgd2lkdGg9MTAwJT48aW5wdXQgdHlwZT10ZXh0IGlkPVwic3ViamVjdF90 ZXh0XCIgbmFtZT1cIlN1YmplY3RcIiB2YWx1ZT1cIlJlOiDB4Oru8uBcIiBzdHls ZT1cIndpZHRoOjEwMCVcIj48L3RkPjwvdHI+IgogICAgICAgICsiPHRyIHZhbGln bj10b3A+PHRkPtLl6vHyOjwvdGQ+PHRkPjx0ZXh0YXJlYSBpZD1cImNvbW1lbnRf dGV4dFwiIG5hbWU9XCJDb21tZW50XCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIHJv d3M9NSBvbmNsaWNrPVwiY2hlY2tTdWJCdXRzKCk7Y2hlY2tIZWlnaHQodGhpcyk7 XCIgb25jaGFuZ2U9XCJjaGVja1N1YkJ1dHMoKTtjaGVja0hlaWdodCh0aGlzKTtc IiBvbmxvYWQ9XCJjaGVja1N1YkJ1dHMoKTtjaGVja0hlaWdodCh0aGlzKTtcIiBv bmtleXByZXNzPVwiY2hlY2tTdWJCdXRzKCk7XCIgb25rZXlkb3duPVwiY2hlY2tT dWJCdXRzKCk7XCIgb25rZXl1cD1cImNoZWNrU3ViQnV0cygpO2NoZWNrSGVpZ2h0 KHRoaXMpO1wiIG9uZm9jdXM9XCJjaGVja1N1YkJ1dHMoKTtjaGVja0hlaWdodCh0 aGlzKTtcIiBvbmJsdXI9XCJjaGVja1N1YkJ1dHMoKTtjaGVja0hlaWdodCh0aGlz KTtcIiBvbm1vdXNlbW92ZT1cImNoZWNrU3ViQnV0cygpO2NoZWNrSGVpZ2h0KHRo aXMpO1wiPjwvdGV4dGFyZWE+PC90ZD48L3RyPiIKICAgICAgICArIjx0ciB2YWxp Z249dG9wPjx0ZD4mbmJzcDs8L3RkPjx0ZD4iCiAgICAgICAgKyIgICAgPGlucHV0 IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicmVwbHl0b1wiIHZhbHVlPVwiIitpZCsi XCI+IgogICAgICAgICsiICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1c ImJhY2tcIiB2YWx1ZT1cIiIrYmFja192YWx1ZSsiXCI+IgogICAgICAgICsiICAg IDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJwcm90ZWN0X2tleVwiIG5hbWU9 XCJQcm9LZXlcIiB2YWx1ZT1cIiIrcHJvdGVjdF9rZXkrIlwiPiIKCSAgICArIjx0 YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYm9yZGVyPTAgd2lkdGg9 MTAwJSBjbGFzcz1cIm1iNVwiPiIKCQkrIjx0cj48dGQgY2xhc3M9XCJoaWRlIHRh aFwiPiIKCQkrIjxkaXYgaWQ9XCJzb21lc21pbGV5c1wiPiIKCQkJKyI8aW1nIHNy Yz1cImh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vc21pbGUuZ2lmXCIgY2xhc3M9 XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDEsJzopJyk7XCIgYWx0PVwiOilcIiB0aXRsZT1cIjopXCI+ IgoJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9jcm9j b2RpbGUuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzpcXCdcXCcoKScpO1wi IGFsdD1cIjonJygpXCIgdGl0bGU9XCI6JycoKVwiPiIKCQkJKyI8aW1nIHNyYz1c Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYnVsbHNoaXQuZ2lmXCIgY2xhc3M9 XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDEsJyk6LXAnKTtcIiBhbHQ9XCIpOi1wXCIgdGl0bGU9XCIp Oi1wXCI+IgoJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0 bi9hZHYvMzUuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNl U2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L7 5TrL7u/t8yDu8iDx7OX14DonKTtcIiBhbHQ9XCLL7u/t8yDu8iDx7OX14FwiIHRp dGxlPVwiy+7v7fMg7vIg8ezl9eBcIj4iCgkJCSsiPGltZyBzcmM9XCJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2FuaW0vZGFuY2UuZ2lmXCIgY2xhc3M9XCJzbWls ZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRf dGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOtLg7fbz/jonKTtcIiBhbHQ9XCLS4O32 8/5cIiB0aXRsZT1cItLg7fbz/lwiPiIKCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9p bWcubWFpbC5ydS9ydS9idG4vYW5pbS9maWdodC5naWZcIiBjbGFzcz1cInNtaWxl XCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90 ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U6z+7h/P46Jyk7XCIgYWx0PVwiz+7h/P5c IiB0aXRsZT1cIs/u4fz+XCI+IgoJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9ibGluay5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGlj az1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwn OyknKTtcIiBhbHQ9XCI7KVwiIHRpdGxlPVwiOylcIj4iCQoJCQkrIjxpbWcgc3Jj PVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbWF6ZWQuZ2lmXCIgY2xhc3M9 XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDEsJzgtMCcpO1wiIGFsdD1cIjgtMFwiIHRpdGxlPVwiOC0w XCI+IgoJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9o ZWFydC5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VTZWxl Y3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOmhlYXJ0OicpO1wiIGFs dD1cIjpoZWFydDpcIiB0aXRsZT1cIjpoZWFydDpcIj4iCQkJCQkJCgkJCSsiPGlt ZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2xpdmUuZ2lmXCIgY2xh c3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmko J2NvbW1lbnRfdGV4dCcpLDIsJzpjb29sOicpO1wiIGFsdD1cIjpjb29sOlwiIHRp dGxlPVwiOmNvb2w6XCI+IgoJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi92aWN0b3J5LmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNr PVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6 dml2YTonKTtcIiBhbHQ9XCI6dml2YTpcIiB0aXRsZT1cIjp2aXZhOlwiPiIKCQkJ KyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vb2suZ2lmXCIg Y2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdl YmkoJ2NvbW1lbnRfdGV4dCcpLDIsJzpvazonKTtcIiBhbHQ9XCI6b2s6XCIgdGl0 bGU9XCI6b2s6XCI+PGJyPiIKCQkJKyI8c3BhbiBjbGFzcz1cInRpcGFsaW5rXCIg aWQ9XCJpY290eHRcIiBvbkNsaWNrPVwidG9nZ2xlc21pbGUoKTtcIj7C8eUg8ezg 6ev7IOgg5uXx8vs8L3NwYW4+IgoJCSsiPC9kaXY+IgoJCgkJKyI8L3RkPjx0ZCBh bGlnbj1yaWdodCBjbGFzcz1cImhpZGVcIiBub3dyYXAgdmFsaWduPVwidG9wXCI+ PC90ZD48L3RyPiIKCSAgICArIjwvdGFibGU+IgoJCQoJCSsiPGRpdiBpZD1cImFs bHNtaWxleXNcIj4iCgkJCSsiPGRpdiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQg I0FCQURCMzsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgb3ZlcmZsb3c6YXV0bzsg b3ZlcmZsb3cteTphdXRvOyBvdmVyZmxvdy14OmhpZGRlbjsgaGVpZ2h0OjkwcHg7 IHBhZGRpbmc6NXB4IDEwcHggNXB4IDEwcHg7XCI+IgoJCQkJKyI8ZGl2Psrr4PHx 6Pfl8ero5Txicj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1 L3J1L2J0bi9zbWlsZS5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJl cGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOiknKTtc IiBhbHQ9XCI6KVwiIHRpdGxlPVwiOilcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0 cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9ibGluay5naWZcIiBjbGFzcz1cInNtaWxl XCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90 ZXh0JyksMSwnOyknKTtcIiBhbHQ9XCI7KVwiIHRpdGxlPVwiOylcIj4iCgkJCQkr IjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9sYXVnaHRlci5n aWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRl eHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOi0pKScpO1wiIGFsdD1cIjotKSlc IiB0aXRsZT1cIjotKSlcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9iZWUuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9 XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzst UCcpO1wiIGFsdD1cIjstUFwiIHRpdGxlPVwiOy1QXCI+IgoJCQkJKyI8aW1nIHNy Yz1cImh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vY29vbGd1eS5naWZcIiBjbGFz cz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgn Y29tbWVudF90ZXh0JyksMSwnOC0pJyk7XCIgYWx0PVwiOC0pXCIgdGl0bGU9XCI4 LSlcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0 bi9iaWdncmluLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFj ZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6LUQnKTtcIiBh bHQ9XCI6LURcIiB0aXRsZT1cIjotRFwiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRw Oi8vaW1nLm1haWwucnUvcnUvYnRuL3BpZy5naWZcIiBjbGFzcz1cInNtaWxlXCIg b25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0 JyksMSwnfTpvKScpO1wiIGFsdD1cIn06bylcIiB0aXRsZT1cIn06bylcIj4iCgkJ CQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9iYXppbGlv LmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCckLSknKTtcIiBhbHQ9XCIkLSlc IiB0aXRsZT1cIiQtKVwiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1h aWwucnUvcnUvYnRuL2htLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwi cmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6LVxc JycpO1wiIGFsdD1cIjotJ1wiIHRpdGxlPVwiOi0nXCI+IgoJCQkJKyI8aW1nIHNy Yz1cImh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vZGlzc2Fwb2ludGVkLmdpZlwi IGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChn ZWJpKCdjb21tZW50X3RleHQnKSwxLCc6LSgnKTtcIiBhbHQ9XCI6LShcIiB0aXRs ZT1cIjotKFwiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUv cnUvYnRuL3RlYXJzLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVw bGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc4LSgnKTtc IiBhbHQ9XCI4LShcIiB0aXRsZT1cIjgtKFwiPiIKCQkJCSsiPGltZyBzcmM9XCJo dHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2NyeS5naWZcIiBjbGFzcz1cInNtaWxl XCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90 ZXh0JyksMSwnOlxcJygnKTtcIiBhbHQ9XCI6JyhcIiB0aXRsZT1cIjonKFwiPiIK CQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Nyb2Nv ZGlsZS5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VTZWxl Y3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOlxcJ1xcJygpJyk7XCIg YWx0PVwiOicnKClcIiB0aXRsZT1cIjonJygpXCI+IgoJCQkJKyI8aW1nIHNyYz1c Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vcmVhbGx5LmdpZlwiIGNsYXNzPVwi c21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21t ZW50X3RleHQnKSwxLCckOi1vJyk7XCIgYWx0PVwiJDotb1wiIHRpdGxlPVwiJDot b1wiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRu L29vLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVj dGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCcoOi1vJyk7XCIgYWx0PVwi KDotb1wiIHRpdGxlPVwiKDotb1wiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2FtYXplZC5naWZcIiBjbGFzcz1cInNtaWxlXCIg b25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0 JyksMSwnOC0wJyk7XCIgYWx0PVwiOC0wXCIgdGl0bGU9XCI4LTBcIj4iCgkJCQkr IjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hYWEuZ2lmXCIg Y2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdl YmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzgtW29dJyk7XCIgYWx0PVwiOC1bb11cIiB0 aXRsZT1cIjgtW29dXCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFp bC5ydS9ydS9idG4vYnVsbHNoaXQuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xp Y2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEs Jyk6LXAnKTtcIiBhbHQ9XCIpOi1wXCIgdGl0bGU9XCIpOi1wXCI+IgoJCQkJKyI8 aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5ncnkuZ2lmXCIg Y2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdl YmkoJ2NvbW1lbnRfdGV4dCcpLDEsJyk6LSgnKTtcIiBhbHQ9XCIpOi0oXCIgdGl0 bGU9XCIpOi0oXCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5y dS9ydS9idG4vcnJyLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVw bGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCcpOi0kJyk7 XCIgYWx0PVwiKTotJFwiIHRpdGxlPVwiKTotJFwiPiIKCQkJCSsiPGltZyBzcmM9 XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL3psb3JhZHN0dm8uZ2lmXCIgY2xh c3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmko J2NvbW1lbnRfdGV4dCcpLDEsJyk6LUQnKTtcIiBhbHQ9XCIpOi1EXCIgdGl0bGU9 XCIpOi1EXCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5ydS9y dS9idG4vYmlnYW5nZXIuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJy ZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzotRScp O1wiIGFsdD1cIjotRVwiIHRpdGxlPVwiOi1FXCI+IgoJCQkJKyI8aW1nIHNyYz1c Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vZGV2aWwuZ2lmXCIgY2xhc3M9XCJz bWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1l bnRfdGV4dCcpLDEsJzpkZXZpbDonKTtcIiBhbHQ9XCI6ZGV2aWw6XCIgdGl0bGU9 XCI6ZGV2aWw6XCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5y dS9ydS9idG4vdmFtcGlyZS5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1c InJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOnZh bXBpcmU6Jyk7XCIgYWx0PVwiOnZhbXBpcmU6XCIgdGl0bGU9XCI6dmFtcGlyZTpc Ij4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9w bHVnLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVj dGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6LV1bJyk7XCIgYWx0PVwi Oi1dW1wiIHRpdGxlPVwiOi1dW1wiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2RldHpsLmdpZlwiIGNsYXNzPVwic21pbGVcIiBv bmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQn KSwxLCc6LXwnKTtcIiBhbHQ9XCI6LXxcIiB0aXRsZT1cIjotfFwiPiIKCQkJCSsi PGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL3NjZXB0aWMuZ2lm XCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0 KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJ0ItaicpO1wiIGFsdD1cIkItalwiIHRp dGxlPVwiQi1qXCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5y dS9ydS9idG4vc2h5LmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVw bGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6fm8nKTtc IiBhbHQ9XCI6fm9cIiB0aXRsZT1cIjp+b1wiPiIKCQkJCSsiPGltZyBzcmM9XCJo dHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fzcy5naWZcIiBjbGFzcz1cInNtaWxl XCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90 ZXh0JyksMSwnKF9JXyknKTtcIiBhbHQ9XCIoX0lfKVwiIHRpdGxlPVwiKF9JXylc Ij4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9o ZWFydC5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VTZWxl Y3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOmhlYXJ0OicpO1wiIGFs dD1cIjpoZWFydDpcIiB0aXRsZT1cIjpoZWFydDpcIj4iCgkJCQkrIjxpbWcgc3Jj PVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9raXNzLmdpZlwiIGNsYXNzPVwi c21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21t ZW50X3RleHQnKSwxLCc6LSonKTtcIiBhbHQ9XCI6LSpcIiB0aXRsZT1cIjotKlwi PiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL3Ns ZWVweS5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VTZWxl Y3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOnNsZWVweTonKTtcIiBh bHQ9XCI6c2xlZXB5OlwiIHRpdGxlPVwiOnNsZWVweTpcIj4iCgkJCQkrIjwvZGl2 PiIKCQkJCSsiPGRpdj7G5fHy+zxicj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDov L2ltZy5tYWlsLnJ1L3J1L2J0bi9saXZlLmdpZlwiIGNsYXNzPVwic21pbGVcIiBv bmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQn KSwyLCc6Y29vbDonKTtcIiBhbHQ9XCI6Y29vbDpcIiB0aXRsZT1cIjpjb29sOlwi PiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL3Zp Y3RvcnkuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDIsJzp2aXZhOicpO1wiIGFs dD1cIjp2aXZhOlwiIHRpdGxlPVwiOnZpdmE6XCI+IgoJCQkJKyI8aW1nIHNyYz1c Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vb2suZ2lmXCIgY2xhc3M9XCJzbWls ZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRf dGV4dCcpLDIsJzpvazonKTtcIiBhbHQ9XCI6b2s6XCIgdGl0bGU9XCI6b2s6XCI+ IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4va296 YV9sZWZ0LmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNl bGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6eW9sOicpO1wiIGFs dD1cIjp5b2w6XCIgdGl0bGU9XCI6eW9sOlwiPiIKCQkJCSsiPGltZyBzcmM9XCJo dHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2tvemFfcmlnaHQuZ2lmXCIgY2xhc3M9 XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDIsJzp5b3I6Jyk7XCIgYWx0PVwiOnlvcjpcIiB0aXRsZT1c Ijp5b3I6XCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5ydS9y dS9idG4vZGllLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFj ZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6c3V4eDonKTtc IiBhbHQ9XCI6c3V4eDpcIiB0aXRsZT1cIjpzdXh4OlwiPiIKCQkJCSsiPGltZyBz cmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2ZpbmdlcnVwLmdpZlwiIGNs YXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJp KCdjb21tZW50X3RleHQnKSwyLCc6dGhpbms6Jyk7XCIgYWx0PVwiOnRoaW5rOlwi IHRpdGxlPVwiOnRoaW5rOlwiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1n Lm1haWwucnUvcnUvYnRuL2t1a2VzLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNs aWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwy LCc6ZmlndTonKTtcIiBhbHQ9XCI6ZmlndTpcIiB0aXRsZT1cIjpmaWd1OlwiPiIK CQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Zpc3Qu Z2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRU ZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDIsJzprdWxhazonKTtcIiBhbHQ9XCI6 a3VsYWs6XCIgdGl0bGU9XCI6a3VsYWs6XCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0 dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vZnVjay5naWZcIiBjbGFzcz1cInNtaWxl XCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90 ZXh0JyksMiwnOmZ1Y2s6Jyk7XCIgYWx0PVwiOmZ1Y2s6XCIgdGl0bGU9XCI6ZnVj azpcIj4iCgkJCQkrIjwvZGl2PiIKCQkJCSsiPGRpdj7A7ejs6PDu4uDt7fvlPGJy PiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fu aW0vYW5nZWwuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNl U2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt 7fvlOsDt4+Xr7vfl6jonKTtcIiBhbHQ9XCLA7ePl6+735epcIiB0aXRsZT1cIsDt 4+Xr7vfl6lwiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUv cnUvYnRuL2FuaW0vYXBwbC5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1c InJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt 6Ozo8O7i4O3t++U6wO/r7uTo8ezl7fL7OicpO1wiIGFsdD1cIsDv6+7k6PHs5e3y +1wiIHRpdGxlPVwiwO/r7uTo8ezl7fL7XCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0 dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9iZWF1dHkuZ2lmXCIgY2xhc3M9 XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOsrw4PHu8urgOicpO1wiIGFs dD1cIsrw4PHu8urgXCIgdGl0bGU9XCLK8ODx7vLq4FwiPiIKCQkJCSsiPGltZyBz cmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0vYmVlci5naWZcIiBj bGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2Vi aSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U6z+ji7jonKTtcIiBh bHQ9XCLP6OLuXCIgdGl0bGU9XCLP6OLuXCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0 dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9ib29rLmdpZlwiIGNsYXNzPVwi c21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21t ZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrX6PLg/jonKTtcIiBhbHQ9XCLX 6PLg/lwiIHRpdGxlPVwi1+jy4P5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDov L2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmltL2NvdWxkLmdpZlwiIGNsYXNzPVwic21p bGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50 X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrMuPDn7fM6Jyk7XCIgYWx0PVwizLjw 5+3zXCIgdGl0bGU9XCLMuPDn7fNcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDov L2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmltL2NyeS5naWZcIiBjbGFzcz1cInNtaWxl XCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90 ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U60Pvk4P46Jyk7XCIgYWx0PVwi0Pvk4P5c IiB0aXRsZT1cItD75OD+XCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcu bWFpbC5ydS9ydS9idG4vYW5pbS9kYW5jZS5naWZcIiBjbGFzcz1cInNtaWxlXCIg b25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0 JyksMywnOsDt6Ozo8O7i4O3t++U60uDt9vP+OicpO1wiIGFsdD1cItLg7fbz/lwi IHRpdGxlPVwi0uDt9vP+XCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcu bWFpbC5ydS9ydS9idG4vYW5pbS9kZXZpbC5naWZcIiBjbGFzcz1cInNtaWxlXCIg b25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0 JyksMywnOsDt6Ozo8O7i4O3t++U61+Xw8u7i8eroIOfr/vH8OicpO1wiIGFsdD1c Itfl8PLu4vHq6CDn6/7x/FwiIHRpdGxlPVwi1+Xw8u7i8eroIOfr/vH8XCI+IgoJ CQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9l YXQuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0 ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOsbz /jonKTtcIiBhbHQ9XCLG8/5cIiB0aXRsZT1cIsbz/lwiPiIKCQkJCSsiPGltZyBz cmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0vZmlnaHQuZ2lmXCIg Y2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdl YmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOs/u4fz+OicpO1wi IGFsdD1cIs/u4fz+XCIgdGl0bGU9XCLP7uH8/lwiPiIKCQkJCSsiPGltZyBzcmM9 XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0vZmluZ2FsLmdpZlwiIGNs YXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJp KCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrP7uHo6+g6Jyk7XCIg YWx0PVwiz+7h6OvoXCIgdGl0bGU9XCLP7uHo6+hcIj4iCgkJCQkrIjxpbWcgc3Jj PVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmltL2Zsb3dyLmdpZlwiIGNs YXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJp KCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrE4PD+IPbi5fLu9+Xq OicpO1wiIGFsdD1cIsTg8P4g9uLl8u735epcIiB0aXRsZT1cIsTg8P4g9uLl8u73 5epcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0 bi9hbmltL2dnLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFj ZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg 7e375TrR7OX+8fw6Jyk7XCIgYWx0PVwi0ezl/vH8XCIgdGl0bGU9XCLR7OX+8fxc Ij4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9h bmltL2dnMi5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VT ZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t ++U60ezl/vH8IOgg7+vg9/M6Jyk7XCIgYWx0PVwi0ezl/vH8IOgg7+vg9/NcIiB0 aXRsZT1cItHs5f7x/CDoIO/r4PfzXCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6 Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9naWZ0LmdpZlwiIGNsYXNzPVwic21p bGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50 X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrP7uTg8O7qOicpO1wiIGFsdD1cIs/u 5ODw7upcIiB0aXRsZT1cIs/u5ODw7upcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0 cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmltL2h1bmdyeS5naWZcIiBjbGFzcz1c InNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29t bWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U6wu7w9/M6Jyk7XCIgYWx0PVwi wu7w9/NcIiB0aXRsZT1cIsLu8PfzXCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6 Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9raXNzLmdpZlwiIGNsYXNzPVwic21p bGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50 X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrW5evz/jonKTtcIiBhbHQ9XCLW5evz /lwiIHRpdGxlPVwi1uXr8/5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2lt Zy5tYWlsLnJ1L3J1L2J0bi9hbmltL2xvdmUuZ2lmXCIgY2xhc3M9XCJzbWlsZVwi IG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4 dCcpLDMsJzrA7ejs6PDu4uDt7fvlOsv+4ev+OicpO1wiIGFsdD1cIsv+4ev+XCIg dGl0bGU9XCLL/uHr/lwiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1h aWwucnUvcnUvYnRuL2FuaW0vcGlzdG9sZXQuZ2lmXCIgY2xhc3M9XCJzbWlsZVwi IG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4 dCcpLDMsJzrA7ejs6PDu4uDt7fvlOsfg8fLw5ev+OicpO1wiIGFsdD1cIsfg8fLw 5ev+XCIgdGl0bGU9XCLH4PHy8OXr/lwiPiIKCQkJCSsiPGltZyBzcmM9XCJodHRw Oi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0vcG9pc29uLmdpZlwiIGNsYXNzPVwi c21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21t ZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrC++/l6SD/5PM6Jyk7XCIgYWx0 PVwiwvvv5ekg/+TzXCIgdGl0bGU9XCLC++/l6SD/5PNcIj4iCgkJCQkrIjxpbWcg c3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmltL3JhaW5ib3cuZ2lm XCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0 KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOsvz9+Xn4PDt 7jonKTtcIiBhbHQ9XCLL8/fl5+Dw7e5cIiB0aXRsZT1cIsvz9+Xn4PDt7lwiPiIK CQkJCSsiPGltZyBzcmM9XCJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0v cmVkLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNlbGVj dGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrR 7PP54P7x/DonKTtcIiBhbHQ9XCLR7PP54P7x/FwiIHRpdGxlPVwi0ezz+eD+8fxc Ij4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9h bmltL3NhZC5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VT ZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t ++U60ODx8fLw4Oji4P7x/DonKTtcIiBhbHQ9XCLQ4PHx8vDg6OLg/vH8XCIgdGl0 bGU9XCLQ4PHx8vDg6OLg/vH8XCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9p bWcubWFpbC5ydS9ydS9idG4vYW5pbS9zaW5nLmdpZlwiIGNsYXNzPVwic21pbGVc IiBvbmNsaWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3Rl eHQnKSwzLCc6wO3o7Ojw7uLg7e375TrP7v46Jyk7XCIgYWx0PVwiz+7+XCIgdGl0 bGU9XCLP7v5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1 L3J1L2J0bi9hbmltL3NrdWthLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNr PVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6 wO3o7Ojw7uLg7e375TrR6vP34P46Jyk7XCIgYWx0PVwi0erz9+D+XCIgdGl0bGU9 XCLR6vP34P5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1 L3J1L2J0bi9hbmltL3NsZWVwLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNr PVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6 wO3o7Ojw7uLg7e375TrH4PH77+D+OicpO1wiIGFsdD1cIsfg8fvv4P5cIiB0aXRs ZT1cIsfg8fvv4P5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9hbmltL3NtaWxlLmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNs aWNrPVwicmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwz LCc6wO3o7Ojw7uLg7e375TrT6/vh4P7x/DonKTtcIiBhbHQ9XCLT6/vh4P7x/Fwi IHRpdGxlPVwi0+v74eD+8fxcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2lt Zy5tYWlsLnJ1L3J1L2J0bi9hbmltL3Rvbmd1ZS5naWZcIiBjbGFzcz1cInNtaWxl XCIgb25jbGljaz1cInJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90 ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U6z+7q4Of74uD+IP/n++o6Jyk7XCIgYWx0 PVwiz+7q4Of74uD+IP/n++pcIiB0aXRsZT1cIs/u6uDn++Lg/iD/5/vqXCI+IgoJ CQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS92 aWN0b3J5LmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwicmVwbGFjZVNl bGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e37 5TpQZWFjZSE6Jyk7XCIgYWx0PVwiUGVhY2UhXCIgdGl0bGU9XCJQZWFjZSFcIj4i CgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmlt L3dvbmRlci5naWZcIiBjbGFzcz1cInNtaWxlXCIgb25jbGljaz1cInJlcGxhY2VT ZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t ++U60+To4uv//vH8OicpO1wiIGFsdD1cItPk6OLr//7x/FwiIHRpdGxlPVwi0+To 4uv//vH8XCI+IgoJCQkJKyI8aW1nIHNyYz1cImh0dHA6Ly9pbWcubWFpbC5ydS9y dS9idG4vYW5pbS9ibGV3LmdpZlwiIGNsYXNzPVwic21pbGVcIiBvbmNsaWNrPVwi cmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o 7Ojw7uLg7e375TrS7vjt6PI6Jyk7XCIgYWx0PVwi0u747ejyXCIgdGl0bGU9XCLS 7vjt6PJcIj4iCgkJCQkrIjwvZGl2PiIKCQkJCSsiPGRpdj7P8O7k4ujt8/L75Txi cj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9h ZHYvMDMuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrT 6/vh4P7x/DonKTtcIiBhbHQ9XCLT6/vh4P7x/FwiIHRpdGxlPVwi0+v74eD+8fxc Ij4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9h ZHYvMDUuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrH 6+7w4OTx8uLz/jonKTtcIiBhbHQ9XCLH6+7w4OTx8uLz/lwiIHRpdGxlPVwix+vu 8ODk8fLi8/5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1 L3J1L2J0bi9hZHYvMDcuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJy ZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k 4ujt8/L75TrQ4OTz/vH8OicpO1wiIGFsdD1cItDg5PP+8fxcIiB0aXRsZT1cItDg 5PP+8fxcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1 L2J0bi9hZHYvMDkuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBs YWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt 8/L75TrR8uDw6Pfu6jonKTtcIiBhbHQ9XCLR8uDw6Pfu6lwiIHRpdGxlPVwi0fLg 8Oj37upcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1 L2J0bi9hZHYvMTEuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBs YWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt 8/L75TrR4ujw5e/x8uLz/jonKTtcIiBhbHQ9XCLR4ujw5e/x8uLz/lwiIHRpdGxl PVwi0eLo8OXv8fLi8/5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9hZHYvMTMuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xp Y2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQs JzrP8O7k4ujt8/L75TrP8+Pg/vH8OicpO1wiIGFsdD1cIs/z4+D+8fxcIiB0aXRs ZT1cIs/z4+D+8fxcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9hZHYvMjEuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9 XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP 8O7k4ujt8/L75TrP7urg5/vi4P4g/+f76jonKTtcIiBhbHQ9XCLP7urg5/vi4P4g /+f76lwiIHRpdGxlPVwiz+7q4Of74uD+IP/n++pcIj4iCgkJCQkrIjxpbWcgc3Jj PVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hZHYvMjIuZ2lmXCIgY2xhc3M9 XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrT7O3o6jonKTtcIiBhbHQ9XCLT 7O3o6lwiIHRpdGxlPVwi0+zt6OpcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDov L2ltZy5tYWlsLnJ1L3J1L2J0bi9hZHYvMjMuZ2lmXCIgY2xhc3M9XCJzbWlsZVwi IG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4 dCcpLDQsJzrP8O7k4ujt8/L75TrA6+ru4+7r6Oo6Jyk7XCIgYWx0PVwiwOvq7uPu 6+jqXCIgdGl0bGU9XCLA6+ru4+7r6OpcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0 cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hZHYvMjQuZ2lmXCIgY2xhc3M9XCJzbWls ZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRf dGV4dCcpLDQsJzrP8O7k4ujt8/L75TrC7v/q4DonKTtcIiBhbHQ9XCLC7v/q4Fwi IHRpdGxlPVwiwu7/6uBcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9hZHYvMjUuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xp Y2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQs JzrP8O7k4ujt8/L75TrT5Oji6//+8fw6Jyk7XCIgYWx0PVwi0+To4uv//vH8XCIg dGl0bGU9XCLT5Oji6//+8fxcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2lt Zy5tYWlsLnJ1L3J1L2J0bi9hZHYvMjYuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9u Y2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcp LDQsJzrP8O7k4ujt8/L75TrX5fDy7uLx6ugg5+v+8fw6Jyk7XCIgYWx0PVwi1+Xw 8u7i8eroIOfr/vH8XCIgdGl0bGU9XCLX5fDy7uLx6ugg5+v+8fxcIj4iCgkJCQkr IjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hZHYvMzMuZ2lm XCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0 KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrQ4PHx8vDg6OLg /vH8OicpO1wiIGFsdD1cItDg8fHy8ODo4uD+8fxcIiB0aXRsZT1cItDg8fHy8ODo 4uD+8fxcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1 L2J0bi9hZHYvMzQuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBs YWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt 8/L75TrP4O3qOicpO1wiIGFsdD1cIs/g7epcIiB0aXRsZT1cIs/g7epcIj4iCgkJ CQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hZHYvMzUu Z2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRU ZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrL7u/t8yDu 8iDx7OX14DonKTtcIiBhbHQ9XCLL7u/t8yDu8iDx7OX14FwiIHRpdGxlPVwiy+7v 7fMg7vIg8ezl9eBcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9hZHYvMzYuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9 XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP 8O7k4ujt8/L75TrP7uTs6OPo4uD+OicpO1wiIGFsdD1cIs/u5Ozo4+ji4P5cIiB0 aXRsZT1cIs/u5Ozo4+ji4P5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2lt Zy5tYWlsLnJ1L3J1L2J0bi9hZHYvMzcuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9u Y2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcp LDQsJzrP8O7k4ujt8/L75TrE8+zg/jonKTtcIiBhbHQ9XCLE8+zg/lwiIHRpdGxl PVwixPPs4P5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1 L3J1L2J0bi9hZHYvMzguZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJy ZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k 4ujt8/L75TrL/uHr/jonKTtcIiBhbHQ9XCLL/uHr/lwiIHRpdGxlPVwiy/7h6/5c Ij4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9h ZHYvNDUuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrP 7uTg4uvl7TonKTtcIiBhbHQ9XCLP7uTg4uvl7VwiIHRpdGxlPVwiz+7k4OLr5e1c Ij4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9h ZHYvNDYuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrQ ++Tg/jonKTtcIiBhbHQ9XCLQ++Tg/lwiIHRpdGxlPVwi0Pvk4P5cIj4iCgkJCQkr IjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hZHYvNDcuZ2lm XCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0 KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrR5en34PEg8ODx 7+vg9/Px/DonKTtcIiBhbHQ9XCLR5en34PEg8ODx7+vg9/Px/FwiIHRpdGxlPVwi 0eXp9+DxIPDg8e/r4Pfz8fxcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2lt Zy5tYWlsLnJ1L3J1L2J0bi9hZHYvNDguZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9u Y2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcp LDQsJzrP8O7k4ujt8/L75TrH6/7x/DonKTtcIiBhbHQ9XCLH6/7x/FwiIHRpdGxl PVwix+v+8fxcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1 L3J1L2J0bi9hZHYvNDkuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJy ZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k 4ujt8/L75TrS7vjt6PI6Jyk7XCIgYWx0PVwi0u747ejyXCIgdGl0bGU9XCLS7vjt 6PJcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0 bi9hZHYvNTAuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNl U2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L7 5TrR8+zg8fjl8fLi6OU6Jyk7XCIgYWx0PVwi0fPs4PH45fHy4ujlXCIgdGl0bGU9 XCLR8+zg8fjl8fLi6OVcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9hZHYvNTcuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xp Y2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQs JzrP8O7k4ujt8/L75TrW5evz/jonKTtcIiBhbHQ9XCLW5evz/lwiIHRpdGxlPVwi 1uXr8/5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1 L2J0bi9hZHYvNTguZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBs YWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt 8/L75TrP7vbl6+7i4OvoOicpO1wiIGFsdD1cIs/u9uXr7uLg6+hcIiB0aXRsZT1c Is/u9uXr7uLg6+hcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9hZHYvNTkuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9 XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP 8O7k4ujt8/L75TrK8ODx7vLq4DonKTtcIiBhbHQ9XCLK8ODx7vLq4FwiIHRpdGxl PVwiyvDg8e7y6uBcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9hZHYvNjAuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xpY2s9 XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQsJzrP 8O7k4ujt8/L75TrA7ePl6+735eo6Jyk7XCIgYWx0PVwiwO3j5evu9+XqXCIgdGl0 bGU9XCLA7ePl6+735epcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9hZHYvNjEuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xp Y2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQs JzrP8O7k4ujt8/L75TrP7uTu5/Do8uXr/O3uOicpO1wiIGFsdD1cIs/u5O7n8Ojy 5ev87e5cIiB0aXRsZT1cIs/u5O7n8Ojy5ev87e5cIj4iCgkJCQkrIjxpbWcgc3Jj PVwiaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hZHYvNjIuZ2lmXCIgY2xhc3M9 XCJzbWlsZVwiIG9uY2xpY2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDQsJzrP8O7k4ujt8/L75TrG8/46Jyk7XCIgYWx0PVwixvP+ XCIgdGl0bGU9XCLG8/5cIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9hZHYvNjkuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xp Y2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQs JzrP8O7k4ujt8/L75TrR7PP54P7x/DonKTtcIiBhbHQ9XCLR7PP54P7x/FwiIHRp dGxlPVwi0ezz+eD+8fxcIj4iCgkJCQkrIjxpbWcgc3JjPVwiaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9hZHYvNzAuZ2lmXCIgY2xhc3M9XCJzbWlsZVwiIG9uY2xp Y2s9XCJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDQs JzrP8O7k4ujt8/L75TrR8vvk7e46Jyk7XCIgYWx0PVwi0fL75O3uXCIgdGl0bGU9 XCLR8vvk7e5cIj4iCgkJCQkrIjwvZGl2PiIKCQkJKyI8L2Rpdj4iCgkJCSsiPC9k aXY+IgoJCQkKCQkrIjxkaXYgY2xhc3M9XCJtdDUgbWI1XCI+PGlucHV0IGlkPVwi aGlkZV9jb21tZW50XyIraWQrIlwiIG5hbWU9XCJoaWRlX2NvbW1lbnRcIiB0eXBl PVwiQ2hlY2tib3hcIiBzdHlsZT1cInZlcnRpY2FsLWFsaWduOm1pZGRsZTtcIiIr KGRlZmF1bHRfaGlkZT8iIGNoZWNrZWQiOiIiKSsiPjxsYWJlbCBmb3I9XCJoaWRl X2NvbW1lbnRfIitpZCsiXCI+8erw+/L8IP3y7vIg6u7s7OXt8uDw6Ok8L2xhYmVs PjwvZGl2PiIKCQkrIjxpbnB1dCBpZD1cInN1Yl9idXRcIiB0eXBlPVwic3VibWl0 XCIgdmFsdWU9XCLE7uHg4ujy/FwiIG5hbWU9XCJhZGRjb21tZW50XCIgb25jbGlj az1cInJldHVybiBzdWJtaXRfY29tbWVudCgpXCIgY2xhc3M9c18xMDA+Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgb25jbGljaz1cInJldHVybiBjbG9zZV9hZGRf Y29tbWVudCgpO1wiIGhyZWY9XCIvbWFpbC9tYWx2b181OS82QTBGQjk4QzVGRDRE MTVDLmh0bWw/dGhyZWFkPTAmYW1wO3BhZ2U9MSZhbXA7c2tpcD0wI2NvbW1lbnRf IitpZCsiXCI+x+Dq8Pvy/DwvYT4iCiAgICAgICAgKyI8L3RkPjwvdHI+PC9mb3Jt PjwvdGFibGU+IjsKCiAgICBjb250X2Rpdi5pbm5lckhUTUw9SFRNTDsKICAgIHBh cmVudF9vYmouYXBwZW5kQ2hpbGQoY29udF9kaXYpOwogICAgaWYoaWQhPSdiZWdp bicgJiYgaWQhPSdlbmQnKSB7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3Vi amVjdF90ZXh0JykudmFsdWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Ympl Y3RfdGV4dF8nK2lkKS52YWx1ZTsKCWlmIChjaXQ9PSd5ZXMnKSB7CgkgICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lbnRfdGV4dCcpLnZhbHVlPWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50X3RleHRfJytpZCkudmFsdWUrJ1xu XG4nOwoJfQogICAgfQogICAgcmVmb2N1cygpOwogICAgcmV0dXJuIGZhbHNlOwp9 CgovL9Ph8ODy/CDk6ODr7uMg7eDv6PHg7ej/IOru7Ozl7fLg8Oj/CmZ1bmN0aW9u IGNsb3NlX2FkZF9jb21tZW50KCkKewogICAgdmFyIGFkZD1kb2N1bWVudC5nZXRF bGVtZW50QnlJZCgiY29udF9kaXZfY2hlY2siKTsKICAgIGlmKGFkZCkgewoJLy9j aGVja192ZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjaGVja192ZWwucGFyZW50 Tm9kZS5maXJzdENoaWxkKTsKCWFkZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFk ZCk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCi0tPgo8L3NjcmlwdD4KCjxz Y3JpcHQ+Cgpkb2N1bWVudC5vbmtleWRvd24gPSBjaGVja0N0cmxFbnRlcjsKZnVu Y3Rpb24gY2hlY2tDdHJsRW50ZXIoZXZ0KSB7CiAgICB2YXIgZXZ0ID0gZXZ0IHx8 IGV2ZW50OwogICAgaWYgKGV2dC5jdHJsS2V5ICYmIGV2dC5rZXlDb2RlID09PSAx MykgewogICAgICAgICAgICBjaGVja01lc3NhZ2UoKTsKICAgIH0KfQoKZnVuY3Rp b24gY2hlY2tTdWJCdXRzKCkgewppZihnZWJpKCdjb21tZW50X3RleHQnKSl7Cgl2 YXIgc3R0cyA9IDE7CglzdHRzID0gKGdlYmkoJ2NvbW1lbnRfdGV4dCcpLnZhbHVl Lmxlbmd0aCA8PSAwKTsKCWdlYmkoJ3N1Yl9idXQnKS5kaXNhYmxlZCA9IHN0dHM7 fQogfQoKIApmdW5jdGlvbiBjaGVja01lc3NhZ2UoKSB7CgkgICB2YXIgbGVuMiA9 IGdlYmkoJ2NvbW1lbnRfdGV4dCcpLnZhbHVlLmxlbmd0aDsKCSAgICBpZiAobGVu Mj09MCkgewoJICAgICAgIHJldHVybiBmYWxzZTsKCSAgIH0gZWxzZSB7CgkgICAg ICAgZ2ViaSgnZHVwZGF0ZScpLnN1Ym1pdCgpOwoJICAgfQoJfQoJCnZhciBjdXJh cmVhaGVpZ2h0PTEyMDsKCgpmdW5jdGlvbiBjaGVja0hlaWdodChvYmopewoJaWYg KGlzSUUpewoJb2JqLnN0eWxlLm92ZXJmbG93PSdoaWRkZW4nOwoJdmFyIGN1ckhl aWdodCA9IG9iai5jcmVhdGVUZXh0UmFuZ2UoKS5ib3VuZGluZ0hlaWdodDsKCWlm KGN1ckhlaWdodC1jdXJhcmVhaGVpZ2h0PDApCgl7CgkJb2JqLnN0eWxlLmhlaWdo dCA9IGN1cmFyZWFoZWlnaHQrJ3B4JzsKCX1lbHNlewoJb2JqLnN0eWxlLmhlaWdo dD1jdXJIZWlnaHQrMzUrJ3B4JzsJfQkKCX0JCn0KCgkKCjwvc2NyaXB0Pgo8dGFi bGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wIHdpZHRoPTEw MCU+Cjx0cj4KCTx0ZCBub3dyYXAgd2lkdGg9IjEwMCUiPgogICAgCgkgICAgPGEg bmFtZT0iY29tbWVudF9iZWdpbiI+PC9hPgoJICAgIDxhIG9uY2xpY2s9InJldHVy biBzaG93X2FkZF9jb21tZW50KCdiZWdpbicsMCwnaHR0cDovL2Jsb2dzLm1haWwu cnUvbWFpbC9tYWx2b181OS82QTBGQjk4QzVGRDREMTVDLmh0bWw/cGFnZT0nKTsi IGhyZWY9Ii9tYWlsL21hbHZvXzU5LzZBMEZCOThDNUZENEQxNUMuaHRtbD90aHJl YWQ9MCZhbXA7cGFnZT0xJmFtcDtza2lwPTAmYmVnaW5fcmVwbHk9MSNjb21tZW50 X2JlZ2luIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNv X2NvbW1lbnRzLnBuZyIgY2xhc3M9IklFcG5nIiB3aWR0aD0xNiBoZWlnaHQ9MTYg YWxpZ249YWJzbWlkZGxlIGJvcmRlcj0wPjwvYT4mbmJzcDsmbmJzcDs8YSBpZD1s X2JlZ2luIG9uY2xpY2s9InJldHVybiBzaG93X2FkZF9jb21tZW50KCdiZWdpbics MCwnaHR0cDovL2Jsb2dzLm1haWwucnUvbWFpbC9tYWx2b181OS82QTBGQjk4QzVG RDREMTVDLmh0bWw/cGFnZT0nKTsiIGhyZWY9Ii9tYWlsL21hbHZvXzU5LzZBMEZC OThDNUZENEQxNUMuaHRtbD90aHJlYWQ9MCZhbXA7cGFnZT0xJmFtcDtza2lwPTAm YmVnaW5fcmVwbHk9MSNjb21tZW50X2JlZ2luIj48Yj7N4O/o8eDy/CDq7uzs5e3y 4PDo6TwvYj48L2E+CiAgICAKICAgIAoJCiAgICAKCQoJCgkJCgkJCQoJCQoJCgkK CTwvdGQ+CgkKCTx0ZCB2YWxpZ249InRvcCIgc3R5bGU9InBhZGRpbmctbGVmdDox NXB4OyI+CQoJCQoKCjxkaXYgY2xhc3M9InJhdGluZ19ibG9jayIgaWQ9InZvdGVf cmF0aW5nIj4KICAgPHRhYmxlIGNsYXNzPSJ2b3RpbmciIGlkPSJ2b3RlX3JhdGlu Z190YWJsZSIgY2VsbHNwYWNpbmc9IjMiPjx0cj4KICAgICAgICA8dGQgY2xhc3M9 InByMjAiIG5vd3JhcD48YSBocmVmPSJodHRwOi8vYmxvZ3MubWFpbC5ydS9tYWls L21hbHZvXzU5L3JhdGluZz9Qb3N0SUQ9NkEwRkI5OEM1RkQ0RDE1QyI+PGI+0OXp 8ujt4zwvYj48L2E+PC90ZD4KICAgICAgICA8dGQgbm93cmFwPjxkaXYgaWQ9InZv dGVfNkEwRkI5OEM1RkQ0RDE1QyI+CgkJCTxiPjY8L2I+CiAgICAgICAgCgk8L2Rp dj48L3RkPgogICAgPC90cj48L3RhYmxlPgo8L2Rpdj4KCgoKCQoJPC90ZD4KCQo8 L3RyPgo8dHI+CiAgICA8dGQgY29sc3Bhbj0zIGNsYXNzPWZfcSBpZD1hZGRfYmVn aW4+CiAgICAKICAgIDwvdGQ+CjwvdHI+CjwvdGFibGU+CjxpbWcgc3JjPWh0dHA6 Ly9pbWcubWFpbC5ydS8wLmdpZiB3aWR0aD0xIGhlaWdodD0xNT48YnI+CjwhLS0g QkVHSU46IGNvbW1lbnRzIC0tPgoKCgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgou dG9kYXlETCB7CiAgICBtYXJnaW46IDAgMCAxNXB4OwogICAgb3ZlcmZsb3c6IGhp ZGRlbjsKfQoudG9kYXlETG5ld3MgLmR0IHsKICAgIHBhZGRpbmc6IDAgIWltcG9y dGFudDsKfQoudG9kYXlETCAuZHQgewogICAgY29sb3I6ICM5OTk5OTkgIWltcG9y dGFudDsKICAgIGZsb2F0OiBsZWZ0OwogICAgZm9udC1mYW1pbHk6IFRhaG9tYTsK ICAgIG1pbi1oZWlnaHQ6IDE4cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAg cGFkZGluZzogMCA1cHggMCAyMHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsK fQoudG9kYXlETG5ld3MgLmRkIHsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKfQou dG9kYXlETCAuZGQgewogICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAg IG92ZXJmbG93OiBoaWRkZW47CiAgICBwYWRkaW5nOiAwIDgwcHggMCAxNXB4Owog ICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci50b2RheURMIC5idWJibGUgewogICAg bWFyZ2luLXRvcDogLTJweDsKfQoKLmF2YTQ1IHsKICAgIGJhY2tncm91bmQtY29s b3I6ICNFNkVGRkU7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2Vu dGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGN1cnNv cjogcG9pbnRlcjsKICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWJsb2NrOwogICAg ZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZGlzcGxheTogLW1vei1pbmxpbmUt Ym94OwogICAgZm9udC1zaXplOiAwOwogICAgaGVpZ2h0OiA0NXB4OwogICAgbGlu ZS1oZWlnaHQ6IDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB2ZXJ0aWNh bC1hbGlnbjogbWlkZGxlOwogICAgd2lkdGg6IDQ1cHg7Cn0KLmF2YTkwIHtkaXNw bGF5Oi1tb3otaW5saW5lLWJsb2NrOyBkaXNwbGF5OmlubGluZS1ibG9jazsgY3Vy c29yOiBwb2ludGVyOyBmb250LXNpemU6MDsgbGluZS1oZWlnaHQ6MDsgd2lkdGg6 IDkwcHg7IGhlaWdodDogOTBweDsgYmFja2dyb3VuZC1jb2xvcjojZTZlZmZlOyB0 ZXh0LWFsaWduOiBjZW50ZXI7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGJhY2tn cm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246IGNl bnRlcjt9CgppLmltZyB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBm b250LXNpemU6IDA7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBsaW5lLWhlaWdodDog MDsKICAgIG1hcmdpbi1yaWdodDogNHB4OwogICAgdmVydGljYWwtYWxpZ246IG1p ZGRsZTsKICAgIHdpZHRoOiAxNnB4Owp9Ci5pY29CdWJibGVTbWFsbCB7CiAgICBi YWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDovL2ltZy5tYWlsLnJ1L3IvbXkvaV9i YWJsU21hbGwuZ2lmKTsKICAgIGhlaWdodDogMTNweCAhaW1wb3J0YW50OwogICAg d2lkdGg6IDEzcHggIWltcG9ydGFudDsKfQouYXZhX2JvcmQgewogICAgYm9yZGVy OjFweCBzb2xpZCAjREFEQ0U1OwogICAgcGFkZGluZzo1cHg7IAogICAgd2lkdGg6 OTBweDsKfQoKLyrPzszFzd/S3CDCIGJsb2dzLmNzcyovCnRhYmxlLnRyZWQgdGQu Y29udCB7CiAgICBib3JkZXItdG9wOm5vbmU7CiAgICBwYWRkaW5nOjAgMTNweDsg ICAgCn0KPC9zdHlsZT4KCgoKPCEtLSBFTkQ6IGNvbW1lbnRzIC0tPgoKCgoKCgoK CgoKCjxkaXYgaWQ9ImNvbW1lbnRfZm9ybXNfY29udGFpbmVyIj4KICAgIDxkaXYg Y2xhc3M9ImNvbnRfZGl2IiBpZD0iY29tbWVudF9mb3JtX2NvbW1vbiIgb25tb3Vz ZW1vdmU9ImNoZWNrU3ViQnV0cygpOyBjaGVja0hlaWdodChnZWJpKCdjb21tZW50 X3RleHQnKSk7Ij4KICAgICAgICA8Zm9ybSBuYW1lPSJyZXBseSIgYWN0aW9uPSIv bWFpbC9tYWx2b181OS82QTBGQjk4QzVGRDREMTVDLmh0bWw/dGhyZWFkPTAmYW1w O3BhZ2U9MSZhbXA7c2tpcD0wIiBtZXRob2Q9IlBPU1QiIG9uc3VibWl0PSJyZXR1 cm4gYWRkX2NvbW1lbnQodGhpcyk7IiBpZD0iZHVwZGF0ZSI+CgkJCTxpbnB1dCB0 eXBlPSJoaWRkZW4iIGlkPSJtbmEiIG5hbWU9Im1uYSIgdmFsdWU9IiI+CgkJCTxp bnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJtbmIiIG5hbWU9Im1uYiIgdmFsdWU9IiI+ CiAgICAgICAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9 IjAiIGJvcmRlcj0iMCIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDhweCI+CiAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAg ICAgICA8dGQgd2lkdGg9IjUwJSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxz ZWxlY3Qgc3R5bGU9IndpZHRoOiAxMDAlIiBvbmNoYW5nZT0iY2hhbmdlX3NlbGVj dGVkX29wdCh0aGlzKSIgbmFtZT0iRG9BdXRoIj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAiIHNlbGVjdGVkPsDt7u3o7O3uPC9v cHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVl PSIxIj7P7uv85+7i4PLl6/w8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAg ICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAg ICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDAgMTVweCAwIDIwcHgiPsjs /zombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3RkPgogICAg ICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTAlIj4KICAgICAgICAgICAgICAg ICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2Vs bHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+PHRyPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHRkIHdpZHRoPSI5MCUiIGNsYXNzPSJucCI+PGlucHV0IHR5cGU9 InRleHQiIGNsYXNzPSJ3XzEwMCIgIG5hbWU9IkxvZ2luIiB2YWx1ZT0ieW1ib2V2 IiAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9 ImRpc3BsYXk6IG5vbmUiIGlkPSJoaWRlc190ZCIgd2lkdGg9IjEwJSIgY2xhc3M9 Im5wIj48c2VsZWN0IG5hbWU9IkRvbWFpbiI+PG9wdGlvbiB2YWx1ZT0ibWFpbC5y dSIgIFNFTEVDVEVEPkBtYWlsLnJ1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iaW5i b3gucnUiID5AaW5ib3gucnU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJiay5ydSIg PkBiay5ydTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Imxpc3QucnUiID5AbGlzdC5y dTwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAg IDwvdHI+PC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAg ICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDx0ciBzdHlsZT0iZGlzcGxh eTogbm9uZSIgaWQ9ImhpZGVzX3RyIj4KICAgICAgICAgICAgICAgICAgICA8dGQ+ CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICZu YnNwOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwv dGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwIDE1 cHggMCAyMHB4Ij7P4PDu6/w6PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQg bm93cmFwPjxpbnB1dCB0eXBlPSJwYXNzd29yZCIgY2xhc3M9IndfMTAwIiBuYW1l PSJQYXNzd29yZCI+PC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAg ICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MCUi PjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdpZHRoPSIxNTAi IGhlaWdodD0iMSIgLz48YnIgLz48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0 ZD48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIg aGVpZ2h0PSIxIiAvPjxiciAvPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRk IHdpZHRoPSI1MCUiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYi IHdpZHRoPSIxNTAiIGhlaWdodD0iMSIgLz48YnIgLz48L3RkPgogICAgICAgICAg ICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L3RhYmxl PgogICAgICAgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5n PSIwIiBib3JkZXI9IjAiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+ 0uXs4DombmJzcDsmbmJzcDsmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAg IDx0ZCB3aWR0aD0xMDAlPjxpbnB1dCB0eXBlPXRleHQgaWQ9InN1YmplY3RfdGV4 dCIgbmFtZT0iU3ViamVjdCIgdmFsdWU9IlJlOiDB4Oru8uAiIHN0eWxlPSJ3aWR0 aDoxMDAlIj48L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAg ICAgIDx0ciB2YWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgPHRkPtLl 6vHyOjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjx0ZXh0YXJlYSBpZD0i Y29tbWVudF90ZXh0IiBuYW1lPSJDb21tZW50IiBzdHlsZT0id2lkdGg6MTAwJTsg aGVpZ2h0OjEyMHB4OyIgcm93cz0iNyIgb25jbGljaz0iY2hlY2tTdWJCdXRzKCk7 IiBvbmNoYW5nZT0iY2hlY2tTdWJCdXRzKCk7IGNoZWNrSGVpZ2h0KHRoaXMpOyIg b25sb2FkPSJjaGVja1N1YkJ1dHMoKTsiIG9ua2V5cHJlc3M9ImNoZWNrU3ViQnV0 cygpOyIgb25rZXlkb3duPSJjaGVja1N1YkJ1dHMoKTsiIG9ua2V5dXA9ImNoZWNr U3ViQnV0cygpOyBjaGVja0hlaWdodCh0aGlzKTsiIG9uZm9jdXM9ImNoZWNrU3Vi QnV0cygpOyBjaGVja0hlaWdodCh0aGlzKTsiIG9uYmx1cj0iY2hlY2tTdWJCdXRz KCk7IGNoZWNrSGVpZ2h0KHRoaXMpOyIgb25tb3VzZW1vdmU9ImNoZWNrU3ViQnV0 cygpOyBjaGVja0hlaWdodCh0aGlzKTsiPjwvdGV4dGFyZWE+PC90ZD4KICAgICAg ICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8dHIgdmFsaWduPSJ0b3Ai PgogICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgogICAgICAgICAg ICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5 cGU9ImhpZGRlbiIgbmFtZT0icmVwbHl0byIgaWQ9InJlcGx5dG9faW5wdXQiIHZh bHVlPSIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlk ZGVuIiBuYW1lPSJiYWNrIiB2YWx1ZT0iaHR0cDovL2Jsb2dzLm1haWwucnUvbWFp bC9tYWx2b181OS82QTBGQjk4QzVGRDREMTVDLmh0bWw/cGFnZT0iPgogICAgICAg ICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJQcm9L ZXkiIHZhbHVlPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNl bGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiB3aWR0aD0i MTAwJSIgY2xhc3M9Im1iNSIgaWQ9InRibF9zbWlsZV9mb3RvIiBzdHlsZT0iZGlz cGxheTogbm9uZTsiPjx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 ZCBjbGFzcz0iaGlkZSB0YWgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYgaWQ9InNvbWVzbWlsZXlzIiBjbGFzcz0iaW52aXoiPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2lt Zy5tYWlsLnJ1L3J1L2J0bi9zbWlsZS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGlj az0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6 KScpOyIgYWx0PSI6KSIgdGl0bGU9IjopIj4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9i dG4vY3JvY29kaWxlLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNl U2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzpcJ1wnKCknKTsi IGFsdD0iOicnKCkiIHRpdGxlPSI6JycoKSI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUv YnRuL2J1bGxzaGl0LmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNl U2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJyk6LXAnKTsiIGFs dD0iKTotcCIgdGl0bGU9Iik6LXAiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9h ZHYvMzUuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3Rl ZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksNCwnOs/w7uTi6O3z8vvlOsvu7+3z IO7yIPHs5fXgOicpOyIgYWx0PSLL7u/t8yDu8iDx7OX14CIgdGl0bGU9Isvu7+3z IO7yIPHs5fXgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9kYW5jZS5n aWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChn ZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrS4O328/46Jyk7 IiBhbHQ9ItLg7fbz/iIgdGl0bGU9ItLg7fbz/iI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUv cnUvYnRuL2FuaW0vZmlnaHQuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJl cGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo 8O7i4O3t++U6z+7h/P46Jyk7IiBhbHQ9Is/u4fz+IiB0aXRsZT0iz+7h/P4iPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9ibGluay5naWYiIGNsYXNzPSJzbWlsZSIg b25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQn KSwxLCc7KScpOyIgYWx0PSI7KSIgdGl0bGU9IjspIj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5y dS9ydS9idG4vYW1hemVkLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBs YWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzgtMCcpOyIg YWx0PSI4LTAiIHRpdGxlPSI4LTAiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9o ZWFydC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6aGVhcnQ6Jyk7IiBhbHQ9Ijpo ZWFydDoiIHRpdGxlPSI6aGVhcnQ6Ij4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4v bGl2ZS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6Y29vbDonKTsiIGFsdD0iOmNv b2w6IiB0aXRsZT0iOmNvb2w6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vdmlj dG9yeS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6dml2YTonKTsiIGFsdD0iOnZp dmE6IiB0aXRsZT0iOnZpdmE6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vb2su Z2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRleHQo Z2ViaSgnY29tbWVudF90ZXh0JyksMiwnOm9rOicpOyIgYWx0PSI6b2s6IiB0aXRs ZT0iOm9rOiI+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxzcGFuIGNsYXNzPSJ0aXBhbGluayIgaWQ9Imljb3R4dCIgb25jbGljaz0i dG9nZ2xlc21pbGUoKTsiPsLx5SDx7ODp6/sg6CDm5fHy+zwvc3Bhbj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0 ZXh0L2phdmFzY3JpcHQiPgpnZWJpKCdzb21lc21pbGV5cycpLnN0eWxlLmRpc3Bs YXkgPSAnYmxvY2snOwo8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249 InJpZ2h0IiBjbGFzcz0iaGlkZSIgbm93cmFwIHZhbGlnbj0idG9wIj48L3RkPgog ICAgICAgICAgICAgICAgICAgICAgICA8L3RyPjwvdGFibGU+CjxzY3JpcHQgdHlw ZT0idGV4dC9qYXZhc2NyaXB0Ij4KZ2ViaSgndGJsX3NtaWxlX2ZvdG8nKS5zdHls ZS5kaXNwbGF5PScnOwo8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAg PGRpdiBpZD0iYWxsc21pbGV5cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNBQkFEQjM7IGJhY2tncm91 bmQtY29sb3I6d2hpdGU7IG92ZXJmbG93OmF1dG87IG92ZXJmbG93LXk6YXV0bzsg b3ZlcmZsb3cteDpoaWRkZW47IGhlaWdodDo5MHB4OyBwYWRkaW5nOjVweCAxMHB4 IDVweCAxMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp dj7K6+Dx8ej35fHq6OU8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9zbWlsZS5n aWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChn ZWJpKCdjb21tZW50X3RleHQnKSwxLCc6KScpOyIgYWx0PSI6KSIgdGl0bGU9Ijop Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9ibGluay5naWYiIGNsYXNzPSJzbWlsZSIg b25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQn KSwxLCc7KScpOyIgYWx0PSI7KSIgdGl0bGU9IjspIj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1 L2J0bi9sYXVnaHRlci5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFj ZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6LSkpJyk7IiBh bHQ9IjotKSkiIHRpdGxlPSI6LSkpIj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9iZWUu Z2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRleHQo Z2ViaSgnY29tbWVudF90ZXh0JyksMSwnOy1QJyk7IiBhbHQ9IjstUCIgdGl0bGU9 IjstUCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9 Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vY29vbGd1eS5naWYiIGNsYXNzPSJz bWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50 X3RleHQnKSwxLCc4LSknKTsiIGFsdD0iOC0pIiB0aXRsZT0iOC0pIj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9iaWdncmluLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNr PSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzot RCcpOyIgYWx0PSI6LUQiIHRpdGxlPSI6LUQiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRu L3BpZy5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCd9Om8pJyk7IiBhbHQ9In06byki IHRpdGxlPSJ9Om8pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9iYXppbGlvLmdpZiIg Y2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmko J2NvbW1lbnRfdGV4dCcpLDEsJyQtKScpOyIgYWx0PSIkLSkiIHRpdGxlPSIkLSki PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRw Oi8vaW1nLm1haWwucnUvcnUvYnRuL2htLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNs aWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEs JzotXCcnKTsiIGFsdD0iOi0nIiB0aXRsZT0iOi0nIj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1 L2J0bi9kaXNzYXBvaW50ZWQuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJl cGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOi0oJyk7 IiBhbHQ9IjotKCIgdGl0bGU9IjotKCI+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vdGVh cnMuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRl eHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOC0oJyk7IiBhbHQ9IjgtKCIgdGl0 bGU9IjgtKCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBz cmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vY3J5LmdpZiIgY2xhc3M9InNt aWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRf dGV4dCcpLDEsJzpcJygnKTsiIGFsdD0iOicoIiB0aXRsZT0iOicoIj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9jcm9jb2RpbGUuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xp Y2s9InJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwn OlwnXCcoKScpOyIgYWx0PSI6JycoKSIgdGl0bGU9IjonJygpIj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9yZWFsbHkuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJl cGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnJDotbycp OyIgYWx0PSIkOi1vIiB0aXRsZT0iJDotbyI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4v b28uZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRl eHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnKDotbycpOyIgYWx0PSIoOi1vIiB0 aXRsZT0iKDotbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlt ZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW1hemVkLmdpZiIgY2xh c3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDEsJzgtMCcpOyIgYWx0PSI4LTAiIHRpdGxlPSI4LTAiPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2FhYS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGlj az0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc4 LVtvXScpOyIgYWx0PSI4LVtvXSIgdGl0bGU9IjgtW29dIj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1 L3J1L2J0bi9idWxsc2hpdC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVw bGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCcpOi1wJyk7 IiBhbHQ9Iik6LXAiIHRpdGxlPSIpOi1wIj4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9h bmdyeS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCcpOi0oJyk7IiBhbHQ9Iik6LSgi IHRpdGxlPSIpOi0oIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9ycnIuZ2lmIiBjbGFz cz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29t bWVudF90ZXh0JyksMSwnKTotJCcpOyIgYWx0PSIpOi0kIiB0aXRsZT0iKTotJCI+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6 Ly9pbWcubWFpbC5ydS9ydS9idG4vemxvcmFkc3R2by5naWYiIGNsYXNzPSJzbWls ZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3Rl eHQnKSwxLCcpOi1EJyk7IiBhbHQ9Iik6LUQiIHRpdGxlPSIpOi1EIj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9iaWdhbmdlci5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGlj az0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6 LUUnKTsiIGFsdD0iOi1FIiB0aXRsZT0iOi1FIj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0 bi9kZXZpbC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVj dGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwxLCc6ZGV2aWw6Jyk7IiBhbHQ9 IjpkZXZpbDoiIHRpdGxlPSI6ZGV2aWw6Ij4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi92 YW1waXJlLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0 ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzp2YW1waXJlOicpOyIgYWx0 PSI6dmFtcGlyZToiIHRpdGxlPSI6dmFtcGlyZToiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUv YnRuL3BsdWcuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxl Y3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOi1dWycpOyIgYWx0PSI6 LV1bIiB0aXRsZT0iOi1dWyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vZGV0emwuZ2lm IiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRleHQoZ2Vi aSgnY29tbWVudF90ZXh0JyksMSwnOi18Jyk7IiBhbHQ9IjotfCIgdGl0bGU9Ijot fCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0 dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vc2NlcHRpYy5naWYiIGNsYXNzPSJzbWls ZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3Rl eHQnKSwxLCdCLWonKTsiIGFsdD0iQi1qIiB0aXRsZT0iQi1qIj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9zaHkuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxh Y2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMSwnOn5vJyk7IiBh bHQ9Ijp+byIgdGl0bGU9Ijp+byI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYXNzLmdp ZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdl YmkoJ2NvbW1lbnRfdGV4dCcpLDEsJyhfSV8pJyk7IiBhbHQ9IihfSV8pIiB0aXRs ZT0iKF9JXykiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2hlYXJ0LmdpZiIgY2xhc3M9 InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1l bnRfdGV4dCcpLDEsJzpoZWFydDonKTsiIGFsdD0iOmhlYXJ0OiIgdGl0bGU9Ijpo ZWFydDoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2tpc3MuZ2lmIiBjbGFzcz0ic21p bGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90 ZXh0JyksMSwnOi0qJyk7IiBhbHQ9IjotKiIgdGl0bGU9IjotKiI+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFp bC5ydS9ydS9idG4vc2xlZXB5LmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJy ZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDEsJzpzbGVl cHk6Jyk7IiBhbHQ9IjpzbGVlcHk6IiB0aXRsZT0iOnNsZWVweToiPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8ZGl2Psbl8fL7PGJyIC8+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9y dS9idG4vbGl2ZS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNl bGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6Y29vbDonKTsiIGFs dD0iOmNvb2w6IiB0aXRsZT0iOmNvb2w6Ij4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi92 aWN0b3J5LmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0 ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDIsJzp2aXZhOicpOyIgYWx0PSI6 dml2YToiIHRpdGxlPSI6dml2YToiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL29rLmdp ZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdl YmkoJ2NvbW1lbnRfdGV4dCcpLDIsJzpvazonKTsiIGFsdD0iOm9rOiIgdGl0bGU9 IjpvazoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2tvemFfbGVmdC5naWYiIGNsYXNz PSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21t ZW50X3RleHQnKSwyLCc6eW9sOicpOyIgYWx0PSI6eW9sOiIgdGl0bGU9Ijp5b2w6 Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9rb3phX3JpZ2h0LmdpZiIgY2xhc3M9InNt aWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRf dGV4dCcpLDIsJzp5b3I6Jyk7IiBhbHQ9Ijp5b3I6IiB0aXRsZT0iOnlvcjoiPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2RpZS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGlj az0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6 c3V4eDonKTsiIGFsdD0iOnN1eHg6IiB0aXRsZT0iOnN1eHg6Ij4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9maW5nZXJ1cC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0i cmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6dGhp bms6Jyk7IiBhbHQ9Ijp0aGluazoiIHRpdGxlPSI6dGhpbms6Ij4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9rdWtlcy5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVw bGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwyLCc6ZmlndTon KTsiIGFsdD0iOmZpZ3U6IiB0aXRsZT0iOmZpZ3U6Ij4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1 L2J0bi9maXN0LmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDIsJzprdWxhazonKTsiIGFs dD0iOmt1bGFrOiIgdGl0bGU9IjprdWxhazoiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRu L2Z1Y2suZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3Rl ZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMiwnOmZ1Y2s6Jyk7IiBhbHQ9Ijpm dWNrOiIgdGl0bGU9IjpmdWNrOiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk aXY+wO3o7Ojw7uLg7e375TxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0v YW5nZWwuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3Rl ZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U6wO3j 5evu9+XqOicpOyIgYWx0PSLA7ePl6+735eoiIHRpdGxlPSLA7ePl6+735eoiPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2FuaW0vYXBwbC5naWYiIGNsYXNzPSJzbWlsZSIg b25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQn KSwzLCc6wO3o7Ojw7uLg7e375TrA7+vu5Ojx7OXt8vs6Jyk7IiBhbHQ9IsDv6+7k 6PHs5e3y+yIgdGl0bGU9IsDv6+7k6PHs5e3y+yI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9i dG4vYW5pbS9iZWF1dHkuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxh Y2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo8O7i 4O3t++U6yvDg8e7y6uA6Jyk7IiBhbHQ9Isrw4PHu8urgIiB0aXRsZT0iyvDg8e7y 6uAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJo dHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0vYmVlci5naWYiIGNsYXNzPSJz bWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50 X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrP6OLuOicpOyIgYWx0PSLP6OLuIiB0 aXRsZT0iz+ji7iI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlt ZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9ib29rLmdpZiIg Y2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmko J2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOtfo8uD+OicpOyIgYWx0 PSLX6PLg/iIgdGl0bGU9Itfo8uD+Ij4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmlt L2NvdWxkLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0 ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOsy4 8Oft8zonKTsiIGFsdD0izLjw5+3zIiB0aXRsZT0izLjw5+3zIj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9hbmltL2NyeS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0i cmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o 7Ojw7uLg7e375TrQ++Tg/jonKTsiIGFsdD0i0Pvk4P4iIHRpdGxlPSLQ++Tg/iI+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6 Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9kYW5jZS5naWYiIGNsYXNzPSJzbWls ZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3Rl eHQnKSwzLCc6wO3o7Ojw7uLg7e375TrS4O328/46Jyk7IiBhbHQ9ItLg7fbz/iIg dGl0bGU9ItLg7fbz/iI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9kZXZpbC5n aWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChn ZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg7e375TrX5fDy7uLx6ugg 5+v+8fw6Jyk7IiBhbHQ9Itfl8PLu4vHq6CDn6/7x/CIgdGl0bGU9Itfl8PLu4vHq 6CDn6/7x/CI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBz cmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9lYXQuZ2lmIiBjbGFz cz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29t bWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U6xvP+OicpOyIgYWx0PSLG8/4i IHRpdGxlPSLG8/4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0vZmlnaHQuZ2lm IiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3RlZFRleHQoZ2Vi aSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U6z+7h/P46Jyk7IiBh bHQ9Is/u4fz+IiB0aXRsZT0iz+7h/P4iPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fu aW0vZmluZ2FsLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvl Os/u4ejr6DonKTsiIGFsdD0iz+7h6OvoIiB0aXRsZT0iz+7h6OvoIj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9hbmltL2Zsb3dyLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNs aWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMs JzrA7ejs6PDu4uDt7fvlOsTg8P4g9uLl8u735eo6Jyk7IiBhbHQ9IsTg8P4g9uLl 8u735eoiIHRpdGxlPSLE4PD+IPbi5fLu9+XqIj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0 bi9hbmltL2dnLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2Vs ZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvl OtHs5f7x/DonKTsiIGFsdD0i0ezl/vH8IiB0aXRsZT0i0ezl/vH8Ij4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5t YWlsLnJ1L3J1L2J0bi9hbmltL2dnMi5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGlj az0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6 wO3o7Ojw7uLg7e375TrR7OX+8fwg6CDv6+D38zonKTsiIGFsdD0i0ezl/vH8IOgg 7+vg9/MiIHRpdGxlPSLR7OX+8fwg6CDv6+D38yI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9i dG4vYW5pbS9naWZ0LmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNl U2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt 7fvlOs/u5ODw7uo6Jyk7IiBhbHQ9Is/u5ODw7uoiIHRpdGxlPSLP7uTg8O7qIj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDov L2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmltL2h1bmdyeS5naWYiIGNsYXNzPSJzbWls ZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3Rl eHQnKSwzLCc6wO3o7Ojw7uLg7e375TrC7vD38zonKTsiIGFsdD0iwu7w9/MiIHRp dGxlPSLC7vD38yI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlt ZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9raXNzLmdpZiIg Y2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmko J2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOtbl6/P+OicpOyIgYWx0 PSLW5evz/iIgdGl0bGU9Itbl6/P+Ij4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmlt L2xvdmUuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9InJlcGxhY2VTZWxlY3Rl ZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt6Ozo8O7i4O3t++U6y/7h 6/46Jyk7IiBhbHQ9Isv+4ev+IiB0aXRsZT0iy/7h6/4iPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUv cnUvYnRuL2FuaW0vcGlzdG9sZXQuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9 InJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt 6Ozo8O7i4O3t++U6x+Dx8vDl6/46Jyk7IiBhbHQ9Isfg8fLw5ev+IiB0aXRsZT0i x+Dx8vDl6/4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0vcG9pc29uLmdpZiIg Y2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmko J2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOsL77+XpIP/k8zonKTsi IGFsdD0iwvvv5ekg/+TzIiB0aXRsZT0iwvvv5ekg/+TzIj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1 L3J1L2J0bi9hbmltL3JhaW5ib3cuZ2lmIiBjbGFzcz0ic21pbGUiIG9uY2xpY2s9 InJlcGxhY2VTZWxlY3RlZFRleHQoZ2ViaSgnY29tbWVudF90ZXh0JyksMywnOsDt 6Ozo8O7i4O3t++U6y/P35efg8O3uOicpOyIgYWx0PSLL8/fl5+Dw7e4iIHRpdGxl PSLL8/fl5+Dw7e4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2FuaW0vcmVkLmdpZiIg Y2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmko J2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOtHs8/ng/vH8OicpOyIg YWx0PSLR7PP54P7x/CIgdGl0bGU9ItHs8/ng/vH8Ij4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1 L2J0bi9hbmltL3NhZC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFj ZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg 7e375TrQ4PHx8vDg6OLg/vH8OicpOyIgYWx0PSLQ4PHx8vDg6OLg/vH8IiB0aXRs ZT0i0ODx8fLw4Oji4P7x/CI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9zaW5n LmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0 KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOs/u/jonKTsi IGFsdD0iz+7+IiB0aXRsZT0iz+7+Ij4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmlt L3NrdWthLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0 ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOtHq 8/fg/jonKTsiIGFsdD0i0erz9+D+IiB0aXRsZT0i0erz9+D+Ij4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9hbmltL3NsZWVwLmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNr PSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA 7ejs6PDu4uDt7fvlOsfg8fvv4P46Jyk7IiBhbHQ9Isfg8fvv4P4iIHRpdGxlPSLH 4PH77+D+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNy Yz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0bi9hbmltL3NtaWxlLmdpZiIgY2xh c3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdlYmkoJ2Nv bW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOtPr++Hg/vH8OicpOyIgYWx0 PSLT6/vh4P7x/CIgdGl0bGU9ItPr++Hg/vH8Ij4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3J1L2J0 bi9hbmltL3Rvbmd1ZS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFj ZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6wO3o7Ojw7uLg 7e375TrP7urg5/vi4P4g/+f76jonKTsiIGFsdD0iz+7q4Of74uD+IP/n++oiIHRp dGxlPSLP7urg5/vi4P4g/+f76iI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS92 aWN0b3J5LmdpZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0 ZWRUZXh0KGdlYmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOlBl YWNlITonKTsiIGFsdD0iUGVhY2UhIiB0aXRsZT0iUGVhY2UhIj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3J1L2J0bi9hbmltL3dvbmRlci5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGlj az0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSwzLCc6 wO3o7Ojw7uLg7e375TrT5Oji6//+8fw6Jyk7IiBhbHQ9ItPk6OLr//7x/CIgdGl0 bGU9ItPk6OLr//7x/CI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9ydS9idG4vYW5pbS9ibGV3Lmdp ZiIgY2xhc3M9InNtaWxlIiBvbmNsaWNrPSJyZXBsYWNlU2VsZWN0ZWRUZXh0KGdl YmkoJ2NvbW1lbnRfdGV4dCcpLDMsJzrA7ejs6PDu4uDt7fvlOtLu+O3o8jonKTsi IGFsdD0i0u747ejyIiB0aXRsZT0i0u747ejyIj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGRpdj7P8O7k4ujt8/L75TxiciAvPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRu L2Fkdi8wMy5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVj dGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U60+v7 4eD+8fw6Jyk7IiBhbHQ9ItPr++Hg/vH8IiB0aXRsZT0i0+v74eD+8fwiPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1n Lm1haWwucnUvcnUvYnRuL2Fkdi8wNS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGlj az0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6 z/Du5OLo7fPy++U6x+vu8ODk8fLi8/46Jyk7IiBhbHQ9Isfr7vDg5PHy4vP+IiB0 aXRsZT0ix+vu8ODk8fLi8/4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi8wNy5n aWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChn ZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U60ODk8/7x/DonKTsi IGFsdD0i0ODk8/7x/CIgdGl0bGU9ItDg5PP+8fwiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUv YnRuL2Fkdi8wOS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNl bGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6 0fLg8Oj37uo6Jyk7IiBhbHQ9ItHy4PDo9+7qIiB0aXRsZT0i0fLg8Oj37uoiPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2Fkdi8xMS5naWYiIGNsYXNzPSJzbWlsZSIgb25j bGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0 LCc6z/Du5OLo7fPy++U60eLo8OXv8fLi8/46Jyk7IiBhbHQ9ItHi6PDl7/Hy4vP+ IiB0aXRsZT0i0eLo8OXv8fLi8/4iPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi8x My5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4 dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6z/Pj4P7x/Don KTsiIGFsdD0iz/Pj4P7x/CIgdGl0bGU9Is/z4+D+8fwiPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUv cnUvYnRuL2Fkdi8yMS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFj ZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy ++U6z+7q4Of74uD+IP/n++o6Jyk7IiBhbHQ9Is/u6uDn++Lg/iD/5/vqIiB0aXRs ZT0iz+7q4Of74uD+IP/n++oiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi8yMi5n aWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChn ZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U60+zt6Oo6Jyk7IiBh bHQ9ItPs7ejqIiB0aXRsZT0i0+zt6OoiPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fk di8yMy5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6wOvq7uPu 6+jqOicpOyIgYWx0PSLA6+ru4+7r6OoiIHRpdGxlPSLA6+ru4+7r6OoiPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1n Lm1haWwucnUvcnUvYnRuL2Fkdi8yNC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGlj az0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6 z/Du5OLo7fPy++U6wu7/6uA6Jyk7IiBhbHQ9IsLu/+rgIiB0aXRsZT0iwu7/6uAi PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRw Oi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi8yNS5naWYiIGNsYXNzPSJzbWlsZSIg b25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQn KSw0LCc6z/Du5OLo7fPy++U60+To4uv//vH8OicpOyIgYWx0PSLT5Oji6//+8fwi IHRpdGxlPSLT5Oji6//+8fwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi8yNi5n aWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChn ZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U61+Xw8u7i8eroIOfr /vH8OicpOyIgYWx0PSLX5fDy7uLx6ugg5+v+8fwiIHRpdGxlPSLX5fDy7uLx6ugg 5+v+8fwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi8zMy5naWYiIGNsYXNzPSJz bWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50 X3RleHQnKSw0LCc6z/Du5OLo7fPy++U60ODx8fLw4Oji4P7x/DonKTsiIGFsdD0i 0ODx8fLw4Oji4P7x/CIgdGl0bGU9ItDg8fHy8ODo4uD+8fwiPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwu cnUvcnUvYnRuL2Fkdi8zNC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVw bGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo 7fPy++U6z+Dt6jonKTsiIGFsdD0iz+Dt6iIgdGl0bGU9Is/g7eoiPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1h aWwucnUvcnUvYnRuL2Fkdi8zNS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0i cmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du 5OLo7fPy++U6y+7v7fMg7vIg8ezl9eA6Jyk7IiBhbHQ9Isvu7+3zIO7yIPHs5fXg IiB0aXRsZT0iy+7v7fMg7vIg8ezl9eAiPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fk di8zNi5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6z+7k7Ojj 6OLg/jonKTsiIGFsdD0iz+7k7Ojj6OLg/iIgdGl0bGU9Is/u5Ozo4+ji4P4iPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2Fkdi8zNy5naWYiIGNsYXNzPSJzbWlsZSIgb25j bGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0 LCc6z/Du5OLo7fPy++U6xPPs4P46Jyk7IiBhbHQ9IsTz7OD+IiB0aXRsZT0ixPPs 4P4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJo dHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi8zOC5naWYiIGNsYXNzPSJzbWls ZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3Rl eHQnKSw0LCc6z/Du5OLo7fPy++U6y/7h6/46Jyk7IiBhbHQ9Isv+4ev+IiB0aXRs ZT0iy/7h6/4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi80NS5naWYiIGNsYXNz PSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21t ZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6z+7k4OLr5e06Jyk7IiBhbHQ9Is/u 5ODi6+XtIiB0aXRsZT0iz+7k4OLr5e0iPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fk di80Ni5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U60Pvk4P46 Jyk7IiBhbHQ9ItD75OD+IiB0aXRsZT0i0Pvk4P4iPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUv YnRuL2Fkdi80Ny5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNl bGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6 0eXp9+DxIPDg8e/r4Pfz8fw6Jyk7IiBhbHQ9ItHl6ffg8SDw4PHv6+D38/H8IiB0 aXRsZT0i0eXp9+DxIPDg8e/r4Pfz8fwiPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fk di80OC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6x+v+8fw6 Jyk7IiBhbHQ9Isfr/vH8IiB0aXRsZT0ix+v+8fwiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUv YnRuL2Fkdi80OS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNl bGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6 0u747ejyOicpOyIgYWx0PSLS7vjt6PIiIHRpdGxlPSLS7vjt6PIiPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1h aWwucnUvcnUvYnRuL2Fkdi81MC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0i cmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du 5OLo7fPy++U60fPs4PH45fHy4ujlOicpOyIgYWx0PSLR8+zg8fjl8fLi6OUiIHRp dGxlPSLR8+zg8fjl8fLi6OUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi81Ny5n aWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChn ZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U61uXr8/46Jyk7IiBh bHQ9Itbl6/P+IiB0aXRsZT0i1uXr8/4iPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fk di81OC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVk VGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6z+725evu 4uDr6DonKTsiIGFsdD0iz+725evu4uDr6CIgdGl0bGU9Is/u9uXr7uLg6+giPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8v aW1nLm1haWwucnUvcnUvYnRuL2Fkdi81OS5naWYiIGNsYXNzPSJzbWlsZSIgb25j bGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0 LCc6z/Du5OLo7fPy++U6yvDg8e7y6uA6Jyk7IiBhbHQ9Isrw4PHu8urgIiB0aXRs ZT0iyvDg8e7y6uAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi82MC5naWYiIGNs YXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdj b21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6wO3j5evu9+XqOicpOyIgYWx0 PSLA7ePl6+735eoiIHRpdGxlPSLA7ePl6+735eoiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUv YnRuL2Fkdi82MS5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNl bGVjdGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6 z+7k7ufw6PLl6/zt7jonKTsiIGFsdD0iz+7k7ufw6PLl6/zt7iIgdGl0bGU9Is/u 5O7n8Ojy5ev87e4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi82Mi5naWYiIGNs YXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdj b21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U6xvP+OicpOyIgYWx0PSLG8/4i IHRpdGxlPSLG8/4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp bWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRuL2Fkdi82OS5naWYiIGNs YXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVjdGVkVGV4dChnZWJpKCdj b21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U60ezz+eD+8fw6Jyk7IiBhbHQ9 ItHs8/ng/vH8IiB0aXRsZT0i0ezz+eD+8fwiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvcnUvYnRu L2Fkdi83MC5naWYiIGNsYXNzPSJzbWlsZSIgb25jbGljaz0icmVwbGFjZVNlbGVj dGVkVGV4dChnZWJpKCdjb21tZW50X3RleHQnKSw0LCc6z/Du5OLo7fPy++U60fL7 5O3uOicpOyIgYWx0PSLR8vvk7e4iIHRpdGxlPSLR8vvk7e4iPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXQ1IG1iNSI+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAoJCQkJCQkJPGlucHV0IGlkPSJoaWRl X2NvbW1lbnQiIG5hbWU9ImhpZGVfY29tbWVudCIgdHlwZT0iQ2hlY2tib3giIHN0 eWxlPSJ2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ij48bGFiZWwgZm9yPSJoaWRlX2Nv bW1lbnQiPvHq8Pvy/CD98u7yIOru7Ozl7fLg8OjpPC9sYWJlbD4KICAgICAgICAg ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxp bnB1dCBpZD0ic3ViX2J1dCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ixO7h4OLo8vwi IG5hbWU9ImFkZGNvbW1lbnQiIGNsYXNzPXNfMTAwIG9uY2xpY2s9InJldHVybiBz dWJtaXRfY29tbWVudCgpIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBvbmNs aWNrPSJyZXR1cm4gY2xvc2VfYWRkX2NvbW1lbnQoKTsiIGhyZWY9Ii9tYWlsL21h bHZvXzU5LzZBMEZCOThDNUZENEQxNUMuaHRtbD90aHJlYWQ9MCZhbXA7cGFnZT0x JmFtcDtza2lwPTAiPsfg6vD78vw8L2E+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZh c2NyaXB0Ij4KZ2ViaSgnc3ViX2J1dCcpLmRpc2FibGVkID0gMTsKPC9zY3JpcHQ+ CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+ CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+ CiAgICAKPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8v zeDv6PHg8vwg6u7s7OXt8uDw6OkKZnVuY3Rpb24gc2hvd19hZGRfY29tbWVudChp ZCwgZGVmYXVsdF9oaWRlLCBiYWNrX3ZhbHVlLCBjaXQpIHsKICAgIHZhciBjb21t ZW50X2RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50X2Zvcm1z X2NvbnRhaW5lcicpOwogICAgdmFyIHBhcmVudF9vYmogPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnYWRkXycgKyBpZCk7CiAgICBpZiAoIWNvbW1lbnRfZGl2IHx8 ICFwYXJlbnRfb2JqKSByZXR1cm47CgogICAgdmFyIHN1YmpJbnAgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnc3ViamVjdF90ZXh0Jyk7CiAgICB2YXIgYm9keUlu cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50X3RleHQnKTsKICAg IHN1YmpJbnAudmFsdWUgPSAnJzsgYm9keUlucC52YWx1ZSA9ICcnOwoKICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXBkYXRlJykuYWN0aW9uID0gJy9tYWls L21hbHZvXzU5LzZBMEZCOThDNUZENEQxNUMuaHRtbD90aHJlYWQ9MCZhbXA7cGFn ZT0xJmFtcDtza2lwPTAnOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fs bHNtaWxleXMnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2ljb3R4dCcpLmlubmVySFRNTCA9ICfC8eUg8ezg6ev7 IOgg5uXx8vsnOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGVfY29t bWVudCcpLmNoZWNrZWQgPSAoZGVmYXVsdF9oaWRlID8gdHJ1ZSA6IGZhbHNlKTsK ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXBseXRvX2lucHV0JykudmFs dWUgPSBpZDsKCiAgICB2YXIgY29tbW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2NvbW1lbnRfZm9ybV9jb21tb24nKTsKICAgIHZhciBtaWNybyA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50X2Zvcm1fbWljcm9wb3N0Jyk7CiAg ICB2YXIgc3dhcF9jaGJ4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1l bnRfc3dhcF9tb2RlJyk7CiAgICBpZiAoaWQgPT0gJ2JlZ2luJyB8fCBpZCA9PSAn ZW5kJykgewogICAgICAgIGlmICgnJykgewogICAgICAgICAgICBjb21tb24uc3R5 bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgaWYoc3dhcF9jaGJ4KSBz d2FwX2NoYnguc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnbWljcm9wb3N0X3JlcGx5X3RleHQnKS52YWx1ZSA9 ICcnOwogICAgICAgICAgICBtaWNyby5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAg ICAgfQogICAgfSBlbHNlIHsKICAgICAgICBzdWJqSW5wLnZhbHVlID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ3N1YmplY3RfdGV4dF8nK2lkKS52YWx1ZTsKICAg ICAgICBpZiAoY2l0PT0neWVzJykgewogICAgICAgICAgICBib2R5SW5wLnZhbHVl ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lbnRfdGV4dF8nK2lkKS52 YWx1ZSArICdcblxuJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBib2R5 SW5wLnZhbHVlID0gJyc7CiAgICAgICAgfQogICAgICAgIGlmKHN3YXBfY2hieCkg c3dhcF9jaGJ4LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgY29tbW9u LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICBpZiAobWljcm8pIG1pY3JvLnN0 eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICB9CgogICAgcGFyZW50X29iai5hcHBl bmRDaGlsZChjb21tZW50X2Rpdi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvbW1l bnRfZGl2KSk7CiAgICBjb21tZW50X2Rpdi5zdHlsZS5kaXNwbGF5ID0gJyc7CiAg ICByZWZvY3VzKCk7CgogICAgcmV0dXJuIGZhbHNlOwp9CgovL9Ph8ODy/CDk6ODr 7uMg7eDv6PHg7ej/IOru7Ozl7fLg8Oj/CmZ1bmN0aW9uIGNsb3NlX2FkZF9jb21t ZW50KCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lbnRfZm9y bXNfY29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIHJldHVy biBmYWxzZTsKfQoKZnVuY3Rpb24gcmVmb2N1cygpIHsKICAgIHZhciBjb21tb24g PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbWVudF9mb3JtX2NvbW1vbicp OwogICAgdmFyIG1pY3JvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1l bnRfZm9ybV9taWNyb3Bvc3QnKTsKICAgIHZhciBjb21tX3R4YXIgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnY29tbWVudF90ZXh0Jyk7CiAgICB2YXIgcG9zdF90 eGFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pY3JvcG9zdF9yZXBseV90 ZXh0Jyk7CiAgICBpZiAoY29tbW9uICYmIGNvbW1fdHhhciAmJiBjb21tb24uc3R5 bGUuZGlzcGxheSAhPSAnbm9uZScpIHsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0 aW9uKCkgeyBjb21tX3R4YXIuZm9jdXMoKSB9LCAxKTsKICAgIH0gZWxzZSBpZiAo bWljcm8gJiYgcG9zdF90eGFyICYmIG1pY3JvLnN0eWxlLmRpc3BsYXkgIT0gJ25v bmUnKSB7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgcG9zdF90eGFy LmZvY3VzKCkgfSwgMSk7CiAgICB9Cn0KCgoKZnVuY3Rpb24gY2hlY2tTdWJCdXRz KCkgewogICAgdmFyIHN0dHMgPSAxOwogICAgc3R0cyA9IChnZWJpKCdjb21tZW50 X3RleHQnKS52YWx1ZS5sZW5ndGggPD0gMCk7CiAgICBnZWJpKCdzdWJfYnV0Jyku ZGlzYWJsZWQgPSBzdHRzOwp9CmNoZWNrU3ViQnV0cygpOwoKZnVuY3Rpb24gY2hl Y2tTdWJCdXRNaWNybygpIHsKCXZhciBzdHRzID0gMTsKCXN0dHMgPSAoZ2ViaSgn bWljcm9wb3N0X3JlcGx5X3RleHQnKS52YWx1ZS5sZW5ndGggPD0gMCk7CglnZWJp KCdzdWJfYnV0X21pY3JvJykuZGlzYWJsZWQgPSBzdHRzOwp9CgpmdW5jdGlvbiBj aGVja01lc3NhZ2UoKSB7Cgl2YXIgdGV4dGFyZWFJZCA9ICdjb21tZW50X3RleHQn OwoJdmFyIGZvcm1JZCA9ICdkdXBkYXRlJzsKCWlmKGdlYmkoJ2NvbW1lbnRfZm9y bV9taWNyb3Bvc3QnKSAmJiBnZWJpKCdjb21tZW50X2Zvcm1fbWljcm9wb3N0Jyku c3R5bGUuZGlzcGxheSAhPSAibm9uZSIpCgl7CgkJdGV4dGFyZWFJZCA9ICdtaWNy b3Bvc3RfcmVwbHlfdGV4dCc7CgkJZm9ybUlkID0gJ21pY3JvcG9zdF9mb3JtJzsK CX0KCQoJdmFyIGxlbjIgPSBnZWJpKHRleHRhcmVhSWQpLnZhbHVlLmxlbmd0aDsK ICAgIGlmIChsZW4yPT0wKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBl bHNlIHsKICAgICAgICBnZWJpKGZvcm1JZCkuc3VibWl0KCk7CiAgICB9Cn0KCmZ1 bmN0aW9uIGNoZWNrQ3RybEVudGVyKGUpIHsKICAgIHZhciBrZXlDb2RlOwogICAg aWYgKHdpbmRvdy5ldmVudCkgewogICAgICAgIGUgPSB3aW5kb3cuZXZlbnQ7CiAg ICAgICAga2V5Q29kZSA9IGUua2V5Q29kZTsKICAgIH0gZWxzZSB7CiAgICAgICAg a2V5Q29kZSA9IGUud2hpY2g7CiAgICB9CiAgICBpZiAoZS5jdHJsS2V5ICYmICgo a2V5Q29kZSA9PT0gMTMgJiYgIWlzSUUpIHx8IChrZXlDb2RlID09PSAxMCAmJiBp c0lFKSkpIHsKICAgICAgICBjaGVja01lc3NhZ2UoKTsKICAgIH0KfQovL2RvY3Vt ZW50Lm9ua2V5ZG93biA9IGNoZWNrQ3RybEVudGVyOwphZGRIYW5kbGVyKGRvY3Vt ZW50LCAna2V5cHJlc3MnLCBjaGVja0N0cmxFbnRlcik7Cgp2YXIgY3VyYXJlYWhl aWdodCA9IDEyMDsKCmZ1bmN0aW9uIGNoZWNrSGVpZ2h0KG9iaikgewogICAgaWYg KGlzSUUpIHsKICAgICAgICB2YXIgY3VySGVpZ2h0ID0gb2JqLmNyZWF0ZVRleHRS YW5nZSgpLmJvdW5kaW5nSGVpZ2h0OwogICAgICAgIGlmIChjdXJIZWlnaHQgLSBj dXJhcmVhaGVpZ2h0IDwgMCkgewogICAgICAgICAgICBvYmouc3R5bGUuaGVpZ2h0 ID0gY3VyYXJlYWhlaWdodCArICdweCc7CiAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgb2JqLnN0eWxlLmhlaWdodCA9IGN1ckhlaWdodCArIDM1ICsgJ3B4JzsK ICAgICAgICB9CiAgICB9Cn0KPC9zY3JpcHQ+Cgo8c2NyaXB0IHR5cGU9InRleHQv amF2YXNjcmlwdCI+CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50X2Zv cm1zX2NvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Cjwvc2NyaXB0 PgoKCjxpbWcgc3JjPWh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiB3aWR0aD01MDAg aGVpZ2h0PTE+PGJyPgo8IS0tIEVORDogbWFpbiBibG9jayAtLT4KCgkJCQkJCTwv ZGl2PjwvdGQ+CgkJCQkJCTx0ZCB3aWR0aD0iMjUiIGNsYXNzPSJyaWdodF9ib3R0 b21fc2hpZnQiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvMC5naWYiIHdp ZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48L3RkPgoJCQkJCTwvdHI+CgkJCQkJ PC90YWJsZT4KCQkJCTwvdGQ+CgkJCQk8dGQgd2lkdGg9IjMlImNsYXNzPSJtYWlu X21lbnVfcmlnaHRfYmciPiZuYnNwOzwvdGQ+CgkJCTwvdHI+CgkJCTx0cj4KCQkJ CTx0ZCBjb2xzcGFuPSIzIiBoZWlnaHQ9IjI1cHgiPiZuYnNwOzwvdGQ+CgkJCTwv dHI+CgkJCTwvdGFibGU+CgkJPC9kaXY+Cgk8L3RkPgo8L3RyPgo8L3RhYmxlPgoK PCEtLSAgZm9vdGVyX2Jhc2UgIC0tPgoKPGltZyBzcmM9aHR0cDovL3JzLm1haWwu cnUvZDIyNzAxNS5naWY/cm5kPTM3MDQxMDIxNyZ0cz0xMjc5NTE5NDM3IHdpZHRo PSIxIiBoZWlnaHQ9IjEiIGJvcmRlcj0iMCIgYWx0PSIiIHN0eWxlPSJwb3NpdGlv bjphYnNvbHV0ZTsiPgo8IS0tUmF0aW5nQE1haWwucnUgY291bnRlci0tPg0KPHNj cmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0 Ij48IS0tDQpkPWRvY3VtZW50O3ZhciBhPScnO2ErPSc7cj0nK2VzY2FwZShkLnJl ZmVycmVyKTtqcz0xMDsvLy0tPjwvc2NyaXB0Pg0KPHNjcmlwdCBsYW5ndWFnZT0i amF2YXNjcmlwdDEuMSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tDQphKz0n O2o9JytuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKTtqcz0xMTsvLy0tPjwvc2NyaXB0 Pg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdDEuMiIgdHlwZT0idGV4dC9q YXZhc2NyaXB0Ij48IS0tDQpzPXNjcmVlbjthKz0nO3M9JytzLndpZHRoKycqJytz LmhlaWdodDsNCmErPSc7ZD0nKyhzLmNvbG9yRGVwdGg/cy5jb2xvckRlcHRoOnMu cGl4ZWxEZXB0aCk7anM9MTI7Ly8tLT48L3NjcmlwdD4NCjxzY3JpcHQgbGFuZ3Vh Z2U9ImphdmFzY3JpcHQxLjMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQ0K anM9MTM7Ly8tLT48L3NjcmlwdD48c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0 IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0NCmQud3JpdGUoJzxpbWcgc3Jj PSJodHRwOi8vZGIuYzEuYmYuYTAudG9wLm1haWwucnUvY291bnRlcicrJz9pZD05 OTAwMTQ7anM9JytqcysNCmErJztyYW5kPScrTWF0aC5yYW5kb20oKSsnIiBoZWln aHQ9IjEiIHdpZHRoPSIxIiBhbHQ9InRvcC5tYWlsLnJ1IiBib3JkZXI9IjAiPicp Ow0KaWYoMTE8anMpZC53cml0ZSgnPCcrJyEtLSAnKS8vLS0+PC9zY3JpcHQ+DQo8 bm9zY3JpcHQ+PGltZyBzcmM9Imh0dHA6Ly9kYi5jMS5iZi5hMC50b3AubWFpbC5y dS9jb3VudGVyP2pzPW5hO2lkPTk5MDAxNCIgDQpoZWlnaHQ9IjEiIHdpZHRoPSIx IiBhbHQ9InRvcC5tYWlsLnJ1IiBib3JkZXI9IjAiPjwvbm9zY3JpcHQ+DQo8c2Ny aXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi PjwhLS0NCmlmKDExPGpzKWQud3JpdGUoJy0tJysnPicpOy8vLS0+PC9zY3JpcHQ+ DQo8IS0tLy8gUmF0aW5nQE1haWwucnUgY291bnRlci0tPgoKPHNjcmlwdCB0eXBl PSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCnRyeXsKdGltZUludGVydmFs KCdiYW5uZXJzJyk7Cn1jYXRjaChlKSB7fQovLy0tPjwvc2NyaXB0PgoKCjxkaXYg aWQ9ImJhbm5lcl9zb3VyY2UiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4JCgk8IS0t IGFkZCBUT1AgLS0+Cgk8ZGl2IGJhbm5lcj0iYmFubmVyX3RvcF9jb250YWluZXIi PgoJPGNlbnRlcj48L2NlbnRlcj4KCTwvZGl2PgoJCgk8IS0tIGFkZCBMRUZUIC0t PgoJPGRpdiBiYW5uZXI9ImJhbm5lcl9sZWZ0X2NvbnRhaW5lciI+CgkKCQk8ZGl2 IGNsYXNzPSJsaW5lZF90b3AiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUv MC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48L2Rpdj48ZGl2IGNs YXNzPSJsaW5lZF9ibG9jayI+PGRpdiBjbGFzcz0ibGluZWRfYmxvY2tfaW4iPjxk aXYgY2xhc3M9Im90c19pbl9ibG9nIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRl cj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj48dHI+PHRkIGNs YXNzPSJvdHNfaW5fYmxvZ19pbiI+PCEtLSA0Mzg1IC0tPjwhLS0gU2VhcmNoIElu Zm9ybWVyIC0tPg0KDQo8ZGl2IGlkPSJzZWFyY2hJbmZvcm1lciIgc3R5bGU9ImRp c3BsYXk6IG5vbmU7IG1hcmdpbjogMC44ZW0gMC41ZW0gMWVtOyI+PC9kaXY+DQo8 IS0tIC9TZWFyY2ggSW5mb3JtZXIgLS0+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2 YXNjcmlwdCI+DQooZnVuY3Rpb24oKXsNCnZhciBVUkwgPSB7DQoJaWU6ICcnLA0K CWVzY2FwZTogKGZ1bmN0aW9uKCl7DQoJCXZhciBpID0gMHg0MTAsIHRyYW5zID0g W107DQoJCXdoaWxlIChpIDw9IDB4NDRGKSB7DQoJCQl0cmFuc1tpXSA9IChpKysp IC0gMHgzNTA7DQoJCX0NCgkJdHJhbnNbMHg0MDFdID0gMHhBODsNCgkJdHJhbnNb MHg0NTFdID0gMHhCODsNCgkJdHJhbnNbMHgwMjNdID0gMHgyMzsNCgkJdHJhbnNb MHgwMjZdID0gMHgyNjsNCgkJcmV0dXJuIGZ1bmN0aW9uKHN0cikgew0KCQkJdmFy IGkgPSAwLCBsLCBjaGFycywgY2hhciwgcmV0ID0gW10sIGlkeCA9IDA7DQoJCQls ID0gc3RyLmxlbmd0aDsNCgkJCXdoaWxlIChpIDwgbCkgew0KCQkJCWNoYXIgPSBz dHIuY2hhckNvZGVBdChpKyspOw0KCQkJCWlmICh0eXBlb2YgdHJhbnNbY2hhcl0g IT09ICd1bmRlZmluZWQnKSB7DQoJCQkJCWNoYXIgPSB0cmFuc1tjaGFyXTsNCgkJ CQl9DQoJCQkJaWYgKGNoYXIgPD0gMHhGRikgew0KCQkJCQlyZXRbaWR4KytdID0g Y2hhcjsNCgkJCQl9DQoJCQl9DQoJCQlyZXR1cm4gZXNjYXBlKFN0cmluZy5mcm9t Q2hhckNvZGUuYXBwbHkobnVsbCwgcmV0KSk7DQoJCX07DQoJfSkoKSwNCgl1bmVz Y2FwZTogKGZ1bmN0aW9uKCl7DQoJCXZhciBpID0gMHg0MTAsIHRyYW5zID0gW107 DQoJCXdoaWxlIChpIDw9IDB4NDRGKSB7DQoJCQl0cmFuc1tpIC0gMHgzNTBdID0g aSsrOw0KCQl9DQoJCXRyYW5zWzB4QThdID0gMHg0MDE7DQoJCXRyYW5zWzB4Qjhd ID0gMHg0NTE7DQoJCXRyYW5zWzB4MjNdID0gMHgwMjM7DQoJCXRyYW5zWzB4MjZd ID0gMHgwMjY7DQoJCXJldHVybiBmdW5jdGlvbihzdHIpIHsNCgkJCXZhciBpID0g MCwgbCwgY2hhcnMsIGNoYXIsIHJldCA9IFtdLCBpZHggPSAwOw0KCQkJc3RyID0g c3RyLnJlcGxhY2UoL1wrL2csJyUyMCcpOw0KCQkJaWYgKHN0ci5zZWFyY2goLyUo RDB8RDEpKD89JVthLWYwLTldezJ9KS9pKSAhPSAtMSkgew0KCQkJCXN0ciA9IGRl Y29kZVVSSUNvbXBvbmVudChzdHIpOw0KCQkJCXRoaXMuaWUgPSAndXRmOCc7DQoJ CQl9IGVsc2Ugew0KCQkJCXN0ciA9IHVuZXNjYXBlKHN0cik7DQoJCQkJdGhpcy5p ZSA9ICdjcDEyNTEnOw0KCQkJfQ0KCQkJbCA9IHN0ci5sZW5ndGg7DQoJCQl3aGls ZSAoaSA8IGwpIHsNCgkJCQljaGFyID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsNCgkJ CQlpZiAodHlwZW9mIHRyYW5zW2NoYXJdICE9PSAndW5kZWZpbmVkJykgew0KCQkJ CQljaGFyID0gdHJhbnNbY2hhcl07DQoJCQkJfQ0KCQkJCXJldFtpZHgrK10gPSBj aGFyOw0KCQkJfQ0KCQkJcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHko bnVsbCwgcmV0KTsNCgkJfTsNCgl9KSgpDQp9LA0Kc2VhcmNoVHJhdmVsbGVyID0g ZnVuY3Rpb24oKXsNCgl2YXIgU0UgPSB7DQoJCQknbWFpbCc6ICdxJywNCgkJCSdn b2dvJzogJ3EnLA0KCQkJJ2dvb2dsZSc6ICdxfGFzX3EnLA0KCQkJJ3lhbmRleCc6 ICd0ZXh0JywNCgkJCSdyYW1ibGVyJzogJ3F1ZXJ5Jw0KCQl9LA0KCQlyID0gZG9j dW1lbnQucmVmZXJyZXIsDQoJCW1hdGNoLA0KCQlkb21haW4sDQoJCXEgPSB7fTsN Cgl0cnkgew0KCQlpZiAocikgew0KCQkJbWF0Y2ggPSAvXig/Omh0dHA6XC9cLyko KD86W2EtejAtOVwtXStcLikrKFthLXpdezIsM30pKSg/OlwvW2Etel0rXD8pKFth LXowLTlcLV9dKz0uKikkL2kuZXhlYyhyKTsNCgkJCWRvbWFpbiA9IChkb21haW4g PSBtYXRjaFsxXSkuc3Vic3RyaW5nKGRvbWFpbi5zZWFyY2goL1thLXowLTlcLV17 Mix9XC5bYS16XXsyLDN9JC9pKSwgZG9tYWluLmxlbmd0aCAtIG1hdGNoWzJdLmxl bmd0aCAtIDEpOw0KCQkJcS51cmxlc2NhcGVkID0gbmV3IFJlZ0V4cCgnKD86Jnxe KSg/Oig/OicgKyBTRVtkb21haW5dICsgJyk9KShbYS16MC05XCVcflxgXCFcXlwq XChcKVwtX1x7XH1cfFxcIlwnXC5cK10rKSg/OiR8JiknLCAnaScpLmV4ZWMobWF0 Y2hbM10pOw0KCQkJcS51cmxlc2NhcGVkID0gcS51cmxlc2NhcGVkWzFdOw0KCQkJ cS51bmVzY2FwZWQgPSBVUkwudW5lc2NhcGUocS51cmxlc2NhcGVkKTsNCgkJCXEu aHRtbGVzY2FwZWQgPSAoZnVuY3Rpb24oc3RyKXsNCgkJCQlyZXR1cm4gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgncCcpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0 ZVRleHROb2RlKHN0cikpLnBhcmVudE5vZGUuaW5uZXJIVE1MLnJlcGxhY2UoLyIv ZywnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCcmIzM5OycpOw0KCQkJfSkocS51bmVz Y2FwZWQpOw0KCQkJcmV0dXJuIHsNCgkJCQlzZWFyY2hFbmdpbmU6IGRvbWFpbiwN CgkJCQlxdWVyeTogcS51bmVzY2FwZWQsDQoJCQkJcXVlcnlVUkw6IHEudXJsZXNj YXBlZCwNCgkJCQlxdWVyeUhUTUw6IHEuaHRtbGVzY2FwZWQsDQoJCQkJaWU6IFVS TC5pZQ0KCQkJfTsNCgkJfSBlbHNlIHsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0K CX0gY2F0Y2goZSkgew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KfSwNCnNlYXJjaElu Zm9ybWVyID0gZnVuY3Rpb24gKHNldHMpIHsNCgl2YXIgbG5rLCBjaGVja1JlZiA9 IHNlYXJjaFRyYXZlbGxlcigpOw0KCWlmICghY2hlY2tSZWYgfHwgIWNoZWNrUmVm LnF1ZXJ5IHx8ICEoc2V0cy53cmFwcGVyID0gdHlwZW9mKHNldHMud3JhcHBlcikg PT09ICdzdHJpbmcnID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2V0cy53cmFw cGVyKSA6IHNldHMud3JhcHBlcikpIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCglz ZXRzLnF1ZXJ5ID0gY2hlY2tSZWYucXVlcnlIVE1MOw0KCXNldHMucXVlcnlVUkwg PSBjaGVja1JlZi5pZSA9PT0gJ2NwMTI1MScgJiYgY2hlY2tSZWYucXVlcnlVUkwg fHwgVVJMLmVzY2FwZShjaGVja1JlZi5xdWVyeSk7DQoJc2V0cy50YXJnZXQgPSBz ZXRzLnRhcmdldCAmJiAndGFyZ2V0PSInK3NldHMudGFyZ2V0KyciJyB8fCAnJzsN CglzZXRzLnJiID0gKHNldHMucmIgJiYgJ3IubWFpbC5ydS8nK3NldHMucmIrJy8n KSB8fCAnJzsNCglzZXRzLmZyID0gKHNldHMuZnIgJiYgJyZmcj0nK3NldHMuZnIp IHx8ICcnOw0KCWxuayA9ICdodHRwOi8vJyArIHNldHMucmIgKyAnZ28ubWFpbC5y dS9zZWFyY2g/cT0nICsgc2V0cy5xdWVyeVVSTCArIHNldHMuZnI7DQoJc2V0cy53 cmFwcGVyLmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQXJp YWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsiPicrDQonPHRhYmxlIHdpZHRoPSIx MDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+ JysNCic8dHI+JysNCic8dGQgc3R5bGU9IndpZHRoOiA0MnB4OyB2ZXJ0aWNhbC1h bGlnbjogbWlkZGxlOyI+PGEgJytzZXRzLnRhcmdldCsnIGhyZWY9IicrbG5rKyci IHRpdGxlPSLP7ujx6uDy/CDiIMjt8uXw7eXy5TogJytzZXRzLnF1ZXJ5KyciPjxp bWcgc3JjPSJodHRwOi8vZ28ubWFpbC5ydS9pbWcvaW5mX3Byb2plY3RzX2xvdXBl Mi5qcGciIHdpZHRoPSIzNSIgaGVpZ2h0PSI0OSIgYWx0PSIiIHN0eWxlPSJib3Jk ZXI6MDsiIC8+PC9hPjwvdGQ+JysNCic8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWdu OiBtaWRkbGU7Ij48c3BhbiBzdHlsZT0iY29sb3I6ICM1QjU5NTU7IGZvbnQtc2l6 ZTogOTAlOyI+z+7o8erg8vwg4iDI7fLl8O3l8uU6IDwvc3Bhbj48YSAnK3NldHMu dGFyZ2V0KycgaHJlZj0iJytsbmsrJyIgc3R5bGU9ImNvbG9yOiMwMDA7IGZvbnQt c2l6ZTogMTAwJTsiPjxiPicrc2V0cy5xdWVyeSsnPC9iPjwvYT48L3RkPicrDQon PC90cj4nKw0KJzwvdGFibGU+JysNCic8L2Rpdj4nOw0KCXNldHMud3JhcHBlci5z dHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCn07DQoNCnNlYXJjaEluZm9ybWVyKHt3 cmFwcGVyOiAnc2VhcmNoSW5mb3JtZXInLCB0YXJnZXQ6ICdfYmxhbmsnLCByYjog J2NsbjUwODYnLCBmcjogJ2NvbnRTcmNoJ30pOw0KDQp9KSgpOw0KPC9zY3JpcHQ+ DQoNCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KdmFyIHJi X2xpbmsgPSAiaHR0cDovL3IubWFpbC5ydS9uNDQ1ODg5NzAiOwp2YXIgcmJfc3dm ID0gImh0dHA6Ly9ycy5tYWlsLnJ1L2I4ODY2NDY1LnN3ZiI7CnZhciByYl9mdmVy ID0gIjgiOwp2YXIgcmJfd2lkdGggPSAiMjQwIjsKdmFyIHJiX2hlaWdodCA9ICI0 MDAiOwp2YXIgcmJfZmxhc2ggPSAwOwppZiAobmF2aWdhdG9yLm1pbWVUeXBlcyAm JiBuYXZpZ2F0b3IubWltZVR5cGVzWyJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m bGFzaCJdICkgewogdmFyIHBsdWdpbiA9IG5hdmlnYXRvci5taW1lVHlwZXNbImFw cGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIl0uZW5hYmxlZFBsdWdpbjsKIGlm IChwbHVnaW4gJiYgcGFyc2VJbnQocGx1Z2luLmRlc2NyaXB0aW9uLm1hdGNoKC9c ZCsvKVswXSkgPj0gcmJfZnZlcikKICByYl9mbGFzaCA9IDE7CiB9IGVsc2UgaWYg KG5hdmlnYXRvci5hcHBOYW1lICYmIG5hdmlnYXRvci5hcHBOYW1lLmluZGV4T2Yo Ik1pY3Jvc29mdCIpICE9IC0xICYmCiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4 T2YoIldpbmRvd3MiKSAhPSAtMSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4 T2YoIldpbmRvd3MgMy4xIikgPT0gLTEpIHsKICByYl9mbGFzaCA9IDE7Cn0KaWYg KHJiX2ZsYXNoKSB7CiBkb2N1bWVudC53cml0ZSgnPHNjcicrJ2lwdCB0eXBlPSJ0 ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvanMvcmJf Zmxhc2guanMiPjwvc2NyJysnaXB0PicpOwp9IGVsc2UgewogZG9jdW1lbnQud3Jp dGUoJzxhIGhyZWY9Imh0dHA6Ly9yLm1haWwucnUvbjQ0NTg4OTcwIiB0YXJnZXQ9 Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9ycy5tYWlsLnJ1L2I4ODY2NDY2Lmpw ZyIgd2lkdGg9IjI0MCIgaGVpZ2h0PSI0MDAiIGJvcmRlcj0iMCIgYWx0PSIiICAv PjwvYT4nKTsKfQovLy0tPjwvc2NyaXB0Pgo8bm9zY3JpcHQ+PGEgaHJlZj0iaHR0 cDovL3IubWFpbC5ydS9uNDQ1ODg5NzAiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNy Yz0iaHR0cDovL3JzLm1haWwucnUvYjg4NjY0NjYuanBnIiB3aWR0aD0iMjQwIiBo ZWlnaHQ9IjQwMCIgYm9yZGVyPSIwIiBhbHQ9IiIgIC8+PC9hPjwvbm9zY3JpcHQ+ CgoJCQoJCTwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYg Y2xhc3M9ImxpbmVkX2JvdHRvbSI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5y dS8wLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPjwvZGl2PgoJCQkK CQkKCTwvZGl2PgoJCjwvZGl2Pgo8aW1nIHNyYz1odHRwOi8vcnMubWFpbC5ydS9k MjkyMTUyLmdpZj9ybmQ9MTY3NTMwMjQyJnRzPTEyNzk1MTk0Mzcgd2lkdGg9IjEi IGhlaWdodD0iMSIgYm9yZGVyPSIwIiBhbHQ9IiIgc3R5bGU9InBvc2l0aW9uOmFi c29sdXRlOyI+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCi8vPCFb Q0RBVEFbDQooZnVuY3Rpb24oKSB7DQoJdmFyIGFkZEhhbmRsZXIgPSBmdW5jdGlv bihvLCBlLCBmbikgew0KCQlpZiAoby5hZGRFdmVudExpc3RlbmVyKSBvLmFkZEV2 ZW50TGlzdGVuZXIoZSwgZm4sIGZhbHNlKTsNCgkJZWxzZSBpZiAoby5hdHRhY2hF dmVudCkgby5hdHRhY2hFdmVudCgnb24nICsgZSwgZm4pOw0KCQllbHNlIG9bJ29u JyArIGVdID0gZm47DQoJfQ0KCWFkZEhhbmRsZXIoZG9jdW1lbnQsICdtb3VzZWRv d24nLCBmdW5jdGlvbihlKSB7DQoJCWUgPSBlIHx8IHdpbmRvdy5ldmVudDsNCgkJ ZSA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDsNCgkJdmFyIG5hbWU7DQoJCXdo aWxlIChlLnBhcmVudE5vZGUpIHsNCgkJCWlmICgobmFtZSA9IGUuZ2V0QXR0cmli dXRlKCduYW1lJykpICYmIChuYW1lID0gbmFtZS50b1N0cmluZygpKSkgew0KCQkJ CWlmICggbmFtZS5tYXRjaChuZXcgUmVnRXhwKCJeY2woW2JuXVxcZCspIikpICkN CgkJCQkJZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSU1HIikuc3JjID0gImh0dHA6 Ly9ycy5tYWlsLnJ1L3MiK1JlZ0V4cC4kMSsiLmdpZj9ybmQ9IiArIE1hdGgucmFu ZG9tKCkqMUU5Ow0KCQkJCWlmICggbmFtZS5tYXRjaChuZXcgUmVnRXhwKCJeKGdc XGQrKSIpKSApDQoJCQkJCWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklNRyIpLnNy YyA9ICJodHRwOi8vcnMubWFpbC5ydS8iK1JlZ0V4cC4kMSsiLmdpZj9ybmQ9IiAr IE1hdGgucmFuZG9tKCkqMUU5Ow0KCQkJfQ0KCQkJZSA9IGUucGFyZW50Tm9kZTsN CgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9KTsNCn0pKCk7DQovL11dPg0KPC9zY3Jp cHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKGZ1bmN0aW9uICgp IHsKICB0cnkgewogICAgICAgICB2YXIgZWxzID0gZ2ViaSgnYmFubmVyX3NvdXJj ZScpOwogICAgICAgICBpZiAoIWVscykgcmV0dXJuOwogICAgICAgICBlbHMgPSBl bHMuY2hpbGROb2RlczsKICAgICAgICAgZm9yICh2YXIgaSA9IGVscy5sZW5ndGgg LSAxOyBpID49IDA7IGktLSkKICAgICAgICAgICAgIGlmIChlbHNbaV0udGFnTmFt ZSA9PSAnRElWJyAmJiBlbHNbaV0uYXR0cmlidXRlcyAmJiBlbHNbaV0uYXR0cmli dXRlcy5iYW5uZXIpCiAgICAgICAgICAgICAgICBpZihnZWJpKGVsc1tpXS5hdHRy aWJ1dGVzLmJhbm5lci52YWx1ZSkpIGdlYmkoZWxzW2ldLmF0dHJpYnV0ZXMuYmFu bmVyLnZhbHVlKS5hcHBlbmRDaGlsZChlbHNbaV0pOwogIH0gY2F0Y2goZXJyKXt9 Cn0pKCk7Cjwvc2NyaXB0PgoKCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0 Ij4vLzwhW0NEQVRBWwp0cnl7CnRpbWVJbnRlcnZhbCgnYmFubmVycycpOwp9Y2F0 Y2goZSkge30KLy8tLT48L3NjcmlwdD4KCgo8IS0tIGJsb2dzX2pzX3Rlc3RfYm90 dHRvbSAtLT4KCjwhLS0gL2Jsb2dzX2pzX3Rlc3RfYm90dHRvbSAtLT4KCjxzY3Jp cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9pbWczLmltZ3Nt YWlsLnJ1L21haWwvcnUvaW1hZ2VzL2pzL215anMvbXJpbS1zdGF0dXMyLmpzIj48 L3NjcmlwdD4KCgoKCgoJCgkJCgkJCQkJCQoJCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0 L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCgkJCQl0cnl7CgkJCQl0aW1lSW50ZXJ2 YWwoJ2pvdXJuYWxfc2tpbicpOwoJCQkJfWNhdGNoKGUpIHt9CgkJCQkvLy0tPjwv c2NyaXB0PgkJCQoJCQkJCQoJCQoJCgoKCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiPi8vPCFbQ0RBVEFbDQp0cnkgew0KDQp0aW1lSW50ZXJ2YWwoJ3Jl bmRlcmJyb3dzZXInKTsNCnJULmlHZXQgPSAnJzsNCmZvciAodmFyIGkgPSAwOyBp IDwgclQuaS5sZW5ndGg7IGkrKykgew0KICAgICAgICByVC5jb21tYSA9IHJULmlH ZXQgIT0gJycgPyAnLCcgOiAnJzsNCiAgICAgICAgdmFyIGJQID0gclQuaVtpXS5z cGxpdCgnPScpOw0KICAgICAgICBpZiAoYlBbMF0gIT0gJ3JlbmRlcmJyb3dzZXIn KSB7DQogICAgICAgICAgICAgICAgclQuaUdldCArPSAoclQuY29tbWEgKyBiUFsw XSArICc6JyArIGJQWzFdKTsNCiAgICAgICAgfSBlbHNlIHJULnJlbmRlcmJyb3dz ZXIgPSBwYXJzZUludChiUFsxXSk7DQp9DQpyVC5jb21tYSA9ICcnOw0KDQpyVC5p bWcgPSBuZXcgSW1hZ2UoKTsgclQuaW1nLnNyYz0naHR0cDovL2Jsb2dzLnJhZGFy LmltZ3NtYWlsLnJ1L3VwZGF0ZT9wPWJsb2dzJnQ9JnY9JyArIHJULnJlbmRlcmJy b3dzZXIgKyAnJmk9JyArIHJULmlHZXQgKyAnJnJuZD0xNDM3MTgyODEnICsgKGRv Y3VtZW50LnJlZmVycmVyID8gJyZyPScgKyBlc2NhcGUoZG9jdW1lbnQucmVmZXJy ZXIpIDogJycpICsgJyc7DQoNCn0gY2F0Y2goZSkge30NCi8vXV0+PC9zY3JpcHQ+ DQoNCiAgICAgICAgCgoKCgo8L2JvZHk+CjwvaHRtbD4KCgo= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/bm_l4.gif Content-Transfer-Encoding: Base64 R0lGODlhTQAjAPcAADJLLtK7oNzGrrCMaqqFZJqSlNzJskNjiLqfg8Wnh7qZdtC8 ptfAqcWxm7WScK2IZraWd9G5na6KaLWRbp55Wb2cetHetyldnsCfftbAp6qFYsvR q3Wnbd3HsbKPbMjJo97KtK6Sddbtxsqxl9zIsTlWNRdSlr6efVZ1sq+rr8msjcCh gMKqkdrDq5p1UqyOcMOjgiJZm0xyRr+5lLuihbSjf7ycfbedgaeGZJhxT8+4nQ1N ksfdusiqi7OXesSkhGuBrzpmpVF1S7uaeLaUcsWqjbOScdvHr9jDqx4uHJp2VbmZ ebSUc0xwrsioicaoiDZkpMamhsGnjCQ2IamDYUVsqkZGRqyKadS+pdW8o9C3nM+0 mFN9TKB7WVN0sMKhgL2be7iXdrmWdLOQba2LakNlPmhuZT5opxQeE0NDQ1l3s0ht Qm+jZ76dfNnyyj1cOLeWc9jvx3ipcXmXcX6td8irjsGigTdUM9rErNnwyNe+pQEB AVJ8SwNIjZ24kkZqQGCRWGabXipAJ2uhY053SFR/Tda9pUBhO0FjPL2beaCSidvJ tICGnc+0m7aoha+ZdcSmhY6RpbaYetPjvJ+Ym5lyUZmBcLqljcWoicWoipyOiayG Y3uLsdvJslxgWa/BpaeBYKKxmMesjo2Xs3CApi9goc3WsGBlXVx5s8C4tKuHZc20 lrSgjqeCXsGigsKjgaqLbKqNa83kv6idl4J/jDtZNsOjg8SlhsOkg6eKZ0lurMew l8G8l93Js97KtJCWrLqXd1t8VMipismvk9LpxNLBsLCPb7GUctjBqcKmiceniFJz sNnErGJ4qdrFrqOEYrmcflhbVtnxysuwk7Gfe9bqwrWafdrDq4eSgFp3sdW+p1aD T4y2hLGNa7/Us721kJ99WtLgurGTdNPkvZuHeLqhib2kirqWdayTcKB9W9G8nqa2 nNO7oneFqdG7pKqJZ1d2slh2s7+efJOgi5elj820mMStkryZeLqwi0xNS6J9Xbmj kLGXd8epigBGjNrzyyH5BAAAAAAALAAAAABNACMAAAj/AP8JHEiwoMGDCBMqXHiw jEBuDCNKnDjRz5xgQtAA4oPIn8ePIEOKHAkyRqkDM/JQXDlQjsAyJGPKBGnCCylo TNCFY7mSjsApM4OShKKmwIo2Ct5t4DnxjkA5QqOCbKKGla2jibrViMOUYQmBdKSK jacGU5RXKzC0IYLDVFeFHATeESuV6j4nCW65UjtEgiOVbw0CEFiCblSilHo4eQLJ lh0MYIzgsBC4YNx/HAwLNQGvXR0ViqPYeqU2DIFv0ioLHPwPgGahF5ZFYgFaWF4Y K+RVMBZrkuo1Ate8DrqjCpBZRT4LU5bgxxfdYnDwchN4kMBBw2X2CYIqxYIGl8wl /8vULwEkXGrvXYnG4y0hgYSyx4yhZpQBEh2OuNtV7gYNO1E4d0IFaaRBD3U8XZaZ fCNVoUYqvvTSSwcC4IGMDvYg4MMSbcjTRoFpnCILT0kIlASDI8GjxiIRGkAhM0hk YEgAjUhhzQsgFmhFKAhOVOI/J6IYkhpq9NIihddcowcWEWixxQhF5AiiGcRQxIZA bAg5pBqd3EdChTEawo46Tg4jipQF5rMORYcIdIiWIHmhRjFHHOHMNTFikUUEOqwy TREIoGlGexQJIpAgcH4UhBopJIkEA3pkwU4E9QAqDixkkAGiFfPw9NU/hSXqjwnx cKINA1iwE8AIUtwQwjFGOP8AhwMeFOiJN0yx5pqo/lzgxS8NsECDD/xAEIYC5xAx xhgSpJMGNiJ0Bdw/wvFaHBCKSLJEIkMoAAcRtA5AhQu5fBJYIQIVwut22RRgAxj3 hDGrBwNI8EAXLtQQbWCBCBQIr/QxMgQwYhAxwRj1qgKKC+B8oNo/bwj0Bq9nqKHJ t7R2Yy8BXeTwyDgP//OHxLzKGUK4G7fighIz9KjaHiSLioIaxmj8gCoc55ALZSEL JINAf/DqIDk3bzJuJfhw1TOWAu3B6wVq0GK0Pjk8s9TSA3Hhs7W6NGMJBRTUUA3W BGn9T5a8mnDGAdQ4THbZApn99twWCSGDRhzVMsXcfBsM9PM/2/QtuEC1+BwQADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/top_menu_center_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhjgAxAPcAAHCXa3GXbGeQYmuTZnWacHmedXqedmyUaG+WamyUZ3abcnuf d2iRY3idc2+Wa3KYbW2VaHufdn2geGCLW3OZb3iddH+ie2eQY2WPYH2heXygeGaP YWWOYGKMXViFU2ONXl2IWGONXWGMXIKkfn6hemSOX0d4QYCjfFaDUDxbN1qGVUh5 QoGjfVuHVV+KWlyIV1SCTkdrQWmRZF6JWEluQzNNLzVRMUBhO0FjPE11RztZNjlW NEt7RV6JWVN9TD9gOkVpQEx0Rk18RzBILFR/TU94SUNmPleEUk53SGCSWFyNVU9+ SU95SSg8JT5eOVB6SluHVj9fOlmHUjpXNUxzRipAJ09+SlWBTiY5I1F/Sx8vHYSm gFmFUyg9JVWDUDJMLiU4Ikp6RCtBKFN+TC9GK2+jZy5FKmifYFuLVDxaN2acXjhV NGSYXEJlPTJLLjFKLRQeE36td2qgYg0TDFOBTWWaXRsoGW2iZRciFYWxfjZSMi9H KxspGVJ8S3ipcRklF1yMVQsQClaDT0lvQyxDKViGUWOXW3CkaEtyRXurdBUfE0Ro P059SFmGVIWngVKATFeEUVSCT0x8Rh4tHEpwRFKATXSacHecc3abcW6VaXGYbWqS ZXOZbtrzywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACOADEAAAj/ADsJHEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKEFKUeLjTZwUSmgw+RJzZo4b fYrcACIISQwjSX5IqVPoBhFDY5I8GaJHEQ0cNnJQuUOEiA0cMbCkCJRnzR5EKdi4 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 AlLLBYLLvfzO8BzP8jzP9FzP9nzP+JzPEhEQADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/top_menu_left_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhDQAxAOYAADpXNT1cOFJ8S2CRWG+jZ0htQkFjPHmXcZ24knSacGqSZVN9 TFt8VFF2SiU4IjNNL0pwRHWnbR4tHFR/TTdUM36tdzhVNB0sG3ipcW+WanabcYmw f5iwjk53SGuhY0ZqQJe1jG6VaUBhO2abXgEBASpAJ2OBXHSmbDBILBUfEyg9JR8v HUtyRUxzRlFzS1uHVVJwS1N+TGeQYlaDT2CHWG+Wa4y2hENlPkxyRmaPYUJlPXKY bVZ9TztZNnabchMdEiM0IFeDT2yUaBUfFHGYbXmedYKkflJ5S3WacDVQMWeQY3ec c2WOYGuTZkdnQW2VaNrzywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAANADEAAAfxgFCCg4SFhoeGIIiEG4uD NIKKiE6CjQgHDA0pAwIGAA4QEiqISYIwizqCNoWXmT+cnogYgjeLFYJAL4gUghgK iACCFb+HEYIURYgPggAJiMZQERnKgg8+iAWCBc6HHoIeO4gdgh1IiCeCJxqIK4Ir 04cXghfrhwSCBE2IIoIiT4glBJWogciCIAshEKEQhIIINm1LEE0QNIGboRGCRhAz FEBQABmIPnhkgoiERyWIWAj6kNCeIBI5EC0QxEKITHxGEMUQNFPQJRc4hsD6BAFR C0EzFvUQdLSVpqGgRCHiISjIIhOCjiziIAirIyhcvwoKBAA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/top_menu_right_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhDQAxAOYAADJMLmuhY0htQiM0IG+jZ1h5UWGTWU51SDNNLzBILHqedjhV NCpAJ2iKYFR/TXWnbX2heTpXNR0sG5KviEFjPB8vHSg9JTZSMktyRXSmbE18Rz1c OGBxWZiwjmabXkZqQGGOWQEBAVN+TEBhO5e1jDdUM3ipcXGYbXecc053SG2VaFZ9 T1N9TFuHVnKYbTxaN1qGUlmHUluLVFJwS2WOYEt7RUxzRmKMXWaMXnubc0FhPDZR MnCZaImwf3SacHmedTtZNjtYNmOBXG6VaX2geIizgE9+SXCXa0JkPWOXW2WPYFaD T1mFU3ygeFaAUHWacFiFUzVRMX6td2+UZ9rzywAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAANADEAAAf5gFQkVISFhoQ9h4pUU4SD i1QzhDyQVEWETpU7hDqQAAYDBzIFDRwThwOEUZUmhEieFxQWn6EgBYYlhK2LKBGE UpAKD4S5vAiEvotHAoTDi0MBhMeLUM7Mi0zT0YtK19uKKtvfhycphOaLTxmE64sK FYTwixAShPXzBIT57iOE/YsuGBASuMjHAkIHF91IQIjhIg3XCCrS4AAhpBoVqThU ZMQDoWuKWmwglFERjQ+EPC46EYLQyEU/MBBCuYjIvpaLmrAgJBOSCH2QkrwAEGsW qAO2GlCxQegnJCCElng6GoOUqUMrCAWpJIQQjEodCOGoVCgHWUJhFwUCADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/tm_first_item_left_uns.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAUAIABAE11RwAAACH5BAEAAAEALAAAAAAKABQAAAINDI6py+0Po5y0 2otdAQA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/tm_items_nosel.gif Content-Transfer-Encoding: Base64 R0lGODlhGAAUAIABAE11RwAAACH5BAEAAAEALAAAAAAYABQAAAIqBIKpYe2/1Jsw MopPzHlzvHxdIo5XSSFot7Jt+sIxNNN1c955vc99fCkAADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/tm_items_right_sel.gif Content-Transfer-Encoding: Base64 R0lGODlhGAAUAJECAE11R////wAAAAAAACH5BAEAAAIALAAAAAAYABQAAAI8BISp Eu0fzFkJ2igpulAazT3et4TOSFYmhior224r6skmXb94pu9Hv2PMfMIbEYgrhny/ YRBJU3KY0ksBADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/tm_last_item_right_sel.gif Content-Transfer-Encoding: Base64 R0lGODlhGAAUAIABAP///wAAACH5BAEAAAEALAAAAAAYABQAAAIyBIKpy2HX4npQ Slotw1kn3nlgaI1kZJ5b6jmp+r2wK5eycd14oz98v1MAfcJhkGZMFAAAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/left_block_top_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQEQAOYAAEhtQjVRMTxbNzJMLkdrQUFjPDlWNEx0RjZSMkBhO0luQzNN L094SSg8JVB6SklvQ011R1yMVVR/TUVpQEZqQDtZNjhVNEJlPS5FKmacXlWBTjpX NTJLLjFKLTBILENmPlyNVU95ST9gOk53SC9GK1J8S0tyRT5eOVuLVGifYCY5Ixon GERoP0xzRiIzH1N9TB8vHWCSWCxDKRQeE2qgYliGUVN+TGOXWyg9JXipcTxaNypA Jz9fOhsoGStBKBUfE2SYXHSmbHKlakpwRA0TDFeEUDdUM1mIUhspGWmgYRciFVaD T1qJUz1cOAsQCiU3Ih4uHG2iZVmHUnCkaG+jZ6vJpmWaXS9HK36tdxklFw4UDXur dIu1hRwqGoWxfjRPMCU4In2sdhMdEmCRWCk+JhgkFtrzywAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABARAAAAf/gGaCg4SFhoeIiYqLjI2O j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7nR1Y AiAKIQPBwxAJJQwJE0sjBB8xIlJWNQkSNzYxDh4IPwoFARAtURISAQUEKgJOXhZX JgJAHAYLEzw7GQVZBAYFFwY4IDQ4QGPBARgwThDBkKOCAwUCXiTQ8CDEggoEUFBR AOZDhR0QJmyYEaHFFhEClDAw0IBBhRNIWCzoISIACRk+eGx4ESCFhxEaVHg4MEVH ByAEClhwcMRCExMNfHSggOBAECY5MEBhMOIDhycaJoCY0aBKDwMDBDwYAIAEgQsP /ySwJRFkAIcMCLTQCFBCRo0kJQBYuKEDBQAGERp0cYEARwAuNhAYifBjwZcDKQAI GUKBQgYXGIo8WHGBRYIIDgBscLAi8+bOn0OPLs2rtu3buHPr3s27t+/fwIMLH068 uPHjyJMrX77cFzBhxKAfS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+A AwseTLiw4cOIEytezLix48eQI5V0UkortfRSTDPVdFNOO/X0U1BDFXVUUks19VRU U1V1VVZbdfVVWGOVdVZaa7X1Vlxz1XVXXnv19VdggxV2WGKLNfZYZJNVdplrnHkG mmikmYaaaqyVMYYKZJwQhgsJBRCBggEtiGFEIAA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/left_block_lt_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQANUAADpXNVJ8SzVQMR4tHEpwRDNNLyU4Ip24kkFjPCg9JX6td1mH UmCRWCM0IFyNVXWnbXipcTdUM5e1jFN9TBUfE3mXcVR/TVF2Somwf0VoQEdnQVt8 VGCHWISxfTtZNlJ7TNrzywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAAZMQJBwSCwah5KjEqM8cozJ o8b4UXaMFqXAKDhUNhcKI4AAGAiDxMIxUTaM7yPEOD8qjPdjxLg/Aox/Rw9Gg0cF RocgBxkeY2VnaWsTQQA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/left_block_rt_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQANUAADpXNTNNL36td5e1jFB6SiM0IDdUM3WnbTVQMXipcThVNDxa N0FjPEhtQj9fOmCHWCk+JkxzRjJMLlJ7TFR/TUtyRUJkPVWBTn2sdj5eOYSxfXKl alyMVWCRWImwfxgkFkJlPUdnQUBhO0x0RhonGD1cOCY5I9rzywAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAAZRwJNwSCyeBsak0KNMPozI ZMg4UWqMFCXCuE2KOIQGgED6dEyQDKbCOBWM72TCOE8KjPekwbhPAox/SQdGg0kB RodJIxcRJRIAGwogDhYLCkNBADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/left_block_left_bg.gif Content-Transfer-Encoding: Base64 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 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/left_block_right_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhEAB/AsQAAG+jZ1N9TEhtQipAJzBILDhVNFR/TWabXkZqQD1cOAEBAVaD T0tyRVN+TB0sGx8vHXSmbEBhO0xzRjtZNliFUU53SGuhYzNNL9rzywAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQAH8CAAX/4IWNpEiewjmm6mi1b4tV LS1DLS4/LS87LaAM0CLKIi2kbNBiygotqIzQospYKBnG0OLKDi2wLNEiyxAttEzR YssYLfiwqA207DL8Sa9qtPwyCy2CMhIthjITLYoyFC2ONzlaPieUKkInmCpGJ5wq SiegKk4npCpSJ6gqViesKlgksCdes1piJ7cqZie7KmonvypuJ8MqcifHm3R5d3XN MoAn0SqEJ9UqiCfZKjon3SqWI+EkmiPlJJ4j6SSiI+0kpiPxJKoj9SSuI/mxLbIk tP9shdHSa0RBEsFGJCRRbERDEslGRES37NkeZyr4SPuj5doIjyS2jRBJgtEJk9wk /+3ooeXcOXUVPyXRMm+evSha9u1b0U8LwBE/SeQaMZTEwYMK02h5+FBiHC3r1o3Q iIHqVIt9OAYapOXbCK8kxo0zFwRqzFAzlzTRcu+evipa/PkD2kWgiqIGy2hZuNBh Gy0TJ8JUxiwjzbVPcE6Be6WnjKBBiQ4co/eM0jV/3zydQxjr1cIXoWnlSk0LSZIj UKbWAulE65SwWYJrWZZzJy3v3slDrDhVTsaOszyu+2VyZV57L2cmBnjzWQxSq3om QdUqhmkjsJMACXLkoa4qZVeifclsZ5noecNj23sV8FfBVUC2i4vgcV/KhS035vz8 4OnWVaeFdtp9RNp32GihGv8GC34V3mwQ1paJebcdkZZ6uyV2ym/uNQbfcPLRJ5R9 uiSHH2b6acafbRSBRh1GoY1GQoEYcAdebBGGRd6ELP6XHjuHjcLehot1GB9PINZS 3F0kImfZifv5pZaQGvpWZCtxHRlQiEvWR1mJTwKzVJQQ9VfhmYalCeCAMlpzYIJw LiJnI4/c6M0k4pWn53PR5RZkKUNa+d5bHgpHnJLGjfilk/klhSJzKiJDYYtruvhZ m9d19KY2CD7o4Eo58iiqf9DhdiGVgFZJD4dYFspPklsmKtmiRpko5qMMNbcinzC+ aKl0omW1VWmFdKrCgg1iABZY4uQ5Klk9lmrhj6lWS6T/oEbik+WHh8bK5Lf35RUm QmOmaCYGgkmLZoy+VoopjTZGguN4oZIjIal9nmpthu3ddKW2riLZLV1dKhouBkhh wFe5kJ6bblS9Xqpmu8JuNKybxcZ57Jx1qvDavhjYhEFbrAKs5VxbDGzwyozWOq6j ZDaF7rk+1kyxxOziPCOmBhJrrHeJcOxxx54qi2e90D5L6dJoUbseqteu+i+hJ/uk 8qxeHpzwwrhK6fCkNusc4HTZ8VzjpiH9TMKyR9N7b9L4muo0v0/3O3LJVHP7qsqR YVAUXggfDDO5XWMgc2BgqzuxzmKzWbHP25mm9moby3snqG7vaW+0+c4dMoZSY9vq /+h6C8wlouCy7HLLt7Zubq6Rlsl5xMC6+3jZF0du+dpt6/jD20wr3vTwUNMt+t1T Y7ATBnL9WXfU/g6q/LaGnu5t1qqLyzrhrjcM+9ez/zr24jvfrjvGaqPGoNCuET2v 0Zj7DvxLwtfvjr7PGx/6/qTnXb3pqCOYrPzWpNVBiXuv89quZMcr8dHOOgTSFOQ4 pbHLWbBeY8GASxLXOeKBTGQkS97ymgcrAaYOa2Da3uBW+L0WSmqB67Jf7W5GQwia LV7pUxD7ePe+ZiFNg8CzWQeBNCWQRY9/Jkvi/5hnNethD4Xb21qjXGg4Xb2wgbbL 2QwtxsUJnm13n3IWBjK4wf/w4U83nyseEt0yvWwtEWU1CRQS/dfGqpUwZQWDogG1 d0AWKvCPDAxkDKMjIAcGq4voO18FMaA+ZLHGfRcMIwZ3tDksOg2NcVTVEftXx9Ix 8Y59+1sB+dg9hTGMik6BYfAISbYtuhJ3iFRkz3IIRviJkYxBrN8Q71fE/K0Rb518 YxMDqDrAHcVWCPQeIFN5xbgZMovli+UsZZm2RVLuJHbi4S0pCbdBOk9/m0Se9Eao JROas5ijDNzLTFm4w9FMlw+M5yGj6cXuMHJy66sc2uzJtvj5cH4clJsHfQlCu9GR nJ48ZygHSEp1TrEvVUygIGdmRvKNT4uwpGcip0nBjr53j1ljFGM3gVjRgWISdOFk o06otzcn4nGAxhQcO0sJSHeqUojyhGZGd0pNe55Gh/r8aO/+qbmR4nRaA9VfQaGn xGC2FIDXe+kJCUirhrIQog+xzkRotA57UgWkVMmgdugHkuisA43vENk82HiP5e0D Zf7oW1AAFwIAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/left_block_lb_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAMQAADtZNjpXNVyNVUpwRFiFUZiwjlZ9TyU4Im+jZ1N+TAEBAVJ8 S0FjPJ24kmOBXB4tHCg9JVmHUktyRWCRWExzRkVoQFt8VFaDTxUfE0ZqQFF2SnmX cVN9TNrzywAAAAAAACH5BAAAAAAALAAAAAAQABAAAAVJYLNZGjYtTHAMDxQJXCfP ckbLyj3nt6TLvhvi1xneYj8kTXnUJYjP20XWqABOqVXrxaRRdABi+EYglm8GYvrm ILZvBWKcSL+FAAA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/left_block_bottom_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQEQAOYAAEhtQjVRMTxbNzJMLkdrQUFjPDlWNEx0RjZSMkBhO0luQzNN L094SSg8JVB6SklvQ011R1yMVVR/TUVpQEZqQDtZNjhVNEJlPS5FKmacXlWBTjpX NTJLLjFKLTBILENmPlyNVU95ST9gOk53SC9GK1J8S0tyRT5eOVuLVGifYCY5Ixon GERoP0xzRiIzH1N9TB8vHWCSWCxDKRQeE2qgYliGUVN+TGOXWyg9JXipcTxaNypA Jz9fOhsoGStBKBUfE2SYXHSmbHKlakpwRA0TDFeEUDdUM1mIUhspGWmgYRciFVaD T1qJUz1cOAsQCiU3Ih4uHG2iZVmHUnCkaG+jZ6vJpmWaXS9HK36tdxklFw4UDXur dIu1hRwqGoWxfjRPMCU4In2sdhMdEmCRWCk+JhgkFtrzywAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABARAAAAf/gB1YAiAKIQOFhxAJJQwJ E0sjBB8xIlJWNQkSNzYxDh4IPwoFARAtURISAQUEKgJOXhZXJgJAHAYLEzw7GQVZ BAYFFwY4EA0HNAsHMDAnRBg5FQ4KAi8JGg8hCxUEKFQKYB8VOxATGzMRLVsiAkoM Bg0MFSdILAs9IgEkMj48Gy8BUngYoUGFhwNTdHQAQqCABQdHLDQx0cBHBwoIDgRh kgMDFAYjPnB4omECiBkNqvQwMEDAgwEASBC48EACTBJBBnDIgEALjQAlZNRIUgKA hRs6UABgEKFBFxcIcATgYgOBkQg/Fnw5kAKAkCEUKGRwgaHIgxUXWCSI4ADABgcr /7p+DTu27Nm0ZvLq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr 3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLpiyIkCFEtxc1ehRpUqVLmTZ1+hRq VKlTqVa1ehVrVq1buXb1+hVsWLFjyZY1exZtWrVr2bZ1+xZuXLlz6da1exdvXr17 +fb1+xdwYMGDCRc2fBhxYsWLGW3U0UchjVTSSSmt1NJLMc1U00057dTTT0ENVdRR SS3V1FNRTVXVVVltJRdYYpFlFlpqseUWXGWMoQIZJ4RhQgFEoGBAC2IYMduOPPbo 449ABinkkEQWaeSRSCap5AuSTDbp5JNQRhllIAA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/left_block_rb_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQANUAAFN9TEtyRUxzRjtZNmOBXFZ9TzhVND1cOJiwjkZqQAEBAW+j ZzpXNViFUVB6SiY5IxonGHKlalyMVVWBTlaDT1N+TEx0RkBhO0htQj5eOWCRWEJk PRgkFjxaNzJMLik+Jn2sdkJlPUFjPD9fOtrzywAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAAZUwIvEgWE4IBzN45MBBUSk A2lKTVCvJCtWgaVysYHuNIxdiElmLOC8VrO7lbNlIjh4GBFDaLTpGKgUXQJng1gD Z4dYDWeLWAVnj1gEZ5NYCGeXZ11BADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/passport_top_bg.gif Content-Transfer-Encoding: Base64 R0lGODlh9wADANUAAFR/TVmIUl2OVmifYFmHUmqgYmCSWGacXmWaXVaDT3CkaFyN VWmgYVB6SmOXW3ipcFJ8S1WBTnOma3WnbU11R094SXmqck95SUx0Rm6jZm+jZ3Kl alN+TG2iZUluQ4Gveneob0tyRU53SHurdExzRoKve4CueXysdUhtQmuhY1iGUWGT WV+QV1uLVGSYXFN9TFeEUFaCT2abXmKVWlyMVWedX2OWW2CRWFqJUwAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAD3AAMAAAb/QEhNFrvBaoGZLTGh4XAq RGuiotEMikdLlQrcXgnaYYBDzF6EyM1QmS1wFoDkUWnhZLWBrcaSGWgxAjcEKhQs Ejc2MDEsFgIxMhECFy0xBRg2My02NwwwAC8rCjV7AQYrMgcpdxkxLjcBEhouMTgK Ly84GjRnBTUrNTgPAwksDCorMIkvNKEzKzMwDSkwAxQPNgcQYBOkFwkKCgIjAwsq BQY4LL80LgUwFh0QFA4pnSksAQfFBxsONQAuXLDRgYUNFwAMuLAQIMA4GSoagABA QkINGg0ASEFQIEaKEC5cIGCh4gYOGwxWEbhBo8aGAh1gzJCAIwVEGjcOwKDRgoA6 /wwZFhDgIKJCvn8dNGFsEGPACgLRFhi50ckGARc2ULQYoOLUmxsJBrjYVICqigk2 Noh4ZUKTzTIzTkrBCiOFigMHLt6IgWBADAMNPgAQQsQIEiVMnECRQsUKFi1cvIAR Q8YMGjVs3MCRQ8cOHj18/AASRMgQIkWMHEGSRMkSJk2cPIESRQrJqVSrZLR6FWtW rVu5dvX6FWxYsWNoKrhw8MwFDAENXtgwUGDCgQAXdMcF4CJCJggbnghggSNCDH82 FGA4ICCFAAEtNBCAEQEYDRkrBIQAQAGEDAcDEDDABmw8MEgCLrzAxQR4tODCAjAs EIAHO7E3yAMAwFAAAi0tAJhBDJ8IUEIkAiAAgE8JEJCBIC5QgMAKLKTgQAMy4JdC DRDAYAMLB3DwhA00BHBCDB7Yw8IA+CDxggwAzOACBzR8UEMNBDRgg1Q2xMELDSwo EMAxHHBRAA0paJAhCRgA9swKBRQABQUQsLCCVDHMQAEANiBwwAovMMBACxi4E9YL DkCEgxUxrDBAJQrcUEAAL2TgwgwGtOBAEAA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/bloger_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhZACoAOYAAG+Wam6VaW2UaGuSZmqRZWyTZ2mQZGeOYmiPY16GWWCIW2aN YWWMYGCHWmKKXWSLXmSMX2GIW2iQY2GJXF+GWV+HWl2EV2ePYmOKXV6FWGOKXmeO YWKJXGaNYGaOYWSLX1qCVVyEV1yDVl2FWGWNYGOLXluDVmuSZVuCVWWMX1mBVFiA UlR8TlZ+UFmAU2uTZliAU2mRZG6WaVd/UW6VaGqRZE11R1mBU1d/UmmQY22UZ1d+ UWqSZWGIXGiPYlqCVFN7TVqBVFB4SmyTZmyUZ2KJXVZ+UVJ6TFV9T1yEVlZ9UFh/ Uk93SVV8T1uDVVJ6TVV9UE52SFF5S1R8T1N7Tk92SVF4S1N6TVJ5TFR7Tk93Strz y1F5THCXawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABkAKgAAAf/gF2CAQEAAAEyRAUChACC j5CQAQICBwgvAQWCAoskGAKHAZGjXYWkp6ipFhmlW5OTlAUDAwYxBAQXHQkXPQ8H JBUVCkk9ESEfDgRDXQIVDSIrGSJIQisaGzkbDwsFATSOqRAOqaOiXQACLzE5Ag43 KgdZOKXmqOCRCAcwEZmnQExOQlSwECJDiRIRnokwMcKCCYYgVlCIcIGAIBpdLiSw 8MBHCgwYGBxYMIEBBAYbtFn44UHDAEgAQLAAcYACEkkRBsRAEOMUAA8TNtwTdGhQ FwMXGpjAEUEBCAoIEAyVMSDDCWYjHUSAAcKIFShBgDTggMIEiBE7WKxo4CDBhAQo /0IEmTJjQwYYJLqcoHAEiAkUHHbYmPDoJ4cPDBxsG1CDEgENERAMUGZgAy0MJC5M QALjRoMaXXS9SCFhgy4QBBWswDHBAgIJEsQVodDg0QENBgxYsKDhwoMLMU7kwNBA wQ8f2yYkcbKjBZIdR/ruCOHCRAsbLWp30SHohQMXT4CEaAHkSBArGRQ43DEihIgk JiqEMCHiwwMFRljsgMtkhoMREDwwQRMmsPDDAwkQJ80MCizwwQFdaHCDCBBooMko 6mWwggsfJJCAEQ5oAAIDCSz4AwQBiMBBAzZokAMkDRyhQgkCeMCBAAswwMACFrAg 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 Qr7tAsACJjTwUuq1Ci+wAO/ZDf/zQK/ugQAAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/passport_left_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhAwASAdUAAGmgYVuLVFN9TFiGUVR/TWKVWlyNVWabXlWBTmifYFaCT2uh Y22iZWWaXWqgYmacXlB6Sk11R3Oma3CkaG6jZk94SXWnbW+jZ3KlakxzRk53SHip cHmqclJ8S3eob0tyRU95SUx0Rn6td3SmbH2sdnipcXysdXurdElvQ0luQ1aDT1mI UmOXW1eEUFyMVWedX1N+TF+QV1mHUl2OVmCSWGGTWWSYXGCRWFqJU2OWWwAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAADABIBAAb/wNhNVVNFaBFHo1YROF6E HIwwkyVwBpzMpiDVcoXAxLJQsZyEGu7iWr1aM2nLsMJBXARByGZbxSo1DAw0LTct LTkuLzYPLDUeKwU1NhQTLxE5NZEDbg0FOBIyAQozBo4sNgE5ADcCOAIHEB4ENwkQ CGAAAAMcAzQ2AC0BM8ILIgcwKw8UGBwEEgs4B6wCMAMLNhY2FS8wcQg2HTUHSwsr OTcINDUtNScZCGkDCQroMwAcCWcxMPQOBR0IHLgR4wEoKUMMqMhkQwCLBgYKNMiR Q4WJa5dyVLghI0QcF/QI/JohwIYBhSwMzJih4kaOEYRUvHhxg8aFGBpIWOGXY4YE /w80AkSAAQAHCxUNVrRgMeBGgBcHFABgsCDBAxo0WCBYAaBAqAAFDsi4h2GDCggs YFD4oMCCjA0ErKn4wOdAjQVOoARwgUPIAgI4XBwgsIIFxQSQxgyI4aADYwKIClTA cQNHDpMzcIBQQJSvDRxqKKiQkSHBixkBcAxQMYOCgBwPbqwA4QLGgwlLGawY0OAG uQQ1grrw5IJnABltVhhwwQ3HAwM5kDlg0CKGhBs1XgxynkHFBoIBNACYcIMBBlDA ZFBhYO1Chg8zYvziQFGGt8oIAASNgGECgBkKTFANBDjMEEEGWoWxwAxERcDFAHKR gsMGCTDwgAtMwZADBBDMsf+CAyAQwEICNiRAgxka2ADBAAjEkIM6DTwgQTcsLMCA ADVAIIMINRjglAJcHHCBChfI0AINN0hgwAAOFIgDAi8UhYACKRrwQg0u8CXAeU8u hAADvsWgVQUPRECBDAXEcEACAtzAggw50DDBBQLI5EIBAhRgg4YvJLCEEDdMkMEG MlBQQwwjFHCHbx3Y8IIAEBjCwgHV7XUcDis0QIAMOFCgAA1f3jCAXSoEQIMBCNyw wABXuSCDDA4kUMACEQgwgQElXEIBMTF0gIIMNTjwag4pyLACAxbUoAAGjgADzA0Y 5vDGCr8cgohNApBBQAwzIFAbASHQAMECMSgnHgYIsBYVgydBWXBAlMwpEAMHdUiw 1wAtDBIEADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/lined_h_line.gif Content-Transfer-Encoding: Base64 R0lGODlh+wABAOYAACxekTRvrCBEaSpajBs6WTFpoi1glSlXhyFHbSROeDl6vCpa ixMpPzZ0szVxry5ilx09Xh4/YS9kmzNtqRgyTTNtqDt+wi9kmiJIbzBnoB9CZitc jxw7WyVPeitcji9lnSJJcB5AYzRvqxw8XB5BZBEjNh0+X0WFxyxekiZRfiVPexg0 UDVysSRNdyBFajVxrhAiNCdTgSdTgB9DZxk1UjJrpjBnny1glBUtRSlXhjFpoxo4 Vjp8vzh4uhEkNylYiQ8fME2LyjJrpUqJyTZ0tE6Lyjp8wAwYJQIEBjyAxVCMyhcw Smmd0i5imA4eLkeHyEGDxhQqQVaQzBgzTw0bKjl6vRs5WDh4uQcPFwQHC3qo1z6B xTt/xCFGbDd2t1OOy4Cs2SRMdSNKciNLcyhVgyhVhAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAD7AAEAAAf/gGQFVQMNMSMKFWIjYwtQ DFEuNyAESAIvHQoDSQkLY2EoP2RbLQFAHksXAjJWYmU5ARZCG0EDAmQOBDIdD00m IwEPOxZFBTBhDSchDTQpAl8eHmIcZE4GOGUUGwc6FFQSYiQFERwfUikvJRNMGBIY YxkBImErEQ4AOj4IWAoNNjEryPygcSEMjwoJMGhwYcJCmTABTngxAgHAEBAKaoRo caAChDBjNCAgc4SLCg0UYPgg0+WCCB4oxCRgwGAHiwEzAEBQUQZCmTJEHsz4YCDL GBYkFmzogOAABwc2xBi48iqEkhtPSnw4oAXAmB41EBQAAOJBhjESDEToQWLCBBEJ DMoQyJBrAQMwU3AEAgA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/lined_v_line.gif Content-Transfer-Encoding: Base64 R0lGODlhAQDkAOYAAC9kmgwaKB5BZDZ0sxs5WBYuRylYiSNKchw7WzNtqSpajC5i ly9kmxgyTSRMdSJIbzNtqBcwSjJrpSZRfhcxSzl6vS1glRMpPyVPeyhVgyROeChV hCJJcFCMyilXhh0+XzVxrxo4VhIlORQrQh09XjBnoCFHbTZ0tB5AYydTgRUtRTyA xRo3VRQqQUKDxiBFahs6WTRvqyBEaSZRfUGDxitcjjRvrCtcjy5imEeHyDFpojp8 vzt+wiRNdzBnnxMoPhYvSDd2twkTHV+Wz1aQzAsWImab0TJrpk6Lyi1glDVxrkuJ yUqJyU2LyiFGbD6BxQ0cKylXhyxekkSFxxUsRDh4uRk2UzVysQ4dLRImOiVPejd2 tkiHyCNLcx4/YRg0UHuo1ypai1WQzDFpoxw8XB9DZx9CZidTgC9lnQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAOQAAAfvgGcNKl9mDiZEECIWB0lc DAICTgs7Wj81ZxsfACBmYj4EODJjP2YHGzQEGBEQHGYMIWgDBE8hLxUnFEoKYCIV aD0jGygTA2cACDwdZSZoLVEMLx4SOQkPXhklExYAK0JQGhQFICQqCRIwGQVlFUU6 DTthNS4wMQFAOAsNHywxMjYLkBigQIAEBwcYliSIYGSFjwwGPGzjkeKBggIHqtCw gqDJqhtZLlwYcGOLjTILugTAooEDAAMKBEhAcIUKgwBSWgiY0aMMmRkIRhgLcEKD mRJTClxAEQQNGgUQOjgYcuAMmgRMWBwxoKOiixxlAgEAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/lined_block_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhMAAeAPcAAPz9/Pz8+/v8++7x7brJuOvv6vn7+dzk27vKuNnh163Aq/P2 8+vw6+Dn35+0m8nVx+3x7NDbz+/z7vr7+qe7pKy/qdni2NHbz6S5odri2b/OvcLQ wNPd0qm8ps3ZzK/BrMvWyaO4oL7NvNLc0JuymLTFspivlfD08LnJt9/m3sXSw7zL usvXyuft5qK3n6C1nbfHtbjItePp4rbHtL3Mu5Sskaa6o52zmd3k3Pn6+bXGs/j6 +M3Yy/f59pauk+nu6PX39O7y7rvLueTq4+zw7Nfg1s7ZzLHCrsTSwqq9p+jt58PQ wbLDr+Lp4eLo4ff598TRwpGpjXuZd4iihPL18tvj2urv6cfUxfDz75CpjOHo4MHP v5Orj5Krjv39/aW5oqG2nn2aeeXr5Ku+qL/NvcLPwLTFsZqxl52zmmyNZ4ahgbjI tubs5cbTxNXf1Ki8puTq5IijhN7m3Yulh4GdfPX39enu6Y2niZivlK/Brfb49sjU xnyZd9Lc0bPEsJeuk2eJYpyymfT287LDsGGFXNTd0q7Aq4eig/7+/v///wAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAwAB4AAAj/ABM9QPQjSaJEIQIkUpDo AI1EhuwcnEiRIgQdBQ5eIJCnQMYICM5sSCTgII8MAgId7FAlEQIiiUgkqlOyos2D IAhggHBQQoUpCBINwHGDghQDiRgUSeTgiUsWiRbAdDLgpk1EE39Q+MBj4gEHaGQw SHSCS5qDJRv0SJRABUWsVisigpsIEY4SPhJMOCgnigIYBxnQnRjkQNzDdW2CcAEG y8EBMkJ8gEJhMOLLFMUMmQjhDx4hFC90oIO5NMUAI2occDKRhoIwDXIc9NLEtO2D GXS8gQNg4hUSLizcfmsawIUIMURMZNNlThIJwwFYvkyl0KEHSw8u0UAoxG1ECkuH /yd5QMiKFhMNjPneG/OODUdIHmxC4sWM4ZenC0KEIKcH2YkooUYMHOBn1XRwIWJA AjAwUQF6iYwggg1GGHgTXXPZ5McKWTQwQiJDvHCDhbZBd1AKKpQww3RxZWggABqg sNdBShDABwcZIQbeeMMBsYAPARhRgB4HLfDAF5gh0h5+TAxCVgEKbLADibcJMMEa eyAwAAARHIAET1Ta9oQGLCAhVCIVkNFAmKYZMIANGERgRSJbxFeRdGxOBMBaE3mA QgciGKCFiwcRyuYCHBCQAkVmYGACEAGwmOdBFjxgQhBIFVoDIIZOapMbDjjgAUUJ kChpXBIQQEEZfXh6WwIZxBWxRBuduhqXBXd8UNWpttWKGAMTBAQAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/lider_fon.gif Content-Transfer-Encoding: Base64 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 1rv+9bCPPd6DAAA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/message_left_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhBgCtAMQAAHCjZ1R9TCtAJwEBAUdqQD5cODlVNExyRUFhOyAvHUltQh4s G2ibXlV/TTBILFeDT1R+THWmbE1zRjtZNlmFUdrzywAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAGAK0AAAX5YCWKxSgSZjWkRwqkAZxC 6ZNK6ZRSaZQmqYUrhUgJUoaUI6VINVKMVMmEMq1MLdPLFOPOarfeLzg0FU1HU9K0 NDVNT1PUNB1VR9dRdrQddf1fJjYmOCY6Jj4mQCZCWkRGSEpMTlBSKXcieSJ7In0i f5+BI4MjiSOLI418j2iRbJNwlXSXKZoVnBWeFaAVaSNrI20jbyNxI3MjdSe1LGWA XiY0gmGGO2KKZI5mkGqSbpRyllTMWM6h0CPSo9SlY4zmFWcjviLAIsIixCKoIqqd rPNcBYNVTFYyWlbAHRNnh5weeLx4qRNBSkShEYfaYXunbYQ8EfQqGAgBADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/message_date_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhoAAcAOYAAEJjPDRNL0puQ1V/TUFhOz1bN0hrQTpXNU51RzlWNDZRMTtZ NjBILFF5SSAvHVB4SU10Rl6NVUBgOitAJ1R9TEZpQE93SCY5I2WYXDNMLnanbVqH Uj9eOUltQlJ6SkNlPTJKLUBfOnqpcVaBTik9JSk8JWGSWFN8S3CjZ3+tdyU4Ik1z RjlVNERmPoaxfg0TDFR7TF6MVS1DKVR+TGeaXW+iZRklF0xyRVJ2SlmGUUtwRC9H KxsoGWSXW12LVAsQCpe1jEVoP524kh8tHHqXcRwpGWicXjZQMRUeEyxBKDxaN22h Y2ygYnGkaH2rdFeDTxciFR4sG1x8VHWmbGqfYDdSMi5FKi9GKzhUMzNLLkpvQxUf EyM0IBYfE9rzywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACgABwAAAf/gF6Cg4SFhoeIiYqLjI2O j5CRjECSlZaXmJmajDCbnp+goZoDoqWmp6dHqKusrZEfrrGys15ctLe4oiK5vL2X Kb7BwodCRFI4XVgnAAcqOkMkGxEUICkFEQINGdjaCAQnDwQVTxYGLSYSGzQ5BAM9 MyYeDFVbAgAKCCs1AwMKAAYXCvxwwWLHjQIYsiQIUCHEBCMAbBhIAOBDAhIISkBg EgCCAwccXlgRscCDgAIUCIzQ0iDAAgM+UAhQ0WLBBAQVDiCJscKJhAJQHiQo8WAB hyJBAvCQoOCKjCQhDlBQQIWBhREXGEBoogQEBgMADB0YRrbsIA1m0woLoLYtL7Ru PuPOYiu3bqsOdvOiWqK3rygLfgN7miK4MCYHhhNLiqK4sSMUjiMrIiC5sqEJljML YqE5M4POlvGClkxqtOFAADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/nota.gif Content-Transfer-Encoding: Base64 R0lGODlhUAEuAPcAADJKLUltQtHrwqTDmVaCTrPQpmeMXzlVNMrlvLbSqWOUWnue cp++lICid36gdcXgt2WKXdTuxlF4StfwyBsoGXSma1uBVJ28klJ5TExyRW2hY1qA Uy1EKZW1ij5cOE1zRluCVFV8T2eaXVh+UVR7TlZ9UJOziFV/TWOIWyk8JTdRMkFh O0NkPTxaN1qIUkdqQF6NVVmFUWibXjpXNSQ1IVB4SSEwHkpvQ3qpcY21hQEBAVF7 S0RmPkVoPytAJw0TDBEZEHGVaZ6+k2iNYGSJXKbFmmuQY6jHnGqPYm6SZm+TZ6nH nWaLXqnInaLBl6LBlm6TZmmOYZCxhqXEmrrWrW2RZaPCmG2SZbzYr8fiudnzynaa bqjGnM7owH2fdHCVaGWLXnmdcHOXaqrJnpu7kH+hdsLdtHmccHSYa3WZbXOXa2yR ZKfGm2CGWbHOpcjjurnWrJq6j67LosHcs7vXrl+FWH2gdHWZbHicb2+UZ3CUaL/b sl6EV4ipfqzKoHGWabLPpb7asbnVrFmAUnibb3qdcbLPpn+idnyfc4epfYWnfHaa bb3ZsKrIno+whVl/UrjVq092SWGHWqzJoLXSqMTftnKWak51SIKkeaHAlqPCl7fU qqfFm7rXrXSYbMDcs8bhuMnku12DVpe3jHqecbDNpMHdtLTRp4iqfoqsgMLetYGj eImqf9nyyrTRqKvJn9Ptxa3KoYeofaDAlYSme42ug7jUq4utgZ+/lJW2i6/No4yt grHOpIqrgMPetYOledfxyJ69k4mrf63LobbTqa7Moq/Mo4KkeHebbpm5jpKyh6XE mYaofI6vhGOJXDVPMIWne1R9TFZ9T83ov9TuxYSmeszmvs/qwVB3SoOles/pwZi4 jUJjPE93Sdbwx9PtxMznvk93SMPfttjyyXCjZ5y7kdLsxE52SJa2i8vmvT9eOZS0 idXvxousgc3nv5O0iVN8S2CQV5y8kYiygNHrw3iob87pwJGyh2GNWYGreVN9TFJ6 SmugYV2LVE11R9rzyyH5BAAAAAAALAAAAABQAS4AAAj/AP8JHEiwoMGBsCIcJKhF YEMtDx0KFLBQ4IRv/x5ClNhw4MaMHv99A1axpMmTKFOqXMmypcuXMGPKnFlwkL+b OHPq3LlzVkVkPIMKxemAptGjSJMqXcq06cIQQ6PuHFBxi9SrN7043cq1q9evYEuS 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 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/message_right_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhBQCRAMQAAFR9THCjZytAJzlVNEltQkdqQD5cOFV/TTBILCAvHR4sG2ib XgEBAUFhO1R+THWmbExyRVeDT01zRjtZNlmFUdrzywAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAFAJEAAAXCIFCNlUg6ZBWlUvqkSaqk QdqkQjqkSEqkh9QiZUgVUowUhJYyjZwVFGlFapEmLpiMSbqRcqQdqUf6kYKkIalI OpKSpCWpRoJCpSPq6EWKkWZzNjg6PD5AQkRGSEpcT4NhhWWHaYlti3GNJU0peCos KVgkFFl9W4FdjyNiI2QjZiNoI2ojbCNuI3AjciN0jnWcKXoVVntaf5leI2Cqka7G I4C8gl+EY4ZniGuKb5OylbaXupl2wFOfV6QjftDIqRWrFSEAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/message_bottom_bg.gif Content-Transfer-Encoding: Base64 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 iEykIhfJyEY68pGQjKQkIxkQADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/message_b_l_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhBgAOAMQAAFV/TQEBAUdqQHWmbD5cOHCjZ1R+TDBILEltQmibXkxyRVeD T524khYfE1R9TFJ2Slx8VHqXcdrzywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAGAA4AAAUfIBNBT3NIKIqkKMBKyUuI ZCO8wau8xev4L8Nr8RqEAAA7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/themes/409/message_b_r_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAOAMQAAFV/TUltQjJKLUhrQTBILGibXleDT2WYXHWmbG+iZXCjZ1R+ TAEBAUdqQDxaN0JjPD5cODpXNUxyRVR9TNrzywAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAFAA4AAAUeICEcwxNQKAWkVMFCbJNM kcOwEquwE88uLAMLwQoBADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=409.css Content-Type: text/css; charset=windows-1251; name=409.css Content-Location: http://img.mail.ru/mail/ru/css/blogs/409.css?10 Content-Transfer-Encoding: 8bit body { background: #DAF3CB; font-family: Arial, Tahoma; font-size: 12px; } table { font-family: Arial, Tahoma; font-size: 12px; } a { text-decoration: underline; color: #0857A6; } p, form { margin:0; padding:0; } img { border:0; } a:hover { text-decoration: none; } h1 { margin: 2px 12px 10px 0px; font-family: Arial; font-size: 16px; color: #003073; } div.line { clear: both; height: 1px; line-height: 1px; font-size: 1px; } .png { //background-image: none ! important; behavior: url('http://img.mail.ru/r/blogs/pngfix.htc'); } #body_bg { } #body_div { } #body_bg img.left_corner { position: absolute; left: 0; top: 0; } #body_left_bg { position: relative; } #main_table { width: 100%; } #bottom_space { height: 25px; } /* body shift */ td.left_top_shift img { width: 21px; } td.left_bottom_shift { width: 19px; } td.right_top_shift img { width: 10px; } td.right_bottom_shift { width: 12px; } /* top menu */ #top_menu { margin:12px 0 0 0px; } #top_menu td { vertical-align: middle; } #top_menu #blog_mail { width: 25%; } #logos { margin-top: 2px; width: 100%; height: 35px; } #logos tr { vertical-align: top; } #logos_left { width: 1px; } #logos_left div { width: 1px; height: 28px; background: #00468C; } #logos_center div.logos_bg { padding-left: 11px; height: 30px; background: #00468C; } #logos_center div img { margin-top: 3px; } #logos_center div { height: 30px; background: #00468C; } #logos_right { width: 77px; height: 35px; } #logos_right img { background: url(http://img.mail.ru/r/blogs/themes/409/bm_l4.gif) no-repeat left top; } #top_menu #left_bg { background: url(http://img.mail.ru/r/blogs/themes/409/top_menu_center_bg.gif) repeat-x 0 1px; width: 13px; } #top_menu #left_bg div { position: relative; top: 1px; left: -12px; width: 13px; height: 47px; background: url(http://img.mail.ru/r/blogs/themes/409/top_menu_left_bg.gif) no-repeat 100% -2px; z-index: 5; } #top_menu #left_bg img.png { position: absolute; top: 12px; } .menu_bg { } #top_menu #menu_items { position: relative; top: 1px; width: 100%; height: 49px; background: url(http://img.mail.ru/r/blogs/themes/409/top_menu_center_bg.gif) repeat-x 0px -1px; } #top_menu #menu_items table { position: relative; top: 5px; width: 100%; } #top_menu #right_bg div { position: relative; width: 13px; } #top_menu #right_bg div img { position: absolute; top: -24px; left: -1px; width: 13px; height: 49px; background: url(http://img.mail.ru/r/blogs/themes/409/top_menu_right_bg.gif) no-repeat left top; } #top_menu #menu_items td { height: 20px; } #top_menu #menu_items td.menu_items { padding-right: 13px; } #top_menu #menu_items td.fl_sel { width: 10px; background: url(http://img.mail.ru/r/blogs/themes/409/tm_first_item_left_sel.gif) no-repeat right bottom; } #top_menu #menu_items td.fl_unsel { width: 10px; background: url(http://img.mail.ru/r/blogs/themes/409/tm_first_item_left_uns.gif) no-repeat left bottom; } #top_menu #menu_items td.c_sel { padding: 0 6px 0 5px; font-weight: bold; text-align: center; background: #FFFFFF; } #top_menu #menu_items td.c_sel a { color: #4D7547; text-decoration: none; } #top_menu #menu_items td.c_sel a:hover { text-decoration: underline; } #top_menu #menu_items td.c_unsel { padding: 0 6px 0 5px; background: #4D7547; text-align: center; color: #FFFFFF; } #top_menu #menu_items td.c_unsel a { text-decoration: none; color: #FFFFFF; } #top_menu #menu_items td.c_unsel a:hover { text-decoration: underline; } #top_menu #menu_items td.r_sel { width: 24px; background: url(http://img.mail.ru/r/blogs/themes/409/tm_items_left_sel.gif) left bottom; } #top_menu #menu_items td.r_nosel { width: 24px; background: url(http://img.mail.ru/r/blogs/themes/409/tm_items_nosel.gif) left bottom; } #top_menu #menu_items td.r_unsel { width: 24px; background: url(http://img.mail.ru/r/blogs/themes/409/tm_items_right_sel.gif) left bottom; } #top_menu #menu_items td.lr_unsel { width: 24px; background: url(http://img.mail.ru/r/blogs/themes/409/tm_last_item_right_unsel.gif) left bottom; } #top_menu #menu_items td.lr_sel { width: 24px; background: url(http://img.mail.ru/r/blogs/themes/409/tm_last_item_right_sel.gif) left bottom; } #menu_items #login { padding-right: 7px; vertical-align: middle; width: 35%; font-family: Tahoma; color: #000; text-align: right; } #menu_items #exit { vertical-align: middle; } #menu_items td input { width: 44px; font-size: 11px; color: #000; } #part_links { position: relative; top: -6px; width: 100%; height: 23px; } #part_links a { margin: 0 5px 0 3px; } #part_links img { position: relative; top: 5px; left: 5px; } #part_links td { vertical-align: middle; } #part_links input, #part_links select { position: relative; top: 3px; } #part_links input { margin-right: 2px; width: 122px; } #part_links select { margin-top: 1px; width: 139px; } #part_links #send { margin-left: 1px; width: 37px; height: 19px; font-size: 12px; } #part_links td p { padding-top: 4px; } #part_links td.help { padding-top: 4px; width: 69px; } /*left_block*/ #left_block { position: relative; margin-top: 4px; background: #DAF3CB; } #left_block td { vertical-align: top; } #left_block #left_block_top_elements { background: url(http://img.mail.ru/r/blogs/themes/409/left_block_top_bg.gif) repeat-x left top; } #left_block #left_block_top_elements .left_element { width: 16px; height: 16px; background: url(http://img.mail.ru/r/blogs/themes/409/left_block_lt_bg.gif) no-repeat left top; } #left_block #left_block_top_elements .right_element { background: url(http://img.mail.ru/r/blogs/themes/409/left_block_rt_bg.gif) no-repeat right top; } #left_block #left_block_content td.left_element { width: 16px; background: url(http://img.mail.ru/r/blogs/themes/409/left_block_left_bg.gif) repeat-y left top; } #left_block #left_block_content td.left_element img { width: 16px; } #left_block #left_block_content td.center { padding: 2px; } #left_block #left_block_content td.right_element { width: 16px; background: url(http://img.mail.ru/r/blogs/themes/409/left_block_right_bg.gif) repeat-y right top; } #left_block #left_block_content td.right_element img { width: 16px; } #left_block #left_block_bottom_elements .left_element { width: 16px; height: 16px; background: url(http://img.mail.ru/r/blogs/themes/409/left_block_lb_bg.gif) no-repeat left bottom; } #left_block #left_block_bottom_elements { background: url(http://img.mail.ru/r/blogs/themes/409/left_block_bottom_bg.gif) repeat-x left bottom; } #left_block #left_block_bottom_elements .right_element { background: url(http://img.mail.ru/r/blogs/themes/409/left_block_rb_bg.gif) no-repeat right bottom; } #left_block .center .bloger_top_element { overflow: hidden; position: relative; height: 3px; margin: 0 1px 0 1px; background: url(http://img.mail.ru/r/blogs/themes/409/passport_top_bg.gif) repeat-x left top; } #left_block .center .bloger_bottom_element { overflow: hidden; position: relative; height: 3px; margin: -2px 1px 0 1px; background: url(http://img.mail.ru/r/blogs/themes/409/passport_top_bg.gif) repeat-x left top; } #left_block #bloger_grad { margin-top: -2px; width: 100%; background: #70976B url(http://img.mail.ru/r/blogs/themes/409/bloger_bg.gif) no-repeat right top; } #left_block #bloger a{ color: #FFFFFF; } #left_block #bloger { background: url(http://img.mail.ru/r/blogs/themes/409/passport_left_bg.gif) repeat-y right top; } #left_block #bloger div.right_bg { background: url(http://img.mail.ru/r/blogs/themes/409/passport_left_bg.gif) repeat-y left top; } #left_block #bloger .right_bg .bloger_content .bottom_bg { padding: 4px 15px 10px 15px; } #left_block #bloger .right_bg .bloger_content .bottom_bg #pasport_top_images, #pasport_bottom_images { overflow: hidden; position: absolute; height: 1px; } #left_block #bloger .bloger_content #user_status { width: 223px; padding: 2px 0 12px 0; } #left_block #bloger .bloger_content #user_status .right_corner { position: absolute; } #left_block #bloger .bloger_content #user_status a { margin: 0 3px 0 2px; font-family: Arial; font-weight: bold; font-size: 16px; } #left_block #bloger .bloger_content #user_status span { position: relative; top: 1px; } #left_block #avatar div { background: #79A9F3; } #left_block #avatar div img { margin: 5px; } #left_block #bloger_pages p { padding-bottom: 1px; } #left_block #bloger_pages p a.active , #user_services p a.active { font-weight: bold; } #left_block #bloger_pages p img, #user_services p img { position: relative; top: 2px; margin-right: 5px; } #left_block #user_services { margin: 14px 0 3px 0; border-top: 1px solid #4F6B4C; } #left_block #user_services td { padding-top: 9px; } #left_block #user_services td p { padding-bottom: 1px; } div.lined_top { margin: 10px 1px 0 1px; height: 1px; background: url(http://img.mail.ru/r/blogs/themes/409/lined_h_line.gif) repeat-x; } div.lined_bottom { margin: 0px 1px 0 1px; height: 1px; background: url(http://img.mail.ru/r/blogs/themes/409/lined_h_line.gif) repeat-x; } div.lined_block { background: #fff url(http://img.mail.ru/r/blogs/themes/409/lined_v_line.gif) repeat-y left top; } div.lined_block div.lined_block_in { background: url(http://img.mail.ru/r/blogs/themes/409/lined_v_line.gif) repeat-y right top; padding-left:1px; padding-right:1px; } #calendar { height: 100%; margin: 0px 1px 0px 1px; background: #FFFFFF url(http://img.mail.ru/r/blogs/themes/409/lined_block_bg.gif) no-repeat right top; padding: 4px 0 10px 10px; } #calendar a { text-decoration: none; font-size: 14px; font-weight: bold; color: #4D7547; } #calendar a:hover { text-decoration: underline; } #calendar img { margin: 0 8px 0 0; position: relative; top: 4px; } #search_in_blog { height: 100%; margin: 0px 1px 0px 1px; background: #FFFFFF url(http://img.mail.ru/r/blogs/themes/409/lined_block_bg.gif) no-repeat right top; padding: 5px 10px 12px 10px; } #search_in_blog p { font-size: 14px; font-weight: bold; color: #4D7547; padding: 1px 0 4px 0; } div.lider_top { margin: 10px 1px 0 1px; height: 1px; background: url(http://img.mail.ru/r/blogs/themes/409/lined_h_line.gif) repeat-x; } div.lider_out { padding-left: 1px; background: url(http://img.mail.ru/r/blogs/themes/409/lined_v_line.gif) repeat-y left top; } #lider_blog { height: 100%; padding-right: 1px; background: url(http://img.mail.ru/r/blogs/themes/409/lined_v_line.gif) repeat-y right top; } #lider_blog div.lider_in { padding: 7px 0 0 10px; background: #fff url(http://img.mail.ru/r/lider_fon.gif) no-repeat left top; } #lider_blog a { color: #0857A6; } #lider_blog a.title { font-size: 14px; font-weight: bold; } #lider_blogers { padding: 5px 0 15px 0; } #lider_blog td table { width: 106px; height: 106px; margin-right: 5px; text-align: center; font-size: 1px; } #lider_blog td table th.left { height: 8px; } #lider_blog td table th.center { height: 8px; } #lider_blog td table th.right { height: 8px; } #lider_blog td table td.b_left { text-align: right; vertical-align: bottom; } #lider_blog td table td.b_left div { width: 8px; height: 8px; } #lider_blog td table td.b_center { } #lider_blog td table td.b_right { vertical-align: bottom; } #lider_blog td table td.b_right div { width: 8px; height: 8px; } #lider_blog table.status { position: relative; top: 2px; width: 85%; height: 20px; } #lider_blog table.status th { text-align:left; } #lider_blog table.status th a.active { color: #F26D00; } #lider_blog table.status td { padding-top: 1px; vertical-align: middle; width: 15px; } #lider_blog table.status th img { position: relative; top: 2px; } #lider_blog table.lider_info { margin: 8px 20px 12px 15px; color: #000000; } p.rate { font-family: Tahoma; font-size: 11px; } #lider_blog span { font-weight: bold; } #lider_blog a.reserve { font-family: Tahoma; font-size: 11px; font-weight: bold; color: #D30000; } div.lider_bottom { margin: 0px 1px 0 1px; height: 1px; background: url(http://img.mail.ru/r/blogs/themes/409/lined_h_line.gif) repeat-x left bottom; } #center_space { width: 1%; } /*right_block*/ #right_block { width: 100%; margin-top: 7px; font-family: Arial; color: #000000; } #right_block .main_text { padding: 0 12px 0 5px; } #right_block div.lister { margin: 12px 12px 9px 5px; text-align: right; font-family: Tahoma; font-size: 11px; color: #0857A6; } #right_block div.lister_bottom { margin: 21px 12px 10px 5px; text-align: right; font-family: Tahoma; font-size: 11px; color: #0857A6; } #right_block div.lister span, #right_block div.lister_bottom span { padding: 0 16px 0 16px; } #right_block div.message { margin: 0 8px 8px 0; position: relative; background: #DAF3CB url(http://img.mail.ru/r/blogs/themes/409/message_left_bg.gif) repeat-y left top; color: #2A3743; } #right_block div.message div.date { height: 16px; background: #DAF3CB url(http://img.mail.ru/r/blogs/themes/409/message_date_bg.gif) no-repeat left top; font-family: Tahoma; font-size: 11px; color: #557650; padding-top:12px; padding-left: 10px; border-bottom:1px solid #557F4D; } #right_block div.message div.date span { color: #557650; } #right_block div.message a { color: #557650; } #right_block div.message div.date p { padding: 0 0 4px 11px; } #right_block div.message strong.bloger { position: relative; } #right_block div.message strong.bloger img { position: relative; top: 2px; } #right_block div.message strong.bloger a { font-family: Arial; font-weight: bold; color: #0857A6; } #right_block div.message h1 { padding: 3px 0 9px 0; } #right_block div.message div.clips { width: 336px; height: 46px; float: right; position: absolute; top: 12px; right: 8px; background: url(http://img.mail.ru/r/blogs/themes/409/nota.gif) no-repeat right top; } #right_block div.message div.clips[class] { right: 0px; } #right_block div.message div.top_bg { position: absolute; top: 28px; left: 0; width: 100%; height: 10px; background: url(http://img.mail.ru/r/blogs/themes/409/h_line.gif) repeat-x left top; } #right_block div.message div.text { padding-top: 8px; background: url(http://img.mail.ru/r/blogs/themes/409/message_right_bg.gif) repeat-y right top; color: #000000; padding-left:15px; } #right_block div.message div.text p, #right_block div.message div.text h1, #right_block div.message div.text strong { margin: 0; } #right_block div.message .text p.read_next img { background: url(http://img.mail.ru/r/blogs/themes/409/arrow.gif) no-repeat left top; } #right_block div.message .text p.read_next { color: 0857A6; } #right_block div.message .text a, #right_block div.message .text p.read_next a { text-decoration: none; color: #0857A6; } #right_block div.message .text a, #right_block div.message .text p.read_next a:hover { text-decoration: underline; } #right_block div.message p.comments { padding: 10px 0 3px 0; } #right_block div.message p.comments a{ color: #0857A6; } #right_block div.message p.comments img { position: relative; top: 6px; margin-left: 13px; } #right_block div.message div.bottom_bg { height: 14px; background: url(http://img.mail.ru/r/blogs/themes/409/message_bottom_bg.gif) repeat-x left top; margin-left:-15px; margin-right:-10px; } #right_block div.message div.bottom_bg div { height: 14px; background: url(http://img.mail.ru/r/blogs/themes/409/message_b_l_bg.gif) no-repeat left top; } #right_block div.message div.bottom_bg div img { float: right; position: relative; width: 5px; height: 14px; background: url(http://img.mail.ru/r/blogs/themes/409/message_b_r_bg.gif) no-repeat right top; } #right_block div.message div.bottom_bg[class] div img { right: -3px; } #right_block div.message div.bottom_bg[class] div img { right: 0px; } #right_block div.message div.message_min_width { width: 530px; font-size: 1px; height: 10px; } .comment_bg_color {background: #daf3cb} .comment_title_color {color: #003073} .gr_sm {padding-left:10px; padding-right:10px;} div.text {padding-left:10px; padding-right:10px;} div.cont_div2,div.cont_div{border:1px solid #DADCE5;} #comment_text {border:1px solid #A5ACB2;} img.avatar2 { border:5px solid #79A9F3; } #search_in_blog h2 { margin:0; } #act_duel { background:transparent url(http://img.mail.ru/r/blogs/themes/409/lined_block_bg.gif) no-repeat scroll right top; } #act_duel .time_left { } #act_duel .grade { } #act_duel .act_duel_header { color:#4D7547; } #act_duel .duel_name a{ } /* fix top head for FF3 */ #logos_right img { height:34px; } #top_menu td#right_bg { vertical-align:top; } #top_menu #right_bg div img { top:1px; } #top_menu #menu_items td.menu_items { vertical-align:bottom; padding-bottom:15px; } .smsTop11 { margin-left:0 !important; } ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=paddmarg_i.css Content-Type: text/css; charset=windows-1251; name=paddmarg_i.css Content-Location: http://img.mail.ru/mail/ru/css/paddmarg_i.css?1 Content-Transfer-Encoding: 8bit .p0 {padding:0 !important;} .p1 {padding:1px !important;} .p2 {padding:2px !important;} .p3 {padding:3px !important;} .p4 {padding:4px !important;} .p5 {padding:5px !important;} .p10 {padding:10px !important;} .p15 {padding:15px !important;} .p20 {padding:20px !important;} .pl0 {padding-left:0 !important;} .pl1 {padding-left:1px !important;} .pl2 {padding-left:2px !important;} .pl3 {padding-left:3px !important;} .pl4 {padding-left:4px !important;} .pl5 {padding-left:5px !important;} .pl10 {padding-left:10px !important;} .pl15 {padding-left:15px !important;} .pl20 {padding-left:20px !important;} .pr0 {padding-right:0 !important;} .pr1 {padding-right:1px !important;} .pr2 {padding-right:2px !important;} .pr3 {padding-right:3px !important;} .pr4 {padding-right:4px !important;} .pr5 {padding-right:5px !important;} .pr10 {padding-right:10px !important;} .pr15 {padding-right:15px !important;} .pr20 {padding-right:20px !important;} .pt0 {padding-top:0 !important;} .pt1 {padding-top:1px !important;} .pt2 {padding-top:2px !important;} .pt3 {padding-top:3px !important;} .pt4 {padding-top:4px !important;} .pt5 {padding-top:5px !important;} .pt10 {padding-top:10px !important;} .pt15 {padding-top:15px !important;} .pt20 {padding-top:20px !important;} .pb0 {padding-bottom:0 !important;} .pb1 {padding-bottom:1px !important;} .pb2 {padding-bottom:2px !important;} .pb3 {padding-bottom:3px !important;} .pb4 {padding-bottom:4px !important;} .pb5 {padding-bottom:5px !important;} .pb10 {padding-bottom:10px !important;} .pb15 {padding-bottom:15px !important;} .pb20 {padding-bottom:20px !important;} .m0 {margin:0 !important;} .m1 {margin:1px !important;} .m2 {margin:2px !important;} .m3 {margin:3px !important;} .m4 {margin:4px !important;} .m5 {margin:5px !important;} .m10 {margin:10px !important;} .m15 {margin:15px !important;} .m20 {margin:20px !important;} .ml0 {margin-left:0 !important;} .ml1 {margin-left:1px !important;} .ml2 {margin-left:2px !important;} .ml3 {margin-left:3px !important;} .ml4 {margin-left:4px !important;} .ml5 {margin-left:5px !important;} .ml10 {margin-left:10px !important;} .ml15 {margin-left:15px !important;} .ml20 {margin-left:20px !important;} .mr0 {margin-right:0 !important;} .mr1 {margin-right:1px !important;} .mr2 {margin-right:2px !important;} .mr3 {margin-right:3px !important;} .mr4 {margin-right:4px !important;} .mr5 {margin-right:5px !important;} .mr10 {margin-right:10px !important;} .mr15 {margin-right:15px !important;} .mr20 {margin-right:20px !important;} .mt0 {margin-top:0 !important;} .mt1 {margin-top:1px !important;} .mt2 {margin-top:2px !important;} .mt3 {margin-top:3px !important;} .mt4 {margin-top:4px !important;} .mt5 {margin-top:5px !important;} .mt10 {margin-top:10px !important;} .mt15 {margin-top:15px !important;} .mt20 {margin-top:20px !important;} .mb0 {margin-bottom:0 !important;} .mb1 {margin-bottom:1px !important;} .mb2 {margin-bottom:2px !important;} .mb3 {margin-bottom:3px !important;} .mb4 {margin-bottom:4px !important;} .mb5 {margin-bottom:5px !important;} .mb10 {margin-bottom:10px !important;} .mb15 {margin-bottom:15px !important;} .mb20 {margin-bottom:20px !important;} .pointer {cursor:pointer;} ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=themes.css Content-Type: text/css; charset=windows-1251; name=themes.css Content-Location: http://img.mail.ru/mail/ru/css/blogs/themes.css?18 Content-Transfer-Encoding: 8bit body { margin:0; padding:0; } wbr:after {content: "\00200B";} #lider_blog { background:#FFF url(http://img.mail.ru/r/lider_fon.gif) no-repeat left top; } /* Export */ .mf_iSpam {background-position: 0 -280px; padding-left: 15px !important; color: #999; font-size: 11px; font-family: Tahoma;} .mf_spIco {background-image: url(http://img1.imgsmail.ru/mail/ru/images/my/_sprite_ico.png?3); background-repeat: no-repeat; display: inline; padding: 0 0 4px 20px;} .icoModer {-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background:transparent url(http://img2.imgsmail.ru/mail/ru/images/my/icons-people.png) no-repeat scroll 0 -144px;} i.imgp {cursor:pointer;display:inline-block;font-size:0;height:16px;line-height:0;margin-right:4px;vertical-align:middle;width:16px;} /*BEGIN_Tables left_nav top_nav*/ table.top_nav{margin:1px 0px 0px 0px} table.top_nav td{padding:2px 15px 7px 15px} table.top_nav td.sm2{font-size:70%;font-family:tahoma;padding:4px 0px 0px 15px} table.top_nav td.no_pad{padding:0px;background-color:#E5EEFF} table.top_nav td.curr{background-color:#E5EEFF;border-top:1px solid #BED3FE;padding:0px 15px 0px 15px} table.top_nav td.curr2{background-color:#E5EEFF;border-top:1px solid #BED3FE;border-bottom:1px solid #BED3FE;padding:3px 15px 0px 15px} table.top_nav td.wh_points{background-image:url("http://img.mail.ru/1.gif");background-repeat:no-repeat;background-position:bottom left;background-color:#BED3FE;padding:0px} table.dop_menu{border-left:10px solid #E5EEFF;border-right:10px solid #E5EEFF} table.dop_menu td{background-color:#E5EEFF;font-size:11px;font-family:tahoma;padding:5px 8px 8px 8px} table.dop_menu td.cur{border-bottom:4px solid #B2CCFF;padding-bottom:0px} table.dop_menu a{color:#003073} table.dop_menu td.cur a{font-weight:bold;text-decoration:none;color:#003073} table.top_nav td.curr a, table.top_nav td.curr2 a{font-weight:bold;text-decoration:none;color:#003073} table.top_nav td.no_pad2{padding:2px 0px 7px 0px} table.top_nav td.pad2{padding:2px 5px 7px 5px} table.top_nav td.curr3{background-color:#E5EEFF;border-top:1px solid #BED3FE;border-bottom:1px solid #BED3FE;padding:0 15px} table.top_nav td.curr a, table.top_nav td.curr2 a, table.top_nav td.curr3 a{font-weight:bold;text-decoration:none;color:#003073} table.top_nav td.sider{background:#BED3FE url("http://img.mail.ru/1.gif") no-repeat top left;padding:0;vertical-align:bottom} /*END_Tables left_nav top_nav*/ .bg_color_white {background-color: #FFFFFF;} .def-link{color:#0857A6;} .mb15 {margin-bottom:15px} .mb10 {margin-bottom:10px} input.radio {border:0; margin-right: 10px;} input#lchck1 {border:0;} table.login_form input.w_100{ margin: 3px 3px 0 0; } table.login_form select { margin-top:2px; } /* style for add frend */ h2.sear{color:003073;font-size:120%;margin:0px 0px 2px 0px} h3{color:003073;font-size:110%;margin:0px} .t90{font-size:90%} input.s_100{font-family:arial;font-size:100%} br.think{line-height:1px} .contest_invite {width: 470px; padding: 6px; border: solid 1px #34A61E; background: #ECFFE1; margin-top: 20px;float:left;} .contest_invite IMG.avatar {border: solid 1px #34A61E; margin-right: 10px;} .contest_invite A {color: #248411 !important; font-weight: bold;} .contest_invite A:hover {color: #248411 !important;} #right_block div.message .text td div.rating_block, div.rating_block {border:0; padding:10px;} #right_block div.message .text td table.voting td, table.voting td {padding:0;} #right_block div.message .text td table.voting td.rtd, table.voting td.rtd {background-color: #66CC00;font-weight: bold;padding: 1px 3px;} #right_block div.message .text td table.voting td.rtd a, table.voting td.rtd a {color: #FFFFFF;text-decoration: none;} #right_block div.message .text td table.voting td.pr30, table.voting td.pr30 {padding-right:30px;} table.fotoprebord{border:1px solid #003B75} table.fotoprebord td{padding:5px !important} table.fotoprebord td.enlarge{padding:0 0 1px 0 !important;background-color:#003B75 !important;font-size:85%;text-align:center} table.fotoprebord td.enlarge a{color:#FFFFFF !important;font-family:Tahoma !important;} /*table.fotopre{margin:20px 0 !important;} */ table.fotopre td{padding:0 !important;} table.fotopre td.enlarge{padding:0 0 2px 0 !important;background-color:#003B75 !important;font-size:85%;text-align:center} table.fotopre td.enlarge a{color:#FFFFFF !important;font-family:Tahoma !important;} div.center {text-align:center;} div.right {text-align:right;} div.left {text-align:left;} /* SKINS 2 style */ #left_block #bloger_pages img { margin-top:2px; margin-bottom:2px; } #left_block #user_services img { margin-top:2px; margin-bottom:2px; } h2 { font-size:18px; } #left_block #bloger_pages { padding-left:10px; width:100%; } #left_block #avatar div#larger { padding-bottom:2px; font-size:11px; } #left_block #avatar div#rep_foto{ font-size:11px; background:none; white-space:nowrap; } #left_block #avatar table.star_avatar td, table.star_avatar td{ padding:0; } #left_block #avatar table.star_avatar td.canvt, table.star_avatar td.canvt{ background:url("http://img.mail.ru/mail/ru/images/blogs/star_border_t_bg.gif") no-repeat; text-align:right; } #left_block #avatar table.star_avatar td.canvl, table.star_avatar td.canvl{ background:url("http://img.mail.ru/mail/ru/images/blogs/star_border_l_bg.gif") no-repeat; vertical-align:bottom; } #left_block #avatar table.star_avatar td.canvr, table.star_avatar td.canvr{ background:url("http://img.mail.ru/mail/ru/images/blogs/star_border_r_bg.gif") no-repeat; vertical-align:bottom; } #left_block #avatar table.star_avatar td.canvb, table.star_avatar td.canvb{ background:url("http://img.mail.ru/mail/ru/images/blogs/star_border_b_bg.gif") no-repeat; text-align:right; } left_block #bloger .bloger_content td.bottom_bg .star-bg { position:static; background:url(http://img.mail.ru/mail/ru/images/blogs/themes/star.png) no-repeat 0 0; background:expression('none'); filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.mail.ru/mail/ru/images/blogs/themes/star.png',sizingMethod='crop'); width:100%; } left_block #bloger .bloger_content td.bottom_bg .star-bg a { position:relative; z-index:2; } #left_block #avatar table.star_avatar td#st_avatar { text-align:center; } #left_block #avatar table.star_avatar td#st_avatar span { font-size:11px; display:block; margin:-2px 0 2px 0; } #left_block #avatar div { width:auto; height:auto; text-align:center; } #left_block #avatar div img { margin: 5px 5px -1px 5px; } .gr_sm, .sm { font-size:90%; } div.popup_div h3 input, div.popup_div #subscribe_span input { border:none; } div.popup_div div input.s_100 { margin-right:5px; } div.cont_div{margin:10px 0px;padding:7px 10px 10px 10px} div.cont_div table td{padding:3px 0px 3px 0px} div.cont_div table td.hide {padding:0 0 5px 0;font-size:90%;} div.cont_div table td.hide input {margin:0px 5px 0px 0px;width:15px;border:0;} div.cont_div h1{font-size:120%} div.cont_div h1 span{font-family:tahoma;font-weight:normal;color:#000000} div.del_min{border:1px solid #000000; position:absolute;padding:10px;background-color:#f3f3f3;} #left_block #bloger .bloger_content #user_status { height:auto; margin-bottom:10px; } #groups_checkboxes input { width:13px;height:13px; } #groups_checkboxes span { display:block; margin-bottom:5px; } #group_selector #groups_checkboxes input, #group_selector h3 input, #group_selector #subscribe_span input { background:none; border:none; } img.avatar2 { margin:0px 10px 10px 0px; } .favoradd {position: absolute; font-family: arial; z-index: 10000; } .favoradd div {padding: 5px; border: 1px solid #000; background: #f3f3f3;} .favoradd span {font-size: 12px;} .favoradd .ico_context_help {margin: 0 0 -2px 5px;} .favoradd textarea {display: block; width: 400px; height: 45px; margin: 5px 0 5px 0; font-family: arial; color: #000; font-size: 12px; border:1px solid #999;} .favoradd input.add {font-weight: bold; color: #333; font-size: 12px;} .favoradd input.close {color: #333; font-size: 12px;} .favoradd .ico_close {position: absolute; right: 8px; top: 8px;} a.lasttags { color: #000; text-decoration:none; border-bottom: thin dashed #000000; } div.error_div { position: absolute; z-index: 10000; width: 300px; display: none; font-size: 11px; font-family: tahoma; background: #F5F5F5 url('http://img.mail.ru/mail/ru/images/blogs/cont_error_angle.gif') no-repeat top left; padding: 3px 3px 8px 10px; color: #666; border: 1px solid #F03E3E; } /* Ñòèëè äëÿ ÄÈÂ-à ñ userInfo */ .usinfArrow { position:absolute; z-index:150; top:0; left:0; width:190px; border:1px solid #929292; background-color:#FFF9F2; font:11px tahoma; margin:0px; } .usinfArrow .userinfo{padding:5px 10px;} .usinfArrow a {color:#0857A6;text-decoration:underline;} .usinfArrow a:hover{color:#F26D00;text-decoration:none;} .usinfArrow a.grey {color:#666666;} .usinfArrow img.icon {margin:2px 5px 2px 0;} .usinfArrow img.icon2 {margin:2px 4px 2px 0;} .usinfArrow .projectName {color:#666666; font-weight:bold; padding:0 0 5px 0px;} .usinfArrow .line {background-color:#D0D0D0; margin:10px 0;} .usinfArrow #divForFriendsId, #divForFriendsId a {font-size:11px; font-family:tahoma; color:#5B5B5B;} .usinfArrow #divForFriendsId input {font:11px tahoma; color:#5B5B5B;} .usinfArrow .widthCheckBox {padding:0 0 5px 25px;} .usinfArrow .newGroup {padding:0 0 10px 45px;} .usinfArrow .forButt {padding:0 0 10px 20px;} /* Ñòèëè äëÿ ñòðåëîê */ .usermenu_act {background-color:#FFE0A9; padding:0 10px 3px 10px; white-space:nowrap;} .usermenu_act img {margin-right:2px;} .usermenu_pas {padding:2px 0 0 0; white-space:nowrap;} .usermenu_pas img {margin-right:4px;} div.help_div{ position:absolute; z-index:10000; width:300px; display:none; font-size:11px; font-family:tahoma; background:#F5F5F5 url('http://img.mail.ru/mail/ru/images/blogs/cont_help_angle.gif') no-repeat top left; padding:3px 3px 8px 10px; color:#666; border:1px solid #135EAA; } .lider_community {padding: 5px 10px 9px 10px;border-left: 1px solid #E2DEBF;border-right: 1px solid #E2DEBF;} .ots_in_blog{padding: 5px 0 9px 0;border-left: 1px solid #E2DEBF;border-right: 1px solid #E2DEBF;} .ots_in_blog_in{padding: 0 5px;text-align:center;} .ots_in_blog p, .lider_community p {margin-bottom: 4px;font-family: Arial;font-size: 14px;font-weight: bold;color: #E2DEBF;} .ots_in_blog td, .lider_community td{ font-size: 12px;color: #000000;} .t_fone{background-image:url('http://img.mail.ru/mail/ru/images/blogs/t_fone.gif');background-position:top left;background-repeat:repeat-x} .b_fone{background-image:url('http://img.mail.ru/mail/ru/images/blogs/b_fone.gif');background-position:top left;background-repeat:repeat-x} .l_fone{background-image:url('http://img.mail.ru/mail/ru/images/blogs/l_fone.gif');background-position:top left;background-repeat:repeat-y} .r_fone{background-image:url('http://img.mail.ru/mail/ru/images/blogs/r_fone.gif');background-position:top left;background-repeat:repeat-y} .ots_in_blog .title_2,.ots_in_blog h2, .lider_community .title_2, .lider_community h2{color:#0857A6;font-size:14px;} td.t_4{padding-top:4px} div.hidden_div { overflow:hidden; height:1px; } div.popup_div{border:1px solid #000000;background-color:#FFFFFF;font-family:arial;padding:10px;width:182px;margin-top:5px;} div.popup_div div.chkb{padding:3px 0 5px 21px;font-size:90%;font-family:tahoma} div.popup_div div.chkb a{display:block;padding:3px 0 3px 23px;} span.green_c {color:#008702} span.green_c a{color:#008702} .vote {font-size: 10px; } .birthday-bg { position:static; background:url(http://img.mail.ru/mail/ru/images/blogs/themes/birth.png) no-repeat right top; background:expression('none');filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.mail.ru/mail/ru/images/blogs/themes/birth.png',sizingMethod='crop'); width:100%; } .birthday-bg a { position:relative;z-index:2; } .menu_hrline{background-color:#F1C6A4;line-height:1px} .sms_leadership_rules{padding-left:23px;font-family:Tahoma;font-size:95%;color:#666;line-height:130%} .smsTop11 { background:#E5EEFF url(http://img.mail.ru/mail/ru/images/my/info.gif) no-repeat scroll -6px 0; border:1px solid #BED3FE; height:52px; margin:0 0 0 -10px; position:relative; } .smsTop1 { color:#0A59A8; line-height:20px; padding:4px 0 7px 23px; position:absolute; width:238px; } img.post_img, div.contest_invite { //position:relative; /* äëÿ ÈÅ */ } #right_block div.message .text p.comments img.comments_img {position:static;vertical-align:middle;} .vote_done { padding: 5px; text-align: center; background: #FFF6E4; font-weight: bold; color: #FF6600; font-size: 110%; } #tagsearchdiv{font-family:arial; padding: 5px; position:absolute; background-color: white; border: 1px solid black; z-index:10000; } #tagsearchdiv input { padding:0; margin-right:4px;} #tagsearchdiv input#tagsearch { padding: 1px 0 2px 0;} .tg1{text-decoration:none;font-size: 140%} .tg2{text-decoration:none;font-size: 120%} .tg3{text-decoration:none;font-size: 100%} .tg4{text-decoration:none;font-size: 90%} .tg5{text-decoration:none;font-size: 75%} a:hover.tg1, a:hover.tg2, a:hover.tg3, a:hover.tg4, a:hover.tg5 {text-decoration: underline;} span.gr_comm{color:#666A75} div.complain_form { background:#FFFFFF none repeat scroll 0%; border:1px solid #000000; font-family:arial; font-size:75%; height:auto; left:0px; padding:5px; position:absolute; top:0px; width:220px; z-index:100; } #capcha_popup { background-color: #FFF7E9; color: #666; font-family: tahoma; font-size: 11px; padding-left: 10px; width: 200px; border: 1px solid #135EAA; position: absolute; visibility: hidden; z-index: 10001; } .capcha { background-color: #FFF7E9; color: #666; font-family: tahoma; font-size: 11px; padding-left: 10px; width: 200px; border: 1px solid #135EAA; } #right_block div.message .text strong { position: static; text-align: inherit; padding-right: inherit; } .tipalink {border-bottom:1px dashed #0857A6; color:#0857A6; cursor:pointer; text-decoration:none; position:relative; margin-bottom:3px;} .smile {cursor:pointer;} #allsmileys{display:none; color:#666666;} .inviz {display:none;} .bord_av {font-size:90%;text-align:center} .comment_bg_white {background: #ffffff} table.tred {margin-bottom:5px} table.autor td.info {font-size:90%;font-family:tahoma;color:#696971;padding-left:15px} table.tred td div.bord_av {padding:5px;border:1px solid #DADCE5} table.tred td.cont table.autor td.icons {padding-left:20px} table.tred td.cont {padding:9px 13px 9px 13px;border-top:1px solid #DADCE5} a.dashed { border-bottom:1px dashed; text-decoration:none !important; } a:Hover.dashed { border-bottom:none; } /* music */ .text_audio {display:none;} .div_dashed {border-bottom:1px dashed #999999;} .div_dashed_act {border-bottom:none;} input.but_min_out { padding:0; } #tagcloud_icon, #calendar_state_icon { cursor:pointer; } /* BEST blogs poster code style */ table.poster_top_tbl td { padding:0 !important; } div.best_poster_middl { background:#fff5e0; border-left:1px solid #f3ddb1; border-right:1px solid #f3ddb1; padding-top: 7px; color:#000 !important; } div.best_poster_middl a { color:#0857A6 !important; } div.best_poster_middl td { padding-top:0 !important; padding-bottom:0 !important; } div.poster_title_best { font-weight:normal; color:#000 !important; letter-spacing:-1px; margin-right:15px; } div.poster_title_best a { color:#000 !important; text-decoration:none !important; } div.poster_title_best a:Hover { color:#000 !important; text-decoration:underline !important; } div.poster_title_best span { font-size:18px; } div.poster_title_nomination { color:#ed1f28 !important; font-size:18px; white-space:nowrap; margin-right:15px; margin-left:48px; // only Opera } div.poster_title_nomination a { color:#ed1f28 !important; text-decoration:none !important; } div.poster_title_nomination a:Hover { color:#ed1f28 !important; text-decoration:underline !important; } div.poster_text_nomination { font-weight:normal; letter-spacing:-1px; color:#000 !important; } img.poster_logo_nomin { left:-10px; position:relative; top:-5px; } div.poster_line { border-bottom:1px solid #F3DDB1; } table.best_poster_bot { height:26px; } table.best_poster_bot td { padding:0 !important; } table.best_poster_bot td.left { background:#e99711; height:21px; border-left:1px solid #f3ddb1; } table.best_poster_bot td.right { background:#e99711; height:21px; border-right:1px solid #f3ddb1; } table.best_poster_bot td.left_b { background: url(http://img.mail.ru/r/blogs/best_blogs/poster_bot_cor_bg.gif) right top no-repeat; } table.best_poster_bot td.right_b { background: url(http://img.mail.ru/r/blogs/best_blogs/poster_bot_cor_bg.gif) left top no-repeat; } table.best_poster_bot td.content { background: url(http://img.mail.ru/r/blogs/best_blogs/poster_bot_bg.gif) #e99711 right top no-repeat; border-bottom:1px solid #f3ddb1; } table.best_poster_bot td.content a, table.best_poster_bot td.content a:Hover { color:#FFF !important; } table.best_poster_bot div.text_l { float:left; margin-left:10px; background: url(http://img.mail.ru/r/blogs/best_blogs/nomin_pointer_2.gif) no-repeat left 5px; padding-left:8px; } table.best_poster_bot div.text_r { float:right; margin-right:10px; background: url(http://img.mail.ru/r/blogs/best_blogs/nomin_pointer_2.gif) no-repeat left 5px; padding-left:8px; } /* customize post */ .valign { vertical-align: top; } .challenge_autopost_grade { color: #7D8485; font-size: 20px; padding: 0px 5px; vertical-align: top; } .challenge_autopost_time_left { color: #7D8485; font-size: 10px; padding: 0px 8px; } .challenge_autopost_call_friends { padding-top: 15px; } div.popup_div a { color:#0857A6 !important; } div.popup_div #subscribe_span { color:#000 !important; } /* banner style */ td.uups { text-align:left; } #right_block div.message .text h1 { padding-bottom:0px; } .v_block{margin:0!important; padding:0!important;} .fll{float:left;clear:none;} .flr{float:right;clear:none;} .votes{float:left;clear:none;margin: 1px 2px;text-decoration:none!important;} .vote_b{background-color:#66CC00;font-weight:bold;padding:1px 3px} .vote_a {text-decoration:none!important;color:#FFF!important} .new { color:red; font-weight:bold; font-size:9px; position:relative; top:-6px; } /* effects */ #left_block #avatar div.avatarEffect, #lider_blogers div.avatarEffect { background-repeat: no-repeat; background-position: center; width:90px; height:90px; } .bg_avatar_1 {background-color:#466a6b !important;} .bg_avatar_2 {background-color:#b1084e !important;} .bg_avatar_4 {background-color:#919999 !important;} .bg_avatar_5 {background-color:#646def !important;} .bg_avatar_6 {background-color:#000000 !important;} .bg_avatar_7 {background-color:#819fa0 !important;} .bg_avatar_8 {background-color:#b3230b !important;} .bg_avatar_9 {background-color:#7d1371 !important;} .bg_avatar_10 {background-color:#90c057 !important;} .bg_avatar_11 {background-color:#a02c06 !important;} .bg_avatar_12 {background-color:#4978D6 !important;} .bg_avatar_13 {background-color:#000000 !important;} .bg_avatar_14 {background-color:#FFFFFF !important;} /* alert äëÿ äóýëåé è íå òîëüêî */ .corner { width: 7px; height: 7px; } .topleft { background:url(http://img.mail.ru/r/blogs/challenge/ramka-corner-topleft.png) no-repeat; } .bottomleft { background:url(http://img.mail.ru/r/blogs/challenge/ramka-corner-bottomleft.png) no-repeat; } .topright { background:url(http://img.mail.ru/r/blogs/challenge/ramka-corner-topright.png) no-repeat; } .bottomright { background:url(http://img.mail.ru/r/blogs/challenge/ramka-corner-bottomright.png) no-repeat; } .bubble_bg { background-color: #FFDC95; } .corner2 { width: 4px; height: 4px; } .topleft2 { background:url(http://img.mail.ru/r/blogs/challenge/ramka2-corner-topleft.png) no-repeat; } .bottomleft2 { background:url(http://img.mail.ru/r/blogs/challenge/ramka2-corner-bottomleft.png) no-repeat; } .topright2 { background:url(http://img.mail.ru/r/blogs/challenge/ramka2-corner-topright.png) no-repeat; } .bottomright2 { background:url(http://img.mail.ru/r/blogs/challenge/ramka2-corner-bottomright.png) no-repeat; } .bubble_bg2 { background-color: #FFF2D8; } .challenge_codes { width: 250px; overflow: hidden; overflow-x: hidden; padding: 5px; background-color: #FFF6ED; border: 1px solid #FFBF7F; font:11px/14px Arial; position:absolute; z-index:255; } /* foto in post */ span.foto_preview { display:-moz-inline-block; display:inline-block; } span.foto_preview a.foto_border { border:1px solid #003B75; padding:5px; display:-moz-inline-block; display:-moz-inline-box; display:inline-block; margin-bottom:-3px; } span.foto_enlarge { background-color:#003B75 !important; display:block; margin-top:2px; font-size:10px; text-align:center; } span.foto_enlarge a, span.foto_enlarge a:hover { color:#FFF !important; } span.foto_border { display:-moz-inline-block; display:-moz-inline-box; display:inline-block; text-align:center; border:1px solid #003B75; padding:5px; } span.foto_autor { font: 11px/13px Arial; display:-moz-inline-block; display:inline-block; padding-top:2px; } /* button */ table.button, table.button_act, table.button_dis { border-collapse:collapse; border:none; cursor:pointer; } table.button td, table.button_act td, table.button_dis td { height:26px; padding:0; border:none; vertical-align:top; } table.button td.but_l {background:url('http://img.mail.ru/r/blogs/button_l.gif') right top no-repeat; } table.button td.but_c {background:url('http://img.mail.ru/r/blogs/button_c.gif') left top repeat-x; padding: 0 9px;} table.button td.but_r {background:url('http://img.mail.ru/r/blogs/button_r.gif') left top no-repeat;} table.button_act td.but_l {background:url('http://img.mail.ru/r/blogs/button_l.gif') right -26px no-repeat; } table.button_act td.but_c {background:url('http://img.mail.ru/r/blogs/button_c.gif') left -26px repeat-x; padding: 0 9px;} table.button_act td.but_r {background:url('http://img.mail.ru/r/blogs/button_r.gif') left -26px no-repeat;} table.button_dis td.but_l {background:url('http://img.mail.ru/r/blogs/button_l.gif') right -52px no-repeat; } table.button_dis td.but_c {background:url('http://img.mail.ru/r/blogs/button_c.gif') left -52px repeat-x; padding: 0 9px;} table.button_dis td.but_r {background:url('http://img.mail.ru/r/blogs/button_r.gif') left -52px no-repeat;} table.button td.but_c input, table.button_act td.but_c input, table.button_dis td.but_c input { cursor:pointer; border:0; background:none; height:26px; border: none; font: bold 12px/13px Arial,sans-serif; color:#666666; padding:0; padding-bottom:3px; _padding-bottom:0; _width:100%; } table.button td.but_c, table.button_act td.but_c, table.button_dis td.but_c { font: bold 12px/24px Arial,sans-serif; color:#666666; white-space:nowrap; } table.button_dis, table.button_dis td.but_c input { cursor:auto; } /* micro post */ table.bubble { -moz-opacity:0.7; opacity:0.7; filter:alpha(opacity=70); } table.bubble td.tl{ background:url(http://img.imgsmail.ru/r/blogs/bubble/bubble_tl.gif) transparent right top no-repeat; width:23px; height:8px; } table.bubble td.t{ background:url(http://img.imgsmail.ru/r/blogs/bubble/bubble_t.gif) transparent left top repeat-x; height:8px; } table.bubble td.tr{ background:url(http://img.imgsmail.ru/r/blogs/bubble/bubble_tr.gif) transparent left top no-repeat; height:8px; width:8px; } table.bubble td.l{ background:url(http://img.imgsmail.ru/r/blogs/bubble/bubble_l.gif) transparent right top repeat-y; width:23px; width:8px; } table.bubble td.r{ background:url(http://img.imgsmail.ru/r/blogs/bubble/bubble_r.gif) transparent left top repeat-y; width:8px; } table.bubble td.bl{ background:url(http://img.imgsmail.ru/r/blogs/bubble/bubble_bl.gif) transparent right top no-repeat; width:23px; height:15px; } table.bubble td.b{ background:url(http://img.imgsmail.ru/r/blogs/bubble/bubble_b.gif) transparent left top repeat-x; height:15px; } table.bubble td.br{ background:url(http://img.imgsmail.ru/r/blogs/bubble/bubble_br.gif) transparent left top no-repeat; height:15px; width:8px; } table.bubble td.content{ background-color:#fff; } table.bubble td.content div{ margin-left:-13px; //margin-left:0; } .fr { float:right; } .fl { float:left; } .fs0 { font-size:0;} .cl_b {clear:both;} .gr_999 { color:#999 !important;} .orange { color: #FD7500;} /*** Vote +1 +10 *2 ***/ .vote_1 { display:inline-block; width:34px; height:26px; background: url(http://img.mail.ru/r/blogs/duel/vote1.png) left top no-repeat; //background:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.mail.ru/r/blogs/duel/vote1.png',sizingMethod='crop'); font:1px/1px; cursor:pointer; } .vote_2 { display:inline-block; width:35px; height:26px; background: url(http://img.mail.ru/r/blogs/duel/vote2.png) left top no-repeat; //background:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.mail.ru/r/blogs/duel/vote2.png',sizingMethod='crop'); font:1px/1px; cursor:pointer; } .vote_10 { display:inline-block; width:40px; height:40px; margin-top: -7px; margin-bottom: -7px; background: url(http://img.mail.ru/r/blogs/duel/vote10.png) left top no-repeat; //background:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.mail.ru/r/blogs/duel/vote10.png',sizingMethod='crop'); font:1px/1px; cursor:pointer; position:relative; } /*** END Vote +1 +10 *2 ***/ .challenge_autopost_grade_1 { color: #7D8485; font-size: 20px; } /*** Help Div ***/ div.helpDiv { color:#666666 !important; font: 11px/13px Tahoma; position:absolute; width:300px; z-index:150; } div.helpDiv i.break{ background: url(http://img.mail.ru/mail/ru/images/my/i_del.gif) no-repeat -16px -4px; height: 11px; width: 9px; display:-moz-inline-block; display:-moz-inline-box; cursor: pointer; float: right; z-index:1; position:relative; } div.helpDivIn { background-color:#F5F5F5; border:1px solid #0091FF; padding:10px 7px 7px 7px; width:100%; height:100%; } div.helpDivIn h2 {color:#0857A6;font: bold 14px/16px Arial; margin:0 0px 5px 0px} div.helpDivIn a, div.helpDivIn a:Hover {color:#0857A6;} /* +10 AND *2 */ .code_counties {border-collapse:collapse;} .code_counties td{color: #000000; font-family: Tahoma !important; font-size: 11px !important; padding: 0 0 0 10px;} .code_counties td.w-50 {width:50px;} .code_counties ul li{list-style-position:outside; list-style-type:none;padding:2px 0 2px 10px; margin: 0; cursor: pointer;} .code_counties ul{position:relative; margin:0 0 0 -10px; padding:0;} .code_counties td.code_bord{border-left: 1px solid #999999;} .code_counties div.code_bord {border-left: 7px solid #999999; height:1px; font-size: 0; line-height: 0;padding: 0;margin-left:-11px;} .code_counties td.bb {vertical-align: middle; color:#FD7500; font-weight: bold;} .helpDiv .code{width: 50px; float: left; padding-top: 3px;} .helpDiv .right_code{background:#FFFFFF none repeat scroll 0% 50%;border:1px solid #D9D9D9;padding:2px;margin:0 0 3px 50px;} /* END +10 AND *2 */ /*** END Help Div ***/ /* corner container */ .cor_cont { font:0/0;} .cor_cont i, .cor_cont b { display:inline-block; background-position: left top; background-repeat: no-repeat;} .cor_cont i { position:absolute; } .cor_cont b { position:relative; float:right; } /* END corner container */ /*** corner width ***/ .cor_w_10 {height:10px; margin:0 10px;} .cor_w_10 i, .cor_w_10 b {width:10px; height:10px;} .cor_w_10 i { margin-left:-10px;} .cor_w_10 b { margin-right:-10px;} /*** END corner width ***/ /* promo!!! */ /***** IE8 result test ******/ .cor_ie8_t_1, .cor_ie8_t_2, .cor_ie8_t_3, .cor_ie8_t_4 {background-position: left top; background-repeat: repeat-x;} .cor_ie8_b {background-color:#FFF;} .cor_ie8_t_1 b, .cor_ie8_t_2 b, .cor_ie8_t_3 b, .cor_ie8_t_4 b {width:560px; margin-right:-10px; //position:relative;} /* bottom */ .cor_ie8_b i { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_bl.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_bl.png',sizingMethod='crop'); } .cor_ie8_b b { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_br.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_br.png',sizingMethod='crop'); } .ie8_res_1, .ie8_res_2, .ie8_res_3, .ie8_res_4 {background-color: #FFF; background-position: left -10px; background-repeat: repeat-x;} .ie8_res_inner_1, .ie8_res_inner_2, .ie8_res_inner_3, .ie8_res_inner_4 {padding: 15px 225px 15px 30px;background-position: right -10px; background-repeat: no-repeat;} .ie8_res_text {font-size:11px; color:#3d3c3c; line-height: 15px;} .ie8_res_text a, .ie8_res_text a:Hover { color:#3d3c3c;} .ie8_res_inner_1 h2, .ie8_res_inner_2 h2, .ie8_res_inner_3 h2, .ie8_res_inner_4 h2 { font: normal 18px Arial; color:#FFF; padding:0; margin: 0 0 10px 0;} .ie8_res_rasporka { float: right; width:1px; font: 0/0; height:135px;} /* top bg */ .cor_ie8_t_1 {background-image:url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_1_bg.png);} .cor_ie8_t_1 i { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_1_tl.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_1_tl.png',sizingMethod='crop');} .cor_ie8_t_1 b { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_1_r.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_1_r.png',sizingMethod='crop');} .cor_ie8_t_2 {background-image:url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_2_bg.png);} .cor_ie8_t_2 i { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_2_tl.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_2_tl.png',sizingMethod='crop');} .cor_ie8_t_2 b { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_2_r.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_2_r.png',sizingMethod='crop');} .cor_ie8_t_3 {background-image:url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_3_bg.png);} .cor_ie8_t_3 i { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_3_tl.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_3_tl.png',sizingMethod='crop');} .cor_ie8_t_3 b { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_3_r.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_3_r.png',sizingMethod='crop');} .cor_ie8_t_4 {background-image:url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_4_bg.png);} .cor_ie8_t_4 i { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_4_tl.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_4_tl.png',sizingMethod='crop');} .cor_ie8_t_4 b { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_4_r.png); //background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.imgsmail.ru/r/blogs/brends/ie8_res_4_r.png',sizingMethod='crop');} /* text bg */ .ie8_res_1 { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_1_bg.png)} .ie8_res_inner_1 { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_1_r.png); } .ie8_res_2 { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_2_bg.png)} .ie8_res_inner_2 { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_2_r.png); } .ie8_res_3 { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_3_bg.png)} .ie8_res_inner_3 { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_3_r.png); } .ie8_res_4 { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_4_bg.png)} .ie8_res_inner_4 { background-image: url(http://img.imgsmail.ru/r/blogs/brends/ie8_res_4_r.png); } /* rb_style */ .rb_body {/*border: 1px solid #D9D9D9;*/ font-size: 12px; text-align:left; padding: 7px 10px 0px 10px; overflow: hidden; //display: inline-block;} .rb_h4 {/*border-bottom: 1px solid #0857A6; color: #0857A6;*/ font-size: 17px; font-weight: bold; /*text-decoration: none;*/} .rb_body h4 {margin: 0;} a:HOVER.rb_h4 {/*border-bottom: 0 solid #0857A6;*/} .rb_h5 {/*color: #fd7102;*/ display: block; font-size: 13px; font-weight: bold; padding: 7px 0 0 0; text-decoration: none;} .rb_h6 {/*color: #0857A6;*/ display: block; font-size: 13px; font-weight: bold; padding: 0 0 3px 0; text-decoration: none;} .rb_content {margin: 7px 0 0 0; overflow: hidden; //display: inline-block;} .rb_img {float: left; margin: 0 5px 0 0; background-position: left top; background-repeat: no-repeat;} .rb_flash {float: left; margin: 0 5px 0 0;} .rb_nobr {white-space: nowrap;} .rb_text {overflow: hidden; //display: inline-block;} .rb_textSmall {font-size: 11px; overflow: hidden; //display: inline-block;} .rb_next {font-weight: bold; font-size: 11px; float: right; margin-top: 5px;} .rb_more {font-weight: bold; font-size: 11px; display: block; margin-top: 5px;} .rb_imgUl {background-position: left top; background-repeat: no-repeat; font-weight: bold; display: block; height: 50px; margin: 0; padding-left: 55px;} .rb_ul {margin: 10px 0 0 13px; padding-left: 2px;} .rb_li {/*color: #999999;*/} .rb_mb5 {margin-bottom: 5px;} /* capcha NEW */ .capchaNewLeft {position: relative; background-color: #fff; background-position: left 10px; background-repeat: no-repeat; border: 1px solid #ccc; padding: 65px 5px 5px 5px; width: 180px; margin-top: -120px; float: left; z-index:10; font-size: 11px; color: #999999 !important; font-family: tahoma;} .capchaNewLeft i {width:13px; height:16px; font-size:0; line-height:0; vertical-align:middle; cursor:pointer; background-repeat: no-repeat; background-position: 0 -380px; padding: 0 0 2px 0; position: absolute; top: 0; right: 3px; cursor: pointer;} .capchaNewInp{width: 135px; border: 1px solid #9BA3A9;} ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=status_dogs.css Content-Type: text/css; charset=windows-1251; name=status_dogs.css Content-Location: http://img.mail.ru/mail/ru/css/blogs/status_dogs.css?2 Content-Transfer-Encoding: 8bit /* Status Dogs */ .spr-mrim-9 { background-color: transparent; background-repeat: no-repeat; background-position: 0 0; cursor: pointer; height: 11px; margin-right: 3px; vertical-align: top; width: 11px; margin-top: 1px; } .spr-mrim-13 { background-color: transparent; background-repeat: no-repeat; background-position: 0 0; cursor: pointer; height: 13px; margin-right: 3px; vertical-align: top; width: 13px; margin-top: 1px; width: 15px; } .mrim-online-13 { background-image: url('http://img.mail.ru/r/blogs/ico_status_online.png'); } .mrim-away-13 { background-image: url('http://img.mail.ru/r/blogs/ico_status_away.png'); } .mrim-offline-13 { background-image: url('http://img.mail.ru/r/blogs/ico_status_ofline.png'); } .mrim-online-9 { background-image: url('http://img.mail.ru/r/jim/ico_status_online9.png'); } .mrim-away-9 { background-image: url('http://img.mail.ru/r/jim/ico_status_away9.png'); } .mrim-offline-9 { background-image: url('http://img.mail.ru/r/jim/ico_status_ofline9.png'); } ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=calendar.css Content-Type: text/css; charset=windows-1251; name=calendar.css Content-Location: http://img.mail.ru/mail/ru/css/blogs/calendar.css?1 Content-Transfer-Encoding: 8bit #calendar a.prev img { position: static; } #calendar a.next img { position: static; } #calendar p.date { margin-top: 13px; text-align: center; } #calendar p.date a { font-size: 13px; font-weight: bold; } #calendar table.setka { margin-top: 3px; } #calendar table.setka th { height: 17px; font-family: Tahoma; font-size: 11px; font-weight: normal; color: #034A8A; background: #DDE7FF; } #calendar table.setka th.holiday { font-weight: bold; color: #FF8500; background: #FEF2D8; } #calendar table.setka td { height: 17px; font-family: Tahoma; font-size: 11px; text-align: center; vertical-align: middle; background: #EFEFEF; } #calendar table.setka td.today { background: #CDCED4; } #calendar table.setka td a { font-weight: bold; } ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://img.mail.ru/mail/ru/images/blogs/favicon.ico Content-Transfer-Encoding: Base64 AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAA AAAAAAAAAAEAAAAAAABKngAARIkAAEuvBgDnzbUAQOP+AFBjmABnv2sA48CwACth qAAfRI8AC8n9AOT0/wBRrO0Amqi0AIqXugAb2v4AC9f+ACOb+AD0+/8AKGCoACxK lAAiS5kAMWqvAC9orgDV6tcAF9r+ADAwMAAtjvcAOuH+APH4/gBAsfwAH16gAEVk nQCoeV8A7+/vAK/C1gCXVxsAQo46AOL1/wBfcKEAJ12lAJO0cADx5NcAIFiaACac +QANyf0AYqpOAB5CjAAzlJsA+fz5AM/myACr0vwA28a9APv38wB9jbYAHrLlAFnp /QAUtv0AgMiGACne/gCgv6gAW5ZFAFOq6wBiuSAAI1CcAAzW/gA1YqYAwH9CAIrY /QCZ1v8A////AJtlTQBGfbsAFbruABYvdgC1biMAGziEAG7DcgDQv7kA3vLfAMPW rwB9jLUA7PPtACze/gAiSpcACNT+AF627wDp7+oAVuj9AC/K/QBQ5/4AdKhAAMTf uAAknPkAK6HCABw5hwBf6v0AD8L9AKexywDi8N4AT8j+AEqz+gAVt/wAPXW3AFFk mQDu4M8AsGQUALduKAC8djUA0LmnAJBMDACmWAAA////AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXFxIhojcXFxcXFxcXFxcXFx cXENLBszHXFxcXFxcXFxcXFxEmVdET5OcXFxcXFxcTEyXGNFHgxHbm1xcXFxcU9N BgY6C1Yham9ubXFxcXE/AgICAhg0bGtqb25tcXFxAAAAAAAuUgdsa2pvbm1xcVsB AQEBJT1XB2xram9ubXFxUCkwOWZePEYDbGtqb25tcXFELUFVCmRxcQNsa2pvJHFx WTscUxBhJnFxA2xrS2lxJzdaOAQPSSBxcXEDQypxcQUrWGAEGR9KcXFxcTVxcXEF CRcWKBVfaHFxcXFxcXFxYi9IZxNUTA5xcXFxcXFxcXFRQghAFDZxcXFxcXFxceP/ AADwfwAA8D8AAIAfAAAADwAAAAcAAAADAAAAAQAAgAAAAMDAAADAYAAAgHEAAIB7 AACAfwAAgH8AAMD/AAA= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=kitty.css Content-Type: text/css; charset=windows-1251; name=kitty.css Content-Location: http://img.mail.ru/r/blogs/brends/kitty.css?1 Content-Transfer-Encoding: 8bit /* lines */ .kiity_line_text { font: 11px/12px "Times New Roman"; padding-left:10px; } .kitty_line_pointer { position:absolute; } /* line 1 */ .kitty_line_1 { width:400px; height:60px; background: url(http://img.mail.ru/r/blogs/brends/kitty_line_bg_1.gif) left top no-repeat; position:relative; overflow:hidden; } .kitty_line_1 .kiity_line_text { color:#7c0047; padding-top:45px; } .kitty_line_1 .kitty_line_pointer { top:6px; width:42px; height:39px; } .kitty_line_1 .kitty_count1 {left:0px;} .kitty_line_1 .kitty_count2 {left:31px;} .kitty_line_1 .kitty_count3 {left:63px;} .kitty_line_1 .kitty_count4 {left:95px;} .kitty_line_1 .kitty_count5 {left:128px;} .kitty_line_1 .kitty_count6 {left:161px;} .kitty_line_1 .kitty_count7 {left:193px;} .kitty_line_1 .kitty_count8 {left:226px;} .kitty_line_1 .kitty_count9 {left:259px;} .kitty_line_1 .kitty_count10 {left:292px;} .kitty_line_1 .kitty_count11 {left:324px;} .kitty_line_1 .kitty_count12 {left:358px;} /* line 2*/ .kitty_line_2 { width:400px; height:70px; background: url(http://img.mail.ru/r/blogs/brends/kitty_line_bg_2.gif) left top no-repeat; position:relative; overflow:hidden; } .kitty_line_2 .kiity_line_text { color:#FFF; padding-top:55px; } .kitty_line_2 .kitty_line_pointer { top:22px; width:38px; height:35px; } .kitty_line_2 .kitty_count1 {left:3px;} .kitty_line_2 .kitty_count2 {left:28px;} .kitty_line_2 .kitty_count3 {left:55px;} .kitty_line_2 .kitty_count4 {left:80px;} .kitty_line_2 .kitty_count5 {left:105px;} .kitty_line_2 .kitty_count6 {left:131px;} .kitty_line_2 .kitty_count7 {left:156px;} .kitty_line_2 .kitty_count8 {left:182px;} .kitty_line_2 .kitty_count9 {left:208px;} .kitty_line_2 .kitty_count10 {left:233px;} .kitty_line_2 .kitty_count11 {left:259px;} .kitty_line_2 .kitty_count12 {left:285px;} .kitty_line_2 .kitty_count13 {left:310px;} .kitty_line_2 .kitty_count14 {left:336px;} .kitty_line_2 .kitty_count15 {left:363px;} /* lien 3 */ .kitty_line_3 { width:400px; height:80px; background: url(http://img.mail.ru/r/blogs/brends/kitty_line_bg_3.gif) left top no-repeat; position:relative; overflow:hidden; } .kitty_line_3 .kiity_line_text { color:#FFF; padding-top:65px; } .kitty_line_3 .kitty_line_pointer { top:10px; width:31px; height:51px; } .kitty_line_3 .kitty_count1 {left:2px;} .kitty_line_3 .kitty_count2 {left:34px;} .kitty_line_3 .kitty_count3 {left:67px;} .kitty_line_3 .kitty_count4 {left:101px;} .kitty_line_3 .kitty_count5 {left:134px;} .kitty_line_3 .kitty_count6 {left:167px;} .kitty_line_3 .kitty_count7 {left:200px;} .kitty_line_3 .kitty_count8 {left:233px;} .kitty_line_3 .kitty_count9 {left:266px;} .kitty_line_3 .kitty_count10 {left:300px;} .kitty_line_3 .kitty_count11 {left:333px;} .kitty_line_3 .kitty_count12 {left:365px;} /* line 4 */ .kitty_line_4 { width:400px; height:90px; background: url(http://img.mail.ru/r/blogs/brends/kitty_line_bg_4.gif) left top no-repeat; position:relative; overflow:hidden; } .kitty_line_4 .kiity_line_text { color:#FFF; padding-top:75px; } .kitty_line_4 .kitty_line_pointer { top:26px; width:39px; height:45px; } .kitty_line_4 .kitty_count1 {left:-6px;} .kitty_line_4 .kitty_count2 {left:13px;} .kitty_line_4 .kitty_count3 {left:33px;} .kitty_line_4 .kitty_count4 {left:53px;} .kitty_line_4 .kitty_count5 {left:73px;} .kitty_line_4 .kitty_count6 {left:93px;} .kitty_line_4 .kitty_count7 {left:112px;} .kitty_line_4 .kitty_count8 {left:131px;} .kitty_line_4 .kitty_count9 {left:151px;} .kitty_line_4 .kitty_count10 {left:171px;} .kitty_line_4 .kitty_count11 {left:191px;} .kitty_line_4 .kitty_count12 {left:210px;} .kitty_line_4 .kitty_count13 {left:230px;} .kitty_line_4 .kitty_count14 {left:251px;} .kitty_line_4 .kitty_count15 {left:271px;} .kitty_line_4 .kitty_count16 {left:289px;} .kitty_line_4 .kitty_count17 {left:310px;} .kitty_line_4 .kitty_count18 {left:330px;} .kitty_line_4 .kitty_count19 {left:349px;} .kitty_line_4 .kitty_count20 {left:369px;} /* line 5 */ .kitty_line_5 { width:400px; height:106px; background: url(http://img.mail.ru/r/blogs/brends/kitty_line_bg_5.gif) left top no-repeat; position:relative; overflow:hidden; } .kitty_line_5 .kiity_line_text { color:#FFF; padding-top:92px; } .kitty_line_5 .kitty_line_pointer { top:18px; width:30px; height:39px; } .kitty_line_5 .kitty_count1 {left:8px;} .kitty_line_5 .kitty_count2 {left:47px;top:4px;} .kitty_line_5 .kitty_count3 {left:87px;} .kitty_line_5 .kitty_count4 {left:126px;top:4px;} .kitty_line_5 .kitty_count5 {left:165px;} .kitty_line_5 .kitty_count6 {left:204px;top:4px;} .kitty_line_5 .kitty_count7 {left:244px;} .kitty_line_5 .kitty_count8 {left:283px;top:4px;} .kitty_line_5 .kitty_count9 {left:322px;} .kitty_line_5 .kitty_count10 {left:362px;top:4px;} /* line 6 */ .kitty_line_6 { width:400px; height:109px; background: url(http://img.mail.ru/r/blogs/brends/kitty_line_bg_6.gif) left top no-repeat; position:relative; overflow:hidden; } .kitty_line_6 .kiity_line_text { color:#bb417c; padding-top:94px; } .kitty_line_6 .kitty_line_pointer { top:25px; width:28px; height:39px; } .kitty_line_6 .kitty_count1 {left:10px; top:47px;} .kitty_line_6 .kitty_count2 {left:49px; top:38px;} .kitty_line_6 .kitty_count3 {left:88px; top:32px;} .kitty_line_6 .kitty_count4 {left:125px; top:26px;} .kitty_line_6 .kitty_count5 {left:165px; top:26px;} .kitty_line_6 .kitty_count6 {left:206px; top:26px;} .kitty_line_6 .kitty_count7 {left:244px; top:26px;} .kitty_line_6 .kitty_count8 {left:284px; top:32px;} .kitty_line_6 .kitty_count9 {left:323px; top:38px;} .kitty_line_6 .kitty_count10 {left:363px; top:47px;} ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=prototype-1.6.0.3.js Content-Type: application/x-javascript; charset=windows-1251; name=prototype-1.6.0.3.js Content-Location: http://img3.imgsmail.ru/mail/ru/images/js/myjs/prototype-1.6.0.3.js Content-Transfer-Encoding: Base64 LyogIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yaywgdmVyc2lvbiAxLjYu MC4zCiAqICAoYykgMjAwNS0yMDA4IFNhbSBTdGVwaGVuc29uCiAqCiAqICBQcm90 b3R5cGUgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9m IGFuIE1JVC1zdHlsZSBsaWNlbnNlLgogKiAgRm9yIGRldGFpbHMsIHNlZSB0aGUg UHJvdG90eXBlIHdlYiBzaXRlOiBodHRwOi8vd3d3LnByb3RvdHlwZWpzLm9yZy8K ICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUHJvdG90eXBl ID0gewogIFZlcnNpb246ICcxLjYuMC4zJywKCiAgQnJvd3NlcjogewogICAgSUU6 ICAgICAhISh3aW5kb3cuYXR0YWNoRXZlbnQgJiYKICAgICAgbmF2aWdhdG9yLnVz ZXJBZ2VudC5pbmRleE9mKCdPcGVyYScpID09PSAtMSksCiAgICBPcGVyYTogIG5h dmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignT3BlcmEnKSA+IC0xLAogICAgV2Vi S2l0OiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FwcGxlV2ViS2l0Lycp ID4gLTEsCiAgICBHZWNrbzogIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZign R2Vja28nKSA+IC0xICYmCiAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhP ZignS0hUTUwnKSA9PT0gLTEsCiAgICBNb2JpbGVTYWZhcmk6ICEhbmF2aWdhdG9y LnVzZXJBZ2VudC5tYXRjaCgvQXBwbGUuKk1vYmlsZS4qU2FmYXJpLykKICB9LAoK ICBCcm93c2VyRmVhdHVyZXM6IHsKICAgIFhQYXRoOiAhIWRvY3VtZW50LmV2YWx1 YXRlLAogICAgU2VsZWN0b3JzQVBJOiAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Is CiAgICBFbGVtZW50RXh0ZW5zaW9uczogISF3aW5kb3cuSFRNTEVsZW1lbnQsCiAg ICBTcGVjaWZpY0VsZW1lbnRFeHRlbnNpb25zOgogICAgICBkb2N1bWVudC5jcmVh dGVFbGVtZW50KCdkaXYnKVsnX19wcm90b19fJ10gJiYKICAgICAgZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgnZGl2JylbJ19fcHJvdG9fXyddICE9PQogICAgICAgIGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKVsnX19wcm90b19fJ10KICB9LAoK ICBTY3JpcHRGcmFnbWVudDogJzxzY3JpcHRbXj5dKj4oW1xcU1xcc10qPyk8XC9z Y3JpcHQ+JywKICBKU09ORmlsdGVyOiAvXlwvXCotc2VjdXJlLShbXHNcU10qKVwq XC9ccyokLywKCiAgZW1wdHlGdW5jdGlvbjogZnVuY3Rpb24oKSB7IH0sCiAgSzog ZnVuY3Rpb24oeCkgeyByZXR1cm4geCB9Cn07CgppZiAoUHJvdG90eXBlLkJyb3dz ZXIuTW9iaWxlU2FmYXJpKQogIFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuU3Bl Y2lmaWNFbGVtZW50RXh0ZW5zaW9ucyA9IGZhbHNlOwoKCi8qIEJhc2VkIG9uIEFs ZXggQXJuZWxsJ3MgaW5oZXJpdGFuY2UgaW1wbGVtZW50YXRpb24uICovCnZhciBD bGFzcyA9IHsKICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcmVudCA9 IG51bGwsIHByb3BlcnRpZXMgPSAkQShhcmd1bWVudHMpOwogICAgaWYgKE9iamVj dC5pc0Z1bmN0aW9uKHByb3BlcnRpZXNbMF0pKQogICAgICBwYXJlbnQgPSBwcm9w ZXJ0aWVzLnNoaWZ0KCk7CgogICAgZnVuY3Rpb24ga2xhc3MoKSB7CiAgICAgIHRo aXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfQoKICAg IE9iamVjdC5leHRlbmQoa2xhc3MsIENsYXNzLk1ldGhvZHMpOwogICAga2xhc3Mu c3VwZXJjbGFzcyA9IHBhcmVudDsKICAgIGtsYXNzLnN1YmNsYXNzZXMgPSBbXTsK CiAgICBpZiAocGFyZW50KSB7CiAgICAgIHZhciBzdWJjbGFzcyA9IGZ1bmN0aW9u KCkgeyB9OwogICAgICBzdWJjbGFzcy5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90 eXBlOwogICAgICBrbGFzcy5wcm90b3R5cGUgPSBuZXcgc3ViY2xhc3M7CiAgICAg IHBhcmVudC5zdWJjbGFzc2VzLnB1c2goa2xhc3MpOwogICAgfQoKICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykKICAgICAga2xh c3MuYWRkTWV0aG9kcyhwcm9wZXJ0aWVzW2ldKTsKCiAgICBpZiAoIWtsYXNzLnBy b3RvdHlwZS5pbml0aWFsaXplKQogICAgICBrbGFzcy5wcm90b3R5cGUuaW5pdGlh bGl6ZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwoKICAgIGtsYXNzLnByb3Rv dHlwZS5jb25zdHJ1Y3RvciA9IGtsYXNzOwoKICAgIHJldHVybiBrbGFzczsKICB9 Cn07CgpDbGFzcy5NZXRob2RzID0gewogIGFkZE1ldGhvZHM6IGZ1bmN0aW9uKHNv dXJjZSkgewogICAgdmFyIGFuY2VzdG9yICAgPSB0aGlzLnN1cGVyY2xhc3MgJiYg dGhpcy5zdXBlcmNsYXNzLnByb3RvdHlwZTsKICAgIHZhciBwcm9wZXJ0aWVzID0g T2JqZWN0LmtleXMoc291cmNlKTsKCiAgICBpZiAoIU9iamVjdC5rZXlzKHsgdG9T dHJpbmc6IHRydWUgfSkubGVuZ3RoKQogICAgICBwcm9wZXJ0aWVzLnB1c2goInRv U3RyaW5nIiwgInZhbHVlT2YiKTsKCiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3Ro ID0gcHJvcGVydGllcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICB2 YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldLCB2YWx1ZSA9IHNvdXJjZVtwcm9w ZXJ0eV07CiAgICAgIGlmIChhbmNlc3RvciAmJiBPYmplY3QuaXNGdW5jdGlvbih2 YWx1ZSkgJiYKICAgICAgICAgIHZhbHVlLmFyZ3VtZW50TmFtZXMoKS5maXJzdCgp ID09ICIkc3VwZXIiKSB7CiAgICAgICAgdmFyIG1ldGhvZCA9IHZhbHVlOwogICAg ICAgIHZhbHVlID0gKGZ1bmN0aW9uKG0pIHsKICAgICAgICAgIHJldHVybiBmdW5j dGlvbigpIHsgcmV0dXJuIGFuY2VzdG9yW21dLmFwcGx5KHRoaXMsIGFyZ3VtZW50 cykgfTsKICAgICAgICB9KShwcm9wZXJ0eSkud3JhcChtZXRob2QpOwoKICAgICAg ICB2YWx1ZS52YWx1ZU9mID0gbWV0aG9kLnZhbHVlT2YuYmluZChtZXRob2QpOwog ICAgICAgIHZhbHVlLnRvU3RyaW5nID0gbWV0aG9kLnRvU3RyaW5nLmJpbmQobWV0 aG9kKTsKICAgICAgfQogICAgICB0aGlzLnByb3RvdHlwZVtwcm9wZXJ0eV0gPSB2 YWx1ZTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9Cn07Cgp2YXIgQWJzdHJh Y3QgPSB7IH07CgpPYmplY3QuZXh0ZW5kID0gZnVuY3Rpb24oZGVzdGluYXRpb24s IHNvdXJjZSkgewogIGZvciAodmFyIHByb3BlcnR5IGluIHNvdXJjZSkKICAgIGRl c3RpbmF0aW9uW3Byb3BlcnR5XSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgcmV0dXJu IGRlc3RpbmF0aW9uOwp9OwoKT2JqZWN0LmV4dGVuZChPYmplY3QsIHsKICBpbnNw ZWN0OiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHRyeSB7CiAgICAgIGlmIChPYmpl Y3QuaXNVbmRlZmluZWQob2JqZWN0KSkgcmV0dXJuICd1bmRlZmluZWQnOwogICAg ICBpZiAob2JqZWN0ID09PSBudWxsKSByZXR1cm4gJ251bGwnOwogICAgICByZXR1 cm4gb2JqZWN0Lmluc3BlY3QgPyBvYmplY3QuaW5zcGVjdCgpIDogU3RyaW5nKG9i amVjdCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGlmIChlIGluc3RhbmNlb2Yg UmFuZ2VFcnJvcikgcmV0dXJuICcuLi4nOwogICAgICB0aHJvdyBlOwogICAgfQog IH0sCgogIHRvSlNPTjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICB2YXIgdHlwZSA9 IHR5cGVvZiBvYmplY3Q7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAn dW5kZWZpbmVkJzoKICAgICAgY2FzZSAnZnVuY3Rpb24nOgogICAgICBjYXNlICd1 bmtub3duJzogcmV0dXJuOwogICAgICBjYXNlICdib29sZWFuJzogcmV0dXJuIG9i amVjdC50b1N0cmluZygpOwogICAgfQoKICAgIGlmIChvYmplY3QgPT09IG51bGwp IHJldHVybiAnbnVsbCc7CiAgICBpZiAob2JqZWN0LnRvSlNPTikgcmV0dXJuIG9i amVjdC50b0pTT04oKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KG9iamVjdCkp IHJldHVybjsKCiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgcHJv cGVydHkgaW4gb2JqZWN0KSB7CiAgICAgIHZhciB2YWx1ZSA9IE9iamVjdC50b0pT T04ob2JqZWN0W3Byb3BlcnR5XSk7CiAgICAgIGlmICghT2JqZWN0LmlzVW5kZWZp bmVkKHZhbHVlKSkKICAgICAgICByZXN1bHRzLnB1c2gocHJvcGVydHkudG9KU09O KCkgKyAnOiAnICsgdmFsdWUpOwogICAgfQoKICAgIHJldHVybiAneycgKyByZXN1 bHRzLmpvaW4oJywgJykgKyAnfSc7CiAgfSwKCiAgdG9RdWVyeVN0cmluZzogZnVu Y3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gJEgob2JqZWN0KS50b1F1ZXJ5U3Ry aW5nKCk7CiAgfSwKCiAgdG9IVE1MOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJl dHVybiBvYmplY3QgJiYgb2JqZWN0LnRvSFRNTCA/IG9iamVjdC50b0hUTUwoKSA6 IFN0cmluZy5pbnRlcnByZXQob2JqZWN0KTsKICB9LAoKICBrZXlzOiBmdW5jdGlv bihvYmplY3QpIHsKICAgIHZhciBrZXlzID0gW107CiAgICBmb3IgKHZhciBwcm9w ZXJ0eSBpbiBvYmplY3QpCiAgICAgIGtleXMucHVzaChwcm9wZXJ0eSk7CiAgICBy ZXR1cm4ga2V5czsKICB9LAoKICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkgewog ICAgdmFyIHZhbHVlcyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2Jq ZWN0KQogICAgICB2YWx1ZXMucHVzaChvYmplY3RbcHJvcGVydHldKTsKICAgIHJl dHVybiB2YWx1ZXM7CiAgfSwKCiAgY2xvbmU6IGZ1bmN0aW9uKG9iamVjdCkgewog ICAgcmV0dXJuIE9iamVjdC5leHRlbmQoeyB9LCBvYmplY3QpOwogIH0sCgogIGlz RWxlbWVudDogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gISEob2JqZWN0 ICYmIG9iamVjdC5ub2RlVHlwZSA9PSAxKTsKICB9LAoKICBpc0FycmF5OiBmdW5j dGlvbihvYmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiB0eXBl b2Ygb2JqZWN0ID09ICJvYmplY3QiICYmCiAgICAgICdzcGxpY2UnIGluIG9iamVj dCAmJiAnam9pbicgaW4gb2JqZWN0OwogIH0sCgogIGlzSGFzaDogZnVuY3Rpb24o b2JqZWN0KSB7CiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgSGFzaDsKICB9 LAoKICBpc0Z1bmN0aW9uOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiB0 eXBlb2Ygb2JqZWN0ID09ICJmdW5jdGlvbiI7CiAgfSwKCiAgaXNTdHJpbmc6IGZ1 bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT0gInN0 cmluZyI7CiAgfSwKCiAgaXNOdW1iZXI6IGZ1bmN0aW9uKG9iamVjdCkgewogICAg cmV0dXJuIHR5cGVvZiBvYmplY3QgPT0gIm51bWJlciI7CiAgfSwKCiAgaXNVbmRl ZmluZWQ6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmpl Y3QgPT0gInVuZGVmaW5lZCI7CiAgfQp9KTsKCk9iamVjdC5leHRlbmQoRnVuY3Rp b24ucHJvdG90eXBlLCB7CiAgYXJndW1lbnROYW1lczogZnVuY3Rpb24oKSB7CiAg ICB2YXIgbmFtZXMgPSB0aGlzLnRvU3RyaW5nKCkubWF0Y2goL15bXHNcKF0qZnVu Y3Rpb25bXihdKlwoKFteXCldKilcKS8pWzFdCiAgICAgIC5yZXBsYWNlKC9ccysv ZywgJycpLnNwbGl0KCcsJyk7CiAgICByZXR1cm4gbmFtZXMubGVuZ3RoID09IDEg JiYgIW5hbWVzWzBdID8gW10gOiBuYW1lczsKICB9LAoKICBiaW5kOiBmdW5jdGlv bigpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMiAmJiBPYmplY3QuaXNV bmRlZmluZWQoYXJndW1lbnRzWzBdKSkgcmV0dXJuIHRoaXM7CiAgICB2YXIgX19t ZXRob2QgPSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2JqZWN0ID0gYXJn cy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4g X19tZXRob2QuYXBwbHkob2JqZWN0LCBhcmdzLmNvbmNhdCgkQShhcmd1bWVudHMp KSk7CiAgICB9CiAgfSwKCiAgYmluZEFzRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24o KSB7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRz KSwgb2JqZWN0ID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKGV2 ZW50KSB7CiAgICAgIHJldHVybiBfX21ldGhvZC5hcHBseShvYmplY3QsIFtldmVu dCB8fCB3aW5kb3cuZXZlbnRdLmNvbmNhdChhcmdzKSk7CiAgICB9CiAgfSwKCiAg Y3Vycnk6IGZ1bmN0aW9uKCkgewogICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSBy ZXR1cm4gdGhpczsKICAgIHZhciBfX21ldGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShh cmd1bWVudHMpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4g X19tZXRob2QuYXBwbHkodGhpcywgYXJncy5jb25jYXQoJEEoYXJndW1lbnRzKSkp OwogICAgfQogIH0sCgogIGRlbGF5OiBmdW5jdGlvbigpIHsKICAgIHZhciBfX21l dGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpLCB0aW1lb3V0ID0gYXJn cy5zaGlmdCgpICogMTAwMDsKICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dChm dW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5KF9fbWV0aG9k LCBhcmdzKTsKICAgIH0sIHRpbWVvdXQpOwogIH0sCgogIGRlZmVyOiBmdW5jdGlv bigpIHsKICAgIHZhciBhcmdzID0gWzAuMDFdLmNvbmNhdCgkQShhcmd1bWVudHMp KTsKICAgIHJldHVybiB0aGlzLmRlbGF5LmFwcGx5KHRoaXMsIGFyZ3MpOwogIH0s CgogIHdyYXA6IGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgIHZhciBfX21ldGhvZCA9 IHRoaXM7CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB3cmFw cGVyLmFwcGx5KHRoaXMsIFtfX21ldGhvZC5iaW5kKHRoaXMpXS5jb25jYXQoJEEo YXJndW1lbnRzKSkpOwogICAgfQogIH0sCgogIG1ldGhvZGl6ZTogZnVuY3Rpb24o KSB7CiAgICBpZiAodGhpcy5fbWV0aG9kaXplZCkgcmV0dXJuIHRoaXMuX21ldGhv ZGl6ZWQ7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzOwogICAgcmV0dXJuIHRoaXMu X21ldGhvZGl6ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9k LmFwcGx5KG51bGwsIFt0aGlzXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAg fTsKICB9Cn0pOwoKRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7 CiAgcmV0dXJuICciJyArIHRoaXMuZ2V0VVRDRnVsbFllYXIoKSArICctJyArCiAg ICAodGhpcy5nZXRVVENNb250aCgpICsgMSkudG9QYWRkZWRTdHJpbmcoMikgKyAn LScgKwogICAgdGhpcy5nZXRVVENEYXRlKCkudG9QYWRkZWRTdHJpbmcoMikgKyAn VCcgKwogICAgdGhpcy5nZXRVVENIb3VycygpLnRvUGFkZGVkU3RyaW5nKDIpICsg JzonICsKICAgIHRoaXMuZ2V0VVRDTWludXRlcygpLnRvUGFkZGVkU3RyaW5nKDIp ICsgJzonICsKICAgIHRoaXMuZ2V0VVRDU2Vjb25kcygpLnRvUGFkZGVkU3RyaW5n KDIpICsgJ1oiJzsKfTsKCnZhciBUcnkgPSB7CiAgdGhlc2U6IGZ1bmN0aW9uKCkg ewogICAgdmFyIHJldHVyblZhbHVlOwoKICAgIGZvciAodmFyIGkgPSAwLCBsZW5n dGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAg dmFyIGxhbWJkYSA9IGFyZ3VtZW50c1tpXTsKICAgICAgdHJ5IHsKICAgICAgICBy ZXR1cm5WYWx1ZSA9IGxhbWJkYSgpOwogICAgICAgIGJyZWFrOwogICAgICB9IGNh dGNoIChlKSB7IH0KICAgIH0KCiAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgfQp9 OwoKUmVnRXhwLnByb3RvdHlwZS5tYXRjaCA9IFJlZ0V4cC5wcm90b3R5cGUudGVz dDsKClJlZ0V4cC5lc2NhcGUgPSBmdW5jdGlvbihzdHIpIHsKICByZXR1cm4gU3Ry aW5nKHN0cikucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCAn XFwkMScpOwp9OwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIg UGVyaW9kaWNhbEV4ZWN1dGVyID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXpl OiBmdW5jdGlvbihjYWxsYmFjaywgZnJlcXVlbmN5KSB7CiAgICB0aGlzLmNhbGxi YWNrID0gY2FsbGJhY2s7CiAgICB0aGlzLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeTsK ICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gZmFsc2U7CgogICAgdGhpcy5y ZWdpc3RlckNhbGxiYWNrKCk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxsYmFjazogZnVu Y3Rpb24oKSB7CiAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5vblRp bWVyRXZlbnQuYmluZCh0aGlzKSwgdGhpcy5mcmVxdWVuY3kgKiAxMDAwKTsKICB9 LAoKICBleGVjdXRlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuY2FsbGJhY2sodGhp cyk7CiAgfSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICBpZiAoIXRoaXMudGlt ZXIpIHJldHVybjsKICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7CiAgICB0 aGlzLnRpbWVyID0gbnVsbDsKICB9LAoKICBvblRpbWVyRXZlbnQ6IGZ1bmN0aW9u KCkgewogICAgaWYgKCF0aGlzLmN1cnJlbnRseUV4ZWN1dGluZykgewogICAgICB0 cnkgewogICAgICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gdHJ1ZTsKICAg ICAgICB0aGlzLmV4ZWN1dGUoKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICB0 aGlzLmN1cnJlbnRseUV4ZWN1dGluZyA9IGZhbHNlOwogICAgICB9CiAgICB9CiAg fQp9KTsKT2JqZWN0LmV4dGVuZChTdHJpbmcsIHsKICBpbnRlcnByZXQ6IGZ1bmN0 aW9uKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogU3Ry aW5nKHZhbHVlKTsKICB9LAogIHNwZWNpYWxDaGFyOiB7CiAgICAnXGInOiAnXFxi JywKICAgICdcdCc6ICdcXHQnLAogICAgJ1xuJzogJ1xcbicsCiAgICAnXGYnOiAn XFxmJywKICAgICdccic6ICdcXHInLAogICAgJ1xcJzogJ1xcXFwnCiAgfQp9KTsK Ck9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGdzdWI6IGZ1bmN0 aW9uKHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7CiAgICB2YXIgcmVzdWx0ID0gJycs IHNvdXJjZSA9IHRoaXMsIG1hdGNoOwogICAgcmVwbGFjZW1lbnQgPSBhcmd1bWVu dHMuY2FsbGVlLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7CgogICAg d2hpbGUgKHNvdXJjZS5sZW5ndGggPiAwKSB7CiAgICAgIGlmIChtYXRjaCA9IHNv dXJjZS5tYXRjaChwYXR0ZXJuKSkgewogICAgICAgIHJlc3VsdCArPSBzb3VyY2Uu c2xpY2UoMCwgbWF0Y2guaW5kZXgpOwogICAgICAgIHJlc3VsdCArPSBTdHJpbmcu aW50ZXJwcmV0KHJlcGxhY2VtZW50KG1hdGNoKSk7CiAgICAgICAgc291cmNlICA9 IHNvdXJjZS5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7CiAg ICAgIH0gZWxzZSB7CiAgICAgICAgcmVzdWx0ICs9IHNvdXJjZSwgc291cmNlID0g Jyc7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfSwKCiAgc3Vi OiBmdW5jdGlvbihwYXR0ZXJuLCByZXBsYWNlbWVudCwgY291bnQpIHsKICAgIHJl cGxhY2VtZW50ID0gdGhpcy5nc3ViLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNl bWVudCk7CiAgICBjb3VudCA9IE9iamVjdC5pc1VuZGVmaW5lZChjb3VudCkgPyAx IDogY291bnQ7CgogICAgcmV0dXJuIHRoaXMuZ3N1YihwYXR0ZXJuLCBmdW5jdGlv bihtYXRjaCkgewogICAgICBpZiAoLS1jb3VudCA8IDApIHJldHVybiBtYXRjaFsw XTsKICAgICAgcmV0dXJuIHJlcGxhY2VtZW50KG1hdGNoKTsKICAgIH0pOwogIH0s CgogIHNjYW46IGZ1bmN0aW9uKHBhdHRlcm4sIGl0ZXJhdG9yKSB7CiAgICB0aGlz LmdzdWIocGF0dGVybiwgaXRlcmF0b3IpOwogICAgcmV0dXJuIFN0cmluZyh0aGlz KTsKICB9LAoKICB0cnVuY2F0ZTogZnVuY3Rpb24obGVuZ3RoLCB0cnVuY2F0aW9u KSB7CiAgICBsZW5ndGggPSBsZW5ndGggfHwgMzA7CiAgICB0cnVuY2F0aW9uID0g T2JqZWN0LmlzVW5kZWZpbmVkKHRydW5jYXRpb24pID8gJy4uLicgOiB0cnVuY2F0 aW9uOwogICAgcmV0dXJuIHRoaXMubGVuZ3RoID4gbGVuZ3RoID8KICAgICAgdGhp cy5zbGljZSgwLCBsZW5ndGggLSB0cnVuY2F0aW9uLmxlbmd0aCkgKyB0cnVuY2F0 aW9uIDogU3RyaW5nKHRoaXMpOwogIH0sCgogIHN0cmlwOiBmdW5jdGlvbigpIHsK ICAgIHJldHVybiB0aGlzLnJlcGxhY2UoL15ccysvLCAnJykucmVwbGFjZSgvXHMr JC8sICcnKTsKICB9LAoKICBzdHJpcFRhZ3M6IGZ1bmN0aW9uKCkgewogICAgcmV0 dXJuIHRoaXMucmVwbGFjZSgvPFwvP1tePl0rPi9naSwgJycpOwogIH0sCgogIHN0 cmlwU2NyaXB0czogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5yZXBsYWNl KG5ldyBSZWdFeHAoUHJvdG90eXBlLlNjcmlwdEZyYWdtZW50LCAnaW1nJyksICcn KTsKICB9LAoKICBleHRyYWN0U2NyaXB0czogZnVuY3Rpb24oKSB7CiAgICB2YXIg bWF0Y2hBbGwgPSBuZXcgUmVnRXhwKFByb3RvdHlwZS5TY3JpcHRGcmFnbWVudCwg J2ltZycpOwogICAgdmFyIG1hdGNoT25lID0gbmV3IFJlZ0V4cChQcm90b3R5cGUu U2NyaXB0RnJhZ21lbnQsICdpbScpOwogICAgcmV0dXJuICh0aGlzLm1hdGNoKG1h dGNoQWxsKSB8fCBbXSkubWFwKGZ1bmN0aW9uKHNjcmlwdFRhZykgewogICAgICBy ZXR1cm4gKHNjcmlwdFRhZy5tYXRjaChtYXRjaE9uZSkgfHwgWycnLCAnJ10pWzFd OwogICAgfSk7CiAgfSwKCiAgZXZhbFNjcmlwdHM6IGZ1bmN0aW9uKCkgewogICAg cmV0dXJuIHRoaXMuZXh0cmFjdFNjcmlwdHMoKS5tYXAoZnVuY3Rpb24oc2NyaXB0 KSB7IHJldHVybiBldmFsKHNjcmlwdCkgfSk7CiAgfSwKCiAgZXNjYXBlSFRNTDog ZnVuY3Rpb24oKSB7CiAgICB2YXIgc2VsZiA9IGFyZ3VtZW50cy5jYWxsZWU7CiAg ICBzZWxmLnRleHQuZGF0YSA9IHRoaXM7CiAgICByZXR1cm4gc2VsZi5kaXYuaW5u ZXJIVE1MOwogIH0sCgogIHVuZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICB2 YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmlubmVySFRNTCA9 IHRoaXMuc3RyaXBUYWdzKCk7CiAgICByZXR1cm4gZGl2LmNoaWxkTm9kZXNbMF0g PyAoZGl2LmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/CiAgICAgICRBKGRpdi5jaGls ZE5vZGVzKS5pbmplY3QoJycsIGZ1bmN0aW9uKG1lbW8sIG5vZGUpIHsgcmV0dXJu IG1lbW8rbm9kZS5ub2RlVmFsdWUgfSkgOgogICAgICBkaXYuY2hpbGROb2Rlc1sw XS5ub2RlVmFsdWUpIDogJyc7CiAgfSwKCiAgdG9RdWVyeVBhcmFtczogZnVuY3Rp b24oc2VwYXJhdG9yKSB7CiAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmlwKCkubWF0 Y2goLyhbXj8jXSopKCMuKik/JC8pOwogICAgaWYgKCFtYXRjaCkgcmV0dXJuIHsg fTsKCiAgICByZXR1cm4gbWF0Y2hbMV0uc3BsaXQoc2VwYXJhdG9yIHx8ICcmJyku aW5qZWN0KHsgfSwgZnVuY3Rpb24oaGFzaCwgcGFpcikgewogICAgICBpZiAoKHBh aXIgPSBwYWlyLnNwbGl0KCc9JykpWzBdKSB7CiAgICAgICAgdmFyIGtleSA9IGRl Y29kZVVSSUNvbXBvbmVudChwYWlyLnNoaWZ0KCkpOwogICAgICAgIHZhciB2YWx1 ZSA9IHBhaXIubGVuZ3RoID4gMSA/IHBhaXIuam9pbignPScpIDogcGFpclswXTsK ICAgICAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB2YWx1ZSA9IGRlY29kZVVS SUNvbXBvbmVudCh2YWx1ZSk7CgogICAgICAgIGlmIChrZXkgaW4gaGFzaCkgewog ICAgICAgICAgaWYgKCFPYmplY3QuaXNBcnJheShoYXNoW2tleV0pKSBoYXNoW2tl eV0gPSBbaGFzaFtrZXldXTsKICAgICAgICAgIGhhc2hba2V5XS5wdXNoKHZhbHVl KTsKICAgICAgICB9CiAgICAgICAgZWxzZSBoYXNoW2tleV0gPSB2YWx1ZTsKICAg ICAgfQogICAgICByZXR1cm4gaGFzaDsKICAgIH0pOwogIH0sCgogIHRvQXJyYXk6 IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc3BsaXQoJycpOwogIH0sCgog IHN1Y2M6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc2xpY2UoMCwgdGhp cy5sZW5ndGggLSAxKSArCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5j aGFyQ29kZUF0KHRoaXMubGVuZ3RoIC0gMSkgKyAxKTsKICB9LAoKICB0aW1lczog ZnVuY3Rpb24oY291bnQpIHsKICAgIHJldHVybiBjb3VudCA8IDEgPyAnJyA6IG5l dyBBcnJheShjb3VudCArIDEpLmpvaW4odGhpcyk7CiAgfSwKCiAgY2FtZWxpemU6 IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcnRzID0gdGhpcy5zcGxpdCgnLScpLCBs ZW4gPSBwYXJ0cy5sZW5ndGg7CiAgICBpZiAobGVuID09IDEpIHJldHVybiBwYXJ0 c1swXTsKCiAgICB2YXIgY2FtZWxpemVkID0gdGhpcy5jaGFyQXQoMCkgPT0gJy0n CiAgICAgID8gcGFydHNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0 c1swXS5zdWJzdHJpbmcoMSkKICAgICAgOiBwYXJ0c1swXTsKCiAgICBmb3IgKHZh ciBpID0gMTsgaSA8IGxlbjsgaSsrKQogICAgICBjYW1lbGl6ZWQgKz0gcGFydHNb aV0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1tpXS5zdWJzdHJpbmco MSk7CgogICAgcmV0dXJuIGNhbWVsaXplZDsKICB9LAoKICBjYXBpdGFsaXplOiBm dW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmNoYXJBdCgwKS50b1VwcGVyQ2Fz ZSgpICsgdGhpcy5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKTsKICB9LAoKICB1 bmRlcnNjb3JlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIoLzo6 LywgJy8nKS5nc3ViKC8oW0EtWl0rKShbQS1aXVthLXpdKS8sJyN7MX1fI3syfScp LmdzdWIoLyhbYS16XGRdKShbQS1aXSkvLCcjezF9XyN7Mn0nKS5nc3ViKC8tLywn XycpLnRvTG93ZXJDYXNlKCk7CiAgfSwKCiAgZGFzaGVyaXplOiBmdW5jdGlvbigp IHsKICAgIHJldHVybiB0aGlzLmdzdWIoL18vLCctJyk7CiAgfSwKCiAgaW5zcGVj dDogZnVuY3Rpb24odXNlRG91YmxlUXVvdGVzKSB7CiAgICB2YXIgZXNjYXBlZFN0 cmluZyA9IHRoaXMuZ3N1YigvW1x4MDAtXHgxZlxcXS8sIGZ1bmN0aW9uKG1hdGNo KSB7CiAgICAgIHZhciBjaGFyYWN0ZXIgPSBTdHJpbmcuc3BlY2lhbENoYXJbbWF0 Y2hbMF1dOwogICAgICByZXR1cm4gY2hhcmFjdGVyID8gY2hhcmFjdGVyIDogJ1xc dTAwJyArIG1hdGNoWzBdLmNoYXJDb2RlQXQoKS50b1BhZGRlZFN0cmluZygyLCAx Nik7CiAgICB9KTsKICAgIGlmICh1c2VEb3VibGVRdW90ZXMpIHJldHVybiAnIicg KyBlc2NhcGVkU3RyaW5nLnJlcGxhY2UoLyIvZywgJ1xcIicpICsgJyInOwogICAg cmV0dXJuICInIiArIGVzY2FwZWRTdHJpbmcucmVwbGFjZSgvJy9nLCAnXFxcJycp ICsgIiciOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4g dGhpcy5pbnNwZWN0KHRydWUpOwogIH0sCgogIHVuZmlsdGVySlNPTjogZnVuY3Rp b24oZmlsdGVyKSB7CiAgICByZXR1cm4gdGhpcy5zdWIoZmlsdGVyIHx8IFByb3Rv dHlwZS5KU09ORmlsdGVyLCAnI3sxfScpOwogIH0sCgogIGlzSlNPTjogZnVuY3Rp b24oKSB7CiAgICB2YXIgc3RyID0gdGhpczsKICAgIGlmIChzdHIuYmxhbmsoKSkg cmV0dXJuIGZhbHNlOwogICAgc3RyID0gdGhpcy5yZXBsYWNlKC9cXC4vZywgJ0An KS5yZXBsYWNlKC8iW14iXFxcblxyXSoiL2csICcnKTsKICAgIHJldHVybiAoL15b LDp7fVxbXF0wLTkuXC0rRWFlZmxuci11IFxuXHJcdF0qJC8pLnRlc3Qoc3RyKTsK ICB9LAoKICBldmFsSlNPTjogZnVuY3Rpb24oc2FuaXRpemUpIHsKICAgIHZhciBq c29uID0gdGhpcy51bmZpbHRlckpTT04oKTsKICAgIHRyeSB7CiAgICAgIGlmICgh c2FuaXRpemUgfHwganNvbi5pc0pTT04oKSkgcmV0dXJuIGV2YWwoJygnICsganNv biArICcpJyk7CiAgICB9IGNhdGNoIChlKSB7IH0KICAgIHRocm93IG5ldyBTeW50 YXhFcnJvcignQmFkbHkgZm9ybWVkIEpTT04gc3RyaW5nOiAnICsgdGhpcy5pbnNw ZWN0KCkpOwogIH0sCgogIGluY2x1ZGU6IGZ1bmN0aW9uKHBhdHRlcm4pIHsKICAg IHJldHVybiB0aGlzLmluZGV4T2YocGF0dGVybikgPiAtMTsKICB9LAoKICBzdGFy dHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICByZXR1cm4gdGhpcy5pbmRl eE9mKHBhdHRlcm4pID09PSAwOwogIH0sCgogIGVuZHNXaXRoOiBmdW5jdGlvbihw YXR0ZXJuKSB7CiAgICB2YXIgZCA9IHRoaXMubGVuZ3RoIC0gcGF0dGVybi5sZW5n dGg7CiAgICByZXR1cm4gZCA+PSAwICYmIHRoaXMubGFzdEluZGV4T2YocGF0dGVy bikgPT09IGQ7CiAgfSwKCiAgZW1wdHk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJu IHRoaXMgPT0gJyc7CiAgfSwKCiAgYmxhbms6IGZ1bmN0aW9uKCkgewogICAgcmV0 dXJuIC9eXHMqJC8udGVzdCh0aGlzKTsKICB9LAoKICBpbnRlcnBvbGF0ZTogZnVu Y3Rpb24ob2JqZWN0LCBwYXR0ZXJuKSB7CiAgICByZXR1cm4gbmV3IFRlbXBsYXRl KHRoaXMsIHBhdHRlcm4pLmV2YWx1YXRlKG9iamVjdCk7CiAgfQp9KTsKCmlmIChQ cm90b3R5cGUuQnJvd3Nlci5XZWJLaXQgfHwgUHJvdG90eXBlLkJyb3dzZXIuSUUp IE9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGVzY2FwZUhUTUw6 IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvJi9nLCcmYW1w OycpLnJlcGxhY2UoLzwvZywnJmx0OycpLnJlcGxhY2UoLz4vZywnJmd0OycpOwog IH0sCiAgdW5lc2NhcGVIVE1MOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlz LnN0cmlwVGFncygpLnJlcGxhY2UoLyZhbXA7L2csJyYnKS5yZXBsYWNlKC8mbHQ7 L2csJzwnKS5yZXBsYWNlKC8mZ3Q7L2csJz4nKTsKICB9Cn0pOwoKU3RyaW5nLnBy b3RvdHlwZS5nc3ViLnByZXBhcmVSZXBsYWNlbWVudCA9IGZ1bmN0aW9uKHJlcGxh Y2VtZW50KSB7CiAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlcGxhY2VtZW50KSkg cmV0dXJuIHJlcGxhY2VtZW50OwogIHZhciB0ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0 ZShyZXBsYWNlbWVudCk7CiAgcmV0dXJuIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVy biB0ZW1wbGF0ZS5ldmFsdWF0ZShtYXRjaCkgfTsKfTsKClN0cmluZy5wcm90b3R5 cGUucGFyc2VRdWVyeSA9IFN0cmluZy5wcm90b3R5cGUudG9RdWVyeVBhcmFtczsK Ck9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MLCB7CiAg ZGl2OiAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAgdGV4dDogZG9j dW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpCn0pOwoKU3RyaW5nLnByb3RvdHlwZS5l c2NhcGVIVE1MLmRpdi5hcHBlbmRDaGlsZChTdHJpbmcucHJvdG90eXBlLmVzY2Fw ZUhUTUwudGV4dCk7Cgp2YXIgVGVtcGxhdGUgPSBDbGFzcy5jcmVhdGUoewogIGlu aXRpYWxpemU6IGZ1bmN0aW9uKHRlbXBsYXRlLCBwYXR0ZXJuKSB7CiAgICB0aGlz LnRlbXBsYXRlID0gdGVtcGxhdGUudG9TdHJpbmcoKTsKICAgIHRoaXMucGF0dGVy biA9IHBhdHRlcm4gfHwgVGVtcGxhdGUuUGF0dGVybjsKICB9LAoKICBldmFsdWF0 ZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24o b2JqZWN0LnRvVGVtcGxhdGVSZXBsYWNlbWVudHMpKQogICAgICBvYmplY3QgPSBv YmplY3QudG9UZW1wbGF0ZVJlcGxhY2VtZW50cygpOwoKICAgIHJldHVybiB0aGlz LnRlbXBsYXRlLmdzdWIodGhpcy5wYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewog ICAgICBpZiAob2JqZWN0ID09IG51bGwpIHJldHVybiAnJzsKCiAgICAgIHZhciBi ZWZvcmUgPSBtYXRjaFsxXSB8fCAnJzsKICAgICAgaWYgKGJlZm9yZSA9PSAnXFwn KSByZXR1cm4gbWF0Y2hbMl07CgogICAgICB2YXIgY3R4ID0gb2JqZWN0LCBleHBy ID0gbWF0Y2hbM107CiAgICAgIHZhciBwYXR0ZXJuID0gL14oW14uW10rfFxbKCg/ Oi4qP1teXFxdKT8pXF0pKFwufFxbfCQpLzsKICAgICAgbWF0Y2ggPSBwYXR0ZXJu LmV4ZWMoZXhwcik7CiAgICAgIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gYmVm b3JlOwoKICAgICAgd2hpbGUgKG1hdGNoICE9IG51bGwpIHsKICAgICAgICB2YXIg Y29tcCA9IG1hdGNoWzFdLnN0YXJ0c1dpdGgoJ1snKSA/IG1hdGNoWzJdLmdzdWIo J1xcXFxdJywgJ10nKSA6IG1hdGNoWzFdOwogICAgICAgIGN0eCA9IGN0eFtjb21w XTsKICAgICAgICBpZiAobnVsbCA9PSBjdHggfHwgJycgPT0gbWF0Y2hbM10pIGJy ZWFrOwogICAgICAgIGV4cHIgPSBleHByLnN1YnN0cmluZygnWycgPT0gbWF0Y2hb M10gPyBtYXRjaFsxXS5sZW5ndGggOiBtYXRjaFswXS5sZW5ndGgpOwogICAgICAg IG1hdGNoID0gcGF0dGVybi5leGVjKGV4cHIpOwogICAgICB9CgogICAgICByZXR1 cm4gYmVmb3JlICsgU3RyaW5nLmludGVycHJldChjdHgpOwogICAgfSk7CiAgfQp9 KTsKVGVtcGxhdGUuUGF0dGVybiA9IC8oXnwufFxyfFxuKSgjXHsoLio/KVx9KS87 Cgp2YXIgJGJyZWFrID0geyB9OwoKdmFyIEVudW1lcmFibGUgPSB7CiAgZWFjaDog ZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciBpbmRleCA9IDA7 CiAgICB0cnkgewogICAgICB0aGlzLl9lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAg ICAgICAgaXRlcmF0b3IuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgrKyk7CiAg ICAgIH0pOwogICAgfSBjYXRjaCAoZSkgewogICAgICBpZiAoZSAhPSAkYnJlYWsp IHRocm93IGU7CiAgICB9CiAgICByZXR1cm4gdGhpczsKICB9LAoKICBlYWNoU2xp Y2U6IGZ1bmN0aW9uKG51bWJlciwgaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZh ciBpbmRleCA9IC1udW1iZXIsIHNsaWNlcyA9IFtdLCBhcnJheSA9IHRoaXMudG9B cnJheSgpOwogICAgaWYgKG51bWJlciA8IDEpIHJldHVybiBhcnJheTsKICAgIHdo aWxlICgoaW5kZXggKz0gbnVtYmVyKSA8IGFycmF5Lmxlbmd0aCkKICAgICAgc2xp Y2VzLnB1c2goYXJyYXkuc2xpY2UoaW5kZXgsIGluZGV4K251bWJlcikpOwogICAg cmV0dXJuIHNsaWNlcy5jb2xsZWN0KGl0ZXJhdG9yLCBjb250ZXh0KTsKICB9LAoK ICBhbGw6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRv ciA9IGl0ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdCA9IHRy dWU7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAg IHJlc3VsdCA9IHJlc3VsdCAmJiAhIWl0ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFs dWUsIGluZGV4KTsKICAgICAgaWYgKCFyZXN1bHQpIHRocm93ICRicmVhazsKICAg IH0pOwogICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBhbnk6IGZ1bmN0aW9uKGl0 ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yIHx8IFBy b3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdCA9IGZhbHNlOwogICAgdGhpcy5lYWNo KGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAocmVzdWx0ID0gISFp dGVyYXRvci5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCkpCiAgICAgICAgdGhy b3cgJGJyZWFrOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGNv bGxlY3Q6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRv ciA9IGl0ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdHMgPSBb XTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAg cmVzdWx0cy5wdXNoKGl0ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFsdWUsIGluZGV4 KSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIGRldGVjdDog ZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciByZXN1bHQ7CiAg ICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChp dGVyYXRvci5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCkpIHsKICAgICAgICBy ZXN1bHQgPSB2YWx1ZTsKICAgICAgICB0aHJvdyAkYnJlYWs7CiAgICAgIH0KICAg IH0pOwogICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBmaW5kQWxsOiBmdW5jdGlv bihpdGVyYXRvciwgY29udGV4dCkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAg IHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKGl0 ZXJhdG9yLmNhbGwoY29udGV4dCwgdmFsdWUsIGluZGV4KSkKICAgICAgICByZXN1 bHRzLnB1c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9 LAoKICBncmVwOiBmdW5jdGlvbihmaWx0ZXIsIGl0ZXJhdG9yLCBjb250ZXh0KSB7 CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yIHx8IFByb3RvdHlwZS5LOwogICAgdmFy IHJlc3VsdHMgPSBbXTsKCiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKGZpbHRlcikp CiAgICAgIGZpbHRlciA9IG5ldyBSZWdFeHAoZmlsdGVyKTsKCiAgICB0aGlzLmVh Y2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChmaWx0ZXIubWF0 Y2godmFsdWUpKQogICAgICAgIHJlc3VsdHMucHVzaChpdGVyYXRvci5jYWxsKGNv bnRleHQsIHZhbHVlLCBpbmRleCkpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0 czsKICB9LAoKICBpbmNsdWRlOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIGlmIChP YmplY3QuaXNGdW5jdGlvbih0aGlzLmluZGV4T2YpKQogICAgICBpZiAodGhpcy5p bmRleE9mKG9iamVjdCkgIT0gLTEpIHJldHVybiB0cnVlOwoKICAgIHZhciBmb3Vu ZCA9IGZhbHNlOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAg IGlmICh2YWx1ZSA9PSBvYmplY3QpIHsKICAgICAgICBmb3VuZCA9IHRydWU7CiAg ICAgICAgdGhyb3cgJGJyZWFrOwogICAgICB9CiAgICB9KTsKICAgIHJldHVybiBm b3VuZDsKICB9LAoKICBpbkdyb3Vwc09mOiBmdW5jdGlvbihudW1iZXIsIGZpbGxX aXRoKSB7CiAgICBmaWxsV2l0aCA9IE9iamVjdC5pc1VuZGVmaW5lZChmaWxsV2l0 aCkgPyBudWxsIDogZmlsbFdpdGg7CiAgICByZXR1cm4gdGhpcy5lYWNoU2xpY2Uo bnVtYmVyLCBmdW5jdGlvbihzbGljZSkgewogICAgICB3aGlsZShzbGljZS5sZW5n dGggPCBudW1iZXIpIHNsaWNlLnB1c2goZmlsbFdpdGgpOwogICAgICByZXR1cm4g c2xpY2U7CiAgICB9KTsKICB9LAoKICBpbmplY3Q6IGZ1bmN0aW9uKG1lbW8sIGl0 ZXJhdG9yLCBjb250ZXh0KSB7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUs IGluZGV4KSB7CiAgICAgIG1lbW8gPSBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG1l bW8sIHZhbHVlLCBpbmRleCk7CiAgICB9KTsKICAgIHJldHVybiBtZW1vOwogIH0s CgogIGludm9rZTogZnVuY3Rpb24obWV0aG9kKSB7CiAgICB2YXIgYXJncyA9ICRB KGFyZ3VtZW50cykuc2xpY2UoMSk7CiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rp b24odmFsdWUpIHsKICAgICAgcmV0dXJuIHZhbHVlW21ldGhvZF0uYXBwbHkodmFs dWUsIGFyZ3MpOwogICAgfSk7CiAgfSwKCiAgbWF4OiBmdW5jdGlvbihpdGVyYXRv ciwgY29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvciB8fCBQcm90b3R5 cGUuSzsKICAgIHZhciByZXN1bHQ7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFs dWUsIGluZGV4KSB7CiAgICAgIHZhbHVlID0gaXRlcmF0b3IuY2FsbChjb250ZXh0 LCB2YWx1ZSwgaW5kZXgpOwogICAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgdmFs dWUgPj0gcmVzdWx0KQogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAg ICByZXR1cm4gcmVzdWx0OwogIH0sCgogIG1pbjogZnVuY3Rpb24oaXRlcmF0b3Is IGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgfHwgUHJvdG90eXBl Lks7CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVl LCBpbmRleCkgewogICAgICB2YWx1ZSA9IGl0ZXJhdG9yLmNhbGwoY29udGV4dCwg dmFsdWUsIGluZGV4KTsKICAgICAgaWYgKHJlc3VsdCA9PSBudWxsIHx8IHZhbHVl IDwgcmVzdWx0KQogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAgICBy ZXR1cm4gcmVzdWx0OwogIH0sCgogIHBhcnRpdGlvbjogZnVuY3Rpb24oaXRlcmF0 b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgfHwgUHJvdG90 eXBlLks7CiAgICB2YXIgdHJ1ZXMgPSBbXSwgZmFsc2VzID0gW107CiAgICB0aGlz LmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIChpdGVyYXRvci5j YWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCkgPwogICAgICAgIHRydWVzIDogZmFs c2VzKS5wdXNoKHZhbHVlKTsKICAgIH0pOwogICAgcmV0dXJuIFt0cnVlcywgZmFs c2VzXTsKICB9LAoKICBwbHVjazogZnVuY3Rpb24ocHJvcGVydHkpIHsKICAgIHZh ciByZXN1bHRzID0gW107CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUpIHsK ICAgICAgcmVzdWx0cy5wdXNoKHZhbHVlW3Byb3BlcnR5XSk7CiAgICB9KTsKICAg IHJldHVybiByZXN1bHRzOwogIH0sCgogIHJlamVjdDogZnVuY3Rpb24oaXRlcmF0 b3IsIGNvbnRleHQpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB0aGlzLmVh Y2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmICghaXRlcmF0b3Iu Y2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgpKQogICAgICAgIHJlc3VsdHMucHVz aCh2YWx1ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIHNv cnRCeTogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHJldHVybiB0 aGlzLm1hcChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmV0dXJuIHsK ICAgICAgICB2YWx1ZTogdmFsdWUsCiAgICAgICAgY3JpdGVyaWE6IGl0ZXJhdG9y LmNhbGwoY29udGV4dCwgdmFsdWUsIGluZGV4KQogICAgICB9OwogICAgfSkuc29y dChmdW5jdGlvbihsZWZ0LCByaWdodCkgewogICAgICB2YXIgYSA9IGxlZnQuY3Jp dGVyaWEsIGIgPSByaWdodC5jcml0ZXJpYTsKICAgICAgcmV0dXJuIGEgPCBiID8g LTEgOiBhID4gYiA/IDEgOiAwOwogICAgfSkucGx1Y2soJ3ZhbHVlJyk7CiAgfSwK CiAgdG9BcnJheTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5tYXAoKTsK ICB9LAoKICB6aXA6IGZ1bmN0aW9uKCkgewogICAgdmFyIGl0ZXJhdG9yID0gUHJv dG90eXBlLkssIGFyZ3MgPSAkQShhcmd1bWVudHMpOwogICAgaWYgKE9iamVjdC5p c0Z1bmN0aW9uKGFyZ3MubGFzdCgpKSkKICAgICAgaXRlcmF0b3IgPSBhcmdzLnBv cCgpOwoKICAgIHZhciBjb2xsZWN0aW9ucyA9IFt0aGlzXS5jb25jYXQoYXJncyku bWFwKCRBKTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSwgaW5k ZXgpIHsKICAgICAgcmV0dXJuIGl0ZXJhdG9yKGNvbGxlY3Rpb25zLnBsdWNrKGlu ZGV4KSk7CiAgICB9KTsKICB9LAoKICBzaXplOiBmdW5jdGlvbigpIHsKICAgIHJl dHVybiB0aGlzLnRvQXJyYXkoKS5sZW5ndGg7CiAgfSwKCiAgaW5zcGVjdDogZnVu Y3Rpb24oKSB7CiAgICByZXR1cm4gJyM8RW51bWVyYWJsZTonICsgdGhpcy50b0Fy cmF5KCkuaW5zcGVjdCgpICsgJz4nOwogIH0KfTsKCk9iamVjdC5leHRlbmQoRW51 bWVyYWJsZSwgewogIG1hcDogICAgIEVudW1lcmFibGUuY29sbGVjdCwKICBmaW5k OiAgICBFbnVtZXJhYmxlLmRldGVjdCwKICBzZWxlY3Q6ICBFbnVtZXJhYmxlLmZp bmRBbGwsCiAgZmlsdGVyOiAgRW51bWVyYWJsZS5maW5kQWxsLAogIG1lbWJlcjog IEVudW1lcmFibGUuaW5jbHVkZSwKICBlbnRyaWVzOiBFbnVtZXJhYmxlLnRvQXJy YXksCiAgZXZlcnk6ICAgRW51bWVyYWJsZS5hbGwsCiAgc29tZTogICAgRW51bWVy YWJsZS5hbnkKfSk7CmZ1bmN0aW9uICRBKGl0ZXJhYmxlKSB7CiAgaWYgKCFpdGVy YWJsZSkgcmV0dXJuIFtdOwogIGlmIChpdGVyYWJsZS50b0FycmF5KSByZXR1cm4g aXRlcmFibGUudG9BcnJheSgpOwogIHZhciBsZW5ndGggPSBpdGVyYWJsZS5sZW5n dGggfHwgMCwgcmVzdWx0cyA9IG5ldyBBcnJheShsZW5ndGgpOwogIHdoaWxlIChs ZW5ndGgtLSkgcmVzdWx0c1tsZW5ndGhdID0gaXRlcmFibGVbbGVuZ3RoXTsKICBy ZXR1cm4gcmVzdWx0czsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLldlYktpdCkg ewogICRBID0gZnVuY3Rpb24oaXRlcmFibGUpIHsKICAgIGlmICghaXRlcmFibGUp IHJldHVybiBbXTsKICAgIC8vIEluIFNhZmFyaSwgb25seSB1c2UgdGhlIGB0b0Fy cmF5YCBtZXRob2QgaWYgaXQncyBub3QgYSBOb2RlTGlzdC4KICAgIC8vIEEgTm9k ZUxpc3QgaXMgYSBmdW5jdGlvbiwgaGFzIGFuIGZ1bmN0aW9uIGBpdGVtYCBwcm9w ZXJ0eSwgYW5kIGEgbnVtZXJpYwogICAgLy8gYGxlbmd0aGAgcHJvcGVydHkuIEFk YXB0ZWQgZnJvbSBHb29nbGUgRG9jdHlwZS4KICAgIGlmICghKHR5cGVvZiBpdGVy YWJsZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaXRlcmFibGUubGVuZ3RoID09 PQogICAgICAgICdudW1iZXInICYmIHR5cGVvZiBpdGVyYWJsZS5pdGVtID09PSAn ZnVuY3Rpb24nKSAmJiBpdGVyYWJsZS50b0FycmF5KQogICAgICByZXR1cm4gaXRl cmFibGUudG9BcnJheSgpOwogICAgdmFyIGxlbmd0aCA9IGl0ZXJhYmxlLmxlbmd0 aCB8fCAwLCByZXN1bHRzID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICB3aGlsZSAo bGVuZ3RoLS0pIHJlc3VsdHNbbGVuZ3RoXSA9IGl0ZXJhYmxlW2xlbmd0aF07CiAg ICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgpBcnJheS5mcm9tID0gJEE7CgpPYmpl Y3QuZXh0ZW5kKEFycmF5LnByb3RvdHlwZSwgRW51bWVyYWJsZSk7CgppZiAoIUFy cmF5LnByb3RvdHlwZS5fcmV2ZXJzZSkgQXJyYXkucHJvdG90eXBlLl9yZXZlcnNl ID0gQXJyYXkucHJvdG90eXBlLnJldmVyc2U7CgpPYmplY3QuZXh0ZW5kKEFycmF5 LnByb3RvdHlwZSwgewogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAg Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMubGVuZ3RoOyBpIDwgbGVuZ3Ro OyBpKyspCiAgICAgIGl0ZXJhdG9yKHRoaXNbaV0pOwogIH0sCgogIGNsZWFyOiBm dW5jdGlvbigpIHsKICAgIHRoaXMubGVuZ3RoID0gMDsKICAgIHJldHVybiB0aGlz OwogIH0sCgogIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzWzBd OwogIH0sCgogIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXNbdGhp cy5sZW5ndGggLSAxXTsKICB9LAoKICBjb21wYWN0OiBmdW5jdGlvbigpIHsKICAg IHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1 cm4gdmFsdWUgIT0gbnVsbDsKICAgIH0pOwogIH0sCgogIGZsYXR0ZW46IGZ1bmN0 aW9uKCkgewogICAgcmV0dXJuIHRoaXMuaW5qZWN0KFtdLCBmdW5jdGlvbihhcnJh eSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIGFycmF5LmNvbmNhdChPYmplY3QuaXNB cnJheSh2YWx1ZSkgPwogICAgICAgIHZhbHVlLmZsYXR0ZW4oKSA6IFt2YWx1ZV0p OwogICAgfSk7CiAgfSwKCiAgd2l0aG91dDogZnVuY3Rpb24oKSB7CiAgICB2YXIg dmFsdWVzID0gJEEoYXJndW1lbnRzKTsKICAgIHJldHVybiB0aGlzLnNlbGVjdChm dW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gIXZhbHVlcy5pbmNsdWRlKHZh bHVlKTsKICAgIH0pOwogIH0sCgogIHJldmVyc2U6IGZ1bmN0aW9uKGlubGluZSkg ewogICAgcmV0dXJuIChpbmxpbmUgIT09IGZhbHNlID8gdGhpcyA6IHRoaXMudG9B cnJheSgpKS5fcmV2ZXJzZSgpOwogIH0sCgogIHJlZHVjZTogZnVuY3Rpb24oKSB7 CiAgICByZXR1cm4gdGhpcy5sZW5ndGggPiAxID8gdGhpcyA6IHRoaXNbMF07CiAg fSwKCiAgdW5pcTogZnVuY3Rpb24oc29ydGVkKSB7CiAgICByZXR1cm4gdGhpcy5p bmplY3QoW10sIGZ1bmN0aW9uKGFycmF5LCB2YWx1ZSwgaW5kZXgpIHsKICAgICAg aWYgKDAgPT0gaW5kZXggfHwgKHNvcnRlZCA/IGFycmF5Lmxhc3QoKSAhPSB2YWx1 ZSA6ICFhcnJheS5pbmNsdWRlKHZhbHVlKSkpCiAgICAgICAgYXJyYXkucHVzaCh2 YWx1ZSk7CiAgICAgIHJldHVybiBhcnJheTsKICAgIH0pOwogIH0sCgogIGludGVy c2VjdDogZnVuY3Rpb24oYXJyYXkpIHsKICAgIHJldHVybiB0aGlzLnVuaXEoKS5m aW5kQWxsKGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgcmV0dXJuIGFycmF5LmRldGVj dChmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gaXRlbSA9PT0gdmFsdWUgfSk7CiAg ICB9KTsKICB9LAoKICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gW10u Y29uY2F0KHRoaXMpOwogIH0sCgogIHNpemU6IGZ1bmN0aW9uKCkgewogICAgcmV0 dXJuIHRoaXMubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewog ICAgcmV0dXJuICdbJyArIHRoaXMubWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCcs ICcpICsgJ10nOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIg cmVzdWx0cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKG9iamVjdCkgewog ICAgICB2YXIgdmFsdWUgPSBPYmplY3QudG9KU09OKG9iamVjdCk7CiAgICAgIGlm ICghT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmVzdWx0cy5wdXNoKHZhbHVl KTsKICAgIH0pOwogICAgcmV0dXJuICdbJyArIHJlc3VsdHMuam9pbignLCAnKSAr ICddJzsKICB9Cn0pOwoKLy8gdXNlIG5hdGl2ZSBicm93c2VyIEpTIDEuNiBpbXBs ZW1lbnRhdGlvbiBpZiBhdmFpbGFibGUKaWYgKE9iamVjdC5pc0Z1bmN0aW9uKEFy cmF5LnByb3RvdHlwZS5mb3JFYWNoKSkKICBBcnJheS5wcm90b3R5cGUuX2VhY2gg PSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsKCmlmICghQXJyYXkucHJvdG90eXBl LmluZGV4T2YpIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24oaXRl bSwgaSkgewogIGkgfHwgKGkgPSAwKTsKICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5n dGg7CiAgaWYgKGkgPCAwKSBpID0gbGVuZ3RoICsgaTsKICBmb3IgKDsgaSA8IGxl bmd0aDsgaSsrKQogICAgaWYgKHRoaXNbaV0gPT09IGl0ZW0pIHJldHVybiBpOwog IHJldHVybiAtMTsKfTsKCmlmICghQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9m KSBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbihpdGVtLCBp KSB7CiAgaSA9IGlzTmFOKGkpID8gdGhpcy5sZW5ndGggOiAoaSA8IDAgPyB0aGlz Lmxlbmd0aCArIGkgOiBpKSArIDE7CiAgdmFyIG4gPSB0aGlzLnNsaWNlKDAsIGkp LnJldmVyc2UoKS5pbmRleE9mKGl0ZW0pOwogIHJldHVybiAobiA8IDApID8gbiA6 IGkgLSBuIC0gMTsKfTsKCkFycmF5LnByb3RvdHlwZS50b0FycmF5ID0gQXJyYXku cHJvdG90eXBlLmNsb25lOwoKZnVuY3Rpb24gJHcoc3RyaW5nKSB7CiAgaWYgKCFP YmplY3QuaXNTdHJpbmcoc3RyaW5nKSkgcmV0dXJuIFtdOwogIHN0cmluZyA9IHN0 cmluZy5zdHJpcCgpOwogIHJldHVybiBzdHJpbmcgPyBzdHJpbmcuc3BsaXQoL1xz Ky8pIDogW107Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSl7CiAgQXJy YXkucHJvdG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFycmF5 ID0gW107CiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7 IGkgPCBsZW5ndGg7IGkrKykgYXJyYXkucHVzaCh0aGlzW2ldKTsKICAgIGZvciAo dmFyIGkgPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3Ro OyBpKyspIHsKICAgICAgaWYgKE9iamVjdC5pc0FycmF5KGFyZ3VtZW50c1tpXSkp IHsKICAgICAgICBmb3IgKHZhciBqID0gMCwgYXJyYXlMZW5ndGggPSBhcmd1bWVu dHNbaV0ubGVuZ3RoOyBqIDwgYXJyYXlMZW5ndGg7IGorKykKICAgICAgICAgIGFy cmF5LnB1c2goYXJndW1lbnRzW2ldW2pdKTsKICAgICAgfSBlbHNlIHsKICAgICAg ICBhcnJheS5wdXNoKGFyZ3VtZW50c1tpXSk7CiAgICAgIH0KICAgIH0KICAgIHJl dHVybiBhcnJheTsKICB9Owp9Ck9iamVjdC5leHRlbmQoTnVtYmVyLnByb3RvdHlw ZSwgewogIHRvQ29sb3JQYXJ0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlz LnRvUGFkZGVkU3RyaW5nKDIsIDE2KTsKICB9LAoKICBzdWNjOiBmdW5jdGlvbigp IHsKICAgIHJldHVybiB0aGlzICsgMTsKICB9LAoKICB0aW1lczogZnVuY3Rpb24o aXRlcmF0b3IsIGNvbnRleHQpIHsKICAgICRSKDAsIHRoaXMsIHRydWUpLmVhY2go aXRlcmF0b3IsIGNvbnRleHQpOwogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgdG9Q YWRkZWRTdHJpbmc6IGZ1bmN0aW9uKGxlbmd0aCwgcmFkaXgpIHsKICAgIHZhciBz dHJpbmcgPSB0aGlzLnRvU3RyaW5nKHJhZGl4IHx8IDEwKTsKICAgIHJldHVybiAn MCcudGltZXMobGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7CiAgfSwK CiAgdG9KU09OOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBpc0Zpbml0ZSh0aGlz KSA/IHRoaXMudG9TdHJpbmcoKSA6ICdudWxsJzsKICB9Cn0pOwoKJHcoJ2FicyBy b3VuZCBjZWlsIGZsb29yJykuZWFjaChmdW5jdGlvbihtZXRob2QpewogIE51bWJl ci5wcm90b3R5cGVbbWV0aG9kXSA9IE1hdGhbbWV0aG9kXS5tZXRob2RpemUoKTsK fSk7CmZ1bmN0aW9uICRIKG9iamVjdCkgewogIHJldHVybiBuZXcgSGFzaChvYmpl Y3QpOwp9OwoKdmFyIEhhc2ggPSBDbGFzcy5jcmVhdGUoRW51bWVyYWJsZSwgKGZ1 bmN0aW9uKCkgewoKICBmdW5jdGlvbiB0b1F1ZXJ5UGFpcihrZXksIHZhbHVlKSB7 CiAgICBpZiAoT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJuIGtleTsK ICAgIHJldHVybiBrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5n LmludGVycHJldCh2YWx1ZSkpOwogIH0KCiAgcmV0dXJuIHsKICAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgICB0aGlzLl9vYmplY3QgPSBPYmpl Y3QuaXNIYXNoKG9iamVjdCkgPyBvYmplY3QudG9PYmplY3QoKSA6IE9iamVjdC5j bG9uZShvYmplY3QpOwogICAgfSwKCiAgICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0 b3IpIHsKICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX29iamVjdCkgewogICAg ICAgIHZhciB2YWx1ZSA9IHRoaXMuX29iamVjdFtrZXldLCBwYWlyID0gW2tleSwg dmFsdWVdOwogICAgICAgIHBhaXIua2V5ID0ga2V5OwogICAgICAgIHBhaXIudmFs dWUgPSB2YWx1ZTsKICAgICAgICBpdGVyYXRvcihwYWlyKTsKICAgICAgfQogICAg fSwKCiAgICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKICAgICAgcmV0dXJu IHRoaXMuX29iamVjdFtrZXldID0gdmFsdWU7CiAgICB9LAoKICAgIGdldDogZnVu Y3Rpb24oa2V5KSB7CiAgICAgIC8vIHNpbXVsYXRpbmcgcG9vcmx5IHN1cHBvcnRl ZCBoYXNPd25Qcm9wZXJ0eQogICAgICBpZiAodGhpcy5fb2JqZWN0W2tleV0gIT09 IE9iamVjdC5wcm90b3R5cGVba2V5XSkKICAgICAgICByZXR1cm4gdGhpcy5fb2Jq ZWN0W2tleV07CiAgICB9LAoKICAgIHVuc2V0OiBmdW5jdGlvbihrZXkpIHsKICAg ICAgdmFyIHZhbHVlID0gdGhpcy5fb2JqZWN0W2tleV07CiAgICAgIGRlbGV0ZSB0 aGlzLl9vYmplY3Rba2V5XTsKICAgICAgcmV0dXJuIHZhbHVlOwogICAgfSwKCiAg ICB0b09iamVjdDogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBPYmplY3QuY2xv bmUodGhpcy5fb2JqZWN0KTsKICAgIH0sCgogICAga2V5czogZnVuY3Rpb24oKSB7 CiAgICAgIHJldHVybiB0aGlzLnBsdWNrKCdrZXknKTsKICAgIH0sCgogICAgdmFs dWVzOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucGx1Y2soJ3ZhbHVl Jyk7CiAgICB9LAoKICAgIGluZGV4OiBmdW5jdGlvbih2YWx1ZSkgewogICAgICB2 YXIgbWF0Y2ggPSB0aGlzLmRldGVjdChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAg cmV0dXJuIHBhaXIudmFsdWUgPT09IHZhbHVlOwogICAgICB9KTsKICAgICAgcmV0 dXJuIG1hdGNoICYmIG1hdGNoLmtleTsKICAgIH0sCgogICAgbWVyZ2U6IGZ1bmN0 aW9uKG9iamVjdCkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnVwZGF0ZShv YmplY3QpOwogICAgfSwKCiAgICB1cGRhdGU6IGZ1bmN0aW9uKG9iamVjdCkgewog ICAgICByZXR1cm4gbmV3IEhhc2gob2JqZWN0KS5pbmplY3QodGhpcywgZnVuY3Rp b24ocmVzdWx0LCBwYWlyKSB7CiAgICAgICAgcmVzdWx0LnNldChwYWlyLmtleSwg cGFpci52YWx1ZSk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfSk7CiAg ICB9LAoKICAgIHRvUXVlcnlTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICByZXR1 cm4gdGhpcy5pbmplY3QoW10sIGZ1bmN0aW9uKHJlc3VsdHMsIHBhaXIpIHsKICAg ICAgICB2YXIga2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhaXIua2V5KSwgdmFs dWVzID0gcGFpci52YWx1ZTsKCiAgICAgICAgaWYgKHZhbHVlcyAmJiB0eXBlb2Yg dmFsdWVzID09ICdvYmplY3QnKSB7CiAgICAgICAgICBpZiAoT2JqZWN0LmlzQXJy YXkodmFsdWVzKSkKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMuY29uY2F0KHZh bHVlcy5tYXAodG9RdWVyeVBhaXIuY3Vycnkoa2V5KSkpOwogICAgICAgIH0gZWxz ZSByZXN1bHRzLnB1c2godG9RdWVyeVBhaXIoa2V5LCB2YWx1ZXMpKTsKICAgICAg ICByZXR1cm4gcmVzdWx0czsKICAgICAgfSkuam9pbignJicpOwogICAgfSwKCiAg ICBpbnNwZWN0OiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuICcjPEhhc2g6eycg KyB0aGlzLm1hcChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgcmV0dXJuIHBhaXIu bWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCc6ICcpOwogICAgICB9KS5qb2luKCcs ICcpICsgJ30+JzsKICAgIH0sCgogICAgdG9KU09OOiBmdW5jdGlvbigpIHsKICAg ICAgcmV0dXJuIE9iamVjdC50b0pTT04odGhpcy50b09iamVjdCgpKTsKICAgIH0s CgogICAgY2xvbmU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbmV3IEhhc2go dGhpcyk7CiAgICB9CiAgfQp9KSgpKTsKCkhhc2gucHJvdG90eXBlLnRvVGVtcGxh dGVSZXBsYWNlbWVudHMgPSBIYXNoLnByb3RvdHlwZS50b09iamVjdDsKSGFzaC5m cm9tID0gJEg7CnZhciBPYmplY3RSYW5nZSA9IENsYXNzLmNyZWF0ZShFbnVtZXJh YmxlLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oc3RhcnQsIGVuZCwgZXhjbHVz aXZlKSB7CiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7CiAgICB0aGlzLmVuZCA9IGVu ZDsKICAgIHRoaXMuZXhjbHVzaXZlID0gZXhjbHVzaXZlOwogIH0sCgogIF9lYWNo OiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgdmFyIHZhbHVlID0gdGhpcy5zdGFy dDsKICAgIHdoaWxlICh0aGlzLmluY2x1ZGUodmFsdWUpKSB7CiAgICAgIGl0ZXJh dG9yKHZhbHVlKTsKICAgICAgdmFsdWUgPSB2YWx1ZS5zdWNjKCk7CiAgICB9CiAg fSwKCiAgaW5jbHVkZTogZnVuY3Rpb24odmFsdWUpIHsKICAgIGlmICh2YWx1ZSA8 IHRoaXMuc3RhcnQpCiAgICAgIHJldHVybiBmYWxzZTsKICAgIGlmICh0aGlzLmV4 Y2x1c2l2ZSkKICAgICAgcmV0dXJuIHZhbHVlIDwgdGhpcy5lbmQ7CiAgICByZXR1 cm4gdmFsdWUgPD0gdGhpcy5lbmQ7CiAgfQp9KTsKCnZhciAkUiA9IGZ1bmN0aW9u KHN0YXJ0LCBlbmQsIGV4Y2x1c2l2ZSkgewogIHJldHVybiBuZXcgT2JqZWN0UmFu Z2Uoc3RhcnQsIGVuZCwgZXhjbHVzaXZlKTsKfTsKCnZhciBBamF4ID0gewogIGdl dFRyYW5zcG9ydDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gVHJ5LnRoZXNlKAog ICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCl9LAog ICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1s Mi5YTUxIVFRQJyl9LAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2 ZVhPYmplY3QoJ01pY3Jvc29mdC5YTUxIVFRQJyl9CiAgICApIHx8IGZhbHNlOwog IH0sCgogIGFjdGl2ZVJlcXVlc3RDb3VudDogMAp9OwoKQWpheC5SZXNwb25kZXJz ID0gewogIHJlc3BvbmRlcnM6IFtdLAoKICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0 b3IpIHsKICAgIHRoaXMucmVzcG9uZGVycy5fZWFjaChpdGVyYXRvcik7CiAgfSwK CiAgcmVnaXN0ZXI6IGZ1bmN0aW9uKHJlc3BvbmRlcikgewogICAgaWYgKCF0aGlz LmluY2x1ZGUocmVzcG9uZGVyKSkKICAgICAgdGhpcy5yZXNwb25kZXJzLnB1c2go cmVzcG9uZGVyKTsKICB9LAoKICB1bnJlZ2lzdGVyOiBmdW5jdGlvbihyZXNwb25k ZXIpIHsKICAgIHRoaXMucmVzcG9uZGVycyA9IHRoaXMucmVzcG9uZGVycy53aXRo b3V0KHJlc3BvbmRlcik7CiAgfSwKCiAgZGlzcGF0Y2g6IGZ1bmN0aW9uKGNhbGxi YWNrLCByZXF1ZXN0LCB0cmFuc3BvcnQsIGpzb24pIHsKICAgIHRoaXMuZWFjaChm dW5jdGlvbihyZXNwb25kZXIpIHsKICAgICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9u KHJlc3BvbmRlcltjYWxsYmFja10pKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAg IHJlc3BvbmRlcltjYWxsYmFja10uYXBwbHkocmVzcG9uZGVyLCBbcmVxdWVzdCwg dHJhbnNwb3J0LCBqc29uXSk7CiAgICAgICAgfSBjYXRjaCAoZSkgeyB9CiAgICAg IH0KICAgIH0pOwogIH0KfTsKCk9iamVjdC5leHRlbmQoQWpheC5SZXNwb25kZXJz LCBFbnVtZXJhYmxlKTsKCkFqYXguUmVzcG9uZGVycy5yZWdpc3Rlcih7CiAgb25D cmVhdGU6ICAgZnVuY3Rpb24oKSB7IEFqYXguYWN0aXZlUmVxdWVzdENvdW50Kysg fSwKICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsgQWpheC5hY3RpdmVSZXF1ZXN0 Q291bnQtLSB9Cn0pOwoKQWpheC5CYXNlID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0 aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICB0aGlzLm9wdGlvbnMgPSB7 CiAgICAgIG1ldGhvZDogICAgICAgJ3Bvc3QnLAogICAgICBhc3luY2hyb25vdXM6 IHRydWUsCiAgICAgIGNvbnRlbnRUeXBlOiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZv cm0tdXJsZW5jb2RlZCcsCiAgICAgIGVuY29kaW5nOiAgICAgJ1VURi04JywKICAg ICAgcGFyYW1ldGVyczogICAnJywKICAgICAgZXZhbEpTT046ICAgICB0cnVlLAog ICAgICBldmFsSlM6ICAgICAgIHRydWUKICAgIH07CiAgICBPYmplY3QuZXh0ZW5k KHRoaXMub3B0aW9ucywgb3B0aW9ucyB8fCB7IH0pOwoKICAgIHRoaXMub3B0aW9u cy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0aG9kLnRvTG93ZXJDYXNlKCk7Cgog ICAgaWYgKE9iamVjdC5pc1N0cmluZyh0aGlzLm9wdGlvbnMucGFyYW1ldGVycykp CiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25zLnBh cmFtZXRlcnMudG9RdWVyeVBhcmFtcygpOwogICAgZWxzZSBpZiAoT2JqZWN0Lmlz SGFzaCh0aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAgIHRoaXMub3B0aW9u cy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRlcnMudG9PYmplY3Qo KTsKICB9Cn0pOwoKQWpheC5SZXF1ZXN0ID0gQ2xhc3MuY3JlYXRlKEFqYXguQmFz ZSwgewogIF9jb21wbGV0ZTogZmFsc2UsCgogIGluaXRpYWxpemU6IGZ1bmN0aW9u KCRzdXBlciwgdXJsLCBvcHRpb25zKSB7CiAgICAkc3VwZXIob3B0aW9ucyk7CiAg ICB0aGlzLnRyYW5zcG9ydCA9IEFqYXguZ2V0VHJhbnNwb3J0KCk7CiAgICB0aGlz LnJlcXVlc3QodXJsKTsKICB9LAoKICByZXF1ZXN0OiBmdW5jdGlvbih1cmwpIHsK ICAgIHRoaXMudXJsID0gdXJsOwogICAgdGhpcy5tZXRob2QgPSB0aGlzLm9wdGlv bnMubWV0aG9kOwogICAgdmFyIHBhcmFtcyA9IE9iamVjdC5jbG9uZSh0aGlzLm9w dGlvbnMucGFyYW1ldGVycyk7CgogICAgaWYgKCFbJ2dldCcsICdwb3N0J10uaW5j bHVkZSh0aGlzLm1ldGhvZCkpIHsKICAgICAgLy8gc2ltdWxhdGUgb3RoZXIgdmVy YnMgb3ZlciBwb3N0CiAgICAgIHBhcmFtc1snX21ldGhvZCddID0gdGhpcy5tZXRo b2Q7CiAgICAgIHRoaXMubWV0aG9kID0gJ3Bvc3QnOwogICAgfQoKICAgIHRoaXMu cGFyYW1ldGVycyA9IHBhcmFtczsKCiAgICBpZiAocGFyYW1zID0gT2JqZWN0LnRv UXVlcnlTdHJpbmcocGFyYW1zKSkgewogICAgICAvLyB3aGVuIEdFVCwgYXBwZW5k IHBhcmFtZXRlcnMgdG8gVVJMCiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PSAnZ2V0 JykKICAgICAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZSgnPycpID8g JyYnIDogJz8nKSArIHBhcmFtczsKICAgICAgZWxzZSBpZiAoL0tvbnF1ZXJvcnxT YWZhcml8S0hUTUwvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpCiAgICAgICAg cGFyYW1zICs9ICcmXz0nOwogICAgfQoKICAgIHRyeSB7CiAgICAgIHZhciByZXNw b25zZSA9IG5ldyBBamF4LlJlc3BvbnNlKHRoaXMpOwogICAgICBpZiAodGhpcy5v cHRpb25zLm9uQ3JlYXRlKSB0aGlzLm9wdGlvbnMub25DcmVhdGUocmVzcG9uc2Up OwogICAgICBBamF4LlJlc3BvbmRlcnMuZGlzcGF0Y2goJ29uQ3JlYXRlJywgdGhp cywgcmVzcG9uc2UpOwoKICAgICAgdGhpcy50cmFuc3BvcnQub3Blbih0aGlzLm1l dGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnVybCwKICAgICAgICB0aGlzLm9wdGlv bnMuYXN5bmNocm9ub3VzKTsKCiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXN5bmNo cm9ub3VzKSB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUuYmluZCh0aGlzKS5kZWZl cigxKTsKCiAgICAgIHRoaXMudHJhbnNwb3J0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9 IHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpOwogICAgICB0aGlzLnNldFJl cXVlc3RIZWFkZXJzKCk7CgogICAgICB0aGlzLmJvZHkgPSB0aGlzLm1ldGhvZCA9 PSAncG9zdCcgPyAodGhpcy5vcHRpb25zLnBvc3RCb2R5IHx8IHBhcmFtcykgOiBu dWxsOwogICAgICB0aGlzLnRyYW5zcG9ydC5zZW5kKHRoaXMuYm9keSk7CgogICAg ICAvKiBGb3JjZSBGaXJlZm94IHRvIGhhbmRsZSByZWFkeSBzdGF0ZSA0IGZvciBz eW5jaHJvbm91cyByZXF1ZXN0cyAqLwogICAgICBpZiAoIXRoaXMub3B0aW9ucy5h c3luY2hyb25vdXMgJiYgdGhpcy50cmFuc3BvcnQub3ZlcnJpZGVNaW1lVHlwZSkK ICAgICAgICB0aGlzLm9uU3RhdGVDaGFuZ2UoKTsKCiAgICB9CiAgICBjYXRjaCAo ZSkgewogICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0s CgogIG9uU3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlYWR5U3Rh dGUgPSB0aGlzLnRyYW5zcG9ydC5yZWFkeVN0YXRlOwogICAgaWYgKHJlYWR5U3Rh dGUgPiAxICYmICEoKHJlYWR5U3RhdGUgPT0gNCkgJiYgdGhpcy5fY29tcGxldGUp KQogICAgICB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUodGhpcy50cmFuc3BvcnQu cmVhZHlTdGF0ZSk7CiAgfSwKCiAgc2V0UmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9u KCkgewogICAgdmFyIGhlYWRlcnMgPSB7CiAgICAgICdYLVJlcXVlc3RlZC1XaXRo JzogJ1hNTEh0dHBSZXF1ZXN0JywKICAgICAgJ1gtUHJvdG90eXBlLVZlcnNpb24n OiBQcm90b3R5cGUuVmVyc2lvbiwKICAgICAgJ0FjY2VwdCc6ICd0ZXh0L2phdmFz Y3JpcHQsIHRleHQvaHRtbCwgYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCwgKi8q JwogICAgfTsKCiAgICBpZiAodGhpcy5tZXRob2QgPT0gJ3Bvc3QnKSB7CiAgICAg IGhlYWRlcnNbJ0NvbnRlbnQtdHlwZSddID0gdGhpcy5vcHRpb25zLmNvbnRlbnRU eXBlICsKICAgICAgICAodGhpcy5vcHRpb25zLmVuY29kaW5nID8gJzsgY2hhcnNl dD0nICsgdGhpcy5vcHRpb25zLmVuY29kaW5nIDogJycpOwoKICAgICAgLyogRm9y Y2UgIkNvbm5lY3Rpb246IGNsb3NlIiBmb3Igb2xkZXIgTW96aWxsYSBicm93c2Vy cyB0byB3b3JrCiAgICAgICAqIGFyb3VuZCBhIGJ1ZyB3aGVyZSBYTUxIdHRwUmVx dWVzdCBzZW5kcyBhbiBpbmNvcnJlY3QKICAgICAgICogQ29udGVudC1sZW5ndGgg aGVhZGVyLiBTZWUgTW96aWxsYSBCdWd6aWxsYSAjMjQ2NjUxLgogICAgICAgKi8K ICAgICAgaWYgKHRoaXMudHJhbnNwb3J0Lm92ZXJyaWRlTWltZVR5cGUgJiYKICAg ICAgICAgIChuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9HZWNrb1wvKFxkezR9 KS8pIHx8IFswLDIwMDVdKVsxXSA8IDIwMDUpCiAgICAgICAgICAgIGhlYWRlcnNb J0Nvbm5lY3Rpb24nXSA9ICdjbG9zZSc7CiAgICB9CgogICAgLy8gdXNlci1kZWZp bmVkIGhlYWRlcnMKICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnJlcXVlc3RI ZWFkZXJzID09ICdvYmplY3QnKSB7CiAgICAgIHZhciBleHRyYXMgPSB0aGlzLm9w dGlvbnMucmVxdWVzdEhlYWRlcnM7CgogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rp b24oZXh0cmFzLnB1c2gpKQogICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGgg PSBleHRyYXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpICs9IDIpCiAgICAgICAgICBo ZWFkZXJzW2V4dHJhc1tpXV0gPSBleHRyYXNbaSsxXTsKICAgICAgZWxzZQogICAg ICAgICRIKGV4dHJhcykuZWFjaChmdW5jdGlvbihwYWlyKSB7IGhlYWRlcnNbcGFp ci5rZXldID0gcGFpci52YWx1ZSB9KTsKICAgIH0KCiAgICBmb3IgKHZhciBuYW1l IGluIGhlYWRlcnMpCiAgICAgIHRoaXMudHJhbnNwb3J0LnNldFJlcXVlc3RIZWFk ZXIobmFtZSwgaGVhZGVyc1tuYW1lXSk7CiAgfSwKCiAgc3VjY2VzczogZnVuY3Rp b24oKSB7CiAgICB2YXIgc3RhdHVzID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgIHJl dHVybiAhc3RhdHVzIHx8IChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCk7 CiAgfSwKCiAgZ2V0U3RhdHVzOiBmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAg IHJldHVybiB0aGlzLnRyYW5zcG9ydC5zdGF0dXMgfHwgMDsKICAgIH0gY2F0Y2gg KGUpIHsgcmV0dXJuIDAgfQogIH0sCgogIHJlc3BvbmRUb1JlYWR5U3RhdGU6IGZ1 bmN0aW9uKHJlYWR5U3RhdGUpIHsKICAgIHZhciBzdGF0ZSA9IEFqYXguUmVxdWVz dC5FdmVudHNbcmVhZHlTdGF0ZV0sIHJlc3BvbnNlID0gbmV3IEFqYXguUmVzcG9u c2UodGhpcyk7CgogICAgaWYgKHN0YXRlID09ICdDb21wbGV0ZScpIHsKICAgICAg dHJ5IHsKICAgICAgICB0aGlzLl9jb21wbGV0ZSA9IHRydWU7CiAgICAgICAgKHRo aXMub3B0aW9uc1snb24nICsgcmVzcG9uc2Uuc3RhdHVzXQogICAgICAgICB8fCB0 aGlzLm9wdGlvbnNbJ29uJyArICh0aGlzLnN1Y2Nlc3MoKSA/ICdTdWNjZXNzJyA6 ICdGYWlsdXJlJyldCiAgICAgICAgIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9u KShyZXNwb25zZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAgICAgIH0gY2F0Y2gg KGUpIHsKICAgICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgICB9 CgogICAgICB2YXIgY29udGVudFR5cGUgPSByZXNwb25zZS5nZXRIZWFkZXIoJ0Nv bnRlbnQtdHlwZScpOwogICAgICBpZiAodGhpcy5vcHRpb25zLmV2YWxKUyA9PSAn Zm9yY2UnCiAgICAgICAgICB8fCAodGhpcy5vcHRpb25zLmV2YWxKUyAmJiB0aGlz LmlzU2FtZU9yaWdpbigpICYmIGNvbnRlbnRUeXBlCiAgICAgICAgICAmJiBjb250 ZW50VHlwZS5tYXRjaCgvXlxzKih0ZXh0fGFwcGxpY2F0aW9uKVwvKHgtKT8oamF2 YXxlY21hKXNjcmlwdCg7LiopP1xzKiQvaSkpKQogICAgICAgIHRoaXMuZXZhbFJl c3BvbnNlKCk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgKHRoaXMub3B0aW9uc1sn b24nICsgc3RhdGVdIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNwb25z ZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAgICAgIEFqYXguUmVzcG9uZGVycy5k aXNwYXRjaCgnb24nICsgc3RhdGUsIHRoaXMsIHJlc3BvbnNlLCByZXNwb25zZS5o ZWFkZXJKU09OKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRj aEV4Y2VwdGlvbihlKTsKICAgIH0KCiAgICBpZiAoc3RhdGUgPT0gJ0NvbXBsZXRl JykgewogICAgICAvLyBhdm9pZCBtZW1vcnkgbGVhayBpbiBNU0lFOiBjbGVhbiB1 cAogICAgICB0aGlzLnRyYW5zcG9ydC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBQcm90 b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgIH0KICB9LAoKICBpc1NhbWVPcmlnaW46 IGZ1bmN0aW9uKCkgewogICAgdmFyIG0gPSB0aGlzLnVybC5tYXRjaCgvXlxzKmh0 dHBzPzpcL1wvW15cL10qLyk7CiAgICByZXR1cm4gIW0gfHwgKG1bMF0gPT0gJyN7 cHJvdG9jb2x9Ly8je2RvbWFpbn0je3BvcnR9Jy5pbnRlcnBvbGF0ZSh7CiAgICAg IHByb3RvY29sOiBsb2NhdGlvbi5wcm90b2NvbCwKICAgICAgZG9tYWluOiBkb2N1 bWVudC5kb21haW4sCiAgICAgIHBvcnQ6IGxvY2F0aW9uLnBvcnQgPyAnOicgKyBs b2NhdGlvbi5wb3J0IDogJycKICAgIH0pKTsKICB9LAoKICBnZXRIZWFkZXI6IGZ1 bmN0aW9uKG5hbWUpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5z cG9ydC5nZXRSZXNwb25zZUhlYWRlcihuYW1lKSB8fCBudWxsOwogICAgfSBjYXRj aCAoZSkgeyByZXR1cm4gbnVsbCB9CiAgfSwKCiAgZXZhbFJlc3BvbnNlOiBmdW5j dGlvbigpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiBldmFsKCh0aGlzLnRyYW5z cG9ydC5yZXNwb25zZVRleHQgfHwgJycpLnVuZmlsdGVySlNPTigpKTsKICAgIH0g Y2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAg IH0KICB9LAoKICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9u KSB7CiAgICAodGhpcy5vcHRpb25zLm9uRXhjZXB0aW9uIHx8IFByb3RvdHlwZS5l bXB0eUZ1bmN0aW9uKSh0aGlzLCBleGNlcHRpb24pOwogICAgQWpheC5SZXNwb25k ZXJzLmRpc3BhdGNoKCdvbkV4Y2VwdGlvbicsIHRoaXMsIGV4Y2VwdGlvbik7CiAg fQp9KTsKCkFqYXguUmVxdWVzdC5FdmVudHMgPQogIFsnVW5pbml0aWFsaXplZCcs ICdMb2FkaW5nJywgJ0xvYWRlZCcsICdJbnRlcmFjdGl2ZScsICdDb21wbGV0ZSdd OwoKQWpheC5SZXNwb25zZSA9IENsYXNzLmNyZWF0ZSh7CiAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24ocmVxdWVzdCl7CiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0Owog ICAgdmFyIHRyYW5zcG9ydCAgPSB0aGlzLnRyYW5zcG9ydCAgPSByZXF1ZXN0LnRy YW5zcG9ydCwKICAgICAgICByZWFkeVN0YXRlID0gdGhpcy5yZWFkeVN0YXRlID0g dHJhbnNwb3J0LnJlYWR5U3RhdGU7CgogICAgaWYoKHJlYWR5U3RhdGUgPiAyICYm ICFQcm90b3R5cGUuQnJvd3Nlci5JRSkgfHwgcmVhZHlTdGF0ZSA9PSA0KSB7CiAg ICAgIHRoaXMuc3RhdHVzICAgICAgID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgICAg dGhpcy5zdGF0dXNUZXh0ICAgPSB0aGlzLmdldFN0YXR1c1RleHQoKTsKICAgICAg dGhpcy5yZXNwb25zZVRleHQgPSBTdHJpbmcuaW50ZXJwcmV0KHRyYW5zcG9ydC5y ZXNwb25zZVRleHQpOwogICAgICB0aGlzLmhlYWRlckpTT04gICA9IHRoaXMuX2dl dEhlYWRlckpTT04oKTsKICAgIH0KCiAgICBpZihyZWFkeVN0YXRlID09IDQpIHsK ICAgICAgdmFyIHhtbCA9IHRyYW5zcG9ydC5yZXNwb25zZVhNTDsKICAgICAgdGhp cy5yZXNwb25zZVhNTCAgPSBPYmplY3QuaXNVbmRlZmluZWQoeG1sKSA/IG51bGwg OiB4bWw7CiAgICAgIHRoaXMucmVzcG9uc2VKU09OID0gdGhpcy5fZ2V0UmVzcG9u c2VKU09OKCk7CiAgICB9CiAgfSwKCiAgc3RhdHVzOiAgICAgIDAsCiAgc3RhdHVz VGV4dDogJycsCgogIGdldFN0YXR1czogQWpheC5SZXF1ZXN0LnByb3RvdHlwZS5n ZXRTdGF0dXMsCgogIGdldFN0YXR1c1RleHQ6IGZ1bmN0aW9uKCkgewogICAgdHJ5 IHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LnN0YXR1c1RleHQgfHwgJyc7 CiAgICB9IGNhdGNoIChlKSB7IHJldHVybiAnJyB9CiAgfSwKCiAgZ2V0SGVhZGVy OiBBamF4LlJlcXVlc3QucHJvdG90eXBlLmdldEhlYWRlciwKCiAgZ2V0QWxsSGVh ZGVyczogZnVuY3Rpb24oKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdGhpcy5n ZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJu IG51bGwgfQogIH0sCgogIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihuYW1l KSB7CiAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQuZ2V0UmVzcG9uc2VIZWFkZXIo bmFtZSk7CiAgfSwKCiAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigp IHsKICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRBbGxSZXNwb25zZUhlYWRl cnMoKTsKICB9LAoKICBfZ2V0SGVhZGVySlNPTjogZnVuY3Rpb24oKSB7CiAgICB2 YXIganNvbiA9IHRoaXMuZ2V0SGVhZGVyKCdYLUpTT04nKTsKICAgIGlmICghanNv bikgcmV0dXJuIG51bGw7CiAgICBqc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KGVz Y2FwZShqc29uKSk7CiAgICB0cnkgewogICAgICByZXR1cm4ganNvbi5ldmFsSlNP Tih0aGlzLnJlcXVlc3Qub3B0aW9ucy5zYW5pdGl6ZUpTT04gfHwKICAgICAgICAh dGhpcy5yZXF1ZXN0LmlzU2FtZU9yaWdpbigpKTsKICAgIH0gY2F0Y2ggKGUpIHsK ICAgICAgdGhpcy5yZXF1ZXN0LmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQog IH0sCgogIF9nZXRSZXNwb25zZUpTT046IGZ1bmN0aW9uKCkgewogICAgdmFyIG9w dGlvbnMgPSB0aGlzLnJlcXVlc3Qub3B0aW9uczsKICAgIGlmICghb3B0aW9ucy5l dmFsSlNPTiB8fCAob3B0aW9ucy5ldmFsSlNPTiAhPSAnZm9yY2UnICYmCiAgICAg ICEodGhpcy5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpIHx8ICcnKS5pbmNsdWRl KCdhcHBsaWNhdGlvbi9qc29uJykpIHx8CiAgICAgICAgdGhpcy5yZXNwb25zZVRl eHQuYmxhbmsoKSkKICAgICAgICAgIHJldHVybiBudWxsOwogICAgdHJ5IHsKICAg ICAgcmV0dXJuIHRoaXMucmVzcG9uc2VUZXh0LmV2YWxKU09OKG9wdGlvbnMuc2Fu aXRpemVKU09OIHx8CiAgICAgICAgIXRoaXMucmVxdWVzdC5pc1NhbWVPcmlnaW4o KSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMucmVxdWVzdC5kaXNwYXRj aEV4Y2VwdGlvbihlKTsKICAgIH0KICB9Cn0pOwoKQWpheC5VcGRhdGVyID0gQ2xh c3MuY3JlYXRlKEFqYXguUmVxdWVzdCwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9u KCRzdXBlciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgIHRoaXMuY29u dGFpbmVyID0gewogICAgICBzdWNjZXNzOiAoY29udGFpbmVyLnN1Y2Nlc3MgfHwg Y29udGFpbmVyKSwKICAgICAgZmFpbHVyZTogKGNvbnRhaW5lci5mYWlsdXJlIHx8 IChjb250YWluZXIuc3VjY2VzcyA/IG51bGwgOiBjb250YWluZXIpKQogICAgfTsK CiAgICBvcHRpb25zID0gT2JqZWN0LmNsb25lKG9wdGlvbnMpOwogICAgdmFyIG9u Q29tcGxldGUgPSBvcHRpb25zLm9uQ29tcGxldGU7CiAgICBvcHRpb25zLm9uQ29t cGxldGUgPSAoZnVuY3Rpb24ocmVzcG9uc2UsIGpzb24pIHsKICAgICAgdGhpcy51 cGRhdGVDb250ZW50KHJlc3BvbnNlLnJlc3BvbnNlVGV4dCk7CiAgICAgIGlmIChP YmplY3QuaXNGdW5jdGlvbihvbkNvbXBsZXRlKSkgb25Db21wbGV0ZShyZXNwb25z ZSwganNvbik7CiAgICB9KS5iaW5kKHRoaXMpOwoKICAgICRzdXBlcih1cmwsIG9w dGlvbnMpOwogIH0sCgogIHVwZGF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKHJlc3BvbnNl VGV4dCkgewogICAgdmFyIHJlY2VpdmVyID0gdGhpcy5jb250YWluZXJbdGhpcy5z dWNjZXNzKCkgPyAnc3VjY2VzcycgOiAnZmFpbHVyZSddLAogICAgICAgIG9wdGlv bnMgPSB0aGlzLm9wdGlvbnM7CgogICAgaWYgKCFvcHRpb25zLmV2YWxTY3JpcHRz KSByZXNwb25zZVRleHQgPSByZXNwb25zZVRleHQuc3RyaXBTY3JpcHRzKCk7Cgog ICAgaWYgKHJlY2VpdmVyID0gJChyZWNlaXZlcikpIHsKICAgICAgaWYgKG9wdGlv bnMuaW5zZXJ0aW9uKSB7CiAgICAgICAgaWYgKE9iamVjdC5pc1N0cmluZyhvcHRp b25zLmluc2VydGlvbikpIHsKICAgICAgICAgIHZhciBpbnNlcnRpb24gPSB7IH07 IGluc2VydGlvbltvcHRpb25zLmluc2VydGlvbl0gPSByZXNwb25zZVRleHQ7CiAg ICAgICAgICByZWNlaXZlci5pbnNlcnQoaW5zZXJ0aW9uKTsKICAgICAgICB9CiAg ICAgICAgZWxzZSBvcHRpb25zLmluc2VydGlvbihyZWNlaXZlciwgcmVzcG9uc2VU ZXh0KTsKICAgICAgfQogICAgICBlbHNlIHJlY2VpdmVyLnVwZGF0ZShyZXNwb25z ZVRleHQpOwogICAgfQogIH0KfSk7CgpBamF4LlBlcmlvZGljYWxVcGRhdGVyID0g Q2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9u KCRzdXBlciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgICRzdXBlcihv cHRpb25zKTsKICAgIHRoaXMub25Db21wbGV0ZSA9IHRoaXMub3B0aW9ucy5vbkNv bXBsZXRlOwoKICAgIHRoaXMuZnJlcXVlbmN5ID0gKHRoaXMub3B0aW9ucy5mcmVx dWVuY3kgfHwgMik7CiAgICB0aGlzLmRlY2F5ID0gKHRoaXMub3B0aW9ucy5kZWNh eSB8fCAxKTsKCiAgICB0aGlzLnVwZGF0ZXIgPSB7IH07CiAgICB0aGlzLmNvbnRh aW5lciA9IGNvbnRhaW5lcjsKICAgIHRoaXMudXJsID0gdXJsOwoKICAgIHRoaXMu c3RhcnQoKTsKICB9LAoKICBzdGFydDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLm9w dGlvbnMub25Db21wbGV0ZSA9IHRoaXMudXBkYXRlQ29tcGxldGUuYmluZCh0aGlz KTsKICAgIHRoaXMub25UaW1lckV2ZW50KCk7CiAgfSwKCiAgc3RvcDogZnVuY3Rp b24oKSB7CiAgICB0aGlzLnVwZGF0ZXIub3B0aW9ucy5vbkNvbXBsZXRlID0gdW5k ZWZpbmVkOwogICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpOwogICAgKHRoaXMu b25Db21wbGV0ZSB8fCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbikuYXBwbHkodGhp cywgYXJndW1lbnRzKTsKICB9LAoKICB1cGRhdGVDb21wbGV0ZTogZnVuY3Rpb24o cmVzcG9uc2UpIHsKICAgIGlmICh0aGlzLm9wdGlvbnMuZGVjYXkpIHsKICAgICAg dGhpcy5kZWNheSA9IChyZXNwb25zZS5yZXNwb25zZVRleHQgPT0gdGhpcy5sYXN0 VGV4dCA/CiAgICAgICAgdGhpcy5kZWNheSAqIHRoaXMub3B0aW9ucy5kZWNheSA6 IDEpOwoKICAgICAgdGhpcy5sYXN0VGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlVGV4 dDsKICAgIH0KICAgIHRoaXMudGltZXIgPSB0aGlzLm9uVGltZXJFdmVudC5iaW5k KHRoaXMpLmRlbGF5KHRoaXMuZGVjYXkgKiB0aGlzLmZyZXF1ZW5jeSk7CiAgfSwK CiAgb25UaW1lckV2ZW50OiBmdW5jdGlvbigpIHsKICAgIHRoaXMudXBkYXRlciA9 IG5ldyBBamF4LlVwZGF0ZXIodGhpcy5jb250YWluZXIsIHRoaXMudXJsLCB0aGlz Lm9wdGlvbnMpOwogIH0KfSk7CmZ1bmN0aW9uICQoZWxlbWVudCkgewogIGlmIChh cmd1bWVudHMubGVuZ3RoID4gMSkgewogICAgZm9yICh2YXIgaSA9IDAsIGVsZW1l bnRzID0gW10sIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7 IGkrKykKICAgICAgZWxlbWVudHMucHVzaCgkKGFyZ3VtZW50c1tpXSkpOwogICAg cmV0dXJuIGVsZW1lbnRzOwogIH0KICBpZiAoT2JqZWN0LmlzU3RyaW5nKGVsZW1l bnQpKQogICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1l bnQpOwogIHJldHVybiBFbGVtZW50LmV4dGVuZChlbGVtZW50KTsKfQoKaWYgKFBy b3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGgpIHsKICBkb2N1bWVudC5fZ2V0 RWxlbWVudHNCeVhQYXRoID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgcGFyZW50RWxl bWVudCkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBxdWVyeSA9IGRv Y3VtZW50LmV2YWx1YXRlKGV4cHJlc3Npb24sICQocGFyZW50RWxlbWVudCkgfHwg ZG9jdW1lbnQsCiAgICAgIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9T TkFQU0hPVF9UWVBFLCBudWxsKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGgg PSBxdWVyeS5zbmFwc2hvdExlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKQogICAgICBy ZXN1bHRzLnB1c2goRWxlbWVudC5leHRlbmQocXVlcnkuc25hcHNob3RJdGVtKGkp KSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgovKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KCmlmICghd2luZG93Lk5vZGUpIHZhciBOb2RlID0geyB9 OwoKaWYgKCFOb2RlLkVMRU1FTlRfTk9ERSkgewogIC8vIERPTSBsZXZlbCAyIEVD TUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZwogIE9iamVjdC5leHRlbmQoTm9kZSwg ewogICAgRUxFTUVOVF9OT0RFOiAxLAogICAgQVRUUklCVVRFX05PREU6IDIsCiAg ICBURVhUX05PREU6IDMsCiAgICBDREFUQV9TRUNUSU9OX05PREU6IDQsCiAgICBF TlRJVFlfUkVGRVJFTkNFX05PREU6IDUsCiAgICBFTlRJVFlfTk9ERTogNiwKICAg IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogNywKICAgIENPTU1FTlRfTk9E RTogOCwKICAgIERPQ1VNRU5UX05PREU6IDksCiAgICBET0NVTUVOVF9UWVBFX05P REU6IDEwLAogICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogMTEsCiAgICBOT1RB VElPTl9OT0RFOiAxMgogIH0pOwp9CgooZnVuY3Rpb24oKSB7CiAgdmFyIGVsZW1l bnQgPSB0aGlzLkVsZW1lbnQ7CiAgdGhpcy5FbGVtZW50ID0gZnVuY3Rpb24odGFn TmFtZSwgYXR0cmlidXRlcykgewogICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMg fHwgeyB9OwogICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAg IHZhciBjYWNoZSA9IEVsZW1lbnQuY2FjaGU7CiAgICBpZiAoUHJvdG90eXBlLkJy b3dzZXIuSUUgJiYgYXR0cmlidXRlcy5uYW1lKSB7CiAgICAgIHRhZ05hbWUgPSAn PCcgKyB0YWdOYW1lICsgJyBuYW1lPSInICsgYXR0cmlidXRlcy5uYW1lICsgJyI+ JzsKICAgICAgZGVsZXRlIGF0dHJpYnV0ZXMubmFtZTsKICAgICAgcmV0dXJuIEVs ZW1lbnQud3JpdGVBdHRyaWJ1dGUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdO YW1lKSwgYXR0cmlidXRlcyk7CiAgICB9CiAgICBpZiAoIWNhY2hlW3RhZ05hbWVd KSBjYWNoZVt0YWdOYW1lXSA9IEVsZW1lbnQuZXh0ZW5kKGRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQodGFnTmFtZSkpOwogICAgcmV0dXJuIEVsZW1lbnQud3JpdGVBdHRy aWJ1dGUoY2FjaGVbdGFnTmFtZV0uY2xvbmVOb2RlKGZhbHNlKSwgYXR0cmlidXRl cyk7CiAgfTsKICBPYmplY3QuZXh0ZW5kKHRoaXMuRWxlbWVudCwgZWxlbWVudCB8 fCB7IH0pOwogIGlmIChlbGVtZW50KSB0aGlzLkVsZW1lbnQucHJvdG90eXBlID0g ZWxlbWVudC5wcm90b3R5cGU7Cn0pLmNhbGwod2luZG93KTsKCkVsZW1lbnQuY2Fj aGUgPSB7IH07CgpFbGVtZW50Lk1ldGhvZHMgPSB7CiAgdmlzaWJsZTogZnVuY3Rp b24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuc3R5bGUuZGlzcGxh eSAhPSAnbm9uZSc7CiAgfSwKCiAgdG9nZ2xlOiBmdW5jdGlvbihlbGVtZW50KSB7 CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIEVsZW1lbnRbRWxlbWVudC52 aXNpYmxlKGVsZW1lbnQpID8gJ2hpZGUnIDogJ3Nob3cnXShlbGVtZW50KTsKICAg IHJldHVybiBlbGVtZW50OwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKGVsZW1lbnQp IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5zdHlsZS5k aXNwbGF5ID0gJ25vbmUnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgc2hv dzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7 CiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgIHJldHVybiBlbGVt ZW50OwogIH0sCgogIHJlbW92ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxl bWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3Zl Q2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB1cGRh dGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAk KGVsZW1lbnQpOwogICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQp IGNvbnRlbnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAgaWYgKE9iamVjdC5p c0VsZW1lbnQoY29udGVudCkpIHJldHVybiBlbGVtZW50LnVwZGF0ZSgpLmluc2Vy dChjb250ZW50KTsKICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQp OwogICAgZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygp OwogICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7 CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZXBsYWNlOiBmdW5jdGlvbihl bGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAg IGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29u dGVudC50b0VsZW1lbnQoKTsKICAgIGVsc2UgaWYgKCFPYmplY3QuaXNFbGVtZW50 KGNvbnRlbnQpKSB7CiAgICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRl bnQpOwogICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuY3Jl YXRlUmFuZ2UoKTsKICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShlbGVtZW50KTsKICAg ICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAg ICAgIGNvbnRlbnQgPSByYW5nZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29u dGVudC5zdHJpcFNjcmlwdHMoKSk7CiAgICB9CiAgICBlbGVtZW50LnBhcmVudE5v ZGUucmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgcmV0dXJuIGVs ZW1lbnQ7CiAgfSwKCiAgaW5zZXJ0OiBmdW5jdGlvbihlbGVtZW50LCBpbnNlcnRp b25zKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKCiAgICBpZiAoT2JqZWN0 LmlzU3RyaW5nKGluc2VydGlvbnMpIHx8IE9iamVjdC5pc051bWJlcihpbnNlcnRp b25zKSB8fAogICAgICAgIE9iamVjdC5pc0VsZW1lbnQoaW5zZXJ0aW9ucykgfHwg KGluc2VydGlvbnMgJiYgKGluc2VydGlvbnMudG9FbGVtZW50IHx8IGluc2VydGlv bnMudG9IVE1MKSkpCiAgICAgICAgICBpbnNlcnRpb25zID0ge2JvdHRvbTppbnNl cnRpb25zfTsKCiAgICB2YXIgY29udGVudCwgaW5zZXJ0LCB0YWdOYW1lLCBjaGls ZE5vZGVzOwoKICAgIGZvciAodmFyIHBvc2l0aW9uIGluIGluc2VydGlvbnMpIHsK ICAgICAgY29udGVudCAgPSBpbnNlcnRpb25zW3Bvc2l0aW9uXTsKICAgICAgcG9z aXRpb24gPSBwb3NpdGlvbi50b0xvd2VyQ2FzZSgpOwogICAgICBpbnNlcnQgPSBF bGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnNbcG9zaXRpb25dOwoKICAgICAg aWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRlbnQgPSBjb250 ZW50LnRvRWxlbWVudCgpOwogICAgICBpZiAoT2JqZWN0LmlzRWxlbWVudChjb250 ZW50KSkgewogICAgICAgIGluc2VydChlbGVtZW50LCBjb250ZW50KTsKICAgICAg ICBjb250aW51ZTsKICAgICAgfQoKICAgICAgY29udGVudCA9IE9iamVjdC50b0hU TUwoY29udGVudCk7CgogICAgICB0YWdOYW1lID0gKChwb3NpdGlvbiA9PSAnYmVm b3JlJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKQogICAgICAgID8gZWxlbWVudC5w YXJlbnROb2RlIDogZWxlbWVudCkudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAg ICAgY2hpbGROb2RlcyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3Vz RWxlbWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKCiAgICAg IGlmIChwb3NpdGlvbiA9PSAndG9wJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKSBj aGlsZE5vZGVzLnJldmVyc2UoKTsKICAgICAgY2hpbGROb2Rlcy5lYWNoKGluc2Vy dC5jdXJyeShlbGVtZW50KSk7CgogICAgICBjb250ZW50LmV2YWxTY3JpcHRzLmJp bmQoY29udGVudCkuZGVmZXIoKTsKICAgIH0KCiAgICByZXR1cm4gZWxlbWVudDsK ICB9LAoKICB3cmFwOiBmdW5jdGlvbihlbGVtZW50LCB3cmFwcGVyLCBhdHRyaWJ1 dGVzKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChPYmplY3Qu aXNFbGVtZW50KHdyYXBwZXIpKQogICAgICAkKHdyYXBwZXIpLndyaXRlQXR0cmli dXRlKGF0dHJpYnV0ZXMgfHwgeyB9KTsKICAgIGVsc2UgaWYgKE9iamVjdC5pc1N0 cmluZyh3cmFwcGVyKSkgd3JhcHBlciA9IG5ldyBFbGVtZW50KHdyYXBwZXIsIGF0 dHJpYnV0ZXMpOwogICAgZWxzZSB3cmFwcGVyID0gbmV3IEVsZW1lbnQoJ2Rpdics IHdyYXBwZXIpOwogICAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgZWxl bWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwcGVyLCBlbGVtZW50KTsK ICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gd3Jh cHBlcjsKICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBl bGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciByZXN1bHQgPSAnPCcgKyBlbGVt ZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgICRIKHsnaWQnOiAnaWQnLCAn Y2xhc3NOYW1lJzogJ2NsYXNzJ30pLmVhY2goZnVuY3Rpb24ocGFpcikgewogICAg ICB2YXIgcHJvcGVydHkgPSBwYWlyLmZpcnN0KCksIGF0dHJpYnV0ZSA9IHBhaXIu bGFzdCgpOwogICAgICB2YXIgdmFsdWUgPSAoZWxlbWVudFtwcm9wZXJ0eV0gfHwg JycpLnRvU3RyaW5nKCk7CiAgICAgIGlmICh2YWx1ZSkgcmVzdWx0ICs9ICcgJyAr IGF0dHJpYnV0ZSArICc9JyArIHZhbHVlLmluc3BlY3QodHJ1ZSk7CiAgICB9KTsK ICAgIHJldHVybiByZXN1bHQgKyAnPic7CiAgfSwKCiAgcmVjdXJzaXZlbHlDb2xs ZWN0OiBmdW5jdGlvbihlbGVtZW50LCBwcm9wZXJ0eSkgewogICAgZWxlbWVudCA9 ICQoZWxlbWVudCk7CiAgICB2YXIgZWxlbWVudHMgPSBbXTsKICAgIHdoaWxlIChl bGVtZW50ID0gZWxlbWVudFtwcm9wZXJ0eV0pCiAgICAgIGlmIChlbGVtZW50Lm5v ZGVUeXBlID09IDEpCiAgICAgICAgZWxlbWVudHMucHVzaChFbGVtZW50LmV4dGVu ZChlbGVtZW50KSk7CiAgICByZXR1cm4gZWxlbWVudHM7CiAgfSwKCiAgYW5jZXN0 b3JzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5y ZWN1cnNpdmVseUNvbGxlY3QoJ3BhcmVudE5vZGUnKTsKICB9LAoKICBkZXNjZW5k YW50czogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCku c2VsZWN0KCIqIik7CiAgfSwKCiAgZmlyc3REZXNjZW5kYW50OiBmdW5jdGlvbihl bGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkOwog ICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAxKSBlbGVt ZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIHJldHVybiAkKGVsZW1lbnQp OwogIH0sCgogIGltbWVkaWF0ZURlc2NlbmRhbnRzOiBmdW5jdGlvbihlbGVtZW50 KSB7CiAgICBpZiAoIShlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkKSkg cmV0dXJuIFtdOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlw ZSAhPSAxKSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIGlmIChl bGVtZW50KSByZXR1cm4gW2VsZW1lbnRdLmNvbmNhdCgkKGVsZW1lbnQpLm5leHRT aWJsaW5ncygpKTsKICAgIHJldHVybiBbXTsKICB9LAoKICBwcmV2aW91c1NpYmxp bmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5y ZWN1cnNpdmVseUNvbGxlY3QoJ3ByZXZpb3VzU2libGluZycpOwogIH0sCgogIG5l eHRTaWJsaW5nczogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxl bWVudCkucmVjdXJzaXZlbHlDb2xsZWN0KCduZXh0U2libGluZycpOwogIH0sCgog IHNpYmxpbmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChl bGVtZW50KTsKICAgIHJldHVybiBlbGVtZW50LnByZXZpb3VzU2libGluZ3MoKS5y ZXZlcnNlKCkuY29uY2F0KGVsZW1lbnQubmV4dFNpYmxpbmdzKCkpOwogIH0sCgog IG1hdGNoOiBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3RvcikgewogICAgaWYgKE9i amVjdC5pc1N0cmluZyhzZWxlY3RvcikpCiAgICAgIHNlbGVjdG9yID0gbmV3IFNl bGVjdG9yKHNlbGVjdG9yKTsKICAgIHJldHVybiBzZWxlY3Rvci5tYXRjaCgkKGVs ZW1lbnQpKTsKICB9LAoKICB1cDogZnVuY3Rpb24oZWxlbWVudCwgZXhwcmVzc2lv biwgaW5kZXgpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGFy Z3VtZW50cy5sZW5ndGggPT0gMSkgcmV0dXJuICQoZWxlbWVudC5wYXJlbnROb2Rl KTsKICAgIHZhciBhbmNlc3RvcnMgPSBlbGVtZW50LmFuY2VzdG9ycygpOwogICAg cmV0dXJuIE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSA/IGFuY2VzdG9yc1tl eHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KGFuY2VzdG9y cywgZXhwcmVzc2lvbiwgaW5kZXgpOwogIH0sCgogIGRvd246IGZ1bmN0aW9uKGVs ZW1lbnQsIGV4cHJlc3Npb24sIGluZGV4KSB7CiAgICBlbGVtZW50ID0gJChlbGVt ZW50KTsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHJldHVybiBlbGVt ZW50LmZpcnN0RGVzY2VuZGFudCgpOwogICAgcmV0dXJuIE9iamVjdC5pc051bWJl cihleHByZXNzaW9uKSA/IGVsZW1lbnQuZGVzY2VuZGFudHMoKVtleHByZXNzaW9u XSA6CiAgICAgIEVsZW1lbnQuc2VsZWN0KGVsZW1lbnQsIGV4cHJlc3Npb24pW2lu ZGV4IHx8IDBdOwogIH0sCgogIHByZXZpb3VzOiBmdW5jdGlvbihlbGVtZW50LCBl eHByZXNzaW9uLCBpbmRleCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5o YW5kbGVycy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKGVsZW1lbnQpKTsKICAgIHZh ciBwcmV2aW91c1NpYmxpbmdzID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmdzKCk7 CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24pID8gcHJldmlv dXNTaWJsaW5nc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVt ZW50KHByZXZpb3VzU2libGluZ3MsIGV4cHJlc3Npb24sIGluZGV4KTsKICB9LAoK ICBuZXh0OiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBpbmRleCkgewog ICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0 aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVycy5uZXh0RWxlbWVudFNp YmxpbmcoZWxlbWVudCkpOwogICAgdmFyIG5leHRTaWJsaW5ncyA9IGVsZW1lbnQu bmV4dFNpYmxpbmdzKCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJl c3Npb24pID8gbmV4dFNpYmxpbmdzW2V4cHJlc3Npb25dIDoKICAgICAgU2VsZWN0 b3IuZmluZEVsZW1lbnQobmV4dFNpYmxpbmdzLCBleHByZXNzaW9uLCBpbmRleCk7 CiAgfSwKCiAgc2VsZWN0OiBmdW5jdGlvbigpIHsKICAgIHZhciBhcmdzID0gJEEo YXJndW1lbnRzKSwgZWxlbWVudCA9ICQoYXJncy5zaGlmdCgpKTsKICAgIHJldHVy biBTZWxlY3Rvci5maW5kQ2hpbGRFbGVtZW50cyhlbGVtZW50LCBhcmdzKTsKICB9 LAoKICBhZGphY2VudDogZnVuY3Rpb24oKSB7CiAgICB2YXIgYXJncyA9ICRBKGFy Z3VtZW50cyksIGVsZW1lbnQgPSAkKGFyZ3Muc2hpZnQoKSk7CiAgICByZXR1cm4g U2VsZWN0b3IuZmluZENoaWxkRWxlbWVudHMoZWxlbWVudC5wYXJlbnROb2RlLCBh cmdzKS53aXRob3V0KGVsZW1lbnQpOwogIH0sCgogIGlkZW50aWZ5OiBmdW5jdGlv bihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBp ZCA9IGVsZW1lbnQucmVhZEF0dHJpYnV0ZSgnaWQnKSwgc2VsZiA9IGFyZ3VtZW50 cy5jYWxsZWU7CiAgICBpZiAoaWQpIHJldHVybiBpZDsKICAgIGRvIHsgaWQgPSAn YW5vbnltb3VzX2VsZW1lbnRfJyArIHNlbGYuY291bnRlcisrIH0gd2hpbGUgKCQo aWQpKTsKICAgIGVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoJ2lkJywgaWQpOwogICAg cmV0dXJuIGlkOwogIH0sCgogIHJlYWRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGVsZW1l bnQsIG5hbWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKFBy b3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgICAgIHZhciB0ID0gRWxlbWVudC5fYXR0 cmlidXRlVHJhbnNsYXRpb25zLnJlYWQ7CiAgICAgIGlmICh0LnZhbHVlc1tuYW1l XSkgcmV0dXJuIHQudmFsdWVzW25hbWVdKGVsZW1lbnQsIG5hbWUpOwogICAgICBp ZiAodC5uYW1lc1tuYW1lXSkgbmFtZSA9IHQubmFtZXNbbmFtZV07CiAgICAgIGlm IChuYW1lLmluY2x1ZGUoJzonKSkgewogICAgICAgIHJldHVybiAoIWVsZW1lbnQu YXR0cmlidXRlcyB8fCAhZWxlbWVudC5hdHRyaWJ1dGVzW25hbWVdKSA/IG51bGwg OgogICAgICAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0udmFsdWU7CiAgICAg IH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTsK ICB9LAoKICB3cml0ZUF0dHJpYnV0ZTogZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwg dmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGF0dHJp YnV0ZXMgPSB7IH0sIHQgPSBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMu d3JpdGU7CgogICAgaWYgKHR5cGVvZiBuYW1lID09ICdvYmplY3QnKSBhdHRyaWJ1 dGVzID0gbmFtZTsKICAgIGVsc2UgYXR0cmlidXRlc1tuYW1lXSA9IE9iamVjdC5p c1VuZGVmaW5lZCh2YWx1ZSkgPyB0cnVlIDogdmFsdWU7CgogICAgZm9yICh2YXIg YXR0ciBpbiBhdHRyaWJ1dGVzKSB7CiAgICAgIG5hbWUgPSB0Lm5hbWVzW2F0dHJd IHx8IGF0dHI7CiAgICAgIHZhbHVlID0gYXR0cmlidXRlc1thdHRyXTsKICAgICAg aWYgKHQudmFsdWVzW2F0dHJdKSBuYW1lID0gdC52YWx1ZXNbYXR0cl0oZWxlbWVu dCwgdmFsdWUpOwogICAgICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09 PSBudWxsKQogICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpOwog ICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gdHJ1ZSkKICAgICAgICBlbGVtZW50LnNl dEF0dHJpYnV0ZShuYW1lLCBuYW1lKTsKICAgICAgZWxzZSBlbGVtZW50LnNldEF0 dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICB9CiAgICByZXR1cm4gZWxlbWVudDsK ICB9LAoKICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVy biAkKGVsZW1lbnQpLmdldERpbWVuc2lvbnMoKS5oZWlnaHQ7CiAgfSwKCiAgZ2V0 V2lkdGg6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQp LmdldERpbWVuc2lvbnMoKS53aWR0aDsKICB9LAoKICBjbGFzc05hbWVzOiBmdW5j dGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gbmV3IEVsZW1lbnQuQ2xhc3NOYW1l cyhlbGVtZW50KTsKICB9LAoKICBoYXNDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1l bnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkp KSByZXR1cm47CiAgICB2YXIgZWxlbWVudENsYXNzTmFtZSA9IGVsZW1lbnQuY2xh c3NOYW1lOwogICAgcmV0dXJuIChlbGVtZW50Q2xhc3NOYW1lLmxlbmd0aCA+IDAg JiYgKGVsZW1lbnRDbGFzc05hbWUgPT0gY2xhc3NOYW1lIHx8CiAgICAgIG5ldyBS ZWdFeHAoIihefFxccykiICsgY2xhc3NOYW1lICsgIihcXHN8JCkiKS50ZXN0KGVs ZW1lbnRDbGFzc05hbWUpKSk7CiAgfSwKCiAgYWRkQ2xhc3NOYW1lOiBmdW5jdGlv bihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGlmICghKGVsZW1lbnQgPSAkKGVs ZW1lbnQpKSkgcmV0dXJuOwogICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzTmFtZShj bGFzc05hbWUpKQogICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAoZWxlbWVudC5j bGFzc05hbWUgPyAnICcgOiAnJykgKyBjbGFzc05hbWU7CiAgICByZXR1cm4gZWxl bWVudDsKICB9LAoKICByZW1vdmVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQs IGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSBy ZXR1cm47CiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1l LnJlcGxhY2UoCiAgICAgIG5ldyBSZWdFeHAoIihefFxccyspIiArIGNsYXNzTmFt ZSArICIoXFxzK3wkKSIpLCAnICcpLnN0cmlwKCk7CiAgICByZXR1cm4gZWxlbWVu dDsKICB9LAoKICB0b2dnbGVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNs YXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1 cm47CiAgICByZXR1cm4gZWxlbWVudFtlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFz c05hbWUpID8KICAgICAgJ3JlbW92ZUNsYXNzTmFtZScgOiAnYWRkQ2xhc3NOYW1l J10oY2xhc3NOYW1lKTsKICB9LAoKICAvLyByZW1vdmVzIHdoaXRlc3BhY2Utb25s eSB0ZXh0IG5vZGUgY2hpbGRyZW4KICBjbGVhbldoaXRlc3BhY2U6IGZ1bmN0aW9u KGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG5v ZGUgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7CiAgICB3aGlsZSAobm9kZSkgewogICAg ICB2YXIgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICBpZiAobm9k ZS5ub2RlVHlwZSA9PSAzICYmICEvXFMvLnRlc3Qobm9kZS5ub2RlVmFsdWUpKQog ICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgIG5vZGUgPSBu ZXh0Tm9kZTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVtcHR5 OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5pbm5l ckhUTUwuYmxhbmsoKTsKICB9LAoKICBkZXNjZW5kYW50T2Y6IGZ1bmN0aW9uKGVs ZW1lbnQsIGFuY2VzdG9yKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KSwgYW5j ZXN0b3IgPSAkKGFuY2VzdG9yKTsKCiAgICBpZiAoZWxlbWVudC5jb21wYXJlRG9j dW1lbnRQb3NpdGlvbikKICAgICAgcmV0dXJuIChlbGVtZW50LmNvbXBhcmVEb2N1 bWVudFBvc2l0aW9uKGFuY2VzdG9yKSAmIDgpID09PSA4OwoKICAgIGlmIChhbmNl c3Rvci5jb250YWlucykKICAgICAgcmV0dXJuIGFuY2VzdG9yLmNvbnRhaW5zKGVs ZW1lbnQpICYmIGFuY2VzdG9yICE9PSBlbGVtZW50OwoKICAgIHdoaWxlIChlbGVt ZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKQogICAgICBpZiAoZWxlbWVudCA9PSBh bmNlc3RvcikgcmV0dXJuIHRydWU7CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgog IHNjcm9sbFRvOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChl bGVtZW50KTsKICAgIHZhciBwb3MgPSBlbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQo KTsKICAgIHdpbmRvdy5zY3JvbGxUbyhwb3NbMF0sIHBvc1sxXSk7CiAgICByZXR1 cm4gZWxlbWVudDsKICB9LAoKICBnZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwg c3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgc3R5bGUgPSBz dHlsZSA9PSAnZmxvYXQnID8gJ2Nzc0Zsb2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7 CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LnN0eWxlW3N0eWxlXTsKICAgIGlmICgh dmFsdWUgfHwgdmFsdWUgPT0gJ2F1dG8nKSB7CiAgICAgIHZhciBjc3MgPSBkb2N1 bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwp OwogICAgICB2YWx1ZSA9IGNzcyA/IGNzc1tzdHlsZV0gOiBudWxsOwogICAgfQog ICAgaWYgKHN0eWxlID09ICdvcGFjaXR5JykgcmV0dXJuIHZhbHVlID8gcGFyc2VG bG9hdCh2YWx1ZSkgOiAxLjA7CiAgICByZXR1cm4gdmFsdWUgPT0gJ2F1dG8nID8g bnVsbCA6IHZhbHVlOwogIH0sCgogIGdldE9wYWNpdHk6IGZ1bmN0aW9uKGVsZW1l bnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLmdldFN0eWxlKCdvcGFjaXR5Jyk7 CiAgfSwKCiAgc2V0U3R5bGU6IGZ1bmN0aW9uKGVsZW1lbnQsIHN0eWxlcykgewog ICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgZWxlbWVudFN0eWxlID0g ZWxlbWVudC5zdHlsZSwgbWF0Y2g7CiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKHN0 eWxlcykpIHsKICAgICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ICs9ICc7JyArIHN0 eWxlczsKICAgICAgcmV0dXJuIHN0eWxlcy5pbmNsdWRlKCdvcGFjaXR5JykgPwog ICAgICAgIGVsZW1lbnQuc2V0T3BhY2l0eShzdHlsZXMubWF0Y2goL29wYWNpdHk6 XHMqKFxkP1wuP1xkKikvKVsxXSkgOiBlbGVtZW50OwogICAgfQogICAgZm9yICh2 YXIgcHJvcGVydHkgaW4gc3R5bGVzKQogICAgICBpZiAocHJvcGVydHkgPT0gJ29w YWNpdHknKSBlbGVtZW50LnNldE9wYWNpdHkoc3R5bGVzW3Byb3BlcnR5XSk7CiAg ICAgIGVsc2UKICAgICAgICBlbGVtZW50U3R5bGVbKHByb3BlcnR5ID09ICdmbG9h dCcgfHwgcHJvcGVydHkgPT0gJ2Nzc0Zsb2F0JykgPwogICAgICAgICAgKE9iamVj dC5pc1VuZGVmaW5lZChlbGVtZW50U3R5bGUuc3R5bGVGbG9hdCkgPyAnY3NzRmxv YXQnIDogJ3N0eWxlRmxvYXQnKSA6CiAgICAgICAgICAgIHByb3BlcnR5XSA9IHN0 eWxlc1twcm9wZXJ0eV07CgogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgc2V0 T3BhY2l0eTogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGVsZW1lbnQg PSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gKHZhbHVl ID09IDEgfHwgdmFsdWUgPT09ICcnKSA/ICcnIDoKICAgICAgKHZhbHVlIDwgMC4w MDAwMSkgPyAwIDogdmFsdWU7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBn ZXREaW1lbnNpb25zOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0g JChlbGVtZW50KTsKICAgIHZhciBkaXNwbGF5ID0gZWxlbWVudC5nZXRTdHlsZSgn ZGlzcGxheScpOwogICAgaWYgKGRpc3BsYXkgIT0gJ25vbmUnICYmIGRpc3BsYXkg IT0gbnVsbCkgLy8gU2FmYXJpIGJ1ZwogICAgICByZXR1cm4ge3dpZHRoOiBlbGVt ZW50Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0fTsK CiAgICAvLyBBbGwgKldpZHRoIGFuZCAqSGVpZ2h0IHByb3BlcnRpZXMgZ2l2ZSAw IG9uIGVsZW1lbnRzIHdpdGggZGlzcGxheSBub25lLAogICAgLy8gc28gZW5hYmxl IHRoZSBlbGVtZW50IHRlbXBvcmFyaWx5CiAgICB2YXIgZWxzID0gZWxlbWVudC5z dHlsZTsKICAgIHZhciBvcmlnaW5hbFZpc2liaWxpdHkgPSBlbHMudmlzaWJpbGl0 eTsKICAgIHZhciBvcmlnaW5hbFBvc2l0aW9uID0gZWxzLnBvc2l0aW9uOwogICAg dmFyIG9yaWdpbmFsRGlzcGxheSA9IGVscy5kaXNwbGF5OwogICAgZWxzLnZpc2li aWxpdHkgPSAnaGlkZGVuJzsKICAgIGVscy5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7 CiAgICBlbHMuZGlzcGxheSA9ICdibG9jayc7CiAgICB2YXIgb3JpZ2luYWxXaWR0 aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICB2YXIgb3JpZ2luYWxIZWlnaHQg PSBlbGVtZW50LmNsaWVudEhlaWdodDsKICAgIGVscy5kaXNwbGF5ID0gb3JpZ2lu YWxEaXNwbGF5OwogICAgZWxzLnBvc2l0aW9uID0gb3JpZ2luYWxQb3NpdGlvbjsK ICAgIGVscy52aXNpYmlsaXR5ID0gb3JpZ2luYWxWaXNpYmlsaXR5OwogICAgcmV0 dXJuIHt3aWR0aDogb3JpZ2luYWxXaWR0aCwgaGVpZ2h0OiBvcmlnaW5hbEhlaWdo dH07CiAgfSwKCiAgbWFrZVBvc2l0aW9uZWQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK ICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIHBvcyA9IEVsZW1lbnQu Z2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJyk7CiAgICBpZiAocG9zID09ICdz dGF0aWMnIHx8ICFwb3MpIHsKICAgICAgZWxlbWVudC5fbWFkZVBvc2l0aW9uZWQg PSB0cnVlOwogICAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZl JzsKICAgICAgLy8gT3BlcmEgcmV0dXJucyB0aGUgb2Zmc2V0IHJlbGF0aXZlIHRv IHRoZSBwb3NpdGlvbmluZyBjb250ZXh0LCB3aGVuIGFuCiAgICAgIC8vIGVsZW1l bnQgaXMgcG9zaXRpb24gcmVsYXRpdmUgYnV0IHRvcCBhbmQgbGVmdCBoYXZlIG5v dCBiZWVuIGRlZmluZWQKICAgICAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLk9wZXJh KSB7CiAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSAwOwogICAgICAgIGVsZW1l bnQuc3R5bGUubGVmdCA9IDA7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVt ZW50OwogIH0sCgogIHVuZG9Qb3NpdGlvbmVkOiBmdW5jdGlvbihlbGVtZW50KSB7 CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50Ll9tYWRl UG9zaXRpb25lZCkgewogICAgICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHVu ZGVmaW5lZDsKICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9CiAgICAgICAg ZWxlbWVudC5zdHlsZS50b3AgPQogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9 CiAgICAgICAgZWxlbWVudC5zdHlsZS5ib3R0b20gPQogICAgICAgIGVsZW1lbnQu c3R5bGUucmlnaHQgPSAnJzsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0s CgogIG1ha2VDbGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVu dCA9ICQoZWxlbWVudCk7CiAgICBpZiAoZWxlbWVudC5fb3ZlcmZsb3cpIHJldHVy biBlbGVtZW50OwogICAgZWxlbWVudC5fb3ZlcmZsb3cgPSBFbGVtZW50LmdldFN0 eWxlKGVsZW1lbnQsICdvdmVyZmxvdycpIHx8ICdhdXRvJzsKICAgIGlmIChlbGVt ZW50Ll9vdmVyZmxvdyAhPT0gJ2hpZGRlbicpCiAgICAgIGVsZW1lbnQuc3R5bGUu b3ZlcmZsb3cgPSAnaGlkZGVuJzsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgog IHVuZG9DbGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9 ICQoZWxlbWVudCk7CiAgICBpZiAoIWVsZW1lbnQuX292ZXJmbG93KSByZXR1cm4g ZWxlbWVudDsKICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBlbGVtZW50Ll9v dmVyZmxvdyA9PSAnYXV0bycgPyAnJyA6IGVsZW1lbnQuX292ZXJmbG93OwogICAg ZWxlbWVudC5fb3ZlcmZsb3cgPSBudWxsOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAg fSwKCiAgY3VtdWxhdGl2ZU9mZnNldDogZnVuY3Rpb24oZWxlbWVudCkgewogICAg dmFyIHZhbHVlVCA9IDAsIHZhbHVlTCA9IDA7CiAgICBkbyB7CiAgICAgIHZhbHVl VCArPSBlbGVtZW50Lm9mZnNldFRvcCAgfHwgMDsKICAgICAgdmFsdWVMICs9IGVs ZW1lbnQub2Zmc2V0TGVmdCB8fCAwOwogICAgICBlbGVtZW50ID0gZWxlbWVudC5v ZmZzZXRQYXJlbnQ7CiAgICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBF bGVtZW50Ll9yZXR1cm5PZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIHBv c2l0aW9uZWRPZmZzZXQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1 ZVQgPSAwLCB2YWx1ZUwgPSAwOwogICAgZG8gewogICAgICB2YWx1ZVQgKz0gZWxl bWVudC5vZmZzZXRUb3AgIHx8IDA7CiAgICAgIHZhbHVlTCArPSBlbGVtZW50Lm9m ZnNldExlZnQgfHwgMDsKICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy ZW50OwogICAgICBpZiAoZWxlbWVudCkgewogICAgICAgIGlmIChlbGVtZW50LnRh Z05hbWUudG9VcHBlckNhc2UoKSA9PSAnQk9EWScpIGJyZWFrOwogICAgICAgIHZh ciBwID0gRWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKTsKICAg ICAgICBpZiAocCAhPT0gJ3N0YXRpYycpIGJyZWFrOwogICAgICB9CiAgICB9IHdo aWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQo dmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIGFic29sdXRpemU6IGZ1bmN0aW9uKGVs ZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGVsZW1l bnQuZ2V0U3R5bGUoJ3Bvc2l0aW9uJykgPT0gJ2Fic29sdXRlJykgcmV0dXJuIGVs ZW1lbnQ7CiAgICAvLyBQb3NpdGlvbi5wcmVwYXJlKCk7IC8vIFRvIGJlIGRvbmUg bWFudWFsbHkgYnkgU2NyaXB0eSB3aGVuIGl0IG5lZWRzIGl0LgoKICAgIHZhciBv ZmZzZXRzID0gZWxlbWVudC5wb3NpdGlvbmVkT2Zmc2V0KCk7CiAgICB2YXIgdG9w ICAgICA9IG9mZnNldHNbMV07CiAgICB2YXIgbGVmdCAgICA9IG9mZnNldHNbMF07 CiAgICB2YXIgd2lkdGggICA9IGVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICB2YXIg aGVpZ2h0ICA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OwoKICAgIGVsZW1lbnQuX29y aWdpbmFsTGVmdCAgID0gbGVmdCAtIHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS5s ZWZ0ICB8fCAwKTsKICAgIGVsZW1lbnQuX29yaWdpbmFsVG9wICAgID0gdG9wICAt IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS50b3AgfHwgMCk7CiAgICBlbGVtZW50 Ll9vcmlnaW5hbFdpZHRoICA9IGVsZW1lbnQuc3R5bGUud2lkdGg7CiAgICBlbGVt ZW50Ll9vcmlnaW5hbEhlaWdodCA9IGVsZW1lbnQuc3R5bGUuaGVpZ2h0OwoKICAg IGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwogICAgZWxlbWVu dC5zdHlsZS50b3AgICAgPSB0b3AgKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5s ZWZ0ICAgPSBsZWZ0ICsgJ3B4JzsKICAgIGVsZW1lbnQuc3R5bGUud2lkdGggID0g d2lkdGggKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQg KyAncHgnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgcmVsYXRpdml6ZTog ZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg ICBpZiAoZWxlbWVudC5nZXRTdHlsZSgncG9zaXRpb24nKSA9PSAncmVsYXRpdmUn KSByZXR1cm4gZWxlbWVudDsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8g VG8gYmUgZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQu CgogICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CiAgICB2 YXIgdG9wICA9IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS50b3AgIHx8IDApIC0g KGVsZW1lbnQuX29yaWdpbmFsVG9wIHx8IDApOwogICAgdmFyIGxlZnQgPSBwYXJz ZUZsb2F0KGVsZW1lbnQuc3R5bGUubGVmdCB8fCAwKSAtIChlbGVtZW50Ll9vcmln aW5hbExlZnQgfHwgMCk7CgogICAgZWxlbWVudC5zdHlsZS50b3AgICAgPSB0b3Ag KyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5sZWZ0ICAgPSBsZWZ0ICsgJ3B4JzsK ICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gZWxlbWVudC5fb3JpZ2luYWxIZWln aHQ7CiAgICBlbGVtZW50LnN0eWxlLndpZHRoICA9IGVsZW1lbnQuX29yaWdpbmFs V2lkdGg7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBjdW11bGF0aXZlU2Ny b2xsT2Zmc2V0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0g MCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQu c2Nyb2xsVG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5zY3JvbGxM ZWZ0IHx8IDA7CiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CiAg ICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5P ZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIGdldE9mZnNldFBhcmVudDog ZnVuY3Rpb24oZWxlbWVudCkgewogICAgaWYgKGVsZW1lbnQub2Zmc2V0UGFyZW50 KSByZXR1cm4gJChlbGVtZW50Lm9mZnNldFBhcmVudCk7CiAgICBpZiAoZWxlbWVu dCA9PSBkb2N1bWVudC5ib2R5KSByZXR1cm4gJChlbGVtZW50KTsKCiAgICB3aGls ZSAoKGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpICYmIGVsZW1lbnQgIT0g ZG9jdW1lbnQuYm9keSkKICAgICAgaWYgKEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVu dCwgJ3Bvc2l0aW9uJykgIT0gJ3N0YXRpYycpCiAgICAgICAgcmV0dXJuICQoZWxl bWVudCk7CgogICAgcmV0dXJuICQoZG9jdW1lbnQuYm9keSk7CiAgfSwKCiAgdmll d3BvcnRPZmZzZXQ6IGZ1bmN0aW9uKGZvckVsZW1lbnQpIHsKICAgIHZhciB2YWx1 ZVQgPSAwLCB2YWx1ZUwgPSAwOwoKICAgIHZhciBlbGVtZW50ID0gZm9yRWxlbWVu dDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8 fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRMZWZ0IHx8IDA7Cgog ICAgICAvLyBTYWZhcmkgZml4CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVu dCA9PSBkb2N1bWVudC5ib2R5ICYmCiAgICAgICAgRWxlbWVudC5nZXRTdHlsZShl bGVtZW50LCAncG9zaXRpb24nKSA9PSAnYWJzb2x1dGUnKSBicmVhazsKCiAgICB9 IHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpOwoKICAgIGVs ZW1lbnQgPSBmb3JFbGVtZW50OwogICAgZG8gewogICAgICBpZiAoIVByb3RvdHlw ZS5Ccm93c2VyLk9wZXJhIHx8IChlbGVtZW50LnRhZ05hbWUgJiYgKGVsZW1lbnQu dGFnTmFtZS50b1VwcGVyQ2FzZSgpID09ICdCT0RZJykpKSB7CiAgICAgICAgdmFs dWVUIC09IGVsZW1lbnQuc2Nyb2xsVG9wICB8fCAwOwogICAgICAgIHZhbHVlTCAt PSBlbGVtZW50LnNjcm9sbExlZnQgfHwgMDsKICAgICAgfQogICAgfSB3aGlsZSAo ZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZSk7CgogICAgcmV0dXJuIEVsZW1l bnQuX3JldHVybk9mZnNldCh2YWx1ZUwsIHZhbHVlVCk7CiAgfSwKCiAgY2xvbmVQ b3NpdGlvbjogZnVuY3Rpb24oZWxlbWVudCwgc291cmNlKSB7CiAgICB2YXIgb3B0 aW9ucyA9IE9iamVjdC5leHRlbmQoewogICAgICBzZXRMZWZ0OiAgICB0cnVlLAog ICAgICBzZXRUb3A6ICAgICB0cnVlLAogICAgICBzZXRXaWR0aDogICB0cnVlLAog ICAgICBzZXRIZWlnaHQ6ICB0cnVlLAogICAgICBvZmZzZXRUb3A6ICAwLAogICAg ICBvZmZzZXRMZWZ0OiAwCiAgICB9LCBhcmd1bWVudHNbMl0gfHwgeyB9KTsKCiAg ICAvLyBmaW5kIHBhZ2UgcG9zaXRpb24gb2Ygc291cmNlCiAgICBzb3VyY2UgPSAk KHNvdXJjZSk7CiAgICB2YXIgcCA9IHNvdXJjZS52aWV3cG9ydE9mZnNldCgpOwoK ICAgIC8vIGZpbmQgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gdXNlCiAgICBlbGVtZW50 ID0gJChlbGVtZW50KTsKICAgIHZhciBkZWx0YSA9IFswLCAwXTsKICAgIHZhciBw YXJlbnQgPSBudWxsOwogICAgLy8gZGVsdGEgWzAsMF0gd2lsbCBkbyBmaW5lIHdp dGggcG9zaXRpb246IGZpeGVkIGVsZW1lbnRzLAogICAgLy8gcG9zaXRpb246YWJz b2x1dGUgbmVlZHMgb2Zmc2V0UGFyZW50IGRlbHRhcwogICAgaWYgKEVsZW1lbnQu Z2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT0gJ2Fic29sdXRlJykgewog ICAgICBwYXJlbnQgPSBlbGVtZW50LmdldE9mZnNldFBhcmVudCgpOwogICAgICBk ZWx0YSA9IHBhcmVudC52aWV3cG9ydE9mZnNldCgpOwogICAgfQoKICAgIC8vIGNv cnJlY3QgYnkgYm9keSBvZmZzZXRzIChmaXhlcyBTYWZhcmkpCiAgICBpZiAocGFy ZW50ID09IGRvY3VtZW50LmJvZHkpIHsKICAgICAgZGVsdGFbMF0gLT0gZG9jdW1l bnQuYm9keS5vZmZzZXRMZWZ0OwogICAgICBkZWx0YVsxXSAtPSBkb2N1bWVudC5i b2R5Lm9mZnNldFRvcDsKICAgIH0KCiAgICAvLyBzZXQgcG9zaXRpb24KICAgIGlm IChvcHRpb25zLnNldExlZnQpICAgZWxlbWVudC5zdHlsZS5sZWZ0ICA9IChwWzBd IC0gZGVsdGFbMF0gKyBvcHRpb25zLm9mZnNldExlZnQpICsgJ3B4JzsKICAgIGlm IChvcHRpb25zLnNldFRvcCkgICAgZWxlbWVudC5zdHlsZS50b3AgICA9IChwWzFd IC0gZGVsdGFbMV0gKyBvcHRpb25zLm9mZnNldFRvcCkgKyAncHgnOwogICAgaWYg KG9wdGlvbnMuc2V0V2lkdGgpICBlbGVtZW50LnN0eWxlLndpZHRoID0gc291cmNl Lm9mZnNldFdpZHRoICsgJ3B4JzsKICAgIGlmIChvcHRpb25zLnNldEhlaWdodCkg ZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBzb3VyY2Uub2Zmc2V0SGVpZ2h0ICsgJ3B4 JzsKICAgIHJldHVybiBlbGVtZW50OwogIH0KfTsKCkVsZW1lbnQuTWV0aG9kcy5p ZGVudGlmeS5jb3VudGVyID0gMTsKCk9iamVjdC5leHRlbmQoRWxlbWVudC5NZXRo b2RzLCB7CiAgZ2V0RWxlbWVudHNCeVNlbGVjdG9yOiBFbGVtZW50Lk1ldGhvZHMu c2VsZWN0LAogIGNoaWxkRWxlbWVudHM6IEVsZW1lbnQuTWV0aG9kcy5pbW1lZGlh dGVEZXNjZW5kYW50cwp9KTsKCkVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9u cyA9IHsKICB3cml0ZTogewogICAgbmFtZXM6IHsKICAgICAgY2xhc3NOYW1lOiAn Y2xhc3MnLAogICAgICBodG1sRm9yOiAgICdmb3InCiAgICB9LAogICAgdmFsdWVz OiB7IH0KICB9Cn07CgppZiAoUHJvdG90eXBlLkJyb3dzZXIuT3BlcmEpIHsKICBF bGVtZW50Lk1ldGhvZHMuZ2V0U3R5bGUgPSBFbGVtZW50Lk1ldGhvZHMuZ2V0U3R5 bGUud3JhcCgKICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQsIHN0eWxlKSB7 CiAgICAgIHN3aXRjaCAoc3R5bGUpIHsKICAgICAgICBjYXNlICdsZWZ0JzogY2Fz ZSAndG9wJzogY2FzZSAncmlnaHQnOiBjYXNlICdib3R0b20nOgogICAgICAgICAg aWYgKHByb2NlZWQoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnKSBy ZXR1cm4gbnVsbDsKICAgICAgICBjYXNlICdoZWlnaHQnOiBjYXNlICd3aWR0aCc6 CiAgICAgICAgICAvLyByZXR1cm5zICcwcHgnIGZvciBoaWRkZW4gZWxlbWVudHM7 IHdlIHdhbnQgaXQgdG8gcmV0dXJuIG51bGwKICAgICAgICAgIGlmICghRWxlbWVu dC52aXNpYmxlKGVsZW1lbnQpKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICAvLyBy ZXR1cm5zIHRoZSBib3JkZXItYm94IGRpbWVuc2lvbnMgcmF0aGVyIHRoYW4gdGhl IGNvbnRlbnQtYm94CiAgICAgICAgICAvLyBkaW1lbnNpb25zLCBzbyB3ZSBzdWJ0 cmFjdCBwYWRkaW5nIGFuZCBib3JkZXJzIGZyb20gdGhlIHZhbHVlCiAgICAgICAg ICB2YXIgZGltID0gcGFyc2VJbnQocHJvY2VlZChlbGVtZW50LCBzdHlsZSksIDEw KTsKCiAgICAgICAgICBpZiAoZGltICE9PSBlbGVtZW50WydvZmZzZXQnICsgc3R5 bGUuY2FwaXRhbGl6ZSgpXSkKICAgICAgICAgICAgcmV0dXJuIGRpbSArICdweCc7 CgogICAgICAgICAgdmFyIHByb3BlcnRpZXM7CiAgICAgICAgICBpZiAoc3R5bGUg PT09ICdoZWlnaHQnKSB7CiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbJ2JvcmRl ci10b3Atd2lkdGgnLCAncGFkZGluZy10b3AnLAogICAgICAgICAgICAgJ3BhZGRp bmctYm90dG9tJywgJ2JvcmRlci1ib3R0b20td2lkdGgnXTsKICAgICAgICAgIH0K ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICBwcm9wZXJ0aWVzID0gWydib3Jk ZXItbGVmdC13aWR0aCcsICdwYWRkaW5nLWxlZnQnLAogICAgICAgICAgICAgJ3Bh ZGRpbmctcmlnaHQnLCAnYm9yZGVyLXJpZ2h0LXdpZHRoJ107CiAgICAgICAgICB9 CiAgICAgICAgICByZXR1cm4gcHJvcGVydGllcy5pbmplY3QoZGltLCBmdW5jdGlv bihtZW1vLCBwcm9wZXJ0eSkgewogICAgICAgICAgICB2YXIgdmFsID0gcHJvY2Vl ZChlbGVtZW50LCBwcm9wZXJ0eSk7CiAgICAgICAgICAgIHJldHVybiB2YWwgPT09 IG51bGwgPyBtZW1vIDogbWVtbyAtIHBhcnNlSW50KHZhbCwgMTApOwogICAgICAg ICAgfSkgKyAncHgnOwogICAgICAgIGRlZmF1bHQ6IHJldHVybiBwcm9jZWVkKGVs ZW1lbnQsIHN0eWxlKTsKICAgICAgfQogICAgfQogICk7CgogIEVsZW1lbnQuTWV0 aG9kcy5yZWFkQXR0cmlidXRlID0gRWxlbWVudC5NZXRob2RzLnJlYWRBdHRyaWJ1 dGUud3JhcCgKICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQsIGF0dHJpYnV0 ZSkgewogICAgICBpZiAoYXR0cmlidXRlID09PSAndGl0bGUnKSByZXR1cm4gZWxl bWVudC50aXRsZTsKICAgICAgcmV0dXJuIHByb2NlZWQoZWxlbWVudCwgYXR0cmli dXRlKTsKICAgIH0KICApOwp9CgplbHNlIGlmIChQcm90b3R5cGUuQnJvd3Nlci5J RSkgewogIC8vIElFIGRvZXNuJ3QgcmVwb3J0IG9mZnNldHMgY29ycmVjdGx5IGZv ciBzdGF0aWMgZWxlbWVudHMsIHNvIHdlIGNoYW5nZSB0aGVtCiAgLy8gdG8gInJl bGF0aXZlIiB0byBnZXQgdGhlIHZhbHVlcywgdGhlbiBjaGFuZ2UgdGhlbSBiYWNr LgogIEVsZW1lbnQuTWV0aG9kcy5nZXRPZmZzZXRQYXJlbnQgPSBFbGVtZW50Lk1l dGhvZHMuZ2V0T2Zmc2V0UGFyZW50LndyYXAoCiAgICBmdW5jdGlvbihwcm9jZWVk LCBlbGVtZW50KSB7CiAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgICAv LyBJRSB0aHJvd3MgYW4gZXJyb3IgaWYgZWxlbWVudCBpcyBub3QgaW4gZG9jdW1l bnQKICAgICAgdHJ5IHsgZWxlbWVudC5vZmZzZXRQYXJlbnQgfQogICAgICBjYXRj aChlKSB7IHJldHVybiAkKGRvY3VtZW50LmJvZHkpIH0KICAgICAgdmFyIHBvc2l0 aW9uID0gZWxlbWVudC5nZXRTdHlsZSgncG9zaXRpb24nKTsKICAgICAgaWYgKHBv c2l0aW9uICE9PSAnc3RhdGljJykgcmV0dXJuIHByb2NlZWQoZWxlbWVudCk7CiAg ICAgIGVsZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KTsK ICAgICAgdmFyIHZhbHVlID0gcHJvY2VlZChlbGVtZW50KTsKICAgICAgZWxlbWVu dC5zZXRTdHlsZSh7IHBvc2l0aW9uOiBwb3NpdGlvbiB9KTsKICAgICAgcmV0dXJu IHZhbHVlOwogICAgfQogICk7CgogICR3KCdwb3NpdGlvbmVkT2Zmc2V0IHZpZXdw b3J0T2Zmc2V0JykuZWFjaChmdW5jdGlvbihtZXRob2QpIHsKICAgIEVsZW1lbnQu TWV0aG9kc1ttZXRob2RdID0gRWxlbWVudC5NZXRob2RzW21ldGhvZF0ud3JhcCgK ICAgICAgZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVudCkgewogICAgICAgIGVsZW1l bnQgPSAkKGVsZW1lbnQpOwogICAgICAgIHRyeSB7IGVsZW1lbnQub2Zmc2V0UGFy ZW50IH0KICAgICAgICBjYXRjaChlKSB7IHJldHVybiBFbGVtZW50Ll9yZXR1cm5P ZmZzZXQoMCwwKSB9CiAgICAgICAgdmFyIHBvc2l0aW9uID0gZWxlbWVudC5nZXRT dHlsZSgncG9zaXRpb24nKTsKICAgICAgICBpZiAocG9zaXRpb24gIT09ICdzdGF0 aWMnKSByZXR1cm4gcHJvY2VlZChlbGVtZW50KTsKICAgICAgICAvLyBUcmlnZ2Vy IGhhc0xheW91dCBvbiB0aGUgb2Zmc2V0IHBhcmVudCBzbyB0aGF0IElFNiByZXBv cnRzCiAgICAgICAgLy8gYWNjdXJhdGUgb2Zmc2V0VG9wIGFuZCBvZmZzZXRMZWZ0 IHZhbHVlcyBmb3IgcG9zaXRpb246IGZpeGVkLgogICAgICAgIHZhciBvZmZzZXRQ YXJlbnQgPSBlbGVtZW50LmdldE9mZnNldFBhcmVudCgpOwogICAgICAgIGlmIChv ZmZzZXRQYXJlbnQgJiYgb2Zmc2V0UGFyZW50LmdldFN0eWxlKCdwb3NpdGlvbicp ID09PSAnZml4ZWQnKQogICAgICAgICAgb2Zmc2V0UGFyZW50LnNldFN0eWxlKHsg em9vbTogMSB9KTsKICAgICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRpb246 ICdyZWxhdGl2ZScgfSk7CiAgICAgICAgdmFyIHZhbHVlID0gcHJvY2VlZChlbGVt ZW50KTsKICAgICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRpb246IHBvc2l0 aW9uIH0pOwogICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgKTsKICB9 KTsKCiAgRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVPZmZzZXQgPSBFbGVtZW50 Lk1ldGhvZHMuY3VtdWxhdGl2ZU9mZnNldC53cmFwKAogICAgZnVuY3Rpb24ocHJv Y2VlZCwgZWxlbWVudCkgewogICAgICB0cnkgeyBlbGVtZW50Lm9mZnNldFBhcmVu dCB9CiAgICAgIGNhdGNoKGUpIHsgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNl dCgwLDApIH0KICAgICAgcmV0dXJuIHByb2NlZWQoZWxlbWVudCk7CiAgICB9CiAg KTsKCiAgRWxlbWVudC5NZXRob2RzLmdldFN0eWxlID0gZnVuY3Rpb24oZWxlbWVu dCwgc3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgc3R5bGUg PSAoc3R5bGUgPT0gJ2Zsb2F0JyB8fCBzdHlsZSA9PSAnY3NzRmxvYXQnKSA/ICdz dHlsZUZsb2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2YXIgdmFsdWUgPSBl bGVtZW50LnN0eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUgJiYgZWxlbWVudC5j dXJyZW50U3R5bGUpIHZhbHVlID0gZWxlbWVudC5jdXJyZW50U3R5bGVbc3R5bGVd OwoKICAgIGlmIChzdHlsZSA9PSAnb3BhY2l0eScpIHsKICAgICAgaWYgKHZhbHVl ID0gKGVsZW1lbnQuZ2V0U3R5bGUoJ2ZpbHRlcicpIHx8ICcnKS5tYXRjaCgvYWxw aGFcKG9wYWNpdHk9KC4qKVwpLykpCiAgICAgICAgaWYgKHZhbHVlWzFdKSByZXR1 cm4gcGFyc2VGbG9hdCh2YWx1ZVsxXSkgLyAxMDA7CiAgICAgIHJldHVybiAxLjA7 CiAgICB9CgogICAgaWYgKHZhbHVlID09ICdhdXRvJykgewogICAgICBpZiAoKHN0 eWxlID09ICd3aWR0aCcgfHwgc3R5bGUgPT0gJ2hlaWdodCcpICYmIChlbGVtZW50 LmdldFN0eWxlKCdkaXNwbGF5JykgIT0gJ25vbmUnKSkKICAgICAgICByZXR1cm4g ZWxlbWVudFsnb2Zmc2V0JyArIHN0eWxlLmNhcGl0YWxpemUoKV0gKyAncHgnOwog ICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIHJldHVybiB2YWx1ZTsKICB9OwoK ICBFbGVtZW50Lk1ldGhvZHMuc2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQs IHZhbHVlKSB7CiAgICBmdW5jdGlvbiBzdHJpcEFscGhhKGZpbHRlcil7CiAgICAg IHJldHVybiBmaWx0ZXIucmVwbGFjZSgvYWxwaGFcKFteXCldKlwpL2dpLCcnKTsK ICAgIH0KICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGN1cnJlbnRT dHlsZSA9IGVsZW1lbnQuY3VycmVudFN0eWxlOwogICAgaWYgKChjdXJyZW50U3R5 bGUgJiYgIWN1cnJlbnRTdHlsZS5oYXNMYXlvdXQpIHx8CiAgICAgICghY3VycmVu dFN0eWxlICYmIGVsZW1lbnQuc3R5bGUuem9vbSA9PSAnbm9ybWFsJykpCiAgICAg ICAgZWxlbWVudC5zdHlsZS56b29tID0gMTsKCiAgICB2YXIgZmlsdGVyID0gZWxl bWVudC5nZXRTdHlsZSgnZmlsdGVyJyksIHN0eWxlID0gZWxlbWVudC5zdHlsZTsK ICAgIGlmICh2YWx1ZSA9PSAxIHx8IHZhbHVlID09PSAnJykgewogICAgICAoZmls dGVyID0gc3RyaXBBbHBoYShmaWx0ZXIpKSA/CiAgICAgICAgc3R5bGUuZmlsdGVy ID0gZmlsdGVyIDogc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdmaWx0ZXInKTsKICAg ICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMC4wMDAw MSkgdmFsdWUgPSAwOwogICAgc3R5bGUuZmlsdGVyID0gc3RyaXBBbHBoYShmaWx0 ZXIpICsKICAgICAgJ2FscGhhKG9wYWNpdHk9JyArICh2YWx1ZSAqIDEwMCkgKyAn KSc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9OwoKICBFbGVtZW50Ll9hdHRyaWJ1 dGVUcmFuc2xhdGlvbnMgPSB7CiAgICByZWFkOiB7CiAgICAgIG5hbWVzOiB7CiAg ICAgICAgJ2NsYXNzJzogJ2NsYXNzTmFtZScsCiAgICAgICAgJ2Zvcic6ICAgJ2h0 bWxGb3InCiAgICAgIH0sCiAgICAgIHZhbHVlczogewogICAgICAgIF9nZXRBdHRy OiBmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsKICAgICAgICAgIHJldHVy biBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIDIpOwogICAgICAgIH0s CiAgICAgICAgX2dldEF0dHJOb2RlOiBmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1 dGUpIHsKICAgICAgICAgIHZhciBub2RlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVO b2RlKGF0dHJpYnV0ZSk7CiAgICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGUudmFs dWUgOiAiIjsKICAgICAgICB9LAogICAgICAgIF9nZXRFdjogZnVuY3Rpb24oZWxl bWVudCwgYXR0cmlidXRlKSB7CiAgICAgICAgICBhdHRyaWJ1dGUgPSBlbGVtZW50 LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogICAgICAgICAgcmV0dXJuIGF0dHJp YnV0ZSA/IGF0dHJpYnV0ZS50b1N0cmluZygpLnNsaWNlKDIzLCAtMikgOiBudWxs OwogICAgICAgIH0sCiAgICAgICAgX2ZsYWc6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0 dHJpYnV0ZSkgewogICAgICAgICAgcmV0dXJuICQoZWxlbWVudCkuaGFzQXR0cmli dXRlKGF0dHJpYnV0ZSkgPyBhdHRyaWJ1dGUgOiBudWxsOwogICAgICAgIH0sCiAg ICAgICAgc3R5bGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgIHJldHVy biBlbGVtZW50LnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKTsKICAgICAgICB9 LAogICAgICAgIHRpdGxlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgICBy ZXR1cm4gZWxlbWVudC50aXRsZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9 OwoKICBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMud3JpdGUgPSB7CiAg ICBuYW1lczogT2JqZWN0LmV4dGVuZCh7CiAgICAgIGNlbGxwYWRkaW5nOiAnY2Vs bFBhZGRpbmcnLAogICAgICBjZWxsc3BhY2luZzogJ2NlbGxTcGFjaW5nJwogICAg fSwgRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLnJlYWQubmFtZXMpLAog ICAgdmFsdWVzOiB7CiAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHZh bHVlKSB7CiAgICAgICAgZWxlbWVudC5jaGVja2VkID0gISF2YWx1ZTsKICAgICAg fSwKCiAgICAgIHN0eWxlOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAg ICAgIGVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IHZhbHVlID8gdmFsdWUgOiAnJzsK ICAgICAgfQogICAgfQogIH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0 aW9ucy5oYXMgPSB7fTsKCiAgJHcoJ2NvbFNwYW4gcm93U3BhbiB2QWxpZ24gZGF0 ZVRpbWUgYWNjZXNzS2V5IHRhYkluZGV4ICcgKwogICAgICAnZW5jVHlwZSBtYXhM ZW5ndGggcmVhZE9ubHkgbG9uZ0Rlc2MgZnJhbWVCb3JkZXInKS5lYWNoKGZ1bmN0 aW9uKGF0dHIpIHsKICAgIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucy53 cml0ZS5uYW1lc1thdHRyLnRvTG93ZXJDYXNlKCldID0gYXR0cjsKICAgIEVsZW1l bnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucy5oYXNbYXR0ci50b0xvd2VyQ2FzZSgp XSA9IGF0dHI7CiAgfSk7CgogIChmdW5jdGlvbih2KSB7CiAgICBPYmplY3QuZXh0 ZW5kKHYsIHsKICAgICAgaHJlZjogICAgICAgIHYuX2dldEF0dHIsCiAgICAgIHNy YzogICAgICAgICB2Ll9nZXRBdHRyLAogICAgICB0eXBlOiAgICAgICAgdi5fZ2V0 QXR0ciwKICAgICAgYWN0aW9uOiAgICAgIHYuX2dldEF0dHJOb2RlLAogICAgICBk aXNhYmxlZDogICAgdi5fZmxhZywKICAgICAgY2hlY2tlZDogICAgIHYuX2ZsYWcs CiAgICAgIHJlYWRvbmx5OiAgICB2Ll9mbGFnLAogICAgICBtdWx0aXBsZTogICAg di5fZmxhZywKICAgICAgb25sb2FkOiAgICAgIHYuX2dldEV2LAogICAgICBvbnVu bG9hZDogICAgdi5fZ2V0RXYsCiAgICAgIG9uY2xpY2s6ICAgICB2Ll9nZXRFdiwK ICAgICAgb25kYmxjbGljazogIHYuX2dldEV2LAogICAgICBvbm1vdXNlZG93bjog di5fZ2V0RXYsCiAgICAgIG9ubW91c2V1cDogICB2Ll9nZXRFdiwKICAgICAgb25t b3VzZW92ZXI6IHYuX2dldEV2LAogICAgICBvbm1vdXNlbW92ZTogdi5fZ2V0RXYs CiAgICAgIG9ubW91c2VvdXQ6ICB2Ll9nZXRFdiwKICAgICAgb25mb2N1czogICAg IHYuX2dldEV2LAogICAgICBvbmJsdXI6ICAgICAgdi5fZ2V0RXYsCiAgICAgIG9u a2V5cHJlc3M6ICB2Ll9nZXRFdiwKICAgICAgb25rZXlkb3duOiAgIHYuX2dldEV2 LAogICAgICBvbmtleXVwOiAgICAgdi5fZ2V0RXYsCiAgICAgIG9uc3VibWl0OiAg ICB2Ll9nZXRFdiwKICAgICAgb25yZXNldDogICAgIHYuX2dldEV2LAogICAgICBv bnNlbGVjdDogICAgdi5fZ2V0RXYsCiAgICAgIG9uY2hhbmdlOiAgICB2Ll9nZXRF dgogICAgfSk7CiAgfSkoRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLnJl YWQudmFsdWVzKTsKfQoKZWxzZSBpZiAoUHJvdG90eXBlLkJyb3dzZXIuR2Vja28g JiYgL3J2OjFcLjhcLjAvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsKICBF bGVtZW50Lk1ldGhvZHMuc2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZh bHVlKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGVsZW1lbnQuc3R5 bGUub3BhY2l0eSA9ICh2YWx1ZSA9PSAxKSA/IDAuOTk5OTk5IDoKICAgICAgKHZh bHVlID09PSAnJykgPyAnJyA6ICh2YWx1ZSA8IDAuMDAwMDEpID8gMCA6IHZhbHVl OwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfTsKfQoKZWxzZSBpZiAoUHJvdG90eXBl LkJyb3dzZXIuV2ViS2l0KSB7CiAgRWxlbWVudC5NZXRob2RzLnNldE9wYWNpdHkg PSBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxl bWVudCk7CiAgICBlbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAodmFsdWUgPT0gMSB8 fCB2YWx1ZSA9PT0gJycpID8gJycgOgogICAgICAodmFsdWUgPCAwLjAwMDAxKSA/ IDAgOiB2YWx1ZTsKCiAgICBpZiAodmFsdWUgPT0gMSkKICAgICAgaWYoZWxlbWVu dC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT0gJ0lNRycgJiYgZWxlbWVudC53aWR0 aCkgewogICAgICAgIGVsZW1lbnQud2lkdGgrKzsgZWxlbWVudC53aWR0aC0tOwog ICAgICB9IGVsc2UgdHJ5IHsKICAgICAgICB2YXIgbiA9IGRvY3VtZW50LmNyZWF0 ZVRleHROb2RlKCcgJyk7CiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChuKTsK ICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKG4pOwogICAgICB9IGNhdGNoIChl KSB7IH0KCiAgICByZXR1cm4gZWxlbWVudDsKICB9OwoKICAvLyBTYWZhcmkgcmV0 dXJucyBtYXJnaW5zIG9uIGJvZHkgd2hpY2ggaXMgaW5jb3JyZWN0IGlmIHRoZSBj aGlsZCBpcyBhYnNvbHV0ZWx5CiAgLy8gcG9zaXRpb25lZC4gIEZvciBwZXJmb3Jt YW5jZSByZWFzb25zLCByZWRlZmluZSBFbGVtZW50I2N1bXVsYXRpdmVPZmZzZXQg Zm9yCiAgLy8gS0hUTUwvV2ViS2l0IG9ubHkuCiAgRWxlbWVudC5NZXRob2RzLmN1 bXVsYXRpdmVPZmZzZXQgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFs dWVUID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVs ZW1lbnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5v ZmZzZXRMZWZ0IHx8IDA7CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9 PSBkb2N1bWVudC5ib2R5KQogICAgICAgIGlmIChFbGVtZW50LmdldFN0eWxlKGVs ZW1lbnQsICdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIGJyZWFrOwoKICAgICAg ZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgfSB3aGlsZSAoZWxl bWVudCk7CgogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCh2YWx1ZUws IHZhbHVlVCk7CiAgfTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFIHx8IFBy b3RvdHlwZS5Ccm93c2VyLk9wZXJhKSB7CiAgLy8gSUUgYW5kIE9wZXJhIGFyZSBt aXNzaW5nIC5pbm5lckhUTUwgc3VwcG9ydCBmb3IgVEFCTEUtcmVsYXRlZCBhbmQg U0VMRUNUIGVsZW1lbnRzCiAgRWxlbWVudC5NZXRob2RzLnVwZGF0ZSA9IGZ1bmN0 aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQp OwoKICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50 ID0gY29udGVudC50b0VsZW1lbnQoKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50 KGNvbnRlbnQpKSByZXR1cm4gZWxlbWVudC51cGRhdGUoKS5pbnNlcnQoY29udGVu dCk7CgogICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29udGVudCk7CiAgICB2 YXIgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAg IGlmICh0YWdOYW1lIGluIEVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucy50 YWdzKSB7CiAgICAgICRBKGVsZW1lbnQuY2hpbGROb2RlcykuZWFjaChmdW5jdGlv bihub2RlKSB7IGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSkgfSk7CiAgICAgIEVs ZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBj b250ZW50LnN0cmlwU2NyaXB0cygpKQogICAgICAgIC5lYWNoKGZ1bmN0aW9uKG5v ZGUpIHsgZWxlbWVudC5hcHBlbmRDaGlsZChub2RlKSB9KTsKICAgIH0KICAgIGVs c2UgZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwoK ICAgIGNvbnRlbnQuZXZhbFNjcmlwdHMuYmluZChjb250ZW50KS5kZWZlcigpOwog ICAgcmV0dXJuIGVsZW1lbnQ7CiAgfTsKfQoKaWYgKCdvdXRlckhUTUwnIGluIGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB7CiAgRWxlbWVudC5NZXRob2Rz LnJlcGxhY2UgPSBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVt ZW50ID0gJChlbGVtZW50KTsKCiAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRv RWxlbWVudCkgY29udGVudCA9IGNvbnRlbnQudG9FbGVtZW50KCk7CiAgICBpZiAo T2JqZWN0LmlzRWxlbWVudChjb250ZW50KSkgewogICAgICBlbGVtZW50LnBhcmVu dE5vZGUucmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgICByZXR1 cm4gZWxlbWVudDsKICAgIH0KCiAgICBjb250ZW50ID0gT2JqZWN0LnRvSFRNTChj b250ZW50KTsKICAgIHZhciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGUsIHRh Z05hbWUgPSBwYXJlbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmIChF bGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMudGFnc1t0YWdOYW1lXSkgewog ICAgICB2YXIgbmV4dFNpYmxpbmcgPSBlbGVtZW50Lm5leHQoKTsKICAgICAgdmFy IGZyYWdtZW50cyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxl bWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKICAgICAgcGFy ZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpOwogICAgICBpZiAobmV4dFNpYmxpbmcp CiAgICAgICAgZnJhZ21lbnRzLmVhY2goZnVuY3Rpb24obm9kZSkgeyBwYXJlbnQu aW5zZXJ0QmVmb3JlKG5vZGUsIG5leHRTaWJsaW5nKSB9KTsKICAgICAgZWxzZQog ICAgICAgIGZyYWdtZW50cy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgcGFyZW50LmFw cGVuZENoaWxkKG5vZGUpIH0pOwogICAgfQogICAgZWxzZSBlbGVtZW50Lm91dGVy SFRNTCA9IGNvbnRlbnQuc3RyaXBTY3JpcHRzKCk7CgogICAgY29udGVudC5ldmFs U2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVu dDsKICB9Owp9CgpFbGVtZW50Ll9yZXR1cm5PZmZzZXQgPSBmdW5jdGlvbihsLCB0 KSB7CiAgdmFyIHJlc3VsdCA9IFtsLCB0XTsKICByZXN1bHQubGVmdCA9IGw7CiAg cmVzdWx0LnRvcCA9IHQ7CiAgcmV0dXJuIHJlc3VsdDsKfTsKCkVsZW1lbnQuX2dl dENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUs IGh0bWwpIHsKICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpLCB0ID0gRWxl bWVudC5faW5zZXJ0aW9uVHJhbnNsYXRpb25zLnRhZ3NbdGFnTmFtZV07CiAgaWYg KHQpIHsKICAgIGRpdi5pbm5lckhUTUwgPSB0WzBdICsgaHRtbCArIHRbMV07CiAg ICB0WzJdLnRpbWVzKGZ1bmN0aW9uKCkgeyBkaXYgPSBkaXYuZmlyc3RDaGlsZCB9 KTsKICB9IGVsc2UgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgcmV0dXJuICRBKGRp di5jaGlsZE5vZGVzKTsKfTsKCkVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9u cyA9IHsKICBiZWZvcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVs ZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgZWxlbWVudCk7CiAg fSwKICB0b3A6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQu aW5zZXJ0QmVmb3JlKG5vZGUsIGVsZW1lbnQuZmlyc3RDaGlsZCk7CiAgfSwKICBi b3R0b206IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuYXBw ZW5kQ2hpbGQobm9kZSk7CiAgfSwKICBhZnRlcjogZnVuY3Rpb24oZWxlbWVudCwg bm9kZSkgewogICAgZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2Rl LCBlbGVtZW50Lm5leHRTaWJsaW5nKTsKICB9LAogIHRhZ3M6IHsKICAgIFRBQkxF OiAgWyc8dGFibGU+JywgICAgICAgICAgICAgICAgJzwvdGFibGU+JywgICAgICAg ICAgICAgICAgICAgMV0sCiAgICBUQk9EWTogIFsnPHRhYmxlPjx0Ym9keT4nLCAg ICAgICAgICc8L3Rib2R5PjwvdGFibGU+JywgICAgICAgICAgIDJdLAogICAgVFI6 ICAgICBbJzx0YWJsZT48dGJvZHk+PHRyPicsICAgICAnPC90cj48L3Rib2R5Pjwv dGFibGU+JywgICAgICAzXSwKICAgIFREOiAgICAgWyc8dGFibGU+PHRib2R5Pjx0 cj48dGQ+JywgJzwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+JywgNF0sCiAgICBT RUxFQ1Q6IFsnPHNlbGVjdD4nLCAgICAgICAgICAgICAgICc8L3NlbGVjdD4nLCAg ICAgICAgICAgICAgICAgIDFdCiAgfQp9OwoKKGZ1bmN0aW9uKCkgewogIE9iamVj dC5leHRlbmQodGhpcy50YWdzLCB7CiAgICBUSEVBRDogdGhpcy50YWdzLlRCT0RZ LAogICAgVEZPT1Q6IHRoaXMudGFncy5UQk9EWSwKICAgIFRIOiAgICB0aGlzLnRh Z3MuVEQKICB9KTsKfSkuY2FsbChFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlv bnMpOwoKRWxlbWVudC5NZXRob2RzLlNpbXVsYXRlZCA9IHsKICBoYXNBdHRyaWJ1 dGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgYXR0cmlidXRl ID0gRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyaWJ1dGVd IHx8IGF0dHJpYnV0ZTsKICAgIHZhciBub2RlID0gJChlbGVtZW50KS5nZXRBdHRy aWJ1dGVOb2RlKGF0dHJpYnV0ZSk7CiAgICByZXR1cm4gISEobm9kZSAmJiBub2Rl LnNwZWNpZmllZCk7CiAgfQp9OwoKRWxlbWVudC5NZXRob2RzLkJ5VGFnID0geyB9 OwoKT2JqZWN0LmV4dGVuZChFbGVtZW50LCBFbGVtZW50Lk1ldGhvZHMpOwoKaWYg KCFQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLkVsZW1lbnRFeHRlbnNpb25zICYm CiAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVsnX19wcm90b19fJ10p IHsKICB3aW5kb3cuSFRNTEVsZW1lbnQgPSB7IH07CiAgd2luZG93LkhUTUxFbGVt ZW50LnByb3RvdHlwZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpWydf X3Byb3RvX18nXTsKICBQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLkVsZW1lbnRF eHRlbnNpb25zID0gdHJ1ZTsKfQoKRWxlbWVudC5leHRlbmQgPSAoZnVuY3Rpb24o KSB7CiAgaWYgKFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuU3BlY2lmaWNFbGVt ZW50RXh0ZW5zaW9ucykKICAgIHJldHVybiBQcm90b3R5cGUuSzsKCiAgdmFyIE1l dGhvZHMgPSB7IH0sIEJ5VGFnID0gRWxlbWVudC5NZXRob2RzLkJ5VGFnOwoKICB2 YXIgZXh0ZW5kID0gT2JqZWN0LmV4dGVuZChmdW5jdGlvbihlbGVtZW50KSB7CiAg ICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC5fZXh0ZW5kZWRCeVByb3RvdHlwZSB8 fAogICAgICAgIGVsZW1lbnQubm9kZVR5cGUgIT0gMSB8fCBlbGVtZW50ID09IHdp bmRvdykgcmV0dXJuIGVsZW1lbnQ7CgogICAgdmFyIG1ldGhvZHMgPSBPYmplY3Qu Y2xvbmUoTWV0aG9kcyksCiAgICAgIHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWUu dG9VcHBlckNhc2UoKSwgcHJvcGVydHksIHZhbHVlOwoKICAgIC8vIGV4dGVuZCBt ZXRob2RzIGZvciBzcGVjaWZpYyB0YWdzCiAgICBpZiAoQnlUYWdbdGFnTmFtZV0p IE9iamVjdC5leHRlbmQobWV0aG9kcywgQnlUYWdbdGFnTmFtZV0pOwoKICAgIGZv ciAocHJvcGVydHkgaW4gbWV0aG9kcykgewogICAgICB2YWx1ZSA9IG1ldGhvZHNb cHJvcGVydHldOwogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24odmFsdWUpICYm ICEocHJvcGVydHkgaW4gZWxlbWVudCkpCiAgICAgICAgZWxlbWVudFtwcm9wZXJ0 eV0gPSB2YWx1ZS5tZXRob2RpemUoKTsKICAgIH0KCiAgICBlbGVtZW50Ll9leHRl bmRlZEJ5UHJvdG90eXBlID0gUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247CiAgICBy ZXR1cm4gZWxlbWVudDsKCiAgfSwgewogICAgcmVmcmVzaDogZnVuY3Rpb24oKSB7 CiAgICAgIC8vIGV4dGVuZCBtZXRob2RzIGZvciBhbGwgdGFncyAoU2FmYXJpIGRv ZXNuJ3QgbmVlZCB0aGlzKQogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVh dHVyZXMuRWxlbWVudEV4dGVuc2lvbnMpIHsKICAgICAgICBPYmplY3QuZXh0ZW5k KE1ldGhvZHMsIEVsZW1lbnQuTWV0aG9kcyk7CiAgICAgICAgT2JqZWN0LmV4dGVu ZChNZXRob2RzLCBFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkKTsKICAgICAgfQog ICAgfQogIH0pOwoKICBleHRlbmQucmVmcmVzaCgpOwogIHJldHVybiBleHRlbmQ7 Cn0pKCk7CgpFbGVtZW50Lmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQs IGF0dHJpYnV0ZSkgewogIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSkgcmV0dXJu IGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAgcmV0dXJuIEVsZW1l bnQuTWV0aG9kcy5TaW11bGF0ZWQuaGFzQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJp YnV0ZSk7Cn07CgpFbGVtZW50LmFkZE1ldGhvZHMgPSBmdW5jdGlvbihtZXRob2Rz KSB7CiAgdmFyIEYgPSBQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLCBUID0gRWxl bWVudC5NZXRob2RzLkJ5VGFnOwoKICBpZiAoIW1ldGhvZHMpIHsKICAgIE9iamVj dC5leHRlbmQoRm9ybSwgRm9ybS5NZXRob2RzKTsKICAgIE9iamVjdC5leHRlbmQo Rm9ybS5FbGVtZW50LCBGb3JtLkVsZW1lbnQuTWV0aG9kcyk7CiAgICBPYmplY3Qu ZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcy5CeVRhZywgewogICAgICAiRk9STSI6ICAg ICBPYmplY3QuY2xvbmUoRm9ybS5NZXRob2RzKSwKICAgICAgIklOUFVUIjogICAg T2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlNFTEVD VCI6ICAgT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAg IlRFWFRBUkVBIjogT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKQog ICAgfSk7CiAgfQoKICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7CiAgICB2 YXIgdGFnTmFtZSA9IG1ldGhvZHM7CiAgICBtZXRob2RzID0gYXJndW1lbnRzWzFd OwogIH0KCiAgaWYgKCF0YWdOYW1lKSBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0 aG9kcywgbWV0aG9kcyB8fCB7IH0pOwogIGVsc2UgewogICAgaWYgKE9iamVjdC5p c0FycmF5KHRhZ05hbWUpKSB0YWdOYW1lLmVhY2goZXh0ZW5kKTsKICAgIGVsc2Ug ZXh0ZW5kKHRhZ05hbWUpOwogIH0KCiAgZnVuY3Rpb24gZXh0ZW5kKHRhZ05hbWUp IHsKICAgIHRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICBpZiAo IUVsZW1lbnQuTWV0aG9kcy5CeVRhZ1t0YWdOYW1lXSkKICAgICAgRWxlbWVudC5N ZXRob2RzLkJ5VGFnW3RhZ05hbWVdID0geyB9OwogICAgT2JqZWN0LmV4dGVuZChF bGVtZW50Lk1ldGhvZHMuQnlUYWdbdGFnTmFtZV0sIG1ldGhvZHMpOwogIH0KCiAg ZnVuY3Rpb24gY29weShtZXRob2RzLCBkZXN0aW5hdGlvbiwgb25seUlmQWJzZW50 KSB7CiAgICBvbmx5SWZBYnNlbnQgPSBvbmx5SWZBYnNlbnQgfHwgZmFsc2U7CiAg ICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBtZXRob2RzKSB7CiAgICAgIHZhciB2YWx1 ZSA9IG1ldGhvZHNbcHJvcGVydHldOwogICAgICBpZiAoIU9iamVjdC5pc0Z1bmN0 aW9uKHZhbHVlKSkgY29udGludWU7CiAgICAgIGlmICghb25seUlmQWJzZW50IHx8 ICEocHJvcGVydHkgaW4gZGVzdGluYXRpb24pKQogICAgICAgIGRlc3RpbmF0aW9u W3Byb3BlcnR5XSA9IHZhbHVlLm1ldGhvZGl6ZSgpOwogICAgfQogIH0KCiAgZnVu Y3Rpb24gZmluZERPTUNsYXNzKHRhZ05hbWUpIHsKICAgIHZhciBrbGFzczsKICAg IHZhciB0cmFucyA9IHsKICAgICAgIk9QVEdST1VQIjogIk9wdEdyb3VwIiwgIlRF WFRBUkVBIjogIlRleHRBcmVhIiwgIlAiOiAiUGFyYWdyYXBoIiwKICAgICAgIkZJ RUxEU0VUIjogIkZpZWxkU2V0IiwgIlVMIjogIlVMaXN0IiwgIk9MIjogIk9MaXN0 IiwgIkRMIjogIkRMaXN0IiwKICAgICAgIkRJUiI6ICJEaXJlY3RvcnkiLCAiSDEi OiAiSGVhZGluZyIsICJIMiI6ICJIZWFkaW5nIiwgIkgzIjogIkhlYWRpbmciLAog ICAgICAiSDQiOiAiSGVhZGluZyIsICJINSI6ICJIZWFkaW5nIiwgIkg2IjogIkhl YWRpbmciLCAiUSI6ICJRdW90ZSIsCiAgICAgICJJTlMiOiAiTW9kIiwgIkRFTCI6 ICJNb2QiLCAiQSI6ICJBbmNob3IiLCAiSU1HIjogIkltYWdlIiwgIkNBUFRJT04i OgogICAgICAiVGFibGVDYXB0aW9uIiwgIkNPTCI6ICJUYWJsZUNvbCIsICJDT0xH Uk9VUCI6ICJUYWJsZUNvbCIsICJUSEVBRCI6CiAgICAgICJUYWJsZVNlY3Rpb24i LCAiVEZPT1QiOiAiVGFibGVTZWN0aW9uIiwgIlRCT0RZIjogIlRhYmxlU2VjdGlv biIsICJUUiI6CiAgICAgICJUYWJsZVJvdyIsICJUSCI6ICJUYWJsZUNlbGwiLCAi VEQiOiAiVGFibGVDZWxsIiwgIkZSQU1FU0VUIjoKICAgICAgIkZyYW1lU2V0Iiwg IklGUkFNRSI6ICJJRnJhbWUiCiAgICB9OwogICAgaWYgKHRyYW5zW3RhZ05hbWVd KSBrbGFzcyA9ICdIVE1MJyArIHRyYW5zW3RhZ05hbWVdICsgJ0VsZW1lbnQnOwog ICAgaWYgKHdpbmRvd1trbGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAg a2xhc3MgPSAnSFRNTCcgKyB0YWdOYW1lICsgJ0VsZW1lbnQnOwogICAgaWYgKHdp bmRvd1trbGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3MgPSAn SFRNTCcgKyB0YWdOYW1lLmNhcGl0YWxpemUoKSArICdFbGVtZW50JzsKICAgIGlm ICh3aW5kb3dba2xhc3NdKSByZXR1cm4gd2luZG93W2tsYXNzXTsKCiAgICB3aW5k b3dba2xhc3NdID0geyB9OwogICAgd2luZG93W2tsYXNzXS5wcm90b3R5cGUgPSBk b2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpWydfX3Byb3RvX18nXTsKICAg IHJldHVybiB3aW5kb3dba2xhc3NdOwogIH0KCiAgaWYgKEYuRWxlbWVudEV4dGVu c2lvbnMpIHsKICAgIGNvcHkoRWxlbWVudC5NZXRob2RzLCBIVE1MRWxlbWVudC5w cm90b3R5cGUpOwogICAgY29weShFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkLCBI VE1MRWxlbWVudC5wcm90b3R5cGUsIHRydWUpOwogIH0KCiAgaWYgKEYuU3BlY2lm aWNFbGVtZW50RXh0ZW5zaW9ucykgewogICAgZm9yICh2YXIgdGFnIGluIEVsZW1l bnQuTWV0aG9kcy5CeVRhZykgewogICAgICB2YXIga2xhc3MgPSBmaW5kRE9NQ2xh c3ModGFnKTsKICAgICAgaWYgKE9iamVjdC5pc1VuZGVmaW5lZChrbGFzcykpIGNv bnRpbnVlOwogICAgICBjb3B5KFRbdGFnXSwga2xhc3MucHJvdG90eXBlKTsKICAg IH0KICB9CgogIE9iamVjdC5leHRlbmQoRWxlbWVudCwgRWxlbWVudC5NZXRob2Rz KTsKICBkZWxldGUgRWxlbWVudC5CeVRhZzsKCiAgaWYgKEVsZW1lbnQuZXh0ZW5k LnJlZnJlc2gpIEVsZW1lbnQuZXh0ZW5kLnJlZnJlc2goKTsKICBFbGVtZW50LmNh Y2hlID0geyB9Owp9OwoKZG9jdW1lbnQudmlld3BvcnQgPSB7CiAgZ2V0RGltZW5z aW9uczogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGltZW5zaW9ucyA9IHsgfSwgQiA9 IFByb3RvdHlwZS5Ccm93c2VyOwogICAgJHcoJ3dpZHRoIGhlaWdodCcpLmVhY2go ZnVuY3Rpb24oZCkgewogICAgICB2YXIgRCA9IGQuY2FwaXRhbGl6ZSgpOwogICAg ICBpZiAoQi5XZWJLaXQgJiYgIWRvY3VtZW50LmV2YWx1YXRlKSB7CiAgICAgICAg Ly8gU2FmYXJpIDwzLjAgbmVlZHMgc2VsZi5pbm5lcldpZHRoL0hlaWdodAogICAg ICAgIGRpbWVuc2lvbnNbZF0gPSBzZWxmWydpbm5lcicgKyBEXTsKICAgICAgfSBl bHNlIGlmIChCLk9wZXJhICYmIHBhcnNlRmxvYXQod2luZG93Lm9wZXJhLnZlcnNp b24oKSkgPCA5LjUpIHsKICAgICAgICAvLyBPcGVyYSA8OS41IG5lZWRzIGRvY3Vt ZW50LmJvZHkuY2xpZW50V2lkdGgvSGVpZ2h0CiAgICAgICAgZGltZW5zaW9uc1tk XSA9IGRvY3VtZW50LmJvZHlbJ2NsaWVudCcgKyBEXQogICAgICB9IGVsc2Ugewog ICAgICAgIGRpbWVuc2lvbnNbZF0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRb J2NsaWVudCcgKyBEXTsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gZGltZW5z aW9uczsKICB9LAoKICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4g dGhpcy5nZXREaW1lbnNpb25zKCkud2lkdGg7CiAgfSwKCiAgZ2V0SGVpZ2h0OiBm dW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdldERpbWVuc2lvbnMoKS5oZWln aHQ7CiAgfSwKCiAgZ2V0U2Nyb2xsT2Zmc2V0czogZnVuY3Rpb24oKSB7CiAgICBy ZXR1cm4gRWxlbWVudC5fcmV0dXJuT2Zmc2V0KAogICAgICB3aW5kb3cucGFnZVhP ZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwg ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0LAogICAgICB3aW5kb3cucGFnZVlPZmZz ZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1 bWVudC5ib2R5LnNjcm9sbFRvcCk7CiAgfQp9OwovKiBQb3J0aW9ucyBvZiB0aGUg U2VsZWN0b3IgY2xhc3MgYXJlIGRlcml2ZWQgZnJvbSBKYWNrIFNsb2N1bSdzIERv bVF1ZXJ5LAogKiBwYXJ0IG9mIFlVSS1FeHQgdmVyc2lvbiAwLjQwLCBkaXN0cmli dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgYW4gTUlULXN0eWxlCiAqIGxpY2Vuc2Uu ICBQbGVhc2Ugc2VlIGh0dHA6Ly93d3cueXVpLWV4dC5jb20vIGZvciBtb3JlIGlu Zm9ybWF0aW9uLiAqLwoKdmFyIFNlbGVjdG9yID0gQ2xhc3MuY3JlYXRlKHsKICBp bml0aWFsaXplOiBmdW5jdGlvbihleHByZXNzaW9uKSB7CiAgICB0aGlzLmV4cHJl c3Npb24gPSBleHByZXNzaW9uLnN0cmlwKCk7CgogICAgaWYgKHRoaXMuc2hvdWxk VXNlU2VsZWN0b3JzQVBJKCkpIHsKICAgICAgdGhpcy5tb2RlID0gJ3NlbGVjdG9y c0FQSSc7CiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkVXNlWFBhdGgoKSkgewog ICAgICB0aGlzLm1vZGUgPSAneHBhdGgnOwogICAgICB0aGlzLmNvbXBpbGVYUGF0 aE1hdGNoZXIoKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMubW9kZSA9ICJub3Jt YWwiOwogICAgICB0aGlzLmNvbXBpbGVNYXRjaGVyKCk7CiAgICB9CgogIH0sCgog IHNob3VsZFVzZVhQYXRoOiBmdW5jdGlvbigpIHsKICAgIGlmICghUHJvdG90eXBl LkJyb3dzZXJGZWF0dXJlcy5YUGF0aCkgcmV0dXJuIGZhbHNlOwoKICAgIHZhciBl ID0gdGhpcy5leHByZXNzaW9uOwoKICAgIC8vIFNhZmFyaSAzIGNob2tlcyBvbiA6 Ki1vZi10eXBlIGFuZCA6ZW1wdHkKICAgIGlmIChQcm90b3R5cGUuQnJvd3Nlci5X ZWJLaXQgJiYKICAgICAoZS5pbmNsdWRlKCItb2YtdHlwZSIpIHx8IGUuaW5jbHVk ZSgiOmVtcHR5IikpKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgLy8gWFBhdGgg Y2FuJ3QgZG8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVzLCBub3IgY2FuIGl0IHJlYWQK ICAgIC8vIHRoZSAiY2hlY2tlZCIgcHJvcGVydHkgZnJvbSBET00gbm9kZXMKICAg IGlmICgoLyhcW1tcdy1dKj86fDpjaGVja2VkKS8pLnRlc3QoZSkpCiAgICAgIHJl dHVybiBmYWxzZTsKCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICBzaG91bGRVc2VT ZWxlY3RvcnNBUEk6IGZ1bmN0aW9uKCkgewogICAgaWYgKCFQcm90b3R5cGUuQnJv d3NlckZlYXR1cmVzLlNlbGVjdG9yc0FQSSkgcmV0dXJuIGZhbHNlOwoKICAgIGlm ICghU2VsZWN0b3IuX2RpdikgU2VsZWN0b3IuX2RpdiA9IG5ldyBFbGVtZW50KCdk aXYnKTsKCiAgICAvLyBNYWtlIHN1cmUgdGhlIGJyb3dzZXIgdHJlYXRzIHRoZSBz ZWxlY3RvciBhcyB2YWxpZC4gVGVzdCBvbiBhbgogICAgLy8gaXNvbGF0ZWQgZWxl bWVudCB0byBtaW5pbWl6ZSBjb3N0IG9mIHRoaXMgY2hlY2suCiAgICB0cnkgewog ICAgICBTZWxlY3Rvci5fZGl2LnF1ZXJ5U2VsZWN0b3IodGhpcy5leHByZXNzaW9u KTsKICAgIH0gY2F0Y2goZSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cgog ICAgcmV0dXJuIHRydWU7CiAgfSwKCiAgY29tcGlsZU1hdGNoZXI6IGZ1bmN0aW9u KCkgewogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHBzID0gU2VsZWN0b3Iu cGF0dGVybnMsIGggPSBTZWxlY3Rvci5oYW5kbGVycywKICAgICAgICBjID0gU2Vs ZWN0b3IuY3JpdGVyaWEsIGxlLCBwLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2Fj aGVbZV0pIHsKICAgICAgdGhpcy5tYXRjaGVyID0gU2VsZWN0b3IuX2NhY2hlW2Vd OwogICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5tYXRjaGVyID0gWyJ0aGlz Lm1hdGNoZXIgPSBmdW5jdGlvbihyb290KSB7IiwKICAgICAgICAgICAgICAgICAg ICAidmFyIHIgPSByb290LCBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIGMgPSBmYWxz ZSwgbjsiXTsKCiAgICB3aGlsZSAoZSAmJiBsZSAhPSBlICYmICgvXFMvKS50ZXN0 KGUpKSB7CiAgICAgIGxlID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewog ICAgICAgIHAgPSBwc1tpXTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsK ICAgICAgICAgIHRoaXMubWF0Y2hlci5wdXNoKE9iamVjdC5pc0Z1bmN0aW9uKGNb aV0pID8gY1tpXShtKSA6CiAgICAgICAgICAgIG5ldyBUZW1wbGF0ZShjW2ldKS5l dmFsdWF0ZShtKSk7CiAgICAgICAgICBlID0gZS5yZXBsYWNlKG1bMF0sICcnKTsK ICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHRo aXMubWF0Y2hlci5wdXNoKCJyZXR1cm4gaC51bmlxdWUobik7XG59Iik7CiAgICBl dmFsKHRoaXMubWF0Y2hlci5qb2luKCdcbicpKTsKICAgIFNlbGVjdG9yLl9jYWNo ZVt0aGlzLmV4cHJlc3Npb25dID0gdGhpcy5tYXRjaGVyOwogIH0sCgogIGNvbXBp bGVYUGF0aE1hdGNoZXI6IGZ1bmN0aW9uKCkgewogICAgdmFyIGUgPSB0aGlzLmV4 cHJlc3Npb24sIHBzID0gU2VsZWN0b3IucGF0dGVybnMsCiAgICAgICAgeCA9IFNl bGVjdG9yLnhwYXRoLCBsZSwgbTsKCiAgICBpZiAoU2VsZWN0b3IuX2NhY2hlW2Vd KSB7CiAgICAgIHRoaXMueHBhdGggPSBTZWxlY3Rvci5fY2FjaGVbZV07IHJldHVy bjsKICAgIH0KCiAgICB0aGlzLm1hdGNoZXIgPSBbJy4vLyonXTsKICAgIHdoaWxl IChlICYmIGxlICE9IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgbGUgPSBl OwogICAgICBmb3IgKHZhciBpIGluIHBzKSB7CiAgICAgICAgaWYgKG0gPSBlLm1h dGNoKHBzW2ldKSkgewogICAgICAgICAgdGhpcy5tYXRjaGVyLnB1c2goT2JqZWN0 LmlzRnVuY3Rpb24oeFtpXSkgPyB4W2ldKG0pIDoKICAgICAgICAgICAgbmV3IFRl bXBsYXRlKHhbaV0pLmV2YWx1YXRlKG0pKTsKICAgICAgICAgIGUgPSBlLnJlcGxh Y2UobVswXSwgJycpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9 CiAgICB9CgogICAgdGhpcy54cGF0aCA9IHRoaXMubWF0Y2hlci5qb2luKCcnKTsK ICAgIFNlbGVjdG9yLl9jYWNoZVt0aGlzLmV4cHJlc3Npb25dID0gdGhpcy54cGF0 aDsKICB9LAoKICBmaW5kRWxlbWVudHM6IGZ1bmN0aW9uKHJvb3QpIHsKICAgIHJv b3QgPSByb290IHx8IGRvY3VtZW50OwogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Np b24sIHJlc3VsdHM7CgogICAgc3dpdGNoICh0aGlzLm1vZGUpIHsKICAgICAgY2Fz ZSAnc2VsZWN0b3JzQVBJJzoKICAgICAgICAvLyBxdWVyeVNlbGVjdG9yQWxsIHF1 ZXJpZXMgZG9jdW1lbnQtd2lkZSwgdGhlbiBmaWx0ZXJzIHRvIGRlc2NlbmRhbnRz CiAgICAgICAgLy8gb2YgdGhlIGNvbnRleHQgZWxlbWVudC4gVGhhdCdzIG5vdCB3 aGF0IHdlIHdhbnQuCiAgICAgICAgLy8gQWRkIGFuIGV4cGxpY2l0IGNvbnRleHQg dG8gdGhlIHNlbGVjdG9yIGlmIG5lY2Vzc2FyeS4KICAgICAgICBpZiAocm9vdCAh PT0gZG9jdW1lbnQpIHsKICAgICAgICAgIHZhciBvbGRJZCA9IHJvb3QuaWQsIGlk ID0gJChyb290KS5pZGVudGlmeSgpOwogICAgICAgICAgZSA9ICIjIiArIGlkICsg IiAiICsgZTsKICAgICAgICB9CgogICAgICAgIHJlc3VsdHMgPSAkQShyb290LnF1 ZXJ5U2VsZWN0b3JBbGwoZSkpLm1hcChFbGVtZW50LmV4dGVuZCk7CiAgICAgICAg cm9vdC5pZCA9IG9sZElkOwoKICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAg Y2FzZSAneHBhdGgnOgogICAgICAgIHJldHVybiBkb2N1bWVudC5fZ2V0RWxlbWVu dHNCeVhQYXRoKHRoaXMueHBhdGgsIHJvb3QpOwogICAgICBkZWZhdWx0OgogICAg ICAgcmV0dXJuIHRoaXMubWF0Y2hlcihyb290KTsKICAgIH0KICB9LAoKICBtYXRj aDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdGhpcy50b2tlbnMgPSBbXTsKCiAg ICB2YXIgZSA9IHRoaXMuZXhwcmVzc2lvbiwgcHMgPSBTZWxlY3Rvci5wYXR0ZXJu cywgYXMgPSBTZWxlY3Rvci5hc3NlcnRpb25zOwogICAgdmFyIGxlLCBwLCBtOwoK ICAgIHdoaWxlIChlICYmIGxlICE9PSBlICYmICgvXFMvKS50ZXN0KGUpKSB7CiAg ICAgIGxlID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewogICAgICAgIHAg PSBwc1tpXTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsKICAgICAgICAg IC8vIHVzZSB0aGUgU2VsZWN0b3IuYXNzZXJ0aW9ucyBtZXRob2RzIHVubGVzcyB0 aGUgc2VsZWN0b3IKICAgICAgICAgIC8vIGlzIHRvbyBjb21wbGV4LgogICAgICAg ICAgaWYgKGFzW2ldKSB7CiAgICAgICAgICAgIHRoaXMudG9rZW5zLnB1c2goW2ks IE9iamVjdC5jbG9uZShtKV0pOwogICAgICAgICAgICBlID0gZS5yZXBsYWNlKG1b MF0sICcnKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIHJlbHVj dGFudGx5IGRvIGEgZG9jdW1lbnQtd2lkZSBzZWFyY2gKICAgICAgICAgICAgLy8g YW5kIGxvb2sgZm9yIGEgbWF0Y2ggaW4gdGhlIGFycmF5CiAgICAgICAgICAgIHJl dHVybiB0aGlzLmZpbmRFbGVtZW50cyhkb2N1bWVudCkuaW5jbHVkZShlbGVtZW50 KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB2YXIg bWF0Y2ggPSB0cnVlLCBuYW1lLCBtYXRjaGVzOwogICAgZm9yICh2YXIgaSA9IDAs IHRva2VuOyB0b2tlbiA9IHRoaXMudG9rZW5zW2ldOyBpKyspIHsKICAgICAgbmFt ZSA9IHRva2VuWzBdLCBtYXRjaGVzID0gdG9rZW5bMV07CiAgICAgIGlmICghU2Vs ZWN0b3IuYXNzZXJ0aW9uc1tuYW1lXShlbGVtZW50LCBtYXRjaGVzKSkgewogICAg ICAgIG1hdGNoID0gZmFsc2U7IGJyZWFrOwogICAgICB9CiAgICB9CgogICAgcmV0 dXJuIG1hdGNoOwogIH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJl dHVybiB0aGlzLmV4cHJlc3Npb247CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24o KSB7CiAgICByZXR1cm4gIiM8U2VsZWN0b3I6IiArIHRoaXMuZXhwcmVzc2lvbi5p bnNwZWN0KCkgKyAiPiI7CiAgfQp9KTsKCk9iamVjdC5leHRlbmQoU2VsZWN0b3Is IHsKICBfY2FjaGU6IHsgfSwKCiAgeHBhdGg6IHsKICAgIGRlc2NlbmRhbnQ6ICAg Ii8vKiIsCiAgICBjaGlsZDogICAgICAgICIvKiIsCiAgICBhZGphY2VudDogICAg ICIvZm9sbG93aW5nLXNpYmxpbmc6OipbMV0iLAogICAgbGF0ZXJTaWJsaW5nOiAn L2ZvbGxvd2luZy1zaWJsaW5nOjoqJywKICAgIHRhZ05hbWU6ICAgICAgZnVuY3Rp b24obSkgewogICAgICBpZiAobVsxXSA9PSAnKicpIHJldHVybiAnJzsKICAgICAg cmV0dXJuICJbbG9jYWwtbmFtZSgpPSciICsgbVsxXS50b0xvd2VyQ2FzZSgpICsK ICAgICAgICAgICAgICInIG9yIGxvY2FsLW5hbWUoKT0nIiArIG1bMV0udG9VcHBl ckNhc2UoKSArICInXSI7CiAgICB9LAogICAgY2xhc3NOYW1lOiAgICAiW2NvbnRh aW5zKGNvbmNhdCgnICcsIEBjbGFzcywgJyAnKSwgJyAjezF9ICcpXSIsCiAgICBp ZDogICAgICAgICAgICJbQGlkPScjezF9J10iLAogICAgYXR0clByZXNlbmNlOiBm dW5jdGlvbihtKSB7CiAgICAgIG1bMV0gPSBtWzFdLnRvTG93ZXJDYXNlKCk7CiAg ICAgIHJldHVybiBuZXcgVGVtcGxhdGUoIltAI3sxfV0iKS5ldmFsdWF0ZShtKTsK ICAgIH0sCiAgICBhdHRyOiBmdW5jdGlvbihtKSB7CiAgICAgIG1bMV0gPSBtWzFd LnRvTG93ZXJDYXNlKCk7CiAgICAgIG1bM10gPSBtWzVdIHx8IG1bNl07CiAgICAg IHJldHVybiBuZXcgVGVtcGxhdGUoU2VsZWN0b3IueHBhdGgub3BlcmF0b3JzW21b Ml1dKS5ldmFsdWF0ZShtKTsKICAgIH0sCiAgICBwc2V1ZG86IGZ1bmN0aW9uKG0p IHsKICAgICAgdmFyIGggPSBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zW21bMV1dOwog ICAgICBpZiAoIWgpIHJldHVybiAnJzsKICAgICAgaWYgKE9iamVjdC5pc0Z1bmN0 aW9uKGgpKSByZXR1cm4gaChtKTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZShT ZWxlY3Rvci54cGF0aC5wc2V1ZG9zW21bMV1dKS5ldmFsdWF0ZShtKTsKICAgIH0s CiAgICBvcGVyYXRvcnM6IHsKICAgICAgJz0nOiAgIltAI3sxfT0nI3szfSddIiwK ICAgICAgJyE9JzogIltAI3sxfSE9JyN7M30nXSIsCiAgICAgICdePSc6ICJbc3Rh cnRzLXdpdGgoQCN7MX0sICcjezN9JyldIiwKICAgICAgJyQ9JzogIltzdWJzdHJp bmcoQCN7MX0sIChzdHJpbmctbGVuZ3RoKEAjezF9KSAtIHN0cmluZy1sZW5ndGgo JyN7M30nKSArIDEpKT0nI3szfSddIiwKICAgICAgJyo9JzogIltjb250YWlucyhA I3sxfSwgJyN7M30nKV0iLAogICAgICAnfj0nOiAiW2NvbnRhaW5zKGNvbmNhdCgn ICcsIEAjezF9LCAnICcpLCAnICN7M30gJyldIiwKICAgICAgJ3w9JzogIltjb250 YWlucyhjb25jYXQoJy0nLCBAI3sxfSwgJy0nKSwgJy0jezN9LScpXSIKICAgIH0s CiAgICBwc2V1ZG9zOiB7CiAgICAgICdmaXJzdC1jaGlsZCc6ICdbbm90KHByZWNl ZGluZy1zaWJsaW5nOjoqKV0nLAogICAgICAnbGFzdC1jaGlsZCc6ICAnW25vdChm b2xsb3dpbmctc2libGluZzo6KildJywKICAgICAgJ29ubHktY2hpbGQnOiAgJ1tu b3QocHJlY2VkaW5nLXNpYmxpbmc6Oiogb3IgZm9sbG93aW5nLXNpYmxpbmc6Oiop XScsCiAgICAgICdlbXB0eSc6ICAgICAgICJbY291bnQoKikgPSAwIGFuZCAoY291 bnQodGV4dCgpKSA9IDApXSIsCiAgICAgICdjaGVja2VkJzogICAgICJbQGNoZWNr ZWRdIiwKICAgICAgJ2Rpc2FibGVkJzogICAgIlsoQGRpc2FibGVkKSBhbmQgKEB0 eXBlIT0naGlkZGVuJyldIiwKICAgICAgJ2VuYWJsZWQnOiAgICAgIltub3QoQGRp c2FibGVkKSBhbmQgKEB0eXBlIT0naGlkZGVuJyldIiwKICAgICAgJ25vdCc6IGZ1 bmN0aW9uKG0pIHsKICAgICAgICB2YXIgZSA9IG1bNl0sIHAgPSBTZWxlY3Rvci5w YXR0ZXJucywKICAgICAgICAgICAgeCA9IFNlbGVjdG9yLnhwYXRoLCBsZSwgdjsK CiAgICAgICAgdmFyIGV4Y2x1c2lvbiA9IFtdOwogICAgICAgIHdoaWxlIChlICYm IGxlICE9IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgICAgIGxlID0gZTsK ICAgICAgICAgIGZvciAodmFyIGkgaW4gcCkgewogICAgICAgICAgICBpZiAobSA9 IGUubWF0Y2gocFtpXSkpIHsKICAgICAgICAgICAgICB2ID0gT2JqZWN0LmlzRnVu Y3Rpb24oeFtpXSkgPyB4W2ldKG0pIDogbmV3IFRlbXBsYXRlKHhbaV0pLmV2YWx1 YXRlKG0pOwogICAgICAgICAgICAgIGV4Y2x1c2lvbi5wdXNoKCIoIiArIHYuc3Vi c3RyaW5nKDEsIHYubGVuZ3RoIC0gMSkgKyAiKSIpOwogICAgICAgICAgICAgIGUg PSBlLnJlcGxhY2UobVswXSwgJycpOwogICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAi W25vdCgiICsgZXhjbHVzaW9uLmpvaW4oIiBhbmQgIikgKyAiKV0iOwogICAgICB9 LAogICAgICAnbnRoLWNoaWxkJzogICAgICBmdW5jdGlvbihtKSB7CiAgICAgICAg cmV0dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3MubnRoKCIoY291bnQoLi9wcmVj ZWRpbmctc2libGluZzo6KikgKyAxKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ250 aC1sYXN0LWNoaWxkJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxl Y3Rvci54cGF0aC5wc2V1ZG9zLm50aCgiKGNvdW50KC4vZm9sbG93aW5nLXNpYmxp bmc6OiopICsgMSkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtb2YtdHlwZSc6 ICAgIGZ1bmN0aW9uKG0pIHsKICAgICAgICByZXR1cm4gU2VsZWN0b3IueHBhdGgu cHNldWRvcy5udGgoInBvc2l0aW9uKCkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdu dGgtbGFzdC1vZi10eXBlJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBT ZWxlY3Rvci54cGF0aC5wc2V1ZG9zLm50aCgiKGxhc3QoKSArIDEgLSBwb3NpdGlv bigpKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ2ZpcnN0LW9mLXR5cGUnOiAgZnVu Y3Rpb24obSkgewogICAgICAgIG1bNl0gPSAiMSI7IHJldHVybiBTZWxlY3Rvci54 cGF0aC5wc2V1ZG9zWydudGgtb2YtdHlwZSddKG0pOwogICAgICB9LAogICAgICAn bGFzdC1vZi10eXBlJzogICBmdW5jdGlvbihtKSB7CiAgICAgICAgbVs2XSA9ICIx IjsgcmV0dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbJ250aC1sYXN0LW9mLXR5 cGUnXShtKTsKICAgICAgfSwKICAgICAgJ29ubHktb2YtdHlwZSc6ICAgZnVuY3Rp b24obSkgewogICAgICAgIHZhciBwID0gU2VsZWN0b3IueHBhdGgucHNldWRvczsg cmV0dXJuIHBbJ2ZpcnN0LW9mLXR5cGUnXShtKSArIHBbJ2xhc3Qtb2YtdHlwZSdd KG0pOwogICAgICB9LAogICAgICBudGg6IGZ1bmN0aW9uKGZyYWdtZW50LCBtKSB7 CiAgICAgICAgdmFyIG1tLCBmb3JtdWxhID0gbVs2XSwgcHJlZGljYXRlOwogICAg ICAgIGlmIChmb3JtdWxhID09ICdldmVuJykgZm9ybXVsYSA9ICcybiswJzsKICAg ICAgICBpZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAg ICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXihcZCspJC8pKSAvLyBkaWdp dCBvbmx5CiAgICAgICAgICByZXR1cm4gJ1snICsgZnJhZ21lbnQgKyAiPSAiICsg bW1bMV0gKyAnXSc7CiAgICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXigt P1xkKik/bigoWystXSkoXGQrKSk/LykpIHsgLy8gYW4rYgogICAgICAgICAgaWYg KG1tWzFdID09ICItIikgbW1bMV0gPSAtMTsKICAgICAgICAgIHZhciBhID0gbW1b MV0gPyBOdW1iZXIobW1bMV0pIDogMTsKICAgICAgICAgIHZhciBiID0gbW1bMl0g PyBOdW1iZXIobW1bMl0pIDogMDsKICAgICAgICAgIHByZWRpY2F0ZSA9ICJbKCgj e2ZyYWdtZW50fSAtICN7Yn0pIG1vZCAje2F9ID0gMCkgYW5kICIgKwogICAgICAg ICAgIigoI3tmcmFnbWVudH0gLSAje2J9KSBkaXYgI3thfSA+PSAwKV0iOwogICAg ICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZShwcmVkaWNhdGUpLmV2YWx1YXRlKHsK ICAgICAgICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LCBhOiBhLCBiOiBiIH0pOwog ICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCgogIGNyaXRlcmlhOiB7CiAgICB0 YWdOYW1lOiAgICAgICduID0gaC50YWdOYW1lKG4sIHIsICIjezF9IiwgYyk7ICAg ICAgYyA9IGZhbHNlOycsCiAgICBjbGFzc05hbWU6ICAgICduID0gaC5jbGFzc05h bWUobiwgciwgIiN7MX0iLCBjKTsgICAgYyA9IGZhbHNlOycsCiAgICBpZDogICAg ICAgICAgICduID0gaC5pZChuLCByLCAiI3sxfSIsIGMpOyAgICAgICAgICAgYyA9 IGZhbHNlOycsCiAgICBhdHRyUHJlc2VuY2U6ICduID0gaC5hdHRyUHJlc2VuY2Uo biwgciwgIiN7MX0iLCBjKTsgYyA9IGZhbHNlOycsCiAgICBhdHRyOiBmdW5jdGlv bihtKSB7CiAgICAgIG1bM10gPSAobVs1XSB8fCBtWzZdKTsKICAgICAgcmV0dXJu IG5ldyBUZW1wbGF0ZSgnbiA9IGguYXR0cihuLCByLCAiI3sxfSIsICIjezN9Iiwg IiN7Mn0iLCBjKTsgYyA9IGZhbHNlOycpLmV2YWx1YXRlKG0pOwogICAgfSwKICAg IHBzZXVkbzogZnVuY3Rpb24obSkgewogICAgICBpZiAobVs2XSkgbVs2XSA9IG1b Nl0ucmVwbGFjZSgvIi9nLCAnXFwiJyk7CiAgICAgIHJldHVybiBuZXcgVGVtcGxh dGUoJ24gPSBoLnBzZXVkbyhuLCAiI3sxfSIsICIjezZ9IiwgciwgYyk7IGMgPSBm YWxzZTsnKS5ldmFsdWF0ZShtKTsKICAgIH0sCiAgICBkZXNjZW5kYW50OiAgICdj ID0gImRlc2NlbmRhbnQiOycsCiAgICBjaGlsZDogICAgICAgICdjID0gImNoaWxk IjsnLAogICAgYWRqYWNlbnQ6ICAgICAnYyA9ICJhZGphY2VudCI7JywKICAgIGxh dGVyU2libGluZzogJ2MgPSAibGF0ZXJTaWJsaW5nIjsnCiAgfSwKCiAgcGF0dGVy bnM6IHsKICAgIC8vIGNvbWJpbmF0b3JzIG11c3QgYmUgbGlzdGVkIGZpcnN0CiAg ICAvLyAoYW5kIGRlc2NlbmRhbnQgbmVlZHMgdG8gYmUgbGFzdCBjb21iaW5hdG9y KQogICAgbGF0ZXJTaWJsaW5nOiAvXlxzKn5ccyovLAogICAgY2hpbGQ6ICAgICAg ICAvXlxzKj5ccyovLAogICAgYWRqYWNlbnQ6ICAgICAvXlxzKlwrXHMqLywKICAg IGRlc2NlbmRhbnQ6ICAgL15ccy8sCgogICAgLy8gc2VsZWN0b3JzIGZvbGxvdwog ICAgdGFnTmFtZTogICAgICAvXlxzKihcKnxbXHdcLV0rKShcYnwkKT8vLAogICAg aWQ6ICAgICAgICAgICAvXiMoW1x3XC1cKl0rKShcYnwkKS8sCiAgICBjbGFzc05h bWU6ICAgIC9eXC4oW1x3XC1cKl0rKShcYnwkKS8sCiAgICBwc2V1ZG86Ci9eOigo Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3R8b25seSkoLWNoaWxkfC1vZi10eXBlKXxl bXB0eXxjaGVja2VkfChlbnxkaXMpYWJsZWR8bm90KShcKCguKj8pXCkpPyhcYnwk fCg/PVxzfFs6K34+XSkpLywKICAgIGF0dHJQcmVzZW5jZTogL15cWygoPzpbXHdd KzopP1tcd10rKVxdLywKICAgIGF0dHI6ICAgICAgICAgL1xbKCg/Oltcdy1dKjop P1tcdy1dKylccyooPzooWyFeJCp+fF0/PSlccyooKFsnIl0pKFteXDRdKj8pXDR8 KFteJyJdW15cXV0qPykpKT9cXS8KICB9LAoKICAvLyBmb3IgU2VsZWN0b3IubWF0 Y2ggYW5kIEVsZW1lbnQjbWF0Y2gKICBhc3NlcnRpb25zOiB7CiAgICB0YWdOYW1l OiBmdW5jdGlvbihlbGVtZW50LCBtYXRjaGVzKSB7CiAgICAgIHJldHVybiBtYXRj aGVzWzFdLnRvVXBwZXJDYXNlKCkgPT0gZWxlbWVudC50YWdOYW1lLnRvVXBwZXJD YXNlKCk7CiAgICB9LAoKICAgIGNsYXNzTmFtZTogZnVuY3Rpb24oZWxlbWVudCwg bWF0Y2hlcykgewogICAgICByZXR1cm4gRWxlbWVudC5oYXNDbGFzc05hbWUoZWxl bWVudCwgbWF0Y2hlc1sxXSk7CiAgICB9LAoKICAgIGlkOiBmdW5jdGlvbihlbGVt ZW50LCBtYXRjaGVzKSB7CiAgICAgIHJldHVybiBlbGVtZW50LmlkID09PSBtYXRj aGVzWzFdOwogICAgfSwKCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKGVsZW1l bnQsIG1hdGNoZXMpIHsKICAgICAgcmV0dXJuIEVsZW1lbnQuaGFzQXR0cmlidXRl KGVsZW1lbnQsIG1hdGNoZXNbMV0pOwogICAgfSwKCiAgICBhdHRyOiBmdW5jdGlv bihlbGVtZW50LCBtYXRjaGVzKSB7CiAgICAgIHZhciBub2RlVmFsdWUgPSBFbGVt ZW50LnJlYWRBdHRyaWJ1dGUoZWxlbWVudCwgbWF0Y2hlc1sxXSk7CiAgICAgIHJl dHVybiBub2RlVmFsdWUgJiYgU2VsZWN0b3Iub3BlcmF0b3JzW21hdGNoZXNbMl1d KG5vZGVWYWx1ZSwgbWF0Y2hlc1s1XSB8fCBtYXRjaGVzWzZdKTsKICAgIH0KICB9 LAoKICBoYW5kbGVyczogewogICAgLy8gVVRJTElUWSBGVU5DVElPTlMKICAgIC8v IGpvaW5zIHR3byBjb2xsZWN0aW9ucwogICAgY29uY2F0OiBmdW5jdGlvbihhLCBi KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gYltpXTsgaSsr KQogICAgICAgIGEucHVzaChub2RlKTsKICAgICAgcmV0dXJuIGE7CiAgICB9LAoK ICAgIC8vIG1hcmtzIGFuIGFycmF5IG9mIG5vZGVzIGZvciBjb3VudGluZwogICAg bWFyazogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgdmFyIF90cnVlID0gUHJvdG90 eXBlLmVtcHR5RnVuY3Rpb247CiAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBu b2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBub2RlLl9jb3VudGVkQnlQcm90 b3R5cGUgPSBfdHJ1ZTsKICAgICAgcmV0dXJuIG5vZGVzOwogICAgfSwKCiAgICB1 bm1hcms6IGZ1bmN0aW9uKG5vZGVzKSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCBu b2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBub2RlLl9jb3VudGVk QnlQcm90b3R5cGUgPSB1bmRlZmluZWQ7CiAgICAgIHJldHVybiBub2RlczsKICAg IH0sCgogICAgLy8gbWFyayBlYWNoIGNoaWxkIG5vZGUgd2l0aCBpdHMgcG9zaXRp b24gKGZvciBudGggY2FsbHMpCiAgICAvLyAib2ZUeXBlIiBmbGFnIGluZGljYXRl cyB3aGV0aGVyIHdlJ3JlIGluZGV4aW5nIGZvciBudGgtb2YtdHlwZQogICAgLy8g cmF0aGVyIHRoYW4gbnRoLWNoaWxkCiAgICBpbmRleDogZnVuY3Rpb24ocGFyZW50 Tm9kZSwgcmV2ZXJzZSwgb2ZUeXBlKSB7CiAgICAgIHBhcmVudE5vZGUuX2NvdW50 ZWRCeVByb3RvdHlwZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAgICBp ZiAocmV2ZXJzZSkgewogICAgICAgIGZvciAodmFyIG5vZGVzID0gcGFyZW50Tm9k ZS5jaGlsZE5vZGVzLCBpID0gbm9kZXMubGVuZ3RoIC0gMSwgaiA9IDE7IGkgPj0g MDsgaS0tKSB7CiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldOwogICAgICAg ICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiAoIW9mVHlwZSB8fCBub2RlLl9j b3VudGVkQnlQcm90b3R5cGUpKSBub2RlLm5vZGVJbmRleCA9IGorKzsKICAgICAg ICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSAx LCBub2RlcyA9IHBhcmVudE5vZGUuY2hpbGROb2Rlczsgbm9kZSA9IG5vZGVzW2ld OyBpKyspCiAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxICYmICghb2ZU eXBlIHx8IG5vZGUuX2NvdW50ZWRCeVByb3RvdHlwZSkpIG5vZGUubm9kZUluZGV4 ID0gaisrOwogICAgICB9CiAgICB9LAoKICAgIC8vIGZpbHRlcnMgb3V0IGR1cGxp Y2F0ZXMgYW5kIGV4dGVuZHMgYWxsIG5vZGVzCiAgICB1bmlxdWU6IGZ1bmN0aW9u KG5vZGVzKSB7CiAgICAgIGlmIChub2Rlcy5sZW5ndGggPT0gMCkgcmV0dXJuIG5v ZGVzOwogICAgICB2YXIgcmVzdWx0cyA9IFtdLCBuOwogICAgICBmb3IgKHZhciBp ID0gMCwgbCA9IG5vZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykKICAgICAgICBpZiAo IShuID0gbm9kZXNbaV0pLl9jb3VudGVkQnlQcm90b3R5cGUpIHsKICAgICAgICAg IG4uX2NvdW50ZWRCeVByb3RvdHlwZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9u OwogICAgICAgICAgcmVzdWx0cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKG4pKTsKICAg ICAgICB9CiAgICAgIHJldHVybiBTZWxlY3Rvci5oYW5kbGVycy51bm1hcmsocmVz dWx0cyk7CiAgICB9LAoKICAgIC8vIENPTUJJTkFUT1IgRlVOQ1RJT05TCiAgICBk ZXNjZW5kYW50OiBmdW5jdGlvbihub2RlcykgewogICAgICB2YXIgaCA9IFNlbGVj dG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtd LCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBoLmNvbmNhdChy ZXN1bHRzLCBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpOwogICAgICBy ZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgY2hpbGQ6IGZ1bmN0aW9uKG5vZGVz KSB7CiAgICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICAgIGZvciAo dmFyIGkgPSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsg aSsrKSB7CiAgICAgICAgZm9yICh2YXIgaiA9IDAsIGNoaWxkOyBjaGlsZCA9IG5v ZGUuY2hpbGROb2Rlc1tqXTsgaisrKQogICAgICAgICAgaWYgKGNoaWxkLm5vZGVU eXBlID09IDEgJiYgY2hpbGQudGFnTmFtZSAhPSAnIScpIHJlc3VsdHMucHVzaChj aGlsZCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAg IGFkamFjZW50OiBmdW5jdGlvbihub2RlcykgewogICAgICBmb3IgKHZhciBpID0g MCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewog ICAgICAgIHZhciBuZXh0ID0gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmcobm9kZSk7 CiAgICAgICAgaWYgKG5leHQpIHJlc3VsdHMucHVzaChuZXh0KTsKICAgICAgfQog ICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgbGF0ZXJTaWJsaW5nOiBm dW5jdGlvbihub2RlcykgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJz OwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2Rl ID0gbm9kZXNbaV07IGkrKykKICAgICAgICBoLmNvbmNhdChyZXN1bHRzLCBFbGVt ZW50Lm5leHRTaWJsaW5ncyhub2RlKSk7CiAgICAgIHJldHVybiByZXN1bHRzOwog ICAgfSwKCiAgICBuZXh0RWxlbWVudFNpYmxpbmc6IGZ1bmN0aW9uKG5vZGUpIHsK ICAgICAgd2hpbGUgKG5vZGUgPSBub2RlLm5leHRTaWJsaW5nKQogICAgICAgIGlm IChub2RlLm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAgICByZXR1cm4g bnVsbDsKICAgIH0sCgogICAgcHJldmlvdXNFbGVtZW50U2libGluZzogZnVuY3Rp b24obm9kZSkgewogICAgICB3aGlsZSAobm9kZSA9IG5vZGUucHJldmlvdXNTaWJs aW5nKQogICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHJldHVybiBub2Rl OwogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gVE9LRU4gRlVOQ1RJ T05TCiAgICB0YWdOYW1lOiBmdW5jdGlvbihub2Rlcywgcm9vdCwgdGFnTmFtZSwg Y29tYmluYXRvcikgewogICAgICB2YXIgdVRhZ05hbWUgPSB0YWdOYW1lLnRvVXBw ZXJDYXNlKCk7CiAgICAgIHZhciByZXN1bHRzID0gW10sIGggPSBTZWxlY3Rvci5o YW5kbGVyczsKICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0 b3IpIHsKICAgICAgICAgIC8vIGZhc3RsYW5lIGZvciBvcmRpbmFyeSBkZXNjZW5k YW50IGNvbWJpbmF0b3JzCiAgICAgICAgICBpZiAoY29tYmluYXRvciA9PSAiZGVz Y2VuZGFudCIpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5v ZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGguY29uY2F0KHJlc3Vs dHMsIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSkpOwogICAgICAg ICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0gZWxzZSBub2RlcyA9IHRo aXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICAgICAgaWYgKHRhZ05hbWUgPT0g IioiKSByZXR1cm4gbm9kZXM7CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGkg PSAwLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgIGlmIChu b2RlLnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gdVRhZ05hbWUpIHJlc3VsdHMu cHVzaChub2RlKTsKICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSBlbHNl IHJldHVybiByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpOwogICAg fSwKCiAgICBpZDogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGlkLCBjb21iaW5hdG9y KSB7CiAgICAgIHZhciB0YXJnZXROb2RlID0gJChpZCksIGggPSBTZWxlY3Rvci5o YW5kbGVyczsKICAgICAgaWYgKCF0YXJnZXROb2RlKSByZXR1cm4gW107CiAgICAg IGlmICghbm9kZXMgJiYgcm9vdCA9PSBkb2N1bWVudCkgcmV0dXJuIFt0YXJnZXRO b2RlXTsKICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3Ip IHsKICAgICAgICAgIGlmIChjb21iaW5hdG9yID09ICdjaGlsZCcpIHsKICAgICAg ICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsr KQogICAgICAgICAgICAgIGlmICh0YXJnZXROb2RlLnBhcmVudE5vZGUgPT0gbm9k ZSkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29t YmluYXRvciA9PSAnZGVzY2VuZGFudCcpIHsKICAgICAgICAgICAgZm9yICh2YXIg aSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAg IGlmIChFbGVtZW50LmRlc2NlbmRhbnRPZih0YXJnZXROb2RlLCBub2RlKSkgcmV0 dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRv ciA9PSAnYWRqYWNlbnQnKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBu b2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgICAgICBpZiAoU2Vs ZWN0b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGluZyh0YXJnZXROb2Rl KSA9PSBub2RlKQogICAgICAgICAgICAgICAgcmV0dXJuIFt0YXJnZXROb2RlXTsK ICAgICAgICAgIH0gZWxzZSBub2RlcyA9IGhbY29tYmluYXRvcl0obm9kZXMpOwog ICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5v ZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZSA9PSB0YXJnZXROb2RlKSBy ZXR1cm4gW3RhcmdldE5vZGVdOwogICAgICAgIHJldHVybiBbXTsKICAgICAgfQog ICAgICByZXR1cm4gKHRhcmdldE5vZGUgJiYgRWxlbWVudC5kZXNjZW5kYW50T2Yo dGFyZ2V0Tm9kZSwgcm9vdCkpID8gW3RhcmdldE5vZGVdIDogW107CiAgICB9LAoK ICAgIGNsYXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSwg Y29tYmluYXRvcikgewogICAgICBpZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9k ZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAgICAgcmV0dXJuIFNlbGVj dG9yLmhhbmRsZXJzLmJ5Q2xhc3NOYW1lKG5vZGVzLCByb290LCBjbGFzc05hbWUp OwogICAgfSwKCiAgICBieUNsYXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3Qs IGNsYXNzTmFtZSkgewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IFNlbGVjdG9y LmhhbmRsZXJzLmRlc2NlbmRhbnQoW3Jvb3RdKTsKICAgICAgdmFyIG5lZWRsZSA9 ICcgJyArIGNsYXNzTmFtZSArICcgJzsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJl c3VsdHMgPSBbXSwgbm9kZSwgbm9kZUNsYXNzTmFtZTsgbm9kZSA9IG5vZGVzW2ld OyBpKyspIHsKICAgICAgICBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7 CiAgICAgICAgaWYgKG5vZGVDbGFzc05hbWUubGVuZ3RoID09IDApIGNvbnRpbnVl OwogICAgICAgIGlmIChub2RlQ2xhc3NOYW1lID09IGNsYXNzTmFtZSB8fCAoJyAn ICsgbm9kZUNsYXNzTmFtZSArICcgJykuaW5jbHVkZShuZWVkbGUpKQogICAgICAg ICAgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1 bHRzOwogICAgfSwKCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKG5vZGVzLCBy b290LCBhdHRyLCBjb21iaW5hdG9yKSB7CiAgICAgIGlmICghbm9kZXMpIG5vZGVz ID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICBpZiAobm9k ZXMgJiYgY29tYmluYXRvcikgbm9kZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVz KTsKICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDAs IG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChFbGVtZW50 Lmhhc0F0dHJpYnV0ZShub2RlLCBhdHRyKSkgcmVzdWx0cy5wdXNoKG5vZGUpOwog ICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24o bm9kZXMsIHJvb3QsIGF0dHIsIHZhbHVlLCBvcGVyYXRvciwgY29tYmluYXRvcikg ewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRh Z05hbWUoIioiKTsKICAgICAgaWYgKG5vZGVzICYmIGNvbWJpbmF0b3IpIG5vZGVz ID0gdGhpc1tjb21iaW5hdG9yXShub2Rlcyk7CiAgICAgIHZhciBoYW5kbGVyID0g U2VsZWN0b3Iub3BlcmF0b3JzW29wZXJhdG9yXSwgcmVzdWx0cyA9IFtdOwogICAg ICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsK ICAgICAgICB2YXIgbm9kZVZhbHVlID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKG5v ZGUsIGF0dHIpOwogICAgICAgIGlmIChub2RlVmFsdWUgPT09IG51bGwpIGNvbnRp bnVlOwogICAgICAgIGlmIChoYW5kbGVyKG5vZGVWYWx1ZSwgdmFsdWUpKSByZXN1 bHRzLnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAg ICB9LAoKICAgIHBzZXVkbzogZnVuY3Rpb24obm9kZXMsIG5hbWUsIHZhbHVlLCBy b290LCBjb21iaW5hdG9yKSB7CiAgICAgIGlmIChub2RlcyAmJiBjb21iaW5hdG9y KSBub2RlcyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICBpZiAoIW5v ZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAg ICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3NbbmFtZV0obm9kZXMsIHZhbHVlLCBy b290KTsKICAgIH0KICB9LAoKICBwc2V1ZG9zOiB7CiAgICAnZmlyc3QtY2hpbGQn OiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIg aSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKysp IHsKICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50 U2libGluZyhub2RlKSkgY29udGludWU7CiAgICAgICAgICByZXN1bHRzLnB1c2go bm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAogICAg J2xhc3QtY2hpbGQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAg ICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5v ZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMubmV4 dEVsZW1lbnRTaWJsaW5nKG5vZGUpKSBjb250aW51ZTsKICAgICAgICAgIHJlc3Vs dHMucHVzaChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAg IH0sCiAgICAnb25seS1jaGlsZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9v dCkgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3Ig KHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07 IGkrKykKICAgICAgICBpZiAoIWgucHJldmlvdXNFbGVtZW50U2libGluZyhub2Rl KSAmJiAhaC5uZXh0RWxlbWVudFNpYmxpbmcobm9kZSkpCiAgICAgICAgICByZXN1 bHRzLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKICAg ICdudGgtY2hpbGQnOiAgICAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJv b3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCBm b3JtdWxhLCByb290KTsKICAgIH0sCiAgICAnbnRoLWxhc3QtY2hpbGQnOiAgIGZ1 bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxl Y3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSk7CiAg ICB9LAogICAgJ250aC1vZi10eXBlJzogICAgICBmdW5jdGlvbihub2RlcywgZm9y bXVsYSwgcm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgo bm9kZXMsIGZvcm11bGEsIHJvb3QsIGZhbHNlLCB0cnVlKTsKICAgIH0sCiAgICAn bnRoLWxhc3Qtb2YtdHlwZSc6IGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290 KSB7CiAgICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9y bXVsYSwgcm9vdCwgdHJ1ZSwgdHJ1ZSk7CiAgICB9LAogICAgJ2ZpcnN0LW9mLXR5 cGUnOiAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICBy ZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsICIxIiwgcm9vdCwgZmFs c2UsIHRydWUpOwogICAgfSwKICAgICdsYXN0LW9mLXR5cGUnOiAgICAgZnVuY3Rp b24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9y LnBzZXVkb3MubnRoKG5vZGVzLCAiMSIsIHJvb3QsIHRydWUsIHRydWUpOwogICAg fSwKICAgICdvbmx5LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11 bGEsIHJvb3QpIHsKICAgICAgdmFyIHAgPSBTZWxlY3Rvci5wc2V1ZG9zOwogICAg ICByZXR1cm4gcFsnbGFzdC1vZi10eXBlJ10ocFsnZmlyc3Qtb2YtdHlwZSddKG5v ZGVzLCBmb3JtdWxhLCByb290KSwgZm9ybXVsYSwgcm9vdCk7CiAgICB9LAoKICAg IC8vIGhhbmRsZXMgdGhlIGFuK2IgbG9naWMKICAgIGdldEluZGljZXM6IGZ1bmN0 aW9uKGEsIGIsIHRvdGFsKSB7CiAgICAgIGlmIChhID09IDApIHJldHVybiBiID4g MCA/IFtiXSA6IFtdOwogICAgICByZXR1cm4gJFIoMSwgdG90YWwpLmluamVjdChb XSwgZnVuY3Rpb24obWVtbywgaSkgewogICAgICAgIGlmICgwID09IChpIC0gYikg JSBhICYmIChpIC0gYikgLyBhID49IDApIG1lbW8ucHVzaChpKTsKICAgICAgICBy ZXR1cm4gbWVtbzsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgbnRo KC1sYXN0KS1jaGlsZCwgbnRoKC1sYXN0KS1vZi10eXBlLCBhbmQgKGZpcnN0fGxh c3QpLW9mLXR5cGUKICAgIG50aDogZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJv b3QsIHJldmVyc2UsIG9mVHlwZSkgewogICAgICBpZiAobm9kZXMubGVuZ3RoID09 IDApIHJldHVybiBbXTsKICAgICAgaWYgKGZvcm11bGEgPT0gJ2V2ZW4nKSBmb3Jt dWxhID0gJzJuKzAnOwogICAgICBpZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11 bGEgPSAnMm4rMSc7CiAgICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIHJl c3VsdHMgPSBbXSwgaW5kZXhlZCA9IFtdLCBtOwogICAgICBoLm1hcmsobm9kZXMp OwogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBp KyspIHsKICAgICAgICBpZiAoIW5vZGUucGFyZW50Tm9kZS5fY291bnRlZEJ5UHJv dG90eXBlKSB7CiAgICAgICAgICBoLmluZGV4KG5vZGUucGFyZW50Tm9kZSwgcmV2 ZXJzZSwgb2ZUeXBlKTsKICAgICAgICAgIGluZGV4ZWQucHVzaChub2RlLnBhcmVu dE5vZGUpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoZm9ybXVsYS5tYXRj aCgvXlxkKyQvKSkgeyAvLyBqdXN0IGEgbnVtYmVyCiAgICAgICAgZm9ybXVsYSA9 IE51bWJlcihmb3JtdWxhKTsKICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsg bm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZS5ub2RlSW5k ZXggPT0gZm9ybXVsYSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICB9IGVsc2Ug aWYgKG0gPSBmb3JtdWxhLm1hdGNoKC9eKC0/XGQqKT9uKChbKy1dKShcZCspKT8v KSkgeyAvLyBhbitiCiAgICAgICAgaWYgKG1bMV0gPT0gIi0iKSBtWzFdID0gLTE7 CiAgICAgICAgdmFyIGEgPSBtWzFdID8gTnVtYmVyKG1bMV0pIDogMTsKICAgICAg ICB2YXIgYiA9IG1bMl0gPyBOdW1iZXIobVsyXSkgOiAwOwogICAgICAgIHZhciBp bmRpY2VzID0gU2VsZWN0b3IucHNldWRvcy5nZXRJbmRpY2VzKGEsIGIsIG5vZGVz Lmxlbmd0aCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGUsIGwgPSBpbmRp Y2VzLmxlbmd0aDsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICAgIGZv ciAodmFyIGogPSAwOyBqIDwgbDsgaisrKQogICAgICAgICAgICBpZiAobm9kZS5u b2RlSW5kZXggPT0gaW5kaWNlc1tqXSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAg ICAgIH0KICAgICAgfQogICAgICBoLnVubWFyayhub2Rlcyk7CiAgICAgIGgudW5t YXJrKGluZGV4ZWQpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAg J2VtcHR5JzogZnVuY3Rpb24obm9kZXMsIHZhbHVlLCByb290KSB7CiAgICAgIGZv ciAodmFyIGkgPSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tp XTsgaSsrKSB7CiAgICAgICAgLy8gSUUgdHJlYXRzIGNvbW1lbnRzIGFzIGVsZW1l bnQgbm9kZXMKICAgICAgICBpZiAobm9kZS50YWdOYW1lID09ICchJyB8fCBub2Rl LmZpcnN0Q2hpbGQpIGNvbnRpbnVlOwogICAgICAgIHJlc3VsdHMucHVzaChub2Rl KTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ25v dCc6IGZ1bmN0aW9uKG5vZGVzLCBzZWxlY3Rvciwgcm9vdCkgewogICAgICB2YXIg aCA9IFNlbGVjdG9yLmhhbmRsZXJzLCBzZWxlY3RvclR5cGUsIG07CiAgICAgIHZh ciBleGNsdXNpb25zID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKS5maW5kRWxlbWVu dHMocm9vdCk7CiAgICAgIGgubWFyayhleGNsdXNpb25zKTsKICAgICAgZm9yICh2 YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBp KyspCiAgICAgICAgaWYgKCFub2RlLl9jb3VudGVkQnlQcm90b3R5cGUpIHJlc3Vs dHMucHVzaChub2RlKTsKICAgICAgaC51bm1hcmsoZXhjbHVzaW9ucyk7CiAgICAg IHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICAnZW5hYmxlZCc6IGZ1bmN0aW9u KG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVz dWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBp ZiAoIW5vZGUuZGlzYWJsZWQgJiYgKCFub2RlLnR5cGUgfHwgbm9kZS50eXBlICE9 PSAnaGlkZGVuJykpCiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAg IHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICAnZGlzYWJsZWQnOiBmdW5jdGlv bihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJl c3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAg aWYgKG5vZGUuZGlzYWJsZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0 dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgICdjaGVja2VkJzogZnVuY3Rpb24obm9k ZXMsIHZhbHVlLCByb290KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRz ID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChu b2RlLmNoZWNrZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJuIHJl c3VsdHM7CiAgICB9CiAgfSwKCiAgb3BlcmF0b3JzOiB7CiAgICAnPSc6ICBmdW5j dGlvbihudiwgdikgeyByZXR1cm4gbnYgPT0gdjsgfSwKICAgICchPSc6IGZ1bmN0 aW9uKG52LCB2KSB7IHJldHVybiBudiAhPSB2OyB9LAogICAgJ149JzogZnVuY3Rp b24obnYsIHYpIHsgcmV0dXJuIG52ID09IHYgfHwgbnYgJiYgbnYuc3RhcnRzV2l0 aCh2KTsgfSwKICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudiA9 PSB2IHx8IG52ICYmIG52LmVuZHNXaXRoKHYpOyB9LAogICAgJyo9JzogZnVuY3Rp b24obnYsIHYpIHsgcmV0dXJuIG52ID09IHYgfHwgbnYgJiYgbnYuaW5jbHVkZSh2 KTsgfSwKICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5lbmRz V2l0aCh2KTsgfSwKICAgICcqPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBu di5pbmNsdWRlKHYpOyB9LAogICAgJ349JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0 dXJuICgnICcgKyBudiArICcgJykuaW5jbHVkZSgnICcgKyB2ICsgJyAnKTsgfSwK ICAgICd8PSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiAoJy0nICsgKG52IHx8 ICIiKS50b1VwcGVyQ2FzZSgpICsKICAgICAnLScpLmluY2x1ZGUoJy0nICsgKHYg fHwgIiIpLnRvVXBwZXJDYXNlKCkgKyAnLScpOyB9CiAgfSwKCiAgc3BsaXQ6IGZ1 bmN0aW9uKGV4cHJlc3Npb24pIHsKICAgIHZhciBleHByZXNzaW9ucyA9IFtdOwog ICAgZXhwcmVzc2lvbi5zY2FuKC8oKFtcdyM6Ln4+KygpXHMtXSt8XCp8XFsuKj9c XSkrKVxzKigsfCQpLywgZnVuY3Rpb24obSkgewogICAgICBleHByZXNzaW9ucy5w dXNoKG1bMV0uc3RyaXAoKSk7CiAgICB9KTsKICAgIHJldHVybiBleHByZXNzaW9u czsKICB9LAoKICBtYXRjaEVsZW1lbnRzOiBmdW5jdGlvbihlbGVtZW50cywgZXhw cmVzc2lvbikgewogICAgdmFyIG1hdGNoZXMgPSAkJChleHByZXNzaW9uKSwgaCA9 IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgaC5tYXJrKG1hdGNoZXMpOwogICAgZm9y ICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgZWxlbWVudDsgZWxlbWVudCA9IGVs ZW1lbnRzW2ldOyBpKyspCiAgICAgIGlmIChlbGVtZW50Ll9jb3VudGVkQnlQcm90 b3R5cGUpIHJlc3VsdHMucHVzaChlbGVtZW50KTsKICAgIGgudW5tYXJrKG1hdGNo ZXMpOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgZmluZEVsZW1lbnQ6IGZ1 bmN0aW9uKGVsZW1lbnRzLCBleHByZXNzaW9uLCBpbmRleCkgewogICAgaWYgKE9i amVjdC5pc051bWJlcihleHByZXNzaW9uKSkgewogICAgICBpbmRleCA9IGV4cHJl c3Npb247IGV4cHJlc3Npb24gPSBmYWxzZTsKICAgIH0KICAgIHJldHVybiBTZWxl Y3Rvci5tYXRjaEVsZW1lbnRzKGVsZW1lbnRzLCBleHByZXNzaW9uIHx8ICcqJylb aW5kZXggfHwgMF07CiAgfSwKCiAgZmluZENoaWxkRWxlbWVudHM6IGZ1bmN0aW9u KGVsZW1lbnQsIGV4cHJlc3Npb25zKSB7CiAgICBleHByZXNzaW9ucyA9IFNlbGVj dG9yLnNwbGl0KGV4cHJlc3Npb25zLmpvaW4oJywnKSk7CiAgICB2YXIgcmVzdWx0 cyA9IFtdLCBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICBmb3IgKHZhciBpID0g MCwgbCA9IGV4cHJlc3Npb25zLmxlbmd0aCwgc2VsZWN0b3I7IGkgPCBsOyBpKysp IHsKICAgICAgc2VsZWN0b3IgPSBuZXcgU2VsZWN0b3IoZXhwcmVzc2lvbnNbaV0u c3RyaXAoKSk7CiAgICAgIGguY29uY2F0KHJlc3VsdHMsIHNlbGVjdG9yLmZpbmRF bGVtZW50cyhlbGVtZW50KSk7CiAgICB9CiAgICByZXR1cm4gKGwgPiAxKSA/IGgu dW5pcXVlKHJlc3VsdHMpIDogcmVzdWx0czsKICB9Cn0pOwoKaWYgKFByb3RvdHlw ZS5Ccm93c2VyLklFKSB7CiAgT2JqZWN0LmV4dGVuZChTZWxlY3Rvci5oYW5kbGVy cywgewogICAgLy8gSUUgcmV0dXJucyBjb21tZW50IG5vZGVzIG9uIGdldEVsZW1l bnRzQnlUYWdOYW1lKCIqIikuCiAgICAvLyBGaWx0ZXIgdGhlbSBvdXQuCiAgICBj b25jYXQ6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5v ZGU7IG5vZGUgPSBiW2ldOyBpKyspCiAgICAgICAgaWYgKG5vZGUudGFnTmFtZSAh PT0gIiEiKSBhLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiBhOwogICAgfSwKCiAg ICAvLyBJRSBpbXByb3Blcmx5IHNlcmlhbGl6ZXMgX2NvdW50ZWRCeVByb3RvdHlw ZSBpbiAoaW5uZXJ8b3V0ZXIpSFRNTC4KICAgIHVubWFyazogZnVuY3Rpb24obm9k ZXMpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tp XTsgaSsrKQogICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKCdfY291bnRlZEJ5 UHJvdG90eXBlJyk7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0KICB9KTsKfQoK ZnVuY3Rpb24gJCQoKSB7CiAgcmV0dXJuIFNlbGVjdG9yLmZpbmRDaGlsZEVsZW1l bnRzKGRvY3VtZW50LCAkQShhcmd1bWVudHMpKTsKfQp2YXIgRm9ybSA9IHsKICBy ZXNldDogZnVuY3Rpb24oZm9ybSkgewogICAgJChmb3JtKS5yZXNldCgpOwogICAg cmV0dXJuIGZvcm07CiAgfSwKCiAgc2VyaWFsaXplRWxlbWVudHM6IGZ1bmN0aW9u KGVsZW1lbnRzLCBvcHRpb25zKSB7CiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT0g J29iamVjdCcpIG9wdGlvbnMgPSB7IGhhc2g6ICEhb3B0aW9ucyB9OwogICAgZWxz ZSBpZiAoT2JqZWN0LmlzVW5kZWZpbmVkKG9wdGlvbnMuaGFzaCkpIG9wdGlvbnMu aGFzaCA9IHRydWU7CiAgICB2YXIga2V5LCB2YWx1ZSwgc3VibWl0dGVkID0gZmFs c2UsIHN1Ym1pdCA9IG9wdGlvbnMuc3VibWl0OwoKICAgIHZhciBkYXRhID0gZWxl bWVudHMuaW5qZWN0KHsgfSwgZnVuY3Rpb24ocmVzdWx0LCBlbGVtZW50KSB7CiAg ICAgIGlmICghZWxlbWVudC5kaXNhYmxlZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAg ICAgICBrZXkgPSBlbGVtZW50Lm5hbWU7IHZhbHVlID0gJChlbGVtZW50KS5nZXRW YWx1ZSgpOwogICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIGVsZW1lbnQudHlw ZSAhPSAnZmlsZScgJiYgKGVsZW1lbnQudHlwZSAhPSAnc3VibWl0JyB8fCAoIXN1 Ym1pdHRlZCAmJgogICAgICAgICAgICBzdWJtaXQgIT09IGZhbHNlICYmICghc3Vi bWl0IHx8IGtleSA9PSBzdWJtaXQpICYmIChzdWJtaXR0ZWQgPSB0cnVlKSkpKSB7 CiAgICAgICAgICBpZiAoa2V5IGluIHJlc3VsdCkgewogICAgICAgICAgICAvLyBh IGtleSBpcyBhbHJlYWR5IHByZXNlbnQ7IGNvbnN0cnVjdCBhbiBhcnJheSBvZiB2 YWx1ZXMKICAgICAgICAgICAgaWYgKCFPYmplY3QuaXNBcnJheShyZXN1bHRba2V5 XSkpIHJlc3VsdFtrZXldID0gW3Jlc3VsdFtrZXldXTsKICAgICAgICAgICAgcmVz dWx0W2tleV0ucHVzaCh2YWx1ZSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNl IHJlc3VsdFtrZXldID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJl dHVybiByZXN1bHQ7CiAgICB9KTsKCiAgICByZXR1cm4gb3B0aW9ucy5oYXNoID8g ZGF0YSA6IE9iamVjdC50b1F1ZXJ5U3RyaW5nKGRhdGEpOwogIH0KfTsKCkZvcm0u TWV0aG9kcyA9IHsKICBzZXJpYWxpemU6IGZ1bmN0aW9uKGZvcm0sIG9wdGlvbnMp IHsKICAgIHJldHVybiBGb3JtLnNlcmlhbGl6ZUVsZW1lbnRzKEZvcm0uZ2V0RWxl bWVudHMoZm9ybSksIG9wdGlvbnMpOwogIH0sCgogIGdldEVsZW1lbnRzOiBmdW5j dGlvbihmb3JtKSB7CiAgICByZXR1cm4gJEEoJChmb3JtKS5nZXRFbGVtZW50c0J5 VGFnTmFtZSgnKicpKS5pbmplY3QoW10sCiAgICAgIGZ1bmN0aW9uKGVsZW1lbnRz LCBjaGlsZCkgewogICAgICAgIGlmIChGb3JtLkVsZW1lbnQuU2VyaWFsaXplcnNb Y2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpXSkKICAgICAgICAgIGVsZW1lbnRz LnB1c2goRWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgICAgICByZXR1cm4gZWxl bWVudHM7CiAgICAgIH0KICAgICk7CiAgfSwKCiAgZ2V0SW5wdXRzOiBmdW5jdGlv bihmb3JtLCB0eXBlTmFtZSwgbmFtZSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAg ICB2YXIgaW5wdXRzID0gZm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQn KTsKCiAgICBpZiAoIXR5cGVOYW1lICYmICFuYW1lKSByZXR1cm4gJEEoaW5wdXRz KS5tYXAoRWxlbWVudC5leHRlbmQpOwoKICAgIGZvciAodmFyIGkgPSAwLCBtYXRj aGluZ0lucHV0cyA9IFtdLCBsZW5ndGggPSBpbnB1dHMubGVuZ3RoOyBpIDwgbGVu Z3RoOyBpKyspIHsKICAgICAgdmFyIGlucHV0ID0gaW5wdXRzW2ldOwogICAgICBp ZiAoKHR5cGVOYW1lICYmIGlucHV0LnR5cGUgIT0gdHlwZU5hbWUpIHx8IChuYW1l ICYmIGlucHV0Lm5hbWUgIT0gbmFtZSkpCiAgICAgICAgY29udGludWU7CiAgICAg IG1hdGNoaW5nSW5wdXRzLnB1c2goRWxlbWVudC5leHRlbmQoaW5wdXQpKTsKICAg IH0KCiAgICByZXR1cm4gbWF0Y2hpbmdJbnB1dHM7CiAgfSwKCiAgZGlzYWJsZTog ZnVuY3Rpb24oZm9ybSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAgICBGb3JtLmdl dEVsZW1lbnRzKGZvcm0pLmludm9rZSgnZGlzYWJsZScpOwogICAgcmV0dXJuIGZv cm07CiAgfSwKCiAgZW5hYmxlOiBmdW5jdGlvbihmb3JtKSB7CiAgICBmb3JtID0g JChmb3JtKTsKICAgIEZvcm0uZ2V0RWxlbWVudHMoZm9ybSkuaW52b2tlKCdlbmFi bGUnKTsKICAgIHJldHVybiBmb3JtOwogIH0sCgogIGZpbmRGaXJzdEVsZW1lbnQ6 IGZ1bmN0aW9uKGZvcm0pIHsKICAgIHZhciBlbGVtZW50cyA9ICQoZm9ybSkuZ2V0 RWxlbWVudHMoKS5maW5kQWxsKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgcmV0 dXJuICdoaWRkZW4nICE9IGVsZW1lbnQudHlwZSAmJiAhZWxlbWVudC5kaXNhYmxl ZDsKICAgIH0pOwogICAgdmFyIGZpcnN0QnlJbmRleCA9IGVsZW1lbnRzLmZpbmRB bGwoZnVuY3Rpb24oZWxlbWVudCkgewogICAgICByZXR1cm4gZWxlbWVudC5oYXNB dHRyaWJ1dGUoJ3RhYkluZGV4JykgJiYgZWxlbWVudC50YWJJbmRleCA+PSAwOwog ICAgfSkuc29ydEJ5KGZ1bmN0aW9uKGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQu dGFiSW5kZXggfSkuZmlyc3QoKTsKCiAgICByZXR1cm4gZmlyc3RCeUluZGV4ID8g Zmlyc3RCeUluZGV4IDogZWxlbWVudHMuZmluZChmdW5jdGlvbihlbGVtZW50KSB7 CiAgICAgIHJldHVybiBbJ2lucHV0JywgJ3NlbGVjdCcsICd0ZXh0YXJlYSddLmlu Y2x1ZGUoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpOwogICAgfSk7CiAg fSwKCiAgZm9jdXNGaXJzdEVsZW1lbnQ6IGZ1bmN0aW9uKGZvcm0pIHsKICAgIGZv cm0gPSAkKGZvcm0pOwogICAgZm9ybS5maW5kRmlyc3RFbGVtZW50KCkuYWN0aXZh dGUoKTsKICAgIHJldHVybiBmb3JtOwogIH0sCgogIHJlcXVlc3Q6IGZ1bmN0aW9u KGZvcm0sIG9wdGlvbnMpIHsKICAgIGZvcm0gPSAkKGZvcm0pLCBvcHRpb25zID0g T2JqZWN0LmNsb25lKG9wdGlvbnMgfHwgeyB9KTsKCiAgICB2YXIgcGFyYW1zID0g b3B0aW9ucy5wYXJhbWV0ZXJzLCBhY3Rpb24gPSBmb3JtLnJlYWRBdHRyaWJ1dGUo J2FjdGlvbicpIHx8ICcnOwogICAgaWYgKGFjdGlvbi5ibGFuaygpKSBhY3Rpb24g PSB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgIG9wdGlvbnMucGFyYW1ldGVycyA9 IGZvcm0uc2VyaWFsaXplKHRydWUpOwoKICAgIGlmIChwYXJhbXMpIHsKICAgICAg aWYgKE9iamVjdC5pc1N0cmluZyhwYXJhbXMpKSBwYXJhbXMgPSBwYXJhbXMudG9R dWVyeVBhcmFtcygpOwogICAgICBPYmplY3QuZXh0ZW5kKG9wdGlvbnMucGFyYW1l dGVycywgcGFyYW1zKTsKICAgIH0KCiAgICBpZiAoZm9ybS5oYXNBdHRyaWJ1dGUo J21ldGhvZCcpICYmICFvcHRpb25zLm1ldGhvZCkKICAgICAgb3B0aW9ucy5tZXRo b2QgPSBmb3JtLm1ldGhvZDsKCiAgICByZXR1cm4gbmV3IEFqYXguUmVxdWVzdChh Y3Rpb24sIG9wdGlvbnMpOwogIH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwoKRm9ybS5FbGVtZW50ID0gewogIGZvY3VzOiBmdW5jdGlvbihlbGVt ZW50KSB7CiAgICAkKGVsZW1lbnQpLmZvY3VzKCk7CiAgICByZXR1cm4gZWxlbWVu dDsKICB9LAoKICBzZWxlY3Q6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICQoZWxl bWVudCkuc2VsZWN0KCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgpGb3Jt LkVsZW1lbnQuTWV0aG9kcyA9IHsKICBzZXJpYWxpemU6IGZ1bmN0aW9uKGVsZW1l bnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKCFlbGVtZW50 LmRpc2FibGVkICYmIGVsZW1lbnQubmFtZSkgewogICAgICB2YXIgdmFsdWUgPSBl bGVtZW50LmdldFZhbHVlKCk7CiAgICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQp IHsKICAgICAgICB2YXIgcGFpciA9IHsgfTsKICAgICAgICBwYWlyW2VsZW1lbnQu bmFtZV0gPSB2YWx1ZTsKICAgICAgICByZXR1cm4gT2JqZWN0LnRvUXVlcnlTdHJp bmcocGFpcik7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAnJzsKICB9LAoKICBn ZXRWYWx1ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxl bWVudCk7CiAgICB2YXIgbWV0aG9kID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJD YXNlKCk7CiAgICByZXR1cm4gRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzW21ldGhv ZF0oZWxlbWVudCk7CiAgfSwKCiAgc2V0VmFsdWU6IGZ1bmN0aW9uKGVsZW1lbnQs IHZhbHVlKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBtZXRo b2QgPSBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgIEZvcm0uRWxl bWVudC5TZXJpYWxpemVyc1ttZXRob2RdKGVsZW1lbnQsIHZhbHVlKTsKICAgIHJl dHVybiBlbGVtZW50OwogIH0sCgogIGNsZWFyOiBmdW5jdGlvbihlbGVtZW50KSB7 CiAgICAkKGVsZW1lbnQpLnZhbHVlID0gJyc7CiAgICByZXR1cm4gZWxlbWVudDsK ICB9LAoKICBwcmVzZW50OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4g JChlbGVtZW50KS52YWx1ZSAhPSAnJzsKICB9LAoKICBhY3RpdmF0ZTogZnVuY3Rp b24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB0cnkg ewogICAgICBlbGVtZW50LmZvY3VzKCk7CiAgICAgIGlmIChlbGVtZW50LnNlbGVj dCAmJiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT0gJ2lucHV0JyB8 fAogICAgICAgICAgIVsnYnV0dG9uJywgJ3Jlc2V0JywgJ3N1Ym1pdCddLmluY2x1 ZGUoZWxlbWVudC50eXBlKSkpCiAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsKICAg IH0gY2F0Y2ggKGUpIHsgfQogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgZGlz YWJsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVu dCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKICAgIHJldHVybiBlbGVt ZW50OwogIH0sCgogIGVuYWJsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxl bWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gZmFsc2U7 CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8KCnZhciBGaWVsZCA9IEZvcm0uRWxlbWVudDsKdmFyICRGID0g Rm9ybS5FbGVtZW50Lk1ldGhvZHMuZ2V0VmFsdWU7CgovKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KCkZvcm0uRWxlbWVudC5TZXJpYWxpemVycyA9IHsKICBp bnB1dDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIHN3aXRjaCAoZWxl bWVudC50eXBlLnRvTG93ZXJDYXNlKCkpIHsKICAgICAgY2FzZSAnY2hlY2tib3gn OgogICAgICBjYXNlICdyYWRpbyc6CiAgICAgICAgcmV0dXJuIEZvcm0uRWxlbWVu dC5TZXJpYWxpemVycy5pbnB1dFNlbGVjdG9yKGVsZW1lbnQsIHZhbHVlKTsKICAg ICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gRm9ybS5FbGVtZW50LlNlcmlhbGl6 ZXJzLnRleHRhcmVhKGVsZW1lbnQsIHZhbHVlKTsKICAgIH0KICB9LAoKICBpbnB1 dFNlbGVjdG9yOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgaWYgKE9i amVjdC5pc1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybiBlbGVtZW50LmNoZWNrZWQg PyBlbGVtZW50LnZhbHVlIDogbnVsbDsKICAgIGVsc2UgZWxlbWVudC5jaGVja2Vk ID0gISF2YWx1ZTsKICB9LAoKICB0ZXh0YXJlYTogZnVuY3Rpb24oZWxlbWVudCwg dmFsdWUpIHsKICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1 cm4gZWxlbWVudC52YWx1ZTsKICAgIGVsc2UgZWxlbWVudC52YWx1ZSA9IHZhbHVl OwogIH0sCgogIHNlbGVjdDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAg IGlmIChPYmplY3QuaXNVbmRlZmluZWQodmFsdWUpKQogICAgICByZXR1cm4gdGhp c1tlbGVtZW50LnR5cGUgPT0gJ3NlbGVjdC1vbmUnID8KICAgICAgICAnc2VsZWN0 T25lJyA6ICdzZWxlY3RNYW55J10oZWxlbWVudCk7CiAgICBlbHNlIHsKICAgICAg dmFyIG9wdCwgY3VycmVudFZhbHVlLCBzaW5nbGUgPSAhT2JqZWN0LmlzQXJyYXko dmFsdWUpOwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZWxlbWVudC5s ZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgIG9wdCA9IGVsZW1lbnQu b3B0aW9uc1tpXTsKICAgICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLm9wdGlvblZh bHVlKG9wdCk7CiAgICAgICAgaWYgKHNpbmdsZSkgewogICAgICAgICAgaWYgKGN1 cnJlbnRWYWx1ZSA9PSB2YWx1ZSkgewogICAgICAgICAgICBvcHQuc2VsZWN0ZWQg PSB0cnVlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAg fQogICAgICAgIGVsc2Ugb3B0LnNlbGVjdGVkID0gdmFsdWUuaW5jbHVkZShjdXJy ZW50VmFsdWUpOwogICAgICB9CiAgICB9CiAgfSwKCiAgc2VsZWN0T25lOiBmdW5j dGlvbihlbGVtZW50KSB7CiAgICB2YXIgaW5kZXggPSBlbGVtZW50LnNlbGVjdGVk SW5kZXg7CiAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMub3B0aW9uVmFsdWUo ZWxlbWVudC5vcHRpb25zW2luZGV4XSkgOiBudWxsOwogIH0sCgogIHNlbGVjdE1h bnk6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZXMsIGxlbmd0aCA9 IGVsZW1lbnQubGVuZ3RoOwogICAgaWYgKCFsZW5ndGgpIHJldHVybiBudWxsOwoK ICAgIGZvciAodmFyIGkgPSAwLCB2YWx1ZXMgPSBbXTsgaSA8IGxlbmd0aDsgaSsr KSB7CiAgICAgIHZhciBvcHQgPSBlbGVtZW50Lm9wdGlvbnNbaV07CiAgICAgIGlm IChvcHQuc2VsZWN0ZWQpIHZhbHVlcy5wdXNoKHRoaXMub3B0aW9uVmFsdWUob3B0 KSk7CiAgICB9CiAgICByZXR1cm4gdmFsdWVzOwogIH0sCgogIG9wdGlvblZhbHVl OiBmdW5jdGlvbihvcHQpIHsKICAgIC8vIGV4dGVuZCBlbGVtZW50IGJlY2F1c2Ug aGFzQXR0cmlidXRlIG1heSBub3QgYmUgbmF0aXZlCiAgICByZXR1cm4gRWxlbWVu dC5leHRlbmQob3B0KS5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykgPyBvcHQudmFsdWUg OiBvcHQudGV4dDsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ki8KCkFic3RyYWN0LlRpbWVkT2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoUGVyaW9k aWNhbEV4ZWN1dGVyLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oJHN1cGVyLCBl bGVtZW50LCBmcmVxdWVuY3ksIGNhbGxiYWNrKSB7CiAgICAkc3VwZXIoY2FsbGJh Y2ssIGZyZXF1ZW5jeSk7CiAgICB0aGlzLmVsZW1lbnQgICA9ICQoZWxlbWVudCk7 CiAgICB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsKICB9LAoKICBl eGVjdXRlOiBmdW5jdGlvbigpIHsKICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0VmFs dWUoKTsKICAgIGlmIChPYmplY3QuaXNTdHJpbmcodGhpcy5sYXN0VmFsdWUpICYm IE9iamVjdC5pc1N0cmluZyh2YWx1ZSkgPwogICAgICAgIHRoaXMubGFzdFZhbHVl ICE9IHZhbHVlIDogU3RyaW5nKHRoaXMubGFzdFZhbHVlKSAhPSBTdHJpbmcodmFs dWUpKSB7CiAgICAgIHRoaXMuY2FsbGJhY2sodGhpcy5lbGVtZW50LCB2YWx1ZSk7 CiAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7CiAgICB9CiAgfQp9KTsKCkZv cm0uRWxlbWVudC5PYnNlcnZlciA9IENsYXNzLmNyZWF0ZShBYnN0cmFjdC5UaW1l ZE9ic2VydmVyLCB7CiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJu IEZvcm0uRWxlbWVudC5nZXRWYWx1ZSh0aGlzLmVsZW1lbnQpOwogIH0KfSk7CgpG b3JtLk9ic2VydmVyID0gQ2xhc3MuY3JlYXRlKEFic3RyYWN0LlRpbWVkT2JzZXJ2 ZXIsIHsKICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5z ZXJpYWxpemUodGhpcy5lbGVtZW50KTsKICB9Cn0pOwoKLyotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSovCgpBYnN0cmFjdC5FdmVudE9ic2VydmVyID0gQ2xhc3Mu Y3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlbGVtZW50LCBjYWxsYmFj aykgewogICAgdGhpcy5lbGVtZW50ICA9ICQoZWxlbWVudCk7CiAgICB0aGlzLmNh bGxiYWNrID0gY2FsbGJhY2s7CgogICAgdGhpcy5sYXN0VmFsdWUgPSB0aGlzLmdl dFZhbHVlKCk7CiAgICBpZiAodGhpcy5lbGVtZW50LnRhZ05hbWUudG9Mb3dlckNh c2UoKSA9PSAnZm9ybScpCiAgICAgIHRoaXMucmVnaXN0ZXJGb3JtQ2FsbGJhY2tz KCk7CiAgICBlbHNlCiAgICAgIHRoaXMucmVnaXN0ZXJDYWxsYmFjayh0aGlzLmVs ZW1lbnQpOwogIH0sCgogIG9uRWxlbWVudEV2ZW50OiBmdW5jdGlvbigpIHsKICAg IHZhciB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsKICAgIGlmICh0aGlzLmxhc3RW YWx1ZSAhPSB2YWx1ZSkgewogICAgICB0aGlzLmNhbGxiYWNrKHRoaXMuZWxlbWVu dCwgdmFsdWUpOwogICAgICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlOwogICAgfQog IH0sCgogIHJlZ2lzdGVyRm9ybUNhbGxiYWNrczogZnVuY3Rpb24oKSB7CiAgICBG b3JtLmdldEVsZW1lbnRzKHRoaXMuZWxlbWVudCkuZWFjaCh0aGlzLnJlZ2lzdGVy Q2FsbGJhY2ssIHRoaXMpOwogIH0sCgogIHJlZ2lzdGVyQ2FsbGJhY2s6IGZ1bmN0 aW9uKGVsZW1lbnQpIHsKICAgIGlmIChlbGVtZW50LnR5cGUpIHsKICAgICAgc3dp dGNoIChlbGVtZW50LnR5cGUudG9Mb3dlckNhc2UoKSkgewogICAgICAgIGNhc2Ug J2NoZWNrYm94JzoKICAgICAgICBjYXNlICdyYWRpbyc6CiAgICAgICAgICBFdmVu dC5vYnNlcnZlKGVsZW1lbnQsICdjbGljaycsIHRoaXMub25FbGVtZW50RXZlbnQu YmluZCh0aGlzKSk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0Ogog ICAgICAgICAgRXZlbnQub2JzZXJ2ZShlbGVtZW50LCAnY2hhbmdlJywgdGhpcy5v bkVsZW1lbnRFdmVudC5iaW5kKHRoaXMpKTsKICAgICAgICAgIGJyZWFrOwogICAg ICB9CiAgICB9CiAgfQp9KTsKCkZvcm0uRWxlbWVudC5FdmVudE9ic2VydmVyID0g Q2xhc3MuY3JlYXRlKEFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIsIHsKICBnZXRWYWx1 ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5FbGVtZW50LmdldFZhbHVl KHRoaXMuZWxlbWVudCk7CiAgfQp9KTsKCkZvcm0uRXZlbnRPYnNlcnZlciA9IENs YXNzLmNyZWF0ZShBYnN0cmFjdC5FdmVudE9ic2VydmVyLCB7CiAgZ2V0VmFsdWU6 IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEZvcm0uc2VyaWFsaXplKHRoaXMuZWxl bWVudCk7CiAgfQp9KTsKaWYgKCF3aW5kb3cuRXZlbnQpIHZhciBFdmVudCA9IHsg fTsKCk9iamVjdC5leHRlbmQoRXZlbnQsIHsKICBLRVlfQkFDS1NQQUNFOiA4LAog IEtFWV9UQUI6ICAgICAgIDksCiAgS0VZX1JFVFVSTjogICAxMywKICBLRVlfRVND OiAgICAgIDI3LAogIEtFWV9MRUZUOiAgICAgMzcsCiAgS0VZX1VQOiAgICAgICAz OCwKICBLRVlfUklHSFQ6ICAgIDM5LAogIEtFWV9ET1dOOiAgICAgNDAsCiAgS0VZ X0RFTEVURTogICA0NiwKICBLRVlfSE9NRTogICAgIDM2LAogIEtFWV9FTkQ6ICAg ICAgMzUsCiAgS0VZX1BBR0VVUDogICAzMywKICBLRVlfUEFHRURPV046IDM0LAog IEtFWV9JTlNFUlQ6ICAgNDUsCgogIGNhY2hlOiB7IH0sCgogIHJlbGF0ZWRUYXJn ZXQ6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICB2YXIgZWxlbWVudDsKICAgIHN3aXRj aChldmVudC50eXBlKSB7CiAgICAgIGNhc2UgJ21vdXNlb3Zlcic6IGVsZW1lbnQg PSBldmVudC5mcm9tRWxlbWVudDsgYnJlYWs7CiAgICAgIGNhc2UgJ21vdXNlb3V0 JzogIGVsZW1lbnQgPSBldmVudC50b0VsZW1lbnQ7ICAgYnJlYWs7CiAgICAgIGRl ZmF1bHQ6IHJldHVybiBudWxsOwogICAgfQogICAgcmV0dXJuIEVsZW1lbnQuZXh0 ZW5kKGVsZW1lbnQpOwogIH0KfSk7CgpFdmVudC5NZXRob2RzID0gKGZ1bmN0aW9u KCkgewogIHZhciBpc0J1dHRvbjsKCiAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklF KSB7CiAgICB2YXIgYnV0dG9uTWFwID0geyAwOiAxLCAxOiA0LCAyOiAyIH07CiAg ICBpc0J1dHRvbiA9IGZ1bmN0aW9uKGV2ZW50LCBjb2RlKSB7CiAgICAgIHJldHVy biBldmVudC5idXR0b24gPT0gYnV0dG9uTWFwW2NvZGVdOwogICAgfTsKCiAgfSBl bHNlIGlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAgIGlzQnV0dG9u ID0gZnVuY3Rpb24oZXZlbnQsIGNvZGUpIHsKICAgICAgc3dpdGNoIChjb2RlKSB7 CiAgICAgICAgY2FzZSAwOiByZXR1cm4gZXZlbnQud2hpY2ggPT0gMSAmJiAhZXZl bnQubWV0YUtleTsKICAgICAgICBjYXNlIDE6IHJldHVybiBldmVudC53aGljaCA9 PSAxICYmIGV2ZW50Lm1ldGFLZXk7CiAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZh bHNlOwogICAgICB9CiAgICB9OwoKICB9IGVsc2UgewogICAgaXNCdXR0b24gPSBm dW5jdGlvbihldmVudCwgY29kZSkgewogICAgICByZXR1cm4gZXZlbnQud2hpY2gg PyAoZXZlbnQud2hpY2ggPT09IGNvZGUgKyAxKSA6IChldmVudC5idXR0b24gPT09 IGNvZGUpOwogICAgfTsKICB9CgogIHJldHVybiB7CiAgICBpc0xlZnRDbGljazog ICBmdW5jdGlvbihldmVudCkgeyByZXR1cm4gaXNCdXR0b24oZXZlbnQsIDApIH0s CiAgICBpc01pZGRsZUNsaWNrOiBmdW5jdGlvbihldmVudCkgeyByZXR1cm4gaXNC dXR0b24oZXZlbnQsIDEpIH0sCiAgICBpc1JpZ2h0Q2xpY2s6ICBmdW5jdGlvbihl dmVudCkgeyByZXR1cm4gaXNCdXR0b24oZXZlbnQsIDIpIH0sCgogICAgZWxlbWVu dDogZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgZXZlbnQgPSBFdmVudC5leHRlbmQo ZXZlbnQpOwoKICAgICAgdmFyIG5vZGUgICAgICAgICAgPSBldmVudC50YXJnZXQs CiAgICAgICAgICB0eXBlICAgICAgICAgID0gZXZlbnQudHlwZSwKICAgICAgICAg IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0OwoKICAgICAgaWYg KGN1cnJlbnRUYXJnZXQgJiYgY3VycmVudFRhcmdldC50YWdOYW1lKSB7CiAgICAg ICAgLy8gRmlyZWZveCBzY3Jld3MgdXAgdGhlICJjbGljayIgZXZlbnQgd2hlbiBt b3ZpbmcgYmV0d2VlbiByYWRpbyBidXR0b25zCiAgICAgICAgLy8gdmlhIGFycm93 IGtleXMuIEl0IGFsc28gc2NyZXdzIHVwIHRoZSAibG9hZCIgYW5kICJlcnJvciIg ZXZlbnRzIG9uIGltYWdlcywKICAgICAgICAvLyByZXBvcnRpbmcgdGhlIGRvY3Vt ZW50IGFzIHRoZSB0YXJnZXQgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgaW1hZ2Uu CiAgICAgICAgaWYgKHR5cGUgPT09ICdsb2FkJyB8fCB0eXBlID09PSAnZXJyb3In IHx8CiAgICAgICAgICAodHlwZSA9PT0gJ2NsaWNrJyAmJiBjdXJyZW50VGFyZ2V0 LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JwogICAgICAgICAgICAm JiBjdXJyZW50VGFyZ2V0LnR5cGUgPT09ICdyYWRpbycpKQogICAgICAgICAgICAg IG5vZGUgPSBjdXJyZW50VGFyZ2V0OwogICAgICB9CiAgICAgIGlmIChub2RlLm5v ZGVUeXBlID09IE5vZGUuVEVYVF9OT0RFKSBub2RlID0gbm9kZS5wYXJlbnROb2Rl OwogICAgICByZXR1cm4gRWxlbWVudC5leHRlbmQobm9kZSk7CiAgICB9LAoKICAg IGZpbmRFbGVtZW50OiBmdW5jdGlvbihldmVudCwgZXhwcmVzc2lvbikgewogICAg ICB2YXIgZWxlbWVudCA9IEV2ZW50LmVsZW1lbnQoZXZlbnQpOwogICAgICBpZiAo IWV4cHJlc3Npb24pIHJldHVybiBlbGVtZW50OwogICAgICB2YXIgZWxlbWVudHMg PSBbZWxlbWVudF0uY29uY2F0KGVsZW1lbnQuYW5jZXN0b3JzKCkpOwogICAgICBy ZXR1cm4gU2VsZWN0b3IuZmluZEVsZW1lbnQoZWxlbWVudHMsIGV4cHJlc3Npb24s IDApOwogICAgfSwKCiAgICBwb2ludGVyOiBmdW5jdGlvbihldmVudCkgewogICAg ICB2YXIgZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwKICAg ICAgYm9keSA9IGRvY3VtZW50LmJvZHkgfHwgeyBzY3JvbGxMZWZ0OiAwLCBzY3Jv bGxUb3A6IDAgfTsKICAgICAgcmV0dXJuIHsKICAgICAgICB4OiBldmVudC5wYWdl WCB8fCAoZXZlbnQuY2xpZW50WCArCiAgICAgICAgICAoZG9jRWxlbWVudC5zY3Jv bGxMZWZ0IHx8IGJvZHkuc2Nyb2xsTGVmdCkgLQogICAgICAgICAgKGRvY0VsZW1l bnQuY2xpZW50TGVmdCB8fCAwKSksCiAgICAgICAgeTogZXZlbnQucGFnZVkgfHwg KGV2ZW50LmNsaWVudFkgKwogICAgICAgICAgKGRvY0VsZW1lbnQuc2Nyb2xsVG9w IHx8IGJvZHkuc2Nyb2xsVG9wKSAtCiAgICAgICAgICAoZG9jRWxlbWVudC5jbGll bnRUb3AgfHwgMCkpCiAgICAgIH07CiAgICB9LAoKICAgIHBvaW50ZXJYOiBmdW5j dGlvbihldmVudCkgeyByZXR1cm4gRXZlbnQucG9pbnRlcihldmVudCkueCB9LAog ICAgcG9pbnRlclk6IGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBFdmVudC5wb2lu dGVyKGV2ZW50KS55IH0sCgogICAgc3RvcDogZnVuY3Rpb24oZXZlbnQpIHsKICAg ICAgRXZlbnQuZXh0ZW5kKGV2ZW50KTsKICAgICAgZXZlbnQucHJldmVudERlZmF1 bHQoKTsKICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIGV2ZW50 LnN0b3BwZWQgPSB0cnVlOwogICAgfQogIH07Cn0pKCk7CgpFdmVudC5leHRlbmQg PSAoZnVuY3Rpb24oKSB7CiAgdmFyIG1ldGhvZHMgPSBPYmplY3Qua2V5cyhFdmVu dC5NZXRob2RzKS5pbmplY3QoeyB9LCBmdW5jdGlvbihtLCBuYW1lKSB7CiAgICBt W25hbWVdID0gRXZlbnQuTWV0aG9kc1tuYW1lXS5tZXRob2RpemUoKTsKICAgIHJl dHVybiBtOwogIH0pOwoKICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHsKICAg IE9iamVjdC5leHRlbmQobWV0aG9kcywgewogICAgICBzdG9wUHJvcGFnYXRpb246 IGZ1bmN0aW9uKCkgeyB0aGlzLmNhbmNlbEJ1YmJsZSA9IHRydWUgfSwKICAgICAg cHJldmVudERlZmF1bHQ6ICBmdW5jdGlvbigpIHsgdGhpcy5yZXR1cm5WYWx1ZSA9 IGZhbHNlIH0sCiAgICAgIGluc3BlY3Q6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIltv YmplY3QgRXZlbnRdIiB9CiAgICB9KTsKCiAgICByZXR1cm4gZnVuY3Rpb24oZXZl bnQpIHsKICAgICAgaWYgKCFldmVudCkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAo ZXZlbnQuX2V4dGVuZGVkQnlQcm90b3R5cGUpIHJldHVybiBldmVudDsKCiAgICAg IGV2ZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlID0gUHJvdG90eXBlLmVtcHR5RnVu Y3Rpb247CiAgICAgIHZhciBwb2ludGVyID0gRXZlbnQucG9pbnRlcihldmVudCk7 CiAgICAgIE9iamVjdC5leHRlbmQoZXZlbnQsIHsKICAgICAgICB0YXJnZXQ6IGV2 ZW50LnNyY0VsZW1lbnQsCiAgICAgICAgcmVsYXRlZFRhcmdldDogRXZlbnQucmVs YXRlZFRhcmdldChldmVudCksCiAgICAgICAgcGFnZVg6ICBwb2ludGVyLngsCiAg ICAgICAgcGFnZVk6ICBwb2ludGVyLnkKICAgICAgfSk7CiAgICAgIHJldHVybiBP YmplY3QuZXh0ZW5kKGV2ZW50LCBtZXRob2RzKTsKICAgIH07CgogIH0gZWxzZSB7 CiAgICBFdmVudC5wcm90b3R5cGUgPSBFdmVudC5wcm90b3R5cGUgfHwgZG9jdW1l bnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKVsnX19wcm90b19fJ107CiAgICBP YmplY3QuZXh0ZW5kKEV2ZW50LnByb3RvdHlwZSwgbWV0aG9kcyk7CiAgICByZXR1 cm4gUHJvdG90eXBlLks7CiAgfQp9KSgpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwg KGZ1bmN0aW9uKCkgewogIHZhciBjYWNoZSA9IEV2ZW50LmNhY2hlOwoKICBmdW5j dGlvbiBnZXRFdmVudElEKGVsZW1lbnQpIHsKICAgIGlmIChlbGVtZW50Ll9wcm90 b3R5cGVFdmVudElEKSByZXR1cm4gZWxlbWVudC5fcHJvdG90eXBlRXZlbnRJRFsw XTsKICAgIGFyZ3VtZW50cy5jYWxsZWUuaWQgPSBhcmd1bWVudHMuY2FsbGVlLmlk IHx8IDE7CiAgICByZXR1cm4gZWxlbWVudC5fcHJvdG90eXBlRXZlbnRJRCA9IFsr K2FyZ3VtZW50cy5jYWxsZWUuaWRdOwogIH0KCiAgZnVuY3Rpb24gZ2V0RE9NRXZl bnROYW1lKGV2ZW50TmFtZSkgewogICAgaWYgKGV2ZW50TmFtZSAmJiBldmVudE5h bWUuaW5jbHVkZSgnOicpKSByZXR1cm4gImRhdGFhdmFpbGFibGUiOwogICAgcmV0 dXJuIGV2ZW50TmFtZTsKICB9CgogIGZ1bmN0aW9uIGdldENhY2hlRm9ySUQoaWQp IHsKICAgIHJldHVybiBjYWNoZVtpZF0gPSBjYWNoZVtpZF0gfHwgeyB9OwogIH0K CiAgZnVuY3Rpb24gZ2V0V3JhcHBlcnNGb3JFdmVudE5hbWUoaWQsIGV2ZW50TmFt ZSkgewogICAgdmFyIGMgPSBnZXRDYWNoZUZvcklEKGlkKTsKICAgIHJldHVybiBj W2V2ZW50TmFtZV0gPSBjW2V2ZW50TmFtZV0gfHwgW107CiAgfQoKICBmdW5jdGlv biBjcmVhdGVXcmFwcGVyKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlcikgewog ICAgdmFyIGlkID0gZ2V0RXZlbnRJRChlbGVtZW50KTsKICAgIHZhciBjID0gZ2V0 V3JhcHBlcnNGb3JFdmVudE5hbWUoaWQsIGV2ZW50TmFtZSk7CiAgICBpZiAoYy5w bHVjaygiaGFuZGxlciIpLmluY2x1ZGUoaGFuZGxlcikpIHJldHVybiBmYWxzZTsK CiAgICB2YXIgd3JhcHBlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIGlmICgh RXZlbnQgfHwgIUV2ZW50LmV4dGVuZCB8fAogICAgICAgIChldmVudC5ldmVudE5h bWUgJiYgZXZlbnQuZXZlbnROYW1lICE9IGV2ZW50TmFtZSkpCiAgICAgICAgICBy ZXR1cm4gZmFsc2U7CgogICAgICBFdmVudC5leHRlbmQoZXZlbnQpOwogICAgICBo YW5kbGVyLmNhbGwoZWxlbWVudCwgZXZlbnQpOwogICAgfTsKCiAgICB3cmFwcGVy LmhhbmRsZXIgPSBoYW5kbGVyOwogICAgYy5wdXNoKHdyYXBwZXIpOwogICAgcmV0 dXJuIHdyYXBwZXI7CiAgfQoKICBmdW5jdGlvbiBmaW5kV3JhcHBlcihpZCwgZXZl bnROYW1lLCBoYW5kbGVyKSB7CiAgICB2YXIgYyA9IGdldFdyYXBwZXJzRm9yRXZl bnROYW1lKGlkLCBldmVudE5hbWUpOwogICAgcmV0dXJuIGMuZmluZChmdW5jdGlv bih3cmFwcGVyKSB7IHJldHVybiB3cmFwcGVyLmhhbmRsZXIgPT0gaGFuZGxlciB9 KTsKICB9CgogIGZ1bmN0aW9uIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5hbWUs IGhhbmRsZXIpIHsKICAgIHZhciBjID0gZ2V0Q2FjaGVGb3JJRChpZCk7CiAgICBp ZiAoIWNbZXZlbnROYW1lXSkgcmV0dXJuIGZhbHNlOwogICAgY1tldmVudE5hbWVd ID0gY1tldmVudE5hbWVdLndpdGhvdXQoZmluZFdyYXBwZXIoaWQsIGV2ZW50TmFt ZSwgaGFuZGxlcikpOwogIH0KCiAgZnVuY3Rpb24gZGVzdHJveUNhY2hlKCkgewog ICAgZm9yICh2YXIgaWQgaW4gY2FjaGUpCiAgICAgIGZvciAodmFyIGV2ZW50TmFt ZSBpbiBjYWNoZVtpZF0pCiAgICAgICAgY2FjaGVbaWRdW2V2ZW50TmFtZV0gPSBu dWxsOwogIH0KCgogIC8vIEludGVybmV0IEV4cGxvcmVyIG5lZWRzIHRvIHJlbW92 ZSBldmVudCBoYW5kbGVycyBvbiBwYWdlIHVubG9hZAogIC8vIGluIG9yZGVyIHRv IGF2b2lkIG1lbW9yeSBsZWFrcy4KICBpZiAod2luZG93LmF0dGFjaEV2ZW50KSB7 CiAgICB3aW5kb3cuYXR0YWNoRXZlbnQoIm9udW5sb2FkIiwgZGVzdHJveUNhY2hl KTsKICB9CgogIC8vIFNhZmFyaSBoYXMgYSBkdW1teSBldmVudCBoYW5kbGVyIG9u IHBhZ2UgdW5sb2FkIHNvIHRoYXQgaXQgd29uJ3QKICAvLyB1c2UgaXRzIGJmY2Fj aGUuIFNhZmFyaSA8PSAzLjEgaGFzIGFuIGlzc3VlIHdpdGggcmVzdG9yaW5nIHRo ZSAiZG9jdW1lbnQiCiAgLy8gb2JqZWN0IHdoZW4gcGFnZSBpcyByZXR1cm5lZCB0 byB2aWEgdGhlIGJhY2sgYnV0dG9uIHVzaW5nIGl0cyBiZmNhY2hlLgogIGlmIChQ cm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAgIHdpbmRvdy5hZGRFdmVudExp c3RlbmVyKCd1bmxvYWQnLCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbiwgZmFsc2Up OwogIH0KCiAgcmV0dXJuIHsKICAgIG9ic2VydmU6IGZ1bmN0aW9uKGVsZW1lbnQs IGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICBlbGVtZW50ID0gJChlbGVtZW50 KTsKICAgICAgdmFyIG5hbWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsK CiAgICAgIHZhciB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVu dE5hbWUsIGhhbmRsZXIpOwogICAgICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVt ZW50OwoKICAgICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAg ICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxz ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgi b24iICsgbmFtZSwgd3JhcHBlcik7CiAgICAgIH0KCiAgICAgIHJldHVybiBlbGVt ZW50OwogICAgfSwKCiAgICBzdG9wT2JzZXJ2aW5nOiBmdW5jdGlvbihlbGVtZW50 LCBldmVudE5hbWUsIGhhbmRsZXIpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVu dCk7CiAgICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCksIG5hbWUgPSBn ZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAgIGlmICghaGFuZGxlciAm JiBldmVudE5hbWUpIHsKICAgICAgICBnZXRXcmFwcGVyc0ZvckV2ZW50TmFtZShp ZCwgZXZlbnROYW1lKS5lYWNoKGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgICAgICAg IGVsZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUsIHdyYXBwZXIuaGFuZGxl cik7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CgogICAgICB9 IGVsc2UgaWYgKCFldmVudE5hbWUpIHsKICAgICAgICBPYmplY3Qua2V5cyhnZXRD YWNoZUZvcklEKGlkKSkuZWFjaChmdW5jdGlvbihldmVudE5hbWUpIHsKICAgICAg ICAgIGVsZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUpOwogICAgICAgIH0p OwogICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICB9CgogICAgICB2YXIgd3Jh cHBlciA9IGZpbmRXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAg ICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoKICAgICAgaWYgKGVsZW1l bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsZW1lbnQucmVtb3Zl RXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAgICAgIH0gZWxz ZSB7CiAgICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCgib24iICsgbmFtZSwgd3Jh cHBlcik7CiAgICAgIH0KCiAgICAgIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5h bWUsIGhhbmRsZXIpOwoKICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9LAoKICAg IGZpcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgbWVtbykgewogICAg ICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j dW1lbnQgJiYgZG9jdW1lbnQuY3JlYXRlRXZlbnQgJiYgIWVsZW1lbnQuZGlzcGF0 Y2hFdmVudCkKICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50OwoKICAgICAgdmFyIGV2ZW50OwogICAgICBpZiAoZG9jdW1lbnQuY3JlYXRl RXZlbnQpIHsKICAgICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJI VE1MRXZlbnRzIik7CiAgICAgICAgZXZlbnQuaW5pdEV2ZW50KCJkYXRhYXZhaWxh YmxlIiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXZlbnQg PSBkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCgpOwogICAgICAgIGV2ZW50LmV2 ZW50VHlwZSA9ICJvbmRhdGFhdmFpbGFibGUiOwogICAgICB9CgogICAgICBldmVu dC5ldmVudE5hbWUgPSBldmVudE5hbWU7CiAgICAgIGV2ZW50Lm1lbW8gPSBtZW1v IHx8IHsgfTsKCiAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudCkgewogICAg ICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgIH0gZWxzZSB7 CiAgICAgICAgZWxlbWVudC5maXJlRXZlbnQoZXZlbnQuZXZlbnRUeXBlLCBldmVu dCk7CiAgICAgIH0KCiAgICAgIHJldHVybiBFdmVudC5leHRlbmQoZXZlbnQpOwog ICAgfQogIH07Cn0pKCkpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwgRXZlbnQuTWV0 aG9kcyk7CgpFbGVtZW50LmFkZE1ldGhvZHMoewogIGZpcmU6ICAgICAgICAgIEV2 ZW50LmZpcmUsCiAgb2JzZXJ2ZTogICAgICAgRXZlbnQub2JzZXJ2ZSwKICBzdG9w T2JzZXJ2aW5nOiBFdmVudC5zdG9wT2JzZXJ2aW5nCn0pOwoKT2JqZWN0LmV4dGVu ZChkb2N1bWVudCwgewogIGZpcmU6ICAgICAgICAgIEVsZW1lbnQuTWV0aG9kcy5m aXJlLm1ldGhvZGl6ZSgpLAogIG9ic2VydmU6ICAgICAgIEVsZW1lbnQuTWV0aG9k cy5vYnNlcnZlLm1ldGhvZGl6ZSgpLAogIHN0b3BPYnNlcnZpbmc6IEVsZW1lbnQu TWV0aG9kcy5zdG9wT2JzZXJ2aW5nLm1ldGhvZGl6ZSgpLAogIGxvYWRlZDogICAg ICAgIGZhbHNlCn0pOwoKKGZ1bmN0aW9uKCkgewogIC8qIFN1cHBvcnQgZm9yIHRo ZSBET01Db250ZW50TG9hZGVkIGV2ZW50IGlzIGJhc2VkIG9uIHdvcmsgYnkgRGFu IFdlYmIsCiAgICAgTWF0dGhpYXMgTWlsbGVyLCBEZWFuIEVkd2FyZHMgYW5kIEpv aG4gUmVzaWcuICovCgogIHZhciB0aW1lcjsKCiAgZnVuY3Rpb24gZmlyZUNvbnRl bnRMb2FkZWRFdmVudCgpIHsKICAgIGlmIChkb2N1bWVudC5sb2FkZWQpIHJldHVy bjsKICAgIGlmICh0aW1lcikgd2luZG93LmNsZWFySW50ZXJ2YWwodGltZXIpOwog ICAgZG9jdW1lbnQuZmlyZSgiZG9tOmxvYWRlZCIpOwogICAgZG9jdW1lbnQubG9h ZGVkID0gdHJ1ZTsKICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy KSB7CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0KSB7CiAgICAgIHRp bWVyID0gd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgIGlm ICgvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpKQog ICAgICAgICAgZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpOwogICAgICB9LCAwKTsK CiAgICAgIEV2ZW50Lm9ic2VydmUod2luZG93LCAibG9hZCIsIGZpcmVDb250ZW50 TG9hZGVkRXZlbnQpOwoKICAgIH0gZWxzZSB7CiAgICAgIGRvY3VtZW50LmFkZEV2 ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLAogICAgICAgIGZpcmVDb250 ZW50TG9hZGVkRXZlbnQsIGZhbHNlKTsKICAgIH0KCiAgfSBlbHNlIHsKICAgIGRv Y3VtZW50LndyaXRlKCI8c2NyaXB0IGlkPV9fb25ET01Db250ZW50TG9hZGVkIGRl ZmVyIHNyYz0vLzo+PFwvc2NyaXB0PiIpOwogICAgJCgiX19vbkRPTUNvbnRlbnRM b2FkZWQiKS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAg aWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CiAgICAgICAgdGhp cy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwogICAgICAgIGZpcmVDb250ZW50 TG9hZGVkRXZlbnQoKTsKICAgICAgfQogICAgfTsKICB9Cn0pKCk7Ci8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBERVBSRUNBVEVEIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKSGFzaC50b1F1ZXJ5U3RyaW5nID0gT2Jq ZWN0LnRvUXVlcnlTdHJpbmc7Cgp2YXIgVG9nZ2xlID0geyBkaXNwbGF5OiBFbGVt ZW50LnRvZ2dsZSB9OwoKRWxlbWVudC5NZXRob2RzLmNoaWxkT2YgPSBFbGVtZW50 Lk1ldGhvZHMuZGVzY2VuZGFudE9mOwoKdmFyIEluc2VydGlvbiA9IHsKICBCZWZv cmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVt ZW50Lmluc2VydChlbGVtZW50LCB7YmVmb3JlOmNvbnRlbnR9KTsKICB9LAoKICBU b3A6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVt ZW50Lmluc2VydChlbGVtZW50LCB7dG9wOmNvbnRlbnR9KTsKICB9LAoKICBCb3R0 b206IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVt ZW50Lmluc2VydChlbGVtZW50LCB7Ym90dG9tOmNvbnRlbnR9KTsKICB9LAoKICBB ZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgY29udGVudCkgewogICAgcmV0dXJuIEVs ZW1lbnQuaW5zZXJ0KGVsZW1lbnQsIHthZnRlcjpjb250ZW50fSk7CiAgfQp9OwoK dmFyICRjb250aW51ZSA9IG5ldyBFcnJvcignInRocm93ICRjb250aW51ZSIgaXMg ZGVwcmVjYXRlZCwgdXNlICJyZXR1cm4iIGluc3RlYWQnKTsKCi8vIFRoaXMgc2hv dWxkIGJlIG1vdmVkIHRvIHNjcmlwdC5hY3Vsby51czsgbm90aWNlIHRoZSBkZXBy ZWNhdGVkIG1ldGhvZHMKLy8gZnVydGhlciBiZWxvdywgdGhhdCBtYXAgdG8gdGhl IG5ld2VyIEVsZW1lbnQgbWV0aG9kcy4KdmFyIFBvc2l0aW9uID0gewogIC8vIHNl dCB0byB0cnVlIGlmIG5lZWRlZCwgd2FybmluZzogZmlyZWZveCBwZXJmb3JtYW5j ZSBwcm9ibGVtcwogIC8vIE5PVCBuZWVlZGVkIGZvciBwYWdlIHNjcm9sbGluZywg b25seSBpZiBkcmFnZ2FibGUgY29udGFpbmVkIGluCiAgLy8gc2Nyb2xsYWJsZSBl bGVtZW50cwogIGluY2x1ZGVTY3JvbGxPZmZzZXRzOiBmYWxzZSwKCiAgLy8gbXVz dCBiZSBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgd2l0aGluSW5jbHVkaW5nU2Nyb2xs b2Zmc2V0LCBldmVyeSB0aW1lIHRoZQogIC8vIHBhZ2UgaXMgc2Nyb2xsZWQKICBw cmVwYXJlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuZGVsdGFYID0gIHdpbmRvdy5w YWdlWE9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRF bGVtZW50LnNjcm9sbExlZnQKICAgICAgICAgICAgICAgIHx8IGRvY3VtZW50LmJv ZHkuc2Nyb2xsTGVmdAogICAgICAgICAgICAgICAgfHwgMDsKICAgIHRoaXMuZGVs dGFZID0gIHdpbmRvdy5wYWdlWU9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcAogICAgICAgICAgICAgICAg fHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AKICAgICAgICAgICAgICAgIHx8IDA7 CiAgfSwKCiAgLy8gY2FjaGVzIHgveSBjb29yZGluYXRlIHBhaXIgdG8gdXNlIHdp dGggb3ZlcmxhcAogIHdpdGhpbjogZnVuY3Rpb24oZWxlbWVudCwgeCwgeSkgewog ICAgaWYgKHRoaXMuaW5jbHVkZVNjcm9sbE9mZnNldHMpCiAgICAgIHJldHVybiB0 aGlzLndpdGhpbkluY2x1ZGluZ1Njcm9sbG9mZnNldHMoZWxlbWVudCwgeCwgeSk7 CiAgICB0aGlzLnhjb21wID0geDsKICAgIHRoaXMueWNvbXAgPSB5OwogICAgdGhp cy5vZmZzZXQgPSBFbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7Cgog ICAgcmV0dXJuICh5ID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHkg PCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAg ICAgICAgICB4ID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAgICAgIHggPCAg dGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKTsKICB9LAoKICB3 aXRoaW5JbmNsdWRpbmdTY3JvbGxvZmZzZXRzOiBmdW5jdGlvbihlbGVtZW50LCB4 LCB5KSB7CiAgICB2YXIgb2Zmc2V0Y2FjaGUgPSBFbGVtZW50LmN1bXVsYXRpdmVT Y3JvbGxPZmZzZXQoZWxlbWVudCk7CgogICAgdGhpcy54Y29tcCA9IHggKyBvZmZz ZXRjYWNoZVswXSAtIHRoaXMuZGVsdGFYOwogICAgdGhpcy55Y29tcCA9IHkgKyBv ZmZzZXRjYWNoZVsxXSAtIHRoaXMuZGVsdGFZOwogICAgdGhpcy5vZmZzZXQgPSBF bGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0dXJuICh0 aGlzLnljb21wID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHRoaXMu eWNvbXAgPCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAm JgogICAgICAgICAgICB0aGlzLnhjb21wID49IHRoaXMub2Zmc2V0WzBdICYmCiAg ICAgICAgICAgIHRoaXMueGNvbXAgPCAgdGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50 Lm9mZnNldFdpZHRoKTsKICB9LAoKICAvLyB3aXRoaW4gbXVzdCBiZSBjYWxsZWQg ZGlyZWN0bHkgYmVmb3JlCiAgb3ZlcmxhcDogZnVuY3Rpb24obW9kZSwgZWxlbWVu dCkgewogICAgaWYgKCFtb2RlKSByZXR1cm4gMDsKICAgIGlmIChtb2RlID09ICd2 ZXJ0aWNhbCcpCiAgICAgIHJldHVybiAoKHRoaXMub2Zmc2V0WzFdICsgZWxlbWVu dC5vZmZzZXRIZWlnaHQpIC0gdGhpcy55Y29tcCkgLwogICAgICAgIGVsZW1lbnQu b2Zmc2V0SGVpZ2h0OwogICAgaWYgKG1vZGUgPT0gJ2hvcml6b250YWwnKQogICAg ICByZXR1cm4gKCh0aGlzLm9mZnNldFswXSArIGVsZW1lbnQub2Zmc2V0V2lkdGgp IC0gdGhpcy54Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGg7CiAg fSwKCiAgLy8gRGVwcmVjYXRpb24gbGF5ZXIgLS0gdXNlIG5ld2VyIEVsZW1lbnQg bWV0aG9kcyBub3cgKDEuNS4yKS4KCiAgY3VtdWxhdGl2ZU9mZnNldDogRWxlbWVu dC5NZXRob2RzLmN1bXVsYXRpdmVPZmZzZXQsCgogIHBvc2l0aW9uZWRPZmZzZXQ6 IEVsZW1lbnQuTWV0aG9kcy5wb3NpdGlvbmVkT2Zmc2V0LAoKICBhYnNvbHV0aXpl OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBQb3NpdGlvbi5wcmVwYXJlKCk7CiAg ICByZXR1cm4gRWxlbWVudC5hYnNvbHV0aXplKGVsZW1lbnQpOwogIH0sCgogIHJl bGF0aXZpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIFBvc2l0aW9uLnByZXBh cmUoKTsKICAgIHJldHVybiBFbGVtZW50LnJlbGF0aXZpemUoZWxlbWVudCk7CiAg fSwKCiAgcmVhbE9mZnNldDogRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVTY3Jv bGxPZmZzZXQsCgogIG9mZnNldFBhcmVudDogRWxlbWVudC5NZXRob2RzLmdldE9m ZnNldFBhcmVudCwKCiAgcGFnZTogRWxlbWVudC5NZXRob2RzLnZpZXdwb3J0T2Zm c2V0LAoKICBjbG9uZTogZnVuY3Rpb24oc291cmNlLCB0YXJnZXQsIG9wdGlvbnMp IHsKICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHsgfTsKICAgIHJldHVybiBFbGVt ZW50LmNsb25lUG9zaXRpb24odGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpOwogIH0K fTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKaWYgKCFkb2N1bWVu dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSBkb2N1bWVudC5nZXRFbGVtZW50c0J5 Q2xhc3NOYW1lID0gZnVuY3Rpb24oaW5zdGFuY2VNZXRob2RzKXsKICBmdW5jdGlv biBpdGVyKG5hbWUpIHsKICAgIHJldHVybiBuYW1lLmJsYW5rKCkgPyBudWxsIDog Iltjb250YWlucyhjb25jYXQoJyAnLCBAY2xhc3MsICcgJyksICcgIiArIG5hbWUg KyAiICcpXSI7CiAgfQoKICBpbnN0YW5jZU1ldGhvZHMuZ2V0RWxlbWVudHNCeUNs YXNzTmFtZSA9IFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGggPwogIGZ1 bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgY2xhc3NOYW1lID0gY2xh c3NOYW1lLnRvU3RyaW5nKCkuc3RyaXAoKTsKICAgIHZhciBjb25kID0gL1xzLy50 ZXN0KGNsYXNzTmFtZSkgPyAkdyhjbGFzc05hbWUpLm1hcChpdGVyKS5qb2luKCcn KSA6IGl0ZXIoY2xhc3NOYW1lKTsKICAgIHJldHVybiBjb25kID8gZG9jdW1lbnQu X2dldEVsZW1lbnRzQnlYUGF0aCgnLi8vKicgKyBjb25kLCBlbGVtZW50KSA6IFtd OwogIH0gOiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGNsYXNz TmFtZSA9IGNsYXNzTmFtZS50b1N0cmluZygpLnN0cmlwKCk7CiAgICB2YXIgZWxl bWVudHMgPSBbXSwgY2xhc3NOYW1lcyA9ICgvXHMvLnRlc3QoY2xhc3NOYW1lKSA/ ICR3KGNsYXNzTmFtZSkgOiBudWxsKTsKICAgIGlmICghY2xhc3NOYW1lcyAmJiAh Y2xhc3NOYW1lKSByZXR1cm4gZWxlbWVudHM7CgogICAgdmFyIG5vZGVzID0gJChl bGVtZW50KS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpOwogICAgY2xhc3NOYW1l ID0gJyAnICsgY2xhc3NOYW1lICsgJyAnOwoKICAgIGZvciAodmFyIGkgPSAwLCBj aGlsZCwgY247IGNoaWxkID0gbm9kZXNbaV07IGkrKykgewogICAgICBpZiAoY2hp bGQuY2xhc3NOYW1lICYmIChjbiA9ICcgJyArIGNoaWxkLmNsYXNzTmFtZSArICcg JykgJiYgKGNuLmluY2x1ZGUoY2xhc3NOYW1lKSB8fAogICAgICAgICAgKGNsYXNz TmFtZXMgJiYgY2xhc3NOYW1lcy5hbGwoZnVuY3Rpb24obmFtZSkgewogICAgICAg ICAgICByZXR1cm4gIW5hbWUudG9TdHJpbmcoKS5ibGFuaygpICYmIGNuLmluY2x1 ZGUoJyAnICsgbmFtZSArICcgJyk7CiAgICAgICAgICB9KSkpKQogICAgICAgIGVs ZW1lbnRzLnB1c2goRWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgIH0KICAgIHJl dHVybiBlbGVtZW50czsKICB9OwoKICByZXR1cm4gZnVuY3Rpb24oY2xhc3NOYW1l LCBwYXJlbnRFbGVtZW50KSB7CiAgICByZXR1cm4gJChwYXJlbnRFbGVtZW50IHx8 IGRvY3VtZW50LmJvZHkpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1l KTsKICB9Owp9KEVsZW1lbnQuTWV0aG9kcyk7CgovKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8KCkVsZW1lbnQuQ2xhc3NOYW1lcyA9IENsYXNzLmNyZWF0ZSgp OwpFbGVtZW50LkNsYXNzTmFtZXMucHJvdG90eXBlID0gewogIGluaXRpYWxpemU6 IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVu dCk7CiAgfSwKCiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB0aGlz LmVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKS5zZWxlY3QoZnVuY3Rpb24o bmFtZSkgewogICAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAwOwogICAgfSkuX2Vh Y2goaXRlcmF0b3IpOwogIH0sCgogIHNldDogZnVuY3Rpb24oY2xhc3NOYW1lKSB7 CiAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogIH0sCgog IGFkZDogZnVuY3Rpb24oY2xhc3NOYW1lVG9BZGQpIHsKICAgIGlmICh0aGlzLmlu Y2x1ZGUoY2xhc3NOYW1lVG9BZGQpKSByZXR1cm47CiAgICB0aGlzLnNldCgkQSh0 aGlzKS5jb25jYXQoY2xhc3NOYW1lVG9BZGQpLmpvaW4oJyAnKSk7CiAgfSwKCiAg cmVtb3ZlOiBmdW5jdGlvbihjbGFzc05hbWVUb1JlbW92ZSkgewogICAgaWYgKCF0 aGlzLmluY2x1ZGUoY2xhc3NOYW1lVG9SZW1vdmUpKSByZXR1cm47CiAgICB0aGlz LnNldCgkQSh0aGlzKS53aXRob3V0KGNsYXNzTmFtZVRvUmVtb3ZlKS5qb2luKCcg JykpOwogIH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiAk QSh0aGlzKS5qb2luKCcgJyk7CiAgfQp9OwoKT2JqZWN0LmV4dGVuZChFbGVtZW50 LkNsYXNzTmFtZXMucHJvdG90eXBlLCBFbnVtZXJhYmxlKTsKCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwoKRWxlbWVudC5hZGRNZXRob2RzKCk7 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=func.js Content-Type: application/x-javascript; name=func.js Content-Location: http://js.imgsmail.ru/r/js/blogs/func.js?15 Content-Transfer-Encoding: Base64 dmFyIGlzT3BlcmEgPSBCb29sZWFuKHdpbmRvd1sib3BlcmEiXSk7CnZhciBpc0lF ID0gKG5hdmlnYXRvci5hcHBOYW1lLmluZGV4T2YoIk1pY3Jvc29mdCIpICE9IC0x KSAmJiAhaXNPcGVyYTsKdmFyIGlzSUU2ID0gZmFsc2UgLypAY2Nfb24gfHwgQF9q c2NyaXB0X3ZlcnNpb24gPCA1LjcgQCovOwp2YXIgaXNJRTcgPSBmYWxzZSAvKkBj Y19vbiB8fCBAX2pzY3JpcHRfdmVyc2lvbiA9PSA1LjcgQCovOwovLyBub3QgZGVw ZW5kZW50IG9uIHJlbmRlcmluZyBtb2RlCnZhciBpc0lFOCA9IChuYXZpZ2F0b3Iu YXBwTmFtZSA9PSAnTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyJyAmJiBuYXZp Z2F0b3IudXNlckFnZW50Lm1hdGNoKC9UcmlkZW50XC80LykpOwoKZnVuY3Rpb24g dVBpY092ZXIoc3BhbikgewogICAgdmFyIGF2YXRhclBhdGgsIGltZzsKICAgIGF2 YXRhclBhdGggPSAiaHR0cDovL2F2dC5mb3RvLm1haWwucnUvIjsKICAgIGltZyA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb3JVc2VyUGljU2hvdyIpOwogICAg aW1nLnNyYyA9IGF2YXRhclBhdGggKyBzcGFuLmlkICsgIi9fYXZhdGFyIjsKICAg IGltZy5zdHlsZS50b3AgPSBhYnNQb3NpdGlvbihzcGFuKS55ICsgc3Bhbi5vZmZz ZXRIZWlnaHQ7CiAgICBpbWcuc3R5bGUubGVmdCA9IGFic1Bvc2l0aW9uKHNwYW4p Lng7CiAgICBpbWcuc3R5bGUuZGlzcGxheSA9ICIiOwp9CgpmdW5jdGlvbiB1UGlj T3V0KHNwYW4pIHsKICAgIHZhciBpbWc7CiAgICB2YXIgaW1nID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoImZvclVzZXJQaWNTaG93Iik7CiAgICBpbWcuc3R5bGUu ZGlzcGxheSA9ICJub25lIjsKICAgIGltZy5zcmMgPSAid2FpdC5naWYiOwoKfQoK ZnVuY3Rpb24gZ2ViaShlaWQpIHsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKGVpZCkgfQovL2Z1bmN0aW9uICQoZWwpIHsgcmV0dXJuICh0eXBlb2YgZWwg PT0gJ3N0cmluZycpID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpIDogZWwg fQoKZnVuY3Rpb24gYWJzUG9zaXRpb24ob2JqKSB7IC8vIM7v8OXk5ev/5ewgdG9w IC0gbGVmdCDq7u7w5Ojt4PL7IOHr7urgIG9iagogICAgdmFyIG94ID0gMDsKICAg IHZhciBveSA9IDA7CiAgICB3aGlsZSAoIG9iaiApIHsKICAgICAgICBveCArPSBv Ymoub2Zmc2V0TGVmdDsKICAgICAgICBpZiAoVGhlbWVfdG1wbCkgewogICAgICAg IC8v8u7r/OruIOTr/yDIxSwg5Ov/IOL77+Dk4P755ePuIOzl7f4g8P/k7uwg8SDv 7uv85+7i4PLl8uXsIOgg5Ov/IO/u8fLu4iEhISDx5OXr4O3uIPLg6iDv7vLu7PMg 9/LuIO3l7/Dg4ujr/O3uIO7v8OXk5ev//vLx/yDq7u7w5Ojt4PL7IOjnLefgIO/u 5+j26O7t6PDu4uDt6P8g8O7k6PLl6/zx6uj1IOHr7uru4gogICAgICAgICAgICBp ZiAobmF2aWdhdG9yLmFwcE5hbWUgPT0gIk1pY3Jvc29mdCBJbnRlcm5ldCBFeHBs b3JlciIgJiYgb2JqLm5vZGVOYW1lID09ICJBIiAmJiBvYmouaWQgPT0gInBvc3Rf bWVudSIpIHsKICAgICAgICAgICAgICAgIG95ICs9IDE7CiAgICAgICAgICAgIH0g ZWxzZSB7CiAgICAgICAgICAgICAgIG95ICs9IG9iai5vZmZzZXRUb3A7CiAgICAg ICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBveSArPSBvYmou b2Zmc2V0VG9wOwogICAgICAgIH0KICAgICAgICAvLyAgwiDt5eru8u7w+/Ug8evz 9+D/9SDv7vfl7PMt8u4g5Ov/IP3r5ezl7fLgIO3gIPHy8ODt6PblIO7y8fPy8fLi 8+XyIO708eXyCiAgICAgICAgaWYgKCBvYmoub2Zmc2V0UGFyZW50ID09IG51bGwg KSB7CiAgICAgICAgICAgIG9iaiA9IG9iai5ub2RlTmFtZSA9PSAnQk9EWScgPyAg bnVsbCA6IG9iai5wYXJlbnROb2RlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBv YmogIT0gbnVsbCApIG9iaiA9IG9iai5vZmZzZXRQYXJlbnQ7CiAgICB9CiAgICBy ZXR1cm4ge3g6b3gseTpveX07Cn0KCmZ1bmN0aW9uIGNoZWNrX3dpbnNpemUoKSB7 CiAgICB2YXIgc2l6ZTsKICAgIGlmIChkb2N1bWVudC5hbGwpIHsKICAgICAgICBz aXplPXdpbmRvdy5kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOwogICAgfSBlbHNl IHsKICAgICAgICBzaXplID0gd2luZG93LmlubmVyV2lkdGg7CiAgICB9CiAgICBp ZiAoc2l6ZT44MjApewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ6 YXBpc19kaXYiKS5zdHlsZS53aWR0aD1zaXplKjAuNjM7CiAgICB9IGVsc2Ugewog ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ6YXBpc19kaXYiKS5zdHls ZS53aWR0aD01MDA7CiAgICB9Cn0KCmZ1bmN0aW9uIHNob3dfYWRkX3RvX2ZyaWVu ZHNfb25fbG9hZCgpIHsKICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLmlu ZGV4T2YoJ3Nob3dfYWRkX3RvX2ZyaWVuZD0xJyk+PTApCiAgICAgICAgc2hvd19m cmllbmRfZ3JvdXBfc2VsZWN0b3IoJ2Zvcl9mcmllbmRfZ3JvdXBfc2VsZWN0b3In LFBlcmxWYXJfSm91cm5hbEVtYWlsKTsKfQoKZnVuY3Rpb24gZ2V0X2JhY2tfcGFy YW1fc3RyKCkgewogICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgiYmFja19wYXJhbV9pbnB1dCIpLnZhbHVlKTsKfQoK Lyog7+7v4O/7ICovCgp2YXIgcG9wdXBfbCA9IGZhbHNlOwovL/Tz7er26P8g5Ov/ IO7y7uHw4Obl7ej/IHBvcHVwIO7q7eAsIO/w6CDt4Obg8ujoIO3gIPHx++vq8yAg IvPi5evo9+jy/CIg7+7kIODi4PLg8O7sCmZ1bmN0aW9uIHBvcHVwX2xhcmdlcihV cmwpIHsKICAgIGlmIChwb3B1cF9sKSBwb3B1cF9sLmNsb3NlKCk7CiAgICBwb3B1 cF9sID0gd2luZG93Lm9wZW4oVXJsLCdwb3B1cCcsJ3dpZHRoPTU4MCxoZWlnaHQ9 NTgwLHRvb2xiYXJzPW5vLHNjcm9sbGJhcnM9eWVzLHJlc2l6YWJsZT15ZXMsbGVm dD0nKyhzY3JlZW4ud2lkdGgtNTgwKS8yKycsdG9wPScrKHNjcmVlbi5oZWlnaHQt NTgwKS8yKTsKICAgIGlmIChwb3B1cF9sKSBwb3B1cF9sLmZvY3VzKCk7Cn0KCi8q IG1wMyBwbGF5ZXIqLwoKZnVuY3Rpb24gZW1iZWRfbXAzX3BsYXllcihVUkwpIHsK ICAgLy8gR2V0IE9wZXJhdGluZyBTeXN0ZW0KICAgdmFyIGlzV2luID0gbmF2aWdh dG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIndpbmRvd3MiKSAh PSAtMTsKICAgaWYgKGlzV2luKSB7IC8vIFVzZSBNSU1FIHR5cGUgYXBwbGljYXRp b24veC1tcGxheWVyMgogICAgICB2aXNpdG9yT1M9IldpbmRvd3MiOwogICB9IGVs c2UgeyAvLyBVc2UgTUlNRSB0eXBlIGF1ZGlvL21wZWcsIGF1ZGlvL3gtd2F2LCBl dGMuCiAgICAgIHZpc2l0b3JPUz0iT3RoZXIiOwogICB9CgogICB2YXIgb2JqVHlw ZVRhZyA9ICJhcHBsaWNhdGlvbi94LW1wbGF5ZXIyIjsgLy8gVGhlIE1JTUUgdHlw ZSB0byBsb2FkIHRoZSBXTVAgcGx1Z2luIGluIG5vbi1JRSBicm93c2VycyBvbiBX aW5kb3dzCiAgIGlmICh2aXNpdG9yT1MgIT0gIldpbmRvd3MiKSB7IG9ialR5cGVU YWcgPSAiYXVkaW8vbXBlZyJ9OyAvLyBUaGUgTUlNRSB0eXBlIGZvciBNYWNzIGFu ZCBMaW51eAoKICAgZG9jdW1lbnQud3JpdGVsbigiPGRpdj4iKTsKICAgZG9jdW1l bnQud3JpdGVsbigiPG9iamVjdCB3aWR0aD0nMjgwJyBoZWlnaHQ9JzY5Jz4iKTsg Ly8gV2lkdGggaXMgdGhlIFdNUCBtaW5pbXVtLiBIZWlnaHQgPSA0NSAoV01QIGNv bnRyb2xzKSArIDI0IChXTVAgc3RhdHVzIGJhcikKICAgZG9jdW1lbnQud3JpdGVs bigiPHBhcmFtIG5hbWU9J3R5cGUnIHZhbHVlPSciICsgb2JqVHlwZVRhZyArICIn PiIpOwogICBkb2N1bWVudC53cml0ZWxuKCI8cGFyYW0gbmFtZT0nc3JjJyB2YWx1 ZT0nIiArIFVSTCArICInPiIpOwogICBkb2N1bWVudC53cml0ZWxuKCI8cGFyYW0g bmFtZT0nYXV0b3N0YXJ0JyB2YWx1ZT0nMCc+Iik7CiAgIGRvY3VtZW50LndyaXRl bG4oIjxwYXJhbSBuYW1lPSdzaG93Y29udHJvbHMnIHZhbHVlPScxJz4iKTsKICAg ZG9jdW1lbnQud3JpdGVsbigiPHBhcmFtIG5hbWU9J3Nob3dzdGF0dXNiYXInIHZh bHVlPScxJz4iKTsKICAgZG9jdW1lbnQud3JpdGVsbigiPGVtYmVkIHNyYyA9JyIg KyBVUkwgKyAiJyB0eXBlPSciICsgb2JqVHlwZVRhZyArICInIGF1dG9wbGF5PSdm YWxzZScgYXV0b3N0YXJ0PScwJyB3aWR0aD0nMjgwJyBoZWlnaHQ9JzY5JyBjb250 cm9sbGVyPScxJyBzaG93c3RhdHVzYmFyPScxJyBiZ2NvbG9yPScjZmZmZmZmJz48 L2VtYmVkPiIpOwoKICAgLy8gRmlyZWZveCBhbmQgT3BlcmEgV2luIHJlcXVpcmUg Ym90aCBhdXRvc3RhcnQgYW5kIGF1dG9wbGF5CiAgIGRvY3VtZW50LndyaXRlbG4o Ijwvb2JqZWN0PiIpOwogICBkb2N1bWVudC53cml0ZWxuKCI8L2Rpdj4iKTsKfQoK Lyogam91cm5hbCAqLwoKZnVuY3Rpb24gaGFzX2phdmFzY3JpcHQoKSB7IHJldHVy biB0cnVlIH0KCmZ1bmN0aW9uIGJsYWNrX2xpc3RfY29uZmlybSh1cmwsYWN0aW9u LHVzZXJuYW1lKSB7CiAgICBpZiAoYWN0aW9uPT0iYWRkIikgewogICAgICAgIGlm IChjb25maXJtKCLE7uHg4ujy/CAiICArIHVzZXJuYW1lICsgIiDiINfl8O376SDx 7+jx7uo/ICIpKSB7CiAgICAgICAgICAgIGxvY2F0aW9uPSJodHRwOi8vIiArIFBl cmxWYXJfQmxvZ3NQZXJsSG9zdCArdXJsOwogICAgICAgIH0KICAgIH0gZWxzZSB7 CiAgICAgICAgaWYgKGNvbmZpcm0oItPk4Ovo8vwgIiArIHVzZXJuYW1lICsgIiDo 5yDX5fDt7uPuIPHv6PHq4D8iKSkgewogICAgICAgICAgICBsb2NhdGlvbj0iaHR0 cDovLyIgKyBQZXJsVmFyX0Jsb2dzUGVybEhvc3QgK3VybDsKICAgICAgICB9CiAg ICB9Cn0KCmZ1bmN0aW9uIGdldF9jb29raWUobmFtZSkgewogICAgdmFyIHByZWZp eCA9IG5hbWUgKyAiPSI7CiAgICB2YXIgc3RhcnQgPSBkb2N1bWVudC5jb29raWUu aW5kZXhPZihwcmVmaXgpOwogICAgaWYgKHN0YXJ0ID09IC0xKSByZXR1cm4gbnVs bDsKICAgIHN0YXJ0ICs9IHByZWZpeC5sZW5ndGg7CiAgICB2YXIgZW5kID0gZG9j dW1lbnQuY29va2llLmluZGV4T2YoIjsiLCBzdGFydCk7CiAgICBpZiAoZW5kID09 IC0xKSBlbmQgPSBkb2N1bWVudC5jb29raWUubGVuZ3RoOwogICAgcmV0dXJuIHVu ZXNjYXBlKGRvY3VtZW50LmNvb2tpZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCkpOwp9 CgpmdW5jdGlvbiBzZXRfY29va2llKG5hbWUsIHZhbHVlKSB7CiAgICB2YXIgY29v a2llID0gbmFtZSArICI9IiArIGVzY2FwZSh2YWx1ZSkgKyAiO2V4cGlyZXM9U3Vu LCAzMS1EZWMtMzQgMjM6NTk6NTkgR01UO3BhdGg9LyI7CiAgICBpZiAoY29va2ll Lmxlbmd0aCA8PSA0MDAwKSBkb2N1bWVudC5jb29raWUgPSBjb29raWU7Cn0KCmZ1 bmN0aW9uIHNjcmVlbl9wb3N0X2NhbGxiYWNrKHJlc3VsdCwgaWQsIHRvX3NjcmVl bikgewogICAgaWYgKHJlc3VsdCkgewogICAgICAgIHZhciBzY3IgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnc2NyZWVuX3Bvc3RfbGlua18nK2lkKTsKICAgICAg ICB2YXIgdW5zY3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndW5zY3JlZW5f cG9zdF9saW5rXycraWQpOwogICAgICAgIGlmICh0b19zY3JlZW4pIHsKICAgICAg ICAgICAgc2NyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgIHVu c2NyLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICBzY3Iuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICB1bnNjci5z dHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rp b24gc2NyZWVuX3Bvc3QoaWQsIHRvX3NjcmVlbikgewogICAgcGVybF9zY3JlZW5f cG9zdChpZCwgdG9fc2NyZWVuLCBzY3JlZW5fcG9zdF9jYWxsYmFjayk7Cn0KCmZ1 bmN0aW9uIGNmbShvYmopIHsKICAgIGlmICh0eXBlb2YoUGVybFZhcl9FeHRsaW5r c19BbGVydCkhPSd1bmRlZmluZWQnICYmIFBlcmxWYXJfRXh0bGlua3NfQWxlcnQ9 PTApIHJldHVybiB0cnVlOwogICAgdmFyIHR4dCA9IG9iai5ocmVmOwogICAgdHh0 ID0gdHh0LnJlcGxhY2UoL2h0dHA6XC9cLyhbQS1aYS16MC05X1wtXC5dKylbXj5d Ki9pZyAsICIkMSIpOwogICAgcmV0dXJuIGNvbmZpcm0oJ8L7IPHu4ejw4OXy5fH8 IO/l8OXp8ugg7+4g4u3l+O3l6SDx8fvr6uUg7eAg8eDp8jogIicrdHh0KyciXG5c bsDk7Ojt6PHy8OD26P8g6u7s7+Dt6OggTWFpbC5ydSDt5SDt5fHl8iDu8uLl8vHy 4uXt7e7x8ugg5+Ag8e7k5fDm6Ozu5SDx4Ony4CAiJyt0eHQrJyIg6CDt4PHy7v/y 5ev87e4g8OXq7uzl7eTz5fIg7ejq7uPk4CDt5SDi4u7k6PL8IO/g8O7r/CDu8iDx 4u7l4+4g7+738u7i7uPuIP/56OrgIO3gIO/u8fLu8O7t7ej1IPDl8fPw8eD1LiBc blxuzvLq8Pvy/CDx4OnyPycpOwp9CgpmdW5jdGlvbiBjZm11KHVybCkgewogICAg aWYgKHR5cGVvZihQZXJsVmFyX0V4dGxpbmtzX0FsZXJ0KSE9J3VuZGVmaW5lZCcg JiYgUGVybFZhcl9FeHRsaW5rc19BbGVydD09MCkgcmV0dXJuIHRydWU7CiAgICBy ZXR1cm4gY29uZmlybSgnwvsg8e7h6PDg5fLl8fwg7+Xw5eny6CDv7iDi7eX47eXp IPHx++vq5SDt4CDx4OnyOiAiJyt1cmwrJyJcblxuwOTs6O3o8fLw4Pbo/yDq7uzv 4O3o6CBNYWlsLnJ1IO3lIO3l8eXyIO7y4uXy8fLi5e3t7vHy6CDn4CDx7uTl8Obo 7O7lIPHg6fLgICInK3VybCsnIiDoIO3g8fLu//Ll6/zt7iDw5eru7OXt5PPl8iDt 6Oru4+TgIO3lIOLi7uTo8vwg7+Dw7uv8IO7yIPHi7uXj7iDv7vfy7uLu4+4g//no 6uAg7eAg7+7x8u7w7u3t6PUg8OXx8/Dx4PUuIFxuXG7O8urw+/L8IPHg6fI/Jyk7 Cn0KCi8vIGRvbnQgdXNlIHRoaXMsIHVzZSBnZXRFbGVtUG9zCmZ1bmN0aW9uIF9n ZXRPZmZzZXRQb3NpdGlvbihlbCkgewogICAgZWwgPSAkKGVsKTsKICAgIGlmICgh ZWwpIHJldHVybjsKCiAgICB2YXIgd2lkdGggPSBlbC5vZmZzZXRXaWR0aCwgaGVp Z2h0ID0gZWwub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSAwLCB0b3AgPSAw OwogICAgd2hpbGUgKGVsKSB7CiAgICAgICAgbGVmdCArPSBlbC5vZmZzZXRMZWZ0 OwogICAgICAgIHRvcCArPSBlbC5vZmZzZXRUb3A7CiAgICAgICAgZWwgPSBlbC5v ZmZzZXRQYXJlbnQ7CiAgICB9CgogICAgcmV0dXJuIHsgJ2xlZnQnOiBsZWZ0LCAn dG9wJzogdG9wLCAnd2lkdGgnOiB3aWR0aCwgJ2hlaWdodCc6IGhlaWdodCB9Owp9 CgovLyBkb250IHVzZSB0aGlzLCB1c2UgZ2V0RWxlbVBvcwpmdW5jdGlvbiBfZ2V0 Qm91bmRpbmdSZWN0UG9zaXRpb24oZWwpIHsKICAgIGVsID0gJChlbCk7CiAgICBp ZiAoIWVsIHx8ICFlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHJldHVybjsKCiAg ICB2YXIgYm94ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CgogICAgdmFy IGJvZHkgPSBkb2N1bWVudC5ib2R5OwogICAgdmFyIGRvY0VsZW0gPSBkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQ7CgogICAgdmFyIHNjcm9sbFRvcCA9IHdpbmRvdy5w YWdlWU9mZnNldCB8fCBkb2NFbGVtLnNjcm9sbFRvcCB8fCBib2R5LnNjcm9sbFRv cDsKICAgIHZhciBzY3JvbGxMZWZ0ID0gd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRv Y0VsZW0uc2Nyb2xsTGVmdCB8fCBib2R5LnNjcm9sbExlZnQ7CiAKICAgIHZhciBj bGllbnRUb3AgPSBkb2NFbGVtLmNsaWVudFRvcCB8fCBib2R5LmNsaWVudFRvcCB8 fCAwOwogICAgdmFyIGNsaWVudExlZnQgPSBkb2NFbGVtLmNsaWVudExlZnQgfHwg Ym9keS5jbGllbnRMZWZ0IHx8IDA7CiAKICAgIHZhciB0b3AgID0gYm94LnRvcCAr ICBzY3JvbGxUb3AgLSBjbGllbnRUb3A7CiAgICB2YXIgbGVmdCA9IGJveC5sZWZ0 ICsgc2Nyb2xsTGVmdCAtIGNsaWVudExlZnQ7CgogICAgdmFyIHdpZHRoID0gZWwu b2Zmc2V0V2lkdGgsIGhlaWdodCA9IGVsLm9mZnNldEhlaWdodDsKICAgIHJldHVy biB7IHRvcDogcGFyc2VJbnQodG9wKSwgbGVmdDogcGFyc2VJbnQobGVmdCksICd3 aWR0aCc6IHdpZHRoLCAnaGVpZ2h0JzogaGVpZ2h0IH07Cn0KCmZ1bmN0aW9uIGdl dEVsZW1lbnRQb3NpdGlvbihlbCkgewogICAgZWwgPSAkKGVsKTsKICAgIGlmICgh ZWwpIHJldHVybjsKCiAgICB2YXIgc2F2ZWRfcHJvcHMgPSBbJ2Rpc3BsYXknLCd2 aXNpYmlsaXR5JywncG9zaXRpb24nLCd0b3AnLCdsZWZ0J10sIHNhdmUgPSB7fTsK ICAgIGlmIChlbC5zdHlsZS5kaXNwbGF5ID09ICdub25lJykgewogICAgICAgIHZh ciBsZW4gPSBzYXZlZF9wcm9wcy5sZW5ndGg7CiAgICAgICAgd2hpbGUgKGxlbi0t KSB7CiAgICAgICAgICAgIHZhciBwcm9wID0gc2F2ZWRfcHJvcHNbbGVuXTsKICAg ICAgICAgICAgc2F2ZVtwcm9wXSA9IGVsLnN0eWxlW3Byb3BdOwogICAgICAgIH0K ICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICAgICAg ZWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwogICAgICAgIGVsLnN0eWxl LnRvcCA9IGVsLnN0eWxlLmxlZnQgPSAnLTEwMDBweCc7CiAgICAgICAgZWwuc3R5 bGUuZGlzcGxheSA9ICcnOwogICAgfQoKICAgIHZhciBwb3NpdGlvbjsKICAgIGlm IChlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHsKICAgICAgICBwb3NpdGlvbiA9 IF9nZXRCb3VuZGluZ1JlY3RQb3NpdGlvbihlbCk7CiAgICB9IGVsc2UgewogICAg ICAgIHBvc2l0aW9uID0gX2dldE9mZnNldFBvc2l0aW9uKGVsKTsKICAgIH0KCiAg ICBpZiAoc2F2ZVtzYXZlZF9wcm9wc1swXV0pIHsKICAgICAgICB2YXIgbGVuID0g c2F2ZWRfcHJvcHMubGVuZ3RoOwogICAgICAgIHdoaWxlIChsZW4tLSkgewogICAg ICAgICAgICB2YXIgcHJvcCA9IHNhdmVkX3Byb3BzW2xlbl07CiAgICAgICAgICAg IGVsLnN0eWxlW3Byb3BdID0gc2F2ZVtwcm9wXTsKICAgICAgICB9CiAgICB9Cgog ICAgcmV0dXJuIHBvc2l0aW9uOwp9CmZ1bmN0aW9uIGdldEVsZW1Qb3MoZWwpIHsg cmV0dXJuIGdldEVsZW1lbnRQb3NpdGlvbihlbCkgfQoKZnVuY3Rpb24gc2V0QWxw aGEob2JqLCBhbHBoYSkgewogICAgYWxwaGEgPSBwYXJzZUludChhbHBoYSkKICAg IGFscGhhID0gKGFscGhhID4gMTAwKSA/IDEwMCA6IChhbHBoYSA8IDEgPyAwIDog YWxwaGEpOwogICAgaWYgKGRvY3VtZW50LmJvZHkuZmlsdGVycykgewogICAgICAg IGlmIChpc0lFOCAvKnR5cGVvZiBvYmouc3R5bGUuTXNGaWx0ZXIgIT0gJ3VuZGVm aW5lZCcqLykgewogICAgICAgICAgICBpZiAob2JqLmZpbHRlcnMuaXRlbSgnRFhJ bWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEnKSkgewogICAgICAgICAgICAg ICAgb2JqLmZpbHRlcnMuaXRlbSgnRFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQu QWxwaGEnKS5vcGFjaXR5ID0gYWxwaGE7CiAgICAgICAgICAgIH0gZWxzZSBpZiAo b2JqLnN0eWxlLk1zRmlsdGVyKSB7CiAgICAgICAgICAgICAgICBvYmouc3R5bGUu TXNGaWx0ZXIgPSBvYmouc3R5bGUuTXNGaWx0ZXIucmVwbGFjZSgvIiQvLCAnIHBy b2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PScg KyBhbHBoYSArICcpIicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAgICAgb2JqLnN0eWxlLk1zRmlsdGVyID0gJyJwcm9naWQ6RFhJbWFnZVRyYW5z Zm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0nICsgYWxwaGEgKyAnKSInOwog ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChvYmouZmlsdGVycy5p dGVtKCdEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYScpKSB7CiAgICAg ICAgICAgIG9iai5maWx0ZXJzLml0ZW0oJ0RYSW1hZ2VUcmFuc2Zvcm0uTWljcm9z b2Z0LkFscGhhJykub3BhY2l0eSA9IGFscGhhOwogICAgICAgIH0gZWxzZSBpZiAo b2JqLnN0eWxlLmZpbHRlcikgewogICAgICAgICAgICBvYmouc3R5bGUuZmlsdGVy ICs9ICcgcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKG9w YWNpdHk9JyArIGFscGhhICsgJyknOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgIG9iai5zdHlsZS5maWx0ZXIgPSAncHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0u TWljcm9zb2Z0LkFscGhhKG9wYWNpdHk9JyArIGFscGhhICsgJyknOwogICAgICAg IH0KICAgIH0gZWxzZSB7CiAgICAgICAgb2JqLnN0eWxlLm9wYWNpdHkgPSBhbHBo YS8xMDA7CiAgICB9Cn0KCmZ1bmN0aW9uIHNldFBuZ0JnKGVsZW0sIHNyYykgewog ICAgaWYgKGRvY3VtZW50LmJvZHkuZmlsdGVycyAmJiAhc3JjLmluZGV4T2YoJ2ll cG5nJykpIHsKICAgICAgICBlbGVtLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICd1 cmwoaHR0cDovL2ltZy5tYWlsLnJ1LzAuZ2lmKSc7CiAgICAgICAgZWxlbS5zdHls ZS5maWx0ZXIgPSAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFs cGhhSW1hZ2VMb2FkZXIoc3JjPSciICsgc3JjICsgIicsc2l6aW5nTWV0aG9kPSdz Y2FsZScpIjsKICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbS5zdHlsZS5iYWNrZ3Jv dW5kSW1hZ2UgPSAndXJsKCcgKyBzcmMgKyAnKSc7CiAgICB9Cn0KCmZ1bmN0aW9u IGdldE1vdXNlUG9zKGV2ZW50KSB7CiAgICB2YXIgZG9jRWxlbWVudCA9IGRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudCwKICAgICAgICBib2R5ID0gZG9jdW1lbnQuYm9k eSB8fCB7IHNjcm9sbExlZnQ6IDAsIHNjcm9sbFRvcDogMCB9OwogICAgcmV0dXJu IHsKICAgICAgICB4OiBwYXJzZUludCggZXZlbnQucGFnZVggfHwgKGV2ZW50LmNs aWVudFggKwogICAgICAgICAgICAoZG9jRWxlbWVudC5zY3JvbGxMZWZ0IHx8IGJv ZHkuc2Nyb2xsTGVmdCkgLQogICAgICAgICAgICAoZG9jRWxlbWVudC5jbGllbnRM ZWZ0IHx8IDApKSApLAogICAgICAgIHk6IHBhcnNlSW50KCBldmVudC5wYWdlWSB8 fCAoZXZlbnQuY2xpZW50WSArCiAgICAgICAgICAgIChkb2NFbGVtZW50LnNjcm9s bFRvcCB8fCBib2R5LnNjcm9sbFRvcCkgLQogICAgICAgICAgICAoZG9jRWxlbWVu dC5jbGllbnRUb3AgfHwgMCkpICkKICAgIH07Cn0KCmZ1bmN0aW9uIGNhbmNlbEV2 ZW50KGV2ZW50KSB7CiAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOwogICAg ZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsKICAgIGlmIChldmVudC5zdG9wUHJv cGFnYXRpb24pIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgaWYgKGV2ZW50 LnByZXZlbnREZWZhdWx0KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwp9CgpmdW5j dGlvbiBnZXRDbGllbnRXaWR0aCgpIHsKICAgIHJldHVybiAoZG9jdW1lbnQuY29t cGF0TW9kZT09J0NTUzFDb21wYXQnICYmICF3aW5kb3cub3BlcmEpID8gZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDogZG9jdW1lbnQuYm9keS5j bGllbnRXaWR0aDsKfQpmdW5jdGlvbiBnZXRWaWV3cG9ydFdpZHRoKCkgeyByZXR1 cm4gZ2V0Q2xpZW50V2lkdGgoKSB9CgpmdW5jdGlvbiBnZXRDbGllbnRIZWlnaHQo KSB7CiAgICByZXR1cm4gTWF0aC5taW4oCiAgICAgICAgKGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudCA/IHBhcnNlSW50KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5j bGllbnRIZWlnaHQpIDogMCksCiAgICAgICAgKGRvY3VtZW50LmJvZHkgPyBwYXJz ZUludChkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkgOiAwKQogICAgKTsKfQpm dW5jdGlvbiBnZXRWaWV3cG9ydEhlaWdodCgpIHsgcmV0dXJuIGdldENsaWVudEhl aWdodCgpIH0KCmZ1bmN0aW9uIGdldEJvZHlTY3JvbGxUb3AoKSB7CiAgICByZXR1 cm4gc2VsZi5wYWdlWU9mZnNldCB8fCAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApIHx8IChkb2N1 bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKTsKfQoKZnVuY3Rp b24gZ2V0Qm9keVNjcm9sbExlZnQoKSB7CiAgICByZXR1cm4gc2VsZi5wYWdlWE9m ZnNldCB8fCAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0KSB8fCAoZG9jdW1lbnQuYm9keSAmJiBk b2N1bWVudC5ib2R5LnNjcm9sbExlZnQpOwp9CgpmdW5jdGlvbiBnZXRCb2R5U2Ny b2xsSGVpZ2h0KCkgeyByZXR1cm4gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQg fQoKZnVuY3Rpb24gZ2V0Qm9keVNjcm9sbFdpZHRoKCkgewogICAgcmV0dXJuIE1h dGgubWF4KAogICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyBwYXJz ZUludChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgpIDogMCks CiAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aAogICAgKTsKfQoKZnVu Y3Rpb24gc2hhZG93RGl2KGtleSwgY29sb3IpewogICAgdmFyIHNoYWQgPSBnZWJp KCdzaGFkb3dfZGl2Jyk7CiAgICBpZiAoIWNvbG9yKSBjb2xvciA9ICcjMzMzJzsK ICAgIGlmIChrZXkgPT0gJzEnKSB7CiAgICAgICAgc2hhZC5zdHlsZS5iYWNrZ3Jv dW5kQ29sb3IgPSBjb2xvcjsKICAgICAgICBzaGFkLnN0eWxlLmhlaWdodCA9IGRv Y3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0OwogICAgICAgIHNoYWQuc3R5bGUuZGlz cGxheT0gJyc7CiAgICB9IGVsc2UgewogICAgICAgIHNoYWQuc3R5bGUuZGlzcGxh eT0gJ25vbmUnOwogICAgfQp9CgpmdW5jdGlvbiBhZGRDc3NDbGFzcyhlbGVtLCBj bGFzc25hbWUpIHsKICAgIGVsZW0gPSAkKGVsZW0pOwogICAgdmFyIHJlID0gbmV3 IFJlZ0V4cCgnXFxiJytjbGFzc25hbWUrJ1xcYicsICdpJyk7CiAgICBpZiAoIHJl LnRlc3QoZWxlbS5jbGFzc05hbWUpICkgcmV0dXJuOwogICAgZWxlbS5jbGFzc05h bWUgPSBlbGVtLmNsYXNzTmFtZSArICcgJyArIGNsYXNzbmFtZTsKfQpmdW5jdGlv biByZW1vdmVDc3NDbGFzcyhlbGVtLCBjbGFzc25hbWUpIHsKICAgIGVsZW0gPSAk KGVsZW0pOwogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgnXFxzKlxcYicrY2xhc3Nu YW1lKydcXGJcXHMqJywgJ2knKTsKICAgIGVsZW0uY2xhc3NOYW1lID0gZWxlbS5j bGFzc05hbWUucmVwbGFjZShyZSwgJyAnKTsKfQovLyBzd2l0Y2ggb25lIGNsYXNz IE9OL09GRiBvciBzd2l0Y2ggYmV0d2VlbiB0d28gY2xhc3NlcwpmdW5jdGlvbiBz d2l0Y2hDc3NDbGFzcyhlbGVtLCByZW1vdmVfY2xhc3MsIGFkZF9jbGFzcykgewog ICAgZWxlbSA9ICQoZWxlbSk7CiAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKCdcXGIn ICsgcmVtb3ZlX2NsYXNzICsgJ1xcYicsICdpJyk7CiAgICBpZiAoIHJlLnRlc3Qo ZWxlbS5jbGFzc05hbWUpICkgewogICAgICAgIHJlbW92ZUNzc0NsYXNzKGVsZW0s IHJlbW92ZV9jbGFzcyk7CiAgICAgICAgaWYgKGFkZF9jbGFzcykgYWRkQ3NzQ2xh c3MoZWxlbSwgYWRkX2NsYXNzKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGFk ZF9jbGFzcykgcmVtb3ZlQ3NzQ2xhc3MoZWxlbSwgYWRkX2NsYXNzKTsKICAgICAg ICBhZGRDc3NDbGFzcyhlbGVtLCByZW1vdmVfY2xhc3MpOwogICAgfQp9CgpmdW5j dGlvbiBzZXRTZWxlY3RWYWx1ZShzZWxlY3QsIHZhbHVlKSB7CiAgICB2YXIgbGVu ID0gc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOwogICAgd2hpbGUgKGxlbi0tKSB7CiAg ICAgICAgdmFyIG9wdGlvbiA9IHNlbGVjdC5vcHRpb25zW2xlbl07CiAgICAgICAg aWYgKG9wdGlvbi52YWx1ZSA9PSB2YWx1ZSkgewogICAgICAgICAgICBzZWxlY3Qu c2VsZWN0ZWRJbmRleCA9IGxlbjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg fQogICAgfQp9CgpmdW5jdGlvbiBnZXRTZWxlY3RWYWx1ZShzZWxlY3QpIHsKICAg IHJldHVybiBzZWxlY3QudmFsdWU7Cn0KCmZ1bmN0aW9uIHNldFJhZGlvVmFsdWUo cmFkaW8sIHZhbHVlKSB7CiAgICB2YXIgbGVuID0gcmFkaW8ubGVuZ3RoOwogICAg aWYgKGxlbiA9PSB1bmRlZmluZWQpIHsKICAgICAgICByYWRpby5jaGVja2VkID0g KHJhZGlvLnZhbHVlID09IHZhbHVlLnRvU3RyaW5nKCkpOwogICAgICAgIHJldHVy bjsKICAgIH0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAg ICAgICByYWRpb1tpXS5jaGVja2VkID0gZmFsc2U7CiAgICAgICAgaWYgKHJhZGlv W2ldLnZhbHVlID09IHZhbHVlLnRvU3RyaW5nKCkpIHsKICAgICAgICAgICAgcmFk aW9baV0uY2hlY2tlZCA9IHRydWU7CiAgICAgICAgfQogICAgfQp9CgpmdW5jdGlv biBnZXRSYWRpb1ZhbHVlKHJhZGlvKSB7CiAgICB2YXIgbGVuID0gcmFkaW8ubGVu Z3RoOwogICAgaWYgKGxlbiA9PSB1bmRlZmluZWQpIHsKICAgICAgICBpZiAocmFk aW8uY2hlY2tlZCkgewogICAgICAgICAgICByZXR1cm4gcmFkaW8udmFsdWU7CiAg ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0K ICAgIH0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAg ICBpZiAocmFkaW9baV0uY2hlY2tlZCkgewogICAgICAgICAgICByZXR1cm4gcmFk aW9baV0udmFsdWU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICcnOwp9Cgpm dW5jdGlvbiByZ2JUb0hleChjKSB7CiAgICBpZiAoIWMubWF0Y2goL3JnYi9pZykp IHJldHVybiBjOyAvLyDl8evoIO3lIO3z5u3uIO/w5e7h8ODn7uL74OLy/AogICAg dmFyIGMsIHMsIGksIGggPSAnJywgeD0nMDEyMzQ1Njc4OUFCQ0RFRic7CiAgICBp ZiAoYykgewogICAgICAgIGMgPSBjLnJlcGxhY2UoL3JnYlwoL2lnLCcnKTsKICAg ICAgICBjID0gYy5yZXBsYWNlKC9cKS9pZywnJyk7CiAgICAgICAgcyA9IGMuc3Bs aXQoJywnKTsKCiAgICAgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspIHsKICAgICAg ICAgICAgbiA9IHBhcnNlSW50KHNbaV0pOwogICAgICAgICAgICBoICs9IHguY2hh ckF0KHBhcnNlSW50KG4vMTYpKSArIHguY2hhckF0KG4lMTYpOwogICAgICAgIH0K ICAgICAgICByZXR1cm4gJyMnK2g7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVy biBmYWxzZTsKICAgIH0KfQoKCgppZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l cikgewogICAgZnVuY3Rpb24gYWRkSGFuZGxlcihvYmplY3QsIGV2ZW50TmFtZSwg aGFuZGxlcikgewogICAgICAgIHZhciBuYW1lID0gZ2V0RE9NRXZlbnROYW1lKGV2 ZW50TmFtZSk7CiAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIobmFtZSwg aGFuZGxlciwgZmFsc2UpOwogICAgfQp9IGVsc2UgaWYgKGRvY3VtZW50LmF0dGFj aEV2ZW50KSB7CiAgICBmdW5jdGlvbiBhZGRIYW5kbGVyKG9iamVjdCwgZXZlbnRO YW1lLCBoYW5kbGVyKSB7CiAgICAgICAgdmFyIG5hbWUgPSBnZXRET01FdmVudE5h bWUoZXZlbnROYW1lKTsKICAgICAgICBvYmplY3QuYXR0YWNoRXZlbnQoJ29uJyAr IG5hbWUsIGhhbmRsZXIpOwogICAgfQp9CgppZiAoZG9jdW1lbnQucmVtb3ZlRXZl bnRMaXN0ZW5lcikgewogICAgZnVuY3Rpb24gcmVtb3ZlSGFuZGxlcihvYmplY3Qs IGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICAgIHZhciBuYW1lID0gZ2V0RE9N RXZlbnROYW1lKGV2ZW50TmFtZSk7CiAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50 TGlzdGVuZXIobmFtZSwgaGFuZGxlciwgZmFsc2UpOwogICAgfQp9IGVsc2UgaWYg KGRvY3VtZW50LmRldGFjaEV2ZW50KSB7CiAgICBmdW5jdGlvbiByZW1vdmVIYW5k bGVyKG9iamVjdCwgZXZlbnROYW1lLCBoYW5kbGVyKSB7CiAgICAgICAgdmFyIG5h bWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKICAgICAgICBvYmplY3Qu ZGV0YWNoRXZlbnQoJ29uJyArIG5hbWUsIGhhbmRsZXIpOwogICAgfQp9CgpmdW5j dGlvbiBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKSB7CiAgaWYgKGV2ZW50TmFt ZSAmJiBldmVudE5hbWUuaW5kZXhPZignOicpICE9IC0xKSByZXR1cm4gJ2RhdGFh dmFpbGFibGUnOwogIHJldHVybiBldmVudE5hbWU7Cn0KCi8vIGRvbTpsb2FkZWQs IGRlcml2ZWQgZnJvbSBwcm90b3R5cGUuanMKZnVuY3Rpb24gZmlyZShlbGVtZW50 LCBldmVudE5hbWUsIG1lbW8pIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICBp ZiAoZWxlbWVudCA9PSBkb2N1bWVudCAmJiBkb2N1bWVudC5jcmVhdGVFdmVudCAm JiAhZWxlbWVudC5kaXNwYXRjaEV2ZW50KQogICAgZWxlbWVudCA9IGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudDsKCiAgdmFyIGV2ZW50LCBuYW1lID0gZ2V0RE9NRXZl bnROYW1lKGV2ZW50TmFtZSk7CiAgaWYgKGRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7 CiAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7 CiAgICBldmVudC5pbml0RXZlbnQobmFtZSwgdHJ1ZSwgdHJ1ZSk7CiAgfSBlbHNl IHsKICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QoKTsKICAg IGV2ZW50LmV2ZW50VHlwZSA9ICdvbicgKyBuYW1lOwogIH0KCiAgZXZlbnQuZXZl bnROYW1lID0gZXZlbnROYW1lOwogIGV2ZW50Lm1lbW8gPSBtZW1vIHx8IHt9OwoK ICBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnQpIHsKICAgIGVsZW1lbnQuZGlzcGF0 Y2hFdmVudChldmVudCk7CiAgfSBlbHNlIHsKICAgIGVsZW1lbnQuZmlyZUV2ZW50 KGV2ZW50LmV2ZW50VHlwZSwgZXZlbnQpOwogIH0KCiAgcmV0dXJuIGV2ZW50Owp9 CgooZnVuY3Rpb24oKSB7CiAgLyogU3VwcG9ydCBmb3IgdGhlIERPTUNvbnRlbnRM b2FkZWQgZXZlbnQgaXMgYmFzZWQgb24gd29yayBieSBEYW4gV2ViYiwKICAgICBN YXR0aGlhcyBNaWxsZXIsIERlYW4gRWR3YXJkcyBhbmQgSm9obiBSZXNpZy4gKi8K CiAgdmFyIHRpbWVyOwoKICBmdW5jdGlvbiBmaXJlQ29udGVudExvYWRlZEV2ZW50 KCkgewogICAgaWYgKGRvY3VtZW50LmxvYWRlZCkgcmV0dXJuOwogICAgaWYgKHRp bWVyKSB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aW1lcik7CiAgICBmaXJlKGRvY3Vt ZW50LCAnZG9tOmxvYWRlZCcpOwogICAgZG9jdW1lbnQubG9hZGVkID0gdHJ1ZTsK ICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICBpZiAo bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdBcHBsZVdlYktpdC8nKSA+IC0x KSB7CiAgICAgIHRpbWVyID0gd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkg ewogICAgICAgIGlmICgvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJl YWR5U3RhdGUpKQogICAgICAgICAgZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpOwog ICAgICB9LCAwKTsKCiAgICAgIGFkZEhhbmRsZXIod2luZG93LCAnbG9hZCcsIGZp cmVDb250ZW50TG9hZGVkRXZlbnQpOwoKICAgIH0gZWxzZSB7CiAgICAgIGRvY3Vt ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlQ29u dGVudExvYWRlZEV2ZW50LCBmYWxzZSk7CiAgICB9CgogIH0gZWxzZSB7CiAgICAv LyBodHRwOi8vZGVhbi5lZHdhcmRzLm5hbWUvd2VibG9nLzIwMDYvMDYvYWdhaW4v I2NvbW1lbnQzMzU3OTQKICAgIGlmIChkb2N1bWVudC5ib2R5KSB7CiAgICAgIHRy eSB7CiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCds ZWZ0Jyk7CiAgICAgICAgZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpOwogICAgICB9 IGNhdGNoKGUpIHt9CiAgICB9CiAgICBpZiAoIWRvY3VtZW50LmxvYWRlZCkgc2V0 VGltZW91dChhcmd1bWVudHMuY2FsbGVlLCA1MCk7CiAgfQp9KSgpOwo= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=pulldown.js Content-Type: application/x-javascript; name=pulldown.js Content-Location: http://js.imgsmail.ru/r/js/blogs/pulldown.js?13 Content-Transfer-Encoding: Base64 Lyog4vvv4OTz+OrgICovCgpkb2N1bWVudC5kb21haW49J21haWwucnUnOwoKdmFy IF9saW5rX2E7CnZhciBldnRfYTsKdmFyIGpvdXJuYWxfZW1haWxfYTsKdmFyIGpv dXJuYWxfbmlja19hOwp2YXIgam91cm5hbF9kaXJfYTsKdmFyIG5vdF9zaG93X3Rv cDsKdmFyIG5vdF9zaG93X2F2YXRhciA9IDA7CnZhciBodG1sX2dyb3VwcyA9ICIi OwoKZnVuY3Rpb24gemFnbHVzaGthKCkKewogICAgdmFyIGRpdiA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCJ1c2VyRHJvcERvd25JZCIpOwogICAgLy8gx+Dk4OXs IO/u6+7m5e3o5SBkaXYt4AogICAgZGl2LnN0eWxlLndpZHRoPTE5MDsKICAgIGRp di5zdHlsZS5oZWlnaHQ9MTU1OwogICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2IHN0 eWxlPSJ3aWR0aDoxOTBweDtoZWlnaHQ6MTU1cHg7YmFja2dyb3VuZDojZjRmNGY0 IHVybChodHRwOi8vaW1nLm1haWwucnUvbWFpbC9ydS9pbWFnZXMvYmxvZ3MvbG9h ZGluZy5naWYpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0OyI+PHNwYWNlci8+PC9k aXY+JzsKICAgIGRpdi5zdHlsZS50b3AgPSBhYnNQb3NpdGlvbihfbGlua19hKS55 ICsgX2xpbmtfYS5vZmZzZXRIZWlnaHQ7CiAgICBkaXYuc3R5bGUubGVmdCA9IChz Y3JlZW5TaXplKCkudyAtIGFic1Bvc2l0aW9uKF9saW5rX2EpLnggLSAxOTAgPiAw KSA/IGFic1Bvc2l0aW9uKF9saW5rX2EpLnggOiBhYnNQb3NpdGlvbihfbGlua19h KS54IC0gMTkwICsgX2xpbmtfYS5vZmZzZXRXaWR0aDsKICAgIGRpdi5zdHlsZS5k aXNwbGF5ID0gIiI7CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGdldF9m cmllbmRfc3RhdHVzKGVtYWlsLCBmdW5jX2NhbGxiYWNrKQp7CiAgICAvKmlmIChu b3Rfc2hvd190b3AgPT0gMSkKICAgIHsKICAgICAgICByZW1vdmVIYW5kbGVyKGRv Y3VtZW50LCAiY2xpY2siLCB1c2VyTWVudUhpZGUpOwogICAgICAgIGJ1YmJsZSgp OwogICAgICAgIHVzZXJNZW51U2hvdyhfbGlua19hLCBldnRfYSwgam91cm5hbF9l bWFpbF9hLCBqb3VybmFsX25pY2tfYSwgam91cm5hbF9kaXJfYSwwLDAsMCwwLG5v dF9zaG93X3RvcCk7CiAgICB9CiAgICBlbHNlCiAgICB7Ki8KICAgICAgICBpbWcg PSBfbGlua19hLmZpcnN0Q2hpbGQ7CiAgICAgICAgaWYoaW1nLm5vZGVOYW1lID09 ICJJTUciKQogICAgICAgIHsKICAgICAgICAgICAgLy8g7/DoIO7y6vD78u7pIOrg 6u7pIOvo4e4g4vvv4OTz+OrlCiAgICAgICAgICAgIGlmKGdlYmkoJ3VzZXJEcm9w RG93bklkJykuc3R5bGUuZGlzcGxheSA9PScnKQogICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAvLyDv8Ogg6uvo6uUg7eAg8vMg5uUg8eDs8/4g4vvv4OTz+Orz IO/l8OXi5fL74uDl7CjiIO7h+/ft7uUg7+7r7ubl7ejlKSDl5SDq4PDy6O3q8wog ICAgICAgICAgICAgICAgaWYoaW1nLmlkID09ICdvcGVuX3B1bGxkb3duJykKICAg ICAgICAgICAgICAgICAgICBjaGFuZ2VJbWcoaW1nKTsKICAgICAgICAgICAgICAg IHVzZXJNZW51SGlkZV8yKCk7CiAgICAgICAgICAgICAgICAvLyDv8Ogg6uvo6uUg 7eAg5PDz4/P+IOL77+Dk8/jq8ywg7+Xw5fDy++Lg5ewo4iDu4fv37e7lIO/u6+7m 5e3o5Skg8vMg6uDw8ujt6vMg6u7y8OD/IPPm5SDh++vgIO7y6vL78uAg8ODt5eUK ICAgICAgICAgICAgICAgIGlmKG9wZW5faW1nID0gZ2ViaSgnb3Blbl9wdWxsZG93 bicpKQogICAgICAgICAgICAgICAgICAgIGNoYW5nZUltZyhvcGVuX2ltZyk7CiAg ICAgICAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoK ICAgICAgICAgICAgLy8g7/DoIOrr6OrlIO3gIOL77+Dk8/jq8yDv5fDl4uXw8vvi 4OXsIOrg8PLo7erzIO3gIO/w7vLo4u7v7uvu5u3z/gogICAgICAgICAgICBjaGFu Z2VJbWcoaW1nKTsKICAgICAgICB9CgogICAgICAgIHJlbW92ZUhhbmRsZXIoZG9j dW1lbnQsICJjbGljayIsIHVzZXJNZW51SGlkZSk7CiAgICAgICAgYnViYmxlKCk7 CiAgICAgICAgemFnbHVzaGthKCk7CiAgICAgICAgcGVybF9nZXRfZnJpZW5kX3N0 YXR1cyhlbWFpbCwgZnVuY19jYWxsYmFjayk7CiAgICAvL30KfQpmdW5jdGlvbiBj aGFuZ2VJbWcoaW1nKQp7CiAgICB2YXIgY2hhbmdlID0gMDsKICAgIHZhciBub3Rf Y2hhbmdlOwogICAgdmFyIGFjdCA9ICd1c2VyX2Fycm93X2FjdC5naWYnOwogICAg dmFyIHBhcyA9ICd1c2VyX2Fycm93X3Bhcy5naWYnOwogICAgdmFyIGFjdF8xID0g J3VzZXJfYXJyb3dfYWN0XzEuZ2lmJzsKICAgIHZhciBwYXNfMSA9ICd1c2VyX2Fy cm93X3Bhc18xLmdpZic7CgogICAgaWYoaW1nLmlkKQogICAgICAgIGltZy5pZCA9 ICIiOwogICAgZWxzZQogICAgICAgIGltZy5pZCA9ICJvcGVuX3B1bGxkb3duIjsK CiAgICBzcmMgPSBpbWcuc3JjOwoKICAgIGlmKHNyYy5pbmRleE9mKGFjdCkhPS0x KQogICAgewogICAgICAgIGNoYW5nZSA9IGFjdF8xOwogICAgICAgIG5vdF9jaGFu Z2UgPSBhY3Q7CiAgICB9CiAgICBpZihzcmMuaW5kZXhPZihhY3RfMSkhPS0xKQog ICAgewogICAgICAgIGNoYW5nZSA9IGFjdDsKICAgICAgICBub3RfY2hhbmdlID0g YWN0XzE7CiAgICB9CiAgICBpZihzcmMuaW5kZXhPZihwYXMpIT0tMSkKICAgIHsK ICAgICAgICBjaGFuZ2UgPSBwYXNfMTsKICAgICAgICBub3RfY2hhbmdlID0gcGFz OwogICAgfQogICAgaWYoc3JjLmluZGV4T2YocGFzXzEpIT0tMSkKICAgIHsKICAg ICAgICBjaGFuZ2UgPSBwYXM7CiAgICAgICAgbm90X2NoYW5nZSA9IHBhc18xOwog ICAgfQoKICAgIGlmKGNoYW5nZSkKICAgIHsKICAgICAgICBzcmMgPSBzcmMucmVw bGFjZShub3RfY2hhbmdlLCBjaGFuZ2UpOwogICAgICAgIGltZy5zcmMgPSBzcmM7 CiAgICB9Cn0KCmZ1bmN0aW9uIHNob3dfZnJpZW5kX2dyb3VwX3NlbGVjdG9yX2Nh bGxiYWNrMShncm91cHMsaGFzX2RlZmF1bHRfZ3JvdXAsZGl2X25hbWUsam91cm5h bF9lbWFpbCkKewogICAgdmFyIHBhcnRpY2lwYXRlID0gMDsKICAgIGFkZFRvRnJp ZW5kcyhncm91cHMsaGFzX2RlZmF1bHRfZ3JvdXAsam91cm5hbF9lbWFpbCxwYXJ0 aWNpcGF0ZSk7CiAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ImRpdkZvckZyaWVuZHNJZCIpOwogICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAiIjsK fQoKZnVuY3Rpb24gc2hvd19wYXJ0aWNpcGF0ZV9ncm91cF9zZWxlY3Rvcl9jYWxs YmFjazEoZ3JvdXBzLGhhc19kZWZhdWx0X2dyb3VwLGRpdl9uYW1lLGpvdXJuYWxf ZW1haWwpCnsKICAgIHZhciBwYXJ0aWNpcGF0ZSA9IDE7CiAgICBhZGRUb0ZyaWVu ZHMoZ3JvdXBzLGhhc19kZWZhdWx0X2dyb3VwLGpvdXJuYWxfZW1haWwscGFydGlj aXBhdGUpOwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk aXZGb3JGcmllbmRzSWQiKTsKICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gIiI7Cn0K CmZ1bmN0aW9uIGdldF9qb3VybmFsX2VtYWlsX2NhbGxiYWNrKGlzX2ZyaWVuZCwg aXNfc3Vic2NyLCBpc19jb21tdW5pdHkpCnsKICAgIHZhciBwYXJ0aWNpcGF0ZSA9 IDA7CiAgICAvL3BlcmxfZmV0Y2hfZ3JvdXBzKCcnLGpvdXJuYWxfZW1haWxfYSxz aG93X2ZyaWVuZF9ncm91cF9zZWxlY3Rvcl9jYWxsYmFjazEpOwogICAgcmVtb3Zl SGFuZGxlcihkb2N1bWVudCwgImNsaWNrIiwgdXNlck1lbnVIaWRlKTsKICAgIHVz ZXJNZW51U2hvdyhfbGlua19hLCBldnRfYSwgam91cm5hbF9lbWFpbF9hLCBqb3Vy bmFsX25pY2tfYSwgam91cm5hbF9kaXJfYSwgaXNfZnJpZW5kLCBpc19zdWJzY3Is IGlzX2NvbW11bml0eSwgcGFydGljaXBhdGUsIG5vdF9zaG93X3RvcCk7Cn0KCmZ1 bmN0aW9uIGdldF9qb3VybmFsX2VtYWlsX3BhcnRpY2lwYXRlX2NhbGxiYWNrKGlz X2ZyaWVuZCwgaXNfc3Vic2NyLCBpc19jb21tdW5pdHkpCnsKICAgIHZhciBwYXJ0 aWNpcGF0ZSA9IDE7CiAgICAvL3BlcmxfZmV0Y2hfZ3JvdXBzKCcnLGpvdXJuYWxf ZW1haWxfYSxzaG93X3BhcnRpY2lwYXRlX2dyb3VwX3NlbGVjdG9yX2NhbGxiYWNr MSk7CiAgICByZW1vdmVIYW5kbGVyKGRvY3VtZW50LCAiY2xpY2siLCB1c2VyTWVu dUhpZGUpOwogICAgdXNlck1lbnVTaG93KF9saW5rX2EsIGV2dF9hLCBqb3VybmFs X2VtYWlsX2EsIGpvdXJuYWxfbmlja19hLCBqb3VybmFsX2Rpcl9hLCBpc19mcmll bmQsIGlzX3N1YnNjciwgaXNfY29tbXVuaXR5LCBwYXJ0aWNpcGF0ZSwgbm90X3No b3dfdG9wKTsKfQoKZnVuY3Rpb24gZGlzYWJsZV9ncm91cF9jaGVja2JveGVzMSgp CnsKICAgIHZhciBncm91cF9zZWxlY3Rvcj1kb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgiZ3JvdXBfc2VsZWN0b3JfZm9ybTEiKTsKICAgIHZhciByYWRpbz1kb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgiYWRkX3dpdGhvdXRfZ3JvdXAxIik7CiAgICBpZihn cm91cF9zZWxlY3RvciAmJiByYWRpbykgewogICAgICAgIGZvcihpPTA7aTxncm91 cF9zZWxlY3Rvci5lbGVtZW50cy5sZW5ndGgtMTtpKyspCiAgICAgICAgaWYoZ3Jv dXBfc2VsZWN0b3IuZWxlbWVudHNbaV0ubmFtZT09Imdyb3VwIikKICAgICAgICAg ICAgZ3JvdXBfc2VsZWN0b3IuZWxlbWVudHNbaV0uZGlzYWJsZWQ9cmFkaW8uY2hl Y2tlZDsKICAgIH0KfQoKZnVuY3Rpb24gbmV3X2dyb3VwMSgpCnsKICAgIC8vaHRt bF9ncm91cHMgPSAiIjsKICAgIG5ld19uYW1lPXByb21wdCgiwuLl5Ojy5SDo7P8g 7e7i7ukg4/Dz7+/7IiwiIik7CiAgICBpZihuZXdfbmFtZSE9dW5kZWZpbmVkKSB7 CiAgICAgICAgcGVybF9uZXdfZ3JvdXBfZm9yX2FjdGl2ZV91c2VyKG5ld19uYW1l LG5ld19ncm91cF9jYWxsYmFjazEpOwogICAgfQp9CgpmdW5jdGlvbiBuZXdfZ3Jv dXBfY2FsbGJhY2sxKGdyb3VwX2lkLG5hbWUsbmFtZV93b193YnIpCnsKICAgIHZh ciBpbm5lckhUTUw9IjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9Z3JvdXAgdmFs dWU9XCIiK2dyb3VwX2lkKyJcIiBpZD1ncm91cF8iCiAgICAgICAgK2dyb3VwX2lk KyIgY2hlY2tlZD4mbmJzcDs8bGFiZWwgZm9yPWdyb3VwXyIrZ3JvdXBfaWQrIj4i K25hbWUrIjwvbGFiZWw+PGJyPiI7CiAgICB2YXIgc3Bhbj1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJzcGFuIik7CiAgICBzcGFuLmlkPSJncm91cF9zcGFuXyIrZ3Jv dXBfaWQ7CiAgICBzcGFuLmlubmVySFRNTD1pbm5lckhUTUw7CiAgICB2YXIgZ3Jv dXBzX2NoZWNrYm94ZXM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyb3Vwc19j aGVja2JveGVzMSIpOwogICAgaWYoZ3JvdXBzX2NoZWNrYm94ZXMpIHsKICAgICAg ICBncm91cHNfY2hlY2tib3hlcy5hcHBlbmRDaGlsZChzcGFuKTsKICAgIH0KICAg IHZhciByYWRpbz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWRkX3dpdGhfZ3Jv dXAxIik7CiAgICBpZihyYWRpbykgewogICAgICAgIHJhZGlvLmRpc2FibGVkPWZh bHNlOwogICAgICAgIHJhZGlvLmNoZWNrZWQ9dHJ1ZTsKICAgIH0KICAgIGRpc2Fi bGVfZ3JvdXBfY2hlY2tib3hlczEoKTsKfQoKLy8g1PPt6vbo/yDk6/8g7u/w5eTl 6+Xt6P8g8ODn7OXw7uIg4ujk6Ozu6SDu4evg8fLoIO7q7eAg4fDg8+fl8OAKZnVu Y3Rpb24gc2NyZWVuU2l6ZSgpIHsKICAgIHZhciB3LCBoOyAvLyDO4fr/4uv/5ewg 7+Xw5ezl7e375SwgdyAtIOTr6O3gLCBoIC0g4vvx7vLgCiAgICB3ID0gd2luZG93 LmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7CiAgICBoID0gd2luZG93LmRvY3Vt ZW50LmJvZHkuY2xpZW50SGVpZ2h0OwogICAgcmV0dXJuIHt3OncsIGg6aH07Cn0K Ly8g1PPt6vbo/yDk6/8g7/Dl5O7y4vDg+eXt6P8g4vHv6/vi4O3o/yDx7uH78ujp CmZ1bmN0aW9uIGJ1YmJsZSgpIHsKICAgIGlmICh3aW5kb3cuZXZlbnQgIT0gdW5k ZWZpbmVkKSB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsKICAgIGVs c2UgZXZ0X2EuY2FuY2VsQnViYmxlID0gdHJ1ZTsKfQovLyDU8+3q9uj/IOPl7eXw 4Pbo6CDt4OTv6PHoIOgg8fH76+roIOTr/yDv7uTv6PHq6C/u8u/o8eroIO7yIO7h 7e7i6+Xt6OkKZnVuY3Rpb24gcG9zdHNfc3Vic2NyaWJlX25hbWVsaW5rKGlzX3N1 YnNjciwgaXNfY29tbXVuaXR5LCBlbWFpbCkgewogICAgdmFyIHN1YnNjcjsKICAg IHZhciBsaW5rX3N1YnNjcjsKICAgIHZhciBvbmZ1bmM7CiAgICBpZiAoaXNfc3Vi c2NyID09IDApIHsKICAgICAgICBzdWJzY3IgPSAnPGltZyBjbGFzcz0iaWNvbiBJ RXBuZyIgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fc3Vic2Ny aWJlLnBuZyIgYWxpZ249ImFic21pZGRsZSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2 IiBhbHQ9Is/u5O/o8eDy/PH/IO3gIO7h7e7i6+Xt6P8iIGJvcmRlcj0iMCIgLz7P 7uTv6PHg8vzx/yDt4CDu4e3u4uvl7ej/JzsKICAgICAgICBpZiAoaXNfY29tbXVu aXR5ID09IDEpIHsKICAgICAgICAgICAgbGlua19zdWJzY3IgPSAnaHR0cDovL3Iu bWFpbC5ydS9jbG4zNTk4Lyc7CiAgICAgICAgICAgIC8vIOL75PDg8vwg4u7u4fnl PyDt4CDs4OUg7eXyIPLg6u7pIPHx++vq6Cwg8u7r/OruIOD/6vEKICAgICAgICAg ICAgbGlua19zdWJzY3IgKz0gKFBlcmxWYXJfQmxvZ3NQZXJsSG9zdCArIFBlcmxW YXJfQUNUSU9OX0RJUiArICdqY29tbWVudHNzdWJzY3JpYmU/dXNlcj0nICsgZW1h aWwgKyAnJnBvc3RzPTEmJyArIFBlcmxWYXJfYmFjayk7CiAgICAgICAgfSBlbHNl IHsKICAgICAgICAgICAgbGlua19zdWJzY3IgPSAnaHR0cDovL3IubWFpbC5ydS9j bG4zNTkwLyc7CiAgICAgICAgICAgIGxpbmtfc3Vic2NyICs9IChQZXJsVmFyX0Js b2dzUGVybEhvc3QgKyBQZXJsVmFyX0FDVElPTl9ESVIgKyAnamNvbW1lbnRzc3Vi c2NyaWJlP3VzZXI9JyArIGVtYWlsICsgJyZwb3N0cz0xJicgKyBQZXJsVmFyX2Jh Y2spOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgc3Vic2NyID0gJzxp bWcgY2xhc3M9Imljb24gSUVwbmciIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3Iv YmxvZ3MvaWNvX3Vuc3Vic2NyaWJlLnBuZyIgYWxpZ249ImFic21pZGRsZSIgd2lk dGg9IjE2IiBoZWlnaHQ9IjE2IiBhbHQ9Is7y7+jx4PL88f8g7vIg7uHt7uLr5e3o 6SIgYm9yZGVyPSIwIiAvPs7y7+jx4PL88f8g7vIg7uHt7uLr5e3o6Sc7CiAgICAg ICAgaWYgKGlzX2NvbW11bml0eSA9PSAxKSBsaW5rX3N1YnNjciA9ICdodHRwOi8v ci5tYWlsLnJ1L2NsbjM1OTkvJzsKICAgICAgICBlbHNlIGxpbmtfc3Vic2NyID0g J2h0dHA6Ly9yLm1haWwucnUvY2xuMzU5MS8nOwogICAgICAgIGxpbmtfc3Vic2Ny ICs9IChQZXJsVmFyX0Jsb2dzUGVybEhvc3QgKyBQZXJsVmFyX0FDVElPTl9ESVIg KyAnamNvbW1lbnRzc3Vic2NyaWJlP3VzZXI9JyArIGVtYWlsICsgJyZyZW1vdmU9 MSZwb3N0cz0xJicgKyBQZXJsVmFyX2JhY2spOwogICAgfQogICAgb25mdW5jID0g J3Bvc3RzX3N1YnNjcmliZV9hamF4Y2FsbChcJycrZW1haWwrJ1wnLCcraXNfc3Vi c2NyKycsJytpc19jb21tdW5pdHkrJyknOwogICAgcmV0dXJuIFtzdWJzY3IsbGlu a19zdWJzY3Isb25mdW5jXTsKfQovLyDU8+3q9uj/IO/u6uDn++Lg5fIgZGl2IPEg 6O307vDs4Pbo5ekKZnVuY3Rpb24gdXNlck1lbnVTaG93KF9saW5rLCBldnQsIGpv dXJuYWxfZW1haWwsIGpvdXJuYWxfbmljaywgam91cm5hbF9kaXIsIGlzX2ZyaWVu ZCwgaXNfc3Vic2NyLCBpc19jb21tdW5pdHksIHBhcnRpY2lwYXRlLCBub3Rfc2hv d190b3ApIHsKICAgIHZhciBmcmllbmQ7CiAgICB2YXIgc3Vic2NyOwogICAgdmFy IGxpbmtfc3Vic2NyOwogICAgdmFyIGxpbmtfc3Vic2NyX2Z1bmM7CiAgICB2YXIg bGlua19mcmllbmQ7CiAgICBpZiAocGFydGljaXBhdGUgPT0gMSkgewogICAgICAg IGxpbmtfZnJpZW5kID0gJ2h0dHA6Ly9yLm1haWwucnUvY2xuMzU5Ny8nICsgUGVy bFZhcl9CbG9nc1BlcmxIb3N0ICsgUGVybFZhcl9BQ1RJT05fRElSICsgJ2phZGRm cmllbmQ/cGFydGljaXBhdGU9MSZ1c2VyPScgKyBqb3VybmFsX2VtYWlsICsgJyYn ICsgUGVybFZhcl9iYWNrOwogICAgICAgIC8vbGlua19mcmllbmQgPSAnaHR0cDov L3IubWFpbC5ydS9jbG4zNTk3LycgKyAoaXNfY29tbXVuaXR5ID8gKCdteS5tYWls LnJ1JyArIGpvdXJuYWxfZGlyKSA6IChQZXJsVmFyX0Jsb2dzUGVybEhvc3QgKyBQ ZXJsVmFyX0FDVElPTl9ESVIgKyAnaicpKSArICdhZGRmcmllbmQ/cGFydGljaXBh dGU9MSZsZWF2ZT0xJnVzZXI9JyArIGpvdXJuYWxfZW1haWwgKyAnJicgKyBQZXJs VmFyX2JhY2s7CiAgICB9IGVsc2UgewogICAgICAgIGxpbmtfZnJpZW5kID0gJ2h0 dHA6Ly9yLm1haWwucnUvY2xuMzU4OS8nICsgUGVybFZhcl9CbG9nc1BlcmxIb3N0 ICsgUGVybFZhcl9BQ1RJT05fRElSICsgJ2phZGRmcmllbmQ/dXNlcj0nICsgam91 cm5hbF9lbWFpbCArICcmJyArIFBlcmxWYXJfYmFjazsKICAgICAgICAvL2xpbmtf ZnJpZW5kID0gJ2h0dHA6Ly9yLm1haWwucnUvY2xuMzU4OS8nICsgKGlzX2NvbW11 bml0eSA/ICgnbXkubWFpbC5ydScgKyBqb3VybmFsX2RpcikgOiAoUGVybFZhcl9C bG9nc1BlcmxIb3N0ICsgUGVybFZhcl9BQ1RJT05fRElSICsgJ2onKSkgKyAnYWRk ZnJpZW5kP2xlYXZlPTEmdXNlcj0nICsgam91cm5hbF9lbWFpbCArICcmJyArIFBl cmxWYXJfYmFjazsKICAgIH0KICAgIGlmIChpc19mcmllbmQgPT0gMCkgewogICAg ICAgIGZyaWVuZCA9ICfE7uHg4ujy/CDiIOTw8+f8/yc7CiAgICB9IGVsc2Ugewog ICAgICAgIGZyaWVuZCA9ICfT5ODr6PL8IOjnIOTw8+fl6Sc7CiAgICAgICAgbGlu a19mcmllbmQgKz0gJyZsZWF2ZT0xJzsKICAgIH0KICAgIHZhciBhID0gcG9zdHNf c3Vic2NyaWJlX25hbWVsaW5rKGlzX3N1YnNjciwgaXNfY29tbXVuaXR5LCBqb3Vy bmFsX2VtYWlsKTsKICAgIHN1YnNjciA9IGFbMF07CiAgICBsaW5rX3N1YnNjciA9 IGFbMV07CiAgICBsaW5rX3N1YnNjcl9mdW5jID0gYVsyXTsKICAgIHZhciB0b2Rh eSA9IG5ldyBEYXRlKCk7CiAgICAvLyDU7vDs6PDz5ewgSFRNTC3q7uQgZGl2LeAK ICAgIHZhciBIVE1MID0gW107CiAgICBIVE1MLnB1c2goJzxkaXYgY2xhc3M9InVz ZXJpbmZvIj4nKTsKICAgIGlmIChpc19jb21tdW5pdHkgPT0gMSkgewogICAgICAg IEhUTUwucHVzaCgnPGEgaHJlZj0iaHR0cDovL3IubWFpbC5ydS9jbG4zNTk1Lycg KyBQZXJsVmFyX0Jsb2dzUGVybEhvc3QgKyBqb3VybmFsX2RpciArICdpbmZvIj48 aW1nIGNsYXNzPSJpY29uIElFcG5nIiBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9y L2Jsb2dzL2ljb19pbmZvLnBuZyIgYWxpZ249ImFic21pZGRsZSIgd2lkdGg9IjE2 IiBoZWlnaHQ9IjE2IiBhbHQ9Isjt9O7w7OD26P8g7iDx7u7h+eXx8uLlIiBib3Jk ZXI9IjAiIC8+yO307vDs4Pbo/yDuIPHu7uH55fHy4uU8L2E+PGJyIC8+Jyk7CiAg ICAgICAgSFRNTC5wdXNoKCc8YSBocmVmPSInICsgam91cm5hbF9kaXIgKyAnamNv bW11bml0aWVzLWludml0YXRpb24iPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwu cnUvci9ibG9ncy9pY29fYWRkX2ZyaWVuZC5wbmciIGNsYXNzPSJpY29uIElFcG5n IiBhbGlnbj0iYWJzbWlkZGxlIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFsdD0i z/Do4+vg8ejy/CDk8PPn5ekiIGJvcmRlcj0iMCIgLz7P8Ojj6+Dx6PL8IOTw8+fl 6TwvYT48YnIgLz4nKTsKICAgICAgICAvL0hUTUwucHVzaCgnPGEgaHJlZj0iaHR0 cDovL3IubWFpbC5ydS9jbG4zNTk1L215Lm1haWwucnUnICsgam91cm5hbF9kaXIg KyAnaW5mbyI+PGltZyBjbGFzcz0iaWNvbiBJRXBuZyIgc3JjPSJodHRwOi8vaW1n Lm1haWwucnUvci9ibG9ncy9pY29faW5mby5wbmciIGFsaWduPSJhYnNtaWRkbGUi IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYWx0PSLI7fTu8Ozg9uj/IO4g8e7u4fnl 8fLi5SIgYm9yZGVyPSIwIiAvPsjt9O7w7OD26P8g7iDx7u7h+eXx8uLlPC9hPjxi ciAvPicpOwogICAgICAgIC8vSFRNTC5wdXNoKCc8YSBocmVmPSJodHRwOi8vbXku bWFpbC5ydScgKyBqb3VybmFsX2RpciArICdjb21tdW5pdGllcy1pbnZpdGF0aW9u Ij48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX2FkZF9m cmllbmQucG5nIiBjbGFzcz0iaWNvbiBJRXBuZyIgYWxpZ249ImFic21pZGRsZSIg d2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhbHQ9Is/w6OPr4PHo8vwg5PDz5+XpIiBi b3JkZXI9IjAiIC8+z/Do4+vg8ejy/CDk8PPn5ek8L2E+PGJyIC8+Jyk7CiAgICAg ICAgSFRNTC5wdXNoKCc8YSAnICsgKGlzX2ZyaWVuZD09MSA/ICcnIDogJ29uY2xp Y2s9InJldHVybiBzaG93X2ZyaWVuZF9ncm91cCgxKTsiJykgKyAnaHJlZj0iJyts aW5rX2ZyaWVuZCsnIiBtYz0xPjxpbWcgY2xhc3M9Imljb24gSUVwbmciIHNyYz0i aHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvJysoaXNfZnJpZW5kPT0xPydpY29f cXVpdF9jb21tLnBuZyc6J2ljb19lbnRlcl9jb21tLnBuZycpKyciIGFsaWduPSJh YnNtaWRkbGUiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYWx0PSIiIGJvcmRlcj0i MCIgLz4nKyhpc19mcmllbmQ9PTE/J8/u6ujt8/L8JzonwvHy8+/o8vwg4iDx7u7h +eXx8uLuJykrJzwvYT48YnIgLz4nKTsKICAgICAgICAvL0hUTUwucHVzaCgnPGEg aHJlZj0iJytsaW5rX2ZyaWVuZCsnIj48aW1nIGNsYXNzPSJpY29uIElFcG5nIiBz cmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzLycrKGlzX2ZyaWVuZD09MT8n aWNvX3F1aXRfY29tbS5wbmcnOidpY29fZW50ZXJfY29tbS5wbmcnKSsnIiBhbGln bj0iYWJzbWlkZGxlIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFsdD0iIiBib3Jk ZXI9IjAiIC8+JysoaXNfZnJpZW5kPT0xPyfP7uro7fPy/Cc6J8Lx8vPv6PL8IOIg 8e7u4fnl8fLi7icpKyc8L2E+PGJyIC8+Jyk7CiAgICAgICAgSFRNTC5wdXNoKCc8 ZGl2IGlkPSJkaXZGb3JGcmllbmRzSWQiIHN0eWxlPSJkaXNwbGF5OiBub25lIj48 L2Rpdj4nKTsKICAgICAgICBIVE1MLnB1c2goJzxhIGhyZWY9IicrbGlua19zdWJz Y3IrJyIgaWQ9ImxpbmtGb3JTdWJzY3JpYmUiIG9uY2xpY2s9InJldHVybiAnK2xp bmtfc3Vic2NyX2Z1bmMrJyIgbWM9MT4nK3N1YnNjcisnPC9hPjxiciAvPicpOwog ICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKG5vdF9zaG93X3RvcCA9PSAwKSB7 CiAgICAgICAgICAgICAgICBpZiAobm90X3Nob3dfYXZhdGFyID09IDApIHsKICAg ICAgICAgICAgICAgICAgICBIVE1MLnB1c2goJzxkaXY+PGltZyBzcmM9Imh0dHA6 Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iNSIgYm9yZGVy PSIwIiAvPjwvZGl2PicpOwogICAgICAgICAgICAgICAgICAgIEhUTUwucHVzaCgn PHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+PHRyPicpOwog ICAgICAgICAgICAgICAgICAgIEhUTUwucHVzaCgnPHRkPjxpbWcgc3JjPSJodHRw Oi8vYXZ0LmZvdG8ubWFpbC5ydScgKyBqb3VybmFsX2RpciArICdfYXZhdGFyIiBi b3JkZXI9IjAiIC8+PC90ZD48dGQgY2xhc3M9InBsNyI+Jyk7CiAgICAgICAgICAg ICAgICAgICAgSFRNTC5wdXNoKCc8YSBocmVmPSJodHRwOi8vci5tYWlsLnJ1L2Ns bjM2MTgvbXkubWFpbC5ydScram91cm5hbF9kaXIrJz9mcm9tX2NvbW1lcmNpYWw9 MTgiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fbXku cG5nIiBjbGFzcz0iSUVwbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVy PSIwIiBhbGlnbj0iYWJzbWlkZGxlIiB2c3BhY2U9IjIiIC8+PC9hPiZuYnNwOyZu YnNwOzxhIGhyZWY9Imh0dHA6Ly9teS5tYWlsLnJ1Jytqb3VybmFsX2RpcisnP2Zy b21fY29tbWVyY2lhbD0xOCIgc3R5bGU9ImNvbG9yOiNGRTdFMDA7Zm9udC1zaXpl Ojk1JTsiIHRhcmdldD0iX2JsYW5rIj7M6PA8L2E+PGJyIC8+Jyk7CiAgICAgICAg ICAgICAgICAgICAgSFRNTC5wdXNoKCc8YSBocmVmPSJodHRwOi8vci5tYWlsLnJ1 L2NsbjM2MTcvYmxvZ3MubWFpbC5ydScram91cm5hbF9kaXIrJyI+PGltZyBzcmM9 Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2ljb19ibG9nc19hbGwucG5nIiBj bGFzcz0iSUVwbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBh bGlnbj0iYWJzbWlkZGxlIiB2c3BhY2U9IjIiIC8+PC9hPiZuYnNwOyZuYnNwOzxh IGhyZWY9Iicram91cm5hbF9kaXIrJyIgc3R5bGU9ImNvbG9yOiNGRTdFMDA7Zm9u dC1zaXplOjk1JTsiPsHr7uM8L2E+PGJyIC8+Jyk7CiAgICAgICAgICAgICAgICAg ICAgSFRNTC5wdXNoKCc8YSBocmVmPSJodHRwOi8vci5tYWlsLnJ1L2NsbjM1NTQv Zm90by5tYWlsLnJ1Jytqb3VybmFsX2RpcisnIiB0YXJnZXQ9Il9ibGFuayI+PGlt ZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2ljb19mb3RvLnBuZyIg Y2xhc3M9IklFcG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIg YWxpZ249ImFic21pZGRsZSIgdnNwYWNlPSIyIiAvPjwvYT4mbmJzcDsmbmJzcDs8 YSBocmVmPSJodHRwOi8vZm90by5tYWlsLnJ1Jytqb3VybmFsX2RpcisnIiBzdHls ZT0iY29sb3I6I0ZFN0UwMDtmb250LXNpemU6OTUlOyIgdGFyZ2V0PSJfYmxhbmsi PtTu8u48L2E+PGJyIC8+Jyk7CiAgICAgICAgICAgICAgICAgICAgSFRNTC5wdXNo KCc8YSBocmVmPSJodHRwOi8vci5tYWlsLnJ1L2NsbjM1NTUvdmlkZW8ubWFpbC5y dScram91cm5hbF9kaXIrJyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRw Oi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fdmlkZW8ucG5nIiBjbGFzcz0iSUVw bmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbGlnbj0iYWJz bWlkZGxlIiB2c3BhY2U9IjIiIC8+PC9hPiZuYnNwOyZuYnNwOzxhIGhyZWY9Imh0 dHA6Ly92aWRlby5tYWlsLnJ1Jytqb3VybmFsX2RpcisnIiBzdHlsZT0iY29sb3I6 I0ZFN0UwMDtmb250LXNpemU6OTUlOyIgdGFyZ2V0PSJfYmxhbmsiPsLo5OXuPC9h PjxiciAvPicpOwogICAgICAgICAgICAgICAgICAgIEhUTUwucHVzaCgnPC90ZD48 L3RyPjwvdGFibGU+PGJyIC8+Jyk7CiAgICAgICAgICAgICAgICB9IGVsc2Ugewog ICAgICAgICAgICAgICAgICAgIEhUTUwucHVzaCgnPGRpdj48aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1LzAuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSI1IiBib3Jk ZXI9IjAiIC8+PC9kaXY+Jyk7CiAgICAgICAgICAgICAgICAgICAgSFRNTC5wdXNo KCc8ZGl2IGFsaWduPSJjZW50ZXIiPicpOwogICAgICAgICAgICAgICAgICAgIEhU TUwucHVzaCgnPGEgc3R5bGU9Im1hcmdpbi1yaWdodDo1cHg7IiBocmVmPSJodHRw Oi8vci5tYWlsLnJ1L2NsbjM2MTgvbXkubWFpbC5ydScram91cm5hbF9kaXIrJz9m cm9tX2NvbW1lcmNpYWw9MTgiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUv ci9ibG9ncy9pY29fbXkucG5nIiBjbGFzcz0iSUVwbmciIHdpZHRoPSIxNiIgaGVp Z2h0PSIxNiIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiB2c3BhY2U9IjIi IC8+PC9hPicpOwogICAgICAgICAgICAgICAgICAgIEhUTUwucHVzaCgnPGEgc3R5 bGU9Im1hcmdpbi1yaWdodDo1cHg7IiBocmVmPSJodHRwOi8vci5tYWlsLnJ1L2Ns bjM2MTcvYmxvZ3MubWFpbC5ydScram91cm5hbF9kaXIrJyI+PGltZyBzcmM9Imh0 dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2ljb19ibG9nc19hbGwucG5nIiBjbGFz cz0iSUVwbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbGln bj0iYWJzbWlkZGxlIiB2c3BhY2U9IjIiIC8+PC9hPicpOwogICAgICAgICAgICAg ICAgICAgIEhUTUwucHVzaCgnPGEgc3R5bGU9Im1hcmdpbi1yaWdodDo1cHg7IiBo cmVmPSJodHRwOi8vci5tYWlsLnJ1L2NsbjM1NTQvZm90by5tYWlsLnJ1Jytqb3Vy bmFsX2RpcisnIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9pbWcu bWFpbC5ydS9yL2Jsb2dzL2ljb19mb3RvLnBuZyIgY2xhc3M9IklFcG5nIiB3aWR0 aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIg dnNwYWNlPSIyIiAvPjwvYT4nKTsKICAgICAgICAgICAgICAgICAgICBIVE1MLnB1 c2goJzxhIHN0eWxlPSJtYXJnaW4tcmlnaHQ6NXB4OyIgaHJlZj0iaHR0cDovL3Iu bWFpbC5ydS9jbG4zNTU1L3ZpZGVvLm1haWwucnUnK2pvdXJuYWxfZGlyKyciIHRh cmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxv Z3MvaWNvX3ZpZGVvLnBuZyIgY2xhc3M9IklFcG5nIiB3aWR0aD0iMTYiIGhlaWdo dD0iMTYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgdnNwYWNlPSIyIiAv PjwvYT4nKTsKICAgICAgICAgICAgICAgICAgICBIVE1MLnB1c2goJzwvZGl2Picp OwogICAgICAgICAgICAgICAgICAgIEhUTUwucHVzaCgnPGRpdiBjbGFzcz0ibGlu ZSI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lkdGg9IjEi IGhlaWdodD0iMSIgYm9yZGVyPSIwIiAvPjwvZGl2PicpOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIEhUTUwucHVzaCgnPGEgaHJl Zj0iaHR0cDovL3IubWFpbC5ydS9jbG4zNTg2LycgKyBQZXJsVmFyX0Jsb2dzUGVy bEhvc3QgKyBqb3VybmFsX2RpciArICdpbmZvIj48aW1nIGNsYXNzPSJpY29uIElF cG5nIiBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2ljb19pbmZvLnBu ZyIgYWxpZ249ImFic21pZGRsZSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhbHQ9 Is4g7+7r/Ofu4uDy5evlIiBib3JkZXI9IjAiIC8+ziDv7uv85+7i4PLl6+U8L2E+ PGJyIC8+Jyk7CiAgICAgICAgICAgIC8vSFRNTC5wdXNoKCc8YSBocmVmPSInK2xp bmtfZnJpZW5kKyciIG9uY2xpY2s9InJldHVybiBqb3VybmFsX2FkZGZyaWVuZCgn ICsgaXNfZnJpZW5kICsgJywgMSwgdGhpcywgdGhpcy5ocmVmKTsiIG1jPTE+PGlt ZyBjbGFzcz0iaWNvbiBJRXBuZyIgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9i bG9ncy8nKyhpc19mcmllbmQ9PTE/J2ljb19kZWxldGVmcmllbmQuZ2lmJzonaWNv X2FkZF9mcmllbmQucG5nJykrJyIgYWxpZ249ImFic21pZGRsZSIgd2lkdGg9IjE2 IiBoZWlnaHQ9IjE2IiBhbHQ9IicrZnJpZW5kKyciIGJvcmRlcj0iMCIgLz4nK2Zy aWVuZCsnPC9hPjxiciAvPicpOwogICAgICAgICAgICBIVE1MLnB1c2goJzxkaXYg aWQ9ImRpdkZvckZyaWVuZHNJZCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+ Jyk7CiAgICAgICAgICAgIEhUTUwucHVzaCgnPGEgaHJlZj0iJytsaW5rX3N1YnNj cisnIiBpZD0ibGlua0ZvclN1YnNjcmliZSIgb25jbGljaz0icmV0dXJuICcrbGlu a19zdWJzY3JfZnVuYysnIiBtYz0xPicrc3Vic2NyKyc8L2E+PGJyIC8+Jyk7CiAg ICAgICAgICAgIEhUTUwucHVzaCgnPGRpdiBjbGFzcz0ibGluZSI+PGltZyBzcmM9 Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSIg Ym9yZGVyPSIwIiAvPjwvZGl2PicpOwogICAgICAgICAgICBIVE1MLnB1c2goJzxh IGNsYXNzPSJncmV5IiBocmVmPSJodHRwOi8vd3d3Lm1haWwucnUvYWdlbnQ/bWVz c2FnZSZ0bz0nK2pvdXJuYWxfZW1haWwrJyI+PGltZyBjbGFzcz0iaWNvbiIgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fYWRkX2luX2FnZW50LnBu ZyIgY2xhc3M9IklFcG5nIiBhbGlnbj0iYWJzbWlkZGxlIiB3aWR0aD0iMTYiIGhl aWdodD0iMTYiIGFsdD0ixO7h4OLo8vwg4iDg4+Xt8iIgYm9yZGVyPSIwIiAvPsTu 4eDi6PL8IOIg4OPl7fI8L2E+PGJyIC8+Jyk7CiAgICAgICAgICAgIEhUTUwucHVz aCgnPGEgY2xhc3M9ImdyZXkiIGhyZWY9Imh0dHA6Ly9yLm1haWwucnUvY2xuMzU5 My93aW4ubWFpbC5ydS9jZ2ktYmluL3NlbnRtc2c/VG89Jytqb3VybmFsX2VtYWls KyciPjxpbWcgY2xhc3M9Imljb24yIiBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9y L2Jsb2dzL2ljb193cml0ZV9sZXR0ZXIucG5nIiBjbGFzcz0iSUVwbmciIGFsaWdu PSJhYnNtaWRkbGUiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNyIgYWx0PSLN4O/o8eDy /CDv6PH87O4iIGJvcmRlcj0iMCI+zeDv6PHg8vwg7+jx/OzuPC9hPjxiciAvPicp OwogICAgICAgICAgICBIVE1MLnB1c2goJzxhIGNsYXNzPSJncmV5IiBocmVmPSJo dHRwOi8vci5tYWlsLnJ1L2NsbjM1OTQvY2FyZHMubWFpbC5ydS9ybmRfY2FyZC5o dG1sP0c9NCZFPTI5JnNlbmRlcm5hbWU9VGVzdCZzZW5kZXJlbWFpbD0nICsgIFBl cmxWYXJfQWN0aXZlRW1haWwgKyAnJnJjcHRuYW1lPScram91cm5hbF9uaWNrKycm cmNwdGVtYWlsPScram91cm5hbF9lbWFpbCsnJnNlbmRfZGF5PScrdG9kYXkuZ2V0 RGF0ZSgpKycmc2VuZF9tb249JysodG9kYXkuZ2V0TW9udGgoKSsxKSsnJnNlbmRf eWVhcj0nK3RvZGF5LmdldEZ1bGxZZWFyKCkrJyI+PGltZyBjbGFzcz0iaWNvbiBJ RXBuZyIgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fcG9zdF9j YXJkLnBuZyIgYWxpZ249ImFic21pZGRsZSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE3 IiBhbHQ9Is7y7/Dg4ujy/CDu8urw+/Lq8yIgYm9yZGVyPSIwIj7O8u/w4OLo8vwg 7vLq8Pvy6vM8L2E+PGJyIC8+Jyk7CiAgICAgICAgfQogICAgLy8gz+7q4Obl7CBk aXYKICAgIEhUTUwucHVzaCgnPC9kaXY+Jyk7CiAgICB2YXIgZGl2ID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJEcm9wRG93bklkJyk7CiAgICBkaXYuc3R5 bGUud2lkdGggPSAnMTkwcHgnOwogICAgZGl2LnN0eWxlLmhlaWdodCA9ICcnOwog ICAgZGl2LmlubmVySFRNTCA9IEhUTUwuam9pbignJyk7CiAgICAvLyDH4OTg5ewg 7+7r7ubl7ejlIGRpdi3gCiAgICBkaXYuc3R5bGUudG9wID0gYWJzUG9zaXRpb24o X2xpbmspLnkgKyBfbGluay5vZmZzZXRIZWlnaHQ7CiAgICBkaXYuc3R5bGUubGVm dCA9IChzY3JlZW5TaXplKCkudyAtIGFic1Bvc2l0aW9uKF9saW5rKS54IC0gZGl2 Lm9mZnNldFdpZHRoID4gMCkgPyBhYnNQb3NpdGlvbihfbGluaykueCA6IGFic1Bv c2l0aW9uKF9saW5rKS54IC0gZGl2Lm9mZnNldFdpZHRoICsgX2xpbmsub2Zmc2V0 V2lkdGg7CiAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgLy8gx+Dv8OX5 4OXsIOLx7+v74uDt6OUg8e7h+/Lo6SDv8Ogg6uvo6uUg7+4gxMjC8wogICAgcmVt b3ZlSGFuZGxlcihkaXYsICdjbGljaycsIGV2Zik7CiAgICBhZGRIYW5kbGVyKGRp diwgJ2NsaWNrJywgZXZmKTsKICAgIC8vIMTu4eDi6Owg7uHw4OHu8urzIOrr6Org CiAgICBhZGRIYW5kbGVyKGRvY3VtZW50LCAnY2xpY2snLCB1c2VyTWVudUhpZGUp OwoJdHJ5IHtncmVwTGlua3MoZGl2KTt9IGNhdGNoKGUpIHt9OyAvLyBjcmVhdGUg TXkgKDUyOTQ0MSkKICAgIHJldHVybiBmYWxzZTsKfQpmdW5jdGlvbiBldmYoZSkg eyBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7IGUuY2FuY2VsQnViYmxlID0gdHJ1ZTsg fQoKLy8g1PPt6vbo/yDk6/8g8erw+/Lo6SBkaXYtYSDv7iDq6+jq8yDt4CDk7urz 7OXt8gpmdW5jdGlvbiB1c2VyTWVudUhpZGUoKSB7CiAgICBpZihvcGVuX2ltZyA9 IGdlYmkoJ29wZW5fcHVsbGRvd24nKSkKICAgICAgICBjaGFuZ2VJbWcob3Blbl9p bWcpOwoKICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNl ckRyb3BEb3duSWQiKTsKICAgIHJlbW92ZUhhbmRsZXIoZG9jdW1lbnQsICJjbGlj ayIsIHVzZXJNZW51SGlkZSk7CiAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICJub25l IjsKfQoKLy8g1PPt6vbo/yDk6/8g8erw+/Lo6SBkaXYtYSDv7iDq6+jq8yDt4CDo 6u7t6vMg4vvv4OTz+OroCmZ1bmN0aW9uIHVzZXJNZW51SGlkZV8yKCkgewogICAg dmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyRHJvcERvd25J ZCIpOwogICAgcmVtb3ZlSGFuZGxlcihkb2N1bWVudCwgImNsaWNrIiwgdXNlck1l bnVIaWRlKTsKICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwp9CgovLyDE 7uHg4uvl7ejlIOTw8+fl6QpmdW5jdGlvbiBzaG93X2ZyaWVuZF9ncm91cChwYXJ0 aWNpcGF0ZSkgewogICAgaWYgKHBhcnRpY2lwYXRlID09IDEpCiAgICB7CiAgICAg ICAgcGVybF9mZXRjaF9ncm91cHMoJycsam91cm5hbF9lbWFpbF9hLHNob3dfcGFy dGljaXBhdGVfZ3JvdXBfc2VsZWN0b3JfY2FsbGJhY2sxKTsKICAgIH0KICAgIGVs c2UKICAgIHsKICAgICAgICBwZXJsX2ZldGNoX2dyb3VwcygnJyxqb3VybmFsX2Vt YWlsX2Esc2hvd19mcmllbmRfZ3JvdXBfc2VsZWN0b3JfY2FsbGJhY2sxKTsKICAg IH0KICAgIC8vdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXZG b3JGcmllbmRzSWQiKTsKICAgIC8vZGl2LnN0eWxlLmRpc3BsYXkgPSAiIjsKICAg IHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gYWRkVG9GcmllbmRzKGdyb3Vwcyxo YXNfZGVmYXVsdF9ncm91cCxqb3VybmFsX2VtYWlsLHBhcnRpY2lwYXRlKSB7CiAg ICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdkZvckZyaWVu ZHNJZCIpOwogICAgdmFyIGh0bWwgPSAiPGZvcm0gaWQ9J2dyb3VwX3NlbGVjdG9y X2Zvcm0xJyBzdHlsZT0nbWFyZ2luOjBweDsnIGFjdGlvbj0nIiArIFBlcmxWYXJf QUNUSU9OX0RJUiArICJqYWRkZnJpZW5kJz4iOwogICAgaHRtbCArPSAiPGlucHV0 IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwidXNlclwiIHZhbHVlPVwiIitqb3VybmFs X2VtYWlsKyJcIj4iOwogICAgaHRtbCArPSAiPGlucHV0IHR5cGU9XCJoaWRkZW5c IiBuYW1lPVwiYmFja1wiIHZhbHVlPVwiIiArICBQZXJsVmFyX2JhY2tfdmFsdWUg KyAiXCI+IjsKICAgIGh0bWwgKz0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFt ZT1cInBhcnRpY2lwYXRlXCIgdmFsdWU9XCIiK3BhcnRpY2lwYXRlKyJcIj4iOwog ICAgaHRtbCArPSI8aDM+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT0nYWRkX3dpdGhf Z3JvdXAnIGlkPVwiYWRkX3dpdGhfZ3JvdXAxXCIgdmFsdWU9XCIxXCIgb25jbGlj az1cImRpc2FibGVfZ3JvdXBfY2hlY2tib3hlczEodGhpcyk7XCIgIiArKGdyb3Vw cy5sZW5ndGg+MCAmJiBoYXNfZGVmYXVsdF9ncm91cCE9MD8iY2hlY2tlZCAiOiIg IikrKGdyb3Vwcy5sZW5ndGg8PTA/ImRpc2FibGVkPTEiOiIiKSsiPjxsYWJlbCBm b3I9YWRkX3dpdGhfZ3JvdXAxPsIg4/Dz7+/zPC9sYWJlbD48L2gzPiI7CiAgICBo dG1sICs9ICI8ZGl2IGlkPSdncm91cHNfY2hlY2tib3hlczEnIGNsYXNzPSd3aWR0 aENoZWNrQm94Jz4iOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVu Z3RoOyBpKyspIHsKICAgICAgICBodG1sICs9ICI8aW5wdXQgIisoaGFzX2RlZmF1 bHRfZ3JvdXA9PTA/ImRpc2FibGVkPTEiOiIiKSsiICIrKGdyb3Vwc1tpXVsiRGVm YXVsdCJdIT0wPyJjaGVja2VkIjoiIikrIiBuYW1lPWdyb3VwIHR5cGU9J2NoZWNr Ym94JyB2YWx1ZT0nIiArIGdyb3Vwc1tpXVsiSUQiXSArICInIGlkPSdjaGNiaWRf IiArIGkgKyAiJz48bGFiZWwgZm9yPSdjaGNiaWRfIiArIGkgKyAiJz4iICsgKGdy b3Vwc1tpXVsiRGVmYXVsdCJdIT0wPyI8c3BhbiBjbGFzcz1ncmVlbl9jPiI6IiIp ICsgZ3JvdXBzW2ldWyJOYW1lIl0gKyAoZ3JvdXBzW2ldWyJEZWZhdWx0Il0hPTA/ Ijwvc3Bhbj4iOiIiKSArICI8L2xhYmVsPjxicj4iOwogICAgfQogICAgaHRtbCAr PSAiPC9kaXY+IjsKICAgIGh0bWwgKz0gIjxkaXYgY2xhc3M9J25ld0dyb3VwJz48 YSBvbmNsaWNrPVwibmV3X2dyb3VwMSgpOyByZXR1cm4gZmFsc2U7XCIgaHJlZj0n Jz7N7uLg/yDj8PPv7+A8L2E+PC9kaXY+IjsKICAgIGh0bWwgKz0gIjxoMz48aW5w dXQgdHlwZT1yYWRpbyBuYW1lPVwiYWRkX3dpdGhfZ3JvdXBcIiBpZD0nYWRkX3dp dGhvdXRfZ3JvdXAxJyB2YWx1ZT1cIjBcIiBvbmNsaWNrPVwiZGlzYWJsZV9ncm91 cF9jaGVja2JveGVzMSh0aGlzKTtcIiAiICsoZ3JvdXBzLmxlbmd0aDw9MCB8fCBo YXNfZGVmYXVsdF9ncm91cD09MD8iY2hlY2tlZCI6IiIpKyI+Jm5ic3A7PGxhYmVs IGZvcj1hZGRfd2l0aG91dF9ncm91cDE+weXnIOPw8+/v+zwvbGFiZWw+PC9oMz4i OwogICAgaHRtbCArPSAiPGRpdiBjbGFzcz0nZm9yQnV0dCc+PGlucHV0IHR5cGU9 J3N1Ym1pdCcgdmFsdWU9J87KJz4mbmJzcDsmbmJzcDs8aW5wdXQgb25jbGljaz0n dXNlck1lbnVIaWRlKCknIHR5cGU9J2J1dHRvbicgdmFsdWU9J87y7OXt4Cc+PC9k aXY+IjsKICAgIGh0bWwgKz0gIjwvZm9ybT4iOwogICAgaHRtbF9ncm91cHMgPSBo dG1sOwogICAgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICAvL2Rpdi5zdHlsZS5k aXNwbGF5ID0gIiI7Cn0KCmZ1bmN0aW9uIHBvc3RzX3N1YnNjcmliZV9hamF4Y2Fs bGJhY2socmVtb3ZlLGVtYWlsKQp7CiAgICBpZihyZW1vdmU8MCkgcmV0dXJuOwog ICAgaWYocmVtb3ZlKSByZW1vdmU9MDsgZWxzZSByZW1vdmU9MTsKICAgIHZhciBs aW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmtGb3JTdWJzY3JpYmUn KTsKICAgIHZhciBzdWJzY3IsbGlua19zdWJzY3I7CiAgICBpZihsaW5rKSB7CiAg ICAgICAgdmFyIGEgPSBwb3N0c19zdWJzY3JpYmVfbmFtZWxpbmsocmVtb3ZlLGlz X2NvbW11bml0eSxlbWFpbCk7CiAgICAgICAgc3Vic2NyID0gYVswXTsKICAgICAg ICBsaW5rX3N1YnNjciA9IGFbMV07CiAgICAgICAgbGluay5pbm5lckhUTUwgPSBz dWJzY3I7CiAgICAgICAgbGluay5ocmVmID0gbGlua19zdWJzY3I7CiAgICAgICAg bGluay5vbmNsaWNrPWZ1bmN0aW9uKCkgeyByZXR1cm4gcG9zdHNfc3Vic2NyaWJl X2FqYXhjYWxsKGVtYWlsLHJlbW92ZSxpc19jb21tdW5pdHkpOyB9OwogICAgfQp9 CgpmdW5jdGlvbiBwb3N0c19zdWJzY3JpYmVfYWpheGNhbGwoZW1haWwscmVtb3Zl LGNvbW11bml0eSkKewogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnbGlua0ZvclN1YnNjcmliZScpOwogICAgaWYobGluaykgewogICAgICAg IGxpbmsuaW5uZXJIVE1MPWxpbmsuaW5uZXJIVE1MLnJlcGxhY2UoL1tePl0rJC8s J8L77+7r7f/l8vH/Li4uJyk7CiAgICAgICAgbGluay5vbmNsaWNrPWZ1bmN0aW9u KCkgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgICAgaXNfY29tbXVuaXR5ID0gY29t bXVuaXR5OwogICAgfQogICAgcGVybF9wb3N0c19jb21tZW50c19zdWJzY3JpYmUo MSxyZW1vdmUsMCxlbWFpbCxwb3N0c19zdWJzY3JpYmVfYWpheGNhbGxiYWNrKTsK ICAgIHJldHVybiBmYWxzZTsKfQoKdmFyIGlzX2NvbW11bml0eSA9IDA7CnZhciBu b3RfdG9wID0gMDsKCmZ1bmN0aW9uIG9wZW5fZHJvcGRvd25fYWxsKGEsIGV2ZW50 LCBlbWFpbCwgZGlyLCBuaWNrLCBub3RfdG9wLCBpc19jb21tdW5pdHkpCnsKICAg IF9saW5rX2EgPSBhOwogICAgZXZ0X2EgPSBldmVudDsKICAgIG5vdF9zaG93X3Rv cCA9IG5vdF90b3A7CiAgICBqb3VybmFsX2VtYWlsX2EgPSBlbWFpbDsKICAgIGpv dXJuYWxfZGlyX2EgPSBkaXI7CiAgICBqb3VybmFsX25pY2tfYT0gbmljazsKICAg IGlmKGlzX2NvbW11bml0eSkgZnVuYyA9IGdldF9qb3VybmFsX2VtYWlsX3BhcnRp Y2lwYXRlX2NhbGxiYWNrOwogICAgZWxzZSBmdW5jID0gZ2V0X2pvdXJuYWxfZW1h aWxfY2FsbGJhY2s7CiAgICBnZXRfZnJpZW5kX3N0YXR1cyhlbWFpbCwgZnVuYyk7 Cn0KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCmZ1bmN0aW9uIG1ha2VfY29tbWVudChQb3N0SUQsIGNvbW1lbnQpIHsK ICAgIHZhciBUaHJlYWRJRCA9IGNvbW1lbnRbJ0lEJ107CiAgICB2YXIgVXNlckRp ciA9IGNvbW1lbnRbJ1Bvc3RlckRpciddOwogICAgdmFyIElzU3RhciA9IGNvbW1l bnRbJ0lzU3RhciddOwogICAgdmFyIEltbXVuaXR5ID0gKGNvbW1lbnRbJ0ltbXVu aXR5J10gIT0gMCAmJiBjb21tZW50WydJbW11bml0eSddICE9ICd1bmRlZmluZWQn KSA/IHRydWUgOiBmYWxzZTsKICAgIHZhciBQb3N0ZXJJRCA9IGNvbW1lbnRbJ1Bv c3RlcklEJ107CiAgICB2YXIgUG9zdGVyRW1haWwgPSBjb21tZW50WydQb3N0ZXJF bWFpbCddOwogICAgdmFyIFBvc3RlciA9IGNvbW1lbnRbJ1Bvc3RlciddOwogICAg dmFyIFBvc3Rlck5hbWUgPSBjb21tZW50WydQb3N0ZXJOYW1lJ107CiAgICB2YXIg UG9zdGVyRGVsZXRlZCA9IGNvbW1lbnRbJ1Bvc3RlckRlbGV0ZWQnXTsKICAgIHZh ciBQb3N0ZXJJbmZvID0gY29tbWVudFsnUG9zdGVySW5mbyddOwogICAgdmFyIFBv c3RlckJpcnRoZGF5ID0gY29tbWVudFsnUG9zdGVyQmlydGhkYXknXTsKICAgIHZh ciBBdmF0YXJVcmwgPSBjb21tZW50WydBdmF0YXJVcmwnXTsKICAgIHZhciBKb3Vy bmFsSUQgPSBjb21tZW50WydKb3VybmFsSUQnXTsKICAgIHZhciBKb3VybmFsRW1h aWwgPSBjb21tZW50WydKb3VybmFsRW1haWwnXTsKICAgIHZhciBKb3VybmFsRGly ID0gY29tbWVudFsnSm91cm5hbERpciddOwogICAgdmFyIElzQ29tbWVudGFibGUg PSBjb21tZW50WydDb21tZW50YWJsZSddOwogICAgdmFyIElzU2NyZWVuYWJsZSA9 IGNvbW1lbnRbJ1NjcmVlbmFibGUnXTsKICAgIHZhciBJc0RlbGV0YWJsZSA9IGNv bW1lbnRbJ0RlbGV0YWJsZSddOwogICAgdmFyIElzUmVhZGFibGUgPSBjb21tZW50 WydSZWFkYWJsZSddOwogICAgdmFyIEluQmxhY2tMaXN0ID0gY29tbWVudFsnSW5C bGFja0xpc3QnXTsKICAgIHZhciBSZVN1YmplY3QgPSBjb21tZW50WydSZVN1Ympl Y3QnXTsKICAgIHZhciBGaWx0ZXJlZFN1YmplY3QgPSBjb21tZW50WydGaWx0ZXJl ZFN1YmplY3QnXTsKICAgIHZhciBDb21tZW50VGV4dCA9IGNvbW1lbnRbJ0ZpbHRl cmVkQ29tbWVudCddOwogICAgdmFyIENvbW1lbnRIaWRlID0gY29tbWVudFsnQ29t bWVudEhpZGUnXTsKICAgIHZhciBUaW1lID0gY29tbWVudFsnVGltZSddOwogICAg dmFyIENhbk1ha2VSZWFkYWJsZSA9IGNvbW1lbnRbJ0Nhbk1ha2VSZWFkYWJsZSdd OwogICAgdmFyIENhbk1ha2VDb21tZW50YWJsZSA9IGNvbW1lbnRbJ0Nhbk1ha2VD b21tZW50YWJsZSddOwogICAgdmFyIENhbkVkaXRCbGFja0xpc3QgPSBjb21tZW50 WydDYW5FZGl0QmxhY2tMaXN0J107CiAgICB2YXIgU2NyZWVuZWQgPSBjb21tZW50 WydTY3JlZW5lZCddOwogICAgdmFyIFNvbWVib2R5Q29tbWVudGFibGUgPSBjb21t ZW50WydTb21lYm9keUNvbW1lbnRhYmxlJ107CiAgICB2YXIgUHVibGljYWx5UmVh ZGFibGUgPSBjb21tZW50WydQdWJsaWNhbHlSZWFkYWJsZSddOwogICAgdmFyIEFj dGlvbkRpciA9IGNvbW1lbnRbJ0FjdGlvbkRpciddOwoKICAgIHZhciBIVE1MID0g W107CgogICAgSFRNTC5wdXNoKCc8dGFibGUgYm9yZGVyPTAgY2xhc3M9InRyZWQi IGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPjx0 ciB2YWxpZ249InRvcCI+PHRyPjx0ZCBjbGFzcz0iY29tbWVudF90ZXh0IGNvbW1l bnRfYmdfY29sb3IiIGlkPSJjb21tZW50X2hpZGVfYmdfdGQxXycgKyBUaHJlYWRJ RCArICciIHZhbGlnbj0idG9wIj4nKTsKCiAgICBpZiAoIUlzUmVhZGFibGUpIHsK ICAgICAgICBIVE1MLnB1c2goJzxkaXYgY2xhc3M9ImRlbF9kaXYiPjxpbWcgaGVp Z2h0PSIxOCIgYWxpZ249ImFic21pZGRsZSIgd2lkdGg9IjE4IiBhbHQ9Isru7Ozl 7fLg8OjpIPHq8PvyIiB0aXRsZT0iyu7s7OXt8uDw6Okg8erw+/IiIGNsYXNzPSJJ RXBuZyIgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fY29tbWVu dF9oaWRkZW4ucG5nIiAvPiZuYnNwOyZuYnNwO8ru7Ozl7fLg8OjpIPHq8PvyPC9k aXY+Jyk7CiAgICAgICAgcmV0dXJuIEhUTUwuam9pbignJyk7CiAgICB9CgogICAg dmFyIGh0bWwxID0gW107CiAgICBpZiAoQXZhdGFyVXJsKSB7CiAgICAgICAgaHRt bDEucHVzaCgnPGEgaHJlZj0iJyArIFVzZXJEaXIgKyAnIj48aW1nIHNyYz0iJyAr IEF2YXRhclVybCArICciIGJvcmRlcj0iMCI+PC9hPicpOwogICAgfSBlbHNlIHsK ICAgICAgICBpZiAoUG9zdGVySUQpIHsKICAgICAgICAgICAgaHRtbDEucHVzaCgn PGEgaHJlZj0iL2NnaS1iaW4vam91cm5hbC9ub3N1Y2h1c2VyP2pvdXJuYWxfaWQ9 JyArIFBvc3RlcklEICsgJyZwb3N0X2lkPScgKyBQb3N0SUQgKyAnIj48aW1nIHNy Yz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYXZhdGFycy8yNmRlbGV0ZWR1c2VyLmpw ZyIgYm9yZGVyPSIwIiAvPjwvYT4nKTsKICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICBodG1sMS5wdXNoKCc8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3Iv YXZhdGFycy8wMG5vYXZhdGFyLmpwZyIgYm9yZGVyPSIwIiAvPicpOwogICAgICAg IH0KICAgIH0KICAgIGh0bWwxID0gaHRtbDEuam9pbignJyk7CgogICAgaWYgKElz U3RhcikgewogICAgICAgIEhUTUwucHVzaCgnPHRhYmxlIGNlbGxzcGFjaW5nPSIw IiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InN0YXJfYXZhdGFyIj48dHI+PHRkIGNv bHNwYW49IjMiIGNsYXNzPSJjYW52dCI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFp bC5ydS9tYWlsL3J1L2ltYWdlcy9ibG9ncy9zdGFyX2JvcmRlcl90LmdpZiIgd2lk dGg9IjE1IiBoZWlnaHQ9IjYiIC8+PC90ZD48L3RyPjx0cj48dGQgY2xhc3M9ImNh bnZsIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L21haWwvcnUvaW1hZ2Vz L2Jsb2dzL3N0YXJfYm9yZGVyX2wuZ2lmIiB3aWR0aD0iNSIgaGVpZ2h0PSIxMSIg Lz48L3RkPjx0ZD4nKTsKICAgICAgICBIVE1MLnB1c2goaHRtbDEpOwogICAgICAg IEhUTUwucHVzaCgnPC90ZD48dGQgY2xhc3M9ImNhbnZyIj48aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1L21haWwvcnUvaW1hZ2VzL2Jsb2dzL3N0YXJfYm9yZGVy X3IuZ2lmIiB3aWR0aD0iNiIgaGVpZ2h0PSIxMiIgLz48L3RkPjwvdHI+PHRyPjx0 ZCBjb2xzcGFuPSIzIiBjbGFzcz0iY2FudmIiPjxpbWcgc3JjPSJodHRwOi8vaW1n Lm1haWwucnUvbWFpbC9ydS9pbWFnZXMvYmxvZ3Mvc3Rhcl9ib3JkZXJfYi5naWYi IHdpZHRoPSIxNSIgaGVpZ2h0PSI1IiAvPjwvdGQ+PC90cj48L3RhYmxlPicpOwog ICAgICAgIGlmIChQb3N0ZXJFbWFpbCkgewogICAgICAgICAgICBIVE1MLnB1c2go JzxkaXYgY2xhc3M9ImxhcmdlciI+PG5vYnI+PGEgdGFyZ2V0PSJfYmxhbmsiIG9u Y2xpY2s9InNob3dfYXZhKFwnJyArIEF2YXRhclVybCArICdiaWdcJyxcJycgKyBV c2VyRGlyICsgJ1wnKTsgcmV0dXJuIGZhbHNlOyIgaHJlZj0iIyI+8+Ll6+j36PL8 PC9hPjwvbm9icj48L2Rpdj4nKTsKICAgICAgICB9CiAgICAgICAgSFRNTC5wdXNo KCc8YnIgLz4nKTsKICAgIH0gZWxzZSB7CiAgICAgICAgSFRNTC5wdXNoKCc8ZGl2 IGNsYXNzPSJib3JkX2F2IHNtIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+ Jyk7CiAgICAgICAgSFRNTC5wdXNoKGh0bWwxKTsKICAgICAgICBIVE1MLnB1c2go JzxiciAvPicpOwogICAgICAgIGlmIChBdmF0YXJVcmwpIHsKICAgICAgICAgICAg SFRNTC5wdXNoKCc8ZGl2IGNsYXNzPSJsYXJnZXIiPjxub2JyPjxhIHRhcmdldD0i X2JsYW5rIiBvbmNsaWNrPSJzaG93X2F2YShcJycgKyBBdmF0YXJVcmwgKyAnYmln XCcsXCcnICsgVXNlckRpciArJ1wnKTsgcmV0dXJuIGZhbHNlOyIgaHJlZj0iIyIg c3R5bGU9ImNvbG9yOiAjQ0NDICFpbXBvcnRhbnQiPvPi5evo9+jy/DwvYT48L25v YnI+PC9kaXY+Jyk7CiAgICAgICAgfQogICAgICAgIEhUTUwucHVzaCgnPC9kaXY+ Jyk7CiAgICB9CgogICAgSFRNTC5wdXNoKCc8L3RkPjx0ZCBpZD0iY29tbWVudF9o aWRlX2JnX3RkMl8nICsgVGhyZWFkSUQgKyAnIiBjbGFzcz0iY29udCBjb21tZW50 X3RleHQgY29tbWVudF9iZ19jb2xvciIgd2lkdGg9IjEwMCUiIHZhbGlnbj0idG9w Ij4nKTsKICAgIGlmICghUHVibGljYWx5UmVhZGFibGUpIHsKICAgICAgICBIVE1M LnB1c2goJzxkaXYgY2xhc3M9aGlkZV9jb20gaWQ9InNjcmVlbmVkX25vdF9yZWFk YWJsZV8nICsgVGhyZWFkSUQgKyAnIj7K7uzs5e3y4PDo6SDx6vD78jwvZGl2Picp OwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoU2NyZWVuZWQpIHsKICAgICAgICAg ICAgSFRNTC5wdXNoKCc8ZGl2IGNsYXNzPWhpZGVfY29tIGlkPSJzY3JlZW5lZF8n ICsgVGhyZWFkSUQgKyAnIj7K7uzs5e3y4PDo6SDx6vD78jwvZGl2PicpOwogICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIEhUTUwucHVzaCgnPHNwYW4gaWQ9InVu c2NyZWVuZWRfJyArIFRocmVhZElEICsgJyI+PC9zcGFuPicpOwogICAgICAgIH0K ICAgIH0KICAgIEhUTUwucHVzaCgnPHRhYmxlIGNsYXNzPSJhdXRvciIgY2VsbHNw YWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIw Ij48dHI+PHRkIG5vd3JhcD4nKTsKICAgIGlmIChQb3N0ZXJFbWFpbCkgewogICAg ICAgIEhUTUwucHVzaCgnPGEgaHJlZj0iaHR0cDovL3d3dy5tYWlsLnJ1L2FnZW50 P21lc3NhZ2UmdG89JyArIFBvc3RlckVtYWlsICsgJyI+PGltZyBzcmM9Imh0dHA6 Ly9zdGF0dXMubWFpbC5ydS8/JyArIFBvc3RlckVtYWlsICsgJyIgd2lkdGg9MTMg aGVpZ2h0PTEzIGFsaWduPWFic21pZGRsZSBib3JkZXI9MD48L2E+Jm5ic3A7Jm5i c3A7PGEgaHJlZj0iJyArIFVzZXJEaXIgKyAnIj4nKTsKICAgICAgICBpZiAoUG9z dGVyRGVsZXRlZCkgSFRNTC5wdXNoKCc8cz4nKTsKICAgICAgICBIVE1MLnB1c2go UG9zdGVyTmFtZSk7CiAgICAgICAgaWYgKFBvc3RlckRlbGV0ZWQpIEhUTUwucHVz aCgnPHM+Jyk7CiAgICAgICAgSFRNTC5wdXNoKCc8L2E+Jyk7CiAgICAgICAgaWYg KElzU3RhcikgewogICAgICAgICAgICBIVE1MLnB1c2goJzxpbWcgc3JjPSJodHRw Oi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fc3Rhci5wbmciIGNsYXNzPSJJRXBu ZyIgYWx0PSLH4uXn5O375SDh6+7j6CDt4CBNYWlsLlJ1IiB3aWR0aD0iMTAiIGhl aWdodD0iMTAiIGJvcmRlcj0iMCIgYWxpZ249InRleHR0b3AiPicpOwogICAgICAg IH0KICAgICAgICBpZiAoUG9zdGVyQmlydGhkYXkpIHsKICAgICAgICAgICAgSFRN TC5wdXNoKCcmbmJzcDs8YSBocmVmPSInICsgVXNlckRpciArICdiaXJ0aGRheS5o dG1sIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX2Jp cnRoZGF5LnBuZyIgY2xhc3M9IklFcG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYi IGJvcmRlcj0iMCIgYWx0PSLk5e38IPDu5uTl7ej/IiBhbGlnbj0iYWJzbWlkZGxl IiAvPjwvYT4nKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmIChQ b3N0ZXJJRCkgewogICAgICAgICAgICBIVE1MLnB1c2goJzxpbWcgc3JjPSJodHRw Oi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fZGVsX3VzZXIucG5nIiBjbGFzcz0i SUVwbmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgYm9yZGVyPSIwIiBhbGlnbj0i YWJzbWlkZGxlIj4mbmJzcDsmbmJzcDs8YSBocmVmPSIvY2dpLWJpbi9qb3VybmFs L25vc3VjaHVzZXI/am91cm5hbF9pZD0nICsgSm91cm5hbElEICsgJyZwb3N0X2lk PScgKyBQb3N0SUQgKyAnIj48aT7P7uv85+7i4PLl6/wg8+Tg6+XtPC9pPjwvYT4n KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoUG9zdGVyKSB7CiAg ICAgICAgICAgICAgICBIVE1MLnB1c2goUG9zdGVyKTsKICAgICAgICAgICAgfSBl bHNlIHsKICAgICAgICAgICAgICAgIEhUTUwucHVzaCgnwO3u7ejs7e4nKTsKICAg ICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmIChQb3N0ZXJJbmZvKSB7 CiAgICAgICAgSFRNTC5wdXNoKCc8YSBjbGFzcz0ibWwzIiBvbmNsaWNrPSJvcGVu X2Ryb3Bkb3duX2NvbW1lbnRfJyArIFRocmVhZElEICsgJyh0aGlzLGV2ZW50KTsg cmV0dXJuIGZhbHNlOyIgaHJlZj0iIyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3Jj PSJodHRwOi8vaW1nLm1haWwucnUvbWFpbC9ydS9pbWFnZXMvYmxvZ3MvdXNlcl9h cnJvd19wYXMuZ2lmIiB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIGJvcmRlcj0iMCIg YWx0PSLM5e3+IO/u6/zn7uLg8uXr/yIgdGl0bGU9Iszl7f4g7+7r/Ofu4uDy5ev/ IiBhbGlnbj0iYWJzbWlkZGxlIiAvPjwvYT4nKTsKICAgIH0KCiAgICBpZiAoQ2Fu RWRpdEJsYWNrTGlzdCkgewogICAgICAgIEhUTUwucHVzaCgnPGRpdiBzdHlsZT0i ZGlzcGxheTogbm9uZTsiPjxzcGFuIGlkPSJQb3N0ZXJOYW1lXycgKyBUaHJlYWRJ RCArICciPicgKyBQb3N0ZXJOYW1lICsgJzwvc3Bhbj48L2Rpdj4mbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDs8YSBocmVmPSIjIiBvbmNsaWNrPSJibGFja19saXN0X2Nv bmZpcm0oXCcnICsgSm91cm5hbERpciArICdqYmxhY2tsaXN0P2VtYWlsPScgKyBQ b3N0ZXJFbWFpbCk7CiAgICAgICAgaWYgKEluQmxhY2tMaXN0KSBIVE1MLnB1c2go JyZkZWxldGU9MScpOwogICAgICAgIEhUTUwucHVzaCgnJmJhY2s9JyArIFBlcmxW YXJfYmFja192YWx1ZSArICcsJyk7CiAgICAgICAgaWYgKEluQmxhY2tMaXN0KSB7 CiAgICAgICAgICAgIEhUTUwucHVzaCgiJ2RlbCciKTsKICAgICAgICB9IGVsc2Ug ewogICAgICAgICAgICBIVE1MLnB1c2goIidhZGQnIik7CiAgICAgICAgfQogICAg ICAgIEhUTUwucHVzaCgnLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnUG9zdGVy TmFtZV8nICsgVGhyZWFkSUQgKyAnXCcpLmlubmVySFRNTCkiPicpOwogICAgICAg IGlmIChJbkJsYWNrTGlzdCkgewogICAgICAgICAgICBIVE1MLnB1c2goJzxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvbWFpbC9ydS9pbWFnZXMvYmxvZ3MvaWNv X2RlbF9ibGxpc3QucG5nIiBjbGFzcz0iSUVwbmciIHdpZHRoPSIxNiIgaGVpZ2h0 PSIxNiIgYWxpZ249ImFic21pZGRsZSIgYm9yZGVyPSIwIiB0aXRsZT0i0+Tg6+jy /CDo5yDX5fDt7uPuIPHv6PHq4CIgLz48L2E+Jyk7CiAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgSFRNTC5wdXNoKCc8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L21haWwvcnUvaW1hZ2VzL2Jsb2dzL2ljb19hZGRfYmxsaXN0LnBuZyIgY2xh c3M9IklFcG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFsaWduPSJhYnNtaWRk bGUiIGJvcmRlcj0iMCIgdGl0bGU9IsTu4eDi6PL8IOIg1+Xw7fvpIPHv6PHu6iIg Lz48L2E+Jyk7CiAgICAgICAgfQogICAgfQoKICAgIEhUTUwucHVzaCgnPC90ZD48 dGQgY2xhc3M9ImluZm8iIG5vd3JhcD4nICsgVGltZSArICcmbmJzcDsoPGEgaHJl Zj0iJyArIEpvdXJuYWxEaXIgKyBQb3N0SUQgKyAnLmh0bWw/dGhyZWFkPScgKyBU aHJlYWRJRCArICcmc2tpcD0wIj7x8fvr6uA8L2E+KTwvdGQ+PHRkIGNsYXNzPSJp bmZvIiBub3dyYXA+PGRpdiBpZD0iSFBvc3RfJyArIFRocmVhZElEICsgJyI+PGEg aHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNob3dfY29tbWVudChcJycgKyBQb3N0 SUQgKyAnXCcsIFwnJyArIFRocmVhZElEICsgJ1wnKTsiIHRpdGxlPSLR6vD78vwi PjxpbWcgaGVpZ2h0PSIxMSIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiB3 aWR0aD0iMTEiIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L21haWwvcnUvaW1hZ2Vz L2Jsb2dzLy0uanBnIiBjbGFzcz0ibXI1IiAvPtHq8Pvy/DwvYT48L2Rpdj48L3Rk PicpOwogICAgSFRNTC5wdXNoKCc8dGQgd2lkdGg9IjEwMCUiIGNsYXNzPSJpY29u cyIgbm93cmFwPicpOwoKICAgIGlmICghUHVibGljYWx5UmVhZGFibGUpIHsKICAg ICAgICBpZiAoQ2FuTWFrZVJlYWRhYmxlKSB7CiAgICAgICAgICAgIEhUTUwucHVz aCgnPGEgb25jbGljaz0icmV0dXJuIHNjcmVlbl9jb21tZW50KFwnJyArIFRocmVh ZElEICsgJ1wnKTsiIGhyZWY9IicgKyBBY3Rpb25EaXIgKyAnanNjcmVlbmNvbW1l bnQ/dXNlcj0nICsgSm91cm5hbEVtYWlsICsgJyZpZD0nICsgUG9zdElEICsgJyZz Y3JlZW49JyArIFRocmVhZElEICsgJyZyZWFkYWJsZT0xJmJhY2s9JyArIFBlcmxW YXJfYmFja192YWx1ZSArICciPjxpbWcgaWQ9InNjcmVlbl9pbWdfJyArIFRocmVh ZElEICsgJyIgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fY29t bWVudF9zaG93XzIucG5nIiBjbGFzcz0iSUVwbmciIHdpZHRoPSIxOCIgaGVpZ2h0 PSIxOCIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiBhbHQ9Is/u6uDn4PL8 IOru7Ozl7fLg8OjpIiB0aXRsZT0iz+7q4Ofg8vwg6u7s7OXt8uDw6OkiIC8+PC9h PiZuYnNwOycpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKElz U2NyZWVuYWJsZSkgewogICAgICAgICAgICBpZiAoU2NyZWVuZWQpIHsKICAgICAg ICAgICAgICAgIEhUTUwucHVzaCgnPGEgb25jbGljaz0icmV0dXJuIHNjcmVlbl9j b21tZW50KFwnJyArIFRocmVhZElEICsgJ1wnKTsiIGhyZWY9IicgKyBBY3Rpb25E aXIgKyAnanNjcmVlbmNvbW1lbnQ/dXNlcj0nICsgSm91cm5hbEVtYWlsICsgJyZp ZD0nICsgUG9zdElEICsgJyZzY3JlZW49JyArIFRocmVhZElEICsgJyZyZXN0b3Jl PTEmYmFjaz0nICsgUGVybFZhcl9iYWNrX3ZhbHVlICsgJyI+PGltZyBpZD0ic2Ny ZWVuX2ltZ18nICsgVGhyZWFkSUQgKyAnIiBzcmM9Imh0dHA6Ly9pbWcubWFpbC5y dS9yL2Jsb2dzL2ljb19jb21tZW50X3Nob3dfMi5wbmciIGNsYXNzPSJJRXBuZyIg d2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRk bGUiIGFsdD0iz+7q4Ofg8vwg6u7s7OXt8uDw6OkiIHRpdGxlPSLP7urg5+Dy/CDq 7uzs5e3y4PDo6SIgLz48L2E+Jm5ic3A7Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7 CiAgICAgICAgICAgICAgICBIVE1MLnB1c2goJzxhIG9uY2xpY2s9InJldHVybiBz Y3JlZW5fY29tbWVudChcJycgKyBUaHJlYWRJRCArICdcJyk7IiBocmVmPSInICsg QWN0aW9uRGlyICsgJ2pzY3JlZW5jb21tZW50P3VzZXI9JyArIEpvdXJuYWxFbWFp bCArICcmaWQ9JyArIFBvc3RJRCArICcmc2NyZWVuPScgKyBUaHJlYWRJRCArICcm YmFjaz0nICsgUGVybFZhcl9iYWNrX3ZhbHVlICsgJyIgPjxpbWcgaWQ9InNjcmVl bl9pbWdfJyArIFRocmVhZElEICsgJyIgc3JjPSJodHRwOi8vaW1nLm1haWwucnUv ci9ibG9ncy9pY29fY29tbWVudF9oaWRkZW4ucG5nIiBjbGFzcz0iSUVwbmciIHdp ZHRoPSIxOCIgaGVpZ2h0PSIxOCIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxl IiBhbHQ9ItHq8Pvy/CDq7uzs5e3y4PDo6SIgdGl0bGU9ItHq8Pvy/CDq7uzs5e3y 4PDo6SIgLz48L2E+Jm5ic3A7Jyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg ICB9CiAgICBpZiAoQ2FuTWFrZUNvbW1lbnRhYmxlKSB7CiAgICAgICAgaWYgKFNv bWVib2R5Q29tbWVudGFibGUpIHsKICAgICAgICAgICAgSFRNTC5wdXNoKCc8YSBv bmNsaWNrPSJyZXR1cm4gY2hhbmdlX2NvbW1lbnRfbWFrZV9ub3Rjb21tZW50YWJs ZShcJycgKyBUaHJlYWRJRCArICdcJyk7IiBocmVmPSInICsgQWN0aW9uRGlyICsg J2ptYWtlY29tbWVudG5vdGNvbW1lbnRhYmxlP3VzZXI9JyArIEpvdXJuYWxFbWFp bCArICcmaWQ9JyArIFBvc3RJRCArICcmY29tbWVudD0nICsgVGhyZWFkSUQgKyAn JmJhY2s9JyArIFBlcmxWYXJfYmFja192YWx1ZSArICciPjxpbWcgaWQ9ImNvbW1l bnRhYmxlX2ltZ18nICsgVGhyZWFkSUQgKyAnIiBzcmM9Imh0dHA6Ly9pbWcubWFp bC5ydS9yL2Jsb2dzL2ljb19sb2NrXzIucG5nIiBjbGFzcz0iSUVwbmciIHdpZHRo PSIxOCIgaGVpZ2h0PSIxOCIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiBh bHQ9Isfg7/Dl8ujy/CDq7uzs5e3y4PDo6CIgdGl0bGU9Isfg7/Dl8ujy/CDq7uzs 5e3y4PDo6CIgLz48L2E+Jm5ic3A7Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgSFRNTC5wdXNoKCc8YSBvbmNsaWNrPSJyZXR1cm4gY2hhbmdlX2NvbW1l bnRfbWFrZV9ub3Rjb21tZW50YWJsZShcJycgKyBUaHJlYWRJRCArICdcJyk7IiBo cmVmPSInICsgQWN0aW9uRGlyICsgJ2ptYWtlY29tbWVudG5vdGNvbW1lbnRhYmxl P3VzZXI9JyArIEpvdXJuYWxFbWFpbCArICcmaWQ9JyArIFBvc3RJRCArICcmY29t bWVudD0nICsgVGhyZWFkSUQgKyAnJnJlc3RvcmU9MSZiYWNrPScgKyBQZXJsVmFy X2JhY2tfdmFsdWUgKyAnIiA+PGltZyBpZD0iY29tbWVudGFibGVfaW1nXycgKyBU aHJlYWRJRCArICciIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNv X3VubG9ja18yLnBuZyIgY2xhc3M9IklFcG5nIiB3aWR0aD0iMTgiIGhlaWdodD0i MTgiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgYWx0PSLQ4Ofw5fjo8vwg 6u7s7OXt8uDw6OgiIHRpdGxlPSLQ4Ofw5fjo8vwg6u7s7OXt8uDw6OgiIC8+PC9h PiZuYnNwOycpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoSXNEZWxldGFibGUp IHsKCQlpZiAoSW1tdW5pdHkgJiYgUGVybFZhcl9BY3RpdmVFbWFpbCAhPSBQb3N0 ZXJFbWFpbCkgewoJCQlIVE1MLnB1c2goJzxiIHN0eWxlPSJjb2xvcjogcmVkOyIg dGl0bGU9IiEhISEhISEhISDC4Obt4P8g7+Xw8e7t4CAtIO3l6/zn/yDu4ejm4PLc ICEhISEhISEhISI+VklQPC9iPiZuYnNwOycpOwoJCX0KCQllbHNlIHsKICAgICAg ICBIVE1MLnB1c2goJzxhIGlkPWRfJyArIFRocmVhZElEICsgJyBvbmNsaWNrPSJy ZXR1cm4gc2hvd19kZWxfY29tbWVudCh0aGlzLFwnJyArIFRocmVhZElEICsgJ1wn KTsiIGhyZWY9IicgKyBBY3Rpb25EaXIgKyAnamRlbGNvbW1lbnQ/dXNlcj0nICsg Sm91cm5hbEVtYWlsICsgJyZpZD0nICsgUG9zdElEICsgJyZkZWxldGU9JyArIFRo cmVhZElEICsgJyZiYWNrPScgKyBQZXJsVmFyX2JhY2tfdmFsdWUgKyAnIj48aW1n IHNyYz1odHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fZGVsLnBuZyBjbGFz cz0iSUVwbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbGln bj0iYWJzbWlkZGxlIiBhbHQ9ItPk4Ovo8vwg6u7s7OXt8uDw6OkiIHRpdGxlPSLT 5ODr6PL8IOru7Ozl7fLg8OjpIiAvPjwvYT4mbmJzcDsnKTsKCQl9CiAgICB9CgoJ aWYgKEFjdGl2ZUVtYWlsKSB7CgkJSFRNTC5wdXNoKCc8YSBocmVmPSIjIiBvbmNs aWNrPSJzaG93Q29tcGxhaW5Gb3JtKHRoaXMsIFwnJyArIFRocmVhZElEICsgJ1wn LCBcJycgKyBQb3N0SUQgKyAnXCcpOyByZXR1cm4gZmFsc2U7IiBjbGFzcz0ibWZf c3BJY28gbWZfaVNwYW0iPt3y7iDx7+DsPC9hPicpOwoJfQoKICAgIEhUTUwucHVz aCgnPC90ZD48L3RyPjwvdGFibGU+Jyk7CgogICAgSFRNTC5wdXNoKCc8ZGl2IGNs YXNzPSJjb250Ij48ZGl2IGNsYXNzPSJwb3N0X3RleHQiPjxkaXYgY2xhc3M9InRl bSI+Jyk7CiAgICBpZiAoRmlsdGVyZWRTdWJqZWN0KSB7CiAgICAgICAgSFRNTC5w dXNoKCc8Yj4nICsgRmlsdGVyZWRTdWJqZWN0ICsgJzwvYj4nKTsKICAgIH0gZWxz ZSB7CiAgICAgICAgSFRNTC5wdXNoKCcoIDxiPsHl5yDy5ez7PC9iPiApJyk7CiAg ICB9CiAgICBIVE1MLnB1c2goJzwvZGl2PjxzcGFuPicgKyBDb21tZW50VGV4dCAr ICc8L3NwYW4+PC9kaXY+PC9kaXY+Jyk7CgogICAgaWYgKElzQ29tbWVudGFibGUp IHsKICAgICAgICBIVE1MLnB1c2goJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9 InN1YmplY3RfdGV4dF8nICsgVGhyZWFkSUQgKyAnIiBpZD0ic3ViamVjdF90ZXh0 XycgKyBUaHJlYWRJRCArICciIHZhbHVlPSInICsgUmVTdWJqZWN0ICsgJyIgLz48 aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb21tZW50X3RleHRfJyArIFRocmVh ZElEICsgJyIgaWQ9ImNvbW1lbnRfdGV4dF8nICsgVGhyZWFkSUQgKyAnIiB2YWx1 ZT0iJmx0O2kmZ3Q7JyArIENvbW1lbnRIaWRlICsgJyZsdDsvaSZndDsiIC8+PHAg Y2xhc3M9Z3Jfc20gaWQ9ImNvbW1lbnRhYmxlXycgKyBUaHJlYWRJRCArICciPjxh IGlkPSJsXycgKyBUaHJlYWRJRCArICciIG9uY2xpY2s9InJldHVybiBzaG93X2Fk ZF9jb21tZW50KFwnJyArIFRocmVhZElEICsgJ1wnLCcgKyBJc1NjcmVlbmFibGUg KyAnLFwnJyArIFBlcmxWYXJfYmFja192YWx1ZSArICdcJyk7IiBocmVmPSIjIiBt Yz0xPs7y4uXy6PL8PC9hPig8YSBpZD0iY18nICsgVGhyZWFkSUQgKyAnIiBvbmNs aWNrPSJyZXR1cm4gc2hvd19hZGRfY29tbWVudChcJycgKyBUaHJlYWRJRCArICdc JywgJyArIElzU2NyZWVuYWJsZSArICcsXCcnICsgUGVybFZhcl9iYWNrX3ZhbHVl ICsgJ1wnLFwneWVzXCcpOyIgaHJlZj0iIyIgbWM9MT7xIPbo8uDy7uk8L2E+KTwv cD4nKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKEluQmxhY2tMaXN0KSB7CiAg ICAgICAgICAgIEhUTUwucHVzaCgnPGEgaHJlZj0iJyArIEpvdXJuYWxEaXIgKyAn amJsYWNrbGlzdGVyciI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Js b2dzL2ljb19ub3RfY29tbWVudC5wbmciIGNsYXNzPSJJRXBuZyIgdGl0bGU9IsL7 IOTu4eDi6+Xt+yDiINfl8O376SDx7+jx7uoiIGFsaWduPSJhYnNtaWRkbGUiIGJv cmRlcj0iMCIgaGVpZ2h0PSIxMyIgd2lkdGg9IjEzIiAvPjwvYT4mbmJzcDsmbmJz cDs8YSBjbGFzcz0iZ3Jfc20iIGhyZWY9IicgKyBKb3VybmFsRGlyICsgJ2pibGFj a2xpc3RlcnIiPsru7Ozl7fLg8OjoIOfg7/Dl+eXt+zwvYT4nKTsKICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICBIVE1MLnB1c2goJzxwIGNsYXNzPWdyX3NtIGlk PSJub3Rjb21tZW50YWJsZV8nICsgVGhyZWFkSUQgKyAnIj48aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX2xvY2sucG5nIiBjbGFzcz0iSUVw bmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbGlnbj0iYWJz bWlkZGxlIiAvPiZuYnNwO8ru7Ozl7fLg8OjoIOfg7/Dl+eXt+zwvcD4nKTsKICAg ICAgICB9CiAgICB9CiAgICBIVE1MLnB1c2goJzwvdGQ+PC90cj48dHI+PHRkIGlk PSJhZGRfJyArIFRocmVhZElEICsgJyIgY2xhc3M9ImZfcSIgY29sc3Bhbj0iMiI+ PC90ZD48L3RyPjwvdGFibGU+Jyk7CgogICAgcmV0dXJuIEhUTUwuam9pbignJyk7 Cn0KCmZ1bmN0aW9uIG1ha2VfY29tbWVudF9saW5rKFBvc3RJRCwgVGhyZWFkSUQs IGhpZGUsIHdhaXQpIHsKICAgIHZhciBsaW5rLCBJRCwgdGV4dDsKICAgIGlmICho aWRlKSB7CiAgICAgICAgSUQgPSAnSFBvc3RfJyArIFRocmVhZElEOwogICAgfSBl bHNlIHsKICAgICAgICBJRCA9ICdDUG9zdF8nICsgVGhyZWFkSUQ7CiAgICB9CiAg ICBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoSUQpOwogICAgaWYgKCFs aW5rKSByZXR1cm4gZmFsc2U7CiAgICBpZiAod2FpdCkgewogICAgICAgIHRleHQg PSAnPGRpdiBjbGFzcz0iZ3JleSI+7+7k7ubk6PLlPC9kaXY+JzsKICAgIH0gZWxz ZSB7CiAgICAgICAgaWYgKGhpZGUpIHsKICAgICAgICAgICAgdGV4dCA9ICc8YSBo cmVmPSIjIiBvbmNsaWNrPSJyZXR1cm4gc2hvd19jb21tZW50KFwnJyArIFBvc3RJ RCArICdcJywgXCcnICsgVGhyZWFkSUQgKyAnXCcpOyIgY2xhc3M9Im1yNSIgdGl0 bGU9ItHq8Pvy/CI+PGltZyBoZWlnaHQ9IjExIiBib3JkZXI9IjAiIGFsaWduPSJh YnNtaWRkbGUiIHdpZHRoPSIxMSIgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvbWFp bC9ydS9pbWFnZXMvYmxvZ3MvLS5qcGciIGNsYXNzPSJtcjUiIC8+0erw+/L8PC9h Pic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGV4dCA9ICc8YSBocmVm PSIjIiBvbmNsaWNrPSJyZXR1cm4gc2hvd19jb21tZW50KFwnJyArIFBvc3RJRCAr ICdcJywgXCcnICsgVGhyZWFkSUQgKyAnXCcpOyIgY2xhc3M9Im1yNSIgdGl0bGU9 ItDg5+Ll8O3z8vwiPjxpbWcgaGVpZ2h0PSIxMSIgYm9yZGVyPSIwIiBhbGlnbj0i YWJzbWlkZGxlIiB3aWR0aD0iMTEiIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L21h aWwvcnUvaW1hZ2VzL2Jsb2dzLysuanBnIiBjbGFzcz0ibXI1IiAvPtDg5+Ll8O3z 8vw8L2E+JzsKICAgICAgICB9CiAgICB9CiAgICBsaW5rLmlubmVySFRNTCA9IHRl eHQ7CiAgICByZXR1cm4gdHJ1ZTsKfQoKdmFyIExvYWRlZFRocmVhZHMgPSB7fTsK ZnVuY3Rpb24gc2hvd19jb21tZW50KFBvc3RJRCwgVGhyZWFkSUQsIFBhZ2UpIHsK ICAgIG1ha2VfY29tbWVudF9saW5rKFBvc3RJRCwgVGhyZWFkSUQsIDAsIDEpOwog ICAgbWFrZV9jb21tZW50X2xpbmsoUG9zdElELCBUaHJlYWRJRCwgMSwgMSk7CiAg ICBpZiAoTG9hZGVkVGhyZWFkc1tUaHJlYWRJRF0pIHsKICAgICAgICB2YXIgZnVs bCwgc21hbGw7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw b3N0X3NtYWxsXycgKyBUaHJlYWRJRCkuc3R5bGUuZGlzcGxheT09J25vbmUnKSB7 CiAgICAgICAgICAgIGZ1bGwgPSAnbm9uZScsIHNtYWxsID0gJyc7CiAgICAgICAg fSBlbHNlIHsKICAgICAgICAgICAgZnVsbCA9ICcnLCBzbWFsbCA9ICdub25lJzsK ICAgICAgICB9CiAgICAgICAgdmFyIHRocmVhZCA9IExvYWRlZFRocmVhZHNbVGhy ZWFkSURdOwogICAgICAgIHZhciBsZW4gPSB0aHJlYWQubGVuZ3RoOwogICAgICAg IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgICAgdmFy IElEID0gdGhyZWFkW2ldOwogICAgICAgICAgICBpZiAoIUlEIHx8ICFkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgncG9zdF9mdWxsXycgKyBJRCkpIGNvbnRpbnVlOwog ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9zdF9mdWxsXycg KyBJRCkuc3R5bGUuZGlzcGxheSA9IGZ1bGw7CiAgICAgICAgICAgIGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdwb3N0X3NtYWxsXycgKyBJRCkuc3R5bGUuZGlzcGxh eSA9IHNtYWxsOwogICAgICAgICAgICBtYWtlX2NvbW1lbnRfbGluayhQb3N0SUQs IElELCAxLCAwKTsKICAgICAgICAgICAgbWFrZV9jb21tZW50X2xpbmsoUG9zdElE LCBJRCwgMCwgMCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAg IH0KICAgIHBlcmxfc2hvd19jb21tZW50KFBvc3RJRCwgVGhyZWFkSUQsIFBhZ2Us IHNob3dfY29tbWVudHNfY2FsbGJhY2spOwogICAgcmV0dXJuIGZhbHNlOwp9Cgpm dW5jdGlvbiBzaG93X2NvbW1lbnRzX2NhbGxiYWNrKFBvc3RJRCwgRGF0YSkgewog ICAgdmFyIFRocmVhZElEID0gRGF0YVswXVsnSUQnXTsKCiAgICB2YXIgdHJlZSA9 IFtdOwogICAgdmFyIGNvbW1lbnQ7CiAgICB3aGlsZSAoY29tbWVudCA9IERhdGEu c2hpZnQoKSkgewogICAgICAgIHZhciBjSUQgPSBjb21tZW50WydJRCddOwogICAg ICAgIHZhciBwb3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bvc3RfZnVs bF8nICsgY0lEKTsKICAgICAgICBpZiAoIXBvc3QpIGNvbnRpbnVlOwoKICAgICAg ICBpZiAoIUxvYWRlZFRocmVhZHNbY0lEXSkgewogICAgICAgICAgICBwb3N0Lmlu bmVySFRNTCA9IG1ha2VfY29tbWVudChQb3N0SUQsIGNvbW1lbnQpOwogICAgICAg IH0KICAgICAgICBwb3N0LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICB2YXIg b2xkUG9zdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3N0X3NtYWxsXycg KyBjSUQpOwogICAgICAgIG9sZFBvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJzsK ICAgICAgICBtYWtlX2NvbW1lbnRfbGluayhQb3N0SUQsIGNJRCwgMSwgMCk7CiAg ICAgICAgdHJlZS5wdXNoKHsgSUQ6IGNJRCwgTGV2ZWw6IHBhcnNlSW50KGNvbW1l bnRbJ1NMZXZlbCddKSB9KTsKCQl0cnkge2dyZXBMaW5rcyhwb3N0KTt9IGNhdGNo KGUpIHt9OyAvLyBjcmVhdGUgTXkgKDUyOTQ0MSkKICAgIH0KICAgIC8vIHJlbWVt YmVyIGZvciBlYWNoIGNvbW1lbnQgaGlzIGNoaWxkcwogICAgdmFyIGxlbiA9IGkg PSB0cmVlLmxlbmd0aDsKICAgIHdoaWxlIChpLS0pIHsKICAgICAgICB2YXIgcElE ID0gdHJlZVtpXVsnSUQnXTsKICAgICAgICB2YXIgcExldmVsID0gdHJlZVtpXVsn TGV2ZWwnXTsKICAgICAgICBMb2FkZWRUaHJlYWRzW3BJRF0gPSBbcElEXTsKICAg ICAgICBmb3IgKHZhciBqID0gaSsxOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICAg ICAgaWYgKHBhcnNlSW50KHRyZWVbal1bJ0xldmVsJ10pIDw9IHBMZXZlbCkgYnJl YWs7CiAgICAgICAgICAgIExvYWRlZFRocmVhZHNbcElEXS5wdXNoKHRyZWVbal1b J0lEJ10pOwogICAgICAgIH0KICAgIH0KfQ== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=help.js Content-Type: application/x-javascript; name=help.js Content-Location: http://js.imgsmail.ru/r/js/blogs/help.js?8 Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gc2hvd19oZWxwKGV2ZW50LCBoZWxwX3RleHQpIHsKICAgIGlmKCFl dmVudCkgZXZlbnQgPSB3aW5kb3cuZXZlbnQ7CiAgICB2YXIgZWxlbWVudCA9IGV2 ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50OwogICAgdmFyIGRpdiA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJoZWxwX2RpdiIpOwogICAgaWYgKGVsZW1l bnQgJiYgZGl2KSB7CiAgICAgICAgdmFyIGNvb3IgPSBnZXRfcG9zaXRpb24oZWxl bWVudCk7CiAgICAgICAgZGl2LmlubmVySFRNTD0iPGEgb25jbGljaz1cInJldHVy biBjbGVhcl9oZWxwKClcIiBocmVmPVwiXCI+PGltZyBzcmM9aHR0cDovL2ltZy5t YWlsLnJ1L21haWwvcnUvaW1hZ2VzL2Jsb2dzL2Nsb3NlX2hlbHAuZ2lmIGhlaWdo dD03IHdpZHRoPTcgYm9yZGVyPTAgYWxpZ249cmlnaHQ+PC9hPjxicj4iK2hlbHBf dGV4dDsKICAgICAgICBkaXYuY2xhc3NOYW1lPSJoZWxwX2RpdiI7CiAgICAgICAg ZGl2LnN0eWxlLnRvcCA9IChjb29yLnRvcCtlbGVtZW50Lm9mZnNldEhlaWdodCkr InB4IjsKICAgICAgICBkaXYuc3R5bGUubGVmdCA9IGNvb3IubGVmdCsicHgiOwog ICAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIGRpdi5z dHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBkaXYuc3R5bGUudmlzaWJp bGl0eSA9ICJ2aXNpYmxlIjsKICAgICAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0 cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBzaG93X2Vy cm9yKGV2ZW50LCB0ZXh0LCByaWdodCkgeyAKICAgIGlmICghZXZlbnQpIHsKICAg ICAgICBldmVudCA9IHdpbmRvdy5ldmVudDsKICAgIH0KICAgIHZhciBlbGVtZW50 ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7CiAgICB2YXIgZGl2 ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhlbHBfZGl2Iik7CiAgICBpZiAo ZWxlbWVudCAmJiBkaXYpIHsKICAgICAgICB2YXIgY29vciA9IGdldF9wb3NpdGlv bihlbGVtZW50KTsKICAgICAgICBkaXYuaW5uZXJIVE1MID0gIjxhIG9uY2xpY2s9 XCJyZXR1cm4gY2xlYXJfaGVscCgpXCIgaHJlZj1cIlwiPjxpbWcgc3JjPWh0dHA6 Ly9pbWcubWFpbC5ydS9tYWlsL3J1L2ltYWdlcy9ibG9ncy9jbG9zZV9oZWxwLmdp ZiBoZWlnaHQ9NyB3aWR0aD03IGJvcmRlcj0wIGFsaWduPXJpZ2h0PjwvYT48YnIg Lz4iICsgdGV4dDsKICAgICAgICBkaXYuY2xhc3NOYW1lID0gImVycm9yX2RpdiI7 CiAgICAgICAgZGl2LnN0eWxlLnRvcCA9IGNvb3IudG9wICsgZWxlbWVudC5vZmZz ZXRIZWlnaHQgKyAicHgiOwogICAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gIm5v bmUiOwogICAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAg ICBkaXYuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKICAgICAgICBpZiAo cmlnaHQpCiAgICAgICAgICAgIGRpdi5zdHlsZS5sZWZ0ID0gKGNvb3IubGVmdCAt IGRpdi5vZmZzZXRXaWR0aCArIGVsZW1lbnQub2Zmc2V0V2lkdGgpKyJweCI7CiAg ICAgICAgZWxzZQogICAgICAgICAgICBkaXYuc3R5bGUubGVmdCA9IGNvb3IubGVm dCArICJweCI7CiAgICAgICAgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsKICAg IH0KICAgIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gc2hvd19oZWxwXzIoZXZl bnQsIGhlbHBfdGV4dCkgewogICAgaWYgKCFldmVudCkgZXZlbnQgPSB3aW5kb3cu ZXZlbnQ7CiAgICB2YXIgZWxlbWVudCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5z cmNFbGVtZW50OwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCJoZWxwX2RpdiIpOwogICAgaWYgKGVsZW1lbnQgJiYgZGl2KSB7CiAgICAgICAg dmFyIGNvb3IgPSBnZXRfcG9zaXRpb24oZWxlbWVudCk7CiAgICAgICAgZGl2Lmlu bmVySFRNTD0iPGEgb25jbGljaz1cInJldHVybiBjbGVhcl9oZWxwKClcIiBocmVm PVwiXCI+PGltZyBzcmM9aHR0cDovL2ltZy5tYWlsLnJ1L21haWwvcnUvaW1hZ2Vz L2Jsb2dzL2Nsb3NlX2hlbHAuZ2lmIGhlaWdodD03IHdpZHRoPTcgYm9yZGVyPTAg YWxpZ249cmlnaHQ+PC9hPjxicj4iK2hlbHBfdGV4dDsKICAgICAgICBkaXYuY2xh c3NOYW1lPSJoZWxwX2RpdiI7CiAgICAgICAgZGl2LnN0eWxlLnRvcCA9IChjb29y LnRvcCtlbGVtZW50Lm9mZnNldEhlaWdodCkrInB4IjsKICAgICAgICBkaXYuc3R5 bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBkaXYuc3R5bGUuZGlzcGxheSA9 ICJibG9jayI7CiAgICAgICAgZGl2LnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJs ZSI7CiAgICAgICAgZGl2LnN0eWxlLmxlZnQgPSAoY29vci5sZWZ0IC0gZGl2Lm9m ZnNldFdpZHRoICsgZWxlbWVudC5vZmZzZXRXaWR0aCkrInB4IjsKICAgICAgICBl dmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNl Owp9CgpmdW5jdGlvbiBjbGVhcl9oZWxwKCkgewogICAgdmFyIGRpdiA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCJoZWxwX2RpdiIpOwogICAgaWYgKGRpdikgewog ICAgICAgIGRpdi5jbGFzc05hbWUgPSAiaGVscF9kaXYiOwogICAgICAgIGRpdi5z dHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9 CgpmdW5jdGlvbiBnZXRfcG9zaXRpb24oZWwpIHsgcmV0dXJuIGdldEVsZW1Qb3Mo ZWwpIH0KCmZ1bmN0aW9uIGhpZGVfaGVscCAoZXZlbnQpewogICAgdmFyIGNoZWNr X2YgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGVscF9kaXYiKTsKICAgIGlm IChjaGVja19mKSB7CiAgICAgICAgdmFyIGV2ZW50ID0gKGV2ZW50KSA/IGV2ZW50 IDogKCh3aW5kb3cuZXZlbnQpID8gZXZlbnQgOiBudWxsICk7CiAgICAgICAgdmFy IGVsZW1lbnQgPSAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KSA/IGV2ZW50LnRhcmdl dCA6ICgoZXZlbnQgJiYgZXZlbnQuc3JjRWxlbWVudCkgPyBldmVudC5zcmNFbGVt ZW50IDogbnVsbCk7CiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5pZCAh PSAiaGVscF9kaXYiICYmIGVsZW1lbnQudGFnTmFtZSAhPSAiQSIpIHsKICAgICAg ICAgICAgY2hlY2tfZi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIH0K ICAgIH0KfQoKdmFyIFBlcmxWYXJfQWN0aXZlSUQgPSBQZXJsVmFyX0FjdGl2ZUlE ID8gUGVybFZhcl9BY3RpdmVJRCA6ICdBY3RpdmVJRCc7CnZhciBIZWxwcyA9IFtd Owp2YXIgaGVscERhdGEgPSB7CiAgICAnY2hhbGxlbmdlLXBsdXMxMCc6ICc8aDIg Y2xhc3M9ImZsIHByNSI+wiDk5fH/8urzITwvaDI+PGEgaHJlZj0iL21lZ2F2b3Rl Ij7P7uTw7uHt5eU8L2E+PGRpdiBjbGFzcz0ibWI1IG10NSBjbF9iIj48c3BhbiBj bGFzcz0iZ3JfOTk5Ij7C7ufs7ubt7vHy/CDx8uDi6PL8IO725e3q8yArMTAg4iDy 5ffl7ejlIDEg9+Dx4C48L3NwYW4+PGJyPsTr/yDz9+Dx8uj/IO7y7/Dg4vzy5SBT TVM8L2Rpdj48ZGl2IGNsYXNzPSJjb2RlIj7xIOru5O7sPC9kaXY+PGRpdiBjbGFz cz0icmlnaHRfY29kZSI+PGIgY2xhc3M9Im9yYW5nZSI+NTErJyArIFBlcmxWYXJf QWN0aXZlSUQgKyAnPC9iPjwvZGl2PjxkaXYgY2xhc3M9ImNvZGUiPu3gIO3u7OXw PC9kaXY+PGRpdiBjbGFzcz0icmlnaHRfY29kZSI+PGRpdiBjbGFzcz0iZmxsIG9y YW5nZSIgc3R5bGU9ImhlaWdodDogMzBweDsgd2lkdGg6IDQwcHg7Ij48YiBpZD0i VXNlclNob3J0TnVtYmVyIj40NDQ2PC9iPjwvZGl2PsXx6+gg4vsg7eD17uTo8uXx /CDiIDxzcGFuIGlkPSJVc2VyQ291bnRyeSI+0O7x8ejoPC9zcGFuPjxicj48YSBv bmNsaWNrPSJyZXR1cm4gbmV3SGVscChldmVudCwgXCdjaGFsbGVuZ2UtY291bnRy eVwnLCAxODAsIHsgdG9wOiAwLCBsZWZ0OiAwIH0pOyIgaHJlZj0iIyIgbm9jbG9z ZT0xPsTw8+Pg/yDx8vDg7eA8L2E+PC9kaXY+PGRpdiBjbGFzcz0ibXQ1Ij7R8u7o 7O7x8vwg8/Hr8+PoOiAwLDk5IPMu5S4g4eXnIM3E0S48YnI+PGEgaHJlZj0iaHR0 cDovL3JhdGVzLm1haWwucnUvIj7T8evu4uj/IO/w5eTu8fLg4uvl7ej/IPPx6/Pj 6DwvYT48L2Rpdj4nLAkKICAgICdjaGFsbGVuZ2UteDInOiAnPGgyIGNsYXNzPSJm bCBwcjUiPsTi8/Hy4u7r6uA8L2gyPjxhIGhyZWY9Ii9kb3VibGUiPs/u5PDu4e3l 5TwvYT48ZGl2IGNsYXNzPSJtYjUgbXQ1IGNsX2IiPjxzcGFuIGNsYXNzPSJncl85 OTkiPsLx5SDj7uvu8eAg5+Ag4uDxIPPs7e7m4P7y8f8g4iDy5ffl7ejoIDEg9+Dx 4C48L3NwYW4+PGJyPsTr/yDz9+Dx8uj/IO7y7/Dg4vzy5SBTTVM8L2Rpdj48ZGl2 IGNsYXNzPSJjb2RlIj7xIOru5O7sPC9kaXY+PGRpdiBjbGFzcz0icmlnaHRfY29k ZSI+PGIgY2xhc3M9Im9yYW5nZSI+MzUrJyArIFBlcmxWYXJfQWN0aXZlSUQgKyAn PC9iPjwvZGl2PjxkaXYgY2xhc3M9ImNvZGUiPu3gIO3u7OXwPC9kaXY+PGRpdiBj bGFzcz0icmlnaHRfY29kZSI+PGRpdiBjbGFzcz0iZmxsIG9yYW5nZSIgc3R5bGU9 ImhlaWdodDogMzBweDsgd2lkdGg6IDQwcHg7Ij48YiBpZD0iVXNlclNob3J0TnVt YmVyIj40NDQ2PC9iPjwvZGl2PsXx6+gg4vsg7eD17uTo8uXx/CDiIDxzcGFuIGlk PSJVc2VyQ291bnRyeSI+0O7x8ejoPC9zcGFuPjxicj48YSBvbmNsaWNrPSJyZXR1 cm4gbmV3SGVscChldmVudCwgXCdjaGFsbGVuZ2UtY291bnRyeVwnLCAxODAsIHsg dG9wOiAwLCBsZWZ0OiAwIH0pOyIgaHJlZj0iIyIgbm9jbG9zZT0xPsTw8+Pg/yDx 8vDg7eA8L2E+PC9kaXY+PGRpdiBjbGFzcz0ibXQ1Ij7R8u7o7O7x8vwg8/Hr8+Po OiAwLDk5IPMu5S4g4eXnIM3E0S48YnI+PGEgaHJlZj0iaHR0cDovL3JhdGVzLm1h aWwucnUvIj7T8evu4uj/IO/w5eTu8fLg4uvl7ej/IPPx6/Pj6DwvYT48L2Rpdj4n LAoJJ2NoYWxsZW5nZS1jb3VudHJ5JyA6ICc8dGFibGUgY2xhc3M9ImNvZGVfY291 bnRpZXMiPjx0cj4gPHRkIGNsYXNzPSJ3LTUwIGdyXzk5OSBwYjMiPs3u7OXwPC90 ZD48dGQgY2xhc3M9ImdyXzk5OSBwYjMiPtHy8ODt4DwvdGQ+PC90cj48dHI+PHRk PjwvdGQ+PHRkPjxkaXYgY2xhc3M9ImNvZGVfYm9yZCI+PC9kaXY+PC90ZD48L3Ry Pjx0cj48dGQgY2xhc3M9ImJiIj40NDQ2PC90ZD48dGQgY2xhc3M9ImNvZGVfYm9y ZCI+PHVsPjxsaSBvbmNsaWNrPSJzZXRDb3VudHJ5KGV2ZW50LCBcJ3J1XCcpOyI+ 0O7x8ej/PC9saT48bGkgb25jbGljaz0ic2V0Q291bnRyeShldmVudCwgXCd1YVwn KTsiPtPq8ODo7eA8L2xpPjxsaSBvbmNsaWNrPSJzZXRDb3VudHJ5KGV2ZW50LCBc J2t6XCcpOyI+yuDn4PXx8uDtPC9saT48bGkgb25jbGljaz0ic2V0Q291bnRyeShl dmVudCwgXCdhbVwnKTsiPsDw7OXt6P88L2xpPjxsaSBvbmNsaWNrPSJzZXRDb3Vu dHJ5KGV2ZW50LCBcJ2dlXCcpOyI+w/Dz5+j/PC9saT48bGkgb25jbGljaz0ic2V0 Q291bnRyeShldmVudCwgXCd0alwnKTsiPtLg5Obo6ujx8uDtPC9saT48bGkgb25j bGljaz0ic2V0Q291bnRyeShldmVudCwgXCdhelwnKTsiPsDn5fDh4Onk5uDtPC9s aT48bGkgb25jbGljaz0ic2V0Q291bnRyeShldmVudCwgXCd1elwnKTsiPtPn4eXq 6PHy4O08L2xpPjwvdWw+PC90ZD48L3RyPjx0cj48dGQ+PC90ZD48dGQ+PGRpdiBj bGFzcz0iY29kZV9ib3JkIj48L2Rpdj48L3RkPjwvdHI+PHRyPjx0ZCBjbGFzcz0i YmIiPjE4MjQ8L3RkPjx0ZD48dWw+PGxpIG9uY2xpY2s9InNldENvdW50cnkoZXZl bnQsIFwnbHZcJyk7Ij7L4PLi6P88L2xpPjwvdWw+PC90ZD48L3RyPjx0cj48dGQg Y2xhc3M9ImJiIj4xNjI0PC90ZD48dGQ+PHVsPjxsaSBvbmNsaWNrPSJzZXRDb3Vu dHJ5KGV2ZW50LCBcJ2x0XCcpOyI+y+jy4uA8L2xpPjwvdWw+PC90ZD48L3RyPjx0 cj48dGQgY2xhc3M9ImJiIj4xMzAyPC90ZD48dGQ+PHVsPjxsaSBvbmNsaWNrPSJz ZXRDb3VudHJ5KGV2ZW50LCBcJ2VlXCcpOyI+3fHy7u3o/zwvbGk+PC91bD48L3Rk PjwvdHI+PHRyPjx0ZCBjbGFzcz0iYmIiPjgyMzAwPC90ZD48dGQ+PHVsPjxsaSBv bmNsaWNrPSJzZXRDb3VudHJ5KGV2ZW50LCBcJ2RlXCcpOyI+w+Xw7ODt6P88L2xp PjwvdWw+PC90ZD48L3RyPjx0cj48dGQgY2xhc3M9ImJiIj40MDcwPC90ZD48dGQ+ PHVsPjxsaSBvbmNsaWNrPSJzZXRDb3VudHJ5KGV2ZW50LCBcJ2lsXCcpOyI+yOfw 4Ojr/DwvbGk+PC91bD48L3RkPjwvdHI+PHRyPjx0ZCBjbGFzcz0iYmIiPjwvdGQ+ PHRkPjx1bD48L3VsPjwvdGQ+PC90cj48L3RhYmxlPicKfTsKCmZ1bmN0aW9uIG5l d0hlbHAoZXZlbnQsIGNvZGUsIHdpZHRoLCBzaGlmdCkgewogICAgZXZlbnQgPSBl dmVudCB8fCB3aW5kb3cuZXZlbnQ7CiAgICB2YXIgZWxlbWVudCA9IGV2ZW50LnRh cmdldCB8fCBldmVudC5zcmNFbGVtZW50OwoJaWYoZ2ViaSgiaGVscF9kaXZfIitj b2RlKSkgY2xvc2VIZWxwKGV2ZW50LCAxKTsKICAgIGlmIChlbGVtZW50KSB7CgkJ ZWxlbWVudC5ibHVyKCk7CiAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPGRpdiBj bGFzcz0iaGVscERpdkluIiBpZD0iaGVscF9kaXZfJyArIGNvZGUgKyAnIj48aSBj bGFzcz0iYnJlYWsiIG9uY2xpY2s9InJldHVybiBjbG9zZUhlbHAoZXZlbnQsIDEp OyI+PC9pPicgKyBoZWxwRGF0YVtjb2RlXSArICc8L2Rpdj4nOwogICAgICAgIGRp di5jbGFzc05hbWUgPSAnaGVscERpdic7CiAgICAgICAgaWYgKHdpZHRoKSBkaXYu c3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7CiAgICAgICAgdmFyIGNvb3IgPSBn ZXRFbGVtUG9zKGVsZW1lbnQpOwogICAgICAgIHNoaWZ0LnRvcCA9IHNoaWZ0LnRv cCB8fCAwOwogICAgICAgIHNoaWZ0LmxlZnQgPSBzaGlmdC5sZWZ0IHx8IDA7CiAg ICAgICAgZGl2LnN0eWxlLnRvcCA9IGNvb3IudG9wICsgc2hpZnQudG9wICsgJ3B4 JzsKICAgICAgICBkaXYuc3R5bGUubGVmdCA9IGNvb3IubGVmdCArIHNoaWZ0Lmxl ZnQgKyAncHgnOwoKICAgICAgICBIZWxwcy5wdXNoKGRpdik7CgkJCiAgICAgICAg Y2FuY2VsRXZlbnQoZXZlbnQpOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k Q2hpbGQoZGl2KTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24g Y2xvc2VIZWxwKGV2ZW50LCBjbG9zZSkgewogICAgaWYgKCFIZWxwcy5sZW5ndGgp IHJldHVybjsKICAgIGV2ZW50ID0gZXZlbnQgfHwgd2luZG93LmV2ZW50OwogICAg dmFyIGVsZW1lbnQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDsK CWlmICgkKGVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnbm9jbG9zZScpKSByZXR1cm47 CiAgICBpZiAoIWNoZWNrUGFyZW50KGVsZW1lbnQpIHx8IGNsb3NlKSB7CgkJdmFy IGhlbHBkaXYgPSBIZWxwcy5wb3AoKTsKCQlpZihoZWxwZGl2KSBoZWxwZGl2LnBh cmVudE5vZGUucmVtb3ZlQ2hpbGQoaGVscGRpdik7CgkJcmV0dXJuIGZhbHNlOwog ICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCmFkZEhhbmRsZXIoZG9jdW1lbnQsICdj bGljaycsIGNsb3NlSGVscCk7CgpmdW5jdGlvbiBjaGVja1BhcmVudChlbGVtZW50 KSB7CiAgICB2YXIgcmVnID0gL15oZWxwX2Rpdl9cdy87CiAgICBpZihyZWcudGVz dChlbGVtZW50LmlkKSkgcmV0dXJuIDE7CiAgICB3aGlsZShlbGVtZW50LnBhcmVu dE5vZGUpIHsKCWVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CglpZihyZWcu dGVzdChlbGVtZW50LmlkKSkgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gMDsK fQoKZnVuY3Rpb24gc2V0Q291bnRyeShldmVudCwgY3V0KSB7CiAgICB2YXIgQ291 bnRyaWVzID0gewoJInJ1IjpbJ9Du8fHo6CcsNDQ0Nl0sIAoJInVhIjpbJ9Pq8ODo 7eUnLDQ0NDZdLCAKCSJreiI6WyfK4Ofg9fHy4O3lJywzMzUwXSwgCgkiYW0iOlsn wPDs5e3o6CcsNDQ0Nl0sIAoJImdlIjpbJ8Pw8+fo6CcsNDQ0Nl0sIAoJInRqIjpb J9Lg5Obo6ujx8uDt5ScsNDQ0Nl0sIAoJImF6IjpbJ8Dn5fDh4Onk5uDt5ScsNDQ0 Nl0sIAoJInV6IjpbJ9Pn4eXq6PHy4O3lJyw0NDQ2XSwgCgkibHYiOlsny+Dy4ujo JywxODI0XSwgCgkibHQiOlsny+jy4uUnLDE2MjRdLCAKCSJlZSI6Wyfd8fLu7ejo JywxMzAyXSwgCgkiZGUiOlsnw+Xw7ODt6OgnLDgyMzAwXSwgCgkiaWwiOlsnyOfw 4Ojr5ScsNDA3MF0KICAgIH07CiAgICAkKCdVc2VyQ291bnRyeScpLmlubmVySFRN TCA9IENvdW50cmllc1tjdXRdWzBdOwogICAgJCgnVXNlclNob3J0TnVtYmVyJyku aW5uZXJIVE1MID0gQ291bnRyaWVzW2N1dF1bMV07CiAgICBjbG9zZUhlbHAoZXZl bnQsIDEpOwogICAgcmV0dXJuIGZhbHNlOwp9 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=fluent_opening.js Content-Type: application/x-javascript; charset=windows-1251; name=fluent_opening.js Content-Location: http://js.imgsmail.ru/r/js/blogs/fluent_opening.js?5 Content-Transfer-Encoding: Base64 Lyog7+vg4u3u5SDu8urw+/Lo5SDh6+7q7uIgKi8KCnZhciBjdXJyX3JvdyA9ICcn Owp2YXIgY3VydGFpblN0ZXAgPSAxMDsgCnZhciBtb3ZpbmdfZGlnaXQgPSAwOwp2 YXIgY2hlY2tfaGVpZ2h0ID0gMDsvLyDi+/H36PL74uDy/CDw4Ofs5fAg4vvv4OTg /vnl4+4g4evu6uAJCnZhciBjaGVja19zdGVwX0lFID0gNzsKdmFyIGNoZWNrX3N0 ZXBfQUxMID0gMTA7CnZhciBrb3J5dG8gPSBuZXcgT2JqZWN0OwoKdmFyIHN0YXJ0 X2hlaWdodDsKdmFyIGVuZF9oZWlnaHQ7CnZhciBpZl9vcGVuZWQ7CnZhciBub3Rf YXV0b19oZWlnaHQgPSAwOwoKZnVuY3Rpb24gcmF6dm9yb3Qob2JqLCBjaGVja19o ZWlnaHQsIG5vdF9hdXRvX2hlaWdodCwgY2xpY2tfb2JqLCBjbGlja19mdW5jKQp7 CQoJaWZfb3BlbmVkID0ga29yeXRvW29ial1bMl07CglpZihjaGVja19oZWlnaHQg JiYgZ2ViaShvYmorJ19pbm5lcmRpdicpLmlubmVySFRNTCAhPSAiIikKCXsKCQlk aXYgPSBnZWJpKG9iaisnX2lubmVyZGl2Jyk7CgkJZGl2X2ggPSBnZWJpKG9iaisn X2hpZGRlbicpOy8v4vHv7uzu4+Dy5ev87fvpIGRpdiDk6/8g7+7x9+Xy4CDw4Ofs 5fDgIOL78e7y+yDi++/g5OD++eXj7iDh6+7q4Cwg6u7y7vD76SDk7uvm5e0g6Ozl 8vwg6uvg8fEgImhpZGRlbl9kaXYiIOgg6Ozl8vwg4u3z8vDo7ejpIGRpdgkJCgkJ aWYoZGl2X2ggJiYgZGl2X2guaGFzQ2hpbGROb2RlcygpICYmIGRpdi5zdHlsZS5k aXNwbGF5ID09ICdub25lJykKCQl7CgkJCWRpdl9oX3AgPSBkaXZfaC5maXJzdENo aWxkOwoJCQlpZihkaXZfaF9wLm5vZGVOYW1lID09ICJESVYiKQoJCQl7CgkJCQlk aXZfaF9wLmlubmVySFRNTCA9IGRpdi5pbm5lckhUTUw7CgkJCQloZWlnaHQgPSBk aXZfaF9wLm9mZnNldEhlaWdodDsJCgkJCQlkaXZfaF9wLmlubmVySFRNTCA9ICcn OwoJCQl9CgkJCWVsc2UKCQkJCWlmKGRpdi5zdHlsZS5kaXNwbGF5ID09ICdub25l JykKCQkJCXsKCQkJCQlkaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CQkKCQkJ CQloZWlnaHQgPSBkaXYub2Zmc2V0SGVpZ2h0OwkJCgkJCQkJZGl2LnN0eWxlLmRp c3BsYXkgPSAnbm9uZSc7CQkJCgkJCQl9CgkJCQllbHNlIGhlaWdodCA9IGRpdi5v ZmZzZXRIZWlnaHQ7CgkJfQoJCWVsc2UKCQkJaWYoZGl2LnN0eWxlLmRpc3BsYXkg PT0gJ25vbmUnKQoJCQl7CgkJCQlkaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7 CQkKCQkJCWhlaWdodCA9IGRpdi5vZmZzZXRIZWlnaHQ7CQkKCQkJCWRpdi5zdHls ZS5kaXNwbGF5ID0gJ25vbmUnOwkJCQoJCQl9CgkJCWVsc2UgaGVpZ2h0ID0gZGl2 Lm9mZnNldEhlaWdodDsKCQlpZihoZWlnaHQpCgkJewoJCQlpZihpZl9vcGVuZWQp IGtvcnl0b1tvYmpdWzBdID0gaGVpZ2h0OwoJCQllbHNlIGtvcnl0b1tvYmpdWzFd ID0gaGVpZ2h0OwoJCQlzdGVwID0gaXNJRSA/IGNoZWNrX3N0ZXBfSUUgOiBjaGVj a19zdGVwX0FMTDsKCQkJY3VydGFpblN0ZXAgPSBwYXJzZUludChoZWlnaHQvc3Rl cCk7CgkJCWlmKGN1cnRhaW5TdGVwIDwgMykgY3VydGFpblN0ZXAgPSAzOwoJCX0K CX0KCQoJc3RhcnRfaGVpZ2h0ID0ga29yeXRvW29ial1bMF07CgllbmRfaGVpZ2h0 ID0ga29yeXRvW29ial1bMV07CQoJcmF6dm9yb3RfZGVhbChvYmosIHN0YXJ0X2hl aWdodCwgZW5kX2hlaWdodCwgc3RhcnRfaGVpZ2h0LDAsIG5vdF9hdXRvX2hlaWdo dCwgY2xpY2tfb2JqLCBjbGlja19mdW5jKTsKfQoKZnVuY3Rpb24gcmF6dm9yb3Rf ZGVhbChvYmosIGhlaWdodDEsIGhlaWdodDIsIG1vdmluZ19kaWdpdCwgc3RhcnRl ZCwgbm90X2F1dG9faGVpZ2h0LCBjbGlja19vYmosIGNsaWNrX2Z1bmMpCnsJCQoJ dmFyIGdvb24gPSAnMSc7CglpZiAoaGVpZ2h0MSA8IGhlaWdodDIpCgkJaWYgKHN0 YXJ0ZWQgPT0gMCkKCQl7IAoJCQl2YXIgbW92aW5nX2RpZ2l0ID0gaGVpZ2h0MTsK CQkJbW92aW5nX2RpZ2l0ICs9IGN1cnRhaW5TdGVwOwkJCQkKCQl9CgkJZWxzZSAK CQl7CgkJCWlmIChtb3ZpbmdfZGlnaXQgPCBoZWlnaHQyKQkKCQkJeyAJCQoJCQkJ bW92aW5nX2RpZ2l0ICs9IGN1cnRhaW5TdGVwOwoJCQkJZ29vbiA9IDE7CgkJCX0K CQkJZWxzZSAKCQkJeyAKCQkJCWtvcnl0b1tvYmpdWzJdID0gMTsJCQkJCQkKCQkJ CWdlYmkob2JqKydfaW5uZXJkaXYnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsK CQkJCW1vdmluZ19kaWdpdCA9IG5vdF9hdXRvX2hlaWdodCA/IGhlaWdodDIgOiAn YXV0byc7CQkJCgkJCQlnb29uID0gMDsKCQkJCWNsaWNrX29iai5vbmNsaWNrID0g ZnVuY3Rpb24gb25jbGljayhldmVudCkgeyBjbGlja19mdW5jKGNsaWNrX29iaik7 IHJldHVybiBmYWxzZTsgfSAKCQkJfQkKCQl9CglpZiAoaGVpZ2h0MSA+IGhlaWdo dDIpCgkJaWYgKHN0YXJ0ZWQgPT0gMCkKCQl7IAoJCQl2YXIgbW92aW5nX2RpZ2l0 ID0gaGVpZ2h0MTsJCQkJCgkJCWdlYmkob2JqKS5zdHlsZS5oZWlnaHQgPSBtb3Zp bmdfZGlnaXQ7CgkJCWdlYmkob2JqKydfaW5uZXJkaXYnKS5zdHlsZS5kaXNwbGF5 ID0gJ25vbmUnOyAKCQkJbW92aW5nX2RpZ2l0IC09IGN1cnRhaW5TdGVwOwoJCX0K CQllbHNlIAoJCXsKCQkJaWYgKG1vdmluZ19kaWdpdCA+IGhlaWdodDIgJiYgbW92 aW5nX2RpZ2l0Pj1jdXJ0YWluU3RlcCkJCgkJCXsgCQkKCQkJCW1vdmluZ19kaWdp dCAtPSBjdXJ0YWluU3RlcDsKCQkJCWdvb24gPSAxOwkJCQkJCQoJCQl9CgkJCWVs c2UKCQkJewoJCQkJbW92aW5nX2RpZ2l0ID0gMDsKCQkJCWtvcnl0b1tvYmpdWzJd ID0gMDsKCQkJCWdvb24gPSAwOwoJCQkJY2xpY2tfb2JqLm9uY2xpY2sgPSBmdW5j dGlvbiBvbmNsaWNrKGV2ZW50KSB7IGNsaWNrX2Z1bmMoY2xpY2tfb2JqKTsgcmV0 dXJuIGZhbHNlOyB9CgkJCX0KCQl9CQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlk KG9iaikuc3R5bGUuaGVpZ2h0ID0gbW92aW5nX2RpZ2l0OwkKCQlpZihnb29uID09 IDEpIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJhenZvcm90X2RlYWwob2JqLCBo ZWlnaHQxLCBoZWlnaHQyLCBtb3ZpbmdfZGlnaXQsIDEsIG5vdF9hdXRvX2hlaWdo dCwgY2xpY2tfb2JqLCBjbGlja19mdW5jKSB9LCAxKTsgCn0gCg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=menu_user.js Content-Type: application/x-javascript; name=menu_user.js Content-Location: http://js.imgsmail.ru/r/js/blogs/menu_user.js?11 Content-Transfer-Encoding: Base64 LyogbWVudSB1c2VyKi8KZnVuY3Rpb24gc2hvd19zbXNfbGVhZGVyc2hpcF9ydWxl cygpIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc21z X2xlYWRlcnNoaXBfcnVsZXMnKTsKICAgIGlmIChkaXYpIHsKICAgICAgICBpZihk aXYuc3R5bGUuZGlzcGxheSA9PSAnbm9uZScpIHsKICAgICAgICAgICAgZGl2LnN0 eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBk aXYuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9CiAgICB9Cn0KCnZh ciBncm91cF9zZWxlY3RvcjsKZnVuY3Rpb24gY3JlYXRlX2dyb3VwX3NlbGVjdG9y KGhlYWRlciwgam91cm5hbF9lbWFpbCwgaXNfY29tbXVuaXR5KSB7CiAgICB2YXIg SFRNTCA9IFtdOwogICAgSFRNTC5wdXNoKCc8Zm9ybSBhY3Rpb249IicgKyBQZXJs VmFyX0FDVElPTl9ESVIgKyAnamFkZGZyaWVuZCIgY2xhc3M9Im0wIiBpZD0iZ3Jv dXBfc2VsZWN0b3JfZm9ybSIgb25zdWJtaXQ9InJldHVybiBqb3VybmFsX2FkZGZy aWVuZCgpIj4nKTsKICAgIEhUTUwucHVzaCgnPGlucHV0IHR5cGU9ImhpZGRlbiIg bmFtZT0idXNlciIgdmFsdWU9IicgKyBqb3VybmFsX2VtYWlsICsgJyIgLz4nKTsK ICAgIEhUTUwucHVzaCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFydGlj aXBhdGUiIHZhbHVlPSInICsgKGlzX2NvbW11bml0eSA/IDEgOiAwKSArICciIC8+ Jyk7CiAgICBIVE1MLnB1c2goJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJh Y2siIHZhbHVlPSInICsgUGVybFZhcl9iYWNrX3ZhbHVlICsgJyI+Jyk7CiAgICBI VE1MLnB1c2goJzxkaXYgY2xhc3M9InAwIj48aDIgY2xhc3M9Im0wIGZsbCI+JyAr IGhlYWRlciArICc8L2gyPjxhIGhyZWY9ImphdmFzY3JpcHQ6aGlkZV9ncm91cF9z ZWxlY3RvcigpOyIgY2xhc3M9ImZsciI+PGltZyBoZWlnaHQ9IjgiIGJvcmRlcj0i MCIgd2lkdGg9IjgiIHRpdGxlPSLH4Orw+/L8IiBzcmM9Imh0dHA6Ly9pbWcubWFp bC5ydS9tYWlsL3J1L2ltYWdlcy9ibG9ncy9jbG9zZV9pZnIuZ2lmIiAvPjwvYT48 L2Rpdj4nKTsKICAgIEhUTUwucHVzaCgnPGRpdiBzdHlsZT0iY2xlYXI6IGJvdGgi PjwvZGl2PicpOwogICAgCiAgICBIVE1MLnB1c2goJzxkaXYgaWQ9IndvcmtfYXJl YSI+Jyk7CiAgICBpZiAoIWlzX2NvbW11bml0eSkgewogICAgICAgIEhUTUwucHVz aCgnPGRpdiBzdHlsZT0iZm9udC1zaXplOiA4NSU7IGNvbG9yOiAjNjU2OTcyOyI+ z/Dl5Ovu5ujy/CDv7uv85+7i4PLl6/4g5PDz5uHzIO3gIO/w7uXq8uD1IMHr7uPo IOggzO7pIMzo8DwvZGl2PicpOwogICAgICAgIEhUTUwucHVzaCgnPGRpdiBjbGFz cz0ibXQxNSBtYjEwIj7R7u7h+eXt6OU8YnIgLz48dGV4dGFyZWEgbmFtZT0ibWVz c2FnZSIgd3JhcD0ic29mdCIgc3R5bGU9IndpZHRoOiAxMDAlOyBib3JkZXI6IG5v bmU7IG92ZXJmbG93LXg6IGF1dG87IG92ZXJmbG93LXk6IGF1dG87IGhlaWdodDog NTVweDsgcGFkZGluZzogM3B4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyI+PC90 ZXh0YXJlYT48L2Rpdj4nKTsKICAgICAgICBIVE1MLnB1c2goJzxkaXYgY2xhc3M9 InQ5MCI+xO7v7uvt6PLl6/zt7jwvZGl2PicpOwogICAgfQogICAgSFRNTC5wdXNo KCc8ZGl2IGNsYXNzPSJ0OTAiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3gi IG5hbWU9ImZyaWVuZGxlbnRhIiBjaGVja2VkPSJjaGVja2VkIiB2YWx1ZT0iIiAv Ptfo8uDy/CDiIOvl7fLlPC9sYWJlbD48c3BhbiBpZD0ic3Vic2NyaWJlX3NwYW4i PjxiciAvPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InN1YnNjcmliZSIgbmFt ZT0ic3ViY3JpYmUiIGNoZWNrZWQ9IicgKyAoUGVybFZhcl9hY3RpdmVfc3Vic2Ny aWJlZCA/ICdjaGVja2VkJyA6ICcnKSArICciIHZhbHVlPSIxIiAvPjxsYWJlbCBm b3I9InN1YnNjcmliZSI+z+7k7+jx4PL88f8g7eAg7uHt7uLr5e3o/zwvbGFiZWw+ PC9zcGFuPjwvZGl2PicpOwogICAgSFRNTC5wdXNoKCc8ZGl2PjxpbnB1dCB0eXBl PSJzdWJtaXQiIHZhbHVlPSJPSyIgLz48aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1 ZT0izvLs5e3gIiBvbmNsaWNrPSJyZXR1cm4gaGlkZV9ncm91cF9zZWxlY3Rvcigp OyIgLz48L2Rpdj4nKTsKICAgIEhUTUwucHVzaCgnPC9kaXY+Jyk7IC8vICN3b3Jr X2FyZWEKCiAgICBIVE1MLnB1c2goJzxkaXYgaWQ9InJlc3VsdF9hcmVhIiBzdHls ZT0iZGlzcGxheTogbm9uZTsiPicpOwogICAgSFRNTC5wdXNoKCc8ZGl2IGlkPSJm cmllbmRfbWVzc2FnZSI+PC9kaXY+PGRpdj48aW5wdXQgdHlwZT0iYnV0dG9uIiB2 YWx1ZT0ix+Dq8Pvy/CIgb25jbGljaz0icmV0dXJuIGhpZGVfZ3JvdXBfc2VsZWN0 b3IoKTsiIC8+PC9kaXY+Jyk7CiAgICBIVE1MLnB1c2goJzwvZGl2PicpOyAvLyAj cmVzdWx0X2FyZWEKCiAgICBIVE1MLnB1c2goJzwvZGl2PjwvZm9ybT4nKTsKCiAg ICBncm91cF9zZWxlY3RvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp OwogICAgZ3JvdXBfc2VsZWN0b3IuaWQgPSAnZ3JvdXBfc2VsZWN0b3InOwogICAg Z3JvdXBfc2VsZWN0b3IuY2xhc3NOYW1lID0gJ3BvcHVwX2Rpdic7CiAgICBncm91 cF9zZWxlY3Rvci5pbm5lckhUTUwgPSBIVE1MLmpvaW4oJycpOwp9CgpmdW5jdGlv biBzaG93X3BhcnRpY2lwYXRlX2dyb3VwX3NlbGVjdG9yKGRpdl9uYW1lLCBqb3Vy bmFsX2VtYWlsKSB7CiAgICBpZiAoIWdyb3VwX3NlbGVjdG9yKSBjcmVhdGVfZ3Jv dXBfc2VsZWN0b3IoJ8Lx8vPv6PL8IOgg5O7h4OLo8vwnLCBqb3VybmFsX2VtYWls LCAxKTsKICAgIGlmIChncm91cF9zZWxlY3RvcikgewogICAgICAgIHZhciBmb3Jf Z3JvdXBfc2VsZWN0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZfbmFt ZSk7CiAgICAgICAgaWYgKGZvcl9ncm91cF9zZWxlY3RvcikgewogICAgICAgICAg ICBmb3JfZ3JvdXBfc2VsZWN0b3IuYXBwZW5kQ2hpbGQoZ3JvdXBfc2VsZWN0b3Ip OwogICAgICAgICAgICAvL3ZhciBoZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZ3JvdXBfc2VsZWN0b3JfaGVhZGVyJyk7CiAgICAgICAgICAgIC8vaWYg KGhlYWRlcikgaGVhZGVyLmlubmVySFRNTCA9ICfC8fLz7+jy/CDoIOTu4eDi6PL8 JzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9u IHJlZ19ldnQoZXZ0KSB7IGV2dF9hID0gZXZ0OyB9CgpmdW5jdGlvbiBzaG93X2Zy aWVuZF9ncm91cF9zZWxlY3RvcihkaXZfbmFtZSwgam91cm5hbF9lbWFpbCkgewog ICAgaWYgKCFncm91cF9zZWxlY3RvcikgY3JlYXRlX2dyb3VwX3NlbGVjdG9yKCfP 8OXk6+7m6PL8IOTw8+bh8ycsIGpvdXJuYWxfZW1haWwsIDApOwogICAgaWYgKGdy b3VwX3NlbGVjdG9yKSB7CiAgICAgICAgdmFyIGZvcl9ncm91cF9zZWxlY3RvciA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdl9uYW1lKTsKICAgICAgICBpZiAo Zm9yX2dyb3VwX3NlbGVjdG9yKSB7CiAgICAgICAgICAgIGZvcl9ncm91cF9zZWxl Y3Rvci5hcHBlbmRDaGlsZChncm91cF9zZWxlY3Rvcik7CiAgICAgICAgfQogICAg ICAgIHZhciBzdWJzY3Jfc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz dWJzY3JpYmVfc3BhbicpOwogICAgICAgIGlmIChzdWJzY3Jfc3BhbikgewogICAg ICAgICAgICBzdWJzY3Jfc3Bhbi5zdHlsZS5kaXNwbGF5ID0gUGVybFZhcl9hY3Rp dmVfc3Vic2NyaWJlZCA/ICdub25lJyA6ICcnOwogICAgICAgIH0KICAgIH0KICAg IGJ1YmJsZSgpOwogICAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBoaWRlX2dy b3VwX3NlbGVjdG9yKCkgewogICAgaWYgKGdyb3VwX3NlbGVjdG9yKSB7CiAgICAg ICAgaWYgKGdyb3VwX3NlbGVjdG9yLnBhcmVudE5vZGUpCiAgICAgICAgICAgIGdy b3VwX3NlbGVjdG9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZ3JvdXBfc2VsZWN0 b3IpOwogICAgfQp9CgpmdW5jdGlvbiBqb3VybmFsX3N1YnNjcmliZShyZW1vdmUp IHsKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1YnNj cl9saW5rJyk7CiAgICB2YXIgbGluazIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnc3Vic2NyX2xpbmsyJyk7CiAgICBpZiAobGluayAmJiBsaW5rMikgewogICAg ICAgIGxpbmsyLmlubmVySFRNTCA9ICfC++/u6+3/5fLx/y4uLic7CiAgICAgICAg bGluay5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfTsKICAg ICAgICBsaW5rMi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsg fTsKICAgIH0KICAgIHBlcmxfcG9zdHNfY29tbWVudHNfc3Vic2NyaWJlKDEsIHJl bW92ZSwgMCwgTmFOLCBQZXJsVmFyX21uQSwgUGVybFZhcl9tbkIsIGpvdXJuYWxf c3Vic2NyaWJlX2NhbGxiYWNrKTsKICAgIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rp b24gam91cm5hbF9zdWJzY3JpYmVfY2FsbGJhY2socmVtb3ZlKSB7CiAgICBpZiAo cmVtb3ZlPDApIHJldHVybjsKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ3N1YnNjcl9saW5rJyk7CiAgICB2YXIgbGluazIgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnc3Vic2NyX2xpbmsyJyk7CiAgICBpZiAobGluayAm JiBsaW5rMikgewogICAgICAgIGlmIChyZW1vdmUpIHsKICAgICAgICAgICAgUGVy bFZhcl9hY3RpdmVfc3Vic2NyaWJlZCA9IDA7CiAgICAgICAgICAgIGlmIChUaGVt ZV90bXBsKSB7CiAgICAgICAgICAgICAgICBsaW5rLmlubmVySFRNTCA9ICc8aW1n IHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX3N1YnNjcmliZS5w bmciIGNsYXNzPSJJRXBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9 IjAiIGFsaWduPSJhYnNtaWRkbGUiIHZzcGFjZT0iMyI+JzsKICAgICAgICAgICAg fSBlbHNlIHsKICAgICAgICAgICAgICAgIGxpbmsuaW5uZXJIVE1MID0gJzxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fc3Vic2NyaWJlLnBu ZyIgY2xhc3M9IklFcG5nIGljbyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhbGln bj0iYWJzbWlkZGxlIiAvPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGlu azIuaW5uZXJIVE1MID0gJ8/u5O/o8eDy/PH/IO3gIO7h7e7i6+Xt6P8nOwogICAg ICAgICAgICBsaW5rLmhyZWYgPSBQZXJsVmFyX0FDVElPTl9ESVIgKyAnamNvbW1l bnRzc3Vic2NyaWJlP3VzZXI9JyArIFBlcmxWYXJfSm91cm5hbEVtYWlsICsgJyZw b3N0cz0xJicgKyBQZXJsVmFyX2JhY2s7CiAgICAgICAgICAgIGxpbmsyLmhyZWYg PSBQZXJsVmFyX0FDVElPTl9ESVIgKyAnamNvbW1lbnRzc3Vic2NyaWJlP3VzZXI9 JyArIFBlcmxWYXJfSm91cm5hbEVtYWlsICsgJyZwb3N0cz0xJicgKyBQZXJsVmFy X2JhY2s7CiAgICAgICAgICAgIGxpbmsub25jbGljayA9IGZ1bmN0aW9uKCkgeyBy ZXR1cm4gam91cm5hbF9zdWJzY3JpYmUoMCk7IH07CiAgICAgICAgICAgIGxpbmsy Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGpvdXJuYWxfc3Vic2NyaWJl KDApOyB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIFBlcmxWYXJfYWN0 aXZlX3N1YnNjcmliZWQgPSAxOwogICAgICAgICAgICBpZiAoVGhlbWVfdG1wbCkg ewogICAgICAgICAgICAgICAgbGluay5pbm5lckhUTUw9JzxpbWcgc3JjPSJodHRw Oi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fdW5zdWJzY3JpYmUucG5nIiBjbGFz cz0iSUVwbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbGln bj0iYWJzbWlkZGxlIiB2c3BhY2U9IjMiIC8+JzsKICAgICAgICAgICAgfSBlbHNl IHsKICAgICAgICAgICAgICAgIGxpbmsuaW5uZXJIVE1MPSc8aW1nIHNyYz0iaHR0 cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX3Vuc3Vic2NyaWJlLnBuZyIgY2xh c3M9IklFcG5nIGljbyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhbGlnbj0iYWJz bWlkZGxlIiAvPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGluazIuaW5u ZXJIVE1MID0gJ87y7+jx4PL88f8g7vIg7uHt7uLr5e3o6Sc7CiAgICAgICAgICAg IGxpbmsuaHJlZiA9IFBlcmxWYXJfQUNUSU9OX0RJUiArICdqY29tbWVudHNzdWJz Y3JpYmU/dXNlcj0nICsgUGVybFZhcl9Kb3VybmFsRW1haWwgKyAnJnJlbW92ZT0x JnBvc3RzPTEmJyArIFBlcmxWYXJfYmFjazsKICAgICAgICAgICAgbGluazIuaHJl ZiA9IFBlcmxWYXJfQUNUSU9OX0RJUiArICdqY29tbWVudHNzdWJzY3JpYmU/dXNl cj0nICsgUGVybFZhcl9Kb3VybmFsRW1haWwgKyAnJnJlbW92ZT0xJnBvc3RzPTEm JyArIFBlcmxWYXJfYmFjazsKICAgICAgICAgICAgbGluay5vbmNsaWNrID0gZnVu Y3Rpb24oKSB7IHJldHVybiBqb3VybmFsX3N1YnNjcmliZSgxKTsgfTsKICAgICAg ICAgICAgbGluazIub25jbGljayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gam91cm5h bF9zdWJzY3JpYmUoMSk7IH07CiAgICAgICAgfQogICAgfQp9CgovLyBlbGVtIC0g cG9zaXRpb24gY2FwY2hhIGRpdiBhcm91bmQgdGhpcyBlbGVtZW50Ci8vIGFjdGlv biAtIGFjdGlvbiBvZiBjYXBjaGEgZm9ybQpmdW5jdGlvbiBqb3VybmFsX2FkZGZy aWVuZChyZW1vdmUsIHVzZXJfdGV4dCwgZnJpZW5kbGVudGEsIGVsZW0sIGFjdGlv bikgewogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJp ZW5kX2xpbmsnKTsKICAgIHZhciBsaW5rMiA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdmcmllbmRfbGluazEnKTsKICAgIGlmIChyZW1vdmUpIHsKICAgICAgICBp ZiAobGluayAmJiBsaW5rMikgewogICAgICAgICAgICBsaW5rMi5pbm5lckhUTUwg PSAnwvvv7uvt/+Xy8f8uLi4nOwogICAgICAgICAgICBsaW5rLm9uY2xpY2sgPSBm dW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgICAgICAgICBsaW5rMi5v bmNsaWNrID0gZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfTsKICAgICAgICB9 CiAgICAgICAgcGVybF9hZGRfZnJpZW5kKHJlbW92ZSwgam91cm5hbF9hZGRmcmll bmRfY2FsbGJhY2spOwogICAgfSBlbHNlIHsKICAgICAgICB2YXIgZm9ybSA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdncm91cF9zZWxlY3Rvcl9mb3JtJyk7CiAg ICAgICAgaWYgKGZvcm0pIHsKICAgICAgICAgICAgaWYgKGZvcm0ucGFydGljaXBh dGUudmFsdWU9PTEpIHJldHVybiB0cnVlOwoKICAgICAgICAgICAgdmFyIHN1YnNj cmliZSA9IDA7CiAgICAgICAgICAgIHZhciBzdWJzY3JfZWxlbWVudCA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdzdWJzY3JpYmUnKTsKICAgICAgICAgICAgaWYg KHN1YnNjcl9lbGVtZW50ICYmIHN1YnNjcl9lbGVtZW50LmNoZWNrZWQpIHN1YnNj cmliZSA9IDE7CgogICAgICAgICAgICBpZiAoc3Vic2NyaWJlICYmICFQZXJsVmFy X2FjdGl2ZV9zdWJzY3JpYmVkKSBqb3VybmFsX3N1YnNjcmliZSgwKTsKICAgICAg ICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJpZW5k X2xpbmsnKTsKICAgICAgICAgICAgdmFyIGxpbmsyID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2ZyaWVuZF9saW5rMScpOwogICAgICAgICAgICBpZiAoIWxpbmsg fHwgIWxpbmsyKSByZXR1cm47CgogICAgICAgICAgICBsaW5rMi5pbm5lckhUTUwg PSAnz/Dl5Ovu5uXt6OUg7vLv8ODi6+Xt7ic7CiAgICAgICAgICAgIGxpbmsub25j bGljayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgICAgICAg IGxpbmsyLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9OwoK ICAgICAgICAgICAgdmFyIHVzZXJfdGV4dCA9IGZvcm0ubWVzc2FnZS52YWx1ZTsK ICAgICAgICAgICAgdmFyIGZyaWVuZGxlbnRhID0gKGZvcm0uZnJpZW5kbGVudGEu Y2hlY2tlZCA/IDEgOiAwKTsKCiAgICAgICAgICAgIGpvdXJuYWxfY2FsbF9hZGRm cmllbmQodXNlcl90ZXh0LCBmcmllbmRsZW50YSwgbGluazIsIGxpbmsyLmhyZWYp OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGpvdXJuYWxfY2FsbF9hZGRm cmllbmQodXNlcl90ZXh0LCBmcmllbmRsZW50YSwgZWxlbSwgYWN0aW9uKTsKICAg ICAgICB9CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGpvdXJu YWxfY2FsbF9hZGRmcmllbmQodXNlcl90ZXh0LCBmcmllbmRsZW50YSwgZWxlbSwg YWN0aW9uKSB7CiAgICBpZiAoIWVsZW0gfHwgIWFjdGlvbikgdGhyb3cgbmV3IEVy cm9yKCd3cm9uZyBzeW50YXgnKTsKICAgIHBlcmxfZ2V0X2ZyaWVuZHNoaXBfY2Fw Y2hhKAogICAgICAgIGZ1bmN0aW9uIChjYXBjaGFfaWQpIHsKICAgICAgICAgICAg aWYgKGNhcGNoYV9pZCkgewogICAgICAgICAgICAgICAgdmFyIGNvb3IgPSBnZXRf cG9zaXRpb24oZWxlbSk7CiAgICAgICAgICAgICAgICB2YXIgSFRNTCA9IFtdOwog ICAgICAgICAgICAgICAgSFRNTC5wdXNoKCc8ZGl2PjxhIG9uY2xpY2s9ImhpZGVf Y2FwY2hhKCk7IHJldHVybiBmYWxzZTsiIGhyZWY9IiI+PGltZyBzcmM9Imh0dHA6 Ly9pbWcubWFpbC5ydS9tYWlsL3J1L2ltYWdlcy9ibG9ncy9jbG9zZV9oZWxwLmdp ZiIgaGVpZ2h0PSI3IiB3aWR0aD0iNyIgYm9yZGVyPSIwIiBzdHlsZT0ibWFyZ2lu OiA1cHg7IGZsb2F0OiByaWdodDsiLz48L2E+Jyk7CiAgICAgICAgICAgICAgICBI VE1MLnB1c2goJzxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7Ij48aW1nIHNyYz0iaHR0 cDovLycgKyBQZXJsVmFyX0Jsb2dzUGVybEhvc3QgKyAnL2NnaS1iaW4vam91cm5h bC9nZXRfaW1hZ2U/aWQ9JyArIGNhcGNoYV9pZCArICciIHdpZHRoPSIxNTEiIGJv cmRlcj0iMCIgdnNwYWNlPSIwIiBoc3BhY2U9IjAiIGhlaWdodD0iNTEiIGFsdD0i IiBpZD0iSW1hZ2VfaWQiIC8+PC9kaXY+Jyk7CiAgICAgICAgICAgICAgICBIVE1M LnB1c2goJzxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7Ij7X6PHr7iDt4CDq4PDy6O3q 5To8L2Rpdj4nKTsKICAgICAgICAgICAgICAgIEhUTUwucHVzaCgnPGRpdiBzdHls ZT0iY2xlYXI6Ym90aDsgZGlzcGxheTppbmxpbmU7Ij48Zm9ybSBhY3Rpb249Iicg KyBhY3Rpb24gKyAnIiBtZXRob2Q9ImdldCIgaWQ9ImNhcGNoYUZvcm0iIG9uc3Vi bWl0PSJyZXR1cm4gY2hlY2tfZnJpZW5kc2hpcF9jYXBjaGEoXCcnICsgdXNlcl90 ZXh0ICsgJ1wnLCAnICsgZnJpZW5kbGVudGEgKyAnKTsiPjxpbnB1dCB0eXBlPSJo aWRkZW4iIG5hbWU9IkltYWdlSUQiIHZhbHVlPSInICsgY2FwY2hhX2lkICsgJyIg aWQ9IkltYWdlSURfaWQiIC8+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkltYWdl QW5zd2VyIiBpZD0iSW1hZ2VBbnN3ZXJfaWQiIC8+PGlucHV0IHR5cGU9InN1Ym1p dCIgdmFsdWU9Ik9LIiAvPjwvZm9ybT48L2Rpdj48L2Rpdj4nKTsKCiAgICAgICAg ICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhcGNo YV9wb3B1cCcpOwogICAgICAgICAgICAgICAgaWYgKCFkaXYpIHJldHVybjsKICAg ICAgICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSBIVE1MLmpvaW4oJycpOwogICAg ICAgICAgICAgICAgZGl2LnN0eWxlLnRvcCA9IChjb29yLnRvcCArIGVsZW0ub2Zm c2V0SGVpZ2h0IC0gMzApICsgJ3B4JzsKICAgICAgICAgICAgICAgIHZhciBsZWZ0 ID0gY29vci5sZWZ0OyAvLy0gZGl2Lm9mZnNldFdpZHRoICsgZWxlbWVudC5vZmZz ZXRXaWR0aDsKICAgICAgICAgICAgICAgIGlmIChsZWZ0IDwgMCkgbGVmdCA9IDA7 CiAgICAgICAgICAgICAgICBkaXYuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnOwog ICAgICAgICAgICAgICAgZGl2LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7 CgogICAgICAgICAgICAgICAgLy9pZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSBl dmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIC8vZXZlbnQu Y2FuY2VsQnViYmxlID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgICAgIHBlcmxfYWRkX2ZyaWVuZCgwLCB1c2VyX3RleHQsIGZyaWVuZGxl bnRhLCBqb3VybmFsX2FkZGZyaWVuZF9jYWxsYmFjayk7CiAgICAgICAgICAgIH0K ICAgICAgICB9CiAgICApOwp9CgpmdW5jdGlvbiBjaGVja19mcmllbmRzaGlwX2Nh cGNoYSh1c2VyX3RleHQsIGZyaWVuZGxlbnRhKSB7CiAgICB2YXIgSW1hZ2VJRCA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdJbWFnZUlEX2lkJykudmFsdWU7CiAg ICB2YXIgSW1hZ2VBbnN3ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnSW1h Z2VBbnN3ZXJfaWQnKS52YWx1ZTsKICAgIHBlcmxfY2hlY2tfZnJpZW5kc2hpcF9j YXBjaGEoCiAgICAgICAgSW1hZ2VJRCwgSW1hZ2VBbnN3ZXIsIDAsIHVzZXJfdGV4 dCwgZnJpZW5kbGVudGEsIGZ1bmN0aW9uIChvaywgbGVhdmUsIGVycikgewogICAg ICAgICAgICBpZiAob2spIHsKICAgICAgICAgICAgICAgIGpvdXJuYWxfYWRkZnJp ZW5kX2NhbGxiYWNrKGxlYXZlLCBlcnIpOyAvLyBzYXZlIGNhbGwgdG8gc2VydmVy IC0+IHNhdmUgYSBraXR0ZW4KICAgICAgICAgICAgICAgIGhpZGVfY2FwY2hhKCk7 CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwZXJsX2dldF9m cmllbmRzaGlwX2NhcGNoYSgKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAo Y2FwY2hhX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYXBjaGFf aWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdJbWFnZV9pZCcpLnNyYyA9ICdodHRwOi8vJyArIFBlcmxWYXJf QmxvZ3NQZXJsSG9zdCArICcvY2dpLWJpbi9qb3VybmFsL2dldF9pbWFnZT9pZD0n ICsgY2FwY2hhX2lkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ0ltYWdlSURfaWQnKS52YWx1ZSA9IGNhcGNoYV9p ZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBhbGVydCgnzeXi 5fDt7iDi4uXkuO0g6u7kIOfg+ejy+y4nKTsKICAgICAgICAgICAgfQogICAgICAg IH0KICAgICk7CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGpvdXJuYWxf YWRkZnJpZW5kX2NhbGxiYWNrKGxlYXZlLCBlcnIpIHsKICAgIGlmIChsZWF2ZTww KSByZXR1cm47CiAgICBlcnIgPSBwYXJzZUludChlcnIpOwogICAgdmFyIGVycl9t ZXNzYWdlOwogICAgaWYgKGVycj09MCkgZXJyX21lc3NhZ2UgPSAnwvsg8fLg6+gg 4ufg6Ozt++zoIOTw8+f8/+zoLic7CiAgICBpZiAoZXJyPT0xIHx8IGVycj09NCkg ZXJyX21lc3NhZ2UgPSAny+js6PIg7vLv8ODi6ugg7/Do4+vg+OXt6Okg5PDz5uH7 IOjx9+Xw7+DtLiDP7u/w7uHz6fLlIO/u4vLu8Ojy/CDv7u/78urzIPfl8OXnIDIw IOzo7fPyLic7CiAgICBpZiAoZXJyPT0yKSBlcnJfbWVzc2FnZSA9ICfd8u7yIOzo 8CDn4Orw+/Ig5Ov/IOLg8S4nOwogICAgaWYgKGVycj09MykgZXJyX21lc3NhZ2Ug PSAnz/Do4+vg+OXt6OUg8/Hv5fjt7iDu8u/w4OLr5e3uLic7CiAgICBpZiAoZXJy PT01KSBlcnJfbWVzc2FnZSA9ICfC+yDz5uUg7/Dl5Ovg4+Dr6CDk8PPm4fMg/fLu 7PMg7+7r/Ofu4uDy5ev+Lic7CiAgICBpZiAoZXJyPT02KSBlcnJfbWVzc2FnZSA9 ICfd8u7yIO/u6/zn7uLg8uXr/CDiIOLg+OXsIPfl8O3u7CDx7+jx6uUuJzsKICAg IGlmIChlcnI9PTcpIGVycl9tZXNzYWdlID0gJ8L7IO3lIOzu5uXy5SDv8OXk6+7m 6PL8IOTw8+bh8yD98u7s8yDv7uv85+7i4PLl6/4uJzsKICAgIGlmIChlcnIpIGxl YXZlID0gIWxlYXZlOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2ZyaWVuZF9saW5rJyk7CiAgICB2YXIgbGluazIgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnZnJpZW5kX2xpbmsxJyk7CiAgICBpZiAobGluayAmJiBs aW5rMikgewogICAgICAgIGlmIChlcnJfbWVzc2FnZSkgewogICAgICAgICAgICB2 YXIgbWVzc2FnZV9kaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJpZW5k X21lc3NhZ2UnKTsKICAgICAgICAgICAgdmFyIHdvcmtfYXJlYSA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCd3b3JrX2FyZWEnKTsKICAgICAgICAgICAgdmFyIHJl c3VsdF9hcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdF9hcmVh Jyk7CgogICAgICAgICAgICBtZXNzYWdlX2Rpdi5pbm5lckhUTUwgPSBlcnJfbWVz c2FnZTsKICAgICAgICAgICAgd29ya19hcmVhLnN0eWxlLmRpc3BsYXkgPSAnbm9u ZSc7CiAgICAgICAgICAgIHJlc3VsdF9hcmVhLnN0eWxlLmRpc3BsYXkgPSAnJzsK ICAgICAgICB9CiAgICAgICAgaWYgKGxlYXZlKSB7CiAgICAgICAgICAgIAogICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChUaGVtZV90bXBsKSB7CiAgICAg ICAgICAgICAgICBsaW5rLmlubmVySFRNTD0nPGltZyBzcmM9Imh0dHA6Ly9pbWcu bWFpbC5ydS9tYWlsL3J1L2ltYWdlcy9ibG9ncy9pY29fZGVsZXRlZnJpZW5kLmdp ZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsaWduPSJhYnNt aWRkbGUiIHZzcGFjZT0iMyIgLz4nOwogICAgICAgICAgICB9IGVsc2UgewogICAg ICAgICAgICAgICAgbGluay5pbm5lckhUTUw9JzxpbWcgc3JjPSJodHRwOi8vaW1n Lm1haWwucnUvci9ibG9ncy9pY29fZGVsZXRlZnJpZW5kLmdpZiIgY2xhc3M9Imlj byIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhbGlnbj0iYWJzbWlkZGxlIiAvPic7 CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGluazIuaW5uZXJIVE1MID0gJ9Pk 4Ovo8vwg6OcgxPDz5+XpJzsKICAgICAgICAgICAgbGluay5ocmVmID0gJ2h0dHA6 Ly9teS5tYWlsLnJ1L215L2FkZGZyaWVuZD9icm9rZT0nICsgUGVybFZhcl9Kb3Vy bmFsRW1haWwgKyAnJicgKyBQZXJsVmFyX2JhY2s7CiAgICAgICAgICAgIGxpbmsy LmhyZWYgPSAnaHR0cDovL215Lm1haWwucnUvbXkvYWRkZnJpZW5kP2Jyb2tlPScg KyBQZXJsVmFyX0pvdXJuYWxFbWFpbCArICcmJyArIFBlcmxWYXJfYmFjazsKICAg ICAgICAgICAgbGluay5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IHJldHVybiB0cnVl IH07CiAgICAgICAgICAgIGxpbmsyLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgcmV0 dXJuIHRydWUgfTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmIChl cnJfbWVzc2FnZSkgYWxlcnQoZXJyX21lc3NhZ2UpOwogICAgfQp9CgpmdW5jdGlv biBqb3VybmFsX3JlYWQocmVhZCkgewogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnbGVudGFfbGluaycpOwogICAgdmFyIGxpbmsyID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xlbnRhX2xpbmsyJyk7CiAgICBpZiAobGlu ayAmJiBsaW5rMikgewogICAgICAgIGxpbmsyLmlubmVySFRNTCA9ICfC++/u6+3/ 5fLx/y4uLic7CiAgICAgICAgbGluay5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IHJl dHVybiBmYWxzZTsgfTsKICAgICAgICBsaW5rMi5vbmNsaWNrID0gZnVuY3Rpb24o KSB7IHJldHVybiBmYWxzZTsgfTsKICAgIH0KICAgIHBlcmxfbGVudGFfcmVhZChy ZWFkLCBqb3VybmFsX3JlYWRfY2FsbGJhY2spOwogICAgcmV0dXJuIGZhbHNlOwp9 CgpmdW5jdGlvbiBqb3VybmFsX3JlYWRfY2FsbGJhY2socmVhZCkgewogICAgdmFy IGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGVudGFfbGluaycpOwog ICAgdmFyIGxpbmsyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xlbnRhX2xp bmsyJyk7CiAgICBpZiAobGluayAmJiBsaW5rMikgewogICAgICAgIGlmIChyZWFk KSB7CiAgICAgICAgICAgIGlmIChUaGVtZV90bXBsKSB7CiAgICAgICAgICAgICAg ICBsaW5rLmlubmVySFRNTD0nPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9t YWlsL3J1L2ltYWdlcy9ibG9ncy9pX2Zhdm9yaXRlLmdpZiIgY2xhc3M9IklFcG5n IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21p ZGRsZSIgdnNwYWNlPSIzIiAvPic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg ICAgICAgICAgICBsaW5rLmlubmVySFRNTD0nPGltZyBzcmM9Imh0dHA6Ly9pbWcu bWFpbC5ydS9tYWlsL3J1L2ltYWdlcy9ibG9ncy9pX2Zhdm9yaXRlLmdpZiIgY2xh c3M9IklFcG5nIGljbyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhbGlnbj0iYWJz bWlkZGxlIiAvPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGluazIuaW5u ZXJIVE1MID0gJ9fo8uDy/CDiIOvl7fLlJzsKICAgICAgICB9IGVsc2UgewogICAg ICAgICAgICBpZiAoVGhlbWVfdG1wbCkgewogICAgICAgICAgICAgICAgbGluay5p bm5lckhUTUwgPSAnPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9tYWlsL3J1 L2ltYWdlcy9ibG9ncy9pX2RlbC5naWYiIGNsYXNzPSJJRXBuZyIgd2lkdGg9IjE2 IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIHZzcGFj ZT0iMyIgLz4nOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg bGluay5pbm5lckhUTUwgPSAnPGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9t YWlsL3J1L2ltYWdlcy9ibG9ncy9pX2RlbC5naWYiIGNsYXNzPSJJRXBuZyBpY28i IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYWxpZ249ImFic21pZGRsZSIgLz4nOwog ICAgICAgICAgICB9CiAgICAgICAgICAgIGxpbmsyLmlubmVySFRNTCA9ICfN5SD3 6PLg8vwg4iDr5e3y5Sc7CiAgICAgICAgfQogICAgICAgIGxpbmsub25jbGljayA9 IGZ1bmN0aW9uKCkgeyByZXR1cm4gam91cm5hbF9yZWFkKHJlYWQpIH07CiAgICAg ICAgbGluazIub25jbGljayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gam91cm5hbF9y ZWFkKHJlYWQpIH07CiAgICB9Cn0K ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=tags.js Content-Type: application/x-javascript; name=tags.js Content-Location: http://js.imgsmail.ru/r/js/blogs/tags.js?7 Content-Transfer-Encoding: Base64 LyogdGFncyAqLwoKZnVuY3Rpb24gd2luMnVybCggc3RyICkgewogICAgLy8gIPHr 7uLg8PwKICAgIHZhciB0cmFucyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDB4NDEw OyBpIDw9IDB4NDRGOyBpKyspIHRyYW5zW2ldID0gaSAtIDB4MzUwOyAvLyDALd/g Lf8KICAgIHRyYW5zWzB4NDAxXSA9IDB4QTg7ICAgIC8vIKgKICAgIHRyYW5zWzB4 NDUxXSA9IDB4Qjg7ICAgIC8vILgKICAgIHZhciByZXQgPSBbXTsKICAgIC8vINHu 8fLg4uv/5ewg7ODx8ejiIOru5O7iIPHo7OLu6+7iLCDv7u/z8u3uIO/l8OXi7uTo 7CDq6PDo6+vo9vMKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsg aSsrKXsKICAgICAgICB2YXIgbiA9IHN0ci5jaGFyQ29kZUF0KGkpOwogICAgICAg IGlmICh0eXBlb2YgdHJhbnNbbl0gIT0gJ3VuZGVmaW5lZCcpIG4gPSB0cmFuc1tu XTsKICAgICAgICBpZiAoIG4gPD0gMHhGRiApIHJldC5wdXNoKG4pOwogICAgfQog ICAgcmV0dXJuIGVzY2FwZShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGws IHJldCkpOwp9CgoKdmFyIGZseTsKCmZ1bmN0aW9uIGZhc3RfZm9ybShvYmosIGlk KXsKCWlmICggZmx5ICA9PSB1bmRlZmluZWQgKSB7IGZseSA9IG9iai5zcmMgfQog ICAgdmFyIGNvb3JkID0gYWJzUG9zaXRpb24ob2JqKTsKICAgIHZhciBkaXZzID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CiAgICBkaXZzLnN0eWxlLnRv cCAgPSBjb29yZC55ICsgMTA7CiAgICBkaXZzLnN0eWxlLmxlZnQgPSBjb29yZC54 ICsgMTA7CiAgICBkaXZzLnN0eWxlLmRpc3BsYXkgPSBkaXZzLnN0eWxlLmRpc3Bs YXkgPT0gJ2Jsb2NrJyA/ICdub25lJyA6ICdibG9jayc7CglvYmouc3JjID0gZGl2 cy5zdHlsZS5kaXNwbGF5ID09ICdibG9jaycgPyAnaHR0cDovL2ltZy5tYWlsLnJ1 L3IvYmxvZ3MvaWNvX2RlbC5wbmcnIDogZmx5OwoJaWYoZGl2cy5zdHlsZS5kaXNw bGF5ID09ICdibG9jaycpIG9iai5jbGFzc05hbWUgPSAgJ0lFcG5nJzsKICAgIHZh ciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhZ3NlYXJjaCcpOwog ICAgZGl2cy5zdHlsZS5kaXNwbGF5ID09ICdibG9jaycgPyBlZGl0LmZvY3VzKCkg OiAnJzsKfQoKZnVuY3Rpb24gdGFnX3NlYXJjaChpZCwgcHJlZml4KXsKCWlucCA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKCWlmKGlucC52YWx1ZSA9PSAn JykKCXsKCQlhbGVydCgnx+Dv7uvt6PLlIO/u5uDr8+nx8uAg7+7r5SDv7ujx6uAn KTsKCQlpbnAuZm9jdXMoKTsKCX0KCWVsc2UKCXsKCQlwcmVmaXggPSBwcmVmaXgu bGVuZ3RoID8gcHJlZml4IDogIFBlcmxWYXJfSm91cm5hbERpcjsKCQl3aW5kb3cu bG9jYXRpb24gPSBwcmVmaXggKyAgUGVybFZhcl90YWdfc2VhcmNoX3BhdGggKyB3 aW4ydXJsKGdlYmkoIGlkICkudmFsdWUpOwoJfQp9CgpmdW5jdGlvbiBsb2FkX3Rh Z2Nsb3VkX3N0YXRlKCkKewogICAgdmFyIGNvb2tuYW1lID0gInRhZ2Nsb3VkX3N0 YXRlIjsKICAgIGlmICghZ2V0X2Nvb2tpZShjb29rbmFtZSkpIHNldF9jb29raWUo Y29va25hbWUsICJzaG93Iik7CiAgICBpZiAoZ2V0X2Nvb2tpZShjb29rbmFtZSkg PT0gImhpZGUiKSB7CgljdXJyX3Jvdz0nbGlzdF90YWdzJzsgCglrb3J5dG9bY3Vy cl9yb3ddPVswLDAsMF07IAoJcmV0dXJuICc8aW1nIGlkPSJ0YWdjbG91ZF9pY29u IiBvbmNsaWNrPSJzaG93X2hpZGVfdGFnY2xvdWQodGhpcyk7IiBzcmM9aHR0cDov L2ltZy5tYWlsLnJ1L3IvYmxvZ3MvY2FsZW5kYXJfbWF4aW1pemUuZ2lmIHdpZHRo PTE0IGhlaWdodD0xNCBib3JkZXI9MCBhbGlnbj1hYnNtaWRkbGU+Jm5ic3A7Jm5i c3A7JzsKICAgIH0gZWxzZSB7CgljdXJyX3Jvdz0nbGlzdF90YWdzJzsgCglrb3J5 dG9bY3Vycl9yb3ddPVswLDAsMV07IAoJcmV0dXJuICc8aW1nIGlkPSJ0YWdjbG91 ZF9pY29uIiBvbmNsaWNrPSJzaG93X2hpZGVfdGFnY2xvdWQodGhpcyk7IiBzcmM9 aHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvY2FsZW5kYXJfbWluaW1pemUuZ2lm IHdpZHRoPTE0IGhlaWdodD0xNCBib3JkZXI9MCBhbGlnbj1hYnNtaWRkbGU+Jm5i c3A7Jm5ic3A7JzsKICAgIH0KfQoKc2hvd19oaWRlX3RhZ2Nsb3VkID0gZnVuY3Rp b24oY2xpY2tfb2JqKQp7CgljbGlja19vYmoub25jbGljayA9IGZ1bmN0aW9uIG9u Y2xpY2soZXZlbnQpIHsgcmV0dXJuIGZhbHNlOyB9IC8vIOfg4evu6ujw4u7g8vwg 4vvv4OTz+OrzCiAgICB2YXIgY29va25hbWUgPSAidGFnY2xvdWRfc3RhdGUiOwog ICAgaWYgKGdldF9jb29raWUoY29va25hbWUpID09ICJoaWRlIikgewoJICAgIHNl dF9jb29raWUoY29va25hbWUsICJzaG93Iik7CgkJY3Vycl9yb3c9J2xpc3RfdGFn cyc7IAoJCWtvcnl0b1tjdXJyX3Jvd109WzAsMCwwXTsgCgkJZ2ViaSgidGFnY2xv dWRfaWNvbiIpLnNyYyA9ICJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9jYWxl bmRhcl9taW5pbWl6ZS5naWYiOwogICAgfSBlbHNlIHsKCQlzZXRfY29va2llKGNv b2tuYW1lLCAiaGlkZSIpOwoJCWN1cnJfcm93PSdsaXN0X3RhZ3MnOyAKCQlrb3J5 dG9bY3Vycl9yb3ddPVswLDAsMV07CgkJZ2ViaSgidGFnY2xvdWRfaWNvbiIpLnNy YyA9ICJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9jYWxlbmRhcl9tYXhpbWl6 ZS5naWYiOwogICAgfQoJcmF6dm9yb3QoY3Vycl9yb3csIDEsIDAsIGNsaWNrX29i aiwgIHNob3dfaGlkZV90YWdjbG91ZCk7Cn0KCnZhciBwb3N0X3RhZ3NsaXN0X29i amVjdDsKCmZ1bmN0aW9uIHBvc3RfcG9zdF9hZGR0YWcodGFnKQp7Cgl2YXIgdGlu cHV0ID0gZ2ViaSgncG9zdHRhZ2FyZWEnKTsgCglpZighdGlucHV0KSByZXR1cm4g ZmFsc2U7Cgl2YXIgaW5wYXJyID0gdGlucHV0LnZhbHVlLnNwbGl0KCcsJyk7Cgl3 aGlsZShhPWlucGFyci5zaGlmdCgpKSB7CgkJYT1hLnJlcGxhY2UoLyheXHMrKXwo XHMrJCkvZywgIiIpCgkJaWYoYSA9PSB0YWcpIHJldHVybiBmYWxzZTsKCX0KCWlm KHRpbnB1dC52YWx1ZSAhPSAnJykgewoJCXRhZyA9ICcsICcrdGFnOwoJfQoJdGlu cHV0LnZhbHVlICs9IHRhZzsKCXJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gY3Jl YXRlX3Bvc3RfdGFnc19mb3JtKCkKewoJdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoJ2RpdicpOwoJZGl2LnNldEF0dHJpYnV0ZSgnaWQnLCdwb3N0dGFn c2RpdicpOwoJZGl2LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCdmYXZvcmFkZCcpOwoJ ZGl2LmNsYXNzTmFtZSA9ICdmYXZvcmFkZCc7CglkaXYuc3R5bGUuZGlzcGxheT0n bm9uZSc7Cgl2YXIgaHRtbCA9ICc8Zm9ybSBtZXRob2Q9IlBPU1QiIGlkPSJwb3N0 dGFnc2Zvcm0iIG9uc3VibWl0PSJyZXR1cm4gc2V0X3Bvc3RfdGFncyh0aGlzKSIg YWN0aW9uPSIjIj4nOwoJaHRtbCs9JzxkaXY+PGI+0OXk4Ory6PDu4uDy/CDs5fLq 6DwvYj48YnIgLz4nOwoJaHRtbCs9JzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJw b3N0aWQiIGlkPSJwb3N0dGFnc2lkIiB2YWx1ZT0iIj4nOwoJaHRtbCs9Jzx0ZXh0 YXJlYSBpZD0icG9zdHRhZ2FyZWEiIG5hbWU9InRhZ3MiPjwvdGV4dGFyZWE+JzsK CWh0bWwrPSc8c3BhbiBzdHlsZT0iZGlzcGxheTpibG9jaztwYWRkaW5nLWJvdHRv bTo0cHg7IiBpZD0iam91cm5hbGxhc3R0YWdzIj4nOwoJaWYodHlwZW9mKFBlcmxW YXJfTGFzdFRhZ3MpIT0ndW5kZWZpbmVkJyAmJiBQZXJsVmFyX0xhc3RUYWdzIT0n JykgewoJCWh0bWwrPSfP7vHr5eTt6OU6ICc7CgkJdmFyIGlucGFyciA9IFBlcmxW YXJfTGFzdFRhZ3Muc3BsaXQoJywnKTsKCQl3aGlsZShhPWlucGFyci5zaGlmdCgp KSB7CgkJCWE9YS5yZXBsYWNlKC8oXlxzKyl8KFxzKyQpL2csICIiKTsKCQkJaHRt bCs9JzxhIGhyZWY9IiMiIGNsYXNzPSJsYXN0dGFncyIgb25jbGljaz0icmV0dXJu IHBvc3RfcG9zdF9hZGR0YWcoXCcnK2EucmVwbGFjZSgvXFwvZywnXFxcXCcpKydc JykiPicrYSsnPC9hPic7CgkJCWlmKGlucGFyci5sZW5ndGgpIGh0bWwrPScsICc7 CgkJfQoJfQoJaHRtbCs9Jzwvc3Bhbj4nOwoJaHRtbCs9JzxpbnB1dCB0eXBlPXN1 Ym1pdCB2YWx1ZT0iINHu9fDg7ejy/CAiIGNsYXNzPSJhZGQiPic7CglodG1sKz0n PGlucHV0IHR5cGU9YnV0dG9uIHZhbHVlPSIgzvLs5e3o8vwgIiBvbmNsaWNrPSJj bG9zZV9wb3N0X3RhZ3MoKSIgY2xhc3M9ImNsb3NlIj4nOwoJaHRtbCs9JzxhIG9u Y2xpY2s9InJldHVybiBjbG9zZV9wb3N0X3RhZ3MoKTsiIGhyZWY9IiMiPjxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9mb3RvMi9pY29fY2xvc2UuZ2lmIiB3 aWR0aD0iNyIgaGVpZ2h0PSI3IiBhbHQ9Isfg6vD78vwiIGJvcmRlcj0wIGNsYXNz PSJpY29fY2xvc2UiIC8+PC9hPic7CglodG1sKz0nPC9kaXY+PC9mb3JtPic7Cglk aXYuaW5uZXJIVE1MID0gaHRtbDsKCWRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3Jl KGRpdixkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwoJcmV0dXJuIGRpdjsKfQoK ZnVuY3Rpb24gY2xvc2VfcG9zdF90YWdzKCkKewogICAgdmFyIGRpdnMgPSBnZWJp KCdwb3N0dGFnc2RpdicpOwoJaWYoZGl2cykgZGl2cy5zdHlsZS5kaXNwbGF5ID0g J25vbmUnOwoJcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBwb3N0X3RhZ3NfY2Fs bGJhY2tfc2V0KHJlcyxsaXN0LGxhc3R0YWdzKQp7CglpZighcmVzKSB7CgkJYWxl cnQoJ8746OHq4CDo5+zl7eXt6P8g7OXy7uohJyk7CgkJcmV0dXJuOwoJfQoJdmFy IHBhcnBhciA9IHBvc3RfdGFnc2xpc3Rfb2JqZWN0LnBhcmVudE5vZGU7Cgl2YXIg c3RyPSfM5fLq6DogJzsKCXZhciB0YWdzPScnOwoJd2hpbGUoYT1saXN0LnNoaWZ0 KCkpIHsKCQlpZih0eXBlb2YoYSkhPSdvYmplY3QnKSBjb250aW51ZTsKCQlzdHIr PSc8YSBocmVmPSInICsgUGVybFZhcl9Kb3VybmFsRGlyICsgJ3RhZy8nK3dpbjJ1 cmwoYVswXSkrJyI+JythWzFdKyc8L2E+JzsKCQl0YWdzKz1hWzFdOwoJCWlmKGxp c3QubGVuZ3RoKSB7IHN0cis9JywgJzsgdGFncys9JywgJzsgfQoJfQoJdmFyIGlu bmVyPXBhcnBhci5pbm5lckhUTUw7Cgl2YXIgcmVnPW5ldyBSZWdFeHAoJyg8aW1n IC4qc3JjPS4qKScsJ2knKTsKCXZhciBwb3M9cmVnLmV4ZWMoaW5uZXIpOwoJdmFy IHBvc3RpZCA9IGdlYmkoJ3Bvc3R0YWdzaWQnKS52YWx1ZTsKCXBhcnBhci5pbm5l ckhUTUw9c3RyKycgPGEgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNob3dfcG9z dF90YWdzKHRoaXMsXCcnK3Bvc3RpZCsnXCcsXCcnK3RhZ3MucmVwbGFjZSgvXFwv ZywnXFxcXCcpKydcJykiPicrcG9zWzFdOwoJdmFyIHNwYW4gPSBnZWJpKCdqb3Vy bmFsbGFzdHRhZ3MnKTsKCWlmKCFzcGFuKSByZXR1cm47Cgl2YXIgaHRtbCA9ICfP 7vHr5eTt6OU6ICc7CglpZihsYXN0dGFncy5sZW5ndGg9PTApIGh0bWw9Jyc7Cgll bHNlIHsKCQlmb3IodmFyIGk9bGFzdHRhZ3MubGVuZ3RoLTE7aT49MDtpLS0pIHsK CQkJdmFyIGEgPSBsYXN0dGFnc1tpXTsKCQkJaHRtbCs9JzxhIGhyZWY9IiMiIGNs YXNzPSJsYXN0dGFncyIgb25jbGljaz0icmV0dXJuIHBvc3RfcG9zdF9hZGR0YWco XCcnK2FbMV0ucmVwbGFjZSgvXFwvZywnXFxcXCcpKydcJykiPicrYVsxXSsnPC9h Pic7CgkJCWlmKGkpIGh0bWwrPScsICc7CgkJfQoJfQoJc3Bhbi5pbm5lckhUTUwg PSBodG1sOwp9CgpmdW5jdGlvbiBzZXRfcG9zdF90YWdzKCkKewogICAgdmFyIGRp dnMgPSBnZWJpKCdwb3N0dGFnc2RpdicpOwoJaWYoIWRpdnMpIHJldHVybiBmYWxz ZTsKCWRpdnMuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCXZhciBmb3JtYSA9IGdl YmkoJ3Bvc3R0YWdzZm9ybScpOwoJdmFyIHBvc3RpZCA9IGdlYmkoJ3Bvc3R0YWdz aWQnKS52YWx1ZTsKCXZhciB0YWdzID0gZ2ViaSgncG9zdHRhZ2FyZWEnKS52YWx1 ZTsKCXBlcmxfc2V0X3Bvc3RfdGFncyhwb3N0aWQsdGFncyxwb3N0X3RhZ3NfY2Fs bGJhY2tfc2V0KTsKCXJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gZ2V0Q29vcmQo b2JqKQp7Cgl2YXIgb2Zmc2V0TGVmdCA9IDA7Cgl2YXIgb2Zmc2V0VG9wID0gMDsK CXZhciBkaXZudW0gPSAwOwoJd2hpbGUgKG9iaikgewoJCW9mZnNldExlZnQgKz0g b2JqLm9mZnNldExlZnQ7CgkJaWYob2JqLnRhZ05hbWU9PSdESVYnKSB7CgkJCWRp dm51bSsrOwoJCQlpZighaXNJRSB8fCAoaXNJRSAmJiBkaXZudW0+MikpIG9mZnNl dFRvcCArPSBvYmoub2Zmc2V0VG9wOwoJCX0KCQllbHNlIG9mZnNldFRvcCArPSBv Ymoub2Zmc2V0VG9wOwoJCW9iaiA9IG9iai5vZmZzZXRQYXJlbnQ7Cgl9CglyZXR1 cm4ge3g6b2Zmc2V0TGVmdCx5Om9mZnNldFRvcH07Cn0JCgpmdW5jdGlvbiBzaG93 X3Bvc3RfdGFncyhvYmoscG9zdGlkLHRhZ3MpCnsKCXBvc3RfdGFnc2xpc3Rfb2Jq ZWN0ID0gb2JqOwoJdmFyIGRpdnMgPSBnZWJpKCdwb3N0dGFnc2RpdicpOwoJaWYo IWRpdnMpIGRpdnMgPSBjcmVhdGVfcG9zdF90YWdzX2Zvcm0oKTsKCXZhciBwb3N0 aW5wID0gZ2ViaSgncG9zdHRhZ3NpZCcpOwoJaWYoZGl2cy5zdHlsZS5kaXNwbGF5 ID09ICdibG9jaycgJiYgcG9zdGlkID09IHBvc3RpbnAudmFsdWUpIHsKCQlkaXZz LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgkJcmV0dXJuIGZhbHNlOwoJfQoJcG9z dGlucC52YWx1ZSA9IHBvc3RpZDsKCXZhciBjb29yZCA9IGdldENvb3JkKG9iaik7 CglkaXZzLnN0eWxlLnRvcCAgPSBjb29yZC55ICsgMTA7CglkaXZzLnN0eWxlLmxl ZnQgPSBjb29yZC54ICsgMTA7CglpZihwYXJzZUludChkaXZzLnN0eWxlLmxlZnQp KzQyMCA+IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpIGRpdnMuc3R5bGUubGVm dD1wYXJzZUludChkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLTQxNSk7CglkaXZz LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoJdmFyIGVkaXQgPSBnZWJpKCdwb3N0 dGFnYXJlYScpOwoJdmFyIGlucGFyciA9IHRhZ3Muc3BsaXQoJywnKTsKCXZhciB0 YWdzMiA9ICcnOwoJd2hpbGUoYT1pbnBhcnIuc2hpZnQoKSkgewoJCWE9YS5yZXBs YWNlKC8oXlxzKyl8KFxzKyQpL2csICIiKTsKCQl0YWdzMis9YTsKCQlpZihpbnBh cnIubGVuZ3RoKSB0YWdzMis9JywgJzsKCX0KCWVkaXQudmFsdWUgPSB0YWdzMjsK CWVkaXQuZm9jdXMoKTsKCXJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gZ2V0Q3Vy cmVudFN0eWxlKG9FbG0sIHN0ckNzc1J1bGUpewoJdmFyIHN0clZhbHVlID0gIiI7 CglpZihkb2N1bWVudC5kZWZhdWx0VmlldyAmJiBkb2N1bWVudC5kZWZhdWx0Vmll dy5nZXRDb21wdXRlZFN0eWxlKXsKCQlzdHJWYWx1ZSA9IGRvY3VtZW50LmRlZmF1 bHRWaWV3LmdldENvbXB1dGVkU3R5bGUob0VsbSwgIiIpLmdldFByb3BlcnR5VmFs dWUoc3RyQ3NzUnVsZSk7Cgl9CgllbHNlIGlmKG9FbG0uY3VycmVudFN0eWxlKXsK CQlzdHJDc3NSdWxlID0gc3RyQ3NzUnVsZS5yZXBsYWNlKC9cLShcdykvZywgZnVu Y3Rpb24gKHN0ck1hdGNoLCBwMSl7CgkJCXJldHVybiBwMS50b1VwcGVyQ2FzZSgp OwoJCX0pOwoJCXN0clZhbHVlID0gb0VsbS5jdXJyZW50U3R5bGVbc3RyQ3NzUnVs ZV07Cgl9CglyZXR1cm4gc3RyVmFsdWU7Cn0KCmZ1bmN0aW9uIEJ5dGV0b0hleChh KSB7CiAgICBhID0gcGFyc2VJbnQoYSk7CiAgICBpZihhPDE2KSByZXR1cm4gJzAn K2EudG9TdHJpbmcoMTYpOwogICAgcmV0dXJuIGEudG9TdHJpbmcoMTYpOwp9Cgpm dW5jdGlvbiBGaXhSR0J0b0hleChjKSB7Cgl2YXIgcmUgPSAvXiMoWzAtOWEtZl0p KFswLTlhLWZdKShbMC05YS1mXSkkL2k7Cgl2YXIgYml0cyA9IHJlLmV4ZWMoYyk7 CglpZihiaXRzKSByZXR1cm4gJyMnK2JpdHNbMV0rYml0c1sxXStiaXRzWzJdK2Jp dHNbMl0rYml0c1szXStiaXRzWzNdOwoJcmUgPSAvXnJnYlwoKFxkezEsM30pLFxz KihcZHsxLDN9KSxccyooXGR7MSwzfSlcKSQvOwoJYml0cyA9IHJlLmV4ZWMoYyk7 CglpZiAoYml0cykgcmV0dXJuICcjJytCeXRldG9IZXgoYml0c1sxXSkrQnl0ZXRv SGV4KGJpdHNbMl0pK0J5dGV0b0hleChiaXRzWzNdKTsKCXJldHVybiBjOwp9Cgpm dW5jdGlvbiBGaW5kUGFyZW50Q29sb3JzKGlkKSB7Cgl2YXIgY29sb3JzID0ge2Nv bG9yOicjNjY2NjY2JywgYmdjb2xvcjonI2ZmZmZmZid9OwoJdmFyIGE9ZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwoJaWYoYSkgewoJCWNvbG9ycy5jb2xvcj1G aXhSR0J0b0hleChnZXRDdXJyZW50U3R5bGUoYSwnY29sb3InKSk7CgkJd2hpbGUo YT1hLnBhcmVudE5vZGUpIHsKCQkJdmFyIGMgPSBnZXRDdXJyZW50U3R5bGUoYSwn YmFja2dyb3VuZC1jb2xvcicpOwoJCQlpZihjIT0ndHJhbnNwYXJlbnQnICYmIGMh PScnKSB7CgkJCQljb2xvcnMuYmdjb2xvcj1GaXhSR0J0b0hleChjKTsKCQkJCWJy ZWFrOwoJCQl9CgkJfQoJfQoJcmV0dXJuIGNvbG9yczsKfQoK ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=calendar_theme.js Content-Type: application/x-javascript; name=calendar_theme.js Content-Location: http://js.imgsmail.ru/r/js/blogs/calendar_theme.js?3 Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gZ2V0X2ludGVnZXJfY2FzZShmb3JtcywgbnVtYmVyKQp7CiAgICBp ZiAobnVtYmVyKSBudW1iZXIgPSBwYXJzZUludChudW1iZXIpOyBlbHNlIHJldHVy bjsKICAgIHZhciBvbmVzID0gbnVtYmVyICUgMTA7CiAgICB2YXIgdGVucyA9IHBh cnNlSW50KG51bWJlciAvIDEwKSAlIDEwOwogICAgaWYgKG9uZXMgPT0gMSAmJiB0 ZW5zIT0gMSkgcmV0dXJuIGZvcm1zWzBdOwoJZWxzZSBpZiAoKG9uZXMgPT0gMiB8 fCBvbmVzID09IDMgfHwgb25lcyA9PSA0KSAmJiB0ZW5zICE9IDEpIHJldHVybiBm b3Jtc1sxXTsKCSAgICBlbHNlIHJldHVybiBmb3Jtc1syXTsKfQoKZnVuY3Rpb24g Z2V0X2NhbGVuZGFyKHllYXIsIG1vbnRoKQp7CiAgICBwZXJsX2dldF9jYWxlbmRh cih5ZWFyLCBtb250aCwgZ2V0X2NhbGVuZGFyX2NhbGxiYWNrKTsKfQoKZnVuY3Rp b24gZ2V0X2NhbGVuZGFyX2NhbGxiYWNrKHllYXIsIG1vbnRoLCBkYXRhKQp7CiAg ICBpZih5ZWFyKSB7CgljYWxlbmRhcl95ZWFyID0gcGFyc2VJbnQoeWVhcik7Cglj YWxlbmRhcl9tb250aCA9IHBhcnNlSW50KG1vbnRoKTsKCWNhbGVuZGFyX3Bvc3Rz X2NvdW50cyA9IGRhdGE7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FsZW5k YXJfZGl2X2lubmVyZGl2IikuaW5uZXJIVE1MPWRyYXdfY2FsZW5kYXIoKTsKICAg IH0KfQoKCmZ1bmN0aW9uIHNldF9uZXdfbW9udGgoc2lkZSkKewogICAgdmFyIHll YXI7CiAgICB2YXIgbW9udGg7CiAgICBpZiAoc2lkZSA9PSAibGVmdCIpIHsKCS8v bW92aW5nIHRvIHRoZSBsZWZ0CglpZiAoY2FsZW5kYXJfbW9udGggPiAxKSB7Cgkg ICAgbW9udGggPSBjYWxlbmRhcl9tb250aCAtIDE7CgkgICAgeWVhciA9IGNhbGVu ZGFyX3llYXI7Cgl9IGVsc2UgewoJICAgIG1vbnRoID0gMTI7CgkgICAgeWVhciA9 IGNhbGVuZGFyX3llYXIgLSAxOwoJfQogICAgfSBlbHNlIHsKCS8vbW92aW5nIHRv IHRoZSByaWdodAoJaWYgKGNhbGVuZGFyX21vbnRoIDwgMTIpIHsKCSAgICBtb250 aCA9IGNhbGVuZGFyX21vbnRoICsgMTsKCSAgICB5ZWFyID0gY2FsZW5kYXJfeWVh cjsKCX0gZWxzZSB7CgkgICAgbW9udGggPSAxOwoJICAgIHllYXIgPSBjYWxlbmRh cl95ZWFyICsgMTsKCX0KICAgIH0KICAgIGdldF9jYWxlbmRhcih5ZWFyLG1vbnRo KTsKfQoKZnVuY3Rpb24gZHJhd19jYWxlbmRhcigpCnsKICAgIHZhciBub3dfZGF5 ID0gbnVsbDsKICAgIHZhciBub3dfZGF0ZSA9IG5ldyBEYXRlKCk7CiAgICBpZihu b3dfZGF0ZS5nZXRNb250aCgpID09IGNhbGVuZGFyX21vbnRoIC0gMSAmJiBub3df ZGF0ZS5nZXRGdWxsWWVhcigpID09IGNhbGVuZGFyX3llYXIpIG5vd19kYXkgPSBu b3dfZGF0ZS5nZXREYXRlKCk7CiAgICB2YXIgc2hvd25fZGF5ID0gbnVsbDsKICAg IGlmKGNhbGVuZGFyX3Nob3duX2RheSkgewoJaWYoY2FsZW5kYXJfc2hvd25fbW9u dGggPT0gY2FsZW5kYXJfbW9udGggJiYgY2FsZW5kYXJfc2hvd25feWVhciA9PSBj YWxlbmRhcl95ZWFyKSBzaG93bl9kYXkgPSBjYWxlbmRhcl9zaG93bl9kYXk7CiAg ICB9CiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKGNhbGVuZGFyX3llYXIsIGNhbGVu ZGFyX21vbnRoIC0gMSwgMSk7CiAgICB2YXIgZGF5X29mX3dlZWsgPSBkYXRlLmdl dERheSgpOwogICAgaWYgKGRheV9vZl93ZWVrID09IDApIGRheV9vZl93ZWVrID0g NzsKICAgIHZhciBuZXh0X21vbnRoX2RhdGUgPSBuZXcgRGF0ZShjYWxlbmRhcl95 ZWFyLCBjYWxlbmRhcl9tb250aCArIDEgLSAxLCAxKTsKICAgIHZhciBtb250aF9k YXlzID0gTWF0aC5yb3VuZCgobmV4dF9tb250aF9kYXRlLmdldFRpbWUoKSAtIGRh dGUuZ2V0VGltZSgpKS8oMjQqNjAqNjAqMTAwMCkpOwoKICAgIHZhciBidWZmZXIg PSBuZXcgQXJyYXkoKTsKICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZGF5X29mX3dl ZWs7IGkrKykgYnVmZmVyW2ldID0gImVtcHR5IjsKICAgIHZhciBqID0gMTsKICAg IGZvciAodmFyIGkgPSBkYXlfb2Zfd2VlazsgaSA8IGRheV9vZl93ZWVrICsgbW9u dGhfZGF5czsgaSsrKSB7CglpZihjYWxlbmRhcl9wb3N0c19jb3VudHNbal0pIGJ1 ZmZlcltpXSA9IGNhbGVuZGFyX3Bvc3RzX2NvdW50c1tqXTsgZWxzZSBidWZmZXJb aV09MDsKCWorKzsKICAgIH0KICAgIGlmKChkYXlfb2Zfd2VlayArIG1vbnRoX2Rh eXMgLSAxKSAlIDcgIT0gMCkgewoJZm9yIChpID0gZGF5X29mX3dlZWsgKyBtb250 aF9kYXlzOyBpIDwgZGF5X29mX3dlZWsgKyBtb250aF9kYXlzICsgKDcgLSAoZGF5 X29mX3dlZWsgKyBtb250aF9kYXlzIC0gMSkgJSA3KTsgaSsrKSB7CgkgICAgYnVm ZmVyW2ldID0gImVtcHR5IjsKCX0KICAgIH0KICAgIHZhciBodG1sID0gJzxkaXY+ PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS8wLmdpZiIgd2lkdGg9IjEiIGhl aWdodD0iNSIgYWx0PSIiPjwvZGl2PjxjZW50ZXI+PHRhYmxlIGNlbGxwYWRkaW5n PTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MCB3aWR0aD0xMDAlPlxuXAogICAgPHRy IHZhbGlnbj10b3A+XG5cCgk8dGQ+JysoR2V0QWpheFJlcXVlc3QoKT8nPGEgY2xh c3M9InByZXYiIG9uY2xpY2s9InNldF9uZXdfbW9udGgoXCdsZWZ0XCcpOyBnZWJp KFwnY2FsZW5kYXJfZGl2XCcpLnN0eWxlLmhlaWdodCA9IFwnYXV0b1wnOyByZXR1 cm4gZmFsc2U7IiBocmVmPSIjIj48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUv ci9ibG9ncy9sZWZ0X2NhbGVuZGFyX2FuZ2xlLmdpZiB3aWR0aD05IGhlaWdodD0x MyBib3JkZXI9MD48L2E+JzonJm5ic3A7JykrJzwvdGQ+XG5cCgk8dGQgd2lkdGg9 MTAwJSBjbGFzcz1kYXRlIGFsaWduPWNlbnRlcj48YSBocmVmPSInICsgUGVybFZh cl9Kb3VybmFsRGlyICsgJz95ZWFyPScgKyBjYWxlbmRhcl95ZWFyICsgJyZtb250 aD0nICsgY2FsZW5kYXJfbW9udGggKyAnIj48Yj4nICsgY2FsZW5kYXJfbW9udGhz W2NhbGVuZGFyX21vbnRoIC0gMV0gKyAnICcgKyBjYWxlbmRhcl95ZWFyICsgJzwv Yj48L2E+PC90ZD5cblwKCTx0ZD4nKyhHZXRBamF4UmVxdWVzdCgpPyc8YSBjbGFz cz0ibmV4dCIgb25jbGljaz0ic2V0X25ld19tb250aChcJ3JpZ2h0XCcpOyBnZWJp KFwnY2FsZW5kYXJfZGl2XCcpLnN0eWxlLmhlaWdodCA9IFwnYXV0b1wnOyByZXR1 cm4gZmFsc2U7IiBocmVmPSIjIj48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUv ci9ibG9ncy9yaWdodF9jYWxlbmRhcl9hbmdsZS5naWYgd2lkdGg9OSBoZWlnaHQ9 MTMgYm9yZGVyPTA+PC9hPic6JyZuYnNwOycpKyc8L3RkPlxuXAogICAgPC90cj5c blwKICAgIDx0cj48dGQ+Jm5ic3A7PC90ZD48dGQ+XG5cCiAgICA8dGFibGUgY2Vs bHBhZGRpbmc9MCBjZWxsc3BhY2luZz01IGJvcmRlcj0wIHdpZHRoPTEwMCUgY2xh c3M9c2V0a2E+XG5cCiAgICA8dHIgY2xhc3M9aGVhZD48dGggd2lkdGg9MTQlPs/t PC90aD48dGggd2lkdGg9MTQlPsLyPC90aD48dGggd2lkdGg9MTQlPtHwPC90aD48 dGggd2lkdGg9MTQlPtfyPC90aD48dGggd2lkdGg9MTQlPs/yPC90aD48dGggY2xh c3M9aG9saWRheSB3aWR0aD0xNSU+0eE8L3RoPjx0aCBjbGFzcz1ob2xpZGF5IHdp ZHRoPTE1JT7C8TwvdGg+PC90cj5cbic7CiAgICBodG1sICs9ICc8dHI+XG4nOwog ICAgZm9yIChpID0gMTsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKykgewoJdmFyIGRh eSA9IGkgLSBkYXlfb2Zfd2VlayArIDE7CglodG1sICs9ICc8dGQgJyArIChkYXkg PT0gc2hvd25fZGF5ID8gJ3N0eWxlPSJib3JkZXI6MnB4IHNvbGlkICMwMDMwNzM7 IGZvbnQtd2VpZ2h0OmJvbGQiJyA6ICcnKSArICcgJyArIChkYXkgPT0gbm93X2Rh eSA/ICdjbGFzcz10b2RheScgOiAnJykgKyAnPicKCSAgICArIChidWZmZXJbaV0g PT0gJ2VtcHR5JyA/ICcmbmJzcDsnIDogKGJ1ZmZlcltpXSA9PSAwID8gZGF5IDog JzxhIGhyZWY9IicgKyBQZXJsVmFyX0pvdXJuYWxEaXIgKyAnP3llYXI9JyArIGNh bGVuZGFyX3llYXIgKyAnJm1vbnRoPScgKyBjYWxlbmRhcl9tb250aCArICcmZGF5 PScgKyBkYXkKCSAgICArICciIHRpdGxlPSInICsgYnVmZmVyW2ldICsgJyAnICsg Z2V0X2ludGVnZXJfY2FzZShjYWxlbmRhcl9wb3N0X2Zvcm1zX2RhdGEsIGJ1ZmZl cltpXSkgKyAnIiBjbGFzcz0iZGVmLWxpbmsiPicKCSAgICArIGRheSArICc8L2E+ JykpICsgJzwvdGQ+XG4nOwoJaWYgKGkgJSA3ID09IDApIGh0bWwgKz0gJ1xuPC90 cj5cbjx0cj4nOwogICAgfQogICAgaHRtbCArPSAnPC90cj5cbic7CiAgICBodG1s ICs9ICc8L3RhYmxlPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90ZD48L3RyPjwvdGFi bGU+PC9jZW50ZXI+JzsKICAgIHJldHVybiBodG1sOwp9CgpmdW5jdGlvbiBsb2Fk X2NhbGVuZGFyX3N0YXRlKCkKewogICAgaWYgKCFnZXRfY29va2llKCJjYWxlbmRh cl9zdGF0ZSIpIHx8IGNhbGVuZGFyX3llYXIgPT0gIiIgfHwgY2FsZW5kYXJfeWVh ciA9PSAwIHx8IGlzTmFOKGNhbGVuZGFyX3llYXIpKSBzZXRfY29va2llKCJjYWxl bmRhcl9zdGF0ZSIsICJoaWRlIik7CiAgICBpZiAoZ2V0X2Nvb2tpZSgiY2FsZW5k YXJfc3RhdGUiKSA9PSAiaGlkZSIpIHsKCXJldHVybiAiPGEgb25jbGljaz0ncmV0 dXJuIGZhbHNlOycgaHJlZj0nJz48aW1nIG9uY2xpY2s9J3Nob3dfaGlkZV9jYWxl bmRhcih0aGlzKTsnIGlkPWNhbGVuZGFyX3N0YXRlX2ljb24gc3JjPWh0dHA6Ly9p bWcubWFpbC5ydS9yL2Jsb2dzL2NhbGVuZGFyX21heGltaXplLmdpZiB3aWR0aD0x NCBoZWlnaHQ9MTQgYm9yZGVyPTA+PC9hPiZuYnNwOyZuYnNwOyI7CiAgICB9IGVs c2UgewoJcmV0dXJuICI8YSBvbmNsaWNrPSdyZXR1cm4gZmFsc2U7JyBocmVmPScn PjxpbWcgb25jbGljaz0nc2hvd19oaWRlX2NhbGVuZGFyKHRoaXMpOycgaWQ9Y2Fs ZW5kYXJfc3RhdGVfaWNvbiBzcmM9aHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3Mv Y2FsZW5kYXJfbWluaW1pemUuZ2lmIHdpZHRoPTE0IGhlaWdodD0xNCBib3JkZXI9 MD48L2E+Jm5ic3A7Jm5ic3A7IjsKICAgIH0KfQoKc2hvd19oaWRlX2NhbGVuZGFy ID0gZnVuY3Rpb24oY2xpY2tfb2JqKQp7CiAgICBpZiAoZ2V0X2Nvb2tpZSgiY2Fs ZW5kYXJfc3RhdGUiKSA9PSAiaGlkZSIpIHsKCXNldF9jb29raWUoImNhbGVuZGFy X3N0YXRlIiwgInNob3ciKTsKCWlmKEdldEFqYXhSZXF1ZXN0KCkpIHsKCSAgICBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FsZW5kYXJfc3RhdGVfaWNvbiIpLnNy YyA9ICJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9jYWxlbmRhcl9taW5pbWl6 ZS5naWYiOwoJCWlmKCFpc0lFKSBjdXJ0YWluU3RlcCA9IDE5OwoJCWVsc2UgY3Vy dGFpblN0ZXAgPSAyODsKCQlrb3J5dG9bJ2NhbGVuZGFyX2RpdiddPVswLDE5MCww XTsKCQljbGlja19vYmoub25jbGljayA9IGZ1bmN0aW9uIG9uY2xpY2soZXZlbnQp IHsgcmV0dXJuIGZhbHNlOyB9IC8vIOfg4evu6ujw4u7g8vwg4vvv4OTz+OrzCgkJ cmF6dm9yb3QoJ2NhbGVuZGFyX2RpdicsIDEsIDEsIGNsaWNrX29iaiwgc2hvd19o aWRlX2NhbGVuZGFyKTsKCQlpZihjYWxlbmRhcl95ZWFyID09ICIiIHx8IGNhbGVu ZGFyX3llYXIgPT0gMCB8fCBpc05hTihjYWxlbmRhcl95ZWFyKSkgewoJCXZhciBu b3dfZGF0ZSA9IG5ldyBEYXRlKCk7CgkJZ2V0X2NhbGVuZGFyKG5vd19kYXRlLmdl dEZ1bGxZZWFyKCksbm93X2RhdGUuZ2V0TW9udGgoKSArIDEpOwkJCgkgICAgfQoJ fSBlbHNlIHsKCSAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKHRydWUpOwoJfQog ICAgfSBlbHNlIHsKCXNldF9jb29raWUoImNhbGVuZGFyX3N0YXRlIiwgImhpZGUi KTsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYWxlbmRhcl9zdGF0ZV9pY29u Iikuc3JjID0gImh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2NhbGVuZGFyX21h eGltaXplLmdpZiI7OwoJaWYoIWlzSUUpIGN1cnRhaW5TdGVwID0gMTk7CgllbHNl IGN1cnRhaW5TdGVwID0gMjg7Cglrb3J5dG9bJ2NhbGVuZGFyX2RpdiddPVsxOTAs MCwxXTsKCWNsaWNrX29iai5vbmNsaWNrID0gZnVuY3Rpb24gb25jbGljayhldmVu dCkgeyByZXR1cm4gZmFsc2U7IH0gLy8g5+Dh6+7q6PDi7uDy/CDi++/g5PP46vMK CXJhenZvcm90KCdjYWxlbmRhcl9kaXYnLCAxLCAwLCBjbGlja19vYmosIHNob3df aGlkZV9jYWxlbmRhcik7CiAgICB9Cn0= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=duel.js Content-Type: application/x-javascript; name=duel.js Content-Location: http://js.imgsmail.ru/r/js/blogs/duel.js?7 Content-Transfer-Encoding: Base64 dmFyIGR1ZWxfbmVlZF9oZWlnaHQ7CnZhciBjdXJ0YWluU3RlcF9kdWVsOwp2YXIg bW92aW5nX2RpZ2l0X2R1ZWw7CmZ1bmN0aW9uIHJhenZvcm90X2R1ZWwob2JqLCBo ZWlnaHQxLCBoZWlnaHQyLCBzdGFydGVkKXsJCQoJdmFyIGdvb24gPSAnMSc7Cglp ZiAoaGVpZ2h0MSA8IGhlaWdodDIpCgkJaWYgKHN0YXJ0ZWQgPT0gMCkKCQl7IAoJ CQltb3ZpbmdfZGlnaXRfZHVlbCA9IGhlaWdodDE7CQoJCQltb3ZpbmdfZGlnaXRf ZHVlbCArPSBjdXJ0YWluU3RlcF9kdWVsOwkJCQkKCQl9CgkJZWxzZSAKCQl7CgkJ CWlmIChtb3ZpbmdfZGlnaXRfZHVlbCA8IGhlaWdodDIgJiYgbW92aW5nX2RpZ2l0 X2R1ZWw8PShoZWlnaHQyIC0gY3VydGFpblN0ZXBfZHVlbCkpCQoJCQl7IAkJCgkJ CQltb3ZpbmdfZGlnaXRfZHVlbCArPSBjdXJ0YWluU3RlcF9kdWVsOwoJCQkJZ29v biA9IDE7CgkJCX0KCQkJZWxzZSAKCQkJeyAKCQkJCWdlYmkob2JqKydfaW5uZXJk aXYnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCQkJCW1vdmluZ19kaWdpdF9k dWVsID0gJ2F1dG8nOwkJCQoJCQkJZ29vbiA9IDA7CgkJCQlnZWJpKCdkdWVsX2Fj dGl2ZV9pbWcnKS5vbmNsaWNrID0gZnVuY3Rpb24gb25jbGljayhldmVudCkgeyBv cGVuX2R1ZWwoJ2R1ZWxfYWN0aXZlJyl9OwoJCQl9CQoJCX0KCWlmIChoZWlnaHQx ID4gaGVpZ2h0MikKCQlpZiAoc3RhcnRlZCA9PSAwKQoJCXsgCQkKCQkJbW92aW5n X2RpZ2l0X2R1ZWwgPSBoZWlnaHQxOwkKCQkJZ2ViaShvYmopLnN0eWxlLmhlaWdo dCA9IG1vdmluZ19kaWdpdF9kdWVsOwoJCQlnZWJpKG9iaisnX2lubmVyZGl2Jyku c3R5bGUuZGlzcGxheSA9ICdub25lJzsgCgkJCW1vdmluZ19kaWdpdF9kdWVsIC09 IGN1cnRhaW5TdGVwX2R1ZWw7CgkJfQoJCWVsc2UgCgkJewoJCQlpZiAobW92aW5n X2RpZ2l0X2R1ZWwgPiBoZWlnaHQyICYmIG1vdmluZ19kaWdpdF9kdWVsPj1jdXJ0 YWluU3RlcF9kdWVsKQkKCQkJeyAJCQoJCQkJbW92aW5nX2RpZ2l0X2R1ZWwgLT0g Y3VydGFpblN0ZXBfZHVlbDsKCQkJCWdvb24gPSAxOwkJCQkJCQoJCQl9CgkJCWVs c2UKCQkJewoJCQkJbW92aW5nX2RpZ2l0X2R1ZWwgPSAwOwoJCQkJZ29vbiA9IDA7 CgkJCQlnZWJpKCdkdWVsX2FjdGl2ZV9pbWcnKS5vbmNsaWNrID0gZnVuY3Rpb24g b25jbGljayhldmVudCkgeyBvcGVuX2R1ZWwoJ2R1ZWxfYWN0aXZlJyl9OwoJCQl9 CgkJfQkKCQlnZWJpKG9iaikuc3R5bGUuaGVpZ2h0ID0gbW92aW5nX2RpZ2l0X2R1 ZWw7CQoJCWlmKGdvb24gPT0gMSkgc2V0VGltZW91dChmdW5jdGlvbigpIHsgcmF6 dm9yb3RfZHVlbChvYmosIGhlaWdodDEsIGhlaWdodDIsIDEpIH0sIDEpOyAKfSAK CnZhciBkdWVsX29wZW5lZCA9IDE7CgpmdW5jdGlvbiBvcGVuX2R1ZWwob2JqKSB7 CQoJaWYgKGR1ZWxfb3BlbmVkID09IDEpewoJCWR1ZWxfbmVlZF9oZWlnaHQgPSBn ZWJpKCdkdWVsX2FjdGl2ZScpLm9mZnNldEhlaWdodDsJCQoJCWN1cnRhaW5TdGVw X2R1ZWwgPSBwYXJzZUludChkdWVsX25lZWRfaGVpZ2h0IC8gNyk7CgkJZ2ViaSgn ZHVlbF9hY3RpdmVfaW1nJykuc3JjPSdodHRwOi8vaW1nLm1haWwucnUvci9ibG9n cy9jYWxlbmRhcl9tYXhpbWl6ZS5naWYnOwoJCWdlYmkoJ2R1ZWxfYWN0aXZlX2lt ZycpLm9uY2xpY2sgPSBmdW5jdGlvbiBvbmNsaWNrKGV2ZW50KSB7IHJldHVybiBm YWxzZX07CgkJZHVlbF9vcGVuZWQgPSAwOwoJCXJhenZvcm90X2R1ZWwob2JqLCBn ZWJpKG9iaikub2Zmc2V0SGVpZ2h0LCAwLCAwKTsKCX1lbHNlewoJZ2ViaSgnZHVl bF9hY3RpdmVfaW1nJykuc3JjPSdodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9j YWxlbmRhcl9taW5pbWl6ZS5naWYnOwoJZ2ViaSgnZHVlbF9hY3RpdmVfaW1nJyku b25jbGljayA9IGZ1bmN0aW9uIG9uY2xpY2soZXZlbnQpIHsgcmV0dXJuIGZhbHNl fTsKCWR1ZWxfb3BlbmVkID0gMTsKCXJhenZvcm90X2R1ZWwob2JqLCAwLCBkdWVs X25lZWRfaGVpZ2h0LCAwKTsKCX0KfQoKZnVuY3Rpb24gZ2V0Q2xpZW50V2lkdGgo KQp7CiAgcmV0dXJuIGRvY3VtZW50LmNvbXBhdE1vZGU9PSdDU1MxQ29tcGF0JyAm JiAhd2luZG93Lm9wZXJhP2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRX aWR0aDpkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOwp9CgpmdW5jdGlvbiBnZXRD bGllbnRIZWlnaHQoKQp7CiAgcmV0dXJuIGRvY3VtZW50LmNvbXBhdE1vZGU9PSdD U1MxQ29tcGF0JyAmJiAhd2luZG93Lm9wZXJhP2RvY3VtZW50LmRvY3VtZW50RWxl bWVudC5jbGllbnRIZWlnaHQ6ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7Cn0K CmZ1bmN0aW9uIGdldEJvZHlTY3JvbGxUb3AoKQp7CglyZXR1cm4gc2VsZi5wYWdl WU9mZnNldCB8fCAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApIHx8IChkb2N1bWVudC5ib2R5ICYm IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKTsKfQoKZnVuY3Rpb24gZ2V0Qm9keVNj cm9sbExlZnQoKQp7CglyZXR1cm4gc2VsZi5wYWdlWE9mZnNldCB8fCAoZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5z Y3JvbGxMZWZ0KSB8fCAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LnNj cm9sbExlZnQpOwp9CgpmdW5jdGlvbiBjb25maXJtX2R1ZWwoKQp7CglnZWJpKCdz aGFkb3dfZGl2Jykuc3R5bGUuaGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5zY3JvbGxI ZWlnaHQ7CglnZWJpKCdzaGFkb3dfZGl2Jykuc3R5bGUuZGlzcGxheT0gJyc7Cgln ZWJpKCdkdWVsX2NvbmZpcm1fZGl2Jykuc3R5bGUubGVmdD1wYXJzZUludChkb2N1 bWVudC5ib2R5LnNjcm9sbFdpZHRoLzIpLTIwMCsncHgnOwoJZ2ViaSgnZHVlbF9j b25maXJtX2RpdicpLnN0eWxlLnRvcCA9IHBhcnNlSW50KGdldENsaWVudEhlaWdo dCgpLzIpK2dldEJvZHlTY3JvbGxUb3AoKS03NSsncHgnOwoJZ2ViaSgnZHVlbF9j b25maXJtX2RpdicpLnN0eWxlLmRpc3BsYXkgPSAnJzsKfQoKZnVuY3Rpb24gY2hl Y2tfdGhyb3dfbGVuZ3RoKHRleHRhcmVhKSB7CiAgICB2YXIgbWF4ID0gMjAwOwog ICAgaWYgKHRleHRhcmVhLnZhbHVlLmxlbmd0aCA+IG1heCkgewogICAgICAgIHRl eHRhcmVhLnZhbHVlID0gdGV4dGFyZWEudmFsdWUuc3Vic3RyaW5nKDAsIG1heCk7 CiAgICB9Cn0KCmZ1bmN0aW9uIGhpZGVfY2hhbGxlbmdlX2RpdnMoKSB7CiAgICBn ZWJpKCdzaGFkb3dfZGl2Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIGdl YmkoJ2R1ZWxfY29uZmlybV9kaXYnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp9 CgpmdW5jdGlvbiBwZXJsX2NoYWxsZW5nZV9vZmZlcl9jYWxsYmFjayhzdGF0dXMs IFVzZXJJRCkgewogICAgaWYgKHN0YXR1cyAmJiBVc2VySUQpIHsKICAgICAgICB2 YXIgbGlua19sZWZ0ID0gZ2ViaSgnY2hhbGxlbmdlX3Rocm93X2xpbmtsZWZ0Xycr VXNlcklEKTsKICAgICAgICB2YXIgc3VjY19sZWZ0ID0gZ2ViaSgnY2hhbGxlbmdl X3Rocm93X3N1Y2Nlc3NsZWZ0XycrVXNlcklEKTsKICAgICAgICBpZiAobGlua19s ZWZ0ICYmIHN1Y2NfbGVmdCkgewogICAgICAgICAgICBsaW5rX2xlZnQuc3R5bGUu ZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgc3VjY19sZWZ0LnN0eWxlLmRp c3BsYXkgPSAnJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgbGlu a19yaWdodCA9IGdlYmkoJ2NoYWxsZW5nZV90aHJvd19saW5rcmlnaHRfJytVc2Vy SUQpOwogICAgICAgICAgICB2YXIgc3VjY19yaWdodCA9IGdlYmkoJ2NoYWxsZW5n ZV90aHJvd19zdWNjZXNzcmlnaHRfJytVc2VySUQpOwogICAgICAgICAgICBpZiAo bGlua19yaWdodCAmJiBzdWNjX3JpZ2h0KSB7CiAgICAgICAgICAgICAgICBsaW5r X3JpZ2h0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBz dWNjX3JpZ2h0LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgfQogICAg ICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gcGVybF9jaGFsbGVuZ2VfcG9zc2libGVf Y2FsbGJhY2soc3RhdHVzLCBVc2VySUQpIHsKICAgIGlmICghc3RhdHVzKSByZXR1 cm47CiAgICBpZiAoc3RhdHVzID09ICdPSycpIHsKICAgICAgICB2YXIgZGl2X2Nv bnRlbnQgPSBnZWJpKCdjaGFsbGVuZ2VfdGhyb3dfZGl2Y29udGVudF8nK1VzZXJJ RCk7CiAgICAgICAgaWYgKGRpdl9jb250ZW50KSB7CiAgICAgICAgICAgIGdlYmko J2R1ZWxfY29uZmlybV9kaXYnKS5pbm5lckhUTUwgPSBkaXZfY29udGVudC5pbm5l ckhUTUw7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIGRpdl9jb250 ZW50ID0gZ2ViaSgnY2hhbGxlbmdlX3Rocm93X2RpdmNvbnRlbnRkZWZhdWx0Xycr VXNlcklEKTsKICAgICAgICAgICAgaWYgKGRpdl9jb250ZW50KSBnZWJpKCdkdWVs X2NvbmZpcm1fZGl2JykuaW5uZXJIVE1MID0gZGl2X2NvbnRlbnQuaW5uZXJIVE1M OwogICAgICAgIH0KICAgICAgICBjb25maXJtX2R1ZWwoKTsKICAgIH0gZWxzZSB7 CiAgICAgICAgdmFyIHRleHQ7CiAgICAgICAgc3RhdHVzID0gLXN0YXR1czsKICAg ICAgICBzd2l0Y2goc3RhdHVzKSB7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAg ICAgICAgICAgIHRleHQgPSAnwvsg7eUg7O7m5fLlIOL75+Lg8vwg4e7r5eUg8vC4 9SDv7uv85+7i4PLl6+XpLic7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgdGV4dCA9ICfP8O7y6OLt6Oog 8+blIPP34PHy4vPl8iDiIOzg6vHo7ODr/O3u7CDq7uvo9+Xx8uLlIOTz/evl6S4n OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzoKICAg ICAgICAgICAgICAgIHRleHQgPSAnwvsg8+blIPHu8OXi7fPl8uXx/C4nOwogICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAg ICAgICAgIHRleHQgPSAnwvsg8+blIO/w5eTr7ubo6+gg5PP96/wg/fLu7PMg7+7r /Ofu4uDy5ev+Lic7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg Y2FzZSA1OgogICAgICAgICAgICAgICAgdGV4dCA9ICfC4Pgg4evu4yDx7ufk4O0g 7OXt5eUg5OLz9SDt5eTl6/wg7eDn4OQg6OvoIOIg7bjsIOzl7fz45SDk4vP1IOfg 7+jx5ekuJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNl IDY6CiAgICAgICAgICAgICAgICB0ZXh0ID0gJ8Hr7uMg7/Du8uji7ejq4CDx7ufk 4O0g7OXt5eUg5OLz9SDt5eTl6/wg7eDn4OQg6OvoIOIg7bjsIOzl7eXlIOTi8/Ug 5+Dv6PHl6Swg6CDv7v3y7uzzIO7tIO3lIOzu5uXyIPP34PHy4u7i4PL8IOIg5PP9 6//1Lic7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAg aWYgKHRleHQpIHNob3dfZXJyb3IoZXJyb3JFdmVudCwgdGV4dCk7CiAgICB9CiAg ICByZXR1cm47Cn0KCnZhciBlcnJvckV2ZW50ID0gbmV3IE9iamVjdDsKZnVuY3Rp b24gY2FsbF9vbl9jaGFsbGVuZ2UoVXNlcklELCBldmVudCkgewogICAgaWYgKCFl dmVudCkgZXZlbnQgPSB3aW5kb3cuZXZlbnQ7CiAgICBlcnJvckV2ZW50ID0geyB0 YXJnZXQ6IGV2ZW50LnRhcmdldCwgc3JjRWxlbWVudDogZXZlbnQuc3JjRWxlbWVu dCB9OwogICAgcGVybF9jaGFsbGVuZ2VfcG9zc2libGUoVXNlcklELCBwZXJsX2No YWxsZW5nZV9wb3NzaWJsZV9jYWxsYmFjayk7Cn0KCmZ1bmN0aW9uIGFjY2VwdF9j aGFsbGVuZ2UoQ2hhbGxlbmdlSUQsIGR1cmF0aW9uKSB7CiAgICB2YXIgZGl2X2Nv bnRlbnQgPSBnZWJpKCdjaGFsbGVuZ2VfYWNjZXB0X2RpdmNvbnRlbnQnKTsKICAg IGlmICghZGl2X2NvbnRlbnQpIHJldHVybjsKICAgIGdlYmkoJ2R1ZWxfYWNjZXB0 X2RpdicpLmlubmVySFRNTCA9IGRpdl9jb250ZW50LmlubmVySFRNTDsKCiAgICBn ZWJpKCdzaGFkb3dfZGl2Jykuc3R5bGUuaGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5z Y3JvbGxIZWlnaHQ7CglnZWJpKCdzaGFkb3dfZGl2Jykuc3R5bGUuZGlzcGxheT0g Jyc7CglnZWJpKCdkdWVsX2FjY2VwdF9kaXYnKS5zdHlsZS5sZWZ0PXBhcnNlSW50 KGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGgvMiktMzI1KydweCc7CglnZWJpKCdk dWVsX2FjY2VwdF9kaXYnKS5zdHlsZS50b3AgPSBwYXJzZUludChnZXRDbGllbnRI ZWlnaHQoKS8yKStnZXRCb2R5U2Nyb2xsVG9wKCktNzUrJ3B4JzsKCWdlYmkoJ2R1 ZWxfYWNjZXB0X2RpdicpLnN0eWxlLmRpc3BsYXkgPSAnJzsKCiAgICBnZWJpKCdj aGFjY3JlbV8nK2R1cmF0aW9uKS5zdHlsZS5kaXNwbGF5PScnOwogICAgZ2ViaSgn Y2hhY2NkdXJhdGlvbicpLnZhbHVlID0gZHVyYXRpb247Cn0KCmZ1bmN0aW9uIGNo YWxsZW5nZV92b3RlX2NhbGxiYWNrKHN0YXR1cywgQ2hhbGxlbmdlSUQsIEpvdXJu YWxJRCwgZ3JhZGVMZWZ0LCBncmFkZVJpZ2h0LCBpc19sZWZ0KSB7CiAgICBpZiAo c3RhdHVzPT0tMSkgewogICAgICAgIC8vIHJhdGUtbGltaXQKICAgIH0gZWxzZSBp ZiAoIXN0YXR1cykgewogICAgICAgIC8vIHd0ZgogICAgfSBlbHNlIGlmIChzdGF0 dXM9PSdPSycpIHsKICAgICAgICBpZiAoSm91cm5hbElEPT1uZXcgU3RyaW5nKDAp KSB7IC8vIHNlcXVlbmNlIHZvdGUKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9u LnJlbG9hZCh0cnVlKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAg ICAgICAgdmFyIHZvdGUxX2xjID0gZ2ViaSgnY2hhbGxlbmdlX2xlZnRjb2x1bW5f bGVmdHZvdGVfJytDaGFsbGVuZ2VJRCk7CiAgICAgICAgdmFyIHZvdGUyX2xjID0g Z2ViaSgnY2hhbGxlbmdlX2xlZnRjb2x1bW5fcmlnaHR2b3RlXycrQ2hhbGxlbmdl SUQpOwogICAgICAgIHZhciBncmFkZTFfbGMgPSBnZWJpKCdjaGFsbGVuZ2VfbGVm dGNvbHVtbl9sZWZ0Z3JhZGVfJytDaGFsbGVuZ2VJRCk7CiAgICAgICAgdmFyIGdy YWRlMl9sYyA9IGdlYmkoJ2NoYWxsZW5nZV9sZWZ0Y29sdW1uX3JpZ2h0Z3JhZGVf JytDaGFsbGVuZ2VJRCk7CiAgICAgICAgaWYgKHZvdGUxX2xjICYmIHZvdGUyX2xj ICYmIGdyYWRlMV9sYyAmJiBncmFkZTJfbGMpIHsKICAgICAgICAgICAgZ3JhZGUx X2xjLmlubmVySFRNTCA9IGdyYWRlTGVmdDsKICAgICAgICAgICAgZ3JhZGUyX2xj LmlubmVySFRNTCA9IGdyYWRlUmlnaHQ7CiAgICAgICAgICAgIHZhciBzdWNjMSA9 IGdlYmkoJ2NoYWxsZW5nZV9sZWZ0Y29sdW1uX3N1Y2Nlc3NfJytDaGFsbGVuZ2VJ RCk7CiAgICAgICAgICAgIGlmIChzdWNjMSkgewogICAgICAgICAgICAgICAgc3Vj YzEuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgc2V0VGltZW91 dCggZnVuY3Rpb24oKSB7IHN1Y2MxLnN0eWxlLmRpc3BsYXk9J25vbmUnIH0sIDEw MDApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgdm90ZTFf cmMgPSBnZWJpKCdjaGFsbGVuZ2VfcmlnaHRjb2x1bW5fJytKb3VybmFsSUQrJ19s ZWZ0dm90ZV8nK0NoYWxsZW5nZUlEKTsKICAgICAgICB2YXIgdm90ZTJfcmMgPSBn ZWJpKCdjaGFsbGVuZ2VfcmlnaHRjb2x1bW5fJytKb3VybmFsSUQrJ19yaWdodHZv dGVfJytDaGFsbGVuZ2VJRCk7CiAgICAgICAgdmFyIGdyYWRlMV9yYyA9IGdlYmko J2NoYWxsZW5nZV9yaWdodGNvbHVtbl8nK0pvdXJuYWxJRCsnX2xlZnRncmFkZV8n K0NoYWxsZW5nZUlEKTsKICAgICAgICB2YXIgZ3JhZGUyX3JjID0gZ2ViaSgnY2hh bGxlbmdlX3JpZ2h0Y29sdW1uXycrSm91cm5hbElEKydfcmlnaHRncmFkZV8nK0No YWxsZW5nZUlEKTsKICAgICAgICBpZiAodm90ZTFfcmMgJiYgdm90ZTJfcmMgJiYg Z3JhZGUxX3JjICYmIGdyYWRlMl9yYykgewogICAgICAgICAgICBncmFkZTFfcmMu aW5uZXJIVE1MID0gZ3JhZGVMZWZ0OwogICAgICAgICAgICBncmFkZTJfcmMuaW5u ZXJIVE1MID0gZ3JhZGVSaWdodDsKICAgICAgICAgICAgdmFyIHBvcyA9IGlzX2xl ZnQgPyAnbGVmdCcgOiAncmlnaHQnOwogICAgICAgICAgICB2YXIgc3VjYzIgPSBn ZWJpKCdjaGFsbGVuZ2VfcmlnaHRjb2x1bW5fJytKb3VybmFsSUQrJ18nK3Bvcysn X3N1Y2Nlc3NfJytDaGFsbGVuZ2VJRCk7CiAgICAgICAgICAgIGlmIChzdWNjMikg ewogICAgICAgICAgICAgICAgc3VjYzIuc3R5bGUuZGlzcGxheSA9ICcnOwogICAg ICAgICAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7IHN1Y2MyLnN0eWxl LmRpc3BsYXk9J25vbmUnIH0sIDEwMDApOwogICAgICAgICAgICB9CiAgICAgICAg fQogICAgfQp9CgpmdW5jdGlvbiBjaGFsbGVuZ2Vfdm90ZShDaGFsbGVuZ2VJRCwg VXNlcklELCBKb3VybmFsSUQsIE1hZ2ljaywgZG9fdm90ZTEwKSB7CiAgICBwZXJs X2NoYWxsZW5nZV92b3RlKENoYWxsZW5nZUlELCBVc2VySUQsIEpvdXJuYWxJRCwg TWFnaWNrLCBkb192b3RlMTAsIGNoYWxsZW5nZV92b3RlX2NhbGxiYWNrKTsKCiAg ICBpZiAoIUpvdXJuYWxJRCkgcmV0dXJuIHRydWU7IC8vIHNlcXVlbmNlIHZvdGUK CiAgICB2YXIgdm90ZTFfbGMgPSBnZWJpKCdjaGFsbGVuZ2VfbGVmdGNvbHVtbl9s ZWZ0dm90ZV8nK0NoYWxsZW5nZUlEKTsKICAgIHZhciB2b3RlMl9sYyA9IGdlYmko J2NoYWxsZW5nZV9sZWZ0Y29sdW1uX3JpZ2h0dm90ZV8nK0NoYWxsZW5nZUlEKTsK ICAgIHZhciBncmFkZTFfbGMgPSBnZWJpKCdjaGFsbGVuZ2VfbGVmdGNvbHVtbl9s ZWZ0Z3JhZGVfJytDaGFsbGVuZ2VJRCk7CiAgICB2YXIgZ3JhZGUyX2xjID0gZ2Vi aSgnY2hhbGxlbmdlX2xlZnRjb2x1bW5fcmlnaHRncmFkZV8nK0NoYWxsZW5nZUlE KTsKICAgIGlmICh2b3RlMV9sYyAmJiB2b3RlMl9sYyAmJiBncmFkZTFfbGMgJiYg Z3JhZGUyX2xjKSB7CiAgICAgICAgdm90ZTFfbGMuc3R5bGUuZGlzcGxheSA9ICdu b25lJzsKICAgICAgICB2b3RlMl9sYy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwog ICAgfQoKICAgIHZhciB2b3RlMV9yYyA9IGdlYmkoJ2NoYWxsZW5nZV9yaWdodGNv bHVtbl8nK0pvdXJuYWxJRCsnX2xlZnR2b3RlXycrQ2hhbGxlbmdlSUQpOwogICAg dmFyIHZvdGUyX3JjID0gZ2ViaSgnY2hhbGxlbmdlX3JpZ2h0Y29sdW1uXycrSm91 cm5hbElEKydfcmlnaHR2b3RlXycrQ2hhbGxlbmdlSUQpOwogICAgdmFyIGdyYWRl MV9yYyA9IGdlYmkoJ2NoYWxsZW5nZV9yaWdodGNvbHVtbl8nK0pvdXJuYWxJRCsn X2xlZnRncmFkZV8nK0NoYWxsZW5nZUlEKTsKICAgIHZhciBncmFkZTJfcmMgPSBn ZWJpKCdjaGFsbGVuZ2VfcmlnaHRjb2x1bW5fJytKb3VybmFsSUQrJ19yaWdodGdy YWRlXycrQ2hhbGxlbmdlSUQpOwogICAgaWYgKHZvdGUxX3JjICYmIHZvdGUyX3Jj ICYmIGdyYWRlMV9yYyAmJiBncmFkZTJfcmMpIHsKICAgICAgICB2b3RlMV9yYy5z dHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIHZvdGUyX3JjLnN0eWxlLmRp c3BsYXkgPSAnbm9uZSc7CiAgICB9Cn0KCmZ1bmN0aW9uIGNoZWNrX2NoYWxsZW5n ZV9jYXBjaGEoQ2hhbGxlbmdlSUQsIFVzZXJJRCwgSm91cm5hbElELCBNYWdpY2sp IHsKICAgIHZhciBJbWFnZUlEID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0lt YWdlSURfaWQnKS52YWx1ZTsKICAgIHZhciBJbWFnZUFuc3dlciA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdJbWFnZUFuc3dlcl9pZCcpLnZhbHVlOwogICAgcGVy bF9jaGFsbGVuZ2VfY2hlY2tfY2FwY2hhKAogICAgICAgIEltYWdlSUQsIEltYWdl QW5zd2VyLAogICAgICAgIGZ1bmN0aW9uKG9rKSB7CiAgICAgICAgICAgIGlmIChv aykgewogICAgICAgICAgICAgICAgY2hhbGxlbmdlX3ZvdGUoQ2hhbGxlbmdlSUQs IFVzZXJJRCwgSm91cm5hbElELCBNYWdpY2spOwogICAgICAgICAgICAgICAgaGlk ZV9jYXBjaGEoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg IHBlcmxfY2hhbGxlbmdlX2dldF9jYXBjaGEoCiAgICAgICAgICAgICAgICAgICAg ZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZCkg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ0ltYWdlX2lkJykuc3JjID0gJ2h0dHA6Ly8nICsgUGVybFZhcl9CbG9n c1BlcmxIb3N0ICsgJy9jZ2ktYmluL2pvdXJuYWwvZ2V0X2ltYWdlP2lkPScraWQ7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnSW1hZ2VJRF9pZCcpLnZhbHVlID0gaWQ7CiAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAp OwogICAgICAgICAgICAgICAgYWxlcnQoJ83l4uXw7e4g4uLl5LjtIOru5CDn4Pno 8vsnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICk7CiAgICByZXR1cm4g ZmFsc2U7Cn0KCmZ1bmN0aW9uIGhpZGVfY2FwY2hhKCkgewogICAgZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2NhcGNoYV9wb3B1cCcpLnN0eWxlLnZpc2liaWxpdHk9 ImhpZGRlbiI7Cn0KCmZ1bmN0aW9uIHNob3dfY2hhbGxlbmdlX2NhcGNoYShldmVu dCwgSm91cm5hbERpciwgQ2hhbGxlbmdlSUQsIFVzZXJJRCwgSm91cm5hbElELCBN YWdpY2ssIGRvX3ZvdGUxMCkgewogICAgaWYgKCFKb3VybmFsRGlyIHx8ICFDaGFs bGVuZ2VJRCB8fCAhVXNlcklEIHx8ICFNYWdpY2spCiAgICAgICAgcmV0dXJuOwog ICAgaWYgKCFldmVudCkgZXZlbnQgPSB3aW5kb3cuZXZlbnQ7CiAgICB2YXIgZWxl bWVudCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50OwogICAgdmFy IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXBjaGFfcG9wdXAnKTsK ICAgIGlmIChlbGVtZW50ICYmIGRpdikgewogICAgICAgIHBlcmxfY2hhbGxlbmdl X2dldF9jYXBjaGEoCiAgICAgICAgICAgIGZ1bmN0aW9uKGlkKSB7CiAgICAgICAg ICAgICAgICBpZiAoaWQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY29vciA9 IGdldF9wb3NpdGlvbihlbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICB2YXIg SFRNTCA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICAgICAgICAgIEhUTUwucHVz aCgnPGRpdj48YSBvbmNsaWNrPSJoaWRlX2NhcGNoYSgpOyByZXR1cm4gZmFsc2U7 IiBocmVmPSIiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvbWFpbC9ydS9p bWFnZXMvYmxvZ3MvY2xvc2VfaGVscC5naWYiIGhlaWdodD0iNyIgd2lkdGg9Ijci IGJvcmRlcj0iMCIgc3R5bGU9Im1hcmdpbjogNXB4OyBmbG9hdDogcmlnaHQ7Ii8+ PC9hPicpOwogICAgICAgICAgICAgICAgICAgIEhUTUwucHVzaCgnPGRpdiBzdHls ZT0iY2xlYXI6Ym90aDsiPjxpbWcgc3JjPSJodHRwOi8vJyArIFBlcmxWYXJfQmxv Z3NQZXJsSG9zdCArICcvY2dpLWJpbi9qb3VybmFsL2dldF9pbWFnZT9pZD0nK2lk KyciIHdpZHRoPSIxNTEiIGJvcmRlcj0iMCIgdnNwYWNlPSIwIiBoc3BhY2U9IjAi IGhlaWdodD0iNTEiIGFsdD0iIiBpZD0iSW1hZ2VfaWQiIC8+PC9kaXY+Jyk7CiAg ICAgICAgICAgICAgICAgICAgSFRNTC5wdXNoKCc8ZGl2IHN0eWxlPSJjbGVhcjpi b3RoOyI+1+jx6+4g7eAg6uDw8ujt6uU6PC9kaXY+Jyk7CiAgICAgICAgICAgICAg ICAgICAgSFRNTC5wdXNoKCc8ZGl2IHN0eWxlPSJjbGVhcjpib3RoOyBkaXNwbGF5 OmlubGluZTsiPjxmb3JtIGFjdGlvbj0iaHR0cDovLycgKyBQZXJsVmFyX0Jsb2dz UGVybEhvc3QgK0pvdXJuYWxEaXIrJ2pjaGFsbGVuZ2UiIG1ldGhvZD0iZ2V0IiBp ZD0iY2FwY2hhRm9ybSIgb25zdWJtaXQ9InJldHVybiBjaGVja19jaGFsbGVuZ2Vf Y2FwY2hhKFwnJytDaGFsbGVuZ2VJRCsnXCcsICcrVXNlcklEKycsIFwnJytKb3Vy bmFsSUQrJ1wnLCBcJycrTWFnaWNrKydcJyk7Ij48aW5wdXQgdHlwZT0iaGlkZGVu IiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJ2b3RlIiAvPicpOwogICAgICAgICAgICAg ICAgICAgIGlmIChkb192b3RlMTApIHsKICAgICAgICAgICAgICAgICAgICAgICAg SFRNTC5wdXNoKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb192b3RlMTAi IHZhbHVlPSIxIiAvPicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICBIVE1MLnB1c2goJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9 ImJhY2siIHZhbHVlPSInICsgIFBlcmxWYXJfYmFja192YWx1ZSArICciIC8+PGlu cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTWFnaWNrIiB2YWx1ZT0iJyArIE1hZ2lj ayArICciIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ2hhbGxlbmdlSUQi IHZhbHVlPSInK0NoYWxsZW5nZUlEKyciIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIg bmFtZT0iSW1hZ2VJRCIgdmFsdWU9IicraWQrJyIgaWQ9IkltYWdlSURfaWQiIC8+ PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkltYWdlQW5zd2VyIiBpZD0iSW1hZ2VB bnN3ZXJfaWQiIC8+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ik9LIiAvPjwv Zm9ybT48L2Rpdj48L2Rpdj4nKTsKICAgICAgICAgICAgICAgICAgICBkaXYuaW5u ZXJIVE1MID0gSFRNTC5qb2luKCcnKTsKICAgICAgICAgICAgICAgICAgICBkaXYu c3R5bGUudG9wID0gKGNvb3IudG9wK2VsZW1lbnQub2Zmc2V0SGVpZ2h0KSsicHgi OwogICAgICAgICAgICAgICAgICAgIGRpdi5zdHlsZS52aXNpYmlsaXR5ID0gInZp c2libGUiOwogICAgICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gY29vci5sZWZ0 IC0gZGl2Lm9mZnNldFdpZHRoICsgZWxlbWVudC5vZmZzZXRXaWR0aDsKICAgICAg ICAgICAgICAgICAgICBpZiAobGVmdDwwKSBsZWZ0ID0gMDsKICAgICAgICAgICAg ICAgICAgICBkaXYuc3R5bGUubGVmdCA9IGxlZnQrInB4IjsKICAgICAgICAgICAg ICAgICAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOwogICAgICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2Vfdm90ZShD aGFsbGVuZ2VJRCwgVXNlcklELCBKb3VybmFsSUQsIE1hZ2ljaywgZG9fdm90ZTEw KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICk7CiAg ICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGNoYWxsZW5nZV9jb2Rl X3Nob3coZXZlbnQsaWQpIHsKCWV2ZW50ID0gZXZlbnQgfHwgd2luZG93LmV2ZW50 OwogICAgdmFyIGVsZW1lbnQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxl bWVudDsKCWlmIChlbGVtZW50KSB7CQoJCXZhciBjb29yID0gZ2V0X3Bvc2l0aW9u KGVsZW1lbnQpOwoJCXZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk aXYnKTsKCQlkaXYuaW5uZXJIVE1MID0gZ2ViaShpZCkuaW5uZXJIVE1MOwoJCWRp di5jbGFzc05hbWUgPSAnY2hhbGxlbmdlX2NvZGVzJzsKCQlkaXYuc3R5bGUudG9w ID0gY29vci50b3A7CgkJZGl2LnN0eWxlLmxlZnQ9IGNvb3IubGVmdDsJCQoJCWRv Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKCX0KCXJldHVybiBmYWxzZTsK fQpmdW5jdGlvbiBjaGFsbGVuZ2VfY29kZV9oaWRlKG9iaikgewoJdmFyIGRpdiA9 IG9iai5wYXJlbnROb2RlOwkKCWlmKGRpdikgZG9jdW1lbnQuYm9keS5yZW1vdmVD aGlsZChkaXYpOwoJcmV0dXJuIGZhbHNlOwp9Cg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=vote.js Content-Type: application/x-javascript; charset=windows-1251; name=vote.js Content-Location: http://js.imgsmail.ru/r/js/blogs/vote.js?6 Content-Transfer-Encoding: Base64 dmFyIGNhcGNoYURpdiA9ICdjYXBjaGFfcG9wdXAnOwoKZnVuY3Rpb24gY2hlY2tD YXBjaGEoKSB7CiAgICB2YXIgSW1hZ2VJRCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdJbWFnZUlEX2lkJykudmFsdWU7CiAgICB2YXIgSW1hZ2VBbnN3ZXIgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnSW1hZ2VBbnN3ZXJfaWQnKS52YWx1ZTsK ICAgIHBlcmxfY2hlY2tfY2FwY2hhKAogICAgICAgIEltYWdlSUQsIEltYWdlQW5z d2VyLAogICAgICAgIGZ1bmN0aW9uKHN0YXR1cywgb2spIHsKICAgICAgICAgICAg aWYgKHN0YXR1cyAmJiBvaykgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2NhcGNoYUZvcm0nKS5zdWJtaXQoKTsKICAgICAgICAgICAg fSBlbHNlIHsKICAgICAgICAgICAgICAgIHBlcmxfZ2V0X2NhcGNoYV9pZCgKICAg ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoc3RhdHVzLCBpZCkgewogICAgICAg ICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICYmIGlkKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnSW1hZ2Vf aWQnKS5zcmMgPSAnaHR0cDovLycgKyBQZXJsVmFyX0Jsb2dzUGVybEhvc3QgKyAn L2NnaS1iaW4vam91cm5hbC9nZXRfaW1hZ2U/aWQ9JytpZDsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdJbWFnZUlE X2lkJykudmFsdWUgPSBpZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAg ICAgICBhbGVydCgnzeXi5fDt7iDi4uXkuO0g6u7kIOfg+ejy+ycpOwogICAgICAg ICAgICB9CiAgICAgICAgfQogICAgKTsKICAgIHJldHVybiBmYWxzZTsKfQoKZnVu Y3Rpb24gaGlkZV9jYXBjaGEoKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChjYXBjaGFEaXYpLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7Cn0KCmZ1bmN0 aW9uIHNob3dfY2FwY2hhKGV2ZW50LCBKb3VybmFsRGlyLCBQb3N0SUQsIFZvdGUs IE1hZ2ljaykKewogICAgaWYgKCFKb3VybmFsRGlyIHx8ICFQb3N0SUQgfHwgIVZv dGUpCiAgICAgICAgcmV0dXJuOwogICAgaWYgKCFldmVudCkgZXZlbnQgPSB3aW5k b3cuZXZlbnQ7CiAgICB2YXIgZWxlbWVudCA9IGV2ZW50LnRhcmdldCB8fCBldmVu dC5zcmNFbGVtZW50OwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKGNhcGNoYURpdik7CiAgICBpZiAoZWxlbWVudCAmJiBkaXYpIHsKICAgICAg ICAvLyB0cmlja3ksIGVoPyBJIGRvIHRoaXMgYmVjYXVzZSB3YW50IHRvIHNhdmUg Sm91cm5hbERpciwgUG9zdElELCBWb3RlIGluIGxvY2FsIHNjb3BlIGZvciBjYWxs YmFjawogICAgICAgIHBlcmxfZ2V0X2NhcGNoYV9pZCgKICAgICAgICAgICAgZnVu Y3Rpb24oc3RhdHVzLCBpZCkgewogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAm JiBpZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBjb29yID0gZ2V0X3Bvc2l0 aW9uKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgIHZhciBIVE1MID0gJzxk aXY+PGEgb25jbGljaz0iaGlkZV9jYXBjaGEoKTsgcmV0dXJuIGZhbHNlOyIgaHJl Zj0iIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L21haWwvcnUvaW1hZ2Vz L2Jsb2dzL2Nsb3NlX2hlbHAuZ2lmIiBoZWlnaHQ9IjciIHdpZHRoPSI3IiBib3Jk ZXI9IjAiIHN0eWxlPSJtYXJnaW46IDVweDsgZmxvYXQ6IHJpZ2h0OyIvPjwvYT4n OwogICAgICAgICAgICAgICAgICAgIEhUTUwgKz0gJzxkaXYgc3R5bGU9ImNsZWFy OmJvdGg7Ij48aW1nIHNyYz0iaHR0cDovLycgKyBQZXJsVmFyX0Jsb2dzUGVybEhv c3QgKyAnL2NnaS1iaW4vam91cm5hbC9nZXRfaW1hZ2U/aWQ9JytpZCsnIiB3aWR0 aD0iMTUxIiBib3JkZXI9IjAiIHZzcGFjZT0iMCIgaHNwYWNlPSIwIiBoZWlnaHQ9 IjUxIiBhbHQ9IiIgaWQ9IkltYWdlX2lkIiAvPjwvZGl2Pic7CiAgICAgICAgICAg ICAgICAgICAgSFRNTCArPSAnPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDsiPtfo8evu IO3gIOrg8PLo7erlOjwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgSFRNTCAr PSAnPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDsgZGlzcGxheTppbmxpbmU7Ij48Zm9y bSBhY3Rpb249IicgK0pvdXJuYWxEaXIrJ3ZvdGUiIG1ldGhvZD0iZ2V0IiBpZD0i Y2FwY2hhRm9ybSIgb25zdWJtaXQ9InJldHVybiBjaGVja0NhcGNoYSgpOyI+PGlu cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmFjayIgdmFsdWU9IicgKyAgUGVybFZh cl9iYWNrX3ZhbHVlICsgJyIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJN YWdpY2siIHZhbHVlPSInICsgTWFnaWNrICsgJyIgLz48aW5wdXQgdHlwZT0iaGlk ZGVuIiBuYW1lPSJQb3N0SUQiIHZhbHVlPSInK1Bvc3RJRCsnIiAvPjxpbnB1dCB0 eXBlPSJoaWRkZW4iIG5hbWU9InZvdGUiIHZhbHVlPSInK1ZvdGUrJyIgLz48aW5w dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJbWFnZUlEIiB2YWx1ZT0iJytpZCsnIiBp ZD0iSW1hZ2VJRF9pZCIgLz48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iSW1hZ2VB bnN3ZXIiIGlkPSJJbWFnZUFuc3dlcl9pZCIgLz48aW5wdXQgdHlwZT0ic3VibWl0 IiB2YWx1ZT0iT0siIC8+PC9mb3JtPjwvZGl2PjwvZGl2Pic7CiAgICAgICAgICAg ICAgICAgICAgZGl2LmlubmVySFRNTCA9IEhUTUw7CiAgICAgICAgICAgICAgICAg ICAgZGl2LnN0eWxlLnRvcCA9IChjb29yLnRvcCtlbGVtZW50Lm9mZnNldEhlaWdo dCkrInB4IjsKICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUudmlzaWJpbGl0 eSA9ICJ2aXNpYmxlIjsKICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUubGVm dCA9IChjb29yLmxlZnQgLSBkaXYub2Zmc2V0V2lkdGggKyBlbGVtZW50Lm9mZnNl dFdpZHRoKSsicHgiOwogICAgICAgICAgICAgICAgICAgIGV2ZW50LmNhbmNlbEJ1 YmJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg ICAgICApOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBwb2xs X3ZvdGUoUG9sbElEKQp7CiAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKFBvbGxJRCk7CiAgICBpZiAoIWZvcm0pIHJldHVybjsKICAgIHZhciBh bnN3ZXJzID0gZXZhbCgnYW5zd2Vyc18nK1BvbGxJRCk7CiAgICBpZiAoIWFuc3dl cnMubGVuZ3RoKSByZXR1cm47CiAgICB2YXIgc2VuZF92YWx1ZXMgPSBuZXcgQXJy YXkoKTsKICAgIGZvciAodmFyIGk9MDsgaTxhbnN3ZXJzLmxlbmd0aDsgaSsrKSB7 CiAgICAgICAgdmFyIGFuc3dlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp ZF8nK2Fuc3dlcnNbaV0pOwogICAgICAgIGlmIChhbnN3ZXIuY2hlY2tlZCkgewog ICAgICAgICAgICBpZiAoYW5zd2VyLnR5cGU9PSdyYWRpbycpIHsKICAgICAgICAg ICAgICAgIHBlcmxfcG9sbF92b3RlKFBvbGxJRCwgWyBhbnN3ZXJzW2ldIF0sIHZv dGVfY2FsbGJhY2spOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg ICB9CiAgICAgICAgICAgIHNlbmRfdmFsdWVzLnB1c2goYW5zd2Vyc1tpXSk7CiAg ICAgICAgfQogICAgfQogICAgcGVybF9wb2xsX3ZvdGUoUG9sbElELCBzZW5kX3Zh bHVlcywgdm90ZV9jYWxsYmFjayk7Cn0KCmZ1bmN0aW9uIHZvdGVfY2FsbGJhY2so UG9sbElELCBjb3VudCwgcm93cykKewogICAgaWYgKCFQb2xsSUQgfHwgIWNvdW50 IHx8ICFyb3dzKSByZXR1cm47CiAgICBjb3VudCA9IHBhcnNlSW50KGNvdW50KTsK ICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUG9sbElEKTsK ICAgIGlmICghZm9ybSkgcmV0dXJuOwogICAgaWYgKHR5cGVvZiByb3dzICE9ICdv YmplY3QnKSByZXR1cm47CgogICAgdmFyIGRvbmVfZGl2ID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ3ZvdGVfZG9uZV8nK1BvbGxJRCk7CiAgICBkb25lX2Rpdi5p bm5lckhUTUwgPSAnPGRpdiBjbGFzcz0idm90ZV9kb25lIG1iMTAiPtHv4PHo4e4s IMLg+CDj7uvu8SDv8Ojt//I8L2Rpdj4nOwogICAgdmFyIHJhdGluZ190aW1lciA9 IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocmF0aW5nX3RpbWVy KTtkb25lX2Rpdi5pbm5lckhUTUw9Jyc7fSwzMDAwKTsKCiAgICBmb3IgKHZhciBp IGluIHJvd3MpIHsKICAgICAgICBpZiAodHlwZW9mIHJvd3NbaV0gPT0gJ29iamVj dCcpIHsKICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07CiAgICAgICAgICAg IHZhciB0ZDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGQxXycrcm93LklE KTsKICAgICAgICAgICAgdmFyIHRkMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCd0ZDJfJytyb3cuSUQpOwogICAgICAgICAgICB0ZDEuaW5uZXJIVE1MID0gcm93 LnRleHQ7CiAgICAgICAgICAgIHRkMS5zdHlsZS5wYWRkaW5nID0gJzNweCAwJzsK ICAgICAgICAgICAgdGQyLmlubmVySFRNTCA9ICc8aW1nIHNyYz0iaHR0cDovL2lt Zy5tYWlsLnJ1L3IvYmxvZ3MvZGlhZ3JhbScrKHJvdy5sZWFkZXIgPyAnX3JlZCcg OiAnJykrJy5naWYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgaGVpZ2h0 PSIxMCIgd2lkdGg9IicrcGFyc2VJbnQocm93LmNvdW50Lyhjb3VudCsxKSoxMDAp KjMrJyIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDJweDsgbWFyZ2luLWxlZnQ6IDIw cHg7Ij4mbmJzcDsmbmJzcDs8Yj4nK3Jvdy5jb3VudCsocm93LnByb2MgPyAnICgn K3Jvdy5wcm9jKycpJyA6ICcnKSsnPC9iPic7CiAgICAgICAgICAgIGlmIChyb3cu bGVhZGVyKSB0ZDIuc3R5bGUuY29sb3IgPSAnI2YwMCc7CiAgICAgICAgfQogICAg fQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Ym1pdF9idXR0b25fJytQ b2xsSUQpLnN0eWxlLmRpc3BsYXk9J25vbmUnOwogICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2Fuc3dlcnNfY291bnRfJytQb2xsSUQpLmlubmVySFRNTD1jb3Vu dDsgCn0KCmZ1bmN0aW9uIHZvdGVUaGlzUG9zdChldmVudCwgSm91cm5hbERpciwg UG9zdElELCBWb3RlLCBNYWdpY2spIHsKICAgIHBlcmxfY2hlY2tfY2FwY2hhX25l ZWRlZCgKICAgICAgICBQb3N0SUQsCiAgICAgICAgZnVuY3Rpb24obmVlZGVkKSB7 CiAgICAgICAgICAgIGlmICghbmVlZGVkKSB7CiAgICAgICAgICAgICAgICBoaWRl X3ZvdGUoUG9zdElEKTsKICAgICAgICAgICAgICAgIHBlcmxfdm90ZV9wb3N0KFBv c3RJRCwgVm90ZSwgTWFnaWNrLCBwZXJsX3ZvdGVfcG9zdF9jYWxsYmFjayk7CiAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzaG93X2NhcGNoYShl dmVudCwgSm91cm5hbERpciwgUG9zdElELCBWb3RlLCBNYWdpY2spOwogICAgICAg ICAgICB9CiAgICAgICAgfQogICAgKTsKICAgIHJldHVybiBmYWxzZTsKfQoKCmZ1 bmN0aW9uIHBlcmxfdm90ZV9wb3N0X2NhbGxiYWNrKFJhdGluZywgUG9zdElEKSB7 CiAgICAgICAgaWYoUmF0aW5nICE9IHVuZGVmaW5lZCkgeyBzaG93X3ZvdGVfbWVz c2FnZShQb3N0SUQsIFJhdGluZykgfQogICAgICAgIGVsc2UgeyBzaG93X3ZvdGVf bWVzc2FnZShQb3N0SUQsICft5SDz5ODr7vH8IOTu4eDi6PL8IO725e3q8ycpIH0K fQpmdW5jdGlvbiBoaWRlX3ZvdGUoUG9zdElEKSB7CiAgICAgICAgZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ3ZvdGVfJyArIFBvc3RJRCkuc3R5bGUuZGlzcGxheSA9 ICJub25lIjsKICAgICAgICBzaG93X3ZvdGVfbWVzc2FnZShQb3N0SUQsICfv7uTu 5uTo8uUuLi4nKTsKfQpmdW5jdGlvbiBzaG93X3ZvdGVfbWVzc2FnZShQb3N0SUQs IG1lc3NhZ2UpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndm90 ZV8nICsgUG9zdElEKS5zdHlsZS5kaXNwbGF5ID0gIiI7CiAgICAgICAgZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ3ZvdGVfJyArIFBvc3RJRCkuaW5uZXJIVE1MID0g ICc8ZGl2IGNsYXNzPSJ2b3RlcyI+PHN0cm9uZz4nICsgbWVzc2FnZSArICAnPC9z dHJvbmc+PC9kaXY+JzsKfQoK ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=music.js Content-Type: application/x-javascript; charset=windows-1251; name=music.js Content-Location: http://js.imgsmail.ru/r/js/blogs/music.js?5 Content-Transfer-Encoding: Base64 dmFyIG11c251bWJlcj0nJzsKdmFyIGxhc3Q9MDsKdmFyIGxhc3RjaGFuZ2U9Jyc7 CnZhciB2b2x1bWU9NzA7CnZhciB0b3BsYXk9Jyc7CnZhciBNdXNpY0hvc3QgPSAn bXVzaWMubXkubWFpbC5ydSc7CgovKiDv5fDl5Ofg4/Dz5+rgIOrg8PLo7eroICov CnZhciBwYXVzZSA9IG5ldyBJbWFnZSgpOwpwYXVzZS5zcmM9Imh0dHA6Ly9pbWcu bWFpbC5ydS9yL2Jsb2dzL2ljb19wYXVzZS5wbmciOwoKZnVuY3Rpb24gY2hhbmdl KG4sZm5hbWUscHRpbWUpCnsKICAgIHZhciBteXRpbWU9cHRpbWUqMTAwMDsKCWlm KCEgUGVybFZhcl9BY3RpdmVFbWFpbCkgewoJCXZhciBhbnN3ZXIgPSBjb25maXJt KCLP8O7x6/P46OLg7ejlIOzz5/vq6CDk7vHy8+/t7iDy7uv86u4g4OLy7vDo5+7i 4O3t++wg7+7r/Ofu4uDy5ev/7CFcbtXu8ujy5SDg4vLu8Ojn7uLg8vzx/yDx5en3 4PE/IikKCQlpZiAoYW5zd2VyKXsKCQkJd2luZG93LmxvY2F0aW9uID0gImh0dHA6 Ly8iICsgUGVybFZhcl9CbG9nc1BlcmxIb3N0ICsgIi9jZ2ktYmluL2xvZ2luP3Bh Z2U9aHR0cDovLyIgKyBQZXJsVmFyX0Jsb2dzUGVybEhvc3QgKyBQZXJsVmFyX0F1 dGhQYWdlOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWVsc2V7CgkJCXJldHVybiBm YWxzZTsKCQl9Cgl9CiAgICB2YXIgbXlkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZm9yZmxhc2gnK24pOwoJaWYoZm5hbWUuaW5kZXhPZignbXVzaWM6Jyk9 PTApIGZuYW1lID0gZm5hbWUuc3Vic3RyKDYpOyAKICAgIG15ZGl2LmNsYXNzTmFt ZT0nZGl2X2Rhc2hlZF9hY3QnOwogICAgbXlkaXYuaW5uZXJIVE1MPSc8b2JqZWN0 IGNsYXNzaWQ9ImNsc2lkOmQyN2NkYjZlLWFlNmQtMTFjZi05NmI4LTQ0NDU1MzU0 MDAwMCIgY29kZWJhc2U9Imh0dHA6Ly9mcGRvd25sb2FkLm1hY3JvbWVkaWEuY29t L3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTcs MCwwLDAiIHdpZHRoPSIyOTciIGhlaWdodD0iNyIgaWQ9ImZsYXNoJytuKyciPjxw YXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9Im9wYXF1ZSIgLz48cGFyYW0gbmFtZT0i YWxsb3dTY3JpcHRBY2Nlc3MiIHZhbHVlPSJhbHdheXMiIC8+PHBhcmFtIG5hbWU9 InN3TGl2ZUNvbm5lY3QiIHZhbHVlPSJ0cnVlIiAvPjxwYXJhbSBuYW1lPSJtb3Zp ZSIgdmFsdWU9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL215L3BsYXllcjIuc3dmP2Zp bGU9aHR0cDovLycrTXVzaWNIb3N0KycvJytmbmFtZSsnLm1wMyZ0aW1lPScrbXl0 aW1lKycmbWlkPScrbisnJnZvbD0nK3ZvbHVtZSsnIiAvPjxlbWJlZCBzcmM9Imh0 dHA6Ly9pbWcubWFpbC5ydS9yL215L3BsYXllcjIuc3dmP2ZpbGU9aHR0cDovLycr TXVzaWNIb3N0KycvJytmbmFtZSsnLm1wMyZ0aW1lPScrbXl0aW1lKycmbWlkPScr bisnJnZvbD0nK3ZvbHVtZSsnIiB3aWR0aD0iMjk3IiBoZWlnaHQ9IjciIG5hbWU9 ImZsYXNoJytuKyciIGlkPSJmbGFzaHBsYXllcicrbisnIiBhbGxvd1NjcmlwdEFj Y2Vzcz0iYWx3YXlzIiBzd0xpdmVDb25uZWN0PSJ0cnVlIiAgdHlwZT0iYXBwbGlj YXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3 Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB3bW9kZT0ib3BhcXVl IiAvPjwvb2JqZWN0Pic7CiAgICBzZXRfaW1hZ2Vfc3RvcF9maXJzdChuKTsKICAg IGlmKGxhc3QhPTApCiAgICB7CiAgICAgICAgdmFyIG15ZGl2ZGVzdHIgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnZm9yZmxhc2gnK2xhc3QpOwogICAgICAgIG15 ZGl2ZGVzdHIuaW5uZXJIVE1MPScnOwogICAgICAgIG15ZGl2ZGVzdHIuY2xhc3NO YW1lPSdkaXZfZGFzaGVkJzsKICAgICAgICB2YXIgbXlpbWFnZWRpc3RyID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21idXR0b24nK2xhc3QpOwogICAgICAgIG15 ZGl2ZGVzdHIuY2xhc3NOYW1lPSdkaXZfZGFzaGVkJzsKICAgICAgICB2YXIgbXlp bWFnZWRpc3RyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21idXR0b24nK2xh c3QpOwogICAgICAgIG15aW1hZ2VkaXN0ci5pbm5lckhUTUw9JzxhIGhyZWY9IiMi PjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fcGxheS5w bmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgY2xhc3M9IklFcG5nIiBib3JkZXI9 IjAiIG9uY2xpY2s9IicrbGFzdGNoYW5nZSsnIj48L2E+JzsKICAgICAgICBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnbXVzbGluaycrbGFzdCkub25DbGljayA9IGxh c3RjaGFuZ2U7CiAgICAgICAgbGFzdD1uOwogICAgICAgIGxhc3RjaGFuZ2U9J2No YW5nZSgnK24rJyxcJycrZm5hbWUrJ1wnLCcrcHRpbWUrJyknOwogICAgfQogICAg ZWxzZQogICAgewogICAgICAgIGxhc3Q9bjsKICAgICAgICBsYXN0Y2hhbmdlPSdj aGFuZ2UoJytuKycsXCcnK2ZuYW1lKydcJywnK3B0aW1lKycpJzsKICAgIH0KfQpm dW5jdGlvbiBzZXRfaW1hZ2VfcGxheShuKQp7CiAgICB2YXIgbXlpbWFnZSA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYnV0dG9uJytuKTsKICAgIG15aW1hZ2Uu aW5uZXJIVE1MPSc8YSBocmVmPSIjIj48aW1nIHNyYz0iaHR0cDovL2ltZy5tYWls LnJ1L3IvYmxvZ3MvaWNvX3BsYXkucG5nIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUi IGNsYXNzPSJJRXBuZyIgYm9yZGVyPSIwIiBvbmNsaWNrPSJzZXRfaW1hZ2Vfc3Rv cCgnK24rJykiPjwvYT4nOwogICAgdG9wbGF5PScwJzsKICAgIHZhciBteWZvYmog PSBudWxsOwogICAgaWYgKGlzSUUpIHtldmFsKCdteWZvYmo9d2luZG93LmZsYXNo JytuKyc7Jyk7fQogICAgZWxzZSB7IG15Zm9iaj1kb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZmxhc2hwbGF5ZXInK24pO30KICAgIG15Zm9iai5TZXRWYXJpYWJsZSgi X3Jvb3QucGF1c2UiLCAidHJ1ZSIpOwp9CmZ1bmN0aW9uIHNldF9pbWFnZV9zdG9w X2ZpcnN0KG4pCnsKICAgIHZhciBteWltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ21idXR0b24nK24pOwogICAgbXlpbWFnZS5pbm5lckhUTUw9JzxhIGhy ZWY9IiMiPjxpbWcgc3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29f cGF1c2UucG5nIiB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIGNsYXNzPSJJRXBuZyIg Ym9yZGVyPSIwIiBvbmNsaWNrPSJzZXRfaW1hZ2VfcGxheSgnK24rJykiPjwvYT4n OwogICAgdG9wbGF5PScxJzsKfQpmdW5jdGlvbiBzZXRfaW1hZ2Vfc3RvcChuKQp7 CglpZighIFBlcmxWYXJfQWN0aXZlRW1haWwpIHsKCQl2YXIgYW5zd2VyID0gY29u ZmlybSgiz/Du8evz+Oji4O3o5SDs8+f76ugg5O7x8vPv7e4g8u7r/OruIODi8u7w 6Ofu4uDt7fvsIO/u6/zn7uLg8uXr/+whXG7V7vLo8uUg4OLy7vDo5+7i4PL88f8g 8eXp9+DxPyIpCgkJaWYgKGFuc3dlcil7CgkJCXdpbmRvdy5sb2NhdGlvbiA9ICJo dHRwOi8vIiArIFBlcmxWYXJfQmxvZ3NQZXJsSG9zdCArICIvY2dpLWJpbi9sb2dp bj9wYWdlPWh0dHA6Ly8iICsgUGVybFZhcl9CbG9nc1BlcmxIb3N0ICsgUGVybFZh cl9BdXRoUGFnZTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQllbHNlewoJCQlyZXR1 cm4gZmFsc2U7CgkJfQoJfQogICAgdmFyIG15aW1hZ2UgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnbWJ1dHRvbicrbik7CiAgICBteWltYWdlLmlubmVySFRNTD0n PGEgaHJlZj0iIyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dz L2ljb19wYXVzZS5wbmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgY2xhc3M9IklF cG5nIiBib3JkZXI9IjAiIG9uY2xpY2s9InNldF9pbWFnZV9wbGF5KCcrbisnKSI+ PC9hPic7CiAgICB0b3BsYXk9JzEnOwogICAgdmFyIG15Zm9iaiA9IG51bGw7CiAg ICBpZiAoaXNJRSkge2V2YWwoJ215Zm9iaj13aW5kb3cuZmxhc2gnK24rJzsnKTt9 CiAgICBlbHNlIHsgbXlmb2JqPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmbGFz aHBsYXllcicrbik7fQogICAgbXlmb2JqLlNldFZhcmlhYmxlKCJfcm9vdC5wYXVz ZSIsICJmYWxzZSIpOwp9CmZ1bmN0aW9uIHVuUGF1c2UobikKewogICAgdmFyIG15 aW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWJ1dHRvbicrbik7CiAg ICBteWltYWdlLmlubmVySFRNTD0nPGEgaHJlZj0iIyI+PGltZyBzcmM9Imh0dHA6 Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL2ljb19wYXVzZS5wbmciIHdpZHRoPSIxNSIg aGVpZ2h0PSIxNSIgY2xhc3M9IklFcG5nIiBib3JkZXI9IjAiIG9uY2xpY2s9InNl dF9pbWFnZV9wbGF5KCcrbisnKSI+PC9hPic7CiAgICB0b3BsYXk9JzEnOwp9CmZ1 bmN0aW9uIHNldHZvbHVtZShuKQp7CiAgICB2b2x1bWU9bjsKfQpmdW5jdGlvbiBl bmRNdXNpYyhuKQp7Cgl2YXIgaWlkPW4rMTsKCXZhciBteWltYWdlID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ21idXR0b24nK2lpZCk7CglpZihteWltYWdlKSB7 CgkJbXlpbWFnZS5maXJzdENoaWxkLmZpcnN0Q2hpbGQub25jbGljaygpOwoJfQoJ ZWxzZSB7CgkJc2V0X2ltYWdlX3BsYXkobik7Cgl9Cn0= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=jentry.js Content-Type: application/x-javascript; name=jentry.js Content-Location: http://js.imgsmail.ru/r/js/blogs/jentry.js?9 Content-Transfer-Encoding: Base64 Lyog5Ov/IPHs4Onr7uIgKi8KdmFyIHRvZ2dsZV9mbGFnPTE7Cgp2YXIgc2hvd0Ns b3NlSWNvbiA9ICc8ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij48YSBvbmNsaWNr PSJoaWRlRGl2RGlhbG9nKCk7IHJldHVybiBmYWxzZTsiIGhyZWY9IiMiPjxpbWcg c3JjPSJodHRwOi8vb3R2ZXQubWFpbC5ydS9pbWcvY2xvc2VfaGVscC5naWYiIHdp ZHRoPTcgaGVpZ2h0PTcgYm9yZGVyPTA+PC9hPjwvZGl2Pic7CgpmdW5jdGlvbiB0 b2dnbGVzbWlsZSgpCnsKCWlmICh0b2dnbGVfZmxhZz09MSkgewoJCS8vZ2ViaSgn c29tZXNtaWxleXMnKS5zdHlsZS5kaXNwbGF5PSdub25lJzsKCQlnZWJpKCdhbGxz bWlsZXlzJykuc3R5bGUuZGlzcGxheT0nYmxvY2snOwkJCQkKCQlnZWJpKCdpY290 eHQnKS5pbm5lckhUTUw9J9Hq8Pvy/CDx7ODp6/snOwoJCXRvZ2dsZV9mbGFnPTI7 CgkJfSBlbHNlIHsKCQlnZWJpKCdhbGxzbWlsZXlzJykuc3R5bGUuZGlzcGxheT0n bm9uZSc7CQoJLy8JZ2ViaSgnc29tZXNtaWxleXMnKS5zdHlsZS5kaXNwbGF5PSdi bG9jayc7CgkJZ2ViaSgnaWNvdHh0JykuaW5uZXJIVE1MPSfC8eUg8ezg6ev7IOgg 5uXx8vsnOwoJCXRvZ2dsZV9mbGFnPTE7CgkJfQp9CgpmdW5jdGlvbiByZXBsYWNl U2VsZWN0ZWRUZXh0KG9iaixmbGFnLG1uZW1vbmljKQp7CglpZiAoZmxhZz09MSkK CXsJdmFyIGFkZHBsdHh0PSc8c21pbGUgdHlwZT0iJyttbmVtb25pYysnIj4nOyB9 CglpZiAoZmxhZz09MikKCXsJdmFyIGFkZHBsdHh0PSc8Z2VzdHVyZSB0eXBlPSIn K21uZW1vbmljKyciPic7IH0JCglpZiAoZmxhZz09MykKCXsJdmFyIGFkZHBsdHh0 PSc8YW5pbWF0ZWQgdHlwZT0iJyttbmVtb25pYysnIj4nOyB9CQoJaWYgKGZsYWc9 PTQpCgl7CXZhciBhZGRwbHR4dD0nPGFkdmFuY2VkIHR5cGU9IicrbW5lbW9uaWMr JyI+JzsgfQkKCWlmIChmbGFnPT01KQoJewl2YXIgYWRkcGx0eHQ9Jzxrb2xvYmtp IHR5cGU9IicrbW5lbW9uaWMrJyI+JzsgfQoJCglpZiAoZG9jdW1lbnQuc2VsZWN0 aW9uKSAvL+Tr/yBJRSDoIE9wZXJhCgl7CgkJb2JqLmZvY3VzKCk7CgkJdmFyIHMg PSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsgCgkgICAJcy50ZXh0 PSBhZGRwbHR4dDsKCQlzLnNlbGVjdCgpOwoJCXJldHVybiB0cnVlOwoJfQoJZWxz ZSBpZiAodHlwZW9mKG9iai5zZWxlY3Rpb25TdGFydCk9PSJudW1iZXIiKS8vxOv/ IEZGCgl7CgkgCXZhciBzdGFydCA9IG9iai5zZWxlY3Rpb25TdGFydDsKCSAgICB2 YXIgZW5kID0gb2JqLnNlbGVjdGlvbkVuZDsJCgkJCgkJb2JqLnZhbHVlID0gb2Jq LnZhbHVlLnN1YnN0cigwLHN0YXJ0KSthZGRwbHR4dCtvYmoudmFsdWUuc3Vic3Ry KGVuZCk7CgkJZW5kID0gZW5kICsgYWRkcGx0eHQubGVuZ3RoOwoJICAgIG9iai5z ZXRTZWxlY3Rpb25SYW5nZShlbmQsZW5kKTsKCQlvYmouZm9jdXMoKTsKCSAgIHJl dHVybiB0cnVlOwoJfQoJcmV0dXJuIGZhbHNlOwp9CgovKiBwb3B1cCBhZGQgZm90 bywgdmlkZW8gKi8KcG9wdXAgPSBmYWxzZTsKZG9jdW1lbnQuZG9tYWluPSdtYWls LnJ1JzsKZnVuY3Rpb24gYWRkX3Bob3RvKCkgewoJdmFyIHN1YmogPSBlc2NhcGUo ZG9jdW1lbnQuZm9ybXNbJ3JlcGx5J10uZWxlbWVudHNbJ3N1YmplY3RfdGV4dCdd LnZhbHVlKTsKCWlmIChwb3B1cCkgcG9wdXAuY2xvc2UoKTsKCXBvcHVwID0gd2lu ZG93Lm9wZW4oJ2h0dHA6Ly9mb3RvLm1haWwucnUvY2dpLWJpbi9hZGRwaG90bz9i bG9ncz0xJlRpdGxlPScsJ2FkZF9waWN0Jywnd2lkdGg9NjAwLGhlaWdodD02NjAs dG9vbGJhcnM9bm8sc2Nyb2xsYmFycz15ZXMscmVzaXphYmxlPXllcyxsZWZ0PScr KHNjcmVlbi53aWR0aC02NjApLzIrJyx0b3A9Jysoc2NyZWVuLmhlaWdodC02NjAp LzIpOwoJaWYgKHBvcHVwKSBwb3B1cC5mb2N1cygpOwp9CmZ1bmN0aW9uIGFkZF92 aWRlbygpIHsKCXZhciBzdWJqID0gZXNjYXBlKGRvY3VtZW50LmZvcm1zWydyZXBs eSddLmVsZW1lbnRzWydzdWJqZWN0X3RleHQnXS52YWx1ZSk7CglpZiAocG9wdXAp IHBvcHVwLmNsb3NlKCk7Cglwb3B1cCA9IHdpbmRvdy5vcGVuKCdodHRwOi8vbXku dmlkZW8ubWFpbC5ydS9jZ2ktYmluL2FkZHZpZGVvP2Jsb2dzPTEmVGl0bGU9Jywn YWRkX3BpY3QnLCd3aWR0aD02MDAsaGVpZ2h0PTY2MCx0b29sYmFycz1ubyxzY3Jv bGxiYXJzPXllcyxyZXNpemFibGU9eWVzLGxlZnQ9Jysoc2NyZWVuLndpZHRoLTY2 MCkvMisnLHRvcD0nKyhzY3JlZW4uaGVpZ2h0LTY2MCkvMik7CglpZiAocG9wdXAp IHBvcHVwLmZvY3VzKCk7Cn0KCi8qICAqLwp2YXIgZGlyZWN0ID0gJyc7CnZhciBh ID0gJyc7CnZhciBmbGFnID0gMDsKZnVuY3Rpb24gbG9hZFhNTERvYyh1cmwpIHsK CXJlcSA9IGZhbHNlOwogICAgLy8gYnJhbmNoIGZvciBuYXRpdmUgWE1MSHR0cFJl cXVlc3Qgb2JqZWN0CiAgICBpZiAod2luZG93LlhNTEh0dHBSZXF1ZXN0KSB7CiAg ICAJdHJ5IHsKCQkJcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAg fSBjYXRjaChlKSB7CgkJCXJlcSA9IGZhbHNlOwogICAgICAgIH0KICAgIC8vIGJy YW5jaCBmb3IgSUUvV2luZG93cyBBY3RpdmVYIHZlcnNpb24KICAgIH0gZWxzZSBp Zih3aW5kb3cuQWN0aXZlWE9iamVjdCkgewogICAgICAgCXRyeSB7CiAgICAgICAg CXJlcSA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOwogICAg ICAJfSBjYXRjaChlKSB7CiAgICAgICAgCXRyeSB7CiAgICAgICAgICAJCXJlcSA9 IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpOwogICAgICAg IAl9IGNhdGNoKGUpIHsKICAgICAgICAgIAkJcmVxID0gZmFsc2U7CiAgICAgICAg CX0KCQl9CiAgICB9CglpZiAocmVxKSB7CgkJcmVxLm9ucmVhZHlzdGF0ZWNoYW5n ZSA9IHByb2Nlc3NSZXFDaGFuZ2U7CgkJcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1 ZSk7CgkJcmVxLnNlbmQoIiIpOwoJfQp9CgpmdW5jdGlvbiBwcm9jZXNzUmVxQ2hh bmdlKCkgewogICAgLy8gb25seSBpZiByZXEgc2hvd3MgImxvYWRlZCIKICAgIGlm IChyZXEucmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgICAgLy8gb25seSBpZiAiT0si CiAgICAgICAgaWYgKHJlcS5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIC8v IC4uLnByb2Nlc3Npbmcgc3RhdGVtZW50cyBnbyBoZXJlLi4uCiAgICAgICAgICAg IHZhciByZXNwb25zZSA9IHJlcS5yZXNwb25zZVRleHQ7CiAgICAgICAgICAgIHZh ciBhcnJheSA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICBhcnJheSA9IHJlc3Bv bnNlLnNwbGl0KCc7Jyk7CiAgICAgICAgICAgIHZhciBtZXRob2QgPSBhcnJheS5z aGlmdCgpOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxhcnJheS5sZW5ndGg7 aSsrKSB7CiAgICAgICAgICAgICAgICBhcnJheVtpXSA9ICInIisgYXJyYXlbaV0g KyInIjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYXJndW1lbnQgPSBh cnJheS5qb2luKCcsJyk7CiAgICAgICAgICAgIGV2YWwobWV0aG9kICsgJygnK2Fy Z3VtZW50KycpJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy9hbGVy dCgiVGhlcmUgd2FzIGEgcHJvYmxlbSByZXRyaWV2aW5nIHRoZSBYTUwgZGF0YTpc biIgKyByZXEuc3RhdHVzVGV4dCk7CiAgICAgICAgfQogICAgfQp9CgpmdW5jdGlv biBzZXRfbnBjdXIocGN1cixuY3VyKSB7CiAgICAoZGlyZWN0KSA/IChjdXI9bmN1 cikgOiAoY3VyPXBjdXIpOwoJKGRpcmVjdCkgPyAoYWxfdGV4dD0i7+7x6+Xk7eXp IikgOiAoYWxfdGV4dD0i7+Xw4u7pIik7CglpZiAoIWN1cil7CgkJLy9hX3R4dD1h LmZpcnN0Q2hpbGQuY2xvbmVOb2RlKHRydWUpOwoJCS8vYS5wYXJlbnROb2RlLnJl cGxhY2VDaGlsZChhX3R4dCxhKTsKCQlhbGVydCAoIsL7IO3g9e7k6PLl8fwg7eAg 8fLw4O3o9uUgIithbF90ZXh0KyIg5+Dv6PHoIik7CgkJZmxhZyA9IDE7Cgl9Cgll bHNlIHsKCSAgIHZhciB1cmwgPSBQZXJsVmFyX0pvdXJuYWxEaXI7CgkgICB1cmwr PSAoZGlyZWN0KSA/IG5jdXIgOiBwY3VyOwoJICAgdXJsKz0gIi5odG1sIjsKICAg ICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSB1cmw7Cgl9Cn0KCmZ1bmN0aW9u IGNoZWNrX2dvKGQsaWQpIHsKCWlmIChmbGFnPT0xKSB7CgkgICBmbGFnID0gMDsK CSAgIGRpcmVjdCA9IGQ7CgkgICBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo KChkKSA/ICJuZXh0X3Bvc3QiIDogInByZXZfcG9zdCIpKTsKCSAgIGFfdHh0PWEu Zmlyc3RDaGlsZC5jbG9uZU5vZGUodHJ1ZSk7CgkgICBhLnBhcmVudE5vZGUucmVw bGFjZUNoaWxkKGFfdHh0LGEpOwoJICAgdmFyIHVybD0gUGVybFZhcl9BQ1RJT05f RElSICsgImpwcmV2aW91c25leHRwb3N0aWQ/dXNlcj0iICsgUGVybFZhcl9Kb3Vy bmFsRW1haWwgKyImaWQ9IitpZDsKICAgICAgIGxvYWRYTUxEb2ModXJsKTsKICAg IH0KfQpmbGFnID0gMTsKCnZhciBfbGlua2lkOwpmdW5jdGlvbiBzaG93Q29tcGxh aW5Gb3JtKF9saW5rLCBwb3N0X2lkLCBjb21tZW50X2lkKSB7CiAgICBfbGlua2lk ID0gX2xpbmsuaWQ7CiAgICBzaG93RGl2RGlhbG9nKHNob3dDbG9zZUljb24gKyAn PGgxIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxMHB4Ij7R7u7h+ejy/CDuIPHv4Ozl PzwvaDE+PGZvcm0gYWN0aW9uPSIiIG9uc3VibWl0PSJzZW5kQ29tcGxhaW4oXCcn K3Bvc3RfaWQrJ1wnLCBcJycrY29tbWVudF9pZCsnXCcpOyByZXR1cm4gZmFsc2U7 Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iYnV0Rm9yU3BhbSIgdmFsdWU9ItHu 7uH56PL8IiBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogdGFo b21hOyIvPjxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImhpZGVEaXZEaWFs b2coKSIgdmFsdWU9Is7y7OXt4CIgc3R5bGU9ImZvbnQtc2l6ZTogMTFweDsgZm9u dC1mYW1pbHk6IHRhaG9tYTsgbWFyZ2luLWxlZnQ6IDE1cHgiLz48L2Zvcm0+Jywg X2xpbmspOwogICAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBzaG93RGl2RGlh bG9nKGh0bWwsIGJhc2lzLCBfeCwgX3kpIHsKCXZhciBkaXYgPSBnZWJpKCJjb21w bGFpbl9mb3JtIik7CglkaXYuaW5uZXJIVE1MID0gaHRtbDsKCWlmIChiYXNpcykg ewoJCXZhciBfdG9wID0gYWJzUG9zaXRpb24oYmFzaXMpLnkgKyAoKF95KSA/IF95 IDogMCk7CgkJdmFyIF9sZWZ0ID0gYWJzUG9zaXRpb24oYmFzaXMpLnggKyAoKF94 KSA/IF94IDogMCk7Cgl9CglpZiAoX3RvcCkgZGl2LnN0eWxlLnRvcCA9IF90b3A7 CglpZiAoX2xlZnQpIGRpdi5zdHlsZS5sZWZ0ID0gX2xlZnQ7CglkaXYuc3R5bGUu ZGlzcGxheSA9ICIiOwp9CmZ1bmN0aW9uIGhpZGVEaXZEaWFsb2coKSB7CglnZWJp KCJjb21wbGFpbl9mb3JtIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKfQoKZnVu Y3Rpb24gc2VuZENvbXBsYWluKHBvc3RfaWQsIGNvbW1lbnRfaWQpIHsKICAgIHZh ciBkaXYgPSBnZWJpKCJjb21wbGFpbl9mb3JtIik7CiAgICBkaXYuaW5uZXJIVE1M ID0gc2hvd0Nsb3NlSWNvbiArICc8c3BhbiBzdHlsZT0iY29sb3I6IzY5Njk3Mztm b250LWZhbWlseTp0YWhvbWE7Zm9udC1zaXplOjExcHg7Ij7H4O/w7vEg7uHw4OHg 8vvi4OXy8f88L3NwYW4+JzsKICAgIHBlcmxfc2VuZF9jb21wbGFpbihwb3N0X2lk LCBjb21tZW50X2lkLCAnYW50aXNwYW0nLCBjb21wbGFpblNlbmRlZCk7CiAgICBk ZWxldGUgZGl2OwoJcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBjb21wbGFpblNl bmRlZChyZXN1bHQpIHsKICAgIHZhciBkaXYgPSBnZWJpKCJjb21wbGFpbl9mb3Jt Iik7Ci8vICAgIGlmIChyZXN1bHQpIHsKICAgICAgICBkaXYuaW5uZXJIVE1MID0g c2hvd0Nsb3NlSWNvbiArICc8c3BhbiBzdHlsZT0iY29sb3I6IzY5Njk3Mztmb250 LWZhbWlseTp0YWhvbWE7Zm9udC1zaXplOjExcHg7Ij7C4PjgIObg6+7h4CDv8Ojt //LgIOgg4fPk5fIg8ODx8ezu8vDl7eAg4iDh6+jm4On45eUg4vDl7P8uINHv4PHo 4e4uPC9zcGFuPic7CiAgICAgICAgZ2ViaShfbGlua2lkKS5zdHlsZS5kaXNwbGF5 PSdub25lJzsKLy8gICAgfSBlbHNlIHsKLy8JZGl2LmlubmVySFRNTCA9IHNob3dD bG9zZUljb24gKyAnPHNwYW4gc3R5bGU9ImNvbG9yOiM2OTY5NzM7Zm9udC1mYW1p bHk6dGFob21hO2ZvbnQtc2l6ZToxMXB4OyI+z/Du6Ofu+OvgIO746OHq4C48L3Nw YW4+JzsKLy8gICAgfQp9CgovKiDP5fDl9O7q8/Ho8O7i6uAg7eAg7+7r5SDq7uzs 5e3y4PDo/yAqLwpmdW5jdGlvbiByZWZvY3VzKCkKewoJdmFyIGVsZW0xID0gZG9j dW1lbnQuZm9ybXNbJ3JlcGx5J10uZWxlbWVudHNbJ1N1YmplY3QnXTsKCXZhciBl bGVtMiA9IGRvY3VtZW50LmZvcm1zWydyZXBseSddLmVsZW1lbnRzWydDb21tZW50 J107CglpZiAoZWxlbTEgJiYgZWxlbTIpIHsgZWxlbTEuZm9jdXMoKTsgZWxlbTIu Zm9jdXMoKTsJZWxlbTIudmFsdWU9ZWxlbTIudmFsdWUrJyc7IGVsZW0xPTA7IGVs ZW0yPTA7IH0KfQoKZnVuY3Rpb24gZGlzX3N1Yl9idXQoKSB7Cgl2YXIgdmFsID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbW1lbnRfdGV4dCIpLnZhbHVlOwoJ dmFyIHN1Yl9idXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ViX2J1dCIp OwoJaWYgKHZhbCAhPSAiIikgewoJCXN1Yl9idXQudmFsdWUgPSAiyOTl8iDu8u/w 4OLq4CI7CgkJc3ViX2J1dC5kaXNhYmxlZCA9IHRydWU7CgkJcmV0dXJuIHRydWU7 Cgl9IGVsc2UgewoJCXJldHVybiBmYWxzZTsKCX0KfQoKZnVuY3Rpb24gYWRkX2Nv bW1lbnQoZm9ybSkKewogICAgdmFyIHN1YmplY3QgPSBmb3JtLlN1YmplY3QudmFs dWU7CiAgICB2YXIgY29tbWVudCA9IGZvcm0uQ29tbWVudC52YWx1ZTsKICAgIHZh ciByZSA9IG5ldyBSZWdFeHAoJ1xcUycpOwogICAgaWYgKCFyZS50ZXN0KHN1Ympl Y3QrJycpICYmICFyZS50ZXN0KGNvbW1lbnQrJycpKQogICAgewogICAgICAgIGFs ZXJ0KCfP7uvlINLl7OAg7eUg5O7r5u3uIOH78vwg7/Px8vvsJyk7CiAgICAgICAg cmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIGRpc19zdWJfYnV0KCk7CiAg ICAvL3JldHVybiB0cnVlOwp9CgpmdW5jdGlvbiBjaGFuZ2Vfc2VsZWN0ZWRfb3B0 KHNlbGVjdF9maWVsKQp7CiAgICBpZihzZWxlY3RfZmllbC5vcHRpb25zWzFdLnNl bGVjdGVkPT10cnVlKSB7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZXNf dHInKS5zdHlsZS5kaXNwbGF5PSIiO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdo aWRlc190ZCcpLnN0eWxlLmRpc3BsYXk9IiI7CiAgICB9CiAgICBpZihzZWxlY3Rf ZmllbC5vcHRpb25zWzBdLnNlbGVjdGVkPT10cnVlKSB7Cglkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgiaGlkZXNfdHIiKS5zdHlsZS5kaXNwbGF5PSJub25lIjtkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgiaGlkZXNfdGQiKS5zdHlsZS5kaXNwbGF5PSJu b25lIjsKICAgIH0KfQoKLyogKi8KZnVuY3Rpb24gZm9ybV9kaXNfc3ViX2J1dCgp IHsKCXZhciBzdWJfYnV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Yl9i dXQiKTsKCXZhciBwcmV2aWV3X2J1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCJwcmV2aWV3X2J1dCIpOwoJc3ViX2J1dC5kaXNhYmxlZCA9IHRydWU7CglwcmV2 aWV3X2J1dC5kaXNhYmxlZCA9IHRydWU7CglyZXR1cm4gdHJ1ZTsKfQpmdW5jdGlv biBmb3JtX3NldF9wcmV2aWV3KCkKewoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2Zvcm1fcHJldmlldycpLnZhbHVlPTE7Cn0KCi8qIO7h8ODh7vLq4CDq7uzl7fLu 4iAqLwoKZnVuY3Rpb24gc2hvd19kZWxfY29tbWVudChvYmosaWQpCnsKICAgIGlm KCFoYXNfamF2YXNjcmlwdCgpKSByZXR1cm4gdHJ1ZTsKICAgIGNsb3NlX2RlbF9j b21tZW50KCk7CiAgICB2YXIgZGVsX2Rpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCJkaXYiKTsKICAgIGRlbF9kaXYuaWQ9ImRlbF9mIjsKICAgIGRlbF9kaXYuY2xh c3NOYW1lPSJkZWxfbWluIjsKICAgIGRlbF9kaXYuaW5uZXJIVE1MPSLT5ODr6PL8 IOru7Ozl7fLg8OjpPzxicj48aW1nIHNyYz1odHRwOi8vaW1nLm1haWwucnUvMC5n aWYgd2lkdGg9MSBoZWlnaHQ9NT48YnI+IgoJKyI8aW5wdXQgdHlwZT1jaGVja2Jv eCBpZD1kZWxldGVfYWxsPiZuYnNwOyZuYnNwO/EmbmJzcDvi6+7m5e3t++zoJm5i c3A76u7s7OXt8uDw6P/s6Dxicj4iCgkrIjxpbWcgc3JjPWh0dHA6Ly9pbWcubWFp bC5ydS8wLmdpZiB3aWR0aD0xIGhlaWdodD03Pjxicj4iCgkrIjxpbnB1dCB0eXBl PWJ1dHRvbiB2YWx1ZT1cIiDE4CBcIiBvbmNsaWNrPVwiZGVsX2NvbW1lbnQoJyIr aWQrIicpO1wiPiZuYnNwOyZuYnNwOyIKCSsiPGlucHV0IHR5cGU9YnV0dG9uIHZh bHVlPVwiIM3l8iBcIiBvbmNsaWNrPVwiY2xvc2VfZGVsX2NvbW1lbnQoKTtcIj4i OwogICAgb2JqLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZGVsX2Rpdik7CiAgICBy ZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGNsb3NlX2RlbF9jb21tZW50KCkKewog ICAgdmFyIGRlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVsX2YiKTsKICAg IGlmIChkZWwpIHsKCWRlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRlbCk7CiAg ICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGRlbF9jb21tZW50KGlk KQp7CiAgICB2YXIgZGVsZXRlX2FsbD0oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ImRlbGV0ZV9hbGwiKS5jaGVja2VkPzE6MCk7CiAgICBjbG9zZV9kZWxfY29tbWVu dCgpCiAgICB2YXIgdXJsPSBQZXJsVmFyX0FDVElPTl9ESVIgKyAiamRlbGNvbW1l bnQ/dXNlcj0iICsgUGVybFZhcl9Kb3VybmFsRW1haWwgKyAiJmlkPSIgKyBQZXJs VmFyX0VudHJ5X0lEKyAiJmRlbGV0ZT0iK2lkKyImYWxsPSIrZGVsZXRlX2FsbCsi JnhtbD0xIjsKICAgIGdldF9zY3JpcHQodXJsKTsKICAgIHJldHVybiBmYWxzZTsK fQoKZnVuY3Rpb24gaGlkZV9kZWxldGVkX2NvbW1lbnQoaWQsbGV2ZWwpCnsKICAg IHZhciBlbGVtZW50X2lkPSJ0XyIraWQ7CiAgICB2YXIgZGl2OwogICAgaWYobGV2 ZWwpIHsKCWRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpOwoJZGl2 LmNsYXNzTmFtZT0idHJlZCI7CglkaXYuaWQ9ZWxlbWVudF9pZDsKCWRpdi5jZWxs UGFkZGluZz0wOwoJZGl2LmNlbGxTcGFjaW5nPTA7CglkaXYuYm9yZGVyPTA7Cglk aXYud2lkdGg9IjEwMCUiOwoJdmFyIHRib2R5PWRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoJ3Rib2R5Jyk7Cgl2YXIgdHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHIn KTsKCWRpdi5hcHBlbmRDaGlsZCh0Ym9keSk7Cgl0ci52YWxpZ249InRvcCI7Cgl0 Ym9keS5hcHBlbmRDaGlsZCh0cik7Cgl2YXIgdGQ9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgndGQnKTsKCXRyLmFwcGVuZENoaWxkKHRkKTsKCXRkLmFsaWduPSJyaWdo dCI7Cgl0ZC5pbm5lckhUTUw9IjxpbWcgc3JjPWh0dHA6Ly9pbWcubWFpbC5ydS8w LmdpZiB3aWR0aD0iK2xldmVsKyIgaGVpZ2h0PTc+PGJyPiIKCSAgICArIjxpbWcg c3JjPWh0dHA6Ly9pbWcubWFpbC5ydS9yL2Jsb2dzL3N0cmVsa2EyLmdpZiB3aWR0 aD0yNSBoZWlnaHQ9MTUgY2xhc3M9cHJvYj4iOwoJdGQ9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgndGQnKTsKCXRyLmFwcGVuZENoaWxkKHRkKTsKCXRkLndpZHRoPSIx MDAlIjsKCXRkLmlubmVySFRNTD0iPGRpdiBjbGFzcz1kZWxfZGl2PjxpbWcgc3Jj PVwiaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX2RlbGV0ZWQucG5nXCIg Y2xhc3M9XCJJRXBuZ1wiIHdpZHRoPTE2IGhlaWdodD0xNiBhbGlnbj1hYnNtaWRk bGU+Jm5ic3A7Jm5ic3A7yu7s7OXt8uDw6Okg8+Tg6+XtPC9kaXY+IjsKICAgIH0g ZWxzZSB7CiAgICAJZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwoJ ZGl2LmlkPWVsZW1lbnRfaWQ7CglkaXYuY2xhc3NOYW1lPSJkZWxfZGl2IjsKCWRp di5pbm5lckhUTUw9IjxpbWcgc3JjPVwiaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxv Z3MvaWNvX2RlbGV0ZWQucG5nXCIgY2xhc3M9XCJJRXBuZ1wiIHdpZHRoPTE2IGhl aWdodD0xNiBhbGlnbj1hYnNtaWRkbGU+Jm5ic3A7Jm5ic3A7yu7s7OXt8uDw6Okg 8+Tg6+XtIjsKICAgIH0KICAgIHZhciBvbGRfZGl2PWRvY3VtZW50LmdldEVsZW1l bnRCeUlkKGVsZW1lbnRfaWQpOwogICAgaWYob2xkX2Rpdikgb2xkX2Rpdi5wYXJl bnROb2RlLnJlcGxhY2VDaGlsZChkaXYsb2xkX2Rpdik7Cn0KCmZ1bmN0aW9uIHNj cmVlbl9jb21tZW50KGlkKQp7CiAgICBpZighaGFzX2phdmFzY3JpcHQoKSkgcmV0 dXJuIHRydWU7CiAgICB2YXIgc2NyZWVuX2FsbD0wOwogICAgdmFyIHVybDsKICAg IGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JlZW5lZF9ub3RfcmVhZGFi bGVfIitpZCkpIHsKICAgICAgICB1cmw9IFBlcmxWYXJfQUNUSU9OX0RJUiArICJq c2NyZWVuY29tbWVudD91c2VyPSIgKyBQZXJsVmFyX0pvdXJuYWxFbWFpbCArIiZp ZD0iICsgUGVybFZhcl9FbnRyeV9JRCArICImc2NyZWVuPSIraWQrIiZhbGw9Iitz Y3JlZW5fYWxsKyImcmVhZGFibGU9MSZ4bWw9MSI7CiAgICB9IGVsc2UgewoJaWYo ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcmVlbmVkXyIraWQpKSB7CgkgICAg dXJsPSBQZXJsVmFyX0FDVElPTl9ESVIgKyAianNjcmVlbmNvbW1lbnQ/dXNlcj0i ICsgUGVybFZhcl9Kb3VybmFsRW1haWwgKyAiJmlkPSIgKyBQZXJsVmFyX0VudHJ5 X0lEICsgIiZzY3JlZW49IitpZCsiJmFsbD0iK3NjcmVlbl9hbGwrIiZ4bWw9MSZy ZXN0b3JlPTEiOwoJfSBlbHNlIHsKCSAgICB1cmw9IFBlcmxWYXJfQUNUSU9OX0RJ UiArICJqc2NyZWVuY29tbWVudD91c2VyPSIgKyBQZXJsVmFyX0pvdXJuYWxFbWFp bAkrICImaWQ9IiArIFBlcmxWYXJfRW50cnlfSUQgKyAiJnNjcmVlbj0iK2lkKyIm YWxsPSIrc2NyZWVuX2FsbCsiJnhtbD0xIjsKCX0KICAgIH0KICAgIGdldF9zY3Jp cHQodXJsKTsKICAgIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gaGlkZV9zY3Jl ZW5lZF9jb21tZW50KGlkKQp7CiAgICB2YXIgZWxlbWVudF9pZD0ic2NyZWVuZWRf IitpZDsKICAgIHZhciBvbGRfZWxlbWVudF9pZD0idW5zY3JlZW5lZF8iK2lkOwog ICAgdmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRp di5pZD1lbGVtZW50X2lkOwogICAgZGl2LmNsYXNzTmFtZT0iaGlkZV9jb20iOwog ICAgZGl2LmlubmVySFRNTD0iyu7s7OXt8uDw6Okg8erw+/IiOwogICAgdmFyIG9s ZF9kaXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob2xkX2VsZW1lbnRfaWQpOwog ICAgaWYob2xkX2Rpdikgb2xkX2Rpdi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChk aXYsb2xkX2Rpdik7CgogICAgdmFyIGltZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgic2NyZWVuX2ltZ18iK2lkKTsKICAgIGlmKGltZykgewogICAgICBpbWcuc3Jj PSAhVGhlbWVfdG1wbCA/ICJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29f Y29tbWVudF9zaG93LnBuZyIgOiAiaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3Mv aWNvX2NvbW1lbnRfc2hvd18yLnBuZyI7CiAgICAgIGltZy5hbHQ9Is/u6uDn4PL8 IOru7Ozl7fLg8OjpIjsKICAgICAgaW1nLnRpdGxlPSLP7urg5+Dy/CDq7uzs5e3y 4PDo6SI7CgkgIGltZy5jbGFzc05hbWUgPSAiSUVwbmciOwogICAgfQogICAgdmFy IHRkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb21tZW50X2hpZGVfYmdfdGQx XyIraWQpOwogICAgaWYodGQpIHsKCXRkLmNsYXNzTmFtZT0iaGlkZV9iZyI7CiAg ICB9CiAgICB2YXIgdGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbW1lbnRf aGlkZV9iZ190ZDJfIitpZCk7CiAgICBpZih0ZCkgewoJdGQuY2xhc3NOYW1lPSJo aWRlX2JnIGNvbnQiOwogICAgfQp9CgpmdW5jdGlvbiBzaG93X3Vuc2NyZWVuZWRf Y29tbWVudChpZCkKewogICAgdmFyIGVsZW1lbnRfaWQ9InVuc2NyZWVuZWRfIitp ZDsKICAgIHZhciBvbGRfZWxlbWVudF9pZF9zY3JlZW5lZD0ic2NyZWVuZWRfIitp ZDsKICAgIHZhciBvbGRfZWxlbWVudF9pZF9ub3RfcmVhZGFibGU9InNjcmVlbmVk X25vdF9yZWFkYWJsZV8iK2lkOwogICAgdmFyIGRpdj1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCdzcGFuJyk7CiAgICBkaXYuaWQ9ZWxlbWVudF9pZDsKICAgIHZhciBv bGRfZGl2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9sZF9lbGVtZW50X2lkX3Nj cmVlbmVkKTsKICAgIGlmKG9sZF9kaXYpIHsKCW9sZF9kaXYucGFyZW50Tm9kZS5y ZXBsYWNlQ2hpbGQoZGl2LG9sZF9kaXYpOwogICAgfSBlbHNlIHsKCXZhciBvbGRf ZGl2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9sZF9lbGVtZW50X2lkX25vdF9y ZWFkYWJsZSk7CglpZihvbGRfZGl2KSBvbGRfZGl2LnBhcmVudE5vZGUucmVwbGFj ZUNoaWxkKGRpdixvbGRfZGl2KTsKICAgIH0KCiAgICB2YXIgaW1nPWRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCJzY3JlZW5faW1nXyIraWQpOwogICAgaWYoaW1nKSB7 CiAgICAgIGltZy5zcmM9ICFUaGVtZV90bXBsID8gImh0dHA6Ly9pbWcubWFpbC5y dS9yL2Jsb2dzL2ljb19jb21tZW50X2hpZGRlbi5wbmciIDogImh0dHA6Ly9pbWcu bWFpbC5ydS9yL2Jsb2dzL2ljb19jb21tZW50X2hpZGRlbl8yLnBuZyI7CiAgICAg IGltZy5hbHQ9ItHq8Pvy/CDq7uzs5e3y4PDo6SI7CiAgICAgIGltZy50aXRsZT0i 0erw+/L8IOru7Ozl7fLg8OjpIjsKCSAgaW1nLmNsYXNzTmFtZSA9ICJJRXBuZyI7 CiAgICB9CiAgICB2YXIgdGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbW1l bnRfaGlkZV9iZ190ZDFfIitpZCk7CiAgICBpZih0ZCkgewoJdGQuY2xhc3NOYW1l PSAhVGhlbWVfdG1wbCA/ICJjb21tZW50X2xpc3RfYmciIDogImNvbW1lbnRfYmdf Y29sb3IiOwogICAgfQogICAgdmFyIHRkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCJjb21tZW50X2hpZGVfYmdfdGQyXyIraWQpOwogICAgaWYodGQpIHsKCXRkLmNs YXNzTmFtZT0gIVRoZW1lX3RtcGwgPyAiY29udCBjb21tZW50X2xpc3RfYmciIDog ImNvbW1lbnRfdGV4dCBjb250IGNvbW1lbnRfYmdfY29sb3IiOwogICAgfQp9Cgpm dW5jdGlvbiBjaGFuZ2VfY29tbWVudF9tYWtlX25vdGNvbW1lbnRhYmxlKGlkKQp7 CiAgICBpZighaGFzX2phdmFzY3JpcHQoKSkgcmV0dXJuIHRydWU7CiAgICB2YXIg bWFrZV9hbGw9MDsKICAgIHZhciB1cmw7CiAgICBpZihkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgiY29tbWVudGFibGVfIitpZCkpIHsKCXVybD0gUGVybFZhcl9BQ1RJ T05fRElSICsgImptYWtlY29tbWVudG5vdGNvbW1lbnRhYmxlP3VzZXI9IiArIFBl cmxWYXJfSm91cm5hbEVtYWlsICsiJmlkPSIgKyBQZXJsVmFyX0VudHJ5X0lEICsi JmNvbW1lbnQ9IitpZCsiJmFsbD0iK21ha2VfYWxsKyImeG1sPTEiOwogICAgfSBl bHNlIHsKCXVybD0gUGVybFZhcl9BQ1RJT05fRElSICsgImptYWtlY29tbWVudG5v dGNvbW1lbnRhYmxlP3VzZXI9IiArIFBlcmxWYXJfSm91cm5hbEVtYWlsICsiJmlk PSIgKyBQZXJsVmFyX0VudHJ5X0lEICsgIiZjb21tZW50PSIraWQrIiZhbGw9Iitt YWtlX2FsbCsiJnhtbD0xJnJlc3RvcmU9MSI7CiAgICB9CiAgICBnZXRfc2NyaXB0 KHVybCk7CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIG1ha2VfY29tbWVu dF9jb21tZW50YWJsZShpZCkKewogICAgdmFyIGVsZW1lbnRfaWQ9ImNvbW1lbnRh YmxlXyIraWQ7CiAgICB2YXIgb2xkX2VsZW1lbnRfaWQ9Im5vdGNvbW1lbnRhYmxl XyIraWQ7CiAgICB2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsK ICAgIGRpdi5pZD1lbGVtZW50X2lkOwogICAgZGl2LmNsYXNzTmFtZT0iZ3Jfc20i OwogICAgZGl2LmlubmVySFRNTD0iPGEgaWQ9XCJsXyIraWQrIlwiIG9uY2xpY2s9 XCJyZXR1cm4gc2hvd19hZGRfY29tbWVudCgnIitpZCsiJywgMCwgJyIrUGVybFZh cl9iYWNrX3ZhbHVlKyInKTtcIiAiCgkrImhyZWY9XCIiICsgUGVybFZhcl9VUkwg KyAiJnJlcGx5dG89IitpZCsiI2NvbW1lbnRfIitpZCsiXCIgbWM9MT7O8uLl8ujy /DwvYT4gKDxhIGlkPVwiY18iK2lkKyJcIiAiCgkrIm9uY2xpY2s9XCJyZXR1cm4g c2hvd19hZGRfY29tbWVudCgnIitpZCsiJywgMCwgJyIrUGVybFZhcl9iYWNrX3Zh bHVlKyInLCd5ZXMnKTtcIiBocmVmPVwiIiArIFBlcmxWYXJfVVJMICsgIiZjaXQ9 MSZyZXBseXRvPSIraWQrIiNjb21tZW50XyIraWQrIlwiIG1jPTE+8SD26PLg8u7p PC9hPikiOwogICAgdmFyIG9sZF9kaXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo b2xkX2VsZW1lbnRfaWQpOwogICAgaWYob2xkX2Rpdikgb2xkX2Rpdi5wYXJlbnRO b2RlLnJlcGxhY2VDaGlsZChkaXYsb2xkX2Rpdik7CiAgICB2YXIgaW1nPWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCJjb21tZW50YWJsZV9pbWdfIitpZCk7CiAgICBp ZihpbWcpIHsKICAgICAgaW1nLnNyYz0gImh0dHA6Ly9pbWcubWFpbC5ydS9yL2Js b2dzL2ljb19sb2NrXzIucG5nIjsKICAgICAgaW1nLnRpdGxlID0gIsfg7/Dl8ujy /CDq7uzs5e3y4PDo6CI7CiAgICAgIGltZy5hbHQgPSLH4O/w5fLo8vwg6u7s7OXt 8uDw6OgiOwoJICBpbWcuY2xhc3NOYW1lID0gIklFcG5nIjsKICAgIH0KfQoKZnVu Y3Rpb24gbWFrZV9jb21tZW50X25vdGNvbW1lbnRhYmxlKGlkKQp7CiAgICB2YXIg ZWxlbWVudF9pZD0ibm90Y29tbWVudGFibGVfIitpZDsKICAgIHZhciBvbGRfZWxl bWVudF9pZD0iY29tbWVudGFibGVfIitpZDsKICAgIHZhciBkaXY9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgncCcpOwogICAgZGl2LmlkPWVsZW1lbnRfaWQ7CiAgICBk aXYuY2xhc3NOYW1lPSJncl9zbSI7CiAgICBkaXYuaW5uZXJIVE1MID0gJzxpbWcg c3JjPSJodHRwOi8vaW1nLm1haWwucnUvci9ibG9ncy9pY29fbG9jay5wbmciIGNs YXNzPSJJRXBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFs aWduPSJhYnNtaWRkbGUiPiZuYnNwO8ru7Ozl7fLg8OjoIOfg7/Dl+eXt+yc7CiAg ICB2YXIgb2xkX2Rpdj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChvbGRfZWxlbWVu dF9pZCk7CiAgICBpZihvbGRfZGl2KSBvbGRfZGl2LnBhcmVudE5vZGUucmVwbGFj ZUNoaWxkKGRpdixvbGRfZGl2KTsKICAgIHZhciBpbWc9ZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoImNvbW1lbnRhYmxlX2ltZ18iK2lkKTsKICAgIGlmKGltZykgewog ICAgICBpbWcuc3JjPSAiaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxvZ3MvaWNvX3Vu bG9ja18yLnBuZyI7CiAgICAgIGltZy50aXRsZT0i0ODn8OX46PL8IOru7Ozl7fLg 8OjoIjsKICAgICAgaW1nLmFsdD0i0ODn8OX46PL8IOru7Ozl7fLg8OjoIjsKCSAg aW1nLmNsYXNzTmFtZSA9ICJJRXBuZyI7CiAgICB9Cn0KCmZ1bmN0aW9uIGdldF9z Y3JpcHQgKHVybCkgewogICAgaWYodGhpcy5jYWxsSWQpIHsKCXRoaXMuY2FsbElk ICs9IDE7CiAgICB9IGVsc2UgewoJdGhpcy5jYWxsSWQgPSAxOwogICAgfQogICAg dmFyIG5ld1NjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNDUklQVCIp OwogICAgbmV3U2NyaXB0LnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsKICAgIG5l d1NjcmlwdC5zcmMgID0gdXJsICsgIiZjYWxsaWQ9IiArIFN0cmluZyh0aGlzLmNh bGxJZCkrIiZyYW5kPSIrTWF0aC5yYW5kb20oKTsKICAgIGlmKHRoaXMub2xkU2Ny aXB0KSB7Cglkb2N1bWVudC5ib2R5LnJlcGxhY2VDaGlsZChuZXdTY3JpcHQsdGhp cy5vbGRTY3JpcHQpOwogICAgfSBlbHNlIHsKCWRvY3VtZW50LmJvZHkuYXBwZW5k Q2hpbGQobmV3U2NyaXB0KTsKICAgIH0KICAgIHRoaXMub2xkU2NyaXB0ID0gbmV3 U2NyaXB0Owp9Cgp2YXIgcHJvdGVjdF9rZXk9UGVybFZhcl9Qcm9LZXk7CnZhciB0 ID0gbmV3IERhdGU7CnZhciBwcm90ZWN0X2tleV9leHBpcmUgPSB0LmdldFRpbWUo KStQZXJsVmFyX1Byb0tleUV4cGlyZSoxMDAwOwp2YXIgdGltZXRpbWVyOwp2YXIg dGltZXRpbWVyMjsKCmZ1bmN0aW9uIHNldF9wcm90ZWN0X2tleShrZXkpCnsKCWNs ZWFyVGltZW91dCh0aW1ldGltZXIpOwoJY2xlYXJUaW1lb3V0KHRpbWV0aW1lcjIp OwoJdmFyIHByb2ZpZWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3Rl Y3Rfa2V5Jyk7CglpZihwcm9maWVsZCkgeyBwcm9maWVsZC52YWx1ZT1rZXk7IH0K CXZhciBjZm9ybSA9IGRvY3VtZW50LmZvcm1zWydyZXBseSddOwoJY2Zvcm0uc3Vi bWl0KCk7Cn0KCgpmdW5jdGlvbiByZXRyaXZlX3Byb3RlY3Rfa2V5KCkKewoJaWYo cHJvdGVjdF9rZXk9PScnKSB7CgkJcGVybF9nZXRfcG9zdF9wcm90ZWN0X2tleShQ ZXJsVmFyX0VudHJ5X0lELHNldF9wcm90ZWN0X2tleSk7CgkJdGltZXRpbWVyMj1z ZXRUaW1lb3V0KHJldHJpdmVfcHJvdGVjdF9rZXksMzAwMCk7Cgl9Cn0KCmZ1bmN0 aW9uIHN1Ym1pdF9jb21tZW50KCkKewoJdmFyIHQgPSBuZXcgRGF0ZTsKCWlmKHQu Z2V0VGltZSgpPHByb3RlY3Rfa2V5X2V4cGlyZSkgeyByZXR1cm4gdHJ1ZTsgfQoJ aWYoIWRpc19zdWJfYnV0KCkpIHsgcmV0dXJuIGZhbHNlOyB9CQoJcHJvdGVjdF9r ZXk9Jyc7CglyZXRyaXZlX3Byb3RlY3Rfa2V5KCk7Cgl0aW1ldGltZXI9c2V0VGlt ZW91dCgic2V0X3Byb3RlY3Rfa2V5KDApIiw1MDAwKTsKCXJldHVybiBmYWxzZTsK fQoKZnVuY3Rpb24gY29tbWVudHNfc3Vic2NyaWJlX2NhbGxiYWNrKHJlbW92ZSkK ewoJaWYocmVtb3ZlPDApIHJldHVybjsKCXZhciBsaW5rID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2NvbW1zdWJzY3IxJyk7Cgl2YXIgbGluazIgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnY29tbXN1YnNjcjInKTsKCWlmKGxpbmsgJiYgbGlu azIpIHsKCQlpZihyZW1vdmUpIHsKCQkJUGVybFZhcl9jb21tZW50c19zdWJzY3Jp YmVkID0gMDsKCQkJbGluay5pbm5lckhUTUw9JzxpbWcgc3JjPSJodHRwOi8vaW1n Lm1haWwucnUvci9ibG9ncy9pY29fc3Vic2NyaWJlXzIucG5nIiBjbGFzcz1JRXBu ZyB3aWR0aD0xNiBoZWlnaHQ9MTYgYm9yZGVyPTAgYWxpZ249YWJzbWlkZGxlPic7 CgkJCWxpbmsyLmlubmVySFRNTD0nz+7k7+jx4PL88f8g7eAg6u7s7OXt8uDw6Ogn OwoJCQlsaW5rLmhyZWY9UGVybFZhcl9BQ1RJT05fRElSICsgJ2pjb21tZW50c3N1 YnNjcmliZT91c2VyPScgKyBQZXJsVmFyX0pvdXJuYWxFbWFpbCArICcmaWQ9JyAr UGVybFZhcl9FbnRyeV9JRCsgJyYnICsgUGVybFZhcl9iYWNrOwoJCQlsaW5rMi5o cmVmPVBlcmxWYXJfQUNUSU9OX0RJUiArICdqY29tbWVudHNzdWJzY3JpYmU/dXNl cj0nICsgUGVybFZhcl9Kb3VybmFsRW1haWwgKyAnJmlkPScgK1BlcmxWYXJfRW50 cnlfSUQrICcmJyArIFBlcmxWYXJfYmFjazsKCQkJbGluay5vbmNsaWNrPWZ1bmN0 aW9uKCkgeyByZXR1cm4gY29tbWVudHNfc3Vic2NyaWJlKDAsUGVybFZhcl9FbnRy eV9JRCk7IH07CgkJCWxpbmsyLm9uY2xpY2s9ZnVuY3Rpb24oKSB7IHJldHVybiBj b21tZW50c19zdWJzY3JpYmUoMCxQZXJsVmFyX0VudHJ5X0lEKTsgfTsKCQl9CgkJ ZWxzZSB7CgkJCVBlcmxWYXJfY29tbWVudHNfc3Vic2NyaWJlZCA9IDE7CgkJCWxp bmsuaW5uZXJIVE1MPSc8aW1nIHNyYz0iaHR0cDovL2ltZy5tYWlsLnJ1L3IvYmxv Z3MvaWNvX3Vuc3Vic2NyaWJlLnBuZyIgY2xhc3M9SUVwbmcgd2lkdGg9MTYgaGVp Z2h0PTE2IGJvcmRlcj0wIGFsaWduPWFic21pZGRsZT4nOwoJCQlsaW5rMi5pbm5l ckhUTUw9J87y7+jx4PL88f8g7vIg6u7s7OXt8uDw6OXiJzsKCQkJbGluay5ocmVm PVBlcmxWYXJfQUNUSU9OX0RJUiArICdqY29tbWVudHNzdWJzY3JpYmU/dXNlcj0n ICsgUGVybFZhcl9Kb3VybmFsRW1haWwgKyAnJnJlbW92ZT0xJmlkPScgK1BlcmxW YXJfRW50cnlfSUQrICcmJyArIFBlcmxWYXJfYmFjazsKCQkJbGluazIuaHJlZj1Q ZXJsVmFyX0FDVElPTl9ESVIgKyAnamNvbW1lbnRzc3Vic2NyaWJlP3VzZXI9JyAr IFBlcmxWYXJfSm91cm5hbEVtYWlsICsgJyZyZW1vdmU9MSZpZD0nICsgUGVybFZh cl9FbnRyeV9JRCsgJyYnICsgUGVybFZhcl9iYWNrOwoJCQlsaW5rLm9uY2xpY2s9 ZnVuY3Rpb24oKSB7IHJldHVybiBjb21tZW50c19zdWJzY3JpYmUoMSxQZXJsVmFy X0VudHJ5X0lEKTsgfTsKCQkJbGluazIub25jbGljaz1mdW5jdGlvbigpIHsgcmV0 dXJuIGNvbW1lbnRzX3N1YnNjcmliZSgxLFBlcmxWYXJfRW50cnlfSUQpOyB9OwoJ CX0KCX0KfQoKZnVuY3Rpb24gY29tbWVudHNfc3Vic2NyaWJlKHJlbW92ZSxlbnRy eWlkKQp7Cgl2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21t c3Vic2NyMScpOwoJdmFyIGxpbmsyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2NvbW1zdWJzY3IyJyk7CglpZihsaW5rICYmIGxpbmsyKSB7CgkJbGluazIuaW5u ZXJIVE1MPSfC++/u6+3/5fLx/y4uLic7CgkJbGluay5vbmNsaWNrPWZ1bmN0aW9u KCkgeyByZXR1cm4gZmFsc2U7IH07CgkJbGluazIub25jbGljaz1mdW5jdGlvbigp IHsgcmV0dXJuIGZhbHNlOyB9OwoJfQoJcGVybF9wb3N0c19jb21tZW50c19zdWJz Y3JpYmUoMCxyZW1vdmUsZW50cnlpZCxjb21tZW50c19zdWJzY3JpYmVfY2FsbGJh Y2spOwoJcmV0dXJuIGZhbHNlOwp9Cg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=0.gif Content-Type: image/gif; name=0.gif Content-Location: http://img.mail.ru/0.gif Content-Transfer-Encoding: Base64 R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAQAICRAEAO/////// /////////////////yH+FkdJRiBTbWFydFNhdmVyIFZlcjEuMWEALAAAAAABAAEA AAQCEAAAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=default.gif Content-Type: image/gif; name=default.gif Content-Location: http://www.tns-counter.ru/V13a****mail_ru/ru/CP1251/tmsec=mail_blogs-other/ Content-Transfer-Encoding: Base64 R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=logo_blog.gif Content-Type: image/gif; name=logo_blog.gif Content-Location: http://img.mail.ru/r/blogs/themes/logo_blog.gif Content-Transfer-Encoding: Base64 R0lGODlhQwAVAMQQAO/0+BBWjyBilzBtnmCPtd/p8J+80s/d6a/H2lCDrY+wy3Ca vEB4pr/S4YClxP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAABAALAAAAABDABUAAAX/ICSOZGmeaKqubOu+cCzP dG3HA6PvjFAGPF7ANCA4FoxhKRcUMRw+IlREeFiv1yhEAMBiESRCwftQKCFVsgPS BZcSVreDbC2c5/RHY2TIPw5KeF4EEFZ7JANdeiJ4ayl4WoWLEAtXDkoEioeNJoYk AYqTnI9WJZ5sVgtLigkQoySnEAEHWJuGDrhTJHimiwx1J30PBq5WjrCTEAhWtKJ5 CrulyHt4h2+eryOnCoa/zg8FDQ3ND8e808VlJ97Uxp2LaYDsjO4ilQ8AI+fai/fW JP7SHePXwBsAH/MEInugTxpBCAOunBnRwF02EXW6ABjg5NQrbwzphXwIoZmbEWke avi4KOkKoY7fDOhwoAgMkDEjMU6KyIwAgwTC1CnsVQ+mLToFBPC0kg+diAShvBAT OVDnsCWnBuC80uDSFkUFWpGgBW2EAANbHyBgQALOA44luvwb0aVsCwETP6WAeyIv iUg/bggeTLjwihAAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=logo_mail.gif Content-Type: image/gif; name=logo_mail.gif Content-Location: http://img.mail.ru/r/blogs/themes/logo_mail.gif Content-Transfer-Encoding: Base64 R0lGODlhaQAVANUkAL+RI0B0qYCjxkBfaTBZcoB4RhBMg++kCRBSk8+XGt+dEq+L LDBpomBsV8/c6VBlYHCXv5+ENe/z+CBTeiBdmnByT3NzTd/o8a/F21CAsOagDmCM t8STII9+PayJLo+uzJ+51L/R4v+qAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAACQALAAAAABpABUAAAb/QJJwSCwaj8ikcslsOo+E SmFaITyvSchoFCBlBAysuPlIiM5okaIxHmu5pG2ofbVwNBxL0bBAHwCAaQAGdE8I EBBCcoVNFh5DHnpCBmYiAA9FDQpnCYRCDGABAgIQCEIbo11GFBCjEBQkoGEIpIoj c00EU5i6mFAFViQaJGjCQx1nESQTHYALvhFnC0MhW9YjEhsX1yGmQggf11sg2xck b12LSwSVZyQAIgdImwBCw2dswyQD0iQNadIOLIgmYoCQauISbsHwzYHCayQEbEl3 a8mAA2kSvHN35Ew9EhyIiQxJItoBAw88NniAzKOBTcpIIHSQgYLDhQw2WIOFYYsE /zA5JUCUCEcdEgMYRSR4EAyeCCQehTiCJAmjsk3ThhCIikzBwS3eMmxxQG0iA59h hiDYtiXixDgVkxDMOsQpVEtD7OCRRExEg60iJhSJVo/fU5lthQQwilDUlg1GFrcl ShEXEowni9jtiFfJmQGGjfwrzBHhEMmWGyP0VsSa26Jxj0zop5mjkaieC4YuUgHv btOKGU8EbsQ1ZbiWjRguYGTz7c5JzhQwgK8IPRIFSicmgbosl3AjMqwy/nZskuVG CBosMhs6kj5ekR1YzyfqdcQjTgvnInYE2SI9TfYWW2kpJ51onHhS1xkVLPGPCBVQ wolTZyiQnV9f5RdcbI2RcMRTCLCQQEGAAsIBwliqCDGAFegZsYlSgi3TRzwKJlHJ AAZ0kJQlKaGhUYb6cfgWA0KNddNQbyFQ5EIk9CYCAS0WQcCOCbRTUC5JTbfPADES pEAw+AVpWYCqMMDWNUu+VuaSI1Bw4YoHQvFiGgf4guUZAk1RQAIKTABljTp9oFYI EognRAYSdKMWBAiFUIpEAoh4wQUhkkCLQ3NM2ec7dSZhQAVOARAhFgYQBNCTjKSq aqoTVLAAIAAswMaqtNZq6624phoEADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ranetki-bookmark-t.gif Content-Type: image/gif; name=ranetki-bookmark-t.gif Content-Location: http://img.mail.ru/r/bookmarks/ranetki-bookmark-t.gif Content-Transfer-Encoding: Base64 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 ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline Content-Type: image/gif Content-Location: http://img.mail.ru/r/blogs/menu_grad.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAYAMQAAAAAAP///9bh/9fi/tnk/+Pr/8ra/szc/sTX/8PW/sfZ/83d /tDf/s/e/drm/9vn/8DW/7/V/N3p/9zo/t/q/////wAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAABUALAAAAAABABgAAAUUYBVFUIIoinEsDcMIwkA4 zyRRRQgAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_home.png Content-Type: image/png; name=ico_home.png Content-Location: http://img.mail.ru/r/blogs/ico_home.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGHSURBVHja Yvz//z8DJYARn+T/Qqv5DH/+GTD8+OHAOPvCR5IMAGs28Upg+AfkHNlygeH7D4c0 67Uffv/+y7AgRw2ujwmv5vdvGcDYwseAgYnjAOv3Twy/f/1BUcuET/OVT1wM6xjN IIZY+xiUXWljYPvxGbcX0DVvtaphADlZ+dw6hkiG8wwMfMIM949dYFB8e0eAcRsk TJgIaf718w/DRVVPhoXfdBgY3r5lUDQzYGBg5jjw39mAH+4CfJp//frN8BtM/2HQ vbKVIY37JgMDvzADww5gwH774cD8P9NgPgOvaALD928MV36K4NQMwo94FBgeP3zH YPbmIgPDHwYJho+fPeBhkLf48X8pWRG45nu3njH8AbJB/D+//zAIi/LDDXr+6A3D kWmOYL0sMAN+QxXDbAZpXlmuC1bkWXXyP0wzyEUgdRjR+AfN2ciK/vz6C9cMMxzD ALDtSH4GORvFdciGIyUmhBeAgg9uv4D7GcUFQP7zJ28hYfILVY6R0tzIxEAhAAgw ANW7OlckAQZBAAAAAElFTkSuQmCC ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_friends.png Content-Type: image/png; name=ico_friends.png Content-Location: http://img.mail.ru/r/blogs/ico_friends.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAllJREFUeNqEU0toE1EUPTOdTzLGyTRN qgkpdtGWotAuxFWUDqJkZVNxE3BTRUG6KrjSVcGNgmLdihARBEHEFEQ3fhdKBTHt wk1abWrbiE0bhskkk99kvJPW0kWaXjjvDvfNPe+c+3gMtuOe2hfz+rrGWZZVKpUy 9Hx+zrLq0zdn15bRJhhneXBmMHa450gycCgI27ZRKhrQ8pvY+PtHK5sl9caXlfm9 CFhnESVpUvZ2guN4sGwHOJ6H2y3hgEdWGIaZaqeAc5Z6taYGhk0MndPB1w3AMGCs mvictJH63VDD4fBLURSVYrFIW8ZcqVSabjQayzsE5DlzfLTQi2oNKFcBSh6PDcO7 ia9MjxKJ9I851nRdRy6XUxcWFsbpW6XW+aaFaqU8hmwW0DTAJIIGlVkXXqVEBINB uFwu8GTLyZIkwe/3K4IgTO0M0Qn7becHuCUVogwIXiow6Iv9xJWrw4ifF9DrKwBk If2jiLsJA09e50h5hWkqOHV7diSWeqq9+XWC/BepwuP5ylkUuBAmLta2ms0KWbMx EGbwcMKEZVmZpgJqvk95stWEjWwa3y/fomtybY2r0UF+68D6KpjoxhgVZ5whxghL rQg8oQG8XzzWdTr0TYZwEE17nEhE9mOn+f8t3CFEWhEMFda67Y+DR6v9aVkY0smZ D7UlP8xkVNHi4ojyLPHJsUCUGCUou5uvZ95FVW3xAtrH9M4tEFGAkrytyn4x/2iG ty2JfrD3fQutQotfukbp5D4K0lybzQRhnRDY6wxCktnnBEdJ9y5rzadD0GmADjn+ CTAAEUHgdmESgPgAAAAASUVORK5CYII= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_comm_b.png Content-Type: image/png; name=ico_comm_b.png Content-Location: http://img.mail.ru/r/blogs/ico_comm_b.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALsSURBVHja pFNJTFNRFD2//F/ST8tn+C2TKYQKwQFFxAQVYWOQIC5wQYLgQsJCokYjEUNinFBC UHFhFBeGQEAMLkAxCIbIJCJTSWgRaGulQBGZQSl0gu+DjcboipvcxR3eeefmnksJ goCtGD07+gVzUzOou5cDYXkJyXmPIJJ4w9BWA0oq3zM/2HMpaH/MS92b0obTZa3o aaxFZ0khZifNiM3Ihuh/yJyfKk/z7Hr/WEfdmYacjHpeqaz9V98mAMvzHmCYJoZh mlnej+GVKvH95LRrYqmSFFXQOCV4fafihL6h+ijvpwLpbSOu5Xj+IM0Hbve6HCqb CwkNhmHUhKfxe+1u+xLS7xZHISQlEY0Pm+F0uoILW4XVMuHxOO2cEKrwhGNpGTeO n+qg8lMSNb7rH8IDd8ah8+MA7PMm3HyviYb1eSdoKcATNw4D7jYY9EkxAfbydger wNX0SvQZLaCEr73HYH3QgB1RgHkcmNUBEW+ptfH6Qhdj0RUw/oB9BrbdJ7tc5ZnR GDkrYGMMswkL6ma4VAVfMJ5PkLuhpfQwbKton4uAekjbt21am7UWFKlw0ibYVfGY elLvqpmuclDusXGcuZGBfQWS2OxKKqtmGN36CWNvgjp4kRLDTIciTJcIGyEykymA tU7B6e4D5FPw9wXGj9yGB3cA9KQJvmUVU6LiW6VQNw2sZ39LgUf4RQxNGEDPAxI5 EKCPgyLAB7w2FQqykJXvJD/9CjJVApL08/jhujgnAs8T2O6Qouo2BFUDXQ4JsEb2 KyWbFXQQOr0hXq0DzXFgSWl05SekrSVoGv8E9Op20ZtqYFlgzECNllcK5kgtEE5y FjFglYFyl5FgmSBaALkdtlkbLC2vgBE1BZb7Q4kMQ/iJqM+DpgKHmcQyMrfIE9hg 5OIFSL0BIqh3/WMFWFulNj/duIW/pckyTK52Erkz3drUkEMBcV68n8K5Yp829oy0 2haWX3BK8nDpdz+11WsUYYv2S4ABAPXSIKADHpGuAAAAAElFTkSuQmCC ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_read.png Content-Type: image/png; name=ico_read.png Content-Location: http://img.mail.ru/r/blogs/ico_read.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgdJREFUeNqMUkFPE0EUfm13u512qcut TZbA1RPcPBn5Cf4D2njzgn+AxBCMRwnBqAlJN/gH1uqBU7sJXtompiUNiahQsk2R Htzdou3KzDLODrBsuxh9ky95mZn3ve97M6A8G8xubLyswl+iUqkst9ttq9lqHpXL 5aXIhTtrtrW5+Ypub78tTZ7VarUlx3HoyB1R27FpvVG3/H39vT5/fSfOoPAkHi/o +rugQ7VanVVVdR0hBIQQDkqpwop9tethgiASiYTGJD/wc1mWn+ZyOYV4JCCQJAku vItFURAX6o3GUYTgikTf/bg7n8/nH14X+sAEA/UXpRCLxXzVc3BvhUYI/EPWxZBS khIu9pUkpSQnCEf8tsmzPopHPF7Ei29mABjjfxMwBgh7D+eiKP6HAtYpkE7GiZjF KMGJp0xauOkaVuKTRixQqm3Z9+EHRmMW+AxI1EYKpcYJnJXp4sgTtNfduzAkiXEF DLZlQ9fsQuewA+axCf3v/aiFwWquaA6R9uZLPpjB8NcQDj4fQK/X47MQkyKgNAJ1 RoXsVDY6xLPnc8V6H2kvPmW4BdM0+b4gClcfTIBMWoYpOQt7xz9ha+fr5b+ZfIHM cqv0ZGFQWJxxeecz14P9Uwr7JwQOT0fQ/GZ1KHENeu4aQLARu+0Z049rJYp/FxiA YtdmMC5xbpAPj1rhu38EGAAx0mb72+iGxgAAAABJRU5ErkJggg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_send_challenge.png Content-Type: image/png; name=ico_send_challenge.png Content-Location: http://img.mail.ru/r/blogs/ico_send_challenge.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xh BQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9gEFwkSAQrVhs4AAAAZdEVY dENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAGHRFWHRTb2Z0d2FyZQBQ YWludC5ORVQgdjMuMzBAhEcQAAABVElEQVQ4T2PYcfJ0lntc4j4GEgFID0gvQ151 9X8Qrm2s+T9n7QotQuaA1IDUwvSB1Sd56IEFeprS/nvEJ8/FZQhIDqQGpBakB0Ud SABmUGlZzn+TgHBzmAKL4Gjz/NJUuEYMzcgmgSTDraXBir3i06bbBIVN15Xn/Q/C eDVu27ZQNsJDXxNkmImmbDWyi0CGdTdXVYPkgtw1NUFqsXrz2Jl9C4pirP+DMLKt MK+BxEFqcAb0g7s3/p9bXwfGIE2sTAwBoY6qASA2TBykBqsBINORNaf6aDDCFGb6 6TAiGwJSi2IIuua01HQMW0BiOA3Ji3f8nxPnAFbQs24LJy4DulZv5ASpAakF6QG7 AmQ7LMTB/I7uClwGFLZ3VcASHkgP2CswA1IKMmNAGrFphvkXJg9Si2EAoTyALo9h gIOO6HFiDQGphRsA83+ko9YqYg0AqYXpAwB7AxCkslJ1JwAAAABJRU5ErkJggg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_search.png Content-Type: image/png; name=ico_search.png Content-Location: http://img.mail.ru/r/blogs/ico_search.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnJJREFUeNqUU01IVFEU/s7M8NR4oyBF E1IhWIYgBLbInas2I0GrguiPiREJN0GBSRmtxDYGOUEoLSqwRX9gGUS5aNolSJJb UTDFgWycmTfz3sx7p+9Nij034YX7zr3nnu+73znnPlFV7BzOjNTBQdLbwFnNo1Od qnsJYczT/87LYdzs1aLvlJ0Ezqw0e1lMuito89aRIXhJPcyKoEVq0SE1MLWEea+I 7obruhAgcL6LwVu/VRbRTNvPGx/VJ9XdOs+NiUmCCZLG3TzmPAcnQv/eztCEu452 z8bF+l59GGlC0novPwpvRAuv5FNoLzrMC9otUXyAwTgPiYCCUlq+lBcRi57XIwQm KH3MXSNxBQibzLcWq/Q58NDj/saUvYZ0UEEBrbAxs7m9wzrAXsa5hqSK2rjKssVY n0O06WpEGa1BghIaGZivrvMMtJDZd1tf+PvoFR1n/g4vQPQST0soMr4hEmwBfvGg qUqQxQLZmzdGJMlaPA01IkGw4TcvOyyGW4Th5hDsgvVMJt2f7HsFhyWCOJQV53Go hoS0BGRdC2GvgrBbQF2lgKGAAgp7LUqgg4HoLe3P3ZUwWzVQcdDGDmVI3OeVSVLC GXYqw7dxb1tBSgxW+GR+FQ9YnOOI4LEYuGkOMpnNsd4npg+uWEjHnutC8CWmJMbv infw2suNqdGjXLeHIigihDmmMksFYdfBaabQyBRO7Z/Qz9sEKYlzPYK2wZavE/eh ttVzzEYdFfn+Tk6T61XK/0g7dOCtzm+pEh3FMO0NgkHwctm2urhf7nry92f57yDB ok4Parpnj05fRtxXtJsJgkc2wandgv35R4ABAPH6m9NCKXkbAAAAAElFTkSuQmCC ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=https.js Content-Type: application/x-javascript; charset=windows-1251; name=https.js Content-Location: https://auth.mail.ru/https.js?2358886120 Content-Transfer-Encoding: Base64 KGZ1bmN0aW9uKCl7CiAgICB2YXIgZnJtID0gZG9jdW1lbnQuZm9ybXMuQXV0aDsK ICAgIGlmIChmcm0gJiYgZnJtLmFjdGlvbikKICAgICAgICBmcm0uYWN0aW9uID0g ZnJtLmFjdGlvbi5yZXBsYWNlKC9eaHR0cDpcL1wvd2luL2ksICdodHRwczovL2F1 dGgnKS5yZXBsYWNlKC9eaHR0cDpcL1wvc3dhL2ksICdodHRwczovL3N3YXMnKS5y ZXBsYWNlKC9eaHR0cDovaSwgJ2h0dHBzOicpLnJlcGxhY2UoL15cLy8sJ2h0dHBz Oi8vJytkb2N1bWVudC5kb21haW4rJy8nKTsKfSkoKTs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=_avatar.jpeg Content-Type: image/jpeg; name=_avatar.jpeg Content-Location: http://avt.foto.mail.ru/mail/malvo_59/_avatar Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2Jl AGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMD AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AA EQgAWgBaAwERAAIRAQMRAf/EANcAAAEEAwEBAAAAAAAAAAAAAAkGBwgKAwQFAgEB AAAGAwEBAQAAAAAAAAAAAAMFBgcICQIECgABCxAAAAYBAgMDBggFDw0AAAAAAQID BAUGBwARMRIIITITQWEiFBUJ8FFxoVIzNDVCgiMWNoGRscHRosJDU2NGZhc3OPGS JERklFVlVldYGVkRAAIBAgQEAwMFCwcJCQEAAAECAxEEABIFBiExEwdBIghRMhRh gSMzFfBxkcHhQmJTYzQJobHxUkM1GNGSoyREVGRVFoKig5OzpCYXNzj/2gAMAwEA AhEDEQA/AAtlII/ufDhqzimKUCwGMwJj5P2OzWVMBl8Ziob6yCVwG0tMZga7+T5t ZdOuAjPjKDLfbs46yEXDjjA3VPHGYI7f8HWfQwGbynjjKEXv+D8Pn1l8PgM33y4y FiN/wN/h8mshbYwOofLj17H/AJv4fra98N8mMftH5ceght/wPh+tr78L8mPHUqeO Hmwb0yZe6k72wxthekSVxtD0guXINgTaxEBFJnIR3YLTPPDoRNbr7ADgKzx2qkiX cCgInMUpiXcGr6PtjTn1TW5kgtF8TzY+Coo8zsfBVBPjyBOFJtDQtx741pNC2zbS XV+/ML7qLWheRzRY0HizEDw4kgEkv/p3rf8A9A+k77Z/Zv8AaLn/AIj/APtN9z/o r/Wjj/yzTEf4htvf7hefX05x/U/rPe+s/Ze7+1xKr/CLu/8A5pp37rm92X94/Ve7 9V+3979hgKBC7jqQYGIlMaY3k099tg+Hm0IFxqu9MdZixO5WIgmACdQdg5h2AAAN zGEe3sKUBEdtx7OzfQhKxoZG90DGpJLh0YamAtygRsLgxgABUWIU4ekXgVMdkiAY xNy83pDvsAjrReSZxndhHFzFOZ/Gfl5DxpjKKCWblwB+7l/lp8lcOU1x69VIYwJm OAgYCCXmH099th/JpiX5RA3ya1g1mOQc/i+UU4E43/s1iCaMaj2/0fd4Y1H9CVIT 8s2KrtzEETE5hKI7bgRQCEOU230d+Hk1u24jb92kKt7D4/f/ACjBTd2UsY8tSfl4 /wAw/wAvzYQkjV/UjcyZTATs5yKCAmJzD6IkMHYcnk8oh8Y6PLXO56cwpJ/P934M Jy4nki4twxqJxIfR30YrbYLX1D5cbJYUBENyBrMWxwC2pU8cTOwN0bmvESfJ+aLM XDeDY1qvLOrTJN0vb1pjWEa/mpAaiwfGRZNIlnFxqizydkjoRbFsIrF9bOmZuLL9 x+8W3tjB9Nsct9uUCnSU/RxH2zuORHPpL9IeAbIGDYkv2Y9Oe8u6TRa3qvU0vZJI PXdfpbhfZaxt7wPLrvSIcSvVKlMPzkzqyqsJipliTAsBNYB6WJ45n6MZS3SkN1Cd XUg0jEERkmVxk0/zpx/j86Am9qZBfJmXZkcpp1RiwSeV2dnYl28O+u826AhZri78 WNVt7aMn2AFY04cAAXkYfnua4sHuZu1npv2M04WOx0tTyFHuryalAKkh5pT8pCRL X6uMcB1/2mRn/i90m/avzS/uvf8A6Df9L/pB98/1m+9/Np8/8M2m/wDMbj6rp/Vr 9f8ArOf1X7L3v2uIvf43L/8A5NB9b1frm/df1Xu/X/tfc/ZYi2gXfb4eXfT+qMRT lNMdlBHfbWyqVwWyyUw5VPihVEyvIIiqcCFDkHmFNMQEeQ24CYFVDAUduAl8u3Zr zoJJli/MUZjx/n+7xxrR1lkC+H4vy8sTTxfQvbTps0Ih4gqiQO72qioJS8wl3MYQ UHt3Dfl4dmwCCf1G7EYaaT3Ry+T+jl+E4XWj2RuXCAVJ+77vwezBG4HpDlla4SVI 1ECKocxjHTDmHbcSmA4AIGEC9nl38/HTfzbuiF10mbkfDDswbAunsfiAvAjxGI0Z AxV7AWctjNtjI8xdhT5Q5Sh2h28pNjbcR238+22lvpWofFoGrx5g4a7XtJayZkYE U/k+8fu/FiHtvrJkxUEiYB4W59ttymRP39wE+wbAG/aAmHl8+nG08ieFWPvDDSas VjfjyNQfZX8uEJC1aTm5RpCw8e6kpV+oqkzYtETquFvV26710tyFAfDbMmDZVy4W Nsk3bJKLKGKkQ5imOp6lpWhadJq2szxW2nRCrO5AUfJ7Sx5BQCzHgoJ4YS+iaJuD detx7c21aT3uszNRIolJY05sfBUA4s7kIi+ZmAFcSth6ziDp4iEbrl8ra63Qkiwj oSkNGcjOMS2p2d4aDpUJVI+JkZzKeS7JNxS0MhHN2bpk0csJ0/q0oEDI+pwv7l+o TUNb6mjbJ6lnpBqrXB8txKORyU4wofAg9UihrHxTFmfZH0faPtXo7k7ndHUtxCjp aDz2lueY6leF1IPEEdBTUBZaLJhg8q54vmZ7QyksgEj7ZMbRNkqmE3DpjMUGuN3v qVjh8i52fQki8jrgzmJBqxfxFejZB1BHi20eaBdSyycZkSEa7tz2y3B3J1XoWIMW mIw69y4JRK8SBxHUlPggPysVHHD895O9uz+ym3vtDWmEuryqRa2UZAkmYDh4HpQr wDSsKDkoZqKUieKk3r19P2WZkLTbJoUlJ6zzBiHfySiRllEkEkUgI0iohmq6VFqx bESat/FOJSc51DnsW2jsbQtkaOmjaFEEhHF3PGSV/F5G8SfAe6o8qgAAYpi7kd3d 191dyybi3ROXfisMK1ENvHWojiXwHLMxq7nzMSccP2YH0S/fPLw+fho76A/0uEv8 cfaf3bEYWpd9vh8WkFGMPjOaYUrVLfbW/GtcEk8lMPZSUABJkIiAAAnMIj2AAA83 Ed/IHy61jHW5lA/qfiGALOalxU8qfjGDmdB/StaMgtYrIdlRXrmOCL8rGSXbh7Qt CqBuRynX0VQ5SNW6iYpqvVAFIqm5EwVMVQE4H+pn1ZbP7TXr7I0Ix6n3EIrJCG+h slehRrtl452BDJbKRIUo8jRK0Zknj6bPTnuTuTGm6tZ6lhshT5JSv0t0VLBltg3A IpBVp2BQNVUWRlcIfdOPxzB04sShFtRTQbCjuuqdZY5gLsY51VFDCYxuPZsX4gAN Q1TvjujVIDqU+oOt4wr9GERQfAKoWlB8tSfEnniwW37VbTsIl06Kwja2Xh5yzsfA ksTWp+SgHgBgOPUzSK84kX8jAiRoYBWUFsooZRuYAERMYh1RMqicwh3hExdw29EN x06Ha31m322tXTSe5Efxe3mYL8VCgW4grwzSRJRJ4x4hFSUCrDqtRCx3d70eWO6N Jk1XtvJ8JuJQW+Fmcm3n5nLHK5LwyHwLs8RNFPSUlwJ6brqdgUcu037dlX/EBB3Z AQPJtA2kGsY6bQbNosia0Tyb2VatEGDdZMFpWQjo9Vds5lI8F7GdT75bG0Lbdtqu jXMeqXF0gkgjgbgyEcGleh6QrwKsOrWo6fBqV27V9MPc7fG5J9L1u1l0TS7O4KXE 9zGQ2ZeBS3jqDOxrUOrCGnHq1yqzSW3NlaxM3NVsfxzKRtEoyj5spF5SP9ekq+6m mrKPvGQ7mtX5WLp+JiWY7NpGpoxzk1nmQh4WLibROPLjUWkQd69wNzb9vvi9enJg QnpQJVYYgfBEqeNOBdiznkWIAAse7adpNkdqNLOn7TtAlzIo69zJR7m4I8ZZKDgD xWNAsS8cqAkkxaZObRdrW/8AZz5KxX+PCRrtuyJNQ5F6xiyNeNGTV7j2pU6Xfz7U s16gxaN5CvvXcrIHVaCOSJCdfnGmVZe9o+yur9xbpdRvs9rtSN/PLSjSkc44Qede TScVXwzNwDV+of1M7Z7J6Y2nWhjvt+Tx1htQfLEDwEtwRXIoPFY+DyU4UHmw/wDW 6XGVpiozj/W3Crt47lZeWlXzuXnrDOSKpnErYLFNyCq8lNz0s6MZVy6cKHWVUERE dtgCxjQdt6TtrS4tG0SBLfToVoqKPwsx5szHizGpY8ScUp7z39uXfu4J9z7qupLv WLhqszHgo/NRFHBI1HBUUUA+WpKjPGAJeHZ8mjgw8MJRb05sJf2cX4v6QcvDWj0P /WwefGH/ANpiErIN+X9TTWRDxxJy5NK4WDJPfbyfJoyiXCduXpXBY/dv9FUr1H20 LddGT6OwpUpEiko9AFWa11mUyAYanDOhIPM1IBSGknCQgdugcEyGKsqQ6df/AK6/ WTpXp028u0NmzwT96NVt26EflkGn27cDe3CV4OasLOJwRLIpkdWiiZJJg+j70t6j 3y3Ed07oimh7WadMOq/FDfTDj8JA9PcHA3UimsaEIrLJIrIdXq169Oj3oqgGVayp lWn1Gdi4hmNdxHV/Cm76pGpNgTiG8dj+uFXkoSHcIolSbPHiTGLJsAGcJlDfVFPb naHczufqsutadbXl7PcTs9xe3DMI3ldiZZJLmU0kkZmLSBS8xJJyt43Z6te7d2rb QWUZgt7W3iWOO3iUDJGoAREiQURAoyqKKgAAHDkDq1++jyt1AzDin9HmArHJrv1B Zxknama9mtboXRvAbqsKNU1l2Me88UwCn4sjIkOIgBk9u9PDZPp2uUSOLc18090a fQ2tVQU51mkGYr7SI4so45h4NTrncK2gR5rKJYrYV88vE/JRF/O8AAWqeAWuG0te IuoWSSjbv1qWK6359LJoyTfCsW/esMfRqLl8pFNgyGajCnFtnS8gCbJuwaoGO7kV xjmJpqxN1Ki+lAvZ3T+31jDqFppKCRudx0zKI2ADZTM2djJlo9HYDIVdFeN45Czt l3Nt96302nLqIATlD1OnJKtSpcRjL9GGqlUDHqBo3ZJEkiEV8uZ4kpNUlep3qqh2 jqeqjedjoCqylXgXlXr7la10rHNLF7E0O926pUmScPLQZWSjqDjusrkRuc0zh5JH HULpszOxZySx5k8ScKRVVFCoAFA4AcAMR4xxU7BlR86fwMpJxNNc2F7YLDlNCelZ 2xXGwuo5zDyjrH96mY+Es1ytcxGyb1jYcqSLFg8ftljxFKjarViqtpiUfZb0/wB3 uxotzbvR4NuVDRwnyvc+IJ8UhPzM/hRaFoMep31eaT2xhm2ZsOSK834ylZJB5orK op5qcHnHMJWicC3HgJvVupQdThIyt1qJZQkFDNEmMXFRyBGzJk0RLypooIkAAAAD tER3MYRERERER1YDZada6fax2NjGkNnEgVEQBVVQKAKBwAAxTZrW4NU1/U59Z1q4 lutVuZC8ssjFndzzLE/0AUAAGFKRn5tboiwStc4ziz9Hh2fu6z6WAhc8ccf2GP0w +8/X+4Pd/ku9x8/za1fhfl/tM35MGP2oPZ/YdPn/AC/kwiMSe706lMiqNFndYYUC JcCQxpO8yaUesRIeUVNoGPJJ2Eq4EH0SrNUSmN2CcvaIVCdy/wCKP6RO3Ky22l61 cbo1qOoEGj27ToW4gf67MbexKEji0VxMwXzBG8oN2Wx/4dHqh30Y59S0iDbukvQm bVJlhcDgT/qkInvAwB4LLBEC3AuvEguGEfdY4Mx+1G35ttz/ACEWEaqTEk1XOWl0 KPaMEVHr11LFQerzDxpHoo851FH7duZMhhVREoiUtb3dj+Ln3v7iM23ezGkWm1rK 5bpJMT9o6m5YhVETyRx2sLPU+VbWaVGK9KcMuZpr9vP4Y3abZJXWO6OpXW5L+EZz CB8DYLSrHOiSPcShaDibiKNwD1ISGygFHvF/f/ZHnF3vTN7t9q66e8LVYHdbc5jj IBpW77cWaIrNDkxfEmZlDFVOWETrNX5E0rG5AyaxTRhwURU3u03pUnvr9+5PqBuZ 9e39fOJ5IbieS4CyGhzXkzsXu5xQKyszQLQp9MMrB2Nf33p2mWUe1O3FtBpm17RO lEIIkhUIK0WCJFCwx8SRQBzWvkNQRo9GfQJ1VdakpYLzVIianYlpNoucgZYtTiWl GwSsosC6zmQWAkraLfa5NQh1SM4xB/MPhKfwUDiQ2rDdo7EudXMFpbLFZaRTKhIS NMicKRKSiBE5F2aOCPk8imgMdN3b80/bsE08me71JOLImd2DNxAkKLI+duaxokk8 nNImFSLJHSpDwnu/GDh3jdNmk9Vi5F1dsrXg9fOexRMe+JFyYR7heQkacxrMXKHB m4espNerx7wVmx5e5yjhpUUX5bt3Bo0I06SzlimJUfnmRnKiRc7BQ2cqQ4iyJJlK uIbVA1yzAx9z31+Q6jFdQzwhXJoVEaoGMbZEJZMgdWjabO8RYMnXu3K2qzYW6z8B ZbRlovJ0K8oZHkUjYrNOqvpKvNj1aajis210yY/MWPsNApeQI4SR8QksrH5EvkQo 3QYMoyNk49kifaO+5NCyCPLd26nporKkhBU1KRIwMUzxGrkMr2dvLmkk6sqO7JrW LLa24Q8kgksro/SOwd41YMtBJLIpEsCSikYKlL25gyxR9GGSNFrle82suIFJ9vR+ nKRgputzUFGRtwtMLHNoRKahYGQUl6vRoyrxBW1bomMazOunMm0qMSgjDDKLEfPy yEig3dotnv3cexbST/49pUMW6yaStUvBbZagBFLHrXNamWWQZM2XLEhXKHW7dba7 g3UbDc2rzTbRHGEAZLi6DULGRgo6NrSghhiIcLmzSvmzYZnpm6rFMX06Mx3lCMnb BFwW7SuWyKO3fzDeKOqc6MXYmUk8ZHeJxRTCRF4isqudDkTOgJkxWVdPtL6mLLb+ iRbc35HdTCDyxXUdJWKEkhZlZlYlOQkUuzLQFajM0UPUb6G9Y3puq43x2nuLGCW8 Oe4sZy0KCWgDSW0iI6ASkZmikWNVfMyyFWCI/wBauv8AxFANDHh63drC+EnOmgdn FwzEBATAKbl65k3LpI2xQEBTarF9INxDt2dLVfVh24soa6Zb6jeXFOAEaRJX2M7y Zh/2UbniP+3/AOHl3t1S5A1280TTLMHixmluJKcOKRxQ5G+80sfI/JgYfUh195sy QzewVbki4oqjgFE1GNOfOS2N6gYwj4MjchK1kuUC+iYGKceRUoiVQpijtqNm/wD1 J763lG+n6URo+jPwKW7sZ3FeT3FFangREsQYVDBgaYnB2g9D3aXtpLHq+4VO5NzR 0IkvI1FrG1PeisqvHWvEGd7hkNGQowrhx/dD3LIUjk3J9aeWCalceq1dKSVj5R+8 fs29vJJtgavoz1w6pWzpWKO4K88ISiqUUBVA3IkJTz0rb61le6X/AENNeSy6deaT dXJgdi4V7eW1VZlBJKMeqUNKCQE5qmNSqA/iFdtNrL2Yt+41pp9vb7gsdctLRbiK NY2eG5hu2aByoAkQNCsi5qmNh5CokcMfn1Yvm47/AA7NWQZBilrrHB06mU3IiPKO 3KHbtr85vTUagNOGP0R9cIzMK8cOfbbHjGq47tMrmWSp8ZjA0I/jroa/HjPzSfwE q1VjpGGmmsuB2Eo0mmrk7UzI5FReeL4IJnE4FF5O2eg713Ju/T9K7d2d9fbza4Rr WKzR3uOrGwdXTp+ZOmRnMlVWIKXZlVSwYjfur7e0PRLrUt1XNta6AkRE0k7KkWVh Qqxbgc1coTiXJCgEkA1qc29G/u/80Zvl79G0654qx+xeQ7NnW592pBBPWeXWVCDT kYwIiUudAgbaiiC0HV3aUlfZ1sU7ptEM4dQJJp0w9hu2Pc3SdnWd53rOn328yucw W/nSJFAJFxIrLBdTxnhM8OWxjbyNPcSVVqj+5Hc7buqatcWWwjdWWg5svWk8ksjN WnTQq0lukg4xK4a8kXzpDCn0iynpFwyH0mDGx1VgisqG+WUoNdxbUqu3nT2l6oci A0tlR4V+4UmrKZH8o5qsc/VSbOnCTvINzlpVJtEupMLFaalR4X6d1EofqFsgjC8m zEAIi8llZBwBWytY4yZFY6R7nTwYriPq2cxKdLLnMpb3kyAku5/OiVyKsGvrqWQC Nnne5Lwz1OV15YvaNWpFlhpcG8kxSdQt6xpHXWvR7RAIrH712lBVfPmaKfXlWzZv JIAvUae1dkGLSborxzhFY6Puu626PszX7drvTHQ1YgpI8bOW+mrnktLRnrJKqD4q 6dazM7CVXbzX9i224n+19sXS2erRyCigh40kVMn0FMkd5eJHSKFpD8LZxuRAiBom Sup1Q3dzYL3PUaCaSNWx7AWOQlWdWdTLmbkZm2vudOcyDe7M6H2nfch2I5zmdy73 YwAoZJoiyZeEzRZzuZ3S0z4iXSNgSOYHjCTXeXp1FPNBZpVjBaqeCeZnIAJd2rK7 5dqe1WtCyh1juRHGLtJC8NoG6lDUZJ72Siie7YcZKIsYYkLGi0iSKisYUN+YA2AN tx7QDzBqOvPieeJK8uAwlZNJu1IoceXcoCIfEHHbXsexFzIV0asjrJFVIAl3AR5g 84fqBr2PYaqmY5vGaJMRiUjRVXScCnKW6STULFtilN+WRjy+gpMyYFAQBuhvymEP FMkUecEJvLuDoezbcrct1tWZax26EZ29hfwjT2u3MVyBiKYVe2dnavuecC1Ux2IP nmYHIPaF/rt+iPGmYqOOLAHu+cPQ9HaTj+AYHbQULHlr7Z4uAGdzk9JqspCcl3iw dikiCEe2A+2xEkliJJgBCgASP/hx7Z1/du+Nyd69fBNvFaLpluafRh5pI7mWOH2C 2jihDHmficxJLNivP+LlvrQdqbA2p2F0RwdTur9tYu1B84ht4pbS3aX2i5mnuCg5 A2h90KlSYeH+z8Xw7dW7ZcUQZ8WJKFEUZeZh60a01taxOnQNxrpZ2LJKidFA71yk q0O6BRqZFmkdQ4qgUCkKJhEA7dcLmyvThurWNFj3NHpF/Nt6NVllnELrCsNaNI0z ARrGBUtIWCIoZmYKrEd7W8O7Oh2Opto0t/ax6vIzJHEZFMjSAVCLGCXZ+VEAzEkA AkgYir7wToWv89PJZsxbJWTJDeHakkYOsPbC0iGGMkCtSCWdqZZdiWv4lXTYAq5X uqrGYtigmbpQSca8FORC8H0g3PYjZe2025sezsdO124t42upukxvLxXylWmd6XEs EjFWgtGMEBQiV43jYK1XXqJ0fuZuLWm17W7i6vdOhkYQRdQCC2K1B6agdGKRFBEt yBNPm8kbI65gCCddO6TMOWMo2aGulXiHj943kzTmNajjCnzqyac9NT7pNwe39P2M rbJKJIiQ6q+c8ribxX7mHPLNm0pPeFVuog8ZPwsjAAjLK8rr7qqPcuJUFTyFhack WURs0cQ5me0lKSAfFRqSa5okiRj5mY1z20TmgpU393zdojIqycynZptbRaJiSR9p yBG5Nihq9LoaEK3g8rdREMsmu1Qg6NSYZNWL6bekWHQUWIii0Q8SeKi5IQzgpXAV wv3JNoG3tJudw69dWunaXpyma4uZZKW1mBSryyuQbm8Y0AqaqzIAAxQTjaRcapqF 5Dpmnwz3lze/RwwIlJ7utQEijWotbNRXkPOA3EgN0EV199DnWImhXMvUFhEHi4Os tUJDGuMXypm+JmLUV3ZqrAwaBETp1yOOooss6Y+uesu1HDt+4VXWO5WgpD6x9i90 p59obXu5rTTeuwElyBFLqHgJGcnyhvzIHyMVyjLwEUcvND9P2qbP6W59fgjn1fpD LHEc8NkOeSNaULCtWlGbzZiGJLSSA7PkufZS7hlcSvW82VYxXgyIHMuooBu05jqe kcN/LuOjzClwsSXZo5SA4KJjuUB74eUOIlEQEADXsew29jnpibWJCVePXmp2Q50m MczFMBMYCCZRdwusdFsyZNU91Fl1jkRRTKJjmKUBHRZq+saZoNg+p6vMkFjGOLN7 TyVQKszMeCqoLMeABON3T9OvdVu0sdPjaW6c8FH8pJPAAeJJAA4k42qd03wjV2lN 5GdJXaeOcFSwiAuCVFguY25UzpmKg9sayZtvrQRaiO5RRWLsYYz7r7ya1rLtYbYV 7KxY5RJwNzJXhwpVYq+AXNJyIdDww/W3O1mnacgvtxss86jMUrSFKcfMTQvTxrRe dQRxwSvF/SvdraWOWm2qdEqaJUSIouGibaSFiXYQbw9fSIkSPTEnYQVyoJkAQMUi geiMgeyfoM7ud0bmHXd8LJtzacrh5JboE6hOh4npWrfSKzDgJbsxAVDqkwGUwx9R H8TLsV2XtLjbfbh49276iRkjismA0y3kAoPiL1axyKh4mKyEzEgxvJATnUnVSq0D SK9G1mutAZxUYj4aJBNzrLKGMKi7t0tsUy7t0sYTqH2Dcw9gAGwBeJ292BtXtds+ y2Ps23FtoNjHlQVzO7ElpJZXoM8srkvI9BViaBVAUc4PdTufvbvNv3UO5G/7s3e5 9SmzyMBljjRQFighSpEcEMYWOJATRVGYsxZioeYvw/yaWdRhvsrYYfp96t1GpIVA XhUZGKesJFi5WIkuCb9i4TdN11EVyqpqgmukUwgcpimEO0B1RdLEstpNYnMtrcQS QyBSVzRSoUdKqQQGUkcPm446xSFaWOZwrSRSpIpYA0kRgytxrxDAHB/+nr3lqdGo 8zMZ4sNotcipYiPmEpVazDPppWPfpu3crJzSS0rXImUeNDCVqzKJyg3SU3ImKh1F ysvuTsLf7p3dY/8A08bLQJZEMt49xczustznVTNErieWe6aEkRC4lMUFZniySydQ H1t3HG19Bupt+m61a1VwsHRgiV4oSpOSUqYo0hD0zNEmZ/IrgouUyNz/ANFHS511 UKsX+CSgqhOzUaTJ+PirRpZTGE5M2WJTcQF+yTRmZ4hC3z6cU/A7dN6oKZtiJOm6 0eZRi5Je3nrb1bttrN5svuQqR6zZ3M9rLB8QHuIEtJXheJ7sKyrI0kbAoEVjQyjo BoSS3efp+0LfOm2+4dskfC3EUdxE/SIglaeMOkpt6qXARgQSxA4I3UAkXDU9Pfu+ 8e9KzKasSs3IZdz7eSGHImcbUgmM/MFMKIBA1hmZRyWp09qDVIibJFQx1CoJAqoY iSCaEMfUP6ou4HqX3N9kS5dO7bWM5+B0y3djCCMwFxcvRTc3TAtSRlVIwzCJEzyN I6nabs1tvtRYNqAJvd33Sf6xeyqOoQaHpRLU9GEUHkUktQF2YKgXSyxR5qJQVk0B XQEomUKokJimDy7h2h8Wmuh2tqWlxLdDMtADUcP5sO9HqVvcMYjQ8+BwCzqz6N+n vqKO9c2iFJj7IICudveaiybt0H70weirZ4RIqDZ8c6m4ncICg5MYwmUMtsBdSQ7Y eoXce1wmla8WvtHWigOfpEH6EnE8PBWzLQUULzwj9ydutO1YG7sKQXh41UeVj+kv L5xQ+2vLFejPnQp1P4JeuXMPTpjJtNcLHCIsdBaO7Si5R5tkgcN4pBeQj1jB/FuU UVB2EQLt26mxoXc3ZWv6d9pW9/BDGFq6zusTJ9/OQpp7VZh8tcMrqG09f066+Fkt 5JHJoDGpcN97KKj7xAOFRhrDt6rUBDw89XztMlZEkF3bmJFVBWRjq61FFKEiHypD nQY/6Qk6fOygpyAApeNsdvsRjdeu9X74dxrPZvb1JdRJdYLaNBRZZ2zNNNVqARxx gAyvlWONJJMwjZiXPsdR212W7e6j3D7izxadplrEZriaTiY4RRY4gFBZpZJCFSKM M8sjxxqpfKuCvYewbVccIt5WTTbT9xECqHlF0wUaRSm+4JQaCpA8EyY7ALgweOYQ HYSFHk1c76a/R5sXshaQ7g19INY7mEBmunXNDaNzyWMbjyFeANy467kEqYUYxDnr 9Xfry7l+ou9uNr7YkudA7PglFso3y3F8nLPqUsbfSBuJFojfDICA4nkQTGR5JFP4 /n1NETrivVrN8bHtFPbj8+s+uKYB+DeuNH2+z/lB+1+o9w32j6PDu+fhoH4yL/vZ fnxtfZNz7P7PPz/N9v5OeAXwNgeQjxJwgscnIYo9hjfgiGwDsYOzbVIeOqjBEMAW DNvUfPxeF8TQD2yWGTS5nComOhCwEUQOV3OWSWMU7aHhmgGADKnERUUMRJIqiyia Z0ZvzuHtXtjt+TdW7btbXT4iAtOMssnNY4EBzSSmlQF90AuxVFZgb6Jt7U9z3w0r S4TNM4Oao8ir4tIeSp7SedQoBJAN1DpaxlbcZYgx1jW43hTIlhqFdYwbqzBDx0C1 UbsUgbxsVGRsc3RKlFQccRJm3UXFR0umgCixuc4gWkfeW4Lbuj3G1HdOkWZsbbUb x5uk0rzOXkYtJJJI7MWlmkLSyAURWYhRQVMtLHTW2vt+20meRZDbQrGCqKihUFFR EUABEUBF8aCpxIy4wZYaNNMvtk2bBqu7crG32TboEMssofj6KaaYiPZw07Wz+32o adcQzlGd5HUAe1mNAPnJGEfqGtwyo4LURVJJ9gAqT+DAdc0dXEas7ErldFKHWci0 cRpioAVnHLH8IrjmABOLpoUQUObm2OJRANiiABPPcXa7R7jZEmm2UQbcEduWSUVq 8qrXJTlkc+QCnlBB4sCSwmmb/u4dxJdXD00p5QrJwosZNM1aVzKPMTXiQRwB4D/y oqVZ88ULwE6m2w+cw+T5dV8xMHlLDkTiXEQyxgHEQbHY5qNRetGci6RbOSHSWQKq YElCCBgEDE32Hs0qrG7uIo+nG7BDzFeGMmhidgzKCwww9bYs2VklrO6IU8ks2bwz FU/IIt41ETPHAojtzEM7euRBTyiCJfJq8z+GT2y0vSO3t93Zvog2v6neS2tu7DjH aQZBJ0yRwM1wGWQg0IgQcPMDRb/FQ7razru+dN7K6dMybZ0q0jvrqNSQJr24z9Lq gGhFvbZWiBAo1zISD5SHMJYCfT+fhq0kXY9uKjm0lvZjZJYU/p/PoQXgwA2kP7MZ xsROXvfPrL4wU54D+x2zcsJj84SfS/pB4nH5+PDWh8YP9Ng7+yG9n+x0xC3pP6Ps pdW11LAUxqEPUotwgFzyFKIKGgKy1UDxBRTKUyR5mfcpfZmCBvEOIgdUyKAHWJz+ d8O/uyOxmgjUNwydfX7hT8JYRsOvcMOGY8+lAp+sncZRQqgklKxt1NbA7b7g7hag YNMTp6ZER17hh9HEOdByzyEe7GpqebFUqwuV9I/TBibpXoLajYugwbC5Fs6s9pkf Dc2i4y6SIJDKT0kVNPn5fS8BqiVJm1A5gRSJzHE1Kfcnu9vTvJuRtybwuM1MywW6 VW3toya9OFKmnhmkYtJIQC7tQUmfo+zdD2Tpf2XosdBQGSRuMkrAUzO38yiirU5Q KmpEqU6I0cIqHDsDYf1gAeHl0PsjU4tN1COaX3QcJHckDXETIvPDgZRs0W5qjtg5 Imqi8YuGyyRu6oismZJZM2wgPKchhAe3gOpdTdzLD7KT4Rgl3HlKkUqGXiCOfIiu Gji0CV7llmGaFuBHtB4EfPXFbDL3S9GDbHkia6STiA9fOv7EVjEvXDtynA/qqkuW QBExTF9ETg0AeXhsPbpZv6qtam0t7SLTIF1gxlRcCZumrEUziAx1qOYUzEV51HDC Zh7Iacb9bmS+lbTg+Yw9MZiK1K9XPSh5EiOtOXtwy+RO8t+N/C1H2yw/Y5Yhnce8 t8pv2DaVNryGBB+LEaHNmTSeOCEU9Ei6hAEB7B5DiXcPMbbXTX6WtuNsH0/bV25O hjuxpaXEqngyy3rPeSK36SPOUIPLLTwxzO+qnWV7heoPde5YWEto2qPbxMOKtFZI llGyniMrpbhwRzzV5nHstqL5Vf32pBDUB7cR3Ogt/VxlC2ph/GfvtfftJR44DO33 P5uPityIVMw+Jw3Hj28NfG1MBeePse22ZwKYQn56uvpj99es94fqfoceHm4aKPtS T/S1+bCq/wCmYPZ/s2X5/bixd7t3/Cvir+7n7oJ/dr939xH9J/6/f8a/23m1xPeq r/8AoHX/AO+v3o/3l9ZzP7t/wH+5fsMuOxrtJ/8Al2mf3f8AUD909zkPrv8Aiv8A eP2lcFVrXcT/ABdM/Y8hgXV+Zw+kHwT+T9oNK7T/AHhz+bDbal7xxy8n/dhftPcH jx4j82l1Y+5/afP933DCV/P/ADPupgXmVfrHPHvq8ePHy+fSosufzY3V5D72B7ZE 7y3438LSysuWBhyxC+8fVu/rO4r9T9d3D/Vfzn0fPpc7f/vS1/d/3iP6/wCo99fr v2X6z9CuNPVf7ruf3j93k+o+v9w/U/tf1f6dMQHHvj9q734Xe4/hef49dWFv9QnL 3B7nu8h7v6Ps+SmOXW4+ufl7x973uZ979L2/Lj6PH/XPh+1oX/OwAP8Aw8fP9819 /wA7Hv8Ay8eFO6P2r8bhrFuX52M097+zxy/8/v61vw88b34OWP/Z ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_info.png Content-Type: image/png; name=ico_info.png Content-Location: http://img.mail.ru/r/blogs/ico_info.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASRJREFUeNpi/P//PwMjIyPD/72J/xn+ /WVg+PsHgf/9wcpnjDvGCNIHAiwgIic39z+D0yQGhs8dDAx/fgEV/YbSQPznN5SG ip+8w8DMMQGkmxGklwlETJk8mZFhZzRhzSAa5AokwAR3gftSTM21MxgYGuahiv/F YgDYBZuDMW2GARRxVAMQYeALDIOnhajOrgzHNBSbASAXTHa4+5/BWBGhuWUJQlWe G0IcZxgEbUUNsNJAhCpkcZxhsMIZMxZQwgAmjssFEXsxYwHugt8IQ/7hcsFia1TN k3YhVM05jdMFiFiIBcbCBX9EaKdbodqMLx0AgQPDtjTsKQ8jZWJxARAcYPCaxcAw QxszE2HLUEiAEZYbQQCaSYgCf77nM8INoAQABBgAoQYpcmfBCdIAAAAASUVORK5C YII= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_my.png Content-Type: image/png; name=ico_my.png Content-Location: http://img.mail.ru/r/blogs/ico_my.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArJJREFUeNp8UktME1EUPW/a6U9op5VS gkAblAqRSDXRsBCEGFz56cqwMAESvwu0JOqGRHChSxuDKzd0pwsDmBjdaECNC4kJ BtQgQTFEQaFf+qFT2nneNkAR0Juc3JuZ+879HYYNdsNV7K054GwXNWopEooitBgG eV8ykezqm1oKYxtTrwWdTmOvxWb2lDpKIC+nkMkoSMkpiuV2OSk7KKV5OwJhQ9ym 1aoQDUcQjyWQXkmDc4CpBDDGmqiA9N8OyBwH661oPGvH/Jc4wj+XEfihwdg7iv08 +99FGNlMwNaC+ydKBjuuHHHry0yAQh8SHDyRAJIBDA4XornTe8uyqyKbOkIdjWwh WBmo9QgF5V62w0qD0WTpNGCqxSv5DF7PFCJDTcSSHJF4Bof36MIXWqR7RNSbJ3hc I0E0zAi6IgkqLZjzHLrf1GOi+CFE2yKVUkMXt6PwVyO+fTZDxxJ4cNHmyxEo3bn5 2hJM74Zzn0O/+xBuh67BV30KUfOnLYurHvdCO3oJRiEAgd8U+pkgjBE8OkV2BIO1 WKrrw5PE0LaPy/1u2OfaoTfo8D0ognGvkW9MmJuWMXU5iPPmGkR0s389VoVcsL8c oxODNAJUqGJ0xp3GMB16/cY2k4JhzQRiwiyEDMBpn5zlVePXkhcJGqCqWEUE5oIu iKr+9SqEiowWej/thlSiiKs+qxg1qdmC3JkbyccWViCwk5M+mAo6cp0UkQYIDdZ5 lM22whAADP41SNAv9OQI9pMcGuzA+Jyc1wGfOJrV+1VCEzQlrufKHVyfOE2X/YiU wY2U0QujwYHjVMNJ3Tx6G0VbpTpPsNk4566n0wvDd9+3SHVVA9BaKqGluUMxBaOT SXj2imit1nT8k2CVxPF7mfc8+/rCHdEfk5jAUKrmaLKyIauO3SIlfvgjwACxCvP+ 0x/z0AAAAABJRU5ErkJggg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_foto.png Content-Type: image/png; name=ico_foto.png Content-Location: http://img.mail.ru/r/blogs/ico_foto.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArdJREFUeNp8U21IU2EYPfduWoP8rH2I kan90IUgpEtpMtPUcv4IIuiDQkKCwD9FgTD8mKQ/JCIrkEpBstaPov5GQiVa8yOz tTVnZeDUdrfpyN05nXO7vffmbGl14PA+957zPpz3fe6luroNiMbSkh8ulwsMw2B+ 3oNQKIT/gfIsLEFEU6DXGKnbb3WcYhinxuVygmV9vNdK2P3siWHhjwZuz6Kwoaqq cv1lTc15NUVRr8tKi0UpKXIQGeO2Cejqm18S+YjT6VjhfW/7X4EiR6gldTXhHsKE SJOMjHQUqPLWk4HjcO16O4aG30UsbsLTlP5qWyArKztWqVRCKpUiJkYsbBg0GjEy MkyeY+Byu2AyfcSVyxdRUXYIJB3M5k9o0LdYxWNjY7HxiTsw5zFiyNgPiUSCtN1p CAUDqCgvRWZmBsKhMGwTn/HA8IjcxyJpugVmixUyeYpSzGfx+/3wer0CWZZFYUEe Kg+Xo7GxEX19fRCJRCgpKUFLcxPudnbBPuP6dYEkCb1xLAq5DJqiA8jJ3YcOeya2 XXoBc8VT3HwvgWp/Ic5Vn0VyUuK6X5SlzGlK3bkL4XAYjGMWxZoiGB72oJ9WQ31B h1ZNPCbpZNipvQgy0wjMjiA/XwXruA2rq8HNCeQyGXp7e0FnH8eANYD6YQgrvbKM uPSDgqaQS+FjvQLFGxvwSXjEs9/hnYvDwOBWYXOCzwnJyqKgcWSka77wpgTTMzPQ arUQmXqg8ExC6v4irNtZB3xfnwvalH06Yn9MEzDRDQbeDKKurg5Jy6MIjt5DguMD JE4LfpjuQ0HboNPpYLFYO4n1BP8h4eixk7ktbbfv6FtvNPDR1iKeIeNcJWZOpVJx arWa0+v1HBk3kbjayDGEH5EvohkBqcsIv3G/MUWojdIFUtGb/oFUftyE9r+JPwUY AOyvSo8nUqT4AAAAAElFTkSuQmCC ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_video.png Content-Type: image/png; name=ico_video.png Content-Location: http://img.mail.ru/r/blogs/ico_video.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnNJREFUeNqkU01oE1EQ/vZ/k91sNhpT mzQQvYiKUmgrVA/NSVAQioceeioIggchRxWkvSmlkIoYT6LePHioFxEEf7BFRCO1 CmKLpViaNDFNk+xms5u/9e3GeqjaSx98zJt575s382aGsm0bu1ksRVH/PbwxOTVE xDBBnKB323HJsbH/IMS3IEkyFEVBOBRCtHs/FMkDkedRKFUwm/6o5vO5CfY3cZyI BIlGNU0Tx44cRSwaRUCR4Ze8rvNGs4lsYRPrBEVNR6vVcqOgCDkpy3LiQCyG27eS oH0qJK8XVy5eQHBfCMWyhgwhZfMFGIaBummBpmzoenmFFzg3hcRAfx/mZufgvP7q 2SPcyQF3p67heOwgDL2KWq2GZqPhRkLRNDieJXorMX79apnlOA6KzwfLMt0LyWUd PMmdCoaRy2T//A8niuAEEZJPAdUyiFNj3rHTAVWFU4m+/gGI5NL71E0sPn2MypcP 8EgS/HuD2NMdgUcJgOZEtNs2BNHjcMfciO7df2ifOjkIjYS6uPQdc29eg2FZhCMR iF4/Mpn8zn1gw3a9tghCXV04feYc1tZWUSlvwjKrnUuXRzFSS2CeG8ZbfqxTlUYJ wVQKtE2Ihy8d6nwQScVBvW65+ujIeUTCXRisP0Bv84krnfUzN4PVlWl3T1uWhXeT abRJXWlCZhgG27vTefUbM+RK5+XlpQlolflOdJqulz4tLKg9PVEIggCWoV1HW4th KKQLZ5F2FGMSNW0cuvaD9MRnYjgBpw/ixeLGNEFcUfyQZBk8adcqSf/5i5dYz238 9XGB7mBn85WkvcPgOMMyUyxZYztVgdrtOP8SYADlDfLJBdT3TQAAAABJRU5ErkJg gg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_add_friend.png Content-Type: image/png; name=ico_add_friend.png Content-Location: http://img.mail.ru/r/blogs/ico_add_friend.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbNJREFUeNqEUk1LAlEUPTOOiYySWFoE USHoIioJWhW4aBeELl2VLdqG9A9at6hfUBJB0SZbtc0fUOYi2hi4MKQwsfmoxo+Z 7oiDzozZhfMu7z3Oefeedxl0w+PxxAOBQIrjuFlZlkF4lCTpuN1uFzAkGH3xer3x SCSSDYfD0DQNoiiiUqmgWCxCEIQEnd38JcDqC8/z6WAwCHodDMOAZVm43W74/X44 nc7UsAo4fVFVNbq22sTebhW8KgGSDPFNxP5hA2evSPzbAlWQl0orUTRbwE8TaFCW v4CPdzg3PkutVmtuaAtkWArlMlCvk4ACtEmXdQEaCyIPbYHt5gKq1QxqNeCLBFQH 4OApaxm6y2nmiNk8qCd3YsL5t881/4yRJQHM5BiU/ASU3IyvnnR1CMzTNLVG7zUc d0brHQEiH1FOa4obPw/LBFOFiS4MMqA4bL+wSXix9jZ6cRIyHRjkhl3ggLA+wJ9Q X9k9so7rBc3Y6wJXhCphyiKwPZBs2XO+y1OyHbfkxbg+EoaxtrIHkKGwPTetof+X aeKyiz3y1j1jnQP7iFrC9PKAQfo/+sruj18BBgA6vsNKtuwC0gAAAABJRU5ErkJg gg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=i_favorite.gif Content-Type: image/gif; name=i_favorite.gif Content-Location: http://img.mail.ru/mail/ru/images/blogs/i_favorite.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAPcAAAAAACtwBTSRBTywBV+VP0bRAlbkFGzmMXnjRobtU5jvbpvq d5y6jbrUq6rxirbso873vdv5yu356AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQABAAAAhrAP8JHEiwoMGDEQ4alKBA gUKCDA84fChQAQIDCyj+c5DAQAEEFCFcLDCAQEEJAyWMFMCgIAQHCf8pMDBAQIOC CxI0/AeBpk2DCQ4IfXCg5s2DDgqQFBCg5cMHNQOY1NggQACUGv8xcJo1a0AAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_subscribe.png Content-Type: image/png; name=ico_subscribe.png Content-Location: http://img.mail.ru/r/blogs/ico_subscribe.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAapJREFUeNpiYEACPzQZ/gNxPxDzMxAJ mLCIFQDxAgZyANQF/qToYQSTi23zgWTAj7bDDhxVtrjUPgC7LvbwRlQDFtvu95a2 dMhRD2JwdLFg+H/5J1ji0deXDMarEhh0nwoxqL3kZ/jM8ZthndH9D0ADBJENYAFi hwkmeXCBJ99eg+kLFy4wRJ1WgYsL/ONh2O9aINAwYUb9wdtnHUD6gHgDyACGx19f gRXJIrFfPn0B18zJycmQnJXGELuoheHii9sNDKLMDAzswPB/8jsAYsC3V3DFMPa7 Lx9QNa8Fama5z8BgyIlw/5PfDCguQGa/ff4aVTMHMAxFWTFCFuqCl2DOxLI0OJuD nRlNMwuqzq//kA2A2PpYHpgAoWyNjwy4Nb/+A4zUXyA/QsLg6ocHDHysXHD5f3/+ MZz8eJ/hrehfVM0gW1/8Bhrw9wKQl8Aw9exFkGzAw68vEhgZGAM4mdkZWJlYGAQ+ sDC8ZfwODGl2iG2fgAa9A+K/4MR0AJygpp79iEiJkNQoDzYVhF//UGC4+xvoROYL UA0gfAGmiRhQD8Vk5UaSAECAAQCRlLDMrCNXSQAAAABJRU5ErkJggg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_sms_leader.png Content-Type: image/png; name=ico_sms_leader.png Content-Location: http://img.mail.ru/r/blogs/ico_sms_leader.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeNJREFUeNqEUs9LG0EYfZMmVKvogqK0 IInQQ4+99NJLIx5KPRWEQi9dBW8ezJ8g+A/UU291pfQoKKW0N/XgsdD2JFIhQmxt aWuiSXZndzbTN5tE46YbP/gYvpn33vdrhNYaxoQQWHp7bAeBcnxPwZcBvXlKeRmr ICzsvZpabfPS6DCCPmcyady5OwK37tMl3FrrpP8o/Y0wnRzRWYGxF6v7emJyrIts BI+PfuOT8zgCtnkpxEwyQ+W01kU+P3NNCztxfDp+EUi1Wfx2Um7336+r1q+zG1HM +WzG8VEp7XK63j4+t/X7Z2v/fWvxUuhlSi1DyTm9MZNNgiQK6HezNtIih+FbFPIL SbiLGejthSxClSP4Pt3iwgvIjQJ9zFEqzem1B0aozCHtIOQJfLk6xEYjTwEHGRJu jzH2AasP8M6B7LCFsi7gj8c1Kb6FDhnzV1oQ06/XTb/wXGDoJjA60CTLKtDfaLqU QBg4YuloPvEj6Y0nNjQz3Bs3v4Ii1abQ1xPu2L8gJ34kMfthPapC1S/JpgpFsSBw rv1I+s3DR0iFQLkCHP4kkX0PMRa+qSBHyG7vNRpQndn3vxfhcSaufIpSrYiq6T8S 6F0Bh2Rxysts8qVYPKi0brf0yqDNNebj8H8CDADY8Dnuf722ngAAAABJRU5ErkJg gg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_m.gif Content-Type: image/gif; name=ico_m.gif Content-Location: http://img.mail.ru/mail/ru/images/agent/ico_m.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAOZlAP7mIP7lHPzsTVZIHP3BEP3XBP7hEP26Ov7OBv7YA/zqPvzp Mf/Sjf3qN/3qNPy0KfOrH/3qM4xXH85mJ/7EDp5MIapiOvy1KeWnHf3HDKZHItdq JsdfLf6+SsJsSf7MCP3uYN2TZ7JVJfy0FZdPJf7lHq9SI+6+FPCreK+AJf2/EZNR Hf3qLv7aA/7UA9uXH8qDYP7nI/XBGv7MgahMI/7UBP7hLb5ZJtJmJ5hIIP3PBqhR I/3OB4pDHP3uZbpYJv7iEP6/SptKIf3sV8dhJ5VAH7+EIapkQ9ixHr5lSsBcJ/7S A7t1If3AEM1iJ86mIOShHf/jFIFIG/7jEv7kHP7bBeJ4LoROHP7nIf7EWv/dqIlG HNtyLv26KJ1MIf3GDfzsR/7SBbFoIf3qL////////wAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAGUALAAAAAAQABAAAAeegGWCg4SFhoeIZShWGzhO IYlcE0RKPyI0GoccNzsVXkI5PVtFhTAmRk8pElJXSCcrR4QWGC1YEQ0NETFVFCSE YjxTCwoCAgoLUTpMhC9hAGQDPmPQAC5QhCNLz2Qg02QlNV2EDx82Y2NgQ+dACFmE MyoFVCwODmMBCQRahQ9fBQYBAhhIkKHDoQtNZCTxgIBAkEQMDkCAcIBBoouCAgEA Ow== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=_avatar.jpeg Content-Type: image/jpeg; name=_avatar.jpeg Content-Location: http://avt.foto.mail.ru/mail/v.linjov/_avatar Content-Transfer-Encoding: Base64 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 ZIXLcfOE1mlFHGjLkqpPPJGs1o6SPCu9KPCv/9k= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_f.gif Content-Type: image/gif; name=ico_f.gif Content-Location: http://img.mail.ru/mail/ru/images/agent/ico_f.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAPeDAP/+/f3qL/3qNvJjIvaVHu1WI/J0IfFtIvBgI/3GDfSKIP/7 +f7z7PFfIutLJPebHf3FSk+EQfF4IfN0P/WFT//9+vefHfSJIP7cBPN8If7nIf3u YfJ8If7nI/nGJ/7o0/N3IfJ0IvW3oP7SA/FoIv/jtfatJ/3qM/3zkvadO+1RJO9i I/7MB/esIP7mIP/16PR4P/3DSvi4JPWHIO1UJP7ykf/+/vODIP3XBPJhIveylPmy UP7jtfqqNP3tWv/47/rBjvqxMfqwMe5hQ+tNJPzqP//69fzUHfaLH/JlIvSAIPN7 IfJnIvy5FPzsSO5YI/avlP3gZvWPH/zsTPvIqPaWPP3qMfR6P/SDIPOEIP3BTPew I/GKZP7nyvSDUPJ9If3ZwvzbyvabY/amIv7kGO9cI/7lHP7hLfBkIv7ZAve7o/7u 4/q5l/7jEvmrgPJxIvrNLf/59PzqO/3Jfu9bI/BrIv3qLv3DD/aQH/SOUPfBL/ak ZPzsSvOJIPmzW+k+JexdNe1iQ////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAIMALAAAAAAQABAAAAjeAAcJHEiwoMFBAF50MXJw oI05PR4QSAEkzsEPOyTiuTAjyx4ABcFUISBFgckMHCTkWTNwgZgLfW58kdFhjAED dSaAHMRGApYMW+AIEHAixAESZcIIhGEARAs7cvhMKaInCZonUAYxuPLmgB9Bgjag AGsCQYEhg9wMOLAkiqAIG2q89UCnQCARFAYwsXAmQAAnPvweWVHAwZ8GAwY0wWEm wFArGjBYoEEEEIUGOZAkSNPGhQYyGFgoUeGACwMvE6houZMAAYIRCSD80KEGJIAF gyrwiCEkCIQSFRoKHxgQADs= ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=not-spam.js Content-Type: application/x-javascript; name=not-spam.js Content-Location: http://img3.imgsmail.ru/mail/ru/images/js/blogs/not-spam.js Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gZ2V0UG9zaXRpb24ob2Zmc2V0VHJhaWwsIGlUb3AsIGlMZWZ0KXsK ICAgIHZhciBvZmZzZXRMZWZ0ID0gKHR5cGVvZihpTGVmdCkgIT0gJ3VuZGVmaW5l ZCcgJiYgaUxlZnQgIT0gbnVsbCkgPyBpTGVmdCA6IDA7CiAgICB2YXIgb2Zmc2V0 VG9wID0gKHR5cGVvZihpVG9wKSAhPSAndW5kZWZpbmVkJyAmJiBpVG9wICE9IG51 bGwpID8gaVRvcCA6IC0xMTsKICAgIHdoaWxlIChvZmZzZXRUcmFpbCkgewogICAg ICAgIG9mZnNldExlZnQgKz0gb2Zmc2V0VHJhaWwub2Zmc2V0TGVmdDsKICAgICAg ICBvZmZzZXRUb3AgKz0gb2Zmc2V0VHJhaWwub2Zmc2V0VG9wOwogICAgICAgIG9m ZnNldFRyYWlsID0gb2Zmc2V0VHJhaWwub2Zmc2V0UGFyZW50OwogICAgfQogICAg cmV0dXJuIHsKICAgICAgICBsZWZ0OiBvZmZzZXRMZWZ0LAogICAgICAgIHRvcDog b2Zmc2V0VG9wCiAgICB9Cn0KdmFyIENhcHRjaGEgPSAoZnVuY3Rpb24oKXsKICAg IHZhciBfY2Zvcm0gPSBmdW5jdGlvbihpZCkgewoJCXJldHVybiAnPGRpdiBzdHls ZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9teS5tYWlsLnJ1L2NnaS1i aW4vbXkvZ2V0X2ltYWdlP2lkPScgKyBpZCArICcpOyIgY2xhc3M9ImNhcGNoYU5l d0xlZnQiPjxpIGNsYXNzPSJtZl9zcEljbyIgb25jbGljaz0icmV0dXJuIENhcHRj aGEuaGlkZSgpOyI+PC9pPsLg+OAg5+Dv6PH8IOH76+Ag8+Tg6+Xt4CDq4Oog8e/g 7C4gxfHr6CDi+yDx9+jy4OXy5Swg9/LuIP3y7iDv8O7o5+746+4g7vjo4e737e4s IPHu7uH56PLlIO3g7C4gwuLl5Ojy5SD36PHr7iwg6Ofu4fDg5uXt7e7lIO3gIOrg 8PLo7erlOjxkaXYgY2xhc3M9Im10NSI+PGZvcm0gb25zdWJtaXQ9InJldHVybiBD YXB0Y2hhLnN1Ym1pdCh0aGlzKTsiPjxpbnB1dCBuYW1lPSJjYXB0Y2hhX3ZhbHVl IiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY2FwY2hhTmV3SW5wIi8+PGlucHV0IHR5cGU9 InN1Ym1pdCIgdmFsdWU9Is7KIiBuYW1lPSJidG5fb2siLz48L2Rpdj48L2Rpdj4n OwogICAgfTsKICAgIHJldHVybiB7CgkJc2hvdzogZnVuY3Rpb24gKGVsLCBoYW5k bGVyLCB2YXJzKSB7CgkJCWlmKCF2YXJzKSB2YXJzID0ge307CgkJCWlmKHZhcnMu bGVmdCA9PSB1bmRlZmluZWQgfHwgdmFycy50b3AgPT0gdW5kZWZpbmVkKSB7CgkJ CQlwID0gZ2V0UG9zaXRpb24oZWwpOwoJCQkJdmFycy5sZWZ0ID0gcC5sZWZ0OwoJ CQkJdmFycy50b3AgPSBwLnRvcDsKCQkJfQoJCQlpZih2YXJzLmxlZnRFeCkgdmFy cy5sZWZ0ICs9IHZhcnMubGVmdEV4OwoJCQlpZih2YXJzLnRvcEV4KSB2YXJzLnRv cCArPSB2YXJzLnRvcEV4OwogICAgICAgIAl2YXIgZCA9IG5ldyBFbGVtZW50KCdk aXYnKTsKICAgICAgICAJJCgkKCdib29zdGVyQ2FudmFzJykgfHwgZG9jdW1lbnQu Ym9keSkuYXBwZW5kQ2hpbGQoZCk7CiAgICAgICAgCWQuaW5uZXJIVE1MID0gX2Nm b3JtKHZhcnMuSUQpOwogICAgICAgIAl0aGlzLmNhcHRjaGEgPSAkKGQuZmlyc3RD aGlsZCk7CgkJCXRoaXMuY2FwdGNoYS5zdHlsZS5sZWZ0ID0gdmFycy5sZWZ0ICsg InB4IjsKCQkJdGhpcy5jYXB0Y2hhLnN0eWxlLnRvcCA9IHZhcnMudG9wICsgInB4 IjsKCQkJdGhpcy5jYXB0Y2hhLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsK CQkJaWYodmFycy5wb3NpdGlvbikgdGhpcy5jYXB0Y2hhLnN0eWxlLnBvc2l0aW9u ID0gdmFycy5wb3NpdGlvbjsKCQkJdGhpcy5oYW5kbGVyID0gaGFuZGxlcjsKCQkJ dGhpcy5lbCA9IGVsOwoJCQl0aGlzLklEID0gdmFycy5JRDsKCQkJdGhpcy5jYXB0 Y2hhLnNob3coKTsKCQkJdGhpcy5oaWRlX2NhbGxiYWNrID0gKHR5cGVvZiB2YXJz LmNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSA/IHZhcnMuY2FsbGJhY2sgOiBmYWxz ZTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0sCgkJc3VibWl0OiBmdW5jdGlvbihmb3Jt KSB7CgkJCWlmKCFmb3JtLmNhcHRjaGFfdmFsdWUudmFsdWUpIHsKCQkJCWFsZXJ0 KCfC4uXk6PLlIPfo8evuLCDo5+7h8ODm5e3t7uUg7eAg6uDw8ujt6uUuJyk7CgkJ CX0gZWxzZSB7CgkJCQkvLyQodGhpcy5jYXB0Y2hhLnBhcmVudE5vZGUpLnJlbW92 ZSgpOwoJCQkJdGhpcy5oYW5kbGVyKHRoaXMuSUQsIGZvcm0uY2FwdGNoYV92YWx1 ZS52YWx1ZSwgdGhpcy5lbCk7CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0sCgkJ aGlkZTogZnVuY3Rpb24oKSB7CgkJCWlmKHRoaXMuY2FwdGNoYSkge3RoaXMuY2Fw dGNoYS5oaWRlKCk7aWYgKHRoaXMuaGlkZV9jYWxsYmFjaykge3RoaXMuaGlkZV9j YWxsYmFjaygpfX07CgkJCXJldHVybiBmYWxzZTsKCQl9CiAgICB9Owp9KSgpOwoK Q29tbW9uID0ge307CkNvbW1vbi5DbGllbnRTZXJ2ZXIgPSB7CglnZXQ6IGZ1bmN0 aW9uKGZ1bmNfbmFtZSwgZGF0YSwgY2FsbGJhY2ssIHVybCkgewoJCXRoaXMuc2Vu ZENvbW1hbmQoZnVuY19uYW1lLCBkYXRhLCBjYWxsYmFjaywgdXJsLCAnZ2V0Jyk7 Cgl9LAoJcG9zdDogZnVuY3Rpb24oZnVuY19uYW1lLCBkYXRhLCBjYWxsYmFjaywg dXJsKSB7CgkJdGhpcy5zZW5kQ29tbWFuZChmdW5jX25hbWUsIGRhdGEsIGNhbGxi YWNrLCB1cmwsICdwb3N0Jyk7Cgl9LAoJc2VuZENvbW1hbmQ6IGZ1bmN0aW9uKGZ1 bmNfbmFtZSwgZGF0YSwgY2FsbGJhY2ssIHVybCwgbWV0aG9kKSB7CgkJdXJsID0g dXJsIHx8ICcvbXkvYWpheCc7CgkJdmFyIHN1Y2Nlc3MgPSBmYWxzZSwgZXJyb3Ig PSBmYWxzZTsKCQlpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7 CgkJCWNhbGxiYWNrID0gewoJCQkJc3VjY2VzczogY2FsbGJhY2sKCQkJfQoJCX0g ZWxzZSBpZiAoIWNhbGxiYWNrKSB7CgkJCWNhbGxiYWNrID0ge307CgkJfQoJCW5l dyBBamF4LlJlcXVlc3QodXJsLCB7CgkJCW1ldGhvZDogbWV0aG9kLAoJCQlwYXJh bWV0ZXJzOiB7CgkJCQlhamF4X2NhbGw6IDEsCgkJCQlmdW5jX25hbWU6IGZ1bmNf bmFtZSwKCQkJCWRhdGE6IGRhdGEudG9KU09OKCkKCQkJfSwKCQkJb25TdWNjZXNz OiBjYWxsYmFjay5zdWNjZXNzID8gZnVuY3Rpb24ocmVzcG9uc2UpewoJCQkJdmFy IGRhdGEgPSByZXNwb25zZS5yZXNwb25zZVRleHQuZXZhbEpTT04odHJ1ZSk7CgkJ CQlpZiAoZGF0YVsxXSA9PT0gJ09LJykgewoJCQkJCWRhdGEuc3BsaWNlKDAsIDIp OwoJCQkJCWNhbGxiYWNrLnN1Y2Nlc3MoZGF0YSwgcmVzcG9uc2UpOwoJCQkJfSBl bHNlIGlmIChjYWxsYmFjay5lcnJvcikgewoJCQkJCWNhbGxiYWNrLmVycm9yKCk7 IAoJCQkJfQoJCQl9IDogbnVsbCwKCQkJb25FcnJvcjogY2FsbGJhY2suZXJyb3Ig PyBjYWxsYmFjay5lcnJvciA6IG51bGwKCQl9KTsKCX0KfTsKZnVuY3Rpb24gbm90 U3BhbShwb3N0X2lkLCBjYXB0Y2hhX2lkLCBjYXB0Y2hhX3VzZXJfdmFsdWUpIHsK CUNhcHRjaGEuaGlkZSgpOwoJQ29tbW9uLkNsaWVudFNlcnZlci5wb3N0KCdtcmFz Lm5vdF9zcGFtJywKCQlbQWN0aXZlRW1haWwsICQod2luZG93LmNhcHRjaGFFbCku aGFzQ2xhc3NOYW1lKCdtaWNybycpID8gNyA6IDMsIHBvc3RfaWQsICcnLCBjYXB0 Y2hhX2lkLCBjYXB0Y2hhX3VzZXJfdmFsdWVdLAoJCWZ1bmN0aW9uKGRhdGEsIHJl c3BvbnNlKSB7CgkJCXZhciBzdGF0dXMgPSBkYXRhWzBdOwoJCQl2YXIgZWwgPSAk KHdpbmRvdy5jYXB0Y2hhRWwpLAoJCQkJcCA9IGdldFBvc2l0aW9uKGVsKTsKCQkJ aWYgKHN0YXR1cyA9PT0gJ2NhcHRjaGEnKSB7CgkJCQlDYXB0Y2hhLnNob3coZWws IGZ1bmN0aW9uKGlkLCB2YWx1ZSkgewoJCQkJICAgIG5vdFNwYW0ocG9zdF9pZCwg aWQsIHZhbHVlKTsKCQkJCX0uYmluZCh0aGlzKSwgeyJJRCI6IGRhdGFbMV0sICJ0 b3AiOiBwLnRvcCArIDMwLCAibGVmdCI6IHAubGVmdH0pOwoJCQkJcmV0dXJuOwoJ CQl9IGVsc2UgewoJCQkJdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo J2RpdicpOwoJCQkJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOwoJCQkJ ZGl2LmlubmVySFRNTCA9ICfC4Pgg5+Dv8O7xIO/w6O3/8iwg8e/g8ejh7i4nOwoJ CQkJZGl2LnN0eWxlLmNzc1RleHQgPSAnYmFja2dyb3VuZDogI2ZmZjsgcG9zaXRp b246IGFic29sdXRlOyBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOyBjb2xvcjog Izk5OTk5OSAhaW1wb3J0YW50OyBmb250LXNpemU6IDExcHg7IHRvcDogJyArIHAu dG9wICsgJ3B4OyBsZWZ0OiAnICsgcC5sZWZ0ICsgJ3B4OyBwYWRkaW5nOiA1cHg7 IGZvbnQtZmFtaWx5OiBUYWhvbWE7JzsKCQkJCWRpdiA9ICQoZGl2KTsKCQkJCWRp di5vYnNlcnZlKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKCQkJCQllLmZpbmRFbGVt ZW50KCdkaXYnKS5yZW1vdmUoKTsKCQkJCX0pOwoJCQkJc2V0VGltZW91dChmdW5j dGlvbihlbCkgewoJCQkJCXJldHVybiBmdW5jdGlvbigpIHsKCQkJCQkJZGl2LnJl bW92ZSgpOwoJCQkJCX07CgkJCQl9KGRpdiksIDQwMDApOwoJCQkJJChlbCkucmVt b3ZlKCk7CgkJCX0KCQl9LmJpbmQodGhpcyksCgkJJy9jZ2ktYmluL215L2FqYXgn CgkpOwp9Cg== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=ico_comments.png Content-Type: image/png; name=ico_comments.png Content-Location: http://img.mail.ru/r/blogs/ico_comments.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAILSURBVHja Yvz//z8DJYARmSPQ+0f+/79/Bf///nFg+PfHAEgzMPz9zQCi///9fYHhz58DXzqV CzEMEOj7x8/w//8EPrZ/CRGaDAzuyowMpjJMDL//MUAw0JFH7/9g2HPtE8Omc+8Y Pn/9ueDbRINEsAFQzQcitRgMWh0YGbhYGRl+Ab2FrPkXmP0fzH737S9D/9YnDDvO vLzwfbqFIQtQcwNI8xR3iI34NIPE2NmYGYoD5Bn+/P5lwJ5yoJ/p/7+/CSCbidH8 CyoOEkv0VGAAmpLABAwgAULORtcM4rOxsYACV4AJGMoP7n34S5JmEP/Zu28MwJh6 AHLBgvxNn0nSDOJPXXGR4f+/PwvA0chT+3S+hghjQn+wMIMoHwtBm0Gar91+veDP yqBEeELiLr+bD0wsDfaqHAL6shwMiuIcDMJ8bAxC/GxwzZsOP2BYsPHaB6DNDX9W BE3ESIlchVf4gZIB4JT457eBs76gQV6gCtwlDdNPMFy789rhz4rAgzA9TMgGfOvX +fh9osHCH1NMEoEGOew+/ezDraef4V6SEedm+P/nVwCyHiZcmeTnLNuPwFB2KOo/ /mHlzlsMH7/9YnC0VmTgYmNMYPJbKI81M2EDrFGb5EFhw8nKmKCqKMjw5vVHhseP 31xgAHrz/46Mj4zEZlvmwKXyoLABGmYA1AzKqQ8YduckAgQYAIWJkzMhZ+aSAAAA AElFTkSuQmCC ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=d227015.gif Content-Type: image/gif; name=d227015.gif Content-Location: http://rs.mail.ru/d227015.gif?rnd=370410217&ts=1279519437 Content-Transfer-Encoding: Base64 R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=d292152.gif Content-Type: image/gif; name=d292152.gif Content-Location: http://rs.mail.ru/d292152.gif?rnd=167530242&ts=1279519437 Content-Transfer-Encoding: Base64 R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw== ------------iAFZvHdFZAFgV7ziFcVhyI Content-Disposition: inline; filename=mrim-status2.js Content-Type: application/x-javascript; charset=windows-1251; name=mrim-status2.js Content-Location: http://img3.imgsmail.ru/mail/ru/images/js/myjs/mrim-status2.js Content-Transfer-Encoding: Base64 dmFyIE1SSU0gPSAoZnVuY3Rpb24oKXsKCXZhciBfdXJsID0gJ2h0dHA6Ly9zdGF0 dXMubWFpbC5ydS9iYXRjaC5qcz8nOwoJcmV0dXJuIHsKCQlmZXRjaDogZnVuY3Rp b24oYyl7CgkJICAgIHZhciBsaW5rcyA9IChjLnRhZ05hbWUgPyBjIDogZG9jdW1l bnQuYm9keSkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2knKTsKCQkgICAgdmFyIG1y aW0gPSB7J2VsJzpbXSwnZW0nOltdLCd0JzpbXX0sIG1haWwgPSBudWxsOwoJCSAg ICBmb3IodmFyIGkgPSAwO2kgPCBsaW5rcy5sZW5ndGg7aSsrKSB7CgkJCQltYWls ID0gJChsaW5rc1tpXSkucmVhZEF0dHJpYnV0ZSgnZW1haWwnKTsKCQkJCWlmKCFt YWlsKSBjb250aW51ZTsKCQkJCW1yaW0uZWwucHVzaChsaW5rc1tpXSk7CgkJCQlt cmltLmVtLnB1c2gobWFpbCk7CgkJCQltcmltLnQucHVzaChsaW5rc1tpXS5jbGFz c05hbWUubWF0Y2goJ3Nwci1tcmltLTEzJykgPyAnMTMnIDogJzknKTsKCQkgICAg fQoJCQlsaW5rcyA9IChjLnRhZ05hbWUgPyBjIDogZG9jdW1lbnQuYm9keSkuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTsKCQkgICAgZm9yKHZhciBpID0gMDtpIDwg bGlua3MubGVuZ3RoO2krKykgewoJCQkJbWFpbCA9ICQobGlua3NbaV0pLnJlYWRB dHRyaWJ1dGUoJ2VtYWlsJyk7CgkJCQlpZighbWFpbCkgY29udGludWU7CgkJCQlt cmltLmVsLnB1c2gobGlua3NbaV0pOwoJCQkJbXJpbS5lbS5wdXNoKG1haWwpOwoJ CQkJbXJpbS50LnB1c2gobGlua3NbaV0uY2xhc3NOYW1lLm1hdGNoKCdzcHItbXJp bS0xMycpID8gJzEzJyA6ICc5Jyk7CgkJICAgIH0KCQkJdGhpcy5nZXQobXJpbSk7 CgkJfSwKCQlnZXQ6IGZ1bmN0aW9uKGxpbmtzKSB7CgkJCXRoaXMubGlua3MgPSBs aW5rczsKCQkJdmFyIHNjID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1 bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSk7CgkJCXNjLnNyYyA9IF91cmwg KyBsaW5rcy5lbS5qb2luKCcsJykgKyAnJicgKyBNYXRoLmZsb29yKE1hdGgucmFu ZG9tKCkgKiAxMDAwMCk7CgkJCXJldHVybjsKCQl9LAoJCXVwZGF0ZTogZnVuY3Rp b24oYykgewoJCQlpZighYykgcmV0dXJuO2lmKCFjLmxlbmd0aCkgcmV0dXJuOwoJ CQljID0gYy5zcGxpdCgnJyk7CgkJCXZhciBlbHMgPSB0aGlzLmxpbmtzLmVsOwoJ CQlmb3IodmFyIGkgPSAwOyBpIDwgZWxzLmxlbmd0aDsgaSsrKSAKCQkJCWVsc1tp XS5jbGFzc05hbWUgKz0gJyBtcmltLScrKGNbaV0gPT0gMD8nb2ZmbGluZSc6Y1tp XSA9PSAxPydvbmxpbmUnOmNbaV0gPT0gMj8nYXdheSc6J29mZmxpbmUnKSArICdf JyArIHRoaXMubGlua3MudFtpXTsKCQl9Cgl9Owp9KSgpOwokKGRvY3VtZW50KS5v YnNlcnZlKCdkb206bG9hZGVkJywgTVJJTS5mZXRjaC5iaW5kQXNFdmVudExpc3Rl bmVyKE1SSU0pKTsK ------------iAFZvHdFZAFgV7ziFcVhyI--