commit/galaxy-central: carlfeberhard: UI: add GalaxyApp to base_panels.mako; add requirejs i18n plugin and nls/zh, nls/ja locale files, wire into _l client localizer, remove previous localization cruft; remove reliance on history_panel.mako
MSBuZXcgY29tbWl0IGluIGdhbGF4eS1jZW50cmFsOgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2RjYzBjMTkxNDdlYS8KQ2hhbmdlc2V0OiAgIGRj YzBjMTkxNDdlYQpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNC0w NC0xNSAxODozMTozMwpTdW1tYXJ5OiAgICAgVUk6IGFkZCBHYWxheHlBcHAgdG8gYmFzZV9wYW5l bHMubWFrbzsgYWRkIHJlcXVpcmVqcyBpMThuIHBsdWc9CmluIGFuZCBubHMvemgsIG5scy9qYSBs b2NhbGUgZmlsZXMsIHdpcmUgaW50byBfbCBjbGllbnQgbG9jYWxpemVyLCByZW1vdmUgcD0KcmV2 aW91cyBsb2NhbGl6YXRpb24gY3J1ZnQ7IHJlbW92ZSByZWxpYW5jZSBvbiBoaXN0b3J5X3BhbmVs Lm1ha28KQWZmZWN0ZWQgIzogIDQxIGZpbGVzCgpkaWZmIC1yIDgzNDZlYzRiYWEzOTkyZjRkYzAx NjFmMGZjNzlhMGJhODkzYzBhNjMgLXIgZGNjMGMxOTE0N2VhZDg2YzZlMzU3Yzc9CjM5ZTA1MTNh ZGRmZTAyY2IyIHN0YXRpYy9zY3JpcHRzL2dhbGF4eS1hcHAtYmFzZS5qcwotLS0gYS9zdGF0aWMv c2NyaXB0cy9nYWxheHktYXBwLWJhc2UuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvZ2FsYXh5LWFw cC1iYXNlLmpzCkBAIC0xLDMzICsxLDQ0IEBACiBkZWZpbmUoWwogICAgICdtdmMvdXNlci91c2Vy LW1vZGVsJywKICAgICAndXRpbHMvbWV0cmljcy1sb2dnZXInLAotICAgICd1dGlscy9hZGQtbG9n Z2luZycKLV0sIGZ1bmN0aW9uKCB1c2VyTW9kZWwsIG1ldHJpY3NMb2dnZXIsIGFkZExvZ2dpbmcg KXsKKyAgICAndXRpbHMvYWRkLWxvZ2dpbmcnLAorICAgICd1dGlscy9sb2NhbGl6YXRpb24nCitd LCBmdW5jdGlvbiggdXNlck1vZGVsLCBtZXRyaWNzTG9nZ2VyLCBhZGRMb2dnaW5nLCBsb2NhbGl6 ZSApewogLy8gPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0KPTNEPTNEPTNECi0vKioKLSAqCisvKiogQmFzZSBnYWxheHkgY2xpZW50LXNpZGUgYXBw bGljYXRpb24uCisgKiAgICAgIEluaWl0aWFsaXplczoKKyAqICAgICAgICAgIGxvZ2dlciAgICAg IDogdGhlIGxvZ2dlci9tZXRyaWNzLWxvZ2dlcgorICogICAgICAgICAgbG9jYWxpemUgICAgOiB0 aGUgc3RyaW5nIGxvY2FsaXplcgorICogICAgICAgICAgY29uZmlnICAgICAgOiB0aGUgY3VycmVu dCBjb25maWd1cmF0aW9uIChhbnkgay92IGluCisgKiAgICAgICAgICAgICAgdW5pdmVyc2Vfd3Nn aS5pbmkgYXZhaWxhYmxlIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gQVBJKQorICogICAgICAgICAg dXNlciAgICAgICAgOiB0aGUgY3VycmVudCB1c2VyIChhcyBhIG12Yy91c2VyL3VzZXItbW9kZWwp CiAgKi8KIGZ1bmN0aW9uIEdhbGF4eUFwcCggb3B0aW9ucyApewogICAgIHZhciBzZWxmID0zRCB0 aGlzOwogICAgIHJldHVybiBzZWxmLl9pbml0KCBvcHRpb25zIHx8IHt9ICk7CiB9CisvLyBhZGQg bG9nZ2luZyBzaG9ydGN1dHMgZm9yIHRoaXMgb2JqZWN0CiBhZGRMb2dnaW5nKCBHYWxheHlBcHAs ICdHYWxheHlBcHAnICk7Cj0yMAotLyoqICAqLworLyoqIGRlZmF1bHQgb3B0aW9ucyAqLwogR2Fs YXh5QXBwLmRlZmF1bHRPcHRpb25zID0zRCB7CisgICAgLyoqIHJvb3QgdXJsIG9mIHRoaXMgYXBw ICovCiAgICAgLy8gbW92ZSB0byBzZWxmLnJvb3Q/CiAgICAgcm9vdCAgICAgICAgOiAnLycKIH07 Cj0yMAotLyoqICAqLworLyoqIGluaXRhbGl6ZSBvcHRpb25zIGFuZCBzdWItY29tcG9uZW50cyAq LwogR2FsYXh5QXBwLnByb3RvdHlwZS5faW5pdCA9M0QgZnVuY3Rpb24gaW5pdCggb3B0aW9ucyAp ewogICAgIHZhciBzZWxmID0zRCB0aGlzOwo9MjAKKyAgICBzZWxmLl9wcm9jZXNzT3B0aW9ucygg b3B0aW9ucyApOworICAgIHNlbGYuZGVidWcoICdHYWxheHlBcHAub3B0aW9uczogJywgc2VsZi5v cHRpb25zICk7CisKICAgICBzZWxmLl9pbml0TG9nZ2VyKCBvcHRpb25zLmxvZ2dlck9wdGlvbnMg fHwge30gKTsKICAgICBzZWxmLmRlYnVnKCAnR2FsYXh5QXBwLmxvZ2dlcjogJywgc2VsZi5sb2dn ZXIgKTsKPTIwCi0gICAgc2VsZi5fcHJvY2Vzc09wdGlvbnMoIG9wdGlvbnMgKTsKLSAgICBzZWxm LmRlYnVnKCAnR2FsYXh5QXBwLm9wdGlvbnM6ICcsIHNlbGYub3B0aW9ucyApOworICAgIHNlbGYu X2luaXRMb2NhbGUoKTsKKyAgICBzZWxmLmRlYnVnKCAnR2FsYXh5QXBwLmxvY2FsaXplOiAnLCBz ZWxmLmxvY2FsaXplICk7Cj0yMAogICAgIHNlbGYuY29uZmlnID0zRCBvcHRpb25zLmNvbmZpZyB8 fCB7fTsKICAgICBzZWxmLmRlYnVnKCAnR2FsYXh5QXBwLmNvbmZpZzogJywgc2VsZi5jb25maWcg KTsKQEAgLTM4LDcgKzQ5LDcgQEAKICAgICByZXR1cm4gc2VsZjsKIH07Cj0yMAotLyoqICAqLwor LyoqIGFkZCBhbiBvcHRpb24gZnJvbSBvcHRpb25zIGlmIHRoZSBrZXkgbWF0Y2hlcyBhbiBvcHRp b24gaW4gZGVmYXVsdE9wdGk9Cm9ucyAqLwogR2FsYXh5QXBwLnByb3RvdHlwZS5fcHJvY2Vzc09w dGlvbnMgPTNEIGZ1bmN0aW9uIF9wcm9jZXNzT3B0aW9ucyggb3B0aW9ucyA9Cil7CiAgICAgdmFy IHNlbGYgPTNEIHRoaXMsCiAgICAgICAgIGRlZmF1bHRzID0zRCBHYWxheHlBcHAuZGVmYXVsdE9w dGlvbnM7CkBAIC01Myw3ICs2NCw3IEBACiAgICAgcmV0dXJuIHNlbGY7CiB9Owo9MjAKLS8qKiAg Ki8KKy8qKiBzZXQgdXAgdGhlIGN1cnJlbnQgdXNlciBhcyBhIEJhY2tib25lIG1vZGVsIChtdmMv dXNlci91c2VyLW1vZGVsKSAqLwogR2FsYXh5QXBwLnByb3RvdHlwZS5faW5pdFVzZXIgPTNEIGZ1 bmN0aW9uIF9pbml0VXNlciggdXNlckpTT04gKXsKICAgICB2YXIgc2VsZiA9M0QgdGhpczsKICAg ICBzZWxmLmRlYnVnKCAnX2luaXRVc2VyOicsIHVzZXJKU09OICk7CkBAIC02MSw3ICs3Miw3IEBA CiAgICAgcmV0dXJuIHNlbGY7CiB9Owo9MjAKLS8qKiAgKi8KKy8qKiBzZXQgdXAgdGhlIG1ldHJp Y3MgbG9nZ2VyICh1dGlscy9tZXRyaWNzLWxvZ2dlcikgYW5kIHBhc3MgbG9nZ2VyT3B0aW9uPQpz ICovCiBHYWxheHlBcHAucHJvdG90eXBlLl9pbml0TG9nZ2VyID0zRCBmdW5jdGlvbiBfaW5pdExv Z2dlciggbG9nZ2VyT3B0aW9ucyApewogICAgIHZhciBzZWxmID0zRCB0aGlzOwogICAgIHNlbGYu ZGVidWcoICdfaW5pdExvZ2dlcjonLCBsb2dnZXJPcHRpb25zICk7CkBAIC02OSw3ICs4MCwxNyBA QAogICAgIHJldHVybiBzZWxmOwogfTsKPTIwCi0vKiogICovCisvKiogYWRkIHRoZSBsb2NhbGl6 ZSBmbiB0byB0aGlzIG9iamVjdCBhbmQgdGhlIHdpbmRvdyBuYW1lc3BhY2UgKGFzICdfbCcpID0K Ki8KK0dhbGF4eUFwcC5wcm90b3R5cGUuX2luaXRMb2NhbGUgPTNEIGZ1bmN0aW9uIF9pbml0TG9j YWxlKCBvcHRpb25zICl7CisgICAgdmFyIHNlbGYgPTNEIHRoaXM7CisgICAgc2VsZi5kZWJ1Zygg J19pbml0TG9jYWxlOicsIG9wdGlvbnMgKTsKKyAgICBzZWxmLmxvY2FsaXplID0zRCBsb2NhbGl6 ZTsKKyAgICAvLyBhZGQgdG8gd2luZG93IGFzIGdsb2JhbCBzaG9ydGVuZWQgYWxpYXMKKyAgICB3 aW5kb3cuX2wgPTNEIHNlbGYubG9jYWxpemU7CisgICAgcmV0dXJuIHNlbGY7Cit9OworCisvKiog c3RyaW5nIHJlcCAqLwogR2FsYXh5QXBwLnByb3RvdHlwZS50b1N0cmluZyA9M0QgZnVuY3Rpb24g dG9TdHJpbmcoKXsKICAgICB2YXIgdXNlckVtYWlsID0zRCB0aGlzLnVzZXIuZ2V0KCAnZW1haWwn ICkgfHwgJyhhbm9ueW1vdXMpJzsKICAgICByZXR1cm4gJ0dhbGF4eUFwcCgnICsgdXNlckVtYWls ICsgJyknOwoKZGlmZiAtciA4MzQ2ZWM0YmFhMzk5MmY0ZGMwMTYxZjBmYzc5YTBiYTg5M2MwYTYz IC1yIGRjYzBjMTkxNDdlYWQ4NmM2ZTM1N2M3PQozOWUwNTEzYWRkZmUwMmNiMiBzdGF0aWMvc2Ny aXB0cy9pMThuLmpzCi0tLSAvZGV2L251bGwKKysrIGIvc3RhdGljL3NjcmlwdHMvaTE4bi5qcwpA QCAtMCwwICsxLDE4MyBAQAorLyoqCisgKiBAbGljZW5zZSBSZXF1aXJlSlMgaTE4biAyLjAuNCBD b3B5cmlnaHQgKGMpIDIwMTAtMjAxMiwgVGhlIERvam8gRm91bmRhdD0KaW9uIEFsbCBSaWdodHMg UmVzZXJ2ZWQuCisgKiBBdmFpbGFibGUgdmlhIHRoZSBNSVQgb3IgbmV3IEJTRCBsaWNlbnNlLgor ICogc2VlOiBodHRwOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvaTE4biBmb3IgZGV0YWlscworICov CisvKmpzbGludCByZWdleHA6IHRydWUgKi8KKy8qZ2xvYmFsIHJlcXVpcmU6IGZhbHNlLCBuYXZp Z2F0b3I6IGZhbHNlLCBkZWZpbmU6IGZhbHNlICovCisKKy8qKgorICogVGhpcyBwbHVnaW4gaGFu ZGxlcyBpMThuISBwcmVmaXhlZCBtb2R1bGVzLiBJdCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgKgor ICogMSkgQSByZWd1bGFyIG1vZHVsZSBjYW4gaGF2ZSBhIGRlcGVuZGVuY3kgb24gYW4gaTE4biBi dW5kbGUsIGJ1dCB0aGUgcmU9Cmd1bGFyCisgKiBtb2R1bGUgZG9lcyBub3Qgd2FudCB0byBzcGVj aWZ5IHdoYXQgbG9jYWxlIHRvIGxvYWQuIFNvIGl0IGp1c3Qgc3BlY2lmaT0KZXMKKyAqIHRoZSB0 b3AtbGV2ZWwgYnVuZGxlLCBsaWtlICJpMThuIW5scy9jb2xvcnMiLgorICoKKyAqIFRoaXMgcGx1 Z2luIHdpbGwgbG9hZCB0aGUgaTE4biBidW5kbGUgYXQgbmxzL2NvbG9ycywgc2VlIHRoYXQgaXQg aXMgYSByPQpvb3QvbWFzdGVyCisgKiBidW5kbGUgc2luY2UgaXQgZG9lcyBub3QgaGF2ZSBhIGxv Y2FsZSBpbiBpdHMgbmFtZS4gSXQgd2lsbCB0aGVuIHRyeSB0bz0KIGZpbmQKKyAqIHRoZSBiZXN0 IG1hdGNoIGxvY2FsZSBhdmFpbGFibGUgaW4gdGhhdCBtYXN0ZXIgYnVuZGxlLCB0aGVuIHJlcXVl c3QgYWxsPQogdGhlCisgKiBsb2NhbGUgcGllY2VzIGZvciB0aGF0IGJlc3QgbWF0Y2ggbG9jYWxl LiBGb3IgaW5zdGFuY2UsIGlmIHRoZSBsb2NhbGUgaT0KcyAiZW4tdXMiLAorICogdGhlbiB0aGUg cGx1Z2luIHdpbGwgYXNrIGZvciB0aGUgImVuLXVzIiwgImVuIiBhbmQgInJvb3QiIGJ1bmRsZXMg dG8gYmU9CiBsb2FkZWQKKyAqIChidXQgb25seSBpZiB0aGV5IGFyZSBzcGVjaWZpZWQgb24gdGhl IG1hc3RlciBidW5kbGUpLgorICoKKyAqIE9uY2UgYWxsIHRoZSBidW5kbGVzIGZvciB0aGUgbG9j YWxlIHBpZWNlcyBsb2FkLCB0aGVuIGl0IG1peGVzIGluIGFsbCB0PQpob3NlCisgKiBsb2NhbGUg cGllY2VzIGludG8gZWFjaCBvdGhlciwgdGhlbiBmaW5hbGx5IHNldHMgdGhlIGNvbnRleHQuZGVm aW5lZCB2YT0KbHVlCisgKiBmb3IgdGhlIG5scy9jb2xvcnMgYnVuZGxlIHRvIGJlIHRoYXQgbWl4 ZWQgaW4gbG9jYWxlLgorICoKKyAqIDIpIEEgcmVndWxhciBtb2R1bGUgc3BlY2lmaWVzIGEgc3Bl Y2lmaWMgbG9jYWxlIHRvIGxvYWQuIEZvciBpbnN0YW5jZSwKKyAqIGkxOG4hbmxzL2ZyLWZyL2Nv bG9ycy4gSW4gdGhpcyBjYXNlLCB0aGUgcGx1Z2luIG5lZWRzIHRvIGxvYWQgdGhlIG1hc3RlPQpy IGJ1bmRsZQorICogZmlyc3QsIGF0IG5scy9jb2xvcnMsIHRoZW4gZmlndXJlIG91dCB3aGF0IHRo ZSBiZXN0IG1hdGNoIGxvY2FsZSBpcyBmb3I9CiBmci1mciwKKyAqIHNpbmNlIG1heWJlIG9ubHkg ZnIgb3IganVzdCByb290IGlzIGRlZmluZWQgZm9yIHRoYXQgbG9jYWxlLiBPbmNlIHRoYXQgPQpi ZXN0CisgKiBmaXQgaXMgZm91bmQsIGFsbCBvZiBpdHMgbG9jYWxlIHBpZWNlcyBuZWVkIHRvIGhh dmUgdGhlaXIgYnVuZGxlcyBsb2FkZT0KZC4KKyAqCisgKiBPbmNlIGFsbCB0aGUgYnVuZGxlcyBm b3IgdGhlIGxvY2FsZSBwaWVjZXMgbG9hZCwgdGhlbiBpdCBtaXhlcyBpbiBhbGwgdD0KaG9zZQor ICogbG9jYWxlIHBpZWNlcyBpbnRvIGVhY2ggb3RoZXIsIHRoZW4gZmluYWxseSBzZXRzIHRoZSBj b250ZXh0LmRlZmluZWQgdmE9Cmx1ZQorICogZm9yIHRoZSBubHMvZnItZnIvY29sb3JzIGJ1bmRs ZSB0byBiZSB0aGF0IG1peGVkIGluIGxvY2FsZS4KKyAqLworKGZ1bmN0aW9uICgpIHsKKyAgICAn dXNlIHN0cmljdCc7CisKKyAgICAvL3JlZ2V4cCBmb3IgcmVjb25zdHJ1Y3RpbmcgdGhlIG1hc3Rl ciBidW5kbGUgbmFtZSBmcm9tIHBhcnRzIG9mIHRoZSByPQplZ2V4cCBtYXRjaAorICAgIC8vbmxz UmVnRXhwLmV4ZWMoImZvby9iYXIvYmF6L25scy9lbi1jYS9mb28iKSBnaXZlczoKKyAgICAvL1si Zm9vL2Jhci9iYXovbmxzL2VuLWNhL2ZvbyIsICJmb28vYmFyL2Jhei9ubHMvIiwgIi8iLCAiLyIs ICJlbi1jYSIsPQogImZvbyJdCisgICAgLy9ubHNSZWdFeHAuZXhlYygiZm9vL2Jhci9iYXovbmxz L2ZvbyIpIGdpdmVzOgorICAgIC8vWyJmb28vYmFyL2Jhei9ubHMvZm9vIiwgImZvby9iYXIvYmF6 L25scy8iLCAiLyIsICIvIiwgImZvbyIsICIiXQorICAgIC8vc28sIGlmIG1hdGNoWzVdIGlzIGJs YW5rLCBpdCBtZWFucyB0aGlzIGlzIHRoZSB0b3AgYnVuZGxlIGRlZmluaXRpb24uCisgICAgdmFy IG5sc1JlZ0V4cCA9M0QgLyheLiooXnxcLylubHMoXC98JCkpKFteXC9dKilcLz8oW15cL10qKS87 CisKKyAgICAvL0hlbHBlciBmdW5jdGlvbiB0byBhdm9pZCByZXBlYXRpbmcgY29kZS4gTG90cyBv ZiBhcmd1bWVudHMgaW4gdGhlCisgICAgLy9kZXNpcmUgdG8gc3RheSBmdW5jdGlvbmFsIGFuZCBz dXBwb3J0IFJlcXVpcmVKUyBjb250ZXh0cyB3aXRob3V0IGhhdj0KaW5nCisgICAgLy90byBrbm93 IGFib3V0IHRoZSBSZXF1aXJlSlMgY29udGV4dHMuCisgICAgZnVuY3Rpb24gYWRkUGFydChsb2Nh bGUsIG1hc3RlciwgbmVlZGVkLCB0b0xvYWQsIHByZWZpeCwgc3VmZml4KSB7CisgICAgICAgIGlm IChtYXN0ZXJbbG9jYWxlXSkgeworICAgICAgICAgICAgbmVlZGVkLnB1c2gobG9jYWxlKTsKKyAg ICAgICAgICAgIGlmIChtYXN0ZXJbbG9jYWxlXSA9M0Q9M0Q9M0QgdHJ1ZSB8fCBtYXN0ZXJbbG9j YWxlXSA9M0Q9M0Q9M0QgPQoxKSB7CisgICAgICAgICAgICAgICAgdG9Mb2FkLnB1c2gocHJlZml4 ICsgbG9jYWxlICsgJy8nICsgc3VmZml4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg IH0KKworICAgIGZ1bmN0aW9uIGFkZElmRXhpc3RzKHJlcSwgbG9jYWxlLCB0b0xvYWQsIHByZWZp eCwgc3VmZml4KSB7CisgICAgICAgIHZhciBmdWxsTmFtZSA9M0QgcHJlZml4ICsgbG9jYWxlICsg Jy8nICsgc3VmZml4OworICAgICAgICBpZiAocmVxdWlyZS5fZmlsZUV4aXN0cyhyZXEudG9Vcmwo ZnVsbE5hbWUgKyAnLmpzJykpKSB7CisgICAgICAgICAgICB0b0xvYWQucHVzaChmdWxsTmFtZSk7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGUgZnVuY3Rpb24gdG8g bWl4IGluIHByb3BlcnRpZXMgZnJvbSBzb3VyY2UgaW50byB0YXJnZXQsCisgICAgICogYnV0IG9u bHkgaWYgdGFyZ2V0IGRvZXMgbm90IGFscmVhZHkgaGF2ZSBhIHByb3BlcnR5IG9mIHRoZSBzYW1l IG5hbT0KZS4KKyAgICAgKiBUaGlzIGlzIG5vdCByb2J1c3QgaW4gSUUgZm9yIHRyYW5zZmVycmlu ZyBtZXRob2RzIHRoYXQgbWF0Y2gKKyAgICAgKiBPYmplY3QucHJvdG90eXBlIG5hbWVzLCBidXQg dGhlIHVzZXMgb2YgbWl4aW4gaGVyZSBzZWVtIHVubGlrZWx5IHRvCisgICAgICogdHJpZ2dlciBh IHByb2JsZW0gcmVsYXRlZCB0byB0aGF0LgorICAgICAqLworICAgIGZ1bmN0aW9uIG1peGluKHRh cmdldCwgc291cmNlLCBmb3JjZSkgeworICAgICAgICB2YXIgcHJvcDsKKyAgICAgICAgZm9yIChw cm9wIGluIHNvdXJjZSkgeworICAgICAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShw cm9wKSAmJiAoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eShwcm89CnApIHx8IGZvcmNlKSkgeworICAg ICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9M0Qgc291cmNlW3Byb3BdOworICAgICAgICAgICAg fSBlbHNlIGlmICh0eXBlb2Ygc291cmNlW3Byb3BdID0zRD0zRD0zRCAnb2JqZWN0JykgeworICAg ICAgICAgICAgICAgIGlmICghdGFyZ2V0W3Byb3BdICYmIHNvdXJjZVtwcm9wXSkgeworICAgICAg ICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPTNEIHt9OworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICBtaXhpbih0YXJnZXRbcHJvcF0sIHNvdXJjZVtwcm9wXSwgZm9yY2UpOwor ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZGVmaW5lKFsnbW9kdWxlJ10s IGZ1bmN0aW9uIChtb2R1bGUpIHsKKyAgICAgICAgdmFyIG1hc3RlckNvbmZpZyA9M0QgbW9kdWxl LmNvbmZpZyA/IG1vZHVsZS5jb25maWcoKSA6IHt9OworCisgICAgICAgIHJldHVybiB7CisgICAg ICAgICAgICB2ZXJzaW9uOiAnMi4wLjQnLAorICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAg KiBDYWxsZWQgd2hlbiBhIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgbG9hZGVkLgorICAgICAgICAg ICAgICovCisgICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAobmFtZSwgcmVxLCBvbkxvYWQsIGNv bmZpZykgeworICAgICAgICAgICAgICAgIGNvbmZpZyA9M0QgY29uZmlnIHx8IHt9OworCisgICAg ICAgICAgICAgICAgaWYgKGNvbmZpZy5sb2NhbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbWFz dGVyQ29uZmlnLmxvY2FsZSA9M0QgY29uZmlnLmxvY2FsZTsKKyAgICAgICAgICAgICAgICB9CisK KyAgICAgICAgICAgICAgICB2YXIgbWFzdGVyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgbWF0 Y2ggPTNEIG5sc1JlZ0V4cC5leGVjKG5hbWUpLAorICAgICAgICAgICAgICAgICAgICBwcmVmaXgg PTNEIG1hdGNoWzFdLAorICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPTNEIG1hdGNoWzRdLAor ICAgICAgICAgICAgICAgICAgICBzdWZmaXggPTNEIG1hdGNoWzVdLAorICAgICAgICAgICAgICAg ICAgICBwYXJ0cyA9M0QgbG9jYWxlLnNwbGl0KCItIiksCisgICAgICAgICAgICAgICAgICAgIHRv TG9hZCA9M0QgW10sCisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0zRCB7fSwKKyAgICAgICAg ICAgICAgICAgICAgaSwgcGFydCwgY3VycmVudCA9M0QgIiI7CisKKyAgICAgICAgICAgICAgICAv L0lmIG1hdGNoWzVdIGlzIGJsYW5rLCBpdCBtZWFucyB0aGlzIGlzIHRoZSB0b3AgYnVuZGxlIGRl PQpmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAvL3NvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUg aGFuZGxlZC4gTG9jYWxlLXNwZWNpZmljIHJlcXVlPQpzdHMKKyAgICAgICAgICAgICAgICAvL3dp bGwgaGF2ZSBhIG1hdGNoWzRdIHZhbHVlIGJ1dCBubyBtYXRjaFs1XQorICAgICAgICAgICAgICAg IGlmIChtYXRjaFs1XSkgeworICAgICAgICAgICAgICAgICAgICAvL2xvY2FsZS1zcGVjaWZpYyBi dW5kbGUKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0zRCBtYXRjaFsxXTsKKyAgICAgICAg ICAgICAgICAgICAgbWFzdGVyTmFtZSA9M0QgcHJlZml4ICsgc3VmZml4OworICAgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vVG9wLWxldmVsIGJ1bmRsZS4KKyAg ICAgICAgICAgICAgICAgICAgbWFzdGVyTmFtZSA9M0QgbmFtZTsKKyAgICAgICAgICAgICAgICAg ICAgc3VmZml4ID0zRCBtYXRjaFs0XTsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0zRCBt YXN0ZXJDb25maWcubG9jYWxlOworICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsZSkgewor ICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0zRCBtYXN0ZXJDb25maWcubG9jYWxlID0z RAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBuYXZpZ2F0b3IgPTNEPTNEPTNE ICJ1bmRlZmluZWQiID8gInJvb3Q9CiIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChu YXZpZ2F0b3IubGFuZ3VhZ2UgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdh dG9yLnVzZXJMYW5ndWFnZSB8fCAicm9vdCIpLnRvTG93ZXJDYXNlPQooKTsKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9M0QgbG9jYWxlLnNwbGl0KCIt Iik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5pc0J1 aWxkKSB7CisgICAgICAgICAgICAgICAgICAgIC8vQ2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhbGwg bG9jYWxlIHBvc3NpYmxlIGZpbGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAvL3JlcXVpcmUg dGhlbSBpZiBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgdG9Mb2FkLnB1c2gobWFzdGVyTmFt ZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZElmRXhpc3RzKHJlcSwgInJvb3QiLCB0b0xvYWQs IHByZWZpeCwgc3VmZml4KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpID0zRCAwOyBpIDwg cGFydHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQgPTNEIHBh cnRzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCArPTNEIChjdXJyZW50ID8g Ii0iIDogIiIpICsgcGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZElmRXhpc3RzKHJl cSwgY3VycmVudCwgdG9Mb2FkLCBwcmVmaXgsIHN1ZmZpeCk7CisgICAgICAgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAgICAgICByZXEodG9Mb2FkLCBmdW5jdGlvbiAoKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICBvbkxvYWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy9GaXJzdCwgZmV0 Y2ggdGhlIG1hc3RlciBidW5kbGUsIGl0IGtub3dzIHdoYXQgbG9jYWxlPQpzIGFyZSBhdmFpbGFi bGUuCisgICAgICAgICAgICAgICAgICAgIHJlcShbbWFzdGVyTmFtZV0sIGZ1bmN0aW9uIChtYXN0 ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vRmlndXJlIG91dCB0aGUgYmVzdCBmaXQK KyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZWVkZWQgPTNEIFtdLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBhcnQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vQWx3YXlz IGFsbG93IGZvciByb290LCB0aGVuIGRvIHRoZSByZXN0IG9mIHRoZSBsPQpvY2FsZSBwYXJ0cy4K KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFBhcnQoInJvb3QiLCBtYXN0ZXIsIG5lZWRlZCwg dG9Mb2FkLCBwcmVmaXgsIHN1PQpmZml4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo aSA9M0QgMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFydCA9M0QgcGFydHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vy cmVudCArPTNEIChjdXJyZW50ID8gIi0iIDogIiIpICsgcGFydDsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhZGRQYXJ0KGN1cnJlbnQsIG1hc3RlciwgbmVlZGVkLCB0b0xvYWQsIHByZWZp PQp4LCBzdWZmaXgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg ICAgICAgICAgICAvL0xvYWQgYWxsIHRoZSBwYXJ0cyBtaXNzaW5nLgorICAgICAgICAgICAgICAg ICAgICAgICAgcmVxKHRvTG9hZCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhciBpLCBwYXJ0QnVuZGxlLCBwYXJ0OworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZvciAoaSA9M0QgbmVlZGVkLmxlbmd0aCAtIDE7IGkgPiAtMSAmJiBuZWVkZWQ9CltpXTsg aS0tKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQgPTNEIG5lZWRlZFtp XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydEJ1bmRsZSA9M0QgbWFzdGVy W3BhcnRdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFydEJ1bmRsZSA9 M0Q9M0Q9M0QgdHJ1ZSB8fCBwYXJ0QnVuZGw9CmUgPTNEPTNEPTNEIDEpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRCdW5kbGUgPTNEIHJlcShwcmVmaXggKyBwYXJ0 ICsgJy8nPQogKyBzdWZmaXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peGluKHZhbHVlLCBwYXJ0QnVuZGxlKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvL0FsbCBkb25lLCBub3RpZnkgdGhlIGxvYWRlci4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvbkxvYWQodmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgfTsKKyAgICB9KTsKK30oKSk7CgpkaWZmIC1yIDgzNDZlYzRiYWEzOTkyZjRkYzAxNjFm MGZjNzlhMGJhODkzYzBhNjMgLXIgZGNjMGMxOTE0N2VhZDg2YzZlMzU3Yzc9CjM5ZTA1MTNhZGRm ZTAyY2IyIHN0YXRpYy9zY3JpcHRzL212Yy9kYXRhc2V0L2hkYS1iYXNlLmpzCi0tLSBhL3N0YXRp Yy9zY3JpcHRzL212Yy9kYXRhc2V0L2hkYS1iYXNlLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL212 Yy9kYXRhc2V0L2hkYS1iYXNlLmpzCkBAIC0xLDcgKzEsOCBAQAogZGVmaW5lKFsKICAgICAibXZj L2RhdGFzZXQvaGRhLW1vZGVsIiwKLSAgICAibXZjL2Jhc2UtbXZjIgotXSwgZnVuY3Rpb24oIGhk YU1vZGVsLCBiYXNlTVZDICl7CisgICAgIm12Yy9iYXNlLW12YyIsCisgICAgInV0aWxzL2xvY2Fs aXphdGlvbiIKK10sIGZ1bmN0aW9uKCBoZGFNb2RlbCwgYmFzZU1WQywgX2wgKXsKIC8qIGdsb2Jh bCBCYWNrYm9uZSAqLwogLy89M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0QKIC8qKiBAY2xhc3MgUmVhZCBvbmx5IHZpZXcg Zm9yIEhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24uCgpkaWZmIC1yIDgzNDZlYzRiYWEzOTkyZjRk YzAxNjFmMGZjNzlhMGJhODkzYzBhNjMgLXIgZGNjMGMxOTE0N2VhZDg2YzZlMzU3Yzc9CjM5ZTA1 MTNhZGRmZTAyY2IyIHN0YXRpYy9zY3JpcHRzL212Yy9kYXRhc2V0L2hkYS1lZGl0LmpzCi0tLSBh L3N0YXRpYy9zY3JpcHRzL212Yy9kYXRhc2V0L2hkYS1lZGl0LmpzCisrKyBiL3N0YXRpYy9zY3Jp cHRzL212Yy9kYXRhc2V0L2hkYS1lZGl0LmpzCkBAIC0yLDggKzIsOSBAQAogICAgICJtdmMvZGF0 YXNldC9oZGEtbW9kZWwiLAogICAgICJtdmMvZGF0YXNldC9oZGEtYmFzZSIsCiAgICAgIm12Yy90 YWdzIiwKLSAgICAibXZjL2Fubm90YXRpb25zIgotXSwgZnVuY3Rpb24oIGhkYU1vZGVsLCBoZGFC YXNlLCB0YWdzTW9kLCBhbm5vdGF0aW9uc01vZCApeworICAgICJtdmMvYW5ub3RhdGlvbnMiLAor ICAgICJ1dGlscy9sb2NhbGl6YXRpb24iCitdLCBmdW5jdGlvbiggaGRhTW9kZWwsIGhkYUJhc2Us IHRhZ3NNb2QsIGFubm90YXRpb25zTW9kLCBfbCApewogLy89M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0QKIC8qKiBAY2xh c3MgRWRpdGluZyB2aWV3IGZvciBIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uLgogICogIEBuYW1l IEhEQUVkaXRWaWV3CgpkaWZmIC1yIDgzNDZlYzRiYWEzOTkyZjRkYzAxNjFmMGZjNzlhMGJhODkz YzBhNjMgLXIgZGNjMGMxOTE0N2VhZDg2YzZlMzU3Yzc9CjM5ZTA1MTNhZGRmZTAyY2IyIHN0YXRp Yy9zY3JpcHRzL212Yy9kYXRhc2V0L2hkYS1tb2RlbC5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9t dmMvZGF0YXNldC9oZGEtbW9kZWwuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2RhdGFzZXQv aGRhLW1vZGVsLmpzCkBAIC0xLDYgKzEsNyBAQAogZGVmaW5lKFsKLSAgICAibXZjL2Jhc2UtbXZj IgotXSwgZnVuY3Rpb24oIGJhc2VNVkMgKXsKKyAgICAibXZjL2Jhc2UtbXZjIiwKKyAgICAidXRp bHMvbG9jYWxpemF0aW9uIgorXSwgZnVuY3Rpb24oIGJhc2VNVkMsIF9sICl7CiAvLz0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0z RD0zRAogLyoqIEBjbGFzcyAoSERBKSBtb2RlbCBmb3IgYSBHYWxheHkgZGF0YXNldAogICogICAg ICByZWxhdGVkIHRvIGEgaGlzdG9yeS4KCmRpZmYgLXIgODM0NmVjNGJhYTM5OTJmNGRjMDE2MWYw ZmM3OWEwYmE4OTNjMGE2MyAtciBkY2MwYzE5MTQ3ZWFkODZjNmUzNTdjNz0KMzllMDUxM2FkZGZl MDJjYjIgc3RhdGljL3NjcmlwdHMvbXZjL2hpc3RvcnkvYW5ub3RhdGVkLWhpc3RvcnktcGFuZWwu anMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL2hpc3RvcnkvYW5ub3RhdGVkLWhpc3RvcnktcGFu ZWwuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2hpc3RvcnkvYW5ub3RhdGVkLWhpc3Rvcnkt cGFuZWwuanMKQEAgLTEsOCArMSw5IEBACiBkZWZpbmUoWwogICAgICJtdmMvZGF0YXNldC9oZGEt bW9kZWwiLAogICAgICJtdmMvZGF0YXNldC9oZGEtYmFzZSIsCi0gICAgIm12Yy9oaXN0b3J5L3Jl YWRvbmx5LWhpc3RvcnktcGFuZWwiCi1dLCBmdW5jdGlvbiggaGRhTW9kZWwsIGhkYUJhc2UsIHJl YWRvbmx5UGFuZWwgKXsKKyAgICAibXZjL2hpc3RvcnkvcmVhZG9ubHktaGlzdG9yeS1wYW5lbCIs CisgICAgInV0aWxzL2xvY2FsaXphdGlvbiIKK10sIGZ1bmN0aW9uKCBoZGFNb2RlbCwgaGRhQmFz ZSwgcmVhZG9ubHlQYW5lbCwgX2wgKXsKIC8qID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRAogVE9ETzoKPTIwCgpkaWZmIC1y IDgzNDZlYzRiYWEzOTkyZjRkYzAxNjFmMGZjNzlhMGJhODkzYzBhNjMgLXIgZGNjMGMxOTE0N2Vh ZDg2YzZlMzU3Yzc9CjM5ZTA1MTNhZGRmZTAyY2IyIHN0YXRpYy9zY3JpcHRzL212Yy9oaXN0b3J5 L2N1cnJlbnQtaGlzdG9yeS1wYW5lbC5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9y eS9jdXJyZW50LWhpc3RvcnktcGFuZWwuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2hpc3Rv cnkvY3VycmVudC1oaXN0b3J5LXBhbmVsLmpzCkBAIC0xLDggKzEsOSBAQAogZGVmaW5lKFsKICAg ICAibXZjL2RhdGFzZXQvaGRhLWVkaXQiLAogICAgICJtdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVs IiwKLSAgICAibXZjL2Jhc2UtbXZjIgotXSwgZnVuY3Rpb24oIGhkYUVkaXQsIGhwYW5lbCwgYmFz ZU1WQyApeworICAgICJtdmMvYmFzZS1tdmMiLAorICAgICJ1dGlscy9sb2NhbGl6YXRpb24iCitd LCBmdW5jdGlvbiggaGRhRWRpdCwgaHBhbmVsLCBiYXNlTVZDLCBfbCApewogLy8gPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECiAv Kiogc2Vzc2lvbiBzdG9yYWdlIGZvciBoaXN0b3J5IHBhbmVsIHByZWZlcmVuY2VzIChhbmQgdG8g bWFpbnRhaW4gc3RhdGUpCiAgKi8KCmRpZmYgLXIgODM0NmVjNGJhYTM5OTJmNGRjMDE2MWYwZmM3 OWEwYmE4OTNjMGE2MyAtciBkY2MwYzE5MTQ3ZWFkODZjNmUzNTdjNz0KMzllMDUxM2FkZGZlMDJj YjIgc3RhdGljL3NjcmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9yeS1tb2RlbC5qcwotLS0gYS9zdGF0 aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9oaXN0b3J5LW1vZGVsLmpzCisrKyBiL3N0YXRpYy9zY3Jp cHRzL212Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwuanMKQEAgLTEsNyArMSw4IEBACiBkZWZpbmUo WwogICAgICJtdmMvZGF0YXNldC9oZGEtbW9kZWwiLAotICAgICJtdmMvYmFzZS1tdmMiCi1dLCBm dW5jdGlvbiggaGRhTW9kZWwsIGJhc2VNVkMgKXsKKyAgICAibXZjL2Jhc2UtbXZjIiwKKyAgICAi dXRpbHMvbG9jYWxpemF0aW9uIgorXSwgZnVuY3Rpb24oIGhkYU1vZGVsLCBiYXNlTVZDLCBfbCAp ewogLy89M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPQo9M0Q9M0Q9M0Q9M0QKIC8qKiBAY2xhc3MgTW9kZWwgZm9yIGEgR2FsYXh5IGhpc3Rvcnkg cmVzb3VyY2UgLSBib3RoIGEgcmVjb3JkIG9mIHVzZXIKICAqICAgICAgdG9vbCB1c2UgYW5kIGEg Y29sbGVjdGlvbiBvZiB0aGUgZGF0YXNldHMgdGhvc2UgdG9vbHMgcHJvZHVjZWQuCgpkaWZmIC1y IDgzNDZlYzRiYWEzOTkyZjRkYzAxNjFmMGZjNzlhMGJhODkzYzBhNjMgLXIgZGNjMGMxOTE0N2Vh ZDg2YzZlMzU3Yzc9CjM5ZTA1MTNhZGRmZTAyY2IyIHN0YXRpYy9zY3JpcHRzL212Yy9oaXN0b3J5 L2hpc3RvcnktcGFuZWwuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9y eS1wYW5lbC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVs LmpzCkBAIC0zLDggKzMsOSBAQAogICAgICJtdmMvZGF0YXNldC9oZGEtZWRpdCIsCiAgICAgIm12 Yy9oaXN0b3J5L3JlYWRvbmx5LWhpc3RvcnktcGFuZWwiLAogICAgICJtdmMvdGFncyIsCi0gICAg Im12Yy9hbm5vdGF0aW9ucyIKLV0sIGZ1bmN0aW9uKCBoZGFNb2RlbCwgaGRhRWRpdCwgcmVhZG9u bHlQYW5lbCwgdGFnc01vZCwgYW5ub3RhdGlvbnNNb2QgKXsKKyAgICAibXZjL2Fubm90YXRpb25z IiwKKyAgICAidXRpbHMvbG9jYWxpemF0aW9uIgorXSwgZnVuY3Rpb24oIGhkYU1vZGVsLCBoZGFF ZGl0LCByZWFkb25seVBhbmVsLCB0YWdzTW9kLCBhbm5vdGF0aW9uc01vZCwgX2w9CiApewogLyog PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE PTNEPTNEPTNECiBUT0RPOgo9MjAKCmRpZmYgLXIgODM0NmVjNGJhYTM5OTJmNGRjMDE2MWYwZmM3 OWEwYmE4OTNjMGE2MyAtciBkY2MwYzE5MTQ3ZWFkODZjNmUzNTdjNz0KMzllMDUxM2FkZGZlMDJj YjIgc3RhdGljL3NjcmlwdHMvbXZjL2hpc3RvcnkvcmVhZG9ubHktaGlzdG9yeS1wYW5lbC5qcwot LS0gYS9zdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9yZWFkb25seS1oaXN0b3J5LXBhbmVsLmpz CisrKyBiL3N0YXRpYy9zY3JpcHRzL212Yy9oaXN0b3J5L3JlYWRvbmx5LWhpc3RvcnktcGFuZWwu anMKQEAgLTIsOCArMiw5IEBACiAgICAgIm12Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwiLAogICAg ICJtdmMvZGF0YXNldC9oZGEtYmFzZSIsCiAgICAgIm12Yy91c2VyL3VzZXItbW9kZWwiLAotICAg ICJtdmMvYmFzZS1tdmMiCi1dLCBmdW5jdGlvbiggaGlzdG9yeU1vZGVsLCBoZGFCYXNlLCB1c2Vy TW9kZWwsIGJhc2VNVkMgKXsKKyAgICAibXZjL2Jhc2UtbXZjIiwKKyAgICAidXRpbHMvbG9jYWxp emF0aW9uIgorXSwgZnVuY3Rpb24oIGhpc3RvcnlNb2RlbCwgaGRhQmFzZSwgdXNlck1vZGVsLCBi YXNlTVZDLCBfbCApewogLy8gPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECiAvKiogc2Vzc2lvbiBzdG9yYWdlIGZvciBpbmRpdmlk dWFsIGhpc3RvcnkgcHJlZmVyZW5jZXMgKi8KIHZhciBIaXN0b3J5UHJlZnMgPTNEIGJhc2VNVkMu U2Vzc2lvblN0b3JhZ2VNb2RlbC5leHRlbmQoewoKZGlmZiAtciA4MzQ2ZWM0YmFhMzk5MmY0ZGMw MTYxZjBmYzc5YTBiYTg5M2MwYTYzIC1yIGRjYzBjMTkxNDdlYWQ4NmM2ZTM1N2M3PQozOWUwNTEz YWRkZmUwMmNiMiBzdGF0aWMvc2NyaXB0cy9tdmMvdXNlci91c2VyLW1vZGVsLmpzCi0tLSBhL3N0 YXRpYy9zY3JpcHRzL212Yy91c2VyL3VzZXItbW9kZWwuanMKKysrIGIvc3RhdGljL3NjcmlwdHMv bXZjL3VzZXIvdXNlci1tb2RlbC5qcwpAQCAtMSw2ICsxLDcgQEAKIGRlZmluZShbCi0gICAgIm12 Yy9iYXNlLW12YyIKLV0sIGZ1bmN0aW9uKCBiYXNlTVZDICl7CisgICAgIm12Yy9iYXNlLW12YyIs CisgICAgInV0aWxzL2xvY2FsaXphdGlvbiIKK10sIGZ1bmN0aW9uKCBiYXNlTVZDLCBfbCApewog Ly89M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PQo9M0Q9M0Q9M0Q9M0QKIC8qKiBAY2xhc3MgTW9kZWwgZm9yIGEgR2FsYXh5IHVzZXIgKGluY2x1 ZGluZyBhbm9ueW1vdXMgdXNlcnMpLgogICogIEBuYW1lIFVzZXIKCmRpZmYgLXIgODM0NmVjNGJh YTM5OTJmNGRjMDE2MWYwZmM3OWEwYmE4OTNjMGE2MyAtciBkY2MwYzE5MTQ3ZWFkODZjNmUzNTdj Nz0KMzllMDUxM2FkZGZlMDJjYjIgc3RhdGljL3NjcmlwdHMvbXZjL3VzZXIvdXNlci1xdW90YW1l dGVyLmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL212Yy91c2VyL3VzZXItcXVvdGFtZXRlci5qcwor KysgYi9zdGF0aWMvc2NyaXB0cy9tdmMvdXNlci91c2VyLXF1b3RhbWV0ZXIuanMKQEAgLTEsNiAr MSw3IEBACiBkZWZpbmUoWwotICAgICJtdmMvYmFzZS1tdmMiCi1dLCBmdW5jdGlvbiggYmFzZU1W QyApeworICAgICJtdmMvYmFzZS1tdmMiLAorICAgICJ1dGlscy9sb2NhbGl6YXRpb24iCitdLCBm dW5jdGlvbiggYmFzZU1WQywgX2wgKXsKIC8vPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNECiAvKiogQGNsYXNzIFZpZXcg dG8gZGlzcGxheSBhIHVzZXIncyBkaXNrL3N0b3JhZ2UgdXNhZ2UKICAqICAgICAgZWl0aGVyIGFz IGEgcHJvZ3Jlc3MgYmFyIHJlcHJlc2VudGluZyB0aGUgcGVyY2VudGFnZSBvZiBhIHF1b3RhIHVz PQplZAoKZGlmZiAtciA4MzQ2ZWM0YmFhMzk5MmY0ZGMwMTYxZjBmYzc5YTBiYTg5M2MwYTYzIC1y IGRjYzBjMTkxNDdlYWQ4NmM2ZTM1N2M3PQozOWUwNTEzYWRkZmUwMmNiMiBzdGF0aWMvc2NyaXB0 cy9ubHMvamEvbG9jYWxlLmpzCi0tLSAvZGV2L251bGwKKysrIGIvc3RhdGljL3NjcmlwdHMvbmxz L2phL2xvY2FsZS5qcwpAQCAtMCwwICsxLDM4OSBAQAorLyoqIGphIGxvY2FsaXphdGlvbiAqLwor ZGVmaW5lKHsKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjI0CisiQXJlIHlv dSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgY3VycmVudCBoaXN0b3J5PyIgOgorIj1FNz04 Rj1CRT1FNT05Qz1BOD1FMz04MT1BRT1FMz04Mz05Mj1FMz04Mj1COT1FMz04Mz04OD1FMz04Mz1B QT1FMz04Mz1CQz0KPUUzPTgyPTkyPUU2PUI2PTg4PUUzPTgxPTk5PUUzPTgxPTkzPUUzPTgxPUE4 PUUzPTgxPUFCPUU1PTkwPThDPUU2PTg0PThGPUUzPQo9ODE9OTc9RTM9ODE9QkU9RTM9ODE9OTk9 RTM9ODE9OEI9RUY9QkM9OUYiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5Lm1ha286MzgK KyJjb2xsYXBzZSBhbGwiIDoKKyI9RTM9ODE9OTk9RTM9ODE9Qjk9RTM9ODE9QTY9RTM9ODI9OTI9 RTM9ODE9OEE9RTM9ODI9OEE9RTM9ODE9OUY9RTM9ODE9OUY9Cj1FMz04Mj04MCIsCisKKy8vIHRl bXBsYXRlcy9kYXRhc2V0L2VkaXRfYXR0cmlidXRlcy5tYWtvOjIKKyJIaXN0b3J5IEl0ZW0gQXR0 cmlidXRlcyIgOgorIj1FMz04Mz05Mj1FMz04Mj1COT1FMz04Mz04OD1FMz04Mz1BQT1FMz04Mz1C Qz1FMz04Mj1BMj1FMz04Mj1BND1FMz04Mz04Nj0KPUUzPTgzPUEwPUU1PUE0PTg5PUU2PTk1PUIw IiwKKworLy8gdGVtcGxhdGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286MTkKKyJFZGl0 IEF0dHJpYnV0ZXMiIDoKKyI9RTU9QTQ9ODk9RTY9OTU9QjA9RTM9ODI9OTI9RTc9Qjc9QTg9RTk9 OUI9ODY9RTM9ODE9OTk9RTM9ODI9OEIiLAorCisvLyB0ZW1wbGF0ZXMvZGF0YXNldC9lZGl0X2F0 dHJpYnV0ZXMubWFrbzo2NAorIlRoaXMgd2lsbCBpbnNwZWN0IHRoZSBkYXRhc2V0IGFuZCBhdHRl bXB0IHRvIGNvcnJlY3QgdGhlIGFib3ZlIGNvbHVtbiB2YWw9CnVlcyBpZiB0aGV5IGFyZSBub3Qg YWNjdXJhdGUuIiA6CisiPUUzPTgxPTkzPUUzPTgyPThDPUUzPTgxPUFGPUUzPTgzPTg3PUUzPTgz PUJDPUUzPTgyPUJGPUUzPTgyPUJCPUUzPTgzPTgzPQo9RTM9ODM9ODg9RTM9ODI9OTI9RTg9QUE9 QkY9RTY9OUY9QkI9RTM9ODE9OTc9RTM9ODE9QTY9RTQ9Qjg9OEE9RTg9QTg9OTg9RTM9Cj04MT1B RT1FMz04Mj1BQj1FMz04Mz1BOT1FMz04Mz1BMD1FMz04MT1BRT1FNT04MD1BND1FMz04Mj05Mj1F ND1CRj1BRT1FNj1BRD0KPUEzPUUzPTgxPTk5PUUzPTgyPThCPUUzPTgxPTkzPUUzPTgxPUE4PUUz PTgyPTkyPUU4PUE5PUE2PUUzPTgxPUJGPUUzPTgxPUJFPQo9RTM9ODE9OTk9RTM9ODA9ODIiLAor CisvLyB0ZW1wbGF0ZXMvZGF0YXNldC9lZGl0X2F0dHJpYnV0ZXMubWFrbzo2OAorIlJlcXVpcmVk IG1ldGFkYXRhIHZhbHVlcyBhcmUgbWlzc2luZy4gU29tZSBvZiB0aGVzZSB2YWx1ZXMgbWF5IG5v dCBiZSBlZGk9CnRhYmxlIGJ5IHRoZSB1c2VyLiBTZWxlY3RpbmcgXCJBdXRvLWRldGVjdFwiIHdp bGwgYXR0ZW1wdCB0byBmaXggdGhlc2UgdmFsdT0KZXMuIiA6CisiPUU1PUJGPTg1PUU4PUE2PTgx PUUzPTgxPUFBPUUzPTgzPUExPUUzPTgyPUJGPUUzPTgzPTg3PUUzPTgzPUJDPUUzPTgyPUJGPQo9 RTM9ODE9QUU9RTU9ODA9QTQ9RTM9ODE9OEM9RTQ9Qjg9OEQ9RTY9OTg9OEU9RTM9ODE9QTc9RTM9 ODE9OTk9RTM9ODA9ODI9RTM9Cj04MT05RD1FMz04Mj04Qz1FMz04Mj04OT1FMz04MT1BRT1FMz04 MT04ND1FMz04MT04Rj1FMz04MT1BND1FMz04MT04Qj1FMz04MT0KPUFFPUU1PTgwPUE0PUUzPTgx PUFGPUUzPTgzPUE2PUUzPTgzPUJDPUUzPTgyPUI2PUUzPTgxPUFCPUUzPTgyPTg4PUUzPTgxPUEz PQo9RTM9ODE9QTY9RTc9Qjc9QTg9RTk9OUI9ODY9RTU9OEY9QUY9RTg9ODM9QkQ9RTM9ODE9QUI9 RTM9ODE9QUY9RTM9ODE9QUE9RTM9Cj04MT1BMz1FMz04MT1BNj1FMz04MT04ND1FMz04MT1CRT1F Mz04MT05Qj1FMz04Mj05Mz1FMz04MD04Mj1FMz04MD04Qz1FOD04Nz0KPUFBPUU1PThCPTk1PUU1 PTg4PUE0PUU1PUFFPTlBPUUzPTgwPThEPUUzPTgyPTkyPUU5PTgxPUI4PUU2PThBPTlFPUUzPTgx PTk5PQo9RTM9ODI9OEI9RTM9ODE9QTg9RTM9ODE9OUQ9RTM9ODI9OEM9RTM9ODI9ODk9RTM9ODE9 QUU9RTU9ODA9QTQ9RTM9ODI9OTI9RTM9Cj04MT05Rj1FMz04MT1BMD1FMz04MT05Nz1FMz04MT04 Rj1FMz04MT1BNz1FMz04MT04RD1FMz04Mj04Qj1FMz04MT04Qj1FMz04Mj0KPTgyPUUzPTgxPTk3 PUUzPTgyPThDPUUzPTgxPUJFPUUzPTgxPTlCPUUzPTgyPTkzPUUzPTgwPTgyIiwKKworLy8gdGVt cGxhdGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286NzgKKyJDb252ZXJ0IHRvIG5ldyBm b3JtYXQiIDoKKyI9RTY9OTY9QjA9RTM9ODE9OTc9RTM9ODE9ODQ9RTM9ODM9OTU9RTM9ODI9QTk9 RTM9ODM9QkM9RTM9ODM9OUU9RTM9ODM9ODM9Cj1FMz04Mz04OD1FMz04MT1BQj1FNT1BND04OT1F Nj04Rj05Qj1FMz04MT05OT1FMz04Mj04QiIsCisKKy8vIHRlbXBsYXRlcy9kYXRhc2V0L2VkaXRf YXR0cmlidXRlcy5tYWtvOjg0CisiQ29udmVydCB0byIgOgorIj1FNT1BND04OT1FNj04Rj05Qj1F Mz04MT05OT1FMz04Mj04QiIsCisKKy8vIHRlbXBsYXRlcy9kYXRhc2V0L2VkaXRfYXR0cmlidXRl cy5tYWtvOjk1CisiVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBkYXRhc2V0IHdpdGggdGhlIGNvbnRl bnRzIG9mIHRoaXMgZGF0YXNldCBjb252ZXJ0ZT0KZCB0byBhIG5ldyBmb3JtYXQuIiA6CisiPUU2 PTk2PUIwPUUzPTgxPTk3PUUzPTgxPTg0PUUzPTgzPTk1PUUzPTgyPUE5PUUzPTgzPUJDPUUzPTgz PTlFPUUzPTgzPTgzPQo9RTM9ODM9ODg9RTM9ODE9QUI9RTU9QTQ9ODk9RTY9OEY9OUI9RTM9ODE9 OTc9RTM9ODE9OUY9RTM9ODM9ODc9RTM9ODM9QkM9RTM9Cj04Mj1CRj1FMz04Mj1CQj1FMz04Mz04 Mz1FMz04Mz04OD1FMz04Mj05Mj1FNj05Nj1CMD1FOD1BNj04Rj1FND1CRD05Qz1FNj04OD0KPTkw PUUzPTgxPTk3PUUzPTgxPUJFPUUzPTgxPTk5PUUzPTgwPTgyIiwKKworLy8gdGVtcGxhdGVzL2Rh dGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286MTExCisiQ2hhbmdlIGRhdGEgdHlwZSIgOgorIj1F Mz04Mz04Nz1FMz04Mz1CQz1FMz04Mj1CRj1FMz04Mj1CRj1FMz04Mj1BND1FMz04Mz05Nz1FMz04 Mj05Mj1FNT1BND04OT0KPUU2PTlCPUI0PUUzPTgxPTk5PUUzPTgyPThCIiwKKworLy8gdGVtcGxh dGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286MTE3CisiTmV3IFR5cGUiIDoKKyI9RTY9 OTY9QjA9RTM9ODE9OTc9RTM9ODE9ODQ9RTM9ODI9QkY9RTM9ODI9QTQ9RTM9ODM9OTciLAorCisv LyB0ZW1wbGF0ZXMvZGF0YXNldC9lZGl0X2F0dHJpYnV0ZXMubWFrbzoxMjQKKyJUaGlzIHdpbGwg Y2hhbmdlIHRoZSBkYXRhdHlwZSBvZiB0aGUgZXhpc3RpbmcgZGF0YXNldCBidXQgPGk+bm90PC9p PiBtb2RpPQpmeSBpdHMgY29udGVudHMuIFVzZSB0aGlzIGlmIEdhbGF4eSBoYXMgaW5jb3JyZWN0 bHkgZ3Vlc3NlZCB0aGUgdHlwZSBvZiB5b3U9CnIgZGF0YXNldC4iIDoKKyI9RTM9ODE9OTM9RTM9 ODI9OEM9RTM9ODE9QUY9RTY9OTc9QTI9RTU9QUQ9OTg9RTM9ODE9QUU9RTM9ODM9ODc9RTM9ODM9 QkM9Cj1FMz04Mj1CRj1FMz04Mj1CQj1FMz04Mz04Mz1FMz04Mz04OD1FMz04MT1BRT1FMz04Mz04 Nz1FMz04Mz1CQz1FMz04Mj1CRj1FMz0KPTgyPUJGPUUzPTgyPUE0PUUzPTgzPTk3PUUzPTgyPTky PUU1PUE0PTg5PUU2PTlCPUI0PUUzPTgxPTk3PUUzPTgxPUJFPUUzPTgxPQo9OTk9RTM9ODA9ODI9 RTM9ODE9OTc9RTM9ODE9OEI9RTM9ODE9OTc9RTM9ODM9ODc9RTM9ODM9QkM9RTM9ODI9QkY9RTM9 ODI9QkI9Cj1FMz04Mz04Mz1FMz04Mz04OD1FMz04MT1BRT1FND1COD1BRD1FOD1CQT1BQj1FMz04 MT1BRj1FNT1BND04OT1FNj05Qj1CND1FMz0KPTgxPTk3PUUzPTgxPUJFPUUzPTgxPTlCPUUzPTgy PTkzPUUzPTgwPTgyPUUzPTgzPTg3PUUzPTgzPUJDPUUzPTgyPUJGPUUzPTgyPQo9QkI9RTM9ODM9 ODM9RTM9ODM9ODg9RTM9ODE9QUU9RTM9ODI9QkY9RTM9ODI9QTQ9RTM9ODM9OTc9RTM9ODE9QUU9 RTg9QUE9QTQ9Cj1FNT04OD1BND1FNT1BRT05QT1FMz04MT04Qz1FMz04MT04Mj1FMz04MT1BMz1F Mz04MT05Rj1FMz04MT1BOD1FMz04MT04RD1FMz0KPTgxPUFCPUU0PUJEPUJGPUU3PTk0PUE4PUUz PTgxPTk3PUUzPTgxPUJFPUUzPTgxPTk5PUUzPTgwPTgyIiwKKworLy8gdGVtcGxhdGVzL2RhdGFz ZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286MTM3CisiQ29weSBIaXN0b3J5IEl0ZW0iIDoKKyI9RTM9 ODM9OTI9RTM9ODI9Qjk9RTM9ODM9ODg9RTM9ODM9QUE9RTM9ODM9QkM9RTM9ODI9QTI9RTM9ODI9 QTQ9RTM9ODM9ODY9Cj1FMz04Mz1BMD1FMz04Mj05Mj1FMz04Mj1CMz1FMz04Mz05ND1FMz04Mz1C Qz1FMz04MT05OT1FMz04Mj04QiIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFrbzoz CisiWW91ciBzYXZlZCBoaXN0b3JpZXMiIDoKKyI9RTQ9QkY9OUQ9RTU9QUQ9OTg9RTM9ODE9OTc9 RTM9ODE9OUY9RTM9ODM9OTI9RTM9ODI9Qjk9RTM9ODM9ODg9RTM9ODM9QUE9Cj1FMz04Mz1CQyIs CisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFrbzoxOQorIlN0b3JlZCBIaXN0b3JpZXMi IDoKKyI9RTY9QTA9QkM9RTc9QjQ9OEQ9RTM9ODE9OTc9RTM9ODE9QTY9RTM9ODE9ODI9RTM9ODI9 OEI9RTM9ODM9OTI9RTM9ODI9Qjk9Cj1FMz04Mz04OD1FMz04Mz1BQT1FMz04Mz1CQyIsCisKKy8v IHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFrbzoyMSB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5Lm1h a286MjM5CisiaGlkZSBkZWxldGVkIiA6CisiPUU1PTg5PThBPUU5PTk5PUE0PUUzPTgxPTk3PUUz PTgxPTlGPUUzPTgzPTkyPUUzPTgyPUI5PUUzPTgzPTg4PUUzPTgzPUFBPQo9RTM9ODM9QkM9RTM9 ODI9OTI9RTk9OUE9QTA9RTM9ODE9OTkiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1h a286MjMKKyJzaG93IGRlbGV0ZWQiIDoKKyI9RTU9ODk9OEE9RTk9OTk9QTQ9RTM9ODE9OTc9RTM9 ODE9OUY9RTM9ODM9OTI9RTM9ODI9Qjk9RTM9ODM9ODg9RTM9ODM9QUE9Cj1FMz04Mz1CQz1FMz04 Mj05Mj1FOD1BMT1BOD1FNz1BND1CQT1FMz04MT05OT1FMz04Mj04QiIsCisKKy8vIHRlbXBsYXRl cy9oaXN0b3J5L2xpc3QubWFrbzoyNworIk5hbWUiIDoKKyI9RTU9OTA9OEQ9RTU9ODk9OEQiLAor CisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286MjcKKyJTaXplIiA6CisiPUUzPTgyPUI1 PUUzPTgyPUE0PUUzPTgyPUJBIiwKKworLy8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjI3 CisiTGFzdCBtb2RpZmllZCIgOgorIj1FNj05Qz04MD1FNz1CNT04Mj1FNj05Qj1CND1FNj05Nj1C MD1FNj05Nz1BNSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFrbzoyNworIkFjdGlv bnMiIDoKKyI9RTY9OTM9OEQ9RTQ9QkQ9OUMiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0 Lm1ha286NDUKKyJyZW5hbWUiIDoKKyI9RTU9OTA9OEQ9RTc9QTc9QjA9RTU9QTQ9ODk9RTY9OUI9 QjQ9RTM9ODE9OTk9RTM9ODI9OEIiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286 NDYKKyJzd2l0Y2ggdG8iIDoKKyI9RTU9QTQ9ODk9RTY9OUI9QjQ9RTM9ODE9OTk9RTM9ODI9OEIi LAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286NDcKKyJkZWxldGUiIDoKKyI9RTU9 ODk9OEE9RTk9OTk9QTQ9RTM9ODE9OTk9RTM9ODI9OEIiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9y eS9saXN0Lm1ha286NDkKKyJ1bmRlbGV0ZSIgOgorIj1FNT04OT04QT1FOT05OT1BND1FMz04MT04 Qj1FMz04Mj04OT1FNj04OD1CQj1FMz04MT05OSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xp c3QubWFrbzo1NQorIkFjdGlvbiIgOgorIj1FNj05Mz04RD1FND1CRD05QyIsCisKKy8vIHRlbXBs YXRlcy9oaXN0b3J5L2xpc3QubWFrbzo1NiB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286 MjEKKyJTaGFyZSIgOgorIj1FNT04NT1CMT1FNj05Qz04OSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0 b3J5L2xpc3QubWFrbzo1NiB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MTUKKyJSZW5h bWUiIDoKKyI9RTU9OTA9OEQ9RTc9QTc9QjA9RTU9QTQ9ODk9RTY9OUI9QjQ9RTM9ODE9OTk9RTM9 ODI9OEIiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286NTYgdGVtcGxhdGVzL2hp c3Rvcnkvb3B0aW9ucy5tYWtvOjI0CisiRGVsZXRlIiA6CisiPUU1PTg5PThBPUU5PTk5PUE0PUUz PTgxPTk5PUUzPTgyPThCIiwKKworLy8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjU4Cisi VW5kZWxldGUiIDoKKyI9RTU9ODk9OEE9RTk9OTk9QTQ9RTM9ODE9OEI9RTM9ODI9ODk9RTY9ODg9 QkI9RTM9ODE9OTkiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286NjUKKyJZb3Ug aGF2ZSBubyBzdG9yZWQgaGlzdG9yaWVzIiA6CisiPUU0PUJGPTlEPUU3PUFFPUExPUUzPTgxPTk3 PUUzPTgxPUE2PUUzPTgxPTgyPUUzPTgyPThCPUUzPTgzPTkyPUUzPTgyPUI5PQo9RTM9ODM9ODg9 RTM9ODM9QUE9RTM9ODM9QkM9RTM9ODE9QUY9RTM9ODE9ODI9RTM9ODI9OEE9RTM9ODE9QkU9RTM9 ODE9OUI9RTM9Cj04Mj05MyIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29wdGlvbnMubWFrbzo1 CisiSGlzdG9yeSBPcHRpb25zIiA6CisiPUUzPTgzPTkyPUUzPTgyPUI5PUUzPTgzPTg4PUUzPTgz PUFBPUUzPTgzPUJDPUUzPTgyPUFBPUUzPTgzPTk3PUUzPTgyPUI3PQo9RTM9ODM9QTc9RTM9ODM9 QjMiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286OQorIllvdSBtdXN0IGJl ICIgOgorIj1FMz04MT04Mj1FMz04MT1BQT1FMz04MT05Rj1FMz04MT1BRiIsCisKKy8vIHRlbXBs YXRlcy9oaXN0b3J5L29wdGlvbnMubWFrbzo5CisibG9nZ2VkIGluIiA6CisiPUUzPTgzPUFEPUUz PTgyPUIwPUUzPTgyPUE0PUUzPTgzPUIzIiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9u cy5tYWtvOjkKKyIgdG8gc3RvcmUgb3Igc3dpdGNoIGhpc3Rvcmllcy4iIDoKKyI9RTM9ODE9OTc9 RTM9ODE9QUE9RTM9ODE9ODQ9RTM9ODE9QTg9RTM9ODM9OTI9RTM9ODI9Qjk9RTM9ODM9ODg9RTM9 ODM9QUE9Cj1FMz04Mz1CQz1FMz04MT1BRT1FND1CRj05RD1FNz1BRT1BMT1FMz04Mj04ND1FNT1B ND04OT1FNj05Qj1CND1FMz04MT04Qz1FMz0KPTgxPUE3PUUzPTgxPThEPUUzPTgxPUJFPUUzPTgx PTlCPUUzPTgyPTkzPUUzPTgwPTgyIiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5t YWtvOjE1CisvLyBweXRob24tZm9ybWF0CisiIGN1cnJlbnQgaGlzdG9yeSAoc3RvcmVkIGFzIFwi JXNcIikiIDoKKyIgPUU3PThGPUJFPUU1PTlDPUE4PUUzPTgxPUFFPUUzPTgzPTkyPUUzPTgyPUI5 PUUzPTgzPTg4PUUzPTgzPUFBPUUzPTgzPUJDPQo9RUY9QkM9ODhcIiVzXCIgPUUzPTgxPUE4PUUz PTgxPTk3PUUzPTgxPUE2PUU0PUJGPTlEPUU3PUFFPUExPUUzPTgxPTk1PUUzPQo9ODI9OEM9RTM9 ODE9QTY9RTM9ODE9ODQ9RTM9ODE9QkU9RTM9ODE9OTk9RUY9QkM9ODkiLAorCisvLyB0ZW1wbGF0 ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MTYKKyJMaXN0IiA6CisiPUUzPTgzPUFBPUUzPTgyPUI5 PUUzPTgzPTg4PUUzPTgxPTk5PUUzPTgyPThCIiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0 aW9ucy5tYWtvOjE2CisiIHByZXZpb3VzbHkgc3RvcmVkIGhpc3RvcmllcyIgOgorIiA9RTQ9QkI9 QTU9RTU9ODk9OEQ9RTM9ODE9QUI9RTQ9QkY9OUQ9RTc9QUU9QTE9RTM9ODE9OTc9RTM9ODE9OUY9 RTM9ODM9OTI9Cj1FMz04Mj1COT1FMz04Mz04OD1FMz04Mz1BQT1FMz04Mz1CQyIsCisKKy8vIHRl bXBsYXRlcy9oaXN0b3J5L29wdGlvbnMubWFrbzoxOAorIkNyZWF0ZSIgOgorIj1FND1CRD05Qz1F Nj04OD05MD1FMz04MT05OT1FMz04Mj04QiIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29wdGlv bnMubWFrbzoxOAorIiBhIG5ldyBlbXB0eSBoaXN0b3J5IiA6CisiID1FNj05Nj1CMD1FOD1BNj04 Rj1FMz04Mz05Mj1FMz04Mj1COT1FMz04Mz04OD1FMz04Mz1BQT1FMz04Mz1CQyIsCisKKy8vIHRl bXBsYXRlcy9oaXN0b3J5L29wdGlvbnMubWFrbzoyMAorIkNvbnN0cnVjdCB3b3JrZmxvdyIgOgor Ij1FMz04Mz1BRj1FMz04Mz1CQz1FMz04Mj1BRj1FMz04Mz05NT1FMz04Mz1BRD1FMz04Mz1CQz1F Mz04Mj05Mj1FNj1BNz04Qj0KPUU3PUFGPTg5PUUzPTgxPTk5PUUzPTgyPThCIiwKKworLy8gdGVt cGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjIwCisiIGZyb20gdGhlIGN1cnJlbnQgaGlzdG9y eSIgOgorIiA9RTc9OEY9QkU9RTU9OUM9QTg9RTM9ODE9QUU9RTM9ODM9OTI9RTM9ODI9Qjk9RTM9 ODM9ODg9RTM9ODM9QUE9RTM9ODM9QkM9Cj1FMz04MT04Qj1FMz04Mj04OSIsCisKKy8vIHRlbXBs YXRlcy9oaXN0b3J5L29wdGlvbnMubWFrbzoyMSB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1h a286MjQKKyIgY3VycmVudCBoaXN0b3J5IiA6CisiID1FNz04Rj1CRT1FNT05Qz1BOD1FMz04MT1B RT1FMz04Mz05Mj1FMz04Mj1COT1FMz04Mz04OD1FMz04Mz1BQT1FMz04Mz1CQz0KIiwKKworLy8g dGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjIzCisiU2hvdyBkZWxldGVkIiA6CisiPUU1 PTg5PThBPUU5PTk5PUE0PUUzPTgxPTk3PUUzPTgxPTlGPUUzPTgzPTkyPUUzPTgyPUI5PUUzPTgz PTg4PUUzPTgzPUFBPQo9RTM9ODM9QkM9RTM9ODI9OTI9RTg9QTE9QTg9RTc9QTQ9QkE9RTM9ODE9 OTk9RTM9ODI9OEIiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MjMKKyIg ZGF0YXNldHMgaW4gaGlzdG9yeSIgOgorIiA9RTM9ODM9OTI9RTM9ODI9Qjk9RTM9ODM9ODg9RTM9 ODM9QUE9RTM9ODM9QkM9RTM9ODE9QUU9RTM9ODM9ODc9RTM9ODM9QkM9Cj1FMz04Mj1CRj1FMz04 Mj1CQj1FMz04Mz04Mz1FMz04Mz04OCIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L3JlbmFtZS5t YWtvOjMgdGVtcGxhdGVzL2hpc3RvcnkvcmVuYW1lLm1ha286NgorIlJlbmFtZSBIaXN0b3J5IiA6 CisiPUUzPTgzPTkyPUUzPTgyPUI5PUUzPTgzPTg4PUUzPTgzPUFBPUUzPTgzPUJDPUUzPTgxPUFF PUU1PTkwPThEPUU3PUE3PUIwPQo9RTU9QTQ9ODk9RTY9OUI9QjQ9RTM9ODI9OTI9RTM9ODE9OTk9 RTM9ODI9OEIiLAorCisKKyJSZW5hbWUgSGlzdG9yaWVzIiA6CisiPUU1PTkwPThEPUU3PUE3PUIw PUU1PUE0PTg5PUU2PTlCPUI0PUUzPTgxPTk5PUUzPTgyPThCIiwKKworIlBlcmZvcm0gQWN0aW9u IiA6CisiPUU2PTkzPThEPUU0PUJEPTlDPUUzPTgyPTkyPUU1PUFFPTlGPUU4PUExPThDPUUzPTgx PTk5PUUzPTgyPThCIiwKKworIlN1Ym1pdCIgOgorIj1FNz05OT1CQj1FOT04Qz1CMj1FMz04MT05 OT1FMz04Mj04QiIsCisKKworCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9yZW5hbWUubWFrbzoxMAor IkN1cnJlbnQgTmFtZSIgOgorIj1FNz04Rj1CRT1FNT05Qz1BOD1FMz04MT1BRT1FNT05MD04RD1F Nz1BNz1CMCIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L3JlbmFtZS5tYWtvOjEwCisiTmV3IE5h bWUiIDoKKyI9RTY9OTY9QjA9RTM9ODE9OTc9RTM9ODE9ODQ9RTU9OTA9OEQ9RTc9QTc9QjAiLAor CisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9zaGFyZS5tYWtvOjMKKyJTaGFyZSBoaXN0b3JpZXMiIDoK KyI9RTM9ODM9OTI9RTM9ODI9Qjk9RTM9ODM9ODg9RTM9ODM9QUE9RTM9ODM9QkM9RTM9ODI9OTI9 RTU9ODU9QjE9RTY9OUM9ODk9Cj1FMz04MT05OT1FMz04Mj04QiIsCisKKy8vIHRlbXBsYXRlcy9o aXN0b3J5L3NoYXJlLm1ha286NgorIlNoYXJlIEhpc3RvcmllcyIgOgorIj1FMz04Mz05Mj1FMz04 Mj1COT1FMz04Mz04OD1FMz04Mz1BQT1FMz04Mz1CQz1FMz04Mj05Mj1FNT04NT1CMT1FNj05Qz04 OT0KPUUzPTgxPTk5PUUzPTgyPThCIiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvc2hhcmUubWFr bzo5CisiSGlzdG9yeSBOYW1lOiIgOgorIj1FMz04Mz05Mj1FMz04Mj1COT1FMz04Mz04OD1FMz04 Mz1BQT1FMz04Mz1CQz1FNT05MD04RCIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L3NoYXJlLm1h a286OQorIk51bWJlciBvZiBEYXRhc2V0czoiIDoKKyI9RTM9ODM9ODc9RTM9ODM9QkM9RTM9ODI9 QkY9RTM9ODI9QkI9RTM9ODM9ODM9RTM9ODM9ODg9RTY9OTU9QjAiLAorCisvLyB0ZW1wbGF0ZXMv aGlzdG9yeS9zaGFyZS5tYWtvOjkKKyJTaGFyZSBMaW5rIiA6CisiPUU1PTg1PUIxPUU2PTlDPTg5 PUUzPTgzPUFBPUUzPTgzPUIzPUUzPTgyPUFGIiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvc2hh cmUubWFrbzoxNQorIlRoaXMgaGlzdG9yeSBjb250YWlucyBubyBkYXRhLiIgOgorIj1FMz04MT05 Mz1FMz04MT1BRT1FMz04Mz05Mj1FMz04Mj1COT1FMz04Mz04OD1FMz04Mz1BQT1FMz04Mz1CQz1F Mz04MT1BQj0KPUUzPTgxPUFGPUUzPTgzPTg3PUUzPTgzPUJDPUUzPTgyPUJGPUUzPTgxPThDPUUz PTgxPTgyPUUzPTgyPThBPUUzPTgxPUJFPUUzPQo9ODE9OUI9RTM9ODI9OTM9RTM9ODA9ODIiLAor CisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9zaGFyZS5tYWtvOjIxCisiY29weSBsaW5rIHRvIHNoYXJl IiA6CisiPUU1PTg1PUIxPUU2PTlDPTg5PUUzPTgzPUFBPUUzPTgzPUIzPUUzPTgyPUFGPUUzPTgy PTkyPUUzPTgyPUIzPUUzPTgzPTk0PQo9RTM9ODM9QkM9RTM9ODE9OTk9RTM9ODI9OEIiLAorCisv LyB0ZW1wbGF0ZXMvaGlzdG9yeS9zaGFyZS5tYWtvOjI0CisiRW1haWwgb2YgVXNlciB0byBzaGFy ZSB3aXRoOiIgOgorIj1FNT04NT1CMT1FNj05Qz04OT1FMz04MT05Nz1FMz04MT05Rj1FMz04MT04 ND1FMz04Mz1BNj1FMz04Mz1CQz1FMz04Mj1CNj0KPUUzPTgxPUFFRT1FMz04Mz1BMT1FMz04Mz1C Qz1FMz04Mz1BQjoiLAorLy8iPUUzPTgxPUE0PUUzPTgxPThFPUUzPTgxPUFFPUUzPTgzPTkyPUUz PTgyPUI5PUUzPTgzPTg4PUUzPTgzPUFBPUUzPTgzPQo9QkM9RTM9ODI9OTI9RTU9ODU9QjE9RTY9 OUM9ODk9RTM9ODE9OTk9RTM9ODI9OEI9RTM9ODM9QTY9RTM9ODM9QkM9RTM9ODI9QjY9Cj1FMz04 MT1BRUU9RTM9ODM9QTE9RTM9ODM9QkM9RTM9ODM9QUI9RTM9ODI9QTI9RTM9ODM9ODk9RTM9ODM9 QUM9RTM9ODI9Qjk6IgorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5Lm1ha286NworIkdhbGF4 eSBIaXN0b3J5IiA6CisiR2FsYXh5ID1FMz04Mz05Mj1FMz04Mj1COT1FMz04Mz04OD1FMz04Mz1B QT1FMz04Mz1CQyIsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnkubWFrbzoyMzcKKyJyZWZy ZXNoIiA6CisiPUUzPTgzPUFBPUUzPTgzPTk1PUUzPTgzPUFDPUUzPTgzPTgzPUUzPTgyPUI3PUUz PTgzPUE1IiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvaGlzdG9yeS5tYWtvOjI0NQorIllvdSBhcmUg Y3VycmVudGx5IHZpZXdpbmcgYSBkZWxldGVkIGhpc3RvcnkhIiA6CisiPUU2PUI2PTg4PUU1PThF PUJCPUUzPTgxPTk3PUUzPTgxPTlGPUUzPTgzPTkyPUUzPTgyPUI5PUUzPTgzPTg4PUUzPTgzPUFB PQo9RTM9ODM9QkM9RTM9ODI9OTI9RTM9ODE9QkY9RTM9ODE9QTY9RTM9ODE9ODQ9RTM9ODE9QkU9 RTM9ODE9OTk9RTM9ODA9ODIiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5Lm1ha286Mjg5 CisiWW91ciBoaXN0b3J5IGlzIGVtcHR5LiBDbGljayAnR2V0IERhdGEnIG9uIHRoZSBsZWZ0IHBh bmUgdG8gc3RhcnQiIDoKKyI9RTM9ODM9OTI9RTM9ODI9Qjk9RTM9ODM9ODg9RTM9ODM9QUE9RTM9 ODM9QkM9RTM9ODE9QUY9RTc9QTk9QkE9RTM9ODE9QTc9Cj1FMz04MT05OT1FMz04MD04Mj1FOD1B Nz1BMz1FNj05RT05MD1FMz04Mj05Mj1FMz04MT1BRj1FMz04MT05OD1FMz04Mj04MT1FMz0KPTgy PThCPUUzPTgxPUFCPUUzPTgxPUFGPUUzPTgwPTgxPUU1PUI3PUE2PUUzPTgzPTkxPUUzPTgzPThE PUUzPTgzPUFCPUUzPTgxPQo9QUUgJz1FMz04Mz04Nz1FMz04Mz1CQz1FMz04Mj1CRj1FNT04Rj05 Nj1FNT1CRT05NycgPUUzPTgyPTkyPUUzPTgyPUFGPUUzPQo9ODM9QUE9RTM9ODM9ODM9RTM9ODI9 QUYiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjQxCisiSm9iIGlz IHdhaXRpbmcgdG8gcnVuIiA6CisiPUUzPTgyPUI4PUUzPTgzPUE3PUUzPTgzPTk2PUUzPTgxPUFG PUU1PUFFPTlGPUU4PUExPThDPUU1PUJFPTg1PUUzPTgxPUExPQo9RTM9ODE9QTc9RTM9ODE9OTki LAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjQzCisiSm9iIGlzIGN1 cnJlbnRseSBydW5uaW5nIiA6CisiPUUzPTgyPUI4PUUzPTgzPUE3PUUzPTgzPTk2PUUzPTgxPUFG PUU1PUFFPTlGPUU4PUExPThDPUU0PUI4PUFEPUUzPTgxPUE3PQo9RTM9ODE9OTkiLAorCisvLyB0 ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjQ2CisiQW4gZXJyb3Igb2NjdXJyZWQg cnVubmluZyB0aGlzIGpvYjogIiA6CisiPUUzPTgxPTkzPUUzPTgxPUFFPUUzPTgyPUI4PUUzPTgz PUE3PUUzPTgzPTk2PUUzPTgxPUFFPUU1PUFFPTlGPUU4PUExPThDPQo9RTQ9Qjg9QUQ9RTM9ODE9 QUI9RTc9OTk9QkE9RTc9OTQ9OUY9RTM9ODE9OTc9RTM9ODE9OUY9RTM9ODI9QTg9RTM9ODM9QTk9 RTM9Cj04Mz1CQzogIiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvaGlzdG9yeV9jb21tb24ubWFrbzo0 NworInJlcG9ydCB0aGlzIGVycm9yIiA6CisiPUUzPTgxPTkzPUUzPTgxPUFFPUUzPTgyPUE4PUUz PTgzPUE5PUUzPTgzPUJDPUUzPTgyPTkyPUU1PUEwPUIxPUU1PTkxPThBPQo9RTM9ODE9OTk9RTM9 ODI9OEIiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjU0CisiTm8g ZGF0YTogIiA6CisiPUUzPTgzPTg3PUUzPTgzPUJDPUUzPTgyPUJGPUU3PTg0PUExPUUzPTgxPTk3 OiAiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjU4CisiZm9ybWF0 OiAiIDoKKyI9RTM9ODM9OTU9RTM9ODI9QTk9RTM9ODM9QkM9RTM9ODM9OUU9RTM9ODM9ODM9RTM9 ODM9ODg6ICIsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1ha286NTkKKyJk YXRhYmFzZTogIiA6CisiPUUzPTgzPTg3PUUzPTgzPUJDPUUzPTgyPUJGPUUzPTgzPTk5PUUzPTgz PUJDPUUzPTgyPUI5OiAiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtv OjY2IHRlbXBsYXRlcy9yb290L21hc3RoZWFkLm1ha286MjAKKyJJbmZvOiAiIDoKKyI9RTY9ODM9 ODU9RTU9QTA9QjE6ICIsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1ha286 ODUKKy8vIHB5dGhvbi1mb3JtYXQKKyJFcnJvcjogdW5rbm93biBkYXRhc2V0IHN0YXRlIFwiJXNc Ii4iIDoKKyI9RTM9ODI9QTg9RTM9ODM9QTk9RTM9ODM9QkM6ID1FND1COD04RD1FNj05OD04RT1F Mz04MT1BQT1FMz04Mz04Nz1FMz04Mz0KPUJDPUUzPTgyPUJGPUU3PThBPUI2PUU2PTg1PThCIFwi JXNcIj1FMz04MD04MiIsCisKKy8vIHRlbXBsYXRlcy9yb290L2luZGV4Lm1ha286MzIKKyJPcHRp b25zIiA6CisiPUUzPTgyPUFBPUUzPTgzPTk3PUUzPTgyPUI3PUUzPTgzPUE3PUUzPTgzPUIzIiwK KworLy8gdGVtcGxhdGVzL3Jvb3QvaW5kZXgubWFrbzozNAorIkhpc3RvcnkiIDoKKyI9RTM9ODM9 OTI9RTM9ODI9Qjk9RTM9ODM9ODg9RTM9ODM9QUE9RTM9ODM9QkMiLAorCisvLyB0ZW1wbGF0ZXMv cm9vdC9tYXN0aGVhZC5tYWtvOjIwCisicmVwb3J0IGJ1Z3MiIDoKKyI9RTM9ODM9OTA9RTM9ODI9 QjA9RTM9ODI9OTI9RTU9QTA9QjE9RTU9OTE9OEE9RTM9ODE9OTk9RTM9ODI9OEIiLAorCisvLyB0 ZW1wbGF0ZXMvcm9vdC9tYXN0aGVhZC5tYWtvOjIxCisid2lraSIgOgorIndpa2kiLAorCisvLyB0 ZW1wbGF0ZXMvcm9vdC9tYXN0aGVhZC5tYWtvOjIyCisic2NyZWVuY2FzdHMiIDoKKyI9RTM9ODI9 Qjk9RTM9ODI9QUY9RTM9ODM9QUE9RTM9ODM9QkM9RTM9ODM9QjM9RTM9ODI9QUQ9RTM9ODM9QTM9 RTM9ODI9Qjk9Cj1FMz04Mz04OCIsCisKKy8vIHRlbXBsYXRlcy9yb290L21hc3RoZWFkLm1ha286 MjMKKyJibG9nIiA6CisiPUUzPTgzPTk2PUUzPTgzPUFEPUUzPTgyPUIwIiwKKworLy8gdGVtcGxh dGVzL3Jvb3QvbWFzdGhlYWQubWFrbzozMQorLy8gcHl0aG9uLWZvcm1hdAorIkxvZ2dlZCBpbiBh cyAlczogIiA6CisiJXMgPUUzPTgxPUE4PUUzPTgxPTk3PUUzPTgxPUE2PUUzPTgzPUFEPUUzPTgy PUIwPUUzPTgyPUE0PUUzPTgzPUIzPUU0PUI4PQo9QUQ6ICIsCisKKy8vIHRlbXBsYXRlcy9yb290 L21hc3RoZWFkLm1ha286MzEKKyJtYW5hZ2UiIDoKKyI9RTc9QUU9QTE9RTc9OTA9ODYiLAorCisv LyB0ZW1wbGF0ZXMvcm9vdC9tYXN0aGVhZC5tYWtvOjMyCisibG9nb3V0IiA6CisiPUUzPTgzPUFE PUUzPTgyPUIwPUUzPTgyPUEyPUUzPTgyPUE2PUUzPTgzPTg4IiwKKworLy8gdGVtcGxhdGVzL3Jv b3QvbWFzdGhlYWQubWFrbzozNAorIkFjY291bnQ6ICIgOgorIj1FMz04Mj1BMj1FMz04Mj1BQj1F Mz04Mj1BNj1FMz04Mz1CMz1FMz04Mz04ODogIiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvbWFzdGhl YWQubWFrbzozNAorImNyZWF0ZSIgOgorIj1FND1CRD05Qz1FNj04OD05MCIsCisKKy8vIHRlbXBs YXRlcy9yb290L21hc3RoZWFkLm1ha286MzUKKyJsb2dpbiIgOgorIj1FMz04Mz1BRD1FMz04Mj1C MD1FMz04Mj1BND1FMz04Mz1CMyIsCisKKy8vIHRlbXBsYXRlcy9yb290L3Rvb2xfbWVudS5tYWtv OjUyCisiR2FsYXh5IFRvb2xzIiA6CisiR2FsYXh5ID1FMz04Mz04ND1FMz04Mz1CQz1FMz04Mz1B Qj1FNz1CRT1BNCIsCisKKy8vIHRlbXBsYXRlcy9yb290L3Rvb2xfbWVudS5tYWtvOjEyOQorIldv cmtmbG93IiA6CisiPUUzPTgzPUFGPUUzPTgzPUJDPUUzPTgyPUFGPUUzPTgzPTk1PUUzPTgzPUFE PUUzPTgzPUJDIiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvdG9vbF9tZW51Lm1ha286MTM0CisiTWFu YWdlIiA6CisiPUU3PUFFPUExPUU3PTkwPTg2IiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvdG9vbF9t ZW51Lm1ha286MTM0Cisid29ya2Zsb3dzIiA6CisiPUUzPTgzPUFGPUUzPTgzPUJDPUUzPTgyPUFG PUUzPTgzPTk1PUUzPTgzPUFEPUUzPTgzPUJDIiwKKworLy8gdGVtcGxhdGVzL3VzZXIvaW5kZXgu bWFrbzoyIHRlbXBsYXRlcy91c2VyL2luZGV4Lm1ha286NAorIkFjY291bnQgc2V0dGluZ3MiIDoK KyI9RTM9ODI9QTI9RTM9ODI9QUI9RTM9ODI9QTY9RTM9ODM9QjM9RTM9ODM9ODg9RTg9QTg9QUQ9 RTU9QUU9OUEiLAorCisvLyB0ZW1wbGF0ZXMvdXNlci9pbmRleC5tYWtvOjcKKy8vIHB5dGhvbi1m b3JtYXQKKyJZb3UgYXJlIGN1cnJlbnRseSBsb2dnZWQgaW4gYXMgJXMuIiA6CisiJXMgPUUzPTgx PUE4PUUzPTgxPTk3PUUzPTgxPUE2PUUzPTgzPUFEPUUzPTgyPUIwPUUzPTgyPUE0PUUzPTgzPUIz PUU0PUI4PQo9QUQ9RTM9ODA9ODIiLAorCisvLyB0ZW1wbGF0ZXMvdXNlci9pbmRleC5tYWtvOjkK KyJDaGFuZ2UgeW91ciBwYXNzd29yZCIgOgorIj1FMz04Mz05MT1FMz04Mj1COT1FMz04Mz1BRj1F Mz04Mz1CQz1FMz04Mz04OT1FNT1BND04OT1FNj05Qj1CNCIsCisKKy8vIHRlbXBsYXRlcy91c2Vy L2luZGV4Lm1ha286MTAKKyJVcGRhdGUgeW91ciBlbWFpbCBhZGRyZXNzIiA6CisiPUUzPTgzPUEx PUUzPTgzPUJDPUUzPTgzPUFCPUUzPTgyPUEyPUUzPTgzPTg5PUUzPTgzPUFDPUUzPTgyPUI5PUU1 PUE0PTg5PQo9RTY9OUI9QjQiLAorCisvLyB0ZW1wbGF0ZXMvdXNlci9pbmRleC5tYWtvOjExCisi TG9nb3V0IiA6CisiPUUzPTgzPUFEPUUzPTgyPUIwPUUzPTgyPUEyPUUzPTgyPUE2PUUzPTgzPTg4 IiwKKworLy8gdGVtcGxhdGVzL3VzZXIvaW5kZXgubWFrbzoxNgorIkxvZ2luIiA6CisiPUUzPTgz PUFEPUUzPTgyPUIwPUUzPTgyPUE0PUUzPTgzPUIzIiwKKworLy8gdGVtcGxhdGVzL3VzZXIvaW5k ZXgubWFrbzoxNworIkNyZWF0ZSBuZXcgYWNjb3VudCIgOgorIj1FNj05Nj1CMD1FOD1BNj04Rj1F Mz04Mj1BMj1FMz04Mj1BQj1FMz04Mj1BNj1FMz04Mz1CMz1FMz04Mz04OD1FMz04Mj05Mj0KPUU0 PUJEPTlDPUU2PTg4PTkwPUUzPTgxPTk5PUUzPTgyPThCIgorCit9KQoKZGlmZiAtciA4MzQ2ZWM0 YmFhMzk5MmY0ZGMwMTYxZjBmYzc5YTBiYTg5M2MwYTYzIC1yIGRjYzBjMTkxNDdlYWQ4NmM2ZTM1 N2M3PQozOWUwNTEzYWRkZmUwMmNiMiBzdGF0aWMvc2NyaXB0cy9ubHMvbG9jYWxlLmpzCi0tLSAv ZGV2L251bGwKKysrIGIvc3RhdGljL3NjcmlwdHMvbmxzL2xvY2FsZS5qcwpAQCAtMCwwICsxLDUx NyBAQAorLyoqIGVuL21haW4gbG9jYWxpemF0aW9uIGhhc2ggLSBmb3IgdXNlIHdpdGggcmVxdWly ZWpzJyBpMThuIHBsdWdpbiAqLworZGVmaW5lKHsKKyAgICByb290IDogeworLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS09Ci0tLS0tIGxvY2FsaXplZAorImhpc3RvcnkiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0 ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MjQKKyJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVs ZXRlIHRoZSBjdXJyZW50IGhpc3Rvcnk/IiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL3Jvb3Qv aGlzdG9yeS5tYWtvOjM4CisiY29sbGFwc2UgYWxsIiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVz L2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286MgorIkhpc3RvcnkgSXRlbSBBdHRyaWJ1dGVz IiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286 MTkKKyJFZGl0IEF0dHJpYnV0ZXMiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvZGF0YXNldC9l ZGl0X2F0dHJpYnV0ZXMubWFrbzo2NAorIlRoaXMgd2lsbCBpbnNwZWN0IHRoZSBkYXRhc2V0IGFu ZCBhdHRlbXB0IHRvIGNvcnJlY3QgdGhlIGFib3ZlIGNvbHVtbiB2YWw9CnVlcyBpZiB0aGV5IGFy ZSBub3QgYWNjdXJhdGUuIiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2RhdGFzZXQvZWRpdF9h dHRyaWJ1dGVzLm1ha286NjgKKyJSZXF1aXJlZCBtZXRhZGF0YSB2YWx1ZXMgYXJlIG1pc3Npbmcu IFNvbWUgb2YgdGhlc2UgdmFsdWVzIG1heSBub3QgYmUgZWRpPQp0YWJsZSBieSB0aGUgdXNlci4g U2VsZWN0aW5nIFwiQXV0by1kZXRlY3RcIiB3aWxsIGF0dGVtcHQgdG8gZml4IHRoZXNlIHZhbHU9 CmVzLiIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9kYXRhc2V0L2VkaXRfYXR0cmlidXRlcy5t YWtvOjc4CisiQ29udmVydCB0byBuZXcgZm9ybWF0IiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVz L2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286ODQKKyJDb252ZXJ0IHRvIiA6CitmYWxzZSwK KworLy8gdGVtcGxhdGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286OTUKKyJUaGlzIHdp bGwgY3JlYXRlIGEgbmV3IGRhdGFzZXQgd2l0aCB0aGUgY29udGVudHMgb2YgdGhpcyBkYXRhc2V0 IGNvbnZlcnRlPQpkIHRvIGEgbmV3IGZvcm1hdC4iIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMv ZGF0YXNldC9lZGl0X2F0dHJpYnV0ZXMubWFrbzoxMTEKKyJDaGFuZ2UgZGF0YSB0eXBlIiA6Citm YWxzZSwKKworLy8gdGVtcGxhdGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286MTE3Cisi TmV3IFR5cGUiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvZGF0YXNldC9lZGl0X2F0dHJpYnV0 ZXMubWFrbzoxMjQKKyJUaGlzIHdpbGwgY2hhbmdlIHRoZSBkYXRhdHlwZSBvZiB0aGUgZXhpc3Rp bmcgZGF0YXNldCBidXQgPGk+bm90PC9pPiBtb2RpPQpmeSBpdHMgY29udGVudHMuIFVzZSB0aGlz IGlmIEdhbGF4eSBoYXMgaW5jb3JyZWN0bHkgZ3Vlc3NlZCB0aGUgdHlwZSBvZiB5b3U9CnIgZGF0 YXNldC4iIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvZGF0YXNldC9lZGl0X2F0dHJpYnV0ZXMu bWFrbzoxMzcKKyJDb3B5IEhpc3RvcnkgSXRlbSIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9o aXN0b3J5L2xpc3QubWFrbzozCisiWW91ciBzYXZlZCBoaXN0b3JpZXMiIDoKK2ZhbHNlLAorCisv LyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286MTkKKyJTdG9yZWQgSGlzdG9yaWVzIiA6Citm YWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjIxIHRlbXBsYXRlcy9yb290 L2hpc3RvcnkubWFrbzoyMzkKKyJoaWRlIGRlbGV0ZWQiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0 ZXMvaGlzdG9yeS9saXN0Lm1ha286MjMKKyJzaG93IGRlbGV0ZWQiIDoKK2ZhbHNlLAorCisvLyB0 ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286MjcKKyJOYW1lIiA6CitmYWxzZSwKKworLy8gdGVt cGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjI3CisiU2l6ZSIgOgorZmFsc2UsCisKKy8vIHRlbXBs YXRlcy9oaXN0b3J5L2xpc3QubWFrbzoyNworIkxhc3QgbW9kaWZpZWQiIDoKK2ZhbHNlLAorCisv LyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286MjcKKyJBY3Rpb25zIiA6CitmYWxzZSwKKwor Ly8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjQ1CisicmVuYW1lIiA6CitmYWxzZSwKKwor Ly8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjQ2Cisic3dpdGNoIHRvIiA6CitmYWxzZSwK KworLy8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjQ3CisiZGVsZXRlIiA6CitmYWxzZSwK KworLy8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjQ5CisidW5kZWxldGUiIDoKK2ZhbHNl LAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286NTUKKyJBY3Rpb24iIDoKK2ZhbHNl LAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286NTYgdGVtcGxhdGVzL2hpc3Rvcnkv b3B0aW9ucy5tYWtvOjIxCisiU2hhcmUiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9y eS9saXN0Lm1ha286NTYgdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjE1CisiUmVuYW1l IiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjU2IHRlbXBsYXRl cy9oaXN0b3J5L29wdGlvbnMubWFrbzoyNAorIkRlbGV0ZSIgOgorZmFsc2UsCisKKy8vIHRlbXBs YXRlcy9oaXN0b3J5L2xpc3QubWFrbzo1OAorIlVuZGVsZXRlIiA6CitmYWxzZSwKKworLy8gdGVt cGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjY1CisiWW91IGhhdmUgbm8gc3RvcmVkIGhpc3Rvcmll cyIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29wdGlvbnMubWFrbzo1CisiSGlz dG9yeSBPcHRpb25zIiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5t YWtvOjkKKyJZb3UgbXVzdCBiZSAiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9v cHRpb25zLm1ha286OQorImxvZ2dlZCBpbiIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9oaXN0 b3J5L29wdGlvbnMubWFrbzo5CisiIHRvIHN0b3JlIG9yIHN3aXRjaCBoaXN0b3JpZXMuIiA6Citm YWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjE1CisvLyBweXRob24t Zm9ybWF0CisiIGN1cnJlbnQgaGlzdG9yeSAoc3RvcmVkIGFzIFwiJXNcIikiIDoKK2ZhbHNlLAor CisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MTYKKyJMaXN0IiA6CitmYWxzZSwK KworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjE2CisiIHByZXZpb3VzbHkgc3Rv cmVkIGhpc3RvcmllcyIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29wdGlvbnMu bWFrbzoxOAorIkNyZWF0ZSIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29wdGlv bnMubWFrbzoxOAorIiBhIG5ldyBlbXB0eSBoaXN0b3J5IiA6CitmYWxzZSwKKworLy8gdGVtcGxh dGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjIwCisiQ29uc3RydWN0IHdvcmtmbG93IiA6CitmYWxz ZSwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjIwCisiIGZyb20gdGhlIGN1 cnJlbnQgaGlzdG9yeSIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29wdGlvbnMu bWFrbzoyMSB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MjQKKyIgY3VycmVudCBoaXN0 b3J5IiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjIzCisi U2hvdyBkZWxldGVkIiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5t YWtvOjIzCisiIGRhdGFzZXRzIGluIGhpc3RvcnkiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMv aGlzdG9yeS9yZW5hbWUubWFrbzozIHRlbXBsYXRlcy9oaXN0b3J5L3JlbmFtZS5tYWtvOjYKKyJS ZW5hbWUgSGlzdG9yeSIgOgorZmFsc2UsCisKKworIlJlbmFtZSBIaXN0b3JpZXMiIDoKK2ZhbHNl LAorCisiUGVyZm9ybSBBY3Rpb24iIDoKK2ZhbHNlLAorCisiU3VibWl0IiA6CitmYWxzZSwKKwor Ly8gdGVtcGxhdGVzL2hpc3RvcnkvcmVuYW1lLm1ha286MTAKKyJDdXJyZW50IE5hbWUiIDoKK2Zh bHNlLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9yZW5hbWUubWFrbzoxMAorIk5ldyBOYW1lIiA6 CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvc2hhcmUubWFrbzozCisiU2hhcmUgaGlz dG9yaWVzIiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvc2hhcmUubWFrbzo2Cisi U2hhcmUgSGlzdG9yaWVzIiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvc2hhcmUu bWFrbzo5CisiSGlzdG9yeSBOYW1lOiIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5 L3NoYXJlLm1ha286OQorIk51bWJlciBvZiBEYXRhc2V0czoiIDoKK2ZhbHNlLAorCisvLyB0ZW1w bGF0ZXMvaGlzdG9yeS9zaGFyZS5tYWtvOjkKKyJTaGFyZSBMaW5rIiA6CitmYWxzZSwKKworLy8g dGVtcGxhdGVzL2hpc3Rvcnkvc2hhcmUubWFrbzoxNQorIlRoaXMgaGlzdG9yeSBjb250YWlucyBu byBkYXRhLiIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L3NoYXJlLm1ha286MjEK KyJjb3B5IGxpbmsgdG8gc2hhcmUiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9z aGFyZS5tYWtvOjI0CisiRW1haWwgb2YgVXNlciB0byBzaGFyZSB3aXRoOiIgOgorZmFsc2UsCisK Ky8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnkubWFrbzo3CisiR2FsYXh5IEhpc3RvcnkiIDoKK2Zh bHNlLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5Lm1ha286MjM3CisicmVmcmVzaCIgOgor ZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnkubWFrbzoyNDUKKyJZb3UgYXJlIGN1 cnJlbnRseSB2aWV3aW5nIGEgZGVsZXRlZCBoaXN0b3J5ISIgOgorZmFsc2UsCisKKy8vIHRlbXBs YXRlcy9yb290L2hpc3RvcnkubWFrbzoyODkKKyJZb3VyIGhpc3RvcnkgaXMgZW1wdHkuIENsaWNr ICdHZXQgRGF0YScgb24gdGhlIGxlZnQgcGFuZSB0byBzdGFydCIgOgorZmFsc2UsCisKKy8vIHRl bXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1ha286NDEKKyJKb2IgaXMgd2FpdGluZyB0byBy dW4iIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjQz CisiSm9iIGlzIGN1cnJlbnRseSBydW5uaW5nIiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL3Jv b3QvaGlzdG9yeV9jb21tb24ubWFrbzo0NgorIkFuIGVycm9yIG9jY3VycmVkIHJ1bm5pbmcgdGhp cyBqb2I6ICIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1h a286NDcKKyJyZXBvcnQgdGhpcyBlcnJvciIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9yb290 L2hpc3RvcnlfY29tbW9uLm1ha286NTQKKyJObyBkYXRhOiAiIDoKK2ZhbHNlLAorCisvLyB0ZW1w bGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjU4CisiZm9ybWF0OiAiIDoKK2ZhbHNlLAor CisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjU5CisiZGF0YWJhc2U6ICIg OgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1ha286NjYgdGVt cGxhdGVzL3Jvb3QvbWFzdGhlYWQubWFrbzoyMAorIkluZm86ICIgOgorZmFsc2UsCisKKy8vIHRl bXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1ha286ODUKKy8vIHB5dGhvbi1mb3JtYXQKKyJF cnJvcjogdW5rbm93biBkYXRhc2V0IHN0YXRlIFwiJXNcIi4iIDoKK2ZhbHNlLAorCisvLyB0ZW1w bGF0ZXMvcm9vdC9pbmRleC5tYWtvOjMyCisiT3B0aW9ucyIgOgorZmFsc2UsCisKKy8vIHRlbXBs YXRlcy9yb290L2luZGV4Lm1ha286MzQKKyJIaXN0b3J5IiA6CitmYWxzZSwKKworLy8gdGVtcGxh dGVzL3Jvb3QvbWFzdGhlYWQubWFrbzoyMAorInJlcG9ydCBidWdzIiA6CitmYWxzZSwKKworLy8g dGVtcGxhdGVzL3Jvb3QvbWFzdGhlYWQubWFrbzoyMQorIndpa2kiIDoKK2ZhbHNlLAorCisvLyB0 ZW1wbGF0ZXMvcm9vdC9tYXN0aGVhZC5tYWtvOjIyCisic2NyZWVuY2FzdHMiIDoKK2ZhbHNlLAor CisvLyB0ZW1wbGF0ZXMvcm9vdC9tYXN0aGVhZC5tYWtvOjIzCisiYmxvZyIgOgorZmFsc2UsCisK Ky8vIHRlbXBsYXRlcy9yb290L21hc3RoZWFkLm1ha286MzEKKy8vIHB5dGhvbi1mb3JtYXQKKyJM b2dnZWQgaW4gYXMgJXM6ICIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9yb290L21hc3RoZWFk Lm1ha286MzEKKyJtYW5hZ2UiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9tYXN0aGVh ZC5tYWtvOjMyCisibG9nb3V0IiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL3Jvb3QvbWFzdGhl YWQubWFrbzozNAorIkFjY291bnQ6ICIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRlcy9yb290L21h c3RoZWFkLm1ha286MzQKKyJjcmVhdGUiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9t YXN0aGVhZC5tYWtvOjM1CisibG9naW4iIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC90 b29sX21lbnUubWFrbzo1MgorIkdhbGF4eSBUb29scyIgOgorZmFsc2UsCisKKy8vIHRlbXBsYXRl cy9yb290L3Rvb2xfbWVudS5tYWtvOjEyOQorIldvcmtmbG93IiA6CitmYWxzZSwKKworLy8gdGVt cGxhdGVzL3Jvb3QvdG9vbF9tZW51Lm1ha286MTM0CisiTWFuYWdlIiA6CitmYWxzZSwKKworLy8g dGVtcGxhdGVzL3Jvb3QvdG9vbF9tZW51Lm1ha286MTM0Cisid29ya2Zsb3dzIiA6CitmYWxzZSwK KworLy8gdGVtcGxhdGVzL3VzZXIvaW5kZXgubWFrbzoyIHRlbXBsYXRlcy91c2VyL2luZGV4Lm1h a286NAorIkFjY291bnQgc2V0dGluZ3MiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvdXNlci9p bmRleC5tYWtvOjcKKy8vIHB5dGhvbi1mb3JtYXQKKyJZb3UgYXJlIGN1cnJlbnRseSBsb2dnZWQg aW4gYXMgJXMuIiA6CitmYWxzZSwKKworLy8gdGVtcGxhdGVzL3VzZXIvaW5kZXgubWFrbzo5Cisi Q2hhbmdlIHlvdXIgcGFzc3dvcmQiIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0ZXMvdXNlci9pbmRl eC5tYWtvOjEwCisiVXBkYXRlIHlvdXIgZW1haWwgYWRkcmVzcyIgOgorZmFsc2UsCisKKy8vIHRl bXBsYXRlcy91c2VyL2luZGV4Lm1ha286MTEKKyJMb2dvdXQiIDoKK2ZhbHNlLAorCisvLyB0ZW1w bGF0ZXMvdXNlci9pbmRleC5tYWtvOjE2CisiTG9naW4iIDoKK2ZhbHNlLAorCisvLyB0ZW1wbGF0 ZXMvdXNlci9pbmRleC5tYWtvOjE3CisiQ3JlYXRlIG5ldyBhY2NvdW50IiA6CitmYWxzZSwKKwor CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0gbmVlZCB0byBiZSBsb2NhbGl6ZWQKKyJhbm9ueW1v dXMgdXNlciIgOgorZmFsc2UsCisKKyJVc2luZyAiIDoKK2ZhbHNlLAorCisiVGhlcmUgd2FzIGFu IGVycm9yIGdldHRpbmcgdGhlIGRhdGEgZm9yIHRoaXMgZGF0YXNldCIgOgorZmFsc2UsCisKKyJU aGlzIGRhdGFzZXQgaGFzIGJlZW4gZGVsZXRlZCBhbmQgcmVtb3ZlZCBmcm9tIGRpc2suIiA6Citm YWxzZSwKKworIlRoaXMgZGF0YXNldCBoYXMgYmVlbiBkZWxldGVkLiIgOgorZmFsc2UsCisKKyJU aGlzIGRhdGFzZXQgaGFzIGJlZW4gaGlkZGVuLiIgOgorZmFsc2UsCisKKyJmb3JtYXQiIDoKK2Zh bHNlLAorCisiZGF0YWJhc2UiIDoKK2ZhbHNlLAorCisiVGhpcyBoaXN0b3J5IGlzIGVtcHR5IiA6 CitmYWxzZSwKKworIk5vIG1hdGNoaW5nIGRhdGFzZXRzIGZvdW5kIiA6CitmYWxzZSwKKworIllv dSBhcmUgb3ZlciB5b3VyIGRpc2sgcXVvdGEuIiA6CitmYWxzZSwKKworIlRvb2wgZXhlY3V0aW9u IGlzIG9uIGhvbGQgdW50aWwgeW91ciBkaXNrIHVzYWdlIGRyb3BzIGJlbG93IHlvdXIgYWxsb2Nh dGU9CmQgcXVvdGEuIiA6CitmYWxzZSwKKworIkFsbCIgOgorZmFsc2UsCisKKyJOb25lIiA6Citm YWxzZSwKKworIkZvciBhbGwgc2VsZWN0ZWQiIDoKK2ZhbHNlLAorCisiVGhpcyBoaXN0b3J5IGlz IGVtcHR5LiBDbGljayAnR2V0IERhdGEnIG9uIHRoZSBsZWZ0IHRvb2wgbWVudSB0byBzdGFydCIg OgorZmFsc2UsCisKKyJJbmNsdWRlIERlbGV0ZWQgRGF0YXNldHMiIDoKK2ZhbHNlLAorCisiSW5j bHVkZSBIaWRkZW4gRGF0YXNldHMiIDoKK2ZhbHNlLAorCisiRWRpdCBoaXN0b3J5IHRhZ3MiIDoK K2ZhbHNlLAorCisiRWRpdCBoaXN0b3J5IEFubm90YXRpb24iIDoKK2ZhbHNlLAorCisiT3BlcmF0 aW9ucyBvbiBtdWx0aXBsZSBkYXRhc2V0cyIgOgorZmFsc2UsCisKKyJTZWFyY2ggZGF0YXNldHMi IDoKK2ZhbHNlLAorCisiY2xlYXIgc2VhcmNoIChlc2MpIiA6CitmYWxzZSwKKworImxvYWRpbmcu Li4iIDoKK2ZhbHNlLAorCisiSGlkZSBkYXRhc2V0cyIgOgorZmFsc2UsCisKKyJVbmhpZGUgZGF0 YXNldHMiIDoKK2ZhbHNlLAorCisiRGVsZXRlIGRhdGFzZXRzIiA6CitmYWxzZSwKKworIlVuZGVs ZXRlIGRhdGFzZXRzIiA6CitmYWxzZSwKKworIlBlcm1hbmVudGx5IGRlbGV0ZSBkYXRhc2V0cyIg OgorZmFsc2UsCisKKyJDbGljayB0byByZW5hbWUgaGlzdG9yeSIgOgorZmFsc2UsCisKKyJWaWV3 IGRhdGEiIDoKK2ZhbHNlLAorCisiRWRpdCBhdHRyaWJ1dGVzIiA6CitmYWxzZSwKKworIlZpZXcg ZGV0YWlscyIgOgorZmFsc2UsCisKKyJSdW4gdGhpcyBqb2IgYWdhaW4iIDoKK2ZhbHNlLAorCisi RWRpdCBkYXRhc2V0IHRhZ3MiIDoKK2ZhbHNlLAorCisiRWRpdCBkYXRhc2V0IGFubm90YXRpb24i IDoKK2ZhbHNlLAorCisiIENsaWNrIDxhIGhyZWY9M0RcImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBj bGFzcz0zRFwiZGF0YXNldC11bmRlbGV0ZVwiPmhlcj0KZTwvYT4gdG8gdW5kZWxldGUgaXQgb3Ig PGEgaHJlZj0zRFwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPTNEXCJkYXRhc2V0PQotcHVy Z2VcIj5oZXJlPC9hPiB0byBpbW1lZGlhdGVseSByZW1vdmUgaXQgZnJvbSBkaXNrIiA6CitmYWxz ZSwKKworIiBDbGljayA8YSBocmVmPTNEXCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9M0Rc ImRhdGFzZXQtdW5oaWRlXCI+aGVyZTw9Ci9hPiB0byB1bmhpZGUgaXQiIDoKK2ZhbHNlLAorCisi RG93bmxvYWQiIDoKK2ZhbHNlLAorCisiVmlzdWFsaXplIiA6CitmYWxzZQorCisKKy8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tPQotLS0tLQorfSwKKyAgICAnamEnICA6IHRydWUsCisgICAgJ3poJyAgOiB0cnVl Cit9KTsKCmRpZmYgLXIgODM0NmVjNGJhYTM5OTJmNGRjMDE2MWYwZmM3OWEwYmE4OTNjMGE2MyAt ciBkY2MwYzE5MTQ3ZWFkODZjNmUzNTdjNz0KMzllMDUxM2FkZGZlMDJjYjIgc3RhdGljL3Njcmlw dHMvbmxzL3poL2xvY2FsZS5qcwotLS0gL2Rldi9udWxsCisrKyBiL3N0YXRpYy9zY3JpcHRzL25s cy96aC9sb2NhbGUuanMKQEAgLTAsMCArMSw1NzAgQEAKKy8qKiB6aCBsb2NhbGl6YXRpb24gKi8K K2RlZmluZSh7CisKKy8vIHRlbXBsYXRlcy9iYXNlX3BhbmVscy5tYWtvOjUKKyJHYWxheHkiIDoK KyJHYWxheHkiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MjQKKyJBcmUg eW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSBjdXJyZW50IGhpc3Rvcnk/IiA6CisiPUU3 PUExPUFFPUU4PUFFPUE0PUU4PUE2PTgxPUU1PTg4PUEwPUU5PTk5PUE0PUU1PUJEPTkzPUU1PTg5 PThEPUU3PTlBPTg0PQo9RTU9OEU9ODY9RTU9OEY9QjI9RTg9QUU9QjA9RTU9QkQ9OTU9RTU9OTA9 OTc9RUY9QkM9OUYiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9oaXN0b3J5Lm1ha286MzgKKyJjb2xs YXBzZSBhbGwiIDoKKyI9RTU9ODU9QTg9RTk9ODM9QTg9RTY9OTQ9QjY9RTc9QkM9QTkiLAorCisv LyB0ZW1wbGF0ZXMvcm9vdC9pbmRleC5tYWtvOjUKKyJUb29scyIgOgorIj1FNT1CNz1BNT1FNT04 NT1CNyIsCisKKworLy8gdG9vbHMvKioueG1sCisiR2V0IERhdGEiIDoKKyI9RTg9OEU9Qjc9RTU9 OEY9OTY9RTY9OTU9QjA9RTY9OEQ9QUUiLAorCisiR2V0IEVOQ09ERSBEYXRhIiA6CisiPUU4PThF PUI3PUU1PThGPTk2RU5DT0RFPUU2PTk1PUIwPUU2PThEPUFFIiwKKworIkVOQ09ERSBUb29scyIg OgorIkVOQ09ERT1FNT1CNz1BNT1FNT04NT1CNyIsCisKKyJMaWZ0LU92ZXIiIDoKKyI9RTc9ODk9 ODg9RTY9OUM9QUM9RTg9QkQ9QUM9RTY9OEQ9QTIiLAorCisiVGV4dCBNYW5pcHVsYXRpb24iIDoK KyI9RTY9OTY9ODc9RTY9OUM9QUM9RTY9OTM9OEQ9RTQ9QkQ9OUMiLAorCisiRmlsdGVyIGFuZCBT b3J0IiA6CisiPUU4PUJGPTg3PUU2PUJCPUE0PUU1PTkyPThDPUU2PThFPTkyPUU1PUJBPThGIiwK KworIkpvaW4sIFN1YnRyYWN0IGFuZCBHcm91cCIgOgorIj1FNz1CQj05Mz1FNT05MD04OD1FRj1C Qz04Qz1FNT1CNz1BRT1FOT05Qj04Nj1FND1COD04RT1FNT04OD04Nj1FNz1CQj04NCIsCisKKyJD b252ZXJ0IEZvcm1hdHMiIDoKKyI9RTY9QTA9QkM9RTU9QkM9OEY9RTg9QkQ9QUM9RTY9OEQ9QTIi LAorCisiRXh0cmFjdCBGZWF0dXJlcyIgOgorIj1FNz04OT1COT1FNT1CRT04MT1FNj04Rj05MD1F NT04Rj05NiIsCisKKyJGZXRjaCBTZXF1ZW5jZXMiIDoKKyI9RTg9OEU9Qjc9RTU9OEY9OTY9RTU9 QkE9OEY9RTU9ODg9OTciLAorCisiRmV0Y2ggQWxpZ25tZW50cyIgOgorIj1FOD04RT1CNz1FNT04 Rj05Nj1FNj1BRj05ND1FNT1BRj1COT1FND1COD04QT1FNz05QT04ND1FNT1CQT04Rj1FNT04OD05 NyIsCisKKyJHZXQgR2Vub21pYyBTY29yZXMiIDoKKyI9RTg9OEU9Qjc9RTU9QkU9OTc9RTU9OUY9 QkE9RTU9OUI9QTA9RTc9QkI9ODQ9RTU9ODg9ODY9RTY9OTU9QjAiLAorCisiT3BlcmF0ZSBvbiBH ZW5vbWljIEludGVydmFscyIgOgorIj1FNT05Rj1CQT1FNT05Qj1BMD1FNz1CQj04ND1FNT04Qz1C QT1FOT05Nz1CND1FNj05Mz04RD1FND1CRD05QyIsCisKKyJTdGF0aXN0aWNzIiA6CisiPUU3PUJC PTlGPUU4PUFFPUExPUU5PTg3PThGIiwKKworIkdyYXBoL0Rpc3BsYXkgRGF0YSIgOgorIj1FNT05 Qj1CRT1FNT1CRD1BMj1FRj1CQz04Rj1FNj05NT1CMD1FNj04RD1BRSIsCisKKyJSZWdpb25hbCBW YXJpYXRpb24iIDoKKyI9RTU9OEM9QkE9RTU9OUY9OUY9RTU9QTQ9OUE9RTY9ODA9ODE9RTY9ODA9 QTciLAorCisiRXZvbHV0aW9uOiBIeVBoeSIgOgorIj1FOD1CRj05Qj1FNT04Qz05NjogSHlQaHki LAorCisiVGF4b25vbXkgbWFuaXB1bGF0aW9uIiA6CisiPUU1PTg4PTg2PUU3PUIxPUJCPUU1PUE0 PTg0PUU3PTkwPTg2IiwKKworIlNvbGV4YSB0b29scyIgOgorIlNvbGV4YT1FNT1CNz1BNT1FNT04 NT1CNyIsCisKKyJGQVNUQSBtYW5pcHVsYXRpb24iIDoKKyJGQVNUQT1FNT1BND04ND1FNz05MD04 NiIsCisKKyJTaG9ydCBSZWFkIFFDIGFuZCBNYW5pcHVsYXRpb24iIDoKKyI9RTc9OUY9QUQ9RTc9 ODk9ODc9RTY9QUU9QjU9RTY9OTU9QjA9RTY9OEQ9QUU9RTg9QjQ9QTg9RTk9ODc9OEY9RTY9OEU9 QTc9Cj1FNT04OD1CNj1FNT04Rj04QT1FNT1BND04ND1FNz05MD04NiIsCisKKyJTaG9ydCBSZWFk IE1hcHBpbmciIDoKKyI9RTc9OUY9QUQ9RTc9ODk9ODc9RTY9QUU9QjU9RTU9OUI9OUU9RTg9QjQ9 QjQiLAorCisKKy8vIHRlbXBsYXRlcy9hZG1pbl9tYWluLm1ha286MyB0ZW1wbGF0ZXMvYWRtaW5f bWFpbi5tYWtvOjgKKyJHYWxheHkgQWRtaW5pc3RyYXRpb24iIDoKKyJHYWxheHkgPUU3PUFFPUEx PUU3PTkwPTg2IiwKKworLy8gdGVtcGxhdGVzL2FkbWluX21haW4ubWFrbzoxNworIkFkbWluIHBh c3N3b3JkOiAiIDoKKyI9RTc9QUU9QTE9RTc9OTA9ODY9RTU9OTE9OTg9RTU9QUY9ODY9RTc9QTA9 ODE6ICIsCisKKy8vIHRlbXBsYXRlcy9hZG1pbl9tYWluLm1ha286MTkKKyJSZWxvYWQgdG9vbDog IiA6CisiPUU5PTg3PThEPUU2PTk2PUIwPUU4PUJEPUJEPUU1PTg1PUE1PUU1PUI3PUE1PUU1PTg1 PUI3IiwKKworLy8gdGVtcGxhdGVzL2FkbWluX21haW4ubWFrbzozNQorIlJlbG9hZCIgOgorIj1F OT04Nz04RD1FNj05Nj1CMD1FOD1CRD1CRD1FNT04NT1BNSIsCisKKy8vIHRlbXBsYXRlcy9kYXRh c2V0L2VkaXRfYXR0cmlidXRlcy5tYWtvOjIKKyJIaXN0b3J5IEl0ZW0gQXR0cmlidXRlcyIgOgor Ij1FNT04RT04Nj1FNT04Rj1CMj1FOT1BMT1COT1FNz05Qj1BRT1FNT1CMT05RT1FNj04MD1BNyIs CisKKy8vIHRlbXBsYXRlcy9kYXRhc2V0L2VkaXRfYXR0cmlidXRlcy5tYWtvOjE5CisiRWRpdCBh dHRyaWJ1dGVzIiA6CisiPUU3PUJDPTk2PUU4PUJFPTkxPUU1PUIxPTlFPUU2PTgwPUE3IiwKKwor Ly8gdGVtcGxhdGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286NjQKKyJUaGlzIHdpbGwg aW5zcGVjdCB0aGUgZGF0YXNldCBhbmQgYXR0ZW1wdCB0byBjb3JyZWN0IHRoZSBhYm92ZSBjb2x1 bW4gdmFsPQp1ZXMgaWYgdGhleSBhcmUgbm90IGFjY3VyYXRlLiIgOgorIj1FNj05NT1CMD1FNj04 RD1BRT1FOT05Qj04Nj1FNj1BMz04MD1FNj05Rj1BNT1FRj1CQz04Qz1FOD04Qj1BNT1FNj05Qz04 OT0KPUU5PTk0PTk5PUU4PUFGPUFGPUVGPUJDPThDPUU2PTlCPUI0PUU2PUFEPUEzPUU0PUI4PThB PUU4PUJGPUIwPUU2PUEwPThGPUU0PQo9Qjg9QUQ9RTc9OUE9ODQ9RTU9ODA9QkM9RTM9ODA9ODIi LAorCisvLyB0ZW1wbGF0ZXMvZGF0YXNldC9lZGl0X2F0dHJpYnV0ZXMubWFrbzo2OAorIlJlcXVp cmVkIG1ldGFkYXRhIHZhbHVlcyBhcmUgbWlzc2luZy4gU29tZSBvZiB0aGVzZSB2YWx1ZXMgbWF5 IG5vdCBiZSBlZGk9CnRhYmxlIGJ5IHRoZSB1c2VyLiBTZWxlY3RpbmcgXCJBdXRvLWRldGVjdFwi IHdpbGwgYXR0ZW1wdCB0byBmaXggdGhlc2UgdmFsdT0KZXMuIiA6CisiPUU3PUJDPUJBPUU1PUIw PTkxPUU2PTg5PTgwPUU5PTlDPTgwPUU3PTlBPTg0bWV0YWRhdGE9RTc9OUE9ODQ9RTU9ODA9QkM9 Cj1FMz04MD04Mj1FNz05ND1BOD1FNj04OD1CNz1FNT04Rj1BRj1FOD04Mz1CRD1FNj05Nz1BMD1F Nj1CMz05NT1FNT1BRj1COT1FOD0KPUJGPTk5PUU0PUJBPTlCPUU1PTgwPUJDPUU4PUJGPTlCPUU4 PUExPThDPUU3PUJDPTk2PUU4PUJFPTkxPUUzPTgwPTgyPUU5PTgwPQo9ODk9RTY9OEI9QTk9RTI9 ODA9OUM9RTg9ODc9QUE9RTU9OEE9QTg9RTY9QTM9ODA9RTY9QjU9OEI9RTI9ODA9OUQ9RTY9OUQ9 QTU9Cj1FNT1CMD05RD1FOD1BRj05NT1FND1CRj1BRT1FNj1BRD1BMz1FOD1CRj05OT1FND1CQT05 Qj1FNT04MD1CQz1FMz04MD04MiIsCisKKy8vIHRlbXBsYXRlcy9kYXRhc2V0L2VkaXRfYXR0cmli dXRlcy5tYWtvOjc4CisiQ29udmVydCB0byBuZXcgZm9ybWF0IiA6CisiPUU4PUJEPUFDPUU2PThE PUEyPUU0PUI4PUJBPUU2PTk2PUIwPUU2PUEwPUJDPUU1PUJDPThGIiwKKworLy8gdGVtcGxhdGVz L2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286ODQKKyJDb252ZXJ0IHRvIiA6CisiPUU4PUJE PUFDPUU2PThEPUEyPUU0PUI4PUJBIiwKKworLy8gdGVtcGxhdGVzL2RhdGFzZXQvZWRpdF9hdHRy aWJ1dGVzLm1ha286OTUKKyJUaGlzIHdpbGwgY3JlYXRlIGEgbmV3IGRhdGFzZXQgd2l0aCB0aGUg Y29udGVudHMgb2YgdGhpcyBkYXRhc2V0IGNvbnZlcnRlPQpkIHRvIGEgbmV3IGZvcm1hdC4iIDoK KyI9RTg9QkY9OTk9RTU9QjA9ODY9RTQ9QkE9QTc9RTc9OTQ9OUY9RTQ9Qjg9ODA9RTQ9Qjg9QUE9 RTg9QkQ9QUM9RTY9OEQ9QTI9Cj1FNj1BMD1CQz1FNT1CQz04Rj1FNT05MD04RT1FNz05QT04ND1F Nj05Nj1CMD1FNj05NT1CMD1FNj04RD1BRT1FOT05Qj04Nj1FRj0KPUJDPThDIiwKKworLy8gdGVt cGxhdGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286MTExCisiQ2hhbmdlIGRhdGEgdHlw ZSIgOgorIj1FNj05ND1COT1FNT04Rj05OD1FNj05NT1CMD1FNj04RD1BRT1FNz1CMT1CQj1FNT05 RT04QiIsCisKKy8vIHRlbXBsYXRlcy9kYXRhc2V0L2VkaXRfYXR0cmlidXRlcy5tYWtvOjExNwor Ik5ldyBUeXBlIiA6CisiPUU2PTk2PUIwPUU3PUIxPUJCPUU1PTlFPThCIiwKKworLy8gdGVtcGxh dGVzL2RhdGFzZXQvZWRpdF9hdHRyaWJ1dGVzLm1ha286MTI0CisiVGhpcyB3aWxsIGNoYW5nZSB0 aGUgZGF0YXR5cGUgb2YgdGhlIGV4aXN0aW5nIGRhdGFzZXQgYnV0IDxpPm5vdDwvaT4gbW9kaT0K ZnkgaXRzIGNvbnRlbnRzLiBVc2UgdGhpcyBpZiBHYWxheHkgaGFzIGluY29ycmVjdGx5IGd1ZXNz ZWQgdGhlIHR5cGUgb2YgeW91PQpyIGRhdGFzZXQuIiA6CisiPUU4PUJGPTk5PUU1PUIwPTg2PUU2 PTk0PUI5PUU1PThGPTk4PUU1PUI3PUIyPUU2PTlDPTg5PUU2PTk1PUIwPUU2PThEPUFFPQo9RTk9 OUI9ODY9RTc9OUE9ODQ9RTY9OTU9QjA9RTY9OEQ9QUU9RTc9QjE9QkI9RTU9OUU9OEI9RUY9QkM9 OEM9RTQ9QkQ9ODY8aT49Cj1FND1COD04RDwvaT49RTY9OTQ9Qjk9RTU9OEY9OTg9RTU9ODU9QjY9 RTU9ODY9ODU9RTU9QUU9Qjk9RTM9ODA9ODI9RTU9QkQ9Cj05M0dhbGF4eT1FND1COD04RD1FOD04 Mz1CRD1FNj1BRD1BMz1FNz1BMT1BRT1FNT04OD1BND1FNj05Nj1BRD1FND1CRD1BMD1FNz0KPTlB PTg0PUU2PTk1PUIwPUU2PThEPUFFPUU3PUIxPUJCPUU1PTlFPThCPUU2PTk3PUI2PUVGPUJDPThD PUU4PUFFPUJFPUU3PUJEPQo9QUU9RTg9QUY9QTU9RTU9OEY9ODI9RTY9OTU9QjA9RTM9ODA9ODIi LAorCisvLyB0ZW1wbGF0ZXMvZGF0YXNldC9lZGl0X2F0dHJpYnV0ZXMubWFrbzoxMzcKKyJDb3B5 IEhpc3RvcnkgSXRlbSIgOgorIj1FNT1BND04RD1FNT04OD1CNj1FNT04RT04Nj1FNT04Rj1CMj1F OD1BRT1CMD1FNT1CRD05NT1FOT1BMT1COSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3Qu bWFrbzozCisiU2F2ZWQgSGlzdG9yaWVzIiA6CisiPUU1PUI3PUIyPUU0PUJGPTlEPUU1PUFEPTk4 PUU3PTlBPTg0PUU1PThFPTg2PUU1PThGPUIyIiwKKworCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9s aXN0Lm1ha286MjEgdGVtcGxhdGVzL3Jvb3QvaGlzdG9yeS5tYWtvOjIzOQorImhpZGUgZGVsZXRl ZCIgOgorIj1FOT05QT05MD1FOD05Nz04Rj1FNT1CNz1CMj1FNT04OD1BMD1FOT05OT1BND1FNz05 QT04ND1FNj05NT1CMD1FNj04RD1BRSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFr bzoyMworInNob3cgZGVsZXRlZCIgOgorIj1FNj05OD1CRT1FNz1BND1CQT1FNT1CNz1CMj1FNT04 OD1BMD1FOT05OT1BND1FNz05QT04ND1FNj05NT1CMD1FNj04RD1BRSIsCisKKy8vIHRlbXBsYXRl cy9oaXN0b3J5L2xpc3QubWFrbzoyNworIk5hbWUiIDoKKyI9RTU9OTA9OEQ9RTc9QTc9QjAiLAor CisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286MjcKKyJTaXplIiA6CisiPUU1PUE0PUE3 PUU1PUIwPThGIiwKKworLy8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjI3CisiTGFzdCBt b2RpZmllZCIgOgorIj1FNj05Qz04MD1FNT05MD04RT1FND1CRj1BRT1FNj05ND1COT1FNj05Nz1C Nj1FOT05Nz1CNCIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFrbzoyNworIkFjdGlv bnMiIDoKKyI9RTY9OTM9OEQ9RTQ9QkQ9OUMiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0 Lm1ha286NDUKKyJyZW5hbWUiIDoKKyI9RTk9ODc9OEQ9RTU9OTE9QkQ9RTU9OTA9OEQiLAorCisv LyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286NDYKKyJzd2l0Y2ggdG8iIDoKKyI9RTU9ODg9 ODc9RTY9OEQ9QTI9RTU9ODg9QjAiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286 NDcKKyJkZWxldGUiIDoKKyI9RTU9ODg9QTA9RTk9OTk9QTQiLAorCisvLyB0ZW1wbGF0ZXMvaGlz dG9yeS9saXN0Lm1ha286NDkKKyJ1bmRlbGV0ZSIgOgorIj1FOD1CRj05OD1FNT04RT05RiIsCisK Ky8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFrbzo1NQorIkFjdGlvbiIgOgorIj1FNj05Mz04 RD1FND1CRD05QyIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFrbzo1NiB0ZW1wbGF0 ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MjEKKyJTaGFyZSIgOgorIj1FNT04NT1CMT1FND1CQT1B QiIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L2xpc3QubWFrbzo1NiB0ZW1wbGF0ZXMvaGlzdG9y eS9vcHRpb25zLm1ha286MTUKKyJSZW5hbWUiIDoKKyI9RTk9ODc9OEQ9RTU9OTE9QkQ9RTU9OTA9 OEQiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286NTYgdGVtcGxhdGVzL2hpc3Rv cnkvb3B0aW9ucy5tYWtvOjI0CisiRGVsZXRlIiA6CisiPUU1PTg4PUEwPUU5PTk5PUE0IiwKKwor Ly8gdGVtcGxhdGVzL2hpc3RvcnkvbGlzdC5tYWtvOjU4CisiVW5kZWxldGUiIDoKKyI9RTg9QkY9 OTg9RTU9OEU9OUYiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9saXN0Lm1ha286NjUKKyJZb3Ug aGF2ZSBubyBzdG9yZWQgaGlzdG9yaWVzIiA6CisiPUU2PUIyPUExPUU2PTlDPTg5PUU1PUFEPTk4 PUU1PTgyPUE4PUU3PTlBPTg0PUU1PThFPTg2PUU1PThGPUIyPUU4PUFFPUIwPQo9RTU9QkQ9OTUi LAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286NQorIkhpc3RvcnkgT3B0aW9u cyIgOgorIj1FNT04RT04Nj1FNT04Rj1CMj1FOD1BRT1CMD1FNT1CRD05NT1FOT04MD04OT1FOT1B MT1COSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29wdGlvbnMubWFrbzo5CisiWW91IG11c3Qg YmUgIiA6CisiPUU0PUJEPUEwPUU1PUJGPTg1PUU5PUExPUJCPUU2PTg4PTkwPUU0PUI4PUJBIiwK KworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtvOjkKKyJsb2dnZWQgaW4iIDoKKyI9 RTc9OTk9QkI9RTU9QkQ9OTUiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286 OQorIiB0byBzdG9yZSBvciBzd2l0Y2ggaGlzdG9yaWVzLiIgOgorIj1FND1CQj1BNT1FNT1BRD05 OD1FNT04Mj1BOD1FNj04OD05Nj1FNT04OD04Nz1FNj04RD1BMj1FNT04RT04Nj1FNT04Rj1CMj0K PUU4PUFFPUIwPUU1PUJEPTk1IiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtv OjE1CisvLyBweXRob24tZm9ybWF0CisiIGN1cnJlbnQgaGlzdG9yeSAoc3RvcmVkIGFzIFwiJXNc IikiIDoKKyIgPUU1PUJEPTkzPUU1PTg5PThEPUU1PThFPTg2PUU1PThGPUIyPUVGPUJDPTg4PUU0 PUJCPUE1XCIlc1wiPUU1PUJEPUEyPUU1PQo9QkM9OEY9RTU9QUQ9OTg9RTU9ODI9QTg9RUY9QkM9 ODkiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MTYKKyJMaXN0IiA6Cisi PUU1PTg4PTk3PUU4PUExPUE4IiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5tYWtv OjE2CisiIHByZXZpb3VzbHkgc3RvcmVkIGhpc3RvcmllcyIgOgorIiA9RTQ9QkI9QTU9RTU9ODk9 OEQ9RTU9QUQ9OTg9RTU9ODI9QTg9RTc9OUE9ODQ9RTU9OEU9ODY9RTU9OEY9QjI9RTg9QUU9QjA9 Cj1FNT1CRD05NSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29wdGlvbnMubWFrbzoxOAorIkNy ZWF0ZSIgOgorIj1FNT04OD05Qj1FNT1CQj1CQSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L29w dGlvbnMubWFrbzoxOAorIiBhIG5ldyBlbXB0eSBoaXN0b3J5IiA6CisiID1FND1COD04MD1FND1C OD1BQT1FNj05Nj1CMD1FNz05QT04ND1FNz1BOT1CQT1FNz05OT1CRD1FNT04RT04Nj1FNT04Rj1C Mj0KPUU4PUFFPUIwPUU1PUJEPTk1IiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkvb3B0aW9ucy5t YWtvOjIwCisiQ29uc3RydWN0IHdvcmtmbG93IiA6CisiPUU2PTlFPTg0PUU1PUJCPUJBPUU1PUI3 PUE1PUU0PUJEPTlDPUU2PUI1PTgxPUU3PUE4PThCIiwKKworLy8gdGVtcGxhdGVzL2hpc3Rvcnkv b3B0aW9ucy5tYWtvOjIwCisiIGZyb20gdGhlIGN1cnJlbnQgaGlzdG9yeSIgOgorIiA9RTY9OUQ9 QTU9RTY9QkE9OTA9RTQ9QkE9OEU9RTU9QkQ9OTM9RTU9ODk9OEQ9RTU9OEU9ODY9RTU9OEY9QjIi LAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286MjEgdGVtcGxhdGVzL2hpc3Rv cnkvb3B0aW9ucy5tYWtvOjI0CisiIGN1cnJlbnQgaGlzdG9yeSIgOgorIiA9RTU9QkQ9OTM9RTU9 ODk9OEQ9RTU9OEU9ODY9RTU9OEY9QjIiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25z Lm1ha286MjMKKyJTaG93IGRlbGV0ZWQiIDoKKyI9RTY9OTg9QkU9RTc9QTQ9QkE9RTU9Qjc9QjI9 RTU9ODg9QTA9RTk9OTk9QTQiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9vcHRpb25zLm1ha286 MjMKKyIgZGF0YXNldHMgaW4gaGlzdG9yeSIgOgorIiA9RTU9OEU9ODY9RTU9OEY9QjI9RTQ9Qjg9 QUQ9RTc9OUE9ODQ9RTY9OTU9QjA9RTY9OEQ9QUU9RTk9OUI9ODYiLAorCisvLyB0ZW1wbGF0ZXMv aGlzdG9yeS9yZW5hbWUubWFrbzozIHRlbXBsYXRlcy9oaXN0b3J5L3JlbmFtZS5tYWtvOjYKKyJS ZW5hbWUgSGlzdG9yeSIgOgorIj1FOT04Nz04RD1FNT05MT1CRD1FNT05MD04RD1FNT04RT04Nj1F NT04Rj1CMiIsCisKKworIlJlbmFtZSBIaXN0b3JpZXMiIDoKKyI9RTk9ODc9OEQ9RTU9OTE9QkQ9 RTU9OTA9OEQ9RTU9OEU9ODY9RTU9OEY9QjI9RTg9QUU9QjA9RTU9QkQ9OTUiLAorCisiUGVyZm9y bSBBY3Rpb24iIDoKKyI9RTg9QkY9OTA9RTg9QTE9OEM9RTY9OTM9OEQ9RTQ9QkQ9OUMiLAorCisi U3VibWl0IiA6CisiPUU2PThGPTkwPUU0PUJBPUE0IiwKKworCisKKy8vIHRlbXBsYXRlcy9oaXN0 b3J5L3JlbmFtZS5tYWtvOjEwCisiQ3VycmVudCBOYW1lIiA6CisiPUU1PUJEPTkzPUU1PTg5PThE PUU1PTkwPThEPUU3PUE3PUIwIiwKKworLy8gdGVtcGxhdGVzL2hpc3RvcnkvcmVuYW1lLm1ha286 MTAKKyJOZXcgTmFtZSIgOgorIj1FNj05Nj1CMD1FNT05MD04RD1FNz1BNz1CMCIsCisKKy8vIHRl bXBsYXRlcy9oaXN0b3J5L3NoYXJlLm1ha286MworIlNoYXJlIGhpc3RvcmllcyIgOgorIj1FNT04 NT1CMT1FND1CQT1BQj1FNT04RT04Nj1FNT04Rj1CMj1FOD1BRT1CMD1FNT1CRD05NSIsCisKKy8v IHRlbXBsYXRlcy9oaXN0b3J5L3NoYXJlLm1ha286NgorIlNoYXJlIEhpc3RvcmllcyIgOgorIj1F NT04NT1CMT1FND1CQT1BQj1FNT04RT04Nj1FNT04Rj1CMj1FOD1BRT1CMD1FNT1CRD05NSIsCisK Ky8vIHRlbXBsYXRlcy9oaXN0b3J5L3NoYXJlLm1ha286OQorIkhpc3RvcnkgTmFtZToiIDoKKyI9 RTU9OEU9ODY9RTU9OEY9QjI9RTU9OTA9OEQ9RTc9QTc9QjAiLAorCisvLyB0ZW1wbGF0ZXMvaGlz dG9yeS9zaGFyZS5tYWtvOjkKKyJOdW1iZXIgb2YgRGF0YXNldHM6IiA6CisiPUU2PTk1PUIwPUU2 PThEPUFFPUU5PTlCPTg2PUU2PTk1PUIwPUU5PTg3PThGIiwKKworLy8gdGVtcGxhdGVzL2hpc3Rv cnkvc2hhcmUubWFrbzo5CisiU2hhcmUgTGluayIgOgorIj1FNT04NT1CMT1FND1CQT1BQj1FOT05 Mz1CRT1FNj04RT1BNSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L3NoYXJlLm1ha286MTUKKyJU aGlzIGhpc3RvcnkgY29udGFpbnMgbm8gZGF0YS4iIDoKKyI9RTg9QkY9OTk9RTk9QTE9Qjk9RTU9 OEU9ODY9RTU9OEY9QjI9RTQ9Qjg9QUQ9RTY9QjI9QTE9RTY9OUM9ODk9RTY9OTU9QjA9Cj1FNj04 RD1BRSIsCisKKy8vIHRlbXBsYXRlcy9oaXN0b3J5L3NoYXJlLm1ha286MjEKKyJjb3B5IGxpbmsg dG8gc2hhcmUiIDoKKyI9RTU9QTQ9OEQ9RTU9ODg9QjY9RTk9OTM9QkU9RTY9OEU9QTU9RTQ9QkI9 QTU9RTU9ODU9QjE9RTQ9QkE9QUIiLAorCisvLyB0ZW1wbGF0ZXMvaGlzdG9yeS9zaGFyZS5tYWtv OjI0CisiRW1haWwgb2YgVXNlciB0byBzaGFyZSB3aXRoOiIgOgorIj1FNT04Rj05MT1FOT04MD04 MT1FNT04OD1CMD1FOD1CRj05OT1FND1CQT05QkVtYWlsPUU1PTlDPUIwPUU1PTlEPTgwPUU4PQo9 QkY9OUI9RTg9QTE9OEM9RTU9ODg9ODY9RTQ9QkE9QUIiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9o aXN0b3J5Lm1ha286NworIkdhbGF4eSBIaXN0b3J5IiA6CisiR2FsYXh5ID1FNT04RT04Nj1FNT04 Rj1CMiIsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnkubWFrbzoyMzcKKyJyZWZyZXNoIiA6 CisiPUU1PTg4PUI3PUU2PTk2PUIwIiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvaGlzdG9yeS5tYWtv OjI0NQorIllvdSBhcmUgY3VycmVudGx5IHZpZXdpbmcgYSBkZWxldGVkIGhpc3RvcnkhIiA6Cisi PUU2PUFEPUEzPUU1PTlDPUE4PUU2PTlGPUE1PUU3PTlDPThCPUU1PUI3PUIyPUU1PTg4PUEwPUU5 PTk5PUE0PUU3PTlBPTg0PQo9RTU9OEU9ODY9RTU9OEY9QjIiLAorCisvLyB0ZW1wbGF0ZXMvcm9v dC9oaXN0b3J5Lm1ha286Mjg5CisiWW91ciBoaXN0b3J5IGlzIGVtcHR5LiBDbGljayAnR2V0IERh dGEnIG9uIHRoZSBsZWZ0IHBhbmUgdG8gc3RhcnQiIDoKKyI9RTU9OEU9ODY9RTU9OEY9QjI9RTU9 Qjc9QjI9RTc9QTk9QkE9RUY9QkM9OEM9RTg9QUY9Qjc9RTU9OEQ9OTU9RTU9ODc9QkI9Cj1FNT1C Nz1BNj1FOD1CRT1COT1FNz1BQT05Nz1FNj1BMD1CQz1FND1COD1BRD1FMj04MD05OD1FOD04RT1C Nz1FNT04Rj05Nj1FNj0KPTk1PUIwPUU2PThEPUFFPUUyPTgwPTk5IiwKKworLy8gdGVtcGxhdGVz L3Jvb3QvaGlzdG9yeV9jb21tb24ubWFrbzo0MQorIkpvYiBpcyB3YWl0aW5nIHRvIHJ1biIgOgor Ij1FNz1BRD04OT1FNT1CRT04NT1FOD1CRj05MD1FOD1BMT04Qz1FNz05QT04ND1FOD1CRj05Qj1F Nz1BOD04QiIsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1ha286NDMKKyJK b2IgaXMgY3VycmVudGx5IHJ1bm5pbmciIDoKKyI9RTY9QUQ9QTM9RTU9OUM9QTg9RTg9QkY9OTA9 RTg9QTE9OEM9RTc9OUE9ODQ9RTg9QkY9OUI9RTc9QTg9OEIiLAorCisvLyB0ZW1wbGF0ZXMvcm9v dC9oaXN0b3J5X2NvbW1vbi5tYWtvOjQ2CisiQW4gZXJyb3Igb2NjdXJyZWQgcnVubmluZyB0aGlz IGpvYjogIiA6CisiPUU4PUJGPTlCPUU3PUE4PThCPUU4PUJGPTkwPUU4PUExPThDPUU2PTk3PUI2 PUU1PTg3PUJBPUU5PTk0PTk5ICIsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9u Lm1ha286NDcKKyJyZXBvcnQgdGhpcyBlcnJvciIgOgorIj1FNj04QT1BNT1FNT05MT04QT1FOT05 ND05OT1FOD1BRj1BRiIsCisKKy8vIHRlbXBsYXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1ha286 NTQKKyJObyBkYXRhOiAiIDoKKyI9RTY9QjI9QTE9RTY9OUM9ODk9RTY9OTU9QjA9RTY9OEQ9QUU9 RUY9QkM9OUEgIiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvaGlzdG9yeV9jb21tb24ubWFrbzo1OAor ImZvcm1hdDogIiA6CisiPUU2PUEwPUJDPUU1PUJDPThGPUVGPUJDPTlBICIsCisKKy8vIHRlbXBs YXRlcy9yb290L2hpc3RvcnlfY29tbW9uLm1ha286NTkKKyJkYXRhYmFzZTogIiA6CisiPUU2PTk1 PUIwPUU2PThEPUFFPUU1PUJBPTkzPUVGPUJDPTlBICIsCisKKy8vIHRlbXBsYXRlcy9yb290L2hp c3RvcnlfY29tbW9uLm1ha286NjYgdGVtcGxhdGVzL3Jvb3QvbWFzdGhlYWQubWFrbzoyMAorIklu Zm86ICIgOgorIj1FND1CRj1BMT1FNj04MT1BRj1FRj1CQz05QSAiLAorCisvLyB0ZW1wbGF0ZXMv cm9vdC9oaXN0b3J5X2NvbW1vbi5tYWtvOjg1CisvLyBweXRob24tZm9ybWF0CisiRXJyb3I6IHVu a25vd24gZGF0YXNldCBzdGF0ZSBcIiVzXCIuIiA6CisiPUU5PTk0PTk5PUU4PUFGPUFGPUVGPUJD PTlBPUU2PTlDPUFBPUU3PTlGPUE1PUU3PTlBPTg0PUU2PTk1PUIwPUU2PThEPUFFPQo9RTk9OUI9 ODY9RTc9OEE9QjY9RTY9ODA9ODEgXCIlc1wiPUUzPTgwPTgyIiwKKworCisiT3B0aW9ucyIgOgor Ij1FOT04MD04OT1FOT1BMT1COSIsCisKKyJIaXN0b3J5IiA6CisiPUU1PThFPTg2PUU1PThGPUIy IiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvbWFzdGhlYWQubWFrbzoyMAorInJlcG9ydCBidWdzIiA6 CisiPUU5PTk0PTk5PUU4PUFGPUFGPUU2PThBPUE1PUU1PTkxPThBIiwKKworLy8gdGVtcGxhdGVz L3Jvb3QvbWFzdGhlYWQubWFrbzoyMQorIndpa2kiIDoKKyJ3aWtpIiwKKworLy8gdGVtcGxhdGVz L3Jvb3QvbWFzdGhlYWQubWFrbzoyMgorInNjcmVlbmNhc3RzIiA6CisiPUU2PUJDPTk0PUU3PUE0 PUJBPUU4PUE3PTg2PUU5PUEyPTkxIiwKKworCisvLyB0ZW1wbGF0ZXMvcm9vdC9tYXN0aGVhZC5t YWtvOjIzCisiYmxvZyIgOgorIj1FNT04RD05QT1FNT1BRT1BMiIsCisKKy8vIHRlbXBsYXRlcy9y b290L21hc3RoZWFkLm1ha286MzEKKy8vIHB5dGhvbi1mb3JtYXQKKyJMb2dnZWQgaW4gYXMgJXM6 ICIgOgorIj1FND1CQj1BNSVzPUU3PTlBPTg0PUU4PUJBPUFCPUU0PUJCPUJEPUU3PTk5PUJCPUU1 PUJEPTk1OiAiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9tYXN0aGVhZC5tYWtvOjMxCisibWFuYWdl IiA6CisiPUU3PUFFPUExPUU3PTkwPTg2IiwKKworLy8gdGVtcGxhdGVzL3Jvb3QvbWFzdGhlYWQu bWFrbzozMgorImxvZ291dCIgOgorIj1FNj1CMz1BOD1FOT05ND04MCIsCisKKy8vIHRlbXBsYXRl cy9yb290L21hc3RoZWFkLm1ha286MzQKKyJBY2NvdW50OiAiIDoKKyI9RTU9Qjg9OTA9RTY9ODg9 Qjc6ICIsCisKKy8vIHRlbXBsYXRlcy9yb290L21hc3RoZWFkLm1ha286MzQKKyJjcmVhdGUiIDoK KyI9RTU9ODg9OUI9RTU9QkI9QkEiLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC9tYXN0aGVhZC5tYWtv OjM1CisibG9naW4iIDoKKyI9RTc9OTk9QkI9RTU9QkQ9OTUiLAorCisvLyB0ZW1wbGF0ZXMvcm9v dC90b29sX21lbnUubWFrbzo1MgorIkdhbGF4eSBUb29scyIgOgorIkdhbGF4eSA9RTU9Qjc9QTU9 RTU9ODU9QjciLAorCisvLyB0ZW1wbGF0ZXMvcm9vdC90b29sX21lbnUubWFrbzoxMjkKKyJXb3Jr ZmxvdyIgOgorIj1FNT1CNz1BNT1FND1CRD05Qz1FNj1CNT04MT1FNz1BOD04QiIsCisKKy8vIHRl bXBsYXRlcy9yb290L3Rvb2xfbWVudS5tYWtvOjEzNAorIk1hbmFnZSIgOgorIj1FNz1BRT1BMT1F Nz05MD04NiIsCisKKy8vIHRlbXBsYXRlcy9yb290L3Rvb2xfbWVudS5tYWtvOjEzNAorIndvcmtm bG93cyIgOgorIj1FNT1CNz1BNT1FND1CRD05Qz1FNj1CNT04MT1FNz1BOD04QiIsCisKKy8vIHRl bXBsYXRlcy91c2VyL2luZGV4Lm1ha286MiB0ZW1wbGF0ZXMvdXNlci9pbmRleC5tYWtvOjQKKyJB Y2NvdW50IHNldHRpbmdzIiA6CisiPUU1PUI4PTkwPUU2PTg4PUI3PUU4PUFFPUJFPUU3PUJEPUFF IiwKKworLy8gdGVtcGxhdGVzL3VzZXIvaW5kZXgubWFrbzo3CisvLyBweXRob24tZm9ybWF0Cisi WW91IGFyZSBjdXJyZW50bHkgbG9nZ2VkIGluIGFzICVzLiIgOgorIj1FNT1CRD05Mz1FNT04OT04 RD1FND1CQj1BNSVzPUU3PTlBPTg0PUU4PUJBPUFCPUU0PUJCPUJEPUU3PTk5PUJCPUU1PUJEPQo9 OTUiLAorCisvLyB0ZW1wbGF0ZXMvdXNlci9pbmRleC5tYWtvOjkKKyJDaGFuZ2UgeW91ciBwYXNz d29yZCIgOgorIj1FND1CRj1BRT1FNj05ND1COT1FNT1BRj04Nj1FNz1BMD04MSIsCisKKy8vIHRl bXBsYXRlcy91c2VyL2luZGV4Lm1ha286MTAKKyJVcGRhdGUgeW91ciBlbWFpbCBhZGRyZXNzIiA6 CisiPUU2PTlCPUI0PUU2PTk2PUIwPUU3PTk0PUI1PUU1PUFEPTkwPUU5PTgyPUFFPUU0PUJCPUI2 PUU1PTlDPUIwPUU1PTlEPTgwIiwKKworLy8gdGVtcGxhdGVzL3VzZXIvaW5kZXgubWFrbzoxMQor IkxvZ291dCIgOgorIj1FNj1CMz1BOD1FOT05ND04MCIsCisKKy8vIHRlbXBsYXRlcy91c2VyL2lu ZGV4Lm1ha286MTYKKyJMb2dpbiIgOgorIj1FNz05OT1CQj1FNT1CRD05NSIsCisKKy8vIHRlbXBs YXRlcy91c2VyL2luZGV4Lm1ha286MTcKKyJDcmVhdGUgbmV3IGFjY291bnQiIDoKKyI9RTU9ODg9 OUI9RTU9QkI9QkE9RTY9OTY9QjA9RTU9Qjg9OTA9RTY9ODg9QjciLAorCisiU2hvdyBUb29sIFNl YXJjaCIgOgorIj1FNj05OD1CRT1FNz1BND1CQT1FNT1CNz1BNT1FNT04NT1CNz1FNj05MD05Qz1F Nz1CND1BMiIsCisKKyJBbmFseXplIERhdGEiIDoKKyI9RTU9ODg9ODY9RTY9OUU9OTA9RTY9OTU9 QjA9RTY9OEQ9QUUiLAorCisiYW5hbHlzaXMiIDoKKyI9RTU9ODg9ODY9RTY9OUU9OTAiLAorCisi SGlzdG9yeSBMaXN0cyIgOgorIj1FNT04RT04Nj1FNT04Rj1CMj1FOD1BRT1CMD1FNT1CRD05NT1F Nj1COD04NT1FNT04RD05NSIsCisKKyJIaXN0b3JpZXMgU2hhcmVkIHdpdGggTWUiIDoKKyI9RTU9 ODU9QjE9RTQ9QkE9QUI9RTc9OUE9ODQ9RTY9OTU9QjA9RTY9OEQ9QUUiLAorCisiQ3VycmVudCBI aXN0b3J5IiA6CisiPUU1PUJEPTkzPUU1PTg5PThEPUU1PThFPTg2PUU1PThGPUIyPUU4PUFFPUIw PUU1PUJEPTk1IiwKKworIkNyZWF0ZSBOZXciIDoKKyI9RTU9ODg9OUI9RTU9QkI9QkEiLAorCisi Q2xvbmUiIDoKKyI9RTU9QTQ9OEQ9RTU9ODg9QjYiLAorCisiU2hhcmUgb3IgUHVibGlzaCIgOgor Ij1FNT04NT1CMT1FND1CQT1BQj1FNj04OD05Nj1FNT04Rj05MT1FNT1COD04MyIsCisKKyJFeHRy YWN0IFdvcmtmbG93IiA6CisiPUU2PThGPTkwPUU1PThGPTk2PUU1PUI3PUE1PUU0PUJEPTlDPUU2 PUI1PTgxPUU3PUE4PThCIiwKKworIkRhdGFzZXQgU2VjdXJpdHkiIDoKKyI9RTY9OTU9QjA9RTY9 OEQ9QUU9RTU9QUU9ODk9RTU9ODU9QTg9RTY9ODA9QTciLAorCisKKyJTaG93IERlbGV0ZWQgRGF0 YXNldHMiIDoKKyI9RTY9OTg9QkU9RTc9QTQ9QkE9RTU9Qjc9QjI9RTU9ODg9QTA9RTk9OTk9QTQ9 RTc9OUE9ODQ9RTY9OTU9QjA9RTY9OEQ9QUUiLAorCisiU2hvdyBIaWRkZW4gRGF0YXNldHMiIDoK KyI9RTY9OTg9QkU9RTc9QTQ9QkE9RTk9OUE9OTA9RTg9OTc9OEY9RTc9OUE9ODQ9RTY9OTU9QjA9 RTY9OEQ9QUUiLAorCisiU2hvdyBTdHJ1Y3R1cmUiIDoKKyI9RTY9OTg9QkU9RTc9QTQ9QkE9RTc9 QkI9OTM9RTY9OUU9ODQiLAorCisiRXhwb3J0IHRvIEZpbGUiIDoKKyI9RTU9QUY9QkM9RTU9ODc9 QkE9RTQ9Qjg9QkE9RTY9OTY9ODc9RTQ9QkI9QjYiLAorCisiT3RoZXIgQWN0aW9ucyIgOgorIj1F NT04NT1CNj1FND1CQj05NiIsCisKKyJJbXBvcnQgZnJvbSBGaWxlIiA6CisiPUU1PUFGPUJDPUU1 PTg1PUE1PUU2PTk2PTg3PUU0PUJCPUI2IiwKKworIlNoYXJlZCBEYXRhIiA6CisiPUU2PTk1PUIw PUU2PThEPUFFPUU1PTg1PUIxPUU0PUJBPUFCIiwKKworIkRhdGEgTGlicmFyaWVzIiA6CisiPUU2 PTk1PUIwPUU2PThEPUFFPUU0PUJCPTkzPUU1PUJBPTkzIiwKKworIlB1Ymxpc2hlZCBIaXN0b3Jp ZXMiIDoKKyI9RTU9Qjc9QjI9RTU9OEY9OTE9RTU9Qjg9ODM9RTc9OUE9ODQ9RTU9OEU9ODY9RTU9 OEY9QjI9RTg9QUU9QjA9RTU9QkQ9OTUiLAorCisiUHVibGlzaGVkIFdvcmtmbG93cyIgOgorIj1F NT1CNz1CMj1FNT04Rj05MT1FNT1COD04Mz1FNz05QT04ND1FNT1CNz1BNT1FND1CRD05Qz1FNj1C NT04MT1FNz1BOD04QiIsCisKKyJQdWJsaXNoZWQgUGFnZXMiIDoKKyI9RTU9Qjc9QjI9RTU9OEY9 OTE9RTU9Qjg9ODM9RTc9OUE9ODQ9RTk9QTE9QjU9RTk9OUQ9QTIiLAorCisiSGVscCIgOgorIj1F NT1COD1BRT1FNT04QT1BOSIsCisKKyJFbWFpbCBjb21tZW50cywgYnVnIHJlcG9ydHMsIG9yIHN1 Z2dlc3Rpb25zIiA6CisiPUU1PThGPTkxPUU5PTgyPUFFPUU0PUJCPUI2PUU4PUJGPTlCPUU4PUEx PThDPUU2PTg0PThGPUU4PUE3PTgxPUU1PThGPThEPQo9RTk9QTY9ODg9RTY9ODg9OTY9RTk9OTQ9 OTk9RTg9QUY9QUY9RTY9OEE9QTU9RTU9OTE9OEEiLAorCisKKyJVc2VyIiA6CisiPUU3PTk0PUE4 PUU2PTg4PUI3IiwKKworCisiUmVnaXN0ZXIiIDoKKyI9RTY9QjM9QTg9RTU9ODY9OEMiLAorCisi U3VwcG9ydCIgOgorIj1FNj04QT04MD1FNj05Qz1BRj1FNj05ND1BRj1FNj04Qz04MSIsCisKKyJH YWxheHkgV2lraSIgOgorIkdhbGF4eT1FNz05OT1CRT1FNz1BNz05MSIsCisKKyJWaWRlbyB0dXRv cmlhbHMgKHNjcmVlbmNhc3RzKSIgOgorIj1FOD1BNz04Nj1FOT1BMj05MT1FNj05NT05OT1FNz1B OD04Qj1FRj1CQz04OD1FNT04QT1BOD1FNz05ND1CQj1FNj1CQz05ND0KPUU3PUE0PUJBPUVGPUJD PTg5IiwKKworIkhvdyB0byBDaXRlIEdhbGF4eSIgOgorIj1FNT1BNj04Mj1FND1CRD05NT1FNT1C Qz05NT1FNz05ND1BOEdhbGF4eSIsCit9KQoKZGlmZiAtciA4MzQ2ZWM0YmFhMzk5MmY0ZGMwMTYx ZjBmYzc5YTBiYTg5M2MwYTYzIC1yIGRjYzBjMTkxNDdlYWQ4NmM2ZTM1N2M3PQozOWUwNTEzYWRk ZmUwMmNiMiBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvZ2FsYXh5LWFwcC1iYXNlLmpzCi0tLSBhL3N0 YXRpYy9zY3JpcHRzL3BhY2tlZC9nYWxheHktYXBwLWJhc2UuanMKKysrIGIvc3RhdGljL3Njcmlw dHMvcGFja2VkL2dhbGF4eS1hcHAtYmFzZS5qcwpAQCAtMSwxICsxLDEgQEAKLWRlZmluZShbIm12 Yy91c2VyL3VzZXItbW9kZWwiLCJ1dGlscy9tZXRyaWNzLWxvZ2dlciIsInV0aWxzL2FkZC1sb2dn aW5nIl0sPQpmdW5jdGlvbihhLGMsZSl7ZnVuY3Rpb24gZihrKXt2YXIgaj0zRHRoaXM7cmV0dXJu IGouX2luaXQoa3x8e30pfWUoZiwiR2FsYXg9CnlBcHAiKTtmLmRlZmF1bHRPcHRpb25zPTNEe3Jv b3Q6Ii8ifTtmLnByb3RvdHlwZS5faW5pdD0zRGZ1bmN0aW9uIGgoayl7dmFyID0Kaj0zRHRoaXM7 ai5faW5pdExvZ2dlcihrLmxvZ2dlck9wdGlvbnN8fHt9KTtqLmRlYnVnKCJHYWxheHlBcHAubG9n Z2VyOiAiLGouPQpsb2dnZXIpO2ouX3Byb2Nlc3NPcHRpb25zKGspO2ouZGVidWcoIkdhbGF4eUFw cC5vcHRpb25zOiAiLGoub3B0aW9ucyk7ai5jb249CmZpZz0zRGsuY29uZmlnfHx7fTtqLmRlYnVn KCJHYWxheHlBcHAuY29uZmlnOiAiLGouY29uZmlnKTtqLl9pbml0VXNlcihrLnVzZT0KckpTT058 fHt9KTtqLmRlYnVnKCJHYWxheHlBcHAudXNlcjogIixqLnVzZXIpO3JldHVybiBqfTtmLnByb3Rv dHlwZS5fcHJvY2VzPQpzT3B0aW9ucz0zRGZ1bmN0aW9uIGQobSl7dmFyIGw9M0R0aGlzLG49M0Rm LmRlZmF1bHRPcHRpb25zO2wuZGVidWcoIl9wcm9jZXM9CnNPcHRpb25zOiAiLG0pO2wub3B0aW9u cz0zRHt9O2Zvcih2YXIgaiBpbiBuKXtpZihuLmhhc093blByb3BlcnR5KGopKXtsLm9wdD0KaW9u c1tqXT0zRChtLmhhc093blByb3BlcnR5KGopKT8obVtqXSk6KG5bal0pfX1yZXR1cm4gbH07Zi5w cm90b3R5cGUuX2luaXRVPQpzZXI9M0RmdW5jdGlvbiBnKGspe3ZhciBqPTNEdGhpcztqLmRlYnVn KCJfaW5pdFVzZXI6IixrKTtqLnVzZXI9M0RuZXcgYS5Vc2U9CnIoayk7cmV0dXJuIGp9O2YucHJv dG90eXBlLl9pbml0TG9nZ2VyPTNEZnVuY3Rpb24gaShrKXt2YXIgaj0zRHRoaXM7ai5kZWJ1Zz0K KCJfaW5pdExvZ2dlcjoiLGspO2oubG9nZ2VyPTNEbmV3IGMuTWV0cmljc0xvZ2dlcihrKTtyZXR1 cm4gan07Zi5wcm90b3R5cGUuPQp0b1N0cmluZz0zRGZ1bmN0aW9uIGIoKXt2YXIgaj0zRHRoaXMu dXNlci5nZXQoImVtYWlsIil8fCIoYW5vbnltb3VzKSI7cmV0dXI9Cm4iR2FsYXh5QXBwKCIraisi KSJ9O3JldHVybntHYWxheHlBcHA6Zn19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitk ZWZpbmUoWyJtdmMvdXNlci91c2VyLW1vZGVsIiwidXRpbHMvbWV0cmljcy1sb2dnZXIiLCJ1dGls cy9hZGQtbG9nZ2luZyIsIj0KdXRpbHMvbG9jYWxpemF0aW9uIl0sZnVuY3Rpb24oYSxjLGYsZCl7 ZnVuY3Rpb24gZyhtKXt2YXIgbD0zRHRoaXM7cmV0dXJuIGwuPQpfaW5pdChtfHx7fSl9ZihnLCJH YWxheHlBcHAiKTtnLmRlZmF1bHRPcHRpb25zPTNEe3Jvb3Q6Ii8ifTtnLnByb3RvdHlwZS5faW49 Cml0PTNEZnVuY3Rpb24gaihtKXt2YXIgbD0zRHRoaXM7bC5fcHJvY2Vzc09wdGlvbnMobSk7bC5k ZWJ1ZygiR2FsYXh5QXBwLm9wdD0KaW9uczogIixsLm9wdGlvbnMpO2wuX2luaXRMb2dnZXIobS5s b2dnZXJPcHRpb25zfHx7fSk7bC5kZWJ1ZygiR2FsYXh5QXBwLmxvPQpnZ2VyOiAiLGwubG9nZ2Vy KTtsLl9pbml0TG9jYWxlKCk7bC5kZWJ1ZygiR2FsYXh5QXBwLmxvY2FsaXplOiAiLGwubG9jYWxp emU9Cik7bC5jb25maWc9M0RtLmNvbmZpZ3x8e307bC5kZWJ1ZygiR2FsYXh5QXBwLmNvbmZpZzog IixsLmNvbmZpZyk7bC5faW5pdFVzZT0KcihtLnVzZXJKU09OfHx7fSk7bC5kZWJ1ZygiR2FsYXh5 QXBwLnVzZXI6ICIsbC51c2VyKTtyZXR1cm4gbH07Zy5wcm90b3R5cGUuPQpfcHJvY2Vzc09wdGlv bnM9M0RmdW5jdGlvbiBlKG4pe3ZhciBtPTNEdGhpcyxvPTNEZy5kZWZhdWx0T3B0aW9uczttLmRl YnVnKCI9Cl9wcm9jZXNzT3B0aW9uczogIixuKTttLm9wdGlvbnM9M0R7fTtmb3IodmFyIGwgaW4g byl7aWYoby5oYXNPd25Qcm9wZXJ0eShsKT0KKXttLm9wdGlvbnNbbF09M0Qobi5oYXNPd25Qcm9w ZXJ0eShsKSk/KG5bbF0pOihvW2xdKX19cmV0dXJuIG19O2cucHJvdG90eXBlPQouX2luaXRVc2Vy PTNEZnVuY3Rpb24gaShtKXt2YXIgbD0zRHRoaXM7bC5kZWJ1ZygiX2luaXRVc2VyOiIsbSk7bC51 c2VyPTNEbmU9CncgYS5Vc2VyKG0pO3JldHVybiBsfTtnLnByb3RvdHlwZS5faW5pdExvZ2dlcj0z RGZ1bmN0aW9uIGsobSl7dmFyIGw9M0R0aGlzOz0KbC5kZWJ1ZygiX2luaXRMb2dnZXI6IixtKTts LmxvZ2dlcj0zRG5ldyBjLk1ldHJpY3NMb2dnZXIobSk7cmV0dXJuIGx9O2cucHJvPQp0b3R5cGUu X2luaXRMb2NhbGU9M0RmdW5jdGlvbiBoKG0pe3ZhciBsPTNEdGhpcztsLmRlYnVnKCJfaW5pdExv Y2FsZToiLG0pO2w9Ci5sb2NhbGl6ZT0zRGQ7d2luZG93Ll9sPTNEbC5sb2NhbGl6ZTtyZXR1cm4g bH07Zy5wcm90b3R5cGUudG9TdHJpbmc9M0RmdW5jdD0KaW9uIGIoKXt2YXIgbD0zRHRoaXMudXNl ci5nZXQoImVtYWlsIil8fCIoYW5vbnltb3VzKSI7cmV0dXJuIkdhbGF4eUFwcCgiK2wrPQoiKSJ9 O3JldHVybntHYWxheHlBcHA6Z319KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZm IC1yIDgzNDZlYzRiYWEzOTkyZjRkYzAxNjFmMGZjNzlhMGJhODkzYzBhNjMgLXIgZGNjMGMxOTE0 N2VhZDg2YzZlMzU3Yzc9CjM5ZTA1MTNhZGRmZTAyY2IyIHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9p MThuLmpzCi0tLSAvZGV2L251bGwKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL2kxOG4uanMK QEAgLTAsMCArMSwxIEBACisoZnVuY3Rpb24oKXt2YXIgYT0zRC8oXi4qKF58XC8pbmxzKFwvfCQp KShbXlwvXSopXC8/KFteXC9dKikvO2Z1bmN0aW9uIGQoZT0KLGgsZyxmLGksail7aWYoaFtlXSl7 Zy5wdXNoKGUpO2lmKGhbZV09M0Q9M0Q9M0R0cnVlfHxoW2VdPTNEPTNEPTNEMSl7Zi5wdXNoPQoo aStlKyIvIitqKX19fWZ1bmN0aW9uIGMoZyxlLGYsaCxpKXt2YXIgaj0zRGgrZSsiLyIraTtpZihy ZXF1aXJlLl9maWxlRXhpc3Q9CnMoZy50b1VybChqKyIuanMiKSkpe2YucHVzaChqKX19ZnVuY3Rp b24gYihnLGYsZSl7dmFyIGg7Zm9yKGggaW4gZil7aWYoZi5oYT0Kc093blByb3BlcnR5KGgpJiYo IWcuaGFzT3duUHJvcGVydHkoaCl8fGUpKXtnW2hdPTNEZltoXX1lbHNle2lmKHR5cGVvZiBmW2hd PQo9M0Q9M0Q9M0Qib2JqZWN0Iil7aWYoIWdbaF0mJmZbaF0pe2dbaF09M0R7fX1iKGdbaF0sZlto XSxlKX19fX1kZWZpbmUoWyJtb2Q9CnVsZSJdLGZ1bmN0aW9uKGUpe3ZhciBmPTNEZS5jb25maWc/ ZS5jb25maWcoKTp7fTtyZXR1cm57dmVyc2lvbjoiMi4wLjQiLGxvYT0KZDpmdW5jdGlvbihnLHMs cixrKXtrPTNEa3x8e307aWYoay5sb2NhbGUpe2YubG9jYWxlPTNEay5sb2NhbGV9dmFyIHEsbj0z RGEuPQpleGVjKGcpLG89M0RuWzFdLHQ9M0RuWzRdLHY9M0RuWzVdLGw9M0R0LnNwbGl0KCItIiks aD0zRFtdLHU9M0R7fSxtLGoscD0zRCI9CiI7aWYobls1XSl7bz0zRG5bMV07cT0zRG8rdn1lbHNl e3E9M0RnO3Y9M0RuWzRdO3Q9M0RmLmxvY2FsZTtpZighdCl7dD0zRGYubD0Kb2NhbGU9M0R0eXBl b2YgbmF2aWdhdG9yPTNEPTNEPTNEInVuZGVmaW5lZCI/InJvb3QiOihuYXZpZ2F0b3IubGFuZ3Vh Z2V8fG5hPQp2aWdhdG9yLnVzZXJMYW5ndWFnZXx8InJvb3QiKS50b0xvd2VyQ2FzZSgpfWw9M0R0 LnNwbGl0KCItIil9aWYoay5pc0J1aWxkKXs9CmgucHVzaChxKTtjKHMsInJvb3QiLGgsbyx2KTtm b3IobT0zRDA7bTxsLmxlbmd0aDttKyspe2o9M0RsW21dO3ArPTNEKHA/Ii0iOj0KIiIpK2o7Yyhz LHAsaCxvLHYpfXMoaCxmdW5jdGlvbigpe3IoKX0pfWVsc2V7cyhbcV0sZnVuY3Rpb24oeCl7dmFy IHc9M0RbXSxpPQo7ZCgicm9vdCIseCx3LGgsbyx2KTtmb3IobT0zRDA7bTxsLmxlbmd0aDttKysp e2k9M0RsW21dO3ArPTNEKHA/Ii0iOiIiKStpO2Q9CihwLHgsdyxoLG8sdil9cyhoLGZ1bmN0aW9u KCl7dmFyIEEseSx6O2ZvcihBPTNEdy5sZW5ndGgtMTtBPi0xJiZ3W0FdO0EtLSl7ej0KPTNEd1tB XTt5PTNEeFt6XTtpZih5PTNEPTNEPTNEdHJ1ZXx8eT0zRD0zRD0zRDEpe3k9M0RzKG8reisiLyIr dil9Yih1LHkpfXIoPQp1KX0pfSl9fX19KX0oKSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQoKZGlmZiAtciA4MzQ2ZWM0YmFhMzk5MmY0ZGMwMTYxZjBmYzc5YTBiYTg5M2MwYTYzIC1yIGRj YzBjMTkxNDdlYWQ4NmM2ZTM1N2M3PQozOWUwNTEzYWRkZmUwMmNiMiBzdGF0aWMvc2NyaXB0cy9w YWNrZWQvbXZjL2RhdGFzZXQvaGRhLWJhc2UuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2Vk L212Yy9kYXRhc2V0L2hkYS1iYXNlLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMv ZGF0YXNldC9oZGEtYmFzZS5qcwpAQCAtMSwxICsxLDEgQEAKLWRlZmluZShbIm12Yy9kYXRhc2V0 L2hkYS1tb2RlbCIsIm12Yy9iYXNlLW12YyJdLGZ1bmN0aW9uKGQsYil7dmFyIGM9M0RCYWNrPQpi b25lLlZpZXcuZXh0ZW5kKGIuTG9nZ2FibGVNaXhpbikuZXh0ZW5kKHt0YWdOYW1lOiJkaXYiLGNs YXNzTmFtZToiZGF0YXNldCA9CmhkYSBoaXN0b3J5LXBhbmVsLWhkYSIsaWQ6ZnVuY3Rpb24oKXty ZXR1cm4iaGRhLSIrdGhpcy5tb2RlbC5nZXQoImlkIil9LGZ4Uz0KcGVlZDoiZmFzdCIsaW5pdGlh bGl6ZTpmdW5jdGlvbihmKXtpZihmLmxvZ2dlcil7dGhpcy5sb2dnZXI9M0R0aGlzLm1vZGVsLmxv PQpnZ2VyPTNEZi5sb2dnZXJ9dGhpcy5sb2codGhpcysiLmluaXRpYWxpemU6IixmKTt0aGlzLmRl ZmF1bHRQcmltYXJ5QWN0aW9uQnU9CnR0b25SZW5kZXJlcnM9M0RbdGhpcy5fcmVuZGVyX3Nob3dQ YXJhbXNCdXR0b25dO3RoaXMubGlua1RhcmdldD0zRGYubGlua1Rhcj0KZ2V0fHwiX2JsYW5rIjt0 aGlzLnNlbGVjdGFibGU9M0RmLnNlbGVjdGFibGV8fGZhbHNlO3RoaXMuc2VsZWN0ZWQ9M0RmLnNl bGVjPQp0ZWR8fGZhbHNlO3RoaXMuZXhwYW5kZWQ9M0RmLmV4cGFuZGVkfHxmYWxzZTt0aGlzLmRy YWdnYWJsZT0zRGYuZHJhZ2dhYmxlfHw9CmZhbHNlO3RoaXMuX3NldFVwTGlzdGVuZXJzKCl9LF9z ZXRVcExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMubW9kZWwub24oImNoYT0KbmdlIixmdW5jdGlv bihnLGYpe2lmKHRoaXMubW9kZWwuY2hhbmdlZEF0dHJpYnV0ZXMoKS5zdGF0ZSYmdGhpcy5tb2Rl bC5pblJlPQphZHlTdGF0ZSgpJiZ0aGlzLmV4cGFuZGVkJiYhdGhpcy5tb2RlbC5oYXNEZXRhaWxz KCkpe3RoaXMubW9kZWwuZmV0Y2goKX1lbHM9CmV7dGhpcy5yZW5kZXIoKX19LHRoaXMpfSxyZW5k ZXI6ZnVuY3Rpb24oaCl7aD0zRChoPTNEPTNEPTNEdW5kZWZpbmVkKT8odHJ1ZT0KKTooaCk7dmFy IGY9M0R0aGlzO3RoaXMuJGVsLmZpbmQoIlt0aXRsZV0iKS50b29sdGlwKCJkZXN0cm95Iik7dGhp cy51cmxzPTNEPQp0aGlzLm1vZGVsLnVybHMoKTt2YXIgZz0zRHRoaXMuX2J1aWxkTmV3UmVuZGVy KCk7aWYoaCl7JChmKS5xdWV1ZShmdW5jdGlvbig9Cmkpe3RoaXMuJGVsLmZhZGVPdXQoZi5meFNw ZWVkLGkpfSl9JChmKS5xdWV1ZShmdW5jdGlvbihpKXt0aGlzLiRlbC5lbXB0eSgpLj0KYXR0cigi Y2xhc3MiLGYuY2xhc3NOYW1lKS5hZGRDbGFzcygic3RhdGUtIitmLm1vZGVsLmdldCgic3RhdGUi KSkuYXBwZW5kKGcuPQpjaGlsZHJlbigpKTtpZih0aGlzLnNlbGVjdGFibGUpe3RoaXMuc2hvd1Nl bGVjdG9yKDApfWkoKX0pO2lmKGgpeyQoZikucXVldWU9CihmdW5jdGlvbihpKXt0aGlzLiRlbC5m YWRlSW4oZi5meFNwZWVkLGkpfSl9JChmKS5xdWV1ZShmdW5jdGlvbihpKXt0aGlzLnRyaT0KZ2dl cigicmVuZGVyZWQiLGYpO2lmKHRoaXMubW9kZWwuaW5SZWFkeVN0YXRlKCkpe3RoaXMudHJpZ2dl cigicmVuZGVyZWQ6cmVhPQpkeSIsZil9aWYodGhpcy5kcmFnZ2FibGUpe3RoaXMuZHJhZ2dhYmxl T24oKX1pKCl9KTtyZXR1cm4gdGhpc30sX2J1aWxkTmV3UmU9Cm5kZXI6ZnVuY3Rpb24oKXt2YXIg Zj0zRCQoYy50ZW1wbGF0ZXMuc2tlbGV0b24odGhpcy5tb2RlbC50b0pTT04oKSkpO2YuZmluZD0K KCIuZGF0YXNldC1wcmltYXJ5LWFjdGlvbnMiKS5hcHBlbmQodGhpcy5fcmVuZGVyX3RpdGxlQnV0 dG9ucygpKTtmLmNoaWxkcmVuPQooIi5kYXRhc2V0LWJvZHkiKS5yZXBsYWNlV2l0aCh0aGlzLl9y ZW5kZXJfYm9keSgpKTt0aGlzLl9zZXRVcEJlaGF2aW9ycyhmKTs9CnJldHVybiBmfSxfc2V0VXBC ZWhhdmlvcnM6ZnVuY3Rpb24oZil7Zj0zRGZ8fHRoaXMuJGVsO21ha2VfcG9wdXBfbWVudXMoZik7 Zj0KLmZpbmQoIlt0aXRsZV0iKS50b29sdGlwKHtwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sX3JlbmRl cl90aXRsZUJ1dHRvbnM6ZnVuY3RpPQpvbigpe3JldHVyblt0aGlzLl9yZW5kZXJfZGlzcGxheUJ1 dHRvbigpXX0sX3JlbmRlcl9kaXNwbGF5QnV0dG9uOmZ1bmN0aW9uKCk9CntpZigodGhpcy5tb2Rl bC5nZXQoInN0YXRlIik9M0Q9M0Q9M0RkLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24uU1RBVEVT Lk5PVD0KX1ZJRVdBQkxFKXx8KHRoaXMubW9kZWwuZ2V0KCJzdGF0ZSIpPTNEPTNEPTNEZC5IaXN0 b3J5RGF0YXNldEFzc29jaWF0aW9uLlNUPQpBVEVTLkRJU0NBUkRFRCl8fCghdGhpcy5tb2RlbC5n ZXQoImFjY2Vzc2libGUiKSkpe3JldHVybiBudWxsfXZhciBnPTNEe3Rhcmc9CmV0OnRoaXMubGlu a1RhcmdldCxjbGFzc2VzOiJkYXRhc2V0LWRpc3BsYXkifTtpZih0aGlzLm1vZGVsLmdldCgicHVy Z2VkIikpez0KZy5kaXNhYmxlZD0zRHRydWU7Zy50aXRsZT0zRF9sKCJDYW5ub3QgZGlzcGxheSBk YXRhc2V0cyByZW1vdmVkIGZyb20gZGlzayIpPQp9ZWxzZXtpZih0aGlzLm1vZGVsLmdldCgic3Rh dGUiKT0zRD0zRD0zRGQuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbi5TVEFURVM9Ci5VUExPQUQp e2cuZGlzYWJsZWQ9M0R0cnVlO2cudGl0bGU9M0RfbCgiVGhpcyBkYXRhc2V0IG11c3QgZmluaXNo IHVwbG9hZGluZz0KIGJlZm9yZSBpdCBjYW4gYmUgdmlld2VkIil9ZWxzZXtpZih0aGlzLm1vZGVs LmdldCgic3RhdGUiKT0zRD0zRD0zRGQuSGlzdG9yPQp5RGF0YXNldEFzc29jaWF0aW9uLlNUQVRF Uy5ORVcpe2cuZGlzYWJsZWQ9M0R0cnVlO2cudGl0bGU9M0RfbCgiVGhpcyBkYXRhc2U9CnQgaXMg bm90IHlldCB2aWV3YWJsZSIpfWVsc2V7Zy50aXRsZT0zRF9sKCJWaWV3IGRhdGEiKTtnLmhyZWY9 M0R0aGlzLnVybHMuZD0KaXNwbGF5O3ZhciBmPTNEdGhpcztnLm9uY2xpY2s9M0RmdW5jdGlvbiho KXtpZihHYWxheHkuZnJhbWUmJkdhbGF4eS5mcmFtZS5hPQpjdGl2ZSl7R2FsYXh5LmZyYW1lLmFk ZCh7dGl0bGU6IkRhdGEgVmlld2VyOiAiK2YubW9kZWwuZ2V0KCJuYW1lIiksdHlwZToidXI9Cmwi LGNvbnRlbnQ6Zi51cmxzLmRpc3BsYXl9KTtoLnByZXZlbnREZWZhdWx0KCl9fX19fWcuZmFJY29u PTNEImZhLWV5ZSI7cmV0dT0Kcm4gZmFJY29uQnV0dG9uKGcpfSxfcmVuZGVyX2Rvd25sb2FkQnV0 dG9uOmZ1bmN0aW9uKCl7aWYodGhpcy5tb2RlbC5nZXQoInB1PQpyZ2VkIil8fCF0aGlzLm1vZGVs Lmhhc0RhdGEoKSl7cmV0dXJuIG51bGx9dmFyIGc9M0R0aGlzLnVybHMsaD0zRHRoaXMubW9kZWw9 Ci5nZXQoIm1ldGFfZmlsZXMiKTtpZihfLmlzRW1wdHkoaCkpe3JldHVybiAkKFsnPGEgaHJlZj0z RCInK2cuZG93bmxvYWQrJyIgdD0KaXRsZT0zRCInK19sKCJEb3dubG9hZCIpKyciICcsJ2NsYXNz PTNEImljb24tYnRuIGRhdGFzZXQtZG93bmxvYWQtYnRuIj4nLCc8PQpzcGFuIGNsYXNzPTNEImZh IGZhLWZsb3BweS1vIj48L3NwYW4+JywiPC9hPiJdLmpvaW4oIiIpKX12YXIgaT0zRCJkYXRhc2V0 LSI9Cit0aGlzLm1vZGVsLmdldCgiaWQiKSsiLXBvcHVwIixmPTNEWyc8ZGl2IHBvcHVwbWVudT0z RCInK2krJyI+JywnPGEgaHJlZj0zRD0KIicrZy5kb3dubG9hZCsnIj4nLF9sKCJEb3dubG9hZCBE YXRhc2V0IiksIjwvYT4iLCI8YT4iK19sKCJBZGRpdGlvbmFsIEZpbGVzPQoiKSsiPC9hPiIsXy5t YXAoaCxmdW5jdGlvbihqKXtyZXR1cm5bJzxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9 M0QiJyw9CmcubWV0YV9kb3dubG9hZCtqLmZpbGVfdHlwZSwnIj4nLF9sKCJEb3dubG9hZCIpLCIg IixqLmZpbGVfdHlwZSwiPC9hPiJdLmpvaT0KbigiIil9KS5qb2luKCJcbiIpLCI8L2Rpdj4iLCc8 ZGl2IGNsYXNzPTNEImljb24tYnRuLWdyb3VwIj4nLCc8YSBocmVmPTNEIicrPQpnLmRvd25sb2Fk KyciIHRpdGxlPTNEIicrX2woIkRvd25sb2FkIikrJyIgJywnY2xhc3M9M0QiaWNvbi1idG4gZGF0 YXNldC1kb3c9Cm5sb2FkLWJ0biI+JywnPHNwYW4gY2xhc3M9M0QiZmEgZmEtZmxvcHB5LW8iPjwv c3Bhbj4nLCc8L2E+PGEgY2xhc3M9M0QiaWNvbj0KLWJ0biBwb3B1cCIgaWQ9M0QiJytpKyciPics JzxzcGFuIGNsYXNzPTNEImZhIGZhLWNhcmV0LWRvd24iPjwvc3Bhbj4nLCI8L2E+PQoiLCI8L2Rp dj4iXS5qb2luKCJcbiIpO3JldHVybiAkKGYpfSxfcmVuZGVyX3Nob3dQYXJhbXNCdXR0b246ZnVu Y3Rpb24oKXtyZXQ9CnVybiBmYUljb25CdXR0b24oe3RpdGxlOl9sKCJWaWV3IGRldGFpbHMiKSxj bGFzc2VzOiJkYXRhc2V0LXBhcmFtcy1idG4iLGhyZT0KZjp0aGlzLnVybHMuc2hvd19wYXJhbXMs dGFyZ2V0OnRoaXMubGlua1RhcmdldCxmYUljb246ImZhLWluZm8tY2lyY2xlIn0pfSxfPQpyZW5k ZXJfYm9keTpmdW5jdGlvbigpe3ZhciBnPTNEJCgnPGRpdj5FcnJvcjogdW5rbm93biBkYXRhc2V0 IHN0YXRlICInK3RoaXM9Ci5tb2RlbC5nZXQoInN0YXRlIikrJyIuPC9kaXY+JyksZj0zRHRoaXNb Il9yZW5kZXJfYm9keV8iK3RoaXMubW9kZWwuZ2V0KCJzdD0KYXRlIildO2lmKF8uaXNGdW5jdGlv bihmKSl7Zz0zRGYuY2FsbCh0aGlzKX10aGlzLl9zZXRVcEJlaGF2aW9ycyhnKTtpZih0aGlzPQou ZXhwYW5kZWQpe2cuc2hvdygpfXJldHVybiBnfSxfcmVuZGVyX3N0YXRlQm9keUhlbHBlcjpmdW5j dGlvbihmLGkpe2k9M0RpfHw9CltdO3ZhciBnPTNEdGhpcyxoPTNEJChjLnRlbXBsYXRlcy5ib2R5 KF8uZXh0ZW5kKHRoaXMubW9kZWwudG9KU09OKCkse2JvZHk6Zj0KfSkpKTtoLmZpbmQoIi5kYXRh c2V0LWFjdGlvbnMgLmxlZnQiKS5hcHBlbmQoXy5tYXAoaSxmdW5jdGlvbihqKXtyZXR1cm4gai5j PQphbGwoZyl9KSk7cmV0dXJuIGh9LF9yZW5kZXJfYm9keV9uZXc6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fcmVuZGVyX3N0YXRlQm89CmR5SGVscGVyKCI8ZGl2PiIrX2woIlRoaXMgaXMgYSBuZXcg ZGF0YXNldCBhbmQgbm90IGFsbCBvZiBpdHMgZGF0YSBhcmUgYXZhaT0KbGFibGUgeWV0IikrIjwv ZGl2PiIsdGhpcy5kZWZhdWx0UHJpbWFyeUFjdGlvbkJ1dHRvblJlbmRlcmVycyl9LF9yZW5kZXJf Ym9kPQp5X25vUGVybWlzc2lvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJfc3RhdGVC b2R5SGVscGVyKCI8ZGl2PiIrX2woIlk9Cm91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gdmll dyB0aGlzIGRhdGFzZXQiKSsiPC9kaXY+Iil9LF9yZW5kZXJfYm9keV9kaT0Kc2NhcmRlZDpmdW5j dGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJfc3RhdGVCb2R5SGVscGVyKCI8ZGl2PiIrX2woIlRo ZSBqb2IgPQpjcmVhdGluZyB0aGlzIGRhdGFzZXQgd2FzIGNhbmNlbGxlZCBiZWZvcmUgY29tcGxl dGlvbiIpKyI8L2Rpdj4iLHRoaXMuZGVmYXU9Cmx0UHJpbWFyeUFjdGlvbkJ1dHRvblJlbmRlcmVy cyl9LF9yZW5kZXJfYm9keV9xdWV1ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz0KLl9yZW5kZXJf c3RhdGVCb2R5SGVscGVyKCI8ZGl2PiIrX2woIlRoaXMgam9iIGlzIHdhaXRpbmcgdG8gcnVuIikr IjwvZGl2PiIsPQp0aGlzLmRlZmF1bHRQcmltYXJ5QWN0aW9uQnV0dG9uUmVuZGVyZXJzKX0sX3Jl bmRlcl9ib2R5X3VwbG9hZDpmdW5jdGlvbigpe3I9CmV0dXJuIHRoaXMuX3JlbmRlcl9zdGF0ZUJv ZHlIZWxwZXIoIjxkaXY+IitfbCgiVGhpcyBkYXRhc2V0IGlzIGN1cnJlbnRseSB1cD0KbG9hZGlu ZyIpKyI8L2Rpdj4iKX0sX3JlbmRlcl9ib2R5X3NldHRpbmdfbWV0YWRhdGE6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fPQpyZW5kZXJfc3RhdGVCb2R5SGVscGVyKCI8ZGl2PiIrX2woIk1ldGFkYXRh IGlzIGJlaW5nIGF1dG8tZGV0ZWN0ZWQiKSsiPC9kaXY9Cj4iKX0sX3JlbmRlcl9ib2R5X3J1bm5p bmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyX3N0YXRlQm9keUhlbHBlcigiPD0KZGl2 PiIrX2woIlRoaXMgam9iIGlzIGN1cnJlbnRseSBydW5uaW5nIikrIjwvZGl2PiIsdGhpcy5kZWZh dWx0UHJpbWFyeUFjdGlvPQpuQnV0dG9uUmVuZGVyZXJzKX0sX3JlbmRlcl9ib2R5X3BhdXNlZDpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJfc3RhdGU9CkJvZHlIZWxwZXIoIjxkaXY+Iitf bCgnVGhpcyBqb2IgaXMgcGF1c2VkLiBVc2UgdGhlICJSZXN1bWUgUGF1c2VkIEpvYnMiIGluID0K dGhlIGhpc3RvcnkgbWVudSB0byByZXN1bWUnKSsiPC9kaXY+Iix0aGlzLmRlZmF1bHRQcmltYXJ5 QWN0aW9uQnV0dG9uUmVuZGVyPQplcnMpfSxfcmVuZGVyX2JvZHlfZXJyb3I6ZnVuY3Rpb24oKXt2 YXIgZj0zRFsnPHNwYW4gY2xhc3M9M0QiaGVscC10ZXh0Ij4nLF89CmwoIkFuIGVycm9yIG9jY3Vy cmVkIHdpdGggdGhpcyBkYXRhc2V0IiksIjo8L3NwYW4+IiwnPGRpdiBjbGFzcz0zRCJqb2ItZXJy bz0Kci10ZXh0Ij4nLCQudHJpbSh0aGlzLm1vZGVsLmdldCgibWlzY19pbmZvIikpLCI8L2Rpdj4i XS5qb2luKCIiKTtpZighdGhpcy5tPQpvZGVsLmdldCgicHVyZ2VkIikpe2Y9M0QiPGRpdj4iK3Ro aXMubW9kZWwuZ2V0KCJtaXNjX2JsdXJiIikrIjwvZGl2PiIrZn1yZXQ9CnVybiB0aGlzLl9yZW5k ZXJfc3RhdGVCb2R5SGVscGVyKGYsW3RoaXMuX3JlbmRlcl9kb3dubG9hZEJ1dHRvbl0uY29uY2F0 KHRoaT0Kcy5kZWZhdWx0UHJpbWFyeUFjdGlvbkJ1dHRvblJlbmRlcmVycykpfSxfcmVuZGVyX2Jv ZHlfZW1wdHk6ZnVuY3Rpb24oKXtyZXR1PQpybiB0aGlzLl9yZW5kZXJfc3RhdGVCb2R5SGVscGVy KCI8ZGl2PiIrX2woIk5vIGRhdGEiKSsiOiA8aT4iK3RoaXMubW9kZWwuZ2U9CnQoIm1pc2NfYmx1 cmIiKSsiPC9pPjwvZGl2PiIsdGhpcy5kZWZhdWx0UHJpbWFyeUFjdGlvbkJ1dHRvblJlbmRlcmVy cyl9LF9yZT0KbmRlcl9ib2R5X2ZhaWxlZF9tZXRhZGF0YTpmdW5jdGlvbigpe3ZhciBmPTNEJCgn PGRpdiBjbGFzcz0zRCJ3YXJuaW5nbWVzc2FnPQplc21hbGwiPjwvZGl2PicpLmFwcGVuZCgkKCI8 c3Ryb25nLz4iKS50ZXh0KF9sKCJBbiBlcnJvciBvY2N1cnJlZCBzZXR0aW5nIHQ9CmhlIG1ldGFk YXRhIGZvciB0aGlzIGRhdGFzZXQiKSkpLGc9M0R0aGlzLl9yZW5kZXJfYm9keV9vaygpO2cucHJl cGVuZChmKTtyZT0KdHVybiBnfSxfcmVuZGVyX2JvZHlfb2s6ZnVuY3Rpb24oKXt2YXIgZj0zRHRo aXMsaD0zRCQoYy50ZW1wbGF0ZXMuYm9keSh0aGlzPQoubW9kZWwudG9KU09OKCkpKSxnPTNEW3Ro aXMuX3JlbmRlcl9kb3dubG9hZEJ1dHRvbl0uY29uY2F0KHRoaXMuZGVmYXVsdFByaW09CmFyeUFj dGlvbkJ1dHRvblJlbmRlcmVycyk7aC5maW5kKCIuZGF0YXNldC1hY3Rpb25zIC5sZWZ0IikuYXBw ZW5kKF8ubWFwKGcsZj0KdW5jdGlvbihpKXtyZXR1cm4gaS5jYWxsKGYpfSkpO2lmKHRoaXMubW9k ZWwuaXNEZWxldGVkT3JQdXJnZWQoKSl7cmV0dXJuIGh9PQpyZXR1cm4gaH0sZXZlbnRzOnsiY2xp Y2sgLmRhdGFzZXQtdGl0bGUtYmFyIjoidG9nZ2xlQm9keVZpc2liaWxpdHkiLCJrZXlkb3c9Cm4g LmRhdGFzZXQtdGl0bGUtYmFyIjoidG9nZ2xlQm9keVZpc2liaWxpdHkiLCJjbGljayAuZGF0YXNl dC1zZWxlY3RvciI6InRvZz0KZ2xlU2VsZWN0In0sdG9nZ2xlQm9keVZpc2liaWxpdHk6ZnVuY3Rp b24oaSxnKXt2YXIgZj0zRDMyLGg9M0QxMztpZihpJiYoaS50PQp5cGU9M0Q9M0Q9M0Qia2V5ZG93 biIpJiYhKGkua2V5Q29kZT0zRD0zRD0zRGZ8fGkua2V5Q29kZT0zRD0zRD0zRGgpKXtyZXR1cm49 CiB0cnVlfXZhciBqPTNEdGhpcy4kZWwuZmluZCgiLmRhdGFzZXQtYm9keSIpO2c9M0QoZz0zRD0z RD0zRHVuZGVmaW5lZCk/KCFqLj0KaXMoIjp2aXNpYmxlIikpOihnKTtpZihnKXt0aGlzLmV4cGFu ZEJvZHkoKX1lbHNle3RoaXMuY29sbGFwc2VCb2R5KCl9cmV0dXJuPQogZmFsc2V9LGV4cGFuZEJv ZHk6ZnVuY3Rpb24oKXt2YXIgZj0zRHRoaXM7ZnVuY3Rpb24gZygpe2YuJGVsLmNoaWxkcmVuKCIu ZGE9CnRhc2V0LWJvZHkiKS5yZXBsYWNlV2l0aChmLl9yZW5kZXJfYm9keSgpKTtmLiRlbC5jaGls ZHJlbigiLmRhdGFzZXQtYm9keSIpLj0Kc2xpZGVEb3duKGYuZnhTcGVlZCxmdW5jdGlvbigpe2Yu ZXhwYW5kZWQ9M0R0cnVlO2YudHJpZ2dlcigiYm9keS1leHBhbmRlZCIsPQpmLm1vZGVsLmdldCgi aWQiKSl9KX1pZih0aGlzLm1vZGVsLmluUmVhZHlTdGF0ZSgpJiYhdGhpcy5tb2RlbC5oYXNEZXRh aWxzKCk9Cil7dGhpcy5tb2RlbC5mZXRjaCh7c2lsZW50OnRydWV9KS5hbHdheXMoZnVuY3Rpb24o aCl7Zi51cmxzPTNEZi5tb2RlbC51cmxzKD0KKTtnKCl9KX1lbHNle2coKX19LGNvbGxhcHNlQm9k eTpmdW5jdGlvbigpe3ZhciBmPTNEdGhpczt0aGlzLiRlbC5jaGlsZHJlbigiPQouZGF0YXNldC1i b2R5Iikuc2xpZGVVcChmLmZ4U3BlZWQsZnVuY3Rpb24oKXtmLmV4cGFuZGVkPTNEZmFsc2U7Zi50 cmlnZ2VyKCI9CmJvZHktY29sbGFwc2VkIixmLm1vZGVsLmdldCgiaWQiKSl9KX0sc2hvd1NlbGVj dG9yOmZ1bmN0aW9uKCl7aWYodGhpcy5zZWxlYz0KdGVkKXt0aGlzLnNlbGVjdChudWxsLHRydWUp fXRoaXMuc2VsZWN0YWJsZT0zRHRydWU7dGhpcy50cmlnZ2VyKCJzZWxlY3RhYmxlPQoiLHRydWUs dGhpcyk7dGhpcy4kKCIuZGF0YXNldC1wcmltYXJ5LWFjdGlvbnMiKS5oaWRlKCk7dGhpcy4kKCIu ZGF0YXNldC1zZWw9CmVjdG9yIikuc2hvdygpfSxoaWRlU2VsZWN0b3I6ZnVuY3Rpb24oKXt0aGlz LnNlbGVjdGFibGU9M0RmYWxzZTt0aGlzLnRyaWdnZT0Kcigic2VsZWN0YWJsZSIsZmFsc2UsdGhp cyk7dGhpcy4kKCIuZGF0YXNldC1zZWxlY3RvciIpLmhpZGUoKTt0aGlzLiQoIi5kYXRhPQpzZXQt cHJpbWFyeS1hY3Rpb25zIikuc2hvdygpfSx0b2dnbGVTZWxlY3RvcjpmdW5jdGlvbigpe2lmKCF0 aGlzLiRlbC5maW5kKCI9Ci5kYXRhc2V0LXNlbGVjdG9yIikuaXMoIjp2aXNpYmxlIikpe3RoaXMu c2hvd1NlbGVjdG9yKCl9ZWxzZXt0aGlzLmhpZGVTZWxlYz0KdG9yKCl9fSxzZWxlY3Q6ZnVuY3Rp b24oZil7dGhpcy4kZWwuZmluZCgiLmRhdGFzZXQtc2VsZWN0b3Igc3BhbiIpLnJlbW92ZUNsPQph c3MoImZhLXNxdWFyZS1vIikuYWRkQ2xhc3MoImZhLWNoZWNrLXNxdWFyZS1vIik7aWYoIXRoaXMu c2VsZWN0ZWQpe3RoaXMudHI9CmlnZ2VyKCJzZWxlY3RlZCIsdGhpcyk7dGhpcy5zZWxlY3RlZD0z RHRydWV9cmV0dXJuIGZhbHNlfSxkZXNlbGVjdDpmdW5jdGlvbj0KKGYpe3RoaXMuJGVsLmZpbmQo Ii5kYXRhc2V0LXNlbGVjdG9yIHNwYW4iKS5yZW1vdmVDbGFzcygiZmEtY2hlY2stc3F1YXJlLW8i PQopLmFkZENsYXNzKCJmYS1zcXVhcmUtbyIpO2lmKHRoaXMuc2VsZWN0ZWQpe3RoaXMudHJpZ2dl cigiZGUtc2VsZWN0ZWQiLHRoaXM9Cik7dGhpcy5zZWxlY3RlZD0zRGZhbHNlfXJldHVybiBmYWxz ZX0sdG9nZ2xlU2VsZWN0OmZ1bmN0aW9uKGYpe2lmKHRoaXMuc2VsZT0KY3RlZCl7dGhpcy5kZXNl bGVjdChmKX1lbHNle3RoaXMuc2VsZWN0KGYpfX0sZHJhZ2dhYmxlT246ZnVuY3Rpb24oKXt0aGlz LmRyPQphZ2dhYmxlPTNEdHJ1ZTt0aGlzLmRyYWdTdGFydEhhbmRsZXI9M0RfLmJpbmQodGhpcy5f ZHJhZ1N0YXJ0SGFuZGxlcix0aGlzKTs9CnRoaXMuZHJhZ0VuZEhhbmRsZXI9M0RfLmJpbmQodGhp cy5fZHJhZ0VuZEhhbmRsZXIsdGhpcyk7dmFyIGY9M0R0aGlzLiRlbC5maT0KbmQoIi5kYXRhc2V0 LXRpdGxlLWJhciIpLmF0dHIoImRyYWdnYWJsZSIsdHJ1ZSkuZ2V0KDApO2YuYWRkRXZlbnRMaXN0 ZW5lcigiPQpkcmFnc3RhcnQiLHRoaXMuZHJhZ1N0YXJ0SGFuZGxlcixmYWxzZSk7Zi5hZGRFdmVu dExpc3RlbmVyKCJkcmFnZW5kIix0aGlzLmQ9CnJhZ0VuZEhhbmRsZXIsZmFsc2UpfSxkcmFnZ2Fi bGVPZmY6ZnVuY3Rpb24oKXt0aGlzLmRyYWdnYWJsZT0zRGZhbHNlO3ZhciBmPQo9M0R0aGlzLiRl bC5maW5kKCIuZGF0YXNldC10aXRsZS1iYXIiKS5hdHRyKCJkcmFnZ2FibGUiLGZhbHNlKS5nZXQo MCk7Zi5yZW09Cm92ZUV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsdGhpcy5kcmFnU3RhcnRIYW5k bGVyLGZhbHNlKTtmLnJlbW92ZUV2ZW50TGlzdD0KZW5lcigiZHJhZ2VuZCIsdGhpcy5kcmFnRW5k SGFuZGxlcixmYWxzZSl9LHRvZ2dsZURyYWdnYWJsZTpmdW5jdGlvbigpe2lmKHRoPQppcy5kcmFn Z2FibGUpe3RoaXMuZHJhZ2dhYmxlT2ZmKCl9ZWxzZXt0aGlzLmRyYWdnYWJsZU9uKCl9fSxfZHJh Z1N0YXJ0SGFuZGw9CmVyOmZ1bmN0aW9uKGYpe3RoaXMudHJpZ2dlcigiZHJhZ3N0YXJ0Iix0aGlz KTtmLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPQo9M0QibW92ZSI7Zi5kYXRhVHJhbnNmZXIu c2V0RGF0YSgidGV4dCIsSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbC50b0pTT04oKSk9Cik7cmV0 dXJuIGZhbHNlfSxfZHJhZ0VuZEhhbmRsZXI6ZnVuY3Rpb24oZil7dGhpcy50cmlnZ2VyKCJkcmFn ZW5kIix0aGlzKTtyZT0KdHVybiBmYWxzZX0scmVtb3ZlOmZ1bmN0aW9uKGcpe3ZhciBmPTNEdGhp czt0aGlzLiRlbC5mYWRlT3V0KGYuZnhTcGVlZCxmdW5jPQp0aW9uKCl7Zi4kZWwucmVtb3ZlKCk7 Zi5vZmYoKTtpZihnKXtnKCl9fSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGY9M0QodGg9Cmlz Lm1vZGVsKT8odGhpcy5tb2RlbCsiIik6KCIobm8gbW9kZWwpIik7cmV0dXJuIkhEQUJhc2VWaWV3 KCIrZisiKSJ9fSk7dmFyID0KYT0zRFsnPGRpdiBjbGFzcz0zRCJkYXRhc2V0IGhkYSI+JywnPGRp diBjbGFzcz0zRCJkYXRhc2V0LXdhcm5pbmdzIj4nLCI8JSBpPQpmKCBoZGEuZXJyb3IgKXsgJT4i LCc8ZGl2IGNsYXNzPTNEImVycm9ybWVzc2FnZXNtYWxsIj4nLF9sKCJUaGVyZSB3YXMgYW4gZXI9 CnJvciBnZXR0aW5nIHRoZSBkYXRhIGZvciB0aGlzIGRhdGFzZXQiKSwiOjwlLSBoZGEuZXJyb3Ig JT4iLCI8L2Rpdj4iLCI8JSB9ID0KJT4iLCI8JSBpZiggaGRhLmRlbGV0ZWQgKXsgJT4iLCI8JSBp ZiggaGRhLnB1cmdlZCApeyAlPiIsJzxkaXYgY2xhc3M9M0QiZGF0PQphc2V0LXB1cmdlZC1tc2cg d2FybmluZ21lc3NhZ2VzbWFsbCI+PHN0cm9uZz4nLF9sKCJUaGlzIGRhdGFzZXQgaGFzIGJlZW4g ZGU9CmxldGVkIGFuZCByZW1vdmVkIGZyb20gZGlzay4iKSwiPC9zdHJvbmc+PC9kaXY+IiwiPCUg fSBlbHNlIHsgJT4iLCc8ZGl2IGNsYT0Kc3M9M0QiZGF0YXNldC1kZWxldGVkLW1zZyB3YXJuaW5n bWVzc2FnZXNtYWxsIj48c3Ryb25nPicsX2woIlRoaXMgZGF0YXNldCBoPQphcyBiZWVuIGRlbGV0 ZWQuIiksIjwvc3Ryb25nPjwvZGl2PiIsIjwlIH0gJT4iLCI8JSB9ICU+IiwiPCUgaWYoICFoZGEu dmlzaWI9CmxlICl7ICU+IiwnPGRpdiBjbGFzcz0zRCJkYXRhc2V0LWhpZGRlbi1tc2cgd2Fybmlu Z21lc3NhZ2VzbWFsbCI+PHN0cm9uZz4nLD0KX2woIlRoaXMgZGF0YXNldCBoYXMgYmVlbiBoaWRk ZW4uIiksIjwvc3Ryb25nPjwvZGl2PiIsIjwlIH0gJT4iLCI8L2Rpdj4iLCc8PQpkaXYgY2xhc3M9 M0QiZGF0YXNldC1zZWxlY3RvciI+JywnPHNwYW4gY2xhc3M9M0QiZmEgZmEtMnggZmEtc3F1YXJl LW8iPjwvc3A9CmFuPicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QiZGF0YXNldC1wcmltYXJ5LWFj dGlvbnMiPjwvZGl2PicsJzxkaXYgY2xhc3M9Cj0zRCJkYXRhc2V0LXRpdGxlLWJhciBjbGVhciIg dGFiaW5kZXg9M0QiMCI+JywnPHNwYW4gY2xhc3M9M0QiZGF0YXNldC1zdGF0ZT0KLWljb24gc3Rh dGUtaWNvbiI+PC9zcGFuPicsJzxkaXYgY2xhc3M9M0QiZGF0YXNldC10aXRsZSI+JywnPHNwYW4g Y2xhc3M9M0QiPQpoZGEtaGlkIj48JS0gaGRhLmhpZCAlPjwvc3Bhbj4gJywnPHNwYW4gY2xhc3M9 M0QiZGF0YXNldC1uYW1lIj48JS0gaGRhLm5hbWU9CiAlPjwvc3Bhbj4nLCI8L2Rpdj4iLCI8L2Rp dj4iLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtYm9keSI+PC9kaXY+JywiPC9kaXY+Ij0KXS5qb2lu KCIiKTt2YXIgZT0zRFsnPGRpdiBjbGFzcz0zRCJkYXRhc2V0LWJvZHkiPicsIjwlIGlmKCBoZGEu Ym9keSApeyAlPiIsPQonPGRpdiBjbGFzcz0zRCJkYXRhc2V0LXN1bW1hcnkiPicsIjwlPTNEIGhk YS5ib2R5ICU+IiwiPC9kaXY+IiwnPGRpdiBjbGFzcz0KPTNEImRhdGFzZXQtYWN0aW9ucyBjbGVh ciI+JywnPGRpdiBjbGFzcz0zRCJsZWZ0Ij48L2Rpdj4nLCc8ZGl2IGNsYXNzPTNEInJpPQpnaHQi PjwvZGl2PicsIjwvZGl2PiIsIjwlIH0gZWxzZSB7ICU+IiwnPGRpdiBjbGFzcz0zRCJkYXRhc2V0 LXN1bW1hcnkiPicsIjw9CiUgaWYoIGhkYS5taXNjX2JsdXJiICl7ICU+IiwnPGRpdiBjbGFzcz0z RCJkYXRhc2V0LWJsdXJiIj4nLCc8c3BhbiBjbGFzcz0zRD0KInZhbHVlIj48JS0gaGRhLm1pc2Nf Ymx1cmIgJT48L3NwYW4+JywiPC9kaXY+IiwiPCUgfSAlPiIsIjwlIGlmKCBoZGEuZGF0YV90PQp5 cGUgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtZGF0YXR5cGUiPicsJzxsYWJlbCBjbGFz cz0zRCJwcm9tcHQiPicsX2w9CigiZm9ybWF0IiksIjwvbGFiZWw+IiwnPHNwYW4gY2xhc3M9M0Qi dmFsdWUiPjwlLSBoZGEuZGF0YV90eXBlICU+PC9zcGFuPicsIj0KPC9kaXY+IiwiPCUgfSAlPiIs IjwlIGlmKCBoZGEubWV0YWRhdGFfZGJrZXkgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQt PQpkYmtleSI+JywnPGxhYmVsIGNsYXNzPTNEInByb21wdCI+JyxfbCgiZGF0YWJhc2UiKSwiPC9s YWJlbD4iLCc8c3BhbiBjbGFzcz0KPTNEInZhbHVlIj4nLCI8JS0gaGRhLm1ldGFkYXRhX2Ria2V5 ICU+IiwiPC9zcGFuPiIsIjwvZGl2PiIsIjwlIH0gJT4iLCI8JSBpPQpmKCBoZGEubWlzY19pbmZv ICl7ICU+IiwnPGRpdiBjbGFzcz0zRCJkYXRhc2V0LWluZm8iPicsJzxzcGFuIGNsYXNzPTNEInZh bHU9CmUiPjwlLSBoZGEubWlzY19pbmZvICU+PC9zcGFuPicsIjwvZGl2PiIsIjwlIH0gJT4iLCI8 L2Rpdj4iLCc8ZGl2IGNsYXNzPTNEIj0KZGF0YXNldC1hY3Rpb25zIGNsZWFyIj4nLCc8ZGl2IGNs YXNzPTNEImxlZnQiPjwvZGl2PicsJzxkaXYgY2xhc3M9M0QicmlnaHQiPQo+PC9kaXY+JywiPC9k aXY+IiwiPCUgaWYoICFoZGEuZGVsZXRlZCApeyAlPiIsJzxkaXYgY2xhc3M9M0QidGFncy1kaXNw bGF5Ij49CjwvZGl2PicsJzxkaXYgY2xhc3M9M0QiYW5ub3RhdGlvbi1kaXNwbGF5Ij48L2Rpdj4n LCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtZD0KaXNwbGF5LWFwcGxpY2F0aW9ucyI+JywiPCUgXy5l YWNoKCBoZGEuZGlzcGxheV9hcHBzLCBmdW5jdGlvbiggYXBwICl7ICU+IiwnPQo8ZGl2IGNsYXNz PTNEImRpc3BsYXktYXBwbGljYXRpb24iPicsJzxzcGFuIGNsYXNzPTNEImRpc3BsYXktYXBwbGlj YXRpb24tbG89CmNhdGlvbiI+PCUtIGFwcC5sYWJlbCAlPjwvc3Bhbj4gJywnPHNwYW4gY2xhc3M9 M0QiZGlzcGxheS1hcHBsaWNhdGlvbi1saW5rcz0KIj4nLCI8JSBfLmVhY2goIGFwcC5saW5rcywg ZnVuY3Rpb24oIGxpbmsgKXsgJT4iLCc8YSB0YXJnZXQ9M0QiPCU9M0QgbGluay50PQphcmdldCAl PiIgaHJlZj0zRCI8JT0zRCBsaW5rLmhyZWYgJT4iPicsIjwlIHByaW50KCBfbCggbGluay50ZXh0 ICkgKTsgJT4iLCI9CjwvYT4gIiwiPCUgfSk7ICU+IiwiPC9zcGFuPiIsIjwvZGl2PiIsIjwlIH0p OyAlPiIsIjwlIF8uZWFjaCggaGRhLmRpc3BsYXlfdD0KeXBlcywgZnVuY3Rpb24oIGFwcCApeyAl PiIsJzxkaXYgY2xhc3M9M0QiZGlzcGxheS1hcHBsaWNhdGlvbiI+JywnPHNwYW4gY2xhPQpzcz0z RCJkaXNwbGF5LWFwcGxpY2F0aW9uLWxvY2F0aW9uIj48JS0gYXBwLmxhYmVsICU+PC9zcGFuPiAn LCc8c3BhbiBjbGFzcz0KPTNEImRpc3BsYXktYXBwbGljYXRpb24tbGlua3MiPicsIjwlIF8uZWFj aCggYXBwLmxpbmtzLCBmdW5jdGlvbiggbGluayApeyAlPQo+IiwnPGEgdGFyZ2V0PTNEIjwlPTNE IGxpbmsudGFyZ2V0ICU+IiBocmVmPTNEIjwlPTNEIGxpbmsuaHJlZiAlPiI+JywiPCUgcHI9Cmlu dCggX2woIGxpbmsudGV4dCApICk7ICU+IiwiPC9hPiAiLCI8JSB9KTsgJT4iLCI8L3NwYW4+Iiwi PC9kaXY+IiwiPCUgfSk7ID0KJT4iLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtcGVl ayI+JywiPCUgaWYoIGhkYS5wZWVrICl7ICU+IiwnPHByZSBjPQpsYXNzPTNEInBlZWsiPjwlPTNE IGhkYS5wZWVrICU+PC9wcmU+JywiPCUgfSAlPiIsIjwvZGl2PiIsIjwlIH0gJT4iLCI8JSB9ICU9 Cj4iLCI8L2Rpdj4iXS5qb2luKCIiKTtjLnRlbXBsYXRlcz0zRHtza2VsZXRvbjpmdW5jdGlvbihm KXtyZXR1cm4gXy50ZW1wbGF0ZT0KKGEsZix7dmFyaWFibGU6ImhkYSJ9KX0sYm9keTpmdW5jdGlv bihmKXtyZXR1cm4gXy50ZW1wbGF0ZShlLGYse3ZhcmlhYmxlOiJoPQpkYSJ9KX19O3JldHVybntI REFCYXNlVmlldzpjfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbIm12 Yy9kYXRhc2V0L2hkYS1tb2RlbCIsIm12Yy9iYXNlLW12YyIsInV0aWxzL2xvY2FsaXphdGlvbiJd LGZ1bmN0PQppb24oZSxiLGQpe3ZhciBjPTNEQmFja2JvbmUuVmlldy5leHRlbmQoYi5Mb2dnYWJs ZU1peGluKS5leHRlbmQoe3RhZ05hbWU6ImQ9Cml2IixjbGFzc05hbWU6ImRhdGFzZXQgaGRhIGhp c3RvcnktcGFuZWwtaGRhIixpZDpmdW5jdGlvbigpe3JldHVybiJoZGEtIit0aD0KaXMubW9kZWwu Z2V0KCJpZCIpfSxmeFNwZWVkOiJmYXN0Iixpbml0aWFsaXplOmZ1bmN0aW9uKGcpe2lmKGcubG9n Z2VyKXt0aGlzPQoubG9nZ2VyPTNEdGhpcy5tb2RlbC5sb2dnZXI9M0RnLmxvZ2dlcn10aGlzLmxv Zyh0aGlzKyIuaW5pdGlhbGl6ZToiLGcpO3RoaXM9Ci5kZWZhdWx0UHJpbWFyeUFjdGlvbkJ1dHRv blJlbmRlcmVycz0zRFt0aGlzLl9yZW5kZXJfc2hvd1BhcmFtc0J1dHRvbl07dGhpcz0KLmxpbmtU YXJnZXQ9M0RnLmxpbmtUYXJnZXR8fCJfYmxhbmsiO3RoaXMuc2VsZWN0YWJsZT0zRGcuc2VsZWN0 YWJsZXx8ZmFsc2U7PQp0aGlzLnNlbGVjdGVkPTNEZy5zZWxlY3RlZHx8ZmFsc2U7dGhpcy5leHBh bmRlZD0zRGcuZXhwYW5kZWR8fGZhbHNlO3RoaXMuZHI9CmFnZ2FibGU9M0RnLmRyYWdnYWJsZXx8 ZmFsc2U7dGhpcy5fc2V0VXBMaXN0ZW5lcnMoKX0sX3NldFVwTGlzdGVuZXJzOmZ1bmN0aT0Kb24o KXt0aGlzLm1vZGVsLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGgsZyl7aWYodGhpcy5tb2RlbC5jaGFu Z2VkQXR0cmlidXRlcygpPQouc3RhdGUmJnRoaXMubW9kZWwuaW5SZWFkeVN0YXRlKCkmJnRoaXMu ZXhwYW5kZWQmJiF0aGlzLm1vZGVsLmhhc0RldGFpbHMoKSk9Cnt0aGlzLm1vZGVsLmZldGNoKCl9 ZWxzZXt0aGlzLnJlbmRlcigpfX0sdGhpcyl9LHJlbmRlcjpmdW5jdGlvbihpKXtpPTNEKGk9Cj0z RD0zRD0zRHVuZGVmaW5lZCk/KHRydWUpOihpKTt2YXIgZz0zRHRoaXM7dGhpcy4kZWwuZmluZCgi W3RpdGxlXSIpLnRvb2x0aT0KcCgiZGVzdHJveSIpO3RoaXMudXJscz0zRHRoaXMubW9kZWwudXJs cygpO3ZhciBoPTNEdGhpcy5fYnVpbGROZXdSZW5kZXIoKTtpPQpmKGkpeyQoZykucXVldWUoZnVu Y3Rpb24oail7dGhpcy4kZWwuZmFkZU91dChnLmZ4U3BlZWQsail9KX0kKGcpLnF1ZXVlKGZ1bmM9 CnRpb24oail7dGhpcy4kZWwuZW1wdHkoKS5hdHRyKCJjbGFzcyIsZy5jbGFzc05hbWUpLmFkZENs YXNzKCJzdGF0ZS0iK2cubW9kZT0KbC5nZXQoInN0YXRlIikpLmFwcGVuZChoLmNoaWxkcmVuKCkp O2lmKHRoaXMuc2VsZWN0YWJsZSl7dGhpcy5zaG93U2VsZWN0b3IoPQowKX1qKCl9KTtpZihpKXsk KGcpLnF1ZXVlKGZ1bmN0aW9uKGope3RoaXMuJGVsLmZhZGVJbihnLmZ4U3BlZWQsail9KX0kKGcp LnE9CnVldWUoZnVuY3Rpb24oail7dGhpcy50cmlnZ2VyKCJyZW5kZXJlZCIsZyk7aWYodGhpcy5t b2RlbC5pblJlYWR5U3RhdGUoKSl7dD0KaGlzLnRyaWdnZXIoInJlbmRlcmVkOnJlYWR5IixnKX1p Zih0aGlzLmRyYWdnYWJsZSl7dGhpcy5kcmFnZ2FibGVPbigpfWooKX0pPQo7cmV0dXJuIHRoaXN9 LF9idWlsZE5ld1JlbmRlcjpmdW5jdGlvbigpe3ZhciBnPTNEJChjLnRlbXBsYXRlcy5za2VsZXRv bih0aGk9CnMubW9kZWwudG9KU09OKCkpKTtnLmZpbmQoIi5kYXRhc2V0LXByaW1hcnktYWN0aW9u cyIpLmFwcGVuZCh0aGlzLl9yZW5kZXJfdD0KaXRsZUJ1dHRvbnMoKSk7Zy5jaGlsZHJlbigiLmRh dGFzZXQtYm9keSIpLnJlcGxhY2VXaXRoKHRoaXMuX3JlbmRlcl9ib2R5KCkpPQo7dGhpcy5fc2V0 VXBCZWhhdmlvcnMoZyk7cmV0dXJuIGd9LF9zZXRVcEJlaGF2aW9yczpmdW5jdGlvbihnKXtnPTNE Z3x8dGhpcy49CiRlbDttYWtlX3BvcHVwX21lbnVzKGcpO2cuZmluZCgiW3RpdGxlXSIpLnRvb2x0 aXAoe3BsYWNlbWVudDoiYm90dG9tIn0pfSxfcj0KZW5kZXJfdGl0bGVCdXR0b25zOmZ1bmN0aW9u KCl7cmV0dXJuW3RoaXMuX3JlbmRlcl9kaXNwbGF5QnV0dG9uKCldfSxfcmVuZGVyPQpfZGlzcGxh eUJ1dHRvbjpmdW5jdGlvbigpe2lmKCh0aGlzLm1vZGVsLmdldCgic3RhdGUiKT0zRD0zRD0zRGUu SGlzdG9yeURhdGE9CnNldEFzc29jaWF0aW9uLlNUQVRFUy5OT1RfVklFV0FCTEUpfHwodGhpcy5t b2RlbC5nZXQoInN0YXRlIik9M0Q9M0Q9M0RlLkhpcz0KdG9yeURhdGFzZXRBc3NvY2lhdGlvbi5T VEFURVMuRElTQ0FSREVEKXx8KCF0aGlzLm1vZGVsLmdldCgiYWNjZXNzaWJsZSIpKSl7PQpyZXR1 cm4gbnVsbH12YXIgaD0zRHt0YXJnZXQ6dGhpcy5saW5rVGFyZ2V0LGNsYXNzZXM6ImRhdGFzZXQt ZGlzcGxheSJ9O2lmKHQ9Cmhpcy5tb2RlbC5nZXQoInB1cmdlZCIpKXtoLmRpc2FibGVkPTNEdHJ1 ZTtoLnRpdGxlPTNEZCgiQ2Fubm90IGRpc3BsYXkgZGF0YT0Kc2V0cyByZW1vdmVkIGZyb20gZGlz ayIpfWVsc2V7aWYodGhpcy5tb2RlbC5nZXQoInN0YXRlIik9M0Q9M0Q9M0RlLkhpc3RvcnlEPQph dGFzZXRBc3NvY2lhdGlvbi5TVEFURVMuVVBMT0FEKXtoLmRpc2FibGVkPTNEdHJ1ZTtoLnRpdGxl PTNEZCgiVGhpcyBkYXRhc2U9CnQgbXVzdCBmaW5pc2ggdXBsb2FkaW5nIGJlZm9yZSBpdCBjYW4g YmUgdmlld2VkIil9ZWxzZXtpZih0aGlzLm1vZGVsLmdldCgicz0KdGF0ZSIpPTNEPTNEPTNEZS5I aXN0b3J5RGF0YXNldEFzc29jaWF0aW9uLlNUQVRFUy5ORVcpe2guZGlzYWJsZWQ9M0R0cnVlO2gu PQp0aXRsZT0zRGQoIlRoaXMgZGF0YXNldCBpcyBub3QgeWV0IHZpZXdhYmxlIil9ZWxzZXtoLnRp dGxlPTNEZCgiVmlldyBkYXRhIik9CjtoLmhyZWY9M0R0aGlzLnVybHMuZGlzcGxheTt2YXIgZz0z RHRoaXM7aC5vbmNsaWNrPTNEZnVuY3Rpb24oaSl7aWYoR2FsYXh5Lj0KZnJhbWUmJkdhbGF4eS5m cmFtZS5hY3RpdmUpe0dhbGF4eS5mcmFtZS5hZGQoe3RpdGxlOiJEYXRhIFZpZXdlcjogIitnLm1v ZGVsPQouZ2V0KCJuYW1lIiksdHlwZToidXJsIixjb250ZW50OmcudXJscy5kaXNwbGF5fSk7aS5w cmV2ZW50RGVmYXVsdCgpfX19fX1oLmY9CmFJY29uPTNEImZhLWV5ZSI7cmV0dXJuIGZhSWNvbkJ1 dHRvbihoKX0sX3JlbmRlcl9kb3dubG9hZEJ1dHRvbjpmdW5jdGlvbigpez0KaWYodGhpcy5tb2Rl bC5nZXQoInB1cmdlZCIpfHwhdGhpcy5tb2RlbC5oYXNEYXRhKCkpe3JldHVybiBudWxsfXZhciBo PTNEdGhpPQpzLnVybHMsaT0zRHRoaXMubW9kZWwuZ2V0KCJtZXRhX2ZpbGVzIik7aWYoXy5pc0Vt cHR5KGkpKXtyZXR1cm4gJChbJzxhIGhyZWY9Cj0zRCInK2guZG93bmxvYWQrJyIgdGl0bGU9M0Qi JytkKCJEb3dubG9hZCIpKyciICcsJ2NsYXNzPTNEImljb24tYnRuIGRhdGFzZT0KdC1kb3dubG9h ZC1idG4iPicsJzxzcGFuIGNsYXNzPTNEImZhIGZhLWZsb3BweS1vIj48L3NwYW4+JywiPC9hPiJd LmpvaW4oIiIpPQopfXZhciBqPTNEImRhdGFzZXQtIit0aGlzLm1vZGVsLmdldCgiaWQiKSsiLXBv cHVwIixnPTNEWyc8ZGl2IHBvcHVwbWVudT0zRCI9CicraisnIj4nLCc8YSBocmVmPTNEIicraC5k b3dubG9hZCsnIj4nLGQoIkRvd25sb2FkIERhdGFzZXQiKSwiPC9hPiIsIjxhPiIrZD0KKCJBZGRp dGlvbmFsIEZpbGVzIikrIjwvYT4iLF8ubWFwKGksZnVuY3Rpb24oayl7cmV0dXJuWyc8YSBjbGFz cz0zRCJhY3Rpb24tPQpidXR0b24iIGhyZWY9M0QiJyxoLm1ldGFfZG93bmxvYWQray5maWxlX3R5 cGUsJyI+JyxkKCJEb3dubG9hZCIpLCIgIixrLmZpbGU9Cl90eXBlLCI8L2E+Il0uam9pbigiIil9 KS5qb2luKCJcbiIpLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPTNEImljb24tYnRuLWdyb3VwIj0KPics JzxhIGhyZWY9M0QiJytoLmRvd25sb2FkKyciIHRpdGxlPTNEIicrZCgiRG93bmxvYWQiKSsnIiAn LCdjbGFzcz0zRCJpY29uPQotYnRuIGRhdGFzZXQtZG93bmxvYWQtYnRuIj4nLCc8c3BhbiBjbGFz cz0zRCJmYSBmYS1mbG9wcHktbyI+PC9zcGFuPicsJzwvYT49CjxhIGNsYXNzPTNEImljb24tYnRu IHBvcHVwIiBpZD0zRCInK2orJyI+JywnPHNwYW4gY2xhc3M9M0QiZmEgZmEtY2FyZXQtZG93bj0K Ij48L3NwYW4+JywiPC9hPiIsIjwvZGl2PiJdLmpvaW4oIlxuIik7cmV0dXJuICQoZyl9LF9yZW5k ZXJfc2hvd1BhcmFtc0J1dHRvPQpuOmZ1bmN0aW9uKCl7cmV0dXJuIGZhSWNvbkJ1dHRvbih7dGl0 bGU6ZCgiVmlldyBkZXRhaWxzIiksY2xhc3NlczoiZGF0YXNldC09CnBhcmFtcy1idG4iLGhyZWY6 dGhpcy51cmxzLnNob3dfcGFyYW1zLHRhcmdldDp0aGlzLmxpbmtUYXJnZXQsZmFJY29uOiJmYS1p bj0KZm8tY2lyY2xlIn0pfSxfcmVuZGVyX2JvZHk6ZnVuY3Rpb24oKXt2YXIgaD0zRCQoJzxkaXY+ RXJyb3I6IHVua25vd24gZGF0YXNlPQp0IHN0YXRlICInK3RoaXMubW9kZWwuZ2V0KCJzdGF0ZSIp KyciLjwvZGl2PicpLGc9M0R0aGlzWyJfcmVuZGVyX2JvZHlfIit0aGk9CnMubW9kZWwuZ2V0KCJz dGF0ZSIpXTtpZihfLmlzRnVuY3Rpb24oZykpe2g9M0RnLmNhbGwodGhpcyl9dGhpcy5fc2V0VXBC ZWhhdj0KaW9ycyhoKTtpZih0aGlzLmV4cGFuZGVkKXtoLnNob3coKX1yZXR1cm4gaH0sX3JlbmRl cl9zdGF0ZUJvZHlIZWxwZXI6ZnVuY3RpPQpvbihnLGope2o9M0RqfHxbXTt2YXIgaD0zRHRoaXMs aT0zRCQoYy50ZW1wbGF0ZXMuYm9keShfLmV4dGVuZCh0aGlzLm1vZGVsLnQ9Cm9KU09OKCkse2Jv ZHk6Z30pKSk7aS5maW5kKCIuZGF0YXNldC1hY3Rpb25zIC5sZWZ0IikuYXBwZW5kKF8ubWFwKGos ZnVuY3Rpbz0KbihrKXtyZXR1cm4gay5jYWxsKGgpfSkpO3JldHVybiBpfSxfcmVuZGVyX2JvZHlf bmV3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuPQpfcmVuZGVyX3N0YXRlQm9keUhlbHBlcigiPGRp dj4iK2QoIlRoaXMgaXMgYSBuZXcgZGF0YXNldCBhbmQgbm90IGFsbCBvZiBpdHM9CiBkYXRhIGFy ZSBhdmFpbGFibGUgeWV0IikrIjwvZGl2PiIsdGhpcy5kZWZhdWx0UHJpbWFyeUFjdGlvbkJ1dHRv blJlbmRlcmVycz0KKX0sX3JlbmRlcl9ib2R5X25vUGVybWlzc2lvbjpmdW5jdGlvbigpe3JldHVy biB0aGlzLl9yZW5kZXJfc3RhdGVCb2R5SGVscGVyPQooIjxkaXY+IitkKCJZb3UgZG8gbm90IGhh dmUgcGVybWlzc2lvbiB0byB2aWV3IHRoaXMgZGF0YXNldCIpKyI8L2Rpdj4iKX0sX3I9CmVuZGVy X2JvZHlfZGlzY2FyZGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlcl9zdGF0ZUJvZHlI ZWxwZXIoIjxkaXY+Ij0KK2QoIlRoZSBqb2IgY3JlYXRpbmcgdGhpcyBkYXRhc2V0IHdhcyBjYW5j ZWxsZWQgYmVmb3JlIGNvbXBsZXRpb24iKSsiPC9kaXY+PQoiLHRoaXMuZGVmYXVsdFByaW1hcnlB Y3Rpb25CdXR0b25SZW5kZXJlcnMpfSxfcmVuZGVyX2JvZHlfcXVldWVkOmZ1bmN0aW9uKCk9Cnty ZXR1cm4gdGhpcy5fcmVuZGVyX3N0YXRlQm9keUhlbHBlcigiPGRpdj4iK2QoIlRoaXMgam9iIGlz IHdhaXRpbmcgdG8gcnVuIj0KKSsiPC9kaXY+Iix0aGlzLmRlZmF1bHRQcmltYXJ5QWN0aW9uQnV0 dG9uUmVuZGVyZXJzKX0sX3JlbmRlcl9ib2R5X3VwbG9hZDpmPQp1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX3JlbmRlcl9zdGF0ZUJvZHlIZWxwZXIoIjxkaXY+IitkKCJUaGlzIGRhdGFzZXQgaXMgY3U9 CnJyZW50bHkgdXBsb2FkaW5nIikrIjwvZGl2PiIpfSxfcmVuZGVyX2JvZHlfc2V0dGluZ19tZXRh ZGF0YTpmdW5jdGlvbigpe3JldD0KdXJuIHRoaXMuX3JlbmRlcl9zdGF0ZUJvZHlIZWxwZXIoIjxk aXY+IitkKCJNZXRhZGF0YSBpcyBiZWluZyBhdXRvLWRldGVjdGVkPQoiKSsiPC9kaXY+Iil9LF9y ZW5kZXJfYm9keV9ydW5uaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlcl9zdGF0ZUJv ZHk9CkhlbHBlcigiPGRpdj4iK2QoIlRoaXMgam9iIGlzIGN1cnJlbnRseSBydW5uaW5nIikrIjwv ZGl2PiIsdGhpcy5kZWZhdWx0UHJpbT0KYXJ5QWN0aW9uQnV0dG9uUmVuZGVyZXJzKX0sX3JlbmRl cl9ib2R5X3BhdXNlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kPQplcl9zdGF0ZUJvZHlI ZWxwZXIoIjxkaXY+IitkKCdUaGlzIGpvYiBpcyBwYXVzZWQuIFVzZSB0aGUgIlJlc3VtZSBQYXVz ZWQgSm89CmJzIiBpbiB0aGUgaGlzdG9yeSBtZW51IHRvIHJlc3VtZScpKyI8L2Rpdj4iLHRoaXMu ZGVmYXVsdFByaW1hcnlBY3Rpb25CdXR0bz0KblJlbmRlcmVycyl9LF9yZW5kZXJfYm9keV9lcnJv cjpmdW5jdGlvbigpe3ZhciBnPTNEWyc8c3BhbiBjbGFzcz0zRCJoZWxwLXRlPQp4dCI+JyxkKCJB biBlcnJvciBvY2N1cnJlZCB3aXRoIHRoaXMgZGF0YXNldCIpLCI6PC9zcGFuPiIsJzxkaXYgY2xh c3M9M0Qiam89CmItZXJyb3ItdGV4dCI+JywkLnRyaW0odGhpcy5tb2RlbC5nZXQoIm1pc2NfaW5m byIpKSwiPC9kaXY+Il0uam9pbigiIik7aWYoIT0KdGhpcy5tb2RlbC5nZXQoInB1cmdlZCIpKXtn PTNEIjxkaXY+Iit0aGlzLm1vZGVsLmdldCgibWlzY19ibHVyYiIpKyI8L2Rpdj4iPQorZ31yZXR1 cm4gdGhpcy5fcmVuZGVyX3N0YXRlQm9keUhlbHBlcihnLFt0aGlzLl9yZW5kZXJfZG93bmxvYWRC dXR0b25dLmNvbmM9CmF0KHRoaXMuZGVmYXVsdFByaW1hcnlBY3Rpb25CdXR0b25SZW5kZXJlcnMp KX0sX3JlbmRlcl9ib2R5X2VtcHR5OmZ1bmN0aW9uKD0KKXtyZXR1cm4gdGhpcy5fcmVuZGVyX3N0 YXRlQm9keUhlbHBlcigiPGRpdj4iK2QoIk5vIGRhdGEiKSsiOiA8aT4iK3RoaXMubW9kPQplbC5n ZXQoIm1pc2NfYmx1cmIiKSsiPC9pPjwvZGl2PiIsdGhpcy5kZWZhdWx0UHJpbWFyeUFjdGlvbkJ1 dHRvblJlbmRlcmVycyk9Cn0sX3JlbmRlcl9ib2R5X2ZhaWxlZF9tZXRhZGF0YTpmdW5jdGlvbigp e3ZhciBnPTNEJCgnPGRpdiBjbGFzcz0zRCJ3YXJuaW5nbT0KZXNzYWdlc21hbGwiPjwvZGl2Picp LmFwcGVuZCgkKCI8c3Ryb25nLz4iKS50ZXh0KGQoIkFuIGVycm9yIG9jY3VycmVkIHNldHRpPQpu ZyB0aGUgbWV0YWRhdGEgZm9yIHRoaXMgZGF0YXNldCIpKSksaD0zRHRoaXMuX3JlbmRlcl9ib2R5 X29rKCk7aC5wcmVwZW5kKGc9Cik7cmV0dXJuIGh9LF9yZW5kZXJfYm9keV9vazpmdW5jdGlvbigp e3ZhciBnPTNEdGhpcyxpPTNEJChjLnRlbXBsYXRlcy5ib2R5KD0KdGhpcy5tb2RlbC50b0pTT04o KSkpLGg9M0RbdGhpcy5fcmVuZGVyX2Rvd25sb2FkQnV0dG9uXS5jb25jYXQodGhpcy5kZWZhdWx0 PQpQcmltYXJ5QWN0aW9uQnV0dG9uUmVuZGVyZXJzKTtpLmZpbmQoIi5kYXRhc2V0LWFjdGlvbnMg LmxlZnQiKS5hcHBlbmQoXy5tYXA9CihoLGZ1bmN0aW9uKGope3JldHVybiBqLmNhbGwoZyl9KSk7 aWYodGhpcy5tb2RlbC5pc0RlbGV0ZWRPclB1cmdlZCgpKXtyZXR1cj0KbiBpfXJldHVybiBpfSxl dmVudHM6eyJjbGljayAuZGF0YXNldC10aXRsZS1iYXIiOiJ0b2dnbGVCb2R5VmlzaWJpbGl0eSIs ImtlPQp5ZG93biAuZGF0YXNldC10aXRsZS1iYXIiOiJ0b2dnbGVCb2R5VmlzaWJpbGl0eSIsImNs aWNrIC5kYXRhc2V0LXNlbGVjdG9yIjo9CiJ0b2dnbGVTZWxlY3QifSx0b2dnbGVCb2R5VmlzaWJp bGl0eTpmdW5jdGlvbihqLGgpe3ZhciBnPTNEMzIsaT0zRDEzO2lmKGomJj0KKGoudHlwZT0zRD0z RD0zRCJrZXlkb3duIikmJiEoai5rZXlDb2RlPTNEPTNEPTNEZ3x8ai5rZXlDb2RlPTNEPTNEPTNE aSkpe3JlPQp0dXJuIHRydWV9dmFyIGs9M0R0aGlzLiRlbC5maW5kKCIuZGF0YXNldC1ib2R5Iik7 aD0zRChoPTNEPTNEPTNEdW5kZWZpbmVkKT89Cighay5pcygiOnZpc2libGUiKSk6KGgpO2lmKGgp e3RoaXMuZXhwYW5kQm9keSgpfWVsc2V7dGhpcy5jb2xsYXBzZUJvZHkoKX1yZT0KdHVybiBmYWxz ZX0sZXhwYW5kQm9keTpmdW5jdGlvbigpe3ZhciBnPTNEdGhpcztmdW5jdGlvbiBoKCl7Zy4kZWwu Y2hpbGRyZW4oPQoiLmRhdGFzZXQtYm9keSIpLnJlcGxhY2VXaXRoKGcuX3JlbmRlcl9ib2R5KCkp O2cuJGVsLmNoaWxkcmVuKCIuZGF0YXNldC1ib2Q9CnkiKS5zbGlkZURvd24oZy5meFNwZWVkLGZ1 bmN0aW9uKCl7Zy5leHBhbmRlZD0zRHRydWU7Zy50cmlnZ2VyKCJib2R5LWV4cGFuZD0KZWQiLGcu bW9kZWwuZ2V0KCJpZCIpKX0pfWlmKHRoaXMubW9kZWwuaW5SZWFkeVN0YXRlKCkmJiF0aGlzLm1v ZGVsLmhhc0RldGFpPQpscygpKXt0aGlzLm1vZGVsLmZldGNoKHtzaWxlbnQ6dHJ1ZX0pLmFsd2F5 cyhmdW5jdGlvbihpKXtnLnVybHM9M0RnLm1vZGVsLnU9CnJscygpO2goKX0pfWVsc2V7aCgpfX0s Y29sbGFwc2VCb2R5OmZ1bmN0aW9uKCl7dmFyIGc9M0R0aGlzO3RoaXMuJGVsLmNoaWxkcj0KZW4o Ii5kYXRhc2V0LWJvZHkiKS5zbGlkZVVwKGcuZnhTcGVlZCxmdW5jdGlvbigpe2cuZXhwYW5kZWQ9 M0RmYWxzZTtnLnRyaWdnPQplcigiYm9keS1jb2xsYXBzZWQiLGcubW9kZWwuZ2V0KCJpZCIpKX0p fSxzaG93U2VsZWN0b3I6ZnVuY3Rpb24oKXtpZih0aGlzLnM9CmVsZWN0ZWQpe3RoaXMuc2VsZWN0 KG51bGwsdHJ1ZSl9dGhpcy5zZWxlY3RhYmxlPTNEdHJ1ZTt0aGlzLnRyaWdnZXIoInNlbGVjdD0K YWJsZSIsdHJ1ZSx0aGlzKTt0aGlzLiQoIi5kYXRhc2V0LXByaW1hcnktYWN0aW9ucyIpLmhpZGUo KTt0aGlzLiQoIi5kYXRhc2V0PQotc2VsZWN0b3IiKS5zaG93KCl9LGhpZGVTZWxlY3RvcjpmdW5j dGlvbigpe3RoaXMuc2VsZWN0YWJsZT0zRGZhbHNlO3RoaXMudHI9CmlnZ2VyKCJzZWxlY3RhYmxl IixmYWxzZSx0aGlzKTt0aGlzLiQoIi5kYXRhc2V0LXNlbGVjdG9yIikuaGlkZSgpO3RoaXMuJCgi Lj0KZGF0YXNldC1wcmltYXJ5LWFjdGlvbnMiKS5zaG93KCl9LHRvZ2dsZVNlbGVjdG9yOmZ1bmN0 aW9uKCl7aWYoIXRoaXMuJGVsLmZpPQpuZCgiLmRhdGFzZXQtc2VsZWN0b3IiKS5pcygiOnZpc2li bGUiKSl7dGhpcy5zaG93U2VsZWN0b3IoKX1lbHNle3RoaXMuaGlkZVM9CmVsZWN0b3IoKX19LHNl bGVjdDpmdW5jdGlvbihnKXt0aGlzLiRlbC5maW5kKCIuZGF0YXNldC1zZWxlY3RvciBzcGFuIiku cmVtbz0KdmVDbGFzcygiZmEtc3F1YXJlLW8iKS5hZGRDbGFzcygiZmEtY2hlY2stc3F1YXJlLW8i KTtpZighdGhpcy5zZWxlY3RlZCl7dGhpPQpzLnRyaWdnZXIoInNlbGVjdGVkIix0aGlzKTt0aGlz LnNlbGVjdGVkPTNEdHJ1ZX1yZXR1cm4gZmFsc2V9LGRlc2VsZWN0OmZ1bmM9CnRpb24oZyl7dGhp cy4kZWwuZmluZCgiLmRhdGFzZXQtc2VsZWN0b3Igc3BhbiIpLnJlbW92ZUNsYXNzKCJmYS1jaGVj ay1zcXVhcj0KZS1vIikuYWRkQ2xhc3MoImZhLXNxdWFyZS1vIik7aWYodGhpcy5zZWxlY3RlZCl7 dGhpcy50cmlnZ2VyKCJkZS1zZWxlY3RlZCIsPQp0aGlzKTt0aGlzLnNlbGVjdGVkPTNEZmFsc2V9 cmV0dXJuIGZhbHNlfSx0b2dnbGVTZWxlY3Q6ZnVuY3Rpb24oZyl7aWYodGhpcy49CnNlbGVjdGVk KXt0aGlzLmRlc2VsZWN0KGcpfWVsc2V7dGhpcy5zZWxlY3QoZyl9fSxkcmFnZ2FibGVPbjpmdW5j dGlvbigpe3RoaT0Kcy5kcmFnZ2FibGU9M0R0cnVlO3RoaXMuZHJhZ1N0YXJ0SGFuZGxlcj0zRF8u YmluZCh0aGlzLl9kcmFnU3RhcnRIYW5kbGVyLHRoPQppcyk7dGhpcy5kcmFnRW5kSGFuZGxlcj0z RF8uYmluZCh0aGlzLl9kcmFnRW5kSGFuZGxlcix0aGlzKTt2YXIgZz0zRHRoaXMuJGU9CmwuZmlu ZCgiLmRhdGFzZXQtdGl0bGUtYmFyIikuYXR0cigiZHJhZ2dhYmxlIix0cnVlKS5nZXQoMCk7Zy5h ZGRFdmVudExpc3Rlbj0KZXIoImRyYWdzdGFydCIsdGhpcy5kcmFnU3RhcnRIYW5kbGVyLGZhbHNl KTtnLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbmQiLHRoPQppcy5kcmFnRW5kSGFuZGxlcixmYWxz ZSl9LGRyYWdnYWJsZU9mZjpmdW5jdGlvbigpe3RoaXMuZHJhZ2dhYmxlPTNEZmFsc2U7dmE9CnIg Zz0zRHRoaXMuJGVsLmZpbmQoIi5kYXRhc2V0LXRpdGxlLWJhciIpLmF0dHIoImRyYWdnYWJsZSIs ZmFsc2UpLmdldCgwKTtnLj0KcmVtb3ZlRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0Iix0aGlzLmRy YWdTdGFydEhhbmRsZXIsZmFsc2UpO2cucmVtb3ZlRXZlbnRMPQppc3RlbmVyKCJkcmFnZW5kIix0 aGlzLmRyYWdFbmRIYW5kbGVyLGZhbHNlKX0sdG9nZ2xlRHJhZ2dhYmxlOmZ1bmN0aW9uKCl7aWY9 Cih0aGlzLmRyYWdnYWJsZSl7dGhpcy5kcmFnZ2FibGVPZmYoKX1lbHNle3RoaXMuZHJhZ2dhYmxl T24oKX19LF9kcmFnU3RhcnRIYT0KbmRsZXI6ZnVuY3Rpb24oZyl7dGhpcy50cmlnZ2VyKCJkcmFn c3RhcnQiLHRoaXMpO2cuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93PQplZD0zRCJtb3ZlIjtnLmRh dGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0IixKU09OLnN0cmluZ2lmeSh0aGlzLm1vZGVsLnRvSlNP Tig9CikpKTtyZXR1cm4gZmFsc2V9LF9kcmFnRW5kSGFuZGxlcjpmdW5jdGlvbihnKXt0aGlzLnRy aWdnZXIoImRyYWdlbmQiLHRoaXMpOz0KcmV0dXJuIGZhbHNlfSxyZW1vdmU6ZnVuY3Rpb24oaCl7 dmFyIGc9M0R0aGlzO3RoaXMuJGVsLmZhZGVPdXQoZy5meFNwZWVkLGZ1PQpuY3Rpb24oKXtnLiRl bC5yZW1vdmUoKTtnLm9mZigpO2lmKGgpe2goKX19KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIg Zz0zRCg9CnRoaXMubW9kZWwpPyh0aGlzLm1vZGVsKyIiKTooIihubyBtb2RlbCkiKTtyZXR1cm4i SERBQmFzZVZpZXcoIitnKyIpIn19KTt2YT0KciBhPTNEWyc8ZGl2IGNsYXNzPTNEImRhdGFzZXQg aGRhIj4nLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtd2FybmluZ3MiPicsIjwlPQogaWYoIGhkYS5l cnJvciApeyAlPiIsJzxkaXYgY2xhc3M9M0QiZXJyb3JtZXNzYWdlc21hbGwiPicsZCgiVGhlcmUg d2FzIGFuIGU9CnJyb3IgZ2V0dGluZyB0aGUgZGF0YSBmb3IgdGhpcyBkYXRhc2V0IiksIjo8JS0g aGRhLmVycm9yICU+IiwiPC9kaXY+IiwiPCUgfT0KICU+IiwiPCUgaWYoIGhkYS5kZWxldGVkICl7 ICU+IiwiPCUgaWYoIGhkYS5wdXJnZWQgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRhPQp0YXNldC1w dXJnZWQtbXNnIHdhcm5pbmdtZXNzYWdlc21hbGwiPjxzdHJvbmc+JyxkKCJUaGlzIGRhdGFzZXQg aGFzIGJlZW4gZGU9CmxldGVkIGFuZCByZW1vdmVkIGZyb20gZGlzay4iKSwiPC9zdHJvbmc+PC9k aXY+IiwiPCUgfSBlbHNlIHsgJT4iLCc8ZGl2IGNsYT0Kc3M9M0QiZGF0YXNldC1kZWxldGVkLW1z ZyB3YXJuaW5nbWVzc2FnZXNtYWxsIj48c3Ryb25nPicsZCgiVGhpcyBkYXRhc2V0IGhhPQpzIGJl ZW4gZGVsZXRlZC4iKSwiPC9zdHJvbmc+PC9kaXY+IiwiPCUgfSAlPiIsIjwlIH0gJT4iLCI8JSBp ZiggIWhkYS52aXNpYmw9CmUgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtaGlkZGVuLW1z ZyB3YXJuaW5nbWVzc2FnZXNtYWxsIj48c3Ryb25nPicsZD0KKCJUaGlzIGRhdGFzZXQgaGFzIGJl ZW4gaGlkZGVuLiIpLCI8L3N0cm9uZz48L2Rpdj4iLCI8JSB9ICU+IiwiPC9kaXY+IiwnPGRpPQp2 IGNsYXNzPTNEImRhdGFzZXQtc2VsZWN0b3IiPicsJzxzcGFuIGNsYXNzPTNEImZhIGZhLTJ4IGZh LXNxdWFyZS1vIj48L3NwYW49Cj4nLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtcHJp bWFyeS1hY3Rpb25zIj48L2Rpdj4nLCc8ZGl2IGNsYXNzPTNEIj0KZGF0YXNldC10aXRsZS1iYXIg Y2xlYXIiIHRhYmluZGV4PTNEIjAiPicsJzxzcGFuIGNsYXNzPTNEImRhdGFzZXQtc3RhdGUtaWNv PQpuIHN0YXRlLWljb24iPjwvc3Bhbj4nLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtdGl0bGUiPics JzxzcGFuIGNsYXNzPTNEImhkYS09CmhpZCI+PCUtIGhkYS5oaWQgJT48L3NwYW4+ICcsJzxzcGFu IGNsYXNzPTNEImRhdGFzZXQtbmFtZSI+PCUtIGhkYS5uYW1lICU+PD0KL3NwYW4+JywiPC9kaXY+ IiwiPC9kaXY+IiwnPGRpdiBjbGFzcz0zRCJkYXRhc2V0LWJvZHkiPjwvZGl2PicsIjwvZGl2PiJd LmpvPQppbigiIik7dmFyIGY9M0RbJzxkaXYgY2xhc3M9M0QiZGF0YXNldC1ib2R5Ij4nLCI8JSBp ZiggaGRhLmJvZHkgKXsgJT4iLCc8ZGk9CnYgY2xhc3M9M0QiZGF0YXNldC1zdW1tYXJ5Ij4nLCI8 JT0zRCBoZGEuYm9keSAlPiIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QiZD0KYXRhc2V0LWFjdGlv bnMgY2xlYXIiPicsJzxkaXYgY2xhc3M9M0QibGVmdCI+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJy aWdodCI+PQo8L2Rpdj4nLCI8L2Rpdj4iLCI8JSB9IGVsc2UgeyAlPiIsJzxkaXYgY2xhc3M9M0Qi ZGF0YXNldC1zdW1tYXJ5Ij4nLCI8JSBpZig9CiBoZGEubWlzY19ibHVyYiApeyAlPiIsJzxkaXYg Y2xhc3M9M0QiZGF0YXNldC1ibHVyYiI+JywnPHNwYW4gY2xhc3M9M0QidmFsdT0KZSI+PCUtIGhk YS5taXNjX2JsdXJiICU+PC9zcGFuPicsIjwvZGl2PiIsIjwlIH0gJT4iLCI8JSBpZiggaGRhLmRh dGFfdHlwZSApPQp7ICU+IiwnPGRpdiBjbGFzcz0zRCJkYXRhc2V0LWRhdGF0eXBlIj4nLCc8bGFi ZWwgY2xhc3M9M0QicHJvbXB0Ij4nLGQoImZvcm09CmF0IiksIjwvbGFiZWw+IiwnPHNwYW4gY2xh c3M9M0QidmFsdWUiPjwlLSBoZGEuZGF0YV90eXBlICU+PC9zcGFuPicsIjwvZGl2Pj0KIiwiPCUg fSAlPiIsIjwlIGlmKCBoZGEubWV0YWRhdGFfZGJrZXkgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRh dGFzZXQtZGJrZXkiPQo+JywnPGxhYmVsIGNsYXNzPTNEInByb21wdCI+JyxkKCJkYXRhYmFzZSIp LCI8L2xhYmVsPiIsJzxzcGFuIGNsYXNzPTNEInZhbHU9CmUiPicsIjwlLSBoZGEubWV0YWRhdGFf ZGJrZXkgJT4iLCI8L3NwYW4+IiwiPC9kaXY+IiwiPCUgfSAlPiIsIjwlIGlmKCBoZGEubT0KaXNj X2luZm8gKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRhdGFzZXQtaW5mbyI+JywnPHNwYW4gY2xhc3M9 M0QidmFsdWUiPjwlLSBoPQpkYS5taXNjX2luZm8gJT48L3NwYW4+JywiPC9kaXY+IiwiPCUgfSAl PiIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QiZGF0YXNldC09CmFjdGlvbnMgY2xlYXIiPicsJzxk aXYgY2xhc3M9M0QibGVmdCI+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJyaWdodCI+PC9kaXY+Jz0K LCI8L2Rpdj4iLCI8JSBpZiggIWhkYS5kZWxldGVkICl7ICU+IiwnPGRpdiBjbGFzcz0zRCJ0YWdz LWRpc3BsYXkiPjwvZGl2PicsPQonPGRpdiBjbGFzcz0zRCJhbm5vdGF0aW9uLWRpc3BsYXkiPjwv ZGl2PicsJzxkaXYgY2xhc3M9M0QiZGF0YXNldC1kaXNwbGF5LWE9CnBwbGljYXRpb25zIj4nLCI8 JSBfLmVhY2goIGhkYS5kaXNwbGF5X2FwcHMsIGZ1bmN0aW9uKCBhcHAgKXsgJT4iLCc8ZGl2IGNs YT0Kc3M9M0QiZGlzcGxheS1hcHBsaWNhdGlvbiI+JywnPHNwYW4gY2xhc3M9M0QiZGlzcGxheS1h cHBsaWNhdGlvbi1sb2NhdGlvbiI+PQo8JS0gYXBwLmxhYmVsICU+PC9zcGFuPiAnLCc8c3BhbiBj bGFzcz0zRCJkaXNwbGF5LWFwcGxpY2F0aW9uLWxpbmtzIj4nLCI8JSA9Cl8uZWFjaCggYXBwLmxp bmtzLCBmdW5jdGlvbiggbGluayApeyAlPiIsJzxhIHRhcmdldD0zRCI8JT0zRCBsaW5rLnRhcmdl dCAlPj0KIiBocmVmPTNEIjwlPTNEIGxpbmsuaHJlZiAlPiI+JywiPCUgcHJpbnQoIF9sKCBsaW5r LnRleHQgKSApOyAlPiIsIjwvYT4gIiwiPQo8JSB9KTsgJT4iLCI8L3NwYW4+IiwiPC9kaXY+Iiwi PCUgfSk7ICU+IiwiPCUgXy5lYWNoKCBoZGEuZGlzcGxheV90eXBlcywgZnU9Cm5jdGlvbiggYXBw ICl7ICU+IiwnPGRpdiBjbGFzcz0zRCJkaXNwbGF5LWFwcGxpY2F0aW9uIj4nLCc8c3BhbiBjbGFz cz0zRCJkaT0Kc3BsYXktYXBwbGljYXRpb24tbG9jYXRpb24iPjwlLSBhcHAubGFiZWwgJT48L3Nw YW4+ICcsJzxzcGFuIGNsYXNzPTNEImRpc3BsPQpheS1hcHBsaWNhdGlvbi1saW5rcyI+JywiPCUg Xy5lYWNoKCBhcHAubGlua3MsIGZ1bmN0aW9uKCBsaW5rICl7ICU+IiwnPGEgdGE9CnJnZXQ9M0Qi PCU9M0QgbGluay50YXJnZXQgJT4iIGhyZWY9M0QiPCU9M0QgbGluay5ocmVmICU+Ij4nLCI8JSBw cmludCggX2woID0KbGluay50ZXh0ICkgKTsgJT4iLCI8L2E+ICIsIjwlIH0pOyAlPiIsIjwvc3Bh bj4iLCI8L2Rpdj4iLCI8JSB9KTsgJT4iLCI8L2RpPQp2PiIsJzxkaXYgY2xhc3M9M0QiZGF0YXNl dC1wZWVrIj4nLCI8JSBpZiggaGRhLnBlZWsgKXsgJT4iLCc8cHJlIGNsYXNzPTNEInA9CmVlayI+ PCU9M0QgaGRhLnBlZWsgJT48L3ByZT4nLCI8JSB9ICU+IiwiPC9kaXY+IiwiPCUgfSAlPiIsIjwl IH0gJT4iLCI8L2Rpdj0KPiJdLmpvaW4oIiIpO2MudGVtcGxhdGVzPTNEe3NrZWxldG9uOmZ1bmN0 aW9uKGcpe3JldHVybiBfLnRlbXBsYXRlKGEsZyx7dmFyPQppYWJsZToiaGRhIn0pfSxib2R5OmZ1 bmN0aW9uKGcpe3JldHVybiBfLnRlbXBsYXRlKGYsZyx7dmFyaWFibGU6ImhkYSJ9KX19O3I9CmV0 dXJue0hEQUJhc2VWaWV3OmN9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAt ciA4MzQ2ZWM0YmFhMzk5MmY0ZGMwMTYxZjBmYzc5YTBiYTg5M2MwYTYzIC1yIGRjYzBjMTkxNDdl YWQ4NmM2ZTM1N2M3PQozOWUwNTEzYWRkZmUwMmNiMiBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZj L2RhdGFzZXQvaGRhLWVkaXQuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9kYXRh c2V0L2hkYS1lZGl0LmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvZGF0YXNldC9o ZGEtZWRpdC5qcwpAQCAtMSwxICsxLDEgQEAKLWRlZmluZShbIm12Yy9kYXRhc2V0L2hkYS1tb2Rl bCIsIm12Yy9kYXRhc2V0L2hkYS1iYXNlIiwibXZjL3RhZ3MiLCJtdmMvYW5uPQpvdGF0aW9ucyJd LGZ1bmN0aW9uKGYsYixhLGUpe3ZhciBnPTNEYi5IREFCYXNlVmlldy5leHRlbmQoe2luaXRpYWxp emU6ZnVuY3Q9CmlvbihoKXtiLkhEQUJhc2VWaWV3LnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwo dGhpcyxoKTt0aGlzLmhhc1VzZXI9M0RoLmhhcz0KVXNlcjt0aGlzLmRlZmF1bHRQcmltYXJ5QWN0 aW9uQnV0dG9uUmVuZGVyZXJzPTNEW3RoaXMuX3JlbmRlcl9zaG93UGFyYW1zQnV0PQp0b24sdGhp cy5fcmVuZGVyX3JlcnVuQnV0dG9uXTt0aGlzLnRhZ3NFZGl0b3JTaG93bj0zRGgudGFnc0VkaXRv clNob3dufHxmYWw9CnNlO3RoaXMuYW5ub3RhdGlvbkVkaXRvclNob3duPTNEaC5hbm5vdGF0aW9u RWRpdG9yU2hvd258fGZhbHNlfSxfcmVuZGVyX3RpdD0KbGVCdXR0b25zOmZ1bmN0aW9uKCl7cmV0 dXJuIGIuSERBQmFzZVZpZXcucHJvdG90eXBlLl9yZW5kZXJfdGl0bGVCdXR0b25zLmNhPQpsbCh0 aGlzKS5jb25jYXQoW3RoaXMuX3JlbmRlcl9lZGl0QnV0dG9uKCksdGhpcy5fcmVuZGVyX2RlbGV0 ZUJ1dHRvbigpXSl9LF89CnJlbmRlcl9lZGl0QnV0dG9uOmZ1bmN0aW9uKCl7aWYoKHRoaXMubW9k ZWwuZ2V0KCJzdGF0ZSIpPTNEPTNEPTNEZi5IaXN0b3J5RD0KYXRhc2V0QXNzb2NpYXRpb24uU1RB VEVTLkRJU0NBUkRFRCl8fCh0aGlzLm1vZGVsLmdldCgic3RhdGUiKT0zRD0zRD0zRGYuSGlzPQp0 b3J5RGF0YXNldEFzc29jaWF0aW9uLlNUQVRFUy5OT1RfVklFV0FCTEUpfHwoIXRoaXMubW9kZWwu Z2V0KCJhY2Nlc3NpYmxlIik9Cikpe3JldHVybiBudWxsfXZhciBqPTNEdGhpcy5tb2RlbC5nZXQo InB1cmdlZCIpLGg9M0R0aGlzLm1vZGVsLmdldCgiZGVsZXRlZD0KIiksaT0zRHt0aXRsZTpfbCgi RWRpdCBhdHRyaWJ1dGVzIiksaHJlZjp0aGlzLnVybHMuZWRpdCx0YXJnZXQ6dGhpcy5saW5rVGFy PQpnZXQsY2xhc3NlczoiZGF0YXNldC1lZGl0In07aWYoaHx8ail7aS5kaXNhYmxlZD0zRHRydWU7 aWYoail7aS50aXRsZT0zRF9sKCI9CkNhbm5vdCBlZGl0IGF0dHJpYnV0ZXMgb2YgZGF0YXNldHMg cmVtb3ZlZCBmcm9tIGRpc2siKX1lbHNle2lmKGgpe2kudGl0bGU9Cj0zRF9sKCJVbmRlbGV0ZSBk YXRhc2V0IHRvIGVkaXQgYXR0cmlidXRlcyIpfX19ZWxzZXtpZih0aGlzLm1vZGVsLmdldCgic3Rh dD0KZSIpPTNEPTNEPTNEZi5IaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uLlNUQVRFUy5VUExPQUQp e2kuZGlzYWJsZWQ9M0R0cnVlO2kuPQp0aXRsZT0zRF9sKCJUaGlzIGRhdGFzZXQgbXVzdCBmaW5p c2ggdXBsb2FkaW5nIGJlZm9yZSBpdCBjYW4gYmUgZWRpdGVkIil9ZWw9CnNle2lmKHRoaXMubW9k ZWwuZ2V0KCJzdGF0ZSIpPTNEPTNEPTNEZi5IaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uLlNUQVRF Uy5ORT0KVyl7aS5kaXNhYmxlZD0zRHRydWU7aS50aXRsZT0zRF9sKCJUaGlzIGRhdGFzZXQgaXMg bm90IHlldCBlZGl0YWJsZSIpfX19aS5mPQphSWNvbj0zRCJmYS1wZW5jaWwiO3JldHVybiBmYUlj b25CdXR0b24oaSl9LF9yZW5kZXJfZGVsZXRlQnV0dG9uOmZ1bmN0aW9uKCk9CntpZigodGhpcy5t b2RlbC5nZXQoInN0YXRlIik9M0Q9M0Q9M0RmLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24uU1RB VEVTLk5PVD0KX1ZJRVdBQkxFKXx8KCF0aGlzLm1vZGVsLmdldCgiYWNjZXNzaWJsZSIpKSl7cmV0 dXJuIG51bGx9dmFyIGg9M0R0aGlzLGk9M0R7PQp0aXRsZTpfbCgiRGVsZXRlIiksY2xhc3Nlczoi ZGF0YXNldC1kZWxldGUiLG9uY2xpY2s6ZnVuY3Rpb24oKXtoLiRlbC5maW5kKCI9Ci5pY29uLWJ0 bi5kYXRhc2V0LWRlbGV0ZSIpLnRyaWdnZXIoIm1vdXNlb3V0Iik7aC5tb2RlbFsiZGVsZXRlIl0o KX19O2lmKHRoaT0Kcy5tb2RlbC5nZXQoImRlbGV0ZWQiKXx8dGhpcy5tb2RlbC5nZXQoInB1cmdl ZCIpKXtpPTNEe3RpdGxlOl9sKCJEYXRhc2V0IGlzPQogYWxyZWFkeSBkZWxldGVkIiksZGlzYWJs ZWQ6dHJ1ZX19aS5mYUljb249M0QiZmEtdGltZXMiO3JldHVybiBmYUljb25CdXR0b249CihpKX0s X3JlbmRlcl9lcnJCdXR0b246ZnVuY3Rpb24oKXtpZih0aGlzLm1vZGVsLmdldCgic3RhdGUiKSE9 M0Q9M0RmLkhpc3Rvcj0KeURhdGFzZXRBc3NvY2lhdGlvbi5TVEFURVMuRVJST1Ipe3JldHVybiBu dWxsfXJldHVybiBmYUljb25CdXR0b24oe3RpdGxlOl9sPQooIlZpZXcgb3IgcmVwb3J0IHRoaXMg ZXJyb3IiKSxocmVmOnRoaXMudXJscy5yZXBvcnRfZXJyb3IsY2xhc3NlczoiZGF0YXNldC09CnJl cG9ydC1lcnJvci1idG4iLHRhcmdldDp0aGlzLmxpbmtUYXJnZXQsZmFJY29uOiJmYS1idWcifSl9 LF9yZW5kZXJfcmVydW5CdT0KdHRvbjpmdW5jdGlvbigpe3JldHVybiBmYUljb25CdXR0b24oe3Rp dGxlOl9sKCJSdW4gdGhpcyBqb2IgYWdhaW4iKSxocmVmOnRoPQppcy51cmxzLnJlcnVuLGNsYXNz ZXM6ImRhdGFzZXQtcmVydW4tYnRuIix0YXJnZXQ6dGhpcy5saW5rVGFyZ2V0LGZhSWNvbjoiZmE9 Ci1yZWZyZXNoIn0pfSxfcmVuZGVyX3Zpc3VhbGl6YXRpb25zQnV0dG9uOmZ1bmN0aW9uKCl7dmFy IGg9M0R0aGlzLm1vZGVsLmdldD0KKCJ2aXN1YWxpemF0aW9ucyIpO2lmKCghdGhpcy5oYXNVc2Vy KXx8KCF0aGlzLm1vZGVsLmhhc0RhdGEoKSl8fChfLmlzRW1wdHkoPQpoKSkpe3JldHVybiBudWxs fWlmKF8uaXNPYmplY3QoaFswXSkpe3JldHVybiB0aGlzLl9yZW5kZXJfdmlzdWFsaXphdGlvbnNG cmE9Cm1ld29ya0J1dHRvbihoKX1pZighdGhpcy51cmxzLnZpc3VhbGl6YXRpb24pe3JldHVybiBu dWxsfXZhciBqPTNEdGhpcy5tb2RlbD0KLmdldCgiZGJrZXkiKSxuPTNEdGhpcy51cmxzLnZpc3Vh bGl6YXRpb24saz0zRHt9LG89M0R7ZGF0YXNldF9pZDp0aGlzLm1vZGVsPQouZ2V0KCJpZCIpLGhk YV9sZGRhOiJoZGEifTtpZihqKXtvLmRia2V5PTNEan12YXIgaT0zRGZhSWNvbkJ1dHRvbih7dGl0 bGU6X2w9CigiVmlzdWFsaXplIiksY2xhc3NlczoiZGF0YXNldC12aXN1YWxpemUtYnRuIixmYUlj b246ImZhLWJhci1jaGFydC1vIn0pO2Z1bj0KY3Rpb24gbChwKXtpZihwPTNEPTNEPTNEInRyYWNr c3RlciIpe3JldHVybiBjKG4sbyxqKX1yZXR1cm4gZnVuY3Rpb24oKXtHYWxhPQp4eS5mcmFtZS5h ZGQoe3RpdGxlOiJWaXN1YWxpemF0aW9uIix0eXBlOiJ1cmwiLGNvbnRlbnQ6bisiLyIrcCsiPyIr JC5wYXJhbSg9Cm8pfSl9fWZ1bmN0aW9uIG0ocCl7cmV0dXJuIHAuY2hhckF0KDApLnRvVXBwZXJD YXNlKCkrcC5zbGljZSgxKX1pZihoLmxlbmd0aD0KPTNEPTNEPTNEMSl7aS5hdHRyKCJkYXRhLW9y aWdpbmFsLXRpdGxlIixfbCgiVmlzdWFsaXplIGluICIpK19sKG0oaFswXSkpKTtpPQouY2xpY2so bChoWzBdKSl9ZWxzZXtfLmVhY2goaCxmdW5jdGlvbihwKXtrW19sKG0ocCkpXT0zRGwocCl9KTtt YWtlX3BvcHVwbWU9Cm51KGksayl9cmV0dXJuIGl9LF9yZW5kZXJfdmlzdWFsaXphdGlvbnNGcmFt ZXdvcmtCdXR0b246ZnVuY3Rpb24oaCl7aWYoISh0aD0KaXMubW9kZWwuaGFzRGF0YSgpKXx8ISho JiYhXy5pc0VtcHR5KGgpKSl7cmV0dXJuIG51bGx9dmFyIGo9M0RmYUljb25CdXR0b24oPQp7dGl0 bGU6X2woIlZpc3VhbGl6ZSIpLGNsYXNzZXM6ImRhdGFzZXQtdmlzdWFsaXplLWJ0biIsZmFJY29u OiJmYS1iYXItY2hhcnQ9Ci1vIn0pO2lmKGgubGVuZ3RoPTNEPTNEPTNEMSl7dmFyIGk9M0RoWzBd O2ouYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsX2woIj0KVmlzdWFsaXplIGluICIpK2kuaHRt bCk7ai5hdHRyKCJocmVmIixpLmhyZWYpfWVsc2V7dmFyIGs9M0RbXTtfLmVhY2goaCxmdW5jPQp0 aW9uKGwpe2wuZnVuYz0zRGZ1bmN0aW9uKG0pe2lmKEdhbGF4eS5mcmFtZSYmR2FsYXh5LmZyYW1l LmFjdGl2ZSl7R2FsYXh5LmY9CnJhbWUuYWRkKHt0aXRsZToiVmlzdWFsaXphdGlvbiIsdHlwZToi dXJsIixjb250ZW50OmwuaHJlZn0pO20ucHJldmVudERlZmF1bD0KdCgpO3JldHVybiBmYWxzZX1y ZXR1cm4gdHJ1ZX07ay5wdXNoKGwpO3JldHVybiBmYWxzZX0pO1BvcHVwTWVudS5jcmVhdGUoaixr PQopfXJldHVybiBqfSxfYnVpbGROZXdSZW5kZXI6ZnVuY3Rpb24oKXt2YXIgaD0zRGIuSERBQmFz ZVZpZXcucHJvdG90eXBlLl9idWk9CmxkTmV3UmVuZGVyLmNhbGwodGhpcyk7aC5maW5kKCIuZGF0 YXNldC1kZWxldGVkLW1zZyIpLmFwcGVuZChfbCgnIENsaWNrIDxhID0KaHJlZj0zRCJqYXZhc2Ny aXB0OnZvaWQoMCk7IiBjbGFzcz0zRCJkYXRhc2V0LXVuZGVsZXRlIj5oZXJlPC9hPiB0byB1bmRl bGV0PQplIGl0IG9yIDxhIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyIgY2xhc3M9M0QiZGF0 YXNldC1wdXJnZSI+aGVyZTwvYT4gdG89CiBpbW1lZGlhdGVseSByZW1vdmUgaXQgZnJvbSBkaXNr JykpO2guZmluZCgiLmRhdGFzZXQtaGlkZGVuLW1zZyIpLmFwcGVuZChfbD0KKCcgQ2xpY2sgPGEg aHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0zRCJkYXRhc2V0LXVuaGlkZSI+aGVy ZTwvYT4gPQp0byB1bmhpZGUgaXQnKSk7cmV0dXJuIGh9LF9yZW5kZXJfYm9keV9mYWlsZWRfbWV0 YWRhdGE6ZnVuY3Rpb24oKXt2YXIgaT0zRCQ9CigiPGEvPiIpLmF0dHIoe2hyZWY6dGhpcy51cmxz LmVkaXQsdGFyZ2V0OnRoaXMubGlua1RhcmdldH0pLnRleHQoX2woInNldCBpdD0KIG1hbnVhbGx5 IG9yIHJldHJ5IGF1dG8tZGV0ZWN0aW9uIikpLGg9M0QkKCI8c3Bhbi8+IikudGV4dCgiLiAiK19s KCJZb3UgbWF5PQogYmUgYWJsZSB0byIpKyIgIikuYXBwZW5kKGkpLGo9M0RiLkhEQUJhc2VWaWV3 LnByb3RvdHlwZS5fcmVuZGVyX2JvZHlfZmFpbGU9CmRfbWV0YWRhdGEuY2FsbCh0aGlzKTtqLmZp bmQoIi53YXJuaW5nbWVzc2FnZXNtYWxsIHN0cm9uZyIpLmFwcGVuZChoKTtyZXR1cj0KbiBqfSxf cmVuZGVyX2JvZHlfZXJyb3I6ZnVuY3Rpb24oKXt2YXIgaD0zRGIuSERBQmFzZVZpZXcucHJvdG90 eXBlLl9yZW5kZXJfPQpib2R5X2Vycm9yLmNhbGwodGhpcyk7aC5maW5kKCIuZGF0YXNldC1hY3Rp b25zIC5sZWZ0IikucHJlcGVuZCh0aGlzLl9yZW5kZXI9Cl9lcnJCdXR0b24oKSk7cmV0dXJuIGh9 LF9yZW5kZXJfYm9keV9vazpmdW5jdGlvbigpe3ZhciBoPTNEYi5IREFCYXNlVmlldy5wcj0Kb3Rv dHlwZS5fcmVuZGVyX2JvZHlfb2suY2FsbCh0aGlzKTtpZih0aGlzLm1vZGVsLmlzRGVsZXRlZE9y UHVyZ2VkKCkpe3JldHVyPQpuIGh9dGhpcy5tYWtlRGJrZXlFZGl0TGluayhoKTtpZih0aGlzLmhh c1VzZXIpe2guZmluZCgiLmRhdGFzZXQtYWN0aW9ucyAubGU9CmZ0IikuYXBwZW5kKHRoaXMuX3Jl bmRlcl92aXN1YWxpemF0aW9uc0J1dHRvbigpKTt0aGlzLl9yZW5kZXJUYWdzKGgpO3RoaXMuXz0K cmVuZGVyQW5ub3RhdGlvbihoKX1yZXR1cm4gaH0sX3JlbmRlclRhZ3M6ZnVuY3Rpb24oaCl7dmFy IGk9M0R0aGlzO3RoaXMudGFnPQpzRWRpdG9yPTNEbmV3IGEuVGFnc0VkaXRvcih7bW9kZWw6dGhp cy5tb2RlbCxlbDpoLmZpbmQoIi50YWdzLWRpc3BsYXkiKSxvbnM9Cmhvd0ZpcnN0VGltZTpmdW5j dGlvbigpe3RoaXMucmVuZGVyKCl9LG9uc2hvdzpmdW5jdGlvbigpe2kudGFnc0VkaXRvclNob3du PQo9M0R0cnVlfSxvbmhpZGU6ZnVuY3Rpb24oKXtpLnRhZ3NFZGl0b3JTaG93bj0zRGZhbHNlfSwk YWN0aXZhdG9yOmZhSWNvbkJ1dHQ9Cm9uKHt0aXRsZTpfbCgiRWRpdCBkYXRhc2V0IHRhZ3MiKSxj bGFzc2VzOiJkYXRhc2V0LXRhZy1idG4iLGZhSWNvbjoiZmEtdGFncz0KIn0pLmFwcGVuZFRvKGgu ZmluZCgiLmRhdGFzZXQtYWN0aW9ucyAucmlnaHQiKSl9KTtpZih0aGlzLnRhZ3NFZGl0b3JTaG93 bil7PQp0aGlzLnRhZ3NFZGl0b3IudG9nZ2xlKHRydWUpfX0sX3JlbmRlckFubm90YXRpb246ZnVu Y3Rpb24oaCl7dmFyIGk9M0R0aGlzO3Q9Cmhpcy5hbm5vdGF0aW9uRWRpdG9yPTNEbmV3IGUuQW5u b3RhdGlvbkVkaXRvcih7bW9kZWw6dGhpcy5tb2RlbCxlbDpoLmZpbmQoIj0KLmFubm90YXRpb24t ZGlzcGxheSIpLG9uc2hvd0ZpcnN0VGltZTpmdW5jdGlvbigpe3RoaXMucmVuZGVyKCl9LG9uc2hv dzpmdW5jPQp0aW9uKCl7aS5hbm5vdGF0aW9uRWRpdG9yU2hvd249M0R0cnVlfSxvbmhpZGU6ZnVu Y3Rpb24oKXtpLmFubm90YXRpb25FZGl0b3I9ClNob3duPTNEZmFsc2V9LCRhY3RpdmF0b3I6ZmFJ Y29uQnV0dG9uKHt0aXRsZTpfbCgiRWRpdCBkYXRhc2V0IGFubm90YXRpb24iKT0KLGNsYXNzZXM6 ImRhdGFzZXQtYW5ub3RhdGUtYnRuIixmYUljb246ImZhLWNvbW1lbnQifSkuYXBwZW5kVG8oaC5m aW5kKCIuZGF0PQphc2V0LWFjdGlvbnMgLnJpZ2h0IikpfSk7aWYodGhpcy5hbm5vdGF0aW9uRWRp dG9yU2hvd24pe3RoaXMuYW5ub3RhdGlvbkVkaXQ9Cm9yLnRvZ2dsZSh0cnVlKX19LG1ha2VEYmtl eUVkaXRMaW5rOmZ1bmN0aW9uKGkpe2lmKHRoaXMubW9kZWwuZ2V0KCJtZXRhZGF0YT0KX2Ria2V5 Iik9M0Q9M0Q9M0QiPyImJiF0aGlzLm1vZGVsLmlzRGVsZXRlZE9yUHVyZ2VkKCkpe3ZhciBoPTNE JCgnPGEgY2xhc3M9Cj0zRCJ2YWx1ZSI+PzwvYT4nKS5hdHRyKCJocmVmIix0aGlzLnVybHMuZWRp dCkuYXR0cigidGFyZ2V0Iix0aGlzLmxpbmtUYXJnZT0KdCk7aS5maW5kKCIuZGF0YXNldC1kYmtl eSAudmFsdWUiKS5yZXBsYWNlV2l0aChoKX19LGV2ZW50czpfLmV4dGVuZChfLmNsb25lPQooYi5I REFCYXNlVmlldy5wcm90b3R5cGUuZXZlbnRzKSx7ImNsaWNrIC5kYXRhc2V0LXVuZGVsZXRlIjpm dW5jdGlvbihoKXt0aGk9CnMubW9kZWwudW5kZWxldGUoKTtyZXR1cm4gZmFsc2V9LCJjbGljayAu ZGF0YXNldC11bmhpZGUiOmZ1bmN0aW9uKGgpe3RoaXMubT0Kb2RlbC51bmhpZGUoKTtyZXR1cm4g ZmFsc2V9LCJjbGljayAuZGF0YXNldC1wdXJnZSI6ImNvbmZpcm1QdXJnZSJ9KSxjb25maXJtPQpQ dXJnZTpmdW5jdGlvbiBkKGgpe3RoaXMubW9kZWwucHVyZ2UoKTtyZXR1cm4gZmFsc2V9LHRvU3Ry aW5nOmZ1bmN0aW9uKCl7dmE9CnIgaD0zRCh0aGlzLm1vZGVsKT8odGhpcy5tb2RlbCsiIik6KCIo bm8gbW9kZWwpIik7cmV0dXJuIkhEQVZpZXcoIitoKyIpIn19KT0KO2Z1bmN0aW9uIGMoaCxqLGkp e3JldHVybiBmdW5jdGlvbigpe3ZhciBrPTNEe307aWYoaSl7a1siZi1kYmtleSJdPTNEaX0kLmFq PQpheCh7dXJsOmgrIi9saXN0X3RyYWNrcz8iKyQucGFyYW0oayksZGF0YVR5cGU6Imh0bWwiLGVy cm9yOmZ1bmN0aW9uKCl7YWxlcnQ9CigoIkNvdWxkIG5vdCBhZGQgdGhpcyBkYXRhc2V0IHRvIGJy b3dzZXIiKSsiLiIpfSxzdWNjZXNzOmZ1bmN0aW9uKGwpe3ZhciBtPQo9M0R3aW5kb3cucGFyZW50 O20uR2FsYXh5Lm1vZGFsLnNob3coe3RpdGxlOiJWaWV3IERhdGEgaW4gYSBOZXcgb3IgU2F2ZWQg Vmk9CnN1YWxpemF0aW9uIixidXR0b25zOntDYW5jZWw6ZnVuY3Rpb24oKXttLkdhbGF4eS5tb2Rh bC5oaWRlKCl9LCJWaWV3IGluIHNhdj0KZWQgdmlzdWFsaXphdGlvbiI6ZnVuY3Rpb24oKXttLkdh bGF4eS5tb2RhbC5zaG93KHt0aXRsZToiQWRkIERhdGEgdG8gU2F2ZWQgPQpWaXN1YWxpemF0aW9u Iixib2R5OmwsYnV0dG9uczp7Q2FuY2VsOmZ1bmN0aW9uKCl7bS5HYWxheHkubW9kYWwuaGlkZSgp fSwiQWQ9CmQgdG8gdmlzdWFsaXphdGlvbiI6ZnVuY3Rpb24oKXskKG0uZG9jdW1lbnQpLmZpbmQo ImlucHV0W25hbWU9M0RpZF06Y2hlY2tlZD0KIikuZWFjaChmdW5jdGlvbigpe20uR2FsYXh5Lm1v ZGFsLmhpZGUoKTt2YXIgbj0zRCQodGhpcykudmFsKCk7ai5pZD0zRG47bS5HPQphbGF4eS5mcmFt ZS5hZGQoe3RpdGxlOiJUcmFja3N0ZXIiLHR5cGU6InVybCIsY29udGVudDpoKyIvdHJhY2tzdGVy PyIrJC5wYXI9CmFtKGopfSl9KX19fSl9LCJWaWV3IGluIG5ldyB2aXN1YWxpemF0aW9uIjpmdW5j dGlvbigpe20uR2FsYXh5Lm1vZGFsLmhpZGUoKT0KO3ZhciBuPTNEaCsiL3RyYWNrc3Rlcj8iKyQu cGFyYW0oaik7bS5HYWxheHkuZnJhbWUuYWRkKHt0aXRsZToiVHJhY2tzdGVyIix0PQp5cGU6InVy bCIsY29udGVudDpufSl9fX0pfX0pO3JldHVybiBmYWxzZX19cmV0dXJue0hEQUVkaXRWaWV3Omd9 fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFsibXZjL2RhdGFzZXQvaGRh LW1vZGVsIiwibXZjL2RhdGFzZXQvaGRhLWJhc2UiLCJtdmMvdGFncyIsIm12Yy9hbm49Cm90YXRp b25zIiwidXRpbHMvbG9jYWxpemF0aW9uIl0sZnVuY3Rpb24oZyxiLGEsZSxmKXt2YXIgaD0zRGIu SERBQmFzZVZpZXcuZT0KeHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oaSl7Yi5IREFCYXNlVmll dy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsPQppKTt0aGlzLmhhc1VzZXI9M0RpLmhh c1VzZXI7dGhpcy5kZWZhdWx0UHJpbWFyeUFjdGlvbkJ1dHRvblJlbmRlcmVycz0zRFt0aGk9CnMu X3JlbmRlcl9zaG93UGFyYW1zQnV0dG9uLHRoaXMuX3JlbmRlcl9yZXJ1bkJ1dHRvbl07dGhpcy50 YWdzRWRpdG9yU2hvd249Cj0zRGkudGFnc0VkaXRvclNob3dufHxmYWxzZTt0aGlzLmFubm90YXRp b25FZGl0b3JTaG93bj0zRGkuYW5ub3RhdGlvbkVkaXRvcj0KU2hvd258fGZhbHNlfSxfcmVuZGVy X3RpdGxlQnV0dG9uczpmdW5jdGlvbigpe3JldHVybiBiLkhEQUJhc2VWaWV3LnByb3RvdHlwPQpl Ll9yZW5kZXJfdGl0bGVCdXR0b25zLmNhbGwodGhpcykuY29uY2F0KFt0aGlzLl9yZW5kZXJfZWRp dEJ1dHRvbigpLHRoaXMuX3I9CmVuZGVyX2RlbGV0ZUJ1dHRvbigpXSl9LF9yZW5kZXJfZWRpdEJ1 dHRvbjpmdW5jdGlvbigpe2lmKCh0aGlzLm1vZGVsLmdldCgicz0KdGF0ZSIpPTNEPTNEPTNEZy5I aXN0b3J5RGF0YXNldEFzc29jaWF0aW9uLlNUQVRFUy5ESVNDQVJERUQpfHwodGhpcy5tb2RlbC5n PQpldCgic3RhdGUiKT0zRD0zRD0zRGcuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbi5TVEFURVMu Tk9UX1ZJRVdBQkxFKXx8KCF0aGk9CnMubW9kZWwuZ2V0KCJhY2Nlc3NpYmxlIikpKXtyZXR1cm4g bnVsbH12YXIgaz0zRHRoaXMubW9kZWwuZ2V0KCJwdXJnZWQiKSxpPQo9M0R0aGlzLm1vZGVsLmdl dCgiZGVsZXRlZCIpLGo9M0R7dGl0bGU6ZigiRWRpdCBhdHRyaWJ1dGVzIiksaHJlZjp0aGlzLnVy bHM9Ci5lZGl0LHRhcmdldDp0aGlzLmxpbmtUYXJnZXQsY2xhc3NlczoiZGF0YXNldC1lZGl0In07 aWYoaXx8ayl7ai5kaXNhYmxlZD0zRD0KdHJ1ZTtpZihrKXtqLnRpdGxlPTNEZigiQ2Fubm90IGVk aXQgYXR0cmlidXRlcyBvZiBkYXRhc2V0cyByZW1vdmVkIGZyb20gZGlzPQprIil9ZWxzZXtpZihp KXtqLnRpdGxlPTNEZigiVW5kZWxldGUgZGF0YXNldCB0byBlZGl0IGF0dHJpYnV0ZXMiKX19fWVs c2V7aWY9Cih0aGlzLm1vZGVsLmdldCgic3RhdGUiKT0zRD0zRD0zRGcuSGlzdG9yeURhdGFzZXRB c3NvY2lhdGlvbi5TVEFURVMuVVBMT0FEKT0Ke2ouZGlzYWJsZWQ9M0R0cnVlO2oudGl0bGU9M0Rm KCJUaGlzIGRhdGFzZXQgbXVzdCBmaW5pc2ggdXBsb2FkaW5nIGJlZm9yZSBpPQp0IGNhbiBiZSBl ZGl0ZWQiKX1lbHNle2lmKHRoaXMubW9kZWwuZ2V0KCJzdGF0ZSIpPTNEPTNEPTNEZy5IaXN0b3J5 RGF0YXNldEE9CnNzb2NpYXRpb24uU1RBVEVTLk5FVyl7ai5kaXNhYmxlZD0zRHRydWU7ai50aXRs ZT0zRGYoIlRoaXMgZGF0YXNldCBpcyBub3QgeT0KZXQgZWRpdGFibGUiKX19fWouZmFJY29uPTNE ImZhLXBlbmNpbCI7cmV0dXJuIGZhSWNvbkJ1dHRvbihqKX0sX3JlbmRlcl9kZWxlPQp0ZUJ1dHRv bjpmdW5jdGlvbigpe2lmKCh0aGlzLm1vZGVsLmdldCgic3RhdGUiKT0zRD0zRD0zRGcuSGlzdG9y eURhdGFzZXRBc3M9Cm9jaWF0aW9uLlNUQVRFUy5OT1RfVklFV0FCTEUpfHwoIXRoaXMubW9kZWwu Z2V0KCJhY2Nlc3NpYmxlIikpKXtyZXR1cm4gbnVsbD0KfXZhciBpPTNEdGhpcyxqPTNEe3RpdGxl OmYoIkRlbGV0ZSIpLGNsYXNzZXM6ImRhdGFzZXQtZGVsZXRlIixvbmNsaWNrOmZ1bmN0PQppb24o KXtpLiRlbC5maW5kKCIuaWNvbi1idG4uZGF0YXNldC1kZWxldGUiKS50cmlnZ2VyKCJtb3VzZW91 dCIpO2kubW9kZWxbImQ9CmVsZXRlIl0oKX19O2lmKHRoaXMubW9kZWwuZ2V0KCJkZWxldGVkIil8 fHRoaXMubW9kZWwuZ2V0KCJwdXJnZWQiKSl7aj0zRHt0aT0KdGxlOmYoIkRhdGFzZXQgaXMgYWxy ZWFkeSBkZWxldGVkIiksZGlzYWJsZWQ6dHJ1ZX19ai5mYUljb249M0QiZmEtdGltZXMiO3JlPQp0 dXJuIGZhSWNvbkJ1dHRvbihqKX0sX3JlbmRlcl9lcnJCdXR0b246ZnVuY3Rpb24oKXtpZih0aGlz Lm1vZGVsLmdldCgic3RhdGU9CiIpIT0zRD0zRGcuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbi5T VEFURVMuRVJST1Ipe3JldHVybiBudWxsfXJldHVybiBmYUljbz0KbkJ1dHRvbih7dGl0bGU6Zigi VmlldyBvciByZXBvcnQgdGhpcyBlcnJvciIpLGhyZWY6dGhpcy51cmxzLnJlcG9ydF9lcnJvcixj PQpsYXNzZXM6ImRhdGFzZXQtcmVwb3J0LWVycm9yLWJ0biIsdGFyZ2V0OnRoaXMubGlua1Rhcmdl dCxmYUljb246ImZhLWJ1ZyJ9KX09CixfcmVuZGVyX3JlcnVuQnV0dG9uOmZ1bmN0aW9uKCl7cmV0 dXJuIGZhSWNvbkJ1dHRvbih7dGl0bGU6ZigiUnVuIHRoaXMgam9iID0KYWdhaW4iKSxocmVmOnRo aXMudXJscy5yZXJ1bixjbGFzc2VzOiJkYXRhc2V0LXJlcnVuLWJ0biIsdGFyZ2V0OnRoaXMubGlu a1RhPQpyZ2V0LGZhSWNvbjoiZmEtcmVmcmVzaCJ9KX0sX3JlbmRlcl92aXN1YWxpemF0aW9uc0J1 dHRvbjpmdW5jdGlvbigpe3ZhciBpPQo9M0R0aGlzLm1vZGVsLmdldCgidmlzdWFsaXphdGlvbnMi KTtpZigoIXRoaXMuaGFzVXNlcil8fCghdGhpcy5tb2RlbC5oYXNEYXQ9CmEoKSl8fChfLmlzRW1w dHkoaSkpKXtyZXR1cm4gbnVsbH1pZihfLmlzT2JqZWN0KGlbMF0pKXtyZXR1cm4gdGhpcy5fcmVu ZGVyXz0KdmlzdWFsaXphdGlvbnNGcmFtZXdvcmtCdXR0b24oaSl9aWYoIXRoaXMudXJscy52aXN1 YWxpemF0aW9uKXtyZXR1cm4gbnVsbH12PQphciBrPTNEdGhpcy5tb2RlbC5nZXQoImRia2V5Iiks bz0zRHRoaXMudXJscy52aXN1YWxpemF0aW9uLGw9M0R7fSxwPTNEe2RhdGE9CnNldF9pZDp0aGlz Lm1vZGVsLmdldCgiaWQiKSxoZGFfbGRkYToiaGRhIn07aWYoayl7cC5kYmtleT0zRGt9dmFyIGo9 M0RmYUljbz0KbkJ1dHRvbih7dGl0bGU6ZigiVmlzdWFsaXplIiksY2xhc3NlczoiZGF0YXNldC12 aXN1YWxpemUtYnRuIixmYUljb246ImZhLWJhPQpyLWNoYXJ0LW8ifSk7ZnVuY3Rpb24gbShxKXtp ZihxPTNEPTNEPTNEInRyYWNrc3RlciIpe3JldHVybiBjKG8scCxrKX1yZXR1cm49CiBmdW5jdGlv bigpe0dhbGF4eS5mcmFtZS5hZGQoe3RpdGxlOiJWaXN1YWxpemF0aW9uIix0eXBlOiJ1cmwiLGNv bnRlbnQ6bysiLz0KIitxKyI/IiskLnBhcmFtKHApfSl9fWZ1bmN0aW9uIG4ocSl7cmV0dXJuIHEu Y2hhckF0KDApLnRvVXBwZXJDYXNlKCkrcS5zbGljPQplKDEpfWlmKGkubGVuZ3RoPTNEPTNEPTNE MSl7ai5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIixmKCJWaXN1YWxpemUgaW4gIik9CitmKG4o aVswXSkpKTtqLmNsaWNrKG0oaVswXSkpfWVsc2V7Xy5lYWNoKGksZnVuY3Rpb24ocSl7bFtmKG4o cSkpXT0zRG0ocSl9KT0KO21ha2VfcG9wdXBtZW51KGosbCl9cmV0dXJuIGp9LF9yZW5kZXJfdmlz dWFsaXphdGlvbnNGcmFtZXdvcmtCdXR0b246ZnVuY3RpPQpvbihpKXtpZighKHRoaXMubW9kZWwu aGFzRGF0YSgpKXx8IShpJiYhXy5pc0VtcHR5KGkpKSl7cmV0dXJuIG51bGx9dmFyIGs9M0Q9CmZh SWNvbkJ1dHRvbih7dGl0bGU6ZigiVmlzdWFsaXplIiksY2xhc3NlczoiZGF0YXNldC12aXN1YWxp emUtYnRuIixmYUljb246Ij0KZmEtYmFyLWNoYXJ0LW8ifSk7aWYoaS5sZW5ndGg9M0Q9M0Q9M0Qx KXt2YXIgaj0zRGlbMF07ay5hdHRyKCJkYXRhLW9yaWdpbmFsPQotdGl0bGUiLGYoIlZpc3VhbGl6 ZSBpbiAiKStqLmh0bWwpO2suYXR0cigiaHJlZiIsai5ocmVmKX1lbHNle3ZhciBsPTNEW107Xy49 CmVhY2goaSxmdW5jdGlvbihtKXttLmZ1bmM9M0RmdW5jdGlvbihuKXtpZihHYWxheHkuZnJhbWUm JkdhbGF4eS5mcmFtZS5hY3Rpdj0KZSl7R2FsYXh5LmZyYW1lLmFkZCh7dGl0bGU6IlZpc3VhbGl6 YXRpb24iLHR5cGU6InVybCIsY29udGVudDptLmhyZWZ9KTtuLnByPQpldmVudERlZmF1bHQoKTty ZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9O2wucHVzaChtKTtyZXR1cm4gZmFsc2V9KTtQb3B1cE1l bnU9Ci5jcmVhdGUoayxsKX1yZXR1cm4ga30sX2J1aWxkTmV3UmVuZGVyOmZ1bmN0aW9uKCl7dmFy IGk9M0RiLkhEQUJhc2VWaWV3LnBybz0KdG90eXBlLl9idWlsZE5ld1JlbmRlci5jYWxsKHRoaXMp O2kuZmluZCgiLmRhdGFzZXQtZGVsZXRlZC1tc2ciKS5hcHBlbmQoZignPQogQ2xpY2sgPGEgaHJl Zj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0zRCJkYXRhc2V0LXVuZGVsZXRlIj5oZXJl PC9hPiA9CnRvIHVuZGVsZXRlIGl0IG9yIDxhIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyIg Y2xhc3M9M0QiZGF0YXNldC1wdXJnZSI+aD0KZXJlPC9hPiB0byBpbW1lZGlhdGVseSByZW1vdmUg aXQgZnJvbSBkaXNrJykpO2kuZmluZCgiLmRhdGFzZXQtaGlkZGVuLW1zZyIpPQouYXBwZW5kKGYo JyBDbGljayA8YSBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiIGNsYXNzPTNEImRhdGFzZXQt dW5oaWRlIj49CmhlcmU8L2E+IHRvIHVuaGlkZSBpdCcpKTtyZXR1cm4gaX0sX3JlbmRlcl9ib2R5 X2ZhaWxlZF9tZXRhZGF0YTpmdW5jdGlvbigpez0KdmFyIGo9M0QkKCI8YS8+IikuYXR0cih7aHJl Zjp0aGlzLnVybHMuZWRpdCx0YXJnZXQ6dGhpcy5saW5rVGFyZ2V0fSkudGV4dChmPQooInNldCBp dCBtYW51YWxseSBvciByZXRyeSBhdXRvLWRldGVjdGlvbiIpKSxpPTNEJCgiPHNwYW4vPiIpLnRl eHQoIi4gIitmKCI9CllvdSBtYXkgYmUgYWJsZSB0byIpKyIgIikuYXBwZW5kKGopLGs9M0RiLkhE QUJhc2VWaWV3LnByb3RvdHlwZS5fcmVuZGVyX2JvZD0KeV9mYWlsZWRfbWV0YWRhdGEuY2FsbCh0 aGlzKTtrLmZpbmQoIi53YXJuaW5nbWVzc2FnZXNtYWxsIHN0cm9uZyIpLmFwcGVuZChpPQopO3Jl dHVybiBrfSxfcmVuZGVyX2JvZHlfZXJyb3I6ZnVuY3Rpb24oKXt2YXIgaT0zRGIuSERBQmFzZVZp ZXcucHJvdG90eXBlLl89CnJlbmRlcl9ib2R5X2Vycm9yLmNhbGwodGhpcyk7aS5maW5kKCIuZGF0 YXNldC1hY3Rpb25zIC5sZWZ0IikucHJlcGVuZCh0aGlzLj0KX3JlbmRlcl9lcnJCdXR0b24oKSk7 cmV0dXJuIGl9LF9yZW5kZXJfYm9keV9vazpmdW5jdGlvbigpe3ZhciBpPTNEYi5IREFCYXNlPQpW aWV3LnByb3RvdHlwZS5fcmVuZGVyX2JvZHlfb2suY2FsbCh0aGlzKTtpZih0aGlzLm1vZGVsLmlz RGVsZXRlZE9yUHVyZ2VkKCk9Cil7cmV0dXJuIGl9dGhpcy5tYWtlRGJrZXlFZGl0TGluayhpKTtp Zih0aGlzLmhhc1VzZXIpe2kuZmluZCgiLmRhdGFzZXQtYWN0aT0Kb25zIC5sZWZ0IikuYXBwZW5k KHRoaXMuX3JlbmRlcl92aXN1YWxpemF0aW9uc0J1dHRvbigpKTt0aGlzLl9yZW5kZXJUYWdzKGkp PQo7dGhpcy5fcmVuZGVyQW5ub3RhdGlvbihpKX1yZXR1cm4gaX0sX3JlbmRlclRhZ3M6ZnVuY3Rp b24oaSl7dmFyIGo9M0R0aGlzO3Q9Cmhpcy50YWdzRWRpdG9yPTNEbmV3IGEuVGFnc0VkaXRvcih7 bW9kZWw6dGhpcy5tb2RlbCxlbDppLmZpbmQoIi50YWdzLWRpc3BsYT0KeSIpLG9uc2hvd0ZpcnN0 VGltZTpmdW5jdGlvbigpe3RoaXMucmVuZGVyKCl9LG9uc2hvdzpmdW5jdGlvbigpe2oudGFnc0Vk aXRvPQpyU2hvd249M0R0cnVlfSxvbmhpZGU6ZnVuY3Rpb24oKXtqLnRhZ3NFZGl0b3JTaG93bj0z RGZhbHNlfSwkYWN0aXZhdG9yOmZhSWM9Cm9uQnV0dG9uKHt0aXRsZTpmKCJFZGl0IGRhdGFzZXQg dGFncyIpLGNsYXNzZXM6ImRhdGFzZXQtdGFnLWJ0biIsZmFJY29uOiJmYT0KLXRhZ3MifSkuYXBw ZW5kVG8oaS5maW5kKCIuZGF0YXNldC1hY3Rpb25zIC5yaWdodCIpKX0pO2lmKHRoaXMudGFnc0Vk aXRvclNoPQpvd24pe3RoaXMudGFnc0VkaXRvci50b2dnbGUodHJ1ZSl9fSxfcmVuZGVyQW5ub3Rh dGlvbjpmdW5jdGlvbihpKXt2YXIgaj0zRHQ9Cmhpczt0aGlzLmFubm90YXRpb25FZGl0b3I9M0Ru ZXcgZS5Bbm5vdGF0aW9uRWRpdG9yKHttb2RlbDp0aGlzLm1vZGVsLGVsOmkuZj0KaW5kKCIuYW5u b3RhdGlvbi1kaXNwbGF5Iiksb25zaG93Rmlyc3RUaW1lOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXIo KX0sb25zaG93PQo6ZnVuY3Rpb24oKXtqLmFubm90YXRpb25FZGl0b3JTaG93bj0zRHRydWV9LG9u aGlkZTpmdW5jdGlvbigpe2ouYW5ub3RhdGlvbkU9CmRpdG9yU2hvd249M0RmYWxzZX0sJGFjdGl2 YXRvcjpmYUljb25CdXR0b24oe3RpdGxlOmYoIkVkaXQgZGF0YXNldCBhbm5vdGF0aT0Kb24iKSxj bGFzc2VzOiJkYXRhc2V0LWFubm90YXRlLWJ0biIsZmFJY29uOiJmYS1jb21tZW50In0pLmFwcGVu ZFRvKGkuZmluZCgiPQouZGF0YXNldC1hY3Rpb25zIC5yaWdodCIpKX0pO2lmKHRoaXMuYW5ub3Rh dGlvbkVkaXRvclNob3duKXt0aGlzLmFubm90YXRpb249CkVkaXRvci50b2dnbGUodHJ1ZSl9fSxt YWtlRGJrZXlFZGl0TGluazpmdW5jdGlvbihqKXtpZih0aGlzLm1vZGVsLmdldCgibWV0YT0KZGF0 YV9kYmtleSIpPTNEPTNEPTNEIj8iJiYhdGhpcy5tb2RlbC5pc0RlbGV0ZWRPclB1cmdlZCgpKXt2 YXIgaT0zRCQoJzxhIGNsPQphc3M9M0QidmFsdWUiPj88L2E+JykuYXR0cigiaHJlZiIsdGhpcy51 cmxzLmVkaXQpLmF0dHIoInRhcmdldCIsdGhpcy5saW5rVGE9CnJnZXQpO2ouZmluZCgiLmRhdGFz ZXQtZGJrZXkgLnZhbHVlIikucmVwbGFjZVdpdGgoaSl9fSxldmVudHM6Xy5leHRlbmQoXy5jbD0K b25lKGIuSERBQmFzZVZpZXcucHJvdG90eXBlLmV2ZW50cykseyJjbGljayAuZGF0YXNldC11bmRl bGV0ZSI6ZnVuY3Rpb24oaSl7PQp0aGlzLm1vZGVsLnVuZGVsZXRlKCk7cmV0dXJuIGZhbHNlfSwi Y2xpY2sgLmRhdGFzZXQtdW5oaWRlIjpmdW5jdGlvbihpKXt0aGk9CnMubW9kZWwudW5oaWRlKCk7 cmV0dXJuIGZhbHNlfSwiY2xpY2sgLmRhdGFzZXQtcHVyZ2UiOiJjb25maXJtUHVyZ2UifSksY29u Zj0KaXJtUHVyZ2U6ZnVuY3Rpb24gZChpKXt0aGlzLm1vZGVsLnB1cmdlKCk7cmV0dXJuIGZhbHNl fSx0b1N0cmluZzpmdW5jdGlvbigpPQp7dmFyIGk9M0QodGhpcy5tb2RlbCk/KHRoaXMubW9kZWwr IiIpOigiKG5vIG1vZGVsKSIpO3JldHVybiJIREFWaWV3KCIraSsiKSI9Cn19KTtmdW5jdGlvbiBj KGksayxqKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD0zRHt9O2lmKGope2xbImYtZGJrZXkiXT0z RGp9JD0KLmFqYXgoe3VybDppKyIvbGlzdF90cmFja3M/IiskLnBhcmFtKGwpLGRhdGFUeXBlOiJo dG1sIixlcnJvcjpmdW5jdGlvbigpe2FsPQplcnQoKCJDb3VsZCBub3QgYWRkIHRoaXMgZGF0YXNl dCB0byBicm93c2VyIikrIi4iKX0sc3VjY2VzczpmdW5jdGlvbihtKXt2YXI9CiBuPTNEd2luZG93 LnBhcmVudDtuLkdhbGF4eS5tb2RhbC5zaG93KHt0aXRsZToiVmlldyBEYXRhIGluIGEgTmV3IG9y IFNhdmVkID0KVmlzdWFsaXphdGlvbiIsYnV0dG9uczp7Q2FuY2VsOmZ1bmN0aW9uKCl7bi5HYWxh eHkubW9kYWwuaGlkZSgpfSwiVmlldyBpbiBzPQphdmVkIHZpc3VhbGl6YXRpb24iOmZ1bmN0aW9u KCl7bi5HYWxheHkubW9kYWwuc2hvdyh7dGl0bGU6IkFkZCBEYXRhIHRvIFNhdmU9CmQgVmlzdWFs aXphdGlvbiIsYm9keTptLGJ1dHRvbnM6e0NhbmNlbDpmdW5jdGlvbigpe24uR2FsYXh5Lm1vZGFs LmhpZGUoKX0sIj0KQWRkIHRvIHZpc3VhbGl6YXRpb24iOmZ1bmN0aW9uKCl7JChuLmRvY3VtZW50 KS5maW5kKCJpbnB1dFtuYW1lPTNEaWRdOmNoZWNrPQplZCIpLmVhY2goZnVuY3Rpb24oKXtuLkdh bGF4eS5tb2RhbC5oaWRlKCk7dmFyIG89M0QkKHRoaXMpLnZhbCgpO2suaWQ9M0RvO249Ci5HYWxh eHkuZnJhbWUuYWRkKHt0aXRsZToiVHJhY2tzdGVyIix0eXBlOiJ1cmwiLGNvbnRlbnQ6aSsiL3Ry YWNrc3Rlcj8iKyQucD0KYXJhbShrKX0pfSl9fX0pfSwiVmlldyBpbiBuZXcgdmlzdWFsaXphdGlv biI6ZnVuY3Rpb24oKXtuLkdhbGF4eS5tb2RhbC5oaWRlPQooKTt2YXIgbz0zRGkrIi90cmFja3N0 ZXI/IiskLnBhcmFtKGspO24uR2FsYXh5LmZyYW1lLmFkZCh7dGl0bGU6IlRyYWNrc3RlciI9Cix0 eXBlOiJ1cmwiLGNvbnRlbnQ6b30pfX19KX19KTtyZXR1cm4gZmFsc2V9fXJldHVybntIREFFZGl0 VmlldzpofX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgODM0NmVjNGJh YTM5OTJmNGRjMDE2MWYwZmM3OWEwYmE4OTNjMGE2MyAtciBkY2MwYzE5MTQ3ZWFkODZjNmUzNTdj Nz0KMzllMDUxM2FkZGZlMDJjYjIgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9kYXRhc2V0L2hk YS1tb2RlbC5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2RhdGFzZXQvaGRhLW1v ZGVsLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvZGF0YXNldC9oZGEtbW9kZWwu anMKQEAgLTEsMSArMSwxIEBACi1kZWZpbmUoWyJtdmMvYmFzZS1tdmMiXSxmdW5jdGlvbihiKXt2 YXIgZT0zREJhY2tib25lLk1vZGVsLmV4dGVuZChiLkxvZ2dhYj0KbGVNaXhpbikuZXh0ZW5kKHtk ZWZhdWx0czp7aGlzdG9yeV9pZDpudWxsLG1vZGVsX2NsYXNzOiJIaXN0b3J5RGF0YXNldEFzc29j PQppYXRpb24iLGhpZDowLGlkOm51bGwsbmFtZToiKHVubmFtZWQgZGF0YXNldCkiLHN0YXRlOiJu ZXciLGRlbGV0ZWQ6ZmFsc2Usdmk9CnNpYmxlOnRydWUsYWNjZXNzaWJsZTp0cnVlLHB1cmdlZDpm YWxzZSxkYXRhX3R5cGU6IiIsZmlsZV9zaXplOjAsZmlsZV9leHQ6Ij0KIixtZXRhX2ZpbGVzOltd LG1pc2NfYmx1cmI6IiIsbWlzY19pbmZvOiIiLHRhZ3M6W10sYW5ub3RhdGlvbjoiIn0sdXJsUm9v dDpnPQphbGF4eV9jb25maWcucm9vdCsiYXBpL2hpc3Rvcmllcy8iLHVybDpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLnVybFJvb3QrdGhpcy49CmdldCgiaGlzdG9yeV9pZCIpKyIvY29udGVudHMvIit0 aGlzLmdldCgiaWQiKX0sdXJsczpmdW5jdGlvbigpe3ZhciBqPTNEdGhpcz0KLmdldCgiaWQiKTtp Zighail7cmV0dXJue319dmFyIGk9M0R7cHVyZ2U6Z2FsYXh5X2NvbmZpZy5yb290KyJkYXRhc2V0 cy8iK2orPQoiL3B1cmdlX2FzeW5jIixkaXNwbGF5OmdhbGF4eV9jb25maWcucm9vdCsiZGF0YXNl dHMvIitqKyIvZGlzcGxheS8/cHJldmlldz0KPTNEVHJ1ZSIsZWRpdDpnYWxheHlfY29uZmlnLnJv b3QrImRhdGFzZXRzLyIraisiL2VkaXQiLGRvd25sb2FkOmdhbGF4eV9jb25mPQppZy5yb290KyJk YXRhc2V0cy8iK2orIi9kaXNwbGF5P3RvX2V4dD0zRCIrdGhpcy5nZXQoImZpbGVfZXh0IikscmVw b3J0X2Vycm89CnI6Z2FsYXh5X2NvbmZpZy5yb290KyJkYXRhc2V0L2Vycm9ycz9pZD0zRCIraixy ZXJ1bjpnYWxheHlfY29uZmlnLnJvb3QrInRvbz0KbF9ydW5uZXIvcmVydW4/aWQ9M0QiK2osc2hv d19wYXJhbXM6Z2FsYXh5X2NvbmZpZy5yb290KyJkYXRhc2V0cy8iK2orIi9zaG93PQpfcGFyYW1z Iix2aXN1YWxpemF0aW9uOmdhbGF4eV9jb25maWcucm9vdCsidmlzdWFsaXphdGlvbiIsYW5ub3Rh dGlvbjp7Z2V0Omc9CmFsYXh5X2NvbmZpZy5yb290KyJkYXRhc2V0L2dldF9hbm5vdGF0aW9uX2Fz eW5jP2lkPTNEIitqLHNldDpnYWxheHlfY29uZmlnLj0Kcm9vdCsiZGF0YXNldC9hbm5vdGF0ZV9h c3luYz9pZD0zRCIran0sbWV0YV9kb3dubG9hZDpnYWxheHlfY29uZmlnLnJvb3QrImRhPQp0YXNl dC9nZXRfbWV0YWRhdGFfZmlsZT9oZGFfaWQ9M0QiK2orIiZtZXRhZGF0YV9uYW1lPTNEIn07cmV0 dXJuIGl9LGluaXRpYWw9Cml6ZTpmdW5jdGlvbihpKXt0aGlzLmxvZyh0aGlzKyIuaW5pdGlhbGl6 ZSIsdGhpcy5hdHRyaWJ1dGVzKTt0aGlzLmxvZygiXHRwYT0KcmVudCBoaXN0b3J5X2lkOiAiK3Ro aXMuZ2V0KCJoaXN0b3J5X2lkIikpO2lmKCF0aGlzLmdldCgiYWNjZXNzaWJsZSIpKXt0aGlzPQou c2V0KCJzdGF0ZSIsZS5TVEFURVMuTk9UX1ZJRVdBQkxFKX10aGlzLl9zZXRVcExpc3RlbmVycygp fSxfc2V0VXBMaXN0ZW5lcnM9CjpmdW5jdGlvbigpe3RoaXMub24oImNoYW5nZTpzdGF0ZSIsZnVu Y3Rpb24oaixpKXt0aGlzLmxvZyh0aGlzKyIgaGFzIGNoYW5nZT0KZCBzdGF0ZToiLGosaSk7aWYo dGhpcy5pblJlYWR5U3RhdGUoKSl7dGhpcy50cmlnZ2VyKCJzdGF0ZTpyZWFkeSIsaixpLHRoaXMu PQpwcmV2aW91cygic3RhdGUiKSl9fSl9LGlzRGVsZXRlZE9yUHVyZ2VkOmZ1bmN0aW9uKCl7cmV0 dXJuKHRoaXMuZ2V0KCJkZWxldGU9CmQiKXx8dGhpcy5nZXQoInB1cmdlZCIpKX0saXNWaXNpYmxl OmZ1bmN0aW9uKGosayl7dmFyIGk9M0R0cnVlO2lmKCghaikmJih0aD0KaXMuZ2V0KCJkZWxldGVk Iil8fHRoaXMuZ2V0KCJwdXJnZWQiKSkpe2k9M0RmYWxzZX1pZigoIWspJiYoIXRoaXMuZ2V0KCJ2 aXNpPQpibGUiKSkpe2k9M0RmYWxzZX1yZXR1cm4gaX0saGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJu ICF0aGlzLmdldCgidmlzaWJsZSIpfSw9CmluUmVhZHlTdGF0ZTpmdW5jdGlvbigpe3ZhciBpPTNE Xy5jb250YWlucyhlLlJFQURZX1NUQVRFUyx0aGlzLmdldCgic3RhdGUiKT0KKTtyZXR1cm4odGhp cy5pc0RlbGV0ZWRPclB1cmdlZCgpfHxpKX0saGFzRGV0YWlsczpmdW5jdGlvbigpe3JldHVybiBf Lmhhcyh0PQpoaXMuYXR0cmlidXRlcywiZ2Vub21lX2J1aWxkIil9LGhhc0RhdGE6ZnVuY3Rpb24o KXtyZXR1cm4odGhpcy5nZXQoImZpbGVfc2k9CnplIik+MCl9LCJkZWxldGUiOmZ1bmN0aW9uIGQo aSl7aWYodGhpcy5nZXQoImRlbGV0ZWQiKSl7cmV0dXJuIGpRdWVyeS53aGVuKD0KKX1yZXR1cm4g dGhpcy5zYXZlKHtkZWxldGVkOnRydWV9LGkpfSx1bmRlbGV0ZTpmdW5jdGlvbiBhKGkpe2lmKCF0 aGlzLmdldCgiPQpkZWxldGVkIil8fHRoaXMuZ2V0KCJwdXJnZWQiKSl7cmV0dXJuIGpRdWVyeS53 aGVuKCl9cmV0dXJuIHRoaXMuc2F2ZSh7ZGVsZXQ9CmVkOmZhbHNlfSxpKX0saGlkZTpmdW5jdGlv biBjKGkpe2lmKCF0aGlzLmdldCgidmlzaWJsZSIpKXtyZXR1cm4galF1ZXJ5LndoZT0KbigpfXJl dHVybiB0aGlzLnNhdmUoe3Zpc2libGU6ZmFsc2V9LGkpfSx1bmhpZGU6ZnVuY3Rpb24gaChpKXtp Zih0aGlzLmdldCgiPQp2aXNpYmxlIikpe3JldHVybiBqUXVlcnkud2hlbigpfXJldHVybiB0aGlz LnNhdmUoe3Zpc2libGU6dHJ1ZX0saSl9LHB1cmdlOmY9CnVuY3Rpb24gZyhpKXtpZih0aGlzLmdl dCgicHVyZ2VkIikpe3JldHVybiBqUXVlcnkud2hlbigpfWk9M0RpfHx7fTtpLnVybD0zRD0KZ2Fs YXh5X2NvbmZpZy5yb290KyJkYXRhc2V0cy8iK3RoaXMuZ2V0KCJpZCIpKyIvcHVyZ2VfYXN5bmMi O3ZhciBqPTNEdGhpcyxrPQo9M0RqUXVlcnkuYWpheChpKTtrLmRvbmUoZnVuY3Rpb24obixsLG0p e2ouc2V0KHtkZWxldGVkOnRydWUscHVyZ2VkOnRydWV9KX09Cik7ay5mYWlsKGZ1bmN0aW9uKHAs bCxvKXt2YXIgbT0zRF9sKCJVbmFibGUgdG8gcHVyZ2UgZGF0YXNldCIpO3ZhciBuPTNEKCJSZT0K bW92YWwgb2YgZGF0YXNldHMgYnkgdXNlcnMgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBHYWxheHkg aW5zdGFuY2UiKTtpZihwLnJlPQpzcG9uc2VKU09OJiZwLnJlc3BvbnNlSlNPTi5lcnJvcil7bT0z RHAucmVzcG9uc2VKU09OLmVycm9yfWVsc2V7aWYocC5yZXNwb249CnNlVGV4dC5pbmRleE9mKG4p IT0zRD0zRC0xKXttPTNEbn19cC5yZXNwb25zZVRleHQ9M0RtO2oudHJpZ2dlcigiZXJyb3IiLGos cD0KLGksX2wobSkse2Vycm9yOm19KX0pO3JldHVybiBrfSxzZWFyY2hBdHRyaWJ1dGVzOlsibmFt ZSIsImZpbGVfZXh0IiwiZ2Vub21lPQpfYnVpbGQiLCJtaXNjX2JsdXJiIiwibWlzY19pbmZvIiwi YW5ub3RhdGlvbiIsInRhZ3MiXSxzZWFyY2hBbGlhc2VzOnt0aXRsZTo9CiJuYW1lIixmb3JtYXQ6 ImZpbGVfZXh0IixkYXRhYmFzZToiZ2Vub21lX2J1aWxkIixibHVyYjoibWlzY19ibHVyYiIsZGVz Y3JpcD0KdGlvbjoibWlzY19ibHVyYiIsaW5mbzoibWlzY19pbmZvIix0YWc6InRhZ3MifSxzZWFy Y2hBdHRyaWJ1dGU6ZnVuY3Rpb24oayxpPQope3ZhciBqPTNEdGhpcy5nZXQoayk7aWYoIWl8fChq PTNEPTNEPTNEdW5kZWZpbmVkfHxqPTNEPTNEPTNEbnVsbCkpe3JldHVybiA9CmZhbHNlfWlmKF8u aXNBcnJheShqKSl7cmV0dXJuIHRoaXMuX3NlYXJjaEFycmF5QXR0cmlidXRlKGosaSl9cmV0dXJu KGoudG9TdD0KcmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpLnRvTG93ZXJDYXNlKCkpIT0z RD0zRC0xKX0sX3NlYXJjaEFycmF5QXR0cmliPQp1dGU6ZnVuY3Rpb24oaixpKXtpPTNEaS50b0xv d2VyQ2FzZSgpO3JldHVybiBfLmFueShqLGZ1bmN0aW9uKGspe3JldHVybihrLnQ9Cm9TdHJpbmco KS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoaS50b0xvd2VyQ2FzZSgpKSE9M0Q9M0QtMSl9KX0sc2Vh cmNoOmZ1bmN0aT0Kb24oaSl7dmFyIGo9M0R0aGlzO3JldHVybiBfLmZpbHRlcih0aGlzLnNlYXJj aEF0dHJpYnV0ZXMsZnVuY3Rpb24oayl7cmV0dXJuPQogai5zZWFyY2hBdHRyaWJ1dGUoayxpKX0p fSxtYXRjaGVzOmZ1bmN0aW9uKGope3ZhciBsPTNEIj0zRCIsaT0zRGouc3BsaXQobCk9CjtpZihp Lmxlbmd0aD49M0QyKXt2YXIgaz0zRGlbMF07az0zRHRoaXMuc2VhcmNoQWxpYXNlc1trXXx8azty ZXR1cm4gdGhpcy5zZT0KYXJjaEF0dHJpYnV0ZShrLGlbMV0pfXJldHVybiAhIXRoaXMuc2VhcmNo KGopLmxlbmd0aH0sbWF0Y2hlc0FsbDpmdW5jdGlvbihqPQope3ZhciBpPTNEdGhpcztqPTNEai5t YXRjaCgvKCIuKiJ8XHcqPTNEIi4qInxcUyopL2cpLmZpbHRlcihmdW5jdGlvbihrKXtyZXQ9CnVy biAhIWt9KTtyZXR1cm4gXy5hbGwoaixmdW5jdGlvbihrKXtrPTNEay5yZXBsYWNlKC8iL2csIiIp O3JldHVybiBpLm1hdGNoZT0KcyhrKX0pfSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciBpPTNEdGhp cy5nZXQoImlkIil8fCIiO2lmKHRoaXMuZ2V0KCJuYW1lIikpPQp7aT0zRHRoaXMuZ2V0KCJoaWQi KSsnIDoiJyt0aGlzLmdldCgibmFtZSIpKyciLCcraX1yZXR1cm4iSERBKCIraSsiKSJ9fSk7ZS49 ClNUQVRFUz0zRHtVUExPQUQ6InVwbG9hZCIsUVVFVUVEOiJxdWV1ZWQiLFJVTk5JTkc6InJ1bm5p bmciLFNFVFRJTkdfTUVUQURBVD0KQToic2V0dGluZ19tZXRhZGF0YSIsTkVXOiJuZXciLEVNUFRZ OiJlbXB0eSIsT0s6Im9rIixQQVVTRUQ6InBhdXNlZCIsRkFJTEVEPQpfTUVUQURBVEE6ImZhaWxl ZF9tZXRhZGF0YSIsTk9UX1ZJRVdBQkxFOiJub1Blcm1pc3Npb24iLERJU0NBUkRFRDoiZGlzY2Fy ZGU9CmQiLEVSUk9SOiJlcnJvciJ9O2UuUkVBRFlfU1RBVEVTPTNEW2UuU1RBVEVTLk9LLGUuU1RB VEVTLkVNUFRZLGUuU1RBVEVTLlBBVT0KU0VELGUuU1RBVEVTLkZBSUxFRF9NRVRBREFUQSxlLlNU QVRFUy5OT1RfVklFV0FCTEUsZS5TVEFURVMuRElTQ0FSREVELGUuU1RBPQpURVMuRVJST1JdO2Uu Tk9UX1JFQURZX1NUQVRFUz0zRFtlLlNUQVRFUy5VUExPQUQsZS5TVEFURVMuUVVFVUVELGUuU1RB VEVTLlI9ClVOTklORyxlLlNUQVRFUy5TRVRUSU5HX01FVEFEQVRBLGUuU1RBVEVTLk5FV107dmFy IGY9M0RCYWNrYm9uZS5Db2xsZWN0aW9uLj0KZXh0ZW5kKGIuTG9nZ2FibGVNaXhpbikuZXh0ZW5k KHttb2RlbDplLHVybFJvb3Q6Z2FsYXh5X2NvbmZpZy5yb290KyJhcGkvaGlzPQp0b3JpZXMiLHVy bDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVybFJvb3QrIi8iK3RoaXMuaGlzdG9yeUlkKyIvY29u dGVudHMifSw9CmluaXRpYWxpemU6ZnVuY3Rpb24oaixpKXtpPTNEaXx8e307dGhpcy5oaXN0b3J5 SWQ9M0RpLmhpc3RvcnlJZH0saWRzOmZ1bmN0aT0Kb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rp b24oaSl7cmV0dXJuIGkuaWR9KX0sbm90UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gPQp0aGlzLmZp bHRlcihmdW5jdGlvbihpKXtyZXR1cm4gIWkuaW5SZWFkeVN0YXRlKCl9KX0scnVubmluZzpmdW5j dGlvbigpe3ZhciA9Cmk9M0RbXTt0aGlzLmVhY2goZnVuY3Rpb24oail7aWYoIWouaW5SZWFkeVN0 YXRlKCkpe2kucHVzaChqLmdldCgiaWQiKSl9fSk7cj0KZXR1cm4gaX0sZ2V0QnlIaWQ6ZnVuY3Rp b24oaSl7cmV0dXJuIF8uZmlyc3QodGhpcy5maWx0ZXIoZnVuY3Rpb24oail7cmV0dXJuPQogai5n ZXQoImhpZCIpPTNEPTNEPTNEaX0pKX0sZ2V0VmlzaWJsZTpmdW5jdGlvbihpLGwsayl7az0zRGt8 fFtdO3ZhciBqPTNEbmU9CncgZih0aGlzLmZpbHRlcihmdW5jdGlvbihtKXtyZXR1cm4gbS5pc1Zp c2libGUoaSxsKX0pKTtfLmVhY2goayxmdW5jdGlvbihtKT0Ke2lmKCFfLmlzRnVuY3Rpb24obSkp e3JldHVybn1qPTNEbmV3IGYoai5maWx0ZXIobSkpfSk7cmV0dXJuIGp9LGhhdmVEZXRhaWxzPQo6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbGwoZnVuY3Rpb24oaSl7cmV0dXJuIGkuaGFzRGV0YWls cygpfSl9LGZldGNoQWxsRGU9CnRhaWxzOmZ1bmN0aW9uKGope2o9M0RqfHx7fTt2YXIgaT0zRHtk ZXRhaWxzOiJhbGwifTtqLmRhdGE9M0Qoai5kYXRhKT8oXy5leD0KdGVuZChqLmRhdGEsaSkpOihp KTtyZXR1cm4gdGhpcy5mZXRjaChqKX0sYWpheFF1ZXVlOmZ1bmN0aW9uKGwsayl7dmFyIGo9M0Rq PQpRdWVyeS5EZWZlcnJlZCgpLGk9M0R0aGlzLmxlbmd0aCxuPTNEW107aWYoIWkpe2oucmVzb2x2 ZShbXSk7cmV0dXJuIGp9dmFyIG09Cj0zRHRoaXMuY2hhaW4oKS5yZXZlcnNlKCkubWFwKGZ1bmN0 aW9uKHAsbyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHE9M0RsLmNhbD0KbChwLGspO3EuZG9uZShm dW5jdGlvbihyKXtqLm5vdGlmeSh7Y3VycjpvLHRvdGFsOmkscmVzcG9uc2U6cixtb2RlbDpwfSl9 KTtxPQouYWx3YXlzKGZ1bmN0aW9uKHIpe24ucHVzaChyKTtpZihtLmxlbmd0aCl7bS5zaGlmdCgp KCl9ZWxzZXtqLnJlc29sdmUobil9fSk9Cn19KS52YWx1ZSgpO20uc2hpZnQoKSgpO3JldHVybiBq fSxtYXRjaGVzOmZ1bmN0aW9uKGkpe3JldHVybiB0aGlzLmZpbHRlcihmdT0KbmN0aW9uKGope3Jl dHVybiBqLm1hdGNoZXMoaSl9KX0sc2V0OmZ1bmN0aW9uKGssaSl7dmFyIGo9M0R0aGlzO2s9M0Rf Lm1hcChrPQosZnVuY3Rpb24obSl7dmFyIG49M0RqLmdldChtLmlkKTtpZighbil7cmV0dXJuIG19 dmFyIGw9M0RuLnRvSlNPTigpO18uZXh0ZW49CmQobCxtKTtyZXR1cm4gbH0pO0JhY2tib25lLkNv bGxlY3Rpb24ucHJvdG90eXBlLnNldC5jYWxsKHRoaXMsayxpKX0sdG9TdHJpbj0KZzpmdW5jdGlv bigpe3JldHVybihbIkhEQUNvbGxlY3Rpb24oIixbdGhpcy5oaXN0b3J5SWQsdGhpcy5sZW5ndGhd LmpvaW4oKSwiPQopIl0uam9pbigiIikpfX0pO3JldHVybntIaXN0b3J5RGF0YXNldEFzc29jaWF0 aW9uOmUsSERBQ29sbGVjdGlvbjpmfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2Rl ZmluZShbIm12Yy9iYXNlLW12YyIsInV0aWxzL2xvY2FsaXphdGlvbiJdLGZ1bmN0aW9uKGQsYil7 dmFyIGk9M0RCYWNrYm9uPQplLk1vZGVsLmV4dGVuZChkLkxvZ2dhYmxlTWl4aW4pLmV4dGVuZCh7 ZGVmYXVsdHM6e2hpc3RvcnlfaWQ6bnVsbCxtb2RlbF9jbGE9CnNzOiJIaXN0b3J5RGF0YXNldEFz c29jaWF0aW9uIixoaWQ6MCxpZDpudWxsLG5hbWU6Iih1bm5hbWVkIGRhdGFzZXQpIixzdGF0ZT0K OiJuZXciLGRlbGV0ZWQ6ZmFsc2UsdmlzaWJsZTp0cnVlLGFjY2Vzc2libGU6dHJ1ZSxwdXJnZWQ6 ZmFsc2UsZGF0YV90eXBlOiIiPQosZmlsZV9zaXplOjAsZmlsZV9leHQ6IiIsbWV0YV9maWxlczpb XSxtaXNjX2JsdXJiOiIiLG1pc2NfaW5mbzoiIix0YWdzOltdLGE9Cm5ub3RhdGlvbjoiIn0sdXJs Um9vdDpnYWxheHlfY29uZmlnLnJvb3QrImFwaS9oaXN0b3JpZXMvIix1cmw6ZnVuY3Rpb24oKXty ZT0KdHVybiB0aGlzLnVybFJvb3QrdGhpcy5nZXQoImhpc3RvcnlfaWQiKSsiL2NvbnRlbnRzLyIr dGhpcy5nZXQoImlkIil9LHVybHM6PQpmdW5jdGlvbigpe3ZhciBrPTNEdGhpcy5nZXQoImlkIik7 aWYoIWspe3JldHVybnt9fXZhciBqPTNEe3B1cmdlOmdhbGF4eV9jb249CmZpZy5yb290KyJkYXRh c2V0cy8iK2srIi9wdXJnZV9hc3luYyIsZGlzcGxheTpnYWxheHlfY29uZmlnLnJvb3QrImRhdGFz ZXRzLz0KIitrKyIvZGlzcGxheS8/cHJldmlldz0zRFRydWUiLGVkaXQ6Z2FsYXh5X2NvbmZpZy5y b290KyJkYXRhc2V0cy8iK2srIi9lZGl0PQoiLGRvd25sb2FkOmdhbGF4eV9jb25maWcucm9vdCsi ZGF0YXNldHMvIitrKyIvZGlzcGxheT90b19leHQ9M0QiK3RoaXMuZ2V0KCI9CmZpbGVfZXh0Iiks cmVwb3J0X2Vycm9yOmdhbGF4eV9jb25maWcucm9vdCsiZGF0YXNldC9lcnJvcnM/aWQ9M0QiK2ss cmVydW46Zz0KYWxheHlfY29uZmlnLnJvb3QrInRvb2xfcnVubmVyL3JlcnVuP2lkPTNEIitrLHNo b3dfcGFyYW1zOmdhbGF4eV9jb25maWcucm9vPQp0KyJkYXRhc2V0cy8iK2srIi9zaG93X3BhcmFt cyIsdmlzdWFsaXphdGlvbjpnYWxheHlfY29uZmlnLnJvb3QrInZpc3VhbGl6YXQ9CmlvbiIsYW5u b3RhdGlvbjp7Z2V0OmdhbGF4eV9jb25maWcucm9vdCsiZGF0YXNldC9nZXRfYW5ub3RhdGlvbl9h c3luYz9pZD0zRD0KIitrLHNldDpnYWxheHlfY29uZmlnLnJvb3QrImRhdGFzZXQvYW5ub3RhdGVf YXN5bmM/aWQ9M0QiK2t9LG1ldGFfZG93bmxvYWQ6PQpnYWxheHlfY29uZmlnLnJvb3QrImRhdGFz ZXQvZ2V0X21ldGFkYXRhX2ZpbGU/aGRhX2lkPTNEIitrKyImbWV0YWRhdGFfbmFtZT0KPTNEIn07 cmV0dXJuIGp9LGluaXRpYWxpemU6ZnVuY3Rpb24oail7dGhpcy5sb2codGhpcysiLmluaXRpYWxp emUiLHRoaXMuYXR0PQpyaWJ1dGVzKTt0aGlzLmxvZygiXHRwYXJlbnQgaGlzdG9yeV9pZDogIit0 aGlzLmdldCgiaGlzdG9yeV9pZCIpKTtpZighdGhpcy49CmdldCgiYWNjZXNzaWJsZSIpKXt0aGlz LnNldCgic3RhdGUiLGkuU1RBVEVTLk5PVF9WSUVXQUJMRSl9dGhpcy5fc2V0VXBMaXN0ZT0KbmVy cygpfSxfc2V0VXBMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt0aGlzLm9uKCJjaGFuZ2U6c3RhdGUiLGZ1 bmN0aW9uKGssail7dGhpPQpzLmxvZyh0aGlzKyIgaGFzIGNoYW5nZWQgc3RhdGU6IixrLGopO2lm KHRoaXMuaW5SZWFkeVN0YXRlKCkpe3RoaXMudHJpZ2dlcig9CiJzdGF0ZTpyZWFkeSIsayxqLHRo aXMucHJldmlvdXMoInN0YXRlIikpfX0pfSxpc0RlbGV0ZWRPclB1cmdlZDpmdW5jdGlvbigpez0K cmV0dXJuKHRoaXMuZ2V0KCJkZWxldGVkIil8fHRoaXMuZ2V0KCJwdXJnZWQiKSl9LGlzVmlzaWJs ZTpmdW5jdGlvbihrLGwpe3ZhPQpyIGo9M0R0cnVlO2lmKCghaykmJih0aGlzLmdldCgiZGVsZXRl ZCIpfHx0aGlzLmdldCgicHVyZ2VkIikpKXtqPTNEZmFsc2V9aWY9CigoIWwpJiYoIXRoaXMuZ2V0 KCJ2aXNpYmxlIikpKXtqPTNEZmFsc2V9cmV0dXJuIGp9LGhpZGRlbjpmdW5jdGlvbigpe3JldHVy bj0KICF0aGlzLmdldCgidmlzaWJsZSIpfSxpblJlYWR5U3RhdGU6ZnVuY3Rpb24oKXt2YXIgaj0z RF8uY29udGFpbnMoaS5SRUFEWV9TPQpUQVRFUyx0aGlzLmdldCgic3RhdGUiKSk7cmV0dXJuKHRo aXMuaXNEZWxldGVkT3JQdXJnZWQoKXx8ail9LGhhc0RldGFpbHM6ZnU9Cm5jdGlvbigpe3JldHVy biBfLmhhcyh0aGlzLmF0dHJpYnV0ZXMsImdlbm9tZV9idWlsZCIpfSxoYXNEYXRhOmZ1bmN0aW9u KCl7cj0KZXR1cm4odGhpcy5nZXQoImZpbGVfc2l6ZSIpPjApfSwiZGVsZXRlIjpmdW5jdGlvbiBl KGope2lmKHRoaXMuZ2V0KCJkZWxldGVkPQoiKSl7cmV0dXJuIGpRdWVyeS53aGVuKCl9cmV0dXJu IHRoaXMuc2F2ZSh7ZGVsZXRlZDp0cnVlfSxqKX0sdW5kZWxldGU6ZnVuY3Q9CmlvbiBoKGope2lm KCF0aGlzLmdldCgiZGVsZXRlZCIpfHx0aGlzLmdldCgicHVyZ2VkIikpe3JldHVybiBqUXVlcnku d2hlbigpfT0KcmV0dXJuIHRoaXMuc2F2ZSh7ZGVsZXRlZDpmYWxzZX0sail9LGhpZGU6ZnVuY3Rp b24gYyhqKXtpZighdGhpcy5nZXQoInZpc2liPQpsZSIpKXtyZXR1cm4galF1ZXJ5LndoZW4oKX1y ZXR1cm4gdGhpcy5zYXZlKHt2aXNpYmxlOmZhbHNlfSxqKX0sdW5oaWRlOmZ1bmM9CnRpb24gZyhq KXtpZih0aGlzLmdldCgidmlzaWJsZSIpKXtyZXR1cm4galF1ZXJ5LndoZW4oKX1yZXR1cm4gdGhp cy5zYXZlKHt2aT0Kc2libGU6dHJ1ZX0sail9LHB1cmdlOmZ1bmN0aW9uIGYoail7aWYodGhpcy5n ZXQoInB1cmdlZCIpKXtyZXR1cm4galF1ZXJ5LndoPQplbigpfWo9M0RqfHx7fTtqLnVybD0zRGdh bGF4eV9jb25maWcucm9vdCsiZGF0YXNldHMvIit0aGlzLmdldCgiaWQiKSsiL3B1cmc9CmVfYXN5 bmMiO3ZhciBrPTNEdGhpcyxsPTNEalF1ZXJ5LmFqYXgoaik7bC5kb25lKGZ1bmN0aW9uKG8sbSxu KXtrLnNldCh7ZGVsZT0KdGVkOnRydWUscHVyZ2VkOnRydWV9KX0pO2wuZmFpbChmdW5jdGlvbihx LG0scCl7dmFyIG49M0RiKCJVbmFibGUgdG8gcHVyZ2UgPQpkYXRhc2V0Iik7dmFyIG89M0QoIlJl bW92YWwgb2YgZGF0YXNldHMgYnkgdXNlcnMgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBHYWw9CmF4 eSBpbnN0YW5jZSIpO2lmKHEucmVzcG9uc2VKU09OJiZxLnJlc3BvbnNlSlNPTi5lcnJvcil7bj0z RHEucmVzcG9uc2VKU09OLj0KZXJyb3J9ZWxzZXtpZihxLnJlc3BvbnNlVGV4dC5pbmRleE9mKG8p IT0zRD0zRC0xKXtuPTNEb319cS5yZXNwb25zZVRleHQ9M0RuPQo7ay50cmlnZ2VyKCJlcnJvciIs ayxxLGosYihuKSx7ZXJyb3I6bn0pfSk7cmV0dXJuIGx9LHNlYXJjaEF0dHJpYnV0ZXM6WyJuYW09 CmUiLCJmaWxlX2V4dCIsImdlbm9tZV9idWlsZCIsIm1pc2NfYmx1cmIiLCJtaXNjX2luZm8iLCJh bm5vdGF0aW9uIiwidGFncyJdLD0Kc2VhcmNoQWxpYXNlczp7dGl0bGU6Im5hbWUiLGZvcm1hdDoi ZmlsZV9leHQiLGRhdGFiYXNlOiJnZW5vbWVfYnVpbGQiLGJsdXJiPQo6Im1pc2NfYmx1cmIiLGRl c2NyaXB0aW9uOiJtaXNjX2JsdXJiIixpbmZvOiJtaXNjX2luZm8iLHRhZzoidGFncyJ9LHNlYXJj aEE9CnR0cmlidXRlOmZ1bmN0aW9uKGwsail7dmFyIGs9M0R0aGlzLmdldChsKTtpZighanx8KGs9 M0Q9M0Q9M0R1bmRlZmluZWR8fGs9Cj0zRD0zRD0zRG51bGwpKXtyZXR1cm4gZmFsc2V9aWYoXy5p c0FycmF5KGspKXtyZXR1cm4gdGhpcy5fc2VhcmNoQXJyYXlBdHRyaT0KYnV0ZShrLGopfXJldHVy bihrLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGoudG9Mb3dlckNhc2UoKSkhPTNE PTNEPQotMSl9LF9zZWFyY2hBcnJheUF0dHJpYnV0ZTpmdW5jdGlvbihrLGope2o9M0RqLnRvTG93 ZXJDYXNlKCk7cmV0dXJuIF8uYW55KGs9CixmdW5jdGlvbihsKXtyZXR1cm4obC50b1N0cmluZygp LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihqLnRvTG93ZXJDYXNlKCkpIT0zRD0KPTNELTEpfSl9LHNl YXJjaDpmdW5jdGlvbihqKXt2YXIgaz0zRHRoaXM7cmV0dXJuIF8uZmlsdGVyKHRoaXMuc2VhcmNo QXR0cmliPQp1dGVzLGZ1bmN0aW9uKGwpe3JldHVybiBrLnNlYXJjaEF0dHJpYnV0ZShsLGopfSl9 LG1hdGNoZXM6ZnVuY3Rpb24oayl7dmFyIG09Cj0zRCI9M0QiLGo9M0RrLnNwbGl0KG0pO2lmKGou bGVuZ3RoPj0zRDIpe3ZhciBsPTNEalswXTtsPTNEdGhpcy5zZWFyY2hBbGlhcz0KZXNbbF18fGw7 cmV0dXJuIHRoaXMuc2VhcmNoQXR0cmlidXRlKGwsalsxXSl9cmV0dXJuICEhdGhpcy5zZWFyY2go aykubGVuZ3RoPQp9LG1hdGNoZXNBbGw6ZnVuY3Rpb24oayl7dmFyIGo9M0R0aGlzO2s9M0RrLm1h dGNoKC8oIi4qInxcdyo9M0QiLioifFxTKikvZyk9Ci5maWx0ZXIoZnVuY3Rpb24obCl7cmV0dXJu ICEhbH0pO3JldHVybiBfLmFsbChrLGZ1bmN0aW9uKGwpe2w9M0RsLnJlcGxhY2UoLz0KIi9nLCIi KTtyZXR1cm4gai5tYXRjaGVzKGwpfSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGo9M0R0aGlz LmdldCgiaWQiKXx8PQoiIjtpZih0aGlzLmdldCgibmFtZSIpKXtqPTNEdGhpcy5nZXQoImhpZCIp KycgOiInK3RoaXMuZ2V0KCJuYW1lIikrJyIsJytqfXI9CmV0dXJuIkhEQSgiK2orIikifX0pO2ku U1RBVEVTPTNEe1VQTE9BRDoidXBsb2FkIixRVUVVRUQ6InF1ZXVlZCIsUlVOTklORzoicj0KdW5u aW5nIixTRVRUSU5HX01FVEFEQVRBOiJzZXR0aW5nX21ldGFkYXRhIixORVc6Im5ldyIsRU1QVFk6 ImVtcHR5IixPSzoib2siPQosUEFVU0VEOiJwYXVzZWQiLEZBSUxFRF9NRVRBREFUQToiZmFpbGVk X21ldGFkYXRhIixOT1RfVklFV0FCTEU6Im5vUGVybWlzc2k9Cm9uIixESVNDQVJERUQ6ImRpc2Nh cmRlZCIsRVJST1I6ImVycm9yIn07aS5SRUFEWV9TVEFURVM9M0RbaS5TVEFURVMuT0ssaS5TVD0K QVRFUy5FTVBUWSxpLlNUQVRFUy5QQVVTRUQsaS5TVEFURVMuRkFJTEVEX01FVEFEQVRBLGkuU1RB VEVTLk5PVF9WSUVXQUJMRSxpPQouU1RBVEVTLkRJU0NBUkRFRCxpLlNUQVRFUy5FUlJPUl07aS5O T1RfUkVBRFlfU1RBVEVTPTNEW2kuU1RBVEVTLlVQTE9BRCxpLlM9ClRBVEVTLlFVRVVFRCxpLlNU QVRFUy5SVU5OSU5HLGkuU1RBVEVTLlNFVFRJTkdfTUVUQURBVEEsaS5TVEFURVMuTkVXXTt2YXIg YT0KPTNEQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoZC5Mb2dnYWJsZU1peGluKS5leHRlbmQo e21vZGVsOmksdXJsUm9vdDpnYWxhPQp4eV9jb25maWcucm9vdCsiYXBpL2hpc3RvcmllcyIsdXJs OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXJsUm9vdCsiLyIrdGhpcy49Cmhpc3RvcnlJZCsiL2Nv bnRlbnRzIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihrLGope2o9M0RqfHx7fTt0aGlzLmhpc3RvcnlJ ZD0zRD0Kai5oaXN0b3J5SWR9LGlkczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlv bihqKXtyZXR1cm4gai5pZH0pfSxub3RSPQplYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmls dGVyKGZ1bmN0aW9uKGope3JldHVybiAhai5pblJlYWR5U3RhdGUoKX0pfSw9CnJ1bm5pbmc6ZnVu Y3Rpb24oKXt2YXIgaj0zRFtdO3RoaXMuZWFjaChmdW5jdGlvbihrKXtpZighay5pblJlYWR5U3Rh dGUoKSl7aj0KLnB1c2goay5nZXQoImlkIikpfX0pO3JldHVybiBqfSxnZXRCeUhpZDpmdW5jdGlv bihqKXtyZXR1cm4gXy5maXJzdCh0aGlzLmZpPQpsdGVyKGZ1bmN0aW9uKGspe3JldHVybiBrLmdl dCgiaGlkIik9M0Q9M0Q9M0RqfSkpfSxnZXRWaXNpYmxlOmZ1bmN0aW9uKGosbSw9Cmwpe2w9M0Rs fHxbXTt2YXIgaz0zRG5ldyBhKHRoaXMuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBuLmlzVmlz aWJsZShqLG0pfT0KKSk7Xy5lYWNoKGwsZnVuY3Rpb24obil7aWYoIV8uaXNGdW5jdGlvbihuKSl7 cmV0dXJufWs9M0RuZXcgYShrLmZpbHRlcihuKSl9PQopO3JldHVybiBrfSxoYXZlRGV0YWlsczpm dW5jdGlvbigpe3JldHVybiB0aGlzLmFsbChmdW5jdGlvbihqKXtyZXR1cm4gai5oYXM9CkRldGFp bHMoKX0pfSxmZXRjaEFsbERldGFpbHM6ZnVuY3Rpb24oayl7az0zRGt8fHt9O3ZhciBqPTNEe2Rl dGFpbHM6ImFsbCJ9Oz0Kay5kYXRhPTNEKGsuZGF0YSk/KF8uZXh0ZW5kKGsuZGF0YSxqKSk6KGop O3JldHVybiB0aGlzLmZldGNoKGspfSxhamF4UXVldWU6PQpmdW5jdGlvbihtLGwpe3ZhciBrPTNE alF1ZXJ5LkRlZmVycmVkKCksaj0zRHRoaXMubGVuZ3RoLG89M0RbXTtpZighail7ay5yZXM9Cm9s dmUoW10pO3JldHVybiBrfXZhciBuPTNEdGhpcy5jaGFpbigpLnJldmVyc2UoKS5tYXAoZnVuY3Rp b24ocSxwKXtyZXR1cm4gZj0KdW5jdGlvbigpe3ZhciByPTNEbS5jYWxsKHEsbCk7ci5kb25lKGZ1 bmN0aW9uKHMpe2subm90aWZ5KHtjdXJyOnAsdG90YWw6aixyPQplc3BvbnNlOnMsbW9kZWw6cX0p fSk7ci5hbHdheXMoZnVuY3Rpb24ocyl7by5wdXNoKHMpO2lmKG4ubGVuZ3RoKXtuLnNoaWZ0KCk9 CigpfWVsc2V7ay5yZXNvbHZlKG8pfX0pfX0pLnZhbHVlKCk7bi5zaGlmdCgpKCk7cmV0dXJuIGt9 LG1hdGNoZXM6ZnVuY3Rpb24oaj0KKXtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oayl7cmV0 dXJuIGsubWF0Y2hlcyhqKX0pfSxzZXQ6ZnVuY3Rpb24obCxqKXt2PQphciBrPTNEdGhpcztsPTNE Xy5tYXAobCxmdW5jdGlvbihuKXt2YXIgbz0zRGsuZ2V0KG4uaWQpO2lmKCFvKXtyZXR1cm4gbn12 YXI9CiBtPTNEby50b0pTT04oKTtfLmV4dGVuZChtLG4pO3JldHVybiBtfSk7QmFja2JvbmUuQ29s bGVjdGlvbi5wcm90b3R5cGUuc2V0Lj0KY2FsbCh0aGlzLGwsail9LHRvU3RyaW5nOmZ1bmN0aW9u KCl7cmV0dXJuKFsiSERBQ29sbGVjdGlvbigiLFt0aGlzLmhpc3RvcnlJPQpkLHRoaXMubGVuZ3Ro XS5qb2luKCksIikiXS5qb2luKCIiKSl9fSk7cmV0dXJue0hpc3RvcnlEYXRhc2V0QXNzb2NpYXRp b246aSw9CkhEQUNvbGxlY3Rpb246YX19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpk aWZmIC1yIDgzNDZlYzRiYWEzOTkyZjRkYzAxNjFmMGZjNzlhMGJhODkzYzBhNjMgLXIgZGNjMGMx OTE0N2VhZDg2YzZlMzU3Yzc9CjM5ZTA1MTNhZGRmZTAyY2IyIHN0YXRpYy9zY3JpcHRzL3BhY2tl ZC9tdmMvaGlzdG9yeS9hbm5vdGF0ZWQtaGlzdG9yeS1wYW5lbD0KLmpzCi0tLSBhL3N0YXRpYy9z Y3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9hbm5vdGF0ZWQtaGlzdG9yeS1wYW5lbC5qcworKysg Yi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2hpc3RvcnkvYW5ub3RhdGVkLWhpc3RvcnktcGFu ZWwuanMKQEAgLTEsMSArMSwxIEBACi1kZWZpbmUoWyJtdmMvZGF0YXNldC9oZGEtbW9kZWwiLCJt dmMvZGF0YXNldC9oZGEtYmFzZSIsIm12Yy9oaXN0b3J5L3JlYWRvbj0KbHktaGlzdG9yeS1wYW5l bCJdLGZ1bmN0aW9uKGMsYSxiKXt2YXIgZD0zRGIuUmVhZE9ubHlIaXN0b3J5UGFuZWwuZXh0ZW5k KHtjPQpsYXNzTmFtZToiYW5ub3RhdGVkLWhpc3RvcnktcGFuZWwiLEhEQVZpZXdDbGFzczphLkhE QUJhc2VWaWV3LHJlbmRlck1vZGVsOmY9CnVuY3Rpb24oKXt0aGlzLiRlbC5hZGRDbGFzcyh0aGlz LmNsYXNzTmFtZSk7dmFyIGc9M0RiLlJlYWRPbmx5SGlzdG9yeVBhbmVsLj0KcHJvdG90eXBlLnJl bmRlck1vZGVsLmNhbGwodGhpcyksZT0zRHRoaXMuJGRhdGFzZXRzTGlzdChnKSxmPTNEJCgiPHRh YmxlLz4iPQopLmFkZENsYXNzKCJkYXRhc2V0cy1saXN0IGRhdGFzZXRzLXRhYmxlIik7Zi5hcHBl bmQoZS5jaGlsZHJlbigpKTtlLnJlcGxhY2U9CldpdGgoZik7Zy5maW5kKCIuaGlzdG9yeS1zdWJ0 aXRsZSIpLmFmdGVyKHRoaXMucmVuZGVySGlzdG9yeUFubm90YXRpb24oKSk7Zz0KLmZpbmQoIi5o aXN0b3J5LXNlYXJjaC1idG4iKS5oaWRlKCk7Zy5maW5kKCIuaGlzdG9yeS1jb250cm9scyIpLmFm dGVyKGcuZmluPQpkKCIuaGlzdG9yeS1zZWFyY2gtY29udHJvbHMiKS5zaG93KCkpO3JldHVybiBn fSxyZW5kZXJIaXN0b3J5QW5ub3RhdGlvbjpmdW49CmN0aW9uKCl7dmFyIGU9M0R0aGlzLm1vZGVs LmdldCgiYW5ub3RhdGlvbiIpO2lmKCFlKXtyZXR1cm4gbnVsbH1yZXR1cm4gJChbJz0KPGRpdiBj bGFzcz0zRCJoaXN0b3J5LWFubm90YXRpb24iPicsZSwiPC9kaXY+Il0uam9pbigiIikpfSxyZW5k ZXJIZGFzOmZ1bmN0PQppb24oZil7Zj0zRGZ8fHRoaXMuJGVsO3ZhciBlPTNEYi5SZWFkT25seUhp c3RvcnlQYW5lbC5wcm90b3R5cGUucmVuZGVySGRhcy49CmNhbGwodGhpcyxmKTt0aGlzLiRkYXRh c2V0c0xpc3QoZikucHJlcGVuZCgkKCI8dHIvPiIpLmFkZENsYXNzKCJoZWFkZXJzIikuYT0KcHBl bmQoWyQoIjx0aC8+IikudGV4dChfbCgiRGF0YXNldCIpKSwkKCI8dGgvPiIpLnRleHQoX2woIkFu bm90YXRpb24iKSldKSk7PQpyZXR1cm4gZX0sYXR0YWNoSGRhVmlldzpmdW5jdGlvbihoLGYpe2Y9 M0RmfHx0aGlzLiRlbDt2YXIgaT0zRF8uZmluZChoLmVsLmM9Cmxhc3NMaXN0LGZ1bmN0aW9uKGop e3JldHVybigvXnN0YXRlXC0vKS50ZXN0KGopfSksZT0zRGgubW9kZWwuZ2V0KCJhbm5vdGF0aT0K b24iKXx8IiIsZz0zRCQoIjx0ci8+IikuYWRkQ2xhc3MoImRhdGFzZXQtcm93IikuYXBwZW5kKFsk KCI8dGQvPiIpLmFkZENsYXNzPQooImRhdGFzZXQtY29udGFpbmVyIikuYXBwZW5kKGguJGVsKS5h ZGRDbGFzcyhpP2kucmVwbGFjZSgiLSIsIi1jb2xvci0iKToiIik9CiwkKCI8dGQvPiIpLmFkZENs YXNzKCJhZGRpdGlvbmFsLWluZm8iKS50ZXh0KGUpXSk7dGhpcy4kZGF0YXNldHNMaXN0KGYpLmFw cD0KZW5kKGcpfSxldmVudHM6Xy5leHRlbmQoXy5jbG9uZShiLlJlYWRPbmx5SGlzdG9yeVBhbmVs LnByb3RvdHlwZS5ldmVudHMpLHsiPQpjbGljayB0ciI6ZnVuY3Rpb24oZSl7JChlLmN1cnJlbnRU YXJnZXQpLmZpbmQoIi5kYXRhc2V0LXRpdGxlLWJhciIpLmNsaWNrKCk9Cn0sImNsaWNrIC5pY29u LWJ0biI6ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX19KSx0b1N0cmluZzpmdW5jdGlv bigpez0KcmV0dXJuIkFubm90YXRlZEhpc3RvcnlQYW5lbCgiKygodGhpcy5tb2RlbCk/KHRoaXMu bW9kZWwuZ2V0KCJuYW1lIikpOigiIikpPQorIikifX0pO3JldHVybntBbm5vdGF0ZWRIaXN0b3J5 UGFuZWw6ZH19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkZWZpbmUoWyJtdmMvZGF0 YXNldC9oZGEtbW9kZWwiLCJtdmMvZGF0YXNldC9oZGEtYmFzZSIsIm12Yy9oaXN0b3J5L3JlYWRv bj0KbHktaGlzdG9yeS1wYW5lbCIsInV0aWxzL2xvY2FsaXphdGlvbiJdLGZ1bmN0aW9uKGQsYSxi LGMpe3ZhciBlPTNEYi5SZWFkT25sPQp5SGlzdG9yeVBhbmVsLmV4dGVuZCh7Y2xhc3NOYW1lOiJh bm5vdGF0ZWQtaGlzdG9yeS1wYW5lbCIsSERBVmlld0NsYXNzOmEuSEQ9CkFCYXNlVmlldyxyZW5k ZXJNb2RlbDpmdW5jdGlvbigpe3RoaXMuJGVsLmFkZENsYXNzKHRoaXMuY2xhc3NOYW1lKTt2YXIg aD0zRD0KYi5SZWFkT25seUhpc3RvcnlQYW5lbC5wcm90b3R5cGUucmVuZGVyTW9kZWwuY2FsbCh0 aGlzKSxmPTNEdGhpcy4kZGF0YXNldHNMPQppc3QoaCksZz0zRCQoIjx0YWJsZS8+IikuYWRkQ2xh c3MoImRhdGFzZXRzLWxpc3QgZGF0YXNldHMtdGFibGUiKTtnLmFwcGVuZCg9CmYuY2hpbGRyZW4o KSk7Zi5yZXBsYWNlV2l0aChnKTtoLmZpbmQoIi5oaXN0b3J5LXN1YnRpdGxlIikuYWZ0ZXIodGhp cy5yZW5kZT0Kckhpc3RvcnlBbm5vdGF0aW9uKCkpO2guZmluZCgiLmhpc3Rvcnktc2VhcmNoLWJ0 biIpLmhpZGUoKTtoLmZpbmQoIi5oaXN0b3J5PQotY29udHJvbHMiKS5hZnRlcihoLmZpbmQoIi5o aXN0b3J5LXNlYXJjaC1jb250cm9scyIpLnNob3coKSk7cmV0dXJuIGh9LHJlbmQ9CmVySGlzdG9y eUFubm90YXRpb246ZnVuY3Rpb24oKXt2YXIgZj0zRHRoaXMubW9kZWwuZ2V0KCJhbm5vdGF0aW9u Iik7aWYoIWYpez0KcmV0dXJuIG51bGx9cmV0dXJuICQoWyc8ZGl2IGNsYXNzPTNEImhpc3Rvcnkt YW5ub3RhdGlvbiI+JyxmLCI8L2Rpdj4iXS5qb2luPQooIiIpKX0scmVuZGVySGRhczpmdW5jdGlv bihnKXtnPTNEZ3x8dGhpcy4kZWw7dmFyIGY9M0RiLlJlYWRPbmx5SGlzdG9yeVBhbmU9CmwucHJv dG90eXBlLnJlbmRlckhkYXMuY2FsbCh0aGlzLGcpO3RoaXMuJGRhdGFzZXRzTGlzdChnKS5wcmVw ZW5kKCQoIjx0ci8+Ij0KKS5hZGRDbGFzcygiaGVhZGVycyIpLmFwcGVuZChbJCgiPHRoLz4iKS50 ZXh0KGMoIkRhdGFzZXQiKSksJCgiPHRoLz4iKS50ZXh0PQooYygiQW5ub3RhdGlvbiIpKV0pKTty ZXR1cm4gZn0sYXR0YWNoSGRhVmlldzpmdW5jdGlvbihpLGcpe2c9M0RnfHx0aGlzLiRlbDs9CnZh ciBqPTNEXy5maW5kKGkuZWwuY2xhc3NMaXN0LGZ1bmN0aW9uKGspe3JldHVybigvXnN0YXRlXC0v KS50ZXN0KGspfSksZj0zRD0KaS5tb2RlbC5nZXQoImFubm90YXRpb24iKXx8IiIsaD0zRCQoIjx0 ci8+IikuYWRkQ2xhc3MoImRhdGFzZXQtcm93IikuYXBwZW5kPQooWyQoIjx0ZC8+IikuYWRkQ2xh c3MoImRhdGFzZXQtY29udGFpbmVyIikuYXBwZW5kKGkuJGVsKS5hZGRDbGFzcyhqP2oucmVwbGE9 CmNlKCItIiwiLWNvbG9yLSIpOiIiKSwkKCI8dGQvPiIpLmFkZENsYXNzKCJhZGRpdGlvbmFsLWlu Zm8iKS50ZXh0KGYpXSk7dGhpcz0KLiRkYXRhc2V0c0xpc3QoZykuYXBwZW5kKGgpfSxldmVudHM6 Xy5leHRlbmQoXy5jbG9uZShiLlJlYWRPbmx5SGlzdG9yeVBhbmVsPQoucHJvdG90eXBlLmV2ZW50 cykseyJjbGljayB0ciI6ZnVuY3Rpb24oZil7JChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5kYXRh c2U9CnQtdGl0bGUtYmFyIikuY2xpY2soKX0sImNsaWNrIC5pY29uLWJ0biI6ZnVuY3Rpb24oZil7 Zi5zdG9wUHJvcGFnYXRpb24oKX19KT0KLHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkFubm90 YXRlZEhpc3RvcnlQYW5lbCgiKygodGhpcy5tb2RlbCk/KHRoaXMubW9kPQplbC5nZXQoIm5hbWUi KSk6KCIiKSkrIikifX0pO3JldHVybntBbm5vdGF0ZWRIaXN0b3J5UGFuZWw6ZX19KTsKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDgzNDZlYzRiYWEzOTkyZjRkYzAxNjFmMGZj NzlhMGJhODkzYzBhNjMgLXIgZGNjMGMxOTE0N2VhZDg2YzZlMzU3Yzc9CjM5ZTA1MTNhZGRmZTAy Y2IyIHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9jdXJyZW50LWhpc3RvcnktcGFu ZWwuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2N1cnJlbnQtaGlz dG9yeS1wYW5lbC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2hpc3RvcnkvY3Vy cmVudC1oaXN0b3J5LXBhbmVsLmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFsibXZjL2RhdGFz ZXQvaGRhLWVkaXQiLCJtdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVsIiwibXZjL2Jhc2UtbXZjIl09 CixmdW5jdGlvbihiLGYsYyl7dmFyIGQ9M0RjLlNlc3Npb25TdG9yYWdlTW9kZWwuZXh0ZW5kKHtk ZWZhdWx0czp7c2VhcmNoaW5nOj0KZmFsc2UsdGFnc0VkaXRvclNob3duOmZhbHNlLGFubm90YXRp b25FZGl0b3JTaG93bjpmYWxzZX0sdG9TdHJpbmc6ZnVuY3Rpb24oPQope3JldHVybiJIaXN0b3J5 UGFuZWxQcmVmcygiK0pTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpKyIpIn19KTtkLnN0b3Jh Z2U9CktleT0zRGZ1bmN0aW9uIGUoKXtyZXR1cm4oImhpc3RvcnktcGFuZWwiKX07dmFyIGE9M0Rm Lkhpc3RvcnlQYW5lbC5leHRlbmQoez0KSERBVmlld0NsYXNzOmIuSERBRWRpdFZpZXcsZW1wdHlN c2c6X2woIlRoaXMgaGlzdG9yeSBpcyBlbXB0eS4gQ2xpY2sgJ0dldCBEPQphdGEnIG9uIHRoZSBs ZWZ0IHRvb2wgbWVudSB0byBzdGFydCIpLG5vbmVGb3VuZE1zZzpfbCgiTm8gbWF0Y2hpbmcgZGF0 YXNldHM9CiBmb3VuZCIpLGluaXRpYWxpemU6ZnVuY3Rpb24oZyl7Zz0zRGd8fHt9O3RoaXMucHJl ZmVyZW5jZXM9M0RuZXcgZChfLmV4dGVuZD0KKHtpZDpkLnN0b3JhZ2VLZXkoKX0sXy5waWNrKGcs Xy5rZXlzKGQucHJvdG90eXBlLmRlZmF1bHRzKSkpKTtmLkhpc3RvcnlQYW5lPQpsLnByb3RvdHlw ZS5pbml0aWFsaXplLmNhbGwodGhpcyxnKX0sbG9hZEN1cnJlbnRIaXN0b3J5OmZ1bmN0aW9uKGgp e3ZhciBnPQo9M0R0aGlzO3JldHVybiB0aGlzLmxvYWRIaXN0b3J5V2l0aEhEQURldGFpbHMoImN1 cnJlbnQiLGgpLnRoZW4oZnVuY3Rpb24oaiw9Cmkpe2cudHJpZ2dlcigiY3VycmVudC1oaXN0b3J5 IixnKX0pfSxzd2l0Y2hUb0hpc3Rvcnk6ZnVuY3Rpb24oaixpKXt2YXIgZz0zRD0KdGhpcyxoPTNE ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5LmFqYXgoe3VybDpnYWxheHlfY29uZmlnLnJvb3QrImFw aS9oaXN0b3JpPQplcy8iK2orIi9zZXRfYXNfY3VycmVudCIsbWV0aG9kOiJQVVQifSl9O3JldHVy biB0aGlzLmxvYWRIaXN0b3J5V2l0aEhEQURldGE9CmlscyhqLGksaCkudGhlbihmdW5jdGlvbihs LGspe2cudHJpZ2dlcigic3dpdGNoZWQtaGlzdG9yeSIsZyl9KX0sY3JlYXRlTmV3SD0KaXN0b3J5 OmZ1bmN0aW9uKGkpe2lmKCFHYWxheHl8fCFHYWxheHkuY3VyclVzZXJ8fEdhbGF4eS5jdXJyVXNl ci5pc0Fub255bW91PQpzKCkpe3RoaXMuZGlzcGxheU1lc3NhZ2UoImVycm9yIixfbCgiWW91IG11 c3QgYmUgbG9nZ2VkIGluIHRvIGNyZWF0ZSBoaXN0b3I9CmllcyIpKTtyZXR1cm4gJC53aGVuKCl9 dmFyIGc9M0R0aGlzLGg9M0RmdW5jdGlvbigpe3JldHVybiBqUXVlcnkucG9zdChnYWxheD0KeV9j b25maWcucm9vdCsiYXBpL2hpc3RvcmllcyIse2N1cnJlbnQ6dHJ1ZX0pfTtyZXR1cm4gdGhpcy5s b2FkSGlzdG9yeSh1bmRlPQpmaW5lZCxpLGgpLnRoZW4oZnVuY3Rpb24oayxqKXtnLnRyaWdnZXIo Im5ldy1oaXN0b3J5IixnKX0pfSxzZXRNb2RlbDpmdW5jdGk9Cm9uKGgsZyxpKXtmLkhpc3RvcnlQ YW5lbC5wcm90b3R5cGUuc2V0TW9kZWwuY2FsbCh0aGlzLGgsZyxpKTtpZih0aGlzLm1vZGVsKT0K e3RoaXMubG9nKCJjaGVja2luZyBmb3IgdXBkYXRlcyIpO3RoaXMubW9kZWwuY2hlY2tGb3JVcGRh dGVzKCl9cmV0dXJuIHRoaXN9PQosX3NldFVwTW9kZWxFdmVudEhhbmRsZXJzOmZ1bmN0aW9uKCl7 Zi5IaXN0b3J5UGFuZWwucHJvdG90eXBlLl9zZXRVcE1vZGVsRXY9CmVudEhhbmRsZXJzLmNhbGwo dGhpcyk7aWYoR2FsYXh5JiZHYWxheHkucXVvdGFNZXRlcil7dGhpcy5saXN0ZW5Ubyh0aGlzLm1v ZD0KZWwsImNoYW5nZTpuaWNlX3NpemUiLGZ1bmN0aW9uKCl7R2FsYXh5LnF1b3RhTWV0ZXIudXBk YXRlKCl9KX10aGlzLm1vZGVsLmhkPQphcy5vbigic3RhdGU6cmVhZHkiLGZ1bmN0aW9uKGgsaSxn KXtpZigoIWguZ2V0KCJ2aXNpYmxlIikpJiYoIXRoaXMuc3RvcmFnZS49CmdldCgic2hvd19oaWRk ZW4iKSkpe3RoaXMucmVtb3ZlSGRhVmlldyh0aGlzLmhkYVZpZXdzW2guaWRdKX19LHRoaXMpfSxy ZW5kZT0KcjpmdW5jdGlvbihpLGope3RoaXMubG9nKCJyZW5kZXI6IixpLGopO2k9M0QoaT0zRD0z RD0zRHVuZGVmaW5lZCk/KHRoaXMuZnhTPQpwZWVkKTooaSk7dmFyIGc9M0R0aGlzLGg7aWYodGhp cy5tb2RlbCl7aD0zRHRoaXMucmVuZGVyTW9kZWwoKX1lbHNle2g9M0R0aGk9CnMucmVuZGVyV2l0 aG91dE1vZGVsKCl9JChnKS5xdWV1ZSgiZngiLFtmdW5jdGlvbihrKXtpZihpJiZnLiRlbC5pcygi OnZpc2libD0KZSIpKXtnLiRlbC5mYWRlT3V0KGksayl9ZWxzZXtrKCl9fSxmdW5jdGlvbihrKXtn LiRlbC5lbXB0eSgpO2lmKGgpe2cuJGVsLmFwPQpwZW5kKGguY2hpbGRyZW4oKSk7Zy5yZW5kZXJC YXNlZE9uUHJlZnMoKX1rKCl9LGZ1bmN0aW9uKGspe2lmKGkmJiFnLiRlbC5pcyg9CiI6dmlzaWJs ZSIpKXtnLiRlbC5mYWRlSW4oaSxrKX1lbHNle2soKX19LGZ1bmN0aW9uKGspe2lmKGope2ouY2Fs bCh0aGlzKX1nLj0KdHJpZ2dlcigicmVuZGVyZWQiLHRoaXMpO2soKX1dKTtyZXR1cm4gdGhpc30s cmVuZGVyQmFzZWRPblByZWZzOmZ1bmN0aW9uKCl7PQppZih0aGlzLnByZWZlcmVuY2VzLmdldCgi c2VhcmNoaW5nIikpe3RoaXMudG9nZ2xlU2VhcmNoQ29udHJvbHMoMCx0cnVlKX19LF89CnJlbmRl ckVtcHR5TXNnOmZ1bmN0aW9uKGkpe3ZhciBoPTNEdGhpcyxnPTNEaC4kZW1wdHlNZXNzYWdlKGkp LGo9M0QkKCIudG9vbD0KTWVudUNvbnRhaW5lciIpO2lmKChfLmlzRW1wdHkoaC5oZGFWaWV3cykm JiFoLnNlYXJjaEZvcikmJihHYWxheHkmJkdhbGF4eS51PQpwbG9hZCYmai5zaXplKCkpKXtnLmVt cHR5KCk7Zy5odG1sKFtfbCgiVGhpcyBoaXN0b3J5IGlzIGVtcHR5LiAiKSxfbCgiWW91IGM9CmFu ICIpLCc8YSBjbGFzcz0zRCJ1cGxvYWRlci1saW5rIiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgw KSI+JyxfbCgibG9hZCB5bz0KdXIgb3duIGRhdGEiKSwiPC9hPiIsX2woIiBvciAiKSwnPGEgY2xh c3M9M0QiZ2V0LWRhdGEtbGluayIgaHJlZj0zRCJqYXZhc2NyPQppcHQ6dm9pZCgwKSI+JyxfbCgi Z2V0IGRhdGEgZnJvbSBhbiBleHRlcm5hbCBzb3VyY2UiKSwiPC9hPiJdLmpvaW4oIiIpKTtnLmY9 CmluZCgiLnVwbG9hZGVyLWxpbmsiKS5jbGljayhmdW5jdGlvbihrKXtHYWxheHkudXBsb2FkLl9l dmVudFNob3coayl9KTtnLmZpbj0KZCgiLmdldC1kYXRhLWxpbmsiKS5jbGljayhmdW5jdGlvbihr KXtqLnBhcmVudCgpLnNjcm9sbFRvcCgwKTtqLmZpbmQoJ3NwYW46PQpjb250YWlucygiR2V0IERh dGEiKScpLmNsaWNrKCl9KTtnLnNob3coKX1lbHNle2YuSGlzdG9yeVBhbmVsLnByb3RvdHlwZS5f cmU9Cm5kZXJFbXB0eU1zZy5jYWxsKHRoaXMsaSl9cmV0dXJuIHRoaXN9LHRvZ2dsZVNlYXJjaENv bnRyb2xzOmZ1bmN0aW9uKGgsZyl7dj0KYXIgaT0zRGYuSGlzdG9yeVBhbmVsLnByb3RvdHlwZS50 b2dnbGVTZWFyY2hDb250cm9scy5jYWxsKHRoaXMsaCxnKTt0aGlzLnByPQplZmVyZW5jZXMuc2V0 KCJzZWFyY2hpbmciLGkpfSxfcmVuZGVyVGFnczpmdW5jdGlvbihnKXt2YXIgaD0zRHRoaXM7Zi5I aXN0b3I9CnlQYW5lbC5wcm90b3R5cGUuX3JlbmRlclRhZ3MuY2FsbCh0aGlzLGcpO2lmKHRoaXMu cHJlZmVyZW5jZXMuZ2V0KCJ0YWdzRWRpdD0Kb3JTaG93biIpKXt0aGlzLnRhZ3NFZGl0b3IudG9n Z2xlKHRydWUpfXRoaXMudGFnc0VkaXRvci5vbigiaGlkZGVuVW50aWxBY3RpPQp2YXRlZDpzaG93 biBoaWRkZW5VbnRpbEFjdGl2YXRlZDpoaWRkZW4iLGZ1bmN0aW9uKGkpe2gucHJlZmVyZW5jZXMu c2V0KCJ0YWc9CnNFZGl0b3JTaG93biIsaS5oaWRkZW4pfSl9LF9yZW5kZXJBbm5vdGF0aW9uOmZ1 bmN0aW9uKGcpe3ZhciBoPTNEdGhpcztmLkhpcz0KdG9yeVBhbmVsLnByb3RvdHlwZS5fcmVuZGVy QW5ub3RhdGlvbi5jYWxsKHRoaXMsZyk7aWYodGhpcy5wcmVmZXJlbmNlcy5nZXQoPQoiYW5ub3Rh dGlvbkVkaXRvclNob3duIikpe3RoaXMuYW5ub3RhdGlvbkVkaXRvci50b2dnbGUodHJ1ZSl9dGhp cy5hbm5vdGF0aW89Cm5FZGl0b3Iub24oImhpZGRlblVudGlsQWN0aXZhdGVkOnNob3duIGhpZGRl blVudGlsQWN0aXZhdGVkOmhpZGRlbiIsZnVuY3Rpbz0KbihpKXtoLnByZWZlcmVuY2VzLnNldCgi YW5ub3RhdGlvbkVkaXRvclNob3duIixpLmhpZGRlbil9KX0sY29ubmVjdFRvUXVvdGFNPQpldGVy OmZ1bmN0aW9uKGcpe2lmKCFnKXtyZXR1cm4gdGhpc310aGlzLmxpc3RlblRvKGcsInF1b3RhOm92 ZXIiLHRoaXMuc2hvd1E9CnVvdGFNZXNzYWdlKTt0aGlzLmxpc3RlblRvKGcsInF1b3RhOnVuZGVy Iix0aGlzLmhpZGVRdW90YU1lc3NhZ2UpO3RoaXMub24oIj0KcmVuZGVyZWQgcmVuZGVyZWQ6aW5p dGlhbCIsZnVuY3Rpb24oKXtpZihnJiZnLmlzT3ZlclF1b3RhKCkpe3RoaXMuc2hvd1F1b3RhPQpN ZXNzYWdlKCl9fSk7cmV0dXJuIHRoaXN9LHNob3dRdW90YU1lc3NhZ2U6ZnVuY3Rpb24oKXt2YXIg Zz0zRHRoaXMuJGVsLmZpbmQ9CigiLnF1b3RhLW1lc3NhZ2UiKTtpZihnLmlzKCI6aGlkZGVuIikp e2cuc2xpZGVEb3duKHRoaXMuZnhTcGVlZCl9fSxoaWRlUXVvdD0KYU1lc3NhZ2U6ZnVuY3Rpb24o KXt2YXIgZz0zRHRoaXMuJGVsLmZpbmQoIi5xdW90YS1tZXNzYWdlIik7aWYoIWcuaXMoIjpoaWRk PQplbiIpKXtnLnNsaWRlVXAodGhpcy5meFNwZWVkKX19LGNvbm5lY3RUb09wdGlvbnNNZW51OmZ1 bmN0aW9uKGcpe2lmKCFnKXtyZXQ9CnVybiB0aGlzfXRoaXMub24oIm5ldy1zdG9yYWdlIixmdW5j dGlvbihpLGgpe2lmKGcmJmkpe2cuZmluZEl0ZW1CeUh0bWwoX2woIj0KSW5jbHVkZSBEZWxldGVk IERhdGFzZXRzIikpLmNoZWNrZWQ9M0RpLmdldCgic2hvd19kZWxldGVkIik7Zy5maW5kSXRlbUJ5 SHRtPQpsKF9sKCJJbmNsdWRlIEhpZGRlbiBEYXRhc2V0cyIpKS5jaGVja2VkPTNEaS5nZXQoInNo b3dfaGlkZGVuIil9fSk7cmV0dXJuIHQ9Cmhpc30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4i Q3VycmVudEhpc3RvcnlQYW5lbCgiKygodGhpcy5tb2RlbCk/KHRoaXMubT0Kb2RlbC5nZXQoIm5h bWUiKSk6KCIiKSkrIikifX0pO3JldHVybntDdXJyZW50SGlzdG9yeVBhbmVsOmF9fSk7ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFsibXZjL2RhdGFzZXQvaGRhLWVkaXQiLCJt dmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVsIiwibXZjL2Jhc2UtbXZjIiw9CiJ1dGlscy9sb2NhbGl6 YXRpb24iXSxmdW5jdGlvbihiLGcsYyxlKXt2YXIgZD0zRGMuU2Vzc2lvblN0b3JhZ2VNb2RlbC5l eHRlbj0KZCh7ZGVmYXVsdHM6e3NlYXJjaGluZzpmYWxzZSx0YWdzRWRpdG9yU2hvd246ZmFsc2Us YW5ub3RhdGlvbkVkaXRvclNob3duOmZhPQpsc2V9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJu Ikhpc3RvcnlQYW5lbFByZWZzKCIrSlNPTi5zdHJpbmdpZnkodGhpcy50b0o9ClNPTigpKSsiKSJ9 fSk7ZC5zdG9yYWdlS2V5PTNEZnVuY3Rpb24gZigpe3JldHVybigiaGlzdG9yeS1wYW5lbCIpfTt2 YXIgYT0zRD0KZy5IaXN0b3J5UGFuZWwuZXh0ZW5kKHtIREFWaWV3Q2xhc3M6Yi5IREFFZGl0Vmll dyxlbXB0eU1zZzplKCJUaGlzIGhpc3RvcnkgPQppcyBlbXB0eS4gQ2xpY2sgJ0dldCBEYXRhJyBv biB0aGUgbGVmdCB0b29sIG1lbnUgdG8gc3RhcnQiKSxub25lRm91bmRNc2c6ZSg9CiJObyBtYXRj aGluZyBkYXRhc2V0cyBmb3VuZCIpLGluaXRpYWxpemU6ZnVuY3Rpb24oaCl7aD0zRGh8fHt9O3Ro aXMucHJlZmVyZT0KbmNlcz0zRG5ldyBkKF8uZXh0ZW5kKHtpZDpkLnN0b3JhZ2VLZXkoKX0sXy5w aWNrKGgsXy5rZXlzKGQucHJvdG90eXBlLmRlZmF1PQpsdHMpKSkpO2cuSGlzdG9yeVBhbmVsLnBy b3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxoKX0sbG9hZEN1cnJlbnRIaXN0b3I9Cnk6ZnVu Y3Rpb24oaSl7dmFyIGg9M0R0aGlzO3JldHVybiB0aGlzLmxvYWRIaXN0b3J5V2l0aEhEQURldGFp bHMoImN1cnJlbnQiLD0KaSkudGhlbihmdW5jdGlvbihrLGope2gudHJpZ2dlcigiY3VycmVudC1o aXN0b3J5IixoKX0pfSxzd2l0Y2hUb0hpc3Rvcnk6ZnVuPQpjdGlvbihrLGope3ZhciBoPTNEdGhp cyxpPTNEZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5LmFqYXgoe3VybDpnYWxheHlfY29uZmk9Cmcu cm9vdCsiYXBpL2hpc3Rvcmllcy8iK2srIi9zZXRfYXNfY3VycmVudCIsbWV0aG9kOiJQVVQifSl9 O3JldHVybiB0aGlzLmxvYT0KZEhpc3RvcnlXaXRoSERBRGV0YWlscyhrLGosaSkudGhlbihmdW5j dGlvbihtLGwpe2gudHJpZ2dlcigic3dpdGNoZWQtaGlzdG9yPQp5IixoKX0pfSxjcmVhdGVOZXdI aXN0b3J5OmZ1bmN0aW9uKGope2lmKCFHYWxheHl8fCFHYWxheHkuY3VyclVzZXJ8fEdhbGF4eS49 CmN1cnJVc2VyLmlzQW5vbnltb3VzKCkpe3RoaXMuZGlzcGxheU1lc3NhZ2UoImVycm9yIixlKCJZ b3UgbXVzdCBiZSBsb2dnZWQgaT0KbiB0byBjcmVhdGUgaGlzdG9yaWVzIikpO3JldHVybiAkLndo ZW4oKX12YXIgaD0zRHRoaXMsaT0zRGZ1bmN0aW9uKCl7cmV0dXJuPQogalF1ZXJ5LnBvc3QoZ2Fs YXh5X2NvbmZpZy5yb290KyJhcGkvaGlzdG9yaWVzIix7Y3VycmVudDp0cnVlfSl9O3JldHVybiB0 aGk9CnMubG9hZEhpc3RvcnkodW5kZWZpbmVkLGosaSkudGhlbihmdW5jdGlvbihsLGspe2gudHJp Z2dlcigibmV3LWhpc3RvcnkiLGgpfT0KKX0sc2V0TW9kZWw6ZnVuY3Rpb24oaSxoLGope2cuSGlz dG9yeVBhbmVsLnByb3RvdHlwZS5zZXRNb2RlbC5jYWxsKHRoaXMsaSxoPQosaik7aWYodGhpcy5t b2RlbCl7dGhpcy5sb2coImNoZWNraW5nIGZvciB1cGRhdGVzIik7dGhpcy5tb2RlbC5jaGVja0Zv clVwZGE9CnRlcygpfXJldHVybiB0aGlzfSxfc2V0VXBNb2RlbEV2ZW50SGFuZGxlcnM6ZnVuY3Rp b24oKXtnLkhpc3RvcnlQYW5lbC5wcm90bz0KdHlwZS5fc2V0VXBNb2RlbEV2ZW50SGFuZGxlcnMu Y2FsbCh0aGlzKTtpZihHYWxheHkmJkdhbGF4eS5xdW90YU1ldGVyKXt0aGlzPQoubGlzdGVuVG8o dGhpcy5tb2RlbCwiY2hhbmdlOm5pY2Vfc2l6ZSIsZnVuY3Rpb24oKXtHYWxheHkucXVvdGFNZXRl ci51cGRhdGU9CigpfSl9dGhpcy5tb2RlbC5oZGFzLm9uKCJzdGF0ZTpyZWFkeSIsZnVuY3Rpb24o aSxqLGgpe2lmKCghaS5nZXQoInZpc2libGUiKT0KKSYmKCF0aGlzLnN0b3JhZ2UuZ2V0KCJzaG93 X2hpZGRlbiIpKSl7dGhpcy5yZW1vdmVIZGFWaWV3KHRoaXMuaGRhVmlld3NbaS5pPQpkXSl9fSx0 aGlzKX0scmVuZGVyOmZ1bmN0aW9uKGosayl7dGhpcy5sb2coInJlbmRlcjoiLGosayk7aj0zRChq PTNEPTNEPTNEdW49CmRlZmluZWQpPyh0aGlzLmZ4U3BlZWQpOihqKTt2YXIgaD0zRHRoaXMsaTtp Zih0aGlzLm1vZGVsKXtpPTNEdGhpcy5yZW5kZXJNbz0KZGVsKCl9ZWxzZXtpPTNEdGhpcy5yZW5k ZXJXaXRob3V0TW9kZWwoKX0kKGgpLnF1ZXVlKCJmeCIsW2Z1bmN0aW9uKGwpe2lmKGomPQomaC4k ZWwuaXMoIjp2aXNpYmxlIikpe2guJGVsLmZhZGVPdXQoaixsKX1lbHNle2woKX19LGZ1bmN0aW9u KGwpe2guJGVsLmVtcHQ9CnkoKTtpZihpKXtoLiRlbC5hcHBlbmQoaS5jaGlsZHJlbigpKTtoLnJl bmRlckJhc2VkT25QcmVmcygpfWwoKX0sZnVuY3Rpb24obD0KKXtpZihqJiYhaC4kZWwuaXMoIjp2 aXNpYmxlIikpe2guJGVsLmZhZGVJbihqLGwpfWVsc2V7bCgpfX0sZnVuY3Rpb24obCl7aWYoPQpr KXtrLmNhbGwodGhpcyl9aC50cmlnZ2VyKCJyZW5kZXJlZCIsdGhpcyk7bCgpfV0pO3JldHVybiB0 aGlzfSxyZW5kZXJCYXNlZE89Cm5QcmVmczpmdW5jdGlvbigpe2lmKHRoaXMucHJlZmVyZW5jZXMu Z2V0KCJzZWFyY2hpbmciKSl7dGhpcy50b2dnbGVTZWFyY2hDbz0KbnRyb2xzKDAsdHJ1ZSl9fSxf cmVuZGVyRW1wdHlNc2c6ZnVuY3Rpb24oail7dmFyIGk9M0R0aGlzLGg9M0RpLiRlbXB0eU1lc3Nh PQpnZShqKSxrPTNEJCgiLnRvb2xNZW51Q29udGFpbmVyIik7aWYoKF8uaXNFbXB0eShpLmhkYVZp ZXdzKSYmIWkuc2VhcmNoRm9yKSY9CiYoR2FsYXh5JiZHYWxheHkudXBsb2FkJiZrLnNpemUoKSkp e2guZW1wdHkoKTtoLmh0bWwoW2UoIlRoaXMgaGlzdG9yeSBpcyBlbT0KcHR5LiAiKSxlKCJZb3Ug Y2FuICIpLCc8YSBjbGFzcz0zRCJ1cGxvYWRlci1saW5rIiBocmVmPTNEImphdmFzY3JpcHQ6dm9p ZCgwPQopIj4nLGUoImxvYWQgeW91ciBvd24gZGF0YSIpLCI8L2E+IixlKCIgb3IgIiksJzxhIGNs YXNzPTNEImdldC1kYXRhLWxpbmsiIGg9CnJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCkiPicsZSgi Z2V0IGRhdGEgZnJvbSBhbiBleHRlcm5hbCBzb3VyY2UiKSwiPC9hPiJdLj0Kam9pbigiIikpO2gu ZmluZCgiLnVwbG9hZGVyLWxpbmsiKS5jbGljayhmdW5jdGlvbihsKXtHYWxheHkudXBsb2FkLl9l dmVudFNoPQpvdyhsKX0pO2guZmluZCgiLmdldC1kYXRhLWxpbmsiKS5jbGljayhmdW5jdGlvbihs KXtrLnBhcmVudCgpLnNjcm9sbFRvcCgwKTs9CmsuZmluZCgnc3Bhbjpjb250YWlucygiR2V0IERh dGEiKScpLmNsaWNrKCl9KTtoLnNob3coKX1lbHNle2cuSGlzdG9yeVBhbmVsLj0KcHJvdG90eXBl Ll9yZW5kZXJFbXB0eU1zZy5jYWxsKHRoaXMsail9cmV0dXJuIHRoaXN9LHRvZ2dsZVNlYXJjaENv bnRyb2xzOmZ1PQpuY3Rpb24oaSxoKXt2YXIgaj0zRGcuSGlzdG9yeVBhbmVsLnByb3RvdHlwZS50 b2dnbGVTZWFyY2hDb250cm9scy5jYWxsKHRoaXM9CixpLGgpO3RoaXMucHJlZmVyZW5jZXMuc2V0 KCJzZWFyY2hpbmciLGopfSxfcmVuZGVyVGFnczpmdW5jdGlvbihoKXt2YXIgaT0zRD0KdGhpcztn Lkhpc3RvcnlQYW5lbC5wcm90b3R5cGUuX3JlbmRlclRhZ3MuY2FsbCh0aGlzLGgpO2lmKHRoaXMu cHJlZmVyZW5jZXMuPQpnZXQoInRhZ3NFZGl0b3JTaG93biIpKXt0aGlzLnRhZ3NFZGl0b3IudG9n Z2xlKHRydWUpfXRoaXMudGFnc0VkaXRvci5vbigiaGk9CmRkZW5VbnRpbEFjdGl2YXRlZDpzaG93 biBoaWRkZW5VbnRpbEFjdGl2YXRlZDpoaWRkZW4iLGZ1bmN0aW9uKGope2kucHJlZmVyZT0KbmNl cy5zZXQoInRhZ3NFZGl0b3JTaG93biIsai5oaWRkZW4pfSl9LF9yZW5kZXJBbm5vdGF0aW9uOmZ1 bmN0aW9uKGgpe3ZhciBpPQo9M0R0aGlzO2cuSGlzdG9yeVBhbmVsLnByb3RvdHlwZS5fcmVuZGVy QW5ub3RhdGlvbi5jYWxsKHRoaXMsaCk7aWYodGhpcy5wcmU9CmZlcmVuY2VzLmdldCgiYW5ub3Rh dGlvbkVkaXRvclNob3duIikpe3RoaXMuYW5ub3RhdGlvbkVkaXRvci50b2dnbGUodHJ1ZSl9dD0K aGlzLmFubm90YXRpb25FZGl0b3Iub24oImhpZGRlblVudGlsQWN0aXZhdGVkOnNob3duIGhpZGRl blVudGlsQWN0aXZhdGVkOmhpPQpkZGVuIixmdW5jdGlvbihqKXtpLnByZWZlcmVuY2VzLnNldCgi YW5ub3RhdGlvbkVkaXRvclNob3duIixqLmhpZGRlbil9KX0sY289Cm5uZWN0VG9RdW90YU1ldGVy OmZ1bmN0aW9uKGgpe2lmKCFoKXtyZXR1cm4gdGhpc310aGlzLmxpc3RlblRvKGgsInF1b3RhOm92 ZT0KciIsdGhpcy5zaG93UXVvdGFNZXNzYWdlKTt0aGlzLmxpc3RlblRvKGgsInF1b3RhOnVuZGVy Iix0aGlzLmhpZGVRdW90YU1lc3NhPQpnZSk7dGhpcy5vbigicmVuZGVyZWQgcmVuZGVyZWQ6aW5p dGlhbCIsZnVuY3Rpb24oKXtpZihoJiZoLmlzT3ZlclF1b3RhKCkpe3Q9Cmhpcy5zaG93UXVvdGFN ZXNzYWdlKCl9fSk7cmV0dXJuIHRoaXN9LHNob3dRdW90YU1lc3NhZ2U6ZnVuY3Rpb24oKXt2YXIg aD0zRD0KdGhpcy4kZWwuZmluZCgiLnF1b3RhLW1lc3NhZ2UiKTtpZihoLmlzKCI6aGlkZGVuIikp e2guc2xpZGVEb3duKHRoaXMuZnhTcGVlPQpkKX19LGhpZGVRdW90YU1lc3NhZ2U6ZnVuY3Rpb24o KXt2YXIgaD0zRHRoaXMuJGVsLmZpbmQoIi5xdW90YS1tZXNzYWdlIik7aWY9CighaC5pcygiOmhp ZGRlbiIpKXtoLnNsaWRlVXAodGhpcy5meFNwZWVkKX19LGNvbm5lY3RUb09wdGlvbnNNZW51OmZ1 bmN0aW9uKD0KaCl7aWYoIWgpe3JldHVybiB0aGlzfXRoaXMub24oIm5ldy1zdG9yYWdlIixmdW5j dGlvbihqLGkpe2lmKGgmJmope2guZmluZEl0PQplbUJ5SHRtbChlKCJJbmNsdWRlIERlbGV0ZWQg RGF0YXNldHMiKSkuY2hlY2tlZD0zRGouZ2V0KCJzaG93X2RlbGV0ZWQiKTtoLmY9CmluZEl0ZW1C eUh0bWwoZSgiSW5jbHVkZSBIaWRkZW4gRGF0YXNldHMiKSkuY2hlY2tlZD0zRGouZ2V0KCJzaG93 X2hpZGRlbiIpfT0KfSk7cmV0dXJuIHRoaXN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkN1 cnJlbnRIaXN0b3J5UGFuZWwoIisoKHRoaXMubW9kPQplbCk/KHRoaXMubW9kZWwuZ2V0KCJuYW1l IikpOigiIikpKyIpIn19KTtyZXR1cm57Q3VycmVudEhpc3RvcnlQYW5lbDphfX0pOwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgODM0NmVjNGJhYTM5OTJmNGRjMDE2MWYwZmM3 OWEwYmE4OTNjMGE2MyAtciBkY2MwYzE5MTQ3ZWFkODZjNmUzNTdjNz0KMzllMDUxM2FkZGZlMDJj YjIgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwuanMKLS0t IGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwuanMKKysr IGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwuanMKQEAg LTEsMSArMSwxIEBACi1kZWZpbmUoWyJtdmMvZGF0YXNldC9oZGEtbW9kZWwiLCJtdmMvYmFzZS1t dmMiXSxmdW5jdGlvbihiLGEpe3ZhciBkPTNEQmFjaz0KYm9uZS5Nb2RlbC5leHRlbmQoYS5Mb2dn YWJsZU1peGluKS5leHRlbmQoe2RlZmF1bHRzOnttb2RlbF9jbGFzczoiSGlzdG9yeSIsPQppZDpu dWxsLG5hbWU6IlVubmFtZWQgSGlzdG9yeSIsc3RhdGU6Im5ldyIsZGlza1NpemU6MCxkZWxldGVk OmZhbHNlfSx1cmxSb289CnQ6Z2FsYXh5X2NvbmZpZy5yb290KyJhcGkvaGlzdG9yaWVzIixyZW5h bWVVcmw6ZnVuY3Rpb24oKXt2YXIgZj0zRHRoaXMuZ2V0KD0KImlkIik7aWYoIWYpe3JldHVybiB1 bmRlZmluZWR9cmV0dXJuIGdhbGF4eV9jb25maWcucm9vdCsiaGlzdG9yeS9yZW5hbWVfYXN5PQpu Yz9pZD0zRCIrdGhpcy5nZXQoImlkIil9LGFubm90YXRlVXJsOmZ1bmN0aW9uKCl7dmFyIGY9M0R0 aGlzLmdldCgiaWQiKTtpZig9CiFmKXtyZXR1cm4gdW5kZWZpbmVkfXJldHVybiBnYWxheHlfY29u ZmlnLnJvb3QrImhpc3RvcnkvYW5ub3RhdGVfYXN5bmM/aWQ9Cj0zRCIrdGhpcy5nZXQoImlkIil9 LHRhZ1VybDpmdW5jdGlvbigpe3ZhciBmPTNEdGhpcy5nZXQoImlkIik7aWYoIWYpe3JldHVybj0K IHVuZGVmaW5lZH1yZXR1cm4gZ2FsYXh5X2NvbmZpZy5yb290KyJ0YWcvZ2V0X3RhZ2dpbmdfZWx0 X2FzeW5jP2l0ZW1faWQ9M0QiPQordGhpcy5nZXQoImlkIikrIiZpdGVtX2NsYXNzPTNESGlzdG9y eSJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oZyxoLGYpe2Y9M0RmfHw9Cnt9O3RoaXMubG9nZ2VyPTNE Zi5sb2dnZXJ8fG51bGw7dGhpcy5sb2codGhpcysiLmluaXRpYWxpemU6IixnLGgsZik7dGhpcy5o ZD0KYXM9M0RuZXcgYi5IREFDb2xsZWN0aW9uKGh8fFtdLHtoaXN0b3J5SWQ6dGhpcy5nZXQoImlk Iil9KTtpZihoJiZfLmlzQXJyYXkoPQpoKSl7dGhpcy5oZGFzLnJlc2V0KGgpfXRoaXMuX3NldFVw TGlzdGVuZXJzKCk7dGhpcy51cGRhdGVUaW1lb3V0SWQ9M0RudWxsfSw9Cl9zZXRVcExpc3RlbmVy czpmdW5jdGlvbigpe3RoaXMub24oImVycm9yIixmdW5jdGlvbihnLGosZixpLGgpe3RoaXMuZXJy b3JIYT0KbmRsZXIoZyxqLGYsaSxoKX0pO2lmKHRoaXMuaGRhcyl7dGhpcy5saXN0ZW5Ubyh0aGlz LmhkYXMsImVycm9yIixmdW5jdGlvbigpPQp7dGhpcy50cmlnZ2VyLmFwcGx5KHRoaXMsWyJlcnJv cjpoZGFzIl0uY29uY2F0KGpRdWVyeS5tYWtlQXJyYXkoYXJndW1lbnRzKSk9Cil9KX10aGlzLm9u KCJjaGFuZ2U6aWQiLGZ1bmN0aW9uKGcsZil7aWYodGhpcy5oZGFzKXt0aGlzLmhkYXMuaGlzdG9y eUlkPTNEZj0KfX0sdGhpcyl9LGVycm9ySGFuZGxlcjpmdW5jdGlvbihnLGosZixpLGgpe3RoaXMu Y2xlYXJVcGRhdGVUaW1lb3V0KCl9LG93bmVkPQpCeUN1cnJVc2VyOmZ1bmN0aW9uKCl7aWYoIUdh bGF4eXx8IUdhbGF4eS5jdXJyVXNlcil7cmV0dXJuIGZhbHNlfWlmKEdhbGF4eS49CmN1cnJVc2Vy LmlzQW5vbnltb3VzKCl8fEdhbGF4eS5jdXJyVXNlci5pZCE9M0Q9M0R0aGlzLmdldCgidXNlcl9p ZCIpKXtyZXR1cj0KbiBmYWxzZX1yZXR1cm4gdHJ1ZX0saGRhQ291bnQ6ZnVuY3Rpb24oKXtyZXR1 cm4gXy5yZWR1Y2UoXy52YWx1ZXModGhpcy5nZXQoPQoic3RhdGVfZGV0YWlscyIpKSxmdW5jdGlv bihmLGcpe3JldHVybiBmK2d9LDApfSxjaGVja0ZvclVwZGF0ZXM6ZnVuY3Rpb24oZik9CntpZih0 aGlzLmhkYXMucnVubmluZygpLmxlbmd0aCl7dGhpcy5zZXRVcGRhdGVUaW1lb3V0KCl9ZWxzZXt0 aGlzLnRyaWdnZXIoIj0KcmVhZHkiKTtpZihfLmlzRnVuY3Rpb24oZikpe2YuY2FsbCh0aGlzKX19 cmV0dXJuIHRoaXN9LHNldFVwZGF0ZVRpbWVvdXQ6ZnVuPQpjdGlvbihmKXtmPTNEZnx8ZC5VUERB VEVfREVMQVk7dmFyIGc9M0R0aGlzO3RoaXMuY2xlYXJVcGRhdGVUaW1lb3V0KCk7dGhpcy49CnVw ZGF0ZVRpbWVvdXRJZD0zRHNldFRpbWVvdXQoZnVuY3Rpb24oKXtnLnJlZnJlc2goKX0sZik7cmV0 dXJuIHRoaXMudXBkYXRlVD0KaW1lb3V0SWR9LGNsZWFyVXBkYXRlVGltZW91dDpmdW5jdGlvbigp e2lmKHRoaXMudXBkYXRlVGltZW91dElkKXtjbGVhclRpbWVvPQp1dCh0aGlzLnVwZGF0ZVRpbWVv dXRJZCk7dGhpcy51cGRhdGVUaW1lb3V0SWQ9M0RudWxsfX0scmVmcmVzaDpmdW5jdGlvbihnLGY9 Cil7Zz0zRGd8fFtdO2Y9M0RmfHx7fTt2YXIgaD0zRHRoaXM7Zi5kYXRhPTNEZi5kYXRhfHx7fTtp ZihnLmxlbmd0aCl7Zi5kYXRhLj0KZGV0YWlscz0zRGcuam9pbigiLCIpfXZhciBpPTNEdGhpcy5o ZGFzLmZldGNoKGYpO2kuZG9uZShmdW5jdGlvbihqKXtoLmNoZWNrPQpGb3JVcGRhdGVzKGZ1bmN0 aW9uKCl7dGhpcy5mZXRjaCgpfSl9KTtyZXR1cm4gaX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1 cm49CiJIaXN0b3J5KCIrdGhpcy5nZXQoImlkIikrIiwiK3RoaXMuZ2V0KCJuYW1lIikrIikifX0p O2QuVVBEQVRFX0RFTEFZPTNENDAwMD0KO2QuZ2V0SGlzdG9yeURhdGE9M0RmdW5jdGlvbiBlKGcs cSl7cT0zRHF8fHt9O3ZhciBrPTNEcS5oZGFEZXRhaWxJZHN8fFtdO3ZhPQpyIG09M0RqUXVlcnku RGVmZXJyZWQoKSxsPTNEbnVsbDtmdW5jdGlvbiBoKHIpe3JldHVybiBqUXVlcnkuYWpheChnYWxh eHlfY289Cm5maWcucm9vdCsiYXBpL2hpc3Rvcmllcy8iK2cpfWZ1bmN0aW9uIGYocil7aWYoIXJ8 fCFyLnN0YXRlX2lkcyl7cmV0dXJuIDB9cj0KZXR1cm4gXy5yZWR1Y2Uoci5zdGF0ZV9pZHMsZnVu Y3Rpb24ocyx1LHQpe3JldHVybiBzK3UubGVuZ3RofSwwKX1mdW5jdGlvbiBwPQoocyl7aWYoIWYo cykpe3JldHVybltdfWlmKF8uaXNGdW5jdGlvbihrKSl7az0zRGsocyl9dmFyIHI9M0Qoay5sZW5n dGgpPyh7ZGU9CnRhaWxzOmsuam9pbigiLCIpfSk6KHt9KTtyZXR1cm4galF1ZXJ5LmFqYXgoZ2Fs YXh5X2NvbmZpZy5yb290KyJhcGkvaGlzdG9yaT0KZXMvIitzLmlkKyIvY29udGVudHMiLHtkYXRh OnJ9KX12YXIgbz0zRHEuaGlzdG9yeUZufHxoLG49M0RxLmhkYUZufHxwO3ZhciBqPQo9M0RvKGcp O2ouZG9uZShmdW5jdGlvbihyKXtsPTNEcjttLm5vdGlmeSh7c3RhdHVzOiJoaXN0b3J5IGRhdGEg cmV0cmlldmVkIiw9Cmhpc3RvcnlKU09OOmx9KX0pO2ouZmFpbChmdW5jdGlvbih0LHIscyl7bS5y ZWplY3QodCwibG9hZGluZyB0aGUgaGlzdG9yeSIpfT0KKTt2YXIgaT0zRGoudGhlbihuKTtpLnRo ZW4oZnVuY3Rpb24ocil7bS5ub3RpZnkoe3N0YXR1czoiZGF0YXNldCBkYXRhIHJldHJpPQpldmVk IixoaXN0b3J5SlNPTjpsLGhkYUpTT046cn0pO20ucmVzb2x2ZShsLHIpfSk7aS5mYWlsKGZ1bmN0 aW9uKHQscixzKXttLnI9CmVqZWN0KHQsImxvYWRpbmcgdGhlIGRhdGFzZXRzIix7aGlzdG9yeTps fSl9KTtyZXR1cm4gbX07dmFyIGM9M0RCYWNrYm9uZS5Dbz0KbGxlY3Rpb24uZXh0ZW5kKGEuTG9n Z2FibGVNaXhpbikuZXh0ZW5kKHttb2RlbDpkLHVybFJvb3Q6Z2FsYXh5X2NvbmZpZy5yb290PQor ImFwaS9oaXN0b3JpZXMifSk7cmV0dXJue0hpc3Rvcnk6ZCxIaXN0b3J5Q29sbGVjdGlvbjpjfX0p OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbIm12Yy9kYXRhc2V0L2hkYS1t b2RlbCIsIm12Yy9iYXNlLW12YyIsInV0aWxzL2xvY2FsaXphdGlvbiJdLGZ1bmN0PQppb24oYyxh LGIpe3ZhciBlPTNEQmFja2JvbmUuTW9kZWwuZXh0ZW5kKGEuTG9nZ2FibGVNaXhpbikuZXh0ZW5k KHtkZWZhdWx0czo9Cnttb2RlbF9jbGFzczoiSGlzdG9yeSIsaWQ6bnVsbCxuYW1lOiJVbm5hbWVk IEhpc3RvcnkiLHN0YXRlOiJuZXciLGRpc2tTaXplOj0KMCxkZWxldGVkOmZhbHNlfSx1cmxSb290 OmdhbGF4eV9jb25maWcucm9vdCsiYXBpL2hpc3RvcmllcyIscmVuYW1lVXJsOmZ1bmN0PQppb24o KXt2YXIgZz0zRHRoaXMuZ2V0KCJpZCIpO2lmKCFnKXtyZXR1cm4gdW5kZWZpbmVkfXJldHVybiBn YWxheHlfY29uZmlnLnI9Cm9vdCsiaGlzdG9yeS9yZW5hbWVfYXN5bmM/aWQ9M0QiK3RoaXMuZ2V0 KCJpZCIpfSxhbm5vdGF0ZVVybDpmdW5jdGlvbigpe3Zhcj0KIGc9M0R0aGlzLmdldCgiaWQiKTtp ZighZyl7cmV0dXJuIHVuZGVmaW5lZH1yZXR1cm4gZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0PQpv cnkvYW5ub3RhdGVfYXN5bmM/aWQ9M0QiK3RoaXMuZ2V0KCJpZCIpfSx0YWdVcmw6ZnVuY3Rpb24o KXt2YXIgZz0zRHRoaXMuZ2U9CnQoImlkIik7aWYoIWcpe3JldHVybiB1bmRlZmluZWR9cmV0dXJu IGdhbGF4eV9jb25maWcucm9vdCsidGFnL2dldF90YWdnaW5nXz0KZWx0X2FzeW5jP2l0ZW1faWQ9 M0QiK3RoaXMuZ2V0KCJpZCIpKyImaXRlbV9jbGFzcz0zREhpc3RvcnkifSxpbml0aWFsaXplOmZ1 PQpuY3Rpb24oaCxpLGcpe2c9M0RnfHx7fTt0aGlzLmxvZ2dlcj0zRGcubG9nZ2VyfHxudWxsO3Ro aXMubG9nKHRoaXMrIi5pbml0aWE9CmxpemU6IixoLGksZyk7dGhpcy5oZGFzPTNEbmV3IGMuSERB Q29sbGVjdGlvbihpfHxbXSx7aGlzdG9yeUlkOnRoaXMuZ2V0KCJpZD0KIil9KTtpZihpJiZfLmlz QXJyYXkoaSkpe3RoaXMuaGRhcy5yZXNldChpKX10aGlzLl9zZXRVcExpc3RlbmVycygpO3RoaXMu dXBkPQphdGVUaW1lb3V0SWQ9M0RudWxsfSxfc2V0VXBMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt0aGlz Lm9uKCJlcnJvciIsZnVuY3Rpb24oaCw9CmssZyxqLGkpe3RoaXMuZXJyb3JIYW5kbGVyKGgsayxn LGosaSl9KTtpZih0aGlzLmhkYXMpe3RoaXMubGlzdGVuVG8odGhpcy5oZD0KYXMsImVycm9yIixm dW5jdGlvbigpe3RoaXMudHJpZ2dlci5hcHBseSh0aGlzLFsiZXJyb3I6aGRhcyJdLmNvbmNhdChq UXVlcnkuPQptYWtlQXJyYXkoYXJndW1lbnRzKSkpfSl9dGhpcy5vbigiY2hhbmdlOmlkIixmdW5j dGlvbihoLGcpe2lmKHRoaXMuaGRhcyl7dGg9CmlzLmhkYXMuaGlzdG9yeUlkPTNEZ319LHRoaXMp fSxlcnJvckhhbmRsZXI6ZnVuY3Rpb24oaCxrLGcsaixpKXt0aGlzLmNsZWFyVT0KcGRhdGVUaW1l b3V0KCl9LG93bmVkQnlDdXJyVXNlcjpmdW5jdGlvbigpe2lmKCFHYWxheHl8fCFHYWxheHkuY3Vy clVzZXIpe3JlPQp0dXJuIGZhbHNlfWlmKEdhbGF4eS5jdXJyVXNlci5pc0Fub255bW91cygpfHxH YWxheHkuY3VyclVzZXIuaWQhPTNEPTNEdGhpcy49CmdldCgidXNlcl9pZCIpKXtyZXR1cm4gZmFs c2V9cmV0dXJuIHRydWV9LGhkYUNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIF8ucmVkdT0KY2UoXy52 YWx1ZXModGhpcy5nZXQoInN0YXRlX2RldGFpbHMiKSksZnVuY3Rpb24oZyxoKXtyZXR1cm4gZyto fSwwKX0sY2hlY2tGPQpvclVwZGF0ZXM6ZnVuY3Rpb24oZyl7aWYodGhpcy5oZGFzLnJ1bm5pbmco KS5sZW5ndGgpe3RoaXMuc2V0VXBkYXRlVGltZW91dCg9Cil9ZWxzZXt0aGlzLnRyaWdnZXIoInJl YWR5Iik7aWYoXy5pc0Z1bmN0aW9uKGcpKXtnLmNhbGwodGhpcyl9fXJldHVybiB0aGlzfT0KLHNl dFVwZGF0ZVRpbWVvdXQ6ZnVuY3Rpb24oZyl7Zz0zRGd8fGUuVVBEQVRFX0RFTEFZO3ZhciBoPTNE dGhpczt0aGlzLmNsZWFyPQpVcGRhdGVUaW1lb3V0KCk7dGhpcy51cGRhdGVUaW1lb3V0SWQ9M0Rz ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aC5yZWZyZXNoKCl9LGc9Cik7cmV0dXJuIHRoaXMudXBkYXRl VGltZW91dElkfSxjbGVhclVwZGF0ZVRpbWVvdXQ6ZnVuY3Rpb24oKXtpZih0aGlzLnVwZGF0ZT0K VGltZW91dElkKXtjbGVhclRpbWVvdXQodGhpcy51cGRhdGVUaW1lb3V0SWQpO3RoaXMudXBkYXRl VGltZW91dElkPTNEbnVsbH19PQoscmVmcmVzaDpmdW5jdGlvbihoLGcpe2g9M0RofHxbXTtnPTNE Z3x8e307dmFyIGk9M0R0aGlzO2cuZGF0YT0zRGcuZGF0YXx8e309CjtpZihoLmxlbmd0aCl7Zy5k YXRhLmRldGFpbHM9M0RoLmpvaW4oIiwiKX12YXIgaj0zRHRoaXMuaGRhcy5mZXRjaChnKTtqLmRv bj0KZShmdW5jdGlvbihrKXtpLmNoZWNrRm9yVXBkYXRlcyhmdW5jdGlvbigpe3RoaXMuZmV0Y2go KX0pfSk7cmV0dXJuIGp9LHRvU3RyPQppbmc6ZnVuY3Rpb24oKXtyZXR1cm4iSGlzdG9yeSgiK3Ro aXMuZ2V0KCJpZCIpKyIsIit0aGlzLmdldCgibmFtZSIpKyIpIn19KTs9CmUuVVBEQVRFX0RFTEFZ PTNENDAwMDtlLmdldEhpc3RvcnlEYXRhPTNEZnVuY3Rpb24gZihoLHIpe3I9M0RyfHx7fTt2YXIg bD0zRD0Kci5oZGFEZXRhaWxJZHN8fFtdO3ZhciBuPTNEalF1ZXJ5LkRlZmVycmVkKCksbT0zRG51 bGw7ZnVuY3Rpb24gaShzKXtyZXR1cm4gPQpqUXVlcnkuYWpheChnYWxheHlfY29uZmlnLnJvb3Qr ImFwaS9oaXN0b3JpZXMvIitoKX1mdW5jdGlvbiBnKHMpe2lmKCFzfHwhcy49CnN0YXRlX2lkcyl7 cmV0dXJuIDB9cmV0dXJuIF8ucmVkdWNlKHMuc3RhdGVfaWRzLGZ1bmN0aW9uKHQsdix1KXtyZXR1 cm4gdCt2Lj0KbGVuZ3RofSwwKX1mdW5jdGlvbiBxKHQpe2lmKCFnKHQpKXtyZXR1cm5bXX1pZihf LmlzRnVuY3Rpb24obCkpe2w9M0RsKHQpfXZhPQpyIHM9M0QobC5sZW5ndGgpPyh7ZGV0YWlsczps LmpvaW4oIiwiKX0pOih7fSk7cmV0dXJuIGpRdWVyeS5hamF4KGdhbGF4eV9jb249CmZpZy5yb290 KyJhcGkvaGlzdG9yaWVzLyIrdC5pZCsiL2NvbnRlbnRzIix7ZGF0YTpzfSl9dmFyIHA9M0RyLmhp c3RvcnlGbnx8aT0KLG89M0RyLmhkYUZufHxxO3ZhciBrPTNEcChoKTtrLmRvbmUoZnVuY3Rpb24o cyl7bT0zRHM7bi5ub3RpZnkoe3N0YXR1czoiaGlzPQp0b3J5IGRhdGEgcmV0cmlldmVkIixoaXN0 b3J5SlNPTjptfSl9KTtrLmZhaWwoZnVuY3Rpb24odSxzLHQpe24ucmVqZWN0KHUsImw9Cm9hZGlu ZyB0aGUgaGlzdG9yeSIpfSk7dmFyIGo9M0RrLnRoZW4obyk7ai50aGVuKGZ1bmN0aW9uKHMpe24u bm90aWZ5KHtzdGF0dT0KczoiZGF0YXNldCBkYXRhIHJldHJpZXZlZCIsaGlzdG9yeUpTT046bSxo ZGFKU09OOnN9KTtuLnJlc29sdmUobSxzKX0pO2ouZmFpPQpsKGZ1bmN0aW9uKHUscyx0KXtuLnJl amVjdCh1LCJsb2FkaW5nIHRoZSBkYXRhc2V0cyIse2hpc3Rvcnk6bX0pfSk7cmV0dXJuIG49Cn07 dmFyIGQ9M0RCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZChhLkxvZ2dhYmxlTWl4aW4pLmV4dGVu ZCh7bW9kZWw6ZSx1cmxSbz0Kb3Q6Z2FsYXh5X2NvbmZpZy5yb290KyJhcGkvaGlzdG9yaWVzIn0p O3JldHVybntIaXN0b3J5OmUsSGlzdG9yeUNvbGxlY3Rpb246PQpkfX0pOwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgODM0NmVjNGJhYTM5OTJmNGRjMDE2MWYwZmM3OWEwYmE4 OTNjMGE2MyAtciBkY2MwYzE5MTQ3ZWFkODZjNmUzNTdjNz0KMzllMDUxM2FkZGZlMDJjYjIgc3Rh dGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwuanMKLS0tIGEvc3Rh dGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwuanMKKysrIGIvc3Rh dGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwuanMKQEAgLTEsMSAr MSwxIEBACi1kZWZpbmUoWyJtdmMvZGF0YXNldC9oZGEtbW9kZWwiLCJtdmMvZGF0YXNldC9oZGEt ZWRpdCIsIm12Yy9oaXN0b3J5L3JlYWRvbj0KbHktaGlzdG9yeS1wYW5lbCIsIm12Yy90YWdzIiwi bXZjL2Fubm90YXRpb25zIl0sZnVuY3Rpb24oZSxiLGQsYSxjKXt2YXIgZj0KPTNEZC5SZWFkT25s eUhpc3RvcnlQYW5lbC5leHRlbmQoe0hEQVZpZXdDbGFzczpiLkhEQUVkaXRWaWV3LGluaXRpYWxp emU6ZnVuPQpjdGlvbihnKXtnPTNEZ3x8e307dGhpcy5zZWxlY3RlZEhkYUlkcz0zRFtdO3RoaXMu dGFnc0VkaXRvcj0zRG51bGw7dGhpcy5hbm49Cm90YXRpb25FZGl0b3I9M0RudWxsO3RoaXMuc2Vs ZWN0aW5nPTNEZy5zZWxlY3Rpbmd8fGZhbHNlO3RoaXMuYW5ub3RhdGlvbkVkaT0KdG9yU2hvd249 M0RnLmFubm90YXRpb25FZGl0b3JTaG93bnx8ZmFsc2U7dGhpcy50YWdzRWRpdG9yU2hvd249M0Rn LnRhZ3NFZGl0PQpvclNob3dufHxmYWxzZTtkLlJlYWRPbmx5SGlzdG9yeVBhbmVsLnByb3RvdHlw ZS5pbml0aWFsaXplLmNhbGwodGhpcyxnKX0sX3M9CmV0VXBNb2RlbEV2ZW50SGFuZGxlcnM6ZnVu Y3Rpb24oKXtkLlJlYWRPbmx5SGlzdG9yeVBhbmVsLnByb3RvdHlwZS5fc2V0VXBNbz0KZGVsRXZl bnRIYW5kbGVycy5jYWxsKHRoaXMpO3RoaXMubW9kZWwub24oImNoYW5nZTpuaWNlX3NpemUiLHRo aXMudXBkYXRlSGlzPQp0b3J5RGlza1NpemUsdGhpcyk7dGhpcy5tb2RlbC5oZGFzLm9uKCJjaGFu Z2U6ZGVsZXRlZCIsdGhpcy5faGFuZGxlSGRhRGVsZXQ9CmlvbkNoYW5nZSx0aGlzKTt0aGlzLm1v ZGVsLmhkYXMub24oImNoYW5nZTp2aXNpYmxlIix0aGlzLl9oYW5kbGVIZGFWaXNpYmxlQz0KaGFu Z2UsdGhpcyk7dGhpcy5tb2RlbC5oZGFzLm9uKCJjaGFuZ2U6cHVyZ2VkIixmdW5jdGlvbihnKXt0 aGlzLm1vZGVsLmZldGNoPQooKX0sdGhpcyl9LHJlbmRlck1vZGVsOmZ1bmN0aW9uKCl7dmFyIGc9 M0QkKCI8ZGl2Lz4iKTtnLmFwcGVuZChmLnRlbXBsYXRlcy49Cmhpc3RvcnlQYW5lbCh0aGlzLm1v ZGVsLnRvSlNPTigpKSk7dGhpcy4kZW1wdHlNZXNzYWdlKGcpLnRleHQodGhpcy5lbXB0eU1zZz0K KTtpZihHYWxheHkmJkdhbGF4eS5jdXJyVXNlciYmR2FsYXh5LmN1cnJVc2VyLmlkJiZHYWxheHku Y3VyclVzZXIuaWQ9M0Q9M0Q9Cj0zRHRoaXMubW9kZWwuZ2V0KCJ1c2VyX2lkIikpe3RoaXMuX3Jl bmRlclRhZ3MoZyk7dGhpcy5fcmVuZGVyQW5ub3RhdGlvbihnKT0KfWcuZmluZCgiLmhpc3Rvcnkt c2Vjb25kYXJ5LWFjdGlvbnMiKS5wcmVwZW5kKHRoaXMuX3JlbmRlclNlbGVjdEJ1dHRvbigpKTtn PQouZmluZCgiLmhpc3RvcnktZGF0YXNldC1hY3Rpb25zIikudG9nZ2xlKHRoaXMuc2VsZWN0aW5n KTtnLmZpbmQoIi5oaXN0b3J5LXM9CmVjb25kYXJ5LWFjdGlvbnMiKS5wcmVwZW5kKHRoaXMuX3Jl bmRlclNlYXJjaEJ1dHRvbigpKTt0aGlzLl9zZXRVcEJlaGF2aW91cj0KcyhnKTt0aGlzLnJlbmRl ckhkYXMoZyk7cmV0dXJuIGd9LF9yZW5kZXJUYWdzOmZ1bmN0aW9uKGcpe3ZhciBoPTNEdGhpczt0 aGlzPQoudGFnc0VkaXRvcj0zRG5ldyBhLlRhZ3NFZGl0b3Ioe21vZGVsOnRoaXMubW9kZWwsZWw6 Zy5maW5kKCIuaGlzdG9yeS1jb250cm89CmxzIC50YWdzLWRpc3BsYXkiKSxvbnNob3dGaXJzdFRp bWU6ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcigpfSxvbnNob3c6ZnVuY3Rpbz0Kbigpe2gudG9nZ2xl SERBVGFnRWRpdG9ycyh0cnVlLGguZnhTcGVlZCl9LG9uaGlkZTpmdW5jdGlvbigpe2gudG9nZ2xl SERBVGFnPQpFZGl0b3JzKGZhbHNlLGguZnhTcGVlZCl9LCRhY3RpdmF0b3I6ZmFJY29uQnV0dG9u KHt0aXRsZTpfbCgiRWRpdCBoaXN0b3J5IHQ9CmFncyIpLGNsYXNzZXM6Imhpc3RvcnktdGFnLWJ0 biIsZmFJY29uOiJmYS10YWdzIn0pLmFwcGVuZFRvKGcuZmluZCgiLmhpc3Rvcj0KeS1zZWNvbmRh cnktYWN0aW9ucyIpKX0pfSxfcmVuZGVyQW5ub3RhdGlvbjpmdW5jdGlvbihnKXt2YXIgaD0zRHRo aXM7dGhpcy5hPQpubm90YXRpb25FZGl0b3I9M0RuZXcgYy5Bbm5vdGF0aW9uRWRpdG9yKHttb2Rl bDp0aGlzLm1vZGVsLGVsOmcuZmluZCgiLmhpc3Q9Cm9yeS1jb250cm9scyAuYW5ub3RhdGlvbi1k aXNwbGF5Iiksb25zaG93Rmlyc3RUaW1lOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXIoKT0KfSxvbnNo b3c6ZnVuY3Rpb24oKXtoLnRvZ2dsZUhEQUFubm90YXRpb25FZGl0b3JzKHRydWUsaC5meFNwZWVk KX0sb25oaWRlOmZ1PQpuY3Rpb24oKXtoLnRvZ2dsZUhEQUFubm90YXRpb25FZGl0b3JzKGZhbHNl LGguZnhTcGVlZCl9LCRhY3RpdmF0b3I6ZmFJY29uQnU9CnR0b24oe3RpdGxlOl9sKCJFZGl0IGhp c3RvcnkgQW5ub3RhdGlvbiIpLGNsYXNzZXM6Imhpc3RvcnktYW5ub3RhdGUtYnRuIixmYT0KSWNv bjoiZmEtY29tbWVudCJ9KS5hcHBlbmRUbyhnLmZpbmQoIi5oaXN0b3J5LXNlY29uZGFyeS1hY3Rp b25zIikpfSl9LF9yZW5kPQplclNlbGVjdEJ1dHRvbjpmdW5jdGlvbihnKXtyZXR1cm4gZmFJY29u QnV0dG9uKHt0aXRsZTpfbCgiT3BlcmF0aW9ucyBvbiBtdWw9CnRpcGxlIGRhdGFzZXRzIiksY2xh c3NlczoiaGlzdG9yeS1zZWxlY3QtYnRuIixmYUljb246ImZhLWNoZWNrLXNxdWFyZS1vIn0pfT0K LF9zZXRVcEJlaGF2aW91cnM6ZnVuY3Rpb24oZyl7Zz0zRGd8fHRoaXMuJGVsO2QuUmVhZE9ubHlI aXN0b3J5UGFuZWwucHJvdG90PQp5cGUuX3NldFVwQmVoYXZpb3Vycy5jYWxsKHRoaXMsZyk7aWYo IXRoaXMubW9kZWwpe3JldHVybn10aGlzLl9zZXRVcERhdGFzZXQ9CkFjdGlvbnNQb3B1cChnKTtp ZigoIUdhbGF4eS5jdXJyVXNlcnx8R2FsYXh5LmN1cnJVc2VyLmlzQW5vbnltb3VzKCkpfHwoR2Fs YT0KeHkuY3VyclVzZXIuaWQhPTNEPTNEdGhpcy5tb2RlbC5nZXQoInVzZXJfaWQiKSkpe3JldHVy bn12YXIgaD0zRHRoaXM7Zy5maW5kPQooIi5oaXN0b3J5LW5hbWUiKS5hdHRyKCJ0aXRsZSIsX2wo IkNsaWNrIHRvIHJlbmFtZSBoaXN0b3J5IikpLnRvb2x0aXAoe3BsYWM9CmVtZW50OiJib3R0b20i fSkubWFrZV90ZXh0X2VkaXRhYmxlKHtvbl9maW5pc2g6ZnVuY3Rpb24oaSl7dmFyIGo9M0RoLm1v ZGVsLj0KZ2V0KCJuYW1lIik7aWYoaSYmaSE9M0Q9M0RqKXtoLiRlbC5maW5kKCIuaGlzdG9yeS1u YW1lIikudGV4dChpKTtoLm1vZGVsLnNhPQp2ZSh7bmFtZTppfSkuZmFpbChmdW5jdGlvbigpe2gu JGVsLmZpbmQoIi5oaXN0b3J5LW5hbWUiKS50ZXh0KGgubW9kZWwucHJldmk9Cm91cygibmFtZSIp KX0pfWVsc2V7aC4kZWwuZmluZCgiLmhpc3RvcnktbmFtZSIpLnRleHQoail9fX0pfSxfc2V0VXBE YXRhc2V0QT0KY3Rpb25zUG9wdXA6ZnVuY3Rpb24oZyl7dmFyIGg9M0R0aGlzOyhuZXcgUG9wdXBN ZW51KGcuZmluZCgiLmhpc3RvcnktZGF0YXNlPQp0LWFjdGlvbi1wb3B1cC1idG4iKSxbe2h0bWw6 X2woIkhpZGUgZGF0YXNldHMiKSxmdW5jOmZ1bmN0aW9uKCl7dmFyIGk9M0RlLkg9CmlzdG9yeURh dGFzZXRBc3NvY2lhdGlvbi5wcm90b3R5cGUuaGlkZTtoLmdldFNlbGVjdGVkSGRhQ29sbGVjdGlv bigpLmFqYXhRdT0KZXVlKGkpfX0se2h0bWw6X2woIlVuaGlkZSBkYXRhc2V0cyIpLGZ1bmM6ZnVu Y3Rpb24oKXt2YXIgaT0zRGUuSGlzdG9yeURhdGFzPQpldEFzc29jaWF0aW9uLnByb3RvdHlwZS51 bmhpZGU7aC5nZXRTZWxlY3RlZEhkYUNvbGxlY3Rpb24oKS5hamF4UXVldWUoaSl9fSw9CntodG1s Ol9sKCJEZWxldGUgZGF0YXNldHMiKSxmdW5jOmZ1bmN0aW9uKCl7dmFyIGk9M0RlLkhpc3RvcnlE YXRhc2V0QXNzb2NpYT0KdGlvbi5wcm90b3R5cGVbImRlbGV0ZSJdO2guZ2V0U2VsZWN0ZWRIZGFD b2xsZWN0aW9uKCkuYWpheFF1ZXVlKGkpfX0se2h0bWw6PQpfbCgiVW5kZWxldGUgZGF0YXNldHMi KSxmdW5jOmZ1bmN0aW9uKCl7dmFyIGk9M0RlLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb249Ci5w cm90b3R5cGUudW5kZWxldGU7aC5nZXRTZWxlY3RlZEhkYUNvbGxlY3Rpb24oKS5hamF4UXVldWUo aSl9fSx7aHRtbDpfbCgiUD0KZXJtYW5lbnRseSBkZWxldGUgZGF0YXNldHMiKSxmdW5jOmZ1bmN0 aW9uKCl7aWYoY29uZmlybShfbCgiVGhpcyB3aWxsIHBlcm1hPQpuZW50bHkgcmVtb3ZlIHRoZSBk YXRhIGluIHlvdXIgZGF0YXNldHMuIEFyZSB5b3Ugc3VyZT8iKSkpe3ZhciBpPTNEZS5IaXN0b3I9 CnlEYXRhc2V0QXNzb2NpYXRpb24ucHJvdG90eXBlLnB1cmdlO2guZ2V0U2VsZWN0ZWRIZGFDb2xs ZWN0aW9uKCkuYWpheFF1ZXVlKD0KaSl9fX1dKSl9LF9oYW5kbGVIZGFEZWxldGlvbkNoYW5nZTpm dW5jdGlvbihnKXtpZihnLmdldCgiZGVsZXRlZCIpJiYhdGhpcy5zPQp0b3JhZ2UuZ2V0KCJzaG93 X2RlbGV0ZWQiKSl7dGhpcy5yZW1vdmVIZGFWaWV3KHRoaXMuaGRhVmlld3NbZy5pZF0pfX0sX2hh bmQ9CmxlSGRhVmlzaWJsZUNoYW5nZTpmdW5jdGlvbihnKXtpZihnLmhpZGRlbigpJiYhdGhpcy5z dG9yYWdlLmdldCgic2hvd19oaWRkZT0KbiIpKXt0aGlzLnJlbW92ZUhkYVZpZXcodGhpcy5oZGFW aWV3c1tnLmlkXSl9fSxfY3JlYXRlSGRhVmlldzpmdW5jdGlvbihoKXt2PQphciBnPTNEaC5nZXQo ImlkIiksaT0zRG5ldyB0aGlzLkhEQVZpZXdDbGFzcyh7bW9kZWw6aCxsaW5rVGFyZ2V0OnRoaXMu bGlua1Q9CmFyZ2V0LGV4cGFuZGVkOnRoaXMuc3RvcmFnZS5nZXQoImV4cGFuZGVkSGRhcyIpW2dd LHNlbGVjdGFibGU6dGhpcy5zZWxlY3Rpbj0KZyxoYXNVc2VyOnRoaXMubW9kZWwub3duZWRCeUN1 cnJVc2VyKCksbG9nZ2VyOnRoaXMubG9nZ2VyLHRhZ3NFZGl0b3JTaG93bjooPQp0aGlzLnRhZ3NF ZGl0b3ImJiF0aGlzLnRhZ3NFZGl0b3IuaGlkZGVuKSxhbm5vdGF0aW9uRWRpdG9yU2hvd246KHRo aXMuYW5ub3Q9CmF0aW9uRWRpdG9yJiYhdGhpcy5hbm5vdGF0aW9uRWRpdG9yLmhpZGRlbil9KTt0 aGlzLl9zZXRVcEhkYUxpc3RlbmVycyhpKTtyZT0KdHVybiBpfSxfc2V0VXBIZGFMaXN0ZW5lcnM6 ZnVuY3Rpb24oaCl7dmFyIGc9M0R0aGlzO2QuUmVhZE9ubHlIaXN0b3J5UGFuZWwuPQpwcm90b3R5 cGUuX3NldFVwSGRhTGlzdGVuZXJzLmNhbGwodGhpcyxoKTtoLm9uKCJzZWxlY3RlZCIsZnVuY3Rp b24oaSl7dmFyIGo9Cj0zRGkubW9kZWwuZ2V0KCJpZCIpO2cuc2VsZWN0ZWRIZGFJZHM9M0RfLnVu aW9uKGcuc2VsZWN0ZWRIZGFJZHMsW2pdKX0pO2gubz0KbigiZGUtc2VsZWN0ZWQiLGZ1bmN0aW9u KGkpe3ZhciBqPTNEaS5tb2RlbC5nZXQoImlkIik7Zy5zZWxlY3RlZEhkYUlkcz0zRF8uPQp3aXRo b3V0KGcuc2VsZWN0ZWRIZGFJZHMsail9KX0sdG9nZ2xlSERBVGFnRWRpdG9yczpmdW5jdGlvbihn KXt2YXIgaD0zRGFyZ3U9Cm1lbnRzO18uZWFjaCh0aGlzLmhkYVZpZXdzLGZ1bmN0aW9uKGkpe2lm KGkudGFnc0VkaXRvcil7aS50YWdzRWRpdG9yLnRvZ2dsZT0KLmFwcGx5KGkudGFnc0VkaXRvcixo KX19KX0sdG9nZ2xlSERBQW5ub3RhdGlvbkVkaXRvcnM6ZnVuY3Rpb24oZyl7dmFyIGg9M0RhPQpy Z3VtZW50cztfLmVhY2godGhpcy5oZGFWaWV3cyxmdW5jdGlvbihpKXtpZihpLmFubm90YXRpb25F ZGl0b3Ipe2kuYW5ub3RhdGk9Cm9uRWRpdG9yLnRvZ2dsZS5hcHBseShpLmFubm90YXRpb25FZGl0 b3IsaCl9fSl9LHJlbW92ZUhkYVZpZXc6ZnVuY3Rpb24oaCl7aT0KZighaCl7cmV0dXJufXZhciBn PTNEdGhpcztoLiRlbC5mYWRlT3V0KGcuZnhTcGVlZCxmdW5jdGlvbigpe2gub2ZmKCk7aC5yZW1v PQp2ZSgpO2RlbGV0ZSBnLmhkYVZpZXdzW2gubW9kZWwuaWRdO2lmKF8uaXNFbXB0eShnLmhkYVZp ZXdzKSl7Zy4kZW1wdHlNZXNzYWc9CmUoKS5mYWRlSW4oZy5meFNwZWVkLGZ1bmN0aW9uKCl7Zy50 cmlnZ2VyKCJlbXB0eS1oaXN0b3J5IixnKX0pfX0pfSxldmVudHM6Xz0KLmV4dGVuZChfLmNsb25l KGQuUmVhZE9ubHlIaXN0b3J5UGFuZWwucHJvdG90eXBlLmV2ZW50cykseyJjbGljayAuaGlzdG9y eS1zPQplbGVjdC1idG4iOiJ0b2dnbGVTZWxlY3RvcnMiLCJjbGljayAuaGlzdG9yeS1zZWxlY3Qt YWxsLWRhdGFzZXRzLWJ0biI6InNlbGU9CmN0QWxsRGF0YXNldHMiLCJjbGljayAuaGlzdG9yeS1k ZXNlbGVjdC1hbGwtZGF0YXNldHMtYnRuIjoiZGVzZWxlY3RBbGxEYXRhcz0KZXRzIn0pLHVwZGF0 ZUhpc3RvcnlEaXNrU2l6ZTpmdW5jdGlvbigpe3RoaXMuJGVsLmZpbmQoIi5oaXN0b3J5LXNpemUi KS50ZXh0PQoodGhpcy5tb2RlbC5nZXQoIm5pY2Vfc2l6ZSIpKX0sc2hvd1NlbGVjdG9yczpmdW5j dGlvbihnKXtnPTNEKGchPTNEPTNEdW5kZWY9CmluZWQpPyhnKToodGhpcy5meFNwZWVkKTt0aGlz LnNlbGVjdGluZz0zRHRydWU7dGhpcy4kKCIuaGlzdG9yeS1kYXRhc2V0LWFjdD0KaW9ucyIpLnNs aWRlRG93bihnKTtfLmVhY2godGhpcy5oZGFWaWV3cyxmdW5jdGlvbihoKXtoLnNob3dTZWxlY3Rv cigpfSk7dGhpPQpzLnNlbGVjdGVkSGRhSWRzPTNEW119LGhpZGVTZWxlY3RvcnM6ZnVuY3Rpb24o Zyl7Zz0zRChnIT0zRD0zRHVuZGVmaW5lZCk/KGc9Cik6KHRoaXMuZnhTcGVlZCk7dGhpcy5zZWxl Y3Rpbmc9M0RmYWxzZTt0aGlzLiQoIi5oaXN0b3J5LWRhdGFzZXQtYWN0aW9ucyIpLj0Kc2xpZGVV cChnKTtfLmVhY2godGhpcy5oZGFWaWV3cyxmdW5jdGlvbihoKXtoLmhpZGVTZWxlY3RvcigpfSk7 dGhpcy5zZWxlY3RlPQpkSGRhSWRzPTNEW119LHRvZ2dsZVNlbGVjdG9yczpmdW5jdGlvbigpe2lm KCF0aGlzLnNlbGVjdGluZyl7dGhpcy5zaG93U2VsZWM9CnRvcnMoKX1lbHNle3RoaXMuaGlkZVNl bGVjdG9ycygpfX0sc2VsZWN0QWxsRGF0YXNldHM6ZnVuY3Rpb24oZyl7Xy5lYWNoKHRoaT0Kcy5o ZGFWaWV3cyxmdW5jdGlvbihoKXtoLnNlbGVjdChnKX0pfSxkZXNlbGVjdEFsbERhdGFzZXRzOmZ1 bmN0aW9uKGcpe18uZWFjPQpoKHRoaXMuaGRhVmlld3MsZnVuY3Rpb24oaCl7aC5kZXNlbGVjdChn KX0pfSxnZXRTZWxlY3RlZEhkYVZpZXdzOmZ1bmN0aW9uKCk9CntyZXR1cm4gXy5maWx0ZXIodGhp cy5oZGFWaWV3cyxmdW5jdGlvbihnKXtyZXR1cm4gZy5zZWxlY3RlZH0pfSxnZXRTZWxlY3RlZD0K SGRhQ29sbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuZXcgZS5IREFDb2xsZWN0aW9uKF8ubWFw KHRoaXMuZ2V0U2VsZWN0ZWRIPQpkYVZpZXdzKCksZnVuY3Rpb24oZyl7cmV0dXJuIGcubW9kZWx9 KSx7aGlzdG9yeUlkOnRoaXMubW9kZWwuaWR9KX0sdG9TdHJpbmc9CjpmdW5jdGlvbigpe3JldHVy biJIaXN0b3J5UGFuZWwoIisoKHRoaXMubW9kZWwpPyh0aGlzLm1vZGVsLmdldCgibmFtZSIpKToo Ij0KIikpKyIpIn19KTtyZXR1cm57SGlzdG9yeVBhbmVsOmZ9fSk7ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQorZGVmaW5lKFsibXZjL2RhdGFzZXQvaGRhLW1vZGVsIiwibXZjL2RhdGFzZXQv aGRhLWVkaXQiLCJtdmMvaGlzdG9yeS9yZWFkb249Cmx5LWhpc3RvcnktcGFuZWwiLCJtdmMvdGFn cyIsIm12Yy9hbm5vdGF0aW9ucyIsInV0aWxzL2xvY2FsaXphdGlvbiJdLGZ1bmN0aT0Kb24oZixi LGQsYSxjLGUpe3ZhciBnPTNEZC5SZWFkT25seUhpc3RvcnlQYW5lbC5leHRlbmQoe0hEQVZpZXdD bGFzczpiLkhEQUVkPQppdFZpZXcsaW5pdGlhbGl6ZTpmdW5jdGlvbihoKXtoPTNEaHx8e307dGhp cy5zZWxlY3RlZEhkYUlkcz0zRFtdO3RoaXMudGFnc0U9CmRpdG9yPTNEbnVsbDt0aGlzLmFubm90 YXRpb25FZGl0b3I9M0RudWxsO3RoaXMuc2VsZWN0aW5nPTNEaC5zZWxlY3Rpbmd8fGZhbD0Kc2U7 dGhpcy5hbm5vdGF0aW9uRWRpdG9yU2hvd249M0RoLmFubm90YXRpb25FZGl0b3JTaG93bnx8ZmFs c2U7dGhpcy50YWdzRWRpPQp0b3JTaG93bj0zRGgudGFnc0VkaXRvclNob3dufHxmYWxzZTtkLlJl YWRPbmx5SGlzdG9yeVBhbmVsLnByb3RvdHlwZS5pbml0aWE9CmxpemUuY2FsbCh0aGlzLGgpfSxf c2V0VXBNb2RlbEV2ZW50SGFuZGxlcnM6ZnVuY3Rpb24oKXtkLlJlYWRPbmx5SGlzdG9yeVBhbj0K ZWwucHJvdG90eXBlLl9zZXRVcE1vZGVsRXZlbnRIYW5kbGVycy5jYWxsKHRoaXMpO3RoaXMubW9k ZWwub24oImNoYW5nZTpuaWNlPQpfc2l6ZSIsdGhpcy51cGRhdGVIaXN0b3J5RGlza1NpemUsdGhp cyk7dGhpcy5tb2RlbC5oZGFzLm9uKCJjaGFuZ2U6ZGVsZXRlZCI9Cix0aGlzLl9oYW5kbGVIZGFE ZWxldGlvbkNoYW5nZSx0aGlzKTt0aGlzLm1vZGVsLmhkYXMub24oImNoYW5nZTp2aXNpYmxlIix0 aD0KaXMuX2hhbmRsZUhkYVZpc2libGVDaGFuZ2UsdGhpcyk7dGhpcy5tb2RlbC5oZGFzLm9uKCJj aGFuZ2U6cHVyZ2VkIixmdW5jdGlvPQpuKGgpe3RoaXMubW9kZWwuZmV0Y2goKX0sdGhpcyl9LHJl bmRlck1vZGVsOmZ1bmN0aW9uKCl7dmFyIGg9M0QkKCI8ZGl2Lz4iKTs9CmguYXBwZW5kKGcudGVt cGxhdGVzLmhpc3RvcnlQYW5lbCh0aGlzLm1vZGVsLnRvSlNPTigpKSk7dGhpcy4kZW1wdHlNZXNz YWdlKD0KaCkudGV4dCh0aGlzLmVtcHR5TXNnKTtpZihHYWxheHkmJkdhbGF4eS5jdXJyVXNlciYm R2FsYXh5LmN1cnJVc2VyLmlkJiZHYWxhPQp4eS5jdXJyVXNlci5pZD0zRD0zRD0zRHRoaXMubW9k ZWwuZ2V0KCJ1c2VyX2lkIikpe3RoaXMuX3JlbmRlclRhZ3MoaCk7dGhpcy49Cl9yZW5kZXJBbm5v dGF0aW9uKGgpfWguZmluZCgiLmhpc3Rvcnktc2Vjb25kYXJ5LWFjdGlvbnMiKS5wcmVwZW5kKHRo aXMuX3Jlbj0KZGVyU2VsZWN0QnV0dG9uKCkpO2guZmluZCgiLmhpc3RvcnktZGF0YXNldC1hY3Rp b25zIikudG9nZ2xlKHRoaXMuc2VsZWN0aW5nPQopO2guZmluZCgiLmhpc3Rvcnktc2Vjb25kYXJ5 LWFjdGlvbnMiKS5wcmVwZW5kKHRoaXMuX3JlbmRlclNlYXJjaEJ1dHRvbigpKTs9CnRoaXMuX3Nl dFVwQmVoYXZpb3VycyhoKTt0aGlzLnJlbmRlckhkYXMoaCk7cmV0dXJuIGh9LF9yZW5kZXJUYWdz OmZ1bmN0aW9uKD0KaCl7dmFyIGk9M0R0aGlzO3RoaXMudGFnc0VkaXRvcj0zRG5ldyBhLlRhZ3NF ZGl0b3Ioe21vZGVsOnRoaXMubW9kZWwsZWw6aC5mPQppbmQoIi5oaXN0b3J5LWNvbnRyb2xzIC50 YWdzLWRpc3BsYXkiKSxvbnNob3dGaXJzdFRpbWU6ZnVuY3Rpb24oKXt0aGlzLnJlbmQ9CmVyKCl9 LG9uc2hvdzpmdW5jdGlvbigpe2kudG9nZ2xlSERBVGFnRWRpdG9ycyh0cnVlLGkuZnhTcGVlZCl9 LG9uaGlkZTpmdW5jdD0KaW9uKCl7aS50b2dnbGVIREFUYWdFZGl0b3JzKGZhbHNlLGkuZnhTcGVl ZCl9LCRhY3RpdmF0b3I6ZmFJY29uQnV0dG9uKHt0aXRsPQplOmUoIkVkaXQgaGlzdG9yeSB0YWdz IiksY2xhc3NlczoiaGlzdG9yeS10YWctYnRuIixmYUljb246ImZhLXRhZ3MifSkuYXBwZW49CmRU byhoLmZpbmQoIi5oaXN0b3J5LXNlY29uZGFyeS1hY3Rpb25zIikpfSl9LF9yZW5kZXJBbm5vdGF0 aW9uOmZ1bmN0aW9uKGgpez0KdmFyIGk9M0R0aGlzO3RoaXMuYW5ub3RhdGlvbkVkaXRvcj0zRG5l dyBjLkFubm90YXRpb25FZGl0b3Ioe21vZGVsOnRoaXMubW9kPQplbCxlbDpoLmZpbmQoIi5oaXN0 b3J5LWNvbnRyb2xzIC5hbm5vdGF0aW9uLWRpc3BsYXkiKSxvbnNob3dGaXJzdFRpbWU6ZnVuY3Q9 Cmlvbigpe3RoaXMucmVuZGVyKCl9LG9uc2hvdzpmdW5jdGlvbigpe2kudG9nZ2xlSERBQW5ub3Rh dGlvbkVkaXRvcnModHJ1ZSxpLj0KZnhTcGVlZCl9LG9uaGlkZTpmdW5jdGlvbigpe2kudG9nZ2xl SERBQW5ub3RhdGlvbkVkaXRvcnMoZmFsc2UsaS5meFNwZWVkKX0sPQokYWN0aXZhdG9yOmZhSWNv bkJ1dHRvbih7dGl0bGU6ZSgiRWRpdCBoaXN0b3J5IEFubm90YXRpb24iKSxjbGFzc2VzOiJoaXN0 b3I9CnktYW5ub3RhdGUtYnRuIixmYUljb246ImZhLWNvbW1lbnQifSkuYXBwZW5kVG8oaC5maW5k KCIuaGlzdG9yeS1zZWNvbmRhcnktYT0KY3Rpb25zIikpfSl9LF9yZW5kZXJTZWxlY3RCdXR0b246 ZnVuY3Rpb24oaCl7cmV0dXJuIGZhSWNvbkJ1dHRvbih7dGl0bGU6ZSgiPQpPcGVyYXRpb25zIG9u IG11bHRpcGxlIGRhdGFzZXRzIiksY2xhc3NlczoiaGlzdG9yeS1zZWxlY3QtYnRuIixmYUljb246 ImZhLWM9CmhlY2stc3F1YXJlLW8ifSl9LF9zZXRVcEJlaGF2aW91cnM6ZnVuY3Rpb24oaCl7aD0z RGh8fHRoaXMuJGVsO2QuUmVhZE9ubHlIaT0Kc3RvcnlQYW5lbC5wcm90b3R5cGUuX3NldFVwQmVo YXZpb3Vycy5jYWxsKHRoaXMsaCk7aWYoIXRoaXMubW9kZWwpe3JldHVybn10PQpoaXMuX3NldFVw RGF0YXNldEFjdGlvbnNQb3B1cChoKTtpZigoIUdhbGF4eS5jdXJyVXNlcnx8R2FsYXh5LmN1cnJV c2VyLmlzQW49Cm9ueW1vdXMoKSl8fChHYWxheHkuY3VyclVzZXIuaWQhPTNEPTNEdGhpcy5tb2Rl bC5nZXQoInVzZXJfaWQiKSkpe3JldHVybn12YT0KciBpPTNEdGhpcztoLmZpbmQoIi5oaXN0b3J5 LW5hbWUiKS5hdHRyKCJ0aXRsZSIsZSgiQ2xpY2sgdG8gcmVuYW1lIGhpc3RvcnkiPQopKS50b29s dGlwKHtwbGFjZW1lbnQ6ImJvdHRvbSJ9KS5tYWtlX3RleHRfZWRpdGFibGUoe29uX2ZpbmlzaDpm dW5jdGlvbihqKXs9CnZhciBrPTNEaS5tb2RlbC5nZXQoIm5hbWUiKTtpZihqJiZqIT0zRD0zRGsp e2kuJGVsLmZpbmQoIi5oaXN0b3J5LW5hbWUiKS50ZT0KeHQoaik7aS5tb2RlbC5zYXZlKHtuYW1l Omp9KS5mYWlsKGZ1bmN0aW9uKCl7aS4kZWwuZmluZCgiLmhpc3RvcnktbmFtZSIpLnRlPQp4dChp Lm1vZGVsLnByZXZpb3VzKCJuYW1lIikpfSl9ZWxzZXtpLiRlbC5maW5kKCIuaGlzdG9yeS1uYW1l IikudGV4dChrKX19fSk9Cn0sX3NldFVwRGF0YXNldEFjdGlvbnNQb3B1cDpmdW5jdGlvbihoKXt2 YXIgaT0zRHRoaXM7KG5ldyBQb3B1cE1lbnUoaC5maW5kKD0KIi5oaXN0b3J5LWRhdGFzZXQtYWN0 aW9uLXBvcHVwLWJ0biIpLFt7aHRtbDplKCJIaWRlIGRhdGFzZXRzIiksZnVuYzpmdW5jdGlvPQpu KCl7dmFyIGo9M0RmLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24ucHJvdG90eXBlLmhpZGU7aS5n ZXRTZWxlY3RlZEhkYUNvbGw9CmVjdGlvbigpLmFqYXhRdWV1ZShqKX19LHtodG1sOmUoIlVuaGlk ZSBkYXRhc2V0cyIpLGZ1bmM6ZnVuY3Rpb24oKXt2YXIgaj0zRD0KZi5IaXN0b3J5RGF0YXNldEFz c29jaWF0aW9uLnByb3RvdHlwZS51bmhpZGU7aS5nZXRTZWxlY3RlZEhkYUNvbGxlY3Rpb24oKS5h PQpqYXhRdWV1ZShqKX19LHtodG1sOmUoIkRlbGV0ZSBkYXRhc2V0cyIpLGZ1bmM6ZnVuY3Rpb24o KXt2YXIgaj0zRGYuSGlzdG9yeUQ9CmF0YXNldEFzc29jaWF0aW9uLnByb3RvdHlwZVsiZGVsZXRl Il07aS5nZXRTZWxlY3RlZEhkYUNvbGxlY3Rpb24oKS5hamF4UXVldT0KZShqKX19LHtodG1sOmUo IlVuZGVsZXRlIGRhdGFzZXRzIiksZnVuYzpmdW5jdGlvbigpe3ZhciBqPTNEZi5IaXN0b3J5RGF0 YXNlPQp0QXNzb2NpYXRpb24ucHJvdG90eXBlLnVuZGVsZXRlO2kuZ2V0U2VsZWN0ZWRIZGFDb2xs ZWN0aW9uKCkuYWpheFF1ZXVlKGopfX09Cix7aHRtbDplKCJQZXJtYW5lbnRseSBkZWxldGUgZGF0 YXNldHMiKSxmdW5jOmZ1bmN0aW9uKCl7aWYoY29uZmlybShlKCJUaGlzID0Kd2lsbCBwZXJtYW5l bnRseSByZW1vdmUgdGhlIGRhdGEgaW4geW91ciBkYXRhc2V0cy4gQXJlIHlvdSBzdXJlPyIpKSl7 dmFyIGo9Cj0zRGYuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbi5wcm90b3R5cGUucHVyZ2U7aS5n ZXRTZWxlY3RlZEhkYUNvbGxlY3Rpb24oKT0KLmFqYXhRdWV1ZShqKX19fV0pKX0sX2hhbmRsZUhk YURlbGV0aW9uQ2hhbmdlOmZ1bmN0aW9uKGgpe2lmKGguZ2V0KCJkZWxldGVkPQoiKSYmIXRoaXMu c3RvcmFnZS5nZXQoInNob3dfZGVsZXRlZCIpKXt0aGlzLnJlbW92ZUhkYVZpZXcodGhpcy5oZGFW aWV3c1toLmk9CmRdKX19LF9oYW5kbGVIZGFWaXNpYmxlQ2hhbmdlOmZ1bmN0aW9uKGgpe2lmKGgu aGlkZGVuKCkmJiF0aGlzLnN0b3JhZ2UuZ2V0KD0KInNob3dfaGlkZGVuIikpe3RoaXMucmVtb3Zl SGRhVmlldyh0aGlzLmhkYVZpZXdzW2guaWRdKX19LF9jcmVhdGVIZGFWaWV3OmZ1PQpuY3Rpb24o aSl7dmFyIGg9M0RpLmdldCgiaWQiKSxqPTNEbmV3IHRoaXMuSERBVmlld0NsYXNzKHttb2RlbDpp LGxpbmtUYXJnZXQ9Cjp0aGlzLmxpbmtUYXJnZXQsZXhwYW5kZWQ6dGhpcy5zdG9yYWdlLmdldCgi ZXhwYW5kZWRIZGFzIilbaF0sc2VsZWN0YWJsZTp0aD0KaXMuc2VsZWN0aW5nLGhhc1VzZXI6dGhp cy5tb2RlbC5vd25lZEJ5Q3VyclVzZXIoKSxsb2dnZXI6dGhpcy5sb2dnZXIsdGFnc0VkPQppdG9y U2hvd246KHRoaXMudGFnc0VkaXRvciYmIXRoaXMudGFnc0VkaXRvci5oaWRkZW4pLGFubm90YXRp b25FZGl0b3JTaG93bjo9Cih0aGlzLmFubm90YXRpb25FZGl0b3ImJiF0aGlzLmFubm90YXRpb25F ZGl0b3IuaGlkZGVuKX0pO3RoaXMuX3NldFVwSGRhTGlzdD0KZW5lcnMoaik7cmV0dXJuIGp9LF9z ZXRVcEhkYUxpc3RlbmVyczpmdW5jdGlvbihpKXt2YXIgaD0zRHRoaXM7ZC5SZWFkT25seUhpPQpz dG9yeVBhbmVsLnByb3RvdHlwZS5fc2V0VXBIZGFMaXN0ZW5lcnMuY2FsbCh0aGlzLGkpO2kub24o InNlbGVjdGVkIixmdW5jdGk9Cm9uKGope3ZhciBrPTNEai5tb2RlbC5nZXQoImlkIik7aC5zZWxl Y3RlZEhkYUlkcz0zRF8udW5pb24oaC5zZWxlY3RlZEhkYUlkcz0KLFtrXSl9KTtpLm9uKCJkZS1z ZWxlY3RlZCIsZnVuY3Rpb24oail7dmFyIGs9M0RqLm1vZGVsLmdldCgiaWQiKTtoLnNlbGVjdGVk PQpIZGFJZHM9M0RfLndpdGhvdXQoaC5zZWxlY3RlZEhkYUlkcyxrKX0pfSx0b2dnbGVIREFUYWdF ZGl0b3JzOmZ1bmN0aW9uKGgpe3Y9CmFyIGk9M0Rhcmd1bWVudHM7Xy5lYWNoKHRoaXMuaGRhVmll d3MsZnVuY3Rpb24oail7aWYoai50YWdzRWRpdG9yKXtqLnRhZ3NFZD0KaXRvci50b2dnbGUuYXBw bHkoai50YWdzRWRpdG9yLGkpfX0pfSx0b2dnbGVIREFBbm5vdGF0aW9uRWRpdG9yczpmdW5jdGlv bihoPQope3ZhciBpPTNEYXJndW1lbnRzO18uZWFjaCh0aGlzLmhkYVZpZXdzLGZ1bmN0aW9uKGop e2lmKGouYW5ub3RhdGlvbkVkaXRvcik9CntqLmFubm90YXRpb25FZGl0b3IudG9nZ2xlLmFwcGx5 KGouYW5ub3RhdGlvbkVkaXRvcixpKX19KX0scmVtb3ZlSGRhVmlldzpmdT0KbmN0aW9uKGkpe2lm KCFpKXtyZXR1cm59dmFyIGg9M0R0aGlzO2kuJGVsLmZhZGVPdXQoaC5meFNwZWVkLGZ1bmN0aW9u KCl7aS5vPQpmZigpO2kucmVtb3ZlKCk7ZGVsZXRlIGguaGRhVmlld3NbaS5tb2RlbC5pZF07aWYo Xy5pc0VtcHR5KGguaGRhVmlld3MpKXtoLiQ9CmVtcHR5TWVzc2FnZSgpLmZhZGVJbihoLmZ4U3Bl ZWQsZnVuY3Rpb24oKXtoLnRyaWdnZXIoImVtcHR5LWhpc3RvcnkiLGgpfSl9fT0KKX0sZXZlbnRz Ol8uZXh0ZW5kKF8uY2xvbmUoZC5SZWFkT25seUhpc3RvcnlQYW5lbC5wcm90b3R5cGUuZXZlbnRz KSx7ImNsaWNrPQogLmhpc3Rvcnktc2VsZWN0LWJ0biI6InRvZ2dsZVNlbGVjdG9ycyIsImNsaWNr IC5oaXN0b3J5LXNlbGVjdC1hbGwtZGF0YXNldHM9Ci1idG4iOiJzZWxlY3RBbGxEYXRhc2V0cyIs ImNsaWNrIC5oaXN0b3J5LWRlc2VsZWN0LWFsbC1kYXRhc2V0cy1idG4iOiJkZXNlbD0KZWN0QWxs RGF0YXNldHMifSksdXBkYXRlSGlzdG9yeURpc2tTaXplOmZ1bmN0aW9uKCl7dGhpcy4kZWwuZmlu ZCgiLmhpc3RvcnktPQpzaXplIikudGV4dCh0aGlzLm1vZGVsLmdldCgibmljZV9zaXplIikpfSxz aG93U2VsZWN0b3JzOmZ1bmN0aW9uKGgpe2g9M0QoaCE9Cj0zRD0zRHVuZGVmaW5lZCk/KGgpOih0 aGlzLmZ4U3BlZWQpO3RoaXMuc2VsZWN0aW5nPTNEdHJ1ZTt0aGlzLiQoIi5oaXN0b3J5LT0KZGF0 YXNldC1hY3Rpb25zIikuc2xpZGVEb3duKGgpO18uZWFjaCh0aGlzLmhkYVZpZXdzLGZ1bmN0aW9u KGkpe2kuc2hvd1NlbGVjPQp0b3IoKX0pO3RoaXMuc2VsZWN0ZWRIZGFJZHM9M0RbXX0saGlkZVNl bGVjdG9yczpmdW5jdGlvbihoKXtoPTNEKGghPTNEPTNEdW49CmRlZmluZWQpPyhoKToodGhpcy5m eFNwZWVkKTt0aGlzLnNlbGVjdGluZz0zRGZhbHNlO3RoaXMuJCgiLmhpc3RvcnktZGF0YXNldD0K LWFjdGlvbnMiKS5zbGlkZVVwKGgpO18uZWFjaCh0aGlzLmhkYVZpZXdzLGZ1bmN0aW9uKGkpe2ku aGlkZVNlbGVjdG9yKCl9KTt0PQpoaXMuc2VsZWN0ZWRIZGFJZHM9M0RbXX0sdG9nZ2xlU2VsZWN0 b3JzOmZ1bmN0aW9uKCl7aWYoIXRoaXMuc2VsZWN0aW5nKXt0aGk9CnMuc2hvd1NlbGVjdG9ycygp fWVsc2V7dGhpcy5oaWRlU2VsZWN0b3JzKCl9fSxzZWxlY3RBbGxEYXRhc2V0czpmdW5jdGlvbiho KT0Ke18uZWFjaCh0aGlzLmhkYVZpZXdzLGZ1bmN0aW9uKGkpe2kuc2VsZWN0KGgpfSl9LGRlc2Vs ZWN0QWxsRGF0YXNldHM6ZnVuY3RpPQpvbihoKXtfLmVhY2godGhpcy5oZGFWaWV3cyxmdW5jdGlv bihpKXtpLmRlc2VsZWN0KGgpfSl9LGdldFNlbGVjdGVkSGRhVmlld3M9CjpmdW5jdGlvbigpe3Jl dHVybiBfLmZpbHRlcih0aGlzLmhkYVZpZXdzLGZ1bmN0aW9uKGgpe3JldHVybiBoLnNlbGVjdGVk fSl9LD0KZ2V0U2VsZWN0ZWRIZGFDb2xsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBmLkhE QUNvbGxlY3Rpb24oXy5tYXAodGhpcy5nPQpldFNlbGVjdGVkSGRhVmlld3MoKSxmdW5jdGlvbiho KXtyZXR1cm4gaC5tb2RlbH0pLHtoaXN0b3J5SWQ6dGhpcy5tb2RlbC5pZH09Cil9LHRvU3RyaW5n OmZ1bmN0aW9uKCl7cmV0dXJuIkhpc3RvcnlQYW5lbCgiKygodGhpcy5tb2RlbCk/KHRoaXMubW9k ZWwuZ2V0KD0KIm5hbWUiKSk6KCIiKSkrIikifX0pO3JldHVybntIaXN0b3J5UGFuZWw6Z319KTsK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDgzNDZlYzRiYWEzOTkyZjRkYzAx NjFmMGZjNzlhMGJhODkzYzBhNjMgLXIgZGNjMGMxOTE0N2VhZDg2YzZlMzU3Yzc9CjM5ZTA1MTNh ZGRmZTAyY2IyIHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9yZWFkb25seS1oaXN0 b3J5LXBhbmVsLj0KanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L3Jl YWRvbmx5LWhpc3RvcnktcGFuZWwuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9o aXN0b3J5L3JlYWRvbmx5LWhpc3RvcnktcGFuZWwuanMKQEAgLTEsMSArMSwxIEBACi1kZWZpbmUo WyJtdmMvaGlzdG9yeS9oaXN0b3J5LW1vZGVsIiwibXZjL2RhdGFzZXQvaGRhLWJhc2UiLCJtdmMv dXNlci91c2VyLT0KbW9kZWwiLCJtdmMvYmFzZS1tdmMiXSxmdW5jdGlvbihmLGIsYSxlKXt2YXIg aD0zRGUuU2Vzc2lvblN0b3JhZ2VNb2RlbC5leHRlPQpuZCh7ZGVmYXVsdHM6e2V4cGFuZGVkSGRh czp7fSxzaG93X2RlbGV0ZWQ6ZmFsc2Usc2hvd19oaWRkZW46ZmFsc2V9LGFkZEV4cGE9Cm5kZWRI ZGE6ZnVuY3Rpb24obCl7dmFyIGs9M0QiZXhwYW5kZWRIZGFzIjt0aGlzLnNhdmUoayxfLmV4dGVu ZCh0aGlzLmdldChrKT0KLF8ub2JqZWN0KFtsXSxbdHJ1ZV0pKSl9LHJlbW92ZUV4cGFuZGVkSGRh OmZ1bmN0aW9uKGwpe3ZhciBrPTNEImV4cGFuZGVkSGRhPQpzIjt0aGlzLnNhdmUoayxfLm9taXQo dGhpcy5nZXQoayksbCkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJIaXN0b3J5UHI9CmVm cygiK3RoaXMuaWQrIikifX0pO2guc3RvcmFnZUtleVByZWZpeD0zRCJoaXN0b3J5OiI7aC5oaXN0 b3J5U3RvcmFnZUtleT0zRD0KZnVuY3Rpb24gZChrKXtpZighayl7dGhyb3cgbmV3IEVycm9yKCJI aXN0b3J5UHJlZnMuaGlzdG9yeVN0b3JhZ2VLZXkgbmVlZHMgPQp2YWxpZCBpZDogIitrKX1yZXR1 cm4oaC5zdG9yYWdlS2V5UHJlZml4K2spfTtoLmdldD0zRGZ1bmN0aW9uIGMoayl7cmV0dXJuIG49 CmV3IGgoe2lkOmguaGlzdG9yeVN0b3JhZ2VLZXkoayl9KX07aC5jbGVhckFsbD0zRGZ1bmN0aW9u IGcobCl7Zm9yKHZhciBrIGluID0Kc2Vzc2lvblN0b3JhZ2Upe2lmKGsuaW5kZXhPZihoLnN0b3Jh Z2VLZXlQcmVmaXgpPTNEPTNEPTNEMCl7c2Vzc2lvblN0b3JhZ2UuPQpyZW1vdmVJdGVtKGspfX19 O3ZhciBpPTNEQmFja2JvbmUuVmlldy5leHRlbmQoZS5Mb2dnYWJsZU1peGluKS5leHRlbmQoe0hE QVY9Cmlld0NsYXNzOmIuSERBQmFzZVZpZXcsdGFnTmFtZToiZGl2IixjbGFzc05hbWU6Imhpc3Rv cnktcGFuZWwiLGZ4U3BlZWQ6ImZhcz0KdCIsZW1wdHlNc2c6X2woIlRoaXMgaGlzdG9yeSBpcyBl bXB0eSIpLG5vbmVGb3VuZE1zZzpfbCgiTm8gbWF0Y2hpbmcgZGF0YXNlPQp0cyBmb3VuZCIpLGlu aXRpYWxpemU6ZnVuY3Rpb24oayl7az0zRGt8fHt9O2lmKGsubG9nZ2VyKXt0aGlzLmxvZ2dlcj0z RGsubG89CmdnZXJ9dGhpcy5sb2codGhpcysiLmluaXRpYWxpemU6IixrKTt0aGlzLmxpbmtUYXJn ZXQ9M0RrLmxpbmtUYXJnZXR8fCJfYmxhbj0KayI7dGhpcy5meFNwZWVkPTNEXy5oYXMoaywiZnhT cGVlZCIpPyhrLmZ4U3BlZWQpOih0aGlzLmZ4U3BlZWQpO3RoaXMuZmlsdGVyPQpzPTNEW107dGhp cy5zZWFyY2hGb3I9M0QiIjt0aGlzLmZpbmRDb250YWluZXJGbj0zRGsuZmluZENvbnRhaW5lckZu O3RoaXMuaGQ9CmFWaWV3cz0zRHt9O3RoaXMuaW5kaWNhdG9yPTNEbmV3IExvYWRpbmdJbmRpY2F0 b3IodGhpcy4kZWwpO3RoaXMuX3NldFVwTGlzdD0KZW5lcnMoKTt2YXIgbD0zRF8ucGljayhrLCJp bml0aWFsbHlFeHBhbmRlZCIsInNob3dfZGVsZXRlZCIsInNob3dfaGlkZGVuIik7PQp0aGlzLnNl dE1vZGVsKHRoaXMubW9kZWwsbCxmYWxzZSk7aWYoay5vbnJlYWR5KXtrLm9ucmVhZHkuY2FsbCh0 aGlzKX19LF9zZXQ9ClVwTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5vbigiZXJyb3IiLGZ1bmN0 aW9uKGwsbyxrLG4sbSl7dGhpcy5lcnJvckhhbmRsZT0KcihsLG8sayxuLG0pfSk7dGhpcy5vbigi bG9hZGluZy1oaXN0b3J5IixmdW5jdGlvbigpe3RoaXMuX3Nob3dMb2FkaW5nSW5kaWNhPQp0b3Io ImxvYWRpbmcgaGlzdG9yeS4uLiIsNDApfSk7dGhpcy5vbigibG9hZGluZy1kb25lIixmdW5jdGlv bigpe3RoaXMuX2hpZGU9CkxvYWRpbmdJbmRpY2F0b3IoNDApO2lmKF8uaXNFbXB0eSh0aGlzLmhk YVZpZXdzKSl7dGhpcy50cmlnZ2VyKCJlbXB0eS1oaXN0bz0KcnkiLHRoaXMpfX0pO3RoaXMub25j ZSgicmVuZGVyZWQiLGZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKCJyZW5kZXJlZDppbml0aWFsPQoi LHRoaXMpO3JldHVybiBmYWxzZX0pO2lmKHRoaXMubG9nZ2VyKXt0aGlzLm9uKCJhbGwiLGZ1bmN0 aW9uKGspe3RoaXMubG9nKHQ9CmhpcysiIixhcmd1bWVudHMpfSx0aGlzKX1yZXR1cm4gdGhpc30s ZXJyb3JIYW5kbGVyOmZ1bmN0aW9uKG0scCxsLG8sbil7Y29ucz0Kb2xlLmVycm9yKG0scCxsLG8s bik7aWYocCYmcC5zdGF0dXM9M0Q9M0Q9M0QwJiZwLnJlYWR5U3RhdGU9M0Q9M0Q9M0QwKXt9ZWxz PQple2lmKHAmJnAuc3RhdHVzPTNEPTNEPTNENTAyKXt9ZWxzZXt2YXIgaz0zRHRoaXMuX3BhcnNl RXJyb3JNZXNzYWdlKG0scCxsLG89CixuKTtpZighdGhpcy4kbWVzc2FnZXMoKS5pcygiOnZpc2li bGUiKSl7dGhpcy5vbmNlKCJyZW5kZXJlZCIsZnVuY3Rpb24oKXt0aD0KaXMuZGlzcGxheU1lc3Nh Z2UoImVycm9yIixrLm1lc3NhZ2Usay5kZXRhaWxzKX0pfWVsc2V7dGhpcy5kaXNwbGF5TWVzc2Fn ZSgiPQplcnJvciIsay5tZXNzYWdlLGsuZGV0YWlscyl9fX19LF9wYXJzZUVycm9yTWVzc2FnZTpm dW5jdGlvbihuLHIsbSxxLHApe3ZhciA9Cmw9M0RHYWxheHkuY3VyclVzZXIsaz0zRHttZXNzYWdl OnRoaXMuX2JlUG9saXRlKHEpLGRldGFpbHM6e3VzZXI6KGwgaW5zdGFuYz0KZW9mIGEuVXNlcik/ KGwudG9KU09OKCkpOihsKyIiKSxzb3VyY2U6KG4gaW5zdGFuY2VvZiBCYWNrYm9uZS5Nb2RlbCk/ KG4udG9KPQpTT04oKSk6KG4rIiIpLHhocjpyLG9wdGlvbnM6KHIpPyhfLm9taXQobSwieGhyIikp OihtKX19O18uZXh0ZW5kKGsuZGV0YWlscyw9CnB8fHt9KTtpZihyJiZfLmlzRnVuY3Rpb24oci5n ZXRBbGxSZXNwb25zZUhlYWRlcnMpKXt2YXIgbz0zRHIuZ2V0QWxsUmVzcG9ucz0KZUhlYWRlcnMo KTtvPTNEXy5jb21wYWN0KG8uc3BsaXQoIlxuIikpO289M0RfLm1hcChvLGZ1bmN0aW9uKHMpe3Jl dHVybiBzLnNwPQpsaXQoIjogIil9KTtrLmRldGFpbHMueGhyLnJlc3BvbnNlSGVhZGVycz0zRF8u b2JqZWN0KG8pfXJldHVybiBrfSxfYmVQb2xpdGU9CjpmdW5jdGlvbihrKXtrPTNEa3x8X2woIkFu IGVycm9yIG9jY3VycmVkIHdoaWxlIGdldHRpbmcgdXBkYXRlcyBmcm9tIHRoZSBzZT0KcnZlciIp O3JldHVybiBrKyIuICIrX2woIlBsZWFzZSBjb250YWN0IGEgR2FsYXh5IGFkbWluaXN0cmF0b3Ig aWYgdGhlIHByb2JsPQplbSBwZXJzaXN0cy4iKX0sbG9hZEhpc3RvcnlXaXRoSERBRGV0YWlsczpm dW5jdGlvbihtLGwsayxvKXt2YXIgbj0zRGZ1bmN0aW89Cm4ocCl7cmV0dXJuIF8ua2V5cyhoLmdl dChwLmlkKS5nZXQoImV4cGFuZGVkSGRhcyIpKX07cmV0dXJuIHRoaXMubG9hZEhpc3Rvcj0KeSht LGwsayxvLG4pfSxsb2FkSGlzdG9yeTpmdW5jdGlvbihuLG0sbCxxLG8pe3ZhciBrPTNEdGhpcztt PTNEbXx8e307ay50cmlnPQpnZXIoImxvYWRpbmctaGlzdG9yeSIsayk7dmFyIHA9M0RmLkhpc3Rv cnkuZ2V0SGlzdG9yeURhdGEobix7aGlzdG9yeUZuOmwsaGQ9CmFGbjpxLGhkYURldGFpbElkczpt LmluaXRpYWxseUV4cGFuZGVkfHxvfSk7cmV0dXJuIGsuX2xvYWRIaXN0b3J5RnJvbVhIUihwLD0K bSkuZmFpbChmdW5jdGlvbih0LHIscyl7ay50cmlnZ2VyKCJlcnJvciIsayx0LG0sX2woIkFuIGVy cm9yIHdhcyBlbmNvdW50ZXJlPQpkIHdoaWxlICIrcikse2hpc3RvcnlJZDpuLGhpc3Rvcnk6c3x8 e319KX0pLmFsd2F5cyhmdW5jdGlvbigpe2sudHJpZ2dlcigibG89CmFkaW5nLWRvbmUiLGspfSl9 LF9sb2FkSGlzdG9yeUZyb21YSFI6ZnVuY3Rpb24obSxsKXt2YXIgaz0zRHRoaXM7bS50aGVuKGZ1 bj0KY3Rpb24obixvKXtrLkpTT05Ub01vZGVsKG4sbyxsKX0pO20uZmFpbChmdW5jdGlvbihvLG4p e2sucmVuZGVyKCl9KTtyZXR1cm4gPQptfSxKU09OVG9Nb2RlbDpmdW5jdGlvbihuLGssbCl7dGhp cy5sb2coIkpTT05Ub01vZGVsOiIsbixrLGwpO2w9M0RsfHx7fTt2YXI9CiBtPTNEbmV3IGYuSGlz dG9yeShuLGssbCk7dGhpcy5zZXRNb2RlbChtKTtyZXR1cm4gdGhpc30sc2V0TW9kZWw6ZnVuY3Rp b24obD0KLGssbSl7az0zRGt8fHt9O209M0QobSE9M0Q9M0R1bmRlZmluZWQpPyhtKToodHJ1ZSk7 dGhpcy5sb2coInNldE1vZGVsOiIsbCxrPQosbSk7dGhpcy5mcmVlTW9kZWwoKTt0aGlzLnNlbGVj dGVkSGRhSWRzPTNEW107aWYobCl7dGhpcy5tb2RlbD0zRGw7aWYodGhpcy49CmxvZ2dlcil7dGhp cy5tb2RlbC5sb2dnZXI9M0R0aGlzLmxvZ2dlcn10aGlzLl9zZXRVcFdlYlN0b3JhZ2Uoay5pbml0 aWFsbHlFeD0KcGFuZGVkLGsuc2hvd19kZWxldGVkLGsuc2hvd19oaWRkZW4pO3RoaXMuX3NldFVw TW9kZWxFdmVudEhhbmRsZXJzKCk7dGhpcy50PQpyaWdnZXIoIm5ldy1tb2RlbCIsdGhpcyl9aWYo bSl7dGhpcy5yZW5kZXIoKX1yZXR1cm4gdGhpc30sZnJlZU1vZGVsOmZ1bmN0aW89Cm4oKXtpZih0 aGlzLm1vZGVsKXt0aGlzLm1vZGVsLmNsZWFyVXBkYXRlVGltZW91dCgpO3RoaXMuc3RvcExpc3Rl bmluZyh0aGlzLj0KbW9kZWwpO3RoaXMuc3RvcExpc3RlbmluZyh0aGlzLm1vZGVsLmhkYXMpfXRo aXMuZnJlZUhkYVZpZXdzKCk7cmV0dXJuIHRoaXN9PQosZnJlZUhkYVZpZXdzOmZ1bmN0aW9uKCl7 dGhpcy5oZGFWaWV3cz0zRHt9O3JldHVybiB0aGlzfSxfc2V0VXBXZWJTdG9yYWdlOmY9CnVuY3Rp b24obCxrLG0pe3RoaXMuc3RvcmFnZT0zRG5ldyBoKHtpZDpoLmhpc3RvcnlTdG9yYWdlS2V5KHRo aXMubW9kZWwuZ2V0KD0KImlkIikpfSk7aWYoXy5pc09iamVjdChsKSl7dGhpcy5zdG9yYWdlLnNl dCgiZXhhbmRlZEhkYXMiLGwpfWlmKF8uaXNCb29sZWFuPQooaykpe3RoaXMuc3RvcmFnZS5zZXQo InNob3dfZGVsZXRlZCIsayl9aWYoXy5pc0Jvb2xlYW4obSkpe3RoaXMuc3RvcmFnZS5zZXQ9Cigi c2hvd19oaWRkZW4iLG0pfXRoaXMudHJpZ2dlcigibmV3LXN0b3JhZ2UiLHRoaXMuc3RvcmFnZSx0 aGlzKTt0aGlzLmxvZyh0aD0KaXMrIiAoaW5pdCdkKSBzdG9yYWdlOiIsdGhpcy5zdG9yYWdlLmdl dCgpKTtyZXR1cm4gdGhpc30sX3NldFVwTW9kZWxFdmVudEhhPQpuZGxlcnM6ZnVuY3Rpb24oKXt0 aGlzLm1vZGVsLmhkYXMub24oImFkZCIsdGhpcy5hZGRIZGFWaWV3LHRoaXMpO3RoaXMubW9kZWw9 Ci5vbigiZXJyb3IgZXJyb3I6aGRhcyIsZnVuY3Rpb24obCxuLGssbSl7dGhpcy5lcnJvckhhbmRs ZXIobCxuLGssbSl9LHRoaXMpOz0KcmV0dXJuIHRoaXN9LHJlbmRlcjpmdW5jdGlvbihtLG4pe3Ro aXMubG9nKCJyZW5kZXI6IixtLG4pO209M0QobT0zRD0zRD0zRHVuPQpkZWZpbmVkKT8odGhpcy5m eFNwZWVkKToobSk7dmFyIGs9M0R0aGlzLGw7aWYodGhpcy5tb2RlbCl7bD0zRHRoaXMucmVuZGVy TW89CmRlbCgpfWVsc2V7bD0zRHRoaXMucmVuZGVyV2l0aG91dE1vZGVsKCl9JChrKS5xdWV1ZSgi ZngiLFtmdW5jdGlvbihvKXtpZihtJj0KJmsuJGVsLmlzKCI6dmlzaWJsZSIpKXtrLiRlbC5mYWRl T3V0KG0sbyl9ZWxzZXtvKCl9fSxmdW5jdGlvbihvKXtrLiRlbC5lbXB0PQp5KCk7aWYobCl7ay4k ZWwuYXBwZW5kKGwuY2hpbGRyZW4oKSl9bygpfSxmdW5jdGlvbihvKXtpZihtJiYhay4kZWwuaXMo Ijp2aXM9CmlibGUiKSl7ay4kZWwuZmFkZUluKG0sbyl9ZWxzZXtvKCl9fSxmdW5jdGlvbihvKXtp ZihuKXtuLmNhbGwodGhpcyl9ay50cmlnZz0KZXIoInJlbmRlcmVkIix0aGlzKTtvKCl9XSk7cmV0 dXJuIHRoaXN9LHJlbmRlcldpdGhvdXRNb2RlbDpmdW5jdGlvbigpe3ZhciBrPQo9M0QkKCI8ZGl2 Lz4iKSxsPTNEJCgiPGRpdi8+IikuYWRkQ2xhc3MoIm1lc3NhZ2UtY29udGFpbmVyIikuY3NzKHtt YXJnaW46IjQ9CnB4In0pO3JldHVybiBrLmFwcGVuZChsKX0scmVuZGVyTW9kZWw6ZnVuY3Rpb24o KXt2YXIgaz0zRCQoIjxkaXYvPiIpO2suYXBwZT0KbmQoaS50ZW1wbGF0ZXMuaGlzdG9yeVBhbmVs KHRoaXMubW9kZWwudG9KU09OKCkpKTt0aGlzLiRlbXB0eU1lc3NhZ2UoaykudGV4PQp0KHRoaXMu ZW1wdHlNc2cpO2suZmluZCgiLmhpc3Rvcnktc2Vjb25kYXJ5LWFjdGlvbnMiKS5wcmVwZW5kKHRo aXMuX3JlbmRlclM9CmVhcmNoQnV0dG9uKCkpO3RoaXMuX3NldFVwQmVoYXZpb3VycyhrKTt0aGlz LnJlbmRlckhkYXMoayk7cmV0dXJuIGt9LF9yZW5kZT0KckVtcHR5TXNnOmZ1bmN0aW9uKG0pe3Zh ciBsPTNEdGhpcyxrPTNEbC4kZW1wdHlNZXNzYWdlKG0pO2lmKCFfLmlzRW1wdHkobC5oPQpkYVZp ZXdzKSl7ay5oaWRlKCl9ZWxzZXtpZihsLnNlYXJjaEZvcil7ay50ZXh0KGwubm9uZUZvdW5kTXNn KS5zaG93KCl9ZWxzZXs9CmsudGV4dChsLmVtcHR5TXNnKS5zaG93KCl9fXJldHVybiB0aGlzfSxf cmVuZGVyU2VhcmNoQnV0dG9uOmZ1bmN0aW9uKGspe3JldD0KdXJuIGZhSWNvbkJ1dHRvbih7dGl0 bGU6X2woIlNlYXJjaCBkYXRhc2V0cyIpLGNsYXNzZXM6Imhpc3Rvcnktc2VhcmNoLWJ0biIsPQpm YUljb246ImZhLXNlYXJjaCJ9KX0sX3NldFVwQmVoYXZpb3VyczpmdW5jdGlvbihrKXtrPTNEa3x8 dGhpcy4kZWw7ay5maW5kKCI9Clt0aXRsZV0iKS50b29sdGlwKHtwbGFjZW1lbnQ6ImJvdHRvbSJ9 KTt0aGlzLl9zZXRVcFNlYXJjaElucHV0KGsuZmluZCgiLmhpcz0KdG9yeS1zZWFyY2gtY29udHJv bHMgLmhpc3Rvcnktc2VhcmNoLWlucHV0IikpO3JldHVybiB0aGlzfSwkY29udGFpbmVyOmZ1bmN0 PQppb24oKXtyZXR1cm4odGhpcy5maW5kQ29udGFpbmVyRm4pPyh0aGlzLmZpbmRDb250YWluZXJG bi5jYWxsKHRoaXMpKToodGhpcy49CiRlbC5wYXJlbnQoKSl9LCRkYXRhc2V0c0xpc3Q6ZnVuY3Rp b24oayl7cmV0dXJuKGt8fHRoaXMuJGVsKS5maW5kKCIuZGF0YXNldD0Kcy1saXN0Iil9LCRtZXNz YWdlczpmdW5jdGlvbihrKXtyZXR1cm4oa3x8dGhpcy4kZWwpLmZpbmQoIi5tZXNzYWdlLWNvbnRh aW5lPQpyIil9LCRlbXB0eU1lc3NhZ2U6ZnVuY3Rpb24oayl7cmV0dXJuKGt8fHRoaXMuJGVsKS5m aW5kKCIuZW1wdHktaGlzdG9yeS1tZXM9CnNhZ2UiKX0scmVuZGVySGRhczpmdW5jdGlvbihsKXts PTNEbHx8dGhpcy4kZWw7dmFyIGs9M0R0aGlzLG49M0R7fSxtPTNEdGhpcz0KLm1vZGVsLmhkYXMu Z2V0VmlzaWJsZSh0aGlzLnN0b3JhZ2UuZ2V0KCJzaG93X2RlbGV0ZWQiKSx0aGlzLnN0b3JhZ2Uu Z2V0KCJzPQpob3dfaGlkZGVuIiksdGhpcy5maWx0ZXJzKTt0aGlzLiRkYXRhc2V0c0xpc3QobCku ZW1wdHkoKTtpZihtLmxlbmd0aCl7bS5lYWM9CmgoZnVuY3Rpb24ocCl7dmFyIG89M0RwLmdldCgi aWQiKSxxPTNEay5fY3JlYXRlSGRhVmlldyhwKTtuW29dPTNEcTtpZihfLmNvbj0KdGFpbnMoay5z ZWxlY3RlZEhkYUlkcyxvKSl7cS5zZWxlY3RlZD0zRHRydWV9ay5hdHRhY2hIZGFWaWV3KHEucmVu ZGVyKCksbCl9PQopfXRoaXMuaGRhVmlld3M9M0RuO3RoaXMuX3JlbmRlckVtcHR5TXNnKGwpO3Jl dHVybiB0aGlzLmhkYVZpZXdzfSxfY3JlYXRlSGQ9CmFWaWV3OmZ1bmN0aW9uKGwpe3ZhciBrPTNE bC5nZXQoImlkIiksbT0zRG5ldyB0aGlzLkhEQVZpZXdDbGFzcyh7bW9kZWw6bCxsaT0KbmtUYXJn ZXQ6dGhpcy5saW5rVGFyZ2V0LGV4cGFuZGVkOnRoaXMuc3RvcmFnZS5nZXQoImV4cGFuZGVkSGRh cyIpW2tdLGhhc1VzPQplcjp0aGlzLm1vZGVsLm93bmVkQnlDdXJyVXNlcigpLGxvZ2dlcjp0aGlz LmxvZ2dlcn0pO3RoaXMuX3NldFVwSGRhTGlzdGVuZXI9CnMobSk7cmV0dXJuIG19LF9zZXRVcEhk YUxpc3RlbmVyczpmdW5jdGlvbihsKXt2YXIgaz0zRHRoaXM7bC5vbigiZXJyb3IiLGZ1bj0KY3Rp b24obixwLG0sbyl7ay5lcnJvckhhbmRsZXIobixwLG0sbyl9KTtsLm9uKCJib2R5LWV4cGFuZGVk IixmdW5jdGlvbihtKXtrPQouc3RvcmFnZS5hZGRFeHBhbmRlZEhkYShtKX0pO2wub24oImJvZHkt Y29sbGFwc2VkIixmdW5jdGlvbihtKXtrLnN0b3JhZ2UucmU9Cm1vdmVFeHBhbmRlZEhkYShtKX0p O3JldHVybiB0aGlzfSxhdHRhY2hIZGFWaWV3OmZ1bmN0aW9uKG0sbCl7bD0zRGx8fHRoaXMuJD0K ZWw7dmFyIGs9M0R0aGlzLiRkYXRhc2V0c0xpc3QobCk7ay5wcmVwZW5kKG0uJGVsKTtyZXR1cm4g dGhpc30sYWRkSGRhVmlldzpmPQp1bmN0aW9uKG4pe3RoaXMubG9nKCJhZGQuIit0aGlzLG4pO3Zh ciBsPTNEdGhpcztpZighbi5pc1Zpc2libGUodGhpcy5zdG9yYWc9CmUuZ2V0KCJzaG93X2RlbGV0 ZWQiKSx0aGlzLnN0b3JhZ2UuZ2V0KCJzaG93X2hpZGRlbiIpKSl7cmV0dXJuIGx9JCh7fSkucXVl dT0KZShbZnVuY3Rpb24gbShwKXt2YXIgbz0zRGwuJGVtcHR5TWVzc2FnZSgpO2lmKG8uaXMoIjp2 aXNpYmxlIikpe28uZmFkZU91dChsPQouZnhTcGVlZCxwKX1lbHNle3AoKX19LGZ1bmN0aW9uIGso byl7dmFyIHA9M0RsLl9jcmVhdGVIZGFWaWV3KG4pO2wuaGRhVmlld3M9CltuLmlkXT0zRHA7cC5y ZW5kZXIoKS4kZWwuaGlkZSgpO2wuc2Nyb2xsVG9Ub3AoKTtsLmF0dGFjaEhkYVZpZXcocCk7cC4k ZWwucz0KbGlkZURvd24obC5meFNwZWVkKX1dKTtyZXR1cm4gbH0scmVmcmVzaEhkYXM6ZnVuY3Rp b24obCxrKXtpZih0aGlzLm1vZGVsKXtyPQpldHVybiB0aGlzLm1vZGVsLnJlZnJlc2gobCxrKX1y ZXR1cm4gJC53aGVuKCl9LGV2ZW50czp7ImNsaWNrIC5tZXNzYWdlLWNvbnQ9CmFpbmVyIjoiY2xl YXJNZXNzYWdlcyIsImNsaWNrIC5oaXN0b3J5LXNlYXJjaC1idG4iOiJ0b2dnbGVTZWFyY2hDb250 cm9scyJ9LD0KY29sbGFwc2VBbGxIZGFCb2RpZXM6ZnVuY3Rpb24oKXtfLmVhY2godGhpcy5oZGFW aWV3cyxmdW5jdGlvbihrKXtrLnRvZ2dsZUJvPQpkeVZpc2liaWxpdHkobnVsbCxmYWxzZSl9KTt0 aGlzLnN0b3JhZ2Uuc2V0KCJleHBhbmRlZEhkYXMiLHt9KTtyZXR1cm4gdGhpc309Cix0b2dnbGVT aG93RGVsZXRlZDpmdW5jdGlvbihrKXtrPTNEKGshPTNEPTNEdW5kZWZpbmVkKT8oayk6KCF0aGlz LnN0b3JhZ2UuZz0KZXQoInNob3dfZGVsZXRlZCIpKTt0aGlzLnN0b3JhZ2Uuc2V0KCJzaG93X2Rl bGV0ZWQiLGspO3RoaXMucmVuZGVySGRhcygpO3JlPQp0dXJuIHRoaXMuc3RvcmFnZS5nZXQoInNo b3dfZGVsZXRlZCIpfSx0b2dnbGVTaG93SGlkZGVuOmZ1bmN0aW9uKGspe2s9M0QoayE9Cj0zRD0z RHVuZGVmaW5lZCk/KGspOighdGhpcy5zdG9yYWdlLmdldCgic2hvd19oaWRkZW4iKSk7dGhpcy5z dG9yYWdlLnNldCgicz0KaG93X2hpZGRlbiIsayk7dGhpcy5yZW5kZXJIZGFzKCk7cmV0dXJuIHRo aXMuc3RvcmFnZS5nZXQoInNob3dfaGlkZGVuIil9LF9zPQpldFVwU2VhcmNoSW5wdXQ6ZnVuY3Rp b24obCl7dmFyIG09M0R0aGlzLG49M0QiLmhpc3Rvcnktc2VhcmNoLWlucHV0IjtmdW5jdGk9Cm9u IGsobyl7aWYobS5tb2RlbC5oZGFzLmhhdmVEZXRhaWxzKCkpe20uc2VhcmNoSGRhcyhvKTtyZXR1 cm59bS4kZWwuZmluZChuKT0KLnNlYXJjaElucHV0KCJ0b2dnbGUtbG9hZGluZyIpO20ubW9kZWwu aGRhcy5mZXRjaEFsbERldGFpbHMoe3NpbGVudDp0cnVlfSkuPQphbHdheXMoZnVuY3Rpb24oKXtt LiRlbC5maW5kKG4pLnNlYXJjaElucHV0KCJ0b2dnbGUtbG9hZGluZyIpfSkuZG9uZShmdW5jdGk9 Cm9uKCl7bS5zZWFyY2hIZGFzKG8pfSl9bC5zZWFyY2hJbnB1dCh7aW5pdGlhbFZhbDptLnNlYXJj aEZvcixuYW1lOiJoaXN0b3J5LT0Kc2VhcmNoIixwbGFjZWhvbGRlcjoic2VhcmNoIGRhdGFzZXRz IixjbGFzc2VzOiJoaXN0b3J5LXNlYXJjaCIsb25maXJzdHNlYXJjPQpoOmssb25zZWFyY2g6Xy5i aW5kKHRoaXMuc2VhcmNoSGRhcyx0aGlzKSxvbmNsZWFyOl8uYmluZCh0aGlzLmNsZWFySGRhU2Vh cmM9CmgsdGhpcyl9KTtyZXR1cm4gbH0sdG9nZ2xlU2VhcmNoQ29udHJvbHM6ZnVuY3Rpb24obSxr KXt2YXIgbD0zRHRoaXMuJGVsLmZpbj0KZCgiLmhpc3Rvcnktc2VhcmNoLWNvbnRyb2xzIiksbj0z RChqUXVlcnkudHlwZShtKT0zRD0zRD0zRCJudW1iZXIiKT8obSk6KHRoPQppcy5meFNwZWVkKTtr PTNEKGshPTNEPTNEdW5kZWZpbmVkKT8oayk6KCFsLmlzKCI6dmlzaWJsZSIpKTtpZihrKXtsLnNs aWRlRG89CnduKG4sZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoImlucHV0IikuZm9jdXMoKX0pfWVs c2V7bC5zbGlkZVVwKG4pfXJldHVybiBrfT0KLHNlYXJjaEhkYXM6ZnVuY3Rpb24oayl7dmFyIGw9 M0R0aGlzO3RoaXMuc2VhcmNoRm9yPTNEazt0aGlzLmZpbHRlcnM9M0RbZnVuPQpjdGlvbihtKXty ZXR1cm4gbS5tYXRjaGVzQWxsKGwuc2VhcmNoRm9yKX1dO3RoaXMudHJpZ2dlcigic2VhcmNoOnNl YXJjaGluZyI9CixrLHRoaXMpO3RoaXMucmVuZGVySGRhcygpO3JldHVybiB0aGlzfSxjbGVhckhk YVNlYXJjaDpmdW5jdGlvbihrKXt0aGlzLnNlYT0KcmNoRm9yPTNEIiI7dGhpcy5maWx0ZXJzPTNE W107dGhpcy50cmlnZ2VyKCJzZWFyY2g6Y2xlYXIiLHRoaXMpO3RoaXMucmVuZGVyPQpIZGFzKCk7 cmV0dXJuIHRoaXN9LF9zaG93TG9hZGluZ0luZGljYXRvcjpmdW5jdGlvbihsLGssbSl7az0zRChr IT0zRD0zRHVuZGU9CmZpbmVkKT8oayk6KHRoaXMuZnhTcGVlZCk7aWYoIXRoaXMuaW5kaWNhdG9y KXt0aGlzLmluZGljYXRvcj0zRG5ldyBMb2FkaW5nST0KbmRpY2F0b3IodGhpcy4kZWwsdGhpcy4k ZWwucGFyZW50KCkpfWlmKCF0aGlzLiRlbC5pcygiOnZpc2libGUiKSl7dGhpcy5pbmRpPQpjYXRv ci5zaG93KDAsbSl9ZWxzZXt0aGlzLiRlbC5mYWRlT3V0KGspO3RoaXMuaW5kaWNhdG9yLnNob3co bCxrLG0pfX0sX2hpZGU9CkxvYWRpbmdJbmRpY2F0b3I6ZnVuY3Rpb24oayxsKXtrPTNEKGshPTNE PTNEdW5kZWZpbmVkKT8oayk6KHRoaXMuZnhTcGVlZCk7aT0KZih0aGlzLmluZGljYXRvcil7dGhp cy5pbmRpY2F0b3IuaGlkZShrLGwpfX0sZGlzcGxheU1lc3NhZ2U6ZnVuY3Rpb24ocCxxLG8pPQp7 dmFyIG09M0R0aGlzO3RoaXMuc2Nyb2xsVG9Ub3AoKTt2YXIgbj0zRHRoaXMuJG1lc3NhZ2VzKCks az0zRCQoIjxkaXYvPiIpLmE9CmRkQ2xhc3MocCsibWVzc2FnZSIpLmh0bWwocSk7aWYoIV8uaXNF bXB0eShvKSl7dmFyIGw9M0QkKCc8YSBocmVmPTNEImphdmFzYz0KcmlwdDp2b2lkKDApIj5EZXRh aWxzPC9hPicpLmNsaWNrKGZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLnNob3cobS5fbWVzc2FnZVRv PQpNb2RhbE9wdGlvbnMocCxxLG8pKTtyZXR1cm4gZmFsc2V9KTtrLmFwcGVuZCgiICIsbCl9cmV0 dXJuIG4uaHRtbChrKX0sX21lc3M9CmFnZVRvTW9kYWxPcHRpb25zOmZ1bmN0aW9uKG8scSxuKXt2 YXIgaz0zRHRoaXMscD0zRCQoIjxkaXYvPiIpLG09M0R7dGl0bGU6Ij0KRGV0YWlscyJ9O2Z1bmN0 aW9uIGwocil7cj0zRF8ub21pdChyLF8uZnVuY3Rpb25zKHIpKTtyZXR1cm5bIjx0YWJsZT4iLF8u bWFwPQoocixmdW5jdGlvbih0LHMpe3Q9M0QoXy5pc09iamVjdCh0KSk/KGwodCkpOih0KTtyZXR1 cm4nPHRyPjx0ZCBzdHlsZT0zRCJ2ZXI9CnRpY2FsLWFsaWduOiB0b3A7IGNvbG9yOiBncmV5Ij4n K3MrJzwvdGQ+PHRkIHN0eWxlPTNEInBhZGRpbmctbGVmdDogOHB4Ij4nKz0KdCsiPC90ZD48L3Ry PiJ9KS5qb2luKCIiKSwiPC90YWJsZT4iXS5qb2luKCIiKX1pZihfLmlzT2JqZWN0KG4pKXttLmJv ZHk9M0RwPQouYXBwZW5kKGwobikpfWVsc2V7bS5ib2R5PTNEcC5odG1sKG4pfW0uYnV0dG9ucz0z RHtPazpmdW5jdGlvbigpe0dhbGF4eS5tb2Q9CmFsLmhpZGUoKTtrLmNsZWFyTWVzc2FnZXMoKX19 O3JldHVybiBtfSxjbGVhck1lc3NhZ2VzOmZ1bmN0aW9uKCl7dGhpcy4kbWVzcz0KYWdlcygpLmVt cHR5KCk7cmV0dXJuIHRoaXN9LHNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu JGNvbnRhaW5lPQpyKCkuc2Nyb2xsVG9wKCl9LHNjcm9sbFRvOmZ1bmN0aW9uKGspe3RoaXMuJGNv bnRhaW5lcigpLnNjcm9sbFRvcChrKTtyZXR1cm49CiB0aGlzfSxzY3JvbGxUb1RvcDpmdW5jdGlv bigpe3RoaXMuJGNvbnRhaW5lcigpLnNjcm9sbFRvcCgwKTtyZXR1cm4gdGhpc30scz0KY3JvbGxU b0lkOmZ1bmN0aW9uKGwpe2lmKCghbCl8fCghdGhpcy5oZGFWaWV3c1tsXSkpe3JldHVybiB0aGlz fXZhciBrPTNEdGhpPQpzLmhkYVZpZXdzW2xdO3RoaXMuc2Nyb2xsVG8oay5lbC5vZmZzZXRUb3Ap O3JldHVybiB0aGlzfSxzY3JvbGxUb0hpZDpmdW5jdGk9Cm9uKGspe3ZhciBsPTNEdGhpcy5tb2Rl bC5oZGFzLmdldEJ5SGlkKGspO2lmKCFsKXtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5zYz0Kcm9s bFRvSWQobC5pZCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlJlYWRPbmx5SGlzdG9yeVBh bmVsKCIrKCh0aGlzLm1vPQpkZWwpPyh0aGlzLm1vZGVsLmdldCgibmFtZSIpKTooIiIpKSsiKSJ9 fSk7dmFyIGo9M0RbJzxkaXYgY2xhc3M9M0QiaGlzdG9yeS09CmNvbnRyb2xzIj4nLCc8ZGl2IGNs YXNzPTNEImhpc3Rvcnktc2VhcmNoLWNvbnRyb2xzIj4nLCc8ZGl2IGNsYXNzPTNEImhpc3Rvcj0K eS1zZWFyY2gtaW5wdXQiPjwvZGl2PicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QiaGlzdG9yeS10 aXRsZSI+JywiPCUgaWYoIGhpPQpzdG9yeS5uYW1lICl7ICU+IiwnPGRpdiBjbGFzcz0zRCJoaXN0 b3J5LW5hbWUiPjwlPTNEIGhpc3RvcnkubmFtZSAlPjwvZGl2Pic9CiwiPCUgfSAlPiIsIjwvZGl2 PiIsJzxkaXYgY2xhc3M9M0QiaGlzdG9yeS1zdWJ0aXRsZSBjbGVhciI+JywiPCUgaWYoIGhpc3Rv cj0KeS5uaWNlX3NpemUgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImhpc3Rvcnktc2l6ZSI+PCU9M0Qg aGlzdG9yeS5uaWNlX3NpemUgJT48PQovZGl2PicsIjwlIH0gJT4iLCc8ZGl2IGNsYXNzPTNEImhp c3Rvcnktc2Vjb25kYXJ5LWFjdGlvbnMiPjwvZGl2PicsIjwvZGl2PiI9CiwiPCUgaWYoIGhpc3Rv cnkuZGVsZXRlZCApeyAlPiIsJzxkaXYgY2xhc3M9M0Qid2FybmluZ21lc3NhZ2VzbWFsbCI+PHN0 cm9uZz0KPicsX2woIllvdSBhcmUgY3VycmVudGx5IHZpZXdpbmcgYSBkZWxldGVkIGhpc3Rvcnkh IiksIjwvc3Ryb25nPjwvZGl2PiIsIjwlPQogfSAlPiIsJzxkaXYgY2xhc3M9M0QibWVzc2FnZS1j b250YWluZXIiPicsIjwlIGlmKCBoaXN0b3J5Lm1lc3NhZ2UgKXsgJT4iLCc9CjxkaXYgY2xhc3M9 M0QiPCU9M0QgaGlzdG9yeS5zdGF0dXMgJT5tZXNzYWdlIj48JT0zRCBoaXN0b3J5Lm1lc3NhZ2Ug JT48L2Rpdj0KPicsIjwlIH0gJT4iLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPTNEInF1b3RhLW1lc3Nh Z2UgZXJyb3JtZXNzYWdlIj4nLF9sKCJZb3UgPQphcmUgb3ZlciB5b3VyIGRpc2sgcXVvdGEuIiks X2woIlRvb2wgZXhlY3V0aW9uIGlzIG9uIGhvbGQgdW50aWwgeW91ciBkaXNrIHU9CnNhZ2UgZHJv cHMgYmVsb3cgeW91ciBhbGxvY2F0ZWQgcXVvdGEuIiksIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0Qi dGFncy1kaXNwbD0KYXkiPjwvZGl2PicsJzxkaXYgY2xhc3M9M0QiYW5ub3RhdGlvbi1kaXNwbGF5 Ij48L2Rpdj4nLCc8ZGl2IGNsYXNzPTNEImhpc3RvPQpyeS1kYXRhc2V0LWFjdGlvbnMiPicsJzxk aXYgY2xhc3M9M0QiYnRuLWdyb3VwIj4nLCc8YnV0dG9uIGNsYXNzPTNEImhpc3Rvcnk9Ci1zZWxl Y3QtYWxsLWRhdGFzZXRzLWJ0biBidG4gYnRuLWRlZmF1bHQiJywnZGF0YS1tb2RlPTNEInNlbGVj dCI+JyxfbCgiQWxsIj0KKSwiPC9idXR0b24+IiwnPGJ1dHRvbiBjbGFzcz0zRCJoaXN0b3J5LWRl c2VsZWN0LWFsbC1kYXRhc2V0cy1idG4gYnRuIGJ0bi1kPQplZmF1bHQiJywnZGF0YS1tb2RlPTNE InNlbGVjdCI+JyxfbCgiTm9uZSIpLCI8L2J1dHRvbj4iLCI8L2Rpdj4iLCc8YnV0dG9uIGM9Cmxh c3M9M0QiaGlzdG9yeS1kYXRhc2V0LWFjdGlvbi1wb3B1cC1idG4gYnRuIGJ0bi1kZWZhdWx0Ij4n LF9sKCJGb3IgYWxsIHNlbD0KZWN0ZWQiKSwiLi4uPC9idXR0b24+IiwiPC9kaXY+IiwiPC9kaXY+ IiwnPGRpdiBjbGFzcz0zRCJkYXRhc2V0cy1saXN0Ij48L2RpPQp2PicsJzxkaXYgY2xhc3M9M0Qi ZW1wdHktaGlzdG9yeS1tZXNzYWdlIGluZm9tZXNzYWdlc21hbGwiPicsX2woIllvdXIgaGlzdG89 CnJ5IGlzIGVtcHR5LiBDbGljayAnR2V0IERhdGEnIG9uIHRoZSBsZWZ0IHBhbmUgdG8gc3RhcnQi KSwiPC9kaXY+Il0uam9pbigiIj0KKTtpLnRlbXBsYXRlcz0zRHtoaXN0b3J5UGFuZWw6ZnVuY3Rp b24oayl7cmV0dXJuIF8udGVtcGxhdGUoaixrLHt2YXJpYWJsZToiPQpoaXN0b3J5In0pfX07cmV0 dXJue1JlYWRPbmx5SGlzdG9yeVBhbmVsOml9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQorZGVmaW5lKFsibXZjL2hpc3RvcnkvaGlzdG9yeS1tb2RlbCIsIm12Yy9kYXRhc2V0L2hkYS1i YXNlIiwibXZjL3VzZXIvdXNlci09Cm1vZGVsIiwibXZjL2Jhc2UtbXZjIiwidXRpbHMvbG9jYWxp emF0aW9uIl0sZnVuY3Rpb24oZyxiLGEsZixkKXt2YXIgaT0zRGYuUz0KZXNzaW9uU3RvcmFnZU1v ZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2V4cGFuZGVkSGRhczp7fSxzaG93X2RlbGV0ZWQ6ZmFsc2Us c2hvPQp3X2hpZGRlbjpmYWxzZX0sYWRkRXhwYW5kZWRIZGE6ZnVuY3Rpb24obSl7dmFyIGw9M0Qi ZXhwYW5kZWRIZGFzIjt0aGlzLnNhdmU9CihsLF8uZXh0ZW5kKHRoaXMuZ2V0KGwpLF8ub2JqZWN0 KFttXSxbdHJ1ZV0pKSl9LHJlbW92ZUV4cGFuZGVkSGRhOmZ1bmN0aW9uKD0KbSl7dmFyIGw9M0Qi ZXhwYW5kZWRIZGFzIjt0aGlzLnNhdmUobCxfLm9taXQodGhpcy5nZXQobCksbSkpfSx0b1N0cmlu ZzpmdW5jPQp0aW9uKCl7cmV0dXJuIkhpc3RvcnlQcmVmcygiK3RoaXMuaWQrIikifX0pO2kuc3Rv cmFnZUtleVByZWZpeD0zRCJoaXN0b3J5OiI9CjtpLmhpc3RvcnlTdG9yYWdlS2V5PTNEZnVuY3Rp b24gZShsKXtpZighbCl7dGhyb3cgbmV3IEVycm9yKCJIaXN0b3J5UHJlZnMuaD0KaXN0b3J5U3Rv cmFnZUtleSBuZWVkcyB2YWxpZCBpZDogIitsKX1yZXR1cm4oaS5zdG9yYWdlS2V5UHJlZml4K2wp fTtpLmdldD0KPTNEZnVuY3Rpb24gYyhsKXtyZXR1cm4gbmV3IGkoe2lkOmkuaGlzdG9yeVN0b3Jh Z2VLZXkobCl9KX07aS5jbGVhckFsbD0zRGZ1PQpuY3Rpb24gaChtKXtmb3IodmFyIGwgaW4gc2Vz c2lvblN0b3JhZ2Upe2lmKGwuaW5kZXhPZihpLnN0b3JhZ2VLZXlQcmVmaXgpPQo9M0Q9M0Q9M0Qw KXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGwpfX19O3ZhciBqPTNEQmFja2JvbmUuVmlldy5l eHRlbmQoZi49CkxvZ2dhYmxlTWl4aW4pLmV4dGVuZCh7SERBVmlld0NsYXNzOmIuSERBQmFzZVZp ZXcsdGFnTmFtZToiZGl2IixjbGFzc05hbWU6Ij0KaGlzdG9yeS1wYW5lbCIsZnhTcGVlZDoiZmFz dCIsZW1wdHlNc2c6ZCgiVGhpcyBoaXN0b3J5IGlzIGVtcHR5Iiksbm9uZUZvdW5kPQpNc2c6ZCgi Tm8gbWF0Y2hpbmcgZGF0YXNldHMgZm91bmQiKSxpbml0aWFsaXplOmZ1bmN0aW9uKGwpe2w9M0Rs fHx7fTtpZihsLmw9Cm9nZ2VyKXt0aGlzLmxvZ2dlcj0zRGwubG9nZ2VyfXRoaXMubG9nKHRoaXMr Ii5pbml0aWFsaXplOiIsbCk7dGhpcy5saW5rVGFyZz0KZXQ9M0RsLmxpbmtUYXJnZXR8fCJfYmxh bmsiO3RoaXMuZnhTcGVlZD0zRF8uaGFzKGwsImZ4U3BlZWQiKT8obC5meFNwZWVkKTooPQp0aGlz LmZ4U3BlZWQpO3RoaXMuZmlsdGVycz0zRFtdO3RoaXMuc2VhcmNoRm9yPTNEIiI7dGhpcy5maW5k Q29udGFpbmVyRm49M0Q9CmwuZmluZENvbnRhaW5lckZuO3RoaXMuaGRhVmlld3M9M0R7fTt0aGlz LmluZGljYXRvcj0zRG5ldyBMb2FkaW5nSW5kaWNhdG9yKD0KdGhpcy4kZWwpO3RoaXMuX3NldFVw TGlzdGVuZXJzKCk7dmFyIG09M0RfLnBpY2sobCwiaW5pdGlhbGx5RXhwYW5kZWQiLCJzaG93PQpf ZGVsZXRlZCIsInNob3dfaGlkZGVuIik7dGhpcy5zZXRNb2RlbCh0aGlzLm1vZGVsLG0sZmFsc2Up O2lmKGwub25yZWFkeSl7bC49Cm9ucmVhZHkuY2FsbCh0aGlzKX19LF9zZXRVcExpc3RlbmVyczpm dW5jdGlvbigpe3RoaXMub24oImVycm9yIixmdW5jdGlvbihtLD0KcCxsLG8sbil7dGhpcy5lcnJv ckhhbmRsZXIobSxwLGwsbyxuKX0pO3RoaXMub24oImxvYWRpbmctaGlzdG9yeSIsZnVuY3Rpb24o PQope3RoaXMuX3Nob3dMb2FkaW5nSW5kaWNhdG9yKCJsb2FkaW5nIGhpc3RvcnkuLi4iLDQwKX0p O3RoaXMub24oImxvYWRpbmctZG89Cm5lIixmdW5jdGlvbigpe3RoaXMuX2hpZGVMb2FkaW5nSW5k aWNhdG9yKDQwKTtpZihfLmlzRW1wdHkodGhpcy5oZGFWaWV3cykpez0KdGhpcy50cmlnZ2VyKCJl bXB0eS1oaXN0b3J5Iix0aGlzKX19KTt0aGlzLm9uY2UoInJlbmRlcmVkIixmdW5jdGlvbigpe3Ro aXMuPQp0cmlnZ2VyKCJyZW5kZXJlZDppbml0aWFsIix0aGlzKTtyZXR1cm4gZmFsc2V9KTtpZih0 aGlzLmxvZ2dlcil7dGhpcy5vbigiYWw9CmwiLGZ1bmN0aW9uKGwpe3RoaXMubG9nKHRoaXMrIiIs YXJndW1lbnRzKX0sdGhpcyl9cmV0dXJuIHRoaXN9LGVycm9ySGFuZGxlcj0KOmZ1bmN0aW9uKG4s cSxtLHAsbyl7Y29uc29sZS5lcnJvcihuLHEsbSxwLG8pO2lmKHEmJnEuc3RhdHVzPTNEPTNEPTNE MCYmcS5yPQplYWR5U3RhdGU9M0Q9M0Q9M0QwKXt9ZWxzZXtpZihxJiZxLnN0YXR1cz0zRD0zRD0z RDUwMil7fWVsc2V7dmFyIGw9M0R0aGlzLl89CnBhcnNlRXJyb3JNZXNzYWdlKG4scSxtLHAsbyk7 aWYoIXRoaXMuJG1lc3NhZ2VzKCkuaXMoIjp2aXNpYmxlIikpe3RoaXMub25jZT0KKCJyZW5kZXJl ZCIsZnVuY3Rpb24oKXt0aGlzLmRpc3BsYXlNZXNzYWdlKCJlcnJvciIsbC5tZXNzYWdlLGwuZGV0 YWlscyl9KX1lPQpsc2V7dGhpcy5kaXNwbGF5TWVzc2FnZSgiZXJyb3IiLGwubWVzc2FnZSxsLmRl dGFpbHMpfX19fSxfcGFyc2VFcnJvck1lc3NhZ2U9CjpmdW5jdGlvbihvLHMsbixyLHEpe3ZhciBt PTNER2FsYXh5LmN1cnJVc2VyLGw9M0R7bWVzc2FnZTp0aGlzLl9iZVBvbGl0ZShyKT0KLGRldGFp bHM6e3VzZXI6KG0gaW5zdGFuY2VvZiBhLlVzZXIpPyhtLnRvSlNPTigpKToobSsiIiksc291cmNl OihvIGluc3RhbmNlPQpvZiBCYWNrYm9uZS5Nb2RlbCk/KG8udG9KU09OKCkpOihvKyIiKSx4aHI6 cyxvcHRpb25zOihzKT8oXy5vbWl0KG4sInhociIpKTo9CihuKX19O18uZXh0ZW5kKGwuZGV0YWls cyxxfHx7fSk7aWYocyYmXy5pc0Z1bmN0aW9uKHMuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKT0KKXt2 YXIgcD0zRHMuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7cD0zRF8uY29tcGFjdChwLnNwbGl0KCJc biIpKTtwPTNEXy5tYXAoPQpwLGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCI6ICIpfSk7bC5k ZXRhaWxzLnhoci5yZXNwb25zZUhlYWRlcnM9M0RfLm9iamU9CmN0KHApfXJldHVybiBsfSxfYmVQ b2xpdGU6ZnVuY3Rpb24obCl7bD0zRGx8fGQoIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGdldD0K dGluZyB1cGRhdGVzIGZyb20gdGhlIHNlcnZlciIpO3JldHVybiBsKyIuICIrZCgiUGxlYXNlIGNv bnRhY3QgYSBHYWxheHkgYWRtPQppbmlzdHJhdG9yIGlmIHRoZSBwcm9ibGVtIHBlcnNpc3RzLiIp fSxsb2FkSGlzdG9yeVdpdGhIREFEZXRhaWxzOmZ1bmN0aW9uKG49CixtLGwscCl7dmFyIG89M0Rm dW5jdGlvbihxKXtyZXR1cm4gXy5rZXlzKGkuZ2V0KHEuaWQpLmdldCgiZXhwYW5kZWRIZGFzIikp fT0KO3JldHVybiB0aGlzLmxvYWRIaXN0b3J5KG4sbSxsLHAsbyl9LGxvYWRIaXN0b3J5OmZ1bmN0 aW9uKG8sbixtLHIscCl7dmFyIGw9Cj0zRHRoaXM7bj0zRG58fHt9O2wudHJpZ2dlcigibG9hZGlu Zy1oaXN0b3J5IixsKTt2YXIgcT0zRGcuSGlzdG9yeS5nZXRIaXN0bz0KcnlEYXRhKG8se2hpc3Rv cnlGbjptLGhkYUZuOnIsaGRhRGV0YWlsSWRzOm4uaW5pdGlhbGx5RXhwYW5kZWR8fHB9KTtyZXR1 cm4gPQpsLl9sb2FkSGlzdG9yeUZyb21YSFIocSxuKS5mYWlsKGZ1bmN0aW9uKHUscyx0KXtsLnRy aWdnZXIoImVycm9yIixsLHUsbixkKCI9CkFuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCB3aGlsZSAi K3MpLHtoaXN0b3J5SWQ6byxoaXN0b3J5OnR8fHt9fSl9KS5hbHdheXMoZj0KdW5jdGlvbigpe2wu dHJpZ2dlcigibG9hZGluZy1kb25lIixsKX0pfSxfbG9hZEhpc3RvcnlGcm9tWEhSOmZ1bmN0aW9u KG4sbSl7PQp2YXIgbD0zRHRoaXM7bi50aGVuKGZ1bmN0aW9uKG8scCl7bC5KU09OVG9Nb2RlbChv LHAsbSl9KTtuLmZhaWwoZnVuY3Rpb24ocCw9Cm8pe2wucmVuZGVyKCl9KTtyZXR1cm4gbn0sSlNP TlRvTW9kZWw6ZnVuY3Rpb24obyxsLG0pe3RoaXMubG9nKCJKU09OVG9Nb2RlbD0KOiIsbyxsLG0p O209M0RtfHx7fTt2YXIgbj0zRG5ldyBnLkhpc3RvcnkobyxsLG0pO3RoaXMuc2V0TW9kZWwobik7 cmV0dXJuIHRoPQppc30sc2V0TW9kZWw6ZnVuY3Rpb24obSxsLG4pe2w9M0RsfHx7fTtuPTNEKG4h PTNEPTNEdW5kZWZpbmVkKT8obik6KHRydWUpO3Q9Cmhpcy5sb2coInNldE1vZGVsOiIsbSxsLG4p O3RoaXMuZnJlZU1vZGVsKCk7dGhpcy5zZWxlY3RlZEhkYUlkcz0zRFtdO2lmKG0pez0KdGhpcy5t b2RlbD0zRG07aWYodGhpcy5sb2dnZXIpe3RoaXMubW9kZWwubG9nZ2VyPTNEdGhpcy5sb2dnZXJ9 dGhpcy5fc2V0VXBXPQplYlN0b3JhZ2UobC5pbml0aWFsbHlFeHBhbmRlZCxsLnNob3dfZGVsZXRl ZCxsLnNob3dfaGlkZGVuKTt0aGlzLl9zZXRVcE1vZGU9CmxFdmVudEhhbmRsZXJzKCk7dGhpcy50 cmlnZ2VyKCJuZXctbW9kZWwiLHRoaXMpfWlmKG4pe3RoaXMucmVuZGVyKCl9cmV0dXJuID0KdGhp c30sZnJlZU1vZGVsOmZ1bmN0aW9uKCl7aWYodGhpcy5tb2RlbCl7dGhpcy5tb2RlbC5jbGVhclVw ZGF0ZVRpbWVvdXQoKTt0PQpoaXMuc3RvcExpc3RlbmluZyh0aGlzLm1vZGVsKTt0aGlzLnN0b3BM aXN0ZW5pbmcodGhpcy5tb2RlbC5oZGFzKX10aGlzLmZyZWU9CkhkYVZpZXdzKCk7cmV0dXJuIHRo aXN9LGZyZWVIZGFWaWV3czpmdW5jdGlvbigpe3RoaXMuaGRhVmlld3M9M0R7fTtyZXR1cm4gdD0K aGlzfSxfc2V0VXBXZWJTdG9yYWdlOmZ1bmN0aW9uKG0sbCxuKXt0aGlzLnN0b3JhZ2U9M0RuZXcg aSh7aWQ6aS5oaXN0b3J5U3RvPQpyYWdlS2V5KHRoaXMubW9kZWwuZ2V0KCJpZCIpKX0pO2lmKF8u aXNPYmplY3QobSkpe3RoaXMuc3RvcmFnZS5zZXQoImV4YW5kZWQ9CkhkYXMiLG0pfWlmKF8uaXNC b29sZWFuKGwpKXt0aGlzLnN0b3JhZ2Uuc2V0KCJzaG93X2RlbGV0ZWQiLGwpfWlmKF8uaXNCb29s ZT0KYW4obikpe3RoaXMuc3RvcmFnZS5zZXQoInNob3dfaGlkZGVuIixuKX10aGlzLnRyaWdnZXIo Im5ldy1zdG9yYWdlIix0aGlzLnN0PQpvcmFnZSx0aGlzKTt0aGlzLmxvZyh0aGlzKyIgKGluaXQn ZCkgc3RvcmFnZToiLHRoaXMuc3RvcmFnZS5nZXQoKSk7cmV0dXJuIHQ9Cmhpc30sX3NldFVwTW9k ZWxFdmVudEhhbmRsZXJzOmZ1bmN0aW9uKCl7dGhpcy5tb2RlbC5oZGFzLm9uKCJhZGQiLHRoaXMu YWRkSD0KZGFWaWV3LHRoaXMpO3RoaXMubW9kZWwub24oImVycm9yIGVycm9yOmhkYXMiLGZ1bmN0 aW9uKG0sbyxsLG4pe3RoaXMuZXJyb3JIPQphbmRsZXIobSxvLGwsbil9LHRoaXMpO3JldHVybiB0 aGlzfSxyZW5kZXI6ZnVuY3Rpb24obixvKXt0aGlzLmxvZygicmVuZGVyOiI9CixuLG8pO249M0Qo bj0zRD0zRD0zRHVuZGVmaW5lZCk/KHRoaXMuZnhTcGVlZCk6KG4pO3ZhciBsPTNEdGhpcyxtO2lm KHRoaXMubT0Kb2RlbCl7bT0zRHRoaXMucmVuZGVyTW9kZWwoKX1lbHNle209M0R0aGlzLnJlbmRl cldpdGhvdXRNb2RlbCgpfSQobCkucXVldWUoPQoiZngiLFtmdW5jdGlvbihwKXtpZihuJiZsLiRl bC5pcygiOnZpc2libGUiKSl7bC4kZWwuZmFkZU91dChuLHApfWVsc2V7cCgpfX09CixmdW5jdGlv bihwKXtsLiRlbC5lbXB0eSgpO2lmKG0pe2wuJGVsLmFwcGVuZChtLmNoaWxkcmVuKCkpfXAoKX0s ZnVuY3Rpb24ocD0KKXtpZihuJiYhbC4kZWwuaXMoIjp2aXNpYmxlIikpe2wuJGVsLmZhZGVJbihu LHApfWVsc2V7cCgpfX0sZnVuY3Rpb24ocCl7aWYoPQpvKXtvLmNhbGwodGhpcyl9bC50cmlnZ2Vy KCJyZW5kZXJlZCIsdGhpcyk7cCgpfV0pO3JldHVybiB0aGlzfSxyZW5kZXJXaXRob3U9CnRNb2Rl bDpmdW5jdGlvbigpe3ZhciBsPTNEJCgiPGRpdi8+IiksbT0zRCQoIjxkaXYvPiIpLmFkZENsYXNz KCJtZXNzYWdlLWNvbj0KdGFpbmVyIikuY3NzKHttYXJnaW46IjRweCJ9KTtyZXR1cm4gbC5hcHBl bmQobSl9LHJlbmRlck1vZGVsOmZ1bmN0aW9uKCl7dmFyPQogbD0zRCQoIjxkaXYvPiIpO2wuYXBw ZW5kKGoudGVtcGxhdGVzLmhpc3RvcnlQYW5lbCh0aGlzLm1vZGVsLnRvSlNPTigpKSk7dGg9Cmlz LiRlbXB0eU1lc3NhZ2UobCkudGV4dCh0aGlzLmVtcHR5TXNnKTtsLmZpbmQoIi5oaXN0b3J5LXNl Y29uZGFyeS1hY3Rpb25zIj0KKS5wcmVwZW5kKHRoaXMuX3JlbmRlclNlYXJjaEJ1dHRvbigpKTt0 aGlzLl9zZXRVcEJlaGF2aW91cnMobCk7dGhpcy5yZW5kZXJIPQpkYXMobCk7cmV0dXJuIGx9LF9y ZW5kZXJFbXB0eU1zZzpmdW5jdGlvbihuKXt2YXIgbT0zRHRoaXMsbD0zRG0uJGVtcHR5TWVzc2E9 CmdlKG4pO2lmKCFfLmlzRW1wdHkobS5oZGFWaWV3cykpe2wuaGlkZSgpfWVsc2V7aWYobS5zZWFy Y2hGb3Ipe2wudGV4dChtLm5vbj0KZUZvdW5kTXNnKS5zaG93KCl9ZWxzZXtsLnRleHQobS5lbXB0 eU1zZykuc2hvdygpfX1yZXR1cm4gdGhpc30sX3JlbmRlclNlYXJjPQpoQnV0dG9uOmZ1bmN0aW9u KGwpe3JldHVybiBmYUljb25CdXR0b24oe3RpdGxlOmQoIlNlYXJjaCBkYXRhc2V0cyIpLGNsYXNz ZXM9CjoiaGlzdG9yeS1zZWFyY2gtYnRuIixmYUljb246ImZhLXNlYXJjaCJ9KX0sX3NldFVwQmVo YXZpb3VyczpmdW5jdGlvbihsKXtsPQo9M0RsfHx0aGlzLiRlbDtsLmZpbmQoIlt0aXRsZV0iKS50 b29sdGlwKHtwbGFjZW1lbnQ6ImJvdHRvbSJ9KTt0aGlzLl9zZXRVcFM9CmVhcmNoSW5wdXQobC5m aW5kKCIuaGlzdG9yeS1zZWFyY2gtY29udHJvbHMgLmhpc3Rvcnktc2VhcmNoLWlucHV0IikpO3Jl dHVybj0KIHRoaXN9LCRjb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5maW5kQ29udGFp bmVyRm4pPyh0aGlzLmZpbmRDb250YWluPQplckZuLmNhbGwodGhpcykpOih0aGlzLiRlbC5wYXJl bnQoKSl9LCRkYXRhc2V0c0xpc3Q6ZnVuY3Rpb24obCl7cmV0dXJuKGx8fHQ9Cmhpcy4kZWwpLmZp bmQoIi5kYXRhc2V0cy1saXN0Iil9LCRtZXNzYWdlczpmdW5jdGlvbihsKXtyZXR1cm4obHx8dGhp cy4kZWwpLj0KZmluZCgiLm1lc3NhZ2UtY29udGFpbmVyIil9LCRlbXB0eU1lc3NhZ2U6ZnVuY3Rp b24obCl7cmV0dXJuKGx8fHRoaXMuJGVsKS5mPQppbmQoIi5lbXB0eS1oaXN0b3J5LW1lc3NhZ2Ui KX0scmVuZGVySGRhczpmdW5jdGlvbihtKXttPTNEbXx8dGhpcy4kZWw7dmFyIGw9Cj0zRHRoaXMs bz0zRHt9LG49M0R0aGlzLm1vZGVsLmhkYXMuZ2V0VmlzaWJsZSh0aGlzLnN0b3JhZ2UuZ2V0KCJz aG93X2RlbGV0ZT0KZCIpLHRoaXMuc3RvcmFnZS5nZXQoInNob3dfaGlkZGVuIiksdGhpcy5maWx0 ZXJzKTt0aGlzLiRkYXRhc2V0c0xpc3QobSkuZW1wPQp0eSgpO2lmKG4ubGVuZ3RoKXtuLmVhY2go ZnVuY3Rpb24ocSl7dmFyIHA9M0RxLmdldCgiaWQiKSxyPTNEbC5fY3JlYXRlSGRhVmk9CmV3KHEp O29bcF09M0RyO2lmKF8uY29udGFpbnMobC5zZWxlY3RlZEhkYUlkcyxwKSl7ci5zZWxlY3RlZD0z RHRydWV9bC5hdHRhYz0KaEhkYVZpZXcoci5yZW5kZXIoKSxtKX0pfXRoaXMuaGRhVmlld3M9M0Rv O3RoaXMuX3JlbmRlckVtcHR5TXNnKG0pO3JldHVybiB0PQpoaXMuaGRhVmlld3N9LF9jcmVhdGVI ZGFWaWV3OmZ1bmN0aW9uKG0pe3ZhciBsPTNEbS5nZXQoImlkIiksbj0zRG5ldyB0aGlzLkg9CkRB Vmlld0NsYXNzKHttb2RlbDptLGxpbmtUYXJnZXQ6dGhpcy5saW5rVGFyZ2V0LGV4cGFuZGVkOnRo aXMuc3RvcmFnZS5nZXQoIj0KZXhwYW5kZWRIZGFzIilbbF0saGFzVXNlcjp0aGlzLm1vZGVsLm93 bmVkQnlDdXJyVXNlcigpLGxvZ2dlcjp0aGlzLmxvZ2dlcn0pPQo7dGhpcy5fc2V0VXBIZGFMaXN0 ZW5lcnMobik7cmV0dXJuIG59LF9zZXRVcEhkYUxpc3RlbmVyczpmdW5jdGlvbihtKXt2YXIgbD0K PTNEdGhpczttLm9uKCJlcnJvciIsZnVuY3Rpb24obyxxLG4scCl7bC5lcnJvckhhbmRsZXIobyxx LG4scCl9KTttLm9uKCJib2R5PQotZXhwYW5kZWQiLGZ1bmN0aW9uKG4pe2wuc3RvcmFnZS5hZGRF eHBhbmRlZEhkYShuKX0pO20ub24oImJvZHktY29sbGFwc2VkIiw9CmZ1bmN0aW9uKG4pe2wuc3Rv cmFnZS5yZW1vdmVFeHBhbmRlZEhkYShuKX0pO3JldHVybiB0aGlzfSxhdHRhY2hIZGFWaWV3OmZ1 bj0KY3Rpb24obixtKXttPTNEbXx8dGhpcy4kZWw7dmFyIGw9M0R0aGlzLiRkYXRhc2V0c0xpc3Qo bSk7bC5wcmVwZW5kKG4uJGVsKTtyPQpldHVybiB0aGlzfSxhZGRIZGFWaWV3OmZ1bmN0aW9uKG8p e3RoaXMubG9nKCJhZGQuIit0aGlzLG8pO3ZhciBtPTNEdGhpcztpZig9CiFvLmlzVmlzaWJsZSh0 aGlzLnN0b3JhZ2UuZ2V0KCJzaG93X2RlbGV0ZWQiKSx0aGlzLnN0b3JhZ2UuZ2V0KCJzaG93X2hp ZGRlbj0KIikpKXtyZXR1cm4gbX0kKHt9KS5xdWV1ZShbZnVuY3Rpb24gbihxKXt2YXIgcD0zRG0u JGVtcHR5TWVzc2FnZSgpO2lmKHAuaXMoPQoiOnZpc2libGUiKSl7cC5mYWRlT3V0KG0uZnhTcGVl ZCxxKX1lbHNle3EoKX19LGZ1bmN0aW9uIGwocCl7dmFyIHE9M0RtLl9jcmU9CmF0ZUhkYVZpZXco byk7bS5oZGFWaWV3c1tvLmlkXT0zRHE7cS5yZW5kZXIoKS4kZWwuaGlkZSgpO20uc2Nyb2xsVG9U b3AoKTttLj0KYXR0YWNoSGRhVmlldyhxKTtxLiRlbC5zbGlkZURvd24obS5meFNwZWVkKX1dKTty ZXR1cm4gbX0scmVmcmVzaEhkYXM6ZnVuY3RpPQpvbihtLGwpe2lmKHRoaXMubW9kZWwpe3JldHVy biB0aGlzLm1vZGVsLnJlZnJlc2gobSxsKX1yZXR1cm4gJC53aGVuKCl9LGV2ZW49CnRzOnsiY2xp Y2sgLm1lc3NhZ2UtY29udGFpbmVyIjoiY2xlYXJNZXNzYWdlcyIsImNsaWNrIC5oaXN0b3J5LXNl YXJjaC1idG4iOj0KInRvZ2dsZVNlYXJjaENvbnRyb2xzIn0sY29sbGFwc2VBbGxIZGFCb2RpZXM6 ZnVuY3Rpb24oKXtfLmVhY2godGhpcy5oZGFWaWV3PQpzLGZ1bmN0aW9uKGwpe2wudG9nZ2xlQm9k eVZpc2liaWxpdHkobnVsbCxmYWxzZSl9KTt0aGlzLnN0b3JhZ2Uuc2V0KCJleHBhbmQ9CmVkSGRh cyIse30pO3JldHVybiB0aGlzfSx0b2dnbGVTaG93RGVsZXRlZDpmdW5jdGlvbihsKXtsPTNEKGwh PTNEPTNEdW5kZWZpbj0KZWQpPyhsKTooIXRoaXMuc3RvcmFnZS5nZXQoInNob3dfZGVsZXRlZCIp KTt0aGlzLnN0b3JhZ2Uuc2V0KCJzaG93X2RlbGV0ZWQiPQosbCk7dGhpcy5yZW5kZXJIZGFzKCk7 cmV0dXJuIHRoaXMuc3RvcmFnZS5nZXQoInNob3dfZGVsZXRlZCIpfSx0b2dnbGVTaG93SGk9CmRk ZW46ZnVuY3Rpb24obCl7bD0zRChsIT0zRD0zRHVuZGVmaW5lZCk/KGwpOighdGhpcy5zdG9yYWdl LmdldCgic2hvd19oaWRkZT0KbiIpKTt0aGlzLnN0b3JhZ2Uuc2V0KCJzaG93X2hpZGRlbiIsbCk7 dGhpcy5yZW5kZXJIZGFzKCk7cmV0dXJuIHRoaXMuc3RvcmFnPQplLmdldCgic2hvd19oaWRkZW4i KX0sX3NldFVwU2VhcmNoSW5wdXQ6ZnVuY3Rpb24obSl7dmFyIG49M0R0aGlzLG89M0QiLmhpc3Q9 Cm9yeS1zZWFyY2gtaW5wdXQiO2Z1bmN0aW9uIGwocCl7aWYobi5tb2RlbC5oZGFzLmhhdmVEZXRh aWxzKCkpe24uc2VhcmNoSGRhcz0KKHApO3JldHVybn1uLiRlbC5maW5kKG8pLnNlYXJjaElucHV0 KCJ0b2dnbGUtbG9hZGluZyIpO24ubW9kZWwuaGRhcy5mZXRjaEFsPQpsRGV0YWlscyh7c2lsZW50 OnRydWV9KS5hbHdheXMoZnVuY3Rpb24oKXtuLiRlbC5maW5kKG8pLnNlYXJjaElucHV0KCJ0b2dn bGU9Ci1sb2FkaW5nIil9KS5kb25lKGZ1bmN0aW9uKCl7bi5zZWFyY2hIZGFzKHApfSl9bS5zZWFy Y2hJbnB1dCh7aW5pdGlhbFZhbDpuLj0Kc2VhcmNoRm9yLG5hbWU6Imhpc3Rvcnktc2VhcmNoIixw bGFjZWhvbGRlcjoic2VhcmNoIGRhdGFzZXRzIixjbGFzc2VzOiJoaXN0PQpvcnktc2VhcmNoIixv bmZpcnN0c2VhcmNoOmwsb25zZWFyY2g6Xy5iaW5kKHRoaXMuc2VhcmNoSGRhcyx0aGlzKSxvbmNs ZWFyOl89Ci5iaW5kKHRoaXMuY2xlYXJIZGFTZWFyY2gsdGhpcyl9KTtyZXR1cm4gbX0sdG9nZ2xl U2VhcmNoQ29udHJvbHM6ZnVuY3Rpb24obj0KLGwpe3ZhciBtPTNEdGhpcy4kZWwuZmluZCgiLmhp c3Rvcnktc2VhcmNoLWNvbnRyb2xzIiksbz0zRChqUXVlcnkudHlwZShuKT0KPTNEPTNEPTNEIm51 bWJlciIpPyhuKToodGhpcy5meFNwZWVkKTtsPTNEKGwhPTNEPTNEdW5kZWZpbmVkKT8obCk6KCFt LmlzKCI6PQp2aXNpYmxlIikpO2lmKGwpe20uc2xpZGVEb3duKG8sZnVuY3Rpb24oKXskKHRoaXMp LmZpbmQoImlucHV0IikuZm9jdXMoKX0pfWU9CmxzZXttLnNsaWRlVXAobyl9cmV0dXJuIGx9LHNl YXJjaEhkYXM6ZnVuY3Rpb24obCl7dmFyIG09M0R0aGlzO3RoaXMuc2VhcmNoRj0Kb3I9M0RsO3Ro aXMuZmlsdGVycz0zRFtmdW5jdGlvbihuKXtyZXR1cm4gbi5tYXRjaGVzQWxsKG0uc2VhcmNoRm9y KX1dO3RoaXMuPQp0cmlnZ2VyKCJzZWFyY2g6c2VhcmNoaW5nIixsLHRoaXMpO3RoaXMucmVuZGVy SGRhcygpO3JldHVybiB0aGlzfSxjbGVhckhkYVM9CmVhcmNoOmZ1bmN0aW9uKGwpe3RoaXMuc2Vh cmNoRm9yPTNEIiI7dGhpcy5maWx0ZXJzPTNEW107dGhpcy50cmlnZ2VyKCJzZWFyYz0KaDpjbGVh ciIsdGhpcyk7dGhpcy5yZW5kZXJIZGFzKCk7cmV0dXJuIHRoaXN9LF9zaG93TG9hZGluZ0luZGlj YXRvcjpmdW5jdGlvPQpuKG0sbCxuKXtsPTNEKGwhPTNEPTNEdW5kZWZpbmVkKT8obCk6KHRoaXMu ZnhTcGVlZCk7aWYoIXRoaXMuaW5kaWNhdG9yKXt0aGk9CnMuaW5kaWNhdG9yPTNEbmV3IExvYWRp bmdJbmRpY2F0b3IodGhpcy4kZWwsdGhpcy4kZWwucGFyZW50KCkpfWlmKCF0aGlzLiRlbD0KLmlz KCI6dmlzaWJsZSIpKXt0aGlzLmluZGljYXRvci5zaG93KDAsbil9ZWxzZXt0aGlzLiRlbC5mYWRl T3V0KGwpO3RoaXMuaW5kPQppY2F0b3Iuc2hvdyhtLGwsbil9fSxfaGlkZUxvYWRpbmdJbmRpY2F0 b3I6ZnVuY3Rpb24obCxtKXtsPTNEKGwhPTNEPTNEdW5kZWY9CmluZWQpPyhsKToodGhpcy5meFNw ZWVkKTtpZih0aGlzLmluZGljYXRvcil7dGhpcy5pbmRpY2F0b3IuaGlkZShsLG0pfX0sZGlzcD0K bGF5TWVzc2FnZTpmdW5jdGlvbihxLHIscCl7dmFyIG49M0R0aGlzO3RoaXMuc2Nyb2xsVG9Ub3Ao KTt2YXIgbz0zRHRoaXMuJG1lPQpzc2FnZXMoKSxsPTNEJCgiPGRpdi8+IikuYWRkQ2xhc3MocSsi bWVzc2FnZSIpLmh0bWwocik7aWYoIV8uaXNFbXB0eShwKSl7dmE9CnIgbT0zRCQoJzxhIGhyZWY9 M0QiamF2YXNjcmlwdDp2b2lkKDApIj5EZXRhaWxzPC9hPicpLmNsaWNrKGZ1bmN0aW9uKCl7R2Fs YT0KeHkubW9kYWwuc2hvdyhuLl9tZXNzYWdlVG9Nb2RhbE9wdGlvbnMocSxyLHApKTtyZXR1cm4g ZmFsc2V9KTtsLmFwcGVuZCgiICIsPQptKX1yZXR1cm4gby5odG1sKGwpfSxfbWVzc2FnZVRvTW9k YWxPcHRpb25zOmZ1bmN0aW9uKHAscixvKXt2YXIgbD0zRHRoaXMscT0KPTNEJCgiPGRpdi8+Iiks bj0zRHt0aXRsZToiRGV0YWlscyJ9O2Z1bmN0aW9uIG0ocyl7cz0zRF8ub21pdChzLF8uZnVuY3Rp b25zPQoocykpO3JldHVyblsiPHRhYmxlPiIsXy5tYXAocyxmdW5jdGlvbih1LHQpe3U9M0QoXy5p c09iamVjdCh1KSk/KG0odSkpOih1KTs9CnJldHVybic8dHI+PHRkIHN0eWxlPTNEInZlcnRpY2Fs LWFsaWduOiB0b3A7IGNvbG9yOiBncmV5Ij4nK3QrJzwvdGQ+PHRkIHN0eT0KbGU9M0QicGFkZGlu Zy1sZWZ0OiA4cHgiPicrdSsiPC90ZD48L3RyPiJ9KS5qb2luKCIiKSwiPC90YWJsZT4iXS5qb2lu KCIiKX1pPQpmKF8uaXNPYmplY3Qobykpe24uYm9keT0zRHEuYXBwZW5kKG0obykpfWVsc2V7bi5i b2R5PTNEcS5odG1sKG8pfW4uYnV0dG9ucz0KPTNEe09rOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFs LmhpZGUoKTtsLmNsZWFyTWVzc2FnZXMoKX19O3JldHVybiBufSxjbGVhck1lPQpzc2FnZXM6ZnVu Y3Rpb24oKXt0aGlzLiRtZXNzYWdlcygpLmVtcHR5KCk7cmV0dXJuIHRoaXN9LHNjcm9sbFBvc2l0 aW9uOmZ1bmM9CnRpb24oKXtyZXR1cm4gdGhpcy4kY29udGFpbmVyKCkuc2Nyb2xsVG9wKCl9LHNj cm9sbFRvOmZ1bmN0aW9uKGwpe3RoaXMuJGNvbj0KdGFpbmVyKCkuc2Nyb2xsVG9wKGwpO3JldHVy biB0aGlzfSxzY3JvbGxUb1RvcDpmdW5jdGlvbigpe3RoaXMuJGNvbnRhaW5lcigpPQouc2Nyb2xs VG9wKDApO3JldHVybiB0aGlzfSxzY3JvbGxUb0lkOmZ1bmN0aW9uKG0pe2lmKCghbSl8fCghdGhp cy5oZGFWaWV3c1s9Cm1dKSl7cmV0dXJuIHRoaXN9dmFyIGw9M0R0aGlzLmhkYVZpZXdzW21dO3Ro aXMuc2Nyb2xsVG8obC5lbC5vZmZzZXRUb3ApO3JldD0KdXJuIHRoaXN9LHNjcm9sbFRvSGlkOmZ1 bmN0aW9uKGwpe3ZhciBtPTNEdGhpcy5tb2RlbC5oZGFzLmdldEJ5SGlkKGwpO2lmKCFtPQope3Jl dHVybiB0aGlzfXJldHVybiB0aGlzLnNjcm9sbFRvSWQobS5pZCl9LHRvU3RyaW5nOmZ1bmN0aW9u KCl7cmV0dXJuIlJlYWQ9Ck9ubHlIaXN0b3J5UGFuZWwoIisoKHRoaXMubW9kZWwpPyh0aGlzLm1v ZGVsLmdldCgibmFtZSIpKTooIiIpKSsiKSJ9fSk7dmFyID0Kaz0zRFsnPGRpdiBjbGFzcz0zRCJo aXN0b3J5LWNvbnRyb2xzIj4nLCc8ZGl2IGNsYXNzPTNEImhpc3Rvcnktc2VhcmNoLWNvbnRyPQpv bHMiPicsJzxkaXYgY2xhc3M9M0QiaGlzdG9yeS1zZWFyY2gtaW5wdXQiPjwvZGl2PicsIjwvZGl2 PiIsJzxkaXYgY2xhc3M9M0Q9CiJoaXN0b3J5LXRpdGxlIj4nLCI8JSBpZiggaGlzdG9yeS5uYW1l ICl7ICU+IiwnPGRpdiBjbGFzcz0zRCJoaXN0b3J5LW5hbWUiPj0KPCU9M0QgaGlzdG9yeS5uYW1l ICU+PC9kaXY+JywiPCUgfSAlPiIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QiaGlzdG9yeS1zdWJ0 PQppdGxlIGNsZWFyIj4nLCI8JSBpZiggaGlzdG9yeS5uaWNlX3NpemUgKXsgJT4iLCc8ZGl2IGNs YXNzPTNEImhpc3Rvcnktc2l6ZSI9Cj48JT0zRCBoaXN0b3J5Lm5pY2Vfc2l6ZSAlPjwvZGl2Pics IjwlIH0gJT4iLCc8ZGl2IGNsYXNzPTNEImhpc3Rvcnktc2Vjb25kYT0KcnktYWN0aW9ucyI+PC9k aXY+JywiPC9kaXY+IiwiPCUgaWYoIGhpc3RvcnkuZGVsZXRlZCApeyAlPiIsJzxkaXYgY2xhc3M9 M0QiPQp3YXJuaW5nbWVzc2FnZXNtYWxsIj48c3Ryb25nPicsZCgiWW91IGFyZSBjdXJyZW50bHkg dmlld2luZyBhIGRlbGV0ZWQgaGlzdG89CnJ5ISIpLCI8L3N0cm9uZz48L2Rpdj4iLCI8JSB9ICU+ IiwnPGRpdiBjbGFzcz0zRCJtZXNzYWdlLWNvbnRhaW5lciI+JywiPCUgaT0KZiggaGlzdG9yeS5t ZXNzYWdlICl7ICU+IiwnPGRpdiBjbGFzcz0zRCI8JT0zRCBoaXN0b3J5LnN0YXR1cyAlPm1lc3Nh Z2UiPjwlPQo9M0QgaGlzdG9yeS5tZXNzYWdlICU+PC9kaXY+JywiPCUgfSAlPiIsIjwvZGl2PiIs JzxkaXYgY2xhc3M9M0QicXVvdGEtbWVzc2E9CmdlIGVycm9ybWVzc2FnZSI+JyxkKCJZb3UgYXJl IG92ZXIgeW91ciBkaXNrIHF1b3RhLiIpLGQoIlRvb2wgZXhlY3V0aW9uIGlzID0Kb24gaG9sZCB1 bnRpbCB5b3VyIGRpc2sgdXNhZ2UgZHJvcHMgYmVsb3cgeW91ciBhbGxvY2F0ZWQgcXVvdGEuIiks IjwvZGl2PiIsPQonPGRpdiBjbGFzcz0zRCJ0YWdzLWRpc3BsYXkiPjwvZGl2PicsJzxkaXYgY2xh c3M9M0QiYW5ub3RhdGlvbi1kaXNwbGF5Ij48L2Q9Cml2PicsJzxkaXYgY2xhc3M9M0QiaGlzdG9y eS1kYXRhc2V0LWFjdGlvbnMiPicsJzxkaXYgY2xhc3M9M0QiYnRuLWdyb3VwIj4nLD0KJzxidXR0 b24gY2xhc3M9M0QiaGlzdG9yeS1zZWxlY3QtYWxsLWRhdGFzZXRzLWJ0biBidG4gYnRuLWRlZmF1 bHQiJywnZGF0YS1tPQpvZGU9M0Qic2VsZWN0Ij4nLGQoIkFsbCIpLCI8L2J1dHRvbj4iLCc8YnV0 dG9uIGNsYXNzPTNEImhpc3RvcnktZGVzZWxlY3QtYWw9CmwtZGF0YXNldHMtYnRuIGJ0biBidG4t ZGVmYXVsdCInLCdkYXRhLW1vZGU9M0Qic2VsZWN0Ij4nLGQoIk5vbmUiKSwiPC9idXR0bz0Kbj4i LCI8L2Rpdj4iLCc8YnV0dG9uIGNsYXNzPTNEImhpc3RvcnktZGF0YXNldC1hY3Rpb24tcG9wdXAt YnRuIGJ0biBidG4tZGVmPQphdWx0Ij4nLGQoIkZvciBhbGwgc2VsZWN0ZWQiKSwiLi4uPC9idXR0 b24+IiwiPC9kaXY+IiwiPC9kaXY+IiwnPGRpdiBjbGFzcz0KPTNEImRhdGFzZXRzLWxpc3QiPjwv ZGl2PicsJzxkaXYgY2xhc3M9M0QiZW1wdHktaGlzdG9yeS1tZXNzYWdlIGluZm9tZXNzYWdlPQpz bWFsbCI+JyxkKCJZb3VyIGhpc3RvcnkgaXMgZW1wdHkuIENsaWNrICdHZXQgRGF0YScgb24gdGhl IGxlZnQgcGFuZSB0byBzdGE9CnJ0IiksIjwvZGl2PiJdLmpvaW4oIiIpO2oudGVtcGxhdGVzPTNE e2hpc3RvcnlQYW5lbDpmdW5jdGlvbihsKXtyZXR1cm4gXy50ZT0KbXBsYXRlKGssbCx7dmFyaWFi bGU6Imhpc3RvcnkifSl9fTtyZXR1cm57UmVhZE9ubHlIaXN0b3J5UGFuZWw6an19KTsKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpUaGlzIGRpZmYgaXMgc28gYmlnIHRoYXQgd2UgbmVlZGVk IHRvIHRydW5jYXRlIHRoZSByZW1haW5kZXIuCgpSZXBvc2l0b3J5IFVSTDogaHR0cHM6Ly9iaXRi dWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC8KCi0tCgpUaGlzIGlzIGEgY29tbWl0IG5v dGlmaWNhdGlvbiBmcm9tIGJpdGJ1Y2tldC5vcmcuIFlvdSBhcmUgcmVjZWl2aW5nCnRoaXMgYmVj YXVzZSB5b3UgaGF2ZSB0aGUgc2VydmljZSBlbmFibGVkLCBhZGRyZXNzaW5nIHRoZSByZWNpcGll bnQgb2YKdGhpcyBlbWFpbC4K
participants (1)
-
commits-noreply@bitbucket.org