UHLpdm9pciBkZXMgY29tbWFuZGVzIGVuIHBsdXNpZXVycyBtb3RzIGNs6XMuClBhciBleGVtcGxlIDoKCiAgdGltZW91dCBjb25uZWN0aW9uIFhYWAogIGNvbm5lY3Rpb24gc2NhbGUgWFhYCgpPbiBkb2l0IGF1c3NpIGFjY2VwdGVyIGxlcyBwculmaXhlcyA6CgogIHRpbSBjbyBYWFgKICBjbyBzY2EgWFhYCgpQcul2b2lyIGRlIHJhbmdlciBsZXMgY29tYmluYWlzb25zIGRhbnMgdW4gdGFibGVhdS4gT24gZG9pdCBt6m1lCnBvdXZvaXIgZWZmZWN0dWVyIHVuIG1hcHBpbmcgc2ltcGxpZmlhbnQgbGUgcGFyc2V1ci4KCgpQb3VyIGxlcyBmaWx0cmVzIDoKCgogICAgPGRpcmVjdGlvbj4gPHdoZXJlPiA8d2hhdD4gPG9wZXJhdG9yPiA8cGF0dGVybj4gPGFjdGlvbj4gWyA8YXJncz4qIF0KCiAgICA8ZGlyZWN0aW9uPiA9IFsgcmVxIHwgcnNwIF0KICAgIDx3aGVyZT4gICAgID0gWyBpbiB8IG91dCBdCiAgICA8d2hhdD4gICAgICA9IFsgbGluZSB8IExJTkUgfCBNRVRIIHwgVVJJIHwgaChoZHIpIHwgSChoZHIpIHwgYyhjb29raWUpIHwgQyhjb29raWUpIF0KICAgIDxvcGVyYXRvcj4gID0gWyA9PSB8ID1+IHwgPSogfCA9XiB8ID0vIHwgIT0gfCAhfiB8ICEqIHwgIV4gfCAhLyBdCiAgICA8cGF0dGVybj4gICA9ICI8c3RyaW5nPiIKICAgIDxhY3Rpb24+ICAgID0gWyBhbGxvdyB8IHBlcm1pdCB8IGRlbnkgfCBkZWxldGUgfCByZXBsYWNlIHwgc3dpdGNoIHwgYWRkIHwgc2V0IHwgcmVkaXIgXQogICAgPGFyZ3M+ICAgICAgPSBvcHRpb25hbCBhY3Rpb24gYXJncwoKICAgIGV4YW1wbGVzOgoKICAgICAgICByZXEgaW4gVVJJICAgICA9XiAiL2ltYWdlcyIgc3dpdGNoIGltYWdlcwogICAgICAgIHJlcSBpbiBoKGhvc3QpID0qICIubXlkb21haW4uY29tIiBzd2l0Y2ggbXlkb21haW4KICAgICAgICByZXEgaW4gaChob3N0KSA9fiAibG9jYWxob3N0KC4qKSIgcmVwbGFjZSAid3d3XDEiCgogICAgYWx0ZXJuYXRpdmUgOgoKICAgIDxkaXJlY3Rpb24+IDx3aGVyZT4gPGFjdGlvbj4gW25vdF0gPHdoYXQ+IFs8b3BlcmF0b3I+IDxwYXR0ZXJuPiBbIDxhcmdzPiogXV0KCiAgICAgICAgcmVxIGluICBzd2l0Y2ggICBVUkkgICAgID1eICIvaW1hZ2VzIiBpbWFnZXMKICAgICAgICByZXEgaW4gIHN3aXRjaCAgIGgoaG9zdCkgPSogIi5teWRvbWFpbi5jb20iIG15ZG9tYWluCiAgICAgICAgcmVxIGluICByZXBsYWNlICBoKGhvc3QpID1+ICJsb2NhbGhvc3QoLiopIiAid3d3XDEiCiAgICAgICAgcmVxIGluICBkZWxldGUgICBoKENvbm5lY3Rpb24pCiAgICAgICAgcmVxIGluICBkZW55IG5vdCBsaW5lID1+ICIoKEdFVHxIRUFEfFBPU1R8T1BUSU9OUykgLyl8KE9QVElPTlMgKikiCiAgICAgICAgcmVxIG91dCBzZXQgICAgICBoKENvbm5lY3Rpb24pICJjbG9zZSIKICAgICAgICByZXEgb3V0IGFkZCAgICAgIGxpbmUgIlNlcnZlcjogdHJ1YyIKCgogICAgPGRpcmVjdGlvbj4gPGFjdGlvbj4gPHdoZXJlPiBbbm90XSA8d2hhdD4gWzxvcGVyYXRvcj4gPHBhdHRlcm4+IFsgPGFyZ3M+KiBdXSAnOycgPGFjdGlvbjI+IDx3aGF0Mj4KCiAgICAgICAgcmVxIGluICBzd2l0Y2ggICBVUkkgICAgID1eICIvaW1hZ2VzLyIgaW1hZ2VzIDsgcmVwbGFjZSAiLyIKICAgICAgICByZXEgaW4gIHN3aXRjaCAgIGgoaG9zdCkgPSogIi5teWRvbWFpbi5jb20iIG15ZG9tYWluCiAgICAgICAgcmVxIGluICByZXBsYWNlICBoKGhvc3QpID1+ICJsb2NhbGhvc3QoLiopIiAid3d3XDEiCiAgICAgICAgcmVxIGluICBkZWxldGUgICBoKENvbm5lY3Rpb24pCiAgICAgICAgcmVxIGluICBkZW55IG5vdCBsaW5lID1+ICIoKEdFVHxIRUFEfFBPU1R8T1BUSU9OUykgLyl8KE9QVElPTlMgKikiCiAgICAgICAgcmVxIG91dCBzZXQgICAgICBoKENvbm5lY3Rpb24pICJjbG9zZSIKICAgICAgICByZXEgb3V0IGFkZCAgICAgIGxpbmUgPT0gIlNlcnZlcjogdHJ1YyIKCgpFeHRlbnNpb24gYXZlYyBkZXMgQUNMIDoKCiAgICAgICAgcmVxIGluIGFjbChtZXRoX3ZhbGlkKSAgIE1FVEggPX4gIihHRVR8UE9TVHxIRUFEfE9QVElPTlMpIiAgCiAgICAgICAgcmVxIGluIGFjbChtZXRoX29wdGlvbnMpIE1FVEggPT0gIk9QVElPTlMiIAogICAgICAgIHJlcSBpbiBhY2wodXJpX3NsYXNoKSAgICBVUkkgID1eICIvIiAKICAgICAgICByZXEgaW4gYWNsKHVyaV9zdGFyKSAgICAgVVJJICA9PSAiKiIgCgogICAgICAgIHJlcSBpbiBkZW55IGFjbCAhKG1ldGhfb3B0aW9ucyAmJiB1cmlfc3RhciB8fCBtZXRoX3ZhbGlkICYmIHVyaV9zbGFzaCkKClBldXQt6nRyZSBwbHVzIHNpbXBsZW1lbnQgOgoKICAgICAgICBhY2wgbWV0aF92YWxpZCAgIE1FVEggPX4gIihHRVR8UE9TVHxIRUFEfE9QVElPTlMpIiAgCiAgICAgICAgYWNsIG1ldGhfb3B0aW9ucyBNRVRIID09ICJPUFRJT05TIiAKICAgICAgICBhY2wgdXJpX3NsYXNoICAgIFVSSSAgPV4gIi8iIAogICAgICAgIGFjbCB1cmlfc3RhciAgICAgVVJJICA9PSAiKiIgCgogICAgICAgIHJlcSBpbiAgZGVueSBub3QgYWNsKG1ldGhfb3B0aW9ucyB1cmlfc3RhciwgbWV0aF92YWxpZCB1cmlfc2xhc2gpCgogICAgICAgIHJlcSBpbiAgc3dpdGNoICAgVVJJICAgICA9XiAiL2ltYWdlcy8iIGltYWdlcyA7IHJlcGxhY2UgIi8iCiAgICAgICAgcmVxIGluICBzd2l0Y2ggICBoKGhvc3QpID0qICIubXlkb21haW4uY29tIiBteWRvbWFpbgogICAgICAgIHJlcSBpbiAgcmVwbGFjZSAgaChob3N0KSA9fiAibG9jYWxob3N0KC4qKSIgInd3d1wxIgogICAgICAgIHJlcSBpbiAgZGVsZXRlICAgaChDb25uZWN0aW9uKQogICAgICAgIHJlcSBpbiAgZGVueSBub3QgbGluZSA9fiAiKChHRVR8SEVBRHxQT1NUfE9QVElPTlMpIC8pfChPUFRJT05TICopIgogICAgICAgIHJlcSBvdXQgc2V0ICAgICAgaChDb25uZWN0aW9uKSAiY2xvc2UiCiAgICAgICAgcmVxIG91dCBhZGQgICAgICBsaW5lID09ICJTZXJ2ZXI6IHRydWMiCgpQcul2b2lyIGxlIGNhcyBkdSAiaWYiIHBvdXIgZXjpY3V0ZXIgcGx1c2lldXJzIGFjdGlvbnMgOgoKICAgICAgICByZXEgaW4gIGlmIFVSSSA9XiAiL2ltYWdlcy8iIHRoZW4gcmVwbGFjZSAiLyIgOyBzd2l0Y2ggaW1hZ2VzCgpVdGlsaXNlciBsZXMgbm9tcyBlbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMgcG91ciBpbmRpcXVlciBzaSBvbiB2ZXV0IHByZW5kcmUKZW4gY29tcHRlIGxhIGNhc3NlIG91IG5vbiA6CgogICAgICAgIGlmIHVyaSAgPV4gIi93YXRjaC8iICAgICAgIHNldGJlIHdhdGNoICAgcmViYXNlICIvd2F0Y2gvIiAiLyIKICAgICAgICBpZiB1cmkgID0qICIuanBnIiAgICAgICAgICBzZXRiZSBpbWFnZXMKICAgICAgICBpZiB1cmkgID1+ICIuKmRsbC4qIiAgICAgICBkZW55CiAgICAgICAgaWYgSE9TVCA9KiAiLm15ZG9tYWluLmNvbSIgc2V0YmUgbXlkb21haW4KICAgICAgICBldGMuLi4KCkFub3RoZXIgc29sdXRpb24gd291bGQgYmUgdG8gaGF2ZSBhIGRlZGljYXRlZCBrZXl3b3JkIHRvIFVSSSByZW1hcHBpbmcuIEl0CndvdWxkIGJvdGggcmV3cml0ZSB0aGUgVVJJIGFuZCBvcHRpb25hbGx5IHN3aXRjaCB0byBhbm90aGVyIGJhY2tlbmQuCgogICAgICAgIHVyaXJlbWFwICIvd2F0Y2gvIiAgIi8iICAgICAgIHdhdGNoCiAgICAgICAgdXJpcmVtYXAgIi9jaGF0LyIgICAiLyIgICAgICAgY2hhdAogICAgICAgIHVyaXJlbWFwICIvZXZlbnQvIiAgIi9ldmVudC8iIGV2ZW50CgpPciBiZXR0ZXIgOgoKICAgICAgICB1cmlyZW1hcCAiL3dhdGNoLyIgIHdhdGNoICAiLyIKICAgICAgICB1cmlyZW1hcCAiL2NoYXQvIiAgIGNoYXQgICAiLyIKICAgICAgICB1cmlyZW1hcCAiL2V2ZW50LyIgIGV2ZW50CgpGb3IgdGhlIFVSSSwgdXNpbmcgYSByZWdleCBpcyBzb21ldGltZXMgdXNlZnVsIChlZzogcHJvdmlkaW5nIGEgc2V0IG9mIHBvc3NpYmxlIHByZWZpeGVzLgoKClNpbm9uLCBwZXV0Lep0cmUgcXVlIGxlICJzd2l0Y2giIHBldXQgcHJlbmRyZSB1biBwYXJhbeh0cmUgZGUgbWFwcGluZyBwb3VyIGxhIHBhcnRpZSBtYXRjaOllIDoKCiAgICAgICAgcmVxIGluICBzd2l0Y2ggICBVUkkgICAgID1eICIvaW1hZ2VzLyIgaW1hZ2VzOiIvIgoKCjIwMDcvMDMvMzEgLSBCZXNvaW5zIHBsdXMgcHLpY2lzLgoKMSkgYXVjdW5lIGV4dGVuc2lvbiBkZSBicmFuY2hlbWVudCBvdSBhdXRyZSBkYW5zIGxlcyAibGlzdGVuIiwgYydlc3QgdHJvcCBjb21wbGV4ZS4KCkRpc3Rpbmd1ZXIgbGVzIGRvbm7pZXMgZW50cmFudGVzIChpbikgZXQgc29ydGFudGVzIChvdXQpLgoKTGUgZnJvbnRlbmQgbmUgdm9pdCBxdWUgbGVzIHJlcXVldGVzIGVudHJhbnRlcyBldCBsZXMgculwb25zZXMgc29ydGFudGVzLgpMZSBiYWNrZW5kIHZvaXIgbGVzIHJlcXXqdGVzIGluL291dCBldCBsZXMgculwb25zZXMgaW4vb3V0LgpMZSBmcm9udGVuZCBwZXJtZXQgbGVzIGJyYW5jaGVtZW50cyBkJ2Vuc2VtYmxlcyBkZSBmaWx0cmVzIGRlIHJlcXXqdGVzIHZlcnMKZCdhdXRyZXMuIExlIGZyb250ZW5kIGV0IGxlcyBlbnNlbWJsZXMgZGUgZmlsdHJlcyBkZSByZXF16nRlcyBwZXV2ZW50IGJyYW5jaGVyCnZlcnMgdW4gYmFja2VuZC4KCi0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSsKICBcICBXaGVyZSB8ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgfAogICBcX19fX19fIHwgTGlzdGVuIHwgRnJvbnRlbmQgfCBSZXFSdWxlcyB8IEJhY2tlbmQgfCBSc3BSdWxlcyB8CiAgICAgICAgICBcfCAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwKQ2FwYWJpbGl0eSB8ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgfAotLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rCkZyb250ZW5kICAgfCAgICBYICAgfCAgICAgWCAgICB8ICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwKLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKwpGaWx0UmVxSW4gIHwgICAgWCAgIHwgICAgIFggICAgfCAgICAgWCAgICB8ICAgIFggICAgfCAgICAgICAgICB8Ci0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSsKSnVtcEZpbHRSZXF8ICAgIFggICB8ICAgICBYICAgIHwgICAgIFggICAgfCAgICAgICAgIHwgICAgICAgICAgfCBcCi0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSsgID4gPSBSZXFKdW1wClNldEJhY2tlbmQgfCAgICBYICAgfCAgICAgWCAgICB8ICAgICBYICAgIHwgICAgICAgICB8ICAgICAgICAgIHwgLwotLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rCkZpbHRSZXFPdXQgfCAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgIHwgICAgWCAgICB8ICAgICAgICAgIHwKLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKwpGaWx0UnNwSW4gIHwgICAgWCAgIHwgICAgICAgICAgfCAgICAgICAgICB8ICAgIFggICAgfCAgICAgWCAgICB8Ci0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSsKSnVtcEZpbHRSc3B8ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgfCAgICBYICAgIHwgICAgIFggICAgfAotLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rCkZpbHRSc3BPdXQgfCAgICAgICAgfCAgICAgWCAgICB8ICAgICAgICAgIHwgICAgWCAgICB8ICAgICBYICAgIHwKLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKwpCYWNrZW5kICAgIHwgICAgWCAgIHwgICAgICAgICAgfCAgICAgICAgICB8ICAgIFggICAgfCAgICAgICAgICB8Ci0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSsKCkVuIGNvbmNsdXNpb24KLS0tLS0tLS0tLS0tLQoKSWwgeSBhIGF1IG1vaW5zIGJlc29pbiBkZSBkaXN0aW5ndWVyIDggZm9uY3Rpb25uYWxpdOlzIGRlIGJhc2UgOgogLSBjYXBhY2l06SDgIHJlY2V2b2lyIGRlcyBjb25uZXhpb25zIChmcm9udGVuZCkKIC0gY2FwYWNpdOkg4CBmaWx0cmVyIGxlcyByZXF16nRlcyBlbnRyYW50ZXMKIC0gY2FwYWNpdOkg4CBicmFuY2hlciB2ZXJzIHVuIGJhY2tlbmQgb3UgdW4gZW5zZW1ibGUgZGUgcuhnbGVzIGRlIHJlcXXqdGVzCiAtIGNhcGFjaXTpIOAgZmlsdHJlciBsZXMgcmVxdep0ZXMgc29ydGFudGVzCiAtIGNhcGFjaXTpIOAgZmlsdHJlciBsZXMgculwb25zZXMgZW50cmFudGVzCiAtIGNhcGFjaXTpIOAgYnJhbmNoZXIgdmVycyB1biBhdXRyZSBlbnNlbWJsZSBkZSBy6GdsZXMgZGUgculwb25zZXMKIC0gY2FwYWNpdOkg4CBmaWx0cmVyIGxhIHLpcG9uc2Ugc29ydGFudGUKIC0gY2FwYWNpdOkg4CBn6XJlciBkZXMgc2VydmV1cnMgKGJhY2tlbmQpCgpSZW1hcnF1ZQotLS0tLS0tLQogLSBvbiBhIHNvdXZlbnQgYmVzb2luIGRlIHBvdXZvaXIgYXBwbGlxdWVyIHVuIHBldGl0IHRyYWl0ZW1lbnQgc3VyIHVuIGVuc2VtYmxlCiAgIGhvc3QvdXJpL2F1dHJlLiBMZSBwZXRpdCB0cmFpdGVtZW50IHBldXQgY29uc2lzdGVyIGVuIHF1ZWxxdWVzIGZpbHRyZXMgYWluc2kKICAgcXUndW5lIHLp6WNyaXR1cmUgZHUgY291cGxlIChob3N0LHVyaSkuCgoKUHJvcG9zaXRpb24gOiBBQ0wKClN5bnRheGUgOgotLS0tLS0tLS0KCiAgIGFjbCA8bmFtZT4gPHdoYXQ+IDxvcGVyYXRvcj4gPHZhbHVlPiAuLi4KCkNlY2kgY3LpZXJhIHVuZSBhY2wgculm6XJlbmPpZSBzb3VzIGxlIG5vbSA8bmFtZT4gcXVpIHNlcmEgdmFsaWTpZSBzaQpsJ2FwcGxpY2F0aW9uIGQnYXUgbW9pbnMgdW5lIGRlcyB2YWxldXJzIDx2YWx1ZT4gYXZlYyBsJ29w6XJhdGV1ciA8b3BlcmF0b3I+CnN1ciBsZSBzdWpldCA8d2hhdD4gZXN0IHZhbGlk6WUuCgpPcOlyYXRldXJzIDoKLS0tLS0tLS0tLS0tCgpUb3Vqb3VycyAyIGNhcmFjdOhyZXMgOgoKICBbPSFdW349Kl4lLy5dCgpQcmVtaWVyIGNhcmFjdOhyZSA6ICAKICAgJz0nIDogT0sgc2kgdGVzdCB2YWxpZGUKICAgJyEnIDogT0sgc2kgdGVzdCDpY2hvdekuCgpTZWNvbmQgY2FyYWN06HJlIDoKICAgJ34nIDogY29tcGFyZSBhdmVjIHVuZSByZWdleAogICAnPScgOiBjb21wYXJlIGNoYe5uZSDgIGNoYe5uZQogICAnKicgOiBjb21wYXJlIGxhIGZpbiBkZSBsYSBjaGHubmUgKGV4OiA9KiAiLm15ZG9tYWluLmNvbSIpCiAgICdeJyA6IGNvbXBhcmUgbGUgZOlidXQgZGUgbGEgY2hh7m5lIChleDogPV4gIi9pbWFnZXMvIikKICAgJyUnIDogcmVjaGVyY2hlIHVuZSBzb3VzLWNoYe5uZQogICAnLycgOiBjb21wYXJlIGF2ZWMgdW4gbW90IGVudGllciBlbiBhY2NlcHRhbnQgbGUgJy8nIGNvbW1lIGTpbGltaXRldXIKICAgJy4nIDogY29tcGFyZSBhdmVjIHVuIG1vdCBlbnRpZXIgZW4gYWNjZXB0YW50IGVsICcuJyBjb21tZSBk6WxpbWl0ZXVyCgpFbnN1aXRlIG9uIGV46WN1dGUgdW5lIGFjdGlvbiBkZSBtYW5p6HJlIGNvbmRpdGlvbm5lbGxlIHNpIGwnZW5zZW1ibGUgZGVzIEFDTHMKbWVudGlvbm7pZXMgc29udCB2YWxpZOllcyAob3UgaW52YWxpZOllcyBwb3VyIGNlbGxlcyBwculj6WTpZXMgZCd1biAiISIpIDoKCiAgIDx3aGF0PiA8d2hlcmU+IDxhY3Rpb24+IG9uIFshXTxhY2xuYW1lPiAuLi4KCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICBhY2wgd3d3X3B1YiBob3N0ID0uIHd3dyB3d3cwMSBkZXYgcHJlcHJvZAogICBhY2wgaW1naG9zdCBob3N0ID0uIGltYWdlcwogICBhY2wgaW1nZGlyICAgdXJpID0vIGltZwogICBhY2wgaW1hZ2VkaXIgdXJpID0vIGltYWdlcwogICBhY2wgbXNpZSBoKHVzZXItYWdlbnQpID0lICJNU0lFIgoKICAgc2V0X2hvc3QgICJpbWFnZXMiICAgICAgIG9uIHd3d19wdWIgaW1nZGlyIAogICByZW1hcF91cmkgIi9pbWciICAgICIvIiAgb24gd3d3X3B1YiBpbWdkaXIKICAgcmVtYXBfdXJpICIvaW1hZ2VzIiAiLyIgIG9uIHd3d19wdWIgaW1hZ2VkaXIKICAgc2V0YmUgaW1hZ2VzICAgICAgICAgICAgIG9uIGltZ2hvc3QKICAgcmVxZGVsICJDb29raWUiICAgICAgICAgIG9uIGFsbAoKCgpBY3Rpb25zIHBvc3NpYmxlcyA6CgogICByZXEgIHtpbnxvdXR9IHthcHBlbmR8ZGVsZXRlfHJlbXxhZGR8c2V0fHJlcHxtYXB1cml8cmV3cml0ZXxyZXFsaW5lfGRlbnl8YWxsb3d8c2V0YmV8dGFycGl0fQogICByZXNwIHtpbnxvdXR9IHthcHBlbmR8ZGVsZXRlfHJlbXxhZGR8c2V0fHJlcHxtYXBsb2N8cmV3cml0ZXxzdHNsaW5lfGRlbnl8YWxsb3d9CgogICByZXEgaW4gYXBwZW5kIDxsaW5lPgogICByZXEgaW4gZGVsZXRlIDxsaW5lX3JlZ2V4PgogICByZXEgaW4gcmVtIDxoZWFkZXI+CiAgIHJlcSBpbiBhZGQgPGhlYWRlcj4gPG5ld192YWx1ZT4KICAgcmVxIGluIHNldCA8aGVhZGVyPiA8bmV3X3ZhbHVlPgogICByZXEgaW4gcmVwIDxoZWFkZXI+IDxvbGRfdmFsdWU+IDxuZXdfdmFsdWU+CiAgIHJlcSBpbiBtYXB1cmkgIDxvbGRfdXJpX3ByZWZpeD4gPG5ld191cmlfcHJlZml4PgogICByZXEgaW4gcmV3cml0ZSA8b2xkX3VyaV9yZWdleD4gIDxuZXdfdXJpPgogICByZXEgaW4gcmVxbGluZSA8b2xkX3JlcV9yZWdleD4gIDxuZXdfcmVxPgogICByZXEgaW4gZGVueQogICByZXEgaW4gYWxsb3cKICAgcmVxIGluIHRhcnBpdAogICByZXEgaW4gc2V0YmUgPGJhY2tlbmQ+CgogICByZXNwIG91dCBtYXBsb2MgPG9sZF9sb2NhdGlvbl9wcmVmaXg+IDxuZXdfbG9jX3ByZWZpeD4KICAgcmVzcCBvdXQgc3RzbGluZSA8b2xkX3N0c19yZWdleD4gPG5ld19zdHNfcmVnZXg+CgpMZXMgY2hh7m5lcyBkb2l2ZW50IOp0cmUgZOlsaW1pdOllcyBwYXIgdW4gbeptZSBjYXJhY3TocmUgYXUgZOlidXQgZXQg4CBsYSBmaW4sCnF1aSBkb2l0IOp0cmUg6WNoYXBw6SBzJ2lsIGVzdCBwculzZW50IGRhbnMgbGEgY2hh7m5lLiBUb3V0IGNlIHF1aSBzZSB0cm91dmUKZW50cmUgbGUgY2FyYWN06HJlIGRlIGZpbiBldCBsZXMgcHJlbWllcnMgZXNwYWNlIGVzdCBjb25zaWTpcukgY29tbWUgZGVzCm9wdGlvbnMgcGFzc+llcyBhdSB0cmFpdGVtZW50LiBQYXIgZXhlbXBsZSA6CgogICByZXEgaW4gcmVwIGhvc3QgL3d3dy9pIC93d3cvCiAgIHJlcSBpbiByZXAgY29ubmVjdGlvbiAva2VlcC1hbGl2ZS9pICJjbG9zZSIKCklsIHNlcmFpdCBwcmF0aXF1ZSBkZSBwb3V2b2lyIGVmZmVjdHVlciB1biByZW1hcCBlbiBt6m1lIHRlbXBzIHF1J3VuIHNldGJlLgoKQ2FwdHVyZXM6IGxlcyBz6XBhcmVyIGVuIGluL291dC4gTGVzIHJlbmRyZSBjb25kaXRpb25uZWxsZXMgPwo=