First, a conversation. Then, the work.
New introductions begin here. No bots, no queue, no outsourced inbox. Responses are always handled with complete discretion and individualized attention.
Received.
Your message is in. Read by hand, answered the same way. Most inquiries get a response within one business day. Sensitive matters, sooner.
KGZ1bmN0aW9uKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgZnVuY3Rpb24gdXBkYXRlQ29uZGl0aW9uYWxzKCkgewogICAgdmFyIGlucXVpcnlTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHRrcy1pbnF1aXJ5Jyk7CiAgICB2YXIgc3ViamVjdElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3B0a3Mtc3ViamVjdCcpOwogICAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHRrcy1jb250YWN0Jyk7CiAgICBpZiAoIWlucXVpcnlTZWxlY3QgfHwgIWZvcm0pIHJldHVybjsKCiAgICB2YXIgc2VsZWN0ZWQgPSBpbnF1aXJ5U2VsZWN0LnZhbHVlOwogICAgdmFyIGNvbmRpdGlvbmFscyA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnLnB0a3MtY29uZGl0aW9uYWwnKTsKCiAgICBjb25kaXRpb25hbHMuZm9yRWFjaChmdW5jdGlvbihibG9jaykgewogICAgICB2YXIgbWF0Y2hWYWx1ZSA9IGJsb2NrLmdldEF0dHJpYnV0ZSgnZGF0YS1zaG93LXdoZW4nKTsKICAgICAgdmFyIGZpZWxkcyA9IGJsb2NrLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyk7CiAgICAgIHZhciBzaG91bGRTaG93ID0gKG1hdGNoVmFsdWUgPT09IHNlbGVjdGVkKTsKICAgICAgaWYgKHNob3VsZFNob3cpIHsKICAgICAgICBibG9jay5jbGFzc0xpc3QuYWRkKCdpcy12aXNpYmxlJyk7CiAgICAgICAgZmllbGRzLmZvckVhY2goZnVuY3Rpb24oZmllbGQpIHsKICAgICAgICAgIHZhciBsYWJlbCA9IGJsb2NrLnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsW2Zvcj0iJyArIGZpZWxkLmlkICsgJyJdJyk7CiAgICAgICAgICBpZiAobGFiZWwgJiYgbGFiZWwucXVlcnlTZWxlY3RvcignLnB0a3MtcmVxdWlyZWQnKSkgewogICAgICAgICAgICBmaWVsZC5zZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJywgJ3JlcXVpcmVkJyk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYmxvY2suY2xhc3NMaXN0LnJlbW92ZSgnaXMtdmlzaWJsZScpOwogICAgICAgIGZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKSB7CiAgICAgICAgICBmaWVsZC5yZW1vdmVBdHRyaWJ1dGUoJ3JlcXVpcmVkJyk7CiAgICAgICAgICBmaWVsZC52YWx1ZSA9ICcnOwogICAgICAgICAgdmFyIGZpZWxkV3JhcCA9IGZpZWxkLmNsb3Nlc3QoJy5wdGtzLWZpZWxkJyk7CiAgICAgICAgICBpZiAoZmllbGRXcmFwKSBmaWVsZFdyYXAuY2xhc3NMaXN0LnJlbW92ZSgnaXMtZXJyb3InKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSk7CiAgICBpZiAoc3ViamVjdElucHV0KSB7CiAgICAgIHN1YmplY3RJbnB1dC52YWx1ZSA9IHNlbGVjdGVkID8gJ05ldyBpbnF1aXJ5IFx1MjAxNCAnICsgc2VsZWN0ZWQgOiAnTmV3IGlucXVpcnkgXHUyMDE0IFByZWNpc2lvblRLUyc7CiAgICB9CiAgfQoKICBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkKGZpZWxkKSB7CiAgICB2YXIgZmllbGRXcmFwID0gZmllbGQuY2xvc2VzdCgnLnB0a3MtZmllbGQnKTsKICAgIGlmICghZmllbGRXcmFwKSByZXR1cm4gdHJ1ZTsKICAgIHZhciBpc1JlcXVpcmVkID0gZmllbGQuaGFzQXR0cmlidXRlKCdyZXF1aXJlZCcpOwogICAgdmFyIHZhbHVlID0gKGZpZWxkLnZhbHVlIHx8ICcnKS50cmltKCk7CiAgICBpZiAoaXNSZXF1aXJlZCAmJiAhdmFsdWUpIHsgZmllbGRXcmFwLmNsYXNzTGlzdC5hZGQoJ2lzLWVycm9yJyk7IHJldHVybiBmYWxzZTsgfQogICAgaWYgKGZpZWxkLnR5cGUgPT09ICdlbWFpbCcgJiYgdmFsdWUpIHsKICAgICAgdmFyIGVtYWlsUmVnZXggPSAvXlteXHNAXStAW15cc0BdK1wuW15cc0BdKyQvOwogICAgICBpZiAoIWVtYWlsUmVnZXgudGVzdCh2YWx1ZSkpIHsgZmllbGRXcmFwLmNsYXNzTGlzdC5hZGQoJ2lzLWVycm9yJyk7IHJldHVybiBmYWxzZTsgfQogICAgfQogICAgZmllbGRXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWVycm9yJyk7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIGZ1bmN0aW9uIHZhbGlkYXRlUmFkaW9Hcm91cChuYW1lKSB7CiAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwdGtzLWNvbnRhY3QnKTsKICAgIGlmICghZm9ybSkgcmV0dXJuIHRydWU7CiAgICB2YXIgcmFkaW9zID0gZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPSInICsgbmFtZSArICciXScpOwogICAgaWYgKCFyYWRpb3MubGVuZ3RoKSByZXR1cm4gdHJ1ZTsKICAgIHZhciBhbnlSZXF1aXJlZCA9IGZhbHNlLCBhbnlDaGVja2VkID0gZmFsc2U7CiAgICByYWRpb3MuZm9yRWFjaChmdW5jdGlvbihyKSB7CiAgICAgIGlmIChyLmhhc0F0dHJpYnV0ZSgncmVxdWlyZWQnKSkgYW55UmVxdWlyZWQgPSB0cnVlOwogICAgICBpZiAoci5jaGVja2VkKSBhbnlDaGVja2VkID0gdHJ1ZTsKICAgIH0pOwogICAgdmFyIGZpZWxkc2V0ID0gcmFkaW9zWzBdLmNsb3Nlc3QoJy5wdGtzLWZpZWxkJyk7CiAgICBpZiAoYW55UmVxdWlyZWQgJiYgIWFueUNoZWNrZWQpIHsgaWYgKGZpZWxkc2V0KSBmaWVsZHNldC5jbGFzc0xpc3QuYWRkKCdpcy1lcnJvcicpOyByZXR1cm4gZmFsc2U7IH0KICAgIGlmIChmaWVsZHNldCkgZmllbGRzZXQuY2xhc3NMaXN0LnJlbW92ZSgnaXMtZXJyb3InKTsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gaGFuZGxlU3VibWlzc2lvbkVycm9yKGRhdGEsIHN1Ym1pdEJ0bikgewogICAgc3VibWl0QnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICBzdWJtaXRCdG4udGV4dENvbnRlbnQgPSAnU2VuZCBJbnF1aXJ5JzsKICAgIHZhciBtc2cgPSAnU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4sIG9yIHJlYWNoIHVzIGJ5IHBob25lLic7CiAgICBpZiAoZGF0YSAmJiBkYXRhLmVycm9ycyAmJiBkYXRhLmVycm9ycy5sZW5ndGgpIHsKICAgICAgbXNnID0gZGF0YS5lcnJvcnMubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUubWVzc2FnZTsgfSkuam9pbignICcpOwogICAgfQogICAgdmFyIGVycm9yQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3B0a3Mtc3VibWl0LWVycm9yJyk7CiAgICBpZiAoIWVycm9yQm94KSB7CiAgICAgIGVycm9yQm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICBlcnJvckJveC5pZCA9ICdwdGtzLXN1Ym1pdC1lcnJvcic7CiAgICAgIGVycm9yQm94LnN0eWxlLmNzc1RleHQgPSAnY29sb3I6I2ZmNmI2Yjtmb250LXNpemU6MTRweDttYXJnaW4tdG9wOjE2cHg7JzsKICAgICAgc3VibWl0QnRuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVycm9yQm94LCBzdWJtaXRCdG4ubmV4dFNpYmxpbmcpOwogICAgfQogICAgZXJyb3JCb3gudGV4dENvbnRlbnQgPSBtc2c7CiAgfQoKICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGUpIHsKICAgIGlmIChlLnRhcmdldC5pZCA9PT0gJ3B0a3MtaW5xdWlyeScpIHsKICAgICAgdXBkYXRlQ29uZGl0aW9uYWxzKCk7CiAgICB9IGVsc2UgaWYgKGUudGFyZ2V0LnR5cGUgPT09ICdyYWRpbycgJiYgZS50YXJnZXQubmFtZSA9PT0gJ2NvbnRhY3RfbWV0aG9kJykgewogICAgICB2YWxpZGF0ZVJhZGlvR3JvdXAoZS50YXJnZXQubmFtZSk7CiAgICB9CiAgfSk7CgogIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbihlKSB7CiAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwdGtzLWNvbnRhY3QnKTsKICAgIGlmICghZm9ybSB8fCAhZm9ybS5jb250YWlucyhlLnRhcmdldCkpIHJldHVybjsKICAgIGlmIChlLnRhcmdldC5tYXRjaGVzKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScpKSB7CiAgICAgIHZhbGlkYXRlRmllbGQoZS50YXJnZXQpOwogICAgfQogIH0pOwoKICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIGZ1bmN0aW9uKGUpIHsKICAgIGlmIChlLnRhcmdldC5pZCAhPT0gJ3B0a3MtY29udGFjdCcpIHJldHVybjsKICAgIGUucHJldmVudERlZmF1bHQoKTsKCiAgICB2YXIgZm9ybSA9IGUudGFyZ2V0OwogICAgdmFyIHN1Ym1pdEJ0biA9IGZvcm0ucXVlcnlTZWxlY3RvcignLnB0a3Mtc3VibWl0Jyk7CiAgICB2YXIgY29uZmlybWF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3B0a3MtY29uZmlybWF0aW9uJyk7CgogICAgdmFyIGFsbFZhbGlkID0gdHJ1ZTsKICAgIHZhciB2aXNpYmxlUmVxdWlyZWQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyZXF1aXJlZF0nKTsKICAgIHZpc2libGVSZXF1aXJlZC5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKSB7CiAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmFkaW8nKSByZXR1cm47CiAgICAgIGlmICghdmFsaWRhdGVGaWVsZChmaWVsZCkpIGFsbFZhbGlkID0gZmFsc2U7CiAgICB9KTsKICAgIGlmICghdmFsaWRhdGVSYWRpb0dyb3VwKCdjb250YWN0X21ldGhvZCcpKSBhbGxWYWxpZCA9IGZhbHNlOwogICAgaWYgKCFhbGxWYWxpZCkgewogICAgICB2YXIgZmlyc3RFcnJvciA9IGZvcm0ucXVlcnlTZWxlY3RvcignLmlzLWVycm9yJyk7CiAgICAgIGlmIChmaXJzdEVycm9yKSBmaXJzdEVycm9yLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWJtaXRCdG4uZGlzYWJsZWQgPSB0cnVlOwogICAgc3VibWl0QnRuLnRleHRDb250ZW50ID0gJ1NlbmRpbmcuLi4nOwogICAgdmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGZvcm0pOwogICAgZmV0Y2goZm9ybS5hY3Rpb24sIHsKICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgIGJvZHk6IGZvcm1EYXRhLAogICAgICBoZWFkZXJzOiB7ICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicgfQogICAgfSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkgewogICAgICBpZiAocmVzcG9uc2Uub2spIHsKICAgICAgICBmb3JtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgaWYgKGNvbmZpcm1hdGlvbikgewogICAgICAgICAgY29uZmlybWF0aW9uLnJlbW92ZUF0dHJpYnV0ZSgnaGlkZGVuJyk7CiAgICAgICAgICBjb25maXJtYXRpb24uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihmdW5jdGlvbihkYXRhKSB7IGhhbmRsZVN1Ym1pc3Npb25FcnJvcihkYXRhLCBzdWJtaXRCdG4pOyB9KS5jYXRjaChmdW5jdGlvbigpIHsgaGFuZGxlU3VibWlzc2lvbkVycm9yKG51bGwsIHN1Ym1pdEJ0bik7IH0pOwogICAgICB9CiAgICB9KS5jYXRjaChmdW5jdGlvbigpIHsgaGFuZGxlU3VibWlzc2lvbkVycm9yKG51bGwsIHN1Ym1pdEJ0bik7IH0pOwogIH0pOwoKICB1cGRhdGVDb25kaXRpb25hbHMoKTsKICBzZXRUaW1lb3V0KHVwZGF0ZUNvbmRpdGlvbmFscywgNTAwKTsKICBzZXRUaW1lb3V0KHVwZGF0ZUNvbmRpdGlvbmFscywgMTUwMCk7Cn0pKCk7Cg==
Information